From d9eeaa73e91eb757f8707e26f204f443fe956a3f Mon Sep 17 00:00:00 2001 From: zhangbo <zhangbo@qq.com> Date: 星期二, 04 三月 2025 15:16:26 +0800 Subject: [PATCH] lora能正常发送 --- keil/lora_3029.c | 907 ++++++++++++++++++++++++++++--------------------------- 1 files changed, 461 insertions(+), 446 deletions(-) diff --git a/keil/lora_3029.c b/keil/lora_3029.c index 3a64974..e08ecfd 100644 --- a/keil/lora_3029.c +++ b/keil/lora_3029.c @@ -1,478 +1,493 @@ -#include "lora_3029.h" -#include "mk_spi.h" -#include "global_param.h" -#include "pan_port.h" -#include "pan_rf.h" -#include "dw_app_anchor.h" -//#include "WS2812.h" +//#include "lora_3029.h" +//#include "mk_spi.h" +//#include "global_param.h" //#include "pan_port.h" -//#include "pan_param.h" //#include "pan_rf.h" -//#define RX_TIMEOUT_VALUE 1000 -//extern LPTIM_HandleTypeDef hlptim1; -/***lora接收,发送变量定义******/ -#define RX_TIMEOUT_VALUE 0 -#define BUFFER_SIZE 255 // Define the payload size here -uint16_t BufferSize = BUFFER_SIZE; -uint8_t TX_Buffer[BUFFER_SIZE]; -uint8_t RX_Buffer[BUFFER_SIZE]; - -int8_t RssiValue = 0; -int8_t SnrValue = 0; -extern uint32_t current_count; - -extern uint32_t dev_id; -uint8_t yuyin_no_sleep_flag,no_rx_flag; -uint8_t lora_up_rec_flag; -static uint16_t source_id; -/***lora接收,发送变量定义******/ -uint32_t wg_lost_count = 10; -static uint8_t tx_buf[10] = {0x55, 0x44, 0x33, 0x22, 0x11}; -static uint8_t rx_buf[10] = {0x00}; -//extern uint32_t uwbled,gpsled,loraled,powerled; -extern uint8_t bat_percent,taglist_num; -//uint8_t report_ancnum; -//uint16_t report_ancdist[ANC_MAX_NUM],report_ancid[ANC_MAX_NUM]; -extern void spi_transfer_callback(void *dev, uint32_t err_code); -extern uint16_t ancidlist_rec[TAG_NUM_IN_SYS],ancidlist_send[TAG_NUM_IN_SYS],rec_ancidlist[TAG_NUM_IN_SYS]; -extern uint8_t report_ancnum; -extern uint16_t report_ancdist[ANC_MAX_NUM],report_ancid[ANC_MAX_NUM]; -void Lora_init(void) -{ -// rf_write_reg(0x04, 0x55); -// rf_port.spi_readwrite(0x09); -// uint8_t rx_data = 0; // 用于存储接收的数据 -// spi_transfer(SPI_ID0, 0x09, rx_buf, 1, spi_transfer_callback); - uint32_t ret = 0; - uint32_t cnt = 0; - ret=rf_init(); - - set_test_mode1_reg(); - if(ret== 1) - { - //printf("LORA Init Fail"); - while(1); - } - else - { - //printf("LORA Init OK\r\n"); - } - -} +//#include "dw_app_anchor.h" +//#include "HIDO_TypeDef.h" +////#include "WS2812.h" +////#include "pan_port.h" +////#include "pan_param.h" +////#include "pan_rf.h" +////#define RX_TIMEOUT_VALUE 1000 +////extern LPTIM_HandleTypeDef hlptim1; +///***lora接收,发送变量定义******/ -//void TagListUpdate(void) +//extern uint32_t current_count; + +//extern uint32_t dev_id; +//uint8_t yuyin_no_sleep_flag,no_rx_flag; +//uint8_t lora_up_rec_flag; +//static uint16_t source_id; +///***lora接收,发送变量定义******/ +//uint32_t wg_lost_count = 10; +//static uint8_t tx_buf[10] = {0x55, 0x44, 0x33, 0x22, 0x11}; +//static uint8_t rx_buf[10] = {0x00}; +////extern uint32_t uwbled,gpsled,loraled,powerled; +//extern uint8_t bat_percent,taglist_num; +////uint8_t report_ancnum; +////uint16_t report_ancdist[ANC_MAX_NUM],report_ancid[ANC_MAX_NUM]; +//extern void spi_transfer_callback(void *dev, uint32_t err_code); +//extern uint16_t ancidlist_rec[TAG_NUM_IN_SYS],ancidlist_send[TAG_NUM_IN_SYS],rec_ancidlist[TAG_NUM_IN_SYS]; +//extern uint8_t report_ancnum; +//extern uint16_t report_ancdist[ANC_MAX_NUM],report_ancid[ANC_MAX_NUM]; +////extern u8 active_flag; +////void LoraInit(void) +////{ +//// RadioEvents.TxDone = OnTxDone; +//// RadioEvents.RxDone = OnRxDone; +//// RadioEvents.TxTimeout = OnTxTimeout; +//// RadioEvents.RxTimeout = OnRxTimeout; +//// RadioEvents.RxError = OnRxError; + +//// Radio.Init( &RadioEvents ); +//// SwitchLoraSettings(UWB_CHANNEL_FRQ+group_id,UWB_CHANNEL_SF,0); //切换lora接收频点 +//// if(active_flag) +//// { +//// Radio.Rx( 0 ); +//// }else{ +//// Radio.Sleep(); +//// } +////// Radio.SetRxDutyCycle(RxDutyCycle_RX_time,RxDutyCycle_SLEEP_time); +//// +////} +//void Lora_init(void) //{ -// uint16_t i,j=0,k=0,temp[TAG_NUM_IN_SYS]; -// for(i=0; i<taglist_num; i++) +//// rf_write_reg(0x04, 0x55); +//// rf_port.spi_readwrite(0x09); +//// uint8_t rx_data = 0; // 用于存储接收的数据 +//// spi_transfer(SPI_ID0, 0x09, rx_buf, 1, spi_transfer_callback); +// uint32_t ret = 0; +// uint32_t cnt = 0; +// ret=rf_init(); +// +// set_test_mode1_reg(); +// if(ret== 1) // { -// if(tagofflinetime[i]++<REPORT_TAG_KEEPTIMES) +// //printf("LORA Init Fail"); +// while(1); +// } +// else +// { +// //printf("LORA Init OK\r\n"); +// } + +//} + + +////void TagListUpdate(void) +////{ +//// uint16_t i,j=0,k=0,temp[TAG_NUM_IN_SYS]; +//// for(i=0; i<taglist_num; i++) +//// { +//// if(tagofflinetime[i]++<REPORT_TAG_KEEPTIMES) +//// { +//// report_ancid[k]=tagid_list[i]; +//// report_ancdist[k++]=tagdist_list[i]; +//// } +//// if(tagofflinetime[i]++<TAG_KEEPTIMES) +//// { +//// tagid_list[j]=tagid_list[i]; +//// tagdist_list[j] = tagdist_list[i]; +//// tagofflinetime[j++]=tagofflinetime[i]; +//// } +//// } +//// report_ancnum = k; +//// taglist_num=j; +////} +//extern wg_state_enum wg_state; +//uint8_t lora_sendbuffer[200]; +//uint8_t seq_num; +//extern uint16_t lora_up_uwb_flag; +////extern uint8_t wg_lost_count; +//uint16_t wg_report_freq,wg_report_id; +//uint8_t wg_report_sf; +//#define WG_LOST_SWITCH_THRES 3 +//#define WG_LOST_NOUWB_COUNT 60 +//#define DEFAULT_WG_ID 0xFFFF +//#define DEFAULT_LR_WG_ID 0xFFFE +//uint8_t lora_jianting_flag = 1; +//void LoraReportFreqPoll(void) +//{ +// // wg_state = WG_Lost; +// if(wg_lost_count++>WG_LOST_NOUWB_COUNT) +// { +// lora_jianting_flag = 0; +// } else { +// lora_jianting_flag = 1; +// } +// if(wg_state==WG_Lost) +// { +// static uint8_t channel_switch_count = 0; +// // channel_switch_count = 10; +// if(channel_switch_count++>1) // { -// report_ancid[k]=tagid_list[i]; -// report_ancdist[k++]=tagdist_list[i]; +//// channel_switch_count = 0; +//// wg_report_id = DEFAULT_LR_WG_ID; +//// wg_report_freq = LR_DATA_CHANNEL_FRQ; //如果丢失链接就进入WG管理信道。 +//// wg_report_sf = LR_DATA_CHANNEL_SF; // } -// if(tagofflinetime[i]++<TAG_KEEPTIMES) +// else +// { +// wg_report_id = DEFAULT_WG_ID; +// wg_report_freq = REPORT_MANGE_CHANNEL_FRQ; //如果丢失链接就进入WG管理信道。 +// wg_report_sf = REPORT_CHANNEL_SF; +//// wg_report_freq = TEST_MANAGE_CHANNEL_FRQ; +//// wg_report_sf = TEST_MANAGE_CHANNEL_SF; +// } +// } else { +// if(wg_lost_count>WG_LOST_SWITCH_THRES) // { -// tagid_list[j]=tagid_list[i]; -// tagdist_list[j] = tagdist_list[i]; -// tagofflinetime[j++]=tagofflinetime[i]; +// wg_state = WG_Lost; // } // } -// report_ancnum = k; -// taglist_num=j; //} -extern wg_state_enum wg_state; -uint8_t lora_sendbuffer[200]; -uint8_t seq_num; -extern uint16_t lora_up_uwb_flag; -//extern uint8_t wg_lost_count; -uint16_t wg_report_freq,wg_report_id; -uint8_t wg_report_sf; -#define WG_LOST_SWITCH_THRES 3 -#define WG_LOST_NOUWB_COUNT 60 -#define DEFAULT_WG_ID 0xFFFF -#define DEFAULT_LR_WG_ID 0xFFFE -uint8_t lora_jianting_flag = 1; -void LoraReportFreqPoll(void) -{ - // wg_state = WG_Lost; - if(wg_lost_count++>WG_LOST_NOUWB_COUNT) - { - lora_jianting_flag = 0; - } else { - lora_jianting_flag = 1; - } - if(wg_state==WG_Lost) - { - static uint8_t channel_switch_count = 0; - // channel_switch_count = 10; - if(channel_switch_count++>1) - { -// channel_switch_count = 0; -// wg_report_id = DEFAULT_LR_WG_ID; -// wg_report_freq = LR_DATA_CHANNEL_FRQ; //如果丢失链接就进入WG管理信道。 -// wg_report_sf = LR_DATA_CHANNEL_SF; - } - else - { - wg_report_id = DEFAULT_WG_ID; - wg_report_freq = REPORT_MANGE_CHANNEL_FRQ; //如果丢失链接就进入WG管理信道。 - wg_report_sf = REPORT_CHANNEL_SF; -// wg_report_freq = TEST_MANAGE_CHANNEL_FRQ; -// wg_report_sf = TEST_MANAGE_CHANNEL_SF; - } - } else { - if(wg_lost_count>WG_LOST_SWITCH_THRES) - { - wg_state = WG_Lost; - } - } -} -static uint16_t checksum; +//static uint16_t checksum; -//uint16_t wg_report_freq,wg_report_id; -uint8_t lora_sendbuffer[200]; -void LoraHeartBeartPoll(void) -{ +////uint16_t wg_report_freq,wg_report_id; +//uint8_t lora_sendbuffer[200]; +//void LoraHeartBeartPoll(void) +//{ -// lora_up_uwb_flag=2; -// rf_set_default_para(); +//// lora_up_uwb_flag=2; +//// rf_set_default_para(); -/*****************************心跳包上传内容************************************/ - lora_sendbuffer[MSG_TYPE_IDX] = LORA_MSGTYPE_TAGHEARTBEAT; - lora_sendbuffer[MSG_LENGTH] = 14; - memcpy(&lora_sendbuffer[SOURCE_ID_IDX],&g_com_map[DEV_ID],2); - memcpy(&lora_sendbuffer[DEST_ID_IDX],&wg_report_id,2); - memcpy(&lora_sendbuffer[HB_VERSION_IDX],&g_com_map[VERSION],2); - lora_sendbuffer[HB_UWBPOWER_IDX] = g_com_map[POWER]; - lora_sendbuffer[HB_LORAPOWER_IDX] = g_com_map[LORA_POWER]; - checksum = Checksum_u16(lora_sendbuffer,14); - memcpy(&lora_sendbuffer[14],&checksum,2); - LORA_3029_SINGLE_SEND(lora_sendbuffer,16,0); - -/*****************************心跳包上传内容*************************************/ - -} -#define HEATBEAT_UPDATE_TIME 100 -uint16_t heatbeat_count = HEATBEAT_UPDATE_TIME-1 ; -uint16_t flag_getwgresp = 0; -uint16_t test_temp[10]={0x1306,9688,1000}; -uint16_t test_temp2[10]={0xff,0xcd,0x19}; -int16_t intheight; //气压 -extern uint32_t dangqian_frqe; -extern uint16_t recnum[3]; -extern uint32_t freq_list[4]; -extern uint8_t DMA_RXBuf_BT[200]; -extern uint8_t report_ancnum; -extern uint8_t report_ancnum_bt; -uint32_t BT_SEND_flag=0; -uint8_t BT_NUM=0; -void LoraReportPoll(void) -{ - // delay_ms(100); +///*****************************心跳包上传内容************************************/ +// lora_sendbuffer[MSG_TYPE_IDX] = LORA_MSGTYPE_TAGHEARTBEAT; +// lora_sendbuffer[MSG_LENGTH] = 14; +// memcpy(&lora_sendbuffer[SOURCE_ID_IDX],&g_com_map[DEV_ID],2); +// memcpy(&lora_sendbuffer[DEST_ID_IDX],&wg_report_id,2); +// memcpy(&lora_sendbuffer[HB_VERSION_IDX],&g_com_map[VERSION],2); +// lora_sendbuffer[HB_UWBPOWER_IDX] = g_com_map[POWER]; +// lora_sendbuffer[HB_LORAPOWER_IDX] = g_com_map[LORA_POWER]; +// checksum = Checksum_u16(lora_sendbuffer,14); +// memcpy(&lora_sendbuffer[14],&checksum,2); +// LORA_3029_SINGLE_SEND(lora_sendbuffer,16,0); +// +///*****************************心跳包上传内容*************************************/ +// +//} +//#define HEATBEAT_UPDATE_TIME 100 +//uint16_t heatbeat_count = HEATBEAT_UPDATE_TIME-1 ; +//uint16_t flag_getwgresp = 0; +//uint16_t test_temp[10]={0x1306,9688,1000}; +//uint16_t test_temp2[10]={0xff,0xcd,0x19}; +//int16_t intheight; //气压 +//extern uint32_t dangqian_frqe; +//extern uint16_t recnum[3]; +//extern uint32_t freq_list[4]; +//extern uint8_t DMA_RXBuf_BT[200]; +//extern uint8_t report_ancnum; +//extern uint8_t report_ancnum_bt; +//uint32_t BT_SEND_flag=0; +//uint8_t BT_NUM=0; +//void LoraReportPoll(void) +//{ +// // delay_ms(100); -#ifdef _USE_BAR - GetPressAndHeight(); - intheight = Height*100; -#endif -#ifdef _SMT_TEST - printf("气压值:%d",intheight); -#endif +//#ifdef _USE_BAR +// GetPressAndHeight(); +// intheight = Height*100; +//#endif +//#ifdef _SMT_TEST +// printf("气压值:%d",intheight); +//#endif - TagListUpdate(); +// TagListUpdate(); - LoraReportFreqPoll(); - flag_getwgresp = 0; - // wg_report_freq = REPORT_MANGE_CHANNEL_FRQ; - //Lora_init(); - uint32_t para; +// LoraReportFreqPoll(); +// flag_getwgresp = 0; +// // wg_report_freq = REPORT_MANGE_CHANNEL_FRQ; +// //Lora_init(); +// uint32_t para; - para=freq_list[2] * 100000; -// rf_set_freq(wg_report_freq*100000); -// rf_set_carrier_wave_off(); -// rf_set_carrier_wave_on(); - rf_set_freq(para); - //rf_set_sf(UWB_CHANNEL_SF); -// rf_set_tx_power(para); -// rf_set_carrier_wave_freq(freq_list[1] * 100000); -// rf_set_freq(para); - rf_set_sf(REPORT_CHANNEL_SF); - //rf_set_default_para(wg_report_freq,REPORT_CHANNEL_SF); - // SwitchLoraSettings(wg_report_freq,REPORT_CHANNEL_SF,g_com_map[LORA_POWER]); - dangqian_frqe=rf_read_freq(); - if(heatbeat_count++>HEATBEAT_UPDATE_TIME && WG_Connected == wg_state) //如果心跳包到达上传时间,并且网关处于链接状态,就上传心跳包 - { - heatbeat_count = 0; - LoraHeartBeartPoll(); - return; - } - for(uint16_t i=0; i<report_ancnum-1; i++) - { - for(uint16_t j=0; j<report_ancnum-1-i; j++) - { - if(report_ancdist[j]>report_ancdist[j+1]) - { - uint16_t id,dist; - uint8_t bat; - id = report_ancid[j]; - dist = report_ancdist[j]; - report_ancid[j] = report_ancid[j+1]; - report_ancdist[j] = report_ancdist[j+1]; - report_ancid[j+1] = id; - report_ancdist[j+1] = dist; - } - } - } - - if(report_ancnum>LORA_REPORT_MAXANC_NUM) //考虑lora传输时间,最多发送10个基站数据。 - { - report_ancnum = LORA_REPORT_MAXANC_NUM; - } - -#ifdef USE_GPS - lora_sendbuffer[MSG_TYPE_IDX] = LORA_MSGTYPE_TAGMSGTOWG_GPS; - lora_sendbuffer[MSG_LENGTH] = 4*report_ancnum+30; -#else - lora_sendbuffer[MSG_TYPE_IDX] = LORA_MSGTYPE_TAGMSGTOWG; - lora_sendbuffer[MSG_LENGTH] = 4*report_ancnum+ANCID_IDX; -#endif - memcpy(&lora_sendbuffer[SOURCE_ID_IDX],&g_com_map[DEV_ID],2); - memcpy(&lora_sendbuffer[DEST_ID_IDX],&wg_report_id,2); - lora_sendbuffer[SEQNUM_IDX] = seq_num++; - lora_sendbuffer[BAT_IDX] = bat_percent; - //GET_USERKEY这个是那个lora——busy那个引脚 -// lora_sendbuffer[STATE_IDX]=0x01; -// lora_sendbuffer[GATEWAY_CHANL]=0x02; -// lora_sendbuffer[CHANL_NUM]=0x03; - // lora_sendbuffer[STATE_IDX] = !GET_USERKEY|stationary_flag<<1; -#ifdef USE_GPS - memcpy(&lora_sendbuffer[GPS_JINGDU_IDX],&gps_jingdu,8); - memcpy(&lora_sendbuffer[GPS_WEIDU_IDX],&gps_jingdu,8); - memcpy(&lora_sendbuffer[GPS_HEIGHT_IDX],&gps_height,8); - lora_sendbuffer[GPS_STATE_IDX] = gps_state; - lora_sendbuffer[GPS_SATEL_NUM_IDX] = gps_satel_num; - lora_sendbuffer[GPS_SPOWER_IDX] = gps_signalpower; - lora_sendbuffer[GPS_CHAFENLINGQI] = gps_chafenlingqi; -#endif - // memcpy(&lora_sendbuffer[BAR_HEIGHT_IDX],&bar_height,2); -// memcpy(&report_ancid,test_temp,10); -// memcpy(&report_ancdist,test_temp2,10); +// para=freq_list[2] * 100000; +//// rf_set_freq(wg_report_freq*100000); +//// rf_set_carrier_wave_off(); +//// rf_set_carrier_wave_on(); +// rf_set_freq(para); +// //rf_set_sf(UWB_CHANNEL_SF); +//// rf_set_tx_power(para); +//// rf_set_carrier_wave_freq(freq_list[1] * 100000); +//// rf_set_freq(para); +// rf_set_sf(REPORT_CHANNEL_SF); +// //rf_set_default_para(wg_report_freq,REPORT_CHANNEL_SF); +// // SwitchLoraSettings(wg_report_freq,REPORT_CHANNEL_SF,g_com_map[LORA_POWER]); +// dangqian_frqe=rf_read_freq(); +// if(heatbeat_count++>HEATBEAT_UPDATE_TIME && WG_Connected == wg_state) //如果心跳包到达上传时间,并且网关处于链接状态,就上传心跳包 +// { +// heatbeat_count = 0; +// LoraHeartBeartPoll(); +// return; +// } +// for(uint16_t i=0; i<report_ancnum-1; i++) +// { +// for(uint16_t j=0; j<report_ancnum-1-i; j++) +// { +// if(report_ancdist[j]>report_ancdist[j+1]) +// { +// uint16_t id,dist; +// uint8_t bat; +// id = report_ancid[j]; +// dist = report_ancdist[j]; +// report_ancid[j] = report_ancid[j+1]; +// report_ancdist[j] = report_ancdist[j+1]; +// report_ancid[j+1] = id; +// report_ancdist[j+1] = dist; +// } +// } +// } +// +// if(report_ancnum>LORA_REPORT_MAXANC_NUM) //考虑lora传输时间,最多发送10个基站数据。 +// { +// report_ancnum = LORA_REPORT_MAXANC_NUM; +// } +// +//#ifdef USE_GPS +// lora_sendbuffer[MSG_TYPE_IDX] = LORA_MSGTYPE_TAGMSGTOWG_GPS; +// lora_sendbuffer[MSG_LENGTH] = 4*report_ancnum+30; +//#else +// lora_sendbuffer[MSG_TYPE_IDX] = LORA_MSGTYPE_TAGMSGTOWG; +// lora_sendbuffer[MSG_LENGTH] = 4*report_ancnum+ANCID_IDX; +//#endif +// memcpy(&lora_sendbuffer[SOURCE_ID_IDX],&g_com_map[DEV_ID],2); +// memcpy(&lora_sendbuffer[DEST_ID_IDX],&wg_report_id,2); +// lora_sendbuffer[SEQNUM_IDX] = seq_num++; +// lora_sendbuffer[BAT_IDX] = bat_percent; +// //GET_USERKEY这个是那个lora——busy那个引脚 +//// lora_sendbuffer[STATE_IDX]=0x01; +//// lora_sendbuffer[GATEWAY_CHANL]=0x02; +//// lora_sendbuffer[CHANL_NUM]=0x03; +// // lora_sendbuffer[STATE_IDX] = !GET_USERKEY|stationary_flag<<1; +//#ifdef USE_GPS +// memcpy(&lora_sendbuffer[GPS_JINGDU_IDX],&gps_jingdu,8); +// memcpy(&lora_sendbuffer[GPS_WEIDU_IDX],&gps_jingdu,8); +// memcpy(&lora_sendbuffer[GPS_HEIGHT_IDX],&gps_height,8); +// lora_sendbuffer[GPS_STATE_IDX] = gps_state; +// lora_sendbuffer[GPS_SATEL_NUM_IDX] = gps_satel_num; +// lora_sendbuffer[GPS_SPOWER_IDX] = gps_signalpower; +// lora_sendbuffer[GPS_CHAFENLINGQI] = gps_chafenlingqi; +//#endif +// // memcpy(&lora_sendbuffer[BAR_HEIGHT_IDX],&bar_height,2); +//// memcpy(&report_ancid,test_temp,10); +//// memcpy(&report_ancdist,test_temp2,10); - lora_sendbuffer[ANCNUM_IDX] = report_ancnum; - memcpy(&lora_sendbuffer[ANCID_IDX],report_ancid,report_ancnum*2); - memcpy(&lora_sendbuffer[ANCID_IDX+report_ancnum*2],report_ancdist,report_ancnum*2); - uint8_t LORA_RETRANSNUSSION_BT=0; - BT_NUM=DMA_RXBuf_BT[0]; - if(0<BT_NUM&&BT_NUM<11) - { - lora_sendbuffer[MSG_TYPE_IDX] = LORA_MSGTYPE_TAGMSGTOWG_BT; - LORA_RETRANSNUSSION_BT=ANCID_IDX+report_ancnum*4; - //LORA_RETRANSNUSSION_BT report_ancnum_bt - lora_sendbuffer[LORA_RETRANSNUSSION_BT] = 0x2D; //蓝牙上传标识符 - memcpy(&lora_sendbuffer[LORA_RETRANSNUSSION_BT+1],&DMA_RXBuf_BT[0],BT_NUM*2+1); //基站ID - memcpy(&lora_sendbuffer[LORA_RETRANSNUSSION_BT+BT_NUM*2+2],&DMA_RXBuf_BT[1+BT_NUM*2],BT_NUM*2);//基站距离 - lora_sendbuffer[MSG_LENGTH] = 4*report_ancnum+4*BT_NUM+ANCID_IDX+2; - } - if(lora_sendbuffer[LORA_RETRANSNUSSION_BT]==0x2D) - { - checksum = Checksum_u16(lora_sendbuffer,4*BT_NUM+4*report_ancnum+ANCID_IDX+2); - memcpy(&lora_sendbuffer[ANCID_IDX+BT_NUM*4+report_ancnum*4+2],&checksum,2); - BT_SEND_flag++; - } - else - { - checksum = Checksum_u16(lora_sendbuffer,4*report_ancnum+ANCID_IDX); - memcpy(&lora_sendbuffer[ANCID_IDX+report_ancnum*4],&checksum,2); - } - - - LORA_3029_SINGLE_SEND(lora_sendbuffer,ANCID_IDX+report_ancnum*4+BT_NUM*4+4,0); - memset(DMA_RXBuf_BT, 0,200); - memset(&lora_sendbuffer[ANCID_IDX],0,200); - //LED_TB_ON; - - - for(uint8_t i=0;i<3;i++) - recnum[i] = 0; - -} - -static uint16_t delaytime = 1200; -static uint16_t source_id; -uint8_t rec_index,rec_secdelay; -//uint16_t rec_value,rec_delaytime,rx_count; -//uint16_t rec_value,rec_delaytime,rx_count,datalen_offset; - -uint8_t shengji_flag,time=5; -extern uint32_t uwbled,gpsled,loraled,powerled; -extern struct RxDoneMsg RxDoneParams; - -//extern uint8_t Lora_tx_ancnum; -//extern u8 lora_seq_nb2; -extern uint16_t lora_yingda_num; -uint8_t lora_tx_flag=0; -uint8_t lora_txanchor_power_flag; -extern uint16_t Lora_tx_ancid[50]; -extern uint16_t Lora_tx_ancdist[50]; -extern uint8_t Lora_tx_anc_electricity[50]; -uint8_t lora_seq_nb1; - -extern uint8_t lora_sendbuffer[200]; -void LoraSendComMap(uint8_t cmd) -{ - uint8_t data_length = 0x50; - uint16_t checksum = 0; - lora_sendbuffer[MSG_TYPE_IDX] = LORA_MSGTYPE_READPARARESP; - lora_sendbuffer[MSG_LENGTH] = data_length+11; - memcpy(&lora_sendbuffer[SOURCE_ID_IDX],&g_com_map[DEV_ID],2); - memcpy(&lora_sendbuffer[DEST_ID_IDX],&wg_report_id,2); - lora_sendbuffer[RP_CMD_IDX] = cmd; - lora_sendbuffer[RP_INDEX_IDX] = 2; - lora_sendbuffer[RP_LEN_IDX] = data_length; - memcpy(&lora_sendbuffer[9], &g_com_map[1], data_length); - checksum = Checksum_u16(lora_sendbuffer,11+data_length); - memcpy(&lora_sendbuffer[11+data_length],&checksum,2); - LORA_3029_SINGLE_SEND(lora_sendbuffer,data_length+13,0); - //++; - // Delay_Ms(100); -} -void LoraRspWriteCommap(uint8_t index) -{ - uint8_t data_length = 2; - uint16_t checksum = 0; - lora_sendbuffer[MSG_TYPE_IDX] = LORA_MSGTYPE_READPARARESP; - lora_sendbuffer[MSG_LENGTH] = data_length+9; - memcpy(&lora_sendbuffer[SOURCE_ID_IDX],&g_com_map[DEV_ID],2); - memcpy(&lora_sendbuffer[DEST_ID_IDX],&wg_report_id,2); - lora_sendbuffer[RP_CMD_IDX] = WGRSP_RWTAG_WRITE; - lora_sendbuffer[RP_INDEX_IDX] = index; - lora_sendbuffer[RP_LEN_IDX] = data_length; - memcpy(&lora_sendbuffer[7], &g_com_map[index/2], data_length); - checksum = Checksum_u16(lora_sendbuffer,9+data_length); - memcpy(&lora_sendbuffer[9+data_length],&checksum,2); - // Radio.Send(lora_sendbuffer,data_length+11); - LORA_3029_SINGLE_SEND(lora_sendbuffer,data_length+11,0); - // Delay_Ms(100); -} -uint8_t t22[20],ti; -uint8_t no_yingdaflag; -uint8_t aRxBuffer[1]; - -extern uint8_t group_id; -uint16_t lora_send_count; -uint8_t mode_flag=0; -uint32_t frqe,dangqian_frqe; -uint32_t freq_list[4] = {DEFAULT_up_FREQ/100000,4730,4780,4910}; - -#define TX_LEN 10 -extern uint8_t tx_test_buf[TX_LEN]; - -void Lora_Tx_Poll() -{ - -// if(lora_tx_flag) -// { -// OnMaster(); -//// -// //rf_enter_continous_rx(); +// lora_sendbuffer[ANCNUM_IDX] = report_ancnum; +// memcpy(&lora_sendbuffer[ANCID_IDX],report_ancid,report_ancnum*2); +// memcpy(&lora_sendbuffer[ANCID_IDX+report_ancnum*2],report_ancdist,report_ancnum*2); +// uint8_t LORA_RETRANSNUSSION_BT=0; +// BT_NUM=DMA_RXBuf_BT[0]; +// if(0<BT_NUM&&BT_NUM<11) +// { +// lora_sendbuffer[MSG_TYPE_IDX] = LORA_MSGTYPE_TAGMSGTOWG_BT; +// LORA_RETRANSNUSSION_BT=ANCID_IDX+report_ancnum*4; +// //LORA_RETRANSNUSSION_BT report_ancnum_bt +// lora_sendbuffer[LORA_RETRANSNUSSION_BT] = 0x2D; //蓝牙上传标识符 +// memcpy(&lora_sendbuffer[LORA_RETRANSNUSSION_BT+1],&DMA_RXBuf_BT[0],BT_NUM*2+1); //基站ID +// memcpy(&lora_sendbuffer[LORA_RETRANSNUSSION_BT+BT_NUM*2+2],&DMA_RXBuf_BT[1+BT_NUM*2],BT_NUM*2);//基站距离 +// lora_sendbuffer[MSG_LENGTH] = 4*report_ancnum+4*BT_NUM+ANCID_IDX+2; // } - if(lora_tx_flag) - { -// gpio_pin_set(IO_PIN_5); - - if(lora_send_count++%10==0||lora_jianting_flag) - { - lora_tx_flag=0; -#ifdef GROUPID_SWITCH - if(rec_secdelay>0) - { - rec_secdelay--; -// if(lora_jianting_flag) -// { -// if(++group_id>GROUP_NUM) -// { -// group_id = 1; -// } -// t22[ti++] = group_id; -// if(ti>=20) -// ti=0; -// group_min_dist[group_id] = 0xffff; -// Radio.Standby(); -// SwitchLoraSettings(UWB_CHANNEL_FRQ+group_id,UWB_CHANNEL_SF,0); -// Radio.Rx(0); -// } - return; - } -// //找3个小组中最近距离最大的小组,上传报文后切换到这个小组,因为上传报文会时间占用。 -// if(group_min_dist[1]>group_min_dist[2]) //如果1大于2 +// if(lora_sendbuffer[LORA_RETRANSNUSSION_BT]==0x2D) +// { +// checksum = Checksum_u16(lora_sendbuffer,4*BT_NUM+4*report_ancnum+ANCID_IDX+2); +// memcpy(&lora_sendbuffer[ANCID_IDX+BT_NUM*4+report_ancnum*4+2],&checksum,2); +// BT_SEND_flag++; +// } +// else +// { +// checksum = Checksum_u16(lora_sendbuffer,4*report_ancnum+ANCID_IDX); +// memcpy(&lora_sendbuffer[ANCID_IDX+report_ancnum*4],&checksum,2); +// } + + +// LORA_3029_SINGLE_SEND(lora_sendbuffer,ANCID_IDX+report_ancnum*4+BT_NUM*4+4,0); +// memset(DMA_RXBuf_BT, 0,200); +// memset(&lora_sendbuffer[ANCID_IDX],0,200); +// //LED_TB_ON; + +// +// for(uint8_t i=0;i<3;i++) +// recnum[i] = 0; + +//} + +//static uint16_t delaytime = 1200; +//static uint16_t source_id; +//uint8_t rec_index,rec_secdelay; +////uint16_t rec_value,rec_delaytime,rx_count; +////uint16_t rec_value,rec_delaytime,rx_count,datalen_offset; + +//uint8_t shengji_flag,time=5; +//extern uint32_t uwbled,gpsled,loraled,powerled; +//extern struct RxDoneMsg RxDoneParams; + +////extern uint8_t Lora_tx_ancnum; +////extern u8 lora_seq_nb2; +//extern uint16_t lora_yingda_num; +//uint8_t lora_tx_flag=0; +//uint8_t lora_txanchor_power_flag; +//extern uint16_t Lora_tx_ancid[50]; +//extern uint16_t Lora_tx_ancdist[50]; +//extern uint8_t Lora_tx_anc_electricity[50]; +//uint8_t lora_seq_nb1; + +//extern uint8_t lora_sendbuffer[200]; +//void LoraSendComMap(uint8_t cmd) +//{ +// uint8_t data_length = 0x50; +// uint16_t checksum = 0; +// lora_sendbuffer[MSG_TYPE_IDX] = LORA_MSGTYPE_READPARARESP; +// lora_sendbuffer[MSG_LENGTH] = data_length+11; +// memcpy(&lora_sendbuffer[SOURCE_ID_IDX],&g_com_map[DEV_ID],2); +// memcpy(&lora_sendbuffer[DEST_ID_IDX],&wg_report_id,2); +// lora_sendbuffer[RP_CMD_IDX] = cmd; +// lora_sendbuffer[RP_INDEX_IDX] = 2; +// lora_sendbuffer[RP_LEN_IDX] = data_length; +// memcpy(&lora_sendbuffer[9], &g_com_map[1], data_length); +// checksum = Checksum_u16(lora_sendbuffer,11+data_length); +// memcpy(&lora_sendbuffer[11+data_length],&checksum,2); +// LORA_3029_SINGLE_SEND(lora_sendbuffer,data_length+13,0); +// //++; +// // Delay_Ms(100); +//} +//void LoraRspWriteCommap(uint8_t index) +//{ +// uint8_t data_length = 2; +// uint16_t checksum = 0; +// lora_sendbuffer[MSG_TYPE_IDX] = LORA_MSGTYPE_READPARARESP; +// lora_sendbuffer[MSG_LENGTH] = data_length+9; +// memcpy(&lora_sendbuffer[SOURCE_ID_IDX],&g_com_map[DEV_ID],2); +// memcpy(&lora_sendbuffer[DEST_ID_IDX],&wg_report_id,2); +// lora_sendbuffer[RP_CMD_IDX] = WGRSP_RWTAG_WRITE; +// lora_sendbuffer[RP_INDEX_IDX] = index; +// lora_sendbuffer[RP_LEN_IDX] = data_length; +// memcpy(&lora_sendbuffer[7], &g_com_map[index/2], data_length); +// checksum = Checksum_u16(lora_sendbuffer,9+data_length); +// memcpy(&lora_sendbuffer[9+data_length],&checksum,2); +// // Radio.Send(lora_sendbuffer,data_length+11); +// LORA_3029_SINGLE_SEND(lora_sendbuffer,data_length+11,0); +// // Delay_Ms(100); +//} +//uint8_t t22[20],ti; +//uint8_t no_yingdaflag; +//uint8_t aRxBuffer[1]; + +//extern uint8_t group_id; +//uint16_t lora_send_count; +//uint8_t mode_flag=0; +//uint32_t frqe,dangqian_frqe; +//uint32_t freq_list[4] = {DEFAULT_up_FREQ/100000,4730,4780,4910}; + +//#define TX_LEN 10 +//extern uint8_t tx_test_buf[TX_LEN]; + +//void Lora_Tx_Poll() +//{ +// +//// if(lora_tx_flag) +//// { +//// OnMaster(); +////// +//// //rf_enter_continous_rx(); +//// } +// if(lora_tx_flag) +// { +//// gpio_pin_set(IO_PIN_5); +// +// if(lora_send_count++%10==0||lora_jianting_flag) +// { +// lora_tx_flag=0; +//#ifdef GROUPID_SWITCH +// if(rec_secdelay>0) // { -// group_maxdist_index = group_min_dist[1]>group_min_dist[3]?1:3; //取 1和3 最大值 -// group_mindist_index = group_min_dist[2]<group_min_dist[3]?2:3;//取 2和3 最小值 -// -// }else{ -// group_maxdist_index = group_min_dist[2]>group_min_dist[3]?2:3; //取 2和3 最大值 -// group_mindist_index = group_min_dist[1]<group_min_dist[3]?1:3;//取 1和3 最小值 +// rec_secdelay--; +//// if(lora_jianting_flag) +//// { +//// if(++group_id>GROUP_NUM) +//// { +//// group_id = 1; +//// } +//// t22[ti++] = group_id; +//// if(ti>=20) +//// ti=0; +//// group_min_dist[group_id] = 0xffff; +//// Radio.Standby(); +//// SwitchLoraSettings(UWB_CHANNEL_FRQ+group_id,UWB_CHANNEL_SF,0); +//// Radio.Rx(0); +//// } +// return; // } -//// group_id = 1; -// group_id = group_maxdist_index; -#endif - t22[ti++] = group_id; - if(ti>=20) - ti=0; - // group_min_dist[group_id] = 0xffff; - // Radio.Standby(); - //rf_antenna_close(); -// rf_set_mode(RF_MODE_STB3); -// uint32_t para; -// frqe=((UWB_CHANNEL_FRQ+group_id)*100000); -// para=freq_list[1] * 100000; -//// rf_set_default_para(frqe,UWB_CHANNEL_SF); -// rf_set_carrier_wave_off(); -//// rf_set_carrier_wave_on(); -// rf_set_freq(para); -// rf_set_sf(5); -//// rf_set_tx_power(para); -//// rf_set_carrier_wave_freq(freq_list[1] * 100000); -// //SwitchLoraSettings(UWB_CHANNEL_FRQ+group_id,UWB_CHANNEL_SF,0); -// dangqian_frqe=rf_read_freq(); - // LoraSendComMap(WGRSP_RWTAG_READ); - - //delay_us(5000); -// rf_enter_continous_rx(); - //LedTask(); - //LoraHeartBeartPoll(); -// if(rf_continous_tx_send_data(tx_test_buf, TX_LEN) != OK) -// { -// while(1); -// } - // rf_get_mode(); - LoraReportPoll(); - // LedOff_task(); +//// //找3个小组中最近距离最大的小组,上传报文后切换到这个小组,因为上传报文会时间占用。 +//// if(group_min_dist[1]>group_min_dist[2]) //如果1大于2 +//// { +//// group_maxdist_index = group_min_dist[1]>group_min_dist[3]?1:3; //取 1和3 最大值 +//// group_mindist_index = group_min_dist[2]<group_min_dist[3]?2:3;//取 2和3 最小值 +//// +//// }else{ +//// group_maxdist_index = group_min_dist[2]>group_min_dist[3]?2:3; //取 2和3 最大值 +//// group_mindist_index = group_min_dist[1]<group_min_dist[3]?1:3;//取 1和3 最小值 +//// } +////// group_id = 1; +//// group_id = group_maxdist_index; +//#endif +// t22[ti++] = group_id; +// if(ti>=20) +// ti=0; +// // group_min_dist[group_id] = 0xffff; +// // Radio.Standby(); +// //rf_antenna_close(); +//// rf_set_mode(RF_MODE_STB3); +//// uint32_t para; +//// frqe=((UWB_CHANNEL_FRQ+group_id)*100000); +//// para=freq_list[1] * 100000; +////// rf_set_default_para(frqe,UWB_CHANNEL_SF); +//// rf_set_carrier_wave_off(); +////// rf_set_carrier_wave_on(); +//// rf_set_freq(para); +//// rf_set_sf(5); +////// rf_set_tx_power(para); +////// rf_set_carrier_wave_freq(freq_list[1] * 100000); +//// //SwitchLoraSettings(UWB_CHANNEL_FRQ+group_id,UWB_CHANNEL_SF,0); +//// dangqian_frqe=rf_read_freq(); +// // LoraSendComMap(WGRSP_RWTAG_READ); +// +// //delay_us(5000); +//// rf_enter_continous_rx(); +// //LedTask(); +// //LoraHeartBeartPoll(); +//// if(rf_continous_tx_send_data(tx_test_buf, TX_LEN) != OK) +//// { +//// while(1); +//// } +// // rf_get_mode(); +//// LoraReportPoll(); +// // LedOff_task(); - } - } +// } +// } - -} -uint8_t TX_RX_SELECT=0; +// +//} +//uint8_t TX_RX_SELECT=0; -int LORA_3029_SINGLE_SEND(uint8_t *buffer, uint8_t size,uint8_t time) -{ - if((rf_single_tx_data(lora_sendbuffer,size,time))!= OK) - { - while(1); - } - rf_delay_us(1); - - //rf_enter_single_rx(); - //rf_enter_single_timeout_rx(700); -} +//int LORA_3029_SINGLE_SEND(uint8_t *buffer, uint8_t size,uint8_t time) +//{ +// if((rf_single_tx_data(lora_sendbuffer,size,time))!= OK) +// { +// while(1); +// } +// rf_delay_us(1); +// +// //rf_enter_single_rx(); +// //rf_enter_single_timeout_rx(700); +//} -int LORA_3029_CONTINOUS_SEND(uint8_t *buffer, uint8_t size) -{ +//int LORA_3029_CONTINOUS_SEND(uint8_t *buffer, uint8_t size) +//{ -} +//} -- Gitblit v1.9.3