ali_linkkit连云三大接口

文件.\src\sdk-impl\impl_linkkit.c

IOT_Linkkit_Open()创建设备id

int IOT_Linkkit_Open(iotx_linkkit_dev_type_t dev_type, iotx_linkkit_dev_meta_info_t *meta_info)

  • 输入:设备类型(主设备或从设备)、设备四元组信息,
  • 一般是创建主设备,创建成功返回IOTX_DM_LOCAL_NODE_DEVID(0)。
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
}

IOT_Linkkit_Connect(int devid)

  • 输入:设备类型(主设备或从设备)、设备四元组信息,
  • 一般是创建主设备,创建成功返回IOTX_DM_LOCAL_NODE_DEVID(0)。
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;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值