'NO-IBSS': 1<<8,
# hole at bit 9
'NO-HT40': 1<<10,
- 'EDGE-POWER-1': 1<<11,
- 'EDGE-POWER-2': 2<<11,
- 'EDGE-POWER-3': 3<<11,
}
class FreqBand(object):
def __init__(self, flag):
self.flag = flag
-class DuplicateEdgePowerError(Exception):
- pass
-
class Permission(object):
def __init__(self, freqband, power, flags):
assert isinstance(freqband, FreqBand)
self.freqband = freqband
self.power = power
self.flags = 0
- f = [e for e in flags if e.startswith('EDGE-POWER-')]
- if len(f) > 1:
- raise DuplicateEdgePowerError()
for flag in flags:
if not flag in flag_definitions:
raise FlagError(flag)
perm = Permission(b, p, flags)
except FlagError, e:
self._syntax_error("Invalid flag '%s'" % e.flag)
- except DuplicateEdgePowerError:
- self._syntax_error("More than one edge power value given!")
for cname, c in self._current_countries.iteritems():
if perm in c:
self._warn('Rule "%s, %s" added to "%s" twice' % (
struct regdb_file_freq_range *freq;
struct regdb_file_power_rule *power;
__u32 flags;
- int ep;
rule = get_file_ptr(db, dblen, sizeof(*rule), ruleptr);
freq = get_file_ptr(db, dblen, sizeof(*freq), rule->freq_range_ptr);
if (flags & RRF_NO_HT40)
printf(", NO-HT40");
- ep = (flags & RRF_EDGE_POWER_MASK) >> EDGE_POWER_SHIFT;
- if (ep)
- printf(", EDGE-POWER-%d", ep);
-
printf("\n");
}
__be32 max_eirp;
};
-#define EDGE_POWER_SHIFT 11
-
enum reg_rule_flags {
RRF_NO_OFDM = 1<<0,
RRF_NO_CCK = 1<<1,
RRF_NO_IBSS = 1<<8,
/* hole at 9 */
RRF_NO_HT40 = 1<<10,
- RRF_EDGE_POWER_MASK = 3<<EDGE_POWER_SHIFT,
};
-/* TODO: flesh out what these mean! */
-#define EDGE_POWER_NO 0
-#define EDGE_POWER_1 1
-#define EDGE_POWER_2 2
-#define EDGE_POWER_3 3
-
struct regdb_file_reg_rule {
/* pointers (offsets) into the file */
__be32 freq_range_ptr,