| | |
| | | #include "uart.h" |
| | | #include "gpio.h" |
| | | #include "system_mem_para.h" |
| | | #include "wrc_sizhu_v4.h" |
| | | |
| | | WRC_CTRL_PARA_T wrc_ctrl_para_g={.wrc_state=WRC_IDLE}; |
| | | WRC_UART_PARA_T wrc_uart_para_g = {.recv_flag = RESET}; |
| | |
| | | WRC_SEND_NORMAL(buffer,205); |
| | | } |
| | | |
| | | LINK_STATUS link_data_analysis(uint8_t *receive_buf) |
| | | LINK_STATUS LinkDataAnalysis(uint8_t *receive_buf) |
| | | { |
| | | char *buf_p = NULL; |
| | | uint8_t check_sum = 0; |
| | | uint16_t count_i = 0; |
| | | LINK_STATUS return_flag = LINK_NONE; |
| | | |
| | | for(count_i = 0;count_i< 100;count_i++){ |
| | | if((receive_buf[count_i]==0x41)&&(receive_buf[count_i+1]==0x41)) |
| | |
| | | |
| | | if((*(buf_p + 89) == check_sum)&&(*(buf_p + 90) == 0x16)){ |
| | | if(*(buf_p + 2) == 1){ |
| | | return_flag = LINK_OK; |
| | | if((*(buf_p+3) != 1)&&(*(buf_p+3) <0x39)){ |
| | | link_info_g.net_signal_intensity = *(buf_p+3); |
| | | } |
| | | else{ |
| | | link_info_g.net_signal_intensity = 0; |
| | | } |
| | | |
| | | arrayA_2_arrayB((uint8_t *)(buf_p+4), (uint8_t *)link_info_g.ICCID, 20, LITTLE_ENDIAN); |
| | | link_info_g.SIM_Type = *(buf_p + 24); |
| | | arrayA_2_arrayB((uint8_t *)(buf_p+27), (uint8_t *)link_info_g.IMEI, 15, LITTLE_ENDIAN); |
| | | arrayA_2_arrayB((uint8_t *)(buf_p+44), (uint8_t *)link_info_g.SNR, 2, LITTLE_ENDIAN); |
| | | |
| | | |
| | | |
| | | }else{ |
| | | return_flag = LINK_NONE; |
| | | } |
| | | } |
| | | } |
| | | |
| | | return return_flag; |
| | | } |
| | | |
| | | |
| | | } |
| | | WRC_STATUS ProtocolDataAnalysis(uint8_t *receive_buf) |
| | | { |
| | | char *buf_p = NULL; |
| | | char *buf_next_p = NULL; |
| | | // uint16_t check_crc = 0; |
| | | uint16_t count_i = 0; |
| | | |
| | | buf_p = strstr((char *)receive_buf , "+R"); |
| | | if(buf_p != NULL){ |
| | | buf_next_p = strstr(buf_p , ","); |
| | | if(buf_next_p != NULL){ |
| | | return SizhuV4ProtocolDataAnalysis((uint8_t *)buf_next_p); |
| | | |
| | | } |
| | | } |
| | | |
| | | return WRC_WAIT_REC_DATA; |
| | | |
| | | } |
| | | |
| | |
| | | delay_us(10); |
| | | WRC_PWR_ON; |
| | | |
| | | //?±ØÒªµÄͨѶ²ÎÊý³õʼ»¯¿ÉÒÔ·ÅÔÚÕâÀï |
| | | //?±ØÒªµÄͨѶ²ÎÊý³õʼ»¯¿ÉÒÔ·ÅÔÚÕâÀï,Ò²¿ÉÒÔ·ÅÔÚÁªÍø³É¹¦Ö®ºó |
| | | SizhuV4SendParaInit(); |
| | | |
| | | return WRC_SEND_DATA; |
| | | } |
| | |
| | | |
| | | WRC_STATUS WrcWaitRecDataPro(void) |
| | | { |
| | | |
| | | WRC_STATUS return_status; |
| | | //½ÓÊÕbuf´¦Àí |
| | | WRC_RX_DMA_check(&wrc_uart_para_g); |
| | | |
| | |
| | | if(wrc_uart_para_g.recv_flag == SET){ |
| | | wrc_uart_para_g.recv_flag = RESET; |
| | | if(wrc_ctrl_para_g.link_status ==LINK_NONE){ |
| | | |
| | | }else if(wrc_ctrl_para_g.link_status ==LINK_OK){ |
| | | |
| | | } |
| | | } |
| | | |
| | | wrc_ctrl_para_g.link_status = LinkDataAnalysis(wrc_uart_para_g.recv_buf); |
| | | if(wrc_ctrl_para_g.link_status ==LINK_OK){ |
| | | memset(wrc_uart_para_g.recv_buf,0,sizeof(wrc_uart_para_g.recv_buf)); |
| | | return WRC_SEND_DATA; |
| | | } |
| | | }else if(wrc_ctrl_para_g.link_status ==LINK_OK){ |
| | | return_status = ProtocolDataAnalysis(wrc_uart_para_g.recv_buf); |
| | | memset(wrc_uart_para_g.recv_buf,0,sizeof(wrc_uart_para_g.recv_buf)); |
| | | return return_status; |
| | | } |
| | | } |
| | | |
| | | |
| | | //Åжϳ¬Ê±Í˳ö |
| | | return WRC_CLOSE_PWR; |
| | | |
| | | } |