Radio Structures in OOP

Dependencies:   mbed mbed-rtos

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?

UserRevisionLine numberNew 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