完善助眠仪功能 支持大模型控制
This commit is contained in:
parent
5d9bec2139
commit
ce728f5362
@ -27,6 +27,7 @@
|
|||||||
#define LOGE(...) BK_LOGE(TAG, ##__VA_ARGS__)
|
#define LOGE(...) BK_LOGE(TAG, ##__VA_ARGS__)
|
||||||
#define LOGD(...) BK_LOGD(TAG, ##__VA_ARGS__)
|
#define LOGD(...) BK_LOGD(TAG, ##__VA_ARGS__)
|
||||||
|
|
||||||
|
#define SLEEP_MODE_LEVEL_NUM 9
|
||||||
/*
|
/*
|
||||||
*PWM 通道
|
*PWM 通道
|
||||||
*/
|
*/
|
||||||
@ -35,45 +36,181 @@ static uint32_t pwm_chan = 1;
|
|||||||
/**
|
/**
|
||||||
* 模式1 单周期时序表
|
* 模式1 单周期时序表
|
||||||
*/
|
*/
|
||||||
static mode_info_t model_1[7] = {
|
static mode_info_t model_1[16] = {
|
||||||
{0, 2000},
|
{0, 300},
|
||||||
{1, 2000},
|
{1, 300},
|
||||||
{0, 2000},
|
{0, 800},
|
||||||
{-1, 2000},
|
{-1, 550},
|
||||||
{1, 2000},
|
{0, 550},
|
||||||
{0, 2000},
|
{1, 820},
|
||||||
{-1, 2000},
|
{0, 300},
|
||||||
|
{-1, 1000},
|
||||||
|
{0, 15},
|
||||||
|
{1, 1000},
|
||||||
|
{0, 300},
|
||||||
|
{-1, 800},
|
||||||
|
{0, 550},
|
||||||
|
{1, 550},
|
||||||
|
{0, 800},
|
||||||
|
{-1, 300},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 模式2
|
||||||
|
*/
|
||||||
|
static mode_info_t mode_2[34] = {
|
||||||
|
{0, 100},
|
||||||
|
{-1, 20},
|
||||||
|
{0, 130},
|
||||||
|
{1, 68},
|
||||||
|
{0, 170},
|
||||||
|
{-1, 88},
|
||||||
|
{0, 145},
|
||||||
|
{1, 110},
|
||||||
|
{0, 120},
|
||||||
|
{-1, 127},
|
||||||
|
{0, 100},
|
||||||
|
{1, 150},
|
||||||
|
{0, 68},
|
||||||
|
{-1, 165},
|
||||||
|
{0, 20},
|
||||||
|
{1, 200},
|
||||||
|
{0, 20},
|
||||||
|
{-1, 250},
|
||||||
|
{0, 20},
|
||||||
|
{1, 180},
|
||||||
|
{0, 20},
|
||||||
|
{-1, 180},
|
||||||
|
{0, 70},
|
||||||
|
{1, 150},
|
||||||
|
{0, 98},
|
||||||
|
{-1, 131},
|
||||||
|
{0, 117},
|
||||||
|
{1, 107},
|
||||||
|
{0, 150},
|
||||||
|
{-1, 88},
|
||||||
|
{0, 165},
|
||||||
|
{1, 68},
|
||||||
|
{0, 140},
|
||||||
|
{-1, 20},
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 模式3
|
||||||
|
*/
|
||||||
|
static mode_info_t mode_3[49] = {
|
||||||
|
{-1, 19},
|
||||||
|
{0, 92},
|
||||||
|
{1, 19},
|
||||||
|
{0, 186},
|
||||||
|
{-1, 19},
|
||||||
|
{0, 229},
|
||||||
|
{1, 29},
|
||||||
|
{0, 206},
|
||||||
|
{-1, 39},
|
||||||
|
{0, 181},
|
||||||
|
{1, 49},
|
||||||
|
{0, 157},
|
||||||
|
{-1, 63},
|
||||||
|
{0, 138},
|
||||||
|
{1, 69},
|
||||||
|
{0, 69},
|
||||||
|
{-1, 83},
|
||||||
|
{0, 98},
|
||||||
|
{1, 89},
|
||||||
|
{0, 69},
|
||||||
|
{-1, 99},
|
||||||
|
{0, 53},
|
||||||
|
{1, 109},
|
||||||
|
{0, 29},
|
||||||
|
{-1, 119},
|
||||||
|
{0, 10},
|
||||||
|
{1, 133},
|
||||||
|
{0, 10},
|
||||||
|
{-1, 119},
|
||||||
|
{0, 29},
|
||||||
|
{1, 108},
|
||||||
|
|
||||||
|
{0, 49},
|
||||||
|
{-1, 103},
|
||||||
|
{0, 69},
|
||||||
|
{1, 88},
|
||||||
|
{0, 98},
|
||||||
|
{-1, 78},
|
||||||
|
{0, 73},
|
||||||
|
{1, 68},
|
||||||
|
{0, 137},
|
||||||
|
{-1, 58},
|
||||||
|
{0, 160},
|
||||||
|
{1, 49},
|
||||||
|
{0, 176},
|
||||||
|
{-1, 40},
|
||||||
|
{0, 209},
|
||||||
|
{1, 29},
|
||||||
|
{0, 228},
|
||||||
|
{-1, 20},
|
||||||
|
};
|
||||||
|
|
||||||
|
static uint32_t g_mode_level[SLEEP_MODE_LEVEL_NUM] = {50, 55, 60, 65, 70, 75, 80, 85, 90};
|
||||||
|
|
||||||
static int helper_start = 0;
|
static int helper_start = 0;
|
||||||
//static beken_queue_t sleep_helper_msg_que = NULL;
|
static beken_queue_t sleep_helper_msg_que = NULL;
|
||||||
static beken_thread_t sleep_helper_thread_hdl = NULL;
|
static beken_thread_t sleep_helper_thread_hdl = NULL;
|
||||||
|
|
||||||
|
static sleep_mode current_mode = SLEEP_MODE_OFF;
|
||||||
|
static sleep_model_level current_level = SLEEP_MODEL_LEVEL_1;
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
sleep_mode model;
|
sleep_mode mode;
|
||||||
sleep_model_level level;
|
sleep_model_level level;
|
||||||
} sleep_msg_t;
|
} sleep_msg_t;
|
||||||
|
|
||||||
|
|
||||||
static void sleep_helper_thread(void *arg)
|
static void sleep_helper_thread(void *arg)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
int mode_info_size = 0;
|
||||||
|
mode_info_t *set_mode = NULL;
|
||||||
while (helper_start)
|
while (helper_start)
|
||||||
{
|
{
|
||||||
LOGE("doing...\n");
|
if(current_mode == SLEEP_MODE_1){
|
||||||
for (int i = 0; i < 7; i++)
|
set_mode = model_1;
|
||||||
|
mode_info_size = sizeof(model_1)/sizeof(mode_info_t);
|
||||||
|
}
|
||||||
|
else if(current_mode == SLEEP_MODE_2){
|
||||||
|
set_mode = mode_2;
|
||||||
|
mode_info_size = sizeof(mode_2)/sizeof(mode_info_t);
|
||||||
|
}
|
||||||
|
else if(current_mode == SLEEP_MODE_3){
|
||||||
|
set_mode = mode_3;
|
||||||
|
mode_info_size = sizeof(mode_3)/sizeof(mode_info_t);
|
||||||
|
}
|
||||||
|
if (current_mode != SLEEP_MODE_OFF)
|
||||||
{
|
{
|
||||||
int dir = model_1[i].dir;
|
sleep_mode do_mode = current_mode;
|
||||||
int delay = model_1[i].delay_ms;
|
for (int i = 0; i < mode_info_size; i++)
|
||||||
LOGE("dir:%d delay:%d\n", dir, delay);
|
{
|
||||||
//设置方向
|
if(!helper_start){
|
||||||
switch(dir){
|
LOGE("exit!! \n");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if(current_mode !=do_mode){
|
||||||
|
LOGE("change mode \n");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
int dir = set_mode[i].dir;
|
||||||
|
int delay = set_mode[i].delay_ms;
|
||||||
|
LOGE("dir:%d delay:%d\n", dir, delay);
|
||||||
|
// 设置方向
|
||||||
|
switch (dir)
|
||||||
|
{
|
||||||
case 1:
|
case 1:
|
||||||
bk_gpio_set_output_high(GPIO_44);
|
bk_gpio_set_output_high(GPIO_44);
|
||||||
bk_gpio_set_output_low(GPIO_45);
|
bk_gpio_set_output_low(GPIO_45);
|
||||||
break;
|
break;
|
||||||
case 0:
|
case 0:
|
||||||
bk_gpio_set_output_low(GPIO_44);
|
bk_gpio_set_output_low(GPIO_44);
|
||||||
bk_gpio_set_output_low(GPIO_45);
|
bk_gpio_set_output_low(GPIO_45);
|
||||||
break;
|
break;
|
||||||
@ -81,9 +218,29 @@ static void sleep_helper_thread(void *arg)
|
|||||||
bk_gpio_set_output_low(GPIO_44);
|
bk_gpio_set_output_low(GPIO_44);
|
||||||
bk_gpio_set_output_high(GPIO_45);
|
bk_gpio_set_output_high(GPIO_45);
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
rtos_delay_milliseconds(delay);
|
||||||
}
|
}
|
||||||
rtos_delay_milliseconds(delay);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
sleep_msg_t msg;
|
||||||
|
bk_err_t ret = BK_OK;
|
||||||
|
ret = rtos_pop_from_queue(&sleep_helper_msg_que, &msg, BEKEN_WAIT_FOREVER);
|
||||||
|
if (kNoErr == ret)
|
||||||
|
{
|
||||||
|
LOGE("sleep_helper_thread: pop_from_queue \n");
|
||||||
|
if(msg.mode != current_mode){
|
||||||
|
current_mode = msg.mode;
|
||||||
|
sleep_helper_run_mode(msg.mode);
|
||||||
|
}
|
||||||
|
//if(msg.level != current_level){
|
||||||
|
// current_level = msg.level;
|
||||||
|
// sleep_helper_set_level(msg.level);
|
||||||
|
//}
|
||||||
|
}
|
||||||
|
//LOGE("doing...\n");
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -98,17 +255,20 @@ void sleep_helper_init(){
|
|||||||
bk_gpio_enable_output(45);
|
bk_gpio_enable_output(45);
|
||||||
|
|
||||||
pwm_init_config_t config = {0};
|
pwm_init_config_t config = {0};
|
||||||
config.period_cycle = 200;
|
config.period_cycle = 100;
|
||||||
config.duty_cycle = 100;
|
//默认初始化不输出波形
|
||||||
|
config.duty_cycle = 0;
|
||||||
|
//config.duty_cycle = g_mode_level[SLEEP_MODEL_LEVEL_1-1];
|
||||||
bk_pwm_init(pwm_chan, &config);
|
bk_pwm_init(pwm_chan, &config);
|
||||||
bk_pwm_start(pwm_chan);
|
bk_pwm_start(pwm_chan);
|
||||||
}
|
|
||||||
|
|
||||||
void sleep_helper_set_mode(sleep_mode mode){
|
|
||||||
//model 1
|
|
||||||
helper_start = 1;
|
helper_start = 1;
|
||||||
|
|
||||||
bk_err_t ret = BK_OK;
|
bk_err_t ret = BK_OK;
|
||||||
|
ret = rtos_init_queue(&sleep_helper_msg_que, "sleep_helper_msg_que", sizeof(sleep_msg_t), 2);
|
||||||
|
if (ret != kNoErr)
|
||||||
|
{
|
||||||
|
LOGE("create take_photo_msg queue fail\n");
|
||||||
|
}
|
||||||
ret = rtos_create_thread(&sleep_helper_thread_hdl,
|
ret = rtos_create_thread(&sleep_helper_thread_hdl,
|
||||||
9,
|
9,
|
||||||
"sleep_helper",
|
"sleep_helper",
|
||||||
@ -120,9 +280,129 @@ void sleep_helper_set_mode(sleep_mode mode){
|
|||||||
sleep_helper_thread_hdl = NULL;
|
sleep_helper_thread_hdl = NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void sleep_helper_set_level(sleep_model_level level){
|
|
||||||
|
void sleep_helper_set_mode(sleep_mode mode){
|
||||||
|
current_mode = mode;
|
||||||
|
if (mode == SLEEP_MODE_OFF)
|
||||||
|
{
|
||||||
|
|
||||||
|
// 关闭睡眠仪
|
||||||
|
// 关闭PWM
|
||||||
|
bk_pwm_stop(pwm_chan);
|
||||||
|
// 关闭电源输出
|
||||||
|
bk_gpio_set_output_low(GPIO_44);
|
||||||
|
bk_gpio_set_output_low(GPIO_45);
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
if (sleep_helper_msg_que)
|
||||||
|
{
|
||||||
|
sleep_msg_t msg;
|
||||||
|
msg.mode = mode;
|
||||||
|
rtos_push_to_queue(&sleep_helper_msg_que, &msg, BEKEN_NO_WAIT);
|
||||||
|
}*/
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void sleep_helper_set_level(sleep_model_level level){
|
||||||
|
|
||||||
|
if(level>0 && level< 10){
|
||||||
|
current_level = level;
|
||||||
|
pwm_period_duty_config_t config = {0};
|
||||||
|
config.period_cycle = 100;
|
||||||
|
config.duty_cycle = g_mode_level[level-1];
|
||||||
|
LOGE("sleep_helper_set_level %d \n",g_mode_level[level-1]);
|
||||||
|
bk_pwm_set_period_duty(pwm_chan,&config);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
cJSON* iot_sleep_helper_get_device_desc()
|
||||||
|
{
|
||||||
|
cJSON *sleep_helper_desc = cJSON_CreateObject();
|
||||||
|
cJSON_AddStringToObject(sleep_helper_desc, "name", IOT_SLEEP_HELPER_DEVICE_NAME);
|
||||||
|
cJSON_AddStringToObject(sleep_helper_desc, "description", "这是助眠仪(睡眠辅助仪器)");
|
||||||
|
|
||||||
|
cJSON *properties = cJSON_CreateObject();
|
||||||
|
//volume 属性
|
||||||
|
cJSON *mode = cJSON_CreateObject();
|
||||||
|
cJSON_AddStringToObject(mode, "description", "当前设备的模式");
|
||||||
|
cJSON_AddStringToObject(mode, "type", "number");
|
||||||
|
//添加brightness属性到properties
|
||||||
|
cJSON_AddItemToObjectCS(properties,"mode",mode);
|
||||||
|
//添加properties speaker_desc 描述
|
||||||
|
cJSON_AddItemToObjectCS(sleep_helper_desc,"properties",properties);
|
||||||
|
|
||||||
|
|
||||||
|
//定义方法methods
|
||||||
|
cJSON *methods = cJSON_CreateObject();
|
||||||
|
//设置模式的方法
|
||||||
|
cJSON *setMode = cJSON_CreateObject();
|
||||||
|
cJSON_AddStringToObject(setMode, "description", "设置助眠仪的工作模式");
|
||||||
|
cJSON *parameters = cJSON_CreateObject();
|
||||||
|
cJSON *p_mode = cJSON_CreateObject();
|
||||||
|
cJSON_AddStringToObject(p_mode, "type", "number");
|
||||||
|
cJSON_AddStringToObject(p_mode, "description", "0到3之间的整数 0代表关闭");
|
||||||
|
cJSON_AddItemToObjectCS(parameters,"mode",p_mode);
|
||||||
|
cJSON_AddItemToObjectCS(setMode,"parameters",parameters);
|
||||||
|
cJSON_AddItemToObjectCS(methods,IOT_SLEEP_HELPER_DEVICE_FUNS_SET_MODE,setMode);
|
||||||
|
|
||||||
|
|
||||||
|
//设置工作等级的方法
|
||||||
|
cJSON *setLevel = cJSON_CreateObject();
|
||||||
|
cJSON_AddStringToObject(setLevel, "description", "设置助眠仪的工作等级强度");
|
||||||
|
cJSON *parameters_set_level = cJSON_CreateObject();
|
||||||
|
cJSON *p_level = cJSON_CreateObject();
|
||||||
|
cJSON_AddStringToObject(p_level, "type", "number");
|
||||||
|
cJSON_AddStringToObject(p_level, "description", "1到9之间的整数");
|
||||||
|
cJSON_AddItemToObjectCS(parameters_set_level,"level",p_level);
|
||||||
|
cJSON_AddItemToObjectCS(setLevel,"parameters",parameters_set_level);
|
||||||
|
cJSON_AddItemToObjectCS(methods,IOT_SLEEP_HELPER_DEVICE_FUNS_SET_LEVEL,setLevel);
|
||||||
|
|
||||||
|
|
||||||
|
cJSON_AddItemToObjectCS(sleep_helper_desc,"methods",methods);
|
||||||
|
|
||||||
|
//打印一下描述
|
||||||
|
//char *json_desc = cJSON_Print(speaker_desc);
|
||||||
|
//LOGE("speaker_desc-->%s\n",json_desc);
|
||||||
|
//cJSON_Delete(speaker_desc);
|
||||||
|
return sleep_helper_desc;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void iot_sleep_helper_parser_invoke(char* cmd,char * paramters_json){
|
||||||
|
|
||||||
|
LOGE("iot_sleep_helper_parser_invoke :%s\n",paramters_json);
|
||||||
|
cJSON* params = cJSON_Parse(paramters_json);
|
||||||
|
if(params == NULL){
|
||||||
|
LOGE("params == NULL\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
//设置模式
|
||||||
|
if (strcmp(cmd, IOT_SLEEP_HELPER_DEVICE_FUNS_SET_MODE) == 0)
|
||||||
|
{
|
||||||
|
// {"mode": 60}
|
||||||
|
int mode = cJSON_GetObjectItem(params, "mode")->valueint;
|
||||||
|
LOGE("mode :%d\n",mode);
|
||||||
|
sleep_helper_set_mode(mode);
|
||||||
|
}
|
||||||
|
if (strcmp(cmd, IOT_SLEEP_HELPER_DEVICE_FUNS_SET_LEVEL) == 0)
|
||||||
|
{
|
||||||
|
|
||||||
|
// {"level": 60}
|
||||||
|
int level = cJSON_GetObjectItem(params, "level")->valueint;
|
||||||
|
LOGE("level :%d\n",level);
|
||||||
|
sleep_helper_set_level(level);
|
||||||
|
|
||||||
|
}
|
||||||
|
cJSON_Delete(params);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void sleep_helper_deinit(){
|
void sleep_helper_deinit(){
|
||||||
|
|
||||||
|
helper_start = 0;
|
||||||
|
bk_pwm_stop(pwm_chan);
|
||||||
|
bk_pwm_deinit(pwm_chan);
|
||||||
|
|
||||||
|
/* delete msg queue */
|
||||||
|
rtos_deinit_queue(&sleep_helper_msg_que);
|
||||||
|
sleep_helper_msg_que = NULL;
|
||||||
}
|
}
|
@ -13,14 +13,19 @@ extern "C" {
|
|||||||
|
|
||||||
#include "cJSON.h"
|
#include "cJSON.h"
|
||||||
|
|
||||||
|
#define IOT_SLEEP_HELPER_DEVICE_NAME "sleep_helper"
|
||||||
|
#define IOT_SLEEP_HELPER_DEVICE_FUNS_SET_MODE "setMode"
|
||||||
|
#define IOT_SLEEP_HELPER_DEVICE_FUNS_SET_LEVEL "setLevel"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 3种模式
|
* 3种模式
|
||||||
*/
|
*/
|
||||||
typedef enum sleep_mode
|
typedef enum sleep_mode
|
||||||
{
|
{
|
||||||
SLEEP_MODE_1 = 1,
|
SLEEP_MODE_OFF = 0,
|
||||||
SLEEP_MODE_2,
|
SLEEP_MODE_1 = 1,
|
||||||
SLEEP_MODE_3,
|
SLEEP_MODE_2 = 2,
|
||||||
|
SLEEP_MODE_3 = 3,
|
||||||
} sleep_mode;
|
} sleep_mode;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -31,6 +36,12 @@ typedef enum sleep_level
|
|||||||
SLEEP_MODEL_LEVEL_1 = 1,
|
SLEEP_MODEL_LEVEL_1 = 1,
|
||||||
SLEEP_MODEL_LEVEL_2,
|
SLEEP_MODEL_LEVEL_2,
|
||||||
SLEEP_MODEL_LEVEL_3,
|
SLEEP_MODEL_LEVEL_3,
|
||||||
|
SLEEP_MODEL_LEVEL_4,
|
||||||
|
SLEEP_MODEL_LEVEL_5,
|
||||||
|
SLEEP_MODEL_LEVEL_6,
|
||||||
|
SLEEP_MODEL_LEVEL_7,
|
||||||
|
SLEEP_MODEL_LEVEL_8,
|
||||||
|
SLEEP_MODEL_LEVEL_9,
|
||||||
} sleep_model_level;
|
} sleep_model_level;
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
@ -52,7 +63,7 @@ void sleep_helper_set_level(sleep_model_level level);
|
|||||||
void sleep_helper_deinit();
|
void sleep_helper_deinit();
|
||||||
|
|
||||||
cJSON * iot_sleep_helper_get_device_desc();
|
cJSON * iot_sleep_helper_get_device_desc();
|
||||||
void iot_lamp_parser_invoke(char* cmd,char * paramters_json);
|
void iot_sleep_helper_parser_invoke(char* cmd,char * paramters_json);
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -34,7 +34,7 @@ void thing_init()
|
|||||||
|
|
||||||
#ifdef IOT_SLEEP_HELPER
|
#ifdef IOT_SLEEP_HELPER
|
||||||
sleep_helper_init();
|
sleep_helper_init();
|
||||||
sleep_helper_set_mode(SLEEP_MODE_1);
|
//sleep_helper_set_mode(SLEEP_MODE_1);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -55,12 +55,18 @@ cJSON* thing_gen_iot_descriptors(char *session_id)
|
|||||||
cJSON_AddItemToArray(descriptorArray, lamp_desc);
|
cJSON_AddItemToArray(descriptorArray, lamp_desc);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef IOT_SPEAKER
|
#ifdef IOT_SPEAKER
|
||||||
cJSON* speaker_desc = iot_speaker_get_device_desc();
|
cJSON* speaker_desc = iot_speaker_get_device_desc();
|
||||||
//cJSON_AddItemToArray(descriptorArray, cJSON_Duplicate(descriptor, 1));
|
//cJSON_AddItemToArray(descriptorArray, cJSON_Duplicate(descriptor, 1));
|
||||||
cJSON_AddItemToArray(descriptorArray, speaker_desc);
|
cJSON_AddItemToArray(descriptorArray, speaker_desc);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef IOT_SLEEP_HELPER
|
||||||
|
cJSON* sleep_helper_desc = iot_sleep_helper_get_device_desc();
|
||||||
|
cJSON_AddItemToArray(descriptorArray, sleep_helper_desc);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
cJSON_AddItemToObject(messageRoot, "descriptors", descriptorArray);
|
cJSON_AddItemToObject(messageRoot, "descriptors", descriptorArray);
|
||||||
return messageRoot;
|
return messageRoot;
|
||||||
}
|
}
|
||||||
@ -112,6 +118,12 @@ void thing_iot_invoke(char *iot_json){
|
|||||||
{
|
{
|
||||||
iot_speaker_parser_invoke(method,str_parameters);
|
iot_speaker_parser_invoke(method,str_parameters);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//睡眠仪指令
|
||||||
|
if (strcmp(name, IOT_SLEEP_HELPER_DEVICE_NAME) == 0)
|
||||||
|
{
|
||||||
|
iot_sleep_helper_parser_invoke(method,str_parameters);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// 释放内存
|
// 释放内存
|
||||||
cJSON_Delete(iot_invoke);
|
cJSON_Delete(iot_invoke);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user