From 5309726bb8a8b310304b88c84a8ae5dd76d8188a Mon Sep 17 00:00:00 2001
From: yincheng.zhong <634916154@qq.com>
Date: 星期一, 22 一月 2024 15:35:09 +0800
Subject: [PATCH] Merge branch '免布线基站-lora' of http://47.108.70.204:60062/r/XRange_Tag into 免布线基站-lora

---
 Src/radio/Lora.c |  146 +++++++++++-------------------------------------
 1 files changed, 33 insertions(+), 113 deletions(-)

diff --git a/Src/radio/Lora.c b/Src/radio/Lora.c
index 38449a6..a3c10f7 100644
--- a/Src/radio/Lora.c
+++ b/Src/radio/Lora.c
@@ -9,6 +9,7 @@
 #include "string.h"
 #include "stdio.h"
 #include "delay.h"
+#include "dw_mbx_anc.h"
 static RadioEvents_t RadioEvents;
 #define USE_MODEM_LORA
 //#define USE_MODEM_FSK
@@ -115,6 +116,8 @@
     TX_TIMEOUT,
 }States_t;
 
+static uint8_t flag_lora_wait_sync = 0;
+
 #define RX_TIMEOUT_VALUE                            1000
 #define BUFFER_SIZE                                 64 // Define the payload size here
 
@@ -154,82 +157,27 @@
     Radio.Sleep( );
 //printf("TX SUCCESS2\r\n");
 }
+static uint8_t rxbuffer[255],rxbuff_len;
+static uint16_t rec_lp_count;
+uint8_t GetLoraBufferAndLen(uint8_t* buffer,uint16_t* lp_count)
+{
+    memcpy(buffer,rxbuffer,rxbuff_len);
+    memcpy(lp_count,&rec_lp_count,2);
+    return rxbuff_len;
+}
 extern uint16_t tx_num;
 void OnRxDone( uint8_t *payload, uint16_t size, int16_t rssi, int8_t snr )
 {
-    BufferSize = size;
-    memcpy( RX_Buffer, payload, BufferSize );
+    rec_lp_count = HAL_LPTIM_ReadCounter(&hlptim1);
+    rxbuff_len = size;
+    memcpy( rxbuffer, payload, BufferSize );
     RssiValue = rssi;
     SnrValue = snr;
     
     Radio.Standby();
     
-    if(EnableMaster)
-    {
-      if(memcmp(RX_Buffer,PongMsg,4)==0)
-      {
-        LedToggle();//LED闪烁
-				printf("Master RXD PONG!\r\n");
-        
-      }
-
-			
-//			HAL_Delay_nMS(1000);
-//     
-//        TX_Buffer[0] = 'P';
-//        TX_Buffer[1] = 'I';
-//        TX_Buffer[2] = 'N';
-//        TX_Buffer[3] = 'G'; 
-//        
-////        crc_value=RadioComputeCRC(TX_Buffer,4,CRC_TYPE_IBM);//计算得出要发送数据包CRC值
-////        TX_Buffer[4]=crc_value>>8;
-////        TX_Buffer[5]=crc_value;
-////        //Radio.Send( TX_Buffer, 6);
-//			  Radio.Send( TX_Buffer, 4);
-			
-//			  HAL_GPIO_WritePin( OUT1_GPIO_Port, OUT1_Pin,GPIO_PIN_SET);
-//		    printf("Master TXD PING!\r\n");
-//			  HAL_Delay_nMS( 1 );
-//			  HAL_GPIO_WritePin( OUT1_GPIO_Port, OUT1_Pin,GPIO_PIN_RESET);	  			
-			
-			  //printf("Master TXD PING!\r\n");
-    }
-    else
-    {
-      if(memcmp(RX_Buffer,PingMsg,4)==0)
-      {
-				
-//				HAL_GPIO_WritePin( OUT1_GPIO_Port, OUT1_Pin,GPIO_PIN_SET);
-				printf("Slave  RXD PING!\r\n");
-//			  HAL_Delay_nMS( 1 );
-//			  HAL_GPIO_WritePin( OUT1_GPIO_Port, OUT1_Pin,GPIO_PIN_RESET);	
-				
-//        LedToggle();//LED闪烁
-				//printf("Slave  RXD PING!\r\n");
-				
-//				T_R_Init(1);	
-        
-//        TX_Buffer[0] = 'P';
-//        TX_Buffer[1] = 'O';
-//        TX_Buffer[2] = 'N';
-//        TX_Buffer[3] = 'G'; 
-				
-        
-//        crc_value=RadioComputeCRC(TX_Buffer,4,CRC_TYPE_IBM);//计算得出要发送数据包CRC值
-//        TX_Buffer[4]=crc_value>>8;
-//        TX_Buffer[5]=crc_value;
-//        //Radio.Send( TX_Buffer, 6);
-				
-			
-				Radio.Send( TX_Buffer, 4);
-				printf("Slave TXD PONG!\r\n");
-      }
-      else
-      {
-        Radio.Rx( RX_TIMEOUT_VALUE ); 
-				printf("Slave TXD XXXX\r\n");
-      }   
-    }
+    flag_lora_wait_sync = 0;
+    SetFlagSyncSuccess(1);
 }
 
 void OnTxTimeout( void )
@@ -240,56 +188,13 @@
 void OnRxTimeout( void )
 {
     Radio.Standby();
-    if(EnableMaster)
-    {
-        TX_Buffer[0] = 'P';
-        TX_Buffer[1] = 'I';
-        TX_Buffer[2] = 'N';
-        TX_Buffer[3] = 'G'; 
-        
-//        crc_value=RadioComputeCRC(TX_Buffer,4,CRC_TYPE_IBM);//计算得出要发送数据包CRC值
-//        TX_Buffer[4]=crc_value>>8;
-//        TX_Buffer[5]=crc_value;
-        //Radio.Send( TX_Buffer, 6);
-			  Radio.Send( TX_Buffer, 4);
-			
-//			  HAL_GPIO_WritePin( OUT1_GPIO_Port, OUT1_Pin,GPIO_PIN_SET);
-//			  HAL_Delay_nMS( 1 );
-//			  HAL_GPIO_WritePin( OUT1_GPIO_Port, OUT1_Pin,GPIO_PIN_RESET);	  		
-			  printf("Master TXD PING!\r\n");
-    }
-    else
-    {
-      Radio.Rx( RX_TIMEOUT_VALUE ); 
-    }
+    flag_lora_wait_sync = 0;
 }
 
 void OnRxError( void )
 {
-
+    flag_lora_wait_sync = 0;
     Radio.Standby();
-    if(EnableMaster)
-    {
-        TX_Buffer[0] = 'P';
-        TX_Buffer[1] = 'I';
-        TX_Buffer[2] = 'N';
-        TX_Buffer[3] = 'G'; 
-        
-//        crc_value=RadioComputeCRC(TX_Buffer,4,CRC_TYPE_IBM);//计算得出要发送数据包CRC值
-//        TX_Buffer[4]=crc_value>>8;
-//        TX_Buffer[5]=crc_value;
-        //Radio.Send( TX_Buffer, 6);
-			  Radio.Send( TX_Buffer, 4);
-//			  HAL_GPIO_WritePin( OUT1_GPIO_Port, OUT1_Pin,GPIO_PIN_SET);
-//			  HAL_Delay_nMS( 1 );
-//			  HAL_GPIO_WritePin( OUT1_GPIO_Port, OUT1_Pin,GPIO_PIN_RESET);	  		
-			  printf("Master TXD PING!\r\n");
-    }
-    else
-    {
-      Radio.Rx( RX_TIMEOUT_VALUE ); 
-    }
-  
 }
 
 
@@ -378,3 +283,18 @@
 //          TX_Buffer[5]=crc_value;
 
 }
+#define SYNC_CHANNEL_FRQ 48000000
+uint8_t GetFlagLoraWaitSync(void)
+{
+    return flag_lora_wait_sync;
+}
+void SwitchLoraToSyncRec()
+{
+    RadioEvents.RxDone = OnRxDone;
+    RadioEvents.RxTimeout = OnRxTimeout;
+    RadioEvents.RxError = OnRxError;
+    Radio.Init( &RadioEvents );
+    Radio.SetChannel( SYNC_CHANNEL_FRQ );	
+    flag_lora_wait_sync = 1;  
+}
+

--
Gitblit v1.9.3