mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2025-08-20 21:33:47 -07:00
ADD: sample buffer size variable, to keep track of possible download lengths which is reserved on client.
This commit is contained in:
parent
a11162a9fe
commit
cd93f3a134
4 changed files with 11 additions and 1 deletions
|
@ -276,6 +276,7 @@ int CmdVersion(const char *Cmd) {
|
||||||
int CmdStatus(const char *Cmd) {
|
int CmdStatus(const char *Cmd) {
|
||||||
uint8_t speed_test_buffer[USB_CMD_DATA_SIZE];
|
uint8_t speed_test_buffer[USB_CMD_DATA_SIZE];
|
||||||
sample_buf = speed_test_buffer;
|
sample_buf = speed_test_buffer;
|
||||||
|
sample_buf_size = USB_CMD_DATA_SIZE;
|
||||||
clearCommandBuffer();
|
clearCommandBuffer();
|
||||||
UsbCommand c = {CMD_STATUS};
|
UsbCommand c = {CMD_STATUS};
|
||||||
SendCommand(&c);
|
SendCommand(&c);
|
||||||
|
|
|
@ -118,7 +118,7 @@ void storeCommand(UsbCommand *command) {
|
||||||
int getCommand(UsbCommand* response) {
|
int getCommand(UsbCommand* response) {
|
||||||
pthread_mutex_lock(&cmdBufferMutex);
|
pthread_mutex_lock(&cmdBufferMutex);
|
||||||
//If head == tail, there's nothing to read, or if we just got initialized
|
//If head == tail, there's nothing to read, or if we just got initialized
|
||||||
if(cmd_head == cmd_tail) {
|
if (cmd_head == cmd_tail) {
|
||||||
pthread_mutex_unlock(&cmdBufferMutex);
|
pthread_mutex_unlock(&cmdBufferMutex);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -235,6 +235,10 @@ void UsbCommandReceived(UsbCommand* _ch) {
|
||||||
uint32_t offset = c->arg[0];
|
uint32_t offset = c->arg[0];
|
||||||
uint32_t len = c->arg[1];
|
uint32_t len = c->arg[1];
|
||||||
//uint32_t tracelen = c->arg[2];
|
//uint32_t tracelen = c->arg[2];
|
||||||
|
|
||||||
|
// extra bounds check.
|
||||||
|
len = MIN(sample_buf_size, len);
|
||||||
|
|
||||||
memcpy( sample_buf + offset, c->d.asBytes, len);
|
memcpy( sample_buf + offset, c->d.asBytes, len);
|
||||||
//PrintAndLogEx(NORMAL, "ICE:: Download from device. chunk %" PRIu32 " | size %" PRIu32 " | tracelen:%" PRIu32 " \n", offset, len, c->arg[2]);
|
//PrintAndLogEx(NORMAL, "ICE:: Download from device. chunk %" PRIu32 " | size %" PRIu32 " | tracelen:%" PRIu32 " \n", offset, len, c->arg[2]);
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -15,12 +15,14 @@
|
||||||
#include "proxmark3.h"
|
#include "proxmark3.h"
|
||||||
#include "cmdmain.h"
|
#include "cmdmain.h"
|
||||||
|
|
||||||
|
uint32_t sample_buf_size;
|
||||||
uint8_t* sample_buf;
|
uint8_t* sample_buf;
|
||||||
|
|
||||||
// this triggers a download sequence from device, its received inside cmdmain.c UsbCommandReceived()
|
// this triggers a download sequence from device, its received inside cmdmain.c UsbCommandReceived()
|
||||||
void GetFromBigBuf(uint8_t *dest, uint32_t len, uint32_t start_index) {
|
void GetFromBigBuf(uint8_t *dest, uint32_t len, uint32_t start_index) {
|
||||||
// global
|
// global
|
||||||
sample_buf = dest;
|
sample_buf = dest;
|
||||||
|
sample_buf_size = len;
|
||||||
UsbCommand c = {CMD_DOWNLOAD_RAW_ADC_SAMPLES_125K, {start_index, len, 0}};
|
UsbCommand c = {CMD_DOWNLOAD_RAW_ADC_SAMPLES_125K, {start_index, len, 0}};
|
||||||
clearCommandBuffer();
|
clearCommandBuffer();
|
||||||
SendCommand(&c);
|
SendCommand(&c);
|
||||||
|
@ -29,6 +31,7 @@ void GetFromBigBuf(uint8_t *dest, uint32_t len, uint32_t start_index) {
|
||||||
// inside the BigBuf EML zon.
|
// inside the BigBuf EML zon.
|
||||||
bool GetEMLFromBigBuf(uint8_t *dest, uint32_t len, uint32_t start_index) {
|
bool GetEMLFromBigBuf(uint8_t *dest, uint32_t len, uint32_t start_index) {
|
||||||
sample_buf = dest;
|
sample_buf = dest;
|
||||||
|
sample_buf_size = len;
|
||||||
UsbCommand c = {CMD_DOWNLOAD_EML_BIGBUF, {start_index, len, 0}};
|
UsbCommand c = {CMD_DOWNLOAD_EML_BIGBUF, {start_index, len, 0}};
|
||||||
clearCommandBuffer();
|
clearCommandBuffer();
|
||||||
SendCommand(&c);
|
SendCommand(&c);
|
||||||
|
@ -45,6 +48,7 @@ bool GetEMLFromBigBuf(uint8_t *dest, uint32_t len, uint32_t start_index) {
|
||||||
// Download data from flashmem, rdv40
|
// Download data from flashmem, rdv40
|
||||||
void GetFromFlashMen(uint8_t *dest, uint32_t len, uint32_t start_index) {
|
void GetFromFlashMen(uint8_t *dest, uint32_t len, uint32_t start_index) {
|
||||||
sample_buf = dest;
|
sample_buf = dest;
|
||||||
|
sample_buf_size = len;
|
||||||
UsbCommand c = {CMD_DOWNLOAND_FLASH_MEM, {start_index, len, 0}};
|
UsbCommand c = {CMD_DOWNLOAND_FLASH_MEM, {start_index, len, 0}};
|
||||||
clearCommandBuffer();
|
clearCommandBuffer();
|
||||||
SendCommand(&c);
|
SendCommand(&c);
|
||||||
|
|
|
@ -16,6 +16,7 @@
|
||||||
|
|
||||||
#define FILE_PATH_SIZE 1000
|
#define FILE_PATH_SIZE 1000
|
||||||
|
|
||||||
|
extern uint32_t sample_buf_size;
|
||||||
extern uint8_t* sample_buf;
|
extern uint8_t* sample_buf;
|
||||||
extern void GetFromBigBuf(uint8_t *dest, uint32_t len, uint32_t start_index);
|
extern void GetFromBigBuf(uint8_t *dest, uint32_t len, uint32_t start_index);
|
||||||
extern bool GetEMLFromBigBuf(uint8_t *dest, uint32_t len, uint32_t start_index);
|
extern bool GetEMLFromBigBuf(uint8_t *dest, uint32_t len, uint32_t start_index);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue