mirror of
https://git.mirrors.martin98.com/https://github.com/luc-github/ESP3D.git
synced 2025-08-11 18:49:03 +08:00
Fix warnings
This commit is contained in:
parent
76a8e4efc2
commit
159b56ba9c
1
.gitignore
vendored
1
.gitignore
vendored
@ -9,3 +9,4 @@ embedded/dist
|
||||
.vscode/.browse.c_cpp.db*
|
||||
.vscode/c_cpp_properties.json
|
||||
.vscode/launch.json
|
||||
.vscode/arduino.json
|
||||
|
@ -716,7 +716,7 @@ void TFT_eSprite::pushImage(int32_t x, int32_t y, int32_t w, int32_t h, const u
|
||||
uint32_t ww = (w+7) & 0xFFF8;
|
||||
for (int32_t yp = 0; yp<h; yp++)
|
||||
{
|
||||
for (int32_t xp = 0; xp<ww; xp+=8)
|
||||
for (int32_t xp = 0; (uint32_t)xp < ww; xp+=8)
|
||||
{
|
||||
uint8_t pbyte = pgm_read_byte(pdata++);
|
||||
for (uint8_t xc = 0; xc < 8; xc++)
|
||||
@ -1679,7 +1679,7 @@ int16_t TFT_eSprite::drawChar(uint16_t uniCode, int32_t x, int32_t y, uint8_t fo
|
||||
if ((font>2) && (font<9))
|
||||
{
|
||||
// This is slower than above but is more convenient for the RLE fonts
|
||||
flash_address = pgm_read_dword( (const void*)pgm_read_dword( &(fontdata[font].chartbl ) ) + uniCode*sizeof(void *) );
|
||||
flash_address = pgm_read_dword( (const void*)(pgm_read_dword( &(fontdata[font].chartbl ) ) + uniCode*sizeof(void *) ));
|
||||
width = pgm_read_byte( (uint8_t *)pgm_read_dword( &(fontdata[font].widthtbl ) ) + uniCode );
|
||||
height= pgm_read_byte( &fontdata[font].height );
|
||||
}
|
||||
|
@ -35,9 +35,9 @@
|
||||
|
||||
// If it is a 16bit serial display we must transfer 16 bits every time
|
||||
#ifdef RPI_ILI9486_DRIVER
|
||||
#define CMD_BITS 16-1
|
||||
#define CMD_BITS (16-1)
|
||||
#else
|
||||
#define CMD_BITS 8-1
|
||||
#define CMD_BITS (8-1)
|
||||
#endif
|
||||
|
||||
// Fast block write prototype
|
||||
@ -4270,7 +4270,7 @@ int16_t TFT_eSPI::drawChar(uint16_t uniCode, int32_t x, int32_t y, uint8_t font)
|
||||
{
|
||||
if ((font>2) && (font<9))
|
||||
{
|
||||
flash_address = pgm_read_dword( (const void*)pgm_read_dword( &(fontdata[font].chartbl ) ) + uniCode*sizeof(void *) );
|
||||
flash_address = pgm_read_dword( (const void*)(pgm_read_dword( &(fontdata[font].chartbl ) ) + uniCode*sizeof(void *)));
|
||||
width = pgm_read_byte( (uint8_t *)pgm_read_dword( &(fontdata[font].widthtbl ) ) + uniCode );
|
||||
height= pgm_read_byte( &fontdata[font].height );
|
||||
}
|
||||
|
114
patch/pgmspace.h
114
patch/pgmspace.h
@ -1,114 +0,0 @@
|
||||
/* PGMSPACE.H - Accessor utilities/types for accessing PROGMEM data */
|
||||
|
||||
#ifndef _PGMSPACE_H_
|
||||
#define _PGMSPACE_H_
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#ifndef ICACHE_RODATA_ATTR
|
||||
#define ICACHE_RODATA_ATTR __attribute__((section(".irom.text")))
|
||||
#endif
|
||||
#ifndef PROGMEM
|
||||
// The following two macros cause a parameter to be enclosed in quotes
|
||||
// by the preopressor (i.e. for concatenating ints to strings)
|
||||
#define __STRINGIZE_NX(A) #A
|
||||
#define __STRINGIZE(A) __STRINGIZE_NX(A)
|
||||
// Since __section__ is supposed to be only use for global variables,
|
||||
// there could be conflicts when a static/inlined function has them in the
|
||||
// same file as a non-static PROGMEM object.
|
||||
// Ref: https://gcc.gnu.org/onlinedocs/gcc-3.2/gcc/Variable-Attributes.html
|
||||
// Place each progmem object into its own named section, avoiding conflicts
|
||||
#define PROGMEM __attribute__((section( "\".irom.text." __FILE__ "." __STRINGIZE(__LINE__) "." __STRINGIZE(__COUNTER__) "\"")))
|
||||
#endif
|
||||
#ifndef PGM_P
|
||||
#define PGM_P const char *
|
||||
#endif
|
||||
#ifndef PGM_VOID_P
|
||||
#define PGM_VOID_P const void *
|
||||
#endif
|
||||
|
||||
// PSTR() macro modified to start on a 32-bit boundary. This adds on average
|
||||
// 1.5 bytes/string, but in return memcpy_P and strcpy_P will work 4~8x faster
|
||||
#ifndef PSTR
|
||||
#define PSTR(s) (__extension__({static const char __c[] __attribute__((__aligned__(4))) PROGMEM = (s); &__c[0];}))
|
||||
#endif
|
||||
|
||||
// Flash memory must be read using 32 bit aligned addresses else a processor
|
||||
// exception will be triggered.
|
||||
// The order within the 32 bit values are:
|
||||
// --------------
|
||||
// b3, b2, b1, b0
|
||||
// w1, w0
|
||||
|
||||
#define pgm_read_with_offset(addr, res) \
|
||||
asm("extui %0, %1, 0, 2\n" /* Extract offset within word (in bytes) */ \
|
||||
"sub %1, %1, %0\n" /* Subtract offset from addr, yielding an aligned address */ \
|
||||
"l32i.n %1, %1, 0x0\n" /* Load word from aligned address */ \
|
||||
"slli %0, %0, 3\n" /* Mulitiply offset by 8, yielding an offset in bits */ \
|
||||
"ssr %0\n" /* Prepare to shift by offset (in bits) */ \
|
||||
"srl %0, %1\n" /* Shift right; now the requested byte is the first one */ \
|
||||
:"=r"(res), "=r"(addr) \
|
||||
:"1"(addr) \
|
||||
:);
|
||||
|
||||
static inline uint8_t pgm_read_byte_inlined(const void* addr) {
|
||||
register uint32_t res;
|
||||
pgm_read_with_offset(addr, res);
|
||||
return (uint8_t) res; /* This masks the lower byte from the returned word */
|
||||
}
|
||||
|
||||
/* Although this says "word", it's actually 16 bit, i.e. half word on Xtensa */
|
||||
static inline uint16_t pgm_read_word_inlined(const void* addr) {
|
||||
register uint32_t res;
|
||||
pgm_read_with_offset(addr, res);
|
||||
return (uint16_t) res; /* This masks the lower half-word from the returned word */
|
||||
}
|
||||
|
||||
#define pgm_read_byte(addr) pgm_read_byte_inlined(addr)
|
||||
#define pgm_read_word(addr) pgm_read_word_inlined(addr)
|
||||
#ifdef __cplusplus
|
||||
#define pgm_read_dword(addr) (*reinterpret_cast<const uint32_t*>(addr))
|
||||
#define pgm_read_float(addr) (*reinterpret_cast<const float*>(addr))
|
||||
#define pgm_read_ptr(addr) (*reinterpret_cast<const void* const *>(addr))
|
||||
#else
|
||||
#define pgm_read_dword(addr) (*(const uint32_t*)(addr))
|
||||
#define pgm_read_float(addr) (*(const float*)(addr))
|
||||
#define pgm_read_ptr(addr) (*(const void* const*)(addr))
|
||||
#endif
|
||||
|
||||
#define pgm_read_byte_near(addr) pgm_read_byte(addr)
|
||||
#define pgm_read_word_near(addr) pgm_read_word(addr)
|
||||
#define pgm_read_dword_near(addr) pgm_read_dword(addr)
|
||||
#define pgm_read_float_near(addr) pgm_read_float(addr)
|
||||
#define pgm_read_ptr_near(addr) pgm_read_ptr(addr)
|
||||
#define pgm_read_byte_far(addr) pgm_read_byte(addr)
|
||||
#define pgm_read_word_far(addr) pgm_read_word(addr)
|
||||
#define pgm_read_dword_far(addr) pgm_read_dword(addr)
|
||||
#define pgm_read_float_far(addr) pgm_read_float(addr)
|
||||
#define pgm_read_ptr_far(addr) pgm_read_ptr(addr)
|
||||
|
||||
#define _SFR_BYTE(n) (n)
|
||||
|
||||
#ifdef __PROG_TYPES_COMPAT__
|
||||
|
||||
typedef void prog_void;
|
||||
typedef char prog_char;
|
||||
typedef unsigned char prog_uchar;
|
||||
typedef int8_t prog_int8_t;
|
||||
typedef uint8_t prog_uint8_t;
|
||||
typedef int16_t prog_int16_t;
|
||||
typedef uint16_t prog_uint16_t;
|
||||
typedef int32_t prog_int32_t;
|
||||
typedef uint32_t prog_uint32_t;
|
||||
|
||||
#endif // defined(__PROG_TYPES_COMPAT__)
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
Loading…
x
Reference in New Issue
Block a user