You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

61 lines
1.6 KiB

2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
  1. //
  2. // Created by iflytop
  3. //
  4. #pragma once
  5. #include <fstream>
  6. #include <iostream>
  7. #include <list>
  8. #include <map>
  9. #include <memory>
  10. #include <set>
  11. #include <sstream>
  12. #include <string>
  13. #include <vector>
  14. #include "configs/gconfig.hpp"
  15. #include "iflytopcpp/core/basic/nlohmann/json.hpp"
  16. #include "iflytopcpp/core/driver/socketcan/socket_can.hpp"
  17. #include "iflytopcpp/core/spdlogfactory/logger.hpp"
  18. #include "zlinuxcomponents/iflytop_can_protocol_stack/iflytop_can_protocol_stack.hpp"
  19. #include "zservice_container/zservice_container.hpp"
  20. /**
  21. * @brief
  22. *
  23. * service: CanService
  24. *
  25. * 1. IflytopSubDevice的CAN消息和哈美顿的CAN消息
  26. * 2. CanFrame转换成IflytopCanPacket
  27. */
  28. namespace iflytop {
  29. using namespace std;
  30. using namespace iflytop;
  31. using namespace core;
  32. using namespace nlohmann;
  33. class CanService : public enable_shared_from_this<CanService> {
  34. ENABLE_LOGGER(CanService);
  35. shared_ptr<SocketCan> m_socketCan;
  36. shared_ptr<GConfig> m_config;
  37. shared_ptr<IflytopCanProtocolStack> m_iflytopCanProtocolStack;
  38. public:
  39. nod::signal<void(shared_ptr<icps::Packet> packet)> onIflytopCanSubDevicePacket;
  40. void initialize();
  41. void startListen();
  42. SocketCan::SocketCanError_t sendPacketToIflytopCanSubDevice(shared_ptr<icps::Packet> icps_packet, int overtime_ms);
  43. private:
  44. void processRx(shared_ptr<SocketCanFrame> frame);
  45. // 处理iflytop子设备的CAN消息
  46. void processIflytopRxPacket(shared_ptr<SocketCanFrame> frame);
  47. // 处理哈美顿的CAN消息
  48. void processHamiltonCanRxPacket(shared_ptr<SocketCanFrame> frame);
  49. private:
  50. };
  51. } // namespace iflytop