APM:Libraries
Classes | Public Member Functions | Private Types | Private Member Functions | Static Private Member Functions | Private Attributes | Static Private Attributes | List of all members
AP_Radio_cc2500 Class Reference

#include <AP_Radio_cc2500.h>

Inheritance diagram for AP_Radio_cc2500:
[legend]
Collaboration diagram for AP_Radio_cc2500:
[legend]

Classes

struct  bind_info
 
struct  config
 

Public Member Functions

 AP_Radio_cc2500 (AP_Radio &radio)
 
bool init (void) override
 
bool reset (void) override
 
bool send (const uint8_t *pkt, uint16_t len) override
 
void start_recv_bind (void) override
 
uint32_t last_recv_us (void) override
 
uint8_t num_channels (void) override
 
uint16_t read (uint8_t chan) override
 
void handle_data_packet (mavlink_channel_t chan, const mavlink_data96_t &m) override
 
void update (void) override
 
uint32_t get_tx_version (void) override
 
const AP_Radio::statsget_stats (void) override
 
void set_wifi_channel (uint8_t channel)
 
- Public Member Functions inherited from AP_Radio_backend
 AP_Radio_backend (AP_Radio &radio)
 
virtual ~AP_Radio_backend ()
 

Private Types

enum  {
  STATE_INIT = 0, STATE_BIND, STATE_BIND_TUNING, STATE_BIND_BINDING,
  STATE_BIND_COMPLETE, STATE_STARTING, STATE_DATA, STATE_TELEMETRY,
  STATE_RESUME, STATE_FCCTEST, STATE_SEARCH
}
 

Private Member Functions

void radio_init (void)
 
void initTuneRx (void)
 
void initialiseData (uint8_t adr)
 
void initGetBind (void)
 
bool tuneRx (uint8_t ccLen, uint8_t *packet)
 
bool getBindData (uint8_t ccLen, uint8_t *packet)
 
bool check_best_LQI (void)
 
void setChannel (uint8_t channel)
 
void nextChannel (uint8_t skip)
 
void parse_frSkyX (const uint8_t *packet)
 
uint16_t calc_crc (const uint8_t *data, uint8_t len)
 
bool check_crc (uint8_t ccLen, uint8_t *packet)
 
void send_D16_telemetry (void)
 
void send_SRT_telemetry (void)
 
void irq_handler (void)
 
void irq_timeout (void)
 
void save_bind_info (void)
 
bool load_bind_info (void)
 
bool handle_D16_packet (const uint8_t *packet)
 
bool handle_SRT_packet (const uint8_t *packet)
 
void check_fw_ack (void)
 

Static Private Member Functions

static void irq_handler_thd (void *arg)
 
static void trigger_irq_radio_event (void)
 
static void trigger_timeout_event (void *arg)
 

Private Attributes

AP_HAL::OwnPtr< AP_HAL::SPIDevicedev
 
AP_HAL::Semaphoresem
 
AP_Radio::stats stats
 
AP_Radio::stats last_stats
 
uint16_t pwm_channels [CC2500_MAX_CHANNELS]
 
Radio_CC2500 cc2500
 
uint8_t calData [255][3]
 
uint8_t bindTxId [2]
 
int8_t bindOffset
 
uint8_t bindHopData [47]
 
uint8_t rxNum
 
uint8_t listLength
 
uint8_t channr
 
uint8_t chanskip
 
int8_t fcc_chan
 
uint32_t packet_timer
 
const uint32_t sync_time_us = 9000
 
uint8_t chan_count
 
uint32_t lost
 
uint32_t timeouts
 
bool have_bind_info
 
uint8_t packet3
 
bool telem_send_rssi
 
float rssi_filtered
 
uint64_t bind_mask
 
uint8_t best_lqi
 
int8_t best_bindOffset
 
uint32_t timeTunedMs
 
enum AP_Radio_cc2500:: { ... }  protocolState
 
struct {
   mavlink_channel_t   chan
 
   bool   need_ack
 
   uint8_t   counter
 
   uint8_t   sequence
 
   uint32_t   offset
 
   uint32_t   length
 
   uint32_t   acked
 
   uint8_t   len
 
   enum telem_type   fw_type
 
   uint8_t   pending_data [92]
 
fwupload
 
struct {
   uint8_t   firmware_year
 
   uint8_t   firmware_month
 
   uint8_t   firmware_day
 
tx_date
 
struct telem_status t_status
 
uint32_t last_pps_ms
 
uint8_t tx_rssi
 
uint8_t tx_pps
 

Static Private Attributes

static AP_Radio_cc2500radio_instance
 
static thread_t * _irq_handler_ctx
 
static virtual_timer_t timeout_vt
 
static uint32_t irq_time_us
 
static const uint16_t bind_magic = 0x120a
 
static const config radio_config []
 

Additional Inherited Members

- Protected Member Functions inherited from AP_Radio_backend
AP_Radio::ap_radio_protocol get_protocol (void) const
 
uint8_t get_debug_level (void) const
 
bool get_disable_crc (void) const
 
uint8_t get_rssi_chan (void) const
 
uint8_t get_pps_chan (void) const
 
uint8_t get_tx_rssi_chan (void) const
 
uint8_t get_tx_pps_chan (void) const
 
bool get_telem_enable (void) const
 
uint8_t get_transmit_power (void) const
 
uint8_t get_tx_max_power (void) const
 
void set_tx_max_power_default (uint8_t v)
 
int8_t get_fcc_test (void) const
 
uint8_t get_stick_mode (void) const
 
uint8_t get_factory_test (void) const
 
uint8_t get_tx_buzzer_adjust (void) const
 
uint8_t get_autobind_time (void) const
 
uint8_t get_autobind_rssi (void) const
 
- Protected Attributes inherited from AP_Radio_backend
AP_Radioradio
 

Detailed Description

Definition at line 31 of file AP_Radio_cc2500.h.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
private
Enumerator
STATE_INIT 
STATE_BIND 
STATE_BIND_TUNING 
STATE_BIND_BINDING 
STATE_BIND_COMPLETE 
STATE_STARTING 
STATE_DATA 
STATE_TELEMETRY 
STATE_RESUME 
STATE_FCCTEST 
STATE_SEARCH 

Definition at line 156 of file AP_Radio_cc2500.h.

Constructor & Destructor Documentation

◆ AP_Radio_cc2500()

AP_Radio_cc2500::AP_Radio_cc2500 ( AP_Radio radio)

Member Function Documentation

◆ calc_crc()

uint16_t AP_Radio_cc2500::calc_crc ( const uint8_t *  data,
uint8_t  len 
)
private

◆ check_best_LQI()

bool AP_Radio_cc2500::check_best_LQI ( void  )
private

◆ check_crc()

bool AP_Radio_cc2500::check_crc ( uint8_t  ccLen,
uint8_t *  packet 
)
private

◆ check_fw_ack()

void AP_Radio_cc2500::check_fw_ack ( void  )
private

◆ get_stats()

const AP_Radio::stats& AP_Radio_cc2500::get_stats ( void  )
overridevirtual

Implements AP_Radio_backend.

◆ get_tx_version()

uint32_t AP_Radio_cc2500::get_tx_version ( void  )
inlineoverridevirtual

Implements AP_Radio_backend.

Definition at line 64 of file AP_Radio_cc2500.h.

◆ getBindData()

bool AP_Radio_cc2500::getBindData ( uint8_t  ccLen,
uint8_t *  packet 
)
private

◆ handle_D16_packet()

bool AP_Radio_cc2500::handle_D16_packet ( const uint8_t *  packet)
private

◆ handle_data_packet()

void AP_Radio_cc2500::handle_data_packet ( mavlink_channel_t  chan,
const mavlink_data96_t &  m 
)
overridevirtual

Reimplemented from AP_Radio_backend.

◆ handle_SRT_packet()

bool AP_Radio_cc2500::handle_SRT_packet ( const uint8_t *  packet)
private

◆ init()

bool AP_Radio_cc2500::init ( void  )
overridevirtual

Implements AP_Radio_backend.

◆ initGetBind()

void AP_Radio_cc2500::initGetBind ( void  )
private

◆ initialiseData()

void AP_Radio_cc2500::initialiseData ( uint8_t  adr)
private

◆ initTuneRx()

void AP_Radio_cc2500::initTuneRx ( void  )
private

◆ irq_handler()

void AP_Radio_cc2500::irq_handler ( void  )
private

◆ irq_handler_thd()

static void AP_Radio_cc2500::irq_handler_thd ( void *  arg)
staticprivate

◆ irq_timeout()

void AP_Radio_cc2500::irq_timeout ( void  )
private

◆ last_recv_us()

uint32_t AP_Radio_cc2500::last_recv_us ( void  )
overridevirtual

Implements AP_Radio_backend.

◆ load_bind_info()

bool AP_Radio_cc2500::load_bind_info ( void  )
private

◆ nextChannel()

void AP_Radio_cc2500::nextChannel ( uint8_t  skip)
private

◆ num_channels()

uint8_t AP_Radio_cc2500::num_channels ( void  )
overridevirtual

Implements AP_Radio_backend.

◆ parse_frSkyX()

void AP_Radio_cc2500::parse_frSkyX ( const uint8_t *  packet)
private

◆ radio_init()

void AP_Radio_cc2500::radio_init ( void  )
private

◆ read()

uint16_t AP_Radio_cc2500::read ( uint8_t  chan)
overridevirtual

Implements AP_Radio_backend.

◆ reset()

bool AP_Radio_cc2500::reset ( void  )
overridevirtual

Implements AP_Radio_backend.

◆ save_bind_info()

void AP_Radio_cc2500::save_bind_info ( void  )
private

◆ send()

bool AP_Radio_cc2500::send ( const uint8_t *  pkt,
uint16_t  len 
)
overridevirtual

Implements AP_Radio_backend.

◆ send_D16_telemetry()

void AP_Radio_cc2500::send_D16_telemetry ( void  )
private

◆ send_SRT_telemetry()

void AP_Radio_cc2500::send_SRT_telemetry ( void  )
private

◆ set_wifi_channel()

void AP_Radio_cc2500::set_wifi_channel ( uint8_t  channel)
inlinevirtual

Implements AP_Radio_backend.

Definition at line 73 of file AP_Radio_cc2500.h.

◆ setChannel()

void AP_Radio_cc2500::setChannel ( uint8_t  channel)
private

◆ start_recv_bind()

void AP_Radio_cc2500::start_recv_bind ( void  )
overridevirtual

Implements AP_Radio_backend.

◆ trigger_irq_radio_event()

static void AP_Radio_cc2500::trigger_irq_radio_event ( void  )
staticprivate

◆ trigger_timeout_event()

static void AP_Radio_cc2500::trigger_timeout_event ( void *  arg)
staticprivate

◆ tuneRx()

bool AP_Radio_cc2500::tuneRx ( uint8_t  ccLen,
uint8_t *  packet 
)
private

◆ update()

void AP_Radio_cc2500::update ( void  )
overridevirtual

Implements AP_Radio_backend.

Member Data Documentation

◆ _irq_handler_ctx

thread_t* AP_Radio_cc2500::_irq_handler_ctx
staticprivate

Definition at line 80 of file AP_Radio_cc2500.h.

◆ acked

uint32_t AP_Radio_cc2500::acked

Definition at line 183 of file AP_Radio_cc2500.h.

◆ best_bindOffset

int8_t AP_Radio_cc2500::best_bindOffset
private

Definition at line 120 of file AP_Radio_cc2500.h.

◆ best_lqi

uint8_t AP_Radio_cc2500::best_lqi
private

Definition at line 119 of file AP_Radio_cc2500.h.

◆ bind_magic

const uint16_t AP_Radio_cc2500::bind_magic = 0x120a
staticprivate

Definition at line 144 of file AP_Radio_cc2500.h.

◆ bind_mask

uint64_t AP_Radio_cc2500::bind_mask
private

Definition at line 118 of file AP_Radio_cc2500.h.

◆ bindHopData

uint8_t AP_Radio_cc2500::bindHopData[47]
private

Definition at line 102 of file AP_Radio_cc2500.h.

◆ bindOffset

int8_t AP_Radio_cc2500::bindOffset
private

Definition at line 101 of file AP_Radio_cc2500.h.

◆ bindTxId

uint8_t AP_Radio_cc2500::bindTxId[2]
private

Definition at line 100 of file AP_Radio_cc2500.h.

◆ calData

uint8_t AP_Radio_cc2500::calData[255][3]
private

Definition at line 99 of file AP_Radio_cc2500.h.

◆ cc2500

Radio_CC2500 AP_Radio_cc2500::cc2500
private

Definition at line 97 of file AP_Radio_cc2500.h.

◆ chan

mavlink_channel_t AP_Radio_cc2500::chan

Definition at line 177 of file AP_Radio_cc2500.h.

◆ chan_count

uint8_t AP_Radio_cc2500::chan_count
private

Definition at line 111 of file AP_Radio_cc2500.h.

◆ channr

uint8_t AP_Radio_cc2500::channr
private

Definition at line 105 of file AP_Radio_cc2500.h.

◆ chanskip

uint8_t AP_Radio_cc2500::chanskip
private

Definition at line 106 of file AP_Radio_cc2500.h.

◆ counter

uint8_t AP_Radio_cc2500::counter

Definition at line 179 of file AP_Radio_cc2500.h.

◆ dev

AP_HAL::OwnPtr<AP_HAL::SPIDevice> AP_Radio_cc2500::dev
private

Definition at line 78 of file AP_Radio_cc2500.h.

◆ fcc_chan

int8_t AP_Radio_cc2500::fcc_chan
private

Definition at line 107 of file AP_Radio_cc2500.h.

◆ firmware_day

uint8_t AP_Radio_cc2500::firmware_day

Definition at line 192 of file AP_Radio_cc2500.h.

◆ firmware_month

uint8_t AP_Radio_cc2500::firmware_month

Definition at line 191 of file AP_Radio_cc2500.h.

◆ firmware_year

uint8_t AP_Radio_cc2500::firmware_year

Definition at line 190 of file AP_Radio_cc2500.h.

◆ fw_type

enum telem_type AP_Radio_cc2500::fw_type

Definition at line 185 of file AP_Radio_cc2500.h.

◆ fwupload

struct { ... } AP_Radio_cc2500::fwupload

◆ have_bind_info

bool AP_Radio_cc2500::have_bind_info
private

Definition at line 114 of file AP_Radio_cc2500.h.

◆ irq_time_us

uint32_t AP_Radio_cc2500::irq_time_us
staticprivate

Definition at line 109 of file AP_Radio_cc2500.h.

◆ last_pps_ms

uint32_t AP_Radio_cc2500::last_pps_ms
private

Definition at line 196 of file AP_Radio_cc2500.h.

◆ last_stats

AP_Radio::stats AP_Radio_cc2500::last_stats
private

Definition at line 93 of file AP_Radio_cc2500.h.

◆ len

uint8_t AP_Radio_cc2500::len

Definition at line 184 of file AP_Radio_cc2500.h.

◆ length

uint32_t AP_Radio_cc2500::length

Definition at line 182 of file AP_Radio_cc2500.h.

◆ listLength

uint8_t AP_Radio_cc2500::listLength
private

Definition at line 104 of file AP_Radio_cc2500.h.

◆ lost

uint32_t AP_Radio_cc2500::lost
private

Definition at line 112 of file AP_Radio_cc2500.h.

◆ need_ack

bool AP_Radio_cc2500::need_ack

Definition at line 178 of file AP_Radio_cc2500.h.

◆ offset

uint32_t AP_Radio_cc2500::offset

Definition at line 181 of file AP_Radio_cc2500.h.

◆ packet3

uint8_t AP_Radio_cc2500::packet3
private

Definition at line 115 of file AP_Radio_cc2500.h.

◆ packet_timer

uint32_t AP_Radio_cc2500::packet_timer
private

Definition at line 108 of file AP_Radio_cc2500.h.

◆ pending_data

uint8_t AP_Radio_cc2500::pending_data[92]

Definition at line 186 of file AP_Radio_cc2500.h.

◆ protocolState

enum { ... } AP_Radio_cc2500::protocolState

◆ pwm_channels

uint16_t AP_Radio_cc2500::pwm_channels[CC2500_MAX_CHANNELS]
private

Definition at line 95 of file AP_Radio_cc2500.h.

◆ radio_config

const config AP_Radio_cc2500::radio_config[]
staticprivate

Definition at line 174 of file AP_Radio_cc2500.h.

◆ radio_instance

AP_Radio_cc2500* AP_Radio_cc2500::radio_instance
staticprivate

Definition at line 79 of file AP_Radio_cc2500.h.

◆ rssi_filtered

float AP_Radio_cc2500::rssi_filtered
private

Definition at line 117 of file AP_Radio_cc2500.h.

◆ rxNum

uint8_t AP_Radio_cc2500::rxNum
private

Definition at line 103 of file AP_Radio_cc2500.h.

◆ sem

AP_HAL::Semaphore* AP_Radio_cc2500::sem
private

Definition at line 90 of file AP_Radio_cc2500.h.

◆ sequence

uint8_t AP_Radio_cc2500::sequence

Definition at line 180 of file AP_Radio_cc2500.h.

◆ stats

AP_Radio::stats AP_Radio_cc2500::stats
private

Definition at line 92 of file AP_Radio_cc2500.h.

◆ sync_time_us

const uint32_t AP_Radio_cc2500::sync_time_us = 9000
private

Definition at line 110 of file AP_Radio_cc2500.h.

◆ t_status

struct telem_status AP_Radio_cc2500::t_status
private

Definition at line 195 of file AP_Radio_cc2500.h.

◆ telem_send_rssi

bool AP_Radio_cc2500::telem_send_rssi
private

Definition at line 116 of file AP_Radio_cc2500.h.

◆ timeout_vt

virtual_timer_t AP_Radio_cc2500::timeout_vt
staticprivate

Definition at line 81 of file AP_Radio_cc2500.h.

◆ timeouts

uint32_t AP_Radio_cc2500::timeouts
private

Definition at line 113 of file AP_Radio_cc2500.h.

◆ timeTunedMs

uint32_t AP_Radio_cc2500::timeTunedMs
private

Definition at line 122 of file AP_Radio_cc2500.h.

◆ tx_date

struct { ... } AP_Radio_cc2500::tx_date

Referenced by get_tx_version().

◆ tx_pps

uint8_t AP_Radio_cc2500::tx_pps
private

Definition at line 198 of file AP_Radio_cc2500.h.

◆ tx_rssi

uint8_t AP_Radio_cc2500::tx_rssi
private

Definition at line 197 of file AP_Radio_cc2500.h.


The documentation for this class was generated from the following file: