message.cpp 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. #include <math.h>
  2. #include "zstream.h"
  3. #include "message.h"
  4. #include "log.h"
  5. void message_siteinfo::zero_this()
  6. {
  7. memset(this,0,sizeof(*this));
  8. }
  9. void message_siteinfo::load(zistream&is,bool bAdhoc)
  10. {
  11. zero_this();
  12. is>>m_site_id>>m_time_stamp>>m_sec>>m_min>>m_hour>>m_day>>m_week>>m_mon;
  13. is>>m_year>>m_site_relation;
  14. if (bAdhoc)
  15. {
  16. uint16_t state = 0;
  17. is>>state;
  18. m_site_state = state;
  19. }
  20. else
  21. {
  22. uint8_t site_state = 0;
  23. uint8_t powerType = 0;
  24. is>>site_state>>powerType;
  25. m_site_state = site_state;
  26. m_site_power = powerType;
  27. }
  28. }
  29. void message_locinfo::zero_this()
  30. {
  31. memset(this,0,sizeof(*this));
  32. }
  33. void message_locinfo::load(zistream&is,bool tdoa)
  34. {
  35. zero_this();
  36. uint8_t b;
  37. uint32_t i;
  38. //卡类型、卡号、CT、电池状态
  39. is>>b>>m_card_id>>m_card_ct>>m_batty_status;
  40. m_card_type=b;
  41. m_batty_status&=0xF;
  42. is>>b;
  43. if(m_card_type==1)
  44. {
  45. m_callinfo=b;
  46. }
  47. else
  48. {
  49. m_rav=((b&0x80)?-1.:1.)*(b&0x7f)*3;
  50. }
  51. //加速度
  52. is>>b;
  53. if(m_card_type == 1 || m_card_type==4 || m_card_type==5)
  54. m_acc=b;
  55. else
  56. m_acc =b*0.01;
  57. //m_acc=((b&0x80)?-1.:1.)*(b&0x7f)*98;
  58. //TOF
  59. is>>b>>i;
  60. m_tof=b;
  61. m_tof=(m_tof<<32)|i;
  62. //天线号
  63. is>>m_ant_id;
  64. --m_ant_id;
  65. if(tdoa)
  66. {
  67. //同步序号,冲击响应丢弃
  68. is>>m_sync_ct>>skip(2);
  69. }
  70. //信号电平值
  71. uint16_t sp1=0,sp2=0;
  72. is>>sp1>>sp2;
  73. m_rssi=10*log10(1.*sp1*(1<<17)/pow(sp2-64.,2))-121.74;
  74. log_info("timestamp=%llu,type:%d,card_id:%d,ct:%d,status:%d,acc=%d,tof=%llu,ant_id:%d,spq=%d",m_time_stamp,m_card_type,m_card_id,m_card_ct,m_batty_status,m_acc,m_tof,m_ant_id,m_rssi);
  75. }
  76. void message_tdoasync::zero_this()
  77. {
  78. memset(this,0,sizeof(*this));
  79. }
  80. void message_tdoasync::load(zistream&is)
  81. {
  82. zero_this();
  83. uint8_t b;
  84. //本地分站ID和天线ID
  85. is>>m_local_site_id>>b; m_local_ant_id=b;
  86. //上级分站ID和天线ID
  87. is>>m_parent_site_id>>b; m_parent_ant_id=b;
  88. //根分站CT和本机级别
  89. is>>m_sync_ct>>m_local_level;
  90. uint32_t i;
  91. //本级发出的时间
  92. is>>b>>i;
  93. m_send_time=b;
  94. m_send_time=(m_send_time<<32)|i;
  95. //本级收到的时间
  96. is>>b>>i;
  97. m_recv_time=b;
  98. m_recv_time=(m_recv_time<<32)|i;
  99. }