EasyConnectLink.cpp 19 KB

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