Skip to content

Commit fba4ac1

Browse files
committed
- Make most type definitions public instead of protected, to facilitate use in composition.
- Call ResponseTransmittedHook after every response transmission attempt, instead of after every successful response transmission attempt. - Improve documentation. - Finalize README.md. - Update keywords.txt.
1 parent 0516b30 commit fba4ac1

File tree

11 files changed

+591
-81
lines changed

11 files changed

+591
-81
lines changed

libraries/ESP8266WiFiMesh/README.md

Lines changed: 324 additions & 31 deletions
Large diffs are not rendered by default.

libraries/ESP8266WiFiMesh/examples/HelloEspnow/HelloEspnow.ino

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -205,22 +205,24 @@ bool exampleTransmissionOutcomesUpdateHook(MeshBackendBase &meshInstance) {
205205

206206
/**
207207
Once passed to the setResponseTransmittedHook method of the ESP-NOW backend,
208-
this function will be called after each successful ESP-NOW response transmission, just before the response is removed from the waiting list.
209-
If a particular response is not sent, there will be no function call for it.
208+
this function will be called after each attempted ESP-NOW response transmission.
209+
In case of a successful response transmission, this happens just before the response is removed from the waiting list.
210210
Only the hook of the EspnowMeshBackend instance that is getEspnowRequestManager() will be called.
211211
212+
@param transmissionSuccessful True if the response was transmitted successfully. False otherwise.
212213
@param response The sent response.
213214
@param recipientMac The MAC address the response was sent to.
214215
@param responseIndex The index of the response in the waiting list.
215216
@param meshInstance The EspnowMeshBackend instance that called the function.
216217
217218
@return True if the response transmission process should continue with the next response in the waiting list.
218-
False if the response transmission process should stop after removing the just sent response from the waiting list.
219+
False if the response transmission process should stop once processing of the just sent response is complete.
219220
*/
220-
bool exampleResponseTransmittedHook(const String &response, const uint8_t *recipientMac, uint32_t responseIndex, EspnowMeshBackend &meshInstance) {
221+
bool exampleResponseTransmittedHook(bool transmissionSuccessful, const String &response, const uint8_t *recipientMac, uint32_t responseIndex, EspnowMeshBackend &meshInstance) {
221222
// Currently this is exactly the same as the default hook, but you can modify it to alter the behaviour of sendEspnowResponses.
222223

223-
(void)response; // This is useful to remove a "unused parameter" compiler warning. Does nothing else.
224+
(void)transmissionSuccessful; // This is useful to remove a "unused parameter" compiler warning. Does nothing else.
225+
(void)response;
224226
(void)recipientMac;
225227
(void)responseIndex;
226228
(void)meshInstance;
@@ -255,7 +257,7 @@ void setup() {
255257
EspnowMeshBackend::setEspnowEncryptionKok(espnowEncryptionKok);
256258
espnowNode.setEspnowEncryptedConnectionKey(espnowEncryptedConnectionKey);
257259

258-
// Makes it possible to find the node through scans, and also makes it possible to recover from an encrypted connection where only the other node is encrypted.
260+
// Makes it possible to find the node through scans, makes it possible to recover from an encrypted connection where only the other node is encrypted, and also makes it possible to receive broadcast transmissions.
259261
// Note that only one AP can be active at a time in total, and this will always be the one which was last activated.
260262
// Thus the AP is shared by all backends.
261263
espnowNode.activateAP();

libraries/ESP8266WiFiMesh/examples/HelloMesh/HelloMesh.ino

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@
33
Once 28 seconds have passed, the node that has the highest AP MAC will start broadcasting benchmark messages, which will allow you to see how many messages are lost at the other nodes.
44
If you have an onboard LED on your ESP8266 it is recommended that you change the useLED variable below to true.
55
That way you will get instant confirmation of the mesh communication without checking the Serial Monitor.
6+
7+
If you want to experiment with reducing error rates you can use the mesh method "void setBroadcastReceptionRedundancy(uint8_t redundancy);" (default 2) at the cost of more RAM.
8+
Or "floodingMesh.getEspnowMeshBackend().setBroadcastTransmissionRedundancy(uint8_t redundancy)" (default 1) at the cost of longer transmission times.
69
*/
710

811
#define ESP8266WIFIMESH_DISABLE_COMPATIBILITY // Excludes redundant compatibility code. TODO: Should be used for new code until the compatibility code is removed with release 3.0.0 of the Arduino core.
@@ -133,7 +136,7 @@ void setup() {
133136
Serial.println(F("Setting up mesh node..."));
134137

135138
floodingMesh.begin();
136-
floodingMesh.activateAP();
139+
floodingMesh.activateAP(); // Required to receive messages
137140

138141
uint8_t apMacArray[6] {0};
139142
theOneMac = TypeCast::macToString(WiFi.softAPmacAddress(apMacArray));

libraries/ESP8266WiFiMesh/keywords.txt

Lines changed: 202 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -12,48 +12,96 @@ ESP8266WiFiMesh KEYWORD3
1212
# Datatypes (KEYWORD1)
1313
#######################################
1414

15+
MeshBackendBase KEYWORD1
16+
MeshBackendType KEYWORD1
17+
requestHandlerType KEYWORD1
18+
responseHandlerType KEYWORD1
19+
networkFilterType KEYWORD1
20+
transmissionOutcomesUpdateHookType KEYWORD1
21+
22+
TcpIpMeshBackend KEYWORD1
23+
24+
EspnowMeshBackend KEYWORD1
25+
broadcastFilterType KEYWORD1
26+
ConnectionType KEYWORD1
27+
EncryptedConnectionStatus KEYWORD1
28+
EncryptedConnectionRemovalOutcome KEYWORD1
29+
responseTransmittedHookType KEYWORD1
30+
31+
FloodingMesh KEYWORD1
32+
messageHandlerType KEYWORD1
33+
34+
TransmissionOutcome KEYWORD1
1535
TransmissionStatusType KEYWORD1
1636

37+
NetworkInfoBase KEYWORD1
38+
TcpIpNetworkInfo KEYWORD1
39+
EspnowNetworkInfo KEYWORD1
40+
1741
#######################################
1842
# Methods and Functions (KEYWORD2)
1943
#######################################
2044

21-
connectionQueue KEYWORD2
22-
latestTransmissionOutcomes KEYWORD2
23-
latestTransmissionSuccessful KEYWORD2
45+
# MeshBackendBase
2446
begin KEYWORD2
2547
activateAP KEYWORD2
2648
deactivateAP KEYWORD2
49+
deactivateControlledAP KEYWORD2
2750
restartAP KEYWORD2
2851
getAPController KEYWORD2
2952
isAPController KEYWORD2
3053
setWiFiChannel KEYWORD2
3154
getWiFiChannel KEYWORD2
55+
setSSID KEYWORD2
56+
getSSID KEYWORD2
57+
setSSIDPrefix KEYWORD2
58+
getSSIDPrefix KEYWORD2
59+
setSSIDRoot KEYWORD2
60+
getSSIDRoot KEYWORD2
61+
setSSIDSuffix KEYWORD2
62+
getSSIDSuffix KEYWORD2
3263
setMeshName KEYWORD2
3364
getMeshName KEYWORD2
3465
setNodeID KEYWORD2
3566
getNodeID KEYWORD2
36-
setSSID KEYWORD2
37-
getSSID KEYWORD2
67+
setMeshPassword KEYWORD2
68+
getMeshPassword KEYWORD2
3869
setMessage KEYWORD2
3970
getMessage KEYWORD2
4071
attemptTransmission KEYWORD2
41-
acceptRequests KEYWORD2
42-
setStaticIP KEYWORD2
43-
getStaticIP KEYWORD2
44-
disableStaticIP->KEYWORD2
45-
uint64ToString KEYWORD2
46-
stringToUint64 KEYWORD2
4772
setRequestHandler KEYWORD2
4873
getRequestHandler KEYWORD2
4974
setResponseHandler KEYWORD2
5075
getResponseHandler KEYWORD2
5176
setNetworkFilter KEYWORD2
5277
getNetworkFilter KEYWORD2
78+
setTransmissionOutcomesUpdateHook KEYWORD2
79+
getTransmissionOutcomesUpdateHook KEYWORD2
5380
setScanHidden KEYWORD2
5481
getScanHidden KEYWORD2
5582
setAPHidden KEYWORD2
5683
getAPHidden KEYWORD2
84+
setVerboseModeState KEYWORD2
85+
verboseMode KEYWORD2
86+
verboseModePrint KEYWORD2
87+
setPrintWarnings KEYWORD2
88+
printWarnings KEYWORD2
89+
warningPrint KEYWORD2
90+
getClassType KEYWORD2
91+
printAPInfo KEYWORD2
92+
93+
# TcpIpMeshBackend
94+
connectionQueue KEYWORD2
95+
constConnectionQueue KEYWORD2
96+
latestTransmissionOutcomes KEYWORD2
97+
latestTransmissionSuccessful KEYWORD2
98+
acceptRequests KEYWORD2
99+
getCurrentMessage KEYWORD2
100+
setStaticIP KEYWORD2
101+
getStaticIP KEYWORD2
102+
disableStaticIP->KEYWORD2
103+
setServerPort KEYWORD2
104+
getServerPort KEYWORD2
57105
setMaxAPStations KEYWORD2
58106
getMaxAPStations KEYWORD2
59107
setConnectionAttemptTimeout KEYWORD2
@@ -63,10 +111,152 @@ getStationModeTimeout KEYWORD2
63111
setAPModeTimeout KEYWORD2
64112
getAPModeTimeout KEYWORD2
65113

114+
# EspnowMeshBackend
115+
espnowDelay KEYWORD2
116+
performEspnowMaintenance KEYWORD2
117+
criticalHeapLevel KEYWORD2
118+
setCriticalHeapLevelBuffer KEYWORD2
119+
criticalHeapLevelBuffer KEYWORD2
120+
deactivateEspnow KEYWORD2
121+
attemptAutoEncryptingTransmission KEYWORD2
122+
broadcast KEYWORD2
123+
setBroadcastTransmissionRedundancy KEYWORD2
124+
getBroadcastTransmissionRedundancy KEYWORD2
125+
setEspnowRequestManager KEYWORD2
126+
getEspnowRequestManager KEYWORD2
127+
isEspnowRequestManager KEYWORD2
128+
setLogEntryLifetimeMs KEYWORD2
129+
logEntryLifetimeMs KEYWORD2
130+
setBroadcastResponseTimeoutMs KEYWORD2
131+
broadcastResponseTimeoutMs KEYWORD2
132+
setEspnowEncryptedConnectionKey KEYWORD2
133+
getEspnowEncryptedConnectionKey KEYWORD2
134+
setEspnowEncryptionKok KEYWORD2
135+
getEspnowEncryptionKok KEYWORD2
136+
setEspnowHashKey KEYWORD2
137+
getEspnowHashKey KEYWORD2
138+
setUseEncryptedMessages KEYWORD2
139+
useEncryptedMessages KEYWORD2
140+
setEspnowMessageEncryptionKey KEYWORD2
141+
getEspnowMessageEncryptionKey KEYWORD2
142+
getMaxMessageBytesPerTransmission KEYWORD2
143+
setMaxTransmissionsPerMessage KEYWORD2
144+
getMaxTransmissionsPerMessage KEYWORD2
145+
getMaxMessageLength KEYWORD2
146+
staticVerboseMode KEYWORD2
147+
staticVerboseModePrint KEYWORD2
148+
getScheduledResponseMessage KEYWORD2
149+
getScheduledResponseRecipient KEYWORD2
150+
numberOfScheduledResponses KEYWORD2
151+
clearAllScheduledResponses KEYWORD2
152+
deleteScheduledResponsesByRecipient KEYWORD2
153+
setEspnowTransmissionTimeout KEYWORD2
154+
getEspnowTransmissionTimeout KEYWORD2
155+
setEspnowRetransmissionInterval KEYWORD2
156+
getEspnowRetransmissionInterval KEYWORD2
157+
setEncryptionRequestTimeout KEYWORD2
158+
getEncryptionRequestTimeout KEYWORD2
159+
setAutoEncryptionDuration KEYWORD2
160+
getAutoEncryptionDuration KEYWORD2
161+
setBroadcastFilter KEYWORD2
162+
getBroadcastFilter KEYWORD2
163+
setResponseTransmittedHook KEYWORD2
164+
getResponseTransmittedHook KEYWORD2
165+
getSenderMac KEYWORD2
166+
getSenderAPMac KEYWORD2
167+
receivedEncryptedTransmission KEYWORD2
168+
addUnencryptedConnection KEYWORD2
169+
addEncryptedConnection KEYWORD2
170+
addTemporaryEncryptedConnection KEYWORD2
171+
requestEncryptedConnection KEYWORD2
172+
requestTemporaryEncryptedConnection KEYWORD2
173+
requestFlexibleTemporaryEncryptedConnection KEYWORD2
174+
removeEncryptedConnection KEYWORD2
175+
requestEncryptedConnectionRemoval KEYWORD2
176+
setAcceptsUnverifiedRequests KEYWORD2
177+
acceptsUnverifiedRequests KEYWORD2
178+
setEncryptedConnectionsSoftLimit KEYWORD2
179+
encryptedConnectionsSoftLimit KEYWORD2
180+
numberOfEncryptedConnections KEYWORD2
181+
getEncryptedMac KEYWORD2
182+
serializeUnencryptedConnection KEYWORD2
183+
serializeEncryptedConnection KEYWORD2
184+
serializeEncryptedConnection KEYWORD2
185+
getConnectionInfo KEYWORD2
186+
getTransmissionFailRate KEYWORD2
187+
resetTransmissionFailRate KEYWORD2
188+
189+
# FloodingMesh
190+
floodingMeshDelay KEYWORD2
191+
performMeshMaintenance KEYWORD2
192+
performMeshInstanceMaintenance KEYWORD2
193+
serializeMeshState KEYWORD2
194+
setBroadcastReceptionRedundancy KEYWORD2
195+
getBroadcastReceptionRedundancy KEYWORD2
196+
encryptedBroadcast KEYWORD2
197+
clearMessageLogs KEYWORD2
198+
clearForwardingBacklog KEYWORD2
199+
setMessageHandler KEYWORD2
200+
getMessageHandler KEYWORD2
201+
getOriginMac KEYWORD2
202+
setMessageLogSize KEYWORD2
203+
messageLogSize KEYWORD2
204+
maxUnencryptedMessageLength KEYWORD2
205+
maxEncryptedMessageLength KEYWORD2
206+
setMetadataDelimiter KEYWORD2
207+
metadataDelimiter KEYWORD2
208+
getEspnowMeshBackend KEYWORD2
209+
getEspnowMeshBackendConst KEYWORD2
210+
restoreDefaultRequestHandler KEYWORD2
211+
restoreDefaultResponseHandler KEYWORD2
212+
restoreDefaultNetworkFilter KEYWORD2
213+
restoreDefaultBroadcastFilter KEYWORD2
214+
restoreDefaultTransmissionOutcomesUpdateHook KEYWORD2
215+
restoreDefaultResponseTransmittedHook KEYWORD2
216+
217+
# NetworkInfoBase
218+
setBSSID KEYWORD2
219+
getBSSID KEYWORD2
220+
setWifiChannel KEYWORD2
221+
wifiChannel KEYWORD2
222+
setEncryptionType KEYWORD2
223+
setRSSI KEYWORD2
224+
setIsHidden KEYWORD2
225+
226+
# TransmissionOutcome
227+
setTransmissionStatus KEYWORD2
228+
transmissionStatus KEYWORD2
229+
230+
# TypeConversionFunctions
231+
uint64ToString KEYWORD2
232+
stringToUint64 KEYWORD2
233+
uint8ArrayToHexString KEYWORD2
234+
hexStringToUint8Array KEYWORD2
235+
uint8ArrayToMultiString KEYWORD2
236+
bufferedUint8ArrayToMultiString KEYWORD2
237+
macToString KEYWORD2
238+
stringToMac KEYWORD2
239+
macToUint64 KEYWORD2
240+
uint64ToMac KEYWORD2
241+
uint64ToUint8Array KEYWORD2
242+
uint8ArrayToUint64 KEYWORD2
243+
meshBackendCast KEYWORD2
244+
245+
# UtilityFunctions
246+
macEqual KEYWORD2
247+
randomUint64 KEYWORD2
248+
getMapValue KEYWORD2
249+
66250
#######################################
67251
# Constants (LITERAL1)
68252
#######################################
69253

70254
emptyIP LITERAL1
255+
71256
NETWORK_INFO_DEFAULT_INT LITERAL1
72-
WIFI_MESH_EMPTY_STRING LITERAL1
257+
defaultBSSID LITERAL1
258+
defaultEncryptionType LITERAL1
259+
defaultIsHidden LITERAL1
260+
defaultSSID LITERAL1
261+
defaultWifiChannel LITERAL1
262+
defaultRSSI LITERAL1

0 commit comments

Comments
 (0)