Library for communicating with a Hubsan X4 quad
Diff: HubsanTx.h
- Revision:
- 0:85bb69ce74b4
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/HubsanTx.h Thu Jan 01 19:17:19 2015 +0000 @@ -0,0 +1,58 @@ +#ifndef _HUBSAN_X4_TX +#define _HUBSAN_X4_TX + +#include "A7105.h" + +enum{ + FLAG_VIDEO= 0x01, // record video + FLAG_FLIP = 0x08, // enable flips + FLAG_LED = 0x04 // enable LEDs +}; + +static const uint8_t kAllowedChannels[] = + {0x14, 0x1E, 0x28, 0x32, 0x3C, 0x46, 0x50, 0x5A, 0x64, 0x6E, 0x78, 0x82}; +static const uint32_t kTxId = 0xDB042679; + +/** + * Class for communicating with a Hubsan X4 using the A7105TxRx library + * + * Example: + * @code + * #include "mbed.h" + * #include "HubsanTx.h" + * + * #define A7105_SPI_FREQUENCY 10000000 // 10MHz + * + * HubsanTx hubsan(D4, D5, D3, D6, A7105_SPI_FREQUENCY); + * + * int main() { + * // init + * hubsan.init(); + * } + * @endcode + */ +class HubsanTx : public A7105 { + public: + /** + * @param mosi Pin used to transmit data to the slave + * @param miso Pin used to receive data from the slave + * @param clk Pin used for the clock + * @param cs Pin used for the chip select + * @param freqHz Frequency used to clock data in and out + */ + HubsanTx(PinName mosi, PinName miso, PinName clk, PinName cs, uint32_t freqHz); + + /** + * Initialize the A7105 to communicate with a Hubsan X4 + */ + int8_t init(); + + private: + uint8_t _packet[16]; + uint8_t _channel; + uint32_t _sessionId; + uint8_t _state; + uint8_t _packetCount; +}; + +#endif // _HUBSAN_X4_TX \ No newline at end of file