📄 datastructure.h
字号:
#ifndef DATASTRUCTURE_H
#define DATASTRUCTURE_H
#include <AM.h>
typedef nx_struct SensorData_Type {
nx_uint8_t Sen_type;
/*
感知数据类型:
01:温度
02:湿度
03:光照
04:二氧化碳浓度
05:土壤水分
06:土壤温度
*/
nx_int16_t Sen_data; // 对应的传感器数据
}SensorData_Type;
typedef nx_struct SensorData {
nx_uint8_t length; // 传感器数据包的长度,不包括length域本身
nx_uint8_t Seq_no; // 数据包序列号
SensorData_Type data[6];
}sensorData_t;
typedef nx_struct StateData_Type {
nx_uint8_t state_type;
/* 状态类型
01:节点型号
02:节点剩余电量
*/
nx_uint16_t state; // 状态值
}StateData_Type;
typedef nx_struct StateData {
nx_uint8_t length; // 状态数据包的长度,不包括length域本身
StateData_Type data[2];
}stateData_t;
typedef nx_struct neighbour_info { // 当前节点的邻居节点信息
nx_am_addr_t id; // 邻居节点地址
nx_uint16_t lqi; // 当前节点和邻居节点之间的链路质量
}neighbour_info;
typedef nx_struct TopologyData {
nx_uint8_t length; //拓扑数据包的长度,不包括length域本身
nx_am_addr_t parnt_ID; // 当前节点父节点的地址
nx_uint16_t parnt_lqi; // 当前节点与父节点之间的链路质量(0-255)
neighbour_info info[3];
}topologyData_t;
typedef nx_struct RootDissemination {
/* 用来调整传感器数据采集周期,同时也可以用来分发全网状态和传感器数据提取命令*/
nx_uint8_t Command_ID ;
/*
01 : 时间同步,调整传感器数据采集周期
02 : 全网状态提取
04 : 全网传感器数据提取
08 : 初始化拓扑、状态上传周期为默认值
*/
nx_uint16_t Interval_Setting ;// 传感器数据采集周期,单位是秒
nx_uint8_t Node_Type;
/*传感器类型(1个字节):每一位对应一种传感器,可以标识8种传感器,
从低位到高位依次为:温度(空气)、湿度(空气)、光照、二氧化碳、
土壤水分、土壤温度。例如,节点只携带前三种传感器,则类型为0x07.
*/
}rootDissemination_t;
typedef nx_struct BroadCastMsg {
/*广播消息主要用于数据重传、少数节点的状态提取、传感器数据提取*/
nx_uint8_t Command_ID ;
/*
01 :传感器数据重传
02 :传感器数据提取
04 :传感器状态提取
*/
nx_uint8_t length ; // 广播消息的长度,不包括Command_ID、length域
nx_am_addr_t id[8] ;
}BroadCastMsg_t;
enum {
//传感器数据类型
DATA_TEMPERATURE = 1 , // 空气温度
DATA_HUMIDITY = 2 , // 空气湿度
DATA_LIGHT = 3 , // 光照强度
DATA_CARBON_DIOXIDE = 4 , // 二氧化碳浓度
DATA_SOIL_MOISTURE = 5 , // 土壤湿度
DATA_SOIL_TEMPERATURE = 6, // 土壤温度
// 状态类型
STATE_NODE_TYPE = 1 , // 节点类型
STATE_NODE_POWER = 2 ,
/* 节点剩余电量
注:目前上传值为原始的采集值,需要通过下面的公式装换成电压值:
V = 1023*1.23/C C为采集值,V为对应的电压值
*/
// 分发命令类型
DIS_TIME_SYNCHRONIZATION = 1 ,//时间同步,节点重新开始计时
DIS_GET_STATEDATA_ALL = 2 , //全网状态提取
DIS_GET_SENSORDATA_ALL = 4 , // 全网传感器数据提取
DIS_RESET_TOPOLOGY_STATE_TIMER = 8,//初始化拓扑、状态上传周期为默认值
DIS_STOP_TOPOLOGY_STATE_TIMER = 16 ,//停止拓扑、状态上传时钟
DIS_NODE_TYPE = 32,//设置节点类型
// 广播命令类型
BCAST_RETRANSMIT = 1,// 传感器数据重传
BCAST_GET_SENSORDATA_SPECIFY = 2 , //提取特定节点的传感器数据
BCAST_GET_STATEDATA_SPECIFY = 4 , //提取特定节点的状态数据
// 数据搜集使用的AM_ID
COL_AM_SENSOR = 128 , //0x80
COL_AM_STATE = 129 , //0x81
COL_AM_TOPOLOGY= 130 , //0x82
// 广播使用的AM_ID
BCAST_AM = 133 ,
/*串口发送使用的AM_ID*/
AM_SERIAL_SENSORDATA = 54, //0x36
AM_SERIAL_STATEDATA = 55 , //0x37
AM_SERIAL_TOPOLOGYDATA = 56, //0x38
/*命令分发时使用的参数key*/
DISEMINATION_KEY = 42,
DEFAULT_TOPOLOGY_INTERVAL = 20, //单位为秒
/* 默认的拓扑数据采集周期*/
DEFAULT_STATE_INTERVAL = 30,//单位为秒
/* 默认的状态数据采集周期*/
SERIAL_DIS_COMMAND = 20,
/*网关向串口发送分发指令的AM_ID*/
SERIAL_BCAST_COMMAND = 21,
/*网关向串口发送广播指令的AM_ID*/
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -