STAR
Cal STAR — firmware, DAQ server, and engine design
Loading...
Searching...
No Matches
radio_link Namespace Reference

Namespaces

namespace  anonymous_namespace{sx1262.cpp}
namespace  anonymous_namespace{sx1262_setup.cpp}
namespace  anonymous_namespace{arm_gate.cpp}
namespace  anonymous_namespace{frame.cpp}
namespace  anonymous_namespace{radio_fake.cpp}
namespace  fake

Classes

class  SpiBus
struct  PacketStatus
class  Sx1262
class  RadioControl
struct  LoraConfig
class  Sx1262Setup
class  ArmGate
struct  Frame
class  FakeAir
class  FakeChip

Enumerations

enum class  SetupStep : uint8_t {
  Ok = 0 , Standby , Regulator , Tcxo ,
  Calibrate , RfSwitch , PacketType , Frequency ,
  ImageCalibration , PaConfig , TxParams , BufferBase ,
  Modulation , PacketParams , IrqMap , TxClamp ,
  SyncWord , DeviceErrors , StartRx
}
enum class  RxMode : uint8_t { Continuous , DutyCycle }
enum class  ArmAction : uint8_t {
  None = 0 , Pending , Arm , Disarm ,
  RejectKey , RejectTarget , RejectStale
}
enum class  FrameType : uint8_t { Heartbeat = 0x01 , SelfTest = 0x02 , Arm = 0x10 , UnArm = 0x11 }
enum class  FrameStatus : uint8_t {
  Ok = 0 , ErrTooShort , ErrVersion , ErrLength ,
  ErrCrc , ErrType , ErrPayload , ErrArgs
}
enum class  RadioStatus : uint8_t {
  Ok = 0 , ErrNotFound , ErrTooLong , NoData ,
  ErrTimeout , NotImplemented
}

Functions

bool sx1262_status_ok (uint8_t status)
uint32_t sx1262_frequency_word (uint32_t freq_hz)
uint32_t lora_time_on_air_us (const LoraConfig &cfg, uint8_t payload_len)
void put_u16 (uint8_t *p, uint16_t v)
void put_u32 (uint8_t *p, uint32_t v)
uint16_t get_u16 (const uint8_t *p)
uint32_t get_u32 (const uint8_t *p)
uint16_t crc16 (const uint8_t *data, size_t len)
 CRC-16/CCITT-FALSE: poly 0x1021, init 0xFFFF, no reflection, no xorout.
FrameStatus decode_frame (const uint8_t *buf, size_t len, Frame &out)
 Parse and validate a received packet.
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_probe ()
RadioStatus radio_receive (uint8_t *buf, uint8_t max_len, uint8_t &len)
RadioStatus radio_send (const uint8_t *bytes, uint8_t len)

Variables

constexpr uint8_t kOpClearIrqStatus = 0x02
constexpr uint8_t kOpGetIrqStatus = 0x12
constexpr uint8_t kOpGetRxBufferStatus = 0x13
constexpr uint8_t kOpGetPacketStatus = 0x14
constexpr uint8_t kOpReadBuffer = 0x1E
constexpr uint8_t kOpSetRx = 0x82
constexpr uint16_t kIrqRxDone = 1u << 1
constexpr uint16_t kIrqHeaderErr = 1u << 5
constexpr uint16_t kIrqCrcErr = 1u << 6
constexpr LoraConfig kDefaultLora = {915000000u, 9, 0x04, 1, 8, 22, 0x1424}
constexpr uint32_t kArmKey = 0xA5C3965Au
 PLACEHOLDER: lead to choose the real key before flight.
constexpr uint32_t kArmConfirmWindowMs = 2000
 Max time between the two ARM frames.
constexpr uint8_t kFrameVersion = 0x01
constexpr size_t kFrameHeaderLen = 5
constexpr size_t kFrameCrcLen = 2
constexpr size_t kFrameOverhead = kFrameHeaderLen + kFrameCrcLen
constexpr size_t kLoraMaxPacket = 255
constexpr size_t kFrameMaxPayload = kLoraMaxPacket - kFrameOverhead
constexpr size_t kFrameMaxLen = kFrameOverhead + kFrameMaxPayload
constexpr uint8_t kHeartbeatLen = 7
 Required payload length per type.
constexpr uint8_t kSelfTestLen = 4
constexpr uint8_t kArmLen = 9
constexpr uint8_t kUnArmLen = 0

Enumeration Type Documentation

◆ ArmAction

enum class radio_link::ArmAction : uint8_t
strong
Enumerator
None 
Pending 
Arm 
Disarm 
RejectKey 
RejectTarget 
RejectStale 

Definition at line 40 of file arm_gate.h.

◆ FrameStatus

enum class radio_link::FrameStatus : uint8_t
strong
Enumerator
Ok 
ErrTooShort 
ErrVersion 
ErrLength 
ErrCrc 
ErrType 
ErrPayload 
ErrArgs 

Definition at line 59 of file frame.h.

◆ FrameType

enum class radio_link::FrameType : uint8_t
strong
Enumerator
Heartbeat 
SelfTest 
Arm 
UnArm 

Definition at line 46 of file frame.h.

◆ RadioStatus

enum class radio_link::RadioStatus : uint8_t
strong
Enumerator
Ok 
ErrNotFound 
ErrTooLong 
NoData 
ErrTimeout 
NotImplemented 

Definition at line 10 of file radio.h.

◆ RxMode

enum class radio_link::RxMode : uint8_t
strong
Enumerator
Continuous 
DutyCycle 

Definition at line 72 of file sx1262_setup.h.

◆ SetupStep

enum class radio_link::SetupStep : uint8_t
strong
Enumerator
Ok 
Standby 
Regulator 
Tcxo 
Calibrate 
RfSwitch 
PacketType 
Frequency 
ImageCalibration 
PaConfig 
TxParams 
BufferBase 
Modulation 
PacketParams 
IrqMap 
TxClamp 
SyncWord 
DeviceErrors 
StartRx 

Definition at line 50 of file sx1262_setup.h.

Function Documentation

◆ crc16()

uint16_t radio_link::crc16 ( const uint8_t * data,
size_t len )

CRC-16/CCITT-FALSE: poly 0x1021, init 0xFFFF, no reflection, no xorout.

Check value: crc16("123456789") == 0x29B1.

Definition at line 30 of file frame.cpp.

References b.

Referenced by decode_frame(), encode_frame(), raw_frame(), test_crc16_empty_is_init_value(), and test_crc16_standard_check_value().

◆ decode_frame()

◆ encode_frame()

FrameStatus radio_link::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 )

◆ get_u16()

uint16_t radio_link::get_u16 ( const uint8_t * p)

◆ get_u32()

uint32_t radio_link::get_u32 ( const uint8_t * p)

◆ lora_time_on_air_us()

uint32_t radio_link::lora_time_on_air_us ( const LoraConfig & cfg,
uint8_t payload_len )

◆ put_u16()

void radio_link::put_u16 ( uint8_t * p,
uint16_t v )

Definition at line 7 of file frame.cpp.

References p.

Referenced by encode_frame(), raw_frame(), and test_little_endian_helpers().

◆ put_u32()

void radio_link::put_u32 ( uint8_t * p,
uint32_t v )

◆ radio_probe()

◆ radio_receive()

◆ radio_send()

◆ sx1262_frequency_word()

uint32_t radio_link::sx1262_frequency_word ( uint32_t freq_hz)

◆ sx1262_status_ok()

bool radio_link::sx1262_status_ok ( uint8_t status)

Variable Documentation

◆ kArmConfirmWindowMs

uint32_t radio_link::kArmConfirmWindowMs = 2000
constexpr

Max time between the two ARM frames.

PLACEHOLDER pending review.

Definition at line 38 of file arm_gate.h.

Referenced by test_confirm_after_window_does_not_arm(), test_confirm_exactly_at_window_edge_arms(), test_tick_expires_pending(), and radio_link::ArmGate::tick().

◆ kArmKey

◆ kArmLen

uint8_t radio_link::kArmLen = 9
constexpr

◆ kDefaultLora

◆ kFrameCrcLen

size_t radio_link::kFrameCrcLen = 2
constexpr

Definition at line 36 of file frame.h.

◆ kFrameHeaderLen

size_t radio_link::kFrameHeaderLen = 5
constexpr

Definition at line 35 of file frame.h.

Referenced by decode_frame(), and encode_frame().

◆ kFrameMaxLen

◆ kFrameMaxPayload

size_t radio_link::kFrameMaxPayload = kLoraMaxPacket - kFrameOverhead
constexpr

Definition at line 40 of file frame.h.

Referenced by decode_frame().

◆ kFrameOverhead

size_t radio_link::kFrameOverhead = kFrameHeaderLen + kFrameCrcLen
constexpr

Definition at line 37 of file frame.h.

Referenced by decode_frame(), and encode_frame().

◆ kFrameVersion

uint8_t radio_link::kFrameVersion = 0x01
constexpr

◆ kHeartbeatLen

uint8_t radio_link::kHeartbeatLen = 7
constexpr

Required payload length per type.

Definition at line 54 of file frame.h.

Referenced by anonymous_namespace{idle_e2e.cpp}::beats(), and radio_link::anonymous_namespace{frame.cpp}::payload_len_for().

◆ kIrqCrcErr

uint16_t radio_link::kIrqCrcErr = 1u << 6
constexpr

◆ kIrqHeaderErr

uint16_t radio_link::kIrqHeaderErr = 1u << 5
constexpr

◆ kIrqRxDone

◆ kLoraMaxPacket

size_t radio_link::kLoraMaxPacket = 255
constexpr

Definition at line 39 of file frame.h.

Referenced by test_pure_noise_never_arms().

◆ kOpClearIrqStatus

◆ kOpGetIrqStatus

◆ kOpGetPacketStatus

uint8_t radio_link::kOpGetPacketStatus = 0x14
constexpr

◆ kOpGetRxBufferStatus

uint8_t radio_link::kOpGetRxBufferStatus = 0x13
constexpr

◆ kOpReadBuffer

uint8_t radio_link::kOpReadBuffer = 0x1E
constexpr

◆ kOpSetRx

uint8_t radio_link::kOpSetRx = 0x82
constexpr

◆ kSelfTestLen

uint8_t radio_link::kSelfTestLen = 4
constexpr

Definition at line 55 of file frame.h.

Referenced by radio_link::anonymous_namespace{frame.cpp}::payload_len_for().

◆ kUnArmLen

uint8_t radio_link::kUnArmLen = 0
constexpr

Definition at line 57 of file frame.h.

Referenced by radio_link::anonymous_namespace{frame.cpp}::payload_len_for().