summaryrefslogtreecommitdiff
path: root/jsongen.py
diff options
context:
space:
mode:
authorEric S. Raymond <esr@thyrsus.com>2009-09-01 09:41:37 +0000
committerEric S. Raymond <esr@thyrsus.com>2009-09-01 09:41:37 +0000
commit17a2237540735cfe3284226e4422bb1d09e71b4e (patch)
tree14f4529031e2c64c6850bcf9ca3bd6704f9c3af9 /jsongen.py
parentafb11120aba9cbe40e2e3e0f04550833817253e5 (diff)
downloadgpsd-17a2237540735cfe3284226e4422bb1d09e71b4e.tar.gz
Fix dumping of AIS message 19 (dte was missing).
Code generation for AIS messages up to 19. Rebuild two affected regression tests (all tests pass).
Diffstat (limited to 'jsongen.py')
-rwxr-xr-xjsongen.py117
1 files changed, 115 insertions, 2 deletions
diff --git a/jsongen.py b/jsongen.py
index 9c7cca16..fbbd2a31 100755
--- a/jsongen.py
+++ b/jsongen.py
@@ -19,7 +19,7 @@ ais_specs = (
{
"initname" : "json_ais1",
"header": "\tAIS_HEADER,",
- "structname": "ais->type123",
+ "structname": "ais->type1",
"fieldmap":(
# fieldname type default
('status', 'uinteger', '0'),
@@ -36,6 +36,7 @@ ais_specs = (
('radio', 'integer', '0'),
),
},
+ # Message types 2 and 3 duplicate 1
{
"initname" : "json_ais4",
"header": "\tAIS_HEADER,",
@@ -140,6 +141,7 @@ ais_specs = (
('dest_mmsi', 'uinteger', '0'),
),
},
+ # Message type 11 duplicates 4
{
"initname" : "json_ais12",
"header": "\tAIS_HEADER,",
@@ -164,17 +166,128 @@ ais_specs = (
('mmsi4', 'uinteger', '0'),
),
},
+ {
+ "initname" : "json_ais14",
+ "header": "\tAIS_HEADER,",
+ "structname": "ais->type14",
+ "fieldmap":(
+ # fieldname type default
+ ('text', 'string', None),
+ ),
+ },
+ {
+ "initname" : "json_ais15",
+ "header": "\tAIS_HEADER,",
+ "structname": "ais->type15",
+ "fieldmap":(
+ # fieldname type default
+ ('mmsi1', 'uinteger', '0'),
+ ('type1_1', 'uinteger', '0'),
+ ('offset1_1', 'uinteger', '0'),
+ ('type1_2', 'uinteger', '0'),
+ ('offset1_2', 'uinteger', '0'),
+ ('mmsi2', 'uinteger', '0'),
+ ('type2_1', 'uinteger', '0'),
+ ('offset2_1', 'uinteger', '0'),
+ ),
+ },
+ {
+ "initname" : "json_ais16",
+ "header": "\tAIS_HEADER,",
+ "structname": "ais->type16",
+ "fieldmap":(
+ # fieldname type default
+ ('mmsi1', 'uinteger', '0'),
+ ('offset1', 'uinteger', '0'),
+ ('increment1', 'uinteger', '0'),
+ ('mmsi2', 'uinteger', '0'),
+ ('offset2', 'uinteger', '0'),
+ ('increment2', 'uinteger', '0'),
+ ),
+ },
+ {
+ "initname" : "json_ais17",
+ "header": "\tAIS_HEADER,",
+ "structname": "ais->type17",
+ "fieldmap":(
+ # fieldname type default
+ ('lon', 'integer', 'AIS_GNS_LON_NOT_AVAILABLE'),
+ ('lat', 'integer', 'AIS_GNS_LAT_NOT_AVAILABLE'),
+ ('data', 'string', None),
+ ),
+ },
+ {
+ "initname" : "json_ais18",
+ "header": "\tAIS_HEADER,",
+ "structname": "ais->type18",
+ "fieldmap":(
+ # fieldname type default
+ ('reserved', 'uinteger', '0'),
+ ('speed', 'uinteger', 'AIS_SPEED_NOT_AVAILABLE'),
+ ('accuracy', 'boolean', 'false'),
+ ('lon', 'integer', 'AIS_LON_NOT_AVAILABLE'),
+ ('lat', 'integer', 'AIS_LAT_NOT_AVAILABLE'),
+ ('course', 'uinteger', 'AIS_COURSE_NOT_AVAILABLE'),
+ ('heading', 'integer', 'AIS_HEADING_NOT_AVAILABLE'),
+ ('second', 'uinteger', 'AIS_SEC_NOT_AVAILABLE'),
+ ('regional', 'integer', '0'),
+ ('cs', 'boolean', 'false'),
+ ('display', 'boolean', 'false'),
+ ('dsc', 'boolean', 'false'),
+ ('band', 'boolean', 'false'),
+ ('msg22', 'boolean', 'false'),
+ ('raim', 'boolean', 'false'),
+ ('radio', 'integer', '0'),
+ ),
+ },
+ {
+ "initname" : "json_ais19",
+ "header": "\tAIS_HEADER,",
+ "structname": "ais->type19",
+ "fieldmap":(
+ # fieldname type default
+ ('reserved', 'uinteger', '0'),
+ ('speed', 'uinteger', 'AIS_SPEED_NOT_AVAILABLE'),
+ ('accuracy', 'boolean', 'false'),
+ ('lon', 'integer', 'AIS_LON_NOT_AVAILABLE'),
+ ('lat', 'integer', 'AIS_LAT_NOT_AVAILABLE'),
+ ('course', 'uinteger', 'AIS_COURSE_NOT_AVAILABLE'),
+ ('heading', 'integer', 'AIS_HEADING_NOT_AVAILABLE'),
+ ('second', 'uinteger', 'bAIS_SEC_NOT_AVAILABLE'),
+ ('regional', 'integer', '0'),
+ ('shipname', 'string', None),
+ ('shiptype', 'uinteger', '0'),
+ ('to_bow', 'uinteger', '0'),
+ ('stern', 'uinteger', '0'),
+ ('port', 'uinteger', '0'),
+ ('starboard', 'uinteger', '0'),
+ ('epfd', 'uinteger', '0'),
+ ('raim', 'boolean', 'false'),
+ ('dte', 'integer', '1'),
+ ('assigned', 'boolean', 'false'),
+ ),
+ },
)
# Give this global the string spec you need to convert with -g
# We do it this mildly odd way only because passing Python multiline
# string literals on the command line is inconvenient.
stringspec = \
- "\"mmsi1\":%u,\"mmsi2\":%u,\"mmsi3\":%u,\"mmsi4\":%u}\r\n"
+ "\"reserved\":%u,\"speed\":%u,\"accuracy\":%s,"\
+ "\"lon\":%d,\"lat\":%d,\"course\":%u,"\
+ "\"heading\":%d,\"second\":%u,\"regional\":%d,"\
+ "\"shipname\":\"%s\",\"shiptype\":%u,"\
+ "\"to_bow\":%u,\"stern\":%u,\"port\":%u,"\
+ "\"starboard\":%u,\"epfd\":%u,\"raim\":%s,"\
+ "\"dte\":%s,\"assigned\":%s}\r\n"
# You should not need to modify anything below this liine.
def generate(spec):
+ print """/*
+ * This is code generated by jsongen.py. Do not hand-hack it.
+ */
+"""
outboard = []
for (attr, itype, default) in spec["fieldmap"]:
if attr in spec.get("stringbuffered", []):