|
@@ -1,5 +1,7 @@
|
|
|
#include "Module_LcmControl.h"
|
|
|
|
|
|
+bool needReloadQr = true;
|
|
|
+
|
|
|
void PRINTF_FUNC(char *string, ...);
|
|
|
|
|
|
int StoreLogMsg(const char *fmt, ...);
|
|
@@ -479,13 +481,33 @@ void ChangeBattMapAndValue(short page, int soc)
|
|
|
if (page == _LCM_CHARGING)
|
|
|
{
|
|
|
if (soc < 20)
|
|
|
+ {
|
|
|
+ if (_battery_display_ani)
|
|
|
+ ChangeDisplay2Value(__batt_map, _battery_empty);
|
|
|
+ else
|
|
|
ChangeDisplay2Value(__batt_map, _battery_cap_20);
|
|
|
+ }
|
|
|
else if (soc >= 20 && soc < 40)
|
|
|
+ {
|
|
|
+ if (_battery_display_ani)
|
|
|
+ ChangeDisplay2Value(__batt_map, _battery_cap_20);
|
|
|
+ else
|
|
|
ChangeDisplay2Value(__batt_map, _battery_cap_40);
|
|
|
+ }
|
|
|
else if (soc >= 40 && soc < 60)
|
|
|
+ {
|
|
|
+ if (_battery_display_ani)
|
|
|
+ ChangeDisplay2Value(__batt_map, _battery_cap_40);
|
|
|
+ else
|
|
|
ChangeDisplay2Value(__batt_map, _battery_cap_60);
|
|
|
+ }
|
|
|
else if (soc >= 60 && soc < 80)
|
|
|
+ {
|
|
|
+ if (_battery_display_ani)
|
|
|
+ ChangeDisplay2Value(__batt_map, _battery_cap_60);
|
|
|
+ else
|
|
|
ChangeDisplay2Value(__batt_map, _battery_cap_80);
|
|
|
+ }
|
|
|
else if (soc >= 80 && soc <= 100)
|
|
|
ChangeDisplay2Value(__batt_map, _battery_cap_100);
|
|
|
}
|
|
@@ -540,7 +562,10 @@ void ChangeChargingEnergyValue(float energy)
|
|
|
byte value[10];
|
|
|
|
|
|
memset(cmd, 0x00, sizeof(cmd));
|
|
|
-
|
|
|
+ if(energy > 0.05)
|
|
|
+ {
|
|
|
+ energy -= 0.05;
|
|
|
+ }
|
|
|
sprintf((char *) value, "%.1f kWh", energy);
|
|
|
string2ByteArray(value, cmd);
|
|
|
DisplayValueToLcm(__total_out_eng_tx, cmd, sizeof(cmd));
|
|
@@ -556,15 +581,45 @@ void ChangeChargingPowerValue(float pow)
|
|
|
// float min = 0.0;
|
|
|
// float max = 50;
|
|
|
// pow = (max - min) * rand() / (RAND_MAX + 1.0) + min;
|
|
|
-
|
|
|
sprintf((char *) value, "%.1f kW", pow);
|
|
|
string2ByteArray(value, cmd);
|
|
|
DisplayValueToLcm(__output_eng_tx, cmd, sizeof(cmd));
|
|
|
}
|
|
|
|
|
|
-void ChangeStopMap(byte value)
|
|
|
+void ChangeChargingFeeValue(float fee)
|
|
|
{
|
|
|
+ byte cmd[10];
|
|
|
+ byte value[10];
|
|
|
|
|
|
+ memset(cmd, 0x00, sizeof(cmd));
|
|
|
+
|
|
|
+ sprintf((char *) value, "%.2f", fee);
|
|
|
+ string2ByteArray(value, cmd);
|
|
|
+ DisplayValueToLcm(__charging_fee_tx, cmd, sizeof(cmd));
|
|
|
+}
|
|
|
+
|
|
|
+void DisplayMoneyRate(float money)
|
|
|
+{
|
|
|
+ byte cmd[8];
|
|
|
+ byte value[8];
|
|
|
+
|
|
|
+ memset(cmd, 0x00, sizeof(cmd));
|
|
|
+
|
|
|
+ sprintf((char *) value, "%.2f", money);
|
|
|
+ string2ByteArray(value, cmd);
|
|
|
+ DisplayValueToLcm(__money_by_rate, cmd, sizeof(cmd));
|
|
|
+}
|
|
|
+
|
|
|
+void DisplayMoneyCur(byte *cur)
|
|
|
+{
|
|
|
+ byte cmd[5];
|
|
|
+ byte buf[5];
|
|
|
+
|
|
|
+ *(cur + 3) = '\0';
|
|
|
+ memset(cmd, 0x00, sizeof(cmd));
|
|
|
+ sprintf((char *) buf, "%s", cur);
|
|
|
+ string2ByteArray(buf, cmd);
|
|
|
+ DisplayValueToLcm(__money_rate, cmd, sizeof(cmd));
|
|
|
}
|
|
|
|
|
|
void RefreshPageAnimation(byte value)
|
|
@@ -573,20 +628,7 @@ void RefreshPageAnimation(byte value)
|
|
|
{
|
|
|
case _LCM_IDLE:
|
|
|
{
|
|
|
- if (value == 0)
|
|
|
- {
|
|
|
- ChangeToOtherPage(_currentPage);
|
|
|
- }
|
|
|
- else if (value == 15)
|
|
|
- {
|
|
|
- ChangeToOtherPage(_currentPage + 1);
|
|
|
- }
|
|
|
- else if (value == 30)
|
|
|
- {
|
|
|
- ChangeToOtherPage(_currentPage + 2);
|
|
|
- }
|
|
|
|
|
|
- _everyPageRollChange > 45 ? _everyPageRollChange = 0 : _everyPageRollChange++;
|
|
|
}
|
|
|
break;
|
|
|
case _LCM_WAIT_FOR_PLUG:
|
|
@@ -623,51 +665,6 @@ void RefreshPageAnimation(byte value)
|
|
|
ChangeDisplay2Value(__conn_line_comp, _complete_map);
|
|
|
}
|
|
|
|
|
|
- if (_totalCount == 2 && _currentPage != _LCM_PRE_CHARGE)
|
|
|
- {
|
|
|
- byte index = 0;
|
|
|
- for (index = 0; index < _totalCount; index++) {
|
|
|
- if (ShmSysConfigAndInfo->SysInfo.CurGunSelected != index)
|
|
|
- {
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- ChangeDisplay2Value(__sel_gun_btn, _sel_gun_btn);
|
|
|
- if (_chargingInfoData[index]->SystemStatus == S_IDLE ||
|
|
|
- _chargingInfoData[index]->SystemStatus == S_RESERVATION)
|
|
|
- {
|
|
|
- if(value == 0)
|
|
|
- {
|
|
|
- ChangeDisplay2Value(__side_top, _side_rfid_1);
|
|
|
- ChangeDisplay2Value(__side_down, _side_rfid_2);
|
|
|
- }
|
|
|
- else if (value == 15)
|
|
|
- {
|
|
|
- ChangeDisplay2Value(__side_top, _side_qr_1);
|
|
|
- ChangeDisplay2Value(__side_down, _side_qr_2);
|
|
|
- }
|
|
|
- else if (value == 30)
|
|
|
- {
|
|
|
- ChangeDisplay2Value(__side_top, _side_app_1);
|
|
|
- ChangeDisplay2Value(__side_down, _side_app_2);
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- ChangeDisplay2Value(__side_top, _disappear);
|
|
|
- ChangeDisplay2Value(__side_down, _disappear);
|
|
|
- ChangeDisplay2Value(__qr_code_pre, _disappear);
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- ChangeDisplay2Value(__sel_gun_btn, _disappear);
|
|
|
- ChangeDisplay2Value(__side_top, _disappear);
|
|
|
- ChangeDisplay2Value(__side_down, _disappear);
|
|
|
- ChangeDisplay2Value(__qr_code_pre, _disappear);
|
|
|
- }
|
|
|
-
|
|
|
_everyPageRollChange >= 45 ? _everyPageRollChange = 0 : _everyPageRollChange++;
|
|
|
}
|
|
|
break;
|
|
@@ -708,20 +705,97 @@ void RefreshConnStatus()
|
|
|
ChangeDisplay2Value(__conn_status, _disconnect);
|
|
|
}
|
|
|
|
|
|
+byte FirstPageChanged()
|
|
|
+{
|
|
|
+ byte result = NO;
|
|
|
+
|
|
|
+ if (_currentPage != _oldPage)
|
|
|
+ {
|
|
|
+ result = YES;
|
|
|
+ _oldPage = _currentPage;
|
|
|
+ }
|
|
|
+
|
|
|
+ return result;
|
|
|
+}
|
|
|
+
|
|
|
void ProcessPageInfo()
|
|
|
{
|
|
|
switch(_currentPage)
|
|
|
{
|
|
|
case _LCM_IDLE:
|
|
|
{
|
|
|
- // QR Code 處理
|
|
|
- ChangeQrCode_Idle("http://google.com.tw");
|
|
|
+ if (ShmSysConfigAndInfo->SysConfig.isRFID)
|
|
|
+ ChangeDisplay2Value(__main_rfid, _main_rfid);
|
|
|
+ else
|
|
|
+ ChangeDisplay2Value(__main_rfid, _main_none_rfid);
|
|
|
+
|
|
|
+ if (ShmSysConfigAndInfo->SysConfig.isQRCode)
|
|
|
+ ChangeDisplay2Value(__main_qr, _main_qr);
|
|
|
+ else
|
|
|
+ {
|
|
|
+ ChangeDisplay2Value(__qr_code, _disappear);
|
|
|
+ ChangeDisplay2Value(__main_qr, _main_none_qr);
|
|
|
+ needReloadQr = true;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (ShmSysConfigAndInfo->SysConfig.isAPP)
|
|
|
+ ChangeDisplay2Value(__main_app, _main_app);
|
|
|
+ else
|
|
|
+ ChangeDisplay2Value(__main_app, _main_none_app);
|
|
|
+
|
|
|
+ if (FirstPageChanged() == YES || needReloadQr)
|
|
|
+ {
|
|
|
+ if (ShmSysConfigAndInfo->SysConfig.isQRCode)
|
|
|
+ {
|
|
|
+ needReloadQr = false;
|
|
|
+ ChangeQrCode_Idle("http://google.com.tw");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case _LCM_AUTHORIZING:
|
|
|
+ case _LCM_AUTHORIZ_COMP:
|
|
|
+ case _LCM_AUTHORIZ_FAIL:
|
|
|
+ case _LCM_WAIT_FOR_PLUG:
|
|
|
+ {
|
|
|
+ FirstPageChanged();
|
|
|
}
|
|
|
break;
|
|
|
case _LCM_PRE_CHARGE:
|
|
|
case _LCM_CHARGING:
|
|
|
case _LCM_COMPLETE:
|
|
|
{
|
|
|
+ if (_totalCount == 2)
|
|
|
+ {
|
|
|
+ ChangeDisplay2Value(__sel_gun_btn, _sel_gun_btn);
|
|
|
+
|
|
|
+ if (ShmSysConfigAndInfo->SysConfig.isRFID)
|
|
|
+ ChangeDisplay2Value(__side_top, _side_rfid);
|
|
|
+ else
|
|
|
+ ChangeDisplay2Value(__side_top, _side_none_rfid);
|
|
|
+
|
|
|
+ if (ShmSysConfigAndInfo->SysConfig.isQRCode)
|
|
|
+ ChangeDisplay2Value(__side_mid, _side_qr);
|
|
|
+ else
|
|
|
+ {
|
|
|
+ ChangeDisplay2Value(__qr_code_pre, _disappear);
|
|
|
+ ChangeDisplay2Value(__side_mid, _side_none_qr);
|
|
|
+ needReloadQr = true;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (ShmSysConfigAndInfo->SysConfig.isAPP)
|
|
|
+ ChangeDisplay2Value(__side_down, _side_app);
|
|
|
+ else
|
|
|
+ ChangeDisplay2Value(__side_down, _side_none_app);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ ChangeDisplay2Value(__side_top, _disappear);
|
|
|
+ ChangeDisplay2Value(__side_mid, _disappear);
|
|
|
+ ChangeDisplay2Value(__side_down, _disappear);
|
|
|
+ ChangeDisplay2Value(__sel_gun_btn, _disappear);
|
|
|
+ }
|
|
|
+
|
|
|
// gun type and charging info
|
|
|
for(byte i = 0; i < _totalCount; i++)
|
|
|
{
|
|
@@ -743,11 +817,11 @@ void ProcessPageInfo()
|
|
|
{
|
|
|
if (ShmSysConfigAndInfo->SysInfo.CurGunSelected == i)
|
|
|
{
|
|
|
- ChangeDisplay2Value(__gun_type_index + (i * 2), _chademo_light);
|
|
|
+ ChangeDisplay2Value(__gun_type_index + (i * 2), _gbt_light);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- ChangeDisplay2Value(__gun_type_index + (i * 2), _chademo_dark);
|
|
|
+ ChangeDisplay2Value(__gun_type_index + (i * 2), _gbt_dark);
|
|
|
}
|
|
|
}
|
|
|
break;
|
|
@@ -772,10 +846,16 @@ void ProcessPageInfo()
|
|
|
ChangeBattMapAndValue(_LCM_CHARGING, _chargingInfoData[i]->EvBatterySoc);
|
|
|
if (_chargingInfoData[i]->RemainChargingDuration >= 0)
|
|
|
ChangeRemainTime(_chargingInfoData[i]->RemainChargingDuration);
|
|
|
+ else
|
|
|
+ ChangeRemainTime(0);
|
|
|
if (_chargingInfoData[i]->PresentChargingPower >= 0)
|
|
|
ChangeChargingPowerValue(_chargingInfoData[i]->PresentChargingPower);
|
|
|
- if (_chargingInfoData[i]->PresentChargedEnergy >= 0)
|
|
|
+ else
|
|
|
+ ChangeChargingPowerValue(0);
|
|
|
+ if (_chargingInfoData[i]->PresentChargedEnergy >= 0.1)
|
|
|
ChangeChargingEnergyValue(_chargingInfoData[i]->PresentChargedEnergy);
|
|
|
+ else
|
|
|
+ ChangeChargingEnergyValue(0);
|
|
|
|
|
|
if (strcmp((char *)_chargingInfoData[i]->StartUserId, "") == 0)
|
|
|
ChangeDisplay2Value(__stop_method_btn, _stop_charging_btn);
|
|
@@ -790,16 +870,34 @@ void ProcessPageInfo()
|
|
|
ChangeBattMapAndValue(_LCM_COMPLETE, _chargingInfoData[i]->EvBatterySoc);
|
|
|
if (_chargingInfoData[i]->RemainChargingDuration >= 0)
|
|
|
ChangeRemainTime(_chargingInfoData[i]->RemainChargingDuration);
|
|
|
+ else
|
|
|
+ ChangeRemainTime(0);
|
|
|
if (_chargingInfoData[i]->PresentChargingPower >= 0)
|
|
|
ChangeChargingPowerValue(_chargingInfoData[i]->PresentChargingPower);
|
|
|
- if (_chargingInfoData[i]->PresentChargedEnergy >= 0)
|
|
|
+ else
|
|
|
+ ChangeChargingPowerValue(0);
|
|
|
+
|
|
|
+ if (_chargingInfoData[i]->PresentChargedEnergy >= 0.1)
|
|
|
+ {
|
|
|
ChangeChargingEnergyValue(_chargingInfoData[i]->PresentChargedEnergy);
|
|
|
+
|
|
|
+ if (ShmSysConfigAndInfo->SysConfig.BillingData.isBilling &&
|
|
|
+ _chargingInfoData[i]->ChargingFee >= 0)
|
|
|
+ {
|
|
|
+ ChangeChargingFeeValue(_chargingInfoData[i]->ChargingFee);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ ChangeChargingEnergyValue(0);
|
|
|
+ ChangeChargingFeeValue(0);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
// gun btn and QR code
|
|
|
- if (_totalCount == 2 && _currentPage != _LCM_PRE_CHARGE)
|
|
|
+ if (_totalCount == 2 && _currentPage)
|
|
|
{
|
|
|
byte index = 0;
|
|
|
for(index = 0; index < _totalCount; index++)
|
|
@@ -814,8 +912,14 @@ void ProcessPageInfo()
|
|
|
_chargingInfoData[index]->SystemStatus == S_RESERVATION ||
|
|
|
_chargingInfoData[index]->SystemStatus == S_BOOTING)
|
|
|
{
|
|
|
- // QR Code 處理
|
|
|
- ChangeQrCode_Charge("http://google.com.tw");
|
|
|
+ if (FirstPageChanged() == YES || needReloadQr)
|
|
|
+ {
|
|
|
+ if (ShmSysConfigAndInfo->SysConfig.isQRCode)
|
|
|
+ {
|
|
|
+ needReloadQr = false;
|
|
|
+ ChangeQrCode_Charge("http://google.com.tw");
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -823,10 +927,37 @@ void ProcessPageInfo()
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-void Initialization()
|
|
|
+void ChangeDisplayMoneyInfo()
|
|
|
{
|
|
|
- //strcpy((char *)ShmSysConfigAndInfo->SysInfo.LcmHwRev, moduleName);
|
|
|
+ if (ShmSysConfigAndInfo->SysConfig.BillingData.isBilling)
|
|
|
+ {
|
|
|
+ struct timeb csuTime;
|
|
|
+ struct tm *tmCSU;
|
|
|
+
|
|
|
+ ftime(&csuTime);
|
|
|
+ tmCSU = localtime(&csuTime.time);
|
|
|
+
|
|
|
+ ChangeDisplay2Value(__money_rate_map, _charging_money);
|
|
|
+
|
|
|
+ if (tmCSU->tm_hour <= 23)
|
|
|
+ {
|
|
|
+ ShmSysConfigAndInfo->SysConfig.BillingData.Cur_fee = ShmSysConfigAndInfo->SysConfig.BillingData.Fee[tmCSU->tm_hour];
|
|
|
+ DisplayMoneyRate(ShmSysConfigAndInfo->SysConfig.BillingData.Cur_fee);
|
|
|
+ }
|
|
|
|
|
|
+ if (ShmSysConfigAndInfo->SysConfig.BillingData.Currency <= 53)
|
|
|
+ DisplayMoneyCur((byte *)Currency[ShmSysConfigAndInfo->SysConfig.BillingData.Currency]);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ ChangeDisplay2Value(__money_rate_map, _disappear);
|
|
|
+ ChangeDisplay2Value(__money_by_rate, _disappear);
|
|
|
+ ChangeDisplay2Value(__money_rate, _disappear);
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+void Initialization()
|
|
|
+{
|
|
|
bool isPass = false;
|
|
|
byte count = 5;
|
|
|
while(!isPass && count > 0)
|
|
@@ -870,8 +1001,8 @@ int main(void)
|
|
|
_totalCount = ShmSysConfigAndInfo->SysConfig.TotalConnectorCount;
|
|
|
Initialization();
|
|
|
|
|
|
-// ChangeToOtherPage(_LCM_FIX);
|
|
|
-// return 0;
|
|
|
+ //ChangeToOtherPage(_LCM_INIT);
|
|
|
+ //return 0;
|
|
|
|
|
|
while(_port != -1)
|
|
|
{
|
|
@@ -914,6 +1045,10 @@ int main(void)
|
|
|
|
|
|
RefreshPageAnimation(_everyPageRollChange);
|
|
|
|
|
|
+ if (changeWarningPriority == 0)
|
|
|
+ ChangeDisplayMoneyInfo();
|
|
|
+
|
|
|
+ changeWarningPriority >= 15 ? (_battery_display_ani = true) : (_battery_display_ani = false);
|
|
|
changeWarningPriority >= 30 ? changeWarningPriority = 0 : changeWarningPriority++;
|
|
|
usleep(100000);
|
|
|
}
|