Esempio n. 1
0
/// 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();
}