packet_structs: add function to dump a packet header to the log

This commit is contained in:
Thomas Kolb 2024-07-20 22:29:04 +02:00
parent 3068db1d50
commit 12e727be00
2 changed files with 55 additions and 0 deletions

View file

@ -1,6 +1,9 @@
#include <assert.h>
#include <string.h>
#define LOGGER_MODULE_NAME "l2ps"
#include "logger.h"
#include "packet_structs.h"
@ -67,3 +70,49 @@ bool layer2_decode_packet_header(const uint8_t *encoded, size_t encoded_len, lay
return true;
}
static const char* msg_type_to_string(layer2_message_type_t type)
{
switch(type) {
case L2_MSG_TYPE_CONNECTIONLESS: return "Connectionless";
case L2_MSG_TYPE_DATA: return "Data";
case L2_MSG_TYPE_CONN_MGMT: return "Connection Management";
}
}
void layer2_dump_packet_header(int level, const layer2_packet_header_t *header)
{
LOG(level, "Packet header dump:");
LOG(level, " Packet type: %s", msg_type_to_string(header->msg_type));
LOG(level, " TX Request: %s", header->tx_request ? "true" : "false");
LOG(level, " RX Seq. Nr: %2u", header->rx_seq_nr);
LOG(level, " TX Seq. Nr: %2u", header->tx_seq_nr);
ham64_addr_type_t addr_type;
char addr_buf[HAM64_FMT_MAX_LEN];
addr_type = ham64_get_addr_type(&header->src_addr);
ham64_format(&header->src_addr, addr_buf);
if(addr_type == HAM64_ADDR_TYPE_CALLSIGN) {
char callsign[13];
ham64_decode_callsign(&header->src_addr, callsign);
LOG(level, " Source Address: %s [%s] -> %s", addr_buf, ham64_addr_type_to_string(addr_type), callsign);
} else {
LOG(level, " Source Address: %s [%s]", addr_buf, ham64_addr_type_to_string(addr_type));
}
addr_type = ham64_get_addr_type(&header->dst_addr);
ham64_format(&header->dst_addr, addr_buf);
if(addr_type == HAM64_ADDR_TYPE_CALLSIGN) {
char callsign[13];
ham64_decode_callsign(&header->dst_addr, callsign);
LOG(level, " Dest. Address: %s [%s] -> %s", addr_buf, ham64_addr_type_to_string(addr_type), callsign);
} else {
LOG(level, " Dest. Address: %s [%s]", addr_buf, ham64_addr_type_to_string(addr_type));
}
}

View file

@ -61,6 +61,12 @@ size_t layer2_get_encoded_header_size(const layer2_packet_header_t *header);
*/
bool layer2_decode_packet_header(const uint8_t *encoded, size_t encoded_len, layer2_packet_header_t *header);
/*!\brief Dump a layer 2 packet header structure.
* \param level Log level (e.g. LVL_INFO; see the logger module).
* \param header The header structure to dump.
*/
void layer2_dump_packet_header(int level, const layer2_packet_header_t *header);
/* Data Packet Structs */
typedef enum {