c412c14e7aeab7f11cdf360af5dea94de923a131
[apps/agl-service-can-low-level.git] / CAN-binder / libs / nanopb / tests / basic_buffer / encode_buffer.c
1 /* A very simple encoding test case using person.proto.
2  * Just puts constant data in the fields and encodes into
3  * buffer, which is then written to stdout.
4  */
5
6 #include <stdio.h>
7 #include <pb_encode.h>
8 #include "person.pb.h"
9 #include "test_helpers.h"
10
11 int main()
12 {
13     uint8_t buffer[Person_size];
14     pb_ostream_t stream;
15     
16     /* Initialize the structure with constants */
17     Person person = {"Test Person 99", 99, true, "test@person.com",
18         3, {{"555-12345678", true, Person_PhoneType_MOBILE},
19             {"99-2342", false, 0},
20             {"1234-5678", true, Person_PhoneType_WORK},
21         }};
22
23     stream = pb_ostream_from_buffer(buffer, sizeof(buffer));
24     
25     /* Now encode it and check if we succeeded. */
26     if (pb_encode(&stream, Person_fields, &person))
27     {    
28         /* Write the result data to stdout */
29         SET_BINARY_MODE(stdout);
30         fwrite(buffer, 1, stream.bytes_written, stdout);
31         return 0; /* Success */
32     }
33     else
34     {
35         fprintf(stderr, "Encoding failed: %s\n", PB_GET_ERROR(&stream));
36         return 1; /* Failure */
37     }
38 }