For robots and stuff

Dependents:   Base Station

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