You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

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_LINK
  • etcp.h — константы ETCP_SECTION_*
  • lib/debug_config.h — DEBUG_INFO(DEBUG_CATEGORY_DUMP, ...)