赞
踩
文件.\src\sdk-impl\impl_linkkit.c
int IOT_Linkkit_Open(iotx_linkkit_dev_type_t dev_type, iotx_linkkit_dev_meta_info_t *meta_info)
int IOT_Linkkit_Open(iotx_linkkit_dev_type_t dev_type, iotx_linkkit_dev_meta_info_t *meta_info) { int res = 0; if (dev_type < 0 || dev_type >= IOTX_LINKKIT_DEV_TYPE_MAX || meta_info == NULL) { sdk_err("Invalid Parameter"); return FAIL_RETURN; } switch (dev_type) { case IOTX_LINKKIT_DEV_TYPE_MASTER: { res = _iotx_linkkit_master_open(meta_info); if (res == SUCCESS_RETURN) { res = IOTX_DM_LOCAL_NODE_DEVID; IOT_RegisterCallback(ITE_REDIRECT, user_redirect_event_handler); } } break; case IOTX_LINKKIT_DEV_TYPE_SLAVE: { #ifdef DEVICE_MODEL_GATEWAY res = _iotx_linkkit_slave_open(meta_info); #else res = FAIL_RETURN; #endif } break; default: { sdk_err("Unknown Device Type"); res = FAIL_RETURN; } break; } return res; }
//进一步调用关系:
static int _iotx_linkkit_master_open(iotx_linkkit_dev_meta_info_t *meta_info)
//包含ALCS、SHADOW、OTA、MESSAGE_CACHE、IPC、设备管理(dm_mgr_init())等初始化工作。
int iotx_dm_open(void)
{
dm_msg_init(); //消息初始化
dm_mgr_init(); //插入设备列表
dm_client_open(); //采用COAP或MQTT连云,目前采用MQTT
}
int IOT_Linkkit_Connect(int devid) { bk_printf("====%s(), devid=%d\n",__func__,devid); int res = 0; iotx_linkkit_ctx_t *ctx = _iotx_linkkit_get_ctx(); if (devid < 0) { sdk_err("Invalid Parameter"); return FAIL_RETURN; } if (ctx->is_opened == 0) { return FAIL_RETURN; } _iotx_linkkit_mutex_lock(); if (devid == IOTX_DM_LOCAL_NODE_DEVID) { res = _iotx_linkkit_master_connect(); bk_printf("====%s(),_iotx_linkkit_master_connect ret=%d\n",__func__,res); } else { #ifdef DEVICE_MODEL_GATEWAY res = _iotx_linkkit_subdev_connect(devid, iotx_dm_subdev_connect, NULL, 0); #else res = FAIL_RETURN; #endif } _iotx_linkkit_mutex_unlock(); return res; }
static int _iotx_linkkit_master_connect(void) { int res = 0; iotx_linkkit_ctx_t *ctx = _iotx_linkkit_get_ctx(); iotx_dm_init_params_t dm_init_params; if (ctx->is_connected) { return FAIL_RETURN; } ctx->is_connected = 1; memset(&dm_init_params, 0, sizeof(iotx_dm_init_params_t)); dm_init_params.event_callback = _iotx_linkkit_event_callback; res = iotx_dm_subscribe(IOTX_DM_LOCAL_NODE_DEVID); if (res != SUCCESS_RETURN) { sdk_err("DM Subscribe Failed"); ctx->is_connected = 0; return FAIL_RETURN; } res = iotx_dm_connect(&dm_init_params); if (res != SUCCESS_RETURN) { sdk_err("DM Start Failed"); //show err ctx->is_connected = 0; return FAIL_RETURN; } //Let user event handle at last iotx_dm_event_types_t type = IOTX_DM_EVENT_INITIALIZED; _iotx_linkkit_event_callback(type, "{\"devid\":0}"); return SUCCESS_RETURN; }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。