|
@@ -334,7 +334,7 @@ int ParsingCmd(char *inputString, char *outputString)
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- if(inputString[i] == ' ' || inputString[i] == '\0' || inputString[i] == '\r' || inputString[i] == '\n' || len >= 32)
|
|
|
+ if(inputString[i] == ' ' || inputString[i] == '\0' || inputString[i] == '\r' || inputString[i] == '\n' || len >= MAX_SUB_CMD_LENGTH)
|
|
|
{
|
|
|
done = true;
|
|
|
break;
|
|
@@ -471,8 +471,8 @@ int GetCommandSring(char *outputCmdString)
|
|
|
{
|
|
|
cmdLen = ParsingCmd(&word[start], &outputCmdString[totalLen]);
|
|
|
|
|
|
- char newCmd[32];
|
|
|
- memset(newCmd, 0x00, 32);
|
|
|
+ char newCmd[MAX_SUB_CMD_LENGTH];
|
|
|
+ memset(newCmd, 0x00, MAX_SUB_CMD_LENGTH);
|
|
|
memcpy(newCmd, &outputCmdString[totalLen], cmdLen);
|
|
|
|
|
|
cnt = cmdLen > 0 ? cnt + 1 : cnt;
|
|
@@ -568,7 +568,7 @@ void RunStatusProc(char *v1, char *v2)
|
|
|
}
|
|
|
|
|
|
int _index = atoi(v1);
|
|
|
- if (_index <= 1)
|
|
|
+ if (_index <= 3)
|
|
|
{
|
|
|
if (!FindChargingInfoData(_index, &_chargingData[0]))
|
|
|
{
|
|
@@ -717,7 +717,7 @@ void ShowFwVer(void)
|
|
|
printf("%c", ShmSysConfigAndInfo->SysInfo.CsuKernelFwRev[i]);
|
|
|
}
|
|
|
}
|
|
|
- printf("\r\n Csu Root Fs: %s", ShmSysConfigAndInfo->SysInfo.CsuRootFsFwRev);
|
|
|
+ printf("\r\n Csu Root Fs: %s [%s]", ShmSysConfigAndInfo->SysInfo.CsuRootFsFwRev, ShmChargerInfo->SysMisc.SubVersion);
|
|
|
printf("\r\n Csu Primary: %s", ShmSysConfigAndInfo->SysInfo.CsuPrimFwRev);
|
|
|
printf("\r\n Fan Module: %s", ShmSysConfigAndInfo->SysInfo.FanModuleFwRev);
|
|
|
printf("\r\n Relay1 Module: %s", ShmSysConfigAndInfo->SysInfo.RelayModuleFwRev);
|
|
@@ -909,6 +909,7 @@ void GetSystemInfo(void)
|
|
|
printf (" -ModelName: [%s], SerialNumber: [%s]\r\n",
|
|
|
(char *)&ShmSysConfigAndInfo->SysConfig.ModelName,
|
|
|
(char *)&ShmSysConfigAndInfo->SysConfig.SerialNumber);
|
|
|
+ printf (" -CSURootFs: %s [%s]\r\n", ShmSysConfigAndInfo->SysInfo.CsuRootFsFwRev, ShmChargerInfo->SysMisc.SubVersion);
|
|
|
}
|
|
|
|
|
|
bool SetModelName(char *modelName);
|
|
@@ -2397,9 +2398,11 @@ void ConnectionInfo(void)
|
|
|
|
|
|
void GunEnableInfo(int gunIndex)
|
|
|
{
|
|
|
- printf(" Gun %d Index: %2X, Status = %2d , %7s, PowerConsumption: %.4f\r\n", gunIndex + 1, _chargingData[gunIndex]->Index, _chargingData[gunIndex]->SystemStatus,
|
|
|
+ printf(" Gun %d Index: %2X, Status = %2d , %7s, MeterValue: %10.4f, Local: : %10.4f, Gun: : %10.4f\r\n", gunIndex + 1, _chargingData[gunIndex]->Index, _chargingData[gunIndex]->SystemStatus,
|
|
|
ShmSysConfigAndInfo->SysInfo.ConnectorInfo[gunIndex].Enable ? "Enable" : "Disable",
|
|
|
- _chargingData[gunIndex]->PowerConsumption);
|
|
|
+ _chargingData[gunIndex]->PowerConsumption,
|
|
|
+ ShmChargerInfo->MeterValue[gunIndex].LocalConsumption,
|
|
|
+ ShmChargerInfo->MeterValue[gunIndex].GunConsumption);
|
|
|
}
|
|
|
|
|
|
int FindDispenserIpAddress(int dispenser)
|
|
@@ -3623,15 +3626,18 @@ void ShowWebInfo(char *inputCmd, unsigned int opt)
|
|
|
printf("\r\n");
|
|
|
}
|
|
|
|
|
|
-// Gun 1 ( CCS ) Soc: XXX %, Energy: XXXXX.X kWh, IdTag [XXXXXXXXXXXXXXXX] Transaction [0]
|
|
|
-// Gun 1 ( CCS ) IdTag: XXXXXXXXXXXXXXXX, Soc: XXX %, Energy: XXXX.X kWh
|
|
|
-// (XX) (X) Target: XXXX V, XXXX A, Cap: XXXX A, XXXX kW
|
|
|
-// Output: XXXX V, XXXX A, Limit: XXXX A, XXXX kW
|
|
|
+// Gun 1 ( CCS ) Soc: XXX %, Energy: XXXXXXX.XXX kWh, IdTag: [XXXXXXXXXX]
|
|
|
+// (XX) (X) Target: XXXX V, XXXX A, Cap: XXXX A, XXXX kW, TxId: [XXXXXXXXXX]
|
|
|
+// PSU: XXXX V, XXXX A, Limit: XXXX A, XXXX kW, Local: XXXXXXX.XXX kWh
|
|
|
+// Start: [0000-00-00 00:00:00] PSU: XXXX V, XXXX A, Limit: XXXX A, XXXX kW, Local: XXXXXXX.XXX kWh
|
|
|
+// Gun: XXXX V, XXXX A, Remote: XXXXXXX.XXX kWh, Meter: XXXXXXX.XXX kWh
|
|
|
+// Stop: [0000-00-00 00:00:00] Gun: XXXX V, XXXX A, Remote: XXXXXXX.XXX kWh, Meter: XXXXXXX.XXX kWh
|
|
|
void ShowGunInfo(int gun)
|
|
|
{
|
|
|
char *str_gun_type[] = {"CHAdeMO", " CCS ", " GBT "};
|
|
|
|
|
|
- printf(" Gun %d (%s) Soc: %3d %s, Energy: %7.1f kWh, IdTag [%16s] Transaction [%d], TotalCost: %.2f\r\n",
|
|
|
+#if 0
|
|
|
+ printf(" Gun %d (%s) Soc: %3d %s, Energy: %10.3f kWh, IdTag [%20s] Transaction [%d], TotalCost: %.2f\r\n",
|
|
|
gun + 1,
|
|
|
ShmSysConfigAndInfo->SysInfo.ConnectorInfo[gun].Enable ? str_gun_type[_chargingData[gun]->Type] : "Disable",
|
|
|
_chargingData[gun]->EvBatterySoc, "%",
|
|
@@ -3639,24 +3645,63 @@ void ShowGunInfo(int gun)
|
|
|
_chargingData[gun]->StartUserId,
|
|
|
ShmChargerInfo->UserTransaction[gun].TransactionId,
|
|
|
ShmSysConfigAndInfo->SysInfo.ConnectorInfo[gun].TotalCost);
|
|
|
- //printf(" Gun %d (%s) IdTag [%16s] Soc: %3d %s, Energy: %4.1f kWh\r\n",
|
|
|
- // i + 1,
|
|
|
- // ShmSysConfigAndInfo->SysInfo.ConnectorInfo[i].Enable ? str_gun_type[_chargingData[i]->Type] : "Disable",
|
|
|
- // _chargingData[i]->StartUserId,
|
|
|
- // _chargingData[i]->EvBatterySoc, "%",
|
|
|
- // _chargingData[i]->PresentChargedEnergy);
|
|
|
- printf(" (%2d) (%s) Target: %4d V, %4d A, Cap: %4d A, %4d kW\r\n",
|
|
|
+#endif
|
|
|
+ //************************************************************************************************
|
|
|
+ printf(" Gun %d (%s) Soc: %3d %s, Energy: %11.3f kWh",
|
|
|
+ gun + 1,
|
|
|
+ ShmSysConfigAndInfo->SysInfo.ConnectorInfo[gun].Enable ? str_gun_type[_chargingData[gun]->Type] : "Disable",
|
|
|
+ _chargingData[gun]->EvBatterySoc, "%",
|
|
|
+ _chargingData[gun]->PresentChargedEnergy);
|
|
|
+ if(strlen((char *)_chargingData[gun]->StartUserId) > 0)
|
|
|
+ {
|
|
|
+ printf(", IdTag: [%s]", _chargingData[gun]->StartUserId);
|
|
|
+ }
|
|
|
+ printf("\r\n");
|
|
|
+ //************************************************************************************************
|
|
|
+ printf(" (%2d) (%s) Target: %4d V, %4d A, Cap: %4d A, %4d kW",
|
|
|
_chargingData[gun]->SystemStatus,
|
|
|
_chargingData[gun]->ConnectorPlugIn ? "O" : "X",
|
|
|
(int)_chargingData[gun]->EvBatterytargetVoltage,
|
|
|
(int)_chargingData[gun]->EvBatterytargetCurrent,
|
|
|
(int)(_chargingData[gun]->AvailableChargingCurrent / 10),
|
|
|
(int)(_chargingData[gun]->AvailableChargingPower / 10));
|
|
|
- printf(" Output: %4d V, %4d A, Limit: %4d A, %4d kW\r\n",
|
|
|
+ if(ShmChargerInfo->UserTransaction[gun].TransactionId > 0)
|
|
|
+ {
|
|
|
+ printf(", TxId: [%d]", ShmChargerInfo->UserTransaction[gun].TransactionId);
|
|
|
+ }
|
|
|
+ if(ShmSysConfigAndInfo->SysInfo.ConnectorInfo[gun].TotalCost > 0)
|
|
|
+ {
|
|
|
+ printf(", $: %.2f", ShmSysConfigAndInfo->SysInfo.ConnectorInfo[gun].TotalCost);
|
|
|
+ }
|
|
|
+ printf("\r\n");
|
|
|
+ //************************************************************************************************
|
|
|
+ if(strlen(ShmChargerInfo->Timestamp[gun].StartCharging) > 0)
|
|
|
+ {
|
|
|
+ printf(" Start: [%s] ", ShmChargerInfo->Timestamp[gun].StartCharging);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ printf(" ");
|
|
|
+ }
|
|
|
+ printf("PSU: %4d V, %4d A, Limit: %4d A, %4d kW, Local: %11.3f kWh\r\n",
|
|
|
(int)(_chargingData[gun]->PresentChargingVoltage),
|
|
|
(int)(_chargingData[gun]->PresentChargingCurrent),
|
|
|
(int)(ShmSysConfigAndInfo->SysInfo.ConnectorInfo[gun].CapabilityCurrent / 10),
|
|
|
- (int)(ShmSysConfigAndInfo->SysInfo.ConnectorInfo[gun].CapabilityPower / 10));
|
|
|
+ (int)(ShmSysConfigAndInfo->SysInfo.ConnectorInfo[gun].CapabilityPower / 10),
|
|
|
+ ShmChargerInfo->MeterValue[gun].LocalConsumption);
|
|
|
+ //************************************************************************************************
|
|
|
+ if(strlen(ShmChargerInfo->Timestamp[gun].StopCharging) > 0)
|
|
|
+ {
|
|
|
+ printf(" Stop: [%s] ", ShmChargerInfo->Timestamp[gun].StopCharging);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ printf(" ");
|
|
|
+ }
|
|
|
+ printf("Gun: %4d V, %4d A, Remote: %11.3f kWh, Meter: %11.3f kWh\r\n",
|
|
|
+ (int)(ShmSysConfigAndInfo->SysInfo.ConnectorInfo[gun].RemoteChargingVoltage / 10),
|
|
|
+ (int)(ShmSysConfigAndInfo->SysInfo.ConnectorInfo[gun].RemoteChargingCurrent / 10),
|
|
|
+ ShmChargerInfo->MeterValue[gun].GunConsumption, _chargingData[gun]->PowerConsumption);
|
|
|
}
|
|
|
|
|
|
void ShowInfo(char *inputCmd, unsigned int opt)
|
|
@@ -3678,7 +3723,7 @@ void ShowInfo(char *inputCmd, unsigned int opt)
|
|
|
{
|
|
|
if(reflash)
|
|
|
{
|
|
|
- ConsoleReflash(CONNECTOR_QUANTITY, 4);
|
|
|
+ ConsoleReflash(CONNECTOR_QUANTITY, 5);
|
|
|
}
|
|
|
|
|
|
for(int i = 0; i < GENERAL_GUN_QUANTITY; i++)
|
|
@@ -4073,7 +4118,7 @@ void EvCommMsgDebug(char *inputCmd, unsigned int opt)
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- if(reg >= _Reg_Dispenser_Model_Name && reg <= _Reg_PowerConsumption)
|
|
|
+ if(reg >= _Reg_Dispenser_Model_Name && reg < _Reg_None)
|
|
|
{
|
|
|
find = true;
|
|
|
|
|
@@ -4094,7 +4139,7 @@ void EvCommMsgDebug(char *inputCmd, unsigned int opt)
|
|
|
{
|
|
|
find = true;
|
|
|
|
|
|
- ShmChargerInfo->Control.EvCommCtrl.MsgFlag.bits.Reg_All = enable;
|
|
|
+ ShmChargerInfo->Control.EvCommCtrl.MsgFlag.bits.RegDbg_All = enable;
|
|
|
printf("%s EvComm All Msg Flag\r\n", enable ? "Enable" : "Disable");
|
|
|
}
|
|
|
}
|
|
@@ -4218,6 +4263,13 @@ bool SetSystemID(char *systemId)
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
+bool CleanSystemID(void)
|
|
|
+{
|
|
|
+ memset((char *)&ShmSysConfigAndInfo->SysConfig.SystemId, 0x00, sizeof(ShmSysConfigAndInfo->SysConfig.SystemId));
|
|
|
+ printf("Clean System ID OK\r\n");
|
|
|
+ return true;
|
|
|
+}
|
|
|
+
|
|
|
bool SetAuthorisationMode(char *mode)
|
|
|
{
|
|
|
bool disable = false;
|
|
@@ -4311,6 +4363,13 @@ bool SetQRCodeContent(char *content)
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
+bool CleanQRCodeContent(void)
|
|
|
+{
|
|
|
+ memset((char *)&ShmSysConfigAndInfo->SysConfig.QRCodeContent, 0x00, sizeof(ShmSysConfigAndInfo->SysConfig.QRCodeContent));
|
|
|
+ printf("Clean QRCode Content OK\r\n");
|
|
|
+ return true;
|
|
|
+}
|
|
|
+
|
|
|
bool SetLEDIntensity(char *intensity)
|
|
|
{
|
|
|
int ledIntensity = _LED_INTENSITY_DARKEST;
|
|
@@ -4398,6 +4457,13 @@ bool SetOcppServerURL(char *url)
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
+bool CleanOcppServerURL(void)
|
|
|
+{
|
|
|
+ memset((char *)&ShmSysConfigAndInfo->SysConfig.OcppServerURL, 0x00, sizeof(ShmSysConfigAndInfo->SysConfig.OcppServerURL));
|
|
|
+ printf("Clean Ocpp Server URL OK\r\n");
|
|
|
+ return true;
|
|
|
+}
|
|
|
+
|
|
|
bool SetChargeBoxId(char *boxId)
|
|
|
{
|
|
|
if(strlen(boxId) >= sizeof(ShmSysConfigAndInfo->SysConfig.ChargeBoxId))
|
|
@@ -4412,6 +4478,13 @@ bool SetChargeBoxId(char *boxId)
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
+bool CleanChargeBoxId(void)
|
|
|
+{
|
|
|
+ memset((char *)&ShmSysConfigAndInfo->SysConfig.ChargeBoxId, 0x00, sizeof(ShmSysConfigAndInfo->SysConfig.ChargeBoxId));
|
|
|
+ printf("Clean Charge Box Id OK\r\n");
|
|
|
+ return true;
|
|
|
+}
|
|
|
+
|
|
|
bool SetChargePointVendor(char *vendor)
|
|
|
{
|
|
|
if(strlen(vendor) >= sizeof(ShmSysConfigAndInfo->SysConfig.chargePointVendor))
|
|
@@ -4426,6 +4499,13 @@ bool SetChargePointVendor(char *vendor)
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
+bool CleanChargePointVendor(void)
|
|
|
+{
|
|
|
+ memset((char *)&ShmSysConfigAndInfo->SysConfig.chargePointVendor, 0x00, sizeof(ShmSysConfigAndInfo->SysConfig.chargePointVendor));
|
|
|
+ printf("Clean Charge Point Vendor OK\r\n");
|
|
|
+ return true;
|
|
|
+}
|
|
|
+
|
|
|
bool SetOcppReceiptrURL(char *receipt)
|
|
|
{
|
|
|
if(strlen(receipt) >= sizeof(ShmSysConfigAndInfo->SysConfig.OcppReceiptrURL))
|
|
@@ -4440,6 +4520,13 @@ bool SetOcppReceiptrURL(char *receipt)
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
+bool CleanOcppReceiptrURL(void)
|
|
|
+{
|
|
|
+ memset((char *)&ShmSysConfigAndInfo->SysConfig.OcppReceiptrURL, 0x00, sizeof(ShmSysConfigAndInfo->SysConfig.OcppReceiptrURL));
|
|
|
+ printf("Clean Ocpp Receiptr URL OK\r\n");
|
|
|
+ return true;
|
|
|
+}
|
|
|
+
|
|
|
bool SetMaintainServerURL(char *url)
|
|
|
{
|
|
|
if(strlen(url) >= sizeof(ShmSysConfigAndInfo->SysConfig.MaintainServerURL))
|
|
@@ -4454,34 +4541,34 @@ bool SetMaintainServerURL(char *url)
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
+bool CleanMaintainServerURL(void)
|
|
|
+{
|
|
|
+ memset((char *)&ShmSysConfigAndInfo->SysConfig.MaintainServerURL, 0x00, sizeof(ShmSysConfigAndInfo->SysConfig.MaintainServerURL));
|
|
|
+ printf("Clean Maintain Server URL OK\r\n");
|
|
|
+ return true;
|
|
|
+}
|
|
|
+
|
|
|
void FlashSetCmd(char *inputCmd, unsigned int opt)
|
|
|
{
|
|
|
- char subMain[64];
|
|
|
- char subSub[64];
|
|
|
+ char subMain[MAX_SUB_CMD_LENGTH];
|
|
|
+ char subSub[MAX_SUB_CMD_LENGTH];
|
|
|
|
|
|
memset(subMain, 0x00, sizeof(subMain));
|
|
|
memset(subSub, 0x00, sizeof(subSub));
|
|
|
|
|
|
bool find = false;
|
|
|
int actIndex = 0;
|
|
|
- int maxLen = 10;
|
|
|
- char strWriteItem[32][32] = {
|
|
|
- "model", "sn", "sysid", "auth", "evccid", "qrmode", "qrcontent", "led",
|
|
|
- "stopbtn", "policy"};
|
|
|
- bool (*writeFlashList[32])(char *) = {
|
|
|
- &SetModelName, &SetSerialNumber, &SetSystemID, &SetAuthorisationMode,
|
|
|
- &SetAuthrizeByEVCCID, &SetQRCodeMadeMode, &SetQRCodeContent, &SetLEDIntensity,
|
|
|
- &SetStopChargingByButton, &SetOfflinePolicy};
|
|
|
-#if 0
|
|
|
+
|
|
|
+ int maxLen = 15;
|
|
|
char strWriteItem[32][32] = {
|
|
|
- "model", "sn", "sysid", "auth", "evccid", "qrmode", "qrcontent", "led",
|
|
|
+ "model", "sn", "sysid", "auth", "evccid", "qrmode", "qrcode", "led",
|
|
|
"stopbtn", "policy", "backend", "boxid", "vendor", "receipt", "maintain"};
|
|
|
bool (*writeFlashList[32])(char *) = {
|
|
|
&SetModelName, &SetSerialNumber, &SetSystemID, &SetAuthorisationMode,
|
|
|
&SetAuthrizeByEVCCID, &SetQRCodeMadeMode, &SetQRCodeContent, &SetLEDIntensity,
|
|
|
&SetStopChargingByButton, &SetOfflinePolicy, &SetOcppServerURL, &SetChargeBoxId,
|
|
|
&SetChargePointVendor, &SetOcppReceiptrURL, &SetMaintainServerURL};
|
|
|
-#endif
|
|
|
+
|
|
|
bool (*WriteFlashAct)(char *);
|
|
|
|
|
|
if(MainAndSubCommandParsing(inputCmd, subMain, subSub) == 2)
|
|
@@ -4513,6 +4600,54 @@ void FlashSetCmd(char *inputCmd, unsigned int opt)
|
|
|
printf("\r\n\r\n");
|
|
|
}
|
|
|
|
|
|
+void FlashCleanCmd(char *inputCmd, unsigned int opt)
|
|
|
+{
|
|
|
+ char subMain[MAX_SUB_CMD_LENGTH];
|
|
|
+ char subSub[MAX_SUB_CMD_LENGTH];
|
|
|
+
|
|
|
+ memset(subMain, 0x00, sizeof(subMain));
|
|
|
+ memset(subSub, 0x00, sizeof(subSub));
|
|
|
+
|
|
|
+ bool find = false;
|
|
|
+ int actIndex = 0;
|
|
|
+
|
|
|
+ int maxLen = 7;
|
|
|
+ char strCleanItem[32][32] = {
|
|
|
+ "sysid", "qrcode", "backend", "boxid", "vendor", "receipt", "maintain"};
|
|
|
+ bool (*cleanFlashList[32])() = {
|
|
|
+ &CleanSystemID, &CleanQRCodeContent, &CleanOcppServerURL, &CleanChargeBoxId,
|
|
|
+ &CleanChargePointVendor, &CleanOcppReceiptrURL, &CleanMaintainServerURL};
|
|
|
+ bool (*CleanFlashAct)();
|
|
|
+
|
|
|
+ if(MainAndSubCommandParsing(inputCmd, subMain, subSub) == 1)
|
|
|
+ {
|
|
|
+ for(actIndex = 0; actIndex < maxLen; actIndex++)
|
|
|
+ {
|
|
|
+ if(strcmp((char *)&strCleanItem[actIndex][0], subMain) == 0)
|
|
|
+ {
|
|
|
+ find = true;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(find)
|
|
|
+ {
|
|
|
+ printf("\r\n");
|
|
|
+ CleanFlashAct = cleanFlashList[actIndex];
|
|
|
+ CleanFlashAct();
|
|
|
+ printf("\r\n");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ printf("\r\n");
|
|
|
+ printf("Input cmd fail ------ model [clean] [cmd]\r\n");
|
|
|
+ printf(" [cmd]");
|
|
|
+ for(actIndex = 0; actIndex < maxLen; actIndex++)
|
|
|
+ {
|
|
|
+ printf("%s%s", actIndex == 0 ? " " : " | ", &strCleanItem[actIndex][0]);
|
|
|
+ }
|
|
|
+ printf("\r\n\r\n");
|
|
|
+}
|
|
|
+
|
|
|
void FlashWriteCmd(char *inputCmd, unsigned int opt)
|
|
|
{
|
|
|
if(strcmp(inputCmd, "now") == EQUAL)
|
|
@@ -4531,8 +4666,8 @@ void FlashWriteCmd(char *inputCmd, unsigned int opt)
|
|
|
|
|
|
void FlashCmd(char *inputCmd, unsigned int opt)
|
|
|
{
|
|
|
- char subMain[64];
|
|
|
- char subSub[64];
|
|
|
+ char subMain[MAX_SUB_CMD_LENGTH];
|
|
|
+ char subSub[MAX_SUB_CMD_LENGTH];
|
|
|
|
|
|
memset(subMain, 0x00, sizeof(subMain));
|
|
|
memset(subSub, 0x00, sizeof(subSub));
|
|
@@ -4550,15 +4685,364 @@ void FlashCmd(char *inputCmd, unsigned int opt)
|
|
|
FlashWriteCmd(subSub, opt);
|
|
|
return;
|
|
|
}
|
|
|
+
|
|
|
+ if(strcmp(subMain, "clean") == EQUAL)
|
|
|
+ {
|
|
|
+ FlashCleanCmd(subSub, opt);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ printf("\r\n");
|
|
|
+ printf("Input cmd fail ------ flash [set | write | clean] [cmd] [...]\r\n\r\n");
|
|
|
+}
|
|
|
+
|
|
|
+void EnableAbnormalRelay(void)
|
|
|
+{
|
|
|
+ ShmChargerInfo->Control.RelayCtrl.bits.AbnormalRelay = true;
|
|
|
+ printf("\r\n");
|
|
|
+ printf("Enable Abnormal Relay Cmd\r\n\r\n");
|
|
|
+}
|
|
|
+
|
|
|
+void DisableAbnormalRelay(void)
|
|
|
+{
|
|
|
+ ShmChargerInfo->Control.RelayCtrl.bits.AbnormalRelay = NO;
|
|
|
+ printf("\r\n");
|
|
|
+ printf("Disable Abnormal Relay Cmd\r\n\r\n");
|
|
|
+}
|
|
|
+
|
|
|
+void RelayWriteOutputCmd(char *inputCmd)
|
|
|
+{
|
|
|
+ char subMain[MAX_SUB_CMD_LENGTH];
|
|
|
+ char subSub[MAX_SUB_CMD_LENGTH];
|
|
|
+
|
|
|
+ memset(subMain, 0x00, sizeof(subMain));
|
|
|
+ memset(subSub, 0x00, sizeof(subSub));
|
|
|
+
|
|
|
+ if(MainAndSubCommandParsing(inputCmd, subMain, subSub) == 2)
|
|
|
+ {
|
|
|
+ int value = 0;
|
|
|
+ value = atoi(&subMain[0]);
|
|
|
+
|
|
|
+ if(value > 0 && value <= MAX_GUN_QUANTITY && (strcmp(subSub, "on") == 0 || strcmp(subSub, "off") == 0))
|
|
|
+ {
|
|
|
+ int OnOff = 0;
|
|
|
+
|
|
|
+ if(!ShmChargerInfo->Control.RelayCtrl.bits.AbnormalRelay)
|
|
|
+ {
|
|
|
+ EnableAbnormalRelay();
|
|
|
+ }
|
|
|
+
|
|
|
+ OnOff = strcmp(subSub, "on") == 0 ? YES : NO;
|
|
|
+ ShmChargerInfo->PsuGrouping.OutputRelayConfig[value - 1].bits.Output_N = OnOff;
|
|
|
+ ShmChargerInfo->PsuGrouping.OutputRelayConfig[value - 1].bits.Output_P = OnOff;
|
|
|
+ printf("\r\n");
|
|
|
+ printf("Write Gun %d OutputRelay %s\r\n\r\n", value, subSub);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ printf("\r\n");
|
|
|
+ printf("Input cmd fail ------ relay [write] [output] [value 1-4] [on | off]\r\n\r\n");
|
|
|
+}
|
|
|
+
|
|
|
+void RelayWriteParallelCmd(char *inputCmd)
|
|
|
+{
|
|
|
+ char subMain[MAX_SUB_CMD_LENGTH];
|
|
|
+ char subSub[MAX_SUB_CMD_LENGTH];
|
|
|
+
|
|
|
+ memset(subMain, 0x00, sizeof(subMain));
|
|
|
+ memset(subSub, 0x00, sizeof(subSub));
|
|
|
+
|
|
|
+ if(MainAndSubCommandParsing(inputCmd, subMain, subSub) == 2)
|
|
|
+ {
|
|
|
+ int value = 0;
|
|
|
+ value = atoi(&subMain[0]);
|
|
|
+
|
|
|
+ if(value > 0 && value <= PARALLEL_RELAY_COUNT && (strcmp(subSub, "on") == 0 || strcmp(subSub, "off") == 0))
|
|
|
+ {
|
|
|
+ int OnOff = 0;
|
|
|
+
|
|
|
+ if(!ShmChargerInfo->Control.RelayCtrl.bits.AbnormalRelay)
|
|
|
+ {
|
|
|
+ EnableAbnormalRelay();
|
|
|
+ }
|
|
|
+
|
|
|
+ OnOff = strcmp(subSub, "on") == 0 ? YES : NO;
|
|
|
+ if(OnOff)
|
|
|
+ {
|
|
|
+ ShmChargerInfo->PsuGrouping.ParallelRelayConfig.CtrlValue |= 1 << (value - 1);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ ShmChargerInfo->PsuGrouping.ParallelRelayConfig.CtrlValue &= ~(1 << (value - 1));
|
|
|
+ }
|
|
|
+ printf("\r\n");
|
|
|
+ printf("Write ParallelRelay %d %s\r\n\r\n", value, subSub);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ printf("\r\n");
|
|
|
+ printf("Input cmd fail ------ relay [write] [parallel] [value 1-6] [on | off]\r\n\r\n");
|
|
|
+}
|
|
|
+
|
|
|
+void AbnormalRelayCmd(char *inputCmd, unsigned int opt)
|
|
|
+{
|
|
|
+ char subMain[MAX_SUB_CMD_LENGTH];
|
|
|
+ char subSub[MAX_SUB_CMD_LENGTH];
|
|
|
+
|
|
|
+ memset(subMain, 0x00, sizeof(subMain));
|
|
|
+ memset(subSub, 0x00, sizeof(subSub));
|
|
|
+
|
|
|
+ if(MainAndSubCommandParsing(inputCmd, subMain, subSub) == 1)
|
|
|
+ {
|
|
|
+ if(strcmp(subMain, "enable") == 0)
|
|
|
+ {
|
|
|
+ EnableAbnormalRelay();
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ if(strcmp(subMain, "disable") == 0)
|
|
|
+ {
|
|
|
+ DisableAbnormalRelay();
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ printf("\r\n");
|
|
|
+ printf("Input cmd fail ------ relay [abnormal] [enable | disable]\r\n\r\n");
|
|
|
+}
|
|
|
+
|
|
|
+void RelayWriteCmd(char *inputCmd, unsigned int opt)
|
|
|
+{
|
|
|
+ char subMain[MAX_SUB_CMD_LENGTH];
|
|
|
+ char subSub[MAX_SUB_CMD_LENGTH];
|
|
|
+
|
|
|
+ memset(subMain, 0x00, sizeof(subMain));
|
|
|
+ memset(subSub, 0x00, sizeof(subSub));
|
|
|
+
|
|
|
+ if(MainAndSubCommandParsing(inputCmd, subMain, subSub) == 2)
|
|
|
+ {
|
|
|
+ if(strcmp(subMain, "output") == 0)
|
|
|
+ {
|
|
|
+ RelayWriteOutputCmd(subSub);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ if(strcmp(subMain, "parallel") == 0)
|
|
|
+ {
|
|
|
+ RelayWriteParallelCmd(subSub);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ printf("\r\n");
|
|
|
+ printf("Input cmd fail ------ relay [write] [output | parallel] [value] [on | off]\r\n\r\n");
|
|
|
+}
|
|
|
+
|
|
|
+void RelayReadCmd(char *inputCmd, unsigned int opt)
|
|
|
+{
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+void OutputRelayAutoTest(void)
|
|
|
+{
|
|
|
+ int MaxGunCount = 0;
|
|
|
+ struct timespec _Loop_time;
|
|
|
+ int time = 0;
|
|
|
+
|
|
|
+ MaxGunCount = MAX_GUN_QUANTITY;
|
|
|
+
|
|
|
+ for(int i = 0; i < MaxGunCount; i++)
|
|
|
+ {
|
|
|
+ ShmChargerInfo->PsuGrouping.OutputRelayConfig[i].bits.Output_N = YES;
|
|
|
+ GetClockTime(&_Loop_time);
|
|
|
+ while(1)
|
|
|
+ {
|
|
|
+ time = GetTimeoutValue(_Loop_time) / mSEC_VAL;
|
|
|
+
|
|
|
+ if(ShmChargerInfo->PsuGrouping.OutputRelayConfig[i].bits.Output_N == ShmChargerInfo->PsuGrouping.OutputRelayConfirmed[i].bits.Output_N)
|
|
|
+ {
|
|
|
+ printf("Gun %d Output Relay N Driving Check OK\r\n", i + 1);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ if(time >= 3000)
|
|
|
+ {
|
|
|
+ printf("Gun %d Output Relay N Driving Check Fault\r\n", i + 1);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ usleep(10000);
|
|
|
+ }
|
|
|
+
|
|
|
+ ShmChargerInfo->PsuGrouping.OutputRelayConfig[i].bits.Output_P = YES;
|
|
|
+ GetClockTime(&_Loop_time);
|
|
|
+ while(1)
|
|
|
+ {
|
|
|
+ time = GetTimeoutValue(_Loop_time) / mSEC_VAL;
|
|
|
+
|
|
|
+ if(ShmChargerInfo->PsuGrouping.OutputRelayConfig[i].bits.Output_P == ShmChargerInfo->PsuGrouping.OutputRelayConfirmed[i].bits.Output_P)
|
|
|
+ {
|
|
|
+ printf("Gun %d Output Relay P Driving Check OK\r\n", i + 1);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ if(time >= 3000)
|
|
|
+ {
|
|
|
+ printf("Gun %d Output Relay P Driving Check Fault\r\n", i + 1);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ usleep(10000);
|
|
|
+ }
|
|
|
+
|
|
|
+ ShmChargerInfo->PsuGrouping.OutputRelayConfig[i].bits.Output_N = NO;
|
|
|
+ GetClockTime(&_Loop_time);
|
|
|
+ while(1)
|
|
|
+ {
|
|
|
+ time = GetTimeoutValue(_Loop_time) / mSEC_VAL;
|
|
|
+
|
|
|
+ if(ShmChargerInfo->PsuGrouping.OutputRelayConfig[i].bits.Output_N == ShmChargerInfo->PsuGrouping.OutputRelayConfirmed[i].bits.Output_N)
|
|
|
+ {
|
|
|
+ printf("Gun %d Output Relay N Welding Check OK\r\n", i + 1);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ if(time >= 3000)
|
|
|
+ {
|
|
|
+ printf("Gun %d Output Relay N Welding Check Fault\r\n", i + 1);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ usleep(10000);
|
|
|
+ }
|
|
|
+
|
|
|
+ ShmChargerInfo->PsuGrouping.OutputRelayConfig[i].bits.Output_P = NO;
|
|
|
+ GetClockTime(&_Loop_time);
|
|
|
+ while(1)
|
|
|
+ {
|
|
|
+ time = GetTimeoutValue(_Loop_time) / mSEC_VAL;
|
|
|
+
|
|
|
+ if(ShmChargerInfo->PsuGrouping.OutputRelayConfig[i].bits.Output_P == ShmChargerInfo->PsuGrouping.OutputRelayConfirmed[i].bits.Output_P)
|
|
|
+ {
|
|
|
+ printf("Gun %d Output Relay P Welding Check OK\r\n", i + 1);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ if(time >= 3000)
|
|
|
+ {
|
|
|
+ printf("Gun %d Output Relay P Welding Check Fault\r\n", i + 1);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ usleep(10000);
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+void ParallelRelayAutoTest(void)
|
|
|
+{
|
|
|
+ int ParallelRelayCount = 0;
|
|
|
+ struct timespec _Loop_time;
|
|
|
+ int time = 0;
|
|
|
+
|
|
|
+ ParallelRelayCount = PARALLEL_RELAY_COUNT;
|
|
|
+
|
|
|
+ for(int i = 0; i < ParallelRelayCount; i++)
|
|
|
+ {
|
|
|
+ ShmChargerInfo->PsuGrouping.ParallelRelayConfig.CtrlValue |= 1 << i;
|
|
|
+ GetClockTime(&_Loop_time);
|
|
|
+ while(1)
|
|
|
+ {
|
|
|
+ time = GetTimeoutValue(_Loop_time) / mSEC_VAL;
|
|
|
+
|
|
|
+ if(ShmChargerInfo->PsuGrouping.ParallelRelayConfig.CtrlValue == ShmChargerInfo->PsuGrouping.ParallelRelayConfirmed.CtrlValue)
|
|
|
+ {
|
|
|
+ printf("Location %d Parallel Relay Driving Check OK\r\n", i + 1);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ if(time >= 3000)
|
|
|
+ {
|
|
|
+ printf("Location %d Parallel Relay Driving Check Fault\r\n", i + 1);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ usleep(10000);
|
|
|
+ }
|
|
|
+
|
|
|
+ ShmChargerInfo->PsuGrouping.ParallelRelayConfig.CtrlValue &= ~(1 << i);
|
|
|
+ GetClockTime(&_Loop_time);
|
|
|
+ while(1)
|
|
|
+ {
|
|
|
+ time = GetTimeoutValue(_Loop_time) / mSEC_VAL;
|
|
|
+
|
|
|
+ if(ShmChargerInfo->PsuGrouping.ParallelRelayConfig.CtrlValue == ShmChargerInfo->PsuGrouping.ParallelRelayConfirmed.CtrlValue)
|
|
|
+ {
|
|
|
+ printf("Location %d Parallel Relay Welding Check OK\r\n", i + 1);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ if(time >= 3000)
|
|
|
+ {
|
|
|
+ printf("Location %d Parallel Relay Welding Check Fault\r\n", i + 1);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ usleep(10000);
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+void RelayAutoTest(char *inputCmd)
|
|
|
+{
|
|
|
+ if(strcmp(inputCmd, "now") != EQUAL)
|
|
|
+ {
|
|
|
+ printf("\r\n");
|
|
|
+ printf("Input cmd fail ------ relay [autotest] [now]\r\n\r\n");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ if(!ShmChargerInfo->Control.RelayCtrl.bits.AbnormalRelay)
|
|
|
+ {
|
|
|
+ EnableAbnormalRelay();
|
|
|
+ }
|
|
|
+
|
|
|
+ OutputRelayAutoTest();
|
|
|
+ ParallelRelayAutoTest();
|
|
|
+ printf("Relay Auto Test Completed\r\n");
|
|
|
+
|
|
|
+ DisableAbnormalRelay();
|
|
|
+}
|
|
|
+
|
|
|
+void RelayCmd(char *inputCmd, unsigned int opt)
|
|
|
+{
|
|
|
+ char subMain[MAX_SUB_CMD_LENGTH];
|
|
|
+ char subSub[MAX_SUB_CMD_LENGTH];
|
|
|
+
|
|
|
+ memset(subMain, 0x00, sizeof(subMain));
|
|
|
+ memset(subSub, 0x00, sizeof(subSub));
|
|
|
+
|
|
|
+ if(MainAndSubCommandParsing(inputCmd, subMain, subSub) >= 2)
|
|
|
+ {
|
|
|
+ if(strcmp(subMain, "abnormal") == EQUAL)
|
|
|
+ {
|
|
|
+ AbnormalRelayCmd(subSub, opt);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ if(strcmp(subMain, "write") == EQUAL)
|
|
|
+ {
|
|
|
+ RelayWriteCmd(subSub, opt);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ if(strcmp(subMain, "read") == EQUAL)
|
|
|
+ {
|
|
|
+ RelayReadCmd(subSub, opt);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ if(strcmp(subMain, "autotest") == EQUAL)
|
|
|
+ {
|
|
|
+ RelayAutoTest(subSub);
|
|
|
+ return;
|
|
|
+ }
|
|
|
}
|
|
|
printf("\r\n");
|
|
|
- printf("Input cmd fail ------ flash [set] [cmd] [...]\r\n\r\n");
|
|
|
+ printf("Input cmd fail ------ relay [abnormal | write | read | autotest] [...]\r\n\r\n");
|
|
|
}
|
|
|
|
|
|
int main(void)
|
|
|
{
|
|
|
- char newString[32][32];
|
|
|
- char inputString[128], normalCmd[128], mainCmd[128], subCmd[128], multiCmd[128];
|
|
|
+ char newString[32][MAX_SUB_CMD_LENGTH];
|
|
|
+ char inputString[MAX_SUB_CMD_LENGTH], normalCmd[MAX_SUB_CMD_LENGTH];
|
|
|
+ char mainCmd[MAX_SUB_CMD_LENGTH], subCmd[MAX_SUB_CMD_LENGTH], multiCmd[MAX_SUB_CMD_LENGTH];
|
|
|
int cmdCnt = 0, parseCnt = 0;
|
|
|
unsigned int option = 0;
|
|
|
|
|
@@ -4603,7 +5087,7 @@ int main(void)
|
|
|
memset(subCmd, 0x00, sizeof(subCmd));
|
|
|
for(int i = 0; i < 32; i++)
|
|
|
{
|
|
|
- memset(&newString[i], 0x00, 32);
|
|
|
+ memset(&newString[i], 0x00, MAX_SUB_CMD_LENGTH);
|
|
|
}
|
|
|
|
|
|
//printf("CmdCnt: %d\r\n", cmdCnt);
|
|
@@ -4979,6 +5463,10 @@ int main(void)
|
|
|
else if(strcmp(mainCmd, "flash") == 0)
|
|
|
{
|
|
|
FlashCmd(subCmd, option);
|
|
|
+ }
|
|
|
+ else if(strcmp(mainCmd, "relay") == 0)
|
|
|
+ {
|
|
|
+ RelayCmd(subCmd, option);
|
|
|
}
|
|
|
else
|
|
|
{
|