P2UWaterJiangXi/app/UWater_key_app.c

257 lines
7.2 KiB
C
Raw Permalink Normal View History

2024-06-03 15:49:39 +08:00
/*
* File: __GP22Gas_KEY_APP_C
* Author:
*
* Created on<EFBFBD><EFBFBD>2015-5-18
*/
#ifdef __cplusplus
extern "C"
{
#endif
/*--------------------------------Including-------------------------------------------*/
#include "UWater_key_app.h"
#include "UWater_frame_app.h"
#include "UWater_timer1uS_driver.h"
#include "UWater_valve_driver.h"
/*------------------------------ Variable Define -------------------------------------*/
static u8 s_g_key_sys_state; //<2F><><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6>״̬<D7B4><CCAC>״̬<D7B4><CCAC><EFBFBD><EFBFBD>
static u8 g_menu_change_msg; //<2F>в˵<D0B2>MSG;
static u8 g_key_res = 0;
static u8 s_key_iropen = 0;
static u8 s_old_tch_state;
u8 s_valve_close_key_cnt=0;
/*************************************************************************************
* @fun_name: void KeyMainMachineDriver(void)
* @brief : <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>Ӧ<EFBFBD>ò<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] : None
* @param[out] :None
* @retval : None
* @other : <EFBFBD><EFBFBD><EFBFBD><EFBFBD>MainSpace<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>main<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѭ<EFBFBD><EFBFBD><EFBFBD>С<EFBFBD>
*************************************************************************************/
void KeyMachineApp(void)
{
switch (s_g_key_sys_state)
{
case KEY_SYS_S0:
{
g_key_res = KeyCheckMsg();
switch (g_key_res)
{
case NO_EVENT:
{
if(((FrameCheckParaApp(FramePara_FuncCfg0_3)>>24)&0xFF) != s_old_tch_state)
{
s_old_tch_state = FrameCheckParaApp(FramePara_FuncCfg0_3)>>24;
if(((FrameCheckParaApp(FramePara_FuncCfg0_3)>>24)&0xFF) == 0xAA)
{
FrameSetMsgApp(MsgTouchKeyReset);
}
else
{
Gpio_WriteOutputIO(TCH_KEY_POWER_GPIO, TCH_KEY_POWER_PIN, FALSE);//<2F>رհ<D8B1><D5B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
}
if(FrameCheckMsgApp(MsgTouchKeyReset) &&(((FrameCheckParaApp(FramePara_FuncCfg0_3)>>24)&0xFF) == 0xAA))
{
FrameClearMsgApp(MsgTouchKeyReset);
if(TchKey_GetPressLimitState() == 0)
{
EnableNvic(TCH_KEY_IRQ, TCH_KEY_PRIORITY, FALSE);
Gpio_WriteOutputIO(TCH_KEY_POWER_GPIO,TCH_KEY_POWER_PIN,FALSE);
Set100msTimer(TIMER_100MS_TOUCH_RESET,10);//1s
s_g_key_sys_state = KEY_SYS_S1;
}
s_valve_close_key_cnt=0;//<2F>ط<EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD><E2B0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿСʱ<D0A1><CAB1>0
}
else
{
s_g_key_sys_state = KEY_SYS_S0;
}
}
break;
case SHORT_PRESS:
{
KeyClearMsg(1);
g_key_res = 0;
g_menu_change_msg |= MENU_TWO;
s_key_iropen = TRUE;
FrameSetMsgApp(Msg_FactoryBleActive);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
s_g_key_sys_state = KEY_SYS_S0;
}
break;
case LONG_PRESS:
{
KeyClearMsg(2);
g_key_res = 0;
if (LcdCheckMeumApp() == ((((u16)A1) << 8) | A1B4) &&FrameCheckParaApp(FramePara_EnableTestFunc)) //<2F><>˲ʱ<CBB2><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6B3A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ۼ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD><D0BB><EFBFBD><EFBFBD>
{
g_menu_change_msg = g_menu_change_msg | MENU_TEST;
s_g_key_sys_state = KEY_SYS_S0;
}
else
{
#if MODULE_BLE_USED
#else
if (LcdCheckMeumApp() == ((((u16)A3) << 8) | A3B2)) // A3B1<42><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>A3B2<42><32><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD>
{
g_menu_change_msg |= MENU_ACTIVE_RF;
}
#endif
g_menu_change_msg |= MENU_ONE;
s_g_key_sys_state = KEY_SYS_S0;
}
}
break;
case LONGLONG_PRESS:
{
KeyClearMsg(4);
g_key_res = 0;
#if defined(VALVE)
//<2F>ط<EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><CFB1>İ<EFBFBD><C4B0><EFBFBD><EFBFBD>Ѷ<EFBFBD>
if((ValveGetState() == VALVE_STATE_CLOSE_EMERGENCY)||(ValveGetState() == VALVE_STATE_CLOSE))
{
if(s_valve_close_key_cnt<2)//ÿСʱ<D0A1><CAB1><EFBFBD><EFBFBD>2<EFBFBD><32>
{
FrameSetMsgApp(Msg_ValveOpenEmergency);//Ӧ<><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
g_menu_change_msg |= MENU_ACTIVE_RF;
s_valve_close_key_cnt++;
}
}
#endif
s_g_key_sys_state = KEY_SYS_S0;
}
break;
case ERR_PRESS:
{
KeyClearMsg(3);
g_key_res = 0;
g_menu_change_msg |= MENU_DEFAULT;
s_g_key_sys_state = KEY_SYS_S0;
}
break;
default:
KeyClearMsg(1);
KeyClearMsg(2);
KeyClearMsg(3);
KeyClearMsg(4);
KeyClearMsg(5);
KeyClearMsg(6);
KeyClearMsg(7);
KeyClearMsg(8);
break;
}
}
break;
case KEY_SYS_S1:
{
if(TRUE ==Check100msTimer(TIMER_100MS_TOUCH_RESET))
{
Gpio_WriteOutputIO(TCH_KEY_POWER_GPIO,TCH_KEY_POWER_PIN,TRUE);
EnableNvic(TCH_KEY_IRQ, TCH_KEY_PRIORITY, TRUE);
s_g_key_sys_state = KEY_SYS_S0;
}
}
break;
default:
break;
}
}
/***********************Ӧ<>ò㰴<C3B2><E3B0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>***************************
Function: void KeyInitApp(void)
Description: Ӧ<EFBFBD>ò<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Input: <EFBFBD>ޣ<EFBFBD>
Return: <EFBFBD>ޣ<EFBFBD>
Others: <EFBFBD><EFBFBD><EFBFBD><EFBFBD>MainSpace<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>ӿڣ<EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD>ӿڡ<EFBFBD>
*****************************************************************/
void KeyInitApp(void)
{
s_g_key_sys_state = KEY_SYS_S0; //<2F><><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6>״̬<D7B4><CCAC>״̬<D7B4><CCAC><EFBFBD><EFBFBD>
g_menu_change_msg = FALSE; //<2F>в˵<D0B2>MSG<53><47><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>Ϊ0;
g_key_res = 0;
}
/***********************<2A><>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>LCD<43><44>MSG<53><47><EFBFBD><EFBFBD>***************************
Function: u8 KeyCheckLcdMsgApp(void)
Description: <EFBFBD><EFBFBD>ѯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>LCD<EFBFBD><EFBFBD>MSG<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Input: <EFBFBD>ޣ<EFBFBD>
Return: bit0=1<EFBFBD><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD>MSG<EFBFBD><EFBFBD>bit1=1<EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD>MSG<EFBFBD><EFBFBD>bit2=1<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD>ϲ˵<EFBFBD><EFBFBD><EFBFBD>bit3=1<EFBFBD><EFBFBD><EFBFBD>м״̬<EFBFBD>˵<EFBFBD><EFBFBD>bbit4=1<EFBFBD><EFBFBD><EFBFBD>̰<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>bit5=1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߽<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ծ<EFBFBD><EFBFBD>MSG for GSM APP
Others: <EFBFBD><EFBFBD><EFBFBD><EFBFBD>MainSpace<EFBFBD><EFBFBD><EFBFBD>ڶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿڣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿڡ<EFBFBD>
****************************************************************/
u8 KeyCheckLcdMsgApp(u8 msg)
{
return (g_menu_change_msg & msg);
}
/***********************<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>LCD<43><44>MSG<53><47><EFBFBD><EFBFBD>***************************
Function: u8 KeyClearLcdMessageApp (u8)
Description: <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>LCD<EFBFBD><EFBFBD>MSG<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Input: <EFBFBD><EFBFBD><EFBFBD><EFBFBD>MSG 0<EFBFBD><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD>MSG<EFBFBD><EFBFBD>1<EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD>MSG<EFBFBD><EFBFBD>2<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD>ϲ˵<EFBFBD><EFBFBD><EFBFBD>3<EFBFBD><EFBFBD><EFBFBD>м״̬<EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD> 4<EFBFBD><EFBFBD><EFBFBD>̰<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 5<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߽<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ծ<EFBFBD><EFBFBD>MSG for GSM APP
Return: TRUE<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD>FALSE<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD>
Others: <EFBFBD><EFBFBD><EFBFBD><EFBFBD>MainSpace<EFBFBD><EFBFBD><EFBFBD>ڶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿڣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿڡ<EFBFBD>
****************************************************************/
u8 KeyClearLcdMsgApp(u8 msg)
{
g_menu_change_msg &= (~msg);
return TRUE;
}
/***********************<2A><>ѯģ<D1AF><C4A3><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*****************
Function: u8 KeyIfSleepApp(void)
Description: <EFBFBD><EFBFBD>ѯģ<EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߣ<EFBFBD>
Input: <EFBFBD>ޣ<EFBFBD>
Return: TRUE<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߣ<EFBFBD> FALSE<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߡ<EFBFBD>
Others: <EFBFBD><EFBFBD><EFBFBD><EFBFBD>MainSpace<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿڣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD>ӿڡ<EFBFBD>
****************************************************************/
u8 KeyIfSleepApp(void)
{
if (s_g_key_sys_state == KEY_SYS_S0)
return TRUE;
else
return FALSE;
}
/***********************<2A><><EFBFBD>ð<EFBFBD><C3B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѻ<EFBFBD><D1BA><EFBFBD><EFBFBD><EFBFBD>Ϣ***************************
Function: void KeySetLcdMsgApp(u8 msg)
Description: <EFBFBD><EFBFBD><EFBFBD>ð<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѻ<EFBFBD><EFBFBD><EFBFBD>10S
Input: <EFBFBD><EFBFBD>
Return: <EFBFBD><EFBFBD>;
Others:
*****************************************************************/
void KeySetLcdMsgApp(u8 msg)
{
g_menu_change_msg |= msg;
}
/***********************<2A><>ѯ<EFBFBD>Ƿ<EFBFBD><C7B7>а<EFBFBD><D0B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѻ<EFBFBD><D1BA><EFBFBD>10S***************************
Function: void KeyCheckIrOpenMsg(void)
Description: <EFBFBD><EFBFBD>ѯ<EFBFBD>Ƿ<EFBFBD><EFBFBD>а<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѻ<EFBFBD><EFBFBD><EFBFBD>10S
Input: <EFBFBD><EFBFBD>
Return: s_key_iropen;
Others:
*****************************************************************/
u8 KeyCheckIrOpenMsg(void)
{
return s_key_iropen;
}
/***********************<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѻ<EFBFBD><D1BA><EFBFBD>ͨ<EFBFBD><CDA8>10s<30><73>־***************************
Function: void KeyClearIrOpenMsg(void)
Description: <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѻ<EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD>10s<EFBFBD><EFBFBD>־
Input: <EFBFBD><EFBFBD>;
Return: <EFBFBD><EFBFBD>;
Others:
*****************************************************************/
void KeyClearIrOpenMsg(void)
{
s_key_iropen = FALSE;
}