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_GASQUALITY_PB_H_INCLUDED
sgnezdov 0:fbdd0d307c19 5 #define PB_PROTOCOL_GASQUALITY_PB_H_INCLUDED
sgnezdov 0:fbdd0d307c19 6 #include <pb.h>
sgnezdov 0:fbdd0d307c19 7
sgnezdov 0:fbdd0d307c19 8 /* @@protoc_insertion_point(includes) */
sgnezdov 0:fbdd0d307c19 9 #if PB_PROTO_HEADER_VERSION != 30
sgnezdov 0:fbdd0d307c19 10 #error Regenerate this file with the current version of nanopb generator.
sgnezdov 0:fbdd0d307c19 11 #endif
sgnezdov 0:fbdd0d307c19 12
sgnezdov 0:fbdd0d307c19 13 #ifdef __cplusplus
sgnezdov 0:fbdd0d307c19 14 extern "C" {
sgnezdov 0:fbdd0d307c19 15 #endif
sgnezdov 0:fbdd0d307c19 16
sgnezdov 0:fbdd0d307c19 17 /* Enum definitions */
sgnezdov 0:fbdd0d307c19 18 typedef enum _protocol_GQStatus {
sgnezdov 0:fbdd0d307c19 19 protocol_GQStatus_CQSuccess = 0
sgnezdov 0:fbdd0d307c19 20 } protocol_GQStatus;
sgnezdov 0:fbdd0d307c19 21 #define _protocol_GQStatus_MIN protocol_GQStatus_CQSuccess
sgnezdov 0:fbdd0d307c19 22 #define _protocol_GQStatus_MAX protocol_GQStatus_CQSuccess
sgnezdov 0:fbdd0d307c19 23 #define _protocol_GQStatus_ARRAYSIZE ((protocol_GQStatus)(protocol_GQStatus_CQSuccess+1))
sgnezdov 0:fbdd0d307c19 24
sgnezdov 0:fbdd0d307c19 25 /* Struct definitions */
sgnezdov 0:fbdd0d307c19 26 typedef struct _protocol_GQSRawSample {
sgnezdov 0:fbdd0d307c19 27 uint32_t Temperature1;
sgnezdov 0:fbdd0d307c19 28 protocol_GQStatus Temperature1Err;
sgnezdov 0:fbdd0d307c19 29 uint32_t Temperature2;
sgnezdov 0:fbdd0d307c19 30 protocol_GQStatus Temperature2Err;
sgnezdov 0:fbdd0d307c19 31 uint32_t Pressure1;
sgnezdov 0:fbdd0d307c19 32 protocol_GQStatus Pressure1Err;
sgnezdov 0:fbdd0d307c19 33 uint32_t Pressure2;
sgnezdov 0:fbdd0d307c19 34 protocol_GQStatus Pressure2Err;
sgnezdov 0:fbdd0d307c19 35 pb_callback_t MemsStatus;
sgnezdov 0:fbdd0d307c19 36 protocol_GQStatus MemsStatusErr;
sgnezdov 0:fbdd0d307c19 37 pb_callback_t MemsMeasurement;
sgnezdov 0:fbdd0d307c19 38 protocol_GQStatus MemsMeasurementErr;
sgnezdov 0:fbdd0d307c19 39 pb_callback_t errors;
sgnezdov 0:fbdd0d307c19 40 /* @@protoc_insertion_point(struct:protocol_GQSRawSample) */
sgnezdov 0:fbdd0d307c19 41 } protocol_GQSRawSample;
sgnezdov 0:fbdd0d307c19 42
sgnezdov 0:fbdd0d307c19 43 typedef struct _protocol_GQSRawSample_ErrorsEntry {
sgnezdov 0:fbdd0d307c19 44 uint32_t key;
sgnezdov 0:fbdd0d307c19 45 pb_callback_t value;
sgnezdov 0:fbdd0d307c19 46 /* @@protoc_insertion_point(struct:protocol_GQSRawSample_ErrorsEntry) */
sgnezdov 0:fbdd0d307c19 47 } protocol_GQSRawSample_ErrorsEntry;
sgnezdov 0:fbdd0d307c19 48
sgnezdov 0:fbdd0d307c19 49 /* Default values for struct fields */
sgnezdov 0:fbdd0d307c19 50
sgnezdov 0:fbdd0d307c19 51 /* Initializer values for message structs */
sgnezdov 0:fbdd0d307c19 52 #define protocol_GQSRawSample_init_default {0, (protocol_GQStatus)0, 0, (protocol_GQStatus)0, 0, (protocol_GQStatus)0, 0, (protocol_GQStatus)0, {{NULL}, NULL}, (protocol_GQStatus)0, {{NULL}, NULL}, (protocol_GQStatus)0, {{NULL}, NULL}}
sgnezdov 0:fbdd0d307c19 53 #define protocol_GQSRawSample_ErrorsEntry_init_default {0, {{NULL}, NULL}}
sgnezdov 0:fbdd0d307c19 54 #define protocol_GQSRawSample_init_zero {0, (protocol_GQStatus)0, 0, (protocol_GQStatus)0, 0, (protocol_GQStatus)0, 0, (protocol_GQStatus)0, {{NULL}, NULL}, (protocol_GQStatus)0, {{NULL}, NULL}, (protocol_GQStatus)0, {{NULL}, NULL}}
sgnezdov 0:fbdd0d307c19 55 #define protocol_GQSRawSample_ErrorsEntry_init_zero {0, {{NULL}, NULL}}
sgnezdov 0:fbdd0d307c19 56
sgnezdov 0:fbdd0d307c19 57 /* Field tags (for use in manual encoding/decoding) */
sgnezdov 0:fbdd0d307c19 58 #define protocol_GQSRawSample_Temperature1_tag 1
sgnezdov 0:fbdd0d307c19 59 #define protocol_GQSRawSample_Temperature1Err_tag 2
sgnezdov 0:fbdd0d307c19 60 #define protocol_GQSRawSample_Temperature2_tag 3
sgnezdov 0:fbdd0d307c19 61 #define protocol_GQSRawSample_Temperature2Err_tag 4
sgnezdov 0:fbdd0d307c19 62 #define protocol_GQSRawSample_Pressure1_tag 5
sgnezdov 0:fbdd0d307c19 63 #define protocol_GQSRawSample_Pressure1Err_tag 6
sgnezdov 0:fbdd0d307c19 64 #define protocol_GQSRawSample_Pressure2_tag 7
sgnezdov 0:fbdd0d307c19 65 #define protocol_GQSRawSample_Pressure2Err_tag 8
sgnezdov 0:fbdd0d307c19 66 #define protocol_GQSRawSample_MemsStatus_tag 9
sgnezdov 0:fbdd0d307c19 67 #define protocol_GQSRawSample_MemsStatusErr_tag 10
sgnezdov 0:fbdd0d307c19 68 #define protocol_GQSRawSample_MemsMeasurement_tag 11
sgnezdov 0:fbdd0d307c19 69 #define protocol_GQSRawSample_MemsMeasurementErr_tag 12
sgnezdov 0:fbdd0d307c19 70 #define protocol_GQSRawSample_errors_tag 15
sgnezdov 0:fbdd0d307c19 71 #define protocol_GQSRawSample_ErrorsEntry_key_tag 1
sgnezdov 0:fbdd0d307c19 72 #define protocol_GQSRawSample_ErrorsEntry_value_tag 2
sgnezdov 0:fbdd0d307c19 73
sgnezdov 0:fbdd0d307c19 74 /* Struct field encoding specification for nanopb */
sgnezdov 0:fbdd0d307c19 75 extern const pb_field_t protocol_GQSRawSample_fields[14];
sgnezdov 0:fbdd0d307c19 76 extern const pb_field_t protocol_GQSRawSample_ErrorsEntry_fields[3];
sgnezdov 0:fbdd0d307c19 77
sgnezdov 0:fbdd0d307c19 78 /* Maximum encoded size of messages (where known) */
sgnezdov 0:fbdd0d307c19 79 /* protocol_GQSRawSample_size depends on runtime parameters */
sgnezdov 0:fbdd0d307c19 80 /* protocol_GQSRawSample_ErrorsEntry_size depends on runtime parameters */
sgnezdov 0:fbdd0d307c19 81
sgnezdov 0:fbdd0d307c19 82 /* Message IDs (where set with "msgid" option) */
sgnezdov 0:fbdd0d307c19 83 #ifdef PB_MSGID
sgnezdov 0:fbdd0d307c19 84
sgnezdov 0:fbdd0d307c19 85 #define GASQUALITY_MESSAGES \
sgnezdov 0:fbdd0d307c19 86
sgnezdov 0:fbdd0d307c19 87
sgnezdov 0:fbdd0d307c19 88 #endif
sgnezdov 0:fbdd0d307c19 89
sgnezdov 0:fbdd0d307c19 90 #ifdef __cplusplus
sgnezdov 0:fbdd0d307c19 91 } /* extern "C" */
sgnezdov 0:fbdd0d307c19 92 #endif
sgnezdov 0:fbdd0d307c19 93 /* @@protoc_insertion_point(eof) */
sgnezdov 0:fbdd0d307c19 94
sgnezdov 0:fbdd0d307c19 95 #endif