1
0
mirror of https://github.com/DCC-EX/CommandStation-EX.git synced 2024-11-30 03:26:13 +01:00

EXRAIL ling segment

This commit is contained in:
Asbelos 2023-11-21 21:14:54 +00:00
parent 263ed18b25
commit 478e9661bb
3 changed files with 12 additions and 9 deletions

View File

@ -203,7 +203,7 @@ private:
uint16_t getOperand(byte n); uint16_t getOperand(byte n);
static bool diag; static bool diag;
static const HIGHFLASH byte RouteCode[]; static const HIGHFLASH3 byte RouteCode[];
static const HIGHFLASH int16_t SignalDefinitions[]; static const HIGHFLASH int16_t SignalDefinitions[];
static byte flags[MAX_FLAGS]; static byte flags[MAX_FLAGS];
static Print * LCCSerial; static Print * LCCSerial;

View File

@ -121,14 +121,14 @@ const byte RMFT2::compileFeatures = 0
#include "EXRAIL2MacroReset.h" #include "EXRAIL2MacroReset.h"
#undef ROUTE #undef ROUTE
#define ROUTE(id, description) id, #define ROUTE(id, description) id,
const int16_t HIGHFLASH const RMFT2::routeIdList[]= { const int16_t HIGHFLASH RMFT2::routeIdList[]= {
#include "myAutomation.h" #include "myAutomation.h"
INT16_MAX}; INT16_MAX};
// Pass 2a create throttle automation list // Pass 2a create throttle automation list
#include "EXRAIL2MacroReset.h" #include "EXRAIL2MacroReset.h"
#undef AUTOMATION #undef AUTOMATION
#define AUTOMATION(id, description) id, #define AUTOMATION(id, description) id,
const int16_t HIGHFLASH const RMFT2::automationIdList[]= { const int16_t HIGHFLASH RMFT2::automationIdList[]= {
#include "myAutomation.h" #include "myAutomation.h"
INT16_MAX}; INT16_MAX};
@ -150,7 +150,7 @@ const FSH * RMFT2::getRouteDescription(int16_t id) {
const int StringMacroTracker1=__COUNTER__; const int StringMacroTracker1=__COUNTER__;
#define THRUNGE(msg,mode) \ #define THRUNGE(msg,mode) \
case (__COUNTER__ - StringMacroTracker1) : {\ case (__COUNTER__ - StringMacroTracker1) : {\
static const char HIGHFLASH const thrunge[]=msg;\ static const char HIGHFLASH thrunge[]=msg;\
strfar=(uint32_t)GETFARPTR(thrunge);\ strfar=(uint32_t)GETFARPTR(thrunge);\
tmode=mode;\ tmode=mode;\
break;\ break;\
@ -186,7 +186,7 @@ case (__COUNTER__ - StringMacroTracker1) : {\
#undef LCD #undef LCD
#define LCD(id,msg) \ #define LCD(id,msg) \
case (__COUNTER__ - StringMacroTracker1) : {\ case (__COUNTER__ - StringMacroTracker1) : {\
static const char HIGHFLASH const thrunge[]=msg;\ static const char HIGHFLASH thrunge[]=msg;\
strfar=(uint32_t)GETFARPTR(thrunge);\ strfar=(uint32_t)GETFARPTR(thrunge);\
tmode=thrunge_lcd; \ tmode=thrunge_lcd; \
lcdid=id;\ lcdid=id;\
@ -195,7 +195,7 @@ case (__COUNTER__ - StringMacroTracker1) : {\
#undef SCREEN #undef SCREEN
#define SCREEN(display,id,msg) \ #define SCREEN(display,id,msg) \
case (__COUNTER__ - StringMacroTracker1) : {\ case (__COUNTER__ - StringMacroTracker1) : {\
static const char HIGHFLASH const thrunge[]=msg;\ static const char HIGHFLASH thrunge[]=msg;\
strfar=(uint32_t)GETFARPTR(thrunge);\ strfar=(uint32_t)GETFARPTR(thrunge);\
tmode=(thrunger)(thrunge_lcd+display); \ tmode=(thrunger)(thrunge_lcd+display); \
lcdid=id;\ lcdid=id;\
@ -274,7 +274,7 @@ const byte RMFT2::rosterNameCount=0
#include "EXRAIL2MacroReset.h" #include "EXRAIL2MacroReset.h"
#undef ROSTER #undef ROSTER
#define ROSTER(cabid,name,funcmap...) cabid, #define ROSTER(cabid,name,funcmap...) cabid,
const int16_t HIGHFLASH const RMFT2::rosterIdList[]={ const int16_t HIGHFLASH RMFT2::rosterIdList[]={
#include "myAutomation.h" #include "myAutomation.h"
INT16_MAX}; INT16_MAX};
@ -314,7 +314,7 @@ const FSH * RMFT2::getRosterFunctions(int16_t id) {
#undef VIRTUAL_SIGNAL #undef VIRTUAL_SIGNAL
#define VIRTUAL_SIGNAL(id) id,0,0,0, #define VIRTUAL_SIGNAL(id) id,0,0,0,
const HIGHFLASH int16_t const RMFT2::SignalDefinitions[] = { const HIGHFLASH int16_t RMFT2::SignalDefinitions[] = {
#include "myAutomation.h" #include "myAutomation.h"
0,0,0,0 }; 0,0,0,0 };
@ -503,7 +503,7 @@ int RMFT2::onLCCLookup[RMFT2::countLCCLookup];
// Build RouteCode // Build RouteCode
const int StringMacroTracker2=__COUNTER__; const int StringMacroTracker2=__COUNTER__;
const HIGHFLASH byte const RMFT2::RouteCode[] = { const HIGHFLASH3 byte RMFT2::RouteCode[] = {
#include "myAutomation.h" #include "myAutomation.h"
OPCODE_ENDTASK,0,0,OPCODE_ENDEXRAIL,0,0 }; OPCODE_ENDTASK,0,0,OPCODE_ENDEXRAIL,0,0 };

3
FSH.h
View File

@ -56,6 +56,7 @@ typedef __FlashStringHelper FSH;
#if defined(ARDUINO_AVR_MEGA) || defined(ARDUINO_AVR_MEGA2560) #if defined(ARDUINO_AVR_MEGA) || defined(ARDUINO_AVR_MEGA2560)
// AVR_MEGA memory deliberately placed at end of link may need _far functions // AVR_MEGA memory deliberately placed at end of link may need _far functions
#define HIGHFLASH __attribute__((section(".fini2"))) #define HIGHFLASH __attribute__((section(".fini2")))
#define HIGHFLASH3 __attribute__((section(".fini3")))
#define GETFARPTR(data) pgm_get_far_address(data) #define GETFARPTR(data) pgm_get_far_address(data)
#define GETHIGHFLASH(data,offset) pgm_read_byte_far(GETFARPTR(data)+offset) #define GETHIGHFLASH(data,offset) pgm_read_byte_far(GETFARPTR(data)+offset)
#define GETHIGHFLASHW(data,offset) pgm_read_word_far(GETFARPTR(data)+offset) #define GETHIGHFLASHW(data,offset) pgm_read_word_far(GETFARPTR(data)+offset)
@ -63,6 +64,7 @@ typedef __FlashStringHelper FSH;
// AVR_UNO/NANO runtime does not support _far functions so just use _near equivalent // AVR_UNO/NANO runtime does not support _far functions so just use _near equivalent
// as there is no progmem above 32kb anyway. // as there is no progmem above 32kb anyway.
#define HIGHFLASH PROGMEM #define HIGHFLASH PROGMEM
#define HIGHFLASH3 PROGMEM
#define GETFARPTR(data) ((uint32_t)(data)) #define GETFARPTR(data) ((uint32_t)(data))
#define GETHIGHFLASH(data,offset) pgm_read_byte_near(GETFARPTR(data)+(offset)) #define GETHIGHFLASH(data,offset) pgm_read_byte_near(GETFARPTR(data)+(offset))
#define GETHIGHFLASHW(data,offset) pgm_read_word_near(GETFARPTR(data)+(offset)) #define GETHIGHFLASHW(data,offset) pgm_read_word_near(GETFARPTR(data)+(offset))
@ -80,6 +82,7 @@ typedef __FlashStringHelper FSH;
typedef char FSH; typedef char FSH;
#define FLASH #define FLASH
#define HIGHFLASH #define HIGHFLASH
#define HIGHFLASH3
#define GETFARPTR(data) ((uint32_t)(data)) #define GETFARPTR(data) ((uint32_t)(data))
#define GETFLASH(addr) (*(const byte *)(addr)) #define GETFLASH(addr) (*(const byte *)(addr))
#define GETHIGHFLASH(data,offset) (*(const byte *)(GETFARPTR(data)+offset)) #define GETHIGHFLASH(data,offset) (*(const byte *)(GETFARPTR(data)+offset))