Jonathan Jones
/
Radios
Radio Structures in OOP
drivers/CC1101/CC1101.h@6:4a3dbfbc30f1, 2015-01-15 (annotated)
- Committer:
- jjones646
- Date:
- Thu Jan 15 07:15:33 2015 +0000
- Revision:
- 6:4a3dbfbc30f1
- Parent:
- 5:146523a0d1f4
socket interface confirmed working.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
jjones646 | 2:7d523bdd2f50 | 1 | #ifndef CC1101_RADIO_H |
jjones646 | 2:7d523bdd2f50 | 2 | #define CC1101_RADIO_H |
jjones646 | 2:7d523bdd2f50 | 3 | |
jjones646 | 2:7d523bdd2f50 | 4 | #include "mbed.h" |
jjones646 | 2:7d523bdd2f50 | 5 | #include "CommLink.h" |
jjones646 | 2:7d523bdd2f50 | 6 | #include "cmsis_os.h" |
jjones646 | 2:7d523bdd2f50 | 7 | #include "RTP.h" |
jjones646 | 3:dc7e9c6bc26c | 8 | #include "CC1101-Defines.h" |
jjones646 | 3:dc7e9c6bc26c | 9 | |
jjones646 | 3:dc7e9c6bc26c | 10 | #define CCXXX1_DEBUG_MODE 0 |
jjones646 | 2:7d523bdd2f50 | 11 | |
jjones646 | 2:7d523bdd2f50 | 12 | class CC1101 : public CommLink |
jjones646 | 2:7d523bdd2f50 | 13 | { |
jjones646 | 2:7d523bdd2f50 | 14 | public: |
jjones646 | 2:7d523bdd2f50 | 15 | // Default constructor |
jjones646 | 2:7d523bdd2f50 | 16 | CC1101(); |
jjones646 | 5:146523a0d1f4 | 17 | CC1101(PinName mosi, PinName miso, PinName sck, PinName cs, PinName int_pin = NC); |
jjones646 | 2:7d523bdd2f50 | 18 | |
jjones646 | 2:7d523bdd2f50 | 19 | // Deconstructor |
jjones646 | 2:7d523bdd2f50 | 20 | virtual ~CC1101(); |
jjones646 | 2:7d523bdd2f50 | 21 | |
jjones646 | 2:7d523bdd2f50 | 22 | // These must have implementations in the CC1101 class since it is a derived class of the base class CommLink |
jjones646 | 6:4a3dbfbc30f1 | 23 | virtual void reset(void); |
jjones646 | 6:4a3dbfbc30f1 | 24 | virtual int32_t selfTest(void); |
jjones646 | 2:7d523bdd2f50 | 25 | virtual bool isConnected(void); |
jjones646 | 2:7d523bdd2f50 | 26 | |
jjones646 | 3:dc7e9c6bc26c | 27 | // Set/Get the chip's operating channel |
jjones646 | 2:7d523bdd2f50 | 28 | void channel(uint16_t); |
jjones646 | 3:dc7e9c6bc26c | 29 | uint16_t channel(void); |
jjones646 | 3:dc7e9c6bc26c | 30 | |
jjones646 | 6:4a3dbfbc30f1 | 31 | // Set/Get the chip's address if applicable |
jjones646 | 6:4a3dbfbc30f1 | 32 | void address(uint8_t); |
jjones646 | 6:4a3dbfbc30f1 | 33 | uint8_t address(void); |
jjones646 | 6:4a3dbfbc30f1 | 34 | |
jjones646 | 6:4a3dbfbc30f1 | 35 | // Get the chip's datarate (baudrate) |
jjones646 | 3:dc7e9c6bc26c | 36 | uint16_t datarate(void); |
jjones646 | 3:dc7e9c6bc26c | 37 | |
jjones646 | 3:dc7e9c6bc26c | 38 | // The NOP command used to get the CC1101's status byte |
jjones646 | 3:dc7e9c6bc26c | 39 | uint8_t status(void); |
jjones646 | 3:dc7e9c6bc26c | 40 | uint8_t status(uint8_t); |
jjones646 | 3:dc7e9c6bc26c | 41 | uint8_t lqi(void); |
jjones646 | 3:dc7e9c6bc26c | 42 | uint8_t version(void); |
jjones646 | 3:dc7e9c6bc26c | 43 | int16_t rssi(void); |
jjones646 | 3:dc7e9c6bc26c | 44 | |
jjones646 | 3:dc7e9c6bc26c | 45 | int32_t powerUp(void); |
jjones646 | 2:7d523bdd2f50 | 46 | |
jjones646 | 2:7d523bdd2f50 | 47 | protected: |
jjones646 | 6:4a3dbfbc30f1 | 48 | // These must have implementations in the CC1101 class since it is a derived class of the base class CommLink |
jjones646 | 3:dc7e9c6bc26c | 49 | virtual int32_t sendData(uint8_t*, uint8_t); |
jjones646 | 3:dc7e9c6bc26c | 50 | virtual int32_t getData(uint8_t*, uint8_t*); |
jjones646 | 3:dc7e9c6bc26c | 51 | |
jjones646 | 3:dc7e9c6bc26c | 52 | // Reading/Writing registers |
jjones646 | 3:dc7e9c6bc26c | 53 | void write_reg(uint8_t, uint8_t); |
jjones646 | 3:dc7e9c6bc26c | 54 | void write_reg(uint8_t, uint8_t*, uint8_t); |
jjones646 | 3:dc7e9c6bc26c | 55 | uint8_t read_reg(uint8_t); |
jjones646 | 3:dc7e9c6bc26c | 56 | void read_reg(uint8_t, uint8_t*, uint8_t); |
jjones646 | 3:dc7e9c6bc26c | 57 | |
jjones646 | 6:4a3dbfbc30f1 | 58 | // Send a command strobe to the CC1101 (1 byte SPI transfer) |
jjones646 | 3:dc7e9c6bc26c | 59 | uint8_t strobe(uint8_t); |
jjones646 | 3:dc7e9c6bc26c | 60 | |
jjones646 | 6:4a3dbfbc30f1 | 61 | // Send the TX or RX command strobe for placing the CC1101 in the respective state |
jjones646 | 3:dc7e9c6bc26c | 62 | void tx_mode(void); |
jjones646 | 3:dc7e9c6bc26c | 63 | void rx_mode(void); |
jjones646 | 6:4a3dbfbc30f1 | 64 | void idle(void); |
jjones646 | 3:dc7e9c6bc26c | 65 | |
jjones646 | 6:4a3dbfbc30f1 | 66 | // Send the command strobe to flush the TX or RX buffers on the CC1101 |
jjones646 | 3:dc7e9c6bc26c | 67 | void flush_tx(void); |
jjones646 | 3:dc7e9c6bc26c | 68 | void flush_rx(void); |
jjones646 | 3:dc7e9c6bc26c | 69 | |
jjones646 | 3:dc7e9c6bc26c | 70 | void freq(uint32_t); |
jjones646 | 3:dc7e9c6bc26c | 71 | void datarate(uint32_t); // set data rate |
jjones646 | 5:146523a0d1f4 | 72 | void put_rf_settings(void); |
jjones646 | 5:146523a0d1f4 | 73 | void init(void); |
jjones646 | 5:146523a0d1f4 | 74 | |
jjones646 | 2:7d523bdd2f50 | 75 | private: |
jjones646 | 6:4a3dbfbc30f1 | 76 | |
jjones646 | 2:7d523bdd2f50 | 77 | |
jjones646 | 3:dc7e9c6bc26c | 78 | void calibrate(void); |
jjones646 | 3:dc7e9c6bc26c | 79 | void tiny_delay(void); |
jjones646 | 3:dc7e9c6bc26c | 80 | void rssi(uint8_t); |
jjones646 | 3:dc7e9c6bc26c | 81 | uint8_t mode(void); |
jjones646 | 3:dc7e9c6bc26c | 82 | |
jjones646 | 3:dc7e9c6bc26c | 83 | void assign_modem_params(void); |
jjones646 | 3:dc7e9c6bc26c | 84 | void assign_packet_params(void); |
jjones646 | 6:4a3dbfbc30f1 | 85 | void interface_freq(uint32_t); |
jjones646 | 3:dc7e9c6bc26c | 86 | void assign_channel_spacing(uint32_t); |
jjones646 | 3:dc7e9c6bc26c | 87 | void set_rf_settings(void); |
jjones646 | 3:dc7e9c6bc26c | 88 | void set_init_vars(void); |
jjones646 | 5:146523a0d1f4 | 89 | void power_on_reset(void); |
jjones646 | 3:dc7e9c6bc26c | 90 | |
jjones646 | 3:dc7e9c6bc26c | 91 | rf_settings_t rfSettings; |
jjones646 | 3:dc7e9c6bc26c | 92 | radio_state_t _mode; |
jjones646 | 3:dc7e9c6bc26c | 93 | pck_ctrl_t _pck_control; |
jjones646 | 3:dc7e9c6bc26c | 94 | modem_t _modem; |
jjones646 | 3:dc7e9c6bc26c | 95 | |
jjones646 | 3:dc7e9c6bc26c | 96 | uint16_t _channel; |
jjones646 | 3:dc7e9c6bc26c | 97 | uint16_t _datarate; |
jjones646 | 3:dc7e9c6bc26c | 98 | uint8_t _address; |
jjones646 | 3:dc7e9c6bc26c | 99 | uint8_t _lqi; |
jjones646 | 3:dc7e9c6bc26c | 100 | uint16_t _rssi; |
jjones646 | 3:dc7e9c6bc26c | 101 | uint8_t _chip_version; |
jjones646 | 3:dc7e9c6bc26c | 102 | uint32_t _base_freq; |
jjones646 | 2:7d523bdd2f50 | 103 | }; |
jjones646 | 2:7d523bdd2f50 | 104 | |
jjones646 | 2:7d523bdd2f50 | 105 | #endif // CC1101_RADIO_H |
jjones646 | 2:7d523bdd2f50 | 106 |