uint8_t PIOS_RCVR_GetRSSI(uint32_t rcvr_id) { struct pios_rcvr_dev * rcvr_dev = (struct pios_rcvr_dev *)rcvr_id; if (!PIOS_RCVR_validate(rcvr_dev)) { /* Undefined RCVR port for this board (see pios_board.c) */ PIOS_Assert(0); } PIOS_DEBUG_Assert(rcvr_dev->driver->rssi); return rcvr_dev->driver->rssi(rcvr_dev->lower_id); }
int32_t PIOS_RCVR_Read(uint32_t rcvr_id, uint8_t channel) { struct pios_rcvr_dev * rcvr_dev = (struct pios_rcvr_dev *)rcvr_id; if (!PIOS_RCVR_validate(rcvr_dev)) { /* Undefined RCVR port for this board (see pios_board.c) */ PIOS_Assert(0); } PIOS_DEBUG_Assert(rcvr_dev->driver->read); return rcvr_dev->driver->read(rcvr_dev->lower_id, channel); }
/** * @brief Reads an input channel from the appropriate driver * @param[in] rcvr_id driver to read from * @param[in] channel channel to read * @returns Unitless input value * @retval PIOS_RCVR_TIMEOUT indicates a failsafe or timeout from that channel * @retval PIOS_RCVR_INVALID invalid channel for this driver (usually out of range supported) * @retval PIOS_RCVR_NODRIVER driver was not initialized */ int32_t PIOS_RCVR_Read(uint32_t rcvr_id, uint8_t channel) { // Publicly facing API uses channel 1 for first channel if(channel == 0) return PIOS_RCVR_INVALID; else channel--; if (rcvr_id == 0) return PIOS_RCVR_NODRIVER; struct pios_rcvr_dev * rcvr_dev = (struct pios_rcvr_dev *)rcvr_id; if (!PIOS_RCVR_validate(rcvr_dev)) { /* Undefined RCVR port for this board (see pios_board.c) */ PIOS_Assert(0); } PIOS_DEBUG_Assert(rcvr_dev->driver->read); return rcvr_dev->driver->read(rcvr_dev->lower_id, channel); }