Traxxas TQ 1st gen: try 5
[DIY-Multiprotocol-TX-Module.git] / Multiprotocol / iface_cyrf6936.h
blobad4366315a15cf7f981ec042278b2d72f1c75de8
1 /*
2 This project is free software: you can redistribute it and/or modify
3 it under the terms of the GNU General Public License as published by
4 the Free Software Foundation, either version 3 of the License, or
5 (at your option) any later version.
7 Multiprotocol is distributed in the hope that it will be useful,
8 but WITHOUT ANY WARRANTY; without even the implied warranty of
9 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 GNU General Public License for more details.
12 You should have received a copy of the GNU General Public License
13 along with Multiprotocol. If not, see <http://www.gnu.org/licenses/>.
16 #ifndef _IFACE_CYRF6936_H_
17 #define _IFACE_CYRF6936_H_
18 enum {
19 CYRF_00_CHANNEL = 0x00,
20 CYRF_01_TX_LENGTH = 0x01,
21 CYRF_02_TX_CTRL = 0x02,
22 CYRF_03_TX_CFG = 0x03,
23 CYRF_04_TX_IRQ_STATUS = 0x04,
24 CYRF_05_RX_CTRL = 0x05,
25 CYRF_06_RX_CFG = 0x06,
26 CYRF_07_RX_IRQ_STATUS = 0x07,
27 CYRF_08_RX_STATUS = 0x08,
28 CYRF_09_RX_COUNT = 0x09,
29 CYRF_0A_RX_LENGTH = 0x0A,
30 CYRF_0B_PWR_CTRL = 0x0B,
31 CYRF_0C_XTAL_CTRL = 0x0C,
32 CYRF_0D_IO_CFG = 0x0D,
33 CYRF_0E_GPIO_CTRL = 0x0E,
34 CYRF_0F_XACT_CFG = 0x0F,
35 CYRF_10_FRAMING_CFG = 0x10,
36 CYRF_11_DATA32_THOLD = 0x11,
37 CYRF_12_DATA64_THOLD = 0x12,
38 CYRF_13_RSSI = 0x13,
39 CYRF_14_EOP_CTRL = 0x14,
40 CYRF_15_CRC_SEED_LSB = 0x15,
41 CYRF_16_CRC_SEED_MSB = 0x16,
42 CYRF_17_TX_CRC_LSB = 0x17,
43 CYRF_18_TX_CRC_MSB = 0x18,
44 CYRF_19_RX_CRC_LSB = 0x19,
45 CYRF_1A_RX_CRC_MSB = 0x1A,
46 CYRF_1B_TX_OFFSET_LSB = 0x1B,
47 CYRF_1C_TX_OFFSET_MSB = 0x1C,
48 CYRF_1D_MODE_OVERRIDE = 0x1D,
49 CYRF_1E_RX_OVERRIDE = 0x1E,
50 CYRF_1F_TX_OVERRIDE = 0x1F,
51 /*Register Files */
52 CYRF_20_TX_BUFFER = 0x20,
53 CYRF_21_RX_BUFFER = 0x21,
54 CYRF_22_SOP_CODE = 0x22,
55 CYRF_23_DATA_CODE = 0x23,
56 CYRF_24_PREAMBLE = 0x24,
57 CYRF_25_MFG_ID = 0x25,
58 /*****************/
59 CYRF_26_XTAL_CFG = 0x26,
60 CYRF_27_CLK_OVERRIDE = 0x27,
61 CYRF_28_CLK_EN = 0x28,
62 CYRF_29_RX_ABORT = 0x29,
63 CYRF_32_AUTO_CAL_TIME = 0x32,
64 CYRF_35_AUTOCAL_OFFSET = 0x35,
65 CYRF_39_ANALOG_CTRL = 0x39,
68 enum CYRF_PWR {
69 CYRF_PWR_100MW,
70 CYRF_PWR_10MW,
71 CYRF_PWR_DEFAULT,
74 enum FIND_CHANNEL {
75 FIND_CHANNEL_ANY = 0,
76 FIND_CHANNEL_EVEN = 1,
77 FIND_CHANNEL_ODD = 2,
80 /* SPI CYRF6936 */
82 void CYRF_Initialize();
83 int CYRF_Reset();
84 void CYRF_GetMfgData(u8 data[]);
86 void CYRF_SetTxRxMode(enum TXRX_State);
87 void CYRF_ConfigRFChannel(u8 ch);
88 void CYRF_SetPower(u8 power);
89 void CYRF_ConfigCRCSeed(u16 crc);
90 static void CYRF_StartReceive();
91 void CYRF_ConfigSOPCode(const u8 *sopcodes);
92 void CYRF_ConfigDataCode(const u8 *datacodes);
93 static u8 CYRF_ReadRSSI(u32 dodummyread);
94 static void CYRF_ReadDataPacket(u8 dpbuffer[]);
95 void CYRF_WriteDataPacket(const u8 dpbuffer[]);
96 static void CYRF_WriteDataPacketLen(const u8 dpbuffer[], u8 len);
97 void CYRF_WriteRegister(u8 address, u8 data);
98 u8 CYRF_ReadRegister(u8 address);
99 void CYRF_WritePreamble(u32 preamble);
100 u8 CYRF_MaxPower();
101 void CYRF_FindBestChannels(u8 *channels, u8 len, u8 minspace, u8 minchan, u8 maxchan);
103 #endif