MR16/sx1281-driver-c/sx1281.h
2025-11-29 17:30:50 +08:00

111 lines
2.6 KiB
C

#pragma once
#ifdef __cplusplus
extern "C" {
#endif
/* Includes ----------------------------------------------------------------- */
#include <stdint.h>
#include <stdbool.h>
#include "sx1281_driver.h"
#include "device/device.h"
/* USER INCLUDE BEGIN */
/* USER INCLUDE END */
/* Exported constants ------------------------------------------------------- */
/* Exported macro ----------------------------------------------------------- */
/*!
* \brief Defines the buffer size, i.e. the payload size
*/
#define BUFFER_SIZE 5
/* Exported types ----------------------------------------------------------- */
typedef enum {
MODE_BLE, /* Bluetooth Low Energy */
MODE_LORA, /* Long Range */
MODE_GFSK, /* Gaussian Frequency Shift Keying */
MODE_FLRC /* Fast Long Range Codec */
}SX1281_Mode_t;
typedef enum {
LOWPOWER,
RUNNING,
RX_DONE,
RX_TIMEOUT,
RX_ERROR,
TX_DONE,
TX_TIMEOUT,
LORA_CAD_DONE
}SX1281_States_t;
typedef enum {
RF_BAUDRATE_LORA_216B=0,
RF_BAUDRATE_LORA_001K,
RF_BAUDRATE_LORA_005K,
RF_BAUDRATE_LORA_010K,
RF_BAUDRATE_LORA_020K,
RF_BAUDRATE_LORA_061K,
RF_BAUDRATE_LORA_127K,
RF_BAUDRATE_LORA_203K,
RF_BAUDRATE_LORA_NUM,
RF_BAUDRATE_FLRC_130K,
RF_BAUDRATE_FLRC_260K,
RF_BAUDRATE_FLRC_520K,
RF_BAUDRATE_FLRC_1040K,
RF_BAUDRATE_FLRC_NUM,
RF_BAUDRATE_NONE
}SX1281_Baudrate_t;
typedef struct
{
uint8_t SignalBw; // LORA_BW_0200, LORA_BW_0400, LORA_BW_0800, LORA_BW_1600,
uint8_t SpreadingFactor; // LORA_SF5~LORA_SF12
uint8_t ErrorCoding; // 1-LORA_CR_4_5, 2-LORA_CR_4_6, 3-LORA_CR_4_7 , 4-LORA_CR_4_8 , 5-LORA_CR_LI_4_5, 6-LORA_CR_LI_4_6, 7-LORA_CR_LI_4_7,
}SX1281_LORAConfig_t;
typedef struct
{
uint8_t BitrateBandwidth; //@RadioFlrcBitrates_t
uint8_t CodingRate; //@RadioFlrcCodingRates_t
uint8_t ModulationShaping; //@RadioModShapings_t
}SX1281_FLRCConfig_t;
typedef struct {
int8_t txOutputPower;//The range of the output power is [-18..+13] dBm
PacketParams_t packetParams;
ModulationParams_t modulationParams;
SX1281_Mode_t mode;
SX1281_Baudrate_t baudrate;
PacketStatus_t packetStatus;
int8_t rxBuffer[BUFFER_SIZE];
}SX1281_t;
/* Exported functions prototypes -------------------------------------------- */
/* USER FUNCTION BEGIN */
int8_t SX1281_Init(SX1281_t *radio, SX1281_Mode_t mode);
int8_t SX1281_SetRXSingle(void);
int8_t SX1281_SetRXSuccessive(void);
int8_t SX1281_SetTX (void);
int8_t SX1281_Running(void);
void SetBLEAdvertisingPacket(SX1281_t *radio, uint8_t *data, uint8_t length);
/* USER FUNCTION END */
#ifdef __cplusplus
}
#endif