Download this file
#include "listener.h"

bool Listener::canRun(uint32_t now) {
  if (rf12_recvDone()) {
   //Serial.println("recvDone");
    return (rf12_crc == 0 &&  rf12_len <= BUFFER_LEN);
  }
  return false;
}

void Listener::run(uint32_t now) {
  recv_buffer_len = rf12_len;
  memcpy((void *)recv_buffer, (void *)rf12_data, recv_buffer_len);
  //SHOW_BUFFER("RECV: ", rf12_hdr, recv_buffer, recv_buffer_len);
  if (rf12_hdr == (RF12_HDR_CTL | (SLAVE_ID & RF12_HDR_MASK)))
    // received an ACK from SLAVE
    protocol->got_ack();
  else {
    if (RF12_WANTS_ACK) {
      //SHOW_BUFFER("SACK: ", RF12_ACK_REPLY, recv_buffer, 0);
      rf12_sendStart(RF12_ACK_REPLY, 0, 0);
      rf12_sendWait(0);
    }
    protocol->handle(recv_buffer, recv_buffer_len);
  }
}

// vim:ft=arduino