DbpStringEx using reply_ng

This commit is contained in:
Philippe Teuwen 2019-04-22 01:33:32 +02:00
parent cf68c972f0
commit eebea8c088
2 changed files with 25 additions and 5 deletions

View file

@ -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
}

View file

@ -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: