Andy Little
/
storage_test
Storage test of 24LC128 I2C EEPROM. Tested in Mbed OS 5.1
Diff: main.cpp
- Revision:
- 0:a356dc5160aa
- Child:
- 1:95752dbaadf5
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Sat Mar 28 00:53:36 2020 +0000 @@ -0,0 +1,104 @@ + +#include "mbed.h" +#include "I2CEeprom.h" +#include <iostream> + +namespace { + + I2C i2c1(I2C_SDA, I2C_SCL ); + I2CEeprom eeprom( + i2c1, + 0b10100000, // i2c bus address + 64, // page size + 16 * 1024, // memory size in bytes + 5 // write cycle time in ms + ); +} + +template <typename T> +bool storage_byte_read_write_test(size_t ee_address,T const & val) +{ + auto numWritten = eeprom.write(ee_address,val); + if(numWritten != sizeof(val) ){ + std::cout << "failed to write eeprom\n"; + return false; + } + + T result; + auto numRead = eeprom.read(ee_address,result); + if ( numRead != sizeof(val)){ + std::cout << "failed to read eeprom\n"; + return false; + } + std::cout << "result = " << result << '\n'; + return true; +} + +bool storage_byte_read_write_test(size_t ee_address, const char* str, size_t len) +{ + auto numWritten = eeprom.write(ee_address,str,len); + if(numWritten != len ){ + std::cout << "failed to write eeprom\n"; + return false; + } + + char* result = new char[len +1]; + + if (! result){ + std::cout << "malloc failed\n"; + return false; + } + memset(result,'X',len); + result [len] = '\0'; + + auto numRead = eeprom.read(ee_address,result,len); + if ( numRead != len){ + std::cout << "failed to read eeprom\n"; + delete [] result; + return false; + } + result [len] = '\0'; + bool match = strncmp(str,result,len) ==0; + if ( match){ + std::cout << "strings match\n"; + }else{ + std::cout << "strings don't match\n"; + } + std::cout << "result = " << result << '\n'; + delete [] result; + + return true; +} + +int main() +{ + ThisThread::sleep_for(100U); + char val = 'J'; + if ( storage_byte_read_write_test(0x21,val) ){ + std::cout << "char -> Success!\n"; + } + + //const char* str = "Hello*World!"; + constexpr char str [] = + #if 0 + "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod " + "tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim " + "veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea " + "commodo consequat."; + #else + + "But I must explain to you how all this mistaken idea of denouncing " + "pleasure and praising pain was born and I will give you a complete " + "account of the system, and expound the actual teachings of the " + "great explorer of the truth, the master-builder of human happiness."; + #endif + + std::cout << "length of string = " << strlen(str) <<'\n'; + + if ( storage_byte_read_write_test(0x5,str,strlen(str)+1) ){ + std::cout << "c_string -> Success!\n"; + } + + for(;;){;} + +} \ No newline at end of file