|
|
@@ -44,9 +44,9 @@ typedef struct cascade_info{
|
|
|
uint8_t quit;
|
|
|
slave_info_t *info;
|
|
|
lock_t lock;
|
|
|
- mb_handle_t* mb;
|
|
|
slave_t slaves[CASCADE_MAX+1];
|
|
|
cmd_data_t cmd;
|
|
|
+ power_all_t all;
|
|
|
// union {
|
|
|
// md_ac_dc_t ac_dc;
|
|
|
// md_3_ac_t ac_3;
|
|
|
@@ -122,7 +122,7 @@ static uint8_t master_scan(cascade_handle_t *cas)
|
|
|
//scan
|
|
|
uint16_t value = 0;
|
|
|
lock_on(cas->lock);
|
|
|
- int r = mb_read(cas->mb,slave_addr,CASCADE_REG_SCAN,&value,1,300);
|
|
|
+ int r = mb_read(MB_ID_CASCADE,slave_addr,CASCADE_REG_SCAN,&value,1,300);
|
|
|
lock_off(cas->lock);
|
|
|
if(r > 0)
|
|
|
{
|
|
|
@@ -139,9 +139,9 @@ static uint8_t master_scan(cascade_handle_t *cas)
|
|
|
static int slave_get_info(cascade_handle_t *cas)
|
|
|
{
|
|
|
slave_info_t *info=cas->info;
|
|
|
- power_data_t power = power_data_get();
|
|
|
+ power_all_t *p = power_data_get();
|
|
|
|
|
|
- info->channels = power.chs-1 > 0 ? power.chs-1 : power.chs;
|
|
|
+ info->channels = p->chs-1 > 0 ? p->chs-1 : p->chs;
|
|
|
|
|
|
if(info->channels > SLAVE_CH_MAX)
|
|
|
info->channels = SLAVE_CH_MAX;
|
|
|
@@ -149,7 +149,7 @@ static int slave_get_info(cascade_handle_t *cas)
|
|
|
return -1;
|
|
|
for(int i=0; i < info->channels;i++)
|
|
|
{
|
|
|
- info->ch[i] = power.pch[i+1];
|
|
|
+ info->ch[i] = p->pch[i+1];
|
|
|
}
|
|
|
LOGD("slave will send %d channels to master!!!!\n",info->channels);
|
|
|
return 0;
|
|
|
@@ -183,9 +183,8 @@ static void *my_memcpy_byte(void *dst, const void *src, int n)
|
|
|
static void slave_func(uint16_t reg,void *r_w_data,uint32_t lenth)
|
|
|
{
|
|
|
cmd_data_t *cmd=NULL;
|
|
|
- mb_handle_t *handle = (mb_handle_t *)(slave_info.mb);
|
|
|
pthread_t id = 0;
|
|
|
- power_data_t power = power_data_get();
|
|
|
+ power_all_t *power = power_data_get();
|
|
|
switch (reg)
|
|
|
{
|
|
|
case CASCADE_REG_SCAN:
|
|
|
@@ -249,7 +248,7 @@ static void slave_func(uint16_t reg,void *r_w_data,uint32_t lenth)
|
|
|
{
|
|
|
LOGD("____read_____ %d,sendlen = %d size=%d\n",lenth,sendlen,sizeof(power_ch_t)*4);
|
|
|
//my_memcpy_byte(r_w_data,(void*)&slave_info.info+sendlen,lenth*2);
|
|
|
- uint8_t * base_addr = (uint8_t *)&power.pch[1];
|
|
|
+ uint8_t * base_addr = (uint8_t *)&power->pch[1];
|
|
|
my_memcpy_byte(r_w_data,base_addr+sendlen,lenth*2);
|
|
|
memswap(r_w_data,lenth*2);
|
|
|
|
|
|
@@ -258,9 +257,9 @@ static void slave_func(uint16_t reg,void *r_w_data,uint32_t lenth)
|
|
|
case CASCADE_CMD_QUERY_CH:
|
|
|
{
|
|
|
//my_memcpy_byte(r_w_data,(void*)&slave_info.info+sendlen,lenth*2);
|
|
|
- //power_data_t power = power_data_get();
|
|
|
- uint8_t * base_addr = (uint8_t *)&power.pch[1];
|
|
|
- //my_memcpy_byte(r_w_data,&power.pch[1]+sendlen,lenth*2);
|
|
|
+ //power_all_t power = power_data_get();
|
|
|
+ uint8_t * base_addr = (uint8_t *)&power->pch[1];
|
|
|
+ //my_memcpy_byte(r_w_data,&power->pch[1]+sendlen,lenth*2);
|
|
|
my_memcpy_byte(r_w_data,base_addr+sendlen,lenth*2);
|
|
|
memswap(r_w_data,lenth*2);
|
|
|
}
|
|
|
@@ -311,7 +310,7 @@ static int _mb_write(cascade_handle_t *cas, int addr, data_t *d)
|
|
|
memcpy(buff, d->data+wlen, xlen);
|
|
|
//交换数据
|
|
|
memswap(buff,xlen%2+xlen);
|
|
|
- wl = mb_write(cas->mb, addr, CASCADE_REG_WRITE, (uint16_t*)buff, xlen/2);
|
|
|
+ wl = mb_write(MB_ID_CASCADE, addr, CASCADE_REG_WRITE, (uint16_t*)buff, xlen/2);
|
|
|
if(wl<=0) {
|
|
|
LOGE("___ _mb_write failed, addr: %d, reg: %d, cnt: %d, %s, retry: %d\n", addr, CASCADE_REG_WRITE, xlen/2,"write failed",i+1);
|
|
|
if(addr >0 && addr < SLAVE_CH_MAX)
|
|
|
@@ -361,7 +360,7 @@ static int _mb_read(cascade_handle_t *cas, int addr, data_t *d)
|
|
|
xlen = oncelen;
|
|
|
}
|
|
|
xlen += xlen%2;
|
|
|
- rl = mb_read(cas->mb, addr, CASCADE_REG_READ, buff, xlen/2,100);
|
|
|
+ rl = mb_read(MB_ID_CASCADE, addr, CASCADE_REG_READ, buff, xlen/2,100);
|
|
|
if(rl<=0) {
|
|
|
LOGE("___ _mb_read failed, %s, rlen: %d, retry: %d\n", "read error", rlen, i+1);
|
|
|
if(addr >0 && addr < SLAVE_CH_MAX)
|
|
|
@@ -472,7 +471,7 @@ static int master_cmd(cascade_handle_t *cas,uint8_t cur_dev_addr ,cmd_data_t *cm
|
|
|
// rdata.dlen = sizeof(slave_info_t)-sizeof(power_ch_t)*SLAVE_CH_MAX;
|
|
|
// rdata.data = (uint8_t*)cas->info;
|
|
|
uint16_t value = 0;
|
|
|
- r = mb_read(cas->mb,cur_dev_addr,4000,&value,1,100);//获取通道数
|
|
|
+ r = mb_read(MB_ID_CASCADE,cur_dev_addr,4000,&value,1,100);//获取通道数
|
|
|
//r = mb_write_read(cas, cur_dev_addr, &wdata, &rdata);
|
|
|
LOGD("r = %d value=%d\n",r,value);
|
|
|
if(r == 1)
|
|
|
@@ -536,15 +535,15 @@ static int master_cmd(cascade_handle_t *cas,uint8_t cur_dev_addr ,cmd_data_t *cm
|
|
|
|
|
|
|
|
|
|
|
|
-uint8_t cascade_init(const char* uart,uint8_t mode,uint8_t addr,uint32_t baud)
|
|
|
+uint8_t cascade_init(uint8_t mode,uint8_t addr,uint32_t baud)
|
|
|
{
|
|
|
mb_para_t para;
|
|
|
para.type = MB_TYPE_RTU;
|
|
|
- para.para.rtu.dev = (char *)uart;
|
|
|
+ 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.lvl = 0;
|
|
|
para.para.rtu.baudrate = baud;
|
|
|
memset(&slave_info,0,sizeof(slave_info));
|
|
|
|
|
|
@@ -556,20 +555,18 @@ uint8_t cascade_init(const char* uart,uint8_t mode,uint8_t addr,uint32_t baud)
|
|
|
para.mode = MB_MODE_SLAVE;
|
|
|
slave_info.saddr = addr;
|
|
|
}
|
|
|
+ mb_setup(MB_ID_CASCADE, ¶);
|
|
|
+
|
|
|
slave_info.bund = baud;
|
|
|
slave_info.md_type = para.mode;
|
|
|
- slave_info.lock = lock_init();
|
|
|
- slave_info.mb = mb_init(¶);
|
|
|
- if(!slave_info.mb) {
|
|
|
- return -1;
|
|
|
- }
|
|
|
+ slave_info.lock = lock_init();
|
|
|
+
|
|
|
if(para.mode == MB_MODE_SLAVE)
|
|
|
{
|
|
|
- mb_handle_t *handle = (mb_handle_t *)(slave_info.mb);
|
|
|
- mb_set_slave(slave_info.mb->hinst,slave_info.saddr);
|
|
|
- mb_set_cb_table(slave_info.mb->hinst,&mb_table);
|
|
|
+ mb_set_addr(MB_ID_CASCADE,slave_info.saddr);
|
|
|
+ mb_set_cb(MB_ID_CASCADE, &mb_table);
|
|
|
func.slave_func = slave_func;
|
|
|
- mb_set_cb_cascade(slave_info.mb->hinst,&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)
|
|
|
{
|
|
|
@@ -592,7 +589,7 @@ uint8_t cascade_init(const char* uart,uint8_t mode,uint8_t addr,uint32_t baud)
|
|
|
if(para.mode == MB_MODE_MASTER)
|
|
|
slave_info.read_addr = 1;
|
|
|
|
|
|
- LOGD("uart: %s mode: %d addr: %d bound: %d\n",uart,slave_info.md_type,slave_info.saddr,para.para.rtu.baudrate);
|
|
|
+ LOGD("mode: %d addr: %d bound: %d\n",slave_info.md_type,slave_info.saddr,para.para.rtu.baudrate);
|
|
|
LOGD("scan thread!!!\n");
|
|
|
thread_start(THREAD_ID_CAS_SCAN,cascade_scan_thread,NULL);
|
|
|
sleep(1);
|
|
|
@@ -605,9 +602,7 @@ uint8_t cascade_init(const char* uart,uint8_t mode,uint8_t addr,uint32_t baud)
|
|
|
|
|
|
uint8_t cascade_deinit()
|
|
|
{
|
|
|
- mb_handle_t *handle = (mb_handle_t *)(slave_info.mb);
|
|
|
lock_deinit(slave_info.lock);
|
|
|
- mb_deinit(slave_info.mb);
|
|
|
if(slave_info.north)
|
|
|
{
|
|
|
free(slave_info.north);
|
|
|
@@ -624,7 +619,6 @@ uint8_t cascade_deinit()
|
|
|
|
|
|
void cascade_scan_thread(void *arg)
|
|
|
{
|
|
|
- mb_handle_t *handle=(mb_handle_t *)(&slave_info.mb);
|
|
|
while(slave_info.quit == 0)
|
|
|
{
|
|
|
if(slave_info.md_type == MB_MODE_MASTER)
|
|
|
@@ -634,29 +628,29 @@ void cascade_scan_thread(void *arg)
|
|
|
}else //做从机//拷贝数据到北向
|
|
|
{
|
|
|
paras_data_t* p_data = paras_get();
|
|
|
- power_data_t power = power_data_get();
|
|
|
+ power_all_t *power = power_data_get();
|
|
|
|
|
|
if(p_data->prod.type == PDU_AC_I1O1 || p_data->prod.type == PDU_DC_I1O1)
|
|
|
{
|
|
|
- int channels = power.chs > 0 ? power.chs - 1: 0;
|
|
|
+ int channels = power->chs > 0 ? power->chs - 1: 0;
|
|
|
slave_info.north->data.ac_dc.dev_cnt = (p_data->prod.type << 8 | channels);
|
|
|
- int cnt = power.chs > SLAVE_CH_MAX ? SLAVE_CH_MAX : channels;
|
|
|
+ int cnt = power->chs > SLAVE_CH_MAX ? SLAVE_CH_MAX : channels;
|
|
|
//电量信息
|
|
|
for(int i = 0; i < cnt;i++)
|
|
|
{
|
|
|
- slave_info.north->data.ac_dc.power[i].voltage = power.pch[i].power[0].voltage *1000;
|
|
|
- slave_info.north->data.ac_dc.power[i].current = power.pch[i].power[0].current *1000;
|
|
|
- slave_info.north->data.ac_dc.power[i].power = power.pch[i].power[0].power *1000;
|
|
|
- slave_info.north->data.ac_dc.power[i].consumer = power.pch[i].power[0].consump *1000;
|
|
|
- slave_info.north->data.ac_dc.power[i].factor = power.pch[i].power[0].factor *1000;
|
|
|
- slave_info.north->data.ac_dc.power[i].freq = power.pch[i].power[0].freq *1000;
|
|
|
+ slave_info.north->data.ac_dc.power[i].voltage = power->pch[i].power[0].voltage *1000;
|
|
|
+ slave_info.north->data.ac_dc.power[i].current = power->pch[i].power[0].current *1000;
|
|
|
+ slave_info.north->data.ac_dc.power[i].power = power->pch[i].power[0].power *1000;
|
|
|
+ slave_info.north->data.ac_dc.power[i].consumer = power->pch[i].power[0].consump *1000;
|
|
|
+ slave_info.north->data.ac_dc.power[i].factor = power->pch[i].power[0].factor *1000;
|
|
|
+ slave_info.north->data.ac_dc.power[i].freq = power->pch[i].power[0].freq *1000;
|
|
|
}
|
|
|
//总信息
|
|
|
//slave_info.north->data.ac_dc.power_all. = power.ttl.total;
|
|
|
- slave_info.north->data.ac_dc.power_all.all_consumer = power.ttl.total[0].consump *1000;
|
|
|
- slave_info.north->data.ac_dc.power_all.all_current = power.ttl.total[0].current *1000;
|
|
|
- slave_info.north->data.ac_dc.power_all.all_power = power.ttl.total[0].power *1000;
|
|
|
- slave_info.north->data.ac_dc.power_all.all_voltage = power.ttl.total[0].voltage *1000;
|
|
|
+ slave_info.north->data.ac_dc.power_all.all_consumer = power->ttl.total[0].consump *1000;
|
|
|
+ slave_info.north->data.ac_dc.power_all.all_current = power->ttl.total[0].current *1000;
|
|
|
+ slave_info.north->data.ac_dc.power_all.all_power = power->ttl.total[0].power *1000;
|
|
|
+ slave_info.north->data.ac_dc.power_all.all_voltage = power->ttl.total[0].voltage *1000;
|
|
|
//温湿度
|
|
|
slave_info.north->data.ac_dc.temp = 0; //后续加上传感器数据
|
|
|
slave_info.north->data.ac_dc.humity = 0;
|
|
|
@@ -664,24 +658,24 @@ void cascade_scan_thread(void *arg)
|
|
|
slave_info.north->data.ac_dc.switch_stu[i] = 0;
|
|
|
for(int i = 0; i < cnt;i++)
|
|
|
{
|
|
|
- slave_info.north->data.ac_dc.delay_open[i] = power.pch[i].info.start_delay;
|
|
|
+ slave_info.north->data.ac_dc.delay_open[i] = power->pch[i].info.start_delay;
|
|
|
}
|
|
|
for(int i = 0; i < cnt;i++)
|
|
|
{
|
|
|
- slave_info.north->data.ac_dc.delay_close[i] = power.pch[i].info.stop_delay;
|
|
|
+ slave_info.north->data.ac_dc.delay_close[i] = power->pch[i].info.stop_delay;
|
|
|
}
|
|
|
}else
|
|
|
{
|
|
|
- int channels = power.chs > 0 ? power.chs - 1: 0;
|
|
|
+ int channels = power->chs > 0 ? power->chs - 1: 0;
|
|
|
slave_info.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 = power.ttl.total[i].consump *1000;
|
|
|
- slave_info.north->data.ac_3.ac_3_all_pw[i].current = power.ttl.total[i].current *1000;
|
|
|
- slave_info.north->data.ac_3.ac_3_all_pw[i].power = power.ttl.total[i].power *1000;
|
|
|
- slave_info.north->data.ac_3.ac_3_all_pw[i].voltage = power.ttl.total[i].voltage *1000;
|
|
|
+ slave_info.north->data.ac_3.ac_3_all_pw[i].consumer = power->ttl.total[i].consump *1000;
|
|
|
+ slave_info.north->data.ac_3.ac_3_all_pw[i].current = power->ttl.total[i].current *1000;
|
|
|
+ slave_info.north->data.ac_3.ac_3_all_pw[i].power = power->ttl.total[i].power *1000;
|
|
|
+ slave_info.north->data.ac_3.ac_3_all_pw[i].voltage = power->ttl.total[i].voltage *1000;
|
|
|
}
|
|
|
- int cnt = power.chs > SLAVE_CH_MAX ? SLAVE_CH_MAX : channels;
|
|
|
+ int cnt = power->chs > SLAVE_CH_MAX ? SLAVE_CH_MAX : channels;
|
|
|
for(int i = 0; i < cnt;i++)
|
|
|
{
|
|
|
|
|
|
@@ -691,20 +685,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 = power.pch[i].power[j].consump * 1000;
|
|
|
- slave_info.north->data.ac_3.ac_3_chn_p[i][j].p_current = power.pch[i].power[j].current * 1000;
|
|
|
- slave_info.north->data.ac_3.ac_3_chn_p[i][j].p_power = power.pch[i].power[j].power * 1000;
|
|
|
- slave_info.north->data.ac_3.ac_3_chn_p[i][j].p_voltage = power.pch[i].power[j].voltage * 1000;
|
|
|
- slave_info.north->data.ac_3.ac_3_chn_p[i][j].p_status = power.pch[i].power[j].status;
|
|
|
+ slave_info.north->data.ac_3.ac_3_chn_p[i][j].p_consumer = power->pch[i].power[j].consump * 1000;
|
|
|
+ slave_info.north->data.ac_3.ac_3_chn_p[i][j].p_current = power->pch[i].power[j].current * 1000;
|
|
|
+ slave_info.north->data.ac_3.ac_3_chn_p[i][j].p_power = power->pch[i].power[j].power * 1000;
|
|
|
+ slave_info.north->data.ac_3.ac_3_chn_p[i][j].p_voltage = power->pch[i].power[j].voltage * 1000;
|
|
|
+ slave_info.north->data.ac_3.ac_3_chn_p[i][j].p_status = power->pch[i].power[j].status;
|
|
|
}
|
|
|
}
|
|
|
for(int i = 0; i < cnt;i++)
|
|
|
{
|
|
|
- slave_info.north->data.ac_3.delay_open[i] = power.pch[i].info.start_delay;
|
|
|
+ slave_info.north->data.ac_3.delay_open[i] = power->pch[i].info.start_delay;
|
|
|
}
|
|
|
for(int i = 0; i < cnt;i++)
|
|
|
{
|
|
|
- slave_info.north->data.ac_3.delay_close[i] = power.pch[i].info.stop_delay;
|
|
|
+ slave_info.north->data.ac_3.delay_close[i] = power->pch[i].info.stop_delay;
|
|
|
}
|
|
|
|
|
|
}
|
|
|
@@ -718,23 +712,21 @@ void cascade_scan_thread(void *arg)
|
|
|
|
|
|
void cascade_thread(void *arg)
|
|
|
{
|
|
|
- mb_handle_t *handle=(mb_handle_t *)(&slave_info.mb);
|
|
|
LOGD("__ cascade %s\n", (slave_info.md_type==MODBUS_MASTER)?"master":"slave");
|
|
|
-
|
|
|
- while(slave_info.quit==0) {
|
|
|
+ while(slave_info.quit==0) {
|
|
|
if(slave_info.md_type==MODBUS_MASTER) { //主模
|
|
|
- cmd_data_t cmd;
|
|
|
- cmd.cmd = CASCADE_CMD_GET_INFO;
|
|
|
- cmd.obj = OBJ_OVERALL;
|
|
|
- slave_info.cmd = cmd;
|
|
|
- master_cmd(&slave_info,slave_info.read_addr,&cmd); ;
|
|
|
- sleep(1);
|
|
|
+ cmd_data_t cmd;
|
|
|
+ cmd.cmd = CASCADE_CMD_GET_INFO;
|
|
|
+ cmd.obj = OBJ_OVERALL;
|
|
|
+ slave_info.cmd = cmd;
|
|
|
+ master_cmd(&slave_info,slave_info.read_addr,&cmd);
|
|
|
+ sleep(1);
|
|
|
}
|
|
|
else { //从模式,等待主设备发起数据请求
|
|
|
- mb_slave_fsm(slave_info.mb->hinst);
|
|
|
+ mb_slave_poll(MB_ID_CASCADE);
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
pthread_exit(NULL);
|
|
|
}
|
|
|
|
|
|
@@ -794,7 +786,7 @@ int mb_port_read_hold(u16 addr, u16 *preg)//读保持寄存器, 返回 : 0-成
|
|
|
|
|
|
int mb_port_write_hold(u16 addr, u16 reg)//写保持寄存器, 返回 : 0-成功, -2-地址错误, -3-值非法, -4-设备故障
|
|
|
{
|
|
|
- power_data_t power = power_data_get();
|
|
|
+ //power_all_t *power = power_data_get();
|
|
|
|
|
|
if(AC_DC_SET_DELAY_OPEN <= addr && addr <= AC_DC_ALL_SET_SWITCH_REG)
|
|
|
{
|
|
|
@@ -827,43 +819,38 @@ uint8_t cascade_set_mode(uint8_t mode,uint8_t addr)
|
|
|
{
|
|
|
slave_info.md_type = MODBUS_MASTER;
|
|
|
slave_info.saddr = 0;
|
|
|
- mb_handle_t *handle=(mb_handle_t *)(&slave_info.mb);
|
|
|
- mb_set_slave(slave_info.mb->hinst,0);
|
|
|
+ mb_set_addr(MB_ID_CASCADE,0);
|
|
|
}else
|
|
|
{
|
|
|
slave_info.md_type =MODBUS_SLAVE;
|
|
|
- mb_handle_t *handle=(mb_handle_t *)(&slave_info.mb);
|
|
|
slave_info.saddr = addr;
|
|
|
- mb_set_slave(slave_info.mb->hinst,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 >= SLAVE_CH_MAX)
|
|
|
- {
|
|
|
- return;
|
|
|
- }
|
|
|
- mb_handle_t *handle=(mb_handle_t *)(&slave_info.mb);
|
|
|
+ if(mode != MODBUS_MASTER || mode !=MODBUS_SLAVE || addr >= SLAVE_CH_MAX)
|
|
|
+ {
|
|
|
+ return;
|
|
|
+ }
|
|
|
|
|
|
- slave_info.quit = 1;
|
|
|
- sleep(1);
|
|
|
- cascade_deinit();
|
|
|
- cascade_init(CASCADE_PORT,mode,addr,baud);
|
|
|
+ slave_info.quit = 1;
|
|
|
+ sleep(1);
|
|
|
+ cascade_deinit();
|
|
|
+ cascade_init(mode,addr,baud);
|
|
|
}
|
|
|
|
|
|
-power_data_t cascade_power_get(void)
|
|
|
+power_all_t* cascade_power_get(void)
|
|
|
{
|
|
|
- power_data_t cas_d = {0};
|
|
|
- cas_d.chs = slave_info.info->channels;
|
|
|
- cas_d.pch = &slave_info.info->ch[0];
|
|
|
- return cas_d;
|
|
|
+ slave_info.all.chs = slave_info.info->channels;
|
|
|
+ slave_info.all.pch = &slave_info.info->ch[0];
|
|
|
+ return &slave_info.all;
|
|
|
}
|
|
|
int cascade_get_dlist(dev_list_t *dl)
|
|
|
{
|
|
|
- int i,cnt=0;
|
|
|
+ int i,cnt=0;
|
|
|
slave_t *sl=NULL;
|
|
|
-
|
|
|
|
|
|
if(!dl) {
|
|
|
return -1;
|
|
|
@@ -893,3 +880,16 @@ int cascade_free_dlist(dev_list_t *dl)
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+int cascade_lock(int flag)
|
|
|
+{
|
|
|
+ cascade_handle_t *h=&slave_info;
|
|
|
+
|
|
|
+ if(flag) {
|
|
|
+ lock_on(h->lock);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ lock_off(h->lock);
|
|
|
+ }
|
|
|
+ return 0;
|
|
|
+}
|