First adjustments for FPC BT link

This commit is contained in:
Philippe Teuwen 2019-04-23 23:36:36 +02:00
commit e453aff88c
4 changed files with 19 additions and 2 deletions

View file

@ -491,7 +491,14 @@ void pm3_version(bool verbose) {
PacketResponseNG resp;
clearCommandBuffer();
SendCommandOLD(CMD_VERSION, 0, 0, 0, NULL, 0);
#ifdef USART_SLOW_LINK
// 10s timeout for slow FPC, e.g. over BT
// as this is the very first command sent to the pm3
// that initiates the BT connection
if (WaitForResponseTimeout(CMD_ACK, &resp, 10000)) {
#else
if (WaitForResponseTimeout(CMD_ACK, &resp, 1000)) {
#endif
#ifdef __WIN32
PrintAndLogEx(NORMAL, "\n [ Proxmark3 RFID instrument ]\n");
#else

View file

@ -421,7 +421,7 @@ __attribute__((force_align_arg_pointer))
PacketResponseOLD rx_old;
memcpy(&rx_old, &rx_raw.pre, sizeof(PacketResponseNGPreamble));
if ((!uart_receive(sp, ((uint8_t *)&rx_old) + sizeof(PacketResponseNGPreamble), sizeof(PacketResponseOLD) - sizeof(PacketResponseNGPreamble), &rxlen)) || (rxlen != sizeof(PacketResponseOLD) - sizeof(PacketResponseNGPreamble))) {
PrintAndLogEx(WARNING, "Received packet frame error var part too short? %d/%d", rxlen, sizeof(PacketResponseOLD) - sizeof(PacketResponseNGPreamble));
PrintAndLogEx(WARNING, "Received packet OLD frame payload error too short? %d/%d", rxlen, sizeof(PacketResponseOLD) - sizeof(PacketResponseNGPreamble));
error = true;
}
if (!error) {

View file

@ -122,7 +122,14 @@ uint32_t usart_read_ng(uint8_t *data, size_t len) {
// uint32_t highest_observed_try = 0;
// Empirical max try observed: 3000000 / USART_BAUD_RATE
// Let's take 10x
uint32_t maxtry = 10 * (3000000 / USART_BAUD_RATE);
uint32_t tryconstant = 0;
#ifdef USART_SLOW_LINK
// Experienced up to 13200 tries on BT link even at 460800
tryconstant = 50000;
#endif
uint32_t maxtry = 10 * (3000000 / USART_BAUD_RATE) + tryconstant;
while (len) {
uint32_t available = usart_rxdata_available();

View file

@ -13,6 +13,9 @@
#ifndef __USB_CMD_H
#define __USB_CMD_H
// Use it e.g. when using slow links such as BT
#define USART_SLOW_LINK
#ifdef _MSC_VER
typedef DWORD uint32_t;
typedef BYTE uint8_t;