MicroBit as BLE gamepad
Fork of nRF51822 by
Diff: source/nRF5xGap.h
- Revision:
- 396:e5b0385fc6f1
- Parent:
- 388:db85a09c27ef
- Child:
- 405:665704963abb
--- a/source/nRF5xGap.h Tue Jul 21 13:23:45 2015 +0100 +++ b/source/nRF5xGap.h Tue Jul 21 13:23:46 2015 +0100 @@ -29,6 +29,8 @@ #include "ble_radio_notification.h" #include "btle_security.h" +void radioNotificationStaticCallback(bool param); + /**************************************************************************/ /*! \brief @@ -70,9 +72,12 @@ virtual ble_error_t setPreferredConnectionParams(const ConnectionParams_t *params); virtual ble_error_t updateConnectionParams(Handle_t handle, const ConnectionParams_t *params); - virtual void onRadioNotification(RadioNotificationEventCallback_t callback) { - Gap::onRadioNotification(callback); - ble_radio_notification_init(NRF_APP_PRIORITY_HIGH, NRF_RADIO_NOTIFICATION_DISTANCE_800US, radioNotificationCallback); + virtual ble_error_t initRadioNotification(void) { + if (ble_radio_notification_init(NRF_APP_PRIORITY_HIGH, NRF_RADIO_NOTIFICATION_DISTANCE_800US, radioNotificationStaticCallback) == NRF_SUCCESS) { + return BLE_ERROR_NONE; + } + + return BLE_ERROR_UNSPECIFIED; } virtual ble_error_t startRadioScan(const GapScanningParams &scanningParams) { @@ -101,6 +106,16 @@ } private: + /** + * A helper function to process radio-notification events; to be called internally. + * @param param [description] + */ + void processRadioNotificationEvent(bool param) { + radioNotificationCallback.call(param); + } + friend void radioNotificationStaticCallback(bool param); /* allow invocations of processRadioNotificationEvent() */ + +private: uint16_t m_connectionHandle; nRF5xGap() { m_connectionHandle = BLE_CONN_HANDLE_INVALID;