Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
nRF2401A.h@0:3fe71769ad07, 2011-08-26 (annotated)
- Committer:
- persoder
- Date:
- Fri Aug 26 21:36:23 2011 +0000
- Revision:
- 0:3fe71769ad07
- Child:
- 1:d40d911b763a
Starting.
Who changed what in which revision?
| User | Revision | Line number | New 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 | } |