|
|
@@ -21,7 +21,8 @@
|
|
|
#define MB_MAX_LEN 250
|
|
|
|
|
|
|
|
|
-#define MB_MASTER 0
|
|
|
+#define MB_MASTER 1
|
|
|
+#define MB_DEBUG
|
|
|
|
|
|
|
|
|
|
|
|
@@ -120,6 +121,15 @@ static int slave_get_info(cascade_handle_t *cas)
|
|
|
board_info_t *info=&cas->info;
|
|
|
|
|
|
memset(info, 0, sizeof(board_info_t));
|
|
|
+
|
|
|
+#ifdef MB_DEBUG
|
|
|
+ for(i=1; i<MAX_CHN_COUNT; i++) {
|
|
|
+ info->board[info->cnt].addr = i;
|
|
|
+ info->board[info->cnt].type = 2;
|
|
|
+ info->board[info->cnt].maxChn = 5;
|
|
|
+ info->cnt++;
|
|
|
+ }
|
|
|
+#else
|
|
|
for(i=1; i<MAX_CHN_COUNT; i++) {
|
|
|
r = g_switch_get_type(&dm->_globalRelaySampManger, i, &type, &maxChn,
|
|
|
dm->_global_device_info->product_pwr_type);
|
|
|
@@ -130,6 +140,7 @@ static int slave_get_info(cascade_handle_t *cas)
|
|
|
info->cnt++;
|
|
|
}
|
|
|
}
|
|
|
+#endif
|
|
|
|
|
|
return 0;
|
|
|
}
|
|
|
@@ -300,7 +311,7 @@ static int mb_hdr(uint8_t *data, int datalen, mb_hdr_t *h)
|
|
|
}
|
|
|
static int mb_read(cascade_handle_t *cas, int addr, data_t *d)
|
|
|
{
|
|
|
- int r=0;
|
|
|
+ int r=0,finish=0;
|
|
|
int xlen,rlen=0,oncelen=MB_MAX_LEN;
|
|
|
uint8_t buff[MODBUS_RTU_MAX_ADU_LENGTH];
|
|
|
|
|
|
@@ -325,7 +336,8 @@ static int mb_read(cascade_handle_t *cas, int addr, data_t *d)
|
|
|
return -1;
|
|
|
}
|
|
|
if(rlen+r*2>=d->dlen) {
|
|
|
- break;
|
|
|
+ xlen = d->dlen-rlen;
|
|
|
+ finish = 1;
|
|
|
}
|
|
|
else {
|
|
|
xlen = r*2;
|
|
|
@@ -333,6 +345,10 @@ static int mb_read(cascade_handle_t *cas, int addr, data_t *d)
|
|
|
|
|
|
memcpy((char*)d->data+rlen, buff, xlen);
|
|
|
rlen += xlen;
|
|
|
+
|
|
|
+ if(finish) {
|
|
|
+ break;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
return 0;
|
|
|
@@ -454,14 +470,7 @@ static int mb_receive(cascade_handle_t *cas)
|
|
|
case CASCADE_CMD_SAVE:
|
|
|
case CASCADE_CMD_SAVE3:
|
|
|
{
|
|
|
- //slave_save(cas);
|
|
|
- }
|
|
|
- break;
|
|
|
-
|
|
|
- case CASCADE_CMD_GET_INFO:
|
|
|
- {
|
|
|
- LOGD("_____ slave recv CASCADE_CMD_GET_INFO\n");
|
|
|
- memcpy(cas->map2->tab_registers+(h.reg-CASCADE_REG_OFFSET), ((char*)&cas->info)+sendlen, h.regcnt*2);
|
|
|
+ slave_save(cas);
|
|
|
}
|
|
|
break;
|
|
|
}
|
|
|
@@ -474,6 +483,14 @@ static int mb_receive(cascade_handle_t *cas)
|
|
|
}
|
|
|
else {
|
|
|
switch(cas->cmd.cmd) {
|
|
|
+
|
|
|
+ case CASCADE_CMD_GET_INFO:
|
|
|
+ {
|
|
|
+ LOGD("_____ slave CASCADE_CMD_GET_INFO\n");
|
|
|
+ memcpy(cas->map2->tab_registers+(h.reg-CASCADE_REG_OFFSET), (char*)&cas->info, h.regcnt*2);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
case CASCADE_CMD_QUERY_CH:
|
|
|
{
|
|
|
LOGD("___ slave CASCADE_CMD_QUERY_CH\n");
|
|
|
@@ -818,6 +835,7 @@ static int master_query(cascade_handle_t *cas)
|
|
|
rdata.dlen = sizeof(PowerInfo)*cas->info.cnt;
|
|
|
rdata.data = (uint8_t*)&cas->pwrInfo.info;
|
|
|
r = mb_write_read(cas, cur_dev_addr, &wdata, &rdata);
|
|
|
+ LOGD("____ master mb_write_read CASCADE_CMD_QUERY_CH %d\n", r);
|
|
|
if(r==0) {
|
|
|
power_ch_update(cas);
|
|
|
}
|