TcpTask.c 37 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886
  1. /****************************************************************************
  2. *
  3. * Copy right: Qx.Chen jie
  4. * File name: TcpTask.c
  5. * Description: 网络发送接收任务
  6. * History: 2021-03-07
  7. *
  8. ****************************************************************************/
  9. #include "bsp.h"
  10. #include "bsp_custom.h"
  11. #include "osasys.h"
  12. #include "ostask.h"
  13. #include "queue.h"
  14. #include "ps_event_callback.h"
  15. #include "app.h"
  16. #include "cmisim.h"
  17. #include "cmimm.h"
  18. #include "cmips.h"
  19. #include "sockets.h"
  20. #include "psifevent.h"
  21. #include "ps_lib_api.h"
  22. #include "lwip/netdb.h"
  23. //#include <cis_def.h>
  24. #include "debug_log.h"
  25. #include "slpman_ec616.h"
  26. #include "plat_config.h"
  27. #include "ec_tcpip_api.h"
  28. #include "MainTask.h"
  29. #include "TcpTask.h"
  30. #include "UartTask.h"
  31. #include "GpsTask.h"
  32. #include "Fota.h"
  33. #include "Signal.h"
  34. //全局变量输出区
  35. UINT32 TcpService = 0;
  36. //全局变量输入区
  37. extern UINT32 Timer_count;
  38. extern volatile BOOL Sleep_flag;
  39. //extern UartReadMsgType UartReadMsg;
  40. extern osMutexId_t UartMutex;
  41. extern osMutexId_t GpsMutex;
  42. extern UINT8 GpsData[16];
  43. extern AppNVMDataType AppNVMData;
  44. extern AppDataBody AppDataInfo;
  45. extern QueueHandle_t UartWriteCmdHandle;
  46. extern BOOL UartBattInfoRecvFlag;
  47. //局部变量申请
  48. AppSocketConnectionContext socContext = {-1, APP_SOCKET_CONNECTION_CLOSED};
  49. static StaticTask_t gProcess_Tcp_Task_t;
  50. static UINT8 gProcess_Tcp_TaskStack[PROC_TCP_TASK_STACK_SIZE];
  51. static QueueHandle_t psEventQueueHandle;//状态转换队列句柄
  52. static osThreadId_t TcpTaskId = NULL;
  53. static process_TCP gProcess_Tcp_Task = PROCESS_TCP_STATE_IDLE;
  54. #define PROC_TCP_STATE_SWITCH(a) (gProcess_Tcp_Task = a)
  55. static eventCallbackMessage_t *queueItem = NULL;
  56. static UINT8 gImsi[16] = {0};
  57. static UINT32 gCellID = 0;
  58. static QueueHandle_t TcpRecvHandle = NULL;
  59. static UINT8 TcpRecvEnd = 0;
  60. //Tcp线程堆栈申请区
  61. //函数声明区
  62. static void sendQueueMsg(UINT32 msgId, UINT32 xTickstoWait);
  63. static INT32 socketRegisterPSUrcCallback(urcID_t eventID, void *param, UINT32 paramLen);
  64. static void socketAppConnectionCallBack(UINT8 connectionEventType, void *bodyEvent);
  65. static void TcpDataInfoAssembleSend();
  66. static void TcpDataInfoRecvHandle();
  67. UINT8 bcc_chk(UINT8* data, UINT8 length);
  68. //线程任务区
  69. static void TcpTask(void* arg)
  70. {
  71. INT32 connectionId = -1;
  72. appSetEDRXSettingSync(0,5,1800000);
  73. appSetPSMSettingSync(1,3*60*60,10);
  74. appSetCFUN(1);
  75. UINT8 Error_count=0;
  76. psEventQueueHandle = xQueueCreate(APP_EVENT_QUEUE_SIZE, sizeof(eventCallbackMessage_t*));
  77. PROC_TCP_STATE_SWITCH(PROCESS_TCP_STATE_IDLE);
  78. if (psEventQueueHandle == NULL)
  79. {
  80. return;
  81. }
  82. if(TcpRecvHandle == NULL)
  83. {
  84. TcpRecvHandle = osMessageQueueNew(1,sizeof(TcpipConnectionRecvDataInd*), NULL);
  85. }
  86. while (true)
  87. {
  88. osDelay(100);
  89. if(Sleep_flag)
  90. {
  91. sendQueueMsg(QMSG_ID_NW_IP_SUSPEND, 0);
  92. sendQueueMsg(QMSG_ID_SOCK_EXIT, 0);
  93. }
  94. else if(Timer_count%50==0 && TcpService==0x00 && AppNVMData.EOLState==1)
  95. {
  96. sendQueueMsg(QMSG_ID_SOCK_SENDPKG, 0);
  97. }
  98. else if(Timer_count%10==0)
  99. {
  100. TcpRecvEnd++;
  101. }
  102. if(TcpRecvEnd>=20)
  103. {
  104. TcpService = 0x00;
  105. TcpRecvEnd=0;
  106. }
  107. if (xQueueReceive(psEventQueueHandle, &queueItem, 0))
  108. {
  109. switch(queueItem->messageId)
  110. {
  111. case QMSG_ID_NW_IP_READY:
  112. if(connectionId < 0)
  113. {
  114. connectionId = tcpipConnectionCreate(TCPIP_CONNECTION_PROTOCOL_TCP, PNULL, 0, QX_TCP_IPADRRES, QX_TCP_PORT, socketAppConnectionCallBack);
  115. }
  116. if(connectionId >= 0)
  117. {
  118. socContext.id = connectionId;
  119. socContext.status = APP_SOCKET_CONNECTION_CONNECTED;
  120. #ifdef USING_PRINTF
  121. printf("create connection %u success", socContext.id);
  122. #endif
  123. ECOMM_TRACE(UNILOG_PLA_APP, ecTestCaseTcpClient_2, P_INFO, 1, "create connection %u success", socContext.id);
  124. }
  125. else
  126. {
  127. sendQueueMsg(QMSG_ID_NW_IP_NOREACHABLE, 0);
  128. #ifdef USING_PRINTF
  129. printf("create connection fail\n");
  130. #endif
  131. ECOMM_TRACE(UNILOG_PLA_APP, ecTestCaseTcpClient_3, P_ERROR, 0, "create connection fail");
  132. }
  133. break;
  134. case QMSG_ID_NW_IP_NOREACHABLE:
  135. if(Error_count>=10)
  136. {
  137. Error_count = 0;
  138. #ifdef DEBUGLOG
  139. Debug_printf("Tcp Connect failed , systerm restart !\n");
  140. #endif
  141. appSetCFUN(0);
  142. osDelay(1000);
  143. EC_SystemReset();
  144. }
  145. break;
  146. case QMSG_ID_SOCK_SENDPKG:
  147. if (socContext.id >= 0 && socContext.status == APP_SOCKET_CONNECTION_CONNECTED)
  148. {
  149. TcpDataInfoAssembleSend();
  150. }
  151. else
  152. {
  153. Error_count++;
  154. sendQueueMsg(QMSG_ID_NW_IP_READY, 0);
  155. #ifdef USING_PRINTF
  156. printf("connection %u or status invalid", socContext.id, socContext.status);
  157. #endif
  158. ECOMM_TRACE(UNILOG_PLA_APP, ecTestCaseTcpClient_9, P_ERROR, 2, "connection %u or status invalid", socContext.id, socContext.status);
  159. }
  160. break;
  161. case QMSG_ID_SOCK_RECVPKG:
  162. TcpDataInfoRecvHandle();
  163. osDelay(100);
  164. TcpRecvEnd = 0;
  165. break;
  166. case QMSG_ID_NW_IP_SUSPEND:
  167. if (socContext.id >= 0 && socContext.status != APP_SOCKET_CONNECTION_CLOSED)
  168. {
  169. if(tcpipConnectionClose(socContext.id) < 0)
  170. {
  171. socContext.id = -1;
  172. socContext.status = APP_SOCKET_CONNECTION_CLOSED;
  173. #ifdef USING_PRINTF
  174. printf("close connection %u success", socContext.id);
  175. #endif
  176. ECOMM_TRACE(UNILOG_PLA_APP, ecTestCaseTcpClient_4, P_INFO, 1, "close connection %u success", socContext.id);
  177. }
  178. else
  179. {
  180. #ifdef USING_PRINTF
  181. printf("close connection %u fail", socContext.id);
  182. #endif
  183. ECOMM_TRACE(UNILOG_PLA_APP, ecTestCaseTcpClient_5, P_ERROR, 1, "close connection %u fail", socContext.id);
  184. }
  185. }
  186. else
  187. {
  188. #ifdef USING_PRINTF
  189. printf("connection %u or status invalid", socContext.id, socContext.status);
  190. #endif
  191. ECOMM_TRACE(UNILOG_PLA_APP, ecTestCaseTcpClient_6, P_ERROR, 2, "connection %u or status invalid", socContext.id, socContext.status);
  192. }
  193. break;
  194. case QMSG_ID_SOCK_EXIT:
  195. #ifdef USING_PRINTF
  196. printf("QMSG_ID_SOCK_EXIT queueItem->messageId:%x\n",queueItem->messageId);
  197. #endif
  198. #ifdef USING_PRINTF
  199. printf("socket exit\n");
  200. #endif
  201. appSetCFUN(0);
  202. free(queueItem);
  203. osDelay(1000);
  204. TcpTaskDeInit(arg);
  205. break;
  206. }
  207. free(queueItem);
  208. }
  209. }//while 循环
  210. }
  211. //Tcp线程初始化
  212. void TcpTaskInit(void *arg)
  213. {
  214. osThreadAttr_t task_attr;
  215. registerPSEventCallback(NB_GROUP_ALL_MASK, socketRegisterPSUrcCallback);
  216. memset(&task_attr,0,sizeof(task_attr));
  217. memset(gProcess_Tcp_TaskStack, 0xA5, PROC_TCP_TASK_STACK_SIZE);
  218. task_attr.name = "Tcp_Task";
  219. task_attr.stack_mem = gProcess_Tcp_TaskStack;
  220. task_attr.stack_size = PROC_TCP_TASK_STACK_SIZE;
  221. task_attr.priority = osPriorityBelowNormal7;
  222. task_attr.cb_mem = &gProcess_Tcp_Task_t;
  223. task_attr.cb_size = sizeof(StaticTask_t);
  224. TcpTaskId = osThreadNew(TcpTask, NULL, &task_attr);
  225. }
  226. void TcpTaskDeInit(void *arg)
  227. {
  228. osThreadTerminate(TcpTaskId);
  229. TcpTaskId = NULL;
  230. }
  231. /*------------------------------函数区域----------------------------------------------------------------------------------------------*/
  232. static void TcpDataInfoAssembleSend()
  233. { static UINT32 send_counter = 0;
  234. OsaUtcTimeTValue TimeStracture;
  235. UINT8 csq=0;
  236. INT8 snr=0;
  237. INT8 rsnr=0;
  238. INT16 Batt_current=0;
  239. UINT16 BattU=0;
  240. UINT8 temp=0;
  241. UINT16 DataLen=0;
  242. UINT8 BattSendFreq=6;
  243. UINT8 GpsSendFreq=1;
  244. UINT8 WorkState=0;
  245. UINT16 year;
  246. UINT8 month,day,hour,minute,sec;
  247. UTC8TimeType UTC8TimeTcp;
  248. static UINT8 WorkFlag=0;
  249. int i = 0;
  250. INT8 len = -1;
  251. WorkState = battWorkState;
  252. if(WorkState==0x00 && WorkFlag==0x01)
  253. {
  254. if(send_counter%(RUN_END_DELAY/5)==0)
  255. {
  256. WorkFlag=0x00;
  257. }
  258. }
  259. else if(WorkState==0x00 && WorkFlag==0x02)
  260. {
  261. if(send_counter%(CHRG_END_DELAY/5)==0)
  262. {
  263. WorkFlag=0x00;
  264. }
  265. }
  266. else
  267. {
  268. WorkFlag=WorkState;
  269. }
  270. switch(WorkFlag)
  271. {
  272. case 0x00:
  273. BattSendFreq = AppDataInfo.BmsDisChrgInfoSendFreq/5;
  274. GpsSendFreq = AppDataInfo.GpsChrgInfoSendFreq/5;
  275. break;
  276. case 0x01:
  277. GpsSendFreq = AppDataInfo.GpsDisChrgInfoSendFreq/5;
  278. break;
  279. case 0x02:
  280. BattSendFreq = AppDataInfo.BmsChrgInfoSendFreq/5;
  281. break;
  282. default:
  283. BattSendFreq = AppDataInfo.BmsDisChrgInfoSendFreq/5;
  284. GpsSendFreq = AppDataInfo.GpsChrgInfoSendFreq/5;
  285. break;
  286. }
  287. if(send_counter%BattSendFreq==0)
  288. {
  289. BattMsgtoTcpType BattToTcpInfo;
  290. //osStatus_t result = osMutexAcquire(UartMutex, osWaitForever);
  291. appGetSystemTimeUtcSync(&TimeStracture);
  292. year=(TimeStracture.UTCtimer1&0xffff0000)>>16;
  293. month=(TimeStracture.UTCtimer1&0xff00)>>8;
  294. day=TimeStracture.UTCtimer1&0xff;
  295. hour=(TimeStracture.UTCtimer2&0xff000000)>>24;
  296. minute=(TimeStracture.UTCtimer2&0xff0000)>>16;
  297. sec=(TimeStracture.UTCtimer2&0xff00)>>8;
  298. UTCToBeijing((UTC8TimeType *)&UTC8TimeTcp,year,month,day,hour,minute,sec);
  299. appGetSignalInfoSync(&csq,&snr,&rsnr);
  300. DataLen= (UINT16)sizeof(BattToTcpInfo.battInfo);
  301. BattToTcpInfo.startSymbol[0] = TCP_START_SYM1;
  302. BattToTcpInfo.startSymbol[1] = TCP_START_SYM2;
  303. BattToTcpInfo.cmdSymbol = TCP_CMD_SYM;
  304. BattToTcpInfo.ansSymbol = TCP_ANS_SYM;
  305. memcpy(BattToTcpInfo.SN, AppNVMData.battSN,BATT_SN_LEN);
  306. BattToTcpInfo.encryptMethod = TCP_ENCPT_DISABLE; //not encrypt
  307. BattToTcpInfo.dataLength[0] = (DataLen>>8) & 0xFF;
  308. BattToTcpInfo.dataLength[1] = DataLen & 0xFF;
  309. #ifdef USING_PRINTF
  310. printf("year:%x,month:%d,day:%d,hour:%d,minute:%d,second:%d\n",UTC8TimeTcp.year,UTC8TimeTcp.month,UTC8TimeTcp.day,UTC8TimeTcp.hour,UTC8TimeTcp.minute,UTC8TimeTcp.second);
  311. #endif
  312. BattToTcpInfo.battInfo.sendTimeUTC[0] = (UTC8TimeTcp.year - 0x07D0) & 0xFF; //year
  313. BattToTcpInfo.battInfo.sendTimeUTC[1] = UTC8TimeTcp.month & 0xFF; //month
  314. BattToTcpInfo.battInfo.sendTimeUTC[2] = UTC8TimeTcp.day & 0xFF; //day
  315. BattToTcpInfo.battInfo.sendTimeUTC[3] = UTC8TimeTcp.hour & 0xFF; //hour
  316. BattToTcpInfo.battInfo.sendTimeUTC[4] = UTC8TimeTcp.minute & 0xFF; //mins
  317. BattToTcpInfo.battInfo.sendTimeUTC[5] = UTC8TimeTcp.second & 0xFF; //sec
  318. BattToTcpInfo.battInfo.msgMark = BATTMSG;
  319. BattToTcpInfo.battInfo.msgCollectionTimeUTC[0] = (UTC8TimeTcp.year - 0x07D0) & 0xFF; //year
  320. BattToTcpInfo.battInfo.msgCollectionTimeUTC[1] = UTC8TimeTcp.month & 0xFF; //month
  321. BattToTcpInfo.battInfo.msgCollectionTimeUTC[2] = UTC8TimeTcp.day & 0xFF; //day
  322. BattToTcpInfo.battInfo.msgCollectionTimeUTC[3] = UTC8TimeTcp.hour & 0xFF; //hour
  323. BattToTcpInfo.battInfo.msgCollectionTimeUTC[4] = UTC8TimeTcp.minute & 0xFF; //mins
  324. BattToTcpInfo.battInfo.msgCollectionTimeUTC[5] = UTC8TimeTcp.second & 0xFF; //sec
  325. BattToTcpInfo.battInfo.signalStrength = csq ;
  326. //故障等级故障代码未定义
  327. BattToTcpInfo.battInfo.errClass = 0x00;
  328. BattToTcpInfo.battInfo.errCode[0] = 0x00;
  329. BattToTcpInfo.battInfo.errCode[1] = 0x00;
  330. BattToTcpInfo.battInfo.battI[0] = battI>>8;
  331. BattToTcpInfo.battInfo.battI[1] = battI & 0xFF;
  332. //电池内外电压保持一致
  333. BattToTcpInfo.battInfo.battLinkVol[0] = battPackVol >> 8;
  334. BattToTcpInfo.battInfo.battLinkVol[1] = battPackVol & 0xFF;
  335. BattToTcpInfo.battInfo.battPackVol[0] = battPackVol >> 8;
  336. BattToTcpInfo.battInfo.battPackVol[1] = battPackVol & 0xFF;
  337. BattToTcpInfo.battInfo.switchState = battMOSSwitchState;
  338. BattToTcpInfo.battInfo.battSOC = battSOC;
  339. BattToTcpInfo.battInfo.battSOH = battSOH;
  340. memcpy(BattToTcpInfo.battInfo.batCellBalenceState,&battBalanceoInfo,4);
  341. BattToTcpInfo.battInfo.battCellNum= BATT_CELL_VOL_NUM ;
  342. for(i=0;i<BATT_CELL_VOL_NUM;i++)
  343. {
  344. BattToTcpInfo.battInfo.battCellU[i*2] = (battCellU[i]>>8) & 0xFF;
  345. BattToTcpInfo.battInfo.battCellU[i*2+1] = battCellU[i] & 0xFF;
  346. }
  347. BattToTcpInfo.battInfo.battTempNum = BATT_TEMP_NUM;
  348. for(i=0; i<BATT_TEMP_NUM; i++)
  349. {
  350. BattToTcpInfo.battInfo.battCellTemp[i] = battCellTemp[i];
  351. }
  352. BattToTcpInfo.battInfo.battWorkState = battWorkState;//电池状态,0表示静置,1表示放电,2表示充电
  353. BattToTcpInfo.battInfo.battHeatEnableState = battHeatEnableState;
  354. BattToTcpInfo.battInfo.battotherTempNum = BATT_OTHER_TEMP_NUM;//其他温度编号(包含环境温度mos温度以及接插件温度)2021-03-24其他温度修改
  355. BattToTcpInfo.battInfo.battotherTemp[0] = MOSTemp;
  356. BattToTcpInfo.battInfo.battotherTemp[1] = packTemp;
  357. BattToTcpInfo.CRC = bcc_chk((UINT8 *)&BattToTcpInfo, sizeof(BattMsgtoTcpType)-1 );
  358. //osMutexRelease(UartMutex);
  359. if(UartBattInfoRecvFlag)
  360. {
  361. len = tcpipConnectionSend(socContext.id, (UINT8 *)&BattToTcpInfo, sizeof(BattToTcpInfo), 0, 0, 0);
  362. if(len>0)
  363. {
  364. TcpSendLen = 0x02 | TcpSendLen;
  365. }
  366. else
  367. {
  368. TcpSendLen = 0xFD & TcpSendLen;
  369. }
  370. }
  371. }
  372. if(send_counter%GpsSendFreq==0)
  373. {
  374. GPSMsgtoTcpType GpsToTcpInfo;
  375. osStatus_t result = osMutexAcquire(GpsMutex, osWaitForever);
  376. appGetSystemTimeUtcSync(&TimeStracture);
  377. year=(TimeStracture.UTCtimer1&0xffff0000)>>16;
  378. month=(TimeStracture.UTCtimer1&0xff00)>>8;
  379. day=TimeStracture.UTCtimer1&0xff;
  380. hour=(TimeStracture.UTCtimer2&0xff000000)>>24;
  381. minute=(TimeStracture.UTCtimer2&0xff0000)>>16;
  382. sec=(TimeStracture.UTCtimer2&0xff00)>>8;
  383. UTCToBeijing((UTC8TimeType *)&UTC8TimeTcp,year,month,day,hour,minute,sec);
  384. DataLen= (UINT16)sizeof(GpsToTcpInfo.gpsInfo);
  385. GpsToTcpInfo.startSymbol[0] = TCP_START_SYM1;
  386. GpsToTcpInfo.startSymbol[1] = TCP_START_SYM2;
  387. GpsToTcpInfo.cmdSymbol = TCP_CMD_SYM;
  388. GpsToTcpInfo.ansSymbol = TCP_ANS_SYM;
  389. memcpy(GpsToTcpInfo.SN, AppNVMData.battSN,BATT_SN_LEN);
  390. GpsToTcpInfo.encryptMethod = TCP_ENCPT_DISABLE; //not encrypt
  391. GpsToTcpInfo.dataLength[0] = (DataLen>>8) & 0xFF;
  392. GpsToTcpInfo.dataLength[1] = DataLen & 0xFF;
  393. GpsToTcpInfo.gpsInfo.sendTimeUTC[0] = (UTC8TimeTcp.year - 0x07D0) & 0xFF; //year
  394. GpsToTcpInfo.gpsInfo.sendTimeUTC[1] = UTC8TimeTcp.month & 0xFF; //month
  395. GpsToTcpInfo.gpsInfo.sendTimeUTC[2] = UTC8TimeTcp.day & 0xFF; //day
  396. GpsToTcpInfo.gpsInfo.sendTimeUTC[3] = UTC8TimeTcp.hour & 0xFF; //hour
  397. GpsToTcpInfo.gpsInfo.sendTimeUTC[4] = UTC8TimeTcp.minute & 0xFF; //mins
  398. GpsToTcpInfo.gpsInfo.sendTimeUTC[5] = UTC8TimeTcp.second & 0xFF; //sec
  399. GpsToTcpInfo.gpsInfo.msgMark = GPSMSG;
  400. GpsToTcpInfo.gpsInfo.msgCollectionTimeUTC[0] = (UTC8TimeTcp.year - 0x07D0) & 0xFF; //year
  401. GpsToTcpInfo.gpsInfo.msgCollectionTimeUTC[1] = UTC8TimeTcp.month & 0xFF; //month
  402. GpsToTcpInfo.gpsInfo.msgCollectionTimeUTC[2] = UTC8TimeTcp.day & 0xFF; //day
  403. GpsToTcpInfo.gpsInfo.msgCollectionTimeUTC[3] = UTC8TimeTcp.hour & 0xFF; //hour
  404. GpsToTcpInfo.gpsInfo.msgCollectionTimeUTC[4] = UTC8TimeTcp.minute & 0xFF; //mins
  405. GpsToTcpInfo.gpsInfo.msgCollectionTimeUTC[5] = UTC8TimeTcp.second & 0xFF;
  406. memcpy((UINT8 *)&GpsToTcpInfo.gpsInfo.locateMark, GpsData,sizeof(GpsData));
  407. GpsToTcpInfo.CRC = bcc_chk((UINT8 *)&GpsToTcpInfo, sizeof(GPSMsgtoTcpType)-1 );
  408. osMutexRelease(GpsMutex);
  409. //if(GpsToTcpInfo.gpsInfo.locateMark==0x01)
  410. if(1)
  411. {
  412. len = tcpipConnectionSend(socContext.id, (UINT8 *)&GpsToTcpInfo, sizeof(GpsToTcpInfo), 0, 0, 0);
  413. if(len>0)
  414. {
  415. TcpSendLen = 0x04 | TcpSendLen;
  416. }
  417. else
  418. {
  419. TcpSendLen = 0xFB & TcpSendLen;
  420. }
  421. }
  422. }
  423. if(send_counter==1)//版本信息上报
  424. {
  425. VersionMsgtoTcpType VerMsgToTcpInfo;
  426. CHAR iccid[20];
  427. CHAR imei[15];
  428. appGetIccidNumSync(iccid);
  429. appGetImeiNumSync(imei);
  430. appGetSystemTimeUtcSync(&TimeStracture);
  431. year=(TimeStracture.UTCtimer1&0xffff0000)>>16;
  432. month=(TimeStracture.UTCtimer1&0xff00)>>8;
  433. day=TimeStracture.UTCtimer1&0xff;
  434. hour=(TimeStracture.UTCtimer2&0xff000000)>>24;
  435. minute=(TimeStracture.UTCtimer2&0xff0000)>>16;
  436. sec=(TimeStracture.UTCtimer2&0xff00)>>8;
  437. DataLen= (UINT16)sizeof(VerMsgToTcpInfo.VerInfo);
  438. VerMsgToTcpInfo.startSymbol[0] = TCP_START_SYM1;
  439. VerMsgToTcpInfo.startSymbol[1] = TCP_START_SYM2;
  440. VerMsgToTcpInfo.cmdSymbol = TCP_CMD_SYM;
  441. VerMsgToTcpInfo.ansSymbol = TCP_ANS_SYM;
  442. memcpy(VerMsgToTcpInfo.SN, AppNVMData.battSN,BATT_SN_LEN);
  443. VerMsgToTcpInfo.encryptMethod = TCP_ENCPT_DISABLE; //not encrypt
  444. VerMsgToTcpInfo.dataLength[0] = (DataLen>>8) & 0xFF;
  445. VerMsgToTcpInfo.dataLength[1] = DataLen & 0xFF;
  446. VerMsgToTcpInfo.VerInfo.sendTimeUTC[0] = (UTC8TimeTcp.year - 0x07D0) & 0xFF; //year
  447. VerMsgToTcpInfo.VerInfo.sendTimeUTC[1] = UTC8TimeTcp.month & 0xFF; //month
  448. VerMsgToTcpInfo.VerInfo.sendTimeUTC[2] = UTC8TimeTcp.day & 0xFF; //day
  449. VerMsgToTcpInfo.VerInfo.sendTimeUTC[3] = UTC8TimeTcp.hour & 0xFF; //hour
  450. VerMsgToTcpInfo.VerInfo.sendTimeUTC[4] = UTC8TimeTcp.minute & 0xFF; //mins
  451. VerMsgToTcpInfo.VerInfo.sendTimeUTC[5] = UTC8TimeTcp.second & 0xFF; //sec
  452. VerMsgToTcpInfo.VerInfo.msgMark = VERSIONMSG;
  453. VerMsgToTcpInfo.VerInfo.msgCollectionTimeUTC[0] = (UTC8TimeTcp.year - 0x07D0) & 0xFF; //year
  454. VerMsgToTcpInfo.VerInfo.msgCollectionTimeUTC[1] = UTC8TimeTcp.month & 0xFF; //month
  455. VerMsgToTcpInfo.VerInfo.msgCollectionTimeUTC[2] = UTC8TimeTcp.day & 0xFF; //day
  456. VerMsgToTcpInfo.VerInfo.msgCollectionTimeUTC[3] = UTC8TimeTcp.hour & 0xFF; //hour
  457. VerMsgToTcpInfo.VerInfo.msgCollectionTimeUTC[4] = UTC8TimeTcp.minute & 0xFF; //mins
  458. VerMsgToTcpInfo.VerInfo.msgCollectionTimeUTC[5] = UTC8TimeTcp.second & 0xFF;
  459. memcpy(VerMsgToTcpInfo.VerInfo.ICCID,iccid,20);
  460. memcpy(VerMsgToTcpInfo.VerInfo.IMEI,imei,15);
  461. //osMutexAcquire(UartMutex, osWaitForever);//Bms版本号上传2021-03-24修改
  462. VerMsgToTcpInfo.VerInfo.BMSHwVersion[0] = bmsHwVersion /10;
  463. VerMsgToTcpInfo.VerInfo.BMSHwVersion[1] = bmsHwVersion%10;
  464. VerMsgToTcpInfo.VerInfo.BMSSwVersion[0] = 0;
  465. VerMsgToTcpInfo.VerInfo.BMSSwVersion[1] = 0;
  466. VerMsgToTcpInfo.VerInfo.BMSSwVersion[2] = bmsSwVersion/10;
  467. VerMsgToTcpInfo.VerInfo.BMSSwVersion[3] = bmsSwVersion%10;
  468. //osMutexRelease(UartMutex);
  469. VerMsgToTcpInfo.VerInfo.NBHwVersion[0] = (HWVERSION>>8)& 0xFF;
  470. VerMsgToTcpInfo.VerInfo.NBHwVersion[1] = (HWVERSION)& 0xFF;
  471. VerMsgToTcpInfo.VerInfo.BLVersion[0] = (BLSWVERSION>>24)& 0xFF;
  472. VerMsgToTcpInfo.VerInfo.BLVersion[1] = (BLSWVERSION>>16)& 0xFF;
  473. VerMsgToTcpInfo.VerInfo.BLVersion[2] = (BLSWVERSION>>8)& 0xFF;
  474. VerMsgToTcpInfo.VerInfo.BLVersion[3] = (BLSWVERSION)& 0xFF;
  475. VerMsgToTcpInfo.VerInfo.DRVVersion[0] = (DRVSWVERSION>>24)& 0xFF;
  476. VerMsgToTcpInfo.VerInfo.DRVVersion[1] = (DRVSWVERSION>>16)& 0xFF;
  477. VerMsgToTcpInfo.VerInfo.DRVVersion[2] = (DRVSWVERSION>>8)& 0xFF;
  478. VerMsgToTcpInfo.VerInfo.DRVVersion[3] = (DRVSWVERSION)& 0xFF;
  479. VerMsgToTcpInfo.VerInfo.APPVersion[0] = (APPSWVERSION>>24)& 0xFF;
  480. VerMsgToTcpInfo.VerInfo.APPVersion[1] = (APPSWVERSION>>16)& 0xFF;
  481. VerMsgToTcpInfo.VerInfo.APPVersion[2] = (APPSWVERSION>>8)& 0xFF;
  482. VerMsgToTcpInfo.VerInfo.APPVersion[3] = (APPSWVERSION)& 0xFF;
  483. VerMsgToTcpInfo.VerInfo.BmsType = BMS_MANUFACTURE;
  484. VerMsgToTcpInfo.VerInfo.BmsInfo = BMS_INFO;
  485. VerMsgToTcpInfo.VerInfo.DataModuleType = DATA_MODULE_TYPE;
  486. VerMsgToTcpInfo.CRC = bcc_chk((UINT8 *)&VerMsgToTcpInfo, sizeof(VerMsgToTcpInfo)-1 );
  487. if(UartBattInfoRecvFlag)
  488. {
  489. len = tcpipConnectionSend(socContext.id, (UINT8 *)&VerMsgToTcpInfo, sizeof(VerMsgToTcpInfo), 0, 0, 0);
  490. if(len>0)
  491. {
  492. TcpSendLen = 0x01 | TcpSendLen;
  493. }
  494. else
  495. {
  496. TcpSendLen = 0xFE & TcpSendLen;
  497. }
  498. }
  499. else
  500. {
  501. send_counter = 1;
  502. return;
  503. }
  504. #ifdef USING_PRINTF
  505. printf("Version report! BmsSoftversion:%d.%d\n",bmsSwVersion/10,bmsSwVersion%10);
  506. #endif
  507. }
  508. if(send_counter==0)//发送本次文件中的调试信息
  509. {
  510. Debug_Read_Logfile();
  511. DebugMsgtoTcpType DebugMsgInfo;
  512. appGetSystemTimeUtcSync(&TimeStracture);
  513. year=(TimeStracture.UTCtimer1&0xffff0000)>>16;
  514. month=(TimeStracture.UTCtimer1&0xff00)>>8;
  515. day=TimeStracture.UTCtimer1&0xff;
  516. hour=(TimeStracture.UTCtimer2&0xff000000)>>24;
  517. minute=(TimeStracture.UTCtimer2&0xff0000)>>16;
  518. sec=(TimeStracture.UTCtimer2&0xff00)>>8;
  519. UTCToBeijing((UTC8TimeType *)&UTC8TimeTcp,year,month,day,hour,minute,sec);
  520. DataLen= (UINT16)sizeof(DebugMsgInfo.DebugInfo);
  521. DebugMsgInfo.startSymbol[0] = TCP_START_SYM1;
  522. DebugMsgInfo.startSymbol[1] = TCP_START_SYM2;
  523. DebugMsgInfo.cmdSymbol = TCP_CMD_SYM;
  524. DebugMsgInfo.ansSymbol = TCP_ANS_SYM;
  525. memcpy(DebugMsgInfo.SN, AppNVMData.battSN,BATT_SN_LEN);
  526. DebugMsgInfo.encryptMethod = TCP_ENCPT_DISABLE; //not encrypt
  527. DebugMsgInfo.dataLength[0] = (DataLen>>8) & 0xFF;
  528. DebugMsgInfo.dataLength[1] = DataLen & 0xFF;
  529. DebugMsgInfo.DebugInfo.sendTimeUTC[0] = (UTC8TimeTcp.year - 0x07D0) & 0xFF; //year
  530. DebugMsgInfo.DebugInfo.sendTimeUTC[1] = UTC8TimeTcp.month & 0xFF; //month
  531. DebugMsgInfo.DebugInfo.sendTimeUTC[2] = UTC8TimeTcp.day & 0xFF; //day
  532. DebugMsgInfo.DebugInfo.sendTimeUTC[3] = UTC8TimeTcp.hour & 0xFF; //hour
  533. DebugMsgInfo.DebugInfo.sendTimeUTC[4] = UTC8TimeTcp.minute & 0xFF; //mins
  534. DebugMsgInfo.DebugInfo.sendTimeUTC[5] = UTC8TimeTcp.second & 0xFF; //sec
  535. DebugMsgInfo.DebugInfo.msgMark = DEBUGMSG;
  536. strcpy(DebugMsgInfo.DebugInfo.DataBuffer, "hello");
  537. DebugMsgInfo.CRC = bcc_chk((UINT8 *)&DebugMsgInfo, sizeof(DebugMsgInfo)-1 );
  538. //len = tcpipConnectionSend(socContext.id, (UINT8 *)&DebugMsgInfo, sizeof(DebugMsgInfo), 0, 0, 0);
  539. #ifdef USING_PRINTF
  540. printf("size of debugmsginfo = %d\n",sizeof(DebugMsgInfo));
  541. printf("DebugMsgInfo!\n");
  542. UINT8* p = (UINT8 *)&DebugMsgInfo;
  543. for(i =0 ;i<sizeof(DebugMsgInfo);i++)
  544. printf("%x ",*(p+i));
  545. #endif
  546. Debug_Del_Logfile();
  547. }
  548. if(send_counter>0xffff)
  549. {
  550. send_counter = 0;
  551. }
  552. else
  553. {
  554. send_counter++;
  555. }
  556. }
  557. //Tcp数据接收处理函数
  558. static void TcpDataInfoRecvHandle()
  559. {
  560. TcpipConnectionRecvDataInd *TcpRecvData;
  561. osMessageQueueGet(TcpRecvHandle,&TcpRecvData,0,0);
  562. osDelay(100);
  563. Uart_Write_Data_Type UartWriteCmd;
  564. OsaUtcTimeTValue TimeStracture;
  565. UINT8 DataLen;
  566. UINT8 Tcp_Cmd;
  567. UINT8 Control_Cmd;
  568. UINT8 *Ptr;
  569. UINT8 TcpCmdAnswer[31];
  570. TcpCmdAnswer[0] = TCP_START_SYM1;
  571. TcpCmdAnswer[1] = TCP_START_SYM1;
  572. if(TcpRecvData != PNULL)
  573. {
  574. Ptr = TcpRecvData->data;
  575. if((*(Ptr+0)==TCP_START_SYM1)&&(*(Ptr+1)==TCP_START_SYM2))//服务器起始信息
  576. {
  577. Tcp_Cmd = *(Ptr+2);//命令标志
  578. if(*(Ptr+3)==0xFE)
  579. {
  580. TcpService=0x01;
  581. }
  582. switch (Tcp_Cmd)
  583. {
  584. case TCP_QUERY_SYM:
  585. break;
  586. case TCP_SETCMD_SYM:
  587. break;
  588. case TCP_CONCMD_SYM:
  589. {
  590. TcpCmdAnswer[2] = TCP_CONCMD_SYM;
  591. if(*(Ptr+30)==0x01)//远程升级命令
  592. {
  593. Fota_Func(Ptr,socContext.id);
  594. }
  595. else if(*(Ptr+30)==0x88)//BMS远程升级数据传输命令
  596. {
  597. Fota_Func(Ptr,socContext.id);
  598. }
  599. else if(*(Ptr+30)==0x80)//远程锁定命令
  600. {
  601. //osMutexAcquire(UartMutex, osWaitForever);
  602. TcpCmdAnswer[3] = 0x01;
  603. memcpy(&TcpCmdAnswer[4],(Ptr+4),BATT_SN_LEN);
  604. TcpCmdAnswer[21] = TCP_ENCPT_DISABLE;
  605. TcpCmdAnswer[22] = 0x00;
  606. TcpCmdAnswer[23] = 0x06;
  607. memcpy(&TcpCmdAnswer[24],(Ptr+24),6);
  608. TcpCmdAnswer[30] = bcc_chk(TcpCmdAnswer,30);
  609. if(*(Ptr+31)==0x01)//0x01代表锁定
  610. {
  611. AppNVMData.appDataModify = TRUE;
  612. AppNVMData.isBattLocked = TRUE;
  613. UartWriteCmd.WriteCmd = 0x01;
  614. UartWriteCmd.Data[0] = 0x00;
  615. UartWriteCmd.Data[1] = 0x00;
  616. if(battWorkState ==0x00)
  617. {
  618. osMessageQueuePut(UartWriteCmdHandle,&UartWriteCmd,0,1000);
  619. }
  620. tcpipConnectionSend(socContext.id,TcpCmdAnswer,31,0,0,0);
  621. }
  622. else //0x02代表解锁
  623. {
  624. AppNVMData.appDataModify = TRUE;
  625. AppNVMData.isBattLocked = FALSE;
  626. UartWriteCmd.WriteCmd = 0x01;
  627. UartWriteCmd.Data[0] = 0x00;
  628. UartWriteCmd.Data[1] = 0x03;
  629. osMessageQueuePut(UartWriteCmdHandle,&UartWriteCmd,0,1000);
  630. tcpipConnectionSend(socContext.id,TcpCmdAnswer,31,0,0,0);
  631. }
  632. //osMutexRelease(UartMutex);
  633. TcpService=0x00;
  634. }
  635. else
  636. {
  637. TcpCmdAnswer[3] = 0x0f;
  638. memcpy(&TcpCmdAnswer[4],(Ptr+4),BATT_SN_LEN);
  639. TcpCmdAnswer[21] = TCP_ENCPT_DISABLE;
  640. TcpCmdAnswer[22] = 0x00;
  641. TcpCmdAnswer[23] = 0x06;
  642. memcpy(&TcpCmdAnswer[24],(Ptr+24),6);
  643. TcpCmdAnswer[30] = bcc_chk(TcpCmdAnswer,30);
  644. tcpipConnectionSend(socContext.id,TcpCmdAnswer,31,0,0,0);
  645. }
  646. break;
  647. }
  648. default:
  649. break;
  650. }
  651. }
  652. free(TcpRecvData);
  653. }
  654. }
  655. //TCP发送校验函数
  656. UINT8 bcc_chk(UINT8* data, UINT8 length)
  657. {
  658. UINT8 bcc_chk_return = 0x00;
  659. UINT8 count = 0;
  660. while (count<length)
  661. {
  662. bcc_chk_return^=data[count];
  663. count++;
  664. }
  665. return bcc_chk_return;
  666. }
  667. //Tcp 状态转换函数
  668. static void sendQueueMsg(UINT32 msgId, UINT32 xTickstoWait)
  669. {
  670. eventCallbackMessage_t *queueMsg = NULL;
  671. queueMsg = malloc(sizeof(eventCallbackMessage_t));
  672. queueMsg->messageId = msgId;
  673. if (psEventQueueHandle)
  674. {
  675. if (pdTRUE != xQueueSend(psEventQueueHandle, &queueMsg, xTickstoWait))
  676. {
  677. ECOMM_TRACE(UNILOG_PLA_APP, sendQueueMsg_1, P_ERROR, 0, "xQueueSend error");
  678. }
  679. }
  680. }
  681. //Tcp状态注册函数
  682. static INT32 socketRegisterPSUrcCallback(urcID_t eventID, void *param, UINT32 paramLen)
  683. {
  684. CmiSimImsiStr *imsi = NULL;
  685. CmiPsCeregInd *cereg = NULL;
  686. UINT8 rssi = 0, index = 0;
  687. NmAtiNetifInfo *netif = NULL;
  688. switch(eventID)
  689. {
  690. case NB_URC_ID_SIM_READY:
  691. {
  692. imsi = (CmiSimImsiStr *)param;
  693. memcpy(gImsi, imsi->contents, imsi->length);
  694. #ifdef USING_PRINTF
  695. printf("SIM ready(imsi=%s)\n",(UINT8 *)imsi->contents);
  696. #endif
  697. break;
  698. }
  699. case NB_URC_ID_MM_SIGQ:
  700. {
  701. rssi = *(UINT8 *)param;
  702. #ifdef USING_PRINTF
  703. printf("RSSI signal=%d\n",rssi);
  704. #endif
  705. break;
  706. }
  707. case NB_URC_ID_PS_BEARER_ACTED:
  708. {
  709. #ifdef USING_PRINTF
  710. printf("Default bearer activated\n");
  711. #endif
  712. break;
  713. }
  714. case NB_URC_ID_PS_BEARER_DEACTED:
  715. {
  716. #ifdef USING_PRINTF
  717. printf("Default bearer Deactivated\n");
  718. #endif
  719. break;
  720. }
  721. case NB_URC_ID_PS_CEREG_CHANGED:
  722. {
  723. cereg = (CmiPsCeregInd *)param;
  724. gCellID = cereg->celId;
  725. #ifdef USING_PRINTF
  726. printf("URCCallBack:CEREG changed act:%d celId:%d locPresent:%d tac:%d\n", cereg->act, cereg->celId, cereg->locPresent, cereg->tac);
  727. #endif
  728. break;
  729. }
  730. case NB_URC_ID_PS_NETINFO:
  731. {
  732. netif = (NmAtiNetifInfo *)param;
  733. if (netif->netStatus == NM_NETIF_ACTIVATED)
  734. sendQueueMsg(QMSG_ID_NW_IP_READY, 0);
  735. break;
  736. }
  737. }
  738. return 0;
  739. }
  740. //Tcpz连接状态回调函数
  741. static void socketAppConnectionCallBack(UINT8 connectionEventType, void *bodyEvent)
  742. {
  743. switch(connectionEventType)
  744. {
  745. case TCPIP_CONNECTION_STATUS_EVENT:
  746. {
  747. TcpipConnectionStatusInd *statusInd;
  748. statusInd = (TcpipConnectionStatusInd *)bodyEvent;
  749. if(statusInd != PNULL)
  750. {
  751. if(statusInd->status == TCPIP_CONNECTION_STATUS_CLOSED)
  752. {
  753. #ifdef USING_PRINTF
  754. printf("socketAppConnectionCallBack socket connection %u closed,cause %u", statusInd->connectionId, statusInd->cause);
  755. #endif
  756. ECOMM_TRACE(UNILOG_PLA_APP, socketAppConnectionCallBack_1, P_ERROR, 2, "socketAppConnectionCallBack socket connection %u closed,cause %u", statusInd->connectionId, statusInd->cause);
  757. if(statusInd->connectionId == socContext.id)
  758. {
  759. socContext.id = -1;
  760. socContext.status = APP_SOCKET_CONNECTION_CLOSED;
  761. }
  762. }
  763. else if(statusInd->status == TCPIP_CONNECTION_STATUS_CONNECTING)
  764. {
  765. #ifdef USING_PRINTF
  766. printf("socketAppConnectionCallBack socket connection %u is connecting", statusInd->connectionId);
  767. #endif
  768. ECOMM_TRACE(UNILOG_PLA_APP, socketAppConnectionCallBack_2, P_INFO, 1, "socketAppConnectionCallBack socket connection %u is connecting", statusInd->connectionId);
  769. if(statusInd->connectionId == socContext.id)
  770. {
  771. socContext.status = APP_SOCKET_CONNECTION_CONNECTING;
  772. }
  773. }
  774. else if(statusInd->status == TCPIP_CONNECTION_STATUS_CONNECTED)
  775. {
  776. #ifdef USING_PRINTF
  777. printf("socketAppConnectionCallBack socket connection %u is connected", statusInd->connectionId);
  778. #endif
  779. ECOMM_TRACE(UNILOG_PLA_APP, socketAppConnectionCallBack_3, P_ERROR, 1, "socketAppConnectionCallBack socket connection %u is connected", statusInd->connectionId);
  780. if(statusInd->connectionId == socContext.id)
  781. {
  782. socContext.status = APP_SOCKET_CONNECTION_CONNECTED;
  783. }
  784. }
  785. }
  786. else
  787. {
  788. #ifdef USING_PRINTF
  789. printf("socketAppConnectionCallBack invalid connection status event");
  790. #endif
  791. ECOMM_TRACE(UNILOG_PLA_APP, socketAppConnectionCallBack_4, P_ERROR, 0, "socketAppConnectionCallBack invalid connection status event");
  792. }
  793. break;
  794. }
  795. case TCPIP_CONNECTION_RECEIVE_EVENT:
  796. {
  797. TcpipConnectionRecvDataInd *rcvInd;
  798. TcpipConnectionRecvDataInd *rcvbuffer = NULL;
  799. rcvInd = (TcpipConnectionRecvDataInd *)bodyEvent;
  800. if(rcvInd != PNULL)
  801. {
  802. rcvbuffer = malloc(sizeof(TcpipConnectionRecvDataInd));
  803. memcpy(rcvbuffer,rcvInd,sizeof(TcpipConnectionRecvDataInd));
  804. osMessageQueuePut(TcpRecvHandle,&rcvbuffer,0,1000);
  805. sendQueueMsg(QMSG_ID_SOCK_RECVPKG, 0);
  806. #ifdef USING_PRINTF
  807. uint8_t* Ptr;
  808. Ptr=rcvInd->data;
  809. printf("socket connection %u receive length %u data:", rcvInd->connectionId, rcvInd->length);
  810. for(int i = 0;i<rcvInd->length;i++)
  811. printf("%x ",*(Ptr+i));
  812. printf("\n");
  813. #endif
  814. ECOMM_TRACE(UNILOG_PLA_APP, socketAppConnectionCallBack_5, P_INFO, 2, "socketAppConnectionCallBack socket connection %u receive length %u data", rcvInd->connectionId, rcvInd->length);
  815. }
  816. else
  817. {
  818. #ifdef USING_PRINTF
  819. printf( "socketAppConnectionCallBack invalid connection rcv event");
  820. #endif
  821. ECOMM_TRACE(UNILOG_PLA_APP, socketAppConnectionCallBack_6, P_ERROR, 0, "socketAppConnectionCallBack invalid connection rcv event");
  822. }
  823. break;
  824. }
  825. case TCPIP_CONNECTION_UL_STATUS_EVENT:
  826. {
  827. TcpipConnectionUlDataStatusInd *ulStatusInd;
  828. ulStatusInd = (TcpipConnectionUlDataStatusInd *)bodyEvent;
  829. if(ulStatusInd != PNULL)
  830. {
  831. if(ulStatusInd->status == Tcpip_Connection_UL_DATA_SUCCESS)
  832. {
  833. #ifdef USING_PRINTF
  834. printf( "socketAppConnectionCallBack socket connection %u sequence %u data has sent success", ulStatusInd->connectionId, ulStatusInd->sequence);
  835. #endif
  836. ECOMM_TRACE(UNILOG_PLA_APP, socketAppConnectionCallBack_7, P_INFO, 2, "socketAppConnectionCallBack socket connection %u sequence %u data has sent success", ulStatusInd->connectionId, ulStatusInd->sequence);
  837. }
  838. else if(ulStatusInd->status == Tcpip_Connection_UL_DATA_FAIL)
  839. {
  840. #ifdef USING_PRINTF
  841. printf("socketAppConnectionCallBack socket connection %u sequence %u data has sent fail", ulStatusInd->connectionId, ulStatusInd->sequence);
  842. #endif
  843. ECOMM_TRACE(UNILOG_PLA_APP, socketAppConnectionCallBack_8, P_WARNING, 2, "socketAppConnectionCallBack socket connection %u sequence %u data has sent fail", ulStatusInd->connectionId, ulStatusInd->sequence);
  844. }
  845. }
  846. else
  847. {
  848. #ifdef USING_PRINTF
  849. printf("socketAppConnectionCallBack invalid connection ul status event");
  850. #endif
  851. ECOMM_TRACE(UNILOG_PLA_APP, socketAppConnectionCallBack_9, P_ERROR, 0, "socketAppConnectionCallBack invalid connection ul status event");
  852. }
  853. break;
  854. }
  855. default:
  856. #ifdef USING_PRINTF
  857. printf("socketAppConnectionCallBack invalid event type %u", connectionEventType);
  858. #endif
  859. ECOMM_TRACE(UNILOG_PLA_APP, socketAppConnectionCallBack_10, P_ERROR, 1, "socketAppConnectionCallBack invalid event type %u", connectionEventType);
  860. break;
  861. }
  862. }