fork of reebn's uBitx v6 firmware
Go to file
Michael Clemens 6dceffd993 reactivated 80m, changed to color scheme to green on black 2021-05-17 17:29:57 +02:00
PDQ_MinLib Add icons for numpad and star 2020-04-26 15:03:18 -07:00
toneAC2 Remove secondary pin from library 2020-04-25 22:36:17 -07:00
README.md Add user manual link to readme 2021-04-11 18:19:42 -07:00
bands.cpp reactivated 80m, changed to color scheme to green on black 2021-05-17 17:29:57 +02:00
bands.h Add some band utility functions for later use 2020-02-09 23:35:33 -08:00
button.cpp Save ~100 bytes by combining these two functions 2020-04-26 23:36:16 -07:00
button.h Save ~100 bytes by combining these two functions 2020-04-26 23:36:16 -07:00
button_press_e.h Move button pressing logic to it's own file 2020-04-25 12:00:19 -07:00
button_timing.h Add classes for button timing variables and point 2020-02-09 18:40:42 -08:00
callsign.cpp Update callsign.cpp 2021-05-13 15:15:19 +02:00
callsign.h Re-add version to main display, add callsign display, and re-enable TX indicator 2020-04-25 20:31:10 -07:00
color_theme.h reactivated 80m, changed to color scheme to green on black 2021-05-17 17:29:57 +02:00
colors.h Switch colors from defines to consts 2020-05-04 22:53:41 -07:00
encoder.cpp Save 12 bytes by adjusting math, inspried by Jack Purdum 2020-12-13 21:51:46 -08:00
encoder.h First pass at a momentum function 2020-01-21 01:13:36 -08:00
glcdfont.c PDQ driver is working, but renders a little funny 2019-12-31 17:31:05 -08:00
keyer.cpp Adjust keyer behavior to always run PTT button as if in KEYER_STRAIGHT mode 2020-12-13 18:19:13 -08:00
menu.cpp Add an enterSubmenu routine to centralize that behavior 2020-02-15 15:27:48 -08:00
menu.h Move button pressing logic to it's own file 2020-04-25 12:00:19 -07:00
menu_main.cpp Slight tweak to how frequencies are changed so that quicklist changes will update the actual oscillators 2020-05-04 22:27:37 -07:00
menu_main.h Make function inputs const, and fix some compiler errors 2020-02-09 15:30:37 -08:00
menu_main_buttons.cpp Re-enable numpad, now that we have some more space 2020-05-03 23:56:08 -07:00
menu_main_buttons.h Change decision making in main menu loop to ensure display consistency when CAT changes 2020-05-04 21:57:24 -07:00
menu_np_ql_shared.cpp Reuse menu running code between quicklist and numpad 2020-04-26 23:36:16 -07:00
menu_np_ql_shared.h Reuse menu running code between quicklist and numpad 2020-04-26 23:36:16 -07:00
menu_numpad.cpp Reuse menu running code between quicklist and numpad 2020-04-26 23:36:16 -07:00
menu_numpad.h Start building out numpad menu 2020-02-14 18:50:57 -08:00
menu_numpad_buttons.cpp Reuse menu running code between quicklist and numpad 2020-04-26 23:36:16 -07:00
menu_numpad_buttons.h Reuse menu running code between quicklist and numpad 2020-04-26 23:36:16 -07:00
menu_quicklist.cpp Reuse menu running code between quicklist and numpad 2020-04-26 23:36:16 -07:00
menu_quicklist.h Create quicklist menu 2020-04-26 23:36:16 -07:00
menu_quicklist_buttons.cpp Revert the previous commit 2020-05-04 22:26:09 -07:00
menu_quicklist_buttons.h Create quicklist menu 2020-04-26 23:36:16 -07:00
menu_utils.cpp Revert "Rough pass at button grids" 2020-04-25 19:47:02 -07:00
menu_utils.h Revert "Rough pass at button grids" 2020-04-25 19:47:02 -07:00
morse.cpp Replace calls to the default Arduino Tone library to toneAC2, saving over 1024 bytes 2020-04-25 22:44:26 -07:00
morse.h morseText should take a const char* 2020-02-09 17:04:00 -08:00
nano_font.cpp Switch back to nicer font 2020-04-25 22:52:39 -07:00
nano_font.h Save ~4% progmem by using a slightly smaller font 2020-01-01 20:49:35 -08:00
nano_gui.cpp Add touch cancellation option 2020-05-05 21:32:30 -07:00
nano_gui.h Get rid of do-nothing functions 2020-05-04 23:00:31 -07:00
pin_definitions.h Remove function declarations from pin definition file 2020-04-25 11:47:11 -07:00
point.h Add classes for button timing variables and point 2020-02-09 18:40:42 -08:00
push_button.cpp Move button pressing logic to it's own file 2020-04-25 12:00:19 -07:00
push_button.h Move button pressing logic to it's own file 2020-04-25 12:00:19 -07:00
scratch_space.h Add dedicated scratch-space header so that we can track where these are still used 2020-04-21 21:08:51 -07:00
settings.cpp Add size to comment 2020-12-13 21:34:55 -08:00
settings.h Add quick list to EEPROM settings 2020-04-26 23:36:16 -07:00
setup.cpp Force redraw after setupTouch is called so that menu is on screen 2020-05-05 20:35:17 -07:00
setup.h Create a root menu for setup 2020-02-15 13:49:30 -08:00
si5351.cpp Give min/max frequency variable names 2020-04-26 23:46:32 -07:00
si5351.h Give min/max frequency variable names 2020-04-26 23:46:32 -07:00
toneAC2Proxy.cpp Proxy the tone library so that it builds 2020-04-25 22:36:40 -07:00
touch.cpp Fix zraw assignment issue that was preventing touch press-and-hold from working 2020-05-05 21:25:52 -07:00
touch.h Move touch functions to their own files 2020-02-09 18:41:13 -08:00
tuner.cpp Get rid of do-nothing functions 2020-05-04 23:00:31 -07:00
tuner.h Move SI5351 driver stuff into it's own header 2020-04-25 14:31:59 -07:00
ubitx_cat.cpp Get rid of do-nothing functions 2020-05-04 23:00:31 -07:00
ubitxv6.ino Move SI5351 driver stuff into it's own header 2020-04-25 14:31:59 -07:00
ui_touch.cpp Move touch functions to their own files 2020-02-09 18:41:13 -08:00
ui_touch.h Move touch functions to their own files 2020-02-09 18:41:13 -08:00
utils.cpp Fix compile errors 2020-02-10 00:51:23 -08:00
utils.h Define types for formatFreq 2020-02-10 00:35:32 -08:00
version.cpp Update displayed version 2020-07-18 20:43:36 -07:00
version.h Forgot to add version files to the project. Silly me. 2020-01-27 23:11:32 -08:00

README.md

uBiTXv6

This project is found at https://github.com/reedbn/ubitxv6/

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
  • Cancel touch recalibration

User Manual: https://docs.google.com/document/d/1jlllZbvFMCzO1MJLzlJDGb10HXSehlFNMDPsxGJZtvY/edit?usp=drivesdk

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 uBiTX v6: 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. Arduino IDE 1.8.13 was reported to compile too big (see https://groups.io/g/BITX20/topic/75008576), but this should be resolved in this project's tag R1.5.1.

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

While the current code (as of 2020-05-05) is ~100 bytes shy of the full 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.

The files in the PDQ_MinLib subdirectory were copied from https://github.com/XarkLabs/PDQ_GFX_Libs, and have Adafruit's BSD License.

The files in the toneAC2 were copied from https://bitbucket.org/teckel12/arduino-toneac2/wiki/Home, and are GPL v3 licensed.