EDDC Release Notes

Enhanced DDC Release Notes

By Using This Website, You agree to the following Website Linked Disclaimer 

The Enhanced Display Driver Code

 The Enhanced Display Driver Code
 Return To The Enhanced Display Driver Code Page.  This link will take you back to the Enhanced Display Driver Code Webpage. The Enhanced Display Driver Code page gives all the directions to installing and running this Enhanced Display Driver Code. It also gives directions to updating the supporting database files.

The Original ON7LDS Nextion Display Driver Code

This project is NOT an attack on ON7LDS, their other programmers, and their Nextion Display Driver Code, the NDDC Project. IF it wasn't for their initial work that they have done so far, all the way up to version 1.19, We here wouldn't be doing this project, the Enhanced Display Driver Code, the EDDC. We encourage them to continue their project.
We make this known as We have been made aware of certain grumblings from those who wish to say things which aren't true. There will always be malefactors who wish to destroy anything however they can, cause dissension among others who are not directly involved, and even cause resentment between the parties that are involved.
We have NO animosity towards ON7LDS and the other programmers of their version of the NDDC project. It's crazy to have to make such statements here, yet, the world We all live in has so many detractors these days. SO, with all of this being said, IF these lies have already landed back in the lap of ON7LDS and their other programmers, We here wish to set the record straight.
We here are extremely grateful for ALL of their coding aspirations thus far.

The Programming Knowledge Here

I, AG4OJ, have never been a professional programmer. Like my life long history in everything else I've ever done, I'm self taught. I wish to thank those who plunged me into the deep end of the programming swimming pool, encouraging me to start the recoding process of the NDDC, the new EDDC. This keeps me connected to my abilities and helps me disconnect from my Military and VA caused disabilities.
Their praises over my NDC, provided here since October 2019, gave them the idea into pushing me in January 2021 to start recoding the NDDC, the making of the new EDDC. Please know that I still rely on these professional contacts and their extensive knowledge in programming. It's their unfettered help that keeps me from drowning in the deep end of the programming swimming pool. To which I will finally say, all of this is their fault, they pushed me in, HA!

HMI - The Human Machine Interface

The Human Machine Interface, the HMI, is what this is all about. The Human is you and/or me. We are the ultimate control over the Machine by using it's Interface, mostly. The Machine here is Raspberry Pi OS, Pi-Star, the MMDVMHost, and the Enhanced Display Driver Code. The Interface is the Nextion Display and it's Nextion Display Code.
We have to allow the Raspberry Pi OS to do what it can do best first. Then, the same with Pi-Star, the MMDVMHost, and the Enhanced Display Driver Code. Making most things happen "Up-Stream" of the Nextion Display and the Nextion Display Code, is the reason for this re-coding project.
By attacking it this way, the HotSpot / Repeater that You and I build in the future can then become a more complete, independent, self-contained, quickly responding, and an easy to use all-in-one appliance. By using programming methods outlined above, this will utilize every aspect of the Machine to help make the Interface respond to what the Human expects intelligently.

Explaining The EDDC Variables

We have moved the list of MMDVMHost Settings File Variables out of the Release Notes. This list may include updates to the EDDC not yet released.
ScreenSaver is to activate, NON-ZERO Value, and time in seconds for the screen saver.
GenerateCPU is to activate, NON-ZERO Value, and time is seconds to sending out CPU statistics.
HostMsgFlags are for removing MMDVMHost messages from the serial data stream.
HostMsgFlags = (Hexadecimal Format, NO "0x", Present Setting 0037)
0000 0000 0000 0000
            21 8421
            || |||\- Bit to remove MMDVM dim (Brightness Settings)
            || ||\-- Bit to remove MMDVM.status.val=number
            || |\--- Bit to remove MMDVM click
            || \---- Bit to remove MMDVM page (Test Mode-Do Not Set)
            |\------ Bit to remove MMDVM t20 (Temperature)
            \------- Bit to remove MMDVM Page 0/MMDVM t3,t4,t5,t30,t31,t32
NextMsgFlags are for adding EDDC messages to the serial data stream.
NextMsgFlags = (Hexadecimal Format, NO "0x", Present Setting 0023)
0000 0000 0000 0000
            21 8421
            || |||\- Bit to Create dim (Brightness Settings)
            || ||\-- Bit to Create modes
            || |\--- Bit to Activate WaitForLan
            || \----
            \------- Bit to Create Formatted Parms

Explaining The EDDC Sent Messages

We have moved the list of messages that can be sent by the EDDC to it's own place for easy reference. This list may include updates to the EDDC not yet released.
t50-t59 - Presently defined Globally sent EDDC program messages.
MMDVM.t50.txt="Version" - 7 spaces <- Version
MMDVM.t51.txt="Status" - 11 spaces <- Status
t60-t79 - Presently defined Globally sent EDDC operational messages. Since these items don't change that often, they sent only once on each load/reload of page 0/MMDVM.
MMDVM.t60.txt="Owner Callsign" - 11 spaces <- Callsign
MMDVM.t61.txt="Owner DMR ID" - 11 spaces <- DMR ID
MMDVM.t62.txt="Owner Location" - 31 spaces <- Location
MMDVM.t63.txt="IP Address" - 31 spaces <- IP Address
MMDVM.t64.txt="XXX.XXXXXX" - 11 spaces <- RX Frequency
MMDVM.t65.txt="XXX.XXXXXX" - 11 spaces <- TX Frequency
MMDVM.t66.txt=" XX" - 3 spaces <- Disk Free Percentage
MMDVM.n67.val=number <- Display Sleep Timer Value
MMDVM.n68.val=number <- Modes Flags - Bitwise Activations
MMDVM.n69.val=number <- Modes Flags - Bitwise Activations
t80-t99 - Presently defined Globally sent EDDC regularly changing message values. What is special about these is that they are sent every ~10 seconds as set by the GenerateCPU on the MMDVMHost setting page. They sent on all pages at the proper interval.
MMDVM.t80.txt="XXX.XXºC" - 8 spaces - Temperature Centigrade w/hundreds
MMDVM.t81.txt="XXX.XXºF" - 8 spaces - Temperature Fahrenheit w/hundreds
MMDVM.t82.txt="XXXX" - 4 spaces - CPU Frequency in MHz
MMDVM.t83.txt="XXX.XX" - 6 spaces - CPU Load in Percentage w/hundreds
MMDVM.n84.val=number - CPU Load in hundreds of a Percent

The EDDC Release Notes

April 14th, 2021 Release Notes 210415

A. This EDDC Version is to be used with NDC Ver B 210313 or NEWER ONLY.
B. The "000-CodeNotes.txt" File is to help with the reading of the code.
1. CODE Changes: Some more work has been done on the "MODES" code. It now transmits two bitwise variables to handle all of the different MODE status that are possible. Their is a NextMsgFlags bit, 0002, that can turn sending these values OFF, so they are NOT SENT to the Display if a MODES screen is not created.
2. CODE Changes: basicFunctions.c -> "basicFunctions()" We moved the "if(strlen(TXbuffer) == 0) return;" further down, below the "GenerateCPU" code. This was done so when basicFunctions is called in the rotation, it will at least check if it is time to send the CPU Parms before testing to see if it was passed an empty TXbuffer.
This was done so that while the Display Driver is in rotation, checking what to do next, it gets a chance to update the CPU Parms during that rotation. This means as We work on this, that the CPU Parms can be send to a "MODE" screen at the same rate as it is on the "IDLE" screen.
3. CODE Changes: NextionDriver.c -> "initNextion(int)" It now requires to be passed an integer value. This is so this function can be told what value to pass to the "ussp" Nextion Display command. This was done so when the Nextion Display is remoted, via wires or RF, it can be given a shorter time to make the display sleep.
A remoted Nextion Display usually has a separate power source, different from the SBC. This is also true for the bigger displays that draw too much current to be attached directly to the SBC power. These changes make the remoted display go into "Screen Saver" or "Sleep mode" 15 seconds after the SBC stops sending data over the USB to TTL serial port.
This 15 seconds setting is hard coded at this time. It's set to this value when shutting down or rebooting. We understand, We are spending a lot of time on making these displays sleep. Since the cost of these displays are getting to the point of almost doubling in price, anything that can be done to extend the life of the display becomes a paramount objective.
Within the "initNextion(int)" function the coding was re-ordered. The Nextion Display command "sleep" had to be moved to the front of the line so the Nextion Display would proceed properly.
4. CODE Changes: "SleepWhenInactive" mmdvmhost settings NextionDriver setting is no longer used by the EDDC. This variable name has been changed to "ScreenSaver". Leaving the NDDC variables in the mmdvmhost settings file will not cause any problems to the operation of the EDDC.
5. CODE Changes: Fixed format lengths of "GenerateCPU" variables. This was done to make the variables have a certain known length when sent. This is so those who use the EDDC for their OWN Nextion Display HMI code, they know what to expect in each message and how to format it on their displays.
MMDVM.t80.txt="XXX.XXºC" - 8 spaces - Temperature Centigrade w/hundreds
MMDVM.t81.txt="XXX.XXºF" - 8 spaces - Temperature Fahrenheit w/hundreds
MMDVM.t82.txt="XXXX" - 4 spaces - CPU Frequency in MHz
MMDVM.t83.txt="XXX.XX" - 6 spaces - CPU Load in Percentage w/hundreds

March 17th, 2021 Release Notes 210317

A. This EDDC Version is to be used with NDC Ver B 210313 or NEWER ONLY.
B. The "000-CodeNotes.txt" File is to help with the reading of the code.
1. Corrected CODE: The Screen Saver, WOW! This one has been a real topic. OK, after watching many processes, timings, and the all important what happens when the Raspberry Pi OS hasn't run in 24 hours. Many variables were watched and the final decision was made.
The start of the FIRST screen saver timer value will wait until after the first handful of the MMDVMHost t2 TIME commands are sent. This maybe noticeable on the first power on MMDVM screen, the Dsply value will equal "000" briefly. This gives a chance for everything to settle into what could be taken as normal running.
Very extreme things can still happen after this first handful of time messages being sent, yet, those things shouldn't ever interfere with the time on a large scale time jump. By this moment the time being sent should be established. And, in so saying, We no longer see the display falling asleep before it should anymore.
We have a 20 second screen saver working perfectly, FINALLY!

March 13th, 2021 Release Notes 210313

1. Corrected CODE: The Screen Saver is the best We can get it for now. We are still seeing a "Time Shifts" that can happen which will make the display go to sleep more quickly then it should on boot-up/reboot cycle. When low level calls in Raspberry Pi OS and/or Other running program(s) cause a shift in time, usually forward in time update, the screen will sleep sooner after boot-up then it coded for. This also has to do with the EDDC's early start in the scheme of things, order in which programs are told to start running. We are still working on fixng this.
2. Corrected NOTES: I'm reminding those who are using the EDDC that it is still BETA CODE. We try our best to release a proper candidate NDC VerB to work with the changes in the BETA EDDC Release. This means that the NDC VerB Release "KNOWS" about all the changes We have made in the current BETA EDDC Release. This takes a lot of work, thank you for understanding and your patience.
3. Corrected CODE: There was a double switch of sorts controlling CPU PARMS. There was a bit switch and a ZERO variable switch. IF generateCPU is ZERO, it still switches those messages to not being sent. The Bit switch, 0010, the code controlling the CPU PARMS with the NextMsgFlags 0010 has been removed.
4. Corrected CODE: Some of the variable names have been moved into the proper naming scheme. Like, cpuload variable in the NDC code is now n84. modes variable in the NDC is now n68. It has been told to Us that the naming conventions used as examples on the Nextion Instructions Set Webpage examples are semi-important to smooth command interpretation within the simplistic nature of the internal Nextion Command OS interpreter. SO, with that, this should be the last time We change the names of sent command variables already defined.
5. Corrected Script: The "databases.sh" script has been corrected NOT to pull a current "groups.txt" from the Brandmeister Network servers. To have Proper Internet Etiquette (Netiquette), since this project comes from this Website and GitHub, the "groups.txt" NOW comes from this server. It is regularly updated and is current.
If you just have to have the bleeding edge list from the Brandmeister Network, look into the "databases.sh" and edit the download lines for the "groups.txt" appropriately. We were not told of any complaints from the Brandmeister Network, this is to prevent any harassments to them from this project.

March 3rd, 2021 Release Notes 210303

1. EXPANDED CODE: Not only can you erase the "dim" command coming from the MMDVMHost after the page command, It can now be added back in just before the "page" command. OK, I get it, this sounds a little stupid, let's explain the reason for this.
The MMDVMHost presently sends the "dim" command some amount of time AFTER the "page" command. This causes a Brighten-Up look of the switched to mode screen. It can get quite noticeable at times depending of the timing of the dim command coming out of the MMDVMHost.
SO, here's where We help out the MMDVMHost some more. We have a Flag that can be set to remove it's late sent "dim" command, after the "page" change command, and the EDDC has a Flag that can be set so it sends it just before the "page" command is sent. The overall effect of this is a bright mode display from the instant it is loaded. And likewise, the transition to the MMDVM Idle screen gets an idle dim value just before it is loaded.
Sounds a little over kill, We know. Yet your eyes notice the little things and you know something is wrong with the display, it's just trying to figure out what it is. This is the difference between something looking professional and something else looking mediocre. We are trying to bring a polished look to Your Nextion Display coded screens just like the example/full featured HMIs We provide here.
2. EXPANDED CODE: Just like the EDDC System messages were removed from the t0, t1, and t2, being placed on t50 and t51, EDDC now produces it's own specially formatted Owner Callsign, Owner DMR ID, Owner Location, RX Frequency, TX Frequency, Disk Free %, and IP Address. (Called PARMS)
The ability to set a Flag to remove the default MMDVMHost (PARMS) messages from the serial stream is provided. Likewise, a bit setting is needed to activate these EDDC (PARMS) messages.
All EDDC sent commands to the Nextion Display are sent GLOBALLY. By making them GLOBAL variables on YOUR MMDVM/0 page, YOU will allow them to be updated from ANY page on YOUR Nextion Display code might presently be on when they are sent. This means that the display maybe on another page doing special things, yet, the Nextion Sent messages don't have to be stopped or become lost.
This also gives YOU the ability to access them from any page in your Nextion Display Code to make YOUR Nextion Display pages more dynamic, original, all your own look and feel. This EDDC isn't just about Our NDC files here.
3. EXPANDED CODE: The NextionDriver settings on the MMDVMhost settings page have to be editted. All kinds of ON/OFF settings have been turned into Flags so We don't "PROMOTE LITTERING" the MMDVMHost settings file with all kinds of variables. This does complicate the ability to understand how to make something work or make it NOT work.
4. EXPANDED CODE: More "return;" structuring statements have been added to the "basicFunctions()" page areas to improve code speed. More, the rest of duplicate sent messages have been eliminated in this release.
5. REMOVED CODE: The #DMRidDelimiter, #DMRidId, #DMRIdCall, #DMRidName, #DMRidX1, #DMRidX2, and #DMRidX3 are removed from the MMDVMHost setup file, please stop the file "LITTERING!" HA! The fact that it has a # in front of it means that it's not read by the NDDC, and the EDDC code. The reading part of these variables in the "int readConfig(void)" code in the helpers.c file have been commented out in the EDDC.
These DMRidDelimiter, DMRidId, DMRIdCall, DMRidName, DMRidX1, DMRidX2, and DMRidX3 are already set to defaults in the beginning of the "int main(int argc, char *argv[])" in the NextionDriver.c file. There's no reason at this time for these values to be changed anytime soon.
The database functions within the EDDC are already being reevaluated for recoding and more efficient USER lookup options for ALL MODES. YES, We have looked at EA5KL's code, EA5KL just morphed the code from the DMR lookups to the other modes. HUMMMmmmm, NOPE, NO, NOT being done that way here. There are better ways to attack this code.
6. Expanded CODE (On The Display): The "cpuload" value now has a place on the Nextion Display Code screen, page 0/MMDVM. It will show the CPU Load in 4 stages. Light Green, .005% to .10%. Green, .10% to 1.00%. Yellow, 1.00% to 10.00%. Red, 10.00% to 100.00%. As it moves through each stage, the colors will change and the bar graph will adjust to the proper value in that range. This bar graph is placed inbetween the Callsign / Status Messages and the Date and Time.
The RX: and TX: line now flips back and forth between them on the same line allowing for more space to read them. Below that and to the left, both temperatures of the CPU, °C/°F. The center box flips between the CPU Frequency and the CPU Load in number percentage. To the right, that box flips between Disk Free % and a Display countdown timer to the screen saver activation.
ONLY the MMDVMHost sent Callsign and Date/Time are used on the display MMDVM/0 page without the EDDC at this time. This is to show that the Nextion Display is working properly without the EDDC. SO, until this EDDC is properly / completely installed, those other areas will not be completely filled, or may look broken.

February 19th, 2021 Release Notes 210219

1. EXPANDED CODE: With the fixing of the startup code to initialize the display properly before it sleeps, 120 seconds, there became a quick sleep problem with quick returns to the MMDVM IDLE screen from a mode screen. When the page command changes to a mode screen, there is now code to Reset sleepTimeOut to zero. This allows for a full time to sleep setting every time it comes back to the MMDVM IDLE screen, page 0.
Global Page Switcher Code: This should complete the page switching code for now. It includes the fixing of the code so the display will sleep, like a display screen saver. It also includes proper coding of the "ussp" for remote Nextion Displays. Don't forget, touching the display will wake it up for the remaining duration of timer, meaning, touching the display doesn't reset the timer, it just wakes up the display.
 IF the Nextion Display is powered differently, serially remoted with a separate power supply, then the "ussp" will take over on HotSpot / Repeater power-down. When the "SleepWhenInactive" is set, "ussp" is defaulted to at least 3 minutes. This gives that remoted Nextion Display the ability to sleep when the serial data stops after a minimum of 3 minutes.
This was tackled first to extend the life of the Nextion Display Backlight as much as possible. Those of us in the industrial field of programming HMI's knows that the display, the "I"nterface part of the HMI, is usually always the weakest link. The display usually dies from backlight failure first, Human abuse of the touch membrane second, and then overall life expectancy of the device third.
Future Coding, What's Coming Next: We are still dealing with globally sent Nextion Display commands from the MMDVMHost first. This means commands sent to the Nextion Display that are applied to all pages equally, including the underlying Nextion Display control system commands.

February 18th, 2021 Release Notes 210218

1. EXPANDED CODE: The Original ON7LDS NDDC sent initialization messages on t0, t1, and t2. These messages would be "NextionDriver", "1.XX", and "STOPPED"/"STARTED" respectively. We have stopped this practice in this release of the EDDC. It will be sending "1.XX" version on "MMDVM.t50.txt=" and "STOPPED"/"STARTED" on "MMDVM.t51.txt=" as global variables to the Nextion Display.
Sent Command: MMDVM.t50.txt="Text EDDC Version Number"
Sent Command: MMDVM.t51.txt="Text EDDC Status"
2. EXPANDED CODE: With this release the "msg" return command message becomes a global variable, "MMDVM.msg.txt=", sent to the MMDVM page of the Nextion Display as a global variable.
Sent Command: MMDVM.msg.txt="Return Command Text"
3. EXPANDED CODE: If the screen is set to sleep, there is an initial forced 120 seconds to make sure the first screen full is populated. This isn't a real biggie, it's just giving time so the display gets all of the first sent messages populated. This usually happens when the screen sleep is set to something less than ~60 seconds.

February 11th, 2021 Release Notes 210211

1. EXPANDED CODE: NextionDriver.c: static void initNextion() - The Nextion Driver initialization commands have been added to in the following ways;
  A. "ussp" sleep control setting was expanded due to the fact that "SleepWhenInactive" can be set very low, so the display sleeps after a few seconds. WELL, if "ussp" gets set to the same, the display could of went to sleep during a long winded talker. NOT GOOD, SO, IF "SleepWhenInactive" is not ZERO seconds and less than 180 seconds, "ussp" is defaulted to 180 seconds, or 3 minutes from now on. IF "SleepWhenInactive" is set to 180 seconds of more, "ussp" is equally set to the same value.
  .B. We have now begun to access the MMDVMHost's Nextion DIM settings for Brightness and IdleBrightness. It is no longer HARD CODED in the EDDC sources. This allows for further USER control of the screen brightness settings: Configure -> Expert -> MMDVMHost -> Nextion Section -> Brightness and IdleBrightness. Brightness is set for ALL of the mode screens, the IdleBrightness is set for only the MMDVM "IDLE" screen. The setting for these two items is between 10 and 100.
2. EXPANDED CODE: basicFunctions.c: Page Control Code (starting around line 46);
  A. An undecodable page change command sent by the MMDVMHost now defaults to page 0.
  B. A page change command is sent only once to the Nextion Display, even if multiple of the same page commands are sent.
  C. The startup code now ignores page 0 commands until the first alternate page command is sent. This stops the continuous page 0 reload request flickering of the Nextion Display on startups. The Nextion Display always boots itself into page 0, that is, unless it is coded to behave differently by the Nextion Display code, the code writer.
  D. IF there is a page update detected, there is now code to update it for the EDDC first. It then tests to see if "changepages" is set to INHIBIT from sending the page command to the Nextion Display. IF INHIBIT is not set, it then passed the page command to the Nextion Display, ONLY one time.
3. Overall Code Direction: This is the beginning of the recoding that stops unnecessary serial commands going to the Nextion Display for no reason, that they are usually duplicate commands in some way. This means the stopping of the Nextion Display having to deal with doing the same commands over and over again with the same results.
Is This Nextion Insanity and/or Madness?
  These are usually duplicate commands that come from the MMDVMHost because of how it does it's internal logic, and, they don't need to be added to by the EDDC. Matter of fact, the EDDC should TRAP these extra commands, helping the MMDVMHost out, and seamlessly make the duplicate commands disappear. This reduction of known duplicate serial commands has begun.
The Nextion Display after reading this takes a bow, and says, "THANK YOU! Some one finally gets it!"

February 9th, 2021 Release Notes 210209

1. ADDED CODE: initNextion() - This simplifies the initialization commands sent to the Nextion Display. It incorporates a second use of the "SleepWhenInactive" value by adding it to the "ussp" command. This helps in those situations where the Nextion Display is powered by a different power supply.
SO, when the serial data stops coming to the Nextion Display because the Raspberry Pi / Pi-Star has powered down, in "ussp" seconds, or as in "SleepWhenInactive" seconds setting, the display will now go to sleep.
2. When shutting down Pi-Star from the Display, there has always been a "GOODBYE" message set by the Nextion Display Driver Code. This could be seend by those who had the Nextion Display powered by a different power supply. We have begun to allow the Nextion Display Driver Code to hang around long enough so it can now bee seen on Our Nextion Display Code.
This is now seen when a "poweroff" or "reboot" command is sent by the Display Buttons. A Raspberry Pi called shutdown or reboot will not show this message. At this time it is set to 1 second, so this happens quickly.

February 5rd, 2021 Release Notes 210205

1. Cleaned up code for "RemoveDim". Setting this to 1 will have the EDDC remove the dim=n from the serial stream. This dim value message is sent by the MMDVMHost to the Nextion Display through the Nextion Display Driver if installed.
Goto Configure -> Expert -> MMDVMHost -> NextionDriver Section -> Set "RemoveDim" to 1 to stop the MMDVMHost from changing the display's brightness. Zero disables this feature, or allows the MMDVMHost to change the display brightness.
2. Fixed code for "SleepWhenInactive". We can't use "ussp" to make the Nextion Display sleep when the serial port stays very active on page 0/MMDVM. That is without sending a command to stop sending the data, an alternate way of stopping the serial data, not a screen saver command. ANYHOW, We have adjusted this part of the code so that when "SleepWhenInactive" is anything but 0, the display now goes to sleep for a "SleepWhenInactive" setting number of seconds.
ALSO, Remember here, when the Nextion Display is told to sleep this way, all sent commands after that are ignored until it is told to wake up again. This means no display updates will happen in the background while it is asleep. If you set the thup=1 in your Nextion Display Code, a touch of the display screen will wake it up from this sleep!
Goto Configure -> Expert -> MMDVMHost -> NextionDriver Section -> Set "SleepWhenInactive" to a number of seconds you want the screen to fall asleep while it is "IDLING" on page 0/MMDVM. No other active pages will be told to sleep. Zero disables this feature.
3. Fixed code for "ChangePages". (Not ChangePagesModes as it used to be called, We changed the name of it in the code) When it is set to a 1, this inhibits the pass-through sending of the page command to the Nextion Display. This works just like the "RemoveDim" defined above. I'm not a fan of this, yet, We saw the code in there for this and We just fixed it so it would work. I have saw others in the past ask in different forums for this ability, well, there you go, fixed.
"ChangePages" needs to be added to the MMDVMHost "/etc/mmdvmhost" parameters file under the NextionDriver section list of parameters, by adding "ChangePages=1". Once it is added, it can be edited by going to Configure -> Expert -> MMDVMHost -> NextionDriver Section -> Set ChangePages to 1 to inhibit the MMDVMHost from changing the page when a mode change has occurred. A Zero disables this feature.
4. We have started adding code to speed things up in certain places. This will be a long drawn out battle for a while, speed is important to this code, YET, We don't want to cause any problems doing it.

February 3rd, 2021 Release Notes 210203

1. The Nextion Display Driver Code was copied from ON7LDS GitHub account, version 210122 v1.19 was pulled. A compile of the code was done to ensure no errors were introduced. Then the code in the files were re-formatted so it could be easily read. Another compile happened, confirming no mistakes added to the code.
2. The "ShowModesStatus" handler was replaced by a request from those on the TEAM here that use it. this is still under development, minor changes will happen to it.
3. Other sent codes within the Nextion Display Driver Code that sent different things to the Nextion Display during startup and shutdown have been commented out. They are not needed and are only annoying.

New ShowModesStatus Documentation (BETA)

ATTENTION: IF your Nextion Display Code is presently using the "ShowModesStatus" of the ON7LDS OR EA5KL Nextion Driver, this functionality has been changed in this Enhanced Nextion Driver Code provided here. Instead of sending all those FIXED color code mode changes, this code sends one variable, MMDVM.n68.val=Number.
YOU get to code it for your Nextion Display Code as YOU see fit. This number is a "Bitwise" representation of the active modes. See the code in the "basicFunctions.c" beginning at around line number ~161 for which bit of the MMDVM.n68.val=Number is for which active mode.
Any high bit within the MMDVM.n68.val means an active mode. It is sent in a "GLOBAL" variable format so it can be GLOBALLY used on any PAGE within your Nextion Display Code in the near future. Make this, MMDVM.n68.val number, a GLOBAL number variable in your Nextion Display Code on the "IDLE", page 0/MMDVM for all future development.
Sent Command: MMDVM.n68.val=number
In Your Nextion Display Code while being edited in the Nextion Editor, "if(MMDVM.n68.val&0x00000001)", will test for the first bit of this GLOBAL 4 byte number. If it is high, the code within the brackets after this if statement will be executed. YOU choose what Your Nextion Display Code does next each of the detected active modes. Make your modes do whatever, change text colors, image colors, etc.
When We finalize a final version of this part of the code, We will let you know.