Skip to content

Commit 90d1dfa

Browse files
committed
use std:function for resetPin addReconfigurePinCallback method
1 parent b80169d commit 90d1dfa

File tree

5 files changed

+26
-18
lines changed

5 files changed

+26
-18
lines changed

examples/NetworkConfiguratorDemo/NetworkConfiguratorDemo.ino

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -25,18 +25,18 @@
2525
* by Fabio Centonze
2626
*/
2727

28-
#include <Arduino_ConnectionHandler.h>
29-
#include <GenericConnectionHandler.h>
30-
#include <Arduino_KVStore.h>
31-
#include <NetworkConfigurator.h>
32-
#include <ConfiguratorAgents/agents/BLE/BLEAgent.h>
33-
#include <ConfiguratorAgents/agents/Serial/SerialAgent.h>
28+
#include <Arduino_ConnectionHandler.h>
29+
#include <GenericConnectionHandler.h>
30+
#include <Arduino_KVStore.h>
31+
#include <NetworkConfigurator.h>
32+
#include <ConfiguratorAgents/agents/BLE/BLEAgent.h>
33+
#include <ConfiguratorAgents/agents/Serial/SerialAgent.h>
3434

35-
KVStore kvstore;
36-
BLEAgentClass BLEAgent;
37-
SerialAgentClass SerialAgent;
38-
GenericConnectionHandler conMan;
39-
NetworkConfiguratorClass NetworkConfigurator(conMan);
35+
KVStore kvstore;
36+
BLEAgentClass BLEAgent;
37+
SerialAgentClass SerialAgent;
38+
GenericConnectionHandler conMan;
39+
NetworkConfiguratorClass NetworkConfigurator(conMan);
4040

4141
void setup() {
4242
/* Initialize serial debug port and wait up to 5 seconds for port to open */
@@ -63,6 +63,8 @@ void setup() {
6363
/* Add the interfaces that are enabled for configuring the network*/
6464
NetworkConfigurator.addAgent(BLEAgent);
6565
NetworkConfigurator.addAgent(SerialAgent);
66+
/* Add a custom callback function to be invoked every time the interrupt on reconfiguration pin is fired*/
67+
NetworkConfigurator.addReconfigurePinCallback(onResetPinInterrupt);
6668
/* Start the network configurator */
6769
NetworkConfigurator.begin();
6870

@@ -85,6 +87,11 @@ void loop() {
8587
}
8688
}
8789

90+
void onResetPinInterrupt() {
91+
//Add your custom code here
92+
//This function is called when the reconfiguration pin interrupt is fired
93+
}
94+
8895
void onNetworkConnect() {
8996
Serial.println(">>>> CONNECTED to network");
9097
}

src/NetworkConfigurator.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,7 @@ void NetworkConfiguratorClass::setReconfigurePin(uint32_t pin) {
193193
_resetInput->setPin(pin);
194194
}
195195

196-
void NetworkConfiguratorClass::addReconfigurePinCallback(void (*callback)()) {
196+
void NetworkConfiguratorClass::addReconfigurePinCallback(ResetInput::ResetInputCallback callback) {
197197
_resetInput->setPinChangedCallback(callback);
198198
}
199199

src/NetworkConfigurator.h

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -107,8 +107,7 @@ class NetworkConfiguratorClass {
107107
* interrupt on the reconfiguration pin is fired.
108108
* @param callback Pointer to the callback function.
109109
*/
110-
//TODO add to example
111-
void addReconfigurePinCallback(void (*callback)());//TODO add version with std:function https://github.com/arduino-libraries/ArduinoMqttClient/blob/0a0706262ad56043954b008a7f89adf3b783ec88/src/MqttClient.h#L38
110+
void addReconfigurePinCallback(ResetInput::ResetInputCallback callback);
112111

113112
/**
114113
* @brief Checks if BLE (Bluetooth Low Energy) is enabled.
@@ -125,7 +124,7 @@ class NetworkConfiguratorClass {
125124
/**
126125
* @brief Disconnects the current agent from the peer.
127126
*/
128-
void disconnectAgent();//TODO think about a method for returning the agent and call its disconnect
127+
void disconnectAgent();
129128

130129
/**
131130
* @brief Adds a new configurator agent.

src/Utility/ResetInput/ResetInput.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ bool ResetInput::isEventFired() {
5353
return _fireEvent;
5454
}
5555

56-
void ResetInput::setPinChangedCallback(void (*callback)()) {
56+
void ResetInput::setPinChangedCallback(ResetInputCallback callback) {
5757
_pressedCustomCallback = callback;
5858
}
5959

src/Utility/ResetInput/ResetInput.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,21 +9,23 @@
99
#pragma once
1010

1111
#include "Arduino.h"
12+
#include <functional>
1213

1314
class ResetInput{
1415
public:
16+
typedef std::function<void()> ResetInputCallback;
1517
static ResetInput& getInstance();
1618
// Setup the interrupt pin
1719
void begin();
1820
// Monitor if the event is fired
1921
bool isEventFired();
2022
// Add a custom function to be called when the pin status changes. It must be set before calling the begin method
21-
void setPinChangedCallback(void (*callback)());
23+
void setPinChangedCallback(ResetInputCallback callback);
2224
// Set the pin to be monitored. It must be set before calling the begin method
2325
void setPin(uint32_t pin);
2426
private:
2527
ResetInput();
26-
static inline void (*_pressedCustomCallback)();
28+
static inline ResetInputCallback _pressedCustomCallback;
2729
uint32_t _pin;
2830
static inline volatile bool _pressed;
2931
static inline volatile bool _fireEvent;

0 commit comments

Comments
 (0)