test: add lora frame and chunk reassembly logic suite
This commit is contained in:
28
lib/dd3_transport_logic/include/batch_reassembly_logic.h
Normal file
28
lib/dd3_transport_logic/include/batch_reassembly_logic.h
Normal file
@@ -0,0 +1,28 @@
|
||||
#pragma once
|
||||
|
||||
#include <Arduino.h>
|
||||
|
||||
struct BatchReassemblyState {
|
||||
bool active;
|
||||
uint16_t batch_id;
|
||||
uint8_t next_index;
|
||||
uint8_t expected_chunks;
|
||||
uint16_t total_len;
|
||||
uint16_t received_len;
|
||||
uint32_t last_rx_ms;
|
||||
uint32_t timeout_ms;
|
||||
};
|
||||
|
||||
enum class BatchReassemblyStatus : uint8_t {
|
||||
InProgress = 0,
|
||||
Complete = 1,
|
||||
ErrorReset = 2
|
||||
};
|
||||
|
||||
void batch_reassembly_reset(BatchReassemblyState &state);
|
||||
|
||||
BatchReassemblyStatus batch_reassembly_push(BatchReassemblyState &state, uint16_t batch_id, uint8_t chunk_index,
|
||||
uint8_t chunk_count, uint16_t total_len, const uint8_t *chunk_data,
|
||||
size_t chunk_len, uint32_t now_ms, uint32_t timeout_ms_for_new_batch,
|
||||
uint16_t max_total_len, uint8_t *buffer, size_t buffer_cap,
|
||||
uint16_t &out_complete_len);
|
||||
19
lib/dd3_transport_logic/include/lora_frame_logic.h
Normal file
19
lib/dd3_transport_logic/include/lora_frame_logic.h
Normal file
@@ -0,0 +1,19 @@
|
||||
#pragma once
|
||||
|
||||
#include <Arduino.h>
|
||||
|
||||
enum class LoraFrameDecodeStatus : uint8_t {
|
||||
Ok = 0,
|
||||
LengthMismatch = 1,
|
||||
CrcFail = 2,
|
||||
InvalidMsgKind = 3
|
||||
};
|
||||
|
||||
uint16_t lora_crc16_ccitt(const uint8_t *data, size_t len);
|
||||
|
||||
bool lora_build_frame(uint8_t msg_kind, uint16_t device_id_short, const uint8_t *payload, size_t payload_len,
|
||||
uint8_t *out_frame, size_t out_cap, size_t &out_len);
|
||||
|
||||
LoraFrameDecodeStatus lora_parse_frame(const uint8_t *frame, size_t frame_len, uint8_t max_msg_kind, uint8_t *out_msg_kind,
|
||||
uint16_t *out_device_id_short, uint8_t *out_payload, size_t payload_cap,
|
||||
size_t *out_payload_len);
|
||||
Reference in New Issue
Block a user