|
@@ -1,15 +1,23 @@
|
|
|
/*
|
|
|
- * Module_DcMeter.c
|
|
|
+ * Module_DcMeter.c
|
|
|
*
|
|
|
- * Created on: 2021/5/31
|
|
|
+ * Created on: 2021/5/31
|
|
|
* Author: foluswen
|
|
|
*/
|
|
|
#include "Module_DcMeter.h"
|
|
|
#include "meterComm.h"
|
|
|
#include "Module_RatedCurrent.h"
|
|
|
|
|
|
+#define _DEBUG_ 1
|
|
|
+
|
|
|
+#if _DEBUG_
|
|
|
+#define PR(...) printf(__VA_ARGS__)
|
|
|
+#else
|
|
|
+#define PR(...)
|
|
|
+#endif
|
|
|
+
|
|
|
/**
|
|
|
- * Initial share memory
|
|
|
+ * Initial share memory
|
|
|
* @return
|
|
|
*/
|
|
|
int InitShareMemory()
|
|
@@ -64,18 +72,32 @@ int InitShareMemory()
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
//==========================================
|
|
|
// Main loop
|
|
|
//==========================================
|
|
|
int main(void)
|
|
|
{
|
|
|
+ printf("main start\n");
|
|
|
ParsingRatedCur modelnameInfo = {0};
|
|
|
Meter_Info meter_info[4];
|
|
|
- uint8_t pollingIndex = 0;
|
|
|
- uint8_t meterIndex = 0;
|
|
|
+ Meter_Status_Info meter_status_info[4];
|
|
|
+ Meter_transaction_Action meter_read_transaction_record[4];
|
|
|
+ Meter_transaction_Action meter_transaction_Action[4];
|
|
|
+ Meter_transaction_Result meter_transaction_Result[4];
|
|
|
uint8_t failCount[4];
|
|
|
+ uint8_t startTransactionFailCount[4];
|
|
|
+ uint8_t stopTransactionFailCount[4];
|
|
|
+ uint8_t getTransactionOcmfFailCount[4];
|
|
|
+ uint8_t meterSyncTimeFailCount[4];
|
|
|
+ uint16_t RecordLogTimerCount = 0;
|
|
|
|
|
|
#ifndef DEBUG_STANDALONG
|
|
|
+
|
|
|
// Initialize share memory
|
|
|
if(InitShareMemory() == FAIL)
|
|
|
{
|
|
@@ -88,6 +110,14 @@ int main(void)
|
|
|
sleep(5);
|
|
|
return -1;
|
|
|
}
|
|
|
+
|
|
|
+ /*
|
|
|
+ for(;;)
|
|
|
+ {
|
|
|
+ printf("ActionCmd : %d \n", ShmSysConfigAndInfo->SysInfo.DcMeterTransactionAction[0].ActionCmd);
|
|
|
+ sleep(1);
|
|
|
+ }
|
|
|
+ */
|
|
|
|
|
|
RatedCurrentParsing((char*)ShmSysConfigAndInfo->SysConfig.ModelName, &modelnameInfo);
|
|
|
|
|
@@ -105,163 +135,768 @@ int main(void)
|
|
|
meterInitialize(METER_MODEL_LEM_L18005A);
|
|
|
|
|
|
|
|
|
+ //DEBUG_INFO("modelnameInfo.GetGunCount : %d \n", modelnameInfo.GetGunCount);
|
|
|
+ #ifndef DEBUG_STANDALONG
|
|
|
+ //if Power up and DC meter is runing (need stop)
|
|
|
+ for(uint8_t gun_index=0;gun_index<modelnameInfo.GetGunCount;gun_index++){
|
|
|
+
|
|
|
+ readMeterStatusInfo(gun_index,&meter_status_info[gun_index]);
|
|
|
+ if(meter_status_info[gun_index].MeterStatusFlag.bits.transactionIsOnGoing == 1)
|
|
|
+ {
|
|
|
+ ShmSysConfigAndInfo->SysInfo.DcMeterTransactionAction[gun_index].ActionCmd = 2;
|
|
|
+ readMeterLegal(gun_index,&meter_transaction_Action[gun_index]);
|
|
|
+ strcpy(ShmSysConfigAndInfo->SysInfo.DcMeterTransactionAction[gun_index].head.transactionId,meter_transaction_Action[gun_index].head.transactionId);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ printf("shm ");
|
|
|
+ DEBUG_INFO("shm ");
|
|
|
+ #endif
|
|
|
+
|
|
|
+ printf("modelnameInfo.GetGunCount : %d \n", modelnameInfo.GetGunCount);
|
|
|
DEBUG_INFO("modelnameInfo.GetGunCount : %d \n", modelnameInfo.GetGunCount);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ //uint8_t gun_index=0;
|
|
|
+ //meter_transaction_Action[0].ActionCmd = 2;
|
|
|
+ //strcpy(meter_transaction_Action[0].head.transactionId, "ddd5002");
|
|
|
|
|
|
+ //strcpy(ShmSysConfigAndInfo->SysInfo.DcMeterReadTransactionRecord[0].head.transactionId, "12345678" );
|
|
|
+ //ShmSysConfigAndInfo->SysInfo.DcMeterReadTransactionRecord[0].ActionCmd = 1;
|
|
|
+
|
|
|
// Main loop
|
|
|
for(;;)
|
|
|
{
|
|
|
for(uint8_t gun_index=0;gun_index<modelnameInfo.GetGunCount;gun_index++)
|
|
|
{
|
|
|
- if(gun_index == 0)
|
|
|
- meterIndex = 0;
|
|
|
- meterIndex = gun_index;
|
|
|
|
|
|
if(modelnameInfo.ParsingInfo[gun_index].GunType != Gun_Type_AC)
|
|
|
{
|
|
|
- meterApiAssign(meterIndex);
|
|
|
-
|
|
|
- for(pollingIndex=0;pollingIndex<4;pollingIndex++)
|
|
|
- {
|
|
|
- switch(pollingIndex)
|
|
|
+ #ifndef DEBUG_STANDALONG
|
|
|
+ meter_transaction_Action[gun_index].ActionCmd = ShmSysConfigAndInfo->SysInfo.DcMeterTransactionAction[gun_index].ActionCmd;
|
|
|
+ meter_read_transaction_record[gun_index].ActionCmd = ShmSysConfigAndInfo->SysInfo.DcMeterReadTransactionRecord[gun_index].ActionCmd;
|
|
|
+ meter_read_transaction_record[gun_index].OcmfInfoReady = ShmSysConfigAndInfo->SysInfo.DcMeterReadTransactionRecord[gun_index].OcmfInfoReady;
|
|
|
+ meter_transaction_Action[gun_index].OcmfInfoReady = ShmSysConfigAndInfo->SysInfo.DcMeterTransactionAction[gun_index].OcmfInfoReady;
|
|
|
+ #endif
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ PR("for index : %d \n", gun_index);
|
|
|
+ //if Transaction Cmd
|
|
|
+ if(meter_transaction_Action[gun_index].ActionCmd || meter_read_transaction_record[gun_index].ActionCmd)
|
|
|
{
|
|
|
- case 0:
|
|
|
- if(readCurrent(&meter_info[meterIndex]) != FAIL)
|
|
|
+ //if start Transaction record
|
|
|
+ if(meter_transaction_Action[gun_index].ActionCmd == 1)
|
|
|
{
|
|
|
- #ifndef DEBUG_STANDALONG
|
|
|
- /*
|
|
|
- * TODO:
|
|
|
- * 1. Synchronize data to share memory
|
|
|
- */
|
|
|
-
|
|
|
- ShmSysConfigAndInfo->SysInfo.DcMeterInfo[meterIndex].presentCurrent = meter_info[meterIndex].presentCurrent;
|
|
|
- #ifdef DEBUG_SHAREMEM_LOG
|
|
|
- DEBUG_INFO("shm Output current %d : %.3f A\n", meterIndex, ShmSysConfigAndInfo->SysInfo.DcMeterInfo[meterIndex].presentCurrent);
|
|
|
- #endif
|
|
|
-
|
|
|
- #else
|
|
|
- DEBUG_INFO("Output current %d : %.3f A\n", meterIndex, meter_info[meterIndex].presentCurrent);
|
|
|
- #endif//DEBUG_STANDALONG
|
|
|
- //pollingIndex++;
|
|
|
- failCount[meterIndex] = 0;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- if(failCount[meterIndex] < 10)
|
|
|
- failCount[meterIndex]++;
|
|
|
+ PR("<<<<<<<<< meter_sync_time : %d >>>>>>>>>\n", gun_index);
|
|
|
+ //first sync sys time
|
|
|
+ if(configure_meter_time(gun_index) != FAIL)
|
|
|
+ {
|
|
|
+
|
|
|
+ //update transaction content
|
|
|
+ #ifndef DEBUG_STANDALONG
|
|
|
+ strcpy(meter_transaction_Action[gun_index].head.evseId, ShmSysConfigAndInfo->SysInfo.DcMeterTransactionAction[gun_index].head.evseId);
|
|
|
+ strcpy(meter_transaction_Action[gun_index].head.transactionId, ShmSysConfigAndInfo->SysInfo.DcMeterTransactionAction[gun_index].head.transactionId);
|
|
|
+ strcpy(meter_transaction_Action[gun_index].head.clientId, ShmSysConfigAndInfo->SysInfo.DcMeterTransactionAction[gun_index].head.clientId);
|
|
|
+ meter_transaction_Action[gun_index].head.tariffId = ShmSysConfigAndInfo->SysInfo.DcMeterTransactionAction[gun_index].head.tariffId;
|
|
|
+ meter_transaction_Action[gun_index].head.cableId = ShmSysConfigAndInfo->SysInfo.DcMeterTransactionAction[gun_index].head.cableId;
|
|
|
+ strcpy(meter_transaction_Action[gun_index].head.userData, ShmSysConfigAndInfo->SysInfo.DcMeterTransactionAction[gun_index].head.userData);
|
|
|
+ #else
|
|
|
+ strcpy(meter_transaction_Action[gun_index].head.evseId, "evse45");
|
|
|
+ strcpy(meter_transaction_Action[gun_index].head.transactionId, "ddd5002");
|
|
|
+ strcpy(meter_transaction_Action[gun_index].head.clientId, "client1");
|
|
|
+ meter_transaction_Action[gun_index].head.tariffId = 2;
|
|
|
+ meter_transaction_Action[gun_index].head.cableId =3;
|
|
|
+ strcpy(meter_transaction_Action[gun_index].head.userData, "Phihong12");
|
|
|
+ #endif
|
|
|
+
|
|
|
+ PR(" ****** evseId : %s\n",meter_transaction_Action[gun_index].head.evseId);
|
|
|
+ PR(" ****** transactionId : %s\n",meter_transaction_Action[gun_index].head.transactionId);
|
|
|
+ PR(" ****** clientId : %s\n",meter_transaction_Action[gun_index].head.clientId);
|
|
|
+ PR(" ****** tariffId : %d\n",meter_transaction_Action[gun_index].head.tariffId);
|
|
|
+ PR(" ****** clientId : %d\n",meter_transaction_Action[gun_index].head.cableId);
|
|
|
+ PR(" ****** userData : %s\n",meter_transaction_Action[gun_index].head.userData);
|
|
|
+
|
|
|
+
|
|
|
+ meterSyncTimeFailCount[gun_index] = 0;
|
|
|
+ #ifndef DEBUG_STANDALONG
|
|
|
+ ShmStatusCodeData->AlarmCode.AlarmEvents.bits.MeterSyncTimeError = OFF;
|
|
|
+ #endif
|
|
|
+
|
|
|
+ PR("<<<<<<<<< meter_transaction_Action : %d >>>>>>>>>\n", gun_index);
|
|
|
+ //start Transaction
|
|
|
+ if(startMeterTransaction(gun_index,&meter_transaction_Action[gun_index]) != FAIL)
|
|
|
+ {
|
|
|
+ #ifndef DEBUG_STANDALONG
|
|
|
+ /*
|
|
|
+ * TODO:
|
|
|
+ * 1. Synchronize data to share memory
|
|
|
+ */
|
|
|
+ //clear ocmf value
|
|
|
+ strcpy((char *) meter_transaction_Action[gun_index].transactionOCMF, "");
|
|
|
+ sprintf(&ShmSysConfigAndInfo->SysInfo.DcMeterTransactionAction[gun_index].transactionOCMF,
|
|
|
+ "%s",meter_transaction_Action[gun_index].transactionOCMF);
|
|
|
+
|
|
|
+ #ifdef DEBUG_SHAREMEM_TRANSACTION_START_LOG
|
|
|
+
|
|
|
+ #endif
|
|
|
+
|
|
|
+ #else
|
|
|
+
|
|
|
+ #endif//DEBUG_STANDALONG
|
|
|
+
|
|
|
+ //clear OCMF info flag
|
|
|
+ meter_transaction_Action[gun_index].OcmfInfoReady = 0;
|
|
|
+
|
|
|
+ failCount[gun_index] = 0;
|
|
|
+ startTransactionFailCount[gun_index] = 0;
|
|
|
+ #ifndef DEBUG_STANDALONG
|
|
|
+ ShmStatusCodeData->AlarmCode.AlarmEvents.bits.MetertStartTransactionError = OFF;
|
|
|
+ #endif
|
|
|
+
|
|
|
+ //clear need action cmd
|
|
|
+ meter_transaction_Action[gun_index].ActionCmd = 0;
|
|
|
+
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ if(failCount[gun_index] < 5){
|
|
|
+ failCount[gun_index]++;
|
|
|
+ }
|
|
|
+
|
|
|
+ if(startTransactionFailCount[gun_index] < 5){
|
|
|
+ startTransactionFailCount[gun_index]++;
|
|
|
+ }else{
|
|
|
+ meter_transaction_Action[gun_index].ActionCmd = 0;
|
|
|
+ #ifndef DEBUG_STANDALONG
|
|
|
+ ShmStatusCodeData->AlarmCode.AlarmEvents.bits.MetertStartTransactionError = ON;
|
|
|
+ #endif
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ if(failCount[gun_index] < 5){
|
|
|
+ failCount[gun_index]++;
|
|
|
+ }
|
|
|
+
|
|
|
+ if(meterSyncTimeFailCount[gun_index] < 5){
|
|
|
+ meterSyncTimeFailCount[gun_index]++;
|
|
|
+ }else{
|
|
|
+ meter_transaction_Action[gun_index].ActionCmd = 0;
|
|
|
+ #ifndef DEBUG_STANDALONG
|
|
|
+ ShmStatusCodeData->AlarmCode.AlarmEvents.bits.MeterSyncTimeError = ON;
|
|
|
+ #endif
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
- break;
|
|
|
- case 1:
|
|
|
- if(readVoltage(&meter_info[meterIndex]) != FAIL)
|
|
|
+
|
|
|
+ //if stop Transaction and record
|
|
|
+ if(meter_transaction_Action[gun_index].ActionCmd == 2)
|
|
|
{
|
|
|
- #ifndef DEBUG_STANDALONG
|
|
|
- /*
|
|
|
- * TODO:
|
|
|
- * 1. Synchronize data to share memory
|
|
|
- */
|
|
|
-
|
|
|
- ShmSysConfigAndInfo->SysInfo.DcMeterInfo[meterIndex].presetVoltage = meter_info[meterIndex].presetVoltage;
|
|
|
- #ifdef DEBUG_SHAREMEM_LOG
|
|
|
- DEBUG_INFO("shm Output voltage %d : %.3f V\n", meterIndex, ShmSysConfigAndInfo->SysInfo.DcMeterInfo[meterIndex].presetVoltage);
|
|
|
- #endif
|
|
|
- #else
|
|
|
- DEBUG_INFO("Output voltage %d : %.3f V\n", meterIndex, meter_info[meterIndex].presetVoltage);
|
|
|
- #endif//DEBUG_STANDALONG
|
|
|
- //pollingIndex++;
|
|
|
- failCount[meterIndex] = 0;
|
|
|
+ PR("<<<<<<<<< stopMeterTransaction : %d >>>>>>>>>\n", gun_index);
|
|
|
+ if(stopMeterTransaction(gun_index,&meter_transaction_Action[gun_index],&meter_transaction_Result[gun_index]) != FAIL)
|
|
|
+ {
|
|
|
+ #ifndef DEBUG_STANDALONG
|
|
|
+ /*
|
|
|
+ * TODO:
|
|
|
+ * 1. Synchronize data to share memory
|
|
|
+ */
|
|
|
+
|
|
|
+ ShmSysConfigAndInfo->SysInfo.DcMeterTransactionResult[gun_index].paginationCounter =
|
|
|
+ meter_transaction_Result[gun_index].paginationCounter;
|
|
|
+
|
|
|
+ sprintf(&ShmSysConfigAndInfo->SysInfo.DcMeterTransactionResult[gun_index].head.transactionId,
|
|
|
+ "%s",meter_transaction_Result[gun_index].head.transactionId);
|
|
|
+
|
|
|
+ sprintf(&ShmSysConfigAndInfo->SysInfo.DcMeterTransactionResult[gun_index].head.evseId,
|
|
|
+ "%s",meter_transaction_Result[gun_index].head.evseId);
|
|
|
+
|
|
|
+ sprintf(&ShmSysConfigAndInfo->SysInfo.DcMeterTransactionResult[gun_index].head.clientId,
|
|
|
+ "%s",meter_transaction_Result[gun_index].head.clientId);
|
|
|
+
|
|
|
+ ShmSysConfigAndInfo->SysInfo.DcMeterTransactionResult[gun_index].head.tariffId =
|
|
|
+ meter_transaction_Result[gun_index].head.tariffId;
|
|
|
+
|
|
|
+ ShmSysConfigAndInfo->SysInfo.DcMeterTransactionResult[gun_index].head.cableId =
|
|
|
+ meter_transaction_Result[gun_index].head.cableId;
|
|
|
+
|
|
|
+ sprintf(&ShmSysConfigAndInfo->SysInfo.DcMeterTransactionResult[gun_index].head.userData,
|
|
|
+ "%s",meter_transaction_Result[gun_index].head.userData);
|
|
|
+
|
|
|
+ sprintf(&ShmSysConfigAndInfo->SysInfo.DcMeterTransactionResult[gun_index].timestampStart,
|
|
|
+ "%s",meter_transaction_Result[gun_index].timestampStart);
|
|
|
+
|
|
|
+ sprintf(&ShmSysConfigAndInfo->SysInfo.DcMeterTransactionResult[gun_index].timestampStop,
|
|
|
+ "%s",meter_transaction_Result[gun_index].timestampStop);
|
|
|
+
|
|
|
+ ShmSysConfigAndInfo->SysInfo.DcMeterTransactionResult[gun_index].transactionDuration =
|
|
|
+ meter_transaction_Result[gun_index].transactionDuration;
|
|
|
+
|
|
|
+ ShmSysConfigAndInfo->SysInfo.DcMeterTransactionResult[gun_index].transactionStatus =
|
|
|
+ meter_transaction_Result[gun_index].transactionStatus;
|
|
|
+
|
|
|
+ sprintf(&ShmSysConfigAndInfo->SysInfo.DcMeterTransactionResult[gun_index].energyUnit,
|
|
|
+ "%s",meter_transaction_Result[gun_index].energyUnit);
|
|
|
+
|
|
|
+ ShmSysConfigAndInfo->SysInfo.DcMeterTransactionResult[gun_index].energyImport =
|
|
|
+ meter_transaction_Result[gun_index].energyImport;
|
|
|
+
|
|
|
+ ShmSysConfigAndInfo->SysInfo.DcMeterTransactionResult[gun_index].energyImportTotalStart =
|
|
|
+ meter_transaction_Result[gun_index].energyImportTotalStart;
|
|
|
+
|
|
|
+ ShmSysConfigAndInfo->SysInfo.DcMeterTransactionResult[gun_index].energyImportTotalStop =
|
|
|
+ meter_transaction_Result[gun_index].energyImportTotalStop;
|
|
|
+
|
|
|
+ ShmSysConfigAndInfo->SysInfo.DcMeterTransactionResult[gun_index].energyExport =
|
|
|
+ meter_transaction_Result[gun_index].energyExport;
|
|
|
+
|
|
|
+ ShmSysConfigAndInfo->SysInfo.DcMeterTransactionResult[gun_index].energyExportTotalStart =
|
|
|
+ meter_transaction_Result[gun_index].energyExportTotalStart;
|
|
|
+
|
|
|
+ ShmSysConfigAndInfo->SysInfo.DcMeterTransactionResult[gun_index].energyExportTotalStop =
|
|
|
+ meter_transaction_Result[gun_index].energyExportTotalStop;
|
|
|
+
|
|
|
+ sprintf(&ShmSysConfigAndInfo->SysInfo.DcMeterTransactionResult[gun_index].signature,
|
|
|
+ "%s",meter_transaction_Result[gun_index].signature);
|
|
|
+
|
|
|
+
|
|
|
+ #ifdef DEBUG_SHAREMEM_TRANSACTION_RESULT_LOG
|
|
|
+ DEBUG_INFO(" ================================= ShareMem Transaction Result : %d ================================= \n",gun_index);
|
|
|
+ DEBUG_INFO(" %-26s : %d\n", "paginationCounter", ShmSysConfigAndInfo->SysInfo.DcMeterTransactionResult[gun_index].paginationCounter);
|
|
|
+ DEBUG_INFO(" %-26s : %s\n", "transactionId", ShmSysConfigAndInfo->SysInfo.DcMeterTransactionResult[gun_index].head.transactionId);
|
|
|
+ DEBUG_INFO(" %-26s : %s\n", "evseId", ShmSysConfigAndInfo->SysInfo.DcMeterTransactionResult[gun_index].head.evseId);
|
|
|
+ DEBUG_INFO(" %-26s : %s\n", "clientId", ShmSysConfigAndInfo->SysInfo.DcMeterTransactionResult[gun_index].head.clientId);
|
|
|
+ DEBUG_INFO(" %-26s : %d\n", "tariffId", ShmSysConfigAndInfo->SysInfo.DcMeterTransactionResult[gun_index].head.tariffId);
|
|
|
+ DEBUG_INFO(" %-26s : %d\n", "cableId", ShmSysConfigAndInfo->SysInfo.DcMeterTransactionResult[gun_index].head.cableId);
|
|
|
+ DEBUG_INFO(" %-26s : %s\n", "userData", ShmSysConfigAndInfo->SysInfo.DcMeterTransactionResult[gun_index].head.userData);
|
|
|
+ DEBUG_INFO(" %-26s : %s\n", "timestampStart", ShmSysConfigAndInfo->SysInfo.DcMeterTransactionResult[gun_index].timestampStart);
|
|
|
+ DEBUG_INFO(" %-26s : %s\n", "timestampStop", ShmSysConfigAndInfo->SysInfo.DcMeterTransactionResult[gun_index].timestampStop);
|
|
|
+ DEBUG_INFO(" %-26s : %d\n", "transactionDuration", ShmSysConfigAndInfo->SysInfo.DcMeterTransactionResult[gun_index].transactionDuration);
|
|
|
+ DEBUG_INFO(" %-26s : %d\n", "transactionStatus", ShmSysConfigAndInfo->SysInfo.DcMeterTransactionResult[gun_index].transactionStatus);
|
|
|
+ DEBUG_INFO(" %-26s : %s\n", "energyUnit", ShmSysConfigAndInfo->SysInfo.DcMeterTransactionResult[gun_index].energyUnit);
|
|
|
+ DEBUG_INFO(" %-26s : %.3f\n", "energyImport", ShmSysConfigAndInfo->SysInfo.DcMeterTransactionResult[gun_index].energyImport);
|
|
|
+ DEBUG_INFO(" %-26s : %.3f\n", "energyImportTotalStart", ShmSysConfigAndInfo->SysInfo.DcMeterTransactionResult[gun_index].energyImportTotalStart);
|
|
|
+ DEBUG_INFO(" %-26s : %.3f\n", "energyImportTotalStop", ShmSysConfigAndInfo->SysInfo.DcMeterTransactionResult[gun_index].energyImportTotalStop);
|
|
|
+ DEBUG_INFO(" %-26s : %.3f\n", "energyExport", ShmSysConfigAndInfo->SysInfo.DcMeterTransactionResult[gun_index].energyExport);
|
|
|
+ DEBUG_INFO(" %-26s : %.3f\n", "energyExportTotalStart", ShmSysConfigAndInfo->SysInfo.DcMeterTransactionResult[gun_index].energyExportTotalStart);
|
|
|
+ DEBUG_INFO(" %-26s : %.3f\n", "energyExportTotalStop", ShmSysConfigAndInfo->SysInfo.DcMeterTransactionResult[gun_index].energyExportTotalStop);
|
|
|
+ DEBUG_INFO(" %-26s : %s\n\n\n\n\n\n", "signature", ShmSysConfigAndInfo->SysInfo.DcMeterTransactionResult[gun_index].signature);
|
|
|
+ #endif
|
|
|
+
|
|
|
+ #else
|
|
|
+ #ifdef DEBUG_STANDALONE_TRANSACTION_RESULT_LOG
|
|
|
+ DEBUG_INFO(" ================================= Standalone Transaction Result : %d ================================= \n",gun_index);
|
|
|
+ DEBUG_INFO(" %-26s : %d\n", "paginationCounter", meter_transaction_Result[gun_index].paginationCounter);
|
|
|
+ DEBUG_INFO(" %-26s : %s\n", "transactionId", meter_transaction_Result[gun_index].head.transactionId);
|
|
|
+ DEBUG_INFO(" %-26s : %s\n", "evseId", meter_transaction_Result[gun_index].head.evseId);
|
|
|
+ DEBUG_INFO(" %-26s : %s\n", "clientId", meter_transaction_Result[gun_index].head.clientId);
|
|
|
+ DEBUG_INFO(" %-26s : %d\n", "tariffId", meter_transaction_Result[gun_index].head.tariffId);
|
|
|
+ DEBUG_INFO(" %-26s : %d\n", "cableId", meter_transaction_Result[gun_index].head.cableId);
|
|
|
+ DEBUG_INFO(" %-26s : %s\n", "userData", meter_transaction_Result[gun_index].head.userData);
|
|
|
+ DEBUG_INFO(" %-26s : %s\n", "timestampStart", meter_transaction_Result[gun_index].timestampStart);
|
|
|
+ DEBUG_INFO(" %-26s : %s\n", "timestampStop", meter_transaction_Result[gun_index].timestampStop);
|
|
|
+ DEBUG_INFO(" %-26s : %d\n", "transactionDuration", meter_transaction_Result[gun_index].transactionDuration);
|
|
|
+ DEBUG_INFO(" %-26s : %d\n", "transactionStatus", meter_transaction_Result[gun_index].transactionStatus);
|
|
|
+ DEBUG_INFO(" %-26s : %s\n", "energyUnit", meter_transaction_Result[gun_index].energyUnit);
|
|
|
+ DEBUG_INFO(" %-26s : %.3f\n", "energyImport", meter_transaction_Result[gun_index].energyImport);
|
|
|
+ DEBUG_INFO(" %-26s : %.3f\n", "energyImportTotalStart", meter_transaction_Result[gun_index].energyImportTotalStart);
|
|
|
+ DEBUG_INFO(" %-26s : %.3f\n", "energyImportTotalStop", meter_transaction_Result[gun_index].energyImportTotalStop);
|
|
|
+ DEBUG_INFO(" %-26s : %.3f\n", "energyExport", meter_transaction_Result[gun_index].energyExport);
|
|
|
+ DEBUG_INFO(" %-26s : %.3f\n", "energyExportTotalStart", meter_transaction_Result[gun_index].energyExportTotalStart);
|
|
|
+ DEBUG_INFO(" %-26s : %.3f\n", "energyExportTotalStop", gun_index, meter_transaction_Result[gun_index].energyExportTotalStop);
|
|
|
+ DEBUG_INFO(" %-26s : %s\n\n\n\n\n\n", "signature", meter_transaction_Result[gun_index].signature);
|
|
|
+ #endif
|
|
|
+ #endif//DEBUG_STANDALONG
|
|
|
+
|
|
|
+ failCount[gun_index] = 0;
|
|
|
+ stopTransactionFailCount[gun_index] = 0;
|
|
|
+ #ifndef DEBUG_STANDALONG
|
|
|
+ ShmStatusCodeData->AlarmCode.AlarmEvents.bits.MetertStopTransactionError = OFF;
|
|
|
+ #endif
|
|
|
+
|
|
|
+ PR("<<<<<<<<< Get Transaction OCMF : %d >>>>>>>>>\n", gun_index);
|
|
|
+ //auto OCMF
|
|
|
+ if(readMeterTransactionOCMF(gun_index,&meter_transaction_Action[gun_index]) != FAIL)
|
|
|
+ {
|
|
|
+ #ifndef DEBUG_STANDALONG
|
|
|
+ /*
|
|
|
+ * TODO:
|
|
|
+ * 1. Synchronize data to share memory
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+ sprintf(&ShmSysConfigAndInfo->SysInfo.DcMeterTransactionAction[gun_index].transactionOCMF,
|
|
|
+ "%s",meter_transaction_Action[gun_index].transactionOCMF);
|
|
|
+
|
|
|
+ PR("OCMF : %s \n", ShmSysConfigAndInfo->SysInfo.DcMeterTransactionAction[gun_index].transactionOCMF,
|
|
|
+ "%s",meter_transaction_Action[gun_index].transactionOCMF);
|
|
|
+
|
|
|
+ #ifdef DEBUG_SHAREMEM_TRANSACTION_RESULT_LOG
|
|
|
+ DEBUG_INFO("shm transactionOCMF %d : %s\n", gun_index, ShmSysConfigAndInfo->SysInfo.DcMeterTransactionAction[gun_index].transactionOCMF);
|
|
|
+ #endif
|
|
|
+
|
|
|
+ #else
|
|
|
+ #ifdef DEBUG_STANDALONE_TRANSACTION_RESULT_LOG
|
|
|
+ DEBUG_INFO("transactionOCMF %d : %s\n", gun_index, meter_transaction_Action[gun_index].transactionOCMF);
|
|
|
+ #endif
|
|
|
+ #endif//DEBUG_STANDALONG
|
|
|
+
|
|
|
+ meter_transaction_Action[gun_index].OcmfInfoReady = 1;
|
|
|
+
|
|
|
+ failCount[gun_index] = 0;
|
|
|
+ getTransactionOcmfFailCount[gun_index] = 0;
|
|
|
+ meter_transaction_Action[gun_index].ActionCmd = 0;
|
|
|
+ #ifndef DEBUG_STANDALONG
|
|
|
+ ShmStatusCodeData->AlarmCode.AlarmEvents.bits.MetertGetTransactionOcmfError = OFF;
|
|
|
+ #endif
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+
|
|
|
+ meter_transaction_Action[gun_index].OcmfInfoReady = 0;
|
|
|
+
|
|
|
+ if(failCount[gun_index] < 5){
|
|
|
+ failCount[gun_index]++;
|
|
|
+ }
|
|
|
+
|
|
|
+ if(getTransactionOcmfFailCount[gun_index] < 5){
|
|
|
+ getTransactionOcmfFailCount[gun_index]++;
|
|
|
+ }else{
|
|
|
+ meter_transaction_Action[gun_index].ActionCmd = 0;
|
|
|
+ #ifndef DEBUG_STANDALONG
|
|
|
+ ShmStatusCodeData->AlarmCode.AlarmEvents.bits.MetertGetTransactionOcmfError = ON;
|
|
|
+ #endif
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ if(failCount[gun_index] < 5){
|
|
|
+ failCount[gun_index]++;
|
|
|
+ }
|
|
|
+
|
|
|
+ if(stopTransactionFailCount[gun_index] < 5){
|
|
|
+ stopTransactionFailCount[gun_index]++;
|
|
|
+ }else{
|
|
|
+ meter_transaction_Action[gun_index].ActionCmd = 0;
|
|
|
+ #ifndef DEBUG_STANDALONG
|
|
|
+ ShmStatusCodeData->AlarmCode.AlarmEvents.bits.MetertStopTransactionError = ON;
|
|
|
+ #endif
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
- else
|
|
|
+
|
|
|
+
|
|
|
+ //if stop Transaction and record
|
|
|
+ if(meter_read_transaction_record[gun_index].ActionCmd == 1)
|
|
|
{
|
|
|
- if(failCount[meterIndex] < 10)
|
|
|
- failCount[meterIndex]++;
|
|
|
+ meter_read_transaction_record[gun_index].OcmfInfoReady = 0;
|
|
|
+
|
|
|
+ #ifndef DEBUG_STANDALONG
|
|
|
+ strcpy(meter_read_transaction_record[gun_index].head.transactionId, ShmSysConfigAndInfo->SysInfo.DcMeterReadTransactionRecord[gun_index].head.transactionId);
|
|
|
+ #endif
|
|
|
+
|
|
|
+ PR("<<<<<<<<< Get Record Transaction OCMF : %d - ID : %s>>>>>>>>>\n", gun_index,meter_read_transaction_record[gun_index].head.transactionId);
|
|
|
+ //auto OCMF
|
|
|
+ if(readMeterTransactionOCMF(gun_index,&meter_read_transaction_record[gun_index]) != FAIL)
|
|
|
+ {
|
|
|
+ #ifndef DEBUG_STANDALONG
|
|
|
+ /*
|
|
|
+ * TODO:
|
|
|
+ * 1. Synchronize data to share memory
|
|
|
+ */
|
|
|
+
|
|
|
+
|
|
|
+ sprintf(&ShmSysConfigAndInfo->SysInfo.DcMeterReadTransactionRecord[gun_index].transactionOCMF,
|
|
|
+ "%s",meter_read_transaction_record[gun_index].transactionOCMF);
|
|
|
+
|
|
|
+ PR("OCMF : %s \n", ShmSysConfigAndInfo->SysInfo.DcMeterReadTransactionRecord[gun_index].transactionOCMF,
|
|
|
+ "%s",meter_read_transaction_record[gun_index].transactionOCMF);
|
|
|
+
|
|
|
+
|
|
|
+ #ifdef DEBUG_SHAREMEM_TRANSACTION_RESULT_LOG
|
|
|
+ DEBUG_INFO("shm transactionOCMF %d : %s\n", gun_index, ShmSysConfigAndInfo->SysInfo.DcMeterReadTransactionRecord[gun_index].transactionOCMF);
|
|
|
+ #endif
|
|
|
+
|
|
|
+ #else
|
|
|
+ #ifdef DEBUG_STANDALONE_TRANSACTION_RESULT_LOG
|
|
|
+ DEBUG_INFO("transactionOCMF %d : %s\n", gun_index, meter_read_transaction_record[gun_index].transactionOCMF);
|
|
|
+ #endif
|
|
|
+ #endif//DEBUG_STANDALONG
|
|
|
+
|
|
|
+ meter_read_transaction_record[gun_index].OcmfInfoReady = 1;
|
|
|
+
|
|
|
+ failCount[gun_index] = 0;
|
|
|
+ getTransactionOcmfFailCount[gun_index] = 0;
|
|
|
+ meter_read_transaction_record[gun_index].ActionCmd = 0;
|
|
|
+ #ifndef DEBUG_STANDALONG
|
|
|
+ ShmStatusCodeData->AlarmCode.AlarmEvents.bits.MetertGetTransactionOcmfError = OFF;
|
|
|
+ #endif
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+
|
|
|
+ meter_read_transaction_record[gun_index].OcmfInfoReady = 0;
|
|
|
+
|
|
|
+ if(failCount[gun_index] < 5){
|
|
|
+ failCount[gun_index]++;
|
|
|
+ }
|
|
|
+
|
|
|
+ if(getTransactionOcmfFailCount[gun_index] < 5){
|
|
|
+ getTransactionOcmfFailCount[gun_index]++;
|
|
|
+ }else{
|
|
|
+ meter_read_transaction_record[gun_index].ActionCmd = 0;
|
|
|
+ getTransactionOcmfFailCount[gun_index] = 0;
|
|
|
+ #ifndef DEBUG_STANDALONG
|
|
|
+ meter_read_transaction_record[gun_index].OcmfInfoReady = 2;
|
|
|
+ //ShmStatusCodeData->AlarmCode.AlarmEvents.bits.MetertGetTransactionOcmfError = ON;
|
|
|
+ #endif
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
}
|
|
|
- break;
|
|
|
- case 2:
|
|
|
- if(readPower(&meter_info[meterIndex]) != FAIL)
|
|
|
+
|
|
|
+ #ifndef DEBUG_STANDALONG
|
|
|
+ ShmSysConfigAndInfo->SysInfo.DcMeterReadTransactionRecord[gun_index].ActionCmd = meter_read_transaction_record[gun_index].ActionCmd;
|
|
|
+ ShmSysConfigAndInfo->SysInfo.DcMeterTransactionAction[gun_index].ActionCmd = meter_transaction_Action[gun_index].ActionCmd;
|
|
|
+ ShmSysConfigAndInfo->SysInfo.DcMeterReadTransactionRecord[gun_index].OcmfInfoReady = meter_read_transaction_record[gun_index].OcmfInfoReady;
|
|
|
+ ShmSysConfigAndInfo->SysInfo.DcMeterTransactionAction[gun_index].OcmfInfoReady = meter_transaction_Action[gun_index].OcmfInfoReady;
|
|
|
+ #endif
|
|
|
+
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+
|
|
|
+ if(readMeterLivemeasure(gun_index,&meter_info[gun_index]) != FAIL)
|
|
|
{
|
|
|
- #ifndef DEBUG_STANDALONG
|
|
|
- /*
|
|
|
- * TODO:
|
|
|
- * 1. Synchronize data to share memory
|
|
|
- */
|
|
|
-
|
|
|
- ShmSysConfigAndInfo->SysInfo.DcMeterInfo[meterIndex].presentPower = meter_info[meterIndex].presentPower;
|
|
|
- #ifdef DEBUG_SHAREMEM_LOG
|
|
|
- DEBUG_INFO("shm Output power %d : %.3f kw\n", meterIndex, ShmSysConfigAndInfo->SysInfo.DcMeterInfo[meterIndex].presentPower);
|
|
|
- #endif
|
|
|
- #else
|
|
|
- DEBUG_INFO("Output power %d : %.3f kw\n", meterIndex, meter_info[meterIndex].presentPower);
|
|
|
- #endif//DEBUG_STANDALONG
|
|
|
- //pollingIndex++;
|
|
|
- failCount[meterIndex] = 0;
|
|
|
+ #ifndef DEBUG_STANDALONG
|
|
|
+ /*
|
|
|
+ * TODO:
|
|
|
+ * 1. Synchronize data to share memory
|
|
|
+ */
|
|
|
+ ShmSysConfigAndInfo->SysInfo.DcMeterInfo[gun_index].presetVoltage = meter_info[gun_index].presetVoltage;
|
|
|
+ ShmSysConfigAndInfo->SysInfo.DcMeterInfo[gun_index].presentCurrent = meter_info[gun_index].presentCurrent;
|
|
|
+ ShmSysConfigAndInfo->SysInfo.DcMeterInfo[gun_index].presentPower = meter_info[gun_index].presentPower;
|
|
|
+ ShmSysConfigAndInfo->SysInfo.DcMeterInfo[gun_index].totlizeImportEnergy = meter_info[gun_index].totlizeImportEnergy;
|
|
|
+ ShmSysConfigAndInfo->SysInfo.DcMeterInfo[gun_index].totlizeExportEnergy = meter_info[gun_index].totlizeExportEnergy;
|
|
|
+ sprintf(&ShmSysConfigAndInfo->SysInfo.DcMeterInfo[gun_index].timestamp, "%s",meter_info[gun_index].timestamp);
|
|
|
+
|
|
|
+ #ifdef DEBUG_SHAREMEM_LIVEMEASURE_LOG
|
|
|
+ //evern 60s record 1s
|
|
|
+ if((RecordLogTimerCount % 60 == 0)
|
|
|
+ {
|
|
|
+ DEBUG_INFO(" ================================= ShareMem Livemeasure : %d ================================= \n",gun_index);
|
|
|
+ DEBUG_INFO(" %-26s : %.3f V\n", "Output voltage", ShmSysConfigAndInfo->SysInfo.DcMeterInfo[gun_index].presetVoltage);
|
|
|
+ DEBUG_INFO(" %-26s : %.3f A\n", "Output current", ShmSysConfigAndInfo->SysInfo.DcMeterInfo[gun_index].presentCurrent);
|
|
|
+ DEBUG_INFO(" %-26s : %.3f kw\n", "Output power", ShmSysConfigAndInfo->SysInfo.DcMeterInfo[gun_index].presentPower);
|
|
|
+ DEBUG_INFO(" %-26s : %.3f kwh\n", "Totalize import energy", ShmSysConfigAndInfo->SysInfo.DcMeterInfo[gun_index].totlizeImportEnergy);
|
|
|
+ DEBUG_INFO(" %-26s : %.3f kwh\n", "Totalize export energy", ShmSysConfigAndInfo->SysInfo.DcMeterInfo[gun_index].totlizeExportEnergy);
|
|
|
+ DEBUG_INFO(" %-26s : %s\n\n\n\n\n\n", "timestamp", ShmSysConfigAndInfo->SysInfo.DcMeterInfo[gun_index].timestamp);
|
|
|
+ }
|
|
|
+ #endif
|
|
|
+
|
|
|
+ #else
|
|
|
+
|
|
|
+ #ifdef DEBUG_STANDALONE_LIVEMEASURE_LOG
|
|
|
+ DEBUG_INFO(" ================================= Standalone Livemeasure : %d ================================= \n",gun_index);
|
|
|
+ DEBUG_INFO(" %-26s : %.3f V\n", "Output voltage", meter_info[gun_index].presetVoltage);
|
|
|
+ DEBUG_INFO(" %-26s : %.3f A\n", "Output current", meter_info[gun_index].presentCurrent);
|
|
|
+ DEBUG_INFO(" %-26s : %.3f kw\n", "Output power", meter_info[gun_index].presentPower);
|
|
|
+ DEBUG_INFO(" %-26s : %.3f kwh\n", "Totalize import energy", meter_info[gun_index].totlizeImportEnergy);
|
|
|
+ DEBUG_INFO(" %-26s : %.3f kwh\n", "Totalize export energy", meter_info[gun_index].totlizeExportEnergy);
|
|
|
+ DEBUG_INFO(" %-26s : %s\n\n\n\n\n\n", "timestamp", meter_info[gun_index].timestamp);
|
|
|
+ #endif
|
|
|
+
|
|
|
+ #endif//DEBUG_STANDALONG
|
|
|
+
|
|
|
+ failCount[gun_index] = 0;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- if(failCount[meterIndex] < 10)
|
|
|
- failCount[meterIndex]++;
|
|
|
+ PR("read Livemeasure fail : %d \n", gun_index);
|
|
|
+ if(failCount[gun_index] < 5)
|
|
|
+ failCount[gun_index]++;
|
|
|
}
|
|
|
- break;
|
|
|
- case 3:
|
|
|
- if(readEnergy(&meter_info[meterIndex]) != FAIL)
|
|
|
+
|
|
|
+
|
|
|
+ if(readMeterStatusInfo(gun_index,&meter_status_info[gun_index]) != FAIL)
|
|
|
{
|
|
|
- #ifndef DEBUG_STANDALONG
|
|
|
- /*
|
|
|
- * TODO:
|
|
|
- * 1. Synchronize data to share memory
|
|
|
- */
|
|
|
-
|
|
|
- ShmSysConfigAndInfo->SysInfo.DcMeterInfo[meterIndex].totlizeImportEnergy = meter_info[meterIndex].totlizeImportEnergy;
|
|
|
- #ifdef DEBUG_SHAREMEM_LOG
|
|
|
- DEBUG_INFO("shm Totalize import energy %d : %.3f kwh\n", meterIndex, ShmSysConfigAndInfo->SysInfo.DcMeterInfo[meterIndex].totlizeImportEnergy);
|
|
|
- #endif
|
|
|
- ShmSysConfigAndInfo->SysInfo.DcMeterInfo[meterIndex].totlizeExportEnergy = meter_info[meterIndex].totlizeExportEnergy;
|
|
|
- #ifdef DEBUG_SHAREMEM_LOG
|
|
|
- DEBUG_INFO("shm Totalize export energy %d : %.3f kwh\n", meterIndex, ShmSysConfigAndInfo->SysInfo.DcMeterInfo[meterIndex].totlizeExportEnergy);
|
|
|
- #endif
|
|
|
- #else
|
|
|
- DEBUG_INFO("Totalize import energy %d : %.3f kwh\n", meterIndex, meter_info[meterIndex].totlizeImportEnergy);
|
|
|
- DEBUG_INFO("Totalize export energy %d : %.3f kwh\n", meterIndex, meter_info[meterIndex].totlizeExportEnergy);
|
|
|
- #endif//DEBUG_STANDALONG
|
|
|
- //pollingIndex++;
|
|
|
- failCount[meterIndex] = 0;
|
|
|
+ //PR("run readMeterStatusInfo : %d \n", gun_index);
|
|
|
+ #ifndef DEBUG_STANDALONG
|
|
|
+ /*
|
|
|
+ * TODO:
|
|
|
+ * 1. Synchronize data to share memory
|
|
|
+ */
|
|
|
+ ShmSysConfigAndInfo->SysInfo.DcMeterStatusInfo[gun_index].StatusValue = meter_status_info[gun_index].StatusValue;
|
|
|
+
|
|
|
+ ShmSysConfigAndInfo->SysInfo.DcMeterStatusInfo[gun_index].MeterStatusFlag.bits.suLinkStatusIsOk =
|
|
|
+ meter_status_info[gun_index].MeterStatusFlag.bits.suLinkStatusIsOk;
|
|
|
+
|
|
|
+ ShmSysConfigAndInfo->SysInfo.DcMeterStatusInfo[gun_index].MeterStatusFlag.bits.muFatalErrorOccured =
|
|
|
+ meter_status_info[gun_index].MeterStatusFlag.bits.muFatalErrorOccured;
|
|
|
+
|
|
|
+ ShmSysConfigAndInfo->SysInfo.DcMeterStatusInfo[gun_index].MeterStatusFlag.bits.transactionIsOnGoing =
|
|
|
+ meter_status_info[gun_index].MeterStatusFlag.bits.transactionIsOnGoing;
|
|
|
+
|
|
|
+ ShmSysConfigAndInfo->SysInfo.DcMeterStatusInfo[gun_index].MeterStatusFlag.bits.tamperingIsDetected =
|
|
|
+ meter_status_info[gun_index].MeterStatusFlag.bits.tamperingIsDetected;
|
|
|
+
|
|
|
+ ShmSysConfigAndInfo->SysInfo.DcMeterStatusInfo[gun_index].MeterStatusFlag.bits.timeSyncStatusIsOk =
|
|
|
+ meter_status_info[gun_index].MeterStatusFlag.bits.timeSyncStatusIsOk;
|
|
|
+
|
|
|
+ ShmSysConfigAndInfo->SysInfo.DcMeterStatusInfo[gun_index].MeterStatusFlag.bits.overTemperatureIsDetected =
|
|
|
+ meter_status_info[gun_index].MeterStatusFlag.bits.overTemperatureIsDetected;
|
|
|
+
|
|
|
+ ShmSysConfigAndInfo->SysInfo.DcMeterStatusInfo[gun_index].MeterStatusFlag.bits.reversedVoltage =
|
|
|
+ meter_status_info[gun_index].MeterStatusFlag.bits.reversedVoltage;
|
|
|
+
|
|
|
+ ShmSysConfigAndInfo->SysInfo.DcMeterStatusInfo[gun_index].MeterStatusFlag.bits.suMeasureFailureOccurred =
|
|
|
+ meter_status_info[gun_index].MeterStatusFlag.bits.suMeasureFailureOccurred;
|
|
|
+
|
|
|
+ sprintf(&ShmSysConfigAndInfo->SysInfo.DcMeterStatusInfo[gun_index].applicationFirmwareVersion,
|
|
|
+ "%s",meter_status_info[gun_index].applicationFirmwareVersion);
|
|
|
+
|
|
|
+ sprintf(&ShmSysConfigAndInfo->SysInfo.DcMeterStatusInfo[gun_index].applicationFirmwareAuthTag,
|
|
|
+ "%s",meter_status_info[gun_index].applicationFirmwareAuthTag);
|
|
|
+
|
|
|
+ sprintf(&ShmSysConfigAndInfo->SysInfo.DcMeterStatusInfo[gun_index].legalFirmwareVersion,
|
|
|
+ "%s",meter_status_info[gun_index].legalFirmwareVersion);
|
|
|
+
|
|
|
+ sprintf(&ShmSysConfigAndInfo->SysInfo.DcMeterStatusInfo[gun_index].legalFirmwareAuthTag,
|
|
|
+ "%s",meter_status_info[gun_index].legalFirmwareAuthTag);
|
|
|
+
|
|
|
+ sprintf(&ShmSysConfigAndInfo->SysInfo.DcMeterStatusInfo[gun_index].sensorFirmwareVersion,
|
|
|
+ "%s",meter_status_info[gun_index].sensorFirmwareVersion);
|
|
|
+
|
|
|
+ sprintf(&ShmSysConfigAndInfo->SysInfo.DcMeterStatusInfo[gun_index].sensorFirmwareCrc,
|
|
|
+ "%s",meter_status_info[gun_index].sensorFirmwareCrc);
|
|
|
+
|
|
|
+ sprintf(&ShmSysConfigAndInfo->SysInfo.DcMeterStatusInfo[gun_index].ipAddress,
|
|
|
+ "%s",meter_status_info[gun_index].ipAddress);
|
|
|
+
|
|
|
+ sprintf(&ShmSysConfigAndInfo->SysInfo.DcMeterStatusInfo[gun_index].meterId,
|
|
|
+ "%s",meter_status_info[gun_index].meterId);
|
|
|
+
|
|
|
+ ShmSysConfigAndInfo->SysInfo.DcMeterStatusInfo[gun_index].MeterErrorFlag.bits.muInitIsFailed =
|
|
|
+ meter_status_info[gun_index].MeterErrorFlag.bits.muInitIsFailed;
|
|
|
+
|
|
|
+ ShmSysConfigAndInfo->SysInfo.DcMeterStatusInfo[gun_index].MeterErrorFlag.bits.suStateIsInvalid =
|
|
|
+ meter_status_info[gun_index].MeterErrorFlag.bits.suStateIsInvalid;
|
|
|
+
|
|
|
+ ShmSysConfigAndInfo->SysInfo.DcMeterStatusInfo[gun_index].MeterErrorFlag.bits.versionCheckIsFailed =
|
|
|
+ meter_status_info[gun_index].MeterErrorFlag.bits.versionCheckIsFailed;
|
|
|
+
|
|
|
+ ShmSysConfigAndInfo->SysInfo.DcMeterStatusInfo[gun_index].MeterErrorFlag.bits.muRngInitIsFailed =
|
|
|
+ meter_status_info[gun_index].MeterErrorFlag.bits.muRngInitIsFailed;
|
|
|
+
|
|
|
+ ShmSysConfigAndInfo->SysInfo.DcMeterStatusInfo[gun_index].MeterErrorFlag.bits.muDataIntegrityIsFailed =
|
|
|
+ meter_status_info[gun_index].MeterErrorFlag.bits.muDataIntegrityIsFailed;
|
|
|
+
|
|
|
+ ShmSysConfigAndInfo->SysInfo.DcMeterStatusInfo[gun_index].MeterErrorFlag.bits.muFwIntegrityIsFailed =
|
|
|
+ meter_status_info[gun_index].MeterErrorFlag.bits.muFwIntegrityIsFailed;
|
|
|
+
|
|
|
+ ShmSysConfigAndInfo->SysInfo.DcMeterStatusInfo[gun_index].MeterErrorFlag.bits.suIntegrityIsFailed =
|
|
|
+ meter_status_info[gun_index].MeterErrorFlag.bits.suIntegrityIsFailed;
|
|
|
+
|
|
|
+ ShmSysConfigAndInfo->SysInfo.DcMeterStatusInfo[gun_index].MeterErrorFlag.bits.logbookIntegrityIsFailed =
|
|
|
+ meter_status_info[gun_index].MeterErrorFlag.bits.logbookIntegrityIsFailed;
|
|
|
+
|
|
|
+ ShmSysConfigAndInfo->SysInfo.DcMeterStatusInfo[gun_index].MeterErrorFlag.bits.logbookIsFull =
|
|
|
+ meter_status_info[gun_index].MeterErrorFlag.bits.logbookIsFull;
|
|
|
+
|
|
|
+ ShmSysConfigAndInfo->SysInfo.DcMeterStatusInfo[gun_index].MeterErrorFlag.bits.memoryAccessIsFailed =
|
|
|
+ meter_status_info[gun_index].MeterErrorFlag.bits.memoryAccessIsFailed;
|
|
|
+
|
|
|
+ ShmSysConfigAndInfo->SysInfo.DcMeterStatusInfo[gun_index].MeterErrorFlag.bits.muStateIsFailed =
|
|
|
+ meter_status_info[gun_index].MeterErrorFlag.bits.muStateIsFailed;
|
|
|
+
|
|
|
+ sprintf(&ShmSysConfigAndInfo->SysInfo.DcMeterStatusInfo[gun_index].publicKey,
|
|
|
+ "%s",meter_status_info[gun_index].publicKey);
|
|
|
+
|
|
|
+ sprintf(&ShmSysConfigAndInfo->SysInfo.DcMeterStatusInfo[gun_index].publicKeyOcmf,
|
|
|
+ "%s",meter_status_info[gun_index].publicKeyOcmf);
|
|
|
+
|
|
|
+ ShmSysConfigAndInfo->SysInfo.DcMeterStatusInfo[gun_index].indexOfLastTransaction = meter_status_info[gun_index].indexOfLastTransaction;
|
|
|
+ ShmSysConfigAndInfo->SysInfo.DcMeterStatusInfo[gun_index].numberOfStoredTransactions = meter_status_info[gun_index].numberOfStoredTransactions;
|
|
|
+
|
|
|
+ #ifdef DEBUG_SHAREMEM_STATUS_INFO_LOG
|
|
|
+ //evern 60s record 1s
|
|
|
+ if((RecordLogTimerCount % 60 == 0)
|
|
|
+ {
|
|
|
+ DEBUG_INFO(" ================================= ShareMem Status info : %d ================================= \n",gun_index);
|
|
|
+ DEBUG_INFO(" %-26s : %d \n", "status-value",ShmSysConfigAndInfo->SysInfo.DcMeterStatusInfo[gun_index].StatusValue);
|
|
|
+ DEBUG_INFO(" %-26s : %d \n", "b-suLinkStatusIsOk",ShmSysConfigAndInfo->SysInfo.DcMeterStatusInfo[gun_index].MeterStatusFlag.bits.suLinkStatusIsOk);
|
|
|
+ DEBUG_INFO(" %-26s : %d \n", "b-muFatalErrorOccured",ShmSysConfigAndInfo->SysInfo.DcMeterStatusInfo[gun_index].MeterStatusFlag.bits.muFatalErrorOccured);
|
|
|
+ DEBUG_INFO(" %-26s : %d \n", "b-transactionIsOnGoing",ShmSysConfigAndInfo->SysInfo.DcMeterStatusInfo[gun_index].MeterStatusFlag.bits.transactionIsOnGoing);
|
|
|
+ DEBUG_INFO(" %-26s : %d \n", "b-tamperingIsDetected",ShmSysConfigAndInfo->SysInfo.DcMeterStatusInfo[gun_index].MeterStatusFlag.bits.tamperingIsDetected);
|
|
|
+ DEBUG_INFO(" %-26s : %d \n", "b-timeSyncStatusIsOk",ShmSysConfigAndInfo->SysInfo.DcMeterStatusInfo[gun_index].MeterStatusFlag.bits.timeSyncStatusIsOk);
|
|
|
+ DEBUG_INFO(" %-26s : %d \n", "b-overTemperatureIsDetected",ShmSysConfigAndInfo->SysInfo.DcMeterStatusInfo[gun_index].MeterStatusFlag.bits.overTemperatureIsDetected);
|
|
|
+ DEBUG_INFO(" %-26s : %d \n", "b-reversedVoltage",ShmSysConfigAndInfo->SysInfo.DcMeterStatusInfo[gun_index].MeterStatusFlag.bits.reversedVoltage);
|
|
|
+ DEBUG_INFO(" %-26s : %d \n", "b-suMeasureFailureOccurred",ShmSysConfigAndInfo->SysInfo.DcMeterStatusInfo[gun_index].MeterStatusFlag.bits.suMeasureFailureOccurred);
|
|
|
+ DEBUG_INFO(" %-26s : %s \n", "applicationFirmwareVersion",ShmSysConfigAndInfo->SysInfo.DcMeterStatusInfo[gun_index].applicationFirmwareVersion);
|
|
|
+ DEBUG_INFO(" %-26s : %s \n", "applicationFirmwareAuthTag",ShmSysConfigAndInfo->SysInfo.DcMeterStatusInfo[gun_index].applicationFirmwareAuthTag);
|
|
|
+ DEBUG_INFO(" %-26s : %s \n", "legalFirmwareVersion",ShmSysConfigAndInfo->SysInfo.DcMeterStatusInfo[gun_index].legalFirmwareVersion);
|
|
|
+ DEBUG_INFO(" %-26s : %s \n", "applicationFirmwareAuthTag",ShmSysConfigAndInfo->SysInfo.DcMeterStatusInfo[gun_index].legalFirmwareAuthTag);
|
|
|
+ DEBUG_INFO(" %-26s : %s \n", "sensorFirmwareVersion",ShmSysConfigAndInfo->SysInfo.DcMeterStatusInfo[gun_index].sensorFirmwareVersion);
|
|
|
+ DEBUG_INFO(" %-26s : %s \n", "sensorFirmwareCrc",ShmSysConfigAndInfo->SysInfo.DcMeterStatusInfo[gun_index].sensorFirmwareCrc);
|
|
|
+ DEBUG_INFO(" %-26s : %s \n", "ipAddress",ShmSysConfigAndInfo->SysInfo.DcMeterStatusInfo[gun_index].ipAddress);
|
|
|
+ DEBUG_INFO(" %-26s : %s \n", "meterId",ShmSysConfigAndInfo->SysInfo.DcMeterStatusInfo[gun_index].meterId);
|
|
|
+ DEBUG_INFO(" %-26s : %d \n", "b-muInitIsFailed",ShmSysConfigAndInfo->SysInfo.DcMeterStatusInfo[gun_index].MeterErrorFlag.bits.muInitIsFailed);
|
|
|
+ DEBUG_INFO(" %-26s : %d \n", "b-suStateIsInvalid",ShmSysConfigAndInfo->SysInfo.DcMeterStatusInfo[gun_index].MeterErrorFlag.bits.suStateIsInvalid);
|
|
|
+ DEBUG_INFO(" %-26s : %d \n", "b-versionCheckIsFailed",ShmSysConfigAndInfo->SysInfo.DcMeterStatusInfo[gun_index].MeterErrorFlag.bits.versionCheckIsFailed);
|
|
|
+ DEBUG_INFO(" %-26s : %d \n", "b-muRngInitIsFailed",ShmSysConfigAndInfo->SysInfo.DcMeterStatusInfo[gun_index].MeterErrorFlag.bits.muRngInitIsFailed);
|
|
|
+ DEBUG_INFO(" %-26s : %d \n", "b-muDataIntegrityIsFailed",ShmSysConfigAndInfo->SysInfo.DcMeterStatusInfo[gun_index].MeterErrorFlag.bits.muDataIntegrityIsFailed);
|
|
|
+ DEBUG_INFO(" %-26s : %d \n", "b-muFwIntegrityIsFailed",ShmSysConfigAndInfo->SysInfo.DcMeterStatusInfo[gun_index].MeterErrorFlag.bits.muFwIntegrityIsFailed);
|
|
|
+ DEBUG_INFO(" %-26s : %d \n", "b-suIntegrityIsFailed",ShmSysConfigAndInfo->SysInfo.DcMeterStatusInfo[gun_index].MeterErrorFlag.bits.suIntegrityIsFailed);
|
|
|
+ DEBUG_INFO(" %-26s : %d \n", "b-logbookIntegrityIsFailed",ShmSysConfigAndInfo->SysInfo.DcMeterStatusInfo[gun_index].MeterErrorFlag.bits.logbookIntegrityIsFailed);
|
|
|
+ DEBUG_INFO(" %-26s : %d \n", "b-logbookIsFull",ShmSysConfigAndInfo->SysInfo.DcMeterStatusInfo[gun_index].MeterErrorFlag.bits.logbookIsFull);
|
|
|
+ DEBUG_INFO(" %-26s : %d \n", "b-memoryAccessIsFailed",ShmSysConfigAndInfo->SysInfo.DcMeterStatusInfo[gun_index].MeterErrorFlag.bits.memoryAccessIsFailed);
|
|
|
+ DEBUG_INFO(" %-26s : %d \n", "b-muStateIsFailed",ShmSysConfigAndInfo->SysInfo.DcMeterStatusInfo[gun_index].MeterErrorFlag.bits.muStateIsFailed);
|
|
|
+ DEBUG_INFO(" %-26s : %s \n", "publicKey",ShmSysConfigAndInfo->SysInfo.DcMeterStatusInfo[gun_index].publicKey);
|
|
|
+ DEBUG_INFO(" %-26s : %s \n", "publicKeyOcmf",ShmSysConfigAndInfo->SysInfo.DcMeterStatusInfo[gun_index].publicKeyOcmf);
|
|
|
+ DEBUG_INFO(" %-26s : %d \n", "indexOfLastTransaction",ShmSysConfigAndInfo->SysInfo.DcMeterStatusInfo[gun_index].indexOfLastTransaction);
|
|
|
+ DEBUG_INFO(" %-26s : %d \n\n\n\n\n\n", "numberOfStoredTransactions",ShmSysConfigAndInfo->SysInfo.DcMeterStatusInfo[gun_index].numberOfStoredTransactions);
|
|
|
+ }
|
|
|
+ #endif
|
|
|
+
|
|
|
+ #else
|
|
|
+ #ifdef DEBUG_STANDALONG_STATUS_INFO_LOG
|
|
|
+ DEBUG_INFO(" ================================= Standalong Status info : %d ================================= \n",gun_index);
|
|
|
+ DEBUG_INFO(" %-26s : %d \n", "status-value",meter_status_info[gun_index].StatusValue);
|
|
|
+ DEBUG_INFO(" %-26s : %d \n", "b-suLinkStatusIsOk",meter_status_info[gun_index].MeterStatusFlag.bits.suLinkStatusIsOk);
|
|
|
+ DEBUG_INFO(" %-26s : %d \n", "b-muFatalErrorOccured",meter_status_info[gun_index].MeterStatusFlag.bits.muFatalErrorOccured);
|
|
|
+ DEBUG_INFO(" %-26s : %d \n", "b-transactionIsOnGoing",meter_status_info[gun_index].MeterStatusFlag.bits.transactionIsOnGoing);
|
|
|
+ DEBUG_INFO(" %-26s : %d \n", "b-tamperingIsDetected",meter_status_info[gun_index].MeterStatusFlag.bits.tamperingIsDetected);
|
|
|
+ DEBUG_INFO(" %-26s : %d \n", "b-timeSyncStatusIsOk",meter_status_info[gun_index].MeterStatusFlag.bits.timeSyncStatusIsOk);
|
|
|
+ DEBUG_INFO(" %-26s : %d \n", "b-overTemperatureIsDetected",meter_status_info[gun_index].MeterStatusFlag.bits.overTemperatureIsDetected);
|
|
|
+ DEBUG_INFO(" %-26s : %d \n", "b-reversedVoltage",meter_status_info[gun_index].MeterStatusFlag.bits.reversedVoltage);
|
|
|
+ DEBUG_INFO(" %-26s : %d \n", "b-suMeasureFailureOccurred",meter_status_info[gun_index].MeterStatusFlag.bits.suMeasureFailureOccurred);
|
|
|
+ DEBUG_INFO(" %-26s : %s \n", "applicationFirmwareVersion",meter_status_info[gun_index].applicationFirmwareVersion);
|
|
|
+ DEBUG_INFO(" %-26s : %s \n", "applicationFirmwareAuthTag",meter_status_info[gun_index].applicationFirmwareAuthTag);
|
|
|
+ DEBUG_INFO(" %-26s : %s \n", "legalFirmwareVersion",meter_status_info[gun_index].legalFirmwareVersion);
|
|
|
+ DEBUG_INFO(" %-26s : %s \n", "applicationFirmwareAuthTag",meter_status_info[gun_index].legalFirmwareAuthTag);
|
|
|
+ DEBUG_INFO(" %-26s : %s \n", "sensorFirmwareVersion",meter_status_info[gun_index].sensorFirmwareVersion);
|
|
|
+ DEBUG_INFO(" %-26s : %s \n", "sensorFirmwareCrc",meter_status_info[gun_index].sensorFirmwareCrc);
|
|
|
+ DEBUG_INFO(" %-26s : %s \n", "ipAddress",meter_status_info[gun_index].ipAddress);
|
|
|
+ DEBUG_INFO(" %-26s : %s \n", "meterId",meter_status_info[gun_index].meterId);
|
|
|
+ DEBUG_INFO(" %-26s : %d \n", "b-muInitIsFailed",meter_status_info[gun_index].MeterErrorFlag.bits.muInitIsFailed);
|
|
|
+ DEBUG_INFO(" %-26s : %d \n", "b-suStateIsInvalid",meter_status_info[gun_index].MeterErrorFlag.bits.suStateIsInvalid);
|
|
|
+ DEBUG_INFO(" %-26s : %d \n", "b-versionCheckIsFailed",meter_status_info[gun_index].MeterErrorFlag.bits.versionCheckIsFailed);
|
|
|
+ DEBUG_INFO(" %-26s : %d \n", "b-muRngInitIsFailed",meter_status_info[gun_index].MeterErrorFlag.bits.muRngInitIsFailed);
|
|
|
+ DEBUG_INFO(" %-26s : %d \n", "b-muDataIntegrityIsFailed",meter_status_info[gun_index].MeterErrorFlag.bits.muDataIntegrityIsFailed);
|
|
|
+ DEBUG_INFO(" %-26s : %d \n", "b-muFwIntegrityIsFailed",meter_status_info[gun_index].MeterErrorFlag.bits.muFwIntegrityIsFailed);
|
|
|
+ DEBUG_INFO(" %-26s : %d \n", "b-suIntegrityIsFailed",meter_status_info[gun_index].MeterErrorFlag.bits.suIntegrityIsFailed);
|
|
|
+ DEBUG_INFO(" %-26s : %d \n", "b-logbookIntegrityIsFailed",meter_status_info[gun_index].MeterErrorFlag.bits.logbookIntegrityIsFailed);
|
|
|
+ DEBUG_INFO(" %-26s : %d \n", "b-logbookIsFull",meter_status_info[gun_index].MeterErrorFlag.bits.logbookIsFull);
|
|
|
+ DEBUG_INFO(" %-26s : %d \n", "bits-memoryAccessIsFailed",meter_status_info[gun_index].MeterErrorFlag.bits.memoryAccessIsFailed);
|
|
|
+ DEBUG_INFO(" %-26s : %d \n", "bits-muStateIsFailed",meter_status_info[gun_index].MeterErrorFlag.bits.muStateIsFailed);
|
|
|
+ DEBUG_INFO(" %-26s : %s \n", "publicKey",meter_status_info[gun_index].publicKey);
|
|
|
+ DEBUG_INFO(" %-26s : %s \n", "publicKeyOcmf",meter_status_info[gun_index].publicKeyOcmf);
|
|
|
+ DEBUG_INFO(" %-26s : %d \n", "indexOfLastTransaction",meter_status_info[gun_index].indexOfLastTransaction);
|
|
|
+ DEBUG_INFO(" %-26s : %d \n\n\n\n\n\n", "numberOfStoredTransactions",meter_status_info[gun_index].numberOfStoredTransactions);
|
|
|
+ #endif
|
|
|
+ #endif//DEBUG_STANDALONG
|
|
|
+
|
|
|
+ //sync meter systime
|
|
|
+ if(meter_status_info[gun_index].MeterStatusFlag.bits.suLinkStatusIsOk == 1 &&
|
|
|
+ meter_status_info[gun_index].MeterStatusFlag.bits.timeSyncStatusIsOk == 0)
|
|
|
+ {
|
|
|
+ configure_meter_time(gun_index);
|
|
|
+ }
|
|
|
+
|
|
|
+ failCount[gun_index] = 0;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- if(failCount[meterIndex] < 10)
|
|
|
- failCount[meterIndex]++;
|
|
|
+ PR("read status fail : %d \n", gun_index);
|
|
|
+ if(failCount[gun_index] < 5)
|
|
|
+ failCount[gun_index]++;
|
|
|
}
|
|
|
- break;
|
|
|
- default:
|
|
|
- pollingIndex = 0;
|
|
|
- break;
|
|
|
}
|
|
|
- }
|
|
|
|
|
|
- //meterIndex++;
|
|
|
- }
|
|
|
|
|
|
-
|
|
|
- if(failCount[meterIndex] >= 8)
|
|
|
- {
|
|
|
- //if(ShmStatusCodeData->AlarmCode.AlarmEvents.bits.MeterCommTimeout)
|
|
|
- //{
|
|
|
- DEBUG_ERROR("Meter communication timeout");
|
|
|
- ShmSysConfigAndInfo->SysInfo.DcMeterInfo[meterIndex].LinkStatus = 2;
|
|
|
- ShmStatusCodeData->AlarmCode.AlarmEvents.bits.MeterCommTimeout = ON;
|
|
|
- //}
|
|
|
+ if(failCount[gun_index] >= 5)
|
|
|
+ {
|
|
|
+ //if(ShmStatusCodeData->AlarmCode.AlarmEvents.bits.MeterCommTimeout)
|
|
|
+ //{
|
|
|
+ DEBUG_ERROR("Meter %d communication timeout",gun_index);
|
|
|
+ #ifndef DEBUG_STANDALONG
|
|
|
+ ShmSysConfigAndInfo->SysInfo.DcMeterInfo[gun_index].LinkStatus = 3;
|
|
|
+ ShmStatusCodeData->AlarmCode.AlarmEvents.bits.MeterCommTimeout = ON;
|
|
|
+ #else
|
|
|
+ meter_info[gun_index].LinkStatus = 3;
|
|
|
+ #endif
|
|
|
+ //}
|
|
|
+ PR("failconut fail : %d \n", gun_index);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+
|
|
|
+ if(meter_status_info[gun_index].MeterStatusFlag.bits.timeSyncStatusIsOk == 1 &&
|
|
|
+ meter_status_info[gun_index].MeterStatusFlag.bits.suLinkStatusIsOk == 1)
|
|
|
+ {
|
|
|
+ meter_info[gun_index].LinkStatus = 2;
|
|
|
+ }else{
|
|
|
+ meter_info[gun_index].LinkStatus = 1;
|
|
|
+ }
|
|
|
+
|
|
|
+ #ifndef DEBUG_STANDALONG
|
|
|
+ ShmSysConfigAndInfo->SysInfo.DcMeterInfo[gun_index].LinkStatus = meter_info[gun_index].LinkStatus;
|
|
|
+ ShmStatusCodeData->AlarmCode.AlarmEvents.bits.MeterCommTimeout = OFF;
|
|
|
+ //linkstatus 1 = los meter slave, 2 is can to be Transaction
|
|
|
+ if(ShmSysConfigAndInfo->SysInfo.DcMeterInfo[gun_index].LinkStatus == 1)
|
|
|
+ {
|
|
|
+ ShmStatusCodeData->AlarmCode.AlarmEvents.bits.MeterSlaveLosLink = ON;
|
|
|
+ }else{
|
|
|
+ ShmStatusCodeData->AlarmCode.AlarmEvents.bits.MeterSlaveLosLink = OFF;
|
|
|
+ }
|
|
|
+ #endif
|
|
|
+ //PR("failconut pass : %d \n", gun_index);
|
|
|
+ }
|
|
|
}
|
|
|
- else
|
|
|
- {
|
|
|
- ShmSysConfigAndInfo->SysInfo.DcMeterInfo[meterIndex].LinkStatus = 1;
|
|
|
- ShmStatusCodeData->AlarmCode.AlarmEvents.bits.MeterCommTimeout = OFF;
|
|
|
+
|
|
|
+ #ifndef DEBUG_STANDALONG
|
|
|
+ DEBUG_INFO("shm Meter %d - LinkStatus %d : failCount: %d ActionCmd: %d OcmpInfoReady: %d\n RecordActionCmd: %d RecordOcmpInfoReady: %d", gun_index,
|
|
|
+ meter_info[gun_index].LinkStatus,failCount[gun_index] ,
|
|
|
+ ShmSysConfigAndInfo->SysInfo.DcMeterTransactionAction[gun_index].ActionCmd ,
|
|
|
+ ShmSysConfigAndInfo->SysInfo.DcMeterTransactionAction[gun_index].OcmfInfoReady,
|
|
|
+ ShmSysConfigAndInfo->SysInfo.DcMeterReadTransactionRecord[gun_index].ActionCmd ,
|
|
|
+ ShmSysConfigAndInfo->SysInfo.DcMeterReadTransactionRecord[gun_index].OcmfInfoReady);
|
|
|
+ PR ("=================== ModelName %s\n", ShmSysConfigAndInfo->SysConfig.ModelName);
|
|
|
+ PR("end : %d ActionCmd : %d OcmfInfoReady : %d RecordActionCmd: %d RecordOcmpInfoReady: %d \n", gun_index,ShmSysConfigAndInfo->SysInfo.DcMeterTransactionAction[gun_index].ActionCmd,
|
|
|
+ ShmSysConfigAndInfo->SysInfo.DcMeterTransactionAction[gun_index].OcmfInfoReady,
|
|
|
+ ShmSysConfigAndInfo->SysInfo.DcMeterReadTransactionRecord[gun_index].ActionCmd,
|
|
|
+ ShmSysConfigAndInfo->SysInfo.DcMeterReadTransactionRecord[gun_index].OcmfInfoReady);
|
|
|
+ PR("shm bits-suLinkStatusIsOk %d : %d \n", gun_index,ShmSysConfigAndInfo->SysInfo.DcMeterStatusInfo[gun_index].MeterStatusFlag.bits.suLinkStatusIsOk);
|
|
|
+ PR("shm bits-transactionIsOnGoing %d : %d \n", gun_index,ShmSysConfigAndInfo->SysInfo.DcMeterStatusInfo[gun_index].MeterStatusFlag.bits.transactionIsOnGoing);
|
|
|
+ PR("shm bits-timeSyncStatusIsOk %d : %d \n", gun_index,ShmSysConfigAndInfo->SysInfo.DcMeterStatusInfo[gun_index].MeterStatusFlag.bits.timeSyncStatusIsOk);
|
|
|
+
|
|
|
+
|
|
|
+ #else
|
|
|
+ DEBUG_INFO("Meter %d - LinkStatus %d : failCount: %d ActionCmd: %d OcmpInfoReady: %d RecordActionCmd: %d RecordOcmpInfoReady: %d\n", gun_index,
|
|
|
+ meter_info[gun_index].LinkStatus,failCount[gun_index] ,
|
|
|
+ meter_transaction_Action[gun_index].ActionCmd ,
|
|
|
+ meter_transaction_Action[gun_index].OcmpInfoReady,
|
|
|
+ meter_read_transaction_record[gun_index].ActionCmd ,
|
|
|
+ meter_read_transaction_record[gun_index].OcmpInfoReady);
|
|
|
+ #endif
|
|
|
+
|
|
|
+ usleep(1000000/modelnameInfo.GetGunCount);
|
|
|
+ if(gun_index == modelnameInfo.GetGunCount){
|
|
|
+ RecordLogTimerCount++;
|
|
|
}
|
|
|
|
|
|
- DEBUG_INFO("Meter %d - LinkStatus %d : failCount: %d \n", meterIndex, ShmSysConfigAndInfo->SysInfo.DcMeterInfo[meterIndex].LinkStatus,failCount[meterIndex]);
|
|
|
- usleep(200000);
|
|
|
+ //PR("end : %d ActionCmd : %d \n", gun_index,ShmSysConfigAndInfo->SysInfo.DcMeterTransactionAction[gun_index].ActionCmd);
|
|
|
+
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
-
|
|
|
-
|
|
|
return -1;
|
|
|
}
|