You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
For to use/retrieve the temperature value from the nrf51822 SoC, it would be nice to have a:
public void requestTemperature() { this->_device->requestTemperature(); }
method for the BLEPeripheral class.
For to get notified with the value, we can create a new derived MyBLE class overloading BLEPeripheral virtual method:
@bojh it would be great if there was a more generic API, the nRF8001 and nRf51822 both have temp. sensors on board, but future supported boards might not.
What do you think of?
enum BLEDeviceRequest {
// ..
BLEDeviceRequest Address,
BLEDeviceRequest BatteryLevel,
BLEDeviceRequest Temperature
};
bool BLEPeripheral::request(BLEDeviceRequest request); // returns true on success, false on failure (no sensors)
void setResposneHandler(BLEDeviceRequest request, BLEDeviceResponseHandler response);
Maybe, it's getting too fancy ..
Note: Right now, if you extend BLEPeripheral you can already override,
@sandeepmistry The question is cerainly justified and I allready had it realized, as you have proposed by a derived BLEPeripheral class.
On the other hand, I expect also following chipsets (..nrf52x) will also support such universal functions.
From my point of view the fancy way seems a little bit more intuitive, ... but BLEDeviceResponseHandler has to be defined and we have different response value types :-)
... but surely depends a little bit on taste.
@sandeepmistry OK the union would al be fine, but I we than have to use a discriminator value (may be BLEDeviceRequest ) to know the callback reason.
Your ideas to the API is OK for me, because the hardware does no change so often for real projects. From compatibility view, I think it's OK to have a individual HW dependend constructor.
Activity
sandeepmistry commentedon Nov 7, 2015
@bojh it would be great if there was a more generic API, the nRF8001 and nRf51822 both have temp. sensors on board, but future supported boards might not.
What do you think of?
Maybe, it's getting too fancy ..
Note: Right now, if you extend
BLEPeripheral
you can already override,and have acces to the following
BLEDevices
API's:prjh commentedon Nov 8, 2015
@sandeepmistry The question is cerainly justified and I allready had it realized, as you have proposed by a derived BLEPeripheral class.
On the other hand, I expect also following chipsets (..nrf52x) will also support such universal functions.
From my point of view the fancy way seems a little bit more intuitive, ... but BLEDeviceResponseHandler has to be defined and we have different response value types :-)
... but surely depends a little bit on taste.
sandeepmistry commentedon Nov 15, 2015
@prjh we could make it a union?
Slightly unrelated, I've been also thinking about making a breaking change to the API, to expose
BLEDevice
, changing:to something like:
It would make sketches less portable (require one line change), but would support other slave boards like the nRF8001.
sandeepmistry commentedon Jan 3, 2016
@bojh @prjh anything else to discuss on this?
prjh commentedon Jan 4, 2016
@sandeepmistry OK the union would al be fine, but I we than have to use a discriminator value (may be BLEDeviceRequest ) to know the callback reason.
Your ideas to the API is OK for me, because the hardware does no change so often for real projects. From compatibility view, I think it's OK to have a individual HW dependend constructor.
bojh commentedon Jan 4, 2016
OK for me
sandeepmistry commentedon Jan 9, 2016
Re-opening, as this is not implemented yet :)
bojh commentedon Dec 20, 2016
I will provide an minimal, incremental solution as PR, making the BLEDevice::requestTemperature() function accessible from the BLEPeripheral class.