terminator_emqx.cpp 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. //
  2. // Created by zx on 23-4-11.
  3. //
  4. #include "terminator_emqx.h"
  5. #include "unistd.h"
  6. Terminator_emqx::~Terminator_emqx()
  7. {
  8. if(client_!= nullptr){
  9. client_->disconnect();
  10. delete client_;
  11. client_= nullptr;
  12. }
  13. }
  14. bool Terminator_emqx::Connect(std::string ip,int port)
  15. {
  16. if(client_!= nullptr)
  17. {
  18. client_->disconnect();
  19. delete client_;
  20. }
  21. client_=new Paho_client(nodeId_);
  22. bool ret= client_->connect(ip,port);
  23. if(ret)
  24. {
  25. while(!client_->isconnected()) usleep(1000);
  26. client_->subcribe(subTopic_,1,StatuArrivedCallback,this);
  27. }
  28. return ret;
  29. }
  30. void Terminator_emqx::SendNavCmd(const NavMessage::NavCmd& cmd)
  31. {
  32. MqttMsg msg;
  33. msg.fromProtoMessage(cmd);
  34. if(client_)
  35. client_->publish(pubTopic_,1,msg);
  36. else
  37. printf("Send NavCmd failed : emqx client disconnected...\n");
  38. }
  39. void Terminator_emqx::set_statu_arrived(NavStatuCallback callback, void *context)
  40. {
  41. StatuArrivedCallback_=callback;
  42. context_=context;
  43. }
  44. Terminator_emqx::Terminator_emqx(std::string nodeId,std::string pubTopic,std::string subTopic)
  45. :client_(nullptr),nodeId_(nodeId),pubTopic_(pubTopic),subTopic_(subTopic)
  46. {
  47. StatuArrivedCallback_= nullptr;
  48. context_= nullptr;
  49. }
  50. void Terminator_emqx::StatuArrivedCallback(std::string topic,int QOS,MqttMsg& msg,void* context)
  51. {
  52. Terminator_emqx* terminator=(Terminator_emqx*)context;
  53. double x=0,y=0,theta=0,v=0,vth=0;
  54. NavMessage::NavStatu statu;
  55. if(msg.toProtoMessage(statu))
  56. {
  57. if (terminator->StatuArrivedCallback_)
  58. terminator->StatuArrivedCallback_(statu,terminator->context_);
  59. }
  60. }