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