|
@@ -27,8 +27,9 @@
|
|
|
#define TMR_IDX_8 8
|
|
|
#define TMR_IDX_9 9
|
|
|
|
|
|
-#define TIMEOUT_SPEC_HANDSHAKING 180000
|
|
|
-#define TIMEOUT_SPEC_AUTH 30000
|
|
|
+#define TIMEOUT_SPEC_HANDSHAKING 180000
|
|
|
+#define TIMEOUT_SPEC_AUTH 30000
|
|
|
+#define TIMEOUT_SPEC_HANDSHAKING_LED 185000
|
|
|
|
|
|
#define MtdBlockSize 0x600000
|
|
|
|
|
@@ -484,7 +485,7 @@ int LoadSysConfigAndInfo(struct SysConfigData *ptr)
|
|
|
{
|
|
|
ChkSum+=buf[wrd];
|
|
|
}
|
|
|
- memcpy(&ChkSumOrg,buf+(0x00600000-4),sizeof(ChkSumOrg));
|
|
|
+ memcpy(&ChkSumOrg,buf+(MtdBlockSize-4),sizeof(ChkSumOrg));
|
|
|
|
|
|
//================================================
|
|
|
// Load configuration from mtdblock11
|
|
@@ -533,7 +534,7 @@ int LoadSysConfigAndInfo(struct SysConfigData *ptr)
|
|
|
{
|
|
|
ChkSum+=buf[wrd];
|
|
|
}
|
|
|
- memcpy(&ChkSumOrg,buf+(0x00600000-4),sizeof(ChkSumOrg));
|
|
|
+ memcpy(&ChkSumOrg,buf+(MtdBlockSize-4),sizeof(ChkSumOrg));
|
|
|
|
|
|
//================================================
|
|
|
// Load configuration from mtdblock12 (Factory default)
|
|
@@ -582,7 +583,7 @@ int LoadSysConfigAndInfo(struct SysConfigData *ptr)
|
|
|
{
|
|
|
ChkSum+=buf[wrd];
|
|
|
}
|
|
|
- memcpy(&ChkSumOrg,buf+(0x00600000-4),sizeof(ChkSumOrg));
|
|
|
+ memcpy(&ChkSumOrg,buf+(MtdBlockSize-4),sizeof(ChkSumOrg));
|
|
|
if(ChkSum!=ChkSumOrg)
|
|
|
{
|
|
|
DEBUG_WARN("factory default SysConfigData checksum NG, restore factory default\r\n");
|
|
@@ -614,7 +615,6 @@ void InitEthernet()
|
|
|
char tmpbuf[256];
|
|
|
//unsigned int address;
|
|
|
|
|
|
- DEBUG_INFO("11111111111111111111");
|
|
|
//Init Eth0 for internet
|
|
|
if(isInterfaceUp("eth0")==PASS)
|
|
|
{
|
|
@@ -628,7 +628,7 @@ void InitEthernet()
|
|
|
ShmSysConfigAndInfo->SysConfig.Eth0Interface.EthGatewayAddress);
|
|
|
system(tmpbuf);
|
|
|
}
|
|
|
- DEBUG_INFO("2222222222222222");
|
|
|
+
|
|
|
if(isInterfaceUp("eth1")==PASS)
|
|
|
{
|
|
|
//Init Eth1 for administrator tool
|
|
@@ -638,7 +638,7 @@ void InitEthernet()
|
|
|
ShmSysConfigAndInfo->SysConfig.Eth1Interface.EthSubmaskAddress);
|
|
|
system(tmpbuf);
|
|
|
}
|
|
|
- DEBUG_INFO("3333333333333333333333");
|
|
|
+
|
|
|
|
|
|
//Run DHCP client if enabled
|
|
|
system("killall udhcpc");
|
|
@@ -662,6 +662,7 @@ int SpawnTask()
|
|
|
system ("pkill OcppBackend");
|
|
|
system ("pkill Module_AlarmDetect");
|
|
|
system ("pkill Module_InternalComm");
|
|
|
+ system ("pkill Module_Speaker");
|
|
|
|
|
|
if(ShmSysConfigAndInfo->SysConfig.ModelName[10] == 'T')
|
|
|
{
|
|
@@ -673,9 +674,13 @@ int SpawnTask()
|
|
|
}
|
|
|
|
|
|
system("/root/Module_EventLogging &");
|
|
|
- system("/root/OcppBackend &");
|
|
|
+ if(strcmp((char *)&ShmSysConfigAndInfo->SysConfig.OcppServerURL,"") != 0)
|
|
|
+ {
|
|
|
+ system("/root/OcppBackend &");
|
|
|
+ }
|
|
|
system("/root/Module_AlarmDetect &");
|
|
|
system("/root/Module_InternalComm &");
|
|
|
+ system ("/root/Module_Speaker &");
|
|
|
|
|
|
return PASS;
|
|
|
}
|
|
@@ -1213,6 +1218,15 @@ void setLedMotion(unsigned char gun_index,unsigned char led_mode)
|
|
|
case LED_ACTION_ALL_OFF:
|
|
|
ShmCharger->gun_info[gun_index].primaryMcuLed.mode = LED_ACTION_ALL_OFF;
|
|
|
break;
|
|
|
+ case LED_RELAY_ON:
|
|
|
+ ShmCharger->gun_info[gun_index].primaryMcuLed.mode = LED_RELAY_ON;
|
|
|
+ break;
|
|
|
+ case LED_RELAY_OFF:
|
|
|
+ ShmCharger->gun_info[gun_index].primaryMcuLed.mode = LED_RELAY_OFF;
|
|
|
+ break;
|
|
|
+ case LED_ACTION_HANDSHAKE_FAIL:
|
|
|
+ ShmCharger->gun_info[gun_index].primaryMcuLed.mode = LED_ACTION_HANDSHAKE_FAIL;
|
|
|
+ break;
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -1354,6 +1368,11 @@ int main(void)
|
|
|
// Main loop
|
|
|
for(;;)
|
|
|
{
|
|
|
+ //==========================================
|
|
|
+ // Synchronize share memory from OCPP struct
|
|
|
+ //==========================================
|
|
|
+ ShmSysConfigAndInfo->SysInfo.OcppConnStatus = ShmOCPP16Data->OcppConnStatus;
|
|
|
+
|
|
|
//==========================================
|
|
|
// Something need run in Idle mode
|
|
|
//==========================================
|
|
@@ -1486,14 +1505,13 @@ int main(void)
|
|
|
ShmSysConfigAndInfo->SysConfig.MaxChargingCurrent = ShmCharger->gun_info[gun_index].primaryMcuState.rating_current;
|
|
|
ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].PresentChargedDuration = 0;
|
|
|
ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].PresentChargedEnergy = 0;
|
|
|
+ setLedMotion(gun_index,LED_ACTION_IDLE);
|
|
|
}
|
|
|
|
|
|
- if(((ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].PilotState == CP_STATE_B) && (ShmCharger->rfidReq == ON)) ||
|
|
|
+ if((ShmCharger->rfidReq == ON) ||
|
|
|
(ShmSysConfigAndInfo->SysConfig.Bluetooth.isRequestStart == ON) ||
|
|
|
(ShmOCPP16Data->CsMsg.bits[gun_index].RemoteStartTransactionReq == ON))
|
|
|
{
|
|
|
- setSpeaker(ON,SPEAKER_SHORT);
|
|
|
-
|
|
|
// User id
|
|
|
memset(ShmSysConfigAndInfo->SysConfig.UserId, 0x00, ARRAY_SIZE(ShmSysConfigAndInfo->SysConfig.UserId));
|
|
|
|
|
@@ -1644,7 +1662,23 @@ int main(void)
|
|
|
switch(ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].StartMethod)
|
|
|
{
|
|
|
case START_METHOD_BACKEND:
|
|
|
- setChargerMode(gun_index, MODE_PREPARING);
|
|
|
+ if(ShmOCPP16Data->SpMsg.bits.AuthorizeConf ||
|
|
|
+ (ShmSysConfigAndInfo->SysConfig.AuthorisationMode == AUTH_MODE_OCPP))
|
|
|
+ {
|
|
|
+ if((strcmp((char*)ShmOCPP16Data->Authorize.ResponseIdTagInfo.Status, "Accepted")==0))
|
|
|
+ {
|
|
|
+ setSpeaker(ON,SPEAKER_SHORT);
|
|
|
+ setChargerMode(gun_index, MODE_PREPARING);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ setSpeaker(ON,SPEAKER_INTERVAL_3COUNT);
|
|
|
+ setChargerMode(gun_index, MODE_IDLE);
|
|
|
+ }
|
|
|
+
|
|
|
+ ShmCharger->rfidReq = OFF;
|
|
|
+ ShmOCPP16Data->SpMsg.bits.AuthorizeConf = OFF;
|
|
|
+ }
|
|
|
break;
|
|
|
case START_METHOD_RFID:
|
|
|
if(ShmOCPP16Data->SpMsg.bits.AuthorizeConf ||
|
|
@@ -1655,10 +1689,12 @@ int main(void)
|
|
|
(ShmSysConfigAndInfo->SysConfig.AuthorisationMode == AUTH_MODE_FREEMODE) ||
|
|
|
(!ShmOCPP16Data->OcppConnStatus&&(ShmSysConfigAndInfo->SysConfig.OfflinePolicy == OFF_POLICY_FREEMODE)))
|
|
|
{
|
|
|
+ setSpeaker(ON,SPEAKER_SHORT);
|
|
|
setChargerMode(gun_index, MODE_PREPARING);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
+ setSpeaker(ON,SPEAKER_INTERVAL_3COUNT);
|
|
|
setChargerMode(gun_index, MODE_IDLE);
|
|
|
}
|
|
|
|
|
@@ -1674,8 +1710,6 @@ int main(void)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- setLedMotion(gun_index,LED_ACTION_AUTHED);
|
|
|
-
|
|
|
break;
|
|
|
case MODE_PREPARING:
|
|
|
if(isModeChange(gun_index))
|
|
@@ -1695,7 +1729,12 @@ int main(void)
|
|
|
* TODO:
|
|
|
* 1. HANDSHAKING timeout process
|
|
|
*/
|
|
|
- setChargerMode(gun_index, MODE_IDLE);
|
|
|
+ setLedMotion(gun_index, LED_ACTION_HANDSHAKE_FAIL);
|
|
|
+
|
|
|
+ if(DiffTimeb(startTime[TMR_IDX_HANDSHAKING]) > TIMEOUT_SPEC_HANDSHAKING_LED)
|
|
|
+ {
|
|
|
+ setChargerMode(gun_index, MODE_IDLE);
|
|
|
+ }
|
|
|
}
|
|
|
else if((ShmCharger->gun_info[gun_index].primaryMcuState.relay_state == ON))
|
|
|
{
|
|
@@ -1706,12 +1745,12 @@ int main(void)
|
|
|
ShmOCPP16Data->CpMsg.bits[gun_index].StartTransactionReq = ON;
|
|
|
setChargerMode(gun_index, MODE_CHARGING);
|
|
|
}
|
|
|
-
|
|
|
- if((ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].PilotState == CP_STATE_B))
|
|
|
+ else if((ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].PilotState == CP_STATE_B))
|
|
|
{
|
|
|
setLedMotion(gun_index,LED_ACTION_CONNECTED);
|
|
|
}
|
|
|
|
|
|
+
|
|
|
break;
|
|
|
case MODE_CHARGING:
|
|
|
if(isModeChange(gun_index))
|