static bool fieldAnnouncements(NWK_DataInd_t *ind) { char *data = (char*)ind->data; // be safe if (!ind->options & NWK_IND_OPT_MULTICAST) { return true; } if (hqVerboseOutput) { Serial.print(F("multicast in ")); Serial.println(ind->dstAddr); } if (Scout.isLeadScout()) { leadAnnouncementSend(ind->dstAddr, ind->srcAddr, ConstBuf(data, ind->size-1)); // no null } if (!ind->dstAddr || ind->dstAddr == 0xBEEF || strlen(data) < 3 || data[0] != '[') { return false; } int keys[10]; keyLoad((char*)ind->data, keys, millis()); // run the Bitlash callback function, if defined StringBuffer callback(20); callback.appendSprintf("on.message.group", ind->dstAddr); if (find_user_function(const_cast<char*>(callback.c_str())) || findscript(const_cast<char*>(callback.c_str()))) { StringBuffer buf(64, 16); buf.appendSprintf("on.message.group(%d,%d", ind->dstAddr, ind->srcAddr); for (int i=2; i<=keys[0]; i++) { buf.appendSprintf(",%d", keys[i]); } buf += ")"; doCommand(const_cast<char*>(buf.c_str())); } return true; }
static bool fieldAnnouncements(NWK_DataInd_t *ind) { char callback[32], *data = (char*)ind->data; // be safe if (!ind->options & NWK_IND_OPT_MULTICAST) { return true; } if (hqVerboseOutput) { sp("multicast in "); sp(ind->dstAddr); speol(); } if (Scout.isLeadScout()) { leadAnnouncementSend(ind->dstAddr, ind->srcAddr, data); } if (ind->dstAddr == 0xBEEF || strlen(data) <3 || data[0] != '[') { return false; } int keys[10]; keyLoad((char*)ind->data, keys, millis()); // run the Bitlash callback function, if defined sprintf(callback, "event.group%d", ind->dstAddr); if (findscript(callback)) { char buf[128]; sprintf(buf, "event.group%d(%d", ind->dstAddr, ind->srcAddr); for (int i=2; i<=keys[0]; i++) { sprintf(buf + strlen(buf), ",%d", keys[i]); } sprintf(buf + strlen(buf), ")"); doCommand(buf); } return true; }
void keyInit() { memset(keytable, 0, sizeof(keytable)); memset(keytableTmp, 0, sizeof(keytableTmp)); keyMap("OVERFLOW", 0); // becomes 0, error keyLoad(KEYS_BUNDLE, 0, 0); }