From 56900ed5464e7cf4215052c706e8c22b00147e4a Mon Sep 17 00:00:00 2001
From: yincheng.zhong <634916154@qq.com>
Date: 星期三, 16 八月 2023 09:08:54 +0800
Subject: [PATCH] 代码排序后

---
 源码/核心板/Src/application/serial_at_cmd_app.c |  356 ++++++++++++++++++++++++++++++-----------------------------
 1 files changed, 181 insertions(+), 175 deletions(-)

diff --git "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/application/serial_at_cmd_app.c" "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/application/serial_at_cmd_app.c"
index 9e61343..1f0914a 100644
--- "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/application/serial_at_cmd_app.c"
+++ "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/application/serial_at_cmd_app.c"
@@ -16,204 +16,210 @@
 #define CMD_REPLY 3
 
 struct pwtag_structure pwtag;
-typedef enum{	UsartReceiveWaitHead0, 
-				UsartReceiveWaitHead1,
-				UsartReceiveWaitMsgType,
-				UsartReceiveWaitLength, 
-				UsartReceiveWaitCMD,
-				UsartReceiveWaitIndex,
-				UsartReceiveWaitDataLen,
-				UsartReceiveWaitData,
-				UsartReceiveWaitChecksum
-}UsartRecvPackState;
+typedef enum {	UsartReceiveWaitHead0,
+                UsartReceiveWaitHead1,
+                UsartReceiveWaitMsgType,
+                UsartReceiveWaitLength,
+                UsartReceiveWaitCMD,
+                UsartReceiveWaitIndex,
+                UsartReceiveWaitDataLen,
+                UsartReceiveWaitData,
+                UsartReceiveWaitChecksum
+             } UsartRecvPackState;
 uint8_t mUsartReceivePack[100] = {0};
 uint8_t send_frame[200];
 void SendConfigConfirm(uint8_t pack_msgtype,uint8_t pack_length)
 {
-	uint16_t checksum = 0;
-	send_frame[0] = 0x55;
-	send_frame[1] = 0xAA;
-	send_frame[2] = 0x09;
-	send_frame[3] = 8;
-	send_frame[4] = pack_msgtype;
-	send_frame[5] = pack_length;
+    uint16_t checksum = 0;
+    send_frame[0] = 0x55;
+    send_frame[1] = 0xAA;
+    send_frame[2] = 0x09;
+    send_frame[3] = 8;
+    send_frame[4] = pack_msgtype;
+    send_frame[5] = pack_length;
 
-	checksum = Checksum_u16(&send_frame[2],8);
-	memcpy(&send_frame[10],&checksum,2);
-	
-	UART_PushFrame(send_frame, 12);	
+    checksum = Checksum_u16(&send_frame[2],8);
+    memcpy(&send_frame[10],&checksum,2);
+
+    UART_PushFrame(send_frame, 12);
 }
 void SendAnchorState(uint16_t state)
 {
-	uint16_t checksum = 0;
-	send_frame[0] = 0x55;
-	send_frame[1] = 0xAA;
-	send_frame[2] = 0x10;
-	send_frame[3] = 14;
+    uint16_t checksum = 0;
+    send_frame[0] = 0x55;
+    send_frame[1] = 0xAA;
+    send_frame[2] = 0x10;
+    send_frame[3] = 14;
     memcpy(&send_frame[4],&dev_id,2);
-	send_frame[6] = state;
+    send_frame[6] = state;
 
 
-	checksum = Checksum_u16(&send_frame[2],14);
-	memcpy(&send_frame[16],&checksum,2);
-	
-	USART_puts(send_frame, 17);	
+    checksum = Checksum_u16(&send_frame[2],14);
+    memcpy(&send_frame[16],&checksum,2);
+
+    USART_puts(send_frame, 17);
 }
 void SendComMap(uint8_t data_length, uint8_t index)
 {
-	uint16_t checksum = 0;
-	send_frame[0] = 0x55;
-	send_frame[1] = 0xAA;
-	send_frame[2] = 0x03;
-	send_frame[3] = data_length+5;
-	send_frame[4] = CMD_REPLY;
-	send_frame[5] = index;
-	send_frame[6] = data_length;
-	memcpy(&send_frame[7], &g_com_map[index>>1], data_length);
+    uint16_t checksum = 0;
+    send_frame[0] = 0x55;
+    send_frame[1] = 0xAA;
+    send_frame[2] = 0x03;
+    send_frame[3] = data_length+5;
+    send_frame[4] = CMD_REPLY;
+    send_frame[5] = index;
+    send_frame[6] = data_length;
+    memcpy(&send_frame[7], &g_com_map[index>>1], data_length);
 
-	checksum = Checksum_u16(&send_frame[2],5+data_length);
-	memcpy(&send_frame[7+data_length],&checksum,2);
-	
-	UART_PushFrame(send_frame, data_length+9);	
+    checksum = Checksum_u16(&send_frame[2],5+data_length);
+    memcpy(&send_frame[7+data_length],&checksum,2);
+
+    UART_PushFrame(send_frame, data_length+9);
 }
-u8 remotetag_para[30],remotetag_paralen;
+u8 remotetag_para[30],remotetag_paralen,userdatasend_flag[TAG_NUM_IN_SYS];
 u8 remotesend_state=0;
 uint16_t configremotetagID,rec_times1,rec_times2;
 struct regtag_structure regtag_map;
 extern u16 taglist_pos;
-struct tagpos_structure tagpos[50];
+struct tagpos_structure tagpos[30];
 void UsartParseDataHandler(uint8_t data)
 {
-	static UsartRecvPackState usart_receive_state = UsartReceiveWaitHead0;
-	uint16_t checksum = 0;
-	static uint8_t pack_datalen = 0,pack_length = 0,pack_index = 0,pack_msgtype = 0,pack_cmd = CMD_READ;
-	static uint8_t index = 0;
-	uint8_t i;
+    static UsartRecvPackState usart_receive_state = UsartReceiveWaitHead0;
+    uint16_t checksum = 0;
+    static uint8_t pack_datalen = 0,pack_length = 0,pack_index = 0,pack_msgtype = 0,pack_cmd = CMD_READ;
+    static uint8_t index = 0;
+    uint8_t i;
 
-	
-	if(usart_receive_state == UsartReceiveWaitChecksum) {			//若收到校验和包
-		checksum = 0;
-		for(int i = 0; i<pack_length-2; i++) { 
-			checksum += mUsartReceivePack[i];
-		}
-		checksum += pack_msgtype;
-		checksum += pack_length;
-rec_times1++;
-		if(((data + checksum)&0xff) == 0xFF)				//校验通过
-		{
-			switch(pack_msgtype)
-			{
-				uint16_t serial_tag_id_recv;
-				case MSG_RW:
-						 pack_cmd = mUsartReceivePack[0];
-						 pack_index = mUsartReceivePack[1];
-						 pack_datalen = mUsartReceivePack[2];
-					switch(pack_cmd)
-					{
-						case CMD_WRITE:
-							//从mUsartReceivePack中读取pack_length长度的字节,放到全局变量中
-							memcpy((uint8_t*)&g_com_map + pack_index, &mUsartReceivePack[3], pack_datalen);
-                         //   memcpy((uint8_t*)&g_com_map2 + pack_index, &mUsartReceivePack[3], pack_datalen);
-							//返回一个error状态
-							//SendComMap(pack_datalen,pack_index);
-                            if(pack_index==CNT_RESTART*2)
-                            {
-                                SendAnchorState(SM_RESTART);
-                                SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; //软复位回到bootloader  
-                            }
-                            if(pack_index==CNT_UPDATE*2)
-                            {
-                                uint32_t result = 0;
-                                u16 tmp = 0xAAAA;
-                                SendAnchorState(SM_UPDATE);
-                                __disable_irq();
-                                result = FLASH_Prepare(0x8004A38, 2);
-                                if(result)
-                                    result = FLASH_Write(0x8004A38, (const uint8_t*)&tmp, 2); 
-                                __enable_irq();
-                                printf("进入升级模式\r\n");
-                            	//delay_ms(100);
-                                SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; //软复位回到bootloader   
-                            }
-							save_com_map_to_flash();
-							delay_ms(100);
-							NVIC_SystemReset();
-							break;
-						case CMD_READ:
-							//read包中data字节,即mUsartReceivePack[0]表示数据长度;
-						//从g_com_data结构体中的第index位置读取长度为mUsartReceivePack[0]的字节,发送出来
-                        rec_times2++;
-							SendComMap(pack_datalen,pack_index);		
-							break;
-						default:
-							break;
-					}
-					break;
-				case MSG_WTAG:    //修改标签参数
-					remotesend_state=1;
-					memcpy(&configremotetagID,&mUsartReceivePack[0],2);
-					//configremotetagID = pack_cmd|pack_index<<8;
-					//remotetag_para[0] = mUsartReceivePack[2];
-					remotetag_paralen = mUsartReceivePack[4]+3;
-					memcpy(&remotetag_para[1],&mUsartReceivePack[3],remotetag_paralen);
-					break;
-				case MSG_PWTAG:		//批量修改标签参数	
-						pwtag.groupnum = mUsartReceivePack[0];
-						pwtag.index =  mUsartReceivePack[1];
-						pwtag.remain_time = 5;
-						for(i=0;i<pwtag.groupnum;i++)
-						{
-							memcpy(pwtag.groupid[i],&mUsartReceivePack[i*6+2],4);
-							memcpy(&pwtag.group_interval[i],&mUsartReceivePack[i*6+6],2);
-						}
-							break;
-				case MSG_REGTAGRESPONSE:
-					regtag_map.index++;
-				if(regtag_map.index==MAX_REGTAGNUM)
-				{regtag_map.index = 0;}
-					regtag_map.remain_time[regtag_map.index]=5;
-					memcpy(&regtag_map.tagid[regtag_map.index],&mUsartReceivePack[0],2);
-					memcpy(&regtag_map.tag_frequency[regtag_map.index],&mUsartReceivePack[2],2);
-					memcpy(&regtag_map.tag_slotpos[regtag_map.index],&mUsartReceivePack[4],2);
-					break;
-				 case MSG_TAGPOS:             
-                    memcpy(&serial_tag_id_recv,&mUsartReceivePack[0],2);
-                    taglist_pos=CmpTagInList(serial_tag_id_recv);
-                    tagpos[taglist_pos].tagid = serial_tag_id_recv;
-                    memcpy(&tagpos[taglist_pos].baoxu,&mUsartReceivePack[2],2);
-                    memcpy(&tagpos[taglist_pos].pos,&mUsartReceivePack[4],12);
+
+    if(usart_receive_state == UsartReceiveWaitChecksum) {			//若收到校验和包
+        checksum = 0;
+        for(int i = 0; i<pack_length-2; i++) {
+            checksum += mUsartReceivePack[i];
+        }
+        checksum += pack_msgtype;
+        checksum += pack_length;
+        rec_times1++;
+        if(((data + checksum)&0xff) == 0xFF)				//校验通过
+        {
+            switch(pack_msgtype)
+            {
+                uint16_t serial_tag_id_recv;
+            case MSG_RW:
+                pack_cmd = mUsartReceivePack[0];
+                pack_index = mUsartReceivePack[1];
+                pack_datalen = mUsartReceivePack[2];
+                switch(pack_cmd)
+                {
+                case CMD_WRITE:
+                    //从mUsartReceivePack中读取pack_length长度的字节,放到全局变量中
+                    memcpy((uint8_t*)&g_com_map + pack_index, &mUsartReceivePack[3], pack_datalen);
+                    //   memcpy((uint8_t*)&g_com_map2 + pack_index, &mUsartReceivePack[3], pack_datalen);
+                    //返回一个error状态
+                    //SendComMap(pack_datalen,pack_index);
+                    if(pack_index==CNT_RESTART*2)
+                    {
+                        SendAnchorState(SM_RESTART);
+                        SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; //软复位回到bootloader
+                    }
+                    if(pack_index==CNT_UPDATE*2)
+                    {
+                        uint32_t result = 0;
+                        u16 tmp = 0xAAAA;
+                        SendAnchorState(SM_UPDATE);
+                        __disable_irq();
+                        result = FLASH_Prepare(0x8004A38, 2);
+                        if(result)
+                            result = FLASH_Write(0x8004A38, (const uint8_t*)&tmp, 2);
+                        __enable_irq();
+                        printf("进入升级模式\r\n");
+                        //delay_ms(100);
+                        SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; //软复位回到bootloader
+                    }
+                    save_com_map_to_flash();
+                    delay_ms(100);
+                    NVIC_SystemReset();
                     break;
-		}
-			SendConfigConfirm(pack_msgtype,pack_length);
-		}
-		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-2) {		//如果收到的index与长度相等
-			usart_receive_state = UsartReceiveWaitChecksum;
-		}
-	} else if(usart_receive_state == UsartReceiveWaitLength) {						//收到长度字节
-		
-			pack_length = data;
-			pack_index = 0;			
-			usart_receive_state = UsartReceiveWaitData;
-		
-	} 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)) {
-		usart_receive_state = UsartReceiveWaitLength;
-		pack_msgtype = data;
-	}
-	else {
-		usart_receive_state = UsartReceiveWaitHead0;
-		pack_index = 0;
-		pack_length = 0;
-	}
+                case CMD_READ:
+                    //read包中data字节,即mUsartReceivePack[0]表示数据长度;
+                    //从g_com_data结构体中的第index位置读取长度为mUsartReceivePack[0]的字节,发送出来
+                    rec_times2++;
+                    SendComMap(pack_datalen,pack_index);
+                    break;
+                default:
+                    break;
+                }
+                break;
+            case MSG_WTAG:    //修改标签参数
+                remotesend_state=1;
+                memcpy(&configremotetagID,&mUsartReceivePack[0],2);
+                //configremotetagID = pack_cmd|pack_index<<8;
+                //remotetag_para[0] = mUsartReceivePack[2];
+                remotetag_paralen = mUsartReceivePack[4]+3;
+                memcpy(&remotetag_para[1],&mUsartReceivePack[3],remotetag_paralen);
+                break;
+            case MSG_PWTAG:		//批量修改标签参数
+                pwtag.groupnum = mUsartReceivePack[0];
+                pwtag.index =  mUsartReceivePack[1];
+                pwtag.remain_time = 5;
+                for(i=0; i<pwtag.groupnum; i++)
+                {
+                    memcpy(pwtag.groupid[i],&mUsartReceivePack[i*6+2],4);
+                    memcpy(&pwtag.group_interval[i],&mUsartReceivePack[i*6+6],2);
+                }
+                break;
+            case MSG_REGTAGRESPONSE:
+                regtag_map.index++;
+                if(regtag_map.index==MAX_REGTAGNUM)
+                {
+                    regtag_map.index = 0;
+                }
+                regtag_map.remain_time[regtag_map.index]=5;
+                memcpy(&regtag_map.tagid[regtag_map.index],&mUsartReceivePack[0],2);
+                memcpy(&regtag_map.tag_frequency[regtag_map.index],&mUsartReceivePack[2],2);
+                memcpy(&regtag_map.tag_slotpos[regtag_map.index],&mUsartReceivePack[4],2);
+                break;
+            case MSG_TAGPOS:
+                memcpy(&serial_tag_id_recv,&mUsartReceivePack[0],2);
+                taglist_pos=CmpTagInList(serial_tag_id_recv);
+                tagpos[taglist_pos].tagid = serial_tag_id_recv;
+                tagpos[taglist_pos].datalen = mUsartReceivePack[2];
+                if(mUsartReceivePack[2]<=MAX_FRAME_LEN&&taglist_pos<30)
+                {
+                    userdatasend_flag[taglist_pos] = 1;
+                    memcpy(&tagpos[taglist_pos].data,&mUsartReceivePack[3],mUsartReceivePack[2]);
+                }
+                break;
+            }
+            SendConfigConfirm(pack_msgtype,pack_length);
+        }
+        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-2) {		//如果收到的index与长度相等
+            usart_receive_state = UsartReceiveWaitChecksum;
+        }
+    } else if(usart_receive_state == UsartReceiveWaitLength) {						//收到长度字节
+
+        pack_length = data;
+        pack_index = 0;
+        usart_receive_state = UsartReceiveWaitData;
+
+    } 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)) {
+        usart_receive_state = UsartReceiveWaitLength;
+        pack_msgtype = data;
+    }
+    else {
+        usart_receive_state = UsartReceiveWaitHead0;
+        pack_index = 0;
+        pack_length = 0;
+    }
 
 }

--
Gitblit v1.9.3