1
0

area_business_motionless_persion.h 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #ifndef AREA_BUSINESS_MOTIONLESS_PERSION
  2. #define AREA_BUSINESS_MOTIONLESS_PERSION
  3. //#include"module_singleton_base.h"
  4. //#include"module_i_thread.h"
  5. //#include"card.h"
  6. #include"area_business.h"
  7. struct config_file;
  8. /**
  9. * @brief 一、硬件输出的状态
  10. 当完全静止时人卡会连续发送 30 次定位数据,在该定位数据中的加速度状态为 0;发送
  11. 完这一系列的定位数据之后进入休眠状态,不再发送任何定位数据。
  12. 当人卡从静止切换到运动状态会在毫秒级完成。然后 2 秒后把定位数据发上来,此时加
  13. 速度状态为 1(运动状态)。
  14. 二、处理逻辑
  15. 当连续收到 X(X 可以配置,X 建议不小于 10)次静止状态定位数据之后才认为完全静止。
  16. 经过 Y(Y 可以配置)秒之后开始告警,只要收到运动状态的定位数据就认为非静止立刻取消
  17. 告警
  18. */
  19. class area_business_motionless_persion : public area_business// : public i_thread, public singleton_base<module_motionless_persion>
  20. {
  21. // void run()
  22. // {
  23. // auto cardlist = card_list::instance()->m_map;
  24. // auto iter_m_map=cardlist.begin();
  25. // for(;iter_m_map!=cardlist.end();++iter_m_map)
  26. // {
  27. // deal_alarm(iter_m_map->second);
  28. // }
  29. // }
  30. // void deal_alarm(std::shared_ptr<card_location_base>& card_ptr);
  31. private:
  32. static int _acc_0count_limit;
  33. static int _acc_seconds_limit;
  34. public:
  35. static void init(config_file& config);
  36. void on_load_his(const std::shared_ptr<area_hover>&a,const std::shared_ptr<card_location_base>&c,std::shared_ptr<business_data>&ptr);
  37. void on_enter(const std::shared_ptr<area_hover>&a,const std::shared_ptr<card_location_base>&c,std::shared_ptr<business_data>&ptr);
  38. void on_hover(const std::shared_ptr<area_hover>&a,const std::shared_ptr<card_location_base>&c,std::shared_ptr<business_data> ptr);
  39. void on_leave(const std::shared_ptr<area_hover>&a,const std::shared_ptr<card_location_base>&c,std::shared_ptr<business_data> ptr);
  40. };
  41. #endif // MODULE_MOTIONLESS_PERSION_H