//***gy_sub(gy_group)***//
u16 gy_get_sub(u8 sub_type)//获取当前area地址或者sub地址
{//model_sig_g_onoff_level.onoff_srv[idx].com.sub_list[SUB_LIST_MAX]
u16 gy_sub_addr = 0xffff;
u8 gy_i_t;
for(gy_i_t = 0; gy_i_t < SUB_LIST_MAX; gy_i_t++)
{
if(model_sig_g_onoff_level.onoff_srv[0].com.sub_list[gy_i_t] >= 0xC000 && model_sig_g_onoff_level.onoff_srv[0].com.sub_list[gy_i_t] <= 0xFEFF)
{
gy_sub_addr = model_sig_g_onoff_level.onoff_srv[0].com.sub_list[gy_i_t];
if(sub_type == gy_sub_type_area)
{
if((gy_sub_addr & 0x000F) == 0)
{
break;
}
gy_sub_addr = 0xffff;
}
else if(sub_type == gy_sub_type_sub)
{
if((gy_sub_addr & 0x000F) != 0)
{
break;
}
gy_sub_addr = 0xffff;
}
}
}
return gy_sub_addr;
}
这段代码的作用是从model_sig_g_onoff_level.onoff_srv[0].com.sub_list
数组中获取符合条件的订阅地址。它遍历数组中的每个地址,如果地址在0xC000
到0xFEFF
范围内,则检查地址的低4位来确定是否是区域地址或子地址。根据sub_type
参数的不同,它返回第一个符合条件的地址(区域地址或子地址),如果没有找到,则返回0xFFFF
。