Skip to content

Commit b23f217

Browse files
committed
Minimize the number of separate protobuf types.
1 parent 3bd72bb commit b23f217

File tree

7 files changed

+573
-274
lines changed

7 files changed

+573
-274
lines changed

benchmark/proto/compare_sizes.py

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -42,12 +42,27 @@ def sizeof_fmt(num):
4242
else:
4343
message.type = openxc_pb2.VehicleMessage.TRANSLATED
4444
message.translated_message.name = json_message['name']
45-
if isinstance(json_message['value'], bool):
46-
message.translated_message.boolean_value = json_message['value']
47-
elif isinstance(json_message['value'], numbers.Number):
48-
message.translated_message.numerical_value = json_message['value']
49-
else:
45+
if 'event' in json_message:
5046
message.translated_message.string_value = json_message['value']
47+
if isinstance(json_message['event'], bool):
48+
message.translated_message.type = openxc_pb2.TranslatedMessage.EVENTED_BOOL
49+
message.translated_message.boolean_event = json_message['event']
50+
elif isinstance(json_message['event'], numbers.Number):
51+
message.translated_message.type = openxc_pb2.TranslatedMessage.EVENTED_NUM
52+
message.translated_message.numeric_value = json_message['event']
53+
else:
54+
message.translated_message.type = openxc_pb2.TranslatedMessage.EVENTED_STRING
55+
message.translated_message.string_value = json_message['event']
56+
else:
57+
if isinstance(json_message['value'], bool):
58+
message.translated_message.type = openxc_pb2.TranslatedMessage.BOOL
59+
message.translated_message.boolean_value = json_message['value']
60+
elif isinstance(json_message['value'], numbers.Number):
61+
message.translated_message.type = openxc_pb2.TranslatedMessage.NUM
62+
message.translated_message.numeric_value = json_message['value']
63+
else:
64+
message.translated_message.type = openxc_pb2.TranslatedMessage.STRING
65+
message.translated_message.string_value = json_message['value']
5166
total_translated_json_size += len(json.dumps(json_message))
5267
total_translated_binary_size += len(message.SerializeToString())
5368

gen/cpp/openxc.pb

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11

2-

2+

33
openxc.protoopenxc"�
44
VehicleMessage)
55
type (2.openxc.VehicleMessage.Type'
@@ -14,14 +14,23 @@ RawMessage
1414
bus (
1515

1616
message_id (
17-
data ("�
18-
TranslatedMessage
19-
name ( 
20-
string_value ( 
21-
numerical_value (
22-
boolean_value (
23-
string_event ( 
24-
numerical_event (
25-
boolean_event (B
17+
data ("�
18+
TranslatedMessage,
19+
type (2.openxc.TranslatedMessage.Type
20+
name ( 
21+
string_value ( 
22+
numeric_value (
23+
boolean_value (
24+
string_event ( 
25+
numeric_event (
26+
boolean_event ("\
27+
Type
28+
29+
STRING
30+
NUM
31+
BOOL
32+
EVENTED_STRING
33+
EVENTED_NUM
34+
EVENTED_BOOLB
2635

2736
com.openxcBBinaryMessages

gen/cpp/openxc.pb.c

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/* Automatically generated nanopb constant definitions */
2-
/* Generated by nanopb-0.2.4-dev at Wed Oct 9 14:26:13 2013. */
2+
/* Generated by nanopb-0.2.4-dev at Thu Oct 24 10:06:38 2013. */
33

44
#include "openxc.pb.h"
55

@@ -19,14 +19,15 @@ const pb_field_t openxc_RawMessage_fields[4] = {
1919
PB_LAST_FIELD
2020
};
2121

22-
const pb_field_t openxc_TranslatedMessage_fields[8] = {
23-
PB_FIELD2( 1, STRING , OPTIONAL, STATIC, FIRST, openxc_TranslatedMessage, name, name, 0),
24-
PB_FIELD2( 2, STRING , OPTIONAL, STATIC, OTHER, openxc_TranslatedMessage, string_value, name, 0),
25-
PB_FIELD2( 3, DOUBLE , OPTIONAL, STATIC, OTHER, openxc_TranslatedMessage, numerical_value, string_value, 0),
26-
PB_FIELD2( 4, BOOL , OPTIONAL, STATIC, OTHER, openxc_TranslatedMessage, boolean_value, numerical_value, 0),
27-
PB_FIELD2( 5, STRING , OPTIONAL, STATIC, OTHER, openxc_TranslatedMessage, string_event, boolean_value, 0),
28-
PB_FIELD2( 6, DOUBLE , OPTIONAL, STATIC, OTHER, openxc_TranslatedMessage, numerical_event, string_event, 0),
29-
PB_FIELD2( 7, BOOL , OPTIONAL, STATIC, OTHER, openxc_TranslatedMessage, boolean_event, numerical_event, 0),
22+
const pb_field_t openxc_TranslatedMessage_fields[9] = {
23+
PB_FIELD2( 1, ENUM , OPTIONAL, STATIC, FIRST, openxc_TranslatedMessage, type, type, 0),
24+
PB_FIELD2( 2, STRING , OPTIONAL, STATIC, OTHER, openxc_TranslatedMessage, name, type, 0),
25+
PB_FIELD2( 3, STRING , OPTIONAL, STATIC, OTHER, openxc_TranslatedMessage, string_value, name, 0),
26+
PB_FIELD2( 4, DOUBLE , OPTIONAL, STATIC, OTHER, openxc_TranslatedMessage, numeric_value, string_value, 0),
27+
PB_FIELD2( 5, BOOL , OPTIONAL, STATIC, OTHER, openxc_TranslatedMessage, boolean_value, numeric_value, 0),
28+
PB_FIELD2( 6, STRING , OPTIONAL, STATIC, OTHER, openxc_TranslatedMessage, string_event, boolean_value, 0),
29+
PB_FIELD2( 7, DOUBLE , OPTIONAL, STATIC, OTHER, openxc_TranslatedMessage, numeric_event, string_event, 0),
30+
PB_FIELD2( 8, BOOL , OPTIONAL, STATIC, OTHER, openxc_TranslatedMessage, boolean_event, numeric_event, 0),
3031
PB_LAST_FIELD
3132
};
3233

gen/cpp/openxc.pb.h

Lines changed: 27 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/* Automatically generated nanopb header */
2-
/* Generated by nanopb-0.2.4-dev at Wed Oct 9 14:26:13 2013. */
2+
/* Generated by nanopb-0.2.4-dev at Thu Oct 24 10:06:38 2013. */
33

44
#ifndef _PB_OPENXC_PB_H_
55
#define _PB_OPENXC_PB_H_
@@ -15,6 +15,15 @@ typedef enum _openxc_VehicleMessage_Type {
1515
openxc_VehicleMessage_Type_TRANSLATED = 2
1616
} openxc_VehicleMessage_Type;
1717

18+
typedef enum _openxc_TranslatedMessage_Type {
19+
openxc_TranslatedMessage_Type_STRING = 1,
20+
openxc_TranslatedMessage_Type_NUM = 2,
21+
openxc_TranslatedMessage_Type_BOOL = 3,
22+
openxc_TranslatedMessage_Type_EVENTED_STRING = 4,
23+
openxc_TranslatedMessage_Type_EVENTED_NUM = 5,
24+
openxc_TranslatedMessage_Type_EVENTED_BOOL = 6
25+
} openxc_TranslatedMessage_Type;
26+
1827
/* Struct definitions */
1928
typedef struct _openxc_RawMessage {
2029
bool has_bus;
@@ -26,18 +35,20 @@ typedef struct _openxc_RawMessage {
2635
} openxc_RawMessage;
2736

2837
typedef struct _openxc_TranslatedMessage {
38+
bool has_type;
39+
openxc_TranslatedMessage_Type type;
2940
bool has_name;
3041
char name[100];
3142
bool has_string_value;
3243
char string_value[100];
33-
bool has_numerical_value;
34-
double numerical_value;
44+
bool has_numeric_value;
45+
double numeric_value;
3546
bool has_boolean_value;
3647
bool boolean_value;
3748
bool has_string_event;
3849
char string_event[100];
39-
bool has_numerical_event;
40-
double numerical_event;
50+
bool has_numeric_event;
51+
double numeric_event;
4152
bool has_boolean_event;
4253
bool boolean_event;
4354
} openxc_TranslatedMessage;
@@ -57,26 +68,27 @@ typedef struct _openxc_VehicleMessage {
5768
#define openxc_RawMessage_bus_tag 1
5869
#define openxc_RawMessage_message_id_tag 2
5970
#define openxc_RawMessage_data_tag 3
60-
#define openxc_TranslatedMessage_name_tag 1
61-
#define openxc_TranslatedMessage_string_value_tag 2
62-
#define openxc_TranslatedMessage_numerical_value_tag 3
63-
#define openxc_TranslatedMessage_boolean_value_tag 4
64-
#define openxc_TranslatedMessage_string_event_tag 5
65-
#define openxc_TranslatedMessage_numerical_event_tag 6
66-
#define openxc_TranslatedMessage_boolean_event_tag 7
71+
#define openxc_TranslatedMessage_type_tag 1
72+
#define openxc_TranslatedMessage_name_tag 2
73+
#define openxc_TranslatedMessage_string_value_tag 3
74+
#define openxc_TranslatedMessage_numeric_value_tag 4
75+
#define openxc_TranslatedMessage_boolean_value_tag 5
76+
#define openxc_TranslatedMessage_string_event_tag 6
77+
#define openxc_TranslatedMessage_numeric_event_tag 7
78+
#define openxc_TranslatedMessage_boolean_event_tag 8
6779
#define openxc_VehicleMessage_type_tag 1
6880
#define openxc_VehicleMessage_raw_message_tag 2
6981
#define openxc_VehicleMessage_translated_message_tag 3
7082

7183
/* Struct field encoding specification for nanopb */
7284
extern const pb_field_t openxc_VehicleMessage_fields[4];
7385
extern const pb_field_t openxc_RawMessage_fields[4];
74-
extern const pb_field_t openxc_TranslatedMessage_fields[8];
86+
extern const pb_field_t openxc_TranslatedMessage_fields[9];
7587

7688
/* Maximum encoded size of messages (where known) */
77-
#define openxc_VehicleMessage_size 362
89+
#define openxc_VehicleMessage_size 368
7890
#define openxc_RawMessage_size 23
79-
#define openxc_TranslatedMessage_size 328
91+
#define openxc_TranslatedMessage_size 334
8092

8193
#ifdef __cplusplus
8294
} /* extern "C" */

0 commit comments

Comments
 (0)