Skip to content

Commit bcffce6

Browse files
committed
make feed data a public property of feed
1 parent 01baaca commit bcffce6

File tree

2 files changed

+35
-28
lines changed

2 files changed

+35
-28
lines changed

AdafruitIO_Feed.cpp

Lines changed: 33 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -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()
5052
void AdafruitIO_Feed::onMessage(AdafruitIODataCallbackType cb)
5153
{
5254
_dataCallback = cb;
53-
_io->_mqtt->subscribe(_sub);
54-
55-
_sub->setCallback(this, &AdafruitIO_Feed::subCallback);
5655
}
5756

5857
bool 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

6463
bool 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

7069
bool 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

7675
bool 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

8281
bool 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

8887
bool 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

9493
bool 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

10099
bool 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

106105
bool 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

112111
void AdafruitIO_Feed::setLocation(double lat, double lon, double ele)
113112
{
114-
_data->setLocation(lat, lon, ele);
113+
data->setLocation(lat, lon, ele);
115114
}
116115

117116
void 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

123125
void 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

AdafruitIO_Feed.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@ class AdafruitIO_Feed {
4444
void subCallback(char *val, uint16_t len);
4545
const char *name;
4646

47+
AdafruitIO_Data *data;
48+
4749
private:
4850
void _init();
4951

0 commit comments

Comments
 (0)