CarplayLink.h 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. #ifndef CARPLAYLINK_H
  2. #define CARPLAYLINK_H
  3. #include "IUserLinkPlayer.h"
  4. #include "carplayWrapper.h"
  5. #include "carplayVideoWrapper.h"
  6. #include "carplayAudioWrapper.h"
  7. #include <list>
  8. #include <mutex>
  9. #ifdef USE_CARPLAY
  10. class BufferQueue;
  11. class CarplayWrapper;
  12. class CarplayAudioCtx;
  13. class ICarplayVideoCallbacksImpl : public ICarplayVideoCallbacks
  14. {
  15. public:
  16. ICarplayVideoCallbacksImpl(CarplayLink* handle) : mHandle(handle) {}
  17. int carplayVideoStartCB();
  18. void carplayVideoStopCB();
  19. int carplayVideoDataProcCB(const char *buf, int len);
  20. private:
  21. CarplayLink* mHandle;
  22. };
  23. class ICarplayAudioCallbacksImpl : public ICarplayAudioCallbacks
  24. {
  25. public:
  26. ICarplayAudioCallbacksImpl(CarplayLink* handle) : mHandle(handle) {}
  27. void carplayAudioStartCB(int handle, AudioStreamType type, int rate, int bits, int channels);
  28. void carplayAudioStopCB(int handle, AudioStreamType type);
  29. private:
  30. CarplayLink* mHandle;
  31. Mutex mLock;
  32. std::list<CarplayAudioCtx*> mAudioHandlList;
  33. };
  34. #endif
  35. class CarplayLink : public IUserLinkPlayer
  36. {
  37. public:
  38. CarplayLink();
  39. virtual ~CarplayLink();
  40. #ifdef USE_CARPLAY
  41. protected:
  42. virtual bool init(LinkMode linkMode);
  43. virtual bool release();
  44. virtual bool start();
  45. virtual bool stop();
  46. virtual bool start_mirror();
  47. virtual bool stop_mirror();
  48. virtual bool set_background();
  49. virtual bool set_foreground();
  50. virtual bool get_audio_focus();
  51. virtual bool release_audio_focus();
  52. virtual void set_inserted(bool inserted, PhoneType phoneType);
  53. virtual void send_screen_size(int width, int height);
  54. virtual void record_audio_callback(unsigned char *data, int len);
  55. virtual void send_car_bluetooth(const string& name, const string& address, const string& pin);
  56. virtual void send_phone_bluetooth(const string& address);
  57. virtual void send_car_wifi(WifiInfo& info);
  58. virtual void send_touch(int x, int y, TouchCode touchCode);
  59. virtual void send_multi_touch(int x1, int y1, TouchCode touchCode1, int x2, int y2, TouchCode touchCode2){}
  60. virtual bool send_key(KeyCode keyCode);
  61. virtual bool send_wheel(WheelCode wheel, bool foucs);
  62. virtual bool send_night_mode(bool night);
  63. virtual bool send_right_hand_driver(bool right);
  64. virtual bool open_page(AppPage appPage);
  65. virtual void request_status(RequestAppStatus requestAppStatus, void *reserved = nullptr);
  66. virtual void send_license(const string& license){}
  67. virtual void send_input_text(const string& text) {}
  68. virtual void send_input_selection(const int start, const int stop){}
  69. virtual void send_input_action(const int acionId, const int keyCode){}
  70. protected:
  71. LinkConfig getLinkConfig() const {return mLinkConfig;}
  72. PhoneType getPhoneType() const {return mPhoneType;}
  73. bool sendPlayData(int handle, char type, const char* buf, int len, int frames, long long time_stamp);
  74. bool receiveRecordData(int handle, int frames);
  75. void setLocalTime(long long local);
  76. friend class CarplayAudioPlayCtx;
  77. friend class CarplayAudioRecordCtx;
  78. friend class ICarplayVideoCallbacksImpl;
  79. friend class ICarplayAudioCallbacksImpl;
  80. friend class CarplayLinkCbsImpl;
  81. std::mutex mMutex;
  82. CarplayWrapper* mHandle;
  83. ICarplayCallbacks* mCbs;
  84. ICarplayVideoCallbacks* mVideoCbs;
  85. ICarplayAudioCallbacks* mAudioCbs;
  86. PhoneType mPhoneType;
  87. long long mLocalTime;
  88. LinkMode mLinkMode;
  89. bool mDefaultWifi;
  90. bool mDdefaultPhonebtMac;
  91. void* mAecHandle;
  92. BufferQueue* mAecQueue;
  93. AudioStreamType mAudioStreamType;
  94. Semaphore mSemaphore;
  95. int mHandle1;
  96. #endif
  97. };
  98. #endif // CARPLAYLINK_H