aa7f73444cf545dc632b500e506277fe48355994
[apps/agl-service-can-low-level.git] / openxc.proto
1 package openxc;
2
3 option java_package = "com.openxc";
4 option java_outer_classname = "BinaryMessages";
5
6 message VehicleMessage {
7     enum Type { RAW = 1; TRANSLATED = 2; DIAGNOSTIC = 3; CONTROL_COMMAND = 4;
8             COMMAND_RESPONSE = 5; }
9
10     optional Type type = 1;
11     optional RawMessage raw_message = 2;
12     optional TranslatedMessage translated_message = 3;
13     optional DiagnosticResponse diagnostic_response = 4;
14     optional ControlCommand control_command = 5;
15     optional CommandResponse command_response = 6;
16 }
17
18 message RawMessage {
19     optional int32 bus = 1;
20     optional uint32 message_id = 2;
21     optional bytes data = 3;
22 }
23
24 message ControlCommand {
25     enum Type { VERSION = 1; DEVICE_ID = 2; DIAGNOSTIC = 3; }
26
27     optional Type type = 1;
28     optional DiagnosticRequest diagnostic_request = 2;
29 }
30
31 message CommandResponse {
32     optional ControlCommand.Type type = 1;
33     optional string message = 2;
34 }
35
36 message DiagnosticRequest {
37     enum DecodedType { NONE = 1; OBD2 = 2; }
38     enum Action { CREATE = 1; UPDATE = 2; DELETE = 3; }
39
40     optional int32 bus = 1;
41     optional uint32 message_id = 2;
42     optional uint32 mode = 3;
43     optional uint32 pid = 4;
44     // TODO we are capping this at 8 bytes for now - need to change when we
45     // support multi-frame responses
46     optional bytes payload = 5;
47     optional bool multiple_responses = 6;
48     optional double frequency = 7;
49     optional string name = 8;
50     optional DecodedType decoded_type = 9;
51     optional Action action = 10;
52 }
53
54 message DiagnosticResponse {
55     optional int32 bus = 1;
56     optional uint32 message_id = 2;
57     optional uint32 mode = 3;
58     optional uint32 pid = 4;
59     optional bool success = 5;
60     optional uint32 negative_response_code = 6;
61     // TODO we are capping this at 8 bytes for now - need to change when we
62     // support multi-frame responses
63     optional bytes payload = 7;
64     optional double value = 8;
65 }
66
67 message DynamicField {
68     enum Type { STRING = 1; NUM = 2; BOOL = 3; }
69
70     optional Type type = 1;
71     optional string string_value = 2;
72     optional double numeric_value = 3;
73     optional bool boolean_value = 4;
74 }
75
76 message TranslatedMessage {
77     enum Type { STRING = 1; NUM = 2; BOOL = 3;
78         EVENTED_STRING = 4; EVENTED_NUM = 5; EVENTED_BOOL = 6;}
79
80     optional Type type = 1;
81     optional string name = 2;
82     optional DynamicField value = 3;
83     optional DynamicField event = 4;
84 }
85
86 // TODO we should also consider having an enum type, having each specific
87 // message defined as a protobuf