|
@@ -57,6 +57,7 @@ struct CcsData *ShmCcsData;
|
|
|
struct GBTData *ShmGBTData;
|
|
|
struct FanModuleData *ShmFanModuleData;
|
|
|
struct RelayModuleData *ShmRelayModuleData;
|
|
|
+struct LedModuleData *ShmLedModuleData;
|
|
|
struct PsuData *ShmPsuData;
|
|
|
|
|
|
struct ChargingInfoData *_chargingData[CHAdeMO_QUANTITY + CCS_QUANTITY + GB_QUANTITY];
|
|
@@ -200,6 +201,15 @@ int InitShareMemory()
|
|
|
result = FAIL;
|
|
|
}
|
|
|
|
|
|
+ if ((MeterSMId = shmget(ShmLedBdKey, sizeof(struct LedModuleData), 0777)) < 0)
|
|
|
+ {
|
|
|
+ result = FAIL;
|
|
|
+ }
|
|
|
+ else if ((ShmLedModuleData = shmat(MeterSMId, NULL, 0)) == (void *) -1)
|
|
|
+ {
|
|
|
+ result = FAIL;
|
|
|
+ }
|
|
|
+
|
|
|
if ((MeterSMId = shmget(ShmPsuKey, sizeof(struct PsuData), IPC_CREAT | 0777)) < 0)
|
|
|
{
|
|
|
result = FAIL;
|
|
@@ -212,8 +222,26 @@ int InitShareMemory()
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
+unsigned long GetTimeoutValue(struct timeval _sour_time)
|
|
|
+{
|
|
|
+ struct timeval _end_time;
|
|
|
+ gettimeofday(&_end_time, NULL);
|
|
|
+
|
|
|
+ return 1000000 * (_end_time.tv_sec - _sour_time.tv_sec) + _end_time.tv_usec - _sour_time.tv_usec;
|
|
|
+}
|
|
|
+
|
|
|
void RunStatusProc(char *v1, char *v2)
|
|
|
{
|
|
|
+ if (strcmp(v1, "ac") == 0)
|
|
|
+ {
|
|
|
+ if (!FindAcChargingInfoData(0, &ac_chargingInfo[0]))
|
|
|
+ {
|
|
|
+ printf("FindChargingInfoData (AC) false \n");
|
|
|
+ }
|
|
|
+ printf("AC Status = %d \n", ac_chargingInfo[0]->ConnectorPlugIn);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
int _index = atoi(v1);
|
|
|
if (_index <= 1)
|
|
|
{
|
|
@@ -273,7 +301,9 @@ void RunCardProc(char *v1, char *v2)
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- memcpy((char *)ShmSysConfigAndInfo->SysConfig.UserId, v1, ARRAY_SIZE(v1));
|
|
|
+ strcpy((char *)ShmSysConfigAndInfo->SysConfig.UserId, "");
|
|
|
+ memcpy((char *)ShmSysConfigAndInfo->SysConfig.UserId, v1, strlen(v1));
|
|
|
+ ShmSysConfigAndInfo->SysConfig.UserId[strlen(v1)] = '\0';
|
|
|
printf("StartUserId = %s \n", ShmSysConfigAndInfo->SysConfig.UserId);
|
|
|
}
|
|
|
}
|
|
@@ -307,8 +337,12 @@ void GetGunLockStatusProc(char *v1, char *v2)
|
|
|
printf("FindChargingInfoData error\n");
|
|
|
return;
|
|
|
}
|
|
|
+ if (strcmp(v2, "-1") != 0 && strcmp(v2, "") != 0)
|
|
|
+ {
|
|
|
+ _chargingData[_index]->GunLocked = atoi(v2);
|
|
|
+ }
|
|
|
|
|
|
- printf("Gun Locked Status = %x \n", _chargingData[_index]->GunLocked);
|
|
|
+ printf("Gun Locked Status = %d \n", _chargingData[_index]->GunLocked);
|
|
|
}
|
|
|
|
|
|
void SetSystemIDProc()
|
|
@@ -328,17 +362,14 @@ void GetFwVerProc(char *v1)
|
|
|
{
|
|
|
printf("407 FW Version = %s \n", ShmPrimaryMcuData->version);
|
|
|
}
|
|
|
- else if (strcmp(v1, "0") == 0)
|
|
|
+ else if (strcmp(v1, "0") == 0 || strcmp(v1, "1") == 0)
|
|
|
{
|
|
|
- printf("Ev board 0 FW Version = %s \n", ShmCHAdeMOData->evse[0].version);
|
|
|
- }
|
|
|
- else if (strcmp(v1, "1") == 0)
|
|
|
- {
|
|
|
- printf("Ev board 1 FW Version = %s \n", ShmCcsData->V2GMessage_DIN70121->version);
|
|
|
- }
|
|
|
- else if (strcmp(v1, "2") == 0)
|
|
|
- {
|
|
|
- printf("Ev board 2 FW Version = %s \n", ShmGBTData->evse[0].version);
|
|
|
+ int _index = atoi(v1);
|
|
|
+
|
|
|
+ if (_index == 0)
|
|
|
+ printf("Gun 0 FW Version = %s \n", ShmSysConfigAndInfo->SysInfo.Connector1FwRev);
|
|
|
+ else if (_index == 1)
|
|
|
+ printf("Gun 1 FW Version = %s \n", ShmSysConfigAndInfo->SysInfo.Connector2FwRev);
|
|
|
}
|
|
|
else if (strcmp(v1, "rb") == 0)
|
|
|
{
|
|
@@ -352,6 +383,10 @@ void GetFwVerProc(char *v1)
|
|
|
{
|
|
|
printf("DC Main Version = %s \n", ShmSysConfigAndInfo->SysInfo.CsuRootFsFwRev);
|
|
|
}
|
|
|
+ else if (strcmp(v1, "led") == 0)
|
|
|
+ {
|
|
|
+ printf("LED Version = %s \n", ShmSysConfigAndInfo->SysInfo.LedModuleFwRev);
|
|
|
+ }
|
|
|
else if (strcmp(v1, "ac") == 0)
|
|
|
{
|
|
|
if (!FindAcChargingInfoData(0, &ac_chargingInfo[0]))
|
|
@@ -370,6 +405,26 @@ void CreateOneError(char *v1)
|
|
|
ShmSysConfigAndInfo->SysConfig.BillingData.isBilling = value;
|
|
|
}
|
|
|
|
|
|
+void GetAuthorizeFlag(char *v1)
|
|
|
+{
|
|
|
+ if (strcmp(v1, "-1") == 0|| strcmp(v1, "") == 0)
|
|
|
+ printf("AuthorizeFlag = %d \n", ShmSysConfigAndInfo->SysInfo.AuthorizeFlag);
|
|
|
+ else
|
|
|
+ ShmSysConfigAndInfo->SysInfo.AuthorizeFlag = atoi(v1);
|
|
|
+}
|
|
|
+
|
|
|
+void GetOrClearId(char *v1)
|
|
|
+{
|
|
|
+ int _index = atoi(v1);
|
|
|
+
|
|
|
+ if (!FindChargingInfoData(_index, &_chargingData[0]))
|
|
|
+ {
|
|
|
+ printf("FindChargingInfoData error\n");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ printf("Card Number = %s \n", _chargingData[_index]->StartUserId);
|
|
|
+}
|
|
|
+
|
|
|
void FwUpdateFlagProc()
|
|
|
{
|
|
|
ShmSysConfigAndInfo->SysInfo.FirmwareUpdate = 0x01;
|
|
@@ -409,12 +464,15 @@ void SetPowerValue(char *v1, char *v2)
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- _chargingData[_index]->EvBatterytargetCurrent = _Current * 10;
|
|
|
+ _chargingData[_index]->EvBatterytargetCurrent = _Current;
|
|
|
}
|
|
|
|
|
|
void GetSystemInfo()
|
|
|
{
|
|
|
printf ("ModelName = %s \n", ShmSysConfigAndInfo->SysConfig.ModelName);
|
|
|
+ printf ("SerialNumber = %s \n", ShmSysConfigAndInfo->SysConfig.SerialNumber);
|
|
|
+ printf ("InternetConn = %d \n", ShmSysConfigAndInfo->SysInfo.InternetConn);
|
|
|
+
|
|
|
printf ("MaxChargingPower = %d, MaxChargingCurrent = %d \n",
|
|
|
ShmSysConfigAndInfo->SysConfig.MaxChargingPower,
|
|
|
ShmSysConfigAndInfo->SysConfig.MaxChargingCurrent);
|
|
@@ -615,7 +673,6 @@ void RunUnconditionalChargeIndex1(char *v1, char *v2, char *v3)
|
|
|
|
|
|
if(_Voltage > 1000 || _Voltage < 50)
|
|
|
{
|
|
|
-
|
|
|
printf ("Input Voltage over range\n");
|
|
|
return;
|
|
|
}
|
|
@@ -632,8 +689,8 @@ void RunUnconditionalChargeIndex1(char *v1, char *v2, char *v3)
|
|
|
//kill ev task
|
|
|
system("killall Module_EvComm");
|
|
|
|
|
|
- _Voltage = (_Voltage * 10);
|
|
|
- _Current = (_Current * 10);
|
|
|
+ //_Voltage = (_Voltage * 10);
|
|
|
+ //_Current = (_Current * 10);
|
|
|
|
|
|
//system(STTY_US TTY_PATH);
|
|
|
|
|
@@ -699,7 +756,7 @@ void RunUnconditionalChargeIndex1(char *v1, char *v2, char *v3)
|
|
|
PreviousSystemStatus = _chargingData[ShmSysConfigAndInfo->SysInfo.CurGunSelected]->SystemStatus;
|
|
|
|
|
|
printf ("[UnconditionalCharge - S_PREPARING_FOR_EV]\n");
|
|
|
- printf ("ReqVoltage = %f, ReqCurrent = %f \n", _Voltage,_Current);
|
|
|
+ printf ("ReqVoltage = %f, ReqCurrent = %f \n", _Voltage * 10,_Current * 10);
|
|
|
|
|
|
}
|
|
|
//清除 main timeout 機制
|
|
@@ -709,8 +766,8 @@ void RunUnconditionalChargeIndex1(char *v1, char *v2, char *v3)
|
|
|
|
|
|
//充電電壓電流
|
|
|
_chargingData[ShmSysConfigAndInfo->SysInfo.CurGunSelected]->EvBatterySoc = 50;
|
|
|
- _chargingData[ShmSysConfigAndInfo->SysInfo.CurGunSelected]->EvBatterytargetVoltage = 5000;
|
|
|
- _chargingData[ShmSysConfigAndInfo->SysInfo.CurGunSelected]->EvBatterytargetCurrent = 20;
|
|
|
+ _chargingData[ShmSysConfigAndInfo->SysInfo.CurGunSelected]->EvBatterytargetVoltage = 500;
|
|
|
+ _chargingData[ShmSysConfigAndInfo->SysInfo.CurGunSelected]->EvBatterytargetCurrent = 2;
|
|
|
_chargingData[ShmSysConfigAndInfo->SysInfo.CurGunSelected]->AvailableChargingCurrent = 1000;
|
|
|
|
|
|
//****** 注意~此行為是防止 K1K2 先開導到無法升壓 ( Relay Board 在此 state 還未搭上 K1K2 )
|
|
@@ -746,8 +803,8 @@ void RunUnconditionalChargeIndex1(char *v1, char *v2, char *v3)
|
|
|
|
|
|
//充電電壓電流
|
|
|
_chargingData[ShmSysConfigAndInfo->SysInfo.CurGunSelected]->EvBatterySoc = 50;
|
|
|
- _chargingData[ShmSysConfigAndInfo->SysInfo.CurGunSelected]->EvBatterytargetVoltage = 5000;
|
|
|
- _chargingData[ShmSysConfigAndInfo->SysInfo.CurGunSelected]->EvBatterytargetCurrent = 20;
|
|
|
+ _chargingData[ShmSysConfigAndInfo->SysInfo.CurGunSelected]->EvBatterytargetVoltage = 500;
|
|
|
+ _chargingData[ShmSysConfigAndInfo->SysInfo.CurGunSelected]->EvBatterytargetCurrent = 2;
|
|
|
_chargingData[ShmSysConfigAndInfo->SysInfo.CurGunSelected]->AvailableChargingCurrent = 1000;
|
|
|
|
|
|
//printf ("tar vol_ = %d \n", _chargingData[ShmSysConfigAndInfo->SysInfo.CurGunSelected]->EvBatterytargetVoltage);
|
|
@@ -796,12 +853,6 @@ void RunUnconditionalChargeIndex1(char *v1, char *v2, char *v3)
|
|
|
printf ("Charging Ground Fault check Fail (%d)\n",_chargingData[ShmSysConfigAndInfo->SysInfo.CurGunSelected]->GroundFaultStatus);
|
|
|
_chargingData[ShmSysConfigAndInfo->SysInfo.CurGunSelected]->SystemStatus = S_TERMINATING;
|
|
|
}
|
|
|
-
|
|
|
- if (_chargingData[ShmSysConfigAndInfo->SysInfo.CurGunSelected]->GroundFaultStatus == 0x03){
|
|
|
- printf ("Charging Ground Fault Warning (%d)\n",_chargingData[ShmSysConfigAndInfo->SysInfo.CurGunSelected]->GroundFaultStatus);
|
|
|
- _chargingData[ShmSysConfigAndInfo->SysInfo.CurGunSelected]->SystemStatus = S_TERMINATING;
|
|
|
- }
|
|
|
-
|
|
|
}
|
|
|
break;
|
|
|
|
|
@@ -815,7 +866,6 @@ void RunUnconditionalChargeIndex1(char *v1, char *v2, char *v3)
|
|
|
printf ("[UnconditionalCharge - S_TERMINATING]\n");
|
|
|
//無阻塞偵測 keybaord 結束
|
|
|
system(STTY_DEF TTY_PATH);
|
|
|
-
|
|
|
}
|
|
|
|
|
|
sleep(3);
|
|
@@ -880,8 +930,8 @@ void RunUnconditionalChargeIndex1(char *v1, char *v2, char *v3)
|
|
|
continue;
|
|
|
|
|
|
printf("vol = %f, cur = %f \n", _vol, _cur);
|
|
|
- _chargingData[ShmSysConfigAndInfo->SysInfo.CurGunSelected]->EvBatterytargetVoltage = _vol * 10;
|
|
|
- _chargingData[ShmSysConfigAndInfo->SysInfo.CurGunSelected]->EvBatterytargetCurrent = _cur * 10;
|
|
|
+ _chargingData[ShmSysConfigAndInfo->SysInfo.CurGunSelected]->EvBatterytargetVoltage = _vol;
|
|
|
+ _chargingData[ShmSysConfigAndInfo->SysInfo.CurGunSelected]->EvBatterytargetCurrent = _cur;
|
|
|
}
|
|
|
else if (strcmp(newString[0], "c") == 0)
|
|
|
{
|
|
@@ -1067,6 +1117,14 @@ int main(void)
|
|
|
{
|
|
|
CreateOneError(newString[1]);
|
|
|
}
|
|
|
+ else if (strcmp(newString[0], "auth") == 0)
|
|
|
+ {
|
|
|
+ GetAuthorizeFlag(newString[1]);
|
|
|
+ }
|
|
|
+ else if (strcmp(newString[0], "id") == 0)
|
|
|
+ {
|
|
|
+ GetOrClearId(newString[1]);
|
|
|
+ }
|
|
|
else if(strcmp(newString[0], "strchg") == 0)
|
|
|
{
|
|
|
//如果連一個參數都沒有 (此命令不理會) 加上判斷第二參數
|