1.9 KiB
ETCP Packet Section Dump (etcp_debug)
1. Назначение
Вывод в лог человекочитаемой сводки по ETCP-пакету: направление (SEND/RECV), timestamp, и содержимое каждой секции — ACK (last_delivered, count, rx_dup), CH_TS (возвращаемый и принимаемый channel timestamp), PAYLOAD (размер и seq). Используется для отладки трафика на уровне отдельных пакетов.
2. Как пользоваться
#include "etcp_debug.h"
// В обработчике отправки/приёма пакета:
etcp_dump_pkt_sections(pkt, link, 1); // is_send=1 — отправка
etcp_dump_pkt_sections(pkt, link, 0); // is_send=0 — приём
Вывод идёт через DEBUG_INFO(DEBUG_CATEGORY_DUMP, ...). Для включения:
debug = dump=info
Вспомогательная функция
IP_STR ip = ip_to_string(0x0A000001);
// ip.a == "10.0.0.1"
3. API
IP_STR ip_to_string(uint32_t ip) — конвертирует IP (network byte order) в строку a.b.c.d. Возвращает структуру с буфером 16 байт.
void etcp_dump_pkt_sections(struct ETCP_DGRAM* pkt, struct ETCP_LINK* link, int is_send) — парсит pkt->data побайтово и выводит сводку секций: ETCP_SECTION_ACK (last_delivered, count, rx_dup_count), ETCP_SECTION_TIMESTAMP (ret_ts/recv_ts), ETCP_SECTION_PAYLOAD (size, seq). Неизвестные секции прерывают парсинг. Формат вывода:
ETCP PKT: SEND ts=12345 ack=100/5 dup=0 ch_ts=200/150 payload=1200(seq=101)
Зависимости
etcp_connections.h—struct ETCP_DGRAM,struct ETCP_LINKetcp.h— константыETCP_SECTION_*lib/debug_config.h—DEBUG_INFO(DEBUG_CATEGORY_DUMP, ...)