| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- #ifndef NRF24L01_H
- #define NRF24L01_H
-
- #define PACKET_LENGTH 32
-
- #define PACKET_PAYLOAD_BUFFER_LENGTH 22
-
- /* AVR I/O pin definionts */
- #define NRF_CE_DDR DDRD
- #define NRF_CE_PORT PORTD
- #define NRF_CE_PIN PD7
-
- #define NRF_CSN_DDR DDRD
- #define NRF_CSN_PORT PORTD
- #define NRF_CSN_PIN PD6
-
- #define NRF_IRQ_DDR DDRD
- #define NRF_IRQ_PORT PORTD
- #define NRF_IRQ_PIN PD5
- #define NRF_IRQ_PORTIN PIND
-
-
- void Initialize_NRF24L01(void);
- void Set_NRF24L01_Pins(void);
- void Configure_Transmission(uint8_t moduleId);
- uint8_t Read_NRF_Status_Register(void);
- uint8_t Read_NRF_Register(uint8_t address);
- void Write_NRF_Register(uint8_t address, uint8_t registerContents);
- void Send_Activate_Command(void);
- bool NRF24L01_Send_Message(uint8_t *buffer, uint8_t length);
- bool NRF24L01_Receive_Message(uint8_t *buffer, uint8_t duration);
- void Write_Message_To_TX_FIFO(uint8_t length, uint8_t * buffer);
- void Read_Message_From_RX_FIFO(uint8_t length, uint8_t * buffer);
- void Set_TX_Address(uint8_t * txAddress, uint8_t length);
- void Set_RX_P0_Address(uint8_t * rxAddress, uint8_t length);
- void Set_RX_P1_Address(uint8_t * rxAddress, uint8_t length);
-
- typedef enum
- {
- PACKET_TYPE_GET_SALT = 0,
- PACKET_TYPE_SALT = 1,
- PACKET_TYPE_REPORT = 2,
- PACKET_TYPE_GET_VALUES = 3,
- PACKET_TYPE_VALUES = 4,
- } PACKET_TYPE;
-
- typedef enum
- {
- VALUE_TYPE_TIME = 0,
- VALUE_TYPE_TEMPERATURE = 1,
- VALUE_TYPE_PRESSURE = 2,
- VALUE_TYPE_HUMIDITY = 3,
- } VALUE_TYPES;
-
- typedef struct __attribute__((packed)) BITFIELD_PACKET_COUNT_ELEMENT
- {
- uint8_t packetType : 5;
- uint8_t elementCount : 3;
- } BITFIELD_PACKET_COUNT_ELEMENT;
-
- typedef struct __attribute__((packed)) PACKET
- {
- uint64_t salt; /* 1 byte device id, 7 bytes remainder */
- union {
- struct {
- BITFIELD_PACKET_COUNT_ELEMENT packetIdentifier;
- uint8_t valueTypeTemperature;
- int16_t temperature;
- uint8_t valueTypePressure;
- uint32_t pressure;
- uint8_t valueTypeHumidity;
- uint16_t humidity;
- uint8_t unused[10];
- } reportData;
-
- struct {
- BITFIELD_PACKET_COUNT_ELEMENT packetIdentifier;
- uint8_t salt[7];
- uint8_t unused[14];
- } saltData;
-
- struct {
- BITFIELD_PACKET_COUNT_ELEMENT packetIdentifier;
- uint8_t unused[21];
- } getSaltData;
-
- uint8_t buffer[PACKET_PAYLOAD_BUFFER_LENGTH];
- }payload;
- uint16_t crc;
- } PACKET;
-
-
- #endif
|