From 72def895431ad7a08e635b11f3da738e2b2c4618 Mon Sep 17 00:00:00 2001
From: wujiazhi <1147861305@qq.com>
Date: Thu, 13 Jun 2024 11:31:04 +0800
Subject: [PATCH] add lower model test
---
Function/KEY/key.c | 331 ++++++++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 303 insertions(+), 28 deletions(-)
diff --git a/Function/KEY/key.c b/Function/KEY/key.c
index 9aa3b1b..199293e 100644
--- a/Function/KEY/key.c
+++ b/Function/KEY/key.c
@@ -1,44 +1,319 @@
#include "key.h"
-#include "gpio.h"
+#include "multi_button.h"
+#include "uart.h"
+#include "valve_control.h"
+#include "extern_rtc.h"
+#include "e2p.h"
+#include "power_manage.h"
+#include "adc.h"
+#include "master_slave_inter.h"
+#include "ir_nec.h"
#include "lcd.h"
+#include "low_pwr_test.h"
+#include "gprs.h"
+#include "administrator.h"
+#include "system_parameter.h"
+#include "system_log.h"
+#include "sundry.h"
+#include "tim.h"
+#include "working_time_calculate.h"
+#include "gpio.h"
+/******************************************************************************
+ * ����������
+ *-----------------------------------------------------------------------------
+ * ����B��Զ�����ͣ��軽����Ļ��
+ * �㰴C��ģ���ȡ������Ȩ
+ * �㰴A��������Ļ/��ҳ
+ * ˫��A����ȡ��ʾ������Ȩ
+ * ����A���ض��������л�ģʽ������/�춨/������ȡ��
+ * A + B����/�ط�
+ *
+ *****************************************************************************/
+FlagStatus key_awaken_flag_g = RESET;
-/*******************************************************************************
- * Function Name: Key_GPIO_Init
- * Parameters: none
- * Return: none
- * Description:
- ******************************************************************************/
-void Key_GPIO_Init(void)
+struct Button btn_B;//���밴��B�ṹ��
+struct Button btn_C;//���밴��C�ṹ�� //Ԥ��
+struct Button btn_A;//���밴��A�ṹ��
+
+struct Button btnA_B;//��ϰ���
+
+void KEY_IO_Init(void)
{
- InputtIO(KEY1_PORT,KEY1_PIN,IN_PULLUP);
- InputtIO(KEY2_PORT,KEY2_PIN,IN_PULLUP);
- InputtIO(KEY3_PORT,KEY3_PIN,IN_PULLUP);
- InputtIO(KEY4_PORT,KEY4_PIN,IN_PULLUP);
+ CMU_PERCLK_SetableEx(PADCLK, ENABLE); //PADʱ�ӣ�GPIO��ʹ�ܺ���
+ InputtIO( KEYA_S1_PORT, KEYA_S1_PIN, IN_PULLUP);//��Ϊ��������Ч���������������裬���ֶϿ�
+ InputtIO( KEYB_S2_PORT, KEYB_S2_PIN, IN_PULLUP);//��Ϊ��������Ч���������������裬���ֶϿ�
+ InputtIO( KEYC_S3_PORT, KEYC_S3_PIN, IN_PULLUP);
}
-
-void keyPro(void)
+//����B״̬��ȡ�ӿ�
+uint8_t read_buttonB_GPIO(void)//B
{
- static uint8_t P_Key1Cnt=0,R_Key2Cnt=0,L_Key3Cnt=0;
-
- P_Key1Cnt = (KEY1_IO_READ==Bit_RESET)? P_Key1Cnt+1:0;
- R_Key2Cnt = (KEY2_IO_READ==Bit_RESET)? R_Key2Cnt+1:0;
- L_Key3Cnt = (KEY3_IO_READ==Bit_RESET)? L_Key3Cnt+1:0;
+ return KEY_B_READ;
+}
+//����C״̬��ȡ�ӿ�
+uint8_t read_buttonC_GPIO(void)//C
+{
+ return KEY_C_READ;
+}
+//����A״̬��ȡ�ӿ�
+uint8_t read_buttonA_GPIO(void)//A
+{
+ return KEY_A_READ;
+}
- if(R_Key2Cnt== 5)
+//��ϰ���״̬��ȡ�ӿ�
+uint8_t read_buttonA_B_GPIO(void)
+{
+ return KEY_B_READ | KEY_A_READ;
+}
+
+//�����ص�
+void button_callback(void *button)
+{
+ uint32_t btn_event_val;
+
+ btn_event_val = get_button_event((struct Button *)button);
+
+ switch(btn_event_val)
{
- //�����Ҽ�����5������ѯģʽ
- R_Key2Cnt = 0;
- if(sys_display_para_g.sys_and_display_mode == NORMAL_MODE){
- sys_display_para_g.sys_and_display_mode = DISPLAY_PARA;
- }else if(sys_display_para_g.sys_and_display_mode == DISPLAY_PARA){
- sys_display_para_g.sys_and_display_mode = NORMAL_MODE;
- }else{
- sys_display_para_g.sys_and_display_mode = NORMAL_MODE;
+ case PRESS_DOWN:
+ printf("---> key12 press down! <---\r\n");
+ break;
+
+ case PRESS_UP:
+ printf("***> key12 press up! <***\r\n");
+ break;
+
+ case PRESS_REPEAT:
+ printf("---> key12 press repeat! <---\r\n");
+ break;
+
+ case SINGLE_CLICK:
+ printf("---> key12 single click! <---\r\n");
+ break;
+
+ case DOUBLE_CLICK:
+ printf("***> key12 double click! <***\r\n");
+ break;
+
+ case LONG_PRESS_START:
+ printf("---> key12 long press start! <---\r\n");
+ break;
+
+ case LONG_PRESS_HOLD:
+ printf("***> key12 long press hold! <***\r\n");
+ break;
+ }
+}
+//����1/S1/B�����¼��ص�����
+//void BTN_B_PRESS_DOWN_Handler(void* btn)
+//{
+// printf("---> key1/S1/B press down! <---\r\n");
+//}
+////����1/S1/B�ɿ��¼��ص�����
+//void BTN_B_PRESS_UP_Handler(void* btn)
+//{
+// printf("***> key1/S1/B press up! <***\r\n");
+//}
+//����1/S1/B�����¼��ص�����
+//void BTN_B_SINGLE_Click_Handler(void* btn)//����B
+//{
+// printf("***> key11/S1/B single click! <***\r\n");
+//}
+//����1/S1/B�����¼��ص�����
+void BTN_B_LONG_PRESS_START_Handler(void* btn)//����B
+{
+ if((KEY_B_READ || KEY_A_READ) == 0)
+ {}
+ else
+ {
+#ifdef RS232_PRINTF
+ printf("***> Զ�����ͣ��軽����Ļ�� <***\r\n");
+#endif
+ if(sys_display_para_g.sys_and_display_mode == SET_PARA_MODE)
+ __LITH_BAT_WORKINGTIME_RECOVER__;
+ else if(__SYS_DELAY_SEC_FLAG_GET(sys_active_time) != SET)
+ {
+ gprs_soft_para_g.gprs_send_type_flag = GPRS_MEANS_KEY;
+ key_save_send_data_flag_g = SET;
}
}
+}
+
+//����C�����¼��ص�����
+void BTN_C_SINGLE_Click_Handler(void* btn)//Ԥ������C
+{
+#ifdef RS232_PRINTF
+ printf("***> ��ȡ������Ȩ <***\r\n");
+#endif
+ if(sys_some_flag_g.uncap_flag == RESET && sys_display_para_g.sys_and_display_mode != SET_PARA_MODE)
+ {
+ __SYS_DELAY_SEC_TIME_SET_(mode_flag_active_time,10);
+ __SYS_PARA_FLAG_SET_(uncap_flag);
+ }
+}
+////����C�����¼��ص�����
+//void BTN_C_LONG_PRESS_START_Handler(void* btn)
+//{
+//}
+
+//����A�����¼��ص�����
+void BTN_A_SINGLE_Click_Handler(void* btn)//����A
+{
+ //���𰴼��ж�
+ //��������/��Ļʱ����Ϊ�ⲿ�жϣ����Ѻ��Ϊ��ʱ����ѯ���������������жϱ�־���ᵼ�¶�ΰ���ʱ�����������ٴν���һ���ж�
+ GPIO_EXTI_EXTIISR_ClrEx(KEYA_S1_PORT, KEYA_S1_PIN);
+
+#ifdef RS232_PRINTF
+ printf("***> ������Ļ/��ҳ <***\r\n");
+#endif
+ if(sys_display_para_g.sys_and_display_mode == NORMAL_MODE)
+ {
+ lcd_wake_up_flag_g = 1;
+ if(__SYS_DELAY_SEC_TIME_GET_(sys_active_time) < SYS_WAKE_UP_TIME)
+ __SYS_DELAY_SEC_TIME_SET_(sys_active_time,SYS_WAKE_UP_TIME);//���û���ʱ������
+ if(key_awaken_flag_g != SET)
+ {
+ if(++sys_display_para_g.display_page_status.normal_page_status > PRESS_SC_TOTAL)
+ sys_display_para_g.display_page_status.normal_page_status = SC_INSTANT_TOTAL;
+ }
+ else
+ {
+ lcd_wake_up_flag_g = 0;
+ key_awaken_flag_g = RESET;
+ }
+ }
+ else if(sys_display_para_g.sys_and_display_mode == DISPLAY_PARA)
+ {
+ lcd_wake_up_flag_g = 1;
+ if(__SYS_DELAY_SEC_TIME_GET_(sys_active_time) < DISPLAY_PARA_TIME)
+ __SYS_DELAY_SEC_TIME_SET_(sys_active_time, DISPLAY_PARA_TIME); //�oDISPLAY_PARA_TIME��Ļ���ʱ��
+ if(++sys_display_para_g.display_page_status.para_page_status > SEC_CORR_OLD_PARA_5)
+ sys_display_para_g.display_page_status.para_page_status = METER_NUM;
+ }
+}
+//����A˫���¼��ص�����
+void BTN_A_DOUBLE_Click_Handler(void* btn)
+{
+ //���𰴼��ж�
+ GPIO_EXTI_EXTIISR_ClrEx(KEYA_S1_PORT, KEYA_S1_PIN);
+#ifdef RS232_PRINTF
+ printf("***> ��ȡ��ʾ������Ȩ <***\r\n");
+#endif
+ if(sys_some_flag_g.para_display_flag == RESET && sys_display_para_g.sys_and_display_mode != SET_PARA_MODE)
+ {
+ __SYS_DELAY_SEC_TIME_SET_(mode_flag_active_time,10);
+ __SYS_PARA_FLAG_SET_(para_display_flag);
+ }
+}
+//����A�����¼��ص�����
+void BTN_A_LONG_PRESS_START_Handler(void* btn)
+{
+ //���𰴼��ж�
+ GPIO_EXTI_EXTIISR_ClrEx(KEYA_S1_PORT, KEYA_S1_PIN);
+
+ if((KEY_B_READ || KEY_A_READ) == 0)
+ {}
+ else
+ {
+#ifdef RS232_PRINTF
+ printf("***> �л�ģʽ������/�춨/������ȡ�� <***\r\n");
+#endif
+ if(sys_display_para_g.sys_and_display_mode == NORMAL_MODE && sys_some_flag_g.uncap_flag == SET)
+ sys_display_para_g.temp_sys_mode_flag = CNV_PARA_MODE_ENTER;
+ else if(sys_display_para_g.sys_and_display_mode == NORMAL_MODE && sys_some_flag_g.para_display_flag == SET)
+ sys_display_para_g.temp_sys_mode_flag = CNV_DISPLAY_MODE_ENTER;
+ else if(sys_display_para_g.sys_and_display_mode == NORMAL_MODE && __SYS_STATUS_BYTES_GET(media_status) == AIR)
+ sys_display_para_g.temp_sys_mode_flag = CNV_CAL_MODE_ENTER;
+ else if(sys_display_para_g.sys_and_display_mode == SET_PARA_MODE)
+ sys_display_para_g.temp_sys_mode_flag = CNV_PARA_MODE_EXIT;
+ else if(sys_display_para_g.sys_and_display_mode == CALIB_MODE)
+ sys_display_para_g.temp_sys_mode_flag = CNV_CAL_MODE_EXIT;
+ else if(sys_display_para_g.sys_and_display_mode == DISPLAY_PARA)
+ sys_display_para_g.temp_sys_mode_flag = CNV_DISPLAY_MODE_EXIT;
+ else
+ sys_mode_conversion_show_g = ERROR_1;
+ sys_some_flag_g.uncap_flag = sys_some_flag_g.para_display_flag = RESET;
+// __SYS_PARA_FLAG_CLEAR_(uncap_flag);
+// __SYS_PARA_FLAG_CLEAR_(para_display_flag);
+ }
+}
+
+
+void BTNA_B_LONG_PRESS_START_Handler(void* btn)
+{
+ //���𰴼��ж�
+ GPIO_EXTI_EXTIISR_ClrEx(KEYA_S1_PORT, KEYA_S1_PIN);
+
+#ifdef RS232_PRINTF
+ printf("---> key1/S1/B + key2/S3/A long press start! <---\r\n");
+#endif
+ if(__SYS_STATUS_BYTES_GET(valve_state) == VALVE_OP)//��Ŀǰ״̬�ǿ�
+ {
+ if(__SYS_STATUS_BYTES_GET(account_state) == 0)//���
+ sys_valve_ctl_id_g = V_KEY_CL;
+ else
+ sys_mode_conversion_show_g = ERROR_1;
+ }
+ else if(__SYS_STATUS_BYTES_GET(valve_state) == VALVE_CL)
+ {
+ if(__SYS_STATUS_BYTES_GET(valve_lock) == 0) //�ж��Ƿ����
+ pwr_vol_g.lith_flag = LMS_OPEN_VALVE_BEFORE;// sys_valve_ctl_id_g = V_KEY_OP;
+ else
+ sys_mode_conversion_show_g = ERROR_1;
+ }
+}
+
+void CalMode_Exit_A_LongHandler(void)
+{
+ __IO static uint8_t cnt_long = 0;
+ if(KEY_A_READ == 0)
+ {
+ // 9 * 0.25 = 2.25��
+ if((cnt_long++ >= 9) && (sys_display_para_g.sys_and_display_mode == CALIB_MODE))
+ {
+ //���𰴼��ж�
+ GPIO_EXTI_EXTIISR_ClrEx(KEYA_S1_PORT, KEYA_S1_PIN);
+ cnt_long = 0;
+ sys_display_para_g.temp_sys_mode_flag = CNV_CAL_MODE_EXIT;
+ }
+ }else
+ cnt_long = 0;
+}
+
+//�������ܳ�ʼ��
+void Key_Config_Init(void)
+{
+ //��ʼ����������
+ button_init(&btn_B, read_buttonB_GPIO, 0);
+ button_init(&btn_C, read_buttonC_GPIO, 0);
+ button_init(&btn_A, read_buttonA_GPIO, 0);
+ button_init(&btnA_B, read_buttonA_B_GPIO, 0);
+ //ע�ᰴ���¼�
+// button_attach(&btn1, PRESS_DOWN, BTN1_PRESS_DOWN_Handler);//����
+// button_attach(&btn1, PRESS_UP, BTN1_PRESS_UP_Handler);//�ɿ�
+// button_attach(&btn1, PRESS_REPEAT, BTN1_PRESS_REPEAT_Handler);
+// button_attach(&btn1, SINGLE_CLICK, BTN1_SINGLE_Click_Handler);
+ button_attach(&btn_B, LONG_PRESS_START, BTN_B_LONG_PRESS_START_Handler);//��������һ��
+// button_attach(&btn1, LONG_PRESS_HOLD, BTN1_LONG_PRESS_HOLD_Handler);
+
+ button_attach(&btn_C, SINGLE_CLICK, BTN_C_SINGLE_Click_Handler);
+// button_attach(&btn2, LONG_PRESS_START, BTN2_LONG_PRESS_START_Handler);//��������һ��
+
+ button_attach(&btn_A, SINGLE_CLICK, BTN_A_SINGLE_Click_Handler);
+ button_attach(&btn_A, DOUBLE_CLICK, BTN_A_DOUBLE_Click_Handler);//˫��
+ button_attach(&btn_A, LONG_PRESS_START, BTN_A_LONG_PRESS_START_Handler);//��������һ��
+
+// ע�ᰴť�¼��ص�����
+ button_attach(&btnA_B, LONG_PRESS_START, BTNA_B_LONG_PRESS_START_Handler);
+
+ //��������
+ button_start(&btn_B);
+ button_start(&btn_C);
+ button_start(&btn_A);
+ button_start(&btnA_B);
}
--
Gitblit v1.9.3