This commit is contained in:
Philippe Teuwen 2019-04-16 20:49:32 +02:00
commit 83571f02a0
6 changed files with 23 additions and 24 deletions

View file

@ -1457,17 +1457,17 @@ static void UsbPacketReceived(bool cmd_ng, uint8_t *packet) {
case CMD_PING: case CMD_PING:
if (cmd_ng) { if (cmd_ng) {
#ifdef WITH_FPC_HOST #ifdef WITH_FPC_HOST
cmd_send(CMD_ACK, reply_via_fpc, ((uint32_t *)data_ng)[0], ((uint32_t *)data_ng)[(datalen_ng-1)/4], 0, 0); cmd_send(CMD_ACK, reply_via_fpc, ((uint32_t *)data_ng)[0], ((uint32_t *)data_ng)[(datalen_ng - 1) / 4], 0, 0);
#else #else
cmd_send(CMD_ACK, 0, ((uint32_t *)data_ng)[0], ((uint32_t *)data_ng)[(c->arg[0]-1)/4], 0, 0); cmd_send(CMD_ACK, 0, ((uint32_t *)data_ng)[0], ((uint32_t *)data_ng)[(c->arg[0] - 1) / 4], 0, 0);
#endif #endif
} else { } else {
#ifdef WITH_FPC_HOST #ifdef WITH_FPC_HOST
cmd_send(CMD_ACK, reply_via_fpc, 0, 0, 0, 0); cmd_send(CMD_ACK, reply_via_fpc, 0, 0, 0, 0);
#else #else
cmd_send(CMD_ACK, 0, 0, 0, 0, 0); cmd_send(CMD_ACK, 0, 0, 0, 0, 0);
#endif #endif
} }
break; break;
#ifdef WITH_LCD #ifdef WITH_LCD
case CMD_LCD_RESET: case CMD_LCD_RESET:
@ -1611,10 +1611,10 @@ void __attribute__((noreturn)) AppMain(void) {
} }
} }
if (!error) { if (!error) {
#ifdef WITH_FPC_HOST #ifdef WITH_FPC_HOST
reply_via_fpc = false; reply_via_fpc = false;
#endif #endif
UsbPacketReceived(true, rx); UsbPacketReceived(true, rx);
} }
} else { // Old style command } else { // Old style command
bytes = usb_read_ng(rx + sizeof(UsbCommandNGPreamble), sizeof(UsbCommand) - sizeof(UsbCommandNGPreamble)); bytes = usb_read_ng(rx + sizeof(UsbCommandNGPreamble), sizeof(UsbCommand) - sizeof(UsbCommandNGPreamble));
@ -1623,10 +1623,10 @@ void __attribute__((noreturn)) AppMain(void) {
error = true; error = true;
} }
if (!error) { if (!error) {
#ifdef WITH_FPC_HOST #ifdef WITH_FPC_HOST
reply_via_fpc = false; reply_via_fpc = false;
#endif #endif
UsbPacketReceived(false, rx); UsbPacketReceived(false, rx);
} }
} }
} else { } else {

View file

@ -448,9 +448,9 @@ static int CmdPingNG(const char *Cmd) {
uint8_t data[USB_CMD_DATA_SIZE] = {0}; uint8_t data[USB_CMD_DATA_SIZE] = {0};
uint16_t cmd = CMD_PING; uint16_t cmd = CMD_PING;
if (len >= 4) if (len >= 4)
((uint32_t *)data)[0]=0xAABBCCDD; ((uint32_t *)data)[0] = 0xAABBCCDD;
if (len >= 8) if (len >= 8)
((uint32_t *)data)[(len-1)/4] = 0xDDCCBBAA; ((uint32_t *)data)[(len - 1) / 4] = 0xDDCCBBAA;
SendCommandNG(cmd, data, len); SendCommandNG(cmd, data, len);
if (WaitForResponseTimeout(CMD_ACK, &resp, 1000)) { if (WaitForResponseTimeout(CMD_ACK, &resp, 1000)) {
PrintAndLogEx(NORMAL, "PingNG successful"); PrintAndLogEx(NORMAL, "PingNG successful");
@ -458,8 +458,7 @@ static int CmdPingNG(const char *Cmd) {
PrintAndLogEx(NORMAL, "%08x -> %08x", 0xAABBCCDD, resp.arg[1]); PrintAndLogEx(NORMAL, "%08x -> %08x", 0xAABBCCDD, resp.arg[1]);
if (len >= 8) if (len >= 8)
PrintAndLogEx(NORMAL, "%08x -> %08x", 0xDDCCBBAA, resp.arg[2]); PrintAndLogEx(NORMAL, "%08x -> %08x", 0xDDCCBBAA, resp.arg[2]);
} } else
else
PrintAndLogEx(NORMAL, "PingNG failed"); PrintAndLogEx(NORMAL, "PingNG failed");
return 0; return 0;
} }

View file

@ -31,7 +31,7 @@ size_t txBufferNGLen;
static bool txBuffer_pending = false; static bool txBuffer_pending = false;
static pthread_mutex_t txBufferMutex = PTHREAD_MUTEX_INITIALIZER; static pthread_mutex_t txBufferMutex = PTHREAD_MUTEX_INITIALIZER;
static pthread_cond_t txBufferSig = PTHREAD_COND_INITIALIZER; static pthread_cond_t txBufferSig = PTHREAD_COND_INITIALIZER;
// Used by UsbReceiveCommand as a ring buffer for messages that are yet to be // Used by UsbReceiveCommand as a ring buffer for messages that are yet to be
// processed by a command handler (WaitForResponse{,Timeout}) // processed by a command handler (WaitForResponse{,Timeout})
static UsbCommand rxBuffer[CMD_BUFFER_SIZE]; static UsbCommand rxBuffer[CMD_BUFFER_SIZE];
@ -87,7 +87,7 @@ void SendCommand(UsbCommand *c) {
//__atomic_test_and_set(&txcmd_pending, __ATOMIC_SEQ_CST); //__atomic_test_and_set(&txcmd_pending, __ATOMIC_SEQ_CST);
} }
void SendCommandNG(uint16_t cmd, uint8_t* data, size_t len) { void SendCommandNG(uint16_t cmd, uint8_t *data, size_t len) {
#ifdef COMMS_DEBUG #ifdef COMMS_DEBUG
PrintAndLogEx(NORMAL, "Sending %d bytes of payload | cmd %04x\n", len, cmd); PrintAndLogEx(NORMAL, "Sending %d bytes of payload | cmd %04x\n", len, cmd);

View file

@ -52,7 +52,7 @@ bool IsOffline(void);
void *uart_receiver(void *targ); void *uart_receiver(void *targ);
void SendCommand(UsbCommand *c); void SendCommand(UsbCommand *c);
void SendCommandNG(uint16_t cmd, uint8_t* data, size_t len); void SendCommandNG(uint16_t cmd, uint8_t *data, size_t len);
void clearCommandBuffer(void); void clearCommandBuffer(void);
#define FLASHMODE_SPEED 460800 #define FLASHMODE_SPEED 460800

View file

@ -467,7 +467,7 @@ int main(int argc, char *argv[]) {
usb_present = OpenProxmark(port, waitCOMPort, 20, false, speed); usb_present = OpenProxmark(port, waitCOMPort, 20, false, speed);
if (TestProxmark() == 0) if (TestProxmark() == 0)
usb_present = false; usb_present = false;
if (!usb_present) if (!usb_present)
PrintAndLogEx(INFO, "Running in " _YELLOW_("OFFLINE") "mode. Check \"%s -h\" if it's not what you want.\n", exec_name); PrintAndLogEx(INFO, "Running in " _YELLOW_("OFFLINE") "mode. Check \"%s -h\" if it's not what you want.\n", exec_name);

View file

@ -647,8 +647,8 @@ uint32_t usb_read(uint8_t *data, size_t len) {
} }
static uint8_t usb_read_ng_buffer[64]; static uint8_t usb_read_ng_buffer[64];
static size_t usb_read_ng_bufoff=0; static size_t usb_read_ng_bufoff = 0;
static size_t usb_read_ng_buflen=0; static size_t usb_read_ng_buflen = 0;
uint32_t usb_read_ng(uint8_t *data, size_t len) { uint32_t usb_read_ng(uint8_t *data, size_t len) {
@ -659,7 +659,7 @@ uint32_t usb_read_ng(uint8_t *data, size_t len) {
uint32_t time_out = 0; uint32_t time_out = 0;
// take first from local buffer // take first from local buffer
if ( len <= usb_read_ng_buflen ) { if (len <= usb_read_ng_buflen) {
for (uint32_t i = 0; i < len; i++) for (uint32_t i = 0; i < len; i++)
data[nbBytesRcv++] = usb_read_ng_buffer[usb_read_ng_bufoff + i]; data[nbBytesRcv++] = usb_read_ng_buffer[usb_read_ng_bufoff + i];
usb_read_ng_buflen -= len; usb_read_ng_buflen -= len;