This way those function don't care about the flags they don't know about
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
#define ARFCN_PCS 0x8000
#define ARFCN_UPLINK 0x4000
+#define ARFCN_FLAG_MASK 0xf000 /* Reserve the upper 5 bits for flags */
enum gsm_band gsm_arfcn2band(uint16_t arfcn);
enum gsm_band gsm_arfcn2band(uint16_t arfcn)
{
- if (arfcn & ARFCN_PCS)
+ int is_pcs = arfcn & ARFCN_PCS;
+
+ arfcn &= ~ARFCN_FLAG_MASK;
+
+ if (is_pcs)
return GSM_BAND_1900;
else if (arfcn <= 124)
return GSM_BAND_900;
{
uint16_t freq10_ul;
uint16_t freq10_dl;
+ int is_pcs = arfcn & ARFCN_PCS;
+
+ arfcn &= ~ARFCN_FLAG_MASK;
- if (arfcn & ARFCN_PCS) {
+ if (is_pcs) {
/* DCS 1900 */
arfcn &= ~ARFCN_PCS;
freq10_ul = 18502 + 2 * (arfcn-512);