Andy Little
/
storage_test
Storage test of 24LC128 I2C EEPROM. Tested in Mbed OS 5.1
main.cpp
- Committer:
- skyscraper
- Date:
- 2020-03-28
- Revision:
- 5:67ab1202d0f7
- Parent:
- 1:95752dbaadf5
File content as of revision 5:67ab1202d0f7:
#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(0x50,val) ) { std::cout << "char -> Success!\n"; } constexpr char str [] = #if 1 "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(0x3800,str,strlen(str)+1) ) { std::cout << "c_string -> Success!\n"; } for(;;) {;} }