153 lines
3.6 KiB
C
153 lines
3.6 KiB
C
/********************************************************************************************************
|
|
* @file app_ui.c
|
|
*
|
|
* @brief This is the source file for app_ui
|
|
*
|
|
* @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.
|
|
*******************************************************************************************************/
|
|
|
|
#if (__PROJECT_TL_DIMMABLE_LIGHT__)
|
|
|
|
/**********************************************************************
|
|
* INCLUDES
|
|
*/
|
|
#include "tl_common.h"
|
|
#include "zb_api.h"
|
|
#include "zcl_include.h"
|
|
#include "sampleLight.h"
|
|
#include "app_ui.h"
|
|
|
|
/**********************************************************************
|
|
* LOCAL CONSTANTS
|
|
*/
|
|
|
|
|
|
/**********************************************************************
|
|
* TYPEDEFS
|
|
*/
|
|
|
|
|
|
/**********************************************************************
|
|
* GLOBAL VARIABLES
|
|
*/
|
|
|
|
|
|
/**********************************************************************
|
|
* LOCAL FUNCTIONS
|
|
*/
|
|
void led_on(u32 pin){
|
|
drv_gpio_write(pin, LED_ON);
|
|
}
|
|
|
|
void led_off(u32 pin){
|
|
drv_gpio_write(pin, LED_OFF);
|
|
}
|
|
|
|
void led_init(void){
|
|
led_off(LED_STATUS_R);
|
|
led_off(LED_STATUS_G);
|
|
led_off(LED_STATUS_B);
|
|
}
|
|
|
|
void localPermitJoinState(void){
|
|
static bool assocPermit = 0;
|
|
if(assocPermit != zb_getMacAssocPermit()){
|
|
assocPermit = zb_getMacAssocPermit();
|
|
if(assocPermit){
|
|
led_on(LED_STATUS_R);
|
|
}else{
|
|
led_off(LED_STATUS_R);
|
|
}
|
|
}
|
|
}
|
|
|
|
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){
|
|
|
|
}
|
|
}
|
|
|
|
void buttonShortPressed(u8 btNum){
|
|
if(btNum == VK_SW1){
|
|
if(zb_isDeviceJoinedNwk()){
|
|
gLightCtx.sta = !gLightCtx.sta;
|
|
if(gLightCtx.sta){
|
|
sampleLight_onoff(ZCL_ONOFF_STATUS_ON);
|
|
}else{
|
|
sampleLight_onoff(ZCL_ONOFF_STATUS_OFF);
|
|
}
|
|
}
|
|
}else if(btNum == VK_SW2){
|
|
/* toggle local permit Joining */
|
|
static u8 duration = 0;
|
|
duration = duration ? 0 : 0xff;
|
|
zb_nlmePermitJoiningRequest(duration);
|
|
}
|
|
}
|
|
|
|
void keyScan_keyPressedCB(kb_data_t *kbEvt){
|
|
// u8 toNormal = 0;
|
|
u8 keyCode = kbEvt->keycode[0];
|
|
// static u8 lastKeyCode = 0xff;
|
|
|
|
buttonShortPressed(keyCode);
|
|
|
|
if(keyCode == VK_SW1){
|
|
gLightCtx.keyPressedTime = clock_time();
|
|
gLightCtx.state = APP_FACTORY_NEW_SET_CHECK;
|
|
}
|
|
}
|
|
|
|
|
|
void keyScan_keyReleasedCB(u8 keyCode){
|
|
gLightCtx.state = APP_STATE_NORMAL;
|
|
}
|
|
|
|
volatile u8 T_keyPressedNum = 0;
|
|
void app_key_handler(void){
|
|
static u8 valid_keyCode = 0xff;
|
|
|
|
if(gLightCtx.state == APP_FACTORY_NEW_SET_CHECK){
|
|
if(clock_time_exceed(gLightCtx.keyPressedTime, 5*1000*1000)){
|
|
buttonKeepPressed(VK_SW1);
|
|
}
|
|
}
|
|
|
|
if(kb_scan_key(0 , 1)){
|
|
T_keyPressedNum++;
|
|
if(kb_event.cnt){
|
|
keyScan_keyPressedCB(&kb_event);
|
|
if(kb_event.cnt == 1){
|
|
valid_keyCode = kb_event.keycode[0];
|
|
}
|
|
}else{
|
|
keyScan_keyReleasedCB(valid_keyCode);
|
|
valid_keyCode = 0xff;
|
|
}
|
|
}
|
|
}
|
|
|
|
#endif /* __PROJECT_TL_DIMMABLE_LIGHT__ */
|