Per Söderstam / Mbed 2 deprecated driver_nRF2401A

Dependencies:   mbed

Committer:
persoder
Date:
Fri Aug 26 21:36:23 2011 +0000
Revision:
0:3fe71769ad07
Child:
1:d40d911b763a
Starting.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
persoder 0:3fe71769ad07 1 /** \file
persoder 0:3fe71769ad07 2 * \brief
persoder 0:3fe71769ad07 3 *
persoder 0:3fe71769ad07 4 * \author Per Söderstam © 2011
persoder 0:3fe71769ad07 5 */
persoder 0:3fe71769ad07 6
persoder 0:3fe71769ad07 7 #include <mbed.h>
persoder 0:3fe71769ad07 8 #include <inttypes.h>
persoder 0:3fe71769ad07 9
persoder 0:3fe71769ad07 10 /**
persoder 0:3fe71769ad07 11 *
persoder 0:3fe71769ad07 12 *
persoder 0:3fe71769ad07 13 */
persoder 0:3fe71769ad07 14 class nRF2401A
persoder 0:3fe71769ad07 15 {
persoder 0:3fe71769ad07 16 public:
persoder 0:3fe71769ad07 17 /**
persoder 0:3fe71769ad07 18 *
persoder 0:3fe71769ad07 19 */
persoder 0:3fe71769ad07 20 nRF2401A(PinName ce,
persoder 0:3fe71769ad07 21 PinName cs,
persoder 0:3fe71769ad07 22 PinName dr1,
persoder 0:3fe71769ad07 23 PinName clk1,
persoder 0:3fe71769ad07 24 PinName data)
persoder 0:3fe71769ad07 25 : _ce(DigitalOut(ce)),
persoder 0:3fe71769ad07 26 _cs(DigitalOut(cs)),
persoder 0:3fe71769ad07 27 _dr1(DigitalIn(dr1)),
persoder 0:3fe71769ad07 28 _clk1(DigitalOut(clk1)),
persoder 0:3fe71769ad07 29 _data(DigitalInOut(data))
persoder 0:3fe71769ad07 30 {
persoder 0:3fe71769ad07 31 return;
persoder 0:3fe71769ad07 32 }
persoder 0:3fe71769ad07 33
persoder 0:3fe71769ad07 34 /**
persoder 0:3fe71769ad07 35 *
persoder 0:3fe71769ad07 36 */
persoder 0:3fe71769ad07 37 nRF2401A& setDataPayloadLength(uint8_t n) { _channel_1_data_payload_len = n; return *this; }
persoder 0:3fe71769ad07 38
persoder 0:3fe71769ad07 39 /**
persoder 0:3fe71769ad07 40 *
persoder 0:3fe71769ad07 41 */
persoder 0:3fe71769ad07 42 nRF2401A& setAddress(uint8_t addr4, uint8_t addr3, uint8_t addr2, uint8_t addr1, uint8_t addr0, uint8_t n_bits)
persoder 0:3fe71769ad07 43 {
persoder 0:3fe71769ad07 44 _ctrl_packet_buf.channel_1_address[0] = addr4;
persoder 0:3fe71769ad07 45 _ctrl_packet_buf.channel_1_address[1] = addr3;
persoder 0:3fe71769ad07 46 _ctrl_packet_buf.channel_1_address[2] = addr2;
persoder 0:3fe71769ad07 47 _ctrl_packet_buf.channel_1_address[3] = addr1;
persoder 0:3fe71769ad07 48 _ctrl_packet_buf.channel_1_address[4] = addr0;
persoder 0:3fe71769ad07 49 _ctrl_packet_buf.channel_address_len = n_bits;
persoder 0:3fe71769ad07 50
persoder 0:3fe71769ad07 51 return *this;
persoder 0:3fe71769ad07 52 }
persoder 0:3fe71769ad07 53
persoder 0:3fe71769ad07 54 /**
persoder 0:3fe71769ad07 55 *
persoder 0:3fe71769ad07 56 */
persoder 0:3fe71769ad07 57 typedef enum {NO_CRC = 0x0, CRC_8 = 0x1, CRC_16 = 0x3} CRC_T;
persoder 0:3fe71769ad07 58
persoder 0:3fe71769ad07 59 /**
persoder 0:3fe71769ad07 60 *
persoder 0:3fe71769ad07 61 */
persoder 0:3fe71769ad07 62 nRF2401A& setCRCMode(CRC_T mode) { _ctrl_packet_buf.crc_config = mode; return *this; }
persoder 0:3fe71769ad07 63
persoder 0:3fe71769ad07 64 /**
persoder 0:3fe71769ad07 65 *
persoder 0:3fe71769ad07 66 */
persoder 0:3fe71769ad07 67 nRF2401A& setChannel(uint8_t ...
persoder 0:3fe71769ad07 68
persoder 0:3fe71769ad07 69 /**
persoder 0:3fe71769ad07 70 *
persoder 0:3fe71769ad07 71 */
persoder 0:3fe71769ad07 72 nRF2401A& flushControlPacket(...
persoder 0:3fe71769ad07 73
persoder 0:3fe71769ad07 74 read, write, attachRXHandler...
persoder 0:3fe71769ad07 75
persoder 0:3fe71769ad07 76 private:
persoder 0:3fe71769ad07 77
persoder 0:3fe71769ad07 78 DigitalOut _ce; /**< */
persoder 0:3fe71769ad07 79 DigitalOut _cs; /**< */
persoder 0:3fe71769ad07 80 DigitalIn _dr1; /**< */
persoder 0:3fe71769ad07 81 DigitalOut _clk1; /**< */
persoder 0:3fe71769ad07 82 DigitalInOut _data; /**< */
persoder 0:3fe71769ad07 83
persoder 0:3fe71769ad07 84 struct nRF2401A_ctrl_packet_t
persoder 0:3fe71769ad07 85 {
persoder 0:3fe71769ad07 86 uint8_t channel_2_data_payload_len; /**< */
persoder 0:3fe71769ad07 87 uint8_t channel_1_data_payload_len; /**< */
persoder 0:3fe71769ad07 88 uint8_t channel_2_address[5]; /**< */
persoder 0:3fe71769ad07 89 uint8_t channel_1_address[5]; /**< */
persoder 0:3fe71769ad07 90
persoder 0:3fe71769ad07 91 uint8_t channel_address_len : 6; /**< */
persoder 0:3fe71769ad07 92 uint8_t crc_config : 2; /**< */
persoder 0:3fe71769ad07 93
persoder 0:3fe71769ad07 94 uint8_t enable_dual_channel_mode : 1; /**< */
persoder 0:3fe71769ad07 95 uint8_t communicatioin_mode : 1; /**< */
persoder 0:3fe71769ad07 96 uint8_t rf_data_rate : 1; /**< */
persoder 0:3fe71769ad07 97 uint8_t xo_frequency : 3; /**< */
persoder 0:3fe71769ad07 98 uint8_t rf_power : 2; /**< */
persoder 0:3fe71769ad07 99
persoder 0:3fe71769ad07 100 uint8_t rf_channel : 7; /**< */
persoder 0:3fe71769ad07 101 uint8_t txr_switch : 1; /**< */
persoder 0:3fe71769ad07 102
persoder 0:3fe71769ad07 103 } _ctrl_packet_buf; /**< */
persoder 0:3fe71769ad07 104 }