libdragon
Functions
eeprom.c File Reference

EEPROM support. More...

Functions

eeprom_type_t eeprom_present (void)
 Probe the EEPROM interface on the cartridge. More...
 
size_t eeprom_total_blocks (void)
 Determine how many blocks of EEPROM exist on the cartridge. More...
 
void eeprom_read (uint8_t block, uint8_t *dest)
 Read a block from EEPROM. More...
 
uint8_t eeprom_write (uint8_t block, const uint8_t *src)
 Write a block to EEPROM. More...
 
void eeprom_read_bytes (uint8_t *dest, size_t start, size_t len)
 Read a buffer of bytes from EEPROM. More...
 
void eeprom_write_bytes (const uint8_t *src, size_t start, size_t len)
 Write a buffer of bytes to EEPROM. More...
 

Detailed Description

EEPROM support.

Function Documentation

◆ eeprom_present()

eeprom_type_t eeprom_present ( void  )

Probe the EEPROM interface on the cartridge.

Inspect the identifier half-word of the EEPROM status response to determine which EEPROM save type is available (if any).

Returns
which EEPROM type was detected on the cartridge.

◆ eeprom_total_blocks()

size_t eeprom_total_blocks ( void  )

Determine how many blocks of EEPROM exist on the cartridge.

Returns
0 if EEPROM was not detected or the number of EEPROM 8-byte save blocks available.

◆ eeprom_read()

void eeprom_read ( uint8_t  block,
uint8_t *  dest 
)

Read a block from EEPROM.

Parameters
[in]blockBlock to read data from. Joybus accesses EEPROM in 8-byte blocks.
[out]destDestination buffer for the eight bytes read from EEPROM.

◆ eeprom_write()

uint8_t eeprom_write ( uint8_t  block,
const uint8_t *  src 
)

Write a block to EEPROM.

Parameters
[in]blockBlock to write data to. Joybus accesses EEPROM in 8-byte blocks.
[in]srcSource buffer for the eight bytes of data to write to EEPROM.
Returns
the EEPROM status byte

◆ eeprom_read_bytes()

void eeprom_read_bytes ( uint8_t *  dest,
size_t  start,
size_t  len 
)

Read a buffer of bytes from EEPROM.

This is a high-level convenience helper that abstracts away the one-at-a-time EEPROM block access pattern.

Parameters
[out]destDestination buffer to read data into
[in]startByte offset in EEPROM to start reading data from
[in]lenByte length of data to read into buffer

◆ eeprom_write_bytes()

void eeprom_write_bytes ( const uint8_t *  src,
size_t  start,
size_t  len 
)

Write a buffer of bytes to EEPROM.

This is a high-level convenience helper that abstracts away the one-at-a-time EEPROM block access pattern.

Each EEPROM block write takes approximately 15 milliseconds; this operation may block for a while with large buffer sizes:

  • 4k EEPROM: 64 blocks * 15ms = 960ms!
  • 16k EEPROM: 256 blocks * 15ms = 3840ms!

You may want to pause audio before calling this.

Parameters
[in]srcSource buffer containing data to write
[in]startByte offset in EEPROM to start writing data to
[in]lenByte length of the src buffer