14
14
15
15
AdafruitIO_Data::AdafruitIO_Data ()
16
16
{
17
- feed = 0 ;
17
+ _feed = 0 ;
18
18
_csv = 0 ;
19
- _value = 0 ;
20
19
_lat = 0 ;
21
20
_lon = 0 ;
22
21
_ele = 0 ;
22
+ next_data = 0 ;
23
+
24
+ memset (_value, 0 , AIO_DATA_LENGTH);
23
25
}
24
26
25
27
AdafruitIO_Data::AdafruitIO_Data (AdafruitIO_Feed *f)
26
28
{
27
- feed = f;
29
+ _feed = f-> name ;
28
30
_csv = 0 ;
29
- _value = 0 ;
30
31
_lat = 0 ;
31
32
_lon = 0 ;
32
33
_ele = 0 ;
34
+ next_data = 0 ;
35
+
36
+ memset (_value, 0 , AIO_DATA_LENGTH);
33
37
}
34
38
35
39
AdafruitIO_Data::AdafruitIO_Data (AdafruitIO_Feed *f, char *csv)
36
40
{
37
- feed = f;
41
+ _feed = f-> name ;
38
42
_csv = csv;
39
- _value = 0 ;
40
43
_lat = 0 ;
41
44
_lon = 0 ;
42
45
_ele = 0 ;
46
+ next_data = 0 ;
47
+
48
+ memset (_value, 0 , AIO_DATA_LENGTH);
49
+
50
+ _parseCSV ();
51
+ }
52
+
53
+ AdafruitIO_Data::AdafruitIO_Data (const char *f)
54
+ {
55
+ _feed = f;
56
+ _csv = 0 ;
57
+ _lat = 0 ;
58
+ _lon = 0 ;
59
+ _ele = 0 ;
60
+ next_data = 0 ;
61
+
62
+ memset (_value, 0 , AIO_DATA_LENGTH);
63
+ }
64
+
65
+ AdafruitIO_Data::AdafruitIO_Data (const char *f, char *csv)
66
+ {
67
+ _feed = f;
68
+ _csv = csv;
69
+ _lat = 0 ;
70
+ _lon = 0 ;
71
+ _ele = 0 ;
72
+ next_data = 0 ;
73
+
74
+ memset (_value, 0 , AIO_DATA_LENGTH);
43
75
44
76
_parseCSV ();
45
77
}
@@ -61,26 +93,24 @@ void AdafruitIO_Data::setLocation(double lat, double lon, double ele)
61
93
_ele = ele;
62
94
}
63
95
64
- static char _converted[AIO_DATA_LENGTH];
65
-
66
96
void AdafruitIO_Data::setValue (const char *value, double lat, double lon, double ele)
67
97
{
68
- _value = ( char *) value;
98
+ strcpy ( _value, value) ;
69
99
setLocation (lat, lon, ele);
70
100
}
71
101
72
102
void AdafruitIO_Data::setValue (char *value, double lat, double lon, double ele)
73
103
{
74
- _value = value;
104
+ strcpy ( _value, value) ;
75
105
setLocation (lat, lon, ele);
76
106
}
77
107
78
108
void AdafruitIO_Data::setValue (bool value, double lat, double lon, double ele)
79
109
{
80
110
if (value)
81
- _value = ( char *) " 1" ;
111
+ strcpy ( _value, " 1" ) ;
82
112
else
83
- _value = ( char *) " 0" ;
113
+ strcpy ( _value, " 0" ) ;
84
114
85
115
setLocation (lat, lon, ele);
86
116
}
@@ -93,83 +123,76 @@ void AdafruitIO_Data::setValue(String value, double lat, double lon, double ele)
93
123
94
124
void AdafruitIO_Data::setValue (int value, double lat, double lon, double ele)
95
125
{
96
- memset (_converted, 0 , sizeof (_converted));
97
- itoa (value, _converted, 10 );
98
- _value = _converted;
126
+ memset (_value, 0 , AIO_DATA_LENGTH);
127
+ itoa (value, _value, 10 );
99
128
setLocation (lat, lon, ele);
100
129
}
101
130
102
131
void AdafruitIO_Data::setValue (unsigned int value, double lat, double lon, double ele)
103
132
{
104
- memset (_converted, 0 , sizeof (_converted));
105
- utoa (value, _converted, 10 );
106
- _value = _converted;
133
+ memset (_value, 0 , AIO_DATA_LENGTH);
134
+ utoa (value, _value, 10 );
107
135
setLocation (lat, lon, ele);
108
136
}
109
137
110
138
void AdafruitIO_Data::setValue (long value, double lat, double lon, double ele)
111
139
{
112
- memset (_converted, 0 , sizeof (_converted));
113
- ltoa (value, _converted, 10 );
114
- _value = _converted;
140
+ memset (_value, 0 , AIO_DATA_LENGTH);
141
+ ltoa (value, _value, 10 );
115
142
setLocation (lat, lon, ele);
116
143
}
117
144
118
145
void AdafruitIO_Data::setValue (unsigned long value, double lat, double lon, double ele)
119
146
{
120
- memset (_converted, 0 , sizeof (_converted));
121
- ultoa (value, _converted, 10 );
122
- _value = _converted;
147
+ memset (_value, 0 , AIO_DATA_LENGTH);
148
+ ultoa (value, _value, 10 );
123
149
setLocation (lat, lon, ele);
124
150
}
125
151
126
152
void AdafruitIO_Data::setValue (float value, double lat, double lon, double ele, int precision)
127
153
{
128
- memset (_converted , 0 , sizeof (_converted) );
154
+ memset (_value , 0 , AIO_DATA_LENGTH );
129
155
130
156
#if defined(ARDUINO_ARCH_AVR)
131
157
// Use avrlibc dtostre function on AVR platforms.
132
- dtostre (value, _converted , 10 , 0 );
158
+ dtostre (value, _value , 10 , 0 );
133
159
#elif defined(ESP8266)
134
160
// ESP8266 Arduino only implements dtostrf and not dtostre. Use dtostrf
135
161
// but accept a hint as to how many decimals of precision are desired.
136
- dtostrf (value, 0 , precision, _converted );
162
+ dtostrf (value, 0 , precision, _value );
137
163
#else
138
164
// Otherwise fall back to snprintf on other platforms.
139
- snprintf (_converted , sizeof (_converted )-1 , " %f" , value);
165
+ snprintf (_value , sizeof (_value )-1 , " %f" , value);
140
166
#endif
141
167
142
- _value = _converted;
143
168
setLocation (lat, lon, ele);
144
169
}
145
170
146
171
void AdafruitIO_Data::setValue (double value, double lat, double lon, double ele, int precision)
147
172
{
148
- memset (_converted , 0 , sizeof (_converted) );
173
+ memset (_value , 0 , AIO_DATA_LENGTH );
149
174
150
175
#if defined(ARDUINO_ARCH_AVR)
151
176
// Use avrlibc dtostre function on AVR platforms.
152
- dtostre (value, _converted , 10 , 0 );
177
+ dtostre (value, _value , 10 , 0 );
153
178
#elif defined(ESP8266)
154
179
// ESP8266 Arduino only implements dtostrf and not dtostre. Use dtostrf
155
180
// but accept a hint as to how many decimals of precision are desired.
156
- dtostrf (value, 0 , precision, _converted );
181
+ dtostrf (value, 0 , precision, _value );
157
182
#else
158
183
// Otherwise fall back to snprintf on other platforms.
159
- snprintf (_converted , sizeof (_converted )-1 , " %f" , value);
184
+ snprintf (_value , sizeof (_value )-1 , " %f" , value);
160
185
#endif
161
186
162
-
163
- _value = _converted;
164
187
setLocation (lat, lon, ele);
165
188
}
166
189
167
190
char * AdafruitIO_Data::feedName ()
168
191
{
169
- if (! feed )
192
+ if (! _feed )
170
193
return (char *)" " ;
171
194
172
- return (char *)feed-> name ;
195
+ return (char *)_feed ;
173
196
}
174
197
175
198
char * AdafruitIO_Data::value ()
@@ -344,7 +367,7 @@ char* AdafruitIO_Data::charFromDouble(double d, int precision)
344
367
bool AdafruitIO_Data::_parseCSV ()
345
368
{
346
369
// parse value from csv
347
- _value = strtok (_csv, " ," );
370
+ strcpy ( _value, strtok (_csv, " ," ) );
348
371
if (! _value) return false ;
349
372
350
373
// parse lat from csv and convert to float
0 commit comments