Skip to content

Commit fd321ab

Browse files
committed
refactor telemetry props from vehicle props
these can be re-used in the new Feature geometry
1 parent 8c4b417 commit fd321ab

4 files changed

Lines changed: 81 additions & 63 deletions

File tree

schema/agency.py

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,16 @@
77
import common
88

99

10+
def vehicle_telemetry():
11+
telemetry = common.load_definitions("telemetry")
12+
vehicle_telemetry = common.load_definitions("vehicle_telemetry")
13+
14+
# merge the standard telemetry props into vehicle_telemetry.gps
15+
vehicle_telemetry["properties"]["gps"]["properties"].update(telemetry["properties"])
16+
17+
return vehicle_telemetry
18+
19+
1020
def get_stops_schema():
1121
"""
1222
Create the schema for the Agency GET /stops endpoint.
@@ -113,10 +123,10 @@ def post_vehicle_event_schema():
113123
# load schema template and insert definitions
114124
schema = common.load_json("./templates/agency/post_vehicle_event.json")
115125
definitions = common.load_definitions(
116-
"telemetry",
117126
"timestamp",
118127
"uuid"
119128
)
129+
definitions["vehicle_telemetry"] = vehicle_telemetry()
120130
schema["definitions"].update(definitions)
121131

122132
# merge the state machine definitions and transition combinations rule
@@ -139,10 +149,10 @@ def post_vehicle_telemetry_schema():
139149
# load schema template and insert definitions
140150
schema = common.load_json("./templates/agency/post_vehicle_telemetry.json")
141151
definitions = common.load_definitions(
142-
"telemetry",
143152
"timestamp",
144153
"uuid"
145154
)
155+
definitions["vehicle_telemetry"] = vehicle_telemetry()
146156
schema["definitions"].update(definitions)
147157

148158
# verify and return

schema/templates/agency/post_vehicle_event.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
"$ref": "#/definitions/timestamp"
2222
},
2323
"telemetry": {
24-
"$ref": "#/definitions/telemetry"
24+
"$ref": "#/definitions/vehicle_telemetry"
2525
},
2626
"trip_id": {
2727
"$ref": "#/definitions/uuid"

schema/templates/agency/post_vehicle_telemetry.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
"data": {
1212
"type": "array",
1313
"items": {
14-
"$ref": "#/definitions/telemetry"
14+
"$ref": "#/definitions/vehicle_telemetry"
1515
}
1616
}
1717
},

schema/templates/common.json

Lines changed: 67 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -307,71 +307,32 @@
307307
"telemetry": {
308308
"$id": "#/definitions/telemetry",
309309
"type": "object",
310-
"description": "A vehicle telemetry datum",
311-
"required": [
312-
"device_id",
313-
"timestamp",
314-
"gps"
315-
],
310+
"description": "A telemetry datum",
316311
"additionalProperties": false,
317312
"properties": {
318-
"device_id": {
319-
"$ref": "#/definitions/uuid"
313+
"altitude": {
314+
"type": "number",
315+
"description": "Altitude above mean sea level in meters"
320316
},
321-
"timestamp": {
322-
"$ref": "#/definitions/timestamp"
317+
"heading": {
318+
"type": "number",
319+
"description": "Degrees - clockwise starting at 0 degrees at true North"
323320
},
324-
"gps": {
325-
"type": "object",
326-
"required": [
327-
"lat",
328-
"lng"
329-
],
330-
"additionalProperties": false,
331-
"properties": {
332-
"lat": {
333-
"type": "number",
334-
"description": "Latitude of the location",
335-
"minimum": -90,
336-
"maximum": 90
337-
},
338-
"lng": {
339-
"type": "number",
340-
"description": "Longitude of the location",
341-
"minimum": -180,
342-
"maximum": 180
343-
},
344-
"altitude": {
345-
"type": "number",
346-
"description": "Altitude above mean sea level in meters"
347-
},
348-
"heading": {
349-
"type": "number",
350-
"description": "Degrees clockwise from true north"
351-
},
352-
"speed": {
353-
"type": "number",
354-
"description": "Speed in meters/sec"
355-
},
356-
"accuracy": {
357-
"type": "number",
358-
"description": "Accuracy in meters"
359-
},
360-
"hdop": {
361-
"type": "number",
362-
"description": "Horizontal GPS or GNSS accuracy value"
363-
},
364-
"satellites": {
365-
"type": "integer",
366-
"description": "Number of GPS or GNSS satellites"
367-
}
368-
}
321+
"speed": {
322+
"type": "number",
323+
"description": "Estimated speed in meters / sec as reported by the GPS chipset"
369324
},
370-
"charge": {
325+
"accuracy": {
371326
"type": "number",
372-
"description": "Fraction of charge of the vehicle (required if applicable",
373-
"minimum": 0,
374-
"maximum": 1
327+
"description": "Horizontal accuracy, in meters"
328+
},
329+
"hdop": {
330+
"type": "number",
331+
"description": "Horizontal GPS or GNSS accuracy value"
332+
},
333+
"satellites": {
334+
"type": "integer",
335+
"description": "Number of GPS or GNSS satellites"
375336
}
376337
}
377338
},
@@ -677,6 +638,53 @@
677638
}
678639
]
679640
},
641+
"vehicle_telemetry": {
642+
"$id": "#/definitions/vehicle_telemetry",
643+
"type": "object",
644+
"description": "A telemetry datum for a specific vehicle at a specific time",
645+
"required": [
646+
"device_id",
647+
"timestamp",
648+
"gps"
649+
],
650+
"additionalProperties": false,
651+
"properties": {
652+
"device_id": {
653+
"$ref": "#/definitions/uuid"
654+
},
655+
"timestamp": {
656+
"$ref": "#/definitions/timestamp"
657+
},
658+
"gps": {
659+
"type": "object",
660+
"required": [
661+
"lat",
662+
"lng"
663+
],
664+
"additionalProperties": false,
665+
"properties": {
666+
"lat": {
667+
"type": "number",
668+
"description": "Latitude of the location",
669+
"minimum": -90,
670+
"maximum": 90
671+
},
672+
"lng": {
673+
"type": "number",
674+
"description": "Longitude of the location",
675+
"minimum": -180,
676+
"maximum": 180
677+
}
678+
}
679+
},
680+
"charge": {
681+
"type": "number",
682+
"description": "Fraction of charge of the vehicle (required if applicable)",
683+
"minimum": 0,
684+
"maximum": 1
685+
}
686+
}
687+
},
680688
"vehicle_type": {
681689
"$id": "#/definitions/vehicle_type",
682690
"type": "string",

0 commit comments

Comments
 (0)