EasyConnectLink.cpp 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576
  1. #include "EasyConnectLink.h"
  2. #include <unistd.h>
  3. string gStringRec;
  4. EasyConnectLink::EasyConnectLink()
  5. {
  6. #ifdef USE_EASYCONNECT
  7. mHasInitRec = false;
  8. #endif
  9. }
  10. EasyConnectLink::~EasyConnectLink()
  11. {
  12. }
  13. #ifdef USE_EASYCONNECT
  14. bool EasyConnectLink::init(LinkMode linkMode)
  15. {
  16. printf("%s:%s:%d\r\n",__FILE__,__func__,__LINE__);
  17. ECLogConfig logCfg;
  18. logCfg.logLevel = ECSDKFrameWork::EC_LOG_LEVEL_ALL;
  19. logCfg.logModule = ECSDKFrameWork::EC_LOG_MODULE_SDK | ECSDKFrameWork::EC_LOG_MODULE_APP;
  20. logCfg.logType = ECSDKFrameWork::EC_LOG_OUT_STD;
  21. logCfg.logFile = "";
  22. ECSDKFramework::getInstance()->setECSDKLogConfig(logCfg);
  23. printf("%s:%s:%d\r\n",__FILE__,__func__,__LINE__);
  24. ECSDKFrameWork::ECMirrorConfig mirrorCfg; // ECMirrorConfig has a default constructor and does not require memset
  25. int width = 1920;
  26. int height = 720;
  27. mirrorCfg.width = width;
  28. mirrorCfg.height = height;
  29. mirrorCfg.type = ECSDKFrameWork::EC_VIDEO_TYPE_H264;
  30. mirrorCfg.quality = 4 * 1024 * 1024;
  31. mirrorListener.SetMirrorDirCallback(mirror_direction_callback,this);
  32. mirrorListener.SetMirrorStatusCallback(mirror_status_callback, this);
  33. printf("%s:%s:%d\r\n",__FILE__,__func__,__LINE__);
  34. videoplayer.registerStartVideoCallback(std::bind(&EasyConnectLink::start_video_callback_func, this,std::placeholders::_1,std::placeholders::_2, std::placeholders::_3));
  35. videoplayer.registerVideoDataCallback(std::bind(&EasyConnectLink::video_data_callback_func, this,std::placeholders::_1,std::placeholders::_2));
  36. ECSDKFrameWork::ECSDKMirrorManager::getInstance()->initialize(&videoplayer, &mirrorListener);
  37. ECSDKFrameWork::ECSDKMirrorManager::getInstance()->setMirrorConfig(mirrorCfg);
  38. printf("%s:%s:%d\r\n",__FILE__,__func__,__LINE__);
  39. audioPlayer.registerStartAudioCallback(std::bind(&EasyConnectLink::start_audio_callback_func, this,std::placeholders::_1,std::placeholders::_2,std::placeholders::_3,std::placeholders::_4,std::placeholders::_5));
  40. audioPlayer.registerAudioDataCallback(std::bind(&EasyConnectLink::audio_data_callback_func, this,std::placeholders::_1,std::placeholders::_2, std::placeholders::_3));
  41. audioRecoder.registerRecStartCallback(std::bind(&EasyConnectLink::start_rec_callback_func, this,std::placeholders::_1,std::placeholders::_2, std::placeholders::_3,std::placeholders::_4));
  42. audioRecoder.registerRecDataCallback(std::bind(&EasyConnectLink::rec_data_callback_func, this,std::placeholders::_1));
  43. ECSDKFrameWork::ECSDKAudioManager::getInstance()->initialize(&audioPlayer,&audioRecoder);
  44. printf("%s:%s:%d\r\n",__FILE__,__func__,__LINE__);
  45. appListener.registerAppStatusCallback(std::bind(&EasyConnectLink::appstatus_callback_func, this,std::placeholders::_1));
  46. appListener.registerPhoneCallCallback(std::bind(&EasyConnectLink::phonecall_callback_func, this,std::placeholders::_1,std::placeholders::_2, std::placeholders::_3));
  47. appListener.registerInputStartCallback(std::bind(&EasyConnectLink::inputstart_callback_func, this,std::placeholders::_1,std::placeholders::_2, std::placeholders::_3,std::placeholders::_4,std::placeholders::_5, std::placeholders::_6));
  48. appListener.registerInputSelectionCallback(std::bind(&EasyConnectLink::inputselection_callback_func, this,std::placeholders::_1,std::placeholders::_2));
  49. appListener.registerVRTextInfoCallback(std::bind(&EasyConnectLink::vr_textinfo_callback_func, this,std::placeholders::_1,std::placeholders::_2, std::placeholders::_3, std::placeholders::_4));
  50. appListener.registerPhoneInfoCallback(std::bind(&EasyConnectLink::phoneinfo_callback_func, this,std::placeholders::_1));
  51. appListener.registerCarCmdCallback(std::bind(&EasyConnectLink::carcmd_callback_func, this,std::placeholders::_1));
  52. ECSDKAPPManager::getInstance()->initialize(&appListener);
  53. printf("%s:%s:%d\r\n",__FILE__,__func__,__LINE__);
  54. if(linkMode == Wireless){
  55. toolkitListener.SetQRCallback(qr_callback_func,this);
  56. ECSDKToolKit::getInstance()->initialize(&toolkitListener);
  57. }
  58. /*
  59. ECOTAResourceVersion OTARes;
  60. OTARes.softWareId = "123f071c";
  61. OTARes.softVersion = 5;
  62. ECOTAConfig OTAConf;
  63. OTAConf.configPath = "/tmp";
  64. OTAConf.packagePath = "/tmp";
  65. OTAConf.otaResourceVersionList.push_back(OTARes);
  66. ECSDKOTAManager::getInstance()->initialize(&otaListener,OTAConf);
  67. printf("%s:%s:%d\r\n",__FILE__,__func__,__LINE__);
  68. */
  69. // 设置sdk初始化参数
  70. string verion = "1.0";
  71. if(mLicense.empty()){
  72. mLicense = "TEST036514313165461313";
  73. }
  74. ECSDKFrameWork::ECSDKConfig cfg;
  75. cfg.setUUID(mLicense);
  76. cfg.setVersion(verion);
  77. cfg.setWorkSpace("/data");
  78. string uuid;
  79. cfg.getCommonConfig("auth_uuid", uuid);
  80. uint32_t supportFunction = EC_SUPPORT_FUNCTION_INPUT;
  81. cfg.setCommonConfig("car_supportFunction", supportFunction);
  82. sdkListener.SetLicenseAuthSuccessCallback(license_auth_success_func, this);
  83. sdkListener.SetLicenseAuthFailCallback(license_auth_failed_func,this);
  84. sdkListener.registerStatusCallback(std::bind(&EasyConnectLink::status_callback_func, this,std::placeholders::_1,std::placeholders::_2));
  85. ECSDKFramework::getInstance()->initialize(&cfg, &sdkListener);
  86. printf("%s:%s:%d\r\n",__FILE__,__func__,__LINE__);
  87. string ver = ECSDKFramework::getInstance()->getECVersion();
  88. static const char *p = ver.c_str();
  89. printf("==============carlink version = %s =============\n", p);
  90. app_status(APP_VERSION, (void*)p);
  91. printf("%s:%s:%d\r\n",__FILE__,__func__,__LINE__);
  92. return true;
  93. }
  94. bool EasyConnectLink::release()
  95. {
  96. ECSDKFramework::getInstance()->release();
  97. return true;
  98. }
  99. bool EasyConnectLink::start()
  100. {
  101. ECSDKFramework::getInstance()->start();
  102. printf("%s:%s:%d\r\n",__FILE__,__func__,__LINE__);
  103. return true;
  104. }
  105. bool EasyConnectLink::stop()
  106. {
  107. ECSDKFramework::getInstance()->stop();
  108. return true;
  109. }
  110. bool EasyConnectLink::start_mirror()
  111. {
  112. ECSDKFrameWork::ECSDKMirrorManager::getInstance()->startMirror();
  113. }
  114. bool EasyConnectLink::stop_mirror()
  115. {
  116. ECSDKFrameWork::ECSDKMirrorManager::getInstance()->stopMirror();
  117. }
  118. bool EasyConnectLink::set_background()
  119. {
  120. printf("%s:%s:%d\r\n",__FILE__,__func__,__LINE__);
  121. stop_mirror();
  122. app_status(APP_BACKGROUND);
  123. printf("%s:%s:%d\r\n",__FILE__,__func__,__LINE__);
  124. }
  125. bool EasyConnectLink::set_foreground()
  126. {
  127. printf("%s:%s:%d\r\n",__FILE__,__func__,__LINE__);
  128. start_mirror();
  129. app_status(APP_FOREGROUND);
  130. printf("%s:%s:%d\r\n",__FILE__,__func__,__LINE__);
  131. }
  132. bool EasyConnectLink::get_audio_focus()
  133. {
  134. }
  135. bool EasyConnectLink::release_audio_focus()
  136. {
  137. }
  138. void EasyConnectLink::set_inserted(bool inserted, PhoneType phoneType)
  139. {
  140. }
  141. void EasyConnectLink::send_screen_size(int width, int height)
  142. {
  143. }
  144. #define DUMP_REC_FILE 0
  145. #if DUMP_REC_FILE
  146. static FILE *pRecfile = NULL;
  147. #endif
  148. void EasyConnectLink::record_audio_callback(unsigned char *data, int len)
  149. {
  150. printf("%s:%s:%d\r\n",__FILE__,__func__,__LINE__);
  151. if(mHasInitRec){
  152. // mRecData += string((char*)data, len);
  153. //printf("record_audio_callback = %d\r\n", mRecData.length());
  154. //audioRecoder.setRecData(mRecData);
  155. std::lock_guard<std::mutex> lock(mMutex);
  156. gStringRec += string((char*)data, len);
  157. //mRecSemaphore.up();
  158. }
  159. usleep(10000);
  160. #if DUMP_REC_FILE
  161. if (NULL == pRecfile) {
  162. pRecfile = fopen("/tmp/rec_in.pcm", "w");
  163. }
  164. if (pRecfile) {
  165. fwrite(data, 1, len, pRecfile);
  166. //printf("rec len:%d\r\n ", len);
  167. }
  168. #endif
  169. printf("%s:%s:%d\r\n",__FILE__,__func__,__LINE__);
  170. }
  171. void EasyConnectLink::send_car_bluetooth(const string& name, const string& address, const string& pin)
  172. {
  173. mBlueToothInfo.name = name;
  174. mBlueToothInfo.addr = address;
  175. mBlueToothInfo.pin = pin;
  176. }
  177. void EasyConnectLink::send_phone_bluetooth(const string& address)
  178. {
  179. }
  180. void EasyConnectLink::send_touch(int x, int y, TouchCode touchCode)
  181. {
  182. if(touchCode == 1)
  183. {
  184. ECSDKFrameWork::ECTouchEventData data;
  185. data.pointX = x;
  186. data.pointY = y;
  187. data.slot = 0;
  188. ECSDKTouchKeyManager::getInstance()->sendTouchEvent(data, EC_TOUCH_DOWN);
  189. }
  190. else if(touchCode == 0)
  191. {
  192. ECSDKFrameWork::ECTouchEventData data;
  193. data.pointX = x;
  194. data.pointY = y;
  195. data.slot = 0;
  196. ECSDKTouchKeyManager::getInstance()->sendTouchEvent(data, EC_TOUCH_UP);
  197. }
  198. else if(touchCode == 2)
  199. {
  200. ECSDKFrameWork::ECTouchEventData data;
  201. data.pointX = x;
  202. data.pointY = y;
  203. data.slot = 0;
  204. ECSDKTouchKeyManager::getInstance()->sendTouchEvent(data, EC_TOUCH_MOVE);
  205. }
  206. }
  207. bool EasyConnectLink::send_key(KeyCode keyCode)
  208. {
  209. if(keyCode == KEY_VOICE_ASSISTANT){
  210. ECSDKTouchKeyManager::getInstance()->sendBtnEvent(EC_BTN_VOICE_ASSISTANT, EC_BTN_TYPE_CLICK);
  211. }
  212. else if(keyCode == KEY_MUSIC_PLAY){
  213. ECSDKTouchKeyManager::getInstance()->sendBtnEvent(EC_BTN_MUSIC_PLAY, EC_BTN_TYPE_DOWN);
  214. }
  215. else if(keyCode == KEY_MUSIC_PAUSE){
  216. ECSDKTouchKeyManager::getInstance()->sendBtnEvent(EC_BTN_MUSIC_PAUSE, EC_BTN_TYPE_DOWN);
  217. }
  218. else if(keyCode == KEY_MUSIC_NEXT){
  219. ECSDKTouchKeyManager::getInstance()->sendBtnEvent(EC_BTN_MUSIC_NEXT, EC_BTN_TYPE_DOWN);
  220. }
  221. else if(keyCode == KEY_MUSIC_PREVIOUS){
  222. ECSDKTouchKeyManager::getInstance()->sendBtnEvent(EC_BTN_MUSIC_PREVIOUS, EC_BTN_TYPE_DOWN);
  223. }
  224. }
  225. bool EasyConnectLink::send_wheel(WheelCode wheel, bool foucs)
  226. {
  227. }
  228. bool EasyConnectLink::send_night_mode(bool night)
  229. {
  230. return true;
  231. }
  232. bool EasyConnectLink::open_page(AppPage appPage)
  233. {
  234. }
  235. void EasyConnectLink::request_status(RequestAppStatus requestAppStatus, void *reserved)
  236. {
  237. if(requestAppStatus == QUERYQRCODE){
  238. //app_status(APP_RESERVED, (void*)mQRCode.c_str());
  239. }
  240. else if(requestAppStatus == QUERYINPUT){
  241. printf("%s:%s:%d\r\n",__FILE__,__func__,__LINE__);
  242. char *ptr = (char*)reserved;
  243. ECSDKAPPManager::getInstance()->sendInputText(ptr);
  244. printf("%s:%s:%d\r\n",__FILE__,__func__,__LINE__);
  245. }
  246. }
  247. void EasyConnectLink::send_license(const string& license)
  248. {
  249. mLicense = license;
  250. }
  251. void EasyConnectLink::send_input_text(const string& text)
  252. {
  253. ECSDKAPPManager::getInstance()->sendInputText(text);
  254. }
  255. void EasyConnectLink::send_input_selection(const int start, const int stop)
  256. {
  257. ECSDKAPPManager::getInstance()->sendInputSelection(start, stop);
  258. }
  259. void EasyConnectLink::send_input_action(const int actionId, const int keyCode)
  260. {
  261. ECSDKAPPManager::getInstance()->sendInputAction(actionId, keyCode);
  262. }
  263. void EasyConnectLink::send_wifi_state_changed(WifiStateAction action, WifiState state, string& phoneIp, string& carIp)
  264. {
  265. ECNetWorkInfo info = {(int32_t)EC_WIFI_STATE_CONNECTED, phoneIp, carIp};
  266. ECSDKFramework::getInstance()->notifyWifiStateChanged((ECWifiStateAction)action, info);
  267. }
  268. void EasyConnectLink::start_video_callback_func(bool start, int width, int height)
  269. {
  270. printf("%s:%s:%d\r\n",__FILE__,__func__,__LINE__);
  271. if(start)
  272. video_start(0, 0, width, height);
  273. else
  274. video_stop();
  275. }
  276. void EasyConnectLink::video_data_callback_func(unsigned char* data, int length)
  277. {
  278. //printf("%s:%s:%d\r\n",__FILE__,__func__,__LINE__);
  279. video_play(data, length);
  280. }
  281. void EasyConnectLink::start_audio_callback_func(bool start, int type, int rate, int bit, int channel)
  282. {
  283. printf("%s:%s:%d\r\n",__FILE__,__func__,__LINE__);
  284. if(start)
  285. audio_start((AudioType)type, rate, bit, channel);
  286. else
  287. audio_stop((AudioType)type);
  288. }
  289. void EasyConnectLink::audio_data_callback_func(int type, unsigned char* data, int length)
  290. {
  291. printf("%s:%s:%d\r\n",__FILE__,__func__,__LINE__);
  292. audio_play((AudioType)type, data, length);
  293. }
  294. void EasyConnectLink::start_rec_callback_func(bool start, int rate, int bit, int channel)
  295. {
  296. printf("%s:%s:%d\r\n",__FILE__,__func__,__LINE__);
  297. AudioInfo info = {(uint32_t)rate, (uint32_t)bit, (uint32_t)channel};
  298. mHasInitRec = start;
  299. if(start){
  300. record_start(info);
  301. }
  302. else
  303. record_stop();
  304. }
  305. void EasyConnectLink::rec_data_callback_func(string& recData)
  306. {
  307. //printf("EasyConnectLink rec_data_callback_func==============\r\n");
  308. //sleep(20);
  309. // printf("EasyConnectLink rec_data_callback_func==============1111\r\n");
  310. //std::lock_guard<std::mutex> lock(mMutex);
  311. //printf("EasyConnectLink recdata1 = %d\r\n", recData.length());
  312. recData = gStringRec;
  313. //printf("EasyConnectLink recdata2 = %d\r\n", recData.length());
  314. //mRecData.clear();
  315. }
  316. void EasyConnectLink::status_callback_func(int status, int type)
  317. {
  318. #ifdef USE_EASYCONNECT
  319. printf("%s:%s:%d status = %d\r\n",__FILE__,__func__,__LINE__, status);
  320. PhoneType phoneType = UnKnown;
  321. if(type == EC_CONNECT_TYPE_ANDROID_USB){
  322. phoneType = Phone_Android;
  323. }
  324. else if(type == EC_CONNECT_TYPE_IOS_USB_EAP ||
  325. type == EC_CONNECT_TYPE_IOS_USB_MUX ||
  326. type == EC_CONNECT_TYPE_IOS_USB_AIRPLAY||
  327. type == EC_CONNECT_TYPE_IOS_USB_LIGHTNING)
  328. {
  329. phoneType = Phone_IOS;
  330. }
  331. if(EC_CONNECT_STATUS_DEVICE_ATTACHED == status){
  332. onSdkConnectStatus(CONNECT_STATUS_DEVICE_ATTACHED, phoneType);
  333. }
  334. else if(EC_CONNECT_STATUS_DEVICE_DEATTACHED == status){
  335. onSdkConnectStatus(CONNECT_STATUS_DISCONNECTED, UnKnown);
  336. }
  337. else if(EC_CONNECT_STATUS_CONNECT_SUCCEED == status){
  338. printf("%s:%s:%d\r\n",__FILE__,__func__,__LINE__);
  339. onSdkConnectStatus(CONNECT_STATUS_CONNECT_SUCCEED, UnKnown);
  340. ECSDKAPPManager::getInstance()->sendCarBluetooth(mBlueToothInfo.name,mBlueToothInfo.addr,mBlueToothInfo.pin);
  341. vector<ECCarCmd> cmdList;
  342. ECCarCmd carCmd1 = {EC_CAR_CMD_TYPE_EFFECTIVE_GLOBAL,"0", "(播放|切)上一曲", "上一曲", false};
  343. ECCarCmd carCmd2 = {EC_CAR_CMD_TYPE_EFFECTIVE_GLOBAL,"1", "(播放|切)下一曲", "下一曲", false};
  344. ECCarCmd carCmd3 = {EC_CAR_CMD_TYPE_EFFECTIVE_GLOBAL,"2", "声音(高|大)一(点|些)|[把|将](音量|声音)调高|[把|将](音量|声音)调(高|大)一(点|些)|(我要|我想)调高音量", "音量升高", false};
  345. ECCarCmd carCmd4 = {EC_CAR_CMD_TYPE_EFFECTIVE_GLOBAL,"3", "声音(低|小)一(点|些)|[把|将](音量|声音)调低|[把|将](音量|声音)调(低|小)一(点|些)|(我要|我想)调低音量", "音量降低", false};
  346. ECCarCmd carCmd5 = {EC_CAR_CMD_TYPE_EFFECTIVE_GLOBAL,"4", "[把|将]音量调节到最(大|高)|声音最(大|高)|最(大|高)声音|音量最(大|高)|最(大|高)音量", "音量调节到最大", false};
  347. ECCarCmd carCmd6 = {EC_CAR_CMD_TYPE_EFFECTIVE_GLOBAL,"5", "[把|将]音量调节到最(小|低)|声音最(小|低)|最(小|低)声音|音量最(小|低)||最(小|低)音量", "音量调节到最小", false};
  348. cmdList.push_back(carCmd1);
  349. cmdList.push_back(carCmd2);
  350. cmdList.push_back(carCmd3);
  351. cmdList.push_back(carCmd4);
  352. cmdList.push_back(carCmd5);
  353. cmdList.push_back(carCmd6);
  354. ECSDKAPPManager::getInstance()->registerCarCmds(cmdList);
  355. printf("%s:%s:%d\r\n",__FILE__,__func__,__LINE__);
  356. }
  357. else if(EC_CONNECT_STATUS_CONNECT_FAILED == status){
  358. onSdkConnectStatus(CONNECT_STATUS_CONNECT_FAILED, UnKnown);
  359. }
  360. else if(EC_CONNECT_STATUS_DISCONNECTED == status){
  361. onSdkConnectStatus(CONNECT_STATUS_DISCONNECTED, UnKnown);
  362. }
  363. else if(EC_CONNECT_STATUS_APP_EXIT == status){
  364. onSdkConnectStatus(CONNECT_STATUS_APP_EXIT, UnKnown);
  365. }
  366. #endif
  367. }
  368. void EasyConnectLink::appstatus_callback_func(ECStatusMessage status)
  369. {
  370. static int prev_status = -1;
  371. if(prev_status != status)
  372. {
  373. if(status == EC_STATUS_MESSAGE_APP_BACKGROUND_SAME || status == EC_STATUS_MESSAGE_APP_FOREGROUND_SAME){
  374. printf("same mirror mode\r\n");
  375. }
  376. else if(status == EC_STATUS_MESSAGE_APP_FOREGROUND ||
  377. status == EC_STATUS_MESSAGE_APP_FOREGROUND_SPLIT || status == EC_STATUS_MESSAGE_APP_BACKGROUND_SPLIT)
  378. {
  379. printf("app running mode\r\n");
  380. }
  381. else if(status == EC_STATUS_MESSAGE_SWITCH_TO_SYSTEM_MAIN_PAGE){
  382. printf("%s:%s:%d\r\n",__FILE__,__func__,__LINE__);
  383. app_status(APP_BACKGROUND);
  384. printf("%s:%s:%d\r\n",__FILE__,__func__,__LINE__);
  385. }
  386. prev_status = status;
  387. }
  388. }
  389. void EasyConnectLink::phonecall_callback_func(ECCallType type, const string name, const string number)
  390. {
  391. printf("%s:%s:%d\r\n",__FILE__,__func__,__LINE__);
  392. bt_call_action((CallType)type, name.c_str(), number.c_str());
  393. printf("type = %d, name = %s, number = %s\r\n", type, name, number);
  394. }
  395. void EasyConnectLink::inputstart_callback_func(int inputType, int imeOptions, string rawText, int minLines, int maxLines, int maxLength)
  396. {
  397. static InputInfo inputInfo = {0, 0, 0, 0, 0, 0};
  398. inputInfo.inputType = inputType;
  399. inputInfo.imeOptions = imeOptions;
  400. inputInfo.rawText = rawText;
  401. inputInfo.minLines = minLines;
  402. inputInfo.maxLines = maxLines;
  403. inputInfo.maxLength = maxLength;
  404. app_status(APP_INPUTINFO, (void*)&inputInfo);
  405. printf("%s:%s:%d\r\n",__FILE__,__func__,__LINE__);
  406. }
  407. void EasyConnectLink::inputselection_callback_func(int start, int stop)
  408. {
  409. static InputPos inputPos = {0, 0};
  410. inputPos.start = start;
  411. inputPos.start = stop;
  412. app_status(APP_INPUTPOS, (void*)&inputPos);
  413. printf("%s:%s:%d\r\n",__FILE__,__func__,__LINE__);
  414. }
  415. void EasyConnectLink::phoneinfo_callback_func(const string& info)
  416. {
  417. printf("%s:%s:%d\r\n",__FILE__,__func__,__LINE__);
  418. printf("phone info = %s\r\n", info.c_str());
  419. }
  420. void EasyConnectLink::vr_textinfo_callback_func(int vrtype, int sequence, string plainText, string htmlText)
  421. {
  422. printf("%s:%s:%d\r\n",__FILE__,__func__,__LINE__);
  423. static VRTextInfo vrTextInfo = {VR_TEXT_FROM_UNKNOWN, 0, "", ""};
  424. vrTextInfo.type = (VRTextType)vrtype;
  425. vrTextInfo.sequence = sequence;
  426. vrTextInfo.plainText = plainText;
  427. vrTextInfo.htmlText = htmlText;
  428. app_status(APP_VRTEXT, (void*)&vrTextInfo);
  429. }
  430. void EasyConnectLink::carcmd_callback_func(int cmd)
  431. {
  432. static int easycmd = 0;
  433. easycmd = cmd;
  434. app_status(APP_VOICE_CMD, (void*)easycmd);
  435. printf("%s:%s:%d\r\n",__FILE__,__func__,__LINE__);
  436. }
  437. void EasyConnectLink::mirror_direction_callback(int direction, void* parameter)
  438. {
  439. EasyConnectLink *pthis = (EasyConnectLink*)parameter;
  440. //emit pthis->mirror_direction_signal(direction);
  441. }
  442. void EasyConnectLink::mirror_status_callback(int status, void* parameter)
  443. {
  444. EasyConnectLink *pthis = (EasyConnectLink*)parameter;
  445. if(EC_MIRROR_STATUS_MIRROR_STARTED == status){
  446. // system("echo 24 0 > /proc/display");
  447. }
  448. }
  449. void EasyConnectLink::qr_callback_func(string qr, void* parameter)
  450. {
  451. EasyConnectLink *pthis = (EasyConnectLink*)parameter;
  452. pthis->mQRCode = qr;
  453. pthis->app_status(APP_QRCODE, (void*)pthis->mQRCode.c_str());
  454. printf("qr code = %s\r\n", pthis->mQRCode.c_str());
  455. }
  456. void EasyConnectLink::license_auth_success_func(int code, string msg, void* parameter)
  457. {
  458. EasyConnectLink *pthis = (EasyConnectLink*)parameter;
  459. static License sid = {0,0, 0};
  460. sid.activate = true;
  461. sid.code = code;
  462. sid.msg = msg;
  463. string ver = ECSDKFramework::getInstance()->getECVersion();
  464. sid.ver = ver;
  465. pthis->app_status(APP_LICENSE, (void*)(&sid));
  466. printf("%s:%s:%d\r\n",__FILE__,__func__,__LINE__);
  467. }
  468. void EasyConnectLink::license_auth_failed_func(int code, string msg, void* parameter){
  469. EasyConnectLink *pthis = (EasyConnectLink*)parameter;
  470. static License sid = {0,0, 0};
  471. sid.activate = false;
  472. sid.code = code;
  473. sid.msg = msg;
  474. pthis->app_status(APP_LICENSE, (void*)(&sid));
  475. printf("%s:%s:%d\r\n",__FILE__,__func__,__LINE__);
  476. }
  477. #endif