forked from haraldwolff/avr-fw-modules
30 lines
624 B
C
Executable File
30 lines
624 B
C
Executable File
#include <hwo/eeprom.h>
|
|
#include <avr/eeprom.h>
|
|
|
|
#include <sys/errno.h>
|
|
|
|
extern struct avr_eeprom_desc __ee_desc;
|
|
|
|
uint16_t eeprom_save(uint8_t bank,avrEEPROM *data)
|
|
{
|
|
MUTEXED( &eepromMutex );
|
|
avrChksum chk;
|
|
|
|
if (bank < __ee_desc.num_banks)
|
|
{
|
|
chksum(&chk,data,32);
|
|
eeprom_update_block(data, (void*)(0x20 * bank), 32);
|
|
eeprom_update_block(&chk, (void*)(__ee_desc.base_chksums + (bank<<1)), 0x02);
|
|
|
|
bank += __ee_desc.num_banks;
|
|
eeprom_update_block(data, (void*)(0x20 * bank), 32);
|
|
eeprom_update_block(&chk, (void*)(__ee_desc.base_chksums + (bank<<1)), 0x02);
|
|
|
|
return ESUCCESS;
|
|
};
|
|
return -ENOFILE;
|
|
};
|
|
|
|
|
|
|