|
|
@@ -13,6 +13,7 @@
|
|
|
#include "common.h"
|
|
|
#include "board_cfg.h"
|
|
|
#include "relay.h"
|
|
|
+#include "string.h"
|
|
|
|
|
|
|
|
|
|
|
|
@@ -165,6 +166,62 @@ void key_init(void)
|
|
|
exti_interrupt_flag_clear(KEY_TEST_EXTI);
|
|
|
|
|
|
#elif SUPPORT_SELF_LOCK
|
|
|
+ #if SUPPORT_MICRO_SWITCH
|
|
|
+
|
|
|
+ rcu_periph_clock_enable(RCU_CFGCMP);
|
|
|
+ rcu_periph_clock_enable(RCU_GPIOC);
|
|
|
+ rcu_periph_clock_enable(RCU_GPIOA);
|
|
|
+ rcu_periph_clock_enable(RCU_GPIOB);
|
|
|
+ if(!board)
|
|
|
+ {
|
|
|
+ board = get_board();
|
|
|
+ }
|
|
|
+ #if (RelaySlaveChaNum >= 1)
|
|
|
+ gpio_mode_set(KEY_TEST_1_GPIO, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, KEY_TEST_1_IO);
|
|
|
+ nvic_irq_enable(EXTI4_15_IRQn,1);
|
|
|
+ syscfg_exti_line_config(KEY_TEST_1_IO_SOURCE_RCU,KEY_TEST_1_IO_SOURCE);
|
|
|
+ exti_init(KEY_TEST_1_IO_EXIT,EXTI_INTERRUPT,EXTI_TRIG_FALLING);
|
|
|
+ exti_interrupt_flag_clear(KEY_TEST_1_IO_EXIT);
|
|
|
+ #endif
|
|
|
+
|
|
|
+ #if (RelaySlaveChaNum >= 2)
|
|
|
+ gpio_mode_set(KEY_TEST_2_GPIO, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, KEY_TEST_2_IO);
|
|
|
+ nvic_irq_enable(EXTI2_3_IRQn,1);
|
|
|
+ syscfg_exti_line_config(KEY_TEST_2_IO_SOURCE_RCU,KEY_TEST_2_IO_SOURCE);
|
|
|
+ exti_init(KEY_TEST_2_IO_EXIT,EXTI_INTERRUPT,EXTI_TRIG_FALLING);
|
|
|
+ exti_interrupt_flag_clear(KEY_TEST_2_IO_EXIT);
|
|
|
+ #endif
|
|
|
+
|
|
|
+
|
|
|
+ #if (RelaySlaveChaNum >= 3)
|
|
|
+ gpio_mode_set(KEY_TEST_3_4_5_GPIO, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, KEY_TEST_3_IO);
|
|
|
+ nvic_irq_enable(EXTI0_1_IRQn,1);
|
|
|
+ syscfg_exti_line_config(KEY_TEST_3_IO_SOURCE_RCU,KEY_TEST_3_IO_SOURCE);
|
|
|
+ exti_init(KEY_TEST_3_IO_EXIT,EXTI_INTERRUPT,EXTI_TRIG_FALLING);
|
|
|
+ exti_interrupt_flag_clear(KEY_TEST_3_IO_EXIT);
|
|
|
+ #endif
|
|
|
+
|
|
|
+ #if (RelaySlaveChaNum >= 4)
|
|
|
+ gpio_mode_set(KEY_TEST_3_4_5_GPIO, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, KEY_TEST_4_IO);
|
|
|
+ nvic_irq_enable(EXTI0_1_IRQn,1);
|
|
|
+ syscfg_exti_line_config(KEY_TEST_4_IO_SOURCE_RCU,KEY_TEST_4_IO_SOURCE);
|
|
|
+ exti_init(KEY_TEST_4_IO_EXIT,EXTI_INTERRUPT,EXTI_TRIG_FALLING);
|
|
|
+ exti_interrupt_flag_clear(KEY_TEST_4_IO_EXIT);
|
|
|
+ #endif
|
|
|
+
|
|
|
+ #if (RelaySlaveChaNum >= 5)
|
|
|
+ gpio_mode_set(KEY_TEST_3_4_5_GPIO, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, KEY_TEST_5_IO);
|
|
|
+ nvic_irq_enable(EXTI4_15_IRQn,1);
|
|
|
+ syscfg_exti_line_config(KEY_TEST_5_IO_SOURCE_RCU,KEY_TEST_5_IO_SOURCE);
|
|
|
+ exti_init(KEY_TEST_5_IO_EXIT,EXTI_INTERRUPT,EXTI_TRIG_FALLING);
|
|
|
+ exti_interrupt_flag_clear(KEY_TEST_5_IO_EXIT);
|
|
|
+ #endif
|
|
|
+
|
|
|
+ board->get_lock_key = get_lock_key;
|
|
|
+ board->opt_lock_key = self_lock_opt;
|
|
|
+
|
|
|
+
|
|
|
+#else
|
|
|
rcu_periph_clock_enable(RCU_CFGCMP);
|
|
|
rcu_periph_clock_enable(RCU_GPIOC);
|
|
|
if(!board)
|
|
|
@@ -190,55 +247,57 @@ void key_init(void)
|
|
|
board->get_lock_key = get_lock_key;
|
|
|
board->opt_lock_key = self_lock_opt;
|
|
|
|
|
|
-#elif SUPPORT_KEY_EXIT
|
|
|
- rcu_periph_clock_enable(RCU_CFGCMP);
|
|
|
- rcu_periph_clock_enable(RCU_GPIOC);
|
|
|
- rcu_periph_clock_enable(RCU_GPIOA);
|
|
|
- rcu_periph_clock_enable(RCU_GPIOB);
|
|
|
- if(!board)
|
|
|
- {
|
|
|
- board = get_board();
|
|
|
- }
|
|
|
-#if (RelaySlaveChaNum >= 1)
|
|
|
- gpio_mode_set(KEY_TEST_1_GPIO, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, KEY_TEST_1_IO);
|
|
|
- nvic_irq_enable(EXTI4_15_IRQn,1);
|
|
|
- syscfg_exti_line_config(KEY_TEST_1_IO_SOURCE_RCU,KEY_TEST_1_IO_SOURCE);
|
|
|
- exti_init(KEY_TEST_1_IO_EXIT,EXTI_INTERRUPT,EXTI_TRIG_FALLING);
|
|
|
- exti_interrupt_flag_clear(KEY_TEST_1_IO_EXIT);
|
|
|
-#endif
|
|
|
-
|
|
|
-#if (RelaySlaveChaNum >= 2)
|
|
|
- gpio_mode_set(KEY_TEST_2_GPIO, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, KEY_TEST_2_IO);
|
|
|
- nvic_irq_enable(EXTI2_3_IRQn,1);
|
|
|
- syscfg_exti_line_config(KEY_TEST_2_IO_SOURCE_RCU,KEY_TEST_2_IO_SOURCE);
|
|
|
- exti_init(KEY_TEST_2_IO_EXIT,EXTI_INTERRUPT,EXTI_TRIG_FALLING);
|
|
|
- exti_interrupt_flag_clear(KEY_TEST_2_IO_EXIT);
|
|
|
-#endif
|
|
|
-
|
|
|
-
|
|
|
-#if (RelaySlaveChaNum >= 3)
|
|
|
- gpio_mode_set(KEY_TEST_3_4_5_GPIO, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, KEY_TEST_3_IO);
|
|
|
- nvic_irq_enable(EXTI0_1_IRQn,1);
|
|
|
- syscfg_exti_line_config(KEY_TEST_3_IO_SOURCE_RCU,KEY_TEST_3_IO_SOURCE);
|
|
|
- exti_init(KEY_TEST_3_IO_EXIT,EXTI_INTERRUPT,EXTI_TRIG_FALLING);
|
|
|
- exti_interrupt_flag_clear(KEY_TEST_3_IO_EXIT);
|
|
|
-#endif
|
|
|
-
|
|
|
-#if (RelaySlaveChaNum >= 4)
|
|
|
- gpio_mode_set(KEY_TEST_3_4_5_GPIO, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, KEY_TEST_4_IO);
|
|
|
- nvic_irq_enable(EXTI0_1_IRQn,1);
|
|
|
- syscfg_exti_line_config(KEY_TEST_4_IO_SOURCE_RCU,KEY_TEST_4_IO_SOURCE);
|
|
|
- exti_init(KEY_TEST_4_IO_EXIT,EXTI_INTERRUPT,EXTI_TRIG_FALLING);
|
|
|
- exti_interrupt_flag_clear(KEY_TEST_4_IO_EXIT);
|
|
|
-#endif
|
|
|
+#endif
|
|
|
|
|
|
-#if (RelaySlaveChaNum >= 5)
|
|
|
- gpio_mode_set(KEY_TEST_3_4_5_GPIO, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, KEY_TEST_5_IO);
|
|
|
- nvic_irq_enable(EXTI4_15_IRQn,1);
|
|
|
- syscfg_exti_line_config(KEY_TEST_5_IO_SOURCE_RCU,KEY_TEST_5_IO_SOURCE);
|
|
|
- exti_init(KEY_TEST_5_IO_EXIT,EXTI_INTERRUPT,EXTI_TRIG_FALLING);
|
|
|
- exti_interrupt_flag_clear(KEY_TEST_5_IO_EXIT);
|
|
|
-#endif
|
|
|
+//#elif SUPPORT_KEY_EXIT
|
|
|
+// rcu_periph_clock_enable(RCU_CFGCMP);
|
|
|
+// rcu_periph_clock_enable(RCU_GPIOC);
|
|
|
+// rcu_periph_clock_enable(RCU_GPIOA);
|
|
|
+// rcu_periph_clock_enable(RCU_GPIOB);
|
|
|
+// if(!board)
|
|
|
+// {
|
|
|
+// board = get_board();
|
|
|
+// }
|
|
|
+//#if (RelaySlaveChaNum >= 1)
|
|
|
+// gpio_mode_set(KEY_TEST_1_GPIO, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, KEY_TEST_1_IO);
|
|
|
+// nvic_irq_enable(EXTI4_15_IRQn,1);
|
|
|
+// syscfg_exti_line_config(KEY_TEST_1_IO_SOURCE_RCU,KEY_TEST_1_IO_SOURCE);
|
|
|
+// exti_init(KEY_TEST_1_IO_EXIT,EXTI_INTERRUPT,EXTI_TRIG_FALLING);
|
|
|
+// exti_interrupt_flag_clear(KEY_TEST_1_IO_EXIT);
|
|
|
+//#endif
|
|
|
+//
|
|
|
+//#if (RelaySlaveChaNum >= 2)
|
|
|
+// gpio_mode_set(KEY_TEST_2_GPIO, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, KEY_TEST_2_IO);
|
|
|
+// nvic_irq_enable(EXTI2_3_IRQn,1);
|
|
|
+// syscfg_exti_line_config(KEY_TEST_2_IO_SOURCE_RCU,KEY_TEST_2_IO_SOURCE);
|
|
|
+// exti_init(KEY_TEST_2_IO_EXIT,EXTI_INTERRUPT,EXTI_TRIG_FALLING);
|
|
|
+// exti_interrupt_flag_clear(KEY_TEST_2_IO_EXIT);
|
|
|
+//#endif
|
|
|
+//
|
|
|
+//
|
|
|
+//#if (RelaySlaveChaNum >= 3)
|
|
|
+// gpio_mode_set(KEY_TEST_3_4_5_GPIO, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, KEY_TEST_3_IO);
|
|
|
+// nvic_irq_enable(EXTI0_1_IRQn,1);
|
|
|
+// syscfg_exti_line_config(KEY_TEST_3_IO_SOURCE_RCU,KEY_TEST_3_IO_SOURCE);
|
|
|
+// exti_init(KEY_TEST_3_IO_EXIT,EXTI_INTERRUPT,EXTI_TRIG_FALLING);
|
|
|
+// exti_interrupt_flag_clear(KEY_TEST_3_IO_EXIT);
|
|
|
+//#endif
|
|
|
+//
|
|
|
+//#if (RelaySlaveChaNum >= 4)
|
|
|
+// gpio_mode_set(KEY_TEST_3_4_5_GPIO, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, KEY_TEST_4_IO);
|
|
|
+// nvic_irq_enable(EXTI0_1_IRQn,1);
|
|
|
+// syscfg_exti_line_config(KEY_TEST_4_IO_SOURCE_RCU,KEY_TEST_4_IO_SOURCE);
|
|
|
+// exti_init(KEY_TEST_4_IO_EXIT,EXTI_INTERRUPT,EXTI_TRIG_FALLING);
|
|
|
+// exti_interrupt_flag_clear(KEY_TEST_4_IO_EXIT);
|
|
|
+//#endif
|
|
|
+//
|
|
|
+//#if (RelaySlaveChaNum >= 5)
|
|
|
+// gpio_mode_set(KEY_TEST_3_4_5_GPIO, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, KEY_TEST_5_IO);
|
|
|
+// nvic_irq_enable(EXTI4_15_IRQn,1);
|
|
|
+// syscfg_exti_line_config(KEY_TEST_5_IO_SOURCE_RCU,KEY_TEST_5_IO_SOURCE);
|
|
|
+// exti_init(KEY_TEST_5_IO_EXIT,EXTI_INTERRUPT,EXTI_TRIG_FALLING);
|
|
|
+// exti_interrupt_flag_clear(KEY_TEST_5_IO_EXIT);
|
|
|
+//#endif
|
|
|
|
|
|
#endif
|
|
|
|
|
|
@@ -301,14 +360,12 @@ void EXTI4_15_IRQHandler(void){
|
|
|
for(int i = 0;i <30;i++);
|
|
|
if(gpio_input_bit_get(KEY_TEST_1_GPIO,KEY_TEST_1_IO) == 0)
|
|
|
{
|
|
|
- async_data da = {0};
|
|
|
- da.fire_or_zero = _FIRE;
|
|
|
- da.method = PROMPT_CTRL;
|
|
|
- da.w_eep_flag = FLAG_W_EEP;
|
|
|
- da.channel = 0;
|
|
|
- da.reg = &board->relay_staging_staus[0];
|
|
|
- da.status = board->md_data.r_data.state.state[0].state ? 0 : 1;
|
|
|
- set_relay_sta_async(&da);
|
|
|
+ board->val_key[0] = board->val_key[0] ? 0 : 1;
|
|
|
+ w_eeprom_data_t da = {0};
|
|
|
+ da.lenth =1;
|
|
|
+ memcpy((void*)&da.data,(void*)&board->val_key[0],1);
|
|
|
+ da.start_addr = (EEPROM_SELF_LOCK_STATUS+0);
|
|
|
+ board->q_cache.en_queue(&da);
|
|
|
}
|
|
|
}
|
|
|
#endif
|
|
|
@@ -320,14 +377,12 @@ void EXTI4_15_IRQHandler(void){
|
|
|
for(int i = 0;i <30;i++);
|
|
|
if(gpio_input_bit_get(KEY_TEST_3_4_5_GPIO,KEY_TEST_5_IO) == 0)
|
|
|
{
|
|
|
- async_data da = {0};
|
|
|
- da.fire_or_zero = _FIRE;
|
|
|
- da.method = PROMPT_CTRL;
|
|
|
- da.w_eep_flag = FLAG_W_EEP;
|
|
|
- da.channel = 4;
|
|
|
- da.reg = &board->relay_staging_staus[4];
|
|
|
- da.status = board->md_data.r_data.state.state[4].state ? 0 : 1;
|
|
|
- set_relay_sta_async(&da);
|
|
|
+ board->val_key[4] = board->val_key[4] ? 0 : 1;
|
|
|
+ w_eeprom_data_t da = {0};
|
|
|
+ da.lenth =1;
|
|
|
+ memcpy((void*)&da.data,(void*)&board->val_key[4],1);
|
|
|
+ da.start_addr = (EEPROM_SELF_LOCK_STATUS+4);
|
|
|
+ board->q_cache.en_queue(&da);
|
|
|
}
|
|
|
}
|
|
|
#endif
|
|
|
@@ -365,14 +420,12 @@ void EXTI0_1_IRQHandler(void)
|
|
|
for(int i = 0;i <30;i++);
|
|
|
if(gpio_input_bit_get(KEY_TEST_3_4_5_GPIO,KEY_TEST_3_IO) == 0)
|
|
|
{
|
|
|
- async_data da = {0};
|
|
|
- da.fire_or_zero = _FIRE;
|
|
|
- da.method = PROMPT_CTRL;
|
|
|
- da.w_eep_flag = FLAG_W_EEP;
|
|
|
- da.channel = 2;
|
|
|
- da.reg = &board->relay_staging_staus[2];
|
|
|
- da.status = board->md_data.r_data.state.state[2].state ? 0 : 1;
|
|
|
- set_relay_sta_async(&da);
|
|
|
+ board->val_key[2] = board->val_key[2] ? 0 : 1;
|
|
|
+ w_eeprom_data_t da = {0};
|
|
|
+ da.lenth =1;
|
|
|
+ memcpy((void*)&da.data,(void*)&board->val_key[2],1);
|
|
|
+ da.start_addr = (EEPROM_SELF_LOCK_STATUS+2);
|
|
|
+ board->q_cache.en_queue(&da);
|
|
|
}
|
|
|
}
|
|
|
#endif
|
|
|
@@ -386,14 +439,12 @@ void EXTI0_1_IRQHandler(void)
|
|
|
for(int i = 0;i <30;i++);
|
|
|
if(gpio_input_bit_get(KEY_TEST_3_4_5_GPIO,KEY_TEST_4_IO) == 0)
|
|
|
{
|
|
|
- async_data da = {0};
|
|
|
- da.fire_or_zero = _FIRE;
|
|
|
- da.method = PROMPT_CTRL;
|
|
|
- da.w_eep_flag = FLAG_W_EEP;
|
|
|
- da.channel = 3;
|
|
|
- da.reg = &board->relay_staging_staus[3];
|
|
|
- da.status = board->md_data.r_data.state.state[3].state ? 0 : 1;
|
|
|
- set_relay_sta_async(&da);
|
|
|
+ board->val_key[3] = board->val_key[3] ? 0 : 1;
|
|
|
+ w_eeprom_data_t da = {0};
|
|
|
+ da.lenth =1;
|
|
|
+ memcpy((void*)&da.data,(void*)&board->val_key[3],1);
|
|
|
+ da.start_addr = (EEPROM_SELF_LOCK_STATUS+3);
|
|
|
+ board->q_cache.en_queue(&da);
|
|
|
}
|
|
|
}
|
|
|
#endif
|
|
|
@@ -480,14 +531,12 @@ void EXTI2_3_IRQHandler(void)
|
|
|
for(int i = 0;i <30;i++);
|
|
|
if(gpio_input_bit_get(KEY_TEST_2_GPIO,KEY_TEST_2_IO) == 0)
|
|
|
{
|
|
|
- async_data da = {0};
|
|
|
- da.fire_or_zero = _FIRE;
|
|
|
- da.method = PROMPT_CTRL;
|
|
|
- da.w_eep_flag = FLAG_W_EEP;
|
|
|
- da.channel = 1;
|
|
|
- da.reg = &board->relay_staging_staus[1];
|
|
|
- da.status = board->md_data.r_data.state.state[1].state ? 0 : 1;
|
|
|
- set_relay_sta_async(&da);
|
|
|
+ board->val_key[1] = board->val_key[1] ? 0 : 1;
|
|
|
+ w_eeprom_data_t da = {0};
|
|
|
+ da.lenth =1;
|
|
|
+ memcpy((void*)&da.data,(void*)&board->val_key[1],1);
|
|
|
+ da.start_addr = (EEPROM_SELF_LOCK_STATUS+1);
|
|
|
+ board->q_cache.en_queue(&da);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -643,6 +692,15 @@ static void detection_opt(void)
|
|
|
|
|
|
static void get_lock_key(void)
|
|
|
{
|
|
|
+
|
|
|
+#if SUPPORT_MICRO_SWITCH
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+#else
|
|
|
+
|
|
|
#if (RelaySlaveChaNum >= 1)
|
|
|
if(gpio_input_bit_get(KEY_TEST_1_GPIO,KEY_TEST_1_IO) == RESET)
|
|
|
{
|
|
|
@@ -681,6 +739,8 @@ static void get_lock_key(void)
|
|
|
board->val_key[3] = 0;
|
|
|
}
|
|
|
#endif
|
|
|
+
|
|
|
+#endif
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -733,7 +793,7 @@ static void get_lock_key(void)
|
|
|
|
|
|
static void self_lock_opt(void)
|
|
|
{
|
|
|
-#if (RelaySlaveChaNum <= 4)
|
|
|
+#if (RelaySlaveChaNum <= 5)
|
|
|
async_data da = {0};
|
|
|
da.fire_or_zero = _FIRE;
|
|
|
da.method = PROMPT_CTRL;
|