zhangbo
2025-03-04 d9eeaa73e91eb757f8707e26f204f443fe956a3f
keil/lora_3029.h
@@ -1,167 +1,167 @@
#ifndef __LORA_3029_H
#define __LORA_3029_H
#include "mk_io.h"
//#ifndef __LORA_3029_H
//#define __LORA_3029_H
//#include "mk_io.h"
//BT板子更改了片选角
////BT板子更改了片选角
//#define LORA_CS IO_PIN_14
#define LORA_CS IO_PIN_8
#define LORA_MOSI IO_PIN_11
#define LORA_MISO IO_PIN_12
#define LORA_CLK IO_PIN_13
#define LORA_DIO IO_PIN_7
//#define LORA_DIO IO_PIN_4
#define ANC_MAX_NUM           50
#define LORA_REPORT_MAXANC_NUM  10
//#define TEST_FREQ
#ifdef  TEST_FREQ
#define LORA_UPCHANNEL_FRQ 456
#define LORA_UPCHANNEL_SF 9
#define TEST_FREQ_OFFSET   1
#define UWB_CHANNEL_FRQ 450+TEST_FREQ_OFFSET
#define UWB_CHANNEL_SF 5
////#define LORA_CS IO_PIN_14
//#define LORA_CS IO_PIN_8
//#define LORA_MOSI IO_PIN_11
//#define LORA_MISO IO_PIN_12
//#define LORA_CLK IO_PIN_13
//#define LORA_DIO IO_PIN_7
////#define LORA_DIO IO_PIN_4
//#define ANC_MAX_NUM           50
//#define LORA_REPORT_MAXANC_NUM  10
////#define TEST_FREQ
//#ifdef  TEST_FREQ
//#define LORA_UPCHANNEL_FRQ 456
//#define LORA_UPCHANNEL_SF 9
//
//#define TEST_FREQ_OFFSET   1
//#define UWB_CHANNEL_FRQ 450+TEST_FREQ_OFFSET
//#define UWB_CHANNEL_SF 5
#define LR_DATA_CHANNEL_FRQ 457
#define LR_DATA_CHANNEL_SF 9
//#define LR_DATA_CHANNEL_FRQ 457
//#define LR_DATA_CHANNEL_SF 9
#define REPORT_MANGE_CHANNEL_FRQ 458 +TEST_FREQ_OFFSET
#define REPORT_CHANNEL_SF 7
#else
#define LORA_UPCHANNEL_FRQ 476
#define LORA_UPCHANNEL_SF 8
#define UWB_CHANNEL_FRQ 470
#define UWB_CHANNEL_SF 5
//#define REPORT_MANGE_CHANNEL_FRQ 458 +TEST_FREQ_OFFSET
//#define REPORT_CHANNEL_SF 7
//#else
//#define LORA_UPCHANNEL_FRQ 476
//#define LORA_UPCHANNEL_SF 8
//
//#define UWB_CHANNEL_FRQ 470
//#define UWB_CHANNEL_SF 5
#define REPORT_MANGE_CHANNEL_FRQ 478
#define REPORT_CHANNEL_SF 7
//#define REPORT_MANGE_CHANNEL_FRQ 478
//#define REPORT_CHANNEL_SF 7
#define LR_DATA_CHANNEL_FRQ 475
#define LR_DATA_CHANNEL_SF 9
//#define LR_DATA_CHANNEL_FRQ 475
//#define LR_DATA_CHANNEL_SF 9
//#define TEST_MANAGE_CHANNEL_FRQ 457
//#define TEST_MANAGE_CHANNEL_SF 5
////#define TEST_MANAGE_CHANNEL_FRQ 457
////#define TEST_MANAGE_CHANNEL_SF 5
#endif
//#endif
//LORA 数据格式
////LORA 数据格式
//免布线系统中 所有的LORA传输信息都包含在下面的MSG TYPE(消息类型)格式中,不同的消息类型,会对应不同的所有格式
//LORA MSG TYPE的几种类型
#define LORA_MSGTYPE_SYNC               1//网关下发给基站的同步信息
#define LORA_MSGTYPE_CFGRSP             2//基站回复给网关配置读取信息
#define LORA_MSGTYPE_UPDATE_CONFIRM     3//基站回复给网关升级确认信息
#define LORA_MSGTYPE_RANGEPOLL          4//基站发起测距同步信号
#define LORA_MSGTYPE_UPDATEFILE_REQUEST 5//基站发送给网关升级文件请求
#define LORA_MSGTYPE_UPDATEFILE_RESP    6//网关回复基站升级文件内容
#define LORA_MSGTYPE_ANCHEARTBEAT_POLL  7//网关回复基站升级文件内容
#define LORA_MSGTYPE_TAGMSGTOWG         0x22//标签距离信息发给网关
#define LORA_MSGTYPE_TAGMSGTOWG_GPS     0x23//标签距离信息发给网关
////免布线系统中 所有的LORA传输信息都包含在下面的MSG TYPE(消息类型)格式中,不同的消息类型,会对应不同的所有格式
////LORA MSG TYPE的几种类型
//#define LORA_MSGTYPE_SYNC               1//网关下发给基站的同步信息
//#define LORA_MSGTYPE_CFGRSP             2//基站回复给网关配置读取信息
//#define LORA_MSGTYPE_UPDATE_CONFIRM     3//基站回复给网关升级确认信息
//#define LORA_MSGTYPE_RANGEPOLL          4//基站发起测距同步信号
//#define LORA_MSGTYPE_UPDATEFILE_REQUEST 5//基站发送给网关升级文件请求
//#define LORA_MSGTYPE_UPDATEFILE_RESP    6//网关回复基站升级文件内容
//#define LORA_MSGTYPE_ANCHEARTBEAT_POLL  7//网关回复基站升级文件内容
//#define LORA_MSGTYPE_TAGMSGTOWG         0x22//标签距离信息发给网关
//#define LORA_MSGTYPE_TAGMSGTOWG_GPS     0x23//标签距离信息发给网关
#define LORA_MSGTYPE_TAGMSGTOWG_BT      0x26//标签距离信息蓝牙距离信息,信号强度,发给网关
//#define LORA_MSGTYPE_TAGMSGTOWG_BT      0x26//标签距离信息蓝牙距离信息,信号强度,发给网关
#define LORA_MSGTYPE_WGRESPTAG         8//网关回复标签测距定位报文
#define LORA_MSGTYPE_TAGHEARTBEAT       0x33//标签心跳包上传
#define LORA_MSGTYPE_READPARARESP       0x39  //标签基站回复网关读取配置指令
//SYNC消息下 子消息类型定义
#define SUBMSG_NONE             0//无其他消息 只是同步信号
#define SUBMSG_READ_ANCPARA     0x11//子消息类型:读取基站配置
#define SUBMSG_WRITE_ANCPARA    0x12//子消息类型:写基站配置
#define SUBMSG_UPDATE_TAG       5//子消息类型:升级标签
#define SUBMSG_UPDATE_ANC       6//子消息类型:升级基站
//SYNC消息类型格式
#define MSG_TYPE_IDX        0   //LORA MSG TYPE 定义
#define MSG_LENGTH          1   //报文长度
#define SOURCE_ID_IDX       2   //网关ID 占用2个字节
#define DEST_ID_IDX         4   //标签或者基站的设备ID 2个字节
#define SYSTIME_IDX         6   //系统时间
#define RANGE_STATE_IDX     7  //该网关范围是否测距标志位,为1则区域内基站测距,如果是0则区域内基站不测距
#define SUBMSGTYPE_IDX      9   //子消息类型IDX
#define WRITEPARA_INDEX_IDX 10  //写入参数的地址IDX
#define WRITEPARA_VALUE_IDX 11   //写入参数的值,2个字节   /*在发送升级基站请求时,被替换为要发送的升级文件的大小
#define WG_SYNC_RESERVE_IDX 13  //保留 4个字节
//LORA_MSGTYPE_TAGMSGTOWG 标签上报网关定位报文信息格式
#ifdef USE_GPS
    #define MSG_TYPE_IDX        0   //LORA MSG TYPE 定义
    #define MSG_LENGTH          1   //报文长度
    #define SOURCE_ID_IDX       2   //网关ID 占用2个字节
    #define DEST_ID_IDX         4   //标签或者基站的设备ID 2个字节
    #define SEQNUM_IDX          6   //标签报文序号
    #define BAT_IDX             7   //标签电量
    #define STATE_IDX           8
    #define GPS_JINGDU_IDX      9
    #define GPS_WEIDU_IDX       17
    #define GPS_HEIGHT_IDX      25
    #define GPS_STATE_IDX       29
    #define GPS_SATEL_NUM_IDX   30
    #define GPS_SPOWER_IDX      31  //信号强度
    #define GPS_CHAFENLINGQI    32  //差分龄期
    #define BAR_HEIGHT_IDX      33  //气压高度
    #define ANCNUM_IDX          35
    #define ANCID_IDX           36   //校验在4*ancnum+ANCID_IDX 位置
#else
    #define MSG_TYPE_IDX        0   //LORA MSG TYPE 定义
    #define MSG_LENGTH          1   //报文长度
    #define SOURCE_ID_IDX       2   //网关ID 占用2个字节
    #define DEST_ID_IDX         4   //标签或者基站的设备ID 2个字节
    #define SEQNUM_IDX          6   //标签报文序号
    #define BAT_IDX             7   //标签电量
    #define STATE_IDX           8
    #define BAR_HEIGHT_IDX      9  //气压高度
      #define GATEWAY_CHANL       9
      #define CHANL_NUM           10
    #define ANCNUM_IDX          11
    #define ANCID_IDX           12   //校验在4*ancnum+ANCID_IDX 位置
//      #define LORA_RETRANSNUSSION_BT 13  //LORA转发蓝牙协议标识符
#endif
//#define LORA_MSGTYPE_WGRESPTAG         8//网关回复标签测距定位报文 格式
#define MSG_TYPE_IDX            0   //LORA MSG TYPE 定义
#define MSG_LENGTH              1   //报文长度
#define SOURCE_ID_IDX           2   //网关ID 占用2个字节
#define DEST_ID_IDX             4   //标签或者基站的设备ID 2个字节
#define NEXTPOLL_TIME_IDX       6   //
#define POLL_FREQ_IDX           8   //分配的发送频率,需要+400的偏移量。
#define PWTAG_RW_FLAG_IDX       9   //读写标志 0无读写 1写入 2读取
#define PWTAG_WRITE_IDX_IDX     10   //写入地址
#define PWTAG_SECDELAY_IDX      10      //写入标签秒延迟 与读写地址共用一个位置,当有读写地址时,就没有这个参数。
#define PWTAG_WRITE_VALUE_IDX   11   //写入值
#define WGRSP_RWTAG_NONE    0//网关回复标签,无读写
#define WGRSP_RWTAG_READ    2//网关回复标签,无读写
#define WGRSP_RWTAG_WRITE   1//网关回复标签,无读写
#define WGRSP_RWTAG_UPDATE   0x06//网关回复标签,无读写
//#define LORA_MSGTYPE_WGRESPTAG         8//网关回复标签测距定位报文
//#define LORA_MSGTYPE_TAGHEARTBEAT       0x33//标签心跳包上传
//#define LORA_MSGTYPE_READPARARESP       0x39  //标签基站回复网关读取配置指令
#define MSG_TYPE_IDX            0   //LORA MSG TYPE 定义
#define MSG_LENGTH              1   //报文长度
#define SOURCE_ID_IDX           2   //网关ID 占用2个字节
#define DEST_ID_IDX             4   //标签或者基站的设备ID 2个字节
#define RP_CMD_IDX              6   //标签或者基站的设备ID 2个字节
#define RP_INDEX_IDX              7   //标签或者基站的设备ID 2个字节
#define RP_LEN_IDX              8   //标签或者基站的设备ID 2个字节
////SYNC消息下 子消息类型定义
//#define SUBMSG_NONE             0//无其他消息 只是同步信号
//#define SUBMSG_READ_ANCPARA     0x11//子消息类型:读取基站配置
//#define SUBMSG_WRITE_ANCPARA    0x12//子消息类型:写基站配置
//#define SUBMSG_UPDATE_TAG       5//子消息类型:升级标签
//#define SUBMSG_UPDATE_ANC       6//子消息类型:升级基站
////SYNC消息类型格式
//#define MSG_TYPE_IDX        0   //LORA MSG TYPE 定义
//#define MSG_LENGTH          1   //报文长度
//#define SOURCE_ID_IDX       2   //网关ID 占用2个字节
//#define DEST_ID_IDX         4   //标签或者基站的设备ID 2个字节
//#define SYSTIME_IDX         6   //系统时间
//#define RANGE_STATE_IDX     7  //该网关范围是否测距标志位,为1则区域内基站测距,如果是0则区域内基站不测距
//#define SUBMSGTYPE_IDX      9   //子消息类型IDX
//#define WRITEPARA_INDEX_IDX 10  //写入参数的地址IDX
//#define WRITEPARA_VALUE_IDX 11   //写入参数的值,2个字节   /*在发送升级基站请求时,被替换为要发送的升级文件的大小
//#define WG_SYNC_RESERVE_IDX 13  //保留 4个字节
////LORA_MSGTYPE_TAGMSGTOWG 标签上报网关定位报文信息格式
//#define LORA_MSGTYPE_TAGHEARTBEAT       0x33//标签心跳包上传 格式
#define MSG_TYPE_IDX            0   //LORA MSG TYPE 定义
#define MSG_LENGTH              1   //报文长度
#define SOURCE_ID_IDX           2   //网关ID 占用2个字节
#define DEST_ID_IDX             4   //标签或者基站的设备ID 2个字节
#define HB_VERSION_IDX          6   //标签或者基站的设备ID 2个字节
#define HB_UWBPOWER_IDX         8   //标签或者基站的设备ID 2个字节
#define HB_LORAPOWER_IDX        9   //标签或者基站的设备ID 2个字节
#define HB_RESERVE_IDX          10//标签或者基站的设备ID 2个字节
typedef enum{   WG_Lost, //上报丢失    失去和网关通讯
                WG_Connected,// 上报中       和网关通讯正常
}wg_state_enum;
void LoraHeartBeartPoll(void);
void Lora_Tx_Poll();
void OnMaster();
int LORA_3029_SINGLE_SEND(uint8_t *buffer, uint8_t size,uint8_t time);
int LORA_3029_CONTINOUS_SEND(uint8_t *buffer, uint8_t size);
//#ifdef USE_GPS
//    #define MSG_TYPE_IDX        0   //LORA MSG TYPE 定义
//    #define MSG_LENGTH          1   //报文长度
//    #define SOURCE_ID_IDX       2   //网关ID 占用2个字节
//    #define DEST_ID_IDX         4   //标签或者基站的设备ID 2个字节
//    #define SEQNUM_IDX          6   //标签报文序号
//    #define BAT_IDX             7   //标签电量
//    #define STATE_IDX           8
//    #define GPS_JINGDU_IDX      9
//    #define GPS_WEIDU_IDX       17
//    #define GPS_HEIGHT_IDX      25
//    #define GPS_STATE_IDX       29
//    #define GPS_SATEL_NUM_IDX   30
//    #define GPS_SPOWER_IDX      31  //信号强度
//    #define GPS_CHAFENLINGQI    32  //差分龄期
//    #define BAR_HEIGHT_IDX      33  //气压高度
//    #define ANCNUM_IDX          35
//    #define ANCID_IDX           36   //校验在4*ancnum+ANCID_IDX 位置
//#else
//    #define MSG_TYPE_IDX        0   //LORA MSG TYPE 定义
//    #define MSG_LENGTH          1   //报文长度
//    #define SOURCE_ID_IDX       2   //网关ID 占用2个字节
//    #define DEST_ID_IDX         4   //标签或者基站的设备ID 2个字节
//    #define SEQNUM_IDX          6   //标签报文序号
//    #define BAT_IDX             7   //标签电量
//    #define STATE_IDX           8
//    #define BAR_HEIGHT_IDX      9  //气压高度
//      #define GATEWAY_CHANL       9
//      #define CHANL_NUM           10
//    #define ANCNUM_IDX          11
//    #define ANCID_IDX           12   //校验在4*ancnum+ANCID_IDX 位置
////      #define LORA_RETRANSNUSSION_BT 13  //LORA转发蓝牙协议标识符
#endif
//#endif
////#define LORA_MSGTYPE_WGRESPTAG         8//网关回复标签测距定位报文 格式
//#define MSG_TYPE_IDX            0   //LORA MSG TYPE 定义
//#define MSG_LENGTH              1   //报文长度
//#define SOURCE_ID_IDX           2   //网关ID 占用2个字节
//#define DEST_ID_IDX             4   //标签或者基站的设备ID 2个字节
//#define NEXTPOLL_TIME_IDX       6   //
//#define POLL_FREQ_IDX           8   //分配的发送频率,需要+400的偏移量。
//#define PWTAG_RW_FLAG_IDX       9   //读写标志 0无读写 1写入 2读取
//#define PWTAG_WRITE_IDX_IDX     10   //写入地址
//#define PWTAG_SECDELAY_IDX      10      //写入标签秒延迟 与读写地址共用一个位置,当有读写地址时,就没有这个参数。
//#define PWTAG_WRITE_VALUE_IDX   11   //写入值
//#define WGRSP_RWTAG_NONE    0//网关回复标签,无读写
//#define WGRSP_RWTAG_READ    2//网关回复标签,无读写
//#define WGRSP_RWTAG_WRITE   1//网关回复标签,无读写
//#define WGRSP_RWTAG_UPDATE   0x06//网关回复标签,无读写
////#define LORA_MSGTYPE_READPARARESP       0x39  //标签基站回复网关读取配置指令
//#define MSG_TYPE_IDX            0   //LORA MSG TYPE 定义
//#define MSG_LENGTH              1   //报文长度
//#define SOURCE_ID_IDX           2   //网关ID 占用2个字节
//#define DEST_ID_IDX             4   //标签或者基站的设备ID 2个字节
//#define RP_CMD_IDX              6   //标签或者基站的设备ID 2个字节
//#define RP_INDEX_IDX              7   //标签或者基站的设备ID 2个字节
//#define RP_LEN_IDX              8   //标签或者基站的设备ID 2个字节
////#define LORA_MSGTYPE_TAGHEARTBEAT       0x33//标签心跳包上传 格式
//#define MSG_TYPE_IDX            0   //LORA MSG TYPE 定义
//#define MSG_LENGTH              1   //报文长度
//#define SOURCE_ID_IDX           2   //网关ID 占用2个字节
//#define DEST_ID_IDX             4   //标签或者基站的设备ID 2个字节
//#define HB_VERSION_IDX          6   //标签或者基站的设备ID 2个字节
//#define HB_UWBPOWER_IDX         8   //标签或者基站的设备ID 2个字节
//#define HB_LORAPOWER_IDX        9   //标签或者基站的设备ID 2个字节
//#define HB_RESERVE_IDX          10//标签或者基站的设备ID 2个字节
//typedef enum{   WG_Lost, //上报丢失    失去和网关通讯
//                WG_Connected,// 上报中       和网关通讯正常
//}wg_state_enum;
//void LoraHeartBeartPoll(void);
//void Lora_Tx_Poll();
//void OnMaster();
//int LORA_3029_SINGLE_SEND(uint8_t *buffer, uint8_t size,uint8_t time);
//int LORA_3029_CONTINOUS_SEND(uint8_t *buffer, uint8_t size);
//#endif