Rename MySigningDriver* to MySigning*
This commit is contained in:
@@ -15,12 +15,12 @@
|
||||
// which might vary, especially in networks with many hops. 5s ought to be enough for anyone.
|
||||
#define MY_VERIFICATION_TIMEOUT_MS 5000
|
||||
|
||||
// MySigningDriverAtsha204 default setting
|
||||
// MySigningAtsha204 default setting
|
||||
#define MY_ATSHA204_PIN 17 // A3 - pin where ATSHA204 is attached
|
||||
|
||||
// MySigningDriverAtsha204Soft default settings
|
||||
// MySigningAtsha204Soft default settings
|
||||
#define MY_RANDOMSEED_PIN 7 // A7 - Pin used for random generation (do not connect anything to this)
|
||||
// Key to use for HMAC calculation in MySigningDriverAtsha204Soft (32 bytes)
|
||||
// Key to use for HMAC calculation in MySigningAtsha204Soft (32 bytes)
|
||||
#define MY_HMAC_KEY 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
|
||||
|
||||
|
||||
@@ -37,7 +37,7 @@ static inline bool isValidDistance( const uint8_t distance ) {
|
||||
return distance != DISTANCE_INVALID;
|
||||
}
|
||||
|
||||
MySensor::MySensor(MyTransport &_radio, MySigningDriver &_signer)
|
||||
MySensor::MySensor(MyTransport &_radio, MySigning &_signer)
|
||||
:
|
||||
radio(_radio),
|
||||
signer(_signer)
|
||||
|
||||
@@ -16,8 +16,8 @@
|
||||
#include "MyTransport.h"
|
||||
#include "MyTransportNRF24.h"
|
||||
#include "MyParser.h"
|
||||
#include "MySigningDriver.h"
|
||||
#include "MySigningDriverNone.h"
|
||||
#include "MySigning.h"
|
||||
#include "MySigningNone.h"
|
||||
#include "MyConfig.h"
|
||||
#include "MyMessage.h"
|
||||
#include <stddef.h>
|
||||
@@ -81,7 +81,7 @@ class MySensor
|
||||
* Creates a new instance of Sensor class.
|
||||
*
|
||||
*/
|
||||
MySensor(MyTransport &radio =*new MyTransportNRF24(), MySigningDriver &signer=*new MySigningDriverNone());
|
||||
MySensor(MyTransport &radio =*new MyTransportNRF24(), MySigning &signer=*new MySigningNone());
|
||||
|
||||
/**
|
||||
* Begin operation of the MySensors library
|
||||
@@ -250,7 +250,7 @@ class MySensor
|
||||
MyMessage msgSign; // Buffer for message to sign.
|
||||
|
||||
MyTransport& radio;
|
||||
MySigningDriver& signer;
|
||||
MySigning& signer;
|
||||
|
||||
void setupRepeaterMode();
|
||||
boolean sendWrite(uint8_t dest, MyMessage &message);
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
#include "MySigning.h"
|
||||
|
||||
MySigning::MySigning(bool requestSignatures) : _requestSignatures(requestSignatures) {
|
||||
}
|
||||
|
||||
|
||||
bool MySigning::requestSignatures() {
|
||||
return _requestSignatures;
|
||||
}
|
||||
@@ -4,20 +4,20 @@
|
||||
|
||||
Created by Patrick "Anticimex" Fallberg <patrick@fallberg.net>
|
||||
*/
|
||||
#ifndef MySigningDriver_h
|
||||
#define MySigningDriver_h
|
||||
#ifndef MySigning_h
|
||||
#define MySigning_h
|
||||
|
||||
#include <stdint.h>
|
||||
#include "MyMessage.h"
|
||||
|
||||
class MySigningDriver
|
||||
class MySigning
|
||||
{
|
||||
public:
|
||||
// MySigningDriver constructor.
|
||||
// MySigning constructor.
|
||||
// Different parameters would be needed depending on signing backend (e.g. pins connected etc.).
|
||||
// Keeping these parameters as #define's in MyConfig to streamline the driver interface.
|
||||
// @param requestSignatures Set this to true if you want destination node to sign all messages sent to this node. Default is not to require signing.
|
||||
MySigningDriver(bool requestSignatures=false);
|
||||
MySigning(bool requestSignatures=false);
|
||||
|
||||
// Returns the current requestSignature setting
|
||||
bool requestSignatures();
|
||||
+10
-10
@@ -4,8 +4,8 @@
|
||||
|
||||
Created by Patrick "Anticimex" Fallberg <patrick@fallberg.net>
|
||||
*/
|
||||
#include "MySigningDriver.h"
|
||||
#include "MySigningDriverAtsha204.h"
|
||||
#include "MySigning.h"
|
||||
#include "MySigningAtsha204.h"
|
||||
|
||||
// Uncomment this to get some useful serial debug info (Serial.print and Serial.println expected)
|
||||
//#define DEBUG_ATSHA_SIGNING
|
||||
@@ -36,9 +36,9 @@ static void DEBUG_ATSHA_PRINTBUF(char* str, uint8_t* buf, uint8_t sz)
|
||||
#endif
|
||||
|
||||
|
||||
MySigningDriverAtsha204::MySigningDriverAtsha204(bool requestSignatures, uint8_t atshaPin)
|
||||
MySigningAtsha204::MySigningAtsha204(bool requestSignatures, uint8_t atshaPin)
|
||||
:
|
||||
MySigningDriver(requestSignatures),
|
||||
MySigning(requestSignatures),
|
||||
atsha204(atshaPin),
|
||||
verification_ongoing(false)
|
||||
{
|
||||
@@ -46,7 +46,7 @@ MySigningDriverAtsha204::MySigningDriverAtsha204(bool requestSignatures, uint8_t
|
||||
memset(current_nonce, 0xAA, sizeof(current_nonce));
|
||||
}
|
||||
|
||||
bool MySigningDriverAtsha204::getNonce(MyMessage &msg) {
|
||||
bool MySigningAtsha204::getNonce(MyMessage &msg) {
|
||||
// Wake device before starting operations
|
||||
if (atsha204.sha204c_wakeup(rx_buffer) != SHA204_SUCCESS) {
|
||||
DEBUG_ATSHA_PRINTLN("Failed to wake device");
|
||||
@@ -78,7 +78,7 @@ bool MySigningDriverAtsha204::getNonce(MyMessage &msg) {
|
||||
return true;
|
||||
}
|
||||
|
||||
bool MySigningDriverAtsha204::checkTimer() {
|
||||
bool MySigningAtsha204::checkTimer() {
|
||||
if (verification_ongoing) {
|
||||
if (millis() < timestamp || millis() > timestamp + MY_VERIFICATION_TIMEOUT_MS) {
|
||||
DEBUG_ATSHA_PRINTLN("Verification timeout");
|
||||
@@ -91,7 +91,7 @@ bool MySigningDriverAtsha204::checkTimer() {
|
||||
return true;
|
||||
}
|
||||
|
||||
bool MySigningDriverAtsha204::putNonce(MyMessage &msg) {
|
||||
bool MySigningAtsha204::putNonce(MyMessage &msg) {
|
||||
if (mGetLength(msg) != MAX_PAYLOAD) {
|
||||
DEBUG_ATSHA_PRINTLN("Incoming nonce with incorrect size");
|
||||
return false; // We require as big nonce as possible
|
||||
@@ -106,7 +106,7 @@ bool MySigningDriverAtsha204::putNonce(MyMessage &msg) {
|
||||
return true;
|
||||
}
|
||||
|
||||
bool MySigningDriverAtsha204::signMsg(MyMessage &msg) {
|
||||
bool MySigningAtsha204::signMsg(MyMessage &msg) {
|
||||
// If we cannot fit any signature in the message, refuse to sign it
|
||||
if (mGetLength(msg) > MAX_PAYLOAD-2) {
|
||||
DEBUG_ATSHA_PRINTLN("Cannot fit any signature to this message");
|
||||
@@ -128,7 +128,7 @@ bool MySigningDriverAtsha204::signMsg(MyMessage &msg) {
|
||||
return true;
|
||||
}
|
||||
|
||||
bool MySigningDriverAtsha204::verifyMsg(MyMessage &msg) {
|
||||
bool MySigningAtsha204::verifyMsg(MyMessage &msg) {
|
||||
if (!verification_ongoing) {
|
||||
DEBUG_ATSHA_PRINTLN("No active verification session");
|
||||
return false;
|
||||
@@ -166,7 +166,7 @@ bool MySigningDriverAtsha204::verifyMsg(MyMessage &msg) {
|
||||
}
|
||||
|
||||
// Helper to calculate signature of msg (returned in rx_buffer[SHA204_BUFFER_POS_DATA])
|
||||
bool MySigningDriverAtsha204::calculateSignature(MyMessage &msg) {
|
||||
bool MySigningAtsha204::calculateSignature(MyMessage &msg) {
|
||||
memset(temp_message, 0, 32);
|
||||
memcpy(temp_message, (uint8_t*)&msg.data[1-HEADER_SIZE], MAX_MESSAGE_LENGTH-1-(MAX_PAYLOAD-mGetLength(msg)));
|
||||
|
||||
+5
-5
@@ -4,11 +4,11 @@
|
||||
|
||||
Created by Patrick "Anticimex" Fallberg <patrick@fallberg.net>
|
||||
*/
|
||||
#ifndef MySigningDriverAtsha204_h
|
||||
#define MySigningDriverAtsha204_h
|
||||
#ifndef MySigningAtsha204_h
|
||||
#define MySigningAtsha204_h
|
||||
|
||||
#include "MyConfig.h"
|
||||
#include "MySigningDriver.h"
|
||||
#include "MySigning.h"
|
||||
#include "utility/ATSHA204.h"
|
||||
#include <stdint.h>
|
||||
|
||||
@@ -17,10 +17,10 @@
|
||||
// The ATSHA204 is capable of generating proper random numbers for nonce
|
||||
// and can calculate HMAC-SHA256 signatures. This is enterprise-
|
||||
// level of security and ought to implement the signing needs for anybody.
|
||||
class MySigningDriverAtsha204 : public MySigningDriver
|
||||
class MySigningAtsha204 : public MySigning
|
||||
{
|
||||
public:
|
||||
MySigningDriverAtsha204(bool requestSignatures=true, uint8_t atshaPin = MY_ATSHA204_PIN);
|
||||
MySigningAtsha204(bool requestSignatures=true, uint8_t atshaPin = MY_ATSHA204_PIN);
|
||||
bool getNonce(MyMessage &msg);
|
||||
bool checkTimer(void);
|
||||
bool putNonce(MyMessage &msg);
|
||||
+10
-10
@@ -8,8 +8,8 @@
|
||||
Created by Patrick "Anticimex" Fallberg <patrick@fallberg.net>
|
||||
*/
|
||||
#include "MyConfig.h"
|
||||
#include "MySigningDriver.h"
|
||||
#include "MySigningDriverAtsha204Soft.h"
|
||||
#include "MySigning.h"
|
||||
#include "MySigningAtsha204Soft.h"
|
||||
#include "utility/sha256.h"
|
||||
|
||||
// Uncomment this to get some useful serial debug info (Serial.print and Serial.println expected)
|
||||
@@ -40,9 +40,9 @@ static void DEBUG_ATSHASOFT_PRINTBUF(char* str, uint8_t* buf, uint8_t sz)
|
||||
#define DEBUG_ATSHASOFT_PRINTBUF(str, buf, sz)
|
||||
#endif
|
||||
|
||||
MySigningDriverAtsha204Soft::MySigningDriverAtsha204Soft(bool requestSignatures, uint8_t randomseedPin)
|
||||
MySigningAtsha204Soft::MySigningAtsha204Soft(bool requestSignatures, uint8_t randomseedPin)
|
||||
:
|
||||
MySigningDriver(requestSignatures),
|
||||
MySigning(requestSignatures),
|
||||
rndPin(randomseedPin),
|
||||
hmacKey({MY_HMAC_KEY}),
|
||||
verification_ongoing(false),
|
||||
@@ -53,7 +53,7 @@ MySigningDriverAtsha204Soft::MySigningDriverAtsha204Soft(bool requestSignatures,
|
||||
memset(current_nonce, 0xAA, sizeof(current_nonce));
|
||||
}
|
||||
|
||||
bool MySigningDriverAtsha204Soft::getNonce(MyMessage &msg) {
|
||||
bool MySigningAtsha204Soft::getNonce(MyMessage &msg) {
|
||||
// Set randomseed
|
||||
randomSeed(analogRead(rndPin));
|
||||
for (int i = 0; i < MAX_PAYLOAD; i++)
|
||||
@@ -73,7 +73,7 @@ bool MySigningDriverAtsha204Soft::getNonce(MyMessage &msg) {
|
||||
return true;
|
||||
}
|
||||
|
||||
bool MySigningDriverAtsha204Soft::checkTimer() {
|
||||
bool MySigningAtsha204Soft::checkTimer() {
|
||||
if (verification_ongoing) {
|
||||
if (millis() < timestamp || millis() > timestamp + MY_VERIFICATION_TIMEOUT_MS) {
|
||||
DEBUG_ATSHASOFT_PRINTLN("Verification timeout");
|
||||
@@ -86,7 +86,7 @@ bool MySigningDriverAtsha204Soft::checkTimer() {
|
||||
return true;
|
||||
}
|
||||
|
||||
bool MySigningDriverAtsha204Soft::putNonce(MyMessage &msg) {
|
||||
bool MySigningAtsha204Soft::putNonce(MyMessage &msg) {
|
||||
if (mGetLength(msg) != MAX_PAYLOAD) {
|
||||
DEBUG_ATSHASOFT_PRINTLN("Incoming nonce with incorrect size");
|
||||
return false; // We require as big nonce as possible
|
||||
@@ -101,7 +101,7 @@ bool MySigningDriverAtsha204Soft::putNonce(MyMessage &msg) {
|
||||
return true;
|
||||
}
|
||||
|
||||
bool MySigningDriverAtsha204Soft::signMsg(MyMessage &msg) {
|
||||
bool MySigningAtsha204Soft::signMsg(MyMessage &msg) {
|
||||
// If we cannot fit any signature in the message, refuse to sign it
|
||||
if (mGetLength(msg) > MAX_PAYLOAD-2) {
|
||||
DEBUG_ATSHASOFT_PRINTLN("Cannot fit any signature to this message");
|
||||
@@ -123,7 +123,7 @@ bool MySigningDriverAtsha204Soft::signMsg(MyMessage &msg) {
|
||||
return true;
|
||||
}
|
||||
|
||||
bool MySigningDriverAtsha204Soft::verifyMsg(MyMessage &msg) {
|
||||
bool MySigningAtsha204Soft::verifyMsg(MyMessage &msg) {
|
||||
if (!verification_ongoing) {
|
||||
DEBUG_ATSHASOFT_PRINTLN("No active verification session");
|
||||
return false;
|
||||
@@ -161,7 +161,7 @@ bool MySigningDriverAtsha204Soft::verifyMsg(MyMessage &msg) {
|
||||
}
|
||||
|
||||
// Helper to calculate signature of msg (returned in rx_buffer[SHA204_BUFFER_POS_DATA])
|
||||
bool MySigningDriverAtsha204Soft::calculateSignature(MyMessage &msg) {
|
||||
bool MySigningAtsha204Soft::calculateSignature(MyMessage &msg) {
|
||||
memset(temp_message, 0, 32);
|
||||
memcpy(temp_message, (uint8_t*)&msg.data[1-HEADER_SIZE], MAX_MESSAGE_LENGTH-1-(MAX_PAYLOAD-mGetLength(msg)));
|
||||
|
||||
+5
-5
@@ -7,11 +7,11 @@
|
||||
|
||||
Created by Patrick "Anticimex" Fallberg <patrick@fallberg.net>
|
||||
*/
|
||||
#ifndef MySigningDriverHmac256Soft_h
|
||||
#define MySigningDriverHmac256Soft_h
|
||||
#ifndef MySigningHmac256Soft_h
|
||||
#define MySigningHmac256Soft_h
|
||||
|
||||
#include "MyConfig.h"
|
||||
#include "MySigningDriver.h"
|
||||
#include "MySigning.h"
|
||||
#include "utility/ATSHA204.h"
|
||||
#include "utility/sha256.h"
|
||||
#include <stdint.h>
|
||||
@@ -25,10 +25,10 @@
|
||||
// is weaker though. Random numbers are generated using the Arduino library and seed
|
||||
// is sampled from an analog pin. This pin should unconnected in the hardware.
|
||||
// The pin is selected using MY_RANDOMSEED_PIN in MyConfig.h.
|
||||
class MySigningDriverAtsha204Soft : public MySigningDriver
|
||||
class MySigningAtsha204Soft : public MySigning
|
||||
{
|
||||
public:
|
||||
MySigningDriverAtsha204Soft(bool requestSignatures=true, uint8_t randomseedPin = MY_RANDOMSEED_PIN);
|
||||
MySigningAtsha204Soft(bool requestSignatures=true, uint8_t randomseedPin = MY_RANDOMSEED_PIN);
|
||||
bool getNonce(MyMessage &msg);
|
||||
bool checkTimer(void);
|
||||
bool putNonce(MyMessage &msg);
|
||||
@@ -1,9 +0,0 @@
|
||||
#include "MySigningDriver.h"
|
||||
|
||||
MySigningDriver::MySigningDriver(bool requestSignatures) : _requestSignatures(requestSignatures) {
|
||||
}
|
||||
|
||||
|
||||
bool MySigningDriver::requestSignatures() {
|
||||
return _requestSignatures;
|
||||
}
|
||||
@@ -3,8 +3,8 @@
|
||||
|
||||
Created by Patrick "Anticimex" Fallberg <patrick@fallberg.net>
|
||||
*/
|
||||
#include "MySigningDriver.h"
|
||||
#include "MySigningDriverNone.h"
|
||||
#include "MySigning.h"
|
||||
#include "MySigningNone.h"
|
||||
|
||||
// Uncomment this to get some useful serial debug info (Serial.print and Serial.println expected)
|
||||
//#define DEBUG_NONE_SIGNING
|
||||
@@ -34,22 +34,22 @@ static void DEBUG_NONE_PRINTBUF(char* str, uint8_t* buf, uint8_t sz)
|
||||
#define DEBUG_NONE_PRINTBUF(str, buf, sz)
|
||||
#endif
|
||||
|
||||
MySigningDriverNone::MySigningDriverNone() : MySigningDriver() {
|
||||
MySigningNone::MySigningNone() : MySigning() {
|
||||
}
|
||||
|
||||
bool MySigningDriverNone::getNonce(MyMessage &msg) {
|
||||
bool MySigningNone::getNonce(MyMessage &msg) {
|
||||
return true;
|
||||
}
|
||||
|
||||
bool MySigningDriverNone::checkTimer() {
|
||||
bool MySigningNone::checkTimer() {
|
||||
return true;
|
||||
}
|
||||
|
||||
bool MySigningDriverNone::putNonce(MyMessage &msg) {
|
||||
bool MySigningNone::putNonce(MyMessage &msg) {
|
||||
return true;
|
||||
}
|
||||
|
||||
bool MySigningDriverNone::signMsg(MyMessage &msg) {
|
||||
bool MySigningNone::signMsg(MyMessage &msg) {
|
||||
// If we cannot fit any signature in the message, refuse to sign it
|
||||
if (mGetLength(msg) > MAX_PAYLOAD-2) {
|
||||
DEBUG_NONE_PRINTLN("Cannot fit any signature to this message");
|
||||
@@ -60,7 +60,7 @@ bool MySigningDriverNone::signMsg(MyMessage &msg) {
|
||||
return true;
|
||||
}
|
||||
|
||||
bool MySigningDriverNone::verifyMsg(MyMessage &msg) {
|
||||
bool MySigningNone::verifyMsg(MyMessage &msg) {
|
||||
if (msg.data[mGetLength(msg)] != SIGNING_IDENTIFIER)
|
||||
return false;
|
||||
else
|
||||
@@ -3,11 +3,11 @@
|
||||
|
||||
Created by Patrick "Anticimex" Fallberg <patrick@fallberg.net>
|
||||
*/
|
||||
#ifndef MySigningDriverNone_h
|
||||
#define MySigningDriverNone_h
|
||||
#ifndef MySigningNone_h
|
||||
#define MySigningNone_h
|
||||
|
||||
#include "MyConfig.h"
|
||||
#include "MySigningDriver.h"
|
||||
#include "MySigning.h"
|
||||
#include <stdint.h>
|
||||
|
||||
#define SIGNING_IDENTIFIER (0)
|
||||
@@ -17,10 +17,10 @@
|
||||
// It does check SIGNING_IDENTIFIER byte to avoid illegal mixing of signing back-ends in
|
||||
// the network (as seen by this node) and it does verify proper execution order on the API.
|
||||
// The "none" driver rejects all other back-ends.
|
||||
class MySigningDriverNone : public MySigningDriver
|
||||
class MySigningNone : public MySigning
|
||||
{
|
||||
public:
|
||||
MySigningDriverNone();
|
||||
MySigningNone();
|
||||
bool getNonce(MyMessage &msg);
|
||||
bool checkTimer(void);
|
||||
bool putNonce(MyMessage &msg);
|
||||
@@ -43,7 +43,7 @@
|
||||
#include <DigitalIO.h> // This include can be removed when using UIPEthernet module
|
||||
#include <SPI.h>
|
||||
|
||||
#include <MySigningDriverNone.h>
|
||||
#include <MySigningNone.h>
|
||||
#include <MyTransportNRF24.h>
|
||||
#include <MyParserSerial.h>
|
||||
#include <MySensor.h>
|
||||
@@ -74,7 +74,7 @@
|
||||
// NRFRF24L01 radio driver (set low transmit power by default)
|
||||
MyTransportNRF24 radio(RF24_CE_PIN, RF24_CS_PIN, RF24_PA_LEVEL_GW);
|
||||
// Message signing driver (none default)
|
||||
MySigningDriverNone signer;
|
||||
MySigningNone signer;
|
||||
// Construct MySensors library
|
||||
MySensor gw(radio, signer);
|
||||
|
||||
|
||||
@@ -56,7 +56,7 @@ http://forum.mysensors.org/topic/303/mqtt-broker-gateway
|
||||
|
||||
*/
|
||||
|
||||
#include <MySigningDriverNone.h>
|
||||
#include <MySigningNone.h>
|
||||
#include <MyTransportNRF24.h>
|
||||
#include <SPI.h>
|
||||
#include <MySensor.h>
|
||||
@@ -94,7 +94,7 @@ uint8_t TCP_MAC[] = { 0x02, 0xDE, 0xAD, 0x00, 0x00, 0x42 }; // Mac-address - You
|
||||
// NRFRF24L01 radio driver (set low transmit power by default)
|
||||
MyTransportNRF24 radio(RF24_CE_PIN, RF24_CS_PIN, RF24_PA_LEVEL_GW);
|
||||
// Message signing driver (none default)
|
||||
MySigningDriverNone signer;
|
||||
MySigningNone signer;
|
||||
// Construct MySensors library
|
||||
MySensor gw(radio, signer);
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
// Example sketch showing how to securely control locks.
|
||||
// This example will remember lock state even after power failure.
|
||||
|
||||
#include <MySigningDriverAtsha204Soft.h>
|
||||
#include <MySigningAtsha204Soft.h>
|
||||
#include <MyTransportNRF24.h>
|
||||
#include <MySensor.h>
|
||||
#include <SPI.h>
|
||||
@@ -12,7 +12,7 @@
|
||||
#define LOCK_UNLOCK 0 // GPIO value to write to unlock attached lock
|
||||
|
||||
MyTransportNRF24 radio; // NRFRF24L01 radio driver
|
||||
MySigningDriverAtsha204Soft signer; // Message signing driver
|
||||
MySigningAtsha204Soft signer; // Message signing driver
|
||||
MySensor gw(radio, signer);
|
||||
|
||||
void setup()
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
|
||||
#define NO_PORTB_PINCHANGES
|
||||
|
||||
#include <MySigningDriverNone.h>
|
||||
#include <MySigningNone.h>
|
||||
#include <MyTransportNRF24.h>
|
||||
#include <SPI.h>
|
||||
#include <MyParserSerial.h>
|
||||
@@ -43,7 +43,7 @@
|
||||
// NRFRF24L01 radio driver (set low transmit power by default)
|
||||
MyTransportNRF24 radio(RF24_CE_PIN, RF24_CS_PIN, RF24_PA_LEVEL_GW);
|
||||
// Message signing driver (none default)
|
||||
MySigningDriverNone signer;
|
||||
MySigningNone signer;
|
||||
// Construct MySensors library
|
||||
MySensor gw(radio, signer);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user