From: Walter Fetter Lages Date: Thu, 31 May 2018 21:02:48 +0000 (-0300) Subject: Change to read up to 256 bytes. X-Git-Url: http://git.ece.ufrgs.br/?a=commitdiff_plain;h=d5de01d37caf68cb80f6b161e9a556270389da57;p=st25_i2c.git Change to read up to 256 bytes. --- diff --git a/lib/st25_i2c.cpp b/lib/st25_i2c.cpp index 8caa5d8..d48761a 100644 --- a/lib/st25_i2c.cpp +++ b/lib/st25_i2c.cpp @@ -78,6 +78,8 @@ St25I2c::~St25I2c(void) size_t St25I2c::read(uint16_t addr,void *buf,size_t count) { + if(count > 256) throw SizeError(); + bool savedFtm=false; if(addr >= FTM_MAILBOX && addr < FTM_MAILBOX+256) savedFtm=setFtm(true); @@ -94,6 +96,7 @@ size_t St25I2c::read(uint16_t addr,void *buf,size_t count) size_t St25I2c::read(void *buf,size_t count) { + if(count > 256) throw SizeError(); size_t c; if((c=::read(fd_,buf,count)) < 0) throw ReadError(errno); diff --git a/st25_i2c_read/st25_i2c_read.cpp b/st25_i2c_read/st25_i2c_read.cpp index 047a78e..39d7706 100644 --- a/st25_i2c_read/st25_i2c_read.cpp +++ b/st25_i2c_read/st25_i2c_read.cpp @@ -30,25 +30,31 @@ int main(int argc,char *argv[]) { - if(argc != 2) + if(argc != 3) { std::cout << argv[0] << "Read from ST25 user memory, dynamic configuration registers or FTM mailbox." << std::endl; - std::cout << "\tUsage: " << argv[0] << " address" << std::endl; + std::cout << "\tUsage: " << argv[0] << " address count" << std::endl; return -1; } St25I2c st25I2c; - - unsigned char data; uint16_t addr=strtol(argv[1],NULL,0); - - st25I2c.read(addr,&data,sizeof data); + size_t count=strtol(argv[2],NULL,0); + + unsigned char *data=new unsigned char[count]; + + st25I2c.read(addr,data,count); - std::cout << "0x" << std::hex << std::setw(2) << std::setfill('0') - << static_cast(data) << std::endl; + for(size_t i=0;i < count;i++) std::cout + << "0x" << std::hex << std::setw(2) << std::setfill('0') + << static_cast(data[i]) << " "; + + delete[] data; + + std::cout << std::endl; return 0; }