For robots and stuff
Diff: Radio/Radio.h
- Revision:
- 1:05a48c038381
- Parent:
- 0:c5afea7b9057
- Child:
- 2:c42a035d71ed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Radio/Radio.h Sun Dec 28 06:28:42 2014 +0000 @@ -0,0 +1,86 @@ +#ifndef RADIO_H +#define RADIO_H + +#if 0 + +#include "mbed.h" +#include "rtos.h" + +// THREAD SUPPORT SIGNALS +#define START_THREAD 0x01 +#define NEW_DATA 0x02 +#define SET_LED_TICK 0x04 + +typedef struct RTP_t { + uint8_t *payload; + uint8_t port; + bool ack; + uint8_t destination; + uint8_t source; + uint8_t size; +} RTP_t; + + +class Radio +{ +public: + Radio(); + Radio(PinName, PinName); + virtual ~Radio() {}; + + bool send(const RTP_t&); + + virtual void address(uint8_t address) {}; + uint8_t address(void) const { + return _addr; + } + + virtual void freq(uint32_t) {}; + uint32_t freq(void) const { + return _freq; + } + + virtual void channel(uint8_t) {}; + uint8_t channel(void) const { + return _channel; + } + + virtual void powerUp(void) = 0; + + void mailbox(const Mail<RTP_t, 6>*); + +protected: + virtual void put_pck(uint8_t*, uint8_t) = 0; + virtual bool get_pck(uint8_t*, uint8_t*) = 0; + + static const int BUFFER_SIZE = 70; + uint8_t buffer[BUFFER_SIZE]; + + Mail<RTP_t, 6> _rx_data; + Mail<RTP_t, 5> _tx_data; + + bool _need_ack; + uint8_t _channel; + uint32_t _freq; + uint8_t _addr; + int8_t _rssi; + + static void transmit_thread(void const*); + static void receive_thread(void const*); +SPI *_spi; + +private: + void isr_receive(void); + InterruptIn *_rx_int; + DigitalOut _tx_led; + DigitalOut _rx_led; + static void led_tick(void const*); + + Thread _receive_thread; + Thread _transmit_thread; + Thread _tx_led_thread; + Thread _rx_led_thread; +}; + +#endif // RADIO_H +#endif \ No newline at end of file