#include "Comms.h" #include "Config.h" #include #include static_assert(HXP_RADIO_DATA_RATE == RF24_250KBPS && HXP_RADIO_PA_LEVEL == RF24_PA_LOW, "HexapodProtocol.h radio enum values out of sync with RF24.h"); static RF24 radio(RADIO_CE_PIN, RADIO_CSN_PIN); bool Comms::begin() { radio_present_ = radio.begin(); if (radio_present_) { radio.setPayloadSize(HXP_RADIO_PAYLOAD); // mismatched protocol versions won't be received at all radio.openReadingPipe(1, HXP_RADIO_ADDRESS); radio.setPALevel((rf24_pa_dbm_e)HXP_RADIO_PA_LEVEL); radio.setDataRate((rf24_datarate_e)HXP_RADIO_DATA_RATE); radio.setChannel(HXP_RADIO_CHANNEL); radio.startListening(); } return radio_present_; } void Comms::update() { if (radio_present_) { while (radio.available()) { radio.read(&packet_, sizeof(packet_)); last_rx_ms_ = millis(); } } link_ok_ = (millis() - last_rx_ms_) < (uint32_t)(LINK_TIMEOUT_SEC * 1000); }