Library to use 25LCxxx chips
Fork of 25LCxxx_SPI by
Diff: Ser25lcxxx.cpp
- Revision:
- 4:0c31e878a076
- Parent:
- 3:d9429070ea6f
--- a/Ser25lcxxx.cpp Mon Jan 14 04:26:13 2013 +0000 +++ b/Ser25lcxxx.cpp Thu Mar 14 13:19:40 2013 +0000 @@ -27,7 +27,7 @@ #define HIGH(x) ((x&0xff00)>>8) #define LOW(x) (x&0xff) -Ser25LCxxx::Ser25LCxxx(SPI *spi, PinName enable, int bytes, int pagesize) { +Ser25LCxxx::Ser25LCxxx(SPI *spi, PinName enable, uint32_t bytes, uint32_t pagesize) { _spi=spi; _enable=new DigitalOut(enable); _size=bytes; @@ -39,11 +39,11 @@ delete _enable; } -int* Ser25LCxxx::read(unsigned int startAdr, unsigned int len) { +uint8_t* Ser25LCxxx::read( uint32_t startAdr, uint32_t len) { // assertion if (startAdr+len>_size) return NULL; - int* ret=(int*)malloc(len); + uint8_t* ret=(uint8_t*)malloc(len); _enable->write(0); wait_us(1); // send address @@ -64,7 +64,7 @@ _spi->write(LOW(startAdr)); } // read data into buffer - for (int i=0;i<len;i++) { + for (uint8_t i=0;i<len;i++) { ret[i]=_spi->write(0); } wait_us(1); @@ -72,14 +72,14 @@ return ret; } -bool Ser25LCxxx::write(unsigned int startAdr, unsigned int len, int* data) { +bool Ser25LCxxx::write( uint32_t startAdr, uint32_t len, const uint8_t* data) { if (startAdr+len>_size) return -1; - int ofs=0; + uint8_t ofs=0; while (ofs<len) { // calculate amount of data to write into current page - int pageLen=_pageSize-((startAdr+ofs)%_pageSize); + uint8_t pageLen=_pageSize-((startAdr+ofs)%_pageSize); if (ofs+pageLen>len) pageLen=len-ofs; // write single page @@ -92,7 +92,7 @@ return true; } -bool Ser25LCxxx::writePage(unsigned int startAdr, unsigned int len, int* data) { +bool Ser25LCxxx::writePage( uint32_t startAdr, uint32_t len, const uint8_t* data) { enableWrite(); _enable->write(0); @@ -116,7 +116,7 @@ } // do real write - for (int i=0;i<len;i++) { + for (uint8_t i=0;i<len;i++) { _spi->write(data[i]); } wait_us(1); @@ -128,11 +128,11 @@ return true; } -bool Ser25LCxxx::clearPage(unsigned int pageNum) { +bool Ser25LCxxx::clearPage( uint32_t pageNum) { enableWrite(); if (_size<65535) { - int* s=(int*)malloc(_pageSize); - for (int i=0;i<_pageSize;i++) { + uint8_t* s=(uint8_t*)malloc(_pageSize); + for (uint8_t i=0;i<_pageSize;i++) { s[i]=0xff; } bool b=writePage(_pageSize*pageNum,_pageSize,s); @@ -155,7 +155,7 @@ void Ser25LCxxx::clearMem() { enableWrite(); if (_size<65535) { - for (int i=0;i<_size/_pageSize;i++) { + for (uint8_t i=0;i<_size/_pageSize;i++) { if (!clearPage(i)) break; } @@ -172,11 +172,11 @@ } } -int Ser25LCxxx::readStatus() { +uint8_t Ser25LCxxx::readStatus() { _enable->write(0); wait_us(1); _spi->write(0x5); - int status=_spi->write(0x00); + uint8_t status=_spi->write(0x00); wait_us(1); _enable->write(1); return status;