EDDC-IDLE Release Notes

EDDC-IDLE Release Notes

 
By Using This Website, You Agree To This 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.
 

EDDC Release Notes

 The EDDC Release Notes
 The EDDC Release Notes Link. These Release Notes are for those who are writing their own Nextion Display Code and are looking to use the extra functionality of this EDDC. This version supplied here will compile and has been tested to work as documented within these Release Notes. ENJOY!
 

Explaining The EDDC-IDLE Sent Messages

 
We have moved the list of messages that used to be sent by the orignal NDDC away from the MMDVMHost messages. This is the IDLE screen and Nextion Display GOLBAL messages.
 

The EDDC-IDLE / Global Messages

 
t50-t59 - Presently defined Globally sent EDDC program messages.
 
MMDVM.t50.txt="Version" - 11 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 - Active Modes
 
MMDVM.n69.val=number <- Modes Flags - Active Networks
 
MMDVM.n70.val=number <- Modes Flags - Active Processes
 
t80-t89 - 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 Includes hundreds of a Percent
 
The CPU load bar on the NDCVerB is all-in-one bar. The bottom 1/4 is Light Green for 1% to 25% CPU Load. The next part up is Green for 25% to 50% CPU Load. The next part up is Yellow for 50% to 75% CPU Load. The top 1/4 part is Red for 75% to 100% CPU Load. This is displayed on all pages/screens.
 
MMDVM.n85.val=number - CPU Temperature in Fahrenheit, Includes Hundreds of a Percent
 
The CPU Temp bar on the NDCVerB is all-in-one bar. The bottom 1/4 is Light Green for ZERO to 100 Degrees Fahrenheit. The next part up is Green for 100 to 120 Degrees Fahrenheit. The next part up is Yellow for 120 to 160 Degrees Fahrenheit. The top 1/4 part is Red for 160 to 200+ Degrees Fahrenheit. This is displayed on all pages/screens.
 
t90-t99 - Presently defined Globally sent EDDC regularly changing message values. What is special about these is that they are sent everytime a user is decoded for a last heard screen. This is presently being worked on.
 
MMDVM.t90.txt="DATE" - Coming Later
 
MMDVM.t91.txt="TIME" - Coming Later
 
MMDVM.t92.txt="MODE" - Coming Later
 
MMDVM.t93.txt="CALLSIGN" - Coming Later
 
MMDVM.t94.txt="FName" - Coming Later
 
MMDVM.t95.txt="LName" - Coming Later
 
MMDVM.t96.txt="CITY" - Coming Later
 
MMDVM.t97.txt="STATE" - Coming Later
 
MMDVM.t98.txt="COUNTRY" - Coming Later
 
MMDVM.t99.txt="REFLECTOR, TALK GROUP, ETC." - Coming Later
 

Bitwise Messages For Nextion Status / MODES Display

 
MMDVM.n68.val, MMDVM.n69.val, and MMDVM.n70.val takes the place of the multiple hoards of controlled messages that was done by others. This crams all those messages into bitwise messages, or, 96 possible bit messages in three sent integers (OR 12 Bytes internally to the Nextion).
 
These messages are sent in a text format to the Nextion, as a big number, even though it's still a lot less overhead that the Nextion will have to process. BITWISE addition and testing for a true will give each message individually. ALSO, this way YOU get to program the code how each item looks and works on your Nextion Screen Code.
 
REMEMBER, MMDVM.n68.val, MMDVM.n69.val, and MMDVM.n70.val are sent as Gobally setup variables. They can be accessed from any page IF your make them Gobal on the MMDVM Nextion Page. They are updated when ever the HotSpot/Repeater is first started, when returning to the IDLE screen from another MODE screen, and anytime the MMDVMHost is STOPPED and RE-STARTED (Back to saying "IDLE").
 
MMDVM.n68.val= 0000 0000 0000 0000 0000 0000 0000 0000 (4 Bytes - 32 BIT MESSAGES)
               3332 2222 2222 2111 1111 1110 0000 0000 - Enabled Modes
               2109 8765 4321 0987 6543 2109 8765 4321 - Enabled Modes
               8421 8421 8421 8421 8421 8421 8421 842\- modeIsEnabled[C_DSTAR]
               8421 8421 8421 8421 8421 8421 8421 84\-- modeIsEnabled[C_DMR]
               8421 8421 8421 8421 8421 8421 8421 8\--- modeIsEnabled[C_YSF]
               8421 8421 8421 8421 8421 8421 8421 \---- modeIsEnabled[C_P25]
               8421 8421 8421 8421 8421 8421 842\------ modeIsEnabled[C_NXDN]
               8421 8421 8421 8421 8421 8421 84\------- modeIsEnabled[C_POCSAG]
               8421 8421 8421 8421 8421 8421 8\-------- modeIsEnabled[C_M17]
               8421 8421 8421 8421 8421 8421 \--------- modeIsEnabled[C_AX25]
               8421 8421 8421 8421 8421 842\----------- modeIsEnabled[C_FM]
               8421 8421 8421 842\--------------------- modeIsEnabled[C_CWID]
               8421 8421 8421 84\---------------------- modeIsEnabled[C_TRANSPARENT]
               8421 8421 8421 8\----------------------- modeIsEnabled[C_UMP]
               8421 8421 8421 \------------------------ modeIsEnabled[C_LOCKFILE]
               8421 8421 842\-------------------------- modeIsEnabled[C_MOBILEGPS]
               8421 8421 84\--------------------------- modeIsEnabled[C_REMOTECRTL]
 
MMDVM.n69.val= 0000 0000 0000 0000 0000 0000 0000 0000 (4 Bytes - 32 BIT MESSAGES)
               3332 2222 2222 2111 1111 1110 0000 0000 - Enabled Networks
               2109 8765 4321 0987 6543 2109 8765 4321 - Enabled Networks
               8421 8421 8421 8421 8421 8421 8421 842\- modeIsEnabled[C_DSTARNET]
               8421 8421 8421 8421 8421 8421 8421 84\-- modeIsEnabled[C_DMRNET]
               8421 8421 8421 8421 8421 8421 8421 8\--- modeIsEnabled[C_YSFNET]
               8421 8421 8421 8421 8421 8421 8421 \---- modeIsEnabled[C_P25NET]
               8421 8421 8421 8421 8421 8421 842\------ modeIsEnabled[C_NXDNNET]
               8421 8421 8421 8421 8421 8421 84\------- modeIsEnabled[C_POCSAGNET]
               8421 8421 8421 8421 8421 8421 8\-------- modeIsEnabled[C_M17NET]
               8421 8421 8421 8421 8421 8421 \--------- modeIsEnabled[C_AX25NET]
 
MMDVM.n70.val= 0000 0000 0000 0000 0000 0000 0000 0000 (4 Bytes - 32 BIT MESSAGES)
               3332 2222 2222 2111 1111 1110 0000 0000 - Active Processes
               2109 8765 4321 0987 6543 2109 8765 4321 - Active Processes
               8421 8421 8421 8421 8421 8421 8421 842\- netIsActive[0] (Internet)
               8421 8421 8421 8421 8421 8421 8421 84\-- proc_find("MMDVMHost")
               8421 8421 8421 8421 8421 8421 8421 8\--- proc_find("ircddbgatewayd")
               8421 8421 8421 8421 8421 8421 8421 \---- proc_find("dstarrepeaterd")
               8421 8421 8421 8421 8421 8421 842\------ proc_find("DMRGateway")
               8421 8421 8421 8421 8421 8421 84\------- proc_find("YSFGateway")
               8421 8421 8421 8421 8421 8421 8\-------- proc_find("YSFParrot")
               8421 8421 8421 8421 8421 8421 \--------- proc_find("P25Gateway")
               8421 8421 8421 8421 8421 842\----------- proc_find("P25Parrot")
               8421 8421 8421 8421 8421 84\------------ proc_find("NXDNGateway")
               8421 8421 8421 8421 8421 8\------------- proc_find("NXDNParrot")
               8421 8421 8421 8421 8421 \-------------- proc_find("DAPNETGateway")
               8421 8421 8421 8421 842\---------------- proc_find("timeserverd")
               8421 8421 8421 8421 84\----------------- proc_find("pistar-watchdog")
               8421 8421 8421 8421 8\------------------ proc_find("pistar-remote")
               8421 8421 8421 8421 \------------------- proc_find("pistar-keeper")
 

MMDVMHost Messages Used On The EDDC-IDLE Screen

 
The MMDVMHost messages below are passed to the NDC VerB code. They are parsed and handled ONLY for their values. They are never displayed in their RAW form anywhere on the IDLE screen.
 
t0.txt="callsign/dmrid / LOCKOUT / MMDVM STOPPPED / FM" (NDC TRANSLATED)
 
t1.txt="MMDVM IDLE / ERROR / Sending CW Ident" (NDC TRANSLATED)
 
t2.txt="date/time" (NDC MODIFIED/REFORMATTED)
 
t3.txt="ipaddress" (EDDC SUPPRESSED - HostMsgFlags)
 
t4.txt="Owner Call" (EDDC SUPPRESSED - HostMsgFlags)
 
t5.txt="Owner ID" (EDDC SUPPRESSED - HostMsgFlags)
 
t20.txt="CPU Temperature" (EDDC SUPPRESSED - HostMsgFlags)
 
t30.txt="RX Frequency" (EDDC SUPPRESSED - HostMsgFlags)
 
t31.txt="Location" (MMDVMHost DEPRECATED - HostMsgFlags)
 
t32.txt="TX Frequency" (EDDC SUPPRESSED - HostMsgFlags)
 
MMDVM.status.val=number (Nextion Page ERROR CTRL)
 
The Reasoning behind the "MMDVM.status.val=number" is an elusive one, not documented anywhere, yet, it is sent by the MMDVMHost extensively, and used in places within the ON7LDS NDDC (Driver). Here's what I have found out. Over the past year I stopped these messages from coming through the AG4OJ EDDC (Driver). I deleted the "S0" touch references throughout my NDCVerB code.
 
What happened next was my NDCVerB code took errors when changing from the MMDVM IDLE screen to a mode screen. In other words, randomly, rarely, the NDCVerB code would not switch to the proper MODE screen, it would just stay stuck on the MMDVM IDLE screen. In doing a deep dive on this problem, and thanks to the individuals at iTead Nextion, I would be advise of the Nextion Page Switch Timings.
 
I would be told that this could take as much as 33ms at times depending on what the Nextion Buffer has waiting to be executed. The LOW LEVEL commands taking up the most time to execute. With the ongoing development of the Nextion Firmware, this is why I was given the 33ms value. With this in mind, and as rare, random this was happening, I set the wheels in motion to minimize this problem.
 
A "usleep()" value was placed after certain critical low level Nextion commands in the AG4OJ EDDC. This made this problem even more extremely rare to happening, this value was set to 20ms. NOW, this didn't fix ALL of these "HICCUPS", yet, it did catch most of them. YES, I know, there is still the 13ms short fall. It is now being made up by the reintroduced "MMDVM.status.val=number" back into the AG4OJ EDDC and NDCVerB.
 
SINCE I now know what the reason is for the "MMDVM.status.val=number", the "MMDVM.status.val=number" is limited pass-through to "Nextion Page Switching" and only the switch from the MMDVM IDLE screen to another MODE screen. The AG4OJ EDDC also interprets these "MMDVM.status.val=number" changes for it's own internal adjustments if necessary.
 
This way everything stays in alignment, from the MMDVMHost, to/through the AG4OJ EDDC (Driver), and finally to the NDCVerB (Nextion Display Code). AND we are NOT sending ALL of those other "MMDVM.status.val=number" and "click S0" messages to the Nextion Display unnecessarily. These excessive message overhead BURDENs should be removed from the MMDVMHost. ONLY the Page switching ones are really important.
 
The "S0" code burden should also be light. IF you need more help making sure that your "S0" code handler on each page is written properly, efficiently, please send me an EMAIL by using the EMAIL link below.