SPSP
Simple publish-subscribe protocol. Connects low power IoT clients to MQTT.
All Classes Files Functions Variables Typedefs Enumerations
espnow_packet.hpp
Go to the documentation of this file.
1 
10 #pragma once
11 
12 #include <cstdint>
13 
14 #include "spsp/local_message.hpp"
15 
16 namespace SPSP::LocalLayers::ESPNOW
17 {
18  static constexpr uint8_t PROTO_VERSION = 1;
19  static constexpr uint8_t PASSWORD_LEN = 32;
20  static constexpr uint8_t NONCE_LEN = 8;
21  static constexpr size_t MAX_PACKET_LENGTH = 250;
22 
23  #pragma pack(push, 1)
24 
29  struct PacketHeader
30  {
31  uint32_t ssid;
32  uint8_t nonce[NONCE_LEN];
33  uint8_t version;
34  };
35 
37  {
39  uint8_t _reserved[3];
40  uint8_t checksum;
41  uint8_t topicLen;
42  uint8_t payloadLen;
43  uint8_t topicAndPayload[];
44  };
45 
46  struct Packet
47  {
48  PacketHeader header;
49  PacketPayload payload;
50  };
51  #pragma pack(pop)
52 
53  // Assert sizes
54  static_assert(sizeof(PacketHeader) == 13);
55  static_assert(sizeof(PacketPayload) == 7);
56  static_assert(sizeof(Packet) == 20);
57 } // namespace SPSP::LocalLayers::ESPNOW
SPSP::LocalLayers::ESPNOW::Packet
Definition: espnow_packet.hpp:46
SPSP::LocalLayers::ESPNOW::PacketHeader
ESP-NOW packet header.
Definition: espnow_packet.hpp:29
SPSP::LocalLayers::ESPNOW::PacketPayload::topicAndPayload
uint8_t topicAndPayload[]
Topic and payload as string (not null terminated)
Definition: espnow_packet.hpp:43
local_message.hpp
Local message classes.
SPSP::LocalLayers::ESPNOW::PacketPayload
Definition: espnow_packet.hpp:36
SPSP::LocalLayers::ESPNOW::PacketPayload::topicLen
uint8_t topicLen
Length of topic.
Definition: espnow_packet.hpp:41
SPSP::LocalLayers::ESPNOW::PacketPayload::checksum
uint8_t checksum
Simple checksum of PacketPayload to validate decrypted packet.
Definition: espnow_packet.hpp:40
SPSP::LocalMessageType
LocalMessageType
Local message types.
Definition: local_message.hpp:22
SPSP::LocalLayers::ESPNOW::PacketHeader::nonce
uint8_t nonce[NONCE_LEN]
Encryption nonce.
Definition: espnow_packet.hpp:32
SPSP::LocalLayers::ESPNOW::PacketPayload::payloadLen
uint8_t payloadLen
Length of payload (data)
Definition: espnow_packet.hpp:42
SPSP::LocalLayers::ESPNOW::PacketPayload::type
LocalMessageType type
Message type.
Definition: espnow_packet.hpp:38
SPSP::LocalLayers::ESPNOW::PacketPayload::_reserved
uint8_t _reserved[3]
Reserved for future use.
Definition: espnow_packet.hpp:39
SPSP::LocalLayers::ESPNOW::PacketHeader::ssid
uint32_t ssid
Service set identifier.
Definition: espnow_packet.hpp:31
SPSP::LocalLayers::ESPNOW::PacketHeader::version
uint8_t version
Current protocol version.
Definition: espnow_packet.hpp:33