TcpTask.c 38 KB

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