⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 datastructure.h

📁 tinyos2.0版本驱动
💻 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 + -