瀏覽代碼

[Improve][DM30][DW30][EV Communication]: Improve CCS EV board firmware version parsing method.

2020.06.16 / TC Hsu

Actions: Since the firmware version message of CCS EV board will not include the "." in the message data, implement the auto add "." feature, it will add "." between every two char of the CCS firmware version string.

Image version    : N/A
Image checksum   : N/A

Hardware PWB P/N : N/A
Hardware Version : N/A

Files:

	modified:   EVSE/Projects/DM30/Apps/Module_EvComm.c
	modified:   EVSE/Projects/DW30/Apps/Module_EvComm.c
TC_Hsu 4 年之前
父節點
當前提交
34fc342bb1
共有 2 個文件被更改,包括 42 次插入10 次删除
  1. 21 5
      EVSE/Projects/DM30/Apps/Module_EvComm.c
  2. 21 5
      EVSE/Projects/DW30/Apps/Module_EvComm.c

+ 21 - 5
EVSE/Projects/DM30/Apps/Module_EvComm.c

@@ -2712,15 +2712,20 @@ void CANReceiver()
                         break;
                     case ACK_EV_FW_VERSION:
                     {
+                        byte ver[16];
+
+                        memset(ver, 0, sizeof(ver));
                         if (_chargingData[targetGun]->Type == _Type_Chademo)
                         {
-                            memcpy(ShmCHAdeMOData->evse[_chargingData[targetGun]->type_index].version, frame.data, frame.can_dlc);
+                            memcpy(ver, frame.data, frame.can_dlc);
+                            memcpy(ShmCHAdeMOData->evse[_chargingData[targetGun]->type_index].version, ver, ARRAY_SIZE(ver));
                             ShmCHAdeMOData->evse[_chargingData[targetGun]->type_index].SelfTest_Comp = PASS;
                             PRINTF_FUNC("chademo ver. : %s\n", ShmCHAdeMOData->evse[_chargingData[targetGun]->type_index].version);
                         }
                         else if (_chargingData[targetGun]->Type == _Type_GB)
                         {
-                            memcpy(ShmGBTData->evse[_chargingData[targetGun]->type_index].version, frame.data, ARRAY_SIZE(frame.data));
+                            memcpy(ver, frame.data, frame.can_dlc);
+                            memcpy(ShmGBTData->evse[_chargingData[targetGun]->type_index].version, ver, ARRAY_SIZE(ver));
                             ShmGBTData->evse[_chargingData[targetGun]->type_index].SelfTest_Comp = PASS;
                             PRINTF_FUNC("gbt ver. : %s\n", ShmGBTData->evse[_chargingData[targetGun]->type_index].version);
                         }
@@ -2728,7 +2733,18 @@ void CANReceiver()
                         {
                             if (ShmCcsData->CommProtocol == 0x01)
                             {
-                                memcpy(&ShmCcsData->V2GMessage_DIN70121[_chargingData[targetGun]->type_index].version, frame.data, frame.can_dlc);
+                                for (byte _vCount = 0, _vPoint = 0; _vCount < frame.can_dlc; _vCount++)
+                                {
+                                    if (_vCount % 2 == 0 && _vCount != 0)
+                                    {
+                                        ver[_vCount + _vPoint] = 0x2E;
+                                        _vPoint++;
+                                    }
+
+                                    ver[_vCount + _vPoint] = frame.data[_vCount];
+                                }
+
+                                memcpy(&ShmCcsData->V2GMessage_DIN70121[_chargingData[targetGun]->type_index].version, ver, ARRAY_SIZE(ver));
                                 ShmCcsData->V2GMessage_DIN70121[_chargingData[targetGun]->type_index].SelfTest_Comp = PASS;
                                 PRINTF_FUNC("CCS FW = %s \n", ShmCcsData->V2GMessage_DIN70121[_chargingData[targetGun]->type_index].version);
                             }
@@ -2737,12 +2753,12 @@ void CANReceiver()
                         if (targetGun == 0)
                         {
                             memset(ShmSysConfigAndInfo->SysInfo.Connector1FwRev, 0, sizeof(ShmSysConfigAndInfo->SysInfo.Connector1FwRev));
-                            memcpy(ShmSysConfigAndInfo->SysInfo.Connector1FwRev, frame.data, frame.can_dlc);
+                            memcpy(ShmSysConfigAndInfo->SysInfo.Connector1FwRev, ver, ARRAY_SIZE(ver));
                         }
                         else
                         {
                             memset(ShmSysConfigAndInfo->SysInfo.Connector2FwRev, 0, sizeof(ShmSysConfigAndInfo->SysInfo.Connector2FwRev));
-                            memcpy(ShmSysConfigAndInfo->SysInfo.Connector2FwRev, frame.data, frame.can_dlc);
+                            memcpy(ShmSysConfigAndInfo->SysInfo.Connector2FwRev, ver, ARRAY_SIZE(ver));
                         }
                     }
                         break;

+ 21 - 5
EVSE/Projects/DW30/Apps/Module_EvComm.c

@@ -2712,15 +2712,20 @@ void CANReceiver()
                         break;
                     case ACK_EV_FW_VERSION:
                     {
+                        byte ver[16];
+
+                        memset(ver, 0, sizeof(ver));
                         if (_chargingData[targetGun]->Type == _Type_Chademo)
                         {
-                            memcpy(ShmCHAdeMOData->evse[_chargingData[targetGun]->type_index].version, frame.data, frame.can_dlc);
+                            memcpy(ver, frame.data, frame.can_dlc);
+                            memcpy(ShmCHAdeMOData->evse[_chargingData[targetGun]->type_index].version, ver, ARRAY_SIZE(ver));
                             ShmCHAdeMOData->evse[_chargingData[targetGun]->type_index].SelfTest_Comp = PASS;
                             PRINTF_FUNC("chademo ver. : %s\n", ShmCHAdeMOData->evse[_chargingData[targetGun]->type_index].version);
                         }
                         else if (_chargingData[targetGun]->Type == _Type_GB)
                         {
-                            memcpy(ShmGBTData->evse[_chargingData[targetGun]->type_index].version, frame.data, ARRAY_SIZE(frame.data));
+                            memcpy(ver, frame.data, frame.can_dlc);
+                            memcpy(ShmGBTData->evse[_chargingData[targetGun]->type_index].version, ver, ARRAY_SIZE(ver));
                             ShmGBTData->evse[_chargingData[targetGun]->type_index].SelfTest_Comp = PASS;
                             PRINTF_FUNC("gbt ver. : %s\n", ShmGBTData->evse[_chargingData[targetGun]->type_index].version);
                         }
@@ -2728,7 +2733,18 @@ void CANReceiver()
                         {
                             if (ShmCcsData->CommProtocol == 0x01)
                             {
-                                memcpy(&ShmCcsData->V2GMessage_DIN70121[_chargingData[targetGun]->type_index].version, frame.data, frame.can_dlc);
+                                for (byte _vCount = 0, _vPoint = 0; _vCount < frame.can_dlc; _vCount++)
+                                {
+                                    if (_vCount % 2 == 0 && _vCount != 0)
+                                    {
+                                        ver[_vCount + _vPoint] = 0x2E;
+                                        _vPoint++;
+                                    }
+
+                                    ver[_vCount + _vPoint] = frame.data[_vCount];
+                                }
+
+                                memcpy(&ShmCcsData->V2GMessage_DIN70121[_chargingData[targetGun]->type_index].version, ver, ARRAY_SIZE(ver));
                                 ShmCcsData->V2GMessage_DIN70121[_chargingData[targetGun]->type_index].SelfTest_Comp = PASS;
                                 PRINTF_FUNC("CCS FW = %s \n", ShmCcsData->V2GMessage_DIN70121[_chargingData[targetGun]->type_index].version);
                             }
@@ -2737,12 +2753,12 @@ void CANReceiver()
                         if (targetGun == 0)
                         {
                             memset(ShmSysConfigAndInfo->SysInfo.Connector1FwRev, 0, sizeof(ShmSysConfigAndInfo->SysInfo.Connector1FwRev));
-                            memcpy(ShmSysConfigAndInfo->SysInfo.Connector1FwRev, frame.data, frame.can_dlc);
+                            memcpy(ShmSysConfigAndInfo->SysInfo.Connector1FwRev, ver, ARRAY_SIZE(ver));
                         }
                         else
                         {
                             memset(ShmSysConfigAndInfo->SysInfo.Connector2FwRev, 0, sizeof(ShmSysConfigAndInfo->SysInfo.Connector2FwRev));
-                            memcpy(ShmSysConfigAndInfo->SysInfo.Connector2FwRev, frame.data, frame.can_dlc);
+                            memcpy(ShmSysConfigAndInfo->SysInfo.Connector2FwRev, ver, ARRAY_SIZE(ver));
                         }
                     }
                         break;