From 842a8c7d11c72065c8927d37cf94e511ba1aa4f7 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Wed, 18 Mar 2020 18:59:21 +0100 Subject: [PATCH 1/6] Update CREDITS.txt --- CREDITS.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CREDITS.txt b/CREDITS.txt index f4c1799f1..f8d4f14e6 100644 --- a/CREDITS.txt +++ b/CREDITS.txt @@ -1706,3 +1706,4 @@ Scott McCoy Fabrice Debonnet James Laver Kevin Bowens +David Frech From eb58e58f234364676503df0a95ae16aa9d49200a Mon Sep 17 00:00:00 2001 From: 3djc Date: Thu, 19 Mar 2020 09:58:08 +0100 Subject: [PATCH 2/6] Cosmetics --- companion/src/firmwares/opentx/opentxinterface.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/companion/src/firmwares/opentx/opentxinterface.cpp b/companion/src/firmwares/opentx/opentxinterface.cpp index d22964cb0..794ad63e2 100644 --- a/companion/src/firmwares/opentx/opentxinterface.cpp +++ b/companion/src/firmwares/opentx/opentxinterface.cpp @@ -1346,7 +1346,7 @@ void registerOpenTxFirmwares() addOpenTxRfOptions(firmware, FLEX); /* Radiomaster TX16S board */ - firmware = new OpenTxFirmware("opentx-tx16s", Firmware::tr("Radiomaster TX16S"), BOARD_RADIOMASTER_TX16S); + firmware = new OpenTxFirmware("opentx-tx16s", Firmware::tr("Radiomaster TX16s / TX16s Hall / TX16s Masterfire"), BOARD_RADIOMASTER_TX16S); addOpenTxFrskyOptions(firmware); firmware->addOption("bluetooth", Firmware::tr("Support for bluetooth module")); registerOpenTxFirmware(firmware); From ec1ebe4a0b0027fc7cf8bdb6bad8f173f37293b4 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Thu, 19 Mar 2020 10:45:03 +0100 Subject: [PATCH 3/6] Firmware compilation fixes --- radio/util/build-firmware.py | 33 ++++++++++++--------------------- 1 file changed, 12 insertions(+), 21 deletions(-) diff --git a/radio/util/build-firmware.py b/radio/util/build-firmware.py index 373e4a41d..e54b5058e 100755 --- a/radio/util/build-firmware.py +++ b/radio/util/build-firmware.py @@ -5,7 +5,6 @@ import os import sys import subprocess import shutil -import filelock from fwoptions import * @@ -56,7 +55,7 @@ def build_target(target, path, cmake_options): def main(): if len(sys.argv) != 3: - exit(INVALID_FIRMWARE) + return INVALID_FIRMWARE target = sys.argv[1] directory, filename = os.path.split(sys.argv[2]) @@ -64,7 +63,7 @@ def main(): options = root.split("-") if len(options) < 2 or options[0] != "opentx": - exit(INVALID_FIRMWARE) + return INVALID_FIRMWARE optcount = 1 cmake_options = {} @@ -155,7 +154,7 @@ def main(): firmware_options = options_jumper_t16 maxsize = 2 * 1024 * 1024 else: - exit(INVALID_BOARD) + return INVALID_BOARD if target == "firmware": binary = "firmware.bin" @@ -166,7 +165,7 @@ def main(): ext = ".so" filename = "libopentx" else: - exit(INVALID_BOARD) + return INVALID_BOARD filename += "-" + board_name optcount += 1 @@ -198,7 +197,7 @@ def main(): if key == options[-1]: language = key if not language: - exit(INVALID_LANGUAGE) + return INVALID_LANGUAGE cmake_options["TRANSLATIONS"] = language.upper() filename += "-" + language + ext @@ -207,24 +206,16 @@ def main(): if os.path.isfile(errpath): print(filename) - exit(COMPILATION_ERROR) + return COMPILATION_ERROR if os.path.isfile(path): print(filename) - exit(0) + return 0 - lockpath = path + ".lock" - lock = filelock.FileLock(lockpath) - try: - with lock.acquire(timeout=60 * 60): - if not os.path.isfile(path): - result = build_target(target, path, cmake_options) - if result != 0: - print(filename) - return result - except filelock.Timeout: + result = build_target(target, path, cmake_options) + if result != 0: print(filename) - exit(COMPILATION_ERROR) + return result if target == "firmware": # Check binary size @@ -236,8 +227,8 @@ def main(): shutil.move(binary, path) print(filename) - exit(0) + return 0 if __name__ == "__main__": - main() + exit(main()) From 47e70e62771d161615951a6f0a540ad015bec8d7 Mon Sep 17 00:00:00 2001 From: 3djc Date: Thu, 19 Mar 2020 11:40:34 +0100 Subject: [PATCH 4/6] Radiomaster production firmware build tool --- radio/src/CMakeLists.txt | 4 ++ radio/src/stamp.cpp | 2 + tools/build-radiomaster.py | 77 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 83 insertions(+) create mode 100755 tools/build-radiomaster.py diff --git a/radio/src/CMakeLists.txt b/radio/src/CMakeLists.txt index 8124cf651..20852450c 100644 --- a/radio/src/CMakeLists.txt +++ b/radio/src/CMakeLists.txt @@ -340,6 +340,10 @@ if(JUMPER_RELEASE) add_definitions(-DJUMPER_RELEASE) endif() +if(RADIOMASTER_RELEASE) + add_definitions(-DRADIOMASTER_RELEASE) +endif() + if(TBS_RELEASE) add_definitions(-DTBS_RELEASE) endif() diff --git a/radio/src/stamp.cpp b/radio/src/stamp.cpp index 2369955b3..f4f8b836a 100644 --- a/radio/src/stamp.cpp +++ b/radio/src/stamp.cpp @@ -36,6 +36,8 @@ #define DISPLAY_VERSION "FrSky" #elif defined(JUMPER_RELEASE) #define DISPLAY_VERSION "JumperRC" +#elif defined(RADIOMASTER_RELEASE) +#define DISPLAY_VERSION "Radiomaster" #elif defined(TBS_RELEASE) #define DISPLAY_VERSION "TBS" #else diff --git a/tools/build-radiomaster.py b/tools/build-radiomaster.py new file mode 100755 index 000000000..83faa31bb --- /dev/null +++ b/tools/build-radiomaster.py @@ -0,0 +1,77 @@ +#!/usr/bin/python3 + +import argparse +import datetime +import os +from builtins import NotADirectoryError +import shutil +import tempfile + + +boards = { + "TX16S_1": { + "PCB": "X10", + "PCBREV": "TX16S", + "DEFAULT_MODE": "1", + }, + "TX16S_2": { + "PCB": "X10", + "PCBREV": "TX16S", + "DEFAULT_MODE": "2", + } +} + +translations = [ + "EN", +] + + +def timestamp(): + return datetime.datetime.now().strftime("%y%m%d") + + +def build(board, translation, srcdir): + cmake_options = " ".join(["-D%s=%s" % (key, value) for key, value in boards[board].items()]) + cwd = os.getcwd() + if not os.path.exists("output"): + os.mkdir("output") + path = tempfile.mkdtemp() + os.chdir(path) + command = "cmake %s -DTRANSLATIONS=%s -DRADIOMASTER_RELEASE=YES %s" % (cmake_options, translation, srcdir) + print(command) + os.system(command) + os.system("make firmware -j6") + os.chdir(cwd) + index = 0 + while 1: + suffix = "" if index == 0 else "_%d" % index + filename = "output/firmware_%s_%s_%s%s.bin" % (board.lower(), translation.lower(), timestamp(), suffix) + if not os.path.exists(filename): + shutil.copy("%s/firmware.bin" % path, filename) + break + index += 1 + shutil.rmtree(path) + + +def dir_path(string): + if os.path.isdir(string): + return string + else: + raise NotADirectoryError(string) + + +def main(): + parser = argparse.ArgumentParser(description="Build Radiomaster firmware") + parser.add_argument("-b", "--boards", action="append", help="Destination boards", required=True) + parser.add_argument("-t", "--translations", action="append", help="Translations", required=True) + parser.add_argument("srcdir", type=dir_path) + + args = parser.parse_args() + + for board in (boards.keys() if "ALL" in args.boards else args.boards): + for translation in (translations if "ALL" in args.translations else args.translations): + build(board, translation, args.srcdir) + + +if __name__ == "__main__": + main() From a4d9305d65e4e11194a924bcb7131b01d73e70c9 Mon Sep 17 00:00:00 2001 From: WismyYao Date: Thu, 19 Mar 2020 21:31:32 +0800 Subject: [PATCH 5/6] R9-STAB has OTA (#7448) --- radio/src/pulses/pxx2.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/radio/src/pulses/pxx2.h b/radio/src/pulses/pxx2.h index 6e3274278..c739b6e3d 100644 --- a/radio/src/pulses/pxx2.h +++ b/radio/src/pulses/pxx2.h @@ -185,7 +185,7 @@ static const char * const PXX2ReceiversNames[] = { "R9-SLIM+", "R9-MINI", "R9-MM", - "R9-STAB", + "R9-STAB", // R9-STAB has OTA "R9-MINI-OTA", // this one has OTA (different bootloader) "R9-MM-OTA", // this one has OTA (different bootloader) "R9-SLIM+-OTA", // this one has OTA (different bootloader) @@ -235,7 +235,7 @@ static const uint8_t PXX2ReceiverOptions[] = { 0b11111110, // R9-SLIM+ 0b11111110, // R9-MINI 0b11111110, // R9-MM - 0b11111110, // R9-STAB + 0b11111111, // R9-STAB+OTA 0b11111111, // R9-MINI+OTA 0b11111111, // R9-MM+OTA 0b11111111, // R9-SLIM+OTA From ae2f848fa37eb5e392b53be4acc9f44c7405af19 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Thu, 19 Mar 2020 22:16:18 +0100 Subject: [PATCH 6/6] Compilation will be a little bit quicker --- radio/util/build-firmware.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/radio/util/build-firmware.py b/radio/util/build-firmware.py index e54b5058e..8d85d542c 100755 --- a/radio/util/build-firmware.py +++ b/radio/util/build-firmware.py @@ -41,7 +41,7 @@ def build_target(target, path, cmake_options): return COMPILATION_ERROR # Launch make - cmd = ["make", "-j2", target] + cmd = ["make", "-j3", target] proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) output, error = proc.communicate() if proc.returncode == 0: