#include "A5133main.h"\r
#include "platform_core.h"\r
#include "errcode.h"\r
+#include "custom_utils.h"\r
\r
/*********************************************************************\r
** I/O Declaration\r
Uint8 tmpbuf[80];\r
Uint8 tmpbuf_rx[80];\r
uint8_t tmpbuf_len=0;\r
+uint32_t tmpbuf_rx_timestamp = 0;\r
Uint16 Err_Loss;\r
Uint16 Err_Frame;\r
Uint32 Err_BitCnt;\r
static uint8_t send_data_index = 0;\r
static bool update_flag = false;\r
errcode_t a5133_set_send_data(uint8_t *senddata,uint8_t datalen)\r
-{\r
- if ( datalen > (64-1-8) || datalen == 0 || senddata == NULL)\r
+{ \r
+ // total(64) , header(4), timestamp(4), len(1), data(n-11) , crc(2)\r
+ if ( datalen == 0 || senddata == NULL)\r
+ {\r
+ PRINT("a5133_set_send_data data error!\n");\r
return ERRCODE_FAIL;\r
-\r
+ }\r
+ if (datalen > (64 - 1 - 4 - 4 - 2 ))\r
+ {\r
+ datalen = 64 - 1- 4-4-2 ;\r
+ senddata[datalen -1 ]= 0;\r
+ PRINT("datalen is too large cut to %d!\n",datalen);\r
+ }\r
+ uint32_t current_time = 0;\r
+ uapi_get_timestampe_ss(¤t_time);\r
if (send_data_index == 0)\r
{\r
uint8_t* p_senddata=send_data[1];\r
memset(p_senddata,0,sizeof(send_data[0]));\r
- p_senddata[0]=datalen;\r
- memcpy(p_senddata+1,senddata,datalen);\r
- uint16_t crc = CRC16_XMODEM(p_senddata+1,datalen); \r
- p_senddata[datalen+1] = ((uint8_t*)&crc)[0];\r
- p_senddata[datalen+1+1] = ((uint8_t*)&crc)[1];\r
+ memcpy(p_senddata,¤t_time,sizeof(current_time));\r
+ p_senddata[4]=datalen;\r
+ memcpy(p_senddata+1+4,senddata,datalen);\r
+ uint16_t crc = CRC16_XMODEM(p_senddata+1+4,datalen); \r
+ p_senddata[datalen+1+4] = ((uint8_t*)&crc)[0];\r
+ p_senddata[datalen+1+1+4] = ((uint8_t*)&crc)[1];\r
send_data_index = 1;\r
PRINT("send_data_index 1 datalen %d , crc %X\n",datalen,crc);\r
}else{\r
uint8_t * p_senddata=send_data[0];\r
memset(p_senddata,0,sizeof(send_data[0]));\r
- p_senddata[0]=datalen;\r
- memcpy(p_senddata+1,senddata,datalen);\r
- uint16_t crc = CRC16_XMODEM(p_senddata+1,datalen); \r
- p_senddata[datalen+1] = ((uint8_t*)&crc)[0];\r
- p_senddata[datalen+1+1] = ((uint8_t*)&crc)[1];\r
+ memcpy(p_senddata,¤t_time,sizeof(current_time));\r
+ p_senddata[4]=datalen;\r
+ memcpy(p_senddata+1+4,senddata,datalen);\r
+ uint16_t crc = CRC16_XMODEM(p_senddata+1+4,datalen); \r
+ p_senddata[datalen+1+4] = ((uint8_t*)&crc)[0];\r
+ p_senddata[datalen+1+1+4] = ((uint8_t*)&crc)[1];\r
send_data_index = 0;\r
PRINT("send_data_index 0 datalen %d , crc %X\n",datalen,crc);\r
}\r
//发送数据切换\r
#ifdef A5133_DEMO_SERVER\r
if (TimerCnt >=100)\r
- a5133_demo_msg_change_callback();\r
+ {\r
+ a5133_demo_msg_change_callback();\r
+ TimerCnt=0;\r
+ }\r
#else\r
if (TimerCnt >=500)\r
{\r
//crccheck\r
\r
a5133_gpio_scs_set_value(1);\r
- uint8_t datalen = tmpbuf[4];\r
- if (datalen >0 && datalen <= (64-4-1))\r
+ uint32_t msg_timestamp = *(uint32_t*)&tmpbuf[4];\r
+ uint8_t datalen = tmpbuf[4+4];\r
+ // total(64) , header(4), timestamp(4), len(1), data(n-11) , crc(2)\r
+ if (datalen >0 && datalen <= (64-4 -4 -1 -2 ))\r
{\r
- uint16_t crc = CRC16_XMODEM(&tmpbuf[1+4],datalen);\r
- uint16_t recv_crc = *(uint16_t*)&tmpbuf[1+datalen+4];\r
+ uint16_t crc = CRC16_XMODEM(&tmpbuf[1+4+4],datalen);\r
+ uint16_t recv_crc = *(uint16_t*)&tmpbuf[1+4+datalen+4];\r
PRINT("crc[%X] , recv_crc %X\n",crc,recv_crc);\r
if (crc != recv_crc)\r
{\r
else\r
{\r
tmpbuf_len = datalen;\r
+ tmpbuf_rx_timestamp = msg_timestamp;\r
memset(tmpbuf_rx, 0 ,sizeof(tmpbuf_rx));\r
- memcpy(tmpbuf_rx, &tmpbuf[1+4],datalen);\r
+ memcpy(tmpbuf_rx, &tmpbuf[1+4+4],datalen);\r
}\r
- printf("=====RxPacket \n");\r
+ printf("=====RxPacket timestamp %d , %s\n",tmpbuf_rx_timestamp,tmpbuf_rx);\r
\r
}else{\r
err = 1 ;\r