|
@@ -16,6 +16,8 @@ struct StartTime
|
|
|
unsigned int reConnect;
|
|
|
}startTime;
|
|
|
|
|
|
+struct QueueOpInfo queueOpInfo;
|
|
|
+
|
|
|
//==========================================
|
|
|
// Function prototype
|
|
|
//==========================================
|
|
@@ -23,11 +25,6 @@ void ReceivedMessage(void *in, size_t len);
|
|
|
int SendBufLen=0;//(1024*4);//(1024*3);
|
|
|
unsigned char SendBuffer[WEBSOCKET_BUFFER_SIZE]={0};
|
|
|
static int ConnectionEstablished=0;
|
|
|
-static int TransactionMessageResend = 1; // the number of retry to submit a transaction-related message when the Central System fails to process it.
|
|
|
-static int TransactionQueueNum = 0;
|
|
|
-static int OfflineTransactionQueueNum = 0; // Number of offline transactions
|
|
|
-static int OfflineTransaction = 0;
|
|
|
-static int IsUsing = FALSE;
|
|
|
int defaultWaitingTime = 10; //10 second
|
|
|
|
|
|
char OcppPath[384]={0};
|
|
@@ -99,7 +96,7 @@ static char *sqlTransaction = "create table if not exists ocpp_transaction_recor
|
|
|
//=================================
|
|
|
int GetTransactionQueueNum(void)
|
|
|
{
|
|
|
- return TransactionQueueNum;
|
|
|
+ return queueOpInfo.TransactionQueueNum;
|
|
|
}
|
|
|
|
|
|
//==========================================
|
|
@@ -253,14 +250,14 @@ static int OCPP16Callback(struct lws *wsi, enum lws_callback_reasons reason, voi
|
|
|
|
|
|
if(queueNotEmpty == TRUE)
|
|
|
{
|
|
|
- OfflineTransaction = 1; // 0: no packets in queue. 1: There are packets in queue.
|
|
|
+ queueOpInfo.OfflineTransaction = 1; // 0: no packets in queue. 1: There are packets in queue.
|
|
|
}
|
|
|
|
|
|
- TransactionMessageResend = 1;
|
|
|
+ queueOpInfo.TransactionMessageResend = 1;
|
|
|
|
|
|
//get offline number
|
|
|
queue_operation(QUEUE_OPERATION_SHOWQUEUE,"","");
|
|
|
- OfflineTransactionQueueNum =TransactionQueueNum ;
|
|
|
+ queueOpInfo.OfflineTransactionQueueNum = queueOpInfo.TransactionQueueNum ;
|
|
|
break;
|
|
|
case LWS_CALLBACK_CLIENT_CONNECTION_ERROR://1
|
|
|
DEBUG_ERROR("LWS_CALLBACK_CLIENT_CONNECTION_ERROR %s\n", (char *)in );
|
|
@@ -380,7 +377,6 @@ static int OCPP16Callback(struct lws *wsi, enum lws_callback_reasons reason, voi
|
|
|
DEBUG_INFO("Download new CA certification.\n", system("wget --no-check-certificate -O /root/cacert.pem http://curl.haxx.se/ca/cacert.pem &"));
|
|
|
}
|
|
|
break;
|
|
|
- break;
|
|
|
default:
|
|
|
DEBUG_INFO("Reason = %d\n", reason);
|
|
|
break;
|
|
@@ -708,10 +704,10 @@ int addq(char *uuid, char *data)
|
|
|
fputs(data, outfile);
|
|
|
fputs("\n", outfile);
|
|
|
fclose (outfile);
|
|
|
- TransactionQueueNum = TransactionQueueNum + 1;
|
|
|
- if(OfflineTransaction == 1) // 0: no offline Transaction 1: offline Transaction
|
|
|
+ queueOpInfo.TransactionQueueNum += 1;
|
|
|
+ if(queueOpInfo.OfflineTransaction == 1) // 0: no offline Transaction 1: offline Transaction
|
|
|
{
|
|
|
- OfflineTransactionQueueNum = OfflineTransactionQueueNum + 1;
|
|
|
+ queueOpInfo.OfflineTransactionQueueNum += 1;
|
|
|
}
|
|
|
DEBUG_INFO("add queue end\n");
|
|
|
system("/bin/fsync -d /dev/mtdblock13;/bin/sync &");
|
|
@@ -802,8 +798,8 @@ int delq()
|
|
|
|
|
|
if(i==0)
|
|
|
{
|
|
|
- TransactionQueueNum = TransactionQueueNum - 1;
|
|
|
- TransactionMessageResend = 1;
|
|
|
+ queueOpInfo.TransactionQueueNum -= 1;
|
|
|
+ queueOpInfo.TransactionMessageResend = 1;
|
|
|
DEBUG_INFO("delete the item\n");
|
|
|
}
|
|
|
|
|
@@ -888,11 +884,11 @@ int showqueue()
|
|
|
return FALSE;
|
|
|
}
|
|
|
|
|
|
- TransactionQueueNum = 0; // the number of packets in queue
|
|
|
+ queueOpInfo.TransactionQueueNum = 0; // the number of packets in queue
|
|
|
|
|
|
while(fgets(line, sizeof line, fp) != NULL) {
|
|
|
//DEBUG_INFO("%s\n", line);
|
|
|
- TransactionQueueNum = TransactionQueueNum + 1; //the number of packets in queue
|
|
|
+ queueOpInfo.TransactionQueueNum += 1; //the number of packets in queue
|
|
|
}
|
|
|
|
|
|
fclose(fp);
|
|
@@ -1148,7 +1144,8 @@ int sentqueue(){
|
|
|
DEBUG_INFO("Final transactionId = %d\n", gettransactionId);
|
|
|
if(IsStopTransaction == TRUE)//if((IsStopTransaction == TRUE)&&(gettransactionId != 0))
|
|
|
{
|
|
|
- SetTransactionIdZero(gettransactionId);
|
|
|
+ queueOpInfo.stopTransactionId = gettransactionId;
|
|
|
+ //SetTransactionIdZero(gettransactionId);
|
|
|
}
|
|
|
}
|
|
|
else
|
|
@@ -1193,35 +1190,35 @@ void* processTransactionQueue(void* data)
|
|
|
if((((time((time_t*)NULL) - startTimeQueue) > (TransactionMessageRetryIntervalGet()>10?TransactionMessageRetryIntervalGet():10))))
|
|
|
DEBUG_INFO("Queue timer(%d) over spec(%d).\n", (time((time_t*)NULL) - startTimeQueue), TransactionMessageRetryIntervalGet());
|
|
|
|
|
|
- if((OfflineTransaction == 1) && (OfflineTransactionQueueNum != 0)) //OfflineTransaction 0: no offline Transaction 1: offline Transaction
|
|
|
+ if((queueOpInfo.OfflineTransaction == 1) && (queueOpInfo.OfflineTransactionQueueNum != 0)) //OfflineTransaction 0: no offline Transaction 1: offline Transaction
|
|
|
{
|
|
|
DEBUG_INFO("Sent message from queue request off-line first.\n");
|
|
|
req_SendQueue = 1; // 0: no packets to send 1: send the top packet in queue
|
|
|
|
|
|
- OfflineTransactionQueueNum = OfflineTransactionQueueNum - 1;
|
|
|
+ queueOpInfo.OfflineTransactionQueueNum -= 1;
|
|
|
|
|
|
- if(OfflineTransactionQueueNum == 0)
|
|
|
+ if(queueOpInfo.OfflineTransactionQueueNum == 0)
|
|
|
{
|
|
|
- OfflineTransaction = 0;
|
|
|
+ queueOpInfo.OfflineTransaction = 0;
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- if(TransactionMessageResend <= TransactionMessageAttemptsGet()) //
|
|
|
+ if(queueOpInfo.TransactionMessageResend <= TransactionMessageAttemptsGet()) //
|
|
|
{
|
|
|
DEBUG_INFO("Sent message from queue request.\n");
|
|
|
- DEBUG_INFO("TransactionMessageResend = %d\n",TransactionMessageResend);
|
|
|
+ DEBUG_INFO("TransactionMessageResend = %d\n", queueOpInfo.TransactionMessageResend);
|
|
|
|
|
|
req_SendQueue = 1;
|
|
|
|
|
|
- TransactionMessageResend += 1;
|
|
|
+ queueOpInfo.TransactionMessageResend += 1;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- DEBUG_INFO("Transaction message resend(%d) over spec(%d) message abandon.\n", TransactionMessageResend, TransactionMessageAttemptsGet());
|
|
|
+ DEBUG_INFO("Transaction message resend(%d) over spec(%d) message abandon.\n", queueOpInfo.TransactionMessageResend, TransactionMessageAttemptsGet());
|
|
|
|
|
|
queue_operation(QUEUE_OPERATION_DEL,"",""); //// delete item
|
|
|
- TransactionMessageResend = 1;
|
|
|
+ queueOpInfo.TransactionMessageResend = 1;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -1231,7 +1228,7 @@ void* processTransactionQueue(void* data)
|
|
|
{
|
|
|
if(queueNotEmpty == TRUE)
|
|
|
{
|
|
|
- OfflineTransaction = 1; // 0: no offline Transaction 1: offline Transaction
|
|
|
+ queueOpInfo.OfflineTransaction = 1; // 0: no offline Transaction 1: offline Transaction
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -1309,7 +1306,7 @@ void CheckTransactionPacket(char *uuid)
|
|
|
{
|
|
|
DEBUG_INFO("Receive queue response match.\n");
|
|
|
queue_operation(QUEUE_OPERATION_DEL,"","");//delq(); ---> remove temporally
|
|
|
- TransactionMessageResend = 1;
|
|
|
+ queueOpInfo.TransactionMessageResend = 1;
|
|
|
}
|
|
|
else
|
|
|
DEBUG_INFO("Receive queue response mismatch.\n");
|
|
@@ -1322,9 +1319,9 @@ int queue_operation(int type, char *frontUUID, char *frontData)
|
|
|
|
|
|
while(1)
|
|
|
{
|
|
|
- if (!IsUsing )
|
|
|
+ if (!queueOpInfo.IsUsing )
|
|
|
{
|
|
|
- IsUsing = TRUE;
|
|
|
+ queueOpInfo.IsUsing = TRUE;
|
|
|
|
|
|
if(type == QUEUE_OPERATION_SHOWQUEUE) // show items in queue
|
|
|
{
|
|
@@ -1351,7 +1348,7 @@ int queue_operation(int type, char *frontUUID, char *frontData)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- IsUsing = FALSE;
|
|
|
+ queueOpInfo.IsUsing = FALSE;
|
|
|
break;
|
|
|
}
|
|
|
usleep(100000);
|
|
@@ -1404,6 +1401,8 @@ int main(void)
|
|
|
{
|
|
|
char rmFileCmd[100]={0};
|
|
|
struct stat stats;
|
|
|
+ queueOpInfo.IsUsing = FALSE;
|
|
|
+ queueOpInfo.TransactionMessageResend = 1;
|
|
|
|
|
|
DEBUG_INFO("Module_OcppBackend task initialization...\n");
|
|
|
//lws_set_log_level(LLL_PARSER | LLL_HEADER | LLL_ERR | LLL_WARN | LLL_NOTICE | LLL_INFO | LLL_DEBUG | LLL_EXT | LLL_CLIENT | LLL_LATENCY , NULL);
|