123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
- #pragma once
- #include <AP_HAL/AP_HAL.h>
- #include <AP_Param/AP_Param.h>
- #include <GCS_MAVLink/GCS.h>
- class AP_Radio_backend;
- class AP_Radio
- {
- public:
- friend class AP_Radio_backend;
-
- AP_Radio(void);
-
- bool init(void);
-
- bool reset(void);
-
- bool send(const uint8_t *pkt, uint16_t len);
-
- void start_recv_bind(void);
-
- uint32_t last_recv_us(void);
-
- uint8_t num_channels(void);
-
- uint16_t read(uint8_t chan);
-
- void update(void);
-
- uint32_t get_tx_version(void);
- struct stats {
- uint32_t bad_packets;
- uint32_t recv_errors;
- uint32_t recv_packets;
- uint32_t lost_packets;
- uint32_t timeouts;
- };
- enum ap_radio_type {
- RADIO_TYPE_NONE=0,
- RADIO_TYPE_CYRF6936=1,
- RADIO_TYPE_CC2500=2,
- RADIO_TYPE_BK2425=3,
- RADIO_TYPE_AUTO=100,
- };
- enum ap_radio_protocol {
- PROTOCOL_AUTO=0,
- PROTOCOL_DSM2=1,
- PROTOCOL_DSMX=2,
- PROTOCOL_D16=3,
- PROTOCOL_CC2500_GFSK=4,
- };
-
- const struct stats &get_stats(void);
- static const struct AP_Param::GroupInfo var_info[];
-
- static AP_Radio *get_singleton(void)
- {
- return _singleton;
- }
-
- void handle_data_packet(mavlink_channel_t chan, const mavlink_data96_t &m);
-
- void set_wifi_channel(uint8_t channel);
-
- void play_tune(const char *tune_str);
-
- void change_txmode(void);
- private:
- AP_Radio_backend *driver;
- AP_Int8 radio_type;
- AP_Int8 protocol;
- AP_Int8 debug_level;
- AP_Int8 disable_crc;
- AP_Int8 rssi_chan;
- AP_Int8 pps_chan;
- AP_Int8 tx_rssi_chan;
- AP_Int8 tx_pps_chan;
- AP_Int8 telem_enable;
- AP_Int8 transmit_power;
- AP_Int8 tx_max_power;
- AP_Int8 fcc_test;
- AP_Int8 stick_mode;
- AP_Int8 factory_test;
- AP_Int8 tx_buzzer_adjust;
- AP_Int8 auto_bind_time;
- AP_Int8 auto_bind_rssi;
- static AP_Radio *_singleton;
- };
|