diff --git a/apps/settings/base.de.i18n b/apps/settings/base.de.i18n index 1c541c612..5675747fa 100644 --- a/apps/settings/base.de.i18n +++ b/apps/settings/base.de.i18n @@ -34,6 +34,7 @@ Polar = "Polar " Brightness = "Helligkeit" SoftwareVersion = "Epsilon version" UpsilonVersion = "Upsilon version" +OmegaVersion = "Omega version" Username = "Name" MicroPythonVersion = "µPythonversion" FontSizes = "Python-Schriftgröße" @@ -70,10 +71,10 @@ Time = "Uhrzeit" RTCWarning1 = "Das Aktivieren der Uhr verkürzt die" RTCWarning2 = "Akkulaufzeit im Bereitschaftsmodus." SyntaxHighlighting = "Syntaxhervorhebung" -USBExplanation1= "USB-Schutz schützt Ihren" -USBExplanation2= "Taschenrechner vor" -USBExplanation3= "unbeabsichtigter Verriegelung" -USBProtection= "USB-Schutz" +USBExplanation1 = "USB-Schutz schützt Ihren" +USBExplanation2 = "Taschenrechner vor" +USBExplanation3 = "unbeabsichtigter Verriegelung" +USBProtection = "USB-Schutz" USBProtectionLevel = "Akzeptierte Updates" USBDefaultLevel = "Basierend auf Upsilon" USBLowLevel = "Basierend auf Omega" diff --git a/apps/settings/base.en.i18n b/apps/settings/base.en.i18n index 943b98164..ddc854c0e 100644 --- a/apps/settings/base.en.i18n +++ b/apps/settings/base.en.i18n @@ -34,6 +34,7 @@ Polar = "Polar " Brightness = "Brightness" SoftwareVersion = "Epsilon version" UpsilonVersion = "Upsilon version" +OmegaVersion = "Omega version" Username = "Name" MicroPythonVersion = "µPython version" FontSizes = "Python font size" @@ -70,10 +71,10 @@ Time = "Time" RTCWarning1 = "Enabling the clock drains the battery faster" RTCWarning2 = "when the calculator is powered off." SyntaxHighlighting = "Syntax Highlighting" -USBExplanation1= "The USB protection protects" -USBExplanation2= "the calculator from" -USBExplanation3= "unintentional locking" -USBProtection= "USB Protection" +USBExplanation1 = "The USB protection protects" +USBExplanation2 = "the calculator from" +USBExplanation3 = "unintentional locking" +USBProtection = "USB Protection" USBProtectionLevel = "Updates accepted" USBDefaultLevel = "Based on Upsilon" USBLowLevel = "Based on Omega" diff --git a/apps/settings/base.es.i18n b/apps/settings/base.es.i18n index b70d432c7..1e59a1d16 100644 --- a/apps/settings/base.es.i18n +++ b/apps/settings/base.es.i18n @@ -34,6 +34,7 @@ Polar = "Polar " Brightness = "Brillo" SoftwareVersion = "Versión de Epsilon" UpsilonVersion = "Versión de Upsilon" +OmegaVersion = "Versión de Omega" Username = "Apellido" MicroPythonVersion = "Version de µPython" FontSizes = "Tipografía Python" @@ -70,10 +71,10 @@ Time = "Hora" RTCWarning1 = "Activar el reloj gasta la batería más rápido" RTCWarning2 = "cuando la calculadora está apagada." SyntaxHighlighting = "Resaltado de sintaxis" -USBExplanation1= "La protección USB protege" -USBExplanation2= "su calculadora del" -USBExplanation3= "bloqueo involuntario" -USBProtection= "Protección USB" +USBExplanation1 = "La protección USB protege" +USBExplanation2 = "su calculadora del" +USBExplanation3 = "bloqueo involuntario" +USBProtection = "Protección USB" USBProtectionLevel = "Actualizaciones aceptadas" USBDefaultLevel = "Basado en Upsilon" USBLowLevel = "Basado en Omega" diff --git a/apps/settings/base.fr.i18n b/apps/settings/base.fr.i18n index b44969e73..758cb2087 100644 --- a/apps/settings/base.fr.i18n +++ b/apps/settings/base.fr.i18n @@ -34,6 +34,7 @@ Polar = "Exponentielle " Brightness = "Luminosité" SoftwareVersion = "Version d'Epsilon" UpsilonVersion = "Version d'Upsilon" +OmegaVersion = "Version d'Omega" Username = "Nom" MicroPythonVersion = "Version de µPython" FontSizes = "Police Python" @@ -70,10 +71,10 @@ Time = "Heure" RTCWarning1 = "Activer l'horloge décharge la batterie plus" RTCWarning2 = "vite quand la calculatrice est éteinte." SyntaxHighlighting = "Coloration syntaxique" -USBExplanation1= "La protection USB protège votre" -USBExplanation2= "calculatrice contre un verrouillage" -USBExplanation3= "non-intentionnel" -USBProtection= "Protection USB" +USBExplanation1 = "La protection USB protège votre" +USBExplanation2 = "calculatrice contre un verrouillage" +USBExplanation3 = "non-intentionnel" +USBProtection = "Protection USB" USBProtectionLevel = "Mise à jour acceptées" USBDefaultLevel = "Basées sur Upsilon" USBLowLevel = "Basées sur Omega" diff --git a/apps/settings/base.hu.i18n b/apps/settings/base.hu.i18n index a3d4f03ac..1518f3982 100644 --- a/apps/settings/base.hu.i18n +++ b/apps/settings/base.hu.i18n @@ -34,6 +34,7 @@ Polar = "Poláris " Brightness = "Fényerö" SoftwareVersion = "Epsilon verzió" UpsilonVersion = "Upsilon verzió" +OmegaVersion = "Omega verzió" Username = "Felhasználónév" MicroPythonVersion = "µPython verzió" FontSizes = "Python betü méret" @@ -70,10 +71,10 @@ Time = "Óra" RTCWarning1 = "Amikor a számológép alvómódban van, az óra" RTCWarning2 = "használása az elemet gyorsabban meríti ki." SyntaxHighlighting = "Szintaxis kiemelés" -USBExplanation1= "Az USB-védelem megvédi" -USBExplanation2= "a számológépet a nem" -USBExplanation3= "szándékos reteszeléstől" -USBProtection= "USB védelem" +USBExplanation1 = "Az USB-védelem megvédi" +USBExplanation2 = "a számológépet a nem" +USBExplanation3 = "szándékos reteszeléstől" +USBProtection = "USB védelem" USBProtectionLevel = "Elfogadott frissítések" USBDefaultLevel = "Upsilon alapján" USBLowLevel = "Omega alapján" diff --git a/apps/settings/base.it.i18n b/apps/settings/base.it.i18n index aec045eff..fb253c161 100644 --- a/apps/settings/base.it.i18n +++ b/apps/settings/base.it.i18n @@ -34,6 +34,7 @@ Polar = "Esponenziale " Brightness = "Luminosità" SoftwareVersion = "Epsilon version" UpsilonVersion = "Upsilon version" +OmegaVersion = "Omega version" Username = "Name" MicroPythonVersion = "µPython version" FontSizes = "Carattere Python" @@ -70,10 +71,10 @@ Time = "Time" RTCWarning1 = "Enabling the clock drains the battery faster" RTCWarning2 = "when the calculator is powered off." SyntaxHighlighting = "Evidenziazione della sintassi" -USBExplanation1= "La protezione USB protegge" -USBExplanation2= "la calcolatrice dal" -USBExplanation3= "blocco involontario" -USBProtection= "Protezione USB" +USBExplanation1 = "La protezione USB protegge" +USBExplanation2 = "la calcolatrice dal" +USBExplanation3 = "blocco involontario" +USBProtection = "Protezione USB" USBProtectionLevel = "Aggiornamenti accettati" USBDefaultLevel = "Basato su Upsilon" USBLowLevel = "A base di Omega" diff --git a/apps/settings/base.nl.i18n b/apps/settings/base.nl.i18n index 4ea41ec3e..88e42f70c 100644 --- a/apps/settings/base.nl.i18n +++ b/apps/settings/base.nl.i18n @@ -34,6 +34,7 @@ Polar = "Polair " Brightness = "Helderheid" SoftwareVersion = "Epsilon version" UpsilonVersion = "Upsilon version" +OmegaVersion = "Omega version" Username = "Name" MicroPythonVersion = "µPython version" FontSizes = "Python lettergrootte" @@ -70,10 +71,10 @@ Time = "Time" RTCWarning1 = "Enabling the clock drains the battery faster" RTCWarning2 = "when the calculator is powered off." SyntaxHighlighting = "Syntax Highlighting" -USBExplanation1= "USB-beveiliging beschermt uw" -USBExplanation2= "rekenmachine tegen" -USBExplanation3= "onbedoelde vergrendeling" -USBProtection= "USB-beveiliging" +USBExplanation1 = "USB-beveiliging beschermt uw" +USBExplanation2 = "rekenmachine tegen" +USBExplanation3 = "onbedoelde vergrendeling" +USBProtection = "USB-beveiliging" USBProtectionLevel = "Updates geaccepteerd" USBDefaultLevel = "Gebaseerd op Upsilon" USBLowLevel = "Op basis van Omega" diff --git a/apps/settings/base.pt.i18n b/apps/settings/base.pt.i18n index 62bf8063e..7cc14a15f 100644 --- a/apps/settings/base.pt.i18n +++ b/apps/settings/base.pt.i18n @@ -34,6 +34,7 @@ Polar = "Polar " Brightness = "Brilho" SoftwareVersion = "Versão do Epsilon" UpsilonVersion = "Versão do Upsilon" +OmegaVersion = "Versão do Omega" Username = "Nome" MicroPythonVersion = "Versao do µPython" FontSizes = "Tipografia Python" @@ -70,10 +71,10 @@ Time = "Time" RTCWarning1 = "Enabling the clock drains the battery faster" RTCWarning2 = "when the calculator is powered off." SyntaxHighlighting = "Destaque da sintaxe" -USBExplanation1= "A proteção USB protege" -USBExplanation2= "sua calculadora contra" -USBExplanation3= "bloqueios não intencionais" -USBProtection= "Proteção USB" +USBExplanation1 = "A proteção USB protege" +USBExplanation2 = "sua calculadora contra" +USBExplanation3 = "bloqueios não intencionais" +USBProtection = "Proteção USB" USBProtectionLevel = "Atualizações aceitas" USBDefaultLevel = "Baseado em Upsilon" USBLowLevel = "Baseado em Ômega" diff --git a/apps/settings/main_controller.cpp b/apps/settings/main_controller.cpp index 16a187461..6ee5ff5b1 100644 --- a/apps/settings/main_controller.cpp +++ b/apps/settings/main_controller.cpp @@ -28,8 +28,7 @@ constexpr SettingsMessageTree s_codeChildren[3] = {SettingsMessageTree(I18n::Mes #endif constexpr SettingsMessageTree s_modelFontChildren[2] = {SettingsMessageTree(I18n::Message::LargeFont), SettingsMessageTree(I18n::Message::SmallFont)}; - -constexpr SettingsMessageTree s_modelAboutChildren[9] = {SettingsMessageTree(I18n::Message::Username), SettingsMessageTree(I18n::Message::SoftwareVersion), SettingsMessageTree(I18n::Message::UpsilonVersion), SettingsMessageTree(I18n::Message::MicroPythonVersion), SettingsMessageTree(I18n::Message::Battery), SettingsMessageTree(I18n::Message::MemUse), SettingsMessageTree(I18n::Message::SerialNumber), SettingsMessageTree(I18n::Message::FccId), SettingsMessageTree(I18n::Message::Contributors, s_contributorsChildren)}; +constexpr SettingsMessageTree s_modelAboutChildren[10] = {SettingsMessageTree(I18n::Message::Username), SettingsMessageTree(I18n::Message::UpsilonVersion), SettingsMessageTree(I18n::Message::OmegaVersion), SettingsMessageTree(I18n::Message::SoftwareVersion), SettingsMessageTree(I18n::Message::MicroPythonVersion), SettingsMessageTree(I18n::Message::Battery), SettingsMessageTree(I18n::Message::MemUse), SettingsMessageTree(I18n::Message::SerialNumber), SettingsMessageTree(I18n::Message::FccId), SettingsMessageTree(I18n::Message::Contributors, s_contributorsChildren)}; MainController::MainController(Responder * parentResponder, InputEventHandlerDelegate * inputEventHandlerDelegate) : ViewController(parentResponder), diff --git a/apps/settings/main_controller.h b/apps/settings/main_controller.h index 10896c77d..ffcc2cfe6 100644 --- a/apps/settings/main_controller.h +++ b/apps/settings/main_controller.h @@ -28,7 +28,7 @@ extern const Shared::SettingsMessageTree s_codeChildren[3]; extern const Shared::SettingsMessageTree s_modelDateTimeChildren[3]; extern const Shared::SettingsMessageTree s_accessibilityChildren[6]; extern const Shared::SettingsMessageTree s_contributorsChildren[23]; -extern const Shared::SettingsMessageTree s_modelAboutChildren[9]; +extern const Shared::SettingsMessageTree s_modelAboutChildren[10]; extern const Shared::SettingsMessageTree s_usbProtectionChildren[2]; extern const Shared::SettingsMessageTree s_usbProtectionLevelChildren[3]; extern const Shared::SettingsMessageTree s_model; diff --git a/apps/settings/sub_menu/about_controller.cpp b/apps/settings/sub_menu/about_controller.cpp index 349a8b70d..73316f2b6 100644 --- a/apps/settings/sub_menu/about_controller.cpp +++ b/apps/settings/sub_menu/about_controller.cpp @@ -73,6 +73,15 @@ bool AboutController::handleEvent(Ion::Events::Event event) { myCell->setAccessoryText(Ion::UpsilonVersion()); return true; } + if (childLabel == I18n::Message::OmegaVersion) { + MessageTableCellWithBuffer * myCell = (MessageTableCellWithBuffer *)m_selectableTableView.selectedCell(); + if (strcmp(myCell->accessoryText(), Ion::OmegaVersion()) == 0) { + myCell->setAccessoryText(MP_STRINGIFY(OMEGA_STATE)); //Change for public/dev + return true; + } + myCell->setAccessoryText(Ion::OmegaVersion()); + return true; + } if (childLabel == I18n::Message::MemUse) { MessageTableCellWithBuffer * myCell = (MessageTableCellWithBuffer *)m_selectableTableView.selectedCell(); @@ -188,8 +197,9 @@ void AboutController::willDisplayCellForIndex(HighlightCell * cell, int index) { static const char * messages[] = { (const char*) Ion::username(), - Ion::softwareVersion(), Ion::UpsilonVersion(), + Ion::OmegaVersion(), + Ion::softwareVersion(), mpVersion, batteryLevel, "", diff --git a/build/config.mak b/build/config.mak index 222cc244d..eaa8c1db1 100644 --- a/build/config.mak +++ b/build/config.mak @@ -6,6 +6,7 @@ DEBUG ?= 0 HOME_DISPLAY_EXTERNALS ?= 1 EPSILON_VERSION ?= 15.5.0 OMEGA_VERSION ?= 1.22.1 +UPSILON_VERSION ?= 1.0.0-dev # OMEGA_USERNAME ?= N/A OMEGA_STATE ?= public EPSILON_APPS ?= calculation rpn graph code statistics probability solver atomic sequence regression reader settings external diff --git a/ion/Makefile b/ion/Makefile index 45461e1c7..3558e7133 100644 --- a/ion/Makefile +++ b/ion/Makefile @@ -22,7 +22,7 @@ include ion/src/shared/tools/Makefile # char test[4]= "ab"; is valid and should initialize test to 'a','b',0,0). # Older versions of GCC are not conformant so we resort to an initializer list. initializer_list = $(shell echo $(1) | sed "s/\(.\)/'\1',/g")0 -$(call object_for,ion/src/shared/platform_info.cpp): SFLAGS += -DPATCH_LEVEL="$(call initializer_list,$(PATCH_LEVEL))" -DEPSILON_VERSION="$(call initializer_list,$(EPSILON_VERSION))" -DOMEGA_VERSION="$(call initializer_list,$(OMEGA_VERSION))" -DOMEGA_USERNAME="$(call initializer_list,$(OMEGA_USERNAME))" +$(call object_for,ion/src/shared/platform_info.cpp): SFLAGS += -DPATCH_LEVEL="$(call initializer_list,$(PATCH_LEVEL))" -DEPSILON_VERSION="$(call initializer_list,$(EPSILON_VERSION))" -DOMEGA_VERSION="$(call initializer_list,$(OMEGA_VERSION))" -DUPSILON_VERSION="$(call initializer_list,$(UPSILON_VERSION))" -DOMEGA_USERNAME="$(call initializer_list,$(OMEGA_USERNAME))" ion_src += $(addprefix ion/src/shared/, \ console_line.cpp \ diff --git a/ion/include/ion.h b/ion/include/ion.h index 06d9da2e7..490e6a28b 100644 --- a/ion/include/ion.h +++ b/ion/include/ion.h @@ -36,6 +36,7 @@ const char * serialNumber(); const volatile char * username(); const char * softwareVersion(); const char * UpsilonVersion(); +const char * OmegaVersion(); const char * patchLevel(); const char * fccId(); const char * pcbVersion(); diff --git a/ion/src/shared/platform_info.cpp b/ion/src/shared/platform_info.cpp index 2167f528f..b5ab46842 100644 --- a/ion/src/shared/platform_info.cpp +++ b/ion/src/shared/platform_info.cpp @@ -13,6 +13,10 @@ #error This file expects OMEGA_VERSION to be defined #endif +#ifndef UPSILON_VERSION +#error This file expects UPSILON_VERSION to be defined +#endif + #ifndef HEADER_SECTION #define HEADER_SECTION #endif @@ -32,14 +36,17 @@ public: m_storageSize(Ion::Storage::k_storageSize), m_footer(Magic), m_ohm_header(OmegaMagic), - m_UpsilonVersion{OMEGA_VERSION}, + m_OmegaVersion{OMEGA_VERSION}, #ifdef OMEGA_USERNAME m_username{OMEGA_USERNAME}, #else m_username{"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"}, #endif - m_osType(UpsilonMagic), - m_ohm_footer(OmegaMagic) { } + m_ohm_footer(OmegaMagic), + m_ups_header(UpsilonMagic), + m_UpsilonVersion{UPSILON_VERSION}, + m_osType(OSType), + m_ups_footer(UpsilonMagic) { } const char * version() const { assert(m_storageAddress != nullptr); assert(m_storageSize != 0); @@ -57,6 +64,15 @@ public: assert(m_ohm_header == OmegaMagic); assert(m_ohm_footer == OmegaMagic); return m_UpsilonVersion; + } + const char * OmegaVersion() const { + assert(m_storageAddress != nullptr); + assert(m_storageSize != 0); + assert(m_header == Magic); + assert(m_footer == Magic); + assert(m_ohm_header == OmegaMagic); + assert(m_ohm_footer == OmegaMagic); + return m_OmegaVersion; } const volatile char * username() const volatile { assert(m_storageAddress != nullptr); @@ -80,6 +96,7 @@ private: constexpr static uint32_t Magic = 0xDEC00DF0; constexpr static uint32_t OmegaMagic = 0xEFBEADDE; constexpr static uint32_t UpsilonMagic = 0x55707369; + constexpr static uint32_t OSType = 0x79827178; uint32_t m_header; const char m_version[8]; const char m_patchLevel[8]; @@ -87,10 +104,14 @@ private: size_t m_storageSize; uint32_t m_footer; uint32_t m_ohm_header; - const char m_UpsilonVersion[16]; + const char m_OmegaVersion[16]; const volatile char m_username[16]; - uint32_t m_osType; uint32_t m_ohm_footer; + uint32_t m_ups_header; + const char m_UpsilonVersion[16]; + uint32_t m_osType; + uint32_t m_ups_footer; + }; const PlatformInfo HEADER_SECTION platform_infos; @@ -103,6 +124,10 @@ const char * Ion::UpsilonVersion() { return platform_infos.UpsilonVersion(); } +const char * Ion::OmegaVersion() { + return platform_infos.OmegaVersion(); +} + const volatile char * Ion::username() { return platform_infos.username(); }