#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