Link Kit C-SDK  4.0.0
| 宏定义 | 类型定义 | 枚举 | 函数
aiot_ra_api.h 文件参考

remote-access模块头文件, 提供远程登录调试的能力 更多...

此图展示该文件直接或间接的被哪些文件引用了:

浏览源代码.

struct  aiot_ra_event_t
 RA内部事件 更多...
 
struct  aiot_ra_service_t
 RA内部事件 更多...
 

宏定义

#define STATE_REMOTE_ACCESS_BASE   (-0x1C00)
 -0x1C00~-0x1CFF表达SDK在ra模块内的状态码 更多...
 
#define STATE_REMOTE_ACCESS_FAILED   (-0x1C01)
 RA执行失败返回码 更多...
 
#define STATE_REMOTE_ACCESS_TIMEOUT   (-0x1C02)
 RA链接超时,发送超时等 更多...
 
#define STATE_REMOTE_ACCESS_RESET   (-0x1C03)
 RA内部I/O出错,执行复位 更多...
 
#define STATE_REMOTE_ACCESS_MISSING_MQTT_HADNL   (-0x1C04)
 MQTT会话句柄未设置, 请通过 aiot_ra_setopt 设置MQTT会话句柄 更多...
 
#define STATE_REMOTE_ACCESS_SYSTEM_NOT_LINUX   (-0x1C0A)
 用户的操作系统不是linux 更多...
 

类型定义

typedef void(* aiot_ra_event_handler_t) (void *handle, const aiot_ra_event_t *event, void *userdata)
 RA内部事件回调函数接口定义 更多...
 

枚举

enum  aiot_ra_event_type { AIOT_RA_EVT_CONNECT, AIOT_RA_EVT_DISCONNECT, AIOT_RA_EVT_OPEN_WEBSOCKET, AIOT_RA_EVT_CLOSE_WEBSOCKET }
 RA内部事件类型 更多...
 
enum  aiot_ra_option_t {
  AIOT_RAOPT_MQTT_HANDLE, AIOT_RAOPT_EVENT_HANDLER, AIOT_RAOPT_USERDATA, AIOT_RAOPT_NETWORK_CRED,
  AIOT_RAOPT_ADD_SERVICE, AIOT_RAOPT_MAX
}
 aiot_mqtt_setopt 函数的option参数. 对于下文每一个选项中的数据类型, 指的是aiot_mqtt_setopt 中的data参数的数据类型 更多...
 

函数

void * aiot_ra_init (void)
 创建ra会话实例, 并以默认值配置会话参数 更多...
 
int32_t aiot_ra_setopt (void *handle, aiot_ra_option_t option, void *data)
 配置ra会话 更多...
 
int32_t aiot_ra_deinit (void **handle)
 结束ra会话, 销毁实例并回收资源 更多...
 
void * aiot_ra_start (void *handle)
 开始ra服务,作为线程开始运行 更多...
 
int32_t aiot_ra_stop (void *handle)
 停止ra服务,aiot_ra_start线程退出 更多...
 

详细描述

remote-access模块头文件, 提供远程登录调试的能力

RA模块作用与开启一个通道,供前端访问设备内部, API的使用流程如下:

  1. 首先参考 aiot_mqtt_api.h 的说明, 保证成功建立与物联网平台的MQTT连接
  2. 调用 aiot_ra_init 初始化远程通道, 获取通道句柄
  3. 调用 aiot_ra_setopt 配置RA会话的参数, 常用配置项见 aiot_ra_setopt 的说明
  4. 启动一个线程,调用 aiot_ra_start 开启远程代理服务, 会一直阻塞
  5. RA状态发生变化,会通过 aiot_ra_setopt 配置的 AIOT_RAOPT_EVENT_HANDLER 回调函数, 通知用户当前的状态变化

宏定义说明

#define STATE_REMOTE_ACCESS_BASE   (-0x1C00)

-0x1C00~-0x1CFF表达SDK在ra模块内的状态码

#define STATE_REMOTE_ACCESS_FAILED   (-0x1C01)

RA执行失败返回码

#define STATE_REMOTE_ACCESS_TIMEOUT   (-0x1C02)

RA链接超时,发送超时等

#define STATE_REMOTE_ACCESS_RESET   (-0x1C03)

RA内部I/O出错,执行复位

#define STATE_REMOTE_ACCESS_MISSING_MQTT_HADNL   (-0x1C04)

MQTT会话句柄未设置, 请通过 aiot_ra_setopt 设置MQTT会话句柄

#define STATE_REMOTE_ACCESS_SYSTEM_NOT_LINUX   (-0x1C0A)

用户的操作系统不是linux

类型定义说明

typedef void(* aiot_ra_event_handler_t) (void *handle, const aiot_ra_event_t *event, void *userdata)

RA内部事件回调函数接口定义

当RA内部事件被触发时, 调用此函数. 如连接成功/断开连接/

参数
[in]handlera会话句柄
[in]eventra消息结构体, 存放内部事件
[in]userdata用户上下文

枚举类型说明

RA内部事件类型

枚举值
AIOT_RA_EVT_CONNECT 

当RA实例连接代理通道成功, 触发此事件

AIOT_RA_EVT_DISCONNECT 

当RA实例从代理通道断开, 触发此事件

AIOT_RA_EVT_OPEN_WEBSOCKET 

接收到topic信息,打开代理通道

AIOT_RA_EVT_CLOSE_WEBSOCKET 

接收到topic信息,关闭代理通道

aiot_mqtt_setopt 函数的option参数. 对于下文每一个选项中的数据类型, 指的是aiot_mqtt_setopt 中的data参数的数据类型

  1. data的数据类型是char *时, 以配置AIOT_MQTTOPT_HOST 为例:

    char *host = "xxx";

    aiot_mqtt_setopt(mqtt_handle, AIOT_MQTTOPT_HOST, host);

  2. data的数据类型是其他数据类型时, 以配置AIOT_MQTTOPT_PORT 为例:

    uint16_t port = 443;

    aiot_mqtt_setopt(mqtt_handle, AIOT_MQTTOPT_PORT, (void *)&port);

枚举值
AIOT_RAOPT_MQTT_HANDLE 

RA会话 需要的MQTT句柄, 需要先建立MQTT连接, 再设置MQTT句柄

数据类型: (void *)

AIOT_RAOPT_EVENT_HANDLER 

设置内部事件回调, 它在内部事件触发, 告知用户

数据类型: ( aiot_ra_event_handler_t )

AIOT_RAOPT_USERDATA 

用户需要SDK暂存的上下文

这个上下文指针会在 AIOT_RAOPT_EVENT_HANDLER 设置的回调被调用时, 由SDK传给用户

数据类型: (void *)

AIOT_RAOPT_NETWORK_CRED 

RA建联时, 网络使用的安全凭据

该配置项用于为底层网络配置aiot_sysdep_network_cred_t 安全凭据数据

  1. 若该选项不配置, 那么RA将以tcp方式直接建联
  2. aiot_sysdep_network_cred_t 中option配置为AIOT_SYSDEP_NETWORK_CRED_NONE , RA将以tcp方式直接建联
  3. aiot_sysdep_network_cred_t 中option配置为AIOT_SYSDEP_NETWORK_CRED_SVRCERT_CA , RA将以tls方式建联
  4. aiot_sysdep_network_cred_t 中option配置为AIOT_SYSDEP_NETWORK_CRED_SVRCERT_PSK , RA将以tls psk方式建联

数据类型: (aiot_sysdep_network_cred_t *)

AIOT_RAOPT_ADD_SERVICE 

新增本地可提供的远程服务

AIOT_RAOPT_MAX 

函数说明

void* aiot_ra_init ( void  )

创建ra会话实例, 并以默认值配置会话参数

返回
void *
返回值
非NULLra实例的句柄
NULL初始化失败, 一般是内存分配失败导致

函数调用图:

int32_t aiot_ra_setopt ( void *  handle,
aiot_ra_option_t  option,
void *  data 
)

配置ra会话

参数
[in]handlera会话句柄
[in]option配置选项, 更多信息请参考aiot_ra_option_t
[in]data配置选项数据, 更多信息请参考aiot_ra_option_t
返回
int32_t
返回值
<STATE_SUCCESS参数配置失败
>=STATE_SUCCESS参数配置成功

函数调用图:

int32_t aiot_ra_deinit ( void **  handle)

结束ra会话, 销毁实例并回收资源

参数
[in]handle指向ra会话句柄的指针
返回
int32_t
返回值
<STATE_SUCCESS执行失败
>=STATE_SUCCESS执行成功

函数调用图:

void* aiot_ra_start ( void *  handle)

开始ra服务,作为线程开始运行

参数
[in]handle指向ra会话句柄的指针
返回
int32_t*
返回值
<STATE_SUCCESS执行失败, 更多信息请参考 STATE_REMOTE_* 定义
>=STATE_SUCCESS执行成功

函数调用图:

int32_t aiot_ra_stop ( void *  handle)

停止ra服务,aiot_ra_start线程退出

参数
[in]handle指向ra会话句柄的指针
返回
int32_t*
返回值
<STATE_SUCCESS执行失败, 更多信息请参考 STATE_REMOTE_* 定义
>=STATE_SUCCESS执行成功