遠程登錄功能主要應用于設備發生故障導致設備不可用時,對設備進行遠程運維。本文以C Link SDK中的Demo文件./demos/remote_access_basic_demo.c為例,介紹如何調用Link SDK的API,幫助設備實現遠程登錄功能。
背景信息
步驟一:初始化
步驟二:配置功能
調用aiot_ra_setopt,配置以下功能。
步驟三:開啟遠程登錄通道功能
調用aiot_ra_start,向物聯網平臺發起請求,以通知物聯網平臺,設備已具備遠程登錄功能。
pthread_attr_t attr;
pthread_attr_init(&attr);
if (0 != pthread_create(&g_ra_process_thread, &attr, aiot_ra_start, (void*) ra_handle))
{
printf( "create remote_proxy_thread error!");
return -1;
}
步驟四:打開物聯網平臺遠程登錄開關
物聯網平臺接收通知后,您需打開遠程登錄開關,通知設備打開連接通道。設備再連接物聯網平臺的遠程通道,建立會話連接、實現消息收發等功能。
打開遠程登錄開關支持以下兩種方式:
- 在控制臺打開。具體操作,請參見遠程登錄。
- 設備主動打開。通過調用接口:aiot_ra_request:
/** * @brief 主動請求建立通道 * * @param[in] handle 指向ra會話句柄的指針 * * @return int32_t* * @retval <STATE_SUCCESS 執行失敗, 更多信息請參考 STATE_REMOTE_* 定義 * @retval >=STATE_SUCCESS 執行成功 */ int32_t aiot_ra_request(void *handle);
步驟五:關閉遠程登錄通道
調用aiot_ra_stop,關閉遠程服務通道。
int i = 60000;
while(1)
{
sleep(1);
/* TODO: 業務邏輯 */
i--;
/*根據業務邏輯需求,設置條件,需要退出線程可以調用aiot_ra_stop*/
if(i == 0)
{
/*退出線程,關閉RA服務*/
aiot_ra_stop(ra_handle);
break;
}
}
步驟六:退出程序
調用aiot_ra_deinit,銷毀RA
客戶端實例,釋放資源。
aiot_ra_deinit(&ra_handle);