[Nanopb] Sub message - Example proto file

Posted by [하늘이]
2020. 1. 30. 14:16 IT/C, C++
반응형

Sub message sample for including basic type data


※ 관련글

  • Google Protobuf
  1. [Google Protobuf] For Java in Android Studio - 설치 및 proto 파일 컴파일
  2. [Google Protobuf] For Java in Android Studio - Gen Java 파일 Android Studio 적용
  3. [Google Protobuf] For Java in Android Studio - Basic example code 기본 소스 코드 사용 샘플
  4. [Google Protobuf] For C++ in Linux - Settings C++ 빌드 환경 만들기
  5. [Google Protobuf] For C++ in Linux - Basic example code 기본 소스 코드 사용 샘플
  • Nanopb Basic type value example
  1. [Nanopb for Google protobuf] Basic type proto sample
  2. [Nanopb for Google protobuf] Basic type proto sample - Sample proto file
  3. [Nanopb for Google protobuf] Basic type proto sample - Encode sample code
  4. [Nanopb for Google protobuf] Basic type proto sample - Decode sample code
  • Nanopb String / bytes value example
  1. [Nanopb for Google protobuf] String/Bytes type proto
  2. [Nanopb for Google protobuf] String/Bytes type proto - Sample proto file 
  3. [Nanopb for Google protobuf] String/Bytes type proto - Encode example code 1
  4. [Nanopb for Google protobuf] String/Bytes type proto - Encode example code 2
  5. [Nanopb for Google protobuf] String/Bytes type proto - Decode example code
  • Nanopb basic submsg example
  1. [Nanopb for Google protobuf] Sub message - Example proto file
  2. [Nanopb for Google protobuf] Sub message - Encode example code
  3. [Nanopb for Google protobuf] Sub message - Decode example code
  • Nanopb array submsg value example
  1. [Nanopb for Google protobuf] Array Sub message - Example proto file
  2. [Nanopb for Google protobuf] Array Sub message - Encode example code
  3. [Nanopb for Google protobuf] Array Sub message - Decode example code


Example proto file

syntax = "proto2";


message SubMessage {

    required int32 subInt32Value = 1;

    required double subDoubleValue = 2;

}


message TestSubMsgTypes {

    required int32 testInt32 = 1;

    optional SubMessage submsg = 2;

}




sub-message가 들어 있는 proto 파일 컴파일 시 callback으로 변수가 생성되지 않고

기본 데이터 형식으로만 생성된 경우 처리 방법이다.

 

아래와 같이 기본 데이터 타입 proto file생성한 것과 같은 케이스로 생성됨.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
/* Struct definitions */
 
typedef struct _SubMessage {
 
    int32_t subInt32Value;
 
    double subDoubleValue;
 
} SubMessage;
 
 
 
typedef struct _TestSubMsgTypes {
 
    int32_t testInt32;
 
    bool has_submsg;
 
    SubMessage submsg;
 
} TestSubMsgTypes;
 
 
 
 
cs

 

이 경우 decode/encode 는 struct 변수를 사용하는 것과 동일하게 처리 된다.


* Test Result

testSubMsgEncode encode OK size:12

SubMsg Bytes: 8 C1 2 12 7 8 20 11 77 46 7A 44  

testDecodeSubMsgType Decoding OK

 testInt32:321

 subInt32:32 

 subDoubleValue:1001.10


반응형