83 lines
2.1 KiB
C
83 lines
2.1 KiB
C
// Based on https://github.com/nanopb/nanopb/blob/master/examples/simple/simple.c
|
|
#include <stdio.h>
|
|
|
|
#include "m-serial-json.h"
|
|
#include "m-tuple.h"
|
|
#include "m-string.h"
|
|
|
|
// Define a structure with one field
|
|
TUPLE_DEF2(SimpleMessage,
|
|
(lucky_number, int))
|
|
|
|
int main(void)
|
|
{
|
|
string_t buffer;
|
|
m_serial_return_code_t status;
|
|
|
|
/* Let's define a string 'buffer' that will receive the JSON representation of our message*/
|
|
string_init(buffer);
|
|
|
|
/* Encode our message */
|
|
{
|
|
SimpleMessage_t message;
|
|
SimpleMessage_init(message);
|
|
|
|
/* Create a stream that will write to our string buffer. */
|
|
m_serial_str_json_write_t stream;
|
|
m_serial_str_json_write_init(stream, buffer);
|
|
|
|
/* Fill in the lucky number */
|
|
message->lucky_number = 13;
|
|
|
|
/* Now we are ready to encode the message! */
|
|
status = SimpleMessage_out_serial(stream, message);
|
|
|
|
/* Then just check for any errors.. */
|
|
if (status != M_SERIAL_OK_DONE)
|
|
{
|
|
printf("Encoding failed: %d\n", status);
|
|
return 1;
|
|
}
|
|
|
|
/* Clear the objets */
|
|
m_serial_str_json_write_clear(stream);
|
|
SimpleMessage_clear(message);
|
|
}
|
|
|
|
/* Now we could transmit the message over network, store it in a file
|
|
* It is represented in a string 'buffer'
|
|
* but we are doing it right now.
|
|
*/
|
|
|
|
{
|
|
/* Allocate another space for the decoded message. */
|
|
SimpleMessage_t message;
|
|
SimpleMessage_init(message);
|
|
|
|
/* Create a stream that reads from the buffer. */
|
|
m_serial_str_json_read_t stream;
|
|
m_serial_str_json_read_init(stream, string_get_cstr(buffer));
|
|
|
|
/* Now we are ready to decode the message. */
|
|
status = SimpleMessage_in_serial(message, stream);
|
|
|
|
/* Check for errors... */
|
|
if (status != M_SERIAL_OK_DONE)
|
|
{
|
|
printf("Decoding failed: %d\n", status);
|
|
return 1;
|
|
}
|
|
|
|
/* Print the data contained in the message. */
|
|
printf("Your lucky number was %d!\n", message->lucky_number);
|
|
|
|
/* Clear the objets */
|
|
m_serial_str_json_read_clear(stream);
|
|
SimpleMessage_clear(message);
|
|
}
|
|
|
|
string_clear(buffer);
|
|
|
|
return 0;
|
|
}
|