| | |
| | | uint8_t group_id,enable_sleep_count; |
| | | uint32_t dev_id; |
| | | uint16_t disoffset; |
| | | uint16_t set_mk_time; |
| | | uint8_t flag_sleeptimer,flag_secondtask,secondtask_count; |
| | | float nomove_count; |
| | | // Default pool descriptor. |
| | |
| | | { |
| | | // LOG_INFO(TRACE_MODULE_APP, "Wake up by sleep timer %d\r\n", time); |
| | | } |
| | | extern uint8_t start_wait_flag; |
| | | extern int16_t end_count1; |
| | | static void sleep_timer_callback_normal(void *dev, uint32_t time) |
| | | { |
| | | if(secondtask_count++%2==0) |
| | |
| | | }else{ |
| | | flag_secondtask = 0; |
| | | } |
| | | if(start_wait_flag)//lora升级等待超时标志 |
| | | { |
| | | if(end_count1--<=0) |
| | | start_wait_flag=0; |
| | | } |
| | | // if(delaysleep_count>0) |
| | | // delaysleep_count--; |
| | | } |
| | | void Program_Init(void) |
| | | { |
| | | Usart1ParseDataCallback = UsartParseDataHandler;//需改为默认为gps处理,UsartParseDataHandler为升级处理当调试时候改为 |
| | | |
| | | parameter_init_anchor();//g_com_map表初始化角色默认为基站 |
| | | dev_id=g_com_map[DEV_ID];//这里不太对 |
| | | group_id=(uint8_t)g_com_map[GROUP_ID];//组ID |
| | |
| | | port = g_com_map[TCP_PORT]; |
| | | g_com_map[VERSION] = (1<<8)|0; |
| | | LOG_INFO(TRACE_MODULE_APP,"设备ID: %x .\r\n",dev_id); |
| | | LOG_INFO(TRACE_MODULE_APP,"固件版本:4G-GPS定位手环 V%d.%d. \r\n",g_com_map[VERSION]>>8,g_com_map[VERSION]&0xff); |
| | | // if(gpio_pin_get_val(MODE_CHANGE_PIN)) |
| | | // LOG_INFO(TRACE_MODULE_APP,"固件版本:MK_Air_tag模式 V%d.%d. \r\n",g_com_map[VERSION]>>8,g_com_map[VERSION]&0xff); |
| | | // else{ |
| | | // LOG_INFO(TRACE_MODULE_APP,"固件版本:MK_免布线模式 V%d.%d. \r\n",g_com_map[VERSION]>>8,g_com_map[VERSION]&0xff); |
| | | // } |
| | | LOG_INFO(TRACE_MODULE_APP,"服务器地址: %d.%d.%d.%d:%d.\r\n",ip0,ip1,ip2,ip3,port); |
| | | } |
| | | void MinuteTask(void) |
| | |
| | | } |
| | | void SecondTask(void) |
| | | {static uint8_t second_count; |
| | | |
| | | if(second_count++>60) |
| | | { |
| | | second_count = 0; |
| | | MinuteTask(); |
| | | } |
| | | lora_tx_flag=1; |
| | | lora_tx_flag=1; |
| | | |
| | | //Lora_Tx_Poll(); |
| | | // //UWB状态检测 |
| | | //if(!power_low_flag)//低供电下不需要检测重连 |
| | |
| | | // Configure IO_04 for RF Switch |
| | | gpio_pin_set_dir(IO_PIN_4, GPIO_DIR_OUT, 0); |
| | | #else |
| | | Program_Init(); |
| | | |
| | | spi_init(); |
| | | // 模式判断脚和spi nrst脚初始化 |
| | | // // 模式判断脚和spi nrst脚初始化 |
| | | board_mode_pin_init(); |
| | | // board_led_on(BOARD_LED_1); |
| | | Program_Init(); |
| | | //board_led_on(BOARD_LED_1); |
| | | #endif |
| | | Board_LORA_NVIC_Init(Lora_irq_handler); |
| | | board_configure(); |
| | |
| | | { |
| | | uart_receive(UART_ID1,m_EUART_DMA_RXBuf,EUART_RX_BUF_SIZE,uart_receive_callback); |
| | | } |
| | | |
| | | void uart0_receive_callback(void *dev, uint32_t err_code) |
| | | { |
| | | uart_receive(UART_ID0,m_EUART0_DMA_RXBuf,EUART0_RX_BUF_SIZE,uart0_receive_callback); |
| | | } |
| | | uint8_t bat_percent; |
| | | uint8_t stationary_flag; |
| | | extern uint8_t send_flag; |
| | | extern uint8_t txdone; |
| | | void mcu_deep_sleep(void) |
| | | { |
| | | uint32_t lock; |
| | | trace_flush(); |
| | | |
| | | lock = int_lock(); |
| | | sleep_timer_stop(); |
| | | power_enter_power_down_mode(1); |
| | | int_unlock(lock); |
| | | } |
| | | uint8_t result11; |
| | | int main(void) |
| | | { |
| | | { |
| | | // Initialize MCU system |
| | | board_init(); |
| | | // Disable watchdog timer |
| | | wdt_close(WDT_ID0); |
| | | LOG_INFO(TRACE_MODULE_APP, "UCI FiRa example\r\n"); |
| | | if(gpio_pin_get_val(MODE_CHANGE_PIN)) |
| | | { |
| | | |
| | | |
| | | // Platform init for WSF |
| | | PalSysInit(); |
| | | |
| | | // Initialize os |
| | | |
| | | // |
| | | // Set up timers for the WSF scheduler. |
| | | // |
| | | WsfOsInit(); |
| | | WsfTimerInit(); |
| | | sys_tick_callback_set(WsfTimerUpdateTicks); |
| | | |
| | | // |
| | | // Initialize a buffer pool for WSF dynamic memory needs. |
| | | // |
| | | uint32_t wsfBufMemLen = WsfBufInit(WSF_BUF_POOLS, poolDescriptors); |
| | | |
| | | if (wsfBufMemLen > FREE_MEM_SIZE) |
| | | { |
| | | LOG_INFO(TRACE_MODULE_APP, "Memory pool is not enough %d\r\n", wsfBufMemLen - FREE_MEM_SIZE); |
| | | } |
| | | // |
| | | // Create app task |
| | | // |
| | | wsfHandlerId_t handlerId = WsfOsSetNextHandler(app_handler); |
| | | app_init(handlerId); |
| | | |
| | | // |
| | | // Create ranging task or test task |
| | | // |
| | | handlerId = WsfOsSetNextHandler(ranging_handler); |
| | | ranging_init(handlerId); |
| | | |
| | | #ifdef UWB_UCI_TEST_EN |
| | | // Create test task |
| | | handlerId = WsfOsSetNextHandler(uwb_test_handler); |
| | | uwb_test_init(handlerId); |
| | | #endif |
| | | |
| | | #ifndef MY_MODE |
| | | uwb_open(); |
| | | |
| | | // set advanced parameters |
| | | struct PHY_ADV_CONFIG_T adv_config = |
| | | { |
| | | // RPM0: 40, RPM3: 60 |
| | | .thres_fap_detect = 60, |
| | | // RPM0: 4, RPM3: 8 |
| | | .nth_scale_factor = 8, |
| | | // RFrame SP0: 0/1, Others: 0/1/2/3 |
| | | .ranging_performance_mode = 3, |
| | | #if RX_ANT_PORTS_NUM == 4 |
| | | .skip_weakest_port_en = 1, |
| | | #else |
| | | .skip_weakest_port_en = 0, |
| | | #endif |
| | | }; |
| | | phy_adv_params_configure(&adv_config); |
| | | |
| | | // which RX ports will be used for AoA/PDoA |
| | | phy_rx_ant_mode_set(RX_ANT_PORTS_COMBINATION); |
| | | |
| | | uwbs_init(); |
| | | uwb_app_config.ranging_flow_mode = (uint8_t)(RANGING_FLOW_FIRA); |
| | | uwb_app_config.filter_en = (uint8_t)(FILTER_EN); |
| | | uwb_app_config.session_param.tx_power_level = board_param.tx_power_fcc[CALIB_CH(uwb_app_config.ppdu_params.ch_num)]; |
| | | uwb_app_config.ppdu_params.rx_ant_id = (uint8_t)(RX_MAIN_ANT_PORT); |
| | | |
| | | #elif defined MY_MODE |
| | | Uwb_init();//默认为我们测距配置 |
| | | OpenUWB(); |
| | | uart_receive(UART_ID1,m_EUART_DMA_RXBuf,EUART_RX_BUF_SIZE,uart_receive_callback); |
| | | #endif |
| | | // |
| | | // Create UCI transmission layer task |
| | | // |
| | | handlerId = WsfOsSetNextHandler(uci_tl_handler); |
| | | uci_tl_init(handlerId); |
| | | |
| | | // Initialize low power mode |
| | | power_init(); |
| | | #if LOW_POWER_EN |
| | | power_mode_request(POWER_UNIT_USER, POWER_MODE_POWER_DOWN); |
| | | uwb_app_config.low_power_en = 1; |
| | | #else |
| | | power_mode_request(POWER_UNIT_USER, POWER_MODE_SLEEP); |
| | | uwb_app_config.low_power_en = 0; |
| | | #endif |
| | | |
| | | // Enable sleep timer |
| | | sleep_timer_open(true, SLEEP_TIMER_MODE_ONESHOT, sleep_timer_callback); |
| | | |
| | | while (1) |
| | | { |
| | | wsfOsDispatcher(); |
| | | #ifdef MY_MODE |
| | | if(normal_flag) |
| | | { |
| | | IdleTask(); |
| | | } |
| | | #endif |
| | | power_manage(); |
| | | } |
| | | }else{ |
| | | // adc_open(&usr_adc_cfg); |
| | | LOG_INFO(TRACE_MODULE_APP,"固件版本:MK_lora升级模式 V%d.%d. \r\n",g_com_map[VERSION]>>8,g_com_map[VERSION]&0xff); |
| | | uart0_Init_normal(); |
| | | Lora_1268_Init(); |
| | | SwitchLoraSettings(478,7,22); |
| | | Uwb_init();//默认为我们测距配置 |
| | | OpenUWB(); |
| | | //LOG_INFO(TRACE_MODULE_APP," 切换6\r\n"); |
| | | SwitchLoraSettings(0x1f4,7,22); |
| | | // Uwb_init();//默认为我们测距配置 |
| | | // OpenUWB(); |
| | | uart_receive(UART_ID1,m_EUART_DMA_RXBuf,EUART_RX_BUF_SIZE,uart_receive_callback); |
| | | power_init(); |
| | | sleep_timer_open(true, SLEEP_TIMER_MODE_RELOAD, sleep_timer_callback_normal); |
| | | sleep_timer_start(__MS_TO_32K_CNT(SLEEP_TIMER_NUM));//测试 |
| | | while (1) |
| | | { |
| | | uwb_app_poll();//我们的测距逻辑 |
| | | Lora_Tx_Poll(); |
| | | |
| | | if(flag_secondtask) |
| | | uart_receive(UART_ID0,m_EUART0_DMA_RXBuf,EUART0_RX_BUF_SIZE,uart0_receive_callback); |
| | | power_init(); |
| | | uint16_t tmp = 0xFFFF; |
| | | result11 = flash_open(FLASH_ID0,NULL); |
| | | if(!result11) |
| | | { |
| | | flag_secondtask = 0; |
| | | SecondTask(); |
| | | LOG_INFO(TRACE_MODULE_APP," 打开flash成功\r\n"); |
| | | } |
| | | IdleTask(); |
| | | } |
| | | result11 = flash_erase(FLASH_ID0, APP_CONFIG_IAPFLAG_SECTOR_ADDR, FLASH_SECTOR_SIZE);//擦除APPFLAG |
| | | if(!result11) |
| | | { |
| | | LOG_INFO(TRACE_MODULE_APP," 擦除标志位成功\r\n"); |
| | | } |
| | | result11 = flash_write_nbytes(FLASH_ID0,APP_CONFIG_IAPFLAG_MAP,(uint8_t*)&tmp,2); |
| | | if(!result11) |
| | | { |
| | | LOG_INFO(TRACE_MODULE_APP," 写入标志位FFFF成功\r\n"); |
| | | } |
| | | delay_ms(100); |
| | | sleep_timer_open(true, SLEEP_TIMER_MODE_RELOAD, sleep_timer_callback_normal); |
| | | sleep_timer_start(__MS_TO_32K_CNT(SLEEP_TIMER_NUM));//测试 |
| | | while (1) |
| | | { |
| | | // uwb_app_poll();//我们的测距逻辑 |
| | | // if(flag_secondtask) |
| | | // { |
| | | // flag_secondtask = 0; |
| | | // SecondTask(); |
| | | // //Lora_Tx_Poll(); |
| | | // } |
| | | // Lora_Tx_Poll(); |
| | | LoraUp_Poll();//网关升级 |
| | | IdleTask(); |
| | | } |
| | | } |
| | | |
| | | } |