This example demonstrates how several different errors can be caught durring runtime. Both user defined errors, and serdes related errors, like overflows.
#include "../include/serdes.h"
#include "../include/bitprint.h"
#include "../test/notify_when_dynamic_allocation_used.h"
{
int32_t x = -9, y = 10, z = -11;
bool flags[8] = {};
{
{ return y > 6; });
}
};
int main()
{
coordinates obj;
uint16_t serial_data[6] = {0x0000, 0x0001, 0x0000, 0x0002, 0xFFFF, 0xFFFB};
auto load_result = obj.load(serial_data);
printf(
"%s at bit %zu during load process\n",
serdes::status2str(load_result.status), load_result.bits);
auto store_result = obj.store(serial_data);
printf(
"%s at bit %zu during store process\n",
serdes::status2str(store_result.status), store_result.bits);
obj.y = 100;
uint16_t serial_data_too_small[2] = {0x0000, 0x0001};
auto store_result2 = obj.store(serial_data_too_small);
printf(
"%s at bit %zu during store process\n",
serdes::status2str(store_result2.status), store_result2.bits);
uint16_t large_serial_data[7] = {0x0000, 0x0001, 0x0000, 0x00FF, 0xFFFF, 0xFFFB, 0xAAAA};
auto store_result3 = obj.load(large_serial_data);
printf(
"%s at bit %zu during load process\n",
serdes::status2str(store_result3.status), store_result3.bits);
}