/// Note: Since txTick() takes a significant amount of time, the /// fastest the metronome will currently go is 240 bpm. void txMetronome(MorseToken) { uint8_t bpm(60); switch (symbolStackSize()) { case 3: bpm = 100 * s(2).m2i() + 10 * s(1).m2i() + s(0).m2i(); popN(3); break; case 2: bpm = 10 * s(1).m2i() + s(0).m2i(); popN(2); break; case 1: bpm = s(0).m2i(); popN(1); break; default: txError(); } uint32_t timeout(60 * 1000000 / bpm); elapsedMicros sinceTick(0); while (!touchPoll(dahPin)) { if (timeout < sinceTick) { sinceTick = 0; txTick(MorseToken()); } } }
void enqueueTxPacket(boolean direct, u16 dstShortAddr, u8 * packet, u8 sfdPtrOffset) { if(direct) { directTransmit(dstShortAddr, packet, sfdPtrOffset); } else { indirectTransmit(dstShortAddr, packet, sfdPtrOffset); } txTick(); }