It is possible that I missed something, but I believe this complete list of changes.
Formatting changes in all three files. I'm using the Mu editor, https://codewith.mu/, that has Check and Tidy functions to help standardize formatting. The formatting changes are from using those functions in the Mu editor.
boot.py
Pull model information from config.py to obtain the model and keyboard setup information.
Used the adafruit_matrixkeypad to scan the keyboard.
Display prompts based on the Armachat model
Added a progress bar to show remaining time to make a selection for safe and write modes.
code.py
Added a function named screenSafeText, which removed characters from a string that is a non-printable character. There were some random errors due to received messages having non-printable characters. When the messages were displayed, there would be no font in the font file for them, which would cause the code to crash.
Added a 0.1 second delay when checking for a key press. I was experiencing skipping screens as the left or right button (bsp, ent) was read twice or more on one key press. This is not a perfect solution but the results in a better user experience.
Added try/catch blocks around attempts to read or write files. I would have rather used file exists for reads but it appears that CircuitPython's file library does not have an exists function. The use of try/catch blocks appears to be the preferred method to check for a file's existence.
Corrected the prompt for left and right buttons when shown on line 8. If this is different on the max version, then it is best to add an if else block around these prompts. On the Compact model, the enter key is right and the delete/backspace is the left.
In the function loraProfileSetup, modemPreset was assigned but was not referenced with the global keyword so it was treated as a local variable and would not impact the Armchat function. Added to the global keyword to fix the issue.
Created the function radioInit to allow changing of the LoRa radio on the fly.
It is possible that I missed something, but I believe this complete list of changes.
boot.py
Pull model information from config.py to obtain the model and keyboard setup information.
Used the adafruit_matrixkeypad to scan the keyboard.
Display prompts based on the Armachat model
Added a progress bar to show remaining time to make a selection for safe and write modes.
code.py
Added a function named screenSafeText, which removed characters from a string that is a non-printable character. There were some random errors due to received messages having non-printable characters. When the messages were displayed, there would be no font in the font file for them, which would cause the code to crash.
Added a 0.1 second delay when checking for a key press. I was experiencing skipping screens as the left or right button (bsp, ent) was read twice or more on one key press. This is not a perfect solution but the results in a better user experience.
Added try/catch blocks around attempts to read or write files. I would have rather used file exists for reads but it appears that CircuitPython's file library does not have an exists function. The use of try/catch blocks appears to be the preferred method to check for a file's existence.
Corrected the prompt for left and right buttons when shown on line 8. If this is different on the max version, then it is best to add an if else block around these prompts. On the Compact model, the enter key is right and the delete/backspace is the left.
In the function loraProfileSetup, modemPreset was assigned but was not referenced with the global keyword so it was treated as a local variable and would not impact the Armchat function. Added to the global keyword to fix the issue.
Created the function radioInit to allow changing of the LoRa radio on the fly.
Added the CPU Temperature from Kayto's code
Added the Ping function from Kayto's code
config.py