Enhance llcc68 definitions with new bandwidth and coding rate enums
- Added a new bandwidth enum value for 7.8MHz and corresponding string conversion function. - Introduced a string conversion function for coding rates. - Implemented a utility function to safely convert uint8_t to optional for spreading factors. - Enhanced the modulation parameters structure with a to_string method for better representation.
This commit is contained in:
@ -962,8 +962,8 @@ read_data_internal() {
|
|||||||
APP_RADIO_RETURN_ERR(irq_);
|
APP_RADIO_RETURN_ERR(irq_);
|
||||||
const auto st_ = get_status();
|
const auto st_ = get_status();
|
||||||
APP_RADIO_RETURN_ERR(st_);
|
APP_RADIO_RETURN_ERR(st_);
|
||||||
const auto irq = std::move(*irq_);
|
const auto irq = *irq_;
|
||||||
const auto st = std::move(*st_);
|
const auto st = *st_;
|
||||||
if (irq & RADIOLIB_SX126X_IRQ_TIMEOUT || st.command_status == CommandStatus::COMMAND_TIMEOUT) {
|
if (irq & RADIOLIB_SX126X_IRQ_TIMEOUT || st.command_status == CommandStatus::COMMAND_TIMEOUT) {
|
||||||
return ue_t{error_t{error::RADIO_RX_TIMEOUT}};
|
return ue_t{error_t{error::RADIO_RX_TIMEOUT}};
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,6 +6,9 @@
|
|||||||
#define LLCC68_DEFINITIONS_H
|
#define LLCC68_DEFINITIONS_H
|
||||||
#include <cstddef>
|
#include <cstddef>
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
|
#include <optional>
|
||||||
|
#include <string>
|
||||||
|
#include <format>
|
||||||
#include <tuple>
|
#include <tuple>
|
||||||
#include <variant>
|
#include <variant>
|
||||||
#include "radiolib_definitions.hpp"
|
#include "radiolib_definitions.hpp"
|
||||||
@ -13,6 +16,7 @@
|
|||||||
namespace app::driver::llcc68 {
|
namespace app::driver::llcc68 {
|
||||||
using freq_t = float;
|
using freq_t = float;
|
||||||
enum LoRaBandwidth : uint8_t {
|
enum LoRaBandwidth : uint8_t {
|
||||||
|
BW_7_8 = 0x00,
|
||||||
BW_10_4 = 0x08,
|
BW_10_4 = 0x08,
|
||||||
BW_15_6 = 0x01,
|
BW_15_6 = 0x01,
|
||||||
BW_20_8 = 0x09,
|
BW_20_8 = 0x09,
|
||||||
@ -24,6 +28,33 @@ enum LoRaBandwidth : uint8_t {
|
|||||||
BW_500_0 = 0x06,
|
BW_500_0 = 0x06,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
inline const char *bw_to_string(const LoRaBandwidth &bw) {
|
||||||
|
switch (bw) {
|
||||||
|
case LoRaBandwidth::BW_7_8:
|
||||||
|
return "7.8MHz";
|
||||||
|
case LoRaBandwidth::BW_10_4:
|
||||||
|
return "10.4MHz";
|
||||||
|
case LoRaBandwidth::BW_15_6:
|
||||||
|
return "15.6MHz";
|
||||||
|
case LoRaBandwidth::BW_20_8:
|
||||||
|
return "20.8MHz";
|
||||||
|
case LoRaBandwidth::BW_31_25:
|
||||||
|
return "31.25MHz";
|
||||||
|
case LoRaBandwidth::BW_41_7:
|
||||||
|
return "41.7MHz";
|
||||||
|
case LoRaBandwidth::BW_62_5:
|
||||||
|
return "62.5MHz";
|
||||||
|
case LoRaBandwidth::BW_125_0:
|
||||||
|
return "125.0MHz";
|
||||||
|
case LoRaBandwidth::BW_250_0:
|
||||||
|
return "250.0MHz";
|
||||||
|
case LoRaBandwidth::BW_500_0:
|
||||||
|
return "500.0MHz";
|
||||||
|
default:
|
||||||
|
return "Unknown";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
enum LoRaCodingRate : uint8_t {
|
enum LoRaCodingRate : uint8_t {
|
||||||
CR_4_5 = 0x01,
|
CR_4_5 = 0x01,
|
||||||
CR_4_6 = 0x02,
|
CR_4_6 = 0x02,
|
||||||
@ -31,6 +62,21 @@ enum LoRaCodingRate : uint8_t {
|
|||||||
CR_4_8 = 0x04,
|
CR_4_8 = 0x04,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
inline const char *cr_to_string(const LoRaCodingRate &cr) {
|
||||||
|
switch (cr) {
|
||||||
|
case LoRaCodingRate::CR_4_5:
|
||||||
|
return "4/5";
|
||||||
|
case LoRaCodingRate::CR_4_6:
|
||||||
|
return "4/6";
|
||||||
|
case LoRaCodingRate::CR_4_7:
|
||||||
|
return "4/7";
|
||||||
|
case LoRaCodingRate::CR_4_8:
|
||||||
|
return "4/8";
|
||||||
|
default:
|
||||||
|
return "Unknown";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
constexpr uint16_t DEFAULT_PREAMBLE_LEN = 8;
|
constexpr uint16_t DEFAULT_PREAMBLE_LEN = 8;
|
||||||
constexpr uint8_t DEFAULT_SYNC_WORD = RADIOLIB_SX126X_SYNC_WORD_PRIVATE;
|
constexpr uint8_t DEFAULT_SYNC_WORD = RADIOLIB_SX126X_SYNC_WORD_PRIVATE;
|
||||||
constexpr uint8_t DEFAULT_CRC_TYPE = RADIOLIB_SX126X_LORA_CRC_OFF;
|
constexpr uint8_t DEFAULT_CRC_TYPE = RADIOLIB_SX126X_LORA_CRC_OFF;
|
||||||
@ -43,6 +89,13 @@ constexpr auto DEFAULT_BW = BW_250_0;
|
|||||||
constexpr auto DEFAULT_CR = CR_4_5;
|
constexpr auto DEFAULT_CR = CR_4_5;
|
||||||
constexpr auto DEFAULT_LDR_OPTIMIZE = RADIOLIB_SX126X_LORA_LOW_DATA_RATE_OPTIMIZE_OFF;
|
constexpr auto DEFAULT_LDR_OPTIMIZE = RADIOLIB_SX126X_LORA_LOW_DATA_RATE_OPTIMIZE_OFF;
|
||||||
|
|
||||||
|
inline std::optional<uint8_t> sf_from_uint8_t(const uint8_t sf) {
|
||||||
|
if (sf < 6 || sf > 12) {
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
return sf;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
struct modulation_params_t {
|
struct modulation_params_t {
|
||||||
uint8_t bw;
|
uint8_t bw;
|
||||||
@ -58,6 +111,14 @@ struct modulation_params_t {
|
|||||||
.ldr_optimize = DEFAULT_LDR_OPTIMIZE,
|
.ldr_optimize = DEFAULT_LDR_OPTIMIZE,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string to_string() const {
|
||||||
|
return std::format("mod_params: bw={}, sf={}, cr={}, ldr_optimize={}",
|
||||||
|
bw_to_string(static_cast<LoRaBandwidth>(bw)),
|
||||||
|
sf,
|
||||||
|
cr_to_string(static_cast<LoRaCodingRate>(cr)),
|
||||||
|
ldr_optimize ? "ON" : "OFF");
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
struct packet_params_t {
|
struct packet_params_t {
|
||||||
|
|||||||
Reference in New Issue
Block a user