blob: 010db431ffb4e4fa0918346f18ada6621798c0df (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
|
#ifndef LAKS_RADIO_RADIO_H
#define LAKS_RADIO_RADIO_H
class RADIO_NRF_t {
private:
struct tasks_t {
volatile uint32_t TXEN;
volatile uint32_t RXEN;
volatile uint32_t START;
volatile uint32_t STOP;
volatile uint32_t DISABLE;
volatile uint32_t RSSISTART;
volatile uint32_t RSSISTOP;
volatile uint32_t BCSTART;
volatile uint32_t BCSTOP;
volatile uint32_t EDSTART;
volatile uint32_t EDSTOP;
volatile uint32_t CCASTART;
volatile uint32_t CCASTOP;
};
struct events_t {
volatile uint32_t READY;
volatile uint32_t ADDRESS;
volatile uint32_t PAYLOAD;
volatile uint32_t END;
volatile uint32_t DISABLED;
volatile uint32_t DEVMATCH;
volatile uint32_t DEVMISS;
volatile uint32_t RSSIEND;
uint32_t _reserved[2];
volatile uint32_t BCMATCH;
uint32_t _reserved_1;
volatile uint32_t CRCOK;
volatile uint32_t CRCERROR;
volatile uint32_t FRAMESTART;
volatile uint32_t EDEND;
volatile uint32_t EDSTOPPED;
volatile uint32_t CCAIDLE;
volatile uint32_t CCABUSY;
volatile uint32_t CCASTOPPED;
volatile uint32_t RATEBOOST;
volatile uint32_t TXREADY;
volatile uint32_t RXREADY;
volatile uint32_t MHRMATCH;
uint32_t _reserved_2[3];
volatile uint32_t PHYEND;
};
struct reg_t {
volatile uint32_t SHORTS;
uint32_t _reserved[63];
volatile uint32_t INTEN;
volatile uint32_t INTENSET;
volatile uint32_t INTENCLR;
uint32_t _reserved_1[61];
volatile uint32_t CRCSTATUS;
uint32_t _reserved_2;
volatile uint32_t RXMATCH;
volatile uint32_t RXCRC;
volatile uint32_t DAI;
volatile uint32_t PDUSTAT;
uint32_t _reserved_3[59];
volatile uint32_t PACKETPTR;
volatile uint32_t FREQUENCY;
volatile uint32_t TXPOWER;
volatile uint32_t MODE;
volatile uint32_t PCNF0;
volatile uint32_t PCNF1;
volatile uint32_t BASE[2];
volatile uint32_t PREFIX[2];
volatile uint32_t TXADDRESS;
volatile uint32_t RXADDRESSES;
volatile uint32_t CRCCNF;
volatile uint32_t CRCPOLY;
volatile uint32_t CRCINIT;
uint32_t _reserved_4;
volatile uint32_t TIFS;
volatile uint32_t RSSISAMPLE;
uint32_t _reserved_5;
volatile uint32_t STATE;
volatile uint32_t DATAWHITEIV;
uint32_t _reserved_6[2];
volatile uint32_t BCC;
uint32_t _reserved_7[39];
volatile uint32_t DAB[8];
volatile uint32_t DAP[8];
volatile uint32_t DACNF;
volatile uint32_t MHRMATCHCONF;
volatile uint32_t MHRMATCHMAS;
uint32_t _reserved_8;
volatile uint32_t MODECNF0;
uint32_t _reserved_9[3];
volatile uint32_t SFD;
volatile uint32_t EDCNT;
volatile uint32_t EDSAMPLE;
volatile uint32_t CCACTRL;
uint32_t _reserved_10[611];
volatile uint32_t POWER;
};
public:
tasks_t& tasks;
events_t& events;
reg_t& reg;
RADIO_NRF_t(uint32_t reg_addr) :
tasks(*(tasks_t*)(reg_addr + 0x0)),
events(*(events_t*)(reg_addr + 0x100)),
reg(*(reg_t*)(reg_addr + 0x200)) {}
};
static RADIO_NRF_t RADIO(0x40001000);
#endif
|