sterraes.cpp 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. #include "sterraes.h"
  2. #include <iostream>
  3. #include <memory>
  4. #include <string.h>
  5. sterraes::sterraes() {
  6. mpPacker = new CANPacker("./ADCC_CH.dbc");
  7. SignalPackValue sv;
  8. sv.name = "ADS_1_RollgCntr1";sv.value = 0;mvectorADSEPS1.push_back(sv);
  9. sv.name = "ADS_1_Resd1";sv.value = 0;mvectorADSEPS1.push_back(sv);
  10. sv.name = "ADS_1_SteerAgReq";sv.value = 0;mvectorADSEPS1.push_back(sv);
  11. sv.name = "ADS_1_SteerAgVld";sv.value = 0;mvectorADSEPS1.push_back(sv);
  12. sv.name = "ADS_1_SteerPilotAgEna";sv.value = 0;mvectorADSEPS1.push_back(sv);
  13. sv.name = "ADS_1_RollgCntr2";sv.value = 0;mvectorADSEPS1.push_back(sv);
  14. sv.name = "ADS_1_Resd2";sv.value = 0;mvectorADSEPS1.push_back(sv);
  15. sv.name = "ADS_1_SteerTqEna";sv.value = 0;mvectorADSEPS1.push_back(sv);
  16. sv.name = "ADS_1_LdwWarningCmd";sv.value = 0;mvectorADSEPS1.push_back(sv);
  17. sv.name = "ADS_1_LdwWarningCmdVld";sv.value = 0;mvectorADSEPS1.push_back(sv);
  18. sv.name = "ADS_1_SteerMaxTqReq";sv.value = 0;mvectorADSEPS1.push_back(sv);
  19. sv.name = "ADS_1_SteerMinTqReq";sv.value = 0;mvectorADSEPS1.push_back(sv);
  20. sv.name = "ADS_1_ADSHealthSts";sv.value = 0;mvectorADSEPS1.push_back(sv);
  21. sv.name = "CutOutFreshvalues_2CB_S";sv.value = 0;mvectorADSEPS1.push_back(sv);
  22. sv.name = "CutOutMAC_2CB_S";sv.value = 0;mvectorADSEPS1.push_back(sv);
  23. sv.name = "ADS_3_RollgCntr1";sv.value = 0;mvectorADSEPS3.push_back(sv);
  24. sv.name = "ADS_3_Resd1";sv.value = 0;mvectorADSEPS3.push_back(sv);
  25. sv.name = "ADS_3_SteerParkAgReq";sv.value = 0;mvectorADSEPS3.push_back(sv);
  26. sv.name = "ADS_3_SteerParkAgVld";sv.value = 0;mvectorADSEPS3.push_back(sv);
  27. sv.name = "ADS_3_SteerParkAgEna";sv.value = 0;mvectorADSEPS3.push_back(sv);
  28. sv.name = "ADS_3_RollgCntr2";sv.value = 0;mvectorADSEPS3.push_back(sv);
  29. sv.name = "ADS_3_Resd2";sv.value = 0;mvectorADSEPS3.push_back(sv);
  30. sv.name = "ADS_3_ParkFcnMode";sv.value = 0;mvectorADSEPS3.push_back(sv);
  31. sv.name = "ADS_3_ADSParkHealthSts";sv.value = 0;mvectorADSEPS3.push_back(sv);
  32. sv.name = "ADS_1_RollgCntr1";sv.value = 0;mvectorADSONEBOX1.push_back(sv);
  33. sv.name = "ADS_1_Resd1";sv.value = 0;mvectorADSONEBOX1.push_back(sv);
  34. sv.name = "ADS_1_PilotCtrlRepSta";sv.value = 0;mvectorADSONEBOX1.push_back(sv);
  35. sv.name = "ADS_1_PilotParkCtrlType";sv.value = 0;mvectorADSONEBOX1.push_back(sv);
  36. sv.name = "ADS_1_PilotParkBrkDecTar";sv.value = 0;mvectorADSONEBOX1.push_back(sv);
  37. sv.name = "ADS_1_PilotParkCtrlRepMod";sv.value = 0;mvectorADSONEBOX1.push_back(sv);
  38. sv.name = "ADS_1_PilotParkBrkDecTarVld";sv.value = 0;mvectorADSONEBOX1.push_back(sv);
  39. sv.name = "ADS_1_PilotParkBrkDecTarEnable";sv.value = 0;mvectorADSONEBOX1.push_back(sv);
  40. sv.name = "ADS_1_PilotParkDec2StpReq";sv.value = 0;mvectorADSONEBOX1.push_back(sv);
  41. sv.name = "ADS_1_PilotParkDriOffReq";sv.value = 0;mvectorADSONEBOX1.push_back(sv);
  42. sv.name = "ADS_1_StopDist";sv.value = 0;mvectorADSONEBOX1.push_back(sv);
  43. sv.name = "ADS_1_ParkCtrlMod";sv.value = 0;mvectorADSONEBOX1.push_back(sv);
  44. sv.name = "ADS_1_PreFillReq";sv.value = 0;mvectorADSONEBOX1.push_back(sv);
  45. sv.name = "ADS_EPBCtrlReqValid";sv.value = 0;mvectorADSONEBOX1.push_back(sv);
  46. sv.name = "ADS_EPBCtrlReq";sv.value = 0;mvectorADSONEBOX1.push_back(sv);
  47. sv.name = "ADS_1_RollgCntr1";sv.value = 0;mvectorADSVCU1.push_back(sv);
  48. sv.name = "ADS_1_Resd1";sv.value = 0;mvectorADSVCU1.push_back(sv);
  49. sv.name = "ADS_1_DrvTarTq";sv.value = 0;mvectorADSVCU1.push_back(sv);
  50. sv.name = "ADS_1_DrvTarTqVld";sv.value = 0;mvectorADSVCU1.push_back(sv);
  51. sv.name = "ADS_1_DrvCtrlReq";sv.value = 0;mvectorADSVCU1.push_back(sv);
  52. sv.name = "ADS_1_CtrlReqMod";sv.value = 0;mvectorADSVCU1.push_back(sv);
  53. sv.name = "ADS_1_DrvTarTqEnable";sv.value = 0;mvectorADSVCU1.push_back(sv);
  54. sv.name = "ADS_1_AMAPRequest";sv.value = 0;mvectorADSVCU1.push_back(sv);
  55. sv.name = "ADS_1_AMAPRequestVld";sv.value = 0;mvectorADSVCU1.push_back(sv);
  56. sv.name = "ADS_1_ADCCAvl";sv.value = 0;mvectorADSVCU1.push_back(sv);
  57. sv.name = "ADS_1_AMAPTqLimit";sv.value = 0;mvectorADSVCU1.push_back(sv);
  58. sv.name = "ADS_1_AMAPTqLimitVld";sv.value = 0;mvectorADSVCU1.push_back(sv);
  59. sv.name = "ADS_1_RollgCntr2";sv.value = 0;mvectorADSVCU1.push_back(sv);
  60. sv.name = "ADS_1_Resd2";sv.value = 0;mvectorADSVCU1.push_back(sv);
  61. sv.name = "ADS_1_TarGearReq";sv.value = 0;mvectorADSVCU1.push_back(sv);
  62. sv.name = "ADS_1_TarGearReqVld";sv.value = 0;mvectorADSVCU1.push_back(sv);
  63. sv.name = "ADS_1_GearCtrlEnable";sv.value = 0;mvectorADSVCU1.push_back(sv);
  64. sv.name = "ADS_1_RpaPTReadyReq";sv.value = 0;mvectorADSVCU1.push_back(sv);
  65. }
  66. void sterraes::setsignal(std::vector<SignalPackValue> * pvectorspv,std::string strsigname,double value){
  67. int size = static_cast<int>(pvectorspv->size());
  68. int i;
  69. for(i=0;i<size;i++){
  70. if(pvectorspv->at(i).name == strsigname){
  71. pvectorspv->at(i).value = value;
  72. return ;
  73. }
  74. }
  75. std::cout<<" signal : "<<strsigname.data()<<" not found. please check signal."<<std::endl;
  76. return ;
  77. }
  78. void sterraes::set_EPS1_signal(std::string strsigname,double value){
  79. setsignal(&mvectorADSEPS1,strsigname,value);
  80. }
  81. void sterraes::set_EPS3_signal(std::string strsigname,double value){
  82. setsignal(&mvectorADSEPS3,strsigname,value);
  83. }
  84. void sterraes::set_ONEBOX1_signal(std::string strsigname,double value){
  85. setsignal(&mvectorADSONEBOX1,strsigname,value);
  86. }
  87. void sterraes::set_VCU1_signal(std::string strsigname,double value){
  88. setsignal(&mvectorADSVCU1,strsigname,value);
  89. }
  90. unsigned char CRCCheck_SAEJ1850(unsigned char msg[], int len, unsigned char idleCrc)
  91. {
  92. int i = 0;
  93. int j = 0;
  94. unsigned char crc8;
  95. unsigned char poly = 0x1D;
  96. crc8 = idleCrc;
  97. for (i = 0; i<len; i++) {
  98. crc8 ^= msg[i];
  99. for (j = 0; j<8; j++) {
  100. if (crc8 & 0x80) {
  101. crc8 = (crc8 << 1) ^ poly;
  102. }
  103. else {
  104. crc8 <<= 1;
  105. }
  106. }
  107. }
  108. // crc8 ^= 0xFF;
  109. crc8 ^= 0x00;//crc8 ^= 0xFF;
  110. return crc8;
  111. }
  112. void sterraes::fillcrc(unsigned short dataid,unsigned char * pdata){
  113. unsigned char xdata[9];
  114. memcpy(xdata,&dataid,2);
  115. memcpy(xdata+2,pdata+1,7);
  116. unsigned char xcrc = CRCCheck_SAEJ1850(xdata,9,0x0);
  117. pdata[0] = xcrc;
  118. }
  119. void sterraes::GetEPS1Data(unsigned char * pdata){
  120. std::vector<uint8_t> xpack = mpPacker->pack(0x195,mvectorADSEPS1);
  121. int i;
  122. for(i=0;i<24;i++)pdata[i] = xpack[i];
  123. fillcrc(0x0004,pdata);
  124. fillcrc(0x0005,pdata+8);
  125. }
  126. void sterraes::GetEPS3Data(unsigned char * pdata){
  127. std::vector<uint8_t> xpack = mpPacker->pack(0x1BC,mvectorADSEPS3);
  128. int i;
  129. for(i=0;i<24;i++)pdata[i] = xpack[i];
  130. fillcrc(0x0006,pdata);
  131. fillcrc(0x0007,pdata+8);
  132. }
  133. void sterraes::GetONEBOX1Data(unsigned char * pdata){
  134. std::vector<uint8_t> xpack = mpPacker->pack(0x159,mvectorADSONEBOX1);
  135. int i;
  136. for(i=0;i<24;i++)pdata[i] = xpack[i];
  137. fillcrc(0x0008,pdata);
  138. }
  139. void sterraes::GetVCU1Data(unsigned char * pdata){
  140. std::vector<uint8_t> xpack = mpPacker->pack(0x167,mvectorADSEPS3);
  141. int i;
  142. for(i=0;i<24;i++)pdata[i] = xpack[i];
  143. fillcrc(0x000B,pdata);
  144. fillcrc(0x000C,pdata+8);
  145. }