Remove factor and offset from diag requests - left up to clients.
[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 { 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
39     optional int32 bus = 1;
40     optional uint32 message_id = 2;
41     optional uint32 mode = 3;
42     optional uint32 pid = 4;
43     // TODO we are capping this at 8 bytes for now - need to change when we
44     // support multi-frame responses
45     optional bytes payload = 5;
46     optional bool multiple_responses = 6;
47     optional double frequency = 7;
48     optional string name = 8;
49     optional DecodedType decoded_type = 9;
50 }
51
52 message DiagnosticResponse {
53     optional int32 bus = 1;
54     optional uint32 message_id = 2;
55     optional uint32 mode = 3;
56     optional uint32 pid = 4;
57     optional bool success = 5;
58     optional uint32 negative_response_code = 6;
59     // TODO we are capping this at 8 bytes for now - need to change when we
60     // support multi-frame responses
61     optional bytes payload = 7;
62     optional double value = 8;
63 }
64
65 message DynamicField {
66     enum Type { STRING = 1; NUM = 2; BOOL = 3; }
67
68     optional Type type = 1;
69     optional string string_value = 2;
70     optional double numeric_value = 3;
71     optional bool boolean_value = 4;
72 }
73
74 message TranslatedMessage {
75     enum Type { STRING = 1; NUM = 2; BOOL = 3;
76         EVENTED_STRING = 4; EVENTED_NUM = 5; EVENTED_BOOL = 6;}
77
78     optional Type type = 1;
79     optional string name = 2;
80     optional DynamicField value = 3;
81     optional DynamicField event = 4;
82 }
83
84 // TODO we should also consider having an enum type, having each specific
85 // message defined as a protobuf