Newer
Older
avrrfm / rfm69.h
/* 
 * File:   rfm69.h
 * Author: torsten.roemer@luniks.net
 *
 * Created on 28. Januar 2025, 19:55
 */

#ifndef RFM69_H
#define RFM69_H

#include <stdbool.h>
#include <math.h>
#include <util/delay.h>

#include "rfm69.h"
#include "pins.h"
#include "spi.h"
#include "usart.h"

#define FIFO        0x00
#define OP_MODE     0x01
#define FRF_MSB     0x07
#define FRF_MID     0x08
#define FRF_LSB     0x09
#define DIO_MAP1    0x25
#define DIO_MAP2    0x26
#define IRQ_FLAGS1  0x27
#define PREAMB_MSB  0x2c
#define PREAMB_LSB  0x2d
#define IRQ_FLAGS2  0x28
#define PCK_CFG1    0x37
#define NODE_ADDR   0x39
#define FIFO_THRESH 0x3c

#define MASK_MODE   0x0e

#define MODE_SLEEP  0x00
#define MODE_STDBY  0x04
#define MODE_FS     0x08
#define MODE_TX     0x0c
#define MODE_RX     0x10

/**
 * Initializes the radio module with the given carrier frequency in kilohertz.
 */
void initRadio(uint32_t kHz);

/**
 * Sets the carrier frequency in kilohertz.
 * 
 * @param kHz
 */
void setFreq(uint32_t freq);

/**
 * Transmits one byte and prints some info.
 */
void sendByte(uint8_t payload);

/**
 * Transmits up to 64 characters of the given string, excluding the
 * terminal '\\0' character. 
 * 
 * @param payload string to be sent
 * @return characters sent
 */
size_t sendString(char *payload);

uint8_t receiveByte(void);

#endif /* RFM69_H */