From eebea8c088bea69856b9c770d51a7ef039916475 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Mon, 22 Apr 2019 01:33:32 +0200 Subject: [PATCH] DbpStringEx using reply_ng --- armsrc/appmain.c | 10 ++++++++-- client/comms.c | 20 +++++++++++++++++--- 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/armsrc/appmain.c b/armsrc/appmain.c index 298f4df7f..83a639227 100644 --- a/armsrc/appmain.c +++ b/armsrc/appmain.c @@ -116,8 +116,14 @@ void print_result(char *name, uint8_t *buf, size_t len) { void DbpStringEx(char *str, uint32_t cmd) { #if DEBUG - uint8_t len = strlen(str); - reply_mix(CMD_DEBUG_PRINT_STRING, len, cmd, 0, (uint8_t *)str, len); + struct { + uint16_t flag; + uint8_t buf[USB_CMD_DATA_SIZE - sizeof(uint16_t)]; + } PACKED data; + data.flag = cmd; + uint16_t len = MIN(strlen(str), sizeof(data.buf)); + memcpy(data.buf, str, len); + reply_ng(CMD_DEBUG_PRINT_STRING, PM3_SUCCESS, (uint8_t*)&data, sizeof(data.flag) + len); #endif } diff --git a/client/comms.c b/client/comms.c index 26c7e04f3..24f43e4b0 100644 --- a/client/comms.c +++ b/client/comms.c @@ -253,9 +253,23 @@ static void PacketResponseReceived(PacketResponseNG *packet) { char s[USB_CMD_DATA_SIZE + 1]; memset(s, 0x00, sizeof(s)); - size_t len = MIN(packet->oldarg[0], USB_CMD_DATA_SIZE); - memcpy(s, packet->data.asBytes, len); - uint64_t flag = packet->oldarg[1]; + + size_t len; + uint16_t flag; + if (packet->ng) { + struct d { + uint16_t flag; + uint8_t buf[USB_CMD_DATA_SIZE - sizeof(uint16_t)]; + } PACKED; + struct d* data = (struct d*)&packet->data.asBytes; + len = packet->length - sizeof(data->flag); + memcpy(s, data->buf, len); + flag = data->flag; + } else { + len = MIN(packet->oldarg[0], USB_CMD_DATA_SIZE); + memcpy(s, packet->data.asBytes, len); + flag = packet->oldarg[1]; + } switch (flag) { case FLAG_RAWPRINT: