Files
Pluto-SDR/src/frame_tx.h

31 lines
2.3 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// frame_tx.h — сборка и передача одного OFDM-кадра (общий путь для TX данных
// и, начиная с этапа 2 roadmap §10 п.7, обратного канала STATUS/END).
#ifndef FRAME_TX_H
#define FRAME_TX_H
#include "common.h"
// Кодирует и передаёт один кадр: если enc задан — CRC32 поверх исходных данных
// ДО RS (техдолг #3: fec_decode() liquid не сообщает об ошибках, это единственный
// надёжный критерий на RX), затем блочный RS(255,223); иначе payload как есть.
// sig[0..1] — байты 0-1 заголовка (различают тип кадра: данные/паритет F0 AA,
// END F0 E7, STATUS F0 55 — см. docs/NOTES.md §10 п.7). hdr11 — байт флагов
// group-FEC (0 = legacy). buf_samples — размер TX-буфера DMA (BUF_SAMPLES
// вызывающего). Кадр пишется частичным push_partial (техдолг #5), затем пауза.
void phy_tx_frame(ofdmflexframegen fg, struct iio_buffer *buf, int buf_samples,
fec enc, const uint8_t sig[2], uint32_t seq, uint8_t hdr11,
const uint8_t *pl, size_t n, float amp, int pause_us);
// Обратная операция к phy_tx_frame для кадра, собранного с enc: RS-декод всех
// блоков payload + проверка CRC32-поверх-RS (единственный надёжный критерий,
// техдолг #3). hdr — 12 Б заголовка (нужны байты 6-7 original_len и 10
// last_block_bytes); pay/pay_len — сырой RS-payload из ofdmflexframesync; dec —
// декодер RS(255,223); out (≥ out_cap) принимает декодированные данные, out_len
// — исходная длина. Возврат 1 при пройденном CRC, 0 иначе. Используется обратным
// каналом (fb_rx) на TX-стороне; RX-данные пока декодит свой инлайн в receiver.c.
int phy_rx_decode(const uint8_t *hdr, const uint8_t *pay, unsigned pay_len,
fec dec, uint8_t *out, size_t out_cap, size_t *out_len);
#endif