| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 |
- #ifndef CMDCHANNEL_H
- #define CMDCHANNEL_H
- #include "thread.h"
- #include "CCarLifeLibWrapper.h"
- using namespace CommonUtilH;
- enum ModuleId
- {
- CARLIFE_PHONE_MODULE_ID=1,
- CARLIFE_NAVI_MODULE_ID=2,
- CARLIFE_MUSIC_MODULE_ID=3,
- CARLIFE_VR_MODULE_ID=4, //
- CARLIFE_CONNECT_MODULE_ID=5,
- CARLIFE_MIC_MODULE_ID=6,
- CARLIFE_MEDIAPCM_MODULE_ID=7,
- CARLIFE_EDOG_MODULE_ID=8,
- CARLIFE_CRUISE_ID=9,
- };
- void setCarlifeConfig(int foucs, int wakeup);
- class CmdChannel : public Thread
- {
- public:
- virtual ~CmdChannel();
- static CmdChannel *instance();
- void SetCmdStatusCallback(void (*callback)(int, void*), void *parameter);
- void SetCmdPhoneNumberCallback(void (*callback)(string, void*), void *parameter);
- void SetCmdMediaInfoCallback(void (*callback)(string,string,string, void*), void *parameter);
- bool GetBlueToothUnmanaged() const {return m_bt_unmanaged;}
- void SendCarBluetooth(const string& name, const string& address, const string& pin);
- protected:
- virtual void run(); //线程执行函数
- private:
- CmdChannel();
- //数据接收回调函数
- static void recvProtocolVersionMatchStatus(S_PROTOCOL_VERSION_MATCH_SATUS *); //接收手机端发送给车机端的协议版本匹配结果
- static void recvMDInfo(S_MD_INFO *); //接收手机端发送给车机端的手机系统信息
- static void recvMdAuthenResponse(S_AUTHEN_RESPONSE *); //手机CarLife将接收到的车机随机数使用私有密钥进行加密
- static void recvMdAuthenResult(S_MD_AUTHEN_RESULT *); //手机端CarLife将验证结果发送给车机端
- static void recvFeatureConfigRequest(); //双方握手认证通过后,手机端会发送该消息来请求车机端的功能定制项
- static void recvModuleStatus(S_MODULE_STATUS_LIST_MOBILE *); //接收手机端通知车机端音乐、导航、电话、VR等模块的状态
- static void recvVideoEncoderInitDone(S_VIDEO_ENCODER_INIT_DONE *); //接收手机端通知车机端视频编码器初始化完成
- static void recvVideoEncoderFrameRateChangeDone(S_VIDEO_ENCODER_FRAME_RATE_CHANGE_DONE *); //接收手机端通知车机端视频编码器帧率调整完成
- static void recvCarDataSubscribe(S_VEHICLE_INFO_LIST *); //接收手机端通知车机端需要订阅的车身信息
- static void recvCarDataSubscribeStart(S_VEHICLE_INFO_LIST *); //接收手机端通知车机端开始发送订阅信息
- static void recvCarDataSubscribeStop(S_VEHICLE_INFO_LIST *); //接收手机端通知车机端停止发送车身订阅信息
- static void recvCarLifeDataSubscribeDone(S_SUBSCRIBE_MOBILE_CARLIFE_INFO_LIST *); //接收移动设备针对车机订阅CarLife相关数据的反馈信息
- static void recvNaviNextTurnInfo(S_NAVI_NEXT_TURN_INFO *); //接收手机端通知车机端导航在路况转向的信息
- static void recvNaviAssistantGuideInfo(S_NAVI_ASSITANT_GUIDE_INFO *); //接收移动设备发送给车机的导航辅助诱导信息
- // static void recvMDBTPairInfo(S_BT_PAIR_INFO *); //接收手机端蓝牙匹配信息
- static void recvMDBTPairInfo(S_MD_BT_PAIR_INFO *); //接收手机端蓝牙匹配信息
- // static void recvMDBTOOBInfro(S_MD_BT_OOB_INFO *); //接收手机端发送给车机端的手机蓝牙信息
- static void recvStartBtAutoPairRequest(S_BT_START_PAIR_REQ *); //手机端发送给车机,断开已经存在的HFP连接,并开始蓝牙自动匹配的流程。
- //如果是IOS则不需要开始自动匹配流程
- static void recvBTIdentifyResultInd(S_BT_INDENTIFY_RESULT_IND *); //手机发送给车机,告诉车机 蓝牙标识的结果,同时当标识状态发生变化时,通知车机
- static void recvBtHfpRequest(S_BT_HFP_REQUEST *); //车机发送给移动设备,用来告诉移动设备蓝牙电话的状态信息。其中需要指明该状态是来自于那个蓝牙设备
- static void recvBTHfpStatusRequest(S_BT_HFP_STATUS_REQUEST *); //手机发送该消息来获取指定的状态,目前主要用来获取车机MIC的状态
- static void recvTelStateChangeIdle(); //接收手机端通知车机端电话空闲
- static void recvTelStateChangeIncoming(); //接收手机端通知车机端有电话接入
- static void recvTelStateChangeOutGoing(); //接收手机端通知车机端有电话打出
- static void recvTelStateChangeInCalling(); //接收手机端通知车机端手机处于通话中
- static void recvScreenOn(); //接收手机端通知车机端手机屏幕点亮
- static void recvScreenOff(); //接收手机端通知车机端手机屏幕关闭
- static void recvScreenUserPresent(); //接收手机端通知车机端手机屏幕解锁
- static void recvForeground(); //接收手机端通知车机端手机CarLife处于前台
- static void recvBackground(); //接收手机端通知车机端手机CarLife处于后台
- static void recvGoToDesktop(); //接收手机端通知车机端手机恢复到主界面
- static void recvGotoForgroundResponse(); //接收carlife切换到前台的应答
- //车机端发送MSG_CMD_GO_TO_FOREGROUND消息给移动设备端将CarLife切回到前台以后,
- //移动设备端如果在5秒内没有切换成功则发送该条消息
- static void recvRequestGoToForeground(); //手机端通知车机端将手机端CarLife提升到前台运行
- static void recvMicRecordWakeupStart(); //接收手机端通知车机端手机开始VR的唤醒录音
- static void recvMicRecordEnd(); //接收手机端通知车机端手机结束VR的录音
- static void recvMicRecordRecogStart(); //接收手机端通知车机端手机开始VR的识别后录音
- static void recvMediaInfo(S_MEDIA_INFO *); //接收手机端通知车机端当前的媒体播放信息
- static void recvMediaProgressBar(S_MEDIA_PROGRESS_BAR *); //接收手机端通知车机端媒体播放进度条信息
- static void recvUIActionSound(); //接收手机端通知车机端发出焦点点中通知声
- static void recvConnectException(S_CONNECTION_EXCEPTION *); //接收手机端通知车机端连接异常信息
- static void cmdMdExit();
- private:
- static CmdChannel *mInstance;
- static void ReadBTInfo(string& addr, string& pin);
- void (*m_music_status_callback)(int, void*);
- void (*m_cmd_status_callback)(int, void*);
- void (*m_cmd_phonenumber_callback)(string ,void*);
- void (*m_cmd_mediainfo_callback)(string,string,string, void*);
- void *m_parameter;
- static bool m_bCall;
- static bool m_bBTConnect;
- static bool m_bt_unmanaged;
- string mAddress;
- string mPin;
- };
- #endif // CMDCHANNEL_H
|