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_cypress Class Reference

#include <AP_Radio_cypress.h>

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

Classes

struct  bind_info
 
struct  config
 

Public Member Functions

 AP_Radio_cypress (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_RECV, STATE_BIND, STATE_AUTOBIND, STATE_SEND_TELEM,
  STATE_SEND_TELEM_WAIT, STATE_SEND_FCC
}
 
enum  dsm_protocol {
  DSM_NONE = 0, DSM_DSM2_1 = 0x01, DSM_DSM2_2 = 0x02, DSM_DSMX_1 = 0xA2,
  DSM_DSMX_2 = 0xB2
}
 
enum  dsm2_sync { DSM2_SYNC_A, DSM2_SYNC_B, DSM2_OK }
 

Private Member Functions

void radio_init (void)
 
void dump_registers (uint8_t n)
 
void force_initial_state (void)
 
void set_channel (uint8_t channel)
 
uint8_t read_status_debounced (uint8_t adr)
 
uint8_t read_register (uint8_t reg)
 
void write_register (uint8_t reg, uint8_t value)
 
void write_multiple (uint8_t reg, uint8_t n, const uint8_t *data)
 
void radio_set_config (const struct config *config, uint8_t size)
 
void start_receive (void)
 
void irq_handler (void)
 
void irq_handler_recv (uint8_t rx_status)
 
void irq_timeout (void)
 
void print_debug_info (void)
 
void dsm_set_channel (uint8_t channel, bool is_dsm2, uint8_t sop_col, uint8_t data_col, uint16_t crc_seed)
 
void dsm_generate_channels_dsmx (uint8_t mfg_id[4], uint8_t channels[23])
 
void dsm_setup_transfer_dsmx (void)
 
void dsm_choose_channel (void)
 
void map_stick_mode (uint16_t *channels)
 
bool parse_dsm_channels (const uint8_t *data)
 
void process_packet (const uint8_t *pkt, uint8_t len)
 
void process_bind (const uint8_t *pkt, uint8_t len)
 
void load_bind_info (void)
 
void save_bind_info (void)
 
bool is_DSM2 (void)
 
void transmit16 (const uint8_t data[16])
 
void send_telem_packet (void)
 
void irq_handler_send (uint8_t tx_status)
 
void send_FCC_test_packet (void)
 
void check_fw_ack (void)
 
void dsm2_start_sync (void)
 
void check_double_bind (void)
 
void setup_timeout (uint32_t timeout_ms)
 

Static Private Member Functions

static int irq_radio_trampoline (int irq, void *context)
 
static int irq_timeout_trampoline (int irq, void *context)
 

Private Attributes

AP_HAL::OwnPtr< AP_HAL::SPIDevicedev
 
enum AP_Radio_cypress:: { ... }  state
 
sem_t irq_sem
 
struct hrt_call wait_call
 
uint32_t last_debug_print_ms
 
AP_Radio::stats stats
 
AP_Radio::stats last_stats
 
AP_HAL::Semaphoresem
 
struct {
   uint8_t   channels [23]
 
   enum dsm_protocol   protocol
 
   uint8_t   mfg_id [4]
 
   uint8_t   current_channel
 
   uint8_t   current_rf_channel
 
   uint16_t   crc_seed
 
   uint8_t   sop_col
 
   uint8_t   data_col
 
   uint8_t   last_sop_code [8]
 
   uint8_t   last_data_code [16]
 
   uint32_t   receive_start_us
 
   uint32_t   receive_timeout_msec
 
   uint32_t   last_recv_us
 
   uint32_t   last_parse_us
 
   uint32_t   last_recv_chan
 
   uint32_t   last_chan_change_us
 
   uint16_t   num_channels
 
   uint16_t   pwm_channels [max_channels]
 
   bool   need_bind_save
 
   enum dsm2_sync   sync
 
   uint32_t   crc_errors
 
   float   rssi
 
   bool   last_discrc
 
   uint8_t   last_transmit_power
 
   uint32_t   send_irq_count
 
   uint32_t   send_count
 
   uint16_t   pkt_time1 = 3000
 
   uint16_t   pkt_time2 = 7000
 
   uint8_t   tx_firmware_year
 
   uint8_t   tx_firmware_month
 
   uint8_t   tx_firmware_day
 
   int8_t   forced_channel = -1
 
   uint8_t   tx_rssi
 
   uint8_t   tx_pps
 
   uint32_t   last_autobind_send
 
   bool   have_tx_pps
 
   uint32_t   telem_send_count
 
   uint8_t   tx_bl_version
 
dsm
 
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 telem_status t_status
 

Static Private Attributes

static AP_Radio_cypressradio_instance
 
static const uint8_t pn_codes [5][9][8]
 
static const uint8_t pn_bind []
 
static const config cyrf_config []
 
static const config cyrf_bind_config []
 
static const config cyrf_transfer_config []
 
static const uint8_t max_channels = 16
 
static const uint16_t bind_magic = 0x43F6
 

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 36 of file AP_Radio_cypress.h.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
private
Enumerator
STATE_RECV 
STATE_BIND 
STATE_AUTOBIND 
STATE_SEND_TELEM 
STATE_SEND_TELEM_WAIT 
STATE_SEND_FCC 

Definition at line 98 of file AP_Radio_cypress.h.

◆ dsm2_sync

Enumerator
DSM2_SYNC_A 
DSM2_SYNC_B 
DSM2_OK 

Definition at line 165 of file AP_Radio_cypress.h.

◆ dsm_protocol

Enumerator
DSM_NONE 
DSM_DSM2_1 
DSM_DSM2_2 
DSM_DSMX_1 
DSM_DSMX_2 

Definition at line 157 of file AP_Radio_cypress.h.

Constructor & Destructor Documentation

◆ AP_Radio_cypress()

AP_Radio_cypress::AP_Radio_cypress ( AP_Radio radio)

Member Function Documentation

◆ check_double_bind()

void AP_Radio_cypress::check_double_bind ( void  )
private

◆ check_fw_ack()

void AP_Radio_cypress::check_fw_ack ( void  )
private

◆ dsm2_start_sync()

void AP_Radio_cypress::dsm2_start_sync ( void  )
private

◆ dsm_choose_channel()

void AP_Radio_cypress::dsm_choose_channel ( void  )
private

◆ dsm_generate_channels_dsmx()

void AP_Radio_cypress::dsm_generate_channels_dsmx ( uint8_t  mfg_id[4],
uint8_t  channels[23] 
)
private

◆ dsm_set_channel()

void AP_Radio_cypress::dsm_set_channel ( uint8_t  channel,
bool  is_dsm2,
uint8_t  sop_col,
uint8_t  data_col,
uint16_t  crc_seed 
)
private

◆ dsm_setup_transfer_dsmx()

void AP_Radio_cypress::dsm_setup_transfer_dsmx ( void  )
private

◆ dump_registers()

void AP_Radio_cypress::dump_registers ( uint8_t  n)
private

◆ force_initial_state()

void AP_Radio_cypress::force_initial_state ( void  )
private

◆ get_stats()

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

Implements AP_Radio_backend.

◆ get_tx_version()

uint32_t AP_Radio_cypress::get_tx_version ( void  )
inlineoverridevirtual

Implements AP_Radio_backend.

Definition at line 69 of file AP_Radio_cypress.h.

◆ handle_data_packet()

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

Reimplemented from AP_Radio_backend.

◆ init()

bool AP_Radio_cypress::init ( void  )
overridevirtual

Implements AP_Radio_backend.

◆ irq_handler()

void AP_Radio_cypress::irq_handler ( void  )
private

◆ irq_handler_recv()

void AP_Radio_cypress::irq_handler_recv ( uint8_t  rx_status)
private

◆ irq_handler_send()

void AP_Radio_cypress::irq_handler_send ( uint8_t  tx_status)
private

◆ irq_radio_trampoline()

static int AP_Radio_cypress::irq_radio_trampoline ( int  irq,
void *  context 
)
staticprivate

◆ irq_timeout()

void AP_Radio_cypress::irq_timeout ( void  )
private

◆ irq_timeout_trampoline()

static int AP_Radio_cypress::irq_timeout_trampoline ( int  irq,
void *  context 
)
staticprivate

◆ is_DSM2()

bool AP_Radio_cypress::is_DSM2 ( void  )
private

◆ last_recv_us()

uint32_t AP_Radio_cypress::last_recv_us ( void  )
overridevirtual

Implements AP_Radio_backend.

◆ load_bind_info()

void AP_Radio_cypress::load_bind_info ( void  )
private

◆ map_stick_mode()

void AP_Radio_cypress::map_stick_mode ( uint16_t *  channels)
private

◆ num_channels()

uint8_t AP_Radio_cypress::num_channels ( void  )
overridevirtual

Implements AP_Radio_backend.

◆ parse_dsm_channels()

bool AP_Radio_cypress::parse_dsm_channels ( const uint8_t *  data)
private

◆ print_debug_info()

void AP_Radio_cypress::print_debug_info ( void  )
private

◆ process_bind()

void AP_Radio_cypress::process_bind ( const uint8_t *  pkt,
uint8_t  len 
)
private

◆ process_packet()

void AP_Radio_cypress::process_packet ( const uint8_t *  pkt,
uint8_t  len 
)
private

◆ radio_init()

void AP_Radio_cypress::radio_init ( void  )
private

◆ radio_set_config()

void AP_Radio_cypress::radio_set_config ( const struct config config,
uint8_t  size 
)
private

◆ read()

uint16_t AP_Radio_cypress::read ( uint8_t  chan)
overridevirtual

Implements AP_Radio_backend.

◆ read_register()

uint8_t AP_Radio_cypress::read_register ( uint8_t  reg)
private

◆ read_status_debounced()

uint8_t AP_Radio_cypress::read_status_debounced ( uint8_t  adr)
private

◆ reset()

bool AP_Radio_cypress::reset ( void  )
overridevirtual

Implements AP_Radio_backend.

◆ save_bind_info()

void AP_Radio_cypress::save_bind_info ( void  )
private

◆ send()

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

Implements AP_Radio_backend.

◆ send_FCC_test_packet()

void AP_Radio_cypress::send_FCC_test_packet ( void  )
private

◆ send_telem_packet()

void AP_Radio_cypress::send_telem_packet ( void  )
private

◆ set_channel()

void AP_Radio_cypress::set_channel ( uint8_t  channel)
private

◆ set_wifi_channel()

void AP_Radio_cypress::set_wifi_channel ( uint8_t  channel)
inlinevirtual

Implements AP_Radio_backend.

Definition at line 78 of file AP_Radio_cypress.h.

◆ setup_timeout()

void AP_Radio_cypress::setup_timeout ( uint32_t  timeout_ms)
private

◆ start_receive()

void AP_Radio_cypress::start_receive ( void  )
private

◆ start_recv_bind()

void AP_Radio_cypress::start_recv_bind ( void  )
overridevirtual

Implements AP_Radio_backend.

◆ transmit16()

void AP_Radio_cypress::transmit16 ( const uint8_t  data[16])
private

◆ update()

void AP_Radio_cypress::update ( void  )
overridevirtual

Implements AP_Radio_backend.

◆ write_multiple()

void AP_Radio_cypress::write_multiple ( uint8_t  reg,
uint8_t  n,
const uint8_t *  data 
)
private

◆ write_register()

void AP_Radio_cypress::write_register ( uint8_t  reg,
uint8_t  value 
)
private

Member Data Documentation

◆ acked

uint32_t AP_Radio_cypress::acked

Definition at line 225 of file AP_Radio_cypress.h.

◆ bind_magic

const uint16_t AP_Radio_cypress::bind_magic = 0x43F6
staticprivate

Definition at line 232 of file AP_Radio_cypress.h.

◆ chan

mavlink_channel_t AP_Radio_cypress::chan

Definition at line 219 of file AP_Radio_cypress.h.

◆ channels

uint8_t AP_Radio_cypress::channels[23]

Definition at line 176 of file AP_Radio_cypress.h.

◆ counter

uint8_t AP_Radio_cypress::counter

Definition at line 221 of file AP_Radio_cypress.h.

◆ crc_errors

uint32_t AP_Radio_cypress::crc_errors

Definition at line 198 of file AP_Radio_cypress.h.

◆ crc_seed

uint16_t AP_Radio_cypress::crc_seed

Definition at line 181 of file AP_Radio_cypress.h.

◆ current_channel

uint8_t AP_Radio_cypress::current_channel

Definition at line 179 of file AP_Radio_cypress.h.

◆ current_rf_channel

uint8_t AP_Radio_cypress::current_rf_channel

Definition at line 180 of file AP_Radio_cypress.h.

◆ cyrf_bind_config

const config AP_Radio_cypress::cyrf_bind_config[]
staticprivate

Definition at line 114 of file AP_Radio_cypress.h.

◆ cyrf_config

const config AP_Radio_cypress::cyrf_config[]
staticprivate

Definition at line 113 of file AP_Radio_cypress.h.

◆ cyrf_transfer_config

const config AP_Radio_cypress::cyrf_transfer_config[]
staticprivate

Definition at line 115 of file AP_Radio_cypress.h.

◆ data_col

uint8_t AP_Radio_cypress::data_col

Definition at line 183 of file AP_Radio_cypress.h.

◆ dev

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

Definition at line 83 of file AP_Radio_cypress.h.

◆ dsm

struct { ... } AP_Radio_cypress::dsm

Referenced by get_tx_version().

◆ forced_channel

int8_t AP_Radio_cypress::forced_channel = -1

Definition at line 209 of file AP_Radio_cypress.h.

◆ fw_type

enum telem_type AP_Radio_cypress::fw_type

Definition at line 227 of file AP_Radio_cypress.h.

◆ fwupload

struct { ... } AP_Radio_cypress::fwupload

◆ have_tx_pps

bool AP_Radio_cypress::have_tx_pps

Definition at line 213 of file AP_Radio_cypress.h.

◆ irq_sem

sem_t AP_Radio_cypress::irq_sem
private

Definition at line 118 of file AP_Radio_cypress.h.

◆ last_autobind_send

uint32_t AP_Radio_cypress::last_autobind_send

Definition at line 212 of file AP_Radio_cypress.h.

◆ last_chan_change_us

uint32_t AP_Radio_cypress::last_chan_change_us

Definition at line 193 of file AP_Radio_cypress.h.

◆ last_data_code

uint8_t AP_Radio_cypress::last_data_code[16]

Definition at line 185 of file AP_Radio_cypress.h.

◆ last_debug_print_ms

uint32_t AP_Radio_cypress::last_debug_print_ms
private

Definition at line 150 of file AP_Radio_cypress.h.

◆ last_discrc

bool AP_Radio_cypress::last_discrc

Definition at line 200 of file AP_Radio_cypress.h.

◆ last_parse_us

uint32_t AP_Radio_cypress::last_parse_us

Definition at line 191 of file AP_Radio_cypress.h.

◆ last_recv_chan

uint32_t AP_Radio_cypress::last_recv_chan

Definition at line 192 of file AP_Radio_cypress.h.

◆ last_recv_us

uint32_t AP_Radio_cypress::last_recv_us

Definition at line 190 of file AP_Radio_cypress.h.

◆ last_sop_code

uint8_t AP_Radio_cypress::last_sop_code[8]

Definition at line 184 of file AP_Radio_cypress.h.

◆ last_stats

AP_Radio::stats AP_Radio_cypress::last_stats
private

Definition at line 155 of file AP_Radio_cypress.h.

◆ last_transmit_power

uint8_t AP_Radio_cypress::last_transmit_power

Definition at line 201 of file AP_Radio_cypress.h.

◆ len

uint8_t AP_Radio_cypress::len

Definition at line 226 of file AP_Radio_cypress.h.

◆ length

uint32_t AP_Radio_cypress::length

Definition at line 224 of file AP_Radio_cypress.h.

◆ max_channels

const uint8_t AP_Radio_cypress::max_channels = 16
staticprivate

Definition at line 148 of file AP_Radio_cypress.h.

◆ mfg_id

uint8_t AP_Radio_cypress::mfg_id[4]

Definition at line 178 of file AP_Radio_cypress.h.

◆ need_ack

bool AP_Radio_cypress::need_ack

Definition at line 220 of file AP_Radio_cypress.h.

◆ need_bind_save

bool AP_Radio_cypress::need_bind_save

Definition at line 196 of file AP_Radio_cypress.h.

◆ num_channels

uint16_t AP_Radio_cypress::num_channels

Definition at line 194 of file AP_Radio_cypress.h.

◆ offset

uint32_t AP_Radio_cypress::offset

Definition at line 223 of file AP_Radio_cypress.h.

◆ pending_data

uint8_t AP_Radio_cypress::pending_data[92]

Definition at line 228 of file AP_Radio_cypress.h.

◆ pkt_time1

uint16_t AP_Radio_cypress::pkt_time1 = 3000

Definition at line 204 of file AP_Radio_cypress.h.

◆ pkt_time2

uint16_t AP_Radio_cypress::pkt_time2 = 7000

Definition at line 205 of file AP_Radio_cypress.h.

◆ pn_bind

const uint8_t AP_Radio_cypress::pn_bind[]
staticprivate

Definition at line 112 of file AP_Radio_cypress.h.

◆ pn_codes

const uint8_t AP_Radio_cypress::pn_codes[5][9][8]
staticprivate

Definition at line 111 of file AP_Radio_cypress.h.

◆ protocol

enum dsm_protocol AP_Radio_cypress::protocol

Definition at line 177 of file AP_Radio_cypress.h.

◆ pwm_channels

uint16_t AP_Radio_cypress::pwm_channels[max_channels]

Definition at line 195 of file AP_Radio_cypress.h.

◆ radio_instance

AP_Radio_cypress* AP_Radio_cypress::radio_instance
staticprivate

Definition at line 84 of file AP_Radio_cypress.h.

◆ receive_start_us

uint32_t AP_Radio_cypress::receive_start_us

Definition at line 187 of file AP_Radio_cypress.h.

◆ receive_timeout_msec

uint32_t AP_Radio_cypress::receive_timeout_msec

Definition at line 188 of file AP_Radio_cypress.h.

◆ rssi

float AP_Radio_cypress::rssi

Definition at line 199 of file AP_Radio_cypress.h.

◆ sem

AP_HAL::Semaphore* AP_Radio_cypress::sem
private

Definition at line 172 of file AP_Radio_cypress.h.

◆ send_count

uint32_t AP_Radio_cypress::send_count

Definition at line 203 of file AP_Radio_cypress.h.

◆ send_irq_count

uint32_t AP_Radio_cypress::send_irq_count

Definition at line 202 of file AP_Radio_cypress.h.

◆ sequence

uint8_t AP_Radio_cypress::sequence

Definition at line 222 of file AP_Radio_cypress.h.

◆ sop_col

uint8_t AP_Radio_cypress::sop_col

Definition at line 182 of file AP_Radio_cypress.h.

◆ state

enum { ... } AP_Radio_cypress::state

◆ stats

AP_Radio::stats AP_Radio_cypress::stats
private

Definition at line 154 of file AP_Radio_cypress.h.

◆ sync

enum dsm2_sync AP_Radio_cypress::sync

Definition at line 197 of file AP_Radio_cypress.h.

◆ t_status

struct telem_status AP_Radio_cypress::t_status
private

Definition at line 239 of file AP_Radio_cypress.h.

Referenced by set_wifi_channel().

◆ telem_send_count

uint32_t AP_Radio_cypress::telem_send_count

Definition at line 214 of file AP_Radio_cypress.h.

◆ tx_bl_version

uint8_t AP_Radio_cypress::tx_bl_version

Definition at line 215 of file AP_Radio_cypress.h.

◆ tx_firmware_day

uint8_t AP_Radio_cypress::tx_firmware_day

Definition at line 208 of file AP_Radio_cypress.h.

◆ tx_firmware_month

uint8_t AP_Radio_cypress::tx_firmware_month

Definition at line 207 of file AP_Radio_cypress.h.

◆ tx_firmware_year

uint8_t AP_Radio_cypress::tx_firmware_year

Definition at line 206 of file AP_Radio_cypress.h.

◆ tx_pps

uint8_t AP_Radio_cypress::tx_pps

Definition at line 211 of file AP_Radio_cypress.h.

◆ tx_rssi

uint8_t AP_Radio_cypress::tx_rssi

Definition at line 210 of file AP_Radio_cypress.h.

◆ wait_call

struct hrt_call AP_Radio_cypress::wait_call
private

Definition at line 119 of file AP_Radio_cypress.h.


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