#include #include #include #include #include "Usart.h" #include "mk_flash.h" //#include "dw_app.h" //#include "UsartII.h" //#include "main.h" #include "board.h" //#include "Spi.h" //#include "radio.h" #include "DBG.h" //#define EUART_RX_BUF_SIZE 100 #define Label_id_local 1 //±êÇ©id #define data_buff_MAX 50 //»ùÕ¾ÊýÁ¿ #define Lora_TXD_bff_MAX 220 //·¢ËÍ»º´æÇø´óС >4+8+4*»ùÕ¾ÊýÁ¿+2=14+4*»ùÕ¾ÊýÁ¿ uint8_t mUsartReceivePack[100] = {0}; uint8_t mUsart2ReceivePack[150] = {0}; uint8_t GPS_GGAmessage[150]={0}; uint8_t GPS_GSVmessage[150]={0}; double jd,wd; int analysis_num,pos_state; uint8_t state5V_prase_flag=1,gps_prase_flag=1; extern void IO_LED_control_change(uint8_t data); extern void IO_control_init(void); extern void blink_led(uint8_t*state); extern void updata_led_power_state(void); extern uint8_t gps_success_state,gps_open_flag; extern uint8_t gps_success_state,gps_enable_flag,gps_need_data_flag,gps_timeout_flag,gps_power_state; extern uint16_t gps_wait_count; typedef enum { BLE_RECV_STATE_IDLE = 0, BLE_RECV_STATE_MAC, BLE_RECV_STATE_RSSI, //BLE_RECV_STATE_LF, } E_BLERecvState; static char gps_header[20]; typedef struct { char m_pData[100]; uint32_t m_u32Len; } GGA_DataStruct; typedef struct { E_BLERecvState m_eState; char m_macHeader[100],m_rssiHeader2[100]; uint32_t m_u32HeaderLen,m_u32Header2Len; char m_acRecvBuf[128]; uint32_t m_u32RecvLen; } ST_BLERecv; uint8_t mUsart2ReceivePack_before , mUsart2ReceivePack_now; uint8_t j_ct=0,CT_satrt_temp=0,CT_satrt=0,numb_base=0 ; uint8_t id_cmpare[12]= {0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x30, 0x30, 0x30, 0x31}; //123456780001//²âÊÔ//RC2202A£º uint32_t CT_sum=0; char char_broadcast_data[80];//¹ã²¥Êý¾Ý uint8_t Lora_TXD_bff[Lora_TXD_bff_MAX]; //lora·¢ËÍ»º´æÇø uint16_t data_buff[data_buff_MAX][2]; //»ùÕ¾Êý¾Ý»º´æÇø char char_mac[14],char_ssi[6]; //int32_t distance_int; double ssi_double; uint16_t temp_16,temp_16_id,temp_16_distance,data_buff_start; uint16_t Checksum_u16(uint8_t* pdata, uint32_t len) { uint16_t sum = 0; uint32_t i; for(i=0; i>1); break; default: break; } } usart_receive_state = UsartReceiveWaitHead0; pack_index = 0; pack_length = 0; index=0; } else if((usart_receive_state == UsartReceiveWaitData) ) { //Èô¹ûÊÕµ½µÄÊÇÕý³£Í¨Ñ¶°ü mUsartReceivePack[index] = data; index++; if(index == pack_length-5) { //Èç¹ûÊÕµ½µÄindexÓ볤¶ÈÏàµÈ usart_receive_state = UsartReceiveWaitChecksum; } } else if(usart_receive_state == UsartReceiveWaitDataLen) { //ÊÕµ½Ö¸ÁîÀàÐÍ×Ö½Ú pack_datalen = data; usart_receive_state = UsartReceiveWaitData; } else if(usart_receive_state == UsartReceiveWaitIndex) { //ÊÕµ½Ö¸ÁîÀàÐÍ×Ö½Ú pack_index = data; usart_receive_state = UsartReceiveWaitDataLen; } else if(usart_receive_state == UsartReceiveWaitCMD) { //ÊÕµ½Ö¸ÁîÀàÐÍ×Ö½Ú pack_cmd = data; usart_receive_state = UsartReceiveWaitIndex; } else if(usart_receive_state == UsartReceiveWaitLength) { //ÊÕµ½³¤¶È×Ö½Ú pack_length = data; pack_index = 0; usart_receive_state = UsartReceiveWaitCMD; } else if((usart_receive_state == UsartReceiveWaitHead0) && (data == 0x55)) { //ÊÕµ½µÚÒ»¸ö°üÍ· usart_receive_state = UsartReceiveWaitHead1; } else if((usart_receive_state == UsartReceiveWaitHead1) && (data == 0xAA)) { //ÊÕµ½µÚ¶þ¸ö°üÍ· usart_receive_state = UsartReceiveWaitMsgType; } else if ((usart_receive_state == UsartReceiveWaitMsgType) && (data == 0x3)) { usart_receive_state = UsartReceiveWaitLength; pack_msgtype = data; } else if ((shell_receive_state == 0) && (data == 0x03)) { shell_receive_state = 1; uart_send(UART_ID1, data,1, NULL); } else if ((shell_receive_state == 1) && (data == 0x03)) { shell_receive_state = 2; uart_send(UART_ID1, data,1, NULL); } else if ((shell_receive_state == 2) && (data == 0x03)) { DBG_SetMode(DBG_MODE_SHELL); uart_send(UART_ID1, data,1, NULL); shell_receive_state=0; } else { usart_receive_state = UsartReceiveWaitHead0; pack_index = 0; pack_length = 0; } } else if(gps_prase_flag) { // static uint8_t index = 0; //GPS½âÎöÊý¾Ý // static ST_BLERecv BLE_recvive; // GGA_DataStruct jdrecv,wdrecv,Posstate; GPS_RecvFsm(data); // l_u8GPSBuff[l_u8GPSLen++] = data; // if(l_u8GPSLen >= sizeof(l_u8GPSBuff)) // { // NTRIPApp_ReportGGA(l_u8GPSBuff, l_u8GPSLen); // l_u8GPSLen = 0; // } // l_u8GPSRecvTick = HIDO_TimerGetTick(); // //½ÓÊÕÊý¾Ý¿ªÊ¼·ÖÎö // mUsart2ReceivePack[index] = data; //charÊý×é´«½øÀ´²ÎÊýdata // mUsart2ReceivePack_before = mUsart2ReceivePack_now; // mUsart2ReceivePack_now=data; // index++; // if( mUsart2ReceivePack_before == 0x0D && mUsart2ReceivePack_now==0x0A )//½ÓÊÕÊý¾Ýµ½¡°0x0D 0x0A¡±½áÊø // { // //½âÎö¸ÃÌõGPS±¨ÎÄ // // analysis_num=sscanf((char*)mUsart2ReceivePack,"$%[^,],%*[^,],%[^,],%*[^,],%[^,],%*[^,],%[^,],%*[^,],%*[^,],%*[^,],%*[^,],%*[^,],%*[^,],%*[^,],%*s",gps_header,wdrecv.m_pData,jdrecv.m_pData,Posstate.m_pData); // if(!memcmp(gps_header,"GNGGA",5)) // { // memcpy(GPS_GGAmessage,mUsart2ReceivePack,strlen(mUsart2ReceivePack)-2); // // wd=strtod(wdrecv.m_pData,NULL); // jd=strtod(jdrecv.m_pData,NULL); // if(wd!=0) // pos_state=atoi(Posstate.m_pData); // if(pos_state!=0) // { // pos_state=0;//·ÀÖ¹¶à´Î½øÈë // } // // } //// if(!memcmp(gps_header,"GBGSV",5)) //// {memcpy(GPS_GSVmessage,mUsart2ReceivePack,strlen(mUsart2ReceivePack)-2); //// GPS_ParseGSV(GPS_GSVmessage,strlen(GPS_GSVmessage)); //// //// } // // memset(mUsart2ReceivePack,0,sizeof(mUsart2ReceivePack)); // memset(wdrecv.m_pData,0,sizeof(wdrecv.m_pData)); // memset(jdrecv.m_pData,0,sizeof(jdrecv.m_pData)); // memset(Posstate.m_pData,0,sizeof(Posstate.m_pData)); // index=0; // mUsart2ReceivePack_before=0; // mUsart2ReceivePack_now=0; // } } }