utils: add helper functions to get names by values
Some defines/enums use bits, while some functions only set a single one. Make it less painful to get to a name for those. This avoids hardcoding bit lists for consumers. Signed-off-by: Andre Heider <a.heider@gmail.com>
This commit is contained in:
parent
d09a77a369
commit
e084781afc
2 changed files with 41 additions and 0 deletions
|
@ -43,6 +43,9 @@ static inline int iwinfo_mbm2dbm(int gain)
|
||||||
return gain / 100;
|
return gain / 100;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const char * const iwinfo_band_name(int mask);
|
||||||
|
const char * const iwinfo_htmode_name(int mask);
|
||||||
|
|
||||||
size_t iwinfo_format_hwmodes(int modes, char *buf, size_t len);
|
size_t iwinfo_format_hwmodes(int modes, char *buf, size_t len);
|
||||||
int iwinfo_htmode_is_ht(int htmode);
|
int iwinfo_htmode_is_ht(int htmode);
|
||||||
int iwinfo_htmode_is_vht(int htmode);
|
int iwinfo_htmode_is_vht(int htmode);
|
||||||
|
|
|
@ -77,6 +77,44 @@ int iwinfo_mw2dbm(int in)
|
||||||
return (int)res;
|
return (int)res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int iwinfo_bit(int value, int max)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if (max > 31 || !(value & ((1 << max) - 1)))
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
for (i = 0; i < max; i++)
|
||||||
|
{
|
||||||
|
if (value & 1)
|
||||||
|
break;
|
||||||
|
|
||||||
|
value >>= 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
|
||||||
|
static const char * const iwinfo_name(int mask, int max, const char * const names[])
|
||||||
|
{
|
||||||
|
int index = iwinfo_bit(mask, max);
|
||||||
|
|
||||||
|
if (index < 0)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
return names[index];
|
||||||
|
}
|
||||||
|
|
||||||
|
const char * const iwinfo_band_name(int mask)
|
||||||
|
{
|
||||||
|
return iwinfo_name(mask, IWINFO_BAND_COUNT, IWINFO_BAND_NAMES);
|
||||||
|
}
|
||||||
|
|
||||||
|
const char * const iwinfo_htmode_name(int mask)
|
||||||
|
{
|
||||||
|
return iwinfo_name(mask, IWINFO_HTMODE_COUNT, IWINFO_HTMODE_NAMES);
|
||||||
|
}
|
||||||
|
|
||||||
size_t iwinfo_format_hwmodes(int modes, char *buf, size_t len)
|
size_t iwinfo_format_hwmodes(int modes, char *buf, size_t len)
|
||||||
{
|
{
|
||||||
// bit numbers as per IWINFO_80211_*: ad ac ax a b g n
|
// bit numbers as per IWINFO_80211_*: ad ac ax a b g n
|
||||||
|
|
Loading…
Reference in a new issue