| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222 |
- /*
- * Copyright (C) 2015-2018 Alibaba Group Holding Limited
- */
- #include <stdio.h>
- #include <string.h>
- #include "infra_types.h"
- #include "infra_defs.h"
- #include "infra_compat.h"
- #include "infra_compat.h"
- #include "dev_model_api.h"
- #include "dm_wrapper.h"
- #include "cJSON.h"
- #ifdef ATM_ENABLED
- #include "at_api.h"
- #endif
- void HAL_Printf(const char *fmt, ...);
- int HAL_SetProductKey(char *product_key);
- int HAL_SetDeviceName(char *device_name);
- int HAL_SetProductSecret(char *product_secret);
- int HAL_SetDeviceSecret(char *device_secret);
- /* Fill in your device info here */
- #define PRODUCT_KEY " ###DEVICE_PK### "
- #define PRODUCT_SECRET "0HxtPRZjwr14bi7K"
- #define DEVICE_NAME "auto_example1"
- #define DEVICE_SECRET "L1xQk7AntumkNNc8wvHwMJsh9PBoexN0"
- /* This time interval will be given to SDK for receiving packets from network */
- #define USER_EXAMPLE_YIELD_TIMEOUT_MS (200)
- #define EXAMPLE_TRACE(...) \
- do { \
- HAL_Printf("\033[1;32;40m%s.%d: ", __func__, __LINE__); \
- HAL_Printf(__VA_ARGS__); \
- HAL_Printf("\033[0m\r\n"); \
- } while (0)
- typedef struct {
- int cloud_connected;
- int master_devid;
- int master_initialized;
- } user_example_ctx_t;
- static user_example_ctx_t g_user_example_ctx;
- static user_example_ctx_t *user_example_get_ctx(void)
- {
- return &g_user_example_ctx;
- }
- static int user_connected_event_handler(void)
- {
- user_example_ctx_t *user_example_ctx = user_example_get_ctx();
- EXAMPLE_TRACE("Alibaba Cloud Connected Successfully!");
- user_example_ctx->cloud_connected = 1;
- return 0;
- }
- static int user_master_dev_available(void)
- {
- user_example_ctx_t *user_example_ctx = user_example_get_ctx();
- if (user_example_ctx->cloud_connected && user_example_ctx->master_initialized) {
- return 1;
- }
- return 0;
- }
- static int user_disconnected_event_handler(void)
- {
- user_example_ctx_t *user_example_ctx = user_example_get_ctx();
- EXAMPLE_TRACE("Cloud Disconnected Event Arrived!");
- user_example_ctx->cloud_connected = 0;
- return 0;
- }
- static int user_property_set_event_handler(const int devid, const char *request, const int request_len)
- {
- int res = 0;
- user_example_ctx_t *user_example_ctx = user_example_get_ctx();
- EXAMPLE_TRACE("Property Set Received, Devid: %d, Request: %s", devid, request);
- res = IOT_Linkkit_Report(user_example_ctx->master_devid,
- ITM_MSG_POST_PROPERTY,
- (unsigned char *)request,
- request_len);
- EXAMPLE_TRACE("Post Property Message ID: %d", res);
- return 0;
- }
- static int user_initialized(const int devid)
- {
- user_example_ctx_t *user_example_ctx = user_example_get_ctx();
- EXAMPLE_TRACE("Device Initialized, Devid: %d", devid);
- if (user_example_ctx->master_devid == devid) {
- user_example_ctx->master_initialized = 1;
- }
- return 0;
- }
- void user_post_property(void)
- {
- int res = 0;
- user_example_ctx_t *user_example_ctx = user_example_get_ctx();
- char *property_payload = "NULL";
- /* Normal Example */
- property_payload = "{\" ###DM_PROP_ID### \":0}";
- res = IOT_Linkkit_Report(user_example_ctx->master_devid,
- ITM_MSG_POST_PROPERTY,
- (unsigned char *)property_payload,
- strlen(property_payload));
- EXAMPLE_TRACE("Post Property Message ID: %d", res);
- }
- void user_post_event(void)
- {
- int res = 0;
- user_example_ctx_t *user_example_ctx = user_example_get_ctx();
- char *event_id = " ###DM_EVT_ID### ";
- char *event_payload = "NULL";
- /* Normal Example */
- event_payload = "{\" ###DM_EVT_OU_KEY### \":0}";
- res = IOT_Linkkit_TriggerEvent(user_example_ctx->master_devid,
- event_id,
- strlen(event_id),
- event_payload,
- strlen(event_payload));
- EXAMPLE_TRACE("Post Event Message ID: %d", res);
- }
- void set_iotx_info()
- {
- HAL_SetProductKey(PRODUCT_KEY);
- HAL_SetProductSecret(PRODUCT_SECRET);
- HAL_SetDeviceName(DEVICE_NAME);
- HAL_SetDeviceSecret(DEVICE_SECRET);
- }
- int main(void)
- {
- unsigned int loop_cnt = 0;
- int res = 0;
- iotx_linkkit_dev_meta_info_t master_meta_info;
- user_example_ctx_t *user_example_ctx = user_example_get_ctx();
- #ifdef ATM_ENABLED
- if (IOT_ATM_Init() < 0) {
- EXAMPLE_TRACE("IOT ATM init failed!\n");
- return -1;
- }
- #endif
- IOT_SetLogLevel(IOT_LOG_DEBUG);
- set_iotx_info();
- /* Register Callback to Listen What You Interested inside SDK */
- IOT_RegisterCallback(ITE_CONNECT_SUCC, user_connected_event_handler);
- IOT_RegisterCallback(ITE_INITIALIZE_COMPLETED, user_initialized);
- IOT_RegisterCallback(ITE_PROPERTY_SET, user_property_set_event_handler);
- IOT_RegisterCallback(ITE_DISCONNECTED, user_disconnected_event_handler);
- /* Create Meta Information Struct for IOT_Linkkit_Open() */
- memset(&master_meta_info, 0, sizeof(iotx_linkkit_dev_meta_info_t));
- memcpy(master_meta_info.product_key, PRODUCT_KEY, strlen(PRODUCT_KEY));
- memcpy(master_meta_info.product_secret, PRODUCT_SECRET, strlen(PRODUCT_SECRET));
- memcpy(master_meta_info.device_name, DEVICE_NAME, strlen(DEVICE_NAME));
- memcpy(master_meta_info.device_secret, DEVICE_SECRET, strlen(DEVICE_SECRET));
- /* Create Master Device Resources by IOT_Linkkit_Open() */
- memset(user_example_ctx, 0, sizeof(user_example_ctx_t));
- user_example_ctx->master_devid = IOT_Linkkit_Open(IOTX_LINKKIT_DEV_TYPE_MASTER, &master_meta_info);
- if (user_example_ctx->master_devid < 0) {
- EXAMPLE_TRACE("IOT_Linkkit_Open() Failed\n");
- return -1;
- }
- EXAMPLE_TRACE("IOT_Linkkit_Open() Success!\n");
- /* Start Connectting Alibaba Cloud */
- res = IOT_Linkkit_Connect(user_example_ctx->master_devid);
- if (res < 0) {
- EXAMPLE_TRACE("IOT_Linkkit_Connect() Failed\n");
- return -1;
- }
- EXAMPLE_TRACE("IOT_Linkkit_Connect() Success! res = IOT_Linkkit_Connect() = %d\n", res);
- /* Infinite Loop of Processing Command Received from Cloud */
- while (1) {
- IOT_Linkkit_Yield(USER_EXAMPLE_YIELD_TIMEOUT_MS);
- /* Post Proprety Example */
- if (loop_cnt % 100 == 0 && user_master_dev_available()) {
- EXAMPLE_TRACE("loop_cnt = %d, going to post property\n", loop_cnt);
- user_post_property();
- }
- /* Post Event Example */
- if (loop_cnt % 180 == 0 && user_master_dev_available()) {
- EXAMPLE_TRACE("loop_cnt = %d, going to post event\n", loop_cnt);
- user_post_event();
- }
- ++ loop_cnt;
- }
- IOT_Linkkit_Close(user_example_ctx->master_devid);
- IOT_DumpMemoryStats(IOT_LOG_DEBUG);
- IOT_SetLogLevel(IOT_LOG_NONE);
- return 0;
- }
|