11
11
#include " serial/serial.h"
12
12
13
13
#include < stdlib.h>
14
+ #include < stdio.h>
14
15
15
16
namespace {
16
17
@@ -27,6 +28,18 @@ void reportInteger(const char *name, T result, bool includeColon) {
27
28
avrlit::SerialImpl::GetCurrent ()->send (buffer);
28
29
}
29
30
31
+ void reportFloat (const char *name, float f, bool includeColon) {
32
+ avrlit::SerialImpl::GetCurrent ()->send (name);
33
+
34
+ if (includeColon)
35
+ avrlit::SerialImpl::GetCurrent ()->send (" : " );
36
+
37
+ char buffer[40 ];
38
+ sprintf (buffer, " %f" , (double )f);
39
+
40
+ avrlit::SerialImpl::GetCurrent ()->send (buffer);
41
+ }
42
+
30
43
template <typename T>
31
44
void reportArgumentInteger (const char *name, uint8_t idx, T result) {
32
45
if (idx > 0 ) {
@@ -35,12 +48,24 @@ void reportArgumentInteger(const char *name, uint8_t idx, T result) {
35
48
36
49
reportInteger (name, result, true );
37
50
}
51
+ void reportArgumentFloat (const char *name, uint8_t idx, float result) {
52
+ if (idx > 0 ) {
53
+ avrlit::SerialImpl::GetCurrent ()->send (" , " );
54
+ }
55
+
56
+ reportFloat (name, result, true );
57
+ }
38
58
39
59
template <typename T>
40
60
void reportResultInteger (T result) {
41
61
reportInteger (" return " , result, false );
42
62
avrlit::SerialImpl::GetCurrent ()->send (' \n ' );
43
63
}
64
+
65
+ void reportResultFloat (float result) {
66
+ reportFloat (" return " , result, false );
67
+ avrlit::SerialImpl::GetCurrent ()->send (' \n ' );
68
+ }
44
69
}
45
70
46
71
extern " C" {
@@ -79,14 +104,14 @@ extern "C" {
79
104
void avr_instrumentation_argument_i32 (const char *argName, uint8_t idx, uint32_t val) { reportArgumentInteger (argName, idx, val); }
80
105
void avr_instrumentation_argument_i64 (const char *argName, uint8_t idx, uint64_t val) { reportArgumentInteger (argName, idx, val); }
81
106
82
- void avr_instrumentation_argument_f32 (const char *argName, uint8_t idx, float val) { }
107
+ void avr_instrumentation_argument_f32 (const char *argName, uint8_t idx, float val) { reportArgumentFloat (argName, idx, val); }
83
108
84
109
void avr_instrumentation_result_i8 (uint8_t result) { reportResultInteger (result); }
85
110
void avr_instrumentation_result_i16 (uint16_t result) { reportResultInteger (result); }
86
111
void avr_instrumentation_result_i32 (uint32_t result) { reportResultInteger (result); }
87
112
void avr_instrumentation_result_i64 (uint64_t result) { reportResultInteger (result); }
88
113
89
- void avr_instrumentation_result_f32 (float result) { }
114
+ void avr_instrumentation_result_f32 (float result) { reportResultFloat (result); }
90
115
}
91
116
92
117
extern " C" {
0 commit comments