@@ -18,6 +18,7 @@ AdafruitIO_Feed::AdafruitIO_Feed(AdafruitIO *io, const char *n)
1818 name = n;
1919 _sub = 0 ;
2020 _pub = 0 ;
21+ _dataCallback = 0 ;
2122
2223 _init ();
2324}
@@ -28,6 +29,7 @@ AdafruitIO_Feed::AdafruitIO_Feed(AdafruitIO *io, const __FlashStringHelper *n)
2829 name = (const char *)n;
2930 _sub = 0 ;
3031 _pub = 0 ;
32+ _dataCallback = 0 ;
3133
3234 _init ();
3335}
@@ -40,8 +42,8 @@ AdafruitIO_Feed::~AdafruitIO_Feed()
4042 if (_pub)
4143 delete _pub;
4244
43- if (_data )
44- delete _data ;
45+ if (data )
46+ delete data ;
4547
4648 if (_topic)
4749 free (_topic);
@@ -50,74 +52,74 @@ AdafruitIO_Feed::~AdafruitIO_Feed()
5052void AdafruitIO_Feed::onMessage (AdafruitIODataCallbackType cb)
5153{
5254 _dataCallback = cb;
53- _io->_mqtt ->subscribe (_sub);
54-
55- _sub->setCallback (this , &AdafruitIO_Feed::subCallback);
5655}
5756
5857bool AdafruitIO_Feed::save (char *value, double lat, double lon, double ele)
5958{
60- _data ->setValue (value, lat, lon, ele);
61- return _pub->publish (_data ->toCSV ());
59+ data ->setValue (value, lat, lon, ele);
60+ return _pub->publish (data ->toCSV ());
6261}
6362
6463bool AdafruitIO_Feed::save (bool value, double lat, double lon, double ele)
6564{
66- _data ->setValue (value, lat, lon, ele);
67- return _pub->publish (_data ->toCSV ());
65+ data ->setValue (value, lat, lon, ele);
66+ return _pub->publish (data ->toCSV ());
6867}
6968
7069bool AdafruitIO_Feed::save (String value, double lat, double lon, double ele)
7170{
72- _data ->setValue (value, lat, lon, ele);
73- return _pub->publish (_data ->toCSV ());
71+ data ->setValue (value, lat, lon, ele);
72+ return _pub->publish (data ->toCSV ());
7473}
7574
7675bool AdafruitIO_Feed::save (int value, double lat, double lon, double ele)
7776{
78- _data ->setValue (value, lat, lon, ele);
79- return _pub->publish (_data ->toCSV ());
77+ data ->setValue (value, lat, lon, ele);
78+ return _pub->publish (data ->toCSV ());
8079}
8180
8281bool AdafruitIO_Feed::save (unsigned int value, double lat, double lon, double ele)
8382{
84- _data ->setValue (value, lat, lon, ele);
85- return _pub->publish (_data ->toCSV ());
83+ data ->setValue (value, lat, lon, ele);
84+ return _pub->publish (data ->toCSV ());
8685}
8786
8887bool AdafruitIO_Feed::save (long value, double lat, double lon, double ele)
8988{
90- _data ->setValue (value, lat, lon, ele);
91- return _pub->publish (_data ->toCSV ());
89+ data ->setValue (value, lat, lon, ele);
90+ return _pub->publish (data ->toCSV ());
9291}
9392
9493bool AdafruitIO_Feed::save (unsigned long value, double lat, double lon, double ele)
9594{
96- _data ->setValue (value, lat, lon, ele);
97- return _pub->publish (_data ->toCSV ());
95+ data ->setValue (value, lat, lon, ele);
96+ return _pub->publish (data ->toCSV ());
9897}
9998
10099bool AdafruitIO_Feed::save (float value, double lat, double lon, double ele, int precision)
101100{
102- _data ->setValue (value, lat, lon, ele, precision);
103- return _pub->publish (_data ->toCSV ());
101+ data ->setValue (value, lat, lon, ele, precision);
102+ return _pub->publish (data ->toCSV ());
104103}
105104
106105bool AdafruitIO_Feed::save (double value, double lat, double lon, double ele, int precision)
107106{
108- _data ->setValue (value, lat, lon, ele, precision);
109- return _pub->publish (_data ->toCSV ());
107+ data ->setValue (value, lat, lon, ele, precision);
108+ return _pub->publish (data ->toCSV ());
110109}
111110
112111void AdafruitIO_Feed::setLocation (double lat, double lon, double ele)
113112{
114- _data ->setLocation (lat, lon, ele);
113+ data ->setLocation (lat, lon, ele);
115114}
116115
117116void AdafruitIO_Feed::subCallback (char *val, uint16_t len)
118117{
119- _data->setCSV (val);
120- _dataCallback (_data);
118+ data->setCSV (val);
119+
120+ // call callback with data
121+ if (_dataCallback)
122+ _dataCallback (data);
121123}
122124
123125void AdafruitIO_Feed::_init ()
@@ -127,7 +129,7 @@ void AdafruitIO_Feed::_init()
127129 _topic = (char *) malloc (sizeof (char ) * (strlen (_io->_username ) + strlen (name) + 8 )); // 8 extra chars for /f/, /csv & null termination
128130
129131 // init feed data
130- _data = new AdafruitIO_Data (this );
132+ data = new AdafruitIO_Data (this );
131133
132134 if (_topic) {
133135
@@ -140,14 +142,17 @@ void AdafruitIO_Feed::_init()
140142 // setup subscription
141143 _sub = new Adafruit_MQTT_Subscribe (_io->_mqtt , _topic);
142144 _pub = new Adafruit_MQTT_Publish (_io->_mqtt , _topic);
145+ _io->_mqtt ->subscribe (_sub);
146+
147+ _sub->setCallback (this , &AdafruitIO_Feed::subCallback);
143148
144149 } else {
145150
146151 // malloc failed
147152 _topic = 0 ;
148153 _sub = 0 ;
149154 _pub = 0 ;
150- _data = 0 ;
155+ data = 0 ;
151156
152157 }
153158
0 commit comments