|
|
@@ -36,22 +36,28 @@ typedef struct {
|
|
|
}data;
|
|
|
}north_data_t;
|
|
|
|
|
|
+
|
|
|
+typedef union{
|
|
|
+ slave_info_t info;
|
|
|
+ north_data_t north;
|
|
|
+}cascade_data_cache;
|
|
|
+
|
|
|
+
|
|
|
typedef struct cascade_info{
|
|
|
+ uint8_t switch_flag;
|
|
|
uint8_t saddr;
|
|
|
uint8_t read_addr;
|
|
|
uint8_t md_type;
|
|
|
uint32_t bund;
|
|
|
uint8_t quit;
|
|
|
- slave_info_t *info;
|
|
|
+ //slave_info_t *info;
|
|
|
lock_t lock;
|
|
|
slave_t slaves[POWER_CASCADE_MAX+1];
|
|
|
cmd_data_t cmd;
|
|
|
- power_all_t all;
|
|
|
-// union {
|
|
|
-// md_ac_dc_t ac_dc;
|
|
|
-// md_3_ac_t ac_3;
|
|
|
-// }data; //modbus to user
|
|
|
- north_data_t *north;
|
|
|
+ power_all_t all;
|
|
|
+
|
|
|
+ //north_data_t *north;
|
|
|
+ cascade_data_cache *chache;
|
|
|
}cascade_handle_t;
|
|
|
|
|
|
|
|
|
@@ -138,10 +144,10 @@ static uint8_t master_scan(cascade_handle_t *cas)
|
|
|
|
|
|
static int slave_get_info(cascade_handle_t *cas)
|
|
|
{
|
|
|
- slave_info_t *info=cas->info;
|
|
|
+ slave_info_t *info = &cas->chache->info;
|
|
|
power_all_t all;
|
|
|
|
|
|
- power_data_get(&all);
|
|
|
+ power_data_get(&all);
|
|
|
info->channels = all.chs-1 > 0 ? all.chs-1 : all.chs;
|
|
|
|
|
|
if(info->channels > POWER_SLAVE_CH_MAX)
|
|
|
@@ -249,7 +255,7 @@ static void slave_func(uint16_t reg,void *r_w_data,uint32_t lenth)
|
|
|
{
|
|
|
case CASCADE_CMD_GET_INFO:
|
|
|
{
|
|
|
- LOGD("____read_____ %d,sendlen = %d size=%d\n",lenth,sendlen,sizeof(power_ch_t)*4);
|
|
|
+ LOGD("____read_____ readlen = %d,sendlen = %d power_ch_t size=%d\n",lenth,sendlen,sizeof(power_ch_t));
|
|
|
//my_memcpy_byte(r_w_data,(void*)&slave_info.info+sendlen,lenth*2);
|
|
|
uint8_t * base_addr = (uint8_t *)&all.pch[1];
|
|
|
my_memcpy_byte(r_w_data,base_addr+sendlen,lenth*2);
|
|
|
@@ -482,16 +488,16 @@ static int master_cmd(cascade_handle_t *cas,uint8_t cur_dev_addr ,cmd_data_t *cm
|
|
|
uint8_t chanels = value & 0xff;
|
|
|
if(chanels == 0 || chanels > 100)
|
|
|
{
|
|
|
- cas->info->channels = 0;
|
|
|
+ cas->chache->info.channels = 0;
|
|
|
LOGD("get slave channels %d!!!\n",chanels);
|
|
|
}else
|
|
|
{
|
|
|
if(chanels >= POWER_SLAVE_CH_MAX)
|
|
|
chanels = POWER_SLAVE_CH_MAX;
|
|
|
- cas->info->channels = chanels;
|
|
|
+ cas->chache->info.channels = chanels;
|
|
|
//rdata.dlen = sizeof(slave_info_t) -sizeof(power_ch_t)*(POWER_SLAVE_CH_MAX - cas->info.channels);
|
|
|
- rdata.dlen = sizeof(power_ch_t)*cas->info->channels;
|
|
|
- rdata.data = (uint8_t*)&(cas->info->ch);
|
|
|
+ rdata.dlen = sizeof(power_ch_t)*cas->chache->info.channels;
|
|
|
+ rdata.data = (uint8_t*)&(cas->chache->info.ch);
|
|
|
r = mb_write_read(cas, cur_dev_addr, &wdata, &rdata);
|
|
|
if(r==0) {
|
|
|
|
|
|
@@ -538,92 +544,89 @@ static int master_cmd(cascade_handle_t *cas,uint8_t cur_dev_addr ,cmd_data_t *cm
|
|
|
|
|
|
|
|
|
|
|
|
-uint8_t cascade_init(uint8_t mode,uint8_t addr,uint32_t baud)
|
|
|
+uint8_t cascade_init(void)
|
|
|
{
|
|
|
- mb_para_t para;
|
|
|
- para.type = MB_TYPE_RTU;
|
|
|
- para.para.rtu.dev = CASCADE_PORT;
|
|
|
- para.para.rtu.baudrate = baud;
|
|
|
- para.para.rtu.parity = 0;
|
|
|
- para.para.rtu.pin = -1;
|
|
|
- para.para.rtu.lvl = 0;
|
|
|
- para.para.rtu.baudrate = baud;
|
|
|
+ paras_data_t* p_d = paras_get();
|
|
|
memset(&slave_info,0,sizeof(slave_info));
|
|
|
-
|
|
|
slave_info.quit = 1;
|
|
|
- if(addr == 0){
|
|
|
- para.mode = MB_MODE_MASTER;
|
|
|
- }else
|
|
|
+ slave_info.lock = lock_init();
|
|
|
+ slave_info.md_type = p_d->cas.mode;
|
|
|
+
|
|
|
+ slave_info.chache = (cascade_data_cache *) malloc(sizeof(cascade_data_cache));
|
|
|
+ if(slave_info.chache == NULL)
|
|
|
{
|
|
|
- para.mode = MB_MODE_SLAVE;
|
|
|
- slave_info.saddr = addr;
|
|
|
+ lock_deinit(slave_info.lock);
|
|
|
+ return -1;
|
|
|
}
|
|
|
- mb_setup(MB_ID_CASCADE, ¶);
|
|
|
-
|
|
|
- slave_info.bund = baud;
|
|
|
- slave_info.md_type = para.mode;
|
|
|
- slave_info.lock = lock_init();
|
|
|
-
|
|
|
- if(para.mode == MB_MODE_SLAVE)
|
|
|
+ LOGD("__casecde__malloc size if cascade %d\n",sizeof(cascade_data_cache));
|
|
|
+ if(p_d->cas.mode == MB_MODE_SLAVE)
|
|
|
{
|
|
|
- mb_set_addr(MB_ID_CASCADE,slave_info.saddr);
|
|
|
+ mb_set_addr(MB_ID_CASCADE,p_d->cas.addr);
|
|
|
mb_set_cb(MB_ID_CASCADE, &mb_table);
|
|
|
func.slave_func = slave_func;
|
|
|
mb_set_cascade_cb(MB_ID_CASCADE,&func);
|
|
|
- slave_info.north = (north_data_t *)malloc(sizeof(north_data_t));
|
|
|
- if(slave_info.north == NULL)
|
|
|
- {
|
|
|
- LOGE("can't malloc to large memery!!!\n");
|
|
|
- return -1;
|
|
|
- }
|
|
|
- memset(slave_info.north,0,sizeof(north_data_t));
|
|
|
- }else if(para.mode == MB_MODE_MASTER)
|
|
|
+ memset(&slave_info.chache->north,0,sizeof(north_data_t));
|
|
|
+ }else if(p_d->cas.mode == MB_MODE_MASTER)
|
|
|
{
|
|
|
- slave_info.info = (slave_info_t *) malloc(sizeof(slave_info_t));
|
|
|
- if(slave_info.info == NULL)
|
|
|
- {
|
|
|
- LOGE("can't malloc to large slave_info.info memery!!!\n");
|
|
|
- return -1;
|
|
|
- }
|
|
|
- memset(slave_info.info,0,sizeof(slave_info_t));
|
|
|
+ memset(&slave_info.chache->info,0,sizeof(slave_info_t));
|
|
|
+ }else
|
|
|
+ {
|
|
|
+ LOGE("cascede mode type is err ____ %d!!!\n",p_d->cas.mode);
|
|
|
+ free(slave_info.chache);
|
|
|
+ slave_info.chache = 0;
|
|
|
+ return -1;
|
|
|
}
|
|
|
-
|
|
|
slave_info.quit = 0;
|
|
|
- if(para.mode == MB_MODE_MASTER)
|
|
|
- slave_info.read_addr = 1;
|
|
|
-
|
|
|
- LOGD("mode: %d addr: %d bound: %d\n",slave_info.md_type,slave_info.saddr,para.para.rtu.baudrate);
|
|
|
+ slave_info.read_addr = 1;
|
|
|
LOGD("scan thread!!!\n");
|
|
|
thread_start(THREAD_ID_CAS_SCAN,cascade_scan_thread,NULL);
|
|
|
sleep(1);
|
|
|
LOGD("cascade thread!!!\n");
|
|
|
thread_start(THREAD_ID_CAS_TH,cascade_thread,NULL);
|
|
|
-
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
|
|
|
-uint8_t cascade_deinit()
|
|
|
+
|
|
|
+void cascade_reset(uint8_t mode,uint8_t addr)
|
|
|
{
|
|
|
- lock_deinit(slave_info.lock);
|
|
|
- if(slave_info.north)
|
|
|
- {
|
|
|
- free(slave_info.north);
|
|
|
- slave_info.north = 0;
|
|
|
- }
|
|
|
- if(slave_info.info)
|
|
|
- {
|
|
|
- free(slave_info.info);
|
|
|
- slave_info.info = 0;
|
|
|
- }
|
|
|
- return 0;
|
|
|
+ slave_info.switch_flag = 1;
|
|
|
+ paras_data_t* p_d = paras_get();
|
|
|
+
|
|
|
+ if((p_d->cas.mode == MB_MODE_MASTER) && (slave_info.md_type != MB_MODE_MASTER))
|
|
|
+ {
|
|
|
+ slave_info.md_type = MB_MODE_MASTER;
|
|
|
+ memset(&slave_info.chache->info,0,sizeof(slave_info_t));
|
|
|
+ }else if((p_d->cas.mode == MB_MODE_SLAVE) && (slave_info.md_type != MB_MODE_SLAVE))
|
|
|
+ {
|
|
|
+ slave_info.md_type = MB_MODE_SLAVE;
|
|
|
+ mb_set_addr(MB_ID_CASCADE,p_d->cas.addr);
|
|
|
+ mb_set_cb(MB_ID_CASCADE, &mb_table);
|
|
|
+ func.slave_func = slave_func;
|
|
|
+ mb_set_cascade_cb(MB_ID_CASCADE,&func);
|
|
|
+ memset(&slave_info.chache->north,0,sizeof(north_data_t));
|
|
|
+ }else if(p_d->cas.mode == MB_MODE_SLAVE)
|
|
|
+ {
|
|
|
+ mb_set_addr(MB_ID_CASCADE,p_d->cas.addr);
|
|
|
+
|
|
|
+ }else
|
|
|
+ {
|
|
|
+ return ;
|
|
|
+ }
|
|
|
+ paras_save();
|
|
|
+ slave_info.switch_flag = 0;
|
|
|
}
|
|
|
|
|
|
-
|
|
|
void cascade_scan_thread(void *arg)
|
|
|
{
|
|
|
while(slave_info.quit == 0)
|
|
|
{
|
|
|
+ if(slave_info.switch_flag)
|
|
|
+ {
|
|
|
+ sleep(1);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
if(slave_info.md_type == MB_MODE_MASTER)
|
|
|
{
|
|
|
master_scan(&slave_info);
|
|
|
@@ -632,52 +635,51 @@ void cascade_scan_thread(void *arg)
|
|
|
{
|
|
|
paras_data_t* p_data = paras_get();
|
|
|
power_all_t all;
|
|
|
-
|
|
|
- power_data_get(&all);
|
|
|
+ power_data_get(&all);
|
|
|
if(p_data->prod.type == PDU_AC_I1O1 || p_data->prod.type == PDU_DC_I1O1)
|
|
|
{
|
|
|
int channels = all.chs > 0 ? all.chs - 1: 0;
|
|
|
- slave_info.north->data.ac_dc.dev_cnt = (p_data->prod.type << 8 | channels);
|
|
|
+ slave_info.chache->north.data.ac_dc.dev_cnt = (p_data->prod.type << 8 | channels);
|
|
|
int cnt = all.chs > POWER_SLAVE_CH_MAX ? POWER_SLAVE_CH_MAX : channels;
|
|
|
//电量信息
|
|
|
for(int i = 0; i < cnt;i++)
|
|
|
{
|
|
|
- slave_info.north->data.ac_dc.power[i].voltage = all.pch[i].power[0].voltage *1000;
|
|
|
- slave_info.north->data.ac_dc.power[i].current = all.pch[i].power[0].current *1000;
|
|
|
- slave_info.north->data.ac_dc.power[i].power = all.pch[i].power[0].power *1000;
|
|
|
- slave_info.north->data.ac_dc.power[i].consumer = all.pch[i].power[0].consump *1000;
|
|
|
- slave_info.north->data.ac_dc.power[i].factor = all.pch[i].power[0].factor *1000;
|
|
|
- slave_info.north->data.ac_dc.power[i].freq = all.pch[i].power[0].freq *1000;
|
|
|
+ slave_info.chache->north.data.ac_dc.power[i].voltage = all.pch[i+1].power[0].voltage *1000;
|
|
|
+ slave_info.chache->north.data.ac_dc.power[i].current = all.pch[i+1].power[0].current *1000;
|
|
|
+ slave_info.chache->north.data.ac_dc.power[i].power = all.pch[i+1].power[0].power *1000;
|
|
|
+ slave_info.chache->north.data.ac_dc.power[i].consumer = all.pch[i+1].power[0].consump *1000;
|
|
|
+ slave_info.chache->north.data.ac_dc.power[i].factor = all.pch[i+1].power[0].factor *1000;
|
|
|
+ slave_info.chache->north.data.ac_dc.power[i].freq = all.pch[i+1].power[0].freq *1000;
|
|
|
}
|
|
|
//总信息
|
|
|
- //slave_info.north->data.ac_dc.power_all. = all.ttl.total;
|
|
|
- slave_info.north->data.ac_dc.power_all.all_consumer = all.ttl.total[0].consump *1000;
|
|
|
- slave_info.north->data.ac_dc.power_all.all_current = all.ttl.total[0].current *1000;
|
|
|
- slave_info.north->data.ac_dc.power_all.all_power = all.ttl.total[0].power *1000;
|
|
|
- slave_info.north->data.ac_dc.power_all.all_voltage = all.ttl.total[0].voltage *1000;
|
|
|
+ //slave_info.chache->north.data.ac_dc.power_all. = all.ttl.total;
|
|
|
+ slave_info.chache->north.data.ac_dc.power_all.all_consumer = all.ttl.total[0].consump *1000;
|
|
|
+ slave_info.chache->north.data.ac_dc.power_all.all_current = all.ttl.total[0].current *1000;
|
|
|
+ slave_info.chache->north.data.ac_dc.power_all.all_power = all.ttl.total[0].power *1000;
|
|
|
+ slave_info.chache->north.data.ac_dc.power_all.all_voltage = all.ttl.total[0].voltage *1000;
|
|
|
//温湿度
|
|
|
- slave_info.north->data.ac_dc.temp = 0; //后续加上传感器数据
|
|
|
- slave_info.north->data.ac_dc.humity = 0;
|
|
|
+ slave_info.chache->north.data.ac_dc.temp = 0; //后续加上传感器数据
|
|
|
+ slave_info.chache->north.data.ac_dc.humity = 0;
|
|
|
for(int i = 0; i < cnt;i++)
|
|
|
- slave_info.north->data.ac_dc.switch_stu[i] = 0;
|
|
|
+ slave_info.chache->north.data.ac_dc.switch_stu[i] = 0;
|
|
|
for(int i = 0; i < cnt;i++)
|
|
|
{
|
|
|
- slave_info.north->data.ac_dc.delay_open[i] = all.pch[i].info.open_delay;
|
|
|
+ slave_info.chache->north.data.ac_dc.delay_open[i] = all.pch[i].info.open_delay;
|
|
|
}
|
|
|
for(int i = 0; i < cnt;i++)
|
|
|
{
|
|
|
- slave_info.north->data.ac_dc.delay_close[i] = all.pch[i].info.close_delay;
|
|
|
+ slave_info.chache->north.data.ac_dc.delay_close[i] = all.pch[i].info.close_delay;
|
|
|
}
|
|
|
}else
|
|
|
{
|
|
|
int channels = all.chs > 0 ? all.chs - 1: 0;
|
|
|
- slave_info.north->data.ac_3.dev_cnt = (p_data->prod.type << 8 | channels);
|
|
|
+ slave_info.chache->north.data.ac_3.dev_cnt = (p_data->prod.type << 8 | channels);
|
|
|
for(int i = A_P; i <= C_P;i++)
|
|
|
{
|
|
|
- slave_info.north->data.ac_3.ac_3_all_pw[i].consumer = all.ttl.total[i].consump *1000;
|
|
|
- slave_info.north->data.ac_3.ac_3_all_pw[i].current = all.ttl.total[i].current *1000;
|
|
|
- slave_info.north->data.ac_3.ac_3_all_pw[i].power = all.ttl.total[i].power *1000;
|
|
|
- slave_info.north->data.ac_3.ac_3_all_pw[i].voltage = all.ttl.total[i].voltage *1000;
|
|
|
+ slave_info.chache->north.data.ac_3.ac_3_all_pw[i].consumer = all.ttl.total[i].consump *1000;
|
|
|
+ slave_info.chache->north.data.ac_3.ac_3_all_pw[i].current = all.ttl.total[i].current *1000;
|
|
|
+ slave_info.chache->north.data.ac_3.ac_3_all_pw[i].power = all.ttl.total[i].power *1000;
|
|
|
+ slave_info.chache->north.data.ac_3.ac_3_all_pw[i].voltage = all.ttl.total[i].voltage *1000;
|
|
|
}
|
|
|
int cnt = all.chs > POWER_SLAVE_CH_MAX ? POWER_SLAVE_CH_MAX : channels;
|
|
|
for(int i = 0; i < cnt;i++)
|
|
|
@@ -689,20 +691,20 @@ void cascade_scan_thread(void *arg)
|
|
|
{
|
|
|
for(int j = A_P; j <= C_P;j++)
|
|
|
{
|
|
|
- slave_info.north->data.ac_3.ac_3_chn_p[i][j].p_consumer = all.pch[i].power[j].consump * 1000;
|
|
|
- slave_info.north->data.ac_3.ac_3_chn_p[i][j].p_current = all.pch[i].power[j].current * 1000;
|
|
|
- slave_info.north->data.ac_3.ac_3_chn_p[i][j].p_power = all.pch[i].power[j].power * 1000;
|
|
|
- slave_info.north->data.ac_3.ac_3_chn_p[i][j].p_voltage = all.pch[i].power[j].voltage * 1000;
|
|
|
- slave_info.north->data.ac_3.ac_3_chn_p[i][j].p_status = all.pch[i].power[j].status;
|
|
|
+ slave_info.chache->north.data.ac_3.ac_3_chn_p[i][j].p_consumer = all.pch[i+1].power[j].consump * 1000;
|
|
|
+ slave_info.chache->north.data.ac_3.ac_3_chn_p[i][j].p_current = all.pch[i+1].power[j].current * 1000;
|
|
|
+ slave_info.chache->north.data.ac_3.ac_3_chn_p[i][j].p_power = all.pch[i+1].power[j].power * 1000;
|
|
|
+ slave_info.chache->north.data.ac_3.ac_3_chn_p[i][j].p_voltage = all.pch[i+1].power[j].voltage * 1000;
|
|
|
+ slave_info.chache->north.data.ac_3.ac_3_chn_p[i][j].p_status = all.pch[i+1].power[j].status;
|
|
|
}
|
|
|
}
|
|
|
for(int i = 0; i < cnt;i++)
|
|
|
{
|
|
|
- slave_info.north->data.ac_3.delay_open[i] = all.pch[i].info.open_delay;
|
|
|
+ slave_info.chache->north.data.ac_3.delay_open[i] = all.pch[i].info.open_delay;
|
|
|
}
|
|
|
for(int i = 0; i < cnt;i++)
|
|
|
{
|
|
|
- slave_info.north->data.ac_3.delay_close[i] = all.pch[i].info.close_delay;
|
|
|
+ slave_info.chache->north.data.ac_3.delay_close[i] = all.pch[i].info.close_delay;
|
|
|
}
|
|
|
|
|
|
}
|
|
|
@@ -716,9 +718,14 @@ void cascade_scan_thread(void *arg)
|
|
|
|
|
|
void cascade_thread(void *arg)
|
|
|
{
|
|
|
- LOGD("__ cascade %s\n", (slave_info.md_type==MODBUS_MASTER)?"master":"slave");
|
|
|
+ LOGD("__ cascade %s\n", (slave_info.md_type==MB_MODE_MASTER)?"master":"slave");
|
|
|
while(slave_info.quit==0) {
|
|
|
- if(slave_info.md_type==MODBUS_MASTER) { //主模
|
|
|
+ if(slave_info.switch_flag)
|
|
|
+ {
|
|
|
+ sleep(1);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ if(slave_info.md_type==MB_MODE_MASTER) { //主模
|
|
|
cmd_data_t cmd;
|
|
|
cmd.cmd = CASCADE_CMD_GET_INFO;
|
|
|
cmd.obj = OBJ_OVERALL;
|
|
|
@@ -773,14 +780,14 @@ int mb_port_read_hold(u16 addr, u16 *preg)//读保持寄存器, 返回 : 0-成
|
|
|
uint16_t *data = NULL;
|
|
|
if( AC_DC_DEV_CHN_REG <= addr && addr <= AC_DC_DRY_REG)
|
|
|
{
|
|
|
- data = (uint16_t*)(&slave_info.north->data.ac_dc);
|
|
|
+ data = (uint16_t*)(&slave_info.chache->north.data.ac_dc);
|
|
|
uint32_t offset = addr - AC_DC_DEV_CHN_REG;
|
|
|
*preg = *(data+offset);
|
|
|
return 0;
|
|
|
}
|
|
|
if(AC_3_DEV_CHN_REG <= addr && addr <= AC_3_DRY_REG)
|
|
|
{
|
|
|
- data = (uint16_t*)(&slave_info.north->data.ac_3);
|
|
|
+ data = (uint16_t*)(&slave_info.chache->north.data.ac_3);
|
|
|
uint32_t offset = addr - AC_3_DEV_CHN_REG;
|
|
|
*preg = *(data+offset);
|
|
|
return 0;
|
|
|
@@ -813,45 +820,17 @@ int mb_port_write_hold(u16 addr, u16 reg)//写保持寄存器, 返回 : 0-成功
|
|
|
|
|
|
uint8_t cascade_read_slave(uint8_t addr)
|
|
|
{
|
|
|
- memset(&slave_info.info,0,sizeof(slave_info.info));
|
|
|
+ memset(&slave_info.chache->info,0,sizeof(slave_info_t));
|
|
|
slave_info.read_addr = addr;
|
|
|
}
|
|
|
|
|
|
-uint8_t cascade_set_mode(uint8_t mode,uint8_t addr)
|
|
|
-{
|
|
|
- if(MODBUS_MASTER == mode)
|
|
|
- {
|
|
|
- slave_info.md_type = MODBUS_MASTER;
|
|
|
- slave_info.saddr = 0;
|
|
|
- mb_set_addr(MB_ID_CASCADE,0);
|
|
|
- }else
|
|
|
- {
|
|
|
- slave_info.md_type =MODBUS_SLAVE;
|
|
|
- slave_info.saddr = addr;
|
|
|
- mb_set_addr(MB_ID_CASCADE,addr);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-void cascade_reinit(uint8_t mode,uint8_t addr,uint32_t baud)
|
|
|
-{
|
|
|
- if(mode != MODBUS_MASTER || mode !=MODBUS_SLAVE || addr >= POWER_SLAVE_CH_MAX)
|
|
|
- {
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- slave_info.quit = 1;
|
|
|
- sleep(1);
|
|
|
- cascade_deinit();
|
|
|
- cascade_init(mode,addr,baud);
|
|
|
-}
|
|
|
-
|
|
|
int cascade_power_get(power_all_t *all)
|
|
|
{
|
|
|
if(!all) {
|
|
|
return -1;
|
|
|
}
|
|
|
- all->chs = slave_info.info->channels;
|
|
|
- all->pch = &slave_info.info->ch[0];
|
|
|
+ all->chs = slave_info.chache->info.channels;
|
|
|
+ all->pch = &slave_info.chache->info.ch[0];
|
|
|
return 0;
|
|
|
}
|
|
|
int cascade_get_dlist(dev_list_t *dl)
|