|
|
@@ -37,6 +37,18 @@
|
|
|
|
|
|
#endif
|
|
|
|
|
|
+#define KEY_TEST_1_IO GPIO_PIN_14
|
|
|
+#define KEY_TEST_2_IO GPIO_PIN_2
|
|
|
+#define KEY_TEST_3_IO GPIO_PIN_0
|
|
|
+#define KEY_TEST_4_IO GPIO_PIN_1
|
|
|
+
|
|
|
+
|
|
|
+#define KEY_TEST_1_GPIO GPIOC
|
|
|
+#define KEY_TEST_2_GPIO GPIOB
|
|
|
+#define KEY_TEST_3_4_GPIO GPIOA
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
|
|
|
static board_t *board = 0;
|
|
|
|
|
|
@@ -65,6 +77,19 @@ static void get_detection(void);
|
|
|
static void detection_opt(void);
|
|
|
|
|
|
|
|
|
+#if SUPPORT_SELF_LOCK
|
|
|
+
|
|
|
+ static void get_test_1();
|
|
|
+ static void get_test_2();
|
|
|
+ static void get_test_3();
|
|
|
+ static void get_test_4();
|
|
|
+ static void get_lock_key(void);
|
|
|
+ static void self_lock_opt(void);
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
void detection_init(void)
|
|
|
{
|
|
|
|
|
|
@@ -114,9 +139,31 @@ void key_init(void)
|
|
|
exti_interrupt_flag_clear(KEY_TEST_EXTI);
|
|
|
|
|
|
#elif SUPPORT_SELF_LOCK
|
|
|
+ rcu_periph_clock_enable(RCU_CFGCMP);
|
|
|
+ rcu_periph_clock_enable(RCU_GPIOC);
|
|
|
+ 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);
|
|
|
+#endif
|
|
|
+
|
|
|
+#if (RelaySlaveChaNum >= 2)
|
|
|
+ rcu_periph_clock_enable(RCU_GPIOB);
|
|
|
+ gpio_mode_set(KEY_TEST_2_GPIO, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, KEY_TEST_2_IO);
|
|
|
+#endif
|
|
|
|
|
|
-
|
|
|
-
|
|
|
+#if (RelaySlaveChaNum >= 3)
|
|
|
+ rcu_periph_clock_enable(RCU_GPIOA);
|
|
|
+ gpio_mode_set(KEY_TEST_3_4_GPIO, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, KEY_TEST_3_IO);
|
|
|
+#endif
|
|
|
+#if (RelaySlaveChaNum >= 4)
|
|
|
+ gpio_mode_set(KEY_TEST_3_4_GPIO, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, KEY_TEST_4_IO);
|
|
|
+#endif
|
|
|
+ board->get_lock_key = get_lock_key;
|
|
|
+ board->opt_lock_key = self_lock_opt;
|
|
|
+
|
|
|
#endif
|
|
|
|
|
|
}
|
|
|
@@ -332,4 +379,240 @@ static void detection_opt(void)
|
|
|
#endif
|
|
|
#endif
|
|
|
}
|
|
|
-}
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+#if SUPPORT_SELF_LOCK
|
|
|
+
|
|
|
+static void get_lock_key(void)
|
|
|
+{
|
|
|
+#if (RelaySlaveChaNum >= 1)
|
|
|
+ if(gpio_input_bit_get(KEY_TEST_1_GPIO,KEY_TEST_1_IO) == RESET)
|
|
|
+ {
|
|
|
+ board->val_key[0] = 1;
|
|
|
+ }else
|
|
|
+ {
|
|
|
+ board->val_key[0] = 0;
|
|
|
+ }
|
|
|
+#endif
|
|
|
+#if (RelaySlaveChaNum >= 2)
|
|
|
+ if(gpio_input_bit_get(KEY_TEST_2_GPIO,KEY_TEST_2_IO) == RESET)
|
|
|
+ {
|
|
|
+ board->val_key[1] = 1;
|
|
|
+ }else
|
|
|
+ {
|
|
|
+ board->val_key[1] = 0;
|
|
|
+ }
|
|
|
+#endif
|
|
|
+
|
|
|
+#if (RelaySlaveChaNum >= 3)
|
|
|
+ if(gpio_input_bit_get(KEY_TEST_3_4_GPIO,KEY_TEST_3_IO) == RESET)
|
|
|
+ {
|
|
|
+ board->val_key[2] = 1;
|
|
|
+ }else
|
|
|
+ {
|
|
|
+ board->val_key[2] = 0;
|
|
|
+ }
|
|
|
+#endif
|
|
|
+
|
|
|
+#if (RelaySlaveChaNum >= 4)
|
|
|
+ if(gpio_input_bit_get(KEY_TEST_3_4_GPIO,KEY_TEST_4_IO) == RESET)
|
|
|
+ {
|
|
|
+ board->val_key[3] = 1;
|
|
|
+ }else
|
|
|
+ {
|
|
|
+ board->val_key[3] = 0;
|
|
|
+ }
|
|
|
+#endif
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+//#if (RelaySlaveChaNum >= 1)
|
|
|
+//static void get_test_1()
|
|
|
+//{
|
|
|
+// uint8_t val = 0;
|
|
|
+// if(gpio_input_bit_get(KEY_TEST_1_GPIO,KEY_TEST_1_IO) == RESET)
|
|
|
+// {
|
|
|
+// val = 1;
|
|
|
+// }
|
|
|
+// board->key_1 = val;
|
|
|
+//}
|
|
|
+//#endif
|
|
|
+
|
|
|
+//#if (RelaySlaveChaNum >= 2)
|
|
|
+//static void get_test_2()
|
|
|
+//{
|
|
|
+// uint8_t val = 0;
|
|
|
+// if(gpio_input_bit_get(KEY_TEST_2_GPIO,KEY_TEST_2_IO) == RESET)
|
|
|
+// {
|
|
|
+// val = 1;
|
|
|
+// }
|
|
|
+// board->key_2 = val;
|
|
|
+//}
|
|
|
+//#endif
|
|
|
+//#if (RelaySlaveChaNum >= 3)
|
|
|
+//static void get_test_3()
|
|
|
+//{
|
|
|
+// uint8_t val = 0;
|
|
|
+// if(gpio_input_bit_get(KEY_TEST_3_4_GPIO,KEY_TEST_3_IO) == RESET)
|
|
|
+// {
|
|
|
+// val = 1;
|
|
|
+// }
|
|
|
+// board->key_3 = val;
|
|
|
+//}
|
|
|
+//#endif
|
|
|
+//#if (RelaySlaveChaNum >= 4)
|
|
|
+//static void get_test_4()
|
|
|
+//{
|
|
|
+// uint8_t val = 0;
|
|
|
+// if(gpio_input_bit_get(KEY_TEST_3_4_GPIO,KEY_TEST_4_IO) == RESET)
|
|
|
+// {
|
|
|
+// val = 1;
|
|
|
+// }
|
|
|
+// board->key_4 = val;
|
|
|
+//}
|
|
|
+//#endif
|
|
|
+
|
|
|
+static void self_lock_opt(void)
|
|
|
+{
|
|
|
+#if (RelaySlaveChaNum <= 4)
|
|
|
+ async_data da = {0};
|
|
|
+ da.fire_or_zero = _FIRE;
|
|
|
+ da.method = PROMPT_CTRL;
|
|
|
+ da.w_eep_flag = FLAG_W_EEP;
|
|
|
+ for(uint8_t i = 0; i < RelaySlaveChaNum;i++)
|
|
|
+ {
|
|
|
+ da.channel = i;
|
|
|
+ da.reg = &board->relay_staging_staus[i];
|
|
|
+ if(board->val_key[i] == 0)
|
|
|
+ {
|
|
|
+ if(board->handle_k_status[i] == 1)
|
|
|
+ {
|
|
|
+ da.status = RELAY_CLOSE;
|
|
|
+ set_relay_sta_async(&da);
|
|
|
+ board->handle_k_status[i] = 0;
|
|
|
+ }
|
|
|
+ }else
|
|
|
+ {
|
|
|
+ if(board->handle_k_status[i] == 0)
|
|
|
+ {
|
|
|
+ da.status = RELAY_OPEN;
|
|
|
+ set_relay_sta_async(&da);
|
|
|
+ board->handle_k_status[i] = 1;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+#endif
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+//static void self_lock_opt1(void)
|
|
|
+//{
|
|
|
+// async_data da = {0};
|
|
|
+//
|
|
|
+// da.fire_or_zero = _FIRE;
|
|
|
+// da.method = PROMPT_CTRL;
|
|
|
+// da.w_eep_flag = FLAG_W_EEP;
|
|
|
+//#if (RelaySlaveChaNum >= 1)
|
|
|
+// if(board->key_1 == 0)
|
|
|
+// {
|
|
|
+// da.channel =0;
|
|
|
+// da.reg = &board->relay_staging_staus[0];
|
|
|
+// if(board->handle_k_1_status == 1)
|
|
|
+// {
|
|
|
+// da.status = RELAY_CLOSE;
|
|
|
+// set_relay_sta_async(&da);
|
|
|
+// board->handle_k_1_status = 0;
|
|
|
+// }
|
|
|
+// }else
|
|
|
+// {
|
|
|
+// da.channel =0;
|
|
|
+// da.reg = &board->relay_staging_staus[0];
|
|
|
+// if(board->handle_k_1_status == 0)
|
|
|
+// {
|
|
|
+// da.status = RELAY_OPEN;
|
|
|
+// set_relay_sta_async(&da);
|
|
|
+// board->handle_k_1_status = 1;
|
|
|
+// }
|
|
|
+// }
|
|
|
+//#endif
|
|
|
+//
|
|
|
+//
|
|
|
+//#if (RelaySlaveChaNum >= 2)
|
|
|
+// if(board->key_2 == 0)
|
|
|
+// {
|
|
|
+// da.channel =1;
|
|
|
+// da.reg = &board->relay_staging_staus[1];
|
|
|
+// if(board->handle_k_2_status == 1)
|
|
|
+// {
|
|
|
+// da.status = RELAY_CLOSE;
|
|
|
+// set_relay_sta_async(&da);
|
|
|
+// board->handle_k_2_status = 0;
|
|
|
+// }
|
|
|
+// }else
|
|
|
+// {
|
|
|
+// da.channel =1;
|
|
|
+// da.reg = &board->relay_staging_staus[1];
|
|
|
+// if(board->handle_k_2_status == 0)
|
|
|
+// {
|
|
|
+// da.status = RELAY_OPEN;
|
|
|
+// set_relay_sta_async(&da);
|
|
|
+// board->handle_k_2_status = 1;
|
|
|
+// }
|
|
|
+// }
|
|
|
+//#endif
|
|
|
+//
|
|
|
+//#if (RelaySlaveChaNum >= 3)
|
|
|
+// if(board->key_3 == 0)
|
|
|
+// {
|
|
|
+// da.channel =2;
|
|
|
+// da.reg = &board->relay_staging_staus[2];
|
|
|
+// if(board->handle_k_3_status == 1)
|
|
|
+// {
|
|
|
+// da.status = RELAY_CLOSE;
|
|
|
+// set_relay_sta_async(&da);
|
|
|
+// board->handle_k_3_status = 0;
|
|
|
+// }
|
|
|
+// }else
|
|
|
+// {
|
|
|
+// da.channel =2;
|
|
|
+// da.reg = &board->relay_staging_staus[2];
|
|
|
+// if(board->handle_k_3_status == 0)
|
|
|
+// {
|
|
|
+// da.status = RELAY_OPEN;
|
|
|
+// set_relay_sta_async(&da);
|
|
|
+// board->handle_k_3_status = 1;
|
|
|
+// }
|
|
|
+// }
|
|
|
+//#endif
|
|
|
+//
|
|
|
+//#if (RelaySlaveChaNum >= 4)
|
|
|
+// if(board->key_4 == 0)
|
|
|
+// {
|
|
|
+// da.channel =3;
|
|
|
+// da.reg = &board->relay_staging_staus[3];
|
|
|
+// if(board->handle_k_4_status == 1)
|
|
|
+// {
|
|
|
+// da.status = RELAY_CLOSE;
|
|
|
+// set_relay_sta_async(&da);
|
|
|
+// board->handle_k_4_status = 0;
|
|
|
+// }
|
|
|
+// }else
|
|
|
+// {
|
|
|
+// da.channel =3;
|
|
|
+// da.reg = &board->relay_staging_staus[3];
|
|
|
+// if(board->handle_k_4_status == 0)
|
|
|
+// {
|
|
|
+// da.status = RELAY_OPEN;
|
|
|
+// set_relay_sta_async(&da);
|
|
|
+// board->handle_k_4_status = 1;
|
|
|
+// }
|
|
|
+// }
|
|
|
+//#endif
|
|
|
+//}
|
|
|
+
|
|
|
+#endif
|