Skip to content

Commit a9dbd35

Browse files
committed
add _internal_measure_cb for service like Quaternion
remove setMeasureCallback
1 parent 843934b commit a9dbd35

File tree

2 files changed

+11
-12
lines changed

2 files changed

+11
-12
lines changed

libraries/BLEAdafruitService/src/services/BLEAdafruitSensor.cpp

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -35,12 +35,7 @@ BLEAdafruitSensor::BLEAdafruitSensor(BLEUuid service_uuid, BLEUuid data_uuid)
3535
_sensor = NULL;
3636
}
3737

38-
void BLEAdafruitSensor::setMeasureCallback(measure_callback_t fp)
39-
{
40-
_measure_cb = fp;
41-
}
42-
43-
err_t BLEAdafruitSensor::begin(int32_t ms)
38+
err_t BLEAdafruitSensor::_begin(int32_t ms)
4439
{
4540
// Invoke base class begin()
4641
VERIFY_STATUS( BLEService::begin() );
@@ -66,13 +61,13 @@ err_t BLEAdafruitSensor::begin(int32_t ms)
6661
err_t BLEAdafruitSensor::begin(measure_callback_t fp, int32_t ms)
6762
{
6863
_measure_cb = fp;
69-
return begin(ms);
64+
return _begin(ms);
7065
}
7166

7267
err_t BLEAdafruitSensor::begin(Adafruit_Sensor* sensor, int32_t ms)
7368
{
7469
_sensor = sensor;
75-
return begin(ms);
70+
return _begin(ms);
7671
}
7772

7873
void BLEAdafruitSensor::setPeriod(int32_t period_ms)
@@ -114,9 +109,12 @@ void BLEAdafruitSensor::_timer_callback(void)
114109
{
115110
len = _measure_cb(buf, sizeof(buf));
116111
len = min(len, sizeof(buf));
117-
}else
112+
}
113+
// Invoke internal measure callback
114+
else
118115
{
119-
return; // nothing to measure
116+
len = _internal_measure_cb(buf, sizeof(buf));
117+
if (len == 0) return; // nothing to measure
120118
}
121119

122120
// Period = 0, compare with old data, only update on changes

libraries/BLEAdafruitService/src/services/BLEAdafruitSensor.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,10 @@ class BLEAdafruitSensor : public BLEService
3434
typedef uint16_t (*measure_callback_t )(uint8_t* buf, uint16_t bufsize);
3535

3636
BLEAdafruitSensor(BLEUuid service_uuid, BLEUuid data_uuid);
37-
virtual err_t begin(int32_t ms);
3837

3938
virtual err_t begin(measure_callback_t fp, int32_t ms = DEFAULT_PERIOD);
4039
virtual err_t begin(Adafruit_Sensor* sensor, int32_t ms = DEFAULT_PERIOD);
4140

42-
void setMeasureCallback(measure_callback_t fp);
4341
void setPeriod(int32_t period_ms);
4442

4543
protected:
@@ -51,9 +49,12 @@ class BLEAdafruitSensor : public BLEService
5149
measure_callback_t _measure_cb;
5250
SoftwareTimer _timer;
5351

52+
err_t _begin(int32_t ms);
5453
void _update_timer(int32_t ms);
5554
void _timer_callback(void);
5655

56+
virtual uint16_t _internal_measure_cb(uint8_t* buf, uint16_t bufsize) { return 0; }
57+
5758
static void sensor_timer_cb(TimerHandle_t xTimer);
5859
static void sensor_period_write_cb(uint16_t conn_hdl, BLECharacteristic* chr, uint8_t* data, uint16_t len);
5960
static void sensor_data_cccd_cb(uint16_t conn_hdl, BLECharacteristic* chr, uint16_t value);

0 commit comments

Comments
 (0)