Gledopto Mini5In1 TLSR8258F512ET32 support
This commit is contained in:
		
							parent
							
								
									1945589d60
								
							
						
					
					
						commit
						edff6aef13
					
				
							
								
								
									
										36
									
								
								app_cfg.h
									
									
									
									
									
								
							
							
						
						
									
										36
									
								
								app_cfg.h
									
									
									
									
									
								
							@ -44,23 +44,15 @@ extern "C" {
 | 
			
		||||
/* HCI interface */
 | 
			
		||||
#define	ZBHCI_UART						0
 | 
			
		||||
 | 
			
		||||
/* RGB or CCT */
 | 
			
		||||
#define COLOR_RGB_SUPPORT				0
 | 
			
		||||
#define COLOR_CCT_SUPPORT				1
 | 
			
		||||
/* RGB + CCT always */
 | 
			
		||||
#define COLOR_RGB_SUPPORT				1
 | 
			
		||||
 | 
			
		||||
/* BDB */
 | 
			
		||||
#define TOUCHLINK_SUPPORT				1
 | 
			
		||||
#define FIND_AND_BIND_SUPPORT			0
 | 
			
		||||
 | 
			
		||||
/* Board ID */
 | 
			
		||||
#define BOARD_826x_EVK					0
 | 
			
		||||
#define BOARD_826x_DONGLE				1
 | 
			
		||||
#define BOARD_8258_EVK					2
 | 
			
		||||
#define BOARD_8258_DONGLE				3
 | 
			
		||||
#define BOARD_8278_EVK					4
 | 
			
		||||
#define BOARD_8278_DONGLE				5
 | 
			
		||||
#define BOARD_9518_EVK					6
 | 
			
		||||
#define BOARD_9518_DONGLE				7
 | 
			
		||||
#define BOARD_GLC002P					0
 | 
			
		||||
 | 
			
		||||
/* Board define */
 | 
			
		||||
#if defined(MCU_CORE_826x)
 | 
			
		||||
@ -70,7 +62,7 @@ extern "C" {
 | 
			
		||||
#if (CHIP_TYPE == TLSR_8258_1M)
 | 
			
		||||
	#define FLASH_CAP_SIZE_1M			1
 | 
			
		||||
#endif
 | 
			
		||||
	#define BOARD						BOARD_8258_DONGLE//BOARD_8258_EVK
 | 
			
		||||
	#define BOARD						BOARD_GLC002P
 | 
			
		||||
	#define CLOCK_SYS_CLOCK_HZ  		48000000
 | 
			
		||||
#elif defined(MCU_CORE_8278)
 | 
			
		||||
	#define FLASH_CAP_SIZE_1M			1
 | 
			
		||||
@ -85,22 +77,8 @@ extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* Board include */
 | 
			
		||||
#if (BOARD == BOARD_826x_EVK)
 | 
			
		||||
	#include "board_826x_evk.h"
 | 
			
		||||
#elif(BOARD == BOARD_826x_DONGLE)
 | 
			
		||||
	#include "board_826x_dongle.h"
 | 
			
		||||
#elif(BOARD == BOARD_8258_DONGLE)
 | 
			
		||||
	#include "board_8258_dongle.h"
 | 
			
		||||
#elif(BOARD == BOARD_8258_EVK)
 | 
			
		||||
	#include "board_8258_evk.h"
 | 
			
		||||
#elif(BOARD == BOARD_8278_EVK)
 | 
			
		||||
	#include "board_8278_evk.h"
 | 
			
		||||
#elif(BOARD == BOARD_8278_DONGLE)
 | 
			
		||||
	#include "board_8278_dongle.h"
 | 
			
		||||
#elif (BOARD == BOARD_9518_EVK)
 | 
			
		||||
	#include "board_9518_evk.h"
 | 
			
		||||
#elif (BOARD == BOARD_9518_DONGLE)
 | 
			
		||||
	#include "board_9518_dongle.h"
 | 
			
		||||
#if(BOARD == BOARD_GLC002P)
 | 
			
		||||
	#include "board_glc002p.h"
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -129,7 +107,7 @@ extern "C" {
 | 
			
		||||
 */
 | 
			
		||||
#define ZCL_ON_OFF_SUPPORT							1
 | 
			
		||||
#define ZCL_LEVEL_CTRL_SUPPORT						1
 | 
			
		||||
#if (COLOR_RGB_SUPPORT || COLOR_CCT_SUPPORT)
 | 
			
		||||
#if (COLOR_RGB_SUPPORT)
 | 
			
		||||
#define ZCL_LIGHT_COLOR_CONTROL_SUPPORT				1
 | 
			
		||||
#endif
 | 
			
		||||
#define ZCL_GROUP_SUPPORT							1
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										13
									
								
								app_ui.c
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								app_ui.c
									
									
									
									
									
								
							@ -59,8 +59,9 @@ void led_off(u32 pin){
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void led_init(void){
 | 
			
		||||
	led_off(LED_POWER);
 | 
			
		||||
	led_off(LED_PERMIT);
 | 
			
		||||
	led_off(LED_STATUS_R);
 | 
			
		||||
	led_off(LED_STATUS_G);
 | 
			
		||||
	led_off(LED_STATUS_B);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void localPermitJoinState(void){
 | 
			
		||||
@ -68,9 +69,9 @@ void localPermitJoinState(void){
 | 
			
		||||
	if(assocPermit != zb_getMacAssocPermit()){
 | 
			
		||||
		assocPermit = zb_getMacAssocPermit();
 | 
			
		||||
		if(assocPermit){
 | 
			
		||||
			led_on(LED_PERMIT);
 | 
			
		||||
			led_on(LED_STATUS_R);
 | 
			
		||||
		}else{
 | 
			
		||||
			led_off(LED_PERMIT);
 | 
			
		||||
			led_off(LED_STATUS_R);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
@ -78,6 +79,10 @@ void localPermitJoinState(void){
 | 
			
		||||
void buttonKeepPressed(u8 btNum){
 | 
			
		||||
	if(btNum == VK_SW1){
 | 
			
		||||
		gLightCtx.state = APP_FACTORY_NEW_DOING;
 | 
			
		||||
		led_on(LED_STATUS_R);
 | 
			
		||||
		led_on(LED_STATUS_G);
 | 
			
		||||
		led_on(LED_STATUS_B);
 | 
			
		||||
 | 
			
		||||
		zb_factoryReset();
 | 
			
		||||
	}else if(btNum == VK_SW2){
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -1,295 +0,0 @@
 | 
			
		||||
/********************************************************************************************************
 | 
			
		||||
 * @file    board_8258_dongle.h
 | 
			
		||||
 *
 | 
			
		||||
 * @brief   This is the header file for board_8258_dongle
 | 
			
		||||
 *
 | 
			
		||||
 * @author  Zigbee Group
 | 
			
		||||
 * @date    2021
 | 
			
		||||
 *
 | 
			
		||||
 * @par     Copyright (c) 2021, Telink Semiconductor (Shanghai) Co., Ltd. ("TELINK")
 | 
			
		||||
 *
 | 
			
		||||
 *          Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
 *          you may not use this file except in compliance with the License.
 | 
			
		||||
 *          You may obtain a copy of the License at
 | 
			
		||||
 *
 | 
			
		||||
 *              http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
 *
 | 
			
		||||
 *          Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
 *          distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
 *          WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
 *          See the License for the specific language governing permissions and
 | 
			
		||||
 *          limitations under the License.
 | 
			
		||||
 *******************************************************************************************************/
 | 
			
		||||
 | 
			
		||||
#pragma once
 | 
			
		||||
 | 
			
		||||
/* Enable C linkage for C++ Compilers: */
 | 
			
		||||
#if defined(__cplusplus)
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define DONGLE_8258_32				0
 | 
			
		||||
#define	DONGLE_8258_48				1
 | 
			
		||||
 | 
			
		||||
#if defined DONGLE_8258_32 && (DONGLE_8258_32 == 1)
 | 
			
		||||
/*******************************************************************************************************
 | 
			
		||||
*********************8258Dongle with 32 Pins: Start*****************************************************
 | 
			
		||||
*******************************************************************************************************/
 | 
			
		||||
//KEY
 | 
			
		||||
#define	BUTTON1 					GPIO_PD7
 | 
			
		||||
#define PD7_FUNC					AS_GPIO
 | 
			
		||||
#define PD7_OUTPUT_ENABLE			0
 | 
			
		||||
#define PD7_INPUT_ENABLE			1
 | 
			
		||||
#define	PULL_WAKEUP_SRC_PD7			PM_PIN_PULLUP_10K
 | 
			
		||||
 | 
			
		||||
#define	BUTTON2 					GPIO_PA1
 | 
			
		||||
#define PA1_FUNC					AS_GPIO
 | 
			
		||||
#define PA1_OUTPUT_ENABLE			0
 | 
			
		||||
#define PA1_INPUT_ENABLE			1
 | 
			
		||||
#define	PULL_WAKEUP_SRC_PA1			PM_PIN_PULLUP_10K
 | 
			
		||||
 | 
			
		||||
//LED
 | 
			
		||||
/***************************************************************
 | 
			
		||||
* LED_R			GPIO_PD4	//D1 -- red			PWM2_N
 | 
			
		||||
* LED_G			GPIO_PA0	//D2 -- green		PWM0_N
 | 
			
		||||
* LED_B			GPIO_PD3	//D3 -- blue		PWM1_N
 | 
			
		||||
* LED_W			GPIO_PD2	//D4 -- yellow		PWM3
 | 
			
		||||
****************************************************************/
 | 
			
		||||
#if defined COLOR_RGB_SUPPORT && (COLOR_RGB_SUPPORT == 1)
 | 
			
		||||
 | 
			
		||||
#define LED_R						GPIO_PD4	//D1 -- red			PWM2_N
 | 
			
		||||
#define LED_G						GPIO_PA0	//D2 -- green		PWM0_N
 | 
			
		||||
#define LED_B						GPIO_PD3	//D3 -- blue		PWM1_N
 | 
			
		||||
 | 
			
		||||
#define PWM_R_CHANNEL				2//PWM2_N
 | 
			
		||||
#define PWM_R_CHANNEL_SET()			do{	\
 | 
			
		||||
										gpio_set_func(LED_R, AS_PWM2_N); 	\
 | 
			
		||||
										drv_pwm_n_invert(PWM_R_CHANNEL); 	\
 | 
			
		||||
									}while(0)
 | 
			
		||||
 | 
			
		||||
#define PWM_G_CHANNEL				0//PWM0_N
 | 
			
		||||
#define PWM_G_CHANNEL_SET()			do{	\
 | 
			
		||||
										gpio_set_func(LED_G, AS_PWM0_N); 	\
 | 
			
		||||
										drv_pwm_n_invert(PWM_G_CHANNEL); 	\
 | 
			
		||||
									}while(0)
 | 
			
		||||
 | 
			
		||||
#define PWM_B_CHANNEL				1//PWM1_N
 | 
			
		||||
#define PWM_B_CHANNEL_SET()			do{	\
 | 
			
		||||
										gpio_set_func(LED_B, AS_PWM1_N); 	\
 | 
			
		||||
										drv_pwm_n_invert(PWM_B_CHANNEL); 	\
 | 
			
		||||
									}while(0)
 | 
			
		||||
 | 
			
		||||
#define R_LIGHT_PWM_CHANNEL			PWM_R_CHANNEL
 | 
			
		||||
#define G_LIGHT_PWM_CHANNEL			PWM_G_CHANNEL
 | 
			
		||||
#define B_LIGHT_PWM_CHANNEL			PWM_B_CHANNEL
 | 
			
		||||
#define R_LIGHT_PWM_SET()			PWM_R_CHANNEL_SET()
 | 
			
		||||
#define G_LIGHT_PWM_SET()			PWM_G_CHANNEL_SET()
 | 
			
		||||
#define B_LIGHT_PWM_SET()			PWM_B_CHANNEL_SET()
 | 
			
		||||
 | 
			
		||||
#define LED_W						GPIO_PD2
 | 
			
		||||
 | 
			
		||||
#define PD2_FUNC					AS_GPIO
 | 
			
		||||
#define PD2_OUTPUT_ENABLE			1
 | 
			
		||||
#define PD2_INPUT_ENABLE			0
 | 
			
		||||
 | 
			
		||||
#define LED_POWER					NULL
 | 
			
		||||
#define LED_PERMIT					LED_W
 | 
			
		||||
 | 
			
		||||
#else
 | 
			
		||||
 | 
			
		||||
//PWM configuration, LED_B as warm light, LED_W as cool light.
 | 
			
		||||
#define LED_B						GPIO_PD3	//D3 -- blue		PWM1_N
 | 
			
		||||
#define LED_W						GPIO_PD2	//D4 -- yellow		PWM3
 | 
			
		||||
 | 
			
		||||
#define PWM_B_CHANNEL				1//PWM1_N
 | 
			
		||||
#define PWM_B_CHANNEL_SET()			do{	\
 | 
			
		||||
										gpio_set_func(LED_B, AS_PWM1_N); 	\
 | 
			
		||||
										drv_pwm_n_invert(PWM_B_CHANNEL); 	\
 | 
			
		||||
									}while(0)
 | 
			
		||||
 | 
			
		||||
#define PWM_W_CHANNEL				3//PWM3
 | 
			
		||||
#define PWM_W_CHANNEL_SET()			do{	\
 | 
			
		||||
										gpio_set_func(LED_W, AS_PWM3); 		\
 | 
			
		||||
									}while(0)
 | 
			
		||||
 | 
			
		||||
#define WARM_LIGHT_PWM_CHANNEL		PWM_B_CHANNEL
 | 
			
		||||
#define COOL_LIGHT_PWM_CHANNEL		PWM_W_CHANNEL
 | 
			
		||||
#define WARM_LIGHT_PWM_SET()		PWM_B_CHANNEL_SET()
 | 
			
		||||
#define COOL_LIGHT_PWM_SET()		PWM_W_CHANNEL_SET()
 | 
			
		||||
 | 
			
		||||
//LED_R and LED_G as GPIO.
 | 
			
		||||
#define LED_R						GPIO_PD4
 | 
			
		||||
#define LED_G						GPIO_PA0
 | 
			
		||||
 | 
			
		||||
#define PD4_FUNC					AS_GPIO
 | 
			
		||||
#define PD4_OUTPUT_ENABLE			1
 | 
			
		||||
#define PD4_INPUT_ENABLE			0
 | 
			
		||||
 | 
			
		||||
#define PA0_FUNC					AS_GPIO
 | 
			
		||||
#define PA0_OUTPUT_ENABLE			1
 | 
			
		||||
#define PA0_INPUT_ENABLE			0
 | 
			
		||||
 | 
			
		||||
#define LED_POWER					LED_R
 | 
			
		||||
#define LED_PERMIT					LED_G
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// UART
 | 
			
		||||
#if ZBHCI_UART
 | 
			
		||||
	#error please configurate uart PIN!!!!!!
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// DEBUG
 | 
			
		||||
#if UART_PRINTF_MODE
 | 
			
		||||
	#define	DEBUG_INFO_TX_PIN	    GPIO_PC4//print
 | 
			
		||||
#endif
 | 
			
		||||
/*******************************************************************************************************
 | 
			
		||||
*********************8258Dongle with 32 Pins: End*****************************************************
 | 
			
		||||
*******************************************************************************************************/
 | 
			
		||||
#elif defined DONGLE_8258_48 && (DONGLE_8258_48 == 1)
 | 
			
		||||
/*******************************************************************************************************
 | 
			
		||||
*********************8258Dongle with 48 Pins: Start*****************************************************
 | 
			
		||||
*******************************************************************************************************/
 | 
			
		||||
//KEY
 | 
			
		||||
#define	BUTTON1 					GPIO_PD6
 | 
			
		||||
#define PD6_FUNC					AS_GPIO
 | 
			
		||||
#define PD6_OUTPUT_ENABLE			0
 | 
			
		||||
#define PD6_INPUT_ENABLE			1
 | 
			
		||||
#define	PULL_WAKEUP_SRC_PD6			PM_PIN_PULLUP_10K
 | 
			
		||||
 | 
			
		||||
#define	BUTTON2 					GPIO_PD5
 | 
			
		||||
#define PD5_FUNC					AS_GPIO
 | 
			
		||||
#define PD5_OUTPUT_ENABLE			0
 | 
			
		||||
#define PD5_INPUT_ENABLE			1
 | 
			
		||||
#define	PULL_WAKEUP_SRC_PD5			PM_PIN_PULLUP_10K
 | 
			
		||||
 | 
			
		||||
//LED
 | 
			
		||||
/***************************************************************
 | 
			
		||||
* LED_R			GPIO_PA3	//D2 -- red			PWM1
 | 
			
		||||
* LED_G			GPIO_PA2	//D1 -- green		PWM0
 | 
			
		||||
* LED_B			GPIO_PB0	//D4 -- blue		PWM3
 | 
			
		||||
* LED_W			GPIO_PB1	//D5 -- white		PWM4
 | 
			
		||||
* LED_Y			GPIO_PA4	//D3 -- yellow		PWM2
 | 
			
		||||
****************************************************************/
 | 
			
		||||
#if defined COLOR_RGB_SUPPORT && (COLOR_RGB_SUPPORT == 1)
 | 
			
		||||
 | 
			
		||||
#define LED_R						GPIO_PA3	//D2 -- red			PWM1
 | 
			
		||||
#define LED_G						GPIO_PA2	//D1 -- green		PWM0
 | 
			
		||||
#define LED_B						GPIO_PB0	//D4 -- blue		PWM3
 | 
			
		||||
 | 
			
		||||
#define PWM_R_CHANNEL				1//PWM1
 | 
			
		||||
#define PWM_R_CHANNEL_SET()			do{	\
 | 
			
		||||
										gpio_set_func(LED_R, AS_PWM1); 		\
 | 
			
		||||
									}while(0)
 | 
			
		||||
 | 
			
		||||
#define PWM_G_CHANNEL				0//PWM0
 | 
			
		||||
#define PWM_G_CHANNEL_SET()			do{	\
 | 
			
		||||
										gpio_set_func(LED_G, AS_PWM0); 		\
 | 
			
		||||
									}while(0)
 | 
			
		||||
 | 
			
		||||
#define PWM_B_CHANNEL				3//PWM3
 | 
			
		||||
#define PWM_B_CHANNEL_SET()			do{	\
 | 
			
		||||
										gpio_set_func(LED_B, AS_PWM3); 		\
 | 
			
		||||
									}while(0)
 | 
			
		||||
 | 
			
		||||
#define R_LIGHT_PWM_CHANNEL			PWM_R_CHANNEL
 | 
			
		||||
#define G_LIGHT_PWM_CHANNEL			PWM_G_CHANNEL
 | 
			
		||||
#define B_LIGHT_PWM_CHANNEL			PWM_B_CHANNEL
 | 
			
		||||
#define R_LIGHT_PWM_SET()			PWM_R_CHANNEL_SET()
 | 
			
		||||
#define G_LIGHT_PWM_SET()			PWM_G_CHANNEL_SET()
 | 
			
		||||
#define B_LIGHT_PWM_SET()			PWM_B_CHANNEL_SET()
 | 
			
		||||
 | 
			
		||||
//LED_Y and LED_W as GPIO.
 | 
			
		||||
#define LED_Y						GPIO_PA4
 | 
			
		||||
#define LED_W						GPIO_PB1
 | 
			
		||||
 | 
			
		||||
#define PA4_FUNC					AS_GPIO
 | 
			
		||||
#define PA4_OUTPUT_ENABLE			1
 | 
			
		||||
#define PA4_INPUT_ENABLE			0
 | 
			
		||||
 | 
			
		||||
#define PB1_FUNC					AS_GPIO
 | 
			
		||||
#define PB1_OUTPUT_ENABLE			1
 | 
			
		||||
#define PB1_INPUT_ENABLE			0
 | 
			
		||||
 | 
			
		||||
#define LED_POWER					LED_W
 | 
			
		||||
#define LED_PERMIT					LED_Y
 | 
			
		||||
 | 
			
		||||
#else
 | 
			
		||||
 | 
			
		||||
//PWM configuration, LED_Y as warm light, LED_W as cool light.
 | 
			
		||||
#define LED_Y						GPIO_PA4	//D3 -- yellow		PWM2
 | 
			
		||||
#define LED_W						GPIO_PB1	//D5 -- white		PWM4
 | 
			
		||||
 | 
			
		||||
#define PWM_Y_CHANNEL				2//PWM2
 | 
			
		||||
#define PWM_Y_CHANNEL_SET()			do{	\
 | 
			
		||||
										gpio_set_func(LED_Y, AS_PWM2); 		\
 | 
			
		||||
									}while(0)
 | 
			
		||||
 | 
			
		||||
#define PWM_W_CHANNEL				4//PWM4
 | 
			
		||||
#define PWM_W_CHANNEL_SET()			do{	\
 | 
			
		||||
										gpio_set_func(LED_W, AS_PWM4); 		\
 | 
			
		||||
									}while(0)
 | 
			
		||||
 | 
			
		||||
#define WARM_LIGHT_PWM_CHANNEL		PWM_Y_CHANNEL
 | 
			
		||||
#define COOL_LIGHT_PWM_CHANNEL		PWM_W_CHANNEL
 | 
			
		||||
#define WARM_LIGHT_PWM_SET()		PWM_Y_CHANNEL_SET()
 | 
			
		||||
#define COOL_LIGHT_PWM_SET()		PWM_W_CHANNEL_SET()
 | 
			
		||||
 | 
			
		||||
//LED_R and LED_G as GPIO.
 | 
			
		||||
#define LED_R						GPIO_PA3
 | 
			
		||||
#define LED_G						GPIO_PA2
 | 
			
		||||
 | 
			
		||||
#define PA3_FUNC					AS_GPIO
 | 
			
		||||
#define PA3_OUTPUT_ENABLE			1
 | 
			
		||||
#define PA3_INPUT_ENABLE			0
 | 
			
		||||
 | 
			
		||||
#define PA2_FUNC					AS_GPIO
 | 
			
		||||
#define PA2_OUTPUT_ENABLE			1
 | 
			
		||||
#define PA2_INPUT_ENABLE			0
 | 
			
		||||
 | 
			
		||||
#define LED_POWER					LED_R
 | 
			
		||||
#define LED_PERMIT					LED_G
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// UART
 | 
			
		||||
#if ZBHCI_UART
 | 
			
		||||
	#define UART_TX_PIN         	UART_TX_PD7
 | 
			
		||||
	#define UART_RX_PIN         	UART_RX_PA0
 | 
			
		||||
 | 
			
		||||
	#define UART_PIN_CFG()			uart_gpio_set(UART_TX_PIN, UART_RX_PIN);// uart tx/rx pin set
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// DEBUG
 | 
			
		||||
#if UART_PRINTF_MODE
 | 
			
		||||
	#define	DEBUG_INFO_TX_PIN	    GPIO_PC6//print
 | 
			
		||||
#endif
 | 
			
		||||
/*******************************************************************************************************
 | 
			
		||||
*********************8258Dongle with 48 Pins: End*****************************************************
 | 
			
		||||
*******************************************************************************************************/
 | 
			
		||||
#else
 | 
			
		||||
	#error "Board defined error!"
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
enum{
 | 
			
		||||
	VK_SW1 = 0x01,
 | 
			
		||||
	VK_SW2 = 0x02
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#define	KB_MAP_NORMAL	{\
 | 
			
		||||
		{VK_SW1,}, \
 | 
			
		||||
		{VK_SW2,}, }
 | 
			
		||||
 | 
			
		||||
#define	KB_MAP_NUM		KB_MAP_NORMAL
 | 
			
		||||
#define	KB_MAP_FN		KB_MAP_NORMAL
 | 
			
		||||
 | 
			
		||||
#define KB_DRIVE_PINS  {NULL }
 | 
			
		||||
#define KB_SCAN_PINS   {BUTTON1,  BUTTON2}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Disable C linkage for C++ Compilers: */
 | 
			
		||||
#if defined(__cplusplus)
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
							
								
								
									
										123
									
								
								board_8258_evk.h
									
									
									
									
									
								
							
							
						
						
									
										123
									
								
								board_8258_evk.h
									
									
									
									
									
								
							@ -1,123 +0,0 @@
 | 
			
		||||
/********************************************************************************************************
 | 
			
		||||
 * @file    board_8258_evk.h
 | 
			
		||||
 *
 | 
			
		||||
 * @brief   This is the header file for board_8258_evk
 | 
			
		||||
 *
 | 
			
		||||
 * @author  Zigbee Group
 | 
			
		||||
 * @date    2021
 | 
			
		||||
 *
 | 
			
		||||
 * @par     Copyright (c) 2021, Telink Semiconductor (Shanghai) Co., Ltd. ("TELINK")
 | 
			
		||||
 *
 | 
			
		||||
 *          Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
 *          you may not use this file except in compliance with the License.
 | 
			
		||||
 *          You may obtain a copy of the License at
 | 
			
		||||
 *
 | 
			
		||||
 *              http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
 *
 | 
			
		||||
 *          Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
 *          distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
 *          WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
 *          See the License for the specific language governing permissions and
 | 
			
		||||
 *          limitations under the License.
 | 
			
		||||
 *******************************************************************************************************/
 | 
			
		||||
 | 
			
		||||
#pragma once
 | 
			
		||||
 | 
			
		||||
/* Enable C linkage for C++ Compilers: */
 | 
			
		||||
#if defined(__cplusplus)
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// BUTTON
 | 
			
		||||
#define BUTTON1               GPIO_PD1
 | 
			
		||||
#define PD1_FUNC			  AS_GPIO
 | 
			
		||||
#define PD1_OUTPUT_ENABLE	  0
 | 
			
		||||
#define PD1_INPUT_ENABLE	  1
 | 
			
		||||
#define	PULL_WAKEUP_SRC_PD1	  PM_PIN_PULLUP_10K
 | 
			
		||||
 | 
			
		||||
#define BUTTON2               GPIO_PD2
 | 
			
		||||
#define PD2_FUNC			  AS_GPIO
 | 
			
		||||
#define PD2_OUTPUT_ENABLE	  0
 | 
			
		||||
#define PD2_INPUT_ENABLE	  1
 | 
			
		||||
#define	PULL_WAKEUP_SRC_PD2	  PM_PIN_PULLUP_10K
 | 
			
		||||
 | 
			
		||||
// LED
 | 
			
		||||
/***************************************************************
 | 
			
		||||
* LED_R			GPIO_PD0	//D5 -- red
 | 
			
		||||
* LED_G			GPIO_PD4	//D3 -- green
 | 
			
		||||
* LED_B			GPIO_PD5	//D2 -- blue
 | 
			
		||||
* LED_W			GPIO_PD3	//D4 -- yellow
 | 
			
		||||
****************************************************************/
 | 
			
		||||
#if defined COLOR_RGB_SUPPORT && (COLOR_RGB_SUPPORT == 1)
 | 
			
		||||
	#error "GPIO_PD0 can't be configured as PWM!"
 | 
			
		||||
#else
 | 
			
		||||
 | 
			
		||||
//PWM configuration, LED_B as warm light, LED_W as cool light.
 | 
			
		||||
#define LED_B						GPIO_PD5	//D2 -- blue		PWM0
 | 
			
		||||
#define LED_W						GPIO_PD3	//D4 -- yellow		PWM1_N
 | 
			
		||||
 | 
			
		||||
#define PWM_W_CHANNEL				1	//PWM1_N
 | 
			
		||||
#define PWM_W_CHANNEL_SET()			do{ \
 | 
			
		||||
										gpio_set_func(LED_W, AS_PWM1_N); \
 | 
			
		||||
										drv_pwm_n_invert(PWM_W_CHANNEL); \
 | 
			
		||||
									}while(0)
 | 
			
		||||
 | 
			
		||||
#define PWM_B_CHANNEL				0	//PWM0
 | 
			
		||||
#define PWM_B_CHANNEL_SET()			do{ \
 | 
			
		||||
										gpio_set_func(LED_B, AS_PWM0); \
 | 
			
		||||
									}while(0)
 | 
			
		||||
 | 
			
		||||
#define WARM_LIGHT_PWM_CHANNEL		PWM_B_CHANNEL
 | 
			
		||||
#define COOL_LIGHT_PWM_CHANNEL		PWM_W_CHANNEL
 | 
			
		||||
#define WARM_LIGHT_PWM_SET()		PWM_B_CHANNEL_SET()
 | 
			
		||||
#define COOL_LIGHT_PWM_SET()		PWM_W_CHANNEL_SET()
 | 
			
		||||
 | 
			
		||||
//LED_R and LED_G as GPIO.
 | 
			
		||||
#define LED_R						GPIO_PD0
 | 
			
		||||
#define LED_G						GPIO_PD4
 | 
			
		||||
 | 
			
		||||
#define PD4_FUNC					AS_GPIO
 | 
			
		||||
#define PD4_OUTPUT_ENABLE			1
 | 
			
		||||
#define PD4_INPUT_ENABLE			0
 | 
			
		||||
 | 
			
		||||
#define PD0_FUNC					AS_GPIO
 | 
			
		||||
#define PD0_OUTPUT_ENABLE			1
 | 
			
		||||
#define PD0_INPUT_ENABLE			0
 | 
			
		||||
 | 
			
		||||
#define LED_POWER					LED_R
 | 
			
		||||
#define LED_PERMIT					LED_G
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// UART
 | 
			
		||||
#if ZBHCI_UART
 | 
			
		||||
	#error please configurate uart PIN!!!!!!
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// DEBUG
 | 
			
		||||
#if UART_PRINTF_MODE
 | 
			
		||||
	#define	DEBUG_INFO_TX_PIN	    GPIO_PC7//print
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
enum{
 | 
			
		||||
	VK_SW1 = 0x01,
 | 
			
		||||
	VK_SW2 = 0x02
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#define	KB_MAP_NORMAL	{\
 | 
			
		||||
		{VK_SW1,}, \
 | 
			
		||||
		{VK_SW2,}, }
 | 
			
		||||
 | 
			
		||||
#define	KB_MAP_NUM		KB_MAP_NORMAL
 | 
			
		||||
#define	KB_MAP_FN		KB_MAP_NORMAL
 | 
			
		||||
 | 
			
		||||
#define KB_DRIVE_PINS  {NULL }
 | 
			
		||||
#define KB_SCAN_PINS   {BUTTON1,  BUTTON2}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Disable C linkage for C++ Compilers: */
 | 
			
		||||
#if defined(__cplusplus)
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
@ -1,158 +0,0 @@
 | 
			
		||||
/********************************************************************************************************
 | 
			
		||||
 * @file    board_826x_dongle.h
 | 
			
		||||
 *
 | 
			
		||||
 * @brief   This is the header file for board_826x_dongle
 | 
			
		||||
 *
 | 
			
		||||
 * @author  Zigbee Group
 | 
			
		||||
 * @date    2021
 | 
			
		||||
 *
 | 
			
		||||
 * @par     Copyright (c) 2021, Telink Semiconductor (Shanghai) Co., Ltd. ("TELINK")
 | 
			
		||||
 *
 | 
			
		||||
 *          Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
 *          you may not use this file except in compliance with the License.
 | 
			
		||||
 *          You may obtain a copy of the License at
 | 
			
		||||
 *
 | 
			
		||||
 *              http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
 *
 | 
			
		||||
 *          Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
 *          distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
 *          WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
 *          See the License for the specific language governing permissions and
 | 
			
		||||
 *          limitations under the License.
 | 
			
		||||
 *******************************************************************************************************/
 | 
			
		||||
 | 
			
		||||
#pragma once
 | 
			
		||||
 | 
			
		||||
/* Enable C linkage for C++ Compilers: */
 | 
			
		||||
#if defined(__cplusplus)
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
//KEY
 | 
			
		||||
#define	BUTTON1 					GPIO_PD2
 | 
			
		||||
#define PD2_FUNC					AS_GPIO
 | 
			
		||||
#define PD2_OUTPUT_ENABLE			0
 | 
			
		||||
#define PD2_INPUT_ENABLE			1
 | 
			
		||||
#define	PULL_WAKEUP_SRC_PD2			PM_PIN_PULLUP_10K
 | 
			
		||||
 | 
			
		||||
#define	BUTTON2 					GPIO_PC5
 | 
			
		||||
#define PC5_FUNC					AS_GPIO
 | 
			
		||||
#define PC5_OUTPUT_ENABLE			0
 | 
			
		||||
#define PC5_INPUT_ENABLE			1
 | 
			
		||||
#define	PULL_WAKEUP_SRC_PC5			PM_PIN_PULLUP_10K
 | 
			
		||||
 | 
			
		||||
//LED
 | 
			
		||||
/***************************************************************
 | 
			
		||||
* LED_R		GPIO_PC2	//D3 -- red			PWM2
 | 
			
		||||
* LED_G		GPIO_PC3	//D1 -- green		PWM3
 | 
			
		||||
* LED_B		GPIO_PB6	//D2 -- blue		PWM5
 | 
			
		||||
* LED_W		GPIO_PB4	//D4 -- white		PWM4
 | 
			
		||||
****************************************************************/
 | 
			
		||||
#if defined COLOR_RGB_SUPPORT && (COLOR_RGB_SUPPORT == 1)
 | 
			
		||||
 | 
			
		||||
#define PC2_FUNC					AS_PWM
 | 
			
		||||
#define PC2_OUTPUT_ENABLE			1
 | 
			
		||||
#define PC2_INPUT_ENABLE			0
 | 
			
		||||
 | 
			
		||||
#define PC3_FUNC					AS_PWM
 | 
			
		||||
#define PC3_OUTPUT_ENABLE			1
 | 
			
		||||
#define PC3_INPUT_ENABLE			0
 | 
			
		||||
 | 
			
		||||
#define PB6_FUNC					AS_PWM
 | 
			
		||||
#define PB6_OUTPUT_ENABLE			1
 | 
			
		||||
#define PB6_INPUT_ENABLE			0
 | 
			
		||||
 | 
			
		||||
#define PWM_R_CHANNEL_SET()			PWM2_CFG_GPIO_C2()
 | 
			
		||||
#define PWM_R_CHANNEL				2//PWM2
 | 
			
		||||
 | 
			
		||||
#define PWM_G_CHANNEL_SET()			PWM3_CFG_GPIO_C3()
 | 
			
		||||
#define PWM_G_CHANNEL				3//PWM3
 | 
			
		||||
 | 
			
		||||
#define PWM_B_CHANNEL_SET()			PWM5_CFG_GPIO_B6()
 | 
			
		||||
#define PWM_B_CHANNEL				5//PWM5
 | 
			
		||||
 | 
			
		||||
#define R_LIGHT_PWM_CHANNEL			PWM_R_CHANNEL
 | 
			
		||||
#define G_LIGHT_PWM_CHANNEL			PWM_G_CHANNEL
 | 
			
		||||
#define B_LIGHT_PWM_CHANNEL			PWM_B_CHANNEL
 | 
			
		||||
#define R_LIGHT_PWM_SET()			PWM_R_CHANNEL_SET()
 | 
			
		||||
#define G_LIGHT_PWM_SET()			PWM_G_CHANNEL_SET()
 | 
			
		||||
#define B_LIGHT_PWM_SET()			PWM_B_CHANNEL_SET()
 | 
			
		||||
 | 
			
		||||
#define LED_W						GPIO_PB4
 | 
			
		||||
 | 
			
		||||
#define PB4_FUNC					AS_GPIO
 | 
			
		||||
#define PB4_OUTPUT_ENABLE			1
 | 
			
		||||
#define PB4_INPUT_ENABLE			0
 | 
			
		||||
 | 
			
		||||
#define LED_POWER					NULL
 | 
			
		||||
#define LED_PERMIT					LED_W
 | 
			
		||||
 | 
			
		||||
#else
 | 
			
		||||
 | 
			
		||||
//PWM configuration, LED_B as warm light, LED_W as cool light.
 | 
			
		||||
#define PB6_FUNC					AS_PWM
 | 
			
		||||
#define PB6_OUTPUT_ENABLE			1
 | 
			
		||||
#define PB6_INPUT_ENABLE			0
 | 
			
		||||
 | 
			
		||||
#define PB4_FUNC					AS_PWM
 | 
			
		||||
#define PB4_OUTPUT_ENABLE			1
 | 
			
		||||
#define PB4_INPUT_ENABLE			0
 | 
			
		||||
 | 
			
		||||
#define PWM_B_CHANNEL_SET()			PWM5_CFG_GPIO_B6()
 | 
			
		||||
#define PWM_B_CHANNEL				5//PWM5
 | 
			
		||||
 | 
			
		||||
#define PWM_W_CHANNEL_SET()			PWM4_CFG_GPIO_B4()
 | 
			
		||||
#define PWM_W_CHANNEL				4//PWM4
 | 
			
		||||
 | 
			
		||||
#define WARM_LIGHT_PWM_CHANNEL		PWM_B_CHANNEL
 | 
			
		||||
#define COOL_LIGHT_PWM_CHANNEL		PWM_W_CHANNEL
 | 
			
		||||
#define WARM_LIGHT_PWM_SET()		PWM_B_CHANNEL_SET()
 | 
			
		||||
#define COOL_LIGHT_PWM_SET()		PWM_W_CHANNEL_SET()
 | 
			
		||||
 | 
			
		||||
#define LED_R						GPIO_PC2
 | 
			
		||||
#define LED_G						GPIO_PC3
 | 
			
		||||
 | 
			
		||||
#define PC2_FUNC					AS_GPIO
 | 
			
		||||
#define PC2_OUTPUT_ENABLE			1
 | 
			
		||||
#define PC2_INPUT_ENABLE			0
 | 
			
		||||
 | 
			
		||||
#define PC3_FUNC					AS_GPIO
 | 
			
		||||
#define PC3_OUTPUT_ENABLE			1
 | 
			
		||||
#define PC3_INPUT_ENABLE			0
 | 
			
		||||
 | 
			
		||||
#define LED_POWER					LED_R
 | 
			
		||||
#define LED_PERMIT					LED_G
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
//UART
 | 
			
		||||
#if	ZBHCI_UART
 | 
			
		||||
	PC2 & PC3 are configured as LED pins
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
//DEBUG
 | 
			
		||||
#if UART_PRINTF_MODE
 | 
			
		||||
	#define	DEBUG_INFO_TX_PIN	    GPIO_PB5//print
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
enum{
 | 
			
		||||
	VK_SW1 = 0x01,
 | 
			
		||||
	VK_SW2 = 0x02
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#define	KB_MAP_NORMAL	{\
 | 
			
		||||
		{VK_SW1,}, \
 | 
			
		||||
		{VK_SW2,}, }
 | 
			
		||||
 | 
			
		||||
#define	KB_MAP_NUM		KB_MAP_NORMAL
 | 
			
		||||
#define	KB_MAP_FN		KB_MAP_NORMAL
 | 
			
		||||
 | 
			
		||||
#define KB_DRIVE_PINS  {NULL }
 | 
			
		||||
#define KB_SCAN_PINS   {BUTTON1,  BUTTON2}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Disable C linkage for C++ Compilers: */
 | 
			
		||||
#if defined(__cplusplus)
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
							
								
								
									
										158
									
								
								board_826x_evk.h
									
									
									
									
									
								
							
							
						
						
									
										158
									
								
								board_826x_evk.h
									
									
									
									
									
								
							@ -1,158 +0,0 @@
 | 
			
		||||
/********************************************************************************************************
 | 
			
		||||
 * @file    board_826x_evk.h
 | 
			
		||||
 *
 | 
			
		||||
 * @brief   This is the header file for board_826x_evk
 | 
			
		||||
 *
 | 
			
		||||
 * @author  Zigbee Group
 | 
			
		||||
 * @date    2021
 | 
			
		||||
 *
 | 
			
		||||
 * @par     Copyright (c) 2021, Telink Semiconductor (Shanghai) Co., Ltd. ("TELINK")
 | 
			
		||||
 *
 | 
			
		||||
 *          Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
 *          you may not use this file except in compliance with the License.
 | 
			
		||||
 *          You may obtain a copy of the License at
 | 
			
		||||
 *
 | 
			
		||||
 *              http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
 *
 | 
			
		||||
 *          Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
 *          distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
 *          WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
 *          See the License for the specific language governing permissions and
 | 
			
		||||
 *          limitations under the License.
 | 
			
		||||
 *******************************************************************************************************/
 | 
			
		||||
 | 
			
		||||
#pragma once
 | 
			
		||||
 | 
			
		||||
/* Enable C linkage for C++ Compilers: */
 | 
			
		||||
#if defined(__cplusplus)
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
//KEY
 | 
			
		||||
#define	BUTTON1 					GPIO_PD2
 | 
			
		||||
#define PD2_FUNC					AS_GPIO
 | 
			
		||||
#define PD2_OUTPUT_ENABLE			0
 | 
			
		||||
#define PD2_INPUT_ENABLE			1
 | 
			
		||||
#define	PULL_WAKEUP_SRC_PD2			PM_PIN_PULLUP_10K
 | 
			
		||||
 | 
			
		||||
#define	BUTTON2 					GPIO_PC7
 | 
			
		||||
#define PC7_FUNC					AS_GPIO
 | 
			
		||||
#define PC7_OUTPUT_ENABLE			0
 | 
			
		||||
#define PC7_INPUT_ENABLE			1
 | 
			
		||||
#define	PULL_WAKEUP_SRC_PC7			PM_PIN_PULLUP_10K
 | 
			
		||||
 | 
			
		||||
//LED
 | 
			
		||||
/***************************************************************
 | 
			
		||||
* LED_R		GPIO_PD5	//D4 -- red			PWM0
 | 
			
		||||
* LED_G		GPIO_PD6	//D2 -- green		PWM1
 | 
			
		||||
* LED_B		GPIO_PB4	//D1 -- blue		PWM4
 | 
			
		||||
* LED_W		GPIO_PD7	//D3 -- white		PWM2
 | 
			
		||||
****************************************************************/
 | 
			
		||||
#if defined COLOR_RGB_SUPPORT && (COLOR_RGB_SUPPORT == 1)
 | 
			
		||||
 | 
			
		||||
#define PD5_FUNC					AS_PWM
 | 
			
		||||
#define PD5_OUTPUT_ENABLE			1
 | 
			
		||||
#define PD5_INPUT_ENABLE			0
 | 
			
		||||
 | 
			
		||||
#define PD6_FUNC					AS_PWM
 | 
			
		||||
#define PD6_OUTPUT_ENABLE			1
 | 
			
		||||
#define PD6_INPUT_ENABLE			0
 | 
			
		||||
 | 
			
		||||
#define PB4_FUNC					AS_PWM
 | 
			
		||||
#define PB4_OUTPUT_ENABLE			1
 | 
			
		||||
#define PB4_INPUT_ENABLE			0
 | 
			
		||||
 | 
			
		||||
#define PWM_R_CHANNEL_SET()			PWM0_CFG_GPIO_D5()
 | 
			
		||||
#define PWM_R_CHANNEL				0//PWM0
 | 
			
		||||
 | 
			
		||||
#define PWM_G_CHANNEL_SET()			PWM1_CFG_GPIO_D6()
 | 
			
		||||
#define PWM_G_CHANNEL				1//PWM1
 | 
			
		||||
 | 
			
		||||
#define PWM_B_CHANNEL_SET()			PWM4_CFG_GPIO_B4()
 | 
			
		||||
#define PWM_B_CHANNEL				4//PWM4
 | 
			
		||||
 | 
			
		||||
#define R_LIGHT_PWM_CHANNEL			PWM_R_CHANNEL
 | 
			
		||||
#define G_LIGHT_PWM_CHANNEL			PWM_G_CHANNEL
 | 
			
		||||
#define B_LIGHT_PWM_CHANNEL			PWM_B_CHANNEL
 | 
			
		||||
#define R_LIGHT_PWM_SET()			PWM_R_CHANNEL_SET()
 | 
			
		||||
#define G_LIGHT_PWM_SET()			PWM_G_CHANNEL_SET()
 | 
			
		||||
#define B_LIGHT_PWM_SET()			PWM_B_CHANNEL_SET()
 | 
			
		||||
 | 
			
		||||
#define LED_W						GPIO_PD7
 | 
			
		||||
 | 
			
		||||
#define PD7_FUNC					AS_GPIO
 | 
			
		||||
#define PD7_OUTPUT_ENABLE			1
 | 
			
		||||
#define PD7_INPUT_ENABLE			0
 | 
			
		||||
 | 
			
		||||
#define LED_POWER					NULL
 | 
			
		||||
#define LED_PERMIT					LED_W
 | 
			
		||||
 | 
			
		||||
#else
 | 
			
		||||
 | 
			
		||||
//PWM configuration, LED_B as warm light, LED_W as cool light.
 | 
			
		||||
#define PB4_FUNC					AS_PWM
 | 
			
		||||
#define PB4_OUTPUT_ENABLE			1
 | 
			
		||||
#define PB4_INPUT_ENABLE			0
 | 
			
		||||
 | 
			
		||||
#define PD7_FUNC					AS_PWM
 | 
			
		||||
#define PD7_OUTPUT_ENABLE			1
 | 
			
		||||
#define PD7_INPUT_ENABLE			0
 | 
			
		||||
 | 
			
		||||
#define PWM_B_CHANNEL_SET()			PWM4_CFG_GPIO_B4()
 | 
			
		||||
#define PWM_B_CHANNEL				4//PWM4
 | 
			
		||||
 | 
			
		||||
#define PWM_W_CHANNEL_SET()			PWM2_CFG_GPIO_D7()
 | 
			
		||||
#define PWM_W_CHANNEL				2//PWM2
 | 
			
		||||
 | 
			
		||||
#define WARM_LIGHT_PWM_CHANNEL		PWM_B_CHANNEL
 | 
			
		||||
#define COOL_LIGHT_PWM_CHANNEL		PWM_W_CHANNEL
 | 
			
		||||
#define WARM_LIGHT_PWM_SET()		PWM_B_CHANNEL_SET()
 | 
			
		||||
#define COOL_LIGHT_PWM_SET()		PWM_W_CHANNEL_SET()
 | 
			
		||||
 | 
			
		||||
#define LED_R						GPIO_PD5
 | 
			
		||||
#define LED_G						GPIO_PD6
 | 
			
		||||
 | 
			
		||||
#define PD5_FUNC					AS_GPIO
 | 
			
		||||
#define PD5_OUTPUT_ENABLE			1
 | 
			
		||||
#define PD5_INPUT_ENABLE			0
 | 
			
		||||
 | 
			
		||||
#define PD6_FUNC					AS_GPIO
 | 
			
		||||
#define PD6_OUTPUT_ENABLE			1
 | 
			
		||||
#define PD6_INPUT_ENABLE			0
 | 
			
		||||
 | 
			
		||||
#define LED_POWER					LED_R
 | 
			
		||||
#define LED_PERMIT					LED_G
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
//UART
 | 
			
		||||
#if ZBHCI_UART
 | 
			
		||||
	#error please configurate uart PIN!!!!!!
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
//DEBUG
 | 
			
		||||
#if UART_PRINTF_MODE
 | 
			
		||||
	#define	DEBUG_INFO_TX_PIN	    GPIO_PC5//print
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
enum{
 | 
			
		||||
	VK_SW1 = 0x01,
 | 
			
		||||
	VK_SW2 = 0x02
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#define	KB_MAP_NORMAL	{\
 | 
			
		||||
		{VK_SW1,}, \
 | 
			
		||||
		{VK_SW2,}, }
 | 
			
		||||
 | 
			
		||||
#define	KB_MAP_NUM		KB_MAP_NORMAL
 | 
			
		||||
#define	KB_MAP_FN		KB_MAP_NORMAL
 | 
			
		||||
 | 
			
		||||
#define KB_DRIVE_PINS  {NULL }
 | 
			
		||||
#define KB_SCAN_PINS   {BUTTON1,  BUTTON2}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Disable C linkage for C++ Compilers: */
 | 
			
		||||
#if defined(__cplusplus)
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
@ -1,170 +0,0 @@
 | 
			
		||||
/********************************************************************************************************
 | 
			
		||||
 * @file    board_8278_dongle.h
 | 
			
		||||
 *
 | 
			
		||||
 * @brief   This is the header file for board_8278_dongle
 | 
			
		||||
 *
 | 
			
		||||
 * @author  Zigbee Group
 | 
			
		||||
 * @date    2021
 | 
			
		||||
 *
 | 
			
		||||
 * @par     Copyright (c) 2021, Telink Semiconductor (Shanghai) Co., Ltd. ("TELINK")
 | 
			
		||||
 *
 | 
			
		||||
 *          Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
 *          you may not use this file except in compliance with the License.
 | 
			
		||||
 *          You may obtain a copy of the License at
 | 
			
		||||
 *
 | 
			
		||||
 *              http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
 *
 | 
			
		||||
 *          Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
 *          distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
 *          WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
 *          See the License for the specific language governing permissions and
 | 
			
		||||
 *          limitations under the License.
 | 
			
		||||
 *******************************************************************************************************/
 | 
			
		||||
 | 
			
		||||
#pragma once
 | 
			
		||||
 | 
			
		||||
/* Enable C linkage for C++ Compilers: */
 | 
			
		||||
#if defined(__cplusplus)
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*******************************************************************************************************
 | 
			
		||||
*********************8278Dongle with 48 Pins: Start*****************************************************
 | 
			
		||||
*******************************************************************************************************/
 | 
			
		||||
//KEY
 | 
			
		||||
#define	BUTTON1 					GPIO_PD6
 | 
			
		||||
#define PD6_FUNC					AS_GPIO
 | 
			
		||||
#define PD6_OUTPUT_ENABLE			0
 | 
			
		||||
#define PD6_INPUT_ENABLE			1
 | 
			
		||||
#define	PULL_WAKEUP_SRC_PD6			PM_PIN_PULLUP_10K
 | 
			
		||||
 | 
			
		||||
#define	BUTTON2 					GPIO_PD5
 | 
			
		||||
#define PD5_FUNC					AS_GPIO
 | 
			
		||||
#define PD5_OUTPUT_ENABLE			0
 | 
			
		||||
#define PD5_INPUT_ENABLE			1
 | 
			
		||||
#define	PULL_WAKEUP_SRC_PD5			PM_PIN_PULLUP_10K
 | 
			
		||||
 | 
			
		||||
//LED
 | 
			
		||||
/***************************************************************
 | 
			
		||||
* LED_R			GPIO_PA3	//D2 -- red			PWM1
 | 
			
		||||
* LED_G			GPIO_PA2	//D1 -- green		PWM0
 | 
			
		||||
* LED_B			GPIO_PB0	//D4 -- blue		PWM3
 | 
			
		||||
* LED_W			GPIO_PB1	//D5 -- white		PWM4
 | 
			
		||||
* LED_Y			GPIO_PA4	//D3 -- yellow		PWM2
 | 
			
		||||
****************************************************************/
 | 
			
		||||
#if defined COLOR_RGB_SUPPORT && (COLOR_RGB_SUPPORT == 1)
 | 
			
		||||
 | 
			
		||||
#define LED_R						GPIO_PA3	//D2 -- red			PWM1
 | 
			
		||||
#define LED_G						GPIO_PA2	//D1 -- green		PWM0
 | 
			
		||||
#define LED_B						GPIO_PB0	//D4 -- blue		PWM3
 | 
			
		||||
 | 
			
		||||
#define PWM_R_CHANNEL				1//PWM1
 | 
			
		||||
#define PWM_R_CHANNEL_SET()			do{	\
 | 
			
		||||
										gpio_set_func(LED_R, AS_PWM1); 		\
 | 
			
		||||
									}while(0)
 | 
			
		||||
 | 
			
		||||
#define PWM_G_CHANNEL				0//PWM0
 | 
			
		||||
#define PWM_G_CHANNEL_SET()			do{	\
 | 
			
		||||
										gpio_set_func(LED_G, AS_PWM0); 		\
 | 
			
		||||
									}while(0)
 | 
			
		||||
 | 
			
		||||
#define PWM_B_CHANNEL				3//PWM3
 | 
			
		||||
#define PWM_B_CHANNEL_SET()			do{	\
 | 
			
		||||
										gpio_set_func(LED_B, AS_PWM3); 		\
 | 
			
		||||
									}while(0)
 | 
			
		||||
 | 
			
		||||
#define R_LIGHT_PWM_CHANNEL			PWM_R_CHANNEL
 | 
			
		||||
#define G_LIGHT_PWM_CHANNEL			PWM_G_CHANNEL
 | 
			
		||||
#define B_LIGHT_PWM_CHANNEL			PWM_B_CHANNEL
 | 
			
		||||
#define R_LIGHT_PWM_SET()			PWM_R_CHANNEL_SET()
 | 
			
		||||
#define G_LIGHT_PWM_SET()			PWM_G_CHANNEL_SET()
 | 
			
		||||
#define B_LIGHT_PWM_SET()			PWM_B_CHANNEL_SET()
 | 
			
		||||
 | 
			
		||||
//LED_Y and LED_W as GPIO.
 | 
			
		||||
#define LED_Y						GPIO_PA4
 | 
			
		||||
#define LED_W						GPIO_PB1
 | 
			
		||||
 | 
			
		||||
#define PA4_FUNC					AS_GPIO
 | 
			
		||||
#define PA4_OUTPUT_ENABLE			1
 | 
			
		||||
#define PA4_INPUT_ENABLE			0
 | 
			
		||||
 | 
			
		||||
#define PB1_FUNC					AS_GPIO
 | 
			
		||||
#define PB1_OUTPUT_ENABLE			1
 | 
			
		||||
#define PB1_INPUT_ENABLE			0
 | 
			
		||||
 | 
			
		||||
#define LED_POWER					LED_W
 | 
			
		||||
#define LED_PERMIT					LED_Y
 | 
			
		||||
 | 
			
		||||
#else
 | 
			
		||||
 | 
			
		||||
//PWM configuration, LED_Y as warm light, LED_W as cool light.
 | 
			
		||||
#define LED_Y						GPIO_PA4	//D3 -- yellow		PWM2
 | 
			
		||||
#define LED_W						GPIO_PB1	//D5 -- white		PWM4
 | 
			
		||||
 | 
			
		||||
#define PWM_Y_CHANNEL				2//PWM2
 | 
			
		||||
#define PWM_Y_CHANNEL_SET()			do{	\
 | 
			
		||||
										gpio_set_func(LED_Y, AS_PWM2); 		\
 | 
			
		||||
									}while(0)
 | 
			
		||||
 | 
			
		||||
#define PWM_W_CHANNEL				4//PWM4
 | 
			
		||||
#define PWM_W_CHANNEL_SET()			do{	\
 | 
			
		||||
										gpio_set_func(LED_W, AS_PWM4); 		\
 | 
			
		||||
									}while(0)
 | 
			
		||||
 | 
			
		||||
#define WARM_LIGHT_PWM_CHANNEL		PWM_Y_CHANNEL
 | 
			
		||||
#define COOL_LIGHT_PWM_CHANNEL		PWM_W_CHANNEL
 | 
			
		||||
#define WARM_LIGHT_PWM_SET()		PWM_Y_CHANNEL_SET()
 | 
			
		||||
#define COOL_LIGHT_PWM_SET()		PWM_W_CHANNEL_SET()
 | 
			
		||||
 | 
			
		||||
//LED_R and LED_G as GPIO.
 | 
			
		||||
#define LED_R						GPIO_PA3
 | 
			
		||||
#define LED_G						GPIO_PA2
 | 
			
		||||
 | 
			
		||||
#define PA3_FUNC					AS_GPIO
 | 
			
		||||
#define PA3_OUTPUT_ENABLE			1
 | 
			
		||||
#define PA3_INPUT_ENABLE			0
 | 
			
		||||
 | 
			
		||||
#define PA2_FUNC					AS_GPIO
 | 
			
		||||
#define PA2_OUTPUT_ENABLE			1
 | 
			
		||||
#define PA2_INPUT_ENABLE			0
 | 
			
		||||
 | 
			
		||||
#define LED_POWER					LED_R
 | 
			
		||||
#define LED_PERMIT					LED_G
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// UART
 | 
			
		||||
#if ZBHCI_UART
 | 
			
		||||
	#define UART_TX_PIN         	UART_TX_PD7
 | 
			
		||||
	#define UART_RX_PIN         	UART_RX_PA0
 | 
			
		||||
 | 
			
		||||
	#define UART_PIN_CFG()			uart_gpio_set(UART_TX_PIN, UART_RX_PIN);// uart tx/rx pin set
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// DEBUG
 | 
			
		||||
#if UART_PRINTF_MODE
 | 
			
		||||
	#define	DEBUG_INFO_TX_PIN	    GPIO_PC6//print
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
enum{
 | 
			
		||||
	VK_SW1 = 0x01,
 | 
			
		||||
	VK_SW2 = 0x02
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#define	KB_MAP_NORMAL	{\
 | 
			
		||||
		{VK_SW1,}, \
 | 
			
		||||
		{VK_SW2,}, }
 | 
			
		||||
 | 
			
		||||
#define	KB_MAP_NUM		KB_MAP_NORMAL
 | 
			
		||||
#define	KB_MAP_FN		KB_MAP_NORMAL
 | 
			
		||||
 | 
			
		||||
#define KB_DRIVE_PINS  {NULL }
 | 
			
		||||
#define KB_SCAN_PINS   {BUTTON1,  BUTTON2}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Disable C linkage for C++ Compilers: */
 | 
			
		||||
#if defined(__cplusplus)
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
							
								
								
									
										124
									
								
								board_8278_evk.h
									
									
									
									
									
								
							
							
						
						
									
										124
									
								
								board_8278_evk.h
									
									
									
									
									
								
							@ -1,124 +0,0 @@
 | 
			
		||||
/********************************************************************************************************
 | 
			
		||||
 * @file    board_8278_evk.h
 | 
			
		||||
 *
 | 
			
		||||
 * @brief   This is the header file for board_8278_evk
 | 
			
		||||
 *
 | 
			
		||||
 * @author  Zigbee Group
 | 
			
		||||
 * @date    2021
 | 
			
		||||
 *
 | 
			
		||||
 * @par     Copyright (c) 2021, Telink Semiconductor (Shanghai) Co., Ltd. ("TELINK")
 | 
			
		||||
 *
 | 
			
		||||
 *          Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
 *          you may not use this file except in compliance with the License.
 | 
			
		||||
 *          You may obtain a copy of the License at
 | 
			
		||||
 *
 | 
			
		||||
 *              http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
 *
 | 
			
		||||
 *          Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
 *          distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
 *          WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
 *          See the License for the specific language governing permissions and
 | 
			
		||||
 *          limitations under the License.
 | 
			
		||||
 *******************************************************************************************************/
 | 
			
		||||
 | 
			
		||||
#pragma once
 | 
			
		||||
 | 
			
		||||
/* Enable C linkage for C++ Compilers: */
 | 
			
		||||
#if defined(__cplusplus)
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// BUTTON
 | 
			
		||||
#define BUTTON1               		GPIO_PB2
 | 
			
		||||
#define PB2_FUNC			  		AS_GPIO
 | 
			
		||||
#define PB2_OUTPUT_ENABLE	  		0
 | 
			
		||||
#define PB2_INPUT_ENABLE	  		1
 | 
			
		||||
#define	PULL_WAKEUP_SRC_PB2	  		PM_PIN_PULLUP_10K
 | 
			
		||||
 | 
			
		||||
#define BUTTON2               		GPIO_PB3
 | 
			
		||||
#define PB3_FUNC			  		AS_GPIO
 | 
			
		||||
#define PB3_OUTPUT_ENABLE	  		0
 | 
			
		||||
#define PB3_INPUT_ENABLE	  		1
 | 
			
		||||
#define	PULL_WAKEUP_SRC_PB3	  		PM_PIN_PULLUP_10K
 | 
			
		||||
 | 
			
		||||
//LED
 | 
			
		||||
/***************************************************************
 | 
			
		||||
* LED_R			GPIO_PD0	//D5 -- red
 | 
			
		||||
* LED_G			GPIO_PD4	//D3 -- green
 | 
			
		||||
* LED_B			GPIO_PD5	//D2 -- blue
 | 
			
		||||
* LED_W			GPIO_PD3	//D4 -- yellow
 | 
			
		||||
****************************************************************/
 | 
			
		||||
#if defined COLOR_RGB_SUPPORT && (COLOR_RGB_SUPPORT == 1)
 | 
			
		||||
 | 
			
		||||
#error "GPIO_PD0 can't be configured as PWM!"
 | 
			
		||||
 | 
			
		||||
#else
 | 
			
		||||
 | 
			
		||||
//PWM configuration, LED_B as warm light, LED_W as cool light.
 | 
			
		||||
#define LED_B						GPIO_PD2	//D2 -- blue		PWM3
 | 
			
		||||
#define LED_W						GPIO_PD4	//D4 -- white		PWM2_N
 | 
			
		||||
 | 
			
		||||
#define PWM_W_CHANNEL				2	//PWM1_N
 | 
			
		||||
#define PWM_W_CHANNEL_SET()			do{ \
 | 
			
		||||
										gpio_set_func(LED_W, AS_PWM2_N); \
 | 
			
		||||
										drv_pwm_n_invert(PWM_W_CHANNEL); \
 | 
			
		||||
									}while(0)
 | 
			
		||||
 | 
			
		||||
#define PWM_B_CHANNEL				3	//PWM0
 | 
			
		||||
#define PWM_B_CHANNEL_SET()			do{ \
 | 
			
		||||
										gpio_set_func(LED_B, AS_PWM3); \
 | 
			
		||||
									}while(0)
 | 
			
		||||
 | 
			
		||||
#define WARM_LIGHT_PWM_CHANNEL		PWM_B_CHANNEL
 | 
			
		||||
#define COOL_LIGHT_PWM_CHANNEL		PWM_W_CHANNEL
 | 
			
		||||
#define WARM_LIGHT_PWM_SET()		PWM_B_CHANNEL_SET()
 | 
			
		||||
#define COOL_LIGHT_PWM_SET()		PWM_W_CHANNEL_SET()
 | 
			
		||||
 | 
			
		||||
//LED_R and LED_G as GPIO.
 | 
			
		||||
#define LED_R						GPIO_PD5
 | 
			
		||||
#define LED_G						GPIO_PD3
 | 
			
		||||
 | 
			
		||||
#define PD3_FUNC					AS_GPIO
 | 
			
		||||
#define PD3_OUTPUT_ENABLE			1
 | 
			
		||||
#define PD3_INPUT_ENABLE			0
 | 
			
		||||
 | 
			
		||||
#define PD5_FUNC					AS_GPIO
 | 
			
		||||
#define PD5_OUTPUT_ENABLE			1
 | 
			
		||||
#define PD5_INPUT_ENABLE			0
 | 
			
		||||
 | 
			
		||||
#define LED_POWER					LED_R
 | 
			
		||||
#define LED_PERMIT					LED_G
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// UART
 | 
			
		||||
#if ZBHCI_UART
 | 
			
		||||
	#error please configurate uart PIN!!!!!!
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// DEBUG
 | 
			
		||||
#if UART_PRINTF_MODE
 | 
			
		||||
	#define	DEBUG_INFO_TX_PIN	    GPIO_PA2//print
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
enum{
 | 
			
		||||
	VK_SW1 = 0x01,
 | 
			
		||||
	VK_SW2 = 0x02
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#define	KB_MAP_NORMAL	{\
 | 
			
		||||
		{VK_SW1,}, \
 | 
			
		||||
		{VK_SW2,}, }
 | 
			
		||||
 | 
			
		||||
#define	KB_MAP_NUM		KB_MAP_NORMAL
 | 
			
		||||
#define	KB_MAP_FN		KB_MAP_NORMAL
 | 
			
		||||
 | 
			
		||||
#define KB_DRIVE_PINS  {NULL }
 | 
			
		||||
#define KB_SCAN_PINS   {BUTTON1,  BUTTON2}
 | 
			
		||||
 | 
			
		||||
/* Disable C linkage for C++ Compilers: */
 | 
			
		||||
#if defined(__cplusplus)
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
@ -1,134 +0,0 @@
 | 
			
		||||
/********************************************************************************************************
 | 
			
		||||
 * @file    board_9518_dongle.h
 | 
			
		||||
 *
 | 
			
		||||
 * @brief   This is the header file for board_9518_dongle
 | 
			
		||||
 *
 | 
			
		||||
 * @author  Zigbee Group
 | 
			
		||||
 * @date    2021
 | 
			
		||||
 *
 | 
			
		||||
 * @par     Copyright (c) 2021, Telink Semiconductor (Shanghai) Co., Ltd. ("TELINK")
 | 
			
		||||
 *
 | 
			
		||||
 *          Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
 *          you may not use this file except in compliance with the License.
 | 
			
		||||
 *          You may obtain a copy of the License at
 | 
			
		||||
 *
 | 
			
		||||
 *              http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
 *
 | 
			
		||||
 *          Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
 *          distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
 *          WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
 *          See the License for the specific language governing permissions and
 | 
			
		||||
 *          limitations under the License.
 | 
			
		||||
 *******************************************************************************************************/
 | 
			
		||||
 | 
			
		||||
#pragma once
 | 
			
		||||
 | 
			
		||||
/* Enable C linkage for C++ Compilers: */
 | 
			
		||||
#if defined(__cplusplus)
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// BUTTON
 | 
			
		||||
#define BUTTON1               		GPIO_PB2//SW2
 | 
			
		||||
#define PB2_FUNC			  		AS_GPIO
 | 
			
		||||
#define PB2_OUTPUT_ENABLE	  		0
 | 
			
		||||
#define PB2_INPUT_ENABLE	  		1
 | 
			
		||||
#define	PULL_WAKEUP_SRC_PB2	  		GPIO_PIN_PULLUP_10K
 | 
			
		||||
 | 
			
		||||
#define BUTTON2               		GPIO_PB3//SW7
 | 
			
		||||
#define PB3_FUNC			  		AS_GPIO
 | 
			
		||||
#define PB3_OUTPUT_ENABLE	  		0
 | 
			
		||||
#define PB3_INPUT_ENABLE	  		1
 | 
			
		||||
#define	PULL_WAKEUP_SRC_PB3	  		GPIO_PIN_PULLUP_10K
 | 
			
		||||
 | 
			
		||||
// LED
 | 
			
		||||
/***************************************************************
 | 
			
		||||
* LED_R				GPIO_PB4	//D9  -- red		PWM0
 | 
			
		||||
* LED_G				GPIO_PB0	//D6  -- green		PWM5
 | 
			
		||||
* LED_B				GPIO_PB7	//D8  -- blue		PWM2
 | 
			
		||||
* LED_Y				GPIO_PB5	//D7  -- yellow		PWM1
 | 
			
		||||
*
 | 
			
		||||
* LED_B2			GPIO_PB1	//D10 -- blue		PWM3
 | 
			
		||||
* LED_B3			GPIO_PE3	//D11 -- blue		PWM0
 | 
			
		||||
****************************************************************/
 | 
			
		||||
#if defined COLOR_RGB_SUPPORT && (COLOR_RGB_SUPPORT == 1)
 | 
			
		||||
	#error "To do!"
 | 
			
		||||
#else
 | 
			
		||||
//PWM configuration, LED_R as warm light, LED_B1 as cool light.
 | 
			
		||||
#define LED_R						GPIO_PB4
 | 
			
		||||
#define LED_B						GPIO_PB7
 | 
			
		||||
 | 
			
		||||
#define PWM_R_CHANNEL				0	//PWM0
 | 
			
		||||
#define PWM_R_CHANNEL_SET()			do{\
 | 
			
		||||
										pwm_set_pin(LED_R); \
 | 
			
		||||
									}while(0)
 | 
			
		||||
 | 
			
		||||
#define PWM_B_CHANNEL				2	//PWM2
 | 
			
		||||
#define PWM_B_CHANNEL_SET()			do{\
 | 
			
		||||
										pwm_set_pin(LED_B); \
 | 
			
		||||
									}while(0)
 | 
			
		||||
 | 
			
		||||
#define WARM_LIGHT_PWM_CHANNEL		PWM_R_CHANNEL
 | 
			
		||||
#define COOL_LIGHT_PWM_CHANNEL		PWM_B_CHANNEL
 | 
			
		||||
#define WARM_LIGHT_PWM_SET()		PWM_R_CHANNEL_SET()
 | 
			
		||||
#define COOL_LIGHT_PWM_SET()		PWM_B_CHANNEL_SET()
 | 
			
		||||
 | 
			
		||||
//Others as GPIO.
 | 
			
		||||
#define LED_Y						GPIO_PB5
 | 
			
		||||
#define LED_G						GPIO_PB0
 | 
			
		||||
#define LED_B2						GPIO_PB1
 | 
			
		||||
#define LED_B3						GPIO_PE3
 | 
			
		||||
 | 
			
		||||
#define PB5_FUNC					AS_GPIO
 | 
			
		||||
#define PB5_OUTPUT_ENABLE			1
 | 
			
		||||
#define PB5_INPUT_ENABLE			0
 | 
			
		||||
 | 
			
		||||
#define PB0_FUNC					AS_GPIO
 | 
			
		||||
#define PB0_OUTPUT_ENABLE			1
 | 
			
		||||
#define PB0_INPUT_ENABLE			0
 | 
			
		||||
 | 
			
		||||
#define PB1_FUNC					AS_GPIO
 | 
			
		||||
#define PB1_OUTPUT_ENABLE			1
 | 
			
		||||
#define PB1_INPUT_ENABLE			0
 | 
			
		||||
 | 
			
		||||
#define PE3_FUNC					AS_GPIO
 | 
			
		||||
#define PE3_OUTPUT_ENABLE			1
 | 
			
		||||
#define PE3_INPUT_ENABLE			0
 | 
			
		||||
 | 
			
		||||
#define LED_POWER					LED_Y
 | 
			
		||||
#define LED_PERMIT					LED_G
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// UART
 | 
			
		||||
#if ZBHCI_UART
 | 
			
		||||
	#error please configurate uart PIN!!!!!!
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// DEBUG
 | 
			
		||||
#if UART_PRINTF_MODE
 | 
			
		||||
	#define	DEBUG_INFO_TX_PIN	    GPIO_PC1//print
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
enum{
 | 
			
		||||
	VK_SW1 = 0x01,
 | 
			
		||||
	VK_SW2 = 0x02,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#define	KB_MAP_NORMAL	{\
 | 
			
		||||
		{VK_SW1,}, \
 | 
			
		||||
		{VK_SW2,}, }
 | 
			
		||||
 | 
			
		||||
#define	KB_MAP_NUM		KB_MAP_NORMAL
 | 
			
		||||
#define	KB_MAP_FN		KB_MAP_NORMAL
 | 
			
		||||
 | 
			
		||||
#define KB_DRIVE_PINS  	{NULL}
 | 
			
		||||
#define KB_SCAN_PINS   	{BUTTON1, BUTTON2}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Disable C linkage for C++ Compilers: */
 | 
			
		||||
#if defined(__cplusplus)
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
							
								
								
									
										136
									
								
								board_9518_evk.h
									
									
									
									
									
								
							
							
						
						
									
										136
									
								
								board_9518_evk.h
									
									
									
									
									
								
							@ -1,136 +0,0 @@
 | 
			
		||||
/********************************************************************************************************
 | 
			
		||||
 * @file    board_9518_evk.h
 | 
			
		||||
 *
 | 
			
		||||
 * @brief   This is the header file for board_9518_evk
 | 
			
		||||
 *
 | 
			
		||||
 * @author  Zigbee Group
 | 
			
		||||
 * @date    2021
 | 
			
		||||
 *
 | 
			
		||||
 * @par     Copyright (c) 2021, Telink Semiconductor (Shanghai) Co., Ltd. ("TELINK")
 | 
			
		||||
 *
 | 
			
		||||
 *          Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
 *          you may not use this file except in compliance with the License.
 | 
			
		||||
 *          You may obtain a copy of the License at
 | 
			
		||||
 *
 | 
			
		||||
 *              http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
 *
 | 
			
		||||
 *          Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
 *          distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
 *          WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
 *          See the License for the specific language governing permissions and
 | 
			
		||||
 *          limitations under the License.
 | 
			
		||||
 *******************************************************************************************************/
 | 
			
		||||
 | 
			
		||||
#pragma once
 | 
			
		||||
 | 
			
		||||
/* Enable C linkage for C++ Compilers: */
 | 
			
		||||
#if defined(__cplusplus)
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// BUTTON
 | 
			
		||||
#define BUTTON1               		GPIO_PC2
 | 
			
		||||
#define PC2_FUNC			  		AS_GPIO
 | 
			
		||||
#define PC2_OUTPUT_ENABLE	  		0
 | 
			
		||||
#define PC2_INPUT_ENABLE	  		1
 | 
			
		||||
#define	PULL_WAKEUP_SRC_PC2	  		GPIO_PIN_PULLDOWN_100K
 | 
			
		||||
 | 
			
		||||
#define BUTTON2               		GPIO_PC0
 | 
			
		||||
#define PC0_FUNC			  		AS_GPIO
 | 
			
		||||
#define PC0_OUTPUT_ENABLE	  		0
 | 
			
		||||
#define PC0_INPUT_ENABLE	  		1
 | 
			
		||||
#define	PULL_WAKEUP_SRC_PC0	  		GPIO_PIN_PULLDOWN_100K
 | 
			
		||||
 | 
			
		||||
#define BUTTON3               		GPIO_PC3
 | 
			
		||||
#define PC3_FUNC			  		AS_GPIO
 | 
			
		||||
#define PC3_OUTPUT_ENABLE	  		0
 | 
			
		||||
#define PC3_INPUT_ENABLE	  		1
 | 
			
		||||
#define	PULL_WAKEUP_SRC_PC3	  		GPIO_PIN_PULLUP_10K
 | 
			
		||||
 | 
			
		||||
#define BUTTON4               		GPIO_PC1
 | 
			
		||||
#define PC1_FUNC			  		AS_GPIO
 | 
			
		||||
#define PC1_OUTPUT_ENABLE	  		0
 | 
			
		||||
#define PC1_INPUT_ENABLE	  		1
 | 
			
		||||
#define	PULL_WAKEUP_SRC_PC1	  		GPIO_PIN_PULLUP_10K
 | 
			
		||||
 | 
			
		||||
// LED
 | 
			
		||||
/***************************************************************
 | 
			
		||||
* LED_R			GPIO_PB7	//D4 -- red
 | 
			
		||||
* LED_G			GPIO_PB5	//D2 -- green
 | 
			
		||||
* LED_B			GPIO_PB4	//D1 -- blue
 | 
			
		||||
* LED_W			GPIO_PB6	//D3 -- white
 | 
			
		||||
****************************************************************/
 | 
			
		||||
#if defined COLOR_RGB_SUPPORT && (COLOR_RGB_SUPPORT == 1)
 | 
			
		||||
	#error "To do!"
 | 
			
		||||
#else
 | 
			
		||||
//PWM configuration, LED_R as warm light, LED_B as cool light.
 | 
			
		||||
#define LED_R						GPIO_PB7
 | 
			
		||||
#define LED_B						GPIO_PB4
 | 
			
		||||
 | 
			
		||||
#define PWM_R_CHANNEL				2	//PWM2
 | 
			
		||||
#define PWM_R_CHANNEL_SET()			do{\
 | 
			
		||||
										pwm_set_pin(LED_R); \
 | 
			
		||||
									}while(0)
 | 
			
		||||
 | 
			
		||||
#define PWM_B_CHANNEL				0	//PWM0
 | 
			
		||||
#define PWM_B_CHANNEL_SET()			do{\
 | 
			
		||||
										pwm_set_pin(LED_B); \
 | 
			
		||||
									}while(0)
 | 
			
		||||
 | 
			
		||||
#define WARM_LIGHT_PWM_CHANNEL		PWM_R_CHANNEL
 | 
			
		||||
#define COOL_LIGHT_PWM_CHANNEL		PWM_B_CHANNEL
 | 
			
		||||
#define WARM_LIGHT_PWM_SET()		PWM_R_CHANNEL_SET()
 | 
			
		||||
#define COOL_LIGHT_PWM_SET()		PWM_B_CHANNEL_SET()
 | 
			
		||||
 | 
			
		||||
//LED_W and LED_G as GPIO.
 | 
			
		||||
#define LED_W						GPIO_PB6
 | 
			
		||||
#define LED_G						GPIO_PB5
 | 
			
		||||
 | 
			
		||||
#define PB6_FUNC					AS_GPIO
 | 
			
		||||
#define PB6_OUTPUT_ENABLE			1
 | 
			
		||||
#define PB6_INPUT_ENABLE			0
 | 
			
		||||
 | 
			
		||||
#define PB5_FUNC					AS_GPIO
 | 
			
		||||
#define PB5_OUTPUT_ENABLE			1
 | 
			
		||||
#define PB5_INPUT_ENABLE			0
 | 
			
		||||
 | 
			
		||||
#define LED_POWER					LED_W
 | 
			
		||||
#define LED_PERMIT					LED_G
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// UART
 | 
			
		||||
#if ZBHCI_UART
 | 
			
		||||
	#error please configurate uart PIN!!!!!!
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// DEBUG
 | 
			
		||||
#if UART_PRINTF_MODE
 | 
			
		||||
	#define	DEBUG_INFO_TX_PIN	    GPIO_PC7//print
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
enum{
 | 
			
		||||
	VK_SW1 = 0x01,
 | 
			
		||||
	VK_SW2 = 0x02,
 | 
			
		||||
	VK_SW3 = 0x03,
 | 
			
		||||
	VK_SW4 = 0x04
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#define	KB_MAP_NORMAL	{\
 | 
			
		||||
		{VK_SW1, VK_SW3}, \
 | 
			
		||||
		{VK_SW2, VK_SW4}, }
 | 
			
		||||
 | 
			
		||||
#define	KB_MAP_NUM		KB_MAP_NORMAL
 | 
			
		||||
#define	KB_MAP_FN		KB_MAP_NORMAL
 | 
			
		||||
 | 
			
		||||
#define KB_DRIVE_PINS  	{GPIO_PC2, GPIO_PC0}
 | 
			
		||||
#define KB_SCAN_PINS   	{GPIO_PC3, GPIO_PC1}
 | 
			
		||||
 | 
			
		||||
#define	KB_LINE_MODE		0
 | 
			
		||||
#define	KB_LINE_HIGH_VALID	0
 | 
			
		||||
 | 
			
		||||
/* Disable C linkage for C++ Compilers: */
 | 
			
		||||
#if defined(__cplusplus)
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
							
								
								
									
										142
									
								
								board_glc002p.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										142
									
								
								board_glc002p.h
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,142 @@
 | 
			
		||||
/********************************************************************************************************
 | 
			
		||||
 * @file    board_glc002p.h
 | 
			
		||||
 *
 | 
			
		||||
 * @brief   This is the header file for mini5in1 glc002p
 | 
			
		||||
 *
 | 
			
		||||
 * @author  Zigbee Group
 | 
			
		||||
 * @date    2021
 | 
			
		||||
 *
 | 
			
		||||
 * @par     Copyright (c) 2021, Telink Semiconductor (Shanghai) Co., Ltd. ("TELINK")
 | 
			
		||||
 *
 | 
			
		||||
 *          Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
 *          you may not use this file except in compliance with the License.
 | 
			
		||||
 *          You may obtain a copy of the License at
 | 
			
		||||
 *
 | 
			
		||||
 *              http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
 *
 | 
			
		||||
 *          Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
 *          distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
 *          WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
 *          See the License for the specific language governing permissions and
 | 
			
		||||
 *          limitations under the License.
 | 
			
		||||
 *******************************************************************************************************/
 | 
			
		||||
 | 
			
		||||
#pragma once
 | 
			
		||||
 | 
			
		||||
/* Enable C linkage for C++ Compilers: */
 | 
			
		||||
#if defined(__cplusplus)
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/*******************************************************************************************************
 | 
			
		||||
*********************TLSR8258F512ET32 32 Pins: Start*****************************************************
 | 
			
		||||
*******************************************************************************************************/
 | 
			
		||||
 // Option Button
 | 
			
		||||
#define	BUTTON_OPT 					GPIO_PB7
 | 
			
		||||
#define PB7_FUNC					AS_GPIO
 | 
			
		||||
#define PB7_OUTPUT_ENABLE			0
 | 
			
		||||
#define PB7_INPUT_ENABLE			1
 | 
			
		||||
#define	PULL_WAKEUP_SRC_PB7			PM_PIN_PULLUP_10K
 | 
			
		||||
 | 
			
		||||
// Factory reset button
 | 
			
		||||
#define	BUTTON_RESET 				GPIO_PC0 
 | 
			
		||||
#define PC0_FUNC					AS_GPIO
 | 
			
		||||
#define PC0_OUTPUT_ENABLE			0
 | 
			
		||||
#define PC0_INPUT_ENABLE			1
 | 
			
		||||
#define	PULL_WAKEUP_SRC_PC0			PM_PIN_PULLUP_10K
 | 
			
		||||
 | 
			
		||||
// LED load Output Mapping
 | 
			
		||||
#define LED_B						GPIO_PC2	//		PWM0
 | 
			
		||||
#define LED_G						GPIO_PC3	//		PWM1
 | 
			
		||||
#define LED_R						GPIO_PC4	//		PWM2
 | 
			
		||||
#define LED_C						GPIO_PD2	//		PWM3
 | 
			
		||||
#define LED_W						GPIO_PB4	//		PWM4
 | 
			
		||||
 | 
			
		||||
#define PWM_B_CHANNEL				0//PWM0
 | 
			
		||||
#define PWM_B_CHANNEL_SET()			do{	\
 | 
			
		||||
										gpio_set_func(LED_B, AS_PWM0); \
 | 
			
		||||
									}while(0)
 | 
			
		||||
 | 
			
		||||
#define PWM_G_CHANNEL				1//PWM1
 | 
			
		||||
#define PWM_G_CHANNEL_SET()			do{	\
 | 
			
		||||
										gpio_set_func(LED_G, AS_PWM1); 	\
 | 
			
		||||
									}while(0)
 | 
			
		||||
 | 
			
		||||
#define PWM_R_CHANNEL				2//PWM2
 | 
			
		||||
#define PWM_R_CHANNEL_SET()			do{	\
 | 
			
		||||
										gpio_set_func(LED_R, AS_PWM2); \
 | 
			
		||||
									}while(0)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define PWM_C_CHANNEL				3//PWM3
 | 
			
		||||
#define PWM_C_CHANNEL_SET()			do{	\
 | 
			
		||||
										gpio_set_func(LED_C, AS_PWM3); \
 | 
			
		||||
									}while(0)
 | 
			
		||||
 | 
			
		||||
#define PWM_W_CHANNEL				4//PWM4
 | 
			
		||||
#define PWM_W_CHANNEL_SET()			do{	\
 | 
			
		||||
										gpio_set_func(LED_W, AS_PWM4); \
 | 
			
		||||
									}while(0)
 | 
			
		||||
 | 
			
		||||
#define R_LIGHT_PWM_CHANNEL			PWM_R_CHANNEL
 | 
			
		||||
#define G_LIGHT_PWM_CHANNEL			PWM_G_CHANNEL
 | 
			
		||||
#define B_LIGHT_PWM_CHANNEL			PWM_B_CHANNEL
 | 
			
		||||
#define COOL_LIGHT_PWM_CHANNEL		PWM_C_CHANNEL
 | 
			
		||||
#define WARM_LIGHT_PWM_CHANNEL		PWM_W_CHANNEL
 | 
			
		||||
 | 
			
		||||
#define R_LIGHT_PWM_SET()			PWM_R_CHANNEL_SET()
 | 
			
		||||
#define G_LIGHT_PWM_SET()			PWM_G_CHANNEL_SET()
 | 
			
		||||
#define B_LIGHT_PWM_SET()			PWM_B_CHANNEL_SET()
 | 
			
		||||
#define COOL_LIGHT_PWM_SET()		PWM_C_CHANNEL_SET()
 | 
			
		||||
#define WARM_LIGHT_PWM_SET()		PWM_W_CHANNEL_SET()
 | 
			
		||||
 | 
			
		||||
// On-Board LED Definitions for Mini 5in1
 | 
			
		||||
#define OB_LED_R					GPIO_PA0
 | 
			
		||||
#define PA0_FUNC					AS_GPIO
 | 
			
		||||
#define PA0_OUTPUT_ENABLE			1
 | 
			
		||||
#define PA0_INPUT_ENABLE			0
 | 
			
		||||
 | 
			
		||||
#define OB_LED_G					GPIO_PA1
 | 
			
		||||
#define PA1_FUNC					AS_GPIO
 | 
			
		||||
#define PA1_OUTPUT_ENABLE			1
 | 
			
		||||
#define PA1_INPUT_ENABLE			0
 | 
			
		||||
 | 
			
		||||
#define OB_LED_B					GPIO_PB1
 | 
			
		||||
#define PB1_FUNC					AS_GPIO
 | 
			
		||||
#define PB1_OUTPUT_ENABLE			1
 | 
			
		||||
#define PB1_INPUT_ENABLE			0
 | 
			
		||||
 | 
			
		||||
#define LED_STATUS_R				OB_LED_R
 | 
			
		||||
#define LED_STATUS_G				OB_LED_G
 | 
			
		||||
#define LED_STATUS_B				OB_LED_B
 | 
			
		||||
 | 
			
		||||
// UART
 | 
			
		||||
#if ZBHCI_UART
 | 
			
		||||
	#error please configure the uart PIN!!!!!!
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// DEBUG
 | 
			
		||||
#if UART_PRINTF_MODE
 | 
			
		||||
	#define	DEBUG_INFO_TX_PIN	    GPIO_PC4//print
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
enum{
 | 
			
		||||
	VK_SW1 = 0x01,
 | 
			
		||||
	VK_SW2 = 0x02
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#define	KB_MAP_NORMAL	{\
 | 
			
		||||
		{VK_SW1,}, \
 | 
			
		||||
		{VK_SW2,}, }
 | 
			
		||||
 | 
			
		||||
#define	KB_MAP_NUM		KB_MAP_NORMAL
 | 
			
		||||
#define	KB_MAP_FN		KB_MAP_NORMAL
 | 
			
		||||
 | 
			
		||||
#define KB_DRIVE_PINS  {NULL }
 | 
			
		||||
#define KB_SCAN_PINS   {BUTTON_OPT,  BUTTON_RESET}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Disable C linkage for C++ Compilers: */
 | 
			
		||||
#if defined(__cplusplus)
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
@ -127,20 +127,20 @@ typedef struct{
 | 
			
		||||
	u8	enhancedColorMode;
 | 
			
		||||
	u8	numOfPrimaries;
 | 
			
		||||
	u16 colorCapabilities;
 | 
			
		||||
#if COLOR_RGB_SUPPORT
 | 
			
		||||
	u8	currentHue;
 | 
			
		||||
	u8	currentSaturation;
 | 
			
		||||
	u16 currentX;
 | 
			
		||||
	u16 currentY;
 | 
			
		||||
	u16	enhancedCurrentHue;
 | 
			
		||||
	u8	colorLoopActive;
 | 
			
		||||
	u8	colorLoopDirection;
 | 
			
		||||
	u16	colorLoopTime;
 | 
			
		||||
	u16 colorLoopStartEnhancedHue;
 | 
			
		||||
	u16 colorLoopStoredEnhancedHue;
 | 
			
		||||
#elif COLOR_CCT_SUPPORT
 | 
			
		||||
	u16 colorTemperatureMireds;
 | 
			
		||||
	u16 colorTempPhysicalMinMireds;
 | 
			
		||||
	u16 colorTempPhysicalMaxMireds;
 | 
			
		||||
	u16 startUpColorTemperatureMireds;
 | 
			
		||||
#endif
 | 
			
		||||
}zcl_lightColorCtrlAttr_t;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
@ -163,13 +163,10 @@ typedef struct {
 | 
			
		||||
 *  @brief Defined for saving color control attributes
 | 
			
		||||
 */
 | 
			
		||||
typedef struct {
 | 
			
		||||
#if COLOR_RGB_SUPPORT
 | 
			
		||||
	u8	currentHue;
 | 
			
		||||
	u8	currentSaturation;
 | 
			
		||||
#elif COLOR_CCT_SUPPORT
 | 
			
		||||
	u16	colorTemperatureMireds;
 | 
			
		||||
	u16	startUpColorTemperatureMireds;
 | 
			
		||||
#endif
 | 
			
		||||
}zcl_nv_colorCtrl_t;
 | 
			
		||||
 | 
			
		||||
/**********************************************************************
 | 
			
		||||
 | 
			
		||||
@ -30,7 +30,7 @@
 | 
			
		||||
#include "zcl_include.h"
 | 
			
		||||
#include "sampleLight.h"
 | 
			
		||||
#include "sampleLightCtrl.h"
 | 
			
		||||
 | 
			
		||||
#include<math.h>
 | 
			
		||||
 | 
			
		||||
/**********************************************************************
 | 
			
		||||
 * LOCAL CONSTANTS
 | 
			
		||||
@ -107,21 +107,18 @@ void hwLight_init(void)
 | 
			
		||||
{
 | 
			
		||||
	drv_pwm_init();
 | 
			
		||||
 | 
			
		||||
#if COLOR_RGB_SUPPORT
 | 
			
		||||
	R_LIGHT_PWM_SET();
 | 
			
		||||
	G_LIGHT_PWM_SET();
 | 
			
		||||
	B_LIGHT_PWM_SET();
 | 
			
		||||
 | 
			
		||||
	COOL_LIGHT_PWM_SET();
 | 
			
		||||
	WARM_LIGHT_PWM_SET();
 | 
			
		||||
 | 
			
		||||
	pwmInit(R_LIGHT_PWM_CHANNEL, 0);
 | 
			
		||||
	pwmInit(G_LIGHT_PWM_CHANNEL, 0);
 | 
			
		||||
	pwmInit(B_LIGHT_PWM_CHANNEL, 0);
 | 
			
		||||
#else
 | 
			
		||||
	COOL_LIGHT_PWM_SET();
 | 
			
		||||
	pwmInit(COOL_LIGHT_PWM_CHANNEL, 0);
 | 
			
		||||
#if COLOR_CCT_SUPPORT
 | 
			
		||||
	WARM_LIGHT_PWM_SET();
 | 
			
		||||
	pwmInit(WARM_LIGHT_PWM_CHANNEL, 0);
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*********************************************************************
 | 
			
		||||
@ -136,30 +133,21 @@ void hwLight_init(void)
 | 
			
		||||
void hwLight_onOffUpdate(u8 onOff)
 | 
			
		||||
{
 | 
			
		||||
	if(onOff){
 | 
			
		||||
#if COLOR_RGB_SUPPORT
 | 
			
		||||
		drv_pwm_start(R_LIGHT_PWM_CHANNEL);
 | 
			
		||||
		drv_pwm_start(G_LIGHT_PWM_CHANNEL);
 | 
			
		||||
		drv_pwm_start(B_LIGHT_PWM_CHANNEL);
 | 
			
		||||
#else
 | 
			
		||||
#if COLOR_CCT_SUPPORT
 | 
			
		||||
		drv_pwm_start(WARM_LIGHT_PWM_CHANNEL);
 | 
			
		||||
#endif
 | 
			
		||||
		drv_pwm_start(COOL_LIGHT_PWM_CHANNEL);
 | 
			
		||||
#endif
 | 
			
		||||
		drv_pwm_start(WARM_LIGHT_PWM_CHANNEL);
 | 
			
		||||
	}else{
 | 
			
		||||
#if COLOR_RGB_SUPPORT
 | 
			
		||||
		drv_pwm_stop(R_LIGHT_PWM_CHANNEL);
 | 
			
		||||
		drv_pwm_stop(G_LIGHT_PWM_CHANNEL);
 | 
			
		||||
		drv_pwm_stop(B_LIGHT_PWM_CHANNEL);
 | 
			
		||||
#else
 | 
			
		||||
#if COLOR_CCT_SUPPORT
 | 
			
		||||
		drv_pwm_stop(WARM_LIGHT_PWM_CHANNEL);
 | 
			
		||||
#endif
 | 
			
		||||
		drv_pwm_stop(COOL_LIGHT_PWM_CHANNEL);
 | 
			
		||||
#endif
 | 
			
		||||
		drv_pwm_stop(WARM_LIGHT_PWM_CHANNEL);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*********************************************************************
 | 
			
		||||
 * @fn      hwLight_levelUpdate
 | 
			
		||||
 *
 | 
			
		||||
@ -171,13 +159,14 @@ void hwLight_onOffUpdate(u8 onOff)
 | 
			
		||||
 */
 | 
			
		||||
void hwLight_levelUpdate(u8 level)
 | 
			
		||||
{
 | 
			
		||||
	/* Use this if no rgb support
 | 
			
		||||
#if !defined COLOR_RGB_SUPPORT || (COLOR_RGB_SUPPORT == 0)
 | 
			
		||||
	level = (level < 0x10) ? 0x10 : level;
 | 
			
		||||
 | 
			
		||||
	u16 gammaCorrectLevel = ((u16)level * level) / ZCL_LEVEL_ATTR_MAX_LEVEL;
 | 
			
		||||
 | 
			
		||||
	pwmSetDuty(COOL_LIGHT_PWM_CHANNEL, gammaCorrectLevel * PWM_FULL_DUTYCYCLE);
 | 
			
		||||
#endif
 | 
			
		||||
#endif*/
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*********************************************************************
 | 
			
		||||
@ -194,12 +183,10 @@ void hwLight_levelUpdate(u8 level)
 | 
			
		||||
 */
 | 
			
		||||
void temperatureToCW(u16 temperatureMireds, u8 level, u8 *C, u8 *W)
 | 
			
		||||
{
 | 
			
		||||
#if COLOR_CCT_SUPPORT
 | 
			
		||||
	zcl_lightColorCtrlAttr_t *pColor = zcl_colorAttrGet();
 | 
			
		||||
 | 
			
		||||
	*W = (u8)(((temperatureMireds - pColor->colorTempPhysicalMinMireds) * level) / (pColor->colorTempPhysicalMaxMireds - pColor->colorTempPhysicalMinMireds));
 | 
			
		||||
	*C = level - (*W);
 | 
			
		||||
#endif
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*********************************************************************
 | 
			
		||||
@ -214,7 +201,6 @@ void temperatureToCW(u16 temperatureMireds, u8 level, u8 *C, u8 *W)
 | 
			
		||||
 */
 | 
			
		||||
void hwLight_colorUpdate_colorTemperature(u16 colorTemperatureMireds, u8 level)
 | 
			
		||||
{
 | 
			
		||||
#if COLOR_CCT_SUPPORT
 | 
			
		||||
	u8 C = 0;
 | 
			
		||||
	u8 W = 0;
 | 
			
		||||
 | 
			
		||||
@ -227,7 +213,9 @@ void hwLight_colorUpdate_colorTemperature(u16 colorTemperatureMireds, u8 level)
 | 
			
		||||
 | 
			
		||||
	pwmSetDuty(COOL_LIGHT_PWM_CHANNEL, gammaCorrectC * PWM_FULL_DUTYCYCLE);
 | 
			
		||||
	pwmSetDuty(WARM_LIGHT_PWM_CHANNEL, gammaCorrectW * PWM_FULL_DUTYCYCLE);
 | 
			
		||||
#endif
 | 
			
		||||
	pwmSetDuty(R_LIGHT_PWM_CHANNEL, 0);
 | 
			
		||||
	pwmSetDuty(G_LIGHT_PWM_CHANNEL, 0);
 | 
			
		||||
	pwmSetDuty(B_LIGHT_PWM_CHANNEL, 0);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*********************************************************************
 | 
			
		||||
@ -246,7 +234,6 @@ void hwLight_colorUpdate_colorTemperature(u16 colorTemperatureMireds, u8 level)
 | 
			
		||||
 */
 | 
			
		||||
void hsvToRGB(u8 hue, u8 saturation, u8 level, u8 *R, u8 *G, u8 *B)
 | 
			
		||||
{
 | 
			
		||||
#if COLOR_RGB_SUPPORT
 | 
			
		||||
    u8 region;
 | 
			
		||||
    u8 remainder;
 | 
			
		||||
    u8 p, q, t;
 | 
			
		||||
@ -299,7 +286,6 @@ void hsvToRGB(u8 hue, u8 saturation, u8 level, u8 *R, u8 *G, u8 *B)
 | 
			
		||||
    	*G = p;
 | 
			
		||||
    	*B = q;
 | 
			
		||||
    }
 | 
			
		||||
#endif
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*********************************************************************
 | 
			
		||||
@ -315,7 +301,6 @@ void hsvToRGB(u8 hue, u8 saturation, u8 level, u8 *R, u8 *G, u8 *B)
 | 
			
		||||
 */
 | 
			
		||||
void hwLight_colorUpdate_HSV2RGB(u8 hue, u8 saturation, u8 level)
 | 
			
		||||
{
 | 
			
		||||
#if COLOR_RGB_SUPPORT
 | 
			
		||||
	u8 R = 0;
 | 
			
		||||
	u8 G = 0;
 | 
			
		||||
	u8 B = 0;
 | 
			
		||||
@ -324,6 +309,10 @@ void hwLight_colorUpdate_HSV2RGB(u8 hue, u8 saturation, u8 level)
 | 
			
		||||
 | 
			
		||||
	hsvToRGB(hue, saturation, level, &R, &G, &B);
 | 
			
		||||
 | 
			
		||||
	hwLight_colorUpdate_RGB(R,G,B);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void hwLight_colorUpdate_RGB(u8 R, u8 G, u8 B) {
 | 
			
		||||
	u16 gammaCorrectR = ((u16)R * R) / ZCL_LEVEL_ATTR_MAX_LEVEL;
 | 
			
		||||
	u16 gammaCorrectG = ((u16)G * G) / ZCL_LEVEL_ATTR_MAX_LEVEL;
 | 
			
		||||
	u16 gammaCorrectB = ((u16)B * B) / ZCL_LEVEL_ATTR_MAX_LEVEL;
 | 
			
		||||
@ -331,7 +320,40 @@ void hwLight_colorUpdate_HSV2RGB(u8 hue, u8 saturation, u8 level)
 | 
			
		||||
	pwmSetDuty(PWM_R_CHANNEL, gammaCorrectR * PWM_FULL_DUTYCYCLE);
 | 
			
		||||
	pwmSetDuty(PWM_G_CHANNEL, gammaCorrectG * PWM_FULL_DUTYCYCLE);
 | 
			
		||||
	pwmSetDuty(PWM_B_CHANNEL, gammaCorrectB * PWM_FULL_DUTYCYCLE);
 | 
			
		||||
#endif
 | 
			
		||||
	pwmSetDuty(COOL_LIGHT_PWM_CHANNEL, 0);
 | 
			
		||||
	pwmSetDuty(WARM_LIGHT_PWM_CHANNEL, 0);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static float ENFORCE_BOUNDS_FLOAT(float lowerBound, float num, float upperBound) {
 | 
			
		||||
		return num < lowerBound ? lowerBound : num > upperBound ? upperBound : num;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
float LINEAR_TO_SRGB_GAMMA_CORRECTION(const float part) {
 | 
			
		||||
		return part <= 0.0031308 ? 12.92 * part : 1.055 * pow(part, 1.0 / 2.4) - 0.055;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void hwLight_colorUpdate_XY2RGB(u16 xI, u16 yI, u8 level) {
 | 
			
		||||
		float x = xI / 65536.f;
 | 
			
		||||
		float y = yI / 65536.f;
 | 
			
		||||
 | 
			
		||||
		// This does not locate the closest point in the gamma spectrum of the lamps. possible #todo
 | 
			
		||||
		const float z = 1 - x - y;
 | 
			
		||||
 | 
			
		||||
		const float Y = level / ZCL_LEVEL_ATTR_MAX_LEVEL; // This is luminance, but used as brightness
 | 
			
		||||
		const float X = ((Y) / y) * x;
 | 
			
		||||
		const float Z = ((Y) / y) * z;
 | 
			
		||||
 | 
			
		||||
		// D65 BT.709 conversion https://en.wikipedia.org/wiki/SRGB
 | 
			
		||||
		float r = X * 1.656492 - Y * 0.354851 - Z * 0.255038;
 | 
			
		||||
		float g = -X * 0.707196 + Y * 1.655397 + Z * 0.036152;
 | 
			
		||||
		float b = X * 0.051713 - Y * 0.121364 + Z * 1.011530;
 | 
			
		||||
 | 
			
		||||
		// Enforce the lower and upper bounds
 | 
			
		||||
		r = ENFORCE_BOUNDS_FLOAT(0.0, r * 255, 255.0);
 | 
			
		||||
		g = ENFORCE_BOUNDS_FLOAT(0.0, g * 255, 255.0);
 | 
			
		||||
		b = ENFORCE_BOUNDS_FLOAT(0.0, b * 255, 255.0);
 | 
			
		||||
 | 
			
		||||
		hwLight_colorUpdate_RGB((u8)r,(u8)g,(u8)b);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*********************************************************************
 | 
			
		||||
 | 
			
		||||
@ -38,6 +38,8 @@ void hwLight_onOffUpdate(u8 onOff);
 | 
			
		||||
void hwLight_levelUpdate(u8 level);
 | 
			
		||||
void hwLight_colorUpdate_colorTemperature(u16 colorTemperatureMireds, u8 level);
 | 
			
		||||
void hwLight_colorUpdate_HSV2RGB(u8 hue, u8 saturation, u8 level);
 | 
			
		||||
void hwLight_colorUpdate_RGB(u8 R, u8 G, u8 B);
 | 
			
		||||
void hwLight_colorUpdate_XY2RGB(u16 x, u16 y, u8 level);
 | 
			
		||||
 | 
			
		||||
void light_adjust(void);
 | 
			
		||||
void light_fresh(void);
 | 
			
		||||
 | 
			
		||||
@ -35,20 +35,18 @@
 | 
			
		||||
 * LOCAL CONSTANTS
 | 
			
		||||
 */
 | 
			
		||||
#ifndef ZCL_BASIC_MFG_NAME
 | 
			
		||||
#define ZCL_BASIC_MFG_NAME     		{6,'T','E','L','I','N','K'}
 | 
			
		||||
#define ZCL_BASIC_MFG_NAME     		{8,'G','L','E','D','O','P','T','O'}
 | 
			
		||||
#endif
 | 
			
		||||
#ifndef ZCL_BASIC_MODEL_ID
 | 
			
		||||
#define ZCL_BASIC_MODEL_ID	   		{8,'T','L','S','R','8','2','x','x'}
 | 
			
		||||
#define ZCL_BASIC_MODEL_ID	   		{9,'G','L','-','C','-','0','0','8','P'}
 | 
			
		||||
#endif
 | 
			
		||||
#ifndef ZCL_BASIC_SW_BUILD_ID
 | 
			
		||||
#define ZCL_BASIC_SW_BUILD_ID     	{10,'0','1','2','2','0','5','2','0','1','7'}
 | 
			
		||||
#define ZCL_BASIC_SW_BUILD_ID     	{8,'2','0','2','2','0','4','0','1'}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#if COLOR_CCT_SUPPORT
 | 
			
		||||
#define COLOR_TEMPERATURE_PHYSICAL_MIN	0x00FA//4000K
 | 
			
		||||
#define COLOR_TEMPERATURE_PHYSICAL_MIN	0x009A//6500K
 | 
			
		||||
#define COLOR_TEMPERATURE_PHYSICAL_MAX	0x01C6//2200K
 | 
			
		||||
#endif
 | 
			
		||||
#define COLOR_TEMPERATURE_DEFAULT		0x00FA//4000K
 | 
			
		||||
 | 
			
		||||
/**********************************************************************
 | 
			
		||||
 * TYPEDEFS
 | 
			
		||||
@ -110,15 +108,7 @@ const u16 sampleLight_outClusterList[] =
 | 
			
		||||
const af_simple_descriptor_t sampleLight_simpleDesc =
 | 
			
		||||
{
 | 
			
		||||
	HA_PROFILE_ID,                      		/* Application profile identifier */
 | 
			
		||||
#ifdef ZCL_LIGHT_COLOR_CONTROL
 | 
			
		||||
	HA_DEV_COLOR_DIMMABLE_LIGHT,
 | 
			
		||||
#else
 | 
			
		||||
	#ifdef ZCL_LEVEL_CTRL
 | 
			
		||||
		HA_DEV_DIMMABLE_LIGHT,              	/* Application device identifier */
 | 
			
		||||
	#else
 | 
			
		||||
		HA_DEV_ONOFF_LIGHT,						/* Application device identifier */
 | 
			
		||||
	#endif
 | 
			
		||||
#endif
 | 
			
		||||
	SAMPLE_LIGHT_ENDPOINT,              		/* Endpoint */
 | 
			
		||||
	1,                                  		/* Application device version */
 | 
			
		||||
	0,											/* Reserved */
 | 
			
		||||
@ -128,61 +118,13 @@ const af_simple_descriptor_t sampleLight_simpleDesc =
 | 
			
		||||
	(u16 *)sampleLight_outClusterList,   		/* Application output cluster list */
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#if AF_TEST_ENABLE
 | 
			
		||||
/**
 | 
			
		||||
 *  @brief Definition for Incoming cluster / Sever Cluster
 | 
			
		||||
 */
 | 
			
		||||
const u16 sampleTest_inClusterList[] =
 | 
			
		||||
{
 | 
			
		||||
	ZCL_CLUSTER_TELINK_SDK_TEST_REQ,
 | 
			
		||||
	ZCL_CLUSTER_TELINK_SDK_TEST_RSP,
 | 
			
		||||
	ZCL_CLUSTER_TELINK_SDK_TEST_CLEAR_REQ,
 | 
			
		||||
	ZCL_CLUSTER_TELINK_SDK_TEST_CLEAR_RSP,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  @brief Definition for Outgoing cluster / Client Cluster
 | 
			
		||||
 */
 | 
			
		||||
const u16 sampleTest_outClusterList[] =
 | 
			
		||||
{
 | 
			
		||||
	ZCL_CLUSTER_TELINK_SDK_TEST_REQ,
 | 
			
		||||
	ZCL_CLUSTER_TELINK_SDK_TEST_RSP,
 | 
			
		||||
	ZCL_CLUSTER_TELINK_SDK_TEST_CLEAR_REQ,
 | 
			
		||||
	ZCL_CLUSTER_TELINK_SDK_TEST_CLEAR_RSP,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  @brief Definition for Server cluster number and Client cluster number
 | 
			
		||||
 */
 | 
			
		||||
#define SAMPLE_TEST_IN_CLUSTER_NUM		(sizeof(sampleTest_inClusterList)/sizeof(sampleTest_inClusterList[0]))
 | 
			
		||||
#define SAMPLE_TEST_OUT_CLUSTER_NUM		(sizeof(sampleTest_outClusterList)/sizeof(sampleTest_outClusterList[0]))
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  @brief Definition for simple description for HA profile
 | 
			
		||||
 */
 | 
			
		||||
const af_simple_descriptor_t sampleTestDesc =
 | 
			
		||||
{
 | 
			
		||||
	HA_PROFILE_ID,                      /* Application profile identifier */
 | 
			
		||||
	HA_DEV_DIMMABLE_LIGHT,              /* Application device identifier */
 | 
			
		||||
	SAMPLE_TEST_ENDPOINT,               /* Endpoint */
 | 
			
		||||
	0,                                  /* Application device version */
 | 
			
		||||
	0,									/* Reserved */
 | 
			
		||||
	SAMPLE_TEST_IN_CLUSTER_NUM,         /* Application input cluster count */
 | 
			
		||||
	SAMPLE_TEST_OUT_CLUSTER_NUM,        /* Application output cluster count */
 | 
			
		||||
	(u16 *)sampleTest_inClusterList,    /* Application input cluster list */
 | 
			
		||||
	(u16 *)sampleTest_outClusterList,   /* Application output cluster list */
 | 
			
		||||
};
 | 
			
		||||
#endif	/* AF_TEST_ENABLE */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Basic */
 | 
			
		||||
zcl_basicAttr_t g_zcl_basicAttrs =
 | 
			
		||||
{
 | 
			
		||||
	.zclVersion 	= 0x03,
 | 
			
		||||
	.appVersion 	= 0x00,
 | 
			
		||||
	.stackVersion 	= 0x02,
 | 
			
		||||
	.hwVersion		= 0x00,
 | 
			
		||||
	.stackVersion 	= 0x00,
 | 
			
		||||
	.hwVersion		= 0x02,
 | 
			
		||||
	.manuName		= ZCL_BASIC_MFG_NAME,
 | 
			
		||||
	.modelId		= ZCL_BASIC_MODEL_ID,
 | 
			
		||||
	.powerSource	= POWER_SOURCE_MAINS_1_PHASE,
 | 
			
		||||
@ -311,29 +253,28 @@ const zclAttrInfo_t level_attrTbl[] =
 | 
			
		||||
#define ZCL_LEVEL_ATTR_NUM	 sizeof(level_attrTbl) / sizeof(zclAttrInfo_t)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef ZCL_LIGHT_COLOR_CONTROL
 | 
			
		||||
/* Color Control */
 | 
			
		||||
zcl_lightColorCtrlAttr_t g_zcl_colorCtrlAttrs =
 | 
			
		||||
{
 | 
			
		||||
	.colorMode						= ZCL_COLOR_MODE_COLOR_TEMPERATURE_MIREDS,
 | 
			
		||||
	.options						= 0,
 | 
			
		||||
	.enhancedColorMode				= ZCL_COLOR_MODE_COLOR_TEMPERATURE_MIREDS,
 | 
			
		||||
	.colorCapabilities				= ZCL_COLOR_CAPABILITIES_BIT_COLOR_TEMPERATURE,
 | 
			
		||||
	.colorCapabilities				= ZCL_COLOR_CAPABILITIES_BIT_COLOR_TEMPERATURE | ZCL_COLOR_CAPABILITIES_BIT_X_Y_ATTRIBUTES | ZCL_COLOR_CAPABILITIES_BIT_HUE_SATURATION,
 | 
			
		||||
	.numOfPrimaries					= 0,
 | 
			
		||||
#if COLOR_RGB_SUPPORT
 | 
			
		||||
	.currentHue						= 0x00,
 | 
			
		||||
	.currentSaturation				= 0x00,
 | 
			
		||||
	.currentX						= 0x616b,
 | 
			
		||||
	.currentY						= 0x607d,
 | 
			
		||||
	.enhancedCurrentHue				= 0x0000,
 | 
			
		||||
	.colorLoopActive				= 0x00,
 | 
			
		||||
	.colorLoopDirection				= 0x00,
 | 
			
		||||
	.colorLoopTime					= 0x0019,
 | 
			
		||||
	.colorLoopStartEnhancedHue		= 0x2300,
 | 
			
		||||
	.colorLoopStoredEnhancedHue		= 0x0000,
 | 
			
		||||
#elif COLOR_CCT_SUPPORT
 | 
			
		||||
	.colorTemperatureMireds			= COLOR_TEMPERATURE_PHYSICAL_MAX,
 | 
			
		||||
	.colorTemperatureMireds			= COLOR_TEMPERATURE_DEFAULT,
 | 
			
		||||
	.colorTempPhysicalMinMireds		= COLOR_TEMPERATURE_PHYSICAL_MIN,
 | 
			
		||||
	.colorTempPhysicalMaxMireds 	= COLOR_TEMPERATURE_PHYSICAL_MAX,
 | 
			
		||||
	.startUpColorTemperatureMireds 	= ZCL_START_UP_COLOR_TEMPERATURE_MIREDS_TO_PREVIOUS,
 | 
			
		||||
#endif
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const zclAttrInfo_t lightColorCtrl_attrTbl[] =
 | 
			
		||||
@ -343,27 +284,25 @@ const zclAttrInfo_t lightColorCtrl_attrTbl[] =
 | 
			
		||||
    { ZCL_ATTRID_ENHANCED_COLOR_MODE,     			ZCL_DATA_TYPE_ENUM8,   	ACCESS_CONTROL_READ,     					(u8*)&g_zcl_colorCtrlAttrs.enhancedColorMode },
 | 
			
		||||
    { ZCL_ATTRID_COLOR_CAPABILITIES,       			ZCL_DATA_TYPE_BITMAP16, ACCESS_CONTROL_READ,     					(u8*)&g_zcl_colorCtrlAttrs.colorCapabilities },
 | 
			
		||||
    { ZCL_ATTRID_NUMBER_OF_PRIMARIES,     			ZCL_DATA_TYPE_UINT8,   	ACCESS_CONTROL_READ,     					(u8*)&g_zcl_colorCtrlAttrs.numOfPrimaries },
 | 
			
		||||
 | 
			
		||||
#if COLOR_RGB_SUPPORT
 | 
			
		||||
    { ZCL_ATTRID_CURRENT_X,              			ZCL_DATA_TYPE_UINT16,  	ACCESS_CONTROL_READ,     					(u8*)&g_zcl_colorCtrlAttrs.currentX },
 | 
			
		||||
    { ZCL_ATTRID_CURRENT_Y,              			ZCL_DATA_TYPE_UINT16, 	ACCESS_CONTROL_READ,     						(u8*)&g_zcl_colorCtrlAttrs.currentY },
 | 
			
		||||
    { ZCL_ATTRID_CURRENT_HUE,             			ZCL_DATA_TYPE_UINT8,   	ACCESS_CONTROL_READ | ACCESS_CONTROL_REPORTABLE, (u8*)&g_zcl_colorCtrlAttrs.currentHue },
 | 
			
		||||
	{ ZCL_ATTRID_ENHANCED_CURRENT_HUE,    			ZCL_DATA_TYPE_UINT16,   ACCESS_CONTROL_READ,    						 (u8*)&g_zcl_colorCtrlAttrs.currentHue },
 | 
			
		||||
    { ZCL_ATTRID_CURRENT_SATURATION,      			ZCL_DATA_TYPE_UINT8,   	ACCESS_CONTROL_READ | ACCESS_CONTROL_REPORTABLE, (u8*)&g_zcl_colorCtrlAttrs.currentSaturation },
 | 
			
		||||
    { ZCL_ATTRID_COLOR_LOOP_ACTIVE,       			ZCL_DATA_TYPE_UINT8,    ACCESS_CONTROL_READ | ACCESS_CONTROL_REPORTABLE, (u8*)&g_zcl_colorCtrlAttrs.colorLoopActive },
 | 
			
		||||
    { ZCL_ATTRID_COLOR_LOOP_DIRECTION,    			ZCL_DATA_TYPE_UINT8,    ACCESS_CONTROL_READ | ACCESS_CONTROL_REPORTABLE, (u8*)&g_zcl_colorCtrlAttrs.colorLoopDirection },
 | 
			
		||||
    { ZCL_ATTRID_COLOR_LOOP_TIME,         			ZCL_DATA_TYPE_UINT16,   ACCESS_CONTROL_READ | ACCESS_CONTROL_REPORTABLE, (u8*)&g_zcl_colorCtrlAttrs.colorLoopTime },
 | 
			
		||||
    { ZCL_ATTRID_COLOR_LOOP_START_ENHANCED_HUE,   	ZCL_DATA_TYPE_UINT16,   ACCESS_CONTROL_READ,     						 (u8*)&g_zcl_colorCtrlAttrs.colorLoopStartEnhancedHue },
 | 
			
		||||
    { ZCL_ATTRID_COLOR_LOOP_STORED_ENHANCED_HUE,  	ZCL_DATA_TYPE_UINT16,   ACCESS_CONTROL_READ,     						 (u8*)&g_zcl_colorCtrlAttrs.colorLoopStoredEnhancedHue },
 | 
			
		||||
#elif COLOR_CCT_SUPPORT
 | 
			
		||||
    { ZCL_ATTRID_COLOR_TEMPERATURE_MIREDS,			ZCL_DATA_TYPE_UINT16,  	ACCESS_CONTROL_READ | ACCESS_CONTROL_REPORTABLE, (u8*)&g_zcl_colorCtrlAttrs.colorTemperatureMireds },
 | 
			
		||||
    { ZCL_ATTRID_COLOR_TEMP_PHYSICAL_MIN_MIREDS,  	ZCL_DATA_TYPE_UINT16,  	ACCESS_CONTROL_READ,     						 (u8*)&g_zcl_colorCtrlAttrs.colorTempPhysicalMinMireds },
 | 
			
		||||
    { ZCL_ATTRID_COLOR_TEMP_PHYSICAL_MAX_MIREDS,  	ZCL_DATA_TYPE_UINT16,  	ACCESS_CONTROL_READ,     						 (u8*)&g_zcl_colorCtrlAttrs.colorTempPhysicalMaxMireds },
 | 
			
		||||
    { ZCL_ATTRID_START_UP_COLOR_TEMPERATURE_MIREDS, ZCL_DATA_TYPE_UINT16,  	ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE,      (u8*)&g_zcl_colorCtrlAttrs.startUpColorTemperatureMireds },
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    { ZCL_ATTRID_GLOBAL_CLUSTER_REVISION, 			ZCL_DATA_TYPE_UINT16,   ACCESS_CONTROL_READ,  							 (u8*)&zcl_attr_global_clusterRevision},
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#define ZCL_COLOR_ATTR_NUM	 sizeof(lightColorCtrl_attrTbl) / sizeof(zclAttrInfo_t)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  @brief Definition for simple light ZCL specific cluster
 | 
			
		||||
@ -372,21 +311,11 @@ const zcl_specClusterInfo_t g_sampleLightClusterList[] =
 | 
			
		||||
{
 | 
			
		||||
	{ZCL_CLUSTER_GEN_BASIC,				 MANUFACTURER_CODE_NONE, 	ZCL_BASIC_ATTR_NUM, 	basic_attrTbl,  		zcl_basic_register,			 sampleLight_basicCb},
 | 
			
		||||
	{ZCL_CLUSTER_GEN_IDENTIFY,			 MANUFACTURER_CODE_NONE, 	ZCL_IDENTIFY_ATTR_NUM,	identify_attrTbl,		zcl_identify_register,		 sampleLight_identifyCb},
 | 
			
		||||
#ifdef ZCL_GROUP
 | 
			
		||||
	{ZCL_CLUSTER_GEN_GROUPS,			 MANUFACTURER_CODE_NONE, 	ZCL_GROUP_ATTR_NUM, 	group_attrTbl,  		zcl_group_register,			 NULL},
 | 
			
		||||
#endif
 | 
			
		||||
#ifdef ZCL_SCENE
 | 
			
		||||
	{ZCL_CLUSTER_GEN_SCENES,			 MANUFACTURER_CODE_NONE, 	ZCL_SCENE_ATTR_NUM,		scene_attrTbl,			zcl_scene_register,			 sampleLight_sceneCb},
 | 
			
		||||
#endif
 | 
			
		||||
#ifdef ZCL_ON_OFF
 | 
			
		||||
	{ZCL_CLUSTER_GEN_ON_OFF,			 MANUFACTURER_CODE_NONE, 	ZCL_ONOFF_ATTR_NUM,		onOff_attrTbl,			zcl_onOff_register,			 sampleLight_onOffCb},
 | 
			
		||||
#endif
 | 
			
		||||
#ifdef ZCL_LEVEL_CTRL
 | 
			
		||||
	{ZCL_CLUSTER_GEN_LEVEL_CONTROL,		 MANUFACTURER_CODE_NONE, 	ZCL_LEVEL_ATTR_NUM,		level_attrTbl,			zcl_level_register,			 sampleLight_levelCb},
 | 
			
		||||
#endif
 | 
			
		||||
#ifdef ZCL_LIGHT_COLOR_CONTROL
 | 
			
		||||
	{ZCL_CLUSTER_LIGHTING_COLOR_CONTROL, MANUFACTURER_CODE_NONE, 	ZCL_COLOR_ATTR_NUM,		lightColorCtrl_attrTbl,	zcl_lightColorCtrl_register, sampleLight_colorCtrlCb},
 | 
			
		||||
#endif
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
u8 SAMPLELIGHT_CB_CLUSTER_NUM = (sizeof(g_sampleLightClusterList)/sizeof(g_sampleLightClusterList[0]));
 | 
			
		||||
@ -410,7 +339,6 @@ nv_sts_t zcl_onOffAttr_save(void)
 | 
			
		||||
{
 | 
			
		||||
	nv_sts_t st = NV_SUCC;
 | 
			
		||||
 | 
			
		||||
#ifdef ZCL_ON_OFF
 | 
			
		||||
#if NV_ENABLE
 | 
			
		||||
	zcl_nv_onOff_t zcl_nv_onOff;
 | 
			
		||||
 | 
			
		||||
@ -431,7 +359,6 @@ nv_sts_t zcl_onOffAttr_save(void)
 | 
			
		||||
	}
 | 
			
		||||
#else
 | 
			
		||||
	st = NV_ENABLE_PROTECT_ERROR;
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
	return st;
 | 
			
		||||
@ -450,7 +377,6 @@ nv_sts_t zcl_onOffAttr_restore(void)
 | 
			
		||||
{
 | 
			
		||||
	nv_sts_t st = NV_SUCC;
 | 
			
		||||
 | 
			
		||||
#ifdef ZCL_ON_OFF
 | 
			
		||||
#if NV_ENABLE
 | 
			
		||||
	zcl_nv_onOff_t zcl_nv_onOff;
 | 
			
		||||
 | 
			
		||||
@ -462,7 +388,6 @@ nv_sts_t zcl_onOffAttr_restore(void)
 | 
			
		||||
	}
 | 
			
		||||
#else
 | 
			
		||||
	st = NV_ENABLE_PROTECT_ERROR;
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
	return st;
 | 
			
		||||
@ -481,7 +406,6 @@ nv_sts_t zcl_levelAttr_save(void)
 | 
			
		||||
{
 | 
			
		||||
	nv_sts_t st = NV_SUCC;
 | 
			
		||||
 | 
			
		||||
#ifdef ZCL_LEVEL_CTRL
 | 
			
		||||
#if NV_ENABLE
 | 
			
		||||
	zcl_nv_level_t zcl_nv_level;
 | 
			
		||||
 | 
			
		||||
@ -502,7 +426,6 @@ nv_sts_t zcl_levelAttr_save(void)
 | 
			
		||||
	}
 | 
			
		||||
#else
 | 
			
		||||
	st = NV_ENABLE_PROTECT_ERROR;
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
	return st;
 | 
			
		||||
@ -521,7 +444,6 @@ nv_sts_t zcl_levelAttr_restore(void)
 | 
			
		||||
{
 | 
			
		||||
	nv_sts_t st = NV_SUCC;
 | 
			
		||||
 | 
			
		||||
#ifdef ZCL_LEVEL_CTRL
 | 
			
		||||
#if NV_ENABLE
 | 
			
		||||
	zcl_nv_level_t zcl_nv_level;
 | 
			
		||||
 | 
			
		||||
@ -533,7 +455,6 @@ nv_sts_t zcl_levelAttr_restore(void)
 | 
			
		||||
	}
 | 
			
		||||
#else
 | 
			
		||||
	st = NV_ENABLE_PROTECT_ERROR;
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
	return st;
 | 
			
		||||
@ -552,50 +473,37 @@ nv_sts_t zcl_colorCtrlAttr_save(void)
 | 
			
		||||
{
 | 
			
		||||
	nv_sts_t st = NV_SUCC;
 | 
			
		||||
 | 
			
		||||
#ifdef ZCL_LIGHT_COLOR_CONTROL
 | 
			
		||||
#if NV_ENABLE
 | 
			
		||||
	bool needSave = FALSE;
 | 
			
		||||
	zcl_nv_colorCtrl_t zcl_nv_colorCtrl;
 | 
			
		||||
 | 
			
		||||
	st = nv_flashReadNew(1, NV_MODULE_ZCL,  NV_ITEM_ZCL_COLOR_CTRL, sizeof(zcl_nv_colorCtrl_t), (u8*)&zcl_nv_colorCtrl);
 | 
			
		||||
 | 
			
		||||
#if COLOR_RGB_SUPPORT
 | 
			
		||||
	if(st == NV_SUCC){
 | 
			
		||||
		if((zcl_nv_colorCtrl.currentHue != g_zcl_colorCtrlAttrs.currentHue) || (zcl_nv_colorCtrl.currentSaturation != g_zcl_colorCtrlAttrs.currentSaturation)){
 | 
			
		||||
		if((zcl_nv_colorCtrl.currentHue != g_zcl_colorCtrlAttrs.currentHue) || (zcl_nv_colorCtrl.currentSaturation != g_zcl_colorCtrlAttrs.currentSaturation)
 | 
			
		||||
		|| (zcl_nv_colorCtrl.colorTemperatureMireds != g_zcl_colorCtrlAttrs.colorTemperatureMireds) 
 | 
			
		||||
		|| (zcl_nv_colorCtrl.startUpColorTemperatureMireds != g_zcl_colorCtrlAttrs.startUpColorTemperatureMireds)){
 | 
			
		||||
			zcl_nv_colorCtrl.currentHue = g_zcl_colorCtrlAttrs.currentHue;
 | 
			
		||||
			zcl_nv_colorCtrl.currentSaturation = g_zcl_colorCtrlAttrs.currentSaturation;
 | 
			
		||||
 | 
			
		||||
			needSave = TRUE;
 | 
			
		||||
		}
 | 
			
		||||
	}else if(st == NV_ITEM_NOT_FOUND){
 | 
			
		||||
		zcl_nv_colorCtrl.currentHue = g_zcl_colorCtrlAttrs.currentHue;
 | 
			
		||||
		zcl_nv_colorCtrl.currentSaturation = g_zcl_colorCtrlAttrs.currentSaturation;
 | 
			
		||||
 | 
			
		||||
		needSave = TRUE;
 | 
			
		||||
	}
 | 
			
		||||
#elif COLOR_CCT_SUPPORT
 | 
			
		||||
	if(st == NV_SUCC){
 | 
			
		||||
		if((zcl_nv_colorCtrl.colorTemperatureMireds != g_zcl_colorCtrlAttrs.colorTemperatureMireds) || (zcl_nv_colorCtrl.startUpColorTemperatureMireds != g_zcl_colorCtrlAttrs.startUpColorTemperatureMireds)){
 | 
			
		||||
			zcl_nv_colorCtrl.colorTemperatureMireds = g_zcl_colorCtrlAttrs.colorTemperatureMireds;
 | 
			
		||||
			zcl_nv_colorCtrl.startUpColorTemperatureMireds = g_zcl_colorCtrlAttrs.startUpColorTemperatureMireds;
 | 
			
		||||
 | 
			
		||||
			needSave = TRUE;
 | 
			
		||||
		}
 | 
			
		||||
	}else if(st == NV_ITEM_NOT_FOUND){
 | 
			
		||||
		zcl_nv_colorCtrl.currentHue = g_zcl_colorCtrlAttrs.currentHue;
 | 
			
		||||
		zcl_nv_colorCtrl.currentSaturation = g_zcl_colorCtrlAttrs.currentSaturation;
 | 
			
		||||
		zcl_nv_colorCtrl.colorTemperatureMireds = g_zcl_colorCtrlAttrs.colorTemperatureMireds;
 | 
			
		||||
		zcl_nv_colorCtrl.startUpColorTemperatureMireds = g_zcl_colorCtrlAttrs.startUpColorTemperatureMireds;
 | 
			
		||||
 | 
			
		||||
		needSave = TRUE;
 | 
			
		||||
	}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	if(needSave){
 | 
			
		||||
		st = nv_flashWriteNew(1, NV_MODULE_ZCL, NV_ITEM_ZCL_COLOR_CTRL, sizeof(zcl_nv_colorCtrl_t), (u8*)&zcl_nv_colorCtrl);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
#else
 | 
			
		||||
	st = NV_ENABLE_PROTECT_ERROR;
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
	return st;
 | 
			
		||||
@ -614,27 +522,19 @@ nv_sts_t zcl_colorCtrlAttr_restore(void)
 | 
			
		||||
{
 | 
			
		||||
	nv_sts_t st = NV_SUCC;
 | 
			
		||||
 | 
			
		||||
#ifdef ZCL_LIGHT_COLOR_CONTROL
 | 
			
		||||
#if NV_ENABLE
 | 
			
		||||
	zcl_nv_colorCtrl_t zcl_nv_colorCtrl;
 | 
			
		||||
 | 
			
		||||
	st = nv_flashReadNew(1, NV_MODULE_ZCL,  NV_ITEM_ZCL_COLOR_CTRL, sizeof(zcl_nv_colorCtrl_t), (u8*)&zcl_nv_colorCtrl);
 | 
			
		||||
 | 
			
		||||
#if COLOR_RGB_SUPPORT
 | 
			
		||||
	if(st == NV_SUCC){
 | 
			
		||||
		g_zcl_colorCtrlAttrs.currentHue = zcl_nv_colorCtrl.currentHue;
 | 
			
		||||
		g_zcl_colorCtrlAttrs.currentSaturation = zcl_nv_colorCtrl.currentSaturation;
 | 
			
		||||
	}
 | 
			
		||||
#elif COLOR_CCT_SUPPORT
 | 
			
		||||
	if(st == NV_SUCC){
 | 
			
		||||
		g_zcl_colorCtrlAttrs.colorTemperatureMireds = zcl_nv_colorCtrl.colorTemperatureMireds;
 | 
			
		||||
		g_zcl_colorCtrlAttrs.startUpColorTemperatureMireds = zcl_nv_colorCtrl.startUpColorTemperatureMireds;
 | 
			
		||||
	}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#else
 | 
			
		||||
	st = NV_ENABLE_PROTECT_ERROR;
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
	return st;
 | 
			
		||||
 | 
			
		||||
@ -48,7 +48,7 @@
 | 
			
		||||
 * During OTA upgrade, the upgraded device will check the rules of the following three fields.
 | 
			
		||||
 * Refer to ZCL OTA specification for details.
 | 
			
		||||
 */
 | 
			
		||||
#define MANUFACTURER_CODE_TELINK           	0x1141//Telink ID
 | 
			
		||||
#define MANUFACTURER_CODE_TELINK           	0x124f //Gledopto ID
 | 
			
		||||
#define	IMAGE_TYPE							((CHIP_TYPE << 8) | IMAGE_TYPE_LIGHT)
 | 
			
		||||
#define	FILE_VERSION					  	((APP_RELEASE << 24) | (APP_BUILD << 16) | (STACK_RELEASE << 8) | STACK_BUILD)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -44,7 +44,6 @@
 | 
			
		||||
 * TYPEDEFS
 | 
			
		||||
 */
 | 
			
		||||
typedef struct{
 | 
			
		||||
#if COLOR_RGB_SUPPORT
 | 
			
		||||
	s32 stepHue256;
 | 
			
		||||
	u16	currentHue256;
 | 
			
		||||
	u16	hueRemainingTime;
 | 
			
		||||
@ -53,20 +52,17 @@ typedef struct{
 | 
			
		||||
	u16 currentSaturation256;
 | 
			
		||||
	u16 saturationRemainingTime;
 | 
			
		||||
	
 | 
			
		||||
#elif COLOR_CCT_SUPPORT
 | 
			
		||||
	s32 stepColorTemp256;
 | 
			
		||||
	u32	currentColorTemp256;
 | 
			
		||||
	u16	colorTempRemainingTime;
 | 
			
		||||
	u16	colorTempMinMireds;
 | 
			
		||||
	u16	colorTempMaxMireds;
 | 
			
		||||
#endif
 | 
			
		||||
}zcl_colorInfo_t;
 | 
			
		||||
 | 
			
		||||
/**********************************************************************
 | 
			
		||||
 * LOCAL VARIABLES
 | 
			
		||||
 */
 | 
			
		||||
static zcl_colorInfo_t colorInfo = {
 | 
			
		||||
#if COLOR_RGB_SUPPORT
 | 
			
		||||
	.stepHue256 				= 0,
 | 
			
		||||
	.currentHue256				= 0,
 | 
			
		||||
	.hueRemainingTime			= 0,
 | 
			
		||||
@ -75,19 +71,15 @@ static zcl_colorInfo_t colorInfo = {
 | 
			
		||||
	.currentSaturation256		= 0,
 | 
			
		||||
	.saturationRemainingTime	= 0,
 | 
			
		||||
	
 | 
			
		||||
#elif COLOR_CCT_SUPPORT
 | 
			
		||||
	.stepColorTemp256			= 0,
 | 
			
		||||
	.currentColorTemp256		= 0,
 | 
			
		||||
	.colorTempRemainingTime		= 0,
 | 
			
		||||
	.colorTempMinMireds			= 0,
 | 
			
		||||
	.colorTempMaxMireds			= 0,
 | 
			
		||||
#endif
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static ev_timer_event_t *colorTimerEvt = NULL;
 | 
			
		||||
#if COLOR_RGB_SUPPORT
 | 
			
		||||
static ev_timer_event_t *colorLoopTimerEvt = NULL;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**********************************************************************
 | 
			
		||||
@ -109,33 +101,23 @@ void sampleLight_colorInit(void)
 | 
			
		||||
{
 | 
			
		||||
	zcl_lightColorCtrlAttr_t *pColor = zcl_colorAttrGet();
 | 
			
		||||
 | 
			
		||||
#if COLOR_RGB_SUPPORT
 | 
			
		||||
	pColor->colorCapabilities = ZCL_COLOR_CAPABILITIES_BIT_HUE_SATURATION;
 | 
			
		||||
	pColor->colorMode = ZCL_COLOR_MODE_CURRENT_HUE_SATURATION;
 | 
			
		||||
	pColor->enhancedColorMode = ZCL_COLOR_MODE_CURRENT_HUE_SATURATION;
 | 
			
		||||
	pColor->colorCapabilities = ZCL_COLOR_CAPABILITIES_BIT_HUE_SATURATION | ZCL_COLOR_CAPABILITIES_BIT_COLOR_TEMPERATURE | ZCL_COLOR_CAPABILITIES_BIT_X_Y_ATTRIBUTES;
 | 
			
		||||
 | 
			
		||||
	colorInfo.currentHue256 = (u16)(pColor->currentHue) << 8;
 | 
			
		||||
	colorInfo.currentSaturation256 = (u16)(pColor->currentSaturation) << 8;
 | 
			
		||||
	colorInfo.currentColorTemp256 = (u32)(pColor->colorTemperatureMireds) << 8;
 | 
			
		||||
 | 
			
		||||
	colorInfo.hueRemainingTime = 0;
 | 
			
		||||
	colorInfo.saturationRemainingTime = 0;
 | 
			
		||||
	colorInfo.colorTempRemainingTime = 0;
 | 
			
		||||
 | 
			
		||||
	light_applyUpdate(&pColor->currentHue, &colorInfo.currentHue256, &colorInfo.stepHue256, &colorInfo.hueRemainingTime,
 | 
			
		||||
						ZCL_COLOR_ATTR_HUE_MIN, ZCL_COLOR_ATTR_HUE_MAX, TRUE);
 | 
			
		||||
 | 
			
		||||
	light_applyUpdate(&pColor->currentSaturation, &colorInfo.currentSaturation256, &colorInfo.stepSaturation256, &colorInfo.saturationRemainingTime,
 | 
			
		||||
						ZCL_COLOR_ATTR_SATURATION_MIN, ZCL_COLOR_ATTR_SATURATION_MAX, FALSE);
 | 
			
		||||
#elif COLOR_CCT_SUPPORT
 | 
			
		||||
	pColor->colorCapabilities = ZCL_COLOR_CAPABILITIES_BIT_COLOR_TEMPERATURE;
 | 
			
		||||
	// Startup is only defined for color temperature, so why would we load any colors here ...
 | 
			
		||||
	pColor->colorMode = ZCL_COLOR_MODE_COLOR_TEMPERATURE_MIREDS;
 | 
			
		||||
	pColor->enhancedColorMode = ZCL_COLOR_MODE_COLOR_TEMPERATURE_MIREDS;
 | 
			
		||||
 | 
			
		||||
	colorInfo.currentColorTemp256 = (u32)(pColor->colorTemperatureMireds) << 8;
 | 
			
		||||
	colorInfo.colorTempRemainingTime = 0;
 | 
			
		||||
 | 
			
		||||
	light_applyUpdate_16(&pColor->colorTemperatureMireds, &colorInfo.currentColorTemp256, &colorInfo.stepColorTemp256, &colorInfo.colorTempRemainingTime,
 | 
			
		||||
							pColor->colorTempPhysicalMinMireds, pColor->colorTempPhysicalMaxMireds, FALSE);
 | 
			
		||||
#endif
 | 
			
		||||
								pColor->colorTempPhysicalMinMireds, pColor->colorTempPhysicalMaxMireds, FALSE);
 | 
			
		||||
	
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*********************************************************************
 | 
			
		||||
@ -179,11 +161,13 @@ void sampleLight_updateColor(void)
 | 
			
		||||
	zcl_lightColorCtrlAttr_t *pColor = zcl_colorAttrGet();
 | 
			
		||||
	zcl_levelAttr_t *pLevel = zcl_levelAttrGet();
 | 
			
		||||
 | 
			
		||||
#if COLOR_RGB_SUPPORT
 | 
			
		||||
	hwLight_colorUpdate_HSV2RGB(pColor->currentHue, pColor->currentSaturation, pLevel->curLevel);
 | 
			
		||||
#elif COLOR_CCT_SUPPORT
 | 
			
		||||
	hwLight_colorUpdate_colorTemperature(pColor->colorTemperatureMireds, pLevel->curLevel);
 | 
			
		||||
#endif
 | 
			
		||||
	if(pColor->colorMode == ZCL_COLOR_MODE_CURRENT_X_Y) {
 | 
			
		||||
		hwLight_colorUpdate_XY2RGB(pColor->currentX, pColor->currentY, pLevel->curLevel);
 | 
			
		||||
	} else if(pColor->colorMode == ZCL_COLOR_MODE_CURRENT_HUE_SATURATION || pColor->enhancedColorMode == ZCL_ENHANCED_COLOR_MODE_CURRENT_HUE_SATURATION){
 | 
			
		||||
		hwLight_colorUpdate_HSV2RGB(pColor->currentHue, pColor->currentSaturation, pLevel->curLevel);
 | 
			
		||||
	} else if(pColor->colorMode == ZCL_COLOR_MODE_COLOR_TEMPERATURE_MIREDS){
 | 
			
		||||
		hwLight_colorUpdate_colorTemperature(pColor->colorTemperatureMireds, pLevel->curLevel);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*********************************************************************
 | 
			
		||||
@ -199,7 +183,6 @@ static s32 sampleLight_colorTimerEvtCb(void *arg)
 | 
			
		||||
{
 | 
			
		||||
	zcl_lightColorCtrlAttr_t *pColor = zcl_colorAttrGet();
 | 
			
		||||
 | 
			
		||||
#if COLOR_RGB_SUPPORT
 | 
			
		||||
	if( (pColor->enhancedColorMode == ZCL_COLOR_MODE_CURRENT_HUE_SATURATION) ||
 | 
			
		||||
		(pColor->enhancedColorMode == ZCL_ENHANCED_COLOR_MODE_CURRENT_HUE_SATURATION) ){
 | 
			
		||||
		if(colorInfo.saturationRemainingTime){
 | 
			
		||||
@ -212,20 +195,14 @@ static s32 sampleLight_colorTimerEvtCb(void *arg)
 | 
			
		||||
									ZCL_COLOR_ATTR_HUE_MIN, ZCL_COLOR_ATTR_HUE_MAX, TRUE);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
#elif COLOR_CCT_SUPPORT
 | 
			
		||||
	if(pColor->enhancedColorMode == ZCL_COLOR_MODE_COLOR_TEMPERATURE_MIREDS){
 | 
			
		||||
	else if(pColor->enhancedColorMode == ZCL_COLOR_MODE_COLOR_TEMPERATURE_MIREDS){
 | 
			
		||||
		if(colorInfo.colorTempRemainingTime){
 | 
			
		||||
			light_applyUpdate_16(&pColor->colorTemperatureMireds, &colorInfo.currentColorTemp256, &colorInfo.stepColorTemp256, &colorInfo.colorTempRemainingTime,
 | 
			
		||||
									colorInfo.colorTempMinMireds, colorInfo.colorTempMaxMireds, FALSE);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if COLOR_RGB_SUPPORT
 | 
			
		||||
	if(colorInfo.saturationRemainingTime || colorInfo.hueRemainingTime){
 | 
			
		||||
#elif COLOR_CCT_SUPPORT
 | 
			
		||||
	if(colorInfo.colorTempRemainingTime){
 | 
			
		||||
#endif
 | 
			
		||||
	if(colorInfo.saturationRemainingTime || colorInfo.hueRemainingTime || colorInfo.colorTempRemainingTime){
 | 
			
		||||
		return 0;
 | 
			
		||||
	}else{
 | 
			
		||||
		colorTimerEvt = NULL;
 | 
			
		||||
@ -249,7 +226,6 @@ static void sampleLight_colorTimerStop(void)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#if COLOR_RGB_SUPPORT
 | 
			
		||||
/*********************************************************************
 | 
			
		||||
 * @fn      sampleLight_colorLoopTimerEvtCb
 | 
			
		||||
 *
 | 
			
		||||
@ -826,8 +802,6 @@ static void sampleLight_colorLoopSetProcess(zcl_colorCtrlColorLoopSetCmd_t *cmd)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#elif COLOR_CCT_SUPPORT
 | 
			
		||||
 | 
			
		||||
/*********************************************************************
 | 
			
		||||
 * @fn      sampleLight_moveToColorTemperatureProcess
 | 
			
		||||
 *
 | 
			
		||||
@ -988,7 +962,6 @@ static void sampleLight_stepColorTemperatureProcess(zcl_colorCtrlStepColorTemper
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/*********************************************************************
 | 
			
		||||
 * @fn      sampleLight_stopMoveStepProcess
 | 
			
		||||
@ -1003,12 +976,9 @@ static void sampleLight_stopMoveStepProcess(void)
 | 
			
		||||
{
 | 
			
		||||
	//zcl_lightColorCtrlAttr_t *pColor = zcl_colorAttrGet();
 | 
			
		||||
 | 
			
		||||
#if COLOR_RGB_SUPPORT
 | 
			
		||||
	colorInfo.hueRemainingTime = 0;
 | 
			
		||||
	colorInfo.saturationRemainingTime = 0;
 | 
			
		||||
#elif COLOR_CCT_SUPPORT
 | 
			
		||||
	colorInfo.colorTempRemainingTime = 0;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
	sampleLight_colorTimerStop();
 | 
			
		||||
}
 | 
			
		||||
@ -1028,7 +998,6 @@ status_t sampleLight_colorCtrlCb(zclIncomingAddrInfo_t *pAddrInfo, u8 cmdId, voi
 | 
			
		||||
{
 | 
			
		||||
	if(pAddrInfo->dstEp == SAMPLE_LIGHT_ENDPOINT){
 | 
			
		||||
		switch(cmdId){
 | 
			
		||||
#if COLOR_RGB_SUPPORT
 | 
			
		||||
			case ZCL_CMD_LIGHT_COLOR_CONTROL_MOVE_TO_HUE:
 | 
			
		||||
				sampleLight_moveToHueProcess((zcl_colorCtrlMoveToHueCmd_t *)cmdPayload);
 | 
			
		||||
				break;
 | 
			
		||||
@ -1074,7 +1043,6 @@ status_t sampleLight_colorCtrlCb(zclIncomingAddrInfo_t *pAddrInfo, u8 cmdId, voi
 | 
			
		||||
			case ZCL_CMD_LIGHT_COLOR_CONTROL_COLOR_LOOP_SET:
 | 
			
		||||
				sampleLight_colorLoopSetProcess((zcl_colorCtrlColorLoopSetCmd_t *)cmdPayload);
 | 
			
		||||
				break;
 | 
			
		||||
#elif COLOR_CCT_SUPPORT
 | 
			
		||||
			case ZCL_CMD_LIGHT_COLOR_CONTROL_MOVE_TO_COLOR_TEMPERATURE:
 | 
			
		||||
				sampleLight_moveToColorTemperatureProcess((zcl_colorCtrlMoveToColorTemperatureCmd_t *)cmdPayload);
 | 
			
		||||
				break;
 | 
			
		||||
@ -1084,7 +1052,6 @@ status_t sampleLight_colorCtrlCb(zclIncomingAddrInfo_t *pAddrInfo, u8 cmdId, voi
 | 
			
		||||
			case ZCL_CMD_LIGHT_COLOR_CONTROL_STEP_COLOR_TEMPERATURE:
 | 
			
		||||
				sampleLight_stepColorTemperatureProcess((zcl_colorCtrlStepColorTemperatureCmd_t *)cmdPayload);
 | 
			
		||||
				break;
 | 
			
		||||
#endif
 | 
			
		||||
			case ZCL_CMD_LIGHT_COLOR_CONTROL_STOP_MOVE_STEP:
 | 
			
		||||
				sampleLight_stopMoveStepProcess();
 | 
			
		||||
				break;
 | 
			
		||||
 | 
			
		||||
@ -60,14 +60,11 @@ static void sampleLight_sceneRecallReqHandler(zclIncomingAddrInfo_t *pAddrInfo,
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef ZCL_LIGHT_COLOR_CONTROL
 | 
			
		||||
#if COLOR_RGB_SUPPORT
 | 
			
		||||
	u8 hue = pScene->extField[extLen+3];
 | 
			
		||||
	u8 saturation = pScene->extField[extLen+4];
 | 
			
		||||
	extLen += 5;
 | 
			
		||||
#elif COLOR_CCT_SUPPORT
 | 
			
		||||
	u16 colorTemperatureMireds = BUILD_U16(pScene->extField[extLen+3], pScene->extField[extLen+4]);
 | 
			
		||||
	extLen += 5;
 | 
			
		||||
#endif
 | 
			
		||||
	u8 colorMode  = pScene->extField[extLen+3];
 | 
			
		||||
	u8 hue = pScene->extField[extLen+4];
 | 
			
		||||
	u8 saturation = pScene->extField[extLen+5];
 | 
			
		||||
	u16 colorTemperatureMireds = BUILD_U16(pScene->extField[extLen+6], pScene->extField[extLen+7]);
 | 
			
		||||
	extLen += 8;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef ZCL_LEVEL_CTRL
 | 
			
		||||
@ -80,22 +77,22 @@ static void sampleLight_sceneRecallReqHandler(zclIncomingAddrInfo_t *pAddrInfo,
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef ZCL_LIGHT_COLOR_CONTROL
 | 
			
		||||
#if COLOR_RGB_SUPPORT
 | 
			
		||||
	zcl_colorCtrlMoveToHueAndSaturationCmd_t move2HueAndSat;
 | 
			
		||||
	move2HueAndSat.hue = hue;
 | 
			
		||||
	move2HueAndSat.saturation = saturation;
 | 
			
		||||
	move2HueAndSat.transitionTime = pScene->transTime;
 | 
			
		||||
	move2HueAndSat.optPresent = 0;
 | 
			
		||||
	if (colorMode == ZCL_COLOR_MODE_CURRENT_HUE_SATURATION) {
 | 
			
		||||
		zcl_colorCtrlMoveToColorTemperatureCmd_t move2ColorTemp;
 | 
			
		||||
		move2ColorTemp.colorTemperature = colorTemperatureMireds;
 | 
			
		||||
		move2ColorTemp.transitionTime = pScene->transTime;
 | 
			
		||||
		move2ColorTemp.optPresent = 0;
 | 
			
		||||
 | 
			
		||||
	sampleLight_colorCtrlCb(pAddrInfo, ZCL_CMD_LIGHT_COLOR_CONTROL_MOVE_TO_HUE_AND_SATURATION, &move2HueAndSat);
 | 
			
		||||
#elif COLOR_CCT_SUPPORT
 | 
			
		||||
	zcl_colorCtrlMoveToColorTemperatureCmd_t move2ColorTemp;
 | 
			
		||||
	move2ColorTemp.colorTemperature = colorTemperatureMireds;
 | 
			
		||||
	move2ColorTemp.transitionTime = pScene->transTime;
 | 
			
		||||
	move2ColorTemp.optPresent = 0;
 | 
			
		||||
		sampleLight_colorCtrlCb(pAddrInfo, ZCL_CMD_LIGHT_COLOR_CONTROL_MOVE_TO_COLOR_TEMPERATURE, &move2ColorTemp);
 | 
			
		||||
	} else {
 | 
			
		||||
		zcl_colorCtrlMoveToHueAndSaturationCmd_t move2HueAndSat;
 | 
			
		||||
		move2HueAndSat.hue = hue;
 | 
			
		||||
		move2HueAndSat.saturation = saturation;
 | 
			
		||||
		move2HueAndSat.transitionTime = pScene->transTime;
 | 
			
		||||
		move2HueAndSat.optPresent = 0;
 | 
			
		||||
 | 
			
		||||
	sampleLight_colorCtrlCb(pAddrInfo, ZCL_CMD_LIGHT_COLOR_CONTROL_MOVE_TO_COLOR_TEMPERATURE, &move2ColorTemp);
 | 
			
		||||
#endif
 | 
			
		||||
		sampleLight_colorCtrlCb(pAddrInfo, ZCL_CMD_LIGHT_COLOR_CONTROL_MOVE_TO_HUE_AND_SATURATION, &move2HueAndSat);
 | 
			
		||||
	}
 | 
			
		||||
#endif
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -137,15 +134,12 @@ static void sampleLight_sceneStoreReqHandler(zcl_sceneEntry_t *pScene)
 | 
			
		||||
 | 
			
		||||
	pScene->extField[extLen++] = LO_UINT16(ZCL_CLUSTER_LIGHTING_COLOR_CONTROL);
 | 
			
		||||
	pScene->extField[extLen++] = HI_UINT16(ZCL_CLUSTER_LIGHTING_COLOR_CONTROL);
 | 
			
		||||
#if COLOR_RGB_SUPPORT
 | 
			
		||||
	pScene->extField[extLen++] = 2;
 | 
			
		||||
	pScene->extField[extLen++] = 5;
 | 
			
		||||
	pScene->extField[extLen++] = pColor->colorMode;
 | 
			
		||||
	pScene->extField[extLen++] = pColor->currentHue;
 | 
			
		||||
	pScene->extField[extLen++] = pColor->currentSaturation;
 | 
			
		||||
#elif COLOR_CCT_SUPPORT
 | 
			
		||||
	pScene->extField[extLen++] = 2;
 | 
			
		||||
	pScene->extField[extLen++] = LO_UINT16(pColor->colorTemperatureMireds);
 | 
			
		||||
	pScene->extField[extLen++] = HI_UINT16(pColor->colorTemperatureMireds);
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
	pScene->extFieldLen = extLen;
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user