@@ -16,10 +16,16 @@ AdafruitIO_Feed::AdafruitIO_Feed(AdafruitIO *io, const char *n):AdafruitIO_MQTT(
16
16
{
17
17
_io = io;
18
18
name = n;
19
- _sub = 0 ;
20
- _pub = 0 ;
21
- _get_pub = 0 ;
22
- _dataCallback = 0 ;
19
+ owner = _io->_username ;
20
+
21
+ _init ();
22
+ }
23
+
24
+ AdafruitIO_Feed::AdafruitIO_Feed (AdafruitIO *io, const char *n, const char *un):AdafruitIO_MQTT()
25
+ {
26
+ _io = io;
27
+ name = n;
28
+ owner = un;
23
29
24
30
_init ();
25
31
}
@@ -159,7 +165,7 @@ AdafruitIO_Data* AdafruitIO_Feed::lastValue()
159
165
{
160
166
// 15 extra for api path, 12 for /data/retain, 1 for null
161
167
String url = " /api/v2/" ;
162
- url += _io-> _username ;
168
+ url += owner ;
163
169
url += " /feeds/" ;
164
170
url += name;
165
171
url += " /data/retain" ;
@@ -181,6 +187,8 @@ AdafruitIO_Data* AdafruitIO_Feed::lastValue()
181
187
return new AdafruitIO_Data (this , body.c_str ());
182
188
}
183
189
190
+ return NULL ;
191
+
184
192
} else {
185
193
186
194
AIO_ERROR_PRINT (" error retrieving lastValue, status: " );
@@ -209,37 +217,41 @@ void AdafruitIO_Feed::subCallback(char *val, uint16_t len)
209
217
210
218
void AdafruitIO_Feed::_init ()
211
219
{
220
+ _sub = 0 ;
221
+ _pub = 0 ;
222
+ _get_pub = 0 ;
223
+ _dataCallback = 0 ;
212
224
213
225
// dynamically allocate memory for mqtt topic and REST URLs
214
- _topic = (char *) malloc (sizeof (char ) * (strlen (_io-> _username ) + strlen (name) + 8 )); // 8 extra chars for /f/, /csv & null termination
215
- _get_topic = (char *) malloc (sizeof (char ) * (strlen (_io-> _username ) + strlen (name) + 12 )); // 12 extra chars for /f/, /csv/get & null termination
216
- _feed_url = (char *) malloc (sizeof (char ) * (strlen (_io-> _username ) + strlen (name) + 16 )); // 16 extra for api path & null term
217
- _create_url = (char *) malloc (sizeof (char ) * (strlen (_io-> _username ) + 15 )); // 15 extra for api path & null term
226
+ _topic = (char *) malloc (sizeof (char ) * (strlen (owner ) + strlen (name) + 8 )); // 8 extra chars for /f/, /csv & null termination
227
+ _get_topic = (char *) malloc (sizeof (char ) * (strlen (owner ) + strlen (name) + 12 )); // 12 extra chars for /f/, /csv/get & null termination
228
+ _feed_url = (char *) malloc (sizeof (char ) * (strlen (owner ) + strlen (name) + 16 )); // 16 extra for api path & null term
229
+ _create_url = (char *) malloc (sizeof (char ) * (strlen (owner ) + 15 )); // 15 extra for api path & null term
218
230
219
231
// init feed data
220
232
data = new AdafruitIO_Data (this );
221
233
222
234
if (_topic && _create_url && _feed_url) {
223
235
224
236
// build topic string
225
- strcpy (_topic, _io-> _username );
237
+ strcpy (_topic, owner );
226
238
strcat (_topic, " /f/" );
227
239
strcat (_topic, name);
228
240
strcat (_topic, " /csv" );
229
241
230
242
// build feed url string
231
243
strcpy (_feed_url, " /api/v2/" );
232
- strcat (_feed_url, _io-> _username );
244
+ strcat (_feed_url, owner );
233
245
strcat (_feed_url, " /feeds/" );
234
246
strcat (_feed_url, name);
235
247
236
248
// build create url string
237
249
strcpy (_create_url, " /api/v2/" );
238
- strcat (_create_url, _io-> _username );
250
+ strcat (_create_url, owner );
239
251
strcat (_create_url, " /feeds" );
240
252
241
253
// build /get topic string
242
- strcpy (_get_topic, _io-> _username );
254
+ strcpy (_get_topic, owner );
243
255
strcat (_get_topic, " /f/" );
244
256
strcat (_get_topic, name);
245
257
strcat (_get_topic, " /csv/get" );
0 commit comments