|
@@ -461,7 +461,7 @@ static int slave_save(cascade_handle_t *cas)
|
|
|
static int mb_init(cascade_handle_t *cas, char *path, int type, int addr, uint32_t baud)
|
|
static int mb_init(cascade_handle_t *cas, char *path, int type, int addr, uint32_t baud)
|
|
|
{
|
|
{
|
|
|
int r;
|
|
int r;
|
|
|
- r = g_modbus_init(&cas->m, path, baud, type, addr, (type>0)?"master":"slave", 1);
|
|
|
|
|
|
|
+ r = g_modbus_init(&cas->m, path, baud, type, addr, (type>0)?"slave":"master", 1);
|
|
|
if(r==0) {
|
|
if(r==0) {
|
|
|
if(type>0) {
|
|
if(type>0) {
|
|
|
LOGD("___ set slave addr: %d\n", addr);
|
|
LOGD("___ set slave addr: %d\n", addr);
|
|
@@ -620,7 +620,7 @@ static int mb_read(cascade_handle_t *cas, int addr, data_t *d)
|
|
|
return -1;
|
|
return -1;
|
|
|
}
|
|
}
|
|
|
//LOGD("___ mb_read dlen: %d\n", d->dlen);
|
|
//LOGD("___ mb_read dlen: %d\n", d->dlen);
|
|
|
-
|
|
|
|
|
|
|
+ //LOGD("______cas->info.cnt4: %d\n", cas->sInfo.cnt);
|
|
|
while(1) {
|
|
while(1) {
|
|
|
if(rlen+oncelen>d->dlen) {
|
|
if(rlen+oncelen>d->dlen) {
|
|
|
xlen = d->dlen-rlen;
|
|
xlen = d->dlen-rlen;
|
|
@@ -631,6 +631,7 @@ static int mb_read(cascade_handle_t *cas, int addr, data_t *d)
|
|
|
xlen += xlen%2;
|
|
xlen += xlen%2;
|
|
|
|
|
|
|
|
r = _mb_read(cas, addr, CASCADE_REG_READ, buff, xlen/2);
|
|
r = _mb_read(cas, addr, CASCADE_REG_READ, buff, xlen/2);
|
|
|
|
|
+ //LOGD("______cas->info.cnt5: %d\n", cas->sInfo.cnt);
|
|
|
if(r<0) {
|
|
if(r<0) {
|
|
|
LOGE("___ _mb_read failed, %s, rlen: %d\n", modbus_strerror(errno), rlen);
|
|
LOGE("___ _mb_read failed, %s, rlen: %d\n", modbus_strerror(errno), rlen);
|
|
|
return -1;
|
|
return -1;
|
|
@@ -650,7 +651,7 @@ static int mb_read(cascade_handle_t *cas, int addr, data_t *d)
|
|
|
break;
|
|
break;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
|
|
+ //LOGD("______cas->info.cnt6: %d\n", cas->sInfo.cnt);
|
|
|
return 0;
|
|
return 0;
|
|
|
}
|
|
}
|
|
|
static int mb_write(cascade_handle_t *cas, int addr, data_t *d)
|
|
static int mb_write(cascade_handle_t *cas, int addr, data_t *d)
|
|
@@ -697,6 +698,7 @@ static int mb_write_read(cascade_handle_t *cas, int addr, data_t *wd, data_t *rd
|
|
|
int r=0;
|
|
int r=0;
|
|
|
|
|
|
|
|
r = mb_write(cas, addr, wd);
|
|
r = mb_write(cas, addr, wd);
|
|
|
|
|
+ //LOGD("______cas->info.cnt3: %d\n", cas->sInfo.cnt);
|
|
|
if(r==0) {
|
|
if(r==0) {
|
|
|
r = mb_read(cas, addr, rd);
|
|
r = mb_read(cas, addr, rd);
|
|
|
}
|
|
}
|
|
@@ -777,22 +779,22 @@ static int mb_receive(cascade_handle_t *cas)
|
|
|
break;
|
|
break;
|
|
|
case CASCADE_CMD_BREAKER_SAVE_ADD:
|
|
case CASCADE_CMD_BREAKER_SAVE_ADD:
|
|
|
{
|
|
{
|
|
|
- LOGD("_____ slave CASCADE_CMD_BREAKER_SAVE_ADD\n");
|
|
|
|
|
- LOGD("%d %d %s %s %s\n",cmd->datas.data.jdh,cmd->datas.data.cjdz,cmd->datas.data.cjfs,cmd->datas.data.com,cmd->datas.data.breaker_chns);
|
|
|
|
|
|
|
+ //LOGD("_____ slave CASCADE_CMD_BREAKER_SAVE_ADD\n");
|
|
|
|
|
+ //LOGD("%d %d %s %s %s\n",cmd->datas.data.jdh,cmd->datas.data.cjdz,cmd->datas.data.cjfs,cmd->datas.data.com,cmd->datas.data.breaker_chns);
|
|
|
//slave_breaker_add(&cmd->datas.data);
|
|
//slave_breaker_add(&cmd->datas.data);
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
break;
|
|
break;
|
|
|
case CASCADE_CMD_BREAKER_SAVE_UPDATE:
|
|
case CASCADE_CMD_BREAKER_SAVE_UPDATE:
|
|
|
{
|
|
{
|
|
|
- LOGD("_____ slave CASCADE_CMD_BREAKER_SAVE_UPDATE\n");
|
|
|
|
|
- LOGD("%d %s %s\n",cmd->datas.data1.switch_id,cmd->datas.data1.switch_name,cmd->datas.data1.breaker_chns);
|
|
|
|
|
|
|
+ //LOGD("_____ slave CASCADE_CMD_BREAKER_SAVE_UPDATE\n");
|
|
|
|
|
+ //LOGD("%d %s %s\n",cmd->datas.data1.switch_id,cmd->datas.data1.switch_name,cmd->datas.data1.breaker_chns);
|
|
|
//slave_breaker_update(&cmd->datas.data1);
|
|
//slave_breaker_update(&cmd->datas.data1);
|
|
|
}
|
|
}
|
|
|
break;
|
|
break;
|
|
|
case CASCADE_CMD_BREAKER_SAVE_DELETE:
|
|
case CASCADE_CMD_BREAKER_SAVE_DELETE:
|
|
|
{
|
|
{
|
|
|
- LOGD("_____ slave CASCADE_CMD_BREAKER_SAVE_DELETE\n");
|
|
|
|
|
|
|
+ //LOGD("_____ slave CASCADE_CMD_BREAKER_SAVE_DELETE\n");
|
|
|
// slave_breaker_delete(&cmd->datas.data2);
|
|
// slave_breaker_delete(&cmd->datas.data2);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -1358,10 +1360,12 @@ static int master_cmd(cascade_handle_t *cas, cmd_data_t *cmd)
|
|
|
LOGD("_____ master send CASCADE_CMD_GET_INFO\n");
|
|
LOGD("_____ master send CASCADE_CMD_GET_INFO\n");
|
|
|
r = mb_write_read(cas, cur_dev_addr, &wdata, &rdata);
|
|
r = mb_write_read(cas, cur_dev_addr, &wdata, &rdata);
|
|
|
if(r==0) {
|
|
if(r==0) {
|
|
|
- LOGD("______cas->info.cnt: %d\n", cas->sInfo.cnt);
|
|
|
|
|
|
|
+ // LOGD("______cas->info.cnt: %d\n", cas->sInfo.cnt);
|
|
|
rdata.dlen = sizeof(slave_info_t)-sizeof(channel_info_t)*(CH_MAX-cas->sInfo.cnt);
|
|
rdata.dlen = sizeof(slave_info_t)-sizeof(channel_info_t)*(CH_MAX-cas->sInfo.cnt);
|
|
|
rdata.data = (uint8_t*)&cas->sInfo;
|
|
rdata.data = (uint8_t*)&cas->sInfo;
|
|
|
|
|
+ //LOGD("______cas->info.cnt1: %d\n", cas->sInfo.cnt);
|
|
|
r = mb_write_read(cas, cur_dev_addr, &wdata, &rdata);
|
|
r = mb_write_read(cas, cur_dev_addr, &wdata, &rdata);
|
|
|
|
|
+ //LOGD("______cas->info.cnt2: %d\n", cas->sInfo.cnt);
|
|
|
if(r==0) {
|
|
if(r==0) {
|
|
|
power_add(cas);
|
|
power_add(cas);
|
|
|
}
|
|
}
|
|
@@ -1429,6 +1433,8 @@ static int master_query(cascade_handle_t *cas)
|
|
|
case CASCADE_CMD_QUERY_CH:
|
|
case CASCADE_CMD_QUERY_CH:
|
|
|
{
|
|
{
|
|
|
//LOGD("__00__ master query CASCADE_CMD_QUERY_CH, cnt: %d\n", cas->sInfo.cnt);
|
|
//LOGD("__00__ master query CASCADE_CMD_QUERY_CH, cnt: %d\n", cas->sInfo.cnt);
|
|
|
|
|
+ if(cas->scanner_flag == 1)
|
|
|
|
|
+ return -1;
|
|
|
if(cas->sInfo.cnt==0) {
|
|
if(cas->sInfo.cnt==0) {
|
|
|
return -1;
|
|
return -1;
|
|
|
}
|
|
}
|
|
@@ -1446,6 +1452,7 @@ static int master_query(cascade_handle_t *cas)
|
|
|
}
|
|
}
|
|
|
//LOGD("__11__ master query CASCADE_CMD_QUERY_CH, cnt: %d\n", cas->sInfo.cnt);
|
|
//LOGD("__11__ master query CASCADE_CMD_QUERY_CH, cnt: %d\n", cas->sInfo.cnt);
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
break;
|
|
break;
|
|
|
case CASCADE_CMD_BREAKER_QUERY:
|
|
case CASCADE_CMD_BREAKER_QUERY:
|
|
|
{
|
|
{
|
|
@@ -1638,7 +1645,7 @@ static void* scan_thread(void *arg)
|
|
|
if(info->product_modbus_type==0) { //master
|
|
if(info->product_modbus_type==0) { //master
|
|
|
cascade_lock();
|
|
cascade_lock();
|
|
|
//r = new_master_scaner(cas);
|
|
//r = new_master_scaner(cas);
|
|
|
- master_scan(cas);
|
|
|
|
|
|
|
+ master_scan(cas);
|
|
|
cascade_unlock();
|
|
cascade_unlock();
|
|
|
}
|
|
}
|
|
|
sleep(1);
|
|
sleep(1);
|
|
@@ -1900,7 +1907,9 @@ int cascade_request(cmd_data_t *cmd)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
pthread_mutex_lock(&cas->lock);
|
|
pthread_mutex_lock(&cas->lock);
|
|
|
|
|
+ cas->scanner_flag = 1;
|
|
|
r = master_cmd(cas, cmd);
|
|
r = master_cmd(cas, cmd);
|
|
|
|
|
+ cas->scanner_flag = 0;
|
|
|
pthread_mutex_unlock(&cas->lock);
|
|
pthread_mutex_unlock(&cas->lock);
|
|
|
|
|
|
|
|
return r;
|
|
return r;
|