license: update source file and licensing files
[libsi24] / libsi24reg.h
1 /* Copyright (C) 
2  * 2023 - Robin Krens
3  * This program is free software; you can redistribute it and/or
4  * modify it under the terms of the GNU General Public License
5  * as published by the Free Software Foundation; either version 2
6  * of the License, or (at your option) any later version.
7  * 
8  * This program is distributed in the hope that it will be useful,
9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11  * GNU General Public License for more details.
12  * 
13  * You should have received a copy of the GNU General Public License
14  * along with this program; if not, write to the Free Software
15  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
16  * 
17  */
18
19 /* SI24R1 commands */
20 #define SI24_R_REGISTER 0x00
21 #define SI24_W_REGISTER 0x20
22 #define SI24_R_RX_PAYLOAD 0x61
23 #define SI24_W_TX_PAYLOAD 0xA0
24 #define SI24_FLUSH_TX 0xE1
25 #define SI24_FLUSH_RX 0xE2
26 #define SI24_REUSE_TX_PL 0xE3
27 #define SI24_RX_PL_WID 0x60
28 #define SI24_W_ACK_PAYLOAD 0xA8
29 #define SI24_W_TX_PAYLOAD_NO_ACK 0xB0
30 #define SI24_NOP 0xFF
31
32 /* SI24R1 register addresses */
33 #define SI24_REG_CONFIG 0x00
34 #define SI24_REG_EN_AA 0x01
35 #define SI24_REG_EN_RXADDR 0x02
36 #define SI24_REG_SETUP_AW 0x03
37 #define SI24_REG_SETUP_RETR 0x04
38 #define SI24_REG_RF_CH 0x05
39 #define SI24_REG_RF_SETUP 0x06
40 #define SI24_REG_STATUS 0x07
41 #define SI24_REG_OBSERVE_TX 0x08
42 #define SI24_REG_RSSI 0x09
43 #define SI24_REG_RX_ADDR_P0 0x0A
44 #define SI24_REG_RX_ADDR_P1 0x0B 
45 #define SI24_REG_RX_ADDR_P2 0x0C
46 #define SI24_REG_RX_ADDR_P3 0x0D
47 #define SI24_REG_RX_ADDR_P4 0x0E
48 #define SI24_REG_RX_ADDR_P5 0x0F
49 #define SI24_REG_TX_ADDR 0x10
50 #define SI24_REG_RX_PW_P0 0x11
51 #define SI24_REG_RX_PW_P1 0x12
52 #define SI24_REG_RX_PW_P2 0x13
53 #define SI24_REG_RX_PW_P3 0x14
54 #define SI24_REG_RX_PW_P4 0x15
55 #define SI24_REG_RX_PW_P5 0x16
56 #define SI24_REG_FIFO_SATUS 0x17
57 #define SI24_REG_DYNPD 0x1C
58 #define SI24_REG_FEATURE 0x1D
59
60 /* config register */
61 #define PRIM_RX 0x0
62 #define PWR_UP 0x1
63 #define CRCO 0x2
64 #define EN_CRC 0x3
65 #define MASK_MAX_RT 0x4
66 #define MASK_TX_DS 0x5
67 #define MASK_RX_DR 0x6
68
69 #define ENAA_P0 0x0
70 #define ENAA_P1 0x1
71 #define ENAA_P2 0x2
72 #define ENAA_P3 0x3
73 #define ENAA_P4 0x4
74 #define ENAA_P5 0x5
75
76 #define ERX_P0 0x0
77 #define ERX_P1 0x1
78 #define ERX_P2 0x2
79 #define ERX_P3 0x3
80 #define ERX_P4 0x4
81 #define ERX_P5 0x5
82
83 #define AW_3 0x1
84 #define AW_4 0x2
85 #define AW_5 0x3
86
87 #define ARD(x) (x << 4)
88 #define ARC(x) (x & 0xF)
89
90 #define RF_CH 0x0
91
92 #define RF_PWR 0x0
93 #define RF_DR_HIGH 0x03
94 #define PLL_LOCK 0x04
95 #define RF_DR_LOW 0x05
96 #define CONT_WAVE 0x07
97
98 #define PLOS_CNT(x) (x & 0xF0)
99 #define ARC_CNT(x) (x & 0x0F)
100
101 #define RSSI 0x0
102
103 #define RX_EMPTY 0x0
104 #define RX_FULL 0x1
105 #define TX_EMPTY 0x4
106 #define TX_REUSE 0x6
107
108 #define DPL_P0 0x0
109 #define DPL_P1 0x1
110 #define DPL_P2 0x2
111 #define DPL_P3 0x3
112 #define DPL_P4 0x4
113 #define DPL_P5 0x5
114
115 #define EN_DYN_ACK 0x0
116 #define EN_ACK_PAY 0x1
117 #define EN_DPL 0x2
118                         
119 #define TX_FULL 0x0
120 #define RX_P_NO 0x1
121 #define MAX_RT 0x4
122 #define TX_DS 0x5
123 #define RX_DR 0x6