MQ7-esp/esp8266-dashboard/communication.ino

76 lines
2.1 KiB
C++

bool initCommunication() {
WiFi.persistent(false);
bool ok = WifiEspNowBroadcast.begin("CO-WARN", 3);
if (!ok) {
LOG("WifiEspNowBroadcast.begin() failed");
return false;
}
WifiEspNowBroadcast.onReceive(processRx, nullptr);
LOG("MAC address of this node is %s", WiFi.softAPmacAddress().c_str());
return true;
}
/*
process wifi stack Rx interrupt
*/
ICACHE_RAM_ATTR void processRx(const uint8_t mac[6], const uint8_t* buf, size_t count, void* cbarg) {
//simple frame size check
if (count != sizeof(receiveBuffer[rxCounter])) {
return;
}
else
{
receiveBuffer[rxCounter] = *(rm370*)buf;
//memcpy(&receiveBuffer[rxCounter].originMAC[0], &mac, sizeof(receiveBuffer[rxCounter].originMAC)); //dont overwrite original package
//shift ring buffer input pointer
if (rxCounter + 1 < MAX_PEERS) {
rxCounter++;
}
else {
rxCounter = 0;
}
}
LOG("Message from %02X:%02X:%02X:%02X:%02X:%02X", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
}
/*
*/
void checkMessage() {
if (receiveBuffer[rxHandlePointer].PREAMBLE1 == 'R' && receiveBuffer[rxHandlePointer].PREAMBLE2 == 'M') {
LOG("Origin MAC %02X:%02X:%02X:%02X:%02X:%02X || \tStatus: %c | BatWarn: %c",
receiveBuffer[rxHandlePointer].originMAC[0],
receiveBuffer[rxHandlePointer].originMAC[1],
receiveBuffer[rxHandlePointer].originMAC[2],
receiveBuffer[rxHandlePointer].originMAC[3],
receiveBuffer[rxHandlePointer].originMAC[4],
receiveBuffer[rxHandlePointer].originMAC[5],
receiveBuffer[rxHandlePointer].code,
(receiveBuffer[rxHandlePointer].batteryWarning) ? '!' : '.');
switch (receiveBuffer[rxHandlePointer].code) {
case 'r':
//LOG("\tALARM received");
break;
case 'y':
//LOG("\tWARNING received");
break;
case 'g':
//LOG("\tGREEN received");
break;
default:
break;
}
if (receiveBuffer[rxHandlePointer].batteryWarning == true) {
//LOG("\tBAT Warning received");
}
refreshGlobalStatus = true;
}
else {
DEBUGLOG("Payload does not contain known preamble.");
}
}
void sendMessage() {
}