F439_CPP_TX-RX_LoRa_Project

Loading...
Searching...
No Matches
radio_link.h
Go to the documentation of this file.
1
7#ifndef RADIO_LINK_H_
8#define RADIO_LINK_H_
9
10#include <main.h>
11#include <stdint.h>
12#include <stdbool.h>
13#include "ada1897_mb85rs64b.h"
14
15#include "sx1262.h"
16#include "radio_wire.h"
17
18// === RADIOLINK_CRYPTO_ENABLE (compile-time) ===
19#ifndef RADIOLINK_CRYPTO_ENABLE
20#define RADIOLINK_CRYPTO_ENABLE (1)
21#endif
22
23/* Wire v3-only policy: legacy versions are not supported and have been removed. */
24
25/* Debug switches (set to 1 only during testing) */
26#define RADIOLINK_DEBUG_TAMPER_ENABLE 0
27
28#define RADIOLINK_DEBUG_REPLAY_REJECT_ENABLE 0
29#define RADIOLINK_DEBUG_TX_REPLAY_ONESHOT_ENABLE 0
30
31/* Persistence policy */
32#define RL_PERSIST_ENABLE 1
33#define RL_PERSIST_DISABLE_WHEN_DEBUGGER 1
34
36#define RADIOLINK_WIRE_V3_HDR_LEN (RADIOLINK_WIRE_V3_HDR_LEN_DERIVED)
37
38// === WIRE_V3_CRYPTO_CONSTANTS (public routing; derived in radio_wire.h) ===
39#define RADIOLINK_W3_VERSION (RADIOLINK_WIRE_V3_VERSION)
40#define RADIOLINK_W3_HDR_LEN (RADIOLINK_WIRE_V3_HDR_LEN_DERIVED)
41#define RADIOLINK_W3_TAG_LEN (RADIOLINK_WIRE_V3_TAG_LEN)
42// === END WIRE_V3_CRYPTO_CONSTANTS ===
43
44
45// === RADIOLINK_CRYPTO_CONTEXT ===
49 typedef struct radioLinkCryptoCtx_t {
50 uint8_t masterKey[16];
51 uint8_t encKey[16];
52 uint8_t macKey[16];
53 uint8_t keyIsValid; // 0/1
54} radioLinkCryptoCtx_t;
55
56
63 bool RadioLink_SendString(SX1262_Handle *sx, const char *s);
64
73 bool RadioLink_TryDecodeToString(const uint8_t *rx, uint8_t rx_len, char *out, uint8_t out_max);
74
82 bool RadioLink_SendBytes(SX1262_Handle *sx, const uint8_t *buf, uint8_t len);
83
84// === WIRE_V3_CRYPTO ===
97 bool RadioLink_BuildWireV3Frame(uint8_t *out, uint8_t outMax,
98 uint8_t nodeId,
99 uint32_t sessionSeqId,
100 uint32_t msgCounter,
101 const uint8_t *plain, uint8_t plainLen,
102 uint8_t *outLen);
103
113 bool RadioLink_ParseWireV3Frame(const uint8_t *rx, uint8_t rxLen,
114 uint8_t *outPlain, uint8_t outPlainMax,
115 uint8_t *outPlainLen);
116
117// === END WIRE_V3_CRYPTO ===
118
119#endif /* RADIO_LINK_H_ */
ada1897_mb85rs64b.h
MB85RS64B SPI FRAM public interface.
sx
SX1262_Handle sx
Definition main.c:63
main.h
: Header for main.c file.This file contains the common defines of the application.
RadioLink_SendString
bool RadioLink_SendString(SX1262_Handle *sx, const char *s)
Encrypt, authenticate, and send a string payload.
Definition radio_link.c:1193
RadioLink_ParseWireV3Frame
bool RadioLink_ParseWireV3Frame(const uint8_t *rx, uint8_t rxLen, uint8_t *outPlain, uint8_t outPlainMax, uint8_t *outPlainLen)
Parse, authenticate, replay-check, and decrypt a Wire v3 frame.
Definition radio_link.c:1133
RadioLink_BuildWireV3Frame
bool RadioLink_BuildWireV3Frame(uint8_t *out, uint8_t outMax, uint8_t nodeId, uint32_t sessionSeqId, uint32_t msgCounter, const uint8_t *plain, uint8_t plainLen, uint8_t *outLen)
Build a Wire v3 frame from plaintext input.
Definition radio_link.c:1060
radioLinkCryptoCtx_t
struct radioLinkCryptoCtx_t radioLinkCryptoCtx_t
Runtime crypto context for RadioLink key material.
RadioLink_SendBytes
bool RadioLink_SendBytes(SX1262_Handle *sx, const uint8_t *buf, uint8_t len)
Encrypt, authenticate, and send a raw byte payload.
Definition radio_link.c:1246
RadioLink_TryDecodeToString
bool RadioLink_TryDecodeToString(const uint8_t *rx, uint8_t rx_len, char *out, uint8_t out_max)
Parse and decrypt a received Wire v3 frame into a string buffer.
Definition radio_link.c:1219
radio_wire.h
Wire v3 on-wire layout and derived offsets.
SX1262_Handle
Hardware binding for a single SX1262 instance.
Definition sx1262.h:20
radioLinkCryptoCtx_t
Runtime crypto context for RadioLink key material.
Definition radio_link.h:49
radioLinkCryptoCtx_t::encKey
uint8_t encKey[16]
Definition radio_link.h:51
radioLinkCryptoCtx_t::masterKey
uint8_t masterKey[16]
Definition radio_link.h:50
radioLinkCryptoCtx_t::keyIsValid
uint8_t keyIsValid
Definition radio_link.h:53
radioLinkCryptoCtx_t::macKey
uint8_t macKey[16]
Definition radio_link.h:52
sx1262.h
SX1262 LoRa radio driver public interface.