/* Decodes a double value into a float variable. * Used to read double values with AVR code, which doesn't support double directly. */ #include <stdio.h> #include <pb_decode.h> #include "double_conversion.h" #include "doubleproto.pb.h" int main() { uint8_t buffer[32]; size_t count = fread(buffer, 1, sizeof(buffer), stdin); pb_istream_t stream = pb_istream_from_buffer(buffer, count); AVRDoubleMessage message; pb_decode(&stream, AVRDoubleMessage_fields, &message); float v1 = double_to_float(message.field1); float v2 = double_to_float(message.field2); printf("Values: %f %f\n", v1, v2); if (v1 == 1234.5678f && v2 == 0.00001f) { return 0; } else { return 1; } }