Merge pull request #33 from openxc/addingPlatformCommand
[apps/low-level-can-service.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 { CAN = 1; SIMPLE = 2; DIAGNOSTIC = 3; CONTROL_COMMAND = 4;
8             COMMAND_RESPONSE = 5; }
9
10     optional Type type = 1;
11     optional CanMessage can_message = 2;
12     optional SimpleMessage simple_message = 3;
13     optional DiagnosticResponse diagnostic_response = 4;
14     optional ControlCommand control_command = 5;
15     optional CommandResponse command_response = 6;
16     optional uint64 timestamp = 7;
17 }
18
19 message CanMessage {
20     enum FrameFormat {
21         STANDARD = 1;
22         EXTENDED = 2;
23     }
24     optional int32 bus = 1;
25     optional uint32 id = 2;
26     optional bytes data = 3;
27     optional FrameFormat frame_format = 4;
28 }
29
30 message ControlCommand {
31     enum Type {
32         VERSION = 1;
33         DEVICE_ID = 2;
34         DIAGNOSTIC = 3;
35         PASSTHROUGH = 4;
36         ACCEPTANCE_FILTER_BYPASS = 5;
37         PAYLOAD_FORMAT = 6;
38         PREDEFINED_OBD2_REQUESTS = 7;
39         MODEM_CONFIGURATION = 8;
40         RTC_CONFIGURATION = 9;
41         SD_MOUNT_STATUS = 10;
42         PLATFORM = 11;
43     }
44
45     optional Type type = 1;
46     optional DiagnosticControlCommand diagnostic_request = 2;
47     optional PassthroughModeControlCommand passthrough_mode_request = 3;
48     optional AcceptanceFilterBypassCommand acceptance_filter_bypass_command = 4;
49     optional PayloadFormatCommand payload_format_command = 5;
50     optional PredefinedObd2RequestsCommand predefined_obd2_requests_command = 6;
51     optional ModemConfigurationCommand modem_configuration_command = 7;
52     optional RTCConfigurationCommand rtc_configuration_command = 8;
53 }
54
55 message DiagnosticControlCommand {
56     enum Action { ADD = 1; CANCEL = 2; }
57
58     optional DiagnosticRequest request = 1;
59     optional Action action = 2;
60 }
61
62 message PassthroughModeControlCommand {
63     optional int32 bus = 1;
64     optional bool enabled = 2;
65 }
66
67 message AcceptanceFilterBypassCommand {
68     optional int32 bus = 1;
69     optional bool bypass = 2;
70 }
71
72 message PayloadFormatCommand {
73     enum PayloadFormat {
74         JSON = 1;
75         PROTOBUF = 2;
76         MESSAGEPACK = 3;
77     }
78
79     optional PayloadFormat format = 1;
80 }
81
82 message PredefinedObd2RequestsCommand {
83     optional bool enabled = 1;
84 }
85
86 message NetworkOperatorSettings {
87         enum OperatorSelectMode {
88                 AUTOMATIC = 0;
89                 MANUAL = 1;
90                 DEREGISTER = 2;
91                 SET_ONLY = 3;
92                 MANUAL_AUTOMATIC = 4;
93         }
94         message NetworkDescriptor {
95                 enum NetworkType {
96                         GSM = 0;
97                         UTRAN = 2;
98                 }
99                 optional uint32 PLMN = 1;
100                 optional NetworkType networkType = 2;
101         }
102         optional bool allowDataRoaming = 1;
103         optional OperatorSelectMode operatorSelectMode = 2;
104         optional NetworkDescriptor networkDescriptor = 3;
105 }
106
107 message NetworkDataSettings {
108         optional string APN = 1;
109 }
110
111 message ServerConnectSettings {
112         optional string host = 1;
113         optional uint32 port = 2;
114 }
115
116 message ModemConfigurationCommand {
117         optional NetworkOperatorSettings networkOperatorSettings = 1;
118         optional NetworkDataSettings networkDataSettings = 2;
119         optional ServerConnectSettings serverConnectSettings = 3;
120 }
121
122 message RTCConfigurationCommand {
123         optional uint32 unix_time = 1;
124 }
125
126 message CommandResponse {
127     optional ControlCommand.Type type = 1;
128     optional string message = 2;
129     optional bool status = 3;
130 }
131
132 message DiagnosticRequest {
133     enum DecodedType { NONE = 1; OBD2 = 2; }
134
135     optional int32 bus = 1;
136     optional uint32 message_id = 2;
137     optional uint32 mode = 3;
138     optional uint32 pid = 4;
139     // TODO we are capping this at 8 bytes for now - need to change when we
140     // support multi-frame responses
141     optional bytes payload = 5;
142     optional bool multiple_responses = 6;
143     optional double frequency = 7;
144     optional string name = 8;
145     optional DecodedType decoded_type = 9;
146 }
147
148 message DiagnosticResponse {
149     optional int32 bus = 1;
150     optional uint32 message_id = 2;
151     optional uint32 mode = 3;
152     optional uint32 pid = 4;
153     optional bool success = 5;
154     optional uint32 negative_response_code = 6;
155     // TODO we are capping this at 8 bytes for now - need to change when we
156     // support multi-frame responses
157     optional bytes payload = 7;
158     optional double value = 8;
159 }
160
161 message DynamicField {
162     enum Type { STRING = 1; NUM = 2; BOOL = 3; }
163
164     optional Type type = 1;
165     optional string string_value = 2;
166     optional double numeric_value = 3;
167     optional bool boolean_value = 4;
168 }
169
170 message SimpleMessage {
171     optional string name = 1;
172     optional DynamicField value = 2;
173     optional DynamicField event = 3;
174 }