mirror of https://github.com/ARMmbed/mbed-os.git
BLE - Devirtualize pal::SigningEventMonitor
The event handler has been extracted out of SigningEventMonitor declaration and SigningEventMonitor instantion requires the implementation and event handler type.pull/9727/head
parent
50de4c8a44
commit
2d007eee42
|
@ -17,55 +17,79 @@
|
|||
#ifndef MBED_BLE_SIGNING_EVENT_MONITOR
|
||||
#define MBED_BLE_SIGNING_EVENT_MONITOR
|
||||
|
||||
#include "ble/common/StaticInterface.h"
|
||||
#include "ble/BLETypes.h"
|
||||
|
||||
namespace ble {
|
||||
namespace pal {
|
||||
|
||||
/**
|
||||
* Implemented by classes that are reacting to signing events.
|
||||
*/
|
||||
template<class Impl>
|
||||
class SigningMonitorEventHandler : public StaticInterface<Impl, SigningMonitorEventHandler> {
|
||||
|
||||
using StaticInterface<Impl, ble::pal::SigningMonitorEventHandler>::impl;
|
||||
|
||||
public:
|
||||
/**
|
||||
* Set new signed write peer counter.
|
||||
*
|
||||
* @param[in] connection connection handle
|
||||
* @param[in] sign_coutner counter received from peer
|
||||
*/
|
||||
void on_signed_write_received(
|
||||
connection_handle_t connection,
|
||||
uint32_t sign_coutner
|
||||
) {
|
||||
impl()->on_signed_write_received_(
|
||||
connection,
|
||||
sign_coutner
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Indicate that signed data was rejected due to verification failure. This could
|
||||
* be due to an invalid CSRK key.
|
||||
*
|
||||
* @param[in] connection connection handle
|
||||
*/
|
||||
void on_signed_write_verification_failure(
|
||||
connection_handle_t connection
|
||||
) {
|
||||
impl()->on_signed_write_verification_failure(connection);
|
||||
}
|
||||
|
||||
/**
|
||||
* Notify a new signed write cmd was executed.
|
||||
*/
|
||||
void on_signed_write() {
|
||||
impl()->on_signed_write_();
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Implemented by classes that need to be notified of signing events.
|
||||
* Notification is done by calling functions in the passed in event handler
|
||||
*/
|
||||
template<class Impl, class EventHandler>
|
||||
class SigningEventMonitor {
|
||||
Impl* impl() {
|
||||
return static_cast<Impl*>(this);
|
||||
}
|
||||
|
||||
public:
|
||||
/**
|
||||
* Implemented by classes that are reacting to signing events.
|
||||
*/
|
||||
class EventHandler {
|
||||
public:
|
||||
/**
|
||||
* Set new signed write peer counter.
|
||||
*
|
||||
* @param[in] connection connection handle
|
||||
* @param[in] sign_coutner counter received from peer
|
||||
*/
|
||||
virtual void on_signed_write_received(
|
||||
connection_handle_t connection,
|
||||
uint32_t sign_coutner
|
||||
) = 0;
|
||||
|
||||
/**
|
||||
* Indicate that signed data was rejected due to verification failure. This could
|
||||
* be due to an invalid CSRK key.
|
||||
*
|
||||
* @param[in] connection connection handle
|
||||
*/
|
||||
virtual void on_signed_write_verification_failure(
|
||||
connection_handle_t connection
|
||||
) = 0;
|
||||
|
||||
/**
|
||||
* Notify a new signed write cmd was executed.
|
||||
*/
|
||||
virtual void on_signed_write() = 0;
|
||||
};
|
||||
|
||||
/**
|
||||
* Register a handler for singing events to be used internally and serviced first.
|
||||
*
|
||||
* @param[in] signing_event_handler Event handler being registered.
|
||||
*/
|
||||
virtual void set_signing_event_handler(EventHandler *signing_event_handler) = 0;
|
||||
void set_signing_event_handler(EventHandler *signing_event_handler)
|
||||
{
|
||||
impl()->set_signing_event_handler_(signing_event_handler);
|
||||
}
|
||||
};
|
||||
|
||||
} // namespace pal
|
||||
|
|
Loading…
Reference in New Issue