All in one solution demonstrating how to use nanopb Protocol Buffers library from within mbed environment. Test case is very simple. It works.

Dependencies:   nanopb protocol

Original import was an all-in-one solution that only depends on mbed.

Current implementation extracted 2 librarires:

1) nanopb contains code required to use nanopb and Timestamp dependency. 2) protocol is a specific research protocol used by LCE at Itron at the moment of commit.

The application decodes Protocol Buffers message generated with GO application using the same 'protocol'. This test level application decodes message and validates that it matches expected.

It is simply a proof that nanopb library can be used.

Committer:
sgnezdov
Date:
Wed Jul 12 22:40:29 2017 +0000
Revision:
0:fbdd0d307c19
initial import demonstrates how to decode Sample protocol buffers message.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sgnezdov 0:fbdd0d307c19 1 /* Automatically generated nanopb header */
sgnezdov 0:fbdd0d307c19 2 /* Generated by nanopb-0.3.8 at Wed Jul 12 11:04:33 2017. */
sgnezdov 0:fbdd0d307c19 3
sgnezdov 0:fbdd0d307c19 4 #ifndef PB_PROTOCOL_INFO_PB_H_INCLUDED
sgnezdov 0:fbdd0d307c19 5 #define PB_PROTOCOL_INFO_PB_H_INCLUDED
sgnezdov 0:fbdd0d307c19 6 #include <pb.h>
sgnezdov 0:fbdd0d307c19 7
sgnezdov 0:fbdd0d307c19 8 #include "google/protobuf/timestamp.pb.h"
sgnezdov 0:fbdd0d307c19 9
sgnezdov 0:fbdd0d307c19 10 /* @@protoc_insertion_point(includes) */
sgnezdov 0:fbdd0d307c19 11 #if PB_PROTO_HEADER_VERSION != 30
sgnezdov 0:fbdd0d307c19 12 #error Regenerate this file with the current version of nanopb generator.
sgnezdov 0:fbdd0d307c19 13 #endif
sgnezdov 0:fbdd0d307c19 14
sgnezdov 0:fbdd0d307c19 15 #ifdef __cplusplus
sgnezdov 0:fbdd0d307c19 16 extern "C" {
sgnezdov 0:fbdd0d307c19 17 #endif
sgnezdov 0:fbdd0d307c19 18
sgnezdov 0:fbdd0d307c19 19 /* Struct definitions */
sgnezdov 0:fbdd0d307c19 20 typedef struct _protocol_ErrCodeMsg {
sgnezdov 0:fbdd0d307c19 21 uint32_t code;
sgnezdov 0:fbdd0d307c19 22 pb_callback_t detail;
sgnezdov 0:fbdd0d307c19 23 /* @@protoc_insertion_point(struct:protocol_ErrCodeMsg) */
sgnezdov 0:fbdd0d307c19 24 } protocol_ErrCodeMsg;
sgnezdov 0:fbdd0d307c19 25
sgnezdov 0:fbdd0d307c19 26 typedef struct _protocol_ISOMVersion {
sgnezdov 0:fbdd0d307c19 27 pb_callback_t buildStr;
sgnezdov 0:fbdd0d307c19 28 uint32_t major;
sgnezdov 0:fbdd0d307c19 29 uint32_t minor;
sgnezdov 0:fbdd0d307c19 30 uint32_t revision;
sgnezdov 0:fbdd0d307c19 31 uint32_t build;
sgnezdov 0:fbdd0d307c19 32 uint32_t changelist;
sgnezdov 0:fbdd0d307c19 33 /* @@protoc_insertion_point(struct:protocol_ISOMVersion) */
sgnezdov 0:fbdd0d307c19 34 } protocol_ISOMVersion;
sgnezdov 0:fbdd0d307c19 35
sgnezdov 0:fbdd0d307c19 36 typedef struct _protocol_Info {
sgnezdov 0:fbdd0d307c19 37 pb_callback_t hwPushBuildStr;
sgnezdov 0:fbdd0d307c19 38 protocol_ISOMVersion isomVer;
sgnezdov 0:fbdd0d307c19 39 pb_callback_t stmBuildStr;
sgnezdov 0:fbdd0d307c19 40 uint32_t batteryV;
sgnezdov 0:fbdd0d307c19 41 uint32_t isomV;
sgnezdov 0:fbdd0d307c19 42 uint32_t isom33V;
sgnezdov 0:fbdd0d307c19 43 uint32_t sw33V;
sgnezdov 0:fbdd0d307c19 44 uint32_t usbV;
sgnezdov 0:fbdd0d307c19 45 pb_callback_t cellIPStr;
sgnezdov 0:fbdd0d307c19 46 pb_callback_t rssiStr;
sgnezdov 0:fbdd0d307c19 47 google_protobuf_Timestamp takenDT;
sgnezdov 0:fbdd0d307c19 48 pb_callback_t errors;
sgnezdov 0:fbdd0d307c19 49 /* @@protoc_insertion_point(struct:protocol_Info) */
sgnezdov 0:fbdd0d307c19 50 } protocol_Info;
sgnezdov 0:fbdd0d307c19 51
sgnezdov 0:fbdd0d307c19 52 typedef struct _protocol_Info_ErrorsEntry {
sgnezdov 0:fbdd0d307c19 53 pb_callback_t key;
sgnezdov 0:fbdd0d307c19 54 protocol_ErrCodeMsg value;
sgnezdov 0:fbdd0d307c19 55 /* @@protoc_insertion_point(struct:protocol_Info_ErrorsEntry) */
sgnezdov 0:fbdd0d307c19 56 } protocol_Info_ErrorsEntry;
sgnezdov 0:fbdd0d307c19 57
sgnezdov 0:fbdd0d307c19 58 /* Default values for struct fields */
sgnezdov 0:fbdd0d307c19 59
sgnezdov 0:fbdd0d307c19 60 /* Initializer values for message structs */
sgnezdov 0:fbdd0d307c19 61 #define protocol_ISOMVersion_init_default {{{NULL}, NULL}, 0, 0, 0, 0, 0}
sgnezdov 0:fbdd0d307c19 62 #define protocol_ErrCodeMsg_init_default {0, {{NULL}, NULL}}
sgnezdov 0:fbdd0d307c19 63 #define protocol_Info_init_default {{{NULL}, NULL}, protocol_ISOMVersion_init_default, {{NULL}, NULL}, 0, 0, 0, 0, 0, {{NULL}, NULL}, {{NULL}, NULL}, google_protobuf_Timestamp_init_default, {{NULL}, NULL}}
sgnezdov 0:fbdd0d307c19 64 #define protocol_Info_ErrorsEntry_init_default {{{NULL}, NULL}, protocol_ErrCodeMsg_init_default}
sgnezdov 0:fbdd0d307c19 65 #define protocol_ISOMVersion_init_zero {{{NULL}, NULL}, 0, 0, 0, 0, 0}
sgnezdov 0:fbdd0d307c19 66 #define protocol_ErrCodeMsg_init_zero {0, {{NULL}, NULL}}
sgnezdov 0:fbdd0d307c19 67 #define protocol_Info_init_zero {{{NULL}, NULL}, protocol_ISOMVersion_init_zero, {{NULL}, NULL}, 0, 0, 0, 0, 0, {{NULL}, NULL}, {{NULL}, NULL}, google_protobuf_Timestamp_init_zero, {{NULL}, NULL}}
sgnezdov 0:fbdd0d307c19 68 #define protocol_Info_ErrorsEntry_init_zero {{{NULL}, NULL}, protocol_ErrCodeMsg_init_zero}
sgnezdov 0:fbdd0d307c19 69
sgnezdov 0:fbdd0d307c19 70 /* Field tags (for use in manual encoding/decoding) */
sgnezdov 0:fbdd0d307c19 71 #define protocol_ErrCodeMsg_code_tag 1
sgnezdov 0:fbdd0d307c19 72 #define protocol_ErrCodeMsg_detail_tag 2
sgnezdov 0:fbdd0d307c19 73 #define protocol_ISOMVersion_buildStr_tag 1
sgnezdov 0:fbdd0d307c19 74 #define protocol_ISOMVersion_major_tag 2
sgnezdov 0:fbdd0d307c19 75 #define protocol_ISOMVersion_minor_tag 3
sgnezdov 0:fbdd0d307c19 76 #define protocol_ISOMVersion_revision_tag 4
sgnezdov 0:fbdd0d307c19 77 #define protocol_ISOMVersion_build_tag 5
sgnezdov 0:fbdd0d307c19 78 #define protocol_ISOMVersion_changelist_tag 6
sgnezdov 0:fbdd0d307c19 79 #define protocol_Info_hwPushBuildStr_tag 1
sgnezdov 0:fbdd0d307c19 80 #define protocol_Info_isomVer_tag 2
sgnezdov 0:fbdd0d307c19 81 #define protocol_Info_stmBuildStr_tag 3
sgnezdov 0:fbdd0d307c19 82 #define protocol_Info_batteryV_tag 4
sgnezdov 0:fbdd0d307c19 83 #define protocol_Info_isomV_tag 5
sgnezdov 0:fbdd0d307c19 84 #define protocol_Info_isom33V_tag 6
sgnezdov 0:fbdd0d307c19 85 #define protocol_Info_sw33V_tag 7
sgnezdov 0:fbdd0d307c19 86 #define protocol_Info_usbV_tag 8
sgnezdov 0:fbdd0d307c19 87 #define protocol_Info_cellIPStr_tag 9
sgnezdov 0:fbdd0d307c19 88 #define protocol_Info_rssiStr_tag 10
sgnezdov 0:fbdd0d307c19 89 #define protocol_Info_takenDT_tag 11
sgnezdov 0:fbdd0d307c19 90 #define protocol_Info_errors_tag 12
sgnezdov 0:fbdd0d307c19 91 #define protocol_Info_ErrorsEntry_key_tag 1
sgnezdov 0:fbdd0d307c19 92 #define protocol_Info_ErrorsEntry_value_tag 2
sgnezdov 0:fbdd0d307c19 93
sgnezdov 0:fbdd0d307c19 94 /* Struct field encoding specification for nanopb */
sgnezdov 0:fbdd0d307c19 95 extern const pb_field_t protocol_ISOMVersion_fields[7];
sgnezdov 0:fbdd0d307c19 96 extern const pb_field_t protocol_ErrCodeMsg_fields[3];
sgnezdov 0:fbdd0d307c19 97 extern const pb_field_t protocol_Info_fields[13];
sgnezdov 0:fbdd0d307c19 98 extern const pb_field_t protocol_Info_ErrorsEntry_fields[3];
sgnezdov 0:fbdd0d307c19 99
sgnezdov 0:fbdd0d307c19 100 /* Maximum encoded size of messages (where known) */
sgnezdov 0:fbdd0d307c19 101 /* protocol_ISOMVersion_size depends on runtime parameters */
sgnezdov 0:fbdd0d307c19 102 /* protocol_ErrCodeMsg_size depends on runtime parameters */
sgnezdov 0:fbdd0d307c19 103 /* protocol_Info_size depends on runtime parameters */
sgnezdov 0:fbdd0d307c19 104 /* protocol_Info_ErrorsEntry_size depends on runtime parameters */
sgnezdov 0:fbdd0d307c19 105
sgnezdov 0:fbdd0d307c19 106 /* Message IDs (where set with "msgid" option) */
sgnezdov 0:fbdd0d307c19 107 #ifdef PB_MSGID
sgnezdov 0:fbdd0d307c19 108
sgnezdov 0:fbdd0d307c19 109 #define INFO_MESSAGES \
sgnezdov 0:fbdd0d307c19 110
sgnezdov 0:fbdd0d307c19 111
sgnezdov 0:fbdd0d307c19 112 #endif
sgnezdov 0:fbdd0d307c19 113
sgnezdov 0:fbdd0d307c19 114 #ifdef __cplusplus
sgnezdov 0:fbdd0d307c19 115 } /* extern "C" */
sgnezdov 0:fbdd0d307c19 116 #endif
sgnezdov 0:fbdd0d307c19 117 /* @@protoc_insertion_point(eof) */
sgnezdov 0:fbdd0d307c19 118
sgnezdov 0:fbdd0d307c19 119 #endif