#include "uart_can.h" #include "uart_utils.h" #include #include #include #include #define PRINT_TIME_TAG #define DBG_TAG "uart_can" #define DBG_LVL DBG_INFO #include "debug_print.h" uint16_t CRC16_XMODEM(uint8_t *puchMsg, uint32_t usDataLen) { uint16_t wCRCin = 0x0000; uint16_t wCPoly = 0x1021; uint8_t wChar = 0; while (usDataLen--) { wChar = *(puchMsg++); wCRCin ^= (wChar << 8); for (int i = 0; i < 8; i++) { if (wCRCin & 0x8000) { wCRCin = (wCRCin << 1) ^ wCPoly; } else { wCRCin = wCRCin << 1; } } } return (wCRCin); } int uart_data_send_head_lighton(uart_utils_t *uart,uint8_t wakeup_time,uint16_t tag_num){ int ret = 0; uint8_t data_len=0; if(tag_num==1){ data_len=14; }else if(tag_num==2){ data_len=18; }else if(tag_num==3){ data_len=22; }else if(tag_num==4){ data_len=26; }else if(tag_num==5){ data_len=30; } jt_head_package_t jt_head_package ={ .pre=0x2323,//# 0x23 $ 0x24 .wakeupTime=wakeup_time,//5s,<120s .func='A', .len1=0x0000, .len2=data_len, .reserve=ntohs(0x0003), .lableNum=ntohs(tag_num), }; LOG_I("%s:HEAD:%04x,%02x,%02x,%04x,%02x,%04x,%04x\r\n",__func__,jt_head_package.pre,jt_head_package.wakeupTime,jt_head_package.func, jt_head_package.len1,jt_head_package.len2,jt_head_package.reserve,jt_head_package.lableNum); if (uart == NULL){ LOG_I("uart NULL pointer\n"); ret = -1; goto error; } if(sizeof(jt_head_package) == write(uart->uart_fd, &jt_head_package, sizeof(jt_head_package))){ ret = 0; //LOG_I("%s success\n",__func__); }else{ //LOG_I("%s fail\n", __func__); ret = -2; goto error; } error: return ret; return 0; } int uart_data_send_head_lableup(uart_utils_t *uart,uint8_t wakeup_time,uint16_t tag_num){ int ret = 0; uint8_t data_len=0; if(tag_num==1){ data_len=16; }else if(tag_num==2){ data_len=27; }else if(tag_num==3){ data_len=38; }else if(tag_num==4){ data_len=49; }else if(tag_num==5){ data_len=60; } jt_head_package_t jt_head_package ={ .pre=0x2323,//# 0x23 $ 0x24 .wakeupTime=wakeup_time,//5s,<120s .func='B', .len1=0x0000, .len2=data_len, .reserve=ntohs(0x0003), .lableNum=ntohs(tag_num), }; LOG_I("%s:HEAD:%04x,%02x,%02x,%04x,%02x,%04x,%04x\r\n",__func__,jt_head_package.pre,jt_head_package.wakeupTime,jt_head_package.func, jt_head_package.len1,jt_head_package.len2,jt_head_package.reserve,jt_head_package.lableNum); if (uart == NULL){ LOG_I("uart NULL pointer\n"); ret = -1; goto error; } if(sizeof(jt_head_package) == write(uart->uart_fd, &jt_head_package, sizeof(jt_head_package))){ ret = 0; //LOG_I("%s success\n",__func__); }else{ //LOG_I("%s fail\n", __func__); ret = -2; goto error; } error: return ret; return 0; } int uart_data_send_head_lightonrule(uart_utils_t *uart,uint8_t wakeup_time){ int ret = 0; if (uart == NULL){ LOG_I("uart NULL pointer\n"); ret = -1; goto error; } jt_head_package_t jt_head_package ={ .pre=0x2323,//# 0x23 $ 0x24 .wakeupTime=wakeup_time,//5s,<120s .func='C', .len1=0x0000, .len2=20, .reserve=ntohs(0x0003), .lableNum=ntohs(0x0001), }; LOG_I("%s:HEAD:%04x,%02x,%02x,%04x,%02x,%04x,%04x\r\n",__func__,jt_head_package.pre,jt_head_package.wakeupTime,jt_head_package.func, jt_head_package.len1,jt_head_package.len2,jt_head_package.reserve,jt_head_package.lableNum); if(sizeof(jt_head_package) == write(uart->uart_fd, &jt_head_package, sizeof(jt_head_package))){ ret = 0; //LOG_I("%s success\n",__func__); }else{ //LOG_I("%s fail\n", __func__); ret = -2; goto error; } error: return ret; return 0; } int uart_data_send_head_search(uart_utils_t *uart,uint8_t wakeup_time){ int ret = 0; if (uart == NULL){ LOG_I("uart NULL pointer\n"); ret = -1; goto error; } jt_head_package_t jt_head_package ={ .pre=0x2323,//# 0x23 $ 0x24 .wakeupTime=wakeup_time,//5s,<120s .func='D', .len1=0x0000, .len2=13, .reserve=ntohs(0x0003), .lableNum=ntohs(0x0001), }; LOG_I("%s:HEAD:%04x,%02x,%02x,%04x,%02x,%04x,%04x\r\n",__func__,jt_head_package.pre,jt_head_package.wakeupTime,jt_head_package.func, jt_head_package.len1,jt_head_package.len2,jt_head_package.reserve,jt_head_package.lableNum); if(sizeof(jt_head_package) == write(uart->uart_fd, &jt_head_package, sizeof(jt_head_package))){ ret = 0; //LOG_I("%s success\n",__func__); }else{ //LOG_I("%s fail\n", __func__); ret = -2; goto error; } error: return ret; return 0; } int uart_data_send_search(uart_utils_t *uart,uint8_t lable_1,uint8_t lable_2,uint8_t lable_3,uint8_t lable_4,uint8_t lable_5, uint8_t lable_6,uint8_t lable_7,uint8_t lable_8){ int ret = 0; if (uart == NULL){ LOG_I("uart NULL pointer\n"); ret = -1; goto error; } uint8_t test1[11] = {0x00,0x00,10,lable_1,lable_2,lable_3,lable_4,lable_5,lable_6,lable_7,lable_8}; uint16_t crc_c=CRC16_XMODEM(test1,sizeof(test1)); for(int i=0;i<11;i++){ printf("%02x ",test1[i]); } LOG_I("\r\n"); LOG_I("%s XModem_CRC16 = %04x\r\n",__func__,crc_c); jt_search_package_t jt_search_package ={ .len1=0x0000, .len2=10, .lable3_1=lable_1, .lable3_2=lable_2, .lable3_3=lable_3, .lable3_4=lable_4, .lable3_5=lable_5, .lable3_6=lable_6, .lable3_7=lable_7, .lable3_8=lable_8, .crc=ntohs(crc_c), }; #if 1 if(sizeof(jt_search_package) == write(uart->uart_fd, &jt_search_package, sizeof(jt_search_package))){ ret = 0; //LOG_I("%s success\n",__func__); }else{ //LOG_I("%s fail\n", __func__); ret = -2; goto error; } #endif error: return ret; return 0; } int uart_data_send_light_rule(uart_utils_t *uart,uint8_t lable_1,uint16_t lable_2,uint32_t lable_3, uint8_t lable_1_rule, uint8_t lable_2_rule, uint8_t lable_3_rule, uint8_t led_ctrl, uint16_t flash_i, uint16_t light_d){ int ret = 0; if (uart == NULL){ LOG_I("uart NULL pointer\n"); ret = -1; goto error; } uint8_t lable_2_1=(lable_2>>8)&0xFF; uint8_t lable_2_2=(lable_2)&0xFF; uint8_t lable_3_1=(lable_3>>24)&0xFF; uint8_t lable_3_2=(lable_3>>16)&0xFF; uint8_t lable_3_3=(lable_3>>8)&0xFF; uint8_t lable_3_4=(lable_3)&0xFF; uint8_t flash_i_1=(flash_i>>8)&0xFF; uint8_t flash_i_2=(flash_i)&0xFF; uint8_t light_d_1=(light_d>>8)&0xFF; uint8_t light_d_2=(light_d)&0xFF; uint8_t test1[18] = {0x00,0x00,17,lable_1,lable_2_1,lable_2_2,lable_3_1,lable_3_2,lable_3_3,lable_3_4, lable_1_rule,lable_2_rule,lable_3_rule,led_ctrl,flash_i_1,flash_i_2,light_d_1,light_d_2}; uint16_t crc_c=CRC16_XMODEM(test1,sizeof(test1)); for(int i=0;i<18;i++){ printf("%02x ",test1[i]); } LOG_I("\r\n"); LOG_I("%s XModem_CRC16 = %04x\r\n",__func__,crc_c); jt_light_rule_package_t jt_light_rule_package ={ .len1=0x0000, .len2=17, .lable1=lable_1, .lable2=ntohs(lable_2), .lable3=ntohl(lable_3), .lable1_rule=lable_1_rule, .lable2_rule=lable_2_rule, .lable3_rule=lable_3_rule, .ledctrl=led_ctrl, .flash_i=ntohs(flash_i), .light_d=ntohs(light_d), .crc=ntohs(crc_c), }; if(sizeof(jt_light_rule_package) == write(uart->uart_fd, &jt_light_rule_package, sizeof(jt_light_rule_package))){ ret = 0; //LOG_I("%s success\n",__func__); }else{ //LOG_I("%s fail\n", __func__); ret = -2; goto error; } error: return ret; return 0; } int uart_data_send_lable(uart_utils_t *uart,uint32_t tag_1,uint8_t tag_1_lable1,uint16_t tag_1_lable2,uint32_t tag_1_lable3, uint32_t tag_2,uint8_t tag_2_lable1,uint16_t tag_2_lable2,uint32_t tag_2_lable3, uint32_t tag_3,uint8_t tag_3_lable1,uint16_t tag_3_lable2,uint32_t tag_3_lable3, uint32_t tag_4,uint8_t tag_4_lable1,uint16_t tag_4_lable2,uint32_t tag_4_lable3, uint32_t tag_5,uint8_t tag_5_lable1,uint16_t tag_5_lable2,uint32_t tag_5_lable3, uint32_t tag_num){ int ret = 0; if (uart == NULL){ LOG_I("uart NULL pointer\n"); ret = -1; goto error; } uint8_t tag_1_1=(tag_1>>24)&0xFF; uint8_t tag_1_2=(tag_1>>16)&0xFF; uint8_t tag_1_3=(tag_1>>8)&0xFF; uint8_t tag_1_4=(tag_1)&0xFF; uint8_t tag_1_lable2_1=(tag_1_lable2>>8)&0xFF; uint8_t tag_1_lable2_2=(tag_1_lable2)&0xFF; uint8_t tag_1_lable3_1=(tag_1_lable3>>24)&0xFF; uint8_t tag_1_lable3_2=(tag_1_lable3>>16)&0xFF; uint8_t tag_1_lable3_3=(tag_1_lable3>>8)&0xFF; uint8_t tag_1_lable3_4=(tag_1_lable3)&0xFF; uint8_t tag_2_1=(tag_2>>24)&0xFF; uint8_t tag_2_2=(tag_2>>16)&0xFF; uint8_t tag_2_3=(tag_2>>8)&0xFF; uint8_t tag_2_4=(tag_2)&0xFF; uint8_t tag_2_lable2_1=(tag_2_lable2>>8)&0xFF; uint8_t tag_2_lable2_2=(tag_2_lable2)&0xFF; uint8_t tag_2_lable3_1=(tag_2_lable3>>24)&0xFF; uint8_t tag_2_lable3_2=(tag_2_lable3>>16)&0xFF; uint8_t tag_2_lable3_3=(tag_2_lable3>>8)&0xFF; uint8_t tag_2_lable3_4=(tag_2_lable3)&0xFF; uint8_t tag_3_1=(tag_3>>24)&0xFF; uint8_t tag_3_2=(tag_3>>16)&0xFF; uint8_t tag_3_3=(tag_3>>8)&0xFF; uint8_t tag_3_4=(tag_3)&0xFF; uint8_t tag_3_lable2_1=(tag_3_lable2>>8)&0xFF; uint8_t tag_3_lable2_2=(tag_3_lable2)&0xFF; uint8_t tag_3_lable3_1=(tag_3_lable3>>24)&0xFF; uint8_t tag_3_lable3_2=(tag_3_lable3>>16)&0xFF; uint8_t tag_3_lable3_3=(tag_3_lable3>>8)&0xFF; uint8_t tag_3_lable3_4=(tag_3_lable3)&0xFF; uint8_t tag_4_1=(tag_4>>24)&0xFF; uint8_t tag_4_2=(tag_4>>16)&0xFF; uint8_t tag_4_3=(tag_4>>8)&0xFF; uint8_t tag_4_4=(tag_4)&0xFF; uint8_t tag_4_lable2_1=(tag_4_lable2>>8)&0xFF; uint8_t tag_4_lable2_2=(tag_4_lable2)&0xFF; uint8_t tag_4_lable3_1=(tag_4_lable3>>24)&0xFF; uint8_t tag_4_lable3_2=(tag_4_lable3>>16)&0xFF; uint8_t tag_4_lable3_3=(tag_4_lable3>>8)&0xFF; uint8_t tag_4_lable3_4=(tag_4_lable3)&0xFF; uint8_t tag_5_1=(tag_5>>24)&0xFF; uint8_t tag_5_2=(tag_5>>16)&0xFF; uint8_t tag_5_3=(tag_5>>8)&0xFF; uint8_t tag_5_4=(tag_5)&0xFF; uint8_t tag_5_lable2_1=(tag_5_lable2>>8)&0xFF; uint8_t tag_5_lable2_2=(tag_5_lable2)&0xFF; uint8_t tag_5_lable3_1=(tag_5_lable3>>24)&0xFF; uint8_t tag_5_lable3_2=(tag_5_lable3>>16)&0xFF; uint8_t tag_5_lable3_3=(tag_5_lable3>>8)&0xFF; uint8_t tag_5_lable3_4=(tag_5_lable3)&0xFF; if(tag_num==1){ uint8_t test1[14] = {0x00,0x00,13,tag_1_1,tag_1_2,tag_1_3,tag_1_4, tag_1_lable1,tag_1_lable2_1,tag_1_lable2_2,tag_1_lable3_1,tag_1_lable3_2,tag_1_lable3_3,tag_1_lable3_4}; uint16_t crc_c=CRC16_XMODEM(test1,sizeof(test1)); for(int i=0;i<14;i++){ printf("%02x ",test1[i]); } LOG_I("\r\n"); LOG_I("%s XModem_CRC16 = %04x\r\n",__func__,crc_c); jt_lable_led1_package_t jt_lable_led1_package ={ .len1=0x0000, .len2=13, .tag1=ntohl(tag_1), .tag1_lable1=tag_1_lable1, .tag1_lable2=ntohs(tag_1_lable2), .tag1_lable3=ntohl(tag_1_lable3), .crc=ntohs(crc_c), }; if(sizeof(jt_lable_led1_package) == write(uart->uart_fd, &jt_lable_led1_package, sizeof(jt_lable_led1_package))){ ret = 0; //LOG_I("%s success\n",__func__); }else{ //LOG_I("%s fail\n", __func__); ret = -2; goto error; } }else if(tag_num==2){ uint8_t test1[25] = {0x00,0x00,24,tag_1_1,tag_1_2,tag_1_3,tag_1_4, tag_1_lable1,tag_1_lable2_1,tag_1_lable2_2,tag_1_lable3_1,tag_1_lable3_2,tag_1_lable3_3,tag_1_lable3_4, tag_2_1,tag_2_2,tag_2_3,tag_2_4, tag_2_lable1,tag_2_lable2_1,tag_2_lable2_2,tag_2_lable3_1,tag_2_lable3_2,tag_2_lable3_3,tag_2_lable3_4}; uint16_t crc_c=CRC16_XMODEM(test1,sizeof(test1)); for(int i=0;i<25;i++){ printf("%02x ",test1[i]); } LOG_I("\r\n"); LOG_I("%s XModem_CRC16 = %04x\r\n",__func__,crc_c); jt_lable_led2_package_t jt_lable_led2_package ={ .len1=0x0000, .len2=24, .tag1=ntohl(tag_1), .tag1_lable1=tag_1_lable1, .tag1_lable2=ntohs(tag_1_lable2), .tag1_lable3=ntohl(tag_1_lable3), .tag2=ntohl(tag_2), .tag2_lable1=tag_2_lable1, .tag2_lable2=ntohs(tag_2_lable2), .tag2_lable3=ntohl(tag_2_lable3), .crc=ntohs(crc_c), }; if(sizeof(jt_lable_led2_package) == write(uart->uart_fd, &jt_lable_led2_package, sizeof(jt_lable_led2_package))){ ret = 0; //LOG_I("%s success\n",__func__); }else{ //LOG_I("%s fail\n", __func__); ret = -2; goto error; } }else if(tag_num==3){ uint8_t test1[36] = {0x00,0x00,35,tag_1_1,tag_1_2,tag_1_3,tag_1_4, tag_1_lable1,tag_1_lable2_1,tag_1_lable2_2,tag_1_lable3_1,tag_1_lable3_2,tag_1_lable3_3,tag_1_lable3_4, tag_2_1,tag_2_2,tag_2_3,tag_2_4, tag_2_lable1,tag_2_lable2_1,tag_2_lable2_2,tag_2_lable3_1,tag_2_lable3_2,tag_2_lable3_3,tag_2_lable3_4, tag_3_1,tag_3_2,tag_3_3,tag_3_4, tag_3_lable1,tag_3_lable2_1,tag_3_lable2_2,tag_3_lable3_1,tag_3_lable3_2,tag_3_lable3_3,tag_3_lable3_4}; uint16_t crc_c=CRC16_XMODEM(test1,sizeof(test1)); for(int i=0;i<36;i++){ printf("%02x ",test1[i]); } LOG_I("\r\n"); LOG_I("%s XModem_CRC16 = %04x\r\n",__func__,crc_c); jt_lable_led3_package_t jt_lable_led3_package ={ .len1=0x0000, .len2=35, .tag1=ntohl(tag_1), .tag1_lable1=tag_1_lable1, .tag1_lable2=ntohs(tag_1_lable2), .tag1_lable3=ntohl(tag_1_lable3), .tag2=ntohl(tag_2), .tag2_lable1=tag_2_lable1, .tag2_lable2=ntohs(tag_2_lable2), .tag2_lable3=ntohl(tag_2_lable3), .tag3=ntohl(tag_3), .tag3_lable1=tag_3_lable1, .tag3_lable2=ntohs(tag_3_lable2), .tag3_lable3=ntohl(tag_3_lable3), .crc=ntohs(crc_c), }; if(sizeof(jt_lable_led3_package) == write(uart->uart_fd, &jt_lable_led3_package, sizeof(jt_lable_led3_package))){ ret = 0; //LOG_I("%s success\n",__func__); }else{ //LOG_I("%s fail\n", __func__); ret = -2; goto error; } }else if(tag_num==4){ uint8_t test1[47] = {0x00,0x00,46,tag_1_1,tag_1_2,tag_1_3,tag_1_4, tag_1_lable1,tag_1_lable2_1,tag_1_lable2_2,tag_1_lable3_1,tag_1_lable3_2,tag_1_lable3_3,tag_1_lable3_4, tag_2_1,tag_2_2,tag_2_3,tag_2_4, tag_2_lable1,tag_2_lable2_1,tag_2_lable2_2,tag_2_lable3_1,tag_2_lable3_2,tag_2_lable3_3,tag_2_lable3_4, tag_3_1,tag_3_2,tag_3_3,tag_3_4, tag_3_lable1,tag_3_lable2_1,tag_3_lable2_2,tag_3_lable3_1,tag_3_lable3_2,tag_3_lable3_3,tag_3_lable3_4, tag_4_1,tag_4_2,tag_4_3,tag_4_4, tag_4_lable1,tag_4_lable2_1,tag_4_lable2_2,tag_4_lable3_1,tag_4_lable3_2,tag_4_lable3_3,tag_4_lable3_4}; uint16_t crc_c=CRC16_XMODEM(test1,sizeof(test1)); for(int i=0;i<47;i++){ printf("%02x ",test1[i]); } LOG_I("\r\n"); LOG_I("%s XModem_CRC16 = %04x\r\n",__func__,crc_c); jt_lable_led4_package_t jt_lable_led4_package ={ .len1=0x0000, .len2=46, .tag1=ntohl(tag_1), .tag1_lable1=tag_1_lable1, .tag1_lable2=ntohs(tag_1_lable2), .tag1_lable3=ntohl(tag_1_lable3), .tag2=ntohl(tag_2), .tag2_lable1=tag_2_lable1, .tag2_lable2=ntohs(tag_2_lable2), .tag2_lable3=ntohl(tag_2_lable3), .tag3=ntohl(tag_3), .tag3_lable1=tag_3_lable1, .tag3_lable2=ntohs(tag_3_lable2), .tag3_lable3=ntohl(tag_3_lable3), .tag4=ntohl(tag_4), .tag4_lable1=tag_4_lable1, .tag4_lable2=ntohs(tag_4_lable2), .tag4_lable3=ntohl(tag_4_lable3), .crc=ntohs(crc_c), }; if(sizeof(jt_lable_led4_package) == write(uart->uart_fd, &jt_lable_led4_package, sizeof(jt_lable_led4_package))){ ret = 0; //LOG_I("%s success\n",__func__); }else{ //LOG_I("%s fail\n", __func__); ret = -2; goto error; } }else if(tag_num==5){ uint8_t test1[58] = {0x00,0x00,57,tag_1_1,tag_1_2,tag_1_3,tag_1_4, tag_1_lable1,tag_1_lable2_1,tag_1_lable2_2,tag_1_lable3_1,tag_1_lable3_2,tag_1_lable3_3,tag_1_lable3_4, tag_2_1,tag_2_2,tag_2_3,tag_2_4, tag_2_lable1,tag_2_lable2_1,tag_2_lable2_2,tag_2_lable3_1,tag_2_lable3_2,tag_2_lable3_3,tag_2_lable3_4, tag_3_1,tag_3_2,tag_3_3,tag_3_4, tag_3_lable1,tag_3_lable2_1,tag_3_lable2_2,tag_3_lable3_1,tag_3_lable3_2,tag_3_lable3_3,tag_3_lable3_4, tag_4_1,tag_4_2,tag_4_3,tag_4_4, tag_4_lable1,tag_4_lable2_1,tag_4_lable2_2,tag_4_lable3_1,tag_4_lable3_2,tag_4_lable3_3,tag_4_lable3_4, tag_5_1,tag_5_2,tag_5_3,tag_5_4, tag_5_lable1,tag_5_lable2_1,tag_5_lable2_2,tag_5_lable3_1,tag_5_lable3_2,tag_5_lable3_3,tag_5_lable3_4}; uint16_t crc_c=CRC16_XMODEM(test1,sizeof(test1)); for(int i=0;i<58;i++){ printf("%02x ",test1[i]); } LOG_I("\r\n"); LOG_I("%s XModem_CRC16 = %04x\r\n",__func__,crc_c); jt_lable_led5_package_t jt_lable_led5_package ={ .len1=0x0000, .len2=57, .tag1=ntohl(tag_1), .tag1_lable1=tag_1_lable1, .tag1_lable2=ntohs(tag_1_lable2), .tag1_lable3=ntohl(tag_1_lable3), .tag2=ntohl(tag_2), .tag2_lable1=tag_2_lable1, .tag2_lable2=ntohs(tag_2_lable2), .tag2_lable3=ntohl(tag_2_lable3), .tag3=ntohl(tag_3), .tag3_lable1=tag_3_lable1, .tag3_lable2=ntohs(tag_3_lable2), .tag3_lable3=ntohl(tag_3_lable3), .tag4=ntohl(tag_4), .tag4_lable1=tag_4_lable1, .tag4_lable2=ntohs(tag_4_lable2), .tag4_lable3=ntohl(tag_4_lable3), .tag5=ntohl(tag_5), .tag5_lable1=tag_5_lable1, .tag5_lable2=ntohs(tag_5_lable2), .tag5_lable3=ntohl(tag_5_lable3), .crc=ntohs(crc_c), }; if(sizeof(jt_lable_led5_package) == write(uart->uart_fd, &jt_lable_led5_package, sizeof(jt_lable_led5_package))){ ret = 0; //LOG_I("%s success\n",__func__); }else{ //LOG_I("%s fail\n", __func__); ret = -2; goto error; } } error: return ret; return 0; } int uart_data_send_lighton(uart_utils_t *uart,uint8_t ledctl,uint16_t flash_i,uint16_t light_d, uint32_t tag_1,uint32_t tag_2,uint32_t tag_3,uint32_t tag_4,uint32_t tag_5,uint32_t tag_num){ int ret = 0; if (uart == NULL){ LOG_I("uart NULL pointer\n"); ret = -1; goto error; } uint8_t flash_i_h=(flash_i>>8)&0xFF; uint8_t flash_i_l=(flash_i)&0xFF; uint8_t light_d_h=(light_d>>8)&0xFF; uint8_t light_d_l=(light_d)&0xFF; uint8_t tag_1_1=(tag_1>>24)&0xFF; uint8_t tag_1_2=(tag_1>>16)&0xFF; uint8_t tag_1_3=(tag_1>>8)&0xFF; uint8_t tag_1_4=(tag_1)&0xFF; uint8_t tag_2_1=(tag_2>>24)&0xFF; uint8_t tag_2_2=(tag_2>>16)&0xFF; uint8_t tag_2_3=(tag_2>>8)&0xFF; uint8_t tag_2_4=(tag_2)&0xFF; uint8_t tag_3_1=(tag_3>>24)&0xFF; uint8_t tag_3_2=(tag_3>>16)&0xFF; uint8_t tag_3_3=(tag_3>>8)&0xFF; uint8_t tag_3_4=(tag_3)&0xFF; uint8_t tag_4_1=(tag_4>>24)&0xFF; uint8_t tag_4_2=(tag_4>>16)&0xFF; uint8_t tag_4_3=(tag_4>>8)&0xFF; uint8_t tag_4_4=(tag_4)&0xFF; uint8_t tag_5_1=(tag_5>>24)&0xFF; uint8_t tag_5_2=(tag_5>>16)&0xFF; uint8_t tag_5_3=(tag_5>>8)&0xFF; uint8_t tag_5_4=(tag_5)&0xFF; #if 0 LOG_I("ledctl = %02x\r\n",ledctl); LOG_I("flash_i_h = %02x\r\n",flash_i_h); LOG_I("flash_i_l = %02x\r\n",flash_i_l); LOG_I("light_d_h = %02x\r\n",light_d_h); LOG_I("light_d_l = %02x\r\n",light_d_l); LOG_I("tag_1_1 = %02x\r\n",tag_1_1); LOG_I("tag_1_2 = %02x\r\n",tag_1_2); LOG_I("tag_1_3 = %02x\r\n",tag_1_3); LOG_I("tag_1_4 = %02x\r\n",tag_1_4); LOG_I("tag_2_1 = %02x\r\n",tag_2_1); LOG_I("tag_2_2 = %02x\r\n",tag_2_2); LOG_I("tag_2_3 = %02x\r\n",tag_2_3); LOG_I("tag_2_4 = %02x\r\n",tag_2_4); LOG_I("tag_3_1 = %02x\r\n",tag_3_1); LOG_I("tag_3_2 = %02x\r\n",tag_3_2); LOG_I("tag_3_3 = %02x\r\n",tag_3_3); LOG_I("tag_3_4 = %02x\r\n",tag_3_4); LOG_I("tag_4_1 = %02x\r\n",tag_4_1); LOG_I("tag_4_2 = %02x\r\n",tag_4_2); LOG_I("tag_4_3 = %02x\r\n",tag_4_3); LOG_I("tag_4_4 = %02x\r\n",tag_4_4); LOG_I("tag_5_1 = %02x\r\n",tag_5_1); LOG_I("tag_5_2 = %02x\r\n",tag_5_2); LOG_I("tag_5_3 = %02x\r\n",tag_5_3); LOG_I("tag_5_4 = %02x\r\n",tag_5_4); #endif if(tag_num==1){ uint8_t test1[12] = {0x00,0x00,11,ledctl,flash_i_h,flash_i_l,light_d_h,light_d_l, tag_1_1,tag_1_2,tag_1_3,tag_1_4}; uint16_t crc_c=CRC16_XMODEM(test1,sizeof(test1)); for(int i=0;i<12;i++){ printf("%02x ",test1[i]); } LOG_I("\r\n"); LOG_I("%s XModem_CRC16 = %04x\r\n",__func__,crc_c); jt_light_led1_package_t jt_light_led1_package ={ .len1=0x0000, .len2=11, .ledCtr=ledctl, .flashInterval=ntohs(flash_i), .lightDuration=ntohs(light_d), .tag1=ntohl(tag_1), .crc=ntohs(crc_c), }; if(sizeof(jt_light_led1_package) == write(uart->uart_fd, &jt_light_led1_package, sizeof(jt_light_led1_package))){ ret = 0; //LOG_I("%s success\n",__func__); }else{ //LOG_I("%s fail\n", __func__); ret = -2; goto error; } }else if(tag_num==2){ uint8_t test1[16] = {0x00,0x00,15,ledctl,flash_i_h,flash_i_l,light_d_h,light_d_l, tag_1_1,tag_1_2,tag_1_3,tag_1_4,tag_2_1,tag_2_2,tag_2_3,tag_2_4}; uint16_t crc_c=CRC16_XMODEM(test1,sizeof(test1)); for(int i=0;i<16;i++){ printf("%02x ",test1[i]); } LOG_I("\r\n"); LOG_I("%s XModem_CRC16 = %04x\r\n",__func__,crc_c); jt_light_led2_package_t jt_light_led2_package ={ .len1=0x0000, .len2=15, .ledCtr=ledctl, .flashInterval=ntohs(flash_i), .lightDuration=ntohs(light_d), .tag1=ntohl(tag_1), .tag2=ntohl(tag_2), .crc=ntohs(crc_c), }; LOG_I("%04x,%02x,%02x,%04x,%04x,%08x,%08x,%04x\r\n",jt_light_led2_package.len1,jt_light_led2_package.len2, jt_light_led2_package.ledCtr,jt_light_led2_package.flashInterval,jt_light_led2_package.lightDuration, jt_light_led2_package.tag1,jt_light_led2_package.tag2,jt_light_led2_package.crc); if(sizeof(jt_light_led2_package) == write(uart->uart_fd, &jt_light_led2_package, sizeof(jt_light_led2_package))){ ret = 0; //LOG_I("%s success\n",__func__); }else{ //LOG_I("%s fail\n", __func__); ret = -2; goto error; } }else if(tag_num==3){ uint8_t test1[20] = {0x00,0x00,19,ledctl,flash_i_h,flash_i_l,light_d_h,light_d_l, tag_1_1,tag_1_2,tag_1_3,tag_1_4,tag_2_1,tag_2_2,tag_2_3,tag_2_4,tag_3_1,tag_3_2,tag_3_3,tag_3_4}; uint16_t crc_c=CRC16_XMODEM(test1,sizeof(test1)); for(int i=0;i<20;i++){ printf("%02x ",test1[i]); } LOG_I("\r\n"); LOG_I("%s XModem_CRC16 = %04x\r\n",__func__,crc_c); jt_light_led3_package_t jt_light_led3_package ={ .len1=0x0000, .len2=19, .ledCtr=ledctl, .flashInterval=ntohs(flash_i), .lightDuration=ntohs(light_d), .tag1=ntohl(tag_1), .tag2=ntohl(tag_2), .tag3=ntohl(tag_3), .crc=ntohs(crc_c), }; if(sizeof(jt_light_led3_package) == write(uart->uart_fd, &jt_light_led3_package, sizeof(jt_light_led3_package))){ ret = 0; //LOG_I("%s success\n",__func__); }else{ //LOG_I("%s fail\n", __func__); ret = -2; goto error; } }else if(tag_num==4){ uint8_t test1[24] = {0x00,0x00,23,ledctl,flash_i_h,flash_i_l,light_d_h,light_d_l, tag_1_1,tag_1_2,tag_1_3,tag_1_4,tag_2_1,tag_2_2,tag_2_3,tag_2_4,tag_3_1,tag_3_2,tag_3_3,tag_3_4, tag_4_1,tag_4_2,tag_4_3,tag_4_4}; uint16_t crc_c=CRC16_XMODEM(test1,sizeof(test1)); for(int i=0;i<24;i++){ printf("%02x ",test1[i]); } LOG_I("\r\n"); LOG_I("%s XModem_CRC16 = %04x\r\n",__func__,crc_c); jt_light_led4_package_t jt_light_led4_package ={ .len1=0x0000, .len2=23, .ledCtr=ledctl, .flashInterval=ntohs(flash_i), .lightDuration=ntohs(light_d), .tag1=ntohl(tag_1), .tag2=ntohl(tag_2), .tag3=ntohl(tag_3), .tag4=ntohl(tag_4), .crc=ntohs(crc_c), }; if(sizeof(jt_light_led4_package) == write(uart->uart_fd, &jt_light_led4_package, sizeof(jt_light_led4_package))){ ret = 0; //LOG_I("%s success\n",__func__); }else{ //LOG_I("%s fail\n", __func__); ret = -2; goto error; } }else if(tag_num==5){ uint8_t test1[28] = {0x00,0x00,27,ledctl,flash_i_h,flash_i_l,light_d_h,light_d_l, tag_1_1,tag_1_2,tag_1_3,tag_1_4,tag_2_1,tag_2_2,tag_2_3,tag_2_4,tag_3_1,tag_3_2,tag_3_3,tag_3_4, tag_4_1,tag_4_2,tag_4_3,tag_4_4,tag_5_1,tag_5_2,tag_5_3,tag_5_4}; uint16_t crc_c=CRC16_XMODEM(test1,sizeof(test1)); for(int i=0;i<28;i++){ printf("%02x ",test1[i]); } LOG_I("\r\n"); LOG_I("%s XModem_CRC16 = %04x\r\n",__func__,crc_c); jt_light_led5_package_t jt_light_led5_package ={ .len1=0x0000, .len2=27, .ledCtr=ledctl, .flashInterval=ntohs(flash_i), .lightDuration=ntohs(light_d), .tag1=ntohl(tag_1), .tag2=ntohl(tag_2), .tag3=ntohl(tag_3), .tag4=ntohl(tag_4), .tag5=ntohl(tag_5), .crc=ntohs(crc_c), }; if(sizeof(jt_light_led5_package) == write(uart->uart_fd, &jt_light_led5_package, sizeof(jt_light_led5_package))){ ret = 0; //LOG_I("%s success\n",__func__); }else{ //LOG_I("%s fail\n", __func__); ret = -2; goto error; } } error: return ret; return 0; } int uart_data_receive_ack(uart_utils_t *uart,uint16_t *parm_ack){ int ret = 0; jt_receive_package_t jt_receive_package; ret = uart_read_until_time(uart->uart_fd,(char *)&jt_receive_package,sizeof(jt_receive_package_t), 1000, 50); if(ret == sizeof(jt_receive_package_t)){ LOG_I("%s success:%04x,%04x,%04x,%04x\n", __func__,jt_receive_package.pre1,jt_receive_package.pre2, jt_receive_package.pre3,jt_receive_package.ack); if((jt_receive_package.pre1 == 0x2424) &&(jt_receive_package.pre2 == 0x2424) &&(jt_receive_package.pre3 == 0x2424)){ *parm_ack=jt_receive_package.ack; }else{ LOG_I("%s failed\n", __func__); ret = -2; } }else{ LOG_I("%s, failed, time out\n", __func__); ret = -1; } return ret; } int uart_data_receive_data_back(uart_utils_t *uart,uint16_t *parmAck,uint32_t *tagCode,uint8_t *tagSignal, uint8_t *totalLen,uint8_t *tagFeature,uint8_t *count,uint16_t *batteryV,uint16_t *version,uint8_t *ledCtrl, uint8_t *lable1,uint16_t *lable2,uint32_t *lable3){ int ret = 0; jt_data_back_package_t jt_data_back_package; ret = uart_read_until_time(uart->uart_fd,(char *)&jt_data_back_package,sizeof(jt_data_back_package_t), 1000, 50); if(ret == sizeof(jt_data_back_package_t)){ //LOG_I("%s success\n", __func__); if((jt_data_back_package.pre1 == 0x2424) &&(jt_data_back_package.pre2 == 0x2424) &&(jt_data_back_package.pre3 == 0x2424)){ uint8_t pre4_1=(jt_data_back_package.pre4>>8)&0xFF; uint8_t pre4_2=(jt_data_back_package.pre4)&0xFF; uint8_t tagCode_1=(ntohl(jt_data_back_package.tag)>>24)&0xFF; uint8_t tagCode_2=(ntohl(jt_data_back_package.tag)>>16)&0xFF; uint8_t tagCode_3=(ntohl(jt_data_back_package.tag)>>8)&0xFF; uint8_t tagCode_4=(ntohl(jt_data_back_package.tag))&0xFF; uint8_t battery_1=(ntohs(jt_data_back_package.battery)>>8)&0xFF; uint8_t battery_2=(ntohs(jt_data_back_package.battery))&0xFF; uint8_t version_1=(ntohs(jt_data_back_package.version)>>8)&0xFF; uint8_t version_2=(ntohs(jt_data_back_package.version))&0xFF; uint8_t lable2_1=(ntohs(jt_data_back_package.lable2)>>8)&0xFF; uint8_t lable2_2=(ntohs(jt_data_back_package.lable2))&0xFF; uint8_t lable3_1=(ntohl(jt_data_back_package.lable3)>>24)&0xFF; uint8_t lable3_2=(ntohl(jt_data_back_package.lable3)>>16)&0xFF; uint8_t lable3_3=(ntohl(jt_data_back_package.lable3)>>8)&0xFF; uint8_t lable3_4=(ntohl(jt_data_back_package.lable3))&0xFF; uint8_t test1[15] = {jt_data_back_package.len,jt_data_back_package.featureCode, jt_data_back_package.count,battery_1,battery_2,version_1,version_2,jt_data_back_package.ledCtrl, jt_data_back_package.lable1,lable2_1,lable2_2,lable3_1,lable3_2,lable3_3,lable3_4}; uint16_t crc_c=CRC16_XMODEM(test1,15); //for(int i=0;i<15;i++){ // printf("%02x ",test1[i]); //} //LOG_I("%s:XModem_CRC16 = %04x\r\n",__func__,crc_c); //LOG_I("CRC = %04x\r\n",ntohs(jt_data_back_package.crc)); *parmAck=ntohs(jt_data_back_package.pre4); *tagCode=ntohl(jt_data_back_package.tag); *tagSignal=jt_data_back_package.signal; *totalLen=jt_data_back_package.len; *tagFeature=jt_data_back_package.featureCode; *count=jt_data_back_package.count; *batteryV=ntohs(jt_data_back_package.battery); *version=ntohs(jt_data_back_package.version); *ledCtrl=jt_data_back_package.ledCtrl; *lable1=jt_data_back_package.lable1; *lable2=ntohs(jt_data_back_package.lable2); *lable3=ntohl(jt_data_back_package.lable3); }else{ // LOG_I("%s failed\n", __func__); ret = -2; } }else{ //LOG_I("%s, failed, time out\n", __func__); ret = -1; } return ret; }