canrecv_consumer.h 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. #ifndef CANRECV_CONSUMER_H
  2. #define CANRECV_CONSUMER_H
  3. #include <QObject>
  4. #include <QTimer>
  5. #include <QDateTime>
  6. #include <QThread>
  7. #include "modulecomm.h"
  8. #include "radarobjectarray.pb.h"
  9. #include "can_producer_consumer.h"
  10. #include "decode_cfg.h"
  11. #include "iv_msgunit.h"
  12. #define RADAR_OBJ_MAX_NUM 128
  13. class CANRecv_Consumer : public QThread
  14. {
  15. Q_OBJECT
  16. public:
  17. CANRecv_Consumer(CAN_Producer_Consumer *pBuf);
  18. ~CANRecv_Consumer();
  19. void Clear_CAN_PrivateTempVariable(void);
  20. protected:
  21. void run();
  22. uint32_t Trans_From_CANRaw(const iv::can::canraw &xraw); //only for standard data frame, return can id
  23. void Pack_Info_To_SHM_ch0(uint32_t can_id);
  24. void Pack_Info_To_SHM_ch1(uint32_t can_id);
  25. void Pack_Info_To_SHM_ch2(uint32_t can_id);
  26. void Pack_Info_To_SHM_ch3(uint32_t can_id);
  27. void Pack_Info_To_SHM_ch4(uint32_t can_id);
  28. void Pack_Info_To_SHM_ch5(uint32_t can_id);
  29. void Pack_Info_To_SHM_ch6(uint32_t can_id);
  30. void Pack_Info_To_SHM_ch7(uint32_t can_id);
  31. //ro trans phy 3
  32. double Trans_DVA_RMS_Ro_To_Phy(uint8_t data);
  33. double Trans_Ori_RMS_Ro_To_Phy(uint8_t data);
  34. double Trans_ProbOfExist_Ro_To_Phy(uint8_t data);
  35. //rotation and translation
  36. void Rotate_Translate(double &x,double &y,double theta,double offset_x,double offset_y); //RFU,deg
  37. signals:
  38. void RadarObjectArray_Ready(void);
  39. private slots:
  40. void RadarObjectArray_Ready_Slot(void);
  41. private:
  42. CAN_Producer_Consumer *pBuffer;
  43. uint8_t radarType = 0; //0 ARS408-21xx 1 ARS408-21sc3 2 SRR308
  44. uint32_t CAN_ID = 0x000u;
  45. uint8_t CAN_DLC = 0;
  46. uint8_t CAN_data[8] = {0};
  47. ars408_can_database_ch0_rx_t ars408_can_database_ch0_rx;
  48. ars408_can_database_ch1_rx_t ars408_can_database_ch1_rx;
  49. ars408_can_database_ch2_rx_t ars408_can_database_ch2_rx;
  50. ars408_can_database_ch3_rx_t ars408_can_database_ch3_rx;
  51. ars408_can_database_ch4_rx_t ars408_can_database_ch4_rx;
  52. ars408_can_database_ch5_rx_t ars408_can_database_ch5_rx;
  53. ars408_can_database_ch6_rx_t ars408_can_database_ch6_rx;
  54. ars408_can_database_ch7_rx_t ars408_can_database_ch7_rx;
  55. iv::radar::radarobjectarray xradarObjArray;
  56. QVector<iv::radar::radarobject> vradarObj;
  57. QVector<bool> radarObjFreshFlag;
  58. bool persistent_Error = false; //notice if multi thread, these param need a mutex lock
  59. bool interference_Error = false; //
  60. bool temperature_Error = false; //
  61. bool temporary_Error = false; //
  62. bool voltage_Error = false; //
  63. bool speed_Loss = false; //
  64. bool yaw_Rate_Loss = false; //
  65. std::string radar_Version = "4.30.1"; //
  66. iv::radar::radarobjectarray radarObjArray_Send;
  67. QMutex radarObjArraySend_Lock;
  68. };
  69. #endif // CANRECV_CONSUMER_H