Дописал get и put, починил

This commit is contained in:
EgorShin committed 2024-10-08 10:34:05 +07:00
1 parent 57d3580029
commit 55c17cf2b6
5 files changed
+219 -64

No files matched your search

-45
View File
@@ -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);