From e92a81c2299aa5c89dc104e8e0c0251644220be6 Mon Sep 17 00:00:00 2001 From: Dimitar Dimitrov Date: Mon, 17 Aug 2020 16:42:27 +0300 Subject: [PATCH 01/32] Better Bulgarian language translations --- Translation Editor/translation_bg.json | 104 +++++++++++++------------ 1 file changed, 53 insertions(+), 51 deletions(-) diff --git a/Translation Editor/translation_bg.json b/Translation Editor/translation_bg.json index f40f1607..dad7153d 100644 --- a/Translation Editor/translation_bg.json +++ b/Translation Editor/translation_bg.json @@ -3,10 +3,10 @@ "languageLocalName": "Български", "cyrillicGlyphs": true, "messages": { - "SettingsCalibrationDone": "Calibration done!", - "SettingsCalibrationWarning": "Уверете се, че човката на поялника е със стайна температура преди да продължите!", + "SettingsCalibrationDone": "Калибрацията завършена!", + "SettingsCalibrationWarning": "Уверете се, че върха на поялника е със стайна температура преди да продължите!", "SettingsResetWarning": "Сигурни ли сте, че искате да върнете фабричните настройки?", - "UVLOWarningString": "Ниско V!", + "UVLOWarningString": "Ниско DC Напрежение", "UndervoltageString": "Ниско Напрежение", "InputVoltageString": "Входно V: ", "WarningTipTempString": "Темп.: ", @@ -17,11 +17,13 @@ "WarningAdvancedString": "ВНИМАНИЕ! ТОПЛО!", "SleepingTipAdvancedString": "Връх:", "IdleTipString": "Връх:", - "IdleSetString": " Set:", - "TipDisconnectedString": "ВРЪХ ЛОША ВРЪЗКА", + "IdleSetString": " Настройка:", + "TipDisconnectedString": "ПРЕКЪСНАТ ВРЪХ", "SolderingAdvancedPowerPrompt": "Захранване: ", - "OffString": "Off", - "ResetOKMessage": "Reset OK" + "OffString": "Изкл.", + "ResetOKMessage": "Нулиране завършено", + "YourGainMessage": "Усилване:", + "SettingsResetMessage": "Настройките бяха\nнулирани!" }, "characters": { "SettingRightChar": "R", @@ -203,92 +205,92 @@ "desc": "Скорост на движение на този текст" }, "TipModel": { - "text": "TIPMO", + "text": "", "text2": [ - "Tip", - "Model" + "Модел", + "на връх" ], - "desc": "Tip Model selection" + "desc": "Избор на модел на връх" }, "SimpleCalibrationMode": { - "text": "SMPCAL", + "text": "", "text2": [ - "Simple", - "Calibration" + "Бърза", + "калибрация" ], - "desc": "Simple Calibration using Hot water" + "desc": "Бърза калибрация с използване на гореща вода" }, "AdvancedCalibrationMode": { - "text": "ADVCAL", + "text": "", "text2": [ - "Advanced", - "Calibration" + "Прецизна", + "калибрация" ], - "desc": "Advanced calibration using thermocouple on the tip" + "desc": "Прецизна калибрация с използване на термо-двойка на върха на поялника" }, "PowerInput": { - "text": "PWRW", + "text": "", "text2": [ - "Power", - "Wattage" + "Мощност на", + "захранване" ], - "desc": "Power Wattage of the power adapter used" + "desc": "Мощност на избраното захранване" }, "PowerLimitEnable": { - "text": "PLIMEN", + "text": "", "text2": [ - "P Limit", - "Enable" + "Вкл. лимит", + "на мощност?" ], - "desc": "Enable power limit" + "desc": "Включване на лимит на мощност" }, "PowerLimit": { - "text": "PLIM", + "text": "", "text2": [ - "Power", - "Limit" + "Лимит на", + "мощност" ], - "desc": "Maximum power the iron can use " + "desc": "Максимална мощност на поялника " }, "ReverseButtonTempChange": { - "text": "RVTCHG", + "text": "", "text2": [ - "Key +-", - "reverse?" + "Размяна", + "бутони +-?" ], - "desc": "Reverse the tip temperature change buttons plus minus assignment." + "desc": "Обръщане на бутоните \"+\" и \"-\" за промяна на температурата на върха на поялника" }, "TempChangeShortStep": { - "text": "TCHGST", + "text": "", "text2": [ - "Temp change", - "short?" + "Промяна темп.", + "бърз бутон?" ], - "desc": "Temperature change steps on short button press!" + "desc": "Промяна на температура при бързо натискане на бутон!" }, "TempChangeLongStep": { - "text": "TCHGLT", + "text": "", "text2": [ - "Temp change", - "long?" + "Промяна темп.", + "задърж. бутон?" ], - "desc": "Temperature change steps on long button press!" + "desc": "Промяна на температура при задържане на бутон!" }, "PowerPulsePower":{ - "text": "POWPLS", + "text": "", "text2": [ - "Power", - "Pulse W" + "Захранващ", + "импулс" ], - "desc": "Keep awake pulse power intensity" + "desc": "Поддържане на интензивност на захранващия импулс" }, "TipGain": { - "text": "TG", + "text": "", "text2": [ - "Modify", - "tip gain" + "Промяна", + "сила връх" ], - "desc": "Tip gain" + "desc": "Усилване на върха на поялника" } } } From 09ff363ae5ac4324ace19a9cfb0f3107a82e41f6 Mon Sep 17 00:00:00 2001 From: "Ben V. Brown" Date: Wed, 19 Aug 2020 15:09:55 +1000 Subject: [PATCH 02/32] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index e0012b5a..5fa9c60e 100644 --- a/README.md +++ b/README.md @@ -3,6 +3,8 @@ # Flexible Soldering iron control Firmware +*Please Note, this repo will likely be renaming soon to unire - See issue #639. Old links willcontinue to work, and should redirect. So dont panic :) This is just to better account for the newer soldeing irons being added.* + Originally concieved as an alternative firmware for the TS100, this firmware has evolved into a complex soldering iron control firmware. The firmware implements all of the standard features of a "smart" soldering iron, with lots of little extras and tweaks. From 5d358feee9df8e67bfa5f046ff8df19f0920786e Mon Sep 17 00:00:00 2001 From: Dimitar Dimitrov Date: Wed, 19 Aug 2020 18:18:58 +0300 Subject: [PATCH 03/32] Small changes after detailed view on a display --- Translation Editor/translation_bg.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Translation Editor/translation_bg.json b/Translation Editor/translation_bg.json index dad7153d..061f2748 100644 --- a/Translation Editor/translation_bg.json +++ b/Translation Editor/translation_bg.json @@ -186,7 +186,7 @@ "Калибриране", "напрежение?" ], - "desc": "Калибриране на входното напрежение (VIN). Задръжте бутонa за изход" + "desc": "Калибриране на входното напрежение. Задръжте бутонa за изход" }, "AdvancedSoldering": { "text": "", @@ -263,16 +263,16 @@ "TempChangeShortStep": { "text": "", "text2": [ - "Промяна темп.", - "бърз бутон?" + "Промяна T", + "бързо?" ], "desc": "Промяна на температура при бързо натискане на бутон!" }, "TempChangeLongStep": { "text": "", "text2": [ - "Промяна темп.", - "задърж. бутон?" + "Промяна Т", + "задържане?" ], "desc": "Промяна на температура при задържане на бутон!" }, From 76099406efa42a8cf1f455037e8c04bf4440cad1 Mon Sep 17 00:00:00 2001 From: Paul Fertser Date: Mon, 15 Jun 2020 14:32:54 +0300 Subject: [PATCH 04/32] Update FreeRTOS port-specific files to V10.3.1 This updates Cortex-M3 port files to version found in V10.3.1-kernel-only tag of FreeRTOS-Kernel. The new upstream release includes memory barriers which are essential for use with modern optimising compilers. Without those firmware certainly breaks with -O3 -flto and might be also broken with other optimisation configurations. Fixes: d59ec10c4ef5 ("Update FreeRTOS to v10.3.1") --- .../Source/portable/GCC/ARM_CM3/port.c | 239 +++++++++--------- .../Source/portable/GCC/ARM_CM3/portmacro.h | 111 +++----- 2 files changed, 159 insertions(+), 191 deletions(-) diff --git a/workspace/TS100/Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM3/port.c b/workspace/TS100/Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM3/port.c index bb8336f7..53592606 100644 --- a/workspace/TS100/Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM3/port.c +++ b/workspace/TS100/Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM3/port.c @@ -1,71 +1,29 @@ /* - FreeRTOS V9.0.0 - Copyright (C) 2016 Real Time Engineers Ltd. - All rights reserved - - VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION. - - This file is part of the FreeRTOS distribution. - - FreeRTOS is free software; you can redistribute it and/or modify it under - the terms of the GNU General Public License (version 2) as published by the - Free Software Foundation >>>> AND MODIFIED BY <<<< the FreeRTOS exception. - - *************************************************************************** - >>! NOTE: The modification to the GPL is included to allow you to !<< - >>! distribute a combined work that includes FreeRTOS without being !<< - >>! obliged to provide the source code for proprietary components !<< - >>! outside of the FreeRTOS kernel. !<< - *************************************************************************** - - FreeRTOS is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - FOR A PARTICULAR PURPOSE. Full license text is available on the following - link: http://www.freertos.org/a00114.html - - *************************************************************************** - * * - * FreeRTOS provides completely free yet professionally developed, * - * robust, strictly quality controlled, supported, and cross * - * platform software that is more than just the market leader, it * - * is the industry's de facto standard. * - * * - * Help yourself get started quickly while simultaneously helping * - * to support the FreeRTOS project by purchasing a FreeRTOS * - * tutorial book, reference manual, or both: * - * http://www.FreeRTOS.org/Documentation * - * * - *************************************************************************** - - http://www.FreeRTOS.org/FAQHelp.html - Having a problem? Start by reading - the FAQ page "My application does not run, what could be wrong?". Have you - defined configASSERT()? - - http://www.FreeRTOS.org/support - In return for receiving this top quality - embedded software for free we request you assist our global community by - participating in the support forum. - - http://www.FreeRTOS.org/training - Investing in training allows your team to - be as productive as possible as early as possible. Now you can receive - FreeRTOS training directly from Richard Barry, CEO of Real Time Engineers - Ltd, and the world's leading authority on the world's leading RTOS. - - http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products, - including FreeRTOS+Trace - an indispensable productivity tool, a DOS - compatible FAT file system, and our tiny thread aware UDP/IP stack. - - http://www.FreeRTOS.org/labs - Where new FreeRTOS products go to incubate. - Come and try FreeRTOS+TCP, our new open source TCP/IP stack for FreeRTOS. - - http://www.OpenRTOS.com - Real Time Engineers ltd. license FreeRTOS to High - Integrity Systems ltd. to sell under the OpenRTOS brand. Low cost OpenRTOS - licenses offer ticketed support, indemnification and commercial middleware. - - http://www.SafeRTOS.com - High Integrity Systems also provide a safety - engineered and independently SIL3 certified version for use in safety and - mission critical applications that require provable dependability. - - 1 tab == 4 spaces! -*/ + * FreeRTOS Kernel V10.3.1 + * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * http://www.FreeRTOS.org + * http://aws.amazon.com/freertos + * + * 1 tab == 4 spaces! + */ /*----------------------------------------------------------- * Implementation of functions defined in portable.h for the ARM CM3 port. @@ -144,10 +102,6 @@ debugger. */ #define portTASK_RETURN_ADDRESS prvTaskExitError #endif -/* Each task maintains its own interrupt status in the critical nesting -variable. */ -static UBaseType_t uxCriticalNesting = 0xaaaaaaaa; - /* * Setup the timer to generate the tick interrupts. The implementation in this * file is weak to allow application writers to change the timer used to @@ -174,10 +128,14 @@ static void prvTaskExitError( void ); /*-----------------------------------------------------------*/ +/* Each task maintains its own interrupt status in the critical nesting +variable. */ +static UBaseType_t uxCriticalNesting = 0xaaaaaaaa; + /* * The number of SysTick increments that make up one tick period. */ -#if configUSE_TICKLESS_IDLE == 1 +#if( configUSE_TICKLESS_IDLE == 1 ) static uint32_t ulTimerCountsForOneTick = 0; #endif /* configUSE_TICKLESS_IDLE */ @@ -185,7 +143,7 @@ static void prvTaskExitError( void ); * The maximum number of tick periods that can be suppressed is limited by the * 24 bit resolution of the SysTick timer. */ -#if configUSE_TICKLESS_IDLE == 1 +#if( configUSE_TICKLESS_IDLE == 1 ) static uint32_t xMaximumPossibleSuppressedTicks = 0; #endif /* configUSE_TICKLESS_IDLE */ @@ -193,7 +151,7 @@ static void prvTaskExitError( void ); * Compensate for the CPU cycles that pass while the SysTick is stopped (low * power functionality only. */ -#if configUSE_TICKLESS_IDLE == 1 +#if( configUSE_TICKLESS_IDLE == 1 ) static uint32_t ulStoppedTimerCompensation = 0; #endif /* configUSE_TICKLESS_IDLE */ @@ -202,7 +160,7 @@ static void prvTaskExitError( void ); * FreeRTOS API functions are not called from interrupts that have been assigned * a priority above configMAX_SYSCALL_INTERRUPT_PRIORITY. */ -#if ( configASSERT_DEFINED == 1 ) +#if( configASSERT_DEFINED == 1 ) static uint8_t ucMaxSysCallPriority = 0; static uint32_t ulMaxPRIGROUPValue = 0; static const volatile uint8_t * const pcInterruptPriorityRegisters = ( const volatile uint8_t * const ) portNVIC_IP_REGISTERS_OFFSET_16; @@ -233,6 +191,8 @@ StackType_t *pxPortInitialiseStack( StackType_t *pxTopOfStack, TaskFunction_t px static void prvTaskExitError( void ) { +volatile uint32_t ulDummy = 0UL; + /* A function that implements a task must not exit or attempt to return to its caller as there is nothing to return to. If a task wants to exit it should instead call vTaskDelete( NULL ). @@ -241,7 +201,16 @@ static void prvTaskExitError( void ) defined, then stop here so application writers can catch the error. */ configASSERT( uxCriticalNesting == ~0UL ); portDISABLE_INTERRUPTS(); - for( ;; ); + while( ulDummy == 0 ) + { + /* This file calls prvTaskExitError() after the scheduler has been + started to remove a compiler warning about the function being defined + but never called. ulDummy is used purely to quieten other warnings + about code appearing after this function is called - making ulDummy + volatile makes the compiler think the function could return and + therefore not output an 'unreachable code' warning for code that appears + after it. */ + } } /*-----------------------------------------------------------*/ @@ -324,6 +293,24 @@ BaseType_t xPortStartScheduler( void ) ucMaxPriorityValue <<= ( uint8_t ) 0x01; } + #ifdef __NVIC_PRIO_BITS + { + /* Check the CMSIS configuration that defines the number of + priority bits matches the number of priority bits actually queried + from the hardware. */ + configASSERT( ( portMAX_PRIGROUP_BITS - ulMaxPRIGROUPValue ) == __NVIC_PRIO_BITS ); + } + #endif + + #ifdef configPRIO_BITS + { + /* Check the FreeRTOS configuration that defines the number of + priority bits matches the number of priority bits actually queried + from the hardware. */ + configASSERT( ( portMAX_PRIGROUP_BITS - ulMaxPRIGROUPValue ) == configPRIO_BITS ); + } + #endif + /* Shift the priority group value back to its position within the AIRCR register. */ ulMaxPRIGROUPValue <<= portPRIGROUP_SHIFT; @@ -352,7 +339,10 @@ BaseType_t xPortStartScheduler( void ) /* Should never get here as the tasks will now be executing! Call the task exit error function to prevent compiler warnings about a static function not being called in the case that the application writer overrides this - functionality by defining configTASK_RETURN_ADDRESS. */ + functionality by defining configTASK_RETURN_ADDRESS. Call + vTaskSwitchContext() so link time optimisation does not remove the + symbol. */ + vTaskSwitchContext(); prvTaskExitError(); /* Should not get here! */ @@ -418,7 +408,7 @@ void xPortPendSVHandler( void ) " mov r0, #0 \n" " msr basepri, r0 \n" " ldmia sp!, {r3, r14} \n" - " \n" /* Restore the context, including the critical nesting count. */ + " \n" /* Restore the context, including the critical nesting count. */ " ldr r1, [r3] \n" " ldr r0, [r1] \n" /* The first item in pxCurrentTCB is the task top of stack. */ " ldmia r0!, {r4-r11} \n" /* Pop the registers. */ @@ -453,11 +443,11 @@ void xPortSysTickHandler( void ) } /*-----------------------------------------------------------*/ -#if configUSE_TICKLESS_IDLE == 1 +#if( configUSE_TICKLESS_IDLE == 1 ) __attribute__((weak)) void vPortSuppressTicksAndSleep( TickType_t xExpectedIdleTime ) { - uint32_t ulReloadValue, ulCompleteTickPeriods, ulCompletedSysTickDecrements, ulSysTickCTRL; + uint32_t ulReloadValue, ulCompleteTickPeriods, ulCompletedSysTickDecrements; TickType_t xModifiableIdleTime; /* Make sure the SysTick reload value does not overflow the counter. */ @@ -483,7 +473,7 @@ void xPortSysTickHandler( void ) /* Enter a critical section but don't use the taskENTER_CRITICAL() method as that will mask interrupts that should exit sleep mode. */ - __asm volatile( "cpsid i" ); + __asm volatile( "cpsid i" ::: "memory" ); __asm volatile( "dsb" ); __asm volatile( "isb" ); @@ -504,7 +494,7 @@ void xPortSysTickHandler( void ) /* Re-enable interrupts - see comments above the cpsid instruction() above. */ - __asm volatile( "cpsie i" ); + __asm volatile( "cpsie i" ::: "memory" ); } else { @@ -524,32 +514,50 @@ void xPortSysTickHandler( void ) should not be executed again. However, the original expected idle time variable must remain unmodified, so a copy is taken. */ xModifiableIdleTime = xExpectedIdleTime; - configPRE_SLEEP_PROCESSING( &xModifiableIdleTime ); + configPRE_SLEEP_PROCESSING( xModifiableIdleTime ); if( xModifiableIdleTime > 0 ) { - __asm volatile( "dsb" ); + __asm volatile( "dsb" ::: "memory" ); __asm volatile( "wfi" ); __asm volatile( "isb" ); } - configPOST_SLEEP_PROCESSING( &xExpectedIdleTime ); + configPOST_SLEEP_PROCESSING( xExpectedIdleTime ); - /* Stop SysTick. Again, the time the SysTick is stopped for is - accounted for as best it can be, but using the tickless mode will - inevitably result in some tiny drift of the time maintained by the - kernel with respect to calendar time. */ - ulSysTickCTRL = portNVIC_SYSTICK_CTRL_REG; - portNVIC_SYSTICK_CTRL_REG = ( ulSysTickCTRL & ~portNVIC_SYSTICK_ENABLE_BIT ); + /* Re-enable interrupts to allow the interrupt that brought the MCU + out of sleep mode to execute immediately. see comments above + __disable_interrupt() call above. */ + __asm volatile( "cpsie i" ::: "memory" ); + __asm volatile( "dsb" ); + __asm volatile( "isb" ); - /* Re-enable interrupts - see comments above the cpsid instruction() - above. */ - __asm volatile( "cpsie i" ); + /* Disable interrupts again because the clock is about to be stopped + and interrupts that execute while the clock is stopped will increase + any slippage between the time maintained by the RTOS and calendar + time. */ + __asm volatile( "cpsid i" ::: "memory" ); + __asm volatile( "dsb" ); + __asm volatile( "isb" ); - if( ( ulSysTickCTRL & portNVIC_SYSTICK_COUNT_FLAG_BIT ) != 0 ) + /* Disable the SysTick clock without reading the + portNVIC_SYSTICK_CTRL_REG register to ensure the + portNVIC_SYSTICK_COUNT_FLAG_BIT is not cleared if it is set. Again, + the time the SysTick is stopped for is accounted for as best it can + be, but using the tickless mode will inevitably result in some tiny + drift of the time maintained by the kernel with respect to calendar + time*/ + portNVIC_SYSTICK_CTRL_REG = ( portNVIC_SYSTICK_CLK_BIT | portNVIC_SYSTICK_INT_BIT ); + + /* Determine if the SysTick clock has already counted to zero and + been set back to the current reload value (the reload back being + correct for the entire expected idle time) or if the SysTick is yet + to count to zero (in which case an interrupt other than the SysTick + must have brought the system out of sleep mode). */ + if( ( portNVIC_SYSTICK_CTRL_REG & portNVIC_SYSTICK_COUNT_FLAG_BIT ) != 0 ) { uint32_t ulCalculatedLoadValue; - /* The tick interrupt has already executed, and the SysTick - count reloaded with ulReloadValue. Reset the + /* The tick interrupt is already pending, and the SysTick count + reloaded with ulReloadValue. Reset the portNVIC_SYSTICK_LOAD_REG with whatever remains of this tick period. */ ulCalculatedLoadValue = ( ulTimerCountsForOneTick - 1UL ) - ( ulReloadValue - portNVIC_SYSTICK_CURRENT_VALUE_REG ); @@ -564,11 +572,9 @@ void xPortSysTickHandler( void ) portNVIC_SYSTICK_LOAD_REG = ulCalculatedLoadValue; - /* The tick interrupt handler will already have pended the tick - processing in the kernel. As the pending tick will be - processed as soon as this function exits, the tick value - maintained by the tick is stepped forward by one less than the - time spent waiting. */ + /* As the pending tick will be processed as soon as this + function exits, the tick value maintained by the tick is stepped + forward by one less than the time spent waiting. */ ulCompleteTickPeriods = xExpectedIdleTime - 1UL; } else @@ -590,21 +596,18 @@ void xPortSysTickHandler( void ) /* Restart SysTick so it runs from portNVIC_SYSTICK_LOAD_REG again, then set portNVIC_SYSTICK_LOAD_REG back to its standard - value. The critical section is used to ensure the tick interrupt - can only execute once in the case that the reload register is near - zero. */ + value. */ portNVIC_SYSTICK_CURRENT_VALUE_REG = 0UL; - portENTER_CRITICAL(); - { - portNVIC_SYSTICK_CTRL_REG |= portNVIC_SYSTICK_ENABLE_BIT; - vTaskStepTick( ulCompleteTickPeriods ); - portNVIC_SYSTICK_LOAD_REG = ulTimerCountsForOneTick - 1UL; - } - portEXIT_CRITICAL(); + portNVIC_SYSTICK_CTRL_REG |= portNVIC_SYSTICK_ENABLE_BIT; + vTaskStepTick( ulCompleteTickPeriods ); + portNVIC_SYSTICK_LOAD_REG = ulTimerCountsForOneTick - 1UL; + + /* Exit with interrupts enabled. */ + __asm volatile( "cpsie i" ::: "memory" ); } } -#endif /* #if configUSE_TICKLESS_IDLE */ +#endif /* configUSE_TICKLESS_IDLE */ /*-----------------------------------------------------------*/ /* @@ -614,7 +617,7 @@ void xPortSysTickHandler( void ) __attribute__(( weak )) void vPortSetupTimerInterrupt( void ) { /* Calculate the constants required to configure the tick interrupt. */ - #if configUSE_TICKLESS_IDLE == 1 + #if( configUSE_TICKLESS_IDLE == 1 ) { ulTimerCountsForOneTick = ( configSYSTICK_CLOCK_HZ / configTICK_RATE_HZ ); xMaximumPossibleSuppressedTicks = portMAX_24_BIT_NUMBER / ulTimerCountsForOneTick; @@ -622,6 +625,10 @@ __attribute__(( weak )) void vPortSetupTimerInterrupt( void ) } #endif /* configUSE_TICKLESS_IDLE */ + /* Stop and clear the SysTick. */ + portNVIC_SYSTICK_CTRL_REG = 0UL; + portNVIC_SYSTICK_CURRENT_VALUE_REG = 0UL; + /* Configure SysTick to interrupt at the requested rate. */ portNVIC_SYSTICK_LOAD_REG = ( configSYSTICK_CLOCK_HZ / configTICK_RATE_HZ ) - 1UL; portNVIC_SYSTICK_CTRL_REG = ( portNVIC_SYSTICK_CLK_BIT | portNVIC_SYSTICK_INT_BIT | portNVIC_SYSTICK_ENABLE_BIT ); @@ -636,7 +643,7 @@ __attribute__(( weak )) void vPortSetupTimerInterrupt( void ) uint8_t ucCurrentPriority; /* Obtain the number of the currently executing interrupt. */ - __asm volatile( "mrs %0, ipsr" : "=r"( ulCurrentInterrupt ) ); + __asm volatile( "mrs %0, ipsr" : "=r"( ulCurrentInterrupt ) :: "memory" ); /* Is the interrupt number a user defined interrupt? */ if( ulCurrentInterrupt >= portFIRST_USER_INTERRUPT_NUMBER ) @@ -682,7 +689,7 @@ __attribute__(( weak )) void vPortSetupTimerInterrupt( void ) devices by calling NVIC_SetPriorityGrouping( 0 ); before starting the scheduler. Note however that some vendor specific peripheral libraries assume a non-zero priority group setting, in which cases using a value - of zero will result in unpredicable behaviour. */ + of zero will result in unpredictable behaviour. */ configASSERT( ( portAIRCR_REG & portPRIORITY_GROUP_MASK ) <= ulMaxPRIGROUPValue ); } diff --git a/workspace/TS100/Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM3/portmacro.h b/workspace/TS100/Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM3/portmacro.h index b72042d4..29bccbb2 100644 --- a/workspace/TS100/Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM3/portmacro.h +++ b/workspace/TS100/Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM3/portmacro.h @@ -1,71 +1,29 @@ /* - FreeRTOS V9.0.0 - Copyright (C) 2016 Real Time Engineers Ltd. - All rights reserved - - VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION. - - This file is part of the FreeRTOS distribution. - - FreeRTOS is free software; you can redistribute it and/or modify it under - the terms of the GNU General Public License (version 2) as published by the - Free Software Foundation >>>> AND MODIFIED BY <<<< the FreeRTOS exception. - - *************************************************************************** - >>! NOTE: The modification to the GPL is included to allow you to !<< - >>! distribute a combined work that includes FreeRTOS without being !<< - >>! obliged to provide the source code for proprietary components !<< - >>! outside of the FreeRTOS kernel. !<< - *************************************************************************** - - FreeRTOS is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - FOR A PARTICULAR PURPOSE. Full license text is available on the following - link: http://www.freertos.org/a00114.html - - *************************************************************************** - * * - * FreeRTOS provides completely free yet professionally developed, * - * robust, strictly quality controlled, supported, and cross * - * platform software that is more than just the market leader, it * - * is the industry's de facto standard. * - * * - * Help yourself get started quickly while simultaneously helping * - * to support the FreeRTOS project by purchasing a FreeRTOS * - * tutorial book, reference manual, or both: * - * http://www.FreeRTOS.org/Documentation * - * * - *************************************************************************** - - http://www.FreeRTOS.org/FAQHelp.html - Having a problem? Start by reading - the FAQ page "My application does not run, what could be wrong?". Have you - defined configASSERT()? - - http://www.FreeRTOS.org/support - In return for receiving this top quality - embedded software for free we request you assist our global community by - participating in the support forum. - - http://www.FreeRTOS.org/training - Investing in training allows your team to - be as productive as possible as early as possible. Now you can receive - FreeRTOS training directly from Richard Barry, CEO of Real Time Engineers - Ltd, and the world's leading authority on the world's leading RTOS. - - http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products, - including FreeRTOS+Trace - an indispensable productivity tool, a DOS - compatible FAT file system, and our tiny thread aware UDP/IP stack. - - http://www.FreeRTOS.org/labs - Where new FreeRTOS products go to incubate. - Come and try FreeRTOS+TCP, our new open source TCP/IP stack for FreeRTOS. - - http://www.OpenRTOS.com - Real Time Engineers ltd. license FreeRTOS to High - Integrity Systems ltd. to sell under the OpenRTOS brand. Low cost OpenRTOS - licenses offer ticketed support, indemnification and commercial middleware. - - http://www.SafeRTOS.com - High Integrity Systems also provide a safety - engineered and independently SIL3 certified version for use in safety and - mission critical applications that require provable dependability. - - 1 tab == 4 spaces! -*/ + * FreeRTOS Kernel V10.3.1 + * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * http://www.FreeRTOS.org + * http://aws.amazon.com/freertos + * + * 1 tab == 4 spaces! + */ #ifndef PORTMACRO_H @@ -125,7 +83,7 @@ typedef unsigned long UBaseType_t; \ /* Barriers are normally not required but do ensure the code is completely \ within the specified behaviour for the architecture. */ \ - __asm volatile( "dsb" ); \ + __asm volatile( "dsb" ::: "memory" ); \ __asm volatile( "isb" ); \ } @@ -173,7 +131,7 @@ not necessary for to use this port. They are defined so the common demo files { uint8_t ucReturn; - __asm volatile ( "clz %0, %1" : "=r" ( ucReturn ) : "r" ( ulBitmap ) ); + __asm volatile ( "clz %0, %1" : "=r" ( ucReturn ) : "r" ( ulBitmap ) : "memory" ); return ucReturn; } @@ -208,13 +166,15 @@ not necessary for to use this port. They are defined so the common demo files #define portFORCE_INLINE inline __attribute__(( always_inline)) #endif +/*-----------------------------------------------------------*/ + portFORCE_INLINE static BaseType_t xPortIsInsideInterrupt( void ) { uint32_t ulCurrentInterrupt; BaseType_t xReturn; /* Obtain the number of the currently executing interrupt. */ - __asm volatile( "mrs %0, ipsr" : "=r"( ulCurrentInterrupt ) ); + __asm volatile( "mrs %0, ipsr" : "=r"( ulCurrentInterrupt ) :: "memory" ); if( ulCurrentInterrupt == 0 ) { @@ -236,11 +196,11 @@ uint32_t ulNewBASEPRI; __asm volatile ( - " mov %0, %1 \n" \ + " mov %0, %1 \n" \ " msr basepri, %0 \n" \ " isb \n" \ " dsb \n" \ - :"=r" (ulNewBASEPRI) : "i" ( configMAX_SYSCALL_INTERRUPT_PRIORITY ) + :"=r" (ulNewBASEPRI) : "i" ( configMAX_SYSCALL_INTERRUPT_PRIORITY ) : "memory" ); } @@ -253,11 +213,11 @@ uint32_t ulOriginalBASEPRI, ulNewBASEPRI; __asm volatile ( " mrs %0, basepri \n" \ - " mov %1, %2 \n" \ + " mov %1, %2 \n" \ " msr basepri, %1 \n" \ " isb \n" \ " dsb \n" \ - :"=r" (ulOriginalBASEPRI), "=r" (ulNewBASEPRI) : "i" ( configMAX_SYSCALL_INTERRUPT_PRIORITY ) + :"=r" (ulOriginalBASEPRI), "=r" (ulNewBASEPRI) : "i" ( configMAX_SYSCALL_INTERRUPT_PRIORITY ) : "memory" ); /* This return will not be reached but is necessary to prevent compiler @@ -270,11 +230,12 @@ portFORCE_INLINE static void vPortSetBASEPRI( uint32_t ulNewMaskValue ) { __asm volatile ( - " msr basepri, %0 " :: "r" ( ulNewMaskValue ) + " msr basepri, %0 " :: "r" ( ulNewMaskValue ) : "memory" ); } /*-----------------------------------------------------------*/ +#define portMEMORY_BARRIER() __asm volatile( "" ::: "memory" ) #ifdef __cplusplus } From 780f1f35ca47f2ba6b92e2fdd078ef0b81d550d9 Mon Sep 17 00:00:00 2001 From: Paul Fertser Date: Mon, 15 Jun 2020 14:48:51 +0300 Subject: [PATCH 05/32] Make flash and bootloader sizes configurable This patch makes allocating special pages automatic and flexible, allowing flash size and application start offset specification with linker command line arguments. It should allow easier porting to different targets and experimentation without adding code complexity. Many original STM32F103x8 chips have fully functional 128 kiB flash and so this additional space might come useful for experimentation, additional optional features etc. Tested on v2.51A board, including writing and verifying 128 kiB of random data. Make variables are added to control that, so to build for the full undocumented flash size and dapboot configured to start the app from 8 kiB offset one can run: make flash_size=128k bootldr_size=0x2000 --- workspace/TS100/Core/BSP/Miniware/flash.c | 15 ++++----- workspace/TS100/Core/BSP/Miniware/logo.cpp | 8 ++--- .../Core/BSP/Miniware/system_stm32f1xx.c | 11 +++---- workspace/TS100/Core/Src/Settings.cpp | 4 +-- workspace/TS100/LinkerScript.ld | 31 ++++++++++++------- workspace/TS100/Makefile | 6 +++- 6 files changed, 40 insertions(+), 35 deletions(-) diff --git a/workspace/TS100/Core/BSP/Miniware/flash.c b/workspace/TS100/Core/BSP/Miniware/flash.c index 26432da8..05f2b3d0 100644 --- a/workspace/TS100/Core/BSP/Miniware/flash.c +++ b/workspace/TS100/Core/BSP/Miniware/flash.c @@ -9,15 +9,15 @@ #include "BSP.h" #include "string.h" #include "stm32f1xx_hal.h" -/*Flash start OR'ed with the maximum amount of flash - 1024 bytes*/ -/*We use the last 1024 byte page*/ -#define FLASH_ADDR (0x8000000 |0xFC00) + +static uint16_t settings_page[512] __attribute__ ((section (".settings_page"))); + uint8_t flash_save_buffer(const uint8_t *buffer, const uint16_t length) { FLASH_EraseInitTypeDef pEraseInit; pEraseInit.TypeErase = FLASH_TYPEERASE_PAGES; pEraseInit.Banks = FLASH_BANK_1; pEraseInit.NbPages = 1; - pEraseInit.PageAddress = FLASH_ADDR; + pEraseInit.PageAddress = (uint32_t)settings_page; uint32_t failingAddress = 0; resetWatchdog(); __HAL_FLASH_CLEAR_FLAG( @@ -33,7 +33,7 @@ uint8_t flash_save_buffer(const uint8_t *buffer, const uint16_t length) { HAL_FLASH_Unlock(); for (uint8_t i = 0; i < (length / 2); i++) { resetWatchdog(); - HAL_FLASH_Program(FLASH_TYPEPROGRAM_HALFWORD, FLASH_ADDR + (i * 2), + HAL_FLASH_Program(FLASH_TYPEPROGRAM_HALFWORD, (uint32_t)&settings_page[i], data[i]); } HAL_FLASH_Lock(); @@ -42,8 +42,5 @@ uint8_t flash_save_buffer(const uint8_t *buffer, const uint16_t length) { void flash_read_buffer(uint8_t *buffer, const uint16_t length) { - uint16_t *data = (uint16_t*) buffer; - for (uint8_t i = 0; i < (length / 2); i++) { - data[i] = *((uint16_t*) (FLASH_ADDR + (i * 2))); - } + memcpy(buffer, settings_page, length); } diff --git a/workspace/TS100/Core/BSP/Miniware/logo.cpp b/workspace/TS100/Core/BSP/Miniware/logo.cpp index f71df93d..b0ad3cb4 100644 --- a/workspace/TS100/Core/BSP/Miniware/logo.cpp +++ b/workspace/TS100/Core/BSP/Miniware/logo.cpp @@ -7,8 +7,8 @@ #include "BSP.h" #include "OLED.hpp" -// Second last page of flash set aside for logo image. -#define FLASH_LOGOADDR (0x8000000 | 0xF800) + +static uint8_t logo_page[1024] __attribute__ ((section (".logo_page"))); // Logo header signature. #define LOGO_HEADER_VALUE 0xF00DAA55 @@ -16,11 +16,11 @@ uint8_t showBootLogoIfavailable() { // Do not show logo data if signature is not found. if (LOGO_HEADER_VALUE - != *(reinterpret_cast(FLASH_LOGOADDR))) { + != *(reinterpret_cast(logo_page))) { return 0; } - OLED::drawAreaSwapped(0, 0, 96, 16, (uint8_t*) (FLASH_LOGOADDR + 4)); + OLED::drawAreaSwapped(0, 0, 96, 16, (uint8_t*) (logo_page + 4)); OLED::refresh(); return 1; } diff --git a/workspace/TS100/Core/BSP/Miniware/system_stm32f1xx.c b/workspace/TS100/Core/BSP/Miniware/system_stm32f1xx.c index fabf4234..5c5c0297 100644 --- a/workspace/TS100/Core/BSP/Miniware/system_stm32f1xx.c +++ b/workspace/TS100/Core/BSP/Miniware/system_stm32f1xx.c @@ -11,16 +11,13 @@ #if defined(STM32F100xE) || defined(STM32F101xE) || defined(STM32F101xG) || defined(STM32F103xE) || defined(STM32F103xG) /* #define DATA_IN_ExtSRAM */ #endif /* STM32F100xE || STM32F101xE || STM32F101xG || STM32F103xE || STM32F103xG */ -//#define LOCAL_BUILD -#ifndef LOCAL_BUILD + +#ifndef VECT_TAB_OFFSET #define VECT_TAB_OFFSET 0x00004000U /*!< Vector Table base offset field. This value must be a multiple of 0x200. */ -#else -#define VECT_TAB_OFFSET 0x00000000U /*!< Vector Table base offset field. - This value must be a multiple of 0x200. */ -#warning LOCAL_BUILD SETUP - #endif //We offset this by 0x4000 to because of the bootloader +#endif + /******************************************************************************* * Clock Definitions *******************************************************************************/ diff --git a/workspace/TS100/Core/Src/Settings.cpp b/workspace/TS100/Core/Src/Settings.cpp index 716d7c9c..3fe8a2ad 100644 --- a/workspace/TS100/Core/Src/Settings.cpp +++ b/workspace/TS100/Core/Src/Settings.cpp @@ -12,9 +12,7 @@ #include "Setup.h" #include "../../configuration.h" #include "BSP.h" -#define FLASH_ADDR \ - (0x8000000 | \ - 0xFC00) /*Flash start OR'ed with the maximum amount of flash - 1024 bytes*/ + #include "string.h" volatile systemSettingsType systemSettings; diff --git a/workspace/TS100/LinkerScript.ld b/workspace/TS100/LinkerScript.ld index 75be14f8..a3a5a942 100644 --- a/workspace/TS100/LinkerScript.ld +++ b/workspace/TS100/LinkerScript.ld @@ -9,17 +9,15 @@ _estack = 0x20005000; /* end of RAM */ _Min_Heap_Size = 0x300; /* required amount of heap */ _Min_Stack_Size = 1024; /* required amount of stack */ +__APP_BASE_ADDRESS__ = 0x08000000 + __BOOTLDR_SIZE__; +__ROM_REGION_LENGTH__ = __FLASH_SIZE__ - __BOOTLDR_SIZE__; +__FLASH_END_ADDR__ = __APP_BASE_ADDRESS__ + __ROM_REGION_LENGTH__; + /* Memories definition */ MEMORY { RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 20K - /* LOCAL_BUILD*/ -/*ROM (rx) : ORIGIN = 0x08000000, LENGTH = 48K*/ - /* production*/ - ROM (rx) : ORIGIN = 0x08004000, LENGTH = 46K - - - + ROM (rx) : ORIGIN = __APP_BASE_ADDRESS__, LENGTH = __ROM_REGION_LENGTH__ } /* ROM is normally 48K after the bootloader, however we allocate the last page for settings, and the second last one for display boot logo*/ @@ -118,11 +116,22 @@ SECTIONS _edata = .; /* define a global symbol at data end */ } >RAM AT> ROM - - /* Uninitialized data section into RAM memory */ - . = ALIGN(4); + .logo_page (NOLOAD) : + { + . = ABSOLUTE(__FLASH_END_ADDR__ - 2048); + KEEP (*(.logo_page*)) + } > ROM + + .settings_page (NOLOAD) : + { + . = ABSOLUTE(__FLASH_END_ADDR__ - 1024); + KEEP (*(.settings_page*)) + } > ROM + .bss : { + /* Uninitialized data section into RAM memory */ + . = ALIGN(4); /* This is used by the startup in order to initialize the .bss secion */ _sbss = .; /* define a global symbol at bss start */ __bss_start__ = _sbss; @@ -157,4 +166,4 @@ SECTIONS } .ARM.attributes 0 : { *(.ARM.attributes) } -} \ No newline at end of file +} diff --git a/workspace/TS100/Makefile b/workspace/TS100/Makefile index ba6ba490..222aea12 100644 --- a/workspace/TS100/Makefile +++ b/workspace/TS100/Makefile @@ -49,9 +49,11 @@ OUTPUT_DIR=Objects # code optimisation ------------------------------------------------------------ OPTIM=-Os -flto -ffat-lto-objects -finline-small-functions -findirect-inlining -fdiagnostics-color -ffunction-sections -fdata-sections +flash_size=64k +bootldr_size=0x4000 # global defines --------------------------------------------------------------- -GLOBAL_DEFINES += -D STM32F103T8Ux -D STM32F1 -D STM32 -D USE_HAL_DRIVER -D STM32F103xB -D USE_RTOS_SYSTICK -D LANG_$(lang) -D LANG -D MODEL_$(model) +GLOBAL_DEFINES += -D STM32F103T8Ux -D STM32F1 -D STM32 -D USE_HAL_DRIVER -D STM32F103xB -D USE_RTOS_SYSTICK -D LANG_$(lang) -D LANG -D MODEL_$(model) -DVECT_TAB_OFFSET=$(bootldr_size)U # Enable debug code generation DEBUG=-g3 @@ -93,6 +95,8 @@ LINKER_FLAGS=-Wl,--gc-sections \ -mthumb \ -mfloat-abi=soft \ -lm -Os -flto -Wl,--undefined=vTaskSwitchContext \ + -Wl,--defsym=__FLASH_SIZE__=$(flash_size) \ + -Wl,--defsym=__BOOTLDR_SIZE__=$(bootldr_size) \ --specs=nano.specs # compiler flags --------------------------------------------------------------- From c1dd88ba532bdc87d73eb82cd926a5cfc7848787 Mon Sep 17 00:00:00 2001 From: Paul Fertser Date: Mon, 15 Jun 2020 15:22:52 +0300 Subject: [PATCH 06/32] Allow SWD debugging when built with swd_enable=1 --- workspace/TS100/Core/BSP/Miniware/Setup.c | 24 +++++++++++++++++------ workspace/TS100/Makefile | 4 ++++ 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/workspace/TS100/Core/BSP/Miniware/Setup.c b/workspace/TS100/Core/BSP/Miniware/Setup.c index 2d7f2c15..9f50feec 100644 --- a/workspace/TS100/Core/BSP/Miniware/Setup.c +++ b/workspace/TS100/Core/BSP/Miniware/Setup.c @@ -33,9 +33,13 @@ static void MX_ADC2_Init(void); void Setup_HAL() { SystemClock_Config(); - __HAL_AFIO_REMAP_SWJ_DISABLE() - ; -// __HAL_AFIO_REMAP_SWJ_NOJTAG(); + +#ifndef SWD_ENABLE + __HAL_AFIO_REMAP_SWJ_DISABLE(); +#else + __HAL_AFIO_REMAP_SWJ_NOJTAG(); +#endif + MX_GPIO_Init(); MX_DMA_Init(); MX_I2C1_Init(); @@ -244,7 +248,7 @@ static void MX_IWDG_Init(void) { hiwdg.Instance = IWDG; hiwdg.Init.Prescaler = IWDG_PRESCALER_256; hiwdg.Init.Reload = 100; -#ifndef LOCAL_BUILD +#ifndef SWD_ENABLE HAL_IWDG_Init(&hiwdg); #endif } @@ -425,8 +429,10 @@ static void MX_GPIO_Init(void) { HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); #ifdef MODEL_TS100 - /* Pull USB lines low to disable, pull down debug too*/ - GPIO_InitStruct.Pin = GPIO_PIN_11 | GPIO_PIN_12 | GPIO_PIN_14 | GPIO_PIN_13; +#ifndef SWD_ENABLE + /* Pull USB and SWD lines low to prevent enumeration attempts and EMI affecting + * the debug core */ + GPIO_InitStruct.Pin = GPIO_PIN_11 | GPIO_PIN_12 | GPIO_PIN_13 | GPIO_PIN_14; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); @@ -434,6 +440,12 @@ static void MX_GPIO_Init(void) { HAL_GPIO_WritePin(GPIOA, GPIO_PIN_12, GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOA, GPIO_PIN_13, GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOA, GPIO_PIN_14, GPIO_PIN_RESET); +#else + /* Make all lines affecting SWD floating to allow debugging */ + GPIO_InitStruct.Pin = GPIO_PIN_11 | GPIO_PIN_12 | GPIO_PIN_14 | GPIO_PIN_13; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); +#endif #else /* TS80 */ /* Leave USB lines open circuit*/ diff --git a/workspace/TS100/Makefile b/workspace/TS100/Makefile index 222aea12..1d4af101 100644 --- a/workspace/TS100/Makefile +++ b/workspace/TS100/Makefile @@ -55,6 +55,10 @@ bootldr_size=0x4000 # global defines --------------------------------------------------------------- GLOBAL_DEFINES += -D STM32F103T8Ux -D STM32F1 -D STM32 -D USE_HAL_DRIVER -D STM32F103xB -D USE_RTOS_SYSTICK -D LANG_$(lang) -D LANG -D MODEL_$(model) -DVECT_TAB_OFFSET=$(bootldr_size)U +ifdef swd_enable + GLOBAL_DEFINES += -DSWD_ENABLE +endif + # Enable debug code generation DEBUG=-g3 # Without debug code From 25aee6b661ea239cd9a0b7e92fefc4429e780cd6 Mon Sep 17 00:00:00 2001 From: Paul Fertser Date: Mon, 15 Jun 2020 15:46:42 +0300 Subject: [PATCH 07/32] Move I2CSemaphore creation outside postRToSInit The code assumes that whenever scheduler is running I2CSemaphore is available. Initialising it in a task might lead to race conditions and is also not happening at all if the task is disabled (for debugging or due to lack of need for a particular usecase). The race condition can't happen with the current code though, as GUI task has lower priority than the MOV task, and they're the only tasks that currently use I2C. However, this might change in the future with the code refactoring or introduction of new features. --- workspace/TS100/Core/BSP/Miniware/postRTOS.cpp | 4 ++-- workspace/TS100/Core/Src/main.cpp | 3 +++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/workspace/TS100/Core/BSP/Miniware/postRTOS.cpp b/workspace/TS100/Core/BSP/Miniware/postRTOS.cpp index fa55ab11..e8a78a1d 100644 --- a/workspace/TS100/Core/BSP/Miniware/postRTOS.cpp +++ b/workspace/TS100/Core/BSP/Miniware/postRTOS.cpp @@ -9,9 +9,9 @@ #include "task.h" #include "I2C_Wrapper.hpp" #include "fusbpd.h" + +// Initialisation to be performed with scheduler active void postRToSInit() { - // Any after RTos setup - FRToSI2C::FRToSInit(); #ifdef POW_PD //Spawn all of the USB-C processors fusb302_start_processing(); diff --git a/workspace/TS100/Core/Src/main.cpp b/workspace/TS100/Core/Src/main.cpp index 89d2bc45..ed4e7637 100644 --- a/workspace/TS100/Core/Src/main.cpp +++ b/workspace/TS100/Core/Src/main.cpp @@ -85,6 +85,9 @@ int main(void) { resetWatchdog(); + /* Init the IPC objects */ + FRToSI2C::FRToSInit(); + /* Start scheduler */ osKernelStart(); /* We should never get here as control is now taken by the scheduler */ From b331032f30a7686743824cc59ae36464ac4555a4 Mon Sep 17 00:00:00 2001 From: Paul Fertser Date: Sat, 20 Jun 2020 20:19:18 +0300 Subject: [PATCH 08/32] Makefile: remove duplicated code generation options from LINKER_FLAGS LINKER_FLAGS already includes CPUFLAGS via CXXFLAGS (and that's the right way to have the correct options defined at a single place). --- workspace/TS100/Makefile | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/workspace/TS100/Makefile b/workspace/TS100/Makefile index 1d4af101..20c43f58 100644 --- a/workspace/TS100/Makefile +++ b/workspace/TS100/Makefile @@ -95,10 +95,7 @@ LINKER_FLAGS=-Wl,--gc-sections \ -Wl,--wrap=free \ -o$(OUT_HEXFILE).elf \ -Wl,-Map=$(OUT_HEXFILE).map \ - -mcpu=cortex-m3 \ - -mthumb \ - -mfloat-abi=soft \ - -lm -Os -flto -Wl,--undefined=vTaskSwitchContext \ + -lm -Wl,--undefined=vTaskSwitchContext \ -Wl,--defsym=__FLASH_SIZE__=$(flash_size) \ -Wl,--defsym=__BOOTLDR_SIZE__=$(bootldr_size) \ --specs=nano.specs From a64186d9a4d9496fdbd3612fbaf48ee71c7446c7 Mon Sep 17 00:00:00 2001 From: Paul Fertser Date: Fri, 28 Aug 2020 13:08:51 +0300 Subject: [PATCH 09/32] Fix key autorepeat timing This constant is in scheduler ticks so needs to be changed accordingly to keep the old timing. Fixes: e2c5e51fe19b2 --- workspace/TS100/Core/Inc/gui.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workspace/TS100/Core/Inc/gui.hpp b/workspace/TS100/Core/Inc/gui.hpp index 1b7827d3..57fb04a4 100644 --- a/workspace/TS100/Core/Inc/gui.hpp +++ b/workspace/TS100/Core/Inc/gui.hpp @@ -11,7 +11,7 @@ #include "Settings.h" #include "BSP.h" -#define PRESS_ACCEL_STEP 3 +#define PRESS_ACCEL_STEP 30 #define PRESS_ACCEL_INTERVAL_MIN 100 #define PRESS_ACCEL_INTERVAL_MAX 300 From 1d63a3d7bc19733994ff3632c56eea4efcdec32d Mon Sep 17 00:00:00 2001 From: Paul Fertser Date: Fri, 28 Aug 2020 13:11:47 +0300 Subject: [PATCH 10/32] Fix temp change long step MAX value There is no space on the screen to output 3 digits, and the corresponding display function assumes the value is less than 100. --- workspace/TS100/configuration.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workspace/TS100/configuration.h b/workspace/TS100/configuration.h index 57bdc23e..25e9ab7a 100644 --- a/workspace/TS100/configuration.h +++ b/workspace/TS100/configuration.h @@ -53,7 +53,7 @@ #define TEMP_CHANGE_SHORT_STEP 1 // Default temp change short step +1 #define TEMP_CHANGE_LONG_STEP 10 // Default temp change long step +10 #define TEMP_CHANGE_SHORT_STEP_MAX 50 // Temp change short step MAX value -#define TEMP_CHANGE_LONG_STEP_MAX 100 // Temp change long step MAX value +#define TEMP_CHANGE_LONG_STEP_MAX 90 // Temp change long step MAX value /* Power pulse for keeping power banks awake*/ #define POWER_PULSE_INCREMENT 1 From a2a23b575f7077294bd69ce76dcc212327a39d92 Mon Sep 17 00:00:00 2001 From: Paul Fertser Date: Sun, 21 Jun 2020 21:59:31 +0300 Subject: [PATCH 11/32] Pause for the last value in settings menus and blink the scroll thumb This radically slows down auto-incrementing (when the change button is kept pressed) of values when user reaches the maximum (last) allowed option. The scrollbar thumb is blinking to indicate to the user that the next keypress will wraparound (unless this value was already active prior to entering menu). Fixes #536. --- workspace/TS100/Core/Inc/gui.hpp | 10 +- workspace/TS100/Core/Src/gui.cpp | 332 +++++++++++++++++-------------- 2 files changed, 190 insertions(+), 152 deletions(-) diff --git a/workspace/TS100/Core/Inc/gui.hpp b/workspace/TS100/Core/Inc/gui.hpp index 57fb04a4..b199a376 100644 --- a/workspace/TS100/Core/Inc/gui.hpp +++ b/workspace/TS100/Core/Inc/gui.hpp @@ -19,16 +19,12 @@ //Declarations for all the methods for the settings menu (at end of this file) -//Wrapper for holding a function pointer -typedef struct state_func_t { - void (*func)(void); -} state_func; - //Struct for holding the function pointers and descriptions typedef struct { const char *description; - const state_func incrementHandler; - const state_func draw; + // return true if increment reached the maximum value + bool (* const incrementHandler)(void); + void (* const draw)(void); } menuitem; void enterSettingsMenu(); diff --git a/workspace/TS100/Core/Src/gui.cpp b/workspace/TS100/Core/Src/gui.cpp index eaf71811..ccfe0466 100644 --- a/workspace/TS100/Core/Src/gui.cpp +++ b/workspace/TS100/Core/Src/gui.cpp @@ -18,70 +18,70 @@ void gui_Menu(const menuitem *menu); #ifdef MODEL_TS100 -static void settings_setInputVRange(void); +static bool settings_setInputVRange(void); static void settings_displayInputVRange(void); #else -static void settings_setInputPRange(void); +static bool settings_setInputPRange(void); static void settings_displayInputPRange(void); #endif -static void settings_setSleepTemp(void); +static bool settings_setSleepTemp(void); static void settings_displaySleepTemp(void); -static void settings_setSleepTime(void); +static bool settings_setSleepTime(void); static void settings_displaySleepTime(void); -static void settings_setShutdownTime(void); +static bool settings_setShutdownTime(void); static void settings_displayShutdownTime(void); -static void settings_setSensitivity(void); +static bool settings_setSensitivity(void); static void settings_displaySensitivity(void); #ifdef ENABLED_FAHRENHEIT_SUPPORT -static void settings_setTempF(void); +static bool settings_setTempF(void); static void settings_displayTempF(void); #endif -static void settings_setAdvancedSolderingScreens(void); +static bool settings_setAdvancedSolderingScreens(void); static void settings_displayAdvancedSolderingScreens(void); -static void settings_setAdvancedIDLEScreens(void); +static bool settings_setAdvancedIDLEScreens(void); static void settings_displayAdvancedIDLEScreens(void); -static void settings_setScrollSpeed(void); +static bool settings_setScrollSpeed(void); static void settings_displayScrollSpeed(void); -static void settings_setPowerLimitEnable(void); +static bool settings_setPowerLimitEnable(void); static void settings_displayPowerLimitEnable(void); -static void settings_setPowerLimit(void); +static bool settings_setPowerLimit(void); static void settings_displayPowerLimit(void); -static void settings_setDisplayRotation(void); +static bool settings_setDisplayRotation(void); static void settings_displayDisplayRotation(void); -static void settings_setBoostModeEnabled(void); +static bool settings_setBoostModeEnabled(void); static void settings_displayBoostModeEnabled(void); -static void settings_setBoostTemp(void); +static bool settings_setBoostTemp(void); static void settings_displayBoostTemp(void); -static void settings_setAutomaticStartMode(void); +static bool settings_setAutomaticStartMode(void); static void settings_displayAutomaticStartMode(void); -static void settings_setCoolingBlinkEnabled(void); +static bool settings_setCoolingBlinkEnabled(void); static void settings_displayCoolingBlinkEnabled(void); -static void settings_setResetSettings(void); +static bool settings_setResetSettings(void); static void settings_displayResetSettings(void); -static void settings_setCalibrate(void); +static bool settings_setCalibrate(void); static void settings_displayCalibrate(void); -static void settings_setTipGain(void); +static bool settings_setTipGain(void); static void settings_displayTipGain(void); -static void settings_setCalibrateVIN(void); +static bool settings_setCalibrateVIN(void); static void settings_displayCalibrateVIN(void); static void settings_displayReverseButtonTempChangeEnabled(void); -static void settings_setReverseButtonTempChangeEnabled(void); +static bool settings_setReverseButtonTempChangeEnabled(void); static void settings_displayTempChangeShortStep(void); -static void settings_setTempChangeShortStep(void); +static bool settings_setTempChangeShortStep(void); static void settings_displayTempChangeLongStep(void); -static void settings_setTempChangeLongStep(void); +static bool settings_setTempChangeLongStep(void); static void settings_displayPowerPulse(void); -static void settings_setPowerPulse(void); +static bool settings_setPowerPulse(void); // Menu functions static void settings_displaySolderingMenu(void); -static void settings_enterSolderingMenu(void); +static bool settings_enterSolderingMenu(void); static void settings_displayPowerMenu(void); -static void settings_enterPowerMenu(void); +static bool settings_enterPowerMenu(void); static void settings_displayUIMenu(void); -static void settings_enterUIMenu(void); +static bool settings_enterUIMenu(void); static void settings_displayAdvancedMenu(void); -static void settings_enterAdvancedMenu(void); +static bool settings_enterAdvancedMenu(void); /* * Root Settings Menu * @@ -129,21 +129,21 @@ const menuitem rootSettingsMenu[] { * Exit */ #ifdef MODEL_TS100 - { (const char*) SettingsDescriptions[0], { settings_setInputVRange }, { - settings_displayInputVRange } }, /*Voltage input*/ + { (const char*) SettingsDescriptions[0], settings_setInputVRange, + settings_displayInputVRange }, /*Voltage input*/ #else - { (const char*) SettingsDescriptions[20], { settings_setInputPRange }, { - settings_displayInputPRange } }, /*Voltage input*/ + { (const char*) SettingsDescriptions[20], settings_setInputPRange, + settings_displayInputPRange }, /*Voltage input*/ #endif - { (const char*) NULL, { settings_enterSolderingMenu }, { - settings_displaySolderingMenu } }, /*Soldering*/ - { (const char*) NULL, { settings_enterPowerMenu }, { - settings_displayPowerMenu } }, /*Sleep Options Menu*/ - { (const char*) NULL, { settings_enterUIMenu }, - { settings_displayUIMenu } }, /*UI Menu*/ - { (const char*) NULL, { settings_enterAdvancedMenu }, { - settings_displayAdvancedMenu } }, /*Advanced Menu*/ - { NULL, { NULL }, { NULL } } // end of menu marker. DO NOT REMOVE + { (const char*) NULL, settings_enterSolderingMenu, + settings_displaySolderingMenu }, /*Soldering*/ + { (const char*) NULL, settings_enterPowerMenu, + settings_displayPowerMenu }, /*Sleep Options Menu*/ + { (const char*) NULL, settings_enterUIMenu, + settings_displayUIMenu }, /*UI Menu*/ + { (const char*) NULL, settings_enterAdvancedMenu, + settings_displayAdvancedMenu }, /*Advanced Menu*/ + { NULL, NULL , NULL } // end of menu marker. DO NOT REMOVE }; const menuitem solderingMenu[] = { @@ -154,17 +154,17 @@ const menuitem solderingMenu[] = { * Temp change short step * Temp change long step */ -{ (const char*) SettingsDescriptions[8], { settings_setBoostModeEnabled }, { - settings_displayBoostModeEnabled } }, /*Enable Boost*/ -{ (const char*) SettingsDescriptions[9], { settings_setBoostTemp }, { - settings_displayBoostTemp } }, /*Boost Temp*/ -{ (const char*) SettingsDescriptions[10], { settings_setAutomaticStartMode }, { - settings_displayAutomaticStartMode } }, /*Auto start*/ -{ (const char*) SettingsDescriptions[24], { settings_setTempChangeShortStep }, { - settings_displayTempChangeShortStep } }, /*Temp change short step*/ -{ (const char*) SettingsDescriptions[25], { settings_setTempChangeLongStep }, { - settings_displayTempChangeLongStep } }, /*Temp change long step*/ -{ NULL, { NULL }, { NULL } } // end of menu marker. DO NOT REMOVE +{ (const char*) SettingsDescriptions[8], settings_setBoostModeEnabled, + settings_displayBoostModeEnabled }, /*Enable Boost*/ +{ (const char*) SettingsDescriptions[9], settings_setBoostTemp, + settings_displayBoostTemp }, /*Boost Temp*/ +{ (const char*) SettingsDescriptions[10], settings_setAutomaticStartMode, + settings_displayAutomaticStartMode }, /*Auto start*/ +{ (const char*) SettingsDescriptions[24], settings_setTempChangeShortStep, + settings_displayTempChangeShortStep }, /*Temp change short step*/ +{ (const char*) SettingsDescriptions[25], settings_setTempChangeLongStep, + settings_displayTempChangeLongStep }, /*Temp change long step*/ +{ NULL, NULL, NULL } // end of menu marker. DO NOT REMOVE }; const menuitem UIMenu[] = { /* @@ -176,21 +176,21 @@ const menuitem UIMenu[] = { * Reverse Temp change buttons + - */ #ifdef ENABLED_FAHRENHEIT_SUPPORT - { (const char*) SettingsDescriptions[5], { settings_setTempF }, { - settings_displayTempF } }, /* Temperature units*/ + { (const char*) SettingsDescriptions[5], settings_setTempF, + settings_displayTempF }, /* Temperature units*/ #endif { (const char*) SettingsDescriptions[7], - { settings_setDisplayRotation }, { - settings_displayDisplayRotation } }, /*Display Rotation*/ - { (const char*) SettingsDescriptions[11], { - settings_setCoolingBlinkEnabled }, { - settings_displayCoolingBlinkEnabled } }, /*Cooling blink warning*/ - { (const char*) SettingsDescriptions[16], { settings_setScrollSpeed }, { - settings_displayScrollSpeed } }, /*Scroll Speed for descriptions*/ - { (const char*) SettingsDescriptions[23], { - settings_setReverseButtonTempChangeEnabled }, { - settings_displayReverseButtonTempChangeEnabled } }, /* Reverse Temp change buttons + - */ - { NULL, { NULL }, { NULL } } // end of menu marker. DO NOT REMOVE + settings_setDisplayRotation, + settings_displayDisplayRotation }, /*Display Rotation*/ + { (const char*) SettingsDescriptions[11], + settings_setCoolingBlinkEnabled, + settings_displayCoolingBlinkEnabled }, /*Cooling blink warning*/ + { (const char*) SettingsDescriptions[16], settings_setScrollSpeed, + settings_displayScrollSpeed }, /*Scroll Speed for descriptions*/ + { (const char*) SettingsDescriptions[23], + settings_setReverseButtonTempChangeEnabled, + settings_displayReverseButtonTempChangeEnabled }, /* Reverse Temp change buttons + - */ + { NULL, NULL, NULL } // end of menu marker. DO NOT REMOVE }; const menuitem PowerMenu[] = { /* @@ -199,15 +199,15 @@ const menuitem PowerMenu[] = { * Shutdown Time * Motion Sensitivity */ -{ (const char*) SettingsDescriptions[1], { settings_setSleepTemp }, { - settings_displaySleepTemp } }, /*Sleep Temp*/ -{ (const char*) SettingsDescriptions[2], { settings_setSleepTime }, { - settings_displaySleepTime } }, /*Sleep Time*/ -{ (const char*) SettingsDescriptions[3], { settings_setShutdownTime }, { - settings_displayShutdownTime } }, /*Shutdown Time*/ -{ (const char*) SettingsDescriptions[4], { settings_setSensitivity }, { - settings_displaySensitivity } }, /* Motion Sensitivity*/ -{ NULL, { NULL }, { NULL } } // end of menu marker. DO NOT REMOVE +{ (const char*) SettingsDescriptions[1], settings_setSleepTemp, + settings_displaySleepTemp }, /*Sleep Temp*/ +{ (const char*) SettingsDescriptions[2], settings_setSleepTime, + settings_displaySleepTime }, /*Sleep Time*/ +{ (const char*) SettingsDescriptions[3], settings_setShutdownTime, + settings_displayShutdownTime }, /*Shutdown Time*/ +{ (const char*) SettingsDescriptions[4], settings_setSensitivity, + settings_displaySensitivity }, /* Motion Sensitivity*/ +{ NULL, NULL, NULL } // end of menu marker. DO NOT REMOVE }; const menuitem advancedMenu[] = { @@ -221,26 +221,26 @@ const menuitem advancedMenu[] = { * Reset Settings * Power Pulse */ -{ (const char*) SettingsDescriptions[21], { settings_setPowerLimitEnable }, { - settings_displayPowerLimitEnable } }, /*Power limit enable*/ -{ (const char*) SettingsDescriptions[22], { settings_setPowerLimit }, { - settings_displayPowerLimit } }, /*Power limit*/ -{ (const char*) SettingsDescriptions[6], { settings_setAdvancedIDLEScreens }, { - settings_displayAdvancedIDLEScreens } }, /* Advanced idle screen*/ +{ (const char*) SettingsDescriptions[21], settings_setPowerLimitEnable, + settings_displayPowerLimitEnable }, /*Power limit enable*/ +{ (const char*) SettingsDescriptions[22], settings_setPowerLimit, + settings_displayPowerLimit }, /*Power limit*/ +{ (const char*) SettingsDescriptions[6], settings_setAdvancedIDLEScreens, + settings_displayAdvancedIDLEScreens }, /* Advanced idle screen*/ { (const char*) SettingsDescriptions[15], - { settings_setAdvancedSolderingScreens }, { - settings_displayAdvancedSolderingScreens } }, /* Advanced soldering screen*/ -{ (const char*) SettingsDescriptions[13], { settings_setResetSettings }, { - settings_displayResetSettings } }, /*Resets settings*/ -{ (const char*) SettingsDescriptions[12], { settings_setCalibrate }, { - settings_displayCalibrate } }, /*Calibrate tip*/ -{ (const char*) SettingsDescriptions[14], { settings_setCalibrateVIN }, { - settings_displayCalibrateVIN } }, /*Voltage input cal*/ -{ (const char*) SettingsDescriptions[26], { settings_setPowerPulse }, { - settings_displayPowerPulse } }, /*Power Pulse adjustment */ -{ (const char*) SettingsDescriptions[27], { settings_setTipGain }, { - settings_displayTipGain } }, /*TipGain*/ -{ NULL, { NULL }, { NULL } } // end of menu marker. DO NOT REMOVE + settings_setAdvancedSolderingScreens, + settings_displayAdvancedSolderingScreens }, /* Advanced soldering screen*/ +{ (const char*) SettingsDescriptions[13], settings_setResetSettings, + settings_displayResetSettings }, /*Resets settings*/ +{ (const char*) SettingsDescriptions[12], settings_setCalibrate, + settings_displayCalibrate }, /*Calibrate tip*/ +{ (const char*) SettingsDescriptions[14], settings_setCalibrateVIN, + settings_displayCalibrateVIN }, /*Voltage input cal*/ +{ (const char*) SettingsDescriptions[26], settings_setPowerPulse, + settings_displayPowerPulse }, /*Power Pulse adjustment */ +{ (const char*) SettingsDescriptions[27], settings_setTipGain, + settings_displayTipGain }, /*TipGain*/ +{ NULL, NULL, NULL } // end of menu marker. DO NOT REMOVE }; static void printShortDescriptionSingleLine(uint32_t shortDescIndex) { @@ -329,10 +329,11 @@ static int userConfirmation(const char *message) { return 0; } #ifdef MODEL_TS100 -static void settings_setInputVRange(void) { +static bool settings_setInputVRange(void) { systemSettings.cutoutSetting = (systemSettings.cutoutSetting + 1) % 5; if (systemSettings.cutoutSetting) systemSettings.powerLimitEnable = 0; // disable power limit if switching to a lipo power source + return systemSettings.cutoutSetting == 4; } static void settings_displayInputVRange(void) { @@ -346,8 +347,9 @@ static void settings_displayInputVRange(void) { } } #else -static void settings_setInputPRange(void) { +static bool settings_setInputPRange(void) { systemSettings.cutoutSetting = (systemSettings.cutoutSetting + 1) % 2; + return false; } static void settings_displayInputPRange(void) { @@ -370,19 +372,21 @@ static void settings_displayInputPRange(void) { } #endif -static void settings_setSleepTemp(void) { +static bool settings_setSleepTemp(void) { // If in C, 10 deg, if in F 20 deg #ifdef ENABLED_FAHRENHEIT_SUPPORT if (systemSettings.temperatureInF) { systemSettings.SleepTemp += 20; if (systemSettings.SleepTemp > 580) systemSettings.SleepTemp = 60; + return systemSettings.SleepTemp == 580; } else #endif { systemSettings.SleepTemp += 10; if (systemSettings.SleepTemp > 300) systemSettings.SleepTemp = 10; + return systemSettings.SleepTemp == 300; } } @@ -391,7 +395,7 @@ static void settings_displaySleepTemp(void) { OLED::printNumber(systemSettings.SleepTemp, 3); } -static void settings_setSleepTime(void) { +static bool settings_setSleepTime(void) { systemSettings.SleepTime++; // Go up 1 minute at a time if (systemSettings.SleepTime >= 16) { systemSettings.SleepTime = 0; // can't set time over 10 mins @@ -399,6 +403,7 @@ static void settings_setSleepTime(void) { // Remember that ^ is the time of no movement if (PCBVersion == 3) systemSettings.SleepTime = 0; // Disable sleep on no accel + return systemSettings.SleepTime == 15; } static void settings_displaySleepTime(void) { @@ -414,13 +419,14 @@ static void settings_displaySleepTime(void) { } } -static void settings_setShutdownTime(void) { +static bool settings_setShutdownTime(void) { systemSettings.ShutdownTime++; if (systemSettings.ShutdownTime > 60) { systemSettings.ShutdownTime = 0; // wrap to off } if (PCBVersion == 3) systemSettings.ShutdownTime = 0; // Disable shutdown on no accel + return systemSettings.ShutdownTime == 60; } static void settings_displayShutdownTime(void) { @@ -433,7 +439,7 @@ static void settings_displayShutdownTime(void) { } } #ifdef ENABLED_FAHRENHEIT_SUPPORT -static void settings_setTempF(void) { +static bool settings_setTempF(void) { systemSettings.temperatureInF = !systemSettings.temperatureInF; if (systemSettings.temperatureInF) { // Change sleep, boost and soldering temps to the F equiv @@ -457,6 +463,7 @@ static void settings_setTempF(void) { systemSettings.SolderingTemp *= 10; systemSettings.SleepTemp = systemSettings.SleepTemp / 10; systemSettings.SleepTemp *= 10; + return false; } static void settings_displayTempF(void) { @@ -466,9 +473,10 @@ static void settings_displayTempF(void) { } #endif -static void settings_setSensitivity(void) { +static bool settings_setSensitivity(void) { systemSettings.sensitivity++; systemSettings.sensitivity = systemSettings.sensitivity % 10; + return systemSettings.sensitivity == 9; } static void settings_displaySensitivity(void) { @@ -476,8 +484,9 @@ static void settings_displaySensitivity(void) { OLED::printNumber(systemSettings.sensitivity, 1, false); } -static void settings_setAdvancedSolderingScreens(void) { +static bool settings_setAdvancedSolderingScreens(void) { systemSettings.detailedSoldering = !systemSettings.detailedSoldering; + return false; } static void settings_displayAdvancedSolderingScreens(void) { @@ -486,8 +495,9 @@ static void settings_displayAdvancedSolderingScreens(void) { OLED::drawCheckbox(systemSettings.detailedSoldering); } -static void settings_setAdvancedIDLEScreens(void) { +static bool settings_setAdvancedIDLEScreens(void) { systemSettings.detailedIDLE = !systemSettings.detailedIDLE; + return false; } static void settings_displayAdvancedIDLEScreens(void) { @@ -496,8 +506,9 @@ static void settings_displayAdvancedIDLEScreens(void) { OLED::drawCheckbox(systemSettings.detailedIDLE); } -static void settings_setPowerLimitEnable(void) { +static bool settings_setPowerLimitEnable(void) { systemSettings.powerLimitEnable = !systemSettings.powerLimitEnable; + return false; } static void settings_displayPowerLimitEnable(void) { @@ -505,11 +516,11 @@ static void settings_displayPowerLimitEnable(void) { OLED::drawCheckbox(systemSettings.powerLimitEnable); } -static void settings_setPowerLimit(void) { - if (systemSettings.powerLimit >= MAX_POWER_LIMIT) +static bool settings_setPowerLimit(void) { + systemSettings.powerLimit += POWER_LIMIT_STEPS; + if (systemSettings.powerLimit > MAX_POWER_LIMIT) systemSettings.powerLimit = POWER_LIMIT_STEPS; - else - systemSettings.powerLimit += POWER_LIMIT_STEPS; + return systemSettings.powerLimit + POWER_LIMIT_STEPS > MAX_POWER_LIMIT; } static void settings_displayPowerLimit(void) { @@ -518,12 +529,14 @@ static void settings_displayPowerLimit(void) { OLED::print(SymbolWatts); } -static void settings_setScrollSpeed(void) { +static bool settings_setScrollSpeed(void) { if (systemSettings.descriptionScrollSpeed == 0) systemSettings.descriptionScrollSpeed = 1; else systemSettings.descriptionScrollSpeed = 0; + return false; } + static void settings_displayScrollSpeed(void) { printShortDescription(16, 7); OLED::print( @@ -531,7 +544,7 @@ static void settings_displayScrollSpeed(void) { SettingFastChar : SettingSlowChar); } -static void settings_setDisplayRotation(void) { +static bool settings_setDisplayRotation(void) { systemSettings.OrientationMode++; systemSettings.OrientationMode = systemSettings.OrientationMode % 3; switch (systemSettings.OrientationMode) { @@ -547,6 +560,7 @@ static void settings_setDisplayRotation(void) { default: break; } + return systemSettings.OrientationMode == 2; } static void settings_displayDisplayRotation(void) { @@ -568,8 +582,9 @@ static void settings_displayDisplayRotation(void) { } } -static void settings_setBoostModeEnabled(void) { +static bool settings_setBoostModeEnabled(void) { systemSettings.boostModeEnabled = !systemSettings.boostModeEnabled; + return false; } static void settings_displayBoostModeEnabled(void) { @@ -578,13 +593,14 @@ static void settings_displayBoostModeEnabled(void) { OLED::drawCheckbox(systemSettings.boostModeEnabled); } -static void settings_setBoostTemp(void) { +static bool settings_setBoostTemp(void) { #ifdef ENABLED_FAHRENHEIT_SUPPORT if (systemSettings.temperatureInF) { systemSettings.BoostTemp += 20; // Go up 20F at a time if (systemSettings.BoostTemp > 850) { - systemSettings.BoostTemp = 480; // loop back at 250 + systemSettings.BoostTemp = 480; } + return systemSettings.BoostTemp == 840; } else #endif { @@ -592,6 +608,7 @@ static void settings_setBoostTemp(void) { if (systemSettings.BoostTemp > 450) { systemSettings.BoostTemp = 250; // loop back at 250 } + return systemSettings.BoostTemp == 450; } } @@ -600,9 +617,10 @@ static void settings_displayBoostTemp(void) { OLED::printNumber(systemSettings.BoostTemp, 3); } -static void settings_setAutomaticStartMode(void) { +static bool settings_setAutomaticStartMode(void) { systemSettings.autoStartMode++; systemSettings.autoStartMode %= 4; + return systemSettings.autoStartMode == 3; } static void settings_displayAutomaticStartMode(void) { @@ -627,8 +645,9 @@ static void settings_displayAutomaticStartMode(void) { } } -static void settings_setCoolingBlinkEnabled(void) { +static bool settings_setCoolingBlinkEnabled(void) { systemSettings.coolingTempBlink = !systemSettings.coolingTempBlink; + return false; } static void settings_displayCoolingBlinkEnabled(void) { @@ -637,7 +656,7 @@ static void settings_displayCoolingBlinkEnabled(void) { OLED::drawCheckbox(systemSettings.coolingTempBlink); } -static void settings_setResetSettings(void) { +static bool settings_setResetSettings(void) { if (userConfirmation(SettingsResetWarning)) { resetSettings(); @@ -648,6 +667,7 @@ static void settings_setResetSettings(void) { waitForButtonPressOrTimeout(2000); // 2 second timeout } + return false; } static void settings_displayResetSettings(void) { @@ -686,20 +706,21 @@ static void setTipOffset() { //Provide the user the option to tune their own tip if custom is selected //If not only do single point tuning as per usual -static void settings_setCalibrate(void) { +static bool settings_setCalibrate(void) { if (userConfirmation(SettingsCalibrationWarning)) { // User confirmed // So we now perform the actual calculation setTipOffset(); } + return false; } static void settings_displayCalibrate(void) { printShortDescription(12, 5); } -static void settings_setCalibrateVIN(void) { +static bool settings_setCalibrateVIN(void) { // Jump to the voltage calibration subscreen OLED::setFont(0); OLED::clearScreen(); @@ -732,8 +753,7 @@ static void settings_setCalibrateVIN(void) { OLED::printNumber(systemSettings.voltageDiv, 3); OLED::refresh(); waitForButtonPressOrTimeout(1000); - return; - break; + return false; case BUTTON_NONE: default: break; @@ -757,9 +777,10 @@ static void settings_setCalibrateVIN(void) { } #endif } + return false; } -static void settings_setTipGain(void) { +static bool settings_setTipGain(void) { OLED::setFont(0); OLED::clearScreen(); @@ -783,8 +804,7 @@ static void settings_setTipGain(void) { case BUTTON_F_LONG: case BUTTON_B_LONG: saveSettings(); - return; - break; + return false; case BUTTON_NONE: default: break; @@ -800,15 +820,17 @@ static void settings_setTipGain(void) { systemSettings.TipGain = 300; } } + return false; } static void settings_displayTipGain(void) { printShortDescription(27, 5); } -static void settings_setReverseButtonTempChangeEnabled(void) { +static bool settings_setReverseButtonTempChangeEnabled(void) { systemSettings.ReverseButtonTempChangeEnabled = !systemSettings.ReverseButtonTempChangeEnabled; + return false; } static void settings_displayReverseButtonTempChangeEnabled(void) { @@ -816,32 +838,37 @@ static void settings_displayReverseButtonTempChangeEnabled(void) { OLED::drawCheckbox(systemSettings.ReverseButtonTempChangeEnabled); } -static void settings_setTempChangeShortStep(void) { +static bool settings_setTempChangeShortStep(void) { systemSettings.TempChangeShortStep += TEMP_CHANGE_SHORT_STEP; if (systemSettings.TempChangeShortStep > TEMP_CHANGE_SHORT_STEP_MAX) { systemSettings.TempChangeShortStep = TEMP_CHANGE_SHORT_STEP; // loop back at TEMP_CHANGE_SHORT_STEP_MAX } + return systemSettings.TempChangeShortStep == TEMP_CHANGE_SHORT_STEP_MAX; } + static void settings_displayTempChangeShortStep(void) { printShortDescription(24, 6); OLED::printNumber(systemSettings.TempChangeShortStep, 2); } -static void settings_setTempChangeLongStep(void) { +static bool settings_setTempChangeLongStep(void) { systemSettings.TempChangeLongStep += TEMP_CHANGE_LONG_STEP; if (systemSettings.TempChangeLongStep > TEMP_CHANGE_LONG_STEP_MAX) { systemSettings.TempChangeLongStep = TEMP_CHANGE_LONG_STEP; // loop back at TEMP_CHANGE_LONG_STEP_MAX } + return systemSettings.TempChangeLongStep == TEMP_CHANGE_LONG_STEP_MAX; } + static void settings_displayTempChangeLongStep(void) { printShortDescription(25, 6); OLED::printNumber(systemSettings.TempChangeLongStep, 2); } -static void settings_setPowerPulse(void) { +static bool settings_setPowerPulse(void) { systemSettings.KeepAwakePulse += POWER_PULSE_INCREMENT; systemSettings.KeepAwakePulse %= POWER_PULSE_MAX; + return systemSettings.KeepAwakePulse == POWER_PULSE_MAX - 1; } static void settings_displayPowerPulse(void) { printShortDescription(26, 5); @@ -873,26 +900,30 @@ static void settings_displayCalibrateVIN(void) { static void settings_displaySolderingMenu(void) { displayMenu(0); } -static void settings_enterSolderingMenu(void) { +static bool settings_enterSolderingMenu(void) { gui_Menu(solderingMenu); + return false; } static void settings_displayPowerMenu(void) { displayMenu(1); } -static void settings_enterPowerMenu(void) { +static bool settings_enterPowerMenu(void) { gui_Menu(PowerMenu); + return false; } static void settings_displayUIMenu(void) { displayMenu(2); } -static void settings_enterUIMenu(void) { +static bool settings_enterUIMenu(void) { gui_Menu(UIMenu); + return false; } static void settings_displayAdvancedMenu(void) { displayMenu(3); } -static void settings_enterAdvancedMenu(void) { +static bool settings_enterAdvancedMenu(void) { gui_Menu(advancedMenu); + return false; } void gui_Menu(const menuitem *menu) { @@ -908,13 +939,15 @@ void gui_Menu(const menuitem *menu) { static bool enterGUIMenu = true; enterGUIMenu = true; uint8_t scrollContentSize = 0; + bool scrollBlink = false; + bool lastValue = false; - for (uint8_t i = 0; menu[i].draw.func != NULL; i++) { + for (uint8_t i = 0; menu[i].draw != NULL; i++) { scrollContentSize += 1; } // Animated menu opening. - if (menu[currentScreen].draw.func != NULL) { + if (menu[currentScreen].draw != NULL) { // This menu is drawn in a secondary framebuffer. // Then we play a transition from the current primary // framebuffer to the new buffer. @@ -923,12 +956,12 @@ void gui_Menu(const menuitem *menu) { OLED::setFont(0); OLED::setCursor(0, 0); OLED::clearScreen(); - menu[currentScreen].draw.func(); + menu[currentScreen].draw(); OLED::useSecondaryFramebuffer(false); OLED::transitionSecondaryFramebuffer(true); } - while ((menu[currentScreen].draw.func != NULL) && earlyExit == false) { + while ((menu[currentScreen].draw != NULL) && earlyExit == false) { OLED::setFont(0); OLED::setCursor(0, 0); // If the user has hesitated for >=3 seconds, show the long text @@ -936,10 +969,13 @@ void gui_Menu(const menuitem *menu) { if ((xTaskGetTickCount() - lastButtonTime < 3000) || menu[currentScreen].description == NULL) { OLED::clearScreen(); - menu[currentScreen].draw.func(); + menu[currentScreen].draw(); uint8_t indicatorHeight = OLED_HEIGHT / scrollContentSize; uint8_t position = OLED_HEIGHT * currentScreen / scrollContentSize; - OLED::drawScrollIndicator(position, indicatorHeight); + if (lastValue) + scrollBlink = !scrollBlink; + if (!lastValue || !scrollBlink) + OLED::drawScrollIndicator(position, indicatorHeight); lastOffset = -1; lcdRefresh = true; } else { @@ -978,16 +1014,16 @@ void gui_Menu(const menuitem *menu) { case BUTTON_F_SHORT: // increment if (descriptionStart == 0) { - if (menu[currentScreen].incrementHandler.func != NULL) { + if (menu[currentScreen].incrementHandler != NULL) { enterGUIMenu = false; - menu[currentScreen].incrementHandler.func(); + lastValue = menu[currentScreen].incrementHandler(); if (enterGUIMenu) { OLED::useSecondaryFramebuffer(true); OLED::setFont(0); OLED::setCursor(0, 0); OLED::clearScreen(); - menu[currentScreen].draw.func(); + menu[currentScreen].draw(); OLED::useSecondaryFramebuffer(false); OLED::transitionSecondaryFramebuffer(false); } @@ -999,16 +1035,22 @@ void gui_Menu(const menuitem *menu) { descriptionStart = 0; break; case BUTTON_B_SHORT: - if (descriptionStart == 0) + if (descriptionStart == 0) { currentScreen++; - else + lastValue = false; + } else descriptionStart = 0; break; case BUTTON_F_LONG: - if (xTaskGetTickCount() - autoRepeatTimer + autoRepeatAcceleration > + if ((int)(xTaskGetTickCount() - autoRepeatTimer + autoRepeatAcceleration) > PRESS_ACCEL_INTERVAL_MAX) { - menu[currentScreen].incrementHandler.func(); - autoRepeatTimer = xTaskGetTickCount(); + if ((lastValue = menu[currentScreen].incrementHandler())) + autoRepeatTimer = 1000; + else + autoRepeatTimer = 0; + + autoRepeatTimer += xTaskGetTickCount(); + descriptionStart = 0; autoRepeatAcceleration += PRESS_ACCEL_STEP; From 3d3799d4143b213d7e5b455e2a8c2126582b7410 Mon Sep 17 00:00:00 2001 From: "Ben V. Brown" Date: Sat, 29 Aug 2020 14:38:56 +1000 Subject: [PATCH 12/32] Prepare v2.11 release --- workspace/TS100/Core/BSP/Miniware/postRTOS.cpp | 3 +++ workspace/TS100/Core/Src/main.cpp | 3 --- workspace/TS100/version.h | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/workspace/TS100/Core/BSP/Miniware/postRTOS.cpp b/workspace/TS100/Core/BSP/Miniware/postRTOS.cpp index e8a78a1d..c5f16b4c 100644 --- a/workspace/TS100/Core/BSP/Miniware/postRTOS.cpp +++ b/workspace/TS100/Core/BSP/Miniware/postRTOS.cpp @@ -12,6 +12,9 @@ // Initialisation to be performed with scheduler active void postRToSInit() { + + /* Init the IPC objects */ + FRToSI2C::FRToSInit(); #ifdef POW_PD //Spawn all of the USB-C processors fusb302_start_processing(); diff --git a/workspace/TS100/Core/Src/main.cpp b/workspace/TS100/Core/Src/main.cpp index ed4e7637..89d2bc45 100644 --- a/workspace/TS100/Core/Src/main.cpp +++ b/workspace/TS100/Core/Src/main.cpp @@ -85,9 +85,6 @@ int main(void) { resetWatchdog(); - /* Init the IPC objects */ - FRToSI2C::FRToSInit(); - /* Start scheduler */ osKernelStart(); /* We should never get here as control is now taken by the scheduler */ diff --git a/workspace/TS100/version.h b/workspace/TS100/version.h index 5d6e16b8..53518475 100644 --- a/workspace/TS100/version.h +++ b/workspace/TS100/version.h @@ -4,4 +4,4 @@ * i.e.: BUILD_VERSION = 'Rel. v2.08' --> Will generated to: 'v2.08.1a2b3c4' */ -#define BUILD_VERSION "v2.10" +#define BUILD_VERSION "v2.11" From 372f8e35654694b77e0c3e754e3e945a5fe23410 Mon Sep 17 00:00:00 2001 From: "Ben V. Brown" Date: Sat, 29 Aug 2020 14:39:46 +1000 Subject: [PATCH 13/32] Update Dockerfile --- Dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/Dockerfile b/Dockerfile index 7b9e0762..665a0622 100644 --- a/Dockerfile +++ b/Dockerfile @@ -10,6 +10,7 @@ RUN apt-get update && \ apt-get install -y \ make \ bzip2 \ + git \ python3 \ wget && \ apt-get clean From d9c05db05821843f6d0dcf0e9e09ef0e123d0d17 Mon Sep 17 00:00:00 2001 From: "Ben V. Brown" Date: Sat, 5 Sep 2020 20:04:07 +1000 Subject: [PATCH 14/32] I2C wrapper cleanup --- .../TS100/Core/BSP/Miniware/I2C_Wrapper.cpp | 132 +++++++----------- .../TS100/Core/BSP/Miniware/fusb302b.cpp | 10 +- workspace/TS100/Core/Drivers/I2CBB.cpp | 11 +- workspace/TS100/Core/Drivers/I2C_Wrapper.hpp | 12 +- 4 files changed, 63 insertions(+), 102 deletions(-) diff --git a/workspace/TS100/Core/BSP/Miniware/I2C_Wrapper.cpp b/workspace/TS100/Core/BSP/Miniware/I2C_Wrapper.cpp index 785e3b25..5eb60c81 100644 --- a/workspace/TS100/Core/BSP/Miniware/I2C_Wrapper.cpp +++ b/workspace/TS100/Core/BSP/Miniware/I2C_Wrapper.cpp @@ -7,8 +7,7 @@ #include #include "BSP.h" #include "Setup.h" -#define I2CUSESDMA -SemaphoreHandle_t FRToSI2C::I2CSemaphore; +SemaphoreHandle_t FRToSI2C::I2CSemaphore = nullptr; StaticSemaphore_t FRToSI2C::xSemaphoreBuffer; void FRToSI2C::CpltCallback() { @@ -21,45 +20,22 @@ void FRToSI2C::CpltCallback() { bool FRToSI2C::Mem_Read(uint16_t DevAddress, uint16_t MemAddress, uint8_t *pData, uint16_t Size) { - if (I2CSemaphore == NULL) { - // no RToS, run blocking code - HAL_I2C_Mem_Read(&hi2c1, DevAddress, MemAddress, I2C_MEMADD_SIZE_8BIT, - pData, Size, 5000); - return true; - } else { - // RToS is active, run threading - // Get the mutex so we can use the I2C port - // Wait up to 1 second for the mutex - if (xSemaphoreTake(I2CSemaphore, (TickType_t)500) == pdTRUE) { -#ifdef I2CUSESDMA - if (HAL_I2C_Mem_Read(&hi2c1, DevAddress, MemAddress, - I2C_MEMADD_SIZE_8BIT, pData, Size, 500) != HAL_OK) { + if (!lock()) + return false; + if (HAL_I2C_Mem_Read(&hi2c1, DevAddress, MemAddress, + I2C_MEMADD_SIZE_8BIT, pData, Size, 500) != HAL_OK) { - I2C_Unstick(); - xSemaphoreGive(I2CSemaphore); - return false; - } else { - xSemaphoreGive(I2CSemaphore); - return true; - } -#else - - if (HAL_I2C_Mem_Read(&hi2c1, DevAddress, MemAddress, I2C_MEMADD_SIZE_8BIT, pData, Size, - 5000)==HAL_OK){ - xSemaphoreGive(I2CSemaphore); - return true; - } - xSemaphoreGive(I2CSemaphore); - return false; -#endif - } else { - return false; - } + I2C_Unstick(); + unlock(); + return false; } + unlock(); + return true; + } -void FRToSI2C::I2C_RegisterWrite(uint8_t address, uint8_t reg, uint8_t data) { - Mem_Write(address, reg, &data, 1); +bool FRToSI2C::I2C_RegisterWrite(uint8_t address, uint8_t reg, uint8_t data) { + return Mem_Write(address, reg, &data, 1); } uint8_t FRToSI2C::I2C_RegisterRead(uint8_t add, uint8_t reg) { @@ -67,67 +43,55 @@ uint8_t FRToSI2C::I2C_RegisterRead(uint8_t add, uint8_t reg) { Mem_Read(add, reg, tx_data, 1); return tx_data[0]; } -void FRToSI2C::Mem_Write(uint16_t DevAddress, uint16_t MemAddress, +bool FRToSI2C::Mem_Write(uint16_t DevAddress, uint16_t MemAddress, uint8_t *pData, uint16_t Size) { - if (I2CSemaphore == NULL) { - // no RToS, run blocking code - HAL_I2C_Mem_Write(&hi2c1, DevAddress, MemAddress, I2C_MEMADD_SIZE_8BIT, - pData, Size, 5000); - } else { - // RToS is active, run threading - // Get the mutex so we can use the I2C port - // Wait up to 1 second for the mutex - if (xSemaphoreTake(I2CSemaphore, (TickType_t)500) == pdTRUE) { - if (HAL_I2C_Mem_Write(&hi2c1, DevAddress, MemAddress, - I2C_MEMADD_SIZE_8BIT, pData, Size, 500) != HAL_OK) { + if (!lock()) + return false; + if (HAL_I2C_Mem_Write(&hi2c1, DevAddress, MemAddress, + I2C_MEMADD_SIZE_8BIT, pData, Size, 500) != HAL_OK) { - I2C_Unstick(); - xSemaphoreGive(I2CSemaphore); - } - xSemaphoreGive(I2CSemaphore); - - } + I2C_Unstick(); + unlock(); + return false; } + unlock(); + return true; } -void FRToSI2C::Transmit(uint16_t DevAddress, uint8_t *pData, uint16_t Size) { - if (I2CSemaphore == NULL) { - // no RToS, run blocking code - HAL_I2C_Master_Transmit(&hi2c1, DevAddress, pData, Size, 5000); - } else { - // RToS is active, run threading - // Get the mutex so we can use the I2C port - // Wait up to 1 second for the mutex - if (xSemaphoreTake(I2CSemaphore, (TickType_t)50) == pdTRUE) { -#ifdef I2CUSESDMA - - if (HAL_I2C_Master_Transmit_DMA(&hi2c1, DevAddress, pData, Size) - != HAL_OK) { - - I2C_Unstick(); - xSemaphoreGive(I2CSemaphore); - - } -#else - HAL_I2C_Master_Transmit(&hi2c1, DevAddress, pData, Size, 5000); - xSemaphoreGive(I2CSemaphore); -#endif - - } else { - } +bool FRToSI2C::Transmit(uint16_t DevAddress, uint8_t *pData, uint16_t Size) { + if (!lock()) + return false; + if (HAL_I2C_Master_Transmit_DMA(&hi2c1, DevAddress, pData, Size) + != HAL_OK) { + I2C_Unstick(); + unlock(); + return false; } - + return true; } bool FRToSI2C::probe(uint16_t DevAddress) { + if (!lock()) + return false; uint8_t buffer[1]; - return HAL_I2C_Mem_Read(&hi2c1, DevAddress, 0x0F, I2C_MEMADD_SIZE_8BIT, - buffer, 1, 1000) == HAL_OK; - + bool worked = HAL_I2C_Mem_Read(&hi2c1, DevAddress, 0x0F, + I2C_MEMADD_SIZE_8BIT, buffer, 1, 1000) == HAL_OK; + unlock(); + return worked; } void FRToSI2C::I2C_Unstick() { unstick_I2C(); } + +void FRToSI2C::unlock() { + + xSemaphoreGive(I2CSemaphore); +} + +bool FRToSI2C::lock() { + + return xSemaphoreTake(I2CSemaphore, (TickType_t)50) == pdTRUE; +} diff --git a/workspace/TS100/Core/BSP/Miniware/fusb302b.cpp b/workspace/TS100/Core/BSP/Miniware/fusb302b.cpp index 9deb8c2f..7ccfc644 100644 --- a/workspace/TS100/Core/BSP/Miniware/fusb302b.cpp +++ b/workspace/TS100/Core/BSP/Miniware/fusb302b.cpp @@ -152,10 +152,8 @@ void fusb_setup() { HAL_NVIC_SetPriority(EXTI9_5_IRQn, 12, 0); HAL_NVIC_EnableIRQ(EXTI9_5_IRQn); - if (xTaskGetSchedulerState() != taskSCHEDULER_NOT_STARTED) { - if (!I2CBB::lock2()) { - return; - } + if (!I2CBB::lock2()) { + return; } /* Fully reset the FUSB302B */ fusb_write_byte( FUSB_RESET, FUSB_RESET_SW_RES); @@ -200,9 +198,7 @@ void fusb_setup() { fusb_write_byte( FUSB_SWITCHES1, 0x26); fusb_write_byte( FUSB_SWITCHES0, 0x0B); } - if (xTaskGetSchedulerState() != taskSCHEDULER_NOT_STARTED) { - I2CBB::unlock2(); - } + I2CBB::unlock2(); fusb_reset(); } diff --git a/workspace/TS100/Core/Drivers/I2CBB.cpp b/workspace/TS100/Core/Drivers/I2CBB.cpp index c21a3a97..200fecfe 100644 --- a/workspace/TS100/Core/Drivers/I2CBB.cpp +++ b/workspace/TS100/Core/Drivers/I2CBB.cpp @@ -17,28 +17,31 @@ void I2CBB::init() { GPIO_InitTypeDef GPIO_InitStruct; __HAL_RCC_GPIOA_CLK_ENABLE(); GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_MEDIUM; - GPIO_InitStruct.Pin = SDA2_Pin ; + GPIO_InitStruct.Pin = SDA2_Pin; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_OD; GPIO_InitStruct.Pull = GPIO_PULLUP; HAL_GPIO_Init(SDA2_GPIO_Port, &GPIO_InitStruct); GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_MEDIUM; - GPIO_InitStruct.Pin = SCL2_Pin; + GPIO_InitStruct.Pin = SCL2_Pin; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_OD; GPIO_InitStruct.Pull = GPIO_PULLUP; HAL_GPIO_Init(SCL2_GPIO_Port, &GPIO_InitStruct); SOFT_SDA_HIGH(); SOFT_SCL_HIGH(); - I2CSemaphore = xSemaphoreCreateMutexStatic (&xSemaphoreBuffer); - I2CSemaphore2 = xSemaphoreCreateMutexStatic (&xSemaphoreBuffer2); + I2CSemaphore = xSemaphoreCreateMutexStatic(&xSemaphoreBuffer); + I2CSemaphore2 = xSemaphoreCreateMutexStatic(&xSemaphoreBuffer2); unlock(); unlock2(); } bool I2CBB::probe(uint8_t address) { + if (!lock()) + return false; start(); bool ack = send(address); stop(); + unlock(); return ack; } diff --git a/workspace/TS100/Core/Drivers/I2C_Wrapper.hpp b/workspace/TS100/Core/Drivers/I2C_Wrapper.hpp index 779ddc20..f8981414 100644 --- a/workspace/TS100/Core/Drivers/I2C_Wrapper.hpp +++ b/workspace/TS100/Core/Drivers/I2C_Wrapper.hpp @@ -21,10 +21,6 @@ class FRToSI2C { public: - static void init() { - I2CSemaphore = nullptr; - } - static void FRToSInit() { I2CSemaphore = xSemaphoreCreateBinaryStatic(&xSemaphoreBuffer); xSemaphoreGive(I2CSemaphore); @@ -34,19 +30,21 @@ public: static bool Mem_Read(uint16_t DevAddress, uint16_t MemAddress, uint8_t *pData, uint16_t Size); - static void Mem_Write(uint16_t DevAddress, uint16_t MemAddress, + static bool Mem_Write(uint16_t DevAddress, uint16_t MemAddress, uint8_t *pData, uint16_t Size); //Returns true if device ACK's being addressed static bool probe(uint16_t DevAddress); - static void Transmit(uint16_t DevAddress, uint8_t *pData, uint16_t Size); + static bool Transmit(uint16_t DevAddress, uint8_t *pData, uint16_t Size); static void Receive(uint16_t DevAddress, uint8_t *pData, uint16_t Size); static void TransmitReceive(uint16_t DevAddress, uint8_t *pData_tx, uint16_t Size_tx, uint8_t *pData_rx, uint16_t Size_rx); - static void I2C_RegisterWrite(uint8_t address, uint8_t reg, uint8_t data); + static bool I2C_RegisterWrite(uint8_t address, uint8_t reg, uint8_t data); static uint8_t I2C_RegisterRead(uint8_t address, uint8_t reg); private: + static void unlock(); + static bool lock(); static void I2C_Unstick(); static SemaphoreHandle_t I2CSemaphore; static StaticSemaphore_t xSemaphoreBuffer; From d48b27928a43d9aee83831cec64c8877fe64f9d1 Mon Sep 17 00:00:00 2001 From: "Ben V. Brown" Date: Sat, 5 Sep 2020 20:10:10 +1000 Subject: [PATCH 15/32] Move I2C initalisations into more logical spots --- workspace/TS100/Core/BSP/Miniware/Setup.c | 2 +- workspace/TS100/Core/BSP/Miniware/flash.c | 2 +- .../TS100/Core/BSP/Miniware/fusb302b.cpp | 4 +-- .../TS100/Core/BSP/Miniware/postRTOS.cpp | 9 +++--- workspace/TS100/Core/BSP/Miniware/preRTOS.cpp | 8 ++--- .../TS100/Core/Drivers/FUSB302/fusbpd.cpp | 15 ++-------- .../TS100/Core/Drivers/FUSB302/int_n.cpp | 4 +-- workspace/TS100/Core/Src/main.cpp | 29 ------------------- workspace/TS100/Core/Threads/GUIThread.cpp | 1 + workspace/TS100/Core/Threads/MOVThread.cpp | 22 +++++++++++++- 10 files changed, 37 insertions(+), 59 deletions(-) diff --git a/workspace/TS100/Core/BSP/Miniware/Setup.c b/workspace/TS100/Core/BSP/Miniware/Setup.c index 9f50feec..fdaeb139 100644 --- a/workspace/TS100/Core/BSP/Miniware/Setup.c +++ b/workspace/TS100/Core/BSP/Miniware/Setup.c @@ -30,7 +30,7 @@ static void MX_TIM2_Init(void); static void MX_DMA_Init(void); static void MX_GPIO_Init(void); static void MX_ADC2_Init(void); - +#define SWD_ENABLE void Setup_HAL() { SystemClock_Config(); diff --git a/workspace/TS100/Core/BSP/Miniware/flash.c b/workspace/TS100/Core/BSP/Miniware/flash.c index 05f2b3d0..7559f23e 100644 --- a/workspace/TS100/Core/BSP/Miniware/flash.c +++ b/workspace/TS100/Core/BSP/Miniware/flash.c @@ -23,7 +23,7 @@ uint8_t flash_save_buffer(const uint8_t *buffer, const uint16_t length) { __HAL_FLASH_CLEAR_FLAG( FLASH_FLAG_EOP | FLASH_FLAG_WRPERR | FLASH_FLAG_PGERR | FLASH_FLAG_BSY); HAL_FLASH_Unlock(); - HAL_Delay(10); + HAL_Delay(1); resetWatchdog(); HAL_FLASHEx_Erase(&pEraseInit, &failingAddress); //^ Erase the page of flash (1024 bytes on this stm32) diff --git a/workspace/TS100/Core/BSP/Miniware/fusb302b.cpp b/workspace/TS100/Core/BSP/Miniware/fusb302b.cpp index 7ccfc644..d7d7416f 100644 --- a/workspace/TS100/Core/BSP/Miniware/fusb302b.cpp +++ b/workspace/TS100/Core/BSP/Miniware/fusb302b.cpp @@ -144,12 +144,12 @@ void fusb_send_hardrst() { void fusb_setup() { GPIO_InitTypeDef GPIO_InitStruct; - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_MEDIUM; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; GPIO_InitStruct.Pin = GPIO_PIN_9; GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING; GPIO_InitStruct.Pull = GPIO_PULLUP; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); - HAL_NVIC_SetPriority(EXTI9_5_IRQn, 12, 0); + HAL_NVIC_SetPriority(EXTI9_5_IRQn, 10, 0); HAL_NVIC_EnableIRQ(EXTI9_5_IRQn); if (!I2CBB::lock2()) { diff --git a/workspace/TS100/Core/BSP/Miniware/postRTOS.cpp b/workspace/TS100/Core/BSP/Miniware/postRTOS.cpp index c5f16b4c..d0743771 100644 --- a/workspace/TS100/Core/BSP/Miniware/postRTOS.cpp +++ b/workspace/TS100/Core/BSP/Miniware/postRTOS.cpp @@ -12,11 +12,10 @@ // Initialisation to be performed with scheduler active void postRToSInit() { - - /* Init the IPC objects */ - FRToSI2C::FRToSInit(); #ifdef POW_PD - //Spawn all of the USB-C processors - fusb302_start_processing(); + if (usb_pd_detect() == true) { + //Spawn all of the USB-C processors + fusb302_start_processing(); + } #endif } diff --git a/workspace/TS100/Core/BSP/Miniware/preRTOS.cpp b/workspace/TS100/Core/BSP/Miniware/preRTOS.cpp index 6b0614b9..67b04f49 100644 --- a/workspace/TS100/Core/BSP/Miniware/preRTOS.cpp +++ b/workspace/TS100/Core/BSP/Miniware/preRTOS.cpp @@ -17,13 +17,9 @@ void preRToSInit() { */ HAL_Init(); Setup_HAL(); // Setup all the HAL objects - FRToSI2C::init(); - HAL_Delay(50); - HAL_GPIO_WritePin(OLED_RESET_GPIO_Port, OLED_RESET_Pin, GPIO_PIN_SET); - HAL_Delay(50); #ifdef I2C_SOFT I2CBB::init(); - #endif - + /* Init the IPC objects */ + FRToSI2C::FRToSInit(); } diff --git a/workspace/TS100/Core/Drivers/FUSB302/fusbpd.cpp b/workspace/TS100/Core/Drivers/FUSB302/fusbpd.cpp index f6bb58e1..b48c42fa 100644 --- a/workspace/TS100/Core/Drivers/FUSB302/fusbpd.cpp +++ b/workspace/TS100/Core/Drivers/FUSB302/fusbpd.cpp @@ -17,22 +17,13 @@ #include "int_n.h" #include "hard_reset.h" - - void fusb302_start_processing() { /* Initialize the FUSB302B */ - resetWatchdog(); fusb_setup(); - resetWatchdog(); - /* Create the policy engine thread. */ - PolicyEngine::init(); - - /* Create the protocol layer threads. */ - ProtocolReceive::init(); - ProtocolTransmit::init(); ResetHandler::init(); - resetWatchdog(); - /* Create the INT_N thread. */ + PolicyEngine::init(); + ProtocolTransmit::init(); + ProtocolReceive::init(); InterruptHandler::init(); } #endif diff --git a/workspace/TS100/Core/Drivers/FUSB302/int_n.cpp b/workspace/TS100/Core/Drivers/FUSB302/int_n.cpp index 52d7701b..1206928e 100644 --- a/workspace/TS100/Core/Drivers/FUSB302/int_n.cpp +++ b/workspace/TS100/Core/Drivers/FUSB302/int_n.cpp @@ -28,7 +28,7 @@ #include "task.h" #include "BSP.h" -osThreadId InterruptHandler::TaskHandle=NULL; +osThreadId InterruptHandler::TaskHandle = NULL; uint32_t InterruptHandler::TaskBuffer[InterruptHandler::TaskStackSize]; osStaticThreadDef_t InterruptHandler::TaskControlBlock; @@ -41,7 +41,7 @@ void InterruptHandler::init() { void InterruptHandler::Thread(const void *arg) { (void) arg; union fusb_status status; - volatile uint32_t events; + uint32_t events; bool notifSent = false; while (true) { /* If the INT_N line is low */ diff --git a/workspace/TS100/Core/Src/main.cpp b/workspace/TS100/Core/Src/main.cpp index 89d2bc45..9c9da2dc 100644 --- a/workspace/TS100/Core/Src/main.cpp +++ b/workspace/TS100/Core/Src/main.cpp @@ -12,8 +12,6 @@ #include "Settings.h" #include "cmsis_os.h" uint8_t PCBVersion = 0; -// File local variables -bool usb_pd_available = false; bool settingsWereReset = false; // FreeRTOS variables @@ -32,44 +30,17 @@ uint32_t MOVTaskBuffer[MOVTaskStackSize]; osStaticThreadDef_t MOVTaskControlBlock; // End FreeRTOS - // Main sets up the hardware then hands over to the FreeRTOS kernel int main(void) { preRToSInit(); - setTipX10Watts(0); // force tip off resetWatchdog(); - OLED::initialize(); // start up the LCD OLED::setFont(0); // default to bigger font // Testing for which accelerometer is mounted - resetWatchdog(); - usb_pd_available = usb_pd_detect(); - resetWatchdog(); settingsWereReset = restoreSettings(); // load the settings from flash -#ifdef ACCEL_MMA - if (MMA8652FC::detect()) { - PCBVersion = 1; - MMA8652FC::initalize(); // this sets up the I2C registers - } else -#endif -#ifdef ACCEL_LIS - if (LIS2DH12::detect()) { - PCBVersion = 2; - // Setup the ST Accelerometer - LIS2DH12::initalize(); // startup the accelerometer - } else -#endif - { - PCBVersion = 3; - systemSettings.SleepTime = 0; - systemSettings.ShutdownTime = 0; // No accel -> disable sleep - systemSettings.sensitivity = 0; - } resetWatchdog(); - /* Create the thread(s) */ /* definition and creation of GUITask */ - osThreadStaticDef(GUITask, startGUITask, osPriorityBelowNormal, 0, GUITaskStackSize, GUITaskBuffer, &GUITaskControlBlock); GUITaskHandle = osThreadCreate(osThread(GUITask), NULL); diff --git a/workspace/TS100/Core/Threads/GUIThread.cpp b/workspace/TS100/Core/Threads/GUIThread.cpp index afeceeeb..77a22f9d 100644 --- a/workspace/TS100/Core/Threads/GUIThread.cpp +++ b/workspace/TS100/Core/Threads/GUIThread.cpp @@ -632,6 +632,7 @@ void showDebugMenu(void) { uint8_t idleScreenBGF[sizeof(idleScreenBG)]; /* StartGUITask function */ void startGUITask(void const *argument __unused) { + OLED::initialize(); // start up the LCD uint8_t tempWarningState = 0; bool buttonLockout = false; diff --git a/workspace/TS100/Core/Threads/MOVThread.cpp b/workspace/TS100/Core/Threads/MOVThread.cpp index 4ca5e54b..4ef12c21 100644 --- a/workspace/TS100/Core/Threads/MOVThread.cpp +++ b/workspace/TS100/Core/Threads/MOVThread.cpp @@ -23,8 +23,28 @@ uint8_t accelInit = 0; uint32_t lastMovementTime = 0; void startMOVTask(void const *argument __unused) { - OLED::setRotation(systemSettings.OrientationMode & 1); +#ifdef ACCEL_MMA + if (MMA8652FC::detect()) { + PCBVersion = 1; + MMA8652FC::initalize(); // this sets up the I2C registers + } else +#endif +#ifdef ACCEL_LIS + if (LIS2DH12::detect()) { + PCBVersion = 2; + // Setup the ST Accelerometer + LIS2DH12::initalize(); // startup the accelerometer + } else +#endif + { + PCBVersion = 3; + systemSettings.SleepTime = 0; + systemSettings.ShutdownTime = 0; // No accel -> disable sleep + systemSettings.sensitivity = 0; + } postRToSInit(); + OLED::setRotation(systemSettings.OrientationMode & 1); + lastMovementTime = 0; int16_t datax[MOVFilter] = { 0 }; int16_t datay[MOVFilter] = { 0 }; From 11e583be63a164b11d582d730c0721bd15bfbd1f Mon Sep 17 00:00:00 2001 From: "Ben V. Brown" Date: Sat, 5 Sep 2020 20:19:03 +1000 Subject: [PATCH 16/32] Fix interrupt race --- .../TS100/Core/BSP/Miniware/fusb302b.cpp | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/workspace/TS100/Core/BSP/Miniware/fusb302b.cpp b/workspace/TS100/Core/BSP/Miniware/fusb302b.cpp index d7d7416f..ac1c5e83 100644 --- a/workspace/TS100/Core/BSP/Miniware/fusb302b.cpp +++ b/workspace/TS100/Core/BSP/Miniware/fusb302b.cpp @@ -143,21 +143,13 @@ void fusb_send_hardrst() { } void fusb_setup() { - GPIO_InitTypeDef GPIO_InitStruct; - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; - GPIO_InitStruct.Pin = GPIO_PIN_9; - GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING; - GPIO_InitStruct.Pull = GPIO_PULLUP; - HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); - HAL_NVIC_SetPriority(EXTI9_5_IRQn, 10, 0); - HAL_NVIC_EnableIRQ(EXTI9_5_IRQn); if (!I2CBB::lock2()) { return; } /* Fully reset the FUSB302B */ - fusb_write_byte( FUSB_RESET, FUSB_RESET_SW_RES); - osDelay(2); +// fusb_write_byte( FUSB_RESET, FUSB_RESET_SW_RES); +// osDelay(2); if (!fusb_read_id()) { return; } @@ -200,6 +192,14 @@ void fusb_setup() { } I2CBB::unlock2(); fusb_reset(); + GPIO_InitTypeDef GPIO_InitStruct; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; + GPIO_InitStruct.Pin = GPIO_PIN_9; + GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING; + GPIO_InitStruct.Pull = GPIO_PULLUP; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + HAL_NVIC_SetPriority(EXTI9_5_IRQn, 10, 0); + HAL_NVIC_EnableIRQ(EXTI9_5_IRQn); } void fusb_get_status(union fusb_status *status) { From 12cf20233836f2f0d4f85d6571e4a9613f7146fd Mon Sep 17 00:00:00 2001 From: "Ben V. Brown" Date: Sat, 5 Sep 2020 20:19:12 +1000 Subject: [PATCH 17/32] Remove reset handler --- .../TS100/Core/Drivers/FUSB302/fusbpd.cpp | 2 - .../TS100/Core/Drivers/FUSB302/hard_reset.cpp | 152 ------------------ .../TS100/Core/Drivers/FUSB302/hard_reset.h | 63 -------- .../TS100/Core/Drivers/FUSB302/int_n.cpp | 17 -- .../Core/Drivers/FUSB302/policy_engine.cpp | 11 +- 5 files changed, 2 insertions(+), 243 deletions(-) delete mode 100644 workspace/TS100/Core/Drivers/FUSB302/hard_reset.cpp delete mode 100644 workspace/TS100/Core/Drivers/FUSB302/hard_reset.h diff --git a/workspace/TS100/Core/Drivers/FUSB302/fusbpd.cpp b/workspace/TS100/Core/Drivers/FUSB302/fusbpd.cpp index b48c42fa..fb8c833c 100644 --- a/workspace/TS100/Core/Drivers/FUSB302/fusbpd.cpp +++ b/workspace/TS100/Core/Drivers/FUSB302/fusbpd.cpp @@ -15,12 +15,10 @@ #include "protocol_rx.h" #include "protocol_tx.h" #include "int_n.h" -#include "hard_reset.h" void fusb302_start_processing() { /* Initialize the FUSB302B */ fusb_setup(); - ResetHandler::init(); PolicyEngine::init(); ProtocolTransmit::init(); ProtocolReceive::init(); diff --git a/workspace/TS100/Core/Drivers/FUSB302/hard_reset.cpp b/workspace/TS100/Core/Drivers/FUSB302/hard_reset.cpp deleted file mode 100644 index 97ffdd71..00000000 --- a/workspace/TS100/Core/Drivers/FUSB302/hard_reset.cpp +++ /dev/null @@ -1,152 +0,0 @@ -/* - * PD Buddy Firmware Library - USB Power Delivery for everyone - * Copyright 2017-2018 Clayton G. Hobbs - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "hard_reset.h" -#include "fusbpd.h" -#include -#include "policy_engine.h" -#include "protocol_rx.h" -#include "protocol_tx.h" -#include "fusb302b.h" - -osThreadId ResetHandler::TaskHandle = NULL; -uint32_t ResetHandler::TaskBuffer[ResetHandler::TaskStackSize]; -osStaticThreadDef_t ResetHandler::TaskControlBlock; - -/* - * PRL_HR_Reset_Layer state - */ -ResetHandler::hardrst_state ResetHandler::hardrst_reset_layer() { - /* First, wait for the signal to run a hard reset. */ - eventmask_t evt = waitForEvent( - PDB_EVT_HARDRST_RESET | PDB_EVT_HARDRST_I_HARDRST); - if (evt & (PDB_EVT_HARDRST_RESET | PDB_EVT_HARDRST_I_HARDRST)) { - /* Reset the Protocol RX machine */ - ProtocolReceive::notify( PDB_EVT_PRLRX_RESET); - taskYIELD(); - /* Reset the Protocol TX machine */ - ProtocolTransmit::notify( - ProtocolTransmit::Notifications::PDB_EVT_PRLTX_RESET); - taskYIELD(); - /* Continue the process based on what event started the reset. */ - if (evt & PDB_EVT_HARDRST_RESET) { - /* Policy Engine started the reset. */ - return PRLHRRequestHardReset; - } else { - /* PHY started the reset */ - return PRLHRIndicateHardReset; - } - } else { - return PRLHRResetLayer; - } -} - -ResetHandler::hardrst_state ResetHandler::hardrst_indicate_hard_reset() { - /* Tell the PE that we're doing a hard reset */ - PolicyEngine::notify( PDB_EVT_PE_RESET); - - return PRLHRWaitPE; -} - -ResetHandler::hardrst_state ResetHandler::hardrst_request_hard_reset() { - /* Tell the PHY to send a hard reset */ - fusb_send_hardrst(); - - return PRLHRWaitPHY; -} - -ResetHandler::hardrst_state ResetHandler::hardrst_wait_phy() { - /* Wait for the PHY to tell us that it's done sending the hard reset */ - waitForEvent(PDB_EVT_HARDRST_I_HARDSENT, PD_T_HARD_RESET_COMPLETE); - - /* Move on no matter what made us stop waiting. */ - return PRLHRHardResetRequested; -} - -ResetHandler::hardrst_state ResetHandler::hardrst_hard_reset_requested() { - /* Tell the PE that the hard reset was sent */ - PolicyEngine::notify( PDB_EVT_PE_HARD_SENT); - - return PRLHRWaitPE; -} - -ResetHandler::hardrst_state ResetHandler::hardrst_wait_pe() { - /* Wait for the PE to tell us that it's done */ - waitForEvent(PDB_EVT_HARDRST_DONE); - - return PRLHRComplete; -} - -ResetHandler::hardrst_state ResetHandler::hardrst_complete() { - /* I'm not aware of anything we have to tell the FUSB302B, so just finish - * the reset routine. */ - return PRLHRResetLayer; -} - -void ResetHandler::init() { - osThreadStaticDef(rstHand, Thread, PDB_PRIO_PRL, 0, TaskStackSize, - TaskBuffer, &TaskControlBlock); - TaskHandle = osThreadCreate(osThread(rstHand), NULL); -} - -void ResetHandler::notify(uint32_t notification) { - if (TaskHandle != NULL) { - xTaskNotify(TaskHandle, notification, eNotifyAction::eSetBits); - } -} - -void ResetHandler::Thread(const void *arg) { - (void) arg; - ResetHandler::hardrst_state state = PRLHRResetLayer; - - while (true) { - switch (state) { - case PRLHRResetLayer: - state = hardrst_reset_layer(); - break; - case PRLHRIndicateHardReset: - state = hardrst_indicate_hard_reset(); - break; - case PRLHRRequestHardReset: - state = hardrst_request_hard_reset(); - break; - case PRLHRWaitPHY: - state = hardrst_wait_phy(); - break; - case PRLHRHardResetRequested: - state = hardrst_hard_reset_requested(); - break; - case PRLHRWaitPE: - state = hardrst_wait_pe(); - break; - case PRLHRComplete: - state = hardrst_complete(); - break; - default: - /* This is an error. It really shouldn't happen. We might - * want to handle it anyway, though. */ - state = PRLHRResetLayer; - break; - } - } -} - -uint32_t ResetHandler::waitForEvent(uint32_t mask, uint32_t ticksToWait) { - uint32_t pulNotificationValue; - xTaskNotifyWait(0x00, mask, &pulNotificationValue, ticksToWait); - return pulNotificationValue; -} diff --git a/workspace/TS100/Core/Drivers/FUSB302/hard_reset.h b/workspace/TS100/Core/Drivers/FUSB302/hard_reset.h deleted file mode 100644 index 9466b33c..00000000 --- a/workspace/TS100/Core/Drivers/FUSB302/hard_reset.h +++ /dev/null @@ -1,63 +0,0 @@ -/* - * PD Buddy Firmware Library - USB Power Delivery for everyone - * Copyright 2017-2018 Clayton G. Hobbs - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef PDB_HARD_RESET_H -#define PDB_HARD_RESET_H - -#include - -/* Events for the Hard Reset thread */ -#define PDB_EVT_HARDRST_RESET EVENT_MASK(0) -#define PDB_EVT_HARDRST_I_HARDRST EVENT_MASK(1) -#define PDB_EVT_HARDRST_I_HARDSENT EVENT_MASK(2) -#define PDB_EVT_HARDRST_DONE EVENT_MASK(3) - -class ResetHandler { -public: - static void init(); - static void notify(uint32_t notification); -private: - static void Thread(const void *arg); - static osThreadId TaskHandle; - static const size_t TaskStackSize = 1536 / 2; - static uint32_t TaskBuffer[TaskStackSize]; - static osStaticThreadDef_t TaskControlBlock; - static uint32_t waitForEvent(uint32_t mask, uint32_t ticksToWait = - portMAX_DELAY); - - /* - * Hard Reset machine states - */ - enum hardrst_state { - PRLHRResetLayer, - PRLHRIndicateHardReset, - PRLHRRequestHardReset, - PRLHRWaitPHY, - PRLHRHardResetRequested, - PRLHRWaitPE, - PRLHRComplete - }; - static hardrst_state hardrst_reset_layer(); - static hardrst_state hardrst_indicate_hard_reset(); - static hardrst_state hardrst_request_hard_reset(); - static hardrst_state hardrst_wait_phy(); - static hardrst_state hardrst_hard_reset_requested(); - static hardrst_state hardrst_wait_pe(); - static hardrst_state hardrst_complete(); -}; - -#endif /* PDB_HARD_RESET_H */ diff --git a/workspace/TS100/Core/Drivers/FUSB302/int_n.cpp b/workspace/TS100/Core/Drivers/FUSB302/int_n.cpp index 1206928e..7f5fd4bf 100644 --- a/workspace/TS100/Core/Drivers/FUSB302/int_n.cpp +++ b/workspace/TS100/Core/Drivers/FUSB302/int_n.cpp @@ -21,7 +21,6 @@ #include "fusb302b.h" #include "protocol_rx.h" #include "protocol_tx.h" -#include "hard_reset.h" #include "policy_engine.h" #include "protocol_rx.h" #include "protocol_tx.h" @@ -73,22 +72,6 @@ void InterruptHandler::Thread(const void *arg) { notifSent = true; } - /* If the I_HARDRST or I_HARDSENT flag is set, tell the Hard Reset - * thread */ - - if (notifSent == false) { - events = 0; - if (status.interrupta & FUSB_INTERRUPTA_I_HARDRST) { - events |= PDB_EVT_HARDRST_I_HARDRST; - notifSent = true; - } else if (status.interrupta & FUSB_INTERRUPTA_I_HARDSENT) { - events |= PDB_EVT_HARDRST_I_HARDSENT; - notifSent = true; - } - if (events) { - ResetHandler::notify(events); - } - } /* If the I_OCP_TEMP and OVRTEMP flags are set, tell the Policy * Engine thread */ if (status.interrupta & FUSB_INTERRUPTA_I_OCP_TEMP diff --git a/workspace/TS100/Core/Drivers/FUSB302/policy_engine.cpp b/workspace/TS100/Core/Drivers/FUSB302/policy_engine.cpp index 0e8464fc..4c2a5127 100644 --- a/workspace/TS100/Core/Drivers/FUSB302/policy_engine.cpp +++ b/workspace/TS100/Core/Drivers/FUSB302/policy_engine.cpp @@ -20,7 +20,6 @@ #include "int_n.h" #include #include "protocol_tx.h" -#include "hard_reset.h" #include "fusb302b.h" bool PolicyEngine::pdNegotiationComplete; int PolicyEngine::current_voltage_mv; @@ -516,11 +515,8 @@ PolicyEngine::policy_engine_state PolicyEngine::pe_sink_hard_reset() { if (_hard_reset_counter > PD_N_HARD_RESET_COUNT) { return PESinkSourceUnresponsive; } - - /* Generate a hard reset signal */ - ResetHandler::notify(PDB_EVT_HARDRST_RESET); - waitForEvent(PDB_EVT_PE_HARD_SENT); - + //So, we could send a hardreset here; however that will cause a power cycle on the PSU end.. Which will then reset this MCU + //So therefore we went get anywhere :) /* Increment HardResetCounter */ _hard_reset_counter++; @@ -537,9 +533,6 @@ PolicyEngine::policy_engine_state PolicyEngine::pe_sink_transition_default() { /* Since we never change our data role from UFP, there is no reason to set * it here. */ - /* Tell the protocol layer we're done with the reset */ - ResetHandler::notify( PDB_EVT_HARDRST_DONE); - return PESinkStartup; } From 8bacbe49fc722cd3b8479b3cf6101ea4d5c3b34f Mon Sep 17 00:00:00 2001 From: "Ben V. Brown" Date: Sat, 5 Sep 2020 20:26:07 +1000 Subject: [PATCH 18/32] Bring back PD 3.0 --- .../Core/Drivers/FUSB302/policy_engine.cpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/workspace/TS100/Core/Drivers/FUSB302/policy_engine.cpp b/workspace/TS100/Core/Drivers/FUSB302/policy_engine.cpp index 4c2a5127..21eac827 100644 --- a/workspace/TS100/Core/Drivers/FUSB302/policy_engine.cpp +++ b/workspace/TS100/Core/Drivers/FUSB302/policy_engine.cpp @@ -188,15 +188,15 @@ PolicyEngine::policy_engine_state PolicyEngine::pe_sink_wait_cap() { && PD_NUMOBJ_GET(&tempMessage) > 0) { /* First, determine what PD revision we're using */ if ((hdr_template & PD_HDR_SPECREV) == PD_SPECREV_1_0) { -// /* If the other end is using at least version 3.0, we'll -// * use version 3.0. */ -// if ((tempMessage.hdr & PD_HDR_SPECREV) >= PD_SPECREV_3_0) { -// hdr_template |= PD_SPECREV_3_0; -// /* Otherwise, use 2.0. Don't worry about the 1.0 case -// * because we don't have hardware for PD 1.0 signaling. */ -// } else { - hdr_template |= PD_SPECREV_2_0; -// } + /* If the other end is using at least version 3.0, we'll + * use version 3.0. */ + if ((tempMessage.hdr & PD_HDR_SPECREV) >= PD_SPECREV_3_0) { + hdr_template |= PD_SPECREV_3_0; + /* Otherwise, use 2.0. Don't worry about the 1.0 case + * because we don't have hardware for PD 1.0 signaling. */ + } else { + hdr_template |= PD_SPECREV_2_0; + } } return PESinkEvalCap; /* If the message was a Soft_Reset, do the soft reset procedure */ From 023e176c87aeb5d32d3dee37f18d5a09ed61c63b Mon Sep 17 00:00:00 2001 From: "Ben V. Brown" Date: Sat, 5 Sep 2020 20:29:57 +1000 Subject: [PATCH 19/32] Update int_n.cpp --- workspace/TS100/Core/Drivers/FUSB302/int_n.cpp | 7 ------- 1 file changed, 7 deletions(-) diff --git a/workspace/TS100/Core/Drivers/FUSB302/int_n.cpp b/workspace/TS100/Core/Drivers/FUSB302/int_n.cpp index 7f5fd4bf..a94e21b7 100644 --- a/workspace/TS100/Core/Drivers/FUSB302/int_n.cpp +++ b/workspace/TS100/Core/Drivers/FUSB302/int_n.cpp @@ -40,8 +40,6 @@ void InterruptHandler::init() { void InterruptHandler::Thread(const void *arg) { (void) arg; union fusb_status status; - uint32_t events; - bool notifSent = false; while (true) { /* If the INT_N line is low */ if (xTaskNotifyWait(0x00, 0x0F, NULL, @@ -49,7 +47,6 @@ void InterruptHandler::Thread(const void *arg) { //delay slightly so we catch the crc with better timing osDelay(1); } - notifSent = false; /* Read the FUSB302B status and interrupt registers */ fusb_get_status(&status); /* If the I_TXSENT or I_RETRYFAIL flag is set, tell the Protocol TX @@ -57,19 +54,16 @@ void InterruptHandler::Thread(const void *arg) { if (status.interrupta & FUSB_INTERRUPTA_I_TXSENT) { ProtocolTransmit::notify( ProtocolTransmit::Notifications::PDB_EVT_PRLTX_I_TXSENT); - notifSent = true; } if (status.interrupta & FUSB_INTERRUPTA_I_RETRYFAIL) { ProtocolTransmit::notify( ProtocolTransmit::Notifications::PDB_EVT_PRLTX_I_RETRYFAIL); - notifSent = true; } /* If the I_GCRCSENT flag is set, tell the Protocol RX thread */ //This means a message was recieved with a good CRC if (status.interruptb & FUSB_INTERRUPTB_I_GCRCSENT) { ProtocolReceive::notify(PDB_EVT_PRLRX_I_GCRCSENT); - notifSent = true; } /* If the I_OCP_TEMP and OVRTEMP flags are set, tell the Policy @@ -77,7 +71,6 @@ void InterruptHandler::Thread(const void *arg) { if (status.interrupta & FUSB_INTERRUPTA_I_OCP_TEMP && status.status1 & FUSB_STATUS1_OVRTEMP) { PolicyEngine::notify(PDB_EVT_PE_I_OVRTEMP); - notifSent = true; } } } From d37f8def8814586f00c1f860019538f41fc5cf7d Mon Sep 17 00:00:00 2001 From: Paul Fertser Date: Sat, 5 Sep 2020 18:23:03 +0300 Subject: [PATCH 20/32] Fix FTBFS due to LTO being more sensitive to file order When a symbol is used from inline assembly, LTO compiling and linking process becomes more picky with regard to the order of compile/linking units. Specifically, when FreeRTOS/Source/portable/GCC/ARM_CM3/port.c comes before FreeRTOS/Source/tasks.c in find results, the build fails with undefined reference to `pxCurrentTCB' error. To workaround the issue, do the same as we already have for vTaskSwitchContext. Note: different order affects resulting binary (.text section) size: 39924 with the wrong order and 39884 with the correct. Fixes #685. --- workspace/TS100/Makefile | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/workspace/TS100/Makefile b/workspace/TS100/Makefile index 20c43f58..31aec7e0 100644 --- a/workspace/TS100/Makefile +++ b/workspace/TS100/Makefile @@ -95,7 +95,9 @@ LINKER_FLAGS=-Wl,--gc-sections \ -Wl,--wrap=free \ -o$(OUT_HEXFILE).elf \ -Wl,-Map=$(OUT_HEXFILE).map \ - -lm -Wl,--undefined=vTaskSwitchContext \ + -lm \ + -Wl,--undefined=vTaskSwitchContext \ + -Wl,--undefined=pxCurrentTCB \ -Wl,--defsym=__FLASH_SIZE__=$(flash_size) \ -Wl,--defsym=__BOOTLDR_SIZE__=$(bootldr_size) \ --specs=nano.specs From e6e0a0f280cc551643b2f8bed4c569667ca0caa9 Mon Sep 17 00:00:00 2001 From: Paul Fertser Date: Sat, 5 Sep 2020 18:39:49 +0300 Subject: [PATCH 21/32] Makefile: remove -ffat-lto-objects "Fat" LTO objects are only needed if future linking _without_ LTO is planned. Not using this option gives about 1.5x building time advantage without affecting the final binary. An unused variable is removed along the way. --- workspace/TS100/Makefile | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/workspace/TS100/Makefile b/workspace/TS100/Makefile index 31aec7e0..175c1547 100644 --- a/workspace/TS100/Makefile +++ b/workspace/TS100/Makefile @@ -10,7 +10,6 @@ endif # Discover the source files to build SOURCE := $(shell find . -type f -name '*.c') SOURCE_CPP := $(shell find . -type f -name '*.cpp') -SOURCES := $(shell find . -type f -name '*.c*') S_SRCS := $(shell find . -type f -name '*.s') APP_INC_DIR = ./Core/Inc @@ -47,7 +46,7 @@ HEXFILE_DIR=Hexfile OUTPUT_DIR=Objects # code optimisation ------------------------------------------------------------ -OPTIM=-Os -flto -ffat-lto-objects -finline-small-functions -findirect-inlining -fdiagnostics-color -ffunction-sections -fdata-sections +OPTIM=-Os -flto -finline-small-functions -findirect-inlining -fdiagnostics-color -ffunction-sections -fdata-sections flash_size=64k bootldr_size=0x4000 @@ -64,7 +63,7 @@ DEBUG=-g3 # Without debug code #DEBUG= - + # libs ------------------------------------------------------------------------- LIBS= From 8a4b0af44dd979e3e10eaabbdfbeca9f3d4f3749 Mon Sep 17 00:00:00 2001 From: "Ben V. Brown" Date: Sun, 6 Sep 2020 11:10:06 +1000 Subject: [PATCH 22/32] Testing --- .github/workflows/ccpp.yml | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ccpp.yml b/.github/workflows/ccpp.yml index a13fc675..c983a9c8 100644 --- a/.github/workflows/ccpp.yml +++ b/.github/workflows/ccpp.yml @@ -17,8 +17,21 @@ jobs: python3 make_translation.py - name: make run: ./build.sh - - name: Archive production artifacts - uses: actions/upload-artifact@v1 + - name: Archive TS80 artifacts + uses: actions/upload-artifact@v2 with: - name: compiled - path: ci/artefacts + name: TS80 + path: ci/artefacts/TS80_* + if-no-files-found: error + - name: Archive TS80P artifacts + uses: actions/upload-artifact@v2 + with: + name: TS80P + path: ci/artefacts/TS80P_* + if-no-files-found: error + - name: Archive TS100 artifacts + uses: actions/upload-artifact@v2 + with: + name: TS100 + path: ci/artefacts/TS100_* + if-no-files-found: error From f5bc1e15b5b410ba48429683159a3753e0b9ae88 Mon Sep 17 00:00:00 2001 From: "Ben V. Brown" Date: Sun, 6 Sep 2020 13:28:24 +1000 Subject: [PATCH 23/32] CI performance (#690) More CI performance increase * Runs all builds in parallel * Avoids using the extra docker container in CI --- .github/workflows/ccpp.yml | 62 +++++++++++++++++++++++++++++++------- Dockerfile | 1 - setup.sh | 13 ++++++++ workspace/TS100/build.sh | 2 +- 4 files changed, 65 insertions(+), 13 deletions(-) create mode 100644 setup.sh diff --git a/.github/workflows/ccpp.yml b/.github/workflows/ccpp.yml index c983a9c8..530a212f 100644 --- a/.github/workflows/ccpp.yml +++ b/.github/workflows/ccpp.yml @@ -3,35 +3,75 @@ name: C/C++ CI on: [pull_request, push] jobs: - build: + build_TS80: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 + - name: chmod - run: chmod +x build.sh - - name: translation - run: | - cd Translation\ Editor - python3 make_translation.py - - name: make - run: ./build.sh + run: chmod +x setup.sh && chmod +x workspace/TS100/build.sh + + - name: setup + run: ./setup.sh + + - name: build TS80 + run: cd workspace/TS100 && ./build.sh -m TS80 + - name: Archive TS80 artifacts uses: actions/upload-artifact@v2 with: name: TS80 - path: ci/artefacts/TS80_* + path: | + workspace/TS100/Hexfile/TS80_*.hex + workspace/TS100/Hexfile/TS80_*.bin if-no-files-found: error + build_TS80P: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + + - name: chmod + run: chmod +x setup.sh && chmod +x workspace/TS100/build.sh + + - name: setup + run: ./setup.sh + + - name: build TS80P + run: cd workspace/TS100 && ./build.sh -m TS80P + - name: Archive TS80P artifacts uses: actions/upload-artifact@v2 with: name: TS80P - path: ci/artefacts/TS80P_* + path: | + workspace/TS100/Hexfile/TS80P_*.hex + workspace/TS100/Hexfile/TS80P_*.bin if-no-files-found: error + build_TS100: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + + - name: chmod + run: chmod +x setup.sh && chmod +x workspace/TS100/build.sh + + - name: setup + run: ./setup.sh + + - name: build TS100 + run: cd workspace/TS100 && ./build.sh -m TS100 + - name: Archive TS100 artifacts uses: actions/upload-artifact@v2 with: name: TS100 - path: ci/artefacts/TS100_* + path: | + workspace/TS100/Hexfile/TS100_*.hex + workspace/TS100/Hexfile/TS100_*.bin if-no-files-found: error diff --git a/Dockerfile b/Dockerfile index 665a0622..e553efd2 100644 --- a/Dockerfile +++ b/Dockerfile @@ -6,7 +6,6 @@ WORKDIR /build # Install any needed packages specified in requirements.txt RUN apt-get update && \ - apt-get upgrade -y && \ apt-get install -y \ make \ bzip2 \ diff --git a/setup.sh b/setup.sh new file mode 100644 index 00000000..36ba14f4 --- /dev/null +++ b/setup.sh @@ -0,0 +1,13 @@ +#!/bin/bash +set -e +# Setup shell file to setup the environment on an ubuntu machine +sudo apt-get update +sudo apt-get install -y make bzip2 git python3 wget +sudo mkdir /build +cd /build + +sudo wget -qO- https://armkeil.blob.core.windows.net/developer/Files/downloads/gnu-rm/9-2020q2/gcc-arm-none-eabi-9-2020-q2-update-x86_64-linux.tar.bz2 | sudo tar -xj + +# Add compiler to the path + +sudo ln -s /build/gcc-arm-none-eabi-9-2020-q2-update/bin/* /usr/local/bin diff --git a/workspace/TS100/build.sh b/workspace/TS100/build.sh index 068d7f20..80b9a808 100755 --- a/workspace/TS100/build.sh +++ b/workspace/TS100/build.sh @@ -10,7 +10,7 @@ AVAILABLE_MODELS=("TS100" "TS80" "TS80P") BUILD_MODELS=() usage() { - echo "Usage : $(basename "$0") [-l ] [-m ] [-h] + echo "Usage : $(basename "$0") [-l ] [-m ] [-h] Parameters : -l LANG_CODE : Force a specific language (E.g. : EN, FR, NL_BE, ...) From 30c470cbf1186b4e32334d52fc7c73dd1811902d Mon Sep 17 00:00:00 2001 From: "Ben V. Brown" Date: Sun, 6 Sep 2020 14:00:35 +1000 Subject: [PATCH 24/32] Remove old codeship + docs updates --- .../Development.md | 0 History.md => Documentation/History.md | 93 +++++++++++++++---- menu.md => Documentation/Menu.md | 0 power.md => Documentation/Power.md | 0 .../Translation.md | 0 upgrading.md => Documentation/Upgrading.md | 0 ISSUE_TEMPLATE.md | 40 +++----- PULL_REQUEST_TEMPLATE.md | 11 +-- README.md | 9 +- codeship-services.yml | 8 -- codeship-steps.yml | 6 -- 11 files changed, 94 insertions(+), 73 deletions(-) rename development.md => Documentation/Development.md (100%) rename History.md => Documentation/History.md (64%) rename menu.md => Documentation/Menu.md (100%) rename power.md => Documentation/Power.md (100%) rename Translation.md => Documentation/Translation.md (100%) rename upgrading.md => Documentation/Upgrading.md (100%) delete mode 100644 codeship-services.yml delete mode 100644 codeship-steps.yml diff --git a/development.md b/Documentation/Development.md similarity index 100% rename from development.md rename to Documentation/Development.md diff --git a/History.md b/Documentation/History.md similarity index 64% rename from History.md rename to Documentation/History.md index 8c54ee99..0a81bddc 100644 --- a/History.md +++ b/Documentation/History.md @@ -1,5 +1,64 @@ # Version Changes -V2.00 + +## V2.11 + +* First TS80P support +* Added in a USB-PD driver stack for the FUSB302 +* Fixed some graphical glitches + +## V2.10 + +* GUI polish (animations and scroll bars) +* Power pulse to keep power supplies alive +* Adjustable tip response gain + +## V2.09 + +* Adjustable steps in temperature adjustment +* Git hash now in build string +* Adjustable language to set if US units are available or not +* Some minor QC3 improvements + +## V2.08 + +* Fixes auto start in sleep mode +* Power limiters + +## V2.07 + +* QC fixes +* Cosmetic fixes for leading 0's + +## V2.06 + +* Warning on settings reset +* Temp temp re-write +* Display calibration offset +* Hide some leading 0's +* Menu timeouts + +## V2.05 + +* Language updates + + +## V2.04 + +* GUI updates + +## V2.03 + +* Support for new accelerometers + +## V2.02 + +* Adds small font + +## V2.01 + +* Newer settings menu + +## V2.00 * Complete re-write of the low layer system to use the STM32 HAL for easier development * This allowed easier setup for the new ADC auto measuring system @@ -10,80 +69,80 @@ V2.00 * Added smaller font for said screen views -V1.17 +## V1.17 * Added blinking cooldown display * Allowed smaller sleep timeout values * New font! * Automatic startup option -V1.16 +## V1.16 * Added automatic rotation support * Added power display graph -V1.15 +## V1.15 * Added support for a custom bootup logo to be programmed via the DFU bootloader -V1.14 +## V1.14 * Changed input voltage cutoff to be based on cell count rather than voltage -V1.13 +## V1.13 * Swapped buttons for menu to prevent accidentally changing first menu item * Added auto key repeat -V1.12 +## V1.12 * Increases sensitivity options to be 1*9 with 0 off state * Fixes issue where going from COOL *> soldering can leave screen off -V1.11 +## V1.11 * Boost mode * Change sensitivity options to be 1*8 -V1.10 +## V1.10 * Adds help text to settings * Improves settings for the display update rate -V1.09 +## V1.09 * Adds display modes, for slowing down or simplifying the display -V1.08 +## V1.08 * Fix settings menu not showing flip display -V1.07 +## V1.07 * Adds shutdown time to automatically shutdown the iron after inactivity -V1.06 +## V1.06 * Changes H and C when the iron is heating to the minidso chevron like images -V1.05 +## V1.05 * Adds ability to calibrate the input voltage measurement -V1.04 +## V1.04 * Increased accuracy of the temperature control * Improved PID response slightly * Allows temperature offset calibration * Nicer idle screen -V1.03 +## V1.03 * Improved Button handling * Ability to set motion sensitivity * DC voltmeter page shows input voltage -V1.02 +## V1.02 * Adds hold both buttons on IDLE to access the therometer mode * Changes the exit soldering mode to be holding both buttons (Like original firmware) diff --git a/menu.md b/Documentation/Menu.md similarity index 100% rename from menu.md rename to Documentation/Menu.md diff --git a/power.md b/Documentation/Power.md similarity index 100% rename from power.md rename to Documentation/Power.md diff --git a/Translation.md b/Documentation/Translation.md similarity index 100% rename from Translation.md rename to Documentation/Translation.md diff --git a/upgrading.md b/Documentation/Upgrading.md similarity index 100% rename from upgrading.md rename to Documentation/Upgrading.md diff --git a/ISSUE_TEMPLATE.md b/ISSUE_TEMPLATE.md index 721a76f5..05250381 100644 --- a/ISSUE_TEMPLATE.md +++ b/ISSUE_TEMPLATE.md @@ -1,31 +1,21 @@ Please edit this template and fill out all the information you can (where relevant). Failure to provide essential information can delay the response you receive. +_This is a [Bug/Feature Request/Question/Complaint]_ -* **I'm submitting a ...** - - [ ] Bug report - - [ ] Feature request - - [ ] Translation - - -* **Do you want to request a *feature* or report a *bug*?** - - +* **I have** + - [ ] Searched previous issues + - [ ] This is in _this_ firmware, not vendor "offical" firmware + - [ ] This is not a bug in the vendor bootloader (aka DFU) + - [ ] I have checked this is not already covered in the docs in `/Documentation` * **What is the current behavior?** - * **What is the expected behavior?** +***Steps to reproduce the bug:*** -* **If the current behavior is a bug, please provide the steps to reproduce and if possible a minimal demo of the problem** - -***Steps to reproduce:*** - -1. -2. -3. - -***Video of problem if hard to reproduce*** +- Turn on... +- Hold.... * **What is the motivation / use case for changing the behavior?** @@ -33,13 +23,9 @@ Please edit this template and fill out all the information you can (where releva * **What are you running:** -On the idle screen, you can hold the settings button and it will show you the firmware version. +On the idle screen, you can hold the settings button and it will show you the firmware & PCB version. +If using a USB-C supply please note model number - - Firmware Version: 2.x + - Firmware Version: 2.x? - PCB Version: (1/2) - - Power Supply (Voltage and Current Rating) : - - -* **Other information** - -If submitting graphics to go on the iron, please use BMP or PNG files over JPG. + - Power Supply (Voltage and Current Rating) : \ No newline at end of file diff --git a/PULL_REQUEST_TEMPLATE.md b/PULL_REQUEST_TEMPLATE.md index 6b353fec..09867702 100644 --- a/PULL_REQUEST_TEMPLATE.md +++ b/PULL_REQUEST_TEMPLATE.md @@ -2,9 +2,8 @@ Please try and fill out this template where possible, not all fields are required and can be removed. * **Please check if the PR fulfills these requirements** -- [] The commit message makes sense - [] The changes have been tested locally -- [] Are there any breaking changes +- [] There are no breaking changes * **What kind of change does this PR introduce?** (Bug fix, feature, docs update, ...) @@ -14,14 +13,6 @@ Please try and fill out this template where possible, not all fields are require * **What is the current behavior?** (You can also link to an open issue here) - - * **What is the new behavior (if this is a feature change)?** - - -* **Does this PR introduce a breaking change?** -(What changes might users need to make in their application due to this PR?) - - * **Other information**: diff --git a/README.md b/README.md index 5fa9c60e..d54f1eab 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,3 @@ -[![Codeship Status for ts100](https://app.codeship.com/projects/c77dbfe0-0764-0138-9520-3eb35bdb2b2c/status?branch=master)](https://app.codeship.com/projects/379118) ![C/C++ CI](https://github.com/Ralim/ts100/workflows/C/C++%20CI/badge.svg) # Flexible Soldering iron control Firmware @@ -33,7 +32,7 @@ This project is considered feature complete for use as a soldering iron, *so ple * Boost mode lets you temporarily change the temperature when soldering (i.e. raise the temperature for short periods of time) * (TS100) Battery charge level indicator if power source set to a lipo cell count * (TS80) Power bank operating voltage is displayed -* [Custom boot up logo support](upgrading.md) +* [Custom boot up logo support](Documentation/upgrading.md) * Automatic LCD rotation based on the orientation * Supports both the version 1 and version 2 hardware (different accelerometers) @@ -47,7 +46,7 @@ When on the main screen, the unit shows prompts for the two most common operatio * Holding the button near the tip will enter soldering temperature adjust mode (This is the same as the one in the soldering menu, just to let you edit before heating up) * Holding the button near the USB end will show the firmware version details -Detailed operation details are over in the [Menu information.](menu.md) +Detailed operation details are over in the [Menu information.](Documentation/menu.md) ## Thanks @@ -64,11 +63,11 @@ Especially to the following users, who have helped in various ways that are mass * [Doegox](https://github.com/doegox) * [Perillamint](https://github.com/perillamint) * [GeminiServer](https://github.com/GeminiServer) -* [PixelPirate](https://github.com/PixelPirate) +* [Patrick Horlebein](https://github.com/PixelPirate) * [Firebie](https://github.com/Firebie) * [Agatti](https://github.com/agatti) * [Discip](https://github.com/discip) - +* [Paul Fertser](https://github.com/paulfertser) ## Licence The code created by the community is GNU GPLv3. Unless noted elsewhere. diff --git a/codeship-services.yml b/codeship-services.yml deleted file mode 100644 index aafb9325..00000000 --- a/codeship-services.yml +++ /dev/null @@ -1,8 +0,0 @@ -builder: - build: - context: . - dockerfile: Dockerfile - cached: true - encrypted_env_file: ci/secrets/encrypted/deployment.encrypted - volumes: - - ./ci:/ci diff --git a/codeship-steps.yml b/codeship-steps.yml deleted file mode 100644 index ce87ca1d..00000000 --- a/codeship-steps.yml +++ /dev/null @@ -1,6 +0,0 @@ -- type: parallel - name: Build the firmware - steps: - - name: build - service: builder - command: /build/ci/buildAll.sh From feec35be7a92c664734dc7c4b0aeed515ac87048 Mon Sep 17 00:00:00 2001 From: "Ben V. Brown" Date: Sun, 6 Sep 2020 15:31:23 +1000 Subject: [PATCH 25/32] Collapse power limiter into one menu option Work for #642 --- .gitignore | 1 + Translation Editor/make_translation.py | 45 ++----------- Translation Editor/translation_bg.json | 8 --- Translation Editor/translation_cs.json | 8 --- Translation Editor/translation_da.json | 8 --- Translation Editor/translation_de.json | 8 --- Translation Editor/translation_en.json | 8 --- Translation Editor/translation_es.json | 8 --- Translation Editor/translation_fi.json | 8 --- Translation Editor/translation_fr.json | 8 --- Translation Editor/translation_hr.json | 8 --- Translation Editor/translation_hu.json | 8 --- Translation Editor/translation_it.json | 8 --- Translation Editor/translation_lt.json | 8 --- Translation Editor/translation_nl.json | 8 --- Translation Editor/translation_nl_be.json | 8 --- Translation Editor/translation_no.json | 8 --- Translation Editor/translation_pl.json | 8 --- Translation Editor/translation_pt.json | 8 --- Translation Editor/translation_ru.json | 8 --- Translation Editor/translation_sk.json | 8 --- Translation Editor/translation_sl.json | 8 --- Translation Editor/translation_sr_cyrl.json | 8 --- Translation Editor/translation_sr_latn.json | 8 --- Translation Editor/translation_sv.json | 8 --- Translation Editor/translation_tr.json | 8 --- Translation Editor/translation_uk.json | 8 --- Translation Editor/translations_def.js | 5 -- workspace/TS100/Core/Inc/Settings.h | 1 - workspace/TS100/Core/Src/Settings.cpp | 1 - workspace/TS100/Core/Src/gui.cpp | 72 +++++++++------------ workspace/TS100/Core/Threads/PIDThread.cpp | 2 +- workspace/TS100/configuration.h | 1 - 33 files changed, 37 insertions(+), 291 deletions(-) diff --git a/.gitignore b/.gitignore index 96c9ab2c..11f60f9f 100644 --- a/.gitignore +++ b/.gitignore @@ -190,3 +190,4 @@ fabric.properties .idea/httpRequests CoreCompileInputs.cache +.vscode/settings.json diff --git a/Translation Editor/make_translation.py b/Translation Editor/make_translation.py index c777cb63..7757b29e 100755 --- a/Translation Editor/make_translation.py +++ b/Translation Editor/make_translation.py @@ -125,27 +125,6 @@ def getConstants(): return consants -def getTipModelEnumTS80(): - constants = [] - constants.append("B02") - constants.append("D25") - constants.append("TS80") # end of miniware - constants.append("User") # User - return constants - - -def getTipModelEnumTS100(): - constants = [] - constants.append("B02") - constants.append("D24") - constants.append("BC2") - constants.append(" C1") - constants.append("TS100") # end of miniware - constants.append("BC2") - constants.append("Hakko") # end of hakko - constants.append("User") - return constants - def getDebugMenu(): constants = [] @@ -207,8 +186,6 @@ def getLetterCounts(defs, lang): constants = getConstants() for x in constants: textList.append(x[1]) - textList.extend(getTipModelEnumTS100()) - textList.extend(getTipModelEnumTS80()) textList.extend(getDebugMenu()) # collapse all strings down into the composite letters and store totals for these @@ -329,17 +306,19 @@ def writeLanguage(languageCode, defs, f): f.write(to_unicode("const char* SettingsDescriptions[] = {\n")) maxLen = 25 + index =0 for mod in defs['menuOptions']: eid = mod['id'] if 'feature' in mod: f.write(to_unicode("#ifdef " + mod['feature'] + "\n")) - f.write(to_unicode(" /* " + eid.ljust(maxLen)[:maxLen] + " */ ")) + f.write(to_unicode(" /* ["+"{:02d}".format(index)+"] " + eid.ljust(maxLen)[:maxLen] + " */ ")) f.write( to_unicode("\"" + convStr(symbolConversionTable, (obj[eid]['desc'])) + "\"," + "//{} \n".format(obj[eid]['desc']))) if 'feature' in mod: f.write(to_unicode("#endif\n")) + index=index+1 f.write(to_unicode("};\n\n")) @@ -381,20 +360,6 @@ def writeLanguage(languageCode, defs, f): convStr(symbolConversionTable, x[1]) + "\";" + "//{} \n".format(x[1]))) f.write(to_unicode("\n")) - # Write out tip model strings - - f.write(to_unicode("const char* TipModelStrings[] = {\n")) - f.write(to_unicode("#ifdef MODEL_TS100\n")) - for c in getTipModelEnumTS100(): - f.write(to_unicode("\t \"" + convStr(symbolConversionTable, - c) + "\"," + "//{} \n".format(c))) - f.write(to_unicode("#else\n")) - for c in getTipModelEnumTS80(): - f.write(to_unicode("\t \"" + convStr(symbolConversionTable, - c) + "\"," + "//{} \n".format(c))) - f.write(to_unicode("#endif\n")) - - f.write(to_unicode("};\n\n")) # Debug Menu f.write(to_unicode("const char* DebugMenu[] = {\n")) @@ -417,11 +382,12 @@ def writeLanguage(languageCode, defs, f): f.write(to_unicode("const char* SettingsShortNames[][2] = {\n")) maxLen = 25 + index = 0 for mod in defs['menuOptions']: eid = mod['id'] if 'feature' in mod: f.write(to_unicode("#ifdef " + mod['feature'] + "\n")) - f.write(to_unicode(" /* " + eid.ljust(maxLen)[:maxLen] + " */ ")) + f.write(to_unicode(" /* ["+"{:02d}".format(index)+"] " + eid.ljust(maxLen)[:maxLen] + " */ ")) if lang['menuDouble']: f.write( to_unicode( @@ -437,6 +403,7 @@ def writeLanguage(languageCode, defs, f): "\" }," + "//{} \n".format(obj[eid]['text']))) if 'feature' in mod: f.write(to_unicode("#endif\n")) + index = index + 1 f.write(to_unicode("};\n\n")) diff --git a/Translation Editor/translation_bg.json b/Translation Editor/translation_bg.json index 061f2748..643c13b5 100644 --- a/Translation Editor/translation_bg.json +++ b/Translation Editor/translation_bg.json @@ -236,14 +236,6 @@ ], "desc": "Мощност на избраното захранване" }, - "PowerLimitEnable": { - "text": "", - "text2": [ - "Вкл. лимит", - "на мощност?" - ], - "desc": "Включване на лимит на мощност" - }, "PowerLimit": { "text": "", "text2": [ diff --git a/Translation Editor/translation_cs.json b/Translation Editor/translation_cs.json index 1cef0ce8..c1d66a24 100755 --- a/Translation Editor/translation_cs.json +++ b/Translation Editor/translation_cs.json @@ -236,14 +236,6 @@ ], "desc": "Výkon použítého napájecího adaptéru ve wattech." }, - "PowerLimitEnable": { - "text": "PLIMEN", - "text2": [ - "Omez. výk.", - "Aktivovat" - ], - "desc": "Aktivovat omezení výkonu" - }, "PowerLimit": { "text": "PLIM", "text2": [ diff --git a/Translation Editor/translation_da.json b/Translation Editor/translation_da.json index 6271ef61..8cefa35d 100644 --- a/Translation Editor/translation_da.json +++ b/Translation Editor/translation_da.json @@ -234,14 +234,6 @@ ], "desc": "Power Wattage of the power adapter used" }, - "PowerLimitEnable": { - "text": "PLIMEN", - "text2": [ - "P Limit", - "Enable" - ], - "desc": "Enable power limit" - }, "PowerLimit": { "text": "PLIM", "text2": [ diff --git a/Translation Editor/translation_de.json b/Translation Editor/translation_de.json index a93c4a93..1a755d5d 100644 --- a/Translation Editor/translation_de.json +++ b/Translation Editor/translation_de.json @@ -237,14 +237,6 @@ ], "desc": "Leistungsaufnahme der verwendeten Spannungsversorgung" }, - "PowerLimitEnable": { - "text": "PLIMEN", - "text2": [ - "Leistungs-", - "Limit An" - ], - "desc": "Leistungslimit aktivieren" - }, "PowerLimit": { "text": "PLIM", "text2": [ diff --git a/Translation Editor/translation_en.json b/Translation Editor/translation_en.json index 4b206c7c..66f58642 100644 --- a/Translation Editor/translation_en.json +++ b/Translation Editor/translation_en.json @@ -237,14 +237,6 @@ ], "desc": "Power wattage of the power adapter used" }, - "PowerLimitEnable": { - "text": "PLIMEN", - "text2": [ - "Enable power", - "limit" - ], - "desc": "Enable power limit" - }, "PowerLimit": { "text": "PLIM", "text2": [ diff --git a/Translation Editor/translation_es.json b/Translation Editor/translation_es.json index 66a31e79..8de00bd7 100644 --- a/Translation Editor/translation_es.json +++ b/Translation Editor/translation_es.json @@ -236,14 +236,6 @@ ], "desc": "Potencia en vatios del adaptador de corriente utilizado." }, - "PowerLimitEnable": { - "text": "PLIMEN", - "text2": [ - "Limitar la", - "potenc. máx." - ], - "desc": "Activa el límite de potencia máxima." - }, "PowerLimit": { "text": "PLIM", "text2": [ diff --git a/Translation Editor/translation_fi.json b/Translation Editor/translation_fi.json index 451359fd..f179c530 100644 --- a/Translation Editor/translation_fi.json +++ b/Translation Editor/translation_fi.json @@ -234,14 +234,6 @@ ], "desc": "Power Wattage of the power adapter used" }, - "PowerLimitEnable": { - "text": "PLIMEN", - "text2": [ - "P Limit", - "Enable" - ], - "desc": "Enable power limit" - }, "PowerLimit": { "text": "PLIM", "text2": [ diff --git a/Translation Editor/translation_fr.json b/Translation Editor/translation_fr.json index c2cbb387..f55d9ce8 100644 --- a/Translation Editor/translation_fr.json +++ b/Translation Editor/translation_fr.json @@ -234,14 +234,6 @@ ], "desc": "Puissance de l'alimentation utilisée" }, - "PowerLimitEnable": { - "text": "PLIMEN", - "text2": [ - "P Limit", - "Activer?" - ], - "desc": "Activer la limite de puissance" - }, "PowerLimit": { "text": "PLIM", "text2": [ diff --git a/Translation Editor/translation_hr.json b/Translation Editor/translation_hr.json index 6b91354d..cec60dba 100644 --- a/Translation Editor/translation_hr.json +++ b/Translation Editor/translation_hr.json @@ -234,14 +234,6 @@ ], "desc": "Snaga modula za napajanje" }, - "PowerLimitEnable": { - "text": "PLIMEN", - "text2": [ - "P Limit", - "Enable" - ], - "desc": "Enable power limit" - }, "PowerLimit": { "text": "PLIM", "text2": [ diff --git a/Translation Editor/translation_hu.json b/Translation Editor/translation_hu.json index ae4310eb..1b583503 100644 --- a/Translation Editor/translation_hu.json +++ b/Translation Editor/translation_hu.json @@ -234,14 +234,6 @@ ], "desc": "A tápegység által leadott teljesítmény" }, - "PowerLimitEnable": { - "text": "TELJH", - "text2": [ - "Telj H", - "Bekapcsolva" - ], - "desc": "Bemeneti teljesitmény korlátozása" - }, "PowerLimit": { "text": "TELJM", "text2": [ diff --git a/Translation Editor/translation_it.json b/Translation Editor/translation_it.json index 01c748a6..069ca63f 100644 --- a/Translation Editor/translation_it.json +++ b/Translation Editor/translation_it.json @@ -236,14 +236,6 @@ ], "desc": "Imposta la potenza massima erogabile dall'alimentatore in uso" }, - "PowerLimitEnable": { - "text": "PLIMEN", - "text2": [ - "Limitatore", - "di potenza" - ], - "desc": "Abilita un limitatore per la potenza massima erogabile al saldatore" - }, "PowerLimit": { "text": "PLIM", "text2": [ diff --git a/Translation Editor/translation_lt.json b/Translation Editor/translation_lt.json index 9e886301..ae489e19 100644 --- a/Translation Editor/translation_lt.json +++ b/Translation Editor/translation_lt.json @@ -234,14 +234,6 @@ ], "desc": "Maitinimo bloko galia vatais" }, - "PowerLimitEnable": { - "text": "PLIMEN", - "text2": [ - "P Limit", - "Enable" - ], - "desc": "Enable power limit" - }, "PowerLimit": { "text": "PLIM", "text2": [ diff --git a/Translation Editor/translation_nl.json b/Translation Editor/translation_nl.json index 67d73f8d..7b20ed69 100644 --- a/Translation Editor/translation_nl.json +++ b/Translation Editor/translation_nl.json @@ -234,14 +234,6 @@ ], "desc": "Power Wattage of the power adapter used" }, - "PowerLimitEnable": { - "text": "PLIMEN", - "text2": [ - "P Limit", - "Enable" - ], - "desc": "Enable power limit" - }, "PowerLimit": { "text": "PLIM", "text2": [ diff --git a/Translation Editor/translation_nl_be.json b/Translation Editor/translation_nl_be.json index 510721fc..e636024f 100644 --- a/Translation Editor/translation_nl_be.json +++ b/Translation Editor/translation_nl_be.json @@ -234,14 +234,6 @@ ], "desc": "Vermogen van de adapter" }, - "PowerLimitEnable": { - "text": "PLIMEN", - "text2": [ - "P Limit", - "Enable" - ], - "desc": "Enable power limit" - }, "PowerLimit": { "text": "PLIM", "text2": [ diff --git a/Translation Editor/translation_no.json b/Translation Editor/translation_no.json index 887285af..673a7176 100644 --- a/Translation Editor/translation_no.json +++ b/Translation Editor/translation_no.json @@ -234,14 +234,6 @@ ], "desc": "Power Wattage of the power adapter used" }, - "PowerLimitEnable": { - "text": "PLIMEN", - "text2": [ - "P Limit", - "Enable" - ], - "desc": "Enable power limit" - }, "PowerLimit": { "text": "PLIM", "text2": [ diff --git a/Translation Editor/translation_pl.json b/Translation Editor/translation_pl.json index cc7f6f17..1ed67998 100644 --- a/Translation Editor/translation_pl.json +++ b/Translation Editor/translation_pl.json @@ -237,14 +237,6 @@ ], "desc": "Moc używanego zasilacza w Wattach" }, - "PowerLimitEnable": { - "text": "PLIMEN", - "text2": [ - "Włącz limit", - "mocy" - ], - "desc": "Włącza limit mocy" - }, "PowerLimit": { "text": "PLIM", "text2": [ diff --git a/Translation Editor/translation_pt.json b/Translation Editor/translation_pt.json index 6a213ca2..defb47b6 100644 --- a/Translation Editor/translation_pt.json +++ b/Translation Editor/translation_pt.json @@ -234,14 +234,6 @@ ], "desc": "Potência da fonte usada (Watt)" }, - "PowerLimitEnable": { - "text": "PLIMEN", - "text2": [ - "P Limit", - "Enable" - ], - "desc": "Enable power limit" - }, "PowerLimit": { "text": "PLIM", "text2": [ diff --git a/Translation Editor/translation_ru.json b/Translation Editor/translation_ru.json index d2dff2cc..4923001c 100644 --- a/Translation Editor/translation_ru.json +++ b/Translation Editor/translation_ru.json @@ -236,14 +236,6 @@ ], "desc": "Мощность используемого источника питания" }, - "PowerLimitEnable": { - "text": "ВклЛимW", - "text2": [ - "Ограничение", - "мощности" - ], - "desc": "Включить лимит потребляемой мощности" - }, "PowerLimit": { "text": "ЗначЛимW", "text2": [ diff --git a/Translation Editor/translation_sk.json b/Translation Editor/translation_sk.json index ea19f6e0..c38bb7e9 100644 --- a/Translation Editor/translation_sk.json +++ b/Translation Editor/translation_sk.json @@ -234,14 +234,6 @@ ], "desc": "Power Wattage of the power adapter used" }, - "PowerLimitEnable": { - "text": "PLIMEN", - "text2": [ - "P Limit", - "Enable" - ], - "desc": "Enable power limit" - }, "PowerLimit": { "text": "PLIM", "text2": [ diff --git a/Translation Editor/translation_sl.json b/Translation Editor/translation_sl.json index f6793c47..91c85fd6 100644 --- a/Translation Editor/translation_sl.json +++ b/Translation Editor/translation_sl.json @@ -235,14 +235,6 @@ ], "desc": "Moč v W napajalnega vira" }, - "PowerLimitEnable": { - "text": "PLIMEN", - "text2": [ - "P Limit", - "Enable" - ], - "desc": "Enable power limit" - }, "PowerLimit": { "text": "PLIM", "text2": [ diff --git a/Translation Editor/translation_sr_cyrl.json b/Translation Editor/translation_sr_cyrl.json index 29ba5456..b96b1762 100644 --- a/Translation Editor/translation_sr_cyrl.json +++ b/Translation Editor/translation_sr_cyrl.json @@ -234,14 +234,6 @@ ], "desc": "Снага напајања у ватима." }, - "PowerLimitEnable": { - "text": "PLIMEN", - "text2": [ - "P Limit", - "Enable" - ], - "desc": "Enable power limit" - }, "PowerLimit": { "text": "PLIM", "text2": [ diff --git a/Translation Editor/translation_sr_latn.json b/Translation Editor/translation_sr_latn.json index 30e71cfd..8a97e6ac 100644 --- a/Translation Editor/translation_sr_latn.json +++ b/Translation Editor/translation_sr_latn.json @@ -234,14 +234,6 @@ ], "desc": "Snaga napajanja u vatima." }, - "PowerLimitEnable": { - "text": "PLIMEN", - "text2": [ - "P Limit", - "Enable" - ], - "desc": "Enable power limit" - }, "PowerLimit": { "text": "PLIM", "text2": [ diff --git a/Translation Editor/translation_sv.json b/Translation Editor/translation_sv.json index b5b40339..1d3d208f 100644 --- a/Translation Editor/translation_sv.json +++ b/Translation Editor/translation_sv.json @@ -234,14 +234,6 @@ ], "desc": "Power Wattage of the power adapter used" }, - "PowerLimitEnable": { - "text": "PLIMEN", - "text2": [ - "P Limit", - "Enable" - ], - "desc": "Enable power limit" - }, "PowerLimit": { "text": "PLIM", "text2": [ diff --git a/Translation Editor/translation_tr.json b/Translation Editor/translation_tr.json index 748ad723..a5e1ed24 100644 --- a/Translation Editor/translation_tr.json +++ b/Translation Editor/translation_tr.json @@ -234,14 +234,6 @@ ], "desc": "Kullanılan adaptörün güç miktarı" }, - "PowerLimitEnable": { - "text": "PLIMEN", - "text2": [ - "P Limit", - "Enable" - ], - "desc": "Enable power limit" - }, "PowerLimit": { "text": "PLIM", "text2": [ diff --git a/Translation Editor/translation_uk.json b/Translation Editor/translation_uk.json index 76b7d4fc..787e3e16 100644 --- a/Translation Editor/translation_uk.json +++ b/Translation Editor/translation_uk.json @@ -236,14 +236,6 @@ ], "desc": "Потужність джерела живлення в Ватах" }, - "PowerLimitEnable": { - "text": "PLIMEN", - "text2": [ - "Ліміт", - "потужності" - ], - "desc": "Вмикає обмеження потужності споживання" - }, "PowerLimit": { "text": "PLIM", "text2": [ diff --git a/Translation Editor/translations_def.js b/Translation Editor/translations_def.js index 2e6d4a2f..9a9cb454 100644 --- a/Translation Editor/translations_def.js +++ b/Translation Editor/translations_def.js @@ -258,11 +258,6 @@ var def = "maxLen": 8, "maxLen2": 16 }, - { - "id": "PowerLimitEnable", - "maxLen": 6, - "maxLen2": 13 - }, { "id": "PowerLimit", "maxLen": 5, diff --git a/workspace/TS100/Core/Inc/Settings.h b/workspace/TS100/Core/Inc/Settings.h index 21d4b35d..05e43395 100644 --- a/workspace/TS100/Core/Inc/Settings.h +++ b/workspace/TS100/Core/Inc/Settings.h @@ -49,7 +49,6 @@ typedef struct { uint16_t CalibrationOffset; // This stores the temperature offset for this tip // in the iron. - uint8_t powerLimitEnable; // Allow toggling of power limit without changing value uint8_t powerLimit; // Maximum power iron allowed to output uint16_t TipGain; // uV/C * 10, it can be used to convert tip thermocouple voltage to temperateture TipV/TipGain = TipTemp diff --git a/workspace/TS100/Core/Src/Settings.cpp b/workspace/TS100/Core/Src/Settings.cpp index 3fe8a2ad..fcd8255b 100644 --- a/workspace/TS100/Core/Src/Settings.cpp +++ b/workspace/TS100/Core/Src/Settings.cpp @@ -71,7 +71,6 @@ void resetSettings() { systemSettings.temperatureInF = TEMPERATURE_INF; // default to 0 #endif systemSettings.descriptionScrollSpeed = DESCRIPTION_SCROLL_SPEED; // default to slow - systemSettings.powerLimitEnable = POWER_LIMIT_ENABLE; // Default to no power limit systemSettings.CalibrationOffset = CALIBRATION_OFFSET; // the adc offset in uV systemSettings.powerLimit = POWER_LIMIT; // 30 watts default limit systemSettings.ReverseButtonTempChangeEnabled = REVERSE_BUTTON_TEMP_CHANGE; // diff --git a/workspace/TS100/Core/Src/gui.cpp b/workspace/TS100/Core/Src/gui.cpp index ccfe0466..7062532b 100644 --- a/workspace/TS100/Core/Src/gui.cpp +++ b/workspace/TS100/Core/Src/gui.cpp @@ -42,8 +42,6 @@ static bool settings_setAdvancedIDLEScreens(void); static void settings_displayAdvancedIDLEScreens(void); static bool settings_setScrollSpeed(void); static void settings_displayScrollSpeed(void); -static bool settings_setPowerLimitEnable(void); -static void settings_displayPowerLimitEnable(void); static bool settings_setPowerLimit(void); static void settings_displayPowerLimit(void); static bool settings_setDisplayRotation(void); @@ -137,13 +135,11 @@ const menuitem rootSettingsMenu[] { #endif { (const char*) NULL, settings_enterSolderingMenu, settings_displaySolderingMenu }, /*Soldering*/ - { (const char*) NULL, settings_enterPowerMenu, - settings_displayPowerMenu }, /*Sleep Options Menu*/ - { (const char*) NULL, settings_enterUIMenu, - settings_displayUIMenu }, /*UI Menu*/ + { (const char*) NULL, settings_enterPowerMenu, settings_displayPowerMenu }, /*Sleep Options Menu*/ + { (const char*) NULL, settings_enterUIMenu, settings_displayUIMenu }, /*UI Menu*/ { (const char*) NULL, settings_enterAdvancedMenu, settings_displayAdvancedMenu }, /*Advanced Menu*/ - { NULL, NULL , NULL } // end of menu marker. DO NOT REMOVE + { NULL, NULL, NULL } // end of menu marker. DO NOT REMOVE }; const menuitem solderingMenu[] = { @@ -160,9 +156,9 @@ const menuitem solderingMenu[] = { settings_displayBoostTemp }, /*Boost Temp*/ { (const char*) SettingsDescriptions[10], settings_setAutomaticStartMode, settings_displayAutomaticStartMode }, /*Auto start*/ -{ (const char*) SettingsDescriptions[24], settings_setTempChangeShortStep, +{ (const char*) SettingsDescriptions[23], settings_setTempChangeShortStep, settings_displayTempChangeShortStep }, /*Temp change short step*/ -{ (const char*) SettingsDescriptions[25], settings_setTempChangeLongStep, +{ (const char*) SettingsDescriptions[24], settings_setTempChangeLongStep, settings_displayTempChangeLongStep }, /*Temp change long step*/ { NULL, NULL, NULL } // end of menu marker. DO NOT REMOVE }; @@ -179,15 +175,14 @@ const menuitem UIMenu[] = { { (const char*) SettingsDescriptions[5], settings_setTempF, settings_displayTempF }, /* Temperature units*/ #endif - { (const char*) SettingsDescriptions[7], - settings_setDisplayRotation, - settings_displayDisplayRotation }, /*Display Rotation*/ + { (const char*) SettingsDescriptions[7], settings_setDisplayRotation, + settings_displayDisplayRotation }, /*Display Rotation*/ { (const char*) SettingsDescriptions[11], settings_setCoolingBlinkEnabled, settings_displayCoolingBlinkEnabled }, /*Cooling blink warning*/ { (const char*) SettingsDescriptions[16], settings_setScrollSpeed, settings_displayScrollSpeed }, /*Scroll Speed for descriptions*/ - { (const char*) SettingsDescriptions[23], + { (const char*) SettingsDescriptions[22], settings_setReverseButtonTempChangeEnabled, settings_displayReverseButtonTempChangeEnabled }, /* Reverse Temp change buttons + - */ { NULL, NULL, NULL } // end of menu marker. DO NOT REMOVE @@ -212,7 +207,6 @@ const menuitem PowerMenu[] = { const menuitem advancedMenu[] = { /* - * Power limit enable * Power limit * Detailed IDLE * Detailed Soldering @@ -221,24 +215,21 @@ const menuitem advancedMenu[] = { * Reset Settings * Power Pulse */ -{ (const char*) SettingsDescriptions[21], settings_setPowerLimitEnable, - settings_displayPowerLimitEnable }, /*Power limit enable*/ -{ (const char*) SettingsDescriptions[22], settings_setPowerLimit, +{ (const char*) SettingsDescriptions[21], settings_setPowerLimit, settings_displayPowerLimit }, /*Power limit*/ { (const char*) SettingsDescriptions[6], settings_setAdvancedIDLEScreens, settings_displayAdvancedIDLEScreens }, /* Advanced idle screen*/ -{ (const char*) SettingsDescriptions[15], - settings_setAdvancedSolderingScreens, - settings_displayAdvancedSolderingScreens }, /* Advanced soldering screen*/ +{ (const char*) SettingsDescriptions[15], settings_setAdvancedSolderingScreens, + settings_displayAdvancedSolderingScreens }, /* Advanced soldering screen*/ { (const char*) SettingsDescriptions[13], settings_setResetSettings, settings_displayResetSettings }, /*Resets settings*/ { (const char*) SettingsDescriptions[12], settings_setCalibrate, settings_displayCalibrate }, /*Calibrate tip*/ { (const char*) SettingsDescriptions[14], settings_setCalibrateVIN, settings_displayCalibrateVIN }, /*Voltage input cal*/ -{ (const char*) SettingsDescriptions[26], settings_setPowerPulse, +{ (const char*) SettingsDescriptions[25], settings_setPowerPulse, settings_displayPowerPulse }, /*Power Pulse adjustment */ -{ (const char*) SettingsDescriptions[27], settings_setTipGain, +{ (const char*) SettingsDescriptions[26], settings_setTipGain, settings_displayTipGain }, /*TipGain*/ { NULL, NULL, NULL } // end of menu marker. DO NOT REMOVE }; @@ -332,7 +323,7 @@ static int userConfirmation(const char *message) { static bool settings_setInputVRange(void) { systemSettings.cutoutSetting = (systemSettings.cutoutSetting + 1) % 5; if (systemSettings.cutoutSetting) - systemSettings.powerLimitEnable = 0; // disable power limit if switching to a lipo power source + systemSettings.powerLimit = 0; // disable power limit if switching to a lipo power source return systemSettings.cutoutSetting == 4; } @@ -506,27 +497,21 @@ static void settings_displayAdvancedIDLEScreens(void) { OLED::drawCheckbox(systemSettings.detailedIDLE); } -static bool settings_setPowerLimitEnable(void) { - systemSettings.powerLimitEnable = !systemSettings.powerLimitEnable; - return false; -} - -static void settings_displayPowerLimitEnable(void) { - printShortDescription(21, 7); - OLED::drawCheckbox(systemSettings.powerLimitEnable); -} - static bool settings_setPowerLimit(void) { systemSettings.powerLimit += POWER_LIMIT_STEPS; if (systemSettings.powerLimit > MAX_POWER_LIMIT) - systemSettings.powerLimit = POWER_LIMIT_STEPS; + systemSettings.powerLimit = 0; return systemSettings.powerLimit + POWER_LIMIT_STEPS > MAX_POWER_LIMIT; } static void settings_displayPowerLimit(void) { - printShortDescription(22, 5); - OLED::printNumber(systemSettings.powerLimit, 2); - OLED::print(SymbolWatts); + printShortDescription(21, 5); + if (systemSettings.powerLimit == 0) { + OLED::print(OffString); + } else { + OLED::printNumber(systemSettings.powerLimit, 2); + OLED::print(SymbolWatts); + } } static bool settings_setScrollSpeed(void) { @@ -824,7 +809,7 @@ static bool settings_setTipGain(void) { } static void settings_displayTipGain(void) { - printShortDescription(27, 5); + printShortDescription(26, 5); } static bool settings_setReverseButtonTempChangeEnabled(void) { @@ -834,7 +819,7 @@ static bool settings_setReverseButtonTempChangeEnabled(void) { } static void settings_displayReverseButtonTempChangeEnabled(void) { - printShortDescription(23, 7); + printShortDescription(22, 7); OLED::drawCheckbox(systemSettings.ReverseButtonTempChangeEnabled); } @@ -847,7 +832,7 @@ static bool settings_setTempChangeShortStep(void) { } static void settings_displayTempChangeShortStep(void) { - printShortDescription(24, 6); + printShortDescription(23, 6); OLED::printNumber(systemSettings.TempChangeShortStep, 2); } @@ -860,7 +845,7 @@ static bool settings_setTempChangeLongStep(void) { } static void settings_displayTempChangeLongStep(void) { - printShortDescription(25, 6); + printShortDescription(24, 6); OLED::printNumber(systemSettings.TempChangeLongStep, 2); } @@ -871,7 +856,7 @@ static bool settings_setPowerPulse(void) { return systemSettings.KeepAwakePulse == POWER_PULSE_MAX - 1; } static void settings_displayPowerPulse(void) { - printShortDescription(26, 5); + printShortDescription(25, 5); if (systemSettings.KeepAwakePulse) { OLED::printNumber(systemSettings.KeepAwakePulse / 10, 1); OLED::print(SymbolDot); @@ -1042,7 +1027,8 @@ void gui_Menu(const menuitem *menu) { descriptionStart = 0; break; case BUTTON_F_LONG: - if ((int)(xTaskGetTickCount() - autoRepeatTimer + autoRepeatAcceleration) > + if ((int) (xTaskGetTickCount() - autoRepeatTimer + + autoRepeatAcceleration) > PRESS_ACCEL_INTERVAL_MAX) { if ((lastValue = menu[currentScreen].incrementHandler())) autoRepeatTimer = 1000; diff --git a/workspace/TS100/Core/Threads/PIDThread.cpp b/workspace/TS100/Core/Threads/PIDThread.cpp index b0e523dc..be94032e 100644 --- a/workspace/TS100/Core/Threads/PIDThread.cpp +++ b/workspace/TS100/Core/Threads/PIDThread.cpp @@ -112,7 +112,7 @@ void startPIDTask(void const *argument __unused) { if (getTipRawTemp(0) > (0x7FFF - 150)) { x10WattsOut = 0; } - if (systemSettings.powerLimitEnable + if (systemSettings.powerLimit && x10WattsOut > (systemSettings.powerLimit * 10)) { setTipX10Watts(systemSettings.powerLimit * 10); } else { diff --git a/workspace/TS100/configuration.h b/workspace/TS100/configuration.h index 25e9ab7a..623a87cd 100644 --- a/workspace/TS100/configuration.h +++ b/workspace/TS100/configuration.h @@ -80,7 +80,6 @@ #define CUT_OUT_SETTING 0 // default to no cut-off voltage (or 18W for TS80) #define TEMPERATURE_INF 0 // default to 0 #define DESCRIPTION_SCROLL_SPEED 0 // 0: Slow 1: Fast - default to slow -#define POWER_LIMIT_ENABLE 0 // 0: Disable 1: Enable - Default disabled power limit #define TIP_GAIN 210 // 21 uV/C * 10, uV per deg C constant of the tip, Tip uV * 10 / coeff = tip temp From 99ba13525a7f64309e68861c5245c6e2b25776f7 Mon Sep 17 00:00:00 2001 From: "Ben V. Brown" Date: Sun, 6 Sep 2020 16:04:41 +1000 Subject: [PATCH 26/32] Collapse Boost temp enable into setting Work for #642 --- Translation Editor/translation_bg.json | 8 -- Translation Editor/translation_cs.json | 8 -- Translation Editor/translation_da.json | 8 -- Translation Editor/translation_de.json | 8 -- Translation Editor/translation_en.json | 8 -- Translation Editor/translation_es.json | 8 -- Translation Editor/translation_fi.json | 8 -- Translation Editor/translation_fr.json | 8 -- Translation Editor/translation_hr.json | 8 -- Translation Editor/translation_hu.json | 8 -- Translation Editor/translation_it.json | 8 -- Translation Editor/translation_lt.json | 8 -- Translation Editor/translation_nl.json | 8 -- Translation Editor/translation_nl_be.json | 8 -- Translation Editor/translation_no.json | 8 -- Translation Editor/translation_pl.json | 8 -- Translation Editor/translation_pt.json | 8 -- Translation Editor/translation_ru.json | 8 -- Translation Editor/translation_sk.json | 8 -- Translation Editor/translation_sl.json | 8 -- Translation Editor/translation_sr_cyrl.json | 8 -- Translation Editor/translation_sr_latn.json | 8 -- Translation Editor/translation_sv.json | 8 -- Translation Editor/translation_tr.json | 8 -- Translation Editor/translation_uk.json | 8 -- Translation Editor/translations_def.js | 5 - workspace/TS100/Core/Inc/Settings.h | 3 +- workspace/TS100/Core/Src/Settings.cpp | 1 - workspace/TS100/Core/Src/gui.cpp | 102 ++++++++++---------- workspace/TS100/Core/Threads/GUIThread.cpp | 2 +- 30 files changed, 53 insertions(+), 260 deletions(-) diff --git a/Translation Editor/translation_bg.json b/Translation Editor/translation_bg.json index 643c13b5..3033bbb3 100644 --- a/Translation Editor/translation_bg.json +++ b/Translation Editor/translation_bg.json @@ -132,14 +132,6 @@ ], "desc": "Ориентация на дисплея " }, - "BoostEnabled": { - "text": "", - "text2": [ - "Турбо режим", - "пуснат" - ], - "desc": "Ползвай предния бутон за \"турбо\" режим с температура до 450C при запояване" - }, "BoostTemperature": { "text": "", "text2": [ diff --git a/Translation Editor/translation_cs.json b/Translation Editor/translation_cs.json index c1d66a24..de2faf02 100755 --- a/Translation Editor/translation_cs.json +++ b/Translation Editor/translation_cs.json @@ -132,14 +132,6 @@ ], "desc": "Orientace obrazovky ." }, - "BoostEnabled": { - "text": "", - "text2": [ - "Povolit", - "boost" - ], - "desc": "Povolit boost podržením předního tlačítka při pájení?" - }, "BoostTemperature": { "text": "", "text2": [ diff --git a/Translation Editor/translation_da.json b/Translation Editor/translation_da.json index 8cefa35d..d1434060 100644 --- a/Translation Editor/translation_da.json +++ b/Translation Editor/translation_da.json @@ -130,14 +130,6 @@ ], "desc": "Skærm Orientering " }, - "BoostEnabled": { - "text": "BOOST", - "text2": [ - "Boosttaste", - "aktiv?" - ], - "desc": "Vordere Taste lange drücken für Temperatur-Boostmodus beim Löten" - }, "BoostTemperature": { "text": "BTMP", "text2": [ diff --git a/Translation Editor/translation_en.json b/Translation Editor/translation_en.json index 66f58642..c267dadf 100644 --- a/Translation Editor/translation_en.json +++ b/Translation Editor/translation_en.json @@ -133,14 +133,6 @@ ], "desc": "Display orientation " }, - "BoostEnabled": { - "text": "BOOST", - "text2": [ - "Boost", - "mode" - ], - "desc": "Enable front key long press \"boost mode\" when soldering" - }, "BoostTemperature": { "text": "BTMP", "text2": [ diff --git a/Translation Editor/translation_es.json b/Translation Editor/translation_es.json index 8de00bd7..8f54ba27 100644 --- a/Translation Editor/translation_es.json +++ b/Translation Editor/translation_es.json @@ -132,14 +132,6 @@ ], "desc": "Orientación de la pantalla " }, - "BoostEnabled": { - "text": "BOOST", - "text2": [ - "Con botón de", - "temp. extra" - ], - "desc": "Permite mantener pulsado el primer botón (A) al soldar y calentar momentáneamente un poco más." - }, "BoostTemperature": { "text": "BTMP", "text2": [ diff --git a/Translation Editor/translation_fi.json b/Translation Editor/translation_fi.json index f179c530..7209aba7 100644 --- a/Translation Editor/translation_fi.json +++ b/Translation Editor/translation_fi.json @@ -130,14 +130,6 @@ ], "desc": "Näytön kierto. " }, - "BoostEnabled": { - "text": "", - "text2": [ - "Tehostus", - "käytössä" - ], - "desc": "Etupainikeella siirrytään juotettaessa tehostustilaan." - }, "BoostTemperature": { "text": "", "text2": [ diff --git a/Translation Editor/translation_fr.json b/Translation Editor/translation_fr.json index f55d9ce8..ee36eb11 100644 --- a/Translation Editor/translation_fr.json +++ b/Translation Editor/translation_fr.json @@ -130,14 +130,6 @@ ], "desc": "Orientation de l'affichage " }, - "BoostEnabled": { - "text": "", - "text2": [ - "Activation du", - "mode Boost" - ], - "desc": "Activer le mode \"Boost\" en maintenant le bouton de devant pendant la soudure" - }, "BoostTemperature": { "text": "", "text2": [ diff --git a/Translation Editor/translation_hr.json b/Translation Editor/translation_hr.json index cec60dba..d4c5de90 100644 --- a/Translation Editor/translation_hr.json +++ b/Translation Editor/translation_hr.json @@ -130,14 +130,6 @@ ], "desc": "Orijentacija ekrana. " }, - "BoostEnabled": { - "text": "BOOST", - "text2": [ - "Boost", - "način" - ], - "desc": "Držanjem prednjeg gumba prilikom lemljenja aktivira se pojačani (Boost) način." - }, "BoostTemperature": { "text": "BTMP", "text2": [ diff --git a/Translation Editor/translation_hu.json b/Translation Editor/translation_hu.json index 1b583503..d4a6cbed 100644 --- a/Translation Editor/translation_hu.json +++ b/Translation Editor/translation_hu.json @@ -130,14 +130,6 @@ ], "desc": "Kijelző tájolása " }, - "BoostEnabled": { - "text": "BOOST", - "text2": [ - "Boost", - "mód" - ], - "desc": "Elülső gombbal boost módba (450C) lép forrasztás közben" - }, "BoostTemperature": { "text": "BHŐ", "text2": [ diff --git a/Translation Editor/translation_it.json b/Translation Editor/translation_it.json index 069ca63f..a3f2b112 100644 --- a/Translation Editor/translation_it.json +++ b/Translation Editor/translation_it.json @@ -132,14 +132,6 @@ ], "desc": "Imposta l'orientamento del display " }, - "BoostEnabled": { - "text": "", - "text2": [ - "Funzione", - "«Turbo»" - ], - "desc": "Attiva la funzione «Turbo», durante la modalità Saldatura, tenendo premuto il tasto superiore" - }, "BoostTemperature": { "text": "", "text2": [ diff --git a/Translation Editor/translation_lt.json b/Translation Editor/translation_lt.json index ae489e19..fd7aeabf 100644 --- a/Translation Editor/translation_lt.json +++ b/Translation Editor/translation_lt.json @@ -130,14 +130,6 @@ ], "desc": "Ekrano orientacija " }, - "BoostEnabled": { - "text": "", - "text2": [ - "Turbo režimas", - "įjungtas" - ], - "desc": "Ar lituojant viršutinis mygtukas įjungia turbo režimą" - }, "BoostTemperature": { "text": "", "text2": [ diff --git a/Translation Editor/translation_nl.json b/Translation Editor/translation_nl.json index 7b20ed69..6c64f6a6 100644 --- a/Translation Editor/translation_nl.json +++ b/Translation Editor/translation_nl.json @@ -130,14 +130,6 @@ ], "desc": "Schermoriëntatie " }, - "BoostEnabled": { - "text": "", - "text2": [ - "Boostmodes", - "ingeschakeld?" - ], - "desc": "Soldeerbout gaat naar een hogere boost-temperatuur wanneer de voorste knop ingedrukt is." - }, "BoostTemperature": { "text": "", "text2": [ diff --git a/Translation Editor/translation_nl_be.json b/Translation Editor/translation_nl_be.json index e636024f..2a8f928f 100644 --- a/Translation Editor/translation_nl_be.json +++ b/Translation Editor/translation_nl_be.json @@ -130,14 +130,6 @@ ], "desc": "Schermoriëntatie " }, - "BoostEnabled": { - "text": "", - "text2": [ - "Temperatuurverhoging", - "ingeschakeld?" - ], - "desc": "Temperatuur verhoogt als voorste knop is ingedrukt" - }, "BoostTemperature": { "text": "", "text2": [ diff --git a/Translation Editor/translation_no.json b/Translation Editor/translation_no.json index 673a7176..38af2491 100644 --- a/Translation Editor/translation_no.json +++ b/Translation Editor/translation_no.json @@ -130,14 +130,6 @@ ], "desc": "Skjermretning " }, - "BoostEnabled": { - "text": "BOOST", - "text2": [ - "Tryb", - "boost" - ], - "desc": "Przytrzymaj przedni przycisk podczas lutowania w celu zwiększenia temperatury" - }, "BoostTemperature": { "text": "BTMP", "text2": [ diff --git a/Translation Editor/translation_pt.json b/Translation Editor/translation_pt.json index defb47b6..87cd2755 100644 --- a/Translation Editor/translation_pt.json +++ b/Translation Editor/translation_pt.json @@ -130,14 +130,6 @@ ], "desc": "Orientação da tela " }, - "BoostEnabled": { - "text": "TURBO", - "text2": [ - "Modo turbo", - "activado" - ], - "desc": "Tecla frontal activa modo \"turbo\"" - }, "BoostTemperature": { "text": "TTMP", "text2": [ diff --git a/Translation Editor/translation_ru.json b/Translation Editor/translation_ru.json index 4923001c..068e9ffb 100644 --- a/Translation Editor/translation_ru.json +++ b/Translation Editor/translation_ru.json @@ -132,14 +132,6 @@ ], "desc": "Ориентация экрана <А=Авто, Л=Левая рука, П=Правая рука>" }, - "BoostEnabled": { - "text": "Турб", - "text2": [ - "Турбо", - "режим" - ], - "desc": "Включить активацию турбо-режима удержанием ближней к жалу кнопки во время пайки" - }, "BoostTemperature": { "text": "ТемпТурб", "text2": [ diff --git a/Translation Editor/translation_sk.json b/Translation Editor/translation_sk.json index c38bb7e9..9a88f76e 100644 --- a/Translation Editor/translation_sk.json +++ b/Translation Editor/translation_sk.json @@ -130,14 +130,6 @@ ], "desc": "Orientacia displeja " }, - "BoostEnabled": { - "text": "BOOST", - "text2": [ - "", - "" - ], - "desc": "Povolit tlacidlo pre prudky nahrev " - }, "BoostTemperature": { "text": "BTMP", "text2": [ diff --git a/Translation Editor/translation_sl.json b/Translation Editor/translation_sl.json index 91c85fd6..3ce10328 100644 --- a/Translation Editor/translation_sl.json +++ b/Translation Editor/translation_sl.json @@ -131,14 +131,6 @@ ], "desc": "Orientacija zaslona " }, - "BoostEnabled": { - "text": "BOOST", - "text2": [ - "Omogoči", - "boost mode" - ], - "desc": "Omogoči, da tipka za naprej zagreje konico na 450C." - }, "BoostTemperature": { "text": "BTMP", "text2": [ diff --git a/Translation Editor/translation_sr_cyrl.json b/Translation Editor/translation_sr_cyrl.json index b96b1762..8f4f1765 100644 --- a/Translation Editor/translation_sr_cyrl.json +++ b/Translation Editor/translation_sr_cyrl.json @@ -130,14 +130,6 @@ ], "desc": "Како је окренут екран. <А=аутоматски, Л=за леворуке, Д=за десноруке>" }, - "BoostEnabled": { - "text": "Пјчње", - "text2": [ - "Појачање", - "омогућено" - ], - "desc": "Држање предњег тастера током лемљења додатно појачава температуру врха." - }, "BoostTemperature": { "text": "ТПјч", "text2": [ diff --git a/Translation Editor/translation_sr_latn.json b/Translation Editor/translation_sr_latn.json index 8a97e6ac..a4b055e0 100644 --- a/Translation Editor/translation_sr_latn.json +++ b/Translation Editor/translation_sr_latn.json @@ -130,14 +130,6 @@ ], "desc": "Kako je okrenut ekran. " }, - "BoostEnabled": { - "text": "Pjčnj", - "text2": [ - "Pojačanje", - "omogućeno" - ], - "desc": "Držanje prednjeg tastera tokom lemljenja dodatno pojačava temperaturu vrha." - }, "BoostTemperature": { "text": "TPjč", "text2": [ diff --git a/Translation Editor/translation_sv.json b/Translation Editor/translation_sv.json index 1d3d208f..1aae53a1 100644 --- a/Translation Editor/translation_sv.json +++ b/Translation Editor/translation_sv.json @@ -130,14 +130,6 @@ ], "desc": "Visningsläge " }, - "BoostEnabled": { - "text": "", - "text2": [ - "Turboläge", - "aktiverat" - ], - "desc": "Aktivera främre knappen för turboläge (temperaturhöjning) vid lödning" - }, "BoostTemperature": { "text": "", "text2": [ diff --git a/Translation Editor/translation_tr.json b/Translation Editor/translation_tr.json index a5e1ed24..99e3ca5b 100644 --- a/Translation Editor/translation_tr.json +++ b/Translation Editor/translation_tr.json @@ -130,14 +130,6 @@ ], "desc": "Görüntü Yönlendirme " }, - "BoostEnabled": { - "text": "BOOST", - "text2": [ - "", - "" - ], - "desc": "Lehimleme yaparken ön tuşa basmak Boost moduna sokar(450C)" - }, "BoostTemperature": { "text": "BTMP", "text2": [ diff --git a/Translation Editor/translation_uk.json b/Translation Editor/translation_uk.json index 787e3e16..81d9e01c 100644 --- a/Translation Editor/translation_uk.json +++ b/Translation Editor/translation_uk.json @@ -132,14 +132,6 @@ ], "desc": "Орієнтація дисплея " }, - "BoostEnabled": { - "text": "", - "text2": [ - "Режим", - "Турбо" - ], - "desc": "Турбо-режим при утриманні кнопки А при пайці" - }, "BoostTemperature": { "text": "", "text2": [ diff --git a/Translation Editor/translations_def.js b/Translation Editor/translations_def.js index 9a9cb454..df9a3df3 100644 --- a/Translation Editor/translations_def.js +++ b/Translation Editor/translations_def.js @@ -193,11 +193,6 @@ var def = "maxLen": 6, "maxLen2": 13 }, - { - "id": "BoostEnabled", - "maxLen": 6, - "maxLen2": 13 - }, { "id": "BoostTemperature", "maxLen": 4, diff --git a/workspace/TS100/Core/Inc/Settings.h b/workspace/TS100/Core/Inc/Settings.h index 05e43395..092a92cc 100644 --- a/workspace/TS100/Core/Inc/Settings.h +++ b/workspace/TS100/Core/Inc/Settings.h @@ -32,8 +32,7 @@ typedef struct { uint8_t autoStartMode :2; // Should the unit automatically jump straight // into soldering mode when power is applied uint8_t ShutdownTime; // Time until unit shuts down if left alone - uint8_t boostModeEnabled :1; // Boost mode swaps BUT_A in soldering mode to - // temporary soldering temp over-ride + uint8_t coolingTempBlink :1; // Should the temperature blink on the cool // down screen until its <50C uint8_t detailedIDLE :1; // Detailed idle screen diff --git a/workspace/TS100/Core/Src/Settings.cpp b/workspace/TS100/Core/Src/Settings.cpp index fcd8255b..77cc341f 100644 --- a/workspace/TS100/Core/Src/Settings.cpp +++ b/workspace/TS100/Core/Src/Settings.cpp @@ -63,7 +63,6 @@ void resetSettings() { systemSettings.sensitivity = SENSITIVITY; // Default high sensitivity systemSettings.voltageDiv = VOLTAGE_DIV; // Default divider from schematic systemSettings.ShutdownTime = SHUTDOWN_TIME; // How many minutes until the unit turns itself off - systemSettings.boostModeEnabled = BOOST_MODE_ENABLED; // Default to having boost mode on as most people prefer it systemSettings.BoostTemp = BOOST_TEMP; // default to 400C systemSettings.autoStartMode = AUTO_START_MODE; // Auto start off for safety systemSettings.coolingTempBlink = COOLING_TEMP_BLINK; // Blink the temperature on the cooling screen when its > 50C diff --git a/workspace/TS100/Core/Src/gui.cpp b/workspace/TS100/Core/Src/gui.cpp index 7062532b..033e5b31 100644 --- a/workspace/TS100/Core/Src/gui.cpp +++ b/workspace/TS100/Core/Src/gui.cpp @@ -46,8 +46,6 @@ static bool settings_setPowerLimit(void); static void settings_displayPowerLimit(void); static bool settings_setDisplayRotation(void); static void settings_displayDisplayRotation(void); -static bool settings_setBoostModeEnabled(void); -static void settings_displayBoostModeEnabled(void); static bool settings_setBoostTemp(void); static void settings_displayBoostTemp(void); static bool settings_setAutomaticStartMode(void); @@ -130,7 +128,7 @@ const menuitem rootSettingsMenu[] { { (const char*) SettingsDescriptions[0], settings_setInputVRange, settings_displayInputVRange }, /*Voltage input*/ #else - { (const char*) SettingsDescriptions[20], settings_setInputPRange, + { (const char*) SettingsDescriptions[19], settings_setInputPRange, settings_displayInputPRange }, /*Voltage input*/ #endif { (const char*) NULL, settings_enterSolderingMenu, @@ -150,15 +148,13 @@ const menuitem solderingMenu[] = { * Temp change short step * Temp change long step */ -{ (const char*) SettingsDescriptions[8], settings_setBoostModeEnabled, - settings_displayBoostModeEnabled }, /*Enable Boost*/ -{ (const char*) SettingsDescriptions[9], settings_setBoostTemp, +{ (const char*) SettingsDescriptions[8], settings_setBoostTemp, settings_displayBoostTemp }, /*Boost Temp*/ -{ (const char*) SettingsDescriptions[10], settings_setAutomaticStartMode, +{ (const char*) SettingsDescriptions[9], settings_setAutomaticStartMode, settings_displayAutomaticStartMode }, /*Auto start*/ -{ (const char*) SettingsDescriptions[23], settings_setTempChangeShortStep, +{ (const char*) SettingsDescriptions[22], settings_setTempChangeShortStep, settings_displayTempChangeShortStep }, /*Temp change short step*/ -{ (const char*) SettingsDescriptions[24], settings_setTempChangeLongStep, +{ (const char*) SettingsDescriptions[23], settings_setTempChangeLongStep, settings_displayTempChangeLongStep }, /*Temp change long step*/ { NULL, NULL, NULL } // end of menu marker. DO NOT REMOVE }; @@ -177,12 +173,12 @@ const menuitem UIMenu[] = { #endif { (const char*) SettingsDescriptions[7], settings_setDisplayRotation, settings_displayDisplayRotation }, /*Display Rotation*/ - { (const char*) SettingsDescriptions[11], + { (const char*) SettingsDescriptions[10], settings_setCoolingBlinkEnabled, settings_displayCoolingBlinkEnabled }, /*Cooling blink warning*/ - { (const char*) SettingsDescriptions[16], settings_setScrollSpeed, + { (const char*) SettingsDescriptions[15], settings_setScrollSpeed, settings_displayScrollSpeed }, /*Scroll Speed for descriptions*/ - { (const char*) SettingsDescriptions[22], + { (const char*) SettingsDescriptions[21], settings_setReverseButtonTempChangeEnabled, settings_displayReverseButtonTempChangeEnabled }, /* Reverse Temp change buttons + - */ { NULL, NULL, NULL } // end of menu marker. DO NOT REMOVE @@ -215,21 +211,21 @@ const menuitem advancedMenu[] = { * Reset Settings * Power Pulse */ -{ (const char*) SettingsDescriptions[21], settings_setPowerLimit, +{ (const char*) SettingsDescriptions[20], settings_setPowerLimit, settings_displayPowerLimit }, /*Power limit*/ { (const char*) SettingsDescriptions[6], settings_setAdvancedIDLEScreens, settings_displayAdvancedIDLEScreens }, /* Advanced idle screen*/ -{ (const char*) SettingsDescriptions[15], settings_setAdvancedSolderingScreens, +{ (const char*) SettingsDescriptions[14], settings_setAdvancedSolderingScreens, settings_displayAdvancedSolderingScreens }, /* Advanced soldering screen*/ -{ (const char*) SettingsDescriptions[13], settings_setResetSettings, +{ (const char*) SettingsDescriptions[12], settings_setResetSettings, settings_displayResetSettings }, /*Resets settings*/ -{ (const char*) SettingsDescriptions[12], settings_setCalibrate, +{ (const char*) SettingsDescriptions[11], settings_setCalibrate, settings_displayCalibrate }, /*Calibrate tip*/ -{ (const char*) SettingsDescriptions[14], settings_setCalibrateVIN, +{ (const char*) SettingsDescriptions[13], settings_setCalibrateVIN, settings_displayCalibrateVIN }, /*Voltage input cal*/ -{ (const char*) SettingsDescriptions[25], settings_setPowerPulse, +{ (const char*) SettingsDescriptions[24], settings_setPowerPulse, settings_displayPowerPulse }, /*Power Pulse adjustment */ -{ (const char*) SettingsDescriptions[26], settings_setTipGain, +{ (const char*) SettingsDescriptions[25], settings_setTipGain, settings_displayTipGain }, /*TipGain*/ { NULL, NULL, NULL } // end of menu marker. DO NOT REMOVE }; @@ -346,7 +342,7 @@ static bool settings_setInputPRange(void) { static void settings_displayInputPRange(void) { printShortDescription(0, 5); //0 = 9V, 1=12V (Fixed Voltages, these imply 1.5A limits) - /// TODO TS80P + // These are only used in QC3.0 modes switch (systemSettings.cutoutSetting) { case 0: OLED::printNumber(9, 2); @@ -481,7 +477,7 @@ static bool settings_setAdvancedSolderingScreens(void) { } static void settings_displayAdvancedSolderingScreens(void) { - printShortDescription(15, 7); + printShortDescription(14, 7); OLED::drawCheckbox(systemSettings.detailedSoldering); } @@ -505,7 +501,7 @@ static bool settings_setPowerLimit(void) { } static void settings_displayPowerLimit(void) { - printShortDescription(21, 5); + printShortDescription(20, 5); if (systemSettings.powerLimit == 0) { OLED::print(OffString); } else { @@ -523,7 +519,7 @@ static bool settings_setScrollSpeed(void) { } static void settings_displayScrollSpeed(void) { - printShortDescription(16, 7); + printShortDescription(15, 7); OLED::print( (systemSettings.descriptionScrollSpeed) ? SettingFastChar : SettingSlowChar); @@ -567,39 +563,43 @@ static void settings_displayDisplayRotation(void) { } } -static bool settings_setBoostModeEnabled(void) { - systemSettings.boostModeEnabled = !systemSettings.boostModeEnabled; - return false; -} - -static void settings_displayBoostModeEnabled(void) { - printShortDescription(8, 7); - - OLED::drawCheckbox(systemSettings.boostModeEnabled); -} - static bool settings_setBoostTemp(void) { #ifdef ENABLED_FAHRENHEIT_SUPPORT if (systemSettings.temperatureInF) { - systemSettings.BoostTemp += 20; // Go up 20F at a time + if (systemSettings.BoostTemp == 0) { + systemSettings.BoostTemp = 480; // loop back at 480 + } else { + systemSettings.BoostTemp += 20; // Go up 20F at a time + } + if (systemSettings.BoostTemp > 850) { - systemSettings.BoostTemp = 480; + systemSettings.BoostTemp = 0; // jump to off } return systemSettings.BoostTemp == 840; } else #endif { - systemSettings.BoostTemp += 10; // Go up 10C at a time - if (systemSettings.BoostTemp > 450) { + if (systemSettings.BoostTemp == 0) { systemSettings.BoostTemp = 250; // loop back at 250 + + } else { + systemSettings.BoostTemp += 10; // Go up 10C at a time + } + if (systemSettings.BoostTemp > 450) { + systemSettings.BoostTemp = 0; //Go to off state + } return systemSettings.BoostTemp == 450; } } static void settings_displayBoostTemp(void) { - printShortDescription(9, 5); - OLED::printNumber(systemSettings.BoostTemp, 3); + printShortDescription(8, 5); + if (systemSettings.BoostTemp) { + OLED::printNumber(systemSettings.BoostTemp, 3); + } else { + OLED::print(OffString); + } } static bool settings_setAutomaticStartMode(void) { @@ -609,7 +609,7 @@ static bool settings_setAutomaticStartMode(void) { } static void settings_displayAutomaticStartMode(void) { - printShortDescription(10, 7); + printShortDescription(9, 7); switch (systemSettings.autoStartMode) { case 0: @@ -636,7 +636,7 @@ static bool settings_setCoolingBlinkEnabled(void) { } static void settings_displayCoolingBlinkEnabled(void) { - printShortDescription(11, 7); + printShortDescription(10, 7); OLED::drawCheckbox(systemSettings.coolingTempBlink); } @@ -656,7 +656,7 @@ static bool settings_setResetSettings(void) { } static void settings_displayResetSettings(void) { - printShortDescription(13, 7); + printShortDescription(12, 7); } static void setTipOffset() { @@ -702,7 +702,7 @@ static bool settings_setCalibrate(void) { } static void settings_displayCalibrate(void) { - printShortDescription(12, 5); + printShortDescription(11, 5); } static bool settings_setCalibrateVIN(void) { @@ -809,7 +809,7 @@ static bool settings_setTipGain(void) { } static void settings_displayTipGain(void) { - printShortDescription(26, 5); + printShortDescription(25, 5); } static bool settings_setReverseButtonTempChangeEnabled(void) { @@ -819,7 +819,7 @@ static bool settings_setReverseButtonTempChangeEnabled(void) { } static void settings_displayReverseButtonTempChangeEnabled(void) { - printShortDescription(22, 7); + printShortDescription(21, 7); OLED::drawCheckbox(systemSettings.ReverseButtonTempChangeEnabled); } @@ -832,7 +832,7 @@ static bool settings_setTempChangeShortStep(void) { } static void settings_displayTempChangeShortStep(void) { - printShortDescription(23, 6); + printShortDescription(22, 6); OLED::printNumber(systemSettings.TempChangeShortStep, 2); } @@ -845,7 +845,7 @@ static bool settings_setTempChangeLongStep(void) { } static void settings_displayTempChangeLongStep(void) { - printShortDescription(24, 6); + printShortDescription(23, 6); OLED::printNumber(systemSettings.TempChangeLongStep, 2); } @@ -856,13 +856,13 @@ static bool settings_setPowerPulse(void) { return systemSettings.KeepAwakePulse == POWER_PULSE_MAX - 1; } static void settings_displayPowerPulse(void) { - printShortDescription(25, 5); + printShortDescription(24, 5); if (systemSettings.KeepAwakePulse) { OLED::printNumber(systemSettings.KeepAwakePulse / 10, 1); OLED::print(SymbolDot); OLED::printNumber(systemSettings.KeepAwakePulse % 10, 1); } else { - OLED::drawCheckbox(false); + OLED::print(OffString); } } @@ -880,7 +880,7 @@ static void displayMenu(size_t index) { } static void settings_displayCalibrateVIN(void) { - printShortDescription(14, 5); + printShortDescription(13, 5); } static void settings_displaySolderingMenu(void) { displayMenu(0); diff --git a/workspace/TS100/Core/Threads/GUIThread.cpp b/workspace/TS100/Core/Threads/GUIThread.cpp index 77a22f9d..280655b6 100644 --- a/workspace/TS100/Core/Threads/GUIThread.cpp +++ b/workspace/TS100/Core/Threads/GUIThread.cpp @@ -439,7 +439,7 @@ static void gui_solderingMode(uint8_t jumpToSleep) { break; case BUTTON_F_LONG: // if boost mode is enabled turn it on - if (systemSettings.boostModeEnabled) + if (systemSettings.BoostTemp) boostModeOn = true; break; case BUTTON_F_SHORT: From c7bde079cd30aa309038913699e56fe54940536f Mon Sep 17 00:00:00 2001 From: "Ben V. Brown" Date: Sun, 6 Sep 2020 16:11:53 +1000 Subject: [PATCH 27/32] Update Settings.h --- workspace/TS100/Core/Inc/Settings.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workspace/TS100/Core/Inc/Settings.h b/workspace/TS100/Core/Inc/Settings.h index 092a92cc..b5822dba 100644 --- a/workspace/TS100/Core/Inc/Settings.h +++ b/workspace/TS100/Core/Inc/Settings.h @@ -12,7 +12,7 @@ #include #include "stm32f1xx_hal.h" #include "unit.h" -#define SETTINGSVERSION ( 0x20 ) +#define SETTINGSVERSION ( 0x21 ) /*Change this if you change the struct below to prevent people getting \ out of sync*/ From aa78ca25946511cc4e3a4c7496e31d72e35c74b0 Mon Sep 17 00:00:00 2001 From: "Ben V. Brown" Date: Sun, 6 Sep 2020 16:44:19 +1000 Subject: [PATCH 28/32] Dropping single line menu support --- Translation Editor/TranslationEditor.html | 680 ++++++++++----------- Translation Editor/TranslationsParser.html | 645 ++++++++++--------- Translation Editor/make_translation.py | 36 +- workspace/TS100/Core/Inc/Translation.h | 4 - workspace/TS100/Core/Src/gui.cpp | 12 +- 5 files changed, 660 insertions(+), 717 deletions(-) diff --git a/Translation Editor/TranslationEditor.html b/Translation Editor/TranslationEditor.html index 5b8507c0..d6c7cf8d 100644 --- a/Translation Editor/TranslationEditor.html +++ b/Translation Editor/TranslationEditor.html @@ -1,353 +1,329 @@ - - - - - - TS100 Translation Editor - - - - - - - - - -
-

TS100 Translation Editor - {{ current.languageLocalName }} [{{current.languageCode}}]

- - - - - - - - - - - - - - - - - - - - - -
Referent Language - - {{ referent.languageLocalName }} [{{referent.languageCode}}] -
Current Language - - {{ current.languageLocalName }} [{{current.languageCode}}] -
Local Language Code
Local Language Name
Font table to use - -
- -
- - - -
-

Obsolete

- - - - - -
{{entry.id}}
{{entry.value}}
-
- -

Messages and Strings

- - - - - -
{{message.id}}
-
{{constraintString(message)}}
-
{{referent.messages[message.id]}}
-
{{message.note}}
-
-
- -

Characters

- - - - - -
{{char.id}}
-
{{constraintString(char)}}
-
{{referent.characters[char.id]}}
-
-
- -

Menu Groups

- - - - - -
{{menu.id}}
-
Menu Name
-
{{constraintString(menu)}}
-
{{referent.menuGroups[menu.id].text2}}
-
-
Description
-
{{referent.menuGroups[menu.id].desc}}
-
-
- -

Menu Options

- - - - - - - - - -
Menu Type - -
{{menu.id}}
-
-
Menu Name (Single-Line)
-
{{constraintString(menu, current.menuDouble)}}
-
{{referent.menuOptions[menu.id].text}}
-
-
-
-
Menu Name (Double-Line)
-
{{constraintString(menu, current.menuDouble)}}
-
{{referent.menuOptions[menu.id].text2}}
-
-
-
Description
-
{{referent.menuOptions[menu.id].desc}}
-
-
- - -
-
- + + + + + + TS100 Translation Editor + + + + + + + + + +
+

TS100 Translation Editor - {{ current.languageLocalName }} [{{current.languageCode}}]

+ + + + + + + + + + + + + + + + + + + + + +
Referent Language + + {{ referent.languageLocalName }} [{{referent.languageCode}}] +
Current Language + + {{ current.languageLocalName }} [{{current.languageCode}}] +
Local Language Code
Local Language Name
Font table to use + +
+ +
+ + + +
+

Obsolete

+ + + + + +
{{entry.id}}
{{entry.value}}
+
+ +

Messages and Strings

+ + + + + +
{{message.id}}
+
{{constraintString(message)}}
+
{{referent.messages[message.id]}}
+
{{message.note}}
+
+
+ +

Characters

+ + + + + +
{{char.id}}
+
{{constraintString(char)}}
+
{{referent.characters[char.id]}}
+
+
+ +

Menu Groups

+ + + + + +
{{menu.id}}
+
Menu Name
+
{{constraintString(menu)}}
+
{{referent.menuGroups[menu.id].text2}}
+
+
Description
+
{{referent.menuGroups[menu.id].desc}}
+
+
+ +

Menu Options

+ + + + + +
{{menu.id}}
+
+
Menu Name (Double-Line)
+
{{constraintString(menu)}}
+
{{referent.menuOptions[menu.id].text2}}
+
+
+
Description
+
{{referent.menuOptions[menu.id].desc}}
+
+
+ + +
+
+ \ No newline at end of file diff --git a/Translation Editor/TranslationsParser.html b/Translation Editor/TranslationsParser.html index 22991740..d47e5218 100644 --- a/Translation Editor/TranslationsParser.html +++ b/Translation Editor/TranslationsParser.html @@ -1,325 +1,322 @@ - - - - - - TS100 Translation Parser - - - - - - - - - -
-

TS100 Translation Parser

- - - - - -
Translation.cpp - -
- -
-
- - -
-
- -
- + + + + + + TS100 Translation Parser + + + + + + + + + +
+

TS100 Translation Parser

+ + + + + +
Translation.cpp + +
+ +
+
+ + +
+
+ +
+ \ No newline at end of file diff --git a/Translation Editor/make_translation.py b/Translation Editor/make_translation.py index 7757b29e..1bebe57c 100755 --- a/Translation Editor/make_translation.py +++ b/Translation Editor/make_translation.py @@ -167,11 +167,8 @@ def getLetterCounts(defs, lang): obj = lang['menuOptions'] for mod in defs['menuOptions']: eid = mod['id'] - if lang['menuDouble']: - textList.append(obj[eid]['text2'][0]) - textList.append(obj[eid]['text2'][1]) - else: - textList.append(obj[eid]['text']) + textList.append(obj[eid]['text2'][0]) + textList.append(obj[eid]['text2'][1]) obj = lang['menuGroups'] for mod in defs['menuGroups']: @@ -369,14 +366,6 @@ def writeLanguage(languageCode, defs, f): c) + "\"," + "//{} \n".format(c))) f.write(to_unicode("};\n\n")) - # ----- Menu Options - - # Menu type - f.write( - to_unicode( - "const enum ShortNameType SettingsShortNameType = SHORT_NAME_" + - ("DOUBLE" if lang['menuDouble'] else "SINGLE") + "_LINE;\n")) - # ----- Writing SettingsDescriptions obj = lang['menuOptions'] f.write(to_unicode("const char* SettingsShortNames[][2] = {\n")) @@ -388,19 +377,14 @@ def writeLanguage(languageCode, defs, f): if 'feature' in mod: f.write(to_unicode("#ifdef " + mod['feature'] + "\n")) f.write(to_unicode(" /* ["+"{:02d}".format(index)+"] " + eid.ljust(maxLen)[:maxLen] + " */ ")) - if lang['menuDouble']: - f.write( - to_unicode( - "{ \"" + - convStr(symbolConversionTable, (obj[eid]['text2'][0])) + - "\", \"" + - convStr(symbolConversionTable, (obj[eid]['text2'][1])) + - "\" }," + "//{} \n".format(obj[eid]['text2']))) - else: - f.write( - to_unicode("{ \"" + - convStr(symbolConversionTable, (obj[eid]['text'])) + - "\" }," + "//{} \n".format(obj[eid]['text']))) + f.write( + to_unicode( + "{ \"" + + convStr(symbolConversionTable, (obj[eid]['text2'][0])) + + "\", \"" + + convStr(symbolConversionTable, (obj[eid]['text2'][1])) + + "\" }," + "//{} \n".format(obj[eid]['text2']))) + if 'feature' in mod: f.write(to_unicode("#endif\n")) index = index + 1 diff --git a/workspace/TS100/Core/Inc/Translation.h b/workspace/TS100/Core/Inc/Translation.h index 614ea12f..b0ef244b 100644 --- a/workspace/TS100/Core/Inc/Translation.h +++ b/workspace/TS100/Core/Inc/Translation.h @@ -9,16 +9,12 @@ #define TRANSLATION_H_ #include "unit.h" #include "stdint.h" -enum ShortNameType { - SHORT_NAME_SINGLE_LINE = 1, SHORT_NAME_DOUBLE_LINE = 2, -}; extern const uint8_t USER_FONT_12[]; extern const uint8_t USER_FONT_6x8[]; /* * When SettingsShortNameType is SHORT_NAME_SINGLE_LINE * use SettingsShortNames as SettingsShortNames[16][1].. second column undefined */ -extern const enum ShortNameType SettingsShortNameType; extern const char *SettingsShortNames[28][2]; extern const char *SettingsDescriptions[28]; extern const char *SettingsMenuEntries[4]; diff --git a/workspace/TS100/Core/Src/gui.cpp b/workspace/TS100/Core/Src/gui.cpp index 033e5b31..2431a7a9 100644 --- a/workspace/TS100/Core/Src/gui.cpp +++ b/workspace/TS100/Core/Src/gui.cpp @@ -230,12 +230,6 @@ const menuitem advancedMenu[] = { { NULL, NULL, NULL } // end of menu marker. DO NOT REMOVE }; -static void printShortDescriptionSingleLine(uint32_t shortDescIndex) { - OLED::setFont(0); - OLED::setCharCursor(0, 0); - OLED::print(SettingsShortNames[shortDescIndex][0]); -} - static void printShortDescriptionDoubleLine(uint32_t shortDescIndex) { OLED::setFont(1); OLED::setCharCursor(0, 0); @@ -254,11 +248,7 @@ static void printShortDescriptionDoubleLine(uint32_t shortDescIndex) { static void printShortDescription(uint32_t shortDescIndex, uint16_t cursorCharPosition) { // print short description (default single line, explicit double line) - if (SettingsShortNameType == SHORT_NAME_DOUBLE_LINE) { - printShortDescriptionDoubleLine(shortDescIndex); - } else { - printShortDescriptionSingleLine(shortDescIndex); - } + printShortDescriptionDoubleLine(shortDescIndex); // prepare cursor for value OLED::setFont(0); From d50a7332507c0d27738bdc8f4cdbb7f86198a198 Mon Sep 17 00:00:00 2001 From: "Ben V. Brown" Date: Sun, 6 Sep 2020 16:44:31 +1000 Subject: [PATCH 29/32] Cull single line menu options from json languages --- Translation Editor/translation_bg.json | 79 +++++--------- Translation Editor/translation_cs.json | 59 +++-------- Translation Editor/translation_da.json | 93 ++++++---------- Translation Editor/translation_de.json | 79 +++++--------- Translation Editor/translation_en.json | 79 +++++--------- Translation Editor/translation_es.json | 79 +++++--------- Translation Editor/translation_fi.json | 79 +++++--------- Translation Editor/translation_fr.json | 79 +++++--------- Translation Editor/translation_hr.json | 79 +++++--------- Translation Editor/translation_hu.json | 79 +++++--------- Translation Editor/translation_it.json | 79 +++++--------- Translation Editor/translation_lt.json | 79 +++++--------- Translation Editor/translation_nl.json | 79 +++++--------- Translation Editor/translation_nl_be.json | 79 +++++--------- Translation Editor/translation_no.json | 111 ++++++++------------ Translation Editor/translation_pl.json | 79 +++++--------- Translation Editor/translation_pt.json | 79 +++++--------- Translation Editor/translation_ru.json | 79 +++++--------- Translation Editor/translation_sk.json | 111 ++++++++------------ Translation Editor/translation_sl.json | 79 +++++--------- Translation Editor/translation_sr_cyrl.json | 79 +++++--------- Translation Editor/translation_sr_latn.json | 79 +++++--------- Translation Editor/translation_sv.json | 79 +++++--------- Translation Editor/translation_tr.json | 111 ++++++++------------ Translation Editor/translation_uk.json | 79 +++++--------- 25 files changed, 695 insertions(+), 1370 deletions(-) diff --git a/Translation Editor/translation_bg.json b/Translation Editor/translation_bg.json index 3033bbb3..b5b477a7 100644 --- a/Translation Editor/translation_bg.json +++ b/Translation Editor/translation_bg.json @@ -36,7 +36,6 @@ "SettingStartSleepOffChar": "O", "SettingStartNoneChar": "F" }, - "menuDouble": true, "menuGroups": { "SolderingMenu": { "text2": [ @@ -69,208 +68,182 @@ }, "menuOptions": { "PowerSource": { - "text": "", - "text2": [ + "text2": [ "Източник", "захранване" ], "desc": "Източник на захранване. Минимално напрежение. " }, "SleepTemperature": { - "text": "", - "text2": [ + "text2": [ "Темп.", "сън" ], "desc": "Температура при режим \"сън\" " }, "SleepTimeout": { - "text": "", - "text2": [ + "text2": [ "Време", "сън" ], "desc": "Включване в режим \"сън\" след: <Минути/Секунди>" }, "ShutdownTimeout": { - "text": "", - "text2": [ + "text2": [ "Време", "изкл." ], "desc": "Изключване след <Минути>" }, "MotionSensitivity": { - "text": "", - "text2": [ + "text2": [ "Усещане", "за движение" ], "desc": "Усещане за движение <0.Изключено 1.Слабо 9.Силно>" }, "TemperatureUnit": { - "text": "", - "text2": [ + "text2": [ "Единици за", "температура" ], "desc": "Единици за температура " }, "AdvancedIdle": { - "text": "", - "text2": [ + "text2": [ "Детайлен", "екран в покой" ], "desc": "Покажи детайлна информация със ситен шрифт на екрана в режим на покой." }, "DisplayRotation": { - "text": "", - "text2": [ + "text2": [ "Ориентация", "на дисплея" ], "desc": "Ориентация на дисплея " }, "BoostTemperature": { - "text": "", - "text2": [ + "text2": [ "Турбо", "темп." ], "desc": "Температура за \"турбо\" режим" }, "AutoStart": { - "text": "", - "text2": [ + "text2": [ "Автоматичен", "работен режим" ], "desc": "Режим на поялника при включване на захранването. T=Работен, S=Сън, F=Изключен" }, "CooldownBlink": { - "text": "", - "text2": [ + "text2": [ "Мигай при", "топъл поялник" ], "desc": "След изключване от работен режим, индикатора за температура да мига докато човката на поялника все още е топла" }, "TemperatureCalibration": { - "text": "", - "text2": [ + "text2": [ "Калибриране", "температура?" ], "desc": "Калибриране на температурата" }, "SettingsReset": { - "text": "", - "text2": [ + "text2": [ "Фабрични", "настройки?" ], "desc": "Връщане на фабрични настройки" }, "VoltageCalibration": { - "text": "", - "text2": [ + "text2": [ "Калибриране", "напрежение?" ], "desc": "Калибриране на входното напрежение. Задръжте бутонa за изход" }, "AdvancedSoldering": { - "text": "", - "text2": [ + "text2": [ "Детайлен", "работен екран" ], "desc": "Детайлна информация в работен режим при запояване" }, "ScrollingSpeed": { - "text": "", - "text2": [ + "text2": [ "Скорост", "на текста" ], "desc": "Скорост на движение на този текст" }, "TipModel": { - "text": "", - "text2": [ + "text2": [ "Модел", "на връх" ], "desc": "Избор на модел на връх" }, "SimpleCalibrationMode": { - "text": "", - "text2": [ + "text2": [ "Бърза", "калибрация" ], "desc": "Бърза калибрация с използване на гореща вода" }, "AdvancedCalibrationMode": { - "text": "", - "text2": [ + "text2": [ "Прецизна", "калибрация" ], "desc": "Прецизна калибрация с използване на термо-двойка на върха на поялника" }, "PowerInput": { - "text": "", - "text2": [ + "text2": [ "Мощност на", "захранване" ], "desc": "Мощност на избраното захранване" }, "PowerLimit": { - "text": "", - "text2": [ + "text2": [ "Лимит на", "мощност" ], "desc": "Максимална мощност на поялника " }, "ReverseButtonTempChange": { - "text": "", - "text2": [ + "text2": [ "Размяна", "бутони +-?" ], "desc": "Обръщане на бутоните \"+\" и \"-\" за промяна на температурата на върха на поялника" }, "TempChangeShortStep": { - "text": "", - "text2": [ + "text2": [ "Промяна T", "бързо?" ], "desc": "Промяна на температура при бързо натискане на бутон!" }, "TempChangeLongStep": { - "text": "", - "text2": [ + "text2": [ "Промяна Т", "задържане?" ], "desc": "Промяна на температура при задържане на бутон!" }, "PowerPulsePower":{ - "text": "", - "text2": [ + "text2": [ "Захранващ", "импулс" ], "desc": "Поддържане на интензивност на захранващия импулс" }, "TipGain": { - "text": "", - "text2": [ + "text2": [ "Промяна", "сила връх" ], diff --git a/Translation Editor/translation_cs.json b/Translation Editor/translation_cs.json index de2faf02..05195a17 100755 --- a/Translation Editor/translation_cs.json +++ b/Translation Editor/translation_cs.json @@ -36,7 +36,6 @@ "SettingStartSleepOffChar": "O", "SettingStartNoneChar": "F" }, - "menuDouble": true, "menuGroups": { "SolderingMenu": { "text2": [ @@ -69,135 +68,118 @@ }, "menuOptions": { "PowerSource": { - "text": "", - "text2": [ + "text2": [ "Zdroj", "napájení" ], "desc": "Při nižším napětí ukončí pájení ." }, "SleepTemperature": { - "text": "", - "text2": [ + "text2": [ "Teplota v", "r. spánku" ], "desc": "Teplota v režimu spánku." }, "SleepTimeout": { - "text": "", - "text2": [ + "text2": [ "Čas do", "r. spánku" ], "desc": "Čas do režimu spánku ." }, "ShutdownTimeout": { - "text": "", - "text2": [ + "text2": [ "Čas do", "vypnutí" ], "desc": "Čas do automatického vypnutí ." }, "MotionSensitivity": { - "text": "", - "text2": [ + "text2": [ "Citlivost", "det. pohybu" ], "desc": "Citlivost detekce pohybu <0=Vyp, 1=Min, ... 9=Max>." }, "TemperatureUnit": { - "text": "", - "text2": [ + "text2": [ "Jednotky", "teploty" ], "desc": "Jednotky měření teploty ." }, "AdvancedIdle": { - "text": "", - "text2": [ + "text2": [ "Podrobnosti", "na vých. obr." ], "desc": "Zobrazit podrobnosti na výchozí obrazovce?" }, "DisplayRotation": { - "text": "", - "text2": [ + "text2": [ "Orientace", "obrazovky" ], "desc": "Orientace obrazovky ." }, "BoostTemperature": { - "text": "", - "text2": [ + "text2": [ "Teplota v", "r. boost" ], "desc": "Teplota v režimu boost." }, "AutoStart": { - "text": "", - "text2": [ + "text2": [ "Automatický", "start" ], "desc": "Při startu ihned nahřát hrot?" }, "CooldownBlink": { - "text": "", - "text2": [ + "text2": [ "Blikáni při", "chladnutí" ], "desc": "Blikání teploty při chladnutí, dokud je hrot horký?" }, "TemperatureCalibration": { - "text": "", - "text2": [ + "text2": [ "Kalibrovat", "teplotu?" ], "desc": "Kalibrace měření teploty." }, "SettingsReset": { - "text": "", - "text2": [ + "text2": [ "Tovární", "nastavení?" ], "desc": "Obnovení továrního nastavení." }, "VoltageCalibration": { - "text": "", - "text2": [ + "text2": [ "Kalibrovat", "vstupní napětí?" ], "desc": "Kalibrace vstupního napětí. Tlačítky uprav, podržením potvrď." }, "AdvancedSoldering": { - "text": "", - "text2": [ + "text2": [ "Podrobnosti", "při pájení" ], "desc": "Zobrazit podrobnosti při pájení?" }, "ScrollingSpeed": { - "text": "", - "text2": [ + "text2": [ "Rychlost", "popisků" ], "desc": "Rychlost posuvu popisků podobných tomuto " }, "TipModel": { - "text": "TIPMO", "text2": [ "Model", "hrotu" @@ -205,7 +187,6 @@ "desc": "Výběr modelu hrotu." }, "SimpleCalibrationMode": { - "text": "SMPCAL", "text2": [ "Jednoduchá", "kalibrace" @@ -213,7 +194,6 @@ "desc": "Jednoduchá kalibrace pomocí horké vody." }, "AdvancedCalibrationMode": { - "text": "ADVCAL", "text2": [ "Pokročilá", "kalibrace" @@ -221,7 +201,6 @@ "desc": "Pokročilá kalibrace pomocí termočlánku na hrotu." }, "PowerInput": { - "text": "PWRW", "text2": [ "Výkon", "ve wattech" @@ -229,7 +208,6 @@ "desc": "Výkon použítého napájecího adaptéru ve wattech." }, "PowerLimit": { - "text": "PLIM", "text2": [ "Omezení", "Výkonu" @@ -237,7 +215,6 @@ "desc": "Maximální příkon " }, "ReverseButtonTempChange": { - "text": "RVTCHG", "text2": [ "Prohodit", "tl. +-?" @@ -245,7 +222,6 @@ "desc": "Prohodí tlačítka plus a minus pro změnu teploty hrotu." }, "TempChangeShortStep": { - "text": "TCHGST", "text2": [ "Krok teploty", "krátký?" @@ -253,7 +229,6 @@ "desc": "Velikost skoku při změně teploty krátkým stiskem tlačítka!" }, "TempChangeLongStep": { - "text": "TCHGLT", "text2": [ "Krok teploty", "dlouhý?" @@ -261,7 +236,6 @@ "desc": "Velikost skoku při změně teploty dlouhým stiskem tlačítka!" }, "PowerPulsePower": { - "text": "POWPLS", "text2": [ "Intenzita", "Výkon. pulsu" @@ -269,7 +243,6 @@ "desc": "Puls pro udržení zařízení v chodu (kvůli power bankám)." }, "TipGain": { - "text": "TG", "text2": [ "Změnit", "zisk hr." diff --git a/Translation Editor/translation_da.json b/Translation Editor/translation_da.json index d1434060..1b5033ca 100644 --- a/Translation Editor/translation_da.json +++ b/Translation Editor/translation_da.json @@ -34,7 +34,6 @@ "SettingStartSleepOffChar": "O", "SettingStartNoneChar": "S" }, - "menuDouble": false, "menuGroups": { "SolderingMenu": { "text2": [ @@ -67,135 +66,118 @@ }, "menuOptions": { "PowerSource": { - "text": "PWRSC", "text2": [ - "", - "" + "Power", + "source" ], "desc": "Strømforsyning. Indstil Cutoff Spændingen. " }, "SleepTimeout": { - "text": "STME", "text2": [ - "", - "" + "Sleep", + "timeout" ], "desc": "Dvale Timeout " }, "ReverseButtonTempChange": { - "text": "RVTCHG", "text2": [ "Key +-", "reverse?" @@ -243,7 +220,6 @@ "desc": "Reverse the tip temperature change buttons plus minus assignment." }, "TempChangeShortStep": { - "text": "TCHGST", "text2": [ "Temp change", "short?" @@ -251,7 +227,6 @@ "desc": "Temperature change steps on short button press!" }, "TempChangeLongStep": { - "text": "TCHGLT", "text2": [ "Temp change", "long?" @@ -259,7 +234,6 @@ "desc": "Temperature change steps on long button press!" }, "PowerPulsePower":{ - "text": "POWPLS", "text2": [ "Power", "Pulse W" @@ -267,7 +241,6 @@ "desc": "Keep awake pulse power intensity" }, "TipGain": { - "text": "TG", "text2": [ "Modify", "tip gain" diff --git a/Translation Editor/translation_de.json b/Translation Editor/translation_de.json index 378dc3ef..7603b9bb 100644 --- a/Translation Editor/translation_de.json +++ b/Translation Editor/translation_de.json @@ -37,7 +37,6 @@ "SettingStartSleepOffChar": "O", "SettingStartNoneChar": "F" }, - "menuDouble": true, "menuGroups": { "SolderingMenu": { "text2": [ @@ -70,184 +69,161 @@ }, "menuOptions": { "PowerSource": { - "text": "PWRSC", - "text2": [ + "text2": [ "Spannungs-", "quelle" ], "desc": "Spannungsquelle (Abschaltspannung) " }, "SleepTemperature": { - "text": "STMP", - "text2": [ + "text2": [ "Ruhetemp-", "eratur" ], "desc": "Ruhetemperatur" }, "SleepTimeout": { - "text": "STME", - "text2": [ + "text2": [ "Ruhever-", "zögerung" ], "desc": "Ruhemodus nach " }, "ShutdownTimeout": { - "text": "SHTME", - "text2": [ + "text2": [ "Abschalt-", "zeit" ], "desc": "Abschalten nach " }, "MotionSensitivity": { - "text": "MSENSE", - "text2": [ + "text2": [ "Bewegungs-", "empfindlichk." ], "desc": "Bewegungsempfindlichkeit <0=Aus, 1=Minimal ... 9=Maximal>" }, "TemperatureUnit": { - "text": "TMPUNT", - "text2": [ + "text2": [ "Temperatur-", "einheit" ], "desc": "Temperatureinheit " }, "AdvancedIdle": { - "text": "ADVIDL", - "text2": [ + "text2": [ "Detaillierte", "Ruheansicht" ], "desc": "Detaillierte Anzeige im Ruhemodus" }, "DisplayRotation": { - "text": "DSPROT", - "text2": [ + "text2": [ "Anzeige-", "ausrichtung" ], "desc": "Ausrichtung der Anzeige " }, "BoostTemperature": { - "text": "BTMP", - "text2": [ + "text2": [ "Boosttemp-", "eratur" ], "desc": "Temperatur im Boostmodus (In der eingestellten Einheit)" }, "AutoStart": { - "text": "ASTART", - "text2": [ + "text2": [ "Start im", "Lötmodus?" ], "desc": "Automatischer Start-Modus beim Einschalten der Spannungsversorgung. " }, "CooldownBlink": { - "text": "CLBLNK", - "text2": [ + "text2": [ "Abkühl-", "blinken?" ], "desc": "Blinkende Temperaturanzeige beim Abkühlen, solange heiß ist." }, "TemperatureCalibration": { - "text": "TMP CAL?", - "text2": [ + "text2": [ "Temperatur", "kalibrieren?" ], "desc": "Kalibrierung der Lötspitzentemperatur" }, "SettingsReset": { - "text": "RESET?", - "text2": [ + "text2": [ "Einstellungen", "zurücksetzen?" ], "desc": "Einstellungen auf werkseinstellungen zurück setzen" }, "VoltageCalibration": { - "text": "CAL VIN?", - "text2": [ + "text2": [ "Eingangsspannung", "kalibrieren?" ], "desc": "Kalibrierung der Eingangsspannung. Kurzer Tastendruck zum Einstellen, langer Tastendruck zum Verlassen." }, "AdvancedSoldering": { - "text": "ADVSLD", - "text2": [ + "text2": [ "Detaillierte", "Lötansicht" ], "desc": "Detaillierte Anzeige im Lötmodus" }, "ScrollingSpeed": { - "text": "DESCSP", - "text2": [ + "text2": [ "Scroll-", "geschw." ], "desc": "Scrollgeschwindigkeit der Texte " }, "TipModel": { - "text": "TIPMO", - "text2": [ + "text2": [ "Löt-", "spitze" ], "desc": "Auswahl der Lötspitze" }, "SimpleCalibrationMode": { - "text": "SMPCAL", - "text2": [ + "text2": [ "Einfache", "Kalibrierung" ], "desc": "Einfache Kalibrierung mittels heißem Wasser" }, "AdvancedCalibrationMode": { - "text": "ADVCAL", - "text2": [ + "text2": [ "Erweiterte", "Kalibrierung" ], "desc": "Erweiterte Kalibrierung mittels eines Thermoelements an der Lötspitze" }, "PowerInput": { - "text": "PWRW", - "text2": [ + "text2": [ "Leistungs-", "Aufnahme" ], "desc": "Leistungsaufnahme der verwendeten Spannungsversorgung" }, "PowerLimit": { - "text": "PLIM", - "text2": [ + "text2": [ "Leistungs-", "Limit" ], "desc": "Maximale aufnahme der Lötspitze " }, "ReverseButtonTempChange": { - "text": "RVTCHG", - "text2": [ + "text2": [ "Taste +-", "Umkehren?" ], "desc": "Temperatur-Änderungs-Tasten-Belegung Plus-Minus umkehren?" }, "TempChangeShortStep": { - "text": "TCHGST", - "text2": [ + "text2": [ "T. Schritt", "Taste kurz?" ], @@ -255,24 +231,21 @@ } , "TempChangeLongStep": { - "text": "TCHGLT", - "text2": [ + "text2": [ "T. Schritt", "Taste Lang?" ], "desc": "Temperaturwechselschritte bei langem Tastendruck!" }, "PowerPulsePower":{ - "text": "POWPLS", - "text2": [ + "text2": [ "Power", "Pulse W" ], "desc": "Keep awake pulse power intensity" }, "TipGain": { - "text": "TG", - "text2": [ + "text2": [ "Modify", "tip gain" ], diff --git a/Translation Editor/translation_en.json b/Translation Editor/translation_en.json index c267dadf..1a039077 100644 --- a/Translation Editor/translation_en.json +++ b/Translation Editor/translation_en.json @@ -37,7 +37,6 @@ "SettingStartSleepOffChar": "O", "SettingStartNoneChar": "F" }, - "menuDouble": true, "menuGroups": { "SolderingMenu": { "text2": [ @@ -70,208 +69,182 @@ }, "menuOptions": { "PowerSource": { - "text": "PWRSC", - "text2": [ + "text2": [ "Power", "source" ], "desc": "Power source. Sets cutoff voltage. " }, "SleepTemperature": { - "text": "STMP", - "text2": [ + "text2": [ "Sleep", "temp" ], "desc": "Sleep temperature" }, "SleepTimeout": { - "text": "STME", - "text2": [ + "text2": [ "Sleep", "timeout" ], "desc": "Sleep timeout " }, "ShutdownTimeout": { - "text": "SHTME", - "text2": [ + "text2": [ "Shutdown", "timeout" ], "desc": "Shutdown timeout " }, "MotionSensitivity": { - "text": "MSENSE", - "text2": [ + "text2": [ "Motion", "sensitivity" ], "desc": "Motion sensitivity <0=Off 1=Least sensitive 9=Most sensitive>" }, "TemperatureUnit": { - "text": "TMPUNT", - "text2": [ + "text2": [ "Temperature", "unit" ], "desc": "Temperature unit " }, "AdvancedIdle": { - "text": "ADVIDL", - "text2": [ + "text2": [ "Detailed", "idle screen" ], "desc": "Display detailed information in a smaller font on the idle screen" }, "DisplayRotation": { - "text": "DSPROT", - "text2": [ + "text2": [ "Display", "orientation" ], "desc": "Display orientation " }, "BoostTemperature": { - "text": "BTMP", - "text2": [ + "text2": [ "Boost", "temp" ], "desc": "Temperature when in \"boost mode\"" }, "AutoStart": { - "text": "ASTART", - "text2": [ + "text2": [ "Auto", "start" ], "desc": "Automatically starts the iron into soldering on power up " }, "CooldownBlink": { - "text": "CLBLNK", - "text2": [ + "text2": [ "Cooldown", "blink" ], "desc": "Blink the temperature on the cooling screen while the tip is still hot" }, "TemperatureCalibration": { - "text": "TMP CAL?", - "text2": [ + "text2": [ "Calibrate", "temperature?" ], "desc": "Calibrate tip offset?" }, "SettingsReset": { - "text": "RESET?", - "text2": [ + "text2": [ "Factory", "Reset?" ], "desc": "Reset all settings!" }, "VoltageCalibration": { - "text": "CAL VIN?", - "text2": [ + "text2": [ "Calibrate", "input voltage?" ], "desc": "VIN Calibration " }, "AdvancedSoldering": { - "text": "ADVSLD", - "text2": [ + "text2": [ "Detailed", "solder screen" ], "desc": "Display detailed information while soldering" }, "ScrollingSpeed": { - "text": "DESCSP", - "text2": [ + "text2": [ "Scrolling", "speed" ], "desc": "Speed this text scrolls past at " }, "TipModel": { - "text": "TIPMO", - "text2": [ + "text2": [ "Tip", "model" ], "desc": "Tip model selection" }, "SimpleCalibrationMode": { - "text": "SMPCAL", - "text2": [ + "text2": [ "Simple", "calibration" ], "desc": "Simple calibration using hot water" }, "AdvancedCalibrationMode": { - "text": "ADVCAL", - "text2": [ + "text2": [ "Advanced", "calibration" ], "desc": "Advanced calibration using thermocouple on the tip" }, "PowerInput": { - "text": "PWRW", - "text2": [ + "text2": [ "Power", "wattage" ], "desc": "Power wattage of the power adapter used" }, "PowerLimit": { - "text": "PLIM", - "text2": [ + "text2": [ "Power", "limit" ], "desc": "Maximum power the iron can use " }, "ReverseButtonTempChange": { - "text": "RVTCHG", - "text2": [ + "text2": [ "Reverse", "+ - keys" ], "desc": "Reverse assignment of temperature adjustment buttons" }, "TempChangeShortStep": { - "text": "TCHGST", - "text2": [ + "text2": [ "Temp change", "short" ], "desc": "Temperature change steps on short button press" }, "TempChangeLongStep": { - "text": "TCHGLT", - "text2": [ + "text2": [ "Temp change", "long" ], "desc": "Temperature change steps on long button press" }, "PowerPulsePower":{ - "text": "POWPLS", - "text2": [ + "text2": [ "Power", "Pulse W" ], "desc": "Keep awake pulse power intensity" }, "TipGain": { - "text": "TG", - "text2": [ + "text2": [ "Modify", "tip gain" ], diff --git a/Translation Editor/translation_es.json b/Translation Editor/translation_es.json index 8f54ba27..7357d144 100644 --- a/Translation Editor/translation_es.json +++ b/Translation Editor/translation_es.json @@ -36,7 +36,6 @@ "SettingStartSleepOffChar": "F", "SettingStartNoneChar": "N" }, - "menuDouble": true, "menuGroups": { "SolderingMenu": { "text2": [ @@ -69,208 +68,182 @@ }, "menuOptions": { "PowerSource": { - "text": "PWRSC", - "text2": [ + "text2": [ "Fuente", "de energía" ], "desc": "Elige el tipo de fuente para limitar el voltaje " }, "SleepTemperature": { - "text": "STMP", - "text2": [ + "text2": [ "Temperatura", "en reposo" ], "desc": "Temperatura de la punta en reposo." }, "SleepTimeout": { - "text": "STME", - "text2": [ + "text2": [ "Entrar", "en reposo" ], "desc": "Tiempo de inactividad para entrar en reposo " }, "ShutdownTimeout": { - "text": "SHTME", - "text2": [ + "text2": [ "Tiempo de", "apagado" ], "desc": "Tiempo de inactividad para apagarse " }, "MotionSensitivity": { - "text": "MSENSE", - "text2": [ + "text2": [ "Detección de", "movimiento" ], "desc": "Tiempo de reacción al agarrar <0=no 1=menos sensible 9=más sensible>" }, "TemperatureUnit": { - "text": "TMPUNT", - "text2": [ + "text2": [ "Unidad de", "temperatura" ], "desc": "Unidad de temperatura " }, "AdvancedIdle": { - "text": "ADVIDL", - "text2": [ + "text2": [ "Info extra en", "modo reposo" ], "desc": "Muestra información detallada en letra pequeña al reposar." }, "DisplayRotation": { - "text": "DSPROT", - "text2": [ + "text2": [ "Orientación", "de pantalla" ], "desc": "Orientación de la pantalla " }, "BoostTemperature": { - "text": "BTMP", - "text2": [ + "text2": [ "Ajustar la", "temp. extra" ], "desc": "Temperatura momentánea que se alcanza al apretar el botón del modo extra." }, "AutoStart": { - "text": "ASTART", - "text2": [ + "text2": [ "Calentar", "al enchufar" ], "desc": "Se calienta él solo al arrancar " }, "CooldownBlink": { - "text": "CLBLNK", - "text2": [ + "text2": [ "Parpadear", "al enfriar" ], "desc": "La temperatura en pantalla parpadea mientras la punta siga caliente." }, "TemperatureCalibration": { - "text": "TMP CAL?", - "text2": [ + "text2": [ "Calibrar temp.", "de la punta" ], "desc": "Calibra la desviación térmica de la punta." }, "SettingsReset": { - "text": "RESET?", - "text2": [ + "text2": [ "Volver a ajustes", "de fábrica" ], "desc": "Restablece todos los ajustes a los valores originales." }, "VoltageCalibration": { - "text": "CAL VIN?", - "text2": [ + "text2": [ "Calibrar voltaje", "de entrada" ], "desc": "Calibra VIN. Ajusta con ambos botones y mantén pulsado para salir." }, "AdvancedSoldering": { - "text": "ADVSLD", - "text2": [ + "text2": [ "Info extra", "al soldar" ], "desc": "Muestra más datos por pantalla cuando se está soldando." }, "ScrollingSpeed": { - "text": "DESCSP", - "text2": [ + "text2": [ "Velocidad", "del texto" ], "desc": "Velocidad de desplazamiento del texto " }, "TipModel": { - "text": "TIPMO", - "text2": [ + "text2": [ "Modelo de", "punta" ], "desc": "Elegir el modelo de punta actual." }, "SimpleCalibrationMode": { - "text": "SMPCAL", - "text2": [ + "text2": [ "Calibración", "simple" ], "desc": "Calibración simple con agua caliente." }, "AdvancedCalibrationMode": { - "text": "ADVCAL", - "text2": [ + "text2": [ "Calibración", "avanzada" ], "desc": "Calibrar con un termopar en la punta; más difícil." }, "PowerInput": { - "text": "PWRW", - "text2": [ + "text2": [ "Potencia de", "entrada" ], "desc": "Potencia en vatios del adaptador de corriente utilizado." }, "PowerLimit": { - "text": "PLIM", - "text2": [ + "text2": [ "Ajustar la", "potenc. máx." ], "desc": "Elige el límite de potencia máxima del soldador " }, "ReverseButtonTempChange": { - "text": "RVTCHG", - "text2": [ + "text2": [ "Invertir", "botones +/-" ], "desc": "Intercambia las funciones de subir y bajar la temperatura de los botones +/- para que funcionen al revés." }, "TempChangeShortStep": { - "text": "TCHGST", - "text2": [ + "text2": [ "Cambio temp.", "puls. cortas" ], "desc": "Subir y bajar X grados de temperatura con cada pulsación corta de los botones +/-." }, "TempChangeLongStep": { - "text": "TCHGLT", - "text2": [ + "text2": [ "Cambio temp.", "puls. largas" ], "desc": "Subir y bajar X grados de temperatura con cada pulsación larga de los botones +/-." }, "PowerPulsePower": { - "text": "POWPLS", - "text2": [ + "text2": [ "Pulsos bat.", "constantes" ], "desc": "Aplica unos pulsos necesarios para mantener encendidas ciertas baterías portátiles. En vatios." }, "TipGain": { - "text": "TG", - "text2": [ + "text2": [ "Ajustar ganancia", "de punta" ], diff --git a/Translation Editor/translation_fi.json b/Translation Editor/translation_fi.json index 7209aba7..eac2bff9 100644 --- a/Translation Editor/translation_fi.json +++ b/Translation Editor/translation_fi.json @@ -34,7 +34,6 @@ "SettingStartSleepOffChar": "O", "SettingStartNoneChar": "F" }, - "menuDouble": true, "menuGroups": { "SolderingMenu": { "text2": [ @@ -67,208 +66,182 @@ }, "menuOptions": { "PowerSource": { - "text": "", - "text2": [ + "text2": [ "Virtalähde", "DC" ], "desc": "Käytettävä virtalähde. Asettaa katkaisujänniteen. " }, "SleepTemperature": { - "text": "", - "text2": [ + "text2": [ "Lepotilan", "lämpötila" ], "desc": "Lepotilan lämpötila. " }, "SleepTimeout": { - "text": "", - "text2": [ + "text2": [ "Lepotilan", "viive" ], "desc": "Lepotilan viive. " }, "ShutdownTimeout": { - "text": "", - "text2": [ + "text2": [ "Sammutus", "viive" ], "desc": "Automaattisen sammutuksen aikaviive. " }, "MotionSensitivity": { - "text": "", - "text2": [ + "text2": [ "Liikkeen", "herkkyys" ], "desc": "Liikkeentunnistuksen herkkyys. <0=pois, 1=epäherkin, 9=herkin>" }, "TemperatureUnit": { - "text": "", - "text2": [ + "text2": [ "Lämpötilan", "yksikkö" ], "desc": "Lämpötilan yksikkö. " }, "AdvancedIdle": { - "text": "", - "text2": [ + "text2": [ "Tiedot", "lepotilassa" ], "desc": "Näyttää yksityiskohtaisemmat tiedot lepotilassa." }, "DisplayRotation": { - "text": "", - "text2": [ + "text2": [ "Näytön", "kierto" ], "desc": "Näytön kierto. " }, "BoostTemperature": { - "text": "", - "text2": [ + "text2": [ "Tehostus-", "lämpötila" ], "desc": "Tehostustilan lämpötila" }, "AutoStart": { - "text": "", - "text2": [ + "text2": [ "Autom.", "käynnistys" ], "desc": "Käynnistää virrat kytkettäessä juotostilan automaattisesti. T=juotostila, S=Lepotila, F=Ei käytössä" }, "CooldownBlink": { - "text": "", - "text2": [ + "text2": [ "Jäähdytyksen", "vilkutus" ], "desc": "Vilkuttaa jäähtyessä juotoskärjen lämpötilaa sen ollessa vielä vaarallisen kuuma." }, "TemperatureCalibration": { - "text": "", - "text2": [ + "text2": [ "Kalibroi", "lämpötila?" ], "desc": "Kalibroi kärjen lämpötilaeron." }, "SettingsReset": { - "text": "", - "text2": [ + "text2": [ "Palauta", "tehdasasetukset?" ], "desc": "Palauta kaikki asetukset oletusarvoihin." }, "VoltageCalibration": { - "text": "", - "text2": [ + "text2": [ "Kalibroi", "tulojännite?" ], "desc": "Tulojännitten kalibrointi (VIN). Painikkeilla säädetään ja pitkään painamalla poistutaan." }, "AdvancedSoldering": { - "text": "", - "text2": [ + "text2": [ "Tarkempi", "juotosnäyttö" ], "desc": "Näyttää yksityiskohtaisemmat tiedot juotostilassa." }, "ScrollingSpeed": { - "text": "", - "text2": [ + "text2": [ "Tietojen", "näyttönopeus" ], "desc": "Näiden selitetekstien vieritysnopeus." }, "TipModel": { - "text": "TIPMO", - "text2": [ + "text2": [ "Tip", "Model" ], "desc": "Tip Model selection" }, "SimpleCalibrationMode": { - "text": "SMPCAL", - "text2": [ + "text2": [ "Simple", "Calibration" ], "desc": "Simple Calibration using Hot water" }, "AdvancedCalibrationMode": { - "text": "ADVCAL", - "text2": [ + "text2": [ "Advanced", "Calibration" ], "desc": "Advanced calibration using thermocouple on the tip" }, "PowerInput": { - "text": "PWRW", - "text2": [ + "text2": [ "Power", "Wattage" ], "desc": "Power Wattage of the power adapter used" }, "PowerLimit": { - "text": "PLIM", - "text2": [ + "text2": [ "Power", "Limit" ], "desc": "Maximum power the iron can use " }, "ReverseButtonTempChange": { - "text": "RVTCHG", - "text2": [ + "text2": [ "Key +-", "reverse?" ], "desc": "Reverse the tip temperature change buttons plus minus assignment." }, "TempChangeShortStep": { - "text": "TCHGST", - "text2": [ + "text2": [ "Temp change", "short?" ], "desc": "Temperature change steps on short button press!" }, "TempChangeLongStep": { - "text": "TCHGLT", - "text2": [ + "text2": [ "Temp change", "long?" ], "desc": "Temperature change steps on long button press!" }, "PowerPulsePower":{ - "text": "POWPLS", - "text2": [ + "text2": [ "Power", "Pulse W" ], "desc": "Keep awake pulse power intensity" }, "TipGain": { - "text": "TG", - "text2": [ + "text2": [ "Modify", "tip gain" ], diff --git a/Translation Editor/translation_fr.json b/Translation Editor/translation_fr.json index ee36eb11..0ee8ec52 100644 --- a/Translation Editor/translation_fr.json +++ b/Translation Editor/translation_fr.json @@ -34,7 +34,6 @@ "SettingStartSleepOffChar": "O", "SettingStartNoneChar": "D" }, - "menuDouble": true, "menuGroups": { "SolderingMenu": { "text2": [ @@ -67,208 +66,182 @@ }, "menuOptions": { "PowerSource": { - "text": "", - "text2": [ + "text2": [ "Source", "d'alim" ], "desc": "Source d'alimentation. Règle la tension de coupure " }, "SleepTemperature": { - "text": "", - "text2": [ + "text2": [ "Temp.", "veille" ], "desc": "Température en veille " }, "SleepTimeout": { - "text": "", - "text2": [ + "text2": [ "Délai", "veille" ], "desc": "Délai avant mise en veille " }, "ShutdownTimeout": { - "text": "", - "text2": [ + "text2": [ "Délai", "extinction" ], "desc": "Délai avant extinction " }, "MotionSensitivity": { - "text": "", - "text2": [ + "text2": [ "Sensibilité", "au mouvement" ], "desc": "Sensibilité du capteur de mouvement <0=Inactif 1=Peu sensible 9=Tres sensible>" }, "TemperatureUnit": { - "text": "", - "text2": [ + "text2": [ "Unité de", "température" ], "desc": "Unité de température " }, "AdvancedIdle": { - "text": "", - "text2": [ + "text2": [ "Écran veille", "détaillé" ], "desc": "Afficher des informations détaillées lors de la veille." }, "DisplayRotation": { - "text": "", - "text2": [ + "text2": [ "Orientation", "de l'écran" ], "desc": "Orientation de l'affichage " }, "BoostTemperature": { - "text": "", - "text2": [ + "text2": [ "Temp.", "Boost" ], "desc": "Température du mode \"Boost\"" }, "AutoStart": { - "text": "", - "text2": [ + "text2": [ "Démarrage", "automatique" ], "desc": "Démarrer automatiquement la soudure a l'allumage " }, "CooldownBlink": { - "text": "", - "text2": [ + "text2": [ "Refroidir en", "clignotant" ], "desc": "Faire clignoter la température lors du refroidissement tant que la panne est chaude." }, "TemperatureCalibration": { - "text": "", - "text2": [ + "text2": [ "Étalonner", "température" ], "desc": "Étalonner température de la panne." }, "SettingsReset": { - "text": "", - "text2": [ + "text2": [ "Réinitialisation", "d'usine" ], "desc": "Réinitialiser tous les réglages" }, "VoltageCalibration": { - "text": "", - "text2": [ + "text2": [ "Étalonner", "tension d'entrée" ], "desc": "Étalonner tension d'entrée. Boutons pour ajuster, appui long pour quitter" }, "AdvancedSoldering": { - "text": "", - "text2": [ + "text2": [ "Écran soudure", "détaillé" ], "desc": "Afficher des informations détaillées pendant la soudure" }, "ScrollingSpeed": { - "text": "", - "text2": [ + "text2": [ "Vitesse de", "défilement" ], "desc": "Vitesse de défilement de ce texte en " }, "TipModel": { - "text": "TIPMO", - "text2": [ + "text2": [ "Panne", "Modèle" ], "desc": "Sélection du modèle de la panne" }, "SimpleCalibrationMode": { - "text": "SMPCAL", - "text2": [ + "text2": [ "Calibration", "simple" ], "desc": "Calibration simple à l'aide d'eau chaude" }, "AdvancedCalibrationMode": { - "text": "ADVCAL", - "text2": [ + "text2": [ "Calibration", "avancées" ], "desc": "Calibration avancées à l'aide d'un thermocouple sur la panne" }, "PowerInput": { - "text": "PWRW", - "text2": [ + "text2": [ "Puissance de", "l'alimentation" ], "desc": "Puissance de l'alimentation utilisée" }, "PowerLimit": { - "text": "PLIM", - "text2": [ + "text2": [ "Puissance", "Limite" ], "desc": "Puissance maximale utilisable " }, "ReverseButtonTempChange": { - "text": "RVTCHG", - "text2": [ + "text2": [ "Key +-", "Inverser?" ], "desc": "Inversez l'assignation +/- du bouton de changement de température de la pointe." }, "TempChangeShortStep": { - "text": "TCHGST", - "text2": [ + "text2": [ "Temp change", "Court?" ], "desc": "Incrément de changement de température sur appui court." }, "TempChangeLongStep": { - "text": "TCHGLT", - "text2": [ + "text2": [ "Temp change", "Long?" ], "desc": "Incrément de changement de température sur appui long." }, "PowerPulsePower":{ - "text": "POWPLS", - "text2": [ + "text2": [ "Power", "Pulse W" ], "desc": "Keep awake pulse power intensity" }, "TipGain": { - "text": "TG", - "text2": [ + "text2": [ "Modify", "tip gain" ], diff --git a/Translation Editor/translation_hr.json b/Translation Editor/translation_hr.json index d4c5de90..f1d5708d 100644 --- a/Translation Editor/translation_hr.json +++ b/Translation Editor/translation_hr.json @@ -34,7 +34,6 @@ "SettingStartSleepOffChar": "O", "SettingStartNoneChar": "F" }, - "menuDouble": true, "menuGroups": { "SolderingMenu": { "text2": [ @@ -67,208 +66,182 @@ }, "menuOptions": { "PowerSource": { - "text": "PWRSC", - "text2": [ + "text2": [ "Izvor", "napajanja" ], "desc": "Izvor napajanja. Postavlja napon isključivanja. " }, "SleepTemperature": { - "text": "STMP", - "text2": [ + "text2": [ "Temp", "spavanja" ], "desc": "Temperatura na koju se spušta lemilica nakon određenog vremena mirovanja. " }, "SleepTimeout": { - "text": "STME", - "text2": [ + "text2": [ "Vrijeme", "spavanja" ], "desc": "Vrijeme mirovanja nakon kojega lemilica spušta temperaturu. " }, "ShutdownTimeout": { - "text": "SHTME", - "text2": [ + "text2": [ "Vrijeme", "gašenja" ], "desc": "Vrijeme mirovanja nakon kojega će se lemilica ugasiti. " }, "MotionSensitivity": { - "text": "MSENSE", - "text2": [ + "text2": [ "Osjetljivost", "pokreta" ], "desc": "Osjetljivost prepoznavanja pokreta. <0=Ugašeno, 1=Najmanje osjetljivo, 9=Najosjetljivije>" }, "TemperatureUnit": { - "text": "TMPUNT", - "text2": [ + "text2": [ "Jedinica", "temperature" ], "desc": "Jedinica temperature. " }, "AdvancedIdle": { - "text": "ADVIDL", - "text2": [ + "text2": [ "Detalji", "pri čekanju" ], "desc": "Prikazivanje detaljnih informacija tijekom čekanja." }, "DisplayRotation": { - "text": "DSPROT", - "text2": [ + "text2": [ "Rotacija", "ekrana" ], "desc": "Orijentacija ekrana. " }, "BoostTemperature": { - "text": "BTMP", - "text2": [ + "text2": [ "Boost", "temp" ], "desc": "Temperatura u pojačanom (Boost) načinu." }, "AutoStart": { - "text": "ASTART", - "text2": [ + "text2": [ "Auto", "start" ], "desc": "Ako je aktivno, lemilica po uključivanju napajanja odmah počinje grijati." }, "CooldownBlink": { - "text": "CLBLNK", - "text2": [ + "text2": [ "Upozorenje", "pri hlađenju" ], "desc": "Bljeskanje temperature prilikom hlađenja, ako je lemilica vruća." }, "TemperatureCalibration": { - "text": "TMP CAL?", - "text2": [ + "text2": [ "Kalibracija", "temperature" ], "desc": "Kalibriranje temperature mjeri razliku temperatura vrška i drške, dok je lemilica hladna." }, "SettingsReset": { - "text": "RESET?", - "text2": [ + "text2": [ "Tvorničke", "postavke" ], "desc": "Vraćanje svih postavki na tvorničke vrijednosti." }, "VoltageCalibration": { - "text": "CAL VIN?", - "text2": [ + "text2": [ "Kalibracija", "napona napajanja" ], "desc": "Kalibracija ulaznog napona. Podešavanje gumbima, dugački pritisak za kraj." }, "AdvancedSoldering": { - "text": "ADVSLD", - "text2": [ + "text2": [ "Detalji", "pri lemljenju" ], "desc": "Prikazivanje detaljnih informacija tijekom lemljenja." }, "ScrollingSpeed": { - "text": "DESCSP", - "text2": [ + "text2": [ "Brzina", "poruka" ], "desc": "Brzina kretanja dugačkih poruka. " }, "TipModel": { - "text": "TIPMO", - "text2": [ + "text2": [ "Model", "Vrha" ], "desc": "Odabir modela lemnog vrha" }, "SimpleCalibrationMode": { - "text": "SMPCAL", - "text2": [ + "text2": [ "Jednostavna", "kalibracija" ], "desc": "Kalibracija kipućom vodom" }, "AdvancedCalibrationMode": { - "text": "ADVCAL", - "text2": [ + "text2": [ "Napredna", "kalibracija" ], "desc": "Kalibracija korištenjem termo-elementa" }, "PowerInput": { - "text": "PWRW", - "text2": [ + "text2": [ "Snaga", "napajanja" ], "desc": "Snaga modula za napajanje" }, "PowerLimit": { - "text": "PLIM", - "text2": [ + "text2": [ "Power", "Limit" ], "desc": "Maximum power the iron can use " }, "ReverseButtonTempChange": { - "text": "RVTCHG", - "text2": [ + "text2": [ "Key +-", "reverse?" ], "desc": "Reverse the tip temperature change buttons plus minus assignment." }, "TempChangeShortStep": { - "text": "TCHGST", - "text2": [ + "text2": [ "Temp change", "short?" ], "desc": "Temperature change steps on short button press!" }, "TempChangeLongStep": { - "text": "TCHGLT", - "text2": [ + "text2": [ "Temp change", "long?" ], "desc": "Temperature change steps on long button press!" }, "PowerPulsePower":{ - "text": "POWPLS", - "text2": [ + "text2": [ "Power", "Pulse W" ], "desc": "Keep awake pulse power intensity" }, "TipGain": { - "text": "TG", - "text2": [ + "text2": [ "Modify", "tip gain" ], diff --git a/Translation Editor/translation_hu.json b/Translation Editor/translation_hu.json index d4a6cbed..42928cbc 100644 --- a/Translation Editor/translation_hu.json +++ b/Translation Editor/translation_hu.json @@ -34,7 +34,6 @@ "SettingStartSleepOffChar": "O", "SettingStartNoneChar": "F" }, - "menuDouble": false, "menuGroups": { "SolderingMenu": { "text2": [ @@ -67,208 +66,182 @@ }, "menuOptions": { "PowerSource": { - "text": "ÁRAMF", - "text2": [ + "text2": [ "Áram", "forrás" ], "desc": "Áramforrás. Beállítja a lekapcsolási feszültséget. " }, "SleepTemperature": { - "text": "AHŐM", - "text2": [ + "text2": [ "Alvási", "hőfok" ], "desc": "Alvási hőmérséklet " }, "SleepTimeout": { - "text": "AIDŐ", - "text2": [ + "text2": [ "Alvás", "időzítő" ], "desc": "Alvás időzítő " }, "ShutdownTimeout": { - "text": "KIIDŐ", - "text2": [ + "text2": [ "Kikapcsolás", "időzítő" ], "desc": "Kikapcsolási időzítő " }, "MotionSensitivity": { - "text": "MOZGÉR", - "text2": [ + "text2": [ "Mozgás", "érzékenység" ], "desc": "Mozgás érzékenység beállítása. <0.kikapcsolva 1.legkevésbé érzékeny 9.legérzékenyebb>" }, "TemperatureUnit": { - "text": "HŐEGYS", - "text2": [ + "text2": [ "Hőmérséklet", "mértékegysége" ], "desc": "Hőmérséklet mértékegysége " }, "AdvancedIdle": { - "text": "RÉSZLI", - "text2": [ + "text2": [ "Részletes", "készenlét" ], "desc": "Részletes információ megjelenítése kisebb betűméretben a készenléti képernyőn." }, "DisplayRotation": { - "text": "KIJTÁJ", - "text2": [ + "text2": [ "Kijelző", "tájolása" ], "desc": "Kijelző tájolása " }, "BoostTemperature": { - "text": "BHŐ", - "text2": [ + "text2": [ "Boost", "hőfok" ], "desc": "Hőmérséklet \"boost\" módban" }, "AutoStart": { - "text": "ASTART", - "text2": [ + "text2": [ "Automatikus", "indítás" ], "desc": "Bekapcsolás után automatikusan lépjen forrasztás módba. T=forrasztás, S=alvó mód, F=ki" }, "CooldownBlink": { - "text": "HŰLÉSV", - "text2": [ + "text2": [ "Villogás", "hűléskor" ], "desc": "Villogjon a hőmérséklet hűlés közben, amíg a hegy forró." }, "TemperatureCalibration": { - "text": "HŐM KAL?", - "text2": [ + "text2": [ "Hőmérséklet", "kalibrálása?" ], "desc": "Hegy hőmérséklet-különbségének kalibrálása." }, "SettingsReset": { - "text": "RESET?", - "text2": [ + "text2": [ "Gyári", "beállítások?" ], "desc": "Beállítások alaphelyzetbe állítása" }, "VoltageCalibration": { - "text": "VIN KAL?", - "text2": [ + "text2": [ "Bemeneti fesz", "kalibrálása?" ], "desc": "Bemeneti feszültség kalibrálása. Röviden megnyomva módosítás, hosszan megnyomva kilépés" }, "AdvancedSoldering": { - "text": "HALKÉP", - "text2": [ + "text2": [ "Részletes", "forr. kép." ], "desc": "Részletes információk megjelenítése forrasztás közben" }, "ScrollingSpeed": { - "text": "GÖRGS", - "text2": [ + "text2": [ "Görgetés", "sebessége" ], "desc": "Szöveggörgetés sebessége" }, "TipModel": { - "text": "HEGYMOD", - "text2": [ + "text2": [ "Forrasztóhegy", "modell" ], "desc": "Forrasztóhegy modell kiválasztása" }, "SimpleCalibrationMode": { - "text": "EGYSZKAL", - "text2": [ + "text2": [ "Egyszerű", "kalibráció" ], "desc": "Egyszerű kalibrálás forró víz segítségével" }, "AdvancedCalibrationMode": { - "text": "HALKAL", - "text2": [ + "text2": [ "Haladó", "Kalibráció" ], "desc": "Haladó kalibrálás hegyre helyezett hőelem segítségével" }, "PowerInput": { - "text": "TELJW", - "text2": [ + "text2": [ "Bemeneti", "teljesítmény" ], "desc": "A tápegység által leadott teljesítmény" }, "PowerLimit": { - "text": "TELJM", - "text2": [ + "text2": [ "Telj", "maximum" ], "desc": "Maximális teljesitmény beállitása " }, "ReverseButtonTempChange": { - "text": "HÖVÁLT", - "text2": [ + "text2": [ "GOMB +-", "Felcseréled?" ], "desc": "A páka hömérséklet növelés csökkentési gombok felcserélése." }, "TempChangeShortStep": { - "text": "HÖRÖV", - "text2": [ + "text2": [ "Hömérséklet", "váltás rövid?" ], "desc": "Hömérséklet váltás rövid gombnyomásrs bekapcsolva!" }, "TempChangeLongStep": { - "text": "HÖHOS", - "text2": [ + "text2": [ "Hömérséklet", "váltás hosszú?" ], "desc": "Hömérséklet váltás hosszú gombnyomásrs bekapcsolva!" }, "PowerPulsePower":{ - "text": "TELJP", - "text2": [ + "text2": [ "Telj power", "bank üzem W" ], "desc": "Powerbank üzemnél nem engedi a powerbankot kikapcsolni idönkénti áram felvételt generál. " }, "TipGain": { - "text": "TG", - "text2": [ + "text2": [ "Modify", "tip gain" ], diff --git a/Translation Editor/translation_it.json b/Translation Editor/translation_it.json index a3f2b112..6a0e45a7 100644 --- a/Translation Editor/translation_it.json +++ b/Translation Editor/translation_it.json @@ -36,7 +36,6 @@ "SettingStartSleepOffChar": "O", "SettingStartNoneChar": "D" }, - "menuDouble": true, "menuGroups": { "SolderingMenu": { "text2": [ @@ -69,208 +68,182 @@ }, "menuOptions": { "PowerSource": { - "text": "", - "text2": [ + "text2": [ "Sorgente", "alimentaz" ], "desc": "Scegli la sorgente di alimentazione; se a batteria, limita lo scaricamento al valore di soglia " }, "SleepTemperature": { - "text": "", - "text2": [ + "text2": [ "Temp", "standby" ], "desc": "Imposta la temperatura da mantenere in modalità Standby <°C/°F>" }, "SleepTimeout": { - "text": "", - "text2": [ + "text2": [ "Timer", "standby" ], "desc": "Imposta il timer per entrare in modalità Standby " }, "ShutdownTimeout": { - "text": "", - "text2": [ + "text2": [ "Timer", "spegnimento" ], "desc": "Imposta il timer per lo spegnimento " }, "MotionSensitivity": { - "text": "", - "text2": [ + "text2": [ "Sensibilità", "al movimento" ], "desc": "Imposta la sensibilità al movimento per uscire dalla modalità Standby <0: nessuna; 1: minima; 9: massima>" }, "TemperatureUnit": { - "text": "", - "text2": [ + "text2": [ "Unità di", "temperatura" ], "desc": "Scegli l'unità di misura per la temperatura " }, "AdvancedIdle": { - "text": "", - "text2": [ + "text2": [ "Interfaccia", "testuale" ], "desc": "Mostra informazioni dettagliate all'interno della schermata principale" }, "DisplayRotation": { - "text": "", - "text2": [ + "text2": [ "Orientamento", "display" ], "desc": "Imposta l'orientamento del display " }, "BoostTemperature": { - "text": "", - "text2": [ + "text2": [ "Temp", "«Turbo»" ], "desc": "Imposta la temperatura della funzione «Turbo»" }, "AutoStart": { - "text": "", - "text2": [ + "text2": [ "Avvio", "automatico" ], "desc": "Attiva automaticamente il saldatore quando viene alimentato " }, "CooldownBlink": { - "text": "", - "text2": [ + "text2": [ "Avviso", "punta calda" ], "desc": "Evidenzia il valore di temperatura durante il raffreddamento se la punta è ancora calda" }, "TemperatureCalibration": { - "text": "", - "text2": [ + "text2": [ "Calibrazione", "temperatura" ], "desc": "Calibra le rilevazioni di temperatura" }, "SettingsReset": { - "text": "", - "text2": [ + "text2": [ "Ripristino", "impostazioni" ], "desc": "Ripristina tutte le impostazioni" }, "VoltageCalibration": { - "text": "", - "text2": [ + "text2": [ "Calibrazione", "tensione" ], "desc": "Calibra la tensione in ingresso; regola con entrambi i tasti, tieni premuto il tasto superiore per uscire" }, "AdvancedSoldering": { - "text": "", - "text2": [ + "text2": [ "Dettagli", "saldatura" ], "desc": "Mostra informazioni dettagliate durante la modalità Saldatura" }, "ScrollingSpeed": { - "text": "", - "text2": [ + "text2": [ "Velocità", "testo" ], "desc": "Imposta la velocità di scorrimento del testo " }, "TipModel": { - "text": "TIPMO", - "text2": [ + "text2": [ "Modello", "punta" ], "desc": "Seleziona il modello della punta in uso" }, "SimpleCalibrationMode": { - "text": "SMPCAL", - "text2": [ + "text2": [ "Calibrazione", "semplice" ], "desc": "Calibra le rilevazioni di temperatura tramite l'utilizzo di acqua calda" }, "AdvancedCalibrationMode": { - "text": "ADVCAL", - "text2": [ + "text2": [ "Calibrazione", "avanzata" ], "desc": "Calibra le rilevazioni di temperatura attraverso la termocoppia presente nella punta" }, "PowerInput": { - "text": "PWRW", - "text2": [ + "text2": [ "Potenza", "alimentaz" ], "desc": "Imposta la potenza massima erogabile dall'alimentatore in uso" }, "PowerLimit": { - "text": "PLIM", - "text2": [ + "text2": [ "Limite", "di potenza" ], "desc": "Imposta il valore di potenza massima erogabile al saldatore " }, "ReverseButtonTempChange": { - "text": "RVTCHG", - "text2": [ + "text2": [ "Inversione", "tasti" ], "desc": "Inverti i tasti per impostare la temperatura della punta " }, "TempChangeShortStep": { - "text": "TCHGST", - "text2": [ + "text2": [ "Cambio temp", "pressione breve" ], "desc": "Varia la temperatura della punta attraverso una breve pressione dei tasti" }, "TempChangeLongStep": { - "text": "TCHGLT", - "text2": [ + "text2": [ "Cambio temp", "pressione lunga" ], "desc": "Varia la temperatura della punta attraverso una lunga pressione dei tasti" }, "PowerPulsePower": { - "text": "POWPLS", - "text2": [ + "text2": [ "Potenza impulso", "«Keep-Alive»" ], "desc": "Regola la potenza d'impulso in ingresso al saldatore per prevenire lo standby eventuale dell'alimentatore " }, "TipGain": { - "text": "TG", - "text2": [ + "text2": [ "Guadagno", "punta" ], diff --git a/Translation Editor/translation_lt.json b/Translation Editor/translation_lt.json index fd7aeabf..2af028e4 100644 --- a/Translation Editor/translation_lt.json +++ b/Translation Editor/translation_lt.json @@ -34,7 +34,6 @@ "SettingStartSleepOffChar": "O", "SettingStartNoneChar": "F" }, - "menuDouble": true, "menuGroups": { "SolderingMenu": { "text2": [ @@ -67,208 +66,182 @@ }, "menuOptions": { "PowerSource": { - "text": "", - "text2": [ + "text2": [ "Maitinimo", "šaltinis" ], "desc": "Išjungimo įtampa. " }, "SleepTemperature": { - "text": "", - "text2": [ + "text2": [ "Miego", "temperat." ], "desc": "Miego temperatūra " }, "SleepTimeout": { - "text": "", - "text2": [ + "text2": [ "Miego", "laikas" ], "desc": "Miego laikas " }, "ShutdownTimeout": { - "text": "", - "text2": [ + "text2": [ "Išjungimo", "laikas" ], "desc": "Išjungimo laikas " }, "MotionSensitivity": { - "text": "", - "text2": [ + "text2": [ "Jautrumas", "judesiui" ], "desc": "Jautrumas judesiui <0 - išjungta, 1 - mažiausias, 9 - didžiausias>" }, "TemperatureUnit": { - "text": "", - "text2": [ + "text2": [ "Temperatūros", "vienetai" ], "desc": "Temperatūros vienetai " }, "AdvancedIdle": { - "text": "", - "text2": [ + "text2": [ "Detalus lauki", "mo ekranas" ], "desc": "Ar rodyti papildomą informaciją mažesniu šriftu laukimo ekrane" }, "DisplayRotation": { - "text": "", - "text2": [ + "text2": [ "Ekrano", "orientacija" ], "desc": "Ekrano orientacija
" }, "BoostTemperature": { - "text": "", - "text2": [ + "text2": [ "Turbo", "temperat." ], "desc": "Temperatūra turbo režimu" }, "AutoStart": { - "text": "", - "text2": [ + "text2": [ "Auto", "paleidimas" ], "desc": "Ar pradėti kaitininti iš karto įjungus lituoklį" }, "CooldownBlink": { - "text": "", - "text2": [ + "text2": [ "Atvėsimo", "mirksėjimas" ], "desc": "Ar mirksėti temperatūrą ekrane kol vėstantis antgalis vis dar karštas" }, "TemperatureCalibration": { - "text": "", - "text2": [ + "text2": [ "Kalibruoti", "temperatūrą?" ], "desc": "Antgalio temperatūros kalibravimas" }, "SettingsReset": { - "text": "", - "text2": [ + "text2": [ "Atstatyti", "nustatymus?" ], "desc": "Nustatyti nustatymus iš naujo" }, "VoltageCalibration": { - "text": "", - "text2": [ + "text2": [ "Kalibruoti", "įvesties įtampą?" ], "desc": "Įvesties įtampos kalibravimas. Trumpai paspauskite, norėdami nustatyti, ilgai paspauskite, kad išeitumėte" }, "AdvancedSoldering": { - "text": "", - "text2": [ + "text2": [ "Detalus lita-", "vimo ekranas" ], "desc": "Ar rodyti išsamią informaciją lituojant" }, "ScrollingSpeed": { - "text": "", - "text2": [ + "text2": [ "Greitas apr", "ašym. slink" ], "desc": "Greitis, kuriuo šis tekstas slenka" }, "TipModel": { - "text": "TIPMO", - "text2": [ + "text2": [ "Antgalio", "modelis" ], "desc": "Antgalio modelio pasirinkimas" }, "SimpleCalibrationMode": { - "text": "SMPCAL", - "text2": [ + "text2": [ "Paprasta", "kalibracija" ], "desc": "Paprasta kalibracija naudojant karštą vandienį" }, "AdvancedCalibrationMode": { - "text": "ADVCAL", - "text2": [ + "text2": [ "Išplėstinė", "kalibracija" ], "desc": "Išplėstinė kalibracija naudojant termoelementą" }, "PowerInput": { - "text": "PWRW", - "text2": [ + "text2": [ "Galia", "vatais" ], "desc": "Maitinimo bloko galia vatais" }, "PowerLimit": { - "text": "PLIM", - "text2": [ + "text2": [ "Power", "Limit" ], "desc": "Maximum power the iron can use " }, "ReverseButtonTempChange": { - "text": "RVTCHG", - "text2": [ + "text2": [ "Key +-", "reverse?" ], "desc": "Reverse the tip temperature change buttons plus minus assignment." }, "TempChangeShortStep": { - "text": "TCHGST", - "text2": [ + "text2": [ "Temp change", "short?" ], "desc": "Temperature change steps on short button press!" }, "TempChangeLongStep": { - "text": "TCHGLT", - "text2": [ + "text2": [ "Temp change", "long?" ], "desc": "Temperature change steps on long button press!" }, "PowerPulsePower":{ - "text": "POWPLS", - "text2": [ + "text2": [ "Power", "Pulse W" ], "desc": "Keep awake pulse power intensity" }, "TipGain": { - "text": "TG", - "text2": [ + "text2": [ "Modify", "tip gain" ], diff --git a/Translation Editor/translation_nl.json b/Translation Editor/translation_nl.json index 6c64f6a6..b592d6b3 100644 --- a/Translation Editor/translation_nl.json +++ b/Translation Editor/translation_nl.json @@ -34,7 +34,6 @@ "SettingStartSleepOffChar": "O", "SettingStartNoneChar": "F" }, - "menuDouble": true, "menuGroups": { "SolderingMenu": { "text2": [ @@ -67,208 +66,182 @@ }, "menuOptions": { "PowerSource": { - "text": "", - "text2": [ + "text2": [ "Spannings-", "bron" ], "desc": "Spanningsbron. Stelt drempelspanning in. " }, "SleepTemperature": { - "text": "", - "text2": [ + "text2": [ "Slaap", "temp" ], "desc": "Temperatuur in slaapstand " }, "SleepTimeout": { - "text": "", - "text2": [ + "text2": [ "Slaap", "time-out" ], "desc": "Slaapstand time-out " }, "ShutdownTimeout": { - "text": "", - "text2": [ + "text2": [ "Uitschakel", "time-out" ], "desc": "Automatisch afsluiten time-out " }, "MotionSensitivity": { - "text": "", - "text2": [ + "text2": [ "Bewegings-", "gevoeligheid" ], "desc": "Bewegingsgevoeligheid <0.uit 1.minst gevoelig 9.meest gevoelig>" }, "TemperatureUnit": { - "text": "", - "text2": [ + "text2": [ "Temperatuur", "eenheid" ], "desc": "Temperatuureenheid " }, "AdvancedIdle": { - "text": "", - "text2": [ + "text2": [ "Gedetailleerd", "slaapscherm" ], "desc": "Gedetailleerde informatie weergeven in een kleiner lettertype op het slaapscherm." }, "DisplayRotation": { - "text": "", - "text2": [ + "text2": [ "Scherm-", "oriëntatie" ], "desc": "Schermoriëntatie " }, "BoostTemperature": { - "text": "", - "text2": [ + "text2": [ "Boost", "temp" ], "desc": "Temperatuur in boostmodes" }, "AutoStart": { - "text": "", - "text2": [ + "text2": [ "Auto", "start" ], "desc": "Breng de soldeerbout direct op temperatuur bij het opstarten. T=Soldeertemperatuur, S=Slaapstand-temperatuur, F=Uit" }, "CooldownBlink": { - "text": "", - "text2": [ + "text2": [ "Afkoel", "flikker" ], "desc": "Temperatuur laten flikkeren in het hoofdmenu als de soldeerpunt aan het afkoelen is." }, "TemperatureCalibration": { - "text": "", - "text2": [ + "text2": [ "Calibreer", "temperatuur?" ], "desc": "Temperatuursafwijking van de soldeerpunt calibreren." }, "SettingsReset": { - "text": "", - "text2": [ + "text2": [ "Instellingen", "resetten?" ], "desc": "Alle instellingen terugzetten." }, "VoltageCalibration": { - "text": "", - "text2": [ + "text2": [ "Calibreer", "input-voltage?" ], "desc": "VIN Calibreren. Knoppen lang ingedrukt houden om te bevestigen." }, "AdvancedSoldering": { - "text": "", - "text2": [ + "text2": [ "Gedetailleerd", "soldeerscherm" ], "desc": "Gedetailleerde informatie weergeven in een kleiner lettertype op het soldeerscherm." }, "ScrollingSpeed": { - "text": "", - "text2": [ + "text2": [ "Scroll", "snelheid" ], "desc": "Snelheid waarmee de tekst scrolt." }, "TipModel": { - "text": "TIPMO", - "text2": [ + "text2": [ "Tip", "Model" ], "desc": "Tip Model selection" }, "SimpleCalibrationMode": { - "text": "SMPCAL", - "text2": [ + "text2": [ "Simple", "Calibration" ], "desc": "Simple Calibration using Hot water" }, "AdvancedCalibrationMode": { - "text": "ADVCAL", - "text2": [ + "text2": [ "Advanced", "Calibration" ], "desc": "Advanced calibration using thermocouple on the tip" }, "PowerInput": { - "text": "PWRW", - "text2": [ + "text2": [ "Power", "Wattage" ], "desc": "Power Wattage of the power adapter used" }, "PowerLimit": { - "text": "PLIM", - "text2": [ + "text2": [ "Power", "Limit" ], "desc": "Maximum power the iron can use " }, "ReverseButtonTempChange": { - "text": "RVTCHG", - "text2": [ + "text2": [ "Key +-", "reverse?" ], "desc": "Reverse the tip temperature change buttons plus minus assignment." }, "TempChangeShortStep": { - "text": "TCHGST", - "text2": [ + "text2": [ "Temp change", "short?" ], "desc": "Temperature change steps on short button press!" }, "TempChangeLongStep": { - "text": "TCHGLT", - "text2": [ + "text2": [ "Temp change", "long?" ], "desc": "Temperature change steps on long button press!" }, "PowerPulsePower":{ - "text": "POWPLS", - "text2": [ + "text2": [ "Power", "Pulse W" ], "desc": "Keep awake pulse power intensity" }, "TipGain": { - "text": "TG", - "text2": [ + "text2": [ "Modify", "tip gain" ], diff --git a/Translation Editor/translation_nl_be.json b/Translation Editor/translation_nl_be.json index 2a8f928f..9404c78a 100644 --- a/Translation Editor/translation_nl_be.json +++ b/Translation Editor/translation_nl_be.json @@ -34,7 +34,6 @@ "SettingStartSleepOffChar": "O", "SettingStartNoneChar": "F" }, - "menuDouble": true, "menuGroups": { "SolderingMenu": { "text2": [ @@ -67,208 +66,182 @@ }, "menuOptions": { "PowerSource": { - "text": "", - "text2": [ + "text2": [ "Spannings-", "bron" ], "desc": "Spanningsbron. Stelt minimumspanning in. " }, "SleepTemperature": { - "text": "", - "text2": [ + "text2": [ "Slaap", "temp" ], "desc": "Temperatuur in slaapstand <°C>" }, "SleepTimeout": { - "text": "", - "text2": [ + "text2": [ "Slaap", "time-out" ], "desc": "Slaapstand time-out " }, "ShutdownTimeout": { - "text": "", - "text2": [ + "text2": [ "Uitschakel", "time-out" ], "desc": "Automatisch afsluiten time-out " }, "MotionSensitivity": { - "text": "", - "text2": [ + "text2": [ "Bewegings-", "gevoeligheid" ], "desc": "Bewegingsgevoeligheid <0.uit 1.minst gevoelig 9.meest gevoelig>" }, "TemperatureUnit": { - "text": "", - "text2": [ + "text2": [ "Temperatuur", "schaal" ], "desc": "Temperatuurschaal <°C=Celsius °F=Fahrenheit>" }, "AdvancedIdle": { - "text": "", - "text2": [ + "text2": [ "Gedetailleerd", "slaapscherm" ], "desc": "Gedetailleerde informatie in een kleiner lettertype in het slaapscherm." }, "DisplayRotation": { - "text": "", - "text2": [ + "text2": [ "Scherm-", "oriëntatie" ], "desc": "Schermoriëntatie " }, "BoostTemperature": { - "text": "", - "text2": [ + "text2": [ "Verhogings", "temp" ], "desc": "Verhogingstemperatuur" }, "AutoStart": { - "text": "", - "text2": [ + "text2": [ "Auto", "start" ], "desc": "Breng de soldeerbout op temperatuur bij het opstarten. T=Soldeertemperatuur, S=Slaapstand-temperatuur, F=Uit" }, "CooldownBlink": { - "text": "", - "text2": [ + "text2": [ "Afkoel", "knipper" ], "desc": "Temperatuur knippert in hoofdmenu tijdens afkoeling." }, "TemperatureCalibration": { - "text": "", - "text2": [ + "text2": [ "Calibreer", "temperatuur?" ], "desc": "Temperatuur van de punt calibreren." }, "SettingsReset": { - "text": "", - "text2": [ + "text2": [ "Instellingen", "resetten?" ], "desc": "Alle instellingen resetten." }, "VoltageCalibration": { - "text": "", - "text2": [ + "text2": [ "Calibreer", "voedingsspanning?" ], "desc": "VIN Calibreren. Bevestigen door knoppen lang in te drukken." }, "AdvancedSoldering": { - "text": "", - "text2": [ + "text2": [ "Gedetailleerd", "soldeerscherm" ], "desc": "Gedetailleerde informatie in kleiner lettertype in soldeerscherm." }, "ScrollingSpeed": { - "text": "", - "text2": [ + "text2": [ "Scrol", "snelheid" ], "desc": "Scrolsnelheid van de tekst." }, "TipModel": { - "text": "PUNTMO", - "text2": [ + "text2": [ "Punt", "Model" ], "desc": "Gekozen punt" }, "SimpleCalibrationMode": { - "text": "SMPCAL", - "text2": [ + "text2": [ "Eenvoudige", "Calibrering" ], "desc": "Calibrering met heet water" }, "AdvancedCalibrationMode": { - "text": "ADVCAL", - "text2": [ + "text2": [ "Gevorderde", "Calibrering" ], "desc": "Calibrering met thermokoppel" }, "PowerInput": { - "text": "PWRW", - "text2": [ + "text2": [ "Vermogen", "Watt" ], "desc": "Vermogen van de adapter" }, "PowerLimit": { - "text": "PLIM", - "text2": [ + "text2": [ "Power", "Limit" ], "desc": "Maximum power the iron can use " }, "ReverseButtonTempChange": { - "text": "RVTCHG", - "text2": [ + "text2": [ "Key +-", "reverse?" ], "desc": "Reverse the tip temperature change buttons plus minus assignment." }, "TempChangeShortStep": { - "text": "TCHGST", - "text2": [ + "text2": [ "Temp change", "short?" ], "desc": "Temperature change steps on short button press!" }, "TempChangeLongStep": { - "text": "TCHGLT", - "text2": [ + "text2": [ "Temp change", "long?" ], "desc": "Temperature change steps on long button press!" }, "PowerPulsePower":{ - "text": "POWPLS", - "text2": [ + "text2": [ "Power", "Pulse W" ], "desc": "Keep awake pulse power intensity" }, "TipGain": { - "text": "TG", - "text2": [ + "text2": [ "Modify", "tip gain" ], diff --git a/Translation Editor/translation_no.json b/Translation Editor/translation_no.json index 38af2491..ddecb065 100644 --- a/Translation Editor/translation_no.json +++ b/Translation Editor/translation_no.json @@ -34,7 +34,6 @@ "SettingStartSleepOffChar": "O", "SettingStartNoneChar": "I" }, - "menuDouble": false, "menuGroups": { "SolderingMenu": { "text2": [ @@ -67,208 +66,182 @@ }, "menuOptions": { "PowerSource": { - "text": "Kilde", - "text2": [ - "", + "text2": [ + "Kilde", "" ], "desc": "Strømforsyning. Sett nedre spenning for automatisk nedstenging. " }, "SleepTimeout": { - "text": "DTid", - "text2": [ + "text2": [ "", "" ], "desc": "Tid før dvale " }, "ReverseButtonTempChange": { - "text": "RVTCHG", - "text2": [ + "text2": [ "Key +-", "reverse?" ], "desc": "Reverse the tip temperature change buttons plus minus assignment." }, "TempChangeShortStep": { - "text": "TCHGST", - "text2": [ + "text2": [ "Temp change", "short?" ], "desc": "Temperature change steps on short button press!" }, "TempChangeLongStep": { - "text": "TCHGLT", - "text2": [ + "text2": [ "Temp change", "long?" ], "desc": "Temperature change steps on long button press!" }, "PowerPulsePower":{ - "text": "POWPLS", - "text2": [ + "text2": [ "Power", "Pulse W" ], "desc": "Keep awake pulse power intensity" }, "TipGain": { - "text": "TG", - "text2": [ + "text2": [ "Modify", "tip gain" ], diff --git a/Translation Editor/translation_pl.json b/Translation Editor/translation_pl.json index b8fdfa19..e158629c 100644 --- a/Translation Editor/translation_pl.json +++ b/Translation Editor/translation_pl.json @@ -37,7 +37,6 @@ "SettingStartSleepOffChar": "O", "SettingStartNoneChar": "B" }, - "menuDouble": true, "menuGroups": { "SolderingMenu": { "text2": [ @@ -70,208 +69,182 @@ }, "menuOptions": { "PowerSource": { - "text": "PWRSC", - "text2": [ + "text2": [ "Źródło", "zasilania" ], "desc": "Źródło zasilania. Ustaw napięcie odcięcia. " }, "SleepTemperature": { - "text": "STMP", - "text2": [ + "text2": [ "Temperatura", "uśpienia" ], "desc": "Temperatura uśpienia <°C>" }, "SleepTimeout": { - "text": "STME", - "text2": [ + "text2": [ "Czas", "uśpienia" ], "desc": "Czas uśpienia " }, "ShutdownTimeout": { - "text": "SHTME", - "text2": [ + "text2": [ "Czas", "wyłączenia" ], "desc": "Czas wyłączenia " }, "MotionSensitivity": { - "text": "MSENSE", - "text2": [ + "text2": [ "Czułość", "ruchu" ], "desc": "Czułość ruchu <0.Wyłączona 1.Minimalna 9.Maksymalna>" }, "TemperatureUnit": { - "text": "TMPUNT", - "text2": [ + "text2": [ "Jednostka", "temperatury" ], "desc": "Jednostka temperatury " }, "AdvancedIdle": { - "text": "ADVIDL", - "text2": [ + "text2": [ "Mniejsza", "czcionka" ], "desc": "Wyświetla szczegółowe informacje za pomocą mniejszej czcionki na ekranie bezczynności" }, "DisplayRotation": { - "text": "DSPROT", - "text2": [ + "text2": [ "Orientacja", "wyświetlacza" ], "desc": "Orientacja wyświetlacza " }, "BoostTemperature": { - "text": "BTMP", - "text2": [ + "text2": [ "Temperatura", "w trybie boost" ], "desc": "Temperatura w trybie \"boost\" " }, "AutoStart": { - "text": "ASTART", - "text2": [ + "text2": [ "Automatyczne", "uruchamianie" ], "desc": "Automatyczne uruchamianie trybu lutowania po włączeniu zasilania. " }, "SleepTemperature": { - "text": "TMPE", - "text2": [ + "text2": [ "Temperat.", "repouso" ], "desc": "Temperatura de repouso " }, "SleepTimeout": { - "text": "TMPO", - "text2": [ + "text2": [ "Tempo", "repouso" ], "desc": "Tempo para repouso " }, "ShutdownTimeout": { - "text": "DESLI", - "text2": [ + "text2": [ "Tempo", "desligam." ], "desc": "Tempo para desligamento " }, "MotionSensitivity": { - "text": "MOVIME", - "text2": [ + "text2": [ "Sensibilidade", "movimento" ], "desc": "Sensibilidade ao movimento <0=Desligado 1=Menor 9=Maior>" }, "TemperatureUnit": { - "text": "UNIDAD", - "text2": [ + "text2": [ "Unidade", "temperatura" ], "desc": "Unidade de temperatura " }, "AdvancedIdle": { - "text": "EM ESPERA", - "text2": [ + "text2": [ "Tela repouso", "avançada" ], "desc": "Exibe informações avançadas quando em espera" }, "DisplayRotation": { - "text": "ORIENT", - "text2": [ + "text2": [ "Orientação", "tela" ], "desc": "Orientação da tela " }, "BoostTemperature": { - "text": "TTMP", - "text2": [ + "text2": [ "Modo turbo", "temperat." ], "desc": "Ajuste de temperatura do modo \"turbo\"" }, "AutoStart": { - "text": "MODOAT", - "text2": [ + "text2": [ "Partida", "automática" ], "desc": "Aquece a ponta automaticamente ao ligar" }, "CooldownBlink": { - "text": "RESFRI", - "text2": [ + "text2": [ "Piscar ao", "arrefecer" ], "desc": "Faz o valor da temperatura piscar durante o arrefecimento" }, "TemperatureCalibration": { - "text": "CAL.TEMP", - "text2": [ + "text2": [ "Calibrar", "temperatura" ], "desc": "Calibra a temperatura" }, "SettingsReset": { - "text": "RESET", - "text2": [ + "text2": [ "Reset de", "fábrica?" ], "desc": "Reverte todos ajustes" }, "VoltageCalibration": { - "text": "CAL.VOLT", - "text2": [ + "text2": [ "Calibrar", "tensão" ], "desc": "Calibra a tensão de alimentação. Use os botões para ajustar o valor. Mantenha pressionado para sair" }, "AdvancedSoldering": { - "text": "AVNCAD", - "text2": [ + "text2": [ "Tela trabalho", "avançada" ], "desc": "Exibe informações avançadas durante o uso" }, "ScrollingSpeed": { - "text": "DESCSP", - "text2": [ + "text2": [ "Velocidade", "texto ajuda" ], "desc": "Velocidade a que o texto é exibido" }, "TipModel": { - "text": "MODPNT", - "text2": [ + "text2": [ "Ponta", "Modelo" ], "desc": "Selecção de modelo de ponta" }, "SimpleCalibrationMode": { - "text": "SMPCAL", - "text2": [ + "text2": [ "Calibração", "Simples" ], "desc": "Calibração simples com água quente" }, "AdvancedCalibrationMode": { - "text": "ADVCAL", - "text2": [ + "text2": [ "Calibração", "Avançada" ], "desc": "Calibração avançada com um termopar na ponta" }, "PowerInput": { - "text": "PWRW", - "text2": [ + "text2": [ "Potência", "Fonte" ], "desc": "Potência da fonte usada (Watt)" }, "PowerLimit": { - "text": "PLIM", - "text2": [ + "text2": [ "Power", "Limit" ], "desc": "Maximum power the iron can use " }, "ReverseButtonTempChange": { - "text": "RVTCHG", - "text2": [ + "text2": [ "Key +-", "reverse?" ], "desc": "Reverse the tip temperature change buttons plus minus assignment." }, "TempChangeShortStep": { - "text": "TCHGST", - "text2": [ + "text2": [ "Temp change", "short?" ], "desc": "Temperature change steps on short button press!" }, "TempChangeLongStep": { - "text": "TCHGLT", - "text2": [ + "text2": [ "Temp change", "long?" ], "desc": "Temperature change steps on long button press!" }, "PowerPulsePower":{ - "text": "POWPLS", - "text2": [ + "text2": [ "Power", "Pulse W" ], "desc": "Keep awake pulse power intensity" }, "TipGain": { - "text": "TG", - "text2": [ + "text2": [ "Modify", "tip gain" ], diff --git a/Translation Editor/translation_ru.json b/Translation Editor/translation_ru.json index 068e9ffb..9723c112 100644 --- a/Translation Editor/translation_ru.json +++ b/Translation Editor/translation_ru.json @@ -36,7 +36,6 @@ "SettingStartSleepOffChar": "К", "SettingStartNoneChar": "В" }, - "menuDouble": true, "menuGroups": { "SolderingMenu": { "text2": [ @@ -69,208 +68,182 @@ }, "menuOptions": { "PowerSource": { - "text": "ИстчнПит", - "text2": [ + "text2": [ "Источник", "питания" ], "desc": "Источник питания. Устанавливает напряжение отсечки. " }, "SleepTemperature": { - "text": "ТмпОжд", - "text2": [ + "text2": [ "Темп.", "ожидания" ], "desc": "Температура режима ожидания" }, "SleepTimeout": { - "text": "ВрмОжид", - "text2": [ + "text2": [ "Таймаут", "ожидания" ], "desc": "Время до перехода в режим ожидания <Минуты/Секунды>" }, "ShutdownTimeout": { - "text": "ВрмОткл", - "text2": [ + "text2": [ "Таймаут", "выключения" ], "desc": "Время до отключения паяльника <Минуты>" }, "MotionSensitivity": { - "text": "ЧувсАксл", - "text2": [ + "text2": [ "Чувствительн.", "акселерометра" ], "desc": "Чувствительность акселерометра <0=Выкл., 1=Мин., 9=Макс.>" }, "TemperatureUnit": { - "text": "ЕдТемп", - "text2": [ + "text2": [ "Единицы", "температуры" ], "desc": "Единицы измерения температуры " }, "AdvancedIdle": { - "text": "ИнфОжд", - "text2": [ + "text2": [ "Подробный", "реж. ожидания" ], "desc": "Отображать детальную информацию уменьшенным шрифтом на экране ожидания" }, "DisplayRotation": { - "text": "ПовЭкр", - "text2": [ + "text2": [ "Ориентация", "экрана" ], "desc": "Ориентация экрана <А=Авто, Л=Левая рука, П=Правая рука>" }, "BoostTemperature": { - "text": "ТемпТурб", - "text2": [ + "text2": [ "t° турбо", "режима" ], "desc": "Температура жала в турбо-режиме" }, "AutoStart": { - "text": "АвтоРеж", - "text2": [ + "text2": [ "Авто", "старт" ], "desc": "Режим, в котором запускается паяльник при подаче питания <П=Пайка, О=Ожидание, К=Ожидание при комн. темп., В=Выкл.>" }, "CooldownBlink": { - "text": "МигТемп", - "text2": [ + "text2": [ "Мигание t°", "при остывании" ], "desc": "Мигать температурой на экране охлаждения, пока жало еще горячее" }, "TemperatureCalibration": { - "text": "КалТемп?", - "text2": [ + "text2": [ "Калибровка", "температуры" ], "desc": "Калибровка термодатчика жала" }, "SettingsReset": { - "text": "Сброс?", - "text2": [ + "text2": [ "Сброс", "Настроек" ], "desc": "Сброс настроек к значеням по умолчанию" }, "VoltageCalibration": { - "text": "КалНапр", - "text2": [ + "text2": [ "Калибровка", "напряжения" ], "desc": "Калибровка входного напряжения <длинное нажатие для выхода>" }, "AdvancedSoldering": { - "text": "ИнфПайк", - "text2": [ + "text2": [ "Подробный", "экран пайки" ], "desc": "Показывать детальную информацию на экране пайки" }, "ScrollingSpeed": { - "text": "СкорТекс", - "text2": [ + "text2": [ "Скорость", "текста" ], "desc": "Скорость прокрутки текста <М=медленно, Б=быстро>" }, "TipModel": { - "text": "МодЖала", - "text2": [ + "text2": [ "Модель", "жала" ], "desc": "Выбор модели жала" }, "SimpleCalibrationMode": { - "text": "УпрКал", - "text2": [ + "text2": [ "Упрощенная", "калибровка" ], "desc": "Упрощенная калибровка с использованием горячей воды" }, "AdvancedCalibrationMode": { - "text": "УлучшКал", - "text2": [ + "text2": [ "Улучшенная", "калибровка" ], "desc": "Улучшенная калибровка с импользованием термопары жала" }, "PowerInput": { - "text": "МощнИст", - "text2": [ + "text2": [ "Мощность", "питания" ], "desc": "Мощность используемого источника питания" }, "PowerLimit": { - "text": "ЗначЛимW", - "text2": [ + "text2": [ "Максимальная", "мощность" ], "desc": "Максимальная мощность, которую может использовать паяльник <Ватт>" }, "ReverseButtonTempChange": { - "text": "ИнвКноп", - "text2": [ + "text2": [ "Инвертировать", "кнопки" ], "desc": "Инвертировать кнопки изменения температуры" }, "TempChangeShortStep": { - "text": "ШагКорт", - "text2": [ + "text2": [ "Шаг темп.", "кор. наж." ], "desc": "Шаг изменения температуры при коротком нажатии кнопок" }, "TempChangeLongStep": { - "text": "ШагДлин", - "text2": [ + "text2": [ "Шаг темп.", "длин. наж." ], "desc": "Шаг изменения температуры при длинном нажатии кнопок" }, "PowerPulsePower":{ - "text": "POWPLS", - "text2": [ + "text2": [ "Power", "Pulse W" ], "desc": "Keep awake pulse power intensity" }, "TipGain": { - "text": "TG", - "text2": [ + "text2": [ "Modify", "tip gain" ], diff --git a/Translation Editor/translation_sk.json b/Translation Editor/translation_sk.json index 9a88f76e..92deef72 100644 --- a/Translation Editor/translation_sk.json +++ b/Translation Editor/translation_sk.json @@ -34,7 +34,6 @@ "SettingStartSleepOffChar": "O", "SettingStartNoneChar": "F" }, - "menuDouble": false, "menuGroups": { "SolderingMenu": { "text2": [ @@ -67,208 +66,182 @@ }, "menuOptions": { "PowerSource": { - "text": "PWRSC", - "text2": [ - "", + "text2": [ + "PWRSC", "" ], "desc": "Zdroj napatia. Nastavit napatie pre vypnutie (cutoff) " }, "SleepTemperature": { - "text": "STMP", - "text2": [ - "", + "text2": [ + "STMP", "" ], "desc": "Kludova teplota (v nastavenych jednotkach)" }, "SleepTimeout": { - "text": "STME", - "text2": [ - "", + "text2": [ + "STME", "" ], "desc": "Kludovy rezim po " }, "ShutdownTimeout": { - "text": "SHTME", - "text2": [ - "", + "text2": [ + "SHTME", "" ], "desc": "Cas na vypnutie " }, "MotionSensitivity": { - "text": "MSENSE", - "text2": [ - "", + "text2": [ + "MSENSE", "" ], "desc": "Citlivost detekcie pohybu <0=Vyp, 1=Min ... 9=Max>" }, "TemperatureUnit": { - "text": "TMPUNT", - "text2": [ - "", + "text2": [ + "TMPUNT", "" ], "desc": "Jednotky merania teploty " }, "AdvancedIdle": { - "text": "ADVIDL", - "text2": [ - "", + "text2": [ + "ADVIDL", "" ], "desc": "Zobrazit detailne informacie v kludovom rezime " }, "DisplayRotation": { - "text": "DSPROT", - "text2": [ - "", + "text2": [ + "DSPROT", "" ], "desc": "Orientacia displeja " }, "BoostTemperature": { - "text": "BTMP", - "text2": [ - "", + "text2": [ + "BTMP", "" ], "desc": "Cielova teplota pre prudky nahrev (v nastavenych jednotkach)" }, "AutoStart": { - "text": "ASTART", - "text2": [ - "", + "text2": [ + "ASTART", "" ], "desc": "Pri starte spustit rezim spajkovania " }, "CooldownBlink": { - "text": "CLBLNK", - "text2": [ - "", + "text2": [ + "CLBLNK", "" ], "desc": "Blikanie ukazovatela teploty pocas chladnutia hrotu " }, "TemperatureCalibration": { - "text": "TMP CAL?", - "text2": [ - "", + "text2": [ + "TMP CAL?", "" ], "desc": "Kalibracia posunu hrotu" }, "SettingsReset": { - "text": "RESET?", - "text2": [ - "", + "text2": [ + "RESET?", "" ], "desc": "Tovarenske nastavenia" }, "VoltageCalibration": { - "text": "CAL VIN?", - "text2": [ - "", + "text2": [ + "CAL VIN?", "" ], "desc": "Kalibracia VIN. Kratke stlacenie meni nastavenie, dlhe stlacenie pre navrat" }, "AdvancedSoldering": { - "text": "ADVSLD", - "text2": [ - "", + "text2": [ + "ADVSLD", "" ], "desc": "Zobrazenie detailov pocas spajkovania " }, "ScrollingSpeed": { - "text": "DESCSP", - "text2": [ - "", + "text2": [ + "DESCSP", "" ], "desc": "Speed this text scrolls past at" }, "TipModel": { - "text": "TIPMO", - "text2": [ + "text2": [ "Tip", "Model" ], "desc": "Tip Model selection" }, "SimpleCalibrationMode": { - "text": "SMPCAL", - "text2": [ + "text2": [ "Simple", "Calibration" ], "desc": "Simple Calibration using Hot water" }, "AdvancedCalibrationMode": { - "text": "ADVCAL", - "text2": [ + "text2": [ "Advanced", "Calibration" ], "desc": "Advanced calibration using thermocouple on the tip" }, "PowerInput": { - "text": "PWRW", - "text2": [ + "text2": [ "Power", "Wattage" ], "desc": "Power Wattage of the power adapter used" }, "PowerLimit": { - "text": "PLIM", - "text2": [ + "text2": [ "Power", "Limit" ], "desc": "Maximum power the iron can use " }, "ReverseButtonTempChange": { - "text": "RVTCHG", - "text2": [ + "text2": [ "Key +-", "reverse?" ], "desc": "Reverse the tip temperature change buttons plus minus assignment." }, "TempChangeShortStep": { - "text": "TCHGST", - "text2": [ + "text2": [ "Temp change", "short?" ], "desc": "Temperature change steps on short button press!" }, "TempChangeLongStep": { - "text": "TCHGLT", - "text2": [ + "text2": [ "Temp change", "long?" ], "desc": "Temperature change steps on long button press!" }, "PowerPulsePower":{ - "text": "POWPLS", - "text2": [ + "text2": [ "Power", "Pulse W" ], "desc": "Keep awake pulse power intensity" }, "TipGain": { - "text": "TG", - "text2": [ + "text2": [ "Modify", "tip gain" ], diff --git a/Translation Editor/translation_sl.json b/Translation Editor/translation_sl.json index 3ce10328..53e6654d 100644 --- a/Translation Editor/translation_sl.json +++ b/Translation Editor/translation_sl.json @@ -35,7 +35,6 @@ "SettingStartSleepOffChar": "O", "SettingStartNoneChar": "F" }, - "menuDouble": true, "menuGroups": { "SolderingMenu": { "text2": [ @@ -68,208 +67,182 @@ }, "menuOptions": { "PowerSource": { - "text": "PWRSC", - "text2": [ + "text2": [ "Vir", "napajanja" ], "desc": "Vir napajanja. Nastavi napetost izklopa. " }, "SleepTemperature": { - "text": "STMP", - "text2": [ + "text2": [ "Temp. med", "spanjem" ], "desc": "Temperatura med spanjem " }, "SleepTimeout": { - "text": "STME", - "text2": [ + "text2": [ "Čas do", "spanja" ], "desc": "Čas pred spanjem " }, "ShutdownTimeout": { - "text": "SHTME", - "text2": [ + "text2": [ "Čas do", "izklopa" ], "desc": "Čas pred izklopom " }, "MotionSensitivity": { - "text": "MSENSE", - "text2": [ + "text2": [ "Občutljivost", "premikanja" ], "desc": "Občutljivost premikanja <0.izklopljeno 1.najmanj 9.najbolj občutljivo>" }, "TemperatureUnit": { - "text": "TMPUNT", - "text2": [ + "text2": [ "Enota za", "temperaturo" ], "desc": "Enota za temperaturo " }, "AdvancedIdle": { - "text": "ADVIDL", - "text2": [ + "text2": [ "Več info na", "zaslonu v mir" ], "desc": "Prikaže več informacij z manjšo pisavo na zaslonu med mirovanjem." }, "DisplayRotation": { - "text": "DSPROT", - "text2": [ + "text2": [ "Orientacija", "zaslona" ], "desc": "Orientacija zaslona " }, "BoostTemperature": { - "text": "BTMP", - "text2": [ + "text2": [ "Temperat.", "v boost" ], "desc": "Temperatura v \"boost\" načinu" }, "AutoStart": { - "text": "ASTART", - "text2": [ + "text2": [ "Samodejni", "zagon" ], "desc": "Samodejno segrej konico ob vklopu. T=segrej, S=spanje, F=izklop" }, "CooldownBlink": { - "text": "CLBLNK", - "text2": [ + "text2": [ "Utripanje med", "hlajenjem" ], "desc": "Utripaj temperaturo med hlajenjem, ko je konica še vroča." }, "TemperatureCalibration": { - "text": "TMP CAL?", - "text2": [ + "text2": [ "Kalibriram", "temperaturo?" ], "desc": "Kalibracija temperature na konici." }, "SettingsReset": { - "text": "RESET?", - "text2": [ + "text2": [ "Tovarniške", "nastavitve?" ], "desc": "Ponastavitev vseh nastavitev" }, "VoltageCalibration": { - "text": "CAL VIN?", - "text2": [ + "text2": [ "Kalibriram", "vhodno napetost?" ], "desc": "Kalibracija VIN. Nastavitve z gumbi, dolgi pritisk za izhod." }, "AdvancedSoldering": { - "text": "ADVSLD", - "text2": [ + "text2": [ "Več info na", "zaslonu spaj." ], "desc": "Prikaže več informacij z manjšo pisavo na zaslonu med spajkanjem." }, "ScrollingSpeed": { - "text": "DESCSP", - "text2": [ + "text2": [ "Hitrost", "besedila" ], "desc": "Hitrost, s katero se prikazuje besedilo" }, "TipModel": { - "text": "TIPMO", - "text2": [ + "text2": [ "Model", "konice" ], "desc": "Izbira tipa konice" }, "SimpleCalibrationMode": { - "text": "SMPCAL", - "text2": [ + "text2": [ "Preprosta", "kalibracija" ], "desc": "Preprosta kalibracija z vročo vodo." }, "AdvancedCalibrationMode": { - "text": "ADVCAL", - "text2": [ + "text2": [ "Napredna", "kalibracija" ], "desc": "Napredna kalibracija s termočlenom na konici" }, "PowerInput": { - "text": "PWRW", - "text2": [ + "text2": [ "Moč napajalnega", "vira" ], "desc": "Moč v W napajalnega vira" }, "PowerLimit": { - "text": "PLIM", - "text2": [ + "text2": [ "Power", "Limit" ], "desc": "Maximum power the iron can use " }, "ReverseButtonTempChange": { - "text": "RVTCHG", - "text2": [ + "text2": [ "Key +-", "reverse?" ], "desc": "Reverse the tip temperature change buttons plus minus assignment." }, "TempChangeShortStep": { - "text": "TCHGST", - "text2": [ + "text2": [ "Temp change", "short?" ], "desc": "Temperature change steps on short button press!" }, "TempChangeLongStep": { - "text": "TCHGLT", - "text2": [ + "text2": [ "Temp change", "long?" ], "desc": "Temperature change steps on long button press!" }, "PowerPulsePower":{ - "text": "POWPLS", - "text2": [ + "text2": [ "Power", "Pulse W" ], "desc": "Keep awake pulse power intensity" }, "TipGain": { - "text": "TG", - "text2": [ + "text2": [ "Modify", "tip gain" ], diff --git a/Translation Editor/translation_sr_cyrl.json b/Translation Editor/translation_sr_cyrl.json index 8f4f1765..13447f5a 100644 --- a/Translation Editor/translation_sr_cyrl.json +++ b/Translation Editor/translation_sr_cyrl.json @@ -34,7 +34,6 @@ "SettingStartSleepOffChar": "O", "SettingStartNoneChar": "F" }, - "menuDouble": true, "menuGroups": { "SolderingMenu": { "text2": [ @@ -67,208 +66,182 @@ }, "menuOptions": { "PowerSource": { - "text": "Нпјње", - "text2": [ + "text2": [ "Врста", "напајања" ], "desc": "Тип напајања; одређује најнижи радни напон. " }, "SleepTemperature": { - "text": "ТСпв", - "text2": [ + "text2": [ "Темп.", "спавања" ], "desc": "Температура на коју се спушта лемилица након одређеног времена мировања. " }, "SleepTimeout": { - "text": "ВСпв", - "text2": [ + "text2": [ "Време до", "спавања" ], "desc": "Време мировања након кога лемилица спушта температуру. " }, "ShutdownTimeout": { - "text": "ВГшњ", - "text2": [ + "text2": [ "Време до", "гашења" ], "desc": "Време мировања након кога се лемилица гаси. " }, "MotionSensitivity": { - "text": "ОстПкр", - "text2": [ + "text2": [ "Осетљивост", "на покрет" ], "desc": "Осетљивост сензора покрета. <0=искључено, 1=најмање осетљиво, 9=најосетљивије>" }, "TemperatureUnit": { - "text": "ЈедТмп", - "text2": [ + "text2": [ "Јединица", "температуре" ], "desc": "Јединице у којима се приказује температура. " }, "AdvancedIdle": { - "text": "ДтљМир", - "text2": [ + "text2": [ "Детаљи током", "мировања" ], "desc": "Приказивање детаљних информација на екрану током мировања." }, "DisplayRotation": { - "text": "ОрјЕкр", - "text2": [ + "text2": [ "Оријентација", "екрана" ], "desc": "Како је окренут екран. <А=аутоматски, Л=за леворуке, Д=за десноруке>" }, "BoostTemperature": { - "text": "ТПјч", - "text2": [ + "text2": [ "Темп.", "појачања" ], "desc": "Температура врха лемилице у току појачања." }, "AutoStart": { - "text": "ВрћСта", - "text2": [ + "text2": [ "Врући", "старт" ], "desc": "Лемилица одмах по покретању прелази у режим лемљења и греје се." }, "CooldownBlink": { - "text": "УпзХла", - "text2": [ + "text2": [ "Упозорење", "при хлађењу" ], "desc": "Приказ температуре трепће приликом хлађења докле год је врх и даље врућ." }, "TemperatureCalibration": { - "text": "КалбрТмп", - "text2": [ + "text2": [ "Калибрација", "температуре" ], "desc": "Калибрисање одступања температуре врха у односу на дршку." }, "SettingsReset": { - "text": "ФабрПост", - "text2": [ + "text2": [ "Фабричке", "поставке" ], "desc": "Враћање свих поставки на фабричке вредности." }, "VoltageCalibration": { - "text": "КалбрНап", - "text2": [ + "text2": [ "Калибрација", "улазног напона" ], "desc": "Калибрисање улазног напона. Подешава се на тастере; дуги притисак за крај." }, "AdvancedSoldering": { - "text": "ДтљЛем", - "text2": [ + "text2": [ "Детаљи током", "лемљења" ], "desc": "Приказивање детаљних информација на екрану током лемљења." }, "ScrollingSpeed": { - "text": "БрзПор", - "text2": [ + "text2": [ "Брзина", "порука" ], "desc": "Брзина кретања описних порука попут ове. <С=споро, Б=брзо>" }, "TipModel": { - "text": "МоделВрх", - "text2": [ + "text2": [ "Модел", "врха" ], "desc": "Одабир модела лемног врха." }, "SimpleCalibrationMode": { - "text": "ЈедКалбр", - "text2": [ + "text2": [ "Једноставна", "калибрација" ], "desc": "Једноставна калибрација кипућом водом." }, "AdvancedCalibrationMode": { - "text": "НапКалбр", - "text2": [ + "text2": [ "Напредна", "калибрација" ], "desc": "Напредна калибрација помоћу термопара." }, "PowerInput": { - "text": "УлазСнаг", - "text2": [ + "text2": [ "Улазна", "снага" ], "desc": "Снага напајања у ватима." }, "PowerLimit": { - "text": "PLIM", - "text2": [ + "text2": [ "Power", "Limit" ], "desc": "Maximum power the iron can use " }, "ReverseButtonTempChange": { - "text": "RVTCHG", - "text2": [ + "text2": [ "Key +-", "reverse?" ], "desc": "Reverse the tip temperature change buttons plus minus assignment." }, "TempChangeShortStep": { - "text": "TCHGST", - "text2": [ + "text2": [ "Temp change", "short?" ], "desc": "Temperature change steps on short button press!" }, "TempChangeLongStep": { - "text": "TCHGLT", - "text2": [ + "text2": [ "Temp change", "long?" ], "desc": "Temperature change steps on long button press!" }, "PowerPulsePower":{ - "text": "POWPLS", - "text2": [ + "text2": [ "Power", "Pulse W" ], "desc": "Keep awake pulse power intensity" }, "TipGain": { - "text": "TG", - "text2": [ + "text2": [ "Modify", "tip gain" ], diff --git a/Translation Editor/translation_sr_latn.json b/Translation Editor/translation_sr_latn.json index a4b055e0..f4c2cd32 100644 --- a/Translation Editor/translation_sr_latn.json +++ b/Translation Editor/translation_sr_latn.json @@ -34,7 +34,6 @@ "SettingStartSleepOffChar": "O", "SettingStartNoneChar": "F" }, - "menuDouble": true, "menuGroups": { "SolderingMenu": { "text2": [ @@ -67,208 +66,182 @@ }, "menuOptions": { "PowerSource": { - "text": "Npjnj", - "text2": [ + "text2": [ "Vrsta", "napajanja" ], "desc": "Tip napajanja; određuje najniži radni napon. " }, "SleepTemperature": { - "text": "TSpv", - "text2": [ + "text2": [ "Temp.", "spavanja" ], "desc": "Temperatura na koju se spušta lemilica nakon određenog vremena mirovanja. " }, "SleepTimeout": { - "text": "VSpv", - "text2": [ + "text2": [ "Vreme do", "spavanja" ], "desc": "Vreme mirovanja nakon koga lemilica spušta temperaturu. " }, "ShutdownTimeout": { - "text": "VGšnj", - "text2": [ + "text2": [ "Vreme do", "gašenja" ], "desc": "Vreme mirovanja nakon koga se lemilica gasi. " }, "MotionSensitivity": { - "text": "OstPkr", - "text2": [ + "text2": [ "Osetljivost", "na pokret" ], "desc": "Osetljivost senzora pokreta. <0=isključeno, 1=najmanje osetljivo, 9=najosetljivije>" }, "TemperatureUnit": { - "text": "JedTmp", - "text2": [ + "text2": [ "Jedinica", "temperature" ], "desc": "Jedinice u kojima se prikazuje temperatura. " }, "AdvancedIdle": { - "text": "DtlMir", - "text2": [ + "text2": [ "Detalji tokom", "mirovanja" ], "desc": "Prikazivanje detaljnih informacija na ekranu tokom mirovanja." }, "DisplayRotation": { - "text": "OrjEkr", - "text2": [ + "text2": [ "Orijentacija", "ekrana" ], "desc": "Kako je okrenut ekran. " }, "BoostTemperature": { - "text": "TPjč", - "text2": [ + "text2": [ "Temp.", "pojačanja" ], "desc": "Temperatura vrha lemilice u toku pojačanja." }, "AutoStart": { - "text": "VrćSta", - "text2": [ + "text2": [ "Vrući", "start" ], "desc": "Lemilica odmah po pokretanju prelazi u režim lemljenja i greje se." }, "CooldownBlink": { - "text": "UpzHla", - "text2": [ + "text2": [ "Upozorenje", "pri hlađenju" ], "desc": "Prikaz temperature trepće prilikom hlađenja dokle god je vrh i dalje vruć." }, "TemperatureCalibration": { - "text": "KalbrTmp", - "text2": [ + "text2": [ "Kalibracija", "temperature" ], "desc": "Kalibrisanje odstupanja temperature vrha u odnosu na dršku." }, "SettingsReset": { - "text": "FabrPost", - "text2": [ + "text2": [ "Fabričke", "postavke" ], "desc": "Vraćanje svih postavki na fabričke vrednosti." }, "VoltageCalibration": { - "text": "KalbrNap", - "text2": [ + "text2": [ "Kalibracija", "ulaznog napona" ], "desc": "Kalibrisanje ulaznog napona. Podešava se na tastere; dugi pritisak za kraj." }, "AdvancedSoldering": { - "text": "DtlLem", - "text2": [ + "text2": [ "Detalji tokom", "lemljenja" ], "desc": "Prikazivanje detaljnih informacija na ekranu tokom lemljenja." }, "ScrollingSpeed": { - "text": "BrzPor", - "text2": [ + "text2": [ "Brzina", "poruka" ], "desc": "Brzina kretanja opisnih poruka poput ove. " }, "TipModel": { - "text": "ModelVrh", - "text2": [ + "text2": [ "Model", "vrha" ], "desc": "Odabir modela lemnog vrha." }, "SimpleCalibrationMode": { - "text": "JedKalbr", - "text2": [ + "text2": [ "Jednostavna", "kalibracija" ], "desc": "Jednostavna kalibracija kipućom vodom." }, "AdvancedCalibrationMode": { - "text": "NapKalbr", - "text2": [ + "text2": [ "Napredna", "kalibracija" ], "desc": "Napredna kalibracija pomoću termopara." }, "PowerInput": { - "text": "UlazSnag", - "text2": [ + "text2": [ "Ulazna", "snaga" ], "desc": "Snaga napajanja u vatima." }, "PowerLimit": { - "text": "PLIM", - "text2": [ + "text2": [ "Power", "Limit" ], "desc": "Maximum power the iron can use " }, "ReverseButtonTempChange": { - "text": "RVTCHG", - "text2": [ + "text2": [ "Key +-", "reverse?" ], "desc": "Reverse the tip temperature change buttons plus minus assignment." }, "TempChangeShortStep": { - "text": "TCHGST", - "text2": [ + "text2": [ "Temp change", "short?" ], "desc": "Temperature change steps on short button press!" }, "TempChangeLongStep": { - "text": "TCHGLT", - "text2": [ + "text2": [ "Temp change", "long?" ], "desc": "Temperature change steps on long button press!" }, "PowerPulsePower":{ - "text": "POWPLS", - "text2": [ + "text2": [ "Power", "Pulse W" ], "desc": "Keep awake pulse power intensity" }, "TipGain": { - "text": "TG", - "text2": [ + "text2": [ "Modify", "tip gain" ], diff --git a/Translation Editor/translation_sv.json b/Translation Editor/translation_sv.json index 1aae53a1..eb6a37d5 100644 --- a/Translation Editor/translation_sv.json +++ b/Translation Editor/translation_sv.json @@ -34,7 +34,6 @@ "SettingStartSleepOffChar": "O", "SettingStartNoneChar": "F" }, - "menuDouble": true, "menuGroups": { "SolderingMenu": { "text2": [ @@ -67,208 +66,182 @@ }, "menuOptions": { "PowerSource": { - "text": "", - "text2": [ + "text2": [ "Ström-", "källa" ], "desc": "Strömkälla. Anger lägsta spänning. " }, "SleepTemperature": { - "text": "", - "text2": [ + "text2": [ "Vilo-", "temp" ], "desc": "Vilotemperatur " }, "SleepTimeout": { - "text": "", - "text2": [ + "text2": [ "Vilo-", "timeout" ], "desc": "Vilo-timeout " }, "ShutdownTimeout": { - "text": "", - "text2": [ + "text2": [ "Avstängn.", "timeout" ], "desc": "Avstängnings-timeout " }, "MotionSensitivity": { - "text": "", - "text2": [ + "text2": [ "Rörelse-", "känslighet" ], "desc": "Rörelsekänslighet <0.Av 1.minst känslig 9.mest känslig>" }, "TemperatureUnit": { - "text": "", - "text2": [ + "text2": [ "Temperatur-", "enheter" ], "desc": "Temperaturenhet " }, "AdvancedIdle": { - "text": "", - "text2": [ + "text2": [ "Detaljerad", "vid inaktiv" ], "desc": "Visa detaljerad information i mindre typsnitt när inaktiv." }, "DisplayRotation": { - "text": "", - "text2": [ + "text2": [ "Visnings", "läge" ], "desc": "Visningsläge " }, "BoostTemperature": { - "text": "", - "text2": [ + "text2": [ "Turbo-", "temp" ], "desc": "Temperatur i \"turbo\"-läge" }, "AutoStart": { - "text": "", - "text2": [ + "text2": [ "Auto", "start" ], "desc": "Startar automatiskt lödpennan vid uppstart. T=Lödning, S=Viloläge, F=Av" }, "CooldownBlink": { - "text": "", - "text2": [ + "text2": [ "Nedkylnings-", "blink" ], "desc": "Blinka temperaturen medan spetsen kyls av och fortfarande är varm." }, "TemperatureCalibration": { - "text": "", - "text2": [ + "text2": [ "Kalibrera", "temperatur?" ], "desc": "Kalibrera spets-kompensation." }, "SettingsReset": { - "text": "", - "text2": [ + "text2": [ "Fabriks-", "inställ?" ], "desc": "Återställ alla inställningar" }, "VoltageCalibration": { - "text": "", - "text2": [ + "text2": [ "Kalibrera", "inspänning?" ], "desc": "Inspänningskalibrering. Knapparna justerar, håll inne för avslut" }, "AdvancedSoldering": { - "text": "", - "text2": [ + "text2": [ "Detaljerad", "lödng.skärm" ], "desc": "Visa detaljerad information vid lödning" }, "ScrollingSpeed": { - "text": "", - "text2": [ + "text2": [ "Beskrivning", "rullhast." ], "desc": "Hastighet som den här texten rullar i" }, "TipModel": { - "text": "TIPMO", - "text2": [ + "text2": [ "Tip", "Model" ], "desc": "Tip Model selection" }, "SimpleCalibrationMode": { - "text": "SMPCAL", - "text2": [ + "text2": [ "Simple", "Calibration" ], "desc": "Simple Calibration using Hot water" }, "AdvancedCalibrationMode": { - "text": "ADVCAL", - "text2": [ + "text2": [ "Advanced", "Calibration" ], "desc": "Advanced calibration using thermocouple on the tip" }, "PowerInput": { - "text": "PWRW", - "text2": [ + "text2": [ "Power", "Wattage" ], "desc": "Power Wattage of the power adapter used" }, "PowerLimit": { - "text": "PLIM", - "text2": [ + "text2": [ "Power", "Limit" ], "desc": "Maximum power the iron can use " }, "ReverseButtonTempChange": { - "text": "RVTCHG", - "text2": [ + "text2": [ "Key +-", "reverse?" ], "desc": "Reverse the tip temperature change buttons plus minus assignment." }, "TempChangeShortStep": { - "text": "TCHGST", - "text2": [ + "text2": [ "Temp change", "short?" ], "desc": "Temperature change steps on short button press!" }, "TempChangeLongStep": { - "text": "TCHGLT", - "text2": [ + "text2": [ "Temp change", "long?" ], "desc": "Temperature change steps on long button press!" }, "PowerPulsePower":{ - "text": "POWPLS", - "text2": [ + "text2": [ "Power", "Pulse W" ], "desc": "Keep awake pulse power intensity" }, "TipGain": { - "text": "TG", - "text2": [ + "text2": [ "Modify", "tip gain" ], diff --git a/Translation Editor/translation_tr.json b/Translation Editor/translation_tr.json index 99e3ca5b..a97ae469 100644 --- a/Translation Editor/translation_tr.json +++ b/Translation Editor/translation_tr.json @@ -34,7 +34,6 @@ "SettingStartSleepOffChar": "O", "SettingStartNoneChar": "F" }, - "menuDouble": false, "menuGroups": { "SolderingMenu": { "text2": [ @@ -67,208 +66,182 @@ }, "menuOptions": { "PowerSource": { - "text": "PWRSC", - "text2": [ - "", + "text2": [ + "PWRSC", "" ], "desc": "Güç Kaynağı. kesim geriliminı ayarlar. " }, "SleepTemperature": { - "text": "STMP", - "text2": [ - "", + "text2": [ + "STMP", "" ], "desc": "Uyku Sıcaklığı " }, "SleepTimeout": { - "text": "STME", - "text2": [ - "", + "text2": [ + "STME", "" ], "desc": "Uyku Zaman Aşımı " }, "ShutdownTimeout": { - "text": "SHTME", - "text2": [ - "", + "text2": [ + "SHTME", "" ], "desc": "Kapatma Zaman Aşımı " }, "MotionSensitivity": { - "text": "MSENSE", - "text2": [ - "", + "text2": [ + "MSENSE", "" ], "desc": "Hareket Hassasiyeti <0.Kapalı 1.En az duyarlı 9.En duyarlı>" }, "TemperatureUnit": { - "text": "TMPUNT", - "text2": [ - "", + "text2": [ + "TMPUNT", "" ], "desc": "Sıcaklık Ünitesi " }, "AdvancedIdle": { - "text": "ADVIDL", - "text2": [ - "", + "text2": [ + "ADVIDL", "" ], "desc": "Boş ekranda ayrıntılı bilgileri daha küçük bir yazı tipi ile göster." }, "DisplayRotation": { - "text": "DSPROT", - "text2": [ - "", + "text2": [ + "DSPROT", "" ], "desc": "Görüntü Yönlendirme " }, "BoostTemperature": { - "text": "BTMP", - "text2": [ - "", + "text2": [ + "BTMP", "" ], "desc": "\"boost\" Modu Derecesi" }, "AutoStart": { - "text": "ASTART", - "text2": [ - "", + "text2": [ + "ASTART", "" ], "desc": "Güç verildiğinde otomatik olarak lehimleme modunda başlat. T=Lehimleme Modu, S= Uyku Modu,F=Kapalı" }, "CooldownBlink": { - "text": "CLBLNK", - "text2": [ - "", + "text2": [ + "CLBLNK", "" ], "desc": "Soğutma ekranında uç hala sıcakken derece yanıp sönsün." }, "TemperatureCalibration": { - "text": "TMP CAL?", - "text2": [ - "", + "text2": [ + "TMP CAL?", "" ], "desc": "Ucu kalibre et." }, "SettingsReset": { - "text": "RESET?", - "text2": [ - "", + "text2": [ + "RESET?", "" ], "desc": "Bütün ayarları sıfırla" }, "VoltageCalibration": { - "text": "CAL VIN?", - "text2": [ - "", + "text2": [ + "CAL VIN?", "" ], "desc": "VIN Kalibrasyonu. Düğmeler ayarlar, çıkmak için uzun bas." }, "AdvancedSoldering": { - "text": "ADVSLD", - "text2": [ - "", + "text2": [ + "ADVSLD", "" ], "desc": "Lehimleme yaparken detaylı bilgi göster" }, "ScrollingSpeed": { - "text": "DESCSP", - "text2": [ - "", + "text2": [ + "DESCSP", "" ], "desc": "Speed this text scrolls past at" }, "TipModel": { - "text": "TIPMO", - "text2": [ + "text2": [ "Uç", "Modeli" ], "desc": "Uç Modeli seçimi" }, "SimpleCalibrationMode": { - "text": "SMPCAL", - "text2": [ + "text2": [ "Basit", "Kalibrasyon" ], "desc": "Sıcak su kullanarak basit kalibrasyon" }, "AdvancedCalibrationMode": { - "text": "ADVCAL", - "text2": [ + "text2": [ "Gelişmiş", "Kalibrasyon" ], "desc": "Uçtaki ısı sensörünü kullanarak gelişmiş kalibrasyon" }, "PowerInput": { - "text": "PWRW", - "text2": [ + "text2": [ "Güç", "Miktarı(W)" ], "desc": "Kullanılan adaptörün güç miktarı" }, "PowerLimit": { - "text": "PLIM", - "text2": [ + "text2": [ "Power", "Limit" ], "desc": "Maximum power the iron can use " }, "ReverseButtonTempChange": { - "text": "RVTCHG", - "text2": [ + "text2": [ "Key +-", "reverse?" ], "desc": "Reverse the tip temperature change buttons plus minus assignment." }, "TempChangeShortStep": { - "text": "TCHGST", - "text2": [ + "text2": [ "Temp change", "short?" ], "desc": "Temperature change steps on short button press!" }, "TempChangeLongStep": { - "text": "TCHGLT", - "text2": [ + "text2": [ "Temp change", "long?" ], "desc": "Temperature change steps on long button press!" }, "PowerPulsePower":{ - "text": "POWPLS", - "text2": [ + "text2": [ "Power", "Pulse W" ], "desc": "Keep awake pulse power intensity" }, "TipGain": { - "text": "TG", - "text2": [ + "text2": [ "Modify", "tip gain" ], diff --git a/Translation Editor/translation_uk.json b/Translation Editor/translation_uk.json index 81d9e01c..b689ef20 100644 --- a/Translation Editor/translation_uk.json +++ b/Translation Editor/translation_uk.json @@ -36,7 +36,6 @@ "SettingStartSleepOffChar": "К", "SettingStartNoneChar": "В" }, - "menuDouble": true, "menuGroups": { "SolderingMenu": { "text2": [ @@ -69,208 +68,182 @@ }, "menuOptions": { "PowerSource": { - "text": "ДжЖив", - "text2": [ + "text2": [ "Джерело", "живлення" ], "desc": "Встановлення напруги відключення. " }, "SleepTemperature": { - "text": "", - "text2": [ + "text2": [ "Темпер.", "сну" ], "desc": "Температура режиму очікування " }, "SleepTimeout": { - "text": "", - "text2": [ + "text2": [ "Тайм-аут", "сну" ], "desc": "Час до переходу в режим очікування <Хвилини/Секунди>" }, "ShutdownTimeout": { - "text": "", - "text2": [ + "text2": [ "Часу до", "вимкнення" ], "desc": "Час до відключення <Хвилини>" }, "MotionSensitivity": { - "text": "", - "text2": [ + "text2": [ "Чутл. сенсо-", "ру руху" ], "desc": "Акселерометр <0 - Вимк. 1 - мін. чутливості 9 - макс. чутливості>" }, "TemperatureUnit": { - "text": "", - "text2": [ + "text2": [ "Формат темпе-", "ратури(C°/F°)" ], "desc": "Одиниця виміру температури " }, "AdvancedIdle": { - "text": "", - "text2": [ + "text2": [ "Детальний ре-", "жим очікуван." ], "desc": "Показувати детальну інформацію маленьким шрифтом на домашньому екрані" }, "DisplayRotation": { - "text": "", - "text2": [ + "text2": [ "Автоповорот", "екрану" ], "desc": "Орієнтація дисплея " }, "BoostTemperature": { - "text": "", - "text2": [ + "text2": [ "Темпер.", "Турбо" ], "desc": "Температура в Турбо-режимі" }, "AutoStart": { - "text": "", - "text2": [ + "text2": [ "Гарячий", "старт" ], "desc": "Режим з яким запускається паяльник при подачі живлення <П=Пайка, О=Очікування, К=Очікування при кімн. темп., В=Вимк.>" }, "CooldownBlink": { - "text": "", - "text2": [ + "text2": [ "Показ t° при", "охолодж." ], "desc": "Показувати температуру на екрані охолодження, поки жало залишається гарячим, при цьому екран моргає" }, "TemperatureCalibration": { - "text": "", - "text2": [ + "text2": [ "Калібровка", "температури" ], "desc": "Калібрування температурного датчика." }, "SettingsReset": { - "text": "", - "text2": [ + "text2": [ "Скинути всі", "налаштування?" ], "desc": "Скидання всіх параметрів до стандартних значень." }, "VoltageCalibration": { - "text": "", - "text2": [ + "text2": [ "Калібрування", "напруги" ], "desc": "Калібрування напруги входу. Налаштувати кнопками, натиснути і утримати щоб завершити." }, "AdvancedSoldering": { - "text": "", - "text2": [ + "text2": [ "Детальний ре-", "жим пайки" ], "desc": "Показувати детальну інформацію при пайці." }, "ScrollingSpeed": { - "text": "", - "text2": [ + "text2": [ "Швидкість", "тексту" ], "desc": "Швидкість прокрутки тексту <П=повільно, Ш=швидко>" }, "TipModel": { - "text": "TIPMO", - "text2": [ + "text2": [ "Модель", "Жало" ], "desc": "Вибір моделі жала" }, "SimpleCalibrationMode": { - "text": "SMPCAL", - "text2": [ + "text2": [ "Просте", "Калібрування" ], "desc": "Просте калібрування з використанням гарячої води" }, "AdvancedCalibrationMode": { - "text": "ADVCAL", - "text2": [ + "text2": [ "Детальне", "Калібрування" ], "desc": "Калібрування за допомогою термопари" }, "PowerInput": { - "text": "PWRW", - "text2": [ + "text2": [ "Потужність", "дж. живл." ], "desc": "Потужність джерела живлення в Ватах" }, "PowerLimit": { - "text": "PLIM", - "text2": [ + "text2": [ "Макс.", "потуж." ], "desc": "Макс. потужність, яку може використовувати паяльник <Ват>" }, "ReverseButtonTempChange": { - "text": "RVTCHG", - "text2": [ + "text2": [ "Інвертувати", "кнопки +-?" ], "desc": "Інвертувати кнопки зміни температури." }, "TempChangeShortStep": { - "text": "TCHGST", - "text2": [ + "text2": [ "Зм. темп.", "коротко?" ], "desc": "Змінювати температуру при короткому натисканні!" }, "TempChangeLongStep": { - "text": "TCHGLT", - "text2": [ + "text2": [ "Зм. темп.", "довго?" ], "desc": "Змінювати температуру при довгому натисканні!" }, "PowerPulsePower":{ - "text": "POWPLS", - "text2": [ + "text2": [ "Пульс.", "Навантаж." ], "desc": "Деякі PowerBank-и з часом вимк. живлення, якщо пристрій споживає дуже мало енергії (це потрібно щоб паяльник не вимкнувся з часом)" }, "TipGain": { - "text": "TG", - "text2": [ + "text2": [ "Modify", "tip gain" ], From d75f361c4e274192dae5f7f1c16b7b46da296fbe Mon Sep 17 00:00:00 2001 From: "Ben V. Brown" Date: Sun, 6 Sep 2020 17:55:51 +1000 Subject: [PATCH 30/32] Version bump --- workspace/TS100/version.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workspace/TS100/version.h b/workspace/TS100/version.h index 53518475..5fd281bc 100644 --- a/workspace/TS100/version.h +++ b/workspace/TS100/version.h @@ -4,4 +4,4 @@ * i.e.: BUILD_VERSION = 'Rel. v2.08' --> Will generated to: 'v2.08.1a2b3c4' */ -#define BUILD_VERSION "v2.11" +#define BUILD_VERSION "v2.12" From c6a37d67afbad62be4029a4571a83f0827ce2a27 Mon Sep 17 00:00:00 2001 From: federicodilo <68966053+federicodilo@users.noreply.github.com> Date: Mon, 7 Sep 2020 23:50:20 +0200 Subject: [PATCH 31/32] Small adjustments --- Translation Editor/translation_it.json | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/Translation Editor/translation_it.json b/Translation Editor/translation_it.json index 6a0e45a7..7afd2fc6 100644 --- a/Translation Editor/translation_it.json +++ b/Translation Editor/translation_it.json @@ -128,7 +128,7 @@ "Temp", "«Turbo»" ], - "desc": "Imposta la temperatura della funzione «Turbo»" + "desc": "Imposta la temperatura della funzione «Turbo» <°C/°F>" }, "AutoStart": { "text2": [ @@ -210,7 +210,7 @@ "PowerLimit": { "text2": [ "Limite", - "di potenza" + "potenza" ], "desc": "Imposta il valore di potenza massima erogabile al saldatore " }, @@ -219,28 +219,28 @@ "Inversione", "tasti" ], - "desc": "Inverti i tasti per impostare la temperatura della punta " + "desc": "Inverti i tasti per aumentare o diminuire la temperatura della punta" }, "TempChangeShortStep": { "text2": [ - "Cambio temp", - "pressione breve" + "Temp passo", + "breve" ], - "desc": "Varia la temperatura della punta attraverso una breve pressione dei tasti" + "desc": "Imposta il «passo» dei valori di temperatura ad una breve pressione dei tasti" }, "TempChangeLongStep": { "text2": [ - "Cambio temp", - "pressione lunga" + "Temp passo", + "lungo" ], - "desc": "Varia la temperatura della punta attraverso una lunga pressione dei tasti" + "desc": "Imposta il «passo» dei valori di temperatura ad una lunga pressione dei tasti" }, "PowerPulsePower": { "text2": [ - "Potenza impulso", - "«Keep-Alive»" + "Potenza", + "impulso" ], - "desc": "Regola la potenza d'impulso in ingresso al saldatore per prevenire lo standby eventuale dell'alimentatore " + "desc": "Regola la potenza d'impulso per prevenire lo standby eventuale dell'alimentatore " }, "TipGain": { "text2": [ From 9edb7d47147b5264ff17d8abb7d387a09fc4dff6 Mon Sep 17 00:00:00 2001 From: firebie Date: Tue, 15 Sep 2020 15:04:38 +0300 Subject: [PATCH 32/32] Delay accelerometer for 2 seconds - fix for #696 --- workspace/TS100/Core/Threads/MOVThread.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/workspace/TS100/Core/Threads/MOVThread.cpp b/workspace/TS100/Core/Threads/MOVThread.cpp index 4ef12c21..1fe57cd1 100644 --- a/workspace/TS100/Core/Threads/MOVThread.cpp +++ b/workspace/TS100/Core/Threads/MOVThread.cpp @@ -45,6 +45,12 @@ void startMOVTask(void const *argument __unused) { postRToSInit(); OLED::setRotation(systemSettings.OrientationMode & 1); + if ((PCBVersion == 1 + || PCBVersion == 2) + && (systemSettings.autoStartMode == 2 + || systemSettings.autoStartMode == 3)) + osDelay(2000); + lastMovementTime = 0; int16_t datax[MOVFilter] = { 0 }; int16_t datay[MOVFilter] = { 0 };