Przeglądaj źródła

[Add][Modularization][Module_Payment_Bazel8]

2022.08.23 / Folus Wen

Actions:
1. Self test function implement.

Files:
1. As follow commit history

Image version: D0.00.XX.XXXX.XX
Image checksum: XXXXXXXX

Hardware PWB P/N : XXXXXXX
Hardware Version : XXXXXXX
Folus Wen 2 lat temu
rodzic
commit
da1ff1b83d

+ 321 - 123
EVSE/Modularization/Module_Payment_Bazel8.c

@@ -10,7 +10,7 @@
 
 struct COMMAND commandRaw;
 struct timespec	tmr[TIMER_CNT];
-uint16_t nSerial;
+uint16_t nSerial=0;
 
 //==========================================
 // Common routine
@@ -324,7 +324,7 @@ int pollingRequest(int uart, unsigned char* cmd)
 	length = ((cmd[1]<<8)|cmd[2])+4;
 	cmd[(length-1)] = calChksum(cmd);
 
-	show_raw(cmd, length, NO);
+	// show_raw(cmd, length, NO);
 	
 	if(write(uart, cmd, length ) > 0)
 	{
@@ -376,7 +376,7 @@ int pollingResponse(int uart, unsigned char* rx)
 	
 	if(Total_len[0] >0)
 	{
-	    show_raw(rx, Total_len[1], YES);
+	    // show_raw(rx, Total_len[1], YES);
 
         CSUM[0] = rx[(((rx[1] << 8) | (rx[2]))+3)];
         CSUM[1] = calChksum(&rx[0]);
@@ -435,6 +435,59 @@ xmlNode *find_node(xmlNode *node, char *node_name)
 //==========================================
 // Reader operation function
 //==========================================
+int InfoMgmtRequest(int uart)
+{
+	char xmlBody[1024]={0};
+	int n;
+
+	xmlBuffer * outputXmlPtr = xmlBufferCreate();
+	xmlDocPtr doc = NULL;
+	xmlNodePtr node_req = NULL;
+	xmlNodePtr node_cmd = NULL;
+	xmlNodePtr node_param = NULL;
+	xmlNodePtr node_param_Info = NULL;
+
+	// Create xml message
+	doc = xmlNewDoc(BAD_CAST "1.0");
+	node_req = xmlNewNode(NULL, BAD_CAST "Req");
+	xmlDocSetRootElement(doc, node_req);
+
+	node_cmd = xmlNewNode(NULL, BAD_CAST "Cmd");
+	xmlNewChild(node_cmd, NULL, BAD_CAST "CmdId", BAD_CAST "InfoMgmt");
+	xmlNewChild(node_cmd, NULL, BAD_CAST "CmdTout", BAD_CAST "30");
+	xmlAddChild(node_req, node_cmd);
+
+	node_param = xmlNewNode(NULL, BAD_CAST "Param");
+	node_param_Info = xmlNewNode(NULL, BAD_CAST "Info");
+	
+	xmlNewChild(node_param_Info, NULL, BAD_CAST "Id", BAD_CAST "GetSystemVer");
+
+	xmlAddChild(node_param, node_param_Info);
+	xmlAddChild(node_req, node_param);
+
+    xmlNodeDump(outputXmlPtr, NULL, (xmlNode *)node_req, 0, 0);
+    n = sprintf(xmlBody, "%s", (const char *)outputXmlPtr->content);
+    
+    DEBUG_INFO("[%s] is a string %d chars long\n", xmlBody, n);
+
+    xmlBufferFree(outputXmlPtr);
+    xmlFreeDoc(doc);
+    xmlCleanupParser();
+    xmlMemoryDump();
+
+	// Create protocol message
+	memset(commandRaw.requestData, 0x00, ARRAY_SIZE(commandRaw.requestData));
+
+	commandRaw.requestData[0] = STX;
+	commandRaw.requestData[1] = (strlen(xmlBody)>>8)&0xff;
+	commandRaw.requestData[2] = (strlen(xmlBody)>>0)&0xff;
+	memcpy(&commandRaw.requestData[3], xmlBody, strlen(xmlBody));
+
+    //show_raw(&commandRaw.requestData[0], (strlen(xmlBody)+3), NO);
+
+	return pollingRequest(uart, commandRaw.requestData);
+}
+
 int preAuthRequest(int uart)
 {
 	char xmlBody[1024]={0};
@@ -472,7 +525,7 @@ int preAuthRequest(int uart)
     xmlNodeDump(outputXmlPtr, NULL, (xmlNode *)node_req, 0, 0);
     n = sprintf(xmlBody, "%s", (const char *)outputXmlPtr->content);
     
-    printf ("[%s] is a string %d chars long\n", xmlBody, n);
+    DEBUG_INFO("[%s] is a string %d chars long\n", xmlBody, n);
 
     xmlBufferFree(outputXmlPtr);
     xmlFreeDoc(doc);
@@ -487,7 +540,7 @@ int preAuthRequest(int uart)
 	commandRaw.requestData[2] = (strlen(xmlBody)>>0)&0xff;
 	memcpy(&commandRaw.requestData[3], xmlBody, strlen(xmlBody));
 
-    show_raw(&commandRaw.requestData[0], (strlen(xmlBody)+3), NO);
+    //show_raw(&commandRaw.requestData[0], (strlen(xmlBody)+3), NO);
 
 	return pollingRequest(uart, commandRaw.requestData);
 }
@@ -551,24 +604,86 @@ int preAuthResponse(int uart)
 	}
 	else 
     {
-        DEBUG_INFO("===== Get preAuth Response is Fail =====( %d)==========\n", nSerial++);
+        if((nSerial++ % 5)==0)
+            DEBUG_INFO("===== Get preAuth Response is Fail =====( %d)==========\n", (nSerial-1));
         nSerial %= 0xffff;
     }
 
 	return result;
 }
 
+int InfoMgmtResponse(int uart)
+{
+	int result = pollingResponse(uart, commandRaw.responseData);
+	
+	//char *xmlTestBody = "<Resp><Cmd><CmdId>InfoMgmtResp</CmdId><StatusCode>001F</StatusCode><StatusText>TransactionDeferred</StatusText></Cmd>
+	//                     <Data><Info><Id>InfoMgmt</Id><SysVer>[System Firmware Version]</SysVer>
+	//                     <AppVer>[Application Version]</AppVer><SerialNum>[Serial Number]</SerialNum></Info></Data></Resp>";
+	
+	char xmlTestBody[1024] = {0};
+
+	if(result == PASS)
+	{
+		memcpy(xmlTestBody, &commandRaw.responseData[3], ((commandRaw.responseData[1] << 8) | commandRaw.responseData[2]));
+
+		xmlDocPtr doc = xmlParseDoc((const xmlChar *)xmlTestBody);
+		xmlNode *root_element = xmlDocGetRootElement(doc);
+
+		if((find_node(root_element, "Resp") != NULL) && (strstr((char*)xmlNodeGetContent(find_node(root_element, "CmdId")), "InfoMgmtResp") != NULL))
+		{
+			DEBUG_INFO("===== Get InfoMgmt response =======================\n");
+			// ShmSysConfigAndInfo->SysInfo.bazel8.txResp.isGetOn = ON;
+			
+			sprintf(ShmSysConfigAndInfo->SysInfo.bazel8.txResp.statusCode, "%s", xmlNodeGetContent(find_node(root_element, "StatusCode")));
+			sprintf(ShmSysConfigAndInfo->SysInfo.bazel8.txResp.statusText, "%s", xmlNodeGetContent(find_node(root_element, "StatusText")));
+
+			DEBUG_INFO("Status code: %s\n", ShmSysConfigAndInfo->SysInfo.bazel8.txResp.statusCode);
+			DEBUG_INFO("Status text: %s\n", ShmSysConfigAndInfo->SysInfo.bazel8.txResp.statusText);
+			
+			if(strstr(ShmSysConfigAndInfo->SysInfo.bazel8.txResp.statusCode,"0000") != NULL)
+			{
+			    ShmSysConfigAndInfo->SysInfo.bazel8.txResp.isGetOn = ON;
+			    sprintf(ShmSysConfigAndInfo->SysInfo.bazel8.txResp.txnId, "%s", xmlNodeGetContent(find_node(root_element, "SysVer")));
+			    DEBUG_INFO("System Firmware Version: %s\n", ShmSysConfigAndInfo->SysInfo.bazel8.txResp.txnId);
+			    sprintf(ShmSysConfigAndInfo->SysInfo.bazel8.txResp.txnId, "%s", xmlNodeGetContent(find_node(root_element, "AppVer")));
+			    DEBUG_INFO("Application Version: %s\n", ShmSysConfigAndInfo->SysInfo.bazel8.txResp.txnId);
+			    sprintf(ShmSysConfigAndInfo->SysInfo.bazel8.txResp.txnId, "%s", xmlNodeGetContent(find_node(root_element, "SerialNum")));
+			    DEBUG_INFO("Serial Number: %s\n", ShmSysConfigAndInfo->SysInfo.bazel8.txResp.txnId);
+			}
+		}
+		else
+		{
+			DEBUG_INFO("===== Get unknown node =======================\n");
+		}
+        
+        //DEBUG_INFO("===== End 0 =======================\n");
+	    xmlFreeDoc(doc);
+	    //DEBUG_INFO("===== End 1 =======================\n");
+	    xmlCleanupParser();
+	    //DEBUG_INFO("===== End 2 =======================\n");
+	    xmlMemoryDump();
+	    //DEBUG_INFO("===== End 3 =======================\n");
+	}
+	else 
+    {
+        if((nSerial++ % 5)==0)
+            DEBUG_INFO("===== Get InfoMgmt Response is Fail =====( %d)==========\n", (nSerial-1));
+        nSerial %= 0xffff;
+    }
+
+	return result;
+}
 //==========================================
 // Main loop
 //==========================================
 int main(void)
 {
 	int UartFd;
-	int preAuthRetry = 0;
+	//int preAuthRetry = 0;
 	int cmdRepeatCount = 0;
 	
 	// Henry
-	int state[2] = {s_IDLE, s_IDLE};
+	int state[2] = {s_NONE, s_NONE};
 	//uint8_t Rx_Cir_Buf[1024];
 	//uint8_t Rx_Buf[1024];
     //int Rx_Cir_Idx[2], Rx_Buf_Idx;
@@ -619,10 +734,11 @@ int main(void)
 
 	DEBUG_INFO("Payment module initialize completed.\n");
 
-//    ShmSysConfigAndInfo->SysInfo.bazel8.cmdPreAuth.isReq = true;                // from CSU 
-//	ShmSysConfigAndInfo->SysInfo.bazel8.cmdPreAuth.isWaitRes = false;
-//	ShmSysConfigAndInfo->SysInfo.bazel8.cmdPreAuth.isResultPass = false;
-//	ShmSysConfigAndInfo->SysInfo.bazel8.cmdPreAuth.isRes = false;
+    ShmSysConfigAndInfo->SysInfo.bazel8.cmdPreAuth.isReq = false;                // from CSU 
+	ShmSysConfigAndInfo->SysInfo.bazel8.cmdPreAuth.isWaitRes = false;
+	ShmSysConfigAndInfo->SysInfo.bazel8.cmdPreAuth.isResultPass = false;
+	ShmSysConfigAndInfo->SysInfo.bazel8.cmdPreAuth.isRes = false;
+	ShmStatusCodeData->AlarmCode.AlarmEvents.bits.PaymentCommTimeout = false;
 
 	//===============================================
 	// Main loop
@@ -648,51 +764,132 @@ int main(void)
          */
          switch(state[0])
          {
+         case s_NONE:
+            state[0] = s_INFO;
+            state[1] = s_NONE;
+            DEBUG_INFO(">> PayError: %d\n", ShmStatusCodeData->AlarmCode.AlarmEvents.bits.PaymentCommTimeout);
+            break;
+         case s_INFO:
+            if(state[0] != state[1])
+            {
+                state[1] = state[0];
+                cmdRepeatCount = 0;
+                DEBUG_INFO("Perpare Selftest...\n");
+            }
+                
+            if(InfoMgmtRequest(UartFd))
+            {
+                cmdRepeatCount = 0;
+                refreshStartTimer(&tmr[TIMER_READ_RESPONSE]);       
+                state[0] = s_INFO_WAIT_RESPONE;
+            }
+            else 
+            {
+                cmdRepeatCount++;
+                if(cmdRepeatCount > SPEC_REQUEST_RETRY)
+			    {   
+				    DEBUG_WARN("preAuthRequest fail over count(%d).", cmdRepeatCount);
+				
+				    cmdRepeatCount = 0;
+				    // Raise a error for Payment Task.
+				    ShmStatusCodeData->AlarmCode.AlarmEvents.bits.PaymentCommTimeout = true;
+				    DEBUG_INFO(" Raise a error for Payment Task...\n");
+				    DEBUG_INFO(">> PayError: %d\n", ShmStatusCodeData->AlarmCode.AlarmEvents.bits.PaymentCommTimeout);  
+				    
+				    state[0] = s_NONE;
+			    }
+            }
+            break;
+         case s_INFO_WAIT_RESPONE:
+            if(state[0] != state[1])
+            {
+                state[1] = state[0];
+                ShmSysConfigAndInfo->SysInfo.bazel8.txResp.isGetOn = OFF; 
+                nSerial = 0;
+                DEBUG_INFO("Wait Selftest Respone...\n");
+            }
+            
+            do {
+                if( InfoMgmtResponse(UartFd) )
+                {
+                    if(ShmSysConfigAndInfo->SysInfo.bazel8.txResp.isGetOn)
+					{
+					    state[0] = s_IDLE;
+					    ShmStatusCodeData->AlarmCode.AlarmEvents.bits.PaymentCommTimeout = false;
+					}
+                }
+                
+                if((getDiffSecNow(tmr[TIMER_READ_RESPONSE]) > TIMEOUT_REQUEST))
+				{   
+					DEBUG_WARN("Wait pre auth response timeout(%d secs).\n", TIMEOUT_REQUEST);
+					
+					// Raise a error for Payment Task.
+					ShmStatusCodeData->AlarmCode.AlarmEvents.bits.PaymentCommTimeout = true;
+					DEBUG_INFO(" Raise a error for Payment Task...\n");
+					DEBUG_INFO(">> PayError: %d\n", ShmStatusCodeData->AlarmCode.AlarmEvents.bits.PaymentCommTimeout);
+					
+					state[0] = s_NONE;					
+					break;
+				}
+				
+            } while (ShmSysConfigAndInfo->SysInfo.bazel8.txResp.isGetOn != ON);
+            break;
          case s_IDLE:
             if(state[0] != state[1])
             {
                 state[1] = state[0];
-                DEBUG_INFO(" >> Back to Idle.\n");
+                DEBUG_INFO(" Enter the Idle state...\n");
                 
                 ShmSysConfigAndInfo->SysInfo.bazel8.cmdPreAuth.isReq = false;
-                ShmSysConfigAndInfo->SysInfo.bazel8.cmdPreAuth.isResultPass = false;
-	            //ShmSysConfigAndInfo->SysInfo.bazel8.cmdPreAuth.isRes = false;     // The CSU should be set to false.
+                DEBUG_INFO(">> isResultPass: %d\n", ShmSysConfigAndInfo->SysInfo.bazel8.cmdPreAuth.isResultPass);
+                DEBUG_INFO(">> isRes: %d\n", ShmSysConfigAndInfo->SysInfo.bazel8.cmdPreAuth.isRes);                
             }
                 
             if(ShmSysConfigAndInfo->SysInfo.bazel8.cmdPreAuth.isReq)
             {
+                DEBUG_INFO(" Raise the isReq flag...\n");
+                
                 ShmSysConfigAndInfo->SysInfo.bazel8.cmdPreAuth.isReq = false;
+                
+                strcpy((char *)ShmSysConfigAndInfo->SysInfo.bazel8.txResp.txnId, "");
+                strcpy((char *)ShmSysConfigAndInfo->SysInfo.bazel8.txResp.statusCode, "");
+                strcpy((char *)ShmSysConfigAndInfo->SysInfo.bazel8.txResp.statusText, "");
+                
+                ShmSysConfigAndInfo->SysInfo.bazel8.cmdPreAuth.isResultPass = false;
+	            ShmSysConfigAndInfo->SysInfo.bazel8.cmdPreAuth.isRes = false;     // The CSU should be set to false.
+                
                 state[0] = s_SEND_AUTH_ONLY;
             }
             break;
          case s_SEND_AUTH_ONLY:
             if(state[0] != state[1])
             {
-                 state[1] = state[0];
-                 
-                 if(preAuthRequest(UartFd))
-                 {
-                    refreshStartTimer(&tmr[TIMER_READ_RESPONSE]); 
-                    
-                    cmdRepeatCount = 0;      
-                    state[0] = s_WAIT_RESPONE;
-                 }
+                state[1] = state[0];
+                cmdRepeatCount = 0;
+                DEBUG_INFO(" Send Auth-Only state...\n");
+            }
                  
+            if(preAuthRequest(UartFd))
+            {
+               refreshStartTimer(&tmr[TIMER_READ_RESPONSE]); 
+                
+               cmdRepeatCount = 0;      
+               state[0] = s_WAIT_RESPONE;
+            }
+            else 
+            {
+                cmdRepeatCount++;
                 if(cmdRepeatCount > SPEC_REQUEST_RETRY)
-				{
-					DEBUG_WARN("preAuthRequest fail over count(%d).", cmdRepeatCount);
-					
-					cmdRepeatCount = 0;
-					ShmSysConfigAndInfo->SysInfo.bazel8.cmdPreAuth.isReq = false;
-					ShmSysConfigAndInfo->SysInfo.bazel8.cmdPreAuth.isResultPass = false;
-					ShmSysConfigAndInfo->SysInfo.bazel8.cmdPreAuth.isRes = true;            // To tell CSU is done.
-					
-					state[0] = s_IDLE;
-				}
-				else
-				{
-					cmdRepeatCount++;
-				}
+			    {
+				    DEBUG_WARN("preAuthRequest fail over count(%d).", cmdRepeatCount);
+				
+				    cmdRepeatCount = 0;
+				    ShmSysConfigAndInfo->SysInfo.bazel8.cmdPreAuth.isReq = false;
+				    ShmSysConfigAndInfo->SysInfo.bazel8.cmdPreAuth.isResultPass = false;
+				    ShmSysConfigAndInfo->SysInfo.bazel8.cmdPreAuth.isRes = true;            // To tell CSU is done.
+				
+				    state[0] = s_IDLE;
+			    }
             }
             break;
          case s_WAIT_RESPONE:
@@ -702,6 +899,7 @@ int main(void)
                 ShmSysConfigAndInfo->SysInfo.bazel8.txResp.isGetOn = OFF;   
                 ShmSysConfigAndInfo->SysInfo.bazel8.event.isGetOn = OFF;
                 nSerial = 0;
+                DEBUG_INFO(" Wait Auth-Only Respone state...\n");
             }
             
             do {
@@ -712,9 +910,6 @@ int main(void)
 					    // *	1. Announce CSU event content.
 							 
 						ShmSysConfigAndInfo->SysInfo.bazel8.event.isGetOn = false;
-						
-//						if(ShmSysConfigAndInfo->SysInfo.bazel8.event.messageId == 21)   // Please Present Card.
-//						    refreshStartTimer(&tmr[TIMER_READ_RESPONSE]); 
 					}
 					else if(ShmSysConfigAndInfo->SysInfo.bazel8.txResp.isGetOn)
 					{
@@ -722,6 +917,9 @@ int main(void)
 						    ((strstr(ShmSysConfigAndInfo->SysInfo.bazel8.txResp.statusCode, "0000") != NULL)?true:false);
 						        
 						ShmSysConfigAndInfo->SysInfo.bazel8.cmdPreAuth.isRes = true;    // To tell CSU is done.
+						
+						DEBUG_INFO(">> isResultPass: %d\n", ShmSysConfigAndInfo->SysInfo.bazel8.cmdPreAuth.isResultPass);
+                        DEBUG_INFO(">> isRes: %d\n", ShmSysConfigAndInfo->SysInfo.bazel8.cmdPreAuth.isRes);
 					}
                 }
                 
@@ -746,86 +944,86 @@ int main(void)
 	
 	return FAIL;
 	
-	for(;;)
-	{
-        
-        // need to run the script first : run_evse_stop.sh
-
-		if(ShmSysConfigAndInfo->SysInfo.bazel8.cmdPreAuth.isReq)
-		{
-		    
-			// Pre auth request
-			if(!ShmSysConfigAndInfo->SysInfo.bazel8.cmdPreAuth.isWaitRes)
-			{
-				ShmSysConfigAndInfo->SysInfo.bazel8.cmdPreAuth.isRes = false;
-				ShmSysConfigAndInfo->SysInfo.bazel8.event.isGetOn = false;
-				ShmSysConfigAndInfo->SysInfo.bazel8.txResp.isGetOn = false;
-
-				if(preAuthRequest(UartFd))
-				{
-					ShmSysConfigAndInfo->SysInfo.bazel8.cmdPreAuth.isWaitRes = true;
-					cmdRepeatCount = 0;
-					refreshStartTimer(&tmr[TIMER_READ_RESPONSE]);
-				}
-
-				if(cmdRepeatCount > SPEC_REQUEST_RETRY)
-				{
-					DEBUG_WARN("preAuthRequest fail over count(%d).", cmdRepeatCount);
-					cmdRepeatCount = 0;
-					ShmSysConfigAndInfo->SysInfo.bazel8.cmdPreAuth.isReq = false;
-					ShmSysConfigAndInfo->SysInfo.bazel8.cmdPreAuth.isResultPass = false;
-					ShmSysConfigAndInfo->SysInfo.bazel8.cmdPreAuth.isRes = true;
-				}
-				else
-				{
-					cmdRepeatCount += 1;
-				}
-			}
-			else
-			{
-				if((getInputBufferCount(UartFd) >= RAW_DATA_LENGTH))
-				{				    
-
-				    //DEBUG_INFO("\n\rTo wait Payment preAuth Response.\n\r");
-				    
-					if(preAuthResponse(UartFd))
-					{
-						if(ShmSysConfigAndInfo->SysInfo.bazel8.event.isGetOn)
-						{
-
-							 // *	1. Announce CSU event content.
-							 
-							ShmSysConfigAndInfo->SysInfo.bazel8.event.isGetOn = false;
-						}
-						else if(ShmSysConfigAndInfo->SysInfo.bazel8.txResp.isGetOn)
-						{
-							ShmSysConfigAndInfo->SysInfo.bazel8.cmdPreAuth.isResultPass = ((strstr(ShmSysConfigAndInfo->SysInfo.bazel8.txResp.statusCode, "0000") != NULL)?true:false);
-
-							if(ShmSysConfigAndInfo->SysInfo.bazel8.cmdPreAuth.isResultPass || (preAuthRetry++ >= 3))
-							{
-								ShmSysConfigAndInfo->SysInfo.bazel8.cmdPreAuth.isReq = false;
-								ShmSysConfigAndInfo->SysInfo.bazel8.cmdPreAuth.isRes = true;
-
-								preAuthRetry = 0;
-							}
-							ShmSysConfigAndInfo->SysInfo.bazel8.cmdPreAuth.isWaitRes = false;
-						}
-					}
-				}
-
-				if((getDiffSecNow(tmr[TIMER_READ_RESPONSE]) > TIMEOUT_REQUEST))
-				{
-					ShmSysConfigAndInfo->SysInfo.bazel8.cmdPreAuth.isReq = false;
-					ShmSysConfigAndInfo->SysInfo.bazel8.cmdPreAuth.isWaitRes = false;
-					ShmSysConfigAndInfo->SysInfo.bazel8.cmdPreAuth.isResultPass = false;
-					ShmSysConfigAndInfo->SysInfo.bazel8.cmdPreAuth.isRes = true;
-					DEBUG_WARN("Wait pre auth response timeout(%d secs).", TIMEOUT_REQUEST);
-				}
-			}
-		}
-
-		sleep(3);
-	}
-
-	return FAIL;
+//	for(;;)
+//	{
+//        
+//        // need to run the script first : run_evse_stop.sh
+//
+//		if(ShmSysConfigAndInfo->SysInfo.bazel8.cmdPreAuth.isReq)
+//		{
+//		    
+//			// Pre auth request
+//			if(!ShmSysConfigAndInfo->SysInfo.bazel8.cmdPreAuth.isWaitRes)
+//			{
+//				ShmSysConfigAndInfo->SysInfo.bazel8.cmdPreAuth.isRes = false;
+//				ShmSysConfigAndInfo->SysInfo.bazel8.event.isGetOn = false;
+//				ShmSysConfigAndInfo->SysInfo.bazel8.txResp.isGetOn = false;
+//
+//				if(preAuthRequest(UartFd))
+//				{
+//					ShmSysConfigAndInfo->SysInfo.bazel8.cmdPreAuth.isWaitRes = true;
+//					cmdRepeatCount = 0;
+//					refreshStartTimer(&tmr[TIMER_READ_RESPONSE]);
+//				}
+//
+//				if(cmdRepeatCount > SPEC_REQUEST_RETRY)
+//				{
+//					DEBUG_WARN("preAuthRequest fail over count(%d).", cmdRepeatCount);
+//					cmdRepeatCount = 0;
+//					ShmSysConfigAndInfo->SysInfo.bazel8.cmdPreAuth.isReq = false;
+//					ShmSysConfigAndInfo->SysInfo.bazel8.cmdPreAuth.isResultPass = false;
+//					ShmSysConfigAndInfo->SysInfo.bazel8.cmdPreAuth.isRes = true;
+//				}
+//				else
+//				{
+//					cmdRepeatCount += 1;
+//				}
+//			}
+//			else
+//			{
+//				if((getInputBufferCount(UartFd) >= RAW_DATA_LENGTH))
+//				{				    
+//
+//				    //DEBUG_INFO("\n\rTo wait Payment preAuth Response.\n\r");
+//				    
+//					if(preAuthResponse(UartFd))
+//					{
+//						if(ShmSysConfigAndInfo->SysInfo.bazel8.event.isGetOn)
+//						{
+//
+//							 // *	1. Announce CSU event content.
+//							 
+//							ShmSysConfigAndInfo->SysInfo.bazel8.event.isGetOn = false;
+//						}
+//						else if(ShmSysConfigAndInfo->SysInfo.bazel8.txResp.isGetOn)
+//						{
+//							ShmSysConfigAndInfo->SysInfo.bazel8.cmdPreAuth.isResultPass = ((strstr(ShmSysConfigAndInfo->SysInfo.bazel8.txResp.statusCode, "0000") != NULL)?true:false);
+//
+//							if(ShmSysConfigAndInfo->SysInfo.bazel8.cmdPreAuth.isResultPass || (preAuthRetry++ >= 3))
+//							{
+//								ShmSysConfigAndInfo->SysInfo.bazel8.cmdPreAuth.isReq = false;
+//								ShmSysConfigAndInfo->SysInfo.bazel8.cmdPreAuth.isRes = true;
+//
+//								preAuthRetry = 0;
+//							}
+//							ShmSysConfigAndInfo->SysInfo.bazel8.cmdPreAuth.isWaitRes = false;
+//						}
+//					}
+//				}
+//
+//				if((getDiffSecNow(tmr[TIMER_READ_RESPONSE]) > TIMEOUT_REQUEST))
+//				{
+//					ShmSysConfigAndInfo->SysInfo.bazel8.cmdPreAuth.isReq = false;
+//					ShmSysConfigAndInfo->SysInfo.bazel8.cmdPreAuth.isWaitRes = false;
+//					ShmSysConfigAndInfo->SysInfo.bazel8.cmdPreAuth.isResultPass = false;
+//					ShmSysConfigAndInfo->SysInfo.bazel8.cmdPreAuth.isRes = true;
+//					DEBUG_WARN("Wait pre auth response timeout(%d secs).", TIMEOUT_REQUEST);
+//				}
+//			}
+//		}
+//
+//		sleep(3);
+//	}
+//
+//	return FAIL;
 }

+ 11 - 8
EVSE/Modularization/Module_Payment_Bazel8.h

@@ -45,19 +45,19 @@
 
 #ifndef X86
 	#include	"define.h"
-	#define TTY_PORT		"/dev/ttyS3"
+	#define TTY_PORT		"/dev/ttyS2"
 #else
 	#define ConsloePrintLog
 	#define TTY_PORT		"/dev/ttyUSB0"
 #endif
 
-//#define DEBUG_INFO(format, args...) StoreLogMsg("[%s:%d][%s][Info] "format, __FILE__, __LINE__, __FUNCTION__, ##args)
-//#define DEBUG_WARN(format, args...) StoreLogMsg("[%s:%d][%s][Warn] "format, __FILE__, __LINE__, __FUNCTION__, ##args)
-//#define DEBUG_ERROR(format, args...) StoreLogMsg("[%s:%d][%s][Error] "format, __FILE__, __LINE__, __FUNCTION__, ##args)
+#define DEBUG_INFO(format, args...) StoreLogMsg("[%s:%d][%s][Info] "format, __FILE__, __LINE__, __FUNCTION__, ##args)
+#define DEBUG_WARN(format, args...) StoreLogMsg("[%s:%d][%s][Warn] "format, __FILE__, __LINE__, __FUNCTION__, ##args)
+#define DEBUG_ERROR(format, args...) StoreLogMsg("[%s:%d][%s][Error] "format, __FILE__, __LINE__, __FUNCTION__, ##args)
 
-#define DEBUG_INFO(format, args...) printf("[Info] "format, ##args)
-#define DEBUG_WARN(format, args...) printf("[Warn] "format, ##args)
-#define DEBUG_ERROR(format, args...) printf("[Error] "format, ##args)
+//#define DEBUG_INFO(format, args...) printf("[Info] "format, ##args)
+//#define DEBUG_WARN(format, args...) printf("[Warn] "format, ##args)
+//#define DEBUG_ERROR(format, args...) printf("[Error] "format, ##args)
 
 #define is_error(ptr) 				((unsigned long)ptr > (unsigned long)-4000L)
 #define ARRAY_SIZE(A)				(sizeof(A) / sizeof(A[0]))
@@ -96,7 +96,10 @@ enum MESSAGE_HEADER
 
 enum 
 {
-	s_IDLE = 0,
+    s_NONE = 0,
+    s_INFO,
+    s_INFO_WAIT_RESPONE,
+	s_IDLE,
 	s_SEND_AUTH_ONLY,
 	s_WAIT_RESPONE,
 	s_DONE,

BIN
EVSE/Projects/EVSE-Emulator/Images/FactoryDefaultConfig.bin


BIN
EVSE/Projects/EVSE-Emulator/Images/ramdisk.gz