tone-generator/eeprom.cpp

34 lines
571 B
C++
Raw Normal View History

2024-08-25 13:55:43 +10:00
#include <avr/pgmspace.h>
#include "midi_data.hpp"
#include "eeprom.hpp"
static int address = 0;
void eeprom::jump(int loc) {
address = loc;
}
inline size_t proc_len(size_t len) {
if(address + len >= sizeof(MIDI)) {
return sizeof(MIDI) - address;
} else {
return len;
}
}
void eeprom::read(void* data, size_t len) {
char* bytes = (char*)data;
len = proc_len(len);
memcpy_P(data, &MIDI[address], len);
address += len;
}
void eeprom::write(const void* data, size_t len) {
const char* bytes = (const char*)data;
len = proc_len(len);
address += len;
}