From c323cec0cb4ae6146681d6bc0bd5f8b6828a073d Mon Sep 17 00:00:00 2001 From: Reed Nightingale Date: Mon, 4 May 2020 23:17:05 -0700 Subject: [PATCH] Update readme with lots of information for other prospective developers --- README.md | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/README.md b/README.md index 23ca865..64d1a66 100644 --- a/README.md +++ b/README.md @@ -7,10 +7,59 @@ It was forked from https://github.com/afarhan/ubitxv6/ The purpose of this project is to clean up (modularize) the source code, and add features that were not present in Ashhar's original version of the project, without requiring any hardware modifications to a stock uBiTXv6. +New features include: + +* Much faster screen refresh (vs Ashhar's 6.3.1 aka 6.0 release) +* Morse code readback for sightless operation +* Save/recall your favorite frequencies +* When adjusting settings, the existing/current setting is shown as reference + +# Installing on Your Radio + +There are plenty of tutorials on how to upload sketches to Arduino Nanos. Just search for them. Addtionally, +Ashhar created a video explaining the process specifically for uBiTX6: https://www.youtube.com/watch?v=3n_V3prSJ_E + +I developed this code using the Arduino IDE 1.8.9 toolchain, with -Wall and -Wextra compiler options turned on, so +it should compile on newer or older versions, but may result in slightly different binary output sizes. + # Personalized Callsign To edit the callsign displayed, open the file `callsign.cpp` and change the string. Then re-compile and upload. +# Future Features/Modifications + +There are some features that would be good to add, but I just didn't get around to. + +* Setting to choose the tuning step size +* Setting to choose whether or not the knob tuning should accelerate (current behavior) or have a fixed interval +* Provide an option in each menu screen to load the default option for each setting +* Cancel out of the touch cal if the knob button is pressed + +While the current code (as of 2020-05-04) is 2 bytes shy of the 30720 available on the nano, there's still opportunity +to add new features by "creating" room. Below is a list of places you might create room: + +I added lots of bounds checking, especially on string writes, that, if removed, could free a good number of bytes. +While keeping them is best practice, for a non-IoT, non-critical piece of hardware, it shouldn't be a huge issue. + +I added the RACK to the CAT to better emulate the FT-817 (I hope, at least!). Removing the RACK's and just leaving +the default ACK's will also free up bytes. + +I added a bunch of strings to the menuing with the intention of helping people understand their functions, but +technically they're not necessary, and could all be removed. + +I switched to a smaller footprint font than Ashhar's original code, but there are MUCH smaller fonts out there. +Changing to a lower resolution, scaled up font can save hundreds or thousands of bytes, but won't look as pretty. +Also, the star, gear, and numpad icons will need to be either added to the new font, or replaced with characters. + +The first change I made to this fork was to replace Ashhar's original (incredibly slow) screen drawing routines +with PDQ. Since that change, Ashhar has updated his drawing routine to be MUCH faster than his original, but +still slightly slower than PDQ. It may be that Ashhar's new routines are smaller that PDQ, but I don't actually +know that for certain. + +There are a good number of instances of back-to-back calls of strncpy_P and displayText. Creating a single +function that performs these operations together, and then calling that new function instead of the +back-to-back calls everywhere may save space. + # License The majority of this code is released under GPL v3 license, per Ashhar's original code.