|
|
@@ -478,12 +478,14 @@ static int master_cmd(cascade_handle_t *cas,uint8_t cur_dev_addr ,cmd_data_t *cm
|
|
|
if(r == 1)
|
|
|
{
|
|
|
uint8_t chanels = value & 0xff;
|
|
|
- if(chanels == 0)
|
|
|
+ if(chanels == 0 || chanels > 100)
|
|
|
{
|
|
|
cas->info->channels = 0;
|
|
|
- LOGD("can not get cannes!!!\n");
|
|
|
+ LOGD("get slave channels %d!!!\n",chanels);
|
|
|
}else
|
|
|
{
|
|
|
+ if(chanels >= SLAVE_CH_MAX)
|
|
|
+ chanels = SLAVE_CH_MAX;
|
|
|
cas->info->channels = chanels;
|
|
|
//rdata.dlen = sizeof(slave_info_t) -sizeof(power_ch_t)*(SLAVE_CH_MAX - cas->info.channels);
|
|
|
rdata.dlen = sizeof(power_ch_t)*cas->info->channels;
|
|
|
@@ -606,6 +608,16 @@ 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);
|
|
|
+ slave_info.north = 0;
|
|
|
+ }
|
|
|
+ if(slave_info.info)
|
|
|
+ {
|
|
|
+ free(slave_info.info);
|
|
|
+ slave_info.info = 0;
|
|
|
+ }
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
@@ -833,7 +845,7 @@ void cascade_reinit(uint8_t mode,uint8_t addr,uint32_t baud)
|
|
|
return;
|
|
|
}
|
|
|
mb_handle_t *handle=(mb_handle_t *)(&slave_info.mb);
|
|
|
- handle->quit = 1;
|
|
|
+
|
|
|
slave_info.quit = 1;
|
|
|
sleep(1);
|
|
|
cascade_deinit();
|