vehicle_control.h 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. #ifndef VEHICLE_CONTROL_H
  2. #define VEHICLE_CONTROL_H
  3. #include <QObject>
  4. #include <QTimer>
  5. #include <QDateTime>
  6. #include <QVector>
  7. #include <QThread>
  8. #include <iostream>
  9. #include <memory>
  10. #include <string>
  11. #include <grpcpp/grpcpp.h>
  12. #include "VehicleControl_service.grpc.pb.h"
  13. #include "VehicleControl.grpc.pb.h"
  14. #include "modulecommext.h"
  15. #include "remotectrl.pb.h"
  16. using grpc::Channel;
  17. using grpc::ClientContext;
  18. using grpc::Status;
  19. using org::jeecg::defsControl::grpc::VehicleControl; ///< service name
  20. using org::jeecg::defsControl::grpc::ControlReply; ///< rpc fuction parameter and return
  21. using org::jeecg::defsControl::grpc::UploadMapReply;
  22. using org::jeecg::defsControl::grpc::CtrlModeReply;
  23. class VehicleControlClient : public QThread{
  24. Q_OBJECT
  25. public:
  26. VehicleControlClient(std::shared_ptr<Channel> channel);
  27. ~VehicleControlClient(void);
  28. std::string vehicleControl(void);
  29. void updateControlData(void);
  30. void VehicleControlClientSend();
  31. iv::modulecommext::modulecommmsg<iv::remotectrl> * mpa;
  32. protected:
  33. void run();
  34. private:
  35. std::unique_ptr<VehicleControl::Stub> stub_;
  36. org::jeecg::defsControl::grpc::ShiftStatus shiftCMD = org::jeecg::defsControl::grpc::ShiftStatus::SHIFT_PARKING;
  37. double steeringWheelAngleCMD = 0;
  38. double throttleCMD = 0;
  39. double brakeCMD = 0;
  40. org::jeecg::defsControl::grpc::CtrlMode modeCMD = org::jeecg::defsControl::grpc::CtrlMode::CMD_EMERGENCY_STOP; ///< update by slot function
  41. public slots:
  42. void ctrlMode_Changed_Slot(org::jeecg::defsControl::grpc::CtrlMode ctrlMode);
  43. };
  44. class VehicleChangeCtrlModeClient : public QThread{
  45. Q_OBJECT
  46. public:
  47. VehicleChangeCtrlModeClient(std::shared_ptr<Channel> channel);
  48. ~VehicleChangeCtrlModeClient(void);
  49. std::string changeCtrlMode(void);
  50. void updateCtrolMode(void);
  51. protected:
  52. void run();
  53. private:
  54. std::unique_ptr<VehicleControl::Stub> stub_;
  55. org::jeecg::defsControl::grpc::CtrlMode modeCMD = org::jeecg::defsControl::grpc::CtrlMode::CMD_EMERGENCY_STOP;
  56. signals:
  57. void ctrlMode_Changed(org::jeecg::defsControl::grpc::CtrlMode ctrlMode);
  58. };
  59. class VehicleUploadMapClient : public QThread{
  60. Q_OBJECT
  61. public:
  62. VehicleUploadMapClient(std::shared_ptr<Channel> channel);
  63. ~VehicleUploadMapClient(void);
  64. std::string uploadMap(void);
  65. void updateMapPOIData(void);
  66. protected:
  67. void run();
  68. private:
  69. std::unique_ptr<VehicleControl::Stub> stub_;
  70. bool isNeedMap = false;
  71. std::string patrolPathID;
  72. QVector<org::jeecg::defsControl::grpc::MapPoint> POIPoints;
  73. signals:
  74. void patrolPOI_Recieved(std::string pathID);
  75. public slots:
  76. void uploadPath_Finished_Slot(std::string pathID);
  77. };
  78. #endif // VEHICLE_CONTROL_H