更新时间:2018-11-22 16:02
函数名 | 说明 |
---|---|
linkkit_start] | 启动 linkkit 服务, 与云端建立连接并安装回调函数 |
linkkit_end | 停止 linkkit 服务, 与云端断开连接并回收资源 |
linkkit_dispatch | 事件分发函数, 触发 linkkit_start安装的回调 |
linkkit_yield | linkkit 主循环函数, 内含了心跳的维持, 服务器下行报文的收取等; 如果允许多线程, 请不要调用此函数 |
linkkit_set_value | 根据identifier设置物对象的 TSL 属性 |
linkkit_get_value | 根据identifier获取物对象的 TSL 属性 |
linkkit_set_tsl | 从本地读取 TSL 文件,生成物的对象并添加到 linkkit 中 |
linkkit_answer_service | 对云端服务请求进行回应 |
linkkit_invoke_raw_service | 向云端发送裸数据 |
linkkit_trigger_event | 上报设备事件到云端 |
linkkit_fota_init | 初始化 OTA-fota 服务, 并安装回调函数(需编译设置宏 OTA_ENABLED) |
linkkit_invoke_fota_service | 执行fota服务 |
linkkit_cota_init | 初始化 OTA-cota 服务, 并安装回调函数(需编译设置宏 OTA_ENABLED) |
linkkit_invoke_cota_get_config | 设备请求远程配置 |
linkkit_invoke_cota_service | 执行cota服务 |
linkkit_post_property | 上报设备属性到云端 |
linkkit_set_opt | 设置设备属性和服务上报参数 |
linkkit_try_leave | 设置linkkit离开标志 |
linkkit_is_try_leave | 获取linkkit离开标志 |
linkkit_is_end | 获取linkkit结束标志 |
linkkit_trigger_extended_info_operate | 设备拓展信息上报或删除 |
linkkit_ntp_time_request | 设备通过NTP协议从云端获取NTP时间 |
linkkit_start()
便可以完成linkkit的初始化, 并与云端建立连接用户可配置是否从云端拉取TSL, 将 get_tsl_from_cloud
设置为 1
即可
int get_tsl_from_cloud = 0; /* the param of whether it is get tsl from cloud */
linkkit_ops_t linkkit_ops = {
.on_connect = on_connect, /* connect handler */
.on_disconnect = on_disconnect, /* disconnect handler */
.raw_data_arrived = raw_data_arrived, /* receive raw data handler */
.thing_create = thing_create, /* thing created handler */
.thing_enable = thing_enable, /* thing enabled handler */
.thing_disable = thing_disable, /* thing disabled handler */
.thing_call_service = thing_call_service, /* self-defined service handler */
.thing_prop_changed = thing_prop_changed, /* property set handler */
.linkit_data_arrived = linkit_data_arrived, /* transparent transmission data handler */
};
EXAMPLE_TRACE("linkkit start");
if (-1 == linkkit_start(16, get_tsl_from_cloud, linkkit_loglevel_debug, &linkkit_ops, linkkit_cloud_domain_shanghai,
&sample_ctx)) {
EXAMPLE_TRACE("linkkit start fail");
return -1;
}
linkkit_set_tsl()
导入TSL文件
if (!get_tsl_from_cloud) {
/*
* if get_tsl_from_cloud = 0, set default tsl [TSL_STRING]
* please modify TSL_STRING by the TSL's defined.
*/
linkkit_set_tsl(TSL_STRING, strlen(TSL_STRING));
}
linkkit_start()
后进行初始化
linkkit_cota_init(linkkit_cota_callback);
linkkit_fota_init(linkkit_fota_callback);
linkkit_dispatch()
和linkkit_yield()
两个函数. 分别用于消息的处理分发和服务器下行数据的收取, 心跳的维持
while (1) {
/*
* if linkkit is support Multi-thread, the linkkit_dispatch and linkkit_yield with callback by linkkit,
* else it need user to call these function to received data.
*/
#if (CONFIG_SDK_THREAD_COST == 0)
linkkit_dispatch();
#endif
now = uptime_sec();
if (prev_sec == now) {
#if (CONFIG_SDK_THREAD_COST == 0)
linkkit_yield(100);
#else
HAL_SleepMs(100);
#endif /* CONFIG_SDK_THREAD_COST */
continue;
}
...
}
linkkit_set_value()
, linkkit_post_property()
这两个函数的组合来完成, 云端返回的应答可在post_property_cb()
中得到处理
linkkit_set_value(linkkit_method_set_property_value, sample_ctx->thing, "WIFI_Band", band, NULL);
linkkit_post_property(sample_ctx->thing,"WIFI_Band",post_property_cb);
linkkit_set_value(linkkit_method_set_property_value, sample_ctx->thing, "WIFI_Channel", &channel, NULL);
linkkit_post_property(sample_ctx->thing,"WIFI_Channel",post_property_cb);
linkkit_set_value(linkkit_method_set_property_value, sample_ctx->thing, "WiFI_RSSI", &rssi, NULL);
linkkit_post_property(sample_ctx->thing,"WiFI_RSSI",post_property_cb);
linkkit_set_value(linkkit_method_set_property_value, sample_ctx->thing, "WiFI_SNR", &snr, NULL);
linkkit_post_property(sample_ctx->thing,"WiFI_SNR",post_property_cb);
linkkit_set_value()
, linkkit_trigger_event()
这两个函数的组合来完成, 云端返回的应答可在post_property_cb()
中得到处理
int trigger_event(sample_context_t *sample)
{
char event_output_identifier[64];
snprintf(event_output_identifier, sizeof(event_output_identifier), "%s.%s", EVENT_ERROR_IDENTIFIER, EVENT_ERROR_OUTPUT_INFO_IDENTIFIER);
int errorCode = 0;
linkkit_set_value(linkkit_method_set_event_output_value,
sample->thing,
event_output_identifier,
&errorCode, NULL);
return linkkit_trigger_event(sample->thing, EVENT_ERROR_IDENTIFIER, post_property_cb);
}
linkkit_ntp_time_request
从云端获取NTP时间, 该操作是一个异步操作, 用户通过该API告知Linkkit从云端获取NTP时间, 该API就会返回了. 等到Linkkit成功从云端获取NTP时间后, 再通过回调函数告知用户. 另外, 该API只有在设备和云端成功连接连接后才可以使用.
int linkkit_ntp_time_request(void (*ntp_reply)(const char *ntp_offset_time_ms));
void ntp_reply(const char *ntp_offset_time_ms)
{
printf("ntp offset time:%s\n", ntp_offset_time_ms); //相对于1900年1月1日 00:00:00的偏移时间, 以ms为单位
}
在文档使用中是否遇到以下问题
更多建议
匿名提交