FastLED 3.9.3
Loading...
Searching...
No Matches
fastled_progmem.h File Reference

Detailed Description

Wrapper definitions to allow seamless use of PROGMEM in environments that have it.

This is a compatibility layer for devices that do or don't have "PROGMEM" and the associated pgm_ accessors.

If a platform supports PROGMEM, it should define FASTLED_USE_PROGMEM as 1, otherwise FastLED will fall back to NOT using PROGMEM.

Whether or not pgmspace.h is #included is separately controllable by FASTLED_INCLUDE_PGMSPACE, if needed.

Definition in file fastled_progmem.h.

#include "FastLED.h"
#include "namespace.h"

Go to the source code of this file.

Macros

#define FASTLED_USE_PROGMEM   1
 Determine whether the current platform supports PROGMEM.
 
#define FL_PROGMEM   PROGMEM
 PROGMEM keyword for storage.
 
#define FL_ALIGN_PROGMEM   __attribute__ ((aligned (4)))
 Helps to force 4-byte alignment for platforms with unaligned access.
 
PROGMEM Read Functions

Functions for reading data from PROGMEM memory.

Note that only the "near" memory wrappers are provided. If you're using "far" memory, you already have portability issues to work through, but you could add more support here if needed.

#define FL_PGM_READ_BYTE_NEAR(x)   (pgm_read_byte_near(x))
 Read a byte (8-bit) from PROGMEM memory.
 
#define FL_PGM_READ_WORD_NEAR(x)   (pgm_read_word_near(x))
 Read a word (16-bit) from PROGMEM memory.
 
#define FL_PGM_READ_DWORD_NEAR(x)   (pgm_read_dword_near(x))
 Read a double word (32-bit) from PROGMEM memory.
 

Macro Definition Documentation

◆ FASTLED_USE_PROGMEM

#define FASTLED_USE_PROGMEM   1

Determine whether the current platform supports PROGMEM.

If FASTLED_USE_PROGMEM is 1, we'll map FL_PROGMEM and the FL_PGM_* accessors to the Arduino equivalents.

Definition at line 26 of file fastled_progmem.h.

◆ FL_ALIGN_PROGMEM

#define FL_ALIGN_PROGMEM   __attribute__ ((aligned (4)))

Helps to force 4-byte alignment for platforms with unaligned access.

On some platforms, most notably ARM M0, unaligned access to 'PROGMEM' for multibyte values (e.g. read dword) is not allowed and causes a crash. This macro can help force 4-byte alignment as needed. The FastLED gradient palette code uses 'read dword', and now uses this macro to make sure that gradient palettes are 4-byte aligned.

Definition at line 99 of file fastled_progmem.h.

◆ FL_PGM_READ_BYTE_NEAR

#define FL_PGM_READ_BYTE_NEAR ( x)    (pgm_read_byte_near(x))

Read a byte (8-bit) from PROGMEM memory.

Definition at line 58 of file fastled_progmem.h.

◆ FL_PGM_READ_DWORD_NEAR

#define FL_PGM_READ_DWORD_NEAR ( x)    (pgm_read_dword_near(x))

Read a double word (32-bit) from PROGMEM memory.

Definition at line 62 of file fastled_progmem.h.

◆ FL_PGM_READ_WORD_NEAR

#define FL_PGM_READ_WORD_NEAR ( x)    (pgm_read_word_near(x))

Read a word (16-bit) from PROGMEM memory.

Definition at line 60 of file fastled_progmem.h.

◆ FL_PROGMEM

#define FL_PROGMEM   PROGMEM

PROGMEM keyword for storage.

Definition at line 45 of file fastled_progmem.h.