88 lines
3.3 KiB
C
88 lines
3.3 KiB
C
#include "pcpa.h"
|
|
|
|
void pcptPrint(pcpt_t* stream, char* name) {
|
|
printf(" PCPT %s STATUS\n", name);
|
|
printf(" Current errno: %d\n", stream->err);
|
|
printf(" Server socket: %08X (%d)\n", stream->server_sock, stream->open);
|
|
printf(" Client socket: %08X (%d)\n", stream->client_sock, stream->client_open);
|
|
if (stream->send_buf)
|
|
printf(" Send buffer: %.*s\n", *stream->send_buf_count, stream->send_buf);
|
|
else
|
|
puts(" Send buffer: -");
|
|
if (stream->recv_buf)
|
|
printf(" Recv buffer: %.*s\n", *stream->recv_buf_count, stream->recv_buf);
|
|
else
|
|
puts(" Recv buffer: -");
|
|
}
|
|
|
|
void pcppPrint(pcpp_t* stream) {
|
|
puts("PCPP STATUS");
|
|
printf(" Current errno: %d state: %d\n", stream->err, stream->state);
|
|
printf(" Open: %d at %d\n", stream->open, stream->last_active);
|
|
printf(" Read buf: %.*s\n", stream->read_bytes_num, stream->read_bytes_buf);
|
|
printf(" Send buf: %.*s\n", stream->send_buf_len, stream->send_buf);
|
|
printf(" Send binary: %p (%d[?])\n", stream->send_binary_buf, stream->field_0x1f8);
|
|
printf(" Recv binary: %p (%d)\n", stream->recv_binary_buf, stream->recv_binary_buf_len);
|
|
|
|
pcptPrint(&stream->sock, "TEXT");
|
|
pcptPrint(&stream->data_sock, "BINARY");
|
|
}
|
|
|
|
void pcpaPrint(pcpa_t* stream) {
|
|
puts("PCPA STATUS");
|
|
amtime_t now;
|
|
amiTimerGet(&now);
|
|
printf("Now: %d\n", _amTimeMs(now));
|
|
|
|
printf("Current errno: %d\n", stream->err);
|
|
printf("%d/%d callbacks registered at %p\n", stream->callback_count, stream->callback_max, stream->callback_table);
|
|
printf("Binary mode: %d (%p/%p)\n", stream->binary_mode, stream->binary_mode_before_cb,
|
|
stream->binary_mode_after_cb);
|
|
|
|
if (stream->recv_buffer)
|
|
printf("Recv buffer: %.*s\n", stream->recv_buffer_len, stream->recv_buffer);
|
|
else
|
|
puts("Recv buffer: -");
|
|
if (stream->send_buffer)
|
|
printf("Send buffer: %.*s\n", stream->send_buffer_len, stream->send_buffer);
|
|
else
|
|
puts("Send buffer: -");
|
|
|
|
pcppPrint(&stream->pcpp);
|
|
|
|
printf("Send data: %.*s\n", stream->send_data.length, stream->send_data.data);
|
|
|
|
puts("Parse data:");
|
|
printf(" %d commands:\n", stream->recv_data.cmd_count);
|
|
for (size_t i = 0; i < stream->recv_data.cmd_count; i++) {
|
|
byte kwd = stream->recv_data.keywords[i];
|
|
if (kwd != 0) kwd++;
|
|
printf(" & %02d '%s'\n", kwd, stream->recv_data.strings + kwd);
|
|
byte value = stream->recv_data.values[i];
|
|
if (value != 0) value++;
|
|
printf(" = %02d '%s'\n", value, stream->recv_data.strings + value);
|
|
if (stream->recv_data.strings[kwd] == 0) break;
|
|
}
|
|
puts(" Raw strings table:");
|
|
for (size_t i = 0; i < PCP_BUF_MAX; i = i + 32) {
|
|
printf(" ");
|
|
for (size_t j = i; j < i + 32; j++) {
|
|
printf("%02X ", stream->recv_data.strings[j]);
|
|
if (j % 16 == 15)
|
|
printf(" ");
|
|
else if (j % 8 == 7)
|
|
printf(" ");
|
|
}
|
|
printf(" ");
|
|
for (size_t j = i; j < i + 32; j++) {
|
|
char chr = stream->recv_data.strings[j];
|
|
if (' ' <= chr && chr <= '~')
|
|
printf("%c", chr);
|
|
else
|
|
printf(".");
|
|
if (j % 16 == 15) printf(" ");
|
|
}
|
|
puts("");
|
|
}
|
|
}
|