devMsg.h 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. #ifndef __DEV_MSG_H_
  2. #define __DEV_MSG_H_
  3. #pragma pack(push)
  4. #pragma pack(1)
  5. #define MAX_NEAR_INFO_NUM 20
  6. typedef enum{
  7. REC_DEVINFO,
  8. REC_GNSSINFO,
  9. REC_NEARINFO,
  10. REC_MAX
  11. }RECTYPE_ENUM;
  12. typedef enum{//告警状态
  13. WARN_NORMAL=0, //正常
  14. WARN_SOS, //SOS求救
  15. WARN_SHUTOFF, //断电报警
  16. WARN_SHAKE, //震动报警
  17. WARN_IN_FENCE, //进围栏报警
  18. WARN_OUT_FENCE, //出围栏报警
  19. WARN_OVER_SPEED, //超速报警
  20. WARN_MOVE=9, //位移报警
  21. WARN_IN_GPS_ZONE, //进GPS盲区报警
  22. WARN_OUT_GPS_ZONE, //出GPS盲区报警
  23. WARN_BOOT, //开机报警
  24. WARN_GPS_FIRST_LOCATE, //GPS第一次定位报警
  25. WARN_LOW_PWR, //外电低电报警
  26. WARN_LOW_PWR_PROTECT, //外电低电保护报警
  27. WARN_CARD_CHANGED, //换卡报警
  28. WARN_LOW_PWR_DOWN, //低电关机报警
  29. WARN_LOW_PWR_FLY, //外电低电保护后飞行模式报警
  30. WARN_DISMANTLE, //拆卸报警
  31. WARN_DOOR, //门报警
  32. WARN_PWROFF //关机报警
  33. }WARN_ENUM;
  34. typedef enum{//硬件状态
  35. HARD_CHARGE=(1<<0), //充电状态 0 -- 未充 1--正在充
  36. HARD_GPS=(1<<1), //GPS硬件 0 -- 正常 1--故障
  37. HARD_MOTION=(1<<2), //运动硬件 0--正常 1--故障
  38. HARD_RF2_4G=(1<<3) //RF2.4G 0--正常 1--故障
  39. }HARD_ENUM;
  40. typedef struct {//设备状态信息
  41. unsigned char status; //上传类型 1:正常上报 2:补传上报
  42. unsigned char BCDTime[6]; //时间 YY-MM-DD-hh-mm-ss(GMT+8)
  43. unsigned char hardWareStatus; //硬件状态 HARD_ENUM
  44. unsigned char warnStatus; //告警状态:WARN_ENUM
  45. short aspeed_x; //加速度x轴 与上次收集的时间范围内最大值,需乘0.xxx系数才能得到实际值
  46. short aspeed_y; //加速度y轴 与上次收集的时间范围内最大值,需乘0.xxx系数才能得到实际值
  47. short aspeed_z; //加速度z轴 与上次收集的时间范围内最大值,需乘0.xxx系数才能得到实际值
  48. unsigned int steps; //步数 从开机到当前时间的总步数
  49. unsigned char bat; //0-100 放大10位 如42表示4.2V
  50. unsigned char csq; //0-31/99 0无信号 31 最强 99异常
  51. unsigned short mcc; //国家代号
  52. unsigned char mnc; //移动网号码
  53. unsigned short lac; //位置区码
  54. unsigned int cellid; //移动基站
  55. }DEVICEINFO_DEF;
  56. typedef struct{//GNSS位置信息
  57. unsigned char status; //上传类型 1:正常上报位置 2:补传上报位置
  58. unsigned char BCDTime[6]; //时间 YY-MM-DD-hh-mm-ss(GMT+8)
  59. unsigned char located; //0 未定位 1 已定位
  60. unsigned int latitude; //纬度 以度为单位的纬度值乘以10 的6 次方,精确到百万分之一度
  61. unsigned int longitude; //经度 以度为单位的纬度值乘以10 的6 次方,精确到百万分之一度
  62. unsigned short height; //高程 海拔高度 unit m
  63. unsigned short speed; //速度 1/10km/h
  64. unsigned short direction; //0-359 正北为0,顺时针
  65. unsigned char onUseGps; //在使用的卫星个数
  66. unsigned char onViewGps; //在范围的卫星个数
  67. }GNSSINFO_DEF;
  68. typedef struct{
  69. unsigned char mac[6];
  70. unsigned char rssi;
  71. }NEAR_DEF;
  72. typedef struct{
  73. unsigned char BCDTime[6];
  74. unsigned char num;
  75. NEAR_DEF info[MAX_NEAR_INFO_NUM];
  76. }NEARINFO_DEF;
  77. #pragma pack(pop)
  78. extern DEVICEINFO_DEF *gDevInfo;
  79. extern GNSSINFO_DEF *gGnssInfo;
  80. extern NEARINFO_DEF *gNearInfo;
  81. int GetDeviceStatusInfo(unsigned char *pBuf,int leftsize);
  82. int GetGnssInfo(unsigned char *pBuf,int leftsize);
  83. int GetNearbyDeviceInfo(unsigned char *pBuf,int leftsize);
  84. void clearLbsMotionOfDevinfo(void);
  85. void DevRecShow(void);
  86. void GnssRecShow(void);
  87. void NearRecShow(void);
  88. //#define MAX_DEVSTATUS_INFO_NUM_PER_PAC 5 //每个位置消息包中最多设备状态信息条数
  89. //#define MAX_GNSS_INFO_NUM_PER_PAC 5 //每个位置消息包中最多GNSS位置信息条数
  90. //#define MAX_DEVNEAR_INFO_NUM_PER_PAC 20 //每个位置消息包中最多附近设备信息条数
  91. //主数据/位置上传包的最大值
  92. //#define MAIN_DATA_PACK_SIZE (1+MAX_DEVSTATUS_INFO_NUM_PER_PAC*sizeof(DEVICEINFO_DEF)+1+MAX_GNSS_INFO_NUM_PER_PAC*sizeof(GNSSINFO_DEF)+1+MAX_DEVNEAR_INFO_NUM_PER_PAC*sizeof(NEARINFO_DEF))
  93. //#define UPLOAD_RECORD_SIZE (1+2+6+2+MAIN_DATA_PACK_SIZE+2+1+16) //布标位置包为最大数据包,16为预留
  94. //每次发的包大小是有上限的,每包数据包不能超过MAX_BUBIAO_TCP_SIZE字节
  95. #define MAX_BUBIAO_TCP_SIZE 4096//1024
  96. //除去用户数据外,协议体数据大小
  97. #define BUBIAO_PROTO_SIZE (1+2+2+6+2+2+1)
  98. //用户数据最大值
  99. #define MAX_USER_DATA_SIZE (MAX_BUBIAO_TCP_SIZE-BUBIAO_PROTO_SIZE-32) //减32是预留一些空余位置
  100. #endif