summaryrefslogtreecommitdiff
path: root/libgps_json.c
diff options
context:
space:
mode:
authorEric S. Raymond <esr@thyrsus.com>2009-08-19 03:14:12 +0000
committerEric S. Raymond <esr@thyrsus.com>2009-08-19 03:14:12 +0000
commit6098283d8394544b97c70f473a9743d0c4527d2f (patch)
tree2b4415bf7a7749087fe8b6777cd08a1ff9adb59d /libgps_json.c
parent747088bbe5dc34c0902c0bddc492bc4815f4a7c3 (diff)
downloadgpsd-6098283d8394544b97c70f473a9743d0c4527d2f.tar.gz
Library parse code, and unit test, for DEVICE responses.
Diffstat (limited to 'libgps_json.c')
-rw-r--r--libgps_json.c28
1 files changed, 19 insertions, 9 deletions
diff --git a/libgps_json.c b/libgps_json.c
index de620ca0..a48a6851 100644
--- a/libgps_json.c
+++ b/libgps_json.c
@@ -143,16 +143,26 @@ static int json_sky_read(const char *buf,
static int json_device_read(const char *buf,
struct device_t *dev, const char **endptr)
{
+ const struct json_enum_t datatype_map[] = {
+ {"GPS", DEV_GPS},
+ {"RTCM2", DEV_RTCM2},
+ {"RTCM3", DEV_RTCM3},
+ {"AIS", DEV_AIS},
+ };
const struct json_attr_t json_attrs_device[] = {
- {"class", check, .dflt.check = "DEVICE"},
- {"path", string, .addr.string.ptr = dev->path,
- .addr.string.len = sizeof(dev->path)},
- {"activated", real, .addr.real = &dev->activated},
- // type (list)
- {"driver", string, .addr.string.ptr = dev->driver,
- .addr.string.len = sizeof(dev->driver)},
- {"subtype", string, .addr.string.ptr = dev->subtype,
- .addr.string.len = sizeof(dev->subtype)},
+ {"class", check, .dflt.check = "DEVICE"},
+ {"path", string, .addr.string.ptr = dev->path,
+ .addr.string.len = sizeof(dev->path)},
+ {"activated", real, .addr.real = &dev->activated},
+ {"type", array, .addr.array.element_type = enumerated,
+ .addr.array.arr.enumerated.map = datatype_map,
+ .addr.array.arr.enumerated.store = dev->datatypes,
+ .addr.array.maxlen = sizeof(dev->datatypes)/sizeof(dev->datatypes[0]),
+ .addr.array.count = &dev->ndatatypes},
+ {"driver", string, .addr.string.ptr = dev->driver,
+ .addr.string.len = sizeof(dev->driver)},
+ {"subtype", string, .addr.string.ptr = dev->subtype,
+ .addr.string.len = sizeof(dev->subtype)},
{NULL},
};
int status;