2017-08-01 18:19:23 +02:00
|
|
|
#ifdef TARGET_LPC1768
|
2017-06-17 23:19:42 +02:00
|
|
|
|
2017-09-06 13:28:32 +02:00
|
|
|
#include "../../inc/MarlinConfig.h"
|
2017-06-17 23:19:42 +02:00
|
|
|
|
2017-09-06 13:28:32 +02:00
|
|
|
#if ENABLED(EEPROM_SETTINGS)
|
2017-06-17 23:19:42 +02:00
|
|
|
|
2017-09-06 13:28:32 +02:00
|
|
|
#include "../persistent_store_api.h"
|
2017-08-01 18:19:23 +02:00
|
|
|
|
2017-09-06 13:28:32 +02:00
|
|
|
#include "chanfs/diskio.h"
|
|
|
|
#include "chanfs/ff.h"
|
2017-06-17 23:19:42 +02:00
|
|
|
|
|
|
|
namespace HAL {
|
|
|
|
namespace PersistentStore {
|
|
|
|
|
|
|
|
FATFS fat_fs;
|
|
|
|
FIL eeprom_file;
|
|
|
|
|
|
|
|
bool access_start() {
|
|
|
|
f_mount(&fat_fs, "", 1);
|
|
|
|
FRESULT res = f_open(&eeprom_file, "eeprom.dat", FA_OPEN_ALWAYS | FA_WRITE | FA_READ);
|
|
|
|
return (res == FR_OK);
|
|
|
|
}
|
|
|
|
|
2017-09-06 13:28:32 +02:00
|
|
|
bool access_finish() {
|
2017-06-17 23:19:42 +02:00
|
|
|
f_close(&eeprom_file);
|
|
|
|
f_unmount("");
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool write_data(int &pos, const uint8_t *value, uint16_t size, uint16_t *crc) {
|
|
|
|
UINT bytes_written = 0;
|
|
|
|
f_lseek(&eeprom_file, pos);
|
|
|
|
f_write(&eeprom_file, (void *)value, size, &bytes_written);
|
|
|
|
crc16(crc, value, size);
|
|
|
|
pos = pos + size;
|
|
|
|
return (bytes_written == size);
|
|
|
|
}
|
|
|
|
|
|
|
|
void read_data(int &pos, uint8_t* value, uint16_t size, uint16_t *crc) {
|
|
|
|
UINT bytes_read = 0;
|
|
|
|
f_lseek(&eeprom_file, pos);
|
|
|
|
f_read(&eeprom_file, (void *)value, size, &bytes_read);
|
|
|
|
crc16(crc, value, size);
|
|
|
|
pos = pos + size;
|
|
|
|
}
|
|
|
|
|
2017-09-06 13:28:32 +02:00
|
|
|
} // PersistentStore
|
|
|
|
} // HAL
|
2017-06-17 23:19:42 +02:00
|
|
|
|
|
|
|
#endif // EEPROM_SETTINGS
|
2017-09-06 13:28:32 +02:00
|
|
|
#endif // TARGET_LPC1768
|