From 003aff1766ffd3ccfe9df6096ef137340ebfeabf Mon Sep 17 00:00:00 2001
From: zhyinch <zhyinch@gmail.com>
Date: 星期五, 18 十二月 2020 16:57:26 +0800
Subject: [PATCH] Merge branch '调试' into 定位-临近

---
 Src/application/dw_app.c |  165 ++++++++++++++++++++++++++++---------------------------
 1 files changed, 84 insertions(+), 81 deletions(-)

diff --git a/Src/application/dw_app.c b/Src/application/dw_app.c
index 22a43b4..8f1a2e0 100644
--- a/Src/application/dw_app.c
+++ b/Src/application/dw_app.c
@@ -69,7 +69,7 @@
 #define FINAL_MSG_FINAL_TX_TS_IDX 18
 #define FINAL_MSG_TS_LEN 4
 
-#define STARTPOLL  REGPOLL
+#define STARTPOLL  DISCPOLL
 enum enumtagstate
 {
 	REGPOLL,
@@ -552,7 +552,7 @@
 			{
 				memcpy(&minid, &rx_buffer[ANCHOR_ID_IDX], 4);
 				tag_state=GETNEARMSG;
-				trygetnearmsg_times=5;
+				trygetnearmsg_times=10*tag_frequency;
 				mindist=temp_dist;
 			}
 			if(result==0)
@@ -576,7 +576,7 @@
 }
 	if(getsync_flag==0)
 	{
-	tagslotpos--;
+//	tagslotpos--;
 			if(tagslotpos==0||tagslotpos>max_slotpos)
 		{		
 			tagslotpos=max_slotpos;	
@@ -584,7 +584,7 @@
 		tyncpoll_time=(tagslotpos-1)*slottime;
 	}
 	mainbase_id=minid;
-	//mainbase_id = 0x1;
+//	mainbase_id = 0x4;
 }
 u8 nearmsg_mainbase=0,rec_tagpos_emptylist[32],mainbase_type;;
 void GetNearMsg(void)
@@ -628,7 +628,7 @@
 			tag_state=NEARPOLL;
 		}
 	}else{
-			tyncpoll_time = (tagslotpos--%max_slotpos)*slottime;
+//			tyncpoll_time = (tagslotpos--%max_slotpos)*slottime;
 	}
 }
 extern u8 userkey_state;
@@ -777,11 +777,11 @@
 									memcpy(&nearbase_switchdistlist[rec_nearbasepos],&rx_buffer[NR_NEARSWITCH_DISTANCE],2);
 									nearbase_distlist[rec_nearbasepos]=temp_dist;								
 									final_msg_set_ts(&tx_near_msg[FINAL_MSG_RESP_RX_NEARBASE_IDX+(rec_nearbasepos)*4], resp_rx_ts);
-									if(temp_dist<nearbase_switchdistlist[rec_nearbasepos]&&nearbase_switchdistlist[rec_nearbasepos]!=0&&temp_dist!=0)
-									{
-										mainbase_id = rec_nearbaseid;
-										tag_state = GETNEARMSG;
-									}
+//									if(temp_dist<nearbase_switchdistlist[rec_nearbasepos]&&nearbase_switchdistlist[rec_nearbasepos]!=0&&temp_dist>0)
+//									{
+//										mainbase_id = rec_nearbaseid;
+//										tag_state = GETNEARMSG;
+//									}
 								
 						}								
 							}
@@ -801,61 +801,61 @@
 		j=0;
 			if(exsistbase_list[0]==0)
 			{
-//				SetNextPollTime(tagslotpos);
+				SetNextPollTime(tagslotpos);
 			}
 		//	tyncpoll_time=0;
-//			next_nearbase_num=0;
-//			for(i=0;i<nearbase_num;i++)
-//			{
-//				if(exsistbase_list[i]>0)
-//				{		
-//					next_nearbase_num++;
-//					true_exsistbase_list[j]=exsistbase_list[i];
-//					true_nearbase_idlist[j]=nearbaseid_list[i];			
-//					true_nearbase_distlist[j++]=nearbase_distlist[i];
-//					exsistbase_list[i]--;
-//				}
-//			}
+			next_nearbase_num=0;
+			for(i=0;i<nearbase_num;i++)
+			{
+				if(exsistbase_list[i]>0)
+				{		
+					next_nearbase_num++;
+					true_exsistbase_list[j]=exsistbase_list[i];
+					true_nearbase_idlist[j]=nearbaseid_list[i];			
+					true_nearbase_distlist[j++]=nearbase_distlist[i];
+					exsistbase_list[i]--;
+				}
+			}
 
-//			if(recbase_num<3)
-//			{next_nearbase_num=next_nearbase_num;}
-//					last_nearbase_num = next_nearbase_num;
-//			for(i=0;i<last_nearbase_num-1;i++)
-//			{
-//				for(j=0;j<last_nearbase_num-1;j++)
-//				{
-//					if(true_nearbase_distlist[j]>true_nearbase_distlist[j+1])
-//					{
-//						u32 temp_dist,temp_id,temp_exsis;
-//						temp_dist=true_nearbase_distlist[j];
-//						temp_id = true_nearbase_idlist[j];
-//						temp_exsis=true_exsistbase_list[i];
-//						true_nearbase_distlist[j]=true_nearbase_distlist[j+1];
-//						true_nearbase_idlist[j]=true_nearbase_idlist[j+1];
-//						true_exsistbase_list[j]=true_exsistbase_list[j+1];
-//						
-//						true_nearbase_distlist[j+1]=temp_dist;
-//						true_nearbase_idlist[j+1]=temp_id;
-//						true_exsistbase_list[j+1]=temp_exsis;
-//					}			
-//				}
-//			}
+			if(recbase_num<3)
+			{next_nearbase_num=next_nearbase_num;}
+					last_nearbase_num = next_nearbase_num;
+			for(i=0;i<last_nearbase_num-1;i++)
+			{
+				for(j=0;j<last_nearbase_num-1;j++)
+				{
+					if(true_nearbase_distlist[j]>true_nearbase_distlist[j+1])
+					{
+						u32 temp_dist,temp_id,temp_exsis;
+						temp_dist=true_nearbase_distlist[j];
+						temp_id = true_nearbase_idlist[j];
+						temp_exsis=true_exsistbase_list[i];
+						true_nearbase_distlist[j]=true_nearbase_distlist[j+1];
+						true_nearbase_idlist[j]=true_nearbase_idlist[j+1];
+						true_exsistbase_list[j]=true_exsistbase_list[j+1];
+						
+						true_nearbase_distlist[j+1]=temp_dist;
+						true_nearbase_idlist[j+1]=temp_id;
+						true_exsistbase_list[j+1]=temp_exsis;
+					}			
+				}
+			}
 
-//			if(true_nearbase_distlist[0]<mainbase_dist-THRESHOLD_CHANGE_MAINBASE_DIST&&true_exsistbase_list[0])
-//			{
-//				changemainbase_count++;		
-//			}else{
-//				changemainbase_count = 0;
-//			}
-//			if(changemainbase_count>3)
-//			{
-//				mainbase_id = true_nearbase_idlist[0];
-//				tag_state = GETNEARMSG;
-//			}
-//			if(mainbase_lost_count>3)
-//			{
-//				tag_state = DISCPOLL;
-//			}
+			if(true_nearbase_distlist[0]<mainbase_dist-THRESHOLD_CHANGE_MAINBASE_DIST&&true_exsistbase_list[0])
+			{
+				changemainbase_count++;		
+			}else{
+				changemainbase_count = 0;
+			}
+			if(changemainbase_count>2*tag_frequency)
+			{
+				mainbase_id = true_nearbase_idlist[0];
+				tag_state = GETNEARMSG;
+			}
+			if(mainbase_lost_count>10*tag_frequency)
+			{
+				tag_state = STARTPOLL;
+			}
 //				for (i=0;i<nearbase_num;i++)
 //	{
 //		if(nearbaseid_list[i]==0)
@@ -881,22 +881,22 @@
 //			{
 //				nearbase_distlist[i]=0x1ffff;
 //			}
-//			if(para_update)
-//			{
-//			uint8_t pack_length = 0,pack_index = 0,pack_msgtype = 0;
-//				pack_msgtype = rec_remotepara[0];
-//				pack_index = rec_remotepara[1];
-//				pack_length = rec_remotepara[2];
-//				if(pack_msgtype==2)
-//				{
-//						memcpy((uint8_t*)&g_com_map + pack_index, &rec_remotepara[3], pack_length);
-//					//返回一个error状态
-//					//SendComMap(pack_datalen,pack_index);
-//					save_com_map_to_flash();
-//					delay_ms(100);
-//					NVIC_SystemReset();
-//				}
-//			}
+			if(para_update)
+			{
+			uint8_t pack_length = 0,pack_index = 0,pack_msgtype = 0;
+				pack_msgtype = rec_remotepara[0];
+				pack_index = rec_remotepara[1];
+				pack_length = rec_remotepara[2];
+				if(pack_msgtype==2)
+				{
+						memcpy((uint8_t*)&g_com_map + pack_index, &rec_remotepara[3], pack_length);
+					//返回一个error状态
+					//SendComMap(pack_datalen,pack_index);
+					save_com_map_to_flash();
+					delay_ms(100);
+					NVIC_SystemReset();
+				}
+			}
 	dwt_write32bitreg(SYS_STATUS_ID, SYS_STATUS_ALL_RX_ERR| SYS_STATUS_TXFRS |SYS_STATUS_RXFCG);
 HAL_GPIO_WritePin(LED0_GPIO, GPIO_PIN_9, GPIO_PIN_RESET);
 
@@ -976,6 +976,7 @@
 									mainbase_id=rec_nearbaseid;
 									nearbase_num=rx_buffer[NEARBASENUM_INDEX];
 									memcpy(nearbaseid_list,&rx_buffer[NEARBASEID_INDEX],nearbase_num*2);
+									if(tagslotpos!=255)
 									tag_state = NEARPOLL;
 								}
 							}
@@ -985,9 +986,13 @@
 {
 	
 	//LED0_ON;
+	SPIx_CS_GPIO->BRR = SPIx_CS;
+	delay_us(700);
+	SPIx_CS_GPIO->BSRR = SPIx_CS;
 	id =  dwt_readdevid() ;
 	    while (DWT_DEVICE_ID != id) 
     {
+		//	Dw1000_Init();
 			id =  dwt_readdevid() ;
     }
 	switch(tag_state)
@@ -1009,13 +1014,11 @@
 		LED_LG_OFF;
 		if(trygetnearmsg_times==0)
 		{
-			tag_state = DISCPOLL;
+			tag_state = STARTPOLL;
 		}
 			break;
-		case NEARPOLL:
-			//GPIO_WriteBit(EU_TX_GPIO, EU_RX_PIN, Bit_SET);
+		case NEARPOLL:	
 			NearPoll();
-			//GPIO_WriteBit(EU_TX_GPIO, EU_RX_PIN, Bit_RESET);
 			break;
 	}
 	dwt_entersleep();

--
Gitblit v1.9.3