EnigmaIOT  0.9.3
Secure sensor and gateway platform based on ESP8266 and ESP32
Comms_hal.h
Go to the documentation of this file.
1 
10 #ifndef _COMMS_HAL_h
11 #define _COMMS_HAL_h
12 
13 #if defined(ARDUINO) && ARDUINO >= 100
14 #include "arduino.h"
15 #else
16 #include "WProgram.h"
17 #endif
18 
22 enum peerType_t {
23  COMM_NODE = 0,
24  COMM_GATEWAY = 1
25 };
26 
27 typedef void (*comms_hal_rcvd_data)(uint8_t* address, uint8_t* data, uint8_t len);
28 typedef void (*comms_hal_sent_data)(uint8_t* address, uint8_t status);
29 
34 public:
35  static const size_t COMMS_HAL_MAX_MESSAGE_LENGTH = 0;
36  static const uint8_t COMMS_HAL_ADDR_LEN = 1;
37 
38 protected:
40  uint8_t channel;
41 
45 
50  virtual void initComms (peerType_t peerType) = 0;
51 
52 
53 public:
60  virtual void begin (uint8_t* gateway, uint8_t channel, peerType_t peerType = COMM_NODE) = 0;
61 
65  virtual void stop () = 0;
66 
74  virtual int32_t send (uint8_t* da, uint8_t* data, int len) = 0;
75 
81 
87 
92  virtual uint8_t getAddressLength () = 0;
93 };
94 
95 #endif
96 
Comms_halClass::onDataRcvd
virtual void onDataRcvd(comms_hal_rcvd_data dataRcvd)=0
Attach a callback function to be run on every received message.
peerType_t
peerType_t
Peer role on communication.
Definition: Comms_hal.h:22
Comms_halClass::onDataSent
virtual void onDataSent(comms_hal_sent_data dataRcvd)=0
Attach a callback function to be run after sending a message to receive its status.
Comms_halClass::begin
virtual void begin(uint8_t *gateway, uint8_t channel, peerType_t peerType=COMM_NODE)=0
Setup communication environment and establish the connection from node to gateway.
Comms_halClass::COMMS_HAL_MAX_MESSAGE_LENGTH
static const size_t COMMS_HAL_MAX_MESSAGE_LENGTH
Maximum message length.
Definition: Comms_hal.h:35
Comms_halClass::sentResult
comms_hal_sent_data sentResult
Pointer to a function to be called to notify last sending status.
Definition: Comms_hal.h:43
Comms_halClass::send
virtual int32_t send(uint8_t *da, uint8_t *data, int len)=0
Sends data to the other peer.
Comms_halClass::getAddressLength
virtual uint8_t getAddressLength()=0
Get address length that a specific communication subsystem uses.
COMM_NODE
@ COMM_NODE
Definition: Comms_hal.h:23
comms_hal_rcvd_data
void(* comms_hal_rcvd_data)(uint8_t *address, uint8_t *data, uint8_t len)
Definition: Comms_hal.h:27
COMM_GATEWAY
@ COMM_GATEWAY
Definition: Comms_hal.h:24
Comms_halClass::dataRcvd
comms_hal_rcvd_data dataRcvd
Pointer to a function to be called on every received message.
Definition: Comms_hal.h:42
data
@ data
Definition: GwOutput_generic.h:23
Comms_halClass::_ownPeerType
peerType_t _ownPeerType
Stores peer type, node or gateway.
Definition: Comms_hal.h:44
Comms_halClass::COMMS_HAL_ADDR_LEN
static const uint8_t COMMS_HAL_ADDR_LEN
Address length.
Definition: Comms_hal.h:36
comms_hal_sent_data
void(* comms_hal_sent_data)(uint8_t *address, uint8_t status)
Definition: Comms_hal.h:28
Comms_halClass::initComms
virtual void initComms(peerType_t peerType)=0
Communication subsistem initialization.
Comms_halClass::gateway
uint8_t gateway[COMMS_HAL_ADDR_LEN]
Gateway address.
Definition: Comms_hal.h:39
Comms_halClass::channel
uint8_t channel
WiFi channel to be used.
Definition: Comms_hal.h:40
status
@ status
Definition: GwOutput_generic.h:25
Comms_halClass
Interface for communication subsystem abstraction layer definition.
Definition: Comms_hal.h:33
Comms_halClass::stop
virtual void stop()=0
Terminates communication and closes all connectrions.