/* * File: mrf24j.h * copyright Karl Palsson, karlp@tweak.net.au, 2011 * modified BSD License / apache license */ #ifndef LIB_MRF24J_H #define LIB_MRF24J_H #include "WProgram.h" #include "SPI.h" #define MRF_RXMCR 0x00 #define MRF_PANIDL 0x01 #define MRF_PANIDH 0x02 #define MRF_SADRL 0x03 #define MRF_SADRH 0x04 #define MRF_EADR0 0x05 #define MRF_EADR1 0x06 #define MRF_EADR2 0x07 #define MRF_EADR3 0x08 #define MRF_EADR4 0x09 #define MRF_EADR5 0x0A #define MRF_EADR6 0x0B #define MRF_EADR7 0x0C #define MRF_RXFLUSH 0x0D //#define MRF_Reserved 0x0E //#define MRF_Reserved 0x0F #define MRF_ORDER 0x10 #define MRF_TXMCR 0x11 #define MRF_ACKTMOUT 0x12 #define MRF_ESLOTG1 0x13 #define MRF_SYMTICKL 0x14 #define MRF_SYMTICKH 0x15 #define MRF_PACON0 0x16 #define MRF_PACON1 0x17 #define MRF_PACON2 0x18 //#define MRF_Reserved 0x19 #define MRF_TXBCON0 0x1A // TXNCON: TRANSMIT NORMAL FIFO CONTROL REGISTER (ADDRESS: 0x1B) #define MRF_TXNCON 0x1B #define MRF_TXNTRIG 0 #define MRF_TXNSECEN 1 #define MRF_TXNACKREQ 2 #define MRF_INDIRECT 3 #define MRF_FPSTAT 4 #define MRF_TXG1CON 0x1C #define MRF_TXG2CON 0x1D #define MRF_ESLOTG23 0x1E #define MRF_ESLOTG45 0x1F #define MRF_ESLOTG67 0x20 #define MRF_TXPEND 0x21 #define MRF_WAKECON 0x22 #define MRF_FRMOFFSET 0x23 // TXSTAT: TX MAC STATUS REGISTER (ADDRESS: 0x24) #define MRF_TXSTAT 0x24 #define TXNRETRY1 7 #define TXNRETRY0 6 #define CCAFAIL 5 #define TXG2FNT 4 #define TXG1FNT 3 #define TXG2STAT 2 #define TXG1STAT 1 #define TXNSTAT 0 #define MRF_TXBCON1 0x25 #define MRF_GATECLK 0x26 #define MRF_TXTIME 0x27 #define MRF_HSYMTMRL 0x28 #define MRF_HSYMTMRH 0x29 #define MRF_SOFTRST 0x2A //#define MRF_Reserved 0x2B #define MRF_SECCON0 0x2C #define MRF_SECCON1 0x2D #define MRF_TXSTBL 0x2E //#define MRF_Reserved 0x2F #define MRF_RXSR 0x30 #define MRF_INTSTAT 0x31 #define MRF_INTCON 0x32 #define MRF_GPIO 0x33 #define MRF_TRISGPIO 0x34 #define MRF_SLPACK 0x35 #define MRF_RFCTL 0x36 #define MRF_SECCR2 0x37 #define MRF_BBREG0 0x38 #define MRF_BBREG1 0x39 #define MRF_BBREG2 0x3A #define MRF_BBREG3 0x3B #define MRF_BBREG4 0x3C //#define MRF_Reserved 0x3D #define MRF_BBREG6 0x3E #define MRF_CCAEDTH 0x3F #define MRF_RFCON0 0x200 #define MRF_RFCON1 0x201 #define MRF_RFCON2 0x202 #define MRF_RFCON3 0x203 #define MRF_RFCON5 0x205 #define MRF_RFCON6 0x206 #define MRF_RFCON7 0x207 #define MRF_RFCON8 0x208 #define MRF_SLPCAL0 0x209 #define MRF_SLPCAL1 0x20A #define MRF_SLPCAL2 0x20B #define MRF_RSSI 0x210 #define MRF_SLPCON0 0x211 #define MRF_SLPCON1 0x220 #define MRF_WAKETIMEL 0x222 #define MRF_WAKETIMEH 0x223 #define MRF_REMCNTL 0x224 #define MRF_REMCNTH 0x225 #define MRF_MAINCNT0 0x226 #define MRF_MAINCNT1 0x227 #define MRF_MAINCNT2 0x228 #define MRF_MAINCNT3 0x229 #define MRF_TESTMODE 0x22F #define MRF_ASSOEADR1 0x231 #define MRF_ASSOEADR2 0x232 #define MRF_ASSOEADR3 0x233 #define MRF_ASSOEADR4 0x234 #define MRF_ASSOEADR5 0x235 #define MRF_ASSOEADR6 0x236 #define MRF_ASSOEADR7 0x237 #define MRF_ASSOSADR0 0x238 #define MRF_ASSOSADR1 0x239 #define MRF_UPNONCE0 0x240 #define MRF_UPNONCE1 0x241 #define MRF_UPNONCE2 0x242 #define MRF_UPNONCE3 0x243 #define MRF_UPNONCE4 0x244 #define MRF_UPNONCE5 0x245 #define MRF_UPNONCE6 0x246 #define MRF_UPNONCE7 0x247 #define MRF_UPNONCE8 0x248 #define MRF_UPNONCE9 0x249 #define MRF_UPNONCE10 0x24A #define MRF_UPNONCE11 0x24B #define MRF_UPNONCE12 0x24C #define MRF_I_RXIF 0b00001000 #define MRF_I_TXNIF 0b00000001 class Mrf24j { public: Mrf24j(int pin_reset, int pin_chip_select, int pin_interrupt); void mrf_reset(void); void mrf_init(void); byte mrf_read_short(byte address); byte mrf_read_long(word address); void mrf_write_short(byte address, byte data); void mrf_write_long(word address, byte data); word mrf_pan_read(void); void mrf_pan_write(word panid); void mrf_address16_write(word address16); word mrf_address16_read(void); void mrf_set_interrupts(void); // Set the channel to 12, 2.41Ghz, xbee channel 0xC void mrf_set_channel(void); void mrf_send16(word dest16, byte len, char * data); private: int _pin_reset; int _pin_cs; int _pin_int; }; #endif /* LIB_MRF24J_H */