|
|
@@ -67,6 +67,10 @@ static void detection_opt(void);
|
|
|
void detection_init(void)
|
|
|
{
|
|
|
board = get_board();
|
|
|
+
|
|
|
+#if(POWER_TYPE == POWER_DC)
|
|
|
+
|
|
|
+#else
|
|
|
rcu_periph_clock_enable(RCU_CFGCMP);
|
|
|
rcu_periph_clock_enable(DETECTION_1_RCU);
|
|
|
gpio_mode_set(DETECTION_1_IO, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, DETECTION_1);
|
|
|
@@ -75,20 +79,22 @@ void detection_init(void)
|
|
|
exti_init(DERECTION_1_EXTI,EXTI_INTERRUPT,EXTI_TRIG_FALLING);
|
|
|
exti_interrupt_flag_clear(DERECTION_1_EXTI);
|
|
|
|
|
|
-#if SURPPORT_2_PT
|
|
|
- rcu_periph_clock_enable(DETECTION_2_RCU);
|
|
|
- gpio_mode_set(DETECTION_2_IO, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, DETECTION_2);
|
|
|
- nvic_irq_enable(EXTI2_3_IRQn,2);
|
|
|
- syscfg_exti_line_config(DETECIION_2_EXTI_SOURCE,DERECTION_2_EXTI_IO);
|
|
|
- exti_init(DERECTION_2_EXTI,EXTI_INTERRUPT,EXTI_TRIG_FALLING);
|
|
|
- exti_interrupt_flag_clear(DERECTION_2_EXTI);
|
|
|
-#endif
|
|
|
+ #if SURPPORT_2_PT
|
|
|
+ rcu_periph_clock_enable(DETECTION_2_RCU);
|
|
|
+ gpio_mode_set(DETECTION_2_IO, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, DETECTION_2);
|
|
|
+ nvic_irq_enable(EXTI2_3_IRQn,2);
|
|
|
+ syscfg_exti_line_config(DETECIION_2_EXTI_SOURCE,DERECTION_2_EXTI_IO);
|
|
|
+ exti_init(DERECTION_2_EXTI,EXTI_INTERRUPT,EXTI_TRIG_FALLING);
|
|
|
+ exti_interrupt_flag_clear(DERECTION_2_EXTI);
|
|
|
+ #endif
|
|
|
+#endif
|
|
|
board->detection = get_detection;
|
|
|
board->opt_detection = detection_opt;
|
|
|
|
|
|
}
|
|
|
void key_init(void)
|
|
|
{
|
|
|
+
|
|
|
#if SUPPORT_ALL_ON_OFF
|
|
|
rcu_periph_clock_enable(RCU_CFGCMP);
|
|
|
rcu_periph_clock_enable(KEY_RST_RCU);
|
|
|
@@ -119,14 +125,25 @@ void EXTI4_15_IRQHandler(void){
|
|
|
#if SUPPORT_ALL_ON_OFF
|
|
|
if(RESET != exti_interrupt_flag_get(KEY_RST_EXTI))
|
|
|
{
|
|
|
+ exti_interrupt_flag_clear(KEY_RST_EXTI);
|
|
|
if(board)
|
|
|
{
|
|
|
if(gpio_input_bit_get(KEY_TEST_IO,KEY_TEST) != 0)
|
|
|
{
|
|
|
- //todo write to eeprom cache
|
|
|
+ for(uint8_t k = 0; k < RelaySlaveChaNum;k++)
|
|
|
+ {
|
|
|
+ async_data da = {0};
|
|
|
+ da.channel =k;
|
|
|
+ da.fire_or_zero = _FIRE;
|
|
|
+ da.method = DELAY_CTRL;
|
|
|
+ da.reg = &board->relay_staging_staus[k];
|
|
|
+ da.status = RELAY_CLOSE;
|
|
|
+ da.w_eep_flag = FLAG_W_EEP;
|
|
|
+ set_relay_sta_async(&da);
|
|
|
+ }
|
|
|
|
|
|
}
|
|
|
- exti_interrupt_flag_clear(KEY_RST_EXTI);
|
|
|
+
|
|
|
}
|
|
|
}
|
|
|
#endif
|
|
|
@@ -147,13 +164,23 @@ void EXTI2_3_IRQHandler(void)
|
|
|
#if SUPPORT_ALL_ON_OFF
|
|
|
if(RESET != exti_interrupt_flag_get(KEY_TEST_EXTI))
|
|
|
{
|
|
|
+ exti_interrupt_flag_clear(KEY_TEST_EXTI);
|
|
|
if(board)
|
|
|
{
|
|
|
if(gpio_input_bit_get(KEY_RST_IO,KEY_RST) != 0)
|
|
|
{
|
|
|
-
|
|
|
+ for(uint8_t k = 0; k < RelaySlaveChaNum;k++)
|
|
|
+ {
|
|
|
+ async_data da = {0};
|
|
|
+ da.channel =k;
|
|
|
+ da.fire_or_zero = _FIRE;
|
|
|
+ da.method = DELAY_CTRL;
|
|
|
+ da.reg = &board->relay_staging_staus[k];
|
|
|
+ da.status = RELAY_OPEN;
|
|
|
+ da.w_eep_flag = FLAG_W_EEP;
|
|
|
+ set_relay_sta_async(&da);
|
|
|
+ }
|
|
|
}
|
|
|
- exti_interrupt_flag_clear(KEY_TEST_EXTI);
|
|
|
}
|
|
|
}
|
|
|
#endif
|
|
|
@@ -174,6 +201,9 @@ static void get_detection()
|
|
|
{
|
|
|
if(board)
|
|
|
{
|
|
|
+#if (POWER_TYPE == POWER_DC)
|
|
|
+
|
|
|
+#else
|
|
|
uint16_t data = 0;
|
|
|
if(board->detection_1_value > 0)
|
|
|
{
|
|
|
@@ -184,6 +214,7 @@ static void get_detection()
|
|
|
{
|
|
|
data |= (1 << 1);
|
|
|
}
|
|
|
+#endif
|
|
|
#endif
|
|
|
board->md_data.r_data.r_d.detection = data;
|
|
|
}
|
|
|
@@ -194,92 +225,359 @@ static void detection_opt(void)
|
|
|
if(board)
|
|
|
{
|
|
|
#if RELAY_REMENBER
|
|
|
- #if( SURPPORT_2_PT && (!SUPPORT_TWIN_FIRE))
|
|
|
- if(board->md_data.r_data.r_d.detection & 0x1)
|
|
|
+ #if ((POWER_TYPE == POWER_AC) || (POWER_TYPE == POWER_DC) || (POWER_TYPE == POWER_AC_3_1))
|
|
|
+ if(board->md_data.r_data.r_d.detection & 0x1)
|
|
|
+ {
|
|
|
+ if(board->handle_input_pt[0] == 0)
|
|
|
+ {
|
|
|
+ board->handle_input_pt[0] = 1;
|
|
|
+ for(uint8_t k = 0; k < PT_SUB_COUNT;k++)
|
|
|
+ {
|
|
|
+ if(board->md_data.rw_data.rw_d.chn_ctrl[k] == 2)
|
|
|
+ continue;
|
|
|
+ else if(board->md_data.rw_data.rw_d.chn_ctrl[k] == 1)
|
|
|
+ {
|
|
|
+ if(board->md_data.rw_data.rw_d.relay_status == RELAY_OPEN)
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ async_data da = {0};
|
|
|
+ da.channel =k;
|
|
|
+ da.fire_or_zero = _FIRE;
|
|
|
+ da.method = DELAY_CTRL;
|
|
|
+ da.reg = &board->relay_staging_staus[k];
|
|
|
+ da.status = board->handle_status[k];
|
|
|
+ da.w_eep_flag = FLAG_N_W_EEP;
|
|
|
+ set_relay_sta_async(&da);
|
|
|
+ // set_relay_status_async(&board->relay_staging_staus[k],DELAY_CTRL,board->handle_status[k]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }else
|
|
|
+ {
|
|
|
+ if(board->handle_input_pt[0] == 1)
|
|
|
+ {
|
|
|
+ for(uint8_t k = 0; k < PT_SUB_COUNT;k++)
|
|
|
+ {
|
|
|
+ if(board->md_data.rw_data.rw_d.chn_ctrl[k] == 1)
|
|
|
+ continue;
|
|
|
+ else if(board->md_data.rw_data.rw_d.chn_ctrl[k] == 2)
|
|
|
+ {
|
|
|
+ if(board->md_data.rw_data.rw_d.relay_status == RELAY_CLOSE)
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ board->handle_status[k] = board->md_data.rw_data.rw_d.relay_status[k];
|
|
|
+ async_data da = {0};
|
|
|
+ da.channel =k;
|
|
|
+ da.fire_or_zero = _FIRE;
|
|
|
+ da.method = PROMPT_CTRL;
|
|
|
+ da.reg = &board->relay_staging_staus[k];
|
|
|
+ da.status = RELAY_CLOSE;
|
|
|
+ da.w_eep_flag = FLAG_N_W_EEP;
|
|
|
+ set_relay_sta_async(&da);
|
|
|
+ // set_relay_status_async(&board->relay_staging_staus[k],PROMPT_CTRL,RELAY_CLOSE);
|
|
|
+ }
|
|
|
+ board->handle_input_pt[0] = 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ #if SURPPORT_2_PT
|
|
|
+ if(board->md_data.r_data.r_d.detection & 0x2)
|
|
|
+ {
|
|
|
+ if(board->handle_input_pt[1] == 0)
|
|
|
+ {
|
|
|
+ board->handle_input_pt[1] = 1;
|
|
|
+ for(uint8_t k = PT_SUB_COUNT; k < RelaySlaveChaNum;k++)
|
|
|
+ {
|
|
|
+ if(board->md_data.rw_data.rw_d.chn_ctrl[k] == 2)
|
|
|
+ continue;
|
|
|
+ else if(board->md_data.rw_data.rw_d.chn_ctrl[k] == 1)
|
|
|
+ {
|
|
|
+ if(board->md_data.rw_data.rw_d.relay_status == RELAY_OPEN)
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ async_data da = {0};
|
|
|
+ da.channel =k;
|
|
|
+ da.fire_or_zero = _FIRE;
|
|
|
+ da.method = DELAY_CTRL;
|
|
|
+ da.reg = &board->relay_staging_staus[k];
|
|
|
+ da.status = board->handle_status[k];
|
|
|
+ da.w_eep_flag = FLAG_N_W_EEP;
|
|
|
+ set_relay_sta_async(&da);
|
|
|
+ // set_relay_status_async(&board->relay_staging_staus[k],DELAY_CTRL,board->handle_status[k]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }else
|
|
|
+ {
|
|
|
+ if(board->handle_input_pt[1] == 1)
|
|
|
+ {
|
|
|
+ for(uint8_t k = PT_SUB_COUNT; k < RelaySlaveChaNum;k++)
|
|
|
+ {
|
|
|
+ if(board->md_data.rw_data.rw_d.chn_ctrl[k] == 1)
|
|
|
+ continue;
|
|
|
+ else if(board->md_data.rw_data.rw_d.chn_ctrl[k] == 2)
|
|
|
+ {
|
|
|
+ if(board->md_data.rw_data.rw_d.relay_status == RELAY_CLOSE)
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ board->handle_status[k] = board->md_data.rw_data.rw_d.relay_status[k];
|
|
|
+ async_data da = {0};
|
|
|
+ da.channel = k;
|
|
|
+ da.fire_or_zero = _FIRE;
|
|
|
+ da.method = PROMPT_CTRL;
|
|
|
+ da.reg = &board->relay_staging_staus[k];
|
|
|
+ da.status = RELAY_CLOSE;
|
|
|
+ da.w_eep_flag = FLAG_N_W_EEP;
|
|
|
+ set_relay_sta_async(&da);
|
|
|
+ //set_relay_status_async(&board->relay_staging_staus[k],PROMPT_CTRL,RELAY_CLOSE);
|
|
|
+ }
|
|
|
+ board->handle_input_pt[1] = 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ #endif
|
|
|
+ #elif (POWER_TYPE == POWER_AC_3_2)
|
|
|
+ uint8_t sync_buff[PT_SUB_COUNT] = {0};
|
|
|
+ async_data da = {0};
|
|
|
+ if(board->md_data.r_data.r_d.detection != 0x3)
|
|
|
+ {
|
|
|
+ if((board->md_data.r_data.r_d.detection & 0x1) == 0)
|
|
|
{
|
|
|
- if(board->handle_input_pt[0] == 0)
|
|
|
+ if(board->handle_input_pt[0] == 1)
|
|
|
{
|
|
|
- board->handle_input_pt[0] = 1;
|
|
|
-// uint8_t val = (RelaySlaveChaNum % 2) ? (RelaySlaveChaNum / 2 + 1) : (RelaySlaveChaNum / 2);
|
|
|
-// uint16_t value = 0;
|
|
|
+ board->handle_input_pt[0] = 0;
|
|
|
+
|
|
|
for(uint8_t k = 0; k < PT_SUB_COUNT;k++)
|
|
|
{
|
|
|
- //board->relay_staging_staus[k] = board->handle_status[k];
|
|
|
-// value = board->handle_status[k];
|
|
|
- set_relay_status_async(&board->relay_staging_staus[k],DELAY_CTRL,board->handle_status[k]);
|
|
|
-// w_eeprom_data_t data = {0};
|
|
|
-// data.lenth =2;
|
|
|
-// memcpy(&data.data,&value,2);
|
|
|
-// data.start_addr = (EEPROM_STATUS_ADDR+(k*2));
|
|
|
-// board->q_cache.en_queue(&data);
|
|
|
+ if(board->md_data.rw_data.rw_d.chn_ctrl[k] == 0 && board->md_data.rw_data.rw_d.chn_ctrl[k+PT_SUB_COUNT] == 0) //double fire ctrl
|
|
|
+ {
|
|
|
+ board->handle_status[k] = board->md_data.rw_data.rw_d.relay_status[k] & 0x1;
|
|
|
+ board->handle_status[k+PT_SUB_COUNT] = board->md_data.rw_data.rw_d.relay_status[k+PT_SUB_COUNT] & 0x1;
|
|
|
+ da.channel = k+PT_SUB_COUNT;
|
|
|
+ da.fire_or_zero = _FIRE;
|
|
|
+ da.method = PROMPT_CTRL;
|
|
|
+ da.reg = &board->relay_staging_staus[k+PT_SUB_COUNT];
|
|
|
+ da.status = RELAY_CLOSE;
|
|
|
+ da.w_eep_flag = FLAG_N_W_EEP;
|
|
|
+ set_relay_sta_async(&da);
|
|
|
+ sync_buff[k] = 1;
|
|
|
+ }else
|
|
|
+ {
|
|
|
+ if(board->md_data.rw_data.rw_d.chn_ctrl[k] == 0)
|
|
|
+ {
|
|
|
+ board->handle_status[k] = board->md_data.rw_data.rw_d.relay_status[k] & 0x1;
|
|
|
+ }else if(board->md_data.rw_data.rw_d.chn_ctrl[k] == 2)
|
|
|
+ {
|
|
|
+ if(board->md_data.rw_data.rw_d.relay_status == RELAY_CLOSE)
|
|
|
+ continue;
|
|
|
+ }else
|
|
|
+ {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ da.channel = k;
|
|
|
+ da.fire_or_zero = _FIRE;
|
|
|
+ da.method = PROMPT_CTRL;
|
|
|
+ da.reg = &board->relay_staging_staus[k];
|
|
|
+ da.status = RELAY_CLOSE;
|
|
|
+ da.w_eep_flag = FLAG_N_W_EEP;
|
|
|
+ set_relay_sta_async(&da);
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
- }else
|
|
|
+ }
|
|
|
+ if((board->md_data.r_data.r_d.detection & 0x2) == 0)
|
|
|
{
|
|
|
- if(board->handle_input_pt[0] == 1)
|
|
|
+ if(board->handle_input_pt[1] == 1)
|
|
|
{
|
|
|
-// uint8_t val = (RelaySlaveChaNum % 2) ? (RelaySlaveChaNum / 2 + 1) : (RelaySlaveChaNum/2);
|
|
|
-// uint16_t value = RELAY_CLOSE;
|
|
|
+ board->handle_input_pt[1] = 0;
|
|
|
for(uint8_t k = 0; k < PT_SUB_COUNT;k++)
|
|
|
{
|
|
|
- board->handle_status[k] = board->md_data.rw_data.rw_d.relay_status[k];
|
|
|
- set_relay_status_async(&board->relay_staging_staus[k],PROMPT_CTRL,RELAY_CLOSE);
|
|
|
-// w_eeprom_data_t data = {0};
|
|
|
-// data.lenth =2;
|
|
|
-// memcpy(&data.data,&value,2);
|
|
|
-// data.start_addr = (EEPROM_STATUS_ADDR+(k*2));
|
|
|
-// board->q_cache.en_queue(&data);
|
|
|
+ if(board->md_data.rw_data.rw_d.chn_ctrl[k] == 0 && board->md_data.rw_data.rw_d.chn_ctrl[k+PT_SUB_COUNT] == 0)
|
|
|
+ {
|
|
|
+ if(sync_buff[k])
|
|
|
+ continue;
|
|
|
+ else
|
|
|
+ {
|
|
|
+ board->handle_status[k] = board->md_data.rw_data.rw_d.relay_status[k] & 0x1;
|
|
|
+ board->handle_status[k+PT_SUB_COUNT] = board->md_data.rw_data.rw_d.relay_status[k+PT_SUB_COUNT] & 0x1;
|
|
|
+ da.channel = k;
|
|
|
+ da.fire_or_zero = _FIRE;
|
|
|
+ da.method = PROMPT_CTRL;
|
|
|
+ da.reg = &board->relay_staging_staus[k];
|
|
|
+ da.status = RELAY_CLOSE;
|
|
|
+ da.w_eep_flag = FLAG_N_W_EEP;
|
|
|
+ set_relay_sta_async(&da);
|
|
|
+ }
|
|
|
+ }else
|
|
|
+ {
|
|
|
+ if(board->md_data.rw_data.rw_d.chn_ctrl[k+PT_SUB_COUNT] == 0)
|
|
|
+ {
|
|
|
+ board->handle_status[k+PT_SUB_COUNT] = board->md_data.rw_data.rw_d.relay_status[k+PT_SUB_COUNT] & 0x1;
|
|
|
+ }else if(board->md_data.rw_data.rw_d.chn_ctrl[k+PT_SUB_COUNT] == 2)
|
|
|
+ {
|
|
|
+ if(board->md_data.rw_data.rw_d.relay_status[k+PT_SUB_COUNT] == RELAY_CLOSE)
|
|
|
+ continue;
|
|
|
+ }else
|
|
|
+ {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ da.channel = k+PT_SUB_COUNT;
|
|
|
+ da.fire_or_zero = _FIRE;
|
|
|
+ da.method = PROMPT_CTRL;
|
|
|
+ da.reg = &board->relay_staging_staus[k+PT_SUB_COUNT];
|
|
|
+ da.status = RELAY_CLOSE;
|
|
|
+ da.w_eep_flag = FLAG_N_W_EEP;
|
|
|
+ set_relay_sta_async(&da);
|
|
|
}
|
|
|
- board->handle_input_pt[0] = 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }else
|
|
|
+ {
|
|
|
+ if(board->handle_input_pt[0] == 0)
|
|
|
+ {
|
|
|
+ board->handle_input_pt[0] = 1;
|
|
|
+ for(uint8_t k = 0; k < PT_SUB_COUNT;k++)
|
|
|
+ {
|
|
|
+ if(board->md_data.rw_data.rw_d.chn_ctrl[k] == 0 && board->md_data.rw_data.rw_d.chn_ctrl[k+PT_SUB_COUNT] == 0)
|
|
|
+ {
|
|
|
+ da.channel = k+PT_SUB_COUNT;
|
|
|
+ da.fire_or_zero = _FIRE;
|
|
|
+ da.method = DELAY_CTRL;
|
|
|
+ da.reg = &board->relay_staging_staus[k+PT_SUB_COUNT];
|
|
|
+ da.status = board->handle_status[k+PT_SUB_COUNT];
|
|
|
+ da.w_eep_flag = FLAG_N_W_EEP;
|
|
|
+ set_relay_sta_async(&da);
|
|
|
+ sync_buff[k] = 1;
|
|
|
+ }else
|
|
|
+ {
|
|
|
+ if(board->md_data.rw_data.rw_d.chn_ctrl[k] == 0)
|
|
|
+ {
|
|
|
+
|
|
|
+ }else if(board->md_data.rw_data.rw_d.chn_ctrl[k] == 1)
|
|
|
+ {
|
|
|
+ if(board->md_data.rw_data.rw_d.relay_status[k] == RELAY_OPEN)
|
|
|
+ continue;
|
|
|
+ }else
|
|
|
+ {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ da.channel = k;
|
|
|
+ da.fire_or_zero = _FIRE;
|
|
|
+ da.method = DELAY_CTRL;
|
|
|
+ da.reg = &board->relay_staging_staus[k];
|
|
|
+ da.status = board->handle_status[k];
|
|
|
+ da.w_eep_flag = FLAG_N_W_EEP;
|
|
|
+ set_relay_sta_async(&da);
|
|
|
}
|
|
|
}
|
|
|
- if(board->md_data.r_data.r_d.detection & 0x2)
|
|
|
+ if(board->handle_input_pt[1] == 0)
|
|
|
+ {
|
|
|
+ board->handle_input_pt[1] = 1;
|
|
|
+ for(uint8_t k = 0; k < PT_SUB_COUNT;k++)
|
|
|
+ {
|
|
|
+ if(board->md_data.rw_data.rw_d.chn_ctrl[k] == 0 && board->md_data.rw_data.rw_d.chn_ctrl[k+PT_SUB_COUNT] == 0)
|
|
|
+ {
|
|
|
+ if(sync_buff[k])
|
|
|
+ continue;
|
|
|
+ da.channel = k;
|
|
|
+ da.fire_or_zero = _FIRE;
|
|
|
+ da.method = DELAY_CTRL;
|
|
|
+ da.reg = &board->relay_staging_staus[k];
|
|
|
+ da.status = board->handle_status[k];
|
|
|
+ da.w_eep_flag = FLAG_N_W_EEP;
|
|
|
+ set_relay_sta_async(&da);
|
|
|
+
|
|
|
+ }else
|
|
|
+ {
|
|
|
+ if(board->md_data.rw_data.rw_d.chn_ctrl[k+PT_SUB_COUNT] == 0)
|
|
|
+ {
|
|
|
+
|
|
|
+ }else if(board->md_data.rw_data.rw_d.chn_ctrl[k+PT_SUB_COUNT] == 1)
|
|
|
+ {
|
|
|
+ if(board->md_data.rw_data.rw_d.relay_status[k+PT_SUB_COUNT] == RELAY_OPEN)
|
|
|
+ continue;
|
|
|
+ }else
|
|
|
+ {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ da.channel = k+PT_SUB_COUNT;
|
|
|
+ da.fire_or_zero = _FIRE;
|
|
|
+ da.method = DELAY_CTRL;
|
|
|
+ da.reg = &board->relay_staging_staus[k+PT_SUB_COUNT];
|
|
|
+ da.status = board->handle_status[k+PT_SUB_COUNT];
|
|
|
+ da.w_eep_flag = FLAG_N_W_EEP;
|
|
|
+ set_relay_sta_async(&da);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ #elif (POWER_TYPE == POWER_AC_3_3)
|
|
|
+ if(board->md_data.r_data.r_d.detection)
|
|
|
{
|
|
|
- if(board->handle_input_pt[1] == 0)
|
|
|
+ if(board->handle_input_pt[0] == 0)
|
|
|
{
|
|
|
- board->handle_input_pt[1] = 1;
|
|
|
-// uint8_t val = (RelaySlaveChaNum % 2) ? (RelaySlaveChaNum / 2 + 1) : (RelaySlaveChaNum/2);
|
|
|
-// uint16_t value = 0;
|
|
|
- for(uint8_t k = PT_SUB_COUNT; k < RelaySlaveChaNum;k++)
|
|
|
+ board->handle_input_pt[0] = 1;
|
|
|
+ for(uint8_t k = 0; k < RelaySlaveChaNum;k++)
|
|
|
+ {
|
|
|
+ async_data da = {0};
|
|
|
+ da.channel =k;
|
|
|
+ da.fire_or_zero = _FIRE;
|
|
|
+ da.method = DELAY_CTRL;
|
|
|
+ da.reg = &board->relay_staging_staus[k];
|
|
|
+ da.status = board->handle_status[k];
|
|
|
+ da.w_eep_flag = FLAG_N_W_EEP;
|
|
|
+ set_relay_sta_async(&da);
|
|
|
+ // set_relay_status_async(&board->relay_staging_staus[k],DELAY_CTRL,board->handle_status[k]);
|
|
|
+ }
|
|
|
+#if (ZERO_CONTRL == ZERO_LINE_CTRL_YES)
|
|
|
+ for(uint8_t k = 0; k < ZERO_CTRL_NUM;k++)
|
|
|
{
|
|
|
- set_relay_status_async(&board->relay_staging_staus[k],DELAY_CTRL,board->handle_status[k]);
|
|
|
-// w_eeprom_data_t data = {0};
|
|
|
-// data.lenth =2;
|
|
|
-// memcpy(&data.data,&value,2);
|
|
|
-// data.start_addr = (EEPROM_STATUS_ADDR+(k*2));
|
|
|
-// board->q_cache.en_queue(&data);
|
|
|
+ async_data da = {0};
|
|
|
+ da.channel =k;
|
|
|
+ da.fire_or_zero = _ZERO;
|
|
|
+ da.method = DELAY_CTRL;
|
|
|
+ da.reg = &board->relay_zero_staging_status[k];
|
|
|
+ da.status = board->handle_status_N[k];
|
|
|
+ da.w_eep_flag = FLAG_N_W_EEP;
|
|
|
+ set_relay_sta_async(&da);
|
|
|
}
|
|
|
+#endif
|
|
|
}
|
|
|
}else
|
|
|
{
|
|
|
- if(board->handle_input_pt[1] == 1)
|
|
|
+ if(board->handle_input_pt[0] == 1)
|
|
|
{
|
|
|
-// uint8_t val = (RelaySlaveChaNum % 2) ? (RelaySlaveChaNum / 2 + 1) : (RelaySlaveChaNum/2);
|
|
|
-// uint16_t value = RELAY_CLOSE;
|
|
|
- for(uint8_t k = PT_SUB_COUNT; k < RelaySlaveChaNum;k++)
|
|
|
+ board->handle_input_pt[0] = 0;
|
|
|
+ for(uint8_t k = 0; k < RelaySlaveChaNum;k++)
|
|
|
{
|
|
|
- board->handle_status[k] = board->md_data.rw_data.rw_d.relay_status[k];
|
|
|
- set_relay_status_async(&board->relay_staging_staus[k],PROMPT_CTRL,RELAY_CLOSE);
|
|
|
-// w_eeprom_data_t data = {0};
|
|
|
-// data.lenth =2;
|
|
|
-// memcpy(&data.data,&value,2);
|
|
|
-// data.start_addr = (EEPROM_STATUS_ADDR+(k*2));
|
|
|
-// board->q_cache.en_queue(&data);
|
|
|
+ board->handle_status[k] = board->md_data.rw_data.rw_d.relay_status[k];
|
|
|
+ async_data da = {0};
|
|
|
+ da.channel =k;
|
|
|
+ da.fire_or_zero = _FIRE;
|
|
|
+ da.method = PROMPT_CTRL;
|
|
|
+ da.reg = &board->relay_staging_staus[k];
|
|
|
+ da.status = RELAY_CLOSE;
|
|
|
+ da.w_eep_flag = FLAG_N_W_EEP;
|
|
|
+ set_relay_sta_async(&da);
|
|
|
+ // set_relay_status_async(&board->relay_staging_staus[k],PROMPT_CTRL,RELAY_CLOSE);
|
|
|
}
|
|
|
- board->handle_input_pt[1] = 0;
|
|
|
+#if (ZERO_CONTRL == ZERO_LINE_CTRL_YES)
|
|
|
+ for(uint8_t k = 0; k < ZERO_CTRL_NUM;k++)
|
|
|
+ {
|
|
|
+ board->handle_status_N[k] = board->md_data.rw_data.rw_d.zero_relay_status[k];
|
|
|
+ async_data da = {0};
|
|
|
+ da.channel =k;
|
|
|
+ da.fire_or_zero = _ZERO;
|
|
|
+ da.method = PROMPT_CTRL;
|
|
|
+ da.reg = &board->relay_zero_staging_status[k];
|
|
|
+ da.status = RELAY_CLOSE;
|
|
|
+ da.w_eep_flag = FLAG_N_W_EEP;
|
|
|
+ set_relay_sta_async(&da);
|
|
|
+ }
|
|
|
+#endif
|
|
|
}
|
|
|
- }
|
|
|
- #elif SUPPORT_TWIN_FIRE
|
|
|
- //todo
|
|
|
-// if(board->md_data.r_data.r_d.detection & 0x3)
|
|
|
-// {
|
|
|
-//
|
|
|
-// }
|
|
|
- #endif
|
|
|
-#else
|
|
|
- //todo
|
|
|
+ }
|
|
|
|
|
|
-#endif
|
|
|
+
|
|
|
+ #endif
|
|
|
+#endif
|
|
|
}
|
|
|
}
|