195 lines
4.1 KiB
C
195 lines
4.1 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"
|
|
#include "sampleLightCtrl.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)
|
|
{
|
|
}
|
|
}
|
|
|
|
volatile u8 G_pwmTestPressed = 0;
|
|
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);
|
|
|
|
// todo remove test for color order
|
|
if (G_pwmTestPressed == 0) {
|
|
hwLight_colorUpdate_RGB(255,0,0);
|
|
G_pwmTestPressed++;
|
|
} else if (G_pwmTestPressed == 1) {
|
|
hwLight_colorUpdate_RGB(0,255,0);
|
|
G_pwmTestPressed++;
|
|
} else if (G_pwmTestPressed == 2) {
|
|
hwLight_colorUpdate_RGB(0,0,255);
|
|
G_pwmTestPressed++;
|
|
} else {
|
|
G_pwmTestPressed = 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
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__ */
|