楼主最近经常遇到需要调用表格的情况,故用此文章以做记录,方便之后直接Ctrl C + V
仅由一个参数控制的表格
lib_timing_related_constants_t get_timing_related_constants(const lib_wifi5_channel_bandwidth_t cbw)
{
map<lib_wifi5_channel_bandwidth_t, lib_timing_related_constants_t> info =
{
//channel bw nsd nsp nst nsr nseg
{LIB_WIFI5_CBW_20MHZ, {52, 4, 56, 28, 1}},
{LIB_WIFI5_CBW_40MHZ, {108, 6, 114, 58, 1}},
{LIB_WIFI5_CBW_80MHZ, {234, 8, 242, 122, 1}},
{LIB_WIFI5_CBW_80_80MHZ, {234, 8, 242, 122, 2}},
{LIB_WIFI5_CBW_160MHZ, {468, 16, 484, 250, 1}}
};
return info.at(cbw);
}
上述代码为由输入参数cbw控制的5个参数读取。
由多个参数控制的表格
lib_timing_related_constants_t get_timing_related_constants(const lib_wifi5_channel_bandwidth_t cbw)
{
map<uint32, lib_timing_related_constants_t> info =
{
//channel bw, n nsd nsp nst nsr nseg
{_key_bw(LIB_WIFI5_CBW_20MHZ, n), {52, 4, 56, 28, 1}},
{_key_bw(LIB_WIFI5_CBW_40MHZ, n), {108, 6, 114, 58, 1}},
{_key_bw(LIB_WIFI5_CBW_80MHZ, n), {234, 8, 242, 122, 1}},
{_key_bw(LIB_WIFI5_CBW_80_80MHZ, n), {234, 8, 242, 122, 2}},
{_key_bw(LIB_WIFI5_CBW_160MHZ, n), {468, 16, 484, 250, 1}}
};
return info.at(_key_bw(cbw, n));
}
uint32 _key_bw(const lib_wifi5_channel_bandwidth_t cbw, const uint32 n)
{
return static_cast<uint32>(cbw) + n;
}
上述代码为由输入参数cbw与n一起控制的5个参数读取,注意需要保证_key_bw()函数的计算在表格中具有唯一性。