日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

C版本SDK

本章為您介紹C版本的SDK使用方法及相關API。Link IoT Edge提供C版本的SDK,名稱為linkedge-thing-access-sdk-c

C版本開源的SDK源碼請參見開源C庫

get_properties_callback

/*
     * 獲取屬性(對應設備產品物模型屬性定義)的回調函數,需驅動開發者實現獲取屬性業務邏輯。
     * 
     * Link IoT Edge需要獲取某個設備的屬性時,SDK會調用該接口間接獲取到數據并封裝成固定格式后回傳給Link IoT Edge。
     * 開發者需要根據設備id和屬性名找到設備,將獲取到的屬性值按照@device_data_t格式填充。
     *
     * @dev_handle:         Link IoT Edge需要獲取屬性的具體某個設備。
     * @properties:         屬性值鍵值結構,驅動開發者需要將根據屬性名稱獲取到的屬性值更新到properties中。
     * @properties_count:   屬性個數。
     * @usr_data:           注冊設備時,用戶傳遞的私有數據。
     * 所有屬性均獲取成功則返回LE_SUCCESS,其他則返回錯誤碼(參考le_error.h錯誤碼宏定義)。
     * */
typedef int (*get_properties_callback)(device_handle_t dev_handle, 
                                       leda_device_data_t properties[], 
                                       int properties_count, 
                                       void *usr_data);

set_properties_callback

/*
     * 設置屬性(對應設備產品物模型屬性定義)的回調函數,需驅動開發者實現設置屬性業務邏輯。
     * 
     * Link IoT Edge需要設置某個設備的屬性時,SDK會調用該接口將具體的屬性值傳遞給應用程序,開發者需要在本回調
     * 函數里將屬性設置到設備。
     *
     * @dev_handle:         Link IoT Edge需要設置屬性的具體某個設備。
     * @properties:         Link IoT Edge需要設置的設備的屬性名稱和值。
     * @properties_count:   屬性個數。
     * @usr_data:           注冊設備時,用戶傳遞的私有數據。
     * 
     * 若獲取成功則返回LE_SUCCESS,失敗則返回錯誤碼(參考le_error.h錯誤碼宏定義)。
     * */
typedef int (*set_properties_callback)(device_handle_t dev_handle, 
                                       const leda_device_data_t properties[], 
                                       int properties_count, 
                                       void *usr_data);

call_service_callback

/*
     * 服務(對應設備產品物模型服務定義)調用的回調函數,需要驅動開發者實現服務對應業務邏輯。
     * 
     * Link IoT Edge需要調用某個設備的服務時,SDK會調用該接口將具體的服務參數傳遞給應用程序,開發者需要在本回調
     * 函數里調用具體的服務,并將服務返回值按照@device_data_t格式填充到output_data。 
     *
     * @dev_handle:   Link IoT Edge需要調用服務的具體某個設備。
     * @service_name: Link IoT Edge需要調用的設備的具體某個服務名,名稱與設備產品物模型一致。
     * @data:         Link IoT Edge需要調用的設備的具體某個服務參數,參數與設備產品物模型保持一致。
     * @data_count:   Link IoT Edge需要調用的設備的具體某個服務參數個數。
     * @output_data:  開發者需要將服務調用的返回值,按照設備產品物模型規定的服務格式返回到output中。
     * @usr_data:     注冊設備時,用戶傳遞的私有數據。
     * 
     * 若獲取成功則返回LE_SUCCESS,失敗則返回錯誤碼(參考le_error.h錯誤碼宏定義)。
     * */
typedef int (*call_service_callback)(device_handle_t dev_handle, 
                                     const char *service_name, 
                                     const leda_device_data_t data[], 
                                     int data_count, 
                                     leda_device_data_t output_data[], 
                                     void *usr_data);

leda_report_properties

/*
 * 上報屬性,在設備所屬產品物模型中規定了設備的屬性上報能力。
 *
 * 上報屬性,可以上報一個,也可以多個一起上報。
 *
 * dev_handle:          設備在Link IoT Edge本地唯一標識。
 * properties:          @leda_device_data_t,屬性數組。
 * properties_count:    本次上報屬性個數。
 *
 * 阻塞接口,成功返回LE_SUCCESS,失敗返回錯誤碼。
 *
 */
int leda_report_properties(device_handle_t dev_handle, const leda_device_data_t properties[], int properties_count);

leda_report_event

/*
 * 上報事件,設備具有的事件上報能力在設備產品物模型有規定。
 *
 * 
 * dev_handle:  設備在Link IoT Edge本地唯一標識。
 * event_name:  事件名稱。
 * data:        @leda_device_data_t,事件參數數組。
 * data_count:  事件參數數組長度。
 *
 * 阻塞接口,成功返回LE_SUCCESS,失敗返回錯誤碼。
 *
 */
int leda_report_event(device_handle_t dev_handle, const char *event_name, const leda_device_data_t data[], int data_count);

leda_offline

/*
 * 下線設備,假如設備工作在不正常的狀態或設備退出前,可以先下線設備,這樣Link IoT Edge就不會繼續下發消息到設備側。
 *
 * dev_handle:  設備在Link IoT Edge本地唯一標識。
 *
 * 阻塞接口,成功返回LE_SUCCESS,失敗返回錯誤碼。
 *
 */
int leda_offline(device_handle_t dev_handle);

leda_online

/*
 * 上線設備,設備只有上線后,才能被Link IoT Edge識別。
 *
 * dev_handle:  設備在Link IoT Edge本地唯一標識。
 *
 * 阻塞接口,成功返回LE_SUCCESS,失敗返回錯誤碼。
 */
int leda_online(device_handle_t dev_handle);

leda_register_and_online_by_device_name

/*
 * 通過已在阿里云物聯網平臺創建的設備device_name,注冊并上線設備,申請設備唯一標識符。
 *
 * 若需要注冊多個設備,則多次調用該接口即可。
 *
 * product_key: 在阿里云物聯網平臺創建的產品ProductKey。
 * device_name: 在阿里云物聯網平臺創建的設備名稱DeviceName。
 * device_cb:   請求調用設備回調函數結構體,詳細描述見@leda_device_callback。
 * usr_data:    設備注冊時傳入私有數據,在回調中會傳給設備。
 *
 * 阻塞接口,返回值設備在Link IoT Edge本地唯一標識,>= 0表示有效,< 0 表示無效。
 *
 */
device_handle_t leda_register_and_online_by_device_name(const char *product_key, const char *device_name, leda_device_callback_t *device_cb, void *usr_data);

leda_register_and_online_by_local_name

/*
 * 通過本地自定義設備名稱,注冊并上線設備,申請設備唯一標識符。
 *
 * 若需要注冊多個設備,則多次調用該接口即可。
 *
 * product_key: 在阿里云物聯網平臺創建的產品ProductKey。
 * local_name:  由設備特征值組成的唯一描述信息,必須保證同一個product_key時,每個設備名稱不同。
 * device_cb:   請求調用設備回調函數結構體,詳細描述見@leda_device_callback。
 * usr_data:    設備注冊時傳入私有數據,在回調中會傳給設備。
 *
 * 阻塞接口,返回值設備在Link IoT Edge本地唯一標識,>= 0表示有效,< 0 表示無效。
 *
 * 注:在同一產品ProductKey條件設備注冊,不允許本接口和leda_register_and_online_by_device_name接口同時使用。 
 * 即每一個產品ProductKey設備注冊必須使用同一接口,否則設備注冊會發生不可控行為。
 */
device_handle_t leda_register_and_online_by_local_name(const char *product_key, const char *local_name, leda_device_callback_t *device_cb, void *usr_data);

leda_init

/*
 * 驅動模塊初始化,模塊內部會創建工作線程池,異步執行阿里云物聯網平臺下發的設備操作請求,工作線程數目通過worker_thread_nums配置。
 *
 * worker_thread_nums: 線程池工作線程數,該數值根據注冊設備數量進行設置。
 *
 * 阻塞接口,成功返回LE_SUCCESS,失敗返回錯誤碼。
 */
int leda_init(int worker_thread_nums);

leda_exit

/*
 * 驅動模塊退出。
 *
 * 模塊退出前,釋放資源。
 *
 * 阻塞接口。
 */
void leda_exit(void);

leda_get_driver_info_size

/*
 * 獲取驅動信息長度。
 *
 * 阻塞接口,成功返回驅動信息長度,失敗返回0。
 */
int leda_get_driver_info_size(void);

leda_get_driver_info

/*
 * 獲取驅動信息(在物聯網平臺配置的驅動配置)。
 *
 * driver_info: 驅動信息,需要提前申請好內存傳入。
 * size:        驅動信息長度,leda_get_driver_info_size,如果傳入driver_info比實際配置內容長度短,會返回LE_ERROR_INVAILD_PARAM。
 *  
 * 阻塞接口,成功返回LE_SUCCESS,失敗返回錯誤碼。
 * 
 * 配置格式:
    {
        "json":{
            "ip":"127.0.0.1",
            "port":54321
        },
        "kv":[
            {
                "key":"ip",
                "value":"127.0.0.1",
                "note":"ip地址"
            },
            {
                "key":"port",
                "value":"54321",
                "note":"port端口"
            }
        ],
        "fileList":[
            {
                "path":"device_config.json"
            }
        ]
    }
 */
int leda_get_driver_info(char *driver_info, int size);

leda_get_device_info_size

/*
 * 獲取設備信息長度。
 *
 * 阻塞接口,成功返回設備信息長度,失敗返回0。
 */
int leda_get_device_info_size(void);

leda_get_device_info

/*
 * 獲取設備信息(在物聯網平臺配置的設備配置)。
 *
 * device_info:  設備信息,需要提前申請好內存傳入。
 * size:         設備信息長度,該長度通過leda_get_device_info_size接口獲取,如果傳入device_info比實際配置內容長度短,會返回LE_ERROR_INVAILD_PARAM。
 *  
 * 阻塞接口,成功返回LE_SUCCESS,失敗返回錯誤碼。
 * 
 * 配置格式:
    [
        {
            "custom":{
                "port":12345,
                "ip":"127.0.0.1"
            },
            "deviceName":"device1",
            "productKey":"a1ccxxeypky"
        }
    ]
 */
int leda_get_device_info(char *device_info, int size);

leda_get_config_size

/*
 * 獲取驅動配置長度。
 *
 * 阻塞接口,成功返回驅動配置長度,失敗返回0。
 */
int leda_get_config_size(void);

leda_get_config

/*
 * 獲取驅動所有配置。
 *
 * config:       驅動配置,需要提前申請好內存傳入。
 * size:         驅動配置長度,該長度通過leda_get_config_size接口獲取,如果傳入config比實際配置內容長度短,會返回LE_ERROR_INVAILD_PARAM。
 *  
 * 阻塞接口,成功返回LE_SUCCESS,失敗返回錯誤碼。
 * 
 * 配置格式:
    {
        "config":{
            "json":{
                "ip":"127.0.0.1",
                "port":54321
            },
            "kv":[
                {
                    "key":"ip",
                    "value":"127.0.0.1",
                    "note":"ip地址"
                },
                {
                    "key":"port",
                    "value":"54321",
                    "note":"port端口"
                }
            ],
            "fileList":[
                {
                    "path":"device_config.json"
                }
            ]
        },
        "deviceList":[
            {
                "custom":"{"port":12345,"ip":"127.0.0.1"}",
                "deviceName":"device1",
                "productKey":"a1ccxxeypky"
            }
        ]
    }
 */
int leda_get_config(char *config, int size);

config_changed_callback

/*
 * 驅動配置變更回調接口。
 *
 * config:       配置信息。
 *
 * 阻塞接口,成功返回LE_SUCCESS,失敗返回錯誤碼。
 */
typedef int (*config_changed_callback)(const char *config);

leda_register_config_changed_callback

/*
 * 訂閱驅動配置變更監聽回調。
 *
 * config_cb:      配置變更通知回調接口。
 *
 * 阻塞接口,成功返回LE_SUCCESS,失敗返回錯誤碼。
 */
int leda_register_config_changed_callback(config_changed_callback config_cb);

leda_get_tsl_size

/*
 * 獲取指定產品ProductKey對應物模型內容長度。
 *
 * product_key:   產品ProductKey。
 *
 * 阻塞接口,成功返回product_key對應物模型內容長度,失敗返回0。
 */
int leda_get_tsl_size(const char *product_key);

leda_get_tsl

/*
 * 獲取指定產品ProductKey對應物模型內容。
 *
 * product_key:  產品ProductKey。
 * tsl:          物模型內容,需要提前申請好內存傳入。
 * size:         物模型內容長度,該長度通過leda_get_tsl_size接口獲取,如果傳入tsl比實際物模型內容長度短,會返回LE_ERROR_INVAILD_PARAM。
 *  
 * 阻塞接口,成功返回LE_SUCCESS,失敗返回錯誤碼。
 */
int leda_get_tsl(const char *product_key, char *tsl, int size);

leda_get_tsl_ext_info_size

/*
 * 獲取指定產品ProductKey對應物模型擴展信息內容長度。
 *
 * product_key:   產品ProductKey。
 *
 * 阻塞接口,成功返回product_key對應物模型擴展信息內容長度,失敗返回0。
 */
int leda_get_tsl_ext_info_size(const char *product_key);

leda_get_tsl_ext_info

/*
 * 獲取指定產品ProductKey對應物模型擴展信息內容。
 *
 * product_key:  產品ProductKey。
 * tsl_ext_info: 物模型擴展信息,需要提前申請好內存傳入。
 * size:         物模型擴展信息長度,該長度通過leda_get_tsl_ext_info_size接口獲取,如果傳入tsl_ext_info比實際物模型擴展信息內容長度短,會返回LE_ERROR_INVAILD_PARAM。
 *  
 * 阻塞接口,成功返回LE_SUCCESS,失敗返回錯誤碼。
 */
int leda_get_tsl_ext_info(const char *product_key, char *tsl_ext_info, int size);

leda_get_device_handle

/*
 * 獲取設備句柄。
 *
 * product_key: 產品ProductKey。
 * device_name: 設備名稱DeviceName。
 *
 * 阻塞接口,成功返回device_handle_t,失敗返回小于0數值。
 */
device_handle_t leda_get_device_handle(const char *product_key, const char *device_name);