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_STM_PB_H_INCLUDED
sgnezdov 0:fbdd0d307c19 5 #define PB_PROTOCOL_STM_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_StmAdcSchedule {
sgnezdov 0:fbdd0d307c19 21 uint32_t ReadingStepSizeSecs;
sgnezdov 0:fbdd0d307c19 22 pb_callback_t LoThreshold;
sgnezdov 0:fbdd0d307c19 23 pb_callback_t HiThreshold;
sgnezdov 0:fbdd0d307c19 24 pb_callback_t Deadband;
sgnezdov 0:fbdd0d307c19 25 uint32_t RecPeriod;
sgnezdov 0:fbdd0d307c19 26 uint32_t LoDelayd;
sgnezdov 0:fbdd0d307c19 27 uint32_t HiDelayd;
sgnezdov 0:fbdd0d307c19 28 uint32_t FlagDelayd;
sgnezdov 0:fbdd0d307c19 29 /* @@protoc_insertion_point(struct:protocol_StmAdcSchedule) */
sgnezdov 0:fbdd0d307c19 30 } protocol_StmAdcSchedule;
sgnezdov 0:fbdd0d307c19 31
sgnezdov 0:fbdd0d307c19 32 /* Default values for struct fields */
sgnezdov 0:fbdd0d307c19 33
sgnezdov 0:fbdd0d307c19 34 /* Initializer values for message structs */
sgnezdov 0:fbdd0d307c19 35 #define protocol_StmAdcSchedule_init_default {0, {{NULL}, NULL}, {{NULL}, NULL}, {{NULL}, NULL}, 0, 0, 0, 0}
sgnezdov 0:fbdd0d307c19 36 #define protocol_StmAdcSchedule_init_zero {0, {{NULL}, NULL}, {{NULL}, NULL}, {{NULL}, NULL}, 0, 0, 0, 0}
sgnezdov 0:fbdd0d307c19 37
sgnezdov 0:fbdd0d307c19 38 /* Field tags (for use in manual encoding/decoding) */
sgnezdov 0:fbdd0d307c19 39 #define protocol_StmAdcSchedule_ReadingStepSizeSecs_tag 1
sgnezdov 0:fbdd0d307c19 40 #define protocol_StmAdcSchedule_LoThreshold_tag 2
sgnezdov 0:fbdd0d307c19 41 #define protocol_StmAdcSchedule_HiThreshold_tag 3
sgnezdov 0:fbdd0d307c19 42 #define protocol_StmAdcSchedule_Deadband_tag 4
sgnezdov 0:fbdd0d307c19 43 #define protocol_StmAdcSchedule_RecPeriod_tag 5
sgnezdov 0:fbdd0d307c19 44 #define protocol_StmAdcSchedule_LoDelayd_tag 6
sgnezdov 0:fbdd0d307c19 45 #define protocol_StmAdcSchedule_HiDelayd_tag 7
sgnezdov 0:fbdd0d307c19 46 #define protocol_StmAdcSchedule_FlagDelayd_tag 8
sgnezdov 0:fbdd0d307c19 47
sgnezdov 0:fbdd0d307c19 48 /* Struct field encoding specification for nanopb */
sgnezdov 0:fbdd0d307c19 49 extern const pb_field_t protocol_StmAdcSchedule_fields[9];
sgnezdov 0:fbdd0d307c19 50
sgnezdov 0:fbdd0d307c19 51 /* Maximum encoded size of messages (where known) */
sgnezdov 0:fbdd0d307c19 52 /* protocol_StmAdcSchedule_size depends on runtime parameters */
sgnezdov 0:fbdd0d307c19 53
sgnezdov 0:fbdd0d307c19 54 /* Message IDs (where set with "msgid" option) */
sgnezdov 0:fbdd0d307c19 55 #ifdef PB_MSGID
sgnezdov 0:fbdd0d307c19 56
sgnezdov 0:fbdd0d307c19 57 #define STM_MESSAGES \
sgnezdov 0:fbdd0d307c19 58
sgnezdov 0:fbdd0d307c19 59
sgnezdov 0:fbdd0d307c19 60 #endif
sgnezdov 0:fbdd0d307c19 61
sgnezdov 0:fbdd0d307c19 62 #ifdef __cplusplus
sgnezdov 0:fbdd0d307c19 63 } /* extern "C" */
sgnezdov 0:fbdd0d307c19 64 #endif
sgnezdov 0:fbdd0d307c19 65 /* @@protoc_insertion_point(eof) */
sgnezdov 0:fbdd0d307c19 66
sgnezdov 0:fbdd0d307c19 67 #endif