|
@@ -1581,6 +1581,41 @@ static void* breaker_thread(void *arg)
|
|
|
if (chn>=1&& chn<=BREAKER_485_CHN_MAX)
|
|
if (chn>=1&& chn<=BREAKER_485_CHN_MAX)
|
|
|
{
|
|
{
|
|
|
temp->breaker_status = breaker_scann->board[temp->breaker_gather_addr-BREADER_485_ADDR].ch_status[chn-1];
|
|
temp->breaker_status = breaker_scann->board[temp->breaker_gather_addr-BREADER_485_ADDR].ch_status[chn-1];
|
|
|
|
|
+#if USE_SMART_DETECTION_CTRL
|
|
|
|
|
+ if( temp->breaker_status == 0 && chn >=2 && chn <= 5) //close
|
|
|
|
|
+ {
|
|
|
|
|
+ uint16_t close_id = temp->breaker_id;
|
|
|
|
|
+ if(close_id > 6)
|
|
|
|
|
+ {
|
|
|
|
|
+ close_id -= 2; // 2 路断路器
|
|
|
|
|
+ }else
|
|
|
|
|
+ {
|
|
|
|
|
+ close_id -= 1; // 1 路断路器
|
|
|
|
|
+ }
|
|
|
|
|
+ GlobalPowerManger* _globalPowerMangerTemp = NULL ;
|
|
|
|
|
+ list_for_each_entry(_globalPowerMangerTemp, &__globalDeviceManage._globalPowerManger.list, list)
|
|
|
|
|
+ {
|
|
|
|
|
+ if((close_id == _globalPowerMangerTemp->product_ch_id) && (_globalPowerMangerTemp->product_ch_status== 1))
|
|
|
|
|
+ {
|
|
|
|
|
+ int ret= g_switch_set_all_chn_ctrl(&__globalDeviceManage._globalRelaySampManger,
|
|
|
|
|
+ _globalPowerMangerTemp,
|
|
|
|
|
+ _globalPowerMangerTemp->product_saddr,
|
|
|
|
|
+ _globalPowerMangerTemp->product_ch_addr,
|
|
|
|
|
+ 0,false);
|
|
|
|
|
+ if(ret < 0)
|
|
|
|
|
+ {
|
|
|
|
|
+ ret= g_switch_set_all_chn_ctrl(&__globalDeviceManage._globalRelaySampManger,
|
|
|
|
|
+ _globalPowerMangerTemp,
|
|
|
|
|
+ _globalPowerMangerTemp->product_saddr,
|
|
|
|
|
+ _globalPowerMangerTemp->product_ch_addr,
|
|
|
|
|
+ 0,false);
|
|
|
|
|
+ }
|
|
|
|
|
+ log_d("close channel = %d\n",close_id);
|
|
|
|
|
+ break;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+#endif
|
|
|
}
|
|
}
|
|
|
}else
|
|
}else
|
|
|
{
|
|
{
|