Дописал get и put, починил
This commit is contained in:
1 parent
57d3580029
commit
55c17cf2b6
5 files changed
+219
-64
No files matched your search
@@ -104,51 +104,6 @@ uint16_t EEPROMClass:: length( void )
|
||||
return (uint16_t)EEPROM_LENGHT;
|
||||
}
|
||||
|
||||
// // template< typename T >
|
||||
// void* EEPROMClass:: put(int idx, void* dataPointer)
|
||||
// {
|
||||
// // Проверка адекватности адреса idx
|
||||
// if (((uint32_t)idx >= (uint32_t)EEPROM_LENGHT) || (idx < 0))
|
||||
// return dataPointer; // #TODO Добавить сообщение об ошибке
|
||||
// // Проверка того, что данные влезут в eeprom, если начинать с текущего адреса
|
||||
// if (sizeof(dataPointer) > ((int)EEPROM_LENGHT - idx))
|
||||
// return dataPointer; // #TODO Добавить сообщение об ошибке
|
||||
|
||||
// uint32_t write_data_buf[EEPROM_PAGE_WORDS] = {};
|
||||
|
||||
// // Вычисление адресы начала нужной страницы
|
||||
// uint32_t addr = EEPROM_START_ADDR + (((uint32_t)idx) / EEPROM_PAGE_SIZE) * EEPROM_PAGE_SIZE;
|
||||
// // Читаем нужную страницу
|
||||
// HAL_EEPROM_Read(&heeprom, (uint16_t)addr, write_data_buf, EEPROM_PAGE_WORDS, EEPROM_OP_TIMEOUT);
|
||||
// uint8_t size = sizeof(dataPointer);
|
||||
// memcpy((void *)((uint8_t *)write_data_buf + idx), (void *)&size, 20);
|
||||
|
||||
// HAL_EEPROM_Erase(&heeprom, (uint16_t)addr, EEPROM_PAGE_WORDS, HAL_EEPROM_WRITE_SINGLE, EEPROM_OP_TIMEOUT);
|
||||
// HAL_EEPROM_Write(&heeprom, (uint16_t)addr, write_data_buf, EEPROM_PAGE_WORDS, HAL_EEPROM_WRITE_SINGLE, EEPROM_OP_TIMEOUT);
|
||||
|
||||
// // Количество байт данных для записи.
|
||||
// // int count = sizeof(T);
|
||||
|
||||
// // Цикл для записи данных побайтно в EEPROM.
|
||||
// // for(uint16_t i = 0; i < sizeof(T); i++) {
|
||||
// // // Запись текущего байта данных в EEPROM.
|
||||
// // EEPROM.update(ee_idx + i, *ptr++ );
|
||||
// // }
|
||||
|
||||
// // Запись данных в eeprom
|
||||
// // Возврат ссылки на записанный объект.
|
||||
// return dataPointer;
|
||||
// }
|
||||
template< typename T >
|
||||
T& EEPROMClass:: get(int idx, T &t) {
|
||||
// EEPtr e = idx; // Указатель на адрес в EEPROM
|
||||
// uint8_t *ptr = (uint8_t*) &t; // Преобразуем ссылку на объект данных в указатель на байт
|
||||
// for (int count = sizeof(T); count; --count, ++e) {
|
||||
// *ptr++ = *e; // Читаем данные из EEPROM и записываем в объект
|
||||
// }
|
||||
return t; // Возвращаем ссылку на переданный объект с прочитанными данными
|
||||
}
|
||||
|
||||
void HAL_read(uint16_t addr, uint32_t * data)
|
||||
{
|
||||
HAL_EEPROM_Read(&heeprom, (uint16_t)addr, data, EEPROM_PAGE_WORDS, EEPROM_OP_TIMEOUT);
|
||||
|
||||
Reference in new issue
Block a user