39 void transfer(
const uint8_t* tx, uint8_t* rx, uint16_t len)
override {
66#ifdef STAR_RADIO_POWER_DBM
71static_assert(STAR_RADIO_POWER_DBM >= -9 && STAR_RADIO_POWER_DBM <= 22,
72 "SX1262 high-power PA range is -9..+22 dBm");
102 status.setup_step =
static_cast<uint8_t
>(step);
126 const uint32_t ok_before =
link.frames_ok();
128 if (
link.frames_ok() != ok_before) {
154 status.frames_dropped =
link.frames_dropped();
179 return receiver.
receive(buf, max_len, len);
182 return setup.send(bytes, len);
201 .stack_mem =
nullptr,
250 setup.start_rx_duty_cycle(rx_ms, sleep_ms);
260 setup.start_rx_continuous();
#define RADIO_RF_SW_GPIO_Port
#define RADIO_BUSY_GPIO_Port
uint32_t board_now_ms(void)
static bool board_deadline_passed(uint32_t deadline_ms)
bool board_exti_route(uint16_t pin, osThreadId_t thread, uint32_t flags)
board_spi_status_t board_spi_transfer(board_spi_device_t device, const uint8_t *tx, uint8_t *rx, uint16_t len, uint32_t deadline_ms)
void transfer(const uint8_t *tx, uint8_t *rx, uint16_t len) override
bool wait_busy() override
void set_rx_switch(bool receive) override
void delay_ms(uint32_t ms) override
RadioStatus receive(uint8_t *buf, uint8_t max_len, uint8_t &len)
#define osFlagsWaitAny
Wait for any flag (default).
#define osMutexPrioInherit
Priority inherit protocol.
osThreadId_t osThreadNew(osThreadFunc_t func, void *argument, const osThreadAttr_t *attr)
Create a thread and add it to Active Threads.
osThreadId_t osThreadGetId(void)
Return the thread ID of the current running thread.
#define osWaitForever
Wait forever timeout value.
osMutexId_t osMutexNew(const osMutexAttr_t *attr)
Create and Initialize a Mutex object.
osStatus_t osMutexAcquire(osMutexId_t mutex_id, uint32_t timeout)
Acquire a Mutex or timeout if it is locked.
uint32_t osThreadFlagsWait(uint32_t flags, uint32_t options, uint32_t timeout)
Wait for one or more Thread Flags of the current running thread to become signaled.
@ osPriorityAboveNormal
Priority: above normal.
osStatus_t osMutexRelease(osMutexId_t mutex_id)
Release a Mutex that was acquired by osMutexAcquire.
osStatus_t osDelay(uint32_t ticks)
Wait for Timeout (Time Delay).
Over-the-air frame format for the LoRa command link.
GPIO_PinState HAL_GPIO_ReadPin(const GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState)
Glue: radio_receive() -> decode_frame() -> ArmGate.
constexpr uint32_t kBusyTimeoutMs
void(* on_command)(radio_command_t)
constexpr uint32_t kFrameTimeoutMs
constexpr LoraConfig kLora
uint8_t frame_buf[kFrameMaxLen]
constexpr uint32_t kEvDio1
constexpr uint8_t kTargetId
constexpr uint32_t kSetupRetryMs
Sx1262Setup setup(bus, control, kLora)
*brief user defined string literal for JSON values *sa std::size_t n
FrameStatus encode_frame(FrameType type, uint16_t seq, const uint8_t *payload, uint8_t payload_len, uint8_t *out, size_t out_cap, size_t &out_len)
Build a frame into out[0..out_cap).
RadioStatus radio_receive(uint8_t *buf, uint8_t max_len, uint8_t &len)
RadioStatus radio_probe()
RadioStatus radio_send(const uint8_t *bytes, uint8_t len)
constexpr size_t kFrameMaxLen
constexpr LoraConfig kDefaultLora
void radio_task_start_sniff(uint32_t rx_ms, uint32_t sleep_ms)
void radio_task_status(radio_status_t *out)
void radio_task_start_continuous_rx(void)
bool radio_task_start(void)
void radio_task_on_command(void(*callback)(radio_command_t))
void radio_task_last_rx(radio_rx_t *out)
radio_send_result_t radio_task_send_frame(uint8_t type, const uint8_t *payload, uint8_t len)
Attributes structure for mutex.
Attributes structure for thread.
uint8_t payload[kFrameMaxPayload]