|
@@ -20,7 +20,7 @@
|
|
|
#define MB_MAX_LEN 250
|
|
#define MB_MAX_LEN 250
|
|
|
|
|
|
|
|
|
|
|
|
|
-#define MB_PARA_SIM
|
|
|
|
|
|
|
+//#define MB_PARA_SIM
|
|
|
//#define SLAVE_DATA_SIM
|
|
//#define SLAVE_DATA_SIM
|
|
|
|
|
|
|
|
|
|
|
|
@@ -108,8 +108,7 @@ static int slave_get_info(cascade_handle_t *cas, int hardread)
|
|
|
GlobalDeviceManager *dm=get_dm();
|
|
GlobalDeviceManager *dm=get_dm();
|
|
|
board_info_t *info=&cas->info;
|
|
board_info_t *info=&cas->info;
|
|
|
|
|
|
|
|
- memset(info, 0, sizeof(board_info_t));
|
|
|
|
|
-
|
|
|
|
|
|
|
+ info->cnt = 0;
|
|
|
#ifdef SLAVE_DATA_SIM
|
|
#ifdef SLAVE_DATA_SIM
|
|
|
for(j=1; j<10; j++) {
|
|
for(j=1; j<10; j++) {
|
|
|
info->channel[info->cnt].addr = 1;
|
|
info->channel[info->cnt].addr = 1;
|
|
@@ -191,6 +190,7 @@ static int slave_get_ch_data(cascade_handle_t *cas)
|
|
|
{
|
|
{
|
|
|
GlobalDeviceManager *dm=get_dm();
|
|
GlobalDeviceManager *dm=get_dm();
|
|
|
GlobalPowerManger *tmp=NULL;
|
|
GlobalPowerManger *tmp=NULL;
|
|
|
|
|
+ PowerInfo *info=cas->chInfo.info;
|
|
|
|
|
|
|
|
cas->chInfo.cnt=0;
|
|
cas->chInfo.cnt=0;
|
|
|
list_for_each_entry(tmp, &dm->_globalPowerManger.list, list)
|
|
list_for_each_entry(tmp, &dm->_globalPowerManger.list, list)
|
|
@@ -201,6 +201,12 @@ static int slave_get_ch_data(cascade_handle_t *cas)
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+#if 0
|
|
|
|
|
+ LOGD("_____ slave, info[0].status: %d\n", info[0].status);
|
|
|
|
|
+ LOGD("_____ slave, info[1].status: %d\n", info[1].status);
|
|
|
|
|
+ LOGD("_____ slave, info[2].status: %d\n", info[2].status);
|
|
|
|
|
+#endif
|
|
|
|
|
+
|
|
|
return 0;
|
|
return 0;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -488,6 +494,7 @@ static int mb_receive(cascade_handle_t *cas)
|
|
|
int i,t=0;
|
|
int i,t=0;
|
|
|
char buff[80];
|
|
char buff[80];
|
|
|
board_info_t *info=&cas->info;
|
|
board_info_t *info=&cas->info;
|
|
|
|
|
+ GlobalDeviceManager *dm=get_dm();
|
|
|
|
|
|
|
|
if(cas->cmd.cmd==CASCADE_CMD_OPEN) {
|
|
if(cas->cmd.cmd==CASCADE_CMD_OPEN) {
|
|
|
LOGD("____ slave CASCADE_CMD_OPEN\n");
|
|
LOGD("____ slave CASCADE_CMD_OPEN\n");
|
|
@@ -500,7 +507,7 @@ static int mb_receive(cascade_handle_t *cas)
|
|
|
if(cas->cmd.chId == 0xff) {
|
|
if(cas->cmd.chId == 0xff) {
|
|
|
for(i=0; i<info->cnt; i++) {
|
|
for(i=0; i<info->cnt; i++) {
|
|
|
if(info->channel[i].addr>0) {
|
|
if(info->channel[i].addr>0) {
|
|
|
- t = g_switch_set_all_ctrl(&get_dm()->_globalRelaySampManger, info->channel[i].type, info->channel[i].addr, flag);
|
|
|
|
|
|
|
+ t = g_switch_set_all_ctrl(&dm->_globalRelaySampManger, info->channel[i].type, info->channel[i].addr, flag);
|
|
|
if(t) {
|
|
if(t) {
|
|
|
LOGE("___ %d %s failed\n", info->channel[i].addr, (cas->cmd.cmd==CASCADE_CMD_OPEN)?"open":"close");
|
|
LOGE("___ %d %s failed\n", info->channel[i].addr, (cas->cmd.cmd==CASCADE_CMD_OPEN)?"open":"close");
|
|
|
}
|
|
}
|
|
@@ -508,10 +515,14 @@ static int mb_receive(cascade_handle_t *cas)
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
else {
|
|
else {
|
|
|
- GlobalPowerManger power;
|
|
|
|
|
- int index = cas->cmd.chId-1;
|
|
|
|
|
- power.product_ch_type = info->channel[index].type;
|
|
|
|
|
- t = g_switch_set_all_chn_ctrl(&get_dm()->_globalRelaySampManger, &power, info->channel[index].addr, info->channel[index].ch_addr, flag, false);
|
|
|
|
|
|
|
+ GlobalPowerManger *tmp=NULL;
|
|
|
|
|
+ list_for_each_entry(tmp, &dm->_globalPowerManger.list, list)
|
|
|
|
|
+ {
|
|
|
|
|
+ if(tmp->product_ch_id==cas->cmd.chId) {
|
|
|
|
|
+ t = g_switch_set_all_chn_ctrl(&dm->_globalRelaySampManger, tmp, tmp->product_saddr, tmp->product_ch_addr, flag, false);
|
|
|
|
|
+ break;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
if(cas->cmd.cmd==CASCADE_CMD_OPEN) {
|
|
if(cas->cmd.cmd==CASCADE_CMD_OPEN) {
|
|
@@ -520,7 +531,7 @@ static int mb_receive(cascade_handle_t *cas)
|
|
|
else {
|
|
else {
|
|
|
sprintf(buff,"$关闭$|$所有$|$通道$");
|
|
sprintf(buff,"$关闭$|$所有$|$通道$");
|
|
|
}
|
|
}
|
|
|
- dev_insert_alarm_ctrl(get_dm()->db,get_dm()->_global_device_info->product_id,3,buff);
|
|
|
|
|
|
|
+ dev_insert_alarm_ctrl(dm->db, dm->_global_device_info->product_id,3,buff);
|
|
|
}
|
|
}
|
|
|
break;
|
|
break;
|
|
|
|
|
|
|
@@ -744,12 +755,14 @@ static int power_ch_update(cascade_handle_t *cas)
|
|
|
return -1;
|
|
return -1;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- LOGD("_____ power_ch_update\n");
|
|
|
|
|
|
|
+#if 0
|
|
|
|
|
+ LOGD("_____ master, info[0].status: %d\n", info[0].status);
|
|
|
|
|
+ LOGD("_____ master, info[1].status: %d\n", info[1].status);
|
|
|
|
|
+ LOGD("_____ master, info[2].status: %d\n", info[2].status);
|
|
|
|
|
+#endif
|
|
|
|
|
+
|
|
|
list_for_each_entry(tmp, &dm2->_globalPowerManger.list, list)
|
|
list_for_each_entry(tmp, &dm2->_globalPowerManger.list, list)
|
|
|
{
|
|
{
|
|
|
- if(cnt>cas->chInfo.cnt) {
|
|
|
|
|
- break;
|
|
|
|
|
- }
|
|
|
|
|
tmp->_PowerInfo = info[cnt];
|
|
tmp->_PowerInfo = info[cnt];
|
|
|
cnt++;
|
|
cnt++;
|
|
|
}
|
|
}
|
|
@@ -900,6 +913,7 @@ static int master_query(cascade_handle_t *cas)
|
|
|
else
|
|
else
|
|
|
#endif
|
|
#endif
|
|
|
{
|
|
{
|
|
|
|
|
+ cas->chInfo.cnt = 0;
|
|
|
rdata.dlen = sizeof(uint8_t)+sizeof(PowerInfo)*cas->info.cnt;
|
|
rdata.dlen = sizeof(uint8_t)+sizeof(PowerInfo)*cas->info.cnt;
|
|
|
rdata.data = (uint8_t*)&cas->chInfo;
|
|
rdata.data = (uint8_t*)&cas->chInfo;
|
|
|
}
|
|
}
|
|
@@ -1047,7 +1061,7 @@ static void* cascade_thread(void *arg)
|
|
|
while(h->quit==0) {
|
|
while(h->quit==0) {
|
|
|
if(info->product_modbus_type==0) { //主模
|
|
if(info->product_modbus_type==0) { //主模
|
|
|
r = master_query(cas);
|
|
r = master_query(cas);
|
|
|
- sleep(5);
|
|
|
|
|
|
|
+ sleep(1);
|
|
|
}
|
|
}
|
|
|
else { //从模式,等待主设备发起数据请�?
|
|
else { //从模式,等待主设备发起数据请�?
|
|
|
r = slave_receive(cas);
|
|
r = slave_receive(cas);
|