[wireless-regdb] [PATCH] wireless-regdb: Support db.txt files with DFS CAC times

Seth Forshee seth.forshee at canonical.com
Wed Apr 8 06:18:05 PDT 2015


CRDA now supports db.txt files with DFS CAC times in country
rules, but dbparse.py chokes on such files. We can't do
anything useful with CAC times right now since the CRDA
binary format doesn't support them, so add code to parse CAC
times and emit a warning that they are being ignored.

Signed-off-by: Seth Forshee <seth.forshee at canonical.com>
---

I'm throwing this out there in case anyone wants to build regulatory.bin
files from their own db.txt files which contain CAC times. If so, let me
know and I can apply this.

Jean-Pierre: This is working fine in my testing. Could you give it a try
with your file(s) and let me know how it works?


 dbparse.py | 33 ++++++++++++++++++++++++++-------
 1 file changed, 26 insertions(+), 7 deletions(-)

diff --git a/dbparse.py b/dbparse.py
index b735b6a..c740eac 100755
--- a/dbparse.py
+++ b/dbparse.py
@@ -273,23 +273,42 @@ class DBParser(object):
 
         if line[0] == '(':
             items = line.split('),', 1)
+            pname = items[0]
             if len(items) == 1:
-                pname = items[0]
                 line = ''
                 if not pname[-1] == ')':
                     self._syntax_error("Badly parenthesised power definition")
                 pname = pname[:-1]
-                flags = []
             else:
-                pname = items[0]
-                flags = items[1].split(',')
+                line = items[1]
             power = pname[1:]
             pname = 'UNNAMED %d' % self._lineno
             self._parse_power_def(pname, power, dupwarn=False)
         else:
-            line = line.split(',')
-            pname = line[0]
-            flags = line[1:]
+            items = line.split(',', 1)
+            pname = items[0]
+            if len(items) == 1:
+                line = ''
+            else:
+                line = items[1]
+
+        if len(line) != 0 and line[0] == '(':
+            self._warn("Ignoring DFS CAC time definition")
+            items = line.split(')', 1)
+            cactime = items[0]
+            if len(items) == 1:
+                line = ''
+                if not cactime[-1] == ')':
+                    self._syntax_error("Badly parenthesised CAC time")
+                cactime = cactime[:-1]
+            else:
+                line = items[1]
+            cactime = cactime[1:]
+
+        if len(line) == 0:
+            flags = []
+        else:
+            flags = line.split(',')
 
         if not bname in self._bands:
             self._syntax_error("band does not exist")
-- 
1.9.1




More information about the wireless-regdb mailing list