yincheng.zhong
2024-02-06 a6c4135e127ac1d14023101eb364d61fac7e9166
Src/application/dw_mbx_anc.h
@@ -1,4 +1,5 @@
#ifndef HEADFILE_DW_MBX_ANC
#define HEADFILE_DW_MBX_ANC
//免布线基站端代码
#include "dw_app.h"
#include "deca_device_api.h"
@@ -8,7 +9,7 @@
#include "global_param.h"
#include "lora.h"
#include "radio.h"
#include "led.h"
//LORA 数据格式
//免布线系统中 所有的LORA传输信息都包含在下面的MSG TYPE(消息类型)格式中,不同的消息类型,会对应不同的所有格式
@@ -19,6 +20,7 @@
#define LORA_MSGTYPE_RANGEPOLL          4//基站发起测距同步信号
#define LORA_MSGTYPE_UPDATEFILE_REQUEST 5//基站发送给网关升级文件请求
#define LORA_MSGTYPE_UPDATEFILE_RESP    6//网关回复基站升级文件内容
#define LORA_MSGTYPE_ANCHEARTBEAT_POLL  7//网关回复基站升级文件内容
//SYNC消息下 子消息类型定义
#define SUBMSG_NONE             0//无其他消息 只是同步信号
#define SUBMSG_READ_TAGPARA     1//子消息类型:读取标签配置
@@ -30,7 +32,7 @@
//SYNC消息类型格式
#define MSG_TYPE_IDX        0   //LORA MSG TYPE 定义
#define WG_ID_IDX           1   //网关ID 占用2个字节
#define SYSTIME_IDX         3   //系统时间
#define SYSTIME_IDX         3   //系统时间 2个字节单位100us
#define RANGE_STATE_IDX     5  //该网关范围是否测距标志位,为1则区域内基站测距,如果是0则区域内基站不测距 
#define SUBMSGTYPE_IDX      6   //子消息类型IDX
#define ANCTAG_DEVICEID_IDX 7   //标签或者基站的设备ID 2个字节
@@ -40,21 +42,40 @@
//LORA_MSGTYPE_RANGEPOLL 消息类型格式
#define MSG_TYPE_IDX        0   //LORA MSG TYPE 定义
#define ANC_ID_IDX           1   //基站ID 占用2个字节
#define ANC_ID_IDX          1   //基站ID 占用2个字节
#define ANC_VERSION_IDX     3
#define ANC_GROUPID_IDX     4
#define ANC_UWBPOWER_IDX    5
#define ANC_LORAPOWER_IDX   6
#define ANC_UWBPOLLTIME_IDX 7
#define ANC_RESERVE_IDX 8       //保留5个字节
//基站心跳包消息类型格式(基站->网关)
#define MSG_TYPE_IDX        0   //LORA MSG TYPE 定义
#define ANC_ID_IDX          1
#define WANGGUAN_ID 1
#define JIZHAN_ID 3
#define MUQIAN_BAG 5
#define DATA_IDX 6
#define ONE_BAG_DAXIAO 220
typedef enum{   Next_Poll_RANGE,
                Next_Poll_LORASYNC,
}nextpoll_enum;
void SwitchLoraSettings(uint32_t freq,uint8_t sf);
#define RX_BEFORE_SYNCTIME_US 12000
typedef enum{   Sync_Lost, //同步丢失         同步时间 100秒同步一次,每次同步开启2秒,发起测距请求
                Sync_Range,//同步状态 测距    同步时间 10秒同步一次,开启10ms,发起测距请求
                Sync_Config,//同步状态 配置   同步时间 1秒同步一次,不发起测距请求
                Sync_Sleep, //同步状态 休眠    同步时间 100秒同步一次,不发起测距请求
}sync_state_enum;
extern sync_state_enum sync_state;
void SwitchLoraSettings(uint32_t freq,uint8_t sf,uint8_t power);
void MBXANCPoll(void);
void SetFlagSyncSuccess(uint8_t value);
uint8_t GetRangeState(void);
uint16_t GetUwbPollCount(void);
uint16_t GetWGRecSyncCount(void);
void LoraSyncRecPoll(void);
void SyncStateSwitch(void);
#endif