mirror of
https://gitee.com/Vancouver2017/luban-lite-t3e-pro.git
synced 2025-12-15 10:58:54 +00:00
1204 lines
36 KiB
C
1204 lines
36 KiB
C
/**
|
||
* @file zigbee_fun.c
|
||
* @brief this file contains basic fuctions and DP data report fucntion which is base on DP type
|
||
* @author
|
||
* @date 2020.03.13
|
||
* @par email:
|
||
* @copyright HANGZHOU TUYA INFORMATION TECHNOLOGY CO.,LTD
|
||
* @par company
|
||
* http://www.tuya.com
|
||
*/
|
||
|
||
#include <stdbool.h>
|
||
#include <stdio.h>
|
||
#include <stdlib.h>
|
||
#include <string.h>
|
||
|
||
#include "rtconfig.h"
|
||
|
||
#include "nvs_eepom.h"
|
||
#include "zigbee_fun.h"
|
||
#include "zigbee.h"
|
||
|
||
// #define TAG "zigbee_R"
|
||
// #define TAGT "zigbee_T"
|
||
// #define DBG_TAG "zigbee"
|
||
|
||
|
||
#define DBG_TAG "zigbee"
|
||
#define DBG_LVL DBG_INFO
|
||
#include <rtdbg.h>
|
||
|
||
//接收消息
|
||
rt_mq_t zig_rx_evt_queue = NULL; //定义一个队列返回变量
|
||
rt_thread_t zigbee_thread=NULL;
|
||
void zigbee_fun_task(void *pvParameter);
|
||
|
||
//struct serial_configure uart_config=RT_SERIAL_CONFIG_DEFAULT;
|
||
|
||
static rt_device_t serial;
|
||
|
||
int zigbee_uart_int(void)
|
||
{
|
||
//使能
|
||
long pin = 0;
|
||
unsigned int g;
|
||
unsigned int p;
|
||
|
||
pin = hal_gpio_name2pin("PD.2");
|
||
|
||
g = GPIO_GROUP(pin);
|
||
p = GPIO_GROUP_PIN(pin);
|
||
hal_gpio_direction_output(g, p);
|
||
|
||
hal_gpio_clr_output(g, p);
|
||
aic_mdelay(100);
|
||
hal_gpio_set_output(g, p);
|
||
|
||
#ifdef AIC_BOARD_MODEL3C
|
||
//串口初始化
|
||
char uart_name[]="uart1";
|
||
#else
|
||
//串口初始化
|
||
char uart_name[]="uart3";
|
||
#endif
|
||
|
||
LOG_I("Try to open(%s)",uart_name);
|
||
serial = rt_device_find(uart_name);
|
||
if (!serial)
|
||
{
|
||
LOG_I("find %s failed!\n", uart_name);
|
||
return -RT_ERROR;
|
||
}
|
||
|
||
rt_err_t ret = rt_device_open(serial, RT_DEVICE_OFLAG_RDWR | RT_DEVICE_FLAG_INT_RX);
|
||
// ASSERT(ret != RT_EOK, "open %s failed : %d !\n", uart_name, ret);
|
||
if (ret != RT_EOK)
|
||
{
|
||
LOG_I("open %s failed : %d !\n", uart_name, ret);
|
||
return -RT_ERROR;
|
||
}
|
||
//uart_config.
|
||
//配置串口
|
||
//rt_device_control(serial,RT_DEVICE_CTRL_CONFIG,(void*)&uart_config);
|
||
|
||
|
||
//创建动态消息队列 返回消息队列对象的句柄
|
||
zig_rx_evt_queue= rt_mq_create("zigbee_mq", //消息队列的名称
|
||
sizeof(ZIGEvent), //消息队列中一条消息的最大长度,单位字节
|
||
10, //消息队列的最大个数
|
||
RT_IPC_FLAG_PRIO ); //消息队列采用的阻塞线程的等待方式,它可以取如下数值:RT_IPC_FLAG_FIFO //按照先进先出排序或RT_IPC_FLAG_PRIO //按照优先级排序
|
||
if(!zig_rx_evt_queue)
|
||
{
|
||
LOG_E("RT-Thread zig_rx_evt_queue create mq fail");
|
||
}
|
||
|
||
//创建任务
|
||
zigbee_thread = rt_thread_create("zigbee_fun", //名称
|
||
zigbee_fun_task, //线程代码
|
||
RT_NULL, //参数
|
||
10240, //栈大小
|
||
13, //优先级
|
||
100); //时间片
|
||
if (zigbee_thread != RT_NULL)
|
||
{
|
||
rt_thread_startup(zigbee_thread); //线程进入就绪态
|
||
}
|
||
else
|
||
{
|
||
LOG_I("dynamic_thread create failure\n");
|
||
}
|
||
|
||
return RT_EOK;
|
||
}
|
||
void esp_log_buffer_hex(const char *tag, const void *buffer, uint16_t buff_len)
|
||
{
|
||
if (buff_len == 0) {
|
||
return;
|
||
}
|
||
char *ptr_line=(char *)buffer;
|
||
|
||
printf("\n");
|
||
printf("%s:",tag);
|
||
for(int i=0;i<buff_len;i++)
|
||
{
|
||
printf("%02x ",ptr_line[i]);
|
||
if(i&&((i%15)==0))
|
||
{
|
||
printf("\r");
|
||
}
|
||
}
|
||
printf("\n");
|
||
}
|
||
//串口发送
|
||
void zigbee_uart_sendByte(unsigned char value)
|
||
{
|
||
|
||
rt_device_write(serial, 0, &value, 1);
|
||
}
|
||
|
||
void zigbee_uart_sendBytes(unsigned char *in, unsigned short len)
|
||
{
|
||
//LOG_I("zigbee_uart_sendBytes\n");
|
||
esp_log_buffer_hex(LOG_TAG,(const char *)in,len);//一行 32byte内容
|
||
rt_device_write(serial, 0, in, len);
|
||
}
|
||
|
||
|
||
|
||
#define ZIG_RX_BUF_SIZE (512)
|
||
#define ZIG_TX_BUF_SIZE (512)
|
||
|
||
void zigbee_fun_task(void *pvParameter)
|
||
{
|
||
// char ch;
|
||
|
||
ZIGEvent evt;
|
||
evt.event=ZIG_STATE_IDLE;
|
||
evt.length=0;
|
||
evt.buffStr=NULL;
|
||
|
||
zigbee_protocol_init(); // #error "please call this fuction in main init"
|
||
rt_thread_mdelay(1000);
|
||
mcu_reset_zigbee();//系统重启后也让模组重启一次 会主动下发网络状态
|
||
// mcu_get_zigbee_state();//获取状态 如果入网更新时间
|
||
//rt_thread_mdelay(1000);
|
||
|
||
// Configure a temporary buffer for the incoming data
|
||
uint8_t *rxdata = (uint8_t *) malloc(ZIG_RX_BUF_SIZE);
|
||
|
||
LOG_I("zigbee_fun_task running");
|
||
|
||
// for(;;)
|
||
// {
|
||
// rt_thread_mdelay(1000);
|
||
// }
|
||
|
||
|
||
for(;;)
|
||
{
|
||
// // rt_thread_mdelay(1000);
|
||
// // LOG_I("zigbee_fun_task");
|
||
// // zigbee_uart_service();
|
||
//
|
||
// // const int rxBytes = uart_read_bytes(ZIG_UART_NUM, rxdata, ZIG_RX_BUF_SIZE,50 / portTICK_RATE_MS);
|
||
// // if (rxBytes > 0)
|
||
// // {
|
||
// // rxdata[rxBytes] = 0;//在串口接收的数据增加结束符
|
||
// //
|
||
// // esp_log_buffer_hex(TAG,rxdata,rxBytes);
|
||
// // //将接收到的数据发出去
|
||
// // //LOG_I( "rx:%s", (char *)rxdata);
|
||
// // }
|
||
if(evt.buffStr)//接收到的是指针 用完释放内存
|
||
{
|
||
LOG_I("free receData.buffStr:%x",(uint32_t)evt.buffStr);
|
||
free(evt.buffStr);
|
||
evt.buffStr=NULL;
|
||
}
|
||
|
||
//rt_thread_mdelay(10);
|
||
if(rt_mq_recv(zig_rx_evt_queue,&evt,sizeof(ZIGEvent),100)==RT_EOK)
|
||
{//上报
|
||
switch(evt.event)
|
||
{
|
||
#ifdef SUPPORT_MCU_OTA
|
||
case ZIG_STATE_Update_Start:
|
||
case ZIG_STATE_Update_RUNING:
|
||
{
|
||
mcu_ota_fw_request();
|
||
}
|
||
break;
|
||
#endif
|
||
case ZIG_STATE_RTC_CURRENT:
|
||
{
|
||
|
||
}
|
||
break;
|
||
case ZIG_STATE_RTC_UPDATE://间隔1个小时获取一次时间 用于校准
|
||
{
|
||
mcu_get_zigbee_state();//主动查询网络状态,入网状态的话查询时间(不入网,则不查询时间)
|
||
}
|
||
break;
|
||
case ZIG_STATE_RTC_RUNING:
|
||
{
|
||
|
||
}
|
||
break;
|
||
case ZIG_STATE_CONFIG_START://开始配网
|
||
{
|
||
mcu_network_start();
|
||
}
|
||
break;
|
||
case ZIG_STATE_CONFIG_CHECK://主动查询入网状态
|
||
{
|
||
mcu_get_zigbee_state();
|
||
}
|
||
break;
|
||
case ZIG_STATE_CONFIG_JOINING://入网中
|
||
{
|
||
}
|
||
break;
|
||
case ZIG_STATE_CONFIG_GATEWAY://已入网
|
||
{
|
||
//开关状态同步上报
|
||
mcu_dp_bool_update(DPID_SWITCH_1,GET_nvs_Sys_Info_relay1());
|
||
mcu_dp_bool_update(DPID_SWITCH_2,GET_nvs_Sys_Info_relay2());
|
||
mcu_dp_bool_update(DPID_SWITCH_3,GET_nvs_Sys_Info_relay3());
|
||
mcu_dp_bool_update(DPID_SWITCH_4,GET_nvs_Sys_Info_relay4());
|
||
rt_thread_mdelay(200);
|
||
//灯组1的
|
||
//开关状态
|
||
mcu_dp_bool_update(DPID_GROUP_SWITCH_LED_1,nvs_SysInfo.downlights[0].status);
|
||
//色温
|
||
mcu_dp_value_update(DPID_GROUP_TEMP_VALUE1,nvs_SysInfo.downlights[0].colortemperature);
|
||
//亮度
|
||
mcu_dp_value_update(DPID_GROUP_BRIGHT_VALUE1,nvs_SysInfo.downlights[0].brightness);
|
||
rt_thread_mdelay(200);
|
||
//灯组2的
|
||
mcu_dp_bool_update(DPID_GROUP_SWITCH_LED_2,nvs_SysInfo.downlights[1].status);
|
||
mcu_dp_value_update(DPID_GROUP_TEMP_VALUE2,nvs_SysInfo.downlights[1].colortemperature);
|
||
mcu_dp_value_update(DPID_GROUP_BRIGHT_VALUE2,nvs_SysInfo.downlights[1].brightness);
|
||
rt_thread_mdelay(200);
|
||
//灯组3的
|
||
mcu_dp_bool_update(DPID_GROUP_SWITCH_LED_3,nvs_SysInfo.downlights[2].status);
|
||
mcu_dp_value_update(DPID_GROUP_TEMP_VALUE3,nvs_SysInfo.downlights[2].colortemperature);
|
||
mcu_dp_value_update(DPID_GROUP_BRIGHT_VALUE3,nvs_SysInfo.downlights[2].brightness);
|
||
rt_thread_mdelay(200);
|
||
//灯组4的
|
||
mcu_dp_bool_update(DPID_GROUP_SWITCH_LED_4,nvs_SysInfo.downlights[3].status);
|
||
mcu_dp_value_update(DPID_GROUP_TEMP_VALUE4,nvs_SysInfo.downlights[3].colortemperature);
|
||
mcu_dp_value_update(DPID_GROUP_BRIGHT_VALUE4,nvs_SysInfo.downlights[3].brightness);
|
||
rt_thread_mdelay(200);
|
||
//窗帘组1的开关状态
|
||
mcu_dp_enum_update(DPID_GROUP_CURTIAN_STATUS_1,nvs_SysInfo.curtains[0].status);
|
||
if(nvs_SysInfo.curtains[0].status==2)//关
|
||
{
|
||
mcu_dp_value_update(DPID_GROUP_CURTIAN_VALUE_1,0);
|
||
}
|
||
else if(evt.length==0)//开
|
||
{
|
||
mcu_dp_value_update(DPID_GROUP_CURTIAN_VALUE_1,100);
|
||
}
|
||
rt_thread_mdelay(200);
|
||
//窗帘组2的开关状态
|
||
mcu_dp_enum_update(DPID_GROUP_CURTIAN_STATUS_2,nvs_SysInfo.curtains[1].status);
|
||
if(nvs_SysInfo.curtains[1].status==2)//关
|
||
{
|
||
mcu_dp_value_update(DPID_GROUP_CURTIAN_VALUE_2,0);
|
||
}
|
||
else if(evt.length==0)//开
|
||
{
|
||
mcu_dp_value_update(DPID_GROUP_CURTIAN_VALUE_2,100);
|
||
}
|
||
rt_thread_mdelay(200);
|
||
//窗帘组3的开关状态
|
||
mcu_dp_enum_update(DPID_GROUP_CURTIAN_STATUS_3,nvs_SysInfo.curtains[2].status);
|
||
if(nvs_SysInfo.curtains[2].status==2)//关
|
||
{
|
||
mcu_dp_value_update(DPID_GROUP_CURTIAN_VALUE_3,0);
|
||
}
|
||
else if(evt.length==0)//开
|
||
{
|
||
mcu_dp_value_update(DPID_GROUP_CURTIAN_VALUE_3,100);
|
||
}
|
||
rt_thread_mdelay(200);
|
||
//窗帘组4的开关状态
|
||
mcu_dp_enum_update(DPID_GROUP_CURTIAN_STATUS_4,nvs_SysInfo.curtains[3].status);
|
||
if(nvs_SysInfo.curtains[3].status==2)//关
|
||
{
|
||
mcu_dp_value_update(DPID_GROUP_CURTIAN_VALUE_4,0);
|
||
}
|
||
else if(evt.length==0)//开
|
||
{
|
||
mcu_dp_value_update(DPID_GROUP_CURTIAN_VALUE_4,100);
|
||
}
|
||
rt_thread_mdelay(200);
|
||
|
||
|
||
//空调的状态上报
|
||
mcu_dp_enum_update(DPID_SCENE_AIR_SWITCH,!nvs_SysInfo.airconditioner.onoff);
|
||
mcu_dp_enum_update(DPID_SCENE_AIR_MODE,nvs_SysInfo.airconditioner.mode);
|
||
mcu_dp_enum_update(DPID_SCENE_AIR_MODE,nvs_SysInfo.airconditioner.mode);
|
||
mcu_dp_enum_update(DPID_SCENE_AIR_MODE,nvs_SysInfo.airconditioner.mode);
|
||
rt_thread_mdelay(200);
|
||
mcu_dp_enum_update(DPID_SCENE_AIR_SPEED,nvs_SysInfo.airconditioner.speed);
|
||
mcu_dp_enum_update(DPID_SCENE_AIR_FAN,nvs_SysInfo.airconditioner.direct);
|
||
mcu_dp_enum_update(DPID_SCENE_AIR_TEMP,nvs_SysInfo.airconditioner.temp);
|
||
rt_thread_mdelay(200);
|
||
//投影仪的状态上报
|
||
mcu_dp_enum_update(DPID_SCENE_PROJECTOR_SWITCH,!nvs_SysInfo.projector.onoff);
|
||
mcu_dp_enum_update(DPID_SCENE_PROJECTOR_VOLUME,nvs_SysInfo.projector.volume);
|
||
rt_thread_mdelay(200);
|
||
|
||
|
||
}
|
||
break;
|
||
case ZIG_STATE_CONFIG_ERROR://入网错误
|
||
{
|
||
}
|
||
break;
|
||
//------------------------------
|
||
case ZIG_STATE_Scene_switch_set://复合开关的选择 当场景还是开关
|
||
{
|
||
// if(GET_nvs_Sys_Info_currentrelay()==RELAY_1gang)
|
||
// {
|
||
// mcu_dp_enum_update(DPID_MODE_1,0); //枚举型数据上报;
|
||
// mcu_dp_enum_update(DPID_MODE_2,1); //枚举型数据上报;
|
||
// mcu_dp_enum_update(DPID_MODE_3,1); //枚举型数据上报;
|
||
// mcu_dp_enum_update(DPID_MODE_4,1); //枚举型数据上报;
|
||
// }
|
||
// else if(GET_nvs_Sys_Info_currentrelay()==RELAY_2gang)
|
||
// {
|
||
// mcu_dp_enum_update(DPID_MODE_1,0); //枚举型数据上报;
|
||
// mcu_dp_enum_update(DPID_MODE_2,0); //枚举型数据上报;
|
||
// mcu_dp_enum_update(DPID_MODE_3,1); //枚举型数据上报;
|
||
// mcu_dp_enum_update(DPID_MODE_4,1); //枚举型数据上报;
|
||
// }
|
||
// else if(GET_nvs_Sys_Info_currentrelay()==RELAY_3gang)
|
||
// {
|
||
// mcu_dp_enum_update(DPID_MODE_1,0); //枚举型数据上报;
|
||
// mcu_dp_enum_update(DPID_MODE_2,0); //枚举型数据上报;
|
||
// mcu_dp_enum_update(DPID_MODE_3,0); //枚举型数据上报;
|
||
// mcu_dp_enum_update(DPID_MODE_4,1); //枚举型数据上报;
|
||
// }
|
||
// else //if(GET_nvs_Sys_Info_currentrelay()==RELAY_4gang)
|
||
// {
|
||
// mcu_dp_enum_update(DPID_MODE_1,0); //枚举型数据上报;
|
||
// mcu_dp_enum_update(DPID_MODE_2,0); //枚举型数据上报;
|
||
// mcu_dp_enum_update(DPID_MODE_3,0); //枚举型数据上报;
|
||
// mcu_dp_enum_update(DPID_MODE_4,0); //枚举型数据上报;
|
||
// }
|
||
}
|
||
break;
|
||
//------------------------------开关
|
||
case ZIG_STATE_1on:
|
||
{
|
||
mcu_dp_bool_update(DPID_SWITCH_1,1);
|
||
}
|
||
break;
|
||
case ZIG_STATE_1off:
|
||
{
|
||
mcu_dp_bool_update(DPID_SWITCH_1,0);
|
||
}
|
||
break;
|
||
//-----------
|
||
case ZIG_STATE_2on:
|
||
{
|
||
mcu_dp_bool_update(DPID_SWITCH_2,1);
|
||
}
|
||
break;
|
||
case ZIG_STATE_2off:
|
||
{
|
||
mcu_dp_bool_update(DPID_SWITCH_2,0);
|
||
}
|
||
break;
|
||
//-----------
|
||
case ZIG_STATE_3on:
|
||
{
|
||
mcu_dp_bool_update(DPID_SWITCH_3,1);
|
||
}
|
||
break;
|
||
case ZIG_STATE_3off:
|
||
{
|
||
mcu_dp_bool_update(DPID_SWITCH_3,0);
|
||
}
|
||
break;
|
||
//-----------
|
||
case ZIG_STATE_4on:
|
||
{
|
||
mcu_dp_bool_update(DPID_SWITCH_4,1);
|
||
}
|
||
break;
|
||
case ZIG_STATE_4off:
|
||
{
|
||
mcu_dp_bool_update(DPID_SWITCH_4,0);
|
||
}
|
||
break;
|
||
//------------------------------场景-->首屏场景
|
||
case ZIG_STATE_SCENE_1:
|
||
{
|
||
mcu_dp_enum_update(DPID_SCENE_1,0);
|
||
}
|
||
break;
|
||
case ZIG_STATE_SCENE_2:
|
||
{
|
||
mcu_dp_enum_update(DPID_SCENE_2,0);
|
||
}
|
||
break;
|
||
case ZIG_STATE_SCENE_3:
|
||
{
|
||
mcu_dp_enum_update(DPID_SCENE_3,0);
|
||
}
|
||
break;
|
||
case ZIG_STATE_SCENE_4:
|
||
{
|
||
mcu_dp_enum_update(DPID_SCENE_4,0);
|
||
}
|
||
break;
|
||
case ZIG_STATE_SCENE_5:
|
||
{
|
||
LOG_I("SCENE_5");
|
||
mcu_dp_enum_update(DPID_SCENE_5,0);
|
||
}
|
||
break;
|
||
case ZIG_STATE_SCENE_6:
|
||
{
|
||
LOG_I("SCENE_6");
|
||
mcu_dp_enum_update(DPID_SCENE_6,0);
|
||
}
|
||
break;
|
||
case ZIG_STATE_SCENE_7:
|
||
{
|
||
LOG_I("SCENE_7");
|
||
mcu_dp_enum_update(DPID_SCENE_7,0);
|
||
}
|
||
break;
|
||
case ZIG_STATE_SCENE_8:
|
||
{
|
||
LOG_I("SCENE_8");
|
||
mcu_dp_enum_update(DPID_SCENE_8,0);
|
||
}
|
||
break;
|
||
//------------------------------场景-->场景开关
|
||
//------------------------------场景-->空调
|
||
//------------------------------场景-->投影仪
|
||
//------------------------------调光-->灯群1
|
||
case ZIG_STATE_light1_switch_led://开关
|
||
{
|
||
mcu_dp_bool_update(DPID_GROUP_SWITCH_LED_1,evt.length);
|
||
//群组控制
|
||
if(nvs_SysInfo.downlights[0].GroupID)
|
||
{
|
||
mcu_send_cmd_group_bool_update(nvs_SysInfo.downlights[0].GroupID,0x0006,evt.length);
|
||
}
|
||
}
|
||
break;
|
||
case ZIG_STATE_light1_temp: //色温
|
||
{
|
||
mcu_dp_value_update(DPID_GROUP_TEMP_VALUE1,evt.length);
|
||
|
||
//群组控制
|
||
if(nvs_SysInfo.downlights[0].GroupID)
|
||
{
|
||
unsigned char movetolevel[5];
|
||
//cmd move to color temperature
|
||
//color temperature mireds
|
||
unsigned short temperature=(unsigned short)(evt.length*12.03);//0~100--->0~1023
|
||
temperature=1023-temperature;
|
||
movetolevel[0]=temperature/256;
|
||
movetolevel[1]=temperature%256;
|
||
//transition time
|
||
movetolevel[2]=0;
|
||
movetolevel[3]=5;//过渡时间(渐变时间)
|
||
mcu_send_cmd_group_raw_update(nvs_SysInfo.downlights[0].GroupID,0x0300,0x0A,(const unsigned char *)movetolevel,4);
|
||
}
|
||
}
|
||
break;
|
||
case ZIG_STATE_light1_bright: //亮度
|
||
{
|
||
mcu_dp_value_update(DPID_GROUP_BRIGHT_VALUE1,evt.length);
|
||
|
||
//群组控制
|
||
if(nvs_SysInfo.downlights[0].GroupID)
|
||
{
|
||
unsigned char movetolevel[3];
|
||
movetolevel[0]=(unsigned char)(evt.length*2.55);
|
||
movetolevel[1]=0;
|
||
movetolevel[2]=5;//过渡时间(渐变时间)
|
||
mcu_send_cmd_group_raw_update(nvs_SysInfo.downlights[0].GroupID,0x0008,0x04,(const unsigned char *)movetolevel,3);
|
||
}
|
||
}
|
||
break;
|
||
//------------------------------调光-->灯群2
|
||
case ZIG_STATE_light2_switch_led://开关
|
||
{
|
||
mcu_dp_bool_update(DPID_GROUP_SWITCH_LED_2,evt.length);
|
||
//群组控制
|
||
if(nvs_SysInfo.downlights[1].GroupID)
|
||
{
|
||
mcu_send_cmd_group_bool_update(nvs_SysInfo.downlights[1].GroupID,0x0006,evt.length);
|
||
}
|
||
}
|
||
break;
|
||
case ZIG_STATE_light2_temp: //色温
|
||
{
|
||
mcu_dp_value_update(DPID_GROUP_TEMP_VALUE2,evt.length);
|
||
|
||
//群组控制
|
||
if(nvs_SysInfo.downlights[1].GroupID)
|
||
{
|
||
unsigned char movetolevel[5];
|
||
//cmd move to color temperature
|
||
//color temperature mireds
|
||
unsigned short temperature=(unsigned short)(evt.length*12.03);//0~100--->0~1023
|
||
temperature=1023-temperature;
|
||
movetolevel[0]=temperature/256;
|
||
movetolevel[1]=temperature%256;
|
||
//transition time
|
||
movetolevel[2]=0;
|
||
movetolevel[3]=5;//过渡时间(渐变时间)
|
||
mcu_send_cmd_group_raw_update(nvs_SysInfo.downlights[1].GroupID,0x0300,0x0A,(const unsigned char *)movetolevel,4);
|
||
}
|
||
}
|
||
break;
|
||
case ZIG_STATE_light2_bright: //亮度
|
||
{
|
||
mcu_dp_value_update(DPID_GROUP_BRIGHT_VALUE2,evt.length);
|
||
|
||
//群组控制
|
||
if(nvs_SysInfo.downlights[1].GroupID)
|
||
{
|
||
unsigned char movetolevel[3];
|
||
movetolevel[0]=(unsigned char)(evt.length*2.55);
|
||
movetolevel[1]=0;
|
||
movetolevel[2]=5;//过渡时间(渐变时间)
|
||
mcu_send_cmd_group_raw_update(nvs_SysInfo.downlights[1].GroupID,0x0008,0x04,(const unsigned char *)movetolevel,3);
|
||
}
|
||
}
|
||
break;
|
||
//------------------------------调光-->灯群3
|
||
case ZIG_STATE_light3_switch_led://开关
|
||
{
|
||
mcu_dp_bool_update(DPID_GROUP_SWITCH_LED_3,evt.length);
|
||
//群组控制
|
||
if(nvs_SysInfo.downlights[2].GroupID)
|
||
{
|
||
mcu_send_cmd_group_bool_update(nvs_SysInfo.downlights[2].GroupID,0x0006,evt.length);
|
||
}
|
||
}
|
||
break;
|
||
case ZIG_STATE_light3_temp: //色温
|
||
{
|
||
mcu_dp_value_update(DPID_GROUP_TEMP_VALUE3,evt.length);
|
||
|
||
//群组控制
|
||
if(nvs_SysInfo.downlights[2].GroupID)
|
||
{
|
||
unsigned char movetolevel[5];
|
||
//cmd move to color temperature
|
||
//color temperature mireds
|
||
unsigned short temperature=(unsigned short)(evt.length*12.03);//0~100--->0~1023
|
||
temperature=1023-temperature;
|
||
movetolevel[0]=temperature/256;
|
||
movetolevel[1]=temperature%256;
|
||
//transition time
|
||
movetolevel[2]=0;
|
||
movetolevel[3]=5;//过渡时间(渐变时间)
|
||
mcu_send_cmd_group_raw_update(nvs_SysInfo.downlights[2].GroupID,0x0300,0x0A,(const unsigned char *)movetolevel,4);
|
||
}
|
||
}
|
||
break;
|
||
case ZIG_STATE_light3_bright: //亮度
|
||
{
|
||
mcu_dp_value_update(DPID_GROUP_BRIGHT_VALUE3,evt.length);
|
||
|
||
//群组控制
|
||
if(nvs_SysInfo.downlights[2].GroupID)
|
||
{
|
||
unsigned char movetolevel[3];
|
||
movetolevel[0]=(unsigned char)(evt.length*2.55);
|
||
movetolevel[1]=0;
|
||
movetolevel[2]=5;//过渡时间(渐变时间)
|
||
mcu_send_cmd_group_raw_update(nvs_SysInfo.downlights[2].GroupID,0x0008,0x04,(const unsigned char *)movetolevel,3);
|
||
}
|
||
}
|
||
break;
|
||
//------------------------------调光-->灯群4
|
||
case ZIG_STATE_light4_switch_led://开关
|
||
{
|
||
mcu_dp_bool_update(DPID_GROUP_SWITCH_LED_4,evt.length);
|
||
//群组控制
|
||
if(nvs_SysInfo.downlights[3].GroupID)
|
||
{
|
||
mcu_send_cmd_group_bool_update(nvs_SysInfo.downlights[3].GroupID,0x0006,evt.length);
|
||
}
|
||
}
|
||
break;
|
||
case ZIG_STATE_light4_temp: //色温
|
||
{
|
||
mcu_dp_value_update(DPID_GROUP_TEMP_VALUE4,evt.length);
|
||
|
||
//群组控制
|
||
if(nvs_SysInfo.downlights[3].GroupID)
|
||
{
|
||
unsigned char movetolevel[5];
|
||
//cmd move to color temperature
|
||
//color temperature mireds
|
||
unsigned short temperature=(unsigned short)(evt.length*12.03);//0~100--->0~1023
|
||
temperature=1023-temperature;
|
||
movetolevel[0]=temperature/256;
|
||
movetolevel[1]=temperature%256;
|
||
//transition time
|
||
movetolevel[2]=0;
|
||
movetolevel[3]=5;//过渡时间(渐变时间)
|
||
mcu_send_cmd_group_raw_update(nvs_SysInfo.downlights[3].GroupID,0x0300,0x0A,(const unsigned char *)movetolevel,4);
|
||
}
|
||
}
|
||
break;
|
||
case ZIG_STATE_light4_bright: //亮度
|
||
{
|
||
mcu_dp_value_update(DPID_GROUP_BRIGHT_VALUE4,evt.length);
|
||
|
||
//群组控制
|
||
if(nvs_SysInfo.downlights[3].GroupID)
|
||
{
|
||
unsigned char movetolevel[3];
|
||
movetolevel[0]=(unsigned char)(evt.length*2.55);
|
||
movetolevel[1]=0;
|
||
movetolevel[2]=5;//过渡时间(渐变时间)
|
||
mcu_send_cmd_group_raw_update(nvs_SysInfo.downlights[3].GroupID,0x0008,0x04,(const unsigned char *)movetolevel,3);
|
||
}
|
||
}
|
||
break;
|
||
//------------------------------窗帘-->窗帘群1
|
||
case ZIG_STATE_Curtain1_status://状态 开/关/停
|
||
{
|
||
mcu_dp_enum_update(DPID_GROUP_CURTIAN_STATUS_1,evt.length);
|
||
|
||
if(evt.length==2)//关
|
||
{
|
||
mcu_dp_value_update(DPID_GROUP_CURTIAN_VALUE_1,0);
|
||
}
|
||
else if(evt.length==0)//开
|
||
{
|
||
mcu_dp_value_update(DPID_GROUP_CURTIAN_VALUE_1,100);
|
||
}
|
||
|
||
//群组控制
|
||
if(nvs_SysInfo.curtains[0].GroupID)
|
||
{
|
||
mcu_send_cmd_group_enum_update(nvs_SysInfo.curtains[0].GroupID,0x01,evt.length);
|
||
rt_thread_mdelay(100);
|
||
mcu_send_cmd_group_enum_update(nvs_SysInfo.curtains[0].GroupID,0x01,evt.length);
|
||
rt_thread_mdelay(100);
|
||
mcu_send_cmd_group_enum_update(nvs_SysInfo.curtains[0].GroupID,0x01,evt.length);
|
||
}
|
||
}
|
||
break;
|
||
case ZIG_STATE_Curtain1_value: //百分比
|
||
{
|
||
//mcu_dp_value_update(DPID_GROUP_CURTIAN_VALUE_1,evt.length);
|
||
}
|
||
//------------------------------窗帘-->窗帘群2
|
||
case ZIG_STATE_Curtain2_status://状态 开/关/停
|
||
{
|
||
mcu_dp_enum_update(DPID_GROUP_CURTIAN_STATUS_2,evt.length);
|
||
if(evt.length==2)//关
|
||
{
|
||
mcu_dp_value_update(DPID_GROUP_CURTIAN_VALUE_2,0);
|
||
}
|
||
else if(evt.length==0)//开
|
||
{
|
||
mcu_dp_value_update(DPID_GROUP_CURTIAN_VALUE_2,100);
|
||
}
|
||
|
||
//群组控制
|
||
if(nvs_SysInfo.curtains[1].GroupID)
|
||
{
|
||
mcu_send_cmd_group_enum_update(nvs_SysInfo.curtains[1].GroupID,0x01,evt.length);
|
||
rt_thread_mdelay(100);
|
||
mcu_send_cmd_group_enum_update(nvs_SysInfo.curtains[1].GroupID,0x01,evt.length);
|
||
rt_thread_mdelay(100);
|
||
mcu_send_cmd_group_enum_update(nvs_SysInfo.curtains[1].GroupID,0x01,evt.length);
|
||
}
|
||
}
|
||
break;
|
||
case ZIG_STATE_Curtain2_value: //百分比
|
||
{
|
||
//mcu_dp_value_update(DPID_GROUP_CURTIAN_VALUE_2,evt.length);
|
||
}
|
||
break;
|
||
//------------------------------窗帘-->窗帘群3
|
||
case ZIG_STATE_Curtain3_status://状态 开/关/停
|
||
{
|
||
mcu_dp_enum_update(DPID_GROUP_CURTIAN_STATUS_3,evt.length);
|
||
if(evt.length==2)//关
|
||
{
|
||
mcu_dp_value_update(DPID_GROUP_CURTIAN_VALUE_3,0);
|
||
}
|
||
else if(evt.length==0)//开
|
||
{
|
||
mcu_dp_value_update(DPID_GROUP_CURTIAN_VALUE_3,100);
|
||
}
|
||
|
||
//群组控制
|
||
if(nvs_SysInfo.curtains[2].GroupID)
|
||
{
|
||
mcu_send_cmd_group_enum_update(nvs_SysInfo.curtains[2].GroupID,0x01,evt.length);
|
||
rt_thread_mdelay(100);
|
||
mcu_send_cmd_group_enum_update(nvs_SysInfo.curtains[2].GroupID,0x01,evt.length);
|
||
rt_thread_mdelay(100);
|
||
mcu_send_cmd_group_enum_update(nvs_SysInfo.curtains[2].GroupID,0x01,evt.length);
|
||
}
|
||
}
|
||
break;
|
||
case ZIG_STATE_Curtain3_value: //百分比
|
||
{
|
||
//mcu_dp_value_update(DPID_GROUP_CURTIAN_VALUE_3,evt.length);
|
||
}
|
||
break;
|
||
//------------------------------窗帘-->窗帘群4
|
||
case ZIG_STATE_Curtain4_status://状态 开/关/停
|
||
{
|
||
mcu_dp_enum_update(DPID_GROUP_CURTIAN_STATUS_4,evt.length);
|
||
if(evt.length==2)//关
|
||
{
|
||
mcu_dp_value_update(DPID_GROUP_CURTIAN_VALUE_4,0);
|
||
}
|
||
else if(evt.length==0)//开
|
||
{
|
||
mcu_dp_value_update(DPID_GROUP_CURTIAN_VALUE_4,100);
|
||
}
|
||
|
||
//群组控制
|
||
if(nvs_SysInfo.curtains[3].GroupID)
|
||
{
|
||
mcu_send_cmd_group_enum_update(nvs_SysInfo.curtains[3].GroupID,0x01,evt.length);
|
||
rt_thread_mdelay(100);
|
||
mcu_send_cmd_group_enum_update(nvs_SysInfo.curtains[3].GroupID,0x01,evt.length);
|
||
rt_thread_mdelay(100);
|
||
mcu_send_cmd_group_enum_update(nvs_SysInfo.curtains[3].GroupID,0x01,evt.length);
|
||
}
|
||
}
|
||
break;
|
||
case ZIG_STATE_Curtain4_value: //百分比
|
||
{
|
||
//mcu_dp_value_update(DPID_GROUP_CURTIAN_VALUE_4,evt.length);
|
||
}
|
||
break;
|
||
//空调
|
||
case ZIG_STATE_SCENE_AirconditionerON://空调开(可下发可上报)
|
||
{
|
||
LOG_I("ZIG_STATE_SCENE_AirconditionerON");
|
||
mcu_dp_enum_update(DPID_SCENE_AIR_SWITCH,0);
|
||
}
|
||
break;
|
||
case ZIG_STATE_SCENE_AirconditionerOFF://空调关(可下发可上报)
|
||
{
|
||
LOG_I("ZIG_STATE_SCENE_AirconditionerOFF");
|
||
mcu_dp_enum_update(DPID_SCENE_AIR_SWITCH,1);
|
||
}
|
||
break;
|
||
//设备界面的
|
||
case ZIG_STATE_SCENE_Airconditionercool://制冷(可下发可上报)
|
||
{
|
||
LOG_I("ZIG_STATE_SCENE_Airconditionercool");
|
||
mcu_dp_enum_update(DPID_SCENE_AIR_MODE,nvs_SysInfo.airconditioner.mode);
|
||
}
|
||
break;
|
||
case ZIG_STATE_SCENE_Airconditionerheat://制热(可下发可上报)
|
||
{
|
||
LOG_I("ZIG_STATE_SCENE_Airconditionercool");
|
||
mcu_dp_enum_update(DPID_SCENE_AIR_MODE,nvs_SysInfo.airconditioner.mode);
|
||
}
|
||
break;
|
||
case ZIG_STATE_SCENE_Airconditionermode://空调模式
|
||
{//AUTO, COOL, HEAT, DRY, FAN
|
||
LOG_I("ZIG_STATE_SCENE_Airconditionermode");
|
||
mcu_dp_enum_update(DPID_SCENE_AIR_MODE,nvs_SysInfo.airconditioner.mode);
|
||
}
|
||
break;
|
||
case ZIG_STATE_SCENE_Airconditionerspeed://空调风速
|
||
{//AUTO, LOW, MEDIUM, HIGH
|
||
LOG_I("ZIG_STATE_SCENE_Airconditionerspeed");
|
||
mcu_dp_enum_update(DPID_SCENE_AIR_SPEED,nvs_SysInfo.airconditioner.speed);
|
||
}
|
||
break;
|
||
case ZIG_STATE_SCENE_Airconditionerdirect://空调风向
|
||
{//AUTO, UP, MEDIUM, DOWN, LEFTORRIGHT
|
||
LOG_I("ZIG_STATE_SCENE_Airconditionerdirect");
|
||
mcu_dp_enum_update(DPID_SCENE_AIR_FAN,nvs_SysInfo.airconditioner.direct);
|
||
}
|
||
break;
|
||
case ZIG_STATE_SCENE_Airconditionertempadd://增加1°(可下发可上报)
|
||
case ZIG_STATE_SCENE_Airconditionertempsub://减少1°(可下发可上报)
|
||
{
|
||
LOG_I("ZIG_STATE_SCENE_Airconditionertemp");
|
||
mcu_dp_enum_update(DPID_SCENE_AIR_TEMP,nvs_SysInfo.airconditioner.temp);
|
||
}
|
||
break;
|
||
//投影仪
|
||
case ZIG_STATE_SCENE_ProjectorON:
|
||
{
|
||
LOG_I("ZIG_STATE_SCENE_ProjectorON");
|
||
|
||
mcu_dp_enum_update(DPID_SCENE_PROJECTOR_SWITCH,0);
|
||
}
|
||
break;
|
||
case ZIG_STATE_SCENE_ProjectorOFF:
|
||
{
|
||
LOG_I("ZIG_STATE_SCENE_ProjectorOFF");
|
||
|
||
mcu_dp_enum_update(DPID_SCENE_PROJECTOR_SWITCH,1);
|
||
}
|
||
break;
|
||
case ZIG_STATE_SCENE_Projector_volume:
|
||
{
|
||
LOG_I("ZIG_STATE_SCENE_Projector_volume");
|
||
mcu_dp_enum_update(DPID_SCENE_PROJECTOR_VOLUME,nvs_SysInfo.projector.volume);
|
||
}
|
||
break;
|
||
case ZIG_STATE_SCENE_Projector_quit:
|
||
{
|
||
LOG_I("ZIG_STATE_SCENE_Projector_quit");
|
||
mcu_dp_enum_update(DPID_SCENE_PROJECTOR_QUIT,0);
|
||
}
|
||
break;
|
||
case ZIG_STATE_SCENE_Projector_return:
|
||
{
|
||
LOG_I("ZIG_STATE_SCENE_Projector_return");
|
||
mcu_dp_enum_update(DPID_SCENE_PROJECTOR_RETURN,0);
|
||
}
|
||
break;
|
||
case ZIG_STATE_SCENE_Projector_home:
|
||
{
|
||
LOG_I("ZIG_STATE_SCENE_Projector_home");
|
||
mcu_dp_enum_update(DPID_SCENE_PROJECTOR_HOME,0);
|
||
}
|
||
break;
|
||
case ZIG_STATE_SCENE_Projector_menu:
|
||
{
|
||
LOG_I("ZIG_STATE_SCENE_Projector_menu");
|
||
mcu_dp_enum_update(DPID_SCENE_PROJECTOR_MENU,0);
|
||
}
|
||
break;
|
||
case ZIG_STATE_SCENE_Projector_up:
|
||
{
|
||
LOG_I("ZIG_STATE_SCENE_Projector_up");
|
||
mcu_dp_enum_update(DPID_SCENE_PROJECTOR_DIRECTION,0);
|
||
}
|
||
break;
|
||
case ZIG_STATE_SCENE_Projector_down:
|
||
{
|
||
LOG_I("ZIG_STATE_SCENE_Projector_down");
|
||
mcu_dp_enum_update(DPID_SCENE_PROJECTOR_DIRECTION,1);
|
||
}
|
||
break;
|
||
case ZIG_STATE_SCENE_Projector_left:
|
||
{
|
||
LOG_I("ZIG_STATE_SCENE_Projector_left");
|
||
mcu_dp_enum_update(DPID_SCENE_PROJECTOR_DIRECTION,2);
|
||
}
|
||
break;
|
||
case ZIG_STATE_SCENE_Projector_right:
|
||
{
|
||
LOG_I("ZIG_STATE_SCENE_Projector_right");
|
||
mcu_dp_enum_update(DPID_SCENE_PROJECTOR_DIRECTION,3);
|
||
}
|
||
break;
|
||
case ZIG_STATE_SCENE_Projector_sure:
|
||
{
|
||
LOG_I("ZIG_STATE_SCENE_Projector_sure");
|
||
mcu_dp_enum_update(DPID_SCENE_PROJECTOR_SURE,0);
|
||
}
|
||
break;
|
||
//1路场景开关1 1路 全开全关也还是那1路
|
||
case ZIG_STATE_GANG11on:
|
||
case ZIG_STATE_GANG1_ALLon:
|
||
{
|
||
LOG_I("gang 1 on");
|
||
mcu_dp_enum_update(DPID_SCENE_SWITCH1_1,0);//enum:on(0) off(1)
|
||
}
|
||
break;
|
||
case ZIG_STATE_GANG11off:
|
||
case ZIG_STATE_GANG1_ALLoff:
|
||
{
|
||
LOG_I("gang 1 off");
|
||
mcu_dp_enum_update(DPID_SCENE_SWITCH1_1,1);
|
||
}
|
||
break;
|
||
//1路场景开关1
|
||
case ZIG_STATE_GANG21on:
|
||
{
|
||
LOG_I("gang 21 on");
|
||
mcu_dp_enum_update(DPID_SCENE_SWITCH2_1,0);
|
||
}
|
||
break;
|
||
case ZIG_STATE_GANG21off:
|
||
{
|
||
LOG_I("gang 21 off");
|
||
mcu_dp_enum_update(DPID_SCENE_SWITCH2_1,1);
|
||
}
|
||
break;
|
||
case ZIG_STATE_GANG22on:
|
||
{
|
||
LOG_I("gang 22 on");
|
||
mcu_dp_enum_update(DPID_SCENE_SWITCH2_2,0);
|
||
}
|
||
break;
|
||
case ZIG_STATE_GANG22off:
|
||
{
|
||
LOG_I("gang 22 off");
|
||
mcu_dp_enum_update(DPID_SCENE_SWITCH2_2,1);
|
||
}
|
||
break;
|
||
case ZIG_STATE_GANG2_ALLon:
|
||
{
|
||
LOG_I("gang2 all on");
|
||
mcu_dp_enum_update(DPID_SCENE_SWITCH2_1,0);
|
||
mcu_dp_enum_update(DPID_SCENE_SWITCH2_1,0);
|
||
}
|
||
break;
|
||
case ZIG_STATE_GANG2_ALLoff:
|
||
{
|
||
LOG_I("gang2 all off");
|
||
mcu_dp_enum_update(DPID_SCENE_SWITCH2_1,1);
|
||
mcu_dp_enum_update(DPID_SCENE_SWITCH2_1,1);
|
||
}
|
||
break;
|
||
//--------------------------------------------
|
||
//3路场景开关
|
||
case ZIG_STATE_GANG31on:
|
||
{
|
||
LOG_I("gang 31 on");
|
||
mcu_dp_enum_update(DPID_SCENE_SWITCH3_1,0);
|
||
}
|
||
break;
|
||
case ZIG_STATE_GANG31off:
|
||
{
|
||
LOG_I("gang 31 off");
|
||
mcu_dp_enum_update(DPID_SCENE_SWITCH3_1,1);
|
||
}
|
||
break;
|
||
case ZIG_STATE_GANG32on:
|
||
{
|
||
LOG_I("gang 32 on");
|
||
mcu_dp_enum_update(DPID_SCENE_SWITCH3_2,0);
|
||
}
|
||
break;
|
||
case ZIG_STATE_GANG32off:
|
||
{
|
||
LOG_I("gang 32 off");
|
||
mcu_dp_enum_update(DPID_SCENE_SWITCH3_2,1);
|
||
}
|
||
break;
|
||
case ZIG_STATE_GANG33on:
|
||
{
|
||
LOG_I("gang 33 on");
|
||
mcu_dp_enum_update(DPID_SCENE_SWITCH3_3,0);
|
||
}
|
||
break;
|
||
case ZIG_STATE_GANG33off:
|
||
{
|
||
LOG_I("gang 33 off");
|
||
mcu_dp_enum_update(DPID_SCENE_SWITCH3_3,1);
|
||
}
|
||
break;
|
||
case ZIG_STATE_GANG3_ALLon:
|
||
{
|
||
LOG_I("gang3 all on");
|
||
mcu_dp_enum_update(DPID_SCENE_SWITCH3_1,0);
|
||
mcu_dp_enum_update(DPID_SCENE_SWITCH3_2,0);
|
||
mcu_dp_enum_update(DPID_SCENE_SWITCH3_3,0);
|
||
}
|
||
break;
|
||
case ZIG_STATE_GANG3_ALLoff:
|
||
{
|
||
LOG_I("gang3 all off");
|
||
mcu_dp_enum_update(DPID_SCENE_SWITCH3_1,1);
|
||
mcu_dp_enum_update(DPID_SCENE_SWITCH3_2,1);
|
||
mcu_dp_enum_update(DPID_SCENE_SWITCH3_3,1);
|
||
}
|
||
break;
|
||
//4路场景开关
|
||
case ZIG_STATE_GANG41on:
|
||
{
|
||
LOG_I("gang 41 on");
|
||
mcu_dp_enum_update(DPID_SCENE_SWITCH4_1,0);
|
||
}
|
||
break;
|
||
case ZIG_STATE_GANG41off:
|
||
{
|
||
LOG_I("gang 41 off");
|
||
mcu_dp_enum_update(DPID_SCENE_SWITCH4_1,1);
|
||
}
|
||
break;
|
||
case ZIG_STATE_GANG42on:
|
||
{
|
||
LOG_I("gang 42 on");
|
||
mcu_dp_enum_update(DPID_SCENE_SWITCH4_2,0);
|
||
}
|
||
break;
|
||
case ZIG_STATE_GANG42off:
|
||
{
|
||
LOG_I("gang 42 off");
|
||
mcu_dp_enum_update(DPID_SCENE_SWITCH4_2,1);
|
||
}
|
||
break;
|
||
case ZIG_STATE_GANG43on:
|
||
{
|
||
LOG_I("gang 43 on");
|
||
mcu_dp_enum_update(DPID_SCENE_SWITCH4_3,0);
|
||
}
|
||
break;
|
||
case ZIG_STATE_GANG43off:
|
||
{
|
||
LOG_I("gang 43 off");
|
||
mcu_dp_enum_update(DPID_SCENE_SWITCH4_3,1);
|
||
}
|
||
break;
|
||
case ZIG_STATE_GANG44on:
|
||
{
|
||
LOG_I("gang 44 on");
|
||
mcu_dp_enum_update(DPID_SCENE_SWITCH4_4,0);
|
||
}
|
||
break;
|
||
case ZIG_STATE_GANG44off:
|
||
{
|
||
LOG_I("gang 44 off");
|
||
mcu_dp_enum_update(DPID_SCENE_SWITCH4_4,1);
|
||
}
|
||
break;
|
||
case ZIG_STATE_GANG4_ALLon:
|
||
{
|
||
LOG_I("gang4 all on");
|
||
mcu_dp_enum_update(DPID_SCENE_SWITCH4_1,0);
|
||
mcu_dp_enum_update(DPID_SCENE_SWITCH4_2,0);
|
||
mcu_dp_enum_update(DPID_SCENE_SWITCH4_3,0);
|
||
mcu_dp_enum_update(DPID_SCENE_SWITCH4_4,0);
|
||
}
|
||
break;
|
||
case ZIG_STATE_GANG4_ALLoff:
|
||
{
|
||
LOG_I("gang4 all off");
|
||
mcu_dp_enum_update(DPID_SCENE_SWITCH4_1,1);
|
||
mcu_dp_enum_update(DPID_SCENE_SWITCH4_2,1);
|
||
mcu_dp_enum_update(DPID_SCENE_SWITCH4_3,1);
|
||
mcu_dp_enum_update(DPID_SCENE_SWITCH4_4,1);
|
||
}
|
||
break;
|
||
//6路场景开关
|
||
case ZIG_STATE_GANG61on:
|
||
{
|
||
LOG_I("gang 61 on");
|
||
mcu_dp_enum_update(DPID_SCENE_SWITCH6_1,0);
|
||
}
|
||
break;
|
||
case ZIG_STATE_GANG61off:
|
||
{
|
||
LOG_I("gang 61 off");
|
||
mcu_dp_enum_update(DPID_SCENE_SWITCH6_1,1);
|
||
}
|
||
break;
|
||
case ZIG_STATE_GANG62on:
|
||
{
|
||
LOG_I("gang 62 on");
|
||
mcu_dp_enum_update(DPID_SCENE_SWITCH6_2,0);
|
||
}
|
||
break;
|
||
case ZIG_STATE_GANG62off:
|
||
{
|
||
LOG_I("gang 62 off");
|
||
mcu_dp_enum_update(DPID_SCENE_SWITCH6_2,1);
|
||
}
|
||
break;
|
||
case ZIG_STATE_GANG63on:
|
||
{
|
||
LOG_I("gang 63 on");
|
||
mcu_dp_enum_update(DPID_SCENE_SWITCH6_3,0);
|
||
}
|
||
break;
|
||
case ZIG_STATE_GANG63off:
|
||
{
|
||
LOG_I("gang 63 off");
|
||
mcu_dp_enum_update(DPID_SCENE_SWITCH6_3,1);
|
||
}
|
||
break;
|
||
case ZIG_STATE_GANG64on:
|
||
{
|
||
LOG_I("gang 64 on");
|
||
mcu_dp_enum_update(DPID_SCENE_SWITCH6_4,0);
|
||
}
|
||
break;
|
||
case ZIG_STATE_GANG64off:
|
||
{
|
||
LOG_I("gang 64 off");
|
||
mcu_dp_enum_update(DPID_SCENE_SWITCH6_4,1);
|
||
}
|
||
break;
|
||
case ZIG_STATE_GANG65on:
|
||
{
|
||
LOG_I("gang 65 on");
|
||
mcu_dp_enum_update(DPID_SCENE_SWITCH6_5,0);
|
||
}
|
||
break;
|
||
case ZIG_STATE_GANG65off:
|
||
{
|
||
LOG_I("gang 65 off");
|
||
mcu_dp_enum_update(DPID_SCENE_SWITCH6_5,1);
|
||
}
|
||
break;
|
||
case ZIG_STATE_GANG66on:
|
||
{
|
||
LOG_I("gang 66 on");
|
||
mcu_dp_enum_update(DPID_SCENE_SWITCH6_6,0);
|
||
}
|
||
break;
|
||
case ZIG_STATE_GANG66off:
|
||
{
|
||
LOG_I("gang 66 off");
|
||
mcu_dp_enum_update(DPID_SCENE_SWITCH6_6,1);
|
||
}
|
||
break;
|
||
case ZIG_STATE_GANG6_ALLon:
|
||
{
|
||
LOG_I("gang6 all on");
|
||
mcu_dp_enum_update(DPID_SCENE_SWITCH6_1,0);
|
||
mcu_dp_enum_update(DPID_SCENE_SWITCH6_2,0);
|
||
mcu_dp_enum_update(DPID_SCENE_SWITCH6_3,0);
|
||
mcu_dp_enum_update(DPID_SCENE_SWITCH6_4,0);
|
||
mcu_dp_enum_update(DPID_SCENE_SWITCH6_5,0);
|
||
mcu_dp_enum_update(DPID_SCENE_SWITCH6_6,0);
|
||
}
|
||
break;
|
||
case ZIG_STATE_GANG6_ALLoff:
|
||
{
|
||
LOG_I("gang6 all off");
|
||
mcu_dp_enum_update(DPID_SCENE_SWITCH6_1,1);
|
||
mcu_dp_enum_update(DPID_SCENE_SWITCH6_2,1);
|
||
mcu_dp_enum_update(DPID_SCENE_SWITCH6_3,1);
|
||
mcu_dp_enum_update(DPID_SCENE_SWITCH6_4,1);
|
||
mcu_dp_enum_update(DPID_SCENE_SWITCH6_5,1);
|
||
mcu_dp_enum_update(DPID_SCENE_SWITCH6_6,1);
|
||
}
|
||
break;
|
||
|
||
|
||
default:
|
||
{
|
||
LOG_I( "event error!!!");
|
||
}
|
||
break;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
//const int rxBytes = uart_read_bytes(ZIG_UART_NUM, rxdata, ZIG_RX_BUF_SIZE,25/portTICK_PERIOD_MS);
|
||
int rxBytes = rt_device_read(serial, -1, rxdata, ZIG_RX_BUF_SIZE);
|
||
if (rxBytes > 0)
|
||
{
|
||
//rxdata[rxBytes] = 0;//在串口接收的数据增加结束符
|
||
//LOG_I( "rx:%s", (char *)rxdata);
|
||
LOG_I("rxBytes:%d\r\n",rxBytes);
|
||
esp_log_buffer_hex(LOG_TAG,rxdata,rxBytes);
|
||
//ulog_hexdump(DBG_TAG,16,&rxdata,rxBytes);
|
||
for(int rxBytesindex=0;rxBytesindex<rxBytes;rxBytesindex++)
|
||
{
|
||
//LOG_I("rxBytesindex:%d",rxBytesindex);
|
||
//uart_receive_input(ch);//#error "please call this fuction in the interrupt fuction of serial receive, and delete this line"
|
||
uart_receive_input(rxdata[rxBytesindex]);//#error "please call this fuction in the interrupt fuction of serial receive, and delete this line"
|
||
}
|
||
}
|
||
else
|
||
{
|
||
if (rxBytes < 0)
|
||
pr_debug("read() return [%ld] %s\n",rt_get_errno(), rt_strerror(rt_get_errno()));
|
||
}
|
||
|
||
zigbee_uart_service();//#error "please call this fucntion in main while(1){}, and delete this line"
|
||
}
|
||
}
|
||
}
|
||
|