| /* 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; | |
| } | |
| } |