OSStatus MVDInit(mico_Context_t* const inContext) { OSStatus err = kUnknownErr; //init MVD status inContext->appStatus.virtualDevStatus.isCloudConnected = false; inContext->appStatus.virtualDevStatus.RecvRomFileSize = 0; //init MCU connect interface //err = MVDDevInterfaceInit(inContext); //require_noerr_action(err, exit, // mvd_log("ERROR: virtual device mcu interface init failed!") ); //init cloud service interface err = MVDCloudInterfaceInit(inContext); require_noerr_action(err, exit, mvd_log("ERROR: virtual device cloud interface init failed!") ); // wifi notify err = mico_rtos_init_semaphore(&_wifi_station_on_sem, 1); require_noerr_action(err, exit, mvd_log("ERROR: mico_rtos_init_semaphore (_wifi_station_on_sem) failed!") ); err = MICOAddNotification( mico_notify_WIFI_STATUS_CHANGED, (void *)mvdNotify_WifiStatusHandler ); require_noerr_action(err, exit, mvd_log("ERROR: MICOAddNotification (mico_notify_WIFI_STATUS_CHANGED) failed!") ); // start MVD main thread err = mico_rtos_create_thread(NULL, MICO_APPLICATION_PRIORITY, "MVD main", MVDMainThread, STACK_SIZE_MVD_MAIN_THREAD, inContext ); exit: return err; }
OSStatus easycloud_reset_cloud_info(mico_Context_t * const context) { OSStatus err = kUnknownErr; MVDResetRequestData_t devDefaultResetData; mico_Context_t *inContext = (mico_Context_t *)context; int retry_cnt = 3; do{ /* cloud context init */ err = MVDCloudInterfaceInit(inContext); if(kNoErr == err){ mvd_log("[MVD]Device EasyCloud context init [OK]"); } else{ mvd_log("[MVD]Device EasyCloud context init [FAILED]"); retry_cnt--; continue; } /* cloud info reset */ mvd_log("[MVD]Device reset EasyCloud info try[%d] ...", 4 - retry_cnt); memset((void*)&devDefaultResetData, 0, sizeof(devDefaultResetData)); strncpy(devDefaultResetData.loginId, inContext->flashContentInRam.appConfig.virtualDevConfig.loginId, MAX_SIZE_LOGIN_ID); strncpy(devDefaultResetData.devPasswd, inContext->flashContentInRam.appConfig.virtualDevConfig.devPasswd, MAX_SIZE_DEV_PASSWD); strncpy(devDefaultResetData.user_token, inContext->micoStatus.mac, MAX_SIZE_USER_TOKEN); err = MVDCloudInterfaceResetCloudDevInfo(inContext, devDefaultResetData); if(kNoErr == err){ mvd_log("[MVD]Device reset EasyCloud info [OK]"); } else{ mvd_log("[MVD]Device EasyCloud info [FAILED]"); } retry_cnt--; }while((kNoErr != err) && (retry_cnt > 0)); return err; }