From c31f184813f199ca9a8acbdb90367557a805a544 Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Sat, 30 Nov 2013 11:43:59 +0100 Subject: [PATCH 001/308] [all] FAS Offset compensation, +/- 1.5A ( issue 166 ) --- src/gui/menu_model.cpp | 11 ++++++++++- src/myeeprom.h | 4 ++++ src/telemetry/frsky.cpp | 4 ++++ src/telemetry/frsky_sport.cpp | 8 ++++++++ src/translations.cpp | 1 + src/translations.h | 1 + src/translations/cz.h | 1 + src/translations/cz.h.txt | 1 + src/translations/de.h | 1 + src/translations/de.h.txt | 1 + src/translations/en.h | 1 + src/translations/es.h | 1 + src/translations/es.h.txt | 1 + src/translations/fr.h | 1 + src/translations/fr.h.txt | 1 + src/translations/it.h | 1 + src/translations/it.h.txt | 1 + src/translations/pl.h | 1 + src/translations/pl.h.txt | 1 + src/translations/pt.h | 1 + src/translations/pt.h.txt | 1 + src/translations/se.h | 1 + src/translations/se.h.txt | 1 + 23 files changed, 45 insertions(+), 1 deletion(-) diff --git a/src/gui/menu_model.cpp b/src/gui/menu_model.cpp index d94e42ebf..855e3d0e0 100644 --- a/src/gui/menu_model.cpp +++ b/src/gui/menu_model.cpp @@ -5167,6 +5167,7 @@ enum menuModelTelemetryItems { #endif ITEM_TELEMETRY_USR_VOLTAGE_SOURCE, ITEM_TELEMETRY_USR_CURRENT_SOURCE, + ITEM_TELEMETRY_FAS_OFFSET, #if defined(CPUARM) ITEM_TELEMTETRY_PERSISTENT_MAH, #endif @@ -5249,7 +5250,7 @@ enum menuModelTelemetryItems { void menuModelTelemetry(uint8_t event) { - MENU(STR_MENUTELEMETRY, menuTabModel, e_Telemetry, ITEM_TELEMETRY_MAX+1, {0, CHANNEL_ROWS CHANNEL_ROWS RSSI_ROWS USRDATA_LINES 0, 0, IF_CPUARM(0) IF_VARIO(LABEL(Vario)) IF_VARIO(0) IF_VARIO(VARIO_RANGE_ROWS) CASE_PCBTARANIS(LABEL(TopBar)) CASE_PCBTARANIS(0) SCREEN_TYPE_ROWS, 2, 2, 2, 2, SCREEN_TYPE_ROWS, 2, 2, 2, 2, IF_CPUARM(SCREEN_TYPE_ROWS) IF_CPUARM(2) IF_CPUARM(2) IF_CPUARM(2) IF_CPUARM(2) }); + MENU(STR_MENUTELEMETRY, menuTabModel, e_Telemetry, ITEM_TELEMETRY_MAX+1, {0, CHANNEL_ROWS CHANNEL_ROWS RSSI_ROWS USRDATA_LINES 0, 0, 0, IF_CPUARM(0) IF_VARIO(LABEL(Vario)) IF_VARIO(0) IF_VARIO(VARIO_RANGE_ROWS) CASE_PCBTARANIS(LABEL(TopBar)) CASE_PCBTARANIS(0) SCREEN_TYPE_ROWS, 2, 2, 2, 2, SCREEN_TYPE_ROWS, 2, 2, 2, 2, IF_CPUARM(SCREEN_TYPE_ROWS) IF_CPUARM(2) IF_CPUARM(2) IF_CPUARM(2) IF_CPUARM(2) }); uint8_t sub = m_posVert - 1; @@ -5420,6 +5421,14 @@ void menuModelTelemetry(uint8_t event) if (attr) CHECK_INCDEC_MODELVAR_ZERO(event, g_model.frsky.currentSource, 3); break; + case ITEM_TELEMETRY_FAS_OFFSET: + lcd_putsLeft(y, STR_FAS_OFFSET); + lcd_outdezAtt(TELEM_COL2, y, g_model.frsky.fasOffset, attr|LEFT|PREC1); + lcd_outdezAtt(TELEM_COL2+6*FW, y, frskyData.hub.current, LEFT|PREC1); + lcd_putc(TELEM_COL2+8*FW, y, 'A'); + if (attr) g_model.frsky.fasOffset = checkIncDec(event, g_model.frsky.fasOffset, -15, 15, EE_MODEL); + break; + #if defined(CPUARM) case ITEM_TELEMTETRY_PERSISTENT_MAH: g_model.frsky.mAhPersistent = onoffMenuItem(g_model.frsky.mAhPersistent, TELEM_COL2, y, STR_PERSISTENT_MAH, attr, event); diff --git a/src/myeeprom.h b/src/myeeprom.h index 60238e09d..83f0dd579 100644 --- a/src/myeeprom.h +++ b/src/myeeprom.h @@ -988,6 +988,8 @@ PACK(typedef struct t_FrSkyData { FrSkyRSSIAlarm rssiAlarms[2]; uint16_t mAhPersistent:1; uint16_t storedMah:15; + int8_t fasOffset:5; + uint8_t spare:3; }) FrSkyData; #else #define MAX_FRSKY_SCREENS 2 @@ -1005,6 +1007,8 @@ PACK(typedef struct t_FrSkyData { int8_t varioCenterMin:5; uint8_t currentSource:3; int8_t varioCenterMax:5; + int8_t fasOffset:5; + uint8_t spare:3; }) FrSkyData; #endif diff --git a/src/telemetry/frsky.cpp b/src/telemetry/frsky.cpp index f2e7f7905..892e75056 100644 --- a/src/telemetry/frsky.cpp +++ b/src/telemetry/frsky.cpp @@ -191,6 +191,10 @@ void parseTelemHubByte(uint8_t byte) break; case offsetof(FrskySerialData, current): + if(((int16_t)frskyData.hub.current + g_model.frsky.fasOffset)>0) + frskyData.hub.current += g_model.frsky.fasOffset; + else + frskyData.hub.current = 0; if (frskyData.hub.current > frskyData.hub.maxCurrent) frskyData.hub.maxCurrent = frskyData.hub.current; break; diff --git a/src/telemetry/frsky_sport.cpp b/src/telemetry/frsky_sport.cpp index 4794940b5..4eec76018 100644 --- a/src/telemetry/frsky_sport.cpp +++ b/src/telemetry/frsky_sport.cpp @@ -191,6 +191,10 @@ void processHubPacket(uint8_t id, uint16_t value) break; case CURRENT_ID: + if(((int16_t)frskyData.hub.current + g_model.frsky.fasOffset)>0) + frskyData.hub.current += g_model.frsky.fasOffset; + else + frskyData.hub.current = 0; if (frskyData.hub.current > frskyData.hub.maxCurrent) frskyData.hub.maxCurrent = frskyData.hub.current; break; @@ -370,6 +374,10 @@ void processSportPacket(uint8_t *packet) } else if (appId >= CURR_FIRST_ID && appId <= CURR_LAST_ID) { frskyData.hub.current = SPORT_DATA_U32(packet); + if(((int16_t)frskyData.hub.current + g_model.frsky.fasOffset)>0) + frskyData.hub.current += g_model.frsky.fasOffset; + else + frskyData.hub.current = 0; if (frskyData.hub.current > frskyData.hub.maxCurrent) frskyData.hub.maxCurrent = frskyData.hub.current; } diff --git a/src/translations.cpp b/src/translations.cpp index 98d62ab7b..6749c8d2f 100644 --- a/src/translations.cpp +++ b/src/translations.cpp @@ -266,6 +266,7 @@ const pm_char STR_EEPROMFORMATTING[] PROGMEM = TR_EEPROMFORMATTING; const pm_char STR_EEPROMOVERFLOW[] PROGMEM = TR_EEPROMOVERFLOW; const pm_char STR_TRIMS2OFFSETS[] PROGMEM = TR_TRIMS2OFFSETS; const pm_char STR_MENURADIOSETUP[] PROGMEM = TR_MENURADIOSETUP; +const pm_char STR_FAS_OFFSET[] PROGMEM = TR_FAS_OFFSET; #if defined(CPUM2560) || defined(CPUARM) const pm_char STR_MENUDATEANDTIME[] PROGMEM = TR_MENUDATEANDTIME; diff --git a/src/translations.h b/src/translations.h index 4a3e0600a..7f93d1e4d 100644 --- a/src/translations.h +++ b/src/translations.h @@ -447,6 +447,7 @@ extern const pm_char STR_MENUGLOBALVARS[]; extern const pm_char STR_INVERT_THR[]; extern const pm_char STR_AND_SWITCH[]; extern const pm_char STR_CF[]; +extern const pm_char STR_FAS_OFFSET[]; #if defined(DSM2) || defined(PXX) extern const pm_char STR_RXNUM[]; diff --git a/src/translations/cz.h b/src/translations/cz.h index dca96c257..66d33932d 100644 --- a/src/translations/cz.h +++ b/src/translations/cz.h @@ -660,6 +660,7 @@ #define TR_LOWALARM INDENT "N\204zk\212 Alarm" #define TR_CRITICALALARM INDENT "Kritick\212 Alarm" #define TR_PERSISTENT_MAH INDENT "Store mAh" +#define TR_FAS_OFFSET TR(INDENT "FAS Ofs", INDENT "FAS Offset") #if defined(MAVLINK) #define TR_MAVLINK_RC_RSSI_SCALE_LABEL "Max RSSI" diff --git a/src/translations/cz.h.txt b/src/translations/cz.h.txt index 145783ff3..724434f84 100644 --- a/src/translations/cz.h.txt +++ b/src/translations/cz.h.txt @@ -660,6 +660,7 @@ #define TR_LOWALARM INDENT "Nízký Alarm" #define TR_CRITICALALARM INDENT "Kritický Alarm" #define TR_PERSISTENT_MAH INDENT "Store mAh" +#define TR_FAS_OFFSET TR(INDENT "FAS Ofs", INDENT "FAS Offset") #if defined(MAVLINK) #define TR_MAVLINK_RC_RSSI_SCALE_LABEL "Max RSSI" diff --git a/src/translations/de.h b/src/translations/de.h index a5ff6746a..065f2e57a 100644 --- a/src/translations/de.h +++ b/src/translations/de.h @@ -663,6 +663,7 @@ #define TR_LOWALARM INDENT "Low Alarm" #define TR_CRITICALALARM INDENT "Kritisch Alarm" #define TR_PERSISTENT_MAH INDENT "Store mAh" +#define TR_FAS_OFFSET TR(INDENT "FAS Ofs", INDENT "FAS Offset") #if defined(MAVLINK) #define TR_MAVLINK_RC_RSSI_SCALE_LABEL "Max RSSI" diff --git a/src/translations/de.h.txt b/src/translations/de.h.txt index 3410e2f15..598489fde 100644 --- a/src/translations/de.h.txt +++ b/src/translations/de.h.txt @@ -663,6 +663,7 @@ #define TR_LOWALARM INDENT "Low Alarm" #define TR_CRITICALALARM INDENT "Kritisch Alarm" #define TR_PERSISTENT_MAH INDENT "Store mAh" +#define TR_FAS_OFFSET TR(INDENT "FAS Ofs", INDENT "FAS Offset") #if defined(MAVLINK) #define TR_MAVLINK_RC_RSSI_SCALE_LABEL "Max RSSI" diff --git a/src/translations/en.h b/src/translations/en.h index 62876daf9..e87b5f7c6 100644 --- a/src/translations/en.h +++ b/src/translations/en.h @@ -667,6 +667,7 @@ #define TR_LOWALARM INDENT "Low Alarm" #define TR_CRITICALALARM INDENT "Critical Alarm" #define TR_PERSISTENT_MAH INDENT "Store mAh" +#define TR_FAS_OFFSET TR(INDENT "FAS Ofs", INDENT "FAS Offset") #if defined(MAVLINK) #define TR_MAVLINK_RC_RSSI_SCALE_LABEL "Max RSSI" diff --git a/src/translations/es.h b/src/translations/es.h index 6efdcf038..974dcc350 100644 --- a/src/translations/es.h +++ b/src/translations/es.h @@ -660,6 +660,7 @@ #define TR_LOWALARM INDENT "Alarma baja" #define TR_CRITICALALARM INDENT "Alarma Critica" #define TR_PERSISTENT_MAH INDENT "Store mAh" +#define TR_FAS_OFFSET TR(INDENT "FAS Ofs", INDENT "FAS Offset") #if defined(MAVLINK) #define TR_MAVLINK_RC_RSSI_SCALE_LABEL "Max RSSI" diff --git a/src/translations/es.h.txt b/src/translations/es.h.txt index 49be12fc1..70487fdc4 100644 --- a/src/translations/es.h.txt +++ b/src/translations/es.h.txt @@ -660,6 +660,7 @@ #define TR_LOWALARM INDENT "Alarma baja" #define TR_CRITICALALARM INDENT "Alarma Critica" #define TR_PERSISTENT_MAH INDENT "Store mAh" +#define TR_FAS_OFFSET TR(INDENT "FAS Ofs", INDENT "FAS Offset") #if defined(MAVLINK) #define TR_MAVLINK_RC_RSSI_SCALE_LABEL "Max RSSI" diff --git a/src/translations/fr.h b/src/translations/fr.h index c2023571f..7de9ee984 100644 --- a/src/translations/fr.h +++ b/src/translations/fr.h @@ -660,6 +660,7 @@ #define TR_LOWALARM INDENT "Alarme basse" #define TR_CRITICALALARM INDENT "Alarme critique" #define TR_PERSISTENT_MAH INDENT "Store mAh" +#define TR_FAS_OFFSET TR(INDENT "FAS Ofs", INDENT "FAS Offset") #if defined(MAVLINK) #define TR_MAVLINK_RC_RSSI_SCALE_LABEL "Max RSSI" diff --git a/src/translations/fr.h.txt b/src/translations/fr.h.txt index 34604f7a6..81873286c 100644 --- a/src/translations/fr.h.txt +++ b/src/translations/fr.h.txt @@ -660,6 +660,7 @@ #define TR_LOWALARM INDENT "Alarme basse" #define TR_CRITICALALARM INDENT "Alarme critique" #define TR_PERSISTENT_MAH INDENT "Store mAh" +#define TR_FAS_OFFSET TR(INDENT "FAS Ofs", INDENT "FAS Offset") #if defined(MAVLINK) #define TR_MAVLINK_RC_RSSI_SCALE_LABEL "Max RSSI" diff --git a/src/translations/it.h b/src/translations/it.h index 2e4945d49..70718da14 100644 --- a/src/translations/it.h +++ b/src/translations/it.h @@ -660,6 +660,7 @@ #define TR_LOWALARM INDENT "Allarme Basso" #define TR_CRITICALALARM INDENT "Allarme Critico" #define TR_PERSISTENT_MAH INDENT "Store mAh" +#define TR_FAS_OFFSET TR(INDENT "FAS Ofs", INDENT "FAS Offset") #if defined(MAVLINK) #define TR_MAVLINK_RC_RSSI_SCALE_LABEL "Max RSSI" diff --git a/src/translations/it.h.txt b/src/translations/it.h.txt index 3a2c62fca..8c1229ac7 100644 --- a/src/translations/it.h.txt +++ b/src/translations/it.h.txt @@ -660,6 +660,7 @@ #define TR_LOWALARM INDENT "Allarme Basso" #define TR_CRITICALALARM INDENT "Allarme Critico" #define TR_PERSISTENT_MAH INDENT "Store mAh" +#define TR_FAS_OFFSET TR(INDENT "FAS Ofs", INDENT "FAS Offset") #if defined(MAVLINK) #define TR_MAVLINK_RC_RSSI_SCALE_LABEL "Max RSSI" diff --git a/src/translations/pl.h b/src/translations/pl.h index ef4afe289..c441faada 100644 --- a/src/translations/pl.h +++ b/src/translations/pl.h @@ -661,6 +661,7 @@ #define TR_LOWALARM INDENT "Alarm niski" #define TR_CRITICALALARM INDENT "Alarm krytyczny" #define TR_PERSISTENT_MAH INDENT "Store mAh" +#define TR_FAS_OFFSET TR(INDENT "FAS Ofs", INDENT "FAS Offset") #if defined(MAVLINK) #define TR_MAVLINK_RC_RSSI_SCALE_LABEL "Max RSSI" diff --git a/src/translations/pl.h.txt b/src/translations/pl.h.txt index 5525754ed..8a2caf86c 100644 --- a/src/translations/pl.h.txt +++ b/src/translations/pl.h.txt @@ -661,6 +661,7 @@ #define TR_LOWALARM INDENT "Alarm niski" #define TR_CRITICALALARM INDENT "Alarm krytyczny" #define TR_PERSISTENT_MAH INDENT "Store mAh" +#define TR_FAS_OFFSET TR(INDENT "FAS Ofs", INDENT "FAS Offset") #if defined(MAVLINK) #define TR_MAVLINK_RC_RSSI_SCALE_LABEL "Max RSSI" diff --git a/src/translations/pt.h b/src/translations/pt.h index 691c840af..022579f74 100644 --- a/src/translations/pt.h +++ b/src/translations/pt.h @@ -660,6 +660,7 @@ #define TR_LOWALARM INDENT "Low Alarm" #define TR_CRITICALALARM INDENT "Critical Alarm" #define TR_PERSISTENT_MAH INDENT "Store mAh" +#define TR_FAS_OFFSET TR(INDENT "FAS Ofs", INDENT "FAS Offset") #if defined(MAVLINK) #define TR_MAVLINK_RC_RSSI_SCALE_LABEL "Max RSSI" diff --git a/src/translations/pt.h.txt b/src/translations/pt.h.txt index 691c840af..022579f74 100644 --- a/src/translations/pt.h.txt +++ b/src/translations/pt.h.txt @@ -660,6 +660,7 @@ #define TR_LOWALARM INDENT "Low Alarm" #define TR_CRITICALALARM INDENT "Critical Alarm" #define TR_PERSISTENT_MAH INDENT "Store mAh" +#define TR_FAS_OFFSET TR(INDENT "FAS Ofs", INDENT "FAS Offset") #if defined(MAVLINK) #define TR_MAVLINK_RC_RSSI_SCALE_LABEL "Max RSSI" diff --git a/src/translations/se.h b/src/translations/se.h index de22c6599..029dfba9d 100644 --- a/src/translations/se.h +++ b/src/translations/se.h @@ -663,6 +663,7 @@ #define TR_LOWALARM INDENT "L\200g-alarm" #define TR_CRITICALALARM INDENT "Kritiskt alarm" #define TR_PERSISTENT_MAH INDENT "Store mAh" +#define TR_FAS_OFFSET TR(INDENT "FAS Ofs", INDENT "FAS Offset") #if defined(MAVLINK) #define TR_MAVLINK_RC_RSSI_SCALE_LABEL "Max RSSI" diff --git a/src/translations/se.h.txt b/src/translations/se.h.txt index 68de29549..1aaf93273 100644 --- a/src/translations/se.h.txt +++ b/src/translations/se.h.txt @@ -663,6 +663,7 @@ #define TR_LOWALARM INDENT "Låg-alarm" #define TR_CRITICALALARM INDENT "Kritiskt alarm" #define TR_PERSISTENT_MAH INDENT "Store mAh" +#define TR_FAS_OFFSET TR(INDENT "FAS Ofs", INDENT "FAS Offset") #if defined(MAVLINK) #define TR_MAVLINK_RC_RSSI_SCALE_LABEL "Max RSSI" From 589e02755b130b96ba965fb117e41d0a2f0d5af0 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Sat, 30 Nov 2013 22:42:51 +0100 Subject: [PATCH 002/308] Fixes #154 --- src/simpgmspace.h | 1 + src/targets/taranis/audio_driver.cpp | 2 ++ src/targets/taranis/board_taranis.cpp | 1 + src/targets/taranis/pulses_driver.cpp | 11 ++++++++++- src/targets/taranis/sport_driver.cpp | 1 + src/targets/taranis/trainer_driver.cpp | 2 ++ src/targets/taranis/uart_driver.cpp | 1 + 7 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/simpgmspace.h b/src/simpgmspace.h index 14f3603fb..94fffce39 100644 --- a/src/simpgmspace.h +++ b/src/simpgmspace.h @@ -326,6 +326,7 @@ extern volatile uint32_t Tenms; extern uint32_t Master_frequency; #define NVIC_EnableIRQ(x) #define NVIC_DisableIRQ(x) +#define NVIC_SetPriority(...) #define __disable_irq() #define __enable_irq() #endif diff --git a/src/targets/taranis/audio_driver.cpp b/src/targets/taranis/audio_driver.cpp index f5cfd5eb5..d0b0508aa 100644 --- a/src/targets/taranis/audio_driver.cpp +++ b/src/targets/taranis/audio_driver.cpp @@ -88,7 +88,9 @@ void dacInit() DAC->CR = DAC_CR_TEN1 | DAC_CR_EN1 ; // Enable DAC NVIC_SetPriority(DMA1_Stream5_IRQn, 2) ; // High priority interrupt NVIC_EnableIRQ(TIM6_DAC_IRQn) ; // TODO needed? + NVIC_SetPriority(TIM6_DAC_IRQn, 7); NVIC_EnableIRQ(DMA1_Stream5_IRQn) ; + NVIC_SetPriority(DMA1_Stream5_IRQn, 7); } bool dacQueue(AudioBuffer *buffer) diff --git a/src/targets/taranis/board_taranis.cpp b/src/targets/taranis/board_taranis.cpp index 0777d8502..36987fab9 100644 --- a/src/targets/taranis/board_taranis.cpp +++ b/src/targets/taranis/board_taranis.cpp @@ -155,6 +155,7 @@ void init5msTimer() TIM14->CR1 = 5 ; TIM14->DIER |= 1 ; NVIC_EnableIRQ(TIM8_TRG_COM_TIM14_IRQn) ; + NVIC_SetPriority(TIM8_TRG_COM_TIM14_IRQn, 7); } void stop5msTimer( void ) diff --git a/src/targets/taranis/pulses_driver.cpp b/src/targets/taranis/pulses_driver.cpp index 50f5c2fcb..03dba6085 100644 --- a/src/targets/taranis/pulses_driver.cpp +++ b/src/targets/taranis/pulses_driver.cpp @@ -160,6 +160,7 @@ static void init_pa10_none() TIM1->DIER |= TIM_DIER_CC2IE ; // Enable this interrupt TIM1->CR1 |= TIM_CR1_CEN ; NVIC_EnableIRQ(TIM1_CC_IRQn) ; + NVIC_SetPriority(TIM1_CC_IRQn, 7); } static void disable_pa10_none() @@ -202,6 +203,7 @@ static void init_pa7_none() TIM8->DIER |= TIM_DIER_CC2IE ; // Enable this interrupt TIM8->CR1 |= TIM_CR1_CEN ; NVIC_EnableIRQ(TIM8_CC_IRQn) ; + NVIC_SetPriority(TIM8_CC_IRQn, 7); } static void disable_pa7_none() @@ -267,7 +269,8 @@ static void init_pa10_pxx() TIM1->SR &= ~TIM_SR_CC2IF ; // Clear flag TIM1->DIER |= TIM_DIER_CC2IE ; // Enable this interrupt TIM1->CR1 |= TIM_CR1_CEN ; - NVIC_EnableIRQ(TIM1_CC_IRQn) ; + NVIC_EnableIRQ(TIM1_CC_IRQn); + NVIC_SetPriority(TIM1_CC_IRQn, 7); } static void disable_pa10_pxx() @@ -316,7 +319,9 @@ static void init_pa10_ppm() TIM1->CR1 = TIM_CR1_CEN ; NVIC_EnableIRQ(TIM1_CC_IRQn) ; + NVIC_SetPriority(TIM1_CC_IRQn, 7); NVIC_EnableIRQ(TIM1_UP_TIM10_IRQn) ; + NVIC_SetPriority(TIM1_UP_TIM10_IRQn, 7); } static void disable_pa10_ppm() @@ -428,6 +433,7 @@ static void init_pa7_pxx() TIM8->DIER |= TIM_DIER_CC2IE ; // Enable this interrupt TIM8->CR1 |= TIM_CR1_CEN ; NVIC_EnableIRQ(TIM8_CC_IRQn) ; + NVIC_SetPriority(TIM8_CC_IRQn, 7); } static void disable_pa7_pxx() @@ -501,6 +507,7 @@ static void init_pa7_dsm2() TIM8->DIER |= TIM_DIER_CC2IE ; // Enable this interrupt TIM8->CR1 |= TIM_CR1_CEN ; NVIC_EnableIRQ(TIM8_CC_IRQn) ; + NVIC_SetPriority(TIM8_CC_IRQn, 7); } static void disable_pa7_dsm2() @@ -555,7 +562,9 @@ static void init_pa7_ppm() TIM8->CR1 = TIM_CR1_CEN ; NVIC_EnableIRQ(TIM8_CC_IRQn) ; + NVIC_SetPriority(TIM8_CC_IRQn, 7); NVIC_EnableIRQ(TIM8_UP_TIM13_IRQn) ; + NVIC_SetPriority(TIM8_UP_TIM13_IRQn, 7); } static void disable_pa7_ppm() diff --git a/src/targets/taranis/sport_driver.cpp b/src/targets/taranis/sport_driver.cpp index 1fa9b60e8..04f3d1698 100644 --- a/src/targets/taranis/sport_driver.cpp +++ b/src/targets/taranis/sport_driver.cpp @@ -78,6 +78,7 @@ void sportInit(void) USART_ITConfig(SPORT, USART_IT_RXNE, ENABLE); NVIC_EnableIRQ(USART2_IRQn); + NVIC_SetPriority(USART2_IRQn, 6); } void sportPutc(const char c) diff --git a/src/targets/taranis/trainer_driver.cpp b/src/targets/taranis/trainer_driver.cpp index 1b8787540..9319cc18b 100644 --- a/src/targets/taranis/trainer_driver.cpp +++ b/src/targets/taranis/trainer_driver.cpp @@ -71,6 +71,7 @@ void init_trainer_ppm() TIM3->CR1 = TIM_CR1_CEN ; NVIC_EnableIRQ(TIM3_IRQn) ; + NVIC_SetPriority(TIM3_IRQn, 7); } // TODO - testing @@ -99,6 +100,7 @@ void init_trainer_capture() TIM3->DIER |= TIM_DIER_CC3IE ; TIM3->CR1 = TIM_CR1_CEN ; NVIC_EnableIRQ(TIM3_IRQn) ; + NVIC_SetPriority(TIM3_IRQn, 7); } void stop_trainer_capture() diff --git a/src/targets/taranis/uart_driver.cpp b/src/targets/taranis/uart_driver.cpp index 8c1ec1de6..0d85fe579 100644 --- a/src/targets/taranis/uart_driver.cpp +++ b/src/targets/taranis/uart_driver.cpp @@ -69,6 +69,7 @@ void uartInit(uint32_t baudrate) USART_ITConfig(UART3, USART_IT_TXE, DISABLE); NVIC_EnableIRQ(USART3_IRQn); + NVIC_SetPriority(USART3_IRQn, 8); } #if defined(DEBUG) From 97dda47e5b5c81789f52b617e7bbf43b21f4853e Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Sat, 30 Nov 2013 21:23:55 +0100 Subject: [PATCH 003/308] OpenTX code moved to transmitter directory --- .../releasenotes-9x.txt | 0 .../releasenotes-taranis.txt | 0 {src => transmitter/src}/CoOS/kernel/CoOS.h | 0 {src => transmitter/src}/CoOS/kernel/OsConfig.h | 0 {src => transmitter/src}/CoOS/kernel/OsCore.h | 0 {src => transmitter/src}/CoOS/kernel/OsError.h | 0 {src => transmitter/src}/CoOS/kernel/OsEvent.h | 0 {src => transmitter/src}/CoOS/kernel/OsFlag.h | 0 {src => transmitter/src}/CoOS/kernel/OsKernelHeap.h | 0 {src => transmitter/src}/CoOS/kernel/OsMM.h | 0 {src => transmitter/src}/CoOS/kernel/OsMutex.h | 0 {src => transmitter/src}/CoOS/kernel/OsQueue.h | 0 {src => transmitter/src}/CoOS/kernel/OsServiceReq.h | 0 {src => transmitter/src}/CoOS/kernel/OsTask.h | 0 {src => transmitter/src}/CoOS/kernel/OsTime.h | 0 {src => transmitter/src}/CoOS/kernel/OsTimer.h | 0 {src => transmitter/src}/CoOS/kernel/coocox.h | 0 {src => transmitter/src}/CoOS/kernel/core.c | 0 {src => transmitter/src}/CoOS/kernel/event.c | 0 {src => transmitter/src}/CoOS/kernel/flag.c | 0 {src => transmitter/src}/CoOS/kernel/hook.c | 0 {src => transmitter/src}/CoOS/kernel/kernelHeap.c | 0 {src => transmitter/src}/CoOS/kernel/mbox.c | 0 {src => transmitter/src}/CoOS/kernel/mm.c | 0 {src => transmitter/src}/CoOS/kernel/mutex.c | 0 {src => transmitter/src}/CoOS/kernel/queue.c | 0 {src => transmitter/src}/CoOS/kernel/sem.c | 0 {src => transmitter/src}/CoOS/kernel/serviceReq.c | 0 {src => transmitter/src}/CoOS/kernel/task.c | 0 {src => transmitter/src}/CoOS/kernel/time.c | 0 {src => transmitter/src}/CoOS/kernel/timer.c | 0 {src => transmitter/src}/CoOS/kernel/utility.c | 0 {src => transmitter/src}/CoOS/kernel/utility.h | 0 {src => transmitter/src}/CoOS/portable/GCC/port.c | 0 {src => transmitter/src}/CoOS/portable/OsArch.h | 0 {src => transmitter/src}/CoOS/portable/arch.c | 0 {src => transmitter/src}/FatFs/00readme.txt | 0 {src => transmitter/src}/FatFs/diskio.h | 0 {src => transmitter/src}/FatFs/fattime.c | 0 {src => transmitter/src}/FatFs/ff.c | 0 {src => transmitter/src}/FatFs/ff.h | 0 {src => transmitter/src}/FatFs/ffconf.h | 0 {src => transmitter/src}/FatFs/integer.h | 0 {src => transmitter/src}/FatFs/option/cc932.c | 0 {src => transmitter/src}/FatFs/option/cc936.c | 0 {src => transmitter/src}/FatFs/option/cc949.c | 0 {src => transmitter/src}/FatFs/option/cc950.c | 0 {src => transmitter/src}/FatFs/option/ccsbcs.c | 0 {src => transmitter/src}/FatFs/option/syscall.c | 0 {src => transmitter/src}/FatFs/option/unicode.c | 0 {src => transmitter/src}/GCS_MAVLink/.gitignore | 0 {src => transmitter/src}/GCS_MAVLink/COPYING | 0 {src => transmitter/src}/GCS_MAVLink/README | 0 .../include_v1.0/ardupilotmega/ardupilotmega.h | 0 .../include_v1.0/ardupilotmega/mavlink.h | 0 .../include_v1.0/ardupilotmega/mavlink_msg_ahrs.h | 0 .../include_v1.0/ardupilotmega/mavlink_msg_ap_adc.h | 0 .../include_v1.0/ardupilotmega/mavlink_msg_data16.h | 0 .../include_v1.0/ardupilotmega/mavlink_msg_data32.h | 0 .../include_v1.0/ardupilotmega/mavlink_msg_data64.h | 0 .../include_v1.0/ardupilotmega/mavlink_msg_data96.h | 0 .../ardupilotmega/mavlink_msg_digicam_configure.h | 0 .../ardupilotmega/mavlink_msg_digicam_control.h | 0 .../ardupilotmega/mavlink_msg_fence_fetch_point.h | 0 .../ardupilotmega/mavlink_msg_fence_point.h | 0 .../ardupilotmega/mavlink_msg_fence_status.h | 0 .../ardupilotmega/mavlink_msg_hwstatus.h | 0 .../ardupilotmega/mavlink_msg_limits_status.h | 0 .../ardupilotmega/mavlink_msg_meminfo.h | 0 .../ardupilotmega/mavlink_msg_mount_configure.h | 0 .../ardupilotmega/mavlink_msg_mount_control.h | 0 .../ardupilotmega/mavlink_msg_mount_status.h | 0 .../include_v1.0/ardupilotmega/mavlink_msg_radio.h | 0 .../ardupilotmega/mavlink_msg_rangefinder.h | 0 .../ardupilotmega/mavlink_msg_sensor_offsets.h | 0 .../ardupilotmega/mavlink_msg_set_mag_offsets.h | 0 .../ardupilotmega/mavlink_msg_simstate.h | 0 .../include_v1.0/ardupilotmega/mavlink_msg_wind.h | 0 .../include_v1.0/ardupilotmega/testsuite.h | 0 .../include_v1.0/ardupilotmega/version.h | 0 .../src}/GCS_MAVLink/include_v1.0/checksum.h | 0 .../src}/GCS_MAVLink/include_v1.0/common/common.h | 0 .../src}/GCS_MAVLink/include_v1.0/common/mavlink.h | 0 .../include_v1.0/common/mavlink_msg_attitude.h | 0 .../common/mavlink_msg_attitude_quaternion.h | 0 .../include_v1.0/common/mavlink_msg_auth_key.h | 0 .../common/mavlink_msg_battery_status.h | 0 .../common/mavlink_msg_change_operator_control.h | 0 .../mavlink_msg_change_operator_control_ack.h | 0 .../include_v1.0/common/mavlink_msg_command_ack.h | 0 .../include_v1.0/common/mavlink_msg_command_long.h | 0 .../include_v1.0/common/mavlink_msg_data_stream.h | 0 .../include_v1.0/common/mavlink_msg_debug.h | 0 .../include_v1.0/common/mavlink_msg_debug_vect.h | 0 .../common/mavlink_msg_file_transfer_dir_list.h | 0 .../common/mavlink_msg_file_transfer_res.h | 0 .../common/mavlink_msg_file_transfer_start.h | 0 .../common/mavlink_msg_global_position_int.h | 0 .../mavlink_msg_global_position_setpoint_int.h | 0 .../mavlink_msg_global_vision_position_estimate.h | 0 .../common/mavlink_msg_gps_global_origin.h | 0 .../include_v1.0/common/mavlink_msg_gps_raw_int.h | 0 .../include_v1.0/common/mavlink_msg_gps_status.h | 0 .../include_v1.0/common/mavlink_msg_heartbeat.h | 0 .../include_v1.0/common/mavlink_msg_highres_imu.h | 0 .../include_v1.0/common/mavlink_msg_hil_controls.h | 0 .../include_v1.0/common/mavlink_msg_hil_gps.h | 0 .../common/mavlink_msg_hil_optical_flow.h | 0 .../common/mavlink_msg_hil_rc_inputs_raw.h | 0 .../include_v1.0/common/mavlink_msg_hil_sensor.h | 0 .../include_v1.0/common/mavlink_msg_hil_state.h | 0 .../common/mavlink_msg_hil_state_quaternion.h | 0 .../common/mavlink_msg_local_position_ned.h | 0 ...nk_msg_local_position_ned_system_global_offset.h | 0 .../common/mavlink_msg_local_position_setpoint.h | 0 .../common/mavlink_msg_manual_control.h | 0 .../common/mavlink_msg_manual_setpoint.h | 0 .../include_v1.0/common/mavlink_msg_memory_vect.h | 0 .../include_v1.0/common/mavlink_msg_mission_ack.h | 0 .../common/mavlink_msg_mission_clear_all.h | 0 .../include_v1.0/common/mavlink_msg_mission_count.h | 0 .../common/mavlink_msg_mission_current.h | 0 .../include_v1.0/common/mavlink_msg_mission_item.h | 0 .../common/mavlink_msg_mission_item_reached.h | 0 .../common/mavlink_msg_mission_request.h | 0 .../common/mavlink_msg_mission_request_list.h | 0 .../mavlink_msg_mission_request_partial_list.h | 0 .../common/mavlink_msg_mission_set_current.h | 0 .../common/mavlink_msg_mission_write_partial_list.h | 0 .../common/mavlink_msg_named_value_float.h | 0 .../common/mavlink_msg_named_value_int.h | 0 .../common/mavlink_msg_nav_controller_output.h | 0 .../common/mavlink_msg_omnidirectional_flow.h | 0 .../include_v1.0/common/mavlink_msg_optical_flow.h | 0 .../common/mavlink_msg_param_request_list.h | 0 .../common/mavlink_msg_param_request_read.h | 0 .../include_v1.0/common/mavlink_msg_param_set.h | 0 .../include_v1.0/common/mavlink_msg_param_value.h | 0 .../include_v1.0/common/mavlink_msg_ping.h | 0 .../include_v1.0/common/mavlink_msg_radio_status.h | 0 .../include_v1.0/common/mavlink_msg_raw_imu.h | 0 .../include_v1.0/common/mavlink_msg_raw_pressure.h | 0 .../common/mavlink_msg_rc_channels_override.h | 0 .../common/mavlink_msg_rc_channels_raw.h | 0 .../common/mavlink_msg_rc_channels_scaled.h | 0 .../common/mavlink_msg_request_data_stream.h | 0 ...vlink_msg_roll_pitch_yaw_rates_thrust_setpoint.h | 0 ...vlink_msg_roll_pitch_yaw_speed_thrust_setpoint.h | 0 .../mavlink_msg_roll_pitch_yaw_thrust_setpoint.h | 0 .../common/mavlink_msg_safety_allowed_area.h | 0 .../common/mavlink_msg_safety_set_allowed_area.h | 0 .../include_v1.0/common/mavlink_msg_scaled_imu.h | 0 .../common/mavlink_msg_scaled_pressure.h | 0 .../common/mavlink_msg_servo_output_raw.h | 0 .../mavlink_msg_set_global_position_setpoint_int.h | 0 .../common/mavlink_msg_set_gps_global_origin.h | 0 .../mavlink_msg_set_local_position_setpoint.h | 0 .../include_v1.0/common/mavlink_msg_set_mode.h | 0 .../common/mavlink_msg_set_quad_motors_setpoint.h | 0 ...k_msg_set_quad_swarm_led_roll_pitch_yaw_thrust.h | 0 ...vlink_msg_set_quad_swarm_roll_pitch_yaw_thrust.h | 0 .../mavlink_msg_set_roll_pitch_yaw_speed_thrust.h | 0 .../common/mavlink_msg_set_roll_pitch_yaw_thrust.h | 0 .../include_v1.0/common/mavlink_msg_setpoint_6dof.h | 0 .../include_v1.0/common/mavlink_msg_setpoint_8dof.h | 0 .../include_v1.0/common/mavlink_msg_sim_state.h | 0 .../common/mavlink_msg_state_correction.h | 0 .../include_v1.0/common/mavlink_msg_statustext.h | 0 .../include_v1.0/common/mavlink_msg_sys_status.h | 0 .../include_v1.0/common/mavlink_msg_system_time.h | 0 .../include_v1.0/common/mavlink_msg_vfr_hud.h | 0 .../common/mavlink_msg_vicon_position_estimate.h | 0 .../common/mavlink_msg_vision_position_estimate.h | 0 .../common/mavlink_msg_vision_speed_estimate.h | 0 .../GCS_MAVLink/include_v1.0/common/testsuite.h | 0 .../src}/GCS_MAVLink/include_v1.0/common/version.h | 0 .../GCS_MAVLink/include_v1.0/mavlink_conversions.h | 0 .../src}/GCS_MAVLink/include_v1.0/mavlink_helpers.h | 0 .../include_v1.0/mavlink_protobuf_manager.hpp | 0 .../src}/GCS_MAVLink/include_v1.0/mavlink_types.h | 0 .../src}/GCS_MAVLink/include_v1.0/protocol.h | 0 .../message_definitions_v1.0/ardupilotmega.xml | 0 .../message_definitions_v1.0/autoquad.xml | 0 .../GCS_MAVLink/message_definitions_v1.0/common.xml | 0 .../message_definitions_v1.0/matrixpilot.xml | 0 .../message_definitions_v1.0/minimal.xml | 0 .../message_definitions_v1.0/pixhawk.proto | 0 .../message_definitions_v1.0/pixhawk.xml | 0 .../message_definitions_v1.0/sensesoar.xml | 0 .../GCS_MAVLink/message_definitions_v1.0/slugs.xml | 0 .../GCS_MAVLink/message_definitions_v1.0/test.xml | 0 .../message_definitions_v1.0/ualberta.xml | 0 {src => transmitter/src}/GCS_MAVLink/sync | 0 {src => transmitter/src}/Makefile | 0 {src => transmitter/src}/audio_arm.cpp | 0 {src => transmitter/src}/audio_arm.h | 0 {src => transmitter/src}/audio_avr.cpp | 0 {src => transmitter/src}/audio_avr.h | 0 {src => transmitter/src}/bitmaps/about_9x.lbm | 0 {src => transmitter/src}/bitmaps/about_9x.png | Bin {src => transmitter/src}/bitmaps/about_taranis.lbm | 0 {src => transmitter/src}/bitmaps/about_taranis.png | Bin {src => transmitter/src}/bitmaps/asterisk.lbm | 0 {src => transmitter/src}/bitmaps/asterisk.xbm | 0 {src => transmitter/src}/bitmaps/asterisk_4bits.lbm | 0 {src => transmitter/src}/bitmaps/asterisk_4bits.png | Bin {src => transmitter/src}/bitmaps/icons.lbm | 0 {src => transmitter/src}/bitmaps/icons.png | Bin {src => transmitter/src}/bitmaps/logo_taranis.bmp | Bin {src => transmitter/src}/bitmaps/logo_taranis.lbm | 0 {src => transmitter/src}/bitmaps/splash_9x.lbm | 0 {src => transmitter/src}/bitmaps/splash_9x.xbm | 0 {src => transmitter/src}/bitmaps/splash_taranis.lbm | 0 {src => transmitter/src}/bitmaps/splash_taranis.png | Bin {src => transmitter/src}/bitmaps/sticks.lbm | 0 {src => transmitter/src}/bitmaps/sticks_4x1.xbm | 0 {src => transmitter/src}/bmp.cpp | 0 {src => transmitter/src}/buzzer.cpp | 0 {src => transmitter/src}/buzzer.h | 0 {src => transmitter/src}/debug.cpp | 0 {src => transmitter/src}/debug.h | 0 {src => transmitter/src}/eeprom_common.cpp | 0 {src => transmitter/src}/eeprom_common.h | 0 {src => transmitter/src}/eeprom_conversions.cpp | 0 {src => transmitter/src}/eeprom_raw.cpp | 0 {src => transmitter/src}/eeprom_raw.h | 0 {src => transmitter/src}/eeprom_rlc.cpp | 0 {src => transmitter/src}/eeprom_rlc.h | 0 {src => transmitter/src}/fifo.h | 0 {src => transmitter/src}/fonts/sqt5/font_04x06.lbm | 0 {src => transmitter/src}/fonts/sqt5/font_04x06.png | Bin {src => transmitter/src}/fonts/sqt5/font_05x07.lbm | 0 {src => transmitter/src}/fonts/sqt5/font_05x07.png | Bin {src => transmitter/src}/fonts/sqt5/font_08x10.lbm | 0 {src => transmitter/src}/fonts/sqt5/font_08x10.png | Bin {src => transmitter/src}/fonts/sqt5/font_10x14.lbm | 0 {src => transmitter/src}/fonts/sqt5/font_10x14.png | Bin .../src}/fonts/sqt5/font_10x14_compressed.lbm | 0 .../src}/fonts/sqt5/font_10x14_compressed.png | Bin .../src}/fonts/sqt5/font_cz_04x06.lbm | 0 .../src}/fonts/sqt5/font_cz_04x06.png | Bin .../src}/fonts/sqt5/font_cz_05x07.lbm | 0 .../src}/fonts/sqt5/font_cz_05x07.png | Bin .../src}/fonts/sqt5/font_cz_08x10.lbm | 0 .../src}/fonts/sqt5/font_cz_08x10.png | Bin .../src}/fonts/sqt5/font_cz_10x14.lbm | 0 .../src}/fonts/sqt5/font_cz_10x14.png | Bin .../src}/fonts/sqt5/font_de_04x06.lbm | 0 .../src}/fonts/sqt5/font_de_04x06.png | Bin .../src}/fonts/sqt5/font_de_05x07.lbm | 0 .../src}/fonts/sqt5/font_de_05x07.png | Bin .../src}/fonts/sqt5/font_de_08x10.lbm | 0 .../src}/fonts/sqt5/font_de_08x10.png | Bin .../src}/fonts/sqt5/font_de_10x14.lbm | 0 .../src}/fonts/sqt5/font_de_10x14.png | Bin .../src}/fonts/sqt5/font_es_04x06.lbm | 0 .../src}/fonts/sqt5/font_es_04x06.png | Bin .../src}/fonts/sqt5/font_es_05x07.lbm | 0 .../src}/fonts/sqt5/font_es_05x07.png | Bin .../src}/fonts/sqt5/font_es_08x10.lbm | 0 .../src}/fonts/sqt5/font_es_08x10.png | Bin .../src}/fonts/sqt5/font_es_10x14.lbm | 0 .../src}/fonts/sqt5/font_es_10x14.png | Bin .../src}/fonts/sqt5/font_fr_04x06.lbm | 0 .../src}/fonts/sqt5/font_fr_04x06.png | Bin .../src}/fonts/sqt5/font_fr_05x07.lbm | 0 .../src}/fonts/sqt5/font_fr_05x07.png | Bin .../src}/fonts/sqt5/font_fr_08x10.lbm | 0 .../src}/fonts/sqt5/font_fr_08x10.png | Bin .../src}/fonts/sqt5/font_fr_10x14.lbm | 0 .../src}/fonts/sqt5/font_fr_10x14.png | Bin .../src}/fonts/sqt5/font_it_04x06.lbm | 0 .../src}/fonts/sqt5/font_it_04x06.png | Bin .../src}/fonts/sqt5/font_it_05x07.lbm | 0 .../src}/fonts/sqt5/font_it_05x07.png | Bin .../src}/fonts/sqt5/font_it_08x10.lbm | 0 .../src}/fonts/sqt5/font_it_08x10.png | Bin .../src}/fonts/sqt5/font_it_10x14.lbm | 0 .../src}/fonts/sqt5/font_it_10x14.png | Bin .../src}/fonts/sqt5/font_pt_05x07.lbm | 0 .../src}/fonts/sqt5/font_pt_05x07.png | Bin .../src}/fonts/sqt5/font_pt_08x10.lbm | 0 .../src}/fonts/sqt5/font_pt_08x10.png | Bin .../src}/fonts/sqt5/font_pt_10x14.lbm | 0 .../src}/fonts/sqt5/font_pt_10x14.png | Bin .../src}/fonts/sqt5/font_se_04x06.lbm | 0 .../src}/fonts/sqt5/font_se_04x06.png | Bin .../src}/fonts/sqt5/font_se_05x07.lbm | 0 .../src}/fonts/sqt5/font_se_05x07.png | Bin .../src}/fonts/sqt5/font_se_08x10.lbm | 0 .../src}/fonts/sqt5/font_se_08x10.png | Bin .../src}/fonts/sqt5/font_se_10x14.lbm | 0 .../src}/fonts/sqt5/font_se_10x14.png | Bin {src => transmitter/src}/fonts/std/font_03x05.lbm | 0 {src => transmitter/src}/fonts/std/font_03x05.png | Bin {src => transmitter/src}/fonts/std/font_04x06.lbm | 0 {src => transmitter/src}/fonts/std/font_04x06.png | Bin .../src}/fonts/std/font_04x06_extra.lbm | 0 .../src}/fonts/std/font_04x06_extra.png | Bin {src => transmitter/src}/fonts/std/font_05x07.lbm | 0 {src => transmitter/src}/fonts/std/font_05x07.png | Bin .../src}/fonts/std/font_05x07_extra.lbm | 0 .../src}/fonts/std/font_05x07_extra.png | Bin {src => transmitter/src}/fonts/std/font_08x10.lbm | 0 {src => transmitter/src}/fonts/std/font_08x10.png | Bin {src => transmitter/src}/fonts/std/font_10x14.lbm | 0 {src => transmitter/src}/fonts/std/font_10x14.png | Bin .../src}/fonts/std/font_10x14_compressed.lbm | 0 .../src}/fonts/std/font_10x14_compressed.png | Bin .../src}/fonts/std/font_10x14_extra.lbm | 0 .../src}/fonts/std/font_10x14_extra.png | Bin .../src}/fonts/std/font_cz_04x06.lbm | 0 .../src}/fonts/std/font_cz_04x06.png | Bin .../src}/fonts/std/font_cz_05x07.lbm | 0 .../src}/fonts/std/font_cz_05x07.png | Bin .../src}/fonts/std/font_cz_08x10.lbm | 0 .../src}/fonts/std/font_cz_08x10.png | Bin .../src}/fonts/std/font_cz_10x14.lbm | 0 .../src}/fonts/std/font_cz_10x14.png | Bin .../src}/fonts/std/font_de_04x06.lbm | 0 .../src}/fonts/std/font_de_04x06.png | Bin .../src}/fonts/std/font_de_05x07.lbm | 0 .../src}/fonts/std/font_de_05x07.png | Bin .../src}/fonts/std/font_de_08x10.lbm | 0 .../src}/fonts/std/font_de_08x10.png | Bin .../src}/fonts/std/font_de_10x14.lbm | 0 .../src}/fonts/std/font_de_10x14.png | Bin .../src}/fonts/std/font_es_04x06.lbm | 0 .../src}/fonts/std/font_es_04x06.png | Bin .../src}/fonts/std/font_es_05x07.lbm | 0 .../src}/fonts/std/font_es_05x07.png | Bin .../src}/fonts/std/font_es_08x10.lbm | 0 .../src}/fonts/std/font_es_08x10.png | Bin .../src}/fonts/std/font_es_10x14.lbm | 0 .../src}/fonts/std/font_es_10x14.png | Bin .../src}/fonts/std/font_fr_04x06.lbm | 0 .../src}/fonts/std/font_fr_04x06.png | Bin .../src}/fonts/std/font_fr_05x07.lbm | 0 .../src}/fonts/std/font_fr_05x07.png | Bin .../src}/fonts/std/font_fr_08x10.lbm | 0 .../src}/fonts/std/font_fr_08x10.png | Bin .../src}/fonts/std/font_fr_10x14.lbm | 0 .../src}/fonts/std/font_fr_10x14.png | Bin .../src}/fonts/std/font_it_04x06.lbm | 0 .../src}/fonts/std/font_it_04x06.png | Bin .../src}/fonts/std/font_it_05x07.lbm | 0 .../src}/fonts/std/font_it_05x07.png | Bin .../src}/fonts/std/font_it_08x10.lbm | 0 .../src}/fonts/std/font_it_08x10.png | Bin .../src}/fonts/std/font_it_10x14.lbm | 0 .../src}/fonts/std/font_it_10x14.png | Bin .../src}/fonts/std/font_pt_04x06.lbm | 0 .../src}/fonts/std/font_pt_04x06.png | Bin .../src}/fonts/std/font_pt_05x07.lbm | 0 .../src}/fonts/std/font_pt_05x07.png | Bin .../src}/fonts/std/font_pt_08x10.lbm | 0 .../src}/fonts/std/font_pt_08x10.png | Bin .../src}/fonts/std/font_pt_10x14.lbm | 0 .../src}/fonts/std/font_pt_10x14.png | Bin .../src}/fonts/std/font_se_04x06.lbm | 0 .../src}/fonts/std/font_se_04x06.png | Bin .../src}/fonts/std/font_se_05x07.lbm | 0 .../src}/fonts/std/font_se_05x07.png | Bin .../src}/fonts/std/font_se_08x10.lbm | 0 .../src}/fonts/std/font_se_08x10.png | Bin .../src}/fonts/std/font_se_10x14.lbm | 0 .../src}/fonts/std/font_se_10x14.png | Bin {src => transmitter/src}/gtests.cpp | 0 {src => transmitter/src}/gui/menu_general.cpp | 0 {src => transmitter/src}/gui/menu_model.cpp | 0 {src => transmitter/src}/gui/menus.cpp | 0 {src => transmitter/src}/gui/menus.h | 0 {src => transmitter/src}/gui/view_about.cpp | 0 {src => transmitter/src}/gui/view_channels.cpp | 0 {src => transmitter/src}/gui/view_main.cpp | 0 {src => transmitter/src}/gui/view_mavlink.cpp | 0 {src => transmitter/src}/gui/view_mavlink.h | 0 {src => transmitter/src}/gui/view_statistics.cpp | 0 {src => transmitter/src}/gui/view_telemetry.cpp | 0 {src => transmitter/src}/gui/view_text.cpp | 0 {src => transmitter/src}/haptic.cpp | 0 {src => transmitter/src}/haptic.h | 0 {src => transmitter/src}/keys.cpp | 0 {src => transmitter/src}/lcd.cpp | 0 {src => transmitter/src}/lcd.h | 0 {src => transmitter/src}/logs.cpp | 0 {src => transmitter/src}/maths.cpp | 0 {src => transmitter/src}/myeeprom.h | 0 {src => transmitter/src}/opentx.cpp | 0 {src => transmitter/src}/opentx.h | 0 {src => transmitter/src}/pgmtypes.h | 0 {src => transmitter/src}/protocols/dsm2_arm.cpp | 0 {src => transmitter/src}/protocols/ppm_arm.cpp | 0 {src => transmitter/src}/protocols/pulses_arm.cpp | 0 {src => transmitter/src}/protocols/pulses_arm.h | 0 {src => transmitter/src}/protocols/pulses_avr.cpp | 0 {src => transmitter/src}/protocols/pulses_avr.h | 0 {src => transmitter/src}/protocols/pxx_arm.cpp | 0 {src => transmitter/src}/rtc.cpp | 0 {src => transmitter/src}/rtc.h | 0 {src => transmitter/src}/sdcard.h | 0 {src => transmitter/src}/serial.cpp | 0 {src => transmitter/src}/serial.h | 0 {src => transmitter/src}/simpgmspace.cpp | 0 {src => transmitter/src}/simpgmspace.h | 0 {src => transmitter/src}/simu.cpp | 0 {src => transmitter/src}/stamp.cpp | 0 .../src}/targets/gruvin9x/board_gruvin9x.cpp | 0 .../src}/targets/gruvin9x/board_gruvin9x.h | 0 .../src}/targets/gruvin9x/diskio.cpp | 0 .../src}/targets/gruvin9x/fuses_2561.txt | 0 .../src}/targets/gruvin9x/rtc_driver.cpp | 0 .../src}/targets/gruvin9x/somo14d.cpp | 0 {src => transmitter/src}/targets/gruvin9x/somo14d.h | 0 .../src}/targets/mega2560/00readme.txt | 0 .../src}/targets/mega2560/board_mega2560.cpp | 0 .../src}/targets/mega2560/board_mega2560.h | 0 .../src}/targets/mega2560/io_mega2560.h | 0 .../src}/targets/mega2560/lcd_driver_ST7565R.cpp | 0 .../src}/targets/mega2560/rtc_driver.cpp | 0 {src => transmitter/src}/targets/sky9x/AT91SAM3S2.h | 0 {src => transmitter/src}/targets/sky9x/AT91SAM3S4.h | 0 {src => transmitter/src}/targets/sky9x/MEDSdcard.c | 0 {src => transmitter/src}/targets/sky9x/Media.h | 0 .../src}/targets/sky9x/adc_driver.cpp | 0 .../src}/targets/sky9x/audio_driver.cpp | 0 .../src}/targets/sky9x/audio_driver.h | 0 .../src}/targets/sky9x/bluetooth.cpp | 0 {src => transmitter/src}/targets/sky9x/board.h | 0 .../src}/targets/sky9x/board_lowlevel.c | 0 .../src}/targets/sky9x/board_sky9x.cpp | 0 .../src}/targets/sky9x/board_sky9x.h | 0 .../src}/targets/sky9x/buzzer_driver.cpp | 0 {src => transmitter/src}/targets/sky9x/chip.h | 0 .../src}/targets/sky9x/coproc_driver.cpp | 0 {src => transmitter/src}/targets/sky9x/core_cm3.c | 0 {src => transmitter/src}/targets/sky9x/core_cm3.h | 0 {src => transmitter/src}/targets/sky9x/crt.c | 0 .../src}/targets/sky9x/debug_driver.cpp | 0 {src => transmitter/src}/targets/sky9x/diskio.cpp | 0 .../src}/targets/sky9x/eeprom_driver.cpp | 0 .../src}/targets/sky9x/haptic_driver.cpp | 0 .../src}/targets/sky9x/keys_driver.cpp | 0 .../src}/targets/sky9x/lcd_driver.cpp | 0 .../src}/targets/sky9x/massstorage.cpp | 0 .../src}/targets/sky9x/pulses_driver.cpp | 0 .../src}/targets/sky9x/pwr_driver.cpp | 0 .../src}/targets/sky9x/rotenc_driver.cpp | 0 .../src}/targets/sky9x/rtc_driver.cpp | 0 .../src}/targets/sky9x/sam3s2c_flash.ld | 0 .../src}/targets/sky9x/sam3s4c_flash.ld | 0 .../src}/targets/sky9x/sdcard_driver.cpp | 0 {src => transmitter/src}/targets/sky9x/syscalls.c | 0 .../usb/common/core/USBConfigurationDescriptor.c | 0 .../usb/common/core/USBConfigurationDescriptor.h | 0 .../sky9x/usb/common/core/USBDeviceDescriptor.h | 0 .../usb/common/core/USBDeviceQualifierDescriptor.h | 0 .../sky9x/usb/common/core/USBEndpointDescriptor.c | 0 .../sky9x/usb/common/core/USBEndpointDescriptor.h | 0 .../sky9x/usb/common/core/USBFeatureRequest.c | 0 .../sky9x/usb/common/core/USBFeatureRequest.h | 0 .../sky9x/usb/common/core/USBGenericDescriptor.c | 0 .../sky9x/usb/common/core/USBGenericDescriptor.h | 0 .../sky9x/usb/common/core/USBGenericRequest.c | 0 .../sky9x/usb/common/core/USBGenericRequest.h | 0 .../sky9x/usb/common/core/USBGetDescriptorRequest.c | 0 .../sky9x/usb/common/core/USBGetDescriptorRequest.h | 0 .../common/core/USBInterfaceAssociationDescriptor.h | 0 .../sky9x/usb/common/core/USBInterfaceDescriptor.h | 0 .../sky9x/usb/common/core/USBInterfaceRequest.c | 0 .../sky9x/usb/common/core/USBInterfaceRequest.h | 0 .../targets/sky9x/usb/common/core/USBIrqHandler.c | 0 .../targets/sky9x/usb/common/core/USBIrqHandler.h | 0 .../sky9x/usb/common/core/USBSetAddressRequest.c | 0 .../sky9x/usb/common/core/USBSetAddressRequest.h | 0 .../usb/common/core/USBSetConfigurationRequest.c | 0 .../usb/common/core/USBSetConfigurationRequest.h | 0 .../sky9x/usb/common/core/USBStringDescriptor.h | 0 .../usb/common/massstorage/MSDeviceDescriptor.h | 0 .../usb/common/massstorage/MSInterfaceDescriptor.h | 0 .../src}/targets/sky9x/usb/device/core/USBD.h | 0 .../src}/targets/sky9x/usb/device/core/USBDDriver.c | 0 .../src}/targets/sky9x/usb/device/core/USBDDriver.h | 0 .../sky9x/usb/device/core/USBDDriverDescriptors.h | 0 .../src}/targets/sky9x/usb/device/core/USBD_UDP.c | 0 .../src}/targets/sky9x/usb/device/massstorage/MSD.h | 0 .../sky9x/usb/device/massstorage/MSDDStateMachine.c | 0 .../sky9x/usb/device/massstorage/MSDDStateMachine.h | 0 .../sky9x/usb/device/massstorage/MSDDriver.c | 0 .../sky9x/usb/device/massstorage/MSDDriver.h | 0 .../usb/device/massstorage/MSDDriverDescriptors.c | 0 .../usb/device/massstorage/MSDDriverDescriptors.h | 0 .../sky9x/usb/device/massstorage/MSDIOFifo.h | 0 .../targets/sky9x/usb/device/massstorage/MSDLun.c | 0 .../targets/sky9x/usb/device/massstorage/MSDLun.h | 0 .../src}/targets/sky9x/usb/device/massstorage/SBC.h | 0 .../sky9x/usb/device/massstorage/SBCMethods.c | 0 .../sky9x/usb/device/massstorage/SBCMethods.h | 0 .../src}/targets/sky9x/vectors_sam3s.c | 0 .../src}/targets/stock/board_stock.cpp | 0 .../src}/targets/stock/board_stock.h | 0 .../src}/targets/stock/lcd_driver.cpp | 0 {src => transmitter/src}/targets/stock/voice.cpp | 0 {src => transmitter/src}/targets/stock/voice.h | 0 .../CMSIS/Device/ST/STM32F2xx/Include/stm32f2xx.h | 0 .../Device/ST/STM32F2xx/Include/system_stm32f2xx.h | 0 .../Source/Templates/gcc_ride7/startup_stm32f2xx.s | 0 .../STM32F2xx/Source/Templates/system_stm32f2xx.c | 0 .../Libraries/CMSIS/Include/arm_common_tables.h | 0 .../Libraries/CMSIS/Include/arm_math.h | 0 .../Libraries/CMSIS/Include/core_cm0.h | 0 .../Libraries/CMSIS/Include/core_cm3.h | 0 .../Libraries/CMSIS/Include/core_cm4.h | 0 .../Libraries/CMSIS/Include/core_cm4_simd.h | 0 .../Libraries/CMSIS/Include/core_cmFunc.h | 0 .../Libraries/CMSIS/Include/core_cmInstr.h | 0 .../Libraries/STM32F2xx_StdPeriph_Driver/inc/misc.h | 0 .../STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_adc.h | 0 .../STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_can.h | 0 .../STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_crc.h | 0 .../STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_cryp.h | 0 .../STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_dac.h | 0 .../inc/stm32f2xx_dbgmcu.h | 0 .../STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_dcmi.h | 0 .../STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_dma.h | 0 .../STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_exti.h | 0 .../inc/stm32f2xx_flash.h | 0 .../STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_fsmc.h | 0 .../STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_gpio.h | 0 .../STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_hash.h | 0 .../STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_i2c.h | 0 .../STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_iwdg.h | 0 .../STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_pwr.h | 0 .../STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_rcc.h | 0 .../STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_rng.h | 0 .../STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_rtc.h | 0 .../STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_sdio.h | 0 .../STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_spi.h | 0 .../inc/stm32f2xx_syscfg.h | 0 .../STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_tim.h | 0 .../inc/stm32f2xx_usart.h | 0 .../STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_wwdg.h | 0 .../Libraries/STM32F2xx_StdPeriph_Driver/src/misc.c | 0 .../STM32F2xx_StdPeriph_Driver/src/stm32f2xx_adc.c | 0 .../STM32F2xx_StdPeriph_Driver/src/stm32f2xx_can.c | 0 .../STM32F2xx_StdPeriph_Driver/src/stm32f2xx_crc.c | 0 .../STM32F2xx_StdPeriph_Driver/src/stm32f2xx_cryp.c | 0 .../src/stm32f2xx_cryp_aes.c | 0 .../src/stm32f2xx_cryp_des.c | 0 .../src/stm32f2xx_cryp_tdes.c | 0 .../STM32F2xx_StdPeriph_Driver/src/stm32f2xx_dac.c | 0 .../src/stm32f2xx_dbgmcu.c | 0 .../STM32F2xx_StdPeriph_Driver/src/stm32f2xx_dcmi.c | 0 .../STM32F2xx_StdPeriph_Driver/src/stm32f2xx_dma.c | 0 .../STM32F2xx_StdPeriph_Driver/src/stm32f2xx_exti.c | 0 .../src/stm32f2xx_flash.c | 0 .../STM32F2xx_StdPeriph_Driver/src/stm32f2xx_fsmc.c | 0 .../STM32F2xx_StdPeriph_Driver/src/stm32f2xx_gpio.c | 0 .../STM32F2xx_StdPeriph_Driver/src/stm32f2xx_hash.c | 0 .../src/stm32f2xx_hash_md5.c | 0 .../src/stm32f2xx_hash_sha1.c | 0 .../STM32F2xx_StdPeriph_Driver/src/stm32f2xx_i2c.c | 0 .../STM32F2xx_StdPeriph_Driver/src/stm32f2xx_iwdg.c | 0 .../STM32F2xx_StdPeriph_Driver/src/stm32f2xx_pwr.c | 0 .../STM32F2xx_StdPeriph_Driver/src/stm32f2xx_rcc.c | 0 .../STM32F2xx_StdPeriph_Driver/src/stm32f2xx_rng.c | 0 .../STM32F2xx_StdPeriph_Driver/src/stm32f2xx_rtc.c | 0 .../STM32F2xx_StdPeriph_Driver/src/stm32f2xx_sdio.c | 0 .../STM32F2xx_StdPeriph_Driver/src/stm32f2xx_spi.c | 0 .../src/stm32f2xx_syscfg.c | 0 .../STM32F2xx_StdPeriph_Driver/src/stm32f2xx_tim.c | 0 .../src/stm32f2xx_usart.c | 0 .../STM32F2xx_StdPeriph_Driver/src/stm32f2xx_wwdg.c | 0 .../Class/audio/inc/usbd_audio_core.h | 0 .../Class/audio/inc/usbd_audio_out_if.h | 0 .../Class/audio/src/usbd_audio_core.c | 0 .../Class/audio/src/usbd_audio_out_if.c | 0 .../Class/cdc/inc/usbd_cdc_core.h | 0 .../Class/cdc/inc/usbd_cdc_if_template.h | 0 .../Class/cdc/src/usbd_cdc_core.c | 0 .../Class/cdc/src/usbd_cdc_if_template.c | 0 .../Class/dfu/inc/usbd_dfu_core.h | 0 .../Class/dfu/inc/usbd_dfu_mal.h | 0 .../Class/dfu/inc/usbd_flash_if.h | 0 .../Class/dfu/inc/usbd_mem_if_template.h | 0 .../Class/dfu/inc/usbd_otp_if.h | 0 .../Class/dfu/src/usbd_dfu_core.c | 0 .../Class/dfu/src/usbd_dfu_mal.c | 0 .../Class/dfu/src/usbd_flash_if.c | 0 .../Class/dfu/src/usbd_mem_if_template.c | 0 .../Class/dfu/src/usbd_otp_if.c | 0 .../Class/hid/inc/usbd_hid_core.h | 0 .../Class/hid/src/usbd_hid_core.c | 0 .../Class/msc/inc/usbd_msc_bot.h | 0 .../Class/msc/inc/usbd_msc_core.h | 0 .../Class/msc/inc/usbd_msc_data.h | 0 .../Class/msc/inc/usbd_msc_mem.h | 0 .../Class/msc/inc/usbd_msc_scsi.h | 0 .../Class/msc/src/usbd_msc_bot.c | 0 .../Class/msc/src/usbd_msc_core.c | 0 .../Class/msc/src/usbd_msc_data.c | 0 .../Class/msc/src/usbd_msc_scsi.c | 0 .../Core/inc/usbd_conf_template.h | 0 .../STM32_USB_Device_Library/Core/inc/usbd_core.h | 0 .../STM32_USB_Device_Library/Core/inc/usbd_def.h | 0 .../STM32_USB_Device_Library/Core/inc/usbd_ioreq.h | 0 .../STM32_USB_Device_Library/Core/inc/usbd_req.h | 0 .../STM32_USB_Device_Library/Core/inc/usbd_usr.h | 0 .../STM32_USB_Device_Library/Core/src/usbd_core.c | 0 .../STM32_USB_Device_Library/Core/src/usbd_ioreq.c | 0 .../STM32_USB_Device_Library/Core/src/usbd_req.c | 0 .../STM32_USB_Device_Library/Release_Notes.html | 0 .../STM32_USB_OTG_Driver/Release_Notes.html | 0 .../Libraries/STM32_USB_OTG_Driver/inc/usb_bsp.h | 0 .../STM32_USB_OTG_Driver/inc/usb_conf_template.h | 0 .../Libraries/STM32_USB_OTG_Driver/inc/usb_core.h | 0 .../Libraries/STM32_USB_OTG_Driver/inc/usb_dcd.h | 0 .../STM32_USB_OTG_Driver/inc/usb_dcd_int.h | 0 .../STM32_USB_OTG_Driver/inc/usb_defines.h | 0 .../Libraries/STM32_USB_OTG_Driver/inc/usb_hcd.h | 0 .../STM32_USB_OTG_Driver/inc/usb_hcd_int.h | 0 .../Libraries/STM32_USB_OTG_Driver/inc/usb_otg.h | 0 .../Libraries/STM32_USB_OTG_Driver/inc/usb_regs.h | 0 .../Libraries/STM32_USB_OTG_Driver/src/usb_core.c | 0 .../Libraries/STM32_USB_OTG_Driver/src/usb_dcd.c | 0 .../STM32_USB_OTG_Driver/src/usb_dcd_int.c | 0 .../Libraries/STM32_USB_OTG_Driver/src/usb_hcd.c | 0 .../STM32_USB_OTG_Driver/src/usb_hcd_int.c | 0 .../Libraries/STM32_USB_OTG_Driver/src/usb_otg.c | 0 .../src}/targets/taranis/adc_driver.cpp | 0 {src => transmitter/src}/targets/taranis/aspi.cpp | 0 {src => transmitter/src}/targets/taranis/aspi.h | 0 .../src}/targets/taranis/audio_driver.cpp | 0 .../src}/targets/taranis/audio_driver.h | 0 .../src}/targets/taranis/board_taranis.cpp | 0 .../src}/targets/taranis/board_taranis.h | 0 {src => transmitter/src}/targets/taranis/delays.cpp | 0 {src => transmitter/src}/targets/taranis/diskio.cpp | 0 {src => transmitter/src}/targets/taranis/hal.h | 0 {src => transmitter/src}/targets/taranis/i2c.c | 0 {src => transmitter/src}/targets/taranis/i2c.h | 0 .../src}/targets/taranis/keys_driver.cpp | 0 .../src}/targets/taranis/lcd_driver.cpp | 0 .../src}/targets/taranis/pulses_driver.cpp | 0 .../src}/targets/taranis/pwr_driver.cpp | 0 .../src}/targets/taranis/rtc_driver.cpp | 0 .../src}/targets/taranis/sport_driver.cpp | 0 .../src}/targets/taranis/stm32_flash.ld | 0 .../src}/targets/taranis/trainer_driver.cpp | 0 .../src}/targets/taranis/uart_driver.cpp | 0 {src => transmitter/src}/targets/taranis/usb_bsp.c | 0 {src => transmitter/src}/targets/taranis/usb_conf.h | 0 .../src}/targets/taranis/usbd_conf.h | 0 .../src}/targets/taranis/usbd_desc.c | 0 .../src}/targets/taranis/usbd_desc.h | 0 .../src}/targets/taranis/usbd_storage_msd.cpp | 0 .../src}/targets/taranis/usbd_usr.cpp | 0 {src => transmitter/src}/telemetry/ardupilot.cpp | 0 {src => transmitter/src}/telemetry/ardupilot.h | 0 {src => transmitter/src}/telemetry/frsky.cpp | 0 {src => transmitter/src}/telemetry/frsky.h | 0 {src => transmitter/src}/telemetry/frsky_sport.cpp | 0 {src => transmitter/src}/telemetry/frsky_sport.h | 0 {src => transmitter/src}/telemetry/jeti.cpp | 0 {src => transmitter/src}/telemetry/jeti.h | 0 {src => transmitter/src}/telemetry/mavlink.cpp | 0 {src => transmitter/src}/telemetry/mavlink.h | 0 {src => transmitter/src}/telemetry/nmea.cpp | 0 {src => transmitter/src}/telemetry/nmea.h | 0 {src => transmitter/src}/templates.cpp | 0 {src => transmitter/src}/templates.h | 0 {src => transmitter/src}/translations.cpp | 0 {src => transmitter/src}/translations.h | 0 {src => transmitter/src}/translations/cz.h | 0 {src => transmitter/src}/translations/cz.h.txt | 0 {src => transmitter/src}/translations/de.h | 0 {src => transmitter/src}/translations/de.h.txt | 0 {src => transmitter/src}/translations/en.h | 0 {src => transmitter/src}/translations/es.h | 0 {src => transmitter/src}/translations/es.h.txt | 0 {src => transmitter/src}/translations/fr.h | 0 {src => transmitter/src}/translations/fr.h.txt | 0 {src => transmitter/src}/translations/it.h | 0 {src => transmitter/src}/translations/it.h.txt | 0 {src => transmitter/src}/translations/pl.h | 0 {src => transmitter/src}/translations/pl.h.txt | 0 {src => transmitter/src}/translations/pt.h | 0 {src => transmitter/src}/translations/pt.h.txt | 0 {src => transmitter/src}/translations/se.h | 0 {src => transmitter/src}/translations/se.h.txt | 0 {src => transmitter/src}/translations/tts_cz.cpp | 0 {src => transmitter/src}/translations/tts_de.cpp | 0 {src => transmitter/src}/translations/tts_en.cpp | 0 {src => transmitter/src}/translations/tts_es.cpp | 0 {src => transmitter/src}/translations/tts_fr.cpp | 0 {src => transmitter/src}/translations/tts_it.cpp | 0 {src => transmitter/src}/translations/tts_pl.cpp | 0 {src => transmitter/src}/translations/tts_pt.cpp | 0 {src => transmitter/src}/translations/tts_se.cpp | 0 {src => transmitter/src}/translations/tts_sk.cpp | 0 {util => transmitter/util}/compile.py | 0 {util => transmitter/util}/dsm2.py | 0 {util => transmitter/util}/img2lbm.py | 0 {util => transmitter/util}/maxvolume.cmd | 0 {util => transmitter/util}/parse.py | 0 {util => transmitter/util}/translate.py | 0 {util => transmitter/util}/tts.py | 0 707 files changed, 0 insertions(+), 0 deletions(-) rename releasenotes-9x.txt => transmitter/releasenotes-9x.txt (100%) rename releasenotes-taranis.txt => transmitter/releasenotes-taranis.txt (100%) rename {src => transmitter/src}/CoOS/kernel/CoOS.h (100%) rename {src => transmitter/src}/CoOS/kernel/OsConfig.h (100%) rename {src => transmitter/src}/CoOS/kernel/OsCore.h (100%) rename {src => transmitter/src}/CoOS/kernel/OsError.h (100%) rename {src => transmitter/src}/CoOS/kernel/OsEvent.h (100%) rename {src => transmitter/src}/CoOS/kernel/OsFlag.h (100%) rename {src => transmitter/src}/CoOS/kernel/OsKernelHeap.h (100%) rename {src => transmitter/src}/CoOS/kernel/OsMM.h (100%) rename {src => transmitter/src}/CoOS/kernel/OsMutex.h (100%) rename {src => transmitter/src}/CoOS/kernel/OsQueue.h (100%) rename {src => transmitter/src}/CoOS/kernel/OsServiceReq.h (100%) rename {src => transmitter/src}/CoOS/kernel/OsTask.h (100%) rename {src => transmitter/src}/CoOS/kernel/OsTime.h (100%) rename {src => transmitter/src}/CoOS/kernel/OsTimer.h (100%) rename {src => transmitter/src}/CoOS/kernel/coocox.h (100%) rename {src => transmitter/src}/CoOS/kernel/core.c (100%) rename {src => transmitter/src}/CoOS/kernel/event.c (100%) rename {src => transmitter/src}/CoOS/kernel/flag.c (100%) rename {src => transmitter/src}/CoOS/kernel/hook.c (100%) rename {src => transmitter/src}/CoOS/kernel/kernelHeap.c (100%) rename {src => transmitter/src}/CoOS/kernel/mbox.c (100%) rename {src => transmitter/src}/CoOS/kernel/mm.c (100%) rename {src => transmitter/src}/CoOS/kernel/mutex.c (100%) rename {src => transmitter/src}/CoOS/kernel/queue.c (100%) rename {src => transmitter/src}/CoOS/kernel/sem.c (100%) rename {src => transmitter/src}/CoOS/kernel/serviceReq.c (100%) rename {src => transmitter/src}/CoOS/kernel/task.c (100%) rename {src => transmitter/src}/CoOS/kernel/time.c (100%) rename {src => transmitter/src}/CoOS/kernel/timer.c (100%) rename {src => transmitter/src}/CoOS/kernel/utility.c (100%) rename {src => transmitter/src}/CoOS/kernel/utility.h (100%) rename {src => transmitter/src}/CoOS/portable/GCC/port.c (100%) rename {src => transmitter/src}/CoOS/portable/OsArch.h (100%) rename {src => transmitter/src}/CoOS/portable/arch.c (100%) rename {src => transmitter/src}/FatFs/00readme.txt (100%) rename {src => transmitter/src}/FatFs/diskio.h (100%) rename {src => transmitter/src}/FatFs/fattime.c (100%) rename {src => transmitter/src}/FatFs/ff.c (100%) rename {src => transmitter/src}/FatFs/ff.h (100%) rename {src => transmitter/src}/FatFs/ffconf.h (100%) rename {src => transmitter/src}/FatFs/integer.h (100%) rename {src => transmitter/src}/FatFs/option/cc932.c (100%) rename {src => transmitter/src}/FatFs/option/cc936.c (100%) rename {src => transmitter/src}/FatFs/option/cc949.c (100%) rename {src => transmitter/src}/FatFs/option/cc950.c (100%) rename {src => transmitter/src}/FatFs/option/ccsbcs.c (100%) rename {src => transmitter/src}/FatFs/option/syscall.c (100%) rename {src => transmitter/src}/FatFs/option/unicode.c (100%) rename {src => transmitter/src}/GCS_MAVLink/.gitignore (100%) rename {src => transmitter/src}/GCS_MAVLink/COPYING (100%) rename {src => transmitter/src}/GCS_MAVLink/README (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/ardupilotmega/ardupilotmega.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_ahrs.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_ap_adc.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_data16.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_data32.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_data64.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_data96.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_digicam_configure.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_digicam_control.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_fence_fetch_point.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_fence_point.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_fence_status.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_hwstatus.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_limits_status.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_meminfo.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_mount_configure.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_mount_control.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_mount_status.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_radio.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_rangefinder.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_sensor_offsets.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_set_mag_offsets.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_simstate.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_wind.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/ardupilotmega/testsuite.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/ardupilotmega/version.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/checksum.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/common.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_attitude.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_attitude_quaternion.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_auth_key.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_battery_status.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_change_operator_control.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_change_operator_control_ack.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_command_ack.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_command_long.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_data_stream.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_debug.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_debug_vect.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_file_transfer_dir_list.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_file_transfer_res.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_file_transfer_start.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_global_position_int.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_global_position_setpoint_int.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_global_vision_position_estimate.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_gps_global_origin.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_gps_raw_int.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_gps_status.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_heartbeat.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_highres_imu.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_hil_controls.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_hil_gps.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_hil_optical_flow.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_hil_rc_inputs_raw.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_hil_sensor.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_hil_state.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_hil_state_quaternion.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_local_position_ned.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_local_position_ned_system_global_offset.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_local_position_setpoint.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_manual_control.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_manual_setpoint.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_memory_vect.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_ack.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_clear_all.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_count.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_current.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_item.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_item_reached.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_request.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_request_list.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_request_partial_list.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_set_current.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_write_partial_list.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_named_value_float.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_named_value_int.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_nav_controller_output.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_omnidirectional_flow.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_optical_flow.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_param_request_list.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_param_request_read.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_param_set.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_param_value.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_ping.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_radio_status.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_raw_imu.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_raw_pressure.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_rc_channels_override.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_rc_channels_raw.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_rc_channels_scaled.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_request_data_stream.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_roll_pitch_yaw_rates_thrust_setpoint.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_roll_pitch_yaw_speed_thrust_setpoint.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_roll_pitch_yaw_thrust_setpoint.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_safety_allowed_area.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_safety_set_allowed_area.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_scaled_imu.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_scaled_pressure.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_servo_output_raw.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_global_position_setpoint_int.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_gps_global_origin.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_local_position_setpoint.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_mode.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_quad_motors_setpoint.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_quad_swarm_led_roll_pitch_yaw_thrust.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_quad_swarm_roll_pitch_yaw_thrust.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_roll_pitch_yaw_speed_thrust.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_roll_pitch_yaw_thrust.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_setpoint_6dof.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_setpoint_8dof.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_sim_state.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_state_correction.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_statustext.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_sys_status.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_system_time.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_vfr_hud.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_vicon_position_estimate.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_vision_position_estimate.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/mavlink_msg_vision_speed_estimate.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/testsuite.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/common/version.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/mavlink_conversions.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/mavlink_helpers.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/mavlink_protobuf_manager.hpp (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/mavlink_types.h (100%) rename {src => transmitter/src}/GCS_MAVLink/include_v1.0/protocol.h (100%) rename {src => transmitter/src}/GCS_MAVLink/message_definitions_v1.0/ardupilotmega.xml (100%) rename {src => transmitter/src}/GCS_MAVLink/message_definitions_v1.0/autoquad.xml (100%) rename {src => transmitter/src}/GCS_MAVLink/message_definitions_v1.0/common.xml (100%) rename {src => transmitter/src}/GCS_MAVLink/message_definitions_v1.0/matrixpilot.xml (100%) rename {src => transmitter/src}/GCS_MAVLink/message_definitions_v1.0/minimal.xml (100%) rename {src => transmitter/src}/GCS_MAVLink/message_definitions_v1.0/pixhawk.proto (100%) rename {src => transmitter/src}/GCS_MAVLink/message_definitions_v1.0/pixhawk.xml (100%) rename {src => transmitter/src}/GCS_MAVLink/message_definitions_v1.0/sensesoar.xml (100%) rename {src => transmitter/src}/GCS_MAVLink/message_definitions_v1.0/slugs.xml (100%) rename {src => transmitter/src}/GCS_MAVLink/message_definitions_v1.0/test.xml (100%) rename {src => transmitter/src}/GCS_MAVLink/message_definitions_v1.0/ualberta.xml (100%) rename {src => transmitter/src}/GCS_MAVLink/sync (100%) rename {src => transmitter/src}/Makefile (100%) rename {src => transmitter/src}/audio_arm.cpp (100%) rename {src => transmitter/src}/audio_arm.h (100%) rename {src => transmitter/src}/audio_avr.cpp (100%) rename {src => transmitter/src}/audio_avr.h (100%) rename {src => transmitter/src}/bitmaps/about_9x.lbm (100%) rename {src => transmitter/src}/bitmaps/about_9x.png (100%) rename {src => transmitter/src}/bitmaps/about_taranis.lbm (100%) rename {src => transmitter/src}/bitmaps/about_taranis.png (100%) rename {src => transmitter/src}/bitmaps/asterisk.lbm (100%) rename {src => transmitter/src}/bitmaps/asterisk.xbm (100%) rename {src => transmitter/src}/bitmaps/asterisk_4bits.lbm (100%) rename {src => transmitter/src}/bitmaps/asterisk_4bits.png (100%) rename {src => transmitter/src}/bitmaps/icons.lbm (100%) rename {src => transmitter/src}/bitmaps/icons.png (100%) rename {src => transmitter/src}/bitmaps/logo_taranis.bmp (100%) rename {src => transmitter/src}/bitmaps/logo_taranis.lbm (100%) rename {src => transmitter/src}/bitmaps/splash_9x.lbm (100%) rename {src => transmitter/src}/bitmaps/splash_9x.xbm (100%) rename {src => transmitter/src}/bitmaps/splash_taranis.lbm (100%) rename {src => transmitter/src}/bitmaps/splash_taranis.png (100%) rename {src => transmitter/src}/bitmaps/sticks.lbm (100%) rename {src => transmitter/src}/bitmaps/sticks_4x1.xbm (100%) rename {src => transmitter/src}/bmp.cpp (100%) rename {src => transmitter/src}/buzzer.cpp (100%) rename {src => transmitter/src}/buzzer.h (100%) rename {src => transmitter/src}/debug.cpp (100%) rename {src => transmitter/src}/debug.h (100%) rename {src => transmitter/src}/eeprom_common.cpp (100%) rename {src => transmitter/src}/eeprom_common.h (100%) rename {src => transmitter/src}/eeprom_conversions.cpp (100%) rename {src => transmitter/src}/eeprom_raw.cpp (100%) rename {src => transmitter/src}/eeprom_raw.h (100%) rename {src => transmitter/src}/eeprom_rlc.cpp (100%) rename {src => transmitter/src}/eeprom_rlc.h (100%) rename {src => transmitter/src}/fifo.h (100%) rename {src => transmitter/src}/fonts/sqt5/font_04x06.lbm (100%) rename {src => transmitter/src}/fonts/sqt5/font_04x06.png (100%) rename {src => transmitter/src}/fonts/sqt5/font_05x07.lbm (100%) rename {src => transmitter/src}/fonts/sqt5/font_05x07.png (100%) rename {src => transmitter/src}/fonts/sqt5/font_08x10.lbm (100%) rename {src => transmitter/src}/fonts/sqt5/font_08x10.png (100%) rename {src => transmitter/src}/fonts/sqt5/font_10x14.lbm (100%) rename {src => transmitter/src}/fonts/sqt5/font_10x14.png (100%) rename {src => transmitter/src}/fonts/sqt5/font_10x14_compressed.lbm (100%) rename {src => transmitter/src}/fonts/sqt5/font_10x14_compressed.png (100%) rename {src => transmitter/src}/fonts/sqt5/font_cz_04x06.lbm (100%) rename {src => transmitter/src}/fonts/sqt5/font_cz_04x06.png (100%) rename {src => transmitter/src}/fonts/sqt5/font_cz_05x07.lbm (100%) rename {src => transmitter/src}/fonts/sqt5/font_cz_05x07.png (100%) rename {src => transmitter/src}/fonts/sqt5/font_cz_08x10.lbm (100%) rename {src => transmitter/src}/fonts/sqt5/font_cz_08x10.png (100%) rename {src => transmitter/src}/fonts/sqt5/font_cz_10x14.lbm (100%) rename {src => transmitter/src}/fonts/sqt5/font_cz_10x14.png (100%) rename {src => transmitter/src}/fonts/sqt5/font_de_04x06.lbm (100%) rename {src => transmitter/src}/fonts/sqt5/font_de_04x06.png (100%) rename {src => transmitter/src}/fonts/sqt5/font_de_05x07.lbm (100%) rename {src => transmitter/src}/fonts/sqt5/font_de_05x07.png (100%) rename {src => transmitter/src}/fonts/sqt5/font_de_08x10.lbm (100%) rename {src => transmitter/src}/fonts/sqt5/font_de_08x10.png (100%) rename {src => transmitter/src}/fonts/sqt5/font_de_10x14.lbm (100%) rename {src => transmitter/src}/fonts/sqt5/font_de_10x14.png (100%) rename {src => transmitter/src}/fonts/sqt5/font_es_04x06.lbm (100%) rename {src => transmitter/src}/fonts/sqt5/font_es_04x06.png (100%) rename {src => transmitter/src}/fonts/sqt5/font_es_05x07.lbm (100%) rename {src => transmitter/src}/fonts/sqt5/font_es_05x07.png (100%) rename {src => transmitter/src}/fonts/sqt5/font_es_08x10.lbm (100%) rename {src => transmitter/src}/fonts/sqt5/font_es_08x10.png (100%) rename {src => transmitter/src}/fonts/sqt5/font_es_10x14.lbm (100%) rename {src => transmitter/src}/fonts/sqt5/font_es_10x14.png (100%) rename {src => transmitter/src}/fonts/sqt5/font_fr_04x06.lbm (100%) rename {src => transmitter/src}/fonts/sqt5/font_fr_04x06.png (100%) rename {src => transmitter/src}/fonts/sqt5/font_fr_05x07.lbm (100%) rename {src => transmitter/src}/fonts/sqt5/font_fr_05x07.png (100%) rename {src => transmitter/src}/fonts/sqt5/font_fr_08x10.lbm (100%) rename {src => transmitter/src}/fonts/sqt5/font_fr_08x10.png (100%) rename {src => transmitter/src}/fonts/sqt5/font_fr_10x14.lbm (100%) rename {src => transmitter/src}/fonts/sqt5/font_fr_10x14.png (100%) rename {src => transmitter/src}/fonts/sqt5/font_it_04x06.lbm (100%) rename {src => transmitter/src}/fonts/sqt5/font_it_04x06.png (100%) rename {src => transmitter/src}/fonts/sqt5/font_it_05x07.lbm (100%) rename {src => transmitter/src}/fonts/sqt5/font_it_05x07.png (100%) rename {src => transmitter/src}/fonts/sqt5/font_it_08x10.lbm (100%) rename {src => transmitter/src}/fonts/sqt5/font_it_08x10.png (100%) rename {src => transmitter/src}/fonts/sqt5/font_it_10x14.lbm (100%) rename {src => transmitter/src}/fonts/sqt5/font_it_10x14.png (100%) rename {src => transmitter/src}/fonts/sqt5/font_pt_05x07.lbm (100%) rename {src => transmitter/src}/fonts/sqt5/font_pt_05x07.png (100%) rename {src => transmitter/src}/fonts/sqt5/font_pt_08x10.lbm (100%) rename {src => transmitter/src}/fonts/sqt5/font_pt_08x10.png (100%) rename {src => transmitter/src}/fonts/sqt5/font_pt_10x14.lbm (100%) rename {src => transmitter/src}/fonts/sqt5/font_pt_10x14.png (100%) rename {src => transmitter/src}/fonts/sqt5/font_se_04x06.lbm (100%) rename {src => transmitter/src}/fonts/sqt5/font_se_04x06.png (100%) rename {src => transmitter/src}/fonts/sqt5/font_se_05x07.lbm (100%) rename {src => transmitter/src}/fonts/sqt5/font_se_05x07.png (100%) rename {src => transmitter/src}/fonts/sqt5/font_se_08x10.lbm (100%) rename {src => transmitter/src}/fonts/sqt5/font_se_08x10.png (100%) rename {src => transmitter/src}/fonts/sqt5/font_se_10x14.lbm (100%) rename {src => transmitter/src}/fonts/sqt5/font_se_10x14.png (100%) rename {src => transmitter/src}/fonts/std/font_03x05.lbm (100%) rename {src => transmitter/src}/fonts/std/font_03x05.png (100%) rename {src => transmitter/src}/fonts/std/font_04x06.lbm (100%) rename {src => transmitter/src}/fonts/std/font_04x06.png (100%) rename {src => transmitter/src}/fonts/std/font_04x06_extra.lbm (100%) rename {src => transmitter/src}/fonts/std/font_04x06_extra.png (100%) rename {src => transmitter/src}/fonts/std/font_05x07.lbm (100%) rename {src => transmitter/src}/fonts/std/font_05x07.png (100%) rename {src => transmitter/src}/fonts/std/font_05x07_extra.lbm (100%) rename {src => transmitter/src}/fonts/std/font_05x07_extra.png (100%) rename {src => transmitter/src}/fonts/std/font_08x10.lbm (100%) rename {src => transmitter/src}/fonts/std/font_08x10.png (100%) rename {src => transmitter/src}/fonts/std/font_10x14.lbm (100%) rename {src => transmitter/src}/fonts/std/font_10x14.png (100%) rename {src => transmitter/src}/fonts/std/font_10x14_compressed.lbm (100%) rename {src => transmitter/src}/fonts/std/font_10x14_compressed.png (100%) rename {src => transmitter/src}/fonts/std/font_10x14_extra.lbm (100%) rename {src => transmitter/src}/fonts/std/font_10x14_extra.png (100%) rename {src => transmitter/src}/fonts/std/font_cz_04x06.lbm (100%) rename {src => transmitter/src}/fonts/std/font_cz_04x06.png (100%) rename {src => transmitter/src}/fonts/std/font_cz_05x07.lbm (100%) rename {src => transmitter/src}/fonts/std/font_cz_05x07.png (100%) rename {src => transmitter/src}/fonts/std/font_cz_08x10.lbm (100%) rename {src => transmitter/src}/fonts/std/font_cz_08x10.png (100%) rename {src => transmitter/src}/fonts/std/font_cz_10x14.lbm (100%) rename {src => transmitter/src}/fonts/std/font_cz_10x14.png (100%) rename {src => transmitter/src}/fonts/std/font_de_04x06.lbm (100%) rename {src => transmitter/src}/fonts/std/font_de_04x06.png (100%) rename {src => transmitter/src}/fonts/std/font_de_05x07.lbm (100%) rename {src => transmitter/src}/fonts/std/font_de_05x07.png (100%) rename {src => transmitter/src}/fonts/std/font_de_08x10.lbm (100%) rename {src => transmitter/src}/fonts/std/font_de_08x10.png (100%) rename {src => transmitter/src}/fonts/std/font_de_10x14.lbm (100%) rename {src => transmitter/src}/fonts/std/font_de_10x14.png (100%) rename {src => transmitter/src}/fonts/std/font_es_04x06.lbm (100%) rename {src => transmitter/src}/fonts/std/font_es_04x06.png (100%) rename {src => transmitter/src}/fonts/std/font_es_05x07.lbm (100%) rename {src => transmitter/src}/fonts/std/font_es_05x07.png (100%) rename {src => transmitter/src}/fonts/std/font_es_08x10.lbm (100%) rename {src => transmitter/src}/fonts/std/font_es_08x10.png (100%) rename {src => transmitter/src}/fonts/std/font_es_10x14.lbm (100%) rename {src => transmitter/src}/fonts/std/font_es_10x14.png (100%) rename {src => transmitter/src}/fonts/std/font_fr_04x06.lbm (100%) rename {src => transmitter/src}/fonts/std/font_fr_04x06.png (100%) rename {src => transmitter/src}/fonts/std/font_fr_05x07.lbm (100%) rename {src => transmitter/src}/fonts/std/font_fr_05x07.png (100%) rename {src => transmitter/src}/fonts/std/font_fr_08x10.lbm (100%) rename {src => transmitter/src}/fonts/std/font_fr_08x10.png (100%) rename {src => transmitter/src}/fonts/std/font_fr_10x14.lbm (100%) rename {src => transmitter/src}/fonts/std/font_fr_10x14.png (100%) rename {src => transmitter/src}/fonts/std/font_it_04x06.lbm (100%) rename {src => transmitter/src}/fonts/std/font_it_04x06.png (100%) rename {src => transmitter/src}/fonts/std/font_it_05x07.lbm (100%) rename {src => transmitter/src}/fonts/std/font_it_05x07.png (100%) rename {src => transmitter/src}/fonts/std/font_it_08x10.lbm (100%) rename {src => transmitter/src}/fonts/std/font_it_08x10.png (100%) rename {src => transmitter/src}/fonts/std/font_it_10x14.lbm (100%) rename {src => transmitter/src}/fonts/std/font_it_10x14.png (100%) rename {src => transmitter/src}/fonts/std/font_pt_04x06.lbm (100%) rename {src => transmitter/src}/fonts/std/font_pt_04x06.png (100%) rename {src => transmitter/src}/fonts/std/font_pt_05x07.lbm (100%) rename {src => transmitter/src}/fonts/std/font_pt_05x07.png (100%) rename {src => transmitter/src}/fonts/std/font_pt_08x10.lbm (100%) rename {src => transmitter/src}/fonts/std/font_pt_08x10.png (100%) rename {src => transmitter/src}/fonts/std/font_pt_10x14.lbm (100%) rename {src => transmitter/src}/fonts/std/font_pt_10x14.png (100%) rename {src => transmitter/src}/fonts/std/font_se_04x06.lbm (100%) rename {src => transmitter/src}/fonts/std/font_se_04x06.png (100%) rename {src => transmitter/src}/fonts/std/font_se_05x07.lbm (100%) rename {src => transmitter/src}/fonts/std/font_se_05x07.png (100%) rename {src => transmitter/src}/fonts/std/font_se_08x10.lbm (100%) rename {src => transmitter/src}/fonts/std/font_se_08x10.png (100%) rename {src => transmitter/src}/fonts/std/font_se_10x14.lbm (100%) rename {src => transmitter/src}/fonts/std/font_se_10x14.png (100%) rename {src => transmitter/src}/gtests.cpp (100%) rename {src => transmitter/src}/gui/menu_general.cpp (100%) rename {src => transmitter/src}/gui/menu_model.cpp (100%) rename {src => transmitter/src}/gui/menus.cpp (100%) rename {src => transmitter/src}/gui/menus.h (100%) rename {src => transmitter/src}/gui/view_about.cpp (100%) rename {src => transmitter/src}/gui/view_channels.cpp (100%) rename {src => transmitter/src}/gui/view_main.cpp (100%) rename {src => transmitter/src}/gui/view_mavlink.cpp (100%) rename {src => transmitter/src}/gui/view_mavlink.h (100%) rename {src => transmitter/src}/gui/view_statistics.cpp (100%) rename {src => transmitter/src}/gui/view_telemetry.cpp (100%) rename {src => transmitter/src}/gui/view_text.cpp (100%) rename {src => transmitter/src}/haptic.cpp (100%) rename {src => transmitter/src}/haptic.h (100%) rename {src => transmitter/src}/keys.cpp (100%) rename {src => transmitter/src}/lcd.cpp (100%) rename {src => transmitter/src}/lcd.h (100%) rename {src => transmitter/src}/logs.cpp (100%) rename {src => transmitter/src}/maths.cpp (100%) rename {src => transmitter/src}/myeeprom.h (100%) rename {src => transmitter/src}/opentx.cpp (100%) rename {src => transmitter/src}/opentx.h (100%) rename {src => transmitter/src}/pgmtypes.h (100%) rename {src => transmitter/src}/protocols/dsm2_arm.cpp (100%) rename {src => transmitter/src}/protocols/ppm_arm.cpp (100%) rename {src => transmitter/src}/protocols/pulses_arm.cpp (100%) rename {src => transmitter/src}/protocols/pulses_arm.h (100%) rename {src => transmitter/src}/protocols/pulses_avr.cpp (100%) rename {src => transmitter/src}/protocols/pulses_avr.h (100%) rename {src => transmitter/src}/protocols/pxx_arm.cpp (100%) rename {src => transmitter/src}/rtc.cpp (100%) rename {src => transmitter/src}/rtc.h (100%) rename {src => transmitter/src}/sdcard.h (100%) rename {src => transmitter/src}/serial.cpp (100%) rename {src => transmitter/src}/serial.h (100%) rename {src => transmitter/src}/simpgmspace.cpp (100%) rename {src => transmitter/src}/simpgmspace.h (100%) rename {src => transmitter/src}/simu.cpp (100%) rename {src => transmitter/src}/stamp.cpp (100%) rename {src => transmitter/src}/targets/gruvin9x/board_gruvin9x.cpp (100%) rename {src => transmitter/src}/targets/gruvin9x/board_gruvin9x.h (100%) rename {src => transmitter/src}/targets/gruvin9x/diskio.cpp (100%) rename {src => transmitter/src}/targets/gruvin9x/fuses_2561.txt (100%) rename {src => transmitter/src}/targets/gruvin9x/rtc_driver.cpp (100%) rename {src => transmitter/src}/targets/gruvin9x/somo14d.cpp (100%) rename {src => transmitter/src}/targets/gruvin9x/somo14d.h (100%) rename {src => transmitter/src}/targets/mega2560/00readme.txt (100%) rename {src => transmitter/src}/targets/mega2560/board_mega2560.cpp (100%) rename {src => transmitter/src}/targets/mega2560/board_mega2560.h (100%) rename {src => transmitter/src}/targets/mega2560/io_mega2560.h (100%) rename {src => transmitter/src}/targets/mega2560/lcd_driver_ST7565R.cpp (100%) rename {src => transmitter/src}/targets/mega2560/rtc_driver.cpp (100%) rename {src => transmitter/src}/targets/sky9x/AT91SAM3S2.h (100%) rename {src => transmitter/src}/targets/sky9x/AT91SAM3S4.h (100%) rename {src => transmitter/src}/targets/sky9x/MEDSdcard.c (100%) rename {src => transmitter/src}/targets/sky9x/Media.h (100%) rename {src => transmitter/src}/targets/sky9x/adc_driver.cpp (100%) rename {src => transmitter/src}/targets/sky9x/audio_driver.cpp (100%) rename {src => transmitter/src}/targets/sky9x/audio_driver.h (100%) rename {src => transmitter/src}/targets/sky9x/bluetooth.cpp (100%) rename {src => transmitter/src}/targets/sky9x/board.h (100%) rename {src => transmitter/src}/targets/sky9x/board_lowlevel.c (100%) rename {src => transmitter/src}/targets/sky9x/board_sky9x.cpp (100%) rename {src => transmitter/src}/targets/sky9x/board_sky9x.h (100%) rename {src => transmitter/src}/targets/sky9x/buzzer_driver.cpp (100%) rename {src => transmitter/src}/targets/sky9x/chip.h (100%) rename {src => transmitter/src}/targets/sky9x/coproc_driver.cpp (100%) rename {src => transmitter/src}/targets/sky9x/core_cm3.c (100%) rename {src => transmitter/src}/targets/sky9x/core_cm3.h (100%) rename {src => transmitter/src}/targets/sky9x/crt.c (100%) rename {src => transmitter/src}/targets/sky9x/debug_driver.cpp (100%) rename {src => transmitter/src}/targets/sky9x/diskio.cpp (100%) rename {src => transmitter/src}/targets/sky9x/eeprom_driver.cpp (100%) rename {src => transmitter/src}/targets/sky9x/haptic_driver.cpp (100%) rename {src => transmitter/src}/targets/sky9x/keys_driver.cpp (100%) rename {src => transmitter/src}/targets/sky9x/lcd_driver.cpp (100%) rename {src => transmitter/src}/targets/sky9x/massstorage.cpp (100%) rename {src => transmitter/src}/targets/sky9x/pulses_driver.cpp (100%) rename {src => transmitter/src}/targets/sky9x/pwr_driver.cpp (100%) rename {src => transmitter/src}/targets/sky9x/rotenc_driver.cpp (100%) rename {src => transmitter/src}/targets/sky9x/rtc_driver.cpp (100%) rename {src => transmitter/src}/targets/sky9x/sam3s2c_flash.ld (100%) rename {src => transmitter/src}/targets/sky9x/sam3s4c_flash.ld (100%) rename {src => transmitter/src}/targets/sky9x/sdcard_driver.cpp (100%) rename {src => transmitter/src}/targets/sky9x/syscalls.c (100%) rename {src => transmitter/src}/targets/sky9x/usb/common/core/USBConfigurationDescriptor.c (100%) rename {src => transmitter/src}/targets/sky9x/usb/common/core/USBConfigurationDescriptor.h (100%) rename {src => transmitter/src}/targets/sky9x/usb/common/core/USBDeviceDescriptor.h (100%) rename {src => transmitter/src}/targets/sky9x/usb/common/core/USBDeviceQualifierDescriptor.h (100%) rename {src => transmitter/src}/targets/sky9x/usb/common/core/USBEndpointDescriptor.c (100%) rename {src => transmitter/src}/targets/sky9x/usb/common/core/USBEndpointDescriptor.h (100%) rename {src => transmitter/src}/targets/sky9x/usb/common/core/USBFeatureRequest.c (100%) rename {src => transmitter/src}/targets/sky9x/usb/common/core/USBFeatureRequest.h (100%) rename {src => transmitter/src}/targets/sky9x/usb/common/core/USBGenericDescriptor.c (100%) rename {src => transmitter/src}/targets/sky9x/usb/common/core/USBGenericDescriptor.h (100%) rename {src => transmitter/src}/targets/sky9x/usb/common/core/USBGenericRequest.c (100%) rename {src => transmitter/src}/targets/sky9x/usb/common/core/USBGenericRequest.h (100%) rename {src => transmitter/src}/targets/sky9x/usb/common/core/USBGetDescriptorRequest.c (100%) rename {src => transmitter/src}/targets/sky9x/usb/common/core/USBGetDescriptorRequest.h (100%) rename {src => transmitter/src}/targets/sky9x/usb/common/core/USBInterfaceAssociationDescriptor.h (100%) rename {src => transmitter/src}/targets/sky9x/usb/common/core/USBInterfaceDescriptor.h (100%) rename {src => transmitter/src}/targets/sky9x/usb/common/core/USBInterfaceRequest.c (100%) rename {src => transmitter/src}/targets/sky9x/usb/common/core/USBInterfaceRequest.h (100%) rename {src => transmitter/src}/targets/sky9x/usb/common/core/USBIrqHandler.c (100%) rename {src => transmitter/src}/targets/sky9x/usb/common/core/USBIrqHandler.h (100%) rename {src => transmitter/src}/targets/sky9x/usb/common/core/USBSetAddressRequest.c (100%) rename {src => transmitter/src}/targets/sky9x/usb/common/core/USBSetAddressRequest.h (100%) rename {src => transmitter/src}/targets/sky9x/usb/common/core/USBSetConfigurationRequest.c (100%) rename {src => transmitter/src}/targets/sky9x/usb/common/core/USBSetConfigurationRequest.h (100%) rename {src => transmitter/src}/targets/sky9x/usb/common/core/USBStringDescriptor.h (100%) rename {src => transmitter/src}/targets/sky9x/usb/common/massstorage/MSDeviceDescriptor.h (100%) rename {src => transmitter/src}/targets/sky9x/usb/common/massstorage/MSInterfaceDescriptor.h (100%) rename {src => transmitter/src}/targets/sky9x/usb/device/core/USBD.h (100%) rename {src => transmitter/src}/targets/sky9x/usb/device/core/USBDDriver.c (100%) rename {src => transmitter/src}/targets/sky9x/usb/device/core/USBDDriver.h (100%) rename {src => transmitter/src}/targets/sky9x/usb/device/core/USBDDriverDescriptors.h (100%) rename {src => transmitter/src}/targets/sky9x/usb/device/core/USBD_UDP.c (100%) rename {src => transmitter/src}/targets/sky9x/usb/device/massstorage/MSD.h (100%) rename {src => transmitter/src}/targets/sky9x/usb/device/massstorage/MSDDStateMachine.c (100%) rename {src => transmitter/src}/targets/sky9x/usb/device/massstorage/MSDDStateMachine.h (100%) rename {src => transmitter/src}/targets/sky9x/usb/device/massstorage/MSDDriver.c (100%) rename {src => transmitter/src}/targets/sky9x/usb/device/massstorage/MSDDriver.h (100%) rename {src => transmitter/src}/targets/sky9x/usb/device/massstorage/MSDDriverDescriptors.c (100%) rename {src => transmitter/src}/targets/sky9x/usb/device/massstorage/MSDDriverDescriptors.h (100%) rename {src => transmitter/src}/targets/sky9x/usb/device/massstorage/MSDIOFifo.h (100%) rename {src => transmitter/src}/targets/sky9x/usb/device/massstorage/MSDLun.c (100%) rename {src => transmitter/src}/targets/sky9x/usb/device/massstorage/MSDLun.h (100%) rename {src => transmitter/src}/targets/sky9x/usb/device/massstorage/SBC.h (100%) rename {src => transmitter/src}/targets/sky9x/usb/device/massstorage/SBCMethods.c (100%) rename {src => transmitter/src}/targets/sky9x/usb/device/massstorage/SBCMethods.h (100%) rename {src => transmitter/src}/targets/sky9x/vectors_sam3s.c (100%) rename {src => transmitter/src}/targets/stock/board_stock.cpp (100%) rename {src => transmitter/src}/targets/stock/board_stock.h (100%) rename {src => transmitter/src}/targets/stock/lcd_driver.cpp (100%) rename {src => transmitter/src}/targets/stock/voice.cpp (100%) rename {src => transmitter/src}/targets/stock/voice.h (100%) rename {src => transmitter/src}/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Device/ST/STM32F2xx/Include/stm32f2xx.h (100%) rename {src => transmitter/src}/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Device/ST/STM32F2xx/Include/system_stm32f2xx.h (100%) rename {src => transmitter/src}/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Device/ST/STM32F2xx/Source/Templates/gcc_ride7/startup_stm32f2xx.s (100%) rename {src => transmitter/src}/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Device/ST/STM32F2xx/Source/Templates/system_stm32f2xx.c (100%) rename {src => transmitter/src}/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Include/arm_common_tables.h (100%) rename {src => transmitter/src}/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Include/arm_math.h (100%) rename {src => transmitter/src}/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Include/core_cm0.h (100%) rename {src => transmitter/src}/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Include/core_cm3.h (100%) rename {src => transmitter/src}/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Include/core_cm4.h (100%) rename {src => transmitter/src}/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Include/core_cm4_simd.h (100%) rename {src => transmitter/src}/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Include/core_cmFunc.h (100%) rename {src => transmitter/src}/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Include/core_cmInstr.h (100%) rename {src => transmitter/src}/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/misc.h (100%) rename {src => transmitter/src}/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_adc.h (100%) rename {src => transmitter/src}/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_can.h (100%) rename {src => transmitter/src}/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_crc.h (100%) rename {src => transmitter/src}/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_cryp.h (100%) rename {src => transmitter/src}/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_dac.h (100%) rename {src => transmitter/src}/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_dbgmcu.h (100%) rename {src => transmitter/src}/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_dcmi.h (100%) rename {src => transmitter/src}/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_dma.h (100%) rename {src => transmitter/src}/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_exti.h (100%) rename {src => transmitter/src}/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_flash.h (100%) rename {src => transmitter/src}/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_fsmc.h (100%) rename {src => transmitter/src}/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_gpio.h (100%) rename {src => transmitter/src}/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_hash.h (100%) rename {src => transmitter/src}/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_i2c.h (100%) rename {src => transmitter/src}/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_iwdg.h (100%) rename {src => transmitter/src}/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_pwr.h (100%) rename {src => transmitter/src}/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_rcc.h (100%) rename {src => transmitter/src}/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_rng.h (100%) rename {src => transmitter/src}/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_rtc.h (100%) rename {src => transmitter/src}/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_sdio.h (100%) rename {src => transmitter/src}/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_spi.h (100%) rename {src => transmitter/src}/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_syscfg.h (100%) rename {src => transmitter/src}/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_tim.h (100%) rename {src => transmitter/src}/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_usart.h (100%) rename {src => transmitter/src}/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_wwdg.h (100%) rename {src => transmitter/src}/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/misc.c (100%) rename {src => transmitter/src}/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_adc.c (100%) rename {src => transmitter/src}/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_can.c (100%) rename {src => transmitter/src}/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_crc.c (100%) rename {src => transmitter/src}/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_cryp.c (100%) rename {src => transmitter/src}/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_cryp_aes.c (100%) rename {src => transmitter/src}/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_cryp_des.c (100%) rename {src => transmitter/src}/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_cryp_tdes.c (100%) rename {src => transmitter/src}/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_dac.c (100%) rename {src => transmitter/src}/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_dbgmcu.c (100%) rename {src => transmitter/src}/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_dcmi.c (100%) rename {src => transmitter/src}/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_dma.c (100%) rename {src => transmitter/src}/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_exti.c (100%) rename {src => transmitter/src}/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_flash.c (100%) rename {src => transmitter/src}/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_fsmc.c (100%) rename {src => transmitter/src}/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_gpio.c (100%) rename {src => transmitter/src}/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_hash.c (100%) rename {src => transmitter/src}/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_hash_md5.c (100%) rename {src => transmitter/src}/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_hash_sha1.c (100%) rename {src => transmitter/src}/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_i2c.c (100%) rename {src => transmitter/src}/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_iwdg.c (100%) rename {src => transmitter/src}/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_pwr.c (100%) rename {src => transmitter/src}/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_rcc.c (100%) rename {src => transmitter/src}/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_rng.c (100%) rename {src => transmitter/src}/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_rtc.c (100%) rename {src => transmitter/src}/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_sdio.c (100%) rename {src => transmitter/src}/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_spi.c (100%) rename {src => transmitter/src}/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_syscfg.c (100%) rename {src => transmitter/src}/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_tim.c (100%) rename {src => transmitter/src}/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_usart.c (100%) rename {src => transmitter/src}/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_wwdg.c (100%) rename {src => transmitter/src}/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/audio/inc/usbd_audio_core.h (100%) rename {src => transmitter/src}/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/audio/inc/usbd_audio_out_if.h (100%) rename {src => transmitter/src}/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/audio/src/usbd_audio_core.c (100%) rename {src => transmitter/src}/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/audio/src/usbd_audio_out_if.c (100%) rename {src => transmitter/src}/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/cdc/inc/usbd_cdc_core.h (100%) rename {src => transmitter/src}/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/cdc/inc/usbd_cdc_if_template.h (100%) rename {src => transmitter/src}/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/cdc/src/usbd_cdc_core.c (100%) rename {src => transmitter/src}/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/cdc/src/usbd_cdc_if_template.c (100%) rename {src => transmitter/src}/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_dfu_core.h (100%) rename {src => transmitter/src}/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_dfu_mal.h (100%) rename {src => transmitter/src}/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_flash_if.h (100%) rename {src => transmitter/src}/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_mem_if_template.h (100%) rename {src => transmitter/src}/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_otp_if.h (100%) rename {src => transmitter/src}/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_dfu_core.c (100%) rename {src => transmitter/src}/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_dfu_mal.c (100%) rename {src => transmitter/src}/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_flash_if.c (100%) rename {src => transmitter/src}/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_mem_if_template.c (100%) rename {src => transmitter/src}/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_otp_if.c (100%) rename {src => transmitter/src}/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/hid/inc/usbd_hid_core.h (100%) rename {src => transmitter/src}/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/hid/src/usbd_hid_core.c (100%) rename {src => transmitter/src}/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_bot.h (100%) rename {src => transmitter/src}/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_core.h (100%) rename {src => transmitter/src}/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_data.h (100%) rename {src => transmitter/src}/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_mem.h (100%) rename {src => transmitter/src}/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_scsi.h (100%) rename {src => transmitter/src}/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_bot.c (100%) rename {src => transmitter/src}/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_core.c (100%) rename {src => transmitter/src}/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_data.c (100%) rename {src => transmitter/src}/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_scsi.c (100%) rename {src => transmitter/src}/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_conf_template.h (100%) rename {src => transmitter/src}/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_core.h (100%) rename {src => transmitter/src}/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_def.h (100%) rename {src => transmitter/src}/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_ioreq.h (100%) rename {src => transmitter/src}/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_req.h (100%) rename {src => transmitter/src}/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_usr.h (100%) rename {src => transmitter/src}/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/src/usbd_core.c (100%) rename {src => transmitter/src}/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/src/usbd_ioreq.c (100%) rename {src => transmitter/src}/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/src/usbd_req.c (100%) rename {src => transmitter/src}/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Release_Notes.html (100%) rename {src => transmitter/src}/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/Release_Notes.html (100%) rename {src => transmitter/src}/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_bsp.h (100%) rename {src => transmitter/src}/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_conf_template.h (100%) rename {src => transmitter/src}/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_core.h (100%) rename {src => transmitter/src}/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_dcd.h (100%) rename {src => transmitter/src}/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_dcd_int.h (100%) rename {src => transmitter/src}/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_defines.h (100%) rename {src => transmitter/src}/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_hcd.h (100%) rename {src => transmitter/src}/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_hcd_int.h (100%) rename {src => transmitter/src}/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_otg.h (100%) rename {src => transmitter/src}/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_regs.h (100%) rename {src => transmitter/src}/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/src/usb_core.c (100%) rename {src => transmitter/src}/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/src/usb_dcd.c (100%) rename {src => transmitter/src}/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/src/usb_dcd_int.c (100%) rename {src => transmitter/src}/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/src/usb_hcd.c (100%) rename {src => transmitter/src}/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/src/usb_hcd_int.c (100%) rename {src => transmitter/src}/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/src/usb_otg.c (100%) rename {src => transmitter/src}/targets/taranis/adc_driver.cpp (100%) rename {src => transmitter/src}/targets/taranis/aspi.cpp (100%) rename {src => transmitter/src}/targets/taranis/aspi.h (100%) rename {src => transmitter/src}/targets/taranis/audio_driver.cpp (100%) rename {src => transmitter/src}/targets/taranis/audio_driver.h (100%) rename {src => transmitter/src}/targets/taranis/board_taranis.cpp (100%) rename {src => transmitter/src}/targets/taranis/board_taranis.h (100%) rename {src => transmitter/src}/targets/taranis/delays.cpp (100%) rename {src => transmitter/src}/targets/taranis/diskio.cpp (100%) rename {src => transmitter/src}/targets/taranis/hal.h (100%) rename {src => transmitter/src}/targets/taranis/i2c.c (100%) rename {src => transmitter/src}/targets/taranis/i2c.h (100%) rename {src => transmitter/src}/targets/taranis/keys_driver.cpp (100%) rename {src => transmitter/src}/targets/taranis/lcd_driver.cpp (100%) rename {src => transmitter/src}/targets/taranis/pulses_driver.cpp (100%) rename {src => transmitter/src}/targets/taranis/pwr_driver.cpp (100%) rename {src => transmitter/src}/targets/taranis/rtc_driver.cpp (100%) rename {src => transmitter/src}/targets/taranis/sport_driver.cpp (100%) rename {src => transmitter/src}/targets/taranis/stm32_flash.ld (100%) rename {src => transmitter/src}/targets/taranis/trainer_driver.cpp (100%) rename {src => transmitter/src}/targets/taranis/uart_driver.cpp (100%) rename {src => transmitter/src}/targets/taranis/usb_bsp.c (100%) rename {src => transmitter/src}/targets/taranis/usb_conf.h (100%) rename {src => transmitter/src}/targets/taranis/usbd_conf.h (100%) rename {src => transmitter/src}/targets/taranis/usbd_desc.c (100%) rename {src => transmitter/src}/targets/taranis/usbd_desc.h (100%) rename {src => transmitter/src}/targets/taranis/usbd_storage_msd.cpp (100%) rename {src => transmitter/src}/targets/taranis/usbd_usr.cpp (100%) rename {src => transmitter/src}/telemetry/ardupilot.cpp (100%) rename {src => transmitter/src}/telemetry/ardupilot.h (100%) rename {src => transmitter/src}/telemetry/frsky.cpp (100%) rename {src => transmitter/src}/telemetry/frsky.h (100%) rename {src => transmitter/src}/telemetry/frsky_sport.cpp (100%) rename {src => transmitter/src}/telemetry/frsky_sport.h (100%) rename {src => transmitter/src}/telemetry/jeti.cpp (100%) rename {src => transmitter/src}/telemetry/jeti.h (100%) rename {src => transmitter/src}/telemetry/mavlink.cpp (100%) rename {src => transmitter/src}/telemetry/mavlink.h (100%) rename {src => transmitter/src}/telemetry/nmea.cpp (100%) rename {src => transmitter/src}/telemetry/nmea.h (100%) rename {src => transmitter/src}/templates.cpp (100%) rename {src => transmitter/src}/templates.h (100%) rename {src => transmitter/src}/translations.cpp (100%) rename {src => transmitter/src}/translations.h (100%) rename {src => transmitter/src}/translations/cz.h (100%) rename {src => transmitter/src}/translations/cz.h.txt (100%) rename {src => transmitter/src}/translations/de.h (100%) rename {src => transmitter/src}/translations/de.h.txt (100%) rename {src => transmitter/src}/translations/en.h (100%) rename {src => transmitter/src}/translations/es.h (100%) rename {src => transmitter/src}/translations/es.h.txt (100%) rename {src => transmitter/src}/translations/fr.h (100%) rename {src => transmitter/src}/translations/fr.h.txt (100%) rename {src => transmitter/src}/translations/it.h (100%) rename {src => transmitter/src}/translations/it.h.txt (100%) rename {src => transmitter/src}/translations/pl.h (100%) rename {src => transmitter/src}/translations/pl.h.txt (100%) rename {src => transmitter/src}/translations/pt.h (100%) rename {src => transmitter/src}/translations/pt.h.txt (100%) rename {src => transmitter/src}/translations/se.h (100%) rename {src => transmitter/src}/translations/se.h.txt (100%) rename {src => transmitter/src}/translations/tts_cz.cpp (100%) rename {src => transmitter/src}/translations/tts_de.cpp (100%) rename {src => transmitter/src}/translations/tts_en.cpp (100%) rename {src => transmitter/src}/translations/tts_es.cpp (100%) rename {src => transmitter/src}/translations/tts_fr.cpp (100%) rename {src => transmitter/src}/translations/tts_it.cpp (100%) rename {src => transmitter/src}/translations/tts_pl.cpp (100%) rename {src => transmitter/src}/translations/tts_pt.cpp (100%) rename {src => transmitter/src}/translations/tts_se.cpp (100%) rename {src => transmitter/src}/translations/tts_sk.cpp (100%) rename {util => transmitter/util}/compile.py (100%) rename {util => transmitter/util}/dsm2.py (100%) rename {util => transmitter/util}/img2lbm.py (100%) rename {util => transmitter/util}/maxvolume.cmd (100%) rename {util => transmitter/util}/parse.py (100%) rename {util => transmitter/util}/translate.py (100%) rename {util => transmitter/util}/tts.py (100%) diff --git a/releasenotes-9x.txt b/transmitter/releasenotes-9x.txt similarity index 100% rename from releasenotes-9x.txt rename to transmitter/releasenotes-9x.txt diff --git a/releasenotes-taranis.txt b/transmitter/releasenotes-taranis.txt similarity index 100% rename from releasenotes-taranis.txt rename to transmitter/releasenotes-taranis.txt diff --git a/src/CoOS/kernel/CoOS.h b/transmitter/src/CoOS/kernel/CoOS.h similarity index 100% rename from src/CoOS/kernel/CoOS.h rename to transmitter/src/CoOS/kernel/CoOS.h diff --git a/src/CoOS/kernel/OsConfig.h b/transmitter/src/CoOS/kernel/OsConfig.h similarity index 100% rename from src/CoOS/kernel/OsConfig.h rename to transmitter/src/CoOS/kernel/OsConfig.h diff --git a/src/CoOS/kernel/OsCore.h b/transmitter/src/CoOS/kernel/OsCore.h similarity index 100% rename from src/CoOS/kernel/OsCore.h rename to transmitter/src/CoOS/kernel/OsCore.h diff --git a/src/CoOS/kernel/OsError.h b/transmitter/src/CoOS/kernel/OsError.h similarity index 100% rename from src/CoOS/kernel/OsError.h rename to transmitter/src/CoOS/kernel/OsError.h diff --git a/src/CoOS/kernel/OsEvent.h b/transmitter/src/CoOS/kernel/OsEvent.h similarity index 100% rename from src/CoOS/kernel/OsEvent.h rename to transmitter/src/CoOS/kernel/OsEvent.h diff --git a/src/CoOS/kernel/OsFlag.h b/transmitter/src/CoOS/kernel/OsFlag.h similarity index 100% rename from src/CoOS/kernel/OsFlag.h rename to transmitter/src/CoOS/kernel/OsFlag.h diff --git a/src/CoOS/kernel/OsKernelHeap.h b/transmitter/src/CoOS/kernel/OsKernelHeap.h similarity index 100% rename from src/CoOS/kernel/OsKernelHeap.h rename to transmitter/src/CoOS/kernel/OsKernelHeap.h diff --git a/src/CoOS/kernel/OsMM.h b/transmitter/src/CoOS/kernel/OsMM.h similarity index 100% rename from src/CoOS/kernel/OsMM.h rename to transmitter/src/CoOS/kernel/OsMM.h diff --git a/src/CoOS/kernel/OsMutex.h b/transmitter/src/CoOS/kernel/OsMutex.h similarity index 100% rename from src/CoOS/kernel/OsMutex.h rename to transmitter/src/CoOS/kernel/OsMutex.h diff --git a/src/CoOS/kernel/OsQueue.h b/transmitter/src/CoOS/kernel/OsQueue.h similarity index 100% rename from src/CoOS/kernel/OsQueue.h rename to transmitter/src/CoOS/kernel/OsQueue.h diff --git a/src/CoOS/kernel/OsServiceReq.h b/transmitter/src/CoOS/kernel/OsServiceReq.h similarity index 100% rename from src/CoOS/kernel/OsServiceReq.h rename to transmitter/src/CoOS/kernel/OsServiceReq.h diff --git a/src/CoOS/kernel/OsTask.h b/transmitter/src/CoOS/kernel/OsTask.h similarity index 100% rename from src/CoOS/kernel/OsTask.h rename to transmitter/src/CoOS/kernel/OsTask.h diff --git a/src/CoOS/kernel/OsTime.h b/transmitter/src/CoOS/kernel/OsTime.h similarity index 100% rename from src/CoOS/kernel/OsTime.h rename to transmitter/src/CoOS/kernel/OsTime.h diff --git a/src/CoOS/kernel/OsTimer.h b/transmitter/src/CoOS/kernel/OsTimer.h similarity index 100% rename from src/CoOS/kernel/OsTimer.h rename to transmitter/src/CoOS/kernel/OsTimer.h diff --git a/src/CoOS/kernel/coocox.h b/transmitter/src/CoOS/kernel/coocox.h similarity index 100% rename from src/CoOS/kernel/coocox.h rename to transmitter/src/CoOS/kernel/coocox.h diff --git a/src/CoOS/kernel/core.c b/transmitter/src/CoOS/kernel/core.c similarity index 100% rename from src/CoOS/kernel/core.c rename to transmitter/src/CoOS/kernel/core.c diff --git a/src/CoOS/kernel/event.c b/transmitter/src/CoOS/kernel/event.c similarity index 100% rename from src/CoOS/kernel/event.c rename to transmitter/src/CoOS/kernel/event.c diff --git a/src/CoOS/kernel/flag.c b/transmitter/src/CoOS/kernel/flag.c similarity index 100% rename from src/CoOS/kernel/flag.c rename to transmitter/src/CoOS/kernel/flag.c diff --git a/src/CoOS/kernel/hook.c b/transmitter/src/CoOS/kernel/hook.c similarity index 100% rename from src/CoOS/kernel/hook.c rename to transmitter/src/CoOS/kernel/hook.c diff --git a/src/CoOS/kernel/kernelHeap.c b/transmitter/src/CoOS/kernel/kernelHeap.c similarity index 100% rename from src/CoOS/kernel/kernelHeap.c rename to transmitter/src/CoOS/kernel/kernelHeap.c diff --git a/src/CoOS/kernel/mbox.c b/transmitter/src/CoOS/kernel/mbox.c similarity index 100% rename from src/CoOS/kernel/mbox.c rename to transmitter/src/CoOS/kernel/mbox.c diff --git a/src/CoOS/kernel/mm.c b/transmitter/src/CoOS/kernel/mm.c similarity index 100% rename from src/CoOS/kernel/mm.c rename to transmitter/src/CoOS/kernel/mm.c diff --git a/src/CoOS/kernel/mutex.c b/transmitter/src/CoOS/kernel/mutex.c similarity index 100% rename from src/CoOS/kernel/mutex.c rename to transmitter/src/CoOS/kernel/mutex.c diff --git a/src/CoOS/kernel/queue.c b/transmitter/src/CoOS/kernel/queue.c similarity index 100% rename from src/CoOS/kernel/queue.c rename to transmitter/src/CoOS/kernel/queue.c diff --git a/src/CoOS/kernel/sem.c b/transmitter/src/CoOS/kernel/sem.c similarity index 100% rename from src/CoOS/kernel/sem.c rename to transmitter/src/CoOS/kernel/sem.c diff --git a/src/CoOS/kernel/serviceReq.c b/transmitter/src/CoOS/kernel/serviceReq.c similarity index 100% rename from src/CoOS/kernel/serviceReq.c rename to transmitter/src/CoOS/kernel/serviceReq.c diff --git a/src/CoOS/kernel/task.c b/transmitter/src/CoOS/kernel/task.c similarity index 100% rename from src/CoOS/kernel/task.c rename to transmitter/src/CoOS/kernel/task.c diff --git a/src/CoOS/kernel/time.c b/transmitter/src/CoOS/kernel/time.c similarity index 100% rename from src/CoOS/kernel/time.c rename to transmitter/src/CoOS/kernel/time.c diff --git a/src/CoOS/kernel/timer.c b/transmitter/src/CoOS/kernel/timer.c similarity index 100% rename from src/CoOS/kernel/timer.c rename to transmitter/src/CoOS/kernel/timer.c diff --git a/src/CoOS/kernel/utility.c b/transmitter/src/CoOS/kernel/utility.c similarity index 100% rename from src/CoOS/kernel/utility.c rename to transmitter/src/CoOS/kernel/utility.c diff --git a/src/CoOS/kernel/utility.h b/transmitter/src/CoOS/kernel/utility.h similarity index 100% rename from src/CoOS/kernel/utility.h rename to transmitter/src/CoOS/kernel/utility.h diff --git a/src/CoOS/portable/GCC/port.c b/transmitter/src/CoOS/portable/GCC/port.c similarity index 100% rename from src/CoOS/portable/GCC/port.c rename to transmitter/src/CoOS/portable/GCC/port.c diff --git a/src/CoOS/portable/OsArch.h b/transmitter/src/CoOS/portable/OsArch.h similarity index 100% rename from src/CoOS/portable/OsArch.h rename to transmitter/src/CoOS/portable/OsArch.h diff --git a/src/CoOS/portable/arch.c b/transmitter/src/CoOS/portable/arch.c similarity index 100% rename from src/CoOS/portable/arch.c rename to transmitter/src/CoOS/portable/arch.c diff --git a/src/FatFs/00readme.txt b/transmitter/src/FatFs/00readme.txt similarity index 100% rename from src/FatFs/00readme.txt rename to transmitter/src/FatFs/00readme.txt diff --git a/src/FatFs/diskio.h b/transmitter/src/FatFs/diskio.h similarity index 100% rename from src/FatFs/diskio.h rename to transmitter/src/FatFs/diskio.h diff --git a/src/FatFs/fattime.c b/transmitter/src/FatFs/fattime.c similarity index 100% rename from src/FatFs/fattime.c rename to transmitter/src/FatFs/fattime.c diff --git a/src/FatFs/ff.c b/transmitter/src/FatFs/ff.c similarity index 100% rename from src/FatFs/ff.c rename to transmitter/src/FatFs/ff.c diff --git a/src/FatFs/ff.h b/transmitter/src/FatFs/ff.h similarity index 100% rename from src/FatFs/ff.h rename to transmitter/src/FatFs/ff.h diff --git a/src/FatFs/ffconf.h b/transmitter/src/FatFs/ffconf.h similarity index 100% rename from src/FatFs/ffconf.h rename to transmitter/src/FatFs/ffconf.h diff --git a/src/FatFs/integer.h b/transmitter/src/FatFs/integer.h similarity index 100% rename from src/FatFs/integer.h rename to transmitter/src/FatFs/integer.h diff --git a/src/FatFs/option/cc932.c b/transmitter/src/FatFs/option/cc932.c similarity index 100% rename from src/FatFs/option/cc932.c rename to transmitter/src/FatFs/option/cc932.c diff --git a/src/FatFs/option/cc936.c b/transmitter/src/FatFs/option/cc936.c similarity index 100% rename from src/FatFs/option/cc936.c rename to transmitter/src/FatFs/option/cc936.c diff --git a/src/FatFs/option/cc949.c b/transmitter/src/FatFs/option/cc949.c similarity index 100% rename from src/FatFs/option/cc949.c rename to transmitter/src/FatFs/option/cc949.c diff --git a/src/FatFs/option/cc950.c b/transmitter/src/FatFs/option/cc950.c similarity index 100% rename from src/FatFs/option/cc950.c rename to transmitter/src/FatFs/option/cc950.c diff --git a/src/FatFs/option/ccsbcs.c b/transmitter/src/FatFs/option/ccsbcs.c similarity index 100% rename from src/FatFs/option/ccsbcs.c rename to transmitter/src/FatFs/option/ccsbcs.c diff --git a/src/FatFs/option/syscall.c b/transmitter/src/FatFs/option/syscall.c similarity index 100% rename from src/FatFs/option/syscall.c rename to transmitter/src/FatFs/option/syscall.c diff --git a/src/FatFs/option/unicode.c b/transmitter/src/FatFs/option/unicode.c similarity index 100% rename from src/FatFs/option/unicode.c rename to transmitter/src/FatFs/option/unicode.c diff --git a/src/GCS_MAVLink/.gitignore b/transmitter/src/GCS_MAVLink/.gitignore similarity index 100% rename from src/GCS_MAVLink/.gitignore rename to transmitter/src/GCS_MAVLink/.gitignore diff --git a/src/GCS_MAVLink/COPYING b/transmitter/src/GCS_MAVLink/COPYING similarity index 100% rename from src/GCS_MAVLink/COPYING rename to transmitter/src/GCS_MAVLink/COPYING diff --git a/src/GCS_MAVLink/README b/transmitter/src/GCS_MAVLink/README similarity index 100% rename from src/GCS_MAVLink/README rename to transmitter/src/GCS_MAVLink/README diff --git a/src/GCS_MAVLink/include_v1.0/ardupilotmega/ardupilotmega.h b/transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/ardupilotmega.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/ardupilotmega/ardupilotmega.h rename to transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/ardupilotmega.h diff --git a/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink.h b/transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink.h rename to transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink.h diff --git a/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_ahrs.h b/transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_ahrs.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_ahrs.h rename to transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_ahrs.h diff --git a/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_ap_adc.h b/transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_ap_adc.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_ap_adc.h rename to transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_ap_adc.h diff --git a/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_data16.h b/transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_data16.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_data16.h rename to transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_data16.h diff --git a/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_data32.h b/transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_data32.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_data32.h rename to transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_data32.h diff --git a/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_data64.h b/transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_data64.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_data64.h rename to transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_data64.h diff --git a/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_data96.h b/transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_data96.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_data96.h rename to transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_data96.h diff --git a/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_digicam_configure.h b/transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_digicam_configure.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_digicam_configure.h rename to transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_digicam_configure.h diff --git a/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_digicam_control.h b/transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_digicam_control.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_digicam_control.h rename to transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_digicam_control.h diff --git a/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_fence_fetch_point.h b/transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_fence_fetch_point.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_fence_fetch_point.h rename to transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_fence_fetch_point.h diff --git a/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_fence_point.h b/transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_fence_point.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_fence_point.h rename to transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_fence_point.h diff --git a/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_fence_status.h b/transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_fence_status.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_fence_status.h rename to transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_fence_status.h diff --git a/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_hwstatus.h b/transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_hwstatus.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_hwstatus.h rename to transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_hwstatus.h diff --git a/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_limits_status.h b/transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_limits_status.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_limits_status.h rename to transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_limits_status.h diff --git a/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_meminfo.h b/transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_meminfo.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_meminfo.h rename to transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_meminfo.h diff --git a/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_mount_configure.h b/transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_mount_configure.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_mount_configure.h rename to transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_mount_configure.h diff --git a/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_mount_control.h b/transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_mount_control.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_mount_control.h rename to transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_mount_control.h diff --git a/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_mount_status.h b/transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_mount_status.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_mount_status.h rename to transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_mount_status.h diff --git a/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_radio.h b/transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_radio.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_radio.h rename to transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_radio.h diff --git a/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_rangefinder.h b/transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_rangefinder.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_rangefinder.h rename to transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_rangefinder.h diff --git a/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_sensor_offsets.h b/transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_sensor_offsets.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_sensor_offsets.h rename to transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_sensor_offsets.h diff --git a/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_set_mag_offsets.h b/transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_set_mag_offsets.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_set_mag_offsets.h rename to transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_set_mag_offsets.h diff --git a/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_simstate.h b/transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_simstate.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_simstate.h rename to transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_simstate.h diff --git a/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_wind.h b/transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_wind.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_wind.h rename to transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_wind.h diff --git a/src/GCS_MAVLink/include_v1.0/ardupilotmega/testsuite.h b/transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/testsuite.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/ardupilotmega/testsuite.h rename to transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/testsuite.h diff --git a/src/GCS_MAVLink/include_v1.0/ardupilotmega/version.h b/transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/version.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/ardupilotmega/version.h rename to transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/version.h diff --git a/src/GCS_MAVLink/include_v1.0/checksum.h b/transmitter/src/GCS_MAVLink/include_v1.0/checksum.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/checksum.h rename to transmitter/src/GCS_MAVLink/include_v1.0/checksum.h diff --git a/src/GCS_MAVLink/include_v1.0/common/common.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/common.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/common.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/common.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_attitude.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_attitude.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_attitude.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_attitude.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_attitude_quaternion.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_attitude_quaternion.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_attitude_quaternion.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_attitude_quaternion.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_auth_key.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_auth_key.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_auth_key.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_auth_key.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_battery_status.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_battery_status.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_battery_status.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_battery_status.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_change_operator_control.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_change_operator_control.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_change_operator_control.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_change_operator_control.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_change_operator_control_ack.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_change_operator_control_ack.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_change_operator_control_ack.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_change_operator_control_ack.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_command_ack.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_command_ack.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_command_ack.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_command_ack.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_command_long.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_command_long.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_command_long.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_command_long.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_data_stream.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_data_stream.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_data_stream.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_data_stream.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_debug.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_debug.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_debug.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_debug.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_debug_vect.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_debug_vect.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_debug_vect.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_debug_vect.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_file_transfer_dir_list.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_file_transfer_dir_list.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_file_transfer_dir_list.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_file_transfer_dir_list.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_file_transfer_res.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_file_transfer_res.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_file_transfer_res.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_file_transfer_res.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_file_transfer_start.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_file_transfer_start.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_file_transfer_start.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_file_transfer_start.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_global_position_int.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_global_position_int.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_global_position_int.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_global_position_int.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_global_position_setpoint_int.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_global_position_setpoint_int.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_global_position_setpoint_int.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_global_position_setpoint_int.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_global_vision_position_estimate.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_global_vision_position_estimate.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_global_vision_position_estimate.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_global_vision_position_estimate.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_gps_global_origin.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_gps_global_origin.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_gps_global_origin.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_gps_global_origin.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_gps_raw_int.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_gps_raw_int.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_gps_raw_int.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_gps_raw_int.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_gps_status.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_gps_status.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_gps_status.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_gps_status.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_heartbeat.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_heartbeat.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_heartbeat.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_heartbeat.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_highres_imu.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_highres_imu.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_highres_imu.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_highres_imu.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_hil_controls.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_hil_controls.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_hil_controls.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_hil_controls.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_hil_gps.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_hil_gps.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_hil_gps.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_hil_gps.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_hil_optical_flow.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_hil_optical_flow.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_hil_optical_flow.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_hil_optical_flow.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_hil_rc_inputs_raw.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_hil_rc_inputs_raw.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_hil_rc_inputs_raw.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_hil_rc_inputs_raw.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_hil_sensor.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_hil_sensor.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_hil_sensor.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_hil_sensor.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_hil_state.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_hil_state.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_hil_state.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_hil_state.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_hil_state_quaternion.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_hil_state_quaternion.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_hil_state_quaternion.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_hil_state_quaternion.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_local_position_ned.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_local_position_ned.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_local_position_ned.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_local_position_ned.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_local_position_ned_system_global_offset.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_local_position_ned_system_global_offset.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_local_position_ned_system_global_offset.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_local_position_ned_system_global_offset.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_local_position_setpoint.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_local_position_setpoint.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_local_position_setpoint.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_local_position_setpoint.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_manual_control.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_manual_control.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_manual_control.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_manual_control.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_manual_setpoint.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_manual_setpoint.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_manual_setpoint.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_manual_setpoint.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_memory_vect.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_memory_vect.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_memory_vect.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_memory_vect.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_ack.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_ack.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_ack.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_ack.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_clear_all.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_clear_all.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_clear_all.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_clear_all.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_count.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_count.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_count.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_count.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_current.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_current.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_current.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_current.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_item.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_item.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_item.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_item.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_item_reached.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_item_reached.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_item_reached.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_item_reached.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_request.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_request.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_request.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_request.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_request_list.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_request_list.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_request_list.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_request_list.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_request_partial_list.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_request_partial_list.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_request_partial_list.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_request_partial_list.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_set_current.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_set_current.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_set_current.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_set_current.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_write_partial_list.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_write_partial_list.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_write_partial_list.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_write_partial_list.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_named_value_float.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_named_value_float.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_named_value_float.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_named_value_float.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_named_value_int.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_named_value_int.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_named_value_int.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_named_value_int.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_nav_controller_output.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_nav_controller_output.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_nav_controller_output.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_nav_controller_output.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_omnidirectional_flow.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_omnidirectional_flow.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_omnidirectional_flow.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_omnidirectional_flow.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_optical_flow.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_optical_flow.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_optical_flow.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_optical_flow.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_param_request_list.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_param_request_list.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_param_request_list.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_param_request_list.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_param_request_read.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_param_request_read.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_param_request_read.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_param_request_read.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_param_set.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_param_set.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_param_set.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_param_set.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_param_value.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_param_value.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_param_value.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_param_value.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_ping.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_ping.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_ping.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_ping.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_radio_status.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_radio_status.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_radio_status.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_radio_status.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_raw_imu.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_raw_imu.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_raw_imu.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_raw_imu.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_raw_pressure.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_raw_pressure.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_raw_pressure.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_raw_pressure.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_rc_channels_override.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_rc_channels_override.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_rc_channels_override.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_rc_channels_override.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_rc_channels_raw.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_rc_channels_raw.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_rc_channels_raw.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_rc_channels_raw.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_rc_channels_scaled.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_rc_channels_scaled.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_rc_channels_scaled.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_rc_channels_scaled.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_request_data_stream.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_request_data_stream.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_request_data_stream.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_request_data_stream.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_roll_pitch_yaw_rates_thrust_setpoint.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_roll_pitch_yaw_rates_thrust_setpoint.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_roll_pitch_yaw_rates_thrust_setpoint.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_roll_pitch_yaw_rates_thrust_setpoint.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_roll_pitch_yaw_speed_thrust_setpoint.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_roll_pitch_yaw_speed_thrust_setpoint.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_roll_pitch_yaw_speed_thrust_setpoint.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_roll_pitch_yaw_speed_thrust_setpoint.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_roll_pitch_yaw_thrust_setpoint.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_roll_pitch_yaw_thrust_setpoint.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_roll_pitch_yaw_thrust_setpoint.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_roll_pitch_yaw_thrust_setpoint.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_safety_allowed_area.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_safety_allowed_area.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_safety_allowed_area.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_safety_allowed_area.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_safety_set_allowed_area.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_safety_set_allowed_area.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_safety_set_allowed_area.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_safety_set_allowed_area.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_scaled_imu.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_scaled_imu.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_scaled_imu.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_scaled_imu.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_scaled_pressure.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_scaled_pressure.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_scaled_pressure.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_scaled_pressure.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_servo_output_raw.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_servo_output_raw.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_servo_output_raw.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_servo_output_raw.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_global_position_setpoint_int.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_global_position_setpoint_int.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_global_position_setpoint_int.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_global_position_setpoint_int.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_gps_global_origin.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_gps_global_origin.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_gps_global_origin.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_gps_global_origin.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_local_position_setpoint.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_local_position_setpoint.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_local_position_setpoint.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_local_position_setpoint.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_mode.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_mode.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_mode.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_mode.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_quad_motors_setpoint.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_quad_motors_setpoint.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_quad_motors_setpoint.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_quad_motors_setpoint.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_quad_swarm_led_roll_pitch_yaw_thrust.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_quad_swarm_led_roll_pitch_yaw_thrust.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_quad_swarm_led_roll_pitch_yaw_thrust.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_quad_swarm_led_roll_pitch_yaw_thrust.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_quad_swarm_roll_pitch_yaw_thrust.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_quad_swarm_roll_pitch_yaw_thrust.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_quad_swarm_roll_pitch_yaw_thrust.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_quad_swarm_roll_pitch_yaw_thrust.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_roll_pitch_yaw_speed_thrust.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_roll_pitch_yaw_speed_thrust.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_roll_pitch_yaw_speed_thrust.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_roll_pitch_yaw_speed_thrust.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_roll_pitch_yaw_thrust.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_roll_pitch_yaw_thrust.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_roll_pitch_yaw_thrust.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_roll_pitch_yaw_thrust.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_setpoint_6dof.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_setpoint_6dof.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_setpoint_6dof.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_setpoint_6dof.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_setpoint_8dof.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_setpoint_8dof.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_setpoint_8dof.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_setpoint_8dof.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_sim_state.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_sim_state.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_sim_state.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_sim_state.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_state_correction.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_state_correction.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_state_correction.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_state_correction.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_statustext.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_statustext.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_statustext.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_statustext.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_sys_status.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_sys_status.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_sys_status.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_sys_status.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_system_time.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_system_time.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_system_time.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_system_time.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_vfr_hud.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_vfr_hud.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_vfr_hud.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_vfr_hud.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_vicon_position_estimate.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_vicon_position_estimate.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_vicon_position_estimate.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_vicon_position_estimate.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_vision_position_estimate.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_vision_position_estimate.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_vision_position_estimate.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_vision_position_estimate.h diff --git a/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_vision_speed_estimate.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_vision_speed_estimate.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/mavlink_msg_vision_speed_estimate.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_vision_speed_estimate.h diff --git a/src/GCS_MAVLink/include_v1.0/common/testsuite.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/testsuite.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/testsuite.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/testsuite.h diff --git a/src/GCS_MAVLink/include_v1.0/common/version.h b/transmitter/src/GCS_MAVLink/include_v1.0/common/version.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/common/version.h rename to transmitter/src/GCS_MAVLink/include_v1.0/common/version.h diff --git a/src/GCS_MAVLink/include_v1.0/mavlink_conversions.h b/transmitter/src/GCS_MAVLink/include_v1.0/mavlink_conversions.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/mavlink_conversions.h rename to transmitter/src/GCS_MAVLink/include_v1.0/mavlink_conversions.h diff --git a/src/GCS_MAVLink/include_v1.0/mavlink_helpers.h b/transmitter/src/GCS_MAVLink/include_v1.0/mavlink_helpers.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/mavlink_helpers.h rename to transmitter/src/GCS_MAVLink/include_v1.0/mavlink_helpers.h diff --git a/src/GCS_MAVLink/include_v1.0/mavlink_protobuf_manager.hpp b/transmitter/src/GCS_MAVLink/include_v1.0/mavlink_protobuf_manager.hpp similarity index 100% rename from src/GCS_MAVLink/include_v1.0/mavlink_protobuf_manager.hpp rename to transmitter/src/GCS_MAVLink/include_v1.0/mavlink_protobuf_manager.hpp diff --git a/src/GCS_MAVLink/include_v1.0/mavlink_types.h b/transmitter/src/GCS_MAVLink/include_v1.0/mavlink_types.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/mavlink_types.h rename to transmitter/src/GCS_MAVLink/include_v1.0/mavlink_types.h diff --git a/src/GCS_MAVLink/include_v1.0/protocol.h b/transmitter/src/GCS_MAVLink/include_v1.0/protocol.h similarity index 100% rename from src/GCS_MAVLink/include_v1.0/protocol.h rename to transmitter/src/GCS_MAVLink/include_v1.0/protocol.h diff --git a/src/GCS_MAVLink/message_definitions_v1.0/ardupilotmega.xml b/transmitter/src/GCS_MAVLink/message_definitions_v1.0/ardupilotmega.xml similarity index 100% rename from src/GCS_MAVLink/message_definitions_v1.0/ardupilotmega.xml rename to transmitter/src/GCS_MAVLink/message_definitions_v1.0/ardupilotmega.xml diff --git a/src/GCS_MAVLink/message_definitions_v1.0/autoquad.xml b/transmitter/src/GCS_MAVLink/message_definitions_v1.0/autoquad.xml similarity index 100% rename from src/GCS_MAVLink/message_definitions_v1.0/autoquad.xml rename to transmitter/src/GCS_MAVLink/message_definitions_v1.0/autoquad.xml diff --git a/src/GCS_MAVLink/message_definitions_v1.0/common.xml b/transmitter/src/GCS_MAVLink/message_definitions_v1.0/common.xml similarity index 100% rename from src/GCS_MAVLink/message_definitions_v1.0/common.xml rename to transmitter/src/GCS_MAVLink/message_definitions_v1.0/common.xml diff --git a/src/GCS_MAVLink/message_definitions_v1.0/matrixpilot.xml b/transmitter/src/GCS_MAVLink/message_definitions_v1.0/matrixpilot.xml similarity index 100% rename from src/GCS_MAVLink/message_definitions_v1.0/matrixpilot.xml rename to transmitter/src/GCS_MAVLink/message_definitions_v1.0/matrixpilot.xml diff --git a/src/GCS_MAVLink/message_definitions_v1.0/minimal.xml b/transmitter/src/GCS_MAVLink/message_definitions_v1.0/minimal.xml similarity index 100% rename from src/GCS_MAVLink/message_definitions_v1.0/minimal.xml rename to transmitter/src/GCS_MAVLink/message_definitions_v1.0/minimal.xml diff --git a/src/GCS_MAVLink/message_definitions_v1.0/pixhawk.proto b/transmitter/src/GCS_MAVLink/message_definitions_v1.0/pixhawk.proto similarity index 100% rename from src/GCS_MAVLink/message_definitions_v1.0/pixhawk.proto rename to transmitter/src/GCS_MAVLink/message_definitions_v1.0/pixhawk.proto diff --git a/src/GCS_MAVLink/message_definitions_v1.0/pixhawk.xml b/transmitter/src/GCS_MAVLink/message_definitions_v1.0/pixhawk.xml similarity index 100% rename from src/GCS_MAVLink/message_definitions_v1.0/pixhawk.xml rename to transmitter/src/GCS_MAVLink/message_definitions_v1.0/pixhawk.xml diff --git a/src/GCS_MAVLink/message_definitions_v1.0/sensesoar.xml b/transmitter/src/GCS_MAVLink/message_definitions_v1.0/sensesoar.xml similarity index 100% rename from src/GCS_MAVLink/message_definitions_v1.0/sensesoar.xml rename to transmitter/src/GCS_MAVLink/message_definitions_v1.0/sensesoar.xml diff --git a/src/GCS_MAVLink/message_definitions_v1.0/slugs.xml b/transmitter/src/GCS_MAVLink/message_definitions_v1.0/slugs.xml similarity index 100% rename from src/GCS_MAVLink/message_definitions_v1.0/slugs.xml rename to transmitter/src/GCS_MAVLink/message_definitions_v1.0/slugs.xml diff --git a/src/GCS_MAVLink/message_definitions_v1.0/test.xml b/transmitter/src/GCS_MAVLink/message_definitions_v1.0/test.xml similarity index 100% rename from src/GCS_MAVLink/message_definitions_v1.0/test.xml rename to transmitter/src/GCS_MAVLink/message_definitions_v1.0/test.xml diff --git a/src/GCS_MAVLink/message_definitions_v1.0/ualberta.xml b/transmitter/src/GCS_MAVLink/message_definitions_v1.0/ualberta.xml similarity index 100% rename from src/GCS_MAVLink/message_definitions_v1.0/ualberta.xml rename to transmitter/src/GCS_MAVLink/message_definitions_v1.0/ualberta.xml diff --git a/src/GCS_MAVLink/sync b/transmitter/src/GCS_MAVLink/sync similarity index 100% rename from src/GCS_MAVLink/sync rename to transmitter/src/GCS_MAVLink/sync diff --git a/src/Makefile b/transmitter/src/Makefile similarity index 100% rename from src/Makefile rename to transmitter/src/Makefile diff --git a/src/audio_arm.cpp b/transmitter/src/audio_arm.cpp similarity index 100% rename from src/audio_arm.cpp rename to transmitter/src/audio_arm.cpp diff --git a/src/audio_arm.h b/transmitter/src/audio_arm.h similarity index 100% rename from src/audio_arm.h rename to transmitter/src/audio_arm.h diff --git a/src/audio_avr.cpp b/transmitter/src/audio_avr.cpp similarity index 100% rename from src/audio_avr.cpp rename to transmitter/src/audio_avr.cpp diff --git a/src/audio_avr.h b/transmitter/src/audio_avr.h similarity index 100% rename from src/audio_avr.h rename to transmitter/src/audio_avr.h diff --git a/src/bitmaps/about_9x.lbm b/transmitter/src/bitmaps/about_9x.lbm similarity index 100% rename from src/bitmaps/about_9x.lbm rename to transmitter/src/bitmaps/about_9x.lbm diff --git a/src/bitmaps/about_9x.png b/transmitter/src/bitmaps/about_9x.png similarity index 100% rename from src/bitmaps/about_9x.png rename to transmitter/src/bitmaps/about_9x.png diff --git a/src/bitmaps/about_taranis.lbm b/transmitter/src/bitmaps/about_taranis.lbm similarity index 100% rename from src/bitmaps/about_taranis.lbm rename to transmitter/src/bitmaps/about_taranis.lbm diff --git a/src/bitmaps/about_taranis.png b/transmitter/src/bitmaps/about_taranis.png similarity index 100% rename from src/bitmaps/about_taranis.png rename to transmitter/src/bitmaps/about_taranis.png diff --git a/src/bitmaps/asterisk.lbm b/transmitter/src/bitmaps/asterisk.lbm similarity index 100% rename from src/bitmaps/asterisk.lbm rename to transmitter/src/bitmaps/asterisk.lbm diff --git a/src/bitmaps/asterisk.xbm b/transmitter/src/bitmaps/asterisk.xbm similarity index 100% rename from src/bitmaps/asterisk.xbm rename to transmitter/src/bitmaps/asterisk.xbm diff --git a/src/bitmaps/asterisk_4bits.lbm b/transmitter/src/bitmaps/asterisk_4bits.lbm similarity index 100% rename from src/bitmaps/asterisk_4bits.lbm rename to transmitter/src/bitmaps/asterisk_4bits.lbm diff --git a/src/bitmaps/asterisk_4bits.png b/transmitter/src/bitmaps/asterisk_4bits.png similarity index 100% rename from src/bitmaps/asterisk_4bits.png rename to transmitter/src/bitmaps/asterisk_4bits.png diff --git a/src/bitmaps/icons.lbm b/transmitter/src/bitmaps/icons.lbm similarity index 100% rename from src/bitmaps/icons.lbm rename to transmitter/src/bitmaps/icons.lbm diff --git a/src/bitmaps/icons.png b/transmitter/src/bitmaps/icons.png similarity index 100% rename from src/bitmaps/icons.png rename to transmitter/src/bitmaps/icons.png diff --git a/src/bitmaps/logo_taranis.bmp b/transmitter/src/bitmaps/logo_taranis.bmp similarity index 100% rename from src/bitmaps/logo_taranis.bmp rename to transmitter/src/bitmaps/logo_taranis.bmp diff --git a/src/bitmaps/logo_taranis.lbm b/transmitter/src/bitmaps/logo_taranis.lbm similarity index 100% rename from src/bitmaps/logo_taranis.lbm rename to transmitter/src/bitmaps/logo_taranis.lbm diff --git a/src/bitmaps/splash_9x.lbm b/transmitter/src/bitmaps/splash_9x.lbm similarity index 100% rename from src/bitmaps/splash_9x.lbm rename to transmitter/src/bitmaps/splash_9x.lbm diff --git a/src/bitmaps/splash_9x.xbm b/transmitter/src/bitmaps/splash_9x.xbm similarity index 100% rename from src/bitmaps/splash_9x.xbm rename to transmitter/src/bitmaps/splash_9x.xbm diff --git a/src/bitmaps/splash_taranis.lbm b/transmitter/src/bitmaps/splash_taranis.lbm similarity index 100% rename from src/bitmaps/splash_taranis.lbm rename to transmitter/src/bitmaps/splash_taranis.lbm diff --git a/src/bitmaps/splash_taranis.png b/transmitter/src/bitmaps/splash_taranis.png similarity index 100% rename from src/bitmaps/splash_taranis.png rename to transmitter/src/bitmaps/splash_taranis.png diff --git a/src/bitmaps/sticks.lbm b/transmitter/src/bitmaps/sticks.lbm similarity index 100% rename from src/bitmaps/sticks.lbm rename to transmitter/src/bitmaps/sticks.lbm diff --git a/src/bitmaps/sticks_4x1.xbm b/transmitter/src/bitmaps/sticks_4x1.xbm similarity index 100% rename from src/bitmaps/sticks_4x1.xbm rename to transmitter/src/bitmaps/sticks_4x1.xbm diff --git a/src/bmp.cpp b/transmitter/src/bmp.cpp similarity index 100% rename from src/bmp.cpp rename to transmitter/src/bmp.cpp diff --git a/src/buzzer.cpp b/transmitter/src/buzzer.cpp similarity index 100% rename from src/buzzer.cpp rename to transmitter/src/buzzer.cpp diff --git a/src/buzzer.h b/transmitter/src/buzzer.h similarity index 100% rename from src/buzzer.h rename to transmitter/src/buzzer.h diff --git a/src/debug.cpp b/transmitter/src/debug.cpp similarity index 100% rename from src/debug.cpp rename to transmitter/src/debug.cpp diff --git a/src/debug.h b/transmitter/src/debug.h similarity index 100% rename from src/debug.h rename to transmitter/src/debug.h diff --git a/src/eeprom_common.cpp b/transmitter/src/eeprom_common.cpp similarity index 100% rename from src/eeprom_common.cpp rename to transmitter/src/eeprom_common.cpp diff --git a/src/eeprom_common.h b/transmitter/src/eeprom_common.h similarity index 100% rename from src/eeprom_common.h rename to transmitter/src/eeprom_common.h diff --git a/src/eeprom_conversions.cpp b/transmitter/src/eeprom_conversions.cpp similarity index 100% rename from src/eeprom_conversions.cpp rename to transmitter/src/eeprom_conversions.cpp diff --git a/src/eeprom_raw.cpp b/transmitter/src/eeprom_raw.cpp similarity index 100% rename from src/eeprom_raw.cpp rename to transmitter/src/eeprom_raw.cpp diff --git a/src/eeprom_raw.h b/transmitter/src/eeprom_raw.h similarity index 100% rename from src/eeprom_raw.h rename to transmitter/src/eeprom_raw.h diff --git a/src/eeprom_rlc.cpp b/transmitter/src/eeprom_rlc.cpp similarity index 100% rename from src/eeprom_rlc.cpp rename to transmitter/src/eeprom_rlc.cpp diff --git a/src/eeprom_rlc.h b/transmitter/src/eeprom_rlc.h similarity index 100% rename from src/eeprom_rlc.h rename to transmitter/src/eeprom_rlc.h diff --git a/src/fifo.h b/transmitter/src/fifo.h similarity index 100% rename from src/fifo.h rename to transmitter/src/fifo.h diff --git a/src/fonts/sqt5/font_04x06.lbm b/transmitter/src/fonts/sqt5/font_04x06.lbm similarity index 100% rename from src/fonts/sqt5/font_04x06.lbm rename to transmitter/src/fonts/sqt5/font_04x06.lbm diff --git a/src/fonts/sqt5/font_04x06.png b/transmitter/src/fonts/sqt5/font_04x06.png similarity index 100% rename from src/fonts/sqt5/font_04x06.png rename to transmitter/src/fonts/sqt5/font_04x06.png diff --git a/src/fonts/sqt5/font_05x07.lbm b/transmitter/src/fonts/sqt5/font_05x07.lbm similarity index 100% rename from src/fonts/sqt5/font_05x07.lbm rename to transmitter/src/fonts/sqt5/font_05x07.lbm diff --git a/src/fonts/sqt5/font_05x07.png b/transmitter/src/fonts/sqt5/font_05x07.png similarity index 100% rename from src/fonts/sqt5/font_05x07.png rename to transmitter/src/fonts/sqt5/font_05x07.png diff --git a/src/fonts/sqt5/font_08x10.lbm b/transmitter/src/fonts/sqt5/font_08x10.lbm similarity index 100% rename from src/fonts/sqt5/font_08x10.lbm rename to transmitter/src/fonts/sqt5/font_08x10.lbm diff --git a/src/fonts/sqt5/font_08x10.png b/transmitter/src/fonts/sqt5/font_08x10.png similarity index 100% rename from src/fonts/sqt5/font_08x10.png rename to transmitter/src/fonts/sqt5/font_08x10.png diff --git a/src/fonts/sqt5/font_10x14.lbm b/transmitter/src/fonts/sqt5/font_10x14.lbm similarity index 100% rename from src/fonts/sqt5/font_10x14.lbm rename to transmitter/src/fonts/sqt5/font_10x14.lbm diff --git a/src/fonts/sqt5/font_10x14.png b/transmitter/src/fonts/sqt5/font_10x14.png similarity index 100% rename from src/fonts/sqt5/font_10x14.png rename to transmitter/src/fonts/sqt5/font_10x14.png diff --git a/src/fonts/sqt5/font_10x14_compressed.lbm b/transmitter/src/fonts/sqt5/font_10x14_compressed.lbm similarity index 100% rename from src/fonts/sqt5/font_10x14_compressed.lbm rename to transmitter/src/fonts/sqt5/font_10x14_compressed.lbm diff --git a/src/fonts/sqt5/font_10x14_compressed.png b/transmitter/src/fonts/sqt5/font_10x14_compressed.png similarity index 100% rename from src/fonts/sqt5/font_10x14_compressed.png rename to transmitter/src/fonts/sqt5/font_10x14_compressed.png diff --git a/src/fonts/sqt5/font_cz_04x06.lbm b/transmitter/src/fonts/sqt5/font_cz_04x06.lbm similarity index 100% rename from src/fonts/sqt5/font_cz_04x06.lbm rename to transmitter/src/fonts/sqt5/font_cz_04x06.lbm diff --git a/src/fonts/sqt5/font_cz_04x06.png b/transmitter/src/fonts/sqt5/font_cz_04x06.png similarity index 100% rename from src/fonts/sqt5/font_cz_04x06.png rename to transmitter/src/fonts/sqt5/font_cz_04x06.png diff --git a/src/fonts/sqt5/font_cz_05x07.lbm b/transmitter/src/fonts/sqt5/font_cz_05x07.lbm similarity index 100% rename from src/fonts/sqt5/font_cz_05x07.lbm rename to transmitter/src/fonts/sqt5/font_cz_05x07.lbm diff --git a/src/fonts/sqt5/font_cz_05x07.png b/transmitter/src/fonts/sqt5/font_cz_05x07.png similarity index 100% rename from src/fonts/sqt5/font_cz_05x07.png rename to transmitter/src/fonts/sqt5/font_cz_05x07.png diff --git a/src/fonts/sqt5/font_cz_08x10.lbm b/transmitter/src/fonts/sqt5/font_cz_08x10.lbm similarity index 100% rename from src/fonts/sqt5/font_cz_08x10.lbm rename to transmitter/src/fonts/sqt5/font_cz_08x10.lbm diff --git a/src/fonts/sqt5/font_cz_08x10.png b/transmitter/src/fonts/sqt5/font_cz_08x10.png similarity index 100% rename from src/fonts/sqt5/font_cz_08x10.png rename to transmitter/src/fonts/sqt5/font_cz_08x10.png diff --git a/src/fonts/sqt5/font_cz_10x14.lbm b/transmitter/src/fonts/sqt5/font_cz_10x14.lbm similarity index 100% rename from src/fonts/sqt5/font_cz_10x14.lbm rename to transmitter/src/fonts/sqt5/font_cz_10x14.lbm diff --git a/src/fonts/sqt5/font_cz_10x14.png b/transmitter/src/fonts/sqt5/font_cz_10x14.png similarity index 100% rename from src/fonts/sqt5/font_cz_10x14.png rename to transmitter/src/fonts/sqt5/font_cz_10x14.png diff --git a/src/fonts/sqt5/font_de_04x06.lbm b/transmitter/src/fonts/sqt5/font_de_04x06.lbm similarity index 100% rename from src/fonts/sqt5/font_de_04x06.lbm rename to transmitter/src/fonts/sqt5/font_de_04x06.lbm diff --git a/src/fonts/sqt5/font_de_04x06.png b/transmitter/src/fonts/sqt5/font_de_04x06.png similarity index 100% rename from src/fonts/sqt5/font_de_04x06.png rename to transmitter/src/fonts/sqt5/font_de_04x06.png diff --git a/src/fonts/sqt5/font_de_05x07.lbm b/transmitter/src/fonts/sqt5/font_de_05x07.lbm similarity index 100% rename from src/fonts/sqt5/font_de_05x07.lbm rename to transmitter/src/fonts/sqt5/font_de_05x07.lbm diff --git a/src/fonts/sqt5/font_de_05x07.png b/transmitter/src/fonts/sqt5/font_de_05x07.png similarity index 100% rename from src/fonts/sqt5/font_de_05x07.png rename to transmitter/src/fonts/sqt5/font_de_05x07.png diff --git a/src/fonts/sqt5/font_de_08x10.lbm b/transmitter/src/fonts/sqt5/font_de_08x10.lbm similarity index 100% rename from src/fonts/sqt5/font_de_08x10.lbm rename to transmitter/src/fonts/sqt5/font_de_08x10.lbm diff --git a/src/fonts/sqt5/font_de_08x10.png b/transmitter/src/fonts/sqt5/font_de_08x10.png similarity index 100% rename from src/fonts/sqt5/font_de_08x10.png rename to transmitter/src/fonts/sqt5/font_de_08x10.png diff --git a/src/fonts/sqt5/font_de_10x14.lbm b/transmitter/src/fonts/sqt5/font_de_10x14.lbm similarity index 100% rename from src/fonts/sqt5/font_de_10x14.lbm rename to transmitter/src/fonts/sqt5/font_de_10x14.lbm diff --git a/src/fonts/sqt5/font_de_10x14.png b/transmitter/src/fonts/sqt5/font_de_10x14.png similarity index 100% rename from src/fonts/sqt5/font_de_10x14.png rename to transmitter/src/fonts/sqt5/font_de_10x14.png diff --git a/src/fonts/sqt5/font_es_04x06.lbm b/transmitter/src/fonts/sqt5/font_es_04x06.lbm similarity index 100% rename from src/fonts/sqt5/font_es_04x06.lbm rename to transmitter/src/fonts/sqt5/font_es_04x06.lbm diff --git a/src/fonts/sqt5/font_es_04x06.png b/transmitter/src/fonts/sqt5/font_es_04x06.png similarity index 100% rename from src/fonts/sqt5/font_es_04x06.png rename to transmitter/src/fonts/sqt5/font_es_04x06.png diff --git a/src/fonts/sqt5/font_es_05x07.lbm b/transmitter/src/fonts/sqt5/font_es_05x07.lbm similarity index 100% rename from src/fonts/sqt5/font_es_05x07.lbm rename to transmitter/src/fonts/sqt5/font_es_05x07.lbm diff --git a/src/fonts/sqt5/font_es_05x07.png b/transmitter/src/fonts/sqt5/font_es_05x07.png similarity index 100% rename from src/fonts/sqt5/font_es_05x07.png rename to transmitter/src/fonts/sqt5/font_es_05x07.png diff --git a/src/fonts/sqt5/font_es_08x10.lbm b/transmitter/src/fonts/sqt5/font_es_08x10.lbm similarity index 100% rename from src/fonts/sqt5/font_es_08x10.lbm rename to transmitter/src/fonts/sqt5/font_es_08x10.lbm diff --git a/src/fonts/sqt5/font_es_08x10.png b/transmitter/src/fonts/sqt5/font_es_08x10.png similarity index 100% rename from src/fonts/sqt5/font_es_08x10.png rename to transmitter/src/fonts/sqt5/font_es_08x10.png diff --git a/src/fonts/sqt5/font_es_10x14.lbm b/transmitter/src/fonts/sqt5/font_es_10x14.lbm similarity index 100% rename from src/fonts/sqt5/font_es_10x14.lbm rename to transmitter/src/fonts/sqt5/font_es_10x14.lbm diff --git a/src/fonts/sqt5/font_es_10x14.png b/transmitter/src/fonts/sqt5/font_es_10x14.png similarity index 100% rename from src/fonts/sqt5/font_es_10x14.png rename to transmitter/src/fonts/sqt5/font_es_10x14.png diff --git a/src/fonts/sqt5/font_fr_04x06.lbm b/transmitter/src/fonts/sqt5/font_fr_04x06.lbm similarity index 100% rename from src/fonts/sqt5/font_fr_04x06.lbm rename to transmitter/src/fonts/sqt5/font_fr_04x06.lbm diff --git a/src/fonts/sqt5/font_fr_04x06.png b/transmitter/src/fonts/sqt5/font_fr_04x06.png similarity index 100% rename from src/fonts/sqt5/font_fr_04x06.png rename to transmitter/src/fonts/sqt5/font_fr_04x06.png diff --git a/src/fonts/sqt5/font_fr_05x07.lbm b/transmitter/src/fonts/sqt5/font_fr_05x07.lbm similarity index 100% rename from src/fonts/sqt5/font_fr_05x07.lbm rename to transmitter/src/fonts/sqt5/font_fr_05x07.lbm diff --git a/src/fonts/sqt5/font_fr_05x07.png b/transmitter/src/fonts/sqt5/font_fr_05x07.png similarity index 100% rename from src/fonts/sqt5/font_fr_05x07.png rename to transmitter/src/fonts/sqt5/font_fr_05x07.png diff --git a/src/fonts/sqt5/font_fr_08x10.lbm b/transmitter/src/fonts/sqt5/font_fr_08x10.lbm similarity index 100% rename from src/fonts/sqt5/font_fr_08x10.lbm rename to transmitter/src/fonts/sqt5/font_fr_08x10.lbm diff --git a/src/fonts/sqt5/font_fr_08x10.png b/transmitter/src/fonts/sqt5/font_fr_08x10.png similarity index 100% rename from src/fonts/sqt5/font_fr_08x10.png rename to transmitter/src/fonts/sqt5/font_fr_08x10.png diff --git a/src/fonts/sqt5/font_fr_10x14.lbm b/transmitter/src/fonts/sqt5/font_fr_10x14.lbm similarity index 100% rename from src/fonts/sqt5/font_fr_10x14.lbm rename to transmitter/src/fonts/sqt5/font_fr_10x14.lbm diff --git a/src/fonts/sqt5/font_fr_10x14.png b/transmitter/src/fonts/sqt5/font_fr_10x14.png similarity index 100% rename from src/fonts/sqt5/font_fr_10x14.png rename to transmitter/src/fonts/sqt5/font_fr_10x14.png diff --git a/src/fonts/sqt5/font_it_04x06.lbm b/transmitter/src/fonts/sqt5/font_it_04x06.lbm similarity index 100% rename from src/fonts/sqt5/font_it_04x06.lbm rename to transmitter/src/fonts/sqt5/font_it_04x06.lbm diff --git a/src/fonts/sqt5/font_it_04x06.png b/transmitter/src/fonts/sqt5/font_it_04x06.png similarity index 100% rename from src/fonts/sqt5/font_it_04x06.png rename to transmitter/src/fonts/sqt5/font_it_04x06.png diff --git a/src/fonts/sqt5/font_it_05x07.lbm b/transmitter/src/fonts/sqt5/font_it_05x07.lbm similarity index 100% rename from src/fonts/sqt5/font_it_05x07.lbm rename to transmitter/src/fonts/sqt5/font_it_05x07.lbm diff --git a/src/fonts/sqt5/font_it_05x07.png b/transmitter/src/fonts/sqt5/font_it_05x07.png similarity index 100% rename from src/fonts/sqt5/font_it_05x07.png rename to transmitter/src/fonts/sqt5/font_it_05x07.png diff --git a/src/fonts/sqt5/font_it_08x10.lbm b/transmitter/src/fonts/sqt5/font_it_08x10.lbm similarity index 100% rename from src/fonts/sqt5/font_it_08x10.lbm rename to transmitter/src/fonts/sqt5/font_it_08x10.lbm diff --git a/src/fonts/sqt5/font_it_08x10.png b/transmitter/src/fonts/sqt5/font_it_08x10.png similarity index 100% rename from src/fonts/sqt5/font_it_08x10.png rename to transmitter/src/fonts/sqt5/font_it_08x10.png diff --git a/src/fonts/sqt5/font_it_10x14.lbm b/transmitter/src/fonts/sqt5/font_it_10x14.lbm similarity index 100% rename from src/fonts/sqt5/font_it_10x14.lbm rename to transmitter/src/fonts/sqt5/font_it_10x14.lbm diff --git a/src/fonts/sqt5/font_it_10x14.png b/transmitter/src/fonts/sqt5/font_it_10x14.png similarity index 100% rename from src/fonts/sqt5/font_it_10x14.png rename to transmitter/src/fonts/sqt5/font_it_10x14.png diff --git a/src/fonts/sqt5/font_pt_05x07.lbm b/transmitter/src/fonts/sqt5/font_pt_05x07.lbm similarity index 100% rename from src/fonts/sqt5/font_pt_05x07.lbm rename to transmitter/src/fonts/sqt5/font_pt_05x07.lbm diff --git a/src/fonts/sqt5/font_pt_05x07.png b/transmitter/src/fonts/sqt5/font_pt_05x07.png similarity index 100% rename from src/fonts/sqt5/font_pt_05x07.png rename to transmitter/src/fonts/sqt5/font_pt_05x07.png diff --git a/src/fonts/sqt5/font_pt_08x10.lbm b/transmitter/src/fonts/sqt5/font_pt_08x10.lbm similarity index 100% rename from src/fonts/sqt5/font_pt_08x10.lbm rename to transmitter/src/fonts/sqt5/font_pt_08x10.lbm diff --git a/src/fonts/sqt5/font_pt_08x10.png b/transmitter/src/fonts/sqt5/font_pt_08x10.png similarity index 100% rename from src/fonts/sqt5/font_pt_08x10.png rename to transmitter/src/fonts/sqt5/font_pt_08x10.png diff --git a/src/fonts/sqt5/font_pt_10x14.lbm b/transmitter/src/fonts/sqt5/font_pt_10x14.lbm similarity index 100% rename from src/fonts/sqt5/font_pt_10x14.lbm rename to transmitter/src/fonts/sqt5/font_pt_10x14.lbm diff --git a/src/fonts/sqt5/font_pt_10x14.png b/transmitter/src/fonts/sqt5/font_pt_10x14.png similarity index 100% rename from src/fonts/sqt5/font_pt_10x14.png rename to transmitter/src/fonts/sqt5/font_pt_10x14.png diff --git a/src/fonts/sqt5/font_se_04x06.lbm b/transmitter/src/fonts/sqt5/font_se_04x06.lbm similarity index 100% rename from src/fonts/sqt5/font_se_04x06.lbm rename to transmitter/src/fonts/sqt5/font_se_04x06.lbm diff --git a/src/fonts/sqt5/font_se_04x06.png b/transmitter/src/fonts/sqt5/font_se_04x06.png similarity index 100% rename from src/fonts/sqt5/font_se_04x06.png rename to transmitter/src/fonts/sqt5/font_se_04x06.png diff --git a/src/fonts/sqt5/font_se_05x07.lbm b/transmitter/src/fonts/sqt5/font_se_05x07.lbm similarity index 100% rename from src/fonts/sqt5/font_se_05x07.lbm rename to transmitter/src/fonts/sqt5/font_se_05x07.lbm diff --git a/src/fonts/sqt5/font_se_05x07.png b/transmitter/src/fonts/sqt5/font_se_05x07.png similarity index 100% rename from src/fonts/sqt5/font_se_05x07.png rename to transmitter/src/fonts/sqt5/font_se_05x07.png diff --git a/src/fonts/sqt5/font_se_08x10.lbm b/transmitter/src/fonts/sqt5/font_se_08x10.lbm similarity index 100% rename from src/fonts/sqt5/font_se_08x10.lbm rename to transmitter/src/fonts/sqt5/font_se_08x10.lbm diff --git a/src/fonts/sqt5/font_se_08x10.png b/transmitter/src/fonts/sqt5/font_se_08x10.png similarity index 100% rename from src/fonts/sqt5/font_se_08x10.png rename to transmitter/src/fonts/sqt5/font_se_08x10.png diff --git a/src/fonts/sqt5/font_se_10x14.lbm b/transmitter/src/fonts/sqt5/font_se_10x14.lbm similarity index 100% rename from src/fonts/sqt5/font_se_10x14.lbm rename to transmitter/src/fonts/sqt5/font_se_10x14.lbm diff --git a/src/fonts/sqt5/font_se_10x14.png b/transmitter/src/fonts/sqt5/font_se_10x14.png similarity index 100% rename from src/fonts/sqt5/font_se_10x14.png rename to transmitter/src/fonts/sqt5/font_se_10x14.png diff --git a/src/fonts/std/font_03x05.lbm b/transmitter/src/fonts/std/font_03x05.lbm similarity index 100% rename from src/fonts/std/font_03x05.lbm rename to transmitter/src/fonts/std/font_03x05.lbm diff --git a/src/fonts/std/font_03x05.png b/transmitter/src/fonts/std/font_03x05.png similarity index 100% rename from src/fonts/std/font_03x05.png rename to transmitter/src/fonts/std/font_03x05.png diff --git a/src/fonts/std/font_04x06.lbm b/transmitter/src/fonts/std/font_04x06.lbm similarity index 100% rename from src/fonts/std/font_04x06.lbm rename to transmitter/src/fonts/std/font_04x06.lbm diff --git a/src/fonts/std/font_04x06.png b/transmitter/src/fonts/std/font_04x06.png similarity index 100% rename from src/fonts/std/font_04x06.png rename to transmitter/src/fonts/std/font_04x06.png diff --git a/src/fonts/std/font_04x06_extra.lbm b/transmitter/src/fonts/std/font_04x06_extra.lbm similarity index 100% rename from src/fonts/std/font_04x06_extra.lbm rename to transmitter/src/fonts/std/font_04x06_extra.lbm diff --git a/src/fonts/std/font_04x06_extra.png b/transmitter/src/fonts/std/font_04x06_extra.png similarity index 100% rename from src/fonts/std/font_04x06_extra.png rename to transmitter/src/fonts/std/font_04x06_extra.png diff --git a/src/fonts/std/font_05x07.lbm b/transmitter/src/fonts/std/font_05x07.lbm similarity index 100% rename from src/fonts/std/font_05x07.lbm rename to transmitter/src/fonts/std/font_05x07.lbm diff --git a/src/fonts/std/font_05x07.png b/transmitter/src/fonts/std/font_05x07.png similarity index 100% rename from src/fonts/std/font_05x07.png rename to transmitter/src/fonts/std/font_05x07.png diff --git a/src/fonts/std/font_05x07_extra.lbm b/transmitter/src/fonts/std/font_05x07_extra.lbm similarity index 100% rename from src/fonts/std/font_05x07_extra.lbm rename to transmitter/src/fonts/std/font_05x07_extra.lbm diff --git a/src/fonts/std/font_05x07_extra.png b/transmitter/src/fonts/std/font_05x07_extra.png similarity index 100% rename from src/fonts/std/font_05x07_extra.png rename to transmitter/src/fonts/std/font_05x07_extra.png diff --git a/src/fonts/std/font_08x10.lbm b/transmitter/src/fonts/std/font_08x10.lbm similarity index 100% rename from src/fonts/std/font_08x10.lbm rename to transmitter/src/fonts/std/font_08x10.lbm diff --git a/src/fonts/std/font_08x10.png b/transmitter/src/fonts/std/font_08x10.png similarity index 100% rename from src/fonts/std/font_08x10.png rename to transmitter/src/fonts/std/font_08x10.png diff --git a/src/fonts/std/font_10x14.lbm b/transmitter/src/fonts/std/font_10x14.lbm similarity index 100% rename from src/fonts/std/font_10x14.lbm rename to transmitter/src/fonts/std/font_10x14.lbm diff --git a/src/fonts/std/font_10x14.png b/transmitter/src/fonts/std/font_10x14.png similarity index 100% rename from src/fonts/std/font_10x14.png rename to transmitter/src/fonts/std/font_10x14.png diff --git a/src/fonts/std/font_10x14_compressed.lbm b/transmitter/src/fonts/std/font_10x14_compressed.lbm similarity index 100% rename from src/fonts/std/font_10x14_compressed.lbm rename to transmitter/src/fonts/std/font_10x14_compressed.lbm diff --git a/src/fonts/std/font_10x14_compressed.png b/transmitter/src/fonts/std/font_10x14_compressed.png similarity index 100% rename from src/fonts/std/font_10x14_compressed.png rename to transmitter/src/fonts/std/font_10x14_compressed.png diff --git a/src/fonts/std/font_10x14_extra.lbm b/transmitter/src/fonts/std/font_10x14_extra.lbm similarity index 100% rename from src/fonts/std/font_10x14_extra.lbm rename to transmitter/src/fonts/std/font_10x14_extra.lbm diff --git a/src/fonts/std/font_10x14_extra.png b/transmitter/src/fonts/std/font_10x14_extra.png similarity index 100% rename from src/fonts/std/font_10x14_extra.png rename to transmitter/src/fonts/std/font_10x14_extra.png diff --git a/src/fonts/std/font_cz_04x06.lbm b/transmitter/src/fonts/std/font_cz_04x06.lbm similarity index 100% rename from src/fonts/std/font_cz_04x06.lbm rename to transmitter/src/fonts/std/font_cz_04x06.lbm diff --git a/src/fonts/std/font_cz_04x06.png b/transmitter/src/fonts/std/font_cz_04x06.png similarity index 100% rename from src/fonts/std/font_cz_04x06.png rename to transmitter/src/fonts/std/font_cz_04x06.png diff --git a/src/fonts/std/font_cz_05x07.lbm b/transmitter/src/fonts/std/font_cz_05x07.lbm similarity index 100% rename from src/fonts/std/font_cz_05x07.lbm rename to transmitter/src/fonts/std/font_cz_05x07.lbm diff --git a/src/fonts/std/font_cz_05x07.png b/transmitter/src/fonts/std/font_cz_05x07.png similarity index 100% rename from src/fonts/std/font_cz_05x07.png rename to transmitter/src/fonts/std/font_cz_05x07.png diff --git a/src/fonts/std/font_cz_08x10.lbm b/transmitter/src/fonts/std/font_cz_08x10.lbm similarity index 100% rename from src/fonts/std/font_cz_08x10.lbm rename to transmitter/src/fonts/std/font_cz_08x10.lbm diff --git a/src/fonts/std/font_cz_08x10.png b/transmitter/src/fonts/std/font_cz_08x10.png similarity index 100% rename from src/fonts/std/font_cz_08x10.png rename to transmitter/src/fonts/std/font_cz_08x10.png diff --git a/src/fonts/std/font_cz_10x14.lbm b/transmitter/src/fonts/std/font_cz_10x14.lbm similarity index 100% rename from src/fonts/std/font_cz_10x14.lbm rename to transmitter/src/fonts/std/font_cz_10x14.lbm diff --git a/src/fonts/std/font_cz_10x14.png b/transmitter/src/fonts/std/font_cz_10x14.png similarity index 100% rename from src/fonts/std/font_cz_10x14.png rename to transmitter/src/fonts/std/font_cz_10x14.png diff --git a/src/fonts/std/font_de_04x06.lbm b/transmitter/src/fonts/std/font_de_04x06.lbm similarity index 100% rename from src/fonts/std/font_de_04x06.lbm rename to transmitter/src/fonts/std/font_de_04x06.lbm diff --git a/src/fonts/std/font_de_04x06.png b/transmitter/src/fonts/std/font_de_04x06.png similarity index 100% rename from src/fonts/std/font_de_04x06.png rename to transmitter/src/fonts/std/font_de_04x06.png diff --git a/src/fonts/std/font_de_05x07.lbm b/transmitter/src/fonts/std/font_de_05x07.lbm similarity index 100% rename from src/fonts/std/font_de_05x07.lbm rename to transmitter/src/fonts/std/font_de_05x07.lbm diff --git a/src/fonts/std/font_de_05x07.png b/transmitter/src/fonts/std/font_de_05x07.png similarity index 100% rename from src/fonts/std/font_de_05x07.png rename to transmitter/src/fonts/std/font_de_05x07.png diff --git a/src/fonts/std/font_de_08x10.lbm b/transmitter/src/fonts/std/font_de_08x10.lbm similarity index 100% rename from src/fonts/std/font_de_08x10.lbm rename to transmitter/src/fonts/std/font_de_08x10.lbm diff --git a/src/fonts/std/font_de_08x10.png b/transmitter/src/fonts/std/font_de_08x10.png similarity index 100% rename from src/fonts/std/font_de_08x10.png rename to transmitter/src/fonts/std/font_de_08x10.png diff --git a/src/fonts/std/font_de_10x14.lbm b/transmitter/src/fonts/std/font_de_10x14.lbm similarity index 100% rename from src/fonts/std/font_de_10x14.lbm rename to transmitter/src/fonts/std/font_de_10x14.lbm diff --git a/src/fonts/std/font_de_10x14.png b/transmitter/src/fonts/std/font_de_10x14.png similarity index 100% rename from src/fonts/std/font_de_10x14.png rename to transmitter/src/fonts/std/font_de_10x14.png diff --git a/src/fonts/std/font_es_04x06.lbm b/transmitter/src/fonts/std/font_es_04x06.lbm similarity index 100% rename from src/fonts/std/font_es_04x06.lbm rename to transmitter/src/fonts/std/font_es_04x06.lbm diff --git a/src/fonts/std/font_es_04x06.png b/transmitter/src/fonts/std/font_es_04x06.png similarity index 100% rename from src/fonts/std/font_es_04x06.png rename to transmitter/src/fonts/std/font_es_04x06.png diff --git a/src/fonts/std/font_es_05x07.lbm b/transmitter/src/fonts/std/font_es_05x07.lbm similarity index 100% rename from src/fonts/std/font_es_05x07.lbm rename to transmitter/src/fonts/std/font_es_05x07.lbm diff --git a/src/fonts/std/font_es_05x07.png b/transmitter/src/fonts/std/font_es_05x07.png similarity index 100% rename from src/fonts/std/font_es_05x07.png rename to transmitter/src/fonts/std/font_es_05x07.png diff --git a/src/fonts/std/font_es_08x10.lbm b/transmitter/src/fonts/std/font_es_08x10.lbm similarity index 100% rename from src/fonts/std/font_es_08x10.lbm rename to transmitter/src/fonts/std/font_es_08x10.lbm diff --git a/src/fonts/std/font_es_08x10.png b/transmitter/src/fonts/std/font_es_08x10.png similarity index 100% rename from src/fonts/std/font_es_08x10.png rename to transmitter/src/fonts/std/font_es_08x10.png diff --git a/src/fonts/std/font_es_10x14.lbm b/transmitter/src/fonts/std/font_es_10x14.lbm similarity index 100% rename from src/fonts/std/font_es_10x14.lbm rename to transmitter/src/fonts/std/font_es_10x14.lbm diff --git a/src/fonts/std/font_es_10x14.png b/transmitter/src/fonts/std/font_es_10x14.png similarity index 100% rename from src/fonts/std/font_es_10x14.png rename to transmitter/src/fonts/std/font_es_10x14.png diff --git a/src/fonts/std/font_fr_04x06.lbm b/transmitter/src/fonts/std/font_fr_04x06.lbm similarity index 100% rename from src/fonts/std/font_fr_04x06.lbm rename to transmitter/src/fonts/std/font_fr_04x06.lbm diff --git a/src/fonts/std/font_fr_04x06.png b/transmitter/src/fonts/std/font_fr_04x06.png similarity index 100% rename from src/fonts/std/font_fr_04x06.png rename to transmitter/src/fonts/std/font_fr_04x06.png diff --git a/src/fonts/std/font_fr_05x07.lbm b/transmitter/src/fonts/std/font_fr_05x07.lbm similarity index 100% rename from src/fonts/std/font_fr_05x07.lbm rename to transmitter/src/fonts/std/font_fr_05x07.lbm diff --git a/src/fonts/std/font_fr_05x07.png b/transmitter/src/fonts/std/font_fr_05x07.png similarity index 100% rename from src/fonts/std/font_fr_05x07.png rename to transmitter/src/fonts/std/font_fr_05x07.png diff --git a/src/fonts/std/font_fr_08x10.lbm b/transmitter/src/fonts/std/font_fr_08x10.lbm similarity index 100% rename from src/fonts/std/font_fr_08x10.lbm rename to transmitter/src/fonts/std/font_fr_08x10.lbm diff --git a/src/fonts/std/font_fr_08x10.png b/transmitter/src/fonts/std/font_fr_08x10.png similarity index 100% rename from src/fonts/std/font_fr_08x10.png rename to transmitter/src/fonts/std/font_fr_08x10.png diff --git a/src/fonts/std/font_fr_10x14.lbm b/transmitter/src/fonts/std/font_fr_10x14.lbm similarity index 100% rename from src/fonts/std/font_fr_10x14.lbm rename to transmitter/src/fonts/std/font_fr_10x14.lbm diff --git a/src/fonts/std/font_fr_10x14.png b/transmitter/src/fonts/std/font_fr_10x14.png similarity index 100% rename from src/fonts/std/font_fr_10x14.png rename to transmitter/src/fonts/std/font_fr_10x14.png diff --git a/src/fonts/std/font_it_04x06.lbm b/transmitter/src/fonts/std/font_it_04x06.lbm similarity index 100% rename from src/fonts/std/font_it_04x06.lbm rename to transmitter/src/fonts/std/font_it_04x06.lbm diff --git a/src/fonts/std/font_it_04x06.png b/transmitter/src/fonts/std/font_it_04x06.png similarity index 100% rename from src/fonts/std/font_it_04x06.png rename to transmitter/src/fonts/std/font_it_04x06.png diff --git a/src/fonts/std/font_it_05x07.lbm b/transmitter/src/fonts/std/font_it_05x07.lbm similarity index 100% rename from src/fonts/std/font_it_05x07.lbm rename to transmitter/src/fonts/std/font_it_05x07.lbm diff --git a/src/fonts/std/font_it_05x07.png b/transmitter/src/fonts/std/font_it_05x07.png similarity index 100% rename from src/fonts/std/font_it_05x07.png rename to transmitter/src/fonts/std/font_it_05x07.png diff --git a/src/fonts/std/font_it_08x10.lbm b/transmitter/src/fonts/std/font_it_08x10.lbm similarity index 100% rename from src/fonts/std/font_it_08x10.lbm rename to transmitter/src/fonts/std/font_it_08x10.lbm diff --git a/src/fonts/std/font_it_08x10.png b/transmitter/src/fonts/std/font_it_08x10.png similarity index 100% rename from src/fonts/std/font_it_08x10.png rename to transmitter/src/fonts/std/font_it_08x10.png diff --git a/src/fonts/std/font_it_10x14.lbm b/transmitter/src/fonts/std/font_it_10x14.lbm similarity index 100% rename from src/fonts/std/font_it_10x14.lbm rename to transmitter/src/fonts/std/font_it_10x14.lbm diff --git a/src/fonts/std/font_it_10x14.png b/transmitter/src/fonts/std/font_it_10x14.png similarity index 100% rename from src/fonts/std/font_it_10x14.png rename to transmitter/src/fonts/std/font_it_10x14.png diff --git a/src/fonts/std/font_pt_04x06.lbm b/transmitter/src/fonts/std/font_pt_04x06.lbm similarity index 100% rename from src/fonts/std/font_pt_04x06.lbm rename to transmitter/src/fonts/std/font_pt_04x06.lbm diff --git a/src/fonts/std/font_pt_04x06.png b/transmitter/src/fonts/std/font_pt_04x06.png similarity index 100% rename from src/fonts/std/font_pt_04x06.png rename to transmitter/src/fonts/std/font_pt_04x06.png diff --git a/src/fonts/std/font_pt_05x07.lbm b/transmitter/src/fonts/std/font_pt_05x07.lbm similarity index 100% rename from src/fonts/std/font_pt_05x07.lbm rename to transmitter/src/fonts/std/font_pt_05x07.lbm diff --git a/src/fonts/std/font_pt_05x07.png b/transmitter/src/fonts/std/font_pt_05x07.png similarity index 100% rename from src/fonts/std/font_pt_05x07.png rename to transmitter/src/fonts/std/font_pt_05x07.png diff --git a/src/fonts/std/font_pt_08x10.lbm b/transmitter/src/fonts/std/font_pt_08x10.lbm similarity index 100% rename from src/fonts/std/font_pt_08x10.lbm rename to transmitter/src/fonts/std/font_pt_08x10.lbm diff --git a/src/fonts/std/font_pt_08x10.png b/transmitter/src/fonts/std/font_pt_08x10.png similarity index 100% rename from src/fonts/std/font_pt_08x10.png rename to transmitter/src/fonts/std/font_pt_08x10.png diff --git a/src/fonts/std/font_pt_10x14.lbm b/transmitter/src/fonts/std/font_pt_10x14.lbm similarity index 100% rename from src/fonts/std/font_pt_10x14.lbm rename to transmitter/src/fonts/std/font_pt_10x14.lbm diff --git a/src/fonts/std/font_pt_10x14.png b/transmitter/src/fonts/std/font_pt_10x14.png similarity index 100% rename from src/fonts/std/font_pt_10x14.png rename to transmitter/src/fonts/std/font_pt_10x14.png diff --git a/src/fonts/std/font_se_04x06.lbm b/transmitter/src/fonts/std/font_se_04x06.lbm similarity index 100% rename from src/fonts/std/font_se_04x06.lbm rename to transmitter/src/fonts/std/font_se_04x06.lbm diff --git a/src/fonts/std/font_se_04x06.png b/transmitter/src/fonts/std/font_se_04x06.png similarity index 100% rename from src/fonts/std/font_se_04x06.png rename to transmitter/src/fonts/std/font_se_04x06.png diff --git a/src/fonts/std/font_se_05x07.lbm b/transmitter/src/fonts/std/font_se_05x07.lbm similarity index 100% rename from src/fonts/std/font_se_05x07.lbm rename to transmitter/src/fonts/std/font_se_05x07.lbm diff --git a/src/fonts/std/font_se_05x07.png b/transmitter/src/fonts/std/font_se_05x07.png similarity index 100% rename from src/fonts/std/font_se_05x07.png rename to transmitter/src/fonts/std/font_se_05x07.png diff --git a/src/fonts/std/font_se_08x10.lbm b/transmitter/src/fonts/std/font_se_08x10.lbm similarity index 100% rename from src/fonts/std/font_se_08x10.lbm rename to transmitter/src/fonts/std/font_se_08x10.lbm diff --git a/src/fonts/std/font_se_08x10.png b/transmitter/src/fonts/std/font_se_08x10.png similarity index 100% rename from src/fonts/std/font_se_08x10.png rename to transmitter/src/fonts/std/font_se_08x10.png diff --git a/src/fonts/std/font_se_10x14.lbm b/transmitter/src/fonts/std/font_se_10x14.lbm similarity index 100% rename from src/fonts/std/font_se_10x14.lbm rename to transmitter/src/fonts/std/font_se_10x14.lbm diff --git a/src/fonts/std/font_se_10x14.png b/transmitter/src/fonts/std/font_se_10x14.png similarity index 100% rename from src/fonts/std/font_se_10x14.png rename to transmitter/src/fonts/std/font_se_10x14.png diff --git a/src/gtests.cpp b/transmitter/src/gtests.cpp similarity index 100% rename from src/gtests.cpp rename to transmitter/src/gtests.cpp diff --git a/src/gui/menu_general.cpp b/transmitter/src/gui/menu_general.cpp similarity index 100% rename from src/gui/menu_general.cpp rename to transmitter/src/gui/menu_general.cpp diff --git a/src/gui/menu_model.cpp b/transmitter/src/gui/menu_model.cpp similarity index 100% rename from src/gui/menu_model.cpp rename to transmitter/src/gui/menu_model.cpp diff --git a/src/gui/menus.cpp b/transmitter/src/gui/menus.cpp similarity index 100% rename from src/gui/menus.cpp rename to transmitter/src/gui/menus.cpp diff --git a/src/gui/menus.h b/transmitter/src/gui/menus.h similarity index 100% rename from src/gui/menus.h rename to transmitter/src/gui/menus.h diff --git a/src/gui/view_about.cpp b/transmitter/src/gui/view_about.cpp similarity index 100% rename from src/gui/view_about.cpp rename to transmitter/src/gui/view_about.cpp diff --git a/src/gui/view_channels.cpp b/transmitter/src/gui/view_channels.cpp similarity index 100% rename from src/gui/view_channels.cpp rename to transmitter/src/gui/view_channels.cpp diff --git a/src/gui/view_main.cpp b/transmitter/src/gui/view_main.cpp similarity index 100% rename from src/gui/view_main.cpp rename to transmitter/src/gui/view_main.cpp diff --git a/src/gui/view_mavlink.cpp b/transmitter/src/gui/view_mavlink.cpp similarity index 100% rename from src/gui/view_mavlink.cpp rename to transmitter/src/gui/view_mavlink.cpp diff --git a/src/gui/view_mavlink.h b/transmitter/src/gui/view_mavlink.h similarity index 100% rename from src/gui/view_mavlink.h rename to transmitter/src/gui/view_mavlink.h diff --git a/src/gui/view_statistics.cpp b/transmitter/src/gui/view_statistics.cpp similarity index 100% rename from src/gui/view_statistics.cpp rename to transmitter/src/gui/view_statistics.cpp diff --git a/src/gui/view_telemetry.cpp b/transmitter/src/gui/view_telemetry.cpp similarity index 100% rename from src/gui/view_telemetry.cpp rename to transmitter/src/gui/view_telemetry.cpp diff --git a/src/gui/view_text.cpp b/transmitter/src/gui/view_text.cpp similarity index 100% rename from src/gui/view_text.cpp rename to transmitter/src/gui/view_text.cpp diff --git a/src/haptic.cpp b/transmitter/src/haptic.cpp similarity index 100% rename from src/haptic.cpp rename to transmitter/src/haptic.cpp diff --git a/src/haptic.h b/transmitter/src/haptic.h similarity index 100% rename from src/haptic.h rename to transmitter/src/haptic.h diff --git a/src/keys.cpp b/transmitter/src/keys.cpp similarity index 100% rename from src/keys.cpp rename to transmitter/src/keys.cpp diff --git a/src/lcd.cpp b/transmitter/src/lcd.cpp similarity index 100% rename from src/lcd.cpp rename to transmitter/src/lcd.cpp diff --git a/src/lcd.h b/transmitter/src/lcd.h similarity index 100% rename from src/lcd.h rename to transmitter/src/lcd.h diff --git a/src/logs.cpp b/transmitter/src/logs.cpp similarity index 100% rename from src/logs.cpp rename to transmitter/src/logs.cpp diff --git a/src/maths.cpp b/transmitter/src/maths.cpp similarity index 100% rename from src/maths.cpp rename to transmitter/src/maths.cpp diff --git a/src/myeeprom.h b/transmitter/src/myeeprom.h similarity index 100% rename from src/myeeprom.h rename to transmitter/src/myeeprom.h diff --git a/src/opentx.cpp b/transmitter/src/opentx.cpp similarity index 100% rename from src/opentx.cpp rename to transmitter/src/opentx.cpp diff --git a/src/opentx.h b/transmitter/src/opentx.h similarity index 100% rename from src/opentx.h rename to transmitter/src/opentx.h diff --git a/src/pgmtypes.h b/transmitter/src/pgmtypes.h similarity index 100% rename from src/pgmtypes.h rename to transmitter/src/pgmtypes.h diff --git a/src/protocols/dsm2_arm.cpp b/transmitter/src/protocols/dsm2_arm.cpp similarity index 100% rename from src/protocols/dsm2_arm.cpp rename to transmitter/src/protocols/dsm2_arm.cpp diff --git a/src/protocols/ppm_arm.cpp b/transmitter/src/protocols/ppm_arm.cpp similarity index 100% rename from src/protocols/ppm_arm.cpp rename to transmitter/src/protocols/ppm_arm.cpp diff --git a/src/protocols/pulses_arm.cpp b/transmitter/src/protocols/pulses_arm.cpp similarity index 100% rename from src/protocols/pulses_arm.cpp rename to transmitter/src/protocols/pulses_arm.cpp diff --git a/src/protocols/pulses_arm.h b/transmitter/src/protocols/pulses_arm.h similarity index 100% rename from src/protocols/pulses_arm.h rename to transmitter/src/protocols/pulses_arm.h diff --git a/src/protocols/pulses_avr.cpp b/transmitter/src/protocols/pulses_avr.cpp similarity index 100% rename from src/protocols/pulses_avr.cpp rename to transmitter/src/protocols/pulses_avr.cpp diff --git a/src/protocols/pulses_avr.h b/transmitter/src/protocols/pulses_avr.h similarity index 100% rename from src/protocols/pulses_avr.h rename to transmitter/src/protocols/pulses_avr.h diff --git a/src/protocols/pxx_arm.cpp b/transmitter/src/protocols/pxx_arm.cpp similarity index 100% rename from src/protocols/pxx_arm.cpp rename to transmitter/src/protocols/pxx_arm.cpp diff --git a/src/rtc.cpp b/transmitter/src/rtc.cpp similarity index 100% rename from src/rtc.cpp rename to transmitter/src/rtc.cpp diff --git a/src/rtc.h b/transmitter/src/rtc.h similarity index 100% rename from src/rtc.h rename to transmitter/src/rtc.h diff --git a/src/sdcard.h b/transmitter/src/sdcard.h similarity index 100% rename from src/sdcard.h rename to transmitter/src/sdcard.h diff --git a/src/serial.cpp b/transmitter/src/serial.cpp similarity index 100% rename from src/serial.cpp rename to transmitter/src/serial.cpp diff --git a/src/serial.h b/transmitter/src/serial.h similarity index 100% rename from src/serial.h rename to transmitter/src/serial.h diff --git a/src/simpgmspace.cpp b/transmitter/src/simpgmspace.cpp similarity index 100% rename from src/simpgmspace.cpp rename to transmitter/src/simpgmspace.cpp diff --git a/src/simpgmspace.h b/transmitter/src/simpgmspace.h similarity index 100% rename from src/simpgmspace.h rename to transmitter/src/simpgmspace.h diff --git a/src/simu.cpp b/transmitter/src/simu.cpp similarity index 100% rename from src/simu.cpp rename to transmitter/src/simu.cpp diff --git a/src/stamp.cpp b/transmitter/src/stamp.cpp similarity index 100% rename from src/stamp.cpp rename to transmitter/src/stamp.cpp diff --git a/src/targets/gruvin9x/board_gruvin9x.cpp b/transmitter/src/targets/gruvin9x/board_gruvin9x.cpp similarity index 100% rename from src/targets/gruvin9x/board_gruvin9x.cpp rename to transmitter/src/targets/gruvin9x/board_gruvin9x.cpp diff --git a/src/targets/gruvin9x/board_gruvin9x.h b/transmitter/src/targets/gruvin9x/board_gruvin9x.h similarity index 100% rename from src/targets/gruvin9x/board_gruvin9x.h rename to transmitter/src/targets/gruvin9x/board_gruvin9x.h diff --git a/src/targets/gruvin9x/diskio.cpp b/transmitter/src/targets/gruvin9x/diskio.cpp similarity index 100% rename from src/targets/gruvin9x/diskio.cpp rename to transmitter/src/targets/gruvin9x/diskio.cpp diff --git a/src/targets/gruvin9x/fuses_2561.txt b/transmitter/src/targets/gruvin9x/fuses_2561.txt similarity index 100% rename from src/targets/gruvin9x/fuses_2561.txt rename to transmitter/src/targets/gruvin9x/fuses_2561.txt diff --git a/src/targets/gruvin9x/rtc_driver.cpp b/transmitter/src/targets/gruvin9x/rtc_driver.cpp similarity index 100% rename from src/targets/gruvin9x/rtc_driver.cpp rename to transmitter/src/targets/gruvin9x/rtc_driver.cpp diff --git a/src/targets/gruvin9x/somo14d.cpp b/transmitter/src/targets/gruvin9x/somo14d.cpp similarity index 100% rename from src/targets/gruvin9x/somo14d.cpp rename to transmitter/src/targets/gruvin9x/somo14d.cpp diff --git a/src/targets/gruvin9x/somo14d.h b/transmitter/src/targets/gruvin9x/somo14d.h similarity index 100% rename from src/targets/gruvin9x/somo14d.h rename to transmitter/src/targets/gruvin9x/somo14d.h diff --git a/src/targets/mega2560/00readme.txt b/transmitter/src/targets/mega2560/00readme.txt similarity index 100% rename from src/targets/mega2560/00readme.txt rename to transmitter/src/targets/mega2560/00readme.txt diff --git a/src/targets/mega2560/board_mega2560.cpp b/transmitter/src/targets/mega2560/board_mega2560.cpp similarity index 100% rename from src/targets/mega2560/board_mega2560.cpp rename to transmitter/src/targets/mega2560/board_mega2560.cpp diff --git a/src/targets/mega2560/board_mega2560.h b/transmitter/src/targets/mega2560/board_mega2560.h similarity index 100% rename from src/targets/mega2560/board_mega2560.h rename to transmitter/src/targets/mega2560/board_mega2560.h diff --git a/src/targets/mega2560/io_mega2560.h b/transmitter/src/targets/mega2560/io_mega2560.h similarity index 100% rename from src/targets/mega2560/io_mega2560.h rename to transmitter/src/targets/mega2560/io_mega2560.h diff --git a/src/targets/mega2560/lcd_driver_ST7565R.cpp b/transmitter/src/targets/mega2560/lcd_driver_ST7565R.cpp similarity index 100% rename from src/targets/mega2560/lcd_driver_ST7565R.cpp rename to transmitter/src/targets/mega2560/lcd_driver_ST7565R.cpp diff --git a/src/targets/mega2560/rtc_driver.cpp b/transmitter/src/targets/mega2560/rtc_driver.cpp similarity index 100% rename from src/targets/mega2560/rtc_driver.cpp rename to transmitter/src/targets/mega2560/rtc_driver.cpp diff --git a/src/targets/sky9x/AT91SAM3S2.h b/transmitter/src/targets/sky9x/AT91SAM3S2.h similarity index 100% rename from src/targets/sky9x/AT91SAM3S2.h rename to transmitter/src/targets/sky9x/AT91SAM3S2.h diff --git a/src/targets/sky9x/AT91SAM3S4.h b/transmitter/src/targets/sky9x/AT91SAM3S4.h similarity index 100% rename from src/targets/sky9x/AT91SAM3S4.h rename to transmitter/src/targets/sky9x/AT91SAM3S4.h diff --git a/src/targets/sky9x/MEDSdcard.c b/transmitter/src/targets/sky9x/MEDSdcard.c similarity index 100% rename from src/targets/sky9x/MEDSdcard.c rename to transmitter/src/targets/sky9x/MEDSdcard.c diff --git a/src/targets/sky9x/Media.h b/transmitter/src/targets/sky9x/Media.h similarity index 100% rename from src/targets/sky9x/Media.h rename to transmitter/src/targets/sky9x/Media.h diff --git a/src/targets/sky9x/adc_driver.cpp b/transmitter/src/targets/sky9x/adc_driver.cpp similarity index 100% rename from src/targets/sky9x/adc_driver.cpp rename to transmitter/src/targets/sky9x/adc_driver.cpp diff --git a/src/targets/sky9x/audio_driver.cpp b/transmitter/src/targets/sky9x/audio_driver.cpp similarity index 100% rename from src/targets/sky9x/audio_driver.cpp rename to transmitter/src/targets/sky9x/audio_driver.cpp diff --git a/src/targets/sky9x/audio_driver.h b/transmitter/src/targets/sky9x/audio_driver.h similarity index 100% rename from src/targets/sky9x/audio_driver.h rename to transmitter/src/targets/sky9x/audio_driver.h diff --git a/src/targets/sky9x/bluetooth.cpp b/transmitter/src/targets/sky9x/bluetooth.cpp similarity index 100% rename from src/targets/sky9x/bluetooth.cpp rename to transmitter/src/targets/sky9x/bluetooth.cpp diff --git a/src/targets/sky9x/board.h b/transmitter/src/targets/sky9x/board.h similarity index 100% rename from src/targets/sky9x/board.h rename to transmitter/src/targets/sky9x/board.h diff --git a/src/targets/sky9x/board_lowlevel.c b/transmitter/src/targets/sky9x/board_lowlevel.c similarity index 100% rename from src/targets/sky9x/board_lowlevel.c rename to transmitter/src/targets/sky9x/board_lowlevel.c diff --git a/src/targets/sky9x/board_sky9x.cpp b/transmitter/src/targets/sky9x/board_sky9x.cpp similarity index 100% rename from src/targets/sky9x/board_sky9x.cpp rename to transmitter/src/targets/sky9x/board_sky9x.cpp diff --git a/src/targets/sky9x/board_sky9x.h b/transmitter/src/targets/sky9x/board_sky9x.h similarity index 100% rename from src/targets/sky9x/board_sky9x.h rename to transmitter/src/targets/sky9x/board_sky9x.h diff --git a/src/targets/sky9x/buzzer_driver.cpp b/transmitter/src/targets/sky9x/buzzer_driver.cpp similarity index 100% rename from src/targets/sky9x/buzzer_driver.cpp rename to transmitter/src/targets/sky9x/buzzer_driver.cpp diff --git a/src/targets/sky9x/chip.h b/transmitter/src/targets/sky9x/chip.h similarity index 100% rename from src/targets/sky9x/chip.h rename to transmitter/src/targets/sky9x/chip.h diff --git a/src/targets/sky9x/coproc_driver.cpp b/transmitter/src/targets/sky9x/coproc_driver.cpp similarity index 100% rename from src/targets/sky9x/coproc_driver.cpp rename to transmitter/src/targets/sky9x/coproc_driver.cpp diff --git a/src/targets/sky9x/core_cm3.c b/transmitter/src/targets/sky9x/core_cm3.c similarity index 100% rename from src/targets/sky9x/core_cm3.c rename to transmitter/src/targets/sky9x/core_cm3.c diff --git a/src/targets/sky9x/core_cm3.h b/transmitter/src/targets/sky9x/core_cm3.h similarity index 100% rename from src/targets/sky9x/core_cm3.h rename to transmitter/src/targets/sky9x/core_cm3.h diff --git a/src/targets/sky9x/crt.c b/transmitter/src/targets/sky9x/crt.c similarity index 100% rename from src/targets/sky9x/crt.c rename to transmitter/src/targets/sky9x/crt.c diff --git a/src/targets/sky9x/debug_driver.cpp b/transmitter/src/targets/sky9x/debug_driver.cpp similarity index 100% rename from src/targets/sky9x/debug_driver.cpp rename to transmitter/src/targets/sky9x/debug_driver.cpp diff --git a/src/targets/sky9x/diskio.cpp b/transmitter/src/targets/sky9x/diskio.cpp similarity index 100% rename from src/targets/sky9x/diskio.cpp rename to transmitter/src/targets/sky9x/diskio.cpp diff --git a/src/targets/sky9x/eeprom_driver.cpp b/transmitter/src/targets/sky9x/eeprom_driver.cpp similarity index 100% rename from src/targets/sky9x/eeprom_driver.cpp rename to transmitter/src/targets/sky9x/eeprom_driver.cpp diff --git a/src/targets/sky9x/haptic_driver.cpp b/transmitter/src/targets/sky9x/haptic_driver.cpp similarity index 100% rename from src/targets/sky9x/haptic_driver.cpp rename to transmitter/src/targets/sky9x/haptic_driver.cpp diff --git a/src/targets/sky9x/keys_driver.cpp b/transmitter/src/targets/sky9x/keys_driver.cpp similarity index 100% rename from src/targets/sky9x/keys_driver.cpp rename to transmitter/src/targets/sky9x/keys_driver.cpp diff --git a/src/targets/sky9x/lcd_driver.cpp b/transmitter/src/targets/sky9x/lcd_driver.cpp similarity index 100% rename from src/targets/sky9x/lcd_driver.cpp rename to transmitter/src/targets/sky9x/lcd_driver.cpp diff --git a/src/targets/sky9x/massstorage.cpp b/transmitter/src/targets/sky9x/massstorage.cpp similarity index 100% rename from src/targets/sky9x/massstorage.cpp rename to transmitter/src/targets/sky9x/massstorage.cpp diff --git a/src/targets/sky9x/pulses_driver.cpp b/transmitter/src/targets/sky9x/pulses_driver.cpp similarity index 100% rename from src/targets/sky9x/pulses_driver.cpp rename to transmitter/src/targets/sky9x/pulses_driver.cpp diff --git a/src/targets/sky9x/pwr_driver.cpp b/transmitter/src/targets/sky9x/pwr_driver.cpp similarity index 100% rename from src/targets/sky9x/pwr_driver.cpp rename to transmitter/src/targets/sky9x/pwr_driver.cpp diff --git a/src/targets/sky9x/rotenc_driver.cpp b/transmitter/src/targets/sky9x/rotenc_driver.cpp similarity index 100% rename from src/targets/sky9x/rotenc_driver.cpp rename to transmitter/src/targets/sky9x/rotenc_driver.cpp diff --git a/src/targets/sky9x/rtc_driver.cpp b/transmitter/src/targets/sky9x/rtc_driver.cpp similarity index 100% rename from src/targets/sky9x/rtc_driver.cpp rename to transmitter/src/targets/sky9x/rtc_driver.cpp diff --git a/src/targets/sky9x/sam3s2c_flash.ld b/transmitter/src/targets/sky9x/sam3s2c_flash.ld similarity index 100% rename from src/targets/sky9x/sam3s2c_flash.ld rename to transmitter/src/targets/sky9x/sam3s2c_flash.ld diff --git a/src/targets/sky9x/sam3s4c_flash.ld b/transmitter/src/targets/sky9x/sam3s4c_flash.ld similarity index 100% rename from src/targets/sky9x/sam3s4c_flash.ld rename to transmitter/src/targets/sky9x/sam3s4c_flash.ld diff --git a/src/targets/sky9x/sdcard_driver.cpp b/transmitter/src/targets/sky9x/sdcard_driver.cpp similarity index 100% rename from src/targets/sky9x/sdcard_driver.cpp rename to transmitter/src/targets/sky9x/sdcard_driver.cpp diff --git a/src/targets/sky9x/syscalls.c b/transmitter/src/targets/sky9x/syscalls.c similarity index 100% rename from src/targets/sky9x/syscalls.c rename to transmitter/src/targets/sky9x/syscalls.c diff --git a/src/targets/sky9x/usb/common/core/USBConfigurationDescriptor.c b/transmitter/src/targets/sky9x/usb/common/core/USBConfigurationDescriptor.c similarity index 100% rename from src/targets/sky9x/usb/common/core/USBConfigurationDescriptor.c rename to transmitter/src/targets/sky9x/usb/common/core/USBConfigurationDescriptor.c diff --git a/src/targets/sky9x/usb/common/core/USBConfigurationDescriptor.h b/transmitter/src/targets/sky9x/usb/common/core/USBConfigurationDescriptor.h similarity index 100% rename from src/targets/sky9x/usb/common/core/USBConfigurationDescriptor.h rename to transmitter/src/targets/sky9x/usb/common/core/USBConfigurationDescriptor.h diff --git a/src/targets/sky9x/usb/common/core/USBDeviceDescriptor.h b/transmitter/src/targets/sky9x/usb/common/core/USBDeviceDescriptor.h similarity index 100% rename from src/targets/sky9x/usb/common/core/USBDeviceDescriptor.h rename to transmitter/src/targets/sky9x/usb/common/core/USBDeviceDescriptor.h diff --git a/src/targets/sky9x/usb/common/core/USBDeviceQualifierDescriptor.h b/transmitter/src/targets/sky9x/usb/common/core/USBDeviceQualifierDescriptor.h similarity index 100% rename from src/targets/sky9x/usb/common/core/USBDeviceQualifierDescriptor.h rename to transmitter/src/targets/sky9x/usb/common/core/USBDeviceQualifierDescriptor.h diff --git a/src/targets/sky9x/usb/common/core/USBEndpointDescriptor.c b/transmitter/src/targets/sky9x/usb/common/core/USBEndpointDescriptor.c similarity index 100% rename from src/targets/sky9x/usb/common/core/USBEndpointDescriptor.c rename to transmitter/src/targets/sky9x/usb/common/core/USBEndpointDescriptor.c diff --git a/src/targets/sky9x/usb/common/core/USBEndpointDescriptor.h b/transmitter/src/targets/sky9x/usb/common/core/USBEndpointDescriptor.h similarity index 100% rename from src/targets/sky9x/usb/common/core/USBEndpointDescriptor.h rename to transmitter/src/targets/sky9x/usb/common/core/USBEndpointDescriptor.h diff --git a/src/targets/sky9x/usb/common/core/USBFeatureRequest.c b/transmitter/src/targets/sky9x/usb/common/core/USBFeatureRequest.c similarity index 100% rename from src/targets/sky9x/usb/common/core/USBFeatureRequest.c rename to transmitter/src/targets/sky9x/usb/common/core/USBFeatureRequest.c diff --git a/src/targets/sky9x/usb/common/core/USBFeatureRequest.h b/transmitter/src/targets/sky9x/usb/common/core/USBFeatureRequest.h similarity index 100% rename from src/targets/sky9x/usb/common/core/USBFeatureRequest.h rename to transmitter/src/targets/sky9x/usb/common/core/USBFeatureRequest.h diff --git a/src/targets/sky9x/usb/common/core/USBGenericDescriptor.c b/transmitter/src/targets/sky9x/usb/common/core/USBGenericDescriptor.c similarity index 100% rename from src/targets/sky9x/usb/common/core/USBGenericDescriptor.c rename to transmitter/src/targets/sky9x/usb/common/core/USBGenericDescriptor.c diff --git a/src/targets/sky9x/usb/common/core/USBGenericDescriptor.h b/transmitter/src/targets/sky9x/usb/common/core/USBGenericDescriptor.h similarity index 100% rename from src/targets/sky9x/usb/common/core/USBGenericDescriptor.h rename to transmitter/src/targets/sky9x/usb/common/core/USBGenericDescriptor.h diff --git a/src/targets/sky9x/usb/common/core/USBGenericRequest.c b/transmitter/src/targets/sky9x/usb/common/core/USBGenericRequest.c similarity index 100% rename from src/targets/sky9x/usb/common/core/USBGenericRequest.c rename to transmitter/src/targets/sky9x/usb/common/core/USBGenericRequest.c diff --git a/src/targets/sky9x/usb/common/core/USBGenericRequest.h b/transmitter/src/targets/sky9x/usb/common/core/USBGenericRequest.h similarity index 100% rename from src/targets/sky9x/usb/common/core/USBGenericRequest.h rename to transmitter/src/targets/sky9x/usb/common/core/USBGenericRequest.h diff --git a/src/targets/sky9x/usb/common/core/USBGetDescriptorRequest.c b/transmitter/src/targets/sky9x/usb/common/core/USBGetDescriptorRequest.c similarity index 100% rename from src/targets/sky9x/usb/common/core/USBGetDescriptorRequest.c rename to transmitter/src/targets/sky9x/usb/common/core/USBGetDescriptorRequest.c diff --git a/src/targets/sky9x/usb/common/core/USBGetDescriptorRequest.h b/transmitter/src/targets/sky9x/usb/common/core/USBGetDescriptorRequest.h similarity index 100% rename from src/targets/sky9x/usb/common/core/USBGetDescriptorRequest.h rename to transmitter/src/targets/sky9x/usb/common/core/USBGetDescriptorRequest.h diff --git a/src/targets/sky9x/usb/common/core/USBInterfaceAssociationDescriptor.h b/transmitter/src/targets/sky9x/usb/common/core/USBInterfaceAssociationDescriptor.h similarity index 100% rename from src/targets/sky9x/usb/common/core/USBInterfaceAssociationDescriptor.h rename to transmitter/src/targets/sky9x/usb/common/core/USBInterfaceAssociationDescriptor.h diff --git a/src/targets/sky9x/usb/common/core/USBInterfaceDescriptor.h b/transmitter/src/targets/sky9x/usb/common/core/USBInterfaceDescriptor.h similarity index 100% rename from src/targets/sky9x/usb/common/core/USBInterfaceDescriptor.h rename to transmitter/src/targets/sky9x/usb/common/core/USBInterfaceDescriptor.h diff --git a/src/targets/sky9x/usb/common/core/USBInterfaceRequest.c b/transmitter/src/targets/sky9x/usb/common/core/USBInterfaceRequest.c similarity index 100% rename from src/targets/sky9x/usb/common/core/USBInterfaceRequest.c rename to transmitter/src/targets/sky9x/usb/common/core/USBInterfaceRequest.c diff --git a/src/targets/sky9x/usb/common/core/USBInterfaceRequest.h b/transmitter/src/targets/sky9x/usb/common/core/USBInterfaceRequest.h similarity index 100% rename from src/targets/sky9x/usb/common/core/USBInterfaceRequest.h rename to transmitter/src/targets/sky9x/usb/common/core/USBInterfaceRequest.h diff --git a/src/targets/sky9x/usb/common/core/USBIrqHandler.c b/transmitter/src/targets/sky9x/usb/common/core/USBIrqHandler.c similarity index 100% rename from src/targets/sky9x/usb/common/core/USBIrqHandler.c rename to transmitter/src/targets/sky9x/usb/common/core/USBIrqHandler.c diff --git a/src/targets/sky9x/usb/common/core/USBIrqHandler.h b/transmitter/src/targets/sky9x/usb/common/core/USBIrqHandler.h similarity index 100% rename from src/targets/sky9x/usb/common/core/USBIrqHandler.h rename to transmitter/src/targets/sky9x/usb/common/core/USBIrqHandler.h diff --git a/src/targets/sky9x/usb/common/core/USBSetAddressRequest.c b/transmitter/src/targets/sky9x/usb/common/core/USBSetAddressRequest.c similarity index 100% rename from src/targets/sky9x/usb/common/core/USBSetAddressRequest.c rename to transmitter/src/targets/sky9x/usb/common/core/USBSetAddressRequest.c diff --git a/src/targets/sky9x/usb/common/core/USBSetAddressRequest.h b/transmitter/src/targets/sky9x/usb/common/core/USBSetAddressRequest.h similarity index 100% rename from src/targets/sky9x/usb/common/core/USBSetAddressRequest.h rename to transmitter/src/targets/sky9x/usb/common/core/USBSetAddressRequest.h diff --git a/src/targets/sky9x/usb/common/core/USBSetConfigurationRequest.c b/transmitter/src/targets/sky9x/usb/common/core/USBSetConfigurationRequest.c similarity index 100% rename from src/targets/sky9x/usb/common/core/USBSetConfigurationRequest.c rename to transmitter/src/targets/sky9x/usb/common/core/USBSetConfigurationRequest.c diff --git a/src/targets/sky9x/usb/common/core/USBSetConfigurationRequest.h b/transmitter/src/targets/sky9x/usb/common/core/USBSetConfigurationRequest.h similarity index 100% rename from src/targets/sky9x/usb/common/core/USBSetConfigurationRequest.h rename to transmitter/src/targets/sky9x/usb/common/core/USBSetConfigurationRequest.h diff --git a/src/targets/sky9x/usb/common/core/USBStringDescriptor.h b/transmitter/src/targets/sky9x/usb/common/core/USBStringDescriptor.h similarity index 100% rename from src/targets/sky9x/usb/common/core/USBStringDescriptor.h rename to transmitter/src/targets/sky9x/usb/common/core/USBStringDescriptor.h diff --git a/src/targets/sky9x/usb/common/massstorage/MSDeviceDescriptor.h b/transmitter/src/targets/sky9x/usb/common/massstorage/MSDeviceDescriptor.h similarity index 100% rename from src/targets/sky9x/usb/common/massstorage/MSDeviceDescriptor.h rename to transmitter/src/targets/sky9x/usb/common/massstorage/MSDeviceDescriptor.h diff --git a/src/targets/sky9x/usb/common/massstorage/MSInterfaceDescriptor.h b/transmitter/src/targets/sky9x/usb/common/massstorage/MSInterfaceDescriptor.h similarity index 100% rename from src/targets/sky9x/usb/common/massstorage/MSInterfaceDescriptor.h rename to transmitter/src/targets/sky9x/usb/common/massstorage/MSInterfaceDescriptor.h diff --git a/src/targets/sky9x/usb/device/core/USBD.h b/transmitter/src/targets/sky9x/usb/device/core/USBD.h similarity index 100% rename from src/targets/sky9x/usb/device/core/USBD.h rename to transmitter/src/targets/sky9x/usb/device/core/USBD.h diff --git a/src/targets/sky9x/usb/device/core/USBDDriver.c b/transmitter/src/targets/sky9x/usb/device/core/USBDDriver.c similarity index 100% rename from src/targets/sky9x/usb/device/core/USBDDriver.c rename to transmitter/src/targets/sky9x/usb/device/core/USBDDriver.c diff --git a/src/targets/sky9x/usb/device/core/USBDDriver.h b/transmitter/src/targets/sky9x/usb/device/core/USBDDriver.h similarity index 100% rename from src/targets/sky9x/usb/device/core/USBDDriver.h rename to transmitter/src/targets/sky9x/usb/device/core/USBDDriver.h diff --git a/src/targets/sky9x/usb/device/core/USBDDriverDescriptors.h b/transmitter/src/targets/sky9x/usb/device/core/USBDDriverDescriptors.h similarity index 100% rename from src/targets/sky9x/usb/device/core/USBDDriverDescriptors.h rename to transmitter/src/targets/sky9x/usb/device/core/USBDDriverDescriptors.h diff --git a/src/targets/sky9x/usb/device/core/USBD_UDP.c b/transmitter/src/targets/sky9x/usb/device/core/USBD_UDP.c similarity index 100% rename from src/targets/sky9x/usb/device/core/USBD_UDP.c rename to transmitter/src/targets/sky9x/usb/device/core/USBD_UDP.c diff --git a/src/targets/sky9x/usb/device/massstorage/MSD.h b/transmitter/src/targets/sky9x/usb/device/massstorage/MSD.h similarity index 100% rename from src/targets/sky9x/usb/device/massstorage/MSD.h rename to transmitter/src/targets/sky9x/usb/device/massstorage/MSD.h diff --git a/src/targets/sky9x/usb/device/massstorage/MSDDStateMachine.c b/transmitter/src/targets/sky9x/usb/device/massstorage/MSDDStateMachine.c similarity index 100% rename from src/targets/sky9x/usb/device/massstorage/MSDDStateMachine.c rename to transmitter/src/targets/sky9x/usb/device/massstorage/MSDDStateMachine.c diff --git a/src/targets/sky9x/usb/device/massstorage/MSDDStateMachine.h b/transmitter/src/targets/sky9x/usb/device/massstorage/MSDDStateMachine.h similarity index 100% rename from src/targets/sky9x/usb/device/massstorage/MSDDStateMachine.h rename to transmitter/src/targets/sky9x/usb/device/massstorage/MSDDStateMachine.h diff --git a/src/targets/sky9x/usb/device/massstorage/MSDDriver.c b/transmitter/src/targets/sky9x/usb/device/massstorage/MSDDriver.c similarity index 100% rename from src/targets/sky9x/usb/device/massstorage/MSDDriver.c rename to transmitter/src/targets/sky9x/usb/device/massstorage/MSDDriver.c diff --git a/src/targets/sky9x/usb/device/massstorage/MSDDriver.h b/transmitter/src/targets/sky9x/usb/device/massstorage/MSDDriver.h similarity index 100% rename from src/targets/sky9x/usb/device/massstorage/MSDDriver.h rename to transmitter/src/targets/sky9x/usb/device/massstorage/MSDDriver.h diff --git a/src/targets/sky9x/usb/device/massstorage/MSDDriverDescriptors.c b/transmitter/src/targets/sky9x/usb/device/massstorage/MSDDriverDescriptors.c similarity index 100% rename from src/targets/sky9x/usb/device/massstorage/MSDDriverDescriptors.c rename to transmitter/src/targets/sky9x/usb/device/massstorage/MSDDriverDescriptors.c diff --git a/src/targets/sky9x/usb/device/massstorage/MSDDriverDescriptors.h b/transmitter/src/targets/sky9x/usb/device/massstorage/MSDDriverDescriptors.h similarity index 100% rename from src/targets/sky9x/usb/device/massstorage/MSDDriverDescriptors.h rename to transmitter/src/targets/sky9x/usb/device/massstorage/MSDDriverDescriptors.h diff --git a/src/targets/sky9x/usb/device/massstorage/MSDIOFifo.h b/transmitter/src/targets/sky9x/usb/device/massstorage/MSDIOFifo.h similarity index 100% rename from src/targets/sky9x/usb/device/massstorage/MSDIOFifo.h rename to transmitter/src/targets/sky9x/usb/device/massstorage/MSDIOFifo.h diff --git a/src/targets/sky9x/usb/device/massstorage/MSDLun.c b/transmitter/src/targets/sky9x/usb/device/massstorage/MSDLun.c similarity index 100% rename from src/targets/sky9x/usb/device/massstorage/MSDLun.c rename to transmitter/src/targets/sky9x/usb/device/massstorage/MSDLun.c diff --git a/src/targets/sky9x/usb/device/massstorage/MSDLun.h b/transmitter/src/targets/sky9x/usb/device/massstorage/MSDLun.h similarity index 100% rename from src/targets/sky9x/usb/device/massstorage/MSDLun.h rename to transmitter/src/targets/sky9x/usb/device/massstorage/MSDLun.h diff --git a/src/targets/sky9x/usb/device/massstorage/SBC.h b/transmitter/src/targets/sky9x/usb/device/massstorage/SBC.h similarity index 100% rename from src/targets/sky9x/usb/device/massstorage/SBC.h rename to transmitter/src/targets/sky9x/usb/device/massstorage/SBC.h diff --git a/src/targets/sky9x/usb/device/massstorage/SBCMethods.c b/transmitter/src/targets/sky9x/usb/device/massstorage/SBCMethods.c similarity index 100% rename from src/targets/sky9x/usb/device/massstorage/SBCMethods.c rename to transmitter/src/targets/sky9x/usb/device/massstorage/SBCMethods.c diff --git a/src/targets/sky9x/usb/device/massstorage/SBCMethods.h b/transmitter/src/targets/sky9x/usb/device/massstorage/SBCMethods.h similarity index 100% rename from src/targets/sky9x/usb/device/massstorage/SBCMethods.h rename to transmitter/src/targets/sky9x/usb/device/massstorage/SBCMethods.h diff --git a/src/targets/sky9x/vectors_sam3s.c b/transmitter/src/targets/sky9x/vectors_sam3s.c similarity index 100% rename from src/targets/sky9x/vectors_sam3s.c rename to transmitter/src/targets/sky9x/vectors_sam3s.c diff --git a/src/targets/stock/board_stock.cpp b/transmitter/src/targets/stock/board_stock.cpp similarity index 100% rename from src/targets/stock/board_stock.cpp rename to transmitter/src/targets/stock/board_stock.cpp diff --git a/src/targets/stock/board_stock.h b/transmitter/src/targets/stock/board_stock.h similarity index 100% rename from src/targets/stock/board_stock.h rename to transmitter/src/targets/stock/board_stock.h diff --git a/src/targets/stock/lcd_driver.cpp b/transmitter/src/targets/stock/lcd_driver.cpp similarity index 100% rename from src/targets/stock/lcd_driver.cpp rename to transmitter/src/targets/stock/lcd_driver.cpp diff --git a/src/targets/stock/voice.cpp b/transmitter/src/targets/stock/voice.cpp similarity index 100% rename from src/targets/stock/voice.cpp rename to transmitter/src/targets/stock/voice.cpp diff --git a/src/targets/stock/voice.h b/transmitter/src/targets/stock/voice.h similarity index 100% rename from src/targets/stock/voice.h rename to transmitter/src/targets/stock/voice.h diff --git a/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Device/ST/STM32F2xx/Include/stm32f2xx.h b/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Device/ST/STM32F2xx/Include/stm32f2xx.h similarity index 100% rename from src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Device/ST/STM32F2xx/Include/stm32f2xx.h rename to transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Device/ST/STM32F2xx/Include/stm32f2xx.h diff --git a/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Device/ST/STM32F2xx/Include/system_stm32f2xx.h b/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Device/ST/STM32F2xx/Include/system_stm32f2xx.h similarity index 100% rename from src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Device/ST/STM32F2xx/Include/system_stm32f2xx.h rename to transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Device/ST/STM32F2xx/Include/system_stm32f2xx.h diff --git a/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Device/ST/STM32F2xx/Source/Templates/gcc_ride7/startup_stm32f2xx.s b/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Device/ST/STM32F2xx/Source/Templates/gcc_ride7/startup_stm32f2xx.s similarity index 100% rename from src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Device/ST/STM32F2xx/Source/Templates/gcc_ride7/startup_stm32f2xx.s rename to transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Device/ST/STM32F2xx/Source/Templates/gcc_ride7/startup_stm32f2xx.s diff --git a/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Device/ST/STM32F2xx/Source/Templates/system_stm32f2xx.c b/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Device/ST/STM32F2xx/Source/Templates/system_stm32f2xx.c similarity index 100% rename from src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Device/ST/STM32F2xx/Source/Templates/system_stm32f2xx.c rename to transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Device/ST/STM32F2xx/Source/Templates/system_stm32f2xx.c diff --git a/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Include/arm_common_tables.h b/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Include/arm_common_tables.h similarity index 100% rename from src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Include/arm_common_tables.h rename to transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Include/arm_common_tables.h diff --git a/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Include/arm_math.h b/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Include/arm_math.h similarity index 100% rename from src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Include/arm_math.h rename to transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Include/arm_math.h diff --git a/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Include/core_cm0.h b/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Include/core_cm0.h similarity index 100% rename from src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Include/core_cm0.h rename to transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Include/core_cm0.h diff --git a/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Include/core_cm3.h b/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Include/core_cm3.h similarity index 100% rename from src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Include/core_cm3.h rename to transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Include/core_cm3.h diff --git a/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Include/core_cm4.h b/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Include/core_cm4.h similarity index 100% rename from src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Include/core_cm4.h rename to transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Include/core_cm4.h diff --git a/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Include/core_cm4_simd.h b/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Include/core_cm4_simd.h similarity index 100% rename from src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Include/core_cm4_simd.h rename to transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Include/core_cm4_simd.h diff --git a/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Include/core_cmFunc.h b/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Include/core_cmFunc.h similarity index 100% rename from src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Include/core_cmFunc.h rename to transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Include/core_cmFunc.h diff --git a/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Include/core_cmInstr.h b/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Include/core_cmInstr.h similarity index 100% rename from src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Include/core_cmInstr.h rename to transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Include/core_cmInstr.h diff --git a/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/misc.h b/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/misc.h similarity index 100% rename from src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/misc.h rename to transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/misc.h diff --git a/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_adc.h b/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_adc.h similarity index 100% rename from src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_adc.h rename to transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_adc.h diff --git a/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_can.h b/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_can.h similarity index 100% rename from src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_can.h rename to transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_can.h diff --git a/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_crc.h b/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_crc.h similarity index 100% rename from src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_crc.h rename to transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_crc.h diff --git a/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_cryp.h b/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_cryp.h similarity index 100% rename from src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_cryp.h rename to transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_cryp.h diff --git a/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_dac.h b/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_dac.h similarity index 100% rename from src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_dac.h rename to transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_dac.h diff --git a/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_dbgmcu.h b/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_dbgmcu.h similarity index 100% rename from src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_dbgmcu.h rename to transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_dbgmcu.h diff --git a/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_dcmi.h b/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_dcmi.h similarity index 100% rename from src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_dcmi.h rename to transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_dcmi.h diff --git a/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_dma.h b/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_dma.h similarity index 100% rename from src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_dma.h rename to transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_dma.h diff --git a/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_exti.h b/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_exti.h similarity index 100% rename from src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_exti.h rename to transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_exti.h diff --git a/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_flash.h b/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_flash.h similarity index 100% rename from src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_flash.h rename to transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_flash.h diff --git a/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_fsmc.h b/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_fsmc.h similarity index 100% rename from src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_fsmc.h rename to transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_fsmc.h diff --git a/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_gpio.h b/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_gpio.h similarity index 100% rename from src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_gpio.h rename to transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_gpio.h diff --git a/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_hash.h b/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_hash.h similarity index 100% rename from src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_hash.h rename to transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_hash.h diff --git a/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_i2c.h b/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_i2c.h similarity index 100% rename from src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_i2c.h rename to transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_i2c.h diff --git a/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_iwdg.h b/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_iwdg.h similarity index 100% rename from src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_iwdg.h rename to transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_iwdg.h diff --git a/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_pwr.h b/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_pwr.h similarity index 100% rename from src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_pwr.h rename to transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_pwr.h diff --git a/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_rcc.h b/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_rcc.h similarity index 100% rename from src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_rcc.h rename to transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_rcc.h diff --git a/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_rng.h b/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_rng.h similarity index 100% rename from src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_rng.h rename to transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_rng.h diff --git a/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_rtc.h b/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_rtc.h similarity index 100% rename from src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_rtc.h rename to transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_rtc.h diff --git a/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_sdio.h b/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_sdio.h similarity index 100% rename from src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_sdio.h rename to transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_sdio.h diff --git a/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_spi.h b/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_spi.h similarity index 100% rename from src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_spi.h rename to transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_spi.h diff --git a/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_syscfg.h b/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_syscfg.h similarity index 100% rename from src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_syscfg.h rename to transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_syscfg.h diff --git a/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_tim.h b/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_tim.h similarity index 100% rename from src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_tim.h rename to transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_tim.h diff --git a/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_usart.h b/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_usart.h similarity index 100% rename from src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_usart.h rename to transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_usart.h diff --git a/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_wwdg.h b/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_wwdg.h similarity index 100% rename from src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_wwdg.h rename to transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_wwdg.h diff --git a/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/misc.c b/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/misc.c similarity index 100% rename from src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/misc.c rename to transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/misc.c diff --git a/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_adc.c b/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_adc.c similarity index 100% rename from src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_adc.c rename to transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_adc.c diff --git a/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_can.c b/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_can.c similarity index 100% rename from src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_can.c rename to transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_can.c diff --git a/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_crc.c b/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_crc.c similarity index 100% rename from src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_crc.c rename to transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_crc.c diff --git a/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_cryp.c b/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_cryp.c similarity index 100% rename from src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_cryp.c rename to transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_cryp.c diff --git a/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_cryp_aes.c b/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_cryp_aes.c similarity index 100% rename from src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_cryp_aes.c rename to transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_cryp_aes.c diff --git a/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_cryp_des.c b/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_cryp_des.c similarity index 100% rename from src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_cryp_des.c rename to transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_cryp_des.c diff --git a/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_cryp_tdes.c b/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_cryp_tdes.c similarity index 100% rename from src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_cryp_tdes.c rename to transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_cryp_tdes.c diff --git a/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_dac.c b/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_dac.c similarity index 100% rename from src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_dac.c rename to transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_dac.c diff --git a/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_dbgmcu.c b/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_dbgmcu.c similarity index 100% rename from src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_dbgmcu.c rename to transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_dbgmcu.c diff --git a/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_dcmi.c b/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_dcmi.c similarity index 100% rename from src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_dcmi.c rename to transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_dcmi.c diff --git a/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_dma.c b/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_dma.c similarity index 100% rename from src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_dma.c rename to transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_dma.c diff --git a/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_exti.c b/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_exti.c similarity index 100% rename from src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_exti.c rename to transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_exti.c diff --git a/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_flash.c b/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_flash.c similarity index 100% rename from src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_flash.c rename to transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_flash.c diff --git a/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_fsmc.c b/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_fsmc.c similarity index 100% rename from src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_fsmc.c rename to transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_fsmc.c diff --git a/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_gpio.c b/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_gpio.c similarity index 100% rename from src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_gpio.c rename to transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_gpio.c diff --git a/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_hash.c b/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_hash.c similarity index 100% rename from src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_hash.c rename to transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_hash.c diff --git a/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_hash_md5.c b/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_hash_md5.c similarity index 100% rename from src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_hash_md5.c rename to transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_hash_md5.c diff --git a/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_hash_sha1.c b/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_hash_sha1.c similarity index 100% rename from src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_hash_sha1.c rename to transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_hash_sha1.c diff --git a/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_i2c.c b/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_i2c.c similarity index 100% rename from src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_i2c.c rename to transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_i2c.c diff --git a/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_iwdg.c b/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_iwdg.c similarity index 100% rename from src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_iwdg.c rename to transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_iwdg.c diff --git a/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_pwr.c b/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_pwr.c similarity index 100% rename from src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_pwr.c rename to transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_pwr.c diff --git a/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_rcc.c b/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_rcc.c similarity index 100% rename from src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_rcc.c rename to transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_rcc.c diff --git a/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_rng.c b/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_rng.c similarity index 100% rename from src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_rng.c rename to transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_rng.c diff --git a/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_rtc.c b/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_rtc.c similarity index 100% rename from src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_rtc.c rename to transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_rtc.c diff --git a/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_sdio.c b/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_sdio.c similarity index 100% rename from src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_sdio.c rename to transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_sdio.c diff --git a/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_spi.c b/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_spi.c similarity index 100% rename from src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_spi.c rename to transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_spi.c diff --git a/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_syscfg.c b/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_syscfg.c similarity index 100% rename from src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_syscfg.c rename to transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_syscfg.c diff --git a/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_tim.c b/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_tim.c similarity index 100% rename from src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_tim.c rename to transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_tim.c diff --git a/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_usart.c b/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_usart.c similarity index 100% rename from src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_usart.c rename to transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_usart.c diff --git a/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_wwdg.c b/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_wwdg.c similarity index 100% rename from src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_wwdg.c rename to transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_wwdg.c diff --git a/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/audio/inc/usbd_audio_core.h b/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/audio/inc/usbd_audio_core.h similarity index 100% rename from src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/audio/inc/usbd_audio_core.h rename to transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/audio/inc/usbd_audio_core.h diff --git a/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/audio/inc/usbd_audio_out_if.h b/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/audio/inc/usbd_audio_out_if.h similarity index 100% rename from src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/audio/inc/usbd_audio_out_if.h rename to transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/audio/inc/usbd_audio_out_if.h diff --git a/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/audio/src/usbd_audio_core.c b/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/audio/src/usbd_audio_core.c similarity index 100% rename from src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/audio/src/usbd_audio_core.c rename to transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/audio/src/usbd_audio_core.c diff --git a/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/audio/src/usbd_audio_out_if.c b/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/audio/src/usbd_audio_out_if.c similarity index 100% rename from src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/audio/src/usbd_audio_out_if.c rename to transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/audio/src/usbd_audio_out_if.c diff --git a/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/cdc/inc/usbd_cdc_core.h b/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/cdc/inc/usbd_cdc_core.h similarity index 100% rename from src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/cdc/inc/usbd_cdc_core.h rename to transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/cdc/inc/usbd_cdc_core.h diff --git a/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/cdc/inc/usbd_cdc_if_template.h b/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/cdc/inc/usbd_cdc_if_template.h similarity index 100% rename from src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/cdc/inc/usbd_cdc_if_template.h rename to transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/cdc/inc/usbd_cdc_if_template.h diff --git a/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/cdc/src/usbd_cdc_core.c b/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/cdc/src/usbd_cdc_core.c similarity index 100% rename from src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/cdc/src/usbd_cdc_core.c rename to transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/cdc/src/usbd_cdc_core.c diff --git a/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/cdc/src/usbd_cdc_if_template.c b/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/cdc/src/usbd_cdc_if_template.c similarity index 100% rename from src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/cdc/src/usbd_cdc_if_template.c rename to transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/cdc/src/usbd_cdc_if_template.c diff --git a/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_dfu_core.h b/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_dfu_core.h similarity index 100% rename from src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_dfu_core.h rename to transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_dfu_core.h diff --git a/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_dfu_mal.h b/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_dfu_mal.h similarity index 100% rename from src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_dfu_mal.h rename to transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_dfu_mal.h diff --git a/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_flash_if.h b/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_flash_if.h similarity index 100% rename from src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_flash_if.h rename to transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_flash_if.h diff --git a/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_mem_if_template.h b/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_mem_if_template.h similarity index 100% rename from src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_mem_if_template.h rename to transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_mem_if_template.h diff --git a/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_otp_if.h b/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_otp_if.h similarity index 100% rename from src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_otp_if.h rename to transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_otp_if.h diff --git a/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_dfu_core.c b/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_dfu_core.c similarity index 100% rename from src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_dfu_core.c rename to transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_dfu_core.c diff --git a/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_dfu_mal.c b/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_dfu_mal.c similarity index 100% rename from src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_dfu_mal.c rename to transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_dfu_mal.c diff --git a/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_flash_if.c b/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_flash_if.c similarity index 100% rename from src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_flash_if.c rename to transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_flash_if.c diff --git a/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_mem_if_template.c b/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_mem_if_template.c similarity index 100% rename from src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_mem_if_template.c rename to transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_mem_if_template.c diff --git a/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_otp_if.c b/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_otp_if.c similarity index 100% rename from src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_otp_if.c rename to transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_otp_if.c diff --git a/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/hid/inc/usbd_hid_core.h b/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/hid/inc/usbd_hid_core.h similarity index 100% rename from src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/hid/inc/usbd_hid_core.h rename to transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/hid/inc/usbd_hid_core.h diff --git a/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/hid/src/usbd_hid_core.c b/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/hid/src/usbd_hid_core.c similarity index 100% rename from src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/hid/src/usbd_hid_core.c rename to transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/hid/src/usbd_hid_core.c diff --git a/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_bot.h b/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_bot.h similarity index 100% rename from src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_bot.h rename to transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_bot.h diff --git a/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_core.h b/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_core.h similarity index 100% rename from src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_core.h rename to transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_core.h diff --git a/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_data.h b/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_data.h similarity index 100% rename from src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_data.h rename to transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_data.h diff --git a/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_mem.h b/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_mem.h similarity index 100% rename from src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_mem.h rename to transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_mem.h diff --git a/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_scsi.h b/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_scsi.h similarity index 100% rename from src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_scsi.h rename to transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_scsi.h diff --git a/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_bot.c b/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_bot.c similarity index 100% rename from src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_bot.c rename to transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_bot.c diff --git a/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_core.c b/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_core.c similarity index 100% rename from src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_core.c rename to transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_core.c diff --git a/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_data.c b/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_data.c similarity index 100% rename from src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_data.c rename to transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_data.c diff --git a/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_scsi.c b/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_scsi.c similarity index 100% rename from src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_scsi.c rename to transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_scsi.c diff --git a/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_conf_template.h b/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_conf_template.h similarity index 100% rename from src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_conf_template.h rename to transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_conf_template.h diff --git a/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_core.h b/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_core.h similarity index 100% rename from src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_core.h rename to transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_core.h diff --git a/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_def.h b/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_def.h similarity index 100% rename from src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_def.h rename to transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_def.h diff --git a/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_ioreq.h b/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_ioreq.h similarity index 100% rename from src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_ioreq.h rename to transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_ioreq.h diff --git a/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_req.h b/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_req.h similarity index 100% rename from src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_req.h rename to transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_req.h diff --git a/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_usr.h b/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_usr.h similarity index 100% rename from src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_usr.h rename to transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_usr.h diff --git a/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/src/usbd_core.c b/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/src/usbd_core.c similarity index 100% rename from src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/src/usbd_core.c rename to transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/src/usbd_core.c diff --git a/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/src/usbd_ioreq.c b/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/src/usbd_ioreq.c similarity index 100% rename from src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/src/usbd_ioreq.c rename to transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/src/usbd_ioreq.c diff --git a/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/src/usbd_req.c b/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/src/usbd_req.c similarity index 100% rename from src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/src/usbd_req.c rename to transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/src/usbd_req.c diff --git a/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Release_Notes.html b/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Release_Notes.html similarity index 100% rename from src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Release_Notes.html rename to transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Release_Notes.html diff --git a/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/Release_Notes.html b/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/Release_Notes.html similarity index 100% rename from src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/Release_Notes.html rename to transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/Release_Notes.html diff --git a/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_bsp.h b/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_bsp.h similarity index 100% rename from src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_bsp.h rename to transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_bsp.h diff --git a/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_conf_template.h b/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_conf_template.h similarity index 100% rename from src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_conf_template.h rename to transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_conf_template.h diff --git a/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_core.h b/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_core.h similarity index 100% rename from src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_core.h rename to transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_core.h diff --git a/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_dcd.h b/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_dcd.h similarity index 100% rename from src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_dcd.h rename to transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_dcd.h diff --git a/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_dcd_int.h b/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_dcd_int.h similarity index 100% rename from src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_dcd_int.h rename to transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_dcd_int.h diff --git a/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_defines.h b/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_defines.h similarity index 100% rename from src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_defines.h rename to transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_defines.h diff --git a/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_hcd.h b/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_hcd.h similarity index 100% rename from src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_hcd.h rename to transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_hcd.h diff --git a/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_hcd_int.h b/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_hcd_int.h similarity index 100% rename from src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_hcd_int.h rename to transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_hcd_int.h diff --git a/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_otg.h b/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_otg.h similarity index 100% rename from src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_otg.h rename to transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_otg.h diff --git a/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_regs.h b/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_regs.h similarity index 100% rename from src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_regs.h rename to transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_regs.h diff --git a/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/src/usb_core.c b/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/src/usb_core.c similarity index 100% rename from src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/src/usb_core.c rename to transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/src/usb_core.c diff --git a/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/src/usb_dcd.c b/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/src/usb_dcd.c similarity index 100% rename from src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/src/usb_dcd.c rename to transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/src/usb_dcd.c diff --git a/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/src/usb_dcd_int.c b/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/src/usb_dcd_int.c similarity index 100% rename from src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/src/usb_dcd_int.c rename to transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/src/usb_dcd_int.c diff --git a/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/src/usb_hcd.c b/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/src/usb_hcd.c similarity index 100% rename from src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/src/usb_hcd.c rename to transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/src/usb_hcd.c diff --git a/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/src/usb_hcd_int.c b/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/src/usb_hcd_int.c similarity index 100% rename from src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/src/usb_hcd_int.c rename to transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/src/usb_hcd_int.c diff --git a/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/src/usb_otg.c b/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/src/usb_otg.c similarity index 100% rename from src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/src/usb_otg.c rename to transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/src/usb_otg.c diff --git a/src/targets/taranis/adc_driver.cpp b/transmitter/src/targets/taranis/adc_driver.cpp similarity index 100% rename from src/targets/taranis/adc_driver.cpp rename to transmitter/src/targets/taranis/adc_driver.cpp diff --git a/src/targets/taranis/aspi.cpp b/transmitter/src/targets/taranis/aspi.cpp similarity index 100% rename from src/targets/taranis/aspi.cpp rename to transmitter/src/targets/taranis/aspi.cpp diff --git a/src/targets/taranis/aspi.h b/transmitter/src/targets/taranis/aspi.h similarity index 100% rename from src/targets/taranis/aspi.h rename to transmitter/src/targets/taranis/aspi.h diff --git a/src/targets/taranis/audio_driver.cpp b/transmitter/src/targets/taranis/audio_driver.cpp similarity index 100% rename from src/targets/taranis/audio_driver.cpp rename to transmitter/src/targets/taranis/audio_driver.cpp diff --git a/src/targets/taranis/audio_driver.h b/transmitter/src/targets/taranis/audio_driver.h similarity index 100% rename from src/targets/taranis/audio_driver.h rename to transmitter/src/targets/taranis/audio_driver.h diff --git a/src/targets/taranis/board_taranis.cpp b/transmitter/src/targets/taranis/board_taranis.cpp similarity index 100% rename from src/targets/taranis/board_taranis.cpp rename to transmitter/src/targets/taranis/board_taranis.cpp diff --git a/src/targets/taranis/board_taranis.h b/transmitter/src/targets/taranis/board_taranis.h similarity index 100% rename from src/targets/taranis/board_taranis.h rename to transmitter/src/targets/taranis/board_taranis.h diff --git a/src/targets/taranis/delays.cpp b/transmitter/src/targets/taranis/delays.cpp similarity index 100% rename from src/targets/taranis/delays.cpp rename to transmitter/src/targets/taranis/delays.cpp diff --git a/src/targets/taranis/diskio.cpp b/transmitter/src/targets/taranis/diskio.cpp similarity index 100% rename from src/targets/taranis/diskio.cpp rename to transmitter/src/targets/taranis/diskio.cpp diff --git a/src/targets/taranis/hal.h b/transmitter/src/targets/taranis/hal.h similarity index 100% rename from src/targets/taranis/hal.h rename to transmitter/src/targets/taranis/hal.h diff --git a/src/targets/taranis/i2c.c b/transmitter/src/targets/taranis/i2c.c similarity index 100% rename from src/targets/taranis/i2c.c rename to transmitter/src/targets/taranis/i2c.c diff --git a/src/targets/taranis/i2c.h b/transmitter/src/targets/taranis/i2c.h similarity index 100% rename from src/targets/taranis/i2c.h rename to transmitter/src/targets/taranis/i2c.h diff --git a/src/targets/taranis/keys_driver.cpp b/transmitter/src/targets/taranis/keys_driver.cpp similarity index 100% rename from src/targets/taranis/keys_driver.cpp rename to transmitter/src/targets/taranis/keys_driver.cpp diff --git a/src/targets/taranis/lcd_driver.cpp b/transmitter/src/targets/taranis/lcd_driver.cpp similarity index 100% rename from src/targets/taranis/lcd_driver.cpp rename to transmitter/src/targets/taranis/lcd_driver.cpp diff --git a/src/targets/taranis/pulses_driver.cpp b/transmitter/src/targets/taranis/pulses_driver.cpp similarity index 100% rename from src/targets/taranis/pulses_driver.cpp rename to transmitter/src/targets/taranis/pulses_driver.cpp diff --git a/src/targets/taranis/pwr_driver.cpp b/transmitter/src/targets/taranis/pwr_driver.cpp similarity index 100% rename from src/targets/taranis/pwr_driver.cpp rename to transmitter/src/targets/taranis/pwr_driver.cpp diff --git a/src/targets/taranis/rtc_driver.cpp b/transmitter/src/targets/taranis/rtc_driver.cpp similarity index 100% rename from src/targets/taranis/rtc_driver.cpp rename to transmitter/src/targets/taranis/rtc_driver.cpp diff --git a/src/targets/taranis/sport_driver.cpp b/transmitter/src/targets/taranis/sport_driver.cpp similarity index 100% rename from src/targets/taranis/sport_driver.cpp rename to transmitter/src/targets/taranis/sport_driver.cpp diff --git a/src/targets/taranis/stm32_flash.ld b/transmitter/src/targets/taranis/stm32_flash.ld similarity index 100% rename from src/targets/taranis/stm32_flash.ld rename to transmitter/src/targets/taranis/stm32_flash.ld diff --git a/src/targets/taranis/trainer_driver.cpp b/transmitter/src/targets/taranis/trainer_driver.cpp similarity index 100% rename from src/targets/taranis/trainer_driver.cpp rename to transmitter/src/targets/taranis/trainer_driver.cpp diff --git a/src/targets/taranis/uart_driver.cpp b/transmitter/src/targets/taranis/uart_driver.cpp similarity index 100% rename from src/targets/taranis/uart_driver.cpp rename to transmitter/src/targets/taranis/uart_driver.cpp diff --git a/src/targets/taranis/usb_bsp.c b/transmitter/src/targets/taranis/usb_bsp.c similarity index 100% rename from src/targets/taranis/usb_bsp.c rename to transmitter/src/targets/taranis/usb_bsp.c diff --git a/src/targets/taranis/usb_conf.h b/transmitter/src/targets/taranis/usb_conf.h similarity index 100% rename from src/targets/taranis/usb_conf.h rename to transmitter/src/targets/taranis/usb_conf.h diff --git a/src/targets/taranis/usbd_conf.h b/transmitter/src/targets/taranis/usbd_conf.h similarity index 100% rename from src/targets/taranis/usbd_conf.h rename to transmitter/src/targets/taranis/usbd_conf.h diff --git a/src/targets/taranis/usbd_desc.c b/transmitter/src/targets/taranis/usbd_desc.c similarity index 100% rename from src/targets/taranis/usbd_desc.c rename to transmitter/src/targets/taranis/usbd_desc.c diff --git a/src/targets/taranis/usbd_desc.h b/transmitter/src/targets/taranis/usbd_desc.h similarity index 100% rename from src/targets/taranis/usbd_desc.h rename to transmitter/src/targets/taranis/usbd_desc.h diff --git a/src/targets/taranis/usbd_storage_msd.cpp b/transmitter/src/targets/taranis/usbd_storage_msd.cpp similarity index 100% rename from src/targets/taranis/usbd_storage_msd.cpp rename to transmitter/src/targets/taranis/usbd_storage_msd.cpp diff --git a/src/targets/taranis/usbd_usr.cpp b/transmitter/src/targets/taranis/usbd_usr.cpp similarity index 100% rename from src/targets/taranis/usbd_usr.cpp rename to transmitter/src/targets/taranis/usbd_usr.cpp diff --git a/src/telemetry/ardupilot.cpp b/transmitter/src/telemetry/ardupilot.cpp similarity index 100% rename from src/telemetry/ardupilot.cpp rename to transmitter/src/telemetry/ardupilot.cpp diff --git a/src/telemetry/ardupilot.h b/transmitter/src/telemetry/ardupilot.h similarity index 100% rename from src/telemetry/ardupilot.h rename to transmitter/src/telemetry/ardupilot.h diff --git a/src/telemetry/frsky.cpp b/transmitter/src/telemetry/frsky.cpp similarity index 100% rename from src/telemetry/frsky.cpp rename to transmitter/src/telemetry/frsky.cpp diff --git a/src/telemetry/frsky.h b/transmitter/src/telemetry/frsky.h similarity index 100% rename from src/telemetry/frsky.h rename to transmitter/src/telemetry/frsky.h diff --git a/src/telemetry/frsky_sport.cpp b/transmitter/src/telemetry/frsky_sport.cpp similarity index 100% rename from src/telemetry/frsky_sport.cpp rename to transmitter/src/telemetry/frsky_sport.cpp diff --git a/src/telemetry/frsky_sport.h b/transmitter/src/telemetry/frsky_sport.h similarity index 100% rename from src/telemetry/frsky_sport.h rename to transmitter/src/telemetry/frsky_sport.h diff --git a/src/telemetry/jeti.cpp b/transmitter/src/telemetry/jeti.cpp similarity index 100% rename from src/telemetry/jeti.cpp rename to transmitter/src/telemetry/jeti.cpp diff --git a/src/telemetry/jeti.h b/transmitter/src/telemetry/jeti.h similarity index 100% rename from src/telemetry/jeti.h rename to transmitter/src/telemetry/jeti.h diff --git a/src/telemetry/mavlink.cpp b/transmitter/src/telemetry/mavlink.cpp similarity index 100% rename from src/telemetry/mavlink.cpp rename to transmitter/src/telemetry/mavlink.cpp diff --git a/src/telemetry/mavlink.h b/transmitter/src/telemetry/mavlink.h similarity index 100% rename from src/telemetry/mavlink.h rename to transmitter/src/telemetry/mavlink.h diff --git a/src/telemetry/nmea.cpp b/transmitter/src/telemetry/nmea.cpp similarity index 100% rename from src/telemetry/nmea.cpp rename to transmitter/src/telemetry/nmea.cpp diff --git a/src/telemetry/nmea.h b/transmitter/src/telemetry/nmea.h similarity index 100% rename from src/telemetry/nmea.h rename to transmitter/src/telemetry/nmea.h diff --git a/src/templates.cpp b/transmitter/src/templates.cpp similarity index 100% rename from src/templates.cpp rename to transmitter/src/templates.cpp diff --git a/src/templates.h b/transmitter/src/templates.h similarity index 100% rename from src/templates.h rename to transmitter/src/templates.h diff --git a/src/translations.cpp b/transmitter/src/translations.cpp similarity index 100% rename from src/translations.cpp rename to transmitter/src/translations.cpp diff --git a/src/translations.h b/transmitter/src/translations.h similarity index 100% rename from src/translations.h rename to transmitter/src/translations.h diff --git a/src/translations/cz.h b/transmitter/src/translations/cz.h similarity index 100% rename from src/translations/cz.h rename to transmitter/src/translations/cz.h diff --git a/src/translations/cz.h.txt b/transmitter/src/translations/cz.h.txt similarity index 100% rename from src/translations/cz.h.txt rename to transmitter/src/translations/cz.h.txt diff --git a/src/translations/de.h b/transmitter/src/translations/de.h similarity index 100% rename from src/translations/de.h rename to transmitter/src/translations/de.h diff --git a/src/translations/de.h.txt b/transmitter/src/translations/de.h.txt similarity index 100% rename from src/translations/de.h.txt rename to transmitter/src/translations/de.h.txt diff --git a/src/translations/en.h b/transmitter/src/translations/en.h similarity index 100% rename from src/translations/en.h rename to transmitter/src/translations/en.h diff --git a/src/translations/es.h b/transmitter/src/translations/es.h similarity index 100% rename from src/translations/es.h rename to transmitter/src/translations/es.h diff --git a/src/translations/es.h.txt b/transmitter/src/translations/es.h.txt similarity index 100% rename from src/translations/es.h.txt rename to transmitter/src/translations/es.h.txt diff --git a/src/translations/fr.h b/transmitter/src/translations/fr.h similarity index 100% rename from src/translations/fr.h rename to transmitter/src/translations/fr.h diff --git a/src/translations/fr.h.txt b/transmitter/src/translations/fr.h.txt similarity index 100% rename from src/translations/fr.h.txt rename to transmitter/src/translations/fr.h.txt diff --git a/src/translations/it.h b/transmitter/src/translations/it.h similarity index 100% rename from src/translations/it.h rename to transmitter/src/translations/it.h diff --git a/src/translations/it.h.txt b/transmitter/src/translations/it.h.txt similarity index 100% rename from src/translations/it.h.txt rename to transmitter/src/translations/it.h.txt diff --git a/src/translations/pl.h b/transmitter/src/translations/pl.h similarity index 100% rename from src/translations/pl.h rename to transmitter/src/translations/pl.h diff --git a/src/translations/pl.h.txt b/transmitter/src/translations/pl.h.txt similarity index 100% rename from src/translations/pl.h.txt rename to transmitter/src/translations/pl.h.txt diff --git a/src/translations/pt.h b/transmitter/src/translations/pt.h similarity index 100% rename from src/translations/pt.h rename to transmitter/src/translations/pt.h diff --git a/src/translations/pt.h.txt b/transmitter/src/translations/pt.h.txt similarity index 100% rename from src/translations/pt.h.txt rename to transmitter/src/translations/pt.h.txt diff --git a/src/translations/se.h b/transmitter/src/translations/se.h similarity index 100% rename from src/translations/se.h rename to transmitter/src/translations/se.h diff --git a/src/translations/se.h.txt b/transmitter/src/translations/se.h.txt similarity index 100% rename from src/translations/se.h.txt rename to transmitter/src/translations/se.h.txt diff --git a/src/translations/tts_cz.cpp b/transmitter/src/translations/tts_cz.cpp similarity index 100% rename from src/translations/tts_cz.cpp rename to transmitter/src/translations/tts_cz.cpp diff --git a/src/translations/tts_de.cpp b/transmitter/src/translations/tts_de.cpp similarity index 100% rename from src/translations/tts_de.cpp rename to transmitter/src/translations/tts_de.cpp diff --git a/src/translations/tts_en.cpp b/transmitter/src/translations/tts_en.cpp similarity index 100% rename from src/translations/tts_en.cpp rename to transmitter/src/translations/tts_en.cpp diff --git a/src/translations/tts_es.cpp b/transmitter/src/translations/tts_es.cpp similarity index 100% rename from src/translations/tts_es.cpp rename to transmitter/src/translations/tts_es.cpp diff --git a/src/translations/tts_fr.cpp b/transmitter/src/translations/tts_fr.cpp similarity index 100% rename from src/translations/tts_fr.cpp rename to transmitter/src/translations/tts_fr.cpp diff --git a/src/translations/tts_it.cpp b/transmitter/src/translations/tts_it.cpp similarity index 100% rename from src/translations/tts_it.cpp rename to transmitter/src/translations/tts_it.cpp diff --git a/src/translations/tts_pl.cpp b/transmitter/src/translations/tts_pl.cpp similarity index 100% rename from src/translations/tts_pl.cpp rename to transmitter/src/translations/tts_pl.cpp diff --git a/src/translations/tts_pt.cpp b/transmitter/src/translations/tts_pt.cpp similarity index 100% rename from src/translations/tts_pt.cpp rename to transmitter/src/translations/tts_pt.cpp diff --git a/src/translations/tts_se.cpp b/transmitter/src/translations/tts_se.cpp similarity index 100% rename from src/translations/tts_se.cpp rename to transmitter/src/translations/tts_se.cpp diff --git a/src/translations/tts_sk.cpp b/transmitter/src/translations/tts_sk.cpp similarity index 100% rename from src/translations/tts_sk.cpp rename to transmitter/src/translations/tts_sk.cpp diff --git a/util/compile.py b/transmitter/util/compile.py similarity index 100% rename from util/compile.py rename to transmitter/util/compile.py diff --git a/util/dsm2.py b/transmitter/util/dsm2.py similarity index 100% rename from util/dsm2.py rename to transmitter/util/dsm2.py diff --git a/util/img2lbm.py b/transmitter/util/img2lbm.py similarity index 100% rename from util/img2lbm.py rename to transmitter/util/img2lbm.py diff --git a/util/maxvolume.cmd b/transmitter/util/maxvolume.cmd similarity index 100% rename from util/maxvolume.cmd rename to transmitter/util/maxvolume.cmd diff --git a/util/parse.py b/transmitter/util/parse.py similarity index 100% rename from util/parse.py rename to transmitter/util/parse.py diff --git a/util/translate.py b/transmitter/util/translate.py similarity index 100% rename from util/translate.py rename to transmitter/util/translate.py diff --git a/util/tts.py b/transmitter/util/tts.py similarity index 100% rename from util/tts.py rename to transmitter/util/tts.py From 772d1ca4c897d1890d12231f3e127cfa6e93fad9 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Mon, 2 Dec 2013 07:13:57 +0100 Subject: [PATCH 004/308] Directory transmitter renamed to radio --- {transmitter => radio}/releasenotes-9x.txt | 0 {transmitter => radio}/releasenotes-taranis.txt | 0 {transmitter => radio}/src/CoOS/kernel/CoOS.h | 0 {transmitter => radio}/src/CoOS/kernel/OsConfig.h | 0 {transmitter => radio}/src/CoOS/kernel/OsCore.h | 0 {transmitter => radio}/src/CoOS/kernel/OsError.h | 0 {transmitter => radio}/src/CoOS/kernel/OsEvent.h | 0 {transmitter => radio}/src/CoOS/kernel/OsFlag.h | 0 .../src/CoOS/kernel/OsKernelHeap.h | 0 {transmitter => radio}/src/CoOS/kernel/OsMM.h | 0 {transmitter => radio}/src/CoOS/kernel/OsMutex.h | 0 {transmitter => radio}/src/CoOS/kernel/OsQueue.h | 0 .../src/CoOS/kernel/OsServiceReq.h | 0 {transmitter => radio}/src/CoOS/kernel/OsTask.h | 0 {transmitter => radio}/src/CoOS/kernel/OsTime.h | 0 {transmitter => radio}/src/CoOS/kernel/OsTimer.h | 0 {transmitter => radio}/src/CoOS/kernel/coocox.h | 0 {transmitter => radio}/src/CoOS/kernel/core.c | 0 {transmitter => radio}/src/CoOS/kernel/event.c | 0 {transmitter => radio}/src/CoOS/kernel/flag.c | 0 {transmitter => radio}/src/CoOS/kernel/hook.c | 0 {transmitter => radio}/src/CoOS/kernel/kernelHeap.c | 0 {transmitter => radio}/src/CoOS/kernel/mbox.c | 0 {transmitter => radio}/src/CoOS/kernel/mm.c | 0 {transmitter => radio}/src/CoOS/kernel/mutex.c | 0 {transmitter => radio}/src/CoOS/kernel/queue.c | 0 {transmitter => radio}/src/CoOS/kernel/sem.c | 0 {transmitter => radio}/src/CoOS/kernel/serviceReq.c | 0 {transmitter => radio}/src/CoOS/kernel/task.c | 0 {transmitter => radio}/src/CoOS/kernel/time.c | 0 {transmitter => radio}/src/CoOS/kernel/timer.c | 0 {transmitter => radio}/src/CoOS/kernel/utility.c | 0 {transmitter => radio}/src/CoOS/kernel/utility.h | 0 {transmitter => radio}/src/CoOS/portable/GCC/port.c | 0 {transmitter => radio}/src/CoOS/portable/OsArch.h | 0 {transmitter => radio}/src/CoOS/portable/arch.c | 0 {transmitter => radio}/src/FatFs/00readme.txt | 0 {transmitter => radio}/src/FatFs/diskio.h | 0 {transmitter => radio}/src/FatFs/fattime.c | 0 {transmitter => radio}/src/FatFs/ff.c | 0 {transmitter => radio}/src/FatFs/ff.h | 0 {transmitter => radio}/src/FatFs/ffconf.h | 0 {transmitter => radio}/src/FatFs/integer.h | 0 {transmitter => radio}/src/FatFs/option/cc932.c | 0 {transmitter => radio}/src/FatFs/option/cc936.c | 0 {transmitter => radio}/src/FatFs/option/cc949.c | 0 {transmitter => radio}/src/FatFs/option/cc950.c | 0 {transmitter => radio}/src/FatFs/option/ccsbcs.c | 0 {transmitter => radio}/src/FatFs/option/syscall.c | 0 {transmitter => radio}/src/FatFs/option/unicode.c | 0 {transmitter => radio}/src/GCS_MAVLink/.gitignore | 0 {transmitter => radio}/src/GCS_MAVLink/COPYING | 0 {transmitter => radio}/src/GCS_MAVLink/README | 0 .../include_v1.0/ardupilotmega/ardupilotmega.h | 0 .../include_v1.0/ardupilotmega/mavlink.h | 0 .../include_v1.0/ardupilotmega/mavlink_msg_ahrs.h | 0 .../include_v1.0/ardupilotmega/mavlink_msg_ap_adc.h | 0 .../include_v1.0/ardupilotmega/mavlink_msg_data16.h | 0 .../include_v1.0/ardupilotmega/mavlink_msg_data32.h | 0 .../include_v1.0/ardupilotmega/mavlink_msg_data64.h | 0 .../include_v1.0/ardupilotmega/mavlink_msg_data96.h | 0 .../ardupilotmega/mavlink_msg_digicam_configure.h | 0 .../ardupilotmega/mavlink_msg_digicam_control.h | 0 .../ardupilotmega/mavlink_msg_fence_fetch_point.h | 0 .../ardupilotmega/mavlink_msg_fence_point.h | 0 .../ardupilotmega/mavlink_msg_fence_status.h | 0 .../ardupilotmega/mavlink_msg_hwstatus.h | 0 .../ardupilotmega/mavlink_msg_limits_status.h | 0 .../ardupilotmega/mavlink_msg_meminfo.h | 0 .../ardupilotmega/mavlink_msg_mount_configure.h | 0 .../ardupilotmega/mavlink_msg_mount_control.h | 0 .../ardupilotmega/mavlink_msg_mount_status.h | 0 .../include_v1.0/ardupilotmega/mavlink_msg_radio.h | 0 .../ardupilotmega/mavlink_msg_rangefinder.h | 0 .../ardupilotmega/mavlink_msg_sensor_offsets.h | 0 .../ardupilotmega/mavlink_msg_set_mag_offsets.h | 0 .../ardupilotmega/mavlink_msg_simstate.h | 0 .../include_v1.0/ardupilotmega/mavlink_msg_wind.h | 0 .../include_v1.0/ardupilotmega/testsuite.h | 0 .../include_v1.0/ardupilotmega/version.h | 0 .../src/GCS_MAVLink/include_v1.0/checksum.h | 0 .../src/GCS_MAVLink/include_v1.0/common/common.h | 0 .../src/GCS_MAVLink/include_v1.0/common/mavlink.h | 0 .../include_v1.0/common/mavlink_msg_attitude.h | 0 .../common/mavlink_msg_attitude_quaternion.h | 0 .../include_v1.0/common/mavlink_msg_auth_key.h | 0 .../common/mavlink_msg_battery_status.h | 0 .../common/mavlink_msg_change_operator_control.h | 0 .../mavlink_msg_change_operator_control_ack.h | 0 .../include_v1.0/common/mavlink_msg_command_ack.h | 0 .../include_v1.0/common/mavlink_msg_command_long.h | 0 .../include_v1.0/common/mavlink_msg_data_stream.h | 0 .../include_v1.0/common/mavlink_msg_debug.h | 0 .../include_v1.0/common/mavlink_msg_debug_vect.h | 0 .../common/mavlink_msg_file_transfer_dir_list.h | 0 .../common/mavlink_msg_file_transfer_res.h | 0 .../common/mavlink_msg_file_transfer_start.h | 0 .../common/mavlink_msg_global_position_int.h | 0 .../mavlink_msg_global_position_setpoint_int.h | 0 .../mavlink_msg_global_vision_position_estimate.h | 0 .../common/mavlink_msg_gps_global_origin.h | 0 .../include_v1.0/common/mavlink_msg_gps_raw_int.h | 0 .../include_v1.0/common/mavlink_msg_gps_status.h | 0 .../include_v1.0/common/mavlink_msg_heartbeat.h | 0 .../include_v1.0/common/mavlink_msg_highres_imu.h | 0 .../include_v1.0/common/mavlink_msg_hil_controls.h | 0 .../include_v1.0/common/mavlink_msg_hil_gps.h | 0 .../common/mavlink_msg_hil_optical_flow.h | 0 .../common/mavlink_msg_hil_rc_inputs_raw.h | 0 .../include_v1.0/common/mavlink_msg_hil_sensor.h | 0 .../include_v1.0/common/mavlink_msg_hil_state.h | 0 .../common/mavlink_msg_hil_state_quaternion.h | 0 .../common/mavlink_msg_local_position_ned.h | 0 ...nk_msg_local_position_ned_system_global_offset.h | 0 .../common/mavlink_msg_local_position_setpoint.h | 0 .../common/mavlink_msg_manual_control.h | 0 .../common/mavlink_msg_manual_setpoint.h | 0 .../include_v1.0/common/mavlink_msg_memory_vect.h | 0 .../include_v1.0/common/mavlink_msg_mission_ack.h | 0 .../common/mavlink_msg_mission_clear_all.h | 0 .../include_v1.0/common/mavlink_msg_mission_count.h | 0 .../common/mavlink_msg_mission_current.h | 0 .../include_v1.0/common/mavlink_msg_mission_item.h | 0 .../common/mavlink_msg_mission_item_reached.h | 0 .../common/mavlink_msg_mission_request.h | 0 .../common/mavlink_msg_mission_request_list.h | 0 .../mavlink_msg_mission_request_partial_list.h | 0 .../common/mavlink_msg_mission_set_current.h | 0 .../common/mavlink_msg_mission_write_partial_list.h | 0 .../common/mavlink_msg_named_value_float.h | 0 .../common/mavlink_msg_named_value_int.h | 0 .../common/mavlink_msg_nav_controller_output.h | 0 .../common/mavlink_msg_omnidirectional_flow.h | 0 .../include_v1.0/common/mavlink_msg_optical_flow.h | 0 .../common/mavlink_msg_param_request_list.h | 0 .../common/mavlink_msg_param_request_read.h | 0 .../include_v1.0/common/mavlink_msg_param_set.h | 0 .../include_v1.0/common/mavlink_msg_param_value.h | 0 .../include_v1.0/common/mavlink_msg_ping.h | 0 .../include_v1.0/common/mavlink_msg_radio_status.h | 0 .../include_v1.0/common/mavlink_msg_raw_imu.h | 0 .../include_v1.0/common/mavlink_msg_raw_pressure.h | 0 .../common/mavlink_msg_rc_channels_override.h | 0 .../common/mavlink_msg_rc_channels_raw.h | 0 .../common/mavlink_msg_rc_channels_scaled.h | 0 .../common/mavlink_msg_request_data_stream.h | 0 ...vlink_msg_roll_pitch_yaw_rates_thrust_setpoint.h | 0 ...vlink_msg_roll_pitch_yaw_speed_thrust_setpoint.h | 0 .../mavlink_msg_roll_pitch_yaw_thrust_setpoint.h | 0 .../common/mavlink_msg_safety_allowed_area.h | 0 .../common/mavlink_msg_safety_set_allowed_area.h | 0 .../include_v1.0/common/mavlink_msg_scaled_imu.h | 0 .../common/mavlink_msg_scaled_pressure.h | 0 .../common/mavlink_msg_servo_output_raw.h | 0 .../mavlink_msg_set_global_position_setpoint_int.h | 0 .../common/mavlink_msg_set_gps_global_origin.h | 0 .../mavlink_msg_set_local_position_setpoint.h | 0 .../include_v1.0/common/mavlink_msg_set_mode.h | 0 .../common/mavlink_msg_set_quad_motors_setpoint.h | 0 ...k_msg_set_quad_swarm_led_roll_pitch_yaw_thrust.h | 0 ...vlink_msg_set_quad_swarm_roll_pitch_yaw_thrust.h | 0 .../mavlink_msg_set_roll_pitch_yaw_speed_thrust.h | 0 .../common/mavlink_msg_set_roll_pitch_yaw_thrust.h | 0 .../include_v1.0/common/mavlink_msg_setpoint_6dof.h | 0 .../include_v1.0/common/mavlink_msg_setpoint_8dof.h | 0 .../include_v1.0/common/mavlink_msg_sim_state.h | 0 .../common/mavlink_msg_state_correction.h | 0 .../include_v1.0/common/mavlink_msg_statustext.h | 0 .../include_v1.0/common/mavlink_msg_sys_status.h | 0 .../include_v1.0/common/mavlink_msg_system_time.h | 0 .../include_v1.0/common/mavlink_msg_vfr_hud.h | 0 .../common/mavlink_msg_vicon_position_estimate.h | 0 .../common/mavlink_msg_vision_position_estimate.h | 0 .../common/mavlink_msg_vision_speed_estimate.h | 0 .../src/GCS_MAVLink/include_v1.0/common/testsuite.h | 0 .../src/GCS_MAVLink/include_v1.0/common/version.h | 0 .../GCS_MAVLink/include_v1.0/mavlink_conversions.h | 0 .../src/GCS_MAVLink/include_v1.0/mavlink_helpers.h | 0 .../include_v1.0/mavlink_protobuf_manager.hpp | 0 .../src/GCS_MAVLink/include_v1.0/mavlink_types.h | 0 .../src/GCS_MAVLink/include_v1.0/protocol.h | 0 .../message_definitions_v1.0/ardupilotmega.xml | 0 .../message_definitions_v1.0/autoquad.xml | 0 .../GCS_MAVLink/message_definitions_v1.0/common.xml | 0 .../message_definitions_v1.0/matrixpilot.xml | 0 .../message_definitions_v1.0/minimal.xml | 0 .../message_definitions_v1.0/pixhawk.proto | 0 .../message_definitions_v1.0/pixhawk.xml | 0 .../message_definitions_v1.0/sensesoar.xml | 0 .../GCS_MAVLink/message_definitions_v1.0/slugs.xml | 0 .../GCS_MAVLink/message_definitions_v1.0/test.xml | 0 .../message_definitions_v1.0/ualberta.xml | 0 {transmitter => radio}/src/GCS_MAVLink/sync | 0 {transmitter => radio}/src/Makefile | 0 {transmitter => radio}/src/audio_arm.cpp | 0 {transmitter => radio}/src/audio_arm.h | 0 {transmitter => radio}/src/audio_avr.cpp | 0 {transmitter => radio}/src/audio_avr.h | 0 {transmitter => radio}/src/bitmaps/about_9x.lbm | 0 {transmitter => radio}/src/bitmaps/about_9x.png | Bin .../src/bitmaps/about_taranis.lbm | 0 .../src/bitmaps/about_taranis.png | Bin {transmitter => radio}/src/bitmaps/asterisk.lbm | 0 {transmitter => radio}/src/bitmaps/asterisk.xbm | 0 .../src/bitmaps/asterisk_4bits.lbm | 0 .../src/bitmaps/asterisk_4bits.png | Bin {transmitter => radio}/src/bitmaps/icons.lbm | 0 {transmitter => radio}/src/bitmaps/icons.png | Bin {transmitter => radio}/src/bitmaps/logo_taranis.bmp | Bin {transmitter => radio}/src/bitmaps/logo_taranis.lbm | 0 {transmitter => radio}/src/bitmaps/splash_9x.lbm | 0 {transmitter => radio}/src/bitmaps/splash_9x.xbm | 0 .../src/bitmaps/splash_taranis.lbm | 0 .../src/bitmaps/splash_taranis.png | Bin {transmitter => radio}/src/bitmaps/sticks.lbm | 0 {transmitter => radio}/src/bitmaps/sticks_4x1.xbm | 0 {transmitter => radio}/src/bmp.cpp | 0 {transmitter => radio}/src/buzzer.cpp | 0 {transmitter => radio}/src/buzzer.h | 0 {transmitter => radio}/src/debug.cpp | 0 {transmitter => radio}/src/debug.h | 0 {transmitter => radio}/src/eeprom_common.cpp | 0 {transmitter => radio}/src/eeprom_common.h | 0 {transmitter => radio}/src/eeprom_conversions.cpp | 0 {transmitter => radio}/src/eeprom_raw.cpp | 0 {transmitter => radio}/src/eeprom_raw.h | 0 {transmitter => radio}/src/eeprom_rlc.cpp | 0 {transmitter => radio}/src/eeprom_rlc.h | 0 {transmitter => radio}/src/fifo.h | 0 .../src/fonts/sqt5/font_04x06.lbm | 0 .../src/fonts/sqt5/font_04x06.png | Bin .../src/fonts/sqt5/font_05x07.lbm | 0 .../src/fonts/sqt5/font_05x07.png | Bin .../src/fonts/sqt5/font_08x10.lbm | 0 .../src/fonts/sqt5/font_08x10.png | Bin .../src/fonts/sqt5/font_10x14.lbm | 0 .../src/fonts/sqt5/font_10x14.png | Bin .../src/fonts/sqt5/font_10x14_compressed.lbm | 0 .../src/fonts/sqt5/font_10x14_compressed.png | Bin .../src/fonts/sqt5/font_cz_04x06.lbm | 0 .../src/fonts/sqt5/font_cz_04x06.png | Bin .../src/fonts/sqt5/font_cz_05x07.lbm | 0 .../src/fonts/sqt5/font_cz_05x07.png | Bin .../src/fonts/sqt5/font_cz_08x10.lbm | 0 .../src/fonts/sqt5/font_cz_08x10.png | Bin .../src/fonts/sqt5/font_cz_10x14.lbm | 0 .../src/fonts/sqt5/font_cz_10x14.png | Bin .../src/fonts/sqt5/font_de_04x06.lbm | 0 .../src/fonts/sqt5/font_de_04x06.png | Bin .../src/fonts/sqt5/font_de_05x07.lbm | 0 .../src/fonts/sqt5/font_de_05x07.png | Bin .../src/fonts/sqt5/font_de_08x10.lbm | 0 .../src/fonts/sqt5/font_de_08x10.png | Bin .../src/fonts/sqt5/font_de_10x14.lbm | 0 .../src/fonts/sqt5/font_de_10x14.png | Bin .../src/fonts/sqt5/font_es_04x06.lbm | 0 .../src/fonts/sqt5/font_es_04x06.png | Bin .../src/fonts/sqt5/font_es_05x07.lbm | 0 .../src/fonts/sqt5/font_es_05x07.png | Bin .../src/fonts/sqt5/font_es_08x10.lbm | 0 .../src/fonts/sqt5/font_es_08x10.png | Bin .../src/fonts/sqt5/font_es_10x14.lbm | 0 .../src/fonts/sqt5/font_es_10x14.png | Bin .../src/fonts/sqt5/font_fr_04x06.lbm | 0 .../src/fonts/sqt5/font_fr_04x06.png | Bin .../src/fonts/sqt5/font_fr_05x07.lbm | 0 .../src/fonts/sqt5/font_fr_05x07.png | Bin .../src/fonts/sqt5/font_fr_08x10.lbm | 0 .../src/fonts/sqt5/font_fr_08x10.png | Bin .../src/fonts/sqt5/font_fr_10x14.lbm | 0 .../src/fonts/sqt5/font_fr_10x14.png | Bin .../src/fonts/sqt5/font_it_04x06.lbm | 0 .../src/fonts/sqt5/font_it_04x06.png | Bin .../src/fonts/sqt5/font_it_05x07.lbm | 0 .../src/fonts/sqt5/font_it_05x07.png | Bin .../src/fonts/sqt5/font_it_08x10.lbm | 0 .../src/fonts/sqt5/font_it_08x10.png | Bin .../src/fonts/sqt5/font_it_10x14.lbm | 0 .../src/fonts/sqt5/font_it_10x14.png | Bin .../src/fonts/sqt5/font_pt_05x07.lbm | 0 .../src/fonts/sqt5/font_pt_05x07.png | Bin .../src/fonts/sqt5/font_pt_08x10.lbm | 0 .../src/fonts/sqt5/font_pt_08x10.png | Bin .../src/fonts/sqt5/font_pt_10x14.lbm | 0 .../src/fonts/sqt5/font_pt_10x14.png | Bin .../src/fonts/sqt5/font_se_04x06.lbm | 0 .../src/fonts/sqt5/font_se_04x06.png | Bin .../src/fonts/sqt5/font_se_05x07.lbm | 0 .../src/fonts/sqt5/font_se_05x07.png | Bin .../src/fonts/sqt5/font_se_08x10.lbm | 0 .../src/fonts/sqt5/font_se_08x10.png | Bin .../src/fonts/sqt5/font_se_10x14.lbm | 0 .../src/fonts/sqt5/font_se_10x14.png | Bin {transmitter => radio}/src/fonts/std/font_03x05.lbm | 0 {transmitter => radio}/src/fonts/std/font_03x05.png | Bin {transmitter => radio}/src/fonts/std/font_04x06.lbm | 0 {transmitter => radio}/src/fonts/std/font_04x06.png | Bin .../src/fonts/std/font_04x06_extra.lbm | 0 .../src/fonts/std/font_04x06_extra.png | Bin {transmitter => radio}/src/fonts/std/font_05x07.lbm | 0 {transmitter => radio}/src/fonts/std/font_05x07.png | Bin .../src/fonts/std/font_05x07_extra.lbm | 0 .../src/fonts/std/font_05x07_extra.png | Bin {transmitter => radio}/src/fonts/std/font_08x10.lbm | 0 {transmitter => radio}/src/fonts/std/font_08x10.png | Bin {transmitter => radio}/src/fonts/std/font_10x14.lbm | 0 {transmitter => radio}/src/fonts/std/font_10x14.png | Bin .../src/fonts/std/font_10x14_compressed.lbm | 0 .../src/fonts/std/font_10x14_compressed.png | Bin .../src/fonts/std/font_10x14_extra.lbm | 0 .../src/fonts/std/font_10x14_extra.png | Bin .../src/fonts/std/font_cz_04x06.lbm | 0 .../src/fonts/std/font_cz_04x06.png | Bin .../src/fonts/std/font_cz_05x07.lbm | 0 .../src/fonts/std/font_cz_05x07.png | Bin .../src/fonts/std/font_cz_08x10.lbm | 0 .../src/fonts/std/font_cz_08x10.png | Bin .../src/fonts/std/font_cz_10x14.lbm | 0 .../src/fonts/std/font_cz_10x14.png | Bin .../src/fonts/std/font_de_04x06.lbm | 0 .../src/fonts/std/font_de_04x06.png | Bin .../src/fonts/std/font_de_05x07.lbm | 0 .../src/fonts/std/font_de_05x07.png | Bin .../src/fonts/std/font_de_08x10.lbm | 0 .../src/fonts/std/font_de_08x10.png | Bin .../src/fonts/std/font_de_10x14.lbm | 0 .../src/fonts/std/font_de_10x14.png | Bin .../src/fonts/std/font_es_04x06.lbm | 0 .../src/fonts/std/font_es_04x06.png | Bin .../src/fonts/std/font_es_05x07.lbm | 0 .../src/fonts/std/font_es_05x07.png | Bin .../src/fonts/std/font_es_08x10.lbm | 0 .../src/fonts/std/font_es_08x10.png | Bin .../src/fonts/std/font_es_10x14.lbm | 0 .../src/fonts/std/font_es_10x14.png | Bin .../src/fonts/std/font_fr_04x06.lbm | 0 .../src/fonts/std/font_fr_04x06.png | Bin .../src/fonts/std/font_fr_05x07.lbm | 0 .../src/fonts/std/font_fr_05x07.png | Bin .../src/fonts/std/font_fr_08x10.lbm | 0 .../src/fonts/std/font_fr_08x10.png | Bin .../src/fonts/std/font_fr_10x14.lbm | 0 .../src/fonts/std/font_fr_10x14.png | Bin .../src/fonts/std/font_it_04x06.lbm | 0 .../src/fonts/std/font_it_04x06.png | Bin .../src/fonts/std/font_it_05x07.lbm | 0 .../src/fonts/std/font_it_05x07.png | Bin .../src/fonts/std/font_it_08x10.lbm | 0 .../src/fonts/std/font_it_08x10.png | Bin .../src/fonts/std/font_it_10x14.lbm | 0 .../src/fonts/std/font_it_10x14.png | Bin .../src/fonts/std/font_pt_04x06.lbm | 0 .../src/fonts/std/font_pt_04x06.png | Bin .../src/fonts/std/font_pt_05x07.lbm | 0 .../src/fonts/std/font_pt_05x07.png | Bin .../src/fonts/std/font_pt_08x10.lbm | 0 .../src/fonts/std/font_pt_08x10.png | Bin .../src/fonts/std/font_pt_10x14.lbm | 0 .../src/fonts/std/font_pt_10x14.png | Bin .../src/fonts/std/font_se_04x06.lbm | 0 .../src/fonts/std/font_se_04x06.png | Bin .../src/fonts/std/font_se_05x07.lbm | 0 .../src/fonts/std/font_se_05x07.png | Bin .../src/fonts/std/font_se_08x10.lbm | 0 .../src/fonts/std/font_se_08x10.png | Bin .../src/fonts/std/font_se_10x14.lbm | 0 .../src/fonts/std/font_se_10x14.png | Bin {transmitter => radio}/src/gtests.cpp | 0 {transmitter => radio}/src/gui/menu_general.cpp | 0 {transmitter => radio}/src/gui/menu_model.cpp | 0 {transmitter => radio}/src/gui/menus.cpp | 0 {transmitter => radio}/src/gui/menus.h | 0 {transmitter => radio}/src/gui/view_about.cpp | 0 {transmitter => radio}/src/gui/view_channels.cpp | 0 {transmitter => radio}/src/gui/view_main.cpp | 0 {transmitter => radio}/src/gui/view_mavlink.cpp | 0 {transmitter => radio}/src/gui/view_mavlink.h | 0 {transmitter => radio}/src/gui/view_statistics.cpp | 0 {transmitter => radio}/src/gui/view_telemetry.cpp | 0 {transmitter => radio}/src/gui/view_text.cpp | 0 {transmitter => radio}/src/haptic.cpp | 0 {transmitter => radio}/src/haptic.h | 0 {transmitter => radio}/src/keys.cpp | 0 {transmitter => radio}/src/lcd.cpp | 0 {transmitter => radio}/src/lcd.h | 0 {transmitter => radio}/src/logs.cpp | 0 {transmitter => radio}/src/maths.cpp | 0 {transmitter => radio}/src/myeeprom.h | 0 {transmitter => radio}/src/opentx.cpp | 0 {transmitter => radio}/src/opentx.h | 0 {transmitter => radio}/src/pgmtypes.h | 0 {transmitter => radio}/src/protocols/dsm2_arm.cpp | 0 {transmitter => radio}/src/protocols/ppm_arm.cpp | 0 {transmitter => radio}/src/protocols/pulses_arm.cpp | 0 {transmitter => radio}/src/protocols/pulses_arm.h | 0 {transmitter => radio}/src/protocols/pulses_avr.cpp | 0 {transmitter => radio}/src/protocols/pulses_avr.h | 0 {transmitter => radio}/src/protocols/pxx_arm.cpp | 0 {transmitter => radio}/src/rtc.cpp | 0 {transmitter => radio}/src/rtc.h | 0 {transmitter => radio}/src/sdcard.h | 0 {transmitter => radio}/src/serial.cpp | 0 {transmitter => radio}/src/serial.h | 0 {transmitter => radio}/src/simpgmspace.cpp | 0 {transmitter => radio}/src/simpgmspace.h | 0 {transmitter => radio}/src/simu.cpp | 0 {transmitter => radio}/src/stamp.cpp | 0 .../src/targets/gruvin9x/board_gruvin9x.cpp | 0 .../src/targets/gruvin9x/board_gruvin9x.h | 0 .../src/targets/gruvin9x/diskio.cpp | 0 .../src/targets/gruvin9x/fuses_2561.txt | 0 .../src/targets/gruvin9x/rtc_driver.cpp | 0 .../src/targets/gruvin9x/somo14d.cpp | 0 .../src/targets/gruvin9x/somo14d.h | 0 .../src/targets/mega2560/00readme.txt | 0 .../src/targets/mega2560/board_mega2560.cpp | 0 .../src/targets/mega2560/board_mega2560.h | 0 .../src/targets/mega2560/io_mega2560.h | 0 .../src/targets/mega2560/lcd_driver_ST7565R.cpp | 0 .../src/targets/mega2560/rtc_driver.cpp | 0 .../src/targets/sky9x/AT91SAM3S2.h | 0 .../src/targets/sky9x/AT91SAM3S4.h | 0 .../src/targets/sky9x/MEDSdcard.c | 0 {transmitter => radio}/src/targets/sky9x/Media.h | 0 .../src/targets/sky9x/adc_driver.cpp | 0 .../src/targets/sky9x/audio_driver.cpp | 0 .../src/targets/sky9x/audio_driver.h | 0 .../src/targets/sky9x/bluetooth.cpp | 0 {transmitter => radio}/src/targets/sky9x/board.h | 0 .../src/targets/sky9x/board_lowlevel.c | 0 .../src/targets/sky9x/board_sky9x.cpp | 0 .../src/targets/sky9x/board_sky9x.h | 0 .../src/targets/sky9x/buzzer_driver.cpp | 0 {transmitter => radio}/src/targets/sky9x/chip.h | 0 .../src/targets/sky9x/coproc_driver.cpp | 0 {transmitter => radio}/src/targets/sky9x/core_cm3.c | 0 {transmitter => radio}/src/targets/sky9x/core_cm3.h | 0 {transmitter => radio}/src/targets/sky9x/crt.c | 0 .../src/targets/sky9x/debug_driver.cpp | 0 {transmitter => radio}/src/targets/sky9x/diskio.cpp | 0 .../src/targets/sky9x/eeprom_driver.cpp | 0 .../src/targets/sky9x/haptic_driver.cpp | 0 .../src/targets/sky9x/keys_driver.cpp | 0 .../src/targets/sky9x/lcd_driver.cpp | 0 .../src/targets/sky9x/massstorage.cpp | 0 .../src/targets/sky9x/pulses_driver.cpp | 0 .../src/targets/sky9x/pwr_driver.cpp | 0 .../src/targets/sky9x/rotenc_driver.cpp | 0 .../src/targets/sky9x/rtc_driver.cpp | 0 .../src/targets/sky9x/sam3s2c_flash.ld | 0 .../src/targets/sky9x/sam3s4c_flash.ld | 0 .../src/targets/sky9x/sdcard_driver.cpp | 0 {transmitter => radio}/src/targets/sky9x/syscalls.c | 0 .../usb/common/core/USBConfigurationDescriptor.c | 0 .../usb/common/core/USBConfigurationDescriptor.h | 0 .../sky9x/usb/common/core/USBDeviceDescriptor.h | 0 .../usb/common/core/USBDeviceQualifierDescriptor.h | 0 .../sky9x/usb/common/core/USBEndpointDescriptor.c | 0 .../sky9x/usb/common/core/USBEndpointDescriptor.h | 0 .../sky9x/usb/common/core/USBFeatureRequest.c | 0 .../sky9x/usb/common/core/USBFeatureRequest.h | 0 .../sky9x/usb/common/core/USBGenericDescriptor.c | 0 .../sky9x/usb/common/core/USBGenericDescriptor.h | 0 .../sky9x/usb/common/core/USBGenericRequest.c | 0 .../sky9x/usb/common/core/USBGenericRequest.h | 0 .../sky9x/usb/common/core/USBGetDescriptorRequest.c | 0 .../sky9x/usb/common/core/USBGetDescriptorRequest.h | 0 .../common/core/USBInterfaceAssociationDescriptor.h | 0 .../sky9x/usb/common/core/USBInterfaceDescriptor.h | 0 .../sky9x/usb/common/core/USBInterfaceRequest.c | 0 .../sky9x/usb/common/core/USBInterfaceRequest.h | 0 .../targets/sky9x/usb/common/core/USBIrqHandler.c | 0 .../targets/sky9x/usb/common/core/USBIrqHandler.h | 0 .../sky9x/usb/common/core/USBSetAddressRequest.c | 0 .../sky9x/usb/common/core/USBSetAddressRequest.h | 0 .../usb/common/core/USBSetConfigurationRequest.c | 0 .../usb/common/core/USBSetConfigurationRequest.h | 0 .../sky9x/usb/common/core/USBStringDescriptor.h | 0 .../usb/common/massstorage/MSDeviceDescriptor.h | 0 .../usb/common/massstorage/MSInterfaceDescriptor.h | 0 .../src/targets/sky9x/usb/device/core/USBD.h | 0 .../src/targets/sky9x/usb/device/core/USBDDriver.c | 0 .../src/targets/sky9x/usb/device/core/USBDDriver.h | 0 .../sky9x/usb/device/core/USBDDriverDescriptors.h | 0 .../src/targets/sky9x/usb/device/core/USBD_UDP.c | 0 .../src/targets/sky9x/usb/device/massstorage/MSD.h | 0 .../sky9x/usb/device/massstorage/MSDDStateMachine.c | 0 .../sky9x/usb/device/massstorage/MSDDStateMachine.h | 0 .../sky9x/usb/device/massstorage/MSDDriver.c | 0 .../sky9x/usb/device/massstorage/MSDDriver.h | 0 .../usb/device/massstorage/MSDDriverDescriptors.c | 0 .../usb/device/massstorage/MSDDriverDescriptors.h | 0 .../sky9x/usb/device/massstorage/MSDIOFifo.h | 0 .../targets/sky9x/usb/device/massstorage/MSDLun.c | 0 .../targets/sky9x/usb/device/massstorage/MSDLun.h | 0 .../src/targets/sky9x/usb/device/massstorage/SBC.h | 0 .../sky9x/usb/device/massstorage/SBCMethods.c | 0 .../sky9x/usb/device/massstorage/SBCMethods.h | 0 .../src/targets/sky9x/vectors_sam3s.c | 0 .../src/targets/stock/board_stock.cpp | 0 .../src/targets/stock/board_stock.h | 0 .../src/targets/stock/lcd_driver.cpp | 0 {transmitter => radio}/src/targets/stock/voice.cpp | 0 {transmitter => radio}/src/targets/stock/voice.h | 0 .../CMSIS/Device/ST/STM32F2xx/Include/stm32f2xx.h | 0 .../Device/ST/STM32F2xx/Include/system_stm32f2xx.h | 0 .../Source/Templates/gcc_ride7/startup_stm32f2xx.s | 0 .../STM32F2xx/Source/Templates/system_stm32f2xx.c | 0 .../Libraries/CMSIS/Include/arm_common_tables.h | 0 .../Libraries/CMSIS/Include/arm_math.h | 0 .../Libraries/CMSIS/Include/core_cm0.h | 0 .../Libraries/CMSIS/Include/core_cm3.h | 0 .../Libraries/CMSIS/Include/core_cm4.h | 0 .../Libraries/CMSIS/Include/core_cm4_simd.h | 0 .../Libraries/CMSIS/Include/core_cmFunc.h | 0 .../Libraries/CMSIS/Include/core_cmInstr.h | 0 .../Libraries/STM32F2xx_StdPeriph_Driver/inc/misc.h | 0 .../STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_adc.h | 0 .../STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_can.h | 0 .../STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_crc.h | 0 .../STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_cryp.h | 0 .../STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_dac.h | 0 .../inc/stm32f2xx_dbgmcu.h | 0 .../STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_dcmi.h | 0 .../STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_dma.h | 0 .../STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_exti.h | 0 .../inc/stm32f2xx_flash.h | 0 .../STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_fsmc.h | 0 .../STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_gpio.h | 0 .../STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_hash.h | 0 .../STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_i2c.h | 0 .../STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_iwdg.h | 0 .../STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_pwr.h | 0 .../STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_rcc.h | 0 .../STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_rng.h | 0 .../STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_rtc.h | 0 .../STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_sdio.h | 0 .../STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_spi.h | 0 .../inc/stm32f2xx_syscfg.h | 0 .../STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_tim.h | 0 .../inc/stm32f2xx_usart.h | 0 .../STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_wwdg.h | 0 .../Libraries/STM32F2xx_StdPeriph_Driver/src/misc.c | 0 .../STM32F2xx_StdPeriph_Driver/src/stm32f2xx_adc.c | 0 .../STM32F2xx_StdPeriph_Driver/src/stm32f2xx_can.c | 0 .../STM32F2xx_StdPeriph_Driver/src/stm32f2xx_crc.c | 0 .../STM32F2xx_StdPeriph_Driver/src/stm32f2xx_cryp.c | 0 .../src/stm32f2xx_cryp_aes.c | 0 .../src/stm32f2xx_cryp_des.c | 0 .../src/stm32f2xx_cryp_tdes.c | 0 .../STM32F2xx_StdPeriph_Driver/src/stm32f2xx_dac.c | 0 .../src/stm32f2xx_dbgmcu.c | 0 .../STM32F2xx_StdPeriph_Driver/src/stm32f2xx_dcmi.c | 0 .../STM32F2xx_StdPeriph_Driver/src/stm32f2xx_dma.c | 0 .../STM32F2xx_StdPeriph_Driver/src/stm32f2xx_exti.c | 0 .../src/stm32f2xx_flash.c | 0 .../STM32F2xx_StdPeriph_Driver/src/stm32f2xx_fsmc.c | 0 .../STM32F2xx_StdPeriph_Driver/src/stm32f2xx_gpio.c | 0 .../STM32F2xx_StdPeriph_Driver/src/stm32f2xx_hash.c | 0 .../src/stm32f2xx_hash_md5.c | 0 .../src/stm32f2xx_hash_sha1.c | 0 .../STM32F2xx_StdPeriph_Driver/src/stm32f2xx_i2c.c | 0 .../STM32F2xx_StdPeriph_Driver/src/stm32f2xx_iwdg.c | 0 .../STM32F2xx_StdPeriph_Driver/src/stm32f2xx_pwr.c | 0 .../STM32F2xx_StdPeriph_Driver/src/stm32f2xx_rcc.c | 0 .../STM32F2xx_StdPeriph_Driver/src/stm32f2xx_rng.c | 0 .../STM32F2xx_StdPeriph_Driver/src/stm32f2xx_rtc.c | 0 .../STM32F2xx_StdPeriph_Driver/src/stm32f2xx_sdio.c | 0 .../STM32F2xx_StdPeriph_Driver/src/stm32f2xx_spi.c | 0 .../src/stm32f2xx_syscfg.c | 0 .../STM32F2xx_StdPeriph_Driver/src/stm32f2xx_tim.c | 0 .../src/stm32f2xx_usart.c | 0 .../STM32F2xx_StdPeriph_Driver/src/stm32f2xx_wwdg.c | 0 .../Class/audio/inc/usbd_audio_core.h | 0 .../Class/audio/inc/usbd_audio_out_if.h | 0 .../Class/audio/src/usbd_audio_core.c | 0 .../Class/audio/src/usbd_audio_out_if.c | 0 .../Class/cdc/inc/usbd_cdc_core.h | 0 .../Class/cdc/inc/usbd_cdc_if_template.h | 0 .../Class/cdc/src/usbd_cdc_core.c | 0 .../Class/cdc/src/usbd_cdc_if_template.c | 0 .../Class/dfu/inc/usbd_dfu_core.h | 0 .../Class/dfu/inc/usbd_dfu_mal.h | 0 .../Class/dfu/inc/usbd_flash_if.h | 0 .../Class/dfu/inc/usbd_mem_if_template.h | 0 .../Class/dfu/inc/usbd_otp_if.h | 0 .../Class/dfu/src/usbd_dfu_core.c | 0 .../Class/dfu/src/usbd_dfu_mal.c | 0 .../Class/dfu/src/usbd_flash_if.c | 0 .../Class/dfu/src/usbd_mem_if_template.c | 0 .../Class/dfu/src/usbd_otp_if.c | 0 .../Class/hid/inc/usbd_hid_core.h | 0 .../Class/hid/src/usbd_hid_core.c | 0 .../Class/msc/inc/usbd_msc_bot.h | 0 .../Class/msc/inc/usbd_msc_core.h | 0 .../Class/msc/inc/usbd_msc_data.h | 0 .../Class/msc/inc/usbd_msc_mem.h | 0 .../Class/msc/inc/usbd_msc_scsi.h | 0 .../Class/msc/src/usbd_msc_bot.c | 0 .../Class/msc/src/usbd_msc_core.c | 0 .../Class/msc/src/usbd_msc_data.c | 0 .../Class/msc/src/usbd_msc_scsi.c | 0 .../Core/inc/usbd_conf_template.h | 0 .../STM32_USB_Device_Library/Core/inc/usbd_core.h | 0 .../STM32_USB_Device_Library/Core/inc/usbd_def.h | 0 .../STM32_USB_Device_Library/Core/inc/usbd_ioreq.h | 0 .../STM32_USB_Device_Library/Core/inc/usbd_req.h | 0 .../STM32_USB_Device_Library/Core/inc/usbd_usr.h | 0 .../STM32_USB_Device_Library/Core/src/usbd_core.c | 0 .../STM32_USB_Device_Library/Core/src/usbd_ioreq.c | 0 .../STM32_USB_Device_Library/Core/src/usbd_req.c | 0 .../STM32_USB_Device_Library/Release_Notes.html | 0 .../STM32_USB_OTG_Driver/Release_Notes.html | 0 .../Libraries/STM32_USB_OTG_Driver/inc/usb_bsp.h | 0 .../STM32_USB_OTG_Driver/inc/usb_conf_template.h | 0 .../Libraries/STM32_USB_OTG_Driver/inc/usb_core.h | 0 .../Libraries/STM32_USB_OTG_Driver/inc/usb_dcd.h | 0 .../STM32_USB_OTG_Driver/inc/usb_dcd_int.h | 0 .../STM32_USB_OTG_Driver/inc/usb_defines.h | 0 .../Libraries/STM32_USB_OTG_Driver/inc/usb_hcd.h | 0 .../STM32_USB_OTG_Driver/inc/usb_hcd_int.h | 0 .../Libraries/STM32_USB_OTG_Driver/inc/usb_otg.h | 0 .../Libraries/STM32_USB_OTG_Driver/inc/usb_regs.h | 0 .../Libraries/STM32_USB_OTG_Driver/src/usb_core.c | 0 .../Libraries/STM32_USB_OTG_Driver/src/usb_dcd.c | 0 .../STM32_USB_OTG_Driver/src/usb_dcd_int.c | 0 .../Libraries/STM32_USB_OTG_Driver/src/usb_hcd.c | 0 .../STM32_USB_OTG_Driver/src/usb_hcd_int.c | 0 .../Libraries/STM32_USB_OTG_Driver/src/usb_otg.c | 0 .../src/targets/taranis/adc_driver.cpp | 0 {transmitter => radio}/src/targets/taranis/aspi.cpp | 0 {transmitter => radio}/src/targets/taranis/aspi.h | 0 .../src/targets/taranis/audio_driver.cpp | 0 .../src/targets/taranis/audio_driver.h | 0 .../src/targets/taranis/board_taranis.cpp | 0 .../src/targets/taranis/board_taranis.h | 0 .../src/targets/taranis/delays.cpp | 0 .../src/targets/taranis/diskio.cpp | 0 {transmitter => radio}/src/targets/taranis/hal.h | 0 {transmitter => radio}/src/targets/taranis/i2c.c | 0 {transmitter => radio}/src/targets/taranis/i2c.h | 0 .../src/targets/taranis/keys_driver.cpp | 0 .../src/targets/taranis/lcd_driver.cpp | 0 .../src/targets/taranis/pulses_driver.cpp | 0 .../src/targets/taranis/pwr_driver.cpp | 0 .../src/targets/taranis/rtc_driver.cpp | 0 .../src/targets/taranis/sport_driver.cpp | 0 .../src/targets/taranis/stm32_flash.ld | 0 .../src/targets/taranis/trainer_driver.cpp | 0 .../src/targets/taranis/uart_driver.cpp | 0 .../src/targets/taranis/usb_bsp.c | 0 .../src/targets/taranis/usb_conf.h | 0 .../src/targets/taranis/usbd_conf.h | 0 .../src/targets/taranis/usbd_desc.c | 0 .../src/targets/taranis/usbd_desc.h | 0 .../src/targets/taranis/usbd_storage_msd.cpp | 0 .../src/targets/taranis/usbd_usr.cpp | 0 {transmitter => radio}/src/telemetry/ardupilot.cpp | 0 {transmitter => radio}/src/telemetry/ardupilot.h | 0 {transmitter => radio}/src/telemetry/frsky.cpp | 0 {transmitter => radio}/src/telemetry/frsky.h | 0 .../src/telemetry/frsky_sport.cpp | 0 {transmitter => radio}/src/telemetry/frsky_sport.h | 0 {transmitter => radio}/src/telemetry/jeti.cpp | 0 {transmitter => radio}/src/telemetry/jeti.h | 0 {transmitter => radio}/src/telemetry/mavlink.cpp | 0 {transmitter => radio}/src/telemetry/mavlink.h | 0 {transmitter => radio}/src/telemetry/nmea.cpp | 0 {transmitter => radio}/src/telemetry/nmea.h | 0 {transmitter => radio}/src/templates.cpp | 0 {transmitter => radio}/src/templates.h | 0 {transmitter => radio}/src/translations.cpp | 0 {transmitter => radio}/src/translations.h | 0 {transmitter => radio}/src/translations/cz.h | 0 {transmitter => radio}/src/translations/cz.h.txt | 0 {transmitter => radio}/src/translations/de.h | 0 {transmitter => radio}/src/translations/de.h.txt | 0 {transmitter => radio}/src/translations/en.h | 0 {transmitter => radio}/src/translations/es.h | 0 {transmitter => radio}/src/translations/es.h.txt | 0 {transmitter => radio}/src/translations/fr.h | 0 {transmitter => radio}/src/translations/fr.h.txt | 0 {transmitter => radio}/src/translations/it.h | 0 {transmitter => radio}/src/translations/it.h.txt | 0 {transmitter => radio}/src/translations/pl.h | 0 {transmitter => radio}/src/translations/pl.h.txt | 0 {transmitter => radio}/src/translations/pt.h | 0 {transmitter => radio}/src/translations/pt.h.txt | 0 {transmitter => radio}/src/translations/se.h | 0 {transmitter => radio}/src/translations/se.h.txt | 0 {transmitter => radio}/src/translations/tts_cz.cpp | 0 {transmitter => radio}/src/translations/tts_de.cpp | 0 {transmitter => radio}/src/translations/tts_en.cpp | 0 {transmitter => radio}/src/translations/tts_es.cpp | 0 {transmitter => radio}/src/translations/tts_fr.cpp | 0 {transmitter => radio}/src/translations/tts_it.cpp | 0 {transmitter => radio}/src/translations/tts_pl.cpp | 0 {transmitter => radio}/src/translations/tts_pt.cpp | 0 {transmitter => radio}/src/translations/tts_se.cpp | 0 {transmitter => radio}/src/translations/tts_sk.cpp | 0 {transmitter => radio}/util/compile.py | 0 {transmitter => radio}/util/dsm2.py | 0 {transmitter => radio}/util/img2lbm.py | 0 {transmitter => radio}/util/maxvolume.cmd | 0 {transmitter => radio}/util/parse.py | 0 {transmitter => radio}/util/translate.py | 0 {transmitter => radio}/util/tts.py | 0 707 files changed, 0 insertions(+), 0 deletions(-) rename {transmitter => radio}/releasenotes-9x.txt (100%) rename {transmitter => radio}/releasenotes-taranis.txt (100%) rename {transmitter => radio}/src/CoOS/kernel/CoOS.h (100%) rename {transmitter => radio}/src/CoOS/kernel/OsConfig.h (100%) rename {transmitter => radio}/src/CoOS/kernel/OsCore.h (100%) rename {transmitter => radio}/src/CoOS/kernel/OsError.h (100%) rename {transmitter => radio}/src/CoOS/kernel/OsEvent.h (100%) rename {transmitter => radio}/src/CoOS/kernel/OsFlag.h (100%) rename {transmitter => radio}/src/CoOS/kernel/OsKernelHeap.h (100%) rename {transmitter => radio}/src/CoOS/kernel/OsMM.h (100%) rename {transmitter => radio}/src/CoOS/kernel/OsMutex.h (100%) rename {transmitter => radio}/src/CoOS/kernel/OsQueue.h (100%) rename {transmitter => radio}/src/CoOS/kernel/OsServiceReq.h (100%) rename {transmitter => radio}/src/CoOS/kernel/OsTask.h (100%) rename {transmitter => radio}/src/CoOS/kernel/OsTime.h (100%) rename {transmitter => radio}/src/CoOS/kernel/OsTimer.h (100%) rename {transmitter => radio}/src/CoOS/kernel/coocox.h (100%) rename {transmitter => radio}/src/CoOS/kernel/core.c (100%) rename {transmitter => radio}/src/CoOS/kernel/event.c (100%) rename {transmitter => radio}/src/CoOS/kernel/flag.c (100%) rename {transmitter => radio}/src/CoOS/kernel/hook.c (100%) rename {transmitter => radio}/src/CoOS/kernel/kernelHeap.c (100%) rename {transmitter => radio}/src/CoOS/kernel/mbox.c (100%) rename {transmitter => radio}/src/CoOS/kernel/mm.c (100%) rename {transmitter => radio}/src/CoOS/kernel/mutex.c (100%) rename {transmitter => radio}/src/CoOS/kernel/queue.c (100%) rename {transmitter => radio}/src/CoOS/kernel/sem.c (100%) rename {transmitter => radio}/src/CoOS/kernel/serviceReq.c (100%) rename {transmitter => radio}/src/CoOS/kernel/task.c (100%) rename {transmitter => radio}/src/CoOS/kernel/time.c (100%) rename {transmitter => radio}/src/CoOS/kernel/timer.c (100%) rename {transmitter => radio}/src/CoOS/kernel/utility.c (100%) rename {transmitter => radio}/src/CoOS/kernel/utility.h (100%) rename {transmitter => radio}/src/CoOS/portable/GCC/port.c (100%) rename {transmitter => radio}/src/CoOS/portable/OsArch.h (100%) rename {transmitter => radio}/src/CoOS/portable/arch.c (100%) rename {transmitter => radio}/src/FatFs/00readme.txt (100%) rename {transmitter => radio}/src/FatFs/diskio.h (100%) rename {transmitter => radio}/src/FatFs/fattime.c (100%) rename {transmitter => radio}/src/FatFs/ff.c (100%) rename {transmitter => radio}/src/FatFs/ff.h (100%) rename {transmitter => radio}/src/FatFs/ffconf.h (100%) rename {transmitter => radio}/src/FatFs/integer.h (100%) rename {transmitter => radio}/src/FatFs/option/cc932.c (100%) rename {transmitter => radio}/src/FatFs/option/cc936.c (100%) rename {transmitter => radio}/src/FatFs/option/cc949.c (100%) rename {transmitter => radio}/src/FatFs/option/cc950.c (100%) rename {transmitter => radio}/src/FatFs/option/ccsbcs.c (100%) rename {transmitter => radio}/src/FatFs/option/syscall.c (100%) rename {transmitter => radio}/src/FatFs/option/unicode.c (100%) rename {transmitter => radio}/src/GCS_MAVLink/.gitignore (100%) rename {transmitter => radio}/src/GCS_MAVLink/COPYING (100%) rename {transmitter => radio}/src/GCS_MAVLink/README (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/ardupilotmega/ardupilotmega.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_ahrs.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_ap_adc.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_data16.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_data32.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_data64.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_data96.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_digicam_configure.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_digicam_control.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_fence_fetch_point.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_fence_point.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_fence_status.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_hwstatus.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_limits_status.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_meminfo.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_mount_configure.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_mount_control.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_mount_status.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_radio.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_rangefinder.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_sensor_offsets.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_set_mag_offsets.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_simstate.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_wind.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/ardupilotmega/testsuite.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/ardupilotmega/version.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/checksum.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/common.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_attitude.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_attitude_quaternion.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_auth_key.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_battery_status.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_change_operator_control.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_change_operator_control_ack.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_command_ack.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_command_long.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_data_stream.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_debug.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_debug_vect.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_file_transfer_dir_list.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_file_transfer_res.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_file_transfer_start.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_global_position_int.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_global_position_setpoint_int.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_global_vision_position_estimate.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_gps_global_origin.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_gps_raw_int.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_gps_status.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_heartbeat.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_highres_imu.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_hil_controls.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_hil_gps.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_hil_optical_flow.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_hil_rc_inputs_raw.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_hil_sensor.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_hil_state.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_hil_state_quaternion.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_local_position_ned.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_local_position_ned_system_global_offset.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_local_position_setpoint.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_manual_control.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_manual_setpoint.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_memory_vect.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_ack.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_clear_all.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_count.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_current.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_item.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_item_reached.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_request.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_request_list.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_request_partial_list.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_set_current.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_write_partial_list.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_named_value_float.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_named_value_int.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_nav_controller_output.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_omnidirectional_flow.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_optical_flow.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_param_request_list.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_param_request_read.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_param_set.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_param_value.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_ping.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_radio_status.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_raw_imu.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_raw_pressure.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_rc_channels_override.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_rc_channels_raw.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_rc_channels_scaled.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_request_data_stream.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_roll_pitch_yaw_rates_thrust_setpoint.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_roll_pitch_yaw_speed_thrust_setpoint.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_roll_pitch_yaw_thrust_setpoint.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_safety_allowed_area.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_safety_set_allowed_area.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_scaled_imu.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_scaled_pressure.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_servo_output_raw.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_global_position_setpoint_int.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_gps_global_origin.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_local_position_setpoint.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_mode.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_quad_motors_setpoint.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_quad_swarm_led_roll_pitch_yaw_thrust.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_quad_swarm_roll_pitch_yaw_thrust.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_roll_pitch_yaw_speed_thrust.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_roll_pitch_yaw_thrust.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_setpoint_6dof.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_setpoint_8dof.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_sim_state.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_state_correction.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_statustext.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_sys_status.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_system_time.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_vfr_hud.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_vicon_position_estimate.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_vision_position_estimate.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_vision_speed_estimate.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/testsuite.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/common/version.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/mavlink_conversions.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/mavlink_helpers.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/mavlink_protobuf_manager.hpp (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/mavlink_types.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/include_v1.0/protocol.h (100%) rename {transmitter => radio}/src/GCS_MAVLink/message_definitions_v1.0/ardupilotmega.xml (100%) rename {transmitter => radio}/src/GCS_MAVLink/message_definitions_v1.0/autoquad.xml (100%) rename {transmitter => radio}/src/GCS_MAVLink/message_definitions_v1.0/common.xml (100%) rename {transmitter => radio}/src/GCS_MAVLink/message_definitions_v1.0/matrixpilot.xml (100%) rename {transmitter => radio}/src/GCS_MAVLink/message_definitions_v1.0/minimal.xml (100%) rename {transmitter => radio}/src/GCS_MAVLink/message_definitions_v1.0/pixhawk.proto (100%) rename {transmitter => radio}/src/GCS_MAVLink/message_definitions_v1.0/pixhawk.xml (100%) rename {transmitter => radio}/src/GCS_MAVLink/message_definitions_v1.0/sensesoar.xml (100%) rename {transmitter => radio}/src/GCS_MAVLink/message_definitions_v1.0/slugs.xml (100%) rename {transmitter => radio}/src/GCS_MAVLink/message_definitions_v1.0/test.xml (100%) rename {transmitter => radio}/src/GCS_MAVLink/message_definitions_v1.0/ualberta.xml (100%) rename {transmitter => radio}/src/GCS_MAVLink/sync (100%) rename {transmitter => radio}/src/Makefile (100%) rename {transmitter => radio}/src/audio_arm.cpp (100%) rename {transmitter => radio}/src/audio_arm.h (100%) rename {transmitter => radio}/src/audio_avr.cpp (100%) rename {transmitter => radio}/src/audio_avr.h (100%) rename {transmitter => radio}/src/bitmaps/about_9x.lbm (100%) rename {transmitter => radio}/src/bitmaps/about_9x.png (100%) rename {transmitter => radio}/src/bitmaps/about_taranis.lbm (100%) rename {transmitter => radio}/src/bitmaps/about_taranis.png (100%) rename {transmitter => radio}/src/bitmaps/asterisk.lbm (100%) rename {transmitter => radio}/src/bitmaps/asterisk.xbm (100%) rename {transmitter => radio}/src/bitmaps/asterisk_4bits.lbm (100%) rename {transmitter => radio}/src/bitmaps/asterisk_4bits.png (100%) rename {transmitter => radio}/src/bitmaps/icons.lbm (100%) rename {transmitter => radio}/src/bitmaps/icons.png (100%) rename {transmitter => radio}/src/bitmaps/logo_taranis.bmp (100%) rename {transmitter => radio}/src/bitmaps/logo_taranis.lbm (100%) rename {transmitter => radio}/src/bitmaps/splash_9x.lbm (100%) rename {transmitter => radio}/src/bitmaps/splash_9x.xbm (100%) rename {transmitter => radio}/src/bitmaps/splash_taranis.lbm (100%) rename {transmitter => radio}/src/bitmaps/splash_taranis.png (100%) rename {transmitter => radio}/src/bitmaps/sticks.lbm (100%) rename {transmitter => radio}/src/bitmaps/sticks_4x1.xbm (100%) rename {transmitter => radio}/src/bmp.cpp (100%) rename {transmitter => radio}/src/buzzer.cpp (100%) rename {transmitter => radio}/src/buzzer.h (100%) rename {transmitter => radio}/src/debug.cpp (100%) rename {transmitter => radio}/src/debug.h (100%) rename {transmitter => radio}/src/eeprom_common.cpp (100%) rename {transmitter => radio}/src/eeprom_common.h (100%) rename {transmitter => radio}/src/eeprom_conversions.cpp (100%) rename {transmitter => radio}/src/eeprom_raw.cpp (100%) rename {transmitter => radio}/src/eeprom_raw.h (100%) rename {transmitter => radio}/src/eeprom_rlc.cpp (100%) rename {transmitter => radio}/src/eeprom_rlc.h (100%) rename {transmitter => radio}/src/fifo.h (100%) rename {transmitter => radio}/src/fonts/sqt5/font_04x06.lbm (100%) rename {transmitter => radio}/src/fonts/sqt5/font_04x06.png (100%) rename {transmitter => radio}/src/fonts/sqt5/font_05x07.lbm (100%) rename {transmitter => radio}/src/fonts/sqt5/font_05x07.png (100%) rename {transmitter => radio}/src/fonts/sqt5/font_08x10.lbm (100%) rename {transmitter => radio}/src/fonts/sqt5/font_08x10.png (100%) rename {transmitter => radio}/src/fonts/sqt5/font_10x14.lbm (100%) rename {transmitter => radio}/src/fonts/sqt5/font_10x14.png (100%) rename {transmitter => radio}/src/fonts/sqt5/font_10x14_compressed.lbm (100%) rename {transmitter => radio}/src/fonts/sqt5/font_10x14_compressed.png (100%) rename {transmitter => radio}/src/fonts/sqt5/font_cz_04x06.lbm (100%) rename {transmitter => radio}/src/fonts/sqt5/font_cz_04x06.png (100%) rename {transmitter => radio}/src/fonts/sqt5/font_cz_05x07.lbm (100%) rename {transmitter => radio}/src/fonts/sqt5/font_cz_05x07.png (100%) rename {transmitter => radio}/src/fonts/sqt5/font_cz_08x10.lbm (100%) rename {transmitter => radio}/src/fonts/sqt5/font_cz_08x10.png (100%) rename {transmitter => radio}/src/fonts/sqt5/font_cz_10x14.lbm (100%) rename {transmitter => radio}/src/fonts/sqt5/font_cz_10x14.png (100%) rename {transmitter => radio}/src/fonts/sqt5/font_de_04x06.lbm (100%) rename {transmitter => radio}/src/fonts/sqt5/font_de_04x06.png (100%) rename {transmitter => radio}/src/fonts/sqt5/font_de_05x07.lbm (100%) rename {transmitter => radio}/src/fonts/sqt5/font_de_05x07.png (100%) rename {transmitter => radio}/src/fonts/sqt5/font_de_08x10.lbm (100%) rename {transmitter => radio}/src/fonts/sqt5/font_de_08x10.png (100%) rename {transmitter => radio}/src/fonts/sqt5/font_de_10x14.lbm (100%) rename {transmitter => radio}/src/fonts/sqt5/font_de_10x14.png (100%) rename {transmitter => radio}/src/fonts/sqt5/font_es_04x06.lbm (100%) rename {transmitter => radio}/src/fonts/sqt5/font_es_04x06.png (100%) rename {transmitter => radio}/src/fonts/sqt5/font_es_05x07.lbm (100%) rename {transmitter => radio}/src/fonts/sqt5/font_es_05x07.png (100%) rename {transmitter => radio}/src/fonts/sqt5/font_es_08x10.lbm (100%) rename {transmitter => radio}/src/fonts/sqt5/font_es_08x10.png (100%) rename {transmitter => radio}/src/fonts/sqt5/font_es_10x14.lbm (100%) rename {transmitter => radio}/src/fonts/sqt5/font_es_10x14.png (100%) rename {transmitter => radio}/src/fonts/sqt5/font_fr_04x06.lbm (100%) rename {transmitter => radio}/src/fonts/sqt5/font_fr_04x06.png (100%) rename {transmitter => radio}/src/fonts/sqt5/font_fr_05x07.lbm (100%) rename {transmitter => radio}/src/fonts/sqt5/font_fr_05x07.png (100%) rename {transmitter => radio}/src/fonts/sqt5/font_fr_08x10.lbm (100%) rename {transmitter => radio}/src/fonts/sqt5/font_fr_08x10.png (100%) rename {transmitter => radio}/src/fonts/sqt5/font_fr_10x14.lbm (100%) rename {transmitter => radio}/src/fonts/sqt5/font_fr_10x14.png (100%) rename {transmitter => radio}/src/fonts/sqt5/font_it_04x06.lbm (100%) rename {transmitter => radio}/src/fonts/sqt5/font_it_04x06.png (100%) rename {transmitter => radio}/src/fonts/sqt5/font_it_05x07.lbm (100%) rename {transmitter => radio}/src/fonts/sqt5/font_it_05x07.png (100%) rename {transmitter => radio}/src/fonts/sqt5/font_it_08x10.lbm (100%) rename {transmitter => radio}/src/fonts/sqt5/font_it_08x10.png (100%) rename {transmitter => radio}/src/fonts/sqt5/font_it_10x14.lbm (100%) rename {transmitter => radio}/src/fonts/sqt5/font_it_10x14.png (100%) rename {transmitter => radio}/src/fonts/sqt5/font_pt_05x07.lbm (100%) rename {transmitter => radio}/src/fonts/sqt5/font_pt_05x07.png (100%) rename {transmitter => radio}/src/fonts/sqt5/font_pt_08x10.lbm (100%) rename {transmitter => radio}/src/fonts/sqt5/font_pt_08x10.png (100%) rename {transmitter => radio}/src/fonts/sqt5/font_pt_10x14.lbm (100%) rename {transmitter => radio}/src/fonts/sqt5/font_pt_10x14.png (100%) rename {transmitter => radio}/src/fonts/sqt5/font_se_04x06.lbm (100%) rename {transmitter => radio}/src/fonts/sqt5/font_se_04x06.png (100%) rename {transmitter => radio}/src/fonts/sqt5/font_se_05x07.lbm (100%) rename {transmitter => radio}/src/fonts/sqt5/font_se_05x07.png (100%) rename {transmitter => radio}/src/fonts/sqt5/font_se_08x10.lbm (100%) rename {transmitter => radio}/src/fonts/sqt5/font_se_08x10.png (100%) rename {transmitter => radio}/src/fonts/sqt5/font_se_10x14.lbm (100%) rename {transmitter => radio}/src/fonts/sqt5/font_se_10x14.png (100%) rename {transmitter => radio}/src/fonts/std/font_03x05.lbm (100%) rename {transmitter => radio}/src/fonts/std/font_03x05.png (100%) rename {transmitter => radio}/src/fonts/std/font_04x06.lbm (100%) rename {transmitter => radio}/src/fonts/std/font_04x06.png (100%) rename {transmitter => radio}/src/fonts/std/font_04x06_extra.lbm (100%) rename {transmitter => radio}/src/fonts/std/font_04x06_extra.png (100%) rename {transmitter => radio}/src/fonts/std/font_05x07.lbm (100%) rename {transmitter => radio}/src/fonts/std/font_05x07.png (100%) rename {transmitter => radio}/src/fonts/std/font_05x07_extra.lbm (100%) rename {transmitter => radio}/src/fonts/std/font_05x07_extra.png (100%) rename {transmitter => radio}/src/fonts/std/font_08x10.lbm (100%) rename {transmitter => radio}/src/fonts/std/font_08x10.png (100%) rename {transmitter => radio}/src/fonts/std/font_10x14.lbm (100%) rename {transmitter => radio}/src/fonts/std/font_10x14.png (100%) rename {transmitter => radio}/src/fonts/std/font_10x14_compressed.lbm (100%) rename {transmitter => radio}/src/fonts/std/font_10x14_compressed.png (100%) rename {transmitter => radio}/src/fonts/std/font_10x14_extra.lbm (100%) rename {transmitter => radio}/src/fonts/std/font_10x14_extra.png (100%) rename {transmitter => radio}/src/fonts/std/font_cz_04x06.lbm (100%) rename {transmitter => radio}/src/fonts/std/font_cz_04x06.png (100%) rename {transmitter => radio}/src/fonts/std/font_cz_05x07.lbm (100%) rename {transmitter => radio}/src/fonts/std/font_cz_05x07.png (100%) rename {transmitter => radio}/src/fonts/std/font_cz_08x10.lbm (100%) rename {transmitter => radio}/src/fonts/std/font_cz_08x10.png (100%) rename {transmitter => radio}/src/fonts/std/font_cz_10x14.lbm (100%) rename {transmitter => radio}/src/fonts/std/font_cz_10x14.png (100%) rename {transmitter => radio}/src/fonts/std/font_de_04x06.lbm (100%) rename {transmitter => radio}/src/fonts/std/font_de_04x06.png (100%) rename {transmitter => radio}/src/fonts/std/font_de_05x07.lbm (100%) rename {transmitter => radio}/src/fonts/std/font_de_05x07.png (100%) rename {transmitter => radio}/src/fonts/std/font_de_08x10.lbm (100%) rename {transmitter => radio}/src/fonts/std/font_de_08x10.png (100%) rename {transmitter => radio}/src/fonts/std/font_de_10x14.lbm (100%) rename {transmitter => radio}/src/fonts/std/font_de_10x14.png (100%) rename {transmitter => radio}/src/fonts/std/font_es_04x06.lbm (100%) rename {transmitter => radio}/src/fonts/std/font_es_04x06.png (100%) rename {transmitter => radio}/src/fonts/std/font_es_05x07.lbm (100%) rename {transmitter => radio}/src/fonts/std/font_es_05x07.png (100%) rename {transmitter => radio}/src/fonts/std/font_es_08x10.lbm (100%) rename {transmitter => radio}/src/fonts/std/font_es_08x10.png (100%) rename {transmitter => radio}/src/fonts/std/font_es_10x14.lbm (100%) rename {transmitter => radio}/src/fonts/std/font_es_10x14.png (100%) rename {transmitter => radio}/src/fonts/std/font_fr_04x06.lbm (100%) rename {transmitter => radio}/src/fonts/std/font_fr_04x06.png (100%) rename {transmitter => radio}/src/fonts/std/font_fr_05x07.lbm (100%) rename {transmitter => radio}/src/fonts/std/font_fr_05x07.png (100%) rename {transmitter => radio}/src/fonts/std/font_fr_08x10.lbm (100%) rename {transmitter => radio}/src/fonts/std/font_fr_08x10.png (100%) rename {transmitter => radio}/src/fonts/std/font_fr_10x14.lbm (100%) rename {transmitter => radio}/src/fonts/std/font_fr_10x14.png (100%) rename {transmitter => radio}/src/fonts/std/font_it_04x06.lbm (100%) rename {transmitter => radio}/src/fonts/std/font_it_04x06.png (100%) rename {transmitter => radio}/src/fonts/std/font_it_05x07.lbm (100%) rename {transmitter => radio}/src/fonts/std/font_it_05x07.png (100%) rename {transmitter => radio}/src/fonts/std/font_it_08x10.lbm (100%) rename {transmitter => radio}/src/fonts/std/font_it_08x10.png (100%) rename {transmitter => radio}/src/fonts/std/font_it_10x14.lbm (100%) rename {transmitter => radio}/src/fonts/std/font_it_10x14.png (100%) rename {transmitter => radio}/src/fonts/std/font_pt_04x06.lbm (100%) rename {transmitter => radio}/src/fonts/std/font_pt_04x06.png (100%) rename {transmitter => radio}/src/fonts/std/font_pt_05x07.lbm (100%) rename {transmitter => radio}/src/fonts/std/font_pt_05x07.png (100%) rename {transmitter => radio}/src/fonts/std/font_pt_08x10.lbm (100%) rename {transmitter => radio}/src/fonts/std/font_pt_08x10.png (100%) rename {transmitter => radio}/src/fonts/std/font_pt_10x14.lbm (100%) rename {transmitter => radio}/src/fonts/std/font_pt_10x14.png (100%) rename {transmitter => radio}/src/fonts/std/font_se_04x06.lbm (100%) rename {transmitter => radio}/src/fonts/std/font_se_04x06.png (100%) rename {transmitter => radio}/src/fonts/std/font_se_05x07.lbm (100%) rename {transmitter => radio}/src/fonts/std/font_se_05x07.png (100%) rename {transmitter => radio}/src/fonts/std/font_se_08x10.lbm (100%) rename {transmitter => radio}/src/fonts/std/font_se_08x10.png (100%) rename {transmitter => radio}/src/fonts/std/font_se_10x14.lbm (100%) rename {transmitter => radio}/src/fonts/std/font_se_10x14.png (100%) rename {transmitter => radio}/src/gtests.cpp (100%) rename {transmitter => radio}/src/gui/menu_general.cpp (100%) rename {transmitter => radio}/src/gui/menu_model.cpp (100%) rename {transmitter => radio}/src/gui/menus.cpp (100%) rename {transmitter => radio}/src/gui/menus.h (100%) rename {transmitter => radio}/src/gui/view_about.cpp (100%) rename {transmitter => radio}/src/gui/view_channels.cpp (100%) rename {transmitter => radio}/src/gui/view_main.cpp (100%) rename {transmitter => radio}/src/gui/view_mavlink.cpp (100%) rename {transmitter => radio}/src/gui/view_mavlink.h (100%) rename {transmitter => radio}/src/gui/view_statistics.cpp (100%) rename {transmitter => radio}/src/gui/view_telemetry.cpp (100%) rename {transmitter => radio}/src/gui/view_text.cpp (100%) rename {transmitter => radio}/src/haptic.cpp (100%) rename {transmitter => radio}/src/haptic.h (100%) rename {transmitter => radio}/src/keys.cpp (100%) rename {transmitter => radio}/src/lcd.cpp (100%) rename {transmitter => radio}/src/lcd.h (100%) rename {transmitter => radio}/src/logs.cpp (100%) rename {transmitter => radio}/src/maths.cpp (100%) rename {transmitter => radio}/src/myeeprom.h (100%) rename {transmitter => radio}/src/opentx.cpp (100%) rename {transmitter => radio}/src/opentx.h (100%) rename {transmitter => radio}/src/pgmtypes.h (100%) rename {transmitter => radio}/src/protocols/dsm2_arm.cpp (100%) rename {transmitter => radio}/src/protocols/ppm_arm.cpp (100%) rename {transmitter => radio}/src/protocols/pulses_arm.cpp (100%) rename {transmitter => radio}/src/protocols/pulses_arm.h (100%) rename {transmitter => radio}/src/protocols/pulses_avr.cpp (100%) rename {transmitter => radio}/src/protocols/pulses_avr.h (100%) rename {transmitter => radio}/src/protocols/pxx_arm.cpp (100%) rename {transmitter => radio}/src/rtc.cpp (100%) rename {transmitter => radio}/src/rtc.h (100%) rename {transmitter => radio}/src/sdcard.h (100%) rename {transmitter => radio}/src/serial.cpp (100%) rename {transmitter => radio}/src/serial.h (100%) rename {transmitter => radio}/src/simpgmspace.cpp (100%) rename {transmitter => radio}/src/simpgmspace.h (100%) rename {transmitter => radio}/src/simu.cpp (100%) rename {transmitter => radio}/src/stamp.cpp (100%) rename {transmitter => radio}/src/targets/gruvin9x/board_gruvin9x.cpp (100%) rename {transmitter => radio}/src/targets/gruvin9x/board_gruvin9x.h (100%) rename {transmitter => radio}/src/targets/gruvin9x/diskio.cpp (100%) rename {transmitter => radio}/src/targets/gruvin9x/fuses_2561.txt (100%) rename {transmitter => radio}/src/targets/gruvin9x/rtc_driver.cpp (100%) rename {transmitter => radio}/src/targets/gruvin9x/somo14d.cpp (100%) rename {transmitter => radio}/src/targets/gruvin9x/somo14d.h (100%) rename {transmitter => radio}/src/targets/mega2560/00readme.txt (100%) rename {transmitter => radio}/src/targets/mega2560/board_mega2560.cpp (100%) rename {transmitter => radio}/src/targets/mega2560/board_mega2560.h (100%) rename {transmitter => radio}/src/targets/mega2560/io_mega2560.h (100%) rename {transmitter => radio}/src/targets/mega2560/lcd_driver_ST7565R.cpp (100%) rename {transmitter => radio}/src/targets/mega2560/rtc_driver.cpp (100%) rename {transmitter => radio}/src/targets/sky9x/AT91SAM3S2.h (100%) rename {transmitter => radio}/src/targets/sky9x/AT91SAM3S4.h (100%) rename {transmitter => radio}/src/targets/sky9x/MEDSdcard.c (100%) rename {transmitter => radio}/src/targets/sky9x/Media.h (100%) rename {transmitter => radio}/src/targets/sky9x/adc_driver.cpp (100%) rename {transmitter => radio}/src/targets/sky9x/audio_driver.cpp (100%) rename {transmitter => radio}/src/targets/sky9x/audio_driver.h (100%) rename {transmitter => radio}/src/targets/sky9x/bluetooth.cpp (100%) rename {transmitter => radio}/src/targets/sky9x/board.h (100%) rename {transmitter => radio}/src/targets/sky9x/board_lowlevel.c (100%) rename {transmitter => radio}/src/targets/sky9x/board_sky9x.cpp (100%) rename {transmitter => radio}/src/targets/sky9x/board_sky9x.h (100%) rename {transmitter => radio}/src/targets/sky9x/buzzer_driver.cpp (100%) rename {transmitter => radio}/src/targets/sky9x/chip.h (100%) rename {transmitter => radio}/src/targets/sky9x/coproc_driver.cpp (100%) rename {transmitter => radio}/src/targets/sky9x/core_cm3.c (100%) rename {transmitter => radio}/src/targets/sky9x/core_cm3.h (100%) rename {transmitter => radio}/src/targets/sky9x/crt.c (100%) rename {transmitter => radio}/src/targets/sky9x/debug_driver.cpp (100%) rename {transmitter => radio}/src/targets/sky9x/diskio.cpp (100%) rename {transmitter => radio}/src/targets/sky9x/eeprom_driver.cpp (100%) rename {transmitter => radio}/src/targets/sky9x/haptic_driver.cpp (100%) rename {transmitter => radio}/src/targets/sky9x/keys_driver.cpp (100%) rename {transmitter => radio}/src/targets/sky9x/lcd_driver.cpp (100%) rename {transmitter => radio}/src/targets/sky9x/massstorage.cpp (100%) rename {transmitter => radio}/src/targets/sky9x/pulses_driver.cpp (100%) rename {transmitter => radio}/src/targets/sky9x/pwr_driver.cpp (100%) rename {transmitter => radio}/src/targets/sky9x/rotenc_driver.cpp (100%) rename {transmitter => radio}/src/targets/sky9x/rtc_driver.cpp (100%) rename {transmitter => radio}/src/targets/sky9x/sam3s2c_flash.ld (100%) rename {transmitter => radio}/src/targets/sky9x/sam3s4c_flash.ld (100%) rename {transmitter => radio}/src/targets/sky9x/sdcard_driver.cpp (100%) rename {transmitter => radio}/src/targets/sky9x/syscalls.c (100%) rename {transmitter => radio}/src/targets/sky9x/usb/common/core/USBConfigurationDescriptor.c (100%) rename {transmitter => radio}/src/targets/sky9x/usb/common/core/USBConfigurationDescriptor.h (100%) rename {transmitter => radio}/src/targets/sky9x/usb/common/core/USBDeviceDescriptor.h (100%) rename {transmitter => radio}/src/targets/sky9x/usb/common/core/USBDeviceQualifierDescriptor.h (100%) rename {transmitter => radio}/src/targets/sky9x/usb/common/core/USBEndpointDescriptor.c (100%) rename {transmitter => radio}/src/targets/sky9x/usb/common/core/USBEndpointDescriptor.h (100%) rename {transmitter => radio}/src/targets/sky9x/usb/common/core/USBFeatureRequest.c (100%) rename {transmitter => radio}/src/targets/sky9x/usb/common/core/USBFeatureRequest.h (100%) rename {transmitter => radio}/src/targets/sky9x/usb/common/core/USBGenericDescriptor.c (100%) rename {transmitter => radio}/src/targets/sky9x/usb/common/core/USBGenericDescriptor.h (100%) rename {transmitter => radio}/src/targets/sky9x/usb/common/core/USBGenericRequest.c (100%) rename {transmitter => radio}/src/targets/sky9x/usb/common/core/USBGenericRequest.h (100%) rename {transmitter => radio}/src/targets/sky9x/usb/common/core/USBGetDescriptorRequest.c (100%) rename {transmitter => radio}/src/targets/sky9x/usb/common/core/USBGetDescriptorRequest.h (100%) rename {transmitter => radio}/src/targets/sky9x/usb/common/core/USBInterfaceAssociationDescriptor.h (100%) rename {transmitter => radio}/src/targets/sky9x/usb/common/core/USBInterfaceDescriptor.h (100%) rename {transmitter => radio}/src/targets/sky9x/usb/common/core/USBInterfaceRequest.c (100%) rename {transmitter => radio}/src/targets/sky9x/usb/common/core/USBInterfaceRequest.h (100%) rename {transmitter => radio}/src/targets/sky9x/usb/common/core/USBIrqHandler.c (100%) rename {transmitter => radio}/src/targets/sky9x/usb/common/core/USBIrqHandler.h (100%) rename {transmitter => radio}/src/targets/sky9x/usb/common/core/USBSetAddressRequest.c (100%) rename {transmitter => radio}/src/targets/sky9x/usb/common/core/USBSetAddressRequest.h (100%) rename {transmitter => radio}/src/targets/sky9x/usb/common/core/USBSetConfigurationRequest.c (100%) rename {transmitter => radio}/src/targets/sky9x/usb/common/core/USBSetConfigurationRequest.h (100%) rename {transmitter => radio}/src/targets/sky9x/usb/common/core/USBStringDescriptor.h (100%) rename {transmitter => radio}/src/targets/sky9x/usb/common/massstorage/MSDeviceDescriptor.h (100%) rename {transmitter => radio}/src/targets/sky9x/usb/common/massstorage/MSInterfaceDescriptor.h (100%) rename {transmitter => radio}/src/targets/sky9x/usb/device/core/USBD.h (100%) rename {transmitter => radio}/src/targets/sky9x/usb/device/core/USBDDriver.c (100%) rename {transmitter => radio}/src/targets/sky9x/usb/device/core/USBDDriver.h (100%) rename {transmitter => radio}/src/targets/sky9x/usb/device/core/USBDDriverDescriptors.h (100%) rename {transmitter => radio}/src/targets/sky9x/usb/device/core/USBD_UDP.c (100%) rename {transmitter => radio}/src/targets/sky9x/usb/device/massstorage/MSD.h (100%) rename {transmitter => radio}/src/targets/sky9x/usb/device/massstorage/MSDDStateMachine.c (100%) rename {transmitter => radio}/src/targets/sky9x/usb/device/massstorage/MSDDStateMachine.h (100%) rename {transmitter => radio}/src/targets/sky9x/usb/device/massstorage/MSDDriver.c (100%) rename {transmitter => radio}/src/targets/sky9x/usb/device/massstorage/MSDDriver.h (100%) rename {transmitter => radio}/src/targets/sky9x/usb/device/massstorage/MSDDriverDescriptors.c (100%) rename {transmitter => radio}/src/targets/sky9x/usb/device/massstorage/MSDDriverDescriptors.h (100%) rename {transmitter => radio}/src/targets/sky9x/usb/device/massstorage/MSDIOFifo.h (100%) rename {transmitter => radio}/src/targets/sky9x/usb/device/massstorage/MSDLun.c (100%) rename {transmitter => radio}/src/targets/sky9x/usb/device/massstorage/MSDLun.h (100%) rename {transmitter => radio}/src/targets/sky9x/usb/device/massstorage/SBC.h (100%) rename {transmitter => radio}/src/targets/sky9x/usb/device/massstorage/SBCMethods.c (100%) rename {transmitter => radio}/src/targets/sky9x/usb/device/massstorage/SBCMethods.h (100%) rename {transmitter => radio}/src/targets/sky9x/vectors_sam3s.c (100%) rename {transmitter => radio}/src/targets/stock/board_stock.cpp (100%) rename {transmitter => radio}/src/targets/stock/board_stock.h (100%) rename {transmitter => radio}/src/targets/stock/lcd_driver.cpp (100%) rename {transmitter => radio}/src/targets/stock/voice.cpp (100%) rename {transmitter => radio}/src/targets/stock/voice.h (100%) rename {transmitter => radio}/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Device/ST/STM32F2xx/Include/stm32f2xx.h (100%) rename {transmitter => radio}/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Device/ST/STM32F2xx/Include/system_stm32f2xx.h (100%) rename {transmitter => radio}/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Device/ST/STM32F2xx/Source/Templates/gcc_ride7/startup_stm32f2xx.s (100%) rename {transmitter => radio}/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Device/ST/STM32F2xx/Source/Templates/system_stm32f2xx.c (100%) rename {transmitter => radio}/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Include/arm_common_tables.h (100%) rename {transmitter => radio}/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Include/arm_math.h (100%) rename {transmitter => radio}/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Include/core_cm0.h (100%) rename {transmitter => radio}/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Include/core_cm3.h (100%) rename {transmitter => radio}/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Include/core_cm4.h (100%) rename {transmitter => radio}/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Include/core_cm4_simd.h (100%) rename {transmitter => radio}/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Include/core_cmFunc.h (100%) rename {transmitter => radio}/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Include/core_cmInstr.h (100%) rename {transmitter => radio}/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/misc.h (100%) rename {transmitter => radio}/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_adc.h (100%) rename {transmitter => radio}/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_can.h (100%) rename {transmitter => radio}/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_crc.h (100%) rename {transmitter => radio}/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_cryp.h (100%) rename {transmitter => radio}/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_dac.h (100%) rename {transmitter => radio}/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_dbgmcu.h (100%) rename {transmitter => radio}/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_dcmi.h (100%) rename {transmitter => radio}/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_dma.h (100%) rename {transmitter => radio}/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_exti.h (100%) rename {transmitter => radio}/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_flash.h (100%) rename {transmitter => radio}/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_fsmc.h (100%) rename {transmitter => radio}/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_gpio.h (100%) rename {transmitter => radio}/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_hash.h (100%) rename {transmitter => radio}/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_i2c.h (100%) rename {transmitter => radio}/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_iwdg.h (100%) rename {transmitter => radio}/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_pwr.h (100%) rename {transmitter => radio}/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_rcc.h (100%) rename {transmitter => radio}/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_rng.h (100%) rename {transmitter => radio}/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_rtc.h (100%) rename {transmitter => radio}/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_sdio.h (100%) rename {transmitter => radio}/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_spi.h (100%) rename {transmitter => radio}/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_syscfg.h (100%) rename {transmitter => radio}/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_tim.h (100%) rename {transmitter => radio}/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_usart.h (100%) rename {transmitter => radio}/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_wwdg.h (100%) rename {transmitter => radio}/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/misc.c (100%) rename {transmitter => radio}/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_adc.c (100%) rename {transmitter => radio}/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_can.c (100%) rename {transmitter => radio}/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_crc.c (100%) rename {transmitter => radio}/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_cryp.c (100%) rename {transmitter => radio}/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_cryp_aes.c (100%) rename {transmitter => radio}/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_cryp_des.c (100%) rename {transmitter => radio}/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_cryp_tdes.c (100%) rename {transmitter => radio}/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_dac.c (100%) rename {transmitter => radio}/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_dbgmcu.c (100%) rename {transmitter => radio}/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_dcmi.c (100%) rename {transmitter => radio}/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_dma.c (100%) rename {transmitter => radio}/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_exti.c (100%) rename {transmitter => radio}/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_flash.c (100%) rename {transmitter => radio}/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_fsmc.c (100%) rename {transmitter => radio}/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_gpio.c (100%) rename {transmitter => radio}/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_hash.c (100%) rename {transmitter => radio}/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_hash_md5.c (100%) rename {transmitter => radio}/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_hash_sha1.c (100%) rename {transmitter => radio}/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_i2c.c (100%) rename {transmitter => radio}/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_iwdg.c (100%) rename {transmitter => radio}/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_pwr.c (100%) rename {transmitter => radio}/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_rcc.c (100%) rename {transmitter => radio}/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_rng.c (100%) rename {transmitter => radio}/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_rtc.c (100%) rename {transmitter => radio}/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_sdio.c (100%) rename {transmitter => radio}/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_spi.c (100%) rename {transmitter => radio}/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_syscfg.c (100%) rename {transmitter => radio}/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_tim.c (100%) rename {transmitter => radio}/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_usart.c (100%) rename {transmitter => radio}/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_wwdg.c (100%) rename {transmitter => radio}/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/audio/inc/usbd_audio_core.h (100%) rename {transmitter => radio}/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/audio/inc/usbd_audio_out_if.h (100%) rename {transmitter => radio}/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/audio/src/usbd_audio_core.c (100%) rename {transmitter => radio}/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/audio/src/usbd_audio_out_if.c (100%) rename {transmitter => radio}/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/cdc/inc/usbd_cdc_core.h (100%) rename {transmitter => radio}/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/cdc/inc/usbd_cdc_if_template.h (100%) rename {transmitter => radio}/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/cdc/src/usbd_cdc_core.c (100%) rename {transmitter => radio}/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/cdc/src/usbd_cdc_if_template.c (100%) rename {transmitter => radio}/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_dfu_core.h (100%) rename {transmitter => radio}/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_dfu_mal.h (100%) rename {transmitter => radio}/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_flash_if.h (100%) rename {transmitter => radio}/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_mem_if_template.h (100%) rename {transmitter => radio}/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_otp_if.h (100%) rename {transmitter => radio}/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_dfu_core.c (100%) rename {transmitter => radio}/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_dfu_mal.c (100%) rename {transmitter => radio}/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_flash_if.c (100%) rename {transmitter => radio}/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_mem_if_template.c (100%) rename {transmitter => radio}/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_otp_if.c (100%) rename {transmitter => radio}/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/hid/inc/usbd_hid_core.h (100%) rename {transmitter => radio}/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/hid/src/usbd_hid_core.c (100%) rename {transmitter => radio}/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_bot.h (100%) rename {transmitter => radio}/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_core.h (100%) rename {transmitter => radio}/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_data.h (100%) rename {transmitter => radio}/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_mem.h (100%) rename {transmitter => radio}/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_scsi.h (100%) rename {transmitter => radio}/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_bot.c (100%) rename {transmitter => radio}/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_core.c (100%) rename {transmitter => radio}/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_data.c (100%) rename {transmitter => radio}/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_scsi.c (100%) rename {transmitter => radio}/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_conf_template.h (100%) rename {transmitter => radio}/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_core.h (100%) rename {transmitter => radio}/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_def.h (100%) rename {transmitter => radio}/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_ioreq.h (100%) rename {transmitter => radio}/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_req.h (100%) rename {transmitter => radio}/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_usr.h (100%) rename {transmitter => radio}/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/src/usbd_core.c (100%) rename {transmitter => radio}/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/src/usbd_ioreq.c (100%) rename {transmitter => radio}/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/src/usbd_req.c (100%) rename {transmitter => radio}/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Release_Notes.html (100%) rename {transmitter => radio}/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/Release_Notes.html (100%) rename {transmitter => radio}/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_bsp.h (100%) rename {transmitter => radio}/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_conf_template.h (100%) rename {transmitter => radio}/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_core.h (100%) rename {transmitter => radio}/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_dcd.h (100%) rename {transmitter => radio}/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_dcd_int.h (100%) rename {transmitter => radio}/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_defines.h (100%) rename {transmitter => radio}/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_hcd.h (100%) rename {transmitter => radio}/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_hcd_int.h (100%) rename {transmitter => radio}/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_otg.h (100%) rename {transmitter => radio}/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_regs.h (100%) rename {transmitter => radio}/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/src/usb_core.c (100%) rename {transmitter => radio}/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/src/usb_dcd.c (100%) rename {transmitter => radio}/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/src/usb_dcd_int.c (100%) rename {transmitter => radio}/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/src/usb_hcd.c (100%) rename {transmitter => radio}/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/src/usb_hcd_int.c (100%) rename {transmitter => radio}/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/src/usb_otg.c (100%) rename {transmitter => radio}/src/targets/taranis/adc_driver.cpp (100%) rename {transmitter => radio}/src/targets/taranis/aspi.cpp (100%) rename {transmitter => radio}/src/targets/taranis/aspi.h (100%) rename {transmitter => radio}/src/targets/taranis/audio_driver.cpp (100%) rename {transmitter => radio}/src/targets/taranis/audio_driver.h (100%) rename {transmitter => radio}/src/targets/taranis/board_taranis.cpp (100%) rename {transmitter => radio}/src/targets/taranis/board_taranis.h (100%) rename {transmitter => radio}/src/targets/taranis/delays.cpp (100%) rename {transmitter => radio}/src/targets/taranis/diskio.cpp (100%) rename {transmitter => radio}/src/targets/taranis/hal.h (100%) rename {transmitter => radio}/src/targets/taranis/i2c.c (100%) rename {transmitter => radio}/src/targets/taranis/i2c.h (100%) rename {transmitter => radio}/src/targets/taranis/keys_driver.cpp (100%) rename {transmitter => radio}/src/targets/taranis/lcd_driver.cpp (100%) rename {transmitter => radio}/src/targets/taranis/pulses_driver.cpp (100%) rename {transmitter => radio}/src/targets/taranis/pwr_driver.cpp (100%) rename {transmitter => radio}/src/targets/taranis/rtc_driver.cpp (100%) rename {transmitter => radio}/src/targets/taranis/sport_driver.cpp (100%) rename {transmitter => radio}/src/targets/taranis/stm32_flash.ld (100%) rename {transmitter => radio}/src/targets/taranis/trainer_driver.cpp (100%) rename {transmitter => radio}/src/targets/taranis/uart_driver.cpp (100%) rename {transmitter => radio}/src/targets/taranis/usb_bsp.c (100%) rename {transmitter => radio}/src/targets/taranis/usb_conf.h (100%) rename {transmitter => radio}/src/targets/taranis/usbd_conf.h (100%) rename {transmitter => radio}/src/targets/taranis/usbd_desc.c (100%) rename {transmitter => radio}/src/targets/taranis/usbd_desc.h (100%) rename {transmitter => radio}/src/targets/taranis/usbd_storage_msd.cpp (100%) rename {transmitter => radio}/src/targets/taranis/usbd_usr.cpp (100%) rename {transmitter => radio}/src/telemetry/ardupilot.cpp (100%) rename {transmitter => radio}/src/telemetry/ardupilot.h (100%) rename {transmitter => radio}/src/telemetry/frsky.cpp (100%) rename {transmitter => radio}/src/telemetry/frsky.h (100%) rename {transmitter => radio}/src/telemetry/frsky_sport.cpp (100%) rename {transmitter => radio}/src/telemetry/frsky_sport.h (100%) rename {transmitter => radio}/src/telemetry/jeti.cpp (100%) rename {transmitter => radio}/src/telemetry/jeti.h (100%) rename {transmitter => radio}/src/telemetry/mavlink.cpp (100%) rename {transmitter => radio}/src/telemetry/mavlink.h (100%) rename {transmitter => radio}/src/telemetry/nmea.cpp (100%) rename {transmitter => radio}/src/telemetry/nmea.h (100%) rename {transmitter => radio}/src/templates.cpp (100%) rename {transmitter => radio}/src/templates.h (100%) rename {transmitter => radio}/src/translations.cpp (100%) rename {transmitter => radio}/src/translations.h (100%) rename {transmitter => radio}/src/translations/cz.h (100%) rename {transmitter => radio}/src/translations/cz.h.txt (100%) rename {transmitter => radio}/src/translations/de.h (100%) rename {transmitter => radio}/src/translations/de.h.txt (100%) rename {transmitter => radio}/src/translations/en.h (100%) rename {transmitter => radio}/src/translations/es.h (100%) rename {transmitter => radio}/src/translations/es.h.txt (100%) rename {transmitter => radio}/src/translations/fr.h (100%) rename {transmitter => radio}/src/translations/fr.h.txt (100%) rename {transmitter => radio}/src/translations/it.h (100%) rename {transmitter => radio}/src/translations/it.h.txt (100%) rename {transmitter => radio}/src/translations/pl.h (100%) rename {transmitter => radio}/src/translations/pl.h.txt (100%) rename {transmitter => radio}/src/translations/pt.h (100%) rename {transmitter => radio}/src/translations/pt.h.txt (100%) rename {transmitter => radio}/src/translations/se.h (100%) rename {transmitter => radio}/src/translations/se.h.txt (100%) rename {transmitter => radio}/src/translations/tts_cz.cpp (100%) rename {transmitter => radio}/src/translations/tts_de.cpp (100%) rename {transmitter => radio}/src/translations/tts_en.cpp (100%) rename {transmitter => radio}/src/translations/tts_es.cpp (100%) rename {transmitter => radio}/src/translations/tts_fr.cpp (100%) rename {transmitter => radio}/src/translations/tts_it.cpp (100%) rename {transmitter => radio}/src/translations/tts_pl.cpp (100%) rename {transmitter => radio}/src/translations/tts_pt.cpp (100%) rename {transmitter => radio}/src/translations/tts_se.cpp (100%) rename {transmitter => radio}/src/translations/tts_sk.cpp (100%) rename {transmitter => radio}/util/compile.py (100%) rename {transmitter => radio}/util/dsm2.py (100%) rename {transmitter => radio}/util/img2lbm.py (100%) rename {transmitter => radio}/util/maxvolume.cmd (100%) rename {transmitter => radio}/util/parse.py (100%) rename {transmitter => radio}/util/translate.py (100%) rename {transmitter => radio}/util/tts.py (100%) diff --git a/transmitter/releasenotes-9x.txt b/radio/releasenotes-9x.txt similarity index 100% rename from transmitter/releasenotes-9x.txt rename to radio/releasenotes-9x.txt diff --git a/transmitter/releasenotes-taranis.txt b/radio/releasenotes-taranis.txt similarity index 100% rename from transmitter/releasenotes-taranis.txt rename to radio/releasenotes-taranis.txt diff --git a/transmitter/src/CoOS/kernel/CoOS.h b/radio/src/CoOS/kernel/CoOS.h similarity index 100% rename from transmitter/src/CoOS/kernel/CoOS.h rename to radio/src/CoOS/kernel/CoOS.h diff --git a/transmitter/src/CoOS/kernel/OsConfig.h b/radio/src/CoOS/kernel/OsConfig.h similarity index 100% rename from transmitter/src/CoOS/kernel/OsConfig.h rename to radio/src/CoOS/kernel/OsConfig.h diff --git a/transmitter/src/CoOS/kernel/OsCore.h b/radio/src/CoOS/kernel/OsCore.h similarity index 100% rename from transmitter/src/CoOS/kernel/OsCore.h rename to radio/src/CoOS/kernel/OsCore.h diff --git a/transmitter/src/CoOS/kernel/OsError.h b/radio/src/CoOS/kernel/OsError.h similarity index 100% rename from transmitter/src/CoOS/kernel/OsError.h rename to radio/src/CoOS/kernel/OsError.h diff --git a/transmitter/src/CoOS/kernel/OsEvent.h b/radio/src/CoOS/kernel/OsEvent.h similarity index 100% rename from transmitter/src/CoOS/kernel/OsEvent.h rename to radio/src/CoOS/kernel/OsEvent.h diff --git a/transmitter/src/CoOS/kernel/OsFlag.h b/radio/src/CoOS/kernel/OsFlag.h similarity index 100% rename from transmitter/src/CoOS/kernel/OsFlag.h rename to radio/src/CoOS/kernel/OsFlag.h diff --git a/transmitter/src/CoOS/kernel/OsKernelHeap.h b/radio/src/CoOS/kernel/OsKernelHeap.h similarity index 100% rename from transmitter/src/CoOS/kernel/OsKernelHeap.h rename to radio/src/CoOS/kernel/OsKernelHeap.h diff --git a/transmitter/src/CoOS/kernel/OsMM.h b/radio/src/CoOS/kernel/OsMM.h similarity index 100% rename from transmitter/src/CoOS/kernel/OsMM.h rename to radio/src/CoOS/kernel/OsMM.h diff --git a/transmitter/src/CoOS/kernel/OsMutex.h b/radio/src/CoOS/kernel/OsMutex.h similarity index 100% rename from transmitter/src/CoOS/kernel/OsMutex.h rename to radio/src/CoOS/kernel/OsMutex.h diff --git a/transmitter/src/CoOS/kernel/OsQueue.h b/radio/src/CoOS/kernel/OsQueue.h similarity index 100% rename from transmitter/src/CoOS/kernel/OsQueue.h rename to radio/src/CoOS/kernel/OsQueue.h diff --git a/transmitter/src/CoOS/kernel/OsServiceReq.h b/radio/src/CoOS/kernel/OsServiceReq.h similarity index 100% rename from transmitter/src/CoOS/kernel/OsServiceReq.h rename to radio/src/CoOS/kernel/OsServiceReq.h diff --git a/transmitter/src/CoOS/kernel/OsTask.h b/radio/src/CoOS/kernel/OsTask.h similarity index 100% rename from transmitter/src/CoOS/kernel/OsTask.h rename to radio/src/CoOS/kernel/OsTask.h diff --git a/transmitter/src/CoOS/kernel/OsTime.h b/radio/src/CoOS/kernel/OsTime.h similarity index 100% rename from transmitter/src/CoOS/kernel/OsTime.h rename to radio/src/CoOS/kernel/OsTime.h diff --git a/transmitter/src/CoOS/kernel/OsTimer.h b/radio/src/CoOS/kernel/OsTimer.h similarity index 100% rename from transmitter/src/CoOS/kernel/OsTimer.h rename to radio/src/CoOS/kernel/OsTimer.h diff --git a/transmitter/src/CoOS/kernel/coocox.h b/radio/src/CoOS/kernel/coocox.h similarity index 100% rename from transmitter/src/CoOS/kernel/coocox.h rename to radio/src/CoOS/kernel/coocox.h diff --git a/transmitter/src/CoOS/kernel/core.c b/radio/src/CoOS/kernel/core.c similarity index 100% rename from transmitter/src/CoOS/kernel/core.c rename to radio/src/CoOS/kernel/core.c diff --git a/transmitter/src/CoOS/kernel/event.c b/radio/src/CoOS/kernel/event.c similarity index 100% rename from transmitter/src/CoOS/kernel/event.c rename to radio/src/CoOS/kernel/event.c diff --git a/transmitter/src/CoOS/kernel/flag.c b/radio/src/CoOS/kernel/flag.c similarity index 100% rename from transmitter/src/CoOS/kernel/flag.c rename to radio/src/CoOS/kernel/flag.c diff --git a/transmitter/src/CoOS/kernel/hook.c b/radio/src/CoOS/kernel/hook.c similarity index 100% rename from transmitter/src/CoOS/kernel/hook.c rename to radio/src/CoOS/kernel/hook.c diff --git a/transmitter/src/CoOS/kernel/kernelHeap.c b/radio/src/CoOS/kernel/kernelHeap.c similarity index 100% rename from transmitter/src/CoOS/kernel/kernelHeap.c rename to radio/src/CoOS/kernel/kernelHeap.c diff --git a/transmitter/src/CoOS/kernel/mbox.c b/radio/src/CoOS/kernel/mbox.c similarity index 100% rename from transmitter/src/CoOS/kernel/mbox.c rename to radio/src/CoOS/kernel/mbox.c diff --git a/transmitter/src/CoOS/kernel/mm.c b/radio/src/CoOS/kernel/mm.c similarity index 100% rename from transmitter/src/CoOS/kernel/mm.c rename to radio/src/CoOS/kernel/mm.c diff --git a/transmitter/src/CoOS/kernel/mutex.c b/radio/src/CoOS/kernel/mutex.c similarity index 100% rename from transmitter/src/CoOS/kernel/mutex.c rename to radio/src/CoOS/kernel/mutex.c diff --git a/transmitter/src/CoOS/kernel/queue.c b/radio/src/CoOS/kernel/queue.c similarity index 100% rename from transmitter/src/CoOS/kernel/queue.c rename to radio/src/CoOS/kernel/queue.c diff --git a/transmitter/src/CoOS/kernel/sem.c b/radio/src/CoOS/kernel/sem.c similarity index 100% rename from transmitter/src/CoOS/kernel/sem.c rename to radio/src/CoOS/kernel/sem.c diff --git a/transmitter/src/CoOS/kernel/serviceReq.c b/radio/src/CoOS/kernel/serviceReq.c similarity index 100% rename from transmitter/src/CoOS/kernel/serviceReq.c rename to radio/src/CoOS/kernel/serviceReq.c diff --git a/transmitter/src/CoOS/kernel/task.c b/radio/src/CoOS/kernel/task.c similarity index 100% rename from transmitter/src/CoOS/kernel/task.c rename to radio/src/CoOS/kernel/task.c diff --git a/transmitter/src/CoOS/kernel/time.c b/radio/src/CoOS/kernel/time.c similarity index 100% rename from transmitter/src/CoOS/kernel/time.c rename to radio/src/CoOS/kernel/time.c diff --git a/transmitter/src/CoOS/kernel/timer.c b/radio/src/CoOS/kernel/timer.c similarity index 100% rename from transmitter/src/CoOS/kernel/timer.c rename to radio/src/CoOS/kernel/timer.c diff --git a/transmitter/src/CoOS/kernel/utility.c b/radio/src/CoOS/kernel/utility.c similarity index 100% rename from transmitter/src/CoOS/kernel/utility.c rename to radio/src/CoOS/kernel/utility.c diff --git a/transmitter/src/CoOS/kernel/utility.h b/radio/src/CoOS/kernel/utility.h similarity index 100% rename from transmitter/src/CoOS/kernel/utility.h rename to radio/src/CoOS/kernel/utility.h diff --git a/transmitter/src/CoOS/portable/GCC/port.c b/radio/src/CoOS/portable/GCC/port.c similarity index 100% rename from transmitter/src/CoOS/portable/GCC/port.c rename to radio/src/CoOS/portable/GCC/port.c diff --git a/transmitter/src/CoOS/portable/OsArch.h b/radio/src/CoOS/portable/OsArch.h similarity index 100% rename from transmitter/src/CoOS/portable/OsArch.h rename to radio/src/CoOS/portable/OsArch.h diff --git a/transmitter/src/CoOS/portable/arch.c b/radio/src/CoOS/portable/arch.c similarity index 100% rename from transmitter/src/CoOS/portable/arch.c rename to radio/src/CoOS/portable/arch.c diff --git a/transmitter/src/FatFs/00readme.txt b/radio/src/FatFs/00readme.txt similarity index 100% rename from transmitter/src/FatFs/00readme.txt rename to radio/src/FatFs/00readme.txt diff --git a/transmitter/src/FatFs/diskio.h b/radio/src/FatFs/diskio.h similarity index 100% rename from transmitter/src/FatFs/diskio.h rename to radio/src/FatFs/diskio.h diff --git a/transmitter/src/FatFs/fattime.c b/radio/src/FatFs/fattime.c similarity index 100% rename from transmitter/src/FatFs/fattime.c rename to radio/src/FatFs/fattime.c diff --git a/transmitter/src/FatFs/ff.c b/radio/src/FatFs/ff.c similarity index 100% rename from transmitter/src/FatFs/ff.c rename to radio/src/FatFs/ff.c diff --git a/transmitter/src/FatFs/ff.h b/radio/src/FatFs/ff.h similarity index 100% rename from transmitter/src/FatFs/ff.h rename to radio/src/FatFs/ff.h diff --git a/transmitter/src/FatFs/ffconf.h b/radio/src/FatFs/ffconf.h similarity index 100% rename from transmitter/src/FatFs/ffconf.h rename to radio/src/FatFs/ffconf.h diff --git a/transmitter/src/FatFs/integer.h b/radio/src/FatFs/integer.h similarity index 100% rename from transmitter/src/FatFs/integer.h rename to radio/src/FatFs/integer.h diff --git a/transmitter/src/FatFs/option/cc932.c b/radio/src/FatFs/option/cc932.c similarity index 100% rename from transmitter/src/FatFs/option/cc932.c rename to radio/src/FatFs/option/cc932.c diff --git a/transmitter/src/FatFs/option/cc936.c b/radio/src/FatFs/option/cc936.c similarity index 100% rename from transmitter/src/FatFs/option/cc936.c rename to radio/src/FatFs/option/cc936.c diff --git a/transmitter/src/FatFs/option/cc949.c b/radio/src/FatFs/option/cc949.c similarity index 100% rename from transmitter/src/FatFs/option/cc949.c rename to radio/src/FatFs/option/cc949.c diff --git a/transmitter/src/FatFs/option/cc950.c b/radio/src/FatFs/option/cc950.c similarity index 100% rename from transmitter/src/FatFs/option/cc950.c rename to radio/src/FatFs/option/cc950.c diff --git a/transmitter/src/FatFs/option/ccsbcs.c b/radio/src/FatFs/option/ccsbcs.c similarity index 100% rename from transmitter/src/FatFs/option/ccsbcs.c rename to radio/src/FatFs/option/ccsbcs.c diff --git a/transmitter/src/FatFs/option/syscall.c b/radio/src/FatFs/option/syscall.c similarity index 100% rename from transmitter/src/FatFs/option/syscall.c rename to radio/src/FatFs/option/syscall.c diff --git a/transmitter/src/FatFs/option/unicode.c b/radio/src/FatFs/option/unicode.c similarity index 100% rename from transmitter/src/FatFs/option/unicode.c rename to radio/src/FatFs/option/unicode.c diff --git a/transmitter/src/GCS_MAVLink/.gitignore b/radio/src/GCS_MAVLink/.gitignore similarity index 100% rename from transmitter/src/GCS_MAVLink/.gitignore rename to radio/src/GCS_MAVLink/.gitignore diff --git a/transmitter/src/GCS_MAVLink/COPYING b/radio/src/GCS_MAVLink/COPYING similarity index 100% rename from transmitter/src/GCS_MAVLink/COPYING rename to radio/src/GCS_MAVLink/COPYING diff --git a/transmitter/src/GCS_MAVLink/README b/radio/src/GCS_MAVLink/README similarity index 100% rename from transmitter/src/GCS_MAVLink/README rename to radio/src/GCS_MAVLink/README diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/ardupilotmega.h b/radio/src/GCS_MAVLink/include_v1.0/ardupilotmega/ardupilotmega.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/ardupilotmega.h rename to radio/src/GCS_MAVLink/include_v1.0/ardupilotmega/ardupilotmega.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink.h b/radio/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink.h rename to radio/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_ahrs.h b/radio/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_ahrs.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_ahrs.h rename to radio/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_ahrs.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_ap_adc.h b/radio/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_ap_adc.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_ap_adc.h rename to radio/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_ap_adc.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_data16.h b/radio/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_data16.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_data16.h rename to radio/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_data16.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_data32.h b/radio/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_data32.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_data32.h rename to radio/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_data32.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_data64.h b/radio/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_data64.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_data64.h rename to radio/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_data64.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_data96.h b/radio/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_data96.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_data96.h rename to radio/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_data96.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_digicam_configure.h b/radio/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_digicam_configure.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_digicam_configure.h rename to radio/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_digicam_configure.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_digicam_control.h b/radio/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_digicam_control.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_digicam_control.h rename to radio/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_digicam_control.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_fence_fetch_point.h b/radio/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_fence_fetch_point.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_fence_fetch_point.h rename to radio/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_fence_fetch_point.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_fence_point.h b/radio/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_fence_point.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_fence_point.h rename to radio/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_fence_point.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_fence_status.h b/radio/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_fence_status.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_fence_status.h rename to radio/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_fence_status.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_hwstatus.h b/radio/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_hwstatus.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_hwstatus.h rename to radio/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_hwstatus.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_limits_status.h b/radio/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_limits_status.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_limits_status.h rename to radio/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_limits_status.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_meminfo.h b/radio/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_meminfo.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_meminfo.h rename to radio/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_meminfo.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_mount_configure.h b/radio/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_mount_configure.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_mount_configure.h rename to radio/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_mount_configure.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_mount_control.h b/radio/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_mount_control.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_mount_control.h rename to radio/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_mount_control.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_mount_status.h b/radio/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_mount_status.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_mount_status.h rename to radio/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_mount_status.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_radio.h b/radio/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_radio.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_radio.h rename to radio/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_radio.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_rangefinder.h b/radio/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_rangefinder.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_rangefinder.h rename to radio/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_rangefinder.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_sensor_offsets.h b/radio/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_sensor_offsets.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_sensor_offsets.h rename to radio/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_sensor_offsets.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_set_mag_offsets.h b/radio/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_set_mag_offsets.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_set_mag_offsets.h rename to radio/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_set_mag_offsets.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_simstate.h b/radio/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_simstate.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_simstate.h rename to radio/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_simstate.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_wind.h b/radio/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_wind.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_wind.h rename to radio/src/GCS_MAVLink/include_v1.0/ardupilotmega/mavlink_msg_wind.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/testsuite.h b/radio/src/GCS_MAVLink/include_v1.0/ardupilotmega/testsuite.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/testsuite.h rename to radio/src/GCS_MAVLink/include_v1.0/ardupilotmega/testsuite.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/version.h b/radio/src/GCS_MAVLink/include_v1.0/ardupilotmega/version.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/ardupilotmega/version.h rename to radio/src/GCS_MAVLink/include_v1.0/ardupilotmega/version.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/checksum.h b/radio/src/GCS_MAVLink/include_v1.0/checksum.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/checksum.h rename to radio/src/GCS_MAVLink/include_v1.0/checksum.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/common.h b/radio/src/GCS_MAVLink/include_v1.0/common/common.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/common.h rename to radio/src/GCS_MAVLink/include_v1.0/common/common.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_attitude.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_attitude.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_attitude.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_attitude.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_attitude_quaternion.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_attitude_quaternion.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_attitude_quaternion.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_attitude_quaternion.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_auth_key.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_auth_key.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_auth_key.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_auth_key.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_battery_status.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_battery_status.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_battery_status.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_battery_status.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_change_operator_control.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_change_operator_control.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_change_operator_control.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_change_operator_control.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_change_operator_control_ack.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_change_operator_control_ack.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_change_operator_control_ack.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_change_operator_control_ack.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_command_ack.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_command_ack.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_command_ack.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_command_ack.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_command_long.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_command_long.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_command_long.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_command_long.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_data_stream.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_data_stream.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_data_stream.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_data_stream.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_debug.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_debug.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_debug.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_debug.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_debug_vect.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_debug_vect.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_debug_vect.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_debug_vect.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_file_transfer_dir_list.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_file_transfer_dir_list.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_file_transfer_dir_list.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_file_transfer_dir_list.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_file_transfer_res.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_file_transfer_res.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_file_transfer_res.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_file_transfer_res.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_file_transfer_start.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_file_transfer_start.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_file_transfer_start.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_file_transfer_start.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_global_position_int.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_global_position_int.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_global_position_int.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_global_position_int.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_global_position_setpoint_int.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_global_position_setpoint_int.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_global_position_setpoint_int.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_global_position_setpoint_int.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_global_vision_position_estimate.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_global_vision_position_estimate.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_global_vision_position_estimate.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_global_vision_position_estimate.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_gps_global_origin.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_gps_global_origin.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_gps_global_origin.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_gps_global_origin.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_gps_raw_int.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_gps_raw_int.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_gps_raw_int.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_gps_raw_int.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_gps_status.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_gps_status.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_gps_status.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_gps_status.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_heartbeat.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_heartbeat.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_heartbeat.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_heartbeat.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_highres_imu.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_highres_imu.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_highres_imu.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_highres_imu.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_hil_controls.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_hil_controls.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_hil_controls.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_hil_controls.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_hil_gps.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_hil_gps.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_hil_gps.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_hil_gps.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_hil_optical_flow.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_hil_optical_flow.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_hil_optical_flow.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_hil_optical_flow.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_hil_rc_inputs_raw.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_hil_rc_inputs_raw.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_hil_rc_inputs_raw.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_hil_rc_inputs_raw.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_hil_sensor.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_hil_sensor.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_hil_sensor.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_hil_sensor.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_hil_state.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_hil_state.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_hil_state.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_hil_state.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_hil_state_quaternion.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_hil_state_quaternion.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_hil_state_quaternion.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_hil_state_quaternion.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_local_position_ned.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_local_position_ned.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_local_position_ned.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_local_position_ned.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_local_position_ned_system_global_offset.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_local_position_ned_system_global_offset.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_local_position_ned_system_global_offset.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_local_position_ned_system_global_offset.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_local_position_setpoint.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_local_position_setpoint.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_local_position_setpoint.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_local_position_setpoint.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_manual_control.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_manual_control.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_manual_control.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_manual_control.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_manual_setpoint.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_manual_setpoint.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_manual_setpoint.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_manual_setpoint.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_memory_vect.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_memory_vect.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_memory_vect.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_memory_vect.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_ack.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_ack.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_ack.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_ack.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_clear_all.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_clear_all.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_clear_all.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_clear_all.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_count.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_count.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_count.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_count.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_current.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_current.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_current.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_current.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_item.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_item.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_item.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_item.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_item_reached.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_item_reached.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_item_reached.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_item_reached.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_request.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_request.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_request.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_request.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_request_list.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_request_list.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_request_list.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_request_list.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_request_partial_list.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_request_partial_list.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_request_partial_list.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_request_partial_list.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_set_current.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_set_current.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_set_current.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_set_current.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_write_partial_list.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_write_partial_list.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_write_partial_list.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_mission_write_partial_list.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_named_value_float.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_named_value_float.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_named_value_float.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_named_value_float.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_named_value_int.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_named_value_int.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_named_value_int.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_named_value_int.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_nav_controller_output.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_nav_controller_output.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_nav_controller_output.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_nav_controller_output.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_omnidirectional_flow.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_omnidirectional_flow.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_omnidirectional_flow.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_omnidirectional_flow.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_optical_flow.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_optical_flow.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_optical_flow.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_optical_flow.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_param_request_list.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_param_request_list.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_param_request_list.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_param_request_list.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_param_request_read.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_param_request_read.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_param_request_read.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_param_request_read.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_param_set.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_param_set.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_param_set.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_param_set.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_param_value.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_param_value.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_param_value.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_param_value.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_ping.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_ping.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_ping.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_ping.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_radio_status.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_radio_status.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_radio_status.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_radio_status.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_raw_imu.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_raw_imu.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_raw_imu.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_raw_imu.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_raw_pressure.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_raw_pressure.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_raw_pressure.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_raw_pressure.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_rc_channels_override.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_rc_channels_override.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_rc_channels_override.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_rc_channels_override.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_rc_channels_raw.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_rc_channels_raw.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_rc_channels_raw.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_rc_channels_raw.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_rc_channels_scaled.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_rc_channels_scaled.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_rc_channels_scaled.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_rc_channels_scaled.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_request_data_stream.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_request_data_stream.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_request_data_stream.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_request_data_stream.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_roll_pitch_yaw_rates_thrust_setpoint.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_roll_pitch_yaw_rates_thrust_setpoint.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_roll_pitch_yaw_rates_thrust_setpoint.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_roll_pitch_yaw_rates_thrust_setpoint.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_roll_pitch_yaw_speed_thrust_setpoint.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_roll_pitch_yaw_speed_thrust_setpoint.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_roll_pitch_yaw_speed_thrust_setpoint.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_roll_pitch_yaw_speed_thrust_setpoint.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_roll_pitch_yaw_thrust_setpoint.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_roll_pitch_yaw_thrust_setpoint.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_roll_pitch_yaw_thrust_setpoint.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_roll_pitch_yaw_thrust_setpoint.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_safety_allowed_area.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_safety_allowed_area.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_safety_allowed_area.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_safety_allowed_area.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_safety_set_allowed_area.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_safety_set_allowed_area.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_safety_set_allowed_area.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_safety_set_allowed_area.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_scaled_imu.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_scaled_imu.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_scaled_imu.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_scaled_imu.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_scaled_pressure.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_scaled_pressure.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_scaled_pressure.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_scaled_pressure.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_servo_output_raw.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_servo_output_raw.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_servo_output_raw.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_servo_output_raw.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_global_position_setpoint_int.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_global_position_setpoint_int.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_global_position_setpoint_int.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_global_position_setpoint_int.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_gps_global_origin.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_gps_global_origin.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_gps_global_origin.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_gps_global_origin.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_local_position_setpoint.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_local_position_setpoint.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_local_position_setpoint.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_local_position_setpoint.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_mode.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_mode.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_mode.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_mode.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_quad_motors_setpoint.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_quad_motors_setpoint.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_quad_motors_setpoint.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_quad_motors_setpoint.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_quad_swarm_led_roll_pitch_yaw_thrust.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_quad_swarm_led_roll_pitch_yaw_thrust.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_quad_swarm_led_roll_pitch_yaw_thrust.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_quad_swarm_led_roll_pitch_yaw_thrust.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_quad_swarm_roll_pitch_yaw_thrust.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_quad_swarm_roll_pitch_yaw_thrust.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_quad_swarm_roll_pitch_yaw_thrust.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_quad_swarm_roll_pitch_yaw_thrust.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_roll_pitch_yaw_speed_thrust.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_roll_pitch_yaw_speed_thrust.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_roll_pitch_yaw_speed_thrust.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_roll_pitch_yaw_speed_thrust.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_roll_pitch_yaw_thrust.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_roll_pitch_yaw_thrust.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_roll_pitch_yaw_thrust.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_set_roll_pitch_yaw_thrust.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_setpoint_6dof.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_setpoint_6dof.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_setpoint_6dof.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_setpoint_6dof.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_setpoint_8dof.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_setpoint_8dof.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_setpoint_8dof.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_setpoint_8dof.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_sim_state.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_sim_state.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_sim_state.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_sim_state.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_state_correction.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_state_correction.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_state_correction.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_state_correction.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_statustext.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_statustext.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_statustext.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_statustext.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_sys_status.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_sys_status.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_sys_status.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_sys_status.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_system_time.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_system_time.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_system_time.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_system_time.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_vfr_hud.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_vfr_hud.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_vfr_hud.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_vfr_hud.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_vicon_position_estimate.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_vicon_position_estimate.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_vicon_position_estimate.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_vicon_position_estimate.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_vision_position_estimate.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_vision_position_estimate.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_vision_position_estimate.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_vision_position_estimate.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_vision_speed_estimate.h b/radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_vision_speed_estimate.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_vision_speed_estimate.h rename to radio/src/GCS_MAVLink/include_v1.0/common/mavlink_msg_vision_speed_estimate.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/testsuite.h b/radio/src/GCS_MAVLink/include_v1.0/common/testsuite.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/testsuite.h rename to radio/src/GCS_MAVLink/include_v1.0/common/testsuite.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/common/version.h b/radio/src/GCS_MAVLink/include_v1.0/common/version.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/common/version.h rename to radio/src/GCS_MAVLink/include_v1.0/common/version.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/mavlink_conversions.h b/radio/src/GCS_MAVLink/include_v1.0/mavlink_conversions.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/mavlink_conversions.h rename to radio/src/GCS_MAVLink/include_v1.0/mavlink_conversions.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/mavlink_helpers.h b/radio/src/GCS_MAVLink/include_v1.0/mavlink_helpers.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/mavlink_helpers.h rename to radio/src/GCS_MAVLink/include_v1.0/mavlink_helpers.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/mavlink_protobuf_manager.hpp b/radio/src/GCS_MAVLink/include_v1.0/mavlink_protobuf_manager.hpp similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/mavlink_protobuf_manager.hpp rename to radio/src/GCS_MAVLink/include_v1.0/mavlink_protobuf_manager.hpp diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/mavlink_types.h b/radio/src/GCS_MAVLink/include_v1.0/mavlink_types.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/mavlink_types.h rename to radio/src/GCS_MAVLink/include_v1.0/mavlink_types.h diff --git a/transmitter/src/GCS_MAVLink/include_v1.0/protocol.h b/radio/src/GCS_MAVLink/include_v1.0/protocol.h similarity index 100% rename from transmitter/src/GCS_MAVLink/include_v1.0/protocol.h rename to radio/src/GCS_MAVLink/include_v1.0/protocol.h diff --git a/transmitter/src/GCS_MAVLink/message_definitions_v1.0/ardupilotmega.xml b/radio/src/GCS_MAVLink/message_definitions_v1.0/ardupilotmega.xml similarity index 100% rename from transmitter/src/GCS_MAVLink/message_definitions_v1.0/ardupilotmega.xml rename to radio/src/GCS_MAVLink/message_definitions_v1.0/ardupilotmega.xml diff --git a/transmitter/src/GCS_MAVLink/message_definitions_v1.0/autoquad.xml b/radio/src/GCS_MAVLink/message_definitions_v1.0/autoquad.xml similarity index 100% rename from transmitter/src/GCS_MAVLink/message_definitions_v1.0/autoquad.xml rename to radio/src/GCS_MAVLink/message_definitions_v1.0/autoquad.xml diff --git a/transmitter/src/GCS_MAVLink/message_definitions_v1.0/common.xml b/radio/src/GCS_MAVLink/message_definitions_v1.0/common.xml similarity index 100% rename from transmitter/src/GCS_MAVLink/message_definitions_v1.0/common.xml rename to radio/src/GCS_MAVLink/message_definitions_v1.0/common.xml diff --git a/transmitter/src/GCS_MAVLink/message_definitions_v1.0/matrixpilot.xml b/radio/src/GCS_MAVLink/message_definitions_v1.0/matrixpilot.xml similarity index 100% rename from transmitter/src/GCS_MAVLink/message_definitions_v1.0/matrixpilot.xml rename to radio/src/GCS_MAVLink/message_definitions_v1.0/matrixpilot.xml diff --git a/transmitter/src/GCS_MAVLink/message_definitions_v1.0/minimal.xml b/radio/src/GCS_MAVLink/message_definitions_v1.0/minimal.xml similarity index 100% rename from transmitter/src/GCS_MAVLink/message_definitions_v1.0/minimal.xml rename to radio/src/GCS_MAVLink/message_definitions_v1.0/minimal.xml diff --git a/transmitter/src/GCS_MAVLink/message_definitions_v1.0/pixhawk.proto b/radio/src/GCS_MAVLink/message_definitions_v1.0/pixhawk.proto similarity index 100% rename from transmitter/src/GCS_MAVLink/message_definitions_v1.0/pixhawk.proto rename to radio/src/GCS_MAVLink/message_definitions_v1.0/pixhawk.proto diff --git a/transmitter/src/GCS_MAVLink/message_definitions_v1.0/pixhawk.xml b/radio/src/GCS_MAVLink/message_definitions_v1.0/pixhawk.xml similarity index 100% rename from transmitter/src/GCS_MAVLink/message_definitions_v1.0/pixhawk.xml rename to radio/src/GCS_MAVLink/message_definitions_v1.0/pixhawk.xml diff --git a/transmitter/src/GCS_MAVLink/message_definitions_v1.0/sensesoar.xml b/radio/src/GCS_MAVLink/message_definitions_v1.0/sensesoar.xml similarity index 100% rename from transmitter/src/GCS_MAVLink/message_definitions_v1.0/sensesoar.xml rename to radio/src/GCS_MAVLink/message_definitions_v1.0/sensesoar.xml diff --git a/transmitter/src/GCS_MAVLink/message_definitions_v1.0/slugs.xml b/radio/src/GCS_MAVLink/message_definitions_v1.0/slugs.xml similarity index 100% rename from transmitter/src/GCS_MAVLink/message_definitions_v1.0/slugs.xml rename to radio/src/GCS_MAVLink/message_definitions_v1.0/slugs.xml diff --git a/transmitter/src/GCS_MAVLink/message_definitions_v1.0/test.xml b/radio/src/GCS_MAVLink/message_definitions_v1.0/test.xml similarity index 100% rename from transmitter/src/GCS_MAVLink/message_definitions_v1.0/test.xml rename to radio/src/GCS_MAVLink/message_definitions_v1.0/test.xml diff --git a/transmitter/src/GCS_MAVLink/message_definitions_v1.0/ualberta.xml b/radio/src/GCS_MAVLink/message_definitions_v1.0/ualberta.xml similarity index 100% rename from transmitter/src/GCS_MAVLink/message_definitions_v1.0/ualberta.xml rename to radio/src/GCS_MAVLink/message_definitions_v1.0/ualberta.xml diff --git a/transmitter/src/GCS_MAVLink/sync b/radio/src/GCS_MAVLink/sync similarity index 100% rename from transmitter/src/GCS_MAVLink/sync rename to radio/src/GCS_MAVLink/sync diff --git a/transmitter/src/Makefile b/radio/src/Makefile similarity index 100% rename from transmitter/src/Makefile rename to radio/src/Makefile diff --git a/transmitter/src/audio_arm.cpp b/radio/src/audio_arm.cpp similarity index 100% rename from transmitter/src/audio_arm.cpp rename to radio/src/audio_arm.cpp diff --git a/transmitter/src/audio_arm.h b/radio/src/audio_arm.h similarity index 100% rename from transmitter/src/audio_arm.h rename to radio/src/audio_arm.h diff --git a/transmitter/src/audio_avr.cpp b/radio/src/audio_avr.cpp similarity index 100% rename from transmitter/src/audio_avr.cpp rename to radio/src/audio_avr.cpp diff --git a/transmitter/src/audio_avr.h b/radio/src/audio_avr.h similarity index 100% rename from transmitter/src/audio_avr.h rename to radio/src/audio_avr.h diff --git a/transmitter/src/bitmaps/about_9x.lbm b/radio/src/bitmaps/about_9x.lbm similarity index 100% rename from transmitter/src/bitmaps/about_9x.lbm rename to radio/src/bitmaps/about_9x.lbm diff --git a/transmitter/src/bitmaps/about_9x.png b/radio/src/bitmaps/about_9x.png similarity index 100% rename from transmitter/src/bitmaps/about_9x.png rename to radio/src/bitmaps/about_9x.png diff --git a/transmitter/src/bitmaps/about_taranis.lbm b/radio/src/bitmaps/about_taranis.lbm similarity index 100% rename from transmitter/src/bitmaps/about_taranis.lbm rename to radio/src/bitmaps/about_taranis.lbm diff --git a/transmitter/src/bitmaps/about_taranis.png b/radio/src/bitmaps/about_taranis.png similarity index 100% rename from transmitter/src/bitmaps/about_taranis.png rename to radio/src/bitmaps/about_taranis.png diff --git a/transmitter/src/bitmaps/asterisk.lbm b/radio/src/bitmaps/asterisk.lbm similarity index 100% rename from transmitter/src/bitmaps/asterisk.lbm rename to radio/src/bitmaps/asterisk.lbm diff --git a/transmitter/src/bitmaps/asterisk.xbm b/radio/src/bitmaps/asterisk.xbm similarity index 100% rename from transmitter/src/bitmaps/asterisk.xbm rename to radio/src/bitmaps/asterisk.xbm diff --git a/transmitter/src/bitmaps/asterisk_4bits.lbm b/radio/src/bitmaps/asterisk_4bits.lbm similarity index 100% rename from transmitter/src/bitmaps/asterisk_4bits.lbm rename to radio/src/bitmaps/asterisk_4bits.lbm diff --git a/transmitter/src/bitmaps/asterisk_4bits.png b/radio/src/bitmaps/asterisk_4bits.png similarity index 100% rename from transmitter/src/bitmaps/asterisk_4bits.png rename to radio/src/bitmaps/asterisk_4bits.png diff --git a/transmitter/src/bitmaps/icons.lbm b/radio/src/bitmaps/icons.lbm similarity index 100% rename from transmitter/src/bitmaps/icons.lbm rename to radio/src/bitmaps/icons.lbm diff --git a/transmitter/src/bitmaps/icons.png b/radio/src/bitmaps/icons.png similarity index 100% rename from transmitter/src/bitmaps/icons.png rename to radio/src/bitmaps/icons.png diff --git a/transmitter/src/bitmaps/logo_taranis.bmp b/radio/src/bitmaps/logo_taranis.bmp similarity index 100% rename from transmitter/src/bitmaps/logo_taranis.bmp rename to radio/src/bitmaps/logo_taranis.bmp diff --git a/transmitter/src/bitmaps/logo_taranis.lbm b/radio/src/bitmaps/logo_taranis.lbm similarity index 100% rename from transmitter/src/bitmaps/logo_taranis.lbm rename to radio/src/bitmaps/logo_taranis.lbm diff --git a/transmitter/src/bitmaps/splash_9x.lbm b/radio/src/bitmaps/splash_9x.lbm similarity index 100% rename from transmitter/src/bitmaps/splash_9x.lbm rename to radio/src/bitmaps/splash_9x.lbm diff --git a/transmitter/src/bitmaps/splash_9x.xbm b/radio/src/bitmaps/splash_9x.xbm similarity index 100% rename from transmitter/src/bitmaps/splash_9x.xbm rename to radio/src/bitmaps/splash_9x.xbm diff --git a/transmitter/src/bitmaps/splash_taranis.lbm b/radio/src/bitmaps/splash_taranis.lbm similarity index 100% rename from transmitter/src/bitmaps/splash_taranis.lbm rename to radio/src/bitmaps/splash_taranis.lbm diff --git a/transmitter/src/bitmaps/splash_taranis.png b/radio/src/bitmaps/splash_taranis.png similarity index 100% rename from transmitter/src/bitmaps/splash_taranis.png rename to radio/src/bitmaps/splash_taranis.png diff --git a/transmitter/src/bitmaps/sticks.lbm b/radio/src/bitmaps/sticks.lbm similarity index 100% rename from transmitter/src/bitmaps/sticks.lbm rename to radio/src/bitmaps/sticks.lbm diff --git a/transmitter/src/bitmaps/sticks_4x1.xbm b/radio/src/bitmaps/sticks_4x1.xbm similarity index 100% rename from transmitter/src/bitmaps/sticks_4x1.xbm rename to radio/src/bitmaps/sticks_4x1.xbm diff --git a/transmitter/src/bmp.cpp b/radio/src/bmp.cpp similarity index 100% rename from transmitter/src/bmp.cpp rename to radio/src/bmp.cpp diff --git a/transmitter/src/buzzer.cpp b/radio/src/buzzer.cpp similarity index 100% rename from transmitter/src/buzzer.cpp rename to radio/src/buzzer.cpp diff --git a/transmitter/src/buzzer.h b/radio/src/buzzer.h similarity index 100% rename from transmitter/src/buzzer.h rename to radio/src/buzzer.h diff --git a/transmitter/src/debug.cpp b/radio/src/debug.cpp similarity index 100% rename from transmitter/src/debug.cpp rename to radio/src/debug.cpp diff --git a/transmitter/src/debug.h b/radio/src/debug.h similarity index 100% rename from transmitter/src/debug.h rename to radio/src/debug.h diff --git a/transmitter/src/eeprom_common.cpp b/radio/src/eeprom_common.cpp similarity index 100% rename from transmitter/src/eeprom_common.cpp rename to radio/src/eeprom_common.cpp diff --git a/transmitter/src/eeprom_common.h b/radio/src/eeprom_common.h similarity index 100% rename from transmitter/src/eeprom_common.h rename to radio/src/eeprom_common.h diff --git a/transmitter/src/eeprom_conversions.cpp b/radio/src/eeprom_conversions.cpp similarity index 100% rename from transmitter/src/eeprom_conversions.cpp rename to radio/src/eeprom_conversions.cpp diff --git a/transmitter/src/eeprom_raw.cpp b/radio/src/eeprom_raw.cpp similarity index 100% rename from transmitter/src/eeprom_raw.cpp rename to radio/src/eeprom_raw.cpp diff --git a/transmitter/src/eeprom_raw.h b/radio/src/eeprom_raw.h similarity index 100% rename from transmitter/src/eeprom_raw.h rename to radio/src/eeprom_raw.h diff --git a/transmitter/src/eeprom_rlc.cpp b/radio/src/eeprom_rlc.cpp similarity index 100% rename from transmitter/src/eeprom_rlc.cpp rename to radio/src/eeprom_rlc.cpp diff --git a/transmitter/src/eeprom_rlc.h b/radio/src/eeprom_rlc.h similarity index 100% rename from transmitter/src/eeprom_rlc.h rename to radio/src/eeprom_rlc.h diff --git a/transmitter/src/fifo.h b/radio/src/fifo.h similarity index 100% rename from transmitter/src/fifo.h rename to radio/src/fifo.h diff --git a/transmitter/src/fonts/sqt5/font_04x06.lbm b/radio/src/fonts/sqt5/font_04x06.lbm similarity index 100% rename from transmitter/src/fonts/sqt5/font_04x06.lbm rename to radio/src/fonts/sqt5/font_04x06.lbm diff --git a/transmitter/src/fonts/sqt5/font_04x06.png b/radio/src/fonts/sqt5/font_04x06.png similarity index 100% rename from transmitter/src/fonts/sqt5/font_04x06.png rename to radio/src/fonts/sqt5/font_04x06.png diff --git a/transmitter/src/fonts/sqt5/font_05x07.lbm b/radio/src/fonts/sqt5/font_05x07.lbm similarity index 100% rename from transmitter/src/fonts/sqt5/font_05x07.lbm rename to radio/src/fonts/sqt5/font_05x07.lbm diff --git a/transmitter/src/fonts/sqt5/font_05x07.png b/radio/src/fonts/sqt5/font_05x07.png similarity index 100% rename from transmitter/src/fonts/sqt5/font_05x07.png rename to radio/src/fonts/sqt5/font_05x07.png diff --git a/transmitter/src/fonts/sqt5/font_08x10.lbm b/radio/src/fonts/sqt5/font_08x10.lbm similarity index 100% rename from transmitter/src/fonts/sqt5/font_08x10.lbm rename to radio/src/fonts/sqt5/font_08x10.lbm diff --git a/transmitter/src/fonts/sqt5/font_08x10.png b/radio/src/fonts/sqt5/font_08x10.png similarity index 100% rename from transmitter/src/fonts/sqt5/font_08x10.png rename to radio/src/fonts/sqt5/font_08x10.png diff --git a/transmitter/src/fonts/sqt5/font_10x14.lbm b/radio/src/fonts/sqt5/font_10x14.lbm similarity index 100% rename from transmitter/src/fonts/sqt5/font_10x14.lbm rename to radio/src/fonts/sqt5/font_10x14.lbm diff --git a/transmitter/src/fonts/sqt5/font_10x14.png b/radio/src/fonts/sqt5/font_10x14.png similarity index 100% rename from transmitter/src/fonts/sqt5/font_10x14.png rename to radio/src/fonts/sqt5/font_10x14.png diff --git a/transmitter/src/fonts/sqt5/font_10x14_compressed.lbm b/radio/src/fonts/sqt5/font_10x14_compressed.lbm similarity index 100% rename from transmitter/src/fonts/sqt5/font_10x14_compressed.lbm rename to radio/src/fonts/sqt5/font_10x14_compressed.lbm diff --git a/transmitter/src/fonts/sqt5/font_10x14_compressed.png b/radio/src/fonts/sqt5/font_10x14_compressed.png similarity index 100% rename from transmitter/src/fonts/sqt5/font_10x14_compressed.png rename to radio/src/fonts/sqt5/font_10x14_compressed.png diff --git a/transmitter/src/fonts/sqt5/font_cz_04x06.lbm b/radio/src/fonts/sqt5/font_cz_04x06.lbm similarity index 100% rename from transmitter/src/fonts/sqt5/font_cz_04x06.lbm rename to radio/src/fonts/sqt5/font_cz_04x06.lbm diff --git a/transmitter/src/fonts/sqt5/font_cz_04x06.png b/radio/src/fonts/sqt5/font_cz_04x06.png similarity index 100% rename from transmitter/src/fonts/sqt5/font_cz_04x06.png rename to radio/src/fonts/sqt5/font_cz_04x06.png diff --git a/transmitter/src/fonts/sqt5/font_cz_05x07.lbm b/radio/src/fonts/sqt5/font_cz_05x07.lbm similarity index 100% rename from transmitter/src/fonts/sqt5/font_cz_05x07.lbm rename to radio/src/fonts/sqt5/font_cz_05x07.lbm diff --git a/transmitter/src/fonts/sqt5/font_cz_05x07.png b/radio/src/fonts/sqt5/font_cz_05x07.png similarity index 100% rename from transmitter/src/fonts/sqt5/font_cz_05x07.png rename to radio/src/fonts/sqt5/font_cz_05x07.png diff --git a/transmitter/src/fonts/sqt5/font_cz_08x10.lbm b/radio/src/fonts/sqt5/font_cz_08x10.lbm similarity index 100% rename from transmitter/src/fonts/sqt5/font_cz_08x10.lbm rename to radio/src/fonts/sqt5/font_cz_08x10.lbm diff --git a/transmitter/src/fonts/sqt5/font_cz_08x10.png b/radio/src/fonts/sqt5/font_cz_08x10.png similarity index 100% rename from transmitter/src/fonts/sqt5/font_cz_08x10.png rename to radio/src/fonts/sqt5/font_cz_08x10.png diff --git a/transmitter/src/fonts/sqt5/font_cz_10x14.lbm b/radio/src/fonts/sqt5/font_cz_10x14.lbm similarity index 100% rename from transmitter/src/fonts/sqt5/font_cz_10x14.lbm rename to radio/src/fonts/sqt5/font_cz_10x14.lbm diff --git a/transmitter/src/fonts/sqt5/font_cz_10x14.png b/radio/src/fonts/sqt5/font_cz_10x14.png similarity index 100% rename from transmitter/src/fonts/sqt5/font_cz_10x14.png rename to radio/src/fonts/sqt5/font_cz_10x14.png diff --git a/transmitter/src/fonts/sqt5/font_de_04x06.lbm b/radio/src/fonts/sqt5/font_de_04x06.lbm similarity index 100% rename from transmitter/src/fonts/sqt5/font_de_04x06.lbm rename to radio/src/fonts/sqt5/font_de_04x06.lbm diff --git a/transmitter/src/fonts/sqt5/font_de_04x06.png b/radio/src/fonts/sqt5/font_de_04x06.png similarity index 100% rename from transmitter/src/fonts/sqt5/font_de_04x06.png rename to radio/src/fonts/sqt5/font_de_04x06.png diff --git a/transmitter/src/fonts/sqt5/font_de_05x07.lbm b/radio/src/fonts/sqt5/font_de_05x07.lbm similarity index 100% rename from transmitter/src/fonts/sqt5/font_de_05x07.lbm rename to radio/src/fonts/sqt5/font_de_05x07.lbm diff --git a/transmitter/src/fonts/sqt5/font_de_05x07.png b/radio/src/fonts/sqt5/font_de_05x07.png similarity index 100% rename from transmitter/src/fonts/sqt5/font_de_05x07.png rename to radio/src/fonts/sqt5/font_de_05x07.png diff --git a/transmitter/src/fonts/sqt5/font_de_08x10.lbm b/radio/src/fonts/sqt5/font_de_08x10.lbm similarity index 100% rename from transmitter/src/fonts/sqt5/font_de_08x10.lbm rename to radio/src/fonts/sqt5/font_de_08x10.lbm diff --git a/transmitter/src/fonts/sqt5/font_de_08x10.png b/radio/src/fonts/sqt5/font_de_08x10.png similarity index 100% rename from transmitter/src/fonts/sqt5/font_de_08x10.png rename to radio/src/fonts/sqt5/font_de_08x10.png diff --git a/transmitter/src/fonts/sqt5/font_de_10x14.lbm b/radio/src/fonts/sqt5/font_de_10x14.lbm similarity index 100% rename from transmitter/src/fonts/sqt5/font_de_10x14.lbm rename to radio/src/fonts/sqt5/font_de_10x14.lbm diff --git a/transmitter/src/fonts/sqt5/font_de_10x14.png b/radio/src/fonts/sqt5/font_de_10x14.png similarity index 100% rename from transmitter/src/fonts/sqt5/font_de_10x14.png rename to radio/src/fonts/sqt5/font_de_10x14.png diff --git a/transmitter/src/fonts/sqt5/font_es_04x06.lbm b/radio/src/fonts/sqt5/font_es_04x06.lbm similarity index 100% rename from transmitter/src/fonts/sqt5/font_es_04x06.lbm rename to radio/src/fonts/sqt5/font_es_04x06.lbm diff --git a/transmitter/src/fonts/sqt5/font_es_04x06.png b/radio/src/fonts/sqt5/font_es_04x06.png similarity index 100% rename from transmitter/src/fonts/sqt5/font_es_04x06.png rename to radio/src/fonts/sqt5/font_es_04x06.png diff --git a/transmitter/src/fonts/sqt5/font_es_05x07.lbm b/radio/src/fonts/sqt5/font_es_05x07.lbm similarity index 100% rename from transmitter/src/fonts/sqt5/font_es_05x07.lbm rename to radio/src/fonts/sqt5/font_es_05x07.lbm diff --git a/transmitter/src/fonts/sqt5/font_es_05x07.png b/radio/src/fonts/sqt5/font_es_05x07.png similarity index 100% rename from transmitter/src/fonts/sqt5/font_es_05x07.png rename to radio/src/fonts/sqt5/font_es_05x07.png diff --git a/transmitter/src/fonts/sqt5/font_es_08x10.lbm b/radio/src/fonts/sqt5/font_es_08x10.lbm similarity index 100% rename from transmitter/src/fonts/sqt5/font_es_08x10.lbm rename to radio/src/fonts/sqt5/font_es_08x10.lbm diff --git a/transmitter/src/fonts/sqt5/font_es_08x10.png b/radio/src/fonts/sqt5/font_es_08x10.png similarity index 100% rename from transmitter/src/fonts/sqt5/font_es_08x10.png rename to radio/src/fonts/sqt5/font_es_08x10.png diff --git a/transmitter/src/fonts/sqt5/font_es_10x14.lbm b/radio/src/fonts/sqt5/font_es_10x14.lbm similarity index 100% rename from transmitter/src/fonts/sqt5/font_es_10x14.lbm rename to radio/src/fonts/sqt5/font_es_10x14.lbm diff --git a/transmitter/src/fonts/sqt5/font_es_10x14.png b/radio/src/fonts/sqt5/font_es_10x14.png similarity index 100% rename from transmitter/src/fonts/sqt5/font_es_10x14.png rename to radio/src/fonts/sqt5/font_es_10x14.png diff --git a/transmitter/src/fonts/sqt5/font_fr_04x06.lbm b/radio/src/fonts/sqt5/font_fr_04x06.lbm similarity index 100% rename from transmitter/src/fonts/sqt5/font_fr_04x06.lbm rename to radio/src/fonts/sqt5/font_fr_04x06.lbm diff --git a/transmitter/src/fonts/sqt5/font_fr_04x06.png b/radio/src/fonts/sqt5/font_fr_04x06.png similarity index 100% rename from transmitter/src/fonts/sqt5/font_fr_04x06.png rename to radio/src/fonts/sqt5/font_fr_04x06.png diff --git a/transmitter/src/fonts/sqt5/font_fr_05x07.lbm b/radio/src/fonts/sqt5/font_fr_05x07.lbm similarity index 100% rename from transmitter/src/fonts/sqt5/font_fr_05x07.lbm rename to radio/src/fonts/sqt5/font_fr_05x07.lbm diff --git a/transmitter/src/fonts/sqt5/font_fr_05x07.png b/radio/src/fonts/sqt5/font_fr_05x07.png similarity index 100% rename from transmitter/src/fonts/sqt5/font_fr_05x07.png rename to radio/src/fonts/sqt5/font_fr_05x07.png diff --git a/transmitter/src/fonts/sqt5/font_fr_08x10.lbm b/radio/src/fonts/sqt5/font_fr_08x10.lbm similarity index 100% rename from transmitter/src/fonts/sqt5/font_fr_08x10.lbm rename to radio/src/fonts/sqt5/font_fr_08x10.lbm diff --git a/transmitter/src/fonts/sqt5/font_fr_08x10.png b/radio/src/fonts/sqt5/font_fr_08x10.png similarity index 100% rename from transmitter/src/fonts/sqt5/font_fr_08x10.png rename to radio/src/fonts/sqt5/font_fr_08x10.png diff --git a/transmitter/src/fonts/sqt5/font_fr_10x14.lbm b/radio/src/fonts/sqt5/font_fr_10x14.lbm similarity index 100% rename from transmitter/src/fonts/sqt5/font_fr_10x14.lbm rename to radio/src/fonts/sqt5/font_fr_10x14.lbm diff --git a/transmitter/src/fonts/sqt5/font_fr_10x14.png b/radio/src/fonts/sqt5/font_fr_10x14.png similarity index 100% rename from transmitter/src/fonts/sqt5/font_fr_10x14.png rename to radio/src/fonts/sqt5/font_fr_10x14.png diff --git a/transmitter/src/fonts/sqt5/font_it_04x06.lbm b/radio/src/fonts/sqt5/font_it_04x06.lbm similarity index 100% rename from transmitter/src/fonts/sqt5/font_it_04x06.lbm rename to radio/src/fonts/sqt5/font_it_04x06.lbm diff --git a/transmitter/src/fonts/sqt5/font_it_04x06.png b/radio/src/fonts/sqt5/font_it_04x06.png similarity index 100% rename from transmitter/src/fonts/sqt5/font_it_04x06.png rename to radio/src/fonts/sqt5/font_it_04x06.png diff --git a/transmitter/src/fonts/sqt5/font_it_05x07.lbm b/radio/src/fonts/sqt5/font_it_05x07.lbm similarity index 100% rename from transmitter/src/fonts/sqt5/font_it_05x07.lbm rename to radio/src/fonts/sqt5/font_it_05x07.lbm diff --git a/transmitter/src/fonts/sqt5/font_it_05x07.png b/radio/src/fonts/sqt5/font_it_05x07.png similarity index 100% rename from transmitter/src/fonts/sqt5/font_it_05x07.png rename to radio/src/fonts/sqt5/font_it_05x07.png diff --git a/transmitter/src/fonts/sqt5/font_it_08x10.lbm b/radio/src/fonts/sqt5/font_it_08x10.lbm similarity index 100% rename from transmitter/src/fonts/sqt5/font_it_08x10.lbm rename to radio/src/fonts/sqt5/font_it_08x10.lbm diff --git a/transmitter/src/fonts/sqt5/font_it_08x10.png b/radio/src/fonts/sqt5/font_it_08x10.png similarity index 100% rename from transmitter/src/fonts/sqt5/font_it_08x10.png rename to radio/src/fonts/sqt5/font_it_08x10.png diff --git a/transmitter/src/fonts/sqt5/font_it_10x14.lbm b/radio/src/fonts/sqt5/font_it_10x14.lbm similarity index 100% rename from transmitter/src/fonts/sqt5/font_it_10x14.lbm rename to radio/src/fonts/sqt5/font_it_10x14.lbm diff --git a/transmitter/src/fonts/sqt5/font_it_10x14.png b/radio/src/fonts/sqt5/font_it_10x14.png similarity index 100% rename from transmitter/src/fonts/sqt5/font_it_10x14.png rename to radio/src/fonts/sqt5/font_it_10x14.png diff --git a/transmitter/src/fonts/sqt5/font_pt_05x07.lbm b/radio/src/fonts/sqt5/font_pt_05x07.lbm similarity index 100% rename from transmitter/src/fonts/sqt5/font_pt_05x07.lbm rename to radio/src/fonts/sqt5/font_pt_05x07.lbm diff --git a/transmitter/src/fonts/sqt5/font_pt_05x07.png b/radio/src/fonts/sqt5/font_pt_05x07.png similarity index 100% rename from transmitter/src/fonts/sqt5/font_pt_05x07.png rename to radio/src/fonts/sqt5/font_pt_05x07.png diff --git a/transmitter/src/fonts/sqt5/font_pt_08x10.lbm b/radio/src/fonts/sqt5/font_pt_08x10.lbm similarity index 100% rename from transmitter/src/fonts/sqt5/font_pt_08x10.lbm rename to radio/src/fonts/sqt5/font_pt_08x10.lbm diff --git a/transmitter/src/fonts/sqt5/font_pt_08x10.png b/radio/src/fonts/sqt5/font_pt_08x10.png similarity index 100% rename from transmitter/src/fonts/sqt5/font_pt_08x10.png rename to radio/src/fonts/sqt5/font_pt_08x10.png diff --git a/transmitter/src/fonts/sqt5/font_pt_10x14.lbm b/radio/src/fonts/sqt5/font_pt_10x14.lbm similarity index 100% rename from transmitter/src/fonts/sqt5/font_pt_10x14.lbm rename to radio/src/fonts/sqt5/font_pt_10x14.lbm diff --git a/transmitter/src/fonts/sqt5/font_pt_10x14.png b/radio/src/fonts/sqt5/font_pt_10x14.png similarity index 100% rename from transmitter/src/fonts/sqt5/font_pt_10x14.png rename to radio/src/fonts/sqt5/font_pt_10x14.png diff --git a/transmitter/src/fonts/sqt5/font_se_04x06.lbm b/radio/src/fonts/sqt5/font_se_04x06.lbm similarity index 100% rename from transmitter/src/fonts/sqt5/font_se_04x06.lbm rename to radio/src/fonts/sqt5/font_se_04x06.lbm diff --git a/transmitter/src/fonts/sqt5/font_se_04x06.png b/radio/src/fonts/sqt5/font_se_04x06.png similarity index 100% rename from transmitter/src/fonts/sqt5/font_se_04x06.png rename to radio/src/fonts/sqt5/font_se_04x06.png diff --git a/transmitter/src/fonts/sqt5/font_se_05x07.lbm b/radio/src/fonts/sqt5/font_se_05x07.lbm similarity index 100% rename from transmitter/src/fonts/sqt5/font_se_05x07.lbm rename to radio/src/fonts/sqt5/font_se_05x07.lbm diff --git a/transmitter/src/fonts/sqt5/font_se_05x07.png b/radio/src/fonts/sqt5/font_se_05x07.png similarity index 100% rename from transmitter/src/fonts/sqt5/font_se_05x07.png rename to radio/src/fonts/sqt5/font_se_05x07.png diff --git a/transmitter/src/fonts/sqt5/font_se_08x10.lbm b/radio/src/fonts/sqt5/font_se_08x10.lbm similarity index 100% rename from transmitter/src/fonts/sqt5/font_se_08x10.lbm rename to radio/src/fonts/sqt5/font_se_08x10.lbm diff --git a/transmitter/src/fonts/sqt5/font_se_08x10.png b/radio/src/fonts/sqt5/font_se_08x10.png similarity index 100% rename from transmitter/src/fonts/sqt5/font_se_08x10.png rename to radio/src/fonts/sqt5/font_se_08x10.png diff --git a/transmitter/src/fonts/sqt5/font_se_10x14.lbm b/radio/src/fonts/sqt5/font_se_10x14.lbm similarity index 100% rename from transmitter/src/fonts/sqt5/font_se_10x14.lbm rename to radio/src/fonts/sqt5/font_se_10x14.lbm diff --git a/transmitter/src/fonts/sqt5/font_se_10x14.png b/radio/src/fonts/sqt5/font_se_10x14.png similarity index 100% rename from transmitter/src/fonts/sqt5/font_se_10x14.png rename to radio/src/fonts/sqt5/font_se_10x14.png diff --git a/transmitter/src/fonts/std/font_03x05.lbm b/radio/src/fonts/std/font_03x05.lbm similarity index 100% rename from transmitter/src/fonts/std/font_03x05.lbm rename to radio/src/fonts/std/font_03x05.lbm diff --git a/transmitter/src/fonts/std/font_03x05.png b/radio/src/fonts/std/font_03x05.png similarity index 100% rename from transmitter/src/fonts/std/font_03x05.png rename to radio/src/fonts/std/font_03x05.png diff --git a/transmitter/src/fonts/std/font_04x06.lbm b/radio/src/fonts/std/font_04x06.lbm similarity index 100% rename from transmitter/src/fonts/std/font_04x06.lbm rename to radio/src/fonts/std/font_04x06.lbm diff --git a/transmitter/src/fonts/std/font_04x06.png b/radio/src/fonts/std/font_04x06.png similarity index 100% rename from transmitter/src/fonts/std/font_04x06.png rename to radio/src/fonts/std/font_04x06.png diff --git a/transmitter/src/fonts/std/font_04x06_extra.lbm b/radio/src/fonts/std/font_04x06_extra.lbm similarity index 100% rename from transmitter/src/fonts/std/font_04x06_extra.lbm rename to radio/src/fonts/std/font_04x06_extra.lbm diff --git a/transmitter/src/fonts/std/font_04x06_extra.png b/radio/src/fonts/std/font_04x06_extra.png similarity index 100% rename from transmitter/src/fonts/std/font_04x06_extra.png rename to radio/src/fonts/std/font_04x06_extra.png diff --git a/transmitter/src/fonts/std/font_05x07.lbm b/radio/src/fonts/std/font_05x07.lbm similarity index 100% rename from transmitter/src/fonts/std/font_05x07.lbm rename to radio/src/fonts/std/font_05x07.lbm diff --git a/transmitter/src/fonts/std/font_05x07.png b/radio/src/fonts/std/font_05x07.png similarity index 100% rename from transmitter/src/fonts/std/font_05x07.png rename to radio/src/fonts/std/font_05x07.png diff --git a/transmitter/src/fonts/std/font_05x07_extra.lbm b/radio/src/fonts/std/font_05x07_extra.lbm similarity index 100% rename from transmitter/src/fonts/std/font_05x07_extra.lbm rename to radio/src/fonts/std/font_05x07_extra.lbm diff --git a/transmitter/src/fonts/std/font_05x07_extra.png b/radio/src/fonts/std/font_05x07_extra.png similarity index 100% rename from transmitter/src/fonts/std/font_05x07_extra.png rename to radio/src/fonts/std/font_05x07_extra.png diff --git a/transmitter/src/fonts/std/font_08x10.lbm b/radio/src/fonts/std/font_08x10.lbm similarity index 100% rename from transmitter/src/fonts/std/font_08x10.lbm rename to radio/src/fonts/std/font_08x10.lbm diff --git a/transmitter/src/fonts/std/font_08x10.png b/radio/src/fonts/std/font_08x10.png similarity index 100% rename from transmitter/src/fonts/std/font_08x10.png rename to radio/src/fonts/std/font_08x10.png diff --git a/transmitter/src/fonts/std/font_10x14.lbm b/radio/src/fonts/std/font_10x14.lbm similarity index 100% rename from transmitter/src/fonts/std/font_10x14.lbm rename to radio/src/fonts/std/font_10x14.lbm diff --git a/transmitter/src/fonts/std/font_10x14.png b/radio/src/fonts/std/font_10x14.png similarity index 100% rename from transmitter/src/fonts/std/font_10x14.png rename to radio/src/fonts/std/font_10x14.png diff --git a/transmitter/src/fonts/std/font_10x14_compressed.lbm b/radio/src/fonts/std/font_10x14_compressed.lbm similarity index 100% rename from transmitter/src/fonts/std/font_10x14_compressed.lbm rename to radio/src/fonts/std/font_10x14_compressed.lbm diff --git a/transmitter/src/fonts/std/font_10x14_compressed.png b/radio/src/fonts/std/font_10x14_compressed.png similarity index 100% rename from transmitter/src/fonts/std/font_10x14_compressed.png rename to radio/src/fonts/std/font_10x14_compressed.png diff --git a/transmitter/src/fonts/std/font_10x14_extra.lbm b/radio/src/fonts/std/font_10x14_extra.lbm similarity index 100% rename from transmitter/src/fonts/std/font_10x14_extra.lbm rename to radio/src/fonts/std/font_10x14_extra.lbm diff --git a/transmitter/src/fonts/std/font_10x14_extra.png b/radio/src/fonts/std/font_10x14_extra.png similarity index 100% rename from transmitter/src/fonts/std/font_10x14_extra.png rename to radio/src/fonts/std/font_10x14_extra.png diff --git a/transmitter/src/fonts/std/font_cz_04x06.lbm b/radio/src/fonts/std/font_cz_04x06.lbm similarity index 100% rename from transmitter/src/fonts/std/font_cz_04x06.lbm rename to radio/src/fonts/std/font_cz_04x06.lbm diff --git a/transmitter/src/fonts/std/font_cz_04x06.png b/radio/src/fonts/std/font_cz_04x06.png similarity index 100% rename from transmitter/src/fonts/std/font_cz_04x06.png rename to radio/src/fonts/std/font_cz_04x06.png diff --git a/transmitter/src/fonts/std/font_cz_05x07.lbm b/radio/src/fonts/std/font_cz_05x07.lbm similarity index 100% rename from transmitter/src/fonts/std/font_cz_05x07.lbm rename to radio/src/fonts/std/font_cz_05x07.lbm diff --git a/transmitter/src/fonts/std/font_cz_05x07.png b/radio/src/fonts/std/font_cz_05x07.png similarity index 100% rename from transmitter/src/fonts/std/font_cz_05x07.png rename to radio/src/fonts/std/font_cz_05x07.png diff --git a/transmitter/src/fonts/std/font_cz_08x10.lbm b/radio/src/fonts/std/font_cz_08x10.lbm similarity index 100% rename from transmitter/src/fonts/std/font_cz_08x10.lbm rename to radio/src/fonts/std/font_cz_08x10.lbm diff --git a/transmitter/src/fonts/std/font_cz_08x10.png b/radio/src/fonts/std/font_cz_08x10.png similarity index 100% rename from transmitter/src/fonts/std/font_cz_08x10.png rename to radio/src/fonts/std/font_cz_08x10.png diff --git a/transmitter/src/fonts/std/font_cz_10x14.lbm b/radio/src/fonts/std/font_cz_10x14.lbm similarity index 100% rename from transmitter/src/fonts/std/font_cz_10x14.lbm rename to radio/src/fonts/std/font_cz_10x14.lbm diff --git a/transmitter/src/fonts/std/font_cz_10x14.png b/radio/src/fonts/std/font_cz_10x14.png similarity index 100% rename from transmitter/src/fonts/std/font_cz_10x14.png rename to radio/src/fonts/std/font_cz_10x14.png diff --git a/transmitter/src/fonts/std/font_de_04x06.lbm b/radio/src/fonts/std/font_de_04x06.lbm similarity index 100% rename from transmitter/src/fonts/std/font_de_04x06.lbm rename to radio/src/fonts/std/font_de_04x06.lbm diff --git a/transmitter/src/fonts/std/font_de_04x06.png b/radio/src/fonts/std/font_de_04x06.png similarity index 100% rename from transmitter/src/fonts/std/font_de_04x06.png rename to radio/src/fonts/std/font_de_04x06.png diff --git a/transmitter/src/fonts/std/font_de_05x07.lbm b/radio/src/fonts/std/font_de_05x07.lbm similarity index 100% rename from transmitter/src/fonts/std/font_de_05x07.lbm rename to radio/src/fonts/std/font_de_05x07.lbm diff --git a/transmitter/src/fonts/std/font_de_05x07.png b/radio/src/fonts/std/font_de_05x07.png similarity index 100% rename from transmitter/src/fonts/std/font_de_05x07.png rename to radio/src/fonts/std/font_de_05x07.png diff --git a/transmitter/src/fonts/std/font_de_08x10.lbm b/radio/src/fonts/std/font_de_08x10.lbm similarity index 100% rename from transmitter/src/fonts/std/font_de_08x10.lbm rename to radio/src/fonts/std/font_de_08x10.lbm diff --git a/transmitter/src/fonts/std/font_de_08x10.png b/radio/src/fonts/std/font_de_08x10.png similarity index 100% rename from transmitter/src/fonts/std/font_de_08x10.png rename to radio/src/fonts/std/font_de_08x10.png diff --git a/transmitter/src/fonts/std/font_de_10x14.lbm b/radio/src/fonts/std/font_de_10x14.lbm similarity index 100% rename from transmitter/src/fonts/std/font_de_10x14.lbm rename to radio/src/fonts/std/font_de_10x14.lbm diff --git a/transmitter/src/fonts/std/font_de_10x14.png b/radio/src/fonts/std/font_de_10x14.png similarity index 100% rename from transmitter/src/fonts/std/font_de_10x14.png rename to radio/src/fonts/std/font_de_10x14.png diff --git a/transmitter/src/fonts/std/font_es_04x06.lbm b/radio/src/fonts/std/font_es_04x06.lbm similarity index 100% rename from transmitter/src/fonts/std/font_es_04x06.lbm rename to radio/src/fonts/std/font_es_04x06.lbm diff --git a/transmitter/src/fonts/std/font_es_04x06.png b/radio/src/fonts/std/font_es_04x06.png similarity index 100% rename from transmitter/src/fonts/std/font_es_04x06.png rename to radio/src/fonts/std/font_es_04x06.png diff --git a/transmitter/src/fonts/std/font_es_05x07.lbm b/radio/src/fonts/std/font_es_05x07.lbm similarity index 100% rename from transmitter/src/fonts/std/font_es_05x07.lbm rename to radio/src/fonts/std/font_es_05x07.lbm diff --git a/transmitter/src/fonts/std/font_es_05x07.png b/radio/src/fonts/std/font_es_05x07.png similarity index 100% rename from transmitter/src/fonts/std/font_es_05x07.png rename to radio/src/fonts/std/font_es_05x07.png diff --git a/transmitter/src/fonts/std/font_es_08x10.lbm b/radio/src/fonts/std/font_es_08x10.lbm similarity index 100% rename from transmitter/src/fonts/std/font_es_08x10.lbm rename to radio/src/fonts/std/font_es_08x10.lbm diff --git a/transmitter/src/fonts/std/font_es_08x10.png b/radio/src/fonts/std/font_es_08x10.png similarity index 100% rename from transmitter/src/fonts/std/font_es_08x10.png rename to radio/src/fonts/std/font_es_08x10.png diff --git a/transmitter/src/fonts/std/font_es_10x14.lbm b/radio/src/fonts/std/font_es_10x14.lbm similarity index 100% rename from transmitter/src/fonts/std/font_es_10x14.lbm rename to radio/src/fonts/std/font_es_10x14.lbm diff --git a/transmitter/src/fonts/std/font_es_10x14.png b/radio/src/fonts/std/font_es_10x14.png similarity index 100% rename from transmitter/src/fonts/std/font_es_10x14.png rename to radio/src/fonts/std/font_es_10x14.png diff --git a/transmitter/src/fonts/std/font_fr_04x06.lbm b/radio/src/fonts/std/font_fr_04x06.lbm similarity index 100% rename from transmitter/src/fonts/std/font_fr_04x06.lbm rename to radio/src/fonts/std/font_fr_04x06.lbm diff --git a/transmitter/src/fonts/std/font_fr_04x06.png b/radio/src/fonts/std/font_fr_04x06.png similarity index 100% rename from transmitter/src/fonts/std/font_fr_04x06.png rename to radio/src/fonts/std/font_fr_04x06.png diff --git a/transmitter/src/fonts/std/font_fr_05x07.lbm b/radio/src/fonts/std/font_fr_05x07.lbm similarity index 100% rename from transmitter/src/fonts/std/font_fr_05x07.lbm rename to radio/src/fonts/std/font_fr_05x07.lbm diff --git a/transmitter/src/fonts/std/font_fr_05x07.png b/radio/src/fonts/std/font_fr_05x07.png similarity index 100% rename from transmitter/src/fonts/std/font_fr_05x07.png rename to radio/src/fonts/std/font_fr_05x07.png diff --git a/transmitter/src/fonts/std/font_fr_08x10.lbm b/radio/src/fonts/std/font_fr_08x10.lbm similarity index 100% rename from transmitter/src/fonts/std/font_fr_08x10.lbm rename to radio/src/fonts/std/font_fr_08x10.lbm diff --git a/transmitter/src/fonts/std/font_fr_08x10.png b/radio/src/fonts/std/font_fr_08x10.png similarity index 100% rename from transmitter/src/fonts/std/font_fr_08x10.png rename to radio/src/fonts/std/font_fr_08x10.png diff --git a/transmitter/src/fonts/std/font_fr_10x14.lbm b/radio/src/fonts/std/font_fr_10x14.lbm similarity index 100% rename from transmitter/src/fonts/std/font_fr_10x14.lbm rename to radio/src/fonts/std/font_fr_10x14.lbm diff --git a/transmitter/src/fonts/std/font_fr_10x14.png b/radio/src/fonts/std/font_fr_10x14.png similarity index 100% rename from transmitter/src/fonts/std/font_fr_10x14.png rename to radio/src/fonts/std/font_fr_10x14.png diff --git a/transmitter/src/fonts/std/font_it_04x06.lbm b/radio/src/fonts/std/font_it_04x06.lbm similarity index 100% rename from transmitter/src/fonts/std/font_it_04x06.lbm rename to radio/src/fonts/std/font_it_04x06.lbm diff --git a/transmitter/src/fonts/std/font_it_04x06.png b/radio/src/fonts/std/font_it_04x06.png similarity index 100% rename from transmitter/src/fonts/std/font_it_04x06.png rename to radio/src/fonts/std/font_it_04x06.png diff --git a/transmitter/src/fonts/std/font_it_05x07.lbm b/radio/src/fonts/std/font_it_05x07.lbm similarity index 100% rename from transmitter/src/fonts/std/font_it_05x07.lbm rename to radio/src/fonts/std/font_it_05x07.lbm diff --git a/transmitter/src/fonts/std/font_it_05x07.png b/radio/src/fonts/std/font_it_05x07.png similarity index 100% rename from transmitter/src/fonts/std/font_it_05x07.png rename to radio/src/fonts/std/font_it_05x07.png diff --git a/transmitter/src/fonts/std/font_it_08x10.lbm b/radio/src/fonts/std/font_it_08x10.lbm similarity index 100% rename from transmitter/src/fonts/std/font_it_08x10.lbm rename to radio/src/fonts/std/font_it_08x10.lbm diff --git a/transmitter/src/fonts/std/font_it_08x10.png b/radio/src/fonts/std/font_it_08x10.png similarity index 100% rename from transmitter/src/fonts/std/font_it_08x10.png rename to radio/src/fonts/std/font_it_08x10.png diff --git a/transmitter/src/fonts/std/font_it_10x14.lbm b/radio/src/fonts/std/font_it_10x14.lbm similarity index 100% rename from transmitter/src/fonts/std/font_it_10x14.lbm rename to radio/src/fonts/std/font_it_10x14.lbm diff --git a/transmitter/src/fonts/std/font_it_10x14.png b/radio/src/fonts/std/font_it_10x14.png similarity index 100% rename from transmitter/src/fonts/std/font_it_10x14.png rename to radio/src/fonts/std/font_it_10x14.png diff --git a/transmitter/src/fonts/std/font_pt_04x06.lbm b/radio/src/fonts/std/font_pt_04x06.lbm similarity index 100% rename from transmitter/src/fonts/std/font_pt_04x06.lbm rename to radio/src/fonts/std/font_pt_04x06.lbm diff --git a/transmitter/src/fonts/std/font_pt_04x06.png b/radio/src/fonts/std/font_pt_04x06.png similarity index 100% rename from transmitter/src/fonts/std/font_pt_04x06.png rename to radio/src/fonts/std/font_pt_04x06.png diff --git a/transmitter/src/fonts/std/font_pt_05x07.lbm b/radio/src/fonts/std/font_pt_05x07.lbm similarity index 100% rename from transmitter/src/fonts/std/font_pt_05x07.lbm rename to radio/src/fonts/std/font_pt_05x07.lbm diff --git a/transmitter/src/fonts/std/font_pt_05x07.png b/radio/src/fonts/std/font_pt_05x07.png similarity index 100% rename from transmitter/src/fonts/std/font_pt_05x07.png rename to radio/src/fonts/std/font_pt_05x07.png diff --git a/transmitter/src/fonts/std/font_pt_08x10.lbm b/radio/src/fonts/std/font_pt_08x10.lbm similarity index 100% rename from transmitter/src/fonts/std/font_pt_08x10.lbm rename to radio/src/fonts/std/font_pt_08x10.lbm diff --git a/transmitter/src/fonts/std/font_pt_08x10.png b/radio/src/fonts/std/font_pt_08x10.png similarity index 100% rename from transmitter/src/fonts/std/font_pt_08x10.png rename to radio/src/fonts/std/font_pt_08x10.png diff --git a/transmitter/src/fonts/std/font_pt_10x14.lbm b/radio/src/fonts/std/font_pt_10x14.lbm similarity index 100% rename from transmitter/src/fonts/std/font_pt_10x14.lbm rename to radio/src/fonts/std/font_pt_10x14.lbm diff --git a/transmitter/src/fonts/std/font_pt_10x14.png b/radio/src/fonts/std/font_pt_10x14.png similarity index 100% rename from transmitter/src/fonts/std/font_pt_10x14.png rename to radio/src/fonts/std/font_pt_10x14.png diff --git a/transmitter/src/fonts/std/font_se_04x06.lbm b/radio/src/fonts/std/font_se_04x06.lbm similarity index 100% rename from transmitter/src/fonts/std/font_se_04x06.lbm rename to radio/src/fonts/std/font_se_04x06.lbm diff --git a/transmitter/src/fonts/std/font_se_04x06.png b/radio/src/fonts/std/font_se_04x06.png similarity index 100% rename from transmitter/src/fonts/std/font_se_04x06.png rename to radio/src/fonts/std/font_se_04x06.png diff --git a/transmitter/src/fonts/std/font_se_05x07.lbm b/radio/src/fonts/std/font_se_05x07.lbm similarity index 100% rename from transmitter/src/fonts/std/font_se_05x07.lbm rename to radio/src/fonts/std/font_se_05x07.lbm diff --git a/transmitter/src/fonts/std/font_se_05x07.png b/radio/src/fonts/std/font_se_05x07.png similarity index 100% rename from transmitter/src/fonts/std/font_se_05x07.png rename to radio/src/fonts/std/font_se_05x07.png diff --git a/transmitter/src/fonts/std/font_se_08x10.lbm b/radio/src/fonts/std/font_se_08x10.lbm similarity index 100% rename from transmitter/src/fonts/std/font_se_08x10.lbm rename to radio/src/fonts/std/font_se_08x10.lbm diff --git a/transmitter/src/fonts/std/font_se_08x10.png b/radio/src/fonts/std/font_se_08x10.png similarity index 100% rename from transmitter/src/fonts/std/font_se_08x10.png rename to radio/src/fonts/std/font_se_08x10.png diff --git a/transmitter/src/fonts/std/font_se_10x14.lbm b/radio/src/fonts/std/font_se_10x14.lbm similarity index 100% rename from transmitter/src/fonts/std/font_se_10x14.lbm rename to radio/src/fonts/std/font_se_10x14.lbm diff --git a/transmitter/src/fonts/std/font_se_10x14.png b/radio/src/fonts/std/font_se_10x14.png similarity index 100% rename from transmitter/src/fonts/std/font_se_10x14.png rename to radio/src/fonts/std/font_se_10x14.png diff --git a/transmitter/src/gtests.cpp b/radio/src/gtests.cpp similarity index 100% rename from transmitter/src/gtests.cpp rename to radio/src/gtests.cpp diff --git a/transmitter/src/gui/menu_general.cpp b/radio/src/gui/menu_general.cpp similarity index 100% rename from transmitter/src/gui/menu_general.cpp rename to radio/src/gui/menu_general.cpp diff --git a/transmitter/src/gui/menu_model.cpp b/radio/src/gui/menu_model.cpp similarity index 100% rename from transmitter/src/gui/menu_model.cpp rename to radio/src/gui/menu_model.cpp diff --git a/transmitter/src/gui/menus.cpp b/radio/src/gui/menus.cpp similarity index 100% rename from transmitter/src/gui/menus.cpp rename to radio/src/gui/menus.cpp diff --git a/transmitter/src/gui/menus.h b/radio/src/gui/menus.h similarity index 100% rename from transmitter/src/gui/menus.h rename to radio/src/gui/menus.h diff --git a/transmitter/src/gui/view_about.cpp b/radio/src/gui/view_about.cpp similarity index 100% rename from transmitter/src/gui/view_about.cpp rename to radio/src/gui/view_about.cpp diff --git a/transmitter/src/gui/view_channels.cpp b/radio/src/gui/view_channels.cpp similarity index 100% rename from transmitter/src/gui/view_channels.cpp rename to radio/src/gui/view_channels.cpp diff --git a/transmitter/src/gui/view_main.cpp b/radio/src/gui/view_main.cpp similarity index 100% rename from transmitter/src/gui/view_main.cpp rename to radio/src/gui/view_main.cpp diff --git a/transmitter/src/gui/view_mavlink.cpp b/radio/src/gui/view_mavlink.cpp similarity index 100% rename from transmitter/src/gui/view_mavlink.cpp rename to radio/src/gui/view_mavlink.cpp diff --git a/transmitter/src/gui/view_mavlink.h b/radio/src/gui/view_mavlink.h similarity index 100% rename from transmitter/src/gui/view_mavlink.h rename to radio/src/gui/view_mavlink.h diff --git a/transmitter/src/gui/view_statistics.cpp b/radio/src/gui/view_statistics.cpp similarity index 100% rename from transmitter/src/gui/view_statistics.cpp rename to radio/src/gui/view_statistics.cpp diff --git a/transmitter/src/gui/view_telemetry.cpp b/radio/src/gui/view_telemetry.cpp similarity index 100% rename from transmitter/src/gui/view_telemetry.cpp rename to radio/src/gui/view_telemetry.cpp diff --git a/transmitter/src/gui/view_text.cpp b/radio/src/gui/view_text.cpp similarity index 100% rename from transmitter/src/gui/view_text.cpp rename to radio/src/gui/view_text.cpp diff --git a/transmitter/src/haptic.cpp b/radio/src/haptic.cpp similarity index 100% rename from transmitter/src/haptic.cpp rename to radio/src/haptic.cpp diff --git a/transmitter/src/haptic.h b/radio/src/haptic.h similarity index 100% rename from transmitter/src/haptic.h rename to radio/src/haptic.h diff --git a/transmitter/src/keys.cpp b/radio/src/keys.cpp similarity index 100% rename from transmitter/src/keys.cpp rename to radio/src/keys.cpp diff --git a/transmitter/src/lcd.cpp b/radio/src/lcd.cpp similarity index 100% rename from transmitter/src/lcd.cpp rename to radio/src/lcd.cpp diff --git a/transmitter/src/lcd.h b/radio/src/lcd.h similarity index 100% rename from transmitter/src/lcd.h rename to radio/src/lcd.h diff --git a/transmitter/src/logs.cpp b/radio/src/logs.cpp similarity index 100% rename from transmitter/src/logs.cpp rename to radio/src/logs.cpp diff --git a/transmitter/src/maths.cpp b/radio/src/maths.cpp similarity index 100% rename from transmitter/src/maths.cpp rename to radio/src/maths.cpp diff --git a/transmitter/src/myeeprom.h b/radio/src/myeeprom.h similarity index 100% rename from transmitter/src/myeeprom.h rename to radio/src/myeeprom.h diff --git a/transmitter/src/opentx.cpp b/radio/src/opentx.cpp similarity index 100% rename from transmitter/src/opentx.cpp rename to radio/src/opentx.cpp diff --git a/transmitter/src/opentx.h b/radio/src/opentx.h similarity index 100% rename from transmitter/src/opentx.h rename to radio/src/opentx.h diff --git a/transmitter/src/pgmtypes.h b/radio/src/pgmtypes.h similarity index 100% rename from transmitter/src/pgmtypes.h rename to radio/src/pgmtypes.h diff --git a/transmitter/src/protocols/dsm2_arm.cpp b/radio/src/protocols/dsm2_arm.cpp similarity index 100% rename from transmitter/src/protocols/dsm2_arm.cpp rename to radio/src/protocols/dsm2_arm.cpp diff --git a/transmitter/src/protocols/ppm_arm.cpp b/radio/src/protocols/ppm_arm.cpp similarity index 100% rename from transmitter/src/protocols/ppm_arm.cpp rename to radio/src/protocols/ppm_arm.cpp diff --git a/transmitter/src/protocols/pulses_arm.cpp b/radio/src/protocols/pulses_arm.cpp similarity index 100% rename from transmitter/src/protocols/pulses_arm.cpp rename to radio/src/protocols/pulses_arm.cpp diff --git a/transmitter/src/protocols/pulses_arm.h b/radio/src/protocols/pulses_arm.h similarity index 100% rename from transmitter/src/protocols/pulses_arm.h rename to radio/src/protocols/pulses_arm.h diff --git a/transmitter/src/protocols/pulses_avr.cpp b/radio/src/protocols/pulses_avr.cpp similarity index 100% rename from transmitter/src/protocols/pulses_avr.cpp rename to radio/src/protocols/pulses_avr.cpp diff --git a/transmitter/src/protocols/pulses_avr.h b/radio/src/protocols/pulses_avr.h similarity index 100% rename from transmitter/src/protocols/pulses_avr.h rename to radio/src/protocols/pulses_avr.h diff --git a/transmitter/src/protocols/pxx_arm.cpp b/radio/src/protocols/pxx_arm.cpp similarity index 100% rename from transmitter/src/protocols/pxx_arm.cpp rename to radio/src/protocols/pxx_arm.cpp diff --git a/transmitter/src/rtc.cpp b/radio/src/rtc.cpp similarity index 100% rename from transmitter/src/rtc.cpp rename to radio/src/rtc.cpp diff --git a/transmitter/src/rtc.h b/radio/src/rtc.h similarity index 100% rename from transmitter/src/rtc.h rename to radio/src/rtc.h diff --git a/transmitter/src/sdcard.h b/radio/src/sdcard.h similarity index 100% rename from transmitter/src/sdcard.h rename to radio/src/sdcard.h diff --git a/transmitter/src/serial.cpp b/radio/src/serial.cpp similarity index 100% rename from transmitter/src/serial.cpp rename to radio/src/serial.cpp diff --git a/transmitter/src/serial.h b/radio/src/serial.h similarity index 100% rename from transmitter/src/serial.h rename to radio/src/serial.h diff --git a/transmitter/src/simpgmspace.cpp b/radio/src/simpgmspace.cpp similarity index 100% rename from transmitter/src/simpgmspace.cpp rename to radio/src/simpgmspace.cpp diff --git a/transmitter/src/simpgmspace.h b/radio/src/simpgmspace.h similarity index 100% rename from transmitter/src/simpgmspace.h rename to radio/src/simpgmspace.h diff --git a/transmitter/src/simu.cpp b/radio/src/simu.cpp similarity index 100% rename from transmitter/src/simu.cpp rename to radio/src/simu.cpp diff --git a/transmitter/src/stamp.cpp b/radio/src/stamp.cpp similarity index 100% rename from transmitter/src/stamp.cpp rename to radio/src/stamp.cpp diff --git a/transmitter/src/targets/gruvin9x/board_gruvin9x.cpp b/radio/src/targets/gruvin9x/board_gruvin9x.cpp similarity index 100% rename from transmitter/src/targets/gruvin9x/board_gruvin9x.cpp rename to radio/src/targets/gruvin9x/board_gruvin9x.cpp diff --git a/transmitter/src/targets/gruvin9x/board_gruvin9x.h b/radio/src/targets/gruvin9x/board_gruvin9x.h similarity index 100% rename from transmitter/src/targets/gruvin9x/board_gruvin9x.h rename to radio/src/targets/gruvin9x/board_gruvin9x.h diff --git a/transmitter/src/targets/gruvin9x/diskio.cpp b/radio/src/targets/gruvin9x/diskio.cpp similarity index 100% rename from transmitter/src/targets/gruvin9x/diskio.cpp rename to radio/src/targets/gruvin9x/diskio.cpp diff --git a/transmitter/src/targets/gruvin9x/fuses_2561.txt b/radio/src/targets/gruvin9x/fuses_2561.txt similarity index 100% rename from transmitter/src/targets/gruvin9x/fuses_2561.txt rename to radio/src/targets/gruvin9x/fuses_2561.txt diff --git a/transmitter/src/targets/gruvin9x/rtc_driver.cpp b/radio/src/targets/gruvin9x/rtc_driver.cpp similarity index 100% rename from transmitter/src/targets/gruvin9x/rtc_driver.cpp rename to radio/src/targets/gruvin9x/rtc_driver.cpp diff --git a/transmitter/src/targets/gruvin9x/somo14d.cpp b/radio/src/targets/gruvin9x/somo14d.cpp similarity index 100% rename from transmitter/src/targets/gruvin9x/somo14d.cpp rename to radio/src/targets/gruvin9x/somo14d.cpp diff --git a/transmitter/src/targets/gruvin9x/somo14d.h b/radio/src/targets/gruvin9x/somo14d.h similarity index 100% rename from transmitter/src/targets/gruvin9x/somo14d.h rename to radio/src/targets/gruvin9x/somo14d.h diff --git a/transmitter/src/targets/mega2560/00readme.txt b/radio/src/targets/mega2560/00readme.txt similarity index 100% rename from transmitter/src/targets/mega2560/00readme.txt rename to radio/src/targets/mega2560/00readme.txt diff --git a/transmitter/src/targets/mega2560/board_mega2560.cpp b/radio/src/targets/mega2560/board_mega2560.cpp similarity index 100% rename from transmitter/src/targets/mega2560/board_mega2560.cpp rename to radio/src/targets/mega2560/board_mega2560.cpp diff --git a/transmitter/src/targets/mega2560/board_mega2560.h b/radio/src/targets/mega2560/board_mega2560.h similarity index 100% rename from transmitter/src/targets/mega2560/board_mega2560.h rename to radio/src/targets/mega2560/board_mega2560.h diff --git a/transmitter/src/targets/mega2560/io_mega2560.h b/radio/src/targets/mega2560/io_mega2560.h similarity index 100% rename from transmitter/src/targets/mega2560/io_mega2560.h rename to radio/src/targets/mega2560/io_mega2560.h diff --git a/transmitter/src/targets/mega2560/lcd_driver_ST7565R.cpp b/radio/src/targets/mega2560/lcd_driver_ST7565R.cpp similarity index 100% rename from transmitter/src/targets/mega2560/lcd_driver_ST7565R.cpp rename to radio/src/targets/mega2560/lcd_driver_ST7565R.cpp diff --git a/transmitter/src/targets/mega2560/rtc_driver.cpp b/radio/src/targets/mega2560/rtc_driver.cpp similarity index 100% rename from transmitter/src/targets/mega2560/rtc_driver.cpp rename to radio/src/targets/mega2560/rtc_driver.cpp diff --git a/transmitter/src/targets/sky9x/AT91SAM3S2.h b/radio/src/targets/sky9x/AT91SAM3S2.h similarity index 100% rename from transmitter/src/targets/sky9x/AT91SAM3S2.h rename to radio/src/targets/sky9x/AT91SAM3S2.h diff --git a/transmitter/src/targets/sky9x/AT91SAM3S4.h b/radio/src/targets/sky9x/AT91SAM3S4.h similarity index 100% rename from transmitter/src/targets/sky9x/AT91SAM3S4.h rename to radio/src/targets/sky9x/AT91SAM3S4.h diff --git a/transmitter/src/targets/sky9x/MEDSdcard.c b/radio/src/targets/sky9x/MEDSdcard.c similarity index 100% rename from transmitter/src/targets/sky9x/MEDSdcard.c rename to radio/src/targets/sky9x/MEDSdcard.c diff --git a/transmitter/src/targets/sky9x/Media.h b/radio/src/targets/sky9x/Media.h similarity index 100% rename from transmitter/src/targets/sky9x/Media.h rename to radio/src/targets/sky9x/Media.h diff --git a/transmitter/src/targets/sky9x/adc_driver.cpp b/radio/src/targets/sky9x/adc_driver.cpp similarity index 100% rename from transmitter/src/targets/sky9x/adc_driver.cpp rename to radio/src/targets/sky9x/adc_driver.cpp diff --git a/transmitter/src/targets/sky9x/audio_driver.cpp b/radio/src/targets/sky9x/audio_driver.cpp similarity index 100% rename from transmitter/src/targets/sky9x/audio_driver.cpp rename to radio/src/targets/sky9x/audio_driver.cpp diff --git a/transmitter/src/targets/sky9x/audio_driver.h b/radio/src/targets/sky9x/audio_driver.h similarity index 100% rename from transmitter/src/targets/sky9x/audio_driver.h rename to radio/src/targets/sky9x/audio_driver.h diff --git a/transmitter/src/targets/sky9x/bluetooth.cpp b/radio/src/targets/sky9x/bluetooth.cpp similarity index 100% rename from transmitter/src/targets/sky9x/bluetooth.cpp rename to radio/src/targets/sky9x/bluetooth.cpp diff --git a/transmitter/src/targets/sky9x/board.h b/radio/src/targets/sky9x/board.h similarity index 100% rename from transmitter/src/targets/sky9x/board.h rename to radio/src/targets/sky9x/board.h diff --git a/transmitter/src/targets/sky9x/board_lowlevel.c b/radio/src/targets/sky9x/board_lowlevel.c similarity index 100% rename from transmitter/src/targets/sky9x/board_lowlevel.c rename to radio/src/targets/sky9x/board_lowlevel.c diff --git a/transmitter/src/targets/sky9x/board_sky9x.cpp b/radio/src/targets/sky9x/board_sky9x.cpp similarity index 100% rename from transmitter/src/targets/sky9x/board_sky9x.cpp rename to radio/src/targets/sky9x/board_sky9x.cpp diff --git a/transmitter/src/targets/sky9x/board_sky9x.h b/radio/src/targets/sky9x/board_sky9x.h similarity index 100% rename from transmitter/src/targets/sky9x/board_sky9x.h rename to radio/src/targets/sky9x/board_sky9x.h diff --git a/transmitter/src/targets/sky9x/buzzer_driver.cpp b/radio/src/targets/sky9x/buzzer_driver.cpp similarity index 100% rename from transmitter/src/targets/sky9x/buzzer_driver.cpp rename to radio/src/targets/sky9x/buzzer_driver.cpp diff --git a/transmitter/src/targets/sky9x/chip.h b/radio/src/targets/sky9x/chip.h similarity index 100% rename from transmitter/src/targets/sky9x/chip.h rename to radio/src/targets/sky9x/chip.h diff --git a/transmitter/src/targets/sky9x/coproc_driver.cpp b/radio/src/targets/sky9x/coproc_driver.cpp similarity index 100% rename from transmitter/src/targets/sky9x/coproc_driver.cpp rename to radio/src/targets/sky9x/coproc_driver.cpp diff --git a/transmitter/src/targets/sky9x/core_cm3.c b/radio/src/targets/sky9x/core_cm3.c similarity index 100% rename from transmitter/src/targets/sky9x/core_cm3.c rename to radio/src/targets/sky9x/core_cm3.c diff --git a/transmitter/src/targets/sky9x/core_cm3.h b/radio/src/targets/sky9x/core_cm3.h similarity index 100% rename from transmitter/src/targets/sky9x/core_cm3.h rename to radio/src/targets/sky9x/core_cm3.h diff --git a/transmitter/src/targets/sky9x/crt.c b/radio/src/targets/sky9x/crt.c similarity index 100% rename from transmitter/src/targets/sky9x/crt.c rename to radio/src/targets/sky9x/crt.c diff --git a/transmitter/src/targets/sky9x/debug_driver.cpp b/radio/src/targets/sky9x/debug_driver.cpp similarity index 100% rename from transmitter/src/targets/sky9x/debug_driver.cpp rename to radio/src/targets/sky9x/debug_driver.cpp diff --git a/transmitter/src/targets/sky9x/diskio.cpp b/radio/src/targets/sky9x/diskio.cpp similarity index 100% rename from transmitter/src/targets/sky9x/diskio.cpp rename to radio/src/targets/sky9x/diskio.cpp diff --git a/transmitter/src/targets/sky9x/eeprom_driver.cpp b/radio/src/targets/sky9x/eeprom_driver.cpp similarity index 100% rename from transmitter/src/targets/sky9x/eeprom_driver.cpp rename to radio/src/targets/sky9x/eeprom_driver.cpp diff --git a/transmitter/src/targets/sky9x/haptic_driver.cpp b/radio/src/targets/sky9x/haptic_driver.cpp similarity index 100% rename from transmitter/src/targets/sky9x/haptic_driver.cpp rename to radio/src/targets/sky9x/haptic_driver.cpp diff --git a/transmitter/src/targets/sky9x/keys_driver.cpp b/radio/src/targets/sky9x/keys_driver.cpp similarity index 100% rename from transmitter/src/targets/sky9x/keys_driver.cpp rename to radio/src/targets/sky9x/keys_driver.cpp diff --git a/transmitter/src/targets/sky9x/lcd_driver.cpp b/radio/src/targets/sky9x/lcd_driver.cpp similarity index 100% rename from transmitter/src/targets/sky9x/lcd_driver.cpp rename to radio/src/targets/sky9x/lcd_driver.cpp diff --git a/transmitter/src/targets/sky9x/massstorage.cpp b/radio/src/targets/sky9x/massstorage.cpp similarity index 100% rename from transmitter/src/targets/sky9x/massstorage.cpp rename to radio/src/targets/sky9x/massstorage.cpp diff --git a/transmitter/src/targets/sky9x/pulses_driver.cpp b/radio/src/targets/sky9x/pulses_driver.cpp similarity index 100% rename from transmitter/src/targets/sky9x/pulses_driver.cpp rename to radio/src/targets/sky9x/pulses_driver.cpp diff --git a/transmitter/src/targets/sky9x/pwr_driver.cpp b/radio/src/targets/sky9x/pwr_driver.cpp similarity index 100% rename from transmitter/src/targets/sky9x/pwr_driver.cpp rename to radio/src/targets/sky9x/pwr_driver.cpp diff --git a/transmitter/src/targets/sky9x/rotenc_driver.cpp b/radio/src/targets/sky9x/rotenc_driver.cpp similarity index 100% rename from transmitter/src/targets/sky9x/rotenc_driver.cpp rename to radio/src/targets/sky9x/rotenc_driver.cpp diff --git a/transmitter/src/targets/sky9x/rtc_driver.cpp b/radio/src/targets/sky9x/rtc_driver.cpp similarity index 100% rename from transmitter/src/targets/sky9x/rtc_driver.cpp rename to radio/src/targets/sky9x/rtc_driver.cpp diff --git a/transmitter/src/targets/sky9x/sam3s2c_flash.ld b/radio/src/targets/sky9x/sam3s2c_flash.ld similarity index 100% rename from transmitter/src/targets/sky9x/sam3s2c_flash.ld rename to radio/src/targets/sky9x/sam3s2c_flash.ld diff --git a/transmitter/src/targets/sky9x/sam3s4c_flash.ld b/radio/src/targets/sky9x/sam3s4c_flash.ld similarity index 100% rename from transmitter/src/targets/sky9x/sam3s4c_flash.ld rename to radio/src/targets/sky9x/sam3s4c_flash.ld diff --git a/transmitter/src/targets/sky9x/sdcard_driver.cpp b/radio/src/targets/sky9x/sdcard_driver.cpp similarity index 100% rename from transmitter/src/targets/sky9x/sdcard_driver.cpp rename to radio/src/targets/sky9x/sdcard_driver.cpp diff --git a/transmitter/src/targets/sky9x/syscalls.c b/radio/src/targets/sky9x/syscalls.c similarity index 100% rename from transmitter/src/targets/sky9x/syscalls.c rename to radio/src/targets/sky9x/syscalls.c diff --git a/transmitter/src/targets/sky9x/usb/common/core/USBConfigurationDescriptor.c b/radio/src/targets/sky9x/usb/common/core/USBConfigurationDescriptor.c similarity index 100% rename from transmitter/src/targets/sky9x/usb/common/core/USBConfigurationDescriptor.c rename to radio/src/targets/sky9x/usb/common/core/USBConfigurationDescriptor.c diff --git a/transmitter/src/targets/sky9x/usb/common/core/USBConfigurationDescriptor.h b/radio/src/targets/sky9x/usb/common/core/USBConfigurationDescriptor.h similarity index 100% rename from transmitter/src/targets/sky9x/usb/common/core/USBConfigurationDescriptor.h rename to radio/src/targets/sky9x/usb/common/core/USBConfigurationDescriptor.h diff --git a/transmitter/src/targets/sky9x/usb/common/core/USBDeviceDescriptor.h b/radio/src/targets/sky9x/usb/common/core/USBDeviceDescriptor.h similarity index 100% rename from transmitter/src/targets/sky9x/usb/common/core/USBDeviceDescriptor.h rename to radio/src/targets/sky9x/usb/common/core/USBDeviceDescriptor.h diff --git a/transmitter/src/targets/sky9x/usb/common/core/USBDeviceQualifierDescriptor.h b/radio/src/targets/sky9x/usb/common/core/USBDeviceQualifierDescriptor.h similarity index 100% rename from transmitter/src/targets/sky9x/usb/common/core/USBDeviceQualifierDescriptor.h rename to radio/src/targets/sky9x/usb/common/core/USBDeviceQualifierDescriptor.h diff --git a/transmitter/src/targets/sky9x/usb/common/core/USBEndpointDescriptor.c b/radio/src/targets/sky9x/usb/common/core/USBEndpointDescriptor.c similarity index 100% rename from transmitter/src/targets/sky9x/usb/common/core/USBEndpointDescriptor.c rename to radio/src/targets/sky9x/usb/common/core/USBEndpointDescriptor.c diff --git a/transmitter/src/targets/sky9x/usb/common/core/USBEndpointDescriptor.h b/radio/src/targets/sky9x/usb/common/core/USBEndpointDescriptor.h similarity index 100% rename from transmitter/src/targets/sky9x/usb/common/core/USBEndpointDescriptor.h rename to radio/src/targets/sky9x/usb/common/core/USBEndpointDescriptor.h diff --git a/transmitter/src/targets/sky9x/usb/common/core/USBFeatureRequest.c b/radio/src/targets/sky9x/usb/common/core/USBFeatureRequest.c similarity index 100% rename from transmitter/src/targets/sky9x/usb/common/core/USBFeatureRequest.c rename to radio/src/targets/sky9x/usb/common/core/USBFeatureRequest.c diff --git a/transmitter/src/targets/sky9x/usb/common/core/USBFeatureRequest.h b/radio/src/targets/sky9x/usb/common/core/USBFeatureRequest.h similarity index 100% rename from transmitter/src/targets/sky9x/usb/common/core/USBFeatureRequest.h rename to radio/src/targets/sky9x/usb/common/core/USBFeatureRequest.h diff --git a/transmitter/src/targets/sky9x/usb/common/core/USBGenericDescriptor.c b/radio/src/targets/sky9x/usb/common/core/USBGenericDescriptor.c similarity index 100% rename from transmitter/src/targets/sky9x/usb/common/core/USBGenericDescriptor.c rename to radio/src/targets/sky9x/usb/common/core/USBGenericDescriptor.c diff --git a/transmitter/src/targets/sky9x/usb/common/core/USBGenericDescriptor.h b/radio/src/targets/sky9x/usb/common/core/USBGenericDescriptor.h similarity index 100% rename from transmitter/src/targets/sky9x/usb/common/core/USBGenericDescriptor.h rename to radio/src/targets/sky9x/usb/common/core/USBGenericDescriptor.h diff --git a/transmitter/src/targets/sky9x/usb/common/core/USBGenericRequest.c b/radio/src/targets/sky9x/usb/common/core/USBGenericRequest.c similarity index 100% rename from transmitter/src/targets/sky9x/usb/common/core/USBGenericRequest.c rename to radio/src/targets/sky9x/usb/common/core/USBGenericRequest.c diff --git a/transmitter/src/targets/sky9x/usb/common/core/USBGenericRequest.h b/radio/src/targets/sky9x/usb/common/core/USBGenericRequest.h similarity index 100% rename from transmitter/src/targets/sky9x/usb/common/core/USBGenericRequest.h rename to radio/src/targets/sky9x/usb/common/core/USBGenericRequest.h diff --git a/transmitter/src/targets/sky9x/usb/common/core/USBGetDescriptorRequest.c b/radio/src/targets/sky9x/usb/common/core/USBGetDescriptorRequest.c similarity index 100% rename from transmitter/src/targets/sky9x/usb/common/core/USBGetDescriptorRequest.c rename to radio/src/targets/sky9x/usb/common/core/USBGetDescriptorRequest.c diff --git a/transmitter/src/targets/sky9x/usb/common/core/USBGetDescriptorRequest.h b/radio/src/targets/sky9x/usb/common/core/USBGetDescriptorRequest.h similarity index 100% rename from transmitter/src/targets/sky9x/usb/common/core/USBGetDescriptorRequest.h rename to radio/src/targets/sky9x/usb/common/core/USBGetDescriptorRequest.h diff --git a/transmitter/src/targets/sky9x/usb/common/core/USBInterfaceAssociationDescriptor.h b/radio/src/targets/sky9x/usb/common/core/USBInterfaceAssociationDescriptor.h similarity index 100% rename from transmitter/src/targets/sky9x/usb/common/core/USBInterfaceAssociationDescriptor.h rename to radio/src/targets/sky9x/usb/common/core/USBInterfaceAssociationDescriptor.h diff --git a/transmitter/src/targets/sky9x/usb/common/core/USBInterfaceDescriptor.h b/radio/src/targets/sky9x/usb/common/core/USBInterfaceDescriptor.h similarity index 100% rename from transmitter/src/targets/sky9x/usb/common/core/USBInterfaceDescriptor.h rename to radio/src/targets/sky9x/usb/common/core/USBInterfaceDescriptor.h diff --git a/transmitter/src/targets/sky9x/usb/common/core/USBInterfaceRequest.c b/radio/src/targets/sky9x/usb/common/core/USBInterfaceRequest.c similarity index 100% rename from transmitter/src/targets/sky9x/usb/common/core/USBInterfaceRequest.c rename to radio/src/targets/sky9x/usb/common/core/USBInterfaceRequest.c diff --git a/transmitter/src/targets/sky9x/usb/common/core/USBInterfaceRequest.h b/radio/src/targets/sky9x/usb/common/core/USBInterfaceRequest.h similarity index 100% rename from transmitter/src/targets/sky9x/usb/common/core/USBInterfaceRequest.h rename to radio/src/targets/sky9x/usb/common/core/USBInterfaceRequest.h diff --git a/transmitter/src/targets/sky9x/usb/common/core/USBIrqHandler.c b/radio/src/targets/sky9x/usb/common/core/USBIrqHandler.c similarity index 100% rename from transmitter/src/targets/sky9x/usb/common/core/USBIrqHandler.c rename to radio/src/targets/sky9x/usb/common/core/USBIrqHandler.c diff --git a/transmitter/src/targets/sky9x/usb/common/core/USBIrqHandler.h b/radio/src/targets/sky9x/usb/common/core/USBIrqHandler.h similarity index 100% rename from transmitter/src/targets/sky9x/usb/common/core/USBIrqHandler.h rename to radio/src/targets/sky9x/usb/common/core/USBIrqHandler.h diff --git a/transmitter/src/targets/sky9x/usb/common/core/USBSetAddressRequest.c b/radio/src/targets/sky9x/usb/common/core/USBSetAddressRequest.c similarity index 100% rename from transmitter/src/targets/sky9x/usb/common/core/USBSetAddressRequest.c rename to radio/src/targets/sky9x/usb/common/core/USBSetAddressRequest.c diff --git a/transmitter/src/targets/sky9x/usb/common/core/USBSetAddressRequest.h b/radio/src/targets/sky9x/usb/common/core/USBSetAddressRequest.h similarity index 100% rename from transmitter/src/targets/sky9x/usb/common/core/USBSetAddressRequest.h rename to radio/src/targets/sky9x/usb/common/core/USBSetAddressRequest.h diff --git a/transmitter/src/targets/sky9x/usb/common/core/USBSetConfigurationRequest.c b/radio/src/targets/sky9x/usb/common/core/USBSetConfigurationRequest.c similarity index 100% rename from transmitter/src/targets/sky9x/usb/common/core/USBSetConfigurationRequest.c rename to radio/src/targets/sky9x/usb/common/core/USBSetConfigurationRequest.c diff --git a/transmitter/src/targets/sky9x/usb/common/core/USBSetConfigurationRequest.h b/radio/src/targets/sky9x/usb/common/core/USBSetConfigurationRequest.h similarity index 100% rename from transmitter/src/targets/sky9x/usb/common/core/USBSetConfigurationRequest.h rename to radio/src/targets/sky9x/usb/common/core/USBSetConfigurationRequest.h diff --git a/transmitter/src/targets/sky9x/usb/common/core/USBStringDescriptor.h b/radio/src/targets/sky9x/usb/common/core/USBStringDescriptor.h similarity index 100% rename from transmitter/src/targets/sky9x/usb/common/core/USBStringDescriptor.h rename to radio/src/targets/sky9x/usb/common/core/USBStringDescriptor.h diff --git a/transmitter/src/targets/sky9x/usb/common/massstorage/MSDeviceDescriptor.h b/radio/src/targets/sky9x/usb/common/massstorage/MSDeviceDescriptor.h similarity index 100% rename from transmitter/src/targets/sky9x/usb/common/massstorage/MSDeviceDescriptor.h rename to radio/src/targets/sky9x/usb/common/massstorage/MSDeviceDescriptor.h diff --git a/transmitter/src/targets/sky9x/usb/common/massstorage/MSInterfaceDescriptor.h b/radio/src/targets/sky9x/usb/common/massstorage/MSInterfaceDescriptor.h similarity index 100% rename from transmitter/src/targets/sky9x/usb/common/massstorage/MSInterfaceDescriptor.h rename to radio/src/targets/sky9x/usb/common/massstorage/MSInterfaceDescriptor.h diff --git a/transmitter/src/targets/sky9x/usb/device/core/USBD.h b/radio/src/targets/sky9x/usb/device/core/USBD.h similarity index 100% rename from transmitter/src/targets/sky9x/usb/device/core/USBD.h rename to radio/src/targets/sky9x/usb/device/core/USBD.h diff --git a/transmitter/src/targets/sky9x/usb/device/core/USBDDriver.c b/radio/src/targets/sky9x/usb/device/core/USBDDriver.c similarity index 100% rename from transmitter/src/targets/sky9x/usb/device/core/USBDDriver.c rename to radio/src/targets/sky9x/usb/device/core/USBDDriver.c diff --git a/transmitter/src/targets/sky9x/usb/device/core/USBDDriver.h b/radio/src/targets/sky9x/usb/device/core/USBDDriver.h similarity index 100% rename from transmitter/src/targets/sky9x/usb/device/core/USBDDriver.h rename to radio/src/targets/sky9x/usb/device/core/USBDDriver.h diff --git a/transmitter/src/targets/sky9x/usb/device/core/USBDDriverDescriptors.h b/radio/src/targets/sky9x/usb/device/core/USBDDriverDescriptors.h similarity index 100% rename from transmitter/src/targets/sky9x/usb/device/core/USBDDriverDescriptors.h rename to radio/src/targets/sky9x/usb/device/core/USBDDriverDescriptors.h diff --git a/transmitter/src/targets/sky9x/usb/device/core/USBD_UDP.c b/radio/src/targets/sky9x/usb/device/core/USBD_UDP.c similarity index 100% rename from transmitter/src/targets/sky9x/usb/device/core/USBD_UDP.c rename to radio/src/targets/sky9x/usb/device/core/USBD_UDP.c diff --git a/transmitter/src/targets/sky9x/usb/device/massstorage/MSD.h b/radio/src/targets/sky9x/usb/device/massstorage/MSD.h similarity index 100% rename from transmitter/src/targets/sky9x/usb/device/massstorage/MSD.h rename to radio/src/targets/sky9x/usb/device/massstorage/MSD.h diff --git a/transmitter/src/targets/sky9x/usb/device/massstorage/MSDDStateMachine.c b/radio/src/targets/sky9x/usb/device/massstorage/MSDDStateMachine.c similarity index 100% rename from transmitter/src/targets/sky9x/usb/device/massstorage/MSDDStateMachine.c rename to radio/src/targets/sky9x/usb/device/massstorage/MSDDStateMachine.c diff --git a/transmitter/src/targets/sky9x/usb/device/massstorage/MSDDStateMachine.h b/radio/src/targets/sky9x/usb/device/massstorage/MSDDStateMachine.h similarity index 100% rename from transmitter/src/targets/sky9x/usb/device/massstorage/MSDDStateMachine.h rename to radio/src/targets/sky9x/usb/device/massstorage/MSDDStateMachine.h diff --git a/transmitter/src/targets/sky9x/usb/device/massstorage/MSDDriver.c b/radio/src/targets/sky9x/usb/device/massstorage/MSDDriver.c similarity index 100% rename from transmitter/src/targets/sky9x/usb/device/massstorage/MSDDriver.c rename to radio/src/targets/sky9x/usb/device/massstorage/MSDDriver.c diff --git a/transmitter/src/targets/sky9x/usb/device/massstorage/MSDDriver.h b/radio/src/targets/sky9x/usb/device/massstorage/MSDDriver.h similarity index 100% rename from transmitter/src/targets/sky9x/usb/device/massstorage/MSDDriver.h rename to radio/src/targets/sky9x/usb/device/massstorage/MSDDriver.h diff --git a/transmitter/src/targets/sky9x/usb/device/massstorage/MSDDriverDescriptors.c b/radio/src/targets/sky9x/usb/device/massstorage/MSDDriverDescriptors.c similarity index 100% rename from transmitter/src/targets/sky9x/usb/device/massstorage/MSDDriverDescriptors.c rename to radio/src/targets/sky9x/usb/device/massstorage/MSDDriverDescriptors.c diff --git a/transmitter/src/targets/sky9x/usb/device/massstorage/MSDDriverDescriptors.h b/radio/src/targets/sky9x/usb/device/massstorage/MSDDriverDescriptors.h similarity index 100% rename from transmitter/src/targets/sky9x/usb/device/massstorage/MSDDriverDescriptors.h rename to radio/src/targets/sky9x/usb/device/massstorage/MSDDriverDescriptors.h diff --git a/transmitter/src/targets/sky9x/usb/device/massstorage/MSDIOFifo.h b/radio/src/targets/sky9x/usb/device/massstorage/MSDIOFifo.h similarity index 100% rename from transmitter/src/targets/sky9x/usb/device/massstorage/MSDIOFifo.h rename to radio/src/targets/sky9x/usb/device/massstorage/MSDIOFifo.h diff --git a/transmitter/src/targets/sky9x/usb/device/massstorage/MSDLun.c b/radio/src/targets/sky9x/usb/device/massstorage/MSDLun.c similarity index 100% rename from transmitter/src/targets/sky9x/usb/device/massstorage/MSDLun.c rename to radio/src/targets/sky9x/usb/device/massstorage/MSDLun.c diff --git a/transmitter/src/targets/sky9x/usb/device/massstorage/MSDLun.h b/radio/src/targets/sky9x/usb/device/massstorage/MSDLun.h similarity index 100% rename from transmitter/src/targets/sky9x/usb/device/massstorage/MSDLun.h rename to radio/src/targets/sky9x/usb/device/massstorage/MSDLun.h diff --git a/transmitter/src/targets/sky9x/usb/device/massstorage/SBC.h b/radio/src/targets/sky9x/usb/device/massstorage/SBC.h similarity index 100% rename from transmitter/src/targets/sky9x/usb/device/massstorage/SBC.h rename to radio/src/targets/sky9x/usb/device/massstorage/SBC.h diff --git a/transmitter/src/targets/sky9x/usb/device/massstorage/SBCMethods.c b/radio/src/targets/sky9x/usb/device/massstorage/SBCMethods.c similarity index 100% rename from transmitter/src/targets/sky9x/usb/device/massstorage/SBCMethods.c rename to radio/src/targets/sky9x/usb/device/massstorage/SBCMethods.c diff --git a/transmitter/src/targets/sky9x/usb/device/massstorage/SBCMethods.h b/radio/src/targets/sky9x/usb/device/massstorage/SBCMethods.h similarity index 100% rename from transmitter/src/targets/sky9x/usb/device/massstorage/SBCMethods.h rename to radio/src/targets/sky9x/usb/device/massstorage/SBCMethods.h diff --git a/transmitter/src/targets/sky9x/vectors_sam3s.c b/radio/src/targets/sky9x/vectors_sam3s.c similarity index 100% rename from transmitter/src/targets/sky9x/vectors_sam3s.c rename to radio/src/targets/sky9x/vectors_sam3s.c diff --git a/transmitter/src/targets/stock/board_stock.cpp b/radio/src/targets/stock/board_stock.cpp similarity index 100% rename from transmitter/src/targets/stock/board_stock.cpp rename to radio/src/targets/stock/board_stock.cpp diff --git a/transmitter/src/targets/stock/board_stock.h b/radio/src/targets/stock/board_stock.h similarity index 100% rename from transmitter/src/targets/stock/board_stock.h rename to radio/src/targets/stock/board_stock.h diff --git a/transmitter/src/targets/stock/lcd_driver.cpp b/radio/src/targets/stock/lcd_driver.cpp similarity index 100% rename from transmitter/src/targets/stock/lcd_driver.cpp rename to radio/src/targets/stock/lcd_driver.cpp diff --git a/transmitter/src/targets/stock/voice.cpp b/radio/src/targets/stock/voice.cpp similarity index 100% rename from transmitter/src/targets/stock/voice.cpp rename to radio/src/targets/stock/voice.cpp diff --git a/transmitter/src/targets/stock/voice.h b/radio/src/targets/stock/voice.h similarity index 100% rename from transmitter/src/targets/stock/voice.h rename to radio/src/targets/stock/voice.h diff --git a/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Device/ST/STM32F2xx/Include/stm32f2xx.h b/radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Device/ST/STM32F2xx/Include/stm32f2xx.h similarity index 100% rename from transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Device/ST/STM32F2xx/Include/stm32f2xx.h rename to radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Device/ST/STM32F2xx/Include/stm32f2xx.h diff --git a/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Device/ST/STM32F2xx/Include/system_stm32f2xx.h b/radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Device/ST/STM32F2xx/Include/system_stm32f2xx.h similarity index 100% rename from transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Device/ST/STM32F2xx/Include/system_stm32f2xx.h rename to radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Device/ST/STM32F2xx/Include/system_stm32f2xx.h diff --git a/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Device/ST/STM32F2xx/Source/Templates/gcc_ride7/startup_stm32f2xx.s b/radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Device/ST/STM32F2xx/Source/Templates/gcc_ride7/startup_stm32f2xx.s similarity index 100% rename from transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Device/ST/STM32F2xx/Source/Templates/gcc_ride7/startup_stm32f2xx.s rename to radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Device/ST/STM32F2xx/Source/Templates/gcc_ride7/startup_stm32f2xx.s diff --git a/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Device/ST/STM32F2xx/Source/Templates/system_stm32f2xx.c b/radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Device/ST/STM32F2xx/Source/Templates/system_stm32f2xx.c similarity index 100% rename from transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Device/ST/STM32F2xx/Source/Templates/system_stm32f2xx.c rename to radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Device/ST/STM32F2xx/Source/Templates/system_stm32f2xx.c diff --git a/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Include/arm_common_tables.h b/radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Include/arm_common_tables.h similarity index 100% rename from transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Include/arm_common_tables.h rename to radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Include/arm_common_tables.h diff --git a/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Include/arm_math.h b/radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Include/arm_math.h similarity index 100% rename from transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Include/arm_math.h rename to radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Include/arm_math.h diff --git a/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Include/core_cm0.h b/radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Include/core_cm0.h similarity index 100% rename from transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Include/core_cm0.h rename to radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Include/core_cm0.h diff --git a/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Include/core_cm3.h b/radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Include/core_cm3.h similarity index 100% rename from transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Include/core_cm3.h rename to radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Include/core_cm3.h diff --git a/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Include/core_cm4.h b/radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Include/core_cm4.h similarity index 100% rename from transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Include/core_cm4.h rename to radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Include/core_cm4.h diff --git a/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Include/core_cm4_simd.h b/radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Include/core_cm4_simd.h similarity index 100% rename from transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Include/core_cm4_simd.h rename to radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Include/core_cm4_simd.h diff --git a/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Include/core_cmFunc.h b/radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Include/core_cmFunc.h similarity index 100% rename from transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Include/core_cmFunc.h rename to radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Include/core_cmFunc.h diff --git a/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Include/core_cmInstr.h b/radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Include/core_cmInstr.h similarity index 100% rename from transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Include/core_cmInstr.h rename to radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Include/core_cmInstr.h diff --git a/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/misc.h b/radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/misc.h similarity index 100% rename from transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/misc.h rename to radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/misc.h diff --git a/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_adc.h b/radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_adc.h similarity index 100% rename from transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_adc.h rename to radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_adc.h diff --git a/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_can.h b/radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_can.h similarity index 100% rename from transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_can.h rename to radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_can.h diff --git a/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_crc.h b/radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_crc.h similarity index 100% rename from transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_crc.h rename to radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_crc.h diff --git a/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_cryp.h b/radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_cryp.h similarity index 100% rename from transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_cryp.h rename to radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_cryp.h diff --git a/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_dac.h b/radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_dac.h similarity index 100% rename from transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_dac.h rename to radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_dac.h diff --git a/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_dbgmcu.h b/radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_dbgmcu.h similarity index 100% rename from transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_dbgmcu.h rename to radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_dbgmcu.h diff --git a/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_dcmi.h b/radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_dcmi.h similarity index 100% rename from transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_dcmi.h rename to radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_dcmi.h diff --git a/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_dma.h b/radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_dma.h similarity index 100% rename from transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_dma.h rename to radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_dma.h diff --git a/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_exti.h b/radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_exti.h similarity index 100% rename from transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_exti.h rename to radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_exti.h diff --git a/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_flash.h b/radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_flash.h similarity index 100% rename from transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_flash.h rename to radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_flash.h diff --git a/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_fsmc.h b/radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_fsmc.h similarity index 100% rename from transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_fsmc.h rename to radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_fsmc.h diff --git a/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_gpio.h b/radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_gpio.h similarity index 100% rename from transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_gpio.h rename to radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_gpio.h diff --git a/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_hash.h b/radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_hash.h similarity index 100% rename from transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_hash.h rename to radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_hash.h diff --git a/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_i2c.h b/radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_i2c.h similarity index 100% rename from transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_i2c.h rename to radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_i2c.h diff --git a/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_iwdg.h b/radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_iwdg.h similarity index 100% rename from transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_iwdg.h rename to radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_iwdg.h diff --git a/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_pwr.h b/radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_pwr.h similarity index 100% rename from transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_pwr.h rename to radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_pwr.h diff --git a/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_rcc.h b/radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_rcc.h similarity index 100% rename from transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_rcc.h rename to radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_rcc.h diff --git a/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_rng.h b/radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_rng.h similarity index 100% rename from transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_rng.h rename to radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_rng.h diff --git a/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_rtc.h b/radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_rtc.h similarity index 100% rename from transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_rtc.h rename to radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_rtc.h diff --git a/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_sdio.h b/radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_sdio.h similarity index 100% rename from transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_sdio.h rename to radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_sdio.h diff --git a/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_spi.h b/radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_spi.h similarity index 100% rename from transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_spi.h rename to radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_spi.h diff --git a/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_syscfg.h b/radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_syscfg.h similarity index 100% rename from transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_syscfg.h rename to radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_syscfg.h diff --git a/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_tim.h b/radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_tim.h similarity index 100% rename from transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_tim.h rename to radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_tim.h diff --git a/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_usart.h b/radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_usart.h similarity index 100% rename from transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_usart.h rename to radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_usart.h diff --git a/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_wwdg.h b/radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_wwdg.h similarity index 100% rename from transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_wwdg.h rename to radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_wwdg.h diff --git a/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/misc.c b/radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/misc.c similarity index 100% rename from transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/misc.c rename to radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/misc.c diff --git a/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_adc.c b/radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_adc.c similarity index 100% rename from transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_adc.c rename to radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_adc.c diff --git a/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_can.c b/radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_can.c similarity index 100% rename from transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_can.c rename to radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_can.c diff --git a/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_crc.c b/radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_crc.c similarity index 100% rename from transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_crc.c rename to radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_crc.c diff --git a/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_cryp.c b/radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_cryp.c similarity index 100% rename from transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_cryp.c rename to radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_cryp.c diff --git a/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_cryp_aes.c b/radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_cryp_aes.c similarity index 100% rename from transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_cryp_aes.c rename to radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_cryp_aes.c diff --git a/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_cryp_des.c b/radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_cryp_des.c similarity index 100% rename from transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_cryp_des.c rename to radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_cryp_des.c diff --git a/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_cryp_tdes.c b/radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_cryp_tdes.c similarity index 100% rename from transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_cryp_tdes.c rename to radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_cryp_tdes.c diff --git a/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_dac.c b/radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_dac.c similarity index 100% rename from transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_dac.c rename to radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_dac.c diff --git a/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_dbgmcu.c b/radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_dbgmcu.c similarity index 100% rename from transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_dbgmcu.c rename to radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_dbgmcu.c diff --git a/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_dcmi.c b/radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_dcmi.c similarity index 100% rename from transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_dcmi.c rename to radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_dcmi.c diff --git a/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_dma.c b/radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_dma.c similarity index 100% rename from transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_dma.c rename to radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_dma.c diff --git a/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_exti.c b/radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_exti.c similarity index 100% rename from transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_exti.c rename to radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_exti.c diff --git a/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_flash.c b/radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_flash.c similarity index 100% rename from transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_flash.c rename to radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_flash.c diff --git a/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_fsmc.c b/radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_fsmc.c similarity index 100% rename from transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_fsmc.c rename to radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_fsmc.c diff --git a/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_gpio.c b/radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_gpio.c similarity index 100% rename from transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_gpio.c rename to radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_gpio.c diff --git a/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_hash.c b/radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_hash.c similarity index 100% rename from transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_hash.c rename to radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_hash.c diff --git a/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_hash_md5.c b/radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_hash_md5.c similarity index 100% rename from transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_hash_md5.c rename to radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_hash_md5.c diff --git a/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_hash_sha1.c b/radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_hash_sha1.c similarity index 100% rename from transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_hash_sha1.c rename to radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_hash_sha1.c diff --git a/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_i2c.c b/radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_i2c.c similarity index 100% rename from transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_i2c.c rename to radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_i2c.c diff --git a/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_iwdg.c b/radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_iwdg.c similarity index 100% rename from transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_iwdg.c rename to radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_iwdg.c diff --git a/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_pwr.c b/radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_pwr.c similarity index 100% rename from transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_pwr.c rename to radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_pwr.c diff --git a/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_rcc.c b/radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_rcc.c similarity index 100% rename from transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_rcc.c rename to radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_rcc.c diff --git a/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_rng.c b/radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_rng.c similarity index 100% rename from transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_rng.c rename to radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_rng.c diff --git a/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_rtc.c b/radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_rtc.c similarity index 100% rename from transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_rtc.c rename to radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_rtc.c diff --git a/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_sdio.c b/radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_sdio.c similarity index 100% rename from transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_sdio.c rename to radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_sdio.c diff --git a/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_spi.c b/radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_spi.c similarity index 100% rename from transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_spi.c rename to radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_spi.c diff --git a/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_syscfg.c b/radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_syscfg.c similarity index 100% rename from transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_syscfg.c rename to radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_syscfg.c diff --git a/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_tim.c b/radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_tim.c similarity index 100% rename from transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_tim.c rename to radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_tim.c diff --git a/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_usart.c b/radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_usart.c similarity index 100% rename from transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_usart.c rename to radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_usart.c diff --git a/transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_wwdg.c b/radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_wwdg.c similarity index 100% rename from transmitter/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_wwdg.c rename to radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/src/stm32f2xx_wwdg.c diff --git a/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/audio/inc/usbd_audio_core.h b/radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/audio/inc/usbd_audio_core.h similarity index 100% rename from transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/audio/inc/usbd_audio_core.h rename to radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/audio/inc/usbd_audio_core.h diff --git a/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/audio/inc/usbd_audio_out_if.h b/radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/audio/inc/usbd_audio_out_if.h similarity index 100% rename from transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/audio/inc/usbd_audio_out_if.h rename to radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/audio/inc/usbd_audio_out_if.h diff --git a/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/audio/src/usbd_audio_core.c b/radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/audio/src/usbd_audio_core.c similarity index 100% rename from transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/audio/src/usbd_audio_core.c rename to radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/audio/src/usbd_audio_core.c diff --git a/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/audio/src/usbd_audio_out_if.c b/radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/audio/src/usbd_audio_out_if.c similarity index 100% rename from transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/audio/src/usbd_audio_out_if.c rename to radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/audio/src/usbd_audio_out_if.c diff --git a/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/cdc/inc/usbd_cdc_core.h b/radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/cdc/inc/usbd_cdc_core.h similarity index 100% rename from transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/cdc/inc/usbd_cdc_core.h rename to radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/cdc/inc/usbd_cdc_core.h diff --git a/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/cdc/inc/usbd_cdc_if_template.h b/radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/cdc/inc/usbd_cdc_if_template.h similarity index 100% rename from transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/cdc/inc/usbd_cdc_if_template.h rename to radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/cdc/inc/usbd_cdc_if_template.h diff --git a/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/cdc/src/usbd_cdc_core.c b/radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/cdc/src/usbd_cdc_core.c similarity index 100% rename from transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/cdc/src/usbd_cdc_core.c rename to radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/cdc/src/usbd_cdc_core.c diff --git a/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/cdc/src/usbd_cdc_if_template.c b/radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/cdc/src/usbd_cdc_if_template.c similarity index 100% rename from transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/cdc/src/usbd_cdc_if_template.c rename to radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/cdc/src/usbd_cdc_if_template.c diff --git a/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_dfu_core.h b/radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_dfu_core.h similarity index 100% rename from transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_dfu_core.h rename to radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_dfu_core.h diff --git a/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_dfu_mal.h b/radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_dfu_mal.h similarity index 100% rename from transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_dfu_mal.h rename to radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_dfu_mal.h diff --git a/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_flash_if.h b/radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_flash_if.h similarity index 100% rename from transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_flash_if.h rename to radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_flash_if.h diff --git a/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_mem_if_template.h b/radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_mem_if_template.h similarity index 100% rename from transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_mem_if_template.h rename to radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_mem_if_template.h diff --git a/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_otp_if.h b/radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_otp_if.h similarity index 100% rename from transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_otp_if.h rename to radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/inc/usbd_otp_if.h diff --git a/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_dfu_core.c b/radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_dfu_core.c similarity index 100% rename from transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_dfu_core.c rename to radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_dfu_core.c diff --git a/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_dfu_mal.c b/radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_dfu_mal.c similarity index 100% rename from transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_dfu_mal.c rename to radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_dfu_mal.c diff --git a/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_flash_if.c b/radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_flash_if.c similarity index 100% rename from transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_flash_if.c rename to radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_flash_if.c diff --git a/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_mem_if_template.c b/radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_mem_if_template.c similarity index 100% rename from transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_mem_if_template.c rename to radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_mem_if_template.c diff --git a/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_otp_if.c b/radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_otp_if.c similarity index 100% rename from transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_otp_if.c rename to radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/dfu/src/usbd_otp_if.c diff --git a/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/hid/inc/usbd_hid_core.h b/radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/hid/inc/usbd_hid_core.h similarity index 100% rename from transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/hid/inc/usbd_hid_core.h rename to radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/hid/inc/usbd_hid_core.h diff --git a/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/hid/src/usbd_hid_core.c b/radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/hid/src/usbd_hid_core.c similarity index 100% rename from transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/hid/src/usbd_hid_core.c rename to radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/hid/src/usbd_hid_core.c diff --git a/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_bot.h b/radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_bot.h similarity index 100% rename from transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_bot.h rename to radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_bot.h diff --git a/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_core.h b/radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_core.h similarity index 100% rename from transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_core.h rename to radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_core.h diff --git a/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_data.h b/radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_data.h similarity index 100% rename from transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_data.h rename to radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_data.h diff --git a/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_mem.h b/radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_mem.h similarity index 100% rename from transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_mem.h rename to radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_mem.h diff --git a/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_scsi.h b/radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_scsi.h similarity index 100% rename from transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_scsi.h rename to radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/inc/usbd_msc_scsi.h diff --git a/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_bot.c b/radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_bot.c similarity index 100% rename from transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_bot.c rename to radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_bot.c diff --git a/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_core.c b/radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_core.c similarity index 100% rename from transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_core.c rename to radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_core.c diff --git a/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_data.c b/radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_data.c similarity index 100% rename from transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_data.c rename to radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_data.c diff --git a/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_scsi.c b/radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_scsi.c similarity index 100% rename from transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_scsi.c rename to radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Class/msc/src/usbd_msc_scsi.c diff --git a/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_conf_template.h b/radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_conf_template.h similarity index 100% rename from transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_conf_template.h rename to radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_conf_template.h diff --git a/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_core.h b/radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_core.h similarity index 100% rename from transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_core.h rename to radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_core.h diff --git a/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_def.h b/radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_def.h similarity index 100% rename from transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_def.h rename to radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_def.h diff --git a/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_ioreq.h b/radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_ioreq.h similarity index 100% rename from transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_ioreq.h rename to radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_ioreq.h diff --git a/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_req.h b/radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_req.h similarity index 100% rename from transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_req.h rename to radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_req.h diff --git a/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_usr.h b/radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_usr.h similarity index 100% rename from transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_usr.h rename to radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/inc/usbd_usr.h diff --git a/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/src/usbd_core.c b/radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/src/usbd_core.c similarity index 100% rename from transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/src/usbd_core.c rename to radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/src/usbd_core.c diff --git a/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/src/usbd_ioreq.c b/radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/src/usbd_ioreq.c similarity index 100% rename from transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/src/usbd_ioreq.c rename to radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/src/usbd_ioreq.c diff --git a/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/src/usbd_req.c b/radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/src/usbd_req.c similarity index 100% rename from transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/src/usbd_req.c rename to radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Core/src/usbd_req.c diff --git a/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Release_Notes.html b/radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Release_Notes.html similarity index 100% rename from transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Release_Notes.html rename to radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_Device_Library/Release_Notes.html diff --git a/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/Release_Notes.html b/radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/Release_Notes.html similarity index 100% rename from transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/Release_Notes.html rename to radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/Release_Notes.html diff --git a/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_bsp.h b/radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_bsp.h similarity index 100% rename from transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_bsp.h rename to radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_bsp.h diff --git a/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_conf_template.h b/radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_conf_template.h similarity index 100% rename from transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_conf_template.h rename to radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_conf_template.h diff --git a/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_core.h b/radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_core.h similarity index 100% rename from transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_core.h rename to radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_core.h diff --git a/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_dcd.h b/radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_dcd.h similarity index 100% rename from transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_dcd.h rename to radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_dcd.h diff --git a/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_dcd_int.h b/radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_dcd_int.h similarity index 100% rename from transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_dcd_int.h rename to radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_dcd_int.h diff --git a/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_defines.h b/radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_defines.h similarity index 100% rename from transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_defines.h rename to radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_defines.h diff --git a/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_hcd.h b/radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_hcd.h similarity index 100% rename from transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_hcd.h rename to radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_hcd.h diff --git a/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_hcd_int.h b/radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_hcd_int.h similarity index 100% rename from transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_hcd_int.h rename to radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_hcd_int.h diff --git a/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_otg.h b/radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_otg.h similarity index 100% rename from transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_otg.h rename to radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_otg.h diff --git a/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_regs.h b/radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_regs.h similarity index 100% rename from transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_regs.h rename to radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/inc/usb_regs.h diff --git a/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/src/usb_core.c b/radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/src/usb_core.c similarity index 100% rename from transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/src/usb_core.c rename to radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/src/usb_core.c diff --git a/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/src/usb_dcd.c b/radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/src/usb_dcd.c similarity index 100% rename from transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/src/usb_dcd.c rename to radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/src/usb_dcd.c diff --git a/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/src/usb_dcd_int.c b/radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/src/usb_dcd_int.c similarity index 100% rename from transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/src/usb_dcd_int.c rename to radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/src/usb_dcd_int.c diff --git a/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/src/usb_hcd.c b/radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/src/usb_hcd.c similarity index 100% rename from transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/src/usb_hcd.c rename to radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/src/usb_hcd.c diff --git a/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/src/usb_hcd_int.c b/radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/src/usb_hcd_int.c similarity index 100% rename from transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/src/usb_hcd_int.c rename to radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/src/usb_hcd_int.c diff --git a/transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/src/usb_otg.c b/radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/src/usb_otg.c similarity index 100% rename from transmitter/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/src/usb_otg.c rename to radio/src/targets/taranis/STM32_USB-Host-Device_Lib_V2.1.0/Libraries/STM32_USB_OTG_Driver/src/usb_otg.c diff --git a/transmitter/src/targets/taranis/adc_driver.cpp b/radio/src/targets/taranis/adc_driver.cpp similarity index 100% rename from transmitter/src/targets/taranis/adc_driver.cpp rename to radio/src/targets/taranis/adc_driver.cpp diff --git a/transmitter/src/targets/taranis/aspi.cpp b/radio/src/targets/taranis/aspi.cpp similarity index 100% rename from transmitter/src/targets/taranis/aspi.cpp rename to radio/src/targets/taranis/aspi.cpp diff --git a/transmitter/src/targets/taranis/aspi.h b/radio/src/targets/taranis/aspi.h similarity index 100% rename from transmitter/src/targets/taranis/aspi.h rename to radio/src/targets/taranis/aspi.h diff --git a/transmitter/src/targets/taranis/audio_driver.cpp b/radio/src/targets/taranis/audio_driver.cpp similarity index 100% rename from transmitter/src/targets/taranis/audio_driver.cpp rename to radio/src/targets/taranis/audio_driver.cpp diff --git a/transmitter/src/targets/taranis/audio_driver.h b/radio/src/targets/taranis/audio_driver.h similarity index 100% rename from transmitter/src/targets/taranis/audio_driver.h rename to radio/src/targets/taranis/audio_driver.h diff --git a/transmitter/src/targets/taranis/board_taranis.cpp b/radio/src/targets/taranis/board_taranis.cpp similarity index 100% rename from transmitter/src/targets/taranis/board_taranis.cpp rename to radio/src/targets/taranis/board_taranis.cpp diff --git a/transmitter/src/targets/taranis/board_taranis.h b/radio/src/targets/taranis/board_taranis.h similarity index 100% rename from transmitter/src/targets/taranis/board_taranis.h rename to radio/src/targets/taranis/board_taranis.h diff --git a/transmitter/src/targets/taranis/delays.cpp b/radio/src/targets/taranis/delays.cpp similarity index 100% rename from transmitter/src/targets/taranis/delays.cpp rename to radio/src/targets/taranis/delays.cpp diff --git a/transmitter/src/targets/taranis/diskio.cpp b/radio/src/targets/taranis/diskio.cpp similarity index 100% rename from transmitter/src/targets/taranis/diskio.cpp rename to radio/src/targets/taranis/diskio.cpp diff --git a/transmitter/src/targets/taranis/hal.h b/radio/src/targets/taranis/hal.h similarity index 100% rename from transmitter/src/targets/taranis/hal.h rename to radio/src/targets/taranis/hal.h diff --git a/transmitter/src/targets/taranis/i2c.c b/radio/src/targets/taranis/i2c.c similarity index 100% rename from transmitter/src/targets/taranis/i2c.c rename to radio/src/targets/taranis/i2c.c diff --git a/transmitter/src/targets/taranis/i2c.h b/radio/src/targets/taranis/i2c.h similarity index 100% rename from transmitter/src/targets/taranis/i2c.h rename to radio/src/targets/taranis/i2c.h diff --git a/transmitter/src/targets/taranis/keys_driver.cpp b/radio/src/targets/taranis/keys_driver.cpp similarity index 100% rename from transmitter/src/targets/taranis/keys_driver.cpp rename to radio/src/targets/taranis/keys_driver.cpp diff --git a/transmitter/src/targets/taranis/lcd_driver.cpp b/radio/src/targets/taranis/lcd_driver.cpp similarity index 100% rename from transmitter/src/targets/taranis/lcd_driver.cpp rename to radio/src/targets/taranis/lcd_driver.cpp diff --git a/transmitter/src/targets/taranis/pulses_driver.cpp b/radio/src/targets/taranis/pulses_driver.cpp similarity index 100% rename from transmitter/src/targets/taranis/pulses_driver.cpp rename to radio/src/targets/taranis/pulses_driver.cpp diff --git a/transmitter/src/targets/taranis/pwr_driver.cpp b/radio/src/targets/taranis/pwr_driver.cpp similarity index 100% rename from transmitter/src/targets/taranis/pwr_driver.cpp rename to radio/src/targets/taranis/pwr_driver.cpp diff --git a/transmitter/src/targets/taranis/rtc_driver.cpp b/radio/src/targets/taranis/rtc_driver.cpp similarity index 100% rename from transmitter/src/targets/taranis/rtc_driver.cpp rename to radio/src/targets/taranis/rtc_driver.cpp diff --git a/transmitter/src/targets/taranis/sport_driver.cpp b/radio/src/targets/taranis/sport_driver.cpp similarity index 100% rename from transmitter/src/targets/taranis/sport_driver.cpp rename to radio/src/targets/taranis/sport_driver.cpp diff --git a/transmitter/src/targets/taranis/stm32_flash.ld b/radio/src/targets/taranis/stm32_flash.ld similarity index 100% rename from transmitter/src/targets/taranis/stm32_flash.ld rename to radio/src/targets/taranis/stm32_flash.ld diff --git a/transmitter/src/targets/taranis/trainer_driver.cpp b/radio/src/targets/taranis/trainer_driver.cpp similarity index 100% rename from transmitter/src/targets/taranis/trainer_driver.cpp rename to radio/src/targets/taranis/trainer_driver.cpp diff --git a/transmitter/src/targets/taranis/uart_driver.cpp b/radio/src/targets/taranis/uart_driver.cpp similarity index 100% rename from transmitter/src/targets/taranis/uart_driver.cpp rename to radio/src/targets/taranis/uart_driver.cpp diff --git a/transmitter/src/targets/taranis/usb_bsp.c b/radio/src/targets/taranis/usb_bsp.c similarity index 100% rename from transmitter/src/targets/taranis/usb_bsp.c rename to radio/src/targets/taranis/usb_bsp.c diff --git a/transmitter/src/targets/taranis/usb_conf.h b/radio/src/targets/taranis/usb_conf.h similarity index 100% rename from transmitter/src/targets/taranis/usb_conf.h rename to radio/src/targets/taranis/usb_conf.h diff --git a/transmitter/src/targets/taranis/usbd_conf.h b/radio/src/targets/taranis/usbd_conf.h similarity index 100% rename from transmitter/src/targets/taranis/usbd_conf.h rename to radio/src/targets/taranis/usbd_conf.h diff --git a/transmitter/src/targets/taranis/usbd_desc.c b/radio/src/targets/taranis/usbd_desc.c similarity index 100% rename from transmitter/src/targets/taranis/usbd_desc.c rename to radio/src/targets/taranis/usbd_desc.c diff --git a/transmitter/src/targets/taranis/usbd_desc.h b/radio/src/targets/taranis/usbd_desc.h similarity index 100% rename from transmitter/src/targets/taranis/usbd_desc.h rename to radio/src/targets/taranis/usbd_desc.h diff --git a/transmitter/src/targets/taranis/usbd_storage_msd.cpp b/radio/src/targets/taranis/usbd_storage_msd.cpp similarity index 100% rename from transmitter/src/targets/taranis/usbd_storage_msd.cpp rename to radio/src/targets/taranis/usbd_storage_msd.cpp diff --git a/transmitter/src/targets/taranis/usbd_usr.cpp b/radio/src/targets/taranis/usbd_usr.cpp similarity index 100% rename from transmitter/src/targets/taranis/usbd_usr.cpp rename to radio/src/targets/taranis/usbd_usr.cpp diff --git a/transmitter/src/telemetry/ardupilot.cpp b/radio/src/telemetry/ardupilot.cpp similarity index 100% rename from transmitter/src/telemetry/ardupilot.cpp rename to radio/src/telemetry/ardupilot.cpp diff --git a/transmitter/src/telemetry/ardupilot.h b/radio/src/telemetry/ardupilot.h similarity index 100% rename from transmitter/src/telemetry/ardupilot.h rename to radio/src/telemetry/ardupilot.h diff --git a/transmitter/src/telemetry/frsky.cpp b/radio/src/telemetry/frsky.cpp similarity index 100% rename from transmitter/src/telemetry/frsky.cpp rename to radio/src/telemetry/frsky.cpp diff --git a/transmitter/src/telemetry/frsky.h b/radio/src/telemetry/frsky.h similarity index 100% rename from transmitter/src/telemetry/frsky.h rename to radio/src/telemetry/frsky.h diff --git a/transmitter/src/telemetry/frsky_sport.cpp b/radio/src/telemetry/frsky_sport.cpp similarity index 100% rename from transmitter/src/telemetry/frsky_sport.cpp rename to radio/src/telemetry/frsky_sport.cpp diff --git a/transmitter/src/telemetry/frsky_sport.h b/radio/src/telemetry/frsky_sport.h similarity index 100% rename from transmitter/src/telemetry/frsky_sport.h rename to radio/src/telemetry/frsky_sport.h diff --git a/transmitter/src/telemetry/jeti.cpp b/radio/src/telemetry/jeti.cpp similarity index 100% rename from transmitter/src/telemetry/jeti.cpp rename to radio/src/telemetry/jeti.cpp diff --git a/transmitter/src/telemetry/jeti.h b/radio/src/telemetry/jeti.h similarity index 100% rename from transmitter/src/telemetry/jeti.h rename to radio/src/telemetry/jeti.h diff --git a/transmitter/src/telemetry/mavlink.cpp b/radio/src/telemetry/mavlink.cpp similarity index 100% rename from transmitter/src/telemetry/mavlink.cpp rename to radio/src/telemetry/mavlink.cpp diff --git a/transmitter/src/telemetry/mavlink.h b/radio/src/telemetry/mavlink.h similarity index 100% rename from transmitter/src/telemetry/mavlink.h rename to radio/src/telemetry/mavlink.h diff --git a/transmitter/src/telemetry/nmea.cpp b/radio/src/telemetry/nmea.cpp similarity index 100% rename from transmitter/src/telemetry/nmea.cpp rename to radio/src/telemetry/nmea.cpp diff --git a/transmitter/src/telemetry/nmea.h b/radio/src/telemetry/nmea.h similarity index 100% rename from transmitter/src/telemetry/nmea.h rename to radio/src/telemetry/nmea.h diff --git a/transmitter/src/templates.cpp b/radio/src/templates.cpp similarity index 100% rename from transmitter/src/templates.cpp rename to radio/src/templates.cpp diff --git a/transmitter/src/templates.h b/radio/src/templates.h similarity index 100% rename from transmitter/src/templates.h rename to radio/src/templates.h diff --git a/transmitter/src/translations.cpp b/radio/src/translations.cpp similarity index 100% rename from transmitter/src/translations.cpp rename to radio/src/translations.cpp diff --git a/transmitter/src/translations.h b/radio/src/translations.h similarity index 100% rename from transmitter/src/translations.h rename to radio/src/translations.h diff --git a/transmitter/src/translations/cz.h b/radio/src/translations/cz.h similarity index 100% rename from transmitter/src/translations/cz.h rename to radio/src/translations/cz.h diff --git a/transmitter/src/translations/cz.h.txt b/radio/src/translations/cz.h.txt similarity index 100% rename from transmitter/src/translations/cz.h.txt rename to radio/src/translations/cz.h.txt diff --git a/transmitter/src/translations/de.h b/radio/src/translations/de.h similarity index 100% rename from transmitter/src/translations/de.h rename to radio/src/translations/de.h diff --git a/transmitter/src/translations/de.h.txt b/radio/src/translations/de.h.txt similarity index 100% rename from transmitter/src/translations/de.h.txt rename to radio/src/translations/de.h.txt diff --git a/transmitter/src/translations/en.h b/radio/src/translations/en.h similarity index 100% rename from transmitter/src/translations/en.h rename to radio/src/translations/en.h diff --git a/transmitter/src/translations/es.h b/radio/src/translations/es.h similarity index 100% rename from transmitter/src/translations/es.h rename to radio/src/translations/es.h diff --git a/transmitter/src/translations/es.h.txt b/radio/src/translations/es.h.txt similarity index 100% rename from transmitter/src/translations/es.h.txt rename to radio/src/translations/es.h.txt diff --git a/transmitter/src/translations/fr.h b/radio/src/translations/fr.h similarity index 100% rename from transmitter/src/translations/fr.h rename to radio/src/translations/fr.h diff --git a/transmitter/src/translations/fr.h.txt b/radio/src/translations/fr.h.txt similarity index 100% rename from transmitter/src/translations/fr.h.txt rename to radio/src/translations/fr.h.txt diff --git a/transmitter/src/translations/it.h b/radio/src/translations/it.h similarity index 100% rename from transmitter/src/translations/it.h rename to radio/src/translations/it.h diff --git a/transmitter/src/translations/it.h.txt b/radio/src/translations/it.h.txt similarity index 100% rename from transmitter/src/translations/it.h.txt rename to radio/src/translations/it.h.txt diff --git a/transmitter/src/translations/pl.h b/radio/src/translations/pl.h similarity index 100% rename from transmitter/src/translations/pl.h rename to radio/src/translations/pl.h diff --git a/transmitter/src/translations/pl.h.txt b/radio/src/translations/pl.h.txt similarity index 100% rename from transmitter/src/translations/pl.h.txt rename to radio/src/translations/pl.h.txt diff --git a/transmitter/src/translations/pt.h b/radio/src/translations/pt.h similarity index 100% rename from transmitter/src/translations/pt.h rename to radio/src/translations/pt.h diff --git a/transmitter/src/translations/pt.h.txt b/radio/src/translations/pt.h.txt similarity index 100% rename from transmitter/src/translations/pt.h.txt rename to radio/src/translations/pt.h.txt diff --git a/transmitter/src/translations/se.h b/radio/src/translations/se.h similarity index 100% rename from transmitter/src/translations/se.h rename to radio/src/translations/se.h diff --git a/transmitter/src/translations/se.h.txt b/radio/src/translations/se.h.txt similarity index 100% rename from transmitter/src/translations/se.h.txt rename to radio/src/translations/se.h.txt diff --git a/transmitter/src/translations/tts_cz.cpp b/radio/src/translations/tts_cz.cpp similarity index 100% rename from transmitter/src/translations/tts_cz.cpp rename to radio/src/translations/tts_cz.cpp diff --git a/transmitter/src/translations/tts_de.cpp b/radio/src/translations/tts_de.cpp similarity index 100% rename from transmitter/src/translations/tts_de.cpp rename to radio/src/translations/tts_de.cpp diff --git a/transmitter/src/translations/tts_en.cpp b/radio/src/translations/tts_en.cpp similarity index 100% rename from transmitter/src/translations/tts_en.cpp rename to radio/src/translations/tts_en.cpp diff --git a/transmitter/src/translations/tts_es.cpp b/radio/src/translations/tts_es.cpp similarity index 100% rename from transmitter/src/translations/tts_es.cpp rename to radio/src/translations/tts_es.cpp diff --git a/transmitter/src/translations/tts_fr.cpp b/radio/src/translations/tts_fr.cpp similarity index 100% rename from transmitter/src/translations/tts_fr.cpp rename to radio/src/translations/tts_fr.cpp diff --git a/transmitter/src/translations/tts_it.cpp b/radio/src/translations/tts_it.cpp similarity index 100% rename from transmitter/src/translations/tts_it.cpp rename to radio/src/translations/tts_it.cpp diff --git a/transmitter/src/translations/tts_pl.cpp b/radio/src/translations/tts_pl.cpp similarity index 100% rename from transmitter/src/translations/tts_pl.cpp rename to radio/src/translations/tts_pl.cpp diff --git a/transmitter/src/translations/tts_pt.cpp b/radio/src/translations/tts_pt.cpp similarity index 100% rename from transmitter/src/translations/tts_pt.cpp rename to radio/src/translations/tts_pt.cpp diff --git a/transmitter/src/translations/tts_se.cpp b/radio/src/translations/tts_se.cpp similarity index 100% rename from transmitter/src/translations/tts_se.cpp rename to radio/src/translations/tts_se.cpp diff --git a/transmitter/src/translations/tts_sk.cpp b/radio/src/translations/tts_sk.cpp similarity index 100% rename from transmitter/src/translations/tts_sk.cpp rename to radio/src/translations/tts_sk.cpp diff --git a/transmitter/util/compile.py b/radio/util/compile.py similarity index 100% rename from transmitter/util/compile.py rename to radio/util/compile.py diff --git a/transmitter/util/dsm2.py b/radio/util/dsm2.py similarity index 100% rename from transmitter/util/dsm2.py rename to radio/util/dsm2.py diff --git a/transmitter/util/img2lbm.py b/radio/util/img2lbm.py similarity index 100% rename from transmitter/util/img2lbm.py rename to radio/util/img2lbm.py diff --git a/transmitter/util/maxvolume.cmd b/radio/util/maxvolume.cmd similarity index 100% rename from transmitter/util/maxvolume.cmd rename to radio/util/maxvolume.cmd diff --git a/transmitter/util/parse.py b/radio/util/parse.py similarity index 100% rename from transmitter/util/parse.py rename to radio/util/parse.py diff --git a/transmitter/util/translate.py b/radio/util/translate.py similarity index 100% rename from transmitter/util/translate.py rename to radio/util/translate.py diff --git a/transmitter/util/tts.py b/radio/util/tts.py similarity index 100% rename from transmitter/util/tts.py rename to radio/util/tts.py From 413119efc590074d121b684a185ed5e4468486dd Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Tue, 3 Dec 2013 15:47:25 +0100 Subject: [PATCH 005/308] French translation --- radio/src/translations/fr.h | 2 +- radio/src/translations/fr.h.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/radio/src/translations/fr.h b/radio/src/translations/fr.h index 7de9ee984..5d6465792 100644 --- a/radio/src/translations/fr.h +++ b/radio/src/translations/fr.h @@ -660,7 +660,7 @@ #define TR_LOWALARM INDENT "Alarme basse" #define TR_CRITICALALARM INDENT "Alarme critique" #define TR_PERSISTENT_MAH INDENT "Store mAh" -#define TR_FAS_OFFSET TR(INDENT "FAS Ofs", INDENT "FAS Offset") +#define TR_FAS_OFFSET TR(INDENT "Corr FAS", INDENT "Correction FAS") #if defined(MAVLINK) #define TR_MAVLINK_RC_RSSI_SCALE_LABEL "Max RSSI" diff --git a/radio/src/translations/fr.h.txt b/radio/src/translations/fr.h.txt index 81873286c..3f96fe265 100644 --- a/radio/src/translations/fr.h.txt +++ b/radio/src/translations/fr.h.txt @@ -660,7 +660,7 @@ #define TR_LOWALARM INDENT "Alarme basse" #define TR_CRITICALALARM INDENT "Alarme critique" #define TR_PERSISTENT_MAH INDENT "Store mAh" -#define TR_FAS_OFFSET TR(INDENT "FAS Ofs", INDENT "FAS Offset") +#define TR_FAS_OFFSET TR(INDENT "Corr FAS", INDENT "Correction FAS") #if defined(MAVLINK) #define TR_MAVLINK_RC_RSSI_SCALE_LABEL "Max RSSI" From d125e408f21245bba1ff8c4b8c13b5d1c6310089 Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Tue, 3 Dec 2013 22:29:22 +0100 Subject: [PATCH 006/308] FAS offset now an option for M64 only --- radio/src/Makefile | 8 ++++++++ radio/src/gui/menu_model.cpp | 16 +++++++++++++--- radio/src/telemetry/frsky.cpp | 2 ++ radio/src/translations.cpp | 3 +++ radio/src/translations.h | 3 +++ 5 files changed, 29 insertions(+), 3 deletions(-) diff --git a/radio/src/Makefile b/radio/src/Makefile index 73515c551..75cfb9045 100644 --- a/radio/src/Makefile +++ b/radio/src/Makefile @@ -159,6 +159,10 @@ PPM_UNIT = PERCENT_PREC1 # Values = YES, NO FRSKY_HUB = YES +# FrSky FAS current sensor offset compensation +# Values = YES, NO +FAS_OFFSET = NO + # WS HowHigh # Values = YES, NO WS_HOW_HIGH = YES @@ -332,6 +336,10 @@ ifeq ($(PCB), $(filter $(PCB), STD 9X 9XR)) ifeq ($(SP22), YES) CPPDEFS += -DSP22 endif + + ifeq ($(FAS_OFFSET), YES) + CPPDEFS += -DFAS_OFFSET + endif endif ifeq ($(PCB), $(filter $(PCB), STD128 9X128 9XR128)) diff --git a/radio/src/gui/menu_model.cpp b/radio/src/gui/menu_model.cpp index 855e3d0e0..68778873a 100644 --- a/radio/src/gui/menu_model.cpp +++ b/radio/src/gui/menu_model.cpp @@ -5167,7 +5167,9 @@ enum menuModelTelemetryItems { #endif ITEM_TELEMETRY_USR_VOLTAGE_SOURCE, ITEM_TELEMETRY_USR_CURRENT_SOURCE, +#if defined(FAS_OFFSET) || !defined(CPUM64) ITEM_TELEMETRY_FAS_OFFSET, +#endif #if defined(CPUARM) ITEM_TELEMTETRY_PERSISTENT_MAH, #endif @@ -5248,9 +5250,15 @@ enum menuModelTelemetryItems { #define VARIO_RANGE_ROWS 3 #endif +#if defined(FAS_OFFSET) || !defined(CPUM64) + #define IF_FAS_OFFSET(x) x, +#else + #define IF_FAS_OFFSET(x) +#endif + void menuModelTelemetry(uint8_t event) { - MENU(STR_MENUTELEMETRY, menuTabModel, e_Telemetry, ITEM_TELEMETRY_MAX+1, {0, CHANNEL_ROWS CHANNEL_ROWS RSSI_ROWS USRDATA_LINES 0, 0, 0, IF_CPUARM(0) IF_VARIO(LABEL(Vario)) IF_VARIO(0) IF_VARIO(VARIO_RANGE_ROWS) CASE_PCBTARANIS(LABEL(TopBar)) CASE_PCBTARANIS(0) SCREEN_TYPE_ROWS, 2, 2, 2, 2, SCREEN_TYPE_ROWS, 2, 2, 2, 2, IF_CPUARM(SCREEN_TYPE_ROWS) IF_CPUARM(2) IF_CPUARM(2) IF_CPUARM(2) IF_CPUARM(2) }); + MENU(STR_MENUTELEMETRY, menuTabModel, e_Telemetry, ITEM_TELEMETRY_MAX+1, {0, CHANNEL_ROWS CHANNEL_ROWS RSSI_ROWS USRDATA_LINES 0, 0, IF_FAS_OFFSET(0) IF_CPUARM(0) IF_VARIO(LABEL(Vario)) IF_VARIO(0) IF_VARIO(VARIO_RANGE_ROWS) CASE_PCBTARANIS(LABEL(TopBar)) CASE_PCBTARANIS(0) SCREEN_TYPE_ROWS, 2, 2, 2, 2, SCREEN_TYPE_ROWS, 2, 2, 2, 2, IF_CPUARM(SCREEN_TYPE_ROWS) IF_CPUARM(2) IF_CPUARM(2) IF_CPUARM(2) IF_CPUARM(2) }); uint8_t sub = m_posVert - 1; @@ -5420,7 +5428,8 @@ void menuModelTelemetry(uint8_t event) lcd_putsiAtt(TELEM_COL2, y, STR_VOLTSRC, g_model.frsky.currentSource, attr); if (attr) CHECK_INCDEC_MODELVAR_ZERO(event, g_model.frsky.currentSource, 3); break; - + +#if defined(FAS_OFFSET) || !defined(CPUM64) case ITEM_TELEMETRY_FAS_OFFSET: lcd_putsLeft(y, STR_FAS_OFFSET); lcd_outdezAtt(TELEM_COL2, y, g_model.frsky.fasOffset, attr|LEFT|PREC1); @@ -5428,7 +5437,8 @@ void menuModelTelemetry(uint8_t event) lcd_putc(TELEM_COL2+8*FW, y, 'A'); if (attr) g_model.frsky.fasOffset = checkIncDec(event, g_model.frsky.fasOffset, -15, 15, EE_MODEL); break; - +#endif + #if defined(CPUARM) case ITEM_TELEMTETRY_PERSISTENT_MAH: g_model.frsky.mAhPersistent = onoffMenuItem(g_model.frsky.mAhPersistent, TELEM_COL2, y, STR_PERSISTENT_MAH, attr, event); diff --git a/radio/src/telemetry/frsky.cpp b/radio/src/telemetry/frsky.cpp index 892e75056..8e2a4bda2 100644 --- a/radio/src/telemetry/frsky.cpp +++ b/radio/src/telemetry/frsky.cpp @@ -191,10 +191,12 @@ void parseTelemHubByte(uint8_t byte) break; case offsetof(FrskySerialData, current): +#if defined(FAS_OFFSET) || !defined(CPUM64) if(((int16_t)frskyData.hub.current + g_model.frsky.fasOffset)>0) frskyData.hub.current += g_model.frsky.fasOffset; else frskyData.hub.current = 0; +#endif if (frskyData.hub.current > frskyData.hub.maxCurrent) frskyData.hub.maxCurrent = frskyData.hub.current; break; diff --git a/radio/src/translations.cpp b/radio/src/translations.cpp index 6749c8d2f..1c5c07f2a 100644 --- a/radio/src/translations.cpp +++ b/radio/src/translations.cpp @@ -266,7 +266,10 @@ const pm_char STR_EEPROMFORMATTING[] PROGMEM = TR_EEPROMFORMATTING; const pm_char STR_EEPROMOVERFLOW[] PROGMEM = TR_EEPROMOVERFLOW; const pm_char STR_TRIMS2OFFSETS[] PROGMEM = TR_TRIMS2OFFSETS; const pm_char STR_MENURADIOSETUP[] PROGMEM = TR_MENURADIOSETUP; + +#if defined(FAS_OFFSET) || !defined(CPUM64) const pm_char STR_FAS_OFFSET[] PROGMEM = TR_FAS_OFFSET; +#endif #if defined(CPUM2560) || defined(CPUARM) const pm_char STR_MENUDATEANDTIME[] PROGMEM = TR_MENUDATEANDTIME; diff --git a/radio/src/translations.h b/radio/src/translations.h index 7f93d1e4d..09f83bd54 100644 --- a/radio/src/translations.h +++ b/radio/src/translations.h @@ -447,7 +447,10 @@ extern const pm_char STR_MENUGLOBALVARS[]; extern const pm_char STR_INVERT_THR[]; extern const pm_char STR_AND_SWITCH[]; extern const pm_char STR_CF[]; + +#if defined(FAS_OFFSET) || !defined(CPUM64) extern const pm_char STR_FAS_OFFSET[]; +#endif #if defined(DSM2) || defined(PXX) extern const pm_char STR_RXNUM[]; From e4428849f3867c6fb99da0234af25d2d357d7fc4 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Wed, 4 Dec 2013 21:05:08 +0100 Subject: [PATCH 007/308] Fixes #190 --- companion/src/mainwindow.cpp | 33 ++++++++++++++------------------- 1 file changed, 14 insertions(+), 19 deletions(-) diff --git a/companion/src/mainwindow.cpp b/companion/src/mainwindow.cpp index 4f448b36d..9c8818c82 100644 --- a/companion/src/mainwindow.cpp +++ b/companion/src/mainwindow.cpp @@ -1218,34 +1218,29 @@ bool MainWindow::isValidEEPROM(QString eepromfile) return false; } file.close(); - RadioData radioData; - if (!LoadEeprom(radioData, eeprom, eeprom_size)) { - free(eeprom); - return false; - } else { - free(eeprom); - return true; - } - } else if (fileType==FILE_TYPE_BIN) { //read binary + RadioData * radioData = new RadioData(); + bool result = LoadEeprom(*radioData, eeprom, eeprom_size); + free(eeprom); + delete radioData; + return result; + } + else if (fileType==FILE_TYPE_BIN) { //read binary if (!file.open(QFile::ReadOnly)) return false; eeprom_size = file.size(); uint8_t *eeprom = (uint8_t *)malloc(eeprom_size); memset(eeprom, 0, eeprom_size); - long result = file.read((char*)eeprom, eeprom_size); + long read = file.read((char*)eeprom, eeprom_size); file.close(); - if (result != eeprom_size) { + if (read != eeprom_size) { free(eeprom); return false; } - RadioData radioData; - if (!LoadEeprom(radioData, eeprom, eeprom_size)) { - free(eeprom); - return false; - } else { - free(eeprom); - return true; - } + RadioData * radioData = new RadioData(); + bool result = LoadEeprom(*radioData, eeprom, eeprom_size); + free(eeprom); + delete radioData; + return result; } return false; } From a6863e3d1ccb971442b1a8e19c68de5128132182 Mon Sep 17 00:00:00 2001 From: mhotar Date: Thu, 12 Dec 2013 11:41:22 +0100 Subject: [PATCH 008/308] Proportional Fonts - merged from SVN -font definitions are left aligned and width defined -numbers have fixed width, but are shrinked -INVerted strings ara black surrounded from left and right sides --- radio/src/fonts/std/font_04x06.lbm | 12 +- radio/src/fonts/std/font_04x06.png | Bin 519 -> 575 bytes radio/src/fonts/std/font_05x07.lbm | 10 +- radio/src/fonts/std/font_05x07.png | Bin 570 -> 616 bytes radio/src/fonts/std/font_08x10.lbm | 10 +- radio/src/fonts/std/font_08x10.png | Bin 767 -> 823 bytes radio/src/fonts/std/font_10x14.lbm | 6 +- radio/src/fonts/std/font_10x14.png | Bin 1123 -> 1168 bytes radio/src/fonts/std/font_10x14_compressed.lbm | 2 +- radio/src/fonts/std/font_10x14_compressed.png | Bin 1500 -> 1503 bytes radio/src/fonts/std/font_cz_04x06.lbm | 2 +- radio/src/fonts/std/font_cz_04x06.png | Bin 220 -> 223 bytes radio/src/fonts/std/font_cz_05x07.lbm | 2 +- radio/src/fonts/std/font_cz_05x07.png | Bin 223 -> 243 bytes radio/src/fonts/std/font_cz_08x10.lbm | 2 +- radio/src/fonts/std/font_cz_08x10.png | Bin 292 -> 314 bytes radio/src/fonts/std/font_cz_10x14.lbm | 2 +- radio/src/fonts/std/font_cz_10x14.png | Bin 410 -> 423 bytes radio/src/fonts/std/font_de_04x06.lbm | 2 +- radio/src/fonts/std/font_de_04x06.png | Bin 179 -> 178 bytes radio/src/fonts/std/font_de_08x10.lbm | 2 +- radio/src/fonts/std/font_de_08x10.png | Bin 202 -> 209 bytes radio/src/fonts/std/font_de_10x14.lbm | 2 +- radio/src/fonts/std/font_de_10x14.png | Bin 254 -> 266 bytes radio/src/fonts/std/font_es_04x06.lbm | 2 +- radio/src/fonts/std/font_es_04x06.png | Bin 144 -> 157 bytes radio/src/fonts/std/font_es_08x10.lbm | 2 +- radio/src/fonts/std/font_es_08x10.png | Bin 168 -> 168 bytes radio/src/fonts/std/font_fr_04x06.lbm | 2 +- radio/src/fonts/std/font_fr_04x06.png | Bin 3610 -> 3575 bytes radio/src/fonts/std/font_fr_05x07.lbm | 2 +- radio/src/fonts/std/font_fr_05x07.png | Bin 163 -> 176 bytes radio/src/fonts/std/font_fr_08x10.lbm | 2 +- radio/src/fonts/std/font_fr_08x10.png | Bin 3647 -> 3619 bytes radio/src/fonts/std/font_fr_10x14.lbm | 2 +- radio/src/fonts/std/font_fr_10x14.png | Bin 231 -> 246 bytes radio/src/fonts/std/font_it_04x06.lbm | 2 +- radio/src/fonts/std/font_it_04x06.png | Bin 145 -> 157 bytes radio/src/fonts/std/font_it_08x10.lbm | 2 +- radio/src/fonts/std/font_it_08x10.png | Bin 158 -> 171 bytes radio/src/fonts/std/font_pl_04x06.lbm | 1 + radio/src/fonts/std/font_pl_04x06.png | Bin 0 -> 230 bytes radio/src/fonts/std/font_pl_05x07.lbm | 1 + radio/src/fonts/std/font_pl_05x07.png | Bin 0 -> 251 bytes radio/src/fonts/std/font_pl_08x10.lbm | 1 + radio/src/fonts/std/font_pl_08x10.png | Bin 0 -> 326 bytes radio/src/fonts/std/font_pl_10x14.lbm | 1 + radio/src/fonts/std/font_pl_10x14.png | Bin 0 -> 422 bytes radio/src/fonts/std/font_pt_05x07.lbm | 2 +- radio/src/fonts/std/font_pt_05x07.png | Bin 246 -> 247 bytes radio/src/fonts/std/font_pt_08x10.lbm | 2 +- radio/src/fonts/std/font_pt_08x10.png | Bin 315 -> 326 bytes radio/src/fonts/std/font_pt_10x14.lbm | 2 +- radio/src/fonts/std/font_pt_10x14.png | Bin 442 -> 452 bytes radio/src/fonts/std/font_se_04x06.lbm | 2 +- radio/src/fonts/std/font_se_04x06.png | Bin 157 -> 169 bytes radio/src/fonts/std/font_se_08x10.lbm | 2 +- radio/src/fonts/std/font_se_08x10.png | Bin 190 -> 208 bytes radio/src/gui/menu_model.cpp | 3 +- radio/src/lcd.cpp | 170 +++++++++++------- 60 files changed, 152 insertions(+), 105 deletions(-) create mode 100644 radio/src/fonts/std/font_pl_04x06.lbm create mode 100644 radio/src/fonts/std/font_pl_04x06.png create mode 100644 radio/src/fonts/std/font_pl_05x07.lbm create mode 100644 radio/src/fonts/std/font_pl_05x07.png create mode 100644 radio/src/fonts/std/font_pl_08x10.lbm create mode 100644 radio/src/fonts/std/font_pl_08x10.png create mode 100644 radio/src/fonts/std/font_pl_10x14.lbm create mode 100644 radio/src/fonts/std/font_pl_10x14.png diff --git a/radio/src/fonts/std/font_04x06.lbm b/radio/src/fonts/std/font_04x06.lbm index d4c2686e5..aaa1f30d6 100644 --- a/radio/src/fonts/std/font_04x06.lbm +++ b/radio/src/fonts/std/font_04x06.lbm @@ -1,6 +1,6 @@ -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2f,0x00,0x00,0x00,0x07,0x00,0x07,0x00,0x14,0x3e,0x14,0x3e,0x14,0x04,0x2a,0x3e,0x2a,0x10,0x13,0x08,0x04,0x32,0x00,0x14,0x2a,0x14,0x20,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x1e,0x21,0x00,0x00,0x00,0x21,0x1e,0x00,0x00,0x00,0x2a,0x1c,0x2a,0x00,0x08,0x08,0x3e,0x08,0x08,0x00,0x40,0x30,0x10,0x00,0x08,0x08,0x08,0x08,0x00,0x00,0x30,0x30,0x00,0x00,0x10,0x08,0x04,0x02,0x00, -0x00,0x1e,0x21,0x1e,0x00,0x00,0x22,0x3f,0x20,0x00,0x22,0x31,0x29,0x26,0x00,0x11,0x25,0x25,0x1b,0x00,0x0c,0x0a,0x3f,0x08,0x00,0x17,0x25,0x25,0x19,0x00,0x1e,0x25,0x25,0x18,0x00,0x01,0x31,0x0d,0x03,0x00,0x1a,0x25,0x25,0x1a,0x00,0x06,0x29,0x29,0x1e,0x00,0x00,0x36,0x36,0x00,0x00,0x40,0x36,0x16,0x00,0x00,0x00,0x08,0x14,0x22,0x00,0x14,0x14,0x14,0x14,0x00,0x00,0x22,0x14,0x08,0x00,0x00,0x02,0x29,0x06,0x00, -0x00,0x02,0x05,0x02,0x00,0x3e,0x09,0x09,0x3e,0x00,0x3f,0x25,0x25,0x1a,0x00,0x1e,0x21,0x21,0x12,0x00,0x3f,0x21,0x21,0x1e,0x00,0x3f,0x25,0x25,0x21,0x00,0x3f,0x05,0x05,0x01,0x00,0x1e,0x21,0x29,0x3a,0x00,0x3f,0x04,0x04,0x3f,0x00,0x00,0x21,0x3f,0x21,0x00,0x10,0x20,0x20,0x1f,0x00,0x3f,0x0c,0x12,0x21,0x00,0x3f,0x20,0x20,0x20,0x00,0x3f,0x02,0x04,0x02,0x3f,0x3f,0x06,0x18,0x3f,0x00,0x1e,0x21,0x21,0x1e,0x00, -0x3f,0x09,0x09,0x06,0x00,0x1e,0x31,0x21,0x5e,0x00,0x3f,0x09,0x19,0x26,0x00,0x12,0x25,0x29,0x12,0x00,0x00,0x01,0x3f,0x01,0x00,0x1f,0x20,0x20,0x1f,0x00,0x0f,0x30,0x30,0x0f,0x00,0x3f,0x18,0x0c,0x18,0x3f,0x33,0x0c,0x0c,0x33,0x00,0x00,0x07,0x38,0x07,0x00,0x31,0x29,0x25,0x23,0x00,0x00,0x3f,0x21,0x21,0x00,0x02,0x04,0x08,0x10,0x00,0x00,0x21,0x21,0x3f,0x00,0x00,0x02,0x01,0x02,0x00,0x20,0x20,0x20,0x20,0x00, -0x00,0x01,0x02,0x00,0x00,0x18,0x24,0x14,0x3c,0x00,0x3f,0x24,0x24,0x18,0x00,0x18,0x24,0x24,0x00,0x00,0x18,0x24,0x24,0x3f,0x00,0x18,0x34,0x2c,0x08,0x00,0x08,0x3e,0x09,0x02,0x00,0x28,0x54,0x54,0x4c,0x00,0x3f,0x04,0x04,0x38,0x00,0x00,0x24,0x3d,0x20,0x00,0x00,0x20,0x40,0x3d,0x00,0x3f,0x08,0x14,0x20,0x00,0x00,0x21,0x3f,0x20,0x00,0x3c,0x08,0x38,0x0c,0x38,0x3c,0x04,0x04,0x38,0x00,0x18,0x24,0x24,0x18,0x00, -0x7c,0x24,0x24,0x18,0x00,0x18,0x24,0x24,0x7c,0x00,0x3c,0x04,0x04,0x08,0x00,0x28,0x2c,0x34,0x14,0x00,0x04,0x1f,0x24,0x20,0x00,0x1c,0x20,0x20,0x3c,0x00,0x00,0x1c,0x20,0x1c,0x00,0x3c,0x30,0x18,0x30,0x3c,0x24,0x18,0x18,0x24,0x00,0x0c,0x50,0x20,0x1c,0x00,0x24,0x34,0x2c,0x24,0x00,0x00,0x04,0x1e,0x21,0x00,0x00,0x00,0x3f,0x00,0x00,0x00,0x21,0x1e,0x04,0x00,0x08,0x2a,0x1c,0x08,0x00,0x00,0x08,0x1c,0x2a,0x08, +0x00,0x00,0x7f,0x7f,0x7f,0x00,0x00,0x2f,0x7f,0x7f,0x00,0x07,0x00,0x07,0x7f,0x14,0x3e,0x14,0x3e,0x14,0x04,0x2a,0x3e,0x2a,0x10,0x13,0x08,0x04,0x32,0x7f,0x14,0x2a,0x14,0x20,0x7f,0x00,0x00,0x07,0x7f,0x7f,0x00,0x1e,0x21,0x7f,0x7f,0x00,0x21,0x1e,0x7f,0x7f,0x00,0x2a,0x1c,0x2a,0x7f,0x08,0x08,0x3e,0x08,0x08,0x00,0x40,0x30,0x10,0x7f,0x08,0x08,0x08,0x08,0x7f,0x00,0x30,0x30,0x7f,0x7f,0x10,0x08,0x04,0x02,0x7f, +0x1e,0x21,0x21,0x1e,0x7f,0x00,0x22,0x3f,0x20,0x7f,0x22,0x31,0x29,0x26,0x7f,0x11,0x25,0x25,0x1b,0x7f,0x0c,0x0a,0x3f,0x08,0x7f,0x17,0x25,0x25,0x19,0x7f,0x1e,0x25,0x25,0x18,0x7f,0x01,0x31,0x0d,0x03,0x7f,0x1a,0x25,0x25,0x1a,0x7f,0x06,0x29,0x29,0x1e,0x7f,0x00,0x36,0x36,0x00,0x7f,0x40,0x36,0x16,0x00,0x7f,0x00,0x08,0x14,0x22,0x7f,0x14,0x14,0x14,0x14,0x7f,0x00,0x22,0x14,0x08,0x7f,0x00,0x02,0x29,0x06,0x7f, +0x00,0x02,0x05,0x02,0x7f,0x3e,0x09,0x09,0x3e,0x7f,0x3f,0x25,0x25,0x1a,0x7f,0x1e,0x21,0x21,0x12,0x7f,0x3f,0x21,0x21,0x1e,0x7f,0x3f,0x25,0x25,0x21,0x7f,0x3f,0x05,0x05,0x01,0x7f,0x1e,0x21,0x29,0x3a,0x7f,0x3f,0x04,0x04,0x3f,0x7f,0x00,0x21,0x3f,0x21,0x7f,0x10,0x20,0x20,0x1f,0x7f,0x3f,0x0c,0x12,0x21,0x7f,0x3f,0x20,0x20,0x20,0x7f,0x3f,0x02,0x04,0x02,0x3f,0x3f,0x06,0x18,0x3f,0x7f,0x1e,0x21,0x21,0x1e,0x7f, +0x3f,0x09,0x09,0x06,0x7f,0x1e,0x31,0x21,0x5e,0x7f,0x3f,0x09,0x19,0x26,0x7f,0x12,0x25,0x29,0x12,0x7f,0x00,0x01,0x3f,0x01,0x7f,0x1f,0x20,0x20,0x1f,0x7f,0x0f,0x30,0x30,0x0f,0x7f,0x3f,0x18,0x0c,0x18,0x3f,0x33,0x0c,0x0c,0x33,0x7f,0x00,0x07,0x38,0x07,0x7f,0x31,0x29,0x25,0x23,0x7f,0x00,0x3f,0x21,0x21,0x7f,0x02,0x04,0x08,0x10,0x7f,0x00,0x21,0x21,0x3f,0x7f,0x00,0x02,0x01,0x02,0x7f,0x20,0x20,0x20,0x20,0x7f, +0x00,0x01,0x02,0x00,0x7f,0x18,0x24,0x14,0x3c,0x7f,0x3f,0x24,0x24,0x18,0x7f,0x18,0x24,0x24,0x7f,0x7f,0x18,0x24,0x24,0x3f,0x7f,0x18,0x34,0x2c,0x08,0x7f,0x08,0x3e,0x09,0x02,0x7f,0x28,0x54,0x54,0x4c,0x7f,0x3f,0x04,0x04,0x38,0x7f,0x24,0x3d,0x20,0x7f,0x7f,0x20,0x40,0x3d,0x7f,0x7f,0x3f,0x08,0x14,0x20,0x7f,0x21,0x3f,0x20,0x7f,0x7f,0x3c,0x08,0x38,0x0c,0x38,0x3c,0x04,0x04,0x38,0x7f,0x18,0x24,0x24,0x18,0x7f, +0x7c,0x24,0x24,0x18,0x7f,0x18,0x24,0x24,0x7c,0x7f,0x3c,0x04,0x04,0x08,0x7f,0x28,0x2c,0x34,0x14,0x7f,0x04,0x1f,0x24,0x20,0x7f,0x1c,0x20,0x20,0x3c,0x7f,0x1c,0x20,0x1c,0x7f,0x7f,0x3c,0x30,0x18,0x30,0x3c,0x24,0x18,0x18,0x24,0x7f,0x0c,0x50,0x20,0x1c,0x7f,0x24,0x34,0x2c,0x24,0x7f,0x00,0x04,0x1e,0x21,0x7f,0x00,0x00,0x3f,0x00,0x7f,0x00,0x21,0x1e,0x04,0x7f,0x08,0x2a,0x1c,0x08,0x7f,0x00,0x08,0x1c,0x2a,0x08, diff --git a/radio/src/fonts/std/font_04x06.png b/radio/src/fonts/std/font_04x06.png index 40e4ae99584e633c50029932e2690a0f0b57ccf8..b3fe5bc1dfe5987b83a65f9ac3c49a653b05449e 100644 GIT binary patch delta 532 zcmV+v0_**U1iu83Hh%$POGiWihy@);00009a7bBm000XU000XU0RWnu7ytkO2XskI zMF-ss2o?w-{wpOb0005MNklNyO@G+19o zEHm9-J&WO(ZN#lR%M|#Tr!gG2;Wdm|X1b?}4 zOL&})vk>5Fv zAz9)qkZGA-G>;)!GS{$cs%dudJqBUcwT2DT*5(44g(7E-T+-&|0huK;b-n!38u^_M zFnqUtUwt2JBE$B%=c?mM4ITl_y*~F`)x2_xS3u?$R(}q!3xWo#OoBkpQSeDM$YSha z_#|;m>Qbt~D$O2-uRsOo5(Extf?RgK`oee3cR+35_r9*4|9$V-==(6{+N`?_BCL#t ze94Tu$qB4ZOAZHcWrhwgNTfdQ%hRo*{Hh=3eE_?l W&O;9&DGd_<0000$Mp!Y|I3K0Q&lJSCxbh8R~K*=xWym5l|RZtWzL9&1}xz;3ts^Pzw(xF zH3oKf;W6)`f8wAWe_Xp^XS5gasM9%V(>JOj-~t*$Q7{zX7Q?wrLJ&;~!+xAgC0k*J z+w+>d%Igt^yA^Ml=S!pN6HwGEQ*=U6#QJ8a>x3wXI1GRM)8)3u!k1f2$2i&Kt?*tJ ztbmdHb^e1n2~iHh%$POGiWihy@);00009a7bBm000XU000XU0RWnu7ytkO2XskI zMF-ss2ooh5X~9$r0005#Nklm5dOqg00`0Kyr4+n? z7FNJEE?tc8|yR6}FA#5(Non^6m00000 LNkvXXu0mjfTuce` delta 501 zcmV`kQ3 z3`sq&Rb0@E0hhXG9tgq~m#e5?9_MupD$w6-t?_w^esrtCrLf8nhf+r)K(w=^8gasc`knpFiPE* rzb-A6%c^RDTk82To4u;a*wOnB51CaF9saF300000NkvXXu0mjfEB);y diff --git a/radio/src/fonts/std/font_08x10.lbm b/radio/src/fonts/std/font_08x10.lbm index 786c5f3d6..a5fcbc547 100644 --- a/radio/src/fonts/std/font_08x10.lbm +++ b/radio/src/fonts/std/font_08x10.lbm @@ -1,6 +1,6 @@ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x05,0xfe,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0x00,0x0e,0x00,0x00,0x00,0x0e,0x00,0x0e,0x00,0x00,0x00,0x00,0x00,0x90,0x00,0xfc,0x03,0xfc,0x03,0x90,0x00,0xfc,0x03,0xfc,0x03,0x90,0x00,0x00,0x00,0x38,0x02,0x7c,0x06,0x64,0x04,0xfe,0x0f,0xc4,0x04,0xcc,0x07,0x88,0x03,0x0c,0x04,0x1e,0x07,0x8c,0x03,0xe0,0x00,0x70,0x00,0x1c,0x03,0x8e,0x07,0x02,0x03,0x80,0x03,0xdc,0x07,0x7e,0x04,0x72,0x04,0xde,0x06,0x8c,0x03,0x80,0x07,0xc0,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0xfc,0x03,0x0e,0x07,0x03,0x0c,0x01,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x08,0x03,0x0c,0x0e,0x07,0xfc,0x03,0xf0,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x50,0x01,0xf0,0x01,0xe0,0x00,0xf0,0x01,0x50,0x01,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0xf8,0x03,0xf8,0x03,0x40,0x00,0x40,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x09,0x80,0x0f,0x80,0x07,0x00,0x00,0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x0e,0x00,0x0e,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x07,0x80,0x03,0xe0,0x00,0x70,0x00,0x1c,0x00,0x0e,0x00,0x02,0x00, -0xfc,0x03,0xfe,0x07,0x02,0x04,0x02,0x04,0xfe,0x07,0xfc,0x03,0x00,0x00,0x00,0x00,0x08,0x04,0x0c,0x04,0xfe,0x07,0xfe,0x07,0x00,0x04,0x00,0x04,0x00,0x00,0x00,0x00,0x0c,0x06,0x0e,0x07,0x82,0x05,0xe2,0x04,0x7e,0x04,0x1c,0x04,0x00,0x00,0x00,0x00,0x0c,0x03,0x0e,0x07,0x22,0x04,0x22,0x04,0xfe,0x07,0xdc,0x03,0x00,0x00,0x00,0x00,0xc0,0x01,0xe0,0x01,0x30,0x01,0xfc,0x07,0xfe,0x07,0x00,0x01,0x00,0x00,0x00,0x00,0x3e,0x03,0x3e,0x07,0x12,0x04,0x12,0x04,0xf2,0x07,0xe2,0x03,0x00,0x00,0x00,0x00,0xf8,0x03,0xfc,0x07,0x26,0x04,0x22,0x04,0xee,0x07,0xcc,0x03,0x00,0x00,0x00,0x00,0x0e,0x00,0x0e,0x00,0xe2,0x07,0xfa,0x07,0x1e,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x9c,0x03,0xfe,0x07,0x62,0x04,0x62,0x04,0xfe,0x07,0x9c,0x03,0x00,0x00,0x00,0x00,0x3c,0x03,0x7e,0x07,0x42,0x04,0x42,0x06,0xfe,0x03,0xfc,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x01,0x9c,0x03,0x9c,0x03,0x08,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x9c,0x09,0x9c,0x0f,0x88,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0xf0,0x00,0x98,0x01,0x0c,0x03,0x06,0x06,0x02,0x04,0x00,0x00,0x20,0x01,0x20,0x01,0x20,0x01,0x20,0x01,0x20,0x01,0x20,0x01,0x20,0x01,0x20,0x01,0x00,0x00,0x02,0x04,0x06,0x06,0x0c,0x03,0x98,0x01,0xf0,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x0c,0x00,0x0e,0x00,0x82,0x06,0xc2,0x06,0x62,0x00,0x3e,0x00,0x1c,0x00, -0x00,0x00,0x00,0x00,0x0c,0x00,0x1e,0x00,0x12,0x00,0x12,0x00,0x1e,0x00,0x0c,0x00,0xf0,0x07,0xf8,0x07,0x8c,0x00,0x86,0x00,0x86,0x00,0x8c,0x00,0xf8,0x07,0xf0,0x07,0xfe,0x07,0xfe,0x07,0x22,0x04,0x22,0x04,0x22,0x04,0x76,0x06,0xdc,0x03,0x88,0x01,0xf8,0x01,0xfc,0x03,0x06,0x06,0x02,0x04,0x02,0x04,0x02,0x04,0x06,0x06,0x0c,0x03,0xfe,0x07,0xfe,0x07,0x02,0x04,0x02,0x04,0x02,0x04,0x06,0x06,0xfc,0x03,0xf8,0x01,0x00,0x00,0xfe,0x07,0xfe,0x07,0x22,0x04,0x22,0x04,0x22,0x04,0x22,0x04,0x02,0x04,0xfe,0x07,0xfe,0x07,0x22,0x00,0x22,0x00,0x22,0x00,0x22,0x00,0x02,0x00,0x02,0x00,0xf8,0x01,0xfc,0x03,0x06,0x06,0x02,0x04,0x02,0x04,0x42,0x04,0xc6,0x07,0xc4,0x03,0xfe,0x07,0xfe,0x07,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0xfe,0x07,0xfe,0x07,0x00,0x00,0x02,0x04,0x02,0x04,0xfe,0x07,0xfe,0x07,0x02,0x04,0x02,0x04,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x06,0x02,0x04,0x02,0x06,0xfe,0x03,0xfe,0x01,0x00,0x00,0xfe,0x07,0xfe,0x07,0x60,0x00,0xf0,0x00,0x98,0x01,0x0c,0x03,0x06,0x06,0x02,0x04,0x00,0x00,0xfe,0x07,0xfe,0x07,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0xfe,0x07,0xfe,0x07,0x0c,0x00,0x78,0x00,0x78,0x00,0x0c,0x00,0xfe,0x07,0xfe,0x07,0xfe,0x07,0xfe,0x07,0x1c,0x00,0x78,0x00,0xe0,0x00,0x80,0x03,0xfe,0x07,0xfe,0x07,0xf8,0x01,0xfc,0x03,0x06,0x06,0x02,0x04,0x02,0x04,0x06,0x06,0xfc,0x03,0xf8,0x01, -0xfe,0x07,0xfe,0x07,0x22,0x00,0x22,0x00,0x22,0x00,0x22,0x00,0x3e,0x00,0x1c,0x00,0xf8,0x01,0xfc,0x03,0x06,0x06,0x82,0x04,0x82,0x05,0x06,0x07,0xfc,0x03,0xf8,0x05,0xfe,0x07,0xfe,0x07,0x62,0x00,0x62,0x00,0xe2,0x00,0xa2,0x01,0x3e,0x07,0x1c,0x06,0x1c,0x02,0x3e,0x06,0x22,0x04,0x22,0x04,0x22,0x04,0x22,0x04,0xe6,0x07,0xc4,0x03,0x02,0x00,0x02,0x00,0x02,0x00,0xfe,0x07,0xfe,0x07,0x02,0x00,0x02,0x00,0x02,0x00,0xfe,0x01,0xfe,0x03,0x00,0x06,0x00,0x04,0x00,0x04,0x00,0x06,0xfe,0x03,0xfe,0x01,0x0e,0x00,0x7e,0x00,0xf0,0x01,0x80,0x07,0x80,0x07,0xf0,0x01,0x7e,0x00,0x0e,0x00,0xfe,0x07,0xfe,0x07,0x00,0x03,0xe0,0x01,0xe0,0x01,0x00,0x03,0xfe,0x07,0xfe,0x07,0x06,0x06,0x0e,0x07,0x98,0x01,0xf0,0x00,0xf0,0x00,0x98,0x01,0x0e,0x07,0x06,0x06,0x06,0x00,0x0e,0x00,0x18,0x00,0xf0,0x07,0xf0,0x07,0x18,0x00,0x0e,0x00,0x06,0x00,0x00,0x00,0x02,0x07,0x82,0x07,0xc2,0x04,0x62,0x04,0x32,0x04,0x1e,0x04,0x0e,0x04,0x00,0x00,0x00,0x00,0xff,0x0f,0xff,0x0f,0x01,0x08,0x01,0x08,0x01,0x08,0x00,0x00,0x02,0x00,0x0e,0x00,0x1c,0x00,0x70,0x00,0xe0,0x00,0x80,0x03,0x00,0x07,0x00,0x04,0x00,0x00,0x00,0x00,0x01,0x08,0x01,0x08,0x01,0x08,0xff,0x0f,0xff,0x0f,0x00,0x00,0x00,0x00,0x18,0x00,0x0c,0x00,0x06,0x00,0x06,0x00,0x0c,0x00,0x18,0x00,0x00,0x00,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08, -0x00,0x00,0x01,0x00,0x03,0x00,0x06,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xa0,0x07,0xb0,0x04,0x90,0x04,0x90,0x02,0xf0,0x07,0xe0,0x07,0x00,0x00,0xfe,0x07,0xfe,0x07,0x20,0x02,0x10,0x04,0x30,0x06,0xe0,0x03,0xc0,0x01,0x00,0x00,0xc0,0x01,0xe0,0x03,0x30,0x06,0x10,0x04,0x10,0x04,0x30,0x06,0x20,0x02,0x00,0x00,0xc0,0x01,0xe0,0x03,0x30,0x06,0x10,0x04,0x20,0x02,0xfe,0x07,0xfe,0x07,0x00,0x00,0xc0,0x01,0xe0,0x03,0xb0,0x06,0x90,0x04,0xb0,0x04,0xe0,0x06,0xc0,0x02,0x00,0x00,0x40,0x00,0x40,0x00,0xfc,0x07,0xfe,0x07,0x42,0x00,0x0e,0x00,0x0c,0x00,0x00,0x00,0x60,0x05,0xf0,0x0f,0x90,0x0a,0x90,0x0a,0xf0,0x0a,0x60,0x0e,0x30,0x04,0x00,0x00,0xfe,0x07,0xfe,0x07,0x20,0x00,0x10,0x00,0x30,0x00,0xe0,0x07,0xc0,0x07,0x00,0x00,0x00,0x04,0x10,0x04,0xf6,0x07,0xf6,0x07,0x00,0x04,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x0f,0x00,0x08,0x10,0x08,0x10,0x08,0xf6,0x0f,0xf6,0x07,0x00,0x00,0x00,0x00,0xfe,0x07,0xfe,0x07,0xc0,0x01,0x60,0x03,0x30,0x06,0x00,0x04,0x00,0x00,0x00,0x04,0x02,0x04,0xfe,0x07,0xfe,0x07,0x00,0x04,0x00,0x04,0x00,0x00,0x00,0x00,0xf0,0x07,0xe0,0x07,0x10,0x00,0xe0,0x07,0x10,0x00,0xf0,0x07,0xe0,0x07,0x00,0x00,0xf0,0x07,0xf0,0x07,0x20,0x00,0x10,0x00,0x30,0x00,0xe0,0x07,0xc0,0x07,0x00,0x00,0xc0,0x01,0xe0,0x03,0x30,0x06,0x10,0x04,0x30,0x06,0xe0,0x03,0xc0,0x01,0x00,0x00, -0xf0,0x0f,0xf0,0x0f,0x10,0x01,0x10,0x01,0xb0,0x01,0xe0,0x00,0xc0,0x00,0x00,0x00,0xc0,0x00,0xe0,0x00,0xb0,0x01,0x10,0x01,0x10,0x01,0xf0,0x0f,0xf0,0x0f,0x00,0x00,0x10,0x00,0xf0,0x07,0xe0,0x07,0x30,0x00,0x10,0x00,0x30,0x00,0x20,0x00,0x00,0x00,0x60,0x02,0xf0,0x06,0x90,0x04,0x90,0x04,0x90,0x04,0xb0,0x07,0x20,0x03,0x00,0x00,0x10,0x00,0x10,0x00,0xfc,0x03,0xfc,0x07,0x10,0x04,0x10,0x06,0x00,0x02,0x00,0x00,0xf0,0x01,0xf0,0x03,0x00,0x06,0x00,0x04,0x00,0x02,0xf0,0x07,0xf0,0x07,0x00,0x00,0x30,0x00,0xf0,0x00,0xc0,0x03,0x00,0x07,0xc0,0x03,0xf0,0x00,0x30,0x00,0x00,0x00,0xf0,0x03,0xf0,0x07,0x00,0x06,0xc0,0x03,0x00,0x06,0xf0,0x07,0xf0,0x03,0x00,0x00,0x10,0x04,0x30,0x06,0x60,0x03,0xc0,0x01,0x60,0x03,0x30,0x06,0x10,0x04,0x00,0x00,0xf0,0x04,0xf0,0x0c,0x00,0x09,0x00,0x09,0x80,0x0c,0xf0,0x07,0xf0,0x03,0x00,0x00,0x10,0x06,0x10,0x07,0x90,0x05,0xd0,0x04,0x70,0x04,0x30,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0xfe,0x07,0x9f,0x0f,0x01,0x08,0x01,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x07,0xfe,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x08,0x01,0x08,0x9f,0x0f,0xfe,0x07,0x60,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x64,0x02,0x68,0x01,0xf0,0x00,0x60,0x00,0x00,0x00,0x60,0x00,0xf0,0x00,0x68,0x01,0x64,0x02,0x60,0x00,0x60,0x00,0x60,0x00,0x00,0x00, +0xfc,0x03,0xfe,0x07,0x02,0x04,0x02,0x04,0xfe,0x07,0xfc,0x03,0xff,0x0f,0xff,0x0f,0x08,0x04,0x0c,0x04,0xfe,0x07,0xfe,0x07,0x00,0x04,0x00,0x04,0xff,0x0f,0xff,0x0f,0x0c,0x06,0x0e,0x07,0x82,0x05,0xe2,0x04,0x7e,0x04,0x1c,0x04,0xff,0x0f,0xff,0x0f,0x0c,0x03,0x0e,0x07,0x22,0x04,0x22,0x04,0xfe,0x07,0xdc,0x03,0xff,0x0f,0xff,0x0f,0xc0,0x01,0xe0,0x01,0x30,0x01,0xfc,0x07,0xfe,0x07,0x00,0x01,0xff,0x0f,0xff,0x0f,0x3e,0x03,0x3e,0x07,0x12,0x04,0x12,0x04,0xf2,0x07,0xe2,0x03,0xff,0x0f,0xff,0x0f,0xf8,0x03,0xfc,0x07,0x26,0x04,0x22,0x04,0xee,0x07,0xcc,0x03,0xff,0x0f,0xff,0x0f,0x0e,0x00,0x0e,0x00,0xe2,0x07,0xfa,0x07,0x1e,0x00,0x06,0x00,0xff,0x0f,0xff,0x0f,0x9c,0x03,0xfe,0x07,0x62,0x04,0x62,0x04,0xfe,0x07,0x9c,0x03,0xff,0x0f,0xff,0x0f,0x3c,0x03,0x7e,0x07,0x42,0x04,0x42,0x06,0xfe,0x03,0xfc,0x01,0xff,0x0f,0xff,0x0f,0x00,0x00,0x00,0x00,0x08,0x01,0x9c,0x03,0x9c,0x03,0x08,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x9c,0x09,0x9c,0x0f,0x88,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0xf0,0x00,0x98,0x01,0x0c,0x03,0x06,0x06,0x02,0x04,0x00,0x00,0x20,0x01,0x20,0x01,0x20,0x01,0x20,0x01,0x20,0x01,0x20,0x01,0x20,0x01,0x20,0x01,0x00,0x00,0x02,0x04,0x06,0x06,0x0c,0x03,0x98,0x01,0xf0,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x0c,0x00,0x0e,0x00,0x82,0x06,0xc2,0x06,0x62,0x00,0x3e,0x00,0x1c,0x00, +0x00,0x00,0x00,0x00,0x0c,0x00,0x1e,0x00,0x12,0x00,0x12,0x00,0x1e,0x00,0x0c,0x00,0xf0,0x07,0xf8,0x07,0x8c,0x00,0x86,0x00,0x86,0x00,0x8c,0x00,0xf8,0x07,0xf0,0x07,0xfe,0x07,0xfe,0x07,0x22,0x04,0x22,0x04,0x22,0x04,0x76,0x06,0xdc,0x03,0x88,0x01,0xf8,0x01,0xfc,0x03,0x06,0x06,0x02,0x04,0x02,0x04,0x02,0x04,0x06,0x06,0x0c,0x03,0xfe,0x07,0xfe,0x07,0x02,0x04,0x02,0x04,0x02,0x04,0x06,0x06,0xfc,0x03,0xf8,0x01,0xfe,0x07,0xfe,0x07,0x22,0x04,0x22,0x04,0x22,0x04,0x22,0x04,0x02,0x04,0xff,0x0f,0xfe,0x07,0xfe,0x07,0x22,0x00,0x22,0x00,0x22,0x00,0x22,0x00,0x02,0x00,0x02,0x00,0xf8,0x01,0xfc,0x03,0x06,0x06,0x02,0x04,0x02,0x04,0x42,0x04,0xc6,0x07,0xc4,0x03,0xfe,0x07,0xfe,0x07,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0xfe,0x07,0xfe,0x07,0x02,0x04,0x02,0x04,0xfe,0x07,0xfe,0x07,0x02,0x04,0x02,0x04,0xff,0x0f,0xff,0x0f,0x00,0x03,0x00,0x06,0x02,0x04,0x02,0x06,0xfe,0x03,0xfe,0x01,0xff,0x0f,0xff,0x0f,0xfe,0x07,0xfe,0x07,0x60,0x00,0xf0,0x00,0x98,0x01,0x0c,0x03,0x06,0x06,0x02,0x04,0xfe,0x07,0xfe,0x07,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0xff,0x0f,0xfe,0x07,0xfe,0x07,0x0c,0x00,0x78,0x00,0x78,0x00,0x0c,0x00,0xfe,0x07,0xfe,0x07,0xfe,0x07,0xfe,0x07,0x1c,0x00,0x78,0x00,0xe0,0x00,0x80,0x03,0xfe,0x07,0xfe,0x07,0xf8,0x01,0xfc,0x03,0x06,0x06,0x02,0x04,0x02,0x04,0x06,0x06,0xfc,0x03,0xf8,0x01, +0xfe,0x07,0xfe,0x07,0x22,0x00,0x22,0x00,0x22,0x00,0x22,0x00,0x3e,0x00,0x1c,0x00,0xf8,0x01,0xfc,0x03,0x06,0x06,0x82,0x04,0x82,0x05,0x06,0x07,0xfc,0x03,0xf8,0x05,0xfe,0x07,0xfe,0x07,0x62,0x00,0x62,0x00,0xe2,0x00,0xa2,0x01,0x3e,0x07,0x1c,0x06,0x1c,0x02,0x3e,0x06,0x22,0x04,0x22,0x04,0x22,0x04,0x22,0x04,0xe6,0x07,0xc4,0x03,0x02,0x00,0x02,0x00,0x02,0x00,0xfe,0x07,0xfe,0x07,0x02,0x00,0x02,0x00,0x02,0x00,0xfe,0x01,0xfe,0x03,0x00,0x06,0x00,0x04,0x00,0x04,0x00,0x06,0xfe,0x03,0xfe,0x01,0x0e,0x00,0x7e,0x00,0xf0,0x01,0x80,0x07,0x80,0x07,0xf0,0x01,0x7e,0x00,0x0e,0x00,0xfe,0x07,0xfe,0x07,0x00,0x03,0xe0,0x01,0xe0,0x01,0x00,0x03,0xfe,0x07,0xfe,0x07,0x06,0x06,0x0e,0x07,0x98,0x01,0xf0,0x00,0xf0,0x00,0x98,0x01,0x0e,0x07,0x06,0x06,0x06,0x00,0x0e,0x00,0x18,0x00,0xf0,0x07,0xf0,0x07,0x18,0x00,0x0e,0x00,0x06,0x00,0x02,0x07,0x82,0x07,0xc2,0x04,0x62,0x04,0x32,0x04,0x1e,0x04,0x0e,0x04,0xff,0x0f,0x00,0x00,0x00,0x00,0xfe,0x07,0xfe,0x07,0x02,0x04,0x02,0x04,0x02,0x04,0x00,0x00,0x02,0x00,0x0e,0x00,0x1c,0x00,0x70,0x00,0xe0,0x00,0x80,0x03,0x00,0x07,0x00,0x04,0x00,0x00,0x00,0x00,0x02,0x04,0x02,0x04,0x02,0x04,0xfe,0x07,0xfe,0x07,0x00,0x00,0x00,0x00,0x18,0x00,0x0c,0x00,0x06,0x00,0x06,0x00,0x0c,0x00,0x18,0x00,0x00,0x00,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08, +0x00,0x00,0x01,0x00,0x03,0x00,0x06,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xa0,0x07,0xb0,0x04,0x90,0x04,0x90,0x02,0xf0,0x07,0xe0,0x07,0xff,0x0f,0xfe,0x07,0xfe,0x07,0x20,0x02,0x10,0x04,0x30,0x06,0xe0,0x03,0xc0,0x01,0xff,0x0f,0xc0,0x01,0xe0,0x03,0x30,0x06,0x10,0x04,0x10,0x04,0x30,0x06,0x20,0x02,0xff,0x0f,0xc0,0x01,0xe0,0x03,0x30,0x06,0x10,0x04,0x20,0x02,0xfe,0x07,0xfe,0x07,0xff,0x0f,0xc0,0x01,0xe0,0x03,0xb0,0x06,0x90,0x04,0xb0,0x04,0xe0,0x06,0xc0,0x02,0xff,0x0f,0x40,0x00,0x40,0x00,0xfc,0x07,0xfe,0x07,0x42,0x00,0x0e,0x00,0x0c,0x00,0xff,0x0f,0x60,0x05,0xf0,0x0f,0x90,0x0a,0x90,0x0a,0xf0,0x0a,0x60,0x0e,0x30,0x04,0xff,0x0f,0xfe,0x07,0xfe,0x07,0x20,0x00,0x10,0x00,0x30,0x00,0xe0,0x07,0xc0,0x07,0xff,0x0f,0x00,0x04,0x10,0x04,0xf6,0x07,0xf6,0x07,0x00,0x04,0x00,0x04,0xff,0x0f,0xff,0x0f,0x00,0x07,0x00,0x0f,0x00,0x08,0x10,0x08,0x10,0x08,0xf6,0x0f,0xf6,0x07,0xff,0x0f,0xfe,0x07,0xfe,0x07,0xc0,0x01,0x60,0x03,0x30,0x06,0x00,0x04,0xff,0x0f,0xff,0x0f,0x00,0x04,0x02,0x04,0xfe,0x07,0xfe,0x07,0x00,0x04,0x00,0x04,0xff,0x0f,0xff,0x0f,0xf0,0x07,0xe0,0x07,0x10,0x00,0xe0,0x07,0x10,0x00,0xf0,0x07,0xe0,0x07,0xff,0x0f,0xf0,0x07,0xf0,0x07,0x20,0x00,0x10,0x00,0x30,0x00,0xe0,0x07,0xc0,0x07,0xff,0x0f,0xc0,0x01,0xe0,0x03,0x30,0x06,0x10,0x04,0x30,0x06,0xe0,0x03,0xc0,0x01,0xff,0x0f, +0xf0,0x0f,0xf0,0x0f,0x10,0x01,0x10,0x01,0xb0,0x01,0xe0,0x00,0xc0,0x00,0xff,0x0f,0xc0,0x00,0xe0,0x00,0xb0,0x01,0x10,0x01,0x10,0x01,0xf0,0x0f,0xf0,0x0f,0xff,0x0f,0x10,0x00,0xf0,0x07,0xe0,0x07,0x30,0x00,0x10,0x00,0x30,0x00,0x20,0x00,0xff,0x0f,0x60,0x02,0xf0,0x06,0x90,0x04,0x90,0x04,0x90,0x04,0xb0,0x07,0x20,0x03,0xff,0x0f,0x10,0x00,0x10,0x00,0xfc,0x03,0xfc,0x07,0x10,0x04,0x10,0x06,0x00,0x02,0xff,0x0f,0xf0,0x01,0xf0,0x03,0x00,0x06,0x00,0x04,0x00,0x02,0xf0,0x07,0xf0,0x07,0xff,0x0f,0x30,0x00,0xf0,0x00,0xc0,0x03,0x00,0x07,0xc0,0x03,0xf0,0x00,0x30,0x00,0xff,0x0f,0xf0,0x03,0xf0,0x07,0x00,0x06,0xc0,0x03,0x00,0x06,0xf0,0x07,0xf0,0x03,0xff,0x0f,0x10,0x04,0x30,0x06,0x60,0x03,0xc0,0x01,0x60,0x03,0x30,0x06,0x10,0x04,0xff,0x0f,0xf0,0x04,0xf0,0x0c,0x00,0x09,0x00,0x09,0x80,0x0c,0xf0,0x07,0xf0,0x03,0xff,0x0f,0x10,0x06,0x10,0x07,0x90,0x05,0xd0,0x04,0x70,0x04,0x30,0x04,0xff,0x0f,0xff,0x0f,0x00,0x00,0x60,0x00,0xfe,0x07,0x9f,0x0f,0x01,0x08,0x01,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x07,0xfe,0x07,0x00,0x00,0xff,0x0f,0xff,0x0f,0xff,0x0f,0x00,0x00,0x01,0x08,0x01,0x08,0x9f,0x0f,0xfe,0x07,0x60,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x64,0x02,0x68,0x01,0xf0,0x00,0x60,0x00,0xff,0x0f,0x60,0x00,0xf0,0x00,0x68,0x01,0x64,0x02,0x60,0x00,0x60,0x00,0x60,0x00,0xff,0x0f, diff --git a/radio/src/fonts/std/font_08x10.png b/radio/src/fonts/std/font_08x10.png index 7f01e370c7990e470289018da89875f4161b4d22..cb6aab0b5fa926109d5330db80c8daeee6a7c431 100644 GIT binary patch delta 782 zcmV+p1M&R-1-Ax}Hh%$POGiWihy@);00009a7bBm000XU000XU0RWnu7ytkO2XskI zMF-ss2mv4t5zYfG0008FNkl`V?RW%ZHc1b+OU=0pfs`R-i)Y1BNd_T%zv(8+GcDJ`ZPQ9+XB;6 znYt?&JvVnBzvx`s`-)&5J$a{f?iwweJJ1c7?)wjKbXv{{a)LSDnzURHXbX`(LFfXl zut&15%yuk{No~jNuw!&SCzt@9o1YJ#8`^^333Zt0Wnd^+ZepK0%v}>*;|HpBHNPcL zL2wIK5Cqs|CVvsIK4VL9#u%gY=?K^k0rMD(W1NAYvg~S0EU6( zs_6w(_5#gUTLD&m*uMT&w{Efv`seqYgV1;q{Re+#YGxdL4w2hGH-ugY^Yaum{o2x@z}c zHsXzAY{i1ekMIu?p%B_akxt6k&_kaf3<<(}2t^$KOw;lc&JY{N2%gqIQeEOuUp%TD zBn@~+2!F8`>v5V}U>yPowM!QA? zr7A?9KwFquPz2^4s=9&8gUi`82@d+-U#M3HQ!vBb;n^TzyQ=V1dv^e);F9z0L#~P) z)#e;b7XgwJgnb7bK_-$b-gGdWF-&?0ID_MiQ-9oYncySNpv`fM3*M`%o{L_ut6CIq z|Alm>8%Wl$TKxyVzQOjz)7~bh0)*e6;c$4$aVa10Y%R3+W-In delta 700 zcmV;t0z>_`2LA<+HjzUde+CN+6&Mn^MpFO)0*pySK~y-)Wzx-R8!-?EaG5>$Qph2f z1bVB%_!gr}2Gr^y`a(8tD{?Yn1C3}v57AShrEGOr7Ee-@B|w!DNGoU9~+^ji`fOrn;QVM>9=k}y?e$Z))M3LK1{MyGxo zj_+kdRZ}fQqm~=xl=9-_#&OUEK7#5H89xRl!Ivwf7Yr+4)!eilg|yGNsRnx zDO5fds3ZSD%JP5$2XxV={G-lbZ3g=QR(T&0<2UZ1MoWeXZzNLWrdo{;J1lR zc!LUDKn7vSVJwixS~^pY@Ix)h^I%%wAwG{Tggd@DOq!pqZPFOsIs+Bx3SfWx1Mu_G zgP;1Y#rMwjGI@h3i44g{QWMZ zz2XP}H3WxYG!np13ul_OKt0UQ-73Rwj{TBx<03*kGHW~6H`UQWcioQasQa-Dt8KTd iK~{Y*9fzEzkNyuRm=NwYv}3FQ0000m8G6bJC9GH^TyVQ^V81eOmsbXBS)2MFPz z8QP&}zCwV0fdjgD2p}6?IvCK?>4V!n@6vDA|M7n+}Ec=6aleyDZDr6+LzyYsl~{Nvds@ z1>6vB|AuV)ouIoe-vw+55wp3Q6{s*^Eu!OLhy?o9vlq>q54EWA63=0u% zg-6Wbhu<}ZmVYd6?~DGKpd*c;`4(M{Jz5+y4BM>Gi5L7M!!Qty+XCV6=;+~Y_p?Lw zzD{EYaSAH+C@eBqTt1#2bud1K#q`!Ux!Fc={`O(n82+#{=cAM2Pgitq2Kig1Ov9CG zavlrbp}TjGzt_sFLD_Y{jXV(nm(2=p>?)MEk|&+Vvwx$DYsfAZQ|@5U?JfM1*EYA!bH@6r4H0WHU&!?fX(fBywZy0; zD(uU5%}1*ZAvKR$`fai;2pC^0uc{RL;WdS!_7yW;$Kp1V=T<+>ij9mNKvp?{Yp^LtLXs$)sH(Lp}{~Ces}0z{aULkk8%d{(s23 zPXbzNzsA;XzQ)S>@A@nB-iK~y-)mDI6r<3W1B7T&_a7>W?irSSEc@t#&I>IX~2$g_y^MAN5#Loco(o`BuY29%E?eR1G18;5%sD+!UDo-?&2w> zP+szLyvKJ=P*{j@P#!6TU;Z!@T5>e3^YMRzi42A2Tf&S+bo5G4*k(njKH;A!g@G6v za)Osf_YztpDJYSWf4?aP{E2TNoys0!Zm`)$YGac)CKJHYZb8V+vJSeP~K`8_a3YJN^ND;tfb!&6`jZ8-l%$N zn)M!Ak8!V6-I|^HkV{`)F%AkDoiS=VE@T)nM@j>pDZ?%Ce?WE_QcoA#YqMJ{@`9V^ zy*D?Ri0E?e7s@H-ZIS_NGa)Eb((q_V`GJ^km}iMr3ZX#=l_)@EN+;m9znMglhVLSe zy{hh>B6w@lW_4*Cu2e>Kr%GX0khP~4vnz+_u~j;<2w8P!X(1hw$4Wi^#Q4^f4XFbb zs@69Mw;H}De+9`*17ob}zY~P=IhH4U5f0@zmYZ@Da9jw-g-oeOJhbGvB`zGx56ySm zj**)uqy09;04ljW>p_;hO-4TuLA>`YLq;CR*UuAdA_W(5I;G}=v5GSf%aciTjEk6H zF}-V6&IB}$f0juC<$n}#E={Xqx~xW|fZHomse&$Ae=e70lLypQQK-saDu63J5dlB8 zajaU-10(M!8qqEkhsGmMRrMZg-LG@i@9}-itKT>EcFn@q+vA7RE#u=uJ>UA=NAV-a)af1ZpuXDl4%JH?rYWo|wt*-@esk9I^|nPQKy6oUx(v61n<94uc; z!};VS^Q&`QNb&jiM!tHeHP!jPrGUH1YzEu>w?p%c7&XgZ=g~Yl5&La=6xJHfXOf8H d8G$_e{0}w_B3B;RubBV<002ovPDHLkV1ig51Ka=r diff --git a/radio/src/fonts/std/font_10x14_compressed.lbm b/radio/src/fonts/std/font_10x14_compressed.lbm index 48525daac..ac0f612da 100644 --- a/radio/src/fonts/std/font_10x14_compressed.lbm +++ b/radio/src/fonts/std/font_10x14_compressed.lbm @@ -1 +1 @@ -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x66,0x00,0x76,0x00,0x3e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x78,0x00,0x78,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0x00,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x60,0x0e,0x70,0xfc,0x3f,0xf8,0x1f,0x00,0x00,0x00,0x00,0x18,0x60,0x1c,0x60,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x78,0x1c,0x7c,0x0e,0x6e,0x06,0x67,0x86,0x63,0xce,0x61,0xfc,0x60,0x78,0x60,0x00,0x00,0x00,0x00,0x06,0x60,0x06,0x60,0x86,0x61,0x86,0x61,0x86,0x61,0xce,0x73,0xfc,0x3f,0x78,0x1e,0x00,0x00,0x00,0x00,0x80,0x07,0xc0,0x07,0xe0,0x06,0x70,0x06,0x38,0x06,0x1c,0x06,0xfe,0x7f,0xfe,0x7f,0x00,0x00,0x00,0x00,0x7e,0x18,0x7e,0x38,0x66,0x70,0x66,0x60,0x66,0x60,0xe6,0x70,0xc6,0x3f,0x86,0x1f,0x00,0x00,0x00,0x00,0xf8,0x1f,0xfc,0x3f,0x8e,0x71,0x86,0x61,0x86,0x61,0x8e,0x73,0x1c,0x3f,0x18,0x1e,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x86,0x7f,0xc6,0x7f,0xe6,0x00,0x76,0x00,0x3e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x78,0x1e,0xfc,0x3f,0xce,0x73,0x86,0x61,0x86,0x61,0xce,0x73,0xfc,0x3f,0x78,0x1e,0x00,0x00,0x00,0x00,0x78,0x00,0xfc,0x00,0xce,0x61,0x86,0x71,0x86,0x39,0xce,0x1d,0xfc,0x0f,0xf8,0x07,0x00,0x00,0x00,0x00,0x30,0x0c,0x78,0x1e,0x78,0x1e,0x30,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x7f,0xf0,0x7f,0xb8,0x01,0x9c,0x01,0x8e,0x01,0x8e,0x01,0x9c,0x01,0xb8,0x01,0xf0,0x7f,0xe0,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0xce,0x73,0xfc,0x3f,0x78,0x1e,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x0e,0x70,0x1c,0x38,0x18,0x18,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x06,0x60,0x0e,0x70,0x1c,0x38,0x38,0x1c,0xf0,0x0f,0xe0,0x07,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x06,0x00,0x06,0x00,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x86,0x61,0x86,0x61,0x86,0x61,0x8e,0x71,0x9c,0x7f,0x98,0x3f,0xfe,0x7f,0xfe,0x7f,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xfe,0x7f,0xfe,0x7f,0x00,0x00,0x00,0x00,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x38,0x00,0x70,0x00,0x60,0x06,0x60,0x06,0x70,0xfe,0x3f,0xfe,0x1f,0x06,0x00,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0x80,0x01,0xc0,0x03,0xe0,0x07,0x70,0x0e,0x38,0x1c,0x1c,0x38,0x0e,0x70,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0xfe,0x7f,0xfe,0x7f,0x1c,0x00,0x38,0x00,0xf0,0x01,0xf0,0x01,0x38,0x00,0x1c,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x70,0x00,0xe0,0x00,0xc0,0x01,0x80,0x03,0x00,0x07,0x00,0x0e,0xfe,0x7f,0xfe,0x7f,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x0e,0x70,0xfc,0x3f,0xf8,0x1f,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0xce,0x01,0xfc,0x00,0x78,0x00,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x66,0x06,0x6e,0x06,0x3c,0x0e,0x38,0xfc,0x7f,0xf8,0x67,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x07,0x86,0x0f,0x86,0x1d,0xce,0x39,0xfc,0x70,0x78,0x60,0x78,0x18,0xfc,0x38,0xce,0x71,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x8e,0x73,0x1c,0x3f,0x18,0x1e,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0xfe,0x1f,0xfe,0x3f,0x00,0x70,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x70,0xfe,0x3f,0xfe,0x1f,0xfe,0x07,0xfe,0x0f,0x00,0x1c,0x00,0x38,0x00,0x70,0x00,0x70,0x00,0x38,0x00,0x1c,0xfe,0x0f,0xfe,0x07,0xfe,0x1f,0xfe,0x3f,0x00,0x70,0x00,0x70,0x00,0x3e,0x00,0x3e,0x00,0x70,0x00,0x70,0xfe,0x3f,0xfe,0x1f,0x1e,0x78,0x3e,0x7c,0x70,0x0e,0xe0,0x07,0xc0,0x03,0xc0,0x03,0xe0,0x07,0x70,0x0e,0x3e,0x7c,0x1e,0x78,0x7e,0x00,0xfe,0x00,0xc0,0x01,0x80,0x03,0x00,0x7f,0x00,0x7f,0x80,0x03,0xc0,0x01,0xfe,0x00,0x7e,0x00,0x06,0x78,0x06,0x7c,0x06,0x6e,0x06,0x67,0x86,0x63,0xc6,0x61,0xe6,0x60,0x76,0x60,0x3e,0x60,0x1e,0x60,0x00,0x18,0x00,0x3c,0x60,0x7e,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0x66,0xc0,0x7f,0x80,0x7f,0xfe,0x7f,0xfe,0x7f,0x80,0x61,0xc0,0x61,0xe0,0x60,0x60,0x60,0x60,0x60,0xe0,0x70,0xc0,0x3f,0x80,0x1f,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x70,0x00,0x38,0x00,0x18,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x60,0x60,0xe0,0x60,0xc0,0x61,0x80,0x61,0xfe,0x7f,0xfe,0x7f,0x80,0x1f,0xc0,0x3f,0xe0,0x76,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0x66,0xc0,0x07,0x80,0x07,0x80,0x01,0x80,0x01,0xf8,0x7f,0xfc,0x7f,0x8e,0x01,0x86,0x01,0x06,0x00,0x0e,0x00,0x1c,0x00,0x18,0x00,0xe0,0x01,0xf0,0x03,0x38,0x67,0x18,0x66,0x18,0x66,0x18,0x66,0x18,0x66,0x18,0x76,0xf8,0x3f,0xf8,0x1f,0xfe,0x7f,0xfe,0x7f,0x80,0x01,0xc0,0x01,0xe0,0x00,0x60,0x00,0x60,0x00,0xe0,0x00,0xc0,0x7f,0x80,0x7f,0x00,0x00,0x00,0x00,0x60,0x60,0x60,0x60,0xe6,0x7f,0xe6,0x7f,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x38,0x00,0x70,0x00,0x60,0x60,0x60,0x60,0x70,0xe6,0x3f,0xe6,0x1f,0x00,0x00,0x00,0x00,0xfe,0x7f,0xfe,0x7f,0x00,0x06,0x00,0x0f,0x80,0x1f,0xc0,0x39,0xe0,0x70,0x60,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0x00,0xe0,0x7f,0xe0,0x7f,0x60,0x00,0xe0,0x00,0xc0,0x07,0xc0,0x07,0xe0,0x00,0xe0,0x00,0xc0,0x7f,0x80,0x7f,0xe0,0x7f,0xe0,0x7f,0x80,0x01,0xc0,0x01,0xe0,0x00,0x60,0x00,0x60,0x00,0xe0,0x00,0xc0,0x7f,0x80,0x7f,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xe0,0x70,0xc0,0x3f,0x80,0x1f,0xe0,0x7f,0xe0,0x7f,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0xe0,0x07,0xc0,0x03,0x80,0x01,0x80,0x01,0xc0,0x03,0xe0,0x07,0x60,0x06,0x60,0x06,0x60,0x06,0xc0,0x07,0x80,0x07,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x80,0x01,0xc0,0x01,0xe0,0x00,0x60,0x00,0x60,0x00,0xe0,0x00,0xc0,0x01,0x80,0x01,0x80,0x61,0xc0,0x63,0xe0,0x67,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x7e,0x00,0x3c,0x00,0x18,0x60,0x00,0x60,0x00,0xf8,0x1f,0xf8,0x3f,0x60,0x70,0x60,0x60,0x00,0x60,0x00,0x70,0x00,0x38,0x00,0x18,0xe0,0x1f,0xe0,0x3f,0x00,0x70,0x00,0x60,0x00,0x60,0x00,0x70,0x00,0x38,0x00,0x18,0xe0,0x7f,0xe0,0x7f,0xe0,0x07,0xe0,0x0f,0x00,0x1c,0x00,0x38,0x00,0x70,0x00,0x70,0x00,0x38,0x00,0x1c,0xe0,0x0f,0xe0,0x07,0xe0,0x1f,0xe0,0x3f,0x00,0x70,0x00,0x70,0x00,0x38,0x00,0x38,0x00,0x70,0x00,0x70,0xe0,0x3f,0xe0,0x1f,0x60,0x60,0xe0,0x70,0xc0,0x39,0x80,0x1f,0x00,0x0f,0x00,0x0f,0x80,0x1f,0xc0,0x39,0xe0,0x70,0x60,0x60,0xe0,0x01,0xe0,0x03,0x00,0x67,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x76,0xe0,0x3f,0xe0,0x1f,0x60,0x60,0x60,0x70,0x60,0x78,0x60,0x7c,0x60,0x6e,0x60,0x67,0xe0,0x63,0xe0,0x61,0xe0,0x60,0x60,0x60, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x66,0x00,0x76,0x00,0x3e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x78,0x00,0x78,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x60,0x0e,0x70,0xfc,0x3f,0xf8,0x1f,0xff,0xff,0xff,0xff,0x00,0x00,0x18,0x60,0x1c,0x60,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x00,0xff,0xff,0xff,0xff,0x18,0x78,0x1c,0x7c,0x0e,0x6e,0x06,0x67,0x86,0x63,0xce,0x61,0xfc,0x60,0x78,0x60,0xff,0xff,0xff,0xff,0x06,0x60,0x06,0x60,0x86,0x61,0x86,0x61,0x86,0x61,0xce,0x73,0xfc,0x3f,0x78,0x1e,0xff,0xff,0xff,0xff,0x80,0x07,0xc0,0x07,0xe0,0x06,0x70,0x06,0x38,0x06,0x1c,0x06,0xfe,0x7f,0xfe,0x7f,0xff,0xff,0xff,0xff,0x7e,0x18,0x7e,0x38,0x66,0x70,0x66,0x60,0x66,0x60,0xe6,0x70,0xc6,0x3f,0x86,0x1f,0xff,0xff,0xff,0xff,0xf8,0x1f,0xfc,0x3f,0x8e,0x71,0x86,0x61,0x86,0x61,0x8e,0x73,0x1c,0x3f,0x18,0x1e,0xff,0xff,0xff,0xff,0x06,0x00,0x06,0x00,0x86,0x7f,0xc6,0x7f,0xe6,0x00,0x76,0x00,0x3e,0x00,0x1e,0x00,0xff,0xff,0xff,0xff,0x78,0x1e,0xfc,0x3f,0xce,0x73,0x86,0x61,0x86,0x61,0xce,0x73,0xfc,0x3f,0x78,0x1e,0xff,0xff,0xff,0xff,0x78,0x00,0xfc,0x00,0xce,0x61,0x86,0x71,0x86,0x39,0xce,0x1d,0xfc,0x0f,0xf8,0x07,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x30,0x0c,0x78,0x1e,0x78,0x1e,0x30,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x7f,0xf0,0x7f,0xb8,0x01,0x9c,0x01,0x8e,0x01,0x8e,0x01,0x9c,0x01,0xb8,0x01,0xf0,0x7f,0xe0,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0xce,0x73,0xfc,0x3f,0x78,0x1e,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x0e,0x70,0x1c,0x38,0x18,0x18,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x06,0x60,0x0e,0x70,0x1c,0x38,0x38,0x1c,0xf0,0x0f,0xe0,0x07,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x06,0x00,0x06,0x00,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x86,0x61,0x86,0x61,0x86,0x61,0x8e,0x71,0x9c,0x7f,0x98,0x3f,0xfe,0x7f,0xfe,0x7f,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x18,0x00,0x38,0x00,0x70,0x00,0x60,0x06,0x60,0x06,0x70,0xfe,0x3f,0xfe,0x1f,0x06,0x00,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0x80,0x01,0xc0,0x03,0xe0,0x07,0x70,0x0e,0x38,0x1c,0x1c,0x38,0x0e,0x70,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0xfe,0x7f,0xfe,0x7f,0x1c,0x00,0x38,0x00,0xf0,0x01,0xf0,0x01,0x38,0x00,0x1c,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x70,0x00,0xe0,0x00,0xc0,0x01,0x80,0x03,0x00,0x07,0x00,0x0e,0xfe,0x7f,0xfe,0x7f,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x0e,0x70,0xfc,0x3f,0xf8,0x1f,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0xce,0x01,0xfc,0x00,0x78,0x00,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x66,0x06,0x6e,0x06,0x3c,0x0e,0x38,0xfc,0x7f,0xf8,0x67,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x07,0x86,0x0f,0x86,0x1d,0xce,0x39,0xfc,0x70,0x78,0x60,0x78,0x18,0xfc,0x38,0xce,0x71,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x8e,0x73,0x1c,0x3f,0x18,0x1e,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0xfe,0x1f,0xfe,0x3f,0x00,0x70,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x70,0xfe,0x3f,0xfe,0x1f,0xfe,0x07,0xfe,0x0f,0x00,0x1c,0x00,0x38,0x00,0x70,0x00,0x70,0x00,0x38,0x00,0x1c,0xfe,0x0f,0xfe,0x07,0xfe,0x1f,0xfe,0x3f,0x00,0x70,0x00,0x70,0x00,0x3e,0x00,0x3e,0x00,0x70,0x00,0x70,0xfe,0x3f,0xfe,0x1f,0x1e,0x78,0x3e,0x7c,0x70,0x0e,0xe0,0x07,0xc0,0x03,0xc0,0x03,0xe0,0x07,0x70,0x0e,0x3e,0x7c,0x1e,0x78,0x7e,0x00,0xfe,0x00,0xc0,0x01,0x80,0x03,0x00,0x7f,0x00,0x7f,0x80,0x03,0xc0,0x01,0xfe,0x00,0x7e,0x00,0x06,0x78,0x06,0x7c,0x06,0x6e,0x06,0x67,0x86,0x63,0xc6,0x61,0xe6,0x60,0x76,0x60,0x3e,0x60,0x1e,0x60,0x00,0x18,0x00,0x3c,0x60,0x7e,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0x66,0xc0,0x7f,0x80,0x7f,0xfe,0x7f,0xfe,0x7f,0x80,0x61,0xc0,0x61,0xe0,0x60,0x60,0x60,0x60,0x60,0xe0,0x70,0xc0,0x3f,0x80,0x1f,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x70,0x00,0x38,0x00,0x18,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x60,0x60,0xe0,0x60,0xc0,0x61,0x80,0x61,0xfe,0x7f,0xfe,0x7f,0x80,0x1f,0xc0,0x3f,0xe0,0x76,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0x66,0xc0,0x07,0x80,0x07,0x80,0x01,0x80,0x01,0xf8,0x7f,0xfc,0x7f,0x8e,0x01,0x86,0x01,0x06,0x00,0x0e,0x00,0x1c,0x00,0x18,0x00,0xe0,0x01,0xf0,0x03,0x38,0x67,0x18,0x66,0x18,0x66,0x18,0x66,0x18,0x66,0x18,0x76,0xf8,0x3f,0xf8,0x1f,0xfe,0x7f,0xfe,0x7f,0x80,0x01,0xc0,0x01,0xe0,0x00,0x60,0x00,0x60,0x00,0xe0,0x00,0xc0,0x7f,0x80,0x7f,0x60,0x60,0x60,0x60,0xe6,0x7f,0xe6,0x7f,0x00,0x60,0x00,0x60,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x18,0x00,0x38,0x00,0x70,0x00,0x60,0x60,0x60,0x60,0x70,0xe6,0x3f,0xe6,0x1f,0xff,0xff,0xff,0xff,0xfe,0x7f,0xfe,0x7f,0x00,0x06,0x00,0x0f,0x80,0x1f,0xc0,0x39,0xe0,0x70,0x60,0x60,0xff,0xff,0xff,0xff,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0x7f,0xe0,0x7f,0x60,0x00,0xe0,0x00,0xc0,0x07,0xc0,0x07,0xe0,0x00,0xe0,0x00,0xc0,0x7f,0x80,0x7f,0xe0,0x7f,0xe0,0x7f,0x80,0x01,0xc0,0x01,0xe0,0x00,0x60,0x00,0x60,0x00,0xe0,0x00,0xc0,0x7f,0x80,0x7f,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xe0,0x70,0xc0,0x3f,0x80,0x1f,0xe0,0x7f,0xe0,0x7f,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0xe0,0x07,0xc0,0x03,0x80,0x01,0x80,0x01,0xc0,0x03,0xe0,0x07,0x60,0x06,0x60,0x06,0x60,0x06,0xc0,0x07,0x80,0x07,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x80,0x01,0xc0,0x01,0xe0,0x00,0x60,0x00,0x60,0x00,0xe0,0x00,0xc0,0x01,0x80,0x01,0x80,0x61,0xc0,0x63,0xe0,0x67,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x7e,0x00,0x3c,0x00,0x18,0x60,0x00,0x60,0x00,0xf8,0x1f,0xf8,0x3f,0x60,0x70,0x60,0x60,0x00,0x60,0x00,0x70,0x00,0x38,0x00,0x18,0xe0,0x1f,0xe0,0x3f,0x00,0x70,0x00,0x60,0x00,0x60,0x00,0x70,0x00,0x38,0x00,0x18,0xe0,0x7f,0xe0,0x7f,0xe0,0x07,0xe0,0x0f,0x00,0x1c,0x00,0x38,0x00,0x70,0x00,0x70,0x00,0x38,0x00,0x1c,0xe0,0x0f,0xe0,0x07,0xe0,0x1f,0xe0,0x3f,0x00,0x70,0x00,0x70,0x00,0x38,0x00,0x38,0x00,0x70,0x00,0x70,0xe0,0x3f,0xe0,0x1f,0x60,0x60,0xe0,0x70,0xc0,0x39,0x80,0x1f,0x00,0x0f,0x00,0x0f,0x80,0x1f,0xc0,0x39,0xe0,0x70,0x60,0x60,0xe0,0x01,0xe0,0x03,0x00,0x67,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x76,0xe0,0x3f,0xe0,0x1f,0x60,0x60,0x60,0x70,0x60,0x78,0x60,0x7c,0x60,0x6e,0x60,0x67,0xe0,0x63,0xe0,0x61,0xe0,0x60,0x60,0x60, diff --git a/radio/src/fonts/std/font_10x14_compressed.png b/radio/src/fonts/std/font_10x14_compressed.png index 07e890ee2abdf616a6d30fa825eba2d9ee95e4ac..5b01d7f8a09da3aca8dc5042d9ac3d335bad2327 100644 GIT binary patch delta 1421 zcmV;81#_j-W5Ua#xAu1o4}J(u%b zNshn&m$FAmN#OyC2Q0iV94hh1=g9*R8H7@K?f=?=*uLK@kKI16{-S`VXA`L(TDzcj z)9OzWw0wj-r{YCprRC#QBtn!?-pR*Uj-uk?Fsjc7I-rjtKj`Ipc zOPKOLIXE2wBm$h8@>u0Z^_N*5yWYDpJc0G-U8!7lK&q`HqyDI%Hp^ET`eXS^RCy)O zoR>;UO8(??A_%lBg@vU=%ez}C_UhHNL1H94?UQseDo>+l%__VH;(zTs8h!Uzt)6~< z|3~WeG7U)kBn!`?L=I8kS*XOL>`KY-!)9ezZLFIfPkiLHsUg)ao1kt@nR4&|2EJ(j@CC zi@`8@^vCj-sPa~|eSg&0ctTJ!!pjQkN=okK^TbXgtG%en1ZASEIXxLnSVr*k+qQ^+ zev~5^QSYuy1S>eb^R=G;-7$>N+Tfqzh@i_OSJgX<|l#4f?9 z))%4!^b7{@1XipK7?Jb}jSejSWyy*6;I_73R=aD)*KB`d*46qI+rF$Ea%~-+^Ax+q zK#~3X%yQ!0f&hs*xa)6^jnf8dBSz1%a_I$wqg=Y*m7A7fL~PACd=|+Fdr$paSCq5B zjUAk7ChAeHCVvx$EdGKl#zx~~H{9zn-;%vF%pkfr_2$H*sYu!!d<{-B{h685ioVBU z(9zvPkA0ar=?_FK9C&*$LOQOLrIzVUpuq7w^ zRC{@YQ;W?c{af;hqjr24e!)I#F=Nr%_JM8R?1lB|^M9jvN5$e_AMZfw8RHZqS(r}^ z;~6oTvz$Z21R+}>TEIvBEhA@?bwEz5$EbTytt;kCJu>XdzHbs`IwU_`1s^TtDs71`NtsPB-h;0!FUt zE+Fi<3JuCLC`tI_sCB4iVzw8__^mYx)B37FV z8acUU9BN|D53}%K_Kr$+@Wi%6t~%zqsfO}x{4=bbsIrLty!jfgdXGW#)8 zf5@bhk(H+Z zn13B_c|G7_eKXqgRV6Dc=K*5ojRnk=ykuX*9uc{q+MHWtj3VQXX%8(+IV!`VcWoXs zLx0+P8W}il^*L?6C<{9@c!=IMk%b4+;wOsuSpg3`@ruPRtUFzM{bb^S^gepWJnBPl zwu5=fi8vv@V?Lpp%9dDMr zMAfI}$A2p2tmCxmZM8kIw&&H8*7n)&dh3k+US$u8o=xv3IH%12JoQ->wATsp^iMs1 zs&?6W&~HcesvT0cjg0mq`kg7GiuqH?OH_SD&$CBGMMeKgB zmOfh6pLhNu<;7E9@3-g({w!iosLCGY%)7VzNUs#xn; z-&y-;eWP+nWa+5HTTUZ8&*=Ypzeg)rOaE3fvYxsW5k}AaspKW9zEyc2wKksM%$(`T za)0KEirTb4b>LQPS(MR7oVO_Fc&6d(_2YX^A{_ZMj9^5&SB*fZSr`M?;WrAjzzD$6%*T=2lQko8$&+ohq`~G6P2f6 z(r+6<&5kNCVXG8$+5EVN*j0n7f znFEV_S+MZxy9N;$V`hELmN#WvN4Zk-SA`*G+wk0{xSH=1Ilg_C5MR{^ud~VfEW8C86?NjHkPG!4 ziy52N;~3QZ&E8nw-7b1hR4nqfdw&;Fj~RDkk|pxVL_8ymx+Ma|+|EY@6WJAduq_#w zQ5E)gR6YvJquMcN&ZB~_>b#L?q{EukW0qcHOze?);JTItK~ymB`bi} zp-|saUTxf#2=C0uUp5a~5r9z!f)*xg<~%7dVrX^^%jT8Ef<_wGj7v>QyD&>1%sx@c zcAnJy@Sdo!cNMJqKzX9V_n5&6PF9ShM!sTZF=EIOaP&)DEJo}o3+NG~_j1gPO=!mJg4vttY<)0W53Hz9XYmE$ zn_3@u^OdvC>Ff1+Z68u&sExSy4S8nqSn}+#SR<=aZtYwmZjM`Db$>z}1& z?@)e4yd|zU7G~e3XUnLgSE~GZNEGn9Oa?#LC?&ftRXH4)`p|W$ei2IVs?>LPt=Gii(Pgii(PgiX!O;%W^RY!D19400000NkvXXu0mjfb@9@9 diff --git a/radio/src/fonts/std/font_cz_04x06.lbm b/radio/src/fonts/std/font_cz_04x06.lbm index 450f6b219..3795482ef 100644 --- a/radio/src/fonts/std/font_cz_04x06.lbm +++ b/radio/src/fonts/std/font_cz_04x06.lbm @@ -1 +1 @@ -0x18,0x24,0x16,0x3d,0x00,0x18,0x24,0x25,0x02,0x01,0x18,0x34,0x2c,0x0a,0x01,0x18,0x34,0x2d,0x0a,0x01,0x00,0x24,0x3c,0x22,0x01,0x18,0x24,0x24,0x1a,0x01,0x3c,0x04,0x05,0x0a,0x01,0x28,0x2d,0x36,0x15,0x00,0x1c,0x20,0x22,0x3d,0x00,0x1c,0x21,0x21,0x3c,0x00,0x0c,0x50,0x22,0x1d,0x00,0x38,0x14,0x14,0x3a,0x01,0x00,0x24,0x3e,0x25,0x00,0x3c,0x15,0x16,0x2d,0x00,0x00,0x0c,0x32,0x0d,0x00,0x24,0x35,0x2e,0x25,0x00,0x3e,0x2a,0x2a,0x22,0x01, +0x18,0x24,0x16,0x3d,0x7f,0x18,0x24,0x25,0x02,0x01,0x18,0x34,0x2c,0x0a,0x01,0x18,0x34,0x2d,0x0a,0x01,0x24,0x3c,0x22,0x01,0x7f,0x18,0x24,0x24,0x1a,0x01,0x3c,0x04,0x05,0x0a,0x01,0x28,0x2d,0x36,0x15,0x7f,0x1c,0x20,0x22,0x3d,0x7f,0x1c,0x21,0x21,0x3c,0x7f,0x0c,0x50,0x22,0x1d,0x7f,0x38,0x14,0x14,0x3a,0x01,0x00,0x24,0x3e,0x25,0x7f,0x3c,0x15,0x16,0x2d,0x7f,0x00,0x0c,0x32,0x0d,0x7f,0x24,0x35,0x2e,0x25,0x7f,0x3e,0x2a,0x2a,0x22,0x01, diff --git a/radio/src/fonts/std/font_cz_04x06.png b/radio/src/fonts/std/font_cz_04x06.png index d43f5b05ce108ef439e7894d704d6d011abd2ba4..dcb80e1a7e4e0e81e8fa85de8c97554e25ad19bd 100644 GIT binary patch delta 136 zcmV;30C)e~0p9_TUw;e)3K};p;ROW%003V}L_t&t*8x-jtN#Gzy{>yy&U-cZV<;U9R(JrU=P^y< qgf!SQKnMW$|Nnpf_pSeX-uTJYDW0xHI7dj~b delta 132 zcmV-~0DJ%60o(zQUwsA=6%HD1D0+$j003M`L_t&t*JF6McYSr}o8RxQZ~eebN_ mr|ib|L=J}kVDKJ@e*geXzcYDhh`k{I0000b@02PqL7! zVewo6)&mT47(U;5WpTcE&MV71m1`K94{%w2EMCCHX19xT4MXv~UzY!pZC;s|Rm@>% vNfvN@IAzfT>jZWyhX4Qn)&B<(|Nd{gEo8Q=`$1|x(0&F_S3j3^P6U-C>zTd`h z@B7~O)%VJQ#CMBeY+hy^89Q6)IOQb>;f3^~e=U z=hdf3If3^N=ZrN5Qes~DHY1`Hdu;?Ec%S`(r%6iC2r*-%uSPK<12{6Kn|?KdTqF}9 z5p~lLcPo=bf-!`UeZ*~RR#1pwNhu8+=Y5~7>z~YDpU1gA?Sp`s1kPwn00000NkvXX Hu0mjf&`wfG diff --git a/radio/src/fonts/std/font_cz_10x14.lbm b/radio/src/fonts/std/font_cz_10x14.lbm index 2e96bc3f2..0296523b6 100644 --- a/radio/src/fonts/std/font_cz_10x14.lbm +++ b/radio/src/fonts/std/font_cz_10x14.lbm @@ -1 +1 @@ -0x00,0x18,0x00,0x3c,0x60,0x7e,0x60,0x66,0x68,0x66,0x6c,0x66,0x67,0x66,0xe3,0x66,0xc1,0x7f,0x80,0x7f,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x67,0x60,0x6f,0x60,0x6c,0x60,0x66,0x60,0x63,0x70,0x01,0x38,0x00,0x18,0x80,0x1f,0xc0,0x3f,0xe0,0x76,0x60,0x66,0x68,0x66,0x6c,0x66,0x67,0x66,0xe3,0x66,0xc1,0x07,0x80,0x07,0x80,0x1f,0xc0,0x3f,0xe0,0x76,0x67,0x66,0x6f,0x66,0x6c,0x66,0x66,0x66,0xe3,0x66,0xc1,0x07,0x80,0x07,0x00,0x00,0x00,0x00,0x60,0x60,0x60,0x60,0xe8,0x7f,0xec,0x7f,0x07,0x60,0x03,0x60,0x01,0x00,0x00,0x00,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x68,0x60,0x6c,0x60,0x67,0x60,0xe3,0x70,0xc1,0x3f,0x80,0x1f,0xe0,0x7f,0xe0,0x7f,0x80,0x01,0xc7,0x01,0xef,0x00,0x6c,0x00,0x66,0x00,0xe3,0x00,0xc1,0x01,0x80,0x01,0x80,0x61,0xc0,0x63,0xe0,0x67,0x67,0x66,0x6f,0x66,0x6c,0x66,0x66,0x66,0x63,0x7e,0x01,0x3c,0x00,0x18,0xe0,0x1f,0xe0,0x3f,0x00,0x70,0x00,0x60,0x08,0x60,0x0c,0x70,0x07,0x38,0x03,0x18,0xe1,0x7f,0xe0,0x7f,0xe0,0x1f,0xe0,0x3f,0x00,0x70,0x06,0x60,0x09,0x60,0x09,0x70,0x0f,0x38,0x06,0x18,0xe0,0x7f,0xe0,0x7f,0xe0,0x01,0xe0,0x03,0x00,0x67,0x00,0x66,0x08,0x66,0x0c,0x66,0x07,0x66,0x03,0x76,0xe1,0x3f,0xe0,0x1f,0x80,0x7f,0xc0,0x7f,0xe0,0x06,0x70,0x06,0x38,0x06,0x38,0x06,0x74,0x06,0xe7,0x06,0xc3,0x7f,0x81,0x7f,0x00,0x00,0x00,0x00,0x18,0x60,0x18,0x60,0xfc,0x7f,0xff,0x7f,0x1b,0x60,0x19,0x60,0x00,0x00,0x00,0x00,0xf8,0x7f,0xf8,0x7f,0x18,0x03,0x17,0x03,0x0f,0x07,0x0c,0x0f,0x16,0x1f,0xbb,0x3b,0xf1,0x71,0xe0,0x60,0xf8,0x00,0xf8,0x01,0x80,0x03,0x00,0x07,0x00,0x7e,0x04,0x7e,0x07,0x07,0x83,0x03,0xf9,0x01,0xf8,0x00,0x18,0x70,0x18,0x70,0x18,0x78,0x17,0x7c,0x0f,0x6e,0x0c,0x67,0x96,0x63,0xdb,0x61,0xf9,0x60,0x78,0x60,0xf8,0x7f,0xf8,0x7f,0x18,0x63,0x18,0x63,0x1c,0x63,0x1f,0x63,0x1b,0x63,0x19,0x63,0x18,0x60,0x18,0x60, +0x00,0x18,0x00,0x3c,0x60,0x7e,0x60,0x66,0x68,0x66,0x6c,0x66,0x67,0x66,0xe3,0x66,0xc1,0x7f,0x80,0x7f,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x67,0x60,0x6f,0x60,0x6c,0x60,0x66,0x60,0x63,0x70,0x01,0x38,0x00,0x18,0x80,0x1f,0xc0,0x3f,0xe0,0x76,0x60,0x66,0x68,0x66,0x6c,0x66,0x67,0x66,0xe3,0x66,0xc1,0x07,0x80,0x07,0x80,0x1f,0xc0,0x3f,0xe0,0x76,0x67,0x66,0x6f,0x66,0x6c,0x66,0x66,0x66,0xe3,0x66,0xc1,0x07,0x80,0x07,0x60,0x60,0x60,0x60,0xe8,0x7f,0xec,0x7f,0x07,0x60,0x03,0x60,0x01,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x68,0x60,0x6c,0x60,0x67,0x60,0xe3,0x70,0xc1,0x3f,0x80,0x1f,0xe0,0x7f,0xe0,0x7f,0x80,0x01,0xc7,0x01,0xef,0x00,0x6c,0x00,0x66,0x00,0xe3,0x00,0xc1,0x01,0x80,0x01,0x80,0x61,0xc0,0x63,0xe0,0x67,0x67,0x66,0x6f,0x66,0x6c,0x66,0x66,0x66,0x63,0x7e,0x01,0x3c,0x00,0x18,0xe0,0x1f,0xe0,0x3f,0x00,0x70,0x00,0x60,0x08,0x60,0x0c,0x70,0x07,0x38,0x03,0x18,0xe1,0x7f,0xe0,0x7f,0xe0,0x1f,0xe0,0x3f,0x00,0x70,0x06,0x60,0x09,0x60,0x09,0x70,0x0f,0x38,0x06,0x18,0xe0,0x7f,0xe0,0x7f,0xe0,0x01,0xe0,0x03,0x00,0x67,0x00,0x66,0x08,0x66,0x0c,0x66,0x07,0x66,0x03,0x76,0xe1,0x3f,0xe0,0x1f,0x80,0x7f,0xc0,0x7f,0xe0,0x06,0x70,0x06,0x38,0x06,0x38,0x06,0x74,0x06,0xe7,0x06,0xc3,0x7f,0x81,0x7f,0x18,0x60,0x18,0x60,0xfc,0x7f,0xff,0x7f,0x1b,0x60,0x19,0x60,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf8,0x7f,0xf8,0x7f,0x18,0x03,0x17,0x03,0x0f,0x07,0x0c,0x0f,0x16,0x1f,0xbb,0x3b,0xf1,0x71,0xe0,0x60,0xf8,0x00,0xf8,0x01,0x80,0x03,0x00,0x07,0x00,0x7e,0x04,0x7e,0x07,0x07,0x83,0x03,0xf9,0x01,0xf8,0x00,0x18,0x70,0x18,0x70,0x18,0x78,0x17,0x7c,0x0f,0x6e,0x0c,0x67,0x96,0x63,0xdb,0x61,0xf9,0x60,0x78,0x60,0xf8,0x7f,0xf8,0x7f,0x18,0x63,0x18,0x63,0x1c,0x63,0x1f,0x63,0x1b,0x63,0x19,0x63,0x18,0x60,0x18,0x60, diff --git a/radio/src/fonts/std/font_cz_10x14.png b/radio/src/fonts/std/font_cz_10x14.png index bc97e13bef4977ff4b280648f909a5ff7faacfbe..6c63ac78661e224595f8dc63064ca141c2601b63 100644 GIT binary patch delta 337 zcmV-X0j~a<1E&L!Uw;e)3JnyB1@Pej00AdSL_t&-(^b#0Y63wJ2H?>XuaO&wjaBX* z;ew6A;j}3Nc?G+?f`Q;E7M2!PRz5^tV8a!cV!3+-!H{}&n>!rb%$YQqV%Yy%_+fxw z_xaAy{mYKu(!4s1B~}W!rgD3x$@7*kRMuZ(iM4{dO84vU$$vat*B9DbJ(6e@Sawtv zi7d-0mC$)Nj{xABxsv;xHF$j!3oDbL7sNyK2s7(xTv;XsYC7t+g6OW>@cBW@UnP9? zPls9IFQ%!mnQ2@ePr?qZ;R2Nr{xGazkRL%x&;S&eU8Up`KtqDL@ZyhMi%<*q=HW(4 zLd@7TTqTH75=sz-4f{(@3xDORK^G6KF-%B!5e)*b9rd}jjGj6SxJjTnCzf;C@sPbN j);;0!#{Z9Ze0!-MP~f$kTkQ!700000NkvXXu0mjf->{rl delta 324 zcmV-K0lWUE1DXSnUw;M?6)`1%kbR2)00A0FL_t&-({0bOYQr!P24EQ%XDJmli>Eq| z;F6_-sn!mKzCyOXLJB3e$>1?Vrc8c_zQ7d~+`&|@V8{z7y+tBN)N{#F=ndlT1O3Md zdTF~Il{e2jdM!KWJdX|pd1bZ~?w_`FRL1*p^dP(|+s2<(S%2e?szn?}1c4NkIX|T` z@bP9Jgb?9RHK3<9X9ioySlhXbmDCucStBVBu((SiJzOUvf8V0f=$KEF!?47zT9nLo ziKgBkn1e)1XuvYRa|da+7aSt35d8JTA)nkqAv@;k%pp>;=dNF68xF~&rZBQAq~wq< zrLvJHHI>+{gFQoq*{do w1GB_2AUjFom|_D%s;Xw71H<>d?<)@g01<5tNoCgbO#lD@07*qoM6N<$f)fxS`Tzg` delta 91 zcmV-h0Hpu20kZ*+UsMJc7YYTl7M3Rf001*dL_t&t*JH?y4*QqDF#q}gtqT}(qRsv! xFmOj*1G2NCt}R`_kehCKHG$#(|Nnm<005vV6+3sv^4b6Z002ovPDHLkV1j0bC0GCe diff --git a/radio/src/fonts/std/font_de_08x10.lbm b/radio/src/fonts/std/font_de_08x10.lbm index 91e1ae1e4..9ad2bbb36 100644 --- a/radio/src/fonts/std/font_de_08x10.lbm +++ b/radio/src/fonts/std/font_de_08x10.lbm @@ -1 +1 @@ -0xe0,0x07,0xf6,0x07,0x96,0x00,0x88,0x00,0x88,0x00,0x96,0x00,0xf6,0x07,0xe0,0x07,0x00,0x03,0xa0,0x07,0xb6,0x04,0x96,0x04,0x90,0x02,0xf6,0x07,0xe6,0x07,0x00,0x00,0xe0,0x01,0xf6,0x03,0x16,0x06,0x08,0x04,0x08,0x04,0x16,0x06,0xf6,0x03,0xe0,0x01,0xc0,0x01,0xe6,0x03,0x36,0x06,0x10,0x04,0x36,0x06,0xe6,0x03,0xc0,0x01,0x00,0x00,0xf8,0x01,0xfb,0x03,0x03,0x06,0x00,0x04,0x03,0x04,0x03,0x06,0xf8,0x03,0xf8,0x01,0xf0,0x01,0xf6,0x03,0x06,0x06,0x00,0x04,0x06,0x02,0xf6,0x07,0xf0,0x07,0x00,0x00,0xf0,0x07,0xf8,0x07,0x8c,0x00,0x86,0x00,0x86,0x00,0x8c,0x00,0xf8,0x07,0xf0,0x07, +0xe0,0x07,0xf6,0x07,0x96,0x00,0x88,0x00,0x88,0x00,0x96,0x00,0xf6,0x07,0xe0,0x07,0x00,0x03,0xa0,0x07,0xb6,0x04,0x96,0x04,0x90,0x02,0xf6,0x07,0xe6,0x07,0xff,0x0f,0xe0,0x01,0xf6,0x03,0x16,0x06,0x08,0x04,0x08,0x04,0x16,0x06,0xf6,0x03,0xe0,0x01,0xc0,0x01,0xe6,0x03,0x36,0x06,0x10,0x04,0x36,0x06,0xe6,0x03,0xc0,0x01,0xff,0x0f,0xf8,0x01,0xfb,0x03,0x03,0x06,0x00,0x04,0x03,0x04,0x03,0x06,0xf8,0x03,0xf8,0x01,0xf0,0x01,0xf6,0x03,0x06,0x06,0x00,0x04,0x06,0x02,0xf6,0x07,0xf0,0x07,0xff,0x0f,0xf0,0x07,0xf8,0x07,0x8c,0x00,0x86,0x00,0x86,0x00,0x8c,0x00,0xf8,0x07,0xf0,0x07, diff --git a/radio/src/fonts/std/font_de_08x10.png b/radio/src/fonts/std/font_de_08x10.png index 6cc400f77090fa5bc9a96009bfaaf41e36cdeb0a..35962a5ae20fecf11118fbde490f01389d39d128 100644 GIT binary patch delta 121 zcmV-<0EYj{0nq`FUvdls6$}RI3Tzwz002=*L_t&t*B#8U4Ztu61i&9DWeSE%nKHsn zew`p$-oz`of`Ener~d+khc^#!P@B$esA2kaae^PaoC0}8w<|NnRRX)!eo*E0c)tI00000NkvXXu0mjf+DI@S delta 114 zcmV-&0FD3A0m=c8Uuy;u4J9%^*xk_p002r!L_t&t*CoiY4ZuJQ0zg(u8Oh6~Oc_xz zkBiq&@-w6&eush+z!loi6v@?^iRI<6pwx&n5DK<$b%|>W^xFR+>M8FWIRpOl0c_MR U-j0Hbu>b%707*qoM6N<$f@m8sjsO4v diff --git a/radio/src/fonts/std/font_de_10x14.lbm b/radio/src/fonts/std/font_de_10x14.lbm index ed3d1da5f..dd114326a 100644 --- a/radio/src/fonts/std/font_de_10x14.lbm +++ b/radio/src/fonts/std/font_de_10x14.lbm @@ -1 +1 @@ -0x80,0x7f,0xc2,0x7f,0xe2,0x06,0x70,0x06,0x38,0x06,0x38,0x06,0x70,0x06,0xe2,0x06,0xc2,0x7f,0x80,0x7f,0x00,0x18,0x06,0x3c,0x66,0x7e,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe6,0x66,0xc6,0x7f,0x80,0x7f,0xe0,0x1f,0xf2,0x3f,0x3a,0x70,0x18,0x60,0x18,0x60,0x18,0x60,0x18,0x60,0x3a,0x70,0xf2,0x3f,0xe0,0x1f,0x80,0x1f,0xc6,0x3f,0xe6,0x70,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xe6,0x70,0xc6,0x3f,0x80,0x1f,0xf8,0x1f,0xfa,0x3f,0x02,0x70,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x02,0x70,0xfa,0x3f,0xf8,0x1f,0xe0,0x1f,0xe6,0x3f,0x06,0x70,0x00,0x60,0x00,0x60,0x00,0x70,0x00,0x38,0x06,0x18,0xe6,0x7f,0xe0,0x7f,0xf8,0x7f,0xfc,0x7f,0x0e,0x00,0x06,0x00,0x66,0x30,0x6e,0x30,0xfc,0x38,0xd8,0x1f,0x00,0x0f,0x00,0x00, +0x80,0x7f,0xc2,0x7f,0xe2,0x06,0x70,0x06,0x38,0x06,0x38,0x06,0x70,0x06,0xe2,0x06,0xc2,0x7f,0x80,0x7f,0x00,0x18,0x06,0x3c,0x66,0x7e,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe6,0x66,0xc6,0x7f,0x80,0x7f,0xe0,0x1f,0xf2,0x3f,0x3a,0x70,0x18,0x60,0x18,0x60,0x18,0x60,0x18,0x60,0x3a,0x70,0xf2,0x3f,0xe0,0x1f,0x80,0x1f,0xc6,0x3f,0xe6,0x70,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xe6,0x70,0xc6,0x3f,0x80,0x1f,0xf8,0x1f,0xfa,0x3f,0x02,0x70,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x02,0x70,0xfa,0x3f,0xf8,0x1f,0xe0,0x1f,0xe6,0x3f,0x06,0x70,0x00,0x60,0x00,0x60,0x00,0x70,0x00,0x38,0x06,0x18,0xe6,0x7f,0xe0,0x7f,0xf8,0x7f,0xfc,0x7f,0x0e,0x00,0x06,0x00,0x66,0x30,0x6e,0x30,0xfc,0x38,0xd8,0x1f,0x00,0x0f,0xff,0xff, diff --git a/radio/src/fonts/std/font_de_10x14.png b/radio/src/fonts/std/font_de_10x14.png index 22ae54efc382d99120bb2c4f73afbf8e1609f71f..f32214fed872b9643b0c09922243a4f6c1e6e99f 100644 GIT binary patch delta 220 zcmV<203-kY0g3{UHh%$POGiWihy@);00009a7bBm000XU000XU0RWnu7ytkO2XskI zMF-ss1PTrawJHB?0001rNkl3O_J=?G z0kR%2Fc>hySPC$fJv&&I`2di0@Ii$f8#4!ky#fatV?%AvJFR0000R ly#WtD^MMbC|1iK^1ps^HP9mk+I*P7MG6 diff --git a/radio/src/fonts/std/font_es_04x06.lbm b/radio/src/fonts/std/font_es_04x06.lbm index 9c8fdb698..dbf678113 100644 --- a/radio/src/fonts/std/font_es_04x06.lbm +++ b/radio/src/fonts/std/font_es_04x06.lbm @@ -1 +1 @@ -0x3e,0x09,0x12,0x3d,0x00,0x3a,0x11,0x0a,0x39,0x00, +0x3e,0x09,0x12,0x3d,0x7f,0x3a,0x11,0x0a,0x39,0x7f, diff --git a/radio/src/fonts/std/font_es_04x06.png b/radio/src/fonts/std/font_es_04x06.png index ee36412ee4bd69d18d365d53bfc8c89b24b5dca8..2c5db9a63327667338254a8c08af137930e4f6cb 100644 GIT binary patch delta 110 zcmbQhIG1sPSvq5qx4R2N2dk_H0|NtRfk$L90|U1(2s1Lwnj--eWH0gbb!ETH!z^Mh zp<8;T04OBu>Eal|aXmTW)B%Aj2PWJ*u;9pn2PY0pICJ2`UPcDJ43;_U<@NzUg$$mq KelF{r5}E)--XZb; delta 72 zcmbQsIDv73*+gddsjv*Y^lOtXq5GZX>{Lj!ljk$R_v-39Q c!~dBXoC4UURHX@J0u?fNy85}Sb4q9e021#OKmY&$ diff --git a/radio/src/fonts/std/font_es_08x10.lbm b/radio/src/fonts/std/font_es_08x10.lbm index f3bb8184c..57a5a829c 100644 --- a/radio/src/fonts/std/font_es_08x10.lbm +++ b/radio/src/fonts/std/font_es_08x10.lbm @@ -1 +1 @@ -0xf0,0x07,0xf4,0x07,0x66,0x00,0xc2,0x00,0x86,0x01,0x04,0x07,0xf6,0x07,0xf2,0x07,0xf4,0x07,0xf6,0x07,0x22,0x00,0x16,0x00,0x34,0x00,0xe6,0x07,0xc2,0x07,0x00,0x00, +0xf0,0x07,0xf4,0x07,0x66,0x00,0xc2,0x00,0x86,0x01,0x04,0x07,0xf6,0x07,0xf2,0x07,0xf4,0x07,0xf6,0x07,0x22,0x00,0x16,0x00,0x34,0x00,0xe6,0x07,0xc2,0x07,0xff,0x0f, diff --git a/radio/src/fonts/std/font_es_08x10.png b/radio/src/fonts/std/font_es_08x10.png index c05c1f406c7ff6e9caac538192c7fadced002c91..783dc7c8456b0412cf53c2921249e314a0a8d6d6 100644 GIT binary patch delta 80 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 delta 2809 zcmVf59&gh zTmgWD0l;*TI7e|ZE3OddDgXd@nX){&BsoQaTL>+22Uk}v z9w^R97b_GtVFF>AKrX_0nHe&HG!NkO%m4tOkrff(gY*4(&VLTB&dxTDwhmt{>c0m6 zB4T3W{^ifBa6kY6;dFk{{wy!E8h|?nfNlPwCGG@hUJIag_lst-4?wj5py}FI^Kkfn zJUm6Akh$5}<>chpO2k52Vaiv1{%68pz*qfj`F=e7_x0eu;v|7GU4cgg_~63K^h~83 z&yop*V%+ABM}Pdc3;+Bb(;~!4V!2o<6ys46agIcqjPo+3B8fthDa9qy|77CdEc*jK z-!%ZRYCZvbku9iQV*~a}ClFY4z~c7+0P?$U!PF=S1Au6Q;m>#f??3%Vpd|o+W=WE9 z003S@Bra6Svp>fO002awfhw>;8}z{#EWidF!3EsG3xE7zHiSYX#KJ-lLJDMn9CBbO ztb#%)hRv`YDqt_vKpix|QD}yfa1JiQRk#j4a1Z)n2%fLC6RbVIkUx0b+_+ zBaR3cnT7Zv!AJxWizFb)h!jyGOOZ85F;a?DAXP{m@;!0_Ifqlp|(=5QHQ7#Gr)$3XMd?XsE4X&sBct1q<&fbi3VB2Ov6t@q*0); zU*o*SAPZv|vv@2aYYnT0b%8a+Cb7-ge0D0knEf5Qi#@8Tp*ce{N;6lpQuCB%KL_KO zarm5cP6_8IrP_yNQcbz0DW*G2J50yT%*~?B)|oY% zJu%lZ=bPu7*PGwBU|M)uEVih&xMfMQuC{HqePL%}7iYJ{uEXw=y_0>qeSeMpJqHbk z*$%56S{;6Kv~mM9!g3B(KJ}#RZ#@)!hR=4N)wtYw9={>5&Kw=W)*2gz%* zkgNq+Eef_mrsz~!DAy_nvS(#iX1~pe$~l&+o-57m%(KedkbgIv@1Ote62cPUlD4IW zOIIx&SmwQ~YB{nzae3Pc;}r!fhE@iwJh+OsDs9zItL;~pu715HdQEGAUct(O!LkCy1<%NCg+}G`0PgpNm-?d@-hMgNe6^V+j6x$b<6@S<$+<4_1hi}TincS4LsjI}f zWY1>OX6feMEq|U{4wkBy=9dm`4cXeX4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u` z%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i&_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx) ziK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01)YTo*JycSU)_*JOM-ImyzW$x>cP$Mz4ONYt z#^NJzM0w=t_X*$k9t}F$c8q(h;Rn+nb{%IOFKR-X@|s4QQ=0o*Vq3aT%s$c9>fU<% zN829{oHRUHc}nwC$!Xf@g42^{^3RN&m7RTlF8SPG+oHC6=VQ*_Y7cMkx)5~X(nbG^ z=R3SR&VO9;xODQe+vO8ixL2C5I$v$-bm~0*lhaSfyPUh4uDM)mx$b(swR>jw=^LIm z&fWCAdGQwi*43UlJ>9+YdT;l|_x0Zv-F|W>{m#p~*>@-It-MdXU-UrjLD@syht)q@ z{@mE_+<$7occAmp+(-8Yg@e!jk@b%cLj{kSkAKUC4TkHUI6gT!;y-fz>HMcd&t%Ug zo)`Y2{>!cx7B7DI)$7;J(U{Spm-3gBzioV_{p!H$8L!*M!p0uH$#^p{Ui4P`?ZJ24 zcOCDe-w#jZd?0@)|7iKK^;6KN`;!@ylm7$*nDhK&GcDTy001CkNK#Dz0D2_=0Dyx4 z02=xK004mL004C`008P>0026e000+nl3&F}vt|kp15PaIW4IW<`*^^(IjCDVG3-t^DE9(G!f6rH!v_LZf9VqzPke`mMGi6@c;ks1^|7o5`pQD=Jx;q002ovPDHLkV1mbYBXIx# diff --git a/radio/src/fonts/std/font_fr_08x10.lbm b/radio/src/fonts/std/font_fr_08x10.lbm index 5be2553c5..58e6f8f7e 100644 --- a/radio/src/fonts/std/font_fr_08x10.lbm +++ b/radio/src/fonts/std/font_fr_08x10.lbm @@ -1 +1 @@ -0xc0,0x01,0xe0,0x03,0xb4,0x06,0x96,0x04,0xb3,0x04,0xe1,0x06,0xc0,0x02,0x00,0x00,0xc0,0x01,0xe0,0x03,0xb1,0x06,0x93,0x04,0xb6,0x04,0xe4,0x06,0xc0,0x02,0x00,0x00,0x00,0x03,0xa0,0x07,0xb1,0x04,0x93,0x04,0x96,0x02,0xf4,0x07,0xe0,0x07,0x00,0x00,0x04,0x04,0x16,0x04,0xf3,0x07,0xf6,0x07,0x04,0x04,0x00,0x04,0x00,0x00,0xe0,0x00,0xf0,0x01,0x18,0x0b,0x08,0x0e,0x08,0x06,0x18,0x03,0x10,0x01,0x00,0x00,0x00,0x00, +0xc0,0x01,0xe0,0x03,0xb4,0x06,0x96,0x04,0xb3,0x04,0xe1,0x06,0xc0,0x02,0xff,0x0f,0xc0,0x01,0xe0,0x03,0xb1,0x06,0x93,0x04,0xb6,0x04,0xe4,0x06,0xc0,0x02,0xff,0x0f,0x00,0x03,0xa0,0x07,0xb1,0x04,0x93,0x04,0x96,0x02,0xf4,0x07,0xe0,0x07,0xff,0x0f,0x04,0x04,0x16,0x04,0xf3,0x07,0xf6,0x07,0x04,0x04,0x00,0x04,0xff,0x0f,0xff,0x0f,0xe0,0x00,0xf0,0x01,0x18,0x0b,0x08,0x0e,0x08,0x06,0x18,0x03,0x10,0x01,0xff,0x0f, diff --git a/radio/src/fonts/std/font_fr_08x10.png b/radio/src/fonts/std/font_fr_08x10.png index f9ad08c8b5e9abe72dd876a22e22cf54c932d222..7f3d79bc9a66710af7ec3971b6551f2ac6fde8e2 100644 GIT binary patch delta 2790 zcmV;QlP9${Ff#{e35u39)87vVOh&UxnkS?~*ikKRgEM^!b zX1*vv5zC1=VUZ0!`z*4fnAxd3wur?!r?XSpV(u03woD;M#E7qm3p2T#ED_%lu||q8 zl`G;m;@DIUGXnq=No*H?a9D{VHW4w29}?su;^hF~NC{tY+*d5%WDCTXa!E_i;d2ub z1#}&jF5T4HnnCyEWTkKf0>c0%E1Ah>(_PY1)0w;+02c53Su*0<(nUqKG_|(0G&D0Z z{i;y^b@OjZ+}lNZ8Th$p5Uu}Y zB~8euXQVS(9J=A3hxi`{{&gM(L7aFFpTiSHgo&n%%S#Zoo5$t~xM@5(m-nBV_z%PW zq{X=wiPHEHP-BdLfYfy=Kz{89C<+lE(fh?+|D$id_%I-TdEqLPi*x_)H~nY9rQ#)n zoA5c#B`Ac>67n+__r%W3O|GA z5P%R78lsAS7$OYB1@T9ska&cTtVfEF3ZwyPMY@qbwx1%qjZ=)yB zuQ3=54Wo^*!gyjLF-e%Um=erBOdIALW)L%unZsg#vGQ1btR2=L%ft$>h1e?WQS4dl z5OxCl21mrH;LLFDxF{SCmyfH!9l@Q!4dEtn3wSBKCf)|`k7wg^@TK@hd^i3&egeNh zkS1so>_C83pYk??@5*JW(Ig>h z2k8)h=^W`U=_Q#=)*?HSqsRjC4stX30{Id7jRZx)NWx2kEwMqOMxsMvNaDF9UQ$!i zNpiJhu4IMe3CZh{Gg5ddEh!f%rqp_=8mW^~BT{qH6lqgwf9X`|66qt-SEQ$8urgXQ zZZd3{0-1v{7i7jM2t}RZLSa!hQyM83DHBwG3{{)zMNOg>Q@^7QP-kUjWS7Z?$!5#e z$exxRr6DveninmFR!Tcg8>YQmqO`QdXKtffUuk1xHa2rKF-1}UypJgC^OIH#n4 ztmL7Tu2iLTL1{*rrtGMkq+G6iMtNF=qGGSYRVi0FtMZgCOLwBD&@1V^^jTF!RZmr+ zYQ5@!>VlfKTBusSTASKKb%HuWJzl+By+?gkLq)?+BTu76*gyjC_sqjXI5<8*3Ox8SgUgGyZ5|VUl9f zXma0F#?;$1-?ZEGcQZXRmRXJ2EpxKDyZHw5F7p@5^p|m#?O%4sf@0xkvDKn~$Kr#f zl_lS@)pFWO!z$LQ)@p=7Wdtxv7?-Wl*3Q-&tWR0LwXw7j*c`X{&DPL1+4hL-)N<|R zoaK$n$L-YYn0EDcqxN+BSo;I^qYkPLOos-C$BycbY{w?YNhe*WB&VZJ&z()2`OfXm z^DZ_n>s-#cBCZ~;MXm#GGH#)NZq;s&+|}F@+*{mdJuE!ddYtn_d-{0p@*MF}@?v>4 zd(C=Vd9U;C^&$BL`&9cp_SN&{`*!=me%^k&{T{5)T)|t>=@0z9{CE354A2f(6Yygo zCNLndCh$p+X;5BJUoa&&CiqD3>k#LV(vbV1I-$bQo-oO<=&{&C* z_u)5XKpCqtx&&0w&s4uqN4P~emT8|^lldkqEbBzJbT%)$KSwWTd(LF8d+xVuQEORi zd-7ECHsy`2b6Quw9$Fu_zGs8_hJpTWll-!O{8yX9H+L5(6>KaR z-{P^QrBI@fUpTVWc5B@>)Hd$6f$iqotG0hEVi#R4HYu(seqX{Wx%!RiHe#iZ-bxL)`b?**v58SEusPAadYN$AfIhc9y zNn==J-?xl!o0}Axikm(h;vE`29CWz1*{Zquh~kmb7Pv*&GJQ1q=#B4Ozw2r>Y^`sj zwG|%&$Arh8ejoe&@Nu8xJtr6^T7S^|p|+jUUep0~4hfb-UsyQuty7Ua;Ou?B?XLHZaol8GAb3Wnxcu!2v{R_`T4=x`(GvqLI z{-*2AOSim#Ze6>*;`ZQh=^oC;Q|`XFmw9jD{>BIB2SpF19#%Y3eAMu> z?$2$bmZPV~T*vw!2S2_)&KiIAOU5tnCkmdBpHxh$Og2xMO`V!{pT6;Q<CYBs z3V)UUwf4Er^B;b5{H=dBVs_#M|HY@@OJ2&qJoIWe*{hzpfVoGnQ(rI47rl{xbNDUe zZQr}_casZQ@3HSIKj?nw{^;}Z!Kc(upZ)~{nDhLRz*^h0y$TNl3ISqEM??UK1szC{ zAs2rD2XskIMF-ss1PKugeOQaL0001FNkl?*2m{OiKfMho6f~KMmS8m=p3h%>5FkLrtZYW sQsOxe6U7<{907*qoM6N<$g1C}XF8}}l delta 2846 zcmV+(3*q#m9KRfpBa?v*6@Lm(X+uL$P-t&-Z*ypGa3D!TLm+T+Z)Rz1WdHzp+MQEp zR8#2|J@?-9LQ9B%luK_?6$l_wLW_VDktQl32@pz%A)(n7QNa;KMFbnjpojyGj)066 zQ7jCK3fKqaA)=0hqlk*i`{8?|Yu3E?=FR@K*FNX0^PRKL2fzpnmVZbyQ8j=JsX`tR z;Dg7+#^K~HK!FM*Z~zbpvt%K2{UZSY_f59&gh zTmgWD0l;*TI7e|ZE3OddDgXd@nX){&BsoQaTL>+22Uk}v z9w^R97b_GtVFF>AKrX_0nHe&HG!NkO%m4tOkrff(gY*4(&VLTB&dxTDwhmt{>c0m6 zB4T3W{^ifBa6kY6;dFk{{wy!E8h|?nfNlPwCGG@hUJIag_lst-4?wj5py}FI^Kkfn zJUm6Akh$5}<>chpO2k52Vaiv1{%68pz*qfj`F=e7_x0eu;v|7GU4cgg_~63K^h~83 z&yop*V%+ABM}Pdc3;+Bb(;~!4V!2o<6ys46agIcqjPo+3B8fthDa9qy|77CdEc*jK z-!%ZRYCZvbku9iQV*~a}ClFY4z~c7+0P?$U!PF=S1Au6Q;m>#f??3%Vpd|o+W=WE9 z003S@Bra6Svp>fO002awfhw>;8}z{#EWidF!3EsG3xE7zHiSYX#KJ-lLJDMn9CBbO ztb#%)hRv`YDqt_vKpix|QD}yfa1JiQRk#j4a1Z)n2%fLC6RbVIkUx0b+_+ zBaR3cnT7Zv!AJxWizFb)h!jyGOOZ85F;a?DAXP{m@;!0_Ifqlp|(=5QHQ7#Gr)$3XMd?XsE4X&sBct1q<&fbi3VB2Ov6t@q*0); zU*o*SAPZv|vv@2aYYnT0b%8a+Cb7-ge0D0knEf5Qi#@8Tp*ce{N;6lpQuCB%KL_KO zarm5cP6_8IrP_yNQcbz0DW*G2J50yT%*~?B)|oY% zJu%lZ=bPu7*PGwBU|M)uEVih&xMfMQuC{HqePL%}7iYJ{uEXw=y_0>qeSeMpJqHbk z*$%56S{;6Kv~mM9!g3B(KJ}#RZ#@)!hR=4N)wtYw9={>5&Kw=W)*2gz%* zkgNq+Eef_mrsz~!DAy_nvS(#iX1~pe$~l&+o-57m%(KedkbgIv@1Ote62cPUlD4IW zOIIx&SmwQ~YB{nzae3Pc;}r!fhE@iwJh+OsDs9zItL;~pu715HdQEGAUct(O!LkCy1<%NCg+}G`0PgpNm-?d@-hMgNe6^V+j6x$b<6@S<$+<4_1hi}TincS4LsjI}f zWY1>OX6feMEq|U{4wkBy=9dm`4cXeX4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u` z%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i&_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx) ziK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01)YTo*JycSU)_*JOM-ImyzW$x>cP$Mz4ONYt z#^NJzM0w=t_X*$k9t}F$c8q(h;Rn+nb{%IOFKR-X@|s4QQ=0o*Vq3aT%s$c9>fU<% zN829{oHRUHc}nwC$!Xf@g42^{^3RN&m7RTlF8SPG+oHC6=VQ*_Y7cMkx)5~X(nbG^ z=R3SR&VO9;xODQe+vO8ixL2C5I$v$-bm~0*lhaSfyPUh4uDM)mx$b(swR>jw=^LIm z&fWCAdGQwi*43UlJ>9+YdT;l|_x0Zv-F|W>{m#p~*>@-It-MdXU-UrjLD@syht)q@ z{@mE_+<$7occAmp+(-8Yg@e!jk@b%cLj{kSkAKUC4TkHUI6gT!;y-fz>HMcd&t%Ug zo)`Y2{>!cx7B7DI)$7;J(U{Spm-3gBzioV_{p!H$8L!*M!p0uH$#^p{Ui4P`?ZJ24 zcOCDe-w#jZd?0@)|7iKK^;6KN`;!@ylm7$*nDhK&GcDTy001CkNK#Dz0D2_=0Dyx4 z02=xK004mL004C`008P>0026e000+nl3&F}vt|kp19M(UL_t(|+KiA}62Kq`19$I# z>3&otzB*+_gG@{SRH5!bGdMBYKNeyYk_k@CS^pHg(v(La^=#@gJOV2zdp45Zhye7Y wS1yVlVpETKAo|&+W|?-h68rzLM^&Ez07eM`M6k;d4*&oF07*qoM6N<$g0{s}#Q*>R diff --git a/radio/src/fonts/std/font_fr_10x14.lbm b/radio/src/fonts/std/font_fr_10x14.lbm index 081e4fe70..f7b7edd89 100644 --- a/radio/src/fonts/std/font_fr_10x14.lbm +++ b/radio/src/fonts/std/font_fr_10x14.lbm @@ -1 +1 @@ -0x80,0x1f,0xc0,0x3f,0xe0,0x76,0x68,0x66,0x6c,0x66,0x66,0x66,0x62,0x66,0xe0,0x66,0xc0,0x07,0x80,0x07,0x80,0x1f,0xc0,0x3f,0xe0,0x76,0x62,0x66,0x66,0x66,0x6c,0x66,0x68,0x66,0xe0,0x66,0xc0,0x07,0x80,0x07,0x00,0x18,0x00,0x3c,0x60,0x7e,0x62,0x66,0x66,0x66,0x6c,0x66,0x68,0x66,0xe0,0x66,0xc0,0x7f,0x80,0x7f,0x00,0x00,0x00,0x00,0x98,0x61,0x98,0x61,0x86,0x7f,0x86,0x7f,0x18,0x60,0x18,0x60,0x00,0x00,0x00,0x00,0xe0,0x07,0xf0,0x0f,0x38,0x9c,0x18,0xd8,0x18,0x78,0x18,0x38,0x18,0x18,0x18,0x1c,0x00,0x0e,0x00,0x06, +0x80,0x1f,0xc0,0x3f,0xe0,0x76,0x68,0x66,0x6c,0x66,0x66,0x66,0x62,0x66,0xe0,0x66,0xc0,0x07,0x80,0x07,0x80,0x1f,0xc0,0x3f,0xe0,0x76,0x62,0x66,0x66,0x66,0x6c,0x66,0x68,0x66,0xe0,0x66,0xc0,0x07,0x80,0x07,0x00,0x18,0x00,0x3c,0x60,0x7e,0x62,0x66,0x66,0x66,0x6c,0x66,0x68,0x66,0xe0,0x66,0xc0,0x7f,0x80,0x7f,0x98,0x61,0x98,0x61,0x86,0x7f,0x86,0x7f,0x18,0x60,0x18,0x60,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0x07,0xf0,0x0f,0x38,0x9c,0x18,0xd8,0x18,0x78,0x18,0x38,0x18,0x18,0x18,0x1c,0x00,0x0e,0x00,0x06, diff --git a/radio/src/fonts/std/font_fr_10x14.png b/radio/src/fonts/std/font_fr_10x14.png index 39ca61147bae5533063d9dbc2bd4a220c6a75c3f..d78f9c95ad16559f445feff3d9a332cd22498381 100644 GIT binary patch delta 200 zcmV;(05|{V0rmlqHh%$POGiWihy@);00009a7bBm000XU000XU0RWnu7ytkO2XskI zMF-ss1PTuqAv(j^0001XNklST6olcED4>YM0+GGKD^o;zjFL_823de% zu1o0^+|fSd3JKvnxaKQP`q6yWhX;@2tnF=v`D1Svo|F||1IL` znC%jHbfON1P6D8LtCA+fpX;4eUO>G&zfNE0bL~EgTq_DjNynIIA!Df(JkBncz6CQQdSJXV+_-TM^{9jRM)a zV2vOSRbecsi)jfi2TfU^BxMI5(i&jhlg1v+&-G6He~Hr5AzI(A7OC9hmqJ*!ay3o> O0000zopr03!tz&;S4c diff --git a/radio/src/fonts/std/font_it_08x10.lbm b/radio/src/fonts/std/font_it_08x10.lbm index 8d92e52ad..4572dc5dd 100644 --- a/radio/src/fonts/std/font_it_08x10.lbm +++ b/radio/src/fonts/std/font_it_08x10.lbm @@ -1 +1 @@ -0x00,0x03,0xa0,0x07,0xb2,0x04,0x96,0x04,0x94,0x02,0xf0,0x07,0xe0,0x07,0x00,0x00,0xf0,0x01,0xf0,0x03,0x02,0x06,0x06,0x04,0x04,0x02,0xf0,0x07,0xf0,0x07,0x00,0x00, +0x00,0x03,0xa0,0x07,0xb2,0x04,0x96,0x04,0x94,0x02,0xf0,0x07,0xe0,0x07,0xff,0x0f,0xf0,0x01,0xf0,0x03,0x02,0x06,0x06,0x04,0x04,0x02,0xf0,0x07,0xf0,0x07,0xff,0x0f, diff --git a/radio/src/fonts/std/font_it_08x10.png b/radio/src/fonts/std/font_it_08x10.png index a1753b5b7e5473240e39d56735466557d557d24a..ebd2cfc5f3e8ddb82f71b52c5748748d4a4c1995 100644 GIT binary patch delta 124 zcmbQoxSDZ-St(Eal|aXtCR_x^`>EZfr0OEmO2i}4uiNYq6bm_!&vL>Nf;B)qU-6k%sD X;pXp`xqEU8P#c4%tDnm{r-UW|cK0Dw delta 86 zcmZ3@IFE6H*+gdcI978y+C;#|A|KXp?w&&+18+r~;<1yBi qtcx--i86|aGLrC1d11pT!p>m2n}50I-<%4dHU>{uKbLh*2~7YuTOKq3 diff --git a/radio/src/fonts/std/font_pl_04x06.lbm b/radio/src/fonts/std/font_pl_04x06.lbm new file mode 100644 index 000000000..65e843759 --- /dev/null +++ b/radio/src/fonts/std/font_pl_04x06.lbm @@ -0,0 +1 @@ +0x18,0x24,0x14,0x3c,0x40,0x18,0x24,0x24,0x02,0x01,0x18,0x34,0x2c,0x48,0x7f,0x00,0x29,0x3f,0x24,0x7f,0x3c,0x06,0x05,0x38,0x7f,0x18,0x26,0x25,0x18,0x7f,0x28,0x2c,0x36,0x15,0x7f,0x24,0x35,0x2d,0x24,0x7f,0x24,0x34,0x2e,0x25,0x7f,0x3e,0x09,0x69,0x5e,0x7f,0x1c,0x22,0x22,0x15,0x7f,0x3f,0x25,0x65,0x41,0x7f,0x3f,0x28,0x24,0x24,0x7f,0x3e,0x0c,0x11,0x3e,0x7f,0x1c,0x22,0x22,0x1d,0x7f,0x24,0x2a,0x2b,0x12,0x7f,0x22,0x33,0x2a,0x26,0x7f,0x22,0x32,0x2b,0x26,0x7f, diff --git a/radio/src/fonts/std/font_pl_04x06.png b/radio/src/fonts/std/font_pl_04x06.png new file mode 100644 index 0000000000000000000000000000000000000000..5f0355deb9894f3c89fb1515e8b3792c1f2e66f1 GIT binary patch literal 230 zcmeAS@N?(olHy`uVBq!ia0vp^Q9#Vj$P6Smm7T}{QfvV}A+A9B|Ns9>Z_d99WHBar zySp%Su*!M>Ih+L^k;M!Q+`=Ht$S`Y;1W=H@#M9T6{Vor)D67VExm&Y`MvR8^^pe*JxS~?3d~6o nR*E1~p8q@#bg(^$_`9Lk$oA6>x09(rXE1oW`njxgN@xNA5g%Xd literal 0 HcmV?d00001 diff --git a/radio/src/fonts/std/font_pl_08x10.lbm b/radio/src/fonts/std/font_pl_08x10.lbm new file mode 100644 index 000000000..4be62b27d --- /dev/null +++ b/radio/src/fonts/std/font_pl_08x10.lbm @@ -0,0 +1 @@ +0x00,0x03,0xa0,0x07,0xb0,0x04,0x90,0x04,0x90,0x02,0xf0,0x0f,0xe0,0x0b,0xff,0x0f,0xc0,0x01,0xe0,0x03,0x30,0x06,0x14,0x04,0x13,0x04,0x31,0x06,0x20,0x02,0xff,0x0f,0xc0,0x01,0xe0,0x03,0xb0,0x06,0x90,0x04,0xb0,0x0c,0xe0,0x0a,0xc0,0x02,0xff,0x0f,0x40,0x04,0x42,0x04,0xfe,0x07,0xfe,0x07,0x20,0x04,0x20,0x04,0x00,0x00,0xff,0x0f,0xf0,0x07,0xf0,0x07,0x20,0x00,0x14,0x00,0x33,0x00,0xe1,0x07,0xc0,0x07,0xff,0x0f,0xc0,0x01,0xe0,0x03,0x30,0x06,0x14,0x04,0x33,0x06,0xe1,0x03,0xc0,0x01,0xff,0x0f,0x60,0x02,0xf0,0x06,0x90,0x04,0x94,0x04,0x93,0x04,0xb1,0x07,0x20,0x03,0xff,0x0f,0x10,0x06,0x10,0x07,0x96,0x05,0xd6,0x04,0x70,0x04,0x30,0x04,0x00,0x00,0xff,0x0f,0x10,0x06,0x10,0x07,0x90,0x05,0xd4,0x04,0x73,0x04,0x31,0x04,0x00,0x00,0xff,0x0f,0xf0,0x07,0xf8,0x07,0x8c,0x00,0x86,0x00,0x86,0x00,0x8c,0x00,0xf8,0x0f,0xf0,0x0b,0xf0,0x01,0xf8,0x03,0x0c,0x06,0x04,0x04,0x06,0x04,0x05,0x04,0x0c,0x06,0x18,0x03,0xfe,0x07,0xfe,0x07,0x22,0x04,0x22,0x04,0x22,0x04,0x22,0x0c,0x02,0x08,0xff,0x0f,0x80,0x00,0xfe,0x07,0xfe,0x07,0x40,0x04,0x40,0x04,0x20,0x04,0x20,0x04,0x00,0x04,0xfc,0x07,0xfc,0x07,0x38,0x00,0x74,0x00,0xe3,0x00,0xc1,0x01,0xfc,0x07,0xfc,0x07,0xe0,0x01,0xf0,0x03,0x18,0x06,0x08,0x04,0x0c,0x04,0x1b,0x06,0xf1,0x03,0xe0,0x01,0x30,0x02,0x78,0x06,0x48,0x04,0x4c,0x04,0x4b,0x04,0x49,0x04,0xd8,0x07,0x90,0x03,0x08,0x06,0x08,0x07,0x8b,0x05,0xcb,0x04,0x68,0x04,0x38,0x04,0x18,0x04,0xff,0x0f,0x08,0x06,0x08,0x07,0x88,0x05,0xcc,0x04,0x6b,0x04,0x39,0x04,0x18,0x04,0xff,0x0f, diff --git a/radio/src/fonts/std/font_pl_08x10.png b/radio/src/fonts/std/font_pl_08x10.png new file mode 100644 index 0000000000000000000000000000000000000000..a0ebfb1356e45eb02fa916bbfe41912213f9e01c GIT binary patch literal 326 zcmeAS@N?(olHy`uVBq!ia0vp^6M&e9kr_yC*I9NLNU;U@gt!9f|Ns9ly*d9bkj0qf z?e4vL>4nJa0`PlBg3pY5H=O_PabRoWf$8cm%wGLdQH^978y+ z%k~>~A94_AZ9n>H!v?WEue7*NYaTlpA3U3xyE}wa=48I1)2W}58>16j&UPg}dRKcj zS#FOxzt7o_t0i@}|J2yJ9&Czr;t+bLyybEA6ozNMd%i!)56|2F_^{24nGwtWJua)Y zW^%ax_0#3~bCjQbTfIzT;i^-4p^LOc*Tn@a;JmTg%S@AD0HX`YE*1q ztjU?;xBP~QC3j|))Q!-o2{U=TdPCHi&&9qsFn_oHox^|sBYQNA&ldX4sAZ@)*!)Di S#AzMSM+}~>elF{r5}E)i^nF$U literal 0 HcmV?d00001 diff --git a/radio/src/fonts/std/font_pl_10x14.lbm b/radio/src/fonts/std/font_pl_10x14.lbm new file mode 100644 index 000000000..fb6d981b1 --- /dev/null +++ b/radio/src/fonts/std/font_pl_10x14.lbm @@ -0,0 +1 @@ +0x00,0x18,0x00,0x3c,0x60,0x7e,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0xe6,0xc0,0xbf,0x80,0xbf,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x68,0x60,0x6c,0x60,0x67,0x60,0x63,0x70,0x01,0x38,0x00,0x18,0x80,0x1f,0xc0,0x3f,0xe0,0x76,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0xe6,0xc0,0x87,0x80,0x87,0x06,0x61,0x06,0x61,0xfe,0x7f,0xfe,0x7f,0x80,0x60,0x80,0x60,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0x7f,0xe0,0x7f,0x80,0x01,0xc0,0x01,0xe8,0x00,0x6c,0x00,0x67,0x00,0xe3,0x00,0xc1,0x7f,0x80,0x7f,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x68,0x60,0x6c,0x60,0x67,0x60,0xe3,0x70,0xc1,0x3f,0x80,0x1f,0x80,0x61,0xc0,0x63,0xe0,0x67,0x60,0x66,0x68,0x66,0x6c,0x66,0x67,0x66,0x63,0x7e,0x01,0x3c,0x00,0x18,0x60,0x60,0x60,0x70,0x60,0x78,0x66,0x7c,0x66,0x6e,0x60,0x67,0xe0,0x63,0xe0,0x61,0xe0,0x60,0x60,0x60,0x60,0x60,0x60,0x70,0x60,0x78,0x60,0x7c,0x68,0x6e,0x6c,0x67,0xe7,0x63,0xe3,0x61,0xe1,0x60,0x60,0x60,0xe0,0x7f,0xf0,0x7f,0xb8,0x01,0x9c,0x01,0x8e,0x01,0x8e,0x01,0x9c,0x01,0xb8,0x61,0xf0,0xff,0xe0,0xbf,0xe0,0x1f,0xf0,0x3f,0x38,0x70,0x18,0x60,0x1c,0x60,0x1f,0x60,0x1b,0x60,0x39,0x70,0x70,0x38,0x60,0x18,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x06,0xa0,0x06,0x80,0x00,0x06,0xfe,0x7f,0xfe,0x7f,0x00,0x63,0x80,0x61,0x80,0x61,0xc0,0x60,0xc0,0x60,0x60,0x60,0x60,0x60,0xf8,0x7f,0xf8,0x7f,0xe0,0x00,0xc0,0x01,0x80,0x03,0x04,0x07,0x07,0x0e,0x03,0x1c,0xf9,0x7f,0xf8,0x7f,0xe0,0x1f,0xf0,0x3f,0x38,0x70,0x18,0x60,0x1c,0x60,0x1f,0x60,0x1b,0x60,0x39,0x70,0xf0,0x3f,0xe0,0x1f,0xe0,0x18,0xf0,0x39,0xb8,0x73,0x18,0x63,0x1c,0x63,0x1f,0x63,0x1b,0x63,0x39,0x77,0x70,0x3e,0x60,0x1c,0x18,0x70,0x18,0x78,0x18,0x7c,0x18,0x6e,0x1b,0x67,0x9b,0x63,0xd8,0x61,0xf8,0x60,0x78,0x60,0x38,0x60,0x18,0x70,0x18,0x78,0x18,0x7c,0x18,0x6e,0x18,0x67,0x9c,0x63,0xdf,0x61,0xfb,0x60,0x79,0x60,0x38,0x60, diff --git a/radio/src/fonts/std/font_pl_10x14.png b/radio/src/fonts/std/font_pl_10x14.png new file mode 100644 index 0000000000000000000000000000000000000000..b90769c1c70114ac101820664f67b45441df5d5b GIT binary patch literal 422 zcmV;X0a^ZuP)^~LqLUIBuB`YO%7eUxd#a7 zDls0MAyiig)zDS07Y82t`SQnwHuV%Y`R>w`*MN8z&4*rNWj zb!fyh9IpGalR0ZqwCm+uJm2TDO8@^$xG|Ie@kv$suZL_A)1wE3sjPd_FCa$G=t8|L QcmMzZ07*qoM6N<$g7P7?sQ>@~ literal 0 HcmV?d00001 diff --git a/radio/src/fonts/std/font_pt_05x07.lbm b/radio/src/fonts/std/font_pt_05x07.lbm index 8f2c832a2..860c0237c 100644 --- a/radio/src/fonts/std/font_pt_05x07.lbm +++ b/radio/src/fonts/std/font_pt_05x07.lbm @@ -1 +1 @@ -0x78,0x14,0x16,0x15,0x78,0x20,0x54,0x56,0x55,0x78,0x78,0x16,0x15,0x16,0x78,0x20,0x56,0x55,0x56,0x78,0x7a,0x15,0x16,0x15,0x78,0x20,0x56,0x55,0x56,0x79,0x78,0x15,0x16,0x14,0x78,0x20,0x55,0x56,0x54,0x78,0x1e,0xa1,0x61,0x21,0x12,0x1c,0xa2,0x62,0x22,0x10,0x7c,0x54,0x56,0x55,0x44,0x38,0x54,0x56,0x55,0x18,0x7c,0x56,0x55,0x56,0x44,0x38,0x56,0x55,0x56,0x18,0x00,0x44,0x7e,0x45,0x00,0x00,0x4c,0x7a,0x40,0x00,0x3c,0x42,0x42,0x43,0x3c,0x38,0x44,0x46,0x45,0x38,0x3c,0x42,0x43,0x42,0x3c,0x38,0x44,0x46,0x44,0x38,0x3c,0x43,0x42,0x43,0x3c,0x38,0x46,0x44,0x46,0x38,0x3c,0x40,0x42,0x41,0x3c,0x38,0x40,0x44,0x22,0x78, +0x78,0x14,0x16,0x15,0x78,0x20,0x54,0x56,0x55,0x78,0x78,0x16,0x15,0x16,0x78,0x20,0x56,0x55,0x56,0x78,0x7a,0x15,0x16,0x15,0x78,0x20,0x56,0x55,0x56,0x79,0x78,0x15,0x16,0x14,0x78,0x20,0x55,0x56,0x54,0x78,0x1e,0xa1,0x61,0x21,0x12,0x1c,0xa2,0x62,0x22,0x10,0x7c,0x54,0x56,0x55,0x44,0x38,0x54,0x56,0x55,0x18,0x7c,0x56,0x55,0x56,0x44,0x38,0x56,0x55,0x56,0x18,0x44,0x7e,0x45,0xff,0xff,0x4c,0x7a,0x40,0xff,0xff,0x3c,0x42,0x42,0x43,0x3c,0x38,0x44,0x46,0x45,0x38,0x3c,0x42,0x43,0x42,0x3c,0x38,0x44,0x46,0x44,0x38,0x3c,0x43,0x42,0x43,0x3c,0x38,0x46,0x44,0x46,0x38,0x3c,0x40,0x42,0x41,0x3c,0x38,0x40,0x44,0x22,0x78, diff --git a/radio/src/fonts/std/font_pt_05x07.png b/radio/src/fonts/std/font_pt_05x07.png index 768ff309f095d647b56e5ddaa89cc0c47c732e23..b1f2ff750534457bf3933af16113cdee4e4d24ca 100644 GIT binary patch delta 160 zcmV;R0AK(10rvrrUw;e)2_6jkz?Xag004JML_t&t*JF5JzU$TZ{@-`s%e*iD^?yIZ zz1N}Ft4qpvU7OPPc*pfxhMr`JV}{iS1zdPaV#Qr=GnCJLUU{$j-t%28#dDrpo?~EP zWN;8DZenPf0^x(np1AM(!2B}|C9>>}7w!S|gH1AG_zwbmff;xXm<0f{k4J2M@hKSq O0000;Ha+ zd#^*USC^FUx?bJ)c*pfxhMr`JV}{iS1>DR_V#Qr=GnCJLUU{$j-t*nX#dDrpo?~EP zWN;8DZenPzhVa2;Pu%zYVE!3~5?OY~3-^Hf4M8RuG5iOCy%_&t008~_NP6$o(G&mx N002ovPDHLkV1l&|Pyzq| diff --git a/radio/src/fonts/std/font_pt_08x10.lbm b/radio/src/fonts/std/font_pt_08x10.lbm index ac3c9fafb..6ffcb0215 100644 --- a/radio/src/fonts/std/font_pt_08x10.lbm +++ b/radio/src/fonts/std/font_pt_08x10.lbm @@ -1 +1 @@ -0xf0,0x07,0xf8,0x07,0x88,0x00,0x8c,0x00,0x8b,0x00,0x89,0x00,0xf8,0x07,0xf0,0x07,0x00,0x03,0xa0,0x07,0xb0,0x04,0x90,0x04,0x98,0x02,0xf6,0x07,0xe2,0x07,0x00,0x00,0xf0,0x07,0xfa,0x07,0x8b,0x00,0x89,0x00,0x89,0x00,0x8b,0x00,0xfa,0x07,0xf0,0x07,0x00,0x03,0xa4,0x07,0xb6,0x04,0x93,0x04,0x96,0x02,0xf4,0x07,0xe0,0x07,0x00,0x00,0xf0,0x07,0xfa,0x07,0x89,0x00,0x89,0x00,0x8b,0x00,0x8a,0x00,0xfa,0x07,0xf1,0x07,0x00,0x03,0xa0,0x07,0xb4,0x04,0x92,0x04,0x96,0x02,0xf4,0x07,0xe2,0x07,0x00,0x00,0xf0,0x07,0xf8,0x07,0x89,0x00,0x8b,0x00,0x8c,0x00,0x88,0x00,0xf8,0x07,0xf0,0x07,0x00,0x03,0xa0,0x07,0xb2,0x04,0x96,0x04,0x98,0x02,0xf0,0x07,0xe0,0x07,0x00,0x00,0xf8,0x00,0xfc,0x01,0x8e,0x0b,0x06,0x0f,0x02,0x06,0x02,0x02,0x06,0x03,0x04,0x01,0xe0,0x00,0xf0,0x01,0x18,0x0b,0x08,0x0e,0x08,0x06,0x18,0x03,0x10,0x01,0x00,0x00,0xf8,0x07,0xf8,0x07,0x48,0x04,0x4c,0x04,0x4b,0x04,0x49,0x04,0x08,0x04,0x00,0x00,0xc0,0x01,0xe0,0x03,0xb0,0x06,0x9c,0x04,0xb6,0x04,0xe2,0x06,0xc0,0x02,0x00,0x00,0xf8,0x07,0xfa,0x07,0x4b,0x04,0x49,0x04,0x49,0x04,0x4b,0x04,0x0a,0x04,0x00,0x00,0xc0,0x01,0xe4,0x03,0xb6,0x06,0x93,0x04,0xb6,0x04,0xe4,0x06,0xc0,0x02,0x00,0x00,0x00,0x00,0x08,0x04,0x08,0x04,0xfc,0x07,0xfb,0x07,0x09,0x04,0x08,0x04,0x00,0x00,0x00,0x00,0x00,0x04,0x10,0x04,0xf4,0x07,0xf3,0x07,0x01,0x04,0x00,0x04,0x00,0x00,0xe0,0x01,0xf0,0x03,0x18,0x06,0x08,0x04,0x0c,0x04,0x1b,0x06,0xf1,0x03,0xe0,0x01,0xc0,0x01,0xe0,0x03,0x30,0x06,0x18,0x04,0x36,0x06,0xe2,0x03,0xc0,0x01,0x00,0x00,0xe0,0x01,0xf2,0x03,0x1b,0x06,0x09,0x04,0x09,0x04,0x1b,0x06,0xf2,0x03,0xe0,0x01,0xc0,0x01,0xe4,0x03,0x36,0x06,0x13,0x04,0x36,0x06,0xe4,0x03,0xc0,0x01,0x00,0x00,0xe2,0x01,0xf1,0x03,0x19,0x06,0x0b,0x04,0x0a,0x04,0x1a,0x06,0xf1,0x03,0xe0,0x01,0xc0,0x01,0xe4,0x03,0x32,0x06,0x16,0x04,0x34,0x06,0xe2,0x03,0xc0,0x01,0x00,0x00,0xfc,0x01,0xfc,0x03,0x00,0x06,0x04,0x04,0x03,0x04,0x01,0x06,0xfc,0x03,0xfc,0x01,0xf0,0x01,0xf0,0x03,0x00,0x06,0x04,0x04,0x03,0x02,0xf1,0x07,0xf0,0x07,0x00,0x00, +0xf0,0x07,0xf8,0x07,0x88,0x00,0x8c,0x00,0x8b,0x00,0x89,0x00,0xf8,0x07,0xf0,0x07,0x00,0x03,0xa0,0x07,0xb0,0x04,0x90,0x04,0x98,0x02,0xf6,0x07,0xe2,0x07,0xff,0x0f,0xf0,0x07,0xfa,0x07,0x8b,0x00,0x89,0x00,0x89,0x00,0x8b,0x00,0xfa,0x07,0xf0,0x07,0x00,0x03,0xa4,0x07,0xb6,0x04,0x93,0x04,0x96,0x02,0xf4,0x07,0xe0,0x07,0xff,0x0f,0xf0,0x07,0xfa,0x07,0x89,0x00,0x89,0x00,0x8b,0x00,0x8a,0x00,0xfa,0x07,0xf1,0x07,0x00,0x03,0xa0,0x07,0xb4,0x04,0x92,0x04,0x96,0x02,0xf4,0x07,0xe2,0x07,0xff,0x0f,0xf0,0x07,0xf8,0x07,0x89,0x00,0x8b,0x00,0x8c,0x00,0x88,0x00,0xf8,0x07,0xf0,0x07,0x00,0x03,0xa0,0x07,0xb2,0x04,0x96,0x04,0x98,0x02,0xf0,0x07,0xe0,0x07,0xff,0x0f,0xf8,0x00,0xfc,0x01,0x8e,0x0b,0x06,0x0f,0x02,0x06,0x02,0x02,0x06,0x03,0x04,0x01,0xe0,0x00,0xf0,0x01,0x18,0x0b,0x08,0x0e,0x08,0x06,0x18,0x03,0x10,0x01,0xff,0x0f,0xf8,0x07,0xf8,0x07,0x48,0x04,0x4c,0x04,0x4b,0x04,0x49,0x04,0x08,0x04,0xff,0x0f,0xc0,0x01,0xe0,0x03,0xb0,0x06,0x9c,0x04,0xb6,0x04,0xe2,0x06,0xc0,0x02,0xff,0x0f,0xf8,0x07,0xfa,0x07,0x4b,0x04,0x49,0x04,0x49,0x04,0x4b,0x04,0x0a,0x04,0xff,0x0f,0xc0,0x01,0xe4,0x03,0xb6,0x06,0x93,0x04,0xb6,0x04,0xe4,0x06,0xc0,0x02,0xff,0x0f,0x08,0x04,0x08,0x04,0xfc,0x07,0xfb,0x07,0x09,0x04,0x08,0x04,0xff,0x0f,0xff,0x0f,0x00,0x04,0x10,0x04,0xf4,0x07,0xf3,0x07,0x01,0x04,0x00,0x04,0xff,0x0f,0xff,0x0f,0xe0,0x01,0xf0,0x03,0x18,0x06,0x08,0x04,0x0c,0x04,0x1b,0x06,0xf1,0x03,0xe0,0x01,0xc0,0x01,0xe0,0x03,0x30,0x06,0x18,0x04,0x36,0x06,0xe2,0x03,0xc0,0x01,0xff,0x0f,0xe0,0x01,0xf2,0x03,0x1b,0x06,0x09,0x04,0x09,0x04,0x1b,0x06,0xf2,0x03,0xe0,0x01,0xc0,0x01,0xe4,0x03,0x36,0x06,0x13,0x04,0x36,0x06,0xe4,0x03,0xc0,0x01,0xff,0x0f,0xe2,0x01,0xf1,0x03,0x19,0x06,0x0b,0x04,0x0a,0x04,0x1a,0x06,0xf1,0x03,0xe0,0x01,0xc0,0x01,0xe4,0x03,0x32,0x06,0x16,0x04,0x34,0x06,0xe2,0x03,0xc0,0x01,0xff,0x0f,0xfc,0x01,0xfc,0x03,0x00,0x06,0x04,0x04,0x03,0x04,0x01,0x06,0xfc,0x03,0xfc,0x01,0xf0,0x01,0xf0,0x03,0x00,0x06,0x04,0x04,0x03,0x02,0xf1,0x07,0xf0,0x07,0xff,0x0f, diff --git a/radio/src/fonts/std/font_pt_08x10.png b/radio/src/fonts/std/font_pt_08x10.png index fe2f3adda2c516a298f37ba3fdb90a2ee9103833..59f9c123ef45447adb3568581824e322baededfb 100644 GIT binary patch delta 239 zcmV%Q6Uw;e)2^Af4gl8M?2?UX#;Otm*kq8x1|CCo_gW&rt@5dK+Hs11qJFZ##s(Qw~;Cqec zQQCEN+iy73%3iPUy0nvB6L5QVvO6}uV1H(LIyE8g)yQKOW@sFRp@s*eHQumc!4Nvh z6Q{ICCyJZTv_+ zb<7+&mg3{46?4aY7!PAB#*Qd-1G8hdEB?cI{fzg;XLnoAr&3bfe3L(Qr8sdCg5=Ge e@Hf+hw|M~{p{_0Y+inN|0000YGn)mY!~_aj=cRfc!=$CV_NLi0K+q;j{Psn09Bf_JXE?7`3o1~kIt8O5Au)@o3u z9}5p^%L1eXnaJ}{B(i4+ro&DdcwDXmT%0P2>B&ccY1`!lC(Dh;Wg1~QEhL85W>iCf zSXgR^RYa&?TxX68LmmJLq9F|d%B_NgHp6MJ1HAjF_*amHl@ZYlgstEXC6lS;n14I-Fs#r#lz@93$4Zd&ZiY zsb28MJrYn;;0=Ac5+$k7yen8M_xrheyP_IixQW?=p%DydC6|SVNP{w&6du&X0@6&% zD7^?pl#Yyr`FL0b9+#T{H!(^~&Rzpd1};Z9+wMIs+X+?+)EHiyNs9%Zm@M94_qv`|yyS@S984QDl1~Lx-0000Eal|aXop)s+DO6KGd#X#_rsG%8+<0Eal|ab2}%BkutP9+r9)FLAlPk}K;HWG4t1x5$Mp*z{QC>dTT#j-h9H zvQOx-exL9%VpVSbm0SAT=d{i&mdKI;Vst0N-dfMF0Q* delta 118 zcmV-+0Ez$50loo{HjzUdYz7Mn7dMF7&E^0A082?kK~xCWC5*8R03i$my%J?4FPD-! zRpv>7n1KN@0~O?XH>cA{#(6_dOLwektB~hJCL)HGxf@CBEgw_`AVi+ER?X4-AOru| Y1>{XDQvo1Lga7~l07*qoM6N<$g34(t8vp= 128 ) + else if (c>= 128) c_remapped = c - 60; #endif else @@ -132,13 +136,20 @@ void lcd_putcAtt(xcoord_t x, uint8_t y, const unsigned char c, LcdFlags flags) /* each letter consists of ten top bytes followed by * by ten bottom bytes (20 bytes per * char) */ q = &font_10x14[((uint16_t)c_remapped)*20]; - for (int8_t i=11; i>=0; i--) { - if ((flags & CONDENSED) && i<=1) break; + for (int8_t i=0; i<=11; i++) { uint8_t b1=0, b2=0; - if (i>1) { - b1 = pgm_read_byte(q++); /*top byte*/ - b2 = pgm_read_byte(q++); /*top byte*/ + if (!i) { + if (!x || !inv) { + lcdLastFW++; + p++; + continue; + } } + else if (i <= 10) { + b1 = pgm_read_byte(q++); /*top byte*/ + b2 = pgm_read_byte(q++); + } + if ((b1 & b2) == 0xff) continue; if (inv) { b1 = ~b1; b2 = ~b2; @@ -149,21 +160,30 @@ void lcd_putcAtt(xcoord_t x, uint8_t y, const unsigned char c, LcdFlags flags) LCD_BYTE_FILTER(p, 0, b1); LCD_BYTE_FILTER(p+LCD_W, 0, b2); p++; + lcdLastFW++; } } } + #if defined(CPUARM) else if (flags & MIDSIZE) { /* each letter consists of ten top bytes followed by * by ten bottom bytes (20 bytes per * char) */ q = &font_8x10[((uint16_t)c-0x20)*16]; - for (int8_t i=9; i>=0; i--) { + for (int8_t i=0; i<=9; i++) { uint8_t b1=0, b2=0; - if ((flags & CONDENSED) && i<=1) break; - if (i!=0 && i!=9) { - b1 = pgm_read_byte(q++); /*top byte*/ - b2 = pgm_read_byte(q++); /*top byte*/ + if (!i) { + if (!x || !inv) { + lcdLastFW++; + p++; + continue; + } } + else if (i<=8) { + b1 = pgm_read_byte(q++); /*top byte*/ + b2 = pgm_read_byte(q++); + } + if ((b1 == 0xff) && (b2 == 0x0f)) continue; if (inv) { b1 = ~b1; b2 = ~b2; @@ -183,15 +203,24 @@ void lcd_putcAtt(xcoord_t x, uint8_t y, const unsigned char c, LcdFlags flags) } } p++; + lcdLastFW++; } } } else if (flags & SMLSIZE) { - q = (c < 0xC0) ? &font_4x6[(c-0x20)*5+4] : &font_4x6_extra[(c-0xC0)*5+4]; + q = (c < 0xC0) ? &font_4x6[(c-0x20)*5] : &font_4x6_extra[(c-0xC0)*5]; uint8_t ym8 = (y & 0x07); - p += 4; - for (int8_t i=4; i>=0; i--) { - uint8_t b = pgm_read_byte(q--); + for (int8_t i=0; i<=6; i++) { + uint8_t b = 0; + if (!i) { + if (!x || !inv) { + lcdLastFW++; + p++; + continue; + } + } + else if (i <= 5) pgm_read_byte(q++); + if (b == 0x7f) continue; if (inv) b = ~b & 0x7f; if (p> (8-ym8)), b >> (8-ym8)); } } - p--; + p++; + lcdLastFW++; } } else if (flags & TINSIZE) { - q = &font_3x5[((uint16_t)c-0x2D)*3+2]; + q = &font_3x5[((uint16_t)c-0x2D)*3]; uint8_t ym8 = (y & 0x07); - p += 3; - for (int8_t i=3; i>=0; i--) { - uint8_t b = (i!=3 ? pgm_read_byte(q--) : 0); + for (int8_t i=0; i<=4; i++) { + uint8_t b = 0; + if (!i) { + if (!x || !inv) { + lcdLastFW++; + p++; + continue; + } + } + else if (i <= 3) pgm_read_byte(q++); if (inv) b = ~b & 0x3f; if (p> (8-ym8)), b >> (8-ym8)); } } - p--; + p++; + lcdLastFW++; } } #endif else { - uint8_t condense=0; - - if (flags & CONDENSED) { - *p = inv ? ~0 : 0; - condense=1; - } uint8_t ym8 = (y & 0x07); - p += 5; - for (uint8_t i=6, b=0; i>0; i--, b=pgm_read_byte(q--)) { + for (int8_t i=0; i<=6; i++) { + uint8_t b = 0; + if ( !i ) { + if ( !x || !inv) { + lcdLastFW++; + p++; + continue; + } + } + else if (i <= 5) b = pgm_read_byte(q++); + if (b == 0xff) continue; if (inv) b = ~b; - if (condense && i==2) { - /*condense the letter by skipping column 4 */ + if ((flags & CONDENSED) && i==2) { + /*condense the letter by skipping column 3 */ continue; } - if (p> (8-ym8)), b >> (8-ym8)); - } + #if defined(BOLD_FONT) if (flags & BOLD) { - ASSERT_IN_DISPLAY(p+1); + ASSERT_IN_DISPLAY(p); if (inv) - LCD_BYTE_FILTER(p+1, b << ym8, 0); + LCD_BYTE_FILTER(p, b << ym8, 0); else - LCD_BYTE_FILTER(p+1, 0xff, b << ym8); + LCD_BYTE_FILTER(p, 0xff, b << ym8); #if defined(CPUARM) if (ym8) { - uint8_t *r = p+1 + LCD_W; + uint8_t *r = p + LCD_W; if (r> (8-ym8), 0); @@ -266,10 +301,27 @@ void lcd_putcAtt(xcoord_t x, uint8_t y, const unsigned char c, LcdFlags flags) } } #endif + if (i == 6) { + lcdLastFW++; + break; + } + p++; } #endif + + if (p> (8-ym8)), b >> (8-ym8)); + } } - p--; +#if defined(BOLD_FONT) + if (!(flags & BOLD)) +#endif + p++; + lcdLastFW++; } } } @@ -303,19 +355,8 @@ void lcd_putsnAtt(xcoord_t x, uint8_t y, const pm_char * s, uint8_t len, LcdFlag } if (!c || x>LCD_W-6) break; if (c >= 0x20) { -#if defined(CPUARM) - if ((mode & MIDSIZE) && ((c>='a'&&c<='z')||(c>='0'&&c<='9'))) { - lcd_putcAtt(x, y, c, mode); - x-=1; - } - else -#endif lcd_putcAtt(x, y, c, mode); - x += FW; - if (c == '|') x -= 4; - if (mode&DBLSIZE) x += FW-1; - else if (mode&MIDSIZE) x += FW-3; - else if (mode&SMLSIZE) x -= 1; + x += lcdLastFW; } else { x += (c*FW/2); @@ -352,7 +393,7 @@ void lcd_putsLeft(uint8_t y, const pm_char * s) void lcd_outhex4(xcoord_t x, uint8_t y, uint16_t val) { - x+=FWNUM*4; + x+=FWNUM*4+1; for(int i=0; i<4; i++) { x-=FWNUM; @@ -433,7 +474,8 @@ void lcd_outdezNAtt(xcoord_t x, uint8_t y, lcdint_t val, LcdFlags flags, uint8_t } lcdLastPos = x; - x -= fw + 1; + x -= fw; + if (dblsize) x++; for (uint8_t i=1; i<=len; i++) { div_t qr = div((uint16_t)val, 10); @@ -441,7 +483,7 @@ void lcd_outdezNAtt(xcoord_t x, uint8_t y, lcdint_t val, LcdFlags flags, uint8_t LcdFlags f = flags; #if !defined(PCBTARANIS) if (dblsize) { - if (c=='1' && i==len && xn>x+10) { x+=2; f|=CONDENSED; } + if (c=='1' && i==len && xn>x+10) { x+=1; } if ((uint16_t)val >= 1000) { x+=FWNUM; f&=~DBLSIZE; } } #endif @@ -449,7 +491,7 @@ void lcd_outdezNAtt(xcoord_t x, uint8_t y, lcdint_t val, LcdFlags flags, uint8_t if (mode==i) { flags &= ~PREC2; // TODO not needed but removes 20bytes, could be improved for sure, check asm if (dblsize) { - xn = x; + xn = x - 2; if (c>='1' && c<='3') ln++; uint8_t tn = (qr.quot) % 10; if (tn==2 || tn==4) { @@ -471,12 +513,12 @@ void lcd_outdezNAtt(xcoord_t x, uint8_t y, lcdint_t val, LcdFlags flags, uint8_t x--; } else { - x--; + x -= 2; lcd_plot(x, y+6); if ((flags&INVERS) && ((~flags & BLINK) || BLINK_ON_PHASE)) { lcd_vline(x, y, 8); } - x--; +// x--; } } #if !defined(PCBTARANIS) @@ -501,7 +543,7 @@ void lcd_outdezNAtt(xcoord_t x, uint8_t y, lcdint_t val, LcdFlags flags, uint8_t lcd_hline(xn, y+2*FH-2, ln); } } - + x--; if (neg) lcd_putcAtt(x, y, '-', flags); } From d263552c27479cb4d038a3940859b140b78193ba Mon Sep 17 00:00:00 2001 From: mhotar Date: Thu, 12 Dec 2013 16:04:29 +0100 Subject: [PATCH 009/308] Smlsize font correction --- radio/src/lcd.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/radio/src/lcd.cpp b/radio/src/lcd.cpp index b169a0661..7097719ab 100644 --- a/radio/src/lcd.cpp +++ b/radio/src/lcd.cpp @@ -179,7 +179,7 @@ void lcd_putcAtt(xcoord_t x, uint8_t y, const unsigned char c, LcdFlags flags) continue; } } - else if (i<=8) { + if (i <= 8) { b1 = pgm_read_byte(q++); /*top byte*/ b2 = pgm_read_byte(q++); } @@ -219,7 +219,7 @@ void lcd_putcAtt(xcoord_t x, uint8_t y, const unsigned char c, LcdFlags flags) continue; } } - else if (i <= 5) pgm_read_byte(q++); + else if (i <= 5) b = pgm_read_byte(q++); if (b == 0x7f) continue; if (inv) b = ~b & 0x7f; if (p Date: Sat, 14 Dec 2013 13:19:03 +0100 Subject: [PATCH 010/308] UI for FAS offset in companion --- companion/src/modeledit.ui | 53 +++++++++++++++++++++++++++----------- 1 file changed, 38 insertions(+), 15 deletions(-) diff --git a/companion/src/modeledit.ui b/companion/src/modeledit.ui index e4f3119f1..398ff4704 100644 --- a/companion/src/modeledit.ui +++ b/companion/src/modeledit.ui @@ -7,7 +7,7 @@ 0 0 1130 - 698 + 735 @@ -44,7 +44,7 @@ QTabWidget::North - 0 + 10 @@ -242,12 +242,12 @@ - - 6 - 0 + + 6 + @@ -9058,8 +9058,8 @@ If this is checked the throttle will be reversed. Idle will be forward, trim wi 0 0 - 998 - 481 + 1086 + 641 @@ -13921,8 +13921,8 @@ If this is checked the throttle will be reversed. Idle will be forward, trim wi 0 0 - 969 - 467 + 1086 + 611 @@ -19072,8 +19072,8 @@ If this is checked the throttle will be reversed. Idle will be forward, trim wi 0 0 - 716 - 482 + 1086 + 641 @@ -20515,8 +20515,8 @@ If this is checked the throttle will be reversed. Idle will be forward, trim wi 0 0 - 163 - 354 + 1086 + 641 @@ -20924,8 +20924,8 @@ If this is checked the throttle will be reversed. Idle will be forward, trim wi 0 0 - 526 - 48 + 1086 + 641 @@ -21380,6 +21380,29 @@ If this is checked the throttle will be reversed. Idle will be forward, trim wi + + + + FAS Offset + + + + + + + 1 + + + -1.500000000000000 + + + 1.500000000000000 + + + 0.100000000000000 + + + From b6f8fb689f4210a00ece4e0c54f2020da33a1590 Mon Sep 17 00:00:00 2001 From: mhotar Date: Sun, 15 Dec 2013 17:42:55 +0100 Subject: [PATCH 011/308] Fixed width fonts added for M64 (bitmaps only) --- radio/src/fonts/sqt5_fw/font_03x05.lbm | 1 + radio/src/fonts/sqt5_fw/font_03x05.png | Bin 0 -> 222 bytes radio/src/fonts/sqt5_fw/font_04x06.lbm | 6 ++++++ radio/src/fonts/sqt5_fw/font_04x06.png | Bin 0 -> 874 bytes radio/src/fonts/sqt5_fw/font_04x06_extra.lbm | 1 + radio/src/fonts/sqt5_fw/font_04x06_extra.png | Bin 0 -> 159 bytes radio/src/fonts/sqt5_fw/font_05x07.lbm | 6 ++++++ radio/src/fonts/sqt5_fw/font_05x07.png | Bin 0 -> 937 bytes radio/src/fonts/sqt5_fw/font_05x07_extra.lbm | 1 + radio/src/fonts/sqt5_fw/font_05x07_extra.png | Bin 0 -> 161 bytes radio/src/fonts/sqt5_fw/font_08x10.lbm | 6 ++++++ radio/src/fonts/sqt5_fw/font_08x10.png | Bin 0 -> 1390 bytes radio/src/fonts/sqt5_fw/font_10x14.lbm | 6 ++++++ radio/src/fonts/sqt5_fw/font_10x14.png | Bin 0 -> 1809 bytes .../src/fonts/sqt5_fw/font_10x14_compressed.lbm | 1 + .../src/fonts/sqt5_fw/font_10x14_compressed.png | Bin 0 -> 1157 bytes radio/src/fonts/sqt5_fw/font_10x14_extra.lbm | 1 + radio/src/fonts/sqt5_fw/font_10x14_extra.png | Bin 0 -> 229 bytes radio/src/fonts/sqt5_fw/font_cz_04x06.lbm | 1 + radio/src/fonts/sqt5_fw/font_cz_04x06.png | Bin 0 -> 215 bytes radio/src/fonts/sqt5_fw/font_cz_05x07.lbm | 1 + radio/src/fonts/sqt5_fw/font_cz_05x07.png | Bin 0 -> 260 bytes radio/src/fonts/sqt5_fw/font_cz_08x10.lbm | 1 + radio/src/fonts/sqt5_fw/font_cz_08x10.png | Bin 0 -> 265 bytes radio/src/fonts/sqt5_fw/font_cz_10x14.lbm | 1 + radio/src/fonts/sqt5_fw/font_cz_10x14.png | Bin 0 -> 352 bytes radio/src/fonts/sqt5_fw/font_de_04x06.lbm | 1 + radio/src/fonts/sqt5_fw/font_de_04x06.png | Bin 0 -> 176 bytes radio/src/fonts/sqt5_fw/font_de_05x07.lbm | 1 + radio/src/fonts/sqt5_fw/font_de_05x07.png | Bin 0 -> 181 bytes radio/src/fonts/sqt5_fw/font_de_08x10.lbm | 1 + radio/src/fonts/sqt5_fw/font_de_08x10.png | Bin 0 -> 192 bytes radio/src/fonts/sqt5_fw/font_de_10x14.lbm | 1 + radio/src/fonts/sqt5_fw/font_de_10x14.png | Bin 0 -> 241 bytes radio/src/fonts/sqt5_fw/font_es_04x06.lbm | 1 + radio/src/fonts/sqt5_fw/font_es_04x06.png | Bin 0 -> 155 bytes radio/src/fonts/sqt5_fw/font_es_05x07.lbm | 1 + radio/src/fonts/sqt5_fw/font_es_05x07.png | Bin 0 -> 155 bytes radio/src/fonts/sqt5_fw/font_es_08x10.lbm | 1 + radio/src/fonts/sqt5_fw/font_es_08x10.png | Bin 0 -> 161 bytes radio/src/fonts/sqt5_fw/font_es_10x14.lbm | 1 + radio/src/fonts/sqt5_fw/font_es_10x14.png | Bin 0 -> 174 bytes radio/src/fonts/sqt5_fw/font_fr_04x06.lbm | 1 + radio/src/fonts/sqt5_fw/font_fr_04x06.png | Bin 0 -> 3570 bytes radio/src/fonts/sqt5_fw/font_fr_05x07.lbm | 1 + radio/src/fonts/sqt5_fw/font_fr_05x07.png | Bin 0 -> 174 bytes radio/src/fonts/sqt5_fw/font_fr_08x10.lbm | 1 + radio/src/fonts/sqt5_fw/font_fr_08x10.png | Bin 0 -> 3597 bytes radio/src/fonts/sqt5_fw/font_fr_10x14.lbm | 1 + radio/src/fonts/sqt5_fw/font_fr_10x14.png | Bin 0 -> 202 bytes radio/src/fonts/sqt5_fw/font_it_04x06.lbm | 1 + radio/src/fonts/sqt5_fw/font_it_04x06.png | Bin 0 -> 157 bytes radio/src/fonts/sqt5_fw/font_it_05x07.lbm | 1 + radio/src/fonts/sqt5_fw/font_it_05x07.png | Bin 0 -> 157 bytes radio/src/fonts/sqt5_fw/font_it_08x10.lbm | 1 + radio/src/fonts/sqt5_fw/font_it_08x10.png | Bin 0 -> 162 bytes radio/src/fonts/sqt5_fw/font_it_10x14.lbm | 1 + radio/src/fonts/sqt5_fw/font_it_10x14.png | Bin 0 -> 171 bytes radio/src/fonts/sqt5_fw/font_pl_04x06.lbm | 1 + radio/src/fonts/sqt5_fw/font_pl_04x06.png | Bin 0 -> 175 bytes radio/src/fonts/sqt5_fw/font_pl_05x07.lbm | 1 + radio/src/fonts/sqt5_fw/font_pl_05x07.png | Bin 0 -> 195 bytes radio/src/fonts/sqt5_fw/font_pl_08x10.lbm | 1 + radio/src/fonts/sqt5_fw/font_pl_08x10.png | Bin 0 -> 237 bytes radio/src/fonts/sqt5_fw/font_pl_10x14.lbm | 1 + radio/src/fonts/sqt5_fw/font_pl_10x14.png | Bin 0 -> 333 bytes radio/src/fonts/sqt5_fw/font_pt_04x06.lbm | 1 + radio/src/fonts/sqt5_fw/font_pt_04x06.png | Bin 0 -> 130 bytes radio/src/fonts/sqt5_fw/font_pt_05x07.lbm | 1 + radio/src/fonts/sqt5_fw/font_pt_05x07.png | Bin 0 -> 244 bytes radio/src/fonts/sqt5_fw/font_pt_08x10.lbm | 1 + radio/src/fonts/sqt5_fw/font_pt_08x10.png | Bin 0 -> 289 bytes radio/src/fonts/sqt5_fw/font_pt_10x14.lbm | 1 + radio/src/fonts/sqt5_fw/font_pt_10x14.png | Bin 0 -> 379 bytes radio/src/fonts/sqt5_fw/font_se_04x06.lbm | 1 + radio/src/fonts/sqt5_fw/font_se_04x06.png | Bin 0 -> 169 bytes radio/src/fonts/sqt5_fw/font_se_05x07.lbm | 1 + radio/src/fonts/sqt5_fw/font_se_05x07.png | Bin 0 -> 174 bytes radio/src/fonts/sqt5_fw/font_se_08x10.lbm | 1 + radio/src/fonts/sqt5_fw/font_se_08x10.png | Bin 0 -> 195 bytes radio/src/fonts/sqt5_fw/font_se_10x14.lbm | 1 + radio/src/fonts/sqt5_fw/font_se_10x14.png | Bin 0 -> 214 bytes radio/src/fonts/std_fw/font_03x05.lbm | 1 + radio/src/fonts/std_fw/font_03x05.png | Bin 0 -> 222 bytes radio/src/fonts/std_fw/font_04x06.lbm | 6 ++++++ radio/src/fonts/std_fw/font_04x06.png | Bin 0 -> 519 bytes radio/src/fonts/std_fw/font_04x06_extra.lbm | 1 + radio/src/fonts/std_fw/font_04x06_extra.png | Bin 0 -> 159 bytes radio/src/fonts/std_fw/font_05x07.lbm | 6 ++++++ radio/src/fonts/std_fw/font_05x07.png | Bin 0 -> 570 bytes radio/src/fonts/std_fw/font_05x07_extra.lbm | 1 + radio/src/fonts/std_fw/font_05x07_extra.png | Bin 0 -> 161 bytes radio/src/fonts/std_fw/font_08x10.lbm | 6 ++++++ radio/src/fonts/std_fw/font_08x10.png | Bin 0 -> 767 bytes radio/src/fonts/std_fw/font_10x14.lbm | 6 ++++++ radio/src/fonts/std_fw/font_10x14.png | Bin 0 -> 1123 bytes radio/src/fonts/std_fw/font_10x14_compressed.lbm | 1 + radio/src/fonts/std_fw/font_10x14_compressed.png | Bin 0 -> 1500 bytes radio/src/fonts/std_fw/font_10x14_extra.lbm | 1 + radio/src/fonts/std_fw/font_10x14_extra.png | Bin 0 -> 229 bytes radio/src/fonts/std_fw/font_cz_04x06.lbm | 1 + radio/src/fonts/std_fw/font_cz_04x06.png | Bin 0 -> 220 bytes radio/src/fonts/std_fw/font_cz_05x07.lbm | 1 + radio/src/fonts/std_fw/font_cz_05x07.png | Bin 0 -> 223 bytes radio/src/fonts/std_fw/font_cz_08x10.lbm | 1 + radio/src/fonts/std_fw/font_cz_08x10.png | Bin 0 -> 292 bytes radio/src/fonts/std_fw/font_cz_10x14.lbm | 1 + radio/src/fonts/std_fw/font_cz_10x14.png | Bin 0 -> 410 bytes radio/src/fonts/std_fw/font_de_04x06.lbm | 1 + radio/src/fonts/std_fw/font_de_04x06.png | Bin 0 -> 179 bytes radio/src/fonts/std_fw/font_de_05x07.lbm | 1 + radio/src/fonts/std_fw/font_de_05x07.png | Bin 0 -> 170 bytes radio/src/fonts/std_fw/font_de_08x10.lbm | 1 + radio/src/fonts/std_fw/font_de_08x10.png | Bin 0 -> 202 bytes radio/src/fonts/std_fw/font_de_10x14.lbm | 1 + radio/src/fonts/std_fw/font_de_10x14.png | Bin 0 -> 254 bytes radio/src/fonts/std_fw/font_es_04x06.lbm | 1 + radio/src/fonts/std_fw/font_es_04x06.png | Bin 0 -> 144 bytes radio/src/fonts/std_fw/font_es_05x07.lbm | 1 + radio/src/fonts/std_fw/font_es_05x07.png | Bin 0 -> 147 bytes radio/src/fonts/std_fw/font_es_08x10.lbm | 1 + radio/src/fonts/std_fw/font_es_08x10.png | Bin 0 -> 168 bytes radio/src/fonts/std_fw/font_es_10x14.lbm | 1 + radio/src/fonts/std_fw/font_es_10x14.png | Bin 0 -> 177 bytes radio/src/fonts/std_fw/font_fr_04x06.lbm | 1 + radio/src/fonts/std_fw/font_fr_04x06.png | Bin 0 -> 3610 bytes radio/src/fonts/std_fw/font_fr_05x07.lbm | 1 + radio/src/fonts/std_fw/font_fr_05x07.png | Bin 0 -> 163 bytes radio/src/fonts/std_fw/font_fr_08x10.lbm | 1 + radio/src/fonts/std_fw/font_fr_08x10.png | Bin 0 -> 3647 bytes radio/src/fonts/std_fw/font_fr_10x14.lbm | 1 + radio/src/fonts/std_fw/font_fr_10x14.png | Bin 0 -> 231 bytes radio/src/fonts/std_fw/font_it_04x06.lbm | 1 + radio/src/fonts/std_fw/font_it_04x06.png | Bin 0 -> 145 bytes radio/src/fonts/std_fw/font_it_05x07.lbm | 1 + radio/src/fonts/std_fw/font_it_05x07.png | Bin 0 -> 148 bytes radio/src/fonts/std_fw/font_it_08x10.lbm | 1 + radio/src/fonts/std_fw/font_it_08x10.png | Bin 0 -> 158 bytes radio/src/fonts/std_fw/font_it_10x14.lbm | 1 + radio/src/fonts/std_fw/font_it_10x14.png | Bin 0 -> 178 bytes radio/src/fonts/std_fw/font_pl_04x06.lbm | 1 + radio/src/fonts/std_fw/font_pl_04x06.png | Bin 0 -> 177 bytes radio/src/fonts/std_fw/font_pl_05x07.lbm | 1 + radio/src/fonts/std_fw/font_pl_05x07.png | Bin 0 -> 196 bytes radio/src/fonts/std_fw/font_pl_08x10.lbm | 1 + radio/src/fonts/std_fw/font_pl_08x10.png | Bin 0 -> 266 bytes radio/src/fonts/std_fw/font_pl_10x14.lbm | 1 + radio/src/fonts/std_fw/font_pl_10x14.png | Bin 0 -> 368 bytes radio/src/fonts/std_fw/font_pt_04x06.lbm | 1 + radio/src/fonts/std_fw/font_pt_04x06.png | Bin 0 -> 130 bytes radio/src/fonts/std_fw/font_pt_05x07.lbm | 1 + radio/src/fonts/std_fw/font_pt_05x07.png | Bin 0 -> 246 bytes radio/src/fonts/std_fw/font_pt_08x10.lbm | 1 + radio/src/fonts/std_fw/font_pt_08x10.png | Bin 0 -> 315 bytes radio/src/fonts/std_fw/font_pt_10x14.lbm | 1 + radio/src/fonts/std_fw/font_pt_10x14.png | Bin 0 -> 442 bytes radio/src/fonts/std_fw/font_se_04x06.lbm | 1 + radio/src/fonts/std_fw/font_se_04x06.png | Bin 0 -> 157 bytes radio/src/fonts/std_fw/font_se_05x07.lbm | 1 + radio/src/fonts/std_fw/font_se_05x07.png | Bin 0 -> 160 bytes radio/src/fonts/std_fw/font_se_08x10.lbm | 1 + radio/src/fonts/std_fw/font_se_08x10.png | Bin 0 -> 190 bytes radio/src/fonts/std_fw/font_se_10x14.lbm | 1 + radio/src/fonts/std_fw/font_se_10x14.png | Bin 0 -> 233 bytes 164 files changed, 122 insertions(+) create mode 100644 radio/src/fonts/sqt5_fw/font_03x05.lbm create mode 100644 radio/src/fonts/sqt5_fw/font_03x05.png create mode 100644 radio/src/fonts/sqt5_fw/font_04x06.lbm create mode 100644 radio/src/fonts/sqt5_fw/font_04x06.png create mode 100644 radio/src/fonts/sqt5_fw/font_04x06_extra.lbm create mode 100644 radio/src/fonts/sqt5_fw/font_04x06_extra.png create mode 100644 radio/src/fonts/sqt5_fw/font_05x07.lbm create mode 100644 radio/src/fonts/sqt5_fw/font_05x07.png create mode 100644 radio/src/fonts/sqt5_fw/font_05x07_extra.lbm create mode 100644 radio/src/fonts/sqt5_fw/font_05x07_extra.png create mode 100644 radio/src/fonts/sqt5_fw/font_08x10.lbm create mode 100644 radio/src/fonts/sqt5_fw/font_08x10.png create mode 100644 radio/src/fonts/sqt5_fw/font_10x14.lbm create mode 100644 radio/src/fonts/sqt5_fw/font_10x14.png create mode 100644 radio/src/fonts/sqt5_fw/font_10x14_compressed.lbm create mode 100644 radio/src/fonts/sqt5_fw/font_10x14_compressed.png create mode 100644 radio/src/fonts/sqt5_fw/font_10x14_extra.lbm create mode 100644 radio/src/fonts/sqt5_fw/font_10x14_extra.png create mode 100644 radio/src/fonts/sqt5_fw/font_cz_04x06.lbm create mode 100644 radio/src/fonts/sqt5_fw/font_cz_04x06.png create mode 100644 radio/src/fonts/sqt5_fw/font_cz_05x07.lbm create mode 100644 radio/src/fonts/sqt5_fw/font_cz_05x07.png create mode 100644 radio/src/fonts/sqt5_fw/font_cz_08x10.lbm create mode 100644 radio/src/fonts/sqt5_fw/font_cz_08x10.png create mode 100644 radio/src/fonts/sqt5_fw/font_cz_10x14.lbm create mode 100644 radio/src/fonts/sqt5_fw/font_cz_10x14.png create mode 100644 radio/src/fonts/sqt5_fw/font_de_04x06.lbm create mode 100644 radio/src/fonts/sqt5_fw/font_de_04x06.png create mode 100644 radio/src/fonts/sqt5_fw/font_de_05x07.lbm create mode 100644 radio/src/fonts/sqt5_fw/font_de_05x07.png create mode 100644 radio/src/fonts/sqt5_fw/font_de_08x10.lbm create mode 100644 radio/src/fonts/sqt5_fw/font_de_08x10.png create mode 100644 radio/src/fonts/sqt5_fw/font_de_10x14.lbm create mode 100644 radio/src/fonts/sqt5_fw/font_de_10x14.png create mode 100644 radio/src/fonts/sqt5_fw/font_es_04x06.lbm create mode 100644 radio/src/fonts/sqt5_fw/font_es_04x06.png create mode 100644 radio/src/fonts/sqt5_fw/font_es_05x07.lbm create mode 100644 radio/src/fonts/sqt5_fw/font_es_05x07.png create mode 100644 radio/src/fonts/sqt5_fw/font_es_08x10.lbm create mode 100644 radio/src/fonts/sqt5_fw/font_es_08x10.png create mode 100644 radio/src/fonts/sqt5_fw/font_es_10x14.lbm create mode 100644 radio/src/fonts/sqt5_fw/font_es_10x14.png create mode 100644 radio/src/fonts/sqt5_fw/font_fr_04x06.lbm create mode 100644 radio/src/fonts/sqt5_fw/font_fr_04x06.png create mode 100644 radio/src/fonts/sqt5_fw/font_fr_05x07.lbm create mode 100644 radio/src/fonts/sqt5_fw/font_fr_05x07.png create mode 100644 radio/src/fonts/sqt5_fw/font_fr_08x10.lbm create mode 100644 radio/src/fonts/sqt5_fw/font_fr_08x10.png create mode 100644 radio/src/fonts/sqt5_fw/font_fr_10x14.lbm create mode 100644 radio/src/fonts/sqt5_fw/font_fr_10x14.png create mode 100644 radio/src/fonts/sqt5_fw/font_it_04x06.lbm create mode 100644 radio/src/fonts/sqt5_fw/font_it_04x06.png create mode 100644 radio/src/fonts/sqt5_fw/font_it_05x07.lbm create mode 100644 radio/src/fonts/sqt5_fw/font_it_05x07.png create mode 100644 radio/src/fonts/sqt5_fw/font_it_08x10.lbm create mode 100644 radio/src/fonts/sqt5_fw/font_it_08x10.png create mode 100644 radio/src/fonts/sqt5_fw/font_it_10x14.lbm create mode 100644 radio/src/fonts/sqt5_fw/font_it_10x14.png create mode 100644 radio/src/fonts/sqt5_fw/font_pl_04x06.lbm create mode 100644 radio/src/fonts/sqt5_fw/font_pl_04x06.png create mode 100644 radio/src/fonts/sqt5_fw/font_pl_05x07.lbm create mode 100644 radio/src/fonts/sqt5_fw/font_pl_05x07.png create mode 100644 radio/src/fonts/sqt5_fw/font_pl_08x10.lbm create mode 100644 radio/src/fonts/sqt5_fw/font_pl_08x10.png create mode 100644 radio/src/fonts/sqt5_fw/font_pl_10x14.lbm create mode 100644 radio/src/fonts/sqt5_fw/font_pl_10x14.png create mode 100644 radio/src/fonts/sqt5_fw/font_pt_04x06.lbm create mode 100644 radio/src/fonts/sqt5_fw/font_pt_04x06.png create mode 100644 radio/src/fonts/sqt5_fw/font_pt_05x07.lbm create mode 100644 radio/src/fonts/sqt5_fw/font_pt_05x07.png create mode 100644 radio/src/fonts/sqt5_fw/font_pt_08x10.lbm create mode 100644 radio/src/fonts/sqt5_fw/font_pt_08x10.png create mode 100644 radio/src/fonts/sqt5_fw/font_pt_10x14.lbm create mode 100644 radio/src/fonts/sqt5_fw/font_pt_10x14.png create mode 100644 radio/src/fonts/sqt5_fw/font_se_04x06.lbm create mode 100644 radio/src/fonts/sqt5_fw/font_se_04x06.png create mode 100644 radio/src/fonts/sqt5_fw/font_se_05x07.lbm create mode 100644 radio/src/fonts/sqt5_fw/font_se_05x07.png create mode 100644 radio/src/fonts/sqt5_fw/font_se_08x10.lbm create mode 100644 radio/src/fonts/sqt5_fw/font_se_08x10.png create mode 100644 radio/src/fonts/sqt5_fw/font_se_10x14.lbm create mode 100644 radio/src/fonts/sqt5_fw/font_se_10x14.png create mode 100644 radio/src/fonts/std_fw/font_03x05.lbm create mode 100644 radio/src/fonts/std_fw/font_03x05.png create mode 100644 radio/src/fonts/std_fw/font_04x06.lbm create mode 100644 radio/src/fonts/std_fw/font_04x06.png create mode 100644 radio/src/fonts/std_fw/font_04x06_extra.lbm create mode 100644 radio/src/fonts/std_fw/font_04x06_extra.png create mode 100644 radio/src/fonts/std_fw/font_05x07.lbm create mode 100644 radio/src/fonts/std_fw/font_05x07.png create mode 100644 radio/src/fonts/std_fw/font_05x07_extra.lbm create mode 100644 radio/src/fonts/std_fw/font_05x07_extra.png create mode 100644 radio/src/fonts/std_fw/font_08x10.lbm create mode 100644 radio/src/fonts/std_fw/font_08x10.png create mode 100644 radio/src/fonts/std_fw/font_10x14.lbm create mode 100644 radio/src/fonts/std_fw/font_10x14.png create mode 100644 radio/src/fonts/std_fw/font_10x14_compressed.lbm create mode 100644 radio/src/fonts/std_fw/font_10x14_compressed.png create mode 100644 radio/src/fonts/std_fw/font_10x14_extra.lbm create mode 100644 radio/src/fonts/std_fw/font_10x14_extra.png create mode 100644 radio/src/fonts/std_fw/font_cz_04x06.lbm create mode 100644 radio/src/fonts/std_fw/font_cz_04x06.png create mode 100644 radio/src/fonts/std_fw/font_cz_05x07.lbm create mode 100644 radio/src/fonts/std_fw/font_cz_05x07.png create mode 100644 radio/src/fonts/std_fw/font_cz_08x10.lbm create mode 100644 radio/src/fonts/std_fw/font_cz_08x10.png create mode 100644 radio/src/fonts/std_fw/font_cz_10x14.lbm create mode 100644 radio/src/fonts/std_fw/font_cz_10x14.png create mode 100644 radio/src/fonts/std_fw/font_de_04x06.lbm create mode 100644 radio/src/fonts/std_fw/font_de_04x06.png create mode 100644 radio/src/fonts/std_fw/font_de_05x07.lbm create mode 100644 radio/src/fonts/std_fw/font_de_05x07.png create mode 100644 radio/src/fonts/std_fw/font_de_08x10.lbm create mode 100644 radio/src/fonts/std_fw/font_de_08x10.png create mode 100644 radio/src/fonts/std_fw/font_de_10x14.lbm create mode 100644 radio/src/fonts/std_fw/font_de_10x14.png create mode 100644 radio/src/fonts/std_fw/font_es_04x06.lbm create mode 100644 radio/src/fonts/std_fw/font_es_04x06.png create mode 100644 radio/src/fonts/std_fw/font_es_05x07.lbm create mode 100644 radio/src/fonts/std_fw/font_es_05x07.png create mode 100644 radio/src/fonts/std_fw/font_es_08x10.lbm create mode 100644 radio/src/fonts/std_fw/font_es_08x10.png create mode 100644 radio/src/fonts/std_fw/font_es_10x14.lbm create mode 100644 radio/src/fonts/std_fw/font_es_10x14.png create mode 100644 radio/src/fonts/std_fw/font_fr_04x06.lbm create mode 100644 radio/src/fonts/std_fw/font_fr_04x06.png create mode 100644 radio/src/fonts/std_fw/font_fr_05x07.lbm create mode 100644 radio/src/fonts/std_fw/font_fr_05x07.png create mode 100644 radio/src/fonts/std_fw/font_fr_08x10.lbm create mode 100644 radio/src/fonts/std_fw/font_fr_08x10.png create mode 100644 radio/src/fonts/std_fw/font_fr_10x14.lbm create mode 100644 radio/src/fonts/std_fw/font_fr_10x14.png create mode 100644 radio/src/fonts/std_fw/font_it_04x06.lbm create mode 100644 radio/src/fonts/std_fw/font_it_04x06.png create mode 100644 radio/src/fonts/std_fw/font_it_05x07.lbm create mode 100644 radio/src/fonts/std_fw/font_it_05x07.png create mode 100644 radio/src/fonts/std_fw/font_it_08x10.lbm create mode 100644 radio/src/fonts/std_fw/font_it_08x10.png create mode 100644 radio/src/fonts/std_fw/font_it_10x14.lbm create mode 100644 radio/src/fonts/std_fw/font_it_10x14.png create mode 100644 radio/src/fonts/std_fw/font_pl_04x06.lbm create mode 100644 radio/src/fonts/std_fw/font_pl_04x06.png create mode 100644 radio/src/fonts/std_fw/font_pl_05x07.lbm create mode 100644 radio/src/fonts/std_fw/font_pl_05x07.png create mode 100644 radio/src/fonts/std_fw/font_pl_08x10.lbm create mode 100644 radio/src/fonts/std_fw/font_pl_08x10.png create mode 100644 radio/src/fonts/std_fw/font_pl_10x14.lbm create mode 100644 radio/src/fonts/std_fw/font_pl_10x14.png create mode 100644 radio/src/fonts/std_fw/font_pt_04x06.lbm create mode 100644 radio/src/fonts/std_fw/font_pt_04x06.png create mode 100644 radio/src/fonts/std_fw/font_pt_05x07.lbm create mode 100644 radio/src/fonts/std_fw/font_pt_05x07.png create mode 100644 radio/src/fonts/std_fw/font_pt_08x10.lbm create mode 100644 radio/src/fonts/std_fw/font_pt_08x10.png create mode 100644 radio/src/fonts/std_fw/font_pt_10x14.lbm create mode 100644 radio/src/fonts/std_fw/font_pt_10x14.png create mode 100644 radio/src/fonts/std_fw/font_se_04x06.lbm create mode 100644 radio/src/fonts/std_fw/font_se_04x06.png create mode 100644 radio/src/fonts/std_fw/font_se_05x07.lbm create mode 100644 radio/src/fonts/std_fw/font_se_05x07.png create mode 100644 radio/src/fonts/std_fw/font_se_08x10.lbm create mode 100644 radio/src/fonts/std_fw/font_se_08x10.png create mode 100644 radio/src/fonts/std_fw/font_se_10x14.lbm create mode 100644 radio/src/fonts/std_fw/font_se_10x14.png diff --git a/radio/src/fonts/sqt5_fw/font_03x05.lbm b/radio/src/fonts/sqt5_fw/font_03x05.lbm new file mode 100644 index 000000000..1e163ee0d --- /dev/null +++ b/radio/src/fonts/sqt5_fw/font_03x05.lbm @@ -0,0 +1 @@ +0x04,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0x11,0x0e,0x12,0x1f,0x10,0x19,0x15,0x13,0x11,0x15,0x1f,0x07,0x04,0x1f,0x17,0x15,0x1d,0x1f,0x15,0x1d,0x01,0x1d,0x03,0x1f,0x15,0x1f,0x17,0x15,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x1f,0x11, diff --git a/radio/src/fonts/sqt5_fw/font_03x05.png b/radio/src/fonts/sqt5_fw/font_03x05.png new file mode 100644 index 0000000000000000000000000000000000000000..c378d30f00d8dc9d479bb2526dbc754ed709ec9a GIT binary patch literal 222 zcmeAS@N?(olHy`uVBq!ia0vp^;XusF!2~4tzj=NfNHG=%xjQkeJ16rJ$l)yTh%9Dc z;1&j9Muu5)B!GhKC7!;n?04B^#Q2%dEM&e26e{p^aSX9IeKzDY-vI@V=%4@V-|?li ze7JPk$=_u))7pk7mzf)cOc*9u-u>0^^Wy!4%+niL8G3w!xHl+Vc~)+#&MuvBlglo~ z>-k+ltE}%o7AUW8V!7BS#NZ!;N~;K!9C9+i@IUFj{N#`gy!wiN?kp zTbda1NZa9w^G6+ZrvDK24OoZ)T1`UEk2)W3a1Wu534Af)5Q(}DCNpz7fnh$%Yfy&#Ha?0Ylq1GZoEXk!?}mp*4;9r^E~cX z;9)B1x_1?649=Sb&YZ3r)RvJ46dEC7{K(ZKgmX^`k(TZ)#c-Z!{o^sJJmlKn1&@e_ zOn^mM>MBVD=}MYpG#XJRh;Zt<3QiVTN~sojDn_z8LU=u`OR!AiutboCPkt!1@?DyE zh={-nml*FVJ-NDcp#gwpz>PzEGVa2a(%P}GxON0oE~Hf@HaQIDVWbXEq2Vp?r_oX) zMsPEYh>8e#AeXoWx*-cfX~YfFmSD%A#Zv>7>jamLZV7d_qY&X7rlnB?^{N~tE_tZR z7ds)Lg;TaPK63>yO$eBxM{iSa%PfB~0n6X~te3cjz6w6giMfHu`cLhmfdr znO_oq8ZC8wdrFCsDb2-O@M4t7Z)4|(GMI>I32eA;09>z&sMXES+}JiXoRT}d%R??7 z=l$q~3t@|BvfJ@fa*0xTIQD#4@om$NO&{*|@kl9tTk&v(hoW3xMAX|!Xor@fQ+Ho5 z;G>p3ua;7s)5(9YT6*ZsOTR^|hgtE~MpqnmsbV^#@xGH`Yf%2u3)80A(JR+V{ z9vX7PTI?b7R#zb(4g7d}Sb|?AThLLLqc_%4ijc@;s}qeBmbu#1YRT=tn-_5xi5H8o z72Zdw{vgf7h^548$=!700)&dwk7?ei*r!!X-v<_t%a2r5L;wH)07*qoM6N<$f|E*= A%>V!Z literal 0 HcmV?d00001 diff --git a/radio/src/fonts/sqt5_fw/font_04x06_extra.lbm b/radio/src/fonts/sqt5_fw/font_04x06_extra.lbm new file mode 100644 index 000000000..cce1e9d68 --- /dev/null +++ b/radio/src/fonts/sqt5_fw/font_04x06_extra.lbm @@ -0,0 +1 @@ +0x04,0x02,0x3b,0x02,0x04,0x08,0x10,0x37,0x10,0x08,0x20,0x12,0x0a,0x02,0x1e,0x02,0x24,0x28,0x20,0x3c,0x3c,0x20,0x28,0x24,0x02,0x1e,0x02,0x0a,0x12,0x20, diff --git a/radio/src/fonts/sqt5_fw/font_04x06_extra.png b/radio/src/fonts/sqt5_fw/font_04x06_extra.png new file mode 100644 index 0000000000000000000000000000000000000000..dd59c2e2baf81a726c751c2ab0a129c819ca0638 GIT binary patch literal 159 zcmeAS@N?(olHy`uVBq!ia0vp^azM<^$P6S^)$=z2DYgKg5LY1m|NsA`H|O64vN#Jo zB8wRqxP?KOkzv*x37{Z*iKnkC`&~9}Zc)avOYbHFg>*b!978y+C-3#2^TaKL7uhokOO5hNUPm-LoX8B(5k>1zLLVhxL?F&Z6^WeClfF%US1q z5vAjguAm1x-u%>b%Tmgac9wiD?Y)nM(4q<<=bB!ho6?q2YP#ikpJ%N1%6m7rbjS>r za!1NB(h#Px=q1J*V0PQQ*?@(>r9xWl0)pMRwiTTV6=0c7llDG&m64$E0VMcUPxCC(GZ+tJ z^iIz8MO(8pbP%NH(^wz{)?PuN!d&X%4OTqe7H}Ie4X_-hVr#E4_fVG%m04p!NOsJR z9JgE_;TptPEulF=OTD%9c1csK;h8bsdaDK?KsRX#I|2IdDND#PW;B}pwx`m<1i}$x z;z4SlXO{bl8shel8B=sQPv9QBF@Tp2J&ox?Z=s?rV|^kH^V%Tq)qZW_D zjQuZtf?W!oC2(?$oCl!FWE7E3Br(G1sKaw|^~XI>f<)fJYj0 zXdF3(2~B&4`|I&M^ISSUc?I^Q5@c{}3whL(L#diW`F)0j6^|S}A#?M(!0PR>C=JUx zejuk9rZ`FLki_9>I9!*OhujeH-(+BBeXpANKZk<#E{=*VEq5#eupqCPvlG5oy_b^P z8U;iaR=9ETlU(adnpVral=$~5n+ar488~4EmP69o(ng!G`JK-1OaR~jAg#s>JxOa`DkOg02zFS5LZ`tf;JVK8R z4w>enmY&uo=@GY*@F~m@-GKC-7y;4_E1a00000 LNkvXXu0mjfr*o#} literal 0 HcmV?d00001 diff --git a/radio/src/fonts/sqt5_fw/font_05x07_extra.lbm b/radio/src/fonts/sqt5_fw/font_05x07_extra.lbm new file mode 100644 index 000000000..ea644215a --- /dev/null +++ b/radio/src/fonts/sqt5_fw/font_05x07_extra.lbm @@ -0,0 +1 @@ +0x04,0x02,0x7b,0x02,0x04,0x10,0x20,0x6f,0x20,0x10,0x20,0x12,0x0a,0x02,0x1e,0x02,0x24,0x28,0x20,0x3c,0x3c,0x20,0x28,0x24,0x02,0x1e,0x02,0x0a,0x12,0x20, diff --git a/radio/src/fonts/sqt5_fw/font_05x07_extra.png b/radio/src/fonts/sqt5_fw/font_05x07_extra.png new file mode 100644 index 0000000000000000000000000000000000000000..4d939852c36bb0096c69d7df76eb47c9a3d73aff GIT binary patch literal 161 zcmeAS@N?(olHy`uVBq!ia0vp^azM<%$P6T}6y8k-QfvV}A+A9B|Ns9>Z_d99WN{XF zL>4nJa0`PlBg3pY5H=O_PcD{+@gZnssFwMh4egK978y+C-39y5|4@1p7%u zK~#9!?OfZI>mUeCvi$#F_B?b=CPx7`H)A@46>2@Rpt)ZlN(u>v1j+^Gd}N%0?;ZTDVV-pX0d^HoU$)2gJZH;xU!>RmTEJl zQagu?&qPK6)LKu5HU^jcK>oMcB8^B?=3DMePG>No8A=(s1J3pLA9`WbpQmRZ`S)Ia zep2sp(bsv)g!yW%&7P1o{o48DR3MugRS^7;ARcbt4C!pvTfzlPaE01>Vd@dUy0F-pBCLv3Zdd`diVtwgkC_+0F*nj^rEa-7hk@t(Rshj?sk?GwX z=laN@xbcVmRdyhD9|(PVF70w+g2WG8#Ktk*_FvEVg2R^wclrQXn?GNV*9gd|jLiq& z0j^pAAxOZ2bIIYU!I}3mAeW;yLGl(R+hz9v`VugK82X;rJZ6|S4XtR2BB+NDdTkOU z(L|`^IEYWWf*+|!r)O)rz_|5a@*xq_&ooqqIj^E2*XoBQ7bP6o! zuRR>*)5yS?3jE5cna=>3ks%i}w?2Ww6GKlT=1c|TK7;^Xt-sO9y#iPO3*t5`X>CAE z#%5>De<1@?fz*vJ7{D!>hg82Sh=snw0_aB$W(l zVISvqneBuZvGT)+cADlL^B4aJIA|KFC4`T|NfqOo|-W58Kb6jijJ|g=9eP zG8`-(7uZD77vkR#19f*6tOp3?eh(8;|cA4n!cN+Wcx# z_;7#|PdHoQ ztv`s|=r0yD2Z~@}%6kv(zt65cP?%9`@7FA_4p8_NIoOqNJd$3!GR=! zFhlr84~T-~$~_Re5Hi?dWndsZTEl{uKqKpws{#wC9mqMa4Jb1K$I+%jef!X&a>}7S z4S7Z5NqR`Q{%l_k4UK&ho0opyV}i2d?(OcotmZ%E76i)dW3$!5d>$`L0Lz9$sc6qk z85m0w@%kS_fAjlAZe;DD?W+vrs~rt;Z5R6#JF5*_wO;3bDB^vzz(WW`@d^M6LqqPc z8DK$kLi<0sljQdIzM$NQw (Re=h_@wChLo@h@iI@{;?;S;FfxWDyfDO${Dhy|(c zopgrnszNI{S~celJR(mkNI92mTSncJYn zmhn!23Nmi&ovi!)HDH7jmgN?Xy*S@IlLwow4wk#mCkjz8bDxtzNisfQ2k`z4A>twr we<5$yGOl$6>Hm)&RoeZawAmbPPKF}>0lexrI`&wwCjbBd07*qoM6N<$f)F>BS^xk5 literal 0 HcmV?d00001 diff --git a/radio/src/fonts/sqt5_fw/font_10x14.lbm b/radio/src/fonts/sqt5_fw/font_10x14.lbm new file mode 100644 index 000000000..a53a3e8f0 --- /dev/null +++ b/radio/src/fonts/sqt5_fw/font_10x14.lbm @@ -0,0 +1,6 @@ +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x71,0xfe,0x71,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x7e,0x00,0x00,0x00,0x00,0x00,0x7e,0x00,0x3e,0x00,0x00,0x00,0x00,0x00,0x60,0x06,0x60,0x06,0xfe,0x7f,0xfe,0x7f,0x60,0x06,0x60,0x06,0xfe,0x7f,0xfe,0x7f,0x60,0x06,0x60,0x06,0x60,0x18,0xf0,0x18,0x98,0x19,0x98,0x19,0xfe,0x7f,0xfe,0x7f,0x98,0x19,0x98,0x19,0x18,0x0f,0x18,0x06,0x0c,0x18,0x1e,0x1c,0x1e,0x0e,0x0c,0x07,0x80,0x03,0xc0,0x01,0xe0,0x30,0x70,0x78,0x38,0x78,0x18,0x30,0x78,0x1e,0xfc,0x3f,0x8e,0x71,0xc6,0x63,0xe6,0x67,0x76,0x66,0x3c,0x3c,0x18,0x3c,0x00,0x66,0x00,0x66,0x00,0x00,0x00,0x00,0x66,0x00,0x76,0x00,0x3e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x07,0xf0,0x0f,0x38,0x1c,0x1c,0x38,0x0e,0x70,0x06,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x60,0x0e,0x70,0x1c,0x38,0x38,0x1c,0xf0,0x0f,0xe0,0x07,0x00,0x00,0x00,0x00,0x60,0x06,0x60,0x06,0xc0,0x03,0x80,0x01,0xf8,0x1f,0xf8,0x1f,0x80,0x01,0xc0,0x03,0x60,0x06,0x60,0x06,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xf8,0x1f,0xf8,0x1f,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x66,0x00,0x76,0x00,0x3e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x78,0x00,0x78,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x1c,0x00,0x0e,0x00,0x07,0x80,0x03,0xc0,0x01,0xe0,0x00,0x70,0x00,0x38,0x00,0x18,0x00, +0x00,0x00,0x00,0x00,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x7e,0x0e,0x7f,0x8e,0x7f,0x86,0x63,0x86,0x61,0xfe,0x61,0xfe,0x61,0xfc,0x60,0x00,0x00,0x00,0x00,0x06,0x60,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f,0x00,0x00,0x00,0x00,0xfe,0x00,0xfe,0x01,0xfe,0x01,0x80,0x01,0x80,0x01,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x00,0x00,0x00,0xfe,0x30,0xfe,0x71,0xfe,0x71,0x86,0x61,0x86,0x61,0x86,0x7f,0x86,0x7f,0x06,0x3f,0x00,0x00,0x00,0x00,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x8e,0x7f,0x8e,0x7f,0x0c,0x3f,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x86,0x7f,0xc6,0x7f,0xfe,0x7f,0x7e,0x00,0x3e,0x00,0x00,0x00,0x00,0x00,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f,0x00,0x00,0x00,0x00,0x7c,0x30,0xfe,0x71,0xfe,0x71,0x86,0x61,0x86,0x61,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f,0x00,0x00,0x00,0x00,0x78,0x1e,0x78,0x1e,0x78,0x1e,0x78,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x66,0x78,0x76,0x78,0x3e,0x30,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0xc0,0x03,0xe0,0x07,0x70,0x0e,0x38,0x1c,0x1c,0x38,0x0e,0x70,0x06,0x60,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x06,0x60,0x0e,0x70,0x1c,0x38,0x38,0x1c,0x70,0x0e,0xe0,0x07,0xc0,0x03,0x80,0x01,0x00,0x00,0x00,0x00,0x18,0x00,0x1c,0x00,0x0e,0x00,0x06,0x00,0x06,0x66,0x06,0x67,0x86,0x03,0xce,0x01,0xfc,0x00,0x78,0x00, +0x78,0x00,0xfc,0x00,0xce,0x01,0x86,0x01,0x86,0x01,0xce,0x01,0xfc,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0xfc,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0xfe,0x7f,0xfe,0x7f,0xfc,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0xfe,0x61,0xfe,0x7f,0xfc,0x7f,0x00,0x3f,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x06,0x60,0x0e,0x70,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x06,0x00,0x06,0x00,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x7f,0x86,0x7f,0x80,0x3f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x00,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x78,0x00,0x78,0x00,0x60,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x3f,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0xc0,0x03,0xe0,0x07,0xf0,0x0f,0x78,0x1e,0x3c,0x3c,0x1e,0x78,0x0e,0x70,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0xfc,0x7f,0xfe,0x7f,0xfe,0x7f,0x06,0x00,0xfe,0x01,0xfe,0x01,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0xfc,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x06,0x00,0x06,0x00,0x06,0x00,0x0e,0x00,0xfc,0x7f,0xf8,0x7f,0xf0,0x7f,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f, +0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0xfe,0x01,0xfe,0x01,0xfc,0x00,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x66,0x06,0x6e,0x06,0x1c,0xfe,0x39,0xfe,0x73,0xfc,0x67,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0xfe,0x01,0xfe,0x7f,0xfc,0x7f,0x00,0x7f,0xfc,0x38,0xfe,0x79,0xfe,0x79,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x9e,0x7f,0x9e,0x7f,0x1c,0x3f,0x06,0x00,0x06,0x00,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0xfe,0x3f,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x3f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x70,0x00,0x38,0x00,0x1c,0x00,0x0e,0x00,0x07,0xfe,0x03,0xfe,0x01,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x70,0x00,0x3e,0x00,0x3e,0x00,0x70,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x1e,0x78,0x3e,0x7c,0x7e,0x7e,0xe0,0x07,0xc0,0x03,0xc0,0x03,0xe0,0x07,0x7e,0x7e,0x3e,0x7c,0x1e,0x78,0xfe,0x00,0xfe,0x01,0xfe,0x03,0x00,0x7f,0x00,0x7e,0x00,0x7e,0x00,0x7f,0xfe,0x03,0xfe,0x01,0xfe,0x00,0x06,0x78,0x06,0x7c,0x06,0x7e,0x06,0x67,0x86,0x63,0xc6,0x61,0xe6,0x60,0x7e,0x60,0x3e,0x60,0x1e,0x60,0x00,0x00,0x00,0x00,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x00,0x00,0x00,0x00,0x18,0x00,0x38,0x00,0x70,0x00,0xe0,0x00,0xc0,0x01,0x80,0x03,0x00,0x07,0x00,0x0e,0x00,0x1c,0x00,0x18,0x00,0x00,0x00,0x00,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x00,0x00,0x00,0x00,0x60,0x00,0x70,0x00,0x38,0x00,0x1c,0x00,0x0e,0x00,0x0e,0x00,0x1c,0x00,0x38,0x00,0x70,0x00,0x60,0x00,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60, +0x00,0x00,0x00,0x00,0x06,0x00,0x0e,0x00,0x1c,0x00,0x38,0x00,0x70,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x60,0x7e,0x60,0x7e,0x60,0x7e,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0x67,0xe0,0x67,0xe0,0x67,0x80,0x01,0x80,0x61,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x06,0x60,0x06,0x00,0x1e,0x00,0x1e,0x00,0xe0,0xcf,0xe0,0xcf,0xe0,0xcf,0x60,0xcc,0x60,0xcc,0x60,0xcc,0x60,0xcc,0xe0,0xff,0xe0,0xff,0xe0,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x00,0x00,0x00,0x00,0x60,0x60,0x60,0x60,0xe6,0x7f,0xe6,0x7f,0xe0,0x7f,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0xf0,0x00,0xf0,0x00,0xf0,0x00,0xc0,0x60,0xc0,0x60,0xc0,0xe6,0xff,0xe6,0xff,0xe0,0x7f,0x00,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x0f,0x80,0x1f,0xc0,0x39,0xe0,0x70,0x70,0x60,0x30,0x60,0x00,0x00,0x00,0x00,0x00,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0x00,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x00,0xe0,0x07,0xe0,0x07,0xe0,0x00,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0xe0,0x7f,0xe0,0x7f,0xc0,0x7f,0xc0,0x3f,0xe0,0x7f,0xe0,0x7f,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xe0,0x7f,0xe0,0x7f,0xc0,0x3f, +0xe0,0xff,0xe0,0xff,0xe0,0xff,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0xe0,0x07,0xe0,0x07,0xe0,0x07,0xe0,0x07,0xe0,0x07,0xe0,0x07,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0xe0,0xff,0xe0,0xff,0xe0,0xff,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xc0,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0xe0,0x01,0xe0,0x01,0xe0,0x01,0xe0,0x67,0xe0,0x67,0xe0,0x67,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x7e,0x60,0x7e,0x60,0x7e,0x60,0x00,0x60,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x60,0x60,0x00,0x60,0x00,0x78,0x00,0x78,0x00,0x78,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x00,0x70,0x00,0x38,0x00,0x1c,0x00,0x0e,0x00,0x07,0xe0,0x03,0xe0,0x01,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x00,0x70,0x00,0x3c,0x00,0x3c,0x00,0x70,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x60,0xe0,0x70,0xe0,0x79,0xc0,0x3f,0x80,0x1f,0x80,0x1f,0xc0,0x3f,0xe0,0x79,0xe0,0x70,0x60,0x60,0xe0,0xcf,0xe0,0xcf,0xe0,0xcf,0x00,0xcc,0x00,0xcc,0x00,0xcc,0x00,0xcc,0xe0,0xff,0xe0,0xff,0xe0,0x7f,0x60,0x60,0x60,0x70,0x60,0x78,0x60,0x7c,0x60,0x7e,0x60,0x6f,0xe0,0x67,0xe0,0x63,0xe0,0x61,0xe0,0x60,0x00,0x00,0x00,0x00,0x80,0x01,0xc0,0x03,0x78,0x1e,0x7c,0x3e,0x0e,0x70,0x06,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x7f,0xfe,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x60,0x0e,0x70,0x7c,0x3e,0x78,0x1e,0xc0,0x03,0x80,0x01,0x00,0x00,0x00,0x00,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x18,0x18,0x38,0x1c,0xf0,0x0f,0xe0,0x07,0xc0,0x03,0x80,0x01,0x80,0x01,0xc0,0x03,0xe0,0x07,0xf0,0x0f,0x38,0x1c,0x18,0x18,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01, diff --git a/radio/src/fonts/sqt5_fw/font_10x14.png b/radio/src/fonts/sqt5_fw/font_10x14.png new file mode 100644 index 0000000000000000000000000000000000000000..e7b202905d412f91ece0512041b0ff7b13c273b4 GIT binary patch literal 1809 zcmV+s2k!WZP)003YJ0ssI26-DmO00006VoOIv0RI60 z0RN!9r;`8x010qNS#tmY3ljhU3ljkVnw%H_000McNliru-3K2OItb`J4%K ze|-;sm6@5k`EkQ&JD({2F}L9_5?xwTfW;g?WYsiyu_c1Qg)F)??y9yDcxC>4``M8!{#!F|d z9h>{Tsgm#F#q){hAAgmSV-bd!fxG8NOxfgNQ9l(JFsyKQdTXp$of@AP43QM+-x%6urK#bTaUj5(^jKQ+ER)IDD{` z%((oh3A1SS0f@17R#3hz<6?NM7pME}PB#${d(D%@%U{>LxhzzRWKbR}k#-PWjo3H* zRP*X!-nUgNLLJG}ER16bNC8ytxB0R5$eRRfkJ5F}Nc~C(gsHDK4POe6Fq3zK1jw^E zHGHiM`#tr7GlC=)un>&oxWiGGHCtwmL)6mH_3xjh$#&h3X+BFCZH}nK@?PYqV4@2O z6Ip?%`S>(*rlyp9qDg8H>kCb1SO#dOOYJ3G^*sK3Iiurmj+(oO-=31=MeJZ-f)2CS zeHVl0nfPaP7_--KP$mu0fT1A^ht~%2WAekCP zr~l(y??oPz%CQ=I7e|oN^d-f4B_q}hV(bC_Dczj46D@<_C`b<}ZsQHj*JpM#B3#(9 zf7l&T7mK0^{`s;tUi1}Ptywcc(U}P=UC(9&Kn`~C ztTE!MR76T}gRJjySA(Lx$_4hAio3^glxFNx1R6uPg(%ZXwCurUIB!aDM7i8P3Ffkc zMOg~EsBMH0;L9Gl=KHjkyc|y*yhqTceElTb43X>JxeMoZGDo{X}ZajGVxr{IhCt&g2?|AM3RpdYO4iHs0DI|}lKn?E^ zIo>+>8@B#k3`7}GdAtz3Tc%x8$C3de%7Rw&xPHqH_@lHQ!(BU%4{gw|xTrm;H)@7{ z4=x?24|(!BSj}K`us{-QVFUjIUhi0AJiy0P>AQ@Av-84%wH1r^VvmcwHboQZ+x*y$ z-4qvlLkOK5>qgd*aw-R>l;T}PilhvCxwWI^IIGu$Nc@1}PYZXYwDxW0GKR-_&VA>? z-T6~R2ONY&K}u<5N_0$jyuJ_>3t7BZb`oU;?d-*`mQF+>b8v>(9|A_wd*HnWdRLGpt_l`$Ad0HEH5fJ-E zpD)r5roNaPYUwH_1gq}Vwk*)tG-3|6i#${4ph-^KP5IXc#sq`y3hVn2=~ z+;>5rI$Oi{Cod?$MvKL+Tt{Z)xH0&x3Sj=LDEE6DNoo8n@li$1nJ=itEqhrB9-u+M zG=wp_tkZmTJJ#|NS%Oy@Mx-QfPu6r$z*lo`22XS{Araed zbm4JzGkCN`?(zu!jq>7Evt{qY->ne&M30VPMiD|WHwpft*Eg>2A^KZjq8j$%wWGnl zuCJr$`(aZ{yfl-9>ZD=$IhWh3nOB4K+`IoXdr|E}sMYH;Z&P)4@7uv%JtLU|ByLZ1 zKYYZ421oAxX12&NQ~$__J4M?SP&9MStCJejZAfL;x42Za1M1Zl#j-4@(!IB=PK)b$ zPR(#KQ@@u&*JV}NJ=i2Y%1-NUN)dMz@nDPaw7VC(NU%a!9ltKDYv$ZsgC$vjT87jY z?RzkMJ|2veSMw;3F`Qm;{y4)=iv;gj^8Di;!rZC6(Gtov00000NkvXXu0mjf;`?sI literal 0 HcmV?d00001 diff --git a/radio/src/fonts/sqt5_fw/font_10x14_compressed.lbm b/radio/src/fonts/sqt5_fw/font_10x14_compressed.lbm new file mode 100644 index 000000000..4cb8fa302 --- /dev/null +++ b/radio/src/fonts/sqt5_fw/font_10x14_compressed.lbm @@ -0,0 +1 @@ +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x66,0x00,0x76,0x00,0x3e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x78,0x00,0x78,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0x00,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x7e,0x0e,0x7f,0x8e,0x7f,0x86,0x63,0x86,0x61,0xfe,0x61,0xfe,0x61,0xfc,0x60,0x00,0x00,0x00,0x00,0x06,0x60,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f,0x00,0x00,0x00,0x00,0xfe,0x00,0xfe,0x01,0xfe,0x01,0x80,0x01,0x80,0x01,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x00,0x00,0x00,0xfe,0x30,0xfe,0x71,0xfe,0x71,0x86,0x61,0x86,0x61,0x86,0x7f,0x86,0x7f,0x06,0x3f,0x00,0x00,0x00,0x00,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x8e,0x7f,0x8e,0x7f,0x0c,0x3f,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x86,0x7f,0xc6,0x7f,0xfe,0x7f,0x7e,0x00,0x3e,0x00,0x00,0x00,0x00,0x00,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f,0x00,0x00,0x00,0x00,0x7c,0x30,0xfe,0x71,0xfe,0x71,0x86,0x61,0x86,0x61,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f,0x00,0x00,0x00,0x00,0x78,0x1e,0x78,0x1e,0x78,0x1e,0x78,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0xfe,0x7f,0xfe,0x7f,0xfc,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0xfe,0x61,0xfe,0x7f,0xfc,0x7f,0x00,0x3f,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x06,0x60,0x0e,0x70,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x06,0x00,0x06,0x00,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x7f,0x86,0x7f,0x80,0x3f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x00,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x78,0x00,0x78,0x00,0x60,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x3f,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0xc0,0x03,0xe0,0x07,0xf0,0x0f,0x78,0x1e,0x3c,0x3c,0x1e,0x78,0x0e,0x70,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0xfc,0x7f,0xfe,0x7f,0xfe,0x7f,0x06,0x00,0xfe,0x01,0xfe,0x01,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0xfc,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x06,0x00,0x06,0x00,0x06,0x00,0x0e,0x00,0xfc,0x7f,0xf8,0x7f,0xf0,0x7f,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0xfe,0x01,0xfe,0x01,0xfc,0x00,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x66,0x06,0x6e,0x06,0x1c,0xfe,0x39,0xfe,0x73,0xfc,0x67,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0xfe,0x01,0xfe,0x7f,0xfc,0x7f,0x00,0x7f,0xfc,0x38,0xfe,0x79,0xfe,0x79,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x9e,0x7f,0x9e,0x7f,0x1c,0x3f,0x06,0x00,0x06,0x00,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0xfe,0x3f,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x3f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x70,0x00,0x38,0x00,0x1c,0x00,0x0e,0x00,0x07,0xfe,0x03,0xfe,0x01,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x70,0x00,0x3e,0x00,0x3e,0x00,0x70,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x1e,0x78,0x3e,0x7c,0x7e,0x7e,0xe0,0x07,0xc0,0x03,0xc0,0x03,0xe0,0x07,0x7e,0x7e,0x3e,0x7c,0x1e,0x78,0xfe,0x00,0xfe,0x01,0xfe,0x03,0x00,0x7f,0x00,0x7e,0x00,0x7e,0x00,0x7f,0xfe,0x03,0xfe,0x01,0xfe,0x00,0x06,0x78,0x06,0x7c,0x06,0x7e,0x06,0x67,0x86,0x63,0xc6,0x61,0xe6,0x60,0x7e,0x60,0x3e,0x60,0x1e,0x60,0x60,0x7e,0x60,0x7e,0x60,0x7e,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0x67,0xe0,0x67,0xe0,0x67,0x80,0x01,0x80,0x61,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x06,0x60,0x06,0x00,0x1e,0x00,0x1e,0x00,0xe0,0xcf,0xe0,0xcf,0xe0,0xcf,0x60,0xcc,0x60,0xcc,0x60,0xcc,0x60,0xcc,0xe0,0xff,0xe0,0xff,0xe0,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x00,0x00,0x00,0x00,0x60,0x60,0x60,0x60,0xe6,0x7f,0xe6,0x7f,0xe0,0x7f,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0xf0,0x00,0xf0,0x00,0xf0,0x00,0xc0,0x60,0xc0,0x60,0xc0,0xe6,0xff,0xe6,0xff,0xe0,0x7f,0x00,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x0f,0x80,0x1f,0xc0,0x39,0xe0,0x70,0x70,0x60,0x30,0x60,0x00,0x00,0x00,0x00,0x00,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0x00,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x00,0xe0,0x07,0xe0,0x07,0xe0,0x00,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0xe0,0x7f,0xe0,0x7f,0xc0,0x7f,0xc0,0x3f,0xe0,0x7f,0xe0,0x7f,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xe0,0x7f,0xe0,0x7f,0xc0,0x3f,0xe0,0xff,0xe0,0xff,0xe0,0xff,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0xe0,0x07,0xe0,0x07,0xe0,0x07,0xe0,0x07,0xe0,0x07,0xe0,0x07,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0xe0,0xff,0xe0,0xff,0xe0,0xff,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xc0,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0xe0,0x01,0xe0,0x01,0xe0,0x01,0xe0,0x67,0xe0,0x67,0xe0,0x67,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x7e,0x60,0x7e,0x60,0x7e,0x60,0x00,0x60,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x60,0x60,0x00,0x60,0x00,0x78,0x00,0x78,0x00,0x78,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x00,0x70,0x00,0x38,0x00,0x1c,0x00,0x0e,0x00,0x07,0xe0,0x03,0xe0,0x01,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x00,0x70,0x00,0x3c,0x00,0x3c,0x00,0x70,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x60,0xe0,0x70,0xe0,0x79,0xc0,0x3f,0x80,0x1f,0x80,0x1f,0xc0,0x3f,0xe0,0x79,0xe0,0x70,0x60,0x60,0xe0,0xcf,0xe0,0xcf,0xe0,0xcf,0x00,0xcc,0x00,0xcc,0x00,0xcc,0x00,0xcc,0xe0,0xff,0xe0,0xff,0xe0,0x7f,0x60,0x60,0x60,0x70,0x60,0x78,0x60,0x7c,0x60,0x7e,0x60,0x6f,0xe0,0x67,0xe0,0x63,0xe0,0x61,0xe0,0x60, diff --git a/radio/src/fonts/sqt5_fw/font_10x14_compressed.png b/radio/src/fonts/sqt5_fw/font_10x14_compressed.png new file mode 100644 index 0000000000000000000000000000000000000000..a8ff6a6f315b3b3f330036750d04ce46e23191a2 GIT binary patch literal 1157 zcmV;01bX|4P)e zSad^gZEa<4bO1wgWnpw>WFU8GbZ8()Nlj2!fese{00ZqwL_t(|+U;H2j_n`_J)QLb zf4S#rlE(4EWua)-O6FxpQ4tUjJJ<6(&p(172!bF8f=Gh<#6?}#RsFr^i@*Dn?IiSC zZF=o~e;@s39a}m-3q32JHT(6ZhnT+>l5rzwmTh``AJJ>=g=Af|zO{a%{r2v!RPMC< zrqMN|{8{D7qkocpL+d?ajTUl<*Ae>`DGMugD{_COa%a)Y74o;U3=jlC%))*0;-nc81U+fi!ZYsd z`DwGcwRW0_Ix=%Dja1R}W<%?wC0?MJ8P6I zy?V90IL&GhJhi=^*Yp_-;LZ*Nntxt7-8GXs!#TCsBgEH55Sgjb!ClLUA=c5eH`V#MwX}03!!vm7GRj zZ;l)^%{3*lhkZrtn=~-_njOh%4>Z9QVqVYl=rgFESJ@{xJ+mTUZ3JhDn!QoAWPU68 zx5^M{bDmqJd%3(kdCps&&+M|>8wDx*klWEBGfCTBB_V^PupX>qBSI;Y? z4ak0@;+4NFrFtm4WT~yz&@1WOvo=aX>-58Kg+P6Een-Yeq`sbHL6AG zMf87}$`DMn>a#L@^U*>ts{@f;e^GW%TkjjqW5oD1y^#DT!A!owE;dT@MTKa4&~hfN z2}Y>{{NoW+bOagw2xFDOM!)u#@@%JZQG7;@9kC7x%@yOWn%8Rn&D0c8#($xHO){_~%<(Sq}u>Yd~YrXxSnYg~T% zFdlwxoZdBm#eCz0A2oX(|Cj&$pNVI_Jomr+gg^HWeE8XH*iqQ<@N<8aiFe{T28I{w W6C^GAxAy^UXYh3Ob6Mw<&;$VafmR{_ literal 0 HcmV?d00001 diff --git a/radio/src/fonts/sqt5_fw/font_cz_04x06.lbm b/radio/src/fonts/sqt5_fw/font_cz_04x06.lbm new file mode 100644 index 000000000..15c586b31 --- /dev/null +++ b/radio/src/fonts/sqt5_fw/font_cz_04x06.lbm @@ -0,0 +1 @@ +0x3a,0x2a,0x2a,0x3e,0x01,0x3e,0x23,0x22,0x23,0x00,0x3e,0x2a,0x2a,0x2e,0x01,0x3e,0x2b,0x2a,0x2f,0x00,0x00,0x24,0x3c,0x22,0x01,0x1c,0x22,0x22,0x1d,0x00,0x3e,0x03,0x02,0x05,0x00,0x2e,0x2b,0x2a,0x3b,0x00,0x3e,0x20,0x20,0x3e,0x01,0x3c,0x23,0x23,0x3c,0x00,0x2e,0x28,0x28,0x3e,0x01,0x3c,0x12,0x12,0x3d,0x00,0x00,0x22,0x3e,0x22,0x01,0x3e,0x13,0x1e,0x31,0x00,0x00,0x0e,0x30,0x0e,0x01,0x22,0x33,0x2a,0x27,0x00,0x3e,0x2a,0x2a,0x22,0x01, diff --git a/radio/src/fonts/sqt5_fw/font_cz_04x06.png b/radio/src/fonts/sqt5_fw/font_cz_04x06.png new file mode 100644 index 0000000000000000000000000000000000000000..1f1bc61063f2778a1a2ae6bdf9b521b4e412157e GIT binary patch literal 215 zcmeAS@N?(olHy`uVBq!ia0vp^p+L;e$P6T%YbQSiQfvV}A+A9B|Ns9>Z_d99WHBar zySp%Su*!M>Ih+L^k;M!Q+`=Ht$S`Y;1W=H@#M9T6{VuzdsIv0Q%PWn5LgAh+jv*Y^ zlYc}>$8Y<3`u^{S;r0dv7ANO=p4pjuar=bkhhNvuj=rAmem8de_NK<)6W&~Fzv)+g z{q3}b6Z^iGzrO!Q>*lvlTnnl?H}hN0$;QIhQAT|o{Dm)X^44G8NgU(X#lNV=@dzJPo(avD-?o#yw(zRW)gf3g?iM{v@T@5%cB0000< KMNUMnLSTZymTH&) literal 0 HcmV?d00001 diff --git a/radio/src/fonts/sqt5_fw/font_cz_08x10.lbm b/radio/src/fonts/sqt5_fw/font_cz_08x10.lbm new file mode 100644 index 000000000..4b28f3ded --- /dev/null +++ b/radio/src/fonts/sqt5_fw/font_cz_08x10.lbm @@ -0,0 +1 @@ +0x90,0x07,0x90,0x07,0x90,0x04,0x94,0x04,0x93,0x04,0xf1,0x07,0xf0,0x07,0x00,0x00,0xf0,0x07,0xf1,0x07,0x13,0x04,0x16,0x04,0x13,0x04,0x11,0x04,0x10,0x04,0x00,0x00,0xf0,0x07,0xf0,0x07,0x90,0x04,0x94,0x04,0x93,0x04,0xf1,0x04,0xf0,0x04,0x00,0x00,0xf0,0x07,0xf1,0x07,0x93,0x04,0x96,0x04,0x93,0x04,0xf1,0x04,0xf0,0x04,0x00,0x00,0x10,0x04,0x10,0x04,0xf4,0x07,0xf3,0x07,0x01,0x04,0x00,0x04,0x00,0x00,0x00,0x00,0xe0,0x03,0xf0,0x07,0x10,0x04,0x14,0x04,0x13,0x04,0xf1,0x07,0xe0,0x03,0x00,0x00,0xf1,0x07,0xf3,0x07,0x16,0x00,0x13,0x00,0x11,0x00,0x30,0x00,0x30,0x00,0x00,0x00,0xf0,0x04,0xf1,0x04,0x93,0x04,0x96,0x04,0x93,0x04,0x91,0x07,0x90,0x07,0x00,0x00,0xf0,0x07,0xf0,0x07,0x00,0x04,0x04,0x04,0x03,0x04,0xf1,0x07,0xf0,0x07,0x00,0x00,0xf0,0x07,0xf0,0x07,0x02,0x04,0x05,0x04,0x05,0x04,0xf2,0x07,0xf0,0x07,0x00,0x00,0xf0,0x09,0xf0,0x09,0x00,0x09,0x04,0x09,0x03,0x09,0xf1,0x0f,0xf0,0x0f,0x00,0x00,0xf0,0x07,0xf8,0x07,0x98,0x00,0x9c,0x00,0x9b,0x00,0x99,0x00,0xf8,0x07,0xf0,0x07,0x00,0x00,0x08,0x04,0x08,0x04,0xfc,0x07,0xfb,0x07,0x09,0x04,0x08,0x04,0x00,0x00,0xf8,0x07,0xf9,0x07,0x8b,0x00,0x8e,0x00,0x8b,0x00,0xf9,0x00,0xf0,0x07,0x00,0x07,0xf8,0x00,0xf8,0x00,0x80,0x00,0x84,0x07,0x83,0x07,0x81,0x00,0xf8,0x00,0xf8,0x00,0x08,0x06,0x09,0x07,0x8b,0x05,0xce,0x04,0x6b,0x04,0x39,0x04,0x18,0x04,0x00,0x00,0xf8,0x07,0xf8,0x07,0x48,0x04,0x4c,0x04,0x4b,0x04,0x49,0x04,0x08,0x04,0x08,0x04, diff --git a/radio/src/fonts/sqt5_fw/font_cz_08x10.png b/radio/src/fonts/sqt5_fw/font_cz_08x10.png new file mode 100644 index 0000000000000000000000000000000000000000..056e38735fa6341f7633000a5f28b05d6f62f99f GIT binary patch literal 265 zcmeAS@N?(olHy`uVBq!ia0vp^9YD;($P6T#L(}gADYgKg5LY1m|NsA`H|O64vKW)R z-CYvL>4nJa0`PlBg3pY5H=O_PgxzqKtwYGyE0+g&ugiIEF}E zjy-SKcgR41^@9J?G}S42+*4v2_cGiovR>zKTy)c=tXwTCjTI}3rrtc2x-LOeT)`{3 zTQIT5$?Q;T`ZLdepBnaSm#0n6KmR8=h9mHp!-EyCg}<-<+PQvLpJDGrf##LpK7NaS z^Efm-cKWft3x(@nKQvlBb1DCS)&=wB+LoTtH=JWXpK<4{pPLFJg}J0Gu1<`8I6JHM zrq%1SC(hcxS9_z-f0b3>nLCG6Rrzu8Z31<(#f2uVp4M9+FXVkf@w$GE&&~GM%DM@5 u={l+JytV(_VcT-@$Hg9-yMGt8wY?J!*;nH-^@%CauMD29elF{r5}E)^H;)ql literal 0 HcmV?d00001 diff --git a/radio/src/fonts/sqt5_fw/font_de_04x06.lbm b/radio/src/fonts/sqt5_fw/font_de_04x06.lbm new file mode 100644 index 000000000..962a76588 --- /dev/null +++ b/radio/src/fonts/sqt5_fw/font_de_04x06.lbm @@ -0,0 +1 @@ +0x3d,0x0a,0x0a,0x3d,0x00,0x3a,0x2b,0x2a,0x3f,0x00,0x1d,0x22,0x22,0x1d,0x00,0x18,0x25,0x24,0x19,0x00,0x3d,0x20,0x20,0x3d,0x00,0x3d,0x20,0x20,0x3d,0x00,0x7e,0x05,0x25,0x1a,0x00, diff --git a/radio/src/fonts/sqt5_fw/font_de_04x06.png b/radio/src/fonts/sqt5_fw/font_de_04x06.png new file mode 100644 index 0000000000000000000000000000000000000000..644bed0b60d7617f155e61dae7f068963567b80f GIT binary patch literal 176 zcmeAS@N?(olHy`uVBq!ia0vp^%0SG{$P6TRXr);JDYgKg5LY1m|NsA`H|O64vKW)R z-CYbP0l+XkKRD&{8 literal 0 HcmV?d00001 diff --git a/radio/src/fonts/sqt5_fw/font_de_05x07.lbm b/radio/src/fonts/sqt5_fw/font_de_05x07.lbm new file mode 100644 index 000000000..363e4f48e --- /dev/null +++ b/radio/src/fonts/sqt5_fw/font_de_05x07.lbm @@ -0,0 +1 @@ +0x7c,0x13,0x12,0x13,0x7c,0x74,0x55,0x54,0x55,0x7c,0x3c,0x43,0x42,0x43,0x3c,0x38,0x45,0x44,0x45,0x38,0x3e,0x41,0x40,0x41,0x3e,0x7c,0x41,0x40,0x41,0x7c,0x7e,0x01,0x49,0x56,0x20, diff --git a/radio/src/fonts/sqt5_fw/font_de_05x07.png b/radio/src/fonts/sqt5_fw/font_de_05x07.png new file mode 100644 index 0000000000000000000000000000000000000000..6e6c1a0cfda134128f8a7a50b9b46e915b55827e GIT binary patch literal 181 zcmeAS@N?(olHy`uVBq!ia0vp^%0SG)$P6SsYp%QpQfvV}A+A9B|Ns9>Z_d99WHBar zySp%Su*!M>Ih+L^k;M!Q+`=Ht$S`Y;1W=H@#M9T6{Vs>Jh_F#Qx9SFm{7@=BF=o1U4muVhivIaRt)<|NmclbN*c*i!sUD z-G!lpRn`N@;VkfoEM{Qf76xHPhFNnYfP(BLp1!W^cR8d*40+4$`>h2EIe5A_hHzZ> z?KsGJz<`JOe6r}4IVU;lDzEGlS-v!Yvt&-j_S4H&uhx>B>13tL?c_cEg6;3ef1E4c h{E=4Z_d99WHBar zySp%Su*!M>Ih+L^k;M!Q+`=Ht$S`Y;1W=H@#M9T6{Vs>Js32F(->I{KLWQ0#jv*Y^ zlYj8D)=NBFdcG#iQopv3_wfJcpZ|yctG9D*Te$Ea`|oqc+JVo93VDV^*G-|Tc&izuSN}w#wTp}%#N|K fKeOj42xnx_TWw$1wSVV5pydpnu6{1-oD!M2j(YymzYu0Z<#|Nl#G&c6#}F(!Gt zyD)UH%6b4foCO|{#X!ZvAk4@xYmNj^kiEpy*OmP)hqMTr?%i$Y0)ax(o-U3d9M_X0 sULPoU&CvXZv8{)h=O&-Rm;Ve5{#xuyL^5u%0hKX$y85}Sb4q9e0PgN4g8%>k literal 0 HcmV?d00001 diff --git a/radio/src/fonts/sqt5_fw/font_es_05x07.lbm b/radio/src/fonts/sqt5_fw/font_es_05x07.lbm new file mode 100644 index 000000000..ade3235f7 --- /dev/null +++ b/radio/src/fonts/sqt5_fw/font_es_05x07.lbm @@ -0,0 +1 @@ +0x7c,0x06,0x05,0x06,0x79,0x78,0x0a,0x09,0x0a,0x71, diff --git a/radio/src/fonts/sqt5_fw/font_es_05x07.png b/radio/src/fonts/sqt5_fw/font_es_05x07.png new file mode 100644 index 0000000000000000000000000000000000000000..d23e8b850db15490e978904993dea309d8f1cb06 GIT binary patch literal 155 zcmeAS@N?(olHy`uVBq!ia0vp^AT|dhGm!jc^5-j%VhivIaRt)<|NmclbN*c*i!sUD z-G!lpRn`N@;VkfoEM{Qf76xHPhFNnYfP(BLp1!W^cR8d*L`5FQu%8ABNqf3DhHzX@ t-f``~hHH(D{~4ScnVk!nMgH0|FvR`lh~84|xe2I@!PC{xWt~$(69E5@DJ=j1 literal 0 HcmV?d00001 diff --git a/radio/src/fonts/sqt5_fw/font_es_08x10.lbm b/radio/src/fonts/sqt5_fw/font_es_08x10.lbm new file mode 100644 index 000000000..80e23388e --- /dev/null +++ b/radio/src/fonts/sqt5_fw/font_es_08x10.lbm @@ -0,0 +1 @@ +0xf8,0x07,0xfa,0x07,0x0b,0x00,0x09,0x00,0x0b,0x00,0x1a,0x00,0xf3,0x07,0xe1,0x07,0xf0,0x07,0xf4,0x07,0x16,0x00,0x12,0x00,0x16,0x00,0x34,0x00,0xe6,0x07,0xc2,0x07, diff --git a/radio/src/fonts/sqt5_fw/font_es_08x10.png b/radio/src/fonts/sqt5_fw/font_es_08x10.png new file mode 100644 index 0000000000000000000000000000000000000000..6f520ee2ab108951a97a58530bf1f74c8113e309 GIT binary patch literal 161 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~e$P6R{HP;^kQfvV}A+A9B|Ns9>Z_d99WHBar zySp%Su*!M>Ih+L^k;M!Q+`=Ht$S`Y;1W=H@#M9T6{Vs>Jh_Q+EnCCEcpMQ@me$2rrkxRtAUCcJYD@<);T3K0RXC= BEk^(V literal 0 HcmV?d00001 diff --git a/radio/src/fonts/sqt5_fw/font_es_10x14.lbm b/radio/src/fonts/sqt5_fw/font_es_10x14.lbm new file mode 100644 index 000000000..19065f688 --- /dev/null +++ b/radio/src/fonts/sqt5_fw/font_es_10x14.lbm @@ -0,0 +1 @@ +0xf4,0x7f,0xf6,0x7f,0xf3,0x7f,0x31,0x00,0x32,0x00,0x34,0x00,0x76,0x00,0xe3,0x7f,0xc1,0x7f,0x80,0x7f,0xe0,0x7f,0xe8,0x7f,0xec,0x7f,0x66,0x00,0x62,0x00,0x64,0x00,0x68,0x00,0xec,0x7f,0xe6,0x7f,0xc2,0x7f, diff --git a/radio/src/fonts/sqt5_fw/font_es_10x14.png b/radio/src/fonts/sqt5_fw/font_es_10x14.png new file mode 100644 index 0000000000000000000000000000000000000000..d66da44606b51bef5b2384ce86eda359b21c5623 GIT binary patch literal 174 zcmeAS@N?(olHy`uVBq!ia0vp^B0wy_$P6TPuAPklQfvV}A+A9B|Ns9>Z_d99WHBar zySp%Su*!M>Ih+L^k;M!Q+`=Ht$S`Y;1W=H@#M9T6{Vs>JsED3zXDdHYNYB&7F@)oK zvPJm+#>7+SnR%woS2OripLgKEkN?cfhZz~!B-z>6EWfes`SJfhKf{SS;l35B*Ls0E O89ZJ6T-G@yGywqF&M-j$ literal 0 HcmV?d00001 diff --git a/radio/src/fonts/sqt5_fw/font_fr_04x06.lbm b/radio/src/fonts/sqt5_fw/font_fr_04x06.lbm new file mode 100644 index 000000000..0009fbcec --- /dev/null +++ b/radio/src/fonts/sqt5_fw/font_fr_04x06.lbm @@ -0,0 +1 @@ +0x3e,0x2a,0x2b,0x2e,0x00,0x3e,0x2b,0x2a,0x2e,0x00,0x3a,0x2b,0x2a,0x3e,0x00,0x00,0x26,0x3d,0x22,0x00,0x1e,0x52,0x32,0x12,0x00, diff --git a/radio/src/fonts/sqt5_fw/font_fr_04x06.png b/radio/src/fonts/sqt5_fw/font_fr_04x06.png new file mode 100644 index 0000000000000000000000000000000000000000..3b5db5110cd19e96fc549a70b482259b925efec4 GIT binary patch literal 3570 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 s7^sJ-h+Xi$Jy9hAjZ_d99WHBar zySp%Su*!M>Ih+L^k;M!Q+`=Ht$S`Y;1W=H@#M9T6{Vs>Jh=kVk$tk)(Aw5qQ#}JO| z$rZor>X{GkegBb{ho?tgLZa*YtmcT@(h{rQ=Or*~N|BcM_y0f85cK~%V Nc)I$ztaD0e0s!LrF*yJL literal 0 HcmV?d00001 diff --git a/radio/src/fonts/sqt5_fw/font_fr_08x10.lbm b/radio/src/fonts/sqt5_fw/font_fr_08x10.lbm new file mode 100644 index 000000000..62285c702 --- /dev/null +++ b/radio/src/fonts/sqt5_fw/font_fr_08x10.lbm @@ -0,0 +1 @@ +0xf0,0x07,0xf0,0x07,0x94,0x04,0x96,0x04,0x93,0x04,0xf1,0x04,0xf0,0x04,0x00,0x00,0xf0,0x07,0xf0,0x07,0x91,0x04,0x93,0x04,0x96,0x04,0xf4,0x04,0xf0,0x04,0x00,0x00,0x90,0x07,0x90,0x07,0x91,0x04,0x93,0x04,0x96,0x04,0xf4,0x07,0xf0,0x07,0x00,0x00,0x14,0x04,0x16,0x04,0xf3,0x07,0xf6,0x07,0x04,0x04,0x00,0x04,0x00,0x00,0xf0,0x03,0xf0,0x03,0x10,0x0a,0x10,0x0e,0x10,0x06,0x10,0x02,0x10,0x02,0x00,0x00,0x00,0x00, diff --git a/radio/src/fonts/sqt5_fw/font_fr_08x10.png b/radio/src/fonts/sqt5_fw/font_fr_08x10.png new file mode 100644 index 0000000000000000000000000000000000000000..59ed95c85a539d76738a13cad90da8b167f70ad2 GIT binary patch literal 3597 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 literal 0 HcmV?d00001 diff --git a/radio/src/fonts/sqt5_fw/font_it_04x06.lbm b/radio/src/fonts/sqt5_fw/font_it_04x06.lbm new file mode 100644 index 000000000..5557a1b10 --- /dev/null +++ b/radio/src/fonts/sqt5_fw/font_it_04x06.lbm @@ -0,0 +1 @@ +0x3a,0x2b,0x2a,0x3e,0x00,0x3c,0x21,0x22,0x3c,0x00, diff --git a/radio/src/fonts/sqt5_fw/font_it_04x06.png b/radio/src/fonts/sqt5_fw/font_it_04x06.png new file mode 100644 index 0000000000000000000000000000000000000000..f1fd4826563540d182019561deec17971860d2b3 GIT binary patch literal 157 zcmeAS@N?(olHy`uVBq!ia0vp^AT~QAGmzv?@>2j(YymzYu0Z<#|Nl#G&c6#}F(!Gt zyD)UH%6b4foCO|{#X!ZvAk4@xYmNj^kiEpy*OmP)hqMT{Zid7L8K97?r;B3<$MxhJ t)eVjB84hQ&v*oe3<*>8yvA6waXK<5XD_MN-nH^9egQu&X%Q~loCIG@6B%S~O literal 0 HcmV?d00001 diff --git a/radio/src/fonts/sqt5_fw/font_it_05x07.lbm b/radio/src/fonts/sqt5_fw/font_it_05x07.lbm new file mode 100644 index 000000000..7e4ed004e --- /dev/null +++ b/radio/src/fonts/sqt5_fw/font_it_05x07.lbm @@ -0,0 +1 @@ +0x74,0x55,0x56,0x54,0x7c,0x7c,0x41,0x42,0x40,0x7c, diff --git a/radio/src/fonts/sqt5_fw/font_it_05x07.png b/radio/src/fonts/sqt5_fw/font_it_05x07.png new file mode 100644 index 0000000000000000000000000000000000000000..ebdd099527389868375e87da19ebacb55dfa4226 GIT binary patch literal 157 zcmeAS@N?(olHy`uVBq!ia0vp^AT|dhGm!jc^5-j%VhivIaRt)<|NmclbN*c*i!sUD z-G!lpRn`N@;VkfoEM{Qf76xHPhFNnYfP(BLp1!W^cR8d*q!{Yt&Q}73WIbIRLpZJ{ u->7bQc#o0o8C%Z_d99WHBar zySp%Su*!M>Ih+L^k;M!Q+`=Ht$S`Y;1W=H@#M9T6{Vs>Jh=q7mJZ_d99WHBar zySp%Su*!M>Ih+L^k;M!Q+`=Ht$S`Y;1W=H@#M9T6{Vs>JsI>awvx+G|A#G0=#}JO| z$v^)8XFmLSzPyCp|DOjwe2!;i?l^zo9>cN!3nY$BZ%&e6SjEb)(NR3GID8W$P#c4% LtDnm{r-UW|5o|I4 literal 0 HcmV?d00001 diff --git a/radio/src/fonts/sqt5_fw/font_pl_04x06.lbm b/radio/src/fonts/sqt5_fw/font_pl_04x06.lbm new file mode 100644 index 000000000..d885a4da3 --- /dev/null +++ b/radio/src/fonts/sqt5_fw/font_pl_04x06.lbm @@ -0,0 +1 @@ +0x3a,0x2a,0x2a,0x7e,0x40,0x3e,0x22,0x22,0x22,0x01,0x3e,0x2a,0x2a,0x6e,0x40,0x00,0x29,0x3f,0x24,0x00,0x3e,0x02,0x03,0x3d,0x00,0x1c,0x22,0x23,0x1d,0x00,0x2e,0x2a,0x2a,0x3b,0x00,0x24,0x35,0x2d,0x24,0x00,0x24,0x34,0x2e,0x25,0x00,0x3e,0x09,0x69,0x5e,0x00,0x1c,0x22,0x22,0x23,0x00,0x3f,0x25,0x65,0x41,0x00,0x3f,0x28,0x24,0x24,0x00,0x3e,0x02,0x03,0x3d,0x00,0x1c,0x22,0x22,0x1d,0x00,0x2e,0x2a,0x2b,0x3a,0x00,0x22,0x33,0x2a,0x26,0x00,0x22,0x32,0x2b,0x26,0x00, diff --git a/radio/src/fonts/sqt5_fw/font_pl_04x06.png b/radio/src/fonts/sqt5_fw/font_pl_04x06.png new file mode 100644 index 0000000000000000000000000000000000000000..e25681d8c2906c6c13237cc7abd9ef898a6572a4 GIT binary patch literal 175 zcmeAS@N?(olHy`uVBq!ia0vp^Q9#Vj$P6Smm7T}{QfvV}A+A9B|Ns9>Z_d99WTkkz zIEHXsPyVt0{@R>qK@QnKO^{ tc+PMNg>@+e&-?#}pXJ;0#v}K68M^n`UT$12JOk(k22WQ%mvv4FO#m#xROJ8w literal 0 HcmV?d00001 diff --git a/radio/src/fonts/sqt5_fw/font_pl_08x10.lbm b/radio/src/fonts/sqt5_fw/font_pl_08x10.lbm new file mode 100644 index 000000000..56b4f2a54 --- /dev/null +++ b/radio/src/fonts/sqt5_fw/font_pl_08x10.lbm @@ -0,0 +1 @@ +0x90,0x07,0x90,0x07,0x90,0x04,0x90,0x04,0x90,0x04,0xf0,0x0f,0xf0,0x0b,0x00,0x00,0xf0,0x07,0xf0,0x07,0x10,0x04,0x14,0x04,0x13,0x04,0x11,0x04,0x10,0x04,0x00,0x00,0xf0,0x07,0xf0,0x07,0x90,0x04,0x90,0x04,0x90,0x04,0xf0,0x0c,0xf0,0x08,0x00,0x00,0x40,0x04,0x42,0x04,0xfe,0x07,0xfe,0x07,0x20,0x04,0x20,0x04,0x00,0x00,0x00,0x00,0xf0,0x07,0xf0,0x07,0x10,0x00,0x14,0x00,0x13,0x00,0xf1,0x07,0xe0,0x07,0x00,0x00,0xe0,0x03,0xf0,0x07,0x10,0x04,0x14,0x04,0x13,0x04,0xf1,0x07,0xe0,0x03,0x00,0x00,0xf0,0x04,0xf0,0x04,0x90,0x04,0x94,0x04,0x93,0x04,0x91,0x07,0x90,0x07,0x00,0x00,0x10,0x04,0x10,0x06,0x16,0x07,0x96,0x05,0xd0,0x04,0x70,0x04,0x30,0x04,0x00,0x00,0x10,0x04,0x10,0x06,0x10,0x07,0x94,0x05,0xd3,0x04,0x71,0x04,0x30,0x04,0x00,0x00,0xfc,0x07,0xfe,0x07,0x86,0x00,0x86,0x00,0x86,0x00,0x86,0x00,0xfe,0x0f,0xfc,0x0b,0xf8,0x03,0xfc,0x07,0x04,0x04,0x04,0x04,0x06,0x04,0x05,0x04,0x04,0x04,0x00,0x00,0x00,0x00,0xfe,0x07,0xfe,0x07,0x22,0x04,0x22,0x04,0x22,0x04,0x22,0x0c,0x02,0x08,0x80,0x00,0xfe,0x07,0xfe,0x07,0x40,0x04,0x40,0x04,0x20,0x04,0x20,0x04,0x00,0x04,0xfc,0x07,0xfc,0x07,0x04,0x00,0x04,0x00,0x07,0x00,0x0d,0x00,0xf8,0x07,0xf0,0x07,0xf8,0x03,0xfc,0x07,0x04,0x04,0x04,0x04,0x04,0x04,0x07,0x04,0xfd,0x07,0xf8,0x03,0x30,0x02,0x78,0x06,0x48,0x04,0x4c,0x04,0x4b,0x04,0x49,0x04,0xd8,0x07,0x90,0x03,0x04,0x06,0x04,0x07,0x84,0x05,0xc7,0x04,0x67,0x04,0x34,0x04,0x1c,0x04,0x0c,0x04,0x04,0x06,0x04,0x07,0x84,0x05,0xc4,0x04,0x64,0x04,0x37,0x04,0x1d,0x04,0x0c,0x04, diff --git a/radio/src/fonts/sqt5_fw/font_pl_08x10.png b/radio/src/fonts/sqt5_fw/font_pl_08x10.png new file mode 100644 index 0000000000000000000000000000000000000000..bbe2fc7f139bd0e5d1e6ac30be339aac7e3f0dba GIT binary patch literal 237 zcmeAS@N?(olHy`uVBq!ia0vp^6M&e9kr_yC*I9NLNU;U@gt!9f|Ns9ly*d9bkhRFu z#W95Ax@q5DUS>m%){Qm}ZYN}>bws=k=$f)JxN-*10SUd>0ELoi9OcVxRO;*$D+Ht# zu8RDY6VvV-vFEH$Pwwk&w{Iw>otP7>R`7nRI)h8g5yd68inV&A12bat({Qa@vB*OstNi|gEDlrD4#?L1MM{q>)_W!&@51=FH#fBblG kk7Dt!PaiIat?3E2KX9SWd5v;O6wtK{p00i_>zopr0H0f7%>V!Z literal 0 HcmV?d00001 diff --git a/radio/src/fonts/sqt5_fw/font_pl_10x14.lbm b/radio/src/fonts/sqt5_fw/font_pl_10x14.lbm new file mode 100644 index 000000000..0846467d2 --- /dev/null +++ b/radio/src/fonts/sqt5_fw/font_pl_10x14.lbm @@ -0,0 +1 @@ +0x60,0x7e,0x60,0x7e,0x60,0x7e,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0xff,0xe0,0xbf,0xe0,0xbf,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x60,0x68,0x60,0x6c,0x60,0x67,0x60,0x63,0x60,0x61,0x60,0x60,0x60,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0xe7,0xe0,0x87,0xe0,0x87,0x00,0x00,0x00,0x63,0x06,0x63,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0xc0,0x60,0xc0,0x60,0x00,0x00,0x00,0x00,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x00,0x68,0x00,0x6c,0x00,0x67,0x00,0xe3,0x7f,0xe1,0x7f,0xc0,0x7f,0xc0,0x3f,0xe0,0x7f,0xe0,0x7f,0x60,0x60,0x68,0x60,0x6c,0x60,0x67,0x60,0xe3,0x7f,0xe1,0x7f,0xc0,0x3f,0xe0,0x67,0xe0,0x67,0xe0,0x67,0x60,0x66,0x68,0x66,0x6c,0x66,0x67,0x66,0x63,0x7e,0x61,0x7e,0x60,0x7e,0x60,0x60,0x60,0x70,0x60,0x78,0x66,0x7c,0x66,0x6e,0x60,0x67,0xe0,0x63,0xe0,0x61,0xe0,0x60,0x60,0x60,0x60,0x60,0x60,0x70,0x60,0x78,0x60,0x7c,0x68,0x6e,0x6c,0x67,0xe7,0x63,0xe3,0x61,0xe1,0x60,0x60,0x60,0xfc,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0xfe,0x7f,0xfe,0xbf,0xfc,0xbf,0xf8,0x3f,0xfc,0x7f,0xfc,0x7f,0x0c,0x60,0x0c,0x60,0x0f,0x60,0x0f,0x60,0x0d,0x60,0x0c,0x60,0x0c,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x06,0xa0,0x06,0x80,0x00,0x06,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x80,0x61,0x80,0x61,0xc0,0x60,0xc0,0x60,0x60,0x60,0x60,0x60,0xf8,0x7f,0xf8,0x7f,0xf8,0x7f,0x18,0x00,0x18,0x00,0x1c,0x00,0x3f,0x00,0xf3,0x7f,0xe1,0x7f,0xc0,0x7f,0xf0,0x3f,0xf8,0x7f,0xf8,0x7f,0x18,0x60,0x1c,0x60,0x1f,0x60,0x1b,0x60,0xf9,0x7f,0xf8,0x7f,0xf0,0x3f,0xf0,0x39,0xf8,0x7b,0xf8,0x7b,0x18,0x63,0x1c,0x63,0x1f,0x63,0x1b,0x63,0x79,0x7f,0x78,0x7f,0x70,0x3e,0x18,0x70,0x18,0x78,0x18,0x7c,0x18,0x6e,0x1b,0x67,0x9b,0x63,0xd8,0x61,0xf8,0x60,0x78,0x60,0x38,0x60,0x18,0x70,0x18,0x78,0x18,0x7c,0x18,0x6e,0x18,0x67,0x9c,0x63,0xdf,0x61,0xfb,0x60,0x79,0x60,0x38,0x60, diff --git a/radio/src/fonts/sqt5_fw/font_pl_10x14.png b/radio/src/fonts/sqt5_fw/font_pl_10x14.png new file mode 100644 index 0000000000000000000000000000000000000000..cdd6a18b7aefcdaa25f577a052810fc29e81bb0a GIT binary patch literal 333 zcmV-T0kZyyP)JjwE(Gmj*HVauQ8^VtMcK+u)r0T#TpenUZkLLQ*TK1|goS*ZSdLrsVp z`7P?czYR}BHfl8@UI_uP8y~>t3~4(wj~Q{e;!&34+Q44ZZ-k|{f@hgrzD!M2=J4*m zpZr6%QxkMSQLer#Ws5ajvLK9WC%wly`J5;B`@r6@XKT3f>E(gl2)CwtbJxz~_a(Wo z$*n)#?`~bFlq=Y+uiVim*J-T(_gUFLuiTRQdlu!rPeYlJ=6uzV{PlR(7YQTZ@Ba`L fJkE^ivyLo3E)KrC*Pz#100000NkvXXu0mjf{6Lq? literal 0 HcmV?d00001 diff --git a/radio/src/fonts/sqt5_fw/font_pt_04x06.lbm b/radio/src/fonts/sqt5_fw/font_pt_04x06.lbm new file mode 100644 index 000000000..bb2db6d13 --- /dev/null +++ b/radio/src/fonts/sqt5_fw/font_pt_04x06.lbm @@ -0,0 +1 @@ +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, diff --git a/radio/src/fonts/sqt5_fw/font_pt_04x06.png b/radio/src/fonts/sqt5_fw/font_pt_04x06.png new file mode 100644 index 0000000000000000000000000000000000000000..b3bc84800816a5ce210810e5e8f9b114886dea1b GIT binary patch literal 130 zcmeAS@N?(olHy`uVBq!ia0vp^6+q0+$P6TZ-ji+xQfvV}A+A9B|Ns9>Z_d99WN{XF zL>4nJa0`PlBg3pY5H=O_PcD{oYKM)Ice5FA%0I6#}JO|$v^tJBr?vhGdwz! VF{3wVxg1c6!PC{xWt~$(698T_AX)$b literal 0 HcmV?d00001 diff --git a/radio/src/fonts/sqt5_fw/font_pt_05x07.lbm b/radio/src/fonts/sqt5_fw/font_pt_05x07.lbm new file mode 100644 index 000000000..19aac799d --- /dev/null +++ b/radio/src/fonts/sqt5_fw/font_pt_05x07.lbm @@ -0,0 +1 @@ +0x78,0x14,0x16,0x15,0x78,0x74,0x54,0x56,0x55,0x7c,0x78,0x16,0x15,0x16,0x78,0x74,0x56,0x55,0x56,0x7c,0x7a,0x15,0x16,0x15,0x78,0x74,0x56,0x55,0x56,0x7d,0x78,0x15,0x16,0x14,0x78,0x74,0x55,0x56,0x54,0x7c,0x1c,0xa2,0x62,0x22,0x22,0x3c,0xa4,0x64,0x24,0x24,0x7c,0x54,0x56,0x55,0x44,0x7c,0x54,0x56,0x55,0x5c,0x7c,0x56,0x55,0x56,0x44,0x7c,0x56,0x55,0x56,0x5c,0x00,0x44,0x7e,0x45,0x00,0x00,0x48,0x7a,0x41,0x00,0x3c,0x42,0x42,0x43,0x3c,0x38,0x44,0x46,0x45,0x38,0x3c,0x42,0x43,0x42,0x3c,0x38,0x44,0x46,0x44,0x38,0x3c,0x43,0x42,0x43,0x3c,0x38,0x46,0x44,0x46,0x38,0x3c,0x40,0x42,0x41,0x3c,0x78,0x40,0x44,0x42,0x78, diff --git a/radio/src/fonts/sqt5_fw/font_pt_05x07.png b/radio/src/fonts/sqt5_fw/font_pt_05x07.png new file mode 100644 index 0000000000000000000000000000000000000000..d973c436b99b4021cdae8db4c5c1978b804aa2e2 GIT binary patch literal 244 zcmeAS@N?(olHy`uVBq!ia0vp^6+q0v$P6MoRt5kmwg8_HS0MfW|No^o=iddg7?Zr+ zT^Kr8Wj%l#&H|6fVg?3oVGw3ym^DWND9B#o>FdgVmqS`aUg{tBAvd5s0 ziuir6uYUi(|NXxEzxVyQ{{Jt}_qg`B^?CpIy{;;~|5)~Vwxrb*i&-LC5)w1scqbi= z%{QKMzBaCM{jYnU?;br`JTH1)GDGt#XP&cH1?*f%Y?ay85}Sb4q9e0KfoR5&!@I literal 0 HcmV?d00001 diff --git a/radio/src/fonts/sqt5_fw/font_pt_08x10.lbm b/radio/src/fonts/sqt5_fw/font_pt_08x10.lbm new file mode 100644 index 000000000..7971cf6a9 --- /dev/null +++ b/radio/src/fonts/sqt5_fw/font_pt_08x10.lbm @@ -0,0 +1 @@ +0xf0,0x07,0xf8,0x07,0x88,0x00,0x8c,0x00,0x8b,0x00,0x89,0x00,0xf8,0x07,0xf0,0x07,0x90,0x07,0x90,0x07,0x90,0x04,0x90,0x04,0x98,0x04,0xf6,0x07,0xf2,0x07,0x00,0x00,0xf0,0x07,0xfa,0x07,0x8b,0x00,0x89,0x00,0x89,0x00,0x8b,0x00,0xfa,0x07,0xf0,0x07,0x90,0x07,0x94,0x07,0x96,0x04,0x93,0x04,0x96,0x04,0xf4,0x07,0xf0,0x07,0x00,0x00,0xf0,0x07,0xfa,0x07,0x89,0x00,0x89,0x00,0x8b,0x00,0x8a,0x00,0xfa,0x07,0xf1,0x07,0x90,0x07,0x90,0x07,0x94,0x04,0x92,0x04,0x96,0x04,0xf4,0x07,0xf2,0x07,0x00,0x00,0xf0,0x07,0xf8,0x07,0x89,0x00,0x8b,0x00,0x8c,0x00,0x88,0x00,0xf8,0x07,0xf0,0x07,0x90,0x07,0x90,0x07,0x92,0x04,0x96,0x04,0x98,0x04,0xf0,0x07,0xf0,0x07,0x00,0x00,0xf8,0x01,0xfc,0x03,0x04,0x0a,0x04,0x0e,0x04,0x06,0x04,0x02,0x04,0x02,0x04,0x02,0xf8,0x03,0xf8,0x03,0x08,0x0a,0x08,0x0e,0x08,0x06,0x08,0x02,0x08,0x02,0x00,0x00,0xf8,0x07,0xf8,0x07,0x48,0x04,0x4c,0x04,0x4b,0x04,0x49,0x04,0x08,0x04,0x00,0x00,0xf0,0x07,0xf0,0x07,0x90,0x04,0x9c,0x04,0x96,0x04,0xf2,0x04,0xf0,0x04,0x00,0x00,0xf8,0x07,0xfa,0x07,0x4b,0x04,0x49,0x04,0x49,0x04,0x4b,0x04,0x0a,0x04,0x00,0x00,0xf0,0x07,0xf4,0x07,0x96,0x04,0x93,0x04,0x96,0x04,0xf4,0x04,0xf0,0x04,0x00,0x00,0x00,0x00,0x08,0x04,0x08,0x04,0xfc,0x07,0xfb,0x07,0x09,0x04,0x08,0x04,0x00,0x00,0x00,0x00,0x10,0x04,0x10,0x04,0xf4,0x07,0xf3,0x07,0x01,0x04,0x00,0x04,0x00,0x00,0xf0,0x03,0xf8,0x07,0x08,0x04,0x08,0x04,0x0c,0x04,0x0b,0x04,0xf9,0x07,0xf0,0x03,0xe0,0x03,0xf0,0x07,0x10,0x04,0x18,0x04,0x16,0x04,0xf2,0x07,0xe0,0x03,0x00,0x00,0xf0,0x03,0xfa,0x07,0x0b,0x04,0x09,0x04,0x09,0x04,0x0b,0x04,0xfa,0x07,0xf0,0x03,0xe0,0x03,0xf4,0x07,0x16,0x04,0x13,0x04,0x16,0x04,0xf4,0x07,0xe0,0x03,0x00,0x00,0xf2,0x03,0xf9,0x07,0x09,0x04,0x0b,0x04,0x0a,0x04,0x0a,0x04,0xf9,0x07,0xf0,0x03,0xe0,0x03,0xf4,0x07,0x12,0x04,0x16,0x04,0x14,0x04,0xf2,0x07,0xe0,0x03,0x00,0x00,0xf8,0x03,0xf8,0x07,0x00,0x04,0x04,0x04,0x03,0x04,0x01,0x04,0xf8,0x07,0xf8,0x03,0xf0,0x07,0xf0,0x07,0x00,0x04,0x04,0x04,0x03,0x04,0xf1,0x07,0xf0,0x07,0x00,0x00, diff --git a/radio/src/fonts/sqt5_fw/font_pt_08x10.png b/radio/src/fonts/sqt5_fw/font_pt_08x10.png new file mode 100644 index 0000000000000000000000000000000000000000..5b833f108ddcb33ea2bf74f3868a2e904496954a GIT binary patch literal 289 zcmeAS@N?(olHy`uVBq!ia0vp^2Y{G|kr_zxStxV^DYgKg5LY1m|NsA`H|O64vKW)R z-CY66N*Hou4|7dbMu?A3=wQ#U;CfAKSXOZ?I!(FVdQ&MBb@06wN|8vpZ_d99WHBar zySp%Su*!M>Ih+L^k;M!Q+`=Ht$S`Y;1W=H@#M9T6{Vs>JsIHzdFUMA(&~Hx{#}J9j zwf!6Y4jTxx>2s}`?jh2L)jgELyreg8BKm%IxqT%UK&)!Sv^vFc;J+nX(d!>{vRpQP8)u5%(a z?7{A9=ChKxUg@9MwB07rs`Jt1$JZMIm+y`e3zS)#y=HQxafQX)Q%2J(b<#>-ee^EB zY+ohpCoFo=@$J5Ci?>@d&ps){zU9{H>)l(E-Rs^Lygu4{?V0=P(~~_9SSTIZ|B-XG XZ_d99WHBar zySp%Su*!M>Ih+L^k;M!Q+`=Ht$S`Y;1W=H@#M9T6{Vs>Jh`RE&iQl#Yh4egK978y+ zC%-s5ZP%d<|LXt9v$3UiD)ZcbZnHfhVM5}D1P!*$Q|9e9_ye?vpTRURA0wtkoIAy_&M2Dg1JBA1;l1;o9pMZJI@>vQr_|J&Op}zD(wG&#m3?ZT k8UOO%t@gM{h4pip=f)|o4zP*32Q-es)78&qol`;+0RQbd{{R30 literal 0 HcmV?d00001 diff --git a/radio/src/fonts/sqt5_fw/font_se_10x14.lbm b/radio/src/fonts/sqt5_fw/font_se_10x14.lbm new file mode 100644 index 000000000..e1fa337cc --- /dev/null +++ b/radio/src/fonts/sqt5_fw/font_se_10x14.lbm @@ -0,0 +1 @@ +0x60,0x7e,0x60,0x7e,0x60,0x7e,0x64,0x66,0x6a,0x66,0x6a,0x66,0x64,0x66,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x7e,0x60,0x7e,0x6c,0x7e,0x6c,0x66,0x60,0x66,0x60,0x66,0x6c,0x66,0xec,0x7f,0xe0,0x7f,0xe0,0x7f,0xc0,0x3f,0xe0,0x7f,0xec,0x7f,0x6c,0x60,0x60,0x60,0x60,0x60,0x6c,0x60,0xec,0x7f,0xe0,0x7f,0xc0,0x3f,0xf0,0x7f,0xf8,0x7f,0xf8,0x7f,0x1a,0x06,0x1d,0x06,0x1d,0x06,0x1a,0x06,0xf8,0x7f,0xf8,0x7f,0xf0,0x7f,0xf0,0x7f,0xfb,0x7f,0xfb,0x7f,0x18,0x06,0x18,0x06,0x18,0x06,0x18,0x06,0xfb,0x7f,0xfb,0x7f,0xf0,0x7f,0xf0,0x3f,0xfb,0x7f,0xfb,0x7f,0x18,0x60,0x18,0x60,0x18,0x60,0x18,0x60,0xfb,0x7f,0xfb,0x7f,0xf0,0x3f, diff --git a/radio/src/fonts/sqt5_fw/font_se_10x14.png b/radio/src/fonts/sqt5_fw/font_se_10x14.png new file mode 100644 index 0000000000000000000000000000000000000000..dbd4d48d4f7bdc59fed88763ea93066dc09d4534 GIT binary patch literal 214 zcmeAS@N?(olHy`uVBq!ia0vp^Hb5-E$P6S4V)|-;6kC8#h%1o(|NsBeoAd7iS&T{E z?k)@+tg;?J4rhT!WHAE+w=f7ZGR&GI0Tg5}@$_|Nzsn&lYR0tU@%l4Bp)gMu#}JO| z$v^m6oFVdQ&MBb@ E09VyT8vp0^^Wy!4%+niL8G3w!xHl+Vc~)+#&MuvBlglo~ z>-k+ltE}%o7AUW8V!7BS#oXMFxlL`}Ch#o0@J}_va|p^d91-10Mg7 zEO9<>U1YwZoQVtgeH^&uxSUFaa7zTw(u}&wm$aG#$Tf4^%U_C%FR>yCh~@wQ002ov JPDHLkV1kid<5>Uz literal 0 HcmV?d00001 diff --git a/radio/src/fonts/std_fw/font_04x06_extra.lbm b/radio/src/fonts/std_fw/font_04x06_extra.lbm new file mode 100644 index 000000000..cce1e9d68 --- /dev/null +++ b/radio/src/fonts/std_fw/font_04x06_extra.lbm @@ -0,0 +1 @@ +0x04,0x02,0x3b,0x02,0x04,0x08,0x10,0x37,0x10,0x08,0x20,0x12,0x0a,0x02,0x1e,0x02,0x24,0x28,0x20,0x3c,0x3c,0x20,0x28,0x24,0x02,0x1e,0x02,0x0a,0x12,0x20, diff --git a/radio/src/fonts/std_fw/font_04x06_extra.png b/radio/src/fonts/std_fw/font_04x06_extra.png new file mode 100644 index 0000000000000000000000000000000000000000..dd59c2e2baf81a726c751c2ab0a129c819ca0638 GIT binary patch literal 159 zcmeAS@N?(olHy`uVBq!ia0vp^azM<^$P6S^)$=z2DYgKg5LY1m|NsA`H|O64vN#Jo zB8wRqxP?KOkzv*x37{Z*iKnkC`&~9}Zc)avOYbHFg>*b!978y+C-3%A_P)qu2#J9{8$j zsSDCYdl%l_ZrrG^ESKU2Fgr-MR+bkE4lwIQZdi^)=m9gga~q6O3)oC^VuR`R7(w=F zw}vGOJL>E$rjqxQ**jZ&4Kl@_Uc(5hk0qhH+%!V=O2V@)b+Z3dXfBRIL@6CG{*bVJ zyI$oIqCzsilbzZeTI=jhq|OXUJ+D<<(2D_=x@R5;!WNgWSFL>?P8WK)teLh#$UP1C z=QmA<(3%L|FB!gTBHUZ(t;`x9w8~~@ukg_wal*fZzK_l~H*OLBzJ4y zMATLv|MLJ6+IcR23@}RFm%lD8mCLGXfm`bNGMl}s%GlBS4-c7D5gq=mIRF3v07*qo IM6N<$g4e$J%m4rY literal 0 HcmV?d00001 diff --git a/radio/src/fonts/std_fw/font_05x07_extra.lbm b/radio/src/fonts/std_fw/font_05x07_extra.lbm new file mode 100644 index 000000000..ea644215a --- /dev/null +++ b/radio/src/fonts/std_fw/font_05x07_extra.lbm @@ -0,0 +1 @@ +0x04,0x02,0x7b,0x02,0x04,0x10,0x20,0x6f,0x20,0x10,0x20,0x12,0x0a,0x02,0x1e,0x02,0x24,0x28,0x20,0x3c,0x3c,0x20,0x28,0x24,0x02,0x1e,0x02,0x0a,0x12,0x20, diff --git a/radio/src/fonts/std_fw/font_05x07_extra.png b/radio/src/fonts/std_fw/font_05x07_extra.png new file mode 100644 index 0000000000000000000000000000000000000000..4d939852c36bb0096c69d7df76eb47c9a3d73aff GIT binary patch literal 161 zcmeAS@N?(olHy`uVBq!ia0vp^azM<%$P6T}6y8k-QfvV}A+A9B|Ns9>Z_d99WN{XF zL>4nJa0`PlBg3pY5H=O_PcD{+@gZnssFwMh4egK978y+C-3$Qph2f1bVB%_!gr}2Gr^y`a(8tD{?Yn1C3}v57AShrEGOr z7E)K!$RZ{Wy$ZK7o}pG5|)ZTw~#1w8JysC-OcSh zg6-8usm=n7ze`vdUv(u1G+uEqD$_2v`4owg#`Q+r+G{1ju2v(s9n2pV840i(eg zfJjS*5gLYd55S;N1Hw=-=N=YU4BP{_#}!ZU2vC8oX3##|%c@*Q`?5{z{{fK(z(?5a zj$r>wjGI@h3i44g{QWMZz2XP}H3WxYG!np13ul_OKt0UQ-73Rwj{TBx<03*kYdhCB x)zLwB-Hz(0`>_nGZMUmIR(&uXhn%L5{tqaa5bia!W2^uG002ovPDHLkV1mDCO-=v+ literal 0 HcmV?d00001 diff --git a/radio/src/fonts/std_fw/font_10x14.lbm b/radio/src/fonts/std_fw/font_10x14.lbm new file mode 100644 index 000000000..cd6e036ed --- /dev/null +++ b/radio/src/fonts/std_fw/font_10x14.lbm @@ -0,0 +1,6 @@ +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x71,0xfe,0x71,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x7e,0x00,0x00,0x00,0x00,0x00,0x7e,0x00,0x3e,0x00,0x00,0x00,0x00,0x00,0x60,0x06,0x60,0x06,0xfe,0x7f,0xfe,0x7f,0x60,0x06,0x60,0x06,0xfe,0x7f,0xfe,0x7f,0x60,0x06,0x60,0x06,0x60,0x18,0xf0,0x18,0x98,0x19,0x98,0x19,0xfe,0x7f,0xfe,0x7f,0x98,0x19,0x98,0x19,0x18,0x0f,0x18,0x06,0x0c,0x18,0x1e,0x1c,0x1e,0x0e,0x0c,0x07,0x80,0x03,0xc0,0x01,0xe0,0x30,0x70,0x78,0x38,0x78,0x18,0x30,0x78,0x1e,0xfc,0x3f,0x8e,0x71,0xc6,0x63,0xe6,0x67,0x76,0x66,0x3c,0x3c,0x18,0x3c,0x00,0x66,0x00,0x66,0x00,0x00,0x00,0x00,0x66,0x00,0x76,0x00,0x3e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x07,0xf0,0x0f,0x38,0x1c,0x1c,0x38,0x0e,0x70,0x06,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x60,0x0e,0x70,0x1c,0x38,0x38,0x1c,0xf0,0x0f,0xe0,0x07,0x00,0x00,0x00,0x00,0x60,0x06,0x60,0x06,0xc0,0x03,0x80,0x01,0xf8,0x1f,0xf8,0x1f,0x80,0x01,0xc0,0x03,0x60,0x06,0x60,0x06,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xf8,0x1f,0xf8,0x1f,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x66,0x00,0x76,0x00,0x3e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x78,0x00,0x78,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x1c,0x00,0x0e,0x00,0x07,0x80,0x03,0xc0,0x01,0xe0,0x00,0x70,0x00,0x38,0x00,0x18,0x00, +0x00,0x00,0x00,0x00,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x60,0x0e,0x70,0xfc,0x3f,0xf8,0x1f,0x00,0x00,0x00,0x00,0x18,0x60,0x1c,0x60,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x78,0x1c,0x7c,0x0e,0x6e,0x06,0x67,0x86,0x63,0xce,0x61,0xfc,0x60,0x78,0x60,0x00,0x00,0x00,0x00,0x06,0x60,0x06,0x60,0x86,0x61,0x86,0x61,0x86,0x61,0xce,0x73,0xfc,0x3f,0x78,0x1e,0x00,0x00,0x00,0x00,0x80,0x07,0xc0,0x07,0xe0,0x06,0x70,0x06,0x38,0x06,0x1c,0x06,0xfe,0x7f,0xfe,0x7f,0x00,0x00,0x00,0x00,0x7e,0x18,0x7e,0x38,0x66,0x70,0x66,0x60,0x66,0x60,0xe6,0x70,0xc6,0x3f,0x86,0x1f,0x00,0x00,0x00,0x00,0xf8,0x1f,0xfc,0x3f,0x8e,0x71,0x86,0x61,0x86,0x61,0x8e,0x73,0x1c,0x3f,0x18,0x1e,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x86,0x7f,0xc6,0x7f,0xe6,0x00,0x76,0x00,0x3e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x78,0x1e,0xfc,0x3f,0xce,0x73,0x86,0x61,0x86,0x61,0xce,0x73,0xfc,0x3f,0x78,0x1e,0x00,0x00,0x00,0x00,0x78,0x00,0xfc,0x00,0xce,0x61,0x86,0x71,0x86,0x39,0xce,0x1d,0xfc,0x0f,0xf8,0x07,0x00,0x00,0x00,0x00,0x30,0x0c,0x78,0x1e,0x78,0x1e,0x30,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x66,0x78,0x76,0x78,0x3e,0x30,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0xc0,0x03,0xe0,0x07,0x70,0x0e,0x38,0x1c,0x1c,0x38,0x0e,0x70,0x06,0x60,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x06,0x60,0x0e,0x70,0x1c,0x38,0x38,0x1c,0x70,0x0e,0xe0,0x07,0xc0,0x03,0x80,0x01,0x00,0x00,0x00,0x00,0x18,0x00,0x1c,0x00,0x0e,0x00,0x06,0x00,0x06,0x66,0x06,0x67,0x86,0x03,0xce,0x01,0xfc,0x00,0x78,0x00, +0x78,0x00,0xfc,0x00,0xce,0x01,0x86,0x01,0x86,0x01,0xce,0x01,0xfc,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0xe0,0x7f,0xf0,0x7f,0xb8,0x01,0x9c,0x01,0x8e,0x01,0x8e,0x01,0x9c,0x01,0xb8,0x01,0xf0,0x7f,0xe0,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0xce,0x73,0xfc,0x3f,0x78,0x1e,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x0e,0x70,0x1c,0x38,0x18,0x18,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x06,0x60,0x0e,0x70,0x1c,0x38,0x38,0x1c,0xf0,0x0f,0xe0,0x07,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x06,0x00,0x06,0x00,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x86,0x61,0x86,0x61,0x86,0x61,0x8e,0x71,0x9c,0x7f,0x98,0x3f,0xfe,0x7f,0xfe,0x7f,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xfe,0x7f,0xfe,0x7f,0x00,0x00,0x00,0x00,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x38,0x00,0x70,0x00,0x60,0x06,0x60,0x06,0x70,0xfe,0x3f,0xfe,0x1f,0x06,0x00,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0x80,0x01,0xc0,0x03,0xe0,0x07,0x70,0x0e,0x38,0x1c,0x1c,0x38,0x0e,0x70,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0xfe,0x7f,0xfe,0x7f,0x1c,0x00,0x38,0x00,0xf0,0x01,0xf0,0x01,0x38,0x00,0x1c,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x70,0x00,0xe0,0x00,0xc0,0x01,0x80,0x03,0x00,0x07,0x00,0x0e,0xfe,0x7f,0xfe,0x7f,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x0e,0x70,0xfc,0x3f,0xf8,0x1f, +0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0xce,0x01,0xfc,0x00,0x78,0x00,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x66,0x06,0x6e,0x06,0x3c,0x0e,0x38,0xfc,0x7f,0xf8,0x67,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x07,0x86,0x0f,0x86,0x1d,0xce,0x39,0xfc,0x70,0x78,0x60,0x78,0x18,0xfc,0x38,0xce,0x71,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x8e,0x73,0x1c,0x3f,0x18,0x1e,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0xfe,0x1f,0xfe,0x3f,0x00,0x70,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x70,0xfe,0x3f,0xfe,0x1f,0xfe,0x07,0xfe,0x0f,0x00,0x1c,0x00,0x38,0x00,0x70,0x00,0x70,0x00,0x38,0x00,0x1c,0xfe,0x0f,0xfe,0x07,0xfe,0x1f,0xfe,0x3f,0x00,0x70,0x00,0x70,0x00,0x3e,0x00,0x3e,0x00,0x70,0x00,0x70,0xfe,0x3f,0xfe,0x1f,0x1e,0x78,0x3e,0x7c,0x70,0x0e,0xe0,0x07,0xc0,0x03,0xc0,0x03,0xe0,0x07,0x70,0x0e,0x3e,0x7c,0x1e,0x78,0x7e,0x00,0xfe,0x00,0xc0,0x01,0x80,0x03,0x00,0x7f,0x00,0x7f,0x80,0x03,0xc0,0x01,0xfe,0x00,0x7e,0x00,0x06,0x78,0x06,0x7c,0x06,0x6e,0x06,0x67,0x86,0x63,0xc6,0x61,0xe6,0x60,0x76,0x60,0x3e,0x60,0x1e,0x60,0x00,0x00,0x00,0x00,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x00,0x00,0x00,0x00,0x18,0x00,0x38,0x00,0x70,0x00,0xe0,0x00,0xc0,0x01,0x80,0x03,0x00,0x07,0x00,0x0e,0x00,0x1c,0x00,0x18,0x00,0x00,0x00,0x00,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x00,0x00,0x00,0x00,0x60,0x00,0x70,0x00,0x38,0x00,0x1c,0x00,0x0e,0x00,0x0e,0x00,0x1c,0x00,0x38,0x00,0x70,0x00,0x60,0x00,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60, +0x00,0x00,0x00,0x00,0x06,0x00,0x0e,0x00,0x1c,0x00,0x38,0x00,0x70,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x3c,0x60,0x7e,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0x66,0xc0,0x7f,0x80,0x7f,0xfe,0x7f,0xfe,0x7f,0x80,0x61,0xc0,0x61,0xe0,0x60,0x60,0x60,0x60,0x60,0xe0,0x70,0xc0,0x3f,0x80,0x1f,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x70,0x00,0x38,0x00,0x18,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x60,0x60,0xe0,0x60,0xc0,0x61,0x80,0x61,0xfe,0x7f,0xfe,0x7f,0x80,0x1f,0xc0,0x3f,0xe0,0x76,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0x66,0xc0,0x07,0x80,0x07,0x80,0x01,0x80,0x01,0xf8,0x7f,0xfc,0x7f,0x8e,0x01,0x86,0x01,0x06,0x00,0x0e,0x00,0x1c,0x00,0x18,0x00,0xe0,0x01,0xf0,0x03,0x38,0x67,0x18,0x66,0x18,0x66,0x18,0x66,0x18,0x66,0x18,0x76,0xf8,0x3f,0xf8,0x1f,0xfe,0x7f,0xfe,0x7f,0x80,0x01,0xc0,0x01,0xe0,0x00,0x60,0x00,0x60,0x00,0xe0,0x00,0xc0,0x7f,0x80,0x7f,0x00,0x00,0x00,0x00,0x60,0x60,0x60,0x60,0xe6,0x7f,0xe6,0x7f,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x38,0x00,0x70,0x00,0x60,0x60,0x60,0x60,0x70,0xe6,0x3f,0xe6,0x1f,0x00,0x00,0x00,0x00,0xfe,0x7f,0xfe,0x7f,0x00,0x06,0x00,0x0f,0x80,0x1f,0xc0,0x39,0xe0,0x70,0x60,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0x00,0xe0,0x7f,0xe0,0x7f,0x60,0x00,0xe0,0x00,0xc0,0x07,0xc0,0x07,0xe0,0x00,0xe0,0x00,0xc0,0x7f,0x80,0x7f,0xe0,0x7f,0xe0,0x7f,0x80,0x01,0xc0,0x01,0xe0,0x00,0x60,0x00,0x60,0x00,0xe0,0x00,0xc0,0x7f,0x80,0x7f,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xe0,0x70,0xc0,0x3f,0x80,0x1f, +0xe0,0x7f,0xe0,0x7f,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0xe0,0x07,0xc0,0x03,0x80,0x01,0x80,0x01,0xc0,0x03,0xe0,0x07,0x60,0x06,0x60,0x06,0x60,0x06,0xc0,0x07,0x80,0x07,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x80,0x01,0xc0,0x01,0xe0,0x00,0x60,0x00,0x60,0x00,0xe0,0x00,0xc0,0x01,0x80,0x01,0x80,0x61,0xc0,0x63,0xe0,0x67,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x7e,0x00,0x3c,0x00,0x18,0x60,0x00,0x60,0x00,0xfe,0x1f,0xfe,0x3f,0x60,0x70,0x60,0x60,0x00,0x60,0x00,0x70,0x00,0x38,0x00,0x18,0xe0,0x1f,0xe0,0x3f,0x00,0x70,0x00,0x60,0x00,0x60,0x00,0x70,0x00,0x38,0x00,0x18,0xe0,0x7f,0xe0,0x7f,0xe0,0x07,0xe0,0x0f,0x00,0x1c,0x00,0x38,0x00,0x70,0x00,0x70,0x00,0x38,0x00,0x1c,0xe0,0x0f,0xe0,0x07,0xe0,0x1f,0xe0,0x3f,0x00,0x70,0x00,0x70,0x00,0x38,0x00,0x38,0x00,0x70,0x00,0x70,0xe0,0x3f,0xe0,0x1f,0x60,0x60,0xe0,0x70,0xc0,0x39,0x80,0x1f,0x00,0x0f,0x00,0x0f,0x80,0x1f,0xc0,0x39,0xe0,0x70,0x60,0x60,0xe0,0x01,0xe0,0x03,0x00,0x67,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x76,0xe0,0x3f,0xe0,0x1f,0x60,0x60,0x60,0x70,0x60,0x78,0x60,0x7c,0x60,0x6e,0x60,0x67,0xe0,0x63,0xe0,0x61,0xe0,0x60,0x60,0x60,0x00,0x00,0x00,0x00,0x80,0x01,0xc0,0x03,0x78,0x1e,0x7c,0x3e,0x0e,0x70,0x06,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x7f,0xfe,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x60,0x0e,0x70,0x7c,0x3e,0x78,0x1e,0xc0,0x03,0x80,0x01,0x00,0x00,0x00,0x00,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x18,0x18,0x38,0x1c,0xf0,0x0f,0xe0,0x07,0xc0,0x03,0x80,0x01,0x80,0x01,0xc0,0x03,0xe0,0x07,0xf0,0x0f,0x38,0x1c,0x18,0x18,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01, diff --git a/radio/src/fonts/std_fw/font_10x14.png b/radio/src/fonts/std_fw/font_10x14.png new file mode 100644 index 0000000000000000000000000000000000000000..1849cc0eb38c60bbfb4271f29f3998ad83d241da GIT binary patch literal 1123 zcmV-p1f2VcP)003YC0{{R3py}({00006P)t-s00030 z|No`gpWOfe010qNS#tmY3ljhU3ljkVnw%H_000McNliru-3AK_6&+&JvfKaw1Mo>i zK~y-)mDI6r<3W1B7T&_a7>W?irSS zEc@k4Jn<*aW$lAz>abF2h!n3#lO0E7qDd{N;kO5 z$xt=}vXZJ1^{PL@0>WzU;whz2Uh;Fi$9GOpScq{@9w~)i{xB3;ax|>-@qdDe429-f z!i+|A^h!|JW<{tz;h!mmffyQcf|p145?UlFD3OxCDF)?8K(iXA(U82J^0(MG*$olw z61?s)#cSMM{GR`Xd5t-w_p^$Ku|odTN^W9$SxbuT|Zeo%)bVUtTc|3K^X-YCA4u7%@jm1D+|v zE%88h8B$Ld+iSC1Eb@Yz=e;*KnTY6e?ib1_=53MzYcnAzQ_}EgNcn-7Z1p!lnto^7OK`a2)7!(Ck4q&17ob}zY~P=IhH4U5f0@zmYZ@Da9jw- zg-oeOJhbGvB`zGx56ySmj**)uqy09;04ljW>p_;hO-4TuLA>`YLq;CR*UuAdA_W(5 zI;G}=v5GSf%aciTjEk6HF}-V6&IB}$f0juC<$n}#E={Xqx~xW|fZHomse&$AE|+DK z2h>$jsLEd|fGa%_0YA2JtXj?kBkw30(JmB+#v@Nv^&V^8uXEM!@qNsz-#7Jk&BE8) z8Nk!$AjNM$zc9RZZ(0XiN-dW2s;PecAK zp-6H&R8twS8gZB&V>=>V1NVaAfuP&t(=qlom7+{CTql-h&XxQKXx~i4?fDtv`3=ol zr{D0A5p9|F*$qLJ%opF|YXkA@;Y(}KdunI?x z6!KYwgYn3(t|?!7pU=vT`D|bkZO$_v#mlo+n~+ZnQfPiz37=1=&9~(<{56M1=iHar zy6#J?oPV!BL%vTG7o7Q$uZ-Ep+hY-P=6{}yIA<&z<~zlihh=U)CD~D;6OVR8U72E! zuoQy`__2}kz8oxHOT+o(B=f6tTuAZx_eQ>Ys5RC3zNLV>$!rGO{I^5%j2Jb`U+2+0 pIT8D9dKA_g&S#Q{2P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i*n> z5(5wu4dY1w000?uMObu0Z*6U5Zgc=ca%Ew3Wn>_CX>@2HM@dakSAh-}000FyNkljK*D9&?NBIp79F=#1*&C=ks|L6%`c~6%`c~6)i&h zT?e*p+rPhie)wOxk)J-Q@A&(u-BCY!^`Y&f{j=7`mSg#*?*FkI%CAwoETQd>wATsp^iMs1s&?6W&~HcesvT0cjg0mq`kg7GiuqH?OH_SD&$CBGMMeKxqjE@O>8Qk8P9rK}ZM=MxM|5h@xp1KqfM$i1IbnLJ7-MFA&6YQ1TSvK4^H+r-XWQ`Hr?{H$6FI(pmJnan z39#&VdyxUwVM8!%jN{pJ3K2{l6KOd~VfEW8C8 z6?NjHkPG!4iy52N;~3QZ&E8nw-7b1hR4nqfdlyoV8FyonCGyEcJR^*{B?86V&PN3k z*%f-QEg6_m74~;jJ_^gD+A(L&qk^yMypd?6!H%`i+WVo%Jo_nlKRHI=Qe%h{GAC|1~y0a z%2lS5J?kc}MNU?Xq(;7CW-(&O5peWNTr5WHC=2Kjr1x^nj7@09>w?*v>1=&4TMw+L zPiOH3;hS0?c=MIB>v*dTk$4W2lX|_YHYw@mTWgu~;LkQf}>BB5sabUv)wp1&?@)e4yd|zU7G~e3XUnLgSE~GZNEGn9Oa?#LC?&ftRXH4)`p|W$ei2I8rw?vwTzPgKQf@M^KB3ii(Pgii(PgBIyUqaxnc8#($xHO){_~%<(Sq}u>Yd~YrXxSnYg~T% zFdlwxoZdBm#eCz0A2oX(|Cj&$pNVI_Jomr+gg^HWeE8XH*iqQ<@N<8aiFe{T28I{w W6C^GAxAy^UXYh3Ob6Mw<&;$VafmR{_ literal 0 HcmV?d00001 diff --git a/radio/src/fonts/std_fw/font_cz_04x06.lbm b/radio/src/fonts/std_fw/font_cz_04x06.lbm new file mode 100644 index 000000000..450f6b219 --- /dev/null +++ b/radio/src/fonts/std_fw/font_cz_04x06.lbm @@ -0,0 +1 @@ +0x18,0x24,0x16,0x3d,0x00,0x18,0x24,0x25,0x02,0x01,0x18,0x34,0x2c,0x0a,0x01,0x18,0x34,0x2d,0x0a,0x01,0x00,0x24,0x3c,0x22,0x01,0x18,0x24,0x24,0x1a,0x01,0x3c,0x04,0x05,0x0a,0x01,0x28,0x2d,0x36,0x15,0x00,0x1c,0x20,0x22,0x3d,0x00,0x1c,0x21,0x21,0x3c,0x00,0x0c,0x50,0x22,0x1d,0x00,0x38,0x14,0x14,0x3a,0x01,0x00,0x24,0x3e,0x25,0x00,0x3c,0x15,0x16,0x2d,0x00,0x00,0x0c,0x32,0x0d,0x00,0x24,0x35,0x2e,0x25,0x00,0x3e,0x2a,0x2a,0x22,0x01, diff --git a/radio/src/fonts/std_fw/font_cz_04x06.png b/radio/src/fonts/std_fw/font_cz_04x06.png new file mode 100644 index 0000000000000000000000000000000000000000..d43f5b05ce108ef439e7894d704d6d011abd2ba4 GIT binary patch literal 220 zcmeAS@N?(olHy`uVBq!ia0vp^p+L;e$P6T%YbQSiQfvV}A+A9B|Ns9>Z_d99WHBar zySp%Su*!M>Ih+L^k;M!Q+`=Ht$S`Y;1W=H@#M9T6{Vto3D4$fGMpYM3D8|#pF@)oK za>e%Y+R_)Z@4sJ{|Mx(_{$KaL-~GP-er^2OgBL#E`Q(#Ww#D`KA+EMJ-o@MX&iC!w zox7c-`TNdWYwb60PWgRWTjH9{c8lLTmcKdn&4sV+f5Hd3j(P?LpZ&&_nH_r-f%Y(X My85}Sb4q9e06ce7X8-^I literal 0 HcmV?d00001 diff --git a/radio/src/fonts/std_fw/font_cz_05x07.lbm b/radio/src/fonts/std_fw/font_cz_05x07.lbm new file mode 100644 index 000000000..1cb949cdc --- /dev/null +++ b/radio/src/fonts/std_fw/font_cz_05x07.lbm @@ -0,0 +1 @@ +0x20,0x54,0x56,0x55,0x78,0x38,0x45,0x46,0x45,0x20,0x38,0x54,0x56,0x55,0x18,0x38,0x55,0x56,0x55,0x18,0x00,0x44,0x7e,0x41,0x00,0x38,0x44,0x46,0x45,0x38,0x7c,0x09,0x06,0x05,0x08,0x48,0x55,0x56,0x55,0x20,0x3c,0x40,0x42,0x21,0x7c,0x3c,0x40,0x43,0x23,0x7c,0x0c,0x50,0x52,0x51,0x3c,0x78,0x14,0x16,0x15,0x78,0x00,0x44,0x7e,0x45,0x00,0x7c,0x15,0x16,0x35,0x48,0x0c,0x10,0x62,0x11,0x0c,0x44,0x65,0x56,0x4d,0x44,0x7c,0x54,0x56,0x55,0x44,0x3c,0x3c,0x24,0x42,0xff,0x24,0x18,0x81,0x42,0x3c, diff --git a/radio/src/fonts/std_fw/font_cz_05x07.png b/radio/src/fonts/std_fw/font_cz_05x07.png new file mode 100644 index 0000000000000000000000000000000000000000..19ab8e4d182d90c32f35e2a56192c476885b06d7 GIT binary patch literal 223 zcmeAS@N?(olHy`uVBq!ia0vp^@j%SM$P6Txa&G(yq}T#{LR^9L|NsA&-kg6I$l@&U zh%9Dc;1&j9Muu5)B!GhKC7!;n?04C?x%qX!s8_583gvjZIEHXsPp*iT{hs@J_p9pb z+xOi+R`CA!z3*4QpK3f(tKBv)<>cbFqs6LG{03(df7CpG+xPis@x6C@qIb3}{K@eC zT>nw-irZzy>k>8QeJ_8$KV|mz+o!dk8EjGUmZ`N!z1V%1^Gz7ff58N4hK?h4FOB6+ RJp$Ux;OXk;vd$@?2>|`cS(^X= literal 0 HcmV?d00001 diff --git a/radio/src/fonts/std_fw/font_cz_08x10.lbm b/radio/src/fonts/std_fw/font_cz_08x10.lbm new file mode 100644 index 000000000..63fbb75db --- /dev/null +++ b/radio/src/fonts/std_fw/font_cz_08x10.lbm @@ -0,0 +1 @@ +0x00,0x03,0xa0,0x07,0xb0,0x04,0x94,0x04,0x93,0x02,0xf1,0x07,0xe0,0x07,0x00,0x00,0xc0,0x01,0xe1,0x03,0x33,0x06,0x16,0x04,0x13,0x04,0x31,0x06,0x20,0x02,0x00,0x00,0xc0,0x01,0xe0,0x03,0xb0,0x06,0x94,0x04,0xb3,0x04,0xe1,0x06,0xc0,0x02,0x00,0x00,0xc0,0x01,0xe1,0x03,0xb3,0x06,0x96,0x04,0xb3,0x04,0xe1,0x06,0xc0,0x02,0x00,0x00,0x00,0x04,0x10,0x04,0xf4,0x07,0xf3,0x07,0x01,0x04,0x00,0x04,0x00,0x00,0x00,0x00,0xc0,0x01,0xe0,0x03,0x30,0x06,0x14,0x04,0x33,0x06,0xe1,0x03,0xc0,0x01,0x00,0x00,0x11,0x00,0xf3,0x07,0xe6,0x07,0x33,0x00,0x11,0x00,0x30,0x00,0x20,0x00,0x00,0x00,0x60,0x02,0xf1,0x06,0x93,0x04,0x96,0x04,0x93,0x04,0xb1,0x07,0x20,0x03,0x00,0x00,0xf0,0x01,0xf0,0x03,0x00,0x06,0x04,0x04,0x03,0x02,0xf1,0x07,0xf0,0x07,0x00,0x00,0xf0,0x01,0xf0,0x03,0x02,0x06,0x05,0x04,0x05,0x02,0xf2,0x07,0xf0,0x07,0x00,0x00,0xf0,0x04,0xf0,0x0c,0x00,0x09,0x04,0x09,0x83,0x0c,0xf1,0x07,0xf0,0x03,0x00,0x00,0xf0,0x07,0xf8,0x07,0x88,0x00,0x8c,0x00,0x8b,0x00,0x89,0x00,0xf8,0x07,0xf0,0x07,0x00,0x00,0x08,0x04,0x08,0x04,0xfc,0x07,0xfb,0x07,0x09,0x04,0x08,0x04,0x00,0x00,0xf8,0x07,0xf9,0x07,0xcb,0x00,0xce,0x00,0xcb,0x01,0x49,0x03,0x78,0x06,0x30,0x04,0x18,0x00,0x18,0x00,0x30,0x00,0xe4,0x07,0xe3,0x07,0x31,0x00,0x18,0x00,0x18,0x00,0x08,0x06,0x09,0x07,0x8b,0x05,0xce,0x04,0x6b,0x04,0x39,0x04,0x18,0x04,0x00,0x00,0xf8,0x07,0xf8,0x07,0x48,0x04,0x4c,0x04,0x4b,0x04,0x49,0x04,0x08,0x04,0x00,0x00, diff --git a/radio/src/fonts/std_fw/font_cz_08x10.png b/radio/src/fonts/std_fw/font_cz_08x10.png new file mode 100644 index 0000000000000000000000000000000000000000..912588acb37b199e4150c5aa801ee42403bf9de9 GIT binary patch literal 292 zcmeAS@N?(olHy`uVBq!ia0vp^9YD;($P6T#L(}gADYgKg5LY1m|NsA`H|O64vKW)R z-CYFS$5RU7< zeTsaC4R~B-Mc;5eWI>XXxZ#K)20{|VFkg`%L3)vlUEq|;F6_-sn!mKzCyOXLJB3e z$>1?Vrc8c_zQ7d~+`&|@V8{z7y+tBN)N{#F=ndlT1O3MddTF~Il{e2jdM!KWJdX|p zd1bZ~?w_`FRL1*p^dP(|+s2<(S>unYMI1*2ffSTEKczD8@n#={5aCZXprmDsI=OA|TpmaI_B z)hxY=VVF`>&mJ!b%%%|IIXRyLc22R*`%7l?%i+I*A4i_mzjazNvH$=807*qoM6N<$ Ef{F*FtN;K2 literal 0 HcmV?d00001 diff --git a/radio/src/fonts/std_fw/font_de_04x06.lbm b/radio/src/fonts/std_fw/font_de_04x06.lbm new file mode 100644 index 000000000..fcdfd7962 --- /dev/null +++ b/radio/src/fonts/std_fw/font_de_04x06.lbm @@ -0,0 +1 @@ +0x3d,0x0a,0x0a,0x3d,0x00,0x18,0x25,0x14,0x3d,0x00,0x1d,0x22,0x22,0x1d,0x00,0x18,0x25,0x24,0x19,0x00,0x1d,0x20,0x20,0x1d,0x00,0x1a,0x20,0x10,0x3a,0x00,0x7e,0x05,0x25,0x1a,0x00, diff --git a/radio/src/fonts/std_fw/font_de_04x06.png b/radio/src/fonts/std_fw/font_de_04x06.png new file mode 100644 index 0000000000000000000000000000000000000000..d9c1fa058a1f2829c5a9887dd9a7cfd8af52ccc7 GIT binary patch literal 179 zcmeAS@N?(olHy`uVBq!ia0vp^%0SG{$P6TRXr);JDYgKg5LY1m|NsA`H|O64vKW)R z-CYZ_d99WN{XF zL>4nJa0`PlBg3pY5H=O_PcD{+yXqMB5Bz`A#+a`#}JO|$q}< z7AueH#z)h*B~CrJ+3u5&FtL&^Mf`kaUPZ$~m&iv;m=4z~R4_2S|025Y(OD5Upb-q7 Lu6{1-oD!MuVhivIaRt)<|NmclbN*c*i!sUD z-G!lpRn`N@;VkfoEM{Qf76xHPhFNnYfP(BLp1!W^ciDt^RgLU#+`R}C^73?X4B@!0 zdSWB*0S6u?hcGY6lc$&ZNCq1AcVGAaWV}SFuDwb4fat9YA}6oT>U{ci!-6Xv#sXa1 r@=H6jxxd`{ulP#yy^JOEzt4<0SM=`nHFa$Sn#$nm>gTe~DWM4fNn%0m literal 0 HcmV?d00001 diff --git a/radio/src/fonts/std_fw/font_de_10x14.lbm b/radio/src/fonts/std_fw/font_de_10x14.lbm new file mode 100644 index 000000000..ed3d1da5f --- /dev/null +++ b/radio/src/fonts/std_fw/font_de_10x14.lbm @@ -0,0 +1 @@ +0x80,0x7f,0xc2,0x7f,0xe2,0x06,0x70,0x06,0x38,0x06,0x38,0x06,0x70,0x06,0xe2,0x06,0xc2,0x7f,0x80,0x7f,0x00,0x18,0x06,0x3c,0x66,0x7e,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe6,0x66,0xc6,0x7f,0x80,0x7f,0xe0,0x1f,0xf2,0x3f,0x3a,0x70,0x18,0x60,0x18,0x60,0x18,0x60,0x18,0x60,0x3a,0x70,0xf2,0x3f,0xe0,0x1f,0x80,0x1f,0xc6,0x3f,0xe6,0x70,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xe6,0x70,0xc6,0x3f,0x80,0x1f,0xf8,0x1f,0xfa,0x3f,0x02,0x70,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x02,0x70,0xfa,0x3f,0xf8,0x1f,0xe0,0x1f,0xe6,0x3f,0x06,0x70,0x00,0x60,0x00,0x60,0x00,0x70,0x00,0x38,0x06,0x18,0xe6,0x7f,0xe0,0x7f,0xf8,0x7f,0xfc,0x7f,0x0e,0x00,0x06,0x00,0x66,0x30,0x6e,0x30,0xfc,0x38,0xd8,0x1f,0x00,0x0f,0x00,0x00, diff --git a/radio/src/fonts/std_fw/font_de_10x14.png b/radio/src/fonts/std_fw/font_de_10x14.png new file mode 100644 index 0000000000000000000000000000000000000000..22ae54efc382d99120bb2c4f73afbf8e1609f71f GIT binary patch literal 254 zcmeAS@N?(olHy`uVBq!ia0vp^Za^%+$P6SWn$Ok+QfvV}A+A9B|Ns9>Z_d99WN{XF zL>4nJa0`PlBg3pY5H=O_PcD{+ya7PLR_1GLfxJ&jv*Y^lYj8D)=NBFdcG#i zQopv3_wfJcpZ|yctG9D*d-(ak{h$AD-`amOu=(@9S@y)Qnzn}r*bg5+^X*T2szeo6 zi@hOJqzzBex3ltE4Qq^fzI|)A|HHUxo`Hdc!QlulgK4(b5z~HhOep=}*eWA!%-_71 viCsF`xoI;`^Ik@N`_GO1?f(r9#IiC}KlM{uddq48&{+(gu6{1-oD!M<4_8}j literal 0 HcmV?d00001 diff --git a/radio/src/fonts/std_fw/font_es_04x06.lbm b/radio/src/fonts/std_fw/font_es_04x06.lbm new file mode 100644 index 000000000..9c8fdb698 --- /dev/null +++ b/radio/src/fonts/std_fw/font_es_04x06.lbm @@ -0,0 +1 @@ +0x3e,0x09,0x12,0x3d,0x00,0x3a,0x11,0x0a,0x39,0x00, diff --git a/radio/src/fonts/std_fw/font_es_04x06.png b/radio/src/fonts/std_fw/font_es_04x06.png new file mode 100644 index 0000000000000000000000000000000000000000..ee36412ee4bd69d18d365d53bfc8c89b24b5dca8 GIT binary patch literal 144 zcmeAS@N?(olHy`uVBq!ia0vp^AT~QAGmzv?@>2j(YymzYu0Z<#|Nl#G&c6#}aTa() z76avlL70(Y)*K0-AbW|YuPggqHg0YK4Nvi=T|gmOPZ!4!j_b)0uMY^6HYomQXr9L0 iyqwv28}s4+%nVKeY*VVzgff8&89ZJ6T-G@yGywpGpCfJn literal 0 HcmV?d00001 diff --git a/radio/src/fonts/std_fw/font_es_05x07.lbm b/radio/src/fonts/std_fw/font_es_05x07.lbm new file mode 100644 index 000000000..99f4cd1a2 --- /dev/null +++ b/radio/src/fonts/std_fw/font_es_05x07.lbm @@ -0,0 +1 @@ +0x7c,0x0a,0x11,0x22,0x7d,0x78,0x12,0x09,0x0a,0x71, diff --git a/radio/src/fonts/std_fw/font_es_05x07.png b/radio/src/fonts/std_fw/font_es_05x07.png new file mode 100644 index 0000000000000000000000000000000000000000..b1135c1b240f91d08d8a2dda7eb31e80b89fb700 GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^AT|dhGm!jc^5-j%VhivIaRt)<|NmclbN*c*i?hHZ zvY3H^TNs2H8D`Cq01C2~c>21s-(}vvU!%b0PEL|I7>togBfT)<<3d)iQXx`njxgN@xNAfrKfn literal 0 HcmV?d00001 diff --git a/radio/src/fonts/std_fw/font_es_08x10.lbm b/radio/src/fonts/std_fw/font_es_08x10.lbm new file mode 100644 index 000000000..f3bb8184c --- /dev/null +++ b/radio/src/fonts/std_fw/font_es_08x10.lbm @@ -0,0 +1 @@ +0xf0,0x07,0xf4,0x07,0x66,0x00,0xc2,0x00,0x86,0x01,0x04,0x07,0xf6,0x07,0xf2,0x07,0xf4,0x07,0xf6,0x07,0x22,0x00,0x16,0x00,0x34,0x00,0xe6,0x07,0xc2,0x07,0x00,0x00, diff --git a/radio/src/fonts/std_fw/font_es_08x10.png b/radio/src/fonts/std_fw/font_es_08x10.png new file mode 100644 index 0000000000000000000000000000000000000000..c05c1f406c7ff6e9caac538192c7fadced002c91 GIT binary patch literal 168 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~e$P6R{HP;^kQfvV}A+A9B|Ns9>Z_d99WHBar zySp%Su*!M>Ih+L^k;M!Q+`=Ht$S`Y;1W=H@#M9T6{Vtmjubi6XhG$cNLK>bfjv*Y^ zlYji5|IkDIuuCeN!eO_$j&3s=k56(uI_cnnNe7vF{{3fXxUR-kZMC1(4XB5~)78&q Iol`;+01dJ)od5s; literal 0 HcmV?d00001 diff --git a/radio/src/fonts/std_fw/font_es_10x14.lbm b/radio/src/fonts/std_fw/font_es_10x14.lbm new file mode 100644 index 000000000..92d200c51 --- /dev/null +++ b/radio/src/fonts/std_fw/font_es_10x14.lbm @@ -0,0 +1 @@ +0xe8,0x7f,0xec,0x7f,0xc6,0x01,0x82,0x03,0x04,0x07,0x08,0x0e,0x0c,0x1c,0x06,0x38,0xe2,0x7f,0xe0,0x7f,0xe0,0x7f,0xe8,0x7f,0x8c,0x01,0xc6,0x01,0xe2,0x00,0x64,0x00,0x68,0x00,0xec,0x00,0xc6,0x7f,0x82,0x7f, diff --git a/radio/src/fonts/std_fw/font_es_10x14.png b/radio/src/fonts/std_fw/font_es_10x14.png new file mode 100644 index 0000000000000000000000000000000000000000..7f803e46843b1ed4fa8c8f46d9134f8554cf17ee GIT binary patch literal 177 zcmeAS@N?(olHy`uVBq!ia0vp^B0wy_$P6TPuAPklQfvV}A+A9B|Ns9>Z_d99WN{XF zL>4nJa0`PlBg3pY5H=O_PcD{+yaskCz~38LUx`mjv*Y^lYjjG&wP02DQ2Ev zJKuy2HF*aZ9^L*dVQ`|D!{CFlnZX8Q`GkOH_6HI;j)*zrFdr#%$l*WYu$6(&NGy5Q TtS>KtCNX%r`njxgN@xNA#L+cJ literal 0 HcmV?d00001 diff --git a/radio/src/fonts/std_fw/font_fr_04x06.lbm b/radio/src/fonts/std_fw/font_fr_04x06.lbm new file mode 100644 index 000000000..afd789ef6 --- /dev/null +++ b/radio/src/fonts/std_fw/font_fr_04x06.lbm @@ -0,0 +1 @@ +0x18,0x36,0x2d,0x08,0x00,0x18,0x35,0x2e,0x08,0x00,0x18,0x25,0x16,0x3c,0x00,0x00,0x26,0x3d,0x22,0x00,0x00,0x4c,0x32,0x12,0x00, diff --git a/radio/src/fonts/std_fw/font_fr_04x06.png b/radio/src/fonts/std_fw/font_fr_04x06.png new file mode 100644 index 0000000000000000000000000000000000000000..da9f758ff983446aa427798fe539f5306443e152 GIT binary patch literal 3610 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 gnv8Wnc?Z_d99WN{XF zL>4nJa0`PlBg3pY5H=O_PcD{+=7fk`?RM6g$z7h978y+Cs+Kgt7ksE_q`x5 zkL}6((h^zopr E0HlmDVgLXD literal 0 HcmV?d00001 diff --git a/radio/src/fonts/std_fw/font_fr_08x10.lbm b/radio/src/fonts/std_fw/font_fr_08x10.lbm new file mode 100644 index 000000000..5be2553c5 --- /dev/null +++ b/radio/src/fonts/std_fw/font_fr_08x10.lbm @@ -0,0 +1 @@ +0xc0,0x01,0xe0,0x03,0xb4,0x06,0x96,0x04,0xb3,0x04,0xe1,0x06,0xc0,0x02,0x00,0x00,0xc0,0x01,0xe0,0x03,0xb1,0x06,0x93,0x04,0xb6,0x04,0xe4,0x06,0xc0,0x02,0x00,0x00,0x00,0x03,0xa0,0x07,0xb1,0x04,0x93,0x04,0x96,0x02,0xf4,0x07,0xe0,0x07,0x00,0x00,0x04,0x04,0x16,0x04,0xf3,0x07,0xf6,0x07,0x04,0x04,0x00,0x04,0x00,0x00,0xe0,0x00,0xf0,0x01,0x18,0x0b,0x08,0x0e,0x08,0x06,0x18,0x03,0x10,0x01,0x00,0x00,0x00,0x00, diff --git a/radio/src/fonts/std_fw/font_fr_08x10.png b/radio/src/fonts/std_fw/font_fr_08x10.png new file mode 100644 index 0000000000000000000000000000000000000000..f9ad08c8b5e9abe72dd876a22e22cf54c932d222 GIT binary patch literal 3647 zcmV-F4#4q=P)KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z00093P)t-s00030|NjC40s{jB1Ox;H1qB8M1_uWR2nYxX2?+`c3JVJh3=9kn4Gj(s z4i66x5D*X%5fKs+5)%^>6ciK{6%`g178e&67#J8C85tTH8XFrM92^`S9UUGX9v>ec zARr(iAt53nA|oRsBqSsyB_$>%CMPE+C@3f?DJd!{Dl021EG#T7EiEoCE-x=HFfcGN zF)=bSGBYzXG&D3dH8nOiHa9mnI5;>tIXOByIy*Z%JUl!-Jv}}?K0iM{KtMo2K|w-7 zLPJACL_|bIMMXwNMn^|SNJvOYNl8jdN=r*iOiWBoO-)WtPESuyP*6}&QBhJ-Qd3h? zR8&+|RaI72R##V7SXfwDSy@_IT3cINTwGjTU0q&YUSD5dU|?WjVPRroVq;@tWMpJz zWo2e&W@l$-XlQ6@X=!R|YHMq2Y;0_8ZEbFDZf|dIaBy&OadC2Ta&vQYbaZreb#-=j zc6WDoczAeud3kzzdV70&e0+R;eSLm@et&;|fPjF3fq{a8f`fyDgoK2Jg@uNOhKGlT zh=_=ZiHVAeii?YjjEszpjg5|uj*pLzkdTm(k&%*;l9Q8@l$4Z}m6ev3mY0{8n3$NE znVFiJnwy)OoSdAUot>VZo}ZteprD|kp`oIpqNAguq@<*!rKP5(rl+T;sHmu^si~@} zs;jH3tgNi9t*x%EuCK4Ju&}VPv9YqUva_?Zw6wIfwY9dkwzs#pxVX5vxw*Q!y1To( zyu7@dCU$jHda$;ryf%FD~k%*@Qq z&CSlv&d<-!(9qD)(b3Y<($mw^)YR0~)z#M4*4Nk9*x1lt)=I7_<=;-L_>FMg~>g((4?Ck9A?d|UF?(gsK z@bK{Q@$vHV^7Hfa^z`)g_4W4l_V@Sq`1ttw`T6?#`uqF){QUg={r&#_{{R2~`6RjA z00019NklLTv=aOOu}4*(0RTn`0YtFN R5f1{t>7V84C&1+RxzW>gTe~DWM4f=lD#7 literal 0 HcmV?d00001 diff --git a/radio/src/fonts/std_fw/font_it_04x06.lbm b/radio/src/fonts/std_fw/font_it_04x06.lbm new file mode 100644 index 000000000..c6a470f29 --- /dev/null +++ b/radio/src/fonts/std_fw/font_it_04x06.lbm @@ -0,0 +1 @@ +0x18,0x25,0x16,0x3c,0x00,0x1c,0x21,0x22,0x3c,0x00, diff --git a/radio/src/fonts/std_fw/font_it_04x06.png b/radio/src/fonts/std_fw/font_it_04x06.png new file mode 100644 index 0000000000000000000000000000000000000000..3659402499010a3c14e8f3357e315c61714d0ad6 GIT binary patch literal 145 zcmeAS@N?(olHy`uVBq!ia0vp^AT~QAGmzv?@>2j(YymzYu0Z<#|Nl#G&c6#}aTa() z76avlL70(Y)*K0-AbW|YuPggqHg0Y{o`s>2TYy4xo-U3d9M_X?R5v`l$Jmy~-j>78 ime1a1%E$AcpMfFd5BmwVS}ALwN(N6?KbLh*2~7Z^Tq67c literal 0 HcmV?d00001 diff --git a/radio/src/fonts/std_fw/font_it_05x07.lbm b/radio/src/fonts/std_fw/font_it_05x07.lbm new file mode 100644 index 000000000..17d52fd9b --- /dev/null +++ b/radio/src/fonts/std_fw/font_it_05x07.lbm @@ -0,0 +1 @@ +0x20,0x55,0x56,0x54,0x78,0x3c,0x41,0x42,0x20,0x7c, diff --git a/radio/src/fonts/std_fw/font_it_05x07.png b/radio/src/fonts/std_fw/font_it_05x07.png new file mode 100644 index 0000000000000000000000000000000000000000..4a16baf3a204a1fea1c186dcc818314e5cc87625 GIT binary patch literal 148 zcmeAS@N?(olHy`uVBq!ia0vp^AT|dhGm!jc^5-j%VhivIaRt)<|NmclbN*c*i?hHZ zvY3H^TNs2H8D`Cq01C2~c>21s-(}Z_d99WN{XF zL>4nJa0`PlBg3pY5H=O_PcD{+m2n}50I-<%4dHU>{uKbLh*2~7auqAXJY literal 0 HcmV?d00001 diff --git a/radio/src/fonts/std_fw/font_it_10x14.lbm b/radio/src/fonts/std_fw/font_it_10x14.lbm new file mode 100644 index 000000000..b25268b4e --- /dev/null +++ b/radio/src/fonts/std_fw/font_it_10x14.lbm @@ -0,0 +1 @@ +0x00,0x18,0x00,0x3c,0x60,0x7e,0x62,0x66,0x66,0x66,0x6c,0x66,0x68,0x66,0xe0,0x66,0xc0,0x7f,0x80,0x7f,0xe0,0x1f,0xe0,0x3f,0x00,0x70,0x02,0x60,0x06,0x60,0x0c,0x60,0x08,0x60,0x00,0x30,0xe0,0x7f,0xe0,0x7f, diff --git a/radio/src/fonts/std_fw/font_it_10x14.png b/radio/src/fonts/std_fw/font_it_10x14.png new file mode 100644 index 0000000000000000000000000000000000000000..43e824d5353ecef058fd43205e3f811e34ef5f65 GIT binary patch literal 178 zcmeAS@N?(olHy`uVBq!ia0vp^B0wy_$P6TPuAPklQfvV}A+A9B|Ns9>Z_d99WN{XF zL>4nJa0`PlBg3pY5H=O_PcD{+9%@Hw85xugEUAI3K3f9w+fKFTNj;6K9Nu!FJVspE{jjSC$c8y_|_GJEJU)HllA UIdbg3AkZiVPgg&ebxsLQ0Qc8A#{d8T literal 0 HcmV?d00001 diff --git a/radio/src/fonts/std_fw/font_pl_04x06.lbm b/radio/src/fonts/std_fw/font_pl_04x06.lbm new file mode 100644 index 000000000..f16f231db --- /dev/null +++ b/radio/src/fonts/std_fw/font_pl_04x06.lbm @@ -0,0 +1 @@ +0x18,0x24,0x14,0x3c,0x40,0x18,0x24,0x24,0x02,0x01,0x18,0x34,0x2c,0x48,0x00,0x00,0x29,0x3f,0x24,0x00,0x3c,0x06,0x05,0x38,0x00,0x18,0x26,0x25,0x18,0x00,0x28,0x2c,0x36,0x15,0x00,0x24,0x35,0x2d,0x24,0x00,0x24,0x34,0x2e,0x25,0x00,0x3e,0x09,0x69,0x5e,0x00,0x1c,0x22,0x22,0x15,0x00,0x3f,0x25,0x65,0x41,0x00,0x3f,0x28,0x24,0x24,0x00,0x3e,0x0c,0x11,0x3e,0x00,0x1c,0x22,0x22,0x1d,0x00,0x24,0x2a,0x2b,0x12,0x00,0x22,0x33,0x2a,0x26,0x00,0x22,0x32,0x2b,0x26,0x00, diff --git a/radio/src/fonts/std_fw/font_pl_04x06.png b/radio/src/fonts/std_fw/font_pl_04x06.png new file mode 100644 index 0000000000000000000000000000000000000000..b49d3e8baaa5f18c7928bae9231322109a59f6ab GIT binary patch literal 177 zcmeAS@N?(olHy`uVBq!ia0vp^Q9#Vj$P6Smm7T}{QfvV}A+A9B|Ns9>Z_d99WTkn! zIEHXsXN+c8@}J@Ve%tq(-~1APzkA;ShX3`u@7Lc>`@XG^!-1ja`NVUI+)*Y|*S~jQ z$i8g0<@b%a&r>(wJHX(5e%p5Q-BI6{?%jKUVa;=~Gl^W!47Mc$^?d&gwB}#^d?0xs Yf2!%PGo9QIfi^ODy85}Sb4q9e04{P)k^lez literal 0 HcmV?d00001 diff --git a/radio/src/fonts/std_fw/font_pl_05x07.lbm b/radio/src/fonts/std_fw/font_pl_05x07.lbm new file mode 100644 index 000000000..6c92d7afd --- /dev/null +++ b/radio/src/fonts/std_fw/font_pl_05x07.lbm @@ -0,0 +1 @@ +0x20,0x54,0x54,0xd4,0xb8,0x38,0x44,0x46,0x45,0x28,0x38,0x54,0x54,0xd4,0x98,0x00,0x49,0x7f,0x44,0x00,0x7c,0x08,0x06,0x05,0x78,0x38,0x44,0x46,0x45,0x38,0x48,0x54,0x56,0x55,0x20,0x44,0x65,0x55,0x4c,0x44,0x44,0x64,0x56,0x4d,0x44,0x7e,0x09,0x09,0xc9,0xbe,0x3c,0x42,0x42,0x43,0x24,0x7f,0x49,0x49,0xc9,0x81,0x08,0x7f,0x44,0x44,0x40,0x7e,0x08,0x12,0x21,0x7e,0x3c,0x42,0x42,0x43,0x3c,0x4c,0x52,0x52,0x53,0x24,0x62,0x52,0x4b,0x4a,0x46,0x62,0x52,0x4a,0x4b,0x46,0x3c,0x3c,0x24,0x42,0xff,0x24,0x18,0x81,0x42,0x3c, diff --git a/radio/src/fonts/std_fw/font_pl_05x07.png b/radio/src/fonts/std_fw/font_pl_05x07.png new file mode 100644 index 0000000000000000000000000000000000000000..85d8754813d68378609e1b8598890e9cfbaffc90 GIT binary patch literal 196 zcmeAS@N?(olHy`uVBq!ia0vp^DL~A@$P6S+rB0XuDYgKg5LY1m|NsA`H|O64vMN1Y z978y+C;y1g|6cofw${7%)$gz8CH(ka|Ni%{+ue2RjZ!x3IdEaJ&C?l7pXbP1pRdiY zJn*4%-NvW)#fuIZpP&EPHzC7r$K6xEzU{fMt^dw;_JIJK`rTi@-Yu@n-xFT@gfU?L vj&7#nNi9>APE2`j|DU<>Z>7S=a%KiLUi+_ZFK4y@9l_w~>gTe~DWM4fhjv&K literal 0 HcmV?d00001 diff --git a/radio/src/fonts/std_fw/font_pl_08x10.lbm b/radio/src/fonts/std_fw/font_pl_08x10.lbm new file mode 100644 index 000000000..4afc86fef --- /dev/null +++ b/radio/src/fonts/std_fw/font_pl_08x10.lbm @@ -0,0 +1 @@ +0x00,0x03,0xa0,0x07,0xb0,0x04,0x90,0x04,0x90,0x02,0xf0,0x0f,0xe0,0x0b,0x00,0x00,0xc0,0x01,0xe0,0x03,0x30,0x06,0x14,0x04,0x13,0x04,0x31,0x06,0x20,0x02,0x00,0x00,0xc0,0x01,0xe0,0x03,0xb0,0x06,0x90,0x04,0xb0,0x0c,0xe0,0x0a,0xc0,0x02,0x00,0x00,0x40,0x04,0x42,0x04,0xfe,0x07,0xfe,0x07,0x20,0x04,0x20,0x04,0x00,0x00,0x00,0x00,0xf0,0x07,0xf0,0x07,0x20,0x00,0x14,0x00,0x33,0x00,0xe1,0x07,0xc0,0x07,0x00,0x00,0xc0,0x01,0xe0,0x03,0x30,0x06,0x14,0x04,0x33,0x06,0xe1,0x03,0xc0,0x01,0x00,0x00,0x60,0x02,0xf0,0x06,0x90,0x04,0x94,0x04,0x93,0x04,0xb1,0x07,0x20,0x03,0x00,0x00,0x10,0x06,0x10,0x07,0x96,0x05,0xd6,0x04,0x70,0x04,0x30,0x04,0x00,0x00,0x00,0x00,0x10,0x06,0x10,0x07,0x90,0x05,0xd4,0x04,0x73,0x04,0x31,0x04,0x00,0x00,0x00,0x00,0xf0,0x07,0xf8,0x07,0x8c,0x00,0x86,0x00,0x86,0x00,0x8c,0x00,0xf8,0x0f,0xf0,0x0b,0xf0,0x01,0xf8,0x03,0x0c,0x06,0x04,0x04,0x06,0x04,0x05,0x04,0x0c,0x06,0x18,0x03,0x00,0x00,0xfe,0x07,0xfe,0x07,0x22,0x04,0x22,0x04,0x22,0x04,0x22,0x0c,0x02,0x08,0x80,0x00,0xfe,0x07,0xfe,0x07,0x40,0x04,0x40,0x04,0x20,0x04,0x20,0x04,0x00,0x04,0xfc,0x07,0xfc,0x07,0x38,0x00,0x74,0x00,0xe3,0x00,0xc1,0x01,0xfc,0x07,0xfc,0x07,0xe0,0x01,0xf0,0x03,0x18,0x06,0x08,0x04,0x0c,0x04,0x1b,0x06,0xf1,0x03,0xe0,0x01,0x30,0x02,0x78,0x06,0x48,0x04,0x4c,0x04,0x4b,0x04,0x49,0x04,0xd8,0x07,0x90,0x03,0x00,0x00,0x08,0x06,0x08,0x07,0x8b,0x05,0xcb,0x04,0x68,0x04,0x38,0x04,0x18,0x04,0x00,0x00,0x08,0x06,0x08,0x07,0x88,0x05,0xcc,0x04,0x6b,0x04,0x39,0x04,0x18,0x04, diff --git a/radio/src/fonts/std_fw/font_pl_08x10.png b/radio/src/fonts/std_fw/font_pl_08x10.png new file mode 100644 index 0000000000000000000000000000000000000000..c7dfcc9c0503976c2f68edd779ffe21c9e35e7be GIT binary patch literal 266 zcmV+l0rmcgP)GyHE0wbL!eTS`1^!W6(Ze92p16` zetE-Q3Iw7tYRq%j2lnB;rzBw;2988b$P7PuU&2iMyv7x8N3{9Tq>sAs54g#UO2qn? Q&j0`b07*qoM6N<$f^G?M`v3p{ literal 0 HcmV?d00001 diff --git a/radio/src/fonts/std_fw/font_pl_10x14.lbm b/radio/src/fonts/std_fw/font_pl_10x14.lbm new file mode 100644 index 000000000..b37adaa57 --- /dev/null +++ b/radio/src/fonts/std_fw/font_pl_10x14.lbm @@ -0,0 +1 @@ +0x00,0x18,0x00,0x3c,0x60,0x7e,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0xe6,0xc0,0xbf,0x80,0xbf,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x68,0x60,0x6c,0x60,0x67,0x60,0x63,0x70,0x01,0x38,0x00,0x18,0x80,0x1f,0xc0,0x3f,0xe0,0x76,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0xe6,0xc0,0x87,0x80,0x87,0x00,0x00,0x00,0x00,0x06,0x61,0x06,0x61,0xfe,0x7f,0xfe,0x7f,0x80,0x60,0x80,0x60,0x00,0x00,0x00,0x00,0xe0,0x7f,0xe0,0x7f,0x80,0x01,0xc0,0x01,0xe8,0x00,0x6c,0x00,0x67,0x00,0xe3,0x00,0xc1,0x7f,0x80,0x7f,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x68,0x60,0x6c,0x60,0x67,0x60,0xe3,0x70,0xc1,0x3f,0x80,0x1f,0x80,0x61,0xc0,0x63,0xe0,0x67,0x60,0x66,0x68,0x66,0x6c,0x66,0x67,0x66,0x63,0x7e,0x01,0x3c,0x00,0x18,0x60,0x60,0x60,0x70,0x60,0x78,0x66,0x7c,0x66,0x6e,0x60,0x67,0xe0,0x63,0xe0,0x61,0xe0,0x60,0x60,0x60,0x60,0x60,0x60,0x70,0x60,0x78,0x60,0x7c,0x68,0x6e,0x6c,0x67,0xe7,0x63,0xe3,0x61,0xe1,0x60,0x60,0x60,0xe0,0x7f,0xf0,0x7f,0xb8,0x01,0x9c,0x01,0x8e,0x01,0x8e,0x01,0x9c,0x01,0xb8,0x61,0xf0,0xff,0xe0,0xbf,0xe0,0x1f,0xf0,0x3f,0x38,0x70,0x18,0x60,0x1c,0x60,0x1f,0x60,0x1b,0x60,0x39,0x70,0x70,0x38,0x60,0x18,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x06,0xa0,0x06,0x80,0x00,0x06,0xfe,0x7f,0xfe,0x7f,0x00,0x63,0x80,0x61,0x80,0x61,0xc0,0x60,0xc0,0x60,0x60,0x60,0x60,0x60,0xf8,0x7f,0xf8,0x7f,0xe0,0x00,0xc0,0x01,0x80,0x03,0x04,0x07,0x07,0x0e,0x03,0x1c,0xf9,0x7f,0xf8,0x7f,0xe0,0x1f,0xf0,0x3f,0x38,0x70,0x18,0x60,0x1c,0x60,0x1f,0x60,0x1b,0x60,0x39,0x70,0xf0,0x3f,0xe0,0x1f,0xe0,0x18,0xf0,0x39,0xb8,0x73,0x18,0x63,0x1c,0x63,0x1f,0x63,0x1b,0x63,0x39,0x77,0x70,0x3e,0x60,0x1c,0x18,0x70,0x18,0x78,0x18,0x7c,0x18,0x6e,0x1b,0x67,0x9b,0x63,0xd8,0x61,0xf8,0x60,0x78,0x60,0x38,0x60,0x18,0x70,0x18,0x78,0x18,0x7c,0x18,0x6e,0x18,0x67,0x9c,0x63,0xdf,0x61,0xfb,0x60,0x79,0x60,0x38,0x60, diff --git a/radio/src/fonts/std_fw/font_pl_10x14.png b/radio/src/fonts/std_fw/font_pl_10x14.png new file mode 100644 index 0000000000000000000000000000000000000000..02352cdac743a5906940b992231a24fa425876c1 GIT binary patch literal 368 zcmV-$0gwKPP)Gu&zn&|4#YC=C7_0+wF_7&zuZ>~(W~l@U$fdxJpa^T><6!M>L8q5-m~nrtbMGVa9PPFtG`Um zt@z~A?U?s6XR{`4HmkY#e4o!M`gfN$MKSq5FLg!FKO_T(r+9kSL;e?0s?~Eu-Bu+4 O0000Z_d99WN{XF zL>4nJa0`PlBg3pY5H=O_PcD{oYKM)Ice5FA%0I6#}JO|$v^tJBr?vhGdwz! VF{3wVxg1c6!PC{xWt~$(698T_AX)$b literal 0 HcmV?d00001 diff --git a/radio/src/fonts/std_fw/font_pt_05x07.lbm b/radio/src/fonts/std_fw/font_pt_05x07.lbm new file mode 100644 index 000000000..8f2c832a2 --- /dev/null +++ b/radio/src/fonts/std_fw/font_pt_05x07.lbm @@ -0,0 +1 @@ +0x78,0x14,0x16,0x15,0x78,0x20,0x54,0x56,0x55,0x78,0x78,0x16,0x15,0x16,0x78,0x20,0x56,0x55,0x56,0x78,0x7a,0x15,0x16,0x15,0x78,0x20,0x56,0x55,0x56,0x79,0x78,0x15,0x16,0x14,0x78,0x20,0x55,0x56,0x54,0x78,0x1e,0xa1,0x61,0x21,0x12,0x1c,0xa2,0x62,0x22,0x10,0x7c,0x54,0x56,0x55,0x44,0x38,0x54,0x56,0x55,0x18,0x7c,0x56,0x55,0x56,0x44,0x38,0x56,0x55,0x56,0x18,0x00,0x44,0x7e,0x45,0x00,0x00,0x4c,0x7a,0x40,0x00,0x3c,0x42,0x42,0x43,0x3c,0x38,0x44,0x46,0x45,0x38,0x3c,0x42,0x43,0x42,0x3c,0x38,0x44,0x46,0x44,0x38,0x3c,0x43,0x42,0x43,0x3c,0x38,0x46,0x44,0x46,0x38,0x3c,0x40,0x42,0x41,0x3c,0x38,0x40,0x44,0x22,0x78, diff --git a/radio/src/fonts/std_fw/font_pt_05x07.png b/radio/src/fonts/std_fw/font_pt_05x07.png new file mode 100644 index 0000000000000000000000000000000000000000..768ff309f095d647b56e5ddaa89cc0c47c732e23 GIT binary patch literal 246 zcmeAS@N?(olHy`uVBq!ia0vp^6+q0v$P6MoRt5kmwg8_HS0MfW|No^o=iddg7?Zr+ zT^Kr8Wj%l#&H|6fVg?3oVGw3ym^DWND9B#o>FdgVmra;UPpfG2+ciL;GEW!B5RU7~ z74iFCU;X~?e);|P_3{5+|F3JSUhljiSs%>6MXL8$BcGf#*ypxW` z<{M8rUmI7s{@1G27(8A5T-G@yGywo`tY9Vp literal 0 HcmV?d00001 diff --git a/radio/src/fonts/std_fw/font_pt_08x10.lbm b/radio/src/fonts/std_fw/font_pt_08x10.lbm new file mode 100644 index 000000000..ac3c9fafb --- /dev/null +++ b/radio/src/fonts/std_fw/font_pt_08x10.lbm @@ -0,0 +1 @@ +0xf0,0x07,0xf8,0x07,0x88,0x00,0x8c,0x00,0x8b,0x00,0x89,0x00,0xf8,0x07,0xf0,0x07,0x00,0x03,0xa0,0x07,0xb0,0x04,0x90,0x04,0x98,0x02,0xf6,0x07,0xe2,0x07,0x00,0x00,0xf0,0x07,0xfa,0x07,0x8b,0x00,0x89,0x00,0x89,0x00,0x8b,0x00,0xfa,0x07,0xf0,0x07,0x00,0x03,0xa4,0x07,0xb6,0x04,0x93,0x04,0x96,0x02,0xf4,0x07,0xe0,0x07,0x00,0x00,0xf0,0x07,0xfa,0x07,0x89,0x00,0x89,0x00,0x8b,0x00,0x8a,0x00,0xfa,0x07,0xf1,0x07,0x00,0x03,0xa0,0x07,0xb4,0x04,0x92,0x04,0x96,0x02,0xf4,0x07,0xe2,0x07,0x00,0x00,0xf0,0x07,0xf8,0x07,0x89,0x00,0x8b,0x00,0x8c,0x00,0x88,0x00,0xf8,0x07,0xf0,0x07,0x00,0x03,0xa0,0x07,0xb2,0x04,0x96,0x04,0x98,0x02,0xf0,0x07,0xe0,0x07,0x00,0x00,0xf8,0x00,0xfc,0x01,0x8e,0x0b,0x06,0x0f,0x02,0x06,0x02,0x02,0x06,0x03,0x04,0x01,0xe0,0x00,0xf0,0x01,0x18,0x0b,0x08,0x0e,0x08,0x06,0x18,0x03,0x10,0x01,0x00,0x00,0xf8,0x07,0xf8,0x07,0x48,0x04,0x4c,0x04,0x4b,0x04,0x49,0x04,0x08,0x04,0x00,0x00,0xc0,0x01,0xe0,0x03,0xb0,0x06,0x9c,0x04,0xb6,0x04,0xe2,0x06,0xc0,0x02,0x00,0x00,0xf8,0x07,0xfa,0x07,0x4b,0x04,0x49,0x04,0x49,0x04,0x4b,0x04,0x0a,0x04,0x00,0x00,0xc0,0x01,0xe4,0x03,0xb6,0x06,0x93,0x04,0xb6,0x04,0xe4,0x06,0xc0,0x02,0x00,0x00,0x00,0x00,0x08,0x04,0x08,0x04,0xfc,0x07,0xfb,0x07,0x09,0x04,0x08,0x04,0x00,0x00,0x00,0x00,0x00,0x04,0x10,0x04,0xf4,0x07,0xf3,0x07,0x01,0x04,0x00,0x04,0x00,0x00,0xe0,0x01,0xf0,0x03,0x18,0x06,0x08,0x04,0x0c,0x04,0x1b,0x06,0xf1,0x03,0xe0,0x01,0xc0,0x01,0xe0,0x03,0x30,0x06,0x18,0x04,0x36,0x06,0xe2,0x03,0xc0,0x01,0x00,0x00,0xe0,0x01,0xf2,0x03,0x1b,0x06,0x09,0x04,0x09,0x04,0x1b,0x06,0xf2,0x03,0xe0,0x01,0xc0,0x01,0xe4,0x03,0x36,0x06,0x13,0x04,0x36,0x06,0xe4,0x03,0xc0,0x01,0x00,0x00,0xe2,0x01,0xf1,0x03,0x19,0x06,0x0b,0x04,0x0a,0x04,0x1a,0x06,0xf1,0x03,0xe0,0x01,0xc0,0x01,0xe4,0x03,0x32,0x06,0x16,0x04,0x34,0x06,0xe2,0x03,0xc0,0x01,0x00,0x00,0xfc,0x01,0xfc,0x03,0x00,0x06,0x04,0x04,0x03,0x04,0x01,0x06,0xfc,0x03,0xfc,0x01,0xf0,0x01,0xf0,0x03,0x00,0x06,0x04,0x04,0x03,0x02,0xf1,0x07,0xf0,0x07,0x00,0x00, diff --git a/radio/src/fonts/std_fw/font_pt_08x10.png b/radio/src/fonts/std_fw/font_pt_08x10.png new file mode 100644 index 0000000000000000000000000000000000000000..fe2f3adda2c516a298f37ba3fdb90a2ee9103833 GIT binary patch literal 315 zcmeAS@N?(olHy`uVBq!ia0vp^2Y{G|kr_zxStxV^DYgKg5LY1m|NsA`H|O64vKW)R z-CYM z^VkoI%bSEK{%YntFe_{B?SD>dQ;JVrkDr^jVb-Rbm%e>WblauyD6^_f%q4X5w|zAl ztlSwn0?XH_1~wjO-cvHiqFB!|_m78N=@}WzX^$Q+6D>YoBf+1neXLKTgn4uFcI|(M zEC2RvVtK&f@@jgTd3)&t;uc GLK6TQj%4Sl*2C8^N7 zD_AS{`?-3%q8eVfiP?jp5e#T0mxYH&gEE;E9@NAF(oD)Iy$D5=j*Nx*cvuAnQVq{gW|Vo2f^ck!93;l+95lOSZtuF7 knvC#c5kI5q1OL0e0pb}9gN6n&4*&oF07*qoM6N<$f><7}!vFvP literal 0 HcmV?d00001 diff --git a/radio/src/fonts/std_fw/font_se_04x06.lbm b/radio/src/fonts/std_fw/font_se_04x06.lbm new file mode 100644 index 000000000..8888b2f6b --- /dev/null +++ b/radio/src/fonts/std_fw/font_se_04x06.lbm @@ -0,0 +1 @@ +0x18,0x25,0x15,0x3c,0x00,0x18,0x25,0x14,0x3d,0x00,0x18,0x25,0x24,0x19,0x00,0x3c,0x0b,0x0b,0x3c,0x00,0x3d,0x0a,0x0a,0x3d,0x00,0x1d,0x22,0x22,0x1d,0x00, diff --git a/radio/src/fonts/std_fw/font_se_04x06.png b/radio/src/fonts/std_fw/font_se_04x06.png new file mode 100644 index 0000000000000000000000000000000000000000..aeba5adedcf32b29a878e4126285eea96af1cde9 GIT binary patch literal 157 zcmeAS@N?(olHy`uVBq!ia0vp^azM<^$P6S^)$=z2DYgKg5LY1m|NsA`H|O64vN#Jo zB8wRqxP?KOkzv*x37{Z*iKnkC`&~9}P6?xW4b^2pAuUfA#}JO|$unl>Zfkw`zy7o_ yk8S4lZ3ZdsoH>afx|lXyTNZ20JmtrKb_Q7u!Rx1j#o~dw7(8A5T-G@yGyworQ7jAq literal 0 HcmV?d00001 diff --git a/radio/src/fonts/std_fw/font_se_05x07.lbm b/radio/src/fonts/std_fw/font_se_05x07.lbm new file mode 100644 index 000000000..8d767a82b --- /dev/null +++ b/radio/src/fonts/std_fw/font_se_05x07.lbm @@ -0,0 +1 @@ +0x20,0x54,0x56,0x54,0x78,0x20,0x56,0x54,0x56,0x78,0x38,0x46,0x44,0x46,0x38,0x7c,0x13,0x13,0x12,0x7c,0x7c,0x13,0x12,0x13,0x7c,0x3c,0x43,0x42,0x43,0x3c, diff --git a/radio/src/fonts/std_fw/font_se_05x07.png b/radio/src/fonts/std_fw/font_se_05x07.png new file mode 100644 index 0000000000000000000000000000000000000000..8456af741ead3dd0e2818946a3e12626de36d80d GIT binary patch literal 160 zcmeAS@N?(olHy`uVBq!ia0vp^azM<%$P6T}6y8k-QfvV}A+A9B|Ns9>Z_d99WN{XF zL>4nJa0`PlBg3pY5H=O_PcD{oD#ez{WxX=g>*e#978y+C;#|={}tEayE&c8 zJhqS&K+sj18QXOboFyt=akR{0D|u? Ai~s-t literal 0 HcmV?d00001 diff --git a/radio/src/fonts/std_fw/font_se_08x10.lbm b/radio/src/fonts/std_fw/font_se_08x10.lbm new file mode 100644 index 000000000..f31490f1a --- /dev/null +++ b/radio/src/fonts/std_fw/font_se_08x10.lbm @@ -0,0 +1 @@ +0x00,0x03,0xa0,0x07,0xb4,0x04,0x9a,0x04,0x9a,0x02,0xf4,0x07,0xe0,0x07,0x00,0x00,0x00,0x03,0xa0,0x07,0xb6,0x04,0x96,0x04,0x90,0x02,0xf6,0x07,0xe6,0x07,0x00,0x00,0xc0,0x01,0xe6,0x03,0x36,0x06,0x10,0x04,0x36,0x06,0xe6,0x03,0xc0,0x01,0x00,0x00,0xe0,0x07,0xf0,0x07,0x9c,0x00,0x9a,0x00,0x9a,0x00,0x9c,0x00,0xf0,0x07,0xe0,0x07,0xe0,0x07,0xf6,0x07,0x96,0x00,0x88,0x00,0x88,0x00,0x96,0x00,0xf6,0x07,0xe0,0x07,0xe0,0x01,0xf6,0x03,0x16,0x06,0x08,0x04,0x08,0x04,0x16,0x06,0xf6,0x03,0xe0,0x01, diff --git a/radio/src/fonts/std_fw/font_se_08x10.png b/radio/src/fonts/std_fw/font_se_08x10.png new file mode 100644 index 0000000000000000000000000000000000000000..330fa77a20acfa55dd765254a8f24989ef826be3 GIT binary patch literal 190 zcmeAS@N?(olHy`uVBq!ia0vp^20+Zi$P6UqO4bMgDYgKg5LY1m|NsA`H|O64vN#Jo zB8wRqxP?KOkzv*x37{Z*iKnkC`&~9}PI2>&TW6mEg}gmo978y+tM+WL%#u<%_M$Dp5D$SQ)_B>YU?B`v+CUfQq)KJnEKW>oNQ0UFET>FVdQ&MBb@0KqUgS^xk5 literal 0 HcmV?d00001 diff --git a/radio/src/fonts/std_fw/font_se_10x14.lbm b/radio/src/fonts/std_fw/font_se_10x14.lbm new file mode 100644 index 000000000..20ce6d8df --- /dev/null +++ b/radio/src/fonts/std_fw/font_se_10x14.lbm @@ -0,0 +1 @@ +0x00,0x18,0x00,0x3c,0x60,0x7e,0x60,0x66,0x6e,0x66,0x6a,0x66,0x6e,0x66,0xe0,0x66,0xc0,0x7f,0x80,0x7f,0x00,0x18,0x00,0x3c,0x6c,0x7e,0x6c,0x66,0x60,0x66,0x60,0x66,0x6c,0x66,0xec,0x66,0xc0,0x7f,0x80,0x7f,0x80,0x1f,0xc0,0x3f,0xec,0x70,0x6c,0x60,0x60,0x60,0x60,0x60,0x6c,0x60,0xec,0x70,0xc0,0x3f,0x80,0x1f,0xe0,0x7f,0xf0,0x7f,0xb8,0x01,0x9e,0x01,0x9a,0x01,0x9a,0x01,0x9e,0x01,0xb8,0x01,0xf0,0x7f,0xe0,0x7f,0xe0,0x7f,0xf6,0x7f,0xba,0x01,0x9c,0x01,0x8e,0x01,0x8e,0x01,0x9c,0x01,0xba,0x01,0xf6,0x7f,0xe0,0x7f,0xe0,0x1f,0xf6,0x3f,0x36,0x70,0x18,0x60,0x18,0x60,0x18,0x60,0x18,0x60,0x36,0x70,0xf6,0x3f,0xe0,0x1f, diff --git a/radio/src/fonts/std_fw/font_se_10x14.png b/radio/src/fonts/std_fw/font_se_10x14.png new file mode 100644 index 0000000000000000000000000000000000000000..4ac08c4d598a870e9402a1c48d56a3da24e19360 GIT binary patch literal 233 zcmeAS@N?(olHy`uVBq!ia0vp^Hb5-E$P6S4V)|-;6kC8#h%1o(|NsBeoAd7iS)2tP zk;M!Q+`=Ht$S`Y;1W=H@#M9T6{Vp3fr#Oo_*P0JNp)yYw#}JO|$v^lROfEFEKkwh$$jE#~ al3`MvTQ2v?z*?XS7(8A5T-G@yGywpk=1&9w literal 0 HcmV?d00001 From 2cb5586fd6f757de525f01ee340a33b3bd7aa37f Mon Sep 17 00:00:00 2001 From: mhotar Date: Sun, 15 Dec 2013 18:26:02 +0100 Subject: [PATCH 012/308] Tab function in the strings \037 will help to align columns for different font types --- radio/src/lcd.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/radio/src/lcd.cpp b/radio/src/lcd.cpp index 7097719ab..6aa7eebcd 100644 --- a/radio/src/lcd.cpp +++ b/radio/src/lcd.cpp @@ -358,6 +358,10 @@ void lcd_putsnAtt(xcoord_t x, uint8_t y, const pm_char * s, uint8_t len, LcdFlag lcd_putcAtt(x, y, c, mode); x += lcdLastFW; } + else if (c == 0x1F) { + x++; + x |= 0x0F; + } else { x += (c*FW/2); } From 3569272812a8314232a8bc264ae2fb42b964159a Mon Sep 17 00:00:00 2001 From: mhotar Date: Tue, 17 Dec 2013 15:36:04 +0100 Subject: [PATCH 013/308] PWFONT option added to Makefile --- radio/src/Makefile | 20 ++++++++++++++---- .../fonts/{sqt5 => sqt5_pw}/font_04x06.lbm | 0 .../fonts/{sqt5 => sqt5_pw}/font_04x06.png | Bin .../fonts/{sqt5 => sqt5_pw}/font_05x07.lbm | 0 .../fonts/{sqt5 => sqt5_pw}/font_05x07.png | Bin .../fonts/{sqt5 => sqt5_pw}/font_08x10.lbm | 0 .../fonts/{sqt5 => sqt5_pw}/font_08x10.png | Bin .../fonts/{sqt5 => sqt5_pw}/font_10x14.lbm | 0 .../fonts/{sqt5 => sqt5_pw}/font_10x14.png | Bin .../font_10x14_compressed.lbm | 0 .../font_10x14_compressed.png | Bin .../fonts/{sqt5 => sqt5_pw}/font_cz_04x06.lbm | 0 .../fonts/{sqt5 => sqt5_pw}/font_cz_04x06.png | Bin .../fonts/{sqt5 => sqt5_pw}/font_cz_05x07.lbm | 0 .../fonts/{sqt5 => sqt5_pw}/font_cz_05x07.png | Bin .../fonts/{sqt5 => sqt5_pw}/font_cz_08x10.lbm | 0 .../fonts/{sqt5 => sqt5_pw}/font_cz_08x10.png | Bin .../fonts/{sqt5 => sqt5_pw}/font_cz_10x14.lbm | 0 .../fonts/{sqt5 => sqt5_pw}/font_cz_10x14.png | Bin .../fonts/{sqt5 => sqt5_pw}/font_de_04x06.lbm | 0 .../fonts/{sqt5 => sqt5_pw}/font_de_04x06.png | Bin .../fonts/{sqt5 => sqt5_pw}/font_de_05x07.lbm | 0 .../fonts/{sqt5 => sqt5_pw}/font_de_05x07.png | Bin .../fonts/{sqt5 => sqt5_pw}/font_de_08x10.lbm | 0 .../fonts/{sqt5 => sqt5_pw}/font_de_08x10.png | Bin .../fonts/{sqt5 => sqt5_pw}/font_de_10x14.lbm | 0 .../fonts/{sqt5 => sqt5_pw}/font_de_10x14.png | Bin .../fonts/{sqt5 => sqt5_pw}/font_es_04x06.lbm | 0 .../fonts/{sqt5 => sqt5_pw}/font_es_04x06.png | Bin .../fonts/{sqt5 => sqt5_pw}/font_es_05x07.lbm | 0 .../fonts/{sqt5 => sqt5_pw}/font_es_05x07.png | Bin .../fonts/{sqt5 => sqt5_pw}/font_es_08x10.lbm | 0 .../fonts/{sqt5 => sqt5_pw}/font_es_08x10.png | Bin .../fonts/{sqt5 => sqt5_pw}/font_es_10x14.lbm | 0 .../fonts/{sqt5 => sqt5_pw}/font_es_10x14.png | Bin .../fonts/{sqt5 => sqt5_pw}/font_fr_04x06.lbm | 0 .../fonts/{sqt5 => sqt5_pw}/font_fr_04x06.png | Bin .../fonts/{sqt5 => sqt5_pw}/font_fr_05x07.lbm | 0 .../fonts/{sqt5 => sqt5_pw}/font_fr_05x07.png | Bin .../fonts/{sqt5 => sqt5_pw}/font_fr_08x10.lbm | 0 .../fonts/{sqt5 => sqt5_pw}/font_fr_08x10.png | Bin .../fonts/{sqt5 => sqt5_pw}/font_fr_10x14.lbm | 0 .../fonts/{sqt5 => sqt5_pw}/font_fr_10x14.png | Bin .../fonts/{sqt5 => sqt5_pw}/font_it_04x06.lbm | 0 .../fonts/{sqt5 => sqt5_pw}/font_it_04x06.png | Bin .../fonts/{sqt5 => sqt5_pw}/font_it_05x07.lbm | 0 .../fonts/{sqt5 => sqt5_pw}/font_it_05x07.png | Bin .../fonts/{sqt5 => sqt5_pw}/font_it_08x10.lbm | 0 .../fonts/{sqt5 => sqt5_pw}/font_it_08x10.png | Bin .../fonts/{sqt5 => sqt5_pw}/font_it_10x14.lbm | 0 .../fonts/{sqt5 => sqt5_pw}/font_it_10x14.png | Bin .../fonts/{sqt5 => sqt5_pw}/font_pt_05x07.lbm | 0 .../fonts/{sqt5 => sqt5_pw}/font_pt_05x07.png | Bin .../fonts/{sqt5 => sqt5_pw}/font_pt_08x10.lbm | 0 .../fonts/{sqt5 => sqt5_pw}/font_pt_08x10.png | Bin .../fonts/{sqt5 => sqt5_pw}/font_pt_10x14.lbm | 0 .../fonts/{sqt5 => sqt5_pw}/font_pt_10x14.png | Bin .../fonts/{sqt5 => sqt5_pw}/font_se_04x06.lbm | 0 .../fonts/{sqt5 => sqt5_pw}/font_se_04x06.png | Bin .../fonts/{sqt5 => sqt5_pw}/font_se_05x07.lbm | 0 .../fonts/{sqt5 => sqt5_pw}/font_se_05x07.png | Bin .../fonts/{sqt5 => sqt5_pw}/font_se_08x10.lbm | 0 .../fonts/{sqt5 => sqt5_pw}/font_se_08x10.png | Bin .../fonts/{sqt5 => sqt5_pw}/font_se_10x14.lbm | 0 .../fonts/{sqt5 => sqt5_pw}/font_se_10x14.png | Bin .../{sqt5_fw => sqt5_pw_fw}/font_03x05.lbm | 0 .../{sqt5_fw => sqt5_pw_fw}/font_03x05.png | Bin .../{sqt5_fw => sqt5_pw_fw}/font_04x06.lbm | 0 .../{sqt5_fw => sqt5_pw_fw}/font_04x06.png | Bin .../font_04x06_extra.lbm | 0 .../font_04x06_extra.png | Bin .../{sqt5_fw => sqt5_pw_fw}/font_05x07.lbm | 0 .../{sqt5_fw => sqt5_pw_fw}/font_05x07.png | Bin .../font_05x07_extra.lbm | 0 .../font_05x07_extra.png | Bin .../{sqt5_fw => sqt5_pw_fw}/font_08x10.lbm | 0 .../{sqt5_fw => sqt5_pw_fw}/font_08x10.png | Bin .../{sqt5_fw => sqt5_pw_fw}/font_10x14.lbm | 0 .../{sqt5_fw => sqt5_pw_fw}/font_10x14.png | Bin .../font_10x14_compressed.lbm | 0 .../font_10x14_compressed.png | Bin .../font_10x14_extra.lbm | 0 .../font_10x14_extra.png | Bin .../{sqt5_fw => sqt5_pw_fw}/font_cz_04x06.lbm | 0 .../{sqt5_fw => sqt5_pw_fw}/font_cz_04x06.png | Bin .../{sqt5_fw => sqt5_pw_fw}/font_cz_05x07.lbm | 0 .../{sqt5_fw => sqt5_pw_fw}/font_cz_05x07.png | Bin .../{sqt5_fw => sqt5_pw_fw}/font_cz_08x10.lbm | 0 .../{sqt5_fw => sqt5_pw_fw}/font_cz_08x10.png | Bin .../{sqt5_fw => sqt5_pw_fw}/font_cz_10x14.lbm | 0 .../{sqt5_fw => sqt5_pw_fw}/font_cz_10x14.png | Bin .../{sqt5_fw => sqt5_pw_fw}/font_de_04x06.lbm | 0 .../{sqt5_fw => sqt5_pw_fw}/font_de_04x06.png | Bin .../{sqt5_fw => sqt5_pw_fw}/font_de_05x07.lbm | 0 .../{sqt5_fw => sqt5_pw_fw}/font_de_05x07.png | Bin .../{sqt5_fw => sqt5_pw_fw}/font_de_08x10.lbm | 0 .../{sqt5_fw => sqt5_pw_fw}/font_de_08x10.png | Bin .../{sqt5_fw => sqt5_pw_fw}/font_de_10x14.lbm | 0 .../{sqt5_fw => sqt5_pw_fw}/font_de_10x14.png | Bin .../{sqt5_fw => sqt5_pw_fw}/font_es_04x06.lbm | 0 .../{sqt5_fw => sqt5_pw_fw}/font_es_04x06.png | Bin .../{sqt5_fw => sqt5_pw_fw}/font_es_05x07.lbm | 0 .../{sqt5_fw => sqt5_pw_fw}/font_es_05x07.png | Bin .../{sqt5_fw => sqt5_pw_fw}/font_es_08x10.lbm | 0 .../{sqt5_fw => sqt5_pw_fw}/font_es_08x10.png | Bin .../{sqt5_fw => sqt5_pw_fw}/font_es_10x14.lbm | 0 .../{sqt5_fw => sqt5_pw_fw}/font_es_10x14.png | Bin .../{sqt5_fw => sqt5_pw_fw}/font_fr_04x06.lbm | 0 .../{sqt5_fw => sqt5_pw_fw}/font_fr_04x06.png | Bin .../{sqt5_fw => sqt5_pw_fw}/font_fr_05x07.lbm | 0 .../{sqt5_fw => sqt5_pw_fw}/font_fr_05x07.png | Bin .../{sqt5_fw => sqt5_pw_fw}/font_fr_08x10.lbm | 0 .../{sqt5_fw => sqt5_pw_fw}/font_fr_08x10.png | Bin .../{sqt5_fw => sqt5_pw_fw}/font_fr_10x14.lbm | 0 .../{sqt5_fw => sqt5_pw_fw}/font_fr_10x14.png | Bin .../{sqt5_fw => sqt5_pw_fw}/font_it_04x06.lbm | 0 .../{sqt5_fw => sqt5_pw_fw}/font_it_04x06.png | Bin .../{sqt5_fw => sqt5_pw_fw}/font_it_05x07.lbm | 0 .../{sqt5_fw => sqt5_pw_fw}/font_it_05x07.png | Bin .../{sqt5_fw => sqt5_pw_fw}/font_it_08x10.lbm | 0 .../{sqt5_fw => sqt5_pw_fw}/font_it_08x10.png | Bin .../{sqt5_fw => sqt5_pw_fw}/font_it_10x14.lbm | 0 .../{sqt5_fw => sqt5_pw_fw}/font_it_10x14.png | Bin .../{sqt5_fw => sqt5_pw_fw}/font_pl_04x06.lbm | 0 .../{sqt5_fw => sqt5_pw_fw}/font_pl_04x06.png | Bin .../{sqt5_fw => sqt5_pw_fw}/font_pl_05x07.lbm | 0 .../{sqt5_fw => sqt5_pw_fw}/font_pl_05x07.png | Bin .../{sqt5_fw => sqt5_pw_fw}/font_pl_08x10.lbm | 0 .../{sqt5_fw => sqt5_pw_fw}/font_pl_08x10.png | Bin .../{sqt5_fw => sqt5_pw_fw}/font_pl_10x14.lbm | 0 .../{sqt5_fw => sqt5_pw_fw}/font_pl_10x14.png | Bin .../{sqt5_fw => sqt5_pw_fw}/font_pt_04x06.lbm | 0 .../{sqt5_fw => sqt5_pw_fw}/font_pt_04x06.png | Bin .../{sqt5_fw => sqt5_pw_fw}/font_pt_05x07.lbm | 0 .../{sqt5_fw => sqt5_pw_fw}/font_pt_05x07.png | Bin .../{sqt5_fw => sqt5_pw_fw}/font_pt_08x10.lbm | 0 .../{sqt5_fw => sqt5_pw_fw}/font_pt_08x10.png | Bin .../{sqt5_fw => sqt5_pw_fw}/font_pt_10x14.lbm | 0 .../{sqt5_fw => sqt5_pw_fw}/font_pt_10x14.png | Bin .../{sqt5_fw => sqt5_pw_fw}/font_se_04x06.lbm | 0 .../{sqt5_fw => sqt5_pw_fw}/font_se_04x06.png | Bin .../{sqt5_fw => sqt5_pw_fw}/font_se_05x07.lbm | 0 .../{sqt5_fw => sqt5_pw_fw}/font_se_05x07.png | Bin .../{sqt5_fw => sqt5_pw_fw}/font_se_08x10.lbm | 0 .../{sqt5_fw => sqt5_pw_fw}/font_se_08x10.png | Bin .../{sqt5_fw => sqt5_pw_fw}/font_se_10x14.lbm | 0 .../{sqt5_fw => sqt5_pw_fw}/font_se_10x14.png | Bin .../src/fonts/{std => std_pw}/font_03x05.lbm | 0 .../src/fonts/{std => std_pw}/font_03x05.png | Bin .../src/fonts/{std => std_pw}/font_04x06.lbm | 0 .../src/fonts/{std => std_pw}/font_04x06.png | Bin .../{std => std_pw}/font_04x06_extra.lbm | 0 .../{std => std_pw}/font_04x06_extra.png | Bin .../src/fonts/{std => std_pw}/font_05x07.lbm | 0 .../src/fonts/{std => std_pw}/font_05x07.png | Bin .../{std => std_pw}/font_05x07_extra.lbm | 0 .../{std => std_pw}/font_05x07_extra.png | Bin .../src/fonts/{std => std_pw}/font_08x10.lbm | 0 .../src/fonts/{std => std_pw}/font_08x10.png | Bin .../src/fonts/{std => std_pw}/font_10x14.lbm | 0 .../src/fonts/{std => std_pw}/font_10x14.png | Bin .../{std => std_pw}/font_10x14_compressed.lbm | 0 .../{std => std_pw}/font_10x14_compressed.png | Bin .../{std => std_pw}/font_10x14_extra.lbm | 0 .../{std => std_pw}/font_10x14_extra.png | Bin .../fonts/{std => std_pw}/font_cz_04x06.lbm | 0 .../fonts/{std => std_pw}/font_cz_04x06.png | Bin .../fonts/{std => std_pw}/font_cz_05x07.lbm | 0 .../fonts/{std => std_pw}/font_cz_05x07.png | Bin .../fonts/{std => std_pw}/font_cz_08x10.lbm | 0 .../fonts/{std => std_pw}/font_cz_08x10.png | Bin .../fonts/{std => std_pw}/font_cz_10x14.lbm | 0 .../fonts/{std => std_pw}/font_cz_10x14.png | Bin .../fonts/{std => std_pw}/font_de_04x06.lbm | 0 .../fonts/{std => std_pw}/font_de_04x06.png | Bin .../fonts/{std => std_pw}/font_de_05x07.lbm | 0 .../fonts/{std => std_pw}/font_de_05x07.png | Bin .../fonts/{std => std_pw}/font_de_08x10.lbm | 0 .../fonts/{std => std_pw}/font_de_08x10.png | Bin .../fonts/{std => std_pw}/font_de_10x14.lbm | 0 .../fonts/{std => std_pw}/font_de_10x14.png | Bin .../fonts/{std => std_pw}/font_es_04x06.lbm | 0 .../fonts/{std => std_pw}/font_es_04x06.png | Bin .../fonts/{std => std_pw}/font_es_05x07.lbm | 0 .../fonts/{std => std_pw}/font_es_05x07.png | Bin .../fonts/{std => std_pw}/font_es_08x10.lbm | 0 .../fonts/{std => std_pw}/font_es_08x10.png | Bin .../fonts/{std => std_pw}/font_es_10x14.lbm | 0 .../fonts/{std => std_pw}/font_es_10x14.png | Bin .../fonts/{std => std_pw}/font_fr_04x06.lbm | 0 .../fonts/{std => std_pw}/font_fr_04x06.png | Bin .../fonts/{std => std_pw}/font_fr_05x07.lbm | 0 .../fonts/{std => std_pw}/font_fr_05x07.png | Bin .../fonts/{std => std_pw}/font_fr_08x10.lbm | 0 .../fonts/{std => std_pw}/font_fr_08x10.png | Bin .../fonts/{std => std_pw}/font_fr_10x14.lbm | 0 .../fonts/{std => std_pw}/font_fr_10x14.png | Bin .../fonts/{std => std_pw}/font_it_04x06.lbm | 0 .../fonts/{std => std_pw}/font_it_04x06.png | Bin .../fonts/{std => std_pw}/font_it_05x07.lbm | 0 .../fonts/{std => std_pw}/font_it_05x07.png | Bin .../fonts/{std => std_pw}/font_it_08x10.lbm | 0 .../fonts/{std => std_pw}/font_it_08x10.png | Bin .../fonts/{std => std_pw}/font_it_10x14.lbm | 0 .../fonts/{std => std_pw}/font_it_10x14.png | Bin .../fonts/{std => std_pw}/font_pl_04x06.lbm | 0 .../fonts/{std => std_pw}/font_pl_04x06.png | Bin .../fonts/{std => std_pw}/font_pl_05x07.lbm | 0 .../fonts/{std => std_pw}/font_pl_05x07.png | Bin .../fonts/{std => std_pw}/font_pl_08x10.lbm | 0 .../fonts/{std => std_pw}/font_pl_08x10.png | Bin .../fonts/{std => std_pw}/font_pl_10x14.lbm | 0 .../fonts/{std => std_pw}/font_pl_10x14.png | Bin .../fonts/{std => std_pw}/font_pt_04x06.lbm | 0 .../fonts/{std => std_pw}/font_pt_04x06.png | Bin .../fonts/{std => std_pw}/font_pt_05x07.lbm | 0 .../fonts/{std => std_pw}/font_pt_05x07.png | Bin .../fonts/{std => std_pw}/font_pt_08x10.lbm | 0 .../fonts/{std => std_pw}/font_pt_08x10.png | Bin .../fonts/{std => std_pw}/font_pt_10x14.lbm | 0 .../fonts/{std => std_pw}/font_pt_10x14.png | Bin .../fonts/{std => std_pw}/font_se_04x06.lbm | 0 .../fonts/{std => std_pw}/font_se_04x06.png | Bin .../fonts/{std => std_pw}/font_se_05x07.lbm | 0 .../fonts/{std => std_pw}/font_se_05x07.png | Bin .../fonts/{std => std_pw}/font_se_08x10.lbm | 0 .../fonts/{std => std_pw}/font_se_08x10.png | Bin .../fonts/{std => std_pw}/font_se_10x14.lbm | 0 .../fonts/{std => std_pw}/font_se_10x14.png | Bin .../{std_fw => std_pw_fw}/font_03x05.lbm | 0 .../{std_fw => std_pw_fw}/font_03x05.png | Bin .../{std_fw => std_pw_fw}/font_04x06.lbm | 0 .../{std_fw => std_pw_fw}/font_04x06.png | Bin .../font_04x06_extra.lbm | 0 .../font_04x06_extra.png | Bin .../{std_fw => std_pw_fw}/font_05x07.lbm | 0 .../{std_fw => std_pw_fw}/font_05x07.png | Bin .../font_05x07_extra.lbm | 0 .../font_05x07_extra.png | Bin .../{std_fw => std_pw_fw}/font_08x10.lbm | 0 .../{std_fw => std_pw_fw}/font_08x10.png | Bin .../{std_fw => std_pw_fw}/font_10x14.lbm | 0 .../{std_fw => std_pw_fw}/font_10x14.png | Bin .../font_10x14_compressed.lbm | 0 .../font_10x14_compressed.png | Bin .../font_10x14_extra.lbm | 0 .../font_10x14_extra.png | Bin .../{std_fw => std_pw_fw}/font_cz_04x06.lbm | 0 .../{std_fw => std_pw_fw}/font_cz_04x06.png | Bin .../{std_fw => std_pw_fw}/font_cz_05x07.lbm | 0 .../{std_fw => std_pw_fw}/font_cz_05x07.png | Bin .../{std_fw => std_pw_fw}/font_cz_08x10.lbm | 0 .../{std_fw => std_pw_fw}/font_cz_08x10.png | Bin .../{std_fw => std_pw_fw}/font_cz_10x14.lbm | 0 .../{std_fw => std_pw_fw}/font_cz_10x14.png | Bin .../{std_fw => std_pw_fw}/font_de_04x06.lbm | 0 .../{std_fw => std_pw_fw}/font_de_04x06.png | Bin .../{std_fw => std_pw_fw}/font_de_05x07.lbm | 0 .../{std_fw => std_pw_fw}/font_de_05x07.png | Bin .../{std_fw => std_pw_fw}/font_de_08x10.lbm | 0 .../{std_fw => std_pw_fw}/font_de_08x10.png | Bin .../{std_fw => std_pw_fw}/font_de_10x14.lbm | 0 .../{std_fw => std_pw_fw}/font_de_10x14.png | Bin .../{std_fw => std_pw_fw}/font_es_04x06.lbm | 0 .../{std_fw => std_pw_fw}/font_es_04x06.png | Bin .../{std_fw => std_pw_fw}/font_es_05x07.lbm | 0 .../{std_fw => std_pw_fw}/font_es_05x07.png | Bin .../{std_fw => std_pw_fw}/font_es_08x10.lbm | 0 .../{std_fw => std_pw_fw}/font_es_08x10.png | Bin .../{std_fw => std_pw_fw}/font_es_10x14.lbm | 0 .../{std_fw => std_pw_fw}/font_es_10x14.png | Bin .../{std_fw => std_pw_fw}/font_fr_04x06.lbm | 0 .../{std_fw => std_pw_fw}/font_fr_04x06.png | Bin .../{std_fw => std_pw_fw}/font_fr_05x07.lbm | 0 .../{std_fw => std_pw_fw}/font_fr_05x07.png | Bin .../{std_fw => std_pw_fw}/font_fr_08x10.lbm | 0 .../{std_fw => std_pw_fw}/font_fr_08x10.png | Bin .../{std_fw => std_pw_fw}/font_fr_10x14.lbm | 0 .../{std_fw => std_pw_fw}/font_fr_10x14.png | Bin .../{std_fw => std_pw_fw}/font_it_04x06.lbm | 0 .../{std_fw => std_pw_fw}/font_it_04x06.png | Bin .../{std_fw => std_pw_fw}/font_it_05x07.lbm | 0 .../{std_fw => std_pw_fw}/font_it_05x07.png | Bin .../{std_fw => std_pw_fw}/font_it_08x10.lbm | 0 .../{std_fw => std_pw_fw}/font_it_08x10.png | Bin .../{std_fw => std_pw_fw}/font_it_10x14.lbm | 0 .../{std_fw => std_pw_fw}/font_it_10x14.png | Bin .../{std_fw => std_pw_fw}/font_pl_04x06.lbm | 0 .../{std_fw => std_pw_fw}/font_pl_04x06.png | Bin .../{std_fw => std_pw_fw}/font_pl_05x07.lbm | 0 .../{std_fw => std_pw_fw}/font_pl_05x07.png | Bin .../{std_fw => std_pw_fw}/font_pl_08x10.lbm | 0 .../{std_fw => std_pw_fw}/font_pl_08x10.png | Bin .../{std_fw => std_pw_fw}/font_pl_10x14.lbm | 0 .../{std_fw => std_pw_fw}/font_pl_10x14.png | Bin .../{std_fw => std_pw_fw}/font_pt_04x06.lbm | 0 .../{std_fw => std_pw_fw}/font_pt_04x06.png | Bin .../{std_fw => std_pw_fw}/font_pt_05x07.lbm | 0 .../{std_fw => std_pw_fw}/font_pt_05x07.png | Bin .../{std_fw => std_pw_fw}/font_pt_08x10.lbm | 0 .../{std_fw => std_pw_fw}/font_pt_08x10.png | Bin .../{std_fw => std_pw_fw}/font_pt_10x14.lbm | 0 .../{std_fw => std_pw_fw}/font_pt_10x14.png | Bin .../{std_fw => std_pw_fw}/font_se_04x06.lbm | 0 .../{std_fw => std_pw_fw}/font_se_04x06.png | Bin .../{std_fw => std_pw_fw}/font_se_05x07.lbm | 0 .../{std_fw => std_pw_fw}/font_se_05x07.png | Bin .../{std_fw => std_pw_fw}/font_se_08x10.lbm | 0 .../{std_fw => std_pw_fw}/font_se_08x10.png | Bin .../{std_fw => std_pw_fw}/font_se_10x14.lbm | 0 .../{std_fw => std_pw_fw}/font_se_10x14.png | Bin 311 files changed, 16 insertions(+), 4 deletions(-) rename radio/src/fonts/{sqt5 => sqt5_pw}/font_04x06.lbm (100%) rename radio/src/fonts/{sqt5 => sqt5_pw}/font_04x06.png (100%) rename radio/src/fonts/{sqt5 => sqt5_pw}/font_05x07.lbm (100%) rename radio/src/fonts/{sqt5 => sqt5_pw}/font_05x07.png (100%) rename radio/src/fonts/{sqt5 => sqt5_pw}/font_08x10.lbm (100%) rename radio/src/fonts/{sqt5 => sqt5_pw}/font_08x10.png (100%) rename radio/src/fonts/{sqt5 => sqt5_pw}/font_10x14.lbm (100%) rename radio/src/fonts/{sqt5 => sqt5_pw}/font_10x14.png (100%) rename radio/src/fonts/{sqt5 => sqt5_pw}/font_10x14_compressed.lbm (100%) rename radio/src/fonts/{sqt5 => sqt5_pw}/font_10x14_compressed.png (100%) rename radio/src/fonts/{sqt5 => sqt5_pw}/font_cz_04x06.lbm (100%) rename radio/src/fonts/{sqt5 => sqt5_pw}/font_cz_04x06.png (100%) rename radio/src/fonts/{sqt5 => sqt5_pw}/font_cz_05x07.lbm (100%) rename radio/src/fonts/{sqt5 => sqt5_pw}/font_cz_05x07.png (100%) rename radio/src/fonts/{sqt5 => sqt5_pw}/font_cz_08x10.lbm (100%) rename radio/src/fonts/{sqt5 => sqt5_pw}/font_cz_08x10.png (100%) rename radio/src/fonts/{sqt5 => sqt5_pw}/font_cz_10x14.lbm (100%) rename radio/src/fonts/{sqt5 => sqt5_pw}/font_cz_10x14.png (100%) rename radio/src/fonts/{sqt5 => sqt5_pw}/font_de_04x06.lbm (100%) rename radio/src/fonts/{sqt5 => sqt5_pw}/font_de_04x06.png (100%) rename radio/src/fonts/{sqt5 => sqt5_pw}/font_de_05x07.lbm (100%) rename radio/src/fonts/{sqt5 => sqt5_pw}/font_de_05x07.png (100%) rename radio/src/fonts/{sqt5 => sqt5_pw}/font_de_08x10.lbm (100%) rename radio/src/fonts/{sqt5 => sqt5_pw}/font_de_08x10.png (100%) rename radio/src/fonts/{sqt5 => sqt5_pw}/font_de_10x14.lbm (100%) rename radio/src/fonts/{sqt5 => sqt5_pw}/font_de_10x14.png (100%) rename radio/src/fonts/{sqt5 => sqt5_pw}/font_es_04x06.lbm (100%) rename radio/src/fonts/{sqt5 => sqt5_pw}/font_es_04x06.png (100%) rename radio/src/fonts/{sqt5 => sqt5_pw}/font_es_05x07.lbm (100%) rename radio/src/fonts/{sqt5 => sqt5_pw}/font_es_05x07.png (100%) rename radio/src/fonts/{sqt5 => sqt5_pw}/font_es_08x10.lbm (100%) rename radio/src/fonts/{sqt5 => sqt5_pw}/font_es_08x10.png (100%) rename radio/src/fonts/{sqt5 => sqt5_pw}/font_es_10x14.lbm (100%) rename radio/src/fonts/{sqt5 => sqt5_pw}/font_es_10x14.png (100%) rename radio/src/fonts/{sqt5 => sqt5_pw}/font_fr_04x06.lbm (100%) rename radio/src/fonts/{sqt5 => sqt5_pw}/font_fr_04x06.png (100%) rename radio/src/fonts/{sqt5 => sqt5_pw}/font_fr_05x07.lbm (100%) rename radio/src/fonts/{sqt5 => sqt5_pw}/font_fr_05x07.png (100%) rename radio/src/fonts/{sqt5 => sqt5_pw}/font_fr_08x10.lbm (100%) rename radio/src/fonts/{sqt5 => sqt5_pw}/font_fr_08x10.png (100%) rename radio/src/fonts/{sqt5 => sqt5_pw}/font_fr_10x14.lbm (100%) rename radio/src/fonts/{sqt5 => sqt5_pw}/font_fr_10x14.png (100%) rename radio/src/fonts/{sqt5 => sqt5_pw}/font_it_04x06.lbm (100%) rename radio/src/fonts/{sqt5 => sqt5_pw}/font_it_04x06.png (100%) rename radio/src/fonts/{sqt5 => sqt5_pw}/font_it_05x07.lbm (100%) rename radio/src/fonts/{sqt5 => sqt5_pw}/font_it_05x07.png (100%) rename radio/src/fonts/{sqt5 => sqt5_pw}/font_it_08x10.lbm (100%) rename radio/src/fonts/{sqt5 => sqt5_pw}/font_it_08x10.png (100%) rename radio/src/fonts/{sqt5 => sqt5_pw}/font_it_10x14.lbm (100%) rename radio/src/fonts/{sqt5 => sqt5_pw}/font_it_10x14.png (100%) rename radio/src/fonts/{sqt5 => sqt5_pw}/font_pt_05x07.lbm (100%) rename radio/src/fonts/{sqt5 => sqt5_pw}/font_pt_05x07.png (100%) rename radio/src/fonts/{sqt5 => sqt5_pw}/font_pt_08x10.lbm (100%) rename radio/src/fonts/{sqt5 => sqt5_pw}/font_pt_08x10.png (100%) rename radio/src/fonts/{sqt5 => sqt5_pw}/font_pt_10x14.lbm (100%) rename radio/src/fonts/{sqt5 => sqt5_pw}/font_pt_10x14.png (100%) rename radio/src/fonts/{sqt5 => sqt5_pw}/font_se_04x06.lbm (100%) rename radio/src/fonts/{sqt5 => sqt5_pw}/font_se_04x06.png (100%) rename radio/src/fonts/{sqt5 => sqt5_pw}/font_se_05x07.lbm (100%) rename radio/src/fonts/{sqt5 => sqt5_pw}/font_se_05x07.png (100%) rename radio/src/fonts/{sqt5 => sqt5_pw}/font_se_08x10.lbm (100%) rename radio/src/fonts/{sqt5 => sqt5_pw}/font_se_08x10.png (100%) rename radio/src/fonts/{sqt5 => sqt5_pw}/font_se_10x14.lbm (100%) rename radio/src/fonts/{sqt5 => sqt5_pw}/font_se_10x14.png (100%) rename radio/src/fonts/{sqt5_fw => sqt5_pw_fw}/font_03x05.lbm (100%) rename radio/src/fonts/{sqt5_fw => sqt5_pw_fw}/font_03x05.png (100%) rename radio/src/fonts/{sqt5_fw => sqt5_pw_fw}/font_04x06.lbm (100%) rename radio/src/fonts/{sqt5_fw => sqt5_pw_fw}/font_04x06.png (100%) rename radio/src/fonts/{sqt5_fw => sqt5_pw_fw}/font_04x06_extra.lbm (100%) rename radio/src/fonts/{sqt5_fw => sqt5_pw_fw}/font_04x06_extra.png (100%) rename radio/src/fonts/{sqt5_fw => sqt5_pw_fw}/font_05x07.lbm (100%) rename radio/src/fonts/{sqt5_fw => sqt5_pw_fw}/font_05x07.png (100%) rename radio/src/fonts/{sqt5_fw => sqt5_pw_fw}/font_05x07_extra.lbm (100%) rename radio/src/fonts/{sqt5_fw => sqt5_pw_fw}/font_05x07_extra.png (100%) rename radio/src/fonts/{sqt5_fw => sqt5_pw_fw}/font_08x10.lbm (100%) rename radio/src/fonts/{sqt5_fw => sqt5_pw_fw}/font_08x10.png (100%) rename radio/src/fonts/{sqt5_fw => sqt5_pw_fw}/font_10x14.lbm (100%) rename radio/src/fonts/{sqt5_fw => sqt5_pw_fw}/font_10x14.png (100%) rename radio/src/fonts/{sqt5_fw => sqt5_pw_fw}/font_10x14_compressed.lbm (100%) rename radio/src/fonts/{sqt5_fw => sqt5_pw_fw}/font_10x14_compressed.png (100%) rename radio/src/fonts/{sqt5_fw => sqt5_pw_fw}/font_10x14_extra.lbm (100%) rename radio/src/fonts/{sqt5_fw => sqt5_pw_fw}/font_10x14_extra.png (100%) rename radio/src/fonts/{sqt5_fw => sqt5_pw_fw}/font_cz_04x06.lbm (100%) rename radio/src/fonts/{sqt5_fw => sqt5_pw_fw}/font_cz_04x06.png (100%) rename radio/src/fonts/{sqt5_fw => sqt5_pw_fw}/font_cz_05x07.lbm (100%) rename radio/src/fonts/{sqt5_fw => sqt5_pw_fw}/font_cz_05x07.png (100%) rename radio/src/fonts/{sqt5_fw => sqt5_pw_fw}/font_cz_08x10.lbm (100%) rename radio/src/fonts/{sqt5_fw => sqt5_pw_fw}/font_cz_08x10.png (100%) rename radio/src/fonts/{sqt5_fw => sqt5_pw_fw}/font_cz_10x14.lbm (100%) rename radio/src/fonts/{sqt5_fw => sqt5_pw_fw}/font_cz_10x14.png (100%) rename radio/src/fonts/{sqt5_fw => sqt5_pw_fw}/font_de_04x06.lbm (100%) rename radio/src/fonts/{sqt5_fw => sqt5_pw_fw}/font_de_04x06.png (100%) rename radio/src/fonts/{sqt5_fw => sqt5_pw_fw}/font_de_05x07.lbm (100%) rename radio/src/fonts/{sqt5_fw => sqt5_pw_fw}/font_de_05x07.png (100%) rename radio/src/fonts/{sqt5_fw => sqt5_pw_fw}/font_de_08x10.lbm (100%) rename radio/src/fonts/{sqt5_fw => sqt5_pw_fw}/font_de_08x10.png (100%) rename radio/src/fonts/{sqt5_fw => sqt5_pw_fw}/font_de_10x14.lbm (100%) rename radio/src/fonts/{sqt5_fw => sqt5_pw_fw}/font_de_10x14.png (100%) rename radio/src/fonts/{sqt5_fw => sqt5_pw_fw}/font_es_04x06.lbm (100%) rename radio/src/fonts/{sqt5_fw => sqt5_pw_fw}/font_es_04x06.png (100%) rename radio/src/fonts/{sqt5_fw => sqt5_pw_fw}/font_es_05x07.lbm (100%) rename radio/src/fonts/{sqt5_fw => sqt5_pw_fw}/font_es_05x07.png (100%) rename radio/src/fonts/{sqt5_fw => sqt5_pw_fw}/font_es_08x10.lbm (100%) rename radio/src/fonts/{sqt5_fw => sqt5_pw_fw}/font_es_08x10.png (100%) rename radio/src/fonts/{sqt5_fw => sqt5_pw_fw}/font_es_10x14.lbm (100%) rename radio/src/fonts/{sqt5_fw => sqt5_pw_fw}/font_es_10x14.png (100%) rename radio/src/fonts/{sqt5_fw => sqt5_pw_fw}/font_fr_04x06.lbm (100%) rename radio/src/fonts/{sqt5_fw => sqt5_pw_fw}/font_fr_04x06.png (100%) rename radio/src/fonts/{sqt5_fw => sqt5_pw_fw}/font_fr_05x07.lbm (100%) rename radio/src/fonts/{sqt5_fw => sqt5_pw_fw}/font_fr_05x07.png (100%) rename radio/src/fonts/{sqt5_fw => sqt5_pw_fw}/font_fr_08x10.lbm (100%) rename radio/src/fonts/{sqt5_fw => sqt5_pw_fw}/font_fr_08x10.png (100%) rename radio/src/fonts/{sqt5_fw => sqt5_pw_fw}/font_fr_10x14.lbm (100%) rename radio/src/fonts/{sqt5_fw => sqt5_pw_fw}/font_fr_10x14.png (100%) rename radio/src/fonts/{sqt5_fw => sqt5_pw_fw}/font_it_04x06.lbm (100%) rename radio/src/fonts/{sqt5_fw => sqt5_pw_fw}/font_it_04x06.png (100%) rename radio/src/fonts/{sqt5_fw => sqt5_pw_fw}/font_it_05x07.lbm (100%) rename radio/src/fonts/{sqt5_fw => sqt5_pw_fw}/font_it_05x07.png (100%) rename radio/src/fonts/{sqt5_fw => sqt5_pw_fw}/font_it_08x10.lbm (100%) rename radio/src/fonts/{sqt5_fw => sqt5_pw_fw}/font_it_08x10.png (100%) rename radio/src/fonts/{sqt5_fw => sqt5_pw_fw}/font_it_10x14.lbm (100%) rename radio/src/fonts/{sqt5_fw => sqt5_pw_fw}/font_it_10x14.png (100%) rename radio/src/fonts/{sqt5_fw => sqt5_pw_fw}/font_pl_04x06.lbm (100%) rename radio/src/fonts/{sqt5_fw => sqt5_pw_fw}/font_pl_04x06.png (100%) rename radio/src/fonts/{sqt5_fw => sqt5_pw_fw}/font_pl_05x07.lbm (100%) rename radio/src/fonts/{sqt5_fw => sqt5_pw_fw}/font_pl_05x07.png (100%) rename radio/src/fonts/{sqt5_fw => sqt5_pw_fw}/font_pl_08x10.lbm (100%) rename radio/src/fonts/{sqt5_fw => sqt5_pw_fw}/font_pl_08x10.png (100%) rename radio/src/fonts/{sqt5_fw => sqt5_pw_fw}/font_pl_10x14.lbm (100%) rename radio/src/fonts/{sqt5_fw => sqt5_pw_fw}/font_pl_10x14.png (100%) rename radio/src/fonts/{sqt5_fw => sqt5_pw_fw}/font_pt_04x06.lbm (100%) rename radio/src/fonts/{sqt5_fw => sqt5_pw_fw}/font_pt_04x06.png (100%) rename radio/src/fonts/{sqt5_fw => sqt5_pw_fw}/font_pt_05x07.lbm (100%) rename radio/src/fonts/{sqt5_fw => sqt5_pw_fw}/font_pt_05x07.png (100%) rename radio/src/fonts/{sqt5_fw => sqt5_pw_fw}/font_pt_08x10.lbm (100%) rename radio/src/fonts/{sqt5_fw => sqt5_pw_fw}/font_pt_08x10.png (100%) rename radio/src/fonts/{sqt5_fw => sqt5_pw_fw}/font_pt_10x14.lbm (100%) rename radio/src/fonts/{sqt5_fw => sqt5_pw_fw}/font_pt_10x14.png (100%) rename radio/src/fonts/{sqt5_fw => sqt5_pw_fw}/font_se_04x06.lbm (100%) rename radio/src/fonts/{sqt5_fw => sqt5_pw_fw}/font_se_04x06.png (100%) rename radio/src/fonts/{sqt5_fw => sqt5_pw_fw}/font_se_05x07.lbm (100%) rename radio/src/fonts/{sqt5_fw => sqt5_pw_fw}/font_se_05x07.png (100%) rename radio/src/fonts/{sqt5_fw => sqt5_pw_fw}/font_se_08x10.lbm (100%) rename radio/src/fonts/{sqt5_fw => sqt5_pw_fw}/font_se_08x10.png (100%) rename radio/src/fonts/{sqt5_fw => sqt5_pw_fw}/font_se_10x14.lbm (100%) rename radio/src/fonts/{sqt5_fw => sqt5_pw_fw}/font_se_10x14.png (100%) rename radio/src/fonts/{std => std_pw}/font_03x05.lbm (100%) rename radio/src/fonts/{std => std_pw}/font_03x05.png (100%) rename radio/src/fonts/{std => std_pw}/font_04x06.lbm (100%) rename radio/src/fonts/{std => std_pw}/font_04x06.png (100%) rename radio/src/fonts/{std => std_pw}/font_04x06_extra.lbm (100%) rename radio/src/fonts/{std => std_pw}/font_04x06_extra.png (100%) rename radio/src/fonts/{std => std_pw}/font_05x07.lbm (100%) rename radio/src/fonts/{std => std_pw}/font_05x07.png (100%) rename radio/src/fonts/{std => std_pw}/font_05x07_extra.lbm (100%) rename radio/src/fonts/{std => std_pw}/font_05x07_extra.png (100%) rename radio/src/fonts/{std => std_pw}/font_08x10.lbm (100%) rename radio/src/fonts/{std => std_pw}/font_08x10.png (100%) rename radio/src/fonts/{std => std_pw}/font_10x14.lbm (100%) rename radio/src/fonts/{std => std_pw}/font_10x14.png (100%) rename radio/src/fonts/{std => std_pw}/font_10x14_compressed.lbm (100%) rename radio/src/fonts/{std => std_pw}/font_10x14_compressed.png (100%) rename radio/src/fonts/{std => std_pw}/font_10x14_extra.lbm (100%) rename radio/src/fonts/{std => std_pw}/font_10x14_extra.png (100%) rename radio/src/fonts/{std => std_pw}/font_cz_04x06.lbm (100%) rename radio/src/fonts/{std => std_pw}/font_cz_04x06.png (100%) rename radio/src/fonts/{std => std_pw}/font_cz_05x07.lbm (100%) rename radio/src/fonts/{std => std_pw}/font_cz_05x07.png (100%) rename radio/src/fonts/{std => std_pw}/font_cz_08x10.lbm (100%) rename radio/src/fonts/{std => std_pw}/font_cz_08x10.png (100%) rename radio/src/fonts/{std => std_pw}/font_cz_10x14.lbm (100%) rename radio/src/fonts/{std => std_pw}/font_cz_10x14.png (100%) rename radio/src/fonts/{std => std_pw}/font_de_04x06.lbm (100%) rename radio/src/fonts/{std => std_pw}/font_de_04x06.png (100%) rename radio/src/fonts/{std => std_pw}/font_de_05x07.lbm (100%) rename radio/src/fonts/{std => std_pw}/font_de_05x07.png (100%) rename radio/src/fonts/{std => std_pw}/font_de_08x10.lbm (100%) rename radio/src/fonts/{std => std_pw}/font_de_08x10.png (100%) rename radio/src/fonts/{std => std_pw}/font_de_10x14.lbm (100%) rename radio/src/fonts/{std => std_pw}/font_de_10x14.png (100%) rename radio/src/fonts/{std => std_pw}/font_es_04x06.lbm (100%) rename radio/src/fonts/{std => std_pw}/font_es_04x06.png (100%) rename radio/src/fonts/{std => std_pw}/font_es_05x07.lbm (100%) rename radio/src/fonts/{std => std_pw}/font_es_05x07.png (100%) rename radio/src/fonts/{std => std_pw}/font_es_08x10.lbm (100%) rename radio/src/fonts/{std => std_pw}/font_es_08x10.png (100%) rename radio/src/fonts/{std => std_pw}/font_es_10x14.lbm (100%) rename radio/src/fonts/{std => std_pw}/font_es_10x14.png (100%) rename radio/src/fonts/{std => std_pw}/font_fr_04x06.lbm (100%) rename radio/src/fonts/{std => std_pw}/font_fr_04x06.png (100%) rename radio/src/fonts/{std => std_pw}/font_fr_05x07.lbm (100%) rename radio/src/fonts/{std => std_pw}/font_fr_05x07.png (100%) rename radio/src/fonts/{std => std_pw}/font_fr_08x10.lbm (100%) rename radio/src/fonts/{std => std_pw}/font_fr_08x10.png (100%) rename radio/src/fonts/{std => std_pw}/font_fr_10x14.lbm (100%) rename radio/src/fonts/{std => std_pw}/font_fr_10x14.png (100%) rename radio/src/fonts/{std => std_pw}/font_it_04x06.lbm (100%) rename radio/src/fonts/{std => std_pw}/font_it_04x06.png (100%) rename radio/src/fonts/{std => std_pw}/font_it_05x07.lbm (100%) rename radio/src/fonts/{std => std_pw}/font_it_05x07.png (100%) rename radio/src/fonts/{std => std_pw}/font_it_08x10.lbm (100%) rename radio/src/fonts/{std => std_pw}/font_it_08x10.png (100%) rename radio/src/fonts/{std => std_pw}/font_it_10x14.lbm (100%) rename radio/src/fonts/{std => std_pw}/font_it_10x14.png (100%) rename radio/src/fonts/{std => std_pw}/font_pl_04x06.lbm (100%) rename radio/src/fonts/{std => std_pw}/font_pl_04x06.png (100%) rename radio/src/fonts/{std => std_pw}/font_pl_05x07.lbm (100%) rename radio/src/fonts/{std => std_pw}/font_pl_05x07.png (100%) rename radio/src/fonts/{std => std_pw}/font_pl_08x10.lbm (100%) rename radio/src/fonts/{std => std_pw}/font_pl_08x10.png (100%) rename radio/src/fonts/{std => std_pw}/font_pl_10x14.lbm (100%) rename radio/src/fonts/{std => std_pw}/font_pl_10x14.png (100%) rename radio/src/fonts/{std => std_pw}/font_pt_04x06.lbm (100%) rename radio/src/fonts/{std => std_pw}/font_pt_04x06.png (100%) rename radio/src/fonts/{std => std_pw}/font_pt_05x07.lbm (100%) rename radio/src/fonts/{std => std_pw}/font_pt_05x07.png (100%) rename radio/src/fonts/{std => std_pw}/font_pt_08x10.lbm (100%) rename radio/src/fonts/{std => std_pw}/font_pt_08x10.png (100%) rename radio/src/fonts/{std => std_pw}/font_pt_10x14.lbm (100%) rename radio/src/fonts/{std => std_pw}/font_pt_10x14.png (100%) rename radio/src/fonts/{std => std_pw}/font_se_04x06.lbm (100%) rename radio/src/fonts/{std => std_pw}/font_se_04x06.png (100%) rename radio/src/fonts/{std => std_pw}/font_se_05x07.lbm (100%) rename radio/src/fonts/{std => std_pw}/font_se_05x07.png (100%) rename radio/src/fonts/{std => std_pw}/font_se_08x10.lbm (100%) rename radio/src/fonts/{std => std_pw}/font_se_08x10.png (100%) rename radio/src/fonts/{std => std_pw}/font_se_10x14.lbm (100%) rename radio/src/fonts/{std => std_pw}/font_se_10x14.png (100%) rename radio/src/fonts/{std_fw => std_pw_fw}/font_03x05.lbm (100%) rename radio/src/fonts/{std_fw => std_pw_fw}/font_03x05.png (100%) rename radio/src/fonts/{std_fw => std_pw_fw}/font_04x06.lbm (100%) rename radio/src/fonts/{std_fw => std_pw_fw}/font_04x06.png (100%) rename radio/src/fonts/{std_fw => std_pw_fw}/font_04x06_extra.lbm (100%) rename radio/src/fonts/{std_fw => std_pw_fw}/font_04x06_extra.png (100%) rename radio/src/fonts/{std_fw => std_pw_fw}/font_05x07.lbm (100%) rename radio/src/fonts/{std_fw => std_pw_fw}/font_05x07.png (100%) rename radio/src/fonts/{std_fw => std_pw_fw}/font_05x07_extra.lbm (100%) rename radio/src/fonts/{std_fw => std_pw_fw}/font_05x07_extra.png (100%) rename radio/src/fonts/{std_fw => std_pw_fw}/font_08x10.lbm (100%) rename radio/src/fonts/{std_fw => std_pw_fw}/font_08x10.png (100%) rename radio/src/fonts/{std_fw => std_pw_fw}/font_10x14.lbm (100%) rename radio/src/fonts/{std_fw => std_pw_fw}/font_10x14.png (100%) rename radio/src/fonts/{std_fw => std_pw_fw}/font_10x14_compressed.lbm (100%) rename radio/src/fonts/{std_fw => std_pw_fw}/font_10x14_compressed.png (100%) rename radio/src/fonts/{std_fw => std_pw_fw}/font_10x14_extra.lbm (100%) rename radio/src/fonts/{std_fw => std_pw_fw}/font_10x14_extra.png (100%) rename radio/src/fonts/{std_fw => std_pw_fw}/font_cz_04x06.lbm (100%) rename radio/src/fonts/{std_fw => std_pw_fw}/font_cz_04x06.png (100%) rename radio/src/fonts/{std_fw => std_pw_fw}/font_cz_05x07.lbm (100%) rename radio/src/fonts/{std_fw => std_pw_fw}/font_cz_05x07.png (100%) rename radio/src/fonts/{std_fw => std_pw_fw}/font_cz_08x10.lbm (100%) rename radio/src/fonts/{std_fw => std_pw_fw}/font_cz_08x10.png (100%) rename radio/src/fonts/{std_fw => std_pw_fw}/font_cz_10x14.lbm (100%) rename radio/src/fonts/{std_fw => std_pw_fw}/font_cz_10x14.png (100%) rename radio/src/fonts/{std_fw => std_pw_fw}/font_de_04x06.lbm (100%) rename radio/src/fonts/{std_fw => std_pw_fw}/font_de_04x06.png (100%) rename radio/src/fonts/{std_fw => std_pw_fw}/font_de_05x07.lbm (100%) rename radio/src/fonts/{std_fw => std_pw_fw}/font_de_05x07.png (100%) rename radio/src/fonts/{std_fw => std_pw_fw}/font_de_08x10.lbm (100%) rename radio/src/fonts/{std_fw => std_pw_fw}/font_de_08x10.png (100%) rename radio/src/fonts/{std_fw => std_pw_fw}/font_de_10x14.lbm (100%) rename radio/src/fonts/{std_fw => std_pw_fw}/font_de_10x14.png (100%) rename radio/src/fonts/{std_fw => std_pw_fw}/font_es_04x06.lbm (100%) rename radio/src/fonts/{std_fw => std_pw_fw}/font_es_04x06.png (100%) rename radio/src/fonts/{std_fw => std_pw_fw}/font_es_05x07.lbm (100%) rename radio/src/fonts/{std_fw => std_pw_fw}/font_es_05x07.png (100%) rename radio/src/fonts/{std_fw => std_pw_fw}/font_es_08x10.lbm (100%) rename radio/src/fonts/{std_fw => std_pw_fw}/font_es_08x10.png (100%) rename radio/src/fonts/{std_fw => std_pw_fw}/font_es_10x14.lbm (100%) rename radio/src/fonts/{std_fw => std_pw_fw}/font_es_10x14.png (100%) rename radio/src/fonts/{std_fw => std_pw_fw}/font_fr_04x06.lbm (100%) rename radio/src/fonts/{std_fw => std_pw_fw}/font_fr_04x06.png (100%) rename radio/src/fonts/{std_fw => std_pw_fw}/font_fr_05x07.lbm (100%) rename radio/src/fonts/{std_fw => std_pw_fw}/font_fr_05x07.png (100%) rename radio/src/fonts/{std_fw => std_pw_fw}/font_fr_08x10.lbm (100%) rename radio/src/fonts/{std_fw => std_pw_fw}/font_fr_08x10.png (100%) rename radio/src/fonts/{std_fw => std_pw_fw}/font_fr_10x14.lbm (100%) rename radio/src/fonts/{std_fw => std_pw_fw}/font_fr_10x14.png (100%) rename radio/src/fonts/{std_fw => std_pw_fw}/font_it_04x06.lbm (100%) rename radio/src/fonts/{std_fw => std_pw_fw}/font_it_04x06.png (100%) rename radio/src/fonts/{std_fw => std_pw_fw}/font_it_05x07.lbm (100%) rename radio/src/fonts/{std_fw => std_pw_fw}/font_it_05x07.png (100%) rename radio/src/fonts/{std_fw => std_pw_fw}/font_it_08x10.lbm (100%) rename radio/src/fonts/{std_fw => std_pw_fw}/font_it_08x10.png (100%) rename radio/src/fonts/{std_fw => std_pw_fw}/font_it_10x14.lbm (100%) rename radio/src/fonts/{std_fw => std_pw_fw}/font_it_10x14.png (100%) rename radio/src/fonts/{std_fw => std_pw_fw}/font_pl_04x06.lbm (100%) rename radio/src/fonts/{std_fw => std_pw_fw}/font_pl_04x06.png (100%) rename radio/src/fonts/{std_fw => std_pw_fw}/font_pl_05x07.lbm (100%) rename radio/src/fonts/{std_fw => std_pw_fw}/font_pl_05x07.png (100%) rename radio/src/fonts/{std_fw => std_pw_fw}/font_pl_08x10.lbm (100%) rename radio/src/fonts/{std_fw => std_pw_fw}/font_pl_08x10.png (100%) rename radio/src/fonts/{std_fw => std_pw_fw}/font_pl_10x14.lbm (100%) rename radio/src/fonts/{std_fw => std_pw_fw}/font_pl_10x14.png (100%) rename radio/src/fonts/{std_fw => std_pw_fw}/font_pt_04x06.lbm (100%) rename radio/src/fonts/{std_fw => std_pw_fw}/font_pt_04x06.png (100%) rename radio/src/fonts/{std_fw => std_pw_fw}/font_pt_05x07.lbm (100%) rename radio/src/fonts/{std_fw => std_pw_fw}/font_pt_05x07.png (100%) rename radio/src/fonts/{std_fw => std_pw_fw}/font_pt_08x10.lbm (100%) rename radio/src/fonts/{std_fw => std_pw_fw}/font_pt_08x10.png (100%) rename radio/src/fonts/{std_fw => std_pw_fw}/font_pt_10x14.lbm (100%) rename radio/src/fonts/{std_fw => std_pw_fw}/font_pt_10x14.png (100%) rename radio/src/fonts/{std_fw => std_pw_fw}/font_se_04x06.lbm (100%) rename radio/src/fonts/{std_fw => std_pw_fw}/font_se_04x06.png (100%) rename radio/src/fonts/{std_fw => std_pw_fw}/font_se_05x07.lbm (100%) rename radio/src/fonts/{std_fw => std_pw_fw}/font_se_05x07.png (100%) rename radio/src/fonts/{std_fw => std_pw_fw}/font_se_08x10.lbm (100%) rename radio/src/fonts/{std_fw => std_pw_fw}/font_se_08x10.png (100%) rename radio/src/fonts/{std_fw => std_pw_fw}/font_se_10x14.lbm (100%) rename radio/src/fonts/{std_fw => std_pw_fw}/font_se_10x14.png (100%) diff --git a/radio/src/Makefile b/radio/src/Makefile index 73515c551..2a77793b2 100644 --- a/radio/src/Makefile +++ b/radio/src/Makefile @@ -139,10 +139,15 @@ GRAPHICS = YES BOLD = YES BATTGRAPH = NO -# FONT TYPE +# FONT NAME # Values = STD, SQT5 FONT = STD +# PROPORTIONAL FONT +# proportional or fixed-width +# Values = YES, NO +PWFONT = YES + # PPM center adjustable # Values = YES, NO PPM_CENTER_ADJUSTABLE = NO @@ -778,12 +783,19 @@ ifneq ($(PCB), TARANIS) endif endif + ifneq ($(FONT), STD) - CPPDEFS += -DFONT_$(FONT) - INCDIRS += fonts/$(shell sh -c "echo $(FONT) | tr '[:upper:]' '[:lower:]'") + CPPDEFS += -DFONT_$(FONT) endif -INCDIRS += fonts/std +ifeq ($(PWFONT), YES) + INCDIRS += fonts/$(shell sh -c "echo $(FONT)_pw | tr '[:upper:]' '[:lower:]'") + INCDIRS += fonts/std_pw + CPPDEFS += -DPWFONT +else + INCDIRS += fonts/$(shell sh -c "echo $(FONT)_fw | tr '[:upper:]' '[:lower:]'") + INCDIRS += fonts/std_fw +endif ifeq ($(THR_TRACE), YES) CPPDEFS += -DTHRTRACE diff --git a/radio/src/fonts/sqt5/font_04x06.lbm b/radio/src/fonts/sqt5_pw/font_04x06.lbm similarity index 100% rename from radio/src/fonts/sqt5/font_04x06.lbm rename to radio/src/fonts/sqt5_pw/font_04x06.lbm diff --git a/radio/src/fonts/sqt5/font_04x06.png b/radio/src/fonts/sqt5_pw/font_04x06.png similarity index 100% rename from radio/src/fonts/sqt5/font_04x06.png rename to radio/src/fonts/sqt5_pw/font_04x06.png diff --git a/radio/src/fonts/sqt5/font_05x07.lbm b/radio/src/fonts/sqt5_pw/font_05x07.lbm similarity index 100% rename from radio/src/fonts/sqt5/font_05x07.lbm rename to radio/src/fonts/sqt5_pw/font_05x07.lbm diff --git a/radio/src/fonts/sqt5/font_05x07.png b/radio/src/fonts/sqt5_pw/font_05x07.png similarity index 100% rename from radio/src/fonts/sqt5/font_05x07.png rename to radio/src/fonts/sqt5_pw/font_05x07.png diff --git a/radio/src/fonts/sqt5/font_08x10.lbm b/radio/src/fonts/sqt5_pw/font_08x10.lbm similarity index 100% rename from radio/src/fonts/sqt5/font_08x10.lbm rename to radio/src/fonts/sqt5_pw/font_08x10.lbm diff --git a/radio/src/fonts/sqt5/font_08x10.png b/radio/src/fonts/sqt5_pw/font_08x10.png similarity index 100% rename from radio/src/fonts/sqt5/font_08x10.png rename to radio/src/fonts/sqt5_pw/font_08x10.png diff --git a/radio/src/fonts/sqt5/font_10x14.lbm b/radio/src/fonts/sqt5_pw/font_10x14.lbm similarity index 100% rename from radio/src/fonts/sqt5/font_10x14.lbm rename to radio/src/fonts/sqt5_pw/font_10x14.lbm diff --git a/radio/src/fonts/sqt5/font_10x14.png b/radio/src/fonts/sqt5_pw/font_10x14.png similarity index 100% rename from radio/src/fonts/sqt5/font_10x14.png rename to radio/src/fonts/sqt5_pw/font_10x14.png diff --git a/radio/src/fonts/sqt5/font_10x14_compressed.lbm b/radio/src/fonts/sqt5_pw/font_10x14_compressed.lbm similarity index 100% rename from radio/src/fonts/sqt5/font_10x14_compressed.lbm rename to radio/src/fonts/sqt5_pw/font_10x14_compressed.lbm diff --git a/radio/src/fonts/sqt5/font_10x14_compressed.png b/radio/src/fonts/sqt5_pw/font_10x14_compressed.png similarity index 100% rename from radio/src/fonts/sqt5/font_10x14_compressed.png rename to radio/src/fonts/sqt5_pw/font_10x14_compressed.png diff --git a/radio/src/fonts/sqt5/font_cz_04x06.lbm b/radio/src/fonts/sqt5_pw/font_cz_04x06.lbm similarity index 100% rename from radio/src/fonts/sqt5/font_cz_04x06.lbm rename to radio/src/fonts/sqt5_pw/font_cz_04x06.lbm diff --git a/radio/src/fonts/sqt5/font_cz_04x06.png b/radio/src/fonts/sqt5_pw/font_cz_04x06.png similarity index 100% rename from radio/src/fonts/sqt5/font_cz_04x06.png rename to radio/src/fonts/sqt5_pw/font_cz_04x06.png diff --git a/radio/src/fonts/sqt5/font_cz_05x07.lbm b/radio/src/fonts/sqt5_pw/font_cz_05x07.lbm similarity index 100% rename from radio/src/fonts/sqt5/font_cz_05x07.lbm rename to radio/src/fonts/sqt5_pw/font_cz_05x07.lbm diff --git a/radio/src/fonts/sqt5/font_cz_05x07.png b/radio/src/fonts/sqt5_pw/font_cz_05x07.png similarity index 100% rename from radio/src/fonts/sqt5/font_cz_05x07.png rename to radio/src/fonts/sqt5_pw/font_cz_05x07.png diff --git a/radio/src/fonts/sqt5/font_cz_08x10.lbm b/radio/src/fonts/sqt5_pw/font_cz_08x10.lbm similarity index 100% rename from radio/src/fonts/sqt5/font_cz_08x10.lbm rename to radio/src/fonts/sqt5_pw/font_cz_08x10.lbm diff --git a/radio/src/fonts/sqt5/font_cz_08x10.png b/radio/src/fonts/sqt5_pw/font_cz_08x10.png similarity index 100% rename from radio/src/fonts/sqt5/font_cz_08x10.png rename to radio/src/fonts/sqt5_pw/font_cz_08x10.png diff --git a/radio/src/fonts/sqt5/font_cz_10x14.lbm b/radio/src/fonts/sqt5_pw/font_cz_10x14.lbm similarity index 100% rename from radio/src/fonts/sqt5/font_cz_10x14.lbm rename to radio/src/fonts/sqt5_pw/font_cz_10x14.lbm diff --git a/radio/src/fonts/sqt5/font_cz_10x14.png b/radio/src/fonts/sqt5_pw/font_cz_10x14.png similarity index 100% rename from radio/src/fonts/sqt5/font_cz_10x14.png rename to radio/src/fonts/sqt5_pw/font_cz_10x14.png diff --git a/radio/src/fonts/sqt5/font_de_04x06.lbm b/radio/src/fonts/sqt5_pw/font_de_04x06.lbm similarity index 100% rename from radio/src/fonts/sqt5/font_de_04x06.lbm rename to radio/src/fonts/sqt5_pw/font_de_04x06.lbm diff --git a/radio/src/fonts/sqt5/font_de_04x06.png b/radio/src/fonts/sqt5_pw/font_de_04x06.png similarity index 100% rename from radio/src/fonts/sqt5/font_de_04x06.png rename to radio/src/fonts/sqt5_pw/font_de_04x06.png diff --git a/radio/src/fonts/sqt5/font_de_05x07.lbm b/radio/src/fonts/sqt5_pw/font_de_05x07.lbm similarity index 100% rename from radio/src/fonts/sqt5/font_de_05x07.lbm rename to radio/src/fonts/sqt5_pw/font_de_05x07.lbm diff --git a/radio/src/fonts/sqt5/font_de_05x07.png b/radio/src/fonts/sqt5_pw/font_de_05x07.png similarity index 100% rename from radio/src/fonts/sqt5/font_de_05x07.png rename to radio/src/fonts/sqt5_pw/font_de_05x07.png diff --git a/radio/src/fonts/sqt5/font_de_08x10.lbm b/radio/src/fonts/sqt5_pw/font_de_08x10.lbm similarity index 100% rename from radio/src/fonts/sqt5/font_de_08x10.lbm rename to radio/src/fonts/sqt5_pw/font_de_08x10.lbm diff --git a/radio/src/fonts/sqt5/font_de_08x10.png b/radio/src/fonts/sqt5_pw/font_de_08x10.png similarity index 100% rename from radio/src/fonts/sqt5/font_de_08x10.png rename to radio/src/fonts/sqt5_pw/font_de_08x10.png diff --git a/radio/src/fonts/sqt5/font_de_10x14.lbm b/radio/src/fonts/sqt5_pw/font_de_10x14.lbm similarity index 100% rename from radio/src/fonts/sqt5/font_de_10x14.lbm rename to radio/src/fonts/sqt5_pw/font_de_10x14.lbm diff --git a/radio/src/fonts/sqt5/font_de_10x14.png b/radio/src/fonts/sqt5_pw/font_de_10x14.png similarity index 100% rename from radio/src/fonts/sqt5/font_de_10x14.png rename to radio/src/fonts/sqt5_pw/font_de_10x14.png diff --git a/radio/src/fonts/sqt5/font_es_04x06.lbm b/radio/src/fonts/sqt5_pw/font_es_04x06.lbm similarity index 100% rename from radio/src/fonts/sqt5/font_es_04x06.lbm rename to radio/src/fonts/sqt5_pw/font_es_04x06.lbm diff --git a/radio/src/fonts/sqt5/font_es_04x06.png b/radio/src/fonts/sqt5_pw/font_es_04x06.png similarity index 100% rename from radio/src/fonts/sqt5/font_es_04x06.png rename to radio/src/fonts/sqt5_pw/font_es_04x06.png diff --git a/radio/src/fonts/sqt5/font_es_05x07.lbm b/radio/src/fonts/sqt5_pw/font_es_05x07.lbm similarity index 100% rename from radio/src/fonts/sqt5/font_es_05x07.lbm rename to radio/src/fonts/sqt5_pw/font_es_05x07.lbm diff --git a/radio/src/fonts/sqt5/font_es_05x07.png b/radio/src/fonts/sqt5_pw/font_es_05x07.png similarity index 100% rename from radio/src/fonts/sqt5/font_es_05x07.png rename to radio/src/fonts/sqt5_pw/font_es_05x07.png diff --git a/radio/src/fonts/sqt5/font_es_08x10.lbm b/radio/src/fonts/sqt5_pw/font_es_08x10.lbm similarity index 100% rename from radio/src/fonts/sqt5/font_es_08x10.lbm rename to radio/src/fonts/sqt5_pw/font_es_08x10.lbm diff --git a/radio/src/fonts/sqt5/font_es_08x10.png b/radio/src/fonts/sqt5_pw/font_es_08x10.png similarity index 100% rename from radio/src/fonts/sqt5/font_es_08x10.png rename to radio/src/fonts/sqt5_pw/font_es_08x10.png diff --git a/radio/src/fonts/sqt5/font_es_10x14.lbm b/radio/src/fonts/sqt5_pw/font_es_10x14.lbm similarity index 100% rename from radio/src/fonts/sqt5/font_es_10x14.lbm rename to radio/src/fonts/sqt5_pw/font_es_10x14.lbm diff --git a/radio/src/fonts/sqt5/font_es_10x14.png b/radio/src/fonts/sqt5_pw/font_es_10x14.png similarity index 100% rename from radio/src/fonts/sqt5/font_es_10x14.png rename to radio/src/fonts/sqt5_pw/font_es_10x14.png diff --git a/radio/src/fonts/sqt5/font_fr_04x06.lbm b/radio/src/fonts/sqt5_pw/font_fr_04x06.lbm similarity index 100% rename from radio/src/fonts/sqt5/font_fr_04x06.lbm rename to radio/src/fonts/sqt5_pw/font_fr_04x06.lbm diff --git a/radio/src/fonts/sqt5/font_fr_04x06.png b/radio/src/fonts/sqt5_pw/font_fr_04x06.png similarity index 100% rename from radio/src/fonts/sqt5/font_fr_04x06.png rename to radio/src/fonts/sqt5_pw/font_fr_04x06.png diff --git a/radio/src/fonts/sqt5/font_fr_05x07.lbm b/radio/src/fonts/sqt5_pw/font_fr_05x07.lbm similarity index 100% rename from radio/src/fonts/sqt5/font_fr_05x07.lbm rename to radio/src/fonts/sqt5_pw/font_fr_05x07.lbm diff --git a/radio/src/fonts/sqt5/font_fr_05x07.png b/radio/src/fonts/sqt5_pw/font_fr_05x07.png similarity index 100% rename from radio/src/fonts/sqt5/font_fr_05x07.png rename to radio/src/fonts/sqt5_pw/font_fr_05x07.png diff --git a/radio/src/fonts/sqt5/font_fr_08x10.lbm b/radio/src/fonts/sqt5_pw/font_fr_08x10.lbm similarity index 100% rename from radio/src/fonts/sqt5/font_fr_08x10.lbm rename to radio/src/fonts/sqt5_pw/font_fr_08x10.lbm diff --git a/radio/src/fonts/sqt5/font_fr_08x10.png b/radio/src/fonts/sqt5_pw/font_fr_08x10.png similarity index 100% rename from radio/src/fonts/sqt5/font_fr_08x10.png rename to radio/src/fonts/sqt5_pw/font_fr_08x10.png diff --git a/radio/src/fonts/sqt5/font_fr_10x14.lbm b/radio/src/fonts/sqt5_pw/font_fr_10x14.lbm similarity index 100% rename from radio/src/fonts/sqt5/font_fr_10x14.lbm rename to radio/src/fonts/sqt5_pw/font_fr_10x14.lbm diff --git a/radio/src/fonts/sqt5/font_fr_10x14.png b/radio/src/fonts/sqt5_pw/font_fr_10x14.png similarity index 100% rename from radio/src/fonts/sqt5/font_fr_10x14.png rename to radio/src/fonts/sqt5_pw/font_fr_10x14.png diff --git a/radio/src/fonts/sqt5/font_it_04x06.lbm b/radio/src/fonts/sqt5_pw/font_it_04x06.lbm similarity index 100% rename from radio/src/fonts/sqt5/font_it_04x06.lbm rename to radio/src/fonts/sqt5_pw/font_it_04x06.lbm diff --git a/radio/src/fonts/sqt5/font_it_04x06.png b/radio/src/fonts/sqt5_pw/font_it_04x06.png similarity index 100% rename from radio/src/fonts/sqt5/font_it_04x06.png rename to radio/src/fonts/sqt5_pw/font_it_04x06.png diff --git a/radio/src/fonts/sqt5/font_it_05x07.lbm b/radio/src/fonts/sqt5_pw/font_it_05x07.lbm similarity index 100% rename from radio/src/fonts/sqt5/font_it_05x07.lbm rename to radio/src/fonts/sqt5_pw/font_it_05x07.lbm diff --git a/radio/src/fonts/sqt5/font_it_05x07.png b/radio/src/fonts/sqt5_pw/font_it_05x07.png similarity index 100% rename from radio/src/fonts/sqt5/font_it_05x07.png rename to radio/src/fonts/sqt5_pw/font_it_05x07.png diff --git a/radio/src/fonts/sqt5/font_it_08x10.lbm b/radio/src/fonts/sqt5_pw/font_it_08x10.lbm similarity index 100% rename from radio/src/fonts/sqt5/font_it_08x10.lbm rename to radio/src/fonts/sqt5_pw/font_it_08x10.lbm diff --git a/radio/src/fonts/sqt5/font_it_08x10.png b/radio/src/fonts/sqt5_pw/font_it_08x10.png similarity index 100% rename from radio/src/fonts/sqt5/font_it_08x10.png rename to radio/src/fonts/sqt5_pw/font_it_08x10.png diff --git a/radio/src/fonts/sqt5/font_it_10x14.lbm b/radio/src/fonts/sqt5_pw/font_it_10x14.lbm similarity index 100% rename from radio/src/fonts/sqt5/font_it_10x14.lbm rename to radio/src/fonts/sqt5_pw/font_it_10x14.lbm diff --git a/radio/src/fonts/sqt5/font_it_10x14.png b/radio/src/fonts/sqt5_pw/font_it_10x14.png similarity index 100% rename from radio/src/fonts/sqt5/font_it_10x14.png rename to radio/src/fonts/sqt5_pw/font_it_10x14.png diff --git a/radio/src/fonts/sqt5/font_pt_05x07.lbm b/radio/src/fonts/sqt5_pw/font_pt_05x07.lbm similarity index 100% rename from radio/src/fonts/sqt5/font_pt_05x07.lbm rename to radio/src/fonts/sqt5_pw/font_pt_05x07.lbm diff --git a/radio/src/fonts/sqt5/font_pt_05x07.png b/radio/src/fonts/sqt5_pw/font_pt_05x07.png similarity index 100% rename from radio/src/fonts/sqt5/font_pt_05x07.png rename to radio/src/fonts/sqt5_pw/font_pt_05x07.png diff --git a/radio/src/fonts/sqt5/font_pt_08x10.lbm b/radio/src/fonts/sqt5_pw/font_pt_08x10.lbm similarity index 100% rename from radio/src/fonts/sqt5/font_pt_08x10.lbm rename to radio/src/fonts/sqt5_pw/font_pt_08x10.lbm diff --git a/radio/src/fonts/sqt5/font_pt_08x10.png b/radio/src/fonts/sqt5_pw/font_pt_08x10.png similarity index 100% rename from radio/src/fonts/sqt5/font_pt_08x10.png rename to radio/src/fonts/sqt5_pw/font_pt_08x10.png diff --git a/radio/src/fonts/sqt5/font_pt_10x14.lbm b/radio/src/fonts/sqt5_pw/font_pt_10x14.lbm similarity index 100% rename from radio/src/fonts/sqt5/font_pt_10x14.lbm rename to radio/src/fonts/sqt5_pw/font_pt_10x14.lbm diff --git a/radio/src/fonts/sqt5/font_pt_10x14.png b/radio/src/fonts/sqt5_pw/font_pt_10x14.png similarity index 100% rename from radio/src/fonts/sqt5/font_pt_10x14.png rename to radio/src/fonts/sqt5_pw/font_pt_10x14.png diff --git a/radio/src/fonts/sqt5/font_se_04x06.lbm b/radio/src/fonts/sqt5_pw/font_se_04x06.lbm similarity index 100% rename from radio/src/fonts/sqt5/font_se_04x06.lbm rename to radio/src/fonts/sqt5_pw/font_se_04x06.lbm diff --git a/radio/src/fonts/sqt5/font_se_04x06.png b/radio/src/fonts/sqt5_pw/font_se_04x06.png similarity index 100% rename from radio/src/fonts/sqt5/font_se_04x06.png rename to radio/src/fonts/sqt5_pw/font_se_04x06.png diff --git a/radio/src/fonts/sqt5/font_se_05x07.lbm b/radio/src/fonts/sqt5_pw/font_se_05x07.lbm similarity index 100% rename from radio/src/fonts/sqt5/font_se_05x07.lbm rename to radio/src/fonts/sqt5_pw/font_se_05x07.lbm diff --git a/radio/src/fonts/sqt5/font_se_05x07.png b/radio/src/fonts/sqt5_pw/font_se_05x07.png similarity index 100% rename from radio/src/fonts/sqt5/font_se_05x07.png rename to radio/src/fonts/sqt5_pw/font_se_05x07.png diff --git a/radio/src/fonts/sqt5/font_se_08x10.lbm b/radio/src/fonts/sqt5_pw/font_se_08x10.lbm similarity index 100% rename from radio/src/fonts/sqt5/font_se_08x10.lbm rename to radio/src/fonts/sqt5_pw/font_se_08x10.lbm diff --git a/radio/src/fonts/sqt5/font_se_08x10.png b/radio/src/fonts/sqt5_pw/font_se_08x10.png similarity index 100% rename from radio/src/fonts/sqt5/font_se_08x10.png rename to radio/src/fonts/sqt5_pw/font_se_08x10.png diff --git a/radio/src/fonts/sqt5/font_se_10x14.lbm b/radio/src/fonts/sqt5_pw/font_se_10x14.lbm similarity index 100% rename from radio/src/fonts/sqt5/font_se_10x14.lbm rename to radio/src/fonts/sqt5_pw/font_se_10x14.lbm diff --git a/radio/src/fonts/sqt5/font_se_10x14.png b/radio/src/fonts/sqt5_pw/font_se_10x14.png similarity index 100% rename from radio/src/fonts/sqt5/font_se_10x14.png rename to radio/src/fonts/sqt5_pw/font_se_10x14.png diff --git a/radio/src/fonts/sqt5_fw/font_03x05.lbm b/radio/src/fonts/sqt5_pw_fw/font_03x05.lbm similarity index 100% rename from radio/src/fonts/sqt5_fw/font_03x05.lbm rename to radio/src/fonts/sqt5_pw_fw/font_03x05.lbm diff --git a/radio/src/fonts/sqt5_fw/font_03x05.png b/radio/src/fonts/sqt5_pw_fw/font_03x05.png similarity index 100% rename from radio/src/fonts/sqt5_fw/font_03x05.png rename to radio/src/fonts/sqt5_pw_fw/font_03x05.png diff --git a/radio/src/fonts/sqt5_fw/font_04x06.lbm b/radio/src/fonts/sqt5_pw_fw/font_04x06.lbm similarity index 100% rename from radio/src/fonts/sqt5_fw/font_04x06.lbm rename to radio/src/fonts/sqt5_pw_fw/font_04x06.lbm diff --git a/radio/src/fonts/sqt5_fw/font_04x06.png b/radio/src/fonts/sqt5_pw_fw/font_04x06.png similarity index 100% rename from radio/src/fonts/sqt5_fw/font_04x06.png rename to radio/src/fonts/sqt5_pw_fw/font_04x06.png diff --git a/radio/src/fonts/sqt5_fw/font_04x06_extra.lbm b/radio/src/fonts/sqt5_pw_fw/font_04x06_extra.lbm similarity index 100% rename from radio/src/fonts/sqt5_fw/font_04x06_extra.lbm rename to radio/src/fonts/sqt5_pw_fw/font_04x06_extra.lbm diff --git a/radio/src/fonts/sqt5_fw/font_04x06_extra.png b/radio/src/fonts/sqt5_pw_fw/font_04x06_extra.png similarity index 100% rename from radio/src/fonts/sqt5_fw/font_04x06_extra.png rename to radio/src/fonts/sqt5_pw_fw/font_04x06_extra.png diff --git a/radio/src/fonts/sqt5_fw/font_05x07.lbm b/radio/src/fonts/sqt5_pw_fw/font_05x07.lbm similarity index 100% rename from radio/src/fonts/sqt5_fw/font_05x07.lbm rename to radio/src/fonts/sqt5_pw_fw/font_05x07.lbm diff --git a/radio/src/fonts/sqt5_fw/font_05x07.png b/radio/src/fonts/sqt5_pw_fw/font_05x07.png similarity index 100% rename from radio/src/fonts/sqt5_fw/font_05x07.png rename to radio/src/fonts/sqt5_pw_fw/font_05x07.png diff --git a/radio/src/fonts/sqt5_fw/font_05x07_extra.lbm b/radio/src/fonts/sqt5_pw_fw/font_05x07_extra.lbm similarity index 100% rename from radio/src/fonts/sqt5_fw/font_05x07_extra.lbm rename to radio/src/fonts/sqt5_pw_fw/font_05x07_extra.lbm diff --git a/radio/src/fonts/sqt5_fw/font_05x07_extra.png b/radio/src/fonts/sqt5_pw_fw/font_05x07_extra.png similarity index 100% rename from radio/src/fonts/sqt5_fw/font_05x07_extra.png rename to radio/src/fonts/sqt5_pw_fw/font_05x07_extra.png diff --git a/radio/src/fonts/sqt5_fw/font_08x10.lbm b/radio/src/fonts/sqt5_pw_fw/font_08x10.lbm similarity index 100% rename from radio/src/fonts/sqt5_fw/font_08x10.lbm rename to radio/src/fonts/sqt5_pw_fw/font_08x10.lbm diff --git a/radio/src/fonts/sqt5_fw/font_08x10.png b/radio/src/fonts/sqt5_pw_fw/font_08x10.png similarity index 100% rename from radio/src/fonts/sqt5_fw/font_08x10.png rename to radio/src/fonts/sqt5_pw_fw/font_08x10.png diff --git a/radio/src/fonts/sqt5_fw/font_10x14.lbm b/radio/src/fonts/sqt5_pw_fw/font_10x14.lbm similarity index 100% rename from radio/src/fonts/sqt5_fw/font_10x14.lbm rename to radio/src/fonts/sqt5_pw_fw/font_10x14.lbm diff --git a/radio/src/fonts/sqt5_fw/font_10x14.png b/radio/src/fonts/sqt5_pw_fw/font_10x14.png similarity index 100% rename from radio/src/fonts/sqt5_fw/font_10x14.png rename to radio/src/fonts/sqt5_pw_fw/font_10x14.png diff --git a/radio/src/fonts/sqt5_fw/font_10x14_compressed.lbm b/radio/src/fonts/sqt5_pw_fw/font_10x14_compressed.lbm similarity index 100% rename from radio/src/fonts/sqt5_fw/font_10x14_compressed.lbm rename to radio/src/fonts/sqt5_pw_fw/font_10x14_compressed.lbm diff --git a/radio/src/fonts/sqt5_fw/font_10x14_compressed.png b/radio/src/fonts/sqt5_pw_fw/font_10x14_compressed.png similarity index 100% rename from radio/src/fonts/sqt5_fw/font_10x14_compressed.png rename to radio/src/fonts/sqt5_pw_fw/font_10x14_compressed.png diff --git a/radio/src/fonts/sqt5_fw/font_10x14_extra.lbm b/radio/src/fonts/sqt5_pw_fw/font_10x14_extra.lbm similarity index 100% rename from radio/src/fonts/sqt5_fw/font_10x14_extra.lbm rename to radio/src/fonts/sqt5_pw_fw/font_10x14_extra.lbm diff --git a/radio/src/fonts/sqt5_fw/font_10x14_extra.png b/radio/src/fonts/sqt5_pw_fw/font_10x14_extra.png similarity index 100% rename from radio/src/fonts/sqt5_fw/font_10x14_extra.png rename to radio/src/fonts/sqt5_pw_fw/font_10x14_extra.png diff --git a/radio/src/fonts/sqt5_fw/font_cz_04x06.lbm b/radio/src/fonts/sqt5_pw_fw/font_cz_04x06.lbm similarity index 100% rename from radio/src/fonts/sqt5_fw/font_cz_04x06.lbm rename to radio/src/fonts/sqt5_pw_fw/font_cz_04x06.lbm diff --git a/radio/src/fonts/sqt5_fw/font_cz_04x06.png b/radio/src/fonts/sqt5_pw_fw/font_cz_04x06.png similarity index 100% rename from radio/src/fonts/sqt5_fw/font_cz_04x06.png rename to radio/src/fonts/sqt5_pw_fw/font_cz_04x06.png diff --git a/radio/src/fonts/sqt5_fw/font_cz_05x07.lbm b/radio/src/fonts/sqt5_pw_fw/font_cz_05x07.lbm similarity index 100% rename from radio/src/fonts/sqt5_fw/font_cz_05x07.lbm rename to radio/src/fonts/sqt5_pw_fw/font_cz_05x07.lbm diff --git a/radio/src/fonts/sqt5_fw/font_cz_05x07.png b/radio/src/fonts/sqt5_pw_fw/font_cz_05x07.png similarity index 100% rename from radio/src/fonts/sqt5_fw/font_cz_05x07.png rename to radio/src/fonts/sqt5_pw_fw/font_cz_05x07.png diff --git a/radio/src/fonts/sqt5_fw/font_cz_08x10.lbm b/radio/src/fonts/sqt5_pw_fw/font_cz_08x10.lbm similarity index 100% rename from radio/src/fonts/sqt5_fw/font_cz_08x10.lbm rename to radio/src/fonts/sqt5_pw_fw/font_cz_08x10.lbm diff --git a/radio/src/fonts/sqt5_fw/font_cz_08x10.png b/radio/src/fonts/sqt5_pw_fw/font_cz_08x10.png similarity index 100% rename from radio/src/fonts/sqt5_fw/font_cz_08x10.png rename to radio/src/fonts/sqt5_pw_fw/font_cz_08x10.png diff --git a/radio/src/fonts/sqt5_fw/font_cz_10x14.lbm b/radio/src/fonts/sqt5_pw_fw/font_cz_10x14.lbm similarity index 100% rename from radio/src/fonts/sqt5_fw/font_cz_10x14.lbm rename to radio/src/fonts/sqt5_pw_fw/font_cz_10x14.lbm diff --git a/radio/src/fonts/sqt5_fw/font_cz_10x14.png b/radio/src/fonts/sqt5_pw_fw/font_cz_10x14.png similarity index 100% rename from radio/src/fonts/sqt5_fw/font_cz_10x14.png rename to radio/src/fonts/sqt5_pw_fw/font_cz_10x14.png diff --git a/radio/src/fonts/sqt5_fw/font_de_04x06.lbm b/radio/src/fonts/sqt5_pw_fw/font_de_04x06.lbm similarity index 100% rename from radio/src/fonts/sqt5_fw/font_de_04x06.lbm rename to radio/src/fonts/sqt5_pw_fw/font_de_04x06.lbm diff --git a/radio/src/fonts/sqt5_fw/font_de_04x06.png b/radio/src/fonts/sqt5_pw_fw/font_de_04x06.png similarity index 100% rename from radio/src/fonts/sqt5_fw/font_de_04x06.png rename to radio/src/fonts/sqt5_pw_fw/font_de_04x06.png diff --git a/radio/src/fonts/sqt5_fw/font_de_05x07.lbm b/radio/src/fonts/sqt5_pw_fw/font_de_05x07.lbm similarity index 100% rename from radio/src/fonts/sqt5_fw/font_de_05x07.lbm rename to radio/src/fonts/sqt5_pw_fw/font_de_05x07.lbm diff --git a/radio/src/fonts/sqt5_fw/font_de_05x07.png b/radio/src/fonts/sqt5_pw_fw/font_de_05x07.png similarity index 100% rename from radio/src/fonts/sqt5_fw/font_de_05x07.png rename to radio/src/fonts/sqt5_pw_fw/font_de_05x07.png diff --git a/radio/src/fonts/sqt5_fw/font_de_08x10.lbm b/radio/src/fonts/sqt5_pw_fw/font_de_08x10.lbm similarity index 100% rename from radio/src/fonts/sqt5_fw/font_de_08x10.lbm rename to radio/src/fonts/sqt5_pw_fw/font_de_08x10.lbm diff --git a/radio/src/fonts/sqt5_fw/font_de_08x10.png b/radio/src/fonts/sqt5_pw_fw/font_de_08x10.png similarity index 100% rename from radio/src/fonts/sqt5_fw/font_de_08x10.png rename to radio/src/fonts/sqt5_pw_fw/font_de_08x10.png diff --git a/radio/src/fonts/sqt5_fw/font_de_10x14.lbm b/radio/src/fonts/sqt5_pw_fw/font_de_10x14.lbm similarity index 100% rename from radio/src/fonts/sqt5_fw/font_de_10x14.lbm rename to radio/src/fonts/sqt5_pw_fw/font_de_10x14.lbm diff --git a/radio/src/fonts/sqt5_fw/font_de_10x14.png b/radio/src/fonts/sqt5_pw_fw/font_de_10x14.png similarity index 100% rename from radio/src/fonts/sqt5_fw/font_de_10x14.png rename to radio/src/fonts/sqt5_pw_fw/font_de_10x14.png diff --git a/radio/src/fonts/sqt5_fw/font_es_04x06.lbm b/radio/src/fonts/sqt5_pw_fw/font_es_04x06.lbm similarity index 100% rename from radio/src/fonts/sqt5_fw/font_es_04x06.lbm rename to radio/src/fonts/sqt5_pw_fw/font_es_04x06.lbm diff --git a/radio/src/fonts/sqt5_fw/font_es_04x06.png b/radio/src/fonts/sqt5_pw_fw/font_es_04x06.png similarity index 100% rename from radio/src/fonts/sqt5_fw/font_es_04x06.png rename to radio/src/fonts/sqt5_pw_fw/font_es_04x06.png diff --git a/radio/src/fonts/sqt5_fw/font_es_05x07.lbm b/radio/src/fonts/sqt5_pw_fw/font_es_05x07.lbm similarity index 100% rename from radio/src/fonts/sqt5_fw/font_es_05x07.lbm rename to radio/src/fonts/sqt5_pw_fw/font_es_05x07.lbm diff --git a/radio/src/fonts/sqt5_fw/font_es_05x07.png b/radio/src/fonts/sqt5_pw_fw/font_es_05x07.png similarity index 100% rename from radio/src/fonts/sqt5_fw/font_es_05x07.png rename to radio/src/fonts/sqt5_pw_fw/font_es_05x07.png diff --git a/radio/src/fonts/sqt5_fw/font_es_08x10.lbm b/radio/src/fonts/sqt5_pw_fw/font_es_08x10.lbm similarity index 100% rename from radio/src/fonts/sqt5_fw/font_es_08x10.lbm rename to radio/src/fonts/sqt5_pw_fw/font_es_08x10.lbm diff --git a/radio/src/fonts/sqt5_fw/font_es_08x10.png b/radio/src/fonts/sqt5_pw_fw/font_es_08x10.png similarity index 100% rename from radio/src/fonts/sqt5_fw/font_es_08x10.png rename to radio/src/fonts/sqt5_pw_fw/font_es_08x10.png diff --git a/radio/src/fonts/sqt5_fw/font_es_10x14.lbm b/radio/src/fonts/sqt5_pw_fw/font_es_10x14.lbm similarity index 100% rename from radio/src/fonts/sqt5_fw/font_es_10x14.lbm rename to radio/src/fonts/sqt5_pw_fw/font_es_10x14.lbm diff --git a/radio/src/fonts/sqt5_fw/font_es_10x14.png b/radio/src/fonts/sqt5_pw_fw/font_es_10x14.png similarity index 100% rename from radio/src/fonts/sqt5_fw/font_es_10x14.png rename to radio/src/fonts/sqt5_pw_fw/font_es_10x14.png diff --git a/radio/src/fonts/sqt5_fw/font_fr_04x06.lbm b/radio/src/fonts/sqt5_pw_fw/font_fr_04x06.lbm similarity index 100% rename from radio/src/fonts/sqt5_fw/font_fr_04x06.lbm rename to radio/src/fonts/sqt5_pw_fw/font_fr_04x06.lbm diff --git a/radio/src/fonts/sqt5_fw/font_fr_04x06.png b/radio/src/fonts/sqt5_pw_fw/font_fr_04x06.png similarity index 100% rename from radio/src/fonts/sqt5_fw/font_fr_04x06.png rename to radio/src/fonts/sqt5_pw_fw/font_fr_04x06.png diff --git a/radio/src/fonts/sqt5_fw/font_fr_05x07.lbm b/radio/src/fonts/sqt5_pw_fw/font_fr_05x07.lbm similarity index 100% rename from radio/src/fonts/sqt5_fw/font_fr_05x07.lbm rename to radio/src/fonts/sqt5_pw_fw/font_fr_05x07.lbm diff --git a/radio/src/fonts/sqt5_fw/font_fr_05x07.png b/radio/src/fonts/sqt5_pw_fw/font_fr_05x07.png similarity index 100% rename from radio/src/fonts/sqt5_fw/font_fr_05x07.png rename to radio/src/fonts/sqt5_pw_fw/font_fr_05x07.png diff --git a/radio/src/fonts/sqt5_fw/font_fr_08x10.lbm b/radio/src/fonts/sqt5_pw_fw/font_fr_08x10.lbm similarity index 100% rename from radio/src/fonts/sqt5_fw/font_fr_08x10.lbm rename to radio/src/fonts/sqt5_pw_fw/font_fr_08x10.lbm diff --git a/radio/src/fonts/sqt5_fw/font_fr_08x10.png b/radio/src/fonts/sqt5_pw_fw/font_fr_08x10.png similarity index 100% rename from radio/src/fonts/sqt5_fw/font_fr_08x10.png rename to radio/src/fonts/sqt5_pw_fw/font_fr_08x10.png diff --git a/radio/src/fonts/sqt5_fw/font_fr_10x14.lbm b/radio/src/fonts/sqt5_pw_fw/font_fr_10x14.lbm similarity index 100% rename from radio/src/fonts/sqt5_fw/font_fr_10x14.lbm rename to radio/src/fonts/sqt5_pw_fw/font_fr_10x14.lbm diff --git a/radio/src/fonts/sqt5_fw/font_fr_10x14.png b/radio/src/fonts/sqt5_pw_fw/font_fr_10x14.png similarity index 100% rename from radio/src/fonts/sqt5_fw/font_fr_10x14.png rename to radio/src/fonts/sqt5_pw_fw/font_fr_10x14.png diff --git a/radio/src/fonts/sqt5_fw/font_it_04x06.lbm b/radio/src/fonts/sqt5_pw_fw/font_it_04x06.lbm similarity index 100% rename from radio/src/fonts/sqt5_fw/font_it_04x06.lbm rename to radio/src/fonts/sqt5_pw_fw/font_it_04x06.lbm diff --git a/radio/src/fonts/sqt5_fw/font_it_04x06.png b/radio/src/fonts/sqt5_pw_fw/font_it_04x06.png similarity index 100% rename from radio/src/fonts/sqt5_fw/font_it_04x06.png rename to radio/src/fonts/sqt5_pw_fw/font_it_04x06.png diff --git a/radio/src/fonts/sqt5_fw/font_it_05x07.lbm b/radio/src/fonts/sqt5_pw_fw/font_it_05x07.lbm similarity index 100% rename from radio/src/fonts/sqt5_fw/font_it_05x07.lbm rename to radio/src/fonts/sqt5_pw_fw/font_it_05x07.lbm diff --git a/radio/src/fonts/sqt5_fw/font_it_05x07.png b/radio/src/fonts/sqt5_pw_fw/font_it_05x07.png similarity index 100% rename from radio/src/fonts/sqt5_fw/font_it_05x07.png rename to radio/src/fonts/sqt5_pw_fw/font_it_05x07.png diff --git a/radio/src/fonts/sqt5_fw/font_it_08x10.lbm b/radio/src/fonts/sqt5_pw_fw/font_it_08x10.lbm similarity index 100% rename from radio/src/fonts/sqt5_fw/font_it_08x10.lbm rename to radio/src/fonts/sqt5_pw_fw/font_it_08x10.lbm diff --git a/radio/src/fonts/sqt5_fw/font_it_08x10.png b/radio/src/fonts/sqt5_pw_fw/font_it_08x10.png similarity index 100% rename from radio/src/fonts/sqt5_fw/font_it_08x10.png rename to radio/src/fonts/sqt5_pw_fw/font_it_08x10.png diff --git a/radio/src/fonts/sqt5_fw/font_it_10x14.lbm b/radio/src/fonts/sqt5_pw_fw/font_it_10x14.lbm similarity index 100% rename from radio/src/fonts/sqt5_fw/font_it_10x14.lbm rename to radio/src/fonts/sqt5_pw_fw/font_it_10x14.lbm diff --git a/radio/src/fonts/sqt5_fw/font_it_10x14.png b/radio/src/fonts/sqt5_pw_fw/font_it_10x14.png similarity index 100% rename from radio/src/fonts/sqt5_fw/font_it_10x14.png rename to radio/src/fonts/sqt5_pw_fw/font_it_10x14.png diff --git a/radio/src/fonts/sqt5_fw/font_pl_04x06.lbm b/radio/src/fonts/sqt5_pw_fw/font_pl_04x06.lbm similarity index 100% rename from radio/src/fonts/sqt5_fw/font_pl_04x06.lbm rename to radio/src/fonts/sqt5_pw_fw/font_pl_04x06.lbm diff --git a/radio/src/fonts/sqt5_fw/font_pl_04x06.png b/radio/src/fonts/sqt5_pw_fw/font_pl_04x06.png similarity index 100% rename from radio/src/fonts/sqt5_fw/font_pl_04x06.png rename to radio/src/fonts/sqt5_pw_fw/font_pl_04x06.png diff --git a/radio/src/fonts/sqt5_fw/font_pl_05x07.lbm b/radio/src/fonts/sqt5_pw_fw/font_pl_05x07.lbm similarity index 100% rename from radio/src/fonts/sqt5_fw/font_pl_05x07.lbm rename to radio/src/fonts/sqt5_pw_fw/font_pl_05x07.lbm diff --git a/radio/src/fonts/sqt5_fw/font_pl_05x07.png b/radio/src/fonts/sqt5_pw_fw/font_pl_05x07.png similarity index 100% rename from radio/src/fonts/sqt5_fw/font_pl_05x07.png rename to radio/src/fonts/sqt5_pw_fw/font_pl_05x07.png diff --git a/radio/src/fonts/sqt5_fw/font_pl_08x10.lbm b/radio/src/fonts/sqt5_pw_fw/font_pl_08x10.lbm similarity index 100% rename from radio/src/fonts/sqt5_fw/font_pl_08x10.lbm rename to radio/src/fonts/sqt5_pw_fw/font_pl_08x10.lbm diff --git a/radio/src/fonts/sqt5_fw/font_pl_08x10.png b/radio/src/fonts/sqt5_pw_fw/font_pl_08x10.png similarity index 100% rename from radio/src/fonts/sqt5_fw/font_pl_08x10.png rename to radio/src/fonts/sqt5_pw_fw/font_pl_08x10.png diff --git a/radio/src/fonts/sqt5_fw/font_pl_10x14.lbm b/radio/src/fonts/sqt5_pw_fw/font_pl_10x14.lbm similarity index 100% rename from radio/src/fonts/sqt5_fw/font_pl_10x14.lbm rename to radio/src/fonts/sqt5_pw_fw/font_pl_10x14.lbm diff --git a/radio/src/fonts/sqt5_fw/font_pl_10x14.png b/radio/src/fonts/sqt5_pw_fw/font_pl_10x14.png similarity index 100% rename from radio/src/fonts/sqt5_fw/font_pl_10x14.png rename to radio/src/fonts/sqt5_pw_fw/font_pl_10x14.png diff --git a/radio/src/fonts/sqt5_fw/font_pt_04x06.lbm b/radio/src/fonts/sqt5_pw_fw/font_pt_04x06.lbm similarity index 100% rename from radio/src/fonts/sqt5_fw/font_pt_04x06.lbm rename to radio/src/fonts/sqt5_pw_fw/font_pt_04x06.lbm diff --git a/radio/src/fonts/sqt5_fw/font_pt_04x06.png b/radio/src/fonts/sqt5_pw_fw/font_pt_04x06.png similarity index 100% rename from radio/src/fonts/sqt5_fw/font_pt_04x06.png rename to radio/src/fonts/sqt5_pw_fw/font_pt_04x06.png diff --git a/radio/src/fonts/sqt5_fw/font_pt_05x07.lbm b/radio/src/fonts/sqt5_pw_fw/font_pt_05x07.lbm similarity index 100% rename from radio/src/fonts/sqt5_fw/font_pt_05x07.lbm rename to radio/src/fonts/sqt5_pw_fw/font_pt_05x07.lbm diff --git a/radio/src/fonts/sqt5_fw/font_pt_05x07.png b/radio/src/fonts/sqt5_pw_fw/font_pt_05x07.png similarity index 100% rename from radio/src/fonts/sqt5_fw/font_pt_05x07.png rename to radio/src/fonts/sqt5_pw_fw/font_pt_05x07.png diff --git a/radio/src/fonts/sqt5_fw/font_pt_08x10.lbm b/radio/src/fonts/sqt5_pw_fw/font_pt_08x10.lbm similarity index 100% rename from radio/src/fonts/sqt5_fw/font_pt_08x10.lbm rename to radio/src/fonts/sqt5_pw_fw/font_pt_08x10.lbm diff --git a/radio/src/fonts/sqt5_fw/font_pt_08x10.png b/radio/src/fonts/sqt5_pw_fw/font_pt_08x10.png similarity index 100% rename from radio/src/fonts/sqt5_fw/font_pt_08x10.png rename to radio/src/fonts/sqt5_pw_fw/font_pt_08x10.png diff --git a/radio/src/fonts/sqt5_fw/font_pt_10x14.lbm b/radio/src/fonts/sqt5_pw_fw/font_pt_10x14.lbm similarity index 100% rename from radio/src/fonts/sqt5_fw/font_pt_10x14.lbm rename to radio/src/fonts/sqt5_pw_fw/font_pt_10x14.lbm diff --git a/radio/src/fonts/sqt5_fw/font_pt_10x14.png b/radio/src/fonts/sqt5_pw_fw/font_pt_10x14.png similarity index 100% rename from radio/src/fonts/sqt5_fw/font_pt_10x14.png rename to radio/src/fonts/sqt5_pw_fw/font_pt_10x14.png diff --git a/radio/src/fonts/sqt5_fw/font_se_04x06.lbm b/radio/src/fonts/sqt5_pw_fw/font_se_04x06.lbm similarity index 100% rename from radio/src/fonts/sqt5_fw/font_se_04x06.lbm rename to radio/src/fonts/sqt5_pw_fw/font_se_04x06.lbm diff --git a/radio/src/fonts/sqt5_fw/font_se_04x06.png b/radio/src/fonts/sqt5_pw_fw/font_se_04x06.png similarity index 100% rename from radio/src/fonts/sqt5_fw/font_se_04x06.png rename to radio/src/fonts/sqt5_pw_fw/font_se_04x06.png diff --git a/radio/src/fonts/sqt5_fw/font_se_05x07.lbm b/radio/src/fonts/sqt5_pw_fw/font_se_05x07.lbm similarity index 100% rename from radio/src/fonts/sqt5_fw/font_se_05x07.lbm rename to radio/src/fonts/sqt5_pw_fw/font_se_05x07.lbm diff --git a/radio/src/fonts/sqt5_fw/font_se_05x07.png b/radio/src/fonts/sqt5_pw_fw/font_se_05x07.png similarity index 100% rename from radio/src/fonts/sqt5_fw/font_se_05x07.png rename to radio/src/fonts/sqt5_pw_fw/font_se_05x07.png diff --git a/radio/src/fonts/sqt5_fw/font_se_08x10.lbm b/radio/src/fonts/sqt5_pw_fw/font_se_08x10.lbm similarity index 100% rename from radio/src/fonts/sqt5_fw/font_se_08x10.lbm rename to radio/src/fonts/sqt5_pw_fw/font_se_08x10.lbm diff --git a/radio/src/fonts/sqt5_fw/font_se_08x10.png b/radio/src/fonts/sqt5_pw_fw/font_se_08x10.png similarity index 100% rename from radio/src/fonts/sqt5_fw/font_se_08x10.png rename to radio/src/fonts/sqt5_pw_fw/font_se_08x10.png diff --git a/radio/src/fonts/sqt5_fw/font_se_10x14.lbm b/radio/src/fonts/sqt5_pw_fw/font_se_10x14.lbm similarity index 100% rename from radio/src/fonts/sqt5_fw/font_se_10x14.lbm rename to radio/src/fonts/sqt5_pw_fw/font_se_10x14.lbm diff --git a/radio/src/fonts/sqt5_fw/font_se_10x14.png b/radio/src/fonts/sqt5_pw_fw/font_se_10x14.png similarity index 100% rename from radio/src/fonts/sqt5_fw/font_se_10x14.png rename to radio/src/fonts/sqt5_pw_fw/font_se_10x14.png diff --git a/radio/src/fonts/std/font_03x05.lbm b/radio/src/fonts/std_pw/font_03x05.lbm similarity index 100% rename from radio/src/fonts/std/font_03x05.lbm rename to radio/src/fonts/std_pw/font_03x05.lbm diff --git a/radio/src/fonts/std/font_03x05.png b/radio/src/fonts/std_pw/font_03x05.png similarity index 100% rename from radio/src/fonts/std/font_03x05.png rename to radio/src/fonts/std_pw/font_03x05.png diff --git a/radio/src/fonts/std/font_04x06.lbm b/radio/src/fonts/std_pw/font_04x06.lbm similarity index 100% rename from radio/src/fonts/std/font_04x06.lbm rename to radio/src/fonts/std_pw/font_04x06.lbm diff --git a/radio/src/fonts/std/font_04x06.png b/radio/src/fonts/std_pw/font_04x06.png similarity index 100% rename from radio/src/fonts/std/font_04x06.png rename to radio/src/fonts/std_pw/font_04x06.png diff --git a/radio/src/fonts/std/font_04x06_extra.lbm b/radio/src/fonts/std_pw/font_04x06_extra.lbm similarity index 100% rename from radio/src/fonts/std/font_04x06_extra.lbm rename to radio/src/fonts/std_pw/font_04x06_extra.lbm diff --git a/radio/src/fonts/std/font_04x06_extra.png b/radio/src/fonts/std_pw/font_04x06_extra.png similarity index 100% rename from radio/src/fonts/std/font_04x06_extra.png rename to radio/src/fonts/std_pw/font_04x06_extra.png diff --git a/radio/src/fonts/std/font_05x07.lbm b/radio/src/fonts/std_pw/font_05x07.lbm similarity index 100% rename from radio/src/fonts/std/font_05x07.lbm rename to radio/src/fonts/std_pw/font_05x07.lbm diff --git a/radio/src/fonts/std/font_05x07.png b/radio/src/fonts/std_pw/font_05x07.png similarity index 100% rename from radio/src/fonts/std/font_05x07.png rename to radio/src/fonts/std_pw/font_05x07.png diff --git a/radio/src/fonts/std/font_05x07_extra.lbm b/radio/src/fonts/std_pw/font_05x07_extra.lbm similarity index 100% rename from radio/src/fonts/std/font_05x07_extra.lbm rename to radio/src/fonts/std_pw/font_05x07_extra.lbm diff --git a/radio/src/fonts/std/font_05x07_extra.png b/radio/src/fonts/std_pw/font_05x07_extra.png similarity index 100% rename from radio/src/fonts/std/font_05x07_extra.png rename to radio/src/fonts/std_pw/font_05x07_extra.png diff --git a/radio/src/fonts/std/font_08x10.lbm b/radio/src/fonts/std_pw/font_08x10.lbm similarity index 100% rename from radio/src/fonts/std/font_08x10.lbm rename to radio/src/fonts/std_pw/font_08x10.lbm diff --git a/radio/src/fonts/std/font_08x10.png b/radio/src/fonts/std_pw/font_08x10.png similarity index 100% rename from radio/src/fonts/std/font_08x10.png rename to radio/src/fonts/std_pw/font_08x10.png diff --git a/radio/src/fonts/std/font_10x14.lbm b/radio/src/fonts/std_pw/font_10x14.lbm similarity index 100% rename from radio/src/fonts/std/font_10x14.lbm rename to radio/src/fonts/std_pw/font_10x14.lbm diff --git a/radio/src/fonts/std/font_10x14.png b/radio/src/fonts/std_pw/font_10x14.png similarity index 100% rename from radio/src/fonts/std/font_10x14.png rename to radio/src/fonts/std_pw/font_10x14.png diff --git a/radio/src/fonts/std/font_10x14_compressed.lbm b/radio/src/fonts/std_pw/font_10x14_compressed.lbm similarity index 100% rename from radio/src/fonts/std/font_10x14_compressed.lbm rename to radio/src/fonts/std_pw/font_10x14_compressed.lbm diff --git a/radio/src/fonts/std/font_10x14_compressed.png b/radio/src/fonts/std_pw/font_10x14_compressed.png similarity index 100% rename from radio/src/fonts/std/font_10x14_compressed.png rename to radio/src/fonts/std_pw/font_10x14_compressed.png diff --git a/radio/src/fonts/std/font_10x14_extra.lbm b/radio/src/fonts/std_pw/font_10x14_extra.lbm similarity index 100% rename from radio/src/fonts/std/font_10x14_extra.lbm rename to radio/src/fonts/std_pw/font_10x14_extra.lbm diff --git a/radio/src/fonts/std/font_10x14_extra.png b/radio/src/fonts/std_pw/font_10x14_extra.png similarity index 100% rename from radio/src/fonts/std/font_10x14_extra.png rename to radio/src/fonts/std_pw/font_10x14_extra.png diff --git a/radio/src/fonts/std/font_cz_04x06.lbm b/radio/src/fonts/std_pw/font_cz_04x06.lbm similarity index 100% rename from radio/src/fonts/std/font_cz_04x06.lbm rename to radio/src/fonts/std_pw/font_cz_04x06.lbm diff --git a/radio/src/fonts/std/font_cz_04x06.png b/radio/src/fonts/std_pw/font_cz_04x06.png similarity index 100% rename from radio/src/fonts/std/font_cz_04x06.png rename to radio/src/fonts/std_pw/font_cz_04x06.png diff --git a/radio/src/fonts/std/font_cz_05x07.lbm b/radio/src/fonts/std_pw/font_cz_05x07.lbm similarity index 100% rename from radio/src/fonts/std/font_cz_05x07.lbm rename to radio/src/fonts/std_pw/font_cz_05x07.lbm diff --git a/radio/src/fonts/std/font_cz_05x07.png b/radio/src/fonts/std_pw/font_cz_05x07.png similarity index 100% rename from radio/src/fonts/std/font_cz_05x07.png rename to radio/src/fonts/std_pw/font_cz_05x07.png diff --git a/radio/src/fonts/std/font_cz_08x10.lbm b/radio/src/fonts/std_pw/font_cz_08x10.lbm similarity index 100% rename from radio/src/fonts/std/font_cz_08x10.lbm rename to radio/src/fonts/std_pw/font_cz_08x10.lbm diff --git a/radio/src/fonts/std/font_cz_08x10.png b/radio/src/fonts/std_pw/font_cz_08x10.png similarity index 100% rename from radio/src/fonts/std/font_cz_08x10.png rename to radio/src/fonts/std_pw/font_cz_08x10.png diff --git a/radio/src/fonts/std/font_cz_10x14.lbm b/radio/src/fonts/std_pw/font_cz_10x14.lbm similarity index 100% rename from radio/src/fonts/std/font_cz_10x14.lbm rename to radio/src/fonts/std_pw/font_cz_10x14.lbm diff --git a/radio/src/fonts/std/font_cz_10x14.png b/radio/src/fonts/std_pw/font_cz_10x14.png similarity index 100% rename from radio/src/fonts/std/font_cz_10x14.png rename to radio/src/fonts/std_pw/font_cz_10x14.png diff --git a/radio/src/fonts/std/font_de_04x06.lbm b/radio/src/fonts/std_pw/font_de_04x06.lbm similarity index 100% rename from radio/src/fonts/std/font_de_04x06.lbm rename to radio/src/fonts/std_pw/font_de_04x06.lbm diff --git a/radio/src/fonts/std/font_de_04x06.png b/radio/src/fonts/std_pw/font_de_04x06.png similarity index 100% rename from radio/src/fonts/std/font_de_04x06.png rename to radio/src/fonts/std_pw/font_de_04x06.png diff --git a/radio/src/fonts/std/font_de_05x07.lbm b/radio/src/fonts/std_pw/font_de_05x07.lbm similarity index 100% rename from radio/src/fonts/std/font_de_05x07.lbm rename to radio/src/fonts/std_pw/font_de_05x07.lbm diff --git a/radio/src/fonts/std/font_de_05x07.png b/radio/src/fonts/std_pw/font_de_05x07.png similarity index 100% rename from radio/src/fonts/std/font_de_05x07.png rename to radio/src/fonts/std_pw/font_de_05x07.png diff --git a/radio/src/fonts/std/font_de_08x10.lbm b/radio/src/fonts/std_pw/font_de_08x10.lbm similarity index 100% rename from radio/src/fonts/std/font_de_08x10.lbm rename to radio/src/fonts/std_pw/font_de_08x10.lbm diff --git a/radio/src/fonts/std/font_de_08x10.png b/radio/src/fonts/std_pw/font_de_08x10.png similarity index 100% rename from radio/src/fonts/std/font_de_08x10.png rename to radio/src/fonts/std_pw/font_de_08x10.png diff --git a/radio/src/fonts/std/font_de_10x14.lbm b/radio/src/fonts/std_pw/font_de_10x14.lbm similarity index 100% rename from radio/src/fonts/std/font_de_10x14.lbm rename to radio/src/fonts/std_pw/font_de_10x14.lbm diff --git a/radio/src/fonts/std/font_de_10x14.png b/radio/src/fonts/std_pw/font_de_10x14.png similarity index 100% rename from radio/src/fonts/std/font_de_10x14.png rename to radio/src/fonts/std_pw/font_de_10x14.png diff --git a/radio/src/fonts/std/font_es_04x06.lbm b/radio/src/fonts/std_pw/font_es_04x06.lbm similarity index 100% rename from radio/src/fonts/std/font_es_04x06.lbm rename to radio/src/fonts/std_pw/font_es_04x06.lbm diff --git a/radio/src/fonts/std/font_es_04x06.png b/radio/src/fonts/std_pw/font_es_04x06.png similarity index 100% rename from radio/src/fonts/std/font_es_04x06.png rename to radio/src/fonts/std_pw/font_es_04x06.png diff --git a/radio/src/fonts/std/font_es_05x07.lbm b/radio/src/fonts/std_pw/font_es_05x07.lbm similarity index 100% rename from radio/src/fonts/std/font_es_05x07.lbm rename to radio/src/fonts/std_pw/font_es_05x07.lbm diff --git a/radio/src/fonts/std/font_es_05x07.png b/radio/src/fonts/std_pw/font_es_05x07.png similarity index 100% rename from radio/src/fonts/std/font_es_05x07.png rename to radio/src/fonts/std_pw/font_es_05x07.png diff --git a/radio/src/fonts/std/font_es_08x10.lbm b/radio/src/fonts/std_pw/font_es_08x10.lbm similarity index 100% rename from radio/src/fonts/std/font_es_08x10.lbm rename to radio/src/fonts/std_pw/font_es_08x10.lbm diff --git a/radio/src/fonts/std/font_es_08x10.png b/radio/src/fonts/std_pw/font_es_08x10.png similarity index 100% rename from radio/src/fonts/std/font_es_08x10.png rename to radio/src/fonts/std_pw/font_es_08x10.png diff --git a/radio/src/fonts/std/font_es_10x14.lbm b/radio/src/fonts/std_pw/font_es_10x14.lbm similarity index 100% rename from radio/src/fonts/std/font_es_10x14.lbm rename to radio/src/fonts/std_pw/font_es_10x14.lbm diff --git a/radio/src/fonts/std/font_es_10x14.png b/radio/src/fonts/std_pw/font_es_10x14.png similarity index 100% rename from radio/src/fonts/std/font_es_10x14.png rename to radio/src/fonts/std_pw/font_es_10x14.png diff --git a/radio/src/fonts/std/font_fr_04x06.lbm b/radio/src/fonts/std_pw/font_fr_04x06.lbm similarity index 100% rename from radio/src/fonts/std/font_fr_04x06.lbm rename to radio/src/fonts/std_pw/font_fr_04x06.lbm diff --git a/radio/src/fonts/std/font_fr_04x06.png b/radio/src/fonts/std_pw/font_fr_04x06.png similarity index 100% rename from radio/src/fonts/std/font_fr_04x06.png rename to radio/src/fonts/std_pw/font_fr_04x06.png diff --git a/radio/src/fonts/std/font_fr_05x07.lbm b/radio/src/fonts/std_pw/font_fr_05x07.lbm similarity index 100% rename from radio/src/fonts/std/font_fr_05x07.lbm rename to radio/src/fonts/std_pw/font_fr_05x07.lbm diff --git a/radio/src/fonts/std/font_fr_05x07.png b/radio/src/fonts/std_pw/font_fr_05x07.png similarity index 100% rename from radio/src/fonts/std/font_fr_05x07.png rename to radio/src/fonts/std_pw/font_fr_05x07.png diff --git a/radio/src/fonts/std/font_fr_08x10.lbm b/radio/src/fonts/std_pw/font_fr_08x10.lbm similarity index 100% rename from radio/src/fonts/std/font_fr_08x10.lbm rename to radio/src/fonts/std_pw/font_fr_08x10.lbm diff --git a/radio/src/fonts/std/font_fr_08x10.png b/radio/src/fonts/std_pw/font_fr_08x10.png similarity index 100% rename from radio/src/fonts/std/font_fr_08x10.png rename to radio/src/fonts/std_pw/font_fr_08x10.png diff --git a/radio/src/fonts/std/font_fr_10x14.lbm b/radio/src/fonts/std_pw/font_fr_10x14.lbm similarity index 100% rename from radio/src/fonts/std/font_fr_10x14.lbm rename to radio/src/fonts/std_pw/font_fr_10x14.lbm diff --git a/radio/src/fonts/std/font_fr_10x14.png b/radio/src/fonts/std_pw/font_fr_10x14.png similarity index 100% rename from radio/src/fonts/std/font_fr_10x14.png rename to radio/src/fonts/std_pw/font_fr_10x14.png diff --git a/radio/src/fonts/std/font_it_04x06.lbm b/radio/src/fonts/std_pw/font_it_04x06.lbm similarity index 100% rename from radio/src/fonts/std/font_it_04x06.lbm rename to radio/src/fonts/std_pw/font_it_04x06.lbm diff --git a/radio/src/fonts/std/font_it_04x06.png b/radio/src/fonts/std_pw/font_it_04x06.png similarity index 100% rename from radio/src/fonts/std/font_it_04x06.png rename to radio/src/fonts/std_pw/font_it_04x06.png diff --git a/radio/src/fonts/std/font_it_05x07.lbm b/radio/src/fonts/std_pw/font_it_05x07.lbm similarity index 100% rename from radio/src/fonts/std/font_it_05x07.lbm rename to radio/src/fonts/std_pw/font_it_05x07.lbm diff --git a/radio/src/fonts/std/font_it_05x07.png b/radio/src/fonts/std_pw/font_it_05x07.png similarity index 100% rename from radio/src/fonts/std/font_it_05x07.png rename to radio/src/fonts/std_pw/font_it_05x07.png diff --git a/radio/src/fonts/std/font_it_08x10.lbm b/radio/src/fonts/std_pw/font_it_08x10.lbm similarity index 100% rename from radio/src/fonts/std/font_it_08x10.lbm rename to radio/src/fonts/std_pw/font_it_08x10.lbm diff --git a/radio/src/fonts/std/font_it_08x10.png b/radio/src/fonts/std_pw/font_it_08x10.png similarity index 100% rename from radio/src/fonts/std/font_it_08x10.png rename to radio/src/fonts/std_pw/font_it_08x10.png diff --git a/radio/src/fonts/std/font_it_10x14.lbm b/radio/src/fonts/std_pw/font_it_10x14.lbm similarity index 100% rename from radio/src/fonts/std/font_it_10x14.lbm rename to radio/src/fonts/std_pw/font_it_10x14.lbm diff --git a/radio/src/fonts/std/font_it_10x14.png b/radio/src/fonts/std_pw/font_it_10x14.png similarity index 100% rename from radio/src/fonts/std/font_it_10x14.png rename to radio/src/fonts/std_pw/font_it_10x14.png diff --git a/radio/src/fonts/std/font_pl_04x06.lbm b/radio/src/fonts/std_pw/font_pl_04x06.lbm similarity index 100% rename from radio/src/fonts/std/font_pl_04x06.lbm rename to radio/src/fonts/std_pw/font_pl_04x06.lbm diff --git a/radio/src/fonts/std/font_pl_04x06.png b/radio/src/fonts/std_pw/font_pl_04x06.png similarity index 100% rename from radio/src/fonts/std/font_pl_04x06.png rename to radio/src/fonts/std_pw/font_pl_04x06.png diff --git a/radio/src/fonts/std/font_pl_05x07.lbm b/radio/src/fonts/std_pw/font_pl_05x07.lbm similarity index 100% rename from radio/src/fonts/std/font_pl_05x07.lbm rename to radio/src/fonts/std_pw/font_pl_05x07.lbm diff --git a/radio/src/fonts/std/font_pl_05x07.png b/radio/src/fonts/std_pw/font_pl_05x07.png similarity index 100% rename from radio/src/fonts/std/font_pl_05x07.png rename to radio/src/fonts/std_pw/font_pl_05x07.png diff --git a/radio/src/fonts/std/font_pl_08x10.lbm b/radio/src/fonts/std_pw/font_pl_08x10.lbm similarity index 100% rename from radio/src/fonts/std/font_pl_08x10.lbm rename to radio/src/fonts/std_pw/font_pl_08x10.lbm diff --git a/radio/src/fonts/std/font_pl_08x10.png b/radio/src/fonts/std_pw/font_pl_08x10.png similarity index 100% rename from radio/src/fonts/std/font_pl_08x10.png rename to radio/src/fonts/std_pw/font_pl_08x10.png diff --git a/radio/src/fonts/std/font_pl_10x14.lbm b/radio/src/fonts/std_pw/font_pl_10x14.lbm similarity index 100% rename from radio/src/fonts/std/font_pl_10x14.lbm rename to radio/src/fonts/std_pw/font_pl_10x14.lbm diff --git a/radio/src/fonts/std/font_pl_10x14.png b/radio/src/fonts/std_pw/font_pl_10x14.png similarity index 100% rename from radio/src/fonts/std/font_pl_10x14.png rename to radio/src/fonts/std_pw/font_pl_10x14.png diff --git a/radio/src/fonts/std/font_pt_04x06.lbm b/radio/src/fonts/std_pw/font_pt_04x06.lbm similarity index 100% rename from radio/src/fonts/std/font_pt_04x06.lbm rename to radio/src/fonts/std_pw/font_pt_04x06.lbm diff --git a/radio/src/fonts/std/font_pt_04x06.png b/radio/src/fonts/std_pw/font_pt_04x06.png similarity index 100% rename from radio/src/fonts/std/font_pt_04x06.png rename to radio/src/fonts/std_pw/font_pt_04x06.png diff --git a/radio/src/fonts/std/font_pt_05x07.lbm b/radio/src/fonts/std_pw/font_pt_05x07.lbm similarity index 100% rename from radio/src/fonts/std/font_pt_05x07.lbm rename to radio/src/fonts/std_pw/font_pt_05x07.lbm diff --git a/radio/src/fonts/std/font_pt_05x07.png b/radio/src/fonts/std_pw/font_pt_05x07.png similarity index 100% rename from radio/src/fonts/std/font_pt_05x07.png rename to radio/src/fonts/std_pw/font_pt_05x07.png diff --git a/radio/src/fonts/std/font_pt_08x10.lbm b/radio/src/fonts/std_pw/font_pt_08x10.lbm similarity index 100% rename from radio/src/fonts/std/font_pt_08x10.lbm rename to radio/src/fonts/std_pw/font_pt_08x10.lbm diff --git a/radio/src/fonts/std/font_pt_08x10.png b/radio/src/fonts/std_pw/font_pt_08x10.png similarity index 100% rename from radio/src/fonts/std/font_pt_08x10.png rename to radio/src/fonts/std_pw/font_pt_08x10.png diff --git a/radio/src/fonts/std/font_pt_10x14.lbm b/radio/src/fonts/std_pw/font_pt_10x14.lbm similarity index 100% rename from radio/src/fonts/std/font_pt_10x14.lbm rename to radio/src/fonts/std_pw/font_pt_10x14.lbm diff --git a/radio/src/fonts/std/font_pt_10x14.png b/radio/src/fonts/std_pw/font_pt_10x14.png similarity index 100% rename from radio/src/fonts/std/font_pt_10x14.png rename to radio/src/fonts/std_pw/font_pt_10x14.png diff --git a/radio/src/fonts/std/font_se_04x06.lbm b/radio/src/fonts/std_pw/font_se_04x06.lbm similarity index 100% rename from radio/src/fonts/std/font_se_04x06.lbm rename to radio/src/fonts/std_pw/font_se_04x06.lbm diff --git a/radio/src/fonts/std/font_se_04x06.png b/radio/src/fonts/std_pw/font_se_04x06.png similarity index 100% rename from radio/src/fonts/std/font_se_04x06.png rename to radio/src/fonts/std_pw/font_se_04x06.png diff --git a/radio/src/fonts/std/font_se_05x07.lbm b/radio/src/fonts/std_pw/font_se_05x07.lbm similarity index 100% rename from radio/src/fonts/std/font_se_05x07.lbm rename to radio/src/fonts/std_pw/font_se_05x07.lbm diff --git a/radio/src/fonts/std/font_se_05x07.png b/radio/src/fonts/std_pw/font_se_05x07.png similarity index 100% rename from radio/src/fonts/std/font_se_05x07.png rename to radio/src/fonts/std_pw/font_se_05x07.png diff --git a/radio/src/fonts/std/font_se_08x10.lbm b/radio/src/fonts/std_pw/font_se_08x10.lbm similarity index 100% rename from radio/src/fonts/std/font_se_08x10.lbm rename to radio/src/fonts/std_pw/font_se_08x10.lbm diff --git a/radio/src/fonts/std/font_se_08x10.png b/radio/src/fonts/std_pw/font_se_08x10.png similarity index 100% rename from radio/src/fonts/std/font_se_08x10.png rename to radio/src/fonts/std_pw/font_se_08x10.png diff --git a/radio/src/fonts/std/font_se_10x14.lbm b/radio/src/fonts/std_pw/font_se_10x14.lbm similarity index 100% rename from radio/src/fonts/std/font_se_10x14.lbm rename to radio/src/fonts/std_pw/font_se_10x14.lbm diff --git a/radio/src/fonts/std/font_se_10x14.png b/radio/src/fonts/std_pw/font_se_10x14.png similarity index 100% rename from radio/src/fonts/std/font_se_10x14.png rename to radio/src/fonts/std_pw/font_se_10x14.png diff --git a/radio/src/fonts/std_fw/font_03x05.lbm b/radio/src/fonts/std_pw_fw/font_03x05.lbm similarity index 100% rename from radio/src/fonts/std_fw/font_03x05.lbm rename to radio/src/fonts/std_pw_fw/font_03x05.lbm diff --git a/radio/src/fonts/std_fw/font_03x05.png b/radio/src/fonts/std_pw_fw/font_03x05.png similarity index 100% rename from radio/src/fonts/std_fw/font_03x05.png rename to radio/src/fonts/std_pw_fw/font_03x05.png diff --git a/radio/src/fonts/std_fw/font_04x06.lbm b/radio/src/fonts/std_pw_fw/font_04x06.lbm similarity index 100% rename from radio/src/fonts/std_fw/font_04x06.lbm rename to radio/src/fonts/std_pw_fw/font_04x06.lbm diff --git a/radio/src/fonts/std_fw/font_04x06.png b/radio/src/fonts/std_pw_fw/font_04x06.png similarity index 100% rename from radio/src/fonts/std_fw/font_04x06.png rename to radio/src/fonts/std_pw_fw/font_04x06.png diff --git a/radio/src/fonts/std_fw/font_04x06_extra.lbm b/radio/src/fonts/std_pw_fw/font_04x06_extra.lbm similarity index 100% rename from radio/src/fonts/std_fw/font_04x06_extra.lbm rename to radio/src/fonts/std_pw_fw/font_04x06_extra.lbm diff --git a/radio/src/fonts/std_fw/font_04x06_extra.png b/radio/src/fonts/std_pw_fw/font_04x06_extra.png similarity index 100% rename from radio/src/fonts/std_fw/font_04x06_extra.png rename to radio/src/fonts/std_pw_fw/font_04x06_extra.png diff --git a/radio/src/fonts/std_fw/font_05x07.lbm b/radio/src/fonts/std_pw_fw/font_05x07.lbm similarity index 100% rename from radio/src/fonts/std_fw/font_05x07.lbm rename to radio/src/fonts/std_pw_fw/font_05x07.lbm diff --git a/radio/src/fonts/std_fw/font_05x07.png b/radio/src/fonts/std_pw_fw/font_05x07.png similarity index 100% rename from radio/src/fonts/std_fw/font_05x07.png rename to radio/src/fonts/std_pw_fw/font_05x07.png diff --git a/radio/src/fonts/std_fw/font_05x07_extra.lbm b/radio/src/fonts/std_pw_fw/font_05x07_extra.lbm similarity index 100% rename from radio/src/fonts/std_fw/font_05x07_extra.lbm rename to radio/src/fonts/std_pw_fw/font_05x07_extra.lbm diff --git a/radio/src/fonts/std_fw/font_05x07_extra.png b/radio/src/fonts/std_pw_fw/font_05x07_extra.png similarity index 100% rename from radio/src/fonts/std_fw/font_05x07_extra.png rename to radio/src/fonts/std_pw_fw/font_05x07_extra.png diff --git a/radio/src/fonts/std_fw/font_08x10.lbm b/radio/src/fonts/std_pw_fw/font_08x10.lbm similarity index 100% rename from radio/src/fonts/std_fw/font_08x10.lbm rename to radio/src/fonts/std_pw_fw/font_08x10.lbm diff --git a/radio/src/fonts/std_fw/font_08x10.png b/radio/src/fonts/std_pw_fw/font_08x10.png similarity index 100% rename from radio/src/fonts/std_fw/font_08x10.png rename to radio/src/fonts/std_pw_fw/font_08x10.png diff --git a/radio/src/fonts/std_fw/font_10x14.lbm b/radio/src/fonts/std_pw_fw/font_10x14.lbm similarity index 100% rename from radio/src/fonts/std_fw/font_10x14.lbm rename to radio/src/fonts/std_pw_fw/font_10x14.lbm diff --git a/radio/src/fonts/std_fw/font_10x14.png b/radio/src/fonts/std_pw_fw/font_10x14.png similarity index 100% rename from radio/src/fonts/std_fw/font_10x14.png rename to radio/src/fonts/std_pw_fw/font_10x14.png diff --git a/radio/src/fonts/std_fw/font_10x14_compressed.lbm b/radio/src/fonts/std_pw_fw/font_10x14_compressed.lbm similarity index 100% rename from radio/src/fonts/std_fw/font_10x14_compressed.lbm rename to radio/src/fonts/std_pw_fw/font_10x14_compressed.lbm diff --git a/radio/src/fonts/std_fw/font_10x14_compressed.png b/radio/src/fonts/std_pw_fw/font_10x14_compressed.png similarity index 100% rename from radio/src/fonts/std_fw/font_10x14_compressed.png rename to radio/src/fonts/std_pw_fw/font_10x14_compressed.png diff --git a/radio/src/fonts/std_fw/font_10x14_extra.lbm b/radio/src/fonts/std_pw_fw/font_10x14_extra.lbm similarity index 100% rename from radio/src/fonts/std_fw/font_10x14_extra.lbm rename to radio/src/fonts/std_pw_fw/font_10x14_extra.lbm diff --git a/radio/src/fonts/std_fw/font_10x14_extra.png b/radio/src/fonts/std_pw_fw/font_10x14_extra.png similarity index 100% rename from radio/src/fonts/std_fw/font_10x14_extra.png rename to radio/src/fonts/std_pw_fw/font_10x14_extra.png diff --git a/radio/src/fonts/std_fw/font_cz_04x06.lbm b/radio/src/fonts/std_pw_fw/font_cz_04x06.lbm similarity index 100% rename from radio/src/fonts/std_fw/font_cz_04x06.lbm rename to radio/src/fonts/std_pw_fw/font_cz_04x06.lbm diff --git a/radio/src/fonts/std_fw/font_cz_04x06.png b/radio/src/fonts/std_pw_fw/font_cz_04x06.png similarity index 100% rename from radio/src/fonts/std_fw/font_cz_04x06.png rename to radio/src/fonts/std_pw_fw/font_cz_04x06.png diff --git a/radio/src/fonts/std_fw/font_cz_05x07.lbm b/radio/src/fonts/std_pw_fw/font_cz_05x07.lbm similarity index 100% rename from radio/src/fonts/std_fw/font_cz_05x07.lbm rename to radio/src/fonts/std_pw_fw/font_cz_05x07.lbm diff --git a/radio/src/fonts/std_fw/font_cz_05x07.png b/radio/src/fonts/std_pw_fw/font_cz_05x07.png similarity index 100% rename from radio/src/fonts/std_fw/font_cz_05x07.png rename to radio/src/fonts/std_pw_fw/font_cz_05x07.png diff --git a/radio/src/fonts/std_fw/font_cz_08x10.lbm b/radio/src/fonts/std_pw_fw/font_cz_08x10.lbm similarity index 100% rename from radio/src/fonts/std_fw/font_cz_08x10.lbm rename to radio/src/fonts/std_pw_fw/font_cz_08x10.lbm diff --git a/radio/src/fonts/std_fw/font_cz_08x10.png b/radio/src/fonts/std_pw_fw/font_cz_08x10.png similarity index 100% rename from radio/src/fonts/std_fw/font_cz_08x10.png rename to radio/src/fonts/std_pw_fw/font_cz_08x10.png diff --git a/radio/src/fonts/std_fw/font_cz_10x14.lbm b/radio/src/fonts/std_pw_fw/font_cz_10x14.lbm similarity index 100% rename from radio/src/fonts/std_fw/font_cz_10x14.lbm rename to radio/src/fonts/std_pw_fw/font_cz_10x14.lbm diff --git a/radio/src/fonts/std_fw/font_cz_10x14.png b/radio/src/fonts/std_pw_fw/font_cz_10x14.png similarity index 100% rename from radio/src/fonts/std_fw/font_cz_10x14.png rename to radio/src/fonts/std_pw_fw/font_cz_10x14.png diff --git a/radio/src/fonts/std_fw/font_de_04x06.lbm b/radio/src/fonts/std_pw_fw/font_de_04x06.lbm similarity index 100% rename from radio/src/fonts/std_fw/font_de_04x06.lbm rename to radio/src/fonts/std_pw_fw/font_de_04x06.lbm diff --git a/radio/src/fonts/std_fw/font_de_04x06.png b/radio/src/fonts/std_pw_fw/font_de_04x06.png similarity index 100% rename from radio/src/fonts/std_fw/font_de_04x06.png rename to radio/src/fonts/std_pw_fw/font_de_04x06.png diff --git a/radio/src/fonts/std_fw/font_de_05x07.lbm b/radio/src/fonts/std_pw_fw/font_de_05x07.lbm similarity index 100% rename from radio/src/fonts/std_fw/font_de_05x07.lbm rename to radio/src/fonts/std_pw_fw/font_de_05x07.lbm diff --git a/radio/src/fonts/std_fw/font_de_05x07.png b/radio/src/fonts/std_pw_fw/font_de_05x07.png similarity index 100% rename from radio/src/fonts/std_fw/font_de_05x07.png rename to radio/src/fonts/std_pw_fw/font_de_05x07.png diff --git a/radio/src/fonts/std_fw/font_de_08x10.lbm b/radio/src/fonts/std_pw_fw/font_de_08x10.lbm similarity index 100% rename from radio/src/fonts/std_fw/font_de_08x10.lbm rename to radio/src/fonts/std_pw_fw/font_de_08x10.lbm diff --git a/radio/src/fonts/std_fw/font_de_08x10.png b/radio/src/fonts/std_pw_fw/font_de_08x10.png similarity index 100% rename from radio/src/fonts/std_fw/font_de_08x10.png rename to radio/src/fonts/std_pw_fw/font_de_08x10.png diff --git a/radio/src/fonts/std_fw/font_de_10x14.lbm b/radio/src/fonts/std_pw_fw/font_de_10x14.lbm similarity index 100% rename from radio/src/fonts/std_fw/font_de_10x14.lbm rename to radio/src/fonts/std_pw_fw/font_de_10x14.lbm diff --git a/radio/src/fonts/std_fw/font_de_10x14.png b/radio/src/fonts/std_pw_fw/font_de_10x14.png similarity index 100% rename from radio/src/fonts/std_fw/font_de_10x14.png rename to radio/src/fonts/std_pw_fw/font_de_10x14.png diff --git a/radio/src/fonts/std_fw/font_es_04x06.lbm b/radio/src/fonts/std_pw_fw/font_es_04x06.lbm similarity index 100% rename from radio/src/fonts/std_fw/font_es_04x06.lbm rename to radio/src/fonts/std_pw_fw/font_es_04x06.lbm diff --git a/radio/src/fonts/std_fw/font_es_04x06.png b/radio/src/fonts/std_pw_fw/font_es_04x06.png similarity index 100% rename from radio/src/fonts/std_fw/font_es_04x06.png rename to radio/src/fonts/std_pw_fw/font_es_04x06.png diff --git a/radio/src/fonts/std_fw/font_es_05x07.lbm b/radio/src/fonts/std_pw_fw/font_es_05x07.lbm similarity index 100% rename from radio/src/fonts/std_fw/font_es_05x07.lbm rename to radio/src/fonts/std_pw_fw/font_es_05x07.lbm diff --git a/radio/src/fonts/std_fw/font_es_05x07.png b/radio/src/fonts/std_pw_fw/font_es_05x07.png similarity index 100% rename from radio/src/fonts/std_fw/font_es_05x07.png rename to radio/src/fonts/std_pw_fw/font_es_05x07.png diff --git a/radio/src/fonts/std_fw/font_es_08x10.lbm b/radio/src/fonts/std_pw_fw/font_es_08x10.lbm similarity index 100% rename from radio/src/fonts/std_fw/font_es_08x10.lbm rename to radio/src/fonts/std_pw_fw/font_es_08x10.lbm diff --git a/radio/src/fonts/std_fw/font_es_08x10.png b/radio/src/fonts/std_pw_fw/font_es_08x10.png similarity index 100% rename from radio/src/fonts/std_fw/font_es_08x10.png rename to radio/src/fonts/std_pw_fw/font_es_08x10.png diff --git a/radio/src/fonts/std_fw/font_es_10x14.lbm b/radio/src/fonts/std_pw_fw/font_es_10x14.lbm similarity index 100% rename from radio/src/fonts/std_fw/font_es_10x14.lbm rename to radio/src/fonts/std_pw_fw/font_es_10x14.lbm diff --git a/radio/src/fonts/std_fw/font_es_10x14.png b/radio/src/fonts/std_pw_fw/font_es_10x14.png similarity index 100% rename from radio/src/fonts/std_fw/font_es_10x14.png rename to radio/src/fonts/std_pw_fw/font_es_10x14.png diff --git a/radio/src/fonts/std_fw/font_fr_04x06.lbm b/radio/src/fonts/std_pw_fw/font_fr_04x06.lbm similarity index 100% rename from radio/src/fonts/std_fw/font_fr_04x06.lbm rename to radio/src/fonts/std_pw_fw/font_fr_04x06.lbm diff --git a/radio/src/fonts/std_fw/font_fr_04x06.png b/radio/src/fonts/std_pw_fw/font_fr_04x06.png similarity index 100% rename from radio/src/fonts/std_fw/font_fr_04x06.png rename to radio/src/fonts/std_pw_fw/font_fr_04x06.png diff --git a/radio/src/fonts/std_fw/font_fr_05x07.lbm b/radio/src/fonts/std_pw_fw/font_fr_05x07.lbm similarity index 100% rename from radio/src/fonts/std_fw/font_fr_05x07.lbm rename to radio/src/fonts/std_pw_fw/font_fr_05x07.lbm diff --git a/radio/src/fonts/std_fw/font_fr_05x07.png b/radio/src/fonts/std_pw_fw/font_fr_05x07.png similarity index 100% rename from radio/src/fonts/std_fw/font_fr_05x07.png rename to radio/src/fonts/std_pw_fw/font_fr_05x07.png diff --git a/radio/src/fonts/std_fw/font_fr_08x10.lbm b/radio/src/fonts/std_pw_fw/font_fr_08x10.lbm similarity index 100% rename from radio/src/fonts/std_fw/font_fr_08x10.lbm rename to radio/src/fonts/std_pw_fw/font_fr_08x10.lbm diff --git a/radio/src/fonts/std_fw/font_fr_08x10.png b/radio/src/fonts/std_pw_fw/font_fr_08x10.png similarity index 100% rename from radio/src/fonts/std_fw/font_fr_08x10.png rename to radio/src/fonts/std_pw_fw/font_fr_08x10.png diff --git a/radio/src/fonts/std_fw/font_fr_10x14.lbm b/radio/src/fonts/std_pw_fw/font_fr_10x14.lbm similarity index 100% rename from radio/src/fonts/std_fw/font_fr_10x14.lbm rename to radio/src/fonts/std_pw_fw/font_fr_10x14.lbm diff --git a/radio/src/fonts/std_fw/font_fr_10x14.png b/radio/src/fonts/std_pw_fw/font_fr_10x14.png similarity index 100% rename from radio/src/fonts/std_fw/font_fr_10x14.png rename to radio/src/fonts/std_pw_fw/font_fr_10x14.png diff --git a/radio/src/fonts/std_fw/font_it_04x06.lbm b/radio/src/fonts/std_pw_fw/font_it_04x06.lbm similarity index 100% rename from radio/src/fonts/std_fw/font_it_04x06.lbm rename to radio/src/fonts/std_pw_fw/font_it_04x06.lbm diff --git a/radio/src/fonts/std_fw/font_it_04x06.png b/radio/src/fonts/std_pw_fw/font_it_04x06.png similarity index 100% rename from radio/src/fonts/std_fw/font_it_04x06.png rename to radio/src/fonts/std_pw_fw/font_it_04x06.png diff --git a/radio/src/fonts/std_fw/font_it_05x07.lbm b/radio/src/fonts/std_pw_fw/font_it_05x07.lbm similarity index 100% rename from radio/src/fonts/std_fw/font_it_05x07.lbm rename to radio/src/fonts/std_pw_fw/font_it_05x07.lbm diff --git a/radio/src/fonts/std_fw/font_it_05x07.png b/radio/src/fonts/std_pw_fw/font_it_05x07.png similarity index 100% rename from radio/src/fonts/std_fw/font_it_05x07.png rename to radio/src/fonts/std_pw_fw/font_it_05x07.png diff --git a/radio/src/fonts/std_fw/font_it_08x10.lbm b/radio/src/fonts/std_pw_fw/font_it_08x10.lbm similarity index 100% rename from radio/src/fonts/std_fw/font_it_08x10.lbm rename to radio/src/fonts/std_pw_fw/font_it_08x10.lbm diff --git a/radio/src/fonts/std_fw/font_it_08x10.png b/radio/src/fonts/std_pw_fw/font_it_08x10.png similarity index 100% rename from radio/src/fonts/std_fw/font_it_08x10.png rename to radio/src/fonts/std_pw_fw/font_it_08x10.png diff --git a/radio/src/fonts/std_fw/font_it_10x14.lbm b/radio/src/fonts/std_pw_fw/font_it_10x14.lbm similarity index 100% rename from radio/src/fonts/std_fw/font_it_10x14.lbm rename to radio/src/fonts/std_pw_fw/font_it_10x14.lbm diff --git a/radio/src/fonts/std_fw/font_it_10x14.png b/radio/src/fonts/std_pw_fw/font_it_10x14.png similarity index 100% rename from radio/src/fonts/std_fw/font_it_10x14.png rename to radio/src/fonts/std_pw_fw/font_it_10x14.png diff --git a/radio/src/fonts/std_fw/font_pl_04x06.lbm b/radio/src/fonts/std_pw_fw/font_pl_04x06.lbm similarity index 100% rename from radio/src/fonts/std_fw/font_pl_04x06.lbm rename to radio/src/fonts/std_pw_fw/font_pl_04x06.lbm diff --git a/radio/src/fonts/std_fw/font_pl_04x06.png b/radio/src/fonts/std_pw_fw/font_pl_04x06.png similarity index 100% rename from radio/src/fonts/std_fw/font_pl_04x06.png rename to radio/src/fonts/std_pw_fw/font_pl_04x06.png diff --git a/radio/src/fonts/std_fw/font_pl_05x07.lbm b/radio/src/fonts/std_pw_fw/font_pl_05x07.lbm similarity index 100% rename from radio/src/fonts/std_fw/font_pl_05x07.lbm rename to radio/src/fonts/std_pw_fw/font_pl_05x07.lbm diff --git a/radio/src/fonts/std_fw/font_pl_05x07.png b/radio/src/fonts/std_pw_fw/font_pl_05x07.png similarity index 100% rename from radio/src/fonts/std_fw/font_pl_05x07.png rename to radio/src/fonts/std_pw_fw/font_pl_05x07.png diff --git a/radio/src/fonts/std_fw/font_pl_08x10.lbm b/radio/src/fonts/std_pw_fw/font_pl_08x10.lbm similarity index 100% rename from radio/src/fonts/std_fw/font_pl_08x10.lbm rename to radio/src/fonts/std_pw_fw/font_pl_08x10.lbm diff --git a/radio/src/fonts/std_fw/font_pl_08x10.png b/radio/src/fonts/std_pw_fw/font_pl_08x10.png similarity index 100% rename from radio/src/fonts/std_fw/font_pl_08x10.png rename to radio/src/fonts/std_pw_fw/font_pl_08x10.png diff --git a/radio/src/fonts/std_fw/font_pl_10x14.lbm b/radio/src/fonts/std_pw_fw/font_pl_10x14.lbm similarity index 100% rename from radio/src/fonts/std_fw/font_pl_10x14.lbm rename to radio/src/fonts/std_pw_fw/font_pl_10x14.lbm diff --git a/radio/src/fonts/std_fw/font_pl_10x14.png b/radio/src/fonts/std_pw_fw/font_pl_10x14.png similarity index 100% rename from radio/src/fonts/std_fw/font_pl_10x14.png rename to radio/src/fonts/std_pw_fw/font_pl_10x14.png diff --git a/radio/src/fonts/std_fw/font_pt_04x06.lbm b/radio/src/fonts/std_pw_fw/font_pt_04x06.lbm similarity index 100% rename from radio/src/fonts/std_fw/font_pt_04x06.lbm rename to radio/src/fonts/std_pw_fw/font_pt_04x06.lbm diff --git a/radio/src/fonts/std_fw/font_pt_04x06.png b/radio/src/fonts/std_pw_fw/font_pt_04x06.png similarity index 100% rename from radio/src/fonts/std_fw/font_pt_04x06.png rename to radio/src/fonts/std_pw_fw/font_pt_04x06.png diff --git a/radio/src/fonts/std_fw/font_pt_05x07.lbm b/radio/src/fonts/std_pw_fw/font_pt_05x07.lbm similarity index 100% rename from radio/src/fonts/std_fw/font_pt_05x07.lbm rename to radio/src/fonts/std_pw_fw/font_pt_05x07.lbm diff --git a/radio/src/fonts/std_fw/font_pt_05x07.png b/radio/src/fonts/std_pw_fw/font_pt_05x07.png similarity index 100% rename from radio/src/fonts/std_fw/font_pt_05x07.png rename to radio/src/fonts/std_pw_fw/font_pt_05x07.png diff --git a/radio/src/fonts/std_fw/font_pt_08x10.lbm b/radio/src/fonts/std_pw_fw/font_pt_08x10.lbm similarity index 100% rename from radio/src/fonts/std_fw/font_pt_08x10.lbm rename to radio/src/fonts/std_pw_fw/font_pt_08x10.lbm diff --git a/radio/src/fonts/std_fw/font_pt_08x10.png b/radio/src/fonts/std_pw_fw/font_pt_08x10.png similarity index 100% rename from radio/src/fonts/std_fw/font_pt_08x10.png rename to radio/src/fonts/std_pw_fw/font_pt_08x10.png diff --git a/radio/src/fonts/std_fw/font_pt_10x14.lbm b/radio/src/fonts/std_pw_fw/font_pt_10x14.lbm similarity index 100% rename from radio/src/fonts/std_fw/font_pt_10x14.lbm rename to radio/src/fonts/std_pw_fw/font_pt_10x14.lbm diff --git a/radio/src/fonts/std_fw/font_pt_10x14.png b/radio/src/fonts/std_pw_fw/font_pt_10x14.png similarity index 100% rename from radio/src/fonts/std_fw/font_pt_10x14.png rename to radio/src/fonts/std_pw_fw/font_pt_10x14.png diff --git a/radio/src/fonts/std_fw/font_se_04x06.lbm b/radio/src/fonts/std_pw_fw/font_se_04x06.lbm similarity index 100% rename from radio/src/fonts/std_fw/font_se_04x06.lbm rename to radio/src/fonts/std_pw_fw/font_se_04x06.lbm diff --git a/radio/src/fonts/std_fw/font_se_04x06.png b/radio/src/fonts/std_pw_fw/font_se_04x06.png similarity index 100% rename from radio/src/fonts/std_fw/font_se_04x06.png rename to radio/src/fonts/std_pw_fw/font_se_04x06.png diff --git a/radio/src/fonts/std_fw/font_se_05x07.lbm b/radio/src/fonts/std_pw_fw/font_se_05x07.lbm similarity index 100% rename from radio/src/fonts/std_fw/font_se_05x07.lbm rename to radio/src/fonts/std_pw_fw/font_se_05x07.lbm diff --git a/radio/src/fonts/std_fw/font_se_05x07.png b/radio/src/fonts/std_pw_fw/font_se_05x07.png similarity index 100% rename from radio/src/fonts/std_fw/font_se_05x07.png rename to radio/src/fonts/std_pw_fw/font_se_05x07.png diff --git a/radio/src/fonts/std_fw/font_se_08x10.lbm b/radio/src/fonts/std_pw_fw/font_se_08x10.lbm similarity index 100% rename from radio/src/fonts/std_fw/font_se_08x10.lbm rename to radio/src/fonts/std_pw_fw/font_se_08x10.lbm diff --git a/radio/src/fonts/std_fw/font_se_08x10.png b/radio/src/fonts/std_pw_fw/font_se_08x10.png similarity index 100% rename from radio/src/fonts/std_fw/font_se_08x10.png rename to radio/src/fonts/std_pw_fw/font_se_08x10.png diff --git a/radio/src/fonts/std_fw/font_se_10x14.lbm b/radio/src/fonts/std_pw_fw/font_se_10x14.lbm similarity index 100% rename from radio/src/fonts/std_fw/font_se_10x14.lbm rename to radio/src/fonts/std_pw_fw/font_se_10x14.lbm diff --git a/radio/src/fonts/std_fw/font_se_10x14.png b/radio/src/fonts/std_pw_fw/font_se_10x14.png similarity index 100% rename from radio/src/fonts/std_fw/font_se_10x14.png rename to radio/src/fonts/std_pw_fw/font_se_10x14.png From a0eb087d118f44fd47c2a9a0dfd1da3d5fc19b2e Mon Sep 17 00:00:00 2001 From: mhotar Date: Tue, 17 Dec 2013 16:08:46 +0100 Subject: [PATCH 014/308] Font folders- fighting with git --- radio/src/fonts/sqt5_fw/font_03x05.lbm | 1 + radio/src/fonts/sqt5_fw/font_03x05.png | Bin 0 -> 222 bytes radio/src/fonts/sqt5_fw/font_04x06.lbm | 6 ++++++ radio/src/fonts/sqt5_fw/font_04x06.png | Bin 0 -> 874 bytes radio/src/fonts/sqt5_fw/font_04x06_extra.lbm | 1 + radio/src/fonts/sqt5_fw/font_04x06_extra.png | Bin 0 -> 159 bytes radio/src/fonts/sqt5_fw/font_05x07.lbm | 6 ++++++ radio/src/fonts/sqt5_fw/font_05x07.png | Bin 0 -> 937 bytes radio/src/fonts/sqt5_fw/font_05x07_extra.lbm | 1 + radio/src/fonts/sqt5_fw/font_05x07_extra.png | Bin 0 -> 161 bytes radio/src/fonts/sqt5_fw/font_08x10.lbm | 6 ++++++ radio/src/fonts/sqt5_fw/font_08x10.png | Bin 0 -> 1390 bytes radio/src/fonts/sqt5_fw/font_10x14.lbm | 6 ++++++ radio/src/fonts/sqt5_fw/font_10x14.png | Bin 0 -> 1809 bytes .../src/fonts/sqt5_fw/font_10x14_compressed.lbm | 1 + .../src/fonts/sqt5_fw/font_10x14_compressed.png | Bin 0 -> 1157 bytes radio/src/fonts/sqt5_fw/font_10x14_extra.lbm | 1 + radio/src/fonts/sqt5_fw/font_10x14_extra.png | Bin 0 -> 229 bytes radio/src/fonts/sqt5_fw/font_cz_04x06.lbm | 1 + radio/src/fonts/sqt5_fw/font_cz_04x06.png | Bin 0 -> 215 bytes radio/src/fonts/sqt5_fw/font_cz_05x07.lbm | 1 + radio/src/fonts/sqt5_fw/font_cz_05x07.png | Bin 0 -> 260 bytes radio/src/fonts/sqt5_fw/font_cz_08x10.lbm | 1 + radio/src/fonts/sqt5_fw/font_cz_08x10.png | Bin 0 -> 265 bytes radio/src/fonts/sqt5_fw/font_cz_10x14.lbm | 1 + radio/src/fonts/sqt5_fw/font_cz_10x14.png | Bin 0 -> 352 bytes radio/src/fonts/sqt5_fw/font_de_04x06.lbm | 1 + radio/src/fonts/sqt5_fw/font_de_04x06.png | Bin 0 -> 176 bytes radio/src/fonts/sqt5_fw/font_de_05x07.lbm | 1 + radio/src/fonts/sqt5_fw/font_de_05x07.png | Bin 0 -> 181 bytes radio/src/fonts/sqt5_fw/font_de_08x10.lbm | 1 + radio/src/fonts/sqt5_fw/font_de_08x10.png | Bin 0 -> 192 bytes radio/src/fonts/sqt5_fw/font_de_10x14.lbm | 1 + radio/src/fonts/sqt5_fw/font_de_10x14.png | Bin 0 -> 241 bytes radio/src/fonts/sqt5_fw/font_es_04x06.lbm | 1 + radio/src/fonts/sqt5_fw/font_es_04x06.png | Bin 0 -> 155 bytes radio/src/fonts/sqt5_fw/font_es_05x07.lbm | 1 + radio/src/fonts/sqt5_fw/font_es_05x07.png | Bin 0 -> 155 bytes radio/src/fonts/sqt5_fw/font_es_08x10.lbm | 1 + radio/src/fonts/sqt5_fw/font_es_08x10.png | Bin 0 -> 161 bytes radio/src/fonts/sqt5_fw/font_es_10x14.lbm | 1 + radio/src/fonts/sqt5_fw/font_es_10x14.png | Bin 0 -> 174 bytes radio/src/fonts/sqt5_fw/font_fr_04x06.lbm | 1 + radio/src/fonts/sqt5_fw/font_fr_04x06.png | Bin 0 -> 3570 bytes radio/src/fonts/sqt5_fw/font_fr_05x07.lbm | 1 + radio/src/fonts/sqt5_fw/font_fr_05x07.png | Bin 0 -> 174 bytes radio/src/fonts/sqt5_fw/font_fr_08x10.lbm | 1 + radio/src/fonts/sqt5_fw/font_fr_08x10.png | Bin 0 -> 3597 bytes radio/src/fonts/sqt5_fw/font_fr_10x14.lbm | 1 + radio/src/fonts/sqt5_fw/font_fr_10x14.png | Bin 0 -> 202 bytes radio/src/fonts/sqt5_fw/font_it_04x06.lbm | 1 + radio/src/fonts/sqt5_fw/font_it_04x06.png | Bin 0 -> 157 bytes radio/src/fonts/sqt5_fw/font_it_05x07.lbm | 1 + radio/src/fonts/sqt5_fw/font_it_05x07.png | Bin 0 -> 157 bytes radio/src/fonts/sqt5_fw/font_it_08x10.lbm | 1 + radio/src/fonts/sqt5_fw/font_it_08x10.png | Bin 0 -> 162 bytes radio/src/fonts/sqt5_fw/font_it_10x14.lbm | 1 + radio/src/fonts/sqt5_fw/font_it_10x14.png | Bin 0 -> 171 bytes radio/src/fonts/sqt5_fw/font_pl_04x06.lbm | 1 + radio/src/fonts/sqt5_fw/font_pl_04x06.png | Bin 0 -> 175 bytes radio/src/fonts/sqt5_fw/font_pl_05x07.lbm | 1 + radio/src/fonts/sqt5_fw/font_pl_05x07.png | Bin 0 -> 195 bytes radio/src/fonts/sqt5_fw/font_pl_08x10.lbm | 1 + radio/src/fonts/sqt5_fw/font_pl_08x10.png | Bin 0 -> 237 bytes radio/src/fonts/sqt5_fw/font_pl_10x14.lbm | 1 + radio/src/fonts/sqt5_fw/font_pl_10x14.png | Bin 0 -> 333 bytes radio/src/fonts/sqt5_fw/font_pt_04x06.lbm | 1 + radio/src/fonts/sqt5_fw/font_pt_04x06.png | Bin 0 -> 130 bytes radio/src/fonts/sqt5_fw/font_pt_05x07.lbm | 1 + radio/src/fonts/sqt5_fw/font_pt_05x07.png | Bin 0 -> 244 bytes radio/src/fonts/sqt5_fw/font_pt_08x10.lbm | 1 + radio/src/fonts/sqt5_fw/font_pt_08x10.png | Bin 0 -> 289 bytes radio/src/fonts/sqt5_fw/font_pt_10x14.lbm | 1 + radio/src/fonts/sqt5_fw/font_pt_10x14.png | Bin 0 -> 379 bytes radio/src/fonts/sqt5_fw/font_se_04x06.lbm | 1 + radio/src/fonts/sqt5_fw/font_se_04x06.png | Bin 0 -> 169 bytes radio/src/fonts/sqt5_fw/font_se_05x07.lbm | 1 + radio/src/fonts/sqt5_fw/font_se_05x07.png | Bin 0 -> 174 bytes radio/src/fonts/sqt5_fw/font_se_08x10.lbm | 1 + radio/src/fonts/sqt5_fw/font_se_08x10.png | Bin 0 -> 195 bytes radio/src/fonts/sqt5_fw/font_se_10x14.lbm | 1 + radio/src/fonts/sqt5_fw/font_se_10x14.png | Bin 0 -> 214 bytes radio/src/fonts/sqt5_pw/font_03x05.lbm | 1 + radio/src/fonts/sqt5_pw/font_03x05.png | Bin 0 -> 222 bytes radio/src/fonts/sqt5_pw/font_04x06_extra.lbm | 1 + radio/src/fonts/sqt5_pw/font_04x06_extra.png | Bin 0 -> 159 bytes radio/src/fonts/sqt5_pw/font_05x07_extra.lbm | 1 + radio/src/fonts/sqt5_pw/font_05x07_extra.png | Bin 0 -> 161 bytes radio/src/fonts/sqt5_pw/font_10x14_extra.lbm | 1 + radio/src/fonts/sqt5_pw/font_10x14_extra.png | Bin 0 -> 229 bytes radio/src/fonts/sqt5_pw/font_pl_04x06.lbm | 1 + radio/src/fonts/sqt5_pw/font_pl_04x06.png | Bin 0 -> 175 bytes radio/src/fonts/sqt5_pw/font_pl_05x07.lbm | 1 + radio/src/fonts/sqt5_pw/font_pl_05x07.png | Bin 0 -> 195 bytes radio/src/fonts/sqt5_pw/font_pl_08x10.lbm | 1 + radio/src/fonts/sqt5_pw/font_pl_08x10.png | Bin 0 -> 237 bytes radio/src/fonts/sqt5_pw/font_pl_10x14.lbm | 1 + radio/src/fonts/sqt5_pw/font_pl_10x14.png | Bin 0 -> 333 bytes radio/src/fonts/sqt5_pw/font_pt_04x06.lbm | 1 + radio/src/fonts/sqt5_pw/font_pt_04x06.png | Bin 0 -> 130 bytes radio/src/fonts/std_fw/font_03x05.lbm | 1 + radio/src/fonts/std_fw/font_03x05.png | Bin 0 -> 222 bytes radio/src/fonts/std_fw/font_04x06.lbm | 6 ++++++ radio/src/fonts/std_fw/font_04x06.png | Bin 0 -> 519 bytes radio/src/fonts/std_fw/font_04x06_extra.lbm | 1 + radio/src/fonts/std_fw/font_04x06_extra.png | Bin 0 -> 159 bytes radio/src/fonts/std_fw/font_05x07.lbm | 6 ++++++ radio/src/fonts/std_fw/font_05x07.png | Bin 0 -> 570 bytes radio/src/fonts/std_fw/font_05x07_extra.lbm | 1 + radio/src/fonts/std_fw/font_05x07_extra.png | Bin 0 -> 161 bytes radio/src/fonts/std_fw/font_08x10.lbm | 6 ++++++ radio/src/fonts/std_fw/font_08x10.png | Bin 0 -> 767 bytes radio/src/fonts/std_fw/font_10x14.lbm | 6 ++++++ radio/src/fonts/std_fw/font_10x14.png | Bin 0 -> 1123 bytes radio/src/fonts/std_fw/font_10x14_compressed.lbm | 1 + radio/src/fonts/std_fw/font_10x14_compressed.png | Bin 0 -> 1500 bytes radio/src/fonts/std_fw/font_10x14_extra.lbm | 1 + radio/src/fonts/std_fw/font_10x14_extra.png | Bin 0 -> 229 bytes radio/src/fonts/std_fw/font_cz_04x06.lbm | 1 + radio/src/fonts/std_fw/font_cz_04x06.png | Bin 0 -> 220 bytes radio/src/fonts/std_fw/font_cz_05x07.lbm | 1 + radio/src/fonts/std_fw/font_cz_05x07.png | Bin 0 -> 223 bytes radio/src/fonts/std_fw/font_cz_08x10.lbm | 1 + radio/src/fonts/std_fw/font_cz_08x10.png | Bin 0 -> 292 bytes radio/src/fonts/std_fw/font_cz_10x14.lbm | 1 + radio/src/fonts/std_fw/font_cz_10x14.png | Bin 0 -> 410 bytes radio/src/fonts/std_fw/font_de_04x06.lbm | 1 + radio/src/fonts/std_fw/font_de_04x06.png | Bin 0 -> 179 bytes radio/src/fonts/std_fw/font_de_05x07.lbm | 1 + radio/src/fonts/std_fw/font_de_05x07.png | Bin 0 -> 170 bytes radio/src/fonts/std_fw/font_de_08x10.lbm | 1 + radio/src/fonts/std_fw/font_de_08x10.png | Bin 0 -> 202 bytes radio/src/fonts/std_fw/font_de_10x14.lbm | 1 + radio/src/fonts/std_fw/font_de_10x14.png | Bin 0 -> 254 bytes radio/src/fonts/std_fw/font_es_04x06.lbm | 1 + radio/src/fonts/std_fw/font_es_04x06.png | Bin 0 -> 144 bytes radio/src/fonts/std_fw/font_es_05x07.lbm | 1 + radio/src/fonts/std_fw/font_es_05x07.png | Bin 0 -> 147 bytes radio/src/fonts/std_fw/font_es_08x10.lbm | 1 + radio/src/fonts/std_fw/font_es_08x10.png | Bin 0 -> 168 bytes radio/src/fonts/std_fw/font_es_10x14.lbm | 1 + radio/src/fonts/std_fw/font_es_10x14.png | Bin 0 -> 177 bytes radio/src/fonts/std_fw/font_fr_04x06.lbm | 1 + radio/src/fonts/std_fw/font_fr_04x06.png | Bin 0 -> 3610 bytes radio/src/fonts/std_fw/font_fr_05x07.lbm | 1 + radio/src/fonts/std_fw/font_fr_05x07.png | Bin 0 -> 163 bytes radio/src/fonts/std_fw/font_fr_08x10.lbm | 1 + radio/src/fonts/std_fw/font_fr_08x10.png | Bin 0 -> 3647 bytes radio/src/fonts/std_fw/font_fr_10x14.lbm | 1 + radio/src/fonts/std_fw/font_fr_10x14.png | Bin 0 -> 231 bytes radio/src/fonts/std_fw/font_it_04x06.lbm | 1 + radio/src/fonts/std_fw/font_it_04x06.png | Bin 0 -> 145 bytes radio/src/fonts/std_fw/font_it_05x07.lbm | 1 + radio/src/fonts/std_fw/font_it_05x07.png | Bin 0 -> 148 bytes radio/src/fonts/std_fw/font_it_08x10.lbm | 1 + radio/src/fonts/std_fw/font_it_08x10.png | Bin 0 -> 158 bytes radio/src/fonts/std_fw/font_it_10x14.lbm | 1 + radio/src/fonts/std_fw/font_it_10x14.png | Bin 0 -> 178 bytes radio/src/fonts/std_fw/font_pl_04x06.lbm | 1 + radio/src/fonts/std_fw/font_pl_04x06.png | Bin 0 -> 177 bytes radio/src/fonts/std_fw/font_pl_05x07.lbm | 1 + radio/src/fonts/std_fw/font_pl_05x07.png | Bin 0 -> 196 bytes radio/src/fonts/std_fw/font_pl_08x10.lbm | 1 + radio/src/fonts/std_fw/font_pl_08x10.png | Bin 0 -> 266 bytes radio/src/fonts/std_fw/font_pl_10x14.lbm | 1 + radio/src/fonts/std_fw/font_pl_10x14.png | Bin 0 -> 368 bytes radio/src/fonts/std_fw/font_pt_04x06.lbm | 1 + radio/src/fonts/std_fw/font_pt_04x06.png | Bin 0 -> 130 bytes radio/src/fonts/std_fw/font_pt_05x07.lbm | 1 + radio/src/fonts/std_fw/font_pt_05x07.png | Bin 0 -> 246 bytes radio/src/fonts/std_fw/font_pt_08x10.lbm | 1 + radio/src/fonts/std_fw/font_pt_08x10.png | Bin 0 -> 315 bytes radio/src/fonts/std_fw/font_pt_10x14.lbm | 1 + radio/src/fonts/std_fw/font_pt_10x14.png | Bin 0 -> 442 bytes radio/src/fonts/std_fw/font_se_04x06.lbm | 1 + radio/src/fonts/std_fw/font_se_04x06.png | Bin 0 -> 157 bytes radio/src/fonts/std_fw/font_se_05x07.lbm | 1 + radio/src/fonts/std_fw/font_se_05x07.png | Bin 0 -> 160 bytes radio/src/fonts/std_fw/font_se_08x10.lbm | 1 + radio/src/fonts/std_fw/font_se_08x10.png | Bin 0 -> 190 bytes radio/src/fonts/std_fw/font_se_10x14.lbm | 1 + radio/src/fonts/std_fw/font_se_10x14.png | Bin 0 -> 233 bytes 182 files changed, 131 insertions(+) create mode 100644 radio/src/fonts/sqt5_fw/font_03x05.lbm create mode 100644 radio/src/fonts/sqt5_fw/font_03x05.png create mode 100644 radio/src/fonts/sqt5_fw/font_04x06.lbm create mode 100644 radio/src/fonts/sqt5_fw/font_04x06.png create mode 100644 radio/src/fonts/sqt5_fw/font_04x06_extra.lbm create mode 100644 radio/src/fonts/sqt5_fw/font_04x06_extra.png create mode 100644 radio/src/fonts/sqt5_fw/font_05x07.lbm create mode 100644 radio/src/fonts/sqt5_fw/font_05x07.png create mode 100644 radio/src/fonts/sqt5_fw/font_05x07_extra.lbm create mode 100644 radio/src/fonts/sqt5_fw/font_05x07_extra.png create mode 100644 radio/src/fonts/sqt5_fw/font_08x10.lbm create mode 100644 radio/src/fonts/sqt5_fw/font_08x10.png create mode 100644 radio/src/fonts/sqt5_fw/font_10x14.lbm create mode 100644 radio/src/fonts/sqt5_fw/font_10x14.png create mode 100644 radio/src/fonts/sqt5_fw/font_10x14_compressed.lbm create mode 100644 radio/src/fonts/sqt5_fw/font_10x14_compressed.png create mode 100644 radio/src/fonts/sqt5_fw/font_10x14_extra.lbm create mode 100644 radio/src/fonts/sqt5_fw/font_10x14_extra.png create mode 100644 radio/src/fonts/sqt5_fw/font_cz_04x06.lbm create mode 100644 radio/src/fonts/sqt5_fw/font_cz_04x06.png create mode 100644 radio/src/fonts/sqt5_fw/font_cz_05x07.lbm create mode 100644 radio/src/fonts/sqt5_fw/font_cz_05x07.png create mode 100644 radio/src/fonts/sqt5_fw/font_cz_08x10.lbm create mode 100644 radio/src/fonts/sqt5_fw/font_cz_08x10.png create mode 100644 radio/src/fonts/sqt5_fw/font_cz_10x14.lbm create mode 100644 radio/src/fonts/sqt5_fw/font_cz_10x14.png create mode 100644 radio/src/fonts/sqt5_fw/font_de_04x06.lbm create mode 100644 radio/src/fonts/sqt5_fw/font_de_04x06.png create mode 100644 radio/src/fonts/sqt5_fw/font_de_05x07.lbm create mode 100644 radio/src/fonts/sqt5_fw/font_de_05x07.png create mode 100644 radio/src/fonts/sqt5_fw/font_de_08x10.lbm create mode 100644 radio/src/fonts/sqt5_fw/font_de_08x10.png create mode 100644 radio/src/fonts/sqt5_fw/font_de_10x14.lbm create mode 100644 radio/src/fonts/sqt5_fw/font_de_10x14.png create mode 100644 radio/src/fonts/sqt5_fw/font_es_04x06.lbm create mode 100644 radio/src/fonts/sqt5_fw/font_es_04x06.png create mode 100644 radio/src/fonts/sqt5_fw/font_es_05x07.lbm create mode 100644 radio/src/fonts/sqt5_fw/font_es_05x07.png create mode 100644 radio/src/fonts/sqt5_fw/font_es_08x10.lbm create mode 100644 radio/src/fonts/sqt5_fw/font_es_08x10.png create mode 100644 radio/src/fonts/sqt5_fw/font_es_10x14.lbm create mode 100644 radio/src/fonts/sqt5_fw/font_es_10x14.png create mode 100644 radio/src/fonts/sqt5_fw/font_fr_04x06.lbm create mode 100644 radio/src/fonts/sqt5_fw/font_fr_04x06.png create mode 100644 radio/src/fonts/sqt5_fw/font_fr_05x07.lbm create mode 100644 radio/src/fonts/sqt5_fw/font_fr_05x07.png create mode 100644 radio/src/fonts/sqt5_fw/font_fr_08x10.lbm create mode 100644 radio/src/fonts/sqt5_fw/font_fr_08x10.png create mode 100644 radio/src/fonts/sqt5_fw/font_fr_10x14.lbm create mode 100644 radio/src/fonts/sqt5_fw/font_fr_10x14.png create mode 100644 radio/src/fonts/sqt5_fw/font_it_04x06.lbm create mode 100644 radio/src/fonts/sqt5_fw/font_it_04x06.png create mode 100644 radio/src/fonts/sqt5_fw/font_it_05x07.lbm create mode 100644 radio/src/fonts/sqt5_fw/font_it_05x07.png create mode 100644 radio/src/fonts/sqt5_fw/font_it_08x10.lbm create mode 100644 radio/src/fonts/sqt5_fw/font_it_08x10.png create mode 100644 radio/src/fonts/sqt5_fw/font_it_10x14.lbm create mode 100644 radio/src/fonts/sqt5_fw/font_it_10x14.png create mode 100644 radio/src/fonts/sqt5_fw/font_pl_04x06.lbm create mode 100644 radio/src/fonts/sqt5_fw/font_pl_04x06.png create mode 100644 radio/src/fonts/sqt5_fw/font_pl_05x07.lbm create mode 100644 radio/src/fonts/sqt5_fw/font_pl_05x07.png create mode 100644 radio/src/fonts/sqt5_fw/font_pl_08x10.lbm create mode 100644 radio/src/fonts/sqt5_fw/font_pl_08x10.png create mode 100644 radio/src/fonts/sqt5_fw/font_pl_10x14.lbm create mode 100644 radio/src/fonts/sqt5_fw/font_pl_10x14.png create mode 100644 radio/src/fonts/sqt5_fw/font_pt_04x06.lbm create mode 100644 radio/src/fonts/sqt5_fw/font_pt_04x06.png create mode 100644 radio/src/fonts/sqt5_fw/font_pt_05x07.lbm create mode 100644 radio/src/fonts/sqt5_fw/font_pt_05x07.png create mode 100644 radio/src/fonts/sqt5_fw/font_pt_08x10.lbm create mode 100644 radio/src/fonts/sqt5_fw/font_pt_08x10.png create mode 100644 radio/src/fonts/sqt5_fw/font_pt_10x14.lbm create mode 100644 radio/src/fonts/sqt5_fw/font_pt_10x14.png create mode 100644 radio/src/fonts/sqt5_fw/font_se_04x06.lbm create mode 100644 radio/src/fonts/sqt5_fw/font_se_04x06.png create mode 100644 radio/src/fonts/sqt5_fw/font_se_05x07.lbm create mode 100644 radio/src/fonts/sqt5_fw/font_se_05x07.png create mode 100644 radio/src/fonts/sqt5_fw/font_se_08x10.lbm create mode 100644 radio/src/fonts/sqt5_fw/font_se_08x10.png create mode 100644 radio/src/fonts/sqt5_fw/font_se_10x14.lbm create mode 100644 radio/src/fonts/sqt5_fw/font_se_10x14.png create mode 100644 radio/src/fonts/sqt5_pw/font_03x05.lbm create mode 100644 radio/src/fonts/sqt5_pw/font_03x05.png create mode 100644 radio/src/fonts/sqt5_pw/font_04x06_extra.lbm create mode 100644 radio/src/fonts/sqt5_pw/font_04x06_extra.png create mode 100644 radio/src/fonts/sqt5_pw/font_05x07_extra.lbm create mode 100644 radio/src/fonts/sqt5_pw/font_05x07_extra.png create mode 100644 radio/src/fonts/sqt5_pw/font_10x14_extra.lbm create mode 100644 radio/src/fonts/sqt5_pw/font_10x14_extra.png create mode 100644 radio/src/fonts/sqt5_pw/font_pl_04x06.lbm create mode 100644 radio/src/fonts/sqt5_pw/font_pl_04x06.png create mode 100644 radio/src/fonts/sqt5_pw/font_pl_05x07.lbm create mode 100644 radio/src/fonts/sqt5_pw/font_pl_05x07.png create mode 100644 radio/src/fonts/sqt5_pw/font_pl_08x10.lbm create mode 100644 radio/src/fonts/sqt5_pw/font_pl_08x10.png create mode 100644 radio/src/fonts/sqt5_pw/font_pl_10x14.lbm create mode 100644 radio/src/fonts/sqt5_pw/font_pl_10x14.png create mode 100644 radio/src/fonts/sqt5_pw/font_pt_04x06.lbm create mode 100644 radio/src/fonts/sqt5_pw/font_pt_04x06.png create mode 100644 radio/src/fonts/std_fw/font_03x05.lbm create mode 100644 radio/src/fonts/std_fw/font_03x05.png create mode 100644 radio/src/fonts/std_fw/font_04x06.lbm create mode 100644 radio/src/fonts/std_fw/font_04x06.png create mode 100644 radio/src/fonts/std_fw/font_04x06_extra.lbm create mode 100644 radio/src/fonts/std_fw/font_04x06_extra.png create mode 100644 radio/src/fonts/std_fw/font_05x07.lbm create mode 100644 radio/src/fonts/std_fw/font_05x07.png create mode 100644 radio/src/fonts/std_fw/font_05x07_extra.lbm create mode 100644 radio/src/fonts/std_fw/font_05x07_extra.png create mode 100644 radio/src/fonts/std_fw/font_08x10.lbm create mode 100644 radio/src/fonts/std_fw/font_08x10.png create mode 100644 radio/src/fonts/std_fw/font_10x14.lbm create mode 100644 radio/src/fonts/std_fw/font_10x14.png create mode 100644 radio/src/fonts/std_fw/font_10x14_compressed.lbm create mode 100644 radio/src/fonts/std_fw/font_10x14_compressed.png create mode 100644 radio/src/fonts/std_fw/font_10x14_extra.lbm create mode 100644 radio/src/fonts/std_fw/font_10x14_extra.png create mode 100644 radio/src/fonts/std_fw/font_cz_04x06.lbm create mode 100644 radio/src/fonts/std_fw/font_cz_04x06.png create mode 100644 radio/src/fonts/std_fw/font_cz_05x07.lbm create mode 100644 radio/src/fonts/std_fw/font_cz_05x07.png create mode 100644 radio/src/fonts/std_fw/font_cz_08x10.lbm create mode 100644 radio/src/fonts/std_fw/font_cz_08x10.png create mode 100644 radio/src/fonts/std_fw/font_cz_10x14.lbm create mode 100644 radio/src/fonts/std_fw/font_cz_10x14.png create mode 100644 radio/src/fonts/std_fw/font_de_04x06.lbm create mode 100644 radio/src/fonts/std_fw/font_de_04x06.png create mode 100644 radio/src/fonts/std_fw/font_de_05x07.lbm create mode 100644 radio/src/fonts/std_fw/font_de_05x07.png create mode 100644 radio/src/fonts/std_fw/font_de_08x10.lbm create mode 100644 radio/src/fonts/std_fw/font_de_08x10.png create mode 100644 radio/src/fonts/std_fw/font_de_10x14.lbm create mode 100644 radio/src/fonts/std_fw/font_de_10x14.png create mode 100644 radio/src/fonts/std_fw/font_es_04x06.lbm create mode 100644 radio/src/fonts/std_fw/font_es_04x06.png create mode 100644 radio/src/fonts/std_fw/font_es_05x07.lbm create mode 100644 radio/src/fonts/std_fw/font_es_05x07.png create mode 100644 radio/src/fonts/std_fw/font_es_08x10.lbm create mode 100644 radio/src/fonts/std_fw/font_es_08x10.png create mode 100644 radio/src/fonts/std_fw/font_es_10x14.lbm create mode 100644 radio/src/fonts/std_fw/font_es_10x14.png create mode 100644 radio/src/fonts/std_fw/font_fr_04x06.lbm create mode 100644 radio/src/fonts/std_fw/font_fr_04x06.png create mode 100644 radio/src/fonts/std_fw/font_fr_05x07.lbm create mode 100644 radio/src/fonts/std_fw/font_fr_05x07.png create mode 100644 radio/src/fonts/std_fw/font_fr_08x10.lbm create mode 100644 radio/src/fonts/std_fw/font_fr_08x10.png create mode 100644 radio/src/fonts/std_fw/font_fr_10x14.lbm create mode 100644 radio/src/fonts/std_fw/font_fr_10x14.png create mode 100644 radio/src/fonts/std_fw/font_it_04x06.lbm create mode 100644 radio/src/fonts/std_fw/font_it_04x06.png create mode 100644 radio/src/fonts/std_fw/font_it_05x07.lbm create mode 100644 radio/src/fonts/std_fw/font_it_05x07.png create mode 100644 radio/src/fonts/std_fw/font_it_08x10.lbm create mode 100644 radio/src/fonts/std_fw/font_it_08x10.png create mode 100644 radio/src/fonts/std_fw/font_it_10x14.lbm create mode 100644 radio/src/fonts/std_fw/font_it_10x14.png create mode 100644 radio/src/fonts/std_fw/font_pl_04x06.lbm create mode 100644 radio/src/fonts/std_fw/font_pl_04x06.png create mode 100644 radio/src/fonts/std_fw/font_pl_05x07.lbm create mode 100644 radio/src/fonts/std_fw/font_pl_05x07.png create mode 100644 radio/src/fonts/std_fw/font_pl_08x10.lbm create mode 100644 radio/src/fonts/std_fw/font_pl_08x10.png create mode 100644 radio/src/fonts/std_fw/font_pl_10x14.lbm create mode 100644 radio/src/fonts/std_fw/font_pl_10x14.png create mode 100644 radio/src/fonts/std_fw/font_pt_04x06.lbm create mode 100644 radio/src/fonts/std_fw/font_pt_04x06.png create mode 100644 radio/src/fonts/std_fw/font_pt_05x07.lbm create mode 100644 radio/src/fonts/std_fw/font_pt_05x07.png create mode 100644 radio/src/fonts/std_fw/font_pt_08x10.lbm create mode 100644 radio/src/fonts/std_fw/font_pt_08x10.png create mode 100644 radio/src/fonts/std_fw/font_pt_10x14.lbm create mode 100644 radio/src/fonts/std_fw/font_pt_10x14.png create mode 100644 radio/src/fonts/std_fw/font_se_04x06.lbm create mode 100644 radio/src/fonts/std_fw/font_se_04x06.png create mode 100644 radio/src/fonts/std_fw/font_se_05x07.lbm create mode 100644 radio/src/fonts/std_fw/font_se_05x07.png create mode 100644 radio/src/fonts/std_fw/font_se_08x10.lbm create mode 100644 radio/src/fonts/std_fw/font_se_08x10.png create mode 100644 radio/src/fonts/std_fw/font_se_10x14.lbm create mode 100644 radio/src/fonts/std_fw/font_se_10x14.png diff --git a/radio/src/fonts/sqt5_fw/font_03x05.lbm b/radio/src/fonts/sqt5_fw/font_03x05.lbm new file mode 100644 index 000000000..1e163ee0d --- /dev/null +++ b/radio/src/fonts/sqt5_fw/font_03x05.lbm @@ -0,0 +1 @@ +0x04,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0x11,0x0e,0x12,0x1f,0x10,0x19,0x15,0x13,0x11,0x15,0x1f,0x07,0x04,0x1f,0x17,0x15,0x1d,0x1f,0x15,0x1d,0x01,0x1d,0x03,0x1f,0x15,0x1f,0x17,0x15,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x1f,0x11, diff --git a/radio/src/fonts/sqt5_fw/font_03x05.png b/radio/src/fonts/sqt5_fw/font_03x05.png new file mode 100644 index 0000000000000000000000000000000000000000..c378d30f00d8dc9d479bb2526dbc754ed709ec9a GIT binary patch literal 222 zcmeAS@N?(olHy`uVBq!ia0vp^;XusF!2~4tzj=NfNHG=%xjQkeJ16rJ$l)yTh%9Dc z;1&j9Muu5)B!GhKC7!;n?04B^#Q2%dEM&e26e{p^aSX9IeKzDY-vI@V=%4@V-|?li ze7JPk$=_u))7pk7mzf)cOc*9u-u>0^^Wy!4%+niL8G3w!xHl+Vc~)+#&MuvBlglo~ z>-k+ltE}%o7AUW8V!7BS#NZ!;N~;K!9C9+i@IUFj{N#`gy!wiN?kp zTbda1NZa9w^G6+ZrvDK24OoZ)T1`UEk2)W3a1Wu534Af)5Q(}DCNpz7fnh$%Yfy&#Ha?0Ylq1GZoEXk!?}mp*4;9r^E~cX z;9)B1x_1?649=Sb&YZ3r)RvJ46dEC7{K(ZKgmX^`k(TZ)#c-Z!{o^sJJmlKn1&@e_ zOn^mM>MBVD=}MYpG#XJRh;Zt<3QiVTN~sojDn_z8LU=u`OR!AiutboCPkt!1@?DyE zh={-nml*FVJ-NDcp#gwpz>PzEGVa2a(%P}GxON0oE~Hf@HaQIDVWbXEq2Vp?r_oX) zMsPEYh>8e#AeXoWx*-cfX~YfFmSD%A#Zv>7>jamLZV7d_qY&X7rlnB?^{N~tE_tZR z7ds)Lg;TaPK63>yO$eBxM{iSa%PfB~0n6X~te3cjz6w6giMfHu`cLhmfdr znO_oq8ZC8wdrFCsDb2-O@M4t7Z)4|(GMI>I32eA;09>z&sMXES+}JiXoRT}d%R??7 z=l$q~3t@|BvfJ@fa*0xTIQD#4@om$NO&{*|@kl9tTk&v(hoW3xMAX|!Xor@fQ+Ho5 z;G>p3ua;7s)5(9YT6*ZsOTR^|hgtE~MpqnmsbV^#@xGH`Yf%2u3)80A(JR+V{ z9vX7PTI?b7R#zb(4g7d}Sb|?AThLLLqc_%4ijc@;s}qeBmbu#1YRT=tn-_5xi5H8o z72Zdw{vgf7h^548$=!700)&dwk7?ei*r!!X-v<_t%a2r5L;wH)07*qoM6N<$f|E*= A%>V!Z literal 0 HcmV?d00001 diff --git a/radio/src/fonts/sqt5_fw/font_04x06_extra.lbm b/radio/src/fonts/sqt5_fw/font_04x06_extra.lbm new file mode 100644 index 000000000..cce1e9d68 --- /dev/null +++ b/radio/src/fonts/sqt5_fw/font_04x06_extra.lbm @@ -0,0 +1 @@ +0x04,0x02,0x3b,0x02,0x04,0x08,0x10,0x37,0x10,0x08,0x20,0x12,0x0a,0x02,0x1e,0x02,0x24,0x28,0x20,0x3c,0x3c,0x20,0x28,0x24,0x02,0x1e,0x02,0x0a,0x12,0x20, diff --git a/radio/src/fonts/sqt5_fw/font_04x06_extra.png b/radio/src/fonts/sqt5_fw/font_04x06_extra.png new file mode 100644 index 0000000000000000000000000000000000000000..dd59c2e2baf81a726c751c2ab0a129c819ca0638 GIT binary patch literal 159 zcmeAS@N?(olHy`uVBq!ia0vp^azM<^$P6S^)$=z2DYgKg5LY1m|NsA`H|O64vN#Jo zB8wRqxP?KOkzv*x37{Z*iKnkC`&~9}Zc)avOYbHFg>*b!978y+C-3#2^TaKL7uhokOO5hNUPm-LoX8B(5k>1zLLVhxL?F&Z6^WeClfF%US1q z5vAjguAm1x-u%>b%Tmgac9wiD?Y)nM(4q<<=bB!ho6?q2YP#ikpJ%N1%6m7rbjS>r za!1NB(h#Px=q1J*V0PQQ*?@(>r9xWl0)pMRwiTTV6=0c7llDG&m64$E0VMcUPxCC(GZ+tJ z^iIz8MO(8pbP%NH(^wz{)?PuN!d&X%4OTqe7H}Ie4X_-hVr#E4_fVG%m04p!NOsJR z9JgE_;TptPEulF=OTD%9c1csK;h8bsdaDK?KsRX#I|2IdDND#PW;B}pwx`m<1i}$x z;z4SlXO{bl8shel8B=sQPv9QBF@Tp2J&ox?Z=s?rV|^kH^V%Tq)qZW_D zjQuZtf?W!oC2(?$oCl!FWE7E3Br(G1sKaw|^~XI>f<)fJYj0 zXdF3(2~B&4`|I&M^ISSUc?I^Q5@c{}3whL(L#diW`F)0j6^|S}A#?M(!0PR>C=JUx zejuk9rZ`FLki_9>I9!*OhujeH-(+BBeXpANKZk<#E{=*VEq5#eupqCPvlG5oy_b^P z8U;iaR=9ETlU(adnpVral=$~5n+ar488~4EmP69o(ng!G`JK-1OaR~jAg#s>JxOa`DkOg02zFS5LZ`tf;JVK8R z4w>enmY&uo=@GY*@F~m@-GKC-7y;4_E1a00000 LNkvXXu0mjfr*o#} literal 0 HcmV?d00001 diff --git a/radio/src/fonts/sqt5_fw/font_05x07_extra.lbm b/radio/src/fonts/sqt5_fw/font_05x07_extra.lbm new file mode 100644 index 000000000..ea644215a --- /dev/null +++ b/radio/src/fonts/sqt5_fw/font_05x07_extra.lbm @@ -0,0 +1 @@ +0x04,0x02,0x7b,0x02,0x04,0x10,0x20,0x6f,0x20,0x10,0x20,0x12,0x0a,0x02,0x1e,0x02,0x24,0x28,0x20,0x3c,0x3c,0x20,0x28,0x24,0x02,0x1e,0x02,0x0a,0x12,0x20, diff --git a/radio/src/fonts/sqt5_fw/font_05x07_extra.png b/radio/src/fonts/sqt5_fw/font_05x07_extra.png new file mode 100644 index 0000000000000000000000000000000000000000..4d939852c36bb0096c69d7df76eb47c9a3d73aff GIT binary patch literal 161 zcmeAS@N?(olHy`uVBq!ia0vp^azM<%$P6T}6y8k-QfvV}A+A9B|Ns9>Z_d99WN{XF zL>4nJa0`PlBg3pY5H=O_PcD{+@gZnssFwMh4egK978y+C-39y5|4@1p7%u zK~#9!?OfZI>mUeCvi$#F_B?b=CPx7`H)A@46>2@Rpt)ZlN(u>v1j+^Gd}N%0?;ZTDVV-pX0d^HoU$)2gJZH;xU!>RmTEJl zQagu?&qPK6)LKu5HU^jcK>oMcB8^B?=3DMePG>No8A=(s1J3pLA9`WbpQmRZ`S)Ia zep2sp(bsv)g!yW%&7P1o{o48DR3MugRS^7;ARcbt4C!pvTfzlPaE01>Vd@dUy0F-pBCLv3Zdd`diVtwgkC_+0F*nj^rEa-7hk@t(Rshj?sk?GwX z=laN@xbcVmRdyhD9|(PVF70w+g2WG8#Ktk*_FvEVg2R^wclrQXn?GNV*9gd|jLiq& z0j^pAAxOZ2bIIYU!I}3mAeW;yLGl(R+hz9v`VugK82X;rJZ6|S4XtR2BB+NDdTkOU z(L|`^IEYWWf*+|!r)O)rz_|5a@*xq_&ooqqIj^E2*XoBQ7bP6o! zuRR>*)5yS?3jE5cna=>3ks%i}w?2Ww6GKlT=1c|TK7;^Xt-sO9y#iPO3*t5`X>CAE z#%5>De<1@?fz*vJ7{D!>hg82Sh=snw0_aB$W(l zVISvqneBuZvGT)+cADlL^B4aJIA|KFC4`T|NfqOo|-W58Kb6jijJ|g=9eP zG8`-(7uZD77vkR#19f*6tOp3?eh(8;|cA4n!cN+Wcx# z_;7#|PdHoQ ztv`s|=r0yD2Z~@}%6kv(zt65cP?%9`@7FA_4p8_NIoOqNJd$3!GR=! zFhlr84~T-~$~_Re5Hi?dWndsZTEl{uKqKpws{#wC9mqMa4Jb1K$I+%jef!X&a>}7S z4S7Z5NqR`Q{%l_k4UK&ho0opyV}i2d?(OcotmZ%E76i)dW3$!5d>$`L0Lz9$sc6qk z85m0w@%kS_fAjlAZe;DD?W+vrs~rt;Z5R6#JF5*_wO;3bDB^vzz(WW`@d^M6LqqPc z8DK$kLi<0sljQdIzM$NQw (Re=h_@wChLo@h@iI@{;?;S;FfxWDyfDO${Dhy|(c zopgrnszNI{S~celJR(mkNI92mTSncJYn zmhn!23Nmi&ovi!)HDH7jmgN?Xy*S@IlLwow4wk#mCkjz8bDxtzNisfQ2k`z4A>twr we<5$yGOl$6>Hm)&RoeZawAmbPPKF}>0lexrI`&wwCjbBd07*qoM6N<$f)F>BS^xk5 literal 0 HcmV?d00001 diff --git a/radio/src/fonts/sqt5_fw/font_10x14.lbm b/radio/src/fonts/sqt5_fw/font_10x14.lbm new file mode 100644 index 000000000..a53a3e8f0 --- /dev/null +++ b/radio/src/fonts/sqt5_fw/font_10x14.lbm @@ -0,0 +1,6 @@ +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x71,0xfe,0x71,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x7e,0x00,0x00,0x00,0x00,0x00,0x7e,0x00,0x3e,0x00,0x00,0x00,0x00,0x00,0x60,0x06,0x60,0x06,0xfe,0x7f,0xfe,0x7f,0x60,0x06,0x60,0x06,0xfe,0x7f,0xfe,0x7f,0x60,0x06,0x60,0x06,0x60,0x18,0xf0,0x18,0x98,0x19,0x98,0x19,0xfe,0x7f,0xfe,0x7f,0x98,0x19,0x98,0x19,0x18,0x0f,0x18,0x06,0x0c,0x18,0x1e,0x1c,0x1e,0x0e,0x0c,0x07,0x80,0x03,0xc0,0x01,0xe0,0x30,0x70,0x78,0x38,0x78,0x18,0x30,0x78,0x1e,0xfc,0x3f,0x8e,0x71,0xc6,0x63,0xe6,0x67,0x76,0x66,0x3c,0x3c,0x18,0x3c,0x00,0x66,0x00,0x66,0x00,0x00,0x00,0x00,0x66,0x00,0x76,0x00,0x3e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x07,0xf0,0x0f,0x38,0x1c,0x1c,0x38,0x0e,0x70,0x06,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x60,0x0e,0x70,0x1c,0x38,0x38,0x1c,0xf0,0x0f,0xe0,0x07,0x00,0x00,0x00,0x00,0x60,0x06,0x60,0x06,0xc0,0x03,0x80,0x01,0xf8,0x1f,0xf8,0x1f,0x80,0x01,0xc0,0x03,0x60,0x06,0x60,0x06,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xf8,0x1f,0xf8,0x1f,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x66,0x00,0x76,0x00,0x3e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x78,0x00,0x78,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x1c,0x00,0x0e,0x00,0x07,0x80,0x03,0xc0,0x01,0xe0,0x00,0x70,0x00,0x38,0x00,0x18,0x00, +0x00,0x00,0x00,0x00,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x7e,0x0e,0x7f,0x8e,0x7f,0x86,0x63,0x86,0x61,0xfe,0x61,0xfe,0x61,0xfc,0x60,0x00,0x00,0x00,0x00,0x06,0x60,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f,0x00,0x00,0x00,0x00,0xfe,0x00,0xfe,0x01,0xfe,0x01,0x80,0x01,0x80,0x01,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x00,0x00,0x00,0xfe,0x30,0xfe,0x71,0xfe,0x71,0x86,0x61,0x86,0x61,0x86,0x7f,0x86,0x7f,0x06,0x3f,0x00,0x00,0x00,0x00,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x8e,0x7f,0x8e,0x7f,0x0c,0x3f,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x86,0x7f,0xc6,0x7f,0xfe,0x7f,0x7e,0x00,0x3e,0x00,0x00,0x00,0x00,0x00,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f,0x00,0x00,0x00,0x00,0x7c,0x30,0xfe,0x71,0xfe,0x71,0x86,0x61,0x86,0x61,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f,0x00,0x00,0x00,0x00,0x78,0x1e,0x78,0x1e,0x78,0x1e,0x78,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x66,0x78,0x76,0x78,0x3e,0x30,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0xc0,0x03,0xe0,0x07,0x70,0x0e,0x38,0x1c,0x1c,0x38,0x0e,0x70,0x06,0x60,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x06,0x60,0x0e,0x70,0x1c,0x38,0x38,0x1c,0x70,0x0e,0xe0,0x07,0xc0,0x03,0x80,0x01,0x00,0x00,0x00,0x00,0x18,0x00,0x1c,0x00,0x0e,0x00,0x06,0x00,0x06,0x66,0x06,0x67,0x86,0x03,0xce,0x01,0xfc,0x00,0x78,0x00, +0x78,0x00,0xfc,0x00,0xce,0x01,0x86,0x01,0x86,0x01,0xce,0x01,0xfc,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0xfc,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0xfe,0x7f,0xfe,0x7f,0xfc,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0xfe,0x61,0xfe,0x7f,0xfc,0x7f,0x00,0x3f,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x06,0x60,0x0e,0x70,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x06,0x00,0x06,0x00,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x7f,0x86,0x7f,0x80,0x3f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x00,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x78,0x00,0x78,0x00,0x60,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x3f,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0xc0,0x03,0xe0,0x07,0xf0,0x0f,0x78,0x1e,0x3c,0x3c,0x1e,0x78,0x0e,0x70,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0xfc,0x7f,0xfe,0x7f,0xfe,0x7f,0x06,0x00,0xfe,0x01,0xfe,0x01,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0xfc,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x06,0x00,0x06,0x00,0x06,0x00,0x0e,0x00,0xfc,0x7f,0xf8,0x7f,0xf0,0x7f,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f, +0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0xfe,0x01,0xfe,0x01,0xfc,0x00,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x66,0x06,0x6e,0x06,0x1c,0xfe,0x39,0xfe,0x73,0xfc,0x67,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0xfe,0x01,0xfe,0x7f,0xfc,0x7f,0x00,0x7f,0xfc,0x38,0xfe,0x79,0xfe,0x79,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x9e,0x7f,0x9e,0x7f,0x1c,0x3f,0x06,0x00,0x06,0x00,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0xfe,0x3f,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x3f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x70,0x00,0x38,0x00,0x1c,0x00,0x0e,0x00,0x07,0xfe,0x03,0xfe,0x01,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x70,0x00,0x3e,0x00,0x3e,0x00,0x70,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x1e,0x78,0x3e,0x7c,0x7e,0x7e,0xe0,0x07,0xc0,0x03,0xc0,0x03,0xe0,0x07,0x7e,0x7e,0x3e,0x7c,0x1e,0x78,0xfe,0x00,0xfe,0x01,0xfe,0x03,0x00,0x7f,0x00,0x7e,0x00,0x7e,0x00,0x7f,0xfe,0x03,0xfe,0x01,0xfe,0x00,0x06,0x78,0x06,0x7c,0x06,0x7e,0x06,0x67,0x86,0x63,0xc6,0x61,0xe6,0x60,0x7e,0x60,0x3e,0x60,0x1e,0x60,0x00,0x00,0x00,0x00,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x00,0x00,0x00,0x00,0x18,0x00,0x38,0x00,0x70,0x00,0xe0,0x00,0xc0,0x01,0x80,0x03,0x00,0x07,0x00,0x0e,0x00,0x1c,0x00,0x18,0x00,0x00,0x00,0x00,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x00,0x00,0x00,0x00,0x60,0x00,0x70,0x00,0x38,0x00,0x1c,0x00,0x0e,0x00,0x0e,0x00,0x1c,0x00,0x38,0x00,0x70,0x00,0x60,0x00,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60, +0x00,0x00,0x00,0x00,0x06,0x00,0x0e,0x00,0x1c,0x00,0x38,0x00,0x70,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x60,0x7e,0x60,0x7e,0x60,0x7e,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0x67,0xe0,0x67,0xe0,0x67,0x80,0x01,0x80,0x61,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x06,0x60,0x06,0x00,0x1e,0x00,0x1e,0x00,0xe0,0xcf,0xe0,0xcf,0xe0,0xcf,0x60,0xcc,0x60,0xcc,0x60,0xcc,0x60,0xcc,0xe0,0xff,0xe0,0xff,0xe0,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x00,0x00,0x00,0x00,0x60,0x60,0x60,0x60,0xe6,0x7f,0xe6,0x7f,0xe0,0x7f,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0xf0,0x00,0xf0,0x00,0xf0,0x00,0xc0,0x60,0xc0,0x60,0xc0,0xe6,0xff,0xe6,0xff,0xe0,0x7f,0x00,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x0f,0x80,0x1f,0xc0,0x39,0xe0,0x70,0x70,0x60,0x30,0x60,0x00,0x00,0x00,0x00,0x00,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0x00,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x00,0xe0,0x07,0xe0,0x07,0xe0,0x00,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0xe0,0x7f,0xe0,0x7f,0xc0,0x7f,0xc0,0x3f,0xe0,0x7f,0xe0,0x7f,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xe0,0x7f,0xe0,0x7f,0xc0,0x3f, +0xe0,0xff,0xe0,0xff,0xe0,0xff,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0xe0,0x07,0xe0,0x07,0xe0,0x07,0xe0,0x07,0xe0,0x07,0xe0,0x07,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0xe0,0xff,0xe0,0xff,0xe0,0xff,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xc0,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0xe0,0x01,0xe0,0x01,0xe0,0x01,0xe0,0x67,0xe0,0x67,0xe0,0x67,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x7e,0x60,0x7e,0x60,0x7e,0x60,0x00,0x60,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x60,0x60,0x00,0x60,0x00,0x78,0x00,0x78,0x00,0x78,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x00,0x70,0x00,0x38,0x00,0x1c,0x00,0x0e,0x00,0x07,0xe0,0x03,0xe0,0x01,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x00,0x70,0x00,0x3c,0x00,0x3c,0x00,0x70,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x60,0xe0,0x70,0xe0,0x79,0xc0,0x3f,0x80,0x1f,0x80,0x1f,0xc0,0x3f,0xe0,0x79,0xe0,0x70,0x60,0x60,0xe0,0xcf,0xe0,0xcf,0xe0,0xcf,0x00,0xcc,0x00,0xcc,0x00,0xcc,0x00,0xcc,0xe0,0xff,0xe0,0xff,0xe0,0x7f,0x60,0x60,0x60,0x70,0x60,0x78,0x60,0x7c,0x60,0x7e,0x60,0x6f,0xe0,0x67,0xe0,0x63,0xe0,0x61,0xe0,0x60,0x00,0x00,0x00,0x00,0x80,0x01,0xc0,0x03,0x78,0x1e,0x7c,0x3e,0x0e,0x70,0x06,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x7f,0xfe,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x60,0x0e,0x70,0x7c,0x3e,0x78,0x1e,0xc0,0x03,0x80,0x01,0x00,0x00,0x00,0x00,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x18,0x18,0x38,0x1c,0xf0,0x0f,0xe0,0x07,0xc0,0x03,0x80,0x01,0x80,0x01,0xc0,0x03,0xe0,0x07,0xf0,0x0f,0x38,0x1c,0x18,0x18,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01, diff --git a/radio/src/fonts/sqt5_fw/font_10x14.png b/radio/src/fonts/sqt5_fw/font_10x14.png new file mode 100644 index 0000000000000000000000000000000000000000..e7b202905d412f91ece0512041b0ff7b13c273b4 GIT binary patch literal 1809 zcmV+s2k!WZP)003YJ0ssI26-DmO00006VoOIv0RI60 z0RN!9r;`8x010qNS#tmY3ljhU3ljkVnw%H_000McNliru-3K2OItb`J4%K ze|-;sm6@5k`EkQ&JD({2F}L9_5?xwTfW;g?WYsiyu_c1Qg)F)??y9yDcxC>4``M8!{#!F|d z9h>{Tsgm#F#q){hAAgmSV-bd!fxG8NOxfgNQ9l(JFsyKQdTXp$of@AP43QM+-x%6urK#bTaUj5(^jKQ+ER)IDD{` z%((oh3A1SS0f@17R#3hz<6?NM7pME}PB#${d(D%@%U{>LxhzzRWKbR}k#-PWjo3H* zRP*X!-nUgNLLJG}ER16bNC8ytxB0R5$eRRfkJ5F}Nc~C(gsHDK4POe6Fq3zK1jw^E zHGHiM`#tr7GlC=)un>&oxWiGGHCtwmL)6mH_3xjh$#&h3X+BFCZH}nK@?PYqV4@2O z6Ip?%`S>(*rlyp9qDg8H>kCb1SO#dOOYJ3G^*sK3Iiurmj+(oO-=31=MeJZ-f)2CS zeHVl0nfPaP7_--KP$mu0fT1A^ht~%2WAekCP zr~l(y??oPz%CQ=I7e|oN^d-f4B_q}hV(bC_Dczj46D@<_C`b<}ZsQHj*JpM#B3#(9 zf7l&T7mK0^{`s;tUi1}Ptywcc(U}P=UC(9&Kn`~C ztTE!MR76T}gRJjySA(Lx$_4hAio3^glxFNx1R6uPg(%ZXwCurUIB!aDM7i8P3Ffkc zMOg~EsBMH0;L9Gl=KHjkyc|y*yhqTceElTb43X>JxeMoZGDo{X}ZajGVxr{IhCt&g2?|AM3RpdYO4iHs0DI|}lKn?E^ zIo>+>8@B#k3`7}GdAtz3Tc%x8$C3de%7Rw&xPHqH_@lHQ!(BU%4{gw|xTrm;H)@7{ z4=x?24|(!BSj}K`us{-QVFUjIUhi0AJiy0P>AQ@Av-84%wH1r^VvmcwHboQZ+x*y$ z-4qvlLkOK5>qgd*aw-R>l;T}PilhvCxwWI^IIGu$Nc@1}PYZXYwDxW0GKR-_&VA>? z-T6~R2ONY&K}u<5N_0$jyuJ_>3t7BZb`oU;?d-*`mQF+>b8v>(9|A_wd*HnWdRLGpt_l`$Ad0HEH5fJ-E zpD)r5roNaPYUwH_1gq}Vwk*)tG-3|6i#${4ph-^KP5IXc#sq`y3hVn2=~ z+;>5rI$Oi{Cod?$MvKL+Tt{Z)xH0&x3Sj=LDEE6DNoo8n@li$1nJ=itEqhrB9-u+M zG=wp_tkZmTJJ#|NS%Oy@Mx-QfPu6r$z*lo`22XS{Araed zbm4JzGkCN`?(zu!jq>7Evt{qY->ne&M30VPMiD|WHwpft*Eg>2A^KZjq8j$%wWGnl zuCJr$`(aZ{yfl-9>ZD=$IhWh3nOB4K+`IoXdr|E}sMYH;Z&P)4@7uv%JtLU|ByLZ1 zKYYZ421oAxX12&NQ~$__J4M?SP&9MStCJejZAfL;x42Za1M1Zl#j-4@(!IB=PK)b$ zPR(#KQ@@u&*JV}NJ=i2Y%1-NUN)dMz@nDPaw7VC(NU%a!9ltKDYv$ZsgC$vjT87jY z?RzkMJ|2veSMw;3F`Qm;{y4)=iv;gj^8Di;!rZC6(Gtov00000NkvXXu0mjf;`?sI literal 0 HcmV?d00001 diff --git a/radio/src/fonts/sqt5_fw/font_10x14_compressed.lbm b/radio/src/fonts/sqt5_fw/font_10x14_compressed.lbm new file mode 100644 index 000000000..4cb8fa302 --- /dev/null +++ b/radio/src/fonts/sqt5_fw/font_10x14_compressed.lbm @@ -0,0 +1 @@ +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x66,0x00,0x76,0x00,0x3e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x78,0x00,0x78,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0x00,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x7e,0x0e,0x7f,0x8e,0x7f,0x86,0x63,0x86,0x61,0xfe,0x61,0xfe,0x61,0xfc,0x60,0x00,0x00,0x00,0x00,0x06,0x60,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f,0x00,0x00,0x00,0x00,0xfe,0x00,0xfe,0x01,0xfe,0x01,0x80,0x01,0x80,0x01,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x00,0x00,0x00,0xfe,0x30,0xfe,0x71,0xfe,0x71,0x86,0x61,0x86,0x61,0x86,0x7f,0x86,0x7f,0x06,0x3f,0x00,0x00,0x00,0x00,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x8e,0x7f,0x8e,0x7f,0x0c,0x3f,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x86,0x7f,0xc6,0x7f,0xfe,0x7f,0x7e,0x00,0x3e,0x00,0x00,0x00,0x00,0x00,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f,0x00,0x00,0x00,0x00,0x7c,0x30,0xfe,0x71,0xfe,0x71,0x86,0x61,0x86,0x61,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f,0x00,0x00,0x00,0x00,0x78,0x1e,0x78,0x1e,0x78,0x1e,0x78,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0xfe,0x7f,0xfe,0x7f,0xfc,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0xfe,0x61,0xfe,0x7f,0xfc,0x7f,0x00,0x3f,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x06,0x60,0x0e,0x70,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x06,0x00,0x06,0x00,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x7f,0x86,0x7f,0x80,0x3f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x00,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x78,0x00,0x78,0x00,0x60,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x3f,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0xc0,0x03,0xe0,0x07,0xf0,0x0f,0x78,0x1e,0x3c,0x3c,0x1e,0x78,0x0e,0x70,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0xfc,0x7f,0xfe,0x7f,0xfe,0x7f,0x06,0x00,0xfe,0x01,0xfe,0x01,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0xfc,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x06,0x00,0x06,0x00,0x06,0x00,0x0e,0x00,0xfc,0x7f,0xf8,0x7f,0xf0,0x7f,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0xfe,0x01,0xfe,0x01,0xfc,0x00,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x66,0x06,0x6e,0x06,0x1c,0xfe,0x39,0xfe,0x73,0xfc,0x67,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0xfe,0x01,0xfe,0x7f,0xfc,0x7f,0x00,0x7f,0xfc,0x38,0xfe,0x79,0xfe,0x79,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x9e,0x7f,0x9e,0x7f,0x1c,0x3f,0x06,0x00,0x06,0x00,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0xfe,0x3f,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x3f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x70,0x00,0x38,0x00,0x1c,0x00,0x0e,0x00,0x07,0xfe,0x03,0xfe,0x01,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x70,0x00,0x3e,0x00,0x3e,0x00,0x70,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x1e,0x78,0x3e,0x7c,0x7e,0x7e,0xe0,0x07,0xc0,0x03,0xc0,0x03,0xe0,0x07,0x7e,0x7e,0x3e,0x7c,0x1e,0x78,0xfe,0x00,0xfe,0x01,0xfe,0x03,0x00,0x7f,0x00,0x7e,0x00,0x7e,0x00,0x7f,0xfe,0x03,0xfe,0x01,0xfe,0x00,0x06,0x78,0x06,0x7c,0x06,0x7e,0x06,0x67,0x86,0x63,0xc6,0x61,0xe6,0x60,0x7e,0x60,0x3e,0x60,0x1e,0x60,0x60,0x7e,0x60,0x7e,0x60,0x7e,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0x67,0xe0,0x67,0xe0,0x67,0x80,0x01,0x80,0x61,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x06,0x60,0x06,0x00,0x1e,0x00,0x1e,0x00,0xe0,0xcf,0xe0,0xcf,0xe0,0xcf,0x60,0xcc,0x60,0xcc,0x60,0xcc,0x60,0xcc,0xe0,0xff,0xe0,0xff,0xe0,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x00,0x00,0x00,0x00,0x60,0x60,0x60,0x60,0xe6,0x7f,0xe6,0x7f,0xe0,0x7f,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0xf0,0x00,0xf0,0x00,0xf0,0x00,0xc0,0x60,0xc0,0x60,0xc0,0xe6,0xff,0xe6,0xff,0xe0,0x7f,0x00,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x0f,0x80,0x1f,0xc0,0x39,0xe0,0x70,0x70,0x60,0x30,0x60,0x00,0x00,0x00,0x00,0x00,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0x00,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x00,0xe0,0x07,0xe0,0x07,0xe0,0x00,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0xe0,0x7f,0xe0,0x7f,0xc0,0x7f,0xc0,0x3f,0xe0,0x7f,0xe0,0x7f,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xe0,0x7f,0xe0,0x7f,0xc0,0x3f,0xe0,0xff,0xe0,0xff,0xe0,0xff,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0xe0,0x07,0xe0,0x07,0xe0,0x07,0xe0,0x07,0xe0,0x07,0xe0,0x07,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0xe0,0xff,0xe0,0xff,0xe0,0xff,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xc0,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0xe0,0x01,0xe0,0x01,0xe0,0x01,0xe0,0x67,0xe0,0x67,0xe0,0x67,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x7e,0x60,0x7e,0x60,0x7e,0x60,0x00,0x60,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x60,0x60,0x00,0x60,0x00,0x78,0x00,0x78,0x00,0x78,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x00,0x70,0x00,0x38,0x00,0x1c,0x00,0x0e,0x00,0x07,0xe0,0x03,0xe0,0x01,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x00,0x70,0x00,0x3c,0x00,0x3c,0x00,0x70,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x60,0xe0,0x70,0xe0,0x79,0xc0,0x3f,0x80,0x1f,0x80,0x1f,0xc0,0x3f,0xe0,0x79,0xe0,0x70,0x60,0x60,0xe0,0xcf,0xe0,0xcf,0xe0,0xcf,0x00,0xcc,0x00,0xcc,0x00,0xcc,0x00,0xcc,0xe0,0xff,0xe0,0xff,0xe0,0x7f,0x60,0x60,0x60,0x70,0x60,0x78,0x60,0x7c,0x60,0x7e,0x60,0x6f,0xe0,0x67,0xe0,0x63,0xe0,0x61,0xe0,0x60, diff --git a/radio/src/fonts/sqt5_fw/font_10x14_compressed.png b/radio/src/fonts/sqt5_fw/font_10x14_compressed.png new file mode 100644 index 0000000000000000000000000000000000000000..a8ff6a6f315b3b3f330036750d04ce46e23191a2 GIT binary patch literal 1157 zcmV;01bX|4P)e zSad^gZEa<4bO1wgWnpw>WFU8GbZ8()Nlj2!fese{00ZqwL_t(|+U;H2j_n`_J)QLb zf4S#rlE(4EWua)-O6FxpQ4tUjJJ<6(&p(172!bF8f=Gh<#6?}#RsFr^i@*Dn?IiSC zZF=o~e;@s39a}m-3q32JHT(6ZhnT+>l5rzwmTh``AJJ>=g=Af|zO{a%{r2v!RPMC< zrqMN|{8{D7qkocpL+d?ajTUl<*Ae>`DGMugD{_COa%a)Y74o;U3=jlC%))*0;-nc81U+fi!ZYsd z`DwGcwRW0_Ix=%Dja1R}W<%?wC0?MJ8P6I zy?V90IL&GhJhi=^*Yp_-;LZ*Nntxt7-8GXs!#TCsBgEH55Sgjb!ClLUA=c5eH`V#MwX}03!!vm7GRj zZ;l)^%{3*lhkZrtn=~-_njOh%4>Z9QVqVYl=rgFESJ@{xJ+mTUZ3JhDn!QoAWPU68 zx5^M{bDmqJd%3(kdCps&&+M|>8wDx*klWEBGfCTBB_V^PupX>qBSI;Y? z4ak0@;+4NFrFtm4WT~yz&@1WOvo=aX>-58Kg+P6Een-Yeq`sbHL6AG zMf87}$`DMn>a#L@^U*>ts{@f;e^GW%TkjjqW5oD1y^#DT!A!owE;dT@MTKa4&~hfN z2}Y>{{NoW+bOagw2xFDOM!)u#@@%JZQG7;@9kC7x%@yOWn%8Rn&D0c8#($xHO){_~%<(Sq}u>Yd~YrXxSnYg~T% zFdlwxoZdBm#eCz0A2oX(|Cj&$pNVI_Jomr+gg^HWeE8XH*iqQ<@N<8aiFe{T28I{w W6C^GAxAy^UXYh3Ob6Mw<&;$VafmR{_ literal 0 HcmV?d00001 diff --git a/radio/src/fonts/sqt5_fw/font_cz_04x06.lbm b/radio/src/fonts/sqt5_fw/font_cz_04x06.lbm new file mode 100644 index 000000000..15c586b31 --- /dev/null +++ b/radio/src/fonts/sqt5_fw/font_cz_04x06.lbm @@ -0,0 +1 @@ +0x3a,0x2a,0x2a,0x3e,0x01,0x3e,0x23,0x22,0x23,0x00,0x3e,0x2a,0x2a,0x2e,0x01,0x3e,0x2b,0x2a,0x2f,0x00,0x00,0x24,0x3c,0x22,0x01,0x1c,0x22,0x22,0x1d,0x00,0x3e,0x03,0x02,0x05,0x00,0x2e,0x2b,0x2a,0x3b,0x00,0x3e,0x20,0x20,0x3e,0x01,0x3c,0x23,0x23,0x3c,0x00,0x2e,0x28,0x28,0x3e,0x01,0x3c,0x12,0x12,0x3d,0x00,0x00,0x22,0x3e,0x22,0x01,0x3e,0x13,0x1e,0x31,0x00,0x00,0x0e,0x30,0x0e,0x01,0x22,0x33,0x2a,0x27,0x00,0x3e,0x2a,0x2a,0x22,0x01, diff --git a/radio/src/fonts/sqt5_fw/font_cz_04x06.png b/radio/src/fonts/sqt5_fw/font_cz_04x06.png new file mode 100644 index 0000000000000000000000000000000000000000..1f1bc61063f2778a1a2ae6bdf9b521b4e412157e GIT binary patch literal 215 zcmeAS@N?(olHy`uVBq!ia0vp^p+L;e$P6T%YbQSiQfvV}A+A9B|Ns9>Z_d99WHBar zySp%Su*!M>Ih+L^k;M!Q+`=Ht$S`Y;1W=H@#M9T6{VuzdsIv0Q%PWn5LgAh+jv*Y^ zlYc}>$8Y<3`u^{S;r0dv7ANO=p4pjuar=bkhhNvuj=rAmem8de_NK<)6W&~Fzv)+g z{q3}b6Z^iGzrO!Q>*lvlTnnl?H}hN0$;QIhQAT|o{Dm)X^44G8NgU(X#lNV=@dzJPo(avD-?o#yw(zRW)gf3g?iM{v@T@5%cB0000< KMNUMnLSTZymTH&) literal 0 HcmV?d00001 diff --git a/radio/src/fonts/sqt5_fw/font_cz_08x10.lbm b/radio/src/fonts/sqt5_fw/font_cz_08x10.lbm new file mode 100644 index 000000000..4b28f3ded --- /dev/null +++ b/radio/src/fonts/sqt5_fw/font_cz_08x10.lbm @@ -0,0 +1 @@ +0x90,0x07,0x90,0x07,0x90,0x04,0x94,0x04,0x93,0x04,0xf1,0x07,0xf0,0x07,0x00,0x00,0xf0,0x07,0xf1,0x07,0x13,0x04,0x16,0x04,0x13,0x04,0x11,0x04,0x10,0x04,0x00,0x00,0xf0,0x07,0xf0,0x07,0x90,0x04,0x94,0x04,0x93,0x04,0xf1,0x04,0xf0,0x04,0x00,0x00,0xf0,0x07,0xf1,0x07,0x93,0x04,0x96,0x04,0x93,0x04,0xf1,0x04,0xf0,0x04,0x00,0x00,0x10,0x04,0x10,0x04,0xf4,0x07,0xf3,0x07,0x01,0x04,0x00,0x04,0x00,0x00,0x00,0x00,0xe0,0x03,0xf0,0x07,0x10,0x04,0x14,0x04,0x13,0x04,0xf1,0x07,0xe0,0x03,0x00,0x00,0xf1,0x07,0xf3,0x07,0x16,0x00,0x13,0x00,0x11,0x00,0x30,0x00,0x30,0x00,0x00,0x00,0xf0,0x04,0xf1,0x04,0x93,0x04,0x96,0x04,0x93,0x04,0x91,0x07,0x90,0x07,0x00,0x00,0xf0,0x07,0xf0,0x07,0x00,0x04,0x04,0x04,0x03,0x04,0xf1,0x07,0xf0,0x07,0x00,0x00,0xf0,0x07,0xf0,0x07,0x02,0x04,0x05,0x04,0x05,0x04,0xf2,0x07,0xf0,0x07,0x00,0x00,0xf0,0x09,0xf0,0x09,0x00,0x09,0x04,0x09,0x03,0x09,0xf1,0x0f,0xf0,0x0f,0x00,0x00,0xf0,0x07,0xf8,0x07,0x98,0x00,0x9c,0x00,0x9b,0x00,0x99,0x00,0xf8,0x07,0xf0,0x07,0x00,0x00,0x08,0x04,0x08,0x04,0xfc,0x07,0xfb,0x07,0x09,0x04,0x08,0x04,0x00,0x00,0xf8,0x07,0xf9,0x07,0x8b,0x00,0x8e,0x00,0x8b,0x00,0xf9,0x00,0xf0,0x07,0x00,0x07,0xf8,0x00,0xf8,0x00,0x80,0x00,0x84,0x07,0x83,0x07,0x81,0x00,0xf8,0x00,0xf8,0x00,0x08,0x06,0x09,0x07,0x8b,0x05,0xce,0x04,0x6b,0x04,0x39,0x04,0x18,0x04,0x00,0x00,0xf8,0x07,0xf8,0x07,0x48,0x04,0x4c,0x04,0x4b,0x04,0x49,0x04,0x08,0x04,0x08,0x04, diff --git a/radio/src/fonts/sqt5_fw/font_cz_08x10.png b/radio/src/fonts/sqt5_fw/font_cz_08x10.png new file mode 100644 index 0000000000000000000000000000000000000000..056e38735fa6341f7633000a5f28b05d6f62f99f GIT binary patch literal 265 zcmeAS@N?(olHy`uVBq!ia0vp^9YD;($P6T#L(}gADYgKg5LY1m|NsA`H|O64vKW)R z-CYvL>4nJa0`PlBg3pY5H=O_PgxzqKtwYGyE0+g&ugiIEF}E zjy-SKcgR41^@9J?G}S42+*4v2_cGiovR>zKTy)c=tXwTCjTI}3rrtc2x-LOeT)`{3 zTQIT5$?Q;T`ZLdepBnaSm#0n6KmR8=h9mHp!-EyCg}<-<+PQvLpJDGrf##LpK7NaS z^Efm-cKWft3x(@nKQvlBb1DCS)&=wB+LoTtH=JWXpK<4{pPLFJg}J0Gu1<`8I6JHM zrq%1SC(hcxS9_z-f0b3>nLCG6Rrzu8Z31<(#f2uVp4M9+FXVkf@w$GE&&~GM%DM@5 u={l+JytV(_VcT-@$Hg9-yMGt8wY?J!*;nH-^@%CauMD29elF{r5}E)^H;)ql literal 0 HcmV?d00001 diff --git a/radio/src/fonts/sqt5_fw/font_de_04x06.lbm b/radio/src/fonts/sqt5_fw/font_de_04x06.lbm new file mode 100644 index 000000000..962a76588 --- /dev/null +++ b/radio/src/fonts/sqt5_fw/font_de_04x06.lbm @@ -0,0 +1 @@ +0x3d,0x0a,0x0a,0x3d,0x00,0x3a,0x2b,0x2a,0x3f,0x00,0x1d,0x22,0x22,0x1d,0x00,0x18,0x25,0x24,0x19,0x00,0x3d,0x20,0x20,0x3d,0x00,0x3d,0x20,0x20,0x3d,0x00,0x7e,0x05,0x25,0x1a,0x00, diff --git a/radio/src/fonts/sqt5_fw/font_de_04x06.png b/radio/src/fonts/sqt5_fw/font_de_04x06.png new file mode 100644 index 0000000000000000000000000000000000000000..644bed0b60d7617f155e61dae7f068963567b80f GIT binary patch literal 176 zcmeAS@N?(olHy`uVBq!ia0vp^%0SG{$P6TRXr);JDYgKg5LY1m|NsA`H|O64vKW)R z-CYbP0l+XkKRD&{8 literal 0 HcmV?d00001 diff --git a/radio/src/fonts/sqt5_fw/font_de_05x07.lbm b/radio/src/fonts/sqt5_fw/font_de_05x07.lbm new file mode 100644 index 000000000..363e4f48e --- /dev/null +++ b/radio/src/fonts/sqt5_fw/font_de_05x07.lbm @@ -0,0 +1 @@ +0x7c,0x13,0x12,0x13,0x7c,0x74,0x55,0x54,0x55,0x7c,0x3c,0x43,0x42,0x43,0x3c,0x38,0x45,0x44,0x45,0x38,0x3e,0x41,0x40,0x41,0x3e,0x7c,0x41,0x40,0x41,0x7c,0x7e,0x01,0x49,0x56,0x20, diff --git a/radio/src/fonts/sqt5_fw/font_de_05x07.png b/radio/src/fonts/sqt5_fw/font_de_05x07.png new file mode 100644 index 0000000000000000000000000000000000000000..6e6c1a0cfda134128f8a7a50b9b46e915b55827e GIT binary patch literal 181 zcmeAS@N?(olHy`uVBq!ia0vp^%0SG)$P6SsYp%QpQfvV}A+A9B|Ns9>Z_d99WHBar zySp%Su*!M>Ih+L^k;M!Q+`=Ht$S`Y;1W=H@#M9T6{Vs>Jh_F#Qx9SFm{7@=BF=o1U4muVhivIaRt)<|NmclbN*c*i!sUD z-G!lpRn`N@;VkfoEM{Qf76xHPhFNnYfP(BLp1!W^cR8d*40+4$`>h2EIe5A_hHzZ> z?KsGJz<`JOe6r}4IVU;lDzEGlS-v!Yvt&-j_S4H&uhx>B>13tL?c_cEg6;3ef1E4c h{E=4Z_d99WHBar zySp%Su*!M>Ih+L^k;M!Q+`=Ht$S`Y;1W=H@#M9T6{Vs>Js32F(->I{KLWQ0#jv*Y^ zlYj8D)=NBFdcG#iQopv3_wfJcpZ|yctG9D*Te$Ea`|oqc+JVo93VDV^*G-|Tc&izuSN}w#wTp}%#N|K fKeOj42xnx_TWw$1wSVV5pydpnu6{1-oD!M2j(YymzYu0Z<#|Nl#G&c6#}F(!Gt zyD)UH%6b4foCO|{#X!ZvAk4@xYmNj^kiEpy*OmP)hqMTr?%i$Y0)ax(o-U3d9M_X0 sULPoU&CvXZv8{)h=O&-Rm;Ve5{#xuyL^5u%0hKX$y85}Sb4q9e0PgN4g8%>k literal 0 HcmV?d00001 diff --git a/radio/src/fonts/sqt5_fw/font_es_05x07.lbm b/radio/src/fonts/sqt5_fw/font_es_05x07.lbm new file mode 100644 index 000000000..ade3235f7 --- /dev/null +++ b/radio/src/fonts/sqt5_fw/font_es_05x07.lbm @@ -0,0 +1 @@ +0x7c,0x06,0x05,0x06,0x79,0x78,0x0a,0x09,0x0a,0x71, diff --git a/radio/src/fonts/sqt5_fw/font_es_05x07.png b/radio/src/fonts/sqt5_fw/font_es_05x07.png new file mode 100644 index 0000000000000000000000000000000000000000..d23e8b850db15490e978904993dea309d8f1cb06 GIT binary patch literal 155 zcmeAS@N?(olHy`uVBq!ia0vp^AT|dhGm!jc^5-j%VhivIaRt)<|NmclbN*c*i!sUD z-G!lpRn`N@;VkfoEM{Qf76xHPhFNnYfP(BLp1!W^cR8d*L`5FQu%8ABNqf3DhHzX@ t-f``~hHH(D{~4ScnVk!nMgH0|FvR`lh~84|xe2I@!PC{xWt~$(69E5@DJ=j1 literal 0 HcmV?d00001 diff --git a/radio/src/fonts/sqt5_fw/font_es_08x10.lbm b/radio/src/fonts/sqt5_fw/font_es_08x10.lbm new file mode 100644 index 000000000..80e23388e --- /dev/null +++ b/radio/src/fonts/sqt5_fw/font_es_08x10.lbm @@ -0,0 +1 @@ +0xf8,0x07,0xfa,0x07,0x0b,0x00,0x09,0x00,0x0b,0x00,0x1a,0x00,0xf3,0x07,0xe1,0x07,0xf0,0x07,0xf4,0x07,0x16,0x00,0x12,0x00,0x16,0x00,0x34,0x00,0xe6,0x07,0xc2,0x07, diff --git a/radio/src/fonts/sqt5_fw/font_es_08x10.png b/radio/src/fonts/sqt5_fw/font_es_08x10.png new file mode 100644 index 0000000000000000000000000000000000000000..6f520ee2ab108951a97a58530bf1f74c8113e309 GIT binary patch literal 161 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~e$P6R{HP;^kQfvV}A+A9B|Ns9>Z_d99WHBar zySp%Su*!M>Ih+L^k;M!Q+`=Ht$S`Y;1W=H@#M9T6{Vs>Jh_Q+EnCCEcpMQ@me$2rrkxRtAUCcJYD@<);T3K0RXC= BEk^(V literal 0 HcmV?d00001 diff --git a/radio/src/fonts/sqt5_fw/font_es_10x14.lbm b/radio/src/fonts/sqt5_fw/font_es_10x14.lbm new file mode 100644 index 000000000..19065f688 --- /dev/null +++ b/radio/src/fonts/sqt5_fw/font_es_10x14.lbm @@ -0,0 +1 @@ +0xf4,0x7f,0xf6,0x7f,0xf3,0x7f,0x31,0x00,0x32,0x00,0x34,0x00,0x76,0x00,0xe3,0x7f,0xc1,0x7f,0x80,0x7f,0xe0,0x7f,0xe8,0x7f,0xec,0x7f,0x66,0x00,0x62,0x00,0x64,0x00,0x68,0x00,0xec,0x7f,0xe6,0x7f,0xc2,0x7f, diff --git a/radio/src/fonts/sqt5_fw/font_es_10x14.png b/radio/src/fonts/sqt5_fw/font_es_10x14.png new file mode 100644 index 0000000000000000000000000000000000000000..d66da44606b51bef5b2384ce86eda359b21c5623 GIT binary patch literal 174 zcmeAS@N?(olHy`uVBq!ia0vp^B0wy_$P6TPuAPklQfvV}A+A9B|Ns9>Z_d99WHBar zySp%Su*!M>Ih+L^k;M!Q+`=Ht$S`Y;1W=H@#M9T6{Vs>JsED3zXDdHYNYB&7F@)oK zvPJm+#>7+SnR%woS2OripLgKEkN?cfhZz~!B-z>6EWfes`SJfhKf{SS;l35B*Ls0E O89ZJ6T-G@yGywqF&M-j$ literal 0 HcmV?d00001 diff --git a/radio/src/fonts/sqt5_fw/font_fr_04x06.lbm b/radio/src/fonts/sqt5_fw/font_fr_04x06.lbm new file mode 100644 index 000000000..0009fbcec --- /dev/null +++ b/radio/src/fonts/sqt5_fw/font_fr_04x06.lbm @@ -0,0 +1 @@ +0x3e,0x2a,0x2b,0x2e,0x00,0x3e,0x2b,0x2a,0x2e,0x00,0x3a,0x2b,0x2a,0x3e,0x00,0x00,0x26,0x3d,0x22,0x00,0x1e,0x52,0x32,0x12,0x00, diff --git a/radio/src/fonts/sqt5_fw/font_fr_04x06.png b/radio/src/fonts/sqt5_fw/font_fr_04x06.png new file mode 100644 index 0000000000000000000000000000000000000000..3b5db5110cd19e96fc549a70b482259b925efec4 GIT binary patch literal 3570 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 s7^sJ-h+Xi$Jy9hAjZ_d99WHBar zySp%Su*!M>Ih+L^k;M!Q+`=Ht$S`Y;1W=H@#M9T6{Vs>Jh=kVk$tk)(Aw5qQ#}JO| z$rZor>X{GkegBb{ho?tgLZa*YtmcT@(h{rQ=Or*~N|BcM_y0f85cK~%V Nc)I$ztaD0e0s!LrF*yJL literal 0 HcmV?d00001 diff --git a/radio/src/fonts/sqt5_fw/font_fr_08x10.lbm b/radio/src/fonts/sqt5_fw/font_fr_08x10.lbm new file mode 100644 index 000000000..62285c702 --- /dev/null +++ b/radio/src/fonts/sqt5_fw/font_fr_08x10.lbm @@ -0,0 +1 @@ +0xf0,0x07,0xf0,0x07,0x94,0x04,0x96,0x04,0x93,0x04,0xf1,0x04,0xf0,0x04,0x00,0x00,0xf0,0x07,0xf0,0x07,0x91,0x04,0x93,0x04,0x96,0x04,0xf4,0x04,0xf0,0x04,0x00,0x00,0x90,0x07,0x90,0x07,0x91,0x04,0x93,0x04,0x96,0x04,0xf4,0x07,0xf0,0x07,0x00,0x00,0x14,0x04,0x16,0x04,0xf3,0x07,0xf6,0x07,0x04,0x04,0x00,0x04,0x00,0x00,0xf0,0x03,0xf0,0x03,0x10,0x0a,0x10,0x0e,0x10,0x06,0x10,0x02,0x10,0x02,0x00,0x00,0x00,0x00, diff --git a/radio/src/fonts/sqt5_fw/font_fr_08x10.png b/radio/src/fonts/sqt5_fw/font_fr_08x10.png new file mode 100644 index 0000000000000000000000000000000000000000..59ed95c85a539d76738a13cad90da8b167f70ad2 GIT binary patch literal 3597 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 literal 0 HcmV?d00001 diff --git a/radio/src/fonts/sqt5_fw/font_it_04x06.lbm b/radio/src/fonts/sqt5_fw/font_it_04x06.lbm new file mode 100644 index 000000000..5557a1b10 --- /dev/null +++ b/radio/src/fonts/sqt5_fw/font_it_04x06.lbm @@ -0,0 +1 @@ +0x3a,0x2b,0x2a,0x3e,0x00,0x3c,0x21,0x22,0x3c,0x00, diff --git a/radio/src/fonts/sqt5_fw/font_it_04x06.png b/radio/src/fonts/sqt5_fw/font_it_04x06.png new file mode 100644 index 0000000000000000000000000000000000000000..f1fd4826563540d182019561deec17971860d2b3 GIT binary patch literal 157 zcmeAS@N?(olHy`uVBq!ia0vp^AT~QAGmzv?@>2j(YymzYu0Z<#|Nl#G&c6#}F(!Gt zyD)UH%6b4foCO|{#X!ZvAk4@xYmNj^kiEpy*OmP)hqMT{Zid7L8K97?r;B3<$MxhJ t)eVjB84hQ&v*oe3<*>8yvA6waXK<5XD_MN-nH^9egQu&X%Q~loCIG@6B%S~O literal 0 HcmV?d00001 diff --git a/radio/src/fonts/sqt5_fw/font_it_05x07.lbm b/radio/src/fonts/sqt5_fw/font_it_05x07.lbm new file mode 100644 index 000000000..7e4ed004e --- /dev/null +++ b/radio/src/fonts/sqt5_fw/font_it_05x07.lbm @@ -0,0 +1 @@ +0x74,0x55,0x56,0x54,0x7c,0x7c,0x41,0x42,0x40,0x7c, diff --git a/radio/src/fonts/sqt5_fw/font_it_05x07.png b/radio/src/fonts/sqt5_fw/font_it_05x07.png new file mode 100644 index 0000000000000000000000000000000000000000..ebdd099527389868375e87da19ebacb55dfa4226 GIT binary patch literal 157 zcmeAS@N?(olHy`uVBq!ia0vp^AT|dhGm!jc^5-j%VhivIaRt)<|NmclbN*c*i!sUD z-G!lpRn`N@;VkfoEM{Qf76xHPhFNnYfP(BLp1!W^cR8d*q!{Yt&Q}73WIbIRLpZJ{ u->7bQc#o0o8C%Z_d99WHBar zySp%Su*!M>Ih+L^k;M!Q+`=Ht$S`Y;1W=H@#M9T6{Vs>Jh=q7mJZ_d99WHBar zySp%Su*!M>Ih+L^k;M!Q+`=Ht$S`Y;1W=H@#M9T6{Vs>JsI>awvx+G|A#G0=#}JO| z$v^)8XFmLSzPyCp|DOjwe2!;i?l^zo9>cN!3nY$BZ%&e6SjEb)(NR3GID8W$P#c4% LtDnm{r-UW|5o|I4 literal 0 HcmV?d00001 diff --git a/radio/src/fonts/sqt5_fw/font_pl_04x06.lbm b/radio/src/fonts/sqt5_fw/font_pl_04x06.lbm new file mode 100644 index 000000000..d885a4da3 --- /dev/null +++ b/radio/src/fonts/sqt5_fw/font_pl_04x06.lbm @@ -0,0 +1 @@ +0x3a,0x2a,0x2a,0x7e,0x40,0x3e,0x22,0x22,0x22,0x01,0x3e,0x2a,0x2a,0x6e,0x40,0x00,0x29,0x3f,0x24,0x00,0x3e,0x02,0x03,0x3d,0x00,0x1c,0x22,0x23,0x1d,0x00,0x2e,0x2a,0x2a,0x3b,0x00,0x24,0x35,0x2d,0x24,0x00,0x24,0x34,0x2e,0x25,0x00,0x3e,0x09,0x69,0x5e,0x00,0x1c,0x22,0x22,0x23,0x00,0x3f,0x25,0x65,0x41,0x00,0x3f,0x28,0x24,0x24,0x00,0x3e,0x02,0x03,0x3d,0x00,0x1c,0x22,0x22,0x1d,0x00,0x2e,0x2a,0x2b,0x3a,0x00,0x22,0x33,0x2a,0x26,0x00,0x22,0x32,0x2b,0x26,0x00, diff --git a/radio/src/fonts/sqt5_fw/font_pl_04x06.png b/radio/src/fonts/sqt5_fw/font_pl_04x06.png new file mode 100644 index 0000000000000000000000000000000000000000..e25681d8c2906c6c13237cc7abd9ef898a6572a4 GIT binary patch literal 175 zcmeAS@N?(olHy`uVBq!ia0vp^Q9#Vj$P6Smm7T}{QfvV}A+A9B|Ns9>Z_d99WTkkz zIEHXsPyVt0{@R>qK@QnKO^{ tc+PMNg>@+e&-?#}pXJ;0#v}K68M^n`UT$12JOk(k22WQ%mvv4FO#m#xROJ8w literal 0 HcmV?d00001 diff --git a/radio/src/fonts/sqt5_fw/font_pl_08x10.lbm b/radio/src/fonts/sqt5_fw/font_pl_08x10.lbm new file mode 100644 index 000000000..56b4f2a54 --- /dev/null +++ b/radio/src/fonts/sqt5_fw/font_pl_08x10.lbm @@ -0,0 +1 @@ +0x90,0x07,0x90,0x07,0x90,0x04,0x90,0x04,0x90,0x04,0xf0,0x0f,0xf0,0x0b,0x00,0x00,0xf0,0x07,0xf0,0x07,0x10,0x04,0x14,0x04,0x13,0x04,0x11,0x04,0x10,0x04,0x00,0x00,0xf0,0x07,0xf0,0x07,0x90,0x04,0x90,0x04,0x90,0x04,0xf0,0x0c,0xf0,0x08,0x00,0x00,0x40,0x04,0x42,0x04,0xfe,0x07,0xfe,0x07,0x20,0x04,0x20,0x04,0x00,0x00,0x00,0x00,0xf0,0x07,0xf0,0x07,0x10,0x00,0x14,0x00,0x13,0x00,0xf1,0x07,0xe0,0x07,0x00,0x00,0xe0,0x03,0xf0,0x07,0x10,0x04,0x14,0x04,0x13,0x04,0xf1,0x07,0xe0,0x03,0x00,0x00,0xf0,0x04,0xf0,0x04,0x90,0x04,0x94,0x04,0x93,0x04,0x91,0x07,0x90,0x07,0x00,0x00,0x10,0x04,0x10,0x06,0x16,0x07,0x96,0x05,0xd0,0x04,0x70,0x04,0x30,0x04,0x00,0x00,0x10,0x04,0x10,0x06,0x10,0x07,0x94,0x05,0xd3,0x04,0x71,0x04,0x30,0x04,0x00,0x00,0xfc,0x07,0xfe,0x07,0x86,0x00,0x86,0x00,0x86,0x00,0x86,0x00,0xfe,0x0f,0xfc,0x0b,0xf8,0x03,0xfc,0x07,0x04,0x04,0x04,0x04,0x06,0x04,0x05,0x04,0x04,0x04,0x00,0x00,0x00,0x00,0xfe,0x07,0xfe,0x07,0x22,0x04,0x22,0x04,0x22,0x04,0x22,0x0c,0x02,0x08,0x80,0x00,0xfe,0x07,0xfe,0x07,0x40,0x04,0x40,0x04,0x20,0x04,0x20,0x04,0x00,0x04,0xfc,0x07,0xfc,0x07,0x04,0x00,0x04,0x00,0x07,0x00,0x0d,0x00,0xf8,0x07,0xf0,0x07,0xf8,0x03,0xfc,0x07,0x04,0x04,0x04,0x04,0x04,0x04,0x07,0x04,0xfd,0x07,0xf8,0x03,0x30,0x02,0x78,0x06,0x48,0x04,0x4c,0x04,0x4b,0x04,0x49,0x04,0xd8,0x07,0x90,0x03,0x04,0x06,0x04,0x07,0x84,0x05,0xc7,0x04,0x67,0x04,0x34,0x04,0x1c,0x04,0x0c,0x04,0x04,0x06,0x04,0x07,0x84,0x05,0xc4,0x04,0x64,0x04,0x37,0x04,0x1d,0x04,0x0c,0x04, diff --git a/radio/src/fonts/sqt5_fw/font_pl_08x10.png b/radio/src/fonts/sqt5_fw/font_pl_08x10.png new file mode 100644 index 0000000000000000000000000000000000000000..bbe2fc7f139bd0e5d1e6ac30be339aac7e3f0dba GIT binary patch literal 237 zcmeAS@N?(olHy`uVBq!ia0vp^6M&e9kr_yC*I9NLNU;U@gt!9f|Ns9ly*d9bkhRFu z#W95Ax@q5DUS>m%){Qm}ZYN}>bws=k=$f)JxN-*10SUd>0ELoi9OcVxRO;*$D+Ht# zu8RDY6VvV-vFEH$Pwwk&w{Iw>otP7>R`7nRI)h8g5yd68inV&A12bat({Qa@vB*OstNi|gEDlrD4#?L1MM{q>)_W!&@51=FH#fBblG kk7Dt!PaiIat?3E2KX9SWd5v;O6wtK{p00i_>zopr0H0f7%>V!Z literal 0 HcmV?d00001 diff --git a/radio/src/fonts/sqt5_fw/font_pl_10x14.lbm b/radio/src/fonts/sqt5_fw/font_pl_10x14.lbm new file mode 100644 index 000000000..0846467d2 --- /dev/null +++ b/radio/src/fonts/sqt5_fw/font_pl_10x14.lbm @@ -0,0 +1 @@ +0x60,0x7e,0x60,0x7e,0x60,0x7e,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0xff,0xe0,0xbf,0xe0,0xbf,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x60,0x68,0x60,0x6c,0x60,0x67,0x60,0x63,0x60,0x61,0x60,0x60,0x60,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0xe7,0xe0,0x87,0xe0,0x87,0x00,0x00,0x00,0x63,0x06,0x63,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0xc0,0x60,0xc0,0x60,0x00,0x00,0x00,0x00,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x00,0x68,0x00,0x6c,0x00,0x67,0x00,0xe3,0x7f,0xe1,0x7f,0xc0,0x7f,0xc0,0x3f,0xe0,0x7f,0xe0,0x7f,0x60,0x60,0x68,0x60,0x6c,0x60,0x67,0x60,0xe3,0x7f,0xe1,0x7f,0xc0,0x3f,0xe0,0x67,0xe0,0x67,0xe0,0x67,0x60,0x66,0x68,0x66,0x6c,0x66,0x67,0x66,0x63,0x7e,0x61,0x7e,0x60,0x7e,0x60,0x60,0x60,0x70,0x60,0x78,0x66,0x7c,0x66,0x6e,0x60,0x67,0xe0,0x63,0xe0,0x61,0xe0,0x60,0x60,0x60,0x60,0x60,0x60,0x70,0x60,0x78,0x60,0x7c,0x68,0x6e,0x6c,0x67,0xe7,0x63,0xe3,0x61,0xe1,0x60,0x60,0x60,0xfc,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0xfe,0x7f,0xfe,0xbf,0xfc,0xbf,0xf8,0x3f,0xfc,0x7f,0xfc,0x7f,0x0c,0x60,0x0c,0x60,0x0f,0x60,0x0f,0x60,0x0d,0x60,0x0c,0x60,0x0c,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x06,0xa0,0x06,0x80,0x00,0x06,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x80,0x61,0x80,0x61,0xc0,0x60,0xc0,0x60,0x60,0x60,0x60,0x60,0xf8,0x7f,0xf8,0x7f,0xf8,0x7f,0x18,0x00,0x18,0x00,0x1c,0x00,0x3f,0x00,0xf3,0x7f,0xe1,0x7f,0xc0,0x7f,0xf0,0x3f,0xf8,0x7f,0xf8,0x7f,0x18,0x60,0x1c,0x60,0x1f,0x60,0x1b,0x60,0xf9,0x7f,0xf8,0x7f,0xf0,0x3f,0xf0,0x39,0xf8,0x7b,0xf8,0x7b,0x18,0x63,0x1c,0x63,0x1f,0x63,0x1b,0x63,0x79,0x7f,0x78,0x7f,0x70,0x3e,0x18,0x70,0x18,0x78,0x18,0x7c,0x18,0x6e,0x1b,0x67,0x9b,0x63,0xd8,0x61,0xf8,0x60,0x78,0x60,0x38,0x60,0x18,0x70,0x18,0x78,0x18,0x7c,0x18,0x6e,0x18,0x67,0x9c,0x63,0xdf,0x61,0xfb,0x60,0x79,0x60,0x38,0x60, diff --git a/radio/src/fonts/sqt5_fw/font_pl_10x14.png b/radio/src/fonts/sqt5_fw/font_pl_10x14.png new file mode 100644 index 0000000000000000000000000000000000000000..cdd6a18b7aefcdaa25f577a052810fc29e81bb0a GIT binary patch literal 333 zcmV-T0kZyyP)JjwE(Gmj*HVauQ8^VtMcK+u)r0T#TpenUZkLLQ*TK1|goS*ZSdLrsVp z`7P?czYR}BHfl8@UI_uP8y~>t3~4(wj~Q{e;!&34+Q44ZZ-k|{f@hgrzD!M2=J4*m zpZr6%QxkMSQLer#Ws5ajvLK9WC%wly`J5;B`@r6@XKT3f>E(gl2)CwtbJxz~_a(Wo z$*n)#?`~bFlq=Y+uiVim*J-T(_gUFLuiTRQdlu!rPeYlJ=6uzV{PlR(7YQTZ@Ba`L fJkE^ivyLo3E)KrC*Pz#100000NkvXXu0mjf{6Lq? literal 0 HcmV?d00001 diff --git a/radio/src/fonts/sqt5_fw/font_pt_04x06.lbm b/radio/src/fonts/sqt5_fw/font_pt_04x06.lbm new file mode 100644 index 000000000..bb2db6d13 --- /dev/null +++ b/radio/src/fonts/sqt5_fw/font_pt_04x06.lbm @@ -0,0 +1 @@ +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, diff --git a/radio/src/fonts/sqt5_fw/font_pt_04x06.png b/radio/src/fonts/sqt5_fw/font_pt_04x06.png new file mode 100644 index 0000000000000000000000000000000000000000..b3bc84800816a5ce210810e5e8f9b114886dea1b GIT binary patch literal 130 zcmeAS@N?(olHy`uVBq!ia0vp^6+q0+$P6TZ-ji+xQfvV}A+A9B|Ns9>Z_d99WN{XF zL>4nJa0`PlBg3pY5H=O_PcD{oYKM)Ice5FA%0I6#}JO|$v^tJBr?vhGdwz! VF{3wVxg1c6!PC{xWt~$(698T_AX)$b literal 0 HcmV?d00001 diff --git a/radio/src/fonts/sqt5_fw/font_pt_05x07.lbm b/radio/src/fonts/sqt5_fw/font_pt_05x07.lbm new file mode 100644 index 000000000..19aac799d --- /dev/null +++ b/radio/src/fonts/sqt5_fw/font_pt_05x07.lbm @@ -0,0 +1 @@ +0x78,0x14,0x16,0x15,0x78,0x74,0x54,0x56,0x55,0x7c,0x78,0x16,0x15,0x16,0x78,0x74,0x56,0x55,0x56,0x7c,0x7a,0x15,0x16,0x15,0x78,0x74,0x56,0x55,0x56,0x7d,0x78,0x15,0x16,0x14,0x78,0x74,0x55,0x56,0x54,0x7c,0x1c,0xa2,0x62,0x22,0x22,0x3c,0xa4,0x64,0x24,0x24,0x7c,0x54,0x56,0x55,0x44,0x7c,0x54,0x56,0x55,0x5c,0x7c,0x56,0x55,0x56,0x44,0x7c,0x56,0x55,0x56,0x5c,0x00,0x44,0x7e,0x45,0x00,0x00,0x48,0x7a,0x41,0x00,0x3c,0x42,0x42,0x43,0x3c,0x38,0x44,0x46,0x45,0x38,0x3c,0x42,0x43,0x42,0x3c,0x38,0x44,0x46,0x44,0x38,0x3c,0x43,0x42,0x43,0x3c,0x38,0x46,0x44,0x46,0x38,0x3c,0x40,0x42,0x41,0x3c,0x78,0x40,0x44,0x42,0x78, diff --git a/radio/src/fonts/sqt5_fw/font_pt_05x07.png b/radio/src/fonts/sqt5_fw/font_pt_05x07.png new file mode 100644 index 0000000000000000000000000000000000000000..d973c436b99b4021cdae8db4c5c1978b804aa2e2 GIT binary patch literal 244 zcmeAS@N?(olHy`uVBq!ia0vp^6+q0v$P6MoRt5kmwg8_HS0MfW|No^o=iddg7?Zr+ zT^Kr8Wj%l#&H|6fVg?3oVGw3ym^DWND9B#o>FdgVmqS`aUg{tBAvd5s0 ziuir6uYUi(|NXxEzxVyQ{{Jt}_qg`B^?CpIy{;;~|5)~Vwxrb*i&-LC5)w1scqbi= z%{QKMzBaCM{jYnU?;br`JTH1)GDGt#XP&cH1?*f%Y?ay85}Sb4q9e0KfoR5&!@I literal 0 HcmV?d00001 diff --git a/radio/src/fonts/sqt5_fw/font_pt_08x10.lbm b/radio/src/fonts/sqt5_fw/font_pt_08x10.lbm new file mode 100644 index 000000000..7971cf6a9 --- /dev/null +++ b/radio/src/fonts/sqt5_fw/font_pt_08x10.lbm @@ -0,0 +1 @@ +0xf0,0x07,0xf8,0x07,0x88,0x00,0x8c,0x00,0x8b,0x00,0x89,0x00,0xf8,0x07,0xf0,0x07,0x90,0x07,0x90,0x07,0x90,0x04,0x90,0x04,0x98,0x04,0xf6,0x07,0xf2,0x07,0x00,0x00,0xf0,0x07,0xfa,0x07,0x8b,0x00,0x89,0x00,0x89,0x00,0x8b,0x00,0xfa,0x07,0xf0,0x07,0x90,0x07,0x94,0x07,0x96,0x04,0x93,0x04,0x96,0x04,0xf4,0x07,0xf0,0x07,0x00,0x00,0xf0,0x07,0xfa,0x07,0x89,0x00,0x89,0x00,0x8b,0x00,0x8a,0x00,0xfa,0x07,0xf1,0x07,0x90,0x07,0x90,0x07,0x94,0x04,0x92,0x04,0x96,0x04,0xf4,0x07,0xf2,0x07,0x00,0x00,0xf0,0x07,0xf8,0x07,0x89,0x00,0x8b,0x00,0x8c,0x00,0x88,0x00,0xf8,0x07,0xf0,0x07,0x90,0x07,0x90,0x07,0x92,0x04,0x96,0x04,0x98,0x04,0xf0,0x07,0xf0,0x07,0x00,0x00,0xf8,0x01,0xfc,0x03,0x04,0x0a,0x04,0x0e,0x04,0x06,0x04,0x02,0x04,0x02,0x04,0x02,0xf8,0x03,0xf8,0x03,0x08,0x0a,0x08,0x0e,0x08,0x06,0x08,0x02,0x08,0x02,0x00,0x00,0xf8,0x07,0xf8,0x07,0x48,0x04,0x4c,0x04,0x4b,0x04,0x49,0x04,0x08,0x04,0x00,0x00,0xf0,0x07,0xf0,0x07,0x90,0x04,0x9c,0x04,0x96,0x04,0xf2,0x04,0xf0,0x04,0x00,0x00,0xf8,0x07,0xfa,0x07,0x4b,0x04,0x49,0x04,0x49,0x04,0x4b,0x04,0x0a,0x04,0x00,0x00,0xf0,0x07,0xf4,0x07,0x96,0x04,0x93,0x04,0x96,0x04,0xf4,0x04,0xf0,0x04,0x00,0x00,0x00,0x00,0x08,0x04,0x08,0x04,0xfc,0x07,0xfb,0x07,0x09,0x04,0x08,0x04,0x00,0x00,0x00,0x00,0x10,0x04,0x10,0x04,0xf4,0x07,0xf3,0x07,0x01,0x04,0x00,0x04,0x00,0x00,0xf0,0x03,0xf8,0x07,0x08,0x04,0x08,0x04,0x0c,0x04,0x0b,0x04,0xf9,0x07,0xf0,0x03,0xe0,0x03,0xf0,0x07,0x10,0x04,0x18,0x04,0x16,0x04,0xf2,0x07,0xe0,0x03,0x00,0x00,0xf0,0x03,0xfa,0x07,0x0b,0x04,0x09,0x04,0x09,0x04,0x0b,0x04,0xfa,0x07,0xf0,0x03,0xe0,0x03,0xf4,0x07,0x16,0x04,0x13,0x04,0x16,0x04,0xf4,0x07,0xe0,0x03,0x00,0x00,0xf2,0x03,0xf9,0x07,0x09,0x04,0x0b,0x04,0x0a,0x04,0x0a,0x04,0xf9,0x07,0xf0,0x03,0xe0,0x03,0xf4,0x07,0x12,0x04,0x16,0x04,0x14,0x04,0xf2,0x07,0xe0,0x03,0x00,0x00,0xf8,0x03,0xf8,0x07,0x00,0x04,0x04,0x04,0x03,0x04,0x01,0x04,0xf8,0x07,0xf8,0x03,0xf0,0x07,0xf0,0x07,0x00,0x04,0x04,0x04,0x03,0x04,0xf1,0x07,0xf0,0x07,0x00,0x00, diff --git a/radio/src/fonts/sqt5_fw/font_pt_08x10.png b/radio/src/fonts/sqt5_fw/font_pt_08x10.png new file mode 100644 index 0000000000000000000000000000000000000000..5b833f108ddcb33ea2bf74f3868a2e904496954a GIT binary patch literal 289 zcmeAS@N?(olHy`uVBq!ia0vp^2Y{G|kr_zxStxV^DYgKg5LY1m|NsA`H|O64vKW)R z-CY66N*Hou4|7dbMu?A3=wQ#U;CfAKSXOZ?I!(FVdQ&MBb@06wN|8vpZ_d99WHBar zySp%Su*!M>Ih+L^k;M!Q+`=Ht$S`Y;1W=H@#M9T6{Vs>JsIHzdFUMA(&~Hx{#}J9j zwf!6Y4jTxx>2s}`?jh2L)jgELyreg8BKm%IxqT%UK&)!Sv^vFc;J+nX(d!>{vRpQP8)u5%(a z?7{A9=ChKxUg@9MwB07rs`Jt1$JZMIm+y`e3zS)#y=HQxafQX)Q%2J(b<#>-ee^EB zY+ohpCoFo=@$J5Ci?>@d&ps){zU9{H>)l(E-Rs^Lygu4{?V0=P(~~_9SSTIZ|B-XG XZ_d99WHBar zySp%Su*!M>Ih+L^k;M!Q+`=Ht$S`Y;1W=H@#M9T6{Vs>Jh`RE&iQl#Yh4egK978y+ zC%-s5ZP%d<|LXt9v$3UiD)ZcbZnHfhVM5}D1P!*$Q|9e9_ye?vpTRURA0wtkoIAy_&M2Dg1JBA1;l1;o9pMZJI@>vQr_|J&Op}zD(wG&#m3?ZT k8UOO%t@gM{h4pip=f)|o4zP*32Q-es)78&qol`;+0RQbd{{R30 literal 0 HcmV?d00001 diff --git a/radio/src/fonts/sqt5_fw/font_se_10x14.lbm b/radio/src/fonts/sqt5_fw/font_se_10x14.lbm new file mode 100644 index 000000000..e1fa337cc --- /dev/null +++ b/radio/src/fonts/sqt5_fw/font_se_10x14.lbm @@ -0,0 +1 @@ +0x60,0x7e,0x60,0x7e,0x60,0x7e,0x64,0x66,0x6a,0x66,0x6a,0x66,0x64,0x66,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x7e,0x60,0x7e,0x6c,0x7e,0x6c,0x66,0x60,0x66,0x60,0x66,0x6c,0x66,0xec,0x7f,0xe0,0x7f,0xe0,0x7f,0xc0,0x3f,0xe0,0x7f,0xec,0x7f,0x6c,0x60,0x60,0x60,0x60,0x60,0x6c,0x60,0xec,0x7f,0xe0,0x7f,0xc0,0x3f,0xf0,0x7f,0xf8,0x7f,0xf8,0x7f,0x1a,0x06,0x1d,0x06,0x1d,0x06,0x1a,0x06,0xf8,0x7f,0xf8,0x7f,0xf0,0x7f,0xf0,0x7f,0xfb,0x7f,0xfb,0x7f,0x18,0x06,0x18,0x06,0x18,0x06,0x18,0x06,0xfb,0x7f,0xfb,0x7f,0xf0,0x7f,0xf0,0x3f,0xfb,0x7f,0xfb,0x7f,0x18,0x60,0x18,0x60,0x18,0x60,0x18,0x60,0xfb,0x7f,0xfb,0x7f,0xf0,0x3f, diff --git a/radio/src/fonts/sqt5_fw/font_se_10x14.png b/radio/src/fonts/sqt5_fw/font_se_10x14.png new file mode 100644 index 0000000000000000000000000000000000000000..dbd4d48d4f7bdc59fed88763ea93066dc09d4534 GIT binary patch literal 214 zcmeAS@N?(olHy`uVBq!ia0vp^Hb5-E$P6S4V)|-;6kC8#h%1o(|NsBeoAd7iS&T{E z?k)@+tg;?J4rhT!WHAE+w=f7ZGR&GI0Tg5}@$_|Nzsn&lYR0tU@%l4Bp)gMu#}JO| z$v^m6oFVdQ&MBb@ E09VyT8vp0^^Wy!4%+niL8G3w!xHl+Vc~)+#&MuvBlglo~ z>-k+ltE}%o7AUW8V!7BS#*b!978y+C-3Z_d99WN{XF zL>4nJa0`PlBg3pY5H=O_PcD{+@gZnssFwMh4egK978y+C-3c8#($xHO){_~%<(Sq}u>Yd~YrXxSnYg~T% zFdlwxoZdBm#eCz0A2oX(|Cj&$pNVI_Jomr+gg^HWeE8XH*iqQ<@N<8aiFe{T28I{w W6C^GAxAy^UXYh3Ob6Mw<&;$VafmR{_ literal 0 HcmV?d00001 diff --git a/radio/src/fonts/sqt5_pw/font_pl_04x06.lbm b/radio/src/fonts/sqt5_pw/font_pl_04x06.lbm new file mode 100644 index 000000000..d885a4da3 --- /dev/null +++ b/radio/src/fonts/sqt5_pw/font_pl_04x06.lbm @@ -0,0 +1 @@ +0x3a,0x2a,0x2a,0x7e,0x40,0x3e,0x22,0x22,0x22,0x01,0x3e,0x2a,0x2a,0x6e,0x40,0x00,0x29,0x3f,0x24,0x00,0x3e,0x02,0x03,0x3d,0x00,0x1c,0x22,0x23,0x1d,0x00,0x2e,0x2a,0x2a,0x3b,0x00,0x24,0x35,0x2d,0x24,0x00,0x24,0x34,0x2e,0x25,0x00,0x3e,0x09,0x69,0x5e,0x00,0x1c,0x22,0x22,0x23,0x00,0x3f,0x25,0x65,0x41,0x00,0x3f,0x28,0x24,0x24,0x00,0x3e,0x02,0x03,0x3d,0x00,0x1c,0x22,0x22,0x1d,0x00,0x2e,0x2a,0x2b,0x3a,0x00,0x22,0x33,0x2a,0x26,0x00,0x22,0x32,0x2b,0x26,0x00, diff --git a/radio/src/fonts/sqt5_pw/font_pl_04x06.png b/radio/src/fonts/sqt5_pw/font_pl_04x06.png new file mode 100644 index 0000000000000000000000000000000000000000..e25681d8c2906c6c13237cc7abd9ef898a6572a4 GIT binary patch literal 175 zcmeAS@N?(olHy`uVBq!ia0vp^Q9#Vj$P6Smm7T}{QfvV}A+A9B|Ns9>Z_d99WTkkz zIEHXsPyVt0{@R>qK@QnKO^{ tc+PMNg>@+e&-?#}pXJ;0#v}K68M^n`UT$12JOk(k22WQ%mvv4FO#m#xROJ8w literal 0 HcmV?d00001 diff --git a/radio/src/fonts/sqt5_pw/font_pl_08x10.lbm b/radio/src/fonts/sqt5_pw/font_pl_08x10.lbm new file mode 100644 index 000000000..56b4f2a54 --- /dev/null +++ b/radio/src/fonts/sqt5_pw/font_pl_08x10.lbm @@ -0,0 +1 @@ +0x90,0x07,0x90,0x07,0x90,0x04,0x90,0x04,0x90,0x04,0xf0,0x0f,0xf0,0x0b,0x00,0x00,0xf0,0x07,0xf0,0x07,0x10,0x04,0x14,0x04,0x13,0x04,0x11,0x04,0x10,0x04,0x00,0x00,0xf0,0x07,0xf0,0x07,0x90,0x04,0x90,0x04,0x90,0x04,0xf0,0x0c,0xf0,0x08,0x00,0x00,0x40,0x04,0x42,0x04,0xfe,0x07,0xfe,0x07,0x20,0x04,0x20,0x04,0x00,0x00,0x00,0x00,0xf0,0x07,0xf0,0x07,0x10,0x00,0x14,0x00,0x13,0x00,0xf1,0x07,0xe0,0x07,0x00,0x00,0xe0,0x03,0xf0,0x07,0x10,0x04,0x14,0x04,0x13,0x04,0xf1,0x07,0xe0,0x03,0x00,0x00,0xf0,0x04,0xf0,0x04,0x90,0x04,0x94,0x04,0x93,0x04,0x91,0x07,0x90,0x07,0x00,0x00,0x10,0x04,0x10,0x06,0x16,0x07,0x96,0x05,0xd0,0x04,0x70,0x04,0x30,0x04,0x00,0x00,0x10,0x04,0x10,0x06,0x10,0x07,0x94,0x05,0xd3,0x04,0x71,0x04,0x30,0x04,0x00,0x00,0xfc,0x07,0xfe,0x07,0x86,0x00,0x86,0x00,0x86,0x00,0x86,0x00,0xfe,0x0f,0xfc,0x0b,0xf8,0x03,0xfc,0x07,0x04,0x04,0x04,0x04,0x06,0x04,0x05,0x04,0x04,0x04,0x00,0x00,0x00,0x00,0xfe,0x07,0xfe,0x07,0x22,0x04,0x22,0x04,0x22,0x04,0x22,0x0c,0x02,0x08,0x80,0x00,0xfe,0x07,0xfe,0x07,0x40,0x04,0x40,0x04,0x20,0x04,0x20,0x04,0x00,0x04,0xfc,0x07,0xfc,0x07,0x04,0x00,0x04,0x00,0x07,0x00,0x0d,0x00,0xf8,0x07,0xf0,0x07,0xf8,0x03,0xfc,0x07,0x04,0x04,0x04,0x04,0x04,0x04,0x07,0x04,0xfd,0x07,0xf8,0x03,0x30,0x02,0x78,0x06,0x48,0x04,0x4c,0x04,0x4b,0x04,0x49,0x04,0xd8,0x07,0x90,0x03,0x04,0x06,0x04,0x07,0x84,0x05,0xc7,0x04,0x67,0x04,0x34,0x04,0x1c,0x04,0x0c,0x04,0x04,0x06,0x04,0x07,0x84,0x05,0xc4,0x04,0x64,0x04,0x37,0x04,0x1d,0x04,0x0c,0x04, diff --git a/radio/src/fonts/sqt5_pw/font_pl_08x10.png b/radio/src/fonts/sqt5_pw/font_pl_08x10.png new file mode 100644 index 0000000000000000000000000000000000000000..bbe2fc7f139bd0e5d1e6ac30be339aac7e3f0dba GIT binary patch literal 237 zcmeAS@N?(olHy`uVBq!ia0vp^6M&e9kr_yC*I9NLNU;U@gt!9f|Ns9ly*d9bkhRFu z#W95Ax@q5DUS>m%){Qm}ZYN}>bws=k=$f)JxN-*10SUd>0ELoi9OcVxRO;*$D+Ht# zu8RDY6VvV-vFEH$Pwwk&w{Iw>otP7>R`7nRI)h8g5yd68inV&A12bat({Qa@vB*OstNi|gEDlrD4#?L1MM{q>)_W!&@51=FH#fBblG kk7Dt!PaiIat?3E2KX9SWd5v;O6wtK{p00i_>zopr0H0f7%>V!Z literal 0 HcmV?d00001 diff --git a/radio/src/fonts/sqt5_pw/font_pl_10x14.lbm b/radio/src/fonts/sqt5_pw/font_pl_10x14.lbm new file mode 100644 index 000000000..0846467d2 --- /dev/null +++ b/radio/src/fonts/sqt5_pw/font_pl_10x14.lbm @@ -0,0 +1 @@ +0x60,0x7e,0x60,0x7e,0x60,0x7e,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0xff,0xe0,0xbf,0xe0,0xbf,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x60,0x68,0x60,0x6c,0x60,0x67,0x60,0x63,0x60,0x61,0x60,0x60,0x60,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0xe7,0xe0,0x87,0xe0,0x87,0x00,0x00,0x00,0x63,0x06,0x63,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0xc0,0x60,0xc0,0x60,0x00,0x00,0x00,0x00,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x00,0x68,0x00,0x6c,0x00,0x67,0x00,0xe3,0x7f,0xe1,0x7f,0xc0,0x7f,0xc0,0x3f,0xe0,0x7f,0xe0,0x7f,0x60,0x60,0x68,0x60,0x6c,0x60,0x67,0x60,0xe3,0x7f,0xe1,0x7f,0xc0,0x3f,0xe0,0x67,0xe0,0x67,0xe0,0x67,0x60,0x66,0x68,0x66,0x6c,0x66,0x67,0x66,0x63,0x7e,0x61,0x7e,0x60,0x7e,0x60,0x60,0x60,0x70,0x60,0x78,0x66,0x7c,0x66,0x6e,0x60,0x67,0xe0,0x63,0xe0,0x61,0xe0,0x60,0x60,0x60,0x60,0x60,0x60,0x70,0x60,0x78,0x60,0x7c,0x68,0x6e,0x6c,0x67,0xe7,0x63,0xe3,0x61,0xe1,0x60,0x60,0x60,0xfc,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0xfe,0x7f,0xfe,0xbf,0xfc,0xbf,0xf8,0x3f,0xfc,0x7f,0xfc,0x7f,0x0c,0x60,0x0c,0x60,0x0f,0x60,0x0f,0x60,0x0d,0x60,0x0c,0x60,0x0c,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x06,0xa0,0x06,0x80,0x00,0x06,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x80,0x61,0x80,0x61,0xc0,0x60,0xc0,0x60,0x60,0x60,0x60,0x60,0xf8,0x7f,0xf8,0x7f,0xf8,0x7f,0x18,0x00,0x18,0x00,0x1c,0x00,0x3f,0x00,0xf3,0x7f,0xe1,0x7f,0xc0,0x7f,0xf0,0x3f,0xf8,0x7f,0xf8,0x7f,0x18,0x60,0x1c,0x60,0x1f,0x60,0x1b,0x60,0xf9,0x7f,0xf8,0x7f,0xf0,0x3f,0xf0,0x39,0xf8,0x7b,0xf8,0x7b,0x18,0x63,0x1c,0x63,0x1f,0x63,0x1b,0x63,0x79,0x7f,0x78,0x7f,0x70,0x3e,0x18,0x70,0x18,0x78,0x18,0x7c,0x18,0x6e,0x1b,0x67,0x9b,0x63,0xd8,0x61,0xf8,0x60,0x78,0x60,0x38,0x60,0x18,0x70,0x18,0x78,0x18,0x7c,0x18,0x6e,0x18,0x67,0x9c,0x63,0xdf,0x61,0xfb,0x60,0x79,0x60,0x38,0x60, diff --git a/radio/src/fonts/sqt5_pw/font_pl_10x14.png b/radio/src/fonts/sqt5_pw/font_pl_10x14.png new file mode 100644 index 0000000000000000000000000000000000000000..cdd6a18b7aefcdaa25f577a052810fc29e81bb0a GIT binary patch literal 333 zcmV-T0kZyyP)JjwE(Gmj*HVauQ8^VtMcK+u)r0T#TpenUZkLLQ*TK1|goS*ZSdLrsVp z`7P?czYR}BHfl8@UI_uP8y~>t3~4(wj~Q{e;!&34+Q44ZZ-k|{f@hgrzD!M2=J4*m zpZr6%QxkMSQLer#Ws5ajvLK9WC%wly`J5;B`@r6@XKT3f>E(gl2)CwtbJxz~_a(Wo z$*n)#?`~bFlq=Y+uiVim*J-T(_gUFLuiTRQdlu!rPeYlJ=6uzV{PlR(7YQTZ@Ba`L fJkE^ivyLo3E)KrC*Pz#100000NkvXXu0mjf{6Lq? literal 0 HcmV?d00001 diff --git a/radio/src/fonts/sqt5_pw/font_pt_04x06.lbm b/radio/src/fonts/sqt5_pw/font_pt_04x06.lbm new file mode 100644 index 000000000..bb2db6d13 --- /dev/null +++ b/radio/src/fonts/sqt5_pw/font_pt_04x06.lbm @@ -0,0 +1 @@ +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, diff --git a/radio/src/fonts/sqt5_pw/font_pt_04x06.png b/radio/src/fonts/sqt5_pw/font_pt_04x06.png new file mode 100644 index 0000000000000000000000000000000000000000..b3bc84800816a5ce210810e5e8f9b114886dea1b GIT binary patch literal 130 zcmeAS@N?(olHy`uVBq!ia0vp^6+q0+$P6TZ-ji+xQfvV}A+A9B|Ns9>Z_d99WN{XF zL>4nJa0`PlBg3pY5H=O_PcD{oYKM)Ice5FA%0I6#}JO|$v^tJBr?vhGdwz! VF{3wVxg1c6!PC{xWt~$(698T_AX)$b literal 0 HcmV?d00001 diff --git a/radio/src/fonts/std_fw/font_03x05.lbm b/radio/src/fonts/std_fw/font_03x05.lbm new file mode 100644 index 000000000..1e163ee0d --- /dev/null +++ b/radio/src/fonts/std_fw/font_03x05.lbm @@ -0,0 +1 @@ +0x04,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0x11,0x0e,0x12,0x1f,0x10,0x19,0x15,0x13,0x11,0x15,0x1f,0x07,0x04,0x1f,0x17,0x15,0x1d,0x1f,0x15,0x1d,0x01,0x1d,0x03,0x1f,0x15,0x1f,0x17,0x15,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x1f,0x11, diff --git a/radio/src/fonts/std_fw/font_03x05.png b/radio/src/fonts/std_fw/font_03x05.png new file mode 100644 index 0000000000000000000000000000000000000000..c378d30f00d8dc9d479bb2526dbc754ed709ec9a GIT binary patch literal 222 zcmeAS@N?(olHy`uVBq!ia0vp^;XusF!2~4tzj=NfNHG=%xjQkeJ16rJ$l)yTh%9Dc z;1&j9Muu5)B!GhKC7!;n?04B^#Q2%dEM&e26e{p^aSX9IeKzDY-vI@V=%4@V-|?li ze7JPk$=_u))7pk7mzf)cOc*9u-u>0^^Wy!4%+niL8G3w!xHl+Vc~)+#&MuvBlglo~ z>-k+ltE}%o7AUW8V!7BS#oXMFxlL`}Ch#o0@J}_va|p^d91-10Mg7 zEO9<>U1YwZoQVtgeH^&uxSUFaa7zTw(u}&wm$aG#$Tf4^%U_C%FR>yCh~@wQ002ov JPDHLkV1kid<5>Uz literal 0 HcmV?d00001 diff --git a/radio/src/fonts/std_fw/font_04x06_extra.lbm b/radio/src/fonts/std_fw/font_04x06_extra.lbm new file mode 100644 index 000000000..cce1e9d68 --- /dev/null +++ b/radio/src/fonts/std_fw/font_04x06_extra.lbm @@ -0,0 +1 @@ +0x04,0x02,0x3b,0x02,0x04,0x08,0x10,0x37,0x10,0x08,0x20,0x12,0x0a,0x02,0x1e,0x02,0x24,0x28,0x20,0x3c,0x3c,0x20,0x28,0x24,0x02,0x1e,0x02,0x0a,0x12,0x20, diff --git a/radio/src/fonts/std_fw/font_04x06_extra.png b/radio/src/fonts/std_fw/font_04x06_extra.png new file mode 100644 index 0000000000000000000000000000000000000000..dd59c2e2baf81a726c751c2ab0a129c819ca0638 GIT binary patch literal 159 zcmeAS@N?(olHy`uVBq!ia0vp^azM<^$P6S^)$=z2DYgKg5LY1m|NsA`H|O64vN#Jo zB8wRqxP?KOkzv*x37{Z*iKnkC`&~9}Zc)avOYbHFg>*b!978y+C-3%A_P)qu2#J9{8$j zsSDCYdl%l_ZrrG^ESKU2Fgr-MR+bkE4lwIQZdi^)=m9gga~q6O3)oC^VuR`R7(w=F zw}vGOJL>E$rjqxQ**jZ&4Kl@_Uc(5hk0qhH+%!V=O2V@)b+Z3dXfBRIL@6CG{*bVJ zyI$oIqCzsilbzZeTI=jhq|OXUJ+D<<(2D_=x@R5;!WNgWSFL>?P8WK)teLh#$UP1C z=QmA<(3%L|FB!gTBHUZ(t;`x9w8~~@ukg_wal*fZzK_l~H*OLBzJ4y zMATLv|MLJ6+IcR23@}RFm%lD8mCLGXfm`bNGMl}s%GlBS4-c7D5gq=mIRF3v07*qo IM6N<$g4e$J%m4rY literal 0 HcmV?d00001 diff --git a/radio/src/fonts/std_fw/font_05x07_extra.lbm b/radio/src/fonts/std_fw/font_05x07_extra.lbm new file mode 100644 index 000000000..ea644215a --- /dev/null +++ b/radio/src/fonts/std_fw/font_05x07_extra.lbm @@ -0,0 +1 @@ +0x04,0x02,0x7b,0x02,0x04,0x10,0x20,0x6f,0x20,0x10,0x20,0x12,0x0a,0x02,0x1e,0x02,0x24,0x28,0x20,0x3c,0x3c,0x20,0x28,0x24,0x02,0x1e,0x02,0x0a,0x12,0x20, diff --git a/radio/src/fonts/std_fw/font_05x07_extra.png b/radio/src/fonts/std_fw/font_05x07_extra.png new file mode 100644 index 0000000000000000000000000000000000000000..4d939852c36bb0096c69d7df76eb47c9a3d73aff GIT binary patch literal 161 zcmeAS@N?(olHy`uVBq!ia0vp^azM<%$P6T}6y8k-QfvV}A+A9B|Ns9>Z_d99WN{XF zL>4nJa0`PlBg3pY5H=O_PcD{+@gZnssFwMh4egK978y+C-3$Qph2f1bVB%_!gr}2Gr^y`a(8tD{?Yn1C3}v57AShrEGOr z7E)K!$RZ{Wy$ZK7o}pG5|)ZTw~#1w8JysC-OcSh zg6-8usm=n7ze`vdUv(u1G+uEqD$_2v`4owg#`Q+r+G{1ju2v(s9n2pV840i(eg zfJjS*5gLYd55S;N1Hw=-=N=YU4BP{_#}!ZU2vC8oX3##|%c@*Q`?5{z{{fK(z(?5a zj$r>wjGI@h3i44g{QWMZz2XP}H3WxYG!np13ul_OKt0UQ-73Rwj{TBx<03*kYdhCB x)zLwB-Hz(0`>_nGZMUmIR(&uXhn%L5{tqaa5bia!W2^uG002ovPDHLkV1mDCO-=v+ literal 0 HcmV?d00001 diff --git a/radio/src/fonts/std_fw/font_10x14.lbm b/radio/src/fonts/std_fw/font_10x14.lbm new file mode 100644 index 000000000..cd6e036ed --- /dev/null +++ b/radio/src/fonts/std_fw/font_10x14.lbm @@ -0,0 +1,6 @@ +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x71,0xfe,0x71,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x7e,0x00,0x00,0x00,0x00,0x00,0x7e,0x00,0x3e,0x00,0x00,0x00,0x00,0x00,0x60,0x06,0x60,0x06,0xfe,0x7f,0xfe,0x7f,0x60,0x06,0x60,0x06,0xfe,0x7f,0xfe,0x7f,0x60,0x06,0x60,0x06,0x60,0x18,0xf0,0x18,0x98,0x19,0x98,0x19,0xfe,0x7f,0xfe,0x7f,0x98,0x19,0x98,0x19,0x18,0x0f,0x18,0x06,0x0c,0x18,0x1e,0x1c,0x1e,0x0e,0x0c,0x07,0x80,0x03,0xc0,0x01,0xe0,0x30,0x70,0x78,0x38,0x78,0x18,0x30,0x78,0x1e,0xfc,0x3f,0x8e,0x71,0xc6,0x63,0xe6,0x67,0x76,0x66,0x3c,0x3c,0x18,0x3c,0x00,0x66,0x00,0x66,0x00,0x00,0x00,0x00,0x66,0x00,0x76,0x00,0x3e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x07,0xf0,0x0f,0x38,0x1c,0x1c,0x38,0x0e,0x70,0x06,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x60,0x0e,0x70,0x1c,0x38,0x38,0x1c,0xf0,0x0f,0xe0,0x07,0x00,0x00,0x00,0x00,0x60,0x06,0x60,0x06,0xc0,0x03,0x80,0x01,0xf8,0x1f,0xf8,0x1f,0x80,0x01,0xc0,0x03,0x60,0x06,0x60,0x06,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xf8,0x1f,0xf8,0x1f,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x66,0x00,0x76,0x00,0x3e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x78,0x00,0x78,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x1c,0x00,0x0e,0x00,0x07,0x80,0x03,0xc0,0x01,0xe0,0x00,0x70,0x00,0x38,0x00,0x18,0x00, +0x00,0x00,0x00,0x00,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x60,0x0e,0x70,0xfc,0x3f,0xf8,0x1f,0x00,0x00,0x00,0x00,0x18,0x60,0x1c,0x60,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x78,0x1c,0x7c,0x0e,0x6e,0x06,0x67,0x86,0x63,0xce,0x61,0xfc,0x60,0x78,0x60,0x00,0x00,0x00,0x00,0x06,0x60,0x06,0x60,0x86,0x61,0x86,0x61,0x86,0x61,0xce,0x73,0xfc,0x3f,0x78,0x1e,0x00,0x00,0x00,0x00,0x80,0x07,0xc0,0x07,0xe0,0x06,0x70,0x06,0x38,0x06,0x1c,0x06,0xfe,0x7f,0xfe,0x7f,0x00,0x00,0x00,0x00,0x7e,0x18,0x7e,0x38,0x66,0x70,0x66,0x60,0x66,0x60,0xe6,0x70,0xc6,0x3f,0x86,0x1f,0x00,0x00,0x00,0x00,0xf8,0x1f,0xfc,0x3f,0x8e,0x71,0x86,0x61,0x86,0x61,0x8e,0x73,0x1c,0x3f,0x18,0x1e,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x86,0x7f,0xc6,0x7f,0xe6,0x00,0x76,0x00,0x3e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x78,0x1e,0xfc,0x3f,0xce,0x73,0x86,0x61,0x86,0x61,0xce,0x73,0xfc,0x3f,0x78,0x1e,0x00,0x00,0x00,0x00,0x78,0x00,0xfc,0x00,0xce,0x61,0x86,0x71,0x86,0x39,0xce,0x1d,0xfc,0x0f,0xf8,0x07,0x00,0x00,0x00,0x00,0x30,0x0c,0x78,0x1e,0x78,0x1e,0x30,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x66,0x78,0x76,0x78,0x3e,0x30,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0xc0,0x03,0xe0,0x07,0x70,0x0e,0x38,0x1c,0x1c,0x38,0x0e,0x70,0x06,0x60,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x06,0x60,0x0e,0x70,0x1c,0x38,0x38,0x1c,0x70,0x0e,0xe0,0x07,0xc0,0x03,0x80,0x01,0x00,0x00,0x00,0x00,0x18,0x00,0x1c,0x00,0x0e,0x00,0x06,0x00,0x06,0x66,0x06,0x67,0x86,0x03,0xce,0x01,0xfc,0x00,0x78,0x00, +0x78,0x00,0xfc,0x00,0xce,0x01,0x86,0x01,0x86,0x01,0xce,0x01,0xfc,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0xe0,0x7f,0xf0,0x7f,0xb8,0x01,0x9c,0x01,0x8e,0x01,0x8e,0x01,0x9c,0x01,0xb8,0x01,0xf0,0x7f,0xe0,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0xce,0x73,0xfc,0x3f,0x78,0x1e,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x0e,0x70,0x1c,0x38,0x18,0x18,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x06,0x60,0x0e,0x70,0x1c,0x38,0x38,0x1c,0xf0,0x0f,0xe0,0x07,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x06,0x00,0x06,0x00,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x86,0x61,0x86,0x61,0x86,0x61,0x8e,0x71,0x9c,0x7f,0x98,0x3f,0xfe,0x7f,0xfe,0x7f,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xfe,0x7f,0xfe,0x7f,0x00,0x00,0x00,0x00,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x38,0x00,0x70,0x00,0x60,0x06,0x60,0x06,0x70,0xfe,0x3f,0xfe,0x1f,0x06,0x00,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0x80,0x01,0xc0,0x03,0xe0,0x07,0x70,0x0e,0x38,0x1c,0x1c,0x38,0x0e,0x70,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0xfe,0x7f,0xfe,0x7f,0x1c,0x00,0x38,0x00,0xf0,0x01,0xf0,0x01,0x38,0x00,0x1c,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x70,0x00,0xe0,0x00,0xc0,0x01,0x80,0x03,0x00,0x07,0x00,0x0e,0xfe,0x7f,0xfe,0x7f,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x0e,0x70,0xfc,0x3f,0xf8,0x1f, +0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0xce,0x01,0xfc,0x00,0x78,0x00,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x66,0x06,0x6e,0x06,0x3c,0x0e,0x38,0xfc,0x7f,0xf8,0x67,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x07,0x86,0x0f,0x86,0x1d,0xce,0x39,0xfc,0x70,0x78,0x60,0x78,0x18,0xfc,0x38,0xce,0x71,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x8e,0x73,0x1c,0x3f,0x18,0x1e,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0xfe,0x1f,0xfe,0x3f,0x00,0x70,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x70,0xfe,0x3f,0xfe,0x1f,0xfe,0x07,0xfe,0x0f,0x00,0x1c,0x00,0x38,0x00,0x70,0x00,0x70,0x00,0x38,0x00,0x1c,0xfe,0x0f,0xfe,0x07,0xfe,0x1f,0xfe,0x3f,0x00,0x70,0x00,0x70,0x00,0x3e,0x00,0x3e,0x00,0x70,0x00,0x70,0xfe,0x3f,0xfe,0x1f,0x1e,0x78,0x3e,0x7c,0x70,0x0e,0xe0,0x07,0xc0,0x03,0xc0,0x03,0xe0,0x07,0x70,0x0e,0x3e,0x7c,0x1e,0x78,0x7e,0x00,0xfe,0x00,0xc0,0x01,0x80,0x03,0x00,0x7f,0x00,0x7f,0x80,0x03,0xc0,0x01,0xfe,0x00,0x7e,0x00,0x06,0x78,0x06,0x7c,0x06,0x6e,0x06,0x67,0x86,0x63,0xc6,0x61,0xe6,0x60,0x76,0x60,0x3e,0x60,0x1e,0x60,0x00,0x00,0x00,0x00,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x00,0x00,0x00,0x00,0x18,0x00,0x38,0x00,0x70,0x00,0xe0,0x00,0xc0,0x01,0x80,0x03,0x00,0x07,0x00,0x0e,0x00,0x1c,0x00,0x18,0x00,0x00,0x00,0x00,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x00,0x00,0x00,0x00,0x60,0x00,0x70,0x00,0x38,0x00,0x1c,0x00,0x0e,0x00,0x0e,0x00,0x1c,0x00,0x38,0x00,0x70,0x00,0x60,0x00,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60, +0x00,0x00,0x00,0x00,0x06,0x00,0x0e,0x00,0x1c,0x00,0x38,0x00,0x70,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x3c,0x60,0x7e,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0x66,0xc0,0x7f,0x80,0x7f,0xfe,0x7f,0xfe,0x7f,0x80,0x61,0xc0,0x61,0xe0,0x60,0x60,0x60,0x60,0x60,0xe0,0x70,0xc0,0x3f,0x80,0x1f,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x70,0x00,0x38,0x00,0x18,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x60,0x60,0xe0,0x60,0xc0,0x61,0x80,0x61,0xfe,0x7f,0xfe,0x7f,0x80,0x1f,0xc0,0x3f,0xe0,0x76,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0x66,0xc0,0x07,0x80,0x07,0x80,0x01,0x80,0x01,0xf8,0x7f,0xfc,0x7f,0x8e,0x01,0x86,0x01,0x06,0x00,0x0e,0x00,0x1c,0x00,0x18,0x00,0xe0,0x01,0xf0,0x03,0x38,0x67,0x18,0x66,0x18,0x66,0x18,0x66,0x18,0x66,0x18,0x76,0xf8,0x3f,0xf8,0x1f,0xfe,0x7f,0xfe,0x7f,0x80,0x01,0xc0,0x01,0xe0,0x00,0x60,0x00,0x60,0x00,0xe0,0x00,0xc0,0x7f,0x80,0x7f,0x00,0x00,0x00,0x00,0x60,0x60,0x60,0x60,0xe6,0x7f,0xe6,0x7f,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x38,0x00,0x70,0x00,0x60,0x60,0x60,0x60,0x70,0xe6,0x3f,0xe6,0x1f,0x00,0x00,0x00,0x00,0xfe,0x7f,0xfe,0x7f,0x00,0x06,0x00,0x0f,0x80,0x1f,0xc0,0x39,0xe0,0x70,0x60,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0x00,0xe0,0x7f,0xe0,0x7f,0x60,0x00,0xe0,0x00,0xc0,0x07,0xc0,0x07,0xe0,0x00,0xe0,0x00,0xc0,0x7f,0x80,0x7f,0xe0,0x7f,0xe0,0x7f,0x80,0x01,0xc0,0x01,0xe0,0x00,0x60,0x00,0x60,0x00,0xe0,0x00,0xc0,0x7f,0x80,0x7f,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xe0,0x70,0xc0,0x3f,0x80,0x1f, +0xe0,0x7f,0xe0,0x7f,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0xe0,0x07,0xc0,0x03,0x80,0x01,0x80,0x01,0xc0,0x03,0xe0,0x07,0x60,0x06,0x60,0x06,0x60,0x06,0xc0,0x07,0x80,0x07,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x80,0x01,0xc0,0x01,0xe0,0x00,0x60,0x00,0x60,0x00,0xe0,0x00,0xc0,0x01,0x80,0x01,0x80,0x61,0xc0,0x63,0xe0,0x67,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x7e,0x00,0x3c,0x00,0x18,0x60,0x00,0x60,0x00,0xfe,0x1f,0xfe,0x3f,0x60,0x70,0x60,0x60,0x00,0x60,0x00,0x70,0x00,0x38,0x00,0x18,0xe0,0x1f,0xe0,0x3f,0x00,0x70,0x00,0x60,0x00,0x60,0x00,0x70,0x00,0x38,0x00,0x18,0xe0,0x7f,0xe0,0x7f,0xe0,0x07,0xe0,0x0f,0x00,0x1c,0x00,0x38,0x00,0x70,0x00,0x70,0x00,0x38,0x00,0x1c,0xe0,0x0f,0xe0,0x07,0xe0,0x1f,0xe0,0x3f,0x00,0x70,0x00,0x70,0x00,0x38,0x00,0x38,0x00,0x70,0x00,0x70,0xe0,0x3f,0xe0,0x1f,0x60,0x60,0xe0,0x70,0xc0,0x39,0x80,0x1f,0x00,0x0f,0x00,0x0f,0x80,0x1f,0xc0,0x39,0xe0,0x70,0x60,0x60,0xe0,0x01,0xe0,0x03,0x00,0x67,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x76,0xe0,0x3f,0xe0,0x1f,0x60,0x60,0x60,0x70,0x60,0x78,0x60,0x7c,0x60,0x6e,0x60,0x67,0xe0,0x63,0xe0,0x61,0xe0,0x60,0x60,0x60,0x00,0x00,0x00,0x00,0x80,0x01,0xc0,0x03,0x78,0x1e,0x7c,0x3e,0x0e,0x70,0x06,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x7f,0xfe,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x60,0x0e,0x70,0x7c,0x3e,0x78,0x1e,0xc0,0x03,0x80,0x01,0x00,0x00,0x00,0x00,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x18,0x18,0x38,0x1c,0xf0,0x0f,0xe0,0x07,0xc0,0x03,0x80,0x01,0x80,0x01,0xc0,0x03,0xe0,0x07,0xf0,0x0f,0x38,0x1c,0x18,0x18,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01, diff --git a/radio/src/fonts/std_fw/font_10x14.png b/radio/src/fonts/std_fw/font_10x14.png new file mode 100644 index 0000000000000000000000000000000000000000..1849cc0eb38c60bbfb4271f29f3998ad83d241da GIT binary patch literal 1123 zcmV-p1f2VcP)003YC0{{R3py}({00006P)t-s00030 z|No`gpWOfe010qNS#tmY3ljhU3ljkVnw%H_000McNliru-3AK_6&+&JvfKaw1Mo>i zK~y-)mDI6r<3W1B7T&_a7>W?irSS zEc@k4Jn<*aW$lAz>abF2h!n3#lO0E7qDd{N;kO5 z$xt=}vXZJ1^{PL@0>WzU;whz2Uh;Fi$9GOpScq{@9w~)i{xB3;ax|>-@qdDe429-f z!i+|A^h!|JW<{tz;h!mmffyQcf|p145?UlFD3OxCDF)?8K(iXA(U82J^0(MG*$olw z61?s)#cSMM{GR`Xd5t-w_p^$Ku|odTN^W9$SxbuT|Zeo%)bVUtTc|3K^X-YCA4u7%@jm1D+|v zE%88h8B$Ld+iSC1Eb@Yz=e;*KnTY6e?ib1_=53MzYcnAzQ_}EgNcn-7Z1p!lnto^7OK`a2)7!(Ck4q&17ob}zY~P=IhH4U5f0@zmYZ@Da9jw- zg-oeOJhbGvB`zGx56ySmj**)uqy09;04ljW>p_;hO-4TuLA>`YLq;CR*UuAdA_W(5 zI;G}=v5GSf%aciTjEk6HF}-V6&IB}$f0juC<$n}#E={Xqx~xW|fZHomse&$AE|+DK z2h>$jsLEd|fGa%_0YA2JtXj?kBkw30(JmB+#v@Nv^&V^8uXEM!@qNsz-#7Jk&BE8) z8Nk!$AjNM$zc9RZZ(0XiN-dW2s;PecAK zp-6H&R8twS8gZB&V>=>V1NVaAfuP&t(=qlom7+{CTql-h&XxQKXx~i4?fDtv`3=ol zr{D0A5p9|F*$qLJ%opF|YXkA@;Y(}KdunI?x z6!KYwgYn3(t|?!7pU=vT`D|bkZO$_v#mlo+n~+ZnQfPiz37=1=&9~(<{56M1=iHar zy6#J?oPV!BL%vTG7o7Q$uZ-Ep+hY-P=6{}yIA<&z<~zlihh=U)CD~D;6OVR8U72E! zuoQy`__2}kz8oxHOT+o(B=f6tTuAZx_eQ>Ys5RC3zNLV>$!rGO{I^5%j2Jb`U+2+0 pIT8D9dKA_g&S#Q{2P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i*n> z5(5wu4dY1w000?uMObu0Z*6U5Zgc=ca%Ew3Wn>_CX>@2HM@dakSAh-}000FyNkljK*D9&?NBIp79F=#1*&C=ks|L6%`c~6%`c~6)i&h zT?e*p+rPhie)wOxk)J-Q@A&(u-BCY!^`Y&f{j=7`mSg#*?*FkI%CAwoETQd>wATsp^iMs1s&?6W&~HcesvT0cjg0mq`kg7GiuqH?OH_SD&$CBGMMeKxqjE@O>8Qk8P9rK}ZM=MxM|5h@xp1KqfM$i1IbnLJ7-MFA&6YQ1TSvK4^H+r-XWQ`Hr?{H$6FI(pmJnan z39#&VdyxUwVM8!%jN{pJ3K2{l6KOd~VfEW8C8 z6?NjHkPG!4iy52N;~3QZ&E8nw-7b1hR4nqfdlyoV8FyonCGyEcJR^*{B?86V&PN3k z*%f-QEg6_m74~;jJ_^gD+A(L&qk^yMypd?6!H%`i+WVo%Jo_nlKRHI=Qe%h{GAC|1~y0a z%2lS5J?kc}MNU?Xq(;7CW-(&O5peWNTr5WHC=2Kjr1x^nj7@09>w?*v>1=&4TMw+L zPiOH3;hS0?c=MIB>v*dTk$4W2lX|_YHYw@mTWgu~;LkQf}>BB5sabUv)wp1&?@)e4yd|zU7G~e3XUnLgSE~GZNEGn9Oa?#LC?&ftRXH4)`p|W$ei2I8rw?vwTzPgKQf@M^KB3ii(Pgii(PgBIyUqaxnc8#($xHO){_~%<(Sq}u>Yd~YrXxSnYg~T% zFdlwxoZdBm#eCz0A2oX(|Cj&$pNVI_Jomr+gg^HWeE8XH*iqQ<@N<8aiFe{T28I{w W6C^GAxAy^UXYh3Ob6Mw<&;$VafmR{_ literal 0 HcmV?d00001 diff --git a/radio/src/fonts/std_fw/font_cz_04x06.lbm b/radio/src/fonts/std_fw/font_cz_04x06.lbm new file mode 100644 index 000000000..450f6b219 --- /dev/null +++ b/radio/src/fonts/std_fw/font_cz_04x06.lbm @@ -0,0 +1 @@ +0x18,0x24,0x16,0x3d,0x00,0x18,0x24,0x25,0x02,0x01,0x18,0x34,0x2c,0x0a,0x01,0x18,0x34,0x2d,0x0a,0x01,0x00,0x24,0x3c,0x22,0x01,0x18,0x24,0x24,0x1a,0x01,0x3c,0x04,0x05,0x0a,0x01,0x28,0x2d,0x36,0x15,0x00,0x1c,0x20,0x22,0x3d,0x00,0x1c,0x21,0x21,0x3c,0x00,0x0c,0x50,0x22,0x1d,0x00,0x38,0x14,0x14,0x3a,0x01,0x00,0x24,0x3e,0x25,0x00,0x3c,0x15,0x16,0x2d,0x00,0x00,0x0c,0x32,0x0d,0x00,0x24,0x35,0x2e,0x25,0x00,0x3e,0x2a,0x2a,0x22,0x01, diff --git a/radio/src/fonts/std_fw/font_cz_04x06.png b/radio/src/fonts/std_fw/font_cz_04x06.png new file mode 100644 index 0000000000000000000000000000000000000000..d43f5b05ce108ef439e7894d704d6d011abd2ba4 GIT binary patch literal 220 zcmeAS@N?(olHy`uVBq!ia0vp^p+L;e$P6T%YbQSiQfvV}A+A9B|Ns9>Z_d99WHBar zySp%Su*!M>Ih+L^k;M!Q+`=Ht$S`Y;1W=H@#M9T6{Vto3D4$fGMpYM3D8|#pF@)oK za>e%Y+R_)Z@4sJ{|Mx(_{$KaL-~GP-er^2OgBL#E`Q(#Ww#D`KA+EMJ-o@MX&iC!w zox7c-`TNdWYwb60PWgRWTjH9{c8lLTmcKdn&4sV+f5Hd3j(P?LpZ&&_nH_r-f%Y(X My85}Sb4q9e06ce7X8-^I literal 0 HcmV?d00001 diff --git a/radio/src/fonts/std_fw/font_cz_05x07.lbm b/radio/src/fonts/std_fw/font_cz_05x07.lbm new file mode 100644 index 000000000..1cb949cdc --- /dev/null +++ b/radio/src/fonts/std_fw/font_cz_05x07.lbm @@ -0,0 +1 @@ +0x20,0x54,0x56,0x55,0x78,0x38,0x45,0x46,0x45,0x20,0x38,0x54,0x56,0x55,0x18,0x38,0x55,0x56,0x55,0x18,0x00,0x44,0x7e,0x41,0x00,0x38,0x44,0x46,0x45,0x38,0x7c,0x09,0x06,0x05,0x08,0x48,0x55,0x56,0x55,0x20,0x3c,0x40,0x42,0x21,0x7c,0x3c,0x40,0x43,0x23,0x7c,0x0c,0x50,0x52,0x51,0x3c,0x78,0x14,0x16,0x15,0x78,0x00,0x44,0x7e,0x45,0x00,0x7c,0x15,0x16,0x35,0x48,0x0c,0x10,0x62,0x11,0x0c,0x44,0x65,0x56,0x4d,0x44,0x7c,0x54,0x56,0x55,0x44,0x3c,0x3c,0x24,0x42,0xff,0x24,0x18,0x81,0x42,0x3c, diff --git a/radio/src/fonts/std_fw/font_cz_05x07.png b/radio/src/fonts/std_fw/font_cz_05x07.png new file mode 100644 index 0000000000000000000000000000000000000000..19ab8e4d182d90c32f35e2a56192c476885b06d7 GIT binary patch literal 223 zcmeAS@N?(olHy`uVBq!ia0vp^@j%SM$P6Txa&G(yq}T#{LR^9L|NsA&-kg6I$l@&U zh%9Dc;1&j9Muu5)B!GhKC7!;n?04C?x%qX!s8_583gvjZIEHXsPp*iT{hs@J_p9pb z+xOi+R`CA!z3*4QpK3f(tKBv)<>cbFqs6LG{03(df7CpG+xPis@x6C@qIb3}{K@eC zT>nw-irZzy>k>8QeJ_8$KV|mz+o!dk8EjGUmZ`N!z1V%1^Gz7ff58N4hK?h4FOB6+ RJp$Ux;OXk;vd$@?2>|`cS(^X= literal 0 HcmV?d00001 diff --git a/radio/src/fonts/std_fw/font_cz_08x10.lbm b/radio/src/fonts/std_fw/font_cz_08x10.lbm new file mode 100644 index 000000000..63fbb75db --- /dev/null +++ b/radio/src/fonts/std_fw/font_cz_08x10.lbm @@ -0,0 +1 @@ +0x00,0x03,0xa0,0x07,0xb0,0x04,0x94,0x04,0x93,0x02,0xf1,0x07,0xe0,0x07,0x00,0x00,0xc0,0x01,0xe1,0x03,0x33,0x06,0x16,0x04,0x13,0x04,0x31,0x06,0x20,0x02,0x00,0x00,0xc0,0x01,0xe0,0x03,0xb0,0x06,0x94,0x04,0xb3,0x04,0xe1,0x06,0xc0,0x02,0x00,0x00,0xc0,0x01,0xe1,0x03,0xb3,0x06,0x96,0x04,0xb3,0x04,0xe1,0x06,0xc0,0x02,0x00,0x00,0x00,0x04,0x10,0x04,0xf4,0x07,0xf3,0x07,0x01,0x04,0x00,0x04,0x00,0x00,0x00,0x00,0xc0,0x01,0xe0,0x03,0x30,0x06,0x14,0x04,0x33,0x06,0xe1,0x03,0xc0,0x01,0x00,0x00,0x11,0x00,0xf3,0x07,0xe6,0x07,0x33,0x00,0x11,0x00,0x30,0x00,0x20,0x00,0x00,0x00,0x60,0x02,0xf1,0x06,0x93,0x04,0x96,0x04,0x93,0x04,0xb1,0x07,0x20,0x03,0x00,0x00,0xf0,0x01,0xf0,0x03,0x00,0x06,0x04,0x04,0x03,0x02,0xf1,0x07,0xf0,0x07,0x00,0x00,0xf0,0x01,0xf0,0x03,0x02,0x06,0x05,0x04,0x05,0x02,0xf2,0x07,0xf0,0x07,0x00,0x00,0xf0,0x04,0xf0,0x0c,0x00,0x09,0x04,0x09,0x83,0x0c,0xf1,0x07,0xf0,0x03,0x00,0x00,0xf0,0x07,0xf8,0x07,0x88,0x00,0x8c,0x00,0x8b,0x00,0x89,0x00,0xf8,0x07,0xf0,0x07,0x00,0x00,0x08,0x04,0x08,0x04,0xfc,0x07,0xfb,0x07,0x09,0x04,0x08,0x04,0x00,0x00,0xf8,0x07,0xf9,0x07,0xcb,0x00,0xce,0x00,0xcb,0x01,0x49,0x03,0x78,0x06,0x30,0x04,0x18,0x00,0x18,0x00,0x30,0x00,0xe4,0x07,0xe3,0x07,0x31,0x00,0x18,0x00,0x18,0x00,0x08,0x06,0x09,0x07,0x8b,0x05,0xce,0x04,0x6b,0x04,0x39,0x04,0x18,0x04,0x00,0x00,0xf8,0x07,0xf8,0x07,0x48,0x04,0x4c,0x04,0x4b,0x04,0x49,0x04,0x08,0x04,0x00,0x00, diff --git a/radio/src/fonts/std_fw/font_cz_08x10.png b/radio/src/fonts/std_fw/font_cz_08x10.png new file mode 100644 index 0000000000000000000000000000000000000000..912588acb37b199e4150c5aa801ee42403bf9de9 GIT binary patch literal 292 zcmeAS@N?(olHy`uVBq!ia0vp^9YD;($P6T#L(}gADYgKg5LY1m|NsA`H|O64vKW)R z-CYFS$5RU7< zeTsaC4R~B-Mc;5eWI>XXxZ#K)20{|VFkg`%L3)vlUEq|;F6_-sn!mKzCyOXLJB3e z$>1?Vrc8c_zQ7d~+`&|@V8{z7y+tBN)N{#F=ndlT1O3MddTF~Il{e2jdM!KWJdX|p zd1bZ~?w_`FRL1*p^dP(|+s2<(S>unYMI1*2ffSTEKczD8@n#={5aCZXprmDsI=OA|TpmaI_B z)hxY=VVF`>&mJ!b%%%|IIXRyLc22R*`%7l?%i+I*A4i_mzjazNvH$=807*qoM6N<$ Ef{F*FtN;K2 literal 0 HcmV?d00001 diff --git a/radio/src/fonts/std_fw/font_de_04x06.lbm b/radio/src/fonts/std_fw/font_de_04x06.lbm new file mode 100644 index 000000000..fcdfd7962 --- /dev/null +++ b/radio/src/fonts/std_fw/font_de_04x06.lbm @@ -0,0 +1 @@ +0x3d,0x0a,0x0a,0x3d,0x00,0x18,0x25,0x14,0x3d,0x00,0x1d,0x22,0x22,0x1d,0x00,0x18,0x25,0x24,0x19,0x00,0x1d,0x20,0x20,0x1d,0x00,0x1a,0x20,0x10,0x3a,0x00,0x7e,0x05,0x25,0x1a,0x00, diff --git a/radio/src/fonts/std_fw/font_de_04x06.png b/radio/src/fonts/std_fw/font_de_04x06.png new file mode 100644 index 0000000000000000000000000000000000000000..d9c1fa058a1f2829c5a9887dd9a7cfd8af52ccc7 GIT binary patch literal 179 zcmeAS@N?(olHy`uVBq!ia0vp^%0SG{$P6TRXr);JDYgKg5LY1m|NsA`H|O64vKW)R z-CYZ_d99WN{XF zL>4nJa0`PlBg3pY5H=O_PcD{+yXqMB5Bz`A#+a`#}JO|$q}< z7AueH#z)h*B~CrJ+3u5&FtL&^Mf`kaUPZ$~m&iv;m=4z~R4_2S|025Y(OD5Upb-q7 Lu6{1-oD!MuVhivIaRt)<|NmclbN*c*i!sUD z-G!lpRn`N@;VkfoEM{Qf76xHPhFNnYfP(BLp1!W^ciDt^RgLU#+`R}C^73?X4B@!0 zdSWB*0S6u?hcGY6lc$&ZNCq1AcVGAaWV}SFuDwb4fat9YA}6oT>U{ci!-6Xv#sXa1 r@=H6jxxd`{ulP#yy^JOEzt4<0SM=`nHFa$Sn#$nm>gTe~DWM4fNn%0m literal 0 HcmV?d00001 diff --git a/radio/src/fonts/std_fw/font_de_10x14.lbm b/radio/src/fonts/std_fw/font_de_10x14.lbm new file mode 100644 index 000000000..ed3d1da5f --- /dev/null +++ b/radio/src/fonts/std_fw/font_de_10x14.lbm @@ -0,0 +1 @@ +0x80,0x7f,0xc2,0x7f,0xe2,0x06,0x70,0x06,0x38,0x06,0x38,0x06,0x70,0x06,0xe2,0x06,0xc2,0x7f,0x80,0x7f,0x00,0x18,0x06,0x3c,0x66,0x7e,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe6,0x66,0xc6,0x7f,0x80,0x7f,0xe0,0x1f,0xf2,0x3f,0x3a,0x70,0x18,0x60,0x18,0x60,0x18,0x60,0x18,0x60,0x3a,0x70,0xf2,0x3f,0xe0,0x1f,0x80,0x1f,0xc6,0x3f,0xe6,0x70,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xe6,0x70,0xc6,0x3f,0x80,0x1f,0xf8,0x1f,0xfa,0x3f,0x02,0x70,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x02,0x70,0xfa,0x3f,0xf8,0x1f,0xe0,0x1f,0xe6,0x3f,0x06,0x70,0x00,0x60,0x00,0x60,0x00,0x70,0x00,0x38,0x06,0x18,0xe6,0x7f,0xe0,0x7f,0xf8,0x7f,0xfc,0x7f,0x0e,0x00,0x06,0x00,0x66,0x30,0x6e,0x30,0xfc,0x38,0xd8,0x1f,0x00,0x0f,0x00,0x00, diff --git a/radio/src/fonts/std_fw/font_de_10x14.png b/radio/src/fonts/std_fw/font_de_10x14.png new file mode 100644 index 0000000000000000000000000000000000000000..22ae54efc382d99120bb2c4f73afbf8e1609f71f GIT binary patch literal 254 zcmeAS@N?(olHy`uVBq!ia0vp^Za^%+$P6SWn$Ok+QfvV}A+A9B|Ns9>Z_d99WN{XF zL>4nJa0`PlBg3pY5H=O_PcD{+ya7PLR_1GLfxJ&jv*Y^lYj8D)=NBFdcG#i zQopv3_wfJcpZ|yctG9D*d-(ak{h$AD-`amOu=(@9S@y)Qnzn}r*bg5+^X*T2szeo6 zi@hOJqzzBex3ltE4Qq^fzI|)A|HHUxo`Hdc!QlulgK4(b5z~HhOep=}*eWA!%-_71 viCsF`xoI;`^Ik@N`_GO1?f(r9#IiC}KlM{uddq48&{+(gu6{1-oD!M<4_8}j literal 0 HcmV?d00001 diff --git a/radio/src/fonts/std_fw/font_es_04x06.lbm b/radio/src/fonts/std_fw/font_es_04x06.lbm new file mode 100644 index 000000000..9c8fdb698 --- /dev/null +++ b/radio/src/fonts/std_fw/font_es_04x06.lbm @@ -0,0 +1 @@ +0x3e,0x09,0x12,0x3d,0x00,0x3a,0x11,0x0a,0x39,0x00, diff --git a/radio/src/fonts/std_fw/font_es_04x06.png b/radio/src/fonts/std_fw/font_es_04x06.png new file mode 100644 index 0000000000000000000000000000000000000000..ee36412ee4bd69d18d365d53bfc8c89b24b5dca8 GIT binary patch literal 144 zcmeAS@N?(olHy`uVBq!ia0vp^AT~QAGmzv?@>2j(YymzYu0Z<#|Nl#G&c6#}aTa() z76avlL70(Y)*K0-AbW|YuPggqHg0YK4Nvi=T|gmOPZ!4!j_b)0uMY^6HYomQXr9L0 iyqwv28}s4+%nVKeY*VVzgff8&89ZJ6T-G@yGywpGpCfJn literal 0 HcmV?d00001 diff --git a/radio/src/fonts/std_fw/font_es_05x07.lbm b/radio/src/fonts/std_fw/font_es_05x07.lbm new file mode 100644 index 000000000..99f4cd1a2 --- /dev/null +++ b/radio/src/fonts/std_fw/font_es_05x07.lbm @@ -0,0 +1 @@ +0x7c,0x0a,0x11,0x22,0x7d,0x78,0x12,0x09,0x0a,0x71, diff --git a/radio/src/fonts/std_fw/font_es_05x07.png b/radio/src/fonts/std_fw/font_es_05x07.png new file mode 100644 index 0000000000000000000000000000000000000000..b1135c1b240f91d08d8a2dda7eb31e80b89fb700 GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^AT|dhGm!jc^5-j%VhivIaRt)<|NmclbN*c*i?hHZ zvY3H^TNs2H8D`Cq01C2~c>21s-(}vvU!%b0PEL|I7>togBfT)<<3d)iQXx`njxgN@xNAfrKfn literal 0 HcmV?d00001 diff --git a/radio/src/fonts/std_fw/font_es_08x10.lbm b/radio/src/fonts/std_fw/font_es_08x10.lbm new file mode 100644 index 000000000..f3bb8184c --- /dev/null +++ b/radio/src/fonts/std_fw/font_es_08x10.lbm @@ -0,0 +1 @@ +0xf0,0x07,0xf4,0x07,0x66,0x00,0xc2,0x00,0x86,0x01,0x04,0x07,0xf6,0x07,0xf2,0x07,0xf4,0x07,0xf6,0x07,0x22,0x00,0x16,0x00,0x34,0x00,0xe6,0x07,0xc2,0x07,0x00,0x00, diff --git a/radio/src/fonts/std_fw/font_es_08x10.png b/radio/src/fonts/std_fw/font_es_08x10.png new file mode 100644 index 0000000000000000000000000000000000000000..c05c1f406c7ff6e9caac538192c7fadced002c91 GIT binary patch literal 168 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~e$P6R{HP;^kQfvV}A+A9B|Ns9>Z_d99WHBar zySp%Su*!M>Ih+L^k;M!Q+`=Ht$S`Y;1W=H@#M9T6{Vtmjubi6XhG$cNLK>bfjv*Y^ zlYji5|IkDIuuCeN!eO_$j&3s=k56(uI_cnnNe7vF{{3fXxUR-kZMC1(4XB5~)78&q Iol`;+01dJ)od5s; literal 0 HcmV?d00001 diff --git a/radio/src/fonts/std_fw/font_es_10x14.lbm b/radio/src/fonts/std_fw/font_es_10x14.lbm new file mode 100644 index 000000000..92d200c51 --- /dev/null +++ b/radio/src/fonts/std_fw/font_es_10x14.lbm @@ -0,0 +1 @@ +0xe8,0x7f,0xec,0x7f,0xc6,0x01,0x82,0x03,0x04,0x07,0x08,0x0e,0x0c,0x1c,0x06,0x38,0xe2,0x7f,0xe0,0x7f,0xe0,0x7f,0xe8,0x7f,0x8c,0x01,0xc6,0x01,0xe2,0x00,0x64,0x00,0x68,0x00,0xec,0x00,0xc6,0x7f,0x82,0x7f, diff --git a/radio/src/fonts/std_fw/font_es_10x14.png b/radio/src/fonts/std_fw/font_es_10x14.png new file mode 100644 index 0000000000000000000000000000000000000000..7f803e46843b1ed4fa8c8f46d9134f8554cf17ee GIT binary patch literal 177 zcmeAS@N?(olHy`uVBq!ia0vp^B0wy_$P6TPuAPklQfvV}A+A9B|Ns9>Z_d99WN{XF zL>4nJa0`PlBg3pY5H=O_PcD{+yaskCz~38LUx`mjv*Y^lYjjG&wP02DQ2Ev zJKuy2HF*aZ9^L*dVQ`|D!{CFlnZX8Q`GkOH_6HI;j)*zrFdr#%$l*WYu$6(&NGy5Q TtS>KtCNX%r`njxgN@xNA#L+cJ literal 0 HcmV?d00001 diff --git a/radio/src/fonts/std_fw/font_fr_04x06.lbm b/radio/src/fonts/std_fw/font_fr_04x06.lbm new file mode 100644 index 000000000..afd789ef6 --- /dev/null +++ b/radio/src/fonts/std_fw/font_fr_04x06.lbm @@ -0,0 +1 @@ +0x18,0x36,0x2d,0x08,0x00,0x18,0x35,0x2e,0x08,0x00,0x18,0x25,0x16,0x3c,0x00,0x00,0x26,0x3d,0x22,0x00,0x00,0x4c,0x32,0x12,0x00, diff --git a/radio/src/fonts/std_fw/font_fr_04x06.png b/radio/src/fonts/std_fw/font_fr_04x06.png new file mode 100644 index 0000000000000000000000000000000000000000..da9f758ff983446aa427798fe539f5306443e152 GIT binary patch literal 3610 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 gnv8Wnc?Z_d99WN{XF zL>4nJa0`PlBg3pY5H=O_PcD{+=7fk`?RM6g$z7h978y+Cs+Kgt7ksE_q`x5 zkL}6((h^zopr E0HlmDVgLXD literal 0 HcmV?d00001 diff --git a/radio/src/fonts/std_fw/font_fr_08x10.lbm b/radio/src/fonts/std_fw/font_fr_08x10.lbm new file mode 100644 index 000000000..5be2553c5 --- /dev/null +++ b/radio/src/fonts/std_fw/font_fr_08x10.lbm @@ -0,0 +1 @@ +0xc0,0x01,0xe0,0x03,0xb4,0x06,0x96,0x04,0xb3,0x04,0xe1,0x06,0xc0,0x02,0x00,0x00,0xc0,0x01,0xe0,0x03,0xb1,0x06,0x93,0x04,0xb6,0x04,0xe4,0x06,0xc0,0x02,0x00,0x00,0x00,0x03,0xa0,0x07,0xb1,0x04,0x93,0x04,0x96,0x02,0xf4,0x07,0xe0,0x07,0x00,0x00,0x04,0x04,0x16,0x04,0xf3,0x07,0xf6,0x07,0x04,0x04,0x00,0x04,0x00,0x00,0xe0,0x00,0xf0,0x01,0x18,0x0b,0x08,0x0e,0x08,0x06,0x18,0x03,0x10,0x01,0x00,0x00,0x00,0x00, diff --git a/radio/src/fonts/std_fw/font_fr_08x10.png b/radio/src/fonts/std_fw/font_fr_08x10.png new file mode 100644 index 0000000000000000000000000000000000000000..f9ad08c8b5e9abe72dd876a22e22cf54c932d222 GIT binary patch literal 3647 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 R5f1{t>7V84C&1+RxzW>gTe~DWM4f=lD#7 literal 0 HcmV?d00001 diff --git a/radio/src/fonts/std_fw/font_it_04x06.lbm b/radio/src/fonts/std_fw/font_it_04x06.lbm new file mode 100644 index 000000000..c6a470f29 --- /dev/null +++ b/radio/src/fonts/std_fw/font_it_04x06.lbm @@ -0,0 +1 @@ +0x18,0x25,0x16,0x3c,0x00,0x1c,0x21,0x22,0x3c,0x00, diff --git a/radio/src/fonts/std_fw/font_it_04x06.png b/radio/src/fonts/std_fw/font_it_04x06.png new file mode 100644 index 0000000000000000000000000000000000000000..3659402499010a3c14e8f3357e315c61714d0ad6 GIT binary patch literal 145 zcmeAS@N?(olHy`uVBq!ia0vp^AT~QAGmzv?@>2j(YymzYu0Z<#|Nl#G&c6#}aTa() z76avlL70(Y)*K0-AbW|YuPggqHg0Y{o`s>2TYy4xo-U3d9M_X?R5v`l$Jmy~-j>78 ime1a1%E$AcpMfFd5BmwVS}ALwN(N6?KbLh*2~7Z^Tq67c literal 0 HcmV?d00001 diff --git a/radio/src/fonts/std_fw/font_it_05x07.lbm b/radio/src/fonts/std_fw/font_it_05x07.lbm new file mode 100644 index 000000000..17d52fd9b --- /dev/null +++ b/radio/src/fonts/std_fw/font_it_05x07.lbm @@ -0,0 +1 @@ +0x20,0x55,0x56,0x54,0x78,0x3c,0x41,0x42,0x20,0x7c, diff --git a/radio/src/fonts/std_fw/font_it_05x07.png b/radio/src/fonts/std_fw/font_it_05x07.png new file mode 100644 index 0000000000000000000000000000000000000000..4a16baf3a204a1fea1c186dcc818314e5cc87625 GIT binary patch literal 148 zcmeAS@N?(olHy`uVBq!ia0vp^AT|dhGm!jc^5-j%VhivIaRt)<|NmclbN*c*i?hHZ zvY3H^TNs2H8D`Cq01C2~c>21s-(}Z_d99WN{XF zL>4nJa0`PlBg3pY5H=O_PcD{+m2n}50I-<%4dHU>{uKbLh*2~7auqAXJY literal 0 HcmV?d00001 diff --git a/radio/src/fonts/std_fw/font_it_10x14.lbm b/radio/src/fonts/std_fw/font_it_10x14.lbm new file mode 100644 index 000000000..b25268b4e --- /dev/null +++ b/radio/src/fonts/std_fw/font_it_10x14.lbm @@ -0,0 +1 @@ +0x00,0x18,0x00,0x3c,0x60,0x7e,0x62,0x66,0x66,0x66,0x6c,0x66,0x68,0x66,0xe0,0x66,0xc0,0x7f,0x80,0x7f,0xe0,0x1f,0xe0,0x3f,0x00,0x70,0x02,0x60,0x06,0x60,0x0c,0x60,0x08,0x60,0x00,0x30,0xe0,0x7f,0xe0,0x7f, diff --git a/radio/src/fonts/std_fw/font_it_10x14.png b/radio/src/fonts/std_fw/font_it_10x14.png new file mode 100644 index 0000000000000000000000000000000000000000..43e824d5353ecef058fd43205e3f811e34ef5f65 GIT binary patch literal 178 zcmeAS@N?(olHy`uVBq!ia0vp^B0wy_$P6TPuAPklQfvV}A+A9B|Ns9>Z_d99WN{XF zL>4nJa0`PlBg3pY5H=O_PcD{+9%@Hw85xugEUAI3K3f9w+fKFTNj;6K9Nu!FJVspE{jjSC$c8y_|_GJEJU)HllA UIdbg3AkZiVPgg&ebxsLQ0Qc8A#{d8T literal 0 HcmV?d00001 diff --git a/radio/src/fonts/std_fw/font_pl_04x06.lbm b/radio/src/fonts/std_fw/font_pl_04x06.lbm new file mode 100644 index 000000000..f16f231db --- /dev/null +++ b/radio/src/fonts/std_fw/font_pl_04x06.lbm @@ -0,0 +1 @@ +0x18,0x24,0x14,0x3c,0x40,0x18,0x24,0x24,0x02,0x01,0x18,0x34,0x2c,0x48,0x00,0x00,0x29,0x3f,0x24,0x00,0x3c,0x06,0x05,0x38,0x00,0x18,0x26,0x25,0x18,0x00,0x28,0x2c,0x36,0x15,0x00,0x24,0x35,0x2d,0x24,0x00,0x24,0x34,0x2e,0x25,0x00,0x3e,0x09,0x69,0x5e,0x00,0x1c,0x22,0x22,0x15,0x00,0x3f,0x25,0x65,0x41,0x00,0x3f,0x28,0x24,0x24,0x00,0x3e,0x0c,0x11,0x3e,0x00,0x1c,0x22,0x22,0x1d,0x00,0x24,0x2a,0x2b,0x12,0x00,0x22,0x33,0x2a,0x26,0x00,0x22,0x32,0x2b,0x26,0x00, diff --git a/radio/src/fonts/std_fw/font_pl_04x06.png b/radio/src/fonts/std_fw/font_pl_04x06.png new file mode 100644 index 0000000000000000000000000000000000000000..b49d3e8baaa5f18c7928bae9231322109a59f6ab GIT binary patch literal 177 zcmeAS@N?(olHy`uVBq!ia0vp^Q9#Vj$P6Smm7T}{QfvV}A+A9B|Ns9>Z_d99WTkn! zIEHXsXN+c8@}J@Ve%tq(-~1APzkA;ShX3`u@7Lc>`@XG^!-1ja`NVUI+)*Y|*S~jQ z$i8g0<@b%a&r>(wJHX(5e%p5Q-BI6{?%jKUVa;=~Gl^W!47Mc$^?d&gwB}#^d?0xs Yf2!%PGo9QIfi^ODy85}Sb4q9e04{P)k^lez literal 0 HcmV?d00001 diff --git a/radio/src/fonts/std_fw/font_pl_05x07.lbm b/radio/src/fonts/std_fw/font_pl_05x07.lbm new file mode 100644 index 000000000..6c92d7afd --- /dev/null +++ b/radio/src/fonts/std_fw/font_pl_05x07.lbm @@ -0,0 +1 @@ +0x20,0x54,0x54,0xd4,0xb8,0x38,0x44,0x46,0x45,0x28,0x38,0x54,0x54,0xd4,0x98,0x00,0x49,0x7f,0x44,0x00,0x7c,0x08,0x06,0x05,0x78,0x38,0x44,0x46,0x45,0x38,0x48,0x54,0x56,0x55,0x20,0x44,0x65,0x55,0x4c,0x44,0x44,0x64,0x56,0x4d,0x44,0x7e,0x09,0x09,0xc9,0xbe,0x3c,0x42,0x42,0x43,0x24,0x7f,0x49,0x49,0xc9,0x81,0x08,0x7f,0x44,0x44,0x40,0x7e,0x08,0x12,0x21,0x7e,0x3c,0x42,0x42,0x43,0x3c,0x4c,0x52,0x52,0x53,0x24,0x62,0x52,0x4b,0x4a,0x46,0x62,0x52,0x4a,0x4b,0x46,0x3c,0x3c,0x24,0x42,0xff,0x24,0x18,0x81,0x42,0x3c, diff --git a/radio/src/fonts/std_fw/font_pl_05x07.png b/radio/src/fonts/std_fw/font_pl_05x07.png new file mode 100644 index 0000000000000000000000000000000000000000..85d8754813d68378609e1b8598890e9cfbaffc90 GIT binary patch literal 196 zcmeAS@N?(olHy`uVBq!ia0vp^DL~A@$P6S+rB0XuDYgKg5LY1m|NsA`H|O64vMN1Y z978y+C;y1g|6cofw${7%)$gz8CH(ka|Ni%{+ue2RjZ!x3IdEaJ&C?l7pXbP1pRdiY zJn*4%-NvW)#fuIZpP&EPHzC7r$K6xEzU{fMt^dw;_JIJK`rTi@-Yu@n-xFT@gfU?L vj&7#nNi9>APE2`j|DU<>Z>7S=a%KiLUi+_ZFK4y@9l_w~>gTe~DWM4fhjv&K literal 0 HcmV?d00001 diff --git a/radio/src/fonts/std_fw/font_pl_08x10.lbm b/radio/src/fonts/std_fw/font_pl_08x10.lbm new file mode 100644 index 000000000..4afc86fef --- /dev/null +++ b/radio/src/fonts/std_fw/font_pl_08x10.lbm @@ -0,0 +1 @@ +0x00,0x03,0xa0,0x07,0xb0,0x04,0x90,0x04,0x90,0x02,0xf0,0x0f,0xe0,0x0b,0x00,0x00,0xc0,0x01,0xe0,0x03,0x30,0x06,0x14,0x04,0x13,0x04,0x31,0x06,0x20,0x02,0x00,0x00,0xc0,0x01,0xe0,0x03,0xb0,0x06,0x90,0x04,0xb0,0x0c,0xe0,0x0a,0xc0,0x02,0x00,0x00,0x40,0x04,0x42,0x04,0xfe,0x07,0xfe,0x07,0x20,0x04,0x20,0x04,0x00,0x00,0x00,0x00,0xf0,0x07,0xf0,0x07,0x20,0x00,0x14,0x00,0x33,0x00,0xe1,0x07,0xc0,0x07,0x00,0x00,0xc0,0x01,0xe0,0x03,0x30,0x06,0x14,0x04,0x33,0x06,0xe1,0x03,0xc0,0x01,0x00,0x00,0x60,0x02,0xf0,0x06,0x90,0x04,0x94,0x04,0x93,0x04,0xb1,0x07,0x20,0x03,0x00,0x00,0x10,0x06,0x10,0x07,0x96,0x05,0xd6,0x04,0x70,0x04,0x30,0x04,0x00,0x00,0x00,0x00,0x10,0x06,0x10,0x07,0x90,0x05,0xd4,0x04,0x73,0x04,0x31,0x04,0x00,0x00,0x00,0x00,0xf0,0x07,0xf8,0x07,0x8c,0x00,0x86,0x00,0x86,0x00,0x8c,0x00,0xf8,0x0f,0xf0,0x0b,0xf0,0x01,0xf8,0x03,0x0c,0x06,0x04,0x04,0x06,0x04,0x05,0x04,0x0c,0x06,0x18,0x03,0x00,0x00,0xfe,0x07,0xfe,0x07,0x22,0x04,0x22,0x04,0x22,0x04,0x22,0x0c,0x02,0x08,0x80,0x00,0xfe,0x07,0xfe,0x07,0x40,0x04,0x40,0x04,0x20,0x04,0x20,0x04,0x00,0x04,0xfc,0x07,0xfc,0x07,0x38,0x00,0x74,0x00,0xe3,0x00,0xc1,0x01,0xfc,0x07,0xfc,0x07,0xe0,0x01,0xf0,0x03,0x18,0x06,0x08,0x04,0x0c,0x04,0x1b,0x06,0xf1,0x03,0xe0,0x01,0x30,0x02,0x78,0x06,0x48,0x04,0x4c,0x04,0x4b,0x04,0x49,0x04,0xd8,0x07,0x90,0x03,0x00,0x00,0x08,0x06,0x08,0x07,0x8b,0x05,0xcb,0x04,0x68,0x04,0x38,0x04,0x18,0x04,0x00,0x00,0x08,0x06,0x08,0x07,0x88,0x05,0xcc,0x04,0x6b,0x04,0x39,0x04,0x18,0x04, diff --git a/radio/src/fonts/std_fw/font_pl_08x10.png b/radio/src/fonts/std_fw/font_pl_08x10.png new file mode 100644 index 0000000000000000000000000000000000000000..c7dfcc9c0503976c2f68edd779ffe21c9e35e7be GIT binary patch literal 266 zcmV+l0rmcgP)GyHE0wbL!eTS`1^!W6(Ze92p16` zetE-Q3Iw7tYRq%j2lnB;rzBw;2988b$P7PuU&2iMyv7x8N3{9Tq>sAs54g#UO2qn? Q&j0`b07*qoM6N<$f^G?M`v3p{ literal 0 HcmV?d00001 diff --git a/radio/src/fonts/std_fw/font_pl_10x14.lbm b/radio/src/fonts/std_fw/font_pl_10x14.lbm new file mode 100644 index 000000000..b37adaa57 --- /dev/null +++ b/radio/src/fonts/std_fw/font_pl_10x14.lbm @@ -0,0 +1 @@ +0x00,0x18,0x00,0x3c,0x60,0x7e,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0xe6,0xc0,0xbf,0x80,0xbf,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x68,0x60,0x6c,0x60,0x67,0x60,0x63,0x70,0x01,0x38,0x00,0x18,0x80,0x1f,0xc0,0x3f,0xe0,0x76,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0xe6,0xc0,0x87,0x80,0x87,0x00,0x00,0x00,0x00,0x06,0x61,0x06,0x61,0xfe,0x7f,0xfe,0x7f,0x80,0x60,0x80,0x60,0x00,0x00,0x00,0x00,0xe0,0x7f,0xe0,0x7f,0x80,0x01,0xc0,0x01,0xe8,0x00,0x6c,0x00,0x67,0x00,0xe3,0x00,0xc1,0x7f,0x80,0x7f,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x68,0x60,0x6c,0x60,0x67,0x60,0xe3,0x70,0xc1,0x3f,0x80,0x1f,0x80,0x61,0xc0,0x63,0xe0,0x67,0x60,0x66,0x68,0x66,0x6c,0x66,0x67,0x66,0x63,0x7e,0x01,0x3c,0x00,0x18,0x60,0x60,0x60,0x70,0x60,0x78,0x66,0x7c,0x66,0x6e,0x60,0x67,0xe0,0x63,0xe0,0x61,0xe0,0x60,0x60,0x60,0x60,0x60,0x60,0x70,0x60,0x78,0x60,0x7c,0x68,0x6e,0x6c,0x67,0xe7,0x63,0xe3,0x61,0xe1,0x60,0x60,0x60,0xe0,0x7f,0xf0,0x7f,0xb8,0x01,0x9c,0x01,0x8e,0x01,0x8e,0x01,0x9c,0x01,0xb8,0x61,0xf0,0xff,0xe0,0xbf,0xe0,0x1f,0xf0,0x3f,0x38,0x70,0x18,0x60,0x1c,0x60,0x1f,0x60,0x1b,0x60,0x39,0x70,0x70,0x38,0x60,0x18,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x06,0xa0,0x06,0x80,0x00,0x06,0xfe,0x7f,0xfe,0x7f,0x00,0x63,0x80,0x61,0x80,0x61,0xc0,0x60,0xc0,0x60,0x60,0x60,0x60,0x60,0xf8,0x7f,0xf8,0x7f,0xe0,0x00,0xc0,0x01,0x80,0x03,0x04,0x07,0x07,0x0e,0x03,0x1c,0xf9,0x7f,0xf8,0x7f,0xe0,0x1f,0xf0,0x3f,0x38,0x70,0x18,0x60,0x1c,0x60,0x1f,0x60,0x1b,0x60,0x39,0x70,0xf0,0x3f,0xe0,0x1f,0xe0,0x18,0xf0,0x39,0xb8,0x73,0x18,0x63,0x1c,0x63,0x1f,0x63,0x1b,0x63,0x39,0x77,0x70,0x3e,0x60,0x1c,0x18,0x70,0x18,0x78,0x18,0x7c,0x18,0x6e,0x1b,0x67,0x9b,0x63,0xd8,0x61,0xf8,0x60,0x78,0x60,0x38,0x60,0x18,0x70,0x18,0x78,0x18,0x7c,0x18,0x6e,0x18,0x67,0x9c,0x63,0xdf,0x61,0xfb,0x60,0x79,0x60,0x38,0x60, diff --git a/radio/src/fonts/std_fw/font_pl_10x14.png b/radio/src/fonts/std_fw/font_pl_10x14.png new file mode 100644 index 0000000000000000000000000000000000000000..02352cdac743a5906940b992231a24fa425876c1 GIT binary patch literal 368 zcmV-$0gwKPP)Gu&zn&|4#YC=C7_0+wF_7&zuZ>~(W~l@U$fdxJpa^T><6!M>L8q5-m~nrtbMGVa9PPFtG`Um zt@z~A?U?s6XR{`4HmkY#e4o!M`gfN$MKSq5FLg!FKO_T(r+9kSL;e?0s?~Eu-Bu+4 O0000Z_d99WN{XF zL>4nJa0`PlBg3pY5H=O_PcD{oYKM)Ice5FA%0I6#}JO|$v^tJBr?vhGdwz! VF{3wVxg1c6!PC{xWt~$(698T_AX)$b literal 0 HcmV?d00001 diff --git a/radio/src/fonts/std_fw/font_pt_05x07.lbm b/radio/src/fonts/std_fw/font_pt_05x07.lbm new file mode 100644 index 000000000..8f2c832a2 --- /dev/null +++ b/radio/src/fonts/std_fw/font_pt_05x07.lbm @@ -0,0 +1 @@ +0x78,0x14,0x16,0x15,0x78,0x20,0x54,0x56,0x55,0x78,0x78,0x16,0x15,0x16,0x78,0x20,0x56,0x55,0x56,0x78,0x7a,0x15,0x16,0x15,0x78,0x20,0x56,0x55,0x56,0x79,0x78,0x15,0x16,0x14,0x78,0x20,0x55,0x56,0x54,0x78,0x1e,0xa1,0x61,0x21,0x12,0x1c,0xa2,0x62,0x22,0x10,0x7c,0x54,0x56,0x55,0x44,0x38,0x54,0x56,0x55,0x18,0x7c,0x56,0x55,0x56,0x44,0x38,0x56,0x55,0x56,0x18,0x00,0x44,0x7e,0x45,0x00,0x00,0x4c,0x7a,0x40,0x00,0x3c,0x42,0x42,0x43,0x3c,0x38,0x44,0x46,0x45,0x38,0x3c,0x42,0x43,0x42,0x3c,0x38,0x44,0x46,0x44,0x38,0x3c,0x43,0x42,0x43,0x3c,0x38,0x46,0x44,0x46,0x38,0x3c,0x40,0x42,0x41,0x3c,0x38,0x40,0x44,0x22,0x78, diff --git a/radio/src/fonts/std_fw/font_pt_05x07.png b/radio/src/fonts/std_fw/font_pt_05x07.png new file mode 100644 index 0000000000000000000000000000000000000000..768ff309f095d647b56e5ddaa89cc0c47c732e23 GIT binary patch literal 246 zcmeAS@N?(olHy`uVBq!ia0vp^6+q0v$P6MoRt5kmwg8_HS0MfW|No^o=iddg7?Zr+ zT^Kr8Wj%l#&H|6fVg?3oVGw3ym^DWND9B#o>FdgVmra;UPpfG2+ciL;GEW!B5RU7~ z74iFCU;X~?e);|P_3{5+|F3JSUhljiSs%>6MXL8$BcGf#*ypxW` z<{M8rUmI7s{@1G27(8A5T-G@yGywo`tY9Vp literal 0 HcmV?d00001 diff --git a/radio/src/fonts/std_fw/font_pt_08x10.lbm b/radio/src/fonts/std_fw/font_pt_08x10.lbm new file mode 100644 index 000000000..ac3c9fafb --- /dev/null +++ b/radio/src/fonts/std_fw/font_pt_08x10.lbm @@ -0,0 +1 @@ +0xf0,0x07,0xf8,0x07,0x88,0x00,0x8c,0x00,0x8b,0x00,0x89,0x00,0xf8,0x07,0xf0,0x07,0x00,0x03,0xa0,0x07,0xb0,0x04,0x90,0x04,0x98,0x02,0xf6,0x07,0xe2,0x07,0x00,0x00,0xf0,0x07,0xfa,0x07,0x8b,0x00,0x89,0x00,0x89,0x00,0x8b,0x00,0xfa,0x07,0xf0,0x07,0x00,0x03,0xa4,0x07,0xb6,0x04,0x93,0x04,0x96,0x02,0xf4,0x07,0xe0,0x07,0x00,0x00,0xf0,0x07,0xfa,0x07,0x89,0x00,0x89,0x00,0x8b,0x00,0x8a,0x00,0xfa,0x07,0xf1,0x07,0x00,0x03,0xa0,0x07,0xb4,0x04,0x92,0x04,0x96,0x02,0xf4,0x07,0xe2,0x07,0x00,0x00,0xf0,0x07,0xf8,0x07,0x89,0x00,0x8b,0x00,0x8c,0x00,0x88,0x00,0xf8,0x07,0xf0,0x07,0x00,0x03,0xa0,0x07,0xb2,0x04,0x96,0x04,0x98,0x02,0xf0,0x07,0xe0,0x07,0x00,0x00,0xf8,0x00,0xfc,0x01,0x8e,0x0b,0x06,0x0f,0x02,0x06,0x02,0x02,0x06,0x03,0x04,0x01,0xe0,0x00,0xf0,0x01,0x18,0x0b,0x08,0x0e,0x08,0x06,0x18,0x03,0x10,0x01,0x00,0x00,0xf8,0x07,0xf8,0x07,0x48,0x04,0x4c,0x04,0x4b,0x04,0x49,0x04,0x08,0x04,0x00,0x00,0xc0,0x01,0xe0,0x03,0xb0,0x06,0x9c,0x04,0xb6,0x04,0xe2,0x06,0xc0,0x02,0x00,0x00,0xf8,0x07,0xfa,0x07,0x4b,0x04,0x49,0x04,0x49,0x04,0x4b,0x04,0x0a,0x04,0x00,0x00,0xc0,0x01,0xe4,0x03,0xb6,0x06,0x93,0x04,0xb6,0x04,0xe4,0x06,0xc0,0x02,0x00,0x00,0x00,0x00,0x08,0x04,0x08,0x04,0xfc,0x07,0xfb,0x07,0x09,0x04,0x08,0x04,0x00,0x00,0x00,0x00,0x00,0x04,0x10,0x04,0xf4,0x07,0xf3,0x07,0x01,0x04,0x00,0x04,0x00,0x00,0xe0,0x01,0xf0,0x03,0x18,0x06,0x08,0x04,0x0c,0x04,0x1b,0x06,0xf1,0x03,0xe0,0x01,0xc0,0x01,0xe0,0x03,0x30,0x06,0x18,0x04,0x36,0x06,0xe2,0x03,0xc0,0x01,0x00,0x00,0xe0,0x01,0xf2,0x03,0x1b,0x06,0x09,0x04,0x09,0x04,0x1b,0x06,0xf2,0x03,0xe0,0x01,0xc0,0x01,0xe4,0x03,0x36,0x06,0x13,0x04,0x36,0x06,0xe4,0x03,0xc0,0x01,0x00,0x00,0xe2,0x01,0xf1,0x03,0x19,0x06,0x0b,0x04,0x0a,0x04,0x1a,0x06,0xf1,0x03,0xe0,0x01,0xc0,0x01,0xe4,0x03,0x32,0x06,0x16,0x04,0x34,0x06,0xe2,0x03,0xc0,0x01,0x00,0x00,0xfc,0x01,0xfc,0x03,0x00,0x06,0x04,0x04,0x03,0x04,0x01,0x06,0xfc,0x03,0xfc,0x01,0xf0,0x01,0xf0,0x03,0x00,0x06,0x04,0x04,0x03,0x02,0xf1,0x07,0xf0,0x07,0x00,0x00, diff --git a/radio/src/fonts/std_fw/font_pt_08x10.png b/radio/src/fonts/std_fw/font_pt_08x10.png new file mode 100644 index 0000000000000000000000000000000000000000..fe2f3adda2c516a298f37ba3fdb90a2ee9103833 GIT binary patch literal 315 zcmeAS@N?(olHy`uVBq!ia0vp^2Y{G|kr_zxStxV^DYgKg5LY1m|NsA`H|O64vKW)R z-CYM z^VkoI%bSEK{%YntFe_{B?SD>dQ;JVrkDr^jVb-Rbm%e>WblauyD6^_f%q4X5w|zAl ztlSwn0?XH_1~wjO-cvHiqFB!|_m78N=@}WzX^$Q+6D>YoBf+1neXLKTgn4uFcI|(M zEC2RvVtK&f@@jgTd3)&t;uc GLK6TQj%4Sl*2C8^N7 zD_AS{`?-3%q8eVfiP?jp5e#T0mxYH&gEE;E9@NAF(oD)Iy$D5=j*Nx*cvuAnQVq{gW|Vo2f^ck!93;l+95lOSZtuF7 knvC#c5kI5q1OL0e0pb}9gN6n&4*&oF07*qoM6N<$f><7}!vFvP literal 0 HcmV?d00001 diff --git a/radio/src/fonts/std_fw/font_se_04x06.lbm b/radio/src/fonts/std_fw/font_se_04x06.lbm new file mode 100644 index 000000000..8888b2f6b --- /dev/null +++ b/radio/src/fonts/std_fw/font_se_04x06.lbm @@ -0,0 +1 @@ +0x18,0x25,0x15,0x3c,0x00,0x18,0x25,0x14,0x3d,0x00,0x18,0x25,0x24,0x19,0x00,0x3c,0x0b,0x0b,0x3c,0x00,0x3d,0x0a,0x0a,0x3d,0x00,0x1d,0x22,0x22,0x1d,0x00, diff --git a/radio/src/fonts/std_fw/font_se_04x06.png b/radio/src/fonts/std_fw/font_se_04x06.png new file mode 100644 index 0000000000000000000000000000000000000000..aeba5adedcf32b29a878e4126285eea96af1cde9 GIT binary patch literal 157 zcmeAS@N?(olHy`uVBq!ia0vp^azM<^$P6S^)$=z2DYgKg5LY1m|NsA`H|O64vN#Jo zB8wRqxP?KOkzv*x37{Z*iKnkC`&~9}P6?xW4b^2pAuUfA#}JO|$unl>Zfkw`zy7o_ yk8S4lZ3ZdsoH>afx|lXyTNZ20JmtrKb_Q7u!Rx1j#o~dw7(8A5T-G@yGyworQ7jAq literal 0 HcmV?d00001 diff --git a/radio/src/fonts/std_fw/font_se_05x07.lbm b/radio/src/fonts/std_fw/font_se_05x07.lbm new file mode 100644 index 000000000..8d767a82b --- /dev/null +++ b/radio/src/fonts/std_fw/font_se_05x07.lbm @@ -0,0 +1 @@ +0x20,0x54,0x56,0x54,0x78,0x20,0x56,0x54,0x56,0x78,0x38,0x46,0x44,0x46,0x38,0x7c,0x13,0x13,0x12,0x7c,0x7c,0x13,0x12,0x13,0x7c,0x3c,0x43,0x42,0x43,0x3c, diff --git a/radio/src/fonts/std_fw/font_se_05x07.png b/radio/src/fonts/std_fw/font_se_05x07.png new file mode 100644 index 0000000000000000000000000000000000000000..8456af741ead3dd0e2818946a3e12626de36d80d GIT binary patch literal 160 zcmeAS@N?(olHy`uVBq!ia0vp^azM<%$P6T}6y8k-QfvV}A+A9B|Ns9>Z_d99WN{XF zL>4nJa0`PlBg3pY5H=O_PcD{oD#ez{WxX=g>*e#978y+C;#|={}tEayE&c8 zJhqS&K+sj18QXOboFyt=akR{0D|u? Ai~s-t literal 0 HcmV?d00001 diff --git a/radio/src/fonts/std_fw/font_se_08x10.lbm b/radio/src/fonts/std_fw/font_se_08x10.lbm new file mode 100644 index 000000000..f31490f1a --- /dev/null +++ b/radio/src/fonts/std_fw/font_se_08x10.lbm @@ -0,0 +1 @@ +0x00,0x03,0xa0,0x07,0xb4,0x04,0x9a,0x04,0x9a,0x02,0xf4,0x07,0xe0,0x07,0x00,0x00,0x00,0x03,0xa0,0x07,0xb6,0x04,0x96,0x04,0x90,0x02,0xf6,0x07,0xe6,0x07,0x00,0x00,0xc0,0x01,0xe6,0x03,0x36,0x06,0x10,0x04,0x36,0x06,0xe6,0x03,0xc0,0x01,0x00,0x00,0xe0,0x07,0xf0,0x07,0x9c,0x00,0x9a,0x00,0x9a,0x00,0x9c,0x00,0xf0,0x07,0xe0,0x07,0xe0,0x07,0xf6,0x07,0x96,0x00,0x88,0x00,0x88,0x00,0x96,0x00,0xf6,0x07,0xe0,0x07,0xe0,0x01,0xf6,0x03,0x16,0x06,0x08,0x04,0x08,0x04,0x16,0x06,0xf6,0x03,0xe0,0x01, diff --git a/radio/src/fonts/std_fw/font_se_08x10.png b/radio/src/fonts/std_fw/font_se_08x10.png new file mode 100644 index 0000000000000000000000000000000000000000..330fa77a20acfa55dd765254a8f24989ef826be3 GIT binary patch literal 190 zcmeAS@N?(olHy`uVBq!ia0vp^20+Zi$P6UqO4bMgDYgKg5LY1m|NsA`H|O64vN#Jo zB8wRqxP?KOkzv*x37{Z*iKnkC`&~9}PI2>&TW6mEg}gmo978y+tM+WL%#u<%_M$Dp5D$SQ)_B>YU?B`v+CUfQq)KJnEKW>oNQ0UFET>FVdQ&MBb@0KqUgS^xk5 literal 0 HcmV?d00001 diff --git a/radio/src/fonts/std_fw/font_se_10x14.lbm b/radio/src/fonts/std_fw/font_se_10x14.lbm new file mode 100644 index 000000000..20ce6d8df --- /dev/null +++ b/radio/src/fonts/std_fw/font_se_10x14.lbm @@ -0,0 +1 @@ +0x00,0x18,0x00,0x3c,0x60,0x7e,0x60,0x66,0x6e,0x66,0x6a,0x66,0x6e,0x66,0xe0,0x66,0xc0,0x7f,0x80,0x7f,0x00,0x18,0x00,0x3c,0x6c,0x7e,0x6c,0x66,0x60,0x66,0x60,0x66,0x6c,0x66,0xec,0x66,0xc0,0x7f,0x80,0x7f,0x80,0x1f,0xc0,0x3f,0xec,0x70,0x6c,0x60,0x60,0x60,0x60,0x60,0x6c,0x60,0xec,0x70,0xc0,0x3f,0x80,0x1f,0xe0,0x7f,0xf0,0x7f,0xb8,0x01,0x9e,0x01,0x9a,0x01,0x9a,0x01,0x9e,0x01,0xb8,0x01,0xf0,0x7f,0xe0,0x7f,0xe0,0x7f,0xf6,0x7f,0xba,0x01,0x9c,0x01,0x8e,0x01,0x8e,0x01,0x9c,0x01,0xba,0x01,0xf6,0x7f,0xe0,0x7f,0xe0,0x1f,0xf6,0x3f,0x36,0x70,0x18,0x60,0x18,0x60,0x18,0x60,0x18,0x60,0x36,0x70,0xf6,0x3f,0xe0,0x1f, diff --git a/radio/src/fonts/std_fw/font_se_10x14.png b/radio/src/fonts/std_fw/font_se_10x14.png new file mode 100644 index 0000000000000000000000000000000000000000..4ac08c4d598a870e9402a1c48d56a3da24e19360 GIT binary patch literal 233 zcmeAS@N?(olHy`uVBq!ia0vp^Hb5-E$P6S4V)|-;6kC8#h%1o(|NsBeoAd7iS)2tP zk;M!Q+`=Ht$S`Y;1W=H@#M9T6{Vp3fr#Oo_*P0JNp)yYw#}JO|$v^lROfEFEKkwh$$jE#~ al3`MvTQ2v?z*?XS7(8A5T-G@yGywpk=1&9w literal 0 HcmV?d00001 From c38f7f9941b3267d7f5fab5f0ef962eb4761f13a Mon Sep 17 00:00:00 2001 From: mhotar Date: Tue, 17 Dec 2013 16:23:01 +0100 Subject: [PATCH 015/308] Deleted unused folders --- radio/src/fonts/sqt5_pw_fw/font_03x05.lbm | 1 - radio/src/fonts/sqt5_pw_fw/font_03x05.png | Bin 222 -> 0 bytes radio/src/fonts/sqt5_pw_fw/font_04x06.lbm | 6 ------ radio/src/fonts/sqt5_pw_fw/font_04x06.png | Bin 874 -> 0 bytes radio/src/fonts/sqt5_pw_fw/font_04x06_extra.lbm | 1 - radio/src/fonts/sqt5_pw_fw/font_04x06_extra.png | Bin 159 -> 0 bytes radio/src/fonts/sqt5_pw_fw/font_05x07.lbm | 6 ------ radio/src/fonts/sqt5_pw_fw/font_05x07.png | Bin 937 -> 0 bytes radio/src/fonts/sqt5_pw_fw/font_05x07_extra.lbm | 1 - radio/src/fonts/sqt5_pw_fw/font_05x07_extra.png | Bin 161 -> 0 bytes radio/src/fonts/sqt5_pw_fw/font_08x10.lbm | 6 ------ radio/src/fonts/sqt5_pw_fw/font_08x10.png | Bin 1390 -> 0 bytes radio/src/fonts/sqt5_pw_fw/font_10x14.lbm | 6 ------ radio/src/fonts/sqt5_pw_fw/font_10x14.png | Bin 1809 -> 0 bytes .../fonts/sqt5_pw_fw/font_10x14_compressed.lbm | 1 - .../fonts/sqt5_pw_fw/font_10x14_compressed.png | Bin 1157 -> 0 bytes radio/src/fonts/sqt5_pw_fw/font_10x14_extra.lbm | 1 - radio/src/fonts/sqt5_pw_fw/font_10x14_extra.png | Bin 229 -> 0 bytes radio/src/fonts/sqt5_pw_fw/font_cz_04x06.lbm | 1 - radio/src/fonts/sqt5_pw_fw/font_cz_04x06.png | Bin 215 -> 0 bytes radio/src/fonts/sqt5_pw_fw/font_cz_05x07.lbm | 1 - radio/src/fonts/sqt5_pw_fw/font_cz_05x07.png | Bin 260 -> 0 bytes radio/src/fonts/sqt5_pw_fw/font_cz_08x10.lbm | 1 - radio/src/fonts/sqt5_pw_fw/font_cz_08x10.png | Bin 265 -> 0 bytes radio/src/fonts/sqt5_pw_fw/font_cz_10x14.lbm | 1 - radio/src/fonts/sqt5_pw_fw/font_cz_10x14.png | Bin 352 -> 0 bytes radio/src/fonts/sqt5_pw_fw/font_de_04x06.lbm | 1 - radio/src/fonts/sqt5_pw_fw/font_de_04x06.png | Bin 176 -> 0 bytes radio/src/fonts/sqt5_pw_fw/font_de_05x07.lbm | 1 - radio/src/fonts/sqt5_pw_fw/font_de_05x07.png | Bin 181 -> 0 bytes radio/src/fonts/sqt5_pw_fw/font_de_08x10.lbm | 1 - radio/src/fonts/sqt5_pw_fw/font_de_08x10.png | Bin 192 -> 0 bytes radio/src/fonts/sqt5_pw_fw/font_de_10x14.lbm | 1 - radio/src/fonts/sqt5_pw_fw/font_de_10x14.png | Bin 241 -> 0 bytes radio/src/fonts/sqt5_pw_fw/font_es_04x06.lbm | 1 - radio/src/fonts/sqt5_pw_fw/font_es_04x06.png | Bin 155 -> 0 bytes radio/src/fonts/sqt5_pw_fw/font_es_05x07.lbm | 1 - radio/src/fonts/sqt5_pw_fw/font_es_05x07.png | Bin 155 -> 0 bytes radio/src/fonts/sqt5_pw_fw/font_es_08x10.lbm | 1 - radio/src/fonts/sqt5_pw_fw/font_es_08x10.png | Bin 161 -> 0 bytes radio/src/fonts/sqt5_pw_fw/font_es_10x14.lbm | 1 - radio/src/fonts/sqt5_pw_fw/font_es_10x14.png | Bin 174 -> 0 bytes radio/src/fonts/sqt5_pw_fw/font_fr_04x06.lbm | 1 - radio/src/fonts/sqt5_pw_fw/font_fr_04x06.png | Bin 3570 -> 0 bytes radio/src/fonts/sqt5_pw_fw/font_fr_05x07.lbm | 1 - radio/src/fonts/sqt5_pw_fw/font_fr_05x07.png | Bin 174 -> 0 bytes radio/src/fonts/sqt5_pw_fw/font_fr_08x10.lbm | 1 - radio/src/fonts/sqt5_pw_fw/font_fr_08x10.png | Bin 3597 -> 0 bytes radio/src/fonts/sqt5_pw_fw/font_fr_10x14.lbm | 1 - radio/src/fonts/sqt5_pw_fw/font_fr_10x14.png | Bin 202 -> 0 bytes radio/src/fonts/sqt5_pw_fw/font_it_04x06.lbm | 1 - radio/src/fonts/sqt5_pw_fw/font_it_04x06.png | Bin 157 -> 0 bytes radio/src/fonts/sqt5_pw_fw/font_it_05x07.lbm | 1 - radio/src/fonts/sqt5_pw_fw/font_it_05x07.png | Bin 157 -> 0 bytes radio/src/fonts/sqt5_pw_fw/font_it_08x10.lbm | 1 - radio/src/fonts/sqt5_pw_fw/font_it_08x10.png | Bin 162 -> 0 bytes radio/src/fonts/sqt5_pw_fw/font_it_10x14.lbm | 1 - radio/src/fonts/sqt5_pw_fw/font_it_10x14.png | Bin 171 -> 0 bytes radio/src/fonts/sqt5_pw_fw/font_pl_04x06.lbm | 1 - radio/src/fonts/sqt5_pw_fw/font_pl_04x06.png | Bin 175 -> 0 bytes radio/src/fonts/sqt5_pw_fw/font_pl_05x07.lbm | 1 - radio/src/fonts/sqt5_pw_fw/font_pl_05x07.png | Bin 195 -> 0 bytes radio/src/fonts/sqt5_pw_fw/font_pl_08x10.lbm | 1 - radio/src/fonts/sqt5_pw_fw/font_pl_08x10.png | Bin 237 -> 0 bytes radio/src/fonts/sqt5_pw_fw/font_pl_10x14.lbm | 1 - radio/src/fonts/sqt5_pw_fw/font_pl_10x14.png | Bin 333 -> 0 bytes radio/src/fonts/sqt5_pw_fw/font_pt_04x06.lbm | 1 - radio/src/fonts/sqt5_pw_fw/font_pt_04x06.png | Bin 130 -> 0 bytes radio/src/fonts/sqt5_pw_fw/font_pt_05x07.lbm | 1 - radio/src/fonts/sqt5_pw_fw/font_pt_05x07.png | Bin 244 -> 0 bytes radio/src/fonts/sqt5_pw_fw/font_pt_08x10.lbm | 1 - radio/src/fonts/sqt5_pw_fw/font_pt_08x10.png | Bin 289 -> 0 bytes radio/src/fonts/sqt5_pw_fw/font_pt_10x14.lbm | 1 - radio/src/fonts/sqt5_pw_fw/font_pt_10x14.png | Bin 379 -> 0 bytes radio/src/fonts/sqt5_pw_fw/font_se_04x06.lbm | 1 - radio/src/fonts/sqt5_pw_fw/font_se_04x06.png | Bin 169 -> 0 bytes radio/src/fonts/sqt5_pw_fw/font_se_05x07.lbm | 1 - radio/src/fonts/sqt5_pw_fw/font_se_05x07.png | Bin 174 -> 0 bytes radio/src/fonts/sqt5_pw_fw/font_se_08x10.lbm | 1 - radio/src/fonts/sqt5_pw_fw/font_se_08x10.png | Bin 195 -> 0 bytes radio/src/fonts/sqt5_pw_fw/font_se_10x14.lbm | 1 - radio/src/fonts/sqt5_pw_fw/font_se_10x14.png | Bin 214 -> 0 bytes radio/src/fonts/std_pw_fw/font_03x05.lbm | 1 - radio/src/fonts/std_pw_fw/font_03x05.png | Bin 222 -> 0 bytes radio/src/fonts/std_pw_fw/font_04x06.lbm | 6 ------ radio/src/fonts/std_pw_fw/font_04x06.png | Bin 519 -> 0 bytes radio/src/fonts/std_pw_fw/font_04x06_extra.lbm | 1 - radio/src/fonts/std_pw_fw/font_04x06_extra.png | Bin 159 -> 0 bytes radio/src/fonts/std_pw_fw/font_05x07.lbm | 6 ------ radio/src/fonts/std_pw_fw/font_05x07.png | Bin 570 -> 0 bytes radio/src/fonts/std_pw_fw/font_05x07_extra.lbm | 1 - radio/src/fonts/std_pw_fw/font_05x07_extra.png | Bin 161 -> 0 bytes radio/src/fonts/std_pw_fw/font_08x10.lbm | 6 ------ radio/src/fonts/std_pw_fw/font_08x10.png | Bin 767 -> 0 bytes radio/src/fonts/std_pw_fw/font_10x14.lbm | 6 ------ radio/src/fonts/std_pw_fw/font_10x14.png | Bin 1123 -> 0 bytes .../fonts/std_pw_fw/font_10x14_compressed.lbm | 1 - .../fonts/std_pw_fw/font_10x14_compressed.png | Bin 1500 -> 0 bytes radio/src/fonts/std_pw_fw/font_10x14_extra.lbm | 1 - radio/src/fonts/std_pw_fw/font_10x14_extra.png | Bin 229 -> 0 bytes radio/src/fonts/std_pw_fw/font_cz_04x06.lbm | 1 - radio/src/fonts/std_pw_fw/font_cz_04x06.png | Bin 220 -> 0 bytes radio/src/fonts/std_pw_fw/font_cz_05x07.lbm | 1 - radio/src/fonts/std_pw_fw/font_cz_05x07.png | Bin 223 -> 0 bytes radio/src/fonts/std_pw_fw/font_cz_08x10.lbm | 1 - radio/src/fonts/std_pw_fw/font_cz_08x10.png | Bin 292 -> 0 bytes radio/src/fonts/std_pw_fw/font_cz_10x14.lbm | 1 - radio/src/fonts/std_pw_fw/font_cz_10x14.png | Bin 410 -> 0 bytes radio/src/fonts/std_pw_fw/font_de_04x06.lbm | 1 - radio/src/fonts/std_pw_fw/font_de_04x06.png | Bin 179 -> 0 bytes radio/src/fonts/std_pw_fw/font_de_05x07.lbm | 1 - radio/src/fonts/std_pw_fw/font_de_05x07.png | Bin 170 -> 0 bytes radio/src/fonts/std_pw_fw/font_de_08x10.lbm | 1 - radio/src/fonts/std_pw_fw/font_de_08x10.png | Bin 202 -> 0 bytes radio/src/fonts/std_pw_fw/font_de_10x14.lbm | 1 - radio/src/fonts/std_pw_fw/font_de_10x14.png | Bin 254 -> 0 bytes radio/src/fonts/std_pw_fw/font_es_04x06.lbm | 1 - radio/src/fonts/std_pw_fw/font_es_04x06.png | Bin 144 -> 0 bytes radio/src/fonts/std_pw_fw/font_es_05x07.lbm | 1 - radio/src/fonts/std_pw_fw/font_es_05x07.png | Bin 147 -> 0 bytes radio/src/fonts/std_pw_fw/font_es_08x10.lbm | 1 - radio/src/fonts/std_pw_fw/font_es_08x10.png | Bin 168 -> 0 bytes radio/src/fonts/std_pw_fw/font_es_10x14.lbm | 1 - radio/src/fonts/std_pw_fw/font_es_10x14.png | Bin 177 -> 0 bytes radio/src/fonts/std_pw_fw/font_fr_04x06.lbm | 1 - radio/src/fonts/std_pw_fw/font_fr_04x06.png | Bin 3610 -> 0 bytes radio/src/fonts/std_pw_fw/font_fr_05x07.lbm | 1 - radio/src/fonts/std_pw_fw/font_fr_05x07.png | Bin 163 -> 0 bytes radio/src/fonts/std_pw_fw/font_fr_08x10.lbm | 1 - radio/src/fonts/std_pw_fw/font_fr_08x10.png | Bin 3647 -> 0 bytes radio/src/fonts/std_pw_fw/font_fr_10x14.lbm | 1 - radio/src/fonts/std_pw_fw/font_fr_10x14.png | Bin 231 -> 0 bytes radio/src/fonts/std_pw_fw/font_it_04x06.lbm | 1 - radio/src/fonts/std_pw_fw/font_it_04x06.png | Bin 145 -> 0 bytes radio/src/fonts/std_pw_fw/font_it_05x07.lbm | 1 - radio/src/fonts/std_pw_fw/font_it_05x07.png | Bin 148 -> 0 bytes radio/src/fonts/std_pw_fw/font_it_08x10.lbm | 1 - radio/src/fonts/std_pw_fw/font_it_08x10.png | Bin 158 -> 0 bytes radio/src/fonts/std_pw_fw/font_it_10x14.lbm | 1 - radio/src/fonts/std_pw_fw/font_it_10x14.png | Bin 178 -> 0 bytes radio/src/fonts/std_pw_fw/font_pl_04x06.lbm | 1 - radio/src/fonts/std_pw_fw/font_pl_04x06.png | Bin 177 -> 0 bytes radio/src/fonts/std_pw_fw/font_pl_05x07.lbm | 1 - radio/src/fonts/std_pw_fw/font_pl_05x07.png | Bin 196 -> 0 bytes radio/src/fonts/std_pw_fw/font_pl_08x10.lbm | 1 - radio/src/fonts/std_pw_fw/font_pl_08x10.png | Bin 266 -> 0 bytes radio/src/fonts/std_pw_fw/font_pl_10x14.lbm | 1 - radio/src/fonts/std_pw_fw/font_pl_10x14.png | Bin 368 -> 0 bytes radio/src/fonts/std_pw_fw/font_pt_04x06.lbm | 1 - radio/src/fonts/std_pw_fw/font_pt_04x06.png | Bin 130 -> 0 bytes radio/src/fonts/std_pw_fw/font_pt_05x07.lbm | 1 - radio/src/fonts/std_pw_fw/font_pt_05x07.png | Bin 246 -> 0 bytes radio/src/fonts/std_pw_fw/font_pt_08x10.lbm | 1 - radio/src/fonts/std_pw_fw/font_pt_08x10.png | Bin 315 -> 0 bytes radio/src/fonts/std_pw_fw/font_pt_10x14.lbm | 1 - radio/src/fonts/std_pw_fw/font_pt_10x14.png | Bin 442 -> 0 bytes radio/src/fonts/std_pw_fw/font_se_04x06.lbm | 1 - radio/src/fonts/std_pw_fw/font_se_04x06.png | Bin 157 -> 0 bytes radio/src/fonts/std_pw_fw/font_se_05x07.lbm | 1 - radio/src/fonts/std_pw_fw/font_se_05x07.png | Bin 160 -> 0 bytes radio/src/fonts/std_pw_fw/font_se_08x10.lbm | 1 - radio/src/fonts/std_pw_fw/font_se_08x10.png | Bin 190 -> 0 bytes radio/src/fonts/std_pw_fw/font_se_10x14.lbm | 1 - radio/src/fonts/std_pw_fw/font_se_10x14.png | Bin 233 -> 0 bytes 164 files changed, 122 deletions(-) delete mode 100644 radio/src/fonts/sqt5_pw_fw/font_03x05.lbm delete mode 100644 radio/src/fonts/sqt5_pw_fw/font_03x05.png delete mode 100644 radio/src/fonts/sqt5_pw_fw/font_04x06.lbm delete mode 100644 radio/src/fonts/sqt5_pw_fw/font_04x06.png delete mode 100644 radio/src/fonts/sqt5_pw_fw/font_04x06_extra.lbm delete mode 100644 radio/src/fonts/sqt5_pw_fw/font_04x06_extra.png delete mode 100644 radio/src/fonts/sqt5_pw_fw/font_05x07.lbm delete mode 100644 radio/src/fonts/sqt5_pw_fw/font_05x07.png delete mode 100644 radio/src/fonts/sqt5_pw_fw/font_05x07_extra.lbm delete mode 100644 radio/src/fonts/sqt5_pw_fw/font_05x07_extra.png delete mode 100644 radio/src/fonts/sqt5_pw_fw/font_08x10.lbm delete mode 100644 radio/src/fonts/sqt5_pw_fw/font_08x10.png delete mode 100644 radio/src/fonts/sqt5_pw_fw/font_10x14.lbm delete mode 100644 radio/src/fonts/sqt5_pw_fw/font_10x14.png delete mode 100644 radio/src/fonts/sqt5_pw_fw/font_10x14_compressed.lbm delete mode 100644 radio/src/fonts/sqt5_pw_fw/font_10x14_compressed.png delete mode 100644 radio/src/fonts/sqt5_pw_fw/font_10x14_extra.lbm delete mode 100644 radio/src/fonts/sqt5_pw_fw/font_10x14_extra.png delete mode 100644 radio/src/fonts/sqt5_pw_fw/font_cz_04x06.lbm delete mode 100644 radio/src/fonts/sqt5_pw_fw/font_cz_04x06.png delete mode 100644 radio/src/fonts/sqt5_pw_fw/font_cz_05x07.lbm delete mode 100644 radio/src/fonts/sqt5_pw_fw/font_cz_05x07.png delete mode 100644 radio/src/fonts/sqt5_pw_fw/font_cz_08x10.lbm delete mode 100644 radio/src/fonts/sqt5_pw_fw/font_cz_08x10.png delete mode 100644 radio/src/fonts/sqt5_pw_fw/font_cz_10x14.lbm delete mode 100644 radio/src/fonts/sqt5_pw_fw/font_cz_10x14.png delete mode 100644 radio/src/fonts/sqt5_pw_fw/font_de_04x06.lbm delete mode 100644 radio/src/fonts/sqt5_pw_fw/font_de_04x06.png delete mode 100644 radio/src/fonts/sqt5_pw_fw/font_de_05x07.lbm delete mode 100644 radio/src/fonts/sqt5_pw_fw/font_de_05x07.png delete mode 100644 radio/src/fonts/sqt5_pw_fw/font_de_08x10.lbm delete mode 100644 radio/src/fonts/sqt5_pw_fw/font_de_08x10.png delete mode 100644 radio/src/fonts/sqt5_pw_fw/font_de_10x14.lbm delete mode 100644 radio/src/fonts/sqt5_pw_fw/font_de_10x14.png delete mode 100644 radio/src/fonts/sqt5_pw_fw/font_es_04x06.lbm delete mode 100644 radio/src/fonts/sqt5_pw_fw/font_es_04x06.png delete mode 100644 radio/src/fonts/sqt5_pw_fw/font_es_05x07.lbm delete mode 100644 radio/src/fonts/sqt5_pw_fw/font_es_05x07.png delete mode 100644 radio/src/fonts/sqt5_pw_fw/font_es_08x10.lbm delete mode 100644 radio/src/fonts/sqt5_pw_fw/font_es_08x10.png delete mode 100644 radio/src/fonts/sqt5_pw_fw/font_es_10x14.lbm delete mode 100644 radio/src/fonts/sqt5_pw_fw/font_es_10x14.png delete mode 100644 radio/src/fonts/sqt5_pw_fw/font_fr_04x06.lbm delete mode 100644 radio/src/fonts/sqt5_pw_fw/font_fr_04x06.png delete mode 100644 radio/src/fonts/sqt5_pw_fw/font_fr_05x07.lbm delete mode 100644 radio/src/fonts/sqt5_pw_fw/font_fr_05x07.png delete mode 100644 radio/src/fonts/sqt5_pw_fw/font_fr_08x10.lbm delete mode 100644 radio/src/fonts/sqt5_pw_fw/font_fr_08x10.png delete mode 100644 radio/src/fonts/sqt5_pw_fw/font_fr_10x14.lbm delete mode 100644 radio/src/fonts/sqt5_pw_fw/font_fr_10x14.png delete mode 100644 radio/src/fonts/sqt5_pw_fw/font_it_04x06.lbm delete mode 100644 radio/src/fonts/sqt5_pw_fw/font_it_04x06.png delete mode 100644 radio/src/fonts/sqt5_pw_fw/font_it_05x07.lbm delete mode 100644 radio/src/fonts/sqt5_pw_fw/font_it_05x07.png delete mode 100644 radio/src/fonts/sqt5_pw_fw/font_it_08x10.lbm delete mode 100644 radio/src/fonts/sqt5_pw_fw/font_it_08x10.png delete mode 100644 radio/src/fonts/sqt5_pw_fw/font_it_10x14.lbm delete mode 100644 radio/src/fonts/sqt5_pw_fw/font_it_10x14.png delete mode 100644 radio/src/fonts/sqt5_pw_fw/font_pl_04x06.lbm delete mode 100644 radio/src/fonts/sqt5_pw_fw/font_pl_04x06.png delete mode 100644 radio/src/fonts/sqt5_pw_fw/font_pl_05x07.lbm delete mode 100644 radio/src/fonts/sqt5_pw_fw/font_pl_05x07.png delete mode 100644 radio/src/fonts/sqt5_pw_fw/font_pl_08x10.lbm delete mode 100644 radio/src/fonts/sqt5_pw_fw/font_pl_08x10.png delete mode 100644 radio/src/fonts/sqt5_pw_fw/font_pl_10x14.lbm delete mode 100644 radio/src/fonts/sqt5_pw_fw/font_pl_10x14.png delete mode 100644 radio/src/fonts/sqt5_pw_fw/font_pt_04x06.lbm delete mode 100644 radio/src/fonts/sqt5_pw_fw/font_pt_04x06.png delete mode 100644 radio/src/fonts/sqt5_pw_fw/font_pt_05x07.lbm delete mode 100644 radio/src/fonts/sqt5_pw_fw/font_pt_05x07.png delete mode 100644 radio/src/fonts/sqt5_pw_fw/font_pt_08x10.lbm delete mode 100644 radio/src/fonts/sqt5_pw_fw/font_pt_08x10.png delete mode 100644 radio/src/fonts/sqt5_pw_fw/font_pt_10x14.lbm delete mode 100644 radio/src/fonts/sqt5_pw_fw/font_pt_10x14.png delete mode 100644 radio/src/fonts/sqt5_pw_fw/font_se_04x06.lbm delete mode 100644 radio/src/fonts/sqt5_pw_fw/font_se_04x06.png delete mode 100644 radio/src/fonts/sqt5_pw_fw/font_se_05x07.lbm delete mode 100644 radio/src/fonts/sqt5_pw_fw/font_se_05x07.png delete mode 100644 radio/src/fonts/sqt5_pw_fw/font_se_08x10.lbm delete mode 100644 radio/src/fonts/sqt5_pw_fw/font_se_08x10.png delete mode 100644 radio/src/fonts/sqt5_pw_fw/font_se_10x14.lbm delete mode 100644 radio/src/fonts/sqt5_pw_fw/font_se_10x14.png delete mode 100644 radio/src/fonts/std_pw_fw/font_03x05.lbm delete mode 100644 radio/src/fonts/std_pw_fw/font_03x05.png delete mode 100644 radio/src/fonts/std_pw_fw/font_04x06.lbm delete mode 100644 radio/src/fonts/std_pw_fw/font_04x06.png delete mode 100644 radio/src/fonts/std_pw_fw/font_04x06_extra.lbm delete mode 100644 radio/src/fonts/std_pw_fw/font_04x06_extra.png delete mode 100644 radio/src/fonts/std_pw_fw/font_05x07.lbm delete mode 100644 radio/src/fonts/std_pw_fw/font_05x07.png delete mode 100644 radio/src/fonts/std_pw_fw/font_05x07_extra.lbm delete mode 100644 radio/src/fonts/std_pw_fw/font_05x07_extra.png delete mode 100644 radio/src/fonts/std_pw_fw/font_08x10.lbm delete mode 100644 radio/src/fonts/std_pw_fw/font_08x10.png delete mode 100644 radio/src/fonts/std_pw_fw/font_10x14.lbm delete mode 100644 radio/src/fonts/std_pw_fw/font_10x14.png delete mode 100644 radio/src/fonts/std_pw_fw/font_10x14_compressed.lbm delete mode 100644 radio/src/fonts/std_pw_fw/font_10x14_compressed.png delete mode 100644 radio/src/fonts/std_pw_fw/font_10x14_extra.lbm delete mode 100644 radio/src/fonts/std_pw_fw/font_10x14_extra.png delete mode 100644 radio/src/fonts/std_pw_fw/font_cz_04x06.lbm delete mode 100644 radio/src/fonts/std_pw_fw/font_cz_04x06.png delete mode 100644 radio/src/fonts/std_pw_fw/font_cz_05x07.lbm delete mode 100644 radio/src/fonts/std_pw_fw/font_cz_05x07.png delete mode 100644 radio/src/fonts/std_pw_fw/font_cz_08x10.lbm delete mode 100644 radio/src/fonts/std_pw_fw/font_cz_08x10.png delete mode 100644 radio/src/fonts/std_pw_fw/font_cz_10x14.lbm delete mode 100644 radio/src/fonts/std_pw_fw/font_cz_10x14.png delete mode 100644 radio/src/fonts/std_pw_fw/font_de_04x06.lbm delete mode 100644 radio/src/fonts/std_pw_fw/font_de_04x06.png delete mode 100644 radio/src/fonts/std_pw_fw/font_de_05x07.lbm delete mode 100644 radio/src/fonts/std_pw_fw/font_de_05x07.png delete mode 100644 radio/src/fonts/std_pw_fw/font_de_08x10.lbm delete mode 100644 radio/src/fonts/std_pw_fw/font_de_08x10.png delete mode 100644 radio/src/fonts/std_pw_fw/font_de_10x14.lbm delete mode 100644 radio/src/fonts/std_pw_fw/font_de_10x14.png delete mode 100644 radio/src/fonts/std_pw_fw/font_es_04x06.lbm delete mode 100644 radio/src/fonts/std_pw_fw/font_es_04x06.png delete mode 100644 radio/src/fonts/std_pw_fw/font_es_05x07.lbm delete mode 100644 radio/src/fonts/std_pw_fw/font_es_05x07.png delete mode 100644 radio/src/fonts/std_pw_fw/font_es_08x10.lbm delete mode 100644 radio/src/fonts/std_pw_fw/font_es_08x10.png delete mode 100644 radio/src/fonts/std_pw_fw/font_es_10x14.lbm delete mode 100644 radio/src/fonts/std_pw_fw/font_es_10x14.png delete mode 100644 radio/src/fonts/std_pw_fw/font_fr_04x06.lbm delete mode 100644 radio/src/fonts/std_pw_fw/font_fr_04x06.png delete mode 100644 radio/src/fonts/std_pw_fw/font_fr_05x07.lbm delete mode 100644 radio/src/fonts/std_pw_fw/font_fr_05x07.png delete mode 100644 radio/src/fonts/std_pw_fw/font_fr_08x10.lbm delete mode 100644 radio/src/fonts/std_pw_fw/font_fr_08x10.png delete mode 100644 radio/src/fonts/std_pw_fw/font_fr_10x14.lbm delete mode 100644 radio/src/fonts/std_pw_fw/font_fr_10x14.png delete mode 100644 radio/src/fonts/std_pw_fw/font_it_04x06.lbm delete mode 100644 radio/src/fonts/std_pw_fw/font_it_04x06.png delete mode 100644 radio/src/fonts/std_pw_fw/font_it_05x07.lbm delete mode 100644 radio/src/fonts/std_pw_fw/font_it_05x07.png delete mode 100644 radio/src/fonts/std_pw_fw/font_it_08x10.lbm delete mode 100644 radio/src/fonts/std_pw_fw/font_it_08x10.png delete mode 100644 radio/src/fonts/std_pw_fw/font_it_10x14.lbm delete mode 100644 radio/src/fonts/std_pw_fw/font_it_10x14.png delete mode 100644 radio/src/fonts/std_pw_fw/font_pl_04x06.lbm delete mode 100644 radio/src/fonts/std_pw_fw/font_pl_04x06.png delete mode 100644 radio/src/fonts/std_pw_fw/font_pl_05x07.lbm delete mode 100644 radio/src/fonts/std_pw_fw/font_pl_05x07.png delete mode 100644 radio/src/fonts/std_pw_fw/font_pl_08x10.lbm delete mode 100644 radio/src/fonts/std_pw_fw/font_pl_08x10.png delete mode 100644 radio/src/fonts/std_pw_fw/font_pl_10x14.lbm delete mode 100644 radio/src/fonts/std_pw_fw/font_pl_10x14.png delete mode 100644 radio/src/fonts/std_pw_fw/font_pt_04x06.lbm delete mode 100644 radio/src/fonts/std_pw_fw/font_pt_04x06.png delete mode 100644 radio/src/fonts/std_pw_fw/font_pt_05x07.lbm delete mode 100644 radio/src/fonts/std_pw_fw/font_pt_05x07.png delete mode 100644 radio/src/fonts/std_pw_fw/font_pt_08x10.lbm delete mode 100644 radio/src/fonts/std_pw_fw/font_pt_08x10.png delete mode 100644 radio/src/fonts/std_pw_fw/font_pt_10x14.lbm delete mode 100644 radio/src/fonts/std_pw_fw/font_pt_10x14.png delete mode 100644 radio/src/fonts/std_pw_fw/font_se_04x06.lbm delete mode 100644 radio/src/fonts/std_pw_fw/font_se_04x06.png delete mode 100644 radio/src/fonts/std_pw_fw/font_se_05x07.lbm delete mode 100644 radio/src/fonts/std_pw_fw/font_se_05x07.png delete mode 100644 radio/src/fonts/std_pw_fw/font_se_08x10.lbm delete mode 100644 radio/src/fonts/std_pw_fw/font_se_08x10.png delete mode 100644 radio/src/fonts/std_pw_fw/font_se_10x14.lbm delete mode 100644 radio/src/fonts/std_pw_fw/font_se_10x14.png diff --git a/radio/src/fonts/sqt5_pw_fw/font_03x05.lbm b/radio/src/fonts/sqt5_pw_fw/font_03x05.lbm deleted file mode 100644 index 1e163ee0d..000000000 --- a/radio/src/fonts/sqt5_pw_fw/font_03x05.lbm +++ /dev/null @@ -1 +0,0 @@ -0x04,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0x11,0x0e,0x12,0x1f,0x10,0x19,0x15,0x13,0x11,0x15,0x1f,0x07,0x04,0x1f,0x17,0x15,0x1d,0x1f,0x15,0x1d,0x01,0x1d,0x03,0x1f,0x15,0x1f,0x17,0x15,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x1f,0x11, diff --git a/radio/src/fonts/sqt5_pw_fw/font_03x05.png b/radio/src/fonts/sqt5_pw_fw/font_03x05.png deleted file mode 100644 index c378d30f00d8dc9d479bb2526dbc754ed709ec9a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 222 zcmeAS@N?(olHy`uVBq!ia0vp^;XusF!2~4tzj=NfNHG=%xjQkeJ16rJ$l)yTh%9Dc z;1&j9Muu5)B!GhKC7!;n?04B^#Q2%dEM&e26e{p^aSX9IeKzDY-vI@V=%4@V-|?li ze7JPk$=_u))7pk7mzf)cOc*9u-u>0^^Wy!4%+niL8G3w!xHl+Vc~)+#&MuvBlglo~ z>-k+ltE}%o7AUW8V!7BS#NZ!;N~;K!9C9+i@IUFj{N#`gy!wiN?kp zTbda1NZa9w^G6+ZrvDK24OoZ)T1`UEk2)W3a1Wu534Af)5Q(}DCNpz7fnh$%Yfy&#Ha?0Ylq1GZoEXk!?}mp*4;9r^E~cX z;9)B1x_1?649=Sb&YZ3r)RvJ46dEC7{K(ZKgmX^`k(TZ)#c-Z!{o^sJJmlKn1&@e_ zOn^mM>MBVD=}MYpG#XJRh;Zt<3QiVTN~sojDn_z8LU=u`OR!AiutboCPkt!1@?DyE zh={-nml*FVJ-NDcp#gwpz>PzEGVa2a(%P}GxON0oE~Hf@HaQIDVWbXEq2Vp?r_oX) zMsPEYh>8e#AeXoWx*-cfX~YfFmSD%A#Zv>7>jamLZV7d_qY&X7rlnB?^{N~tE_tZR z7ds)Lg;TaPK63>yO$eBxM{iSa%PfB~0n6X~te3cjz6w6giMfHu`cLhmfdr znO_oq8ZC8wdrFCsDb2-O@M4t7Z)4|(GMI>I32eA;09>z&sMXES+}JiXoRT}d%R??7 z=l$q~3t@|BvfJ@fa*0xTIQD#4@om$NO&{*|@kl9tTk&v(hoW3xMAX|!Xor@fQ+Ho5 z;G>p3ua;7s)5(9YT6*ZsOTR^|hgtE~MpqnmsbV^#@xGH`Yf%2u3)80A(JR+V{ z9vX7PTI?b7R#zb(4g7d}Sb|?AThLLLqc_%4ijc@;s}qeBmbu#1YRT=tn-_5xi5H8o z72Zdw{vgf7h^548$=!700)&dwk7?ei*r!!X-v<_t%a2r5L;wH)07*qoM6N<$f|E*= A%>V!Z diff --git a/radio/src/fonts/sqt5_pw_fw/font_04x06_extra.lbm b/radio/src/fonts/sqt5_pw_fw/font_04x06_extra.lbm deleted file mode 100644 index cce1e9d68..000000000 --- a/radio/src/fonts/sqt5_pw_fw/font_04x06_extra.lbm +++ /dev/null @@ -1 +0,0 @@ -0x04,0x02,0x3b,0x02,0x04,0x08,0x10,0x37,0x10,0x08,0x20,0x12,0x0a,0x02,0x1e,0x02,0x24,0x28,0x20,0x3c,0x3c,0x20,0x28,0x24,0x02,0x1e,0x02,0x0a,0x12,0x20, diff --git a/radio/src/fonts/sqt5_pw_fw/font_04x06_extra.png b/radio/src/fonts/sqt5_pw_fw/font_04x06_extra.png deleted file mode 100644 index dd59c2e2baf81a726c751c2ab0a129c819ca0638..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 159 zcmeAS@N?(olHy`uVBq!ia0vp^azM<^$P6S^)$=z2DYgKg5LY1m|NsA`H|O64vN#Jo zB8wRqxP?KOkzv*x37{Z*iKnkC`&~9}Zc)avOYbHFg>*b!978y+C-3#2^TaKL7uhokOO5hNUPm-LoX8B(5k>1zLLVhxL?F&Z6^WeClfF%US1q z5vAjguAm1x-u%>b%Tmgac9wiD?Y)nM(4q<<=bB!ho6?q2YP#ikpJ%N1%6m7rbjS>r za!1NB(h#Px=q1J*V0PQQ*?@(>r9xWl0)pMRwiTTV6=0c7llDG&m64$E0VMcUPxCC(GZ+tJ z^iIz8MO(8pbP%NH(^wz{)?PuN!d&X%4OTqe7H}Ie4X_-hVr#E4_fVG%m04p!NOsJR z9JgE_;TptPEulF=OTD%9c1csK;h8bsdaDK?KsRX#I|2IdDND#PW;B}pwx`m<1i}$x z;z4SlXO{bl8shel8B=sQPv9QBF@Tp2J&ox?Z=s?rV|^kH^V%Tq)qZW_D zjQuZtf?W!oC2(?$oCl!FWE7E3Br(G1sKaw|^~XI>f<)fJYj0 zXdF3(2~B&4`|I&M^ISSUc?I^Q5@c{}3whL(L#diW`F)0j6^|S}A#?M(!0PR>C=JUx zejuk9rZ`FLki_9>I9!*OhujeH-(+BBeXpANKZk<#E{=*VEq5#eupqCPvlG5oy_b^P z8U;iaR=9ETlU(adnpVral=$~5n+ar488~4EmP69o(ng!G`JK-1OaR~jAg#s>JxOa`DkOg02zFS5LZ`tf;JVK8R z4w>enmY&uo=@GY*@F~m@-GKC-7y;4_E1a00000 LNkvXXu0mjfr*o#} diff --git a/radio/src/fonts/sqt5_pw_fw/font_05x07_extra.lbm b/radio/src/fonts/sqt5_pw_fw/font_05x07_extra.lbm deleted file mode 100644 index ea644215a..000000000 --- a/radio/src/fonts/sqt5_pw_fw/font_05x07_extra.lbm +++ /dev/null @@ -1 +0,0 @@ -0x04,0x02,0x7b,0x02,0x04,0x10,0x20,0x6f,0x20,0x10,0x20,0x12,0x0a,0x02,0x1e,0x02,0x24,0x28,0x20,0x3c,0x3c,0x20,0x28,0x24,0x02,0x1e,0x02,0x0a,0x12,0x20, diff --git a/radio/src/fonts/sqt5_pw_fw/font_05x07_extra.png b/radio/src/fonts/sqt5_pw_fw/font_05x07_extra.png deleted file mode 100644 index 4d939852c36bb0096c69d7df76eb47c9a3d73aff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 161 zcmeAS@N?(olHy`uVBq!ia0vp^azM<%$P6T}6y8k-QfvV}A+A9B|Ns9>Z_d99WN{XF zL>4nJa0`PlBg3pY5H=O_PcD{+@gZnssFwMh4egK978y+C-39y5|4@1p7%u zK~#9!?OfZI>mUeCvi$#F_B?b=CPx7`H)A@46>2@Rpt)ZlN(u>v1j+^Gd}N%0?;ZTDVV-pX0d^HoU$)2gJZH;xU!>RmTEJl zQagu?&qPK6)LKu5HU^jcK>oMcB8^B?=3DMePG>No8A=(s1J3pLA9`WbpQmRZ`S)Ia zep2sp(bsv)g!yW%&7P1o{o48DR3MugRS^7;ARcbt4C!pvTfzlPaE01>Vd@dUy0F-pBCLv3Zdd`diVtwgkC_+0F*nj^rEa-7hk@t(Rshj?sk?GwX z=laN@xbcVmRdyhD9|(PVF70w+g2WG8#Ktk*_FvEVg2R^wclrQXn?GNV*9gd|jLiq& z0j^pAAxOZ2bIIYU!I}3mAeW;yLGl(R+hz9v`VugK82X;rJZ6|S4XtR2BB+NDdTkOU z(L|`^IEYWWf*+|!r)O)rz_|5a@*xq_&ooqqIj^E2*XoBQ7bP6o! zuRR>*)5yS?3jE5cna=>3ks%i}w?2Ww6GKlT=1c|TK7;^Xt-sO9y#iPO3*t5`X>CAE z#%5>De<1@?fz*vJ7{D!>hg82Sh=snw0_aB$W(l zVISvqneBuZvGT)+cADlL^B4aJIA|KFC4`T|NfqOo|-W58Kb6jijJ|g=9eP zG8`-(7uZD77vkR#19f*6tOp3?eh(8;|cA4n!cN+Wcx# z_;7#|PdHoQ ztv`s|=r0yD2Z~@}%6kv(zt65cP?%9`@7FA_4p8_NIoOqNJd$3!GR=! zFhlr84~T-~$~_Re5Hi?dWndsZTEl{uKqKpws{#wC9mqMa4Jb1K$I+%jef!X&a>}7S z4S7Z5NqR`Q{%l_k4UK&ho0opyV}i2d?(OcotmZ%E76i)dW3$!5d>$`L0Lz9$sc6qk z85m0w@%kS_fAjlAZe;DD?W+vrs~rt;Z5R6#JF5*_wO;3bDB^vzz(WW`@d^M6LqqPc z8DK$kLi<0sljQdIzM$NQw (Re=h_@wChLo@h@iI@{;?;S;FfxWDyfDO${Dhy|(c zopgrnszNI{S~celJR(mkNI92mTSncJYn zmhn!23Nmi&ovi!)HDH7jmgN?Xy*S@IlLwow4wk#mCkjz8bDxtzNisfQ2k`z4A>twr we<5$yGOl$6>Hm)&RoeZawAmbPPKF}>0lexrI`&wwCjbBd07*qoM6N<$f)F>BS^xk5 diff --git a/radio/src/fonts/sqt5_pw_fw/font_10x14.lbm b/radio/src/fonts/sqt5_pw_fw/font_10x14.lbm deleted file mode 100644 index a53a3e8f0..000000000 --- a/radio/src/fonts/sqt5_pw_fw/font_10x14.lbm +++ /dev/null @@ -1,6 +0,0 @@ -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x71,0xfe,0x71,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x7e,0x00,0x00,0x00,0x00,0x00,0x7e,0x00,0x3e,0x00,0x00,0x00,0x00,0x00,0x60,0x06,0x60,0x06,0xfe,0x7f,0xfe,0x7f,0x60,0x06,0x60,0x06,0xfe,0x7f,0xfe,0x7f,0x60,0x06,0x60,0x06,0x60,0x18,0xf0,0x18,0x98,0x19,0x98,0x19,0xfe,0x7f,0xfe,0x7f,0x98,0x19,0x98,0x19,0x18,0x0f,0x18,0x06,0x0c,0x18,0x1e,0x1c,0x1e,0x0e,0x0c,0x07,0x80,0x03,0xc0,0x01,0xe0,0x30,0x70,0x78,0x38,0x78,0x18,0x30,0x78,0x1e,0xfc,0x3f,0x8e,0x71,0xc6,0x63,0xe6,0x67,0x76,0x66,0x3c,0x3c,0x18,0x3c,0x00,0x66,0x00,0x66,0x00,0x00,0x00,0x00,0x66,0x00,0x76,0x00,0x3e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x07,0xf0,0x0f,0x38,0x1c,0x1c,0x38,0x0e,0x70,0x06,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x60,0x0e,0x70,0x1c,0x38,0x38,0x1c,0xf0,0x0f,0xe0,0x07,0x00,0x00,0x00,0x00,0x60,0x06,0x60,0x06,0xc0,0x03,0x80,0x01,0xf8,0x1f,0xf8,0x1f,0x80,0x01,0xc0,0x03,0x60,0x06,0x60,0x06,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xf8,0x1f,0xf8,0x1f,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x66,0x00,0x76,0x00,0x3e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x78,0x00,0x78,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x1c,0x00,0x0e,0x00,0x07,0x80,0x03,0xc0,0x01,0xe0,0x00,0x70,0x00,0x38,0x00,0x18,0x00, -0x00,0x00,0x00,0x00,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x7e,0x0e,0x7f,0x8e,0x7f,0x86,0x63,0x86,0x61,0xfe,0x61,0xfe,0x61,0xfc,0x60,0x00,0x00,0x00,0x00,0x06,0x60,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f,0x00,0x00,0x00,0x00,0xfe,0x00,0xfe,0x01,0xfe,0x01,0x80,0x01,0x80,0x01,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x00,0x00,0x00,0xfe,0x30,0xfe,0x71,0xfe,0x71,0x86,0x61,0x86,0x61,0x86,0x7f,0x86,0x7f,0x06,0x3f,0x00,0x00,0x00,0x00,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x8e,0x7f,0x8e,0x7f,0x0c,0x3f,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x86,0x7f,0xc6,0x7f,0xfe,0x7f,0x7e,0x00,0x3e,0x00,0x00,0x00,0x00,0x00,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f,0x00,0x00,0x00,0x00,0x7c,0x30,0xfe,0x71,0xfe,0x71,0x86,0x61,0x86,0x61,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f,0x00,0x00,0x00,0x00,0x78,0x1e,0x78,0x1e,0x78,0x1e,0x78,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x66,0x78,0x76,0x78,0x3e,0x30,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0xc0,0x03,0xe0,0x07,0x70,0x0e,0x38,0x1c,0x1c,0x38,0x0e,0x70,0x06,0x60,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x06,0x60,0x0e,0x70,0x1c,0x38,0x38,0x1c,0x70,0x0e,0xe0,0x07,0xc0,0x03,0x80,0x01,0x00,0x00,0x00,0x00,0x18,0x00,0x1c,0x00,0x0e,0x00,0x06,0x00,0x06,0x66,0x06,0x67,0x86,0x03,0xce,0x01,0xfc,0x00,0x78,0x00, -0x78,0x00,0xfc,0x00,0xce,0x01,0x86,0x01,0x86,0x01,0xce,0x01,0xfc,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0xfc,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0xfe,0x7f,0xfe,0x7f,0xfc,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0xfe,0x61,0xfe,0x7f,0xfc,0x7f,0x00,0x3f,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x06,0x60,0x0e,0x70,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x06,0x00,0x06,0x00,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x7f,0x86,0x7f,0x80,0x3f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x00,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x78,0x00,0x78,0x00,0x60,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x3f,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0xc0,0x03,0xe0,0x07,0xf0,0x0f,0x78,0x1e,0x3c,0x3c,0x1e,0x78,0x0e,0x70,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0xfc,0x7f,0xfe,0x7f,0xfe,0x7f,0x06,0x00,0xfe,0x01,0xfe,0x01,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0xfc,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x06,0x00,0x06,0x00,0x06,0x00,0x0e,0x00,0xfc,0x7f,0xf8,0x7f,0xf0,0x7f,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f, -0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0xfe,0x01,0xfe,0x01,0xfc,0x00,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x66,0x06,0x6e,0x06,0x1c,0xfe,0x39,0xfe,0x73,0xfc,0x67,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0xfe,0x01,0xfe,0x7f,0xfc,0x7f,0x00,0x7f,0xfc,0x38,0xfe,0x79,0xfe,0x79,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x9e,0x7f,0x9e,0x7f,0x1c,0x3f,0x06,0x00,0x06,0x00,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0xfe,0x3f,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x3f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x70,0x00,0x38,0x00,0x1c,0x00,0x0e,0x00,0x07,0xfe,0x03,0xfe,0x01,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x70,0x00,0x3e,0x00,0x3e,0x00,0x70,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x1e,0x78,0x3e,0x7c,0x7e,0x7e,0xe0,0x07,0xc0,0x03,0xc0,0x03,0xe0,0x07,0x7e,0x7e,0x3e,0x7c,0x1e,0x78,0xfe,0x00,0xfe,0x01,0xfe,0x03,0x00,0x7f,0x00,0x7e,0x00,0x7e,0x00,0x7f,0xfe,0x03,0xfe,0x01,0xfe,0x00,0x06,0x78,0x06,0x7c,0x06,0x7e,0x06,0x67,0x86,0x63,0xc6,0x61,0xe6,0x60,0x7e,0x60,0x3e,0x60,0x1e,0x60,0x00,0x00,0x00,0x00,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x00,0x00,0x00,0x00,0x18,0x00,0x38,0x00,0x70,0x00,0xe0,0x00,0xc0,0x01,0x80,0x03,0x00,0x07,0x00,0x0e,0x00,0x1c,0x00,0x18,0x00,0x00,0x00,0x00,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x00,0x00,0x00,0x00,0x60,0x00,0x70,0x00,0x38,0x00,0x1c,0x00,0x0e,0x00,0x0e,0x00,0x1c,0x00,0x38,0x00,0x70,0x00,0x60,0x00,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60, -0x00,0x00,0x00,0x00,0x06,0x00,0x0e,0x00,0x1c,0x00,0x38,0x00,0x70,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x60,0x7e,0x60,0x7e,0x60,0x7e,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0x67,0xe0,0x67,0xe0,0x67,0x80,0x01,0x80,0x61,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x06,0x60,0x06,0x00,0x1e,0x00,0x1e,0x00,0xe0,0xcf,0xe0,0xcf,0xe0,0xcf,0x60,0xcc,0x60,0xcc,0x60,0xcc,0x60,0xcc,0xe0,0xff,0xe0,0xff,0xe0,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x00,0x00,0x00,0x00,0x60,0x60,0x60,0x60,0xe6,0x7f,0xe6,0x7f,0xe0,0x7f,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0xf0,0x00,0xf0,0x00,0xf0,0x00,0xc0,0x60,0xc0,0x60,0xc0,0xe6,0xff,0xe6,0xff,0xe0,0x7f,0x00,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x0f,0x80,0x1f,0xc0,0x39,0xe0,0x70,0x70,0x60,0x30,0x60,0x00,0x00,0x00,0x00,0x00,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0x00,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x00,0xe0,0x07,0xe0,0x07,0xe0,0x00,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0xe0,0x7f,0xe0,0x7f,0xc0,0x7f,0xc0,0x3f,0xe0,0x7f,0xe0,0x7f,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xe0,0x7f,0xe0,0x7f,0xc0,0x3f, -0xe0,0xff,0xe0,0xff,0xe0,0xff,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0xe0,0x07,0xe0,0x07,0xe0,0x07,0xe0,0x07,0xe0,0x07,0xe0,0x07,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0xe0,0xff,0xe0,0xff,0xe0,0xff,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xc0,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0xe0,0x01,0xe0,0x01,0xe0,0x01,0xe0,0x67,0xe0,0x67,0xe0,0x67,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x7e,0x60,0x7e,0x60,0x7e,0x60,0x00,0x60,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x60,0x60,0x00,0x60,0x00,0x78,0x00,0x78,0x00,0x78,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x00,0x70,0x00,0x38,0x00,0x1c,0x00,0x0e,0x00,0x07,0xe0,0x03,0xe0,0x01,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x00,0x70,0x00,0x3c,0x00,0x3c,0x00,0x70,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x60,0xe0,0x70,0xe0,0x79,0xc0,0x3f,0x80,0x1f,0x80,0x1f,0xc0,0x3f,0xe0,0x79,0xe0,0x70,0x60,0x60,0xe0,0xcf,0xe0,0xcf,0xe0,0xcf,0x00,0xcc,0x00,0xcc,0x00,0xcc,0x00,0xcc,0xe0,0xff,0xe0,0xff,0xe0,0x7f,0x60,0x60,0x60,0x70,0x60,0x78,0x60,0x7c,0x60,0x7e,0x60,0x6f,0xe0,0x67,0xe0,0x63,0xe0,0x61,0xe0,0x60,0x00,0x00,0x00,0x00,0x80,0x01,0xc0,0x03,0x78,0x1e,0x7c,0x3e,0x0e,0x70,0x06,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x7f,0xfe,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x60,0x0e,0x70,0x7c,0x3e,0x78,0x1e,0xc0,0x03,0x80,0x01,0x00,0x00,0x00,0x00,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x18,0x18,0x38,0x1c,0xf0,0x0f,0xe0,0x07,0xc0,0x03,0x80,0x01,0x80,0x01,0xc0,0x03,0xe0,0x07,0xf0,0x0f,0x38,0x1c,0x18,0x18,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01, diff --git a/radio/src/fonts/sqt5_pw_fw/font_10x14.png b/radio/src/fonts/sqt5_pw_fw/font_10x14.png deleted file mode 100644 index e7b202905d412f91ece0512041b0ff7b13c273b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1809 zcmV+s2k!WZP)003YJ0ssI26-DmO00006VoOIv0RI60 z0RN!9r;`8x010qNS#tmY3ljhU3ljkVnw%H_000McNliru-3K2OItb`J4%K ze|-;sm6@5k`EkQ&JD({2F}L9_5?xwTfW;g?WYsiyu_c1Qg)F)??y9yDcxC>4``M8!{#!F|d z9h>{Tsgm#F#q){hAAgmSV-bd!fxG8NOxfgNQ9l(JFsyKQdTXp$of@AP43QM+-x%6urK#bTaUj5(^jKQ+ER)IDD{` z%((oh3A1SS0f@17R#3hz<6?NM7pME}PB#${d(D%@%U{>LxhzzRWKbR}k#-PWjo3H* zRP*X!-nUgNLLJG}ER16bNC8ytxB0R5$eRRfkJ5F}Nc~C(gsHDK4POe6Fq3zK1jw^E zHGHiM`#tr7GlC=)un>&oxWiGGHCtwmL)6mH_3xjh$#&h3X+BFCZH}nK@?PYqV4@2O z6Ip?%`S>(*rlyp9qDg8H>kCb1SO#dOOYJ3G^*sK3Iiurmj+(oO-=31=MeJZ-f)2CS zeHVl0nfPaP7_--KP$mu0fT1A^ht~%2WAekCP zr~l(y??oPz%CQ=I7e|oN^d-f4B_q}hV(bC_Dczj46D@<_C`b<}ZsQHj*JpM#B3#(9 zf7l&T7mK0^{`s;tUi1}Ptywcc(U}P=UC(9&Kn`~C ztTE!MR76T}gRJjySA(Lx$_4hAio3^glxFNx1R6uPg(%ZXwCurUIB!aDM7i8P3Ffkc zMOg~EsBMH0;L9Gl=KHjkyc|y*yhqTceElTb43X>JxeMoZGDo{X}ZajGVxr{IhCt&g2?|AM3RpdYO4iHs0DI|}lKn?E^ zIo>+>8@B#k3`7}GdAtz3Tc%x8$C3de%7Rw&xPHqH_@lHQ!(BU%4{gw|xTrm;H)@7{ z4=x?24|(!BSj}K`us{-QVFUjIUhi0AJiy0P>AQ@Av-84%wH1r^VvmcwHboQZ+x*y$ z-4qvlLkOK5>qgd*aw-R>l;T}PilhvCxwWI^IIGu$Nc@1}PYZXYwDxW0GKR-_&VA>? z-T6~R2ONY&K}u<5N_0$jyuJ_>3t7BZb`oU;?d-*`mQF+>b8v>(9|A_wd*HnWdRLGpt_l`$Ad0HEH5fJ-E zpD)r5roNaPYUwH_1gq}Vwk*)tG-3|6i#${4ph-^KP5IXc#sq`y3hVn2=~ z+;>5rI$Oi{Cod?$MvKL+Tt{Z)xH0&x3Sj=LDEE6DNoo8n@li$1nJ=itEqhrB9-u+M zG=wp_tkZmTJJ#|NS%Oy@Mx-QfPu6r$z*lo`22XS{Araed zbm4JzGkCN`?(zu!jq>7Evt{qY->ne&M30VPMiD|WHwpft*Eg>2A^KZjq8j$%wWGnl zuCJr$`(aZ{yfl-9>ZD=$IhWh3nOB4K+`IoXdr|E}sMYH;Z&P)4@7uv%JtLU|ByLZ1 zKYYZ421oAxX12&NQ~$__J4M?SP&9MStCJejZAfL;x42Za1M1Zl#j-4@(!IB=PK)b$ zPR(#KQ@@u&*JV}NJ=i2Y%1-NUN)dMz@nDPaw7VC(NU%a!9ltKDYv$ZsgC$vjT87jY z?RzkMJ|2veSMw;3F`Qm;{y4)=iv;gj^8Di;!rZC6(Gtov00000NkvXXu0mjf;`?sI diff --git a/radio/src/fonts/sqt5_pw_fw/font_10x14_compressed.lbm b/radio/src/fonts/sqt5_pw_fw/font_10x14_compressed.lbm deleted file mode 100644 index 4cb8fa302..000000000 --- a/radio/src/fonts/sqt5_pw_fw/font_10x14_compressed.lbm +++ /dev/null @@ -1 +0,0 @@ -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x66,0x00,0x76,0x00,0x3e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x78,0x00,0x78,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0x00,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x7e,0x0e,0x7f,0x8e,0x7f,0x86,0x63,0x86,0x61,0xfe,0x61,0xfe,0x61,0xfc,0x60,0x00,0x00,0x00,0x00,0x06,0x60,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f,0x00,0x00,0x00,0x00,0xfe,0x00,0xfe,0x01,0xfe,0x01,0x80,0x01,0x80,0x01,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x00,0x00,0x00,0xfe,0x30,0xfe,0x71,0xfe,0x71,0x86,0x61,0x86,0x61,0x86,0x7f,0x86,0x7f,0x06,0x3f,0x00,0x00,0x00,0x00,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x8e,0x7f,0x8e,0x7f,0x0c,0x3f,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x86,0x7f,0xc6,0x7f,0xfe,0x7f,0x7e,0x00,0x3e,0x00,0x00,0x00,0x00,0x00,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f,0x00,0x00,0x00,0x00,0x7c,0x30,0xfe,0x71,0xfe,0x71,0x86,0x61,0x86,0x61,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f,0x00,0x00,0x00,0x00,0x78,0x1e,0x78,0x1e,0x78,0x1e,0x78,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0xfe,0x7f,0xfe,0x7f,0xfc,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0xfe,0x61,0xfe,0x7f,0xfc,0x7f,0x00,0x3f,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x06,0x60,0x0e,0x70,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x06,0x00,0x06,0x00,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x7f,0x86,0x7f,0x80,0x3f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x00,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x78,0x00,0x78,0x00,0x60,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x3f,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0xc0,0x03,0xe0,0x07,0xf0,0x0f,0x78,0x1e,0x3c,0x3c,0x1e,0x78,0x0e,0x70,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0xfc,0x7f,0xfe,0x7f,0xfe,0x7f,0x06,0x00,0xfe,0x01,0xfe,0x01,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0xfc,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x06,0x00,0x06,0x00,0x06,0x00,0x0e,0x00,0xfc,0x7f,0xf8,0x7f,0xf0,0x7f,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0xfe,0x01,0xfe,0x01,0xfc,0x00,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x66,0x06,0x6e,0x06,0x1c,0xfe,0x39,0xfe,0x73,0xfc,0x67,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0xfe,0x01,0xfe,0x7f,0xfc,0x7f,0x00,0x7f,0xfc,0x38,0xfe,0x79,0xfe,0x79,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x9e,0x7f,0x9e,0x7f,0x1c,0x3f,0x06,0x00,0x06,0x00,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0xfe,0x3f,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x3f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x70,0x00,0x38,0x00,0x1c,0x00,0x0e,0x00,0x07,0xfe,0x03,0xfe,0x01,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x70,0x00,0x3e,0x00,0x3e,0x00,0x70,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x1e,0x78,0x3e,0x7c,0x7e,0x7e,0xe0,0x07,0xc0,0x03,0xc0,0x03,0xe0,0x07,0x7e,0x7e,0x3e,0x7c,0x1e,0x78,0xfe,0x00,0xfe,0x01,0xfe,0x03,0x00,0x7f,0x00,0x7e,0x00,0x7e,0x00,0x7f,0xfe,0x03,0xfe,0x01,0xfe,0x00,0x06,0x78,0x06,0x7c,0x06,0x7e,0x06,0x67,0x86,0x63,0xc6,0x61,0xe6,0x60,0x7e,0x60,0x3e,0x60,0x1e,0x60,0x60,0x7e,0x60,0x7e,0x60,0x7e,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0x67,0xe0,0x67,0xe0,0x67,0x80,0x01,0x80,0x61,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x06,0x60,0x06,0x00,0x1e,0x00,0x1e,0x00,0xe0,0xcf,0xe0,0xcf,0xe0,0xcf,0x60,0xcc,0x60,0xcc,0x60,0xcc,0x60,0xcc,0xe0,0xff,0xe0,0xff,0xe0,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x00,0x00,0x00,0x00,0x60,0x60,0x60,0x60,0xe6,0x7f,0xe6,0x7f,0xe0,0x7f,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0xf0,0x00,0xf0,0x00,0xf0,0x00,0xc0,0x60,0xc0,0x60,0xc0,0xe6,0xff,0xe6,0xff,0xe0,0x7f,0x00,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x0f,0x80,0x1f,0xc0,0x39,0xe0,0x70,0x70,0x60,0x30,0x60,0x00,0x00,0x00,0x00,0x00,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0x00,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x00,0xe0,0x07,0xe0,0x07,0xe0,0x00,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0xe0,0x7f,0xe0,0x7f,0xc0,0x7f,0xc0,0x3f,0xe0,0x7f,0xe0,0x7f,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xe0,0x7f,0xe0,0x7f,0xc0,0x3f,0xe0,0xff,0xe0,0xff,0xe0,0xff,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0xe0,0x07,0xe0,0x07,0xe0,0x07,0xe0,0x07,0xe0,0x07,0xe0,0x07,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0xe0,0xff,0xe0,0xff,0xe0,0xff,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xc0,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0xe0,0x01,0xe0,0x01,0xe0,0x01,0xe0,0x67,0xe0,0x67,0xe0,0x67,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x7e,0x60,0x7e,0x60,0x7e,0x60,0x00,0x60,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x60,0x60,0x00,0x60,0x00,0x78,0x00,0x78,0x00,0x78,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x00,0x70,0x00,0x38,0x00,0x1c,0x00,0x0e,0x00,0x07,0xe0,0x03,0xe0,0x01,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x00,0x70,0x00,0x3c,0x00,0x3c,0x00,0x70,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x60,0xe0,0x70,0xe0,0x79,0xc0,0x3f,0x80,0x1f,0x80,0x1f,0xc0,0x3f,0xe0,0x79,0xe0,0x70,0x60,0x60,0xe0,0xcf,0xe0,0xcf,0xe0,0xcf,0x00,0xcc,0x00,0xcc,0x00,0xcc,0x00,0xcc,0xe0,0xff,0xe0,0xff,0xe0,0x7f,0x60,0x60,0x60,0x70,0x60,0x78,0x60,0x7c,0x60,0x7e,0x60,0x6f,0xe0,0x67,0xe0,0x63,0xe0,0x61,0xe0,0x60, diff --git a/radio/src/fonts/sqt5_pw_fw/font_10x14_compressed.png b/radio/src/fonts/sqt5_pw_fw/font_10x14_compressed.png deleted file mode 100644 index a8ff6a6f315b3b3f330036750d04ce46e23191a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1157 zcmV;01bX|4P)e zSad^gZEa<4bO1wgWnpw>WFU8GbZ8()Nlj2!fese{00ZqwL_t(|+U;H2j_n`_J)QLb zf4S#rlE(4EWua)-O6FxpQ4tUjJJ<6(&p(172!bF8f=Gh<#6?}#RsFr^i@*Dn?IiSC zZF=o~e;@s39a}m-3q32JHT(6ZhnT+>l5rzwmTh``AJJ>=g=Af|zO{a%{r2v!RPMC< zrqMN|{8{D7qkocpL+d?ajTUl<*Ae>`DGMugD{_COa%a)Y74o;U3=jlC%))*0;-nc81U+fi!ZYsd z`DwGcwRW0_Ix=%Dja1R}W<%?wC0?MJ8P6I zy?V90IL&GhJhi=^*Yp_-;LZ*Nntxt7-8GXs!#TCsBgEH55Sgjb!ClLUA=c5eH`V#MwX}03!!vm7GRj zZ;l)^%{3*lhkZrtn=~-_njOh%4>Z9QVqVYl=rgFESJ@{xJ+mTUZ3JhDn!QoAWPU68 zx5^M{bDmqJd%3(kdCps&&+M|>8wDx*klWEBGfCTBB_V^PupX>qBSI;Y? z4ak0@;+4NFrFtm4WT~yz&@1WOvo=aX>-58Kg+P6Een-Yeq`sbHL6AG zMf87}$`DMn>a#L@^U*>ts{@f;e^GW%TkjjqW5oD1y^#DT!A!owE;dT@MTKa4&~hfN z2}Y>{{NoW+bOagw2xFDOM!)u#@@%JZQG7;@9kC7x%@yOWn%8Rn&D0c8#($xHO){_~%<(Sq}u>Yd~YrXxSnYg~T% zFdlwxoZdBm#eCz0A2oX(|Cj&$pNVI_Jomr+gg^HWeE8XH*iqQ<@N<8aiFe{T28I{w W6C^GAxAy^UXYh3Ob6Mw<&;$VafmR{_ diff --git a/radio/src/fonts/sqt5_pw_fw/font_cz_04x06.lbm b/radio/src/fonts/sqt5_pw_fw/font_cz_04x06.lbm deleted file mode 100644 index 15c586b31..000000000 --- a/radio/src/fonts/sqt5_pw_fw/font_cz_04x06.lbm +++ /dev/null @@ -1 +0,0 @@ -0x3a,0x2a,0x2a,0x3e,0x01,0x3e,0x23,0x22,0x23,0x00,0x3e,0x2a,0x2a,0x2e,0x01,0x3e,0x2b,0x2a,0x2f,0x00,0x00,0x24,0x3c,0x22,0x01,0x1c,0x22,0x22,0x1d,0x00,0x3e,0x03,0x02,0x05,0x00,0x2e,0x2b,0x2a,0x3b,0x00,0x3e,0x20,0x20,0x3e,0x01,0x3c,0x23,0x23,0x3c,0x00,0x2e,0x28,0x28,0x3e,0x01,0x3c,0x12,0x12,0x3d,0x00,0x00,0x22,0x3e,0x22,0x01,0x3e,0x13,0x1e,0x31,0x00,0x00,0x0e,0x30,0x0e,0x01,0x22,0x33,0x2a,0x27,0x00,0x3e,0x2a,0x2a,0x22,0x01, diff --git a/radio/src/fonts/sqt5_pw_fw/font_cz_04x06.png b/radio/src/fonts/sqt5_pw_fw/font_cz_04x06.png deleted file mode 100644 index 1f1bc61063f2778a1a2ae6bdf9b521b4e412157e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 215 zcmeAS@N?(olHy`uVBq!ia0vp^p+L;e$P6T%YbQSiQfvV}A+A9B|Ns9>Z_d99WHBar zySp%Su*!M>Ih+L^k;M!Q+`=Ht$S`Y;1W=H@#M9T6{VuzdsIv0Q%PWn5LgAh+jv*Y^ zlYc}>$8Y<3`u^{S;r0dv7ANO=p4pjuar=bkhhNvuj=rAmem8de_NK<)6W&~Fzv)+g z{q3}b6Z^iGzrO!Q>*lvlTnnl?H}hN0$;QIhQAT|o{Dm)X^44G8NgU(X#lNV=@dzJPo(avD-?o#yw(zRW)gf3g?iM{v@T@5%cB0000< KMNUMnLSTZymTH&) diff --git a/radio/src/fonts/sqt5_pw_fw/font_cz_08x10.lbm b/radio/src/fonts/sqt5_pw_fw/font_cz_08x10.lbm deleted file mode 100644 index 4b28f3ded..000000000 --- a/radio/src/fonts/sqt5_pw_fw/font_cz_08x10.lbm +++ /dev/null @@ -1 +0,0 @@ -0x90,0x07,0x90,0x07,0x90,0x04,0x94,0x04,0x93,0x04,0xf1,0x07,0xf0,0x07,0x00,0x00,0xf0,0x07,0xf1,0x07,0x13,0x04,0x16,0x04,0x13,0x04,0x11,0x04,0x10,0x04,0x00,0x00,0xf0,0x07,0xf0,0x07,0x90,0x04,0x94,0x04,0x93,0x04,0xf1,0x04,0xf0,0x04,0x00,0x00,0xf0,0x07,0xf1,0x07,0x93,0x04,0x96,0x04,0x93,0x04,0xf1,0x04,0xf0,0x04,0x00,0x00,0x10,0x04,0x10,0x04,0xf4,0x07,0xf3,0x07,0x01,0x04,0x00,0x04,0x00,0x00,0x00,0x00,0xe0,0x03,0xf0,0x07,0x10,0x04,0x14,0x04,0x13,0x04,0xf1,0x07,0xe0,0x03,0x00,0x00,0xf1,0x07,0xf3,0x07,0x16,0x00,0x13,0x00,0x11,0x00,0x30,0x00,0x30,0x00,0x00,0x00,0xf0,0x04,0xf1,0x04,0x93,0x04,0x96,0x04,0x93,0x04,0x91,0x07,0x90,0x07,0x00,0x00,0xf0,0x07,0xf0,0x07,0x00,0x04,0x04,0x04,0x03,0x04,0xf1,0x07,0xf0,0x07,0x00,0x00,0xf0,0x07,0xf0,0x07,0x02,0x04,0x05,0x04,0x05,0x04,0xf2,0x07,0xf0,0x07,0x00,0x00,0xf0,0x09,0xf0,0x09,0x00,0x09,0x04,0x09,0x03,0x09,0xf1,0x0f,0xf0,0x0f,0x00,0x00,0xf0,0x07,0xf8,0x07,0x98,0x00,0x9c,0x00,0x9b,0x00,0x99,0x00,0xf8,0x07,0xf0,0x07,0x00,0x00,0x08,0x04,0x08,0x04,0xfc,0x07,0xfb,0x07,0x09,0x04,0x08,0x04,0x00,0x00,0xf8,0x07,0xf9,0x07,0x8b,0x00,0x8e,0x00,0x8b,0x00,0xf9,0x00,0xf0,0x07,0x00,0x07,0xf8,0x00,0xf8,0x00,0x80,0x00,0x84,0x07,0x83,0x07,0x81,0x00,0xf8,0x00,0xf8,0x00,0x08,0x06,0x09,0x07,0x8b,0x05,0xce,0x04,0x6b,0x04,0x39,0x04,0x18,0x04,0x00,0x00,0xf8,0x07,0xf8,0x07,0x48,0x04,0x4c,0x04,0x4b,0x04,0x49,0x04,0x08,0x04,0x08,0x04, diff --git a/radio/src/fonts/sqt5_pw_fw/font_cz_08x10.png b/radio/src/fonts/sqt5_pw_fw/font_cz_08x10.png deleted file mode 100644 index 056e38735fa6341f7633000a5f28b05d6f62f99f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 265 zcmeAS@N?(olHy`uVBq!ia0vp^9YD;($P6T#L(}gADYgKg5LY1m|NsA`H|O64vKW)R z-CYvL>4nJa0`PlBg3pY5H=O_PgxzqKtwYGyE0+g&ugiIEF}E zjy-SKcgR41^@9J?G}S42+*4v2_cGiovR>zKTy)c=tXwTCjTI}3rrtc2x-LOeT)`{3 zTQIT5$?Q;T`ZLdepBnaSm#0n6KmR8=h9mHp!-EyCg}<-<+PQvLpJDGrf##LpK7NaS z^Efm-cKWft3x(@nKQvlBb1DCS)&=wB+LoTtH=JWXpK<4{pPLFJg}J0Gu1<`8I6JHM zrq%1SC(hcxS9_z-f0b3>nLCG6Rrzu8Z31<(#f2uVp4M9+FXVkf@w$GE&&~GM%DM@5 u={l+JytV(_VcT-@$Hg9-yMGt8wY?J!*;nH-^@%CauMD29elF{r5}E)^H;)ql diff --git a/radio/src/fonts/sqt5_pw_fw/font_de_04x06.lbm b/radio/src/fonts/sqt5_pw_fw/font_de_04x06.lbm deleted file mode 100644 index 962a76588..000000000 --- a/radio/src/fonts/sqt5_pw_fw/font_de_04x06.lbm +++ /dev/null @@ -1 +0,0 @@ -0x3d,0x0a,0x0a,0x3d,0x00,0x3a,0x2b,0x2a,0x3f,0x00,0x1d,0x22,0x22,0x1d,0x00,0x18,0x25,0x24,0x19,0x00,0x3d,0x20,0x20,0x3d,0x00,0x3d,0x20,0x20,0x3d,0x00,0x7e,0x05,0x25,0x1a,0x00, diff --git a/radio/src/fonts/sqt5_pw_fw/font_de_04x06.png b/radio/src/fonts/sqt5_pw_fw/font_de_04x06.png deleted file mode 100644 index 644bed0b60d7617f155e61dae7f068963567b80f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 176 zcmeAS@N?(olHy`uVBq!ia0vp^%0SG{$P6TRXr);JDYgKg5LY1m|NsA`H|O64vKW)R z-CYbP0l+XkKRD&{8 diff --git a/radio/src/fonts/sqt5_pw_fw/font_de_05x07.lbm b/radio/src/fonts/sqt5_pw_fw/font_de_05x07.lbm deleted file mode 100644 index 363e4f48e..000000000 --- a/radio/src/fonts/sqt5_pw_fw/font_de_05x07.lbm +++ /dev/null @@ -1 +0,0 @@ -0x7c,0x13,0x12,0x13,0x7c,0x74,0x55,0x54,0x55,0x7c,0x3c,0x43,0x42,0x43,0x3c,0x38,0x45,0x44,0x45,0x38,0x3e,0x41,0x40,0x41,0x3e,0x7c,0x41,0x40,0x41,0x7c,0x7e,0x01,0x49,0x56,0x20, diff --git a/radio/src/fonts/sqt5_pw_fw/font_de_05x07.png b/radio/src/fonts/sqt5_pw_fw/font_de_05x07.png deleted file mode 100644 index 6e6c1a0cfda134128f8a7a50b9b46e915b55827e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 181 zcmeAS@N?(olHy`uVBq!ia0vp^%0SG)$P6SsYp%QpQfvV}A+A9B|Ns9>Z_d99WHBar zySp%Su*!M>Ih+L^k;M!Q+`=Ht$S`Y;1W=H@#M9T6{Vs>Jh_F#Qx9SFm{7@=BF=o1U4muVhivIaRt)<|NmclbN*c*i!sUD z-G!lpRn`N@;VkfoEM{Qf76xHPhFNnYfP(BLp1!W^cR8d*40+4$`>h2EIe5A_hHzZ> z?KsGJz<`JOe6r}4IVU;lDzEGlS-v!Yvt&-j_S4H&uhx>B>13tL?c_cEg6;3ef1E4c h{E=4Z_d99WHBar zySp%Su*!M>Ih+L^k;M!Q+`=Ht$S`Y;1W=H@#M9T6{Vs>Js32F(->I{KLWQ0#jv*Y^ zlYj8D)=NBFdcG#iQopv3_wfJcpZ|yctG9D*Te$Ea`|oqc+JVo93VDV^*G-|Tc&izuSN}w#wTp}%#N|K fKeOj42xnx_TWw$1wSVV5pydpnu6{1-oD!M2j(YymzYu0Z<#|Nl#G&c6#}F(!Gt zyD)UH%6b4foCO|{#X!ZvAk4@xYmNj^kiEpy*OmP)hqMTr?%i$Y0)ax(o-U3d9M_X0 sULPoU&CvXZv8{)h=O&-Rm;Ve5{#xuyL^5u%0hKX$y85}Sb4q9e0PgN4g8%>k diff --git a/radio/src/fonts/sqt5_pw_fw/font_es_05x07.lbm b/radio/src/fonts/sqt5_pw_fw/font_es_05x07.lbm deleted file mode 100644 index ade3235f7..000000000 --- a/radio/src/fonts/sqt5_pw_fw/font_es_05x07.lbm +++ /dev/null @@ -1 +0,0 @@ -0x7c,0x06,0x05,0x06,0x79,0x78,0x0a,0x09,0x0a,0x71, diff --git a/radio/src/fonts/sqt5_pw_fw/font_es_05x07.png b/radio/src/fonts/sqt5_pw_fw/font_es_05x07.png deleted file mode 100644 index d23e8b850db15490e978904993dea309d8f1cb06..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 155 zcmeAS@N?(olHy`uVBq!ia0vp^AT|dhGm!jc^5-j%VhivIaRt)<|NmclbN*c*i!sUD z-G!lpRn`N@;VkfoEM{Qf76xHPhFNnYfP(BLp1!W^cR8d*L`5FQu%8ABNqf3DhHzX@ t-f``~hHH(D{~4ScnVk!nMgH0|FvR`lh~84|xe2I@!PC{xWt~$(69E5@DJ=j1 diff --git a/radio/src/fonts/sqt5_pw_fw/font_es_08x10.lbm b/radio/src/fonts/sqt5_pw_fw/font_es_08x10.lbm deleted file mode 100644 index 80e23388e..000000000 --- a/radio/src/fonts/sqt5_pw_fw/font_es_08x10.lbm +++ /dev/null @@ -1 +0,0 @@ -0xf8,0x07,0xfa,0x07,0x0b,0x00,0x09,0x00,0x0b,0x00,0x1a,0x00,0xf3,0x07,0xe1,0x07,0xf0,0x07,0xf4,0x07,0x16,0x00,0x12,0x00,0x16,0x00,0x34,0x00,0xe6,0x07,0xc2,0x07, diff --git a/radio/src/fonts/sqt5_pw_fw/font_es_08x10.png b/radio/src/fonts/sqt5_pw_fw/font_es_08x10.png deleted file mode 100644 index 6f520ee2ab108951a97a58530bf1f74c8113e309..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 161 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~e$P6R{HP;^kQfvV}A+A9B|Ns9>Z_d99WHBar zySp%Su*!M>Ih+L^k;M!Q+`=Ht$S`Y;1W=H@#M9T6{Vs>Jh_Q+EnCCEcpMQ@me$2rrkxRtAUCcJYD@<);T3K0RXC= BEk^(V diff --git a/radio/src/fonts/sqt5_pw_fw/font_es_10x14.lbm b/radio/src/fonts/sqt5_pw_fw/font_es_10x14.lbm deleted file mode 100644 index 19065f688..000000000 --- a/radio/src/fonts/sqt5_pw_fw/font_es_10x14.lbm +++ /dev/null @@ -1 +0,0 @@ -0xf4,0x7f,0xf6,0x7f,0xf3,0x7f,0x31,0x00,0x32,0x00,0x34,0x00,0x76,0x00,0xe3,0x7f,0xc1,0x7f,0x80,0x7f,0xe0,0x7f,0xe8,0x7f,0xec,0x7f,0x66,0x00,0x62,0x00,0x64,0x00,0x68,0x00,0xec,0x7f,0xe6,0x7f,0xc2,0x7f, diff --git a/radio/src/fonts/sqt5_pw_fw/font_es_10x14.png b/radio/src/fonts/sqt5_pw_fw/font_es_10x14.png deleted file mode 100644 index d66da44606b51bef5b2384ce86eda359b21c5623..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 174 zcmeAS@N?(olHy`uVBq!ia0vp^B0wy_$P6TPuAPklQfvV}A+A9B|Ns9>Z_d99WHBar zySp%Su*!M>Ih+L^k;M!Q+`=Ht$S`Y;1W=H@#M9T6{Vs>JsED3zXDdHYNYB&7F@)oK zvPJm+#>7+SnR%woS2OripLgKEkN?cfhZz~!B-z>6EWfes`SJfhKf{SS;l35B*Ls0E O89ZJ6T-G@yGywqF&M-j$ diff --git a/radio/src/fonts/sqt5_pw_fw/font_fr_04x06.lbm b/radio/src/fonts/sqt5_pw_fw/font_fr_04x06.lbm deleted file mode 100644 index 0009fbcec..000000000 --- a/radio/src/fonts/sqt5_pw_fw/font_fr_04x06.lbm +++ /dev/null @@ -1 +0,0 @@ -0x3e,0x2a,0x2b,0x2e,0x00,0x3e,0x2b,0x2a,0x2e,0x00,0x3a,0x2b,0x2a,0x3e,0x00,0x00,0x26,0x3d,0x22,0x00,0x1e,0x52,0x32,0x12,0x00, diff --git a/radio/src/fonts/sqt5_pw_fw/font_fr_04x06.png b/radio/src/fonts/sqt5_pw_fw/font_fr_04x06.png deleted file mode 100644 index 3b5db5110cd19e96fc549a70b482259b925efec4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3570 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 s7^sJ-h+Xi$Jy9hAjZ_d99WHBar zySp%Su*!M>Ih+L^k;M!Q+`=Ht$S`Y;1W=H@#M9T6{Vs>Jh=kVk$tk)(Aw5qQ#}JO| z$rZor>X{GkegBb{ho?tgLZa*YtmcT@(h{rQ=Or*~N|BcM_y0f85cK~%V Nc)I$ztaD0e0s!LrF*yJL diff --git a/radio/src/fonts/sqt5_pw_fw/font_fr_08x10.lbm b/radio/src/fonts/sqt5_pw_fw/font_fr_08x10.lbm deleted file mode 100644 index 62285c702..000000000 --- a/radio/src/fonts/sqt5_pw_fw/font_fr_08x10.lbm +++ /dev/null @@ -1 +0,0 @@ -0xf0,0x07,0xf0,0x07,0x94,0x04,0x96,0x04,0x93,0x04,0xf1,0x04,0xf0,0x04,0x00,0x00,0xf0,0x07,0xf0,0x07,0x91,0x04,0x93,0x04,0x96,0x04,0xf4,0x04,0xf0,0x04,0x00,0x00,0x90,0x07,0x90,0x07,0x91,0x04,0x93,0x04,0x96,0x04,0xf4,0x07,0xf0,0x07,0x00,0x00,0x14,0x04,0x16,0x04,0xf3,0x07,0xf6,0x07,0x04,0x04,0x00,0x04,0x00,0x00,0xf0,0x03,0xf0,0x03,0x10,0x0a,0x10,0x0e,0x10,0x06,0x10,0x02,0x10,0x02,0x00,0x00,0x00,0x00, diff --git a/radio/src/fonts/sqt5_pw_fw/font_fr_08x10.png b/radio/src/fonts/sqt5_pw_fw/font_fr_08x10.png deleted file mode 100644 index 59ed95c85a539d76738a13cad90da8b167f70ad2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3597 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 diff --git a/radio/src/fonts/sqt5_pw_fw/font_it_04x06.lbm b/radio/src/fonts/sqt5_pw_fw/font_it_04x06.lbm deleted file mode 100644 index 5557a1b10..000000000 --- a/radio/src/fonts/sqt5_pw_fw/font_it_04x06.lbm +++ /dev/null @@ -1 +0,0 @@ -0x3a,0x2b,0x2a,0x3e,0x00,0x3c,0x21,0x22,0x3c,0x00, diff --git a/radio/src/fonts/sqt5_pw_fw/font_it_04x06.png b/radio/src/fonts/sqt5_pw_fw/font_it_04x06.png deleted file mode 100644 index f1fd4826563540d182019561deec17971860d2b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 157 zcmeAS@N?(olHy`uVBq!ia0vp^AT~QAGmzv?@>2j(YymzYu0Z<#|Nl#G&c6#}F(!Gt zyD)UH%6b4foCO|{#X!ZvAk4@xYmNj^kiEpy*OmP)hqMT{Zid7L8K97?r;B3<$MxhJ t)eVjB84hQ&v*oe3<*>8yvA6waXK<5XD_MN-nH^9egQu&X%Q~loCIG@6B%S~O diff --git a/radio/src/fonts/sqt5_pw_fw/font_it_05x07.lbm b/radio/src/fonts/sqt5_pw_fw/font_it_05x07.lbm deleted file mode 100644 index 7e4ed004e..000000000 --- a/radio/src/fonts/sqt5_pw_fw/font_it_05x07.lbm +++ /dev/null @@ -1 +0,0 @@ -0x74,0x55,0x56,0x54,0x7c,0x7c,0x41,0x42,0x40,0x7c, diff --git a/radio/src/fonts/sqt5_pw_fw/font_it_05x07.png b/radio/src/fonts/sqt5_pw_fw/font_it_05x07.png deleted file mode 100644 index ebdd099527389868375e87da19ebacb55dfa4226..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 157 zcmeAS@N?(olHy`uVBq!ia0vp^AT|dhGm!jc^5-j%VhivIaRt)<|NmclbN*c*i!sUD z-G!lpRn`N@;VkfoEM{Qf76xHPhFNnYfP(BLp1!W^cR8d*q!{Yt&Q}73WIbIRLpZJ{ u->7bQc#o0o8C%Z_d99WHBar zySp%Su*!M>Ih+L^k;M!Q+`=Ht$S`Y;1W=H@#M9T6{Vs>Jh=q7mJZ_d99WHBar zySp%Su*!M>Ih+L^k;M!Q+`=Ht$S`Y;1W=H@#M9T6{Vs>JsI>awvx+G|A#G0=#}JO| z$v^)8XFmLSzPyCp|DOjwe2!;i?l^zo9>cN!3nY$BZ%&e6SjEb)(NR3GID8W$P#c4% LtDnm{r-UW|5o|I4 diff --git a/radio/src/fonts/sqt5_pw_fw/font_pl_04x06.lbm b/radio/src/fonts/sqt5_pw_fw/font_pl_04x06.lbm deleted file mode 100644 index d885a4da3..000000000 --- a/radio/src/fonts/sqt5_pw_fw/font_pl_04x06.lbm +++ /dev/null @@ -1 +0,0 @@ -0x3a,0x2a,0x2a,0x7e,0x40,0x3e,0x22,0x22,0x22,0x01,0x3e,0x2a,0x2a,0x6e,0x40,0x00,0x29,0x3f,0x24,0x00,0x3e,0x02,0x03,0x3d,0x00,0x1c,0x22,0x23,0x1d,0x00,0x2e,0x2a,0x2a,0x3b,0x00,0x24,0x35,0x2d,0x24,0x00,0x24,0x34,0x2e,0x25,0x00,0x3e,0x09,0x69,0x5e,0x00,0x1c,0x22,0x22,0x23,0x00,0x3f,0x25,0x65,0x41,0x00,0x3f,0x28,0x24,0x24,0x00,0x3e,0x02,0x03,0x3d,0x00,0x1c,0x22,0x22,0x1d,0x00,0x2e,0x2a,0x2b,0x3a,0x00,0x22,0x33,0x2a,0x26,0x00,0x22,0x32,0x2b,0x26,0x00, diff --git a/radio/src/fonts/sqt5_pw_fw/font_pl_04x06.png b/radio/src/fonts/sqt5_pw_fw/font_pl_04x06.png deleted file mode 100644 index e25681d8c2906c6c13237cc7abd9ef898a6572a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 175 zcmeAS@N?(olHy`uVBq!ia0vp^Q9#Vj$P6Smm7T}{QfvV}A+A9B|Ns9>Z_d99WTkkz zIEHXsPyVt0{@R>qK@QnKO^{ tc+PMNg>@+e&-?#}pXJ;0#v}K68M^n`UT$12JOk(k22WQ%mvv4FO#m#xROJ8w diff --git a/radio/src/fonts/sqt5_pw_fw/font_pl_08x10.lbm b/radio/src/fonts/sqt5_pw_fw/font_pl_08x10.lbm deleted file mode 100644 index 56b4f2a54..000000000 --- a/radio/src/fonts/sqt5_pw_fw/font_pl_08x10.lbm +++ /dev/null @@ -1 +0,0 @@ -0x90,0x07,0x90,0x07,0x90,0x04,0x90,0x04,0x90,0x04,0xf0,0x0f,0xf0,0x0b,0x00,0x00,0xf0,0x07,0xf0,0x07,0x10,0x04,0x14,0x04,0x13,0x04,0x11,0x04,0x10,0x04,0x00,0x00,0xf0,0x07,0xf0,0x07,0x90,0x04,0x90,0x04,0x90,0x04,0xf0,0x0c,0xf0,0x08,0x00,0x00,0x40,0x04,0x42,0x04,0xfe,0x07,0xfe,0x07,0x20,0x04,0x20,0x04,0x00,0x00,0x00,0x00,0xf0,0x07,0xf0,0x07,0x10,0x00,0x14,0x00,0x13,0x00,0xf1,0x07,0xe0,0x07,0x00,0x00,0xe0,0x03,0xf0,0x07,0x10,0x04,0x14,0x04,0x13,0x04,0xf1,0x07,0xe0,0x03,0x00,0x00,0xf0,0x04,0xf0,0x04,0x90,0x04,0x94,0x04,0x93,0x04,0x91,0x07,0x90,0x07,0x00,0x00,0x10,0x04,0x10,0x06,0x16,0x07,0x96,0x05,0xd0,0x04,0x70,0x04,0x30,0x04,0x00,0x00,0x10,0x04,0x10,0x06,0x10,0x07,0x94,0x05,0xd3,0x04,0x71,0x04,0x30,0x04,0x00,0x00,0xfc,0x07,0xfe,0x07,0x86,0x00,0x86,0x00,0x86,0x00,0x86,0x00,0xfe,0x0f,0xfc,0x0b,0xf8,0x03,0xfc,0x07,0x04,0x04,0x04,0x04,0x06,0x04,0x05,0x04,0x04,0x04,0x00,0x00,0x00,0x00,0xfe,0x07,0xfe,0x07,0x22,0x04,0x22,0x04,0x22,0x04,0x22,0x0c,0x02,0x08,0x80,0x00,0xfe,0x07,0xfe,0x07,0x40,0x04,0x40,0x04,0x20,0x04,0x20,0x04,0x00,0x04,0xfc,0x07,0xfc,0x07,0x04,0x00,0x04,0x00,0x07,0x00,0x0d,0x00,0xf8,0x07,0xf0,0x07,0xf8,0x03,0xfc,0x07,0x04,0x04,0x04,0x04,0x04,0x04,0x07,0x04,0xfd,0x07,0xf8,0x03,0x30,0x02,0x78,0x06,0x48,0x04,0x4c,0x04,0x4b,0x04,0x49,0x04,0xd8,0x07,0x90,0x03,0x04,0x06,0x04,0x07,0x84,0x05,0xc7,0x04,0x67,0x04,0x34,0x04,0x1c,0x04,0x0c,0x04,0x04,0x06,0x04,0x07,0x84,0x05,0xc4,0x04,0x64,0x04,0x37,0x04,0x1d,0x04,0x0c,0x04, diff --git a/radio/src/fonts/sqt5_pw_fw/font_pl_08x10.png b/radio/src/fonts/sqt5_pw_fw/font_pl_08x10.png deleted file mode 100644 index bbe2fc7f139bd0e5d1e6ac30be339aac7e3f0dba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 237 zcmeAS@N?(olHy`uVBq!ia0vp^6M&e9kr_yC*I9NLNU;U@gt!9f|Ns9ly*d9bkhRFu z#W95Ax@q5DUS>m%){Qm}ZYN}>bws=k=$f)JxN-*10SUd>0ELoi9OcVxRO;*$D+Ht# zu8RDY6VvV-vFEH$Pwwk&w{Iw>otP7>R`7nRI)h8g5yd68inV&A12bat({Qa@vB*OstNi|gEDlrD4#?L1MM{q>)_W!&@51=FH#fBblG kk7Dt!PaiIat?3E2KX9SWd5v;O6wtK{p00i_>zopr0H0f7%>V!Z diff --git a/radio/src/fonts/sqt5_pw_fw/font_pl_10x14.lbm b/radio/src/fonts/sqt5_pw_fw/font_pl_10x14.lbm deleted file mode 100644 index 0846467d2..000000000 --- a/radio/src/fonts/sqt5_pw_fw/font_pl_10x14.lbm +++ /dev/null @@ -1 +0,0 @@ -0x60,0x7e,0x60,0x7e,0x60,0x7e,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0xff,0xe0,0xbf,0xe0,0xbf,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x60,0x68,0x60,0x6c,0x60,0x67,0x60,0x63,0x60,0x61,0x60,0x60,0x60,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0xe7,0xe0,0x87,0xe0,0x87,0x00,0x00,0x00,0x63,0x06,0x63,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0xc0,0x60,0xc0,0x60,0x00,0x00,0x00,0x00,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x00,0x68,0x00,0x6c,0x00,0x67,0x00,0xe3,0x7f,0xe1,0x7f,0xc0,0x7f,0xc0,0x3f,0xe0,0x7f,0xe0,0x7f,0x60,0x60,0x68,0x60,0x6c,0x60,0x67,0x60,0xe3,0x7f,0xe1,0x7f,0xc0,0x3f,0xe0,0x67,0xe0,0x67,0xe0,0x67,0x60,0x66,0x68,0x66,0x6c,0x66,0x67,0x66,0x63,0x7e,0x61,0x7e,0x60,0x7e,0x60,0x60,0x60,0x70,0x60,0x78,0x66,0x7c,0x66,0x6e,0x60,0x67,0xe0,0x63,0xe0,0x61,0xe0,0x60,0x60,0x60,0x60,0x60,0x60,0x70,0x60,0x78,0x60,0x7c,0x68,0x6e,0x6c,0x67,0xe7,0x63,0xe3,0x61,0xe1,0x60,0x60,0x60,0xfc,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0xfe,0x7f,0xfe,0xbf,0xfc,0xbf,0xf8,0x3f,0xfc,0x7f,0xfc,0x7f,0x0c,0x60,0x0c,0x60,0x0f,0x60,0x0f,0x60,0x0d,0x60,0x0c,0x60,0x0c,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x06,0xa0,0x06,0x80,0x00,0x06,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x80,0x61,0x80,0x61,0xc0,0x60,0xc0,0x60,0x60,0x60,0x60,0x60,0xf8,0x7f,0xf8,0x7f,0xf8,0x7f,0x18,0x00,0x18,0x00,0x1c,0x00,0x3f,0x00,0xf3,0x7f,0xe1,0x7f,0xc0,0x7f,0xf0,0x3f,0xf8,0x7f,0xf8,0x7f,0x18,0x60,0x1c,0x60,0x1f,0x60,0x1b,0x60,0xf9,0x7f,0xf8,0x7f,0xf0,0x3f,0xf0,0x39,0xf8,0x7b,0xf8,0x7b,0x18,0x63,0x1c,0x63,0x1f,0x63,0x1b,0x63,0x79,0x7f,0x78,0x7f,0x70,0x3e,0x18,0x70,0x18,0x78,0x18,0x7c,0x18,0x6e,0x1b,0x67,0x9b,0x63,0xd8,0x61,0xf8,0x60,0x78,0x60,0x38,0x60,0x18,0x70,0x18,0x78,0x18,0x7c,0x18,0x6e,0x18,0x67,0x9c,0x63,0xdf,0x61,0xfb,0x60,0x79,0x60,0x38,0x60, diff --git a/radio/src/fonts/sqt5_pw_fw/font_pl_10x14.png b/radio/src/fonts/sqt5_pw_fw/font_pl_10x14.png deleted file mode 100644 index cdd6a18b7aefcdaa25f577a052810fc29e81bb0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 333 zcmV-T0kZyyP)JjwE(Gmj*HVauQ8^VtMcK+u)r0T#TpenUZkLLQ*TK1|goS*ZSdLrsVp z`7P?czYR}BHfl8@UI_uP8y~>t3~4(wj~Q{e;!&34+Q44ZZ-k|{f@hgrzD!M2=J4*m zpZr6%QxkMSQLer#Ws5ajvLK9WC%wly`J5;B`@r6@XKT3f>E(gl2)CwtbJxz~_a(Wo z$*n)#?`~bFlq=Y+uiVim*J-T(_gUFLuiTRQdlu!rPeYlJ=6uzV{PlR(7YQTZ@Ba`L fJkE^ivyLo3E)KrC*Pz#100000NkvXXu0mjf{6Lq? diff --git a/radio/src/fonts/sqt5_pw_fw/font_pt_04x06.lbm b/radio/src/fonts/sqt5_pw_fw/font_pt_04x06.lbm deleted file mode 100644 index bb2db6d13..000000000 --- a/radio/src/fonts/sqt5_pw_fw/font_pt_04x06.lbm +++ /dev/null @@ -1 +0,0 @@ -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, diff --git a/radio/src/fonts/sqt5_pw_fw/font_pt_04x06.png b/radio/src/fonts/sqt5_pw_fw/font_pt_04x06.png deleted file mode 100644 index b3bc84800816a5ce210810e5e8f9b114886dea1b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 130 zcmeAS@N?(olHy`uVBq!ia0vp^6+q0+$P6TZ-ji+xQfvV}A+A9B|Ns9>Z_d99WN{XF zL>4nJa0`PlBg3pY5H=O_PcD{oYKM)Ice5FA%0I6#}JO|$v^tJBr?vhGdwz! VF{3wVxg1c6!PC{xWt~$(698T_AX)$b diff --git a/radio/src/fonts/sqt5_pw_fw/font_pt_05x07.lbm b/radio/src/fonts/sqt5_pw_fw/font_pt_05x07.lbm deleted file mode 100644 index 19aac799d..000000000 --- a/radio/src/fonts/sqt5_pw_fw/font_pt_05x07.lbm +++ /dev/null @@ -1 +0,0 @@ -0x78,0x14,0x16,0x15,0x78,0x74,0x54,0x56,0x55,0x7c,0x78,0x16,0x15,0x16,0x78,0x74,0x56,0x55,0x56,0x7c,0x7a,0x15,0x16,0x15,0x78,0x74,0x56,0x55,0x56,0x7d,0x78,0x15,0x16,0x14,0x78,0x74,0x55,0x56,0x54,0x7c,0x1c,0xa2,0x62,0x22,0x22,0x3c,0xa4,0x64,0x24,0x24,0x7c,0x54,0x56,0x55,0x44,0x7c,0x54,0x56,0x55,0x5c,0x7c,0x56,0x55,0x56,0x44,0x7c,0x56,0x55,0x56,0x5c,0x00,0x44,0x7e,0x45,0x00,0x00,0x48,0x7a,0x41,0x00,0x3c,0x42,0x42,0x43,0x3c,0x38,0x44,0x46,0x45,0x38,0x3c,0x42,0x43,0x42,0x3c,0x38,0x44,0x46,0x44,0x38,0x3c,0x43,0x42,0x43,0x3c,0x38,0x46,0x44,0x46,0x38,0x3c,0x40,0x42,0x41,0x3c,0x78,0x40,0x44,0x42,0x78, diff --git a/radio/src/fonts/sqt5_pw_fw/font_pt_05x07.png b/radio/src/fonts/sqt5_pw_fw/font_pt_05x07.png deleted file mode 100644 index d973c436b99b4021cdae8db4c5c1978b804aa2e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 244 zcmeAS@N?(olHy`uVBq!ia0vp^6+q0v$P6MoRt5kmwg8_HS0MfW|No^o=iddg7?Zr+ zT^Kr8Wj%l#&H|6fVg?3oVGw3ym^DWND9B#o>FdgVmqS`aUg{tBAvd5s0 ziuir6uYUi(|NXxEzxVyQ{{Jt}_qg`B^?CpIy{;;~|5)~Vwxrb*i&-LC5)w1scqbi= z%{QKMzBaCM{jYnU?;br`JTH1)GDGt#XP&cH1?*f%Y?ay85}Sb4q9e0KfoR5&!@I diff --git a/radio/src/fonts/sqt5_pw_fw/font_pt_08x10.lbm b/radio/src/fonts/sqt5_pw_fw/font_pt_08x10.lbm deleted file mode 100644 index 7971cf6a9..000000000 --- a/radio/src/fonts/sqt5_pw_fw/font_pt_08x10.lbm +++ /dev/null @@ -1 +0,0 @@ -0xf0,0x07,0xf8,0x07,0x88,0x00,0x8c,0x00,0x8b,0x00,0x89,0x00,0xf8,0x07,0xf0,0x07,0x90,0x07,0x90,0x07,0x90,0x04,0x90,0x04,0x98,0x04,0xf6,0x07,0xf2,0x07,0x00,0x00,0xf0,0x07,0xfa,0x07,0x8b,0x00,0x89,0x00,0x89,0x00,0x8b,0x00,0xfa,0x07,0xf0,0x07,0x90,0x07,0x94,0x07,0x96,0x04,0x93,0x04,0x96,0x04,0xf4,0x07,0xf0,0x07,0x00,0x00,0xf0,0x07,0xfa,0x07,0x89,0x00,0x89,0x00,0x8b,0x00,0x8a,0x00,0xfa,0x07,0xf1,0x07,0x90,0x07,0x90,0x07,0x94,0x04,0x92,0x04,0x96,0x04,0xf4,0x07,0xf2,0x07,0x00,0x00,0xf0,0x07,0xf8,0x07,0x89,0x00,0x8b,0x00,0x8c,0x00,0x88,0x00,0xf8,0x07,0xf0,0x07,0x90,0x07,0x90,0x07,0x92,0x04,0x96,0x04,0x98,0x04,0xf0,0x07,0xf0,0x07,0x00,0x00,0xf8,0x01,0xfc,0x03,0x04,0x0a,0x04,0x0e,0x04,0x06,0x04,0x02,0x04,0x02,0x04,0x02,0xf8,0x03,0xf8,0x03,0x08,0x0a,0x08,0x0e,0x08,0x06,0x08,0x02,0x08,0x02,0x00,0x00,0xf8,0x07,0xf8,0x07,0x48,0x04,0x4c,0x04,0x4b,0x04,0x49,0x04,0x08,0x04,0x00,0x00,0xf0,0x07,0xf0,0x07,0x90,0x04,0x9c,0x04,0x96,0x04,0xf2,0x04,0xf0,0x04,0x00,0x00,0xf8,0x07,0xfa,0x07,0x4b,0x04,0x49,0x04,0x49,0x04,0x4b,0x04,0x0a,0x04,0x00,0x00,0xf0,0x07,0xf4,0x07,0x96,0x04,0x93,0x04,0x96,0x04,0xf4,0x04,0xf0,0x04,0x00,0x00,0x00,0x00,0x08,0x04,0x08,0x04,0xfc,0x07,0xfb,0x07,0x09,0x04,0x08,0x04,0x00,0x00,0x00,0x00,0x10,0x04,0x10,0x04,0xf4,0x07,0xf3,0x07,0x01,0x04,0x00,0x04,0x00,0x00,0xf0,0x03,0xf8,0x07,0x08,0x04,0x08,0x04,0x0c,0x04,0x0b,0x04,0xf9,0x07,0xf0,0x03,0xe0,0x03,0xf0,0x07,0x10,0x04,0x18,0x04,0x16,0x04,0xf2,0x07,0xe0,0x03,0x00,0x00,0xf0,0x03,0xfa,0x07,0x0b,0x04,0x09,0x04,0x09,0x04,0x0b,0x04,0xfa,0x07,0xf0,0x03,0xe0,0x03,0xf4,0x07,0x16,0x04,0x13,0x04,0x16,0x04,0xf4,0x07,0xe0,0x03,0x00,0x00,0xf2,0x03,0xf9,0x07,0x09,0x04,0x0b,0x04,0x0a,0x04,0x0a,0x04,0xf9,0x07,0xf0,0x03,0xe0,0x03,0xf4,0x07,0x12,0x04,0x16,0x04,0x14,0x04,0xf2,0x07,0xe0,0x03,0x00,0x00,0xf8,0x03,0xf8,0x07,0x00,0x04,0x04,0x04,0x03,0x04,0x01,0x04,0xf8,0x07,0xf8,0x03,0xf0,0x07,0xf0,0x07,0x00,0x04,0x04,0x04,0x03,0x04,0xf1,0x07,0xf0,0x07,0x00,0x00, diff --git a/radio/src/fonts/sqt5_pw_fw/font_pt_08x10.png b/radio/src/fonts/sqt5_pw_fw/font_pt_08x10.png deleted file mode 100644 index 5b833f108ddcb33ea2bf74f3868a2e904496954a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 289 zcmeAS@N?(olHy`uVBq!ia0vp^2Y{G|kr_zxStxV^DYgKg5LY1m|NsA`H|O64vKW)R z-CY66N*Hou4|7dbMu?A3=wQ#U;CfAKSXOZ?I!(FVdQ&MBb@06wN|8vpZ_d99WHBar zySp%Su*!M>Ih+L^k;M!Q+`=Ht$S`Y;1W=H@#M9T6{Vs>JsIHzdFUMA(&~Hx{#}J9j zwf!6Y4jTxx>2s}`?jh2L)jgELyreg8BKm%IxqT%UK&)!Sv^vFc;J+nX(d!>{vRpQP8)u5%(a z?7{A9=ChKxUg@9MwB07rs`Jt1$JZMIm+y`e3zS)#y=HQxafQX)Q%2J(b<#>-ee^EB zY+ohpCoFo=@$J5Ci?>@d&ps){zU9{H>)l(E-Rs^Lygu4{?V0=P(~~_9SSTIZ|B-XG XZ_d99WHBar zySp%Su*!M>Ih+L^k;M!Q+`=Ht$S`Y;1W=H@#M9T6{Vs>Jh`RE&iQl#Yh4egK978y+ zC%-s5ZP%d<|LXt9v$3UiD)ZcbZnHfhVM5}D1P!*$Q|9e9_ye?vpTRURA0wtkoIAy_&M2Dg1JBA1;l1;o9pMZJI@>vQr_|J&Op}zD(wG&#m3?ZT k8UOO%t@gM{h4pip=f)|o4zP*32Q-es)78&qol`;+0RQbd{{R30 diff --git a/radio/src/fonts/sqt5_pw_fw/font_se_10x14.lbm b/radio/src/fonts/sqt5_pw_fw/font_se_10x14.lbm deleted file mode 100644 index e1fa337cc..000000000 --- a/radio/src/fonts/sqt5_pw_fw/font_se_10x14.lbm +++ /dev/null @@ -1 +0,0 @@ -0x60,0x7e,0x60,0x7e,0x60,0x7e,0x64,0x66,0x6a,0x66,0x6a,0x66,0x64,0x66,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x7e,0x60,0x7e,0x6c,0x7e,0x6c,0x66,0x60,0x66,0x60,0x66,0x6c,0x66,0xec,0x7f,0xe0,0x7f,0xe0,0x7f,0xc0,0x3f,0xe0,0x7f,0xec,0x7f,0x6c,0x60,0x60,0x60,0x60,0x60,0x6c,0x60,0xec,0x7f,0xe0,0x7f,0xc0,0x3f,0xf0,0x7f,0xf8,0x7f,0xf8,0x7f,0x1a,0x06,0x1d,0x06,0x1d,0x06,0x1a,0x06,0xf8,0x7f,0xf8,0x7f,0xf0,0x7f,0xf0,0x7f,0xfb,0x7f,0xfb,0x7f,0x18,0x06,0x18,0x06,0x18,0x06,0x18,0x06,0xfb,0x7f,0xfb,0x7f,0xf0,0x7f,0xf0,0x3f,0xfb,0x7f,0xfb,0x7f,0x18,0x60,0x18,0x60,0x18,0x60,0x18,0x60,0xfb,0x7f,0xfb,0x7f,0xf0,0x3f, diff --git a/radio/src/fonts/sqt5_pw_fw/font_se_10x14.png b/radio/src/fonts/sqt5_pw_fw/font_se_10x14.png deleted file mode 100644 index dbd4d48d4f7bdc59fed88763ea93066dc09d4534..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 214 zcmeAS@N?(olHy`uVBq!ia0vp^Hb5-E$P6S4V)|-;6kC8#h%1o(|NsBeoAd7iS&T{E z?k)@+tg;?J4rhT!WHAE+w=f7ZGR&GI0Tg5}@$_|Nzsn&lYR0tU@%l4Bp)gMu#}JO| z$v^m6oFVdQ&MBb@ E09VyT8vp0^^Wy!4%+niL8G3w!xHl+Vc~)+#&MuvBlglo~ z>-k+ltE}%o7AUW8V!7BS#oXMFxlL`}Ch#o0@J}_va|p^d91-10Mg7 zEO9<>U1YwZoQVtgeH^&uxSUFaa7zTw(u}&wm$aG#$Tf4^%U_C%FR>yCh~@wQ002ov JPDHLkV1kid<5>Uz diff --git a/radio/src/fonts/std_pw_fw/font_04x06_extra.lbm b/radio/src/fonts/std_pw_fw/font_04x06_extra.lbm deleted file mode 100644 index cce1e9d68..000000000 --- a/radio/src/fonts/std_pw_fw/font_04x06_extra.lbm +++ /dev/null @@ -1 +0,0 @@ -0x04,0x02,0x3b,0x02,0x04,0x08,0x10,0x37,0x10,0x08,0x20,0x12,0x0a,0x02,0x1e,0x02,0x24,0x28,0x20,0x3c,0x3c,0x20,0x28,0x24,0x02,0x1e,0x02,0x0a,0x12,0x20, diff --git a/radio/src/fonts/std_pw_fw/font_04x06_extra.png b/radio/src/fonts/std_pw_fw/font_04x06_extra.png deleted file mode 100644 index dd59c2e2baf81a726c751c2ab0a129c819ca0638..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 159 zcmeAS@N?(olHy`uVBq!ia0vp^azM<^$P6S^)$=z2DYgKg5LY1m|NsA`H|O64vN#Jo zB8wRqxP?KOkzv*x37{Z*iKnkC`&~9}Zc)avOYbHFg>*b!978y+C-3%A_P)qu2#J9{8$j zsSDCYdl%l_ZrrG^ESKU2Fgr-MR+bkE4lwIQZdi^)=m9gga~q6O3)oC^VuR`R7(w=F zw}vGOJL>E$rjqxQ**jZ&4Kl@_Uc(5hk0qhH+%!V=O2V@)b+Z3dXfBRIL@6CG{*bVJ zyI$oIqCzsilbzZeTI=jhq|OXUJ+D<<(2D_=x@R5;!WNgWSFL>?P8WK)teLh#$UP1C z=QmA<(3%L|FB!gTBHUZ(t;`x9w8~~@ukg_wal*fZzK_l~H*OLBzJ4y zMATLv|MLJ6+IcR23@}RFm%lD8mCLGXfm`bNGMl}s%GlBS4-c7D5gq=mIRF3v07*qo IM6N<$g4e$J%m4rY diff --git a/radio/src/fonts/std_pw_fw/font_05x07_extra.lbm b/radio/src/fonts/std_pw_fw/font_05x07_extra.lbm deleted file mode 100644 index ea644215a..000000000 --- a/radio/src/fonts/std_pw_fw/font_05x07_extra.lbm +++ /dev/null @@ -1 +0,0 @@ -0x04,0x02,0x7b,0x02,0x04,0x10,0x20,0x6f,0x20,0x10,0x20,0x12,0x0a,0x02,0x1e,0x02,0x24,0x28,0x20,0x3c,0x3c,0x20,0x28,0x24,0x02,0x1e,0x02,0x0a,0x12,0x20, diff --git a/radio/src/fonts/std_pw_fw/font_05x07_extra.png b/radio/src/fonts/std_pw_fw/font_05x07_extra.png deleted file mode 100644 index 4d939852c36bb0096c69d7df76eb47c9a3d73aff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 161 zcmeAS@N?(olHy`uVBq!ia0vp^azM<%$P6T}6y8k-QfvV}A+A9B|Ns9>Z_d99WN{XF zL>4nJa0`PlBg3pY5H=O_PcD{+@gZnssFwMh4egK978y+C-3$Qph2f1bVB%_!gr}2Gr^y`a(8tD{?Yn1C3}v57AShrEGOr z7E)K!$RZ{Wy$ZK7o}pG5|)ZTw~#1w8JysC-OcSh zg6-8usm=n7ze`vdUv(u1G+uEqD$_2v`4owg#`Q+r+G{1ju2v(s9n2pV840i(eg zfJjS*5gLYd55S;N1Hw=-=N=YU4BP{_#}!ZU2vC8oX3##|%c@*Q`?5{z{{fK(z(?5a zj$r>wjGI@h3i44g{QWMZz2XP}H3WxYG!np13ul_OKt0UQ-73Rwj{TBx<03*kYdhCB x)zLwB-Hz(0`>_nGZMUmIR(&uXhn%L5{tqaa5bia!W2^uG002ovPDHLkV1mDCO-=v+ diff --git a/radio/src/fonts/std_pw_fw/font_10x14.lbm b/radio/src/fonts/std_pw_fw/font_10x14.lbm deleted file mode 100644 index cd6e036ed..000000000 --- a/radio/src/fonts/std_pw_fw/font_10x14.lbm +++ /dev/null @@ -1,6 +0,0 @@ -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x71,0xfe,0x71,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x7e,0x00,0x00,0x00,0x00,0x00,0x7e,0x00,0x3e,0x00,0x00,0x00,0x00,0x00,0x60,0x06,0x60,0x06,0xfe,0x7f,0xfe,0x7f,0x60,0x06,0x60,0x06,0xfe,0x7f,0xfe,0x7f,0x60,0x06,0x60,0x06,0x60,0x18,0xf0,0x18,0x98,0x19,0x98,0x19,0xfe,0x7f,0xfe,0x7f,0x98,0x19,0x98,0x19,0x18,0x0f,0x18,0x06,0x0c,0x18,0x1e,0x1c,0x1e,0x0e,0x0c,0x07,0x80,0x03,0xc0,0x01,0xe0,0x30,0x70,0x78,0x38,0x78,0x18,0x30,0x78,0x1e,0xfc,0x3f,0x8e,0x71,0xc6,0x63,0xe6,0x67,0x76,0x66,0x3c,0x3c,0x18,0x3c,0x00,0x66,0x00,0x66,0x00,0x00,0x00,0x00,0x66,0x00,0x76,0x00,0x3e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x07,0xf0,0x0f,0x38,0x1c,0x1c,0x38,0x0e,0x70,0x06,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x60,0x0e,0x70,0x1c,0x38,0x38,0x1c,0xf0,0x0f,0xe0,0x07,0x00,0x00,0x00,0x00,0x60,0x06,0x60,0x06,0xc0,0x03,0x80,0x01,0xf8,0x1f,0xf8,0x1f,0x80,0x01,0xc0,0x03,0x60,0x06,0x60,0x06,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xf8,0x1f,0xf8,0x1f,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x66,0x00,0x76,0x00,0x3e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x78,0x00,0x78,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x1c,0x00,0x0e,0x00,0x07,0x80,0x03,0xc0,0x01,0xe0,0x00,0x70,0x00,0x38,0x00,0x18,0x00, -0x00,0x00,0x00,0x00,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x60,0x0e,0x70,0xfc,0x3f,0xf8,0x1f,0x00,0x00,0x00,0x00,0x18,0x60,0x1c,0x60,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x78,0x1c,0x7c,0x0e,0x6e,0x06,0x67,0x86,0x63,0xce,0x61,0xfc,0x60,0x78,0x60,0x00,0x00,0x00,0x00,0x06,0x60,0x06,0x60,0x86,0x61,0x86,0x61,0x86,0x61,0xce,0x73,0xfc,0x3f,0x78,0x1e,0x00,0x00,0x00,0x00,0x80,0x07,0xc0,0x07,0xe0,0x06,0x70,0x06,0x38,0x06,0x1c,0x06,0xfe,0x7f,0xfe,0x7f,0x00,0x00,0x00,0x00,0x7e,0x18,0x7e,0x38,0x66,0x70,0x66,0x60,0x66,0x60,0xe6,0x70,0xc6,0x3f,0x86,0x1f,0x00,0x00,0x00,0x00,0xf8,0x1f,0xfc,0x3f,0x8e,0x71,0x86,0x61,0x86,0x61,0x8e,0x73,0x1c,0x3f,0x18,0x1e,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x86,0x7f,0xc6,0x7f,0xe6,0x00,0x76,0x00,0x3e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x78,0x1e,0xfc,0x3f,0xce,0x73,0x86,0x61,0x86,0x61,0xce,0x73,0xfc,0x3f,0x78,0x1e,0x00,0x00,0x00,0x00,0x78,0x00,0xfc,0x00,0xce,0x61,0x86,0x71,0x86,0x39,0xce,0x1d,0xfc,0x0f,0xf8,0x07,0x00,0x00,0x00,0x00,0x30,0x0c,0x78,0x1e,0x78,0x1e,0x30,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x66,0x78,0x76,0x78,0x3e,0x30,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0xc0,0x03,0xe0,0x07,0x70,0x0e,0x38,0x1c,0x1c,0x38,0x0e,0x70,0x06,0x60,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x06,0x60,0x0e,0x70,0x1c,0x38,0x38,0x1c,0x70,0x0e,0xe0,0x07,0xc0,0x03,0x80,0x01,0x00,0x00,0x00,0x00,0x18,0x00,0x1c,0x00,0x0e,0x00,0x06,0x00,0x06,0x66,0x06,0x67,0x86,0x03,0xce,0x01,0xfc,0x00,0x78,0x00, -0x78,0x00,0xfc,0x00,0xce,0x01,0x86,0x01,0x86,0x01,0xce,0x01,0xfc,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0xe0,0x7f,0xf0,0x7f,0xb8,0x01,0x9c,0x01,0x8e,0x01,0x8e,0x01,0x9c,0x01,0xb8,0x01,0xf0,0x7f,0xe0,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0xce,0x73,0xfc,0x3f,0x78,0x1e,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x0e,0x70,0x1c,0x38,0x18,0x18,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x06,0x60,0x0e,0x70,0x1c,0x38,0x38,0x1c,0xf0,0x0f,0xe0,0x07,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x06,0x00,0x06,0x00,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x86,0x61,0x86,0x61,0x86,0x61,0x8e,0x71,0x9c,0x7f,0x98,0x3f,0xfe,0x7f,0xfe,0x7f,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xfe,0x7f,0xfe,0x7f,0x00,0x00,0x00,0x00,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x38,0x00,0x70,0x00,0x60,0x06,0x60,0x06,0x70,0xfe,0x3f,0xfe,0x1f,0x06,0x00,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0x80,0x01,0xc0,0x03,0xe0,0x07,0x70,0x0e,0x38,0x1c,0x1c,0x38,0x0e,0x70,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0xfe,0x7f,0xfe,0x7f,0x1c,0x00,0x38,0x00,0xf0,0x01,0xf0,0x01,0x38,0x00,0x1c,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x70,0x00,0xe0,0x00,0xc0,0x01,0x80,0x03,0x00,0x07,0x00,0x0e,0xfe,0x7f,0xfe,0x7f,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x0e,0x70,0xfc,0x3f,0xf8,0x1f, -0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0xce,0x01,0xfc,0x00,0x78,0x00,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x66,0x06,0x6e,0x06,0x3c,0x0e,0x38,0xfc,0x7f,0xf8,0x67,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x07,0x86,0x0f,0x86,0x1d,0xce,0x39,0xfc,0x70,0x78,0x60,0x78,0x18,0xfc,0x38,0xce,0x71,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x8e,0x73,0x1c,0x3f,0x18,0x1e,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0xfe,0x1f,0xfe,0x3f,0x00,0x70,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x70,0xfe,0x3f,0xfe,0x1f,0xfe,0x07,0xfe,0x0f,0x00,0x1c,0x00,0x38,0x00,0x70,0x00,0x70,0x00,0x38,0x00,0x1c,0xfe,0x0f,0xfe,0x07,0xfe,0x1f,0xfe,0x3f,0x00,0x70,0x00,0x70,0x00,0x3e,0x00,0x3e,0x00,0x70,0x00,0x70,0xfe,0x3f,0xfe,0x1f,0x1e,0x78,0x3e,0x7c,0x70,0x0e,0xe0,0x07,0xc0,0x03,0xc0,0x03,0xe0,0x07,0x70,0x0e,0x3e,0x7c,0x1e,0x78,0x7e,0x00,0xfe,0x00,0xc0,0x01,0x80,0x03,0x00,0x7f,0x00,0x7f,0x80,0x03,0xc0,0x01,0xfe,0x00,0x7e,0x00,0x06,0x78,0x06,0x7c,0x06,0x6e,0x06,0x67,0x86,0x63,0xc6,0x61,0xe6,0x60,0x76,0x60,0x3e,0x60,0x1e,0x60,0x00,0x00,0x00,0x00,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x00,0x00,0x00,0x00,0x18,0x00,0x38,0x00,0x70,0x00,0xe0,0x00,0xc0,0x01,0x80,0x03,0x00,0x07,0x00,0x0e,0x00,0x1c,0x00,0x18,0x00,0x00,0x00,0x00,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x00,0x00,0x00,0x00,0x60,0x00,0x70,0x00,0x38,0x00,0x1c,0x00,0x0e,0x00,0x0e,0x00,0x1c,0x00,0x38,0x00,0x70,0x00,0x60,0x00,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60, -0x00,0x00,0x00,0x00,0x06,0x00,0x0e,0x00,0x1c,0x00,0x38,0x00,0x70,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x3c,0x60,0x7e,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0x66,0xc0,0x7f,0x80,0x7f,0xfe,0x7f,0xfe,0x7f,0x80,0x61,0xc0,0x61,0xe0,0x60,0x60,0x60,0x60,0x60,0xe0,0x70,0xc0,0x3f,0x80,0x1f,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x70,0x00,0x38,0x00,0x18,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x60,0x60,0xe0,0x60,0xc0,0x61,0x80,0x61,0xfe,0x7f,0xfe,0x7f,0x80,0x1f,0xc0,0x3f,0xe0,0x76,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0x66,0xc0,0x07,0x80,0x07,0x80,0x01,0x80,0x01,0xf8,0x7f,0xfc,0x7f,0x8e,0x01,0x86,0x01,0x06,0x00,0x0e,0x00,0x1c,0x00,0x18,0x00,0xe0,0x01,0xf0,0x03,0x38,0x67,0x18,0x66,0x18,0x66,0x18,0x66,0x18,0x66,0x18,0x76,0xf8,0x3f,0xf8,0x1f,0xfe,0x7f,0xfe,0x7f,0x80,0x01,0xc0,0x01,0xe0,0x00,0x60,0x00,0x60,0x00,0xe0,0x00,0xc0,0x7f,0x80,0x7f,0x00,0x00,0x00,0x00,0x60,0x60,0x60,0x60,0xe6,0x7f,0xe6,0x7f,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x38,0x00,0x70,0x00,0x60,0x60,0x60,0x60,0x70,0xe6,0x3f,0xe6,0x1f,0x00,0x00,0x00,0x00,0xfe,0x7f,0xfe,0x7f,0x00,0x06,0x00,0x0f,0x80,0x1f,0xc0,0x39,0xe0,0x70,0x60,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0x00,0xe0,0x7f,0xe0,0x7f,0x60,0x00,0xe0,0x00,0xc0,0x07,0xc0,0x07,0xe0,0x00,0xe0,0x00,0xc0,0x7f,0x80,0x7f,0xe0,0x7f,0xe0,0x7f,0x80,0x01,0xc0,0x01,0xe0,0x00,0x60,0x00,0x60,0x00,0xe0,0x00,0xc0,0x7f,0x80,0x7f,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xe0,0x70,0xc0,0x3f,0x80,0x1f, -0xe0,0x7f,0xe0,0x7f,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0xe0,0x07,0xc0,0x03,0x80,0x01,0x80,0x01,0xc0,0x03,0xe0,0x07,0x60,0x06,0x60,0x06,0x60,0x06,0xc0,0x07,0x80,0x07,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x80,0x01,0xc0,0x01,0xe0,0x00,0x60,0x00,0x60,0x00,0xe0,0x00,0xc0,0x01,0x80,0x01,0x80,0x61,0xc0,0x63,0xe0,0x67,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x7e,0x00,0x3c,0x00,0x18,0x60,0x00,0x60,0x00,0xfe,0x1f,0xfe,0x3f,0x60,0x70,0x60,0x60,0x00,0x60,0x00,0x70,0x00,0x38,0x00,0x18,0xe0,0x1f,0xe0,0x3f,0x00,0x70,0x00,0x60,0x00,0x60,0x00,0x70,0x00,0x38,0x00,0x18,0xe0,0x7f,0xe0,0x7f,0xe0,0x07,0xe0,0x0f,0x00,0x1c,0x00,0x38,0x00,0x70,0x00,0x70,0x00,0x38,0x00,0x1c,0xe0,0x0f,0xe0,0x07,0xe0,0x1f,0xe0,0x3f,0x00,0x70,0x00,0x70,0x00,0x38,0x00,0x38,0x00,0x70,0x00,0x70,0xe0,0x3f,0xe0,0x1f,0x60,0x60,0xe0,0x70,0xc0,0x39,0x80,0x1f,0x00,0x0f,0x00,0x0f,0x80,0x1f,0xc0,0x39,0xe0,0x70,0x60,0x60,0xe0,0x01,0xe0,0x03,0x00,0x67,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x76,0xe0,0x3f,0xe0,0x1f,0x60,0x60,0x60,0x70,0x60,0x78,0x60,0x7c,0x60,0x6e,0x60,0x67,0xe0,0x63,0xe0,0x61,0xe0,0x60,0x60,0x60,0x00,0x00,0x00,0x00,0x80,0x01,0xc0,0x03,0x78,0x1e,0x7c,0x3e,0x0e,0x70,0x06,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x7f,0xfe,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x60,0x0e,0x70,0x7c,0x3e,0x78,0x1e,0xc0,0x03,0x80,0x01,0x00,0x00,0x00,0x00,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x18,0x18,0x38,0x1c,0xf0,0x0f,0xe0,0x07,0xc0,0x03,0x80,0x01,0x80,0x01,0xc0,0x03,0xe0,0x07,0xf0,0x0f,0x38,0x1c,0x18,0x18,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01, diff --git a/radio/src/fonts/std_pw_fw/font_10x14.png b/radio/src/fonts/std_pw_fw/font_10x14.png deleted file mode 100644 index 1849cc0eb38c60bbfb4271f29f3998ad83d241da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1123 zcmV-p1f2VcP)003YC0{{R3py}({00006P)t-s00030 z|No`gpWOfe010qNS#tmY3ljhU3ljkVnw%H_000McNliru-3AK_6&+&JvfKaw1Mo>i zK~y-)mDI6r<3W1B7T&_a7>W?irSS zEc@k4Jn<*aW$lAz>abF2h!n3#lO0E7qDd{N;kO5 z$xt=}vXZJ1^{PL@0>WzU;whz2Uh;Fi$9GOpScq{@9w~)i{xB3;ax|>-@qdDe429-f z!i+|A^h!|JW<{tz;h!mmffyQcf|p145?UlFD3OxCDF)?8K(iXA(U82J^0(MG*$olw z61?s)#cSMM{GR`Xd5t-w_p^$Ku|odTN^W9$SxbuT|Zeo%)bVUtTc|3K^X-YCA4u7%@jm1D+|v zE%88h8B$Ld+iSC1Eb@Yz=e;*KnTY6e?ib1_=53MzYcnAzQ_}EgNcn-7Z1p!lnto^7OK`a2)7!(Ck4q&17ob}zY~P=IhH4U5f0@zmYZ@Da9jw- zg-oeOJhbGvB`zGx56ySmj**)uqy09;04ljW>p_;hO-4TuLA>`YLq;CR*UuAdA_W(5 zI;G}=v5GSf%aciTjEk6HF}-V6&IB}$f0juC<$n}#E={Xqx~xW|fZHomse&$AE|+DK z2h>$jsLEd|fGa%_0YA2JtXj?kBkw30(JmB+#v@Nv^&V^8uXEM!@qNsz-#7Jk&BE8) z8Nk!$AjNM$zc9RZZ(0XiN-dW2s;PecAK zp-6H&R8twS8gZB&V>=>V1NVaAfuP&t(=qlom7+{CTql-h&XxQKXx~i4?fDtv`3=ol zr{D0A5p9|F*$qLJ%opF|YXkA@;Y(}KdunI?x z6!KYwgYn3(t|?!7pU=vT`D|bkZO$_v#mlo+n~+ZnQfPiz37=1=&9~(<{56M1=iHar zy6#J?oPV!BL%vTG7o7Q$uZ-Ep+hY-P=6{}yIA<&z<~zlihh=U)CD~D;6OVR8U72E! zuoQy`__2}kz8oxHOT+o(B=f6tTuAZx_eQ>Ys5RC3zNLV>$!rGO{I^5%j2Jb`U+2+0 pIT8D9dKA_g&S#Q{2P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i*n> z5(5wu4dY1w000?uMObu0Z*6U5Zgc=ca%Ew3Wn>_CX>@2HM@dakSAh-}000FyNkljK*D9&?NBIp79F=#1*&C=ks|L6%`c~6%`c~6)i&h zT?e*p+rPhie)wOxk)J-Q@A&(u-BCY!^`Y&f{j=7`mSg#*?*FkI%CAwoETQd>wATsp^iMs1s&?6W&~HcesvT0cjg0mq`kg7GiuqH?OH_SD&$CBGMMeKxqjE@O>8Qk8P9rK}ZM=MxM|5h@xp1KqfM$i1IbnLJ7-MFA&6YQ1TSvK4^H+r-XWQ`Hr?{H$6FI(pmJnan z39#&VdyxUwVM8!%jN{pJ3K2{l6KOd~VfEW8C8 z6?NjHkPG!4iy52N;~3QZ&E8nw-7b1hR4nqfdlyoV8FyonCGyEcJR^*{B?86V&PN3k z*%f-QEg6_m74~;jJ_^gD+A(L&qk^yMypd?6!H%`i+WVo%Jo_nlKRHI=Qe%h{GAC|1~y0a z%2lS5J?kc}MNU?Xq(;7CW-(&O5peWNTr5WHC=2Kjr1x^nj7@09>w?*v>1=&4TMw+L zPiOH3;hS0?c=MIB>v*dTk$4W2lX|_YHYw@mTWgu~;LkQf}>BB5sabUv)wp1&?@)e4yd|zU7G~e3XUnLgSE~GZNEGn9Oa?#LC?&ftRXH4)`p|W$ei2I8rw?vwTzPgKQf@M^KB3ii(Pgii(PgBIyUqaxnc8#($xHO){_~%<(Sq}u>Yd~YrXxSnYg~T% zFdlwxoZdBm#eCz0A2oX(|Cj&$pNVI_Jomr+gg^HWeE8XH*iqQ<@N<8aiFe{T28I{w W6C^GAxAy^UXYh3Ob6Mw<&;$VafmR{_ diff --git a/radio/src/fonts/std_pw_fw/font_cz_04x06.lbm b/radio/src/fonts/std_pw_fw/font_cz_04x06.lbm deleted file mode 100644 index 450f6b219..000000000 --- a/radio/src/fonts/std_pw_fw/font_cz_04x06.lbm +++ /dev/null @@ -1 +0,0 @@ -0x18,0x24,0x16,0x3d,0x00,0x18,0x24,0x25,0x02,0x01,0x18,0x34,0x2c,0x0a,0x01,0x18,0x34,0x2d,0x0a,0x01,0x00,0x24,0x3c,0x22,0x01,0x18,0x24,0x24,0x1a,0x01,0x3c,0x04,0x05,0x0a,0x01,0x28,0x2d,0x36,0x15,0x00,0x1c,0x20,0x22,0x3d,0x00,0x1c,0x21,0x21,0x3c,0x00,0x0c,0x50,0x22,0x1d,0x00,0x38,0x14,0x14,0x3a,0x01,0x00,0x24,0x3e,0x25,0x00,0x3c,0x15,0x16,0x2d,0x00,0x00,0x0c,0x32,0x0d,0x00,0x24,0x35,0x2e,0x25,0x00,0x3e,0x2a,0x2a,0x22,0x01, diff --git a/radio/src/fonts/std_pw_fw/font_cz_04x06.png b/radio/src/fonts/std_pw_fw/font_cz_04x06.png deleted file mode 100644 index d43f5b05ce108ef439e7894d704d6d011abd2ba4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 220 zcmeAS@N?(olHy`uVBq!ia0vp^p+L;e$P6T%YbQSiQfvV}A+A9B|Ns9>Z_d99WHBar zySp%Su*!M>Ih+L^k;M!Q+`=Ht$S`Y;1W=H@#M9T6{Vto3D4$fGMpYM3D8|#pF@)oK za>e%Y+R_)Z@4sJ{|Mx(_{$KaL-~GP-er^2OgBL#E`Q(#Ww#D`KA+EMJ-o@MX&iC!w zox7c-`TNdWYwb60PWgRWTjH9{c8lLTmcKdn&4sV+f5Hd3j(P?LpZ&&_nH_r-f%Y(X My85}Sb4q9e06ce7X8-^I diff --git a/radio/src/fonts/std_pw_fw/font_cz_05x07.lbm b/radio/src/fonts/std_pw_fw/font_cz_05x07.lbm deleted file mode 100644 index 1cb949cdc..000000000 --- a/radio/src/fonts/std_pw_fw/font_cz_05x07.lbm +++ /dev/null @@ -1 +0,0 @@ -0x20,0x54,0x56,0x55,0x78,0x38,0x45,0x46,0x45,0x20,0x38,0x54,0x56,0x55,0x18,0x38,0x55,0x56,0x55,0x18,0x00,0x44,0x7e,0x41,0x00,0x38,0x44,0x46,0x45,0x38,0x7c,0x09,0x06,0x05,0x08,0x48,0x55,0x56,0x55,0x20,0x3c,0x40,0x42,0x21,0x7c,0x3c,0x40,0x43,0x23,0x7c,0x0c,0x50,0x52,0x51,0x3c,0x78,0x14,0x16,0x15,0x78,0x00,0x44,0x7e,0x45,0x00,0x7c,0x15,0x16,0x35,0x48,0x0c,0x10,0x62,0x11,0x0c,0x44,0x65,0x56,0x4d,0x44,0x7c,0x54,0x56,0x55,0x44,0x3c,0x3c,0x24,0x42,0xff,0x24,0x18,0x81,0x42,0x3c, diff --git a/radio/src/fonts/std_pw_fw/font_cz_05x07.png b/radio/src/fonts/std_pw_fw/font_cz_05x07.png deleted file mode 100644 index 19ab8e4d182d90c32f35e2a56192c476885b06d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 223 zcmeAS@N?(olHy`uVBq!ia0vp^@j%SM$P6Txa&G(yq}T#{LR^9L|NsA&-kg6I$l@&U zh%9Dc;1&j9Muu5)B!GhKC7!;n?04C?x%qX!s8_583gvjZIEHXsPp*iT{hs@J_p9pb z+xOi+R`CA!z3*4QpK3f(tKBv)<>cbFqs6LG{03(df7CpG+xPis@x6C@qIb3}{K@eC zT>nw-irZzy>k>8QeJ_8$KV|mz+o!dk8EjGUmZ`N!z1V%1^Gz7ff58N4hK?h4FOB6+ RJp$Ux;OXk;vd$@?2>|`cS(^X= diff --git a/radio/src/fonts/std_pw_fw/font_cz_08x10.lbm b/radio/src/fonts/std_pw_fw/font_cz_08x10.lbm deleted file mode 100644 index 63fbb75db..000000000 --- a/radio/src/fonts/std_pw_fw/font_cz_08x10.lbm +++ /dev/null @@ -1 +0,0 @@ -0x00,0x03,0xa0,0x07,0xb0,0x04,0x94,0x04,0x93,0x02,0xf1,0x07,0xe0,0x07,0x00,0x00,0xc0,0x01,0xe1,0x03,0x33,0x06,0x16,0x04,0x13,0x04,0x31,0x06,0x20,0x02,0x00,0x00,0xc0,0x01,0xe0,0x03,0xb0,0x06,0x94,0x04,0xb3,0x04,0xe1,0x06,0xc0,0x02,0x00,0x00,0xc0,0x01,0xe1,0x03,0xb3,0x06,0x96,0x04,0xb3,0x04,0xe1,0x06,0xc0,0x02,0x00,0x00,0x00,0x04,0x10,0x04,0xf4,0x07,0xf3,0x07,0x01,0x04,0x00,0x04,0x00,0x00,0x00,0x00,0xc0,0x01,0xe0,0x03,0x30,0x06,0x14,0x04,0x33,0x06,0xe1,0x03,0xc0,0x01,0x00,0x00,0x11,0x00,0xf3,0x07,0xe6,0x07,0x33,0x00,0x11,0x00,0x30,0x00,0x20,0x00,0x00,0x00,0x60,0x02,0xf1,0x06,0x93,0x04,0x96,0x04,0x93,0x04,0xb1,0x07,0x20,0x03,0x00,0x00,0xf0,0x01,0xf0,0x03,0x00,0x06,0x04,0x04,0x03,0x02,0xf1,0x07,0xf0,0x07,0x00,0x00,0xf0,0x01,0xf0,0x03,0x02,0x06,0x05,0x04,0x05,0x02,0xf2,0x07,0xf0,0x07,0x00,0x00,0xf0,0x04,0xf0,0x0c,0x00,0x09,0x04,0x09,0x83,0x0c,0xf1,0x07,0xf0,0x03,0x00,0x00,0xf0,0x07,0xf8,0x07,0x88,0x00,0x8c,0x00,0x8b,0x00,0x89,0x00,0xf8,0x07,0xf0,0x07,0x00,0x00,0x08,0x04,0x08,0x04,0xfc,0x07,0xfb,0x07,0x09,0x04,0x08,0x04,0x00,0x00,0xf8,0x07,0xf9,0x07,0xcb,0x00,0xce,0x00,0xcb,0x01,0x49,0x03,0x78,0x06,0x30,0x04,0x18,0x00,0x18,0x00,0x30,0x00,0xe4,0x07,0xe3,0x07,0x31,0x00,0x18,0x00,0x18,0x00,0x08,0x06,0x09,0x07,0x8b,0x05,0xce,0x04,0x6b,0x04,0x39,0x04,0x18,0x04,0x00,0x00,0xf8,0x07,0xf8,0x07,0x48,0x04,0x4c,0x04,0x4b,0x04,0x49,0x04,0x08,0x04,0x00,0x00, diff --git a/radio/src/fonts/std_pw_fw/font_cz_08x10.png b/radio/src/fonts/std_pw_fw/font_cz_08x10.png deleted file mode 100644 index 912588acb37b199e4150c5aa801ee42403bf9de9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 292 zcmeAS@N?(olHy`uVBq!ia0vp^9YD;($P6T#L(}gADYgKg5LY1m|NsA`H|O64vKW)R z-CYFS$5RU7< zeTsaC4R~B-Mc;5eWI>XXxZ#K)20{|VFkg`%L3)vlUEq|;F6_-sn!mKzCyOXLJB3e z$>1?Vrc8c_zQ7d~+`&|@V8{z7y+tBN)N{#F=ndlT1O3MddTF~Il{e2jdM!KWJdX|p zd1bZ~?w_`FRL1*p^dP(|+s2<(S>unYMI1*2ffSTEKczD8@n#={5aCZXprmDsI=OA|TpmaI_B z)hxY=VVF`>&mJ!b%%%|IIXRyLc22R*`%7l?%i+I*A4i_mzjazNvH$=807*qoM6N<$ Ef{F*FtN;K2 diff --git a/radio/src/fonts/std_pw_fw/font_de_04x06.lbm b/radio/src/fonts/std_pw_fw/font_de_04x06.lbm deleted file mode 100644 index fcdfd7962..000000000 --- a/radio/src/fonts/std_pw_fw/font_de_04x06.lbm +++ /dev/null @@ -1 +0,0 @@ -0x3d,0x0a,0x0a,0x3d,0x00,0x18,0x25,0x14,0x3d,0x00,0x1d,0x22,0x22,0x1d,0x00,0x18,0x25,0x24,0x19,0x00,0x1d,0x20,0x20,0x1d,0x00,0x1a,0x20,0x10,0x3a,0x00,0x7e,0x05,0x25,0x1a,0x00, diff --git a/radio/src/fonts/std_pw_fw/font_de_04x06.png b/radio/src/fonts/std_pw_fw/font_de_04x06.png deleted file mode 100644 index d9c1fa058a1f2829c5a9887dd9a7cfd8af52ccc7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 179 zcmeAS@N?(olHy`uVBq!ia0vp^%0SG{$P6TRXr);JDYgKg5LY1m|NsA`H|O64vKW)R z-CYZ_d99WN{XF zL>4nJa0`PlBg3pY5H=O_PcD{+yXqMB5Bz`A#+a`#}JO|$q}< z7AueH#z)h*B~CrJ+3u5&FtL&^Mf`kaUPZ$~m&iv;m=4z~R4_2S|025Y(OD5Upb-q7 Lu6{1-oD!MuVhivIaRt)<|NmclbN*c*i!sUD z-G!lpRn`N@;VkfoEM{Qf76xHPhFNnYfP(BLp1!W^ciDt^RgLU#+`R}C^73?X4B@!0 zdSWB*0S6u?hcGY6lc$&ZNCq1AcVGAaWV}SFuDwb4fat9YA}6oT>U{ci!-6Xv#sXa1 r@=H6jxxd`{ulP#yy^JOEzt4<0SM=`nHFa$Sn#$nm>gTe~DWM4fNn%0m diff --git a/radio/src/fonts/std_pw_fw/font_de_10x14.lbm b/radio/src/fonts/std_pw_fw/font_de_10x14.lbm deleted file mode 100644 index ed3d1da5f..000000000 --- a/radio/src/fonts/std_pw_fw/font_de_10x14.lbm +++ /dev/null @@ -1 +0,0 @@ -0x80,0x7f,0xc2,0x7f,0xe2,0x06,0x70,0x06,0x38,0x06,0x38,0x06,0x70,0x06,0xe2,0x06,0xc2,0x7f,0x80,0x7f,0x00,0x18,0x06,0x3c,0x66,0x7e,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe6,0x66,0xc6,0x7f,0x80,0x7f,0xe0,0x1f,0xf2,0x3f,0x3a,0x70,0x18,0x60,0x18,0x60,0x18,0x60,0x18,0x60,0x3a,0x70,0xf2,0x3f,0xe0,0x1f,0x80,0x1f,0xc6,0x3f,0xe6,0x70,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xe6,0x70,0xc6,0x3f,0x80,0x1f,0xf8,0x1f,0xfa,0x3f,0x02,0x70,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x02,0x70,0xfa,0x3f,0xf8,0x1f,0xe0,0x1f,0xe6,0x3f,0x06,0x70,0x00,0x60,0x00,0x60,0x00,0x70,0x00,0x38,0x06,0x18,0xe6,0x7f,0xe0,0x7f,0xf8,0x7f,0xfc,0x7f,0x0e,0x00,0x06,0x00,0x66,0x30,0x6e,0x30,0xfc,0x38,0xd8,0x1f,0x00,0x0f,0x00,0x00, diff --git a/radio/src/fonts/std_pw_fw/font_de_10x14.png b/radio/src/fonts/std_pw_fw/font_de_10x14.png deleted file mode 100644 index 22ae54efc382d99120bb2c4f73afbf8e1609f71f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 254 zcmeAS@N?(olHy`uVBq!ia0vp^Za^%+$P6SWn$Ok+QfvV}A+A9B|Ns9>Z_d99WN{XF zL>4nJa0`PlBg3pY5H=O_PcD{+ya7PLR_1GLfxJ&jv*Y^lYj8D)=NBFdcG#i zQopv3_wfJcpZ|yctG9D*d-(ak{h$AD-`amOu=(@9S@y)Qnzn}r*bg5+^X*T2szeo6 zi@hOJqzzBex3ltE4Qq^fzI|)A|HHUxo`Hdc!QlulgK4(b5z~HhOep=}*eWA!%-_71 viCsF`xoI;`^Ik@N`_GO1?f(r9#IiC}KlM{uddq48&{+(gu6{1-oD!M<4_8}j diff --git a/radio/src/fonts/std_pw_fw/font_es_04x06.lbm b/radio/src/fonts/std_pw_fw/font_es_04x06.lbm deleted file mode 100644 index 9c8fdb698..000000000 --- a/radio/src/fonts/std_pw_fw/font_es_04x06.lbm +++ /dev/null @@ -1 +0,0 @@ -0x3e,0x09,0x12,0x3d,0x00,0x3a,0x11,0x0a,0x39,0x00, diff --git a/radio/src/fonts/std_pw_fw/font_es_04x06.png b/radio/src/fonts/std_pw_fw/font_es_04x06.png deleted file mode 100644 index ee36412ee4bd69d18d365d53bfc8c89b24b5dca8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 144 zcmeAS@N?(olHy`uVBq!ia0vp^AT~QAGmzv?@>2j(YymzYu0Z<#|Nl#G&c6#}aTa() z76avlL70(Y)*K0-AbW|YuPggqHg0YK4Nvi=T|gmOPZ!4!j_b)0uMY^6HYomQXr9L0 iyqwv28}s4+%nVKeY*VVzgff8&89ZJ6T-G@yGywpGpCfJn diff --git a/radio/src/fonts/std_pw_fw/font_es_05x07.lbm b/radio/src/fonts/std_pw_fw/font_es_05x07.lbm deleted file mode 100644 index 99f4cd1a2..000000000 --- a/radio/src/fonts/std_pw_fw/font_es_05x07.lbm +++ /dev/null @@ -1 +0,0 @@ -0x7c,0x0a,0x11,0x22,0x7d,0x78,0x12,0x09,0x0a,0x71, diff --git a/radio/src/fonts/std_pw_fw/font_es_05x07.png b/radio/src/fonts/std_pw_fw/font_es_05x07.png deleted file mode 100644 index b1135c1b240f91d08d8a2dda7eb31e80b89fb700..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^AT|dhGm!jc^5-j%VhivIaRt)<|NmclbN*c*i?hHZ zvY3H^TNs2H8D`Cq01C2~c>21s-(}vvU!%b0PEL|I7>togBfT)<<3d)iQXx`njxgN@xNAfrKfn diff --git a/radio/src/fonts/std_pw_fw/font_es_08x10.lbm b/radio/src/fonts/std_pw_fw/font_es_08x10.lbm deleted file mode 100644 index f3bb8184c..000000000 --- a/radio/src/fonts/std_pw_fw/font_es_08x10.lbm +++ /dev/null @@ -1 +0,0 @@ -0xf0,0x07,0xf4,0x07,0x66,0x00,0xc2,0x00,0x86,0x01,0x04,0x07,0xf6,0x07,0xf2,0x07,0xf4,0x07,0xf6,0x07,0x22,0x00,0x16,0x00,0x34,0x00,0xe6,0x07,0xc2,0x07,0x00,0x00, diff --git a/radio/src/fonts/std_pw_fw/font_es_08x10.png b/radio/src/fonts/std_pw_fw/font_es_08x10.png deleted file mode 100644 index c05c1f406c7ff6e9caac538192c7fadced002c91..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 168 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~e$P6R{HP;^kQfvV}A+A9B|Ns9>Z_d99WHBar zySp%Su*!M>Ih+L^k;M!Q+`=Ht$S`Y;1W=H@#M9T6{Vtmjubi6XhG$cNLK>bfjv*Y^ zlYji5|IkDIuuCeN!eO_$j&3s=k56(uI_cnnNe7vF{{3fXxUR-kZMC1(4XB5~)78&q Iol`;+01dJ)od5s; diff --git a/radio/src/fonts/std_pw_fw/font_es_10x14.lbm b/radio/src/fonts/std_pw_fw/font_es_10x14.lbm deleted file mode 100644 index 92d200c51..000000000 --- a/radio/src/fonts/std_pw_fw/font_es_10x14.lbm +++ /dev/null @@ -1 +0,0 @@ -0xe8,0x7f,0xec,0x7f,0xc6,0x01,0x82,0x03,0x04,0x07,0x08,0x0e,0x0c,0x1c,0x06,0x38,0xe2,0x7f,0xe0,0x7f,0xe0,0x7f,0xe8,0x7f,0x8c,0x01,0xc6,0x01,0xe2,0x00,0x64,0x00,0x68,0x00,0xec,0x00,0xc6,0x7f,0x82,0x7f, diff --git a/radio/src/fonts/std_pw_fw/font_es_10x14.png b/radio/src/fonts/std_pw_fw/font_es_10x14.png deleted file mode 100644 index 7f803e46843b1ed4fa8c8f46d9134f8554cf17ee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 177 zcmeAS@N?(olHy`uVBq!ia0vp^B0wy_$P6TPuAPklQfvV}A+A9B|Ns9>Z_d99WN{XF zL>4nJa0`PlBg3pY5H=O_PcD{+yaskCz~38LUx`mjv*Y^lYjjG&wP02DQ2Ev zJKuy2HF*aZ9^L*dVQ`|D!{CFlnZX8Q`GkOH_6HI;j)*zrFdr#%$l*WYu$6(&NGy5Q TtS>KtCNX%r`njxgN@xNA#L+cJ diff --git a/radio/src/fonts/std_pw_fw/font_fr_04x06.lbm b/radio/src/fonts/std_pw_fw/font_fr_04x06.lbm deleted file mode 100644 index afd789ef6..000000000 --- a/radio/src/fonts/std_pw_fw/font_fr_04x06.lbm +++ /dev/null @@ -1 +0,0 @@ -0x18,0x36,0x2d,0x08,0x00,0x18,0x35,0x2e,0x08,0x00,0x18,0x25,0x16,0x3c,0x00,0x00,0x26,0x3d,0x22,0x00,0x00,0x4c,0x32,0x12,0x00, diff --git a/radio/src/fonts/std_pw_fw/font_fr_04x06.png b/radio/src/fonts/std_pw_fw/font_fr_04x06.png deleted file mode 100644 index da9f758ff983446aa427798fe539f5306443e152..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3610 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 gnv8Wnc?Z_d99WN{XF zL>4nJa0`PlBg3pY5H=O_PcD{+=7fk`?RM6g$z7h978y+Cs+Kgt7ksE_q`x5 zkL}6((h^zopr E0HlmDVgLXD diff --git a/radio/src/fonts/std_pw_fw/font_fr_08x10.lbm b/radio/src/fonts/std_pw_fw/font_fr_08x10.lbm deleted file mode 100644 index 5be2553c5..000000000 --- a/radio/src/fonts/std_pw_fw/font_fr_08x10.lbm +++ /dev/null @@ -1 +0,0 @@ -0xc0,0x01,0xe0,0x03,0xb4,0x06,0x96,0x04,0xb3,0x04,0xe1,0x06,0xc0,0x02,0x00,0x00,0xc0,0x01,0xe0,0x03,0xb1,0x06,0x93,0x04,0xb6,0x04,0xe4,0x06,0xc0,0x02,0x00,0x00,0x00,0x03,0xa0,0x07,0xb1,0x04,0x93,0x04,0x96,0x02,0xf4,0x07,0xe0,0x07,0x00,0x00,0x04,0x04,0x16,0x04,0xf3,0x07,0xf6,0x07,0x04,0x04,0x00,0x04,0x00,0x00,0xe0,0x00,0xf0,0x01,0x18,0x0b,0x08,0x0e,0x08,0x06,0x18,0x03,0x10,0x01,0x00,0x00,0x00,0x00, diff --git a/radio/src/fonts/std_pw_fw/font_fr_08x10.png b/radio/src/fonts/std_pw_fw/font_fr_08x10.png deleted file mode 100644 index f9ad08c8b5e9abe72dd876a22e22cf54c932d222..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3647 zcmV-F4#4q=P)KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z00093P)t-s00030|NjC40s{jB1Ox;H1qB8M1_uWR2nYxX2?+`c3JVJh3=9kn4Gj(s z4i66x5D*X%5fKs+5)%^>6ciK{6%`g178e&67#J8C85tTH8XFrM92^`S9UUGX9v>ec zARr(iAt53nA|oRsBqSsyB_$>%CMPE+C@3f?DJd!{Dl021EG#T7EiEoCE-x=HFfcGN zF)=bSGBYzXG&D3dH8nOiHa9mnI5;>tIXOByIy*Z%JUl!-Jv}}?K0iM{KtMo2K|w-7 zLPJACL_|bIMMXwNMn^|SNJvOYNl8jdN=r*iOiWBoO-)WtPESuyP*6}&QBhJ-Qd3h? zR8&+|RaI72R##V7SXfwDSy@_IT3cINTwGjTU0q&YUSD5dU|?WjVPRroVq;@tWMpJz zWo2e&W@l$-XlQ6@X=!R|YHMq2Y;0_8ZEbFDZf|dIaBy&OadC2Ta&vQYbaZreb#-=j zc6WDoczAeud3kzzdV70&e0+R;eSLm@et&;|fPjF3fq{a8f`fyDgoK2Jg@uNOhKGlT zh=_=ZiHVAeii?YjjEszpjg5|uj*pLzkdTm(k&%*;l9Q8@l$4Z}m6ev3mY0{8n3$NE znVFiJnwy)OoSdAUot>VZo}ZteprD|kp`oIpqNAguq@<*!rKP5(rl+T;sHmu^si~@} zs;jH3tgNi9t*x%EuCK4Ju&}VPv9YqUva_?Zw6wIfwY9dkwzs#pxVX5vxw*Q!y1To( zyu7@dCU$jHda$;ryf%FD~k%*@Qq z&CSlv&d<-!(9qD)(b3Y<($mw^)YR0~)z#M4*4Nk9*x1lt)=I7_<=;-L_>FMg~>g((4?Ck9A?d|UF?(gsK z@bK{Q@$vHV^7Hfa^z`)g_4W4l_V@Sq`1ttw`T6?#`uqF){QUg={r&#_{{R2~`6RjA z00019NklLTv=aOOu}4*(0RTn`0YtFN R5f1{t>7V84C&1+RxzW>gTe~DWM4f=lD#7 diff --git a/radio/src/fonts/std_pw_fw/font_it_04x06.lbm b/radio/src/fonts/std_pw_fw/font_it_04x06.lbm deleted file mode 100644 index c6a470f29..000000000 --- a/radio/src/fonts/std_pw_fw/font_it_04x06.lbm +++ /dev/null @@ -1 +0,0 @@ -0x18,0x25,0x16,0x3c,0x00,0x1c,0x21,0x22,0x3c,0x00, diff --git a/radio/src/fonts/std_pw_fw/font_it_04x06.png b/radio/src/fonts/std_pw_fw/font_it_04x06.png deleted file mode 100644 index 3659402499010a3c14e8f3357e315c61714d0ad6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 145 zcmeAS@N?(olHy`uVBq!ia0vp^AT~QAGmzv?@>2j(YymzYu0Z<#|Nl#G&c6#}aTa() z76avlL70(Y)*K0-AbW|YuPggqHg0Y{o`s>2TYy4xo-U3d9M_X?R5v`l$Jmy~-j>78 ime1a1%E$AcpMfFd5BmwVS}ALwN(N6?KbLh*2~7Z^Tq67c diff --git a/radio/src/fonts/std_pw_fw/font_it_05x07.lbm b/radio/src/fonts/std_pw_fw/font_it_05x07.lbm deleted file mode 100644 index 17d52fd9b..000000000 --- a/radio/src/fonts/std_pw_fw/font_it_05x07.lbm +++ /dev/null @@ -1 +0,0 @@ -0x20,0x55,0x56,0x54,0x78,0x3c,0x41,0x42,0x20,0x7c, diff --git a/radio/src/fonts/std_pw_fw/font_it_05x07.png b/radio/src/fonts/std_pw_fw/font_it_05x07.png deleted file mode 100644 index 4a16baf3a204a1fea1c186dcc818314e5cc87625..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 148 zcmeAS@N?(olHy`uVBq!ia0vp^AT|dhGm!jc^5-j%VhivIaRt)<|NmclbN*c*i?hHZ zvY3H^TNs2H8D`Cq01C2~c>21s-(}Z_d99WN{XF zL>4nJa0`PlBg3pY5H=O_PcD{+m2n}50I-<%4dHU>{uKbLh*2~7auqAXJY diff --git a/radio/src/fonts/std_pw_fw/font_it_10x14.lbm b/radio/src/fonts/std_pw_fw/font_it_10x14.lbm deleted file mode 100644 index b25268b4e..000000000 --- a/radio/src/fonts/std_pw_fw/font_it_10x14.lbm +++ /dev/null @@ -1 +0,0 @@ -0x00,0x18,0x00,0x3c,0x60,0x7e,0x62,0x66,0x66,0x66,0x6c,0x66,0x68,0x66,0xe0,0x66,0xc0,0x7f,0x80,0x7f,0xe0,0x1f,0xe0,0x3f,0x00,0x70,0x02,0x60,0x06,0x60,0x0c,0x60,0x08,0x60,0x00,0x30,0xe0,0x7f,0xe0,0x7f, diff --git a/radio/src/fonts/std_pw_fw/font_it_10x14.png b/radio/src/fonts/std_pw_fw/font_it_10x14.png deleted file mode 100644 index 43e824d5353ecef058fd43205e3f811e34ef5f65..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 178 zcmeAS@N?(olHy`uVBq!ia0vp^B0wy_$P6TPuAPklQfvV}A+A9B|Ns9>Z_d99WN{XF zL>4nJa0`PlBg3pY5H=O_PcD{+9%@Hw85xugEUAI3K3f9w+fKFTNj;6K9Nu!FJVspE{jjSC$c8y_|_GJEJU)HllA UIdbg3AkZiVPgg&ebxsLQ0Qc8A#{d8T diff --git a/radio/src/fonts/std_pw_fw/font_pl_04x06.lbm b/radio/src/fonts/std_pw_fw/font_pl_04x06.lbm deleted file mode 100644 index f16f231db..000000000 --- a/radio/src/fonts/std_pw_fw/font_pl_04x06.lbm +++ /dev/null @@ -1 +0,0 @@ -0x18,0x24,0x14,0x3c,0x40,0x18,0x24,0x24,0x02,0x01,0x18,0x34,0x2c,0x48,0x00,0x00,0x29,0x3f,0x24,0x00,0x3c,0x06,0x05,0x38,0x00,0x18,0x26,0x25,0x18,0x00,0x28,0x2c,0x36,0x15,0x00,0x24,0x35,0x2d,0x24,0x00,0x24,0x34,0x2e,0x25,0x00,0x3e,0x09,0x69,0x5e,0x00,0x1c,0x22,0x22,0x15,0x00,0x3f,0x25,0x65,0x41,0x00,0x3f,0x28,0x24,0x24,0x00,0x3e,0x0c,0x11,0x3e,0x00,0x1c,0x22,0x22,0x1d,0x00,0x24,0x2a,0x2b,0x12,0x00,0x22,0x33,0x2a,0x26,0x00,0x22,0x32,0x2b,0x26,0x00, diff --git a/radio/src/fonts/std_pw_fw/font_pl_04x06.png b/radio/src/fonts/std_pw_fw/font_pl_04x06.png deleted file mode 100644 index b49d3e8baaa5f18c7928bae9231322109a59f6ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 177 zcmeAS@N?(olHy`uVBq!ia0vp^Q9#Vj$P6Smm7T}{QfvV}A+A9B|Ns9>Z_d99WTkn! zIEHXsXN+c8@}J@Ve%tq(-~1APzkA;ShX3`u@7Lc>`@XG^!-1ja`NVUI+)*Y|*S~jQ z$i8g0<@b%a&r>(wJHX(5e%p5Q-BI6{?%jKUVa;=~Gl^W!47Mc$^?d&gwB}#^d?0xs Yf2!%PGo9QIfi^ODy85}Sb4q9e04{P)k^lez diff --git a/radio/src/fonts/std_pw_fw/font_pl_05x07.lbm b/radio/src/fonts/std_pw_fw/font_pl_05x07.lbm deleted file mode 100644 index 6c92d7afd..000000000 --- a/radio/src/fonts/std_pw_fw/font_pl_05x07.lbm +++ /dev/null @@ -1 +0,0 @@ -0x20,0x54,0x54,0xd4,0xb8,0x38,0x44,0x46,0x45,0x28,0x38,0x54,0x54,0xd4,0x98,0x00,0x49,0x7f,0x44,0x00,0x7c,0x08,0x06,0x05,0x78,0x38,0x44,0x46,0x45,0x38,0x48,0x54,0x56,0x55,0x20,0x44,0x65,0x55,0x4c,0x44,0x44,0x64,0x56,0x4d,0x44,0x7e,0x09,0x09,0xc9,0xbe,0x3c,0x42,0x42,0x43,0x24,0x7f,0x49,0x49,0xc9,0x81,0x08,0x7f,0x44,0x44,0x40,0x7e,0x08,0x12,0x21,0x7e,0x3c,0x42,0x42,0x43,0x3c,0x4c,0x52,0x52,0x53,0x24,0x62,0x52,0x4b,0x4a,0x46,0x62,0x52,0x4a,0x4b,0x46,0x3c,0x3c,0x24,0x42,0xff,0x24,0x18,0x81,0x42,0x3c, diff --git a/radio/src/fonts/std_pw_fw/font_pl_05x07.png b/radio/src/fonts/std_pw_fw/font_pl_05x07.png deleted file mode 100644 index 85d8754813d68378609e1b8598890e9cfbaffc90..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 196 zcmeAS@N?(olHy`uVBq!ia0vp^DL~A@$P6S+rB0XuDYgKg5LY1m|NsA`H|O64vMN1Y z978y+C;y1g|6cofw${7%)$gz8CH(ka|Ni%{+ue2RjZ!x3IdEaJ&C?l7pXbP1pRdiY zJn*4%-NvW)#fuIZpP&EPHzC7r$K6xEzU{fMt^dw;_JIJK`rTi@-Yu@n-xFT@gfU?L vj&7#nNi9>APE2`j|DU<>Z>7S=a%KiLUi+_ZFK4y@9l_w~>gTe~DWM4fhjv&K diff --git a/radio/src/fonts/std_pw_fw/font_pl_08x10.lbm b/radio/src/fonts/std_pw_fw/font_pl_08x10.lbm deleted file mode 100644 index 4afc86fef..000000000 --- a/radio/src/fonts/std_pw_fw/font_pl_08x10.lbm +++ /dev/null @@ -1 +0,0 @@ -0x00,0x03,0xa0,0x07,0xb0,0x04,0x90,0x04,0x90,0x02,0xf0,0x0f,0xe0,0x0b,0x00,0x00,0xc0,0x01,0xe0,0x03,0x30,0x06,0x14,0x04,0x13,0x04,0x31,0x06,0x20,0x02,0x00,0x00,0xc0,0x01,0xe0,0x03,0xb0,0x06,0x90,0x04,0xb0,0x0c,0xe0,0x0a,0xc0,0x02,0x00,0x00,0x40,0x04,0x42,0x04,0xfe,0x07,0xfe,0x07,0x20,0x04,0x20,0x04,0x00,0x00,0x00,0x00,0xf0,0x07,0xf0,0x07,0x20,0x00,0x14,0x00,0x33,0x00,0xe1,0x07,0xc0,0x07,0x00,0x00,0xc0,0x01,0xe0,0x03,0x30,0x06,0x14,0x04,0x33,0x06,0xe1,0x03,0xc0,0x01,0x00,0x00,0x60,0x02,0xf0,0x06,0x90,0x04,0x94,0x04,0x93,0x04,0xb1,0x07,0x20,0x03,0x00,0x00,0x10,0x06,0x10,0x07,0x96,0x05,0xd6,0x04,0x70,0x04,0x30,0x04,0x00,0x00,0x00,0x00,0x10,0x06,0x10,0x07,0x90,0x05,0xd4,0x04,0x73,0x04,0x31,0x04,0x00,0x00,0x00,0x00,0xf0,0x07,0xf8,0x07,0x8c,0x00,0x86,0x00,0x86,0x00,0x8c,0x00,0xf8,0x0f,0xf0,0x0b,0xf0,0x01,0xf8,0x03,0x0c,0x06,0x04,0x04,0x06,0x04,0x05,0x04,0x0c,0x06,0x18,0x03,0x00,0x00,0xfe,0x07,0xfe,0x07,0x22,0x04,0x22,0x04,0x22,0x04,0x22,0x0c,0x02,0x08,0x80,0x00,0xfe,0x07,0xfe,0x07,0x40,0x04,0x40,0x04,0x20,0x04,0x20,0x04,0x00,0x04,0xfc,0x07,0xfc,0x07,0x38,0x00,0x74,0x00,0xe3,0x00,0xc1,0x01,0xfc,0x07,0xfc,0x07,0xe0,0x01,0xf0,0x03,0x18,0x06,0x08,0x04,0x0c,0x04,0x1b,0x06,0xf1,0x03,0xe0,0x01,0x30,0x02,0x78,0x06,0x48,0x04,0x4c,0x04,0x4b,0x04,0x49,0x04,0xd8,0x07,0x90,0x03,0x00,0x00,0x08,0x06,0x08,0x07,0x8b,0x05,0xcb,0x04,0x68,0x04,0x38,0x04,0x18,0x04,0x00,0x00,0x08,0x06,0x08,0x07,0x88,0x05,0xcc,0x04,0x6b,0x04,0x39,0x04,0x18,0x04, diff --git a/radio/src/fonts/std_pw_fw/font_pl_08x10.png b/radio/src/fonts/std_pw_fw/font_pl_08x10.png deleted file mode 100644 index c7dfcc9c0503976c2f68edd779ffe21c9e35e7be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 266 zcmV+l0rmcgP)GyHE0wbL!eTS`1^!W6(Ze92p16` zetE-Q3Iw7tYRq%j2lnB;rzBw;2988b$P7PuU&2iMyv7x8N3{9Tq>sAs54g#UO2qn? Q&j0`b07*qoM6N<$f^G?M`v3p{ diff --git a/radio/src/fonts/std_pw_fw/font_pl_10x14.lbm b/radio/src/fonts/std_pw_fw/font_pl_10x14.lbm deleted file mode 100644 index b37adaa57..000000000 --- a/radio/src/fonts/std_pw_fw/font_pl_10x14.lbm +++ /dev/null @@ -1 +0,0 @@ -0x00,0x18,0x00,0x3c,0x60,0x7e,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0xe6,0xc0,0xbf,0x80,0xbf,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x68,0x60,0x6c,0x60,0x67,0x60,0x63,0x70,0x01,0x38,0x00,0x18,0x80,0x1f,0xc0,0x3f,0xe0,0x76,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0xe6,0xc0,0x87,0x80,0x87,0x00,0x00,0x00,0x00,0x06,0x61,0x06,0x61,0xfe,0x7f,0xfe,0x7f,0x80,0x60,0x80,0x60,0x00,0x00,0x00,0x00,0xe0,0x7f,0xe0,0x7f,0x80,0x01,0xc0,0x01,0xe8,0x00,0x6c,0x00,0x67,0x00,0xe3,0x00,0xc1,0x7f,0x80,0x7f,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x68,0x60,0x6c,0x60,0x67,0x60,0xe3,0x70,0xc1,0x3f,0x80,0x1f,0x80,0x61,0xc0,0x63,0xe0,0x67,0x60,0x66,0x68,0x66,0x6c,0x66,0x67,0x66,0x63,0x7e,0x01,0x3c,0x00,0x18,0x60,0x60,0x60,0x70,0x60,0x78,0x66,0x7c,0x66,0x6e,0x60,0x67,0xe0,0x63,0xe0,0x61,0xe0,0x60,0x60,0x60,0x60,0x60,0x60,0x70,0x60,0x78,0x60,0x7c,0x68,0x6e,0x6c,0x67,0xe7,0x63,0xe3,0x61,0xe1,0x60,0x60,0x60,0xe0,0x7f,0xf0,0x7f,0xb8,0x01,0x9c,0x01,0x8e,0x01,0x8e,0x01,0x9c,0x01,0xb8,0x61,0xf0,0xff,0xe0,0xbf,0xe0,0x1f,0xf0,0x3f,0x38,0x70,0x18,0x60,0x1c,0x60,0x1f,0x60,0x1b,0x60,0x39,0x70,0x70,0x38,0x60,0x18,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x06,0xa0,0x06,0x80,0x00,0x06,0xfe,0x7f,0xfe,0x7f,0x00,0x63,0x80,0x61,0x80,0x61,0xc0,0x60,0xc0,0x60,0x60,0x60,0x60,0x60,0xf8,0x7f,0xf8,0x7f,0xe0,0x00,0xc0,0x01,0x80,0x03,0x04,0x07,0x07,0x0e,0x03,0x1c,0xf9,0x7f,0xf8,0x7f,0xe0,0x1f,0xf0,0x3f,0x38,0x70,0x18,0x60,0x1c,0x60,0x1f,0x60,0x1b,0x60,0x39,0x70,0xf0,0x3f,0xe0,0x1f,0xe0,0x18,0xf0,0x39,0xb8,0x73,0x18,0x63,0x1c,0x63,0x1f,0x63,0x1b,0x63,0x39,0x77,0x70,0x3e,0x60,0x1c,0x18,0x70,0x18,0x78,0x18,0x7c,0x18,0x6e,0x1b,0x67,0x9b,0x63,0xd8,0x61,0xf8,0x60,0x78,0x60,0x38,0x60,0x18,0x70,0x18,0x78,0x18,0x7c,0x18,0x6e,0x18,0x67,0x9c,0x63,0xdf,0x61,0xfb,0x60,0x79,0x60,0x38,0x60, diff --git a/radio/src/fonts/std_pw_fw/font_pl_10x14.png b/radio/src/fonts/std_pw_fw/font_pl_10x14.png deleted file mode 100644 index 02352cdac743a5906940b992231a24fa425876c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 368 zcmV-$0gwKPP)Gu&zn&|4#YC=C7_0+wF_7&zuZ>~(W~l@U$fdxJpa^T><6!M>L8q5-m~nrtbMGVa9PPFtG`Um zt@z~A?U?s6XR{`4HmkY#e4o!M`gfN$MKSq5FLg!FKO_T(r+9kSL;e?0s?~Eu-Bu+4 O0000Z_d99WN{XF zL>4nJa0`PlBg3pY5H=O_PcD{oYKM)Ice5FA%0I6#}JO|$v^tJBr?vhGdwz! VF{3wVxg1c6!PC{xWt~$(698T_AX)$b diff --git a/radio/src/fonts/std_pw_fw/font_pt_05x07.lbm b/radio/src/fonts/std_pw_fw/font_pt_05x07.lbm deleted file mode 100644 index 8f2c832a2..000000000 --- a/radio/src/fonts/std_pw_fw/font_pt_05x07.lbm +++ /dev/null @@ -1 +0,0 @@ -0x78,0x14,0x16,0x15,0x78,0x20,0x54,0x56,0x55,0x78,0x78,0x16,0x15,0x16,0x78,0x20,0x56,0x55,0x56,0x78,0x7a,0x15,0x16,0x15,0x78,0x20,0x56,0x55,0x56,0x79,0x78,0x15,0x16,0x14,0x78,0x20,0x55,0x56,0x54,0x78,0x1e,0xa1,0x61,0x21,0x12,0x1c,0xa2,0x62,0x22,0x10,0x7c,0x54,0x56,0x55,0x44,0x38,0x54,0x56,0x55,0x18,0x7c,0x56,0x55,0x56,0x44,0x38,0x56,0x55,0x56,0x18,0x00,0x44,0x7e,0x45,0x00,0x00,0x4c,0x7a,0x40,0x00,0x3c,0x42,0x42,0x43,0x3c,0x38,0x44,0x46,0x45,0x38,0x3c,0x42,0x43,0x42,0x3c,0x38,0x44,0x46,0x44,0x38,0x3c,0x43,0x42,0x43,0x3c,0x38,0x46,0x44,0x46,0x38,0x3c,0x40,0x42,0x41,0x3c,0x38,0x40,0x44,0x22,0x78, diff --git a/radio/src/fonts/std_pw_fw/font_pt_05x07.png b/radio/src/fonts/std_pw_fw/font_pt_05x07.png deleted file mode 100644 index 768ff309f095d647b56e5ddaa89cc0c47c732e23..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 246 zcmeAS@N?(olHy`uVBq!ia0vp^6+q0v$P6MoRt5kmwg8_HS0MfW|No^o=iddg7?Zr+ zT^Kr8Wj%l#&H|6fVg?3oVGw3ym^DWND9B#o>FdgVmra;UPpfG2+ciL;GEW!B5RU7~ z74iFCU;X~?e);|P_3{5+|F3JSUhljiSs%>6MXL8$BcGf#*ypxW` z<{M8rUmI7s{@1G27(8A5T-G@yGywo`tY9Vp diff --git a/radio/src/fonts/std_pw_fw/font_pt_08x10.lbm b/radio/src/fonts/std_pw_fw/font_pt_08x10.lbm deleted file mode 100644 index ac3c9fafb..000000000 --- a/radio/src/fonts/std_pw_fw/font_pt_08x10.lbm +++ /dev/null @@ -1 +0,0 @@ -0xf0,0x07,0xf8,0x07,0x88,0x00,0x8c,0x00,0x8b,0x00,0x89,0x00,0xf8,0x07,0xf0,0x07,0x00,0x03,0xa0,0x07,0xb0,0x04,0x90,0x04,0x98,0x02,0xf6,0x07,0xe2,0x07,0x00,0x00,0xf0,0x07,0xfa,0x07,0x8b,0x00,0x89,0x00,0x89,0x00,0x8b,0x00,0xfa,0x07,0xf0,0x07,0x00,0x03,0xa4,0x07,0xb6,0x04,0x93,0x04,0x96,0x02,0xf4,0x07,0xe0,0x07,0x00,0x00,0xf0,0x07,0xfa,0x07,0x89,0x00,0x89,0x00,0x8b,0x00,0x8a,0x00,0xfa,0x07,0xf1,0x07,0x00,0x03,0xa0,0x07,0xb4,0x04,0x92,0x04,0x96,0x02,0xf4,0x07,0xe2,0x07,0x00,0x00,0xf0,0x07,0xf8,0x07,0x89,0x00,0x8b,0x00,0x8c,0x00,0x88,0x00,0xf8,0x07,0xf0,0x07,0x00,0x03,0xa0,0x07,0xb2,0x04,0x96,0x04,0x98,0x02,0xf0,0x07,0xe0,0x07,0x00,0x00,0xf8,0x00,0xfc,0x01,0x8e,0x0b,0x06,0x0f,0x02,0x06,0x02,0x02,0x06,0x03,0x04,0x01,0xe0,0x00,0xf0,0x01,0x18,0x0b,0x08,0x0e,0x08,0x06,0x18,0x03,0x10,0x01,0x00,0x00,0xf8,0x07,0xf8,0x07,0x48,0x04,0x4c,0x04,0x4b,0x04,0x49,0x04,0x08,0x04,0x00,0x00,0xc0,0x01,0xe0,0x03,0xb0,0x06,0x9c,0x04,0xb6,0x04,0xe2,0x06,0xc0,0x02,0x00,0x00,0xf8,0x07,0xfa,0x07,0x4b,0x04,0x49,0x04,0x49,0x04,0x4b,0x04,0x0a,0x04,0x00,0x00,0xc0,0x01,0xe4,0x03,0xb6,0x06,0x93,0x04,0xb6,0x04,0xe4,0x06,0xc0,0x02,0x00,0x00,0x00,0x00,0x08,0x04,0x08,0x04,0xfc,0x07,0xfb,0x07,0x09,0x04,0x08,0x04,0x00,0x00,0x00,0x00,0x00,0x04,0x10,0x04,0xf4,0x07,0xf3,0x07,0x01,0x04,0x00,0x04,0x00,0x00,0xe0,0x01,0xf0,0x03,0x18,0x06,0x08,0x04,0x0c,0x04,0x1b,0x06,0xf1,0x03,0xe0,0x01,0xc0,0x01,0xe0,0x03,0x30,0x06,0x18,0x04,0x36,0x06,0xe2,0x03,0xc0,0x01,0x00,0x00,0xe0,0x01,0xf2,0x03,0x1b,0x06,0x09,0x04,0x09,0x04,0x1b,0x06,0xf2,0x03,0xe0,0x01,0xc0,0x01,0xe4,0x03,0x36,0x06,0x13,0x04,0x36,0x06,0xe4,0x03,0xc0,0x01,0x00,0x00,0xe2,0x01,0xf1,0x03,0x19,0x06,0x0b,0x04,0x0a,0x04,0x1a,0x06,0xf1,0x03,0xe0,0x01,0xc0,0x01,0xe4,0x03,0x32,0x06,0x16,0x04,0x34,0x06,0xe2,0x03,0xc0,0x01,0x00,0x00,0xfc,0x01,0xfc,0x03,0x00,0x06,0x04,0x04,0x03,0x04,0x01,0x06,0xfc,0x03,0xfc,0x01,0xf0,0x01,0xf0,0x03,0x00,0x06,0x04,0x04,0x03,0x02,0xf1,0x07,0xf0,0x07,0x00,0x00, diff --git a/radio/src/fonts/std_pw_fw/font_pt_08x10.png b/radio/src/fonts/std_pw_fw/font_pt_08x10.png deleted file mode 100644 index fe2f3adda2c516a298f37ba3fdb90a2ee9103833..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 315 zcmeAS@N?(olHy`uVBq!ia0vp^2Y{G|kr_zxStxV^DYgKg5LY1m|NsA`H|O64vKW)R z-CYM z^VkoI%bSEK{%YntFe_{B?SD>dQ;JVrkDr^jVb-Rbm%e>WblauyD6^_f%q4X5w|zAl ztlSwn0?XH_1~wjO-cvHiqFB!|_m78N=@}WzX^$Q+6D>YoBf+1neXLKTgn4uFcI|(M zEC2RvVtK&f@@jgTd3)&t;uc GLK6TQj%4Sl*2C8^N7 zD_AS{`?-3%q8eVfiP?jp5e#T0mxYH&gEE;E9@NAF(oD)Iy$D5=j*Nx*cvuAnQVq{gW|Vo2f^ck!93;l+95lOSZtuF7 knvC#c5kI5q1OL0e0pb}9gN6n&4*&oF07*qoM6N<$f><7}!vFvP diff --git a/radio/src/fonts/std_pw_fw/font_se_04x06.lbm b/radio/src/fonts/std_pw_fw/font_se_04x06.lbm deleted file mode 100644 index 8888b2f6b..000000000 --- a/radio/src/fonts/std_pw_fw/font_se_04x06.lbm +++ /dev/null @@ -1 +0,0 @@ -0x18,0x25,0x15,0x3c,0x00,0x18,0x25,0x14,0x3d,0x00,0x18,0x25,0x24,0x19,0x00,0x3c,0x0b,0x0b,0x3c,0x00,0x3d,0x0a,0x0a,0x3d,0x00,0x1d,0x22,0x22,0x1d,0x00, diff --git a/radio/src/fonts/std_pw_fw/font_se_04x06.png b/radio/src/fonts/std_pw_fw/font_se_04x06.png deleted file mode 100644 index aeba5adedcf32b29a878e4126285eea96af1cde9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 157 zcmeAS@N?(olHy`uVBq!ia0vp^azM<^$P6S^)$=z2DYgKg5LY1m|NsA`H|O64vN#Jo zB8wRqxP?KOkzv*x37{Z*iKnkC`&~9}P6?xW4b^2pAuUfA#}JO|$unl>Zfkw`zy7o_ yk8S4lZ3ZdsoH>afx|lXyTNZ20JmtrKb_Q7u!Rx1j#o~dw7(8A5T-G@yGyworQ7jAq diff --git a/radio/src/fonts/std_pw_fw/font_se_05x07.lbm b/radio/src/fonts/std_pw_fw/font_se_05x07.lbm deleted file mode 100644 index 8d767a82b..000000000 --- a/radio/src/fonts/std_pw_fw/font_se_05x07.lbm +++ /dev/null @@ -1 +0,0 @@ -0x20,0x54,0x56,0x54,0x78,0x20,0x56,0x54,0x56,0x78,0x38,0x46,0x44,0x46,0x38,0x7c,0x13,0x13,0x12,0x7c,0x7c,0x13,0x12,0x13,0x7c,0x3c,0x43,0x42,0x43,0x3c, diff --git a/radio/src/fonts/std_pw_fw/font_se_05x07.png b/radio/src/fonts/std_pw_fw/font_se_05x07.png deleted file mode 100644 index 8456af741ead3dd0e2818946a3e12626de36d80d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 160 zcmeAS@N?(olHy`uVBq!ia0vp^azM<%$P6T}6y8k-QfvV}A+A9B|Ns9>Z_d99WN{XF zL>4nJa0`PlBg3pY5H=O_PcD{oD#ez{WxX=g>*e#978y+C;#|={}tEayE&c8 zJhqS&K+sj18QXOboFyt=akR{0D|u? Ai~s-t diff --git a/radio/src/fonts/std_pw_fw/font_se_08x10.lbm b/radio/src/fonts/std_pw_fw/font_se_08x10.lbm deleted file mode 100644 index f31490f1a..000000000 --- a/radio/src/fonts/std_pw_fw/font_se_08x10.lbm +++ /dev/null @@ -1 +0,0 @@ -0x00,0x03,0xa0,0x07,0xb4,0x04,0x9a,0x04,0x9a,0x02,0xf4,0x07,0xe0,0x07,0x00,0x00,0x00,0x03,0xa0,0x07,0xb6,0x04,0x96,0x04,0x90,0x02,0xf6,0x07,0xe6,0x07,0x00,0x00,0xc0,0x01,0xe6,0x03,0x36,0x06,0x10,0x04,0x36,0x06,0xe6,0x03,0xc0,0x01,0x00,0x00,0xe0,0x07,0xf0,0x07,0x9c,0x00,0x9a,0x00,0x9a,0x00,0x9c,0x00,0xf0,0x07,0xe0,0x07,0xe0,0x07,0xf6,0x07,0x96,0x00,0x88,0x00,0x88,0x00,0x96,0x00,0xf6,0x07,0xe0,0x07,0xe0,0x01,0xf6,0x03,0x16,0x06,0x08,0x04,0x08,0x04,0x16,0x06,0xf6,0x03,0xe0,0x01, diff --git a/radio/src/fonts/std_pw_fw/font_se_08x10.png b/radio/src/fonts/std_pw_fw/font_se_08x10.png deleted file mode 100644 index 330fa77a20acfa55dd765254a8f24989ef826be3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 190 zcmeAS@N?(olHy`uVBq!ia0vp^20+Zi$P6UqO4bMgDYgKg5LY1m|NsA`H|O64vN#Jo zB8wRqxP?KOkzv*x37{Z*iKnkC`&~9}PI2>&TW6mEg}gmo978y+tM+WL%#u<%_M$Dp5D$SQ)_B>YU?B`v+CUfQq)KJnEKW>oNQ0UFET>FVdQ&MBb@0KqUgS^xk5 diff --git a/radio/src/fonts/std_pw_fw/font_se_10x14.lbm b/radio/src/fonts/std_pw_fw/font_se_10x14.lbm deleted file mode 100644 index 20ce6d8df..000000000 --- a/radio/src/fonts/std_pw_fw/font_se_10x14.lbm +++ /dev/null @@ -1 +0,0 @@ -0x00,0x18,0x00,0x3c,0x60,0x7e,0x60,0x66,0x6e,0x66,0x6a,0x66,0x6e,0x66,0xe0,0x66,0xc0,0x7f,0x80,0x7f,0x00,0x18,0x00,0x3c,0x6c,0x7e,0x6c,0x66,0x60,0x66,0x60,0x66,0x6c,0x66,0xec,0x66,0xc0,0x7f,0x80,0x7f,0x80,0x1f,0xc0,0x3f,0xec,0x70,0x6c,0x60,0x60,0x60,0x60,0x60,0x6c,0x60,0xec,0x70,0xc0,0x3f,0x80,0x1f,0xe0,0x7f,0xf0,0x7f,0xb8,0x01,0x9e,0x01,0x9a,0x01,0x9a,0x01,0x9e,0x01,0xb8,0x01,0xf0,0x7f,0xe0,0x7f,0xe0,0x7f,0xf6,0x7f,0xba,0x01,0x9c,0x01,0x8e,0x01,0x8e,0x01,0x9c,0x01,0xba,0x01,0xf6,0x7f,0xe0,0x7f,0xe0,0x1f,0xf6,0x3f,0x36,0x70,0x18,0x60,0x18,0x60,0x18,0x60,0x18,0x60,0x36,0x70,0xf6,0x3f,0xe0,0x1f, diff --git a/radio/src/fonts/std_pw_fw/font_se_10x14.png b/radio/src/fonts/std_pw_fw/font_se_10x14.png deleted file mode 100644 index 4ac08c4d598a870e9402a1c48d56a3da24e19360..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 233 zcmeAS@N?(olHy`uVBq!ia0vp^Hb5-E$P6S4V)|-;6kC8#h%1o(|NsBeoAd7iS)2tP zk;M!Q+`=Ht$S`Y;1W=H@#M9T6{Vp3fr#Oo_*P0JNp)yYw#}JO|$v^lROfEFEKkwh$$jE#~ al3`MvTQ2v?z*?XS7(8A5T-G@yGywpk=1&9w From b802bc5db2e42174de61a9023a456a92375a6006 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Thu, 19 Dec 2013 19:19:44 +0100 Subject: [PATCH 016/308] ModelEdit window splitted (one file per tab). Templates/Wizard still have to be re-introduced, but in a menu instead of a Model tab --- companion/src/CMakeLists.txt | 17 +- companion/src/comparedialog.cpp | 6 +- companion/src/eeprominterface.cpp | 18 +- companion/src/eeprominterface.h | 32 +- .../src/firmwares/er9x/er9xinterface.cpp | 4 +- .../firmwares/ersky9x/ersky9xinterface.cpp | 3 +- .../src/firmwares/opentx/open9xinterface.cpp | 11 +- companion/src/helpers.cpp | 11 +- companion/src/helpers.h | 6 +- companion/src/mdichild.cpp | 6 +- companion/src/modelconfigdialog.cpp | 4 +- companion/src/modelconfigdialog.h | 2 +- companion/src/modeledit.cpp | 7433 ----- companion/src/modeledit.h | 393 - companion/src/modeledit.ui | 24504 ---------------- companion/src/modeledit/CMakeLists.txt | 54 + companion/src/modeledit/channels.cpp | 179 + companion/src/modeledit/channels.h | 25 + companion/src/modeledit/curvedialog.ui | 217 + companion/src/modeledit/curves.cpp | 722 + companion/src/modeledit/curves.h | 47 + companion/src/modeledit/curves.ui | 167 + companion/src/modeledit/customfunctions.cpp | 473 + companion/src/modeledit/customfunctions.h | 61 + companion/src/modeledit/customswitches.cpp | 399 + companion/src/modeledit/customswitches.h | 42 + companion/src/{ => modeledit}/edge.cpp | 0 companion/src/{ => modeledit}/edge.h | 0 companion/src/{ => modeledit}/expodialog.cpp | 0 companion/src/{ => modeledit}/expodialog.h | 0 companion/src/{ => modeledit}/expodialog.ui | 0 companion/src/modeledit/flightmode.ui | 449 + companion/src/modeledit/flightmodes.cpp | 484 + companion/src/modeledit/flightmodes.h | 86 + companion/src/modeledit/heli.cpp | 49 + companion/src/modeledit/heli.h | 26 + companion/src/modeledit/heli.ui | 141 + companion/src/modeledit/inputs.cpp | 486 + companion/src/modeledit/inputs.h | 50 + companion/src/{ => modeledit}/mixerdialog.cpp | 0 companion/src/{ => modeledit}/mixerdialog.h | 0 companion/src/{ => modeledit}/mixerdialog.ui | 0 companion/src/{ => modeledit}/mixerslist.cpp | 0 companion/src/{ => modeledit}/mixerslist.h | 0 companion/src/modeledit/mixes.cpp | 548 + companion/src/modeledit/mixes.h | 56 + companion/src/modeledit/modeledit.cpp | 130 + companion/src/modeledit/modeledit.h | 39 + companion/src/modeledit/modeledit.ui | 67 + companion/src/modeledit/modelpanel.cpp | 30 + companion/src/modeledit/modelpanel.h | 29 + companion/src/{ => modeledit}/node.cpp | 81 +- companion/src/{ => modeledit}/node.h | 22 +- companion/src/modeledit/setup.cpp | 1492 + companion/src/modeledit/setup.h | 96 + companion/src/modeledit/setup.ui | 3759 +++ companion/src/modeledit/telemetry.cpp | 939 + companion/src/modeledit/telemetry.h | 98 + companion/src/modeledit/telemetry.ui | 2013 ++ companion/src/modeledit/telemetry_analog.ui | 324 + companion/src/modeledit/templates.cpp | 852 + companion/src/modeledit/templates.h | 23 + companion/src/modelslist.cpp | 2 +- companion/src/modelslist.h | 2 +- companion/src/printdialog.cpp | 4 +- companion/src/simulatordialog.h | 2 +- companion/src/xmlinterface.cpp | 2 +- companion/src/xsimulatordialog.h | 2 +- 68 files changed, 14773 insertions(+), 32446 deletions(-) delete mode 100644 companion/src/modeledit.cpp delete mode 100644 companion/src/modeledit.h delete mode 100644 companion/src/modeledit.ui create mode 100644 companion/src/modeledit/CMakeLists.txt create mode 100644 companion/src/modeledit/channels.cpp create mode 100644 companion/src/modeledit/channels.h create mode 100644 companion/src/modeledit/curvedialog.ui create mode 100644 companion/src/modeledit/curves.cpp create mode 100644 companion/src/modeledit/curves.h create mode 100644 companion/src/modeledit/curves.ui create mode 100644 companion/src/modeledit/customfunctions.cpp create mode 100644 companion/src/modeledit/customfunctions.h create mode 100644 companion/src/modeledit/customswitches.cpp create mode 100644 companion/src/modeledit/customswitches.h rename companion/src/{ => modeledit}/edge.cpp (100%) rename companion/src/{ => modeledit}/edge.h (100%) rename companion/src/{ => modeledit}/expodialog.cpp (100%) rename companion/src/{ => modeledit}/expodialog.h (100%) rename companion/src/{ => modeledit}/expodialog.ui (100%) create mode 100644 companion/src/modeledit/flightmode.ui create mode 100644 companion/src/modeledit/flightmodes.cpp create mode 100644 companion/src/modeledit/flightmodes.h create mode 100644 companion/src/modeledit/heli.cpp create mode 100644 companion/src/modeledit/heli.h create mode 100644 companion/src/modeledit/heli.ui create mode 100644 companion/src/modeledit/inputs.cpp create mode 100644 companion/src/modeledit/inputs.h rename companion/src/{ => modeledit}/mixerdialog.cpp (100%) rename companion/src/{ => modeledit}/mixerdialog.h (100%) rename companion/src/{ => modeledit}/mixerdialog.ui (100%) rename companion/src/{ => modeledit}/mixerslist.cpp (100%) rename companion/src/{ => modeledit}/mixerslist.h (100%) create mode 100644 companion/src/modeledit/mixes.cpp create mode 100644 companion/src/modeledit/mixes.h create mode 100644 companion/src/modeledit/modeledit.cpp create mode 100644 companion/src/modeledit/modeledit.h create mode 100644 companion/src/modeledit/modeledit.ui create mode 100644 companion/src/modeledit/modelpanel.cpp create mode 100644 companion/src/modeledit/modelpanel.h rename companion/src/{ => modeledit}/node.cpp (74%) rename companion/src/{ => modeledit}/node.h (91%) create mode 100644 companion/src/modeledit/setup.cpp create mode 100644 companion/src/modeledit/setup.h create mode 100644 companion/src/modeledit/setup.ui create mode 100644 companion/src/modeledit/telemetry.cpp create mode 100644 companion/src/modeledit/telemetry.h create mode 100644 companion/src/modeledit/telemetry.ui create mode 100644 companion/src/modeledit/telemetry_analog.ui create mode 100644 companion/src/modeledit/templates.cpp create mode 100644 companion/src/modeledit/templates.h diff --git a/companion/src/CMakeLists.txt b/companion/src/CMakeLists.txt index 318a65524..375b4e7ff 100644 --- a/companion/src/CMakeLists.txt +++ b/companion/src/CMakeLists.txt @@ -109,6 +109,8 @@ add_custom_command( DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/firmwares/ersky9x/ersky9xsimulator.cpp ) +add_subdirectory(modeledit) + SET( companion9x_SRCS eeprominterface.cpp hexinterface.cpp @@ -137,15 +139,11 @@ SET( companion9x_SRCS firmwares/ersky9x/ersky9xeeprom.cpp firmwares/ersky9x/ersky9xinterface.cpp ${ERSKY9X_CHECKOUT_DIRECTORY}/ersky9xsimulator.cpp - node.cpp - edge.cpp helpers.cpp mdichild.cpp generaledit.cpp - modeledit.cpp modelslist.cpp mountlist.cpp - mixerslist.cpp avroutputdialog.cpp preferencesdialog.cpp burnconfigdialog.cpp @@ -155,8 +153,6 @@ SET( companion9x_SRCS burndialog.cpp printdialog.cpp fusesdialog.cpp - expodialog.cpp - mixerdialog.cpp logsdialog.cpp downloaddialog.cpp simulatordialog.cpp @@ -175,9 +171,7 @@ SET( companion9x_MOC_HDRS comparedialog.h printdialog.h fusesdialog.h - mixerdialog.h logsdialog.h - expodialog.h contributorsdialog.h customizesplashdialog.h splashlibrary.h @@ -191,9 +185,7 @@ SET( companion9x_MOC_HDRS xmenuwidget.h xsimulatordialog.h generaledit.h - modeledit.h modelslist.h - mixerslist.h mdichild.h mainwindow.h myslider.h @@ -206,16 +198,13 @@ SET( companion9x_UIS avroutputdialog.ui comparedialog.ui fusesdialog.ui - expodialog.ui logsdialog.ui - mixerdialog.ui preferencesdialog.ui simulatordialog.ui xsimulatordialog.ui burnconfigdialog.ui downloaddialog.ui generaledit.ui - modeledit.ui printdialog.ui contributorsdialog.ui customizesplashdialog.ui @@ -314,7 +303,7 @@ ELSE( ) ADD_EXECUTABLE( ${PROJECT_NAME} WIN32 ${companion9x_SRCS} ${companion9x_QM} ) ENDIF( ) -TARGET_LINK_LIBRARIES( ${PROJECT_NAME} ${QT_LIBRARIES} ${QT_QTMAIN_LIBRARY} ${XERCESC_LIBRARY} ${PTHREAD_LIBRARY} ${SDL_LIBRARY} ${PHONON_LIBS} ) +TARGET_LINK_LIBRARIES( ${PROJECT_NAME} modeledit ${QT_LIBRARIES} ${QT_QTMAIN_LIBRARY} ${XERCESC_LIBRARY} ${PTHREAD_LIBRARY} ${SDL_LIBRARY} ${PHONON_LIBS} ) IF(${CMAKE_SYSTEM_NAME} MATCHES "Linux") INSTALL( TARGETS ${PROJECT_NAME} DESTINATION ${CMAKE_INSTALL_PREFIX}/bin ) diff --git a/companion/src/comparedialog.cpp b/companion/src/comparedialog.cpp index ded52c41c..f5dd1216a 100644 --- a/companion/src/comparedialog.cpp +++ b/companion/src/comparedialog.cpp @@ -21,7 +21,7 @@ public: } bool general_settings; uint8_t models_count; - uint8_t models[C9XMAX_MODELS]; + uint8_t models[C9X_MAX_MODELS]; }; compareDialog::compareDialog(QWidget *parent, GeneralSettings *gg) : @@ -342,7 +342,7 @@ void compareDialog::printPhases() gvars=1; } if (gvars==1) { - gvarnum=GetEepromInterface()->getCapability(GvarsNum); + gvarnum=GetEepromInterface()->getCapability(Gvars); } if ((gvars==1 && GetEepromInterface()->getCapability(GvarsFlightPhases)) || GetEepromInterface()->getCapability(RotaryEncoders)) { str.append("
"); @@ -564,7 +564,7 @@ void compareDialog::printGvars() int gvarnum=0; if ((GetCurrentFirmwareVariant() & GVARS_VARIANT ) || (!GetEepromInterface()->getCapability(HasVariants) && GetEepromInterface()->getCapability(Gvars))) { gvars=1; - gvarnum=GetEepromInterface()->getCapability(GvarsNum); + gvarnum=GetEepromInterface()->getCapability(Gvars); } if (!GetEepromInterface()->getCapability(GvarsFlightPhases) && (gvars==1 && GetEepromInterface()->getCapability(Gvars))) { diff --git a/companion/src/eeprominterface.cpp b/companion/src/eeprominterface.cpp index 497149ca2..909a0e5e5 100644 --- a/companion/src/eeprominterface.cpp +++ b/companion/src/eeprominterface.cpp @@ -534,6 +534,18 @@ ModelData::ModelData() clear(); } +void ModelData::clearInputs() +{ + for (int i=0; i template setup, Second 3,1,2,4 , 3,1,4,2 , 3,2,1,4 , 3,2,4,1 , 3,4,1,2 , 3,4,2,1, 4,1,2,3 , 4,1,3,2 , 4,2,1,3 , 4,2,3,1 , 4,3,1,2 , 4,3,2,1 }; // TODO delete it? +// Beep center bits +#define BC_BIT_RUD (0x01) +#define BC_BIT_ELE (0x02) +#define BC_BIT_THR (0x04) +#define BC_BIT_AIL (0x08) +#define BC_BIT_P1 (0x10) +#define BC_BIT_P2 (0x20) +#define BC_BIT_P3 (0x40) +#define BC_BIT_P4 (0x80) +#define BC_BIT_REA (0x80) +#define BC_BIT_REB (0x100) + // TODO remove this enum! enum EnumKeys { KEY_MENU, @@ -477,7 +490,7 @@ class CurveData { CurveData() { clear(5); } bool custom; // 0=end, 1=pos, 2=neg, 3=both uint8_t count; - CurvePoint points[MAX_POINTS]; + CurvePoint points[C9X_MAX_POINTS]; char name[6+1]; void clear(int count) { memset(this, 0, sizeof(CurveData)); this->count = count; } }; @@ -828,6 +841,9 @@ class ModelData { ModelData removeGlobalVars(); + void clearMixes(); + void clearInputs(); + protected: void removeGlobalVar(int & var); }; @@ -835,13 +851,14 @@ class ModelData { class RadioData { public: GeneralSettings generalSettings; - ModelData models[C9XMAX_MODELS]; + ModelData models[C9X_MAX_MODELS]; }; +// TODO rename FlightPhase to FlightMode enum Capability { OwnerName, FlightPhases, - FlightPhasesAreNamed, + FlightModesName, FlightPhasesHaveFades, SimulatorType, Mixes, @@ -867,6 +884,7 @@ enum Capability { CustomSwitchesExt, RotaryEncoders, Outputs, + ChannelsName, ExtraChannels, ExtraInputs, ExtraTrims, @@ -931,7 +949,7 @@ enum Capability { GvarsHaveSources, GvarsAsSources, GvarsAsWeight, - GvarsNum, + GvarsName, GvarsOfsNum, NoTelemetryProtocol, TelemetryCSFields, diff --git a/companion/src/firmwares/er9x/er9xinterface.cpp b/companion/src/firmwares/er9x/er9xinterface.cpp index 4895e31e6..f7e6762a8 100644 --- a/companion/src/firmwares/er9x/er9xinterface.cpp +++ b/companion/src/firmwares/er9x/er9xinterface.cpp @@ -286,8 +286,6 @@ int Er9xInterface::getCapability(const Capability capability) return 12; case CustomAndSwitches: return 5; - case GvarsNum: - return 7; case GvarsOfsNum: return 5; case CSFunc: @@ -332,7 +330,9 @@ int Er9xInterface::getCapability(const Capability capability) case DiffMixers: case HasNegCurves: case HasFixOffset: + return 1; case Gvars: + return 7; case GvarsHaveSources: case GvarsAsSources: case GvarsAsWeight: diff --git a/companion/src/firmwares/ersky9x/ersky9xinterface.cpp b/companion/src/firmwares/ersky9x/ersky9xinterface.cpp index 412d13520..5190ce0e8 100644 --- a/companion/src/firmwares/ersky9x/ersky9xinterface.cpp +++ b/companion/src/firmwares/ersky9x/ersky9xinterface.cpp @@ -306,7 +306,7 @@ int Ersky9xInterface::getCapability(const Capability capability) return 2; case Pots: return 3; - case GvarsNum: + case Gvars: return 7; case GvarsOfsNum: return 5; @@ -350,7 +350,6 @@ int Ersky9xInterface::getCapability(const Capability capability) return 125; case MaxVolume: return 23; - case Gvars: case GvarsHaveSources: case GvarsAsSources: case GvarsAsWeight: diff --git a/companion/src/firmwares/opentx/open9xinterface.cpp b/companion/src/firmwares/opentx/open9xinterface.cpp index f5e9ce787..0ffe6b85e 100644 --- a/companion/src/firmwares/opentx/open9xinterface.cpp +++ b/companion/src/firmwares/opentx/open9xinterface.cpp @@ -562,9 +562,13 @@ int Open9xInterface::getCapability(const Capability capability) return 6; else return 5; - case FlightPhasesAreNamed: case FlightPhasesHaveFades: + return 1; case Gvars: + return 5; + case FlightModesName: + case GvarsName: + return (IS_TARANIS(board) ? 10 : 6); case GvarsInCS: case GvarsAsWeight: case ExpoIsCurve: @@ -692,8 +696,8 @@ int Open9xInterface::getCapability(const Capability capability) return (IS_ARM(board) ? (IS_TARANIS(board) ? 8 : 6) : false); case HasExpoNames: return (IS_ARM(board) ? (IS_TARANIS(board) ? 8 : 6) : false); - case HasChNames: - return (IS_TARANIS(board) ? 1 : 0); + case ChannelsName: + return (IS_TARANIS(board) ? 6 : 0); case HasCvNames: return (IS_TARANIS(board) ? 1 : 0); case NoTimerDirs: @@ -777,7 +781,6 @@ int Open9xInterface::getCapability(const Capability capability) return (IS_ARM(board) ? 250 : 15); case CSFunc: return 18; - case GvarsNum: case GvarsOfsNum: return 5; case HasSDLogs: diff --git a/companion/src/helpers.cpp b/companion/src/helpers.cpp index 30f2a9c6f..fc4346a23 100644 --- a/companion/src/helpers.cpp +++ b/companion/src/helpers.cpp @@ -560,12 +560,9 @@ void populateTrimUseCB(QComboBox *b, unsigned int phase) void populateGvarUseCB(QComboBox *b, unsigned int phase) { b->addItem(QObject::tr("Own value")); - unsigned int num_phases = GetEepromInterface()->getCapability(FlightPhases); - if (num_phases>0) { - for (unsigned int i = 0; i < num_phases; i++) { - if (i != phase) { - b->addItem(QObject::tr("Flight mode %1 value").arg(i)); - } + for (int i=0; igetCapability(FlightPhases); i++) { + if (i != (int)phase) { + b->addItem(QObject::tr("Flight mode %1 value").arg(i)); } } } @@ -983,7 +980,7 @@ void populateSourceCB(QComboBox *b, const RawSource &source, unsigned int flags) } if (flags & POPULATE_GVARS) { - for (int i=0; igetCapability(GvarsNum); i++) { + for (int i=0; igetCapability(Gvars); i++) { item = RawSource(SOURCE_TYPE_GVAR, i); b->addItem(item.toString(), item.toValue()); if (item == source) b->setCurrentIndex(b->count()-1); diff --git a/companion/src/helpers.h b/companion/src/helpers.h index d37b8f8bd..0cd545016 100644 --- a/companion/src/helpers.h +++ b/companion/src/helpers.h @@ -6,10 +6,10 @@ #define TMR_NUM_OPTION (TMR_VAROFS+2*9+2*GetEepromInterface()->getCapability(CustomSwitches)-1) -//convert from mode 1 to mode g_eeGeneral.stickMode +//convert from mode 1 to mode generalSettings.stickMode //NOTICE! => 1..4 -> 1..4 -#define CONVERT_MODE(x) (((x)<=4) ? modn12x3[g_eeGeneral.stickMode][((x)-1)] : (x)) -#define CHANNEL_ORDER(x) (chout_ar[g_eeGeneral.templateSetup*4 + (x)-1]) +#define CONVERT_MODE(x) (((x)<=4) ? modn12x3[generalSettings.stickMode][((x)-1)] : (x)) +#define CHANNEL_ORDER(x) (chout_ar[generalSettings.templateSetup*4 + (x)-1]) #define CURVE_BASE 7 #define CH(x) (SRC_CH1+(x)-1-(SRC_SWC-SRC_3POS)) diff --git a/companion/src/mdichild.cpp b/companion/src/mdichild.cpp index 6fbd16afa..f1654a530 100644 --- a/companion/src/mdichild.cpp +++ b/companion/src/mdichild.cpp @@ -44,7 +44,7 @@ #include "xmlinterface.h" #include "hexinterface.h" #include "mainwindow.h" -#include "modeledit.h" +#include "modeledit/modeledit.h" #include "generaledit.h" #include "avroutputdialog.h" #include "burnconfigdialog.h" @@ -192,9 +192,9 @@ void MdiChild::OpenEditWindow(bool wizard=false) } } ModelEdit *t = new ModelEdit(radioData, (row - 1), wizard, this); - if (isNew && !wizard) t->applyBaseTemplate(); + // TODO if (isNew && !wizard) t->applyBaseTemplate(); t->setWindowTitle(tr("Editing model %1: ").arg(row) + model.name); - connect(t, SIGNAL(modelValuesChanged()), this, SLOT(setModified())); + connect(t, SIGNAL(modified()), this, SLOT(setModified())); //t->exec(); t->show(); } diff --git a/companion/src/modelconfigdialog.cpp b/companion/src/modelconfigdialog.cpp index d9e245107..49c4a8df0 100644 --- a/companion/src/modelconfigdialog.cpp +++ b/companion/src/modelconfigdialog.cpp @@ -9,7 +9,7 @@ modelConfigDialog::modelConfigDialog(RadioData &radioData, uint64_t * result, QW ui(new Ui::modelConfigDialog), radioData(radioData), result(result), - g_eeGeneral(radioData.generalSettings) + generalSettings(radioData.generalSettings) { ui->setupUi(this); rxLock=false; @@ -930,4 +930,4 @@ void modelConfigDialog::asUpdate() ui->asspo2_CB->hide(); } rxLock=false; -} \ No newline at end of file +} diff --git a/companion/src/modelconfigdialog.h b/companion/src/modelconfigdialog.h index e5418a8a5..f8f508c71 100644 --- a/companion/src/modelconfigdialog.h +++ b/companion/src/modelconfigdialog.h @@ -23,7 +23,7 @@ private: int ModelType; RadioData &radioData; uint64_t * result; - GeneralSettings g_eeGeneral; + GeneralSettings generalSettings; QStringList ruddercolor; QStringList aileroncolor; QStringList elevatorcolor; diff --git a/companion/src/modeledit.cpp b/companion/src/modeledit.cpp deleted file mode 100644 index b6b5aade1..000000000 --- a/companion/src/modeledit.cpp +++ /dev/null @@ -1,7433 +0,0 @@ -#include "modeledit.h" -#include "ui_modeledit.h" -#include "helpers.h" -#include "edge.h" -#include "node.h" -#include "expodialog.h" -#include "mixerdialog.h" -#include "simulatordialog.h" -#include "xsimulatordialog.h" -#include "modelconfigdialog.h" -#include -#include -#include - -#define BC_BIT_RUD (0x01) -#define BC_BIT_ELE (0x02) -#define BC_BIT_THR (0x04) -#define BC_BIT_AIL (0x08) -#define BC_BIT_P1 (0x10) -#define BC_BIT_P2 (0x20) -#define BC_BIT_P3 (0x40) -#define BC_BIT_P4 (0x80) -#define BC_BIT_REA (0x80) -#define BC_BIT_REB (0x100) - -#define RUD (1) -#define ELE (2) -#define THR (3) -#define AIL (4) - -#define GFX_MARGIN 16 - -ModelEdit::ModelEdit(RadioData &radioData, uint8_t id, bool openWizard, bool isNew, QWidget *parent) : - QDialog(parent), - redrawCurve(true), - openWizard(openWizard), - isNew(isNew), - ui(new Ui::ModelEdit), - radioData(radioData), - id_model(id), - g_model(radioData.models[id]), - g_eeGeneral(radioData.generalSettings) -{ - ui->setupUi(this); - - setupMixerListWidget(); - setupExposListWidget(); - - QSettings settings("companion9x", "companion9x"); - ui->tabWidget->setCurrentIndex(settings.value("modelEditTab", 0).toInt()); - - QRegExp rx(CHAR_FOR_NAMES_REGEX); - ui->modelNameLE->setValidator(new QRegExpValidator(rx, this)); - ui->phase0Name->setValidator(new QRegExpValidator(rx, this)); - ui->phase1Name->setValidator(new QRegExpValidator(rx, this)); - ui->phase2Name->setValidator(new QRegExpValidator(rx, this)); - ui->phase3Name->setValidator(new QRegExpValidator(rx, this)); - ui->phase4Name->setValidator(new QRegExpValidator(rx, this)); - ui->phase5Name->setValidator(new QRegExpValidator(rx, this)); - ui->phase6Name->setValidator(new QRegExpValidator(rx, this)); - ui->phase7Name->setValidator(new QRegExpValidator(rx, this)); - ui->phase8Name->setValidator(new QRegExpValidator(rx, this)); - ui->cname_LE->setValidator(new QRegExpValidator(rx, this)); - #ifdef PHONON - phononLock=false; - clickObject = new Phonon::MediaObject(this); - clickOutput = new Phonon::AudioOutput(Phonon::NoCategory, this); - Phonon::createPath(clickObject, clickOutput); - connect(clickObject, SIGNAL(stateChanged(Phonon::State,Phonon::State)), this, SLOT(mediaPlayer_state(Phonon::State,Phonon::State))); - #endif - - tabModelEditSetup(); - tabPhases(); - tabExpos(); - tabMixes(); - tabLimits(); - tabCurves(); - tabCustomSwitches(); - selectedSwitch=0; - int telTab=10; - int fswTab=9; - - if (GetEepromInterface()->getCapability(FSSwitch)) { - ui->tabSafetySwitches->setDisabled(true); - ui->tabWidget->removeTab(8); - telTab--; - fswTab--; - } else { - tabSafetySwitches(); - } - - if (GetEepromInterface()->getCapability(CustomFunctions)==0 ) { - ui->tabCustomFunctions->setDisabled(true); - ui->tabWidget->removeTab(fswTab); - telTab--; - } else { - tabCustomFunctions(); - selectedFunction=0; - } - tabTemplates(); - tabHeli(); - if (GetEepromInterface()->getCapability(Telemetry) & TM_HASTELEMETRY) { - tabTelemetry(); - } else { - ui->tabTelemetry->setDisabled(true); - ui->tabWidget->removeTab(telTab); - } - ui->tabWidget->setCurrentIndex(0); - ui->curvePreview->setMinimumWidth(240); - ui->curvePreview->setMinimumHeight(240); - resizeEvent(); - QTimer::singleShot(0, this, SLOT(shrink())); - if (openWizard) { - QTimer::singleShot(1, this, SLOT(wizard())); - } -} - -ModelEdit::~ModelEdit() -{ - delete ui; -} - - -float ModelEdit::getBarStep(int barId) -{ - switch (barId-1) { - case TELEMETRY_SOURCE_TX_BATT: - return 0.1; - break; - case TELEMETRY_SOURCE_TIMER1: - case TELEMETRY_SOURCE_TIMER2: - return 3; - break; - case TELEMETRY_SOURCE_A1: - case TELEMETRY_SOURCE_A1_MIN: - return (ui->a1RatioSB->value()/255); - break; - case TELEMETRY_SOURCE_A2: - case TELEMETRY_SOURCE_A2_MIN: - return (ui->a2RatioSB->value()/255); - break; - case TELEMETRY_SOURCE_ALT: - case TELEMETRY_SOURCE_GPS_ALT: - case TELEMETRY_SOURCE_ALT_MAX: - case TELEMETRY_SOURCE_ALT_MIN: - return 8; - break; - case TELEMETRY_SOURCE_RPM: - case TELEMETRY_SOURCE_RPM_MAX: - return 50; - break; - case TELEMETRY_SOURCE_CELLS_SUM: - case TELEMETRY_SOURCE_VFAS: - return 0.1; - break; - case TELEMETRY_SOURCE_CELL: - return 0.02; - break; - case TELEMETRY_SOURCE_HDG: - return 2; - break; - case TELEMETRY_SOURCE_DIST: - case TELEMETRY_SOURCE_DIST_MAX: - return 8; - break; - case TELEMETRY_SOURCE_CURRENT_MAX: - case TELEMETRY_SOURCE_CURRENT: - return 0.5; - break; - case TELEMETRY_SOURCE_POWER: - return 5; - break; - case TELEMETRY_SOURCE_CONSUMPTION: - return 20; - break; - case TELEMETRY_SOURCE_SPEED: - case TELEMETRY_SOURCE_SPEED_MAX: - if (g_model.frsky.imperial==1) { - return 1; - } else { - return 1.852; - } - break; - default: - return 1; - break; - } -} - -void ModelEdit::setupExposListWidget() -{ - ExposlistWidget = new MixersList(this, true); - QPushButton * qbUp = new QPushButton(this); - QPushButton * qbDown = new QPushButton(this); - QPushButton * qbClear = new QPushButton(this); - - qbUp->setText(tr("Move Up")); - qbUp->setIcon(QIcon(":/images/moveup.png")); - qbUp->setShortcut(QKeySequence(tr("Ctrl+Up"))); - qbDown->setText(tr("Move Down")); - qbDown->setIcon(QIcon(":/images/movedown.png")); - qbDown->setShortcut(QKeySequence(tr("Ctrl+Down"))); - qbClear->setText(tr("Clear Expo Settings")); - qbClear->setIcon(QIcon(":/images/clear.png")); - - ui->exposLayout->addWidget(ExposlistWidget,1,1,1,3); - ui->exposLayout->addWidget(qbUp,2,1); - ui->exposLayout->addWidget(qbClear,2,2); - ui->exposLayout->addWidget(qbDown,2,3); - - connect(ExposlistWidget,SIGNAL(customContextMenuRequested(QPoint)),this,SLOT(expolistWidget_customContextMenuRequested(QPoint))); - connect(ExposlistWidget,SIGNAL(doubleClicked(QModelIndex)),this,SLOT(expolistWidget_doubleClicked(QModelIndex))); - connect(ExposlistWidget,SIGNAL(mimeDropped(int,const QMimeData*,Qt::DropAction)),this,SLOT(mimeExpoDropped(int,const QMimeData*,Qt::DropAction))); - - connect(qbUp,SIGNAL(pressed()),SLOT(moveExpoUp())); - connect(qbDown,SIGNAL(pressed()),SLOT(moveExpoDown())); - connect(qbClear,SIGNAL(pressed()),SLOT(clearExpos())); - - connect(ExposlistWidget,SIGNAL(keyWasPressed(QKeyEvent*)), this, SLOT(expolistWidget_KeyPress(QKeyEvent*))); -} - -void ModelEdit::setupMixerListWidget() -{ - MixerlistWidget = new MixersList(this, false); // TODO enum - QPushButton * qbUp = new QPushButton(this); - QPushButton * qbDown = new QPushButton(this); - QPushButton * qbClear = new QPushButton(this); - - qbUp->setText(tr("Move Up")); - qbUp->setIcon(QIcon(":/images/moveup.png")); - qbUp->setShortcut(QKeySequence(tr("Ctrl+Up"))); - qbDown->setText(tr("Move Down")); - qbDown->setIcon(QIcon(":/images/movedown.png")); - qbDown->setShortcut(QKeySequence(tr("Ctrl+Down"))); - qbClear->setText(tr("Clear Mixes")); - qbClear->setIcon(QIcon(":/images/clear.png")); - - ui->mixersLayout->addWidget(MixerlistWidget,1,1,1,3); - ui->mixersLayout->addWidget(qbUp,2,1); - ui->mixersLayout->addWidget(qbClear,2,2); - ui->mixersLayout->addWidget(qbDown,2,3); - - connect(MixerlistWidget,SIGNAL(customContextMenuRequested(QPoint)),this,SLOT(mixerlistWidget_customContextMenuRequested(QPoint))); - connect(MixerlistWidget,SIGNAL(doubleClicked(QModelIndex)),this,SLOT(mixerlistWidget_doubleClicked(QModelIndex))); - connect(MixerlistWidget,SIGNAL(mimeDropped(int,const QMimeData*,Qt::DropAction)),this,SLOT(mimeMixerDropped(int,const QMimeData*,Qt::DropAction))); - - connect(qbUp,SIGNAL(pressed()),SLOT(moveMixUp())); - connect(qbDown,SIGNAL(pressed()),SLOT(moveMixDown())); - connect(qbClear,SIGNAL(pressed()),SLOT(clearMixes())); - - connect(MixerlistWidget,SIGNAL(keyWasPressed(QKeyEvent*)), this, SLOT(mixerlistWidget_KeyPress(QKeyEvent*))); -} - -void ModelEdit::resizeEvent(QResizeEvent *event) -{ - - if(ui->curvePreview->scene()) - { - QRect qr = ui->curvePreview->contentsRect(); - ui->curvePreview->scene()->setSceneRect(GFX_MARGIN, GFX_MARGIN, qr.width()-GFX_MARGIN*2, qr.height()-GFX_MARGIN*2); - drawCurve(); - } - - QDialog::resizeEvent(event); - -} - -void ModelEdit::applyBaseTemplate() -{ - clearMixes(false); - applyTemplate(0); - updateSettings(); - tabMixes(); -} - -void ModelEdit::updateSettings() -{ - radioData.models[id_model] = g_model; - emit modelValuesChanged(); -} - -void ModelEdit::on_tabWidget_currentChanged(int index) -{ - QSettings settings("companion9x", "companion9x"); - settings.setValue("modelEditTab",index);//ui->tabWidget->currentIndex()); - resizeEvent(); -} - -void ModelEdit::fssldValueChanged() -{ - if (fsLock) - return; - fsLock=true; - QSpinBox * fssb1[] = { ui->fsm1SB_1, ui->fsm1SB_2,ui->fsm1SB_3,ui->fsm1SB_4,ui->fsm1SB_5,ui->fsm1SB_6,ui->fsm1SB_7,ui->fsm1SB_8, - ui->fsm1SB_9, ui->fsm1SB_10,ui->fsm1SB_11,ui->fsm1SB_12,ui->fsm1SB_13,ui->fsm1SB_14,ui->fsm1SB_15,ui->fsm1SB_16, NULL }; - QSpinBox * fssb2[] = { ui->fsm2SB_1, ui->fsm2SB_2,ui->fsm2SB_3,ui->fsm2SB_4,ui->fsm2SB_5,ui->fsm2SB_6,ui->fsm2SB_7,ui->fsm2SB_8, - ui->fsm2SB_9, ui->fsm2SB_10,ui->fsm2SB_11,ui->fsm2SB_12,ui->fsm2SB_13,ui->fsm2SB_14,ui->fsm2SB_15,ui->fsm2SB_16, NULL }; - QSlider *sl = qobject_cast(sender()); - int fsId=sl->objectName().mid(sl->objectName().lastIndexOf("_")+1).toInt()-1; - int moduleid=sl->objectName().mid(3,1).toInt(); - if (moduleid==1) { - fssb1[fsId]->setValue(sl->value()); - } else { - fssb2[fsId]->setValue(sl->value()); - } - fsLock=false; -} - -void ModelEdit::fssbValueChanged() -{ - if (fsLock) - return; - fsLock=true; - QSlider * fssld1[] = { ui->fsm1SL_1, ui->fsm1SL_2,ui->fsm1SL_3,ui->fsm1SL_4,ui->fsm1SL_5,ui->fsm1SL_6,ui->fsm1SL_7,ui->fsm1SL_8, - ui->fsm1SL_9, ui->fsm1SL_10,ui->fsm1SL_11,ui->fsm1SL_12,ui->fsm1SL_13,ui->fsm1SL_14,ui->fsm1SL_15,ui->fsm1SL_16, NULL }; - QSlider * fssld2[] = { ui->fsm2SL_1, ui->fsm2SL_2,ui->fsm2SL_3,ui->fsm2SL_4,ui->fsm2SL_5,ui->fsm2SL_6,ui->fsm2SL_7,ui->fsm2SL_8, - ui->fsm2SL_9, ui->fsm2SL_10,ui->fsm2SL_11,ui->fsm2SL_12,ui->fsm2SL_13,ui->fsm2SL_14,ui->fsm2SL_15,ui->fsm2SL_16, NULL }; - QSpinBox *sb = qobject_cast(sender()); - int fsId=sb->objectName().mid(sb->objectName().lastIndexOf("_")+1).toInt()-1; - int moduleid=sb->objectName().mid(3,1).toInt(); - if (moduleid==1) { - fssld1[fsId]->setValue(sb->value()); - } else { - fssld2[fsId]->setValue(sb->value()); - } - fsLock=false; -} - -void ModelEdit::fssldEdited() -{ - QSlider *sl = qobject_cast(sender()); - int fsId=sl->objectName().mid(sl->objectName().lastIndexOf("_")+1).toInt()-1; - int moduleid=sl->objectName().mid(3,1).toInt(); - if (moduleid==1) { - g_model.moduleData[0].failsafeChannels[fsId]=sl->value(); - } else { - g_model.moduleData[1].failsafeChannels[fsId]=sl->value(); - } - updateSettings(); -} - -void ModelEdit::fssbEdited() -{ - QSpinBox *sb = qobject_cast(sender()); - int fsId=sb->objectName().mid(sb->objectName().lastIndexOf("_")+1).toInt()-1; - int moduleid=sb->objectName().mid(3,1).toInt(); - if (moduleid==1) { - g_model.moduleData[0].failsafeChannels[fsId]=sb->value(); - } else { - g_model.moduleData[1].failsafeChannels[fsId]=sb->value(); - } - updateSettings(); -} - -void ModelEdit::tabModelEditSetup() -{ - //name - QLabel * pmsl[] = {ui->swwarn_label, ui->swwarn0_label, ui->swwarn4_label, NULL}; - QCheckBox * pmchkb[] = {ui->swwarn1_ChkB,ui->swwarn2_ChkB,ui->swwarn3_ChkB,ui->swwarn5_ChkB,ui->swwarn6_ChkB, NULL}; - QSlider * tpmsld[] = {ui->chkSA, ui->chkSB, ui->chkSC, ui->chkSD, ui->chkSE, ui->chkSF, ui->chkSG, NULL}; - QSlider * fssld1[] = { ui->fsm1SL_1, ui->fsm1SL_2,ui->fsm1SL_3,ui->fsm1SL_4,ui->fsm1SL_5,ui->fsm1SL_6,ui->fsm1SL_7,ui->fsm1SL_8, - ui->fsm1SL_9, ui->fsm1SL_10,ui->fsm1SL_11,ui->fsm1SL_12,ui->fsm1SL_13,ui->fsm1SL_14,ui->fsm1SL_15,ui->fsm1SL_16, NULL }; - QSlider * fssld2[] = { ui->fsm2SL_1, ui->fsm2SL_2,ui->fsm2SL_3,ui->fsm2SL_4,ui->fsm2SL_5,ui->fsm2SL_6,ui->fsm2SL_7,ui->fsm2SL_8, - ui->fsm2SL_9, ui->fsm2SL_10,ui->fsm2SL_11,ui->fsm2SL_12,ui->fsm2SL_13,ui->fsm2SL_14,ui->fsm2SL_15,ui->fsm2SL_16, NULL }; - QSpinBox * fssb1[] = { ui->fsm1SB_1, ui->fsm1SB_2,ui->fsm1SB_3,ui->fsm1SB_4,ui->fsm1SB_5,ui->fsm1SB_6,ui->fsm1SB_7,ui->fsm1SB_8, - ui->fsm1SB_9, ui->fsm1SB_10,ui->fsm1SB_11,ui->fsm1SB_12,ui->fsm1SB_13,ui->fsm1SB_14,ui->fsm1SB_15,ui->fsm1SB_16, NULL }; - QSpinBox * fssb2[] = { ui->fsm2SB_1, ui->fsm2SB_2,ui->fsm2SB_3,ui->fsm2SB_4,ui->fsm2SB_5,ui->fsm2SB_6,ui->fsm2SB_7,ui->fsm2SB_8, - ui->fsm2SB_9, ui->fsm2SB_10,ui->fsm2SB_11,ui->fsm2SB_12,ui->fsm2SB_13,ui->fsm2SB_14,ui->fsm2SB_15,ui->fsm2SB_16, NULL }; - if (IS_TARANIS(GetEepromInterface()->getBoard())) { - ui->modelNameLE->setMaxLength(12); - } else { - ui->modelNameLE->setMaxLength(10); - } - ui->modelNameLE->setText(g_model.name); - fsLock=true; - if (GetEepromInterface()->getCapability(NumModules)<2) { - ui->rf2_GB->hide(); - } - - if (!GetEepromInterface()->getCapability(HasFailsafe)) { - ui->FSGB_1 ->hide(); - ui->FSGB_2->hide(); - ui->ModelSetupTab->setTabEnabled(1,0); - } else { - if (GetEepromInterface()->getCapability(HasFailsafe)<32) { - ui->FSGB_2->hide(); - } - - for (int i=0; fssld1[i]; i++) { - fssld1[i]->setValue(g_model.moduleData[0].failsafeChannels[i]); - fssld2[i]->setValue(g_model.moduleData[1].failsafeChannels[i]); - fssb1[i]->setValue(g_model.moduleData[0].failsafeChannels[i]); - fssb2[i]->setValue(g_model.moduleData[1].failsafeChannels[i]); - connect(fssld1[i],SIGNAL(valueChanged(int)),this,SLOT(fssldValueChanged())); - connect(fssld2[i],SIGNAL(valueChanged(int)),this,SLOT(fssldValueChanged())); - connect(fssb1[i],SIGNAL(valueChanged(int)),this,SLOT(fssbValueChanged())); - connect(fssb2[i],SIGNAL(valueChanged(int)),this,SLOT(fssbValueChanged())); - connect(fssld1[i],SIGNAL(sliderReleased()),this,SLOT(fssldEdited())); - connect(fssld2[i],SIGNAL(sliderReleased()),this,SLOT(fssldEdited())); - connect(fssb1[i],SIGNAL(editingFinished()),this,SLOT(fssbEdited())); - connect(fssb2[i],SIGNAL(editingFinished()),this,SLOT(fssbEdited())); - } - } - fsLock=false; - //timer1 mode direction value - populateTimerSwitchCB(ui->timer1ModeCB,g_model.timers[0].mode,GetEepromInterface()->getCapability(TimerTriggerB)); - int min = g_model.timers[0].val/60; - int sec = g_model.timers[0].val%60; - ui->timer1ValTE->setTime(QTime(0,min,sec)); - ui->timer1DirCB->setCurrentIndex(g_model.timers[0].dir); - if (!GetEepromInterface()->getCapability(ModelVoice)) { - ui->modelVoice_SB->hide(); - ui->modelVoice_label->hide(); - } else { - ui->modelVoice_SB->setValue(g_model.modelVoice+260); - } - if (!GetEepromInterface()->getCapability(PerModelThrottleInvert)) { - ui->label_thrrev->hide(); - ui->thrrevChkB->hide(); - } else { - ui->thrrevChkB->setChecked(g_model.throttleReversed); - } - if (!GetEepromInterface()->getCapability(ModelImage)) { - ui->modelImage_CB->hide(); - ui->modelImage_label->hide(); - ui->modelImage_image->hide(); - } else { - modelImageLock=true; - QStringList items; - items.append(""); - QSettings settings("companion9x", "companion9x"); - QString path=settings.value("sdPath", ".").toString(); - path.append("/BMP/"); - QDir qd(path); - int vml= GetEepromInterface()->getCapability(VoicesMaxLength)+4; - if (qd.exists()) { - QStringList filters; - filters << "*.bmp" << "*.bmp"; - foreach ( QString file, qd.entryList(filters, QDir::Files) ) { - QFileInfo fi(file); - QString temp=fi.completeBaseName(); - if (!items.contains(temp) && temp.length()<=vml) { - items.append(temp); - } - } - } - if (!items.contains(g_model.bitmap)) { - items.append(g_model.bitmap); - } - items.sort(); - ui->modelImage_CB->clear(); - foreach ( QString file, items ) { - ui->modelImage_CB->addItem(file); - if (file==g_model.bitmap) { - ui->modelImage_CB->setCurrentIndex(ui->modelImage_CB->count()-1); - QString fileName=path; - fileName.append(g_model.bitmap); - fileName.append(".bmp"); - QImage image(fileName); - if (image.isNull()) { - fileName=path; - fileName.append(g_model.bitmap); - fileName.append(".BMP"); - image.load(fileName); - } - if (!image.isNull()) { - ui->modelImage_image->setPixmap(QPixmap::fromImage(image.scaled( 64,32)));; - } - } - } - modelImageLock=false; - } - - if (!GetEepromInterface()->getCapability(pmSwitchMask)) { - for (int i=0; pmsl[i]; i++) { - pmsl[i]->hide(); - } - for (int i=0; pmchkb[i]; i++) { - pmchkb[i]->hide(); - } - ui->tswwarn0_CB->hide(); - for (int i=0; tpmsld[i]; i++) { - tpmsld[i]->hide(); - } - ui->swwarn0_line->hide(); - ui->swwarn0_line->hide(); - ui->swwarn0_CB->hide(); - ui->swwarn4_CB->hide(); - ui->swwarn_line0->hide(); - ui->swwarn_line1->hide(); - ui->swwarn_line2->hide(); - ui->swwarn_line3->hide(); - ui->swwarn_line4->hide(); - ui->swwarn_line5->hide(); - ui->tswwarn0_label->hide(); - ui->tswwarn1_label->hide(); - ui->tswwarn2_label->hide(); - ui->tswwarn3_label->hide(); - ui->tswwarn4_label->hide(); - ui->tswwarn5_label->hide(); - ui->tswwarn6_label->hide(); - ui->tswwarn7_label->hide(); - } else { - if (GetEepromInterface()->getCapability(Pots)==3) { - ui->swwarn0_CB->setCurrentIndex(g_model.switchWarningStates & 0x01); - ui->swwarn1_ChkB->setChecked(checkbit(g_model.switchWarningStates, 1)); - ui->swwarn2_ChkB->setChecked(checkbit(g_model.switchWarningStates, 2)); - ui->swwarn3_ChkB->setChecked(checkbit(g_model.switchWarningStates, 3)); - ui->swwarn4_CB->setCurrentIndex((g_model.switchWarningStates & 0x30)>>4); - ui->swwarn5_ChkB->setChecked(checkbit(g_model.switchWarningStates, 6)); - ui->swwarn6_ChkB->setChecked(checkbit(g_model.switchWarningStates, 7)); - for (int i=0; pmchkb[i]; i++) { - connect(pmchkb[i], SIGNAL(stateChanged(int)),this,SLOT(startupSwitchEdited())); - } - connect(ui->swwarn0_CB,SIGNAL(currentIndexChanged(int)),this,SLOT(startupSwitchEdited())); - connect(ui->swwarn4_CB,SIGNAL(currentIndexChanged(int)),this,SLOT(startupSwitchEdited())); - } else { - ui->tswwarn0_CB->setCurrentIndex(g_model.switchWarningStates & 0x01); - uint16_t switchstate=(g_model.switchWarningStates>>1); - ui->chkSA->setValue(switchstate & 0x3); - switchstate >>= 2; - ui->chkSB->setValue(switchstate & 0x3); - switchstate >>= 2; - ui->chkSC->setValue(switchstate & 0x3); - switchstate >>= 2; - ui->chkSD->setValue(switchstate & 0x3); - switchstate >>= 2; - ui->chkSE->setValue(switchstate & 0x3); - switchstate >>= 2; - ui->chkSF->setValue((switchstate & 0x3)/2); - switchstate >>= 2; - ui->chkSG->setValue(switchstate & 0x3); - connect(ui->tswwarn0_CB,SIGNAL(currentIndexChanged(int)),this,SLOT(startupSwitchEdited())); - for (int i=0; tpmsld[i]; i++) { - connect(tpmsld[i], SIGNAL(valueChanged(int)),this,SLOT(startupSwitchEdited())); - } - } - } - int ppmmax=GetEepromInterface()->getCapability(PPMFrameLength); - if (ppmmax>0) { - ui->ppmFrameLengthDSB->setMaximum(ppmmax); - } - if (!GetEepromInterface()->getCapability(InstantTrimSW)) { - ui->instantTrim_label->hide(); - ui->instantTrim_CB->setDisabled(true); - ui->instantTrim_CB->hide(); - } else { - switchEditLock=true; - int found=false; - for (int i=0; i< C9X_MAX_CUSTOM_FUNCTIONS; i++) { - if (g_model.funcSw[i].func==FuncInstantTrim) { - populateSwitchCB(ui->instantTrim_CB,g_model.funcSw[i].swtch,POPULATE_MSWITCHES & POPULATE_ONOFF); - found=true; - break; - } - } - if (found==false) { - populateSwitchCB(ui->instantTrim_CB,RawSwitch(),POPULATE_MSWITCHES & POPULATE_ONOFF); - } - switchEditLock=false; - } - if (GetEepromInterface()->getCapability(NoTimerDirs)) { - ui->timer1DirCB->hide(); - ui->timer2DirCB->hide(); - } - if (GetEepromInterface()->getCapability(NoThrExpo)) { - ui->label_thrExpo->hide(); - ui->thrExpoChkB->hide(); - } - if (!(GetEepromInterface()->getCapability(ExtendedTrims)>0)) { - ui->extendedTrimsChkB->hide(); - ui->extendedTrims_label->hide(); - } - if (!GetEepromInterface()->getCapability(HasTTrace)) { - ui->label_ttrace->hide(); - ui->ttraceCB->hide(); - } else { - populateTTraceCB(ui->ttraceCB,g_model.thrTraceSrc); - } - if (GetEepromInterface()->getCapability(RotaryEncoders)==0) { - ui->bcREaChkB->hide(); - ui->bcREbChkB->hide(); - } - if (GetEepromInterface()->getCapability(Pots)==3) { - ui->tswwarn0_CB->hide(); - ui->tswwarn0_label->hide(); - ui->tswwarn1_label->hide(); - ui->tswwarn2_label->hide(); - ui->tswwarn3_label->hide(); - ui->tswwarn4_label->hide(); - ui->tswwarn5_label->hide(); - ui->tswwarn6_label->hide(); - ui->tswwarn7_label->hide(); - ui->chkSA->hide(); - ui->chkSB->hide(); - ui->chkSC->hide(); - ui->chkSD->hide(); - ui->chkSE->hide(); - ui->chkSF->hide(); - ui->chkSG->hide(); - this->layout()->removeItem(ui->TaranisSwitchStartup); - ui->bcP4ChkB->hide(); - } else { - ui->swwarn0_CB->hide(); - ui->swwarn0_label->hide(); - ui->swwarn0_line->hide(); - ui->swwarn1_ChkB->hide(); - ui->swwarn1_line->hide(); - ui->swwarn2_ChkB->hide(); - ui->swwarn3_ChkB->hide(); - ui->swwarn4_CB->hide(); - ui->swwarn4_label->hide(); - ui->swwarn5_ChkB->hide(); - ui->swwarn6_ChkB->hide(); - ui->swwarn_line0->hide(); - ui->swwarn_line1->hide(); - ui->swwarn_line2->hide(); - ui->swwarn_line3->hide(); - ui->swwarn_line4->hide(); - ui->swwarn_line5->hide(); - this->layout()->removeItem(ui->StockSwitchStartup); - ui->bcP1ChkB->setText(tr("S1")); - ui->bcP2ChkB->setText(tr("S2")); - ui->bcP3ChkB->setText(tr("LS")); - } - - if (!GetEepromInterface()->getCapability(PerModelThrottleWarning)) { - ui->thrwarnChkB->setDisabled(true); - ui->thrwarnChkB->hide(); - ui->thrwarnLabel->hide(); - } else { - switchEditLock=true; - ui->thrwarnChkB->setChecked(g_model.disableThrottleWarning); - switchEditLock=false; - } - if (!GetEepromInterface()->getCapability(TimerTriggerB)) { - ui->timer1ModeBCB->hide(); - ui->timer1ModeB_label->hide(); - ui->timer2ModeBCB->hide(); - ui->timer2ModeB_label->hide(); - } else { - populateTimerSwitchBCB(ui->timer1ModeBCB,g_model.timers[0].modeB,GetEepromInterface()->getCapability(TimerTriggerB)); - populateTimerSwitchBCB(ui->timer2ModeBCB,g_model.timers[1].modeB,GetEepromInterface()->getCapability(TimerTriggerB)); - } - - int index=0; - int selindex; - int selindex2; - protocolEditLock=true; - protocol2EditLock=true; - ui->protocolCB->clear(); - for (int i=0; iisAvailable((Protocol)i)) { - ui->protocolCB->addItem(getProtocolStr(i), (QVariant)i); - if (g_model.moduleData[0].protocol == i) { - selindex = index; - } - index++; - } - } - if (GetEepromInterface()->getCapability(NumModules)>1) { - index=0; - ui->protocolCB_2->clear(); - for (int i=0; iisAvailable((Protocol)i, 1)) { - ui->protocolCB_2->addItem(getProtocolStr(i), (QVariant)i); - if (g_model.moduleData[1].protocol == i) { - selindex2 = index; - } - index++; - } - } - } - if (GetEepromInterface()->getCapability(ModelTrainerEnable)) { - trainerEditLock=true; - if (!(g_model.trainerMode||g_model.traineron)) { - ui->protocolCB_3->setCurrentIndex(0); - ui->label_PPM_3->hide(); - ui->ppmDelaySB_3->hide(); - ui->label_PPMCH_3->hide(); - ui->label_pulsePol_3->hide(); - ui->pulsePolCB_3->hide(); - ui->numChannelsSB_3->hide(); - ui->label_ppmFrameLength_3->hide(); - ui->ppmFrameLengthDSB_3->hide(); - ui->label_numChannelsStart_3->hide(); - ui->numChannelsStart_3->hide(); - } else { - ui->protocolCB_3->setCurrentIndex(1); - ui->label_PPM_3->show(); - ui->ppmDelaySB_3->show(); - ui->label_PPMCH_3->show(); - ui->label_pulsePol_3->show(); - ui->pulsePolCB_3->show(); - ui->numChannelsSB_3->show(); - ui->label_ppmFrameLength_3->show(); - ui->ppmFrameLengthDSB_3->show(); - ui->label_numChannelsStart_3->show(); - ui->numChannelsStart_3->show(); - } - trainerEditLock=false; - on_protocolCB_3_currentIndexChanged(g_model.traineron||g_model.trainerMode); - } else { - ui->rf3_GB->hide(); - } - - ui->label_PPM->hide(); - ui->ppmDelaySB->hide(); - ui->label_PPMCH->hide(); - ui->label_pulsePol->hide(); - ui->pulsePolCB->hide(); - ui->numChannelsSB->hide(); - ui->label_ppmFrameLength->hide(); - ui->ppmFrameLengthDSB->hide(); - ui->label_DSM->hide(); - ui->DSM_Type->hide(); - ui->label_PXX->hide(); - ui->pxxRxNum->hide(); - ui->label_numChannelsStart->hide(); - ui->numChannelsStart->hide(); - ui->pxxRxNum->setEnabled(false); - ui->protocolCB->setCurrentIndex(selindex); - protocolEditLock=false; - on_protocolCB_currentIndexChanged(selindex); - if (GetEepromInterface()->getCapability(NumModules)>1) { - ui->label_PPM_2->hide(); - ui->ppmDelaySB_2->hide(); - ui->label_PPMCH_2->hide(); - ui->label_pulsePol_2->hide(); - ui->pulsePolCB_2->hide(); - ui->numChannelsSB_2->hide(); - ui->label_ppmFrameLength_2->hide(); - ui->ppmFrameLengthDSB_2->hide(); - ui->label_DSM_2->hide(); - ui->DSM_Type_2->hide(); - ui->label_PXX_2->hide(); - ui->pxxRxNum_2->hide(); - ui->label_numChannelsStart_2->hide(); - ui->numChannelsStart_2->hide(); - ui->pxxRxNum_2->setEnabled(false); - ui->protocolCB_2->setCurrentIndex(selindex2); - protocol2EditLock=false; - on_protocolCB_2_currentIndexChanged(selindex2); - } - - //timer2 mode direction value - if (GetEepromInterface()->getCapability(Timers)<2) { - ui->timer2DirCB->hide(); - ui->timer2ValTE->hide(); - ui->timer2DirCB->hide(); - ui->timer2ModeCB->hide(); - ui->timer2ModeBCB->hide(); - ui->timer2ModeB_label->hide(); - ui->label_timer2->hide(); - } else { - populateTimerSwitchCB(ui->timer2ModeCB,g_model.timers[1].mode,GetEepromInterface()->getCapability(TimerTriggerB)); - min = g_model.timers[1].val/60; - sec = g_model.timers[1].val%60; - ui->timer2ValTE->setTime(QTime(0,min,sec)); - ui->timer2DirCB->setCurrentIndex(g_model.timers[1].dir); - } - if (!GetEepromInterface()->getCapability(PermTimers)) { - ui->timer1Perm->hide(); - ui->timer2Perm->hide(); - ui->timer1PermValue->hide(); - ui->timer2PermValue->hide(); - } else { - int sign=1; - int pvalue=g_model.timers[0].pvalue; - if (pvalue<0) { - pvalue=-pvalue; - sign=-1; - } - int hours=pvalue/3600; - pvalue-=hours*3600; - int minutes = pvalue/60; - int seconds = pvalue%60; - ui->timer1PermValue->setText(QString(" %1(%2:%3:%4)").arg(sign<0 ? "-" :" ").arg(hours,2,10,QLatin1Char('0')).arg(minutes,2,10,QLatin1Char('0')).arg(seconds,2,10,QLatin1Char('0'))); - // QString QString::arg ( int a, int fieldWidth = 0, int base = 10, const QChar & fillChar = QLatin1Char( ' ' ) ) const - sign=1; - pvalue=g_model.timers[1].pvalue; - if (pvalue<0) { - pvalue=-pvalue; - sign=-1; - } - hours=pvalue/3600; - pvalue-=hours*3600; - minutes = pvalue/60; - seconds = pvalue%60; - ui->timer2PermValue->setText(QString(" %1(%2:%3:%4)").arg(sign<0 ? "-" :" ").arg(hours,2,10,QLatin1Char('0')).arg(minutes,2,10,QLatin1Char('0')).arg(seconds,2,10,QLatin1Char('0'))); - ui->timer1Perm->setChecked(g_model.timers[0].persistent); - ui->timer2Perm->setChecked(g_model.timers[1].persistent); - } - if (!GetEepromInterface()->getCapability(minuteBeep)) { - ui->timer1Minute->hide(); - ui->timer2Minute->hide(); - } else { - ui->timer1Minute->setChecked(g_model.timers[0].minuteBeep); - ui->timer2Minute->setChecked(g_model.timers[1].minuteBeep); - } - - if (!GetEepromInterface()->getCapability(countdownBeep)) { - ui->timer1CountDownBeep->hide(); - ui->timer2CountDownBeep->hide(); - } else { - ui->timer1CountDownBeep->setChecked(g_model.timers[0].countdownBeep); - ui->timer2CountDownBeep->setChecked(g_model.timers[1].countdownBeep); - } - - //trim inc, thro trim, thro expo, instatrim - ui->trimIncCB->setCurrentIndex(g_model.trimInc); - ui->thrExpoChkB->setChecked(g_model.thrExpo); - ui->thrTrimChkB->setChecked(g_model.thrTrim); - - //center beep - ui->bcRUDChkB->setChecked(g_model.beepANACenter & BC_BIT_RUD); - ui->bcELEChkB->setChecked(g_model.beepANACenter & BC_BIT_ELE); - ui->bcTHRChkB->setChecked(g_model.beepANACenter & BC_BIT_THR); - ui->bcAILChkB->setChecked(g_model.beepANACenter & BC_BIT_AIL); - ui->bcP1ChkB->setChecked(g_model.beepANACenter & BC_BIT_P1); - ui->bcP2ChkB->setChecked(g_model.beepANACenter & BC_BIT_P2); - ui->bcP3ChkB->setChecked(g_model.beepANACenter & BC_BIT_P3); - ui->bcP4ChkB->setChecked(g_model.beepANACenter & BC_BIT_P4); - ui->bcREaChkB->setChecked(g_model.beepANACenter & BC_BIT_REA); - ui->bcREbChkB->setChecked(g_model.beepANACenter & BC_BIT_REB); - - // PPM settings fields - ui->ppmDelaySB->setEnabled(g_model.moduleData[0].protocol == PPM); - ui->pulsePolCB->setCurrentIndex(g_model.moduleData[0].ppmPulsePol); - ui->ppmDelaySB->setEnabled(g_model.moduleData[0].protocol == PPM); - ui->ppmDelaySB->setValue(g_model.moduleData[0].ppmDelay); - // TODO? ui->numChannelsSB->setEnabled(g_model.moduleData[0].protocol == PPM); - - ui->extendedLimitsChkB->setChecked(g_model.extendedLimits); - ui->T2ThrTrgChkB->setChecked(g_model.t2throttle); - if (!GetEepromInterface()->getCapability(Timer2ThrTrig)) { - ui->T2ThrTrg->hide(); - ui->T2ThrTrgChkB->hide(); - } - ui->ppmFrameLengthDSB->setValue(22.5+((double)g_model.moduleData[0].ppmFrameLength)*0.5); - if (!GetEepromInterface()->getCapability(PPMExtCtrl)) { - ui->ppmFrameLengthDSB->hide(); - ui->label_ppmFrameLength->hide(); - } - switch (g_model.moduleData[0].protocol) { - case PXX_DJT: - case PXX_XJT_X16: - case PXX_XJT_D8: - case PXX_XJT_LR12: - ui->pxxRxNum->setMinimum(0); - ui->pxxRxNum->setValue((g_model.modelId)); - break; - case DSM2: - if (!GetEepromInterface()->getCapability(DSM2Indexes)) { - ui->pxxRxNum->setValue(1); - } - else { - ui->pxxRxNum->setMinimum(0); - ui->pxxRxNum->setValue((g_model.modelId)); - } - ui->numChannelsSB->setValue(8); - break; - default: - ui->label_DSM->hide(); - ui->DSM_Type->hide(); - ui->DSM_Type->setEnabled(false); - ui->label_PXX->hide(); - ui->pxxRxNum->hide(); - ui->pxxRxNum->setEnabled(false); - ui->numChannelsSB->setValue(g_model.moduleData[0].channelsCount); - break; - } -} - -void ModelEdit::on_modelVoice_SB_editingFinished() -{ - g_model.modelVoice=ui->modelVoice_SB->value()-260; - updateSettings(); -} - -void ModelEdit::on_timer1Perm_toggled(bool checked) -{ - g_model.timers[0].persistent=checked; - updateSettings(); -} - -void ModelEdit::on_timer2Perm_toggled(bool checked) -{ - g_model.timers[1].persistent=checked; - updateSettings(); -} - -void ModelEdit::on_timer1Minute_toggled(bool checked) -{ - g_model.timers[0].minuteBeep=checked; - updateSettings(); -} - -void ModelEdit::on_timer2Minute_toggled(bool checked) -{ - g_model.timers[1].minuteBeep=checked; - updateSettings(); -} - -void ModelEdit::on_timer1CountDownBeep_toggled(bool checked) -{ - g_model.timers[0].countdownBeep=checked; - updateSettings(); -} - -void ModelEdit::on_timer2CountDownBeep_toggled(bool checked) -{ - g_model.timers[1].countdownBeep=checked; - updateSettings(); -} - -void ModelEdit::displayOnePhaseOneTrim(unsigned int phase_idx, unsigned int chn, QComboBox *trimUse, QSpinBox *trimVal, QSlider *trimSlider) -{ - PhaseData *phase = &g_model.phaseData[phase_idx]; - int trim = phase->trim[chn]; - if (trimUse) populateTrimUseCB(trimUse, phase_idx); - if (phase->trimRef[chn] >= 0) { - if (trimUse) trimUse->setCurrentIndex(1 + phase->trimRef[chn] - (phase->trimRef[chn] >= (int)phase_idx ? 1 : 0)); - trim = g_model.phaseData[g_model.getTrimFlightPhase(chn, phase_idx)].trim[chn]; - trimVal->setEnabled(false); - trimSlider->setEnabled(false); - } else { - trimVal->setEnabled(true); - trimSlider->setEnabled(true); - if (trimUse) trimUse->setCurrentIndex(0); - } - int trimsMax = GetEepromInterface()->getCapability(ExtendedTrims); - if (trimsMax == 0 || !g_model.extendedTrims) { - trimsMax = 125; - } - /*else if (trimsMax == 500) - trimSlider->setTickInterval(50);*/ - trimSlider->setRange(-trimsMax, +trimsMax); - trimVal->setRange(-trimsMax, +trimsMax); - trimVal->setValue(trim); - trimSlider->setValue(trim); - if (chn == 2 && g_eeGeneral.throttleReversed) - trimSlider->setInvertedAppearance(true); -} - -void ModelEdit::displayOnePhase(unsigned int phase_idx, QLineEdit *name, QComboBox *sw, QDoubleSpinBox *fadeIn, QDoubleSpinBox *fadeOut, - QComboBox *trim1Use, QSpinBox *trim1, QLabel *trim1Label, QSlider *trim1Slider, - QComboBox *trim2Use, QSpinBox *trim2, QLabel *trim2Label, QSlider *trim2Slider, - QComboBox *trim3Use, QSpinBox *trim3, QLabel *trim3Label, QSlider *trim3Slider, - QComboBox *trim4Use, QSpinBox *trim4, QLabel *trim4Label, QSlider *trim4Slider, - QLabel *gv1Label, QComboBox *gv1Use,QSpinBox *gv1Value, - QLabel *gv2Label, QComboBox *gv2Use,QSpinBox *gv2Value, - QLabel *gv3Label, QComboBox *gv3Use,QSpinBox *gv3Value, - QLabel *gv4Label, QComboBox *gv4Use,QSpinBox *gv4Value, - QLabel *gv5Label, QComboBox *gv5Use,QSpinBox *gv5Value, - QLabel *re1Label, QComboBox *re1Use,QSpinBox *re1Value, - QLabel *re2Label, QComboBox *re2Use,QSpinBox *re2Value,bool doConnect=false) -{ - phasesLock=true; - PhaseData *phase = &g_model.phaseData[phase_idx]; - if (IS_TARANIS(GetEepromInterface()->getBoard())) { - if (name) name->setMaxLength(10); - } else { - if (name) name->setMaxLength(6); - } - - if (name) name->setText(phase->name); - if (sw) populateSwitchCB(sw, phase->swtch); - - int scale=GetEepromInterface()->getCapability(SlowScale); - float range=GetEepromInterface()->getCapability(SlowRange); - int fades=GetEepromInterface()->getCapability(FlightPhasesHaveFades); - if (fades && fadeIn) { - fadeIn->setEnabled(true); - fadeOut->setEnabled(true); - fadeIn->setMaximum(range/scale); - fadeIn->setSingleStep(1.0/scale); - fadeIn->setDecimals((scale==1 ? 0 :1) ); - if (fadeIn) { - fadeIn->setValue((double)phase->fadeIn/scale); - } - fadeOut->setMaximum(range/scale); - fadeOut->setSingleStep(1.0/scale); - fadeOut->setDecimals((scale==1 ? 0 :1)); - if (fadeOut) { - fadeOut->setValue((double)phase->fadeOut/scale); - } - } else if ( fadeIn ) { - fadeIn->setDisabled(true); - fadeOut->setDisabled(true); - } - displayOnePhaseOneTrim(phase_idx, CONVERT_MODE(1)-1, trim1Use, trim1, trim1Slider); - displayOnePhaseOneTrim(phase_idx, CONVERT_MODE(2)-1, trim2Use, trim2, trim2Slider); - displayOnePhaseOneTrim(phase_idx, CONVERT_MODE(3)-1, trim3Use, trim3, trim3Slider); - displayOnePhaseOneTrim(phase_idx, CONVERT_MODE(4)-1, trim4Use, trim4, trim4Slider); - - if (gv1Use) { - populateGvarUseCB(gv1Use, phase_idx); - if (phase->gvars[0]>1024) { - gv1Use->setCurrentIndex(phase->gvars[0]-1024); - } - } - gv1Value->setMinimum(-1024); - gv1Value->setMaximum(1024); - if (phase->gvars[0]<1024) { - gv1Value->setValue(phase->gvars[0]); - gv1Value->setEnabled(true); - } else { - uint index=phase->gvars[0]-1025; - if (index>=phase_idx) { - index++; - } - PhaseData *phasegvar = &g_model.phaseData[index]; - gv1Value->setValue(phasegvar->gvars[0]); - gv1Value->setDisabled(true); - } - if (gv2Use) { - populateGvarUseCB(gv2Use, phase_idx); - if (phase->gvars[1]>1024) { - gv2Use->setCurrentIndex(phase->gvars[1]-1024); - } - } - gv2Value->setMinimum(-1024); - gv2Value->setMaximum(1024); - if (phase->gvars[1]<1024) { - gv2Value->setValue(phase->gvars[1]); - gv2Value->setEnabled(true); - } else { - uint index=phase->gvars[1]-1025; - if (index>=phase_idx) { - index++; - } - PhaseData *phasegvar = &g_model.phaseData[index]; - gv2Value->setValue(phasegvar->gvars[1]); - gv2Value->setDisabled(true); - } - if (gv3Use) { - populateGvarUseCB(gv3Use, phase_idx); - if (phase->gvars[2]>1024) { - gv3Use->setCurrentIndex(phase->gvars[2]-1024); - } - } - gv3Value->setMinimum(-1024); - gv3Value->setMaximum(1024); - if (phase->gvars[2]<1024) { - gv3Value->setValue(phase->gvars[2]); - gv3Value->setEnabled(true); - } else { - uint index=phase->gvars[2]-1025; - if (index>=phase_idx) { - index++; - } - PhaseData *phasegvar = &g_model.phaseData[index]; - gv3Value->setValue(phasegvar->gvars[2]); - gv3Value->setDisabled(true); - } - if (gv4Use) { - populateGvarUseCB(gv4Use, phase_idx); - if (phase->gvars[3]>1024) { - gv4Use->setCurrentIndex(phase->gvars[3]-1024); - } - } - gv4Value->setMinimum(-1024); - gv4Value->setMaximum(1024); - if (phase->gvars[3]<1024) { - gv4Value->setValue(phase->gvars[3]); - gv4Value->setEnabled(true); - } else { - uint index=phase->gvars[3]-1025; - if (index>=phase_idx) { - index++; - } - PhaseData *phasegvar = &g_model.phaseData[index]; - gv4Value->setValue(phasegvar->gvars[3]); - gv4Value->setDisabled(true); - } - if (gv5Use) { - populateGvarUseCB(gv5Use, phase_idx); - if (phase->gvars[4]>1024) { - gv5Use->setCurrentIndex(phase->gvars[4]-1024); - } - } - gv5Value->setMinimum(-1024); - gv5Value->setMaximum(1024); - if (phase->gvars[4]<1024) { - gv5Value->setValue(phase->gvars[4]); - gv5Value->setEnabled(true); - } else { - uint index=phase->gvars[4]-1025; - if (index>=phase_idx) { - index++; - } - PhaseData *phasegvar = &g_model.phaseData[index]; - gv5Value->setValue(phasegvar->gvars[4]); - gv5Value->setDisabled(true); - } - if (re1Value) { - re1Value->setMinimum(-1024); - re1Value->setMaximum(1024); - } - if (re2Value) { - re2Value->setMinimum(-1024); - re2Value->setMaximum(1024); - } - if (re1Use) { - populateGvarUseCB(re1Use, phase_idx); - if (phase->rotaryEncoders[0]>1024) { - re1Use->setCurrentIndex(phase->rotaryEncoders[0]-1024); - } - } - if (phase->rotaryEncoders[0]<1024) { - re1Value->setValue(phase->rotaryEncoders[0]); - re1Value->setEnabled(true); - } else { - uint index=phase->rotaryEncoders[0]-1025; - if (index>=phase_idx) { - index++; - } - PhaseData *phasegvar = &g_model.phaseData[index]; - re1Value->setValue(phasegvar->rotaryEncoders[0]); - re1Value->setDisabled(true); - } - if (re2Use) { - populateGvarUseCB(re2Use, phase_idx); - if (phase->rotaryEncoders[0]>1024) { - re1Use->setCurrentIndex(phase->rotaryEncoders[0]-1024); - } - } - if (phase->rotaryEncoders[1]<1024) { - re2Value->setValue(phase->rotaryEncoders[1]); - re2Value->setEnabled(true); - } else { - uint index=phase->rotaryEncoders[1]-1025; - if (index>=phase_idx) { - index++; - } - PhaseData *phasegvar = &g_model.phaseData[index]; - re2Value->setValue(phasegvar->rotaryEncoders[1]); - re2Value->setDisabled(true); - } - if (GetEepromInterface()->getCapability(RotaryEncoders)<2) { - if (re2Label) - re2Label->hide(); - if (re2Use) - re2Use->hide(); - re2Value->hide(); - } - if (GetEepromInterface()->getCapability(RotaryEncoders)<1) { - if (re1Label) - re1Label->hide(); - if (re1Use) - re1Use->hide(); - re1Value->hide(); - } - QString labels[] = { tr("Rud"), tr("Ele"), tr("Thr"), tr("Ail") }; - if (trim1Label) { - trim1Label->setText(labels[CONVERT_MODE(1)-1]); - trim2Label->setText(labels[CONVERT_MODE(2)-1]); - trim3Label->setText(labels[CONVERT_MODE(3)-1]); - trim4Label->setText(labels[CONVERT_MODE(4)-1]); - } - // the connects - if (doConnect) { - connect(name, SIGNAL(editingFinished()), this, SLOT(phaseName_editingFinished())); - if (sw!=NULL) { - connect(sw,SIGNAL(currentIndexChanged(int)),this,SLOT(phaseSwitch_currentIndexChanged())); - connect(trim1Use,SIGNAL(currentIndexChanged(int)),this,SLOT(phaseTrimUse_currentIndexChanged())); - connect(trim2Use,SIGNAL(currentIndexChanged(int)),this,SLOT(phaseTrimUse_currentIndexChanged())); - connect(trim3Use,SIGNAL(currentIndexChanged(int)),this,SLOT(phaseTrimUse_currentIndexChanged())); - connect(trim4Use,SIGNAL(currentIndexChanged(int)),this,SLOT(phaseTrimUse_currentIndexChanged())); - } - if (gv1Use) connect(gv1Use,SIGNAL(currentIndexChanged(int)),this,SLOT(phaseGVUse_currentIndexChanged())); - if (gv2Use) connect(gv2Use,SIGNAL(currentIndexChanged(int)),this,SLOT(phaseGVUse_currentIndexChanged())); - if (gv3Use) connect(gv3Use,SIGNAL(currentIndexChanged(int)),this,SLOT(phaseGVUse_currentIndexChanged())); - if (gv4Use) connect(gv4Use,SIGNAL(currentIndexChanged(int)),this,SLOT(phaseGVUse_currentIndexChanged())); - if (gv5Use) connect(gv5Use,SIGNAL(currentIndexChanged(int)),this,SLOT(phaseGVUse_currentIndexChanged())); - if (re1Use) connect(re1Use,SIGNAL(currentIndexChanged(int)),this,SLOT(phaseREUse_currentIndexChanged())); - if (re2Use) connect(re2Use,SIGNAL(currentIndexChanged(int)),this,SLOT(phaseREUse_currentIndexChanged())); - connect(gv1Value,SIGNAL(editingFinished()),this,SLOT(phaseGVValue_editingFinished())); - connect(gv2Value,SIGNAL(editingFinished()),this,SLOT(phaseGVValue_editingFinished())); - connect(gv3Value,SIGNAL(editingFinished()),this,SLOT(phaseGVValue_editingFinished())); - connect(gv4Value,SIGNAL(editingFinished()),this,SLOT(phaseGVValue_editingFinished())); - connect(gv5Value,SIGNAL(editingFinished()),this,SLOT(phaseGVValue_editingFinished())); - connect(re1Value,SIGNAL(editingFinished()),this,SLOT(phaseREValue_editingFinished())); - connect(re2Value,SIGNAL(editingFinished()),this,SLOT(phaseREValue_editingFinished())); - - connect(fadeIn,SIGNAL(editingFinished()),this,SLOT(phaseFadeIn_editingFinished())); - connect(fadeOut,SIGNAL(editingFinished()),this,SLOT(phaseFadeOut_editingFinished())); - connect(trim1,SIGNAL(valueChanged(int)),this,SLOT(phaseTrim_valueChanged())); - connect(trim2,SIGNAL(valueChanged(int)),this,SLOT(phaseTrim_valueChanged())); - connect(trim3,SIGNAL(valueChanged(int)),this,SLOT(phaseTrim_valueChanged())); - connect(trim4,SIGNAL(valueChanged(int)),this,SLOT(phaseTrim_valueChanged())); - connect(trim1Slider,SIGNAL(valueChanged(int)),this,SLOT(phaseTrimSlider_valueChanged())); - connect(trim2Slider,SIGNAL(valueChanged(int)),this,SLOT(phaseTrimSlider_valueChanged())); - connect(trim3Slider,SIGNAL(valueChanged(int)),this,SLOT(phaseTrimSlider_valueChanged())); - connect(trim4Slider,SIGNAL(valueChanged(int)),this,SLOT(phaseTrimSlider_valueChanged())); - phasesLock=false; - } -} - -void ModelEdit::tabPhases() -{ - QSpinBox * tmp[9][5]={ - {ui->phase0GV1Value,ui->phase0GV2Value,ui->phase0GV3Value,ui->phase0GV4Value,ui->phase0GV5Value} , - {ui->phase1GV1Value,ui->phase1GV2Value,ui->phase1GV3Value,ui->phase1GV4Value,ui->phase1GV5Value} , - {ui->phase2GV1Value,ui->phase2GV2Value,ui->phase2GV3Value,ui->phase2GV4Value,ui->phase2GV5Value} , - {ui->phase3GV1Value,ui->phase3GV2Value,ui->phase3GV3Value,ui->phase3GV4Value,ui->phase3GV5Value} , - {ui->phase4GV1Value,ui->phase4GV2Value,ui->phase4GV3Value,ui->phase4GV4Value,ui->phase4GV5Value} , - {ui->phase5GV1Value,ui->phase5GV2Value,ui->phase5GV3Value,ui->phase5GV4Value,ui->phase5GV5Value} , - {ui->phase6GV1Value,ui->phase6GV2Value,ui->phase6GV3Value,ui->phase6GV4Value,ui->phase6GV5Value} , - {ui->phase7GV1Value,ui->phase7GV2Value,ui->phase7GV3Value,ui->phase7GV4Value,ui->phase7GV5Value} , - {ui->phase8GV1Value,ui->phase8GV2Value,ui->phase8GV3Value,ui->phase8GV4Value,ui->phase8GV5Value} - }; - - QSpinBox * tmp2[9][2]={ - {ui->phase0RE1Value,ui->phase0RE2Value} , - {ui->phase1RE1Value,ui->phase1RE2Value} , - {ui->phase2RE1Value,ui->phase2RE2Value} , - {ui->phase3RE1Value,ui->phase3RE2Value} , - {ui->phase4RE1Value,ui->phase4RE2Value} , - {ui->phase5RE1Value,ui->phase5RE2Value} , - {ui->phase6RE1Value,ui->phase6RE2Value} , - {ui->phase7RE1Value,ui->phase7RE2Value} , - {ui->phase8RE1Value,ui->phase8RE2Value} , - }; - - memcpy(gvarsSB, tmp, sizeof(gvarsSB)); - memcpy(reSB, tmp2, sizeof(reSB)); - - phasesLock = true; - int gvars=0; - if (GetEepromInterface()->getCapability(HasVariants)) { - if (GetCurrentFirmwareVariant() & GVARS_VARIANT) - gvars=1; - } else { - gvars=GetEepromInterface()->getCapability(Gvars); - } - if (!GetEepromInterface()->getCapability(RotaryEncoders)) { - ui->phase0reGB->hide(); - ui->phase1reGB->hide(); - ui->phase2reGB->hide(); - ui->phase3reGB->hide(); - ui->phase4reGB->hide(); - ui->phase5reGB->hide(); - ui->phase6reGB->hide(); - ui->phase7reGB->hide(); - ui->phase8reGB->hide(); - } - if (!GetEepromInterface()->getCapability(GvarsFlightPhases) || gvars==0) { - if (!GetEepromInterface()->getCapability(Gvars) || gvars==0) { - ui->phase0gvGB->hide(); - } - ui->phase1gvGB->hide(); - ui->phase2gvGB->hide(); - ui->phase3gvGB->hide(); - ui->phase4gvGB->hide(); - ui->phase5gvGB->hide(); - ui->phase6gvGB->hide(); - ui->phase7gvGB->hide(); - ui->phase8gvGB->hide(); - } - - if (!GetEepromInterface()->getCapability(GvarsAreNamed)) { - ui->phase0GV1Name->hide(); - ui->phase0GV2Name->hide(); - ui->phase0GV3Name->hide(); - ui->phase0GV4Name->hide(); - ui->phase0GV5Name->hide(); - ui->phase0GV6Name->hide(); - ui->phase0GV7Name->hide(); - } - - if (GetEepromInterface()->getCapability(Gvars) && gvars==1) { - if (!GetEepromInterface()->getCapability(GvarsHaveSources)) { - ui->phase0GV1Source->hide(); - ui->phase0GV2Source->hide(); - ui->phase0GV3Source->hide(); - ui->phase0GV4Source->hide(); - ui->phase0GV5Source->hide(); - ui->phase0GV6Source->hide(); - ui->phase0GV7Source->hide(); - } else { - populateGvSourceCB(ui->phase0GV1Source, g_model.gvsource[0]); - populateGvSourceCB(ui->phase0GV2Source, g_model.gvsource[1]); - populateGvSourceCB(ui->phase0GV3Source, g_model.gvsource[2]); - populateGvSourceCB(ui->phase0GV4Source, g_model.gvsource[3]); - populateGvSourceCB(ui->phase0GV5Source, g_model.gvsource[4]); - connect(ui->phase0GV1Source,SIGNAL(currentIndexChanged(int)),this,SLOT(GVSource_currentIndexChanged())); - connect(ui->phase0GV2Source,SIGNAL(currentIndexChanged(int)),this,SLOT(GVSource_currentIndexChanged())); - connect(ui->phase0GV3Source,SIGNAL(currentIndexChanged(int)),this,SLOT(GVSource_currentIndexChanged())); - connect(ui->phase0GV4Source,SIGNAL(currentIndexChanged(int)),this,SLOT(GVSource_currentIndexChanged())); - connect(ui->phase0GV5Source,SIGNAL(currentIndexChanged(int)),this,SLOT(GVSource_currentIndexChanged())); - } - if (IS_TARANIS(GetEepromInterface()->getBoard())) { - ui->phase0GV1Name->setMaxLength(10); - ui->phase0GV2Name->setMaxLength(10); - ui->phase0GV3Name->setMaxLength(10); - ui->phase0GV4Name->setMaxLength(10); - ui->phase0GV5Name->setMaxLength(10); - } else { - ui->phase0GV1Name->setMaxLength(6); - ui->phase0GV2Name->setMaxLength(6); - ui->phase0GV3Name->setMaxLength(6); - ui->phase0GV4Name->setMaxLength(6); - ui->phase0GV5Name->setMaxLength(6); - } - - ui->phase0GV1Name->setText(g_model.gvars_names[0]); - ui->phase0GV2Name->setText(g_model.gvars_names[1]); - ui->phase0GV3Name->setText(g_model.gvars_names[2]); - ui->phase0GV4Name->setText(g_model.gvars_names[3]); - ui->phase0GV5Name->setText(g_model.gvars_names[4]); - connect(ui->phase0GV1Name,SIGNAL(editingFinished()),this,SLOT(GVName_editingFinished())); - connect(ui->phase0GV2Name,SIGNAL(editingFinished()),this,SLOT(GVName_editingFinished())); - connect(ui->phase0GV3Name,SIGNAL(editingFinished()),this,SLOT(GVName_editingFinished())); - connect(ui->phase0GV4Name,SIGNAL(editingFinished()),this,SLOT(GVName_editingFinished())); - connect(ui->phase0GV5Name,SIGNAL(editingFinished()),this,SLOT(GVName_editingFinished())); - } - if (gvars) { - if (GetEepromInterface()->getCapability(GvarsNum)<7) { - ui->phase0GV6Name->hide(); - ui->phase0GV7Name->hide(); - ui->phase0GV6Source->hide(); - ui->phase0GV7Source->hide(); - ui->phase0GV6Value->hide(); - ui->phase0GV7Value->hide(); - ui->phase0GV6_Label->hide(); - ui->phase0GV7_Label->hide(); - } else { - populateGvSourceCB(ui->phase0GV6Source, g_model.gvsource[5]); - populateGvSourceCB(ui->phase0GV7Source, g_model.gvsource[6]); - connect(ui->phase0GV6Source,SIGNAL(currentIndexChanged(int)),this,SLOT(GVSource_currentIndexChanged())); - connect(ui->phase0GV7Source,SIGNAL(currentIndexChanged(int)),this,SLOT(GVSource_currentIndexChanged())); - ui->phase0GV6Name->setText(g_model.gvars_names[5]); - ui->phase0GV7Name->setText(g_model.gvars_names[6]); - connect(ui->phase0GV6Name,SIGNAL(editingFinished()),this,SLOT(GVName_editingFinished())); - connect(ui->phase0GV7Name,SIGNAL(editingFinished()),this,SLOT(GVName_editingFinished())); - ui->phase0GV6Value->setValue(g_model.phaseData[0].gvars[5]); - ui->phase0GV7Value->setValue(g_model.phaseData[0].gvars[6]); - connect(ui->phase0GV6Value,SIGNAL(editingFinished()),this,SLOT(phaseGVValue_editingFinished())); - connect(ui->phase0GV7Value,SIGNAL(editingFinished()),this,SLOT(phaseGVValue_editingFinished())); - } - } - - displayOnePhase(0, ui->phase0Name, NULL, ui->phase0FadeIn, ui->phase0FadeOut, NULL, ui->phase0Trim1Value, ui->phase0Trim1Label, ui->phase0Trim1Slider, NULL, ui->phase0Trim2Value, ui->phase0Trim2Label, ui->phase0Trim2Slider, NULL, ui->phase0Trim3Value, ui->phase0Trim3Label, ui->phase0Trim3Slider, NULL, ui->phase0Trim4Value, ui->phase0Trim4Label, ui->phase0Trim4Slider, ui->phase0GV1_Label, NULL , ui->phase0GV1Value, ui->phase0GV2_Label, NULL , ui->phase0GV2Value, ui->phase0GV3_Label, NULL , ui->phase0GV3Value, ui->phase0GV4_Label, NULL , ui->phase0GV4Value, ui->phase0GV5_Label, NULL , ui->phase0GV5Value,ui->phase0REA_Label,NULL, ui->phase0RE1Value,ui->phase0REB_Label, NULL, ui->phase0RE2Value, true); - displayOnePhase(1, ui->phase1Name, ui->phase1Switch, ui->phase1FadeIn, ui->phase1FadeOut, ui->phase1Trim1Use, ui->phase1Trim1Value, ui->phase1Trim1Label, ui->phase1Trim1Slider, ui->phase1Trim2Use, ui->phase1Trim2Value, ui->phase1Trim2Label, ui->phase1Trim2Slider, ui->phase1Trim3Use, ui->phase1Trim3Value, ui->phase1Trim3Label, ui->phase1Trim3Slider, ui->phase1Trim4Use, ui->phase1Trim4Value, ui->phase1Trim4Label, ui->phase1Trim4Slider, ui->phase1GV1_Label, ui->phase1GV1Use, ui->phase1GV1Value, ui->phase1GV2_Label, ui->phase1GV2Use, ui->phase1GV2Value, ui->phase1GV3_Label, ui->phase1GV3Use, ui->phase1GV3Value, ui->phase1GV4_Label, ui->phase1GV4Use, ui->phase1GV4Value, ui->phase1GV5_Label, ui->phase1GV5Use, ui->phase1GV5Value,ui->phase1REA_Label, ui->phase1RE1Use, ui->phase1RE1Value,ui->phase1REB_Label, ui->phase1RE2Use, ui->phase1RE2Value, true); - displayOnePhase(2, ui->phase2Name, ui->phase2Switch, ui->phase2FadeIn, ui->phase2FadeOut, ui->phase2Trim1Use, ui->phase2Trim1Value, ui->phase2Trim1Label, ui->phase2Trim1Slider, ui->phase2Trim2Use, ui->phase2Trim2Value, ui->phase2Trim2Label, ui->phase2Trim2Slider, ui->phase2Trim3Use, ui->phase2Trim3Value, ui->phase2Trim3Label, ui->phase2Trim3Slider, ui->phase2Trim4Use, ui->phase2Trim4Value, ui->phase2Trim4Label, ui->phase2Trim4Slider, ui->phase2GV1_Label, ui->phase2GV1Use, ui->phase2GV1Value, ui->phase2GV2_Label, ui->phase2GV2Use, ui->phase2GV2Value, ui->phase2GV3_Label, ui->phase2GV3Use, ui->phase2GV3Value, ui->phase2GV4_Label, ui->phase2GV4Use, ui->phase2GV4Value, ui->phase2GV5_Label, ui->phase2GV5Use, ui->phase2GV5Value,ui->phase2REA_Label, ui->phase2RE1Use, ui->phase2RE1Value,ui->phase2REB_Label, ui->phase2RE2Use, ui->phase2RE2Value, true); - displayOnePhase(3, ui->phase3Name, ui->phase3Switch, ui->phase3FadeIn, ui->phase3FadeOut, ui->phase3Trim1Use, ui->phase3Trim1Value, ui->phase3Trim1Label, ui->phase3Trim1Slider, ui->phase3Trim2Use, ui->phase3Trim2Value, ui->phase3Trim2Label, ui->phase3Trim2Slider, ui->phase3Trim3Use, ui->phase3Trim3Value, ui->phase3Trim3Label, ui->phase3Trim3Slider, ui->phase3Trim4Use, ui->phase3Trim4Value, ui->phase3Trim4Label, ui->phase3Trim4Slider, ui->phase3GV1_Label, ui->phase3GV1Use, ui->phase3GV1Value, ui->phase3GV2_Label, ui->phase3GV2Use, ui->phase3GV2Value, ui->phase3GV3_Label, ui->phase3GV3Use, ui->phase3GV3Value, ui->phase3GV4_Label, ui->phase3GV4Use, ui->phase3GV4Value, ui->phase3GV5_Label, ui->phase3GV5Use, ui->phase3GV5Value,ui->phase3REA_Label, ui->phase3RE1Use, ui->phase3RE1Value,ui->phase3REB_Label, ui->phase3RE2Use, ui->phase3RE2Value, true); - displayOnePhase(4, ui->phase4Name, ui->phase4Switch, ui->phase4FadeIn, ui->phase4FadeOut, ui->phase4Trim1Use, ui->phase4Trim1Value, ui->phase4Trim1Label, ui->phase4Trim1Slider, ui->phase4Trim2Use, ui->phase4Trim2Value, ui->phase4Trim2Label, ui->phase4Trim2Slider, ui->phase4Trim3Use, ui->phase4Trim3Value, ui->phase4Trim3Label, ui->phase4Trim3Slider, ui->phase4Trim4Use, ui->phase4Trim4Value, ui->phase4Trim4Label, ui->phase4Trim4Slider, ui->phase4GV1_Label, ui->phase4GV1Use, ui->phase4GV1Value, ui->phase4GV2_Label, ui->phase4GV2Use, ui->phase4GV2Value, ui->phase4GV3_Label, ui->phase4GV3Use, ui->phase4GV3Value, ui->phase4GV4_Label, ui->phase4GV4Use, ui->phase4GV4Value, ui->phase4GV5_Label, ui->phase4GV5Use, ui->phase4GV5Value,ui->phase4REA_Label, ui->phase4RE1Use, ui->phase4RE1Value,ui->phase4REB_Label, ui->phase4RE2Use, ui->phase4RE2Value, true); - displayOnePhase(5, ui->phase5Name, ui->phase5Switch, ui->phase5FadeIn, ui->phase5FadeOut, ui->phase5Trim1Use, ui->phase5Trim1Value, ui->phase5Trim1Label, ui->phase5Trim1Slider, ui->phase5Trim2Use, ui->phase5Trim2Value, ui->phase5Trim2Label, ui->phase5Trim2Slider, ui->phase5Trim3Use, ui->phase5Trim3Value, ui->phase5Trim3Label, ui->phase5Trim3Slider, ui->phase5Trim4Use, ui->phase5Trim4Value, ui->phase5Trim4Label, ui->phase5Trim4Slider, ui->phase5GV1_Label, ui->phase5GV1Use, ui->phase5GV1Value, ui->phase5GV2_Label, ui->phase5GV2Use, ui->phase5GV2Value, ui->phase5GV3_Label, ui->phase5GV3Use, ui->phase5GV3Value, ui->phase5GV4_Label, ui->phase5GV4Use, ui->phase5GV4Value, ui->phase5GV5_Label, ui->phase5GV5Use, ui->phase5GV5Value,ui->phase5REA_Label, ui->phase5RE1Use, ui->phase5RE1Value,ui->phase5REB_Label, ui->phase5RE2Use, ui->phase5RE2Value, true); - displayOnePhase(6, ui->phase6Name, ui->phase6Switch, ui->phase6FadeIn, ui->phase6FadeOut, ui->phase6Trim1Use, ui->phase6Trim1Value, ui->phase6Trim1Label, ui->phase6Trim1Slider, ui->phase6Trim2Use, ui->phase6Trim2Value, ui->phase6Trim2Label, ui->phase6Trim2Slider, ui->phase6Trim3Use, ui->phase6Trim3Value, ui->phase6Trim3Label, ui->phase6Trim3Slider, ui->phase6Trim4Use, ui->phase6Trim4Value, ui->phase6Trim4Label, ui->phase6Trim4Slider, ui->phase6GV1_Label, ui->phase6GV1Use, ui->phase6GV1Value, ui->phase6GV2_Label, ui->phase6GV2Use, ui->phase6GV2Value, ui->phase6GV3_Label, ui->phase6GV3Use, ui->phase6GV3Value, ui->phase6GV4_Label, ui->phase6GV4Use, ui->phase6GV4Value, ui->phase6GV5_Label, ui->phase6GV5Use, ui->phase6GV5Value,ui->phase6REA_Label, ui->phase6RE1Use, ui->phase6RE1Value,ui->phase6REB_Label, ui->phase6RE2Use, ui->phase6RE2Value, true); - displayOnePhase(7, ui->phase7Name, ui->phase7Switch, ui->phase7FadeIn, ui->phase7FadeOut, ui->phase7Trim1Use, ui->phase7Trim1Value, ui->phase7Trim1Label, ui->phase7Trim1Slider, ui->phase7Trim2Use, ui->phase7Trim2Value, ui->phase7Trim2Label, ui->phase7Trim2Slider, ui->phase7Trim3Use, ui->phase7Trim3Value, ui->phase7Trim3Label, ui->phase7Trim3Slider, ui->phase7Trim4Use, ui->phase7Trim4Value, ui->phase7Trim4Label, ui->phase7Trim4Slider, ui->phase7GV1_Label, ui->phase7GV1Use, ui->phase7GV1Value, ui->phase7GV2_Label, ui->phase7GV2Use, ui->phase7GV2Value, ui->phase7GV3_Label, ui->phase7GV3Use, ui->phase7GV3Value, ui->phase7GV4_Label, ui->phase7GV4Use, ui->phase7GV4Value, ui->phase7GV5_Label, ui->phase7GV5Use, ui->phase7GV5Value,ui->phase7REA_Label, ui->phase7RE1Use, ui->phase7RE1Value,ui->phase7REB_Label, ui->phase7RE2Use, ui->phase7RE2Value, true); - displayOnePhase(8, ui->phase8Name, ui->phase8Switch, ui->phase8FadeIn, ui->phase8FadeOut, ui->phase8Trim1Use, ui->phase8Trim1Value, ui->phase8Trim1Label, ui->phase8Trim1Slider, ui->phase8Trim2Use, ui->phase8Trim2Value, ui->phase8Trim2Label, ui->phase8Trim2Slider, ui->phase8Trim3Use, ui->phase8Trim3Value, ui->phase8Trim3Label, ui->phase8Trim3Slider, ui->phase8Trim4Use, ui->phase8Trim4Value, ui->phase8Trim4Label, ui->phase8Trim4Slider, ui->phase8GV1_Label, ui->phase8GV1Use, ui->phase8GV1Value, ui->phase8GV2_Label, ui->phase8GV2Use, ui->phase8GV2Value, ui->phase8GV3_Label, ui->phase8GV3Use, ui->phase8GV3Value, ui->phase8GV4_Label, ui->phase8GV4Use, ui->phase8GV4Value, ui->phase8GV5_Label, ui->phase8GV5Use, ui->phase8GV5Value,ui->phase8REA_Label, ui->phase8RE1Use, ui->phase8RE1Value,ui->phase8REB_Label, ui->phase8RE2Use, ui->phase8RE2Value, true); - - QSlider * tmpsliders[9][4]={ - {ui->phase0Trim1Slider,ui->phase0Trim2Slider,ui->phase0Trim3Slider,ui->phase0Trim4Slider}, - {ui->phase1Trim1Slider,ui->phase1Trim2Slider,ui->phase1Trim3Slider,ui->phase1Trim4Slider}, - {ui->phase2Trim1Slider,ui->phase2Trim2Slider,ui->phase2Trim3Slider,ui->phase2Trim4Slider}, - {ui->phase3Trim1Slider,ui->phase3Trim2Slider,ui->phase3Trim3Slider,ui->phase3Trim4Slider}, - {ui->phase4Trim1Slider,ui->phase4Trim2Slider,ui->phase4Trim3Slider,ui->phase4Trim4Slider}, - {ui->phase5Trim1Slider,ui->phase5Trim2Slider,ui->phase5Trim3Slider,ui->phase5Trim4Slider}, - {ui->phase6Trim1Slider,ui->phase6Trim2Slider,ui->phase6Trim3Slider,ui->phase6Trim4Slider}, - {ui->phase7Trim1Slider,ui->phase7Trim2Slider,ui->phase7Trim3Slider,ui->phase7Trim4Slider}, - {ui->phase8Trim1Slider,ui->phase8Trim2Slider,ui->phase8Trim3Slider,ui->phase8Trim4Slider} - }; - QSpinBox * tmpspinbox[9][4]={ - {ui->phase0Trim1Value,ui->phase0Trim2Value,ui->phase0Trim3Value,ui->phase0Trim4Value}, - {ui->phase1Trim1Value,ui->phase1Trim2Value,ui->phase1Trim3Value,ui->phase1Trim4Value}, - {ui->phase2Trim1Value,ui->phase2Trim2Value,ui->phase2Trim3Value,ui->phase2Trim4Value}, - {ui->phase3Trim1Value,ui->phase3Trim2Value,ui->phase3Trim3Value,ui->phase3Trim4Value}, - {ui->phase4Trim1Value,ui->phase4Trim2Value,ui->phase4Trim3Value,ui->phase4Trim4Value}, - {ui->phase5Trim1Value,ui->phase5Trim2Value,ui->phase5Trim3Value,ui->phase5Trim4Value}, - {ui->phase6Trim1Value,ui->phase6Trim2Value,ui->phase6Trim3Value,ui->phase6Trim4Value}, - {ui->phase7Trim1Value,ui->phase7Trim2Value,ui->phase7Trim3Value,ui->phase7Trim4Value}, - {ui->phase8Trim1Value,ui->phase8Trim2Value,ui->phase8Trim3Value,ui->phase8Trim4Value} - }; - memcpy(phasesTrimSliders,tmpsliders,sizeof(phasesTrimSliders)); - memcpy(phasesTrimValues,tmpspinbox,sizeof(phasesTrimValues)); - - int phases = GetEepromInterface()->getCapability(FlightPhases); - if (phases < 9) { - ui->phase8->setDisabled(true); - ui->phases->removeTab(8); - } - if (phases < 8) { - ui->phase7->setDisabled(true); - ui->phases->removeTab(7); - } - if (phases < 7) { - ui->phase6->setDisabled(true); - ui->phases->removeTab(6); - } - if (phases < 6) { - ui->phase5->setDisabled(true); - ui->phases->removeTab(5); - } - if (phases < 5) { - ui->phase4->setDisabled(true); - ui->phases->removeTab(4); - } - if (phases < 4) { - ui->phase3->setDisabled(true); - ui->phases->removeTab(3); - } - if (phases < 3) { - ui->phase2->setDisabled(true); - ui->phases->removeTab(2); - } - if (phases < 2) { - ui->phase1->setDisabled(true); - ui->phases->removeTab(1); - ui->phase0Name->setDisabled(true); - ui->phase0FadeIn->setDisabled(true); - ui->phase0FadeOut->setDisabled(true); - } - if ( GetEepromInterface()->getCapability(FlightPhasesAreNamed) ) { - for (int i=0; i < phases; i++) { - QString PhaseName=g_model.phaseData[i].name; - QString TabName; - if (i==0) { - TabName.append(QObject::tr("Flight Mode 0 (Default)")); - } else { - TabName.append(QObject::tr("FM %1").arg(i)); - } - if (!PhaseName.isEmpty()) { - TabName.append(" ("); - TabName.append(PhaseName); - TabName.append(")"); - } - ui->phases->setTabText(i,TabName); - } - } else { - QLineEdit * tmp[]= { ui->phase0Name,ui->phase1Name,ui->phase2Name,ui->phase3Name,ui->phase4Name,ui->phase5Name,ui->phase6Name,ui->phase7Name,ui->phase8Name}; - QLabel * tmp2[] = { ui->label_fm0name,ui->label_fm1name,ui->label_fm2name,ui->label_fm3name,ui->label_fm4name,ui->label_fm5name,ui->label_fm6name,ui->label_fm7name,ui->label_fm8name}; - for (int i=0; i < phases; i++) { - tmp[i]->hide(); - tmp2[i]->hide(); - } - } - ui->phases->setCurrentIndex(0); - phasesLock = false; -} - -void ModelEdit::on_phases_currentChanged(int index) -{ - phasesLock = true; - switch(index) { - case 1: - displayOnePhase(1, NULL, NULL, NULL, NULL, NULL, ui->phase1Trim1Value, NULL, ui->phase1Trim1Slider, NULL, ui->phase1Trim2Value, NULL, ui->phase1Trim2Slider, NULL, ui->phase1Trim3Value, NULL, ui->phase1Trim3Slider, NULL, ui->phase1Trim4Value, NULL, ui->phase1Trim4Slider, NULL, NULL, ui->phase1GV1Value, NULL, NULL, ui->phase1GV2Value, NULL, NULL, ui->phase1GV3Value, NULL, NULL, ui->phase1GV4Value, NULL, NULL, ui->phase1GV5Value,NULL,NULL, ui->phase1RE1Value,NULL,NULL, ui->phase1RE2Value); - break; - case 2: - displayOnePhase(2, NULL, NULL, NULL, NULL, NULL, ui->phase2Trim1Value, NULL, ui->phase2Trim1Slider, NULL, ui->phase2Trim2Value, NULL, ui->phase2Trim2Slider, NULL, ui->phase2Trim3Value, NULL, ui->phase2Trim3Slider, NULL, ui->phase2Trim4Value, NULL, ui->phase2Trim4Slider, NULL, NULL, ui->phase2GV1Value, NULL, NULL, ui->phase2GV2Value, NULL, NULL, ui->phase2GV3Value, NULL, NULL, ui->phase2GV4Value, NULL, NULL, ui->phase2GV5Value,NULL,NULL, ui->phase2RE1Value,NULL,NULL, ui->phase2RE2Value); - break; - case 3: - displayOnePhase(3, NULL, NULL, NULL, NULL, NULL, ui->phase3Trim1Value, NULL, ui->phase3Trim1Slider, NULL, ui->phase3Trim2Value, NULL, ui->phase3Trim2Slider, NULL, ui->phase3Trim3Value, NULL, ui->phase3Trim3Slider, NULL, ui->phase3Trim4Value, NULL, ui->phase3Trim4Slider, NULL, NULL, ui->phase3GV1Value, NULL, NULL, ui->phase3GV2Value, NULL, NULL, ui->phase3GV3Value, NULL, NULL, ui->phase3GV4Value, NULL, NULL, ui->phase3GV5Value,NULL,NULL, ui->phase3RE1Value,NULL,NULL, ui->phase3RE2Value); - break; - case 4: - displayOnePhase(4, NULL, NULL, NULL, NULL, NULL, ui->phase4Trim1Value, NULL, ui->phase4Trim1Slider, NULL, ui->phase4Trim2Value, NULL, ui->phase4Trim2Slider, NULL, ui->phase4Trim3Value, NULL, ui->phase4Trim3Slider, NULL, ui->phase4Trim4Value, NULL, ui->phase4Trim4Slider, NULL, NULL, ui->phase4GV1Value, NULL, NULL, ui->phase4GV2Value, NULL, NULL, ui->phase4GV3Value, NULL, NULL, ui->phase4GV4Value, NULL, NULL, ui->phase4GV5Value,NULL,NULL, ui->phase4RE1Value,NULL,NULL, ui->phase4RE2Value); - break; - case 5: - displayOnePhase(5, NULL, NULL, NULL, NULL, NULL, ui->phase5Trim1Value, NULL, ui->phase5Trim1Slider, NULL, ui->phase5Trim2Value, NULL, ui->phase5Trim2Slider, NULL, ui->phase5Trim3Value, NULL, ui->phase5Trim3Slider, NULL, ui->phase5Trim4Value, NULL, ui->phase5Trim4Slider, NULL, NULL, ui->phase5GV1Value, NULL, NULL, ui->phase5GV2Value, NULL, NULL, ui->phase5GV3Value, NULL, NULL, ui->phase5GV4Value, NULL, NULL, ui->phase5GV5Value,NULL,NULL, ui->phase5RE1Value,NULL,NULL, ui->phase5RE2Value); - break; - case 6: - displayOnePhase(6, NULL, NULL, NULL, NULL, NULL, ui->phase6Trim1Value, NULL, ui->phase6Trim1Slider, NULL, ui->phase6Trim2Value, NULL, ui->phase6Trim2Slider, NULL, ui->phase6Trim3Value, NULL, ui->phase6Trim3Slider, NULL, ui->phase6Trim4Value, NULL, ui->phase6Trim4Slider, NULL, NULL, ui->phase6GV1Value, NULL, NULL, ui->phase6GV2Value, NULL, NULL, ui->phase6GV3Value, NULL, NULL, ui->phase6GV4Value, NULL, NULL, ui->phase6GV5Value,NULL,NULL, ui->phase6RE1Value,NULL,NULL, ui->phase6RE2Value); - break; - case 7: - displayOnePhase(7, NULL, NULL, NULL, NULL, NULL, ui->phase7Trim1Value, NULL, ui->phase7Trim1Slider, NULL, ui->phase7Trim2Value, NULL, ui->phase7Trim2Slider, NULL, ui->phase7Trim3Value, NULL, ui->phase7Trim3Slider, NULL, ui->phase7Trim4Value, NULL, ui->phase7Trim4Slider, NULL, NULL, ui->phase7GV1Value, NULL, NULL, ui->phase7GV2Value, NULL, NULL, ui->phase7GV3Value, NULL, NULL, ui->phase7GV4Value, NULL, NULL, ui->phase7GV5Value,NULL,NULL, ui->phase7RE1Value,NULL,NULL, ui->phase7RE2Value); - break; - case 8: - displayOnePhase(8, NULL, NULL, NULL, NULL, NULL, ui->phase8Trim1Value, NULL, ui->phase8Trim1Slider, NULL, ui->phase8Trim2Value, NULL, ui->phase8Trim2Slider, NULL, ui->phase8Trim3Value, NULL, ui->phase8Trim3Slider, NULL, ui->phase8Trim4Value, NULL, ui->phase8Trim4Slider, NULL, NULL, ui->phase8GV1Value, NULL, NULL, ui->phase8GV2Value, NULL, NULL, ui->phase8GV3Value, NULL, NULL, ui->phase8GV4Value, NULL, NULL, ui->phase8GV5Value,NULL,NULL, ui->phase8RE1Value,NULL,NULL, ui->phase8RE2Value); - break; - } - phasesLock = false; -} - -void ModelEdit::tabExpos() -{ - // curDest -> destination channel - // i -> mixer number - QByteArray qba; - ExposlistWidget->clear(); - int curDest = -1; - - for(int i=0; imode==0) break; - QString str = ""; - while(curDest<(int)md->chn-1) { - curDest++; - str = getStickStr(curDest); - qba.clear(); - qba.append((quint8)-curDest-1); - QListWidgetItem *itm = new QListWidgetItem(str); - itm->setData(Qt::UserRole,qba); - ExposlistWidget->addItem(itm); - } - - if(curDest!=(int)md->chn) { - str = getStickStr(md->chn); - curDest = md->chn; - } else { - str = " "; - } - - switch (md->mode) { - case (1): str += " <-"; break; - case (2): str += " ->"; break; - default: str += " "; break; - }; - - str += tr("Weight") + getGVarString(md->weight).rightJustified(6, ' '); - if (!GetEepromInterface()->getCapability(ExpoIsCurve)) { - if (md->expo!=0) - str += " " + tr("Expo") + getGVarString(md->expo, true).rightJustified(7, ' '); - } else { - if (md->curveMode==0 && md->curveParam!=0) - str += " " + tr("Expo") + getGVarString(md->curveParam, true).rightJustified(7, ' '); - } - if (GetEepromInterface()->getCapability(FlightPhases)) { - if(md->phases) { - if (md->phases!=(unsigned int)(1<getCapability(FlightPhases))-1) { - int mask=1; - int first=0; - for (int i=0; igetCapability(FlightPhases);i++) { - if (!(md->phases & mask)) { - first++; - } - mask <<=1; - } - if (first>1) { - str += " " + tr("Flight modes") + QString("("); - } else { - str += " " + tr("Flight mode") + QString("("); - } - mask=1; - first=1; - for (int i=0; igetCapability(FlightPhases);i++) { - if (!(md->phases & mask)) { - if (!first) { - str += QString(", ")+ QString("%1").arg(getPhaseName(i+1, g_model.phaseData[i].name)); - } else { - str += QString("%1").arg(getPhaseName(i+1,g_model.phaseData[i].name)); - first=0; - } - } - mask <<=1; - } - str += QString(")"); - } else { - str += tr("DISABLED")+QString(" !!!"); - } - } - } - if (md->swtch.type != SWITCH_TYPE_NONE) str += " " + tr("Switch") + QString("(%1)").arg(md->swtch.toString()); - if (md->curveMode) - if (md->curveParam) str += " " + tr("Curve") + QString("(%1)").arg(getCurveStr(md->curveParam)); - if (GetEepromInterface()->getCapability(HasExpoNames)) { - QString ExpoName; - ExpoName.append(md->name); - if (!ExpoName.isEmpty()) { - str+=QString("(%1)").arg(ExpoName); - } - } - qba.clear(); - qba.append((quint8)i); - qba.append((const char*)md, sizeof(ExpoData)); - QListWidgetItem *itm = new QListWidgetItem(str); - itm->setData(Qt::UserRole,qba); // expo number - ExposlistWidget->addItem(itm); //(str); - } - - while(curDestsetData(Qt::UserRole,qba); // add new expo - ExposlistWidget->addItem(itm); - } -} - -void ModelEdit::exposEdited() -{ - updateSettings(); -} - -void ModelEdit::tabMixes() -{ - // curDest -> destination channel4 - // i -> mixer number - QByteArray qba; - MixerlistWidget->clear(); - unsigned int curDest = 0; - int i; - unsigned int outputs = GetEepromInterface()->getCapability(Outputs); - int showNames=ui->showNames_Ckb->isChecked(); - for(i=0; igetCapability(Mixes); i++) { - MixData *md = &g_model.mixData[i]; - if ((md->destCh==0) || (md->destCh>outputs+(unsigned int)GetEepromInterface()->getCapability(ExtraChannels))) continue; - QString str = ""; - while(curDest<(md->destCh-1)) { - curDest++; - if (curDest > outputs) { - str = tr("X%1 ").arg(curDest-outputs); - } else { - str = tr("CH%1%2").arg(curDest/10).arg(curDest%10); - if (GetEepromInterface()->getCapability(HasChNames) && showNames) { - QString name=g_model.limitData[curDest-1].name; - if (!name.isEmpty()) { - name.append(" "); - str=name.left(6); - } - } - } - qba.clear(); - qba.append((quint8)-curDest); - QListWidgetItem *itm = new QListWidgetItem(str); - itm->setData(Qt::UserRole,qba); - MixerlistWidget->addItem(itm); - } - - if (md->destCh > outputs) { - str = tr("X%1 ").arg(md->destCh-outputs); - } else { - str = tr("CH%1%2").arg(md->destCh/10).arg(md->destCh%10); - str.append(" "); - if (GetEepromInterface()->getCapability(HasChNames) && showNames) { - QString name=g_model.limitData[md->destCh-1].name; - if (!name.isEmpty()) { - name.append(" "); - str=name.left(6); - } - } - } - if (curDest != md->destCh) { - curDest = md->destCh; - } else { - str.fill(' '); - } - - switch(md->mltpx) { - case (1): str += " *"; break; - case (2): str += " R"; break; - default: str += " "; break; - }; - - str += " " + getGVarString(md->weight, true).rightJustified(6, ' '); - str += md->srcRaw.toString(); - unsigned int fpCount = GetEepromInterface()->getCapability(FlightPhases); - if (GetEepromInterface()->getCapability(FlightPhases)) { - if(md->phases) { - if (md->phases!=(unsigned int)(1<phases & mask)) { - first++; - } - mask <<=1; - } - if (first>1) { - str += " " + tr("Flight modes") + QString("("); - } else { - str += " " + tr("Flight mode") + QString("("); - } - mask=1; - first=1; - for (unsigned int i=0; iphases & mask)) { - if (!first) { - str += QString(", ")+ QString("%1").arg(getPhaseName(i+1, g_model.phaseData[i].name)); - } - else { - str += QString("%1").arg(getPhaseName(i+1,g_model.phaseData[i].name)); - first=0; - } - } - mask <<=1; - } - str += QString(")"); - } else { - str += tr("DISABLED")+QString(" !!!"); - } - } - } - if(md->swtch.type != SWITCH_TYPE_NONE) str += " " + tr("Switch") + QString("(%1)").arg(md->swtch.toString()); - if(md->carryTrim>0) { - str += " " +tr("No Trim"); - } else if (md->carryTrim<0) { - str += " " + RawSource(SOURCE_TYPE_TRIM, (-(md->carryTrim)-1)).toString(); - } - if(md->noExpo) { - str += " " +tr("No DR/Expo"); - } - if (GetEepromInterface()->getCapability(MixFmTrim) && md->enableFmTrim==1) { - if (md->sOffset) str += " " + tr("FMTrim") + QString("(%1%)").arg(md->sOffset); - } else { - if (md->sOffset) str += " " + tr("Offset") + getGVarString(md->sOffset); - } - if (md->differential) str += " " + tr("Diff") + getGVarString(md->differential); - if (md->curve) str += " " + tr("Curve") + QString("(%1)").arg(getCurveStr(md->curve)); - int scale=GetEepromInterface()->getCapability(SlowScale); - if (scale==0) - scale=1; - if (md->delayDown || md->delayUp) - str += tr(" Delay(u%1:d%2)").arg((double)md->delayUp/scale).arg((double)md->delayDown/scale); - if (md->speedDown || md->speedUp) - str += tr(" Slow(u%1:d%2)").arg((double)md->speedUp/scale).arg((double)md->speedDown/scale); - if (md->mixWarn) str += tr(" Warn(%1)").arg(md->mixWarn); - if (GetEepromInterface()->getCapability(HasMixerNames)) { - QString MixerName; - MixerName.append(md->name); - if (!MixerName.isEmpty()) { - str+=QString("(%1)").arg(MixerName); - } - } - qba.clear(); - qba.append((quint8)i); - qba.append((const char*)md, sizeof(MixData)); - QListWidgetItem *itm = new QListWidgetItem(str); - itm->setData(Qt::UserRole,qba); // mix number - MixerlistWidget->addItem(itm);//(str); - } - - while(curDestgetCapability(ExtraChannels)) { - curDest++; - QString str; - - if (curDest > outputs) { - str = tr("X%1 ").arg(curDest-outputs); - } else { - str = tr("CH%1%2").arg(curDest/10).arg(curDest%10); - if (GetEepromInterface()->getCapability(HasChNames) && showNames) { - QString name=g_model.limitData[curDest-1].name; - if (!name.isEmpty()) { - name.append(" "); - str=name.left(6); - } - } - } - qba.clear(); - qba.append((quint8)-curDest); - QListWidgetItem *itm = new QListWidgetItem(str); - itm->setData(Qt::UserRole,qba); // add new mixer - MixerlistWidget->addItem(itm); - } -} - -void ModelEdit::mixesEdited() -{ - updateSettings(); -} - - -void ModelEdit::tabHeli() -{ - updateHeliTab(); - - connect(ui->swashTypeCB,SIGNAL(currentIndexChanged(int)),this,SLOT(heliEdited())); - connect(ui->swashCollectiveCB,SIGNAL(currentIndexChanged(int)),this,SLOT(heliEdited())); - connect(ui->swashRingValSB,SIGNAL(editingFinished()),this,SLOT(heliEdited())); - connect(ui->swashInvertELE,SIGNAL(stateChanged(int)),this,SLOT(heliEdited())); - connect(ui->swashInvertAIL,SIGNAL(stateChanged(int)),this,SLOT(heliEdited())); - connect(ui->swashInvertCOL,SIGNAL(stateChanged(int)),this,SLOT(heliEdited())); -} - -void ModelEdit::updateHeliTab() -{ - heliEditLock = true; - - ui->swashTypeCB->setCurrentIndex(g_model.swashRingData.type); - populateSourceCB(ui->swashCollectiveCB, g_model.swashRingData.collectiveSource, POPULATE_SOURCES | POPULATE_SWITCHES | POPULATE_TRIMS); - ui->swashRingValSB->setValue(g_model.swashRingData.value); - ui->swashInvertELE->setChecked(g_model.swashRingData.invertELE); - ui->swashInvertAIL->setChecked(g_model.swashRingData.invertAIL); - ui->swashInvertCOL->setChecked(g_model.swashRingData.invertCOL); - - heliEditLock = false; -} - -void ModelEdit::heliEdited() -{ - if(heliEditLock) return; - g_model.swashRingData.type = ui->swashTypeCB->currentIndex(); - g_model.swashRingData.collectiveSource = ui->swashCollectiveCB->itemData(ui->swashCollectiveCB->currentIndex()).toInt(); - g_model.swashRingData.value = ui->swashRingValSB->value(); - g_model.swashRingData.invertELE = ui->swashInvertELE->isChecked(); - g_model.swashRingData.invertAIL = ui->swashInvertAIL->isChecked(); - g_model.swashRingData.invertCOL = ui->swashInvertCOL->isChecked(); - updateSettings(); -} - -void ModelEdit::tabLimits() -{ - limitEditLock=true; - int chnames=GetEepromInterface()->getCapability(HasChNames); - QRegExp rx(CHAR_FOR_NAMES_REGEX); - foreach(QLineEdit *le, findChildren(QRegExp("CHName_[0-9]+"))) { - int len=le->objectName().mid(le->objectName().lastIndexOf("_")+1).toInt()-1; - if (chnames ) { - QString name=g_model.limitData[len].name; - if (name.trimmed().isEmpty()) { - le->setText(tr("CH %1").arg(len+1)); - } else { - le->setText(name); - } - le->setValidator(new QRegExpValidator(rx, this)); - le->setEnabled(true); - le->setReadOnly(false); - connect(le, SIGNAL(editingFinished()), this, SLOT(limitNameEdited())); - } else { - le->setText(tr("CH %1").arg(len+1)); - le->setDisabled(true); - le->setReadOnly(true); - } - } - limitEditLock=false; - foreach(QDoubleSpinBox *sb, findChildren(QRegExp("offsetDSB_[0-9]+"))) { - int sbn=sb->objectName().mid(sb->objectName().lastIndexOf("_")+1).toInt()-1; - sb->setValue(g_model.limitData[sbn].offset/10.0); - connect(sb, SIGNAL(editingFinished()), this, SLOT(limitOffsetEdited())); - } - - foreach(QSpinBox *sb, findChildren(QRegExp("minSB_[0-9]+"))) { - int sbn=sb->objectName().mid(sb->objectName().lastIndexOf("_")+1).toInt()-1; - sb->setValue(g_model.limitData[sbn].min); - connect(sb, SIGNAL(editingFinished()), this, SLOT(limitEdited())); - } - - foreach(QSpinBox *sb, findChildren(QRegExp("maxSB_[0-9]+"))) { - int sbn=sb->objectName().mid(sb->objectName().lastIndexOf("_")+1).toInt()-1; - sb->setValue(g_model.limitData[sbn].max); - connect(sb, SIGNAL(editingFinished()), this, SLOT(limitEdited())); - } - - foreach(QComboBox *cb, findChildren(QRegExp("chInvCB_[0-9]+"))) { - int cbn=cb->objectName().mid(cb->objectName().lastIndexOf("_")+1).toInt()-1; - cb->setCurrentIndex((g_model.limitData[cbn].revert) ? 1 : 0); - connect(cb, SIGNAL(currentIndexChanged(int)), this, SLOT(limitInvEdited())); - } - if (GetEepromInterface()->getCapability(PPMCenter)) { - foreach(QSpinBox *sb, findChildren(QRegExp("ppmcenter_[0-9]+"))) { - int sbn=sb->objectName().mid(sb->objectName().lastIndexOf("_")+1).toInt()-1; - sb->setValue(g_model.limitData[sbn].ppmCenter+1500); - connect(sb, SIGNAL(editingFinished()), this, SLOT(ppmcenterEdited())); - } - } else { - foreach(QSpinBox *sb, findChildren(QRegExp("ppmcenter_[0-9]+"))) { - sb->hide(); - } - ui->ppmc_label1->hide(); - ui->ppmc_label2->hide(); - } - - if (GetEepromInterface()->getCapability(SYMLimits)) { - foreach(QCheckBox *ckb, findChildren(QRegExp("symckb_[0-9]+"))) { - int ckbn=ckb->objectName().mid(ckb->objectName().lastIndexOf("_")+1).toInt()-1; - ckb->setChecked(g_model.limitData[ckbn].symetrical); - connect(ckb, SIGNAL(toggled(bool)), this, SLOT(limitSymEdited())); - } - } else { - foreach(QCheckBox *ckb, findChildren(QRegExp("symckb_[0-9]+"))) { - ckb->hide(); - } - ui->label_sym01->hide(); - ui->label_sym02->hide(); - } - - if (GetEepromInterface()->getCapability(Outputs)<17) { - ui->limitGB2->hide(); - } - setLimitMinMax(); -} - -void ModelEdit::updateCurvesTab() -{ - ControlCurveSignal(true); - foreach(QCheckBox *ChkB, findChildren(QRegExp("plotCB_[0-9]+"))) { - int ChkBn=ChkB->objectName().mid(ChkB->objectName().lastIndexOf("_")+1).toInt()-1; - ChkB->setChecked(plot_curve[ChkBn]); - } - ControlCurveSignal(false); -} - - -void ModelEdit::tabCurves() -{ - QSpinBox* tmpy[17] = { - ui->curvePt01_y, ui->curvePt02_y, ui->curvePt03_y, ui->curvePt04_y, ui->curvePt05_y, - ui->curvePt06_y, ui->curvePt07_y, ui->curvePt08_y, ui->curvePt09_y, ui->curvePt10_y, - ui->curvePt11_y, ui->curvePt12_y, ui->curvePt13_y, ui->curvePt14_y, ui->curvePt15_y, - ui->curvePt16_y, ui->curvePt17_y }; - QSpinBox* tmpx[17] = { - ui->curvePt01_x, ui->curvePt02_x, ui->curvePt03_x, ui->curvePt04_x, ui->curvePt05_x, - ui->curvePt06_x, ui->curvePt07_x, ui->curvePt08_x, ui->curvePt09_x, ui->curvePt10_x, - ui->curvePt11_x, ui->curvePt12_x, ui->curvePt13_x, ui->curvePt14_x, ui->curvePt15_x, - ui->curvePt16_x, ui->curvePt17_x }; - - QPushButton * editb[16]= { - ui->curveEdit_1,ui->curveEdit_2,ui->curveEdit_3,ui->curveEdit_4, - ui->curveEdit_5,ui->curveEdit_6,ui->curveEdit_7,ui->curveEdit_8, - ui->curveEdit_9,ui->curveEdit_10,ui->curveEdit_11,ui->curveEdit_12, - ui->curveEdit_13,ui->curveEdit_14,ui->curveEdit_15,ui->curveEdit_16 }; - - QPushButton * resetb[16]= { - ui->resetCurve_1,ui->resetCurve_2,ui->resetCurve_3,ui->resetCurve_4, - ui->resetCurve_5,ui->resetCurve_6,ui->resetCurve_7,ui->resetCurve_8, - ui->resetCurve_9,ui->resetCurve_10,ui->resetCurve_11,ui->resetCurve_12, - ui->resetCurve_13,ui->resetCurve_14,ui->resetCurve_15,ui->resetCurve_16 }; - - QCheckBox * plotcb[16]= { - ui->plotCB_1,ui->plotCB_2,ui->plotCB_3,ui->plotCB_4, - ui->plotCB_5,ui->plotCB_6,ui->plotCB_7,ui->plotCB_8, - ui->plotCB_9,ui->plotCB_10,ui->plotCB_11,ui->plotCB_12, - ui->plotCB_13,ui->plotCB_14,ui->plotCB_15,ui->plotCB_16 }; - - memcpy(spny, tmpy, sizeof(spny)); - memcpy(spnx, tmpx, sizeof(spnx)); - int numcurves=GetEepromInterface()->getCapability(NumCurves); - if (numcurves==0) { - numcurves=16; - } - - if (!GetEepromInterface()->getCapability(CustomCurves)){ - ui->curvetype_CB->setDisabled(true); - int count=0; - for (int i=0; i< GetEepromInterface()->getCapability(NumCurves3); i++) { - g_model.curves[count].count=3; - g_model.curves[count].custom=false; - count++; - } - for (int i=0; i< GetEepromInterface()->getCapability(NumCurves5); i++) { - g_model.curves[count].count=5; - g_model.curves[count].custom=false; - count++; - } - for (int i=0; i< GetEepromInterface()->getCapability(NumCurves9); i++) { - g_model.curves[count].count=9; - g_model.curves[count].custom=false; - count++; - } - for (int i=count; i< 16; i++) { - editb[i]->hide(); - plotcb[i]->hide(); - resetb[i]->hide(); - } - - } else { - ui->curvetype_CB->setEnabled(true); - } - if (!GetEepromInterface()->getCapability(HasCvNames)){ - ui->cname_LE->hide(); - ui->cname_label->hide(); - } else { - ui->cname_LE->setText(g_model.curves[0].name); - } - - for (int i=numcurves; i<16;i++) { - editb[i]->hide(); - resetb[i]->hide(); - plotcb[i]->hide(); - } - - - for (int i=0; i<16;i++) { - plot_curve[i]=FALSE; - } - redrawCurve=true; - drawing=false; -#ifdef __APPLE__ - ui->curveEdit_1->setStyleSheet("color: #00007f;"); - ui->curveEdit_2->setStyleSheet("color: #007f00;"); - ui->curveEdit_3->setStyleSheet("color: #7f0000;"); - ui->curveEdit_4->setStyleSheet("color: #007f7f;"); - ui->curveEdit_5->setStyleSheet("color: #7f007f;"); - ui->curveEdit_6->setStyleSheet("color: #7f7f00;"); - ui->curveEdit_7->setStyleSheet("color: #7f7f7f;"); - ui->curveEdit_8->setStyleSheet("color: #0000ff;"); - ui->curveEdit_9->setStyleSheet("color: #007fff;"); - ui->curveEdit_10->setStyleSheet("color: #7f00ff;"); - ui->curveEdit_11->setStyleSheet("color: #00ff00;"); - ui->curveEdit_12->setStyleSheet("color: #00ff7f;"); - ui->curveEdit_13->setStyleSheet("color: #7fff00;"); - ui->curveEdit_14->setStyleSheet("color: #ff0000;"); - ui->curveEdit_15->setStyleSheet("color: #ff007f;"); - ui->curveEdit_16->setStyleSheet("color: #ff7f00;"); -#else - ui->curveEdit_1->setStyleSheet("background-color: #00007f; color: white;"); - ui->curveEdit_2->setStyleSheet("background-color: #007f00; color: white;"); - ui->curveEdit_3->setStyleSheet("background-color: #7f0000; color: white;"); - ui->curveEdit_4->setStyleSheet("background-color: #007f7f; color: white;"); - ui->curveEdit_5->setStyleSheet("background-color: #7f007f; color: white;"); - ui->curveEdit_6->setStyleSheet("background-color: #7f7f00; color: white;"); - ui->curveEdit_7->setStyleSheet("background-color: #7f7f7f; color: white;"); - ui->curveEdit_8->setStyleSheet("background-color: #0000ff; color: white;"); - ui->curveEdit_9->setStyleSheet("background-color: #007fff; color: white;"); - ui->curveEdit_10->setStyleSheet("background-color: #7f00ff; color: white;"); - ui->curveEdit_11->setStyleSheet("background-color: #00ff00; color: white;"); - ui->curveEdit_12->setStyleSheet("background-color: #00ff7f; color: white;"); - ui->curveEdit_13->setStyleSheet("background-color: #7fff00; color: white;"); - ui->curveEdit_14->setStyleSheet("background-color: #ff0000; color: white;"); - ui->curveEdit_15->setStyleSheet("background-color: #ff007f; color: white;"); - ui->curveEdit_16->setStyleSheet("background-color: #ff7f00; color: white;"); -#endif - updateCurvesTab(); - - QGraphicsScene *scene = new QGraphicsScene(ui->curvePreview); - scene->setItemIndexMethod(QGraphicsScene::NoIndex); - ui->curvePreview->setScene(scene); - currentCurve = 0; - - connect(ui->clearMixesPB,SIGNAL(pressed()),this,SLOT(clearCurves())); - - foreach(QSpinBox *sb, findChildren(QRegExp("curvePt[0-9]+"))) { - connect(sb, SIGNAL(valueChanged(int)), this, SLOT(curvePointEdited())); - } - - foreach(QPushButton *pb, findChildren(QRegExp("resetCurve_[0-9]+"))) { - connect(pb, SIGNAL(clicked()), this, SLOT(resetCurve())); - } - - foreach(QPushButton *pb, findChildren(QRegExp("curveEdit_[0-9]+"))) { - connect(pb, SIGNAL(clicked()), this, SLOT(editCurve())); - } - - foreach(QCheckBox *ChkB, findChildren(QRegExp("plotCB_[0-9]+"))) { - connect(ChkB, SIGNAL(toggled(bool)), this, SLOT(plotCurve(bool))); - } - setCurrentCurve(currentCurve); - ui->ca_coeff_SB->hide(); - ui->ca_coeff_label->hide(); - ui->ca_ymid_SB->hide(); - ui->ca_ymid_label->hide(); -} - -void ModelEdit::on_ca_ctype_CB_currentIndexChanged() -{ - int index=ui->ca_ctype_CB->currentIndex(); - switch (index) { - case 0: - ui->ca_coeff_SB->hide(); - ui->ca_coeff_label->hide(); - ui->ca_ymid_SB->hide(); - ui->ca_ymid_label->hide(); - ui->ca_ymin_SB->show(); - ui->ca_ymin_label->show(); - ui->ca_ymin_SB->setValue(-100); - ui->ca_ymax_SB->setValue(100); - break; - case 1: - ui->ca_coeff_SB->show(); - ui->ca_coeff_label->show(); - ui->ca_ymid_SB->hide(); - ui->ca_ymid_label->hide(); - ui->ca_ymin_SB->show(); - ui->ca_ymin_label->show(); - ui->ca_ymin_SB->setValue(-100); - ui->ca_ymax_SB->setValue(100); - break; - case 2: - ui->ca_coeff_SB->show(); - ui->ca_coeff_label->show(); - ui->ca_ymid_SB->hide(); - ui->ca_ymid_label->hide(); - ui->ca_ymin_SB->hide(); - ui->ca_ymin_label->hide(); - ui->ca_ymax_SB->setValue(100); - break; - case 3: - ui->ca_coeff_SB->show(); - ui->ca_coeff_label->show(); - ui->ca_ymid_SB->show(); - ui->ca_ymid_label->show(); - ui->ca_ymin_SB->hide(); - ui->ca_ymin_label->hide(); - ui->ca_ymid_SB->setValue(0); - ui->ca_ymax_SB->setValue(100); - break; - } -} - -void ModelEdit::on_ca_apply_PB_clicked() -{ - int index=ui->ca_ctype_CB->currentIndex(); - float x; - int y; - int invert=0; - float a; - if (index==0) { - a=(ui->ca_ymax_SB->value()-ui->ca_ymin_SB->value())/200.0; - int numpoints=g_model.curves[currentCurve].count; - for (int i=0; ica_ymin_SB->value()+a*x; - switch (ui->ca_side_CB->currentIndex()) { - case 0: - g_model.curves[currentCurve].points[i].y=y; - break; - case 1: - if (x>=100) { - g_model.curves[currentCurve].points[i].y=y; - } - break; - case 2: - if (x<100) { - g_model.curves[currentCurve].points[i].y=y; - } - break; - } - } - } else if (index==1) { - int numpoints=g_model.curves[currentCurve].count; - for (int i=0; ica_coeff_SB->value(); - if (a>=0) { - y=round(c9xexpou(x,a)*(ui->ca_ymax_SB->value()-ui->ca_ymin_SB->value())/100.0+ui->ca_ymin_SB->value()); - } else { - a=-a; - x=100-x; - y=round((100.0-c9xexpou(x,a))*(ui->ca_ymax_SB->value()-ui->ca_ymin_SB->value())/100.0+ui->ca_ymin_SB->value()); - } - switch (ui->ca_side_CB->currentIndex()) { - case 0: - g_model.curves[currentCurve].points[i].y=y; - break; - case 1: - if (x>=50) { - g_model.curves[currentCurve].points[i].y=y; - } - break; - case 2: - if (x<50) { - g_model.curves[currentCurve].points[i].y=y; - } - break; - } - } - } else if (index==2) { - int numpoints=g_model.curves[currentCurve].count; - for (int i=0; ica_coeff_SB->value(); - if (x<0) { - x=-x; - invert=1; - } else { - invert=0; - } - if (a>=0) { - y=round(c9xexpou(x,a)*(ui->ca_ymax_SB->value()/100.0)); - } else { - a=-a; - x=100-x; - y=round((100.0-c9xexpou(x,a))*(ui->ca_ymax_SB->value()/100.0)); - } - switch (ui->ca_side_CB->currentIndex()) { - case 0: - if (invert==1) { - g_model.curves[currentCurve].points[i].y=-y; - } else { - g_model.curves[currentCurve].points[i].y=y; - } - break; - case 1: - if (invert==0) { - g_model.curves[currentCurve].points[i].y=y; - } - break; - case 2: - if (invert==1) { - g_model.curves[currentCurve].points[i].y=-y; - } - break; - } - } - } else if (index==3) { - int numpoints=g_model.curves[currentCurve].count; - for (int i=0; i=0); - a=ui->ca_coeff_SB->value(); - if (x<0) { - x=-x; - } - if (a>=0) { - y=round(c9xexpou(x,a)*((ui->ca_ymax_SB->value()-ui->ca_ymid_SB->value())/100.0)+ui->ca_ymid_SB->value()); - } else { - a=-a; - x=100-x; - y=round((100.0-c9xexpou(x,a))*((ui->ca_ymax_SB->value()-ui->ca_ymid_SB->value())/100.0)+ui->ca_ymid_SB->value()); - } - switch (ui->ca_side_CB->currentIndex()) { - case 0: - g_model.curves[currentCurve].points[i].y=y; - break; - case 1: - if (pos) { - g_model.curves[currentCurve].points[i].y=y; - } - break; - case 2: - if (!pos) { - g_model.curves[currentCurve].points[i].y=y; - } - break; - } - } - } - updateSettings(); - setCurrentCurve(currentCurve); - drawCurve(); -} - -void ModelEdit::limitSymEdited() -{ - QCheckBox *ckb = qobject_cast(sender()); - int limitId=ckb->objectName().mid(ckb->objectName().lastIndexOf("_")+1).toInt()-1; - g_model.limitData[limitId].symetrical = (ckb->checkState() ? 1 : 0); - updateSettings(); -} - -void ModelEdit::limitNameEdited() -{ - if(limitEditLock) return; - limitEditLock=true; - QLineEdit *le = qobject_cast(sender()); - int limitId=le->objectName().mid(le->objectName().lastIndexOf("_")+1).toInt()-1; - int i=0; - if (le->text()==tr("CH %1").arg(limitId+1)) { - le->setText(""); - } - for (i=0; itext().toAscii().length(); i++) { - g_model.limitData[limitId].name[i]=le->text().toAscii().at(i); - } - if (le->text().trimmed().isEmpty()) { - le->setText(tr("CH %1").arg(limitId+1)); - } - g_model.limitData[limitId].name[i]=0; - updateSettings(); - tabMixes(); - limitEditLock=false; -} - - -void ModelEdit::limitOffsetEdited() -{ - QDoubleSpinBox *dsb = qobject_cast(sender()); - int limitId=dsb->objectName().mid(dsb->objectName().lastIndexOf("_")+1).toInt()-1; - g_model.limitData[limitId].offset = round(dsb->value()*10); - updateSettings(); -} - -void ModelEdit::limitEdited() -{ - QSpinBox *sb = qobject_cast(sender()); - int limitId=sb->objectName().mid(sb->objectName().lastIndexOf("_")+1).toInt()-1; - if (sb->objectName().indexOf("max")!=-1) { - g_model.limitData[limitId].max = sb->value(); - } - else { - g_model.limitData[limitId].min = sb->value(); - } - updateSettings(); -} - -void ModelEdit::limitInvEdited() -{ - QComboBox *cb = qobject_cast(sender()); - int limitId=cb->objectName().mid(cb->objectName().lastIndexOf("_")+1).toInt()-1; - g_model.limitData[limitId].revert = cb->currentIndex(); - updateSettings(); -} - -void ModelEdit::ppmcenterEdited() -{ - QSpinBox *sb = qobject_cast(sender()); - int limitId=sb->objectName().mid(sb->objectName().lastIndexOf("_")+1).toInt()-1; - g_model.limitData[limitId].ppmCenter = sb->value()-1500; - updateSettings(); -} - -void ModelEdit::startupSwitchEdited() -{ - if (GetEepromInterface()->getCapability(Pots)==3) { - uint8_t i= 0; - i|=(uint8_t)ui->swwarn0_CB->currentIndex(); - if (i==1) { - ui->swwarn1_ChkB->setDisabled(true) ; - ui->swwarn2_ChkB->setDisabled(true) ; - ui->swwarn3_ChkB->setDisabled(true) ; - ui->swwarn4_CB->setDisabled(true) ; - ui->swwarn5_ChkB->setDisabled(true) ; - ui->swwarn6_ChkB->setDisabled(true) ; - } else { - ui->swwarn1_ChkB->setEnabled(true) ; - ui->swwarn2_ChkB->setEnabled(true) ; - ui->swwarn3_ChkB->setEnabled(true) ; - ui->swwarn4_CB->setEnabled(true) ; - ui->swwarn5_ChkB->setEnabled(true) ; - ui->swwarn6_ChkB->setEnabled(true) ; - i|=(ui->swwarn1_ChkB->isChecked() ? 1 : 0)<<1; - i|=(ui->swwarn2_ChkB->isChecked() ? 1 : 0)<<2; - i|=(ui->swwarn3_ChkB->isChecked() ? 1 : 0)<<3; - i|=((uint8_t)ui->swwarn4_CB->currentIndex() & 0x03)<<4; - i|=(ui->swwarn5_ChkB->isChecked() ? 1 : 0)<<6; - i|=(ui->swwarn6_ChkB->isChecked() ? 1 : 0)<<7; - } - g_model.switchWarningStates=i; - } else { - uint16_t i= 0; - i|=(uint16_t)ui->tswwarn0_CB->currentIndex(); - if (i==1) { - ui->chkSA->setDisabled(true); - ui->chkSB->setDisabled(true); - ui->chkSC->setDisabled(true); - ui->chkSD->setDisabled(true); - ui->chkSE->setDisabled(true); - ui->chkSF->setDisabled(true); - ui->chkSG->setDisabled(true); - } else { - ui->chkSA->setEnabled(true); - ui->chkSB->setEnabled(true); - ui->chkSC->setEnabled(true); - ui->chkSD->setEnabled(true); - ui->chkSE->setEnabled(true); - ui->chkSF->setEnabled(true); - ui->chkSG->setEnabled(true); - i|=(((uint16_t)ui->chkSA->value())<<1); - i|=(((uint16_t)ui->chkSB->value())<<3); - i|=(((uint16_t)ui->chkSC->value())<<5); - i|=(((uint16_t)ui->chkSD->value())<<7); - i|=(((uint16_t)ui->chkSE->value())<<9); - i|=(((uint16_t)ui->chkSF->value())<<12); - i|=(((uint16_t)ui->chkSG->value())<<13); - } - g_model.switchWarningStates=i; - } - updateSettings(); -} - -void ModelEdit::setCurrentCurve(int curveId) -{ - currentCurve = curveId; - curvesLock=true; - QString ss = "QSpinBox { background-color:rgb(255, 255, 127);}"; - for (int i=0; ishow(); - spny[i]->setValue(g_model.curves[currentCurve].points[i].y); - if (!g_model.curves[currentCurve].custom || i==0 || i==(g_model.curves[currentCurve].count-1)) { - spnx[i]->hide(); - if (i==0) { - spnx[i]->setValue(-100); - } - if (i==(g_model.curves[currentCurve].count-1)) { - spnx[i]->setValue(100); - } - } else { - spnx[i]->show(); - spnx[i]->setMaximum(g_model.curves[currentCurve].points[i+1].x-1); - spnx[i]->setMinimum(g_model.curves[currentCurve].points[i-1].x+1); - spnx[i]->setValue(g_model.curves[currentCurve].points[i].x); - } - } - for (int i=g_model.curves[currentCurve].count; i<17;i++) { - spny[i]->hide(); - spnx[i]->hide(); - } - int index=0; - if (g_model.curves[currentCurve].count==3) { - index=0; - } else if (g_model.curves[currentCurve].count==5) { - index=2; - } else if (g_model.curves[currentCurve].count==9) { - index=4; - } else if (g_model.curves[currentCurve].count==17) { - index=6; - } - if (g_model.curves[currentCurve].custom) { - index++; - } - if (!GetEepromInterface()->getCapability(HasCvNames)){ - ui->cname_LE->hide(); - ui->cname_label->hide(); - } else { - ui->cname_LE->setText(g_model.curves[currentCurve].name); - } - - ui->curvetype_CB->setCurrentIndex(index); - curvesLock=false; -} - -void ModelEdit::curvePointEdited() -{ - if (curvesLock) { - return; - } - /* for (int i=1; i< g_model.curves[currentCurve].count-1; i++) { - if (g_model.curves[currentCurve].points[i].x>(100-g_model.curves[currentCurve].count+i)) { - g_model.curves[currentCurve].points[i].x=(100-g_model.curves[currentCurve].count+i); - } - if (g_model.curves[currentCurve].points[i].x<=g_model.curves[currentCurve].points[i-1].x) { - spnx[i]->setValue(spnx[i-1]->value()+1); - } - } - */ - for (int i=0; i< 17; i++) { - g_model.curves[currentCurve].points[i].x=spnx[i]->value(); - g_model.curves[currentCurve].points[i].y=spny[i]->value(); - } - if (redrawCurve) - drawCurve(); - updateSettings(); -} - - -void ModelEdit::setSwitchWidgetVisibility(int i) -{ - RawSource source=RawSource(g_model.customSw[i].val1); - switch (getCSFunctionFamily(g_model.customSw[i].func)) - { - case CS_FAMILY_VOFS: - cswitchSource1[i]->setVisible(true); - cswitchSource2[i]->setVisible(false); - cswitchValue[i]->setVisible(false); - cswitchOffset[i]->setVisible(true); - populateSourceCB(cswitchSource1[i], source, POPULATE_SOURCES | (GetEepromInterface()->getCapability(ExtraTrims) ? POPULATE_TRIMS : 0) | POPULATE_SWITCHES | POPULATE_TELEMETRY | (GetEepromInterface()->getCapability(GvarsInCS) ? POPULATE_GVARS : 0)); - cswitchOffset[i]->setDecimals(source.getDecimals(g_model)); - cswitchOffset[i]->setSingleStep(source.getStep(g_model)); - if (g_model.customSw[i].func>CS_FN_ELESS && g_model.customSw[i].funcsetMinimum(source.getStep(g_model)*-127); - cswitchOffset[i]->setMaximum(source.getStep(g_model)*127); - cswitchOffset[i]->setValue(source.getStep(g_model)*g_model.customSw[i].val2); - } else { - cswitchOffset[i]->setMinimum(source.getMin(g_model)); - cswitchOffset[i]->setMaximum(source.getMax(g_model)); - cswitchOffset[i]->setValue(source.getStep(g_model)*(g_model.customSw[i].val2+source.getRawOffset(g_model))+source.getOffset(g_model)); - } - break; - case CS_FAMILY_VBOOL: - cswitchSource1[i]->setVisible(true); - cswitchSource2[i]->setVisible(true); - cswitchValue[i]->setVisible(false); - cswitchOffset[i]->setVisible(false); - populateSwitchCB(cswitchSource1[i], RawSwitch(g_model.customSw[i].val1)); - populateSwitchCB(cswitchSource2[i], RawSwitch(g_model.customSw[i].val2)); - break; - case CS_FAMILY_VCOMP: - cswitchSource1[i]->setVisible(true); - cswitchSource2[i]->setVisible(true); - cswitchValue[i]->setVisible(false); - cswitchOffset[i]->setVisible(false); - populateSourceCB(cswitchSource1[i], RawSource(g_model.customSw[i].val1), POPULATE_SOURCES | (GetEepromInterface()->getCapability(ExtraTrims) ? POPULATE_TRIMS : 0) | POPULATE_SWITCHES | POPULATE_TELEMETRY | (GetEepromInterface()->getCapability(GvarsInCS) ? POPULATE_GVARS : 0)); - populateSourceCB(cswitchSource2[i], RawSource(g_model.customSw[i].val2), POPULATE_SOURCES | (GetEepromInterface()->getCapability(ExtraTrims) ? POPULATE_TRIMS : 0) | POPULATE_SWITCHES | POPULATE_TELEMETRY | (GetEepromInterface()->getCapability(GvarsInCS) ? POPULATE_GVARS : 0)); - break; - case CS_FAMILY_TIMERS: - cswitchSource1[i]->setVisible(false); - cswitchSource2[i]->setVisible(false); - cswitchValue[i]->setVisible(true); - cswitchOffset[i]->setVisible(true); - cswitchOffset[i]->setDecimals(1); - cswitchOffset[i]->setMinimum(0.1); - cswitchOffset[i]->setMaximum(175); - float value=ValToTim(g_model.customSw[i].val2); - cswitchOffset[i]->setSingleStep(0.1); - if (value>60) { - cswitchOffset[i]->setSingleStep(1); - } else if (value>2) { - cswitchOffset[i]->setSingleStep(0.5); - } - cswitchOffset[i]->setValue(value); - - cswitchValue[i]->setDecimals(1); - cswitchValue[i]->setMinimum(0.1); - cswitchValue[i]->setMaximum(175); - value=ValToTim(g_model.customSw[i].val1); - cswitchValue[i]->setSingleStep(0.1); - if (value>60) { - cswitchValue[i]->setSingleStep(1); - } else if (value>2) { - cswitchValue[i]->setSingleStep(0.5); - } - cswitchValue[i]->setValue(value); - break; - } - cswitchAnd[i]->setVisible(true); - populateSwitchCB(cswitchAnd[i], RawSwitch(g_model.customSw[i].andsw), POPULATE_AND_SWITCHES); - if (GetEepromInterface()->getCapability(CustomSwitchesExt)) { - cswitchDuration[i]->setVisible(true); - cswitchDuration[i]->setValue(g_model.customSw[i].duration/2.0); - cswitchDelay[i]->setVisible(true); - cswitchDelay[i]->setValue(g_model.customSw[i].delay/2.0); - } -} - -void ModelEdit::updateSwitchesTab() -{ - switchEditLock = true; - int num_csw=GetEepromInterface()->getCapability(CustomSwitches); - for (int i=0; i< num_csw; i++) { - populateCSWCB(csw[i], g_model.customSw[i].func); - setSwitchWidgetVisibility(i); - } - switchEditLock = false; -} - -void ModelEdit::tabCustomSwitches() -{ - switchEditLock = true; - QComboBox* tmpcsw[C9X_NUM_CSW] = {ui->cswitchFunc_1, ui->cswitchFunc_2, ui->cswitchFunc_3, ui->cswitchFunc_4, - ui->cswitchFunc_5, ui->cswitchFunc_6, ui->cswitchFunc_7, ui->cswitchFunc_8, - ui->cswitchFunc_9, ui->cswitchFunc_10, ui->cswitchFunc_11, ui->cswitchFunc_12, - ui->cswitchFunc_13, ui->cswitchFunc_14, ui->cswitchFunc_15, ui->cswitchFunc_16, - ui->cswitchFunc_17, ui->cswitchFunc_18, ui->cswitchFunc_19, ui->cswitchFunc_20, - ui->cswitchFunc_21, ui->cswitchFunc_22, ui->cswitchFunc_23, ui->cswitchFunc_24, - ui->cswitchFunc_25, ui->cswitchFunc_26, ui->cswitchFunc_27, ui->cswitchFunc_28, - ui->cswitchFunc_29, ui->cswitchFunc_30, ui->cswitchFunc_31, ui->cswitchFunc_32 }; - QLabel* cswlabel[C9X_NUM_CSW] = { ui->cswlabel_01, ui->cswlabel_02, ui->cswlabel_03, ui->cswlabel_04, - ui->cswlabel_05, ui->cswlabel_06, ui->cswlabel_07, ui->cswlabel_08, - ui->cswlabel_09, ui->cswlabel_10, ui->cswlabel_11, ui->cswlabel_12, - ui->cswlabel_13, ui->cswlabel_14, ui->cswlabel_15, ui->cswlabel_16, - ui->cswlabel_17, ui->cswlabel_18, ui->cswlabel_19, ui->cswlabel_20, - ui->cswlabel_21, ui->cswlabel_22, ui->cswlabel_23, ui->cswlabel_24, - ui->cswlabel_25, ui->cswlabel_26, ui->cswlabel_27, ui->cswlabel_28, - ui->cswlabel_29, ui->cswlabel_30, ui->cswlabel_31, ui->cswlabel_32}; - - memcpy(csw, tmpcsw, sizeof(csw)); - int num_csw=GetEepromInterface()->getCapability(CustomSwitches); - for(int i=0; i<16; i++) { - if (isetProperty("index",i); - cswitchSource1[i] = new QComboBox(this); - cswitchSource1[i]->setProperty("index",i); - connect(cswitchSource1[i],SIGNAL(currentIndexChanged(int)),this,SLOT(customSwitchesEdited())); - ui->gridLayout_21->addWidget(cswitchSource1[i],i+1,2); - cswitchSource1[i]->setVisible(false); - cswitchValue[i] = new QDoubleSpinBox(this); - cswitchValue[i]->setMaximum(125); - cswitchValue[i]->setMinimum(-125); - cswitchValue[i]->setAccelerated(true); - cswitchValue[i]->setDecimals(0); - cswitchValue[i]->setProperty("index",i); - connect(cswitchValue[i],SIGNAL(editingFinished()),this,SLOT(customSwitchesEdited())); - ui->gridLayout_21->addWidget(cswitchValue[i],i+1,2); - cswitchValue[i]->setVisible(false); - - cswitchSource2[i] = new QComboBox(this); - cswitchSource2[i]->setProperty("index",i); - connect(cswitchSource2[i],SIGNAL(currentIndexChanged(int)),this,SLOT(customSwitchesEdited())); - ui->gridLayout_21->addWidget(cswitchSource2[i],i+1,3); - cswitchSource2[i]->setVisible(false); - - cswitchOffset[i] = new QDoubleSpinBox(this); - cswitchOffset[i]->setProperty("index",i); - cswitchOffset[i]->setMaximum(125); - cswitchOffset[i]->setMinimum(-125); - cswitchOffset[i]->setAccelerated(true); - cswitchOffset[i]->setDecimals(0); - connect(cswitchOffset[i],SIGNAL(editingFinished()),this,SLOT(customSwitchesEdited())); - ui->gridLayout_21->addWidget(cswitchOffset[i],i+1,3); - cswitchOffset[i]->setVisible(false); - cswitchAnd[i] = new QComboBox(this); - cswitchAnd[i]->setProperty("index",i); - connect(cswitchAnd[i],SIGNAL(currentIndexChanged(int)),this,SLOT(customSwitchesEdited())); - ui->gridLayout_21->addWidget(cswitchAnd[i],i+1,4); - cswitchAnd[i]->setVisible(false); - if (GetEepromInterface()->getCapability(CustomSwitchesExt)) { - cswitchDuration[i] = new QDoubleSpinBox(this); - cswitchDuration[i]->setProperty("index",i); - cswitchDuration[i]->setSingleStep(0.5); - cswitchDuration[i]->setMaximum(50); - cswitchDuration[i]->setMinimum(0); - cswitchDuration[i]->setAccelerated(true); - cswitchDuration[i]->setDecimals(1); - connect(cswitchDuration[i],SIGNAL(editingFinished()),this,SLOT(customSwitchesEdited())); - ui->gridLayout_21->addWidget(cswitchDuration[i],i+1,5); - cswitchDuration[i]->setVisible(false); - - cswitchDelay[i] = new QDoubleSpinBox(this); - cswitchDelay[i]->setProperty("index",i); - cswitchDelay[i]->setSingleStep(0.5); - cswitchDelay[i]->setMaximum(50); - cswitchDelay[i]->setMinimum(0); - cswitchDelay[i]->setAccelerated(true); - cswitchDelay[i]->setDecimals(1); - connect(cswitchDelay[i],SIGNAL(editingFinished()),this,SLOT(customSwitchesEdited())); - ui->gridLayout_21->addWidget(cswitchDelay[i],i+1,6); - cswitchDelay[i]->setVisible(false); - } else { - ui->cswCol3->hide(); - ui->cswCol4->hide(); - } - connect(cswlabel[i],SIGNAL(customContextMenuRequested(QPoint)),this,SLOT(csw_customContextMenuRequested(QPoint))); - } else { - csw[i]->hide(); - cswlabel[i]->hide(); - } - } - if (num_csw>16) { - for(int i=16; i<32; i++) { - if (i<=num_csw) { - tmpcsw[i]->setProperty("index",i); - cswitchSource1[i] = new QComboBox(this); - cswitchSource1[i]->setProperty("index",i); - connect(cswitchSource1[i],SIGNAL(currentIndexChanged(int)),this,SLOT(customSwitchesEdited())); - ui->gridLayout_22->addWidget(cswitchSource1[i],i-15,2); - cswitchSource1[i]->setVisible(false); - cswitchValue[i] = new QDoubleSpinBox(this); - cswitchValue[i]->setProperty("index",i); - cswitchValue[i]->setMaximum(125); - cswitchValue[i]->setMinimum(-125); - cswitchValue[i]->setAccelerated(true); - cswitchValue[i]->setDecimals(0); - connect(cswitchValue[i],SIGNAL(editingFinished()),this,SLOT(customSwitchesEdited())); - ui->gridLayout_22->addWidget(cswitchValue[i],i-15,2); - cswitchValue[i]->setVisible(false); - - cswitchSource2[i] = new QComboBox(this); - cswitchSource2[i]->setProperty("index",i); - connect(cswitchSource2[i],SIGNAL(currentIndexChanged(int)),this,SLOT(customSwitchesEdited())); - ui->gridLayout_22->addWidget(cswitchSource2[i],i-15,3); - cswitchSource2[i]->setVisible(false); - - cswitchOffset[i] = new QDoubleSpinBox(this); - cswitchOffset[i]->setProperty("index",i); - cswitchOffset[i]->setMaximum(125); - cswitchOffset[i]->setMinimum(-125); - cswitchOffset[i]->setAccelerated(true); - cswitchOffset[i]->setDecimals(0); - connect(cswitchOffset[i],SIGNAL(editingFinished()),this,SLOT(customSwitchesEdited())); - ui->gridLayout_22->addWidget(cswitchOffset[i],i-15,3); - cswitchOffset[i]->setVisible(false); - cswitchAnd[i] = new QComboBox(this); - cswitchAnd[i]->setProperty("index",i); - connect(cswitchAnd[i],SIGNAL(currentIndexChanged(int)),this,SLOT(customSwitchesEdited())); - ui->gridLayout_22->addWidget(cswitchAnd[i],i-15,4); - cswitchAnd[i]->setVisible(false); - if (GetEepromInterface()->getCapability(CustomSwitchesExt)) { - cswitchDuration[i] = new QDoubleSpinBox(this); - cswitchDuration[i]->setProperty("index",i); - cswitchDuration[i]->setSingleStep(0.5); - cswitchDuration[i]->setMaximum(50); - cswitchDuration[i]->setMinimum(0); - cswitchDuration[i]->setAccelerated(true); - cswitchDuration[i]->setDecimals(1); - connect(cswitchDuration[i],SIGNAL(editingFinished()),this,SLOT(customSwitchesEdited())); - ui->gridLayout_22->addWidget(cswitchDuration[i],i-15,5); - cswitchDuration[i]->setVisible(false); - - cswitchDelay[i] = new QDoubleSpinBox(this); - cswitchDelay[i]->setProperty("index",i); - cswitchDelay[i]->setSingleStep(0.5); - cswitchDelay[i]->setMaximum(50); - cswitchDelay[i]->setMinimum(0); - cswitchDelay[i]->setAccelerated(true); - cswitchDelay[i]->setDecimals(1); - connect(cswitchDelay[i],SIGNAL(editingFinished()),this,SLOT(customSwitchesEdited())); - ui->gridLayout_22->addWidget(cswitchDelay[i],i-15,6); - cswitchDelay[i]->setVisible(false); - } else { - ui->cswCol3_2->hide(); - ui->cswCol4_2->hide(); - } - connect(cswlabel[i],SIGNAL(customContextMenuRequested(QPoint)),this,SLOT(csw_customContextMenuRequested(QPoint))); - } else { - csw[i]->hide(); - cswlabel[i]->hide(); - } - } - } else { - ui->cswitchGB2->hide(); - } - updateSwitchesTab(); - //connects - for (int i=0; igetCapability(CustomFunctions); - - QStringList paramarmList; - if (!GetEepromInterface()->getCapability(VoicesAsNumbers)) { - for (int i=0; igetCapability(VoicesMaxLength)+4; - if (qd.exists()) { - QStringList filters; - filters << "*.wav" << "*.WAV"; - foreach ( QString file, qd.entryList(filters, QDir::Files) ) { - QFileInfo fi(file); - QString temp=fi.completeBaseName(); - if (!paramarmList.contains(temp) && temp.length()<=vml) { - paramarmList.append(temp); - } - } - } - } - - for (int i=0; i= 16 ? ui->fswitchlayout2 : ui->fswitchlayout1; - - fswLabel[i] = new QLabel(this); - fswLabel[i]->setFrameStyle(QFrame::Panel | QFrame::Raised); - fswLabel[i]->setSizePolicy(QSizePolicy::MinimumExpanding,QSizePolicy::Fixed); - fswLabel[i]->setContextMenuPolicy(Qt::CustomContextMenu); - fswLabel[i]->setMouseTracking(true); - fswLabel[i]->setProperty("FunctionId", i+1); - fswLabel[i]->setText(tr("CF%1").arg(i+1)); - layout->addWidget(fswLabel[i],(i%16)+1,0); - connect(fswLabel[i],SIGNAL(customContextMenuRequested(QPoint)),this,SLOT(fsw_customContextMenuRequested(QPoint))); - - fswtchSwtch[i] = new QComboBox(this); - fswtchSwtch[i]->setProperty("functionIndex", i); - connect(fswtchSwtch[i],SIGNAL(currentIndexChanged(int)),this,SLOT(customFunctionEdited())); - layout->addWidget(fswtchSwtch[i],(i%16)+1,1); - populateSwitchCB(fswtchSwtch[i], g_model.funcSw[i].swtch, POPULATE_MSWITCHES|POPULATE_ONOFF); - - fswtchFunc[i] = new QComboBox(this); - fswtchFunc[i]->setProperty("functionIndex", i); - connect(fswtchFunc[i],SIGNAL(currentIndexChanged(int)),this,SLOT(customFunctionEdited())); - layout->addWidget(fswtchFunc[i],(i%16)+1,2); - populateFuncCB(fswtchFunc[i], g_model.funcSw[i].func); - - QHBoxLayout *paramLayout = new QHBoxLayout(); - layout->addLayout(paramLayout, (i%16)+1, 3); - - fswtchGVmode[i] = new QComboBox(this); - fswtchGVmode[i]->setProperty("functionIndex", i); - connect(fswtchGVmode[i],SIGNAL(currentIndexChanged(int)),this,SLOT(customFunctionEdited())); - paramLayout->addWidget(fswtchGVmode[i]); - populateGVmodeCB(fswtchGVmode[i], g_model.funcSw[i].adjustMode); - - fswtchParamGV[i] = new QCheckBox(this); - fswtchParamGV[i]->setProperty("functionIndex", i); - fswtchParamGV[i]->setText("GV"); - fswtchParamGV[i]->setSizePolicy(QSizePolicy::Minimum,QSizePolicy::Minimum); - connect(fswtchParamGV[i],SIGNAL(stateChanged(int)),this,SLOT(customFunctionEdited())); - paramLayout->addWidget(fswtchParamGV[i]); - - fswtchParam[i] = new QDoubleSpinBox(this); - fswtchParam[i]->setProperty("functionIndex", i); - fswtchParam[i]->setAccelerated(true); - fswtchParam[i]->setDecimals(0); - connect(fswtchParam[i],SIGNAL(editingFinished()),this,SLOT(customFunctionEdited())); - paramLayout->addWidget(fswtchParam[i]); - - fswtchParamT[i] = new QComboBox(this); - fswtchParamT[i]->setProperty("functionIndex", i); - paramLayout->addWidget(fswtchParamT[i]); - populateFuncParamCB(fswtchParamT[i], func, g_model.funcSw[i].param, g_model.funcSw[i].adjustMode); - connect(fswtchParamT[i],SIGNAL(currentIndexChanged(int)),this,SLOT(customFunctionEdited())); - - fswtchParamArmT[i] = new QComboBox(this); - fswtchParamArmT[i]->setProperty("functionIndex", i); - populateFuncParamArmTCB(fswtchParamArmT[i],&g_model, g_model.funcSw[i].paramarm, paramarmList); - fswtchParamArmT[i]->setEditable(true); - paramLayout->addWidget(fswtchParamArmT[i]); - - connect(fswtchParamArmT[i],SIGNAL(currentIndexChanged(int)),this,SLOT(customFunctionEdited())); - connect(fswtchParamArmT[i],SIGNAL(editTextChanged ( const QString)),this,SLOT(customFunctionEdited())); - -#ifdef PHONON - playBT[i] = new QPushButton(this); - playBT[i]->setObjectName(QString("play_%1").arg(i)); - playBT[i]->setIcon(QIcon(":/images/play.png")); - paramLayout->addWidget(playBT[i]); - connect(playBT[i],SIGNAL(pressed()),this,SLOT(playMusic())); -#endif - - QHBoxLayout *repeatLayout = new QHBoxLayout(); - layout->addLayout(repeatLayout, (i%16)+1, 4); - - fswtchRepeat[i] = new QComboBox(this); - fswtchRepeat[i]->setProperty("functionIndex", i); - connect(fswtchRepeat[i],SIGNAL(currentIndexChanged(int)),this,SLOT(customFunctionEdited())); - repeatLayout->addWidget(fswtchRepeat[i],(i%16)+1); - populateRepeatCB(fswtchRepeat[i], g_model.funcSw[i].repeatParam); - - fswtchEnable[i] = new QCheckBox(this); - fswtchEnable[i]->setProperty("functionIndex", i); - fswtchEnable[i]->setText(tr("ON")); - repeatLayout->addWidget(fswtchEnable[i],(i%16)+1); - fswtchEnable[i]->setChecked(g_model.funcSw[i].enabled); - connect(fswtchEnable[i],SIGNAL(stateChanged(int)),this,SLOT(customFunctionEdited())); - - refreshCustomFunction(i); - } - - if (num_fsw <= 16) { - ui->FSwitchGB2->hide(); - } - - switchEditLock = false; -} - -void ModelEdit::tabSafetySwitches() -{ - for(int i=0; igrid_tabSafetySwitches->addWidget(safetySwitchSwtch[i],i+1,1); - connect(safetySwitchSwtch[i],SIGNAL(currentIndexChanged(int)),this,SLOT(safetySwitchesEdited())); - - safetySwitchValue[i] = new QSpinBox(this); - safetySwitchValue[i]->setAlignment(Qt::AlignRight | Qt::AlignVCenter); - safetySwitchValue[i]->setMaximum(125); - safetySwitchValue[i]->setMinimum(-125); - safetySwitchValue[i]->setAccelerated(true); - safetySwitchValue[i]->setValue(g_model.safetySw[i].val); - ui->grid_tabSafetySwitches->addWidget(safetySwitchValue[i],i+1,2); - connect(safetySwitchValue[i],SIGNAL(editingFinished()),this,SLOT(safetySwitchesEdited())); - } -} - -void ModelEdit::customFieldEdited() -{ - if (telemetryLock) return; - int cols=GetEepromInterface()->getCapability(TelemetryColsCSFields); - if (cols==0) cols=2; - - for (int i=0; igetCapability(TelemetryCSFields); i++) { - int screen=i/(4*cols); - int r=((i%(4*cols))%4); - int c=((i%(4*cols))/4); - if (g_model.frsky.screens[screen].type==0) { - g_model.frsky.screens[screen].body.lines[r].source[c]=csf[i]->currentIndex(); - } - } - updateSettings(); -} - -void ModelEdit::customSwitchesEdited() -{ - if(switchEditLock) return; - - switchEditLock = true; - int i=-1; - QString indextext=sender()->property("index").toString(); - if (!indextext.isEmpty()) { - i=indextext.toInt(); - } else { - // should not happen - switchEditLock = false; - return; - } - bool chAr; - float value, step; - int newval; - chAr = (getCSFunctionFamily(g_model.customSw[i].func) != getCSFunctionFamily(csw[i]->itemData(csw[i]->currentIndex()).toInt())); - g_model.customSw[i].func = csw[i]->itemData(csw[i]->currentIndex()).toInt(); - if(chAr) { - if (getCSFunctionFamily(g_model.customSw[i].func)==CS_FAMILY_TIMERS) { - g_model.customSw[i].val1 = -119; - g_model.customSw[i].val2 = -119; - } else { - g_model.customSw[i].val1 = 0; - g_model.customSw[i].val2 = 0; - } - g_model.customSw[i].andsw = 0; - setSwitchWidgetVisibility(i); - } - if (GetEepromInterface()->getCapability(CustomSwitchesExt)) { - g_model.customSw[i].duration= (uint8_t)round(cswitchDuration[i]->value()*2); - g_model.customSw[i].delay= (uint8_t)round(cswitchDelay[i]->value()*2); - } - RawSource source; - switch (getCSFunctionFamily(g_model.customSw[i].func)) - { - case (CS_FAMILY_VOFS): - if (g_model.customSw[i].val1 != cswitchSource1[i]->itemData(cswitchSource1[i]->currentIndex()).toInt()) { - source=RawSource(g_model.customSw[i].val1); - g_model.customSw[i].val1 = cswitchSource1[i]->itemData(cswitchSource1[i]->currentIndex()).toInt(); - RawSource newSource = RawSource(g_model.customSw[i].val1); - if (newSource.type == SOURCE_TYPE_TELEMETRY) { - if (g_model.customSw[i].func>CS_FN_ELESS && g_model.customSw[i].funcCS_FN_ELESS && g_model.customSw[i].funcvalue()/source.getStep(g_model)); - } else { - g_model.customSw[i].val2 = ((cswitchOffset[i]->value()-source.getOffset(g_model))/source.getStep(g_model))-source.getRawOffset(g_model); - } - } - setSwitchWidgetVisibility(i); - } else { - source=RawSource(g_model.customSw[i].val1); - if (g_model.customSw[i].func>CS_FN_ELESS && g_model.customSw[i].funcvalue()/source.getStep(g_model)); - cswitchOffset[i]->setValue(g_model.customSw[i].val2*source.getStep(g_model)); - } else { - g_model.customSw[i].val2 = ((cswitchOffset[i]->value()-source.getOffset(g_model))/source.getStep(g_model))-source.getRawOffset(g_model); - cswitchOffset[i]->setValue((g_model.customSw[i].val2 +source.getRawOffset(g_model))*source.getStep(g_model)+source.getOffset(g_model)); - } - } - break; - case (CS_FAMILY_TIMERS): { - value=cswitchOffset[i]->value(); - newval=TimToVal(value); - if (newval>g_model.customSw[i].val2) { - if (value >=60) { - value=round(value); - step=1; - } else if (value>=2) { - value=(round(value*2.0)/2); - step=0.5; - } else { - step=0.1; - } - } else { - if (value <=2) { - step=0.1; - } else if (value<=60) { - value=(round(value*2.0)/2); - step=0.5; - } else { - value=round(value); - step=1; - } - } - g_model.customSw[i].val2=TimToVal(value); - value=ValToTim(g_model.customSw[i].val2); - cswitchOffset[i]->setValue(value); - cswitchOffset[i]->setSingleStep(step); - - value=cswitchValue[i]->value(); - newval=TimToVal(value); - if (newval>g_model.customSw[i].val1) { - if (value >=60) { - value=round(value); - step=1; - } else if (value>=2) { - value=(round(value*2.0)/2); - step=0.5; - } else { - step=0.1; - } - } else { - if (value <=2) { - step=0.1; - } else if (value<=60) { - value=(round(value*2.0)/2); - step=0.5; - } else { - value=round(value); - step=1; - } - } - g_model.customSw[i].val1=TimToVal(value); - value=ValToTim(g_model.customSw[i].val1); - cswitchValue[i]->setValue(value); - cswitchValue[i]->setSingleStep(step); - break; - } - case (CS_FAMILY_VBOOL): - case (CS_FAMILY_VCOMP): - g_model.customSw[i].val1 = cswitchSource1[i]->itemData(cswitchSource1[i]->currentIndex()).toInt(); - g_model.customSw[i].val2 = cswitchSource2[i]->itemData(cswitchSource2[i]->currentIndex()).toInt(); - break; - } - g_model.customSw[i].andsw = cswitchAnd[i]->itemData(cswitchAnd[i]->currentIndex()).toInt(); - updateSettings(); - switchEditLock = false; -} - -#ifdef PHONON - -void ModelEdit::mediaPlayer_state(Phonon::State newState, Phonon::State oldState) -{ - if (phononLock) - return; - phononLock=true; - if ((newState==Phonon::StoppedState || newState==Phonon::PausedState) && oldState==Phonon::PlayingState) { - clickObject->stop(); - clickObject->clearQueue(); - clickObject->clear(); - for (int i=0; igetCapability(CustomFunctions); i++) { - playBT[i]->setObjectName(QString("play_%1").arg(i)); - playBT[i]->setIcon(QIcon(":/images/play.png")); - } - } - if (newState==Phonon::ErrorState) { - clickObject->stop(); - clickObject->clearQueue(); - clickObject->clear(); - for (int i=0; igetCapability(CustomFunctions); i++) { - playBT[i]->setObjectName(QString("play_%1").arg(i)); - playBT[i]->setIcon(QIcon(":/images/play.png")); - } - } - - phononLock=false; -} -#endif - -void ModelEdit::playMusic() -{ - QPushButton *playButton = qobject_cast(sender()); - int index=playButton->objectName().mid(5,2).toInt(); - QString function=playButton->objectName().left(4); - QSettings settings("companion9x", "companion9x"); - QString path=settings.value("sdPath", ".").toString(); - QDir qd(path); - QString track; - if (qd.exists()) { - if (GetEepromInterface()->getCapability(VoicesAsNumbers)) { - track=path+QString("/%1.wav").arg(int(fswtchParam[index]->value()),4,10,(const QChar)'0'); - } else { - path.append("/SOUNDS/"); - QString lang=radioData.generalSettings.ttsLanguage; - if (lang.isEmpty()) - lang="en"; - path.append(lang); - if (fswtchParamArmT[index]->currentText()!="----") { - track=path+"/"+fswtchParamArmT[index]->currentText()+".wav"; - } - } - QFile file(track); - if (!file.exists()) { - QMessageBox::critical(this, tr("Error"), tr("Unable to find sound file %1!").arg(track)); - track.clear(); - } -#ifdef PHONON - if (function=="play" && !track.isEmpty()) { - clickObject->clear(); - clickObject->setCurrentSource(Phonon::MediaSource(track)); - clickObject->play(); - playBT[index]->setObjectName(QString("stop_%1").arg(index)); - playBT[index]->setIcon(QIcon(":/images/stop.png")); - } else { - clickObject->stop(); - clickObject->clear(); - playBT[index]->setObjectName(QString("play_%1").arg(index)); - playBT[index]->setIcon(QIcon(":/images/play.png")); - } -#endif - } -} - -#define CUSTOM_FUNCTION_NUMERIC_PARAM (1<<0) -#define CUSTOM_FUNCTION_SOURCE_PARAM (1<<1) -#define CUSTOM_FUNCTION_FILE_PARAM (1<<2) -#define CUSTOM_FUNCTION_GV_MODE (1<<3) -#define CUSTOM_FUNCTION_GV_TOOGLE (1<<4) -#define CUSTOM_FUNCTION_ENABLE (1<<5) -#define CUSTOM_FUNCTION_REPEAT (1<<6) -#define CUSTOM_FUNCTION_PLAY (1<<7) - -void ModelEdit::customFunctionEdited() -{ - if (switchEditLock) return; - switchEditLock = true; - - int index = sender()->property("functionIndex").toInt(); - refreshCustomFunction(index, true); - - updateSettings(); - switchEditLock = false; -} - -void ModelEdit::refreshCustomFunction(int i, bool modified) -{ - unsigned int widgetsMask = 0; - if (modified) { - g_model.funcSw[i].swtch = RawSwitch(fswtchSwtch[i]->itemData(fswtchSwtch[i]->currentIndex()).toInt()); - g_model.funcSw[i].func = (AssignFunc)fswtchFunc[i]->currentIndex(); - g_model.funcSw[i].enabled =fswtchEnable[i]->isChecked(); - g_model.funcSw[i].repeatParam = (AssignFunc)fswtchRepeat[i]->currentIndex(); - g_model.funcSw[i].adjustMode = (AssignFunc)fswtchGVmode[i]->currentIndex(); - } - - int index = fswtchFunc[i]->currentIndex(); - - if (index>=FuncSafetyCh1 && index<=FuncSafetyCh16) { - fswtchParam[i]->setDecimals(0); - fswtchParam[i]->setSingleStep(1); - fswtchParam[i]->setMinimum(-125); - fswtchParam[i]->setMaximum(125); - if (modified) { - g_model.funcSw[i].param = fswtchParam[i]->value(); - } - fswtchParam[i]->setValue(g_model.funcSw[i].param); - widgetsMask |= CUSTOM_FUNCTION_NUMERIC_PARAM + CUSTOM_FUNCTION_ENABLE; - } else if (index==FuncLogs) { - fswtchParam[i]->setDecimals(1); - fswtchParam[i]->setMinimum(0); - fswtchParam[i]->setMaximum(25.5); - fswtchParam[i]->setSingleStep(0.1); - if (modified) g_model.funcSw[i].param = fswtchParam[i]->value()*10.0; - fswtchParam[i]->setValue(g_model.funcSw[i].param/10.0); - widgetsMask |= CUSTOM_FUNCTION_NUMERIC_PARAM + CUSTOM_FUNCTION_ENABLE; - } else if (index>=FuncAdjustGV1 && index<=FuncAdjustGV5) { - if (modified) g_model.funcSw[i].adjustMode = fswtchGVmode[i]->currentIndex(); - widgetsMask |= CUSTOM_FUNCTION_GV_MODE + CUSTOM_FUNCTION_ENABLE; - if (g_model.funcSw[i].adjustMode==0) { - if (modified) g_model.funcSw[i].param = fswtchParam[i]->value(); - fswtchParam[i]->setDecimals(0); - fswtchParam[i]->setSingleStep(1); - fswtchParam[i]->setMinimum(-125); - fswtchParam[i]->setMaximum(125); - fswtchParam[i]->setValue(g_model.funcSw[i].param); - widgetsMask |= CUSTOM_FUNCTION_NUMERIC_PARAM; - } else { - if (modified) g_model.funcSw[i].param = fswtchParamT[i]->itemData(fswtchParamT[i]->currentIndex()).toInt(); - populateFuncParamCB(fswtchParamT[i], index, g_model.funcSw[i].param, g_model.funcSw[i].adjustMode); - widgetsMask |= CUSTOM_FUNCTION_SOURCE_PARAM; - } - } else if (index==FuncReset) { - if (modified) g_model.funcSw[i].param = (uint8_t)fswtchParamT[i]->currentIndex(); - populateFuncParamCB(fswtchParamT[i], index, g_model.funcSw[i].param); - widgetsMask |= CUSTOM_FUNCTION_SOURCE_PARAM; - } else if (index==FuncVolume) { - if (modified) g_model.funcSw[i].param = fswtchParamT[i]->itemData(fswtchParamT[i]->currentIndex()).toInt(); - populateFuncParamCB(fswtchParamT[i], index, g_model.funcSw[i].param); - widgetsMask |= CUSTOM_FUNCTION_SOURCE_PARAM + CUSTOM_FUNCTION_ENABLE; - } else if (index==FuncPlaySound || index==FuncPlayHaptic || index==FuncPlayValue || index==FuncPlayPrompt || index==FuncPlayBoth || index==FuncBackgroundMusic) { - if (modified) g_model.funcSw[i].repeatParam = fswtchRepeat[i]->itemData(fswtchRepeat[i]->currentIndex()).toInt(); - if (index != FuncBackgroundMusic) { - if (GetEepromInterface()->getCapability(HasFuncRepeat)) { - widgetsMask |= CUSTOM_FUNCTION_REPEAT; - } - } - if (index==FuncPlayValue) { - if (modified) g_model.funcSw[i].param = fswtchParamT[i]->itemData(fswtchParamT[i]->currentIndex()).toInt(); - populateFuncParamCB(fswtchParamT[i], index, g_model.funcSw[i].param); - widgetsMask |= CUSTOM_FUNCTION_SOURCE_PARAM + CUSTOM_FUNCTION_REPEAT; - } else if (index==FuncPlayPrompt || index==FuncPlayBoth) { - if (GetEepromInterface()->getCapability(VoicesAsNumbers)) { - fswtchParam[i]->setDecimals(0); - fswtchParam[i]->setSingleStep(1); - fswtchParam[i]->setMinimum(0); - if (index==FuncPlayPrompt) { - widgetsMask |= CUSTOM_FUNCTION_NUMERIC_PARAM + CUSTOM_FUNCTION_REPEAT + CUSTOM_FUNCTION_GV_TOOGLE; - } else { - widgetsMask |= CUSTOM_FUNCTION_NUMERIC_PARAM + CUSTOM_FUNCTION_REPEAT; - fswtchParamGV[i]->setChecked(false); - } - fswtchParam[i]->setMaximum(index==FuncPlayBoth ? 254 : 255); - if (modified) { - if (fswtchParamGV[i]->isChecked()) { - fswtchParam[i]->setMinimum(1); - g_model.funcSw[i].param = std::min(fswtchParam[i]->value(),5.0)+(fswtchParamGV[i]->isChecked() ? 250 : 0); - } else { - g_model.funcSw[i].param = fswtchParam[i]->value(); - } - } - if (g_model.funcSw[i].param>250 && (index!=FuncPlayBoth)) { - fswtchParamGV[i]->setChecked(true); - fswtchParam[i]->setValue(g_model.funcSw[i].param-250); - fswtchParam[i]->setMaximum(5); - } else { - fswtchParamGV[i]->setChecked(false); - fswtchParam[i]->setValue(g_model.funcSw[i].param); - } - if (g_model.funcSw[i].param < 251) - widgetsMask |= CUSTOM_FUNCTION_PLAY; - } else { - widgetsMask |= CUSTOM_FUNCTION_FILE_PARAM; - if (modified) { - memset(g_model.funcSw[i].paramarm, 0, sizeof(g_model.funcSw[i].paramarm)); - int vml=GetEepromInterface()->getCapability(VoicesMaxLength); - if (fswtchParamArmT[i]->currentText() != "----") { - widgetsMask |= CUSTOM_FUNCTION_PLAY; - for (int j=0; jcurrentText().length(),vml); j++) { - g_model.funcSw[i].paramarm[j] = fswtchParamArmT[i]->currentText().toAscii().at(j); - } - } - } - } - } else if (index==FuncBackgroundMusic) { - widgetsMask |= CUSTOM_FUNCTION_FILE_PARAM; - if (modified) { - memset(g_model.funcSw[i].paramarm, 0, sizeof(g_model.funcSw[i].paramarm)); - int vml=GetEepromInterface()->getCapability(VoicesMaxLength); - if (fswtchParamArmT[i]->currentText() != "----") { - widgetsMask |= CUSTOM_FUNCTION_PLAY; - for (int j=0; jcurrentText().length(),vml); j++) { - g_model.funcSw[i].paramarm[j] = fswtchParamArmT[i]->currentText().toAscii().at(j); - } - } - } - } else if (index==FuncPlaySound) { - if (modified) g_model.funcSw[i].param = (uint8_t)fswtchParamT[i]->currentIndex(); - populateFuncParamCB(fswtchParamT[i], index, g_model.funcSw[i].param); - widgetsMask |= CUSTOM_FUNCTION_SOURCE_PARAM; - } else if (index==FuncPlayHaptic) { - if (modified) g_model.funcSw[i].param = (uint8_t)fswtchParamT[i]->currentIndex(); - populateFuncParamCB(fswtchParamT[i], index, g_model.funcSw[i].param); - widgetsMask |= CUSTOM_FUNCTION_SOURCE_PARAM; - } - } else if (g_model.funcSw[i].swtch.type!=SWITCH_TYPE_NONE) { - if (modified) g_model.funcSw[i].param = fswtchParam[i]->value(); - fswtchParam[i]->setDecimals(0); - fswtchParam[i]->setSingleStep(1); - fswtchParam[i]->setValue(g_model.funcSw[i].param); - if (index<=FuncInstantTrim) { - widgetsMask |= CUSTOM_FUNCTION_ENABLE; - } - } - - fswtchParam[i]->setVisible(widgetsMask & CUSTOM_FUNCTION_NUMERIC_PARAM); - fswtchParamGV[i]->setVisible(widgetsMask & CUSTOM_FUNCTION_GV_TOOGLE); - fswtchParamT[i]->setVisible(widgetsMask & CUSTOM_FUNCTION_SOURCE_PARAM); - fswtchParamArmT[i]->setVisible(widgetsMask & CUSTOM_FUNCTION_FILE_PARAM); - fswtchEnable[i]->setVisible(widgetsMask & CUSTOM_FUNCTION_ENABLE); - if (!(widgetsMask & CUSTOM_FUNCTION_ENABLE)) fswtchEnable[i]->setChecked(false); - fswtchRepeat[i]->setVisible(widgetsMask & CUSTOM_FUNCTION_REPEAT); - fswtchGVmode[i]->setVisible(widgetsMask & CUSTOM_FUNCTION_GV_MODE); -#ifdef PHONON - playBT[i]->setVisible(widgetsMask & CUSTOM_FUNCTION_PLAY); -#endif -} - -void ModelEdit::tabTelemetry() -{ - QSettings settings("companion9x", "companion9x"); - QString firmware_id = settings.value("firmware", default_firmware_variant.id).toString(); - float a1ratio; - float a2ratio; - - QGroupBox* barsgb[3] = { ui->CS1Bars, ui->CS2Bars, ui->CS3Bars }; - QGroupBox* numsgb[3] = { ui->CS1Nums, ui->CS2Nums, ui->CS3Nums }; - - QComboBox* barscb[12] = { ui->telBarCS1B1_CB, ui->telBarCS1B2_CB, ui->telBarCS1B3_CB, ui->telBarCS1B4_CB, - ui->telBarCS2B1_CB, ui->telBarCS2B2_CB, ui->telBarCS2B3_CB, ui->telBarCS2B4_CB, - ui->telBarCS3B1_CB, ui->telBarCS3B2_CB, ui->telBarCS3B3_CB, ui->telBarCS3B4_CB}; - QDoubleSpinBox* minsb[12] = { ui->telMinCS1SB1, ui->telMinCS1SB2, ui->telMinCS1SB3, ui->telMinCS1SB4, - ui->telMinCS2SB1, ui->telMinCS2SB2, ui->telMinCS2SB3, ui->telMinCS2SB4, - ui->telMinCS3SB1, ui->telMinCS3SB2, ui->telMinCS3SB3, ui->telMinCS3SB4}; - QDoubleSpinBox* maxsb[12] = { ui->telMaxCS1SB1, ui->telMaxCS1SB2, ui->telMaxCS1SB3, ui->telMaxCS1SB4, - ui->telMaxCS2SB1, ui->telMaxCS2SB2, ui->telMaxCS2SB3, ui->telMaxCS2SB4, - ui->telMaxCS3SB1, ui->telMaxCS3SB2, ui->telMaxCS3SB3, ui->telMaxCS3SB4}; - QComboBox* tmp[36] = { ui->telemetryCS1F1_CB, ui->telemetryCS1F2_CB, ui->telemetryCS1F3_CB, ui->telemetryCS1F4_CB, ui->telemetryCS1F5_CB, ui->telemetryCS1F6_CB, ui->telemetryCS1F7_CB, ui->telemetryCS1F8_CB, ui->telemetryCS1F9_CB, ui->telemetryCS1F10_CB, ui->telemetryCS1F11_CB, ui->telemetryCS1F12_CB, - ui->telemetryCS2F1_CB, ui->telemetryCS2F2_CB, ui->telemetryCS2F3_CB, ui->telemetryCS2F4_CB, ui->telemetryCS2F5_CB, ui->telemetryCS2F6_CB, ui->telemetryCS2F7_CB, ui->telemetryCS2F8_CB, ui->telemetryCS2F9_CB, ui->telemetryCS2F10_CB, ui->telemetryCS2F11_CB, ui->telemetryCS2F12_CB, - ui->telemetryCS3F1_CB, ui->telemetryCS3F2_CB, ui->telemetryCS3F3_CB, ui->telemetryCS3F4_CB, ui->telemetryCS3F5_CB, ui->telemetryCS3F6_CB, ui->telemetryCS3F7_CB, ui->telemetryCS3F8_CB, ui->telemetryCS3F9_CB, ui->telemetryCS3F10_CB, ui->telemetryCS3F11_CB, ui->telemetryCS3F12_CB}; - - memcpy(barsGB, barsgb, sizeof(barsGB)); - memcpy(numsGB, numsgb, sizeof(numsGB)); - memcpy(barsCB, barscb, sizeof(barsCB)); - memcpy(maxSB, maxsb, sizeof(maxSB)); - memcpy(minSB, minsb, sizeof(minSB)); - memcpy(csf, tmp, sizeof(csf)); - - telemetryLock=true; - ui->telemetryCSType1->setCurrentIndex(g_model.frsky.screens[0].type); - ui->telemetryCSType2->setCurrentIndex(g_model.frsky.screens[1].type); - ui->telemetryCSType3->setCurrentIndex(g_model.frsky.screens[2].type); - - for (int i=0; i<3; i++) { - bool isNum = (g_model.frsky.screens[i].type==0); - barsGB[i]->setVisible(!isNum); - numsGB[i]->setVisible(isNum); - } - - connect(ui->telemetryCSType1,SIGNAL(currentIndexChanged(int)),this,SLOT(ScreenTypeCBcurrentIndexChanged(int))); - connect(ui->telemetryCSType2,SIGNAL(currentIndexChanged(int)),this,SLOT(ScreenTypeCBcurrentIndexChanged(int))); - connect(ui->telemetryCSType3,SIGNAL(currentIndexChanged(int)),this,SLOT(ScreenTypeCBcurrentIndexChanged(int))); - - //frsky Settings - if (!GetEepromInterface()->getCapability(TelemetryRSSIModel) ) { - ui->RSSIGB->hide(); - } - ui->rssiAlarm1SB->setValue(g_model.frsky.rssiAlarms[0].value); - ui->rssiAlarm2SB->setValue(g_model.frsky.rssiAlarms[1].value); - ui->rssiAlarm1CB->setCurrentIndex(g_model.frsky.rssiAlarms[0].level); - ui->rssiAlarm2CB->setCurrentIndex(g_model.frsky.rssiAlarms[1].level); - - if (!GetEepromInterface()->getCapability(HasAltitudeSel)) { - ui->AltitudeGPS_ChkB->hide(); - } else { - ui->AltitudeGPS_ChkB->setChecked(g_model.frsky.FrSkyGpsAlt); - } - int varioCap=GetEepromInterface()->getCapability(HasVario); - // if (IS_TARANIS(GetEepromInterface()->getBoard())) { - if (false) { - ui->AltitudeToolbar_ChkB->setChecked(g_model.frsky.altitudeDisplayed); - } else { - ui->AltitudeToolbar_ChkB->hide(); - } - if (!varioCap) { - ui->varioLimitMax_DSB->hide(); - ui->varioLimitMinOff_ChkB->hide(); - ui->varioLimitMin_DSB->hide(); - ui->varioLimitCenterMin_DSB->hide(); - ui->varioLimitCenterMax_DSB->hide(); - ui->varioLimit_label->hide(); - ui->VarioLabel_1->hide(); - ui->VarioLabel_2->hide(); - ui->VarioLabel_3->hide(); - ui->VarioLabel_4->hide(); - ui->varioSourceCB->hide(); - ui->varioSource_label->hide(); - } else { - if (!GetEepromInterface()->getCapability(HasVarioSink)) { - ui->varioLimitMinOff_ChkB->hide(); - ui->varioLimitMin_DSB->hide(); - ui->varioLimitCenterMin_DSB->hide(); - ui->VarioLabel_1->hide(); - ui->VarioLabel_2->hide(); - } - ui->varioLimitMin_DSB->setValue(g_model.frsky.varioMin-10); - ui->varioLimitMax_DSB->setValue(g_model.frsky.varioMax+10); - ui->varioLimitCenterMax_DSB->setValue((g_model.frsky.varioCenterMax/10.0)+0.5); - ui->varioSourceCB->setCurrentIndex(g_model.frsky.varioSource); - if (g_model.frsky.varioCenterMin==-16) { - ui->varioLimitMinOff_ChkB->setChecked(true); - ui->varioLimitCenterMin_DSB->setValue(-2.0); - ui->varioLimitCenterMin_DSB->setDisabled(true); - } else { - ui->varioLimitMinOff_ChkB->setChecked(false); - ui->varioLimitCenterMin_DSB->setValue((g_model.frsky.varioCenterMin/10.0)-0.5); - } - int mask=1; - for (int i=0; i< ui->varioSourceCB->count(); i++) { - if (!(varioCap&mask)) { - QModelIndex index = ui->varioSourceCB->model()->index(i, 0); - QVariant v(0); - ui->varioSourceCB->model()->setData(index, v, Qt::UserRole - 1); - } - mask <<=1; - } - } - - if (!(GetEepromInterface()->getCapability(HasAltitudeSel)||GetEepromInterface()->getCapability(HasVario))) { - ui->altimetryGB->hide(); - } - if (GetEepromInterface()->getCapability(NoTelemetryProtocol)) { - g_model.frsky.usrProto=1; - ui->frskyProtoCB->setDisabled(true); - } else { - ui->frskyProtoCB->setEnabled(true); - } - - if (GetEepromInterface()->getCapability(TelemetryCSFields)==0) { - ui->groupBox_5->hide(); - } else { - if (GetEepromInterface()->getCapability(TelemetryCSFields)==8) { - ui->tabCsView->removeTab(1); - ui->tabCsView->removeTab(2); - } - if (GetEepromInterface()->getCapability(TelemetryCSFields)==16) { - ui->tabCsView->removeTab(2); - } - int cols=GetEepromInterface()->getCapability(TelemetryColsCSFields); - if (cols==0) cols=2; - for (int screen=0; screen<(GetEepromInterface()->getCapability(TelemetryCSFields)/(4*cols)); screen++) { - for (int c=0; chide(); - } - } - } - } - - if (!GetEepromInterface()->getCapability(TelemetryUnits)) { - ui->frskyUnitsCB->setDisabled(true); - int index=0; - if (firmware_id.contains("imperial")) { - index=1; - } - ui->frskyUnitsCB->setCurrentIndex(index); - } - if ((GetEepromInterface()->getCapability(Telemetry)&TM_HASWSHH)) { - ui->frskyProtoCB->addItem(tr("Winged Shadow How High")); - } else { - ui->frskyProtoCB->addItem(tr("Winged Shadow How High (not supported)")); - } - ui->a1UnitCB->setCurrentIndex(g_model.frsky.channels[0].type); - if (g_model.frsky.channels[0].type==0 || g_model.frsky.channels[0].type==1 || g_model.frsky.channels[0].type==2) { - a1ratio=(g_model.frsky.channels[0].ratio<a1RatioSB->setDecimals(1); - ui->a1RatioSB->setMaximum(25.5*GetEepromInterface()->getCapability(TelemetryMaxMultiplier)); - } else { - a1ratio=g_model.frsky.channels[0].ratio<a1RatioSB->setDecimals(0); - ui->a1RatioSB->setMaximum(255*GetEepromInterface()->getCapability(TelemetryMaxMultiplier)); - } - ui->a1RatioSB->setValue(a1ratio); - - updateA1Fields(); - - if (g_model.frsky.channels[1].type==0 || g_model.frsky.channels[1].type==1 || g_model.frsky.channels[1].type==2) { - a2ratio=(g_model.frsky.channels[1].ratio<a2RatioSB->setDecimals(1); - ui->a2RatioSB->setMaximum(25.5*GetEepromInterface()->getCapability(TelemetryMaxMultiplier)); - } else { - a2ratio=g_model.frsky.channels[1].ratio<a2RatioSB->setDecimals(0); - ui->a2RatioSB->setMaximum(255*GetEepromInterface()->getCapability(TelemetryMaxMultiplier)); - } - ui->a2RatioSB->setValue(a2ratio); - updateA2Fields(); - - ui->a11LevelCB->setCurrentIndex(g_model.frsky.channels[0].alarms[0].level); - ui->a11GreaterCB->setCurrentIndex(g_model.frsky.channels[0].alarms[0].greater); - ui->a12LevelCB->setCurrentIndex(g_model.frsky.channels[0].alarms[1].level); - ui->a12GreaterCB->setCurrentIndex(g_model.frsky.channels[0].alarms[1].greater); - ui->a2UnitCB->setCurrentIndex(g_model.frsky.channels[1].type); - ui->a21LevelCB->setCurrentIndex(g_model.frsky.channels[1].alarms[0].level); - ui->a21GreaterCB->setCurrentIndex(g_model.frsky.channels[1].alarms[0].greater); - ui->a22LevelCB->setCurrentIndex(g_model.frsky.channels[1].alarms[1].level); - ui->a22GreaterCB->setCurrentIndex(g_model.frsky.channels[1].alarms[1].greater); - if (!(GetEepromInterface()->getCapability(Telemetry)&TM_HASOFFSET)) { - ui->a1CalibSB->hide(); - ui->a2CalibSB->hide(); - ui->a1CalibLabel->hide(); - ui->a2CalibLabel->hide(); - } else { - ui->label_A1Max->setText(tr("Range")); - ui->label_A2Max->setText(tr("Range")); - } - ui->frskyProtoCB->setCurrentIndex(g_model.frsky.usrProto); - ui->frskyUnitsCB->setCurrentIndex(g_model.frsky.imperial); - ui->frskyBladesCB->setCurrentIndex(g_model.frsky.blades); - ui->frskyCurrentCB->setCurrentIndex(g_model.frsky.currentSource); - ui->frskyVoltCB->setCurrentIndex(g_model.frsky.voltsSource); - - for (int screen=0; screen<2;screen++) { - for (int rows=0; rows<4; rows++) { - for (int cols=0; cols<3; cols++) { - int index=screen*12+cols*4+rows; - populateCustomScreenFieldCB(csf[index], g_model.frsky.screens[screen].body.lines[rows].source[cols], (rows<4), g_model.frsky.usrProto); - } - } - } - - for (int j=0; j<12; j++) { - int screen = j/4; - int field = j%4; - populateCustomScreenFieldCB(barsCB[j], g_model.frsky.screens[screen].body.bars[field].source, false, g_model.frsky.usrProto); - switch (g_model.frsky.screens[screen].body.bars[field].source-1) { - case TELEMETRY_SOURCE_TX_BATT: - case TELEMETRY_SOURCE_A1: - case TELEMETRY_SOURCE_A1_MIN: - case TELEMETRY_SOURCE_A2: - case TELEMETRY_SOURCE_A2_MIN: - case TELEMETRY_SOURCE_CELLS_SUM: - case TELEMETRY_SOURCE_VFAS: - case TELEMETRY_SOURCE_CURRENT_MAX: - case TELEMETRY_SOURCE_CURRENT: - minsb[j]->setDecimals(1); - maxsb[j]->setDecimals(1); - break; - case TELEMETRY_SOURCE_CELL: - minsb[j]->setDecimals(2); - maxsb[j]->setDecimals(2); - break; - default: - minsb[j]->setDecimals(0); - maxsb[j]->setDecimals(0); - } - minsb[j]->setMinimum(getBarValue(g_model.frsky.screens[screen].body.bars[field].source, 0, &g_model.frsky)); - minsb[j]->setMaximum(getBarValue(g_model.frsky.screens[screen].body.bars[field].source, 255, &g_model.frsky)); - minsb[j]->setSingleStep(getBarStep(g_model.frsky.screens[screen].body.bars[field].source)); - minsb[j]->setValue(getBarValue(g_model.frsky.screens[screen].body.bars[field].source, g_model.frsky.screens[screen].body.bars[field].barMin, &g_model.frsky)); - maxsb[j]->setMinimum(getBarValue(g_model.frsky.screens[screen].body.bars[field].source, 0, &g_model.frsky)); - maxsb[j]->setMaximum(getBarValue(g_model.frsky.screens[screen].body.bars[field].source, 255, &g_model.frsky)); - maxsb[j]->setSingleStep(getBarStep(g_model.frsky.screens[screen].body.bars[field].source)); - maxsb[j]->setValue(getBarValue(g_model.frsky.screens[screen].body.bars[field].source, (255-g_model.frsky.screens[screen].body.bars[field].barMax), &g_model.frsky)); - - if (g_model.frsky.screens[screen].body.bars[field].source==0 || g_model.frsky.screens[screen].type==0) { - minsb[j]->setDisabled(true); - maxsb[j]->setDisabled(true); - } - connect(barsCB[j],SIGNAL(currentIndexChanged(int)),this,SLOT(telBarCBcurrentIndexChanged(int))); - connect(maxSB[j],SIGNAL(editingFinished()),this,SLOT(telMaxSBeditingFinished())); - connect(minSB[j],SIGNAL(editingFinished()),this,SLOT(telMinSBeditingFinished())); - } - telemetryLock=false; -} - -void ModelEdit::updateA1Fields() -{ - float a1ratio,a11value, a12value; - if (g_model.frsky.channels[0].ratio==0) { - ui->a11ValueSB->setMinimum(0); - ui->a11ValueSB->setMaximum(0); - ui->a12ValueSB->setMinimum(0); - ui->a12ValueSB->setMaximum(0); - ui->a1CalibSB->setMinimum(0); - ui->a1CalibSB->setMaximum(0); - ui->a1CalibSB->setValue(0); - ui->a11ValueSB->setValue(0); - ui->a12ValueSB->setValue(0); - return; - } - - if (g_model.frsky.channels[0].type==0 || g_model.frsky.channels[0].type==1 || g_model.frsky.channels[0].type==2) { - a1ratio=(g_model.frsky.channels[0].ratio<a11ValueSB->setDecimals(2); - ui->a11ValueSB->setSingleStep(a1ratio/255.0); - ui->a12ValueSB->setDecimals(2); - ui->a12ValueSB->setSingleStep(a1ratio/255.0); - ui->a11ValueSB->setMinimum((g_model.frsky.channels[0].ratio*1.0*g_model.frsky.channels[0].offset)/2550.0); - ui->a11ValueSB->setMaximum(a1ratio+(g_model.frsky.channels[0].ratio*1.0*g_model.frsky.channels[0].offset)/2550.0); - ui->a12ValueSB->setMinimum((g_model.frsky.channels[0].offset*1.0*g_model.frsky.channels[0].ratio)/2550.0); - ui->a12ValueSB->setMaximum(a1ratio+(g_model.frsky.channels[0].offset*1.0*g_model.frsky.channels[0].ratio)/2550.0); - } else { - a1ratio=g_model.frsky.channels[0].ratio<a11ValueSB->setDecimals(2); - ui->a11ValueSB->setSingleStep(a1ratio/255.0); - ui->a12ValueSB->setDecimals(2); - ui->a12ValueSB->setSingleStep(a1ratio/255.0); - ui->a11ValueSB->setMinimum((g_model.frsky.channels[0].offset*1.0*g_model.frsky.channels[0].ratio)/255.0); - ui->a11ValueSB->setMaximum(a1ratio+(g_model.frsky.channels[0].offset*1.0*g_model.frsky.channels[0].ratio)/255.0); - ui->a12ValueSB->setMinimum((g_model.frsky.channels[0].offset*1.0*g_model.frsky.channels[0].ratio)/255.0); - ui->a12ValueSB->setMaximum(a1ratio+(g_model.frsky.channels[0].offset*1.0*g_model.frsky.channels[0].ratio)/255.0); - } - ui->a1CalibSB->setDecimals(2); - ui->a1CalibSB->setMaximum((a1ratio*127)/255.0); - ui->a1CalibSB->setMinimum((-a1ratio*128)/255.0); - ui->a1CalibSB->setSingleStep(a1ratio/255.0); - ui->a1CalibSB->setValue((g_model.frsky.channels[0].offset*a1ratio)/255); - a11value=a1ratio*(g_model.frsky.channels[0].alarms[0].value/255.0+g_model.frsky.channels[0].offset/255.0); - a12value=a1ratio*(g_model.frsky.channels[0].alarms[1].value/255.0+g_model.frsky.channels[0].offset/255.0);; - ui->a11ValueSB->setValue(a11value); - ui->a12ValueSB->setValue(a12value); -} - -void ModelEdit::updateA2Fields() -{ - float a2ratio,a21value, a22value; - if (g_model.frsky.channels[1].ratio==0) { - ui->a21ValueSB->setMinimum(0); - ui->a21ValueSB->setMaximum(0); - ui->a22ValueSB->setMinimum(0); - ui->a22ValueSB->setMaximum(0); - ui->a2CalibSB->setMinimum(0); - ui->a2CalibSB->setMaximum(0); - ui->a2CalibSB->setValue(0); - ui->a21ValueSB->setValue(0); - ui->a22ValueSB->setValue(0); - return; - } - if (g_model.frsky.channels[1].type==0) { - a2ratio=g_model.frsky.channels[1].ratio/10.0; - ui->a21ValueSB->setDecimals(2); - ui->a21ValueSB->setSingleStep(a2ratio/255.0); - ui->a22ValueSB->setDecimals(2); - ui->a22ValueSB->setSingleStep(a2ratio/255.0); - ui->a21ValueSB->setMinimum((g_model.frsky.channels[1].offset*1.0*g_model.frsky.channels[1].ratio)/2550.0); - ui->a21ValueSB->setMaximum(a2ratio+(g_model.frsky.channels[1].offset*1.0*g_model.frsky.channels[1].ratio)/2550.0); - ui->a22ValueSB->setMinimum((g_model.frsky.channels[1].offset*1.0*g_model.frsky.channels[1].ratio*1.0)/2550.0); - ui->a22ValueSB->setMaximum(a2ratio+(g_model.frsky.channels[1].offset*1.0*g_model.frsky.channels[1].ratio)/2550.0); - } else { - a2ratio=g_model.frsky.channels[1].ratio; - ui->a21ValueSB->setDecimals(2); - ui->a21ValueSB->setSingleStep(a2ratio/255.0); - ui->a22ValueSB->setDecimals(2); - ui->a22ValueSB->setSingleStep(a2ratio/255.0); - ui->a21ValueSB->setMinimum((g_model.frsky.channels[1].offset*1.0*g_model.frsky.channels[1].ratio)/255.0); - ui->a21ValueSB->setMaximum(a2ratio+(g_model.frsky.channels[1].offset*1.0*g_model.frsky.channels[1].ratio)/255.0); - ui->a22ValueSB->setMinimum((g_model.frsky.channels[1].offset*1.0*g_model.frsky.channels[1].ratio)/255.0); - ui->a22ValueSB->setMaximum(a2ratio+(g_model.frsky.channels[1].offset*1.0*g_model.frsky.channels[1].ratio)/255.0); - } - ui->a2CalibSB->setDecimals(2); - ui->a2CalibSB->setMaximum((a2ratio*127)/255.0); - ui->a2CalibSB->setMinimum((-a2ratio*128)/255.0); - ui->a2CalibSB->setSingleStep(a2ratio/255.0); - ui->a2CalibSB->setValue((g_model.frsky.channels[1].offset*a2ratio)/255.0); - a21value=a2ratio*(g_model.frsky.channels[1].alarms[0].value/255.0+g_model.frsky.channels[1].offset/255.0); - a22value=a2ratio*(g_model.frsky.channels[1].alarms[1].value/255.0+g_model.frsky.channels[1].offset/255.0); - ui->a21ValueSB->setValue(a21value); - ui->a22ValueSB->setValue(a22value); -} - -void ModelEdit::tabTemplates() -{ - ui->templateList->clear(); - ui->templateList->addItem(tr("Simple 4-CH")); - ui->templateList->addItem(tr("T-Cut")); - ui->templateList->addItem(tr("Sticky T-Cut")); - ui->templateList->addItem(tr("V-Tail")); - ui->templateList->addItem(tr("Elevon\\Delta")); - ui->templateList->addItem(tr("Heli Setup")); - ui->templateList->addItem(tr("Heli Setup with gyro gain control")); - ui->templateList->addItem(tr("Gyro gain control")); - ui->templateList->addItem(tr("Heli Setup (Futaba's channel assignment style)")); - ui->templateList->addItem(tr("Heli Setup with gyro gain control (Futaba's channel assignment style)")); - ui->templateList->addItem(tr("Gyro gain control (Futaba's channel assignment style)")); - ui->templateList->addItem(tr("Servo Test")); - ui->templateList->addItem(tr("MultiCopter")); - ui->templateList->addItem(tr("Use Model Config Wizard")); -} - -void ModelEdit::on_modelNameLE_editingFinished() -{ - int length=ui->modelNameLE->maxLength(); - strncpy(g_model.name, ui->modelNameLE->text().toAscii(), length); - updateSettings(); -} - -void ModelEdit::on_modelImage_CB_currentIndexChanged(int index) -{ - if (modelImageLock) - return; - strncpy(g_model.bitmap, ui->modelImage_CB->currentText().toAscii(), GetEepromInterface()->getCapability(VoicesMaxLength)); - QSettings settings("companion9x", "companion9x"); - QString path=settings.value("sdPath", ".").toString(); - path.append("/BMP/"); - QDir qd(path); - if (qd.exists()) { - QString fileName=path; - fileName.append(g_model.bitmap); - fileName.append(".bmp"); - QImage image(fileName); - if (image.isNull()) { - fileName=path; - fileName.append(g_model.bitmap); - fileName.append(".BMP"); - image.load(fileName); - } - if (!image.isNull()) { - ui->modelImage_image->setPixmap(QPixmap::fromImage(image.scaled( 64,32)));; - } else { - ui->modelImage_image->clear(); - } - } else { - ui->modelImage_image->clear(); - } - updateSettings(); -} - -void ModelEdit::phaseName_editingFinished() -{ - QLineEdit *lineEdit = qobject_cast(sender()); - int phase = lineEdit->objectName().mid(5,1).toInt(); - QString PhaseName=lineEdit->text(); - QString TabName; - if (phase==0) { - TabName.append(QObject::tr("Flight Mode 0 (Default)")); - } else { - TabName.append(QObject::tr("FM %1").arg(phase)); - } - - if (!PhaseName.isEmpty()) { - TabName.append(" ("); - TabName.append(PhaseName); - TabName.append(")"); - } - ui->phases->setTabText(phase,TabName); - int length=lineEdit->maxLength(); - strncpy(g_model.phaseData[phase].name, lineEdit->text().toAscii(), length); - updateSettings(); -} - -void ModelEdit::phaseSwitch_currentIndexChanged() -{ - QComboBox *comboBox = qobject_cast(sender()); - int phase = comboBox->objectName().mid(5,1).toInt(); - g_model.phaseData[phase].swtch = RawSwitch(comboBox->itemData(comboBox->currentIndex()).toInt()); - updateSettings(); -} - -void ModelEdit::phaseFadeIn_editingFinished() -{ - QDoubleSpinBox *spinBox = qobject_cast(sender()); - int phase = spinBox->objectName().mid(5,1).toInt(); - int scale=GetEepromInterface()->getCapability(SlowScale); - g_model.phaseData[phase].fadeIn = round(spinBox->value()*scale); - updateSettings(); -} - -void ModelEdit::phaseFadeOut_editingFinished() -{ - QDoubleSpinBox *spinBox = qobject_cast(sender()); - int phase = spinBox->objectName().mid(5,1).toInt(); - int scale=GetEepromInterface()->getCapability(SlowScale); - g_model.phaseData[phase].fadeOut = round(spinBox->value()*scale); - updateSettings(); -} - -void ModelEdit::on_timer1ModeCB_currentIndexChanged(int index) -{ - g_model.timers[0].mode = TimerMode(ui->timer1ModeCB->itemData(index).toInt()); - updateSettings(); -} - -void ModelEdit::on_timer1DirCB_currentIndexChanged(int index) -{ - g_model.timers[0].dir = index; - updateSettings(); -} - -void ModelEdit::on_timer1ValTE_editingFinished() -{ - g_model.timers[0].val = ui->timer1ValTE->time().minute()*60 + ui->timer1ValTE->time().second(); - updateSettings(); -} - -void ModelEdit::on_timer1ModeBCB_currentIndexChanged(int index) -{ - g_model.timers[0].modeB = ui->timer1ModeBCB->itemData(index).toInt(); - updateSettings(); -} - -void ModelEdit::on_timer2ModeCB_currentIndexChanged(int index) -{ - g_model.timers[1].mode = TimerMode(ui->timer2ModeCB->itemData(index).toInt()); - updateSettings(); -} - -void ModelEdit::on_timer2DirCB_currentIndexChanged(int index) -{ - g_model.timers[1].dir = index; - updateSettings(); -} - -void ModelEdit::on_timer2ValTE_editingFinished() -{ - g_model.timers[1].val = ui->timer2ValTE->time().minute()*60 + ui->timer2ValTE->time().second(); - updateSettings(); -} - -void ModelEdit::on_timer2ModeBCB_currentIndexChanged(int index) -{ - g_model.timers[1].modeB = ui->timer2ModeBCB->itemData(index).toInt(); - updateSettings(); -} - -void ModelEdit::on_trimIncCB_currentIndexChanged(int index) -{ - g_model.trimInc = index; - updateSettings(); -} - -void ModelEdit::on_ttraceCB_currentIndexChanged(int index) -{ - g_model.thrTraceSrc = index; - updateSettings(); -} - -void ModelEdit::on_pulsePolCB_currentIndexChanged(int index) -{ - g_model.moduleData[0].ppmPulsePol = index; - updateSettings(); -} - -void ModelEdit::on_pulsePolCB_2_currentIndexChanged(int index) -{ - g_model.moduleData[1].ppmPulsePol = index; - updateSettings(); -} - -void ModelEdit::on_pulsePolCB_3_currentIndexChanged(int index) -{ - g_model.moduleData[2].ppmPulsePol = index; - updateSettings(); -} - -void ModelEdit::on_protocolCB_currentIndexChanged(int index) -{ - if (!protocolEditLock) { - protocolEditLock=true; - - g_model.moduleData[0].protocol=(Protocol)ui->protocolCB->itemData(index).toInt(); - int protocol=g_model.moduleData[0].protocol; - // g_model.protocol = (Protocol)index; - if (protocol==PXX_XJT_D8 || protocol==OFF) { - ui->FSGB_1->hide(); - } else { - ui->fsm1CB->setCurrentIndex(g_model.moduleData[0].failsafeMode); - on_fsm1CB_currentIndexChanged(g_model.moduleData[0].failsafeMode); - ui->FSGB_1->show(); - } - updateSettings(); - - ui->ppmDelaySB->setEnabled(!protocol); - ui->numChannelsSB->setEnabled(!protocol); - - if (GetEepromInterface()->getCapability(HasPPMStart)) { - ui->numChannelsSB->setSingleStep(1); - } else { - ui->numChannelsSB->setSingleStep(2); - } - - switch (protocol) { - case OFF: - ui->label_PPM->hide(); - ui->ppmDelaySB->hide(); - ui->label_PPMCH->hide(); - ui->label_pulsePol->hide(); - ui->pulsePolCB->hide(); - ui->numChannelsSB->hide(); - ui->label_ppmFrameLength->hide(); - ui->ppmFrameLengthDSB->hide(); - ui->label_DSM->hide(); - ui->DSM_Type->hide(); - ui->label_PXX->hide(); - ui->pxxRxNum->hide(); - ui->label_numChannelsStart->hide(); - ui->numChannelsStart->hide(); - break; - case PXX_XJT_X16: - case PXX_XJT_D8: - case PXX_XJT_LR12: - case PXX_DJT: - ui->label_PPM->hide(); - ui->ppmDelaySB->hide(); - ui->ppmDelaySB->setEnabled(false); - ui->label_PPMCH->show(); - ui->label_pulsePol->hide(); - ui->pulsePolCB->hide(); - ui->numChannelsSB->show(); - ui->numChannelsSB->setEnabled(true); - ui->label_ppmFrameLength->hide(); - ui->ppmFrameLengthDSB->hide(); - ui->ppmFrameLengthDSB->setEnabled(false); - ui->label_DSM->hide(); - ui->DSM_Type->hide(); - ui->DSM_Type->setEnabled(false); - ui->label_PXX->show(); - ui->pxxRxNum->setMinimum(0); - ui->pxxRxNum->show(); - ui->pxxRxNum->setEnabled(true); - ui->pxxRxNum->setValue((g_model.moduleData[0].channelsCount-8)/2+1); - ui->label_numChannelsStart->show(); - ui->numChannelsStart->show(); - ui->numChannelsStart->setValue(g_model.moduleData[0].channelsStart+1); - ui->numChannelsSB->setMinimum(g_model.moduleData[0].channelsStart+4); - ui->numChannelsSB->setValue(g_model.moduleData[0].channelsStart+g_model.moduleData[0].channelsCount); - break; - case LP45: - case DSM2: - case DSMX: - ui->label_pulsePol->hide(); - ui->pulsePolCB->hide(); - ui->label_PPM->hide(); - ui->ppmDelaySB->hide(); - ui->ppmDelaySB->setEnabled(false); - ui->label_PPMCH->hide(); - ui->label_numChannelsStart->hide(); - ui->numChannelsStart->hide(); - ui->numChannelsSB->hide(); - ui->numChannelsSB->setEnabled(false); - ui->label_ppmFrameLength->hide(); - ui->ppmFrameLengthDSB->hide(); - ui->ppmFrameLengthDSB->setEnabled(false); - if (!GetEepromInterface()->getCapability(DSM2Indexes)) { - ui->label_PXX->hide(); - ui->pxxRxNum->hide(); - ui->pxxRxNum->setEnabled(false); - } - else { - ui->pxxRxNum->setMinimum(0); - ui->pxxRxNum->setValue(g_model.modelId); - ui->label_PXX->show(); - ui->pxxRxNum->show(); - ui->pxxRxNum->setEnabled(true); - } - ui->DSM_Type->setEnabled(false); - ui->label_DSM->hide(); - ui->DSM_Type->hide(); - break; - default: - if (GetEepromInterface()->getCapability(HasPPMStart)) { - ui->label_numChannelsStart->show(); - ui->numChannelsStart->show(); - } - else { - ui->label_numChannelsStart->hide(); - ui->numChannelsStart->hide(); - } - ui->numChannelsStart->setValue(g_model.moduleData[0].channelsStart+1); - ui->numChannelsSB->setMinimum(g_model.moduleData[0].channelsStart+4); - ui->numChannelsSB->setValue(g_model.moduleData[0].channelsStart + g_model.moduleData[0].channelsCount); - ui->label_pulsePol->show(); - ui->pulsePolCB->show(); - ui->label_DSM->hide(); - ui->DSM_Type->hide(); - ui->DSM_Type->setEnabled(false); - ui->label_PXX->hide(); - ui->pxxRxNum->hide(); - ui->pxxRxNum->setEnabled(false); - ui->label_PPM->show(); - ui->ppmDelaySB->show(); - ui->ppmDelaySB->setEnabled(true); - ui->label_PPMCH->show(); - ui->numChannelsSB->show(); - ui->numChannelsSB->setEnabled(true); - ui->ppmFrameLengthDSB->setEnabled(true); - ui->ppmFrameLengthDSB->setMinimum(g_model.moduleData[0].channelsCount*(g_model.extendedLimits ? 2.250 :2)+3.5); - if (GetEepromInterface()->getCapability(PPMExtCtrl)) { - ui->ppmFrameLengthDSB->show(); - ui->label_ppmFrameLength->show(); - } - - break; - } - protocolEditLock=false; - } -} - -void ModelEdit::on_protocolCB_2_currentIndexChanged(int index) -{ - if (!protocol2EditLock) { - protocol2EditLock=true; - - g_model.moduleData[1].protocol=(Protocol)ui->protocolCB_2->itemData(index).toInt(); - int protocol=g_model.moduleData[1].protocol; - if (protocol==PXX_XJT_X16 || protocol==PXX_XJT_LR12) { - ui->FSGB_2->show(); - ui->fsm2CB->setCurrentIndex(g_model.moduleData[1].failsafeMode); - on_fsm2CB_currentIndexChanged(g_model.moduleData[1].failsafeMode); - } else { - ui->FSGB_2->hide(); - } - // g_model.protocol = (Protocol)index; - updateSettings(); - - ui->ppmDelaySB_2->setEnabled(!protocol); - ui->numChannelsSB_2->setEnabled(!protocol); - - if (GetEepromInterface()->getCapability(HasPPMStart)) { - ui->numChannelsSB_2->setSingleStep(1); - } else { - ui->numChannelsSB_2->setSingleStep(2); - } - - switch (protocol) { - case OFF: - ui->label_PPM_2->hide(); - ui->ppmDelaySB_2->hide(); - ui->label_PPMCH_2->hide(); - ui->label_pulsePol_2->hide(); - ui->pulsePolCB_2->hide(); - ui->numChannelsSB_2->hide(); - ui->label_ppmFrameLength_2->hide(); - ui->ppmFrameLengthDSB_2->hide(); - ui->label_DSM_2->hide(); - ui->DSM_Type_2->hide(); - ui->label_PXX_2->hide(); - ui->pxxRxNum_2->hide(); - ui->label_numChannelsStart_2->hide(); - ui->numChannelsStart_2->hide(); - break; - case PXX_XJT_X16: - case PXX_XJT_D8: - case PXX_XJT_LR12: - case PXX_DJT: - ui->label_PPM_2->hide(); - ui->ppmDelaySB_2->hide(); - ui->ppmDelaySB_2->setEnabled(false); - ui->label_PPMCH_2->show(); - ui->label_pulsePol_2->hide(); - ui->pulsePolCB_2->hide(); - ui->numChannelsSB_2->show(); - ui->numChannelsSB_2->setEnabled(true); - ui->label_ppmFrameLength_2->hide(); - ui->ppmFrameLengthDSB_2->hide(); - ui->ppmFrameLengthDSB_2->setEnabled(false); - ui->label_DSM_2->hide(); - ui->DSM_Type_2->hide(); - ui->DSM_Type_2->setEnabled(false); - ui->label_PXX_2->show(); - ui->pxxRxNum_2->setMinimum(0); - ui->pxxRxNum_2->show(); - ui->pxxRxNum_2->setEnabled(true); - ui->pxxRxNum_2->setValue(g_model.modelId); - ui->label_numChannelsStart_2->show(); - ui->numChannelsStart_2->show(); - ui->numChannelsStart_2->setValue(g_model.moduleData[1].channelsStart+1); - ui->numChannelsSB_2->setMinimum(g_model.moduleData[1].channelsStart+4); - ui->numChannelsSB_2->setValue(g_model.moduleData[1].channelsStart+g_model.moduleData[1].channelsCount); - break; - case LP45: - case DSM2: - case DSMX: - ui->label_pulsePol_2->hide(); - ui->pulsePolCB_2->hide(); - ui->label_PPM_2->hide(); - ui->ppmDelaySB_2->hide(); - ui->ppmDelaySB_2->setEnabled(false); - ui->label_PPMCH_2->hide(); - ui->numChannelsSB_2->hide(); - ui->numChannelsSB_2->setEnabled(false); - ui->label_ppmFrameLength_2->hide(); - ui->ppmFrameLengthDSB_2->hide(); - ui->ppmFrameLengthDSB_2->setEnabled(false); - if (!GetEepromInterface()->getCapability(DSM2Indexes)) { - ui->label_PXX_2->hide(); - ui->pxxRxNum_2->hide(); - ui->pxxRxNum_2->setEnabled(false); - } else { - ui->pxxRxNum_2->setMinimum(0); - ui->pxxRxNum_2->setValue(g_model.modelId); - ui->label_PXX_2->show(); - ui->pxxRxNum_2->show(); - ui->pxxRxNum_2->setEnabled(true); - } - ui->DSM_Type_2->setEnabled(false); - ui->label_DSM_2->hide(); - ui->DSM_Type_2->hide(); - break; - default: - if (GetEepromInterface()->getCapability(HasPPMStart)) { - ui->label_numChannelsStart_2->show(); - ui->numChannelsStart_2->show(); - } else { - ui->label_numChannelsStart_2->hide(); - ui->numChannelsStart_2->hide(); - } - ui->numChannelsStart_2->setValue(g_model.moduleData[1].channelsStart+1); - ui->numChannelsSB_2->setMinimum(g_model.moduleData[1].channelsStart+4); - ui->numChannelsSB_2->setValue(g_model.moduleData[1].channelsStart+g_model.moduleData[1].channelsCount); - ui->label_pulsePol_2->show(); - ui->pulsePolCB_2->show(); - ui->pulsePolCB_2->setCurrentIndex(g_model.moduleData[1].ppmPulsePol); - ui->label_DSM_2->hide(); - ui->DSM_Type_2->hide(); - ui->DSM_Type_2->setEnabled(false); - ui->label_PXX_2->hide(); - ui->pxxRxNum_2->hide(); - ui->pxxRxNum_2->setEnabled(false); - ui->label_PPM_2->show(); - ui->ppmDelaySB_2->show(); - ui->ppmDelaySB_2->setEnabled(true); - ui->ppmDelaySB_2->setValue(g_model.moduleData[1].ppmDelay); - ui->label_PPMCH_2->show(); - ui->numChannelsSB_2->show(); - ui->numChannelsSB_2->setEnabled(true); - ui->ppmFrameLengthDSB_2->setEnabled(true); - ui->ppmFrameLengthDSB_2->setMinimum(g_model.moduleData[1].channelsCount*(g_model.extendedLimits ? 2.250 :2)+3.5); - if (GetEepromInterface()->getCapability(PPMExtCtrl)) { - ui->ppmFrameLengthDSB_2->show(); - ui->label_ppmFrameLength_2->show(); - ui->ppmFrameLengthDSB_2->setValue(g_model.moduleData[1].ppmFrameLength/2.0+22.5); - } - break; - } - protocol2EditLock=false; - } -} - -void ModelEdit::on_protocolCB_3_currentIndexChanged(int index) -{ - if (!trainerEditLock) { - trainerEditLock=true; - - g_model.moduleData[2].protocol=ui->protocolCB_3->currentIndex(); - g_model.trainerMode=ui->protocolCB_3->currentIndex(); - updateSettings(); - switch (index) { - case 0: - ui->label_PPM_3->hide(); - ui->ppmDelaySB_3->hide(); - ui->label_PPMCH_3->hide(); - ui->label_pulsePol_3->hide(); - ui->pulsePolCB_3->hide(); - ui->numChannelsSB_3->hide(); - ui->label_ppmFrameLength_3->hide(); - ui->ppmFrameLengthDSB_3->hide(); - ui->label_numChannelsStart_3->hide(); - ui->numChannelsStart_3->hide(); - break; - default: - ui->label_PPM_3->show(); - ui->ppmDelaySB_3->show(); - ui->label_PPMCH_3->show(); - ui->label_pulsePol_3->show(); - ui->pulsePolCB_3->show(); - ui->numChannelsSB_3->show(); - ui->label_ppmFrameLength_3->show(); - ui->ppmFrameLengthDSB_3->show(); - ui->label_numChannelsStart_3->show(); - ui->numChannelsStart_3->show(); - ui->numChannelsStart_3->setValue(g_model.moduleData[2].channelsStart+1); - ui->numChannelsSB_3->setMinimum(g_model.moduleData[2].channelsStart+4); - ui->numChannelsSB_3->setValue(g_model.moduleData[2].channelsStart+g_model.moduleData[2].channelsCount); - ui->pulsePolCB_3->setCurrentIndex(g_model.moduleData[2].ppmPulsePol); - ui->ppmDelaySB_3->setValue(g_model.moduleData[2].ppmDelay); - ui->ppmFrameLengthDSB_3->setMinimum(g_model.moduleData[2].channelsCount*(g_model.extendedLimits ? 2.250 :2)+3.5); - if (GetEepromInterface()->getCapability(PPMExtCtrl)) { - ui->ppmFrameLengthDSB_3->show(); - ui->label_ppmFrameLength_3->show(); - ui->ppmFrameLengthDSB_3->setValue(g_model.moduleData[2].ppmFrameLength/2.0+22.5); - } - break; - } - trainerEditLock=false; - } -} - - -void ModelEdit::on_numChannelsSB_editingFinished() -{ - // TODO only accept valid values - g_model.moduleData[0].channelsCount = 1+ui->numChannelsSB->value()-ui->numChannelsStart->value(); - ui->ppmFrameLengthDSB->setMinimum(g_model.moduleData[0].channelsCount*(g_model.extendedLimits ? 2.250 :2)+3.5); - updateSettings(); -} - -void ModelEdit::on_numChannelsSB_2_editingFinished() -{ - // TODO only accept valid values - g_model.moduleData[1].channelsCount = 1+ui->numChannelsSB_2->value()-ui->numChannelsStart_2->value(); - ui->ppmFrameLengthDSB_2->setMinimum(g_model.moduleData[1].channelsCount*(g_model.extendedLimits ? 2.250 :2.0)+3.5); - updateSettings(); -} - -void ModelEdit::on_numChannelsSB_3_editingFinished() -{ - // TODO only accept valid values - g_model.moduleData[2].channelsCount = 1+ui->numChannelsSB_3->value()-ui->numChannelsStart_3->value(); - ui->ppmFrameLengthDSB_3->setMinimum(g_model.moduleData[2].channelsCount*(g_model.extendedLimits ? 2.250 :2)+3.5); - updateSettings(); -} - -void ModelEdit::on_numChannelsStart_editingFinished() -{ - // TODO only accept valid values - g_model.moduleData[0].channelsStart = ui->numChannelsStart->value()-1; - ui->numChannelsSB->setMinimum(g_model.moduleData[0].channelsStart+4); - ui->numChannelsSB->setValue(g_model.moduleData[0].channelsStart+g_model.moduleData[0].channelsCount); - updateSettings(); -} - -void ModelEdit::on_numChannelsStart_2_editingFinished() -{ - // TODO only accept valid values - g_model.moduleData[1].channelsStart = ui->numChannelsStart_2->value()-1; - ui->numChannelsSB_2->setMinimum(g_model.moduleData[1].channelsStart+4); - ui->numChannelsSB_2->setValue(g_model.moduleData[1].channelsStart+g_model.moduleData[1].channelsCount); - updateSettings(); -} - -void ModelEdit::on_numChannelsStart_3_editingFinished() -{ - // TODO only accept valid values - g_model.moduleData[2].channelsStart = ui->numChannelsStart_3->value()-1; - ui->numChannelsSB_3->setMinimum(g_model.moduleData[2].channelsStart+4); - ui->numChannelsSB_3->setValue(g_model.moduleData[2].channelsStart+g_model.moduleData[2].channelsCount); - updateSettings(); -} - -void ModelEdit::on_ppmDelaySB_editingFinished() -{ - if(protocolEditLock) return; - // TODO only accept valid values - g_model.moduleData[0].ppmDelay = ui->ppmDelaySB->value(); - updateSettings(); -} - -void ModelEdit::on_ppmDelaySB_2_editingFinished() -{ - if(protocol2EditLock) return; - // TODO only accept valid values - g_model.moduleData[1].ppmDelay = ui->ppmDelaySB_2->value(); - updateSettings(); -} - -void ModelEdit::on_ppmDelaySB_3_editingFinished() -{ - if(trainerEditLock) return; - // TODO only accept valid values - g_model.moduleData[2].ppmDelay = ui->ppmDelaySB_3->value(); - updateSettings(); -} - -void ModelEdit::on_DSM_Type_currentIndexChanged(int index) -{ - if(protocolEditLock) return; - // g_model.moduleData[0].channelsCount = (index*2)+8; - updateSettings(); -} - -void ModelEdit::on_DSM_Type_2_currentIndexChanged(int index) -{ - if(protocol2EditLock) return; - // g_model.moduleData[1].channelsCount = (index*2)+8; - updateSettings(); -} - -void ModelEdit::on_pxxRxNum_editingFinished() -{ - if(protocolEditLock) - return; - - if (!GetEepromInterface()->getCapability(DSM2Indexes)) { - // g_model.moduleData[0].channelsCount = (ui->pxxRxNum->value()-1)*2+8; - } else { - g_model.modelId = ui->pxxRxNum->value(); - } - updateSettings(); -} - -void ModelEdit::on_pxxRxNum_2_editingFinished() -{ - if(protocol2EditLock) - return; - - /* if (!GetEepromInterface()->getCapability(DSM2Indexes)) { - g_model.moduleData[1].channelsCount = (ui->pxxRxNum_2->value()-1)*2+8; - } */ - updateSettings(); -} - -void ModelEdit::on_ppmFrameLengthDSB_editingFinished() -{ - g_model.moduleData[0].ppmFrameLength = (ui->ppmFrameLengthDSB->value()-22.5)/0.5; - updateSettings(); -} - -void ModelEdit::on_ppmFrameLengthDSB_2_editingFinished() -{ - g_model.moduleData[1].ppmFrameLength = (ui->ppmFrameLengthDSB_2->value()-22.5)/0.5; - updateSettings(); -} - -void ModelEdit::on_ppmFrameLengthDSB_3_editingFinished() -{ - g_model.moduleData[2].ppmFrameLength = (ui->ppmFrameLengthDSB_3->value()-22.5)/0.5; - updateSettings(); -} - -void ModelEdit::on_fsm1CB_currentIndexChanged(int index) -{ - QSpinBox * fssb[] = { ui->fsm1SB_1, ui->fsm1SB_2,ui->fsm1SB_3,ui->fsm1SB_4,ui->fsm1SB_5,ui->fsm1SB_6,ui->fsm1SB_7,ui->fsm1SB_8, - ui->fsm1SB_9, ui->fsm1SB_10,ui->fsm1SB_11,ui->fsm1SB_12,ui->fsm1SB_13,ui->fsm1SB_14,ui->fsm1SB_15,ui->fsm1SB_16, NULL }; - QSlider * fssld[] = { ui->fsm1SL_1, ui->fsm1SL_2,ui->fsm1SL_3,ui->fsm1SL_4,ui->fsm1SL_5,ui->fsm1SL_6,ui->fsm1SL_7,ui->fsm1SL_8, - ui->fsm1SL_9, ui->fsm1SL_10,ui->fsm1SL_11,ui->fsm1SL_12,ui->fsm1SL_13,ui->fsm1SL_14,ui->fsm1SL_15,ui->fsm1SL_16, NULL }; - g_model.moduleData[0].failsafeMode=index; - for (int i=0; fssb[i]; i++) { - if (index==1) { - fssb[i]->setEnabled(true); - fssld[i]->setEnabled(true); - } else { - fssb[i]->setDisabled(true); - fssld[i]->setDisabled(true); - } - } - updateSettings(); -} - -void ModelEdit::on_fsm2CB_currentIndexChanged(int index) -{ - QSpinBox * fssb[] = { ui->fsm2SB_1, ui->fsm2SB_2,ui->fsm2SB_3,ui->fsm2SB_4,ui->fsm2SB_5,ui->fsm2SB_6,ui->fsm2SB_7,ui->fsm2SB_8, - ui->fsm2SB_9, ui->fsm2SB_10,ui->fsm2SB_11,ui->fsm2SB_12,ui->fsm2SB_13,ui->fsm2SB_14,ui->fsm2SB_15,ui->fsm2SB_16, NULL }; - QSlider * fssld[] = { ui->fsm2SL_1, ui->fsm2SL_2,ui->fsm2SL_3,ui->fsm2SL_4,ui->fsm2SL_5,ui->fsm2SL_6,ui->fsm2SL_7,ui->fsm2SL_8, - ui->fsm2SL_9, ui->fsm2SL_10,ui->fsm2SL_11,ui->fsm2SL_12,ui->fsm2SL_13,ui->fsm2SL_14,ui->fsm2SL_15,ui->fsm2SL_16, NULL }; - g_model.moduleData[1].failsafeMode=index; - for (int i=0; fssb[i]; i++) { - if (index==1) { - fssb[i]->setEnabled(true); - fssld[i]->setEnabled(true); - } else { - fssb[i]->setDisabled(true); - fssld[i]->setDisabled(true); - } - } - updateSettings(); -} - -void ModelEdit::on_instantTrim_CB_currentIndexChanged(int index) -{ - if(switchEditLock) return; - bool found=false; - for (int i=0; i< C9X_MAX_CUSTOM_FUNCTIONS; i++) { - if (g_model.funcSw[i].func==FuncInstantTrim) { - g_model.funcSw[i].swtch = RawSwitch(ui->instantTrim_CB->itemData(ui->instantTrim_CB->currentIndex()).toInt()); - found=true; - } - } - if (found==false) { - for (int i=0; i< C9X_MAX_CUSTOM_FUNCTIONS; i++) { - if (g_model.funcSw[i].swtch==RawSwitch()) { - g_model.funcSw[i].swtch = RawSwitch(ui->instantTrim_CB->itemData(ui->instantTrim_CB->currentIndex()).toInt()); - g_model.funcSw[i].func = FuncInstantTrim; - break; - } - } - } - updateSettings(); -} - -void ModelEdit::on_a1UnitCB_currentIndexChanged(int index) { - float a1ratio; - g_model.frsky.channels[0].type=index; - switch (index) { - case 0: - case 1: - case 2: - ui->a1RatioSB->setDecimals(1); - ui->a1RatioSB->setMaximum(25.5*GetEepromInterface()->getCapability(TelemetryMaxMultiplier)); - a1ratio=(g_model.frsky.channels[0].ratio<a1RatioSB->setDecimals(0); - ui->a1RatioSB->setMaximum(255*GetEepromInterface()->getCapability(TelemetryMaxMultiplier)); - a1ratio=(g_model.frsky.channels[0].ratio<a1RatioSB->setValue(a1ratio); - updateA1Fields(); - updateSettings(); -} - -void ModelEdit::on_a1RatioSB_valueChanged() -{ - if (telemetryLock) return; - if (g_model.frsky.channels[0].type==0 || g_model.frsky.channels[0].type==1 || g_model.frsky.channels[0].type==2) { - g_model.frsky.channels[0].multiplier = findmult(ui->a1RatioSB->value(), 25.5); - float singlestep =(1<a1RatioSB->setSingleStep(singlestep); - ui->a1RatioSB->setValue(round(ui->a1RatioSB->value()/singlestep)*singlestep); - telemetryLock=false; - } else { - g_model.frsky.channels[0].multiplier = findmult(ui->a1RatioSB->value(), 255); - float singlestep =(1<a1RatioSB->setSingleStep(singlestep); - ui->a1RatioSB->setValue(round(ui->a1RatioSB->value()/singlestep)*singlestep); - telemetryLock=false; - } -} - -void ModelEdit::on_a1RatioSB_editingFinished() -{ - float a1ratio, a1calib, a11value,a12value; - if (telemetryLock) return; - if (g_model.frsky.channels[0].type==0 || g_model.frsky.channels[0].type==1 || g_model.frsky.channels[0].type==2) { - g_model.frsky.channels[0].multiplier = findmult(ui->a1RatioSB->value(), 25.5); - ui->a1CalibSB->setSingleStep((1<a11ValueSB->setSingleStep((1<a12ValueSB->setSingleStep((1<a1RatioSB->value()*10))/(1 <a1RatioSB->value(), 255); - ui->a1CalibSB->setSingleStep(1<a11ValueSB->setSingleStep(1<a12ValueSB->setSingleStep(1<a1RatioSB->value()/(1 << g_model.frsky.channels[0].multiplier)); - } - ui->a1CalibSB->setMaximum((ui->a1RatioSB->value()*127)/255); - ui->a1CalibSB->setMinimum((ui->a1RatioSB->value()*-128)/255); - ui->a11ValueSB->setMaximum(ui->a1RatioSB->value()); - ui->a12ValueSB->setMaximum(ui->a1RatioSB->value()); - repaint(); - a1ratio=g_model.frsky.channels[0].ratio * (1 << g_model.frsky.channels[0].multiplier); - a1calib=ui->a1CalibSB->value(); - a11value=ui->a11ValueSB->value(); - a12value=ui->a12ValueSB->value(); - if (g_model.frsky.channels[0].type==0) { - a1calib*=10; - a11value*=10; - a12value*=10; - } - if (a1calib>0) { - if (a1calib>((a1ratio*127)/255)) { - g_model.frsky.channels[0].offset=127; - } else { - g_model.frsky.channels[0].offset=round(a1calib*255/a1ratio); - } - } - if (a1calib<0) { - if (a1calib<((a1ratio*-128)/255)) { - g_model.frsky.channels[0].offset=-128; - } else { - g_model.frsky.channels[0].offset=round(a1calib*255/a1ratio); - } - } - g_model.frsky.channels[0].alarms[0].value=round((a11value*255-g_model.frsky.channels[0].offset*(g_model.frsky.channels[0].ratio<a1CalibSB->value()/a1ratio)); - a1calib=a1ratio*g_model.frsky.channels[0].offset/255.0; - a11value=ui->a11ValueSB->value(); - a12value=ui->a12ValueSB->value(); - if (a11value(a1ratio+a1calib)) { - a11value=a1ratio+a1calib; - } - if (a12value(a1ratio+a1calib)) { - a12value=a1ratio+a1calib; - } - g_model.frsky.channels[0].alarms[0].value=round(((a11value-a1calib)*255)/a1ratio); - g_model.frsky.channels[0].alarms[1].value=round(((a12value-a1calib)*255)/a1ratio); - } else { - g_model.frsky.channels[0].offset=0; - g_model.frsky.channels[0].alarms[0].value=0; - g_model.frsky.channels[0].alarms[1].value=0; - } - updateA1Fields(); - telBarUpdate(); - updateSettings(); -} - -void ModelEdit::on_a11LevelCB_currentIndexChanged(int index) -{ - g_model.frsky.channels[0].alarms[0].level = index; - updateSettings(); -} - -void ModelEdit::on_frskyUnitsCB_currentIndexChanged(int index) -{ - g_model.frsky.imperial=index; - updateSettings(); -} - -void ModelEdit::on_frskyBladesCB_currentIndexChanged(int index) -{ - g_model.frsky.blades=index; - updateSettings(); -} - -void ModelEdit::on_frskyCurrentCB_currentIndexChanged(int index) -{ - g_model.frsky.currentSource=index; - updateSettings(); -} - -void ModelEdit::on_frskyVoltCB_currentIndexChanged(int index) -{ - g_model.frsky.voltsSource=index; - updateSettings(); -} - -void ModelEdit::on_frskyProtoCB_currentIndexChanged(int index) -{ - if (telemetryLock) return; - int bindex[12]; - telemetryLock=true; - for (int i=0; i<12; i++) { - bindex[i]=barsCB[i]->currentIndex(); - g_model.frsky.usrProto=index; - populateCustomScreenFieldCB(barsCB[i], bindex[i], false, g_model.frsky.usrProto); - } - if (!GetEepromInterface()->getCapability(TelemetryCSFields)) { - ui->groupBox_5->hide(); - } else { - for (int screen=0; screen<2;screen++) { - for (int rows=0; rows<4; rows++) { - for (int cols=0; cols<3; cols++) { - int index=screen*12+cols*4+rows; - populateCustomScreenFieldCB(csf[index], g_model.frsky.screens[screen].body.lines[rows].source[cols], (rows<4), g_model.frsky.usrProto); - } - } - } - } - telemetryLock=false; - if (index==0) { - for (int i=0; i<12; i++) { - if (bindex[i]>2) { - barsCB[i]->setCurrentIndex(0); - } else { - barsCB[i]->setCurrentIndex(bindex[i]); - } - } - } else if (index==2) { - for (int i=0; i<12; i++) { - if (bindex[i]>3) { - barsCB[i]->setCurrentIndex(0); - } else { - barsCB[i]->setCurrentIndex(bindex[i]); - } - } - } else { - for (int i=0; i<12; i++) { - barsCB[i]->setCurrentIndex(bindex[i]); - } - } - updateSettings(); -} - -void ModelEdit::on_a11GreaterCB_currentIndexChanged(int index) -{ - g_model.frsky.channels[0].alarms[0].greater = index; - updateSettings(); -} - -void ModelEdit::on_a11ValueSB_editingFinished() -{ - float a1ratio, a1calib, a11value; - a1ratio=g_model.frsky.channels[0].ratio<a11ValueSB->value(); - if (g_model.frsky.channels[0].type==0) { - a1ratio/=10; - } - if (a11value<((a1calib*a1ratio)/255)) { - g_model.frsky.channels[0].alarms[0].value=0; - } else if (a11value>(a1ratio+(a1calib*a1ratio)/255)) { - g_model.frsky.channels[0].alarms[0].value=255; - } else { - g_model.frsky.channels[0].alarms[0].value = round((a11value-((a1calib*a1ratio)/255))/a1ratio*255); - } - updateA1Fields(); - updateSettings(); -} - -void ModelEdit::on_a12LevelCB_currentIndexChanged(int index) -{ - g_model.frsky.channels[0].alarms[1].level = index; - updateSettings(); -} - -void ModelEdit::on_a12GreaterCB_currentIndexChanged(int index) -{ - g_model.frsky.channels[0].alarms[1].greater = index; - updateSettings(); -} - -void ModelEdit::on_a12ValueSB_editingFinished() -{ - float a1ratio, a1calib, a12value; - a1ratio=g_model.frsky.channels[0].ratio<a12ValueSB->value(); - if (g_model.frsky.channels[0].type==0) { - a1ratio/=10; - } - if (a12value<((a1calib*a1ratio)/255)) { - g_model.frsky.channels[0].alarms[1].value=0; - } else if (a12value>(a1ratio+(a1calib*a1ratio)/255)) { - g_model.frsky.channels[0].alarms[1].value=255; - } else { - g_model.frsky.channels[0].alarms[1].value = round((a12value-((a1calib*a1ratio)/255))/a1ratio*255); - } - updateA1Fields(); - updateSettings(); -} - -void ModelEdit::on_a2UnitCB_currentIndexChanged(int index) { - float a2ratio; - g_model.frsky.channels[1].type=index; - switch (index) { - case 0: - case 1: - case 2: - ui->a2RatioSB->setDecimals(1); - ui->a2RatioSB->setMaximum(25.5*GetEepromInterface()->getCapability(TelemetryMaxMultiplier)); - a2ratio=(g_model.frsky.channels[1].ratio<a2RatioSB->setDecimals(0); - ui->a2RatioSB->setMaximum(255*GetEepromInterface()->getCapability(TelemetryMaxMultiplier)); - a2ratio=g_model.frsky.channels[1].ratio<a2RatioSB->setValue(a2ratio); - updateA2Fields(); - updateSettings(); -} - -void ModelEdit::on_a2RatioSB_valueChanged() -{ - if (telemetryLock) return; - if (g_model.frsky.channels[1].type==0 || g_model.frsky.channels[1].type==1 || g_model.frsky.channels[1].type==2) { - g_model.frsky.channels[1].multiplier = findmult(ui->a2RatioSB->value(), 25.5); - float singlestep =(1<a2RatioSB->setSingleStep(singlestep); - ui->a2RatioSB->setValue(round(ui->a2RatioSB->value()/singlestep)*singlestep); - telemetryLock=false; - } else { - g_model.frsky.channels[1].multiplier = findmult(ui->a2RatioSB->value(), 255); - float singlestep =(1<a2RatioSB->setSingleStep(singlestep); - ui->a2RatioSB->setValue(round(ui->a2RatioSB->value()/singlestep)*singlestep); - telemetryLock=false; - } -} - -void ModelEdit::on_a2RatioSB_editingFinished() -{ - float a2ratio, a2calib, a21value,a22value; - if (telemetryLock) return; - if (g_model.frsky.channels[1].type==0 || g_model.frsky.channels[1].type==1 || g_model.frsky.channels[1].type==2) { - g_model.frsky.channels[1].multiplier = findmult(ui->a2RatioSB->value(), 25.5); - ui->a2CalibSB->setSingleStep((1<a21ValueSB->setSingleStep((1<a22ValueSB->setSingleStep((1<a2RatioSB->value()*10))/(1 << g_model.frsky.channels[1].multiplier)); - } else { - g_model.frsky.channels[1].multiplier = findmult(ui->a2RatioSB->value(), 255); - ui->a2CalibSB->setSingleStep(1<a21ValueSB->setSingleStep(1<a22ValueSB->setSingleStep(1<a2RatioSB->value()/(1 << g_model.frsky.channels[1].multiplier)); - } - ui->a2CalibSB->setMaximum((ui->a2RatioSB->value()*127)/255); - ui->a2CalibSB->setMinimum((ui->a2RatioSB->value()*-128)/255); - ui->a21ValueSB->setMaximum(ui->a2RatioSB->value()); - ui->a22ValueSB->setMaximum(ui->a2RatioSB->value()); - repaint(); - a2ratio=g_model.frsky.channels[1].ratio * (1 << g_model.frsky.channels[1].multiplier); - a2calib=ui->a2CalibSB->value(); - a21value=ui->a21ValueSB->value(); - a22value=ui->a22ValueSB->value(); - if (g_model.frsky.channels[1].type==0 || g_model.frsky.channels[1].type==1 || g_model.frsky.channels[1].type==2) { - a2calib*=10; - a21value*=10; - a22value*=10; - } - if (a2calib>0) { - if (a2calib>((a2ratio*127)/255)) { - g_model.frsky.channels[1].offset=127; - } else { - g_model.frsky.channels[1].offset=round(a2calib*255/a2ratio); - } - } - if (a2calib<0) { - if (a2calib<((a2ratio*-128)/255)) { - g_model.frsky.channels[1].offset=-128; - } else { - g_model.frsky.channels[1].offset=round(a2calib*255/a2ratio); - } - } - g_model.frsky.channels[1].alarms[0].value=round((a21value*255-g_model.frsky.channels[1].offset*(g_model.frsky.channels[1].ratio<a2CalibSB->value()/a2ratio)); - a2calib=a2ratio*g_model.frsky.channels[1].offset/255.0; - a21value=ui->a21ValueSB->value(); - a22value=ui->a22ValueSB->value(); - if (a21value(a2ratio+a2calib)) { - a21value=a2ratio+a2calib; - } - if (a22value(a2ratio+a2calib)) { - a22value=a2ratio+a2calib; - } - g_model.frsky.channels[1].alarms[0].value=round(((a21value-a2calib)*255)/a2ratio); - g_model.frsky.channels[1].alarms[1].value=round(((a22value-a2calib)*255)/a2ratio); - } else { - g_model.frsky.channels[1].offset=0; - g_model.frsky.channels[1].alarms[0].value=0; - g_model.frsky.channels[1].alarms[1].value=0; - } - updateA2Fields(); - telBarUpdate(); - updateSettings(); -} - -void ModelEdit::on_a21LevelCB_currentIndexChanged(int index) -{ - g_model.frsky.channels[1].alarms[0].level = index; - updateSettings(); -} - -void ModelEdit::on_a21GreaterCB_currentIndexChanged(int index) -{ - g_model.frsky.channels[1].alarms[0].greater = index; - updateSettings(); -} - -void ModelEdit::on_a21ValueSB_editingFinished() -{ - float a2ratio, a2calib, a21value; - a2ratio=g_model.frsky.channels[1].ratio<a21ValueSB->value(); - if (g_model.frsky.channels[1].type==0) { - a2ratio/=10; - } - if (a21value<((a2calib*a2ratio)/255)) { - g_model.frsky.channels[1].alarms[0].value=0; - } else if (a21value>(a2ratio+(a2calib*a2ratio)/255)) { - g_model.frsky.channels[1].alarms[0].value=255; - } else { - g_model.frsky.channels[1].alarms[0].value = round((a21value-((a2calib*a2ratio)/255))/a2ratio*255); - } - updateA2Fields(); - updateSettings(); -} - -void ModelEdit::on_a22LevelCB_currentIndexChanged(int index) -{ - g_model.frsky.channels[1].alarms[1].level = index; - updateSettings(); -} - -void ModelEdit::on_a22GreaterCB_currentIndexChanged(int index) -{ - g_model.frsky.channels[1].alarms[1].greater = index; - updateSettings(); -} - -void ModelEdit::on_a22ValueSB_editingFinished() -{ - float a2ratio, a2calib, a22value; - a2ratio=g_model.frsky.channels[1].ratio<a22ValueSB->value(); - if (g_model.frsky.channels[1].type==0) { - a2ratio/=10; - } - if (a22value<((a2calib*a2ratio)/255)) { - g_model.frsky.channels[1].alarms[1].value=0; - } else if (a22value>(a2ratio+(a2calib*a2ratio)/255)) { - g_model.frsky.channels[1].alarms[1].value=255; - } else { - g_model.frsky.channels[1].alarms[1].value = round((a22value-((a2calib*a2ratio)/255))/a2ratio*255); - } - updateA2Fields(); - updateSettings(); -} - -void ModelEdit::on_rssiAlarm1CB_currentIndexChanged(int index) { - if (telemetryLock) return; - g_model.frsky.rssiAlarms[0].level=index; - updateSettings(); -} - -void ModelEdit::on_rssiAlarm2CB_currentIndexChanged(int index) { - if (telemetryLock) return; - g_model.frsky.rssiAlarms[1].level=index; - updateSettings(); -} - -void ModelEdit::on_rssiAlarm1SB_editingFinished() { - if (telemetryLock) return; - g_model.frsky.rssiAlarms[0].value=(ui->rssiAlarm1SB->value()); - updateSettings(); -} - -void ModelEdit::on_rssiAlarm2SB_editingFinished() { - if (telemetryLock) return; - g_model.frsky.rssiAlarms[1].value=(ui->rssiAlarm2SB->value()); - updateSettings(); -} - -void ModelEdit::on_AltitudeGPS_ChkB_toggled(bool checked) -{ - if (telemetryLock) return; - g_model.frsky.FrSkyGpsAlt = checked; - updateSettings(); - //AltitudeGPS_CB -} - -void ModelEdit::on_showNames_Ckb_toggled(bool checked) -{ - tabMixes(); -} -void ModelEdit::on_varioSourceCB_currentIndexChanged(int index) -{ - if (telemetryLock) return; - g_model.frsky.varioSource = index; - updateSettings(); -} - -void ModelEdit::on_varioLimitMin_DSB_editingFinished() -{ - if (telemetryLock) return; - g_model.frsky.varioMin= round(ui->varioLimitMin_DSB->value()+10); - updateSettings(); -} - -void ModelEdit::on_varioLimitMax_DSB_editingFinished() -{ - if (telemetryLock) return; - g_model.frsky.varioMax= round(ui->varioLimitMax_DSB->value()-10); - updateSettings(); -} - -void ModelEdit::on_varioLimitCenterMin_DSB_editingFinished() -{ - if (telemetryLock) return; - if (ui->varioLimitCenterMin_DSB->value()>ui->varioLimitCenterMax_DSB->value()) { - ui->varioLimitCenterMax_DSB->setValue(ui->varioLimitCenterMin_DSB->value()); - } - g_model.frsky.varioCenterMin= round((ui->varioLimitCenterMin_DSB->value()+0.5)*10); - updateSettings(); -} - -void ModelEdit::on_varioLimitMinOff_ChkB_toggled(bool checked) -{ - if (telemetryLock) return; - g_model.frsky.varioCenterMin = -16; - if (!checked) { - telemetryLock=true; - ui->varioLimitCenterMin_DSB->setValue(-2.0); - ui->varioLimitCenterMin_DSB->setEnabled(true); - telemetryLock=false; - } else { - ui->varioLimitCenterMin_DSB->setValue(-2.0); - ui->varioLimitCenterMin_DSB->setDisabled(true); - } - updateSettings(); -} - -void ModelEdit::on_varioLimitCenterMax_DSB_editingFinished() -{ - if (telemetryLock) return; - if (ui->varioLimitCenterMin_DSB->value()>ui->varioLimitCenterMax_DSB->value()) { - ui->varioLimitCenterMax_DSB->setValue(ui->varioLimitCenterMin_DSB->value()); - } - g_model.frsky.varioCenterMax= round((ui->varioLimitCenterMax_DSB->value()-0.5)*10); - updateSettings(); -} - -void ModelEdit::telBarUpdate() -{ - int index; - telemetryLock=true; - for (int i=0; i<12; i++) { - int screen=i/4; - index=barsCB[i]->currentIndex(); - if (index==TELEMETRY_SOURCE_A1 || index==TELEMETRY_SOURCE_A1 || index==TELEMETRY_SOURCE_A1_MIN || index==TELEMETRY_SOURCE_A2_MIN) { - minSB[i]->setMinimum(getBarValue(index, 0, &g_model.frsky)); - minSB[i]->setMaximum(getBarValue(index, 255, &g_model.frsky)); - minSB[i]->setSingleStep(getBarStep(index)); - maxSB[i]->setMinimum(getBarValue(index, 0, &g_model.frsky)); - maxSB[i]->setMaximum(getBarValue(index, 255, &g_model.frsky)); - maxSB[i]->setSingleStep(getBarStep(index)); - minSB[i]->setValue(getBarValue(index, g_model.frsky.screens[screen].body.bars[i%4].barMin, &g_model.frsky)); - maxSB[i]->setValue(getBarValue(index, 255-g_model.frsky.screens[screen].body.bars[i%4].barMax, &g_model.frsky)); - } - } - telemetryLock=false; -} - -void ModelEdit::ScreenTypeCBcurrentIndexChanged(int index) -{ - if (telemetryLock) return; - - QComboBox *comboBox = qobject_cast(sender()); - int screen = comboBox->objectName().right(1).toInt() -1; - telemetryLock=true; - g_model.frsky.screens[screen].type=index; - - for (int i=0; i<3; i++) { - bool isNum = (g_model.frsky.screens[i].type==0); - barsGB[i]->setVisible(!isNum); - numsGB[i]->setVisible(isNum); - } - - telemetryLock=false; - updateSettings(); -} - -void ModelEdit::telBarCBcurrentIndexChanged(int index) -{ - if (telemetryLock) return; - QComboBox *comboBox = qobject_cast(sender()); - int screenId = comboBox->objectName().mid(8,1).toInt() - 1; - int barId = comboBox->objectName().mid(10,1).toInt() - 1; - int bar=barId+screenId*4; - g_model.frsky.screens[screenId].body.bars[barId].source=index; - telemetryLock=true; - if (index==0) { - g_model.frsky.screens[screenId].body.bars[barId].barMin=0; - g_model.frsky.screens[screenId].body.bars[barId].barMax=0; - minSB[bar]->setDisabled(true); - maxSB[bar]->setDisabled(true); - } else { - minSB[bar]->setEnabled(true); - maxSB[bar]->setEnabled(true); - } - switch (index-1) { - case TELEMETRY_SOURCE_TX_BATT: - case TELEMETRY_SOURCE_A1: - case TELEMETRY_SOURCE_A1_MIN: - case TELEMETRY_SOURCE_A2: - case TELEMETRY_SOURCE_A2_MIN: - case TELEMETRY_SOURCE_CELLS_SUM: - case TELEMETRY_SOURCE_VFAS: - case TELEMETRY_SOURCE_CURRENT_MAX: - case TELEMETRY_SOURCE_CURRENT: - minSB[bar]->setDecimals(1); - maxSB[bar]->setDecimals(1); - break; - case TELEMETRY_SOURCE_CELL: - minSB[bar]->setDecimals(2); - maxSB[bar]->setDecimals(2); - break; - default: - minSB[bar]->setDecimals(0); - maxSB[bar]->setDecimals(0); - } - minSB[bar]->setMinimum(getBarValue(index, 0, &g_model.frsky)); - minSB[bar]->setMaximum(getBarValue(index, 255, &g_model.frsky)); - minSB[bar]->setSingleStep(getBarStep(index)); - maxSB[bar]->setMinimum(getBarValue(index, 0, &g_model.frsky)); - maxSB[bar]->setMaximum(getBarValue(index, 255, &g_model.frsky)); - maxSB[bar]->setSingleStep(getBarStep(index)); - minSB[bar]->setValue(getBarValue(index, g_model.frsky.screens[screenId].body.bars[barId].barMin, &g_model.frsky)); - maxSB[bar]->setValue(getBarValue(index, 255-g_model.frsky.screens[screenId].body.bars[barId].barMax, &g_model.frsky)); - telemetryLock=false; - updateSettings(); -} - -void ModelEdit::telMinSBeditingFinished() -{ - if (telemetryLock) return; - QDoubleSpinBox *spinBox = qobject_cast(sender()); - int screenId = spinBox->objectName().mid(8,1).toInt() - 1; - int barId = spinBox->objectName().right(1).toInt() - 1; - int minId = barId+screenId*4; - telemetryLock=true; - if (g_model.frsky.screens[screenId].body.bars[barId].source==TELEMETRY_SOURCE_A1 || g_model.frsky.screens[screenId].body.bars[barId].source==TELEMETRY_SOURCE_A1_MIN) { - g_model.frsky.screens[screenId].body.bars[barId].barMin=round((minSB[minId]->value()-ui->a1CalibSB->value())/getBarStep(g_model.frsky.screens[screenId].body.bars[barId].source)); - } else if (g_model.frsky.screens[screenId].body.bars[minId].source==TELEMETRY_SOURCE_A2 || g_model.frsky.screens[screenId].body.bars[minId].source==TELEMETRY_SOURCE_A2_MIN) { - g_model.frsky.screens[screenId].body.bars[barId].barMin=round((minSB[minId]->value()-ui->a2CalibSB->value())/getBarStep(g_model.frsky.screens[screenId].body.bars[barId].source)); - } else { - g_model.frsky.screens[screenId].body.bars[barId].barMin=round((minSB[minId]->value()-getBarValue(g_model.frsky.screens[screenId].body.bars[barId].source, 0, &g_model.frsky))/getBarStep(g_model.frsky.screens[screenId].body.bars[barId].source)); - } - spinBox->setValue(getBarValue(g_model.frsky.screens[screenId].body.bars[barId].source, g_model.frsky.screens[screenId].body.bars[barId].barMin, &g_model.frsky)); - if (maxSB[minId]->value()value()) { - g_model.frsky.screens[screenId].body.bars[minId].barMax=(255-g_model.frsky.screens[screenId].body.bars[barId].barMin+1); - maxSB[minId]->setValue(getBarValue(g_model.frsky.screens[screenId].body.bars[barId].source, 255-g_model.frsky.screens[screenId].body.bars[barId].barMax, &g_model.frsky)); - } - maxSB[minId]->setMinimum(getBarValue(g_model.frsky.screens[screenId].body.bars[barId].source, (g_model.frsky.screens[screenId].body.bars[barId].barMin+1), &g_model.frsky)); - telemetryLock=false; - updateSettings(); -} - -void ModelEdit::telMaxSBeditingFinished() -{ - if (telemetryLock) return; - QDoubleSpinBox *spinBox = qobject_cast(sender()); - int screenId = spinBox->objectName().mid(8,1).toInt() - 1; - int barId = spinBox->objectName().right(1).toInt() - 1; - telemetryLock=true; - if (g_model.frsky.screens[screenId].body.bars[barId].source==5) { - g_model.frsky.screens[screenId].body.bars[barId].barMax = (255-round((spinBox->value()-ui->a1CalibSB->value())/getBarStep(g_model.frsky.screens[screenId].body.bars[barId].source))); - } else if (g_model.frsky.screens[screenId].body.bars[barId].source==6) { - g_model.frsky.screens[screenId].body.bars[barId].barMax = (255-round((spinBox->value()-ui->a2CalibSB->value())/getBarStep(g_model.frsky.screens[screenId].body.bars[barId].source))); - } else { - g_model.frsky.screens[screenId].body.bars[barId].barMax = (255-round((spinBox->value()-getBarValue(g_model.frsky.screens[screenId].body.bars[barId].source, 0, &g_model.frsky))/getBarStep(g_model.frsky.screens[screenId].body.bars[barId].source) )); - } - spinBox->setValue(getBarValue(g_model.frsky.screens[screenId].body.bars[barId].source, (255-g_model.frsky.screens[screenId].body.bars[barId].barMax), &g_model.frsky)); - telemetryLock=false; - updateSettings(); -} - -void ModelEdit::on_thrTrimChkB_toggled(bool checked) -{ - g_model.thrTrim = checked; - updateSettings(); -} - -void ModelEdit::on_thrExpoChkB_toggled(bool checked) -{ - g_model.thrExpo = checked; - updateSettings(); -} - -void ModelEdit::on_AltitudeToolbar_ChkB_toggled(bool checked) -{ - g_model.frsky.altitudeDisplayed = checked; - updateSettings(); -} - -void ModelEdit::on_bcRUDChkB_toggled(bool checked) -{ - if(checked) { - g_model.beepANACenter |= BC_BIT_RUD; - } else { - g_model.beepANACenter &= ~BC_BIT_RUD; - } - updateSettings(); -} - -void ModelEdit::on_bcELEChkB_toggled(bool checked) -{ - if(checked) { - g_model.beepANACenter |= BC_BIT_ELE; - } else { - g_model.beepANACenter &= ~BC_BIT_ELE; - } - updateSettings(); -} - -void ModelEdit::on_bcTHRChkB_toggled(bool checked) -{ - if(checked) { - g_model.beepANACenter |= BC_BIT_THR; - } else { - g_model.beepANACenter &= ~BC_BIT_THR; - } - updateSettings(); -} - -void ModelEdit::on_bcAILChkB_toggled(bool checked) -{ - if(checked) { - g_model.beepANACenter |= BC_BIT_AIL; - } else { - g_model.beepANACenter &= ~BC_BIT_AIL; - } - updateSettings(); -} - -void ModelEdit::on_bcP1ChkB_toggled(bool checked) -{ - if(checked) { - g_model.beepANACenter |= BC_BIT_P1; - } else { - g_model.beepANACenter &= ~BC_BIT_P1; - } - updateSettings(); -} - -void ModelEdit::on_bcP2ChkB_toggled(bool checked) -{ - if(checked) { - g_model.beepANACenter |= BC_BIT_P2; - } else { - g_model.beepANACenter &= ~BC_BIT_P2; - } - updateSettings(); -} - -void ModelEdit::on_bcP3ChkB_toggled(bool checked) -{ - if(checked) { - g_model.beepANACenter |= BC_BIT_P3; - } else { - g_model.beepANACenter &= ~BC_BIT_P3; - } - updateSettings(); -} - -void ModelEdit::on_bcP4ChkB_toggled(bool checked) -{ - if(checked) { - g_model.beepANACenter |= BC_BIT_P4; - } else { - g_model.beepANACenter &= ~BC_BIT_P4; - } - updateSettings(); -} - -void ModelEdit::on_bcREaChkB_toggled(bool checked) -{ - if(checked) { - g_model.beepANACenter |= BC_BIT_REA; - } else { - g_model.beepANACenter &= ~BC_BIT_REA; - } - updateSettings(); -} - -void ModelEdit::on_bcREbChkB_toggled(bool checked) -{ - if(checked) { - g_model.beepANACenter |= BC_BIT_REB; - } else { - g_model.beepANACenter &= ~BC_BIT_REB; - } - updateSettings(); -} - -void ModelEdit::phaseGVValue_editingFinished() -{ - if (phasesLock) return; - QSpinBox *spinBox = qobject_cast(sender()); - int phase = spinBox->objectName().mid(5,1).toInt(); - int gvar = spinBox->objectName().mid(8,1).toInt()-1; - g_model.phaseData[phase].gvars[gvar] = spinBox->value(); - updateSettings(); -} - -void ModelEdit::GVName_editingFinished() -{ - if (phasesLock) return; - QLineEdit *lineedit = qobject_cast(sender()); - int gvar = lineedit->objectName().mid(8,1).toInt()-1; - memset(&g_model.gvars_names[gvar],0,sizeof(g_model.gvars_names[gvar])); - const char * le=lineedit->text().toAscii(); - strncpy(g_model.gvars_names[gvar], le, sizeof(g_model.gvars_names[gvar])-1); - updateSettings(); -} - -void ModelEdit::GVSource_currentIndexChanged() -{ - QComboBox *comboBox = qobject_cast(sender()); - int gvar = comboBox->objectName().mid(8,1).toInt()-1; - int index=comboBox->currentIndex(); - g_model.gvsource[gvar]=index; - updateSettings(); -} - -void ModelEdit::phaseGVUse_currentIndexChanged() -{ - if (phasesLock) return; - phasesLock=true; - QComboBox *comboBox = qobject_cast(sender()); - int phase = comboBox->objectName().mid(5,1).toInt(); - int gvar = comboBox->objectName().mid(8,1).toInt()-1; - int index=comboBox->currentIndex(); - if (index == 0) { - int value=g_model.phaseData[phase].gvars[gvar]; - if (value>1024) { - value=0; - } - gvarsSB[phase][gvar]->setValue(value); - gvarsSB[phase][gvar]->setEnabled(true); - g_model.phaseData[phase].gvars[gvar]=value; - } else { - g_model.phaseData[phase].gvars[gvar]=1024+index; - int value=gvarsSB[index+(index>phase ?0 :-1)][gvar]->value(); - gvarsSB[phase][gvar]->setValue(value); - gvarsSB[phase][gvar]->setDisabled(true); - } - phasesLock=false; - updateSettings(); -} - -void ModelEdit::phaseREValue_editingFinished() -{ - if (phasesLock) return; - QSpinBox *spinBox = qobject_cast(sender()); - int phase = spinBox->objectName().mid(5,1).toInt(); - int gvar = spinBox->objectName().mid(8,1).toInt()-1; - g_model.phaseData[phase].rotaryEncoders[gvar] = spinBox->value(); - updateSettings(); -} - -void ModelEdit::phaseREUse_currentIndexChanged() -{ - if (phasesLock) return; - phasesLock=true; - QComboBox *comboBox = qobject_cast(sender()); - int phase = comboBox->objectName().mid(5,1).toInt(); - int re = comboBox->objectName().mid(8,1).toInt()-1; - int index=comboBox->currentIndex(); - if (index == 0) { - int value=g_model.phaseData[phase].rotaryEncoders[re]; - if (value>1024) { - value=0; - } - reSB[phase][re]->setValue(value); - reSB[phase][re]->setEnabled(true); - g_model.phaseData[phase].rotaryEncoders[re]=value; - } else { - g_model.phaseData[phase].rotaryEncoders[re]=1024+index; - int value=reSB[index+(index>phase ?0 :-1)][re]->value(); - reSB[phase][re]->setValue(value); - reSB[phase][re]->setDisabled(true) ; - } - phasesLock=false; - updateSettings(); -} - -void ModelEdit::phaseTrimUse_currentIndexChanged() -{ - if (phasesLock) return; - QComboBox *comboBox = qobject_cast(sender()); - int phase = comboBox->objectName().mid(5,1).toInt(); - int trim = comboBox->objectName().mid(10,1).toInt(); - - int chn = CONVERT_MODE(trim)-1; - int index=comboBox->currentIndex(); - - if (index == 0) { - g_model.phaseData[phase].trim[chn] = g_model.phaseData[g_model.getTrimFlightPhase(chn, phase)].trim[chn]; - g_model.phaseData[phase].trimRef[chn] = -1; - } else { - g_model.phaseData[phase].trim[chn] = 0; - g_model.phaseData[phase].trimRef[chn] = index - 1 + (index > (int)phase ? 1 : 0); - } - - phasesLock = true; - displayOnePhaseOneTrim(phase, chn, NULL, phasesTrimValues[phase][trim-1], phasesTrimSliders[phase][trim-1]); - phasesLock = false; - updateSettings(); -} - -void ModelEdit::phaseTrim_valueChanged() -{ - if (phasesLock) return; - QSpinBox *spinBox = qobject_cast(sender()); - int phase = spinBox->objectName().mid(5,1).toInt(); - int trim = spinBox->objectName().mid(10,1).toInt(); - - int chn = CONVERT_MODE(trim)-1; - g_model.phaseData[phase].trim[chn] = spinBox->value(); - phasesLock=true; - phasesTrimSliders[phase][trim-1]->setValue(spinBox->value()); - phasesLock=false; - updateSettings(); -} - -void ModelEdit::phaseTrimSlider_valueChanged() -{ - if (phasesLock) return; - QSlider *slider = qobject_cast(sender()); - int phase = slider->objectName().mid(5,1).toInt(); - int trim = slider->objectName().mid(10,1).toInt(); - - int chn = CONVERT_MODE(trim)-1; - g_model.phaseData[phase].trim[chn] = slider->value(); - phasesLock=true; - phasesTrimValues[phase][trim-1]->setValue(slider->value()); - phasesLock=false; - updateSettings(); -} - -QSpinBox *ModelEdit::getNodeSB(int i) // get the SpinBox that corresponds to the selected node -{ - return spny[i]; -} - -QSpinBox *ModelEdit::getNodeSBX(int i) // get the SpinBox that corresponds to the selected node -{ - return spnx[i]; -} - -void ModelEdit::drawCurve() -{ - - if (drawing) - return; - drawing=true; - curvesLock=true; - int k,i; - QColor * plot_color[16]; - - plot_color[0]=new QColor(0,0,127); - plot_color[1]=new QColor(0,127,0); - plot_color[2]=new QColor(127,0,0); - plot_color[3]=new QColor(0,127,127); - plot_color[4]=new QColor(127,0,127); - plot_color[5]=new QColor(127,127,0); - plot_color[6]=new QColor(127,127,127); - plot_color[7]=new QColor(0,0,255); - plot_color[8]=new QColor(0,127,255); - plot_color[9]=new QColor(127,0,255); - plot_color[10]=new QColor(0,255,0); - plot_color[11]=new QColor(0,255,127); - plot_color[12]=new QColor(127,255,0); - plot_color[13]=new QColor(255,0,0); - plot_color[14]=new QColor(255,0,127); - plot_color[15]=new QColor(255,127,0); - - if(currentCurve<0 || currentCurve>15) return; - - Node *nodel = 0; - Node *nodex = 0; - - QGraphicsScene *scene = ui->curvePreview->scene(); - QPen pen; - QColor color; - scene->clear(); - - qreal width = scene->sceneRect().width(); - qreal height = scene->sceneRect().height(); - - qreal centerX = scene->sceneRect().left() + width/2; //center X - qreal centerY = scene->sceneRect().top() + height/2; //center Y - - QGraphicsSimpleTextItem *ti; - ti = scene->addSimpleText(tr("Editing curve %1").arg(currentCurve+1)); - ti->setPos(3,3); - - scene->addLine(centerX,GFX_MARGIN,centerX,height+GFX_MARGIN); - scene->addLine(GFX_MARGIN,centerY,width+GFX_MARGIN,centerY); - pen.setWidth(2); - pen.setStyle(Qt::SolidLine); - int numcurves=GetEepromInterface()->getCapability(NumCurves); - if (numcurves==0) { - numcurves=16; - } - - for(k=0; kaddLine(GFX_MARGIN + i*width/(numpoints-1),centerY - (qreal)g_model.curves[k].points[i].y*height/200,GFX_MARGIN + (i+1)*width/(numpoints-1),centerY - (qreal)g_model.curves[k].points[i+1].y*height/200,pen); - } else { - scene->addLine(centerX + (qreal)g_model.curves[k].points[i].x*width/200,centerY - (qreal)g_model.curves[k].points[i].y*height/200,centerX + (qreal)g_model.curves[k].points[i+1].x*width/200,centerY - (qreal)g_model.curves[k].points[i+1].y*height/200,pen); - } - } - } - } - int numpoints=g_model.curves[currentCurve].count; - - for(int i=0; isetColor(*plot_color[currentCurve]); - if (!g_model.curves[currentCurve].custom) { - nodex->setFixedX(true); - nodex->setPos(GFX_MARGIN + i*width/(numpoints-1),centerY - (qreal)g_model.curves[currentCurve].points[i].y*height/200); - } else { - if (i>0 && i<(numpoints-1)) { - nodex->setFixedX(false); - nodex->setMinX(g_model.curves[currentCurve].points[i-1].x+1); - nodex->setMaxX(g_model.curves[currentCurve].points[i+1].x-1); - spnx[i]->setMaximum(g_model.curves[currentCurve].points[i+1].x-1); - spnx[i]->setMinimum(g_model.curves[currentCurve].points[i-1].x+1); - } else { - nodex->setFixedX(true); - } - nodex->setPos(centerX + (qreal)g_model.curves[currentCurve].points[i].x*width/200,centerY - (qreal)g_model.curves[currentCurve].points[i].y*height/200); - } - scene->addItem(nodex); - if(i>0) scene->addItem(new Edge(nodel, nodex)); - } - curvesLock=false; - drawing=false; -} - - -bool ModelEdit::gm_insertMix(int idx) -{ - if (idx<0 || idx>=GetEepromInterface()->getCapability(Mixes) || g_model.mixData[GetEepromInterface()->getCapability(Mixes)-1].destCh > 0) { - QMessageBox::information(this, "companion9x", tr("Not enough available mixers!")); - return false; - } - - int i = g_model.mixData[idx].destCh; - memmove(&g_model.mixData[idx+1],&g_model.mixData[idx], - (GetEepromInterface()->getCapability(Mixes)-(idx+1))*sizeof(MixData) ); - memset(&g_model.mixData[idx],0,sizeof(MixData)); - g_model.mixData[idx].srcRaw = RawSource(SOURCE_TYPE_NONE); - g_model.mixData[idx].destCh = i; - g_model.mixData[idx].weight = 100; - return true; -} - -void ModelEdit::gm_deleteMix(int index) -{ - memmove(&g_model.mixData[index],&g_model.mixData[index+1], - (GetEepromInterface()->getCapability(Mixes)-(index+1))*sizeof(MixData)); - memset(&g_model.mixData[GetEepromInterface()->getCapability(Mixes)-1],0,sizeof(MixData)); -} - -void ModelEdit::gm_openMix(int index) -{ - if(index<0 || index>=GetEepromInterface()->getCapability(Mixes)) return; - - MixData mixd(g_model.mixData[index]); - updateSettings(); - tabMixes(); - - MixerDialog *g = new MixerDialog(this, &mixd, g_eeGeneral.stickMode); - if(g->exec()) { - g_model.mixData[index] = mixd; - updateSettings(); - tabMixes(); - } else { - if (mixInserted) { - gm_deleteMix(index); - } - mixInserted=false; - updateSettings(); - tabMixes(); - } -} - -int ModelEdit::getMixerIndex(unsigned int dch) -{ - int i = 0; - while ((g_model.mixData[i].destCh<=dch) && (g_model.mixData[i].destCh) && (igetCapability(Mixes))) i++; - if(i==GetEepromInterface()->getCapability(Mixes)) return -1; - return i; -} - -bool ModelEdit::gm_insertExpo(int idx) -{ - if (idx<0 || idx>=C9X_MAX_EXPOS || g_model.expoData[C9X_MAX_EXPOS-1].mode > 0) { - QMessageBox::information(this, "companion9x", tr("Not enough available expos!")); - return false; - } - - int chn = g_model.expoData[idx].chn; - memmove(&g_model.expoData[idx+1],&g_model.expoData[idx], - (C9X_MAX_EXPOS-(idx+1))*sizeof(ExpoData) ); - memset(&g_model.expoData[idx],0,sizeof(ExpoData)); - g_model.expoData[idx].chn = chn; - g_model.expoData[idx].weight = 100; - g_model.expoData[idx].mode = 3 /* TODO enum */; - return true; -} - -void ModelEdit::gm_deleteExpo(int index) -{ - memmove(&g_model.expoData[index],&g_model.expoData[index+1], - (C9X_MAX_EXPOS-(index+1))*sizeof(ExpoData)); - memset(&g_model.expoData[C9X_MAX_EXPOS-1],0,sizeof(ExpoData)); -} - -void ModelEdit::gm_openExpo(int index) -{ - if(index<0 || index>=C9X_MAX_EXPOS) return; - - ExpoData mixd(g_model.expoData[index]); - updateSettings(); - tabExpos(); - - ExpoDialog *g = new ExpoDialog(this, &mixd, g_eeGeneral.stickMode); - if(g->exec()) { - g_model.expoData[index] = mixd; - updateSettings(); - tabExpos(); - } else { - if (expoInserted) { - gm_deleteExpo(index); - } - expoInserted=false; - updateSettings(); - tabExpos(); - } -} - -int ModelEdit::getExpoIndex(unsigned int dch) -{ - unsigned int i = 0; - while (g_model.expoData[i].chn<=dch && g_model.expoData[i].mode && iitem(index.row())->data(Qt::UserRole).toByteArray().at(0); - if (idx<0) { - int i = -idx; - idx = getMixerIndex(i); //get mixer index to insert - if (!gm_insertMix(idx)) - return; - g_model.mixData[idx].destCh = i; - mixInserted=true; - } else { - mixInserted=false; - } - gm_openMix(idx); -} - - -void ModelEdit::expolistWidget_doubleClicked(QModelIndex index) -{ - expoOpen(ExposlistWidget->item(index.row())); -} - -void ModelEdit::exposDeleteList(QList list) -{ - qSort(list.begin(), list.end()); - - int iDec = 0; - foreach(int idx, list) { - gm_deleteExpo(idx-iDec); - iDec++; - } -} - -void ModelEdit::mixersDeleteList(QList list) -{ - qSort(list.begin(), list.end()); - - int iDec = 0; - foreach(int idx, list) { - gm_deleteMix(idx-iDec); - iDec++; - } -} - -QList ModelEdit::createMixListFromSelected() -{ - QList list; - foreach(QListWidgetItem *item, MixerlistWidget->selectedItems()) { - int idx= item->data(Qt::UserRole).toByteArray().at(0); - if(idx>=0 && idxgetCapability(Mixes)) list << idx; - } - return list; -} - -QList ModelEdit::createExpoListFromSelected() -{ - QList list; - foreach(QListWidgetItem *item, ExposlistWidget->selectedItems()) { - int idx= item->data(Qt::UserRole).toByteArray().at(0); - if(idx>=0 && idx list) -{ - for(int i=0; icount(); i++) { - int t = MixerlistWidget->item(i)->data(Qt::UserRole).toByteArray().at(0); - if(list.contains(t)) - MixerlistWidget->item(i)->setSelected(true); - } -} - -void ModelEdit::setSelectedByExpoList(QList list) -{ - for(int i=0; icount(); i++) { - int t = ExposlistWidget->item(i)->data(Qt::UserRole).toByteArray().at(0); - if(list.contains(t)) - ExposlistWidget->item(i)->setSelected(true); - } -} - -void ModelEdit::mixersDelete(bool ask) -{ - QMessageBox::StandardButton ret = QMessageBox::No; - - if(ask) - ret = QMessageBox::warning(this, "companion9x", - tr("Delete Selected Mixes?"), - QMessageBox::Yes | QMessageBox::No); - - - if ((ret == QMessageBox::Yes) || (!ask)) { - mixersDeleteList(createMixListFromSelected()); - updateSettings(); - tabMixes(); - } -} - -void ModelEdit::mixersCut() -{ - mixersCopy(); - mixersDelete(false); -} - -void ModelEdit::mixersCopy() -{ - - QList list = createMixListFromSelected(); - - QByteArray mxData; - foreach(int idx, list) { - mxData.append((char*)&g_model.mixData[idx],sizeof(MixData)); - } - - QMimeData *mimeData = new QMimeData; - mimeData->setData("application/x-companion9x-mix", mxData); - QApplication::clipboard()->setMimeData(mimeData,QClipboard::Clipboard); -} - -void ModelEdit::exposDelete(bool ask) -{ - QMessageBox::StandardButton ret = QMessageBox::No; - - if(ask) - ret = QMessageBox::warning(this, "companion9x", - tr("Delete Selected Expos?"), - QMessageBox::Yes | QMessageBox::No); - - - if ((ret == QMessageBox::Yes) || (!ask)) { - exposDeleteList(createExpoListFromSelected()); - updateSettings(); - tabExpos(); - } -} - -void ModelEdit::exposCut() -{ - exposCopy(); - exposDelete(false); -} - -void ModelEdit::exposCopy() -{ - QList list = createExpoListFromSelected(); - - QByteArray mxData; - foreach(int idx, list) { - mxData.append((char*)&g_model.expoData[idx],sizeof(ExpoData)); - } - - QMimeData *mimeData = new QMimeData; - mimeData->setData("application/x-companion9x-expo", mxData); - QApplication::clipboard()->setMimeData(mimeData,QClipboard::Clipboard); -} - -void ModelEdit::mimeExpoDropped(int index, const QMimeData *data, Qt::DropAction /*action*/) -{ - int idx = ExposlistWidget->item(index > 0 ? index-1 : 0)->data(Qt::UserRole).toByteArray().at(0); - pasteExpoMimeData(data, idx); -} - -void ModelEdit::mimeMixerDropped(int index, const QMimeData *data, Qt::DropAction /*action*/) -{ - int idx= MixerlistWidget->item(index > 0 ? index-1 : 0)->data(Qt::UserRole).toByteArray().at(0); - pasteMixerMimeData(data, idx); -} - -void ModelEdit::pasteMixerMimeData(const QMimeData * mimeData, int destIdx) -{ - if(mimeData->hasFormat("application/x-companion9x-mix")) { - int idx; // mixer index - int dch; - - if(destIdx<0) { - dch = -destIdx; - idx = getMixerIndex(dch) - 1; //get mixer index to insert - } else { - idx = destIdx; - dch = g_model.mixData[idx].destCh; - } - - QByteArray mxData = mimeData->data("application/x-companion9x-mix"); - - int i = 0; - while(igetCapability(Mixes)) break; - - if (!gm_insertMix(idx)) - break; - MixData *md = &g_model.mixData[idx]; - memcpy(md,mxData.mid(i,sizeof(MixData)).constData(),sizeof(MixData)); - md->destCh = dch; - i += sizeof(MixData); - } - - updateSettings(); - tabMixes(); - } -} -#include -#include -void ModelEdit::pasteExpoMimeData(const QMimeData * mimeData, int destIdx) -{ - if (mimeData->hasFormat("application/x-companion9x-expo")) { - int idx; // mixer index - int dch; - - if (destIdx < 0) { - dch = -destIdx - 1; - idx = getExpoIndex(dch) - 1; //get expo index to insert - } else { - idx = destIdx; - dch = g_model.expoData[idx].chn; - } - - QByteArray mxData = mimeData->data("application/x-companion9x-expo"); - - int i = 0; - while (i < mxData.size()) { - idx++; - if (!gm_insertExpo(idx)) - break; - ExpoData *md = &g_model.expoData[idx]; - memcpy(md, mxData.mid(i, sizeof(ExpoData)).constData(), sizeof(ExpoData)); - md->chn = dch; - i += sizeof(ExpoData); - } - - updateSettings(); - tabExpos(); - } -} - -void ModelEdit::mixersPaste() -{ - const QClipboard *clipboard = QApplication::clipboard(); - const QMimeData *mimeData = clipboard->mimeData(); - QListWidgetItem *item = MixerlistWidget->currentItem(); - if (item) - pasteMixerMimeData(mimeData, item->data(Qt::UserRole).toByteArray().at(0)); -} - -void ModelEdit::mixersDuplicate() -{ - mixersCopy(); - mixersPaste(); -} - -void ModelEdit::exposPaste() -{ - const QClipboard *clipboard = QApplication::clipboard(); - const QMimeData *mimeData = clipboard->mimeData(); - QListWidgetItem *item = ExposlistWidget->currentItem(); - if (item) - pasteExpoMimeData(mimeData, item->data(Qt::UserRole).toByteArray().at(0)); -} - -void ModelEdit::exposDuplicate() -{ - exposCopy(); - exposPaste(); -} - -void ModelEdit::mixerOpen() -{ - int idx = MixerlistWidget->currentItem()->data(Qt::UserRole).toByteArray().at(0); - if(idx<0) { - int i = -idx; - idx = getMixerIndex(i); //get mixer index to insert - if (!gm_insertMix(idx)) - return; - g_model.mixData[idx].destCh = i; - mixInserted=true; - } else { - mixInserted=false; - } - - gm_openMix(idx); -} - -void ModelEdit::mixerAdd() -{ - if (!MixerlistWidget->currentItem()) - return; - int index = MixerlistWidget->currentItem()->data(Qt::UserRole).toByteArray().at(0); - - if(index<0) { // if empty then return relavent index - int i = -index; - index = getMixerIndex(i); //get mixer index to insert - if (!gm_insertMix(index)) - return; - g_model.mixData[index].destCh = i; - mixInserted=true; - } else { - index++; - if (!gm_insertMix(index)) - return; - g_model.mixData[index].destCh = g_model.mixData[index-1].destCh; - mixInserted=true; - } - gm_openMix(index); -} - -void ModelEdit::expoOpen(QListWidgetItem *item) -{ - if (!item) - item = ExposlistWidget->currentItem(); - - int idx = item->data(Qt::UserRole).toByteArray().at(0); - if (idx<0) { - int ch = -idx-1; - idx = getExpoIndex(ch); // get expo index to insert - if (!gm_insertExpo(idx)) - return; - g_model.expoData[idx].chn = ch; - expoInserted=true; - } else { - expoInserted=false; - } - gm_openExpo(idx); -} - -void ModelEdit::expoAdd() -{ - int index = ExposlistWidget->currentItem()->data(Qt::UserRole).toByteArray().at(0); - - if(index<0) { // if empty then return relevant index - expoOpen(); - } else { - index++; - if (!gm_insertExpo(index)) - return; - g_model.expoData[index].chn = g_model.expoData[index-1].chn; - } - gm_openExpo(index); -} - -void ModelEdit::mixerlistWidget_customContextMenuRequested(QPoint pos) -{ - QPoint globalPos = MixerlistWidget->mapToGlobal(pos); - - const QClipboard *clipboard = QApplication::clipboard(); - const QMimeData *mimeData = clipboard->mimeData(); - bool hasData = mimeData->hasFormat("application/x-companion9x-mix"); - - QMenu contextMenu; - contextMenu.addAction(QIcon(":/images/add.png"), tr("&Add"),this,SLOT(mixerAdd()),tr("Ctrl+A")); - contextMenu.addAction(QIcon(":/images/edit.png"), tr("&Edit"),this,SLOT(mixerOpen()),tr("Enter")); - contextMenu.addSeparator(); - contextMenu.addAction(QIcon(":/images/clear.png"), tr("&Delete"),this,SLOT(mixersDelete()),tr("Delete")); - contextMenu.addAction(QIcon(":/images/copy.png"), tr("&Copy"),this,SLOT(mixersCopy()),tr("Ctrl+C")); - contextMenu.addAction(QIcon(":/images/cut.png"), tr("&Cut"),this,SLOT(mixersCut()),tr("Ctrl+X")); - contextMenu.addAction(QIcon(":/images/paste.png"), tr("&Paste"),this,SLOT(mixersPaste()),tr("Ctrl+V"))->setEnabled(hasData); - contextMenu.addAction(QIcon(":/images/duplicate.png"), tr("Du&plicate"),this,SLOT(mixersDuplicate()),tr("Ctrl+U")); - contextMenu.addSeparator(); - contextMenu.addAction(QIcon(":/images/moveup.png"), tr("Move Up"),this,SLOT(moveMixUp()),tr("Ctrl+Up")); - contextMenu.addAction(QIcon(":/images/movedown.png"), tr("Move Down"),this,SLOT(moveMixDown()),tr("Ctrl+Down")); - - contextMenu.exec(globalPos); -} - -void ModelEdit::expolistWidget_customContextMenuRequested(QPoint pos) -{ - QPoint globalPos = ExposlistWidget->mapToGlobal(pos); - - const QClipboard *clipboard = QApplication::clipboard(); - const QMimeData *mimeData = clipboard->mimeData(); - bool hasData = mimeData->hasFormat("application/x-companion9x-expo"); - - QMenu contextMenu; - contextMenu.addAction(QIcon(":/images/add.png"), tr("&Add"),this,SLOT(expoAdd()),tr("Ctrl+A")); - contextMenu.addAction(QIcon(":/images/edit.png"), tr("&Edit"),this,SLOT(expoOpen()),tr("Enter")); - contextMenu.addSeparator(); - contextMenu.addAction(QIcon(":/images/clear.png"), tr("&Delete"),this,SLOT(exposDelete()),tr("Delete")); - contextMenu.addAction(QIcon(":/images/copy.png"), tr("&Copy"),this,SLOT(exposCopy()),tr("Ctrl+C")); - contextMenu.addAction(QIcon(":/images/cut.png"), tr("&Cut"),this,SLOT(exposCut()),tr("Ctrl+X")); - contextMenu.addAction(QIcon(":/images/paste.png"), tr("&Paste"),this,SLOT(exposPaste()),tr("Ctrl+V"))->setEnabled(hasData); - contextMenu.addAction(QIcon(":/images/duplicate.png"), tr("Du&plicate"),this,SLOT(exposDuplicate()),tr("Ctrl+U")); - contextMenu.addSeparator(); - contextMenu.addAction(QIcon(":/images/moveup.png"), tr("Move Up"),this,SLOT(moveExpoUp()),tr("Ctrl+Up")); - contextMenu.addAction(QIcon(":/images/movedown.png"), tr("Move Down"),this,SLOT(moveExpoDown()),tr("Ctrl+Down")); - - contextMenu.exec(globalPos); -} - -void ModelEdit::cswPaste() -{ - const QClipboard *clipboard = QApplication::clipboard(); - const QMimeData *mimeData = clipboard->mimeData(); - if (mimeData->hasFormat("application/x-companion9x-csw")) { - QByteArray cswData = mimeData->data("application/x-companion9x-csw"); - - CustomSwData *csw = &g_model.customSw[selectedSwitch]; - memcpy(csw, cswData.mid(0, sizeof(CustomSwData)).constData(), sizeof(CustomSwData)); - updateSettings(); - updateSelectedSwitch(); - } -} - -void ModelEdit::cswDelete() -{ - g_model.customSw[selectedSwitch].clear(); - updateSettings(); - updateSelectedSwitch(); -} - -void ModelEdit::cswCopy() -{ - QByteArray cswData; - cswData.append((char*)&g_model.customSw[selectedSwitch],sizeof(CustomSwData)); - QMimeData *mimeData = new QMimeData; - mimeData->setData("application/x-companion9x-csw", cswData); - QApplication::clipboard()->setMimeData(mimeData,QClipboard::Clipboard); -} - -void ModelEdit::updateSelectedSwitch() -{ - switchEditLock = true; - populateCSWCB(csw[selectedSwitch], g_model.customSw[selectedSwitch].func); - setSwitchWidgetVisibility(selectedSwitch); - switchEditLock = false; -} - -void ModelEdit::cswCut() -{ - cswCopy(); - cswDelete(); -} - -void ModelEdit::csw_customContextMenuRequested(QPoint pos) -{ - QLabel *label = (QLabel *)sender(); - if (!label) - return; - QString name=label->objectName(); - if (!name.startsWith("cswlabel")) - return; - selectedSwitch=name.mid(9,2).toInt()-1; - - QPoint globalPos = label->mapToGlobal(pos); - - const QClipboard *clipboard = QApplication::clipboard(); - const QMimeData *mimeData = clipboard->mimeData(); - bool hasData = mimeData->hasFormat("application/x-companion9x-csw"); - - QMenu contextMenu; - contextMenu.addAction(QIcon(":/images/clear.png"), tr("&Delete"),this,SLOT(cswDelete()),tr("Delete")); - contextMenu.addAction(QIcon(":/images/copy.png"), tr("&Copy"),this,SLOT(cswCopy()),tr("Ctrl+C")); - contextMenu.addAction(QIcon(":/images/cut.png"), tr("&Cut"),this,SLOT(cswCut()),tr("Ctrl+X")); - contextMenu.addAction(QIcon(":/images/paste.png"), tr("&Paste"),this,SLOT(cswPaste()),tr("Ctrl+V"))->setEnabled(hasData); - - contextMenu.exec(globalPos); -} - -void ModelEdit::fsw_customContextMenuRequested(QPoint pos) -{ - QLabel *label = (QLabel *)sender(); - if (!label) - return; - int fsw=label->property("FunctionId").toInt(); - if (!(fsw>0 && fsw<=32)) - return; - selectedFunction=fsw-1; - - QPoint globalPos = label->mapToGlobal(pos); - - const QClipboard *clipboard = QApplication::clipboard(); - const QMimeData *mimeData = clipboard->mimeData(); - bool hasData = mimeData->hasFormat("application/x-companion9x-fsw"); - - QMenu contextMenu; - contextMenu.addAction(QIcon(":/images/clear.png"), tr("&Delete"),this,SLOT(fswDelete()),tr("Delete")); - contextMenu.addAction(QIcon(":/images/copy.png"), tr("&Copy"),this,SLOT(fswCopy()),tr("Ctrl+C")); - contextMenu.addAction(QIcon(":/images/cut.png"), tr("&Cut"),this,SLOT(fswCut()),tr("Ctrl+X")); - contextMenu.addAction(QIcon(":/images/paste.png"), tr("&Paste"),this,SLOT(fswPaste()),tr("Ctrl+V"))->setEnabled(hasData); - - contextMenu.exec(globalPos); -} - -void ModelEdit::fswPaste() -{ - const QClipboard *clipboard = QApplication::clipboard(); - const QMimeData *mimeData = clipboard->mimeData(); - if (mimeData->hasFormat("application/x-companion9x-fsw")) { - QByteArray fswData = mimeData->data("application/x-companion9x-fsw"); - - FuncSwData *fsw = &g_model.funcSw[selectedFunction]; - memcpy(fsw, fswData.mid(0, sizeof(FuncSwData)).constData(), sizeof(FuncSwData)); - updateSettings(); - tabCustomFunctions(); - } -} - -void ModelEdit::fswDelete() -{ - g_model.funcSw[selectedFunction].clear(); - updateSettings(); - tabCustomFunctions(); -} - -void ModelEdit::fswCopy() -{ - QByteArray fswData; - fswData.append((char*)&g_model.funcSw[selectedFunction],sizeof(FuncSwData)); - QMimeData *mimeData = new QMimeData; - mimeData->setData("application/x-companion9x-fsw", fswData); - QApplication::clipboard()->setMimeData(mimeData,QClipboard::Clipboard); -} - -void ModelEdit::fswCut() -{ - fswCopy(); - fswDelete(); -} - -void ModelEdit::mixerlistWidget_KeyPress(QKeyEvent *event) -{ - if(event->matches(QKeySequence::SelectAll)) mixerAdd(); //Ctrl A - if(event->matches(QKeySequence::Delete)) mixersDelete(); - if(event->matches(QKeySequence::Copy)) mixersCopy(); - if(event->matches(QKeySequence::Cut)) mixersCut(); - if(event->matches(QKeySequence::Paste)) mixersPaste(); - if(event->matches(QKeySequence::Underline)) mixersDuplicate(); - - if(event->key()==Qt::Key_Return || event->key()==Qt::Key_Enter) mixerOpen(); - if(event->matches(QKeySequence::MoveToNextLine)) - MixerlistWidget->setCurrentRow(MixerlistWidget->currentRow()+1); - if(event->matches(QKeySequence::MoveToPreviousLine)) - MixerlistWidget->setCurrentRow(MixerlistWidget->currentRow()-1); -} - -void ModelEdit::expolistWidget_KeyPress(QKeyEvent *event) -{ - if(event->matches(QKeySequence::SelectAll)) expoAdd(); //Ctrl A - if(event->matches(QKeySequence::Delete)) exposDelete(); - if(event->matches(QKeySequence::Copy)) exposCopy(); - if(event->matches(QKeySequence::Cut)) exposCut(); - if(event->matches(QKeySequence::Paste)) exposPaste(); - if(event->matches(QKeySequence::Underline)) exposDuplicate(); - - if(event->key()==Qt::Key_Return || event->key()==Qt::Key_Enter) expoOpen(); - if(event->matches(QKeySequence::MoveToNextLine)) - ExposlistWidget->setCurrentRow(ExposlistWidget->currentRow()+1); - if(event->matches(QKeySequence::MoveToPreviousLine)) - ExposlistWidget->setCurrentRow(ExposlistWidget->currentRow()-1); -} - -int ModelEdit::gm_moveMix(int idx, bool dir) //true=inc=down false=dec=up -{ - if(idx>GetEepromInterface()->getCapability(Mixes) || (idx==0 && !dir) || (idx==GetEepromInterface()->getCapability(Mixes) && dir)) return idx; - - int tdx = dir ? idx+1 : idx-1; - MixData &src=g_model.mixData[idx]; - MixData &tgt=g_model.mixData[tdx]; - - unsigned int outputs = GetEepromInterface()->getCapability(Outputs); - if((src.destCh==0) || (src.destCh>outputs) || (tgt.destCh>outputs)) return idx; - - if(tgt.destCh!=src.destCh) { - if ((dir) && (src.destCh0)) src.destCh--; - return idx; - } - - //flip between idx and tgt - MixData temp; - memcpy(&temp,&src,sizeof(MixData)); - memcpy(&src,&tgt,sizeof(MixData)); - memcpy(&tgt,&temp,sizeof(MixData)); - return tdx; -} - -void ModelEdit::moveMixUp() -{ - QList list = createMixListFromSelected(); - QList highlightList; - foreach(int idx, list) { - highlightList << gm_moveMix(idx, false); - } - updateSettings(); - tabMixes(); - setSelectedByMixList(highlightList); -} - -void ModelEdit::moveMixDown() -{ - QList list = createMixListFromSelected(); - QList highlightList; - foreach(int idx, list) { - highlightList << gm_moveMix(idx, true); - } - updateSettings(); - tabMixes(); - setSelectedByMixList(highlightList); -} - -int ModelEdit::gm_moveExpo(int idx, bool dir) //true=inc=down false=dec=up -{ - if(idx>C9X_MAX_EXPOS || (idx==C9X_MAX_EXPOS && dir)) return idx; - - int tdx = dir ? idx+1 : idx-1; - ExpoData temp; - temp.clear(); - ExpoData &src=g_model.expoData[idx]; - ExpoData &tgt=g_model.expoData[tdx]; - if (!dir && tdx<0 && src.chn>0) { - src.chn--; - return idx; - } else if (!dir && tdx<0) { - return idx; - } - - if(memcmp(&src,&temp,sizeof(ExpoData))==0) return idx; - bool tgtempty=(memcmp(&tgt,&temp,sizeof(ExpoData))==0 ? 1:0); - if(tgt.chn!=src.chn || tgtempty) { - if ((dir) && (src.chn<(NUM_STICKS-1))) src.chn++; - if ((!dir) && (src.chn>0)) src.chn--; - return idx; - } - - //flip between idx and tgt - memcpy(&temp,&src,sizeof(ExpoData)); - memcpy(&src,&tgt,sizeof(ExpoData)); - memcpy(&tgt,&temp,sizeof(ExpoData)); - return tdx; -} - -void ModelEdit::moveExpoUp() -{ - QList list = createExpoListFromSelected(); - QList highlightList; - foreach(int idx, list) { - highlightList << gm_moveExpo(idx, false); - } - updateSettings(); - tabExpos(); - setSelectedByExpoList(highlightList); -} - -void ModelEdit::moveExpoDown() -{ - QList list = createExpoListFromSelected(); - QList highlightList; - foreach(int idx, list) { - highlightList << gm_moveExpo(idx, true); - } - updateSettings(); - tabExpos(); - setSelectedByExpoList(highlightList); -} - -void ModelEdit::launchSimulation() -{ - if (GetEepromInterface()->getSimulator()) { - RadioData *simuData = new RadioData; - *simuData = radioData; - simuData->models[id_model] = g_model; - if (GetEepromInterface()->getCapability(SimulatorType)) { - xsimulatorDialog sd(this); - sd.loadParams(*simuData, id_model); - sd.exec(); - } else { - simulatorDialog sd(this); - sd.loadParams(*simuData, id_model); - sd.exec(); - } - } else { - QMessageBox::warning(NULL, - QObject::tr("Warning"), - QObject::tr("Simulator for this firmware is not yet available")); - } -} - -void ModelEdit::on_pushButton_clicked() -{ - launchSimulation(); -} - -void ModelEdit::resetCurve() -{ - QPushButton *button = (QPushButton *)sender(); - int btn=button->objectName().mid(button->objectName().lastIndexOf("_")+1).toInt()-1; - if (btn!=currentCurve) { - int res = QMessageBox::question(this, "companion9x",tr("Are you sure you want to delete curve %1 ?").arg(btn+1),QMessageBox::Yes | QMessageBox::No); - if (res == QMessageBox::No) { - return; - } - } - memset(g_model.curves[btn].name,0,sizeof(g_model.curves[btn].name)); - ui->cname_LE->clear(); - g_model.curves[btn].count=5; - g_model.curves[btn].custom=false; - curvesLock=true; - for (int i=0; i<17; i++) { - g_model.curves[btn].points[i].x=0; - g_model.curves[btn].points[i].y=0; - spnx[i]->setMinimum(-100); - spnx[i]->setMaximum(100); - spnx[i]->setValue(0); - spny[i]->setValue(0); - } - curvesLock=false; - updateCurvesTab(); - if (btn==currentCurve) { - ui->curvetype_CB->setCurrentIndex(2); - } - updateSettings(); - drawCurve(); -} - -void ModelEdit::editCurve() -{ - QPushButton *button = (QPushButton *)sender(); - int btn=button->objectName().mid(button->objectName().lastIndexOf("_")+1).toInt()-1; - setCurrentCurve(btn); - drawCurve(); -} - -void ModelEdit::plotCurve(bool checked) -{ - QCheckBox *chk = (QCheckBox *)sender(); - int btn=chk->objectName().mid(chk->objectName().lastIndexOf("_")+1).toInt()-1; - plot_curve[btn] = checked; - drawCurve(); -} - -void ModelEdit::on_T2ThrTrgChkB_toggled(bool checked) -{ - g_model.t2throttle = checked; - updateSettings(); -} - -void ModelEdit::on_extendedLimitsChkB_toggled(bool checked) -{ - g_model.extendedLimits = checked; - setLimitMinMax(); - updateSettings(); -} - -void ModelEdit::on_thrwarnChkB_toggled(bool checked) -{ - if (switchEditLock) - return; - g_model.disableThrottleWarning = checked; - updateSettings(); -} - -void ModelEdit::on_thrrevChkB_toggled(bool checked) -{ - g_model.throttleReversed = checked; - updateSettings(); -} - -void ModelEdit::on_extendedTrimsChkB_toggled(bool checked) -{ - g_model.extendedTrims = checked; - tabPhases(); - updateSettings(); -} - -void ModelEdit::setLimitMinMax() -{ - on_numChannelsSB_editingFinished(); - on_numChannelsSB_2_editingFinished(); - on_numChannelsSB_3_editingFinished(); - int v = g_model.extendedLimits ? 125 : 100; - foreach(QSpinBox *sb, findChildren(QRegExp("minSB_[0-9]+"))) { - sb->setMaximum(25); - sb->setMinimum(-v); - } - foreach(QSpinBox *sb, findChildren(QRegExp("maxSB_[0-9]+"))) { - sb->setMaximum(v); - sb->setMinimum(-25); - } -} - - -void ModelEdit::safetySwitchesEdited() -{ - for(int i=0; iitemData(safetySwitchSwtch[i]->currentIndex()).toInt()); - g_model.safetySw[i].val = safetySwitchValue[i]->value(); - } - updateSettings(); -} - - - -void ModelEdit::on_templateList_doubleClicked(QModelIndex index) -{ - QString text = ui->templateList->item(index.row())->text(); - if (index.row()==13) { - uint64_t result=0xffffffff; - modelConfigDialog *mcw = new modelConfigDialog(radioData, &result, this); - mcw->exec(); - if (result!=0xffffffff) { - applyNumericTemplate(result); - updateSettings(); - tabMixes(); - } - } else { - int res = QMessageBox::question(this,tr("Apply Template?"),tr("Apply template \"%1\"?").arg(text),QMessageBox::Yes | QMessageBox::No); - if(res!=QMessageBox::Yes) return; - applyTemplate(index.row()); - updateSettings(); - tabMixes(); - } -} - - -MixData* ModelEdit::setDest(uint8_t dch) -{ - uint8_t i = 0; - while ((g_model.mixData[i].destCh<=dch) && (g_model.mixData[i].destCh) && (igetCapability(Mixes))) i++; - if(i==GetEepromInterface()->getCapability(Mixes)) return &g_model.mixData[0]; - - memmove(&g_model.mixData[i+1],&g_model.mixData[i], - (GetEepromInterface()->getCapability(Mixes)-(i+1))*sizeof(MixData) ); - memset(&g_model.mixData[i],0,sizeof(MixData)); - g_model.mixData[i].destCh = dch; - return &g_model.mixData[i]; -} - -void ModelEdit::clearExpos(bool ask) -{ - if(ask) { - int res = QMessageBox::question(this,tr("Clear Expos?"),tr("Really clear all the expos?"),QMessageBox::Yes | QMessageBox::No); - if(res!=QMessageBox::Yes) return; - } - memset(g_model.expoData,0,sizeof(g_model.expoData)); //clear all expos - updateSettings(); - tabExpos(); -} - -void ModelEdit::clearMixes(bool ask) -{ - if(ask) { - int res = QMessageBox::question(this,tr("Clear Mixes?"),tr("Really clear all the mixes?"),QMessageBox::Yes | QMessageBox::No); - if(res!=QMessageBox::Yes) return; - } - memset(g_model.mixData,0,sizeof(g_model.mixData)); //clear all mixes - updateSettings(); - tabMixes(); -} - -void ModelEdit::clearCurves(bool ask) -{ - if(ask) { - int res = QMessageBox::question(this,tr("Clear Curves?"),tr("Really clear all the curves?"),QMessageBox::Yes | QMessageBox::No); - if(res!=QMessageBox::Yes) return; - } - curvesLock=true; - if (!GetEepromInterface()->getCapability(CustomCurves)){ - ui->curvetype_CB->setDisabled(true); - int count=0; - for (int j=0; j< GetEepromInterface()->getCapability(NumCurves3); j++) { - g_model.curves[count].count=3; - g_model.curves[count].custom=false; - memset(g_model.curves[j].name,0,sizeof(g_model.curves[j].name)); - for (int i=0; i<17; i++) { - g_model.curves[count].points[i].x=0; - g_model.curves[count].points[i].y=0; - } - count++; - } - for (int j=0; j< GetEepromInterface()->getCapability(NumCurves5); j++) { - g_model.curves[count].count=5; - g_model.curves[count].custom=false; - memset(g_model.curves[j].name,0,sizeof(g_model.curves[j].name)); - for (int i=0; i<17; i++) { - g_model.curves[count].points[i].x=0; - g_model.curves[count].points[i].y=0; - } - count++; - } - for (int j=0; j< GetEepromInterface()->getCapability(NumCurves9); j++) { - g_model.curves[count].count=9; - g_model.curves[count].custom=false; - memset(g_model.curves[j].name,0,sizeof(g_model.curves[j].name)); - for (int i=0; i<17; i++) { - g_model.curves[count].points[i].x=0; - g_model.curves[count].points[i].y=0; - } - count++; - } - for (int j=count; j<16; j++) { - g_model.curves[j].count=5; - g_model.curves[j].custom=false; - memset(g_model.curves[j].name,0,sizeof(g_model.curves[j].name)); - for (int i=0; i<17; i++) { - g_model.curves[j].points[i].x=0; - g_model.curves[j].points[i].y=0; - } - } - } else { - for (int j=0; j<16; j++) { - g_model.curves[j].count=5; - g_model.curves[j].custom=false; - memset(g_model.curves[j].name,0,sizeof(g_model.curves[j].name)); - for (int i=0; i<17; i++) { - g_model.curves[j].points[i].x=0; - g_model.curves[j].points[i].y=0; - } - } - } - for (int i=0; i<17; i++) { - spnx[i]->setMinimum(-100); - spnx[i]->setMaximum(100); - spnx[i]->setValue(0); - spny[i]->setValue(0); - } - currentCurve=0; - curvesLock=false; - if (GetEepromInterface()->getCapability(NumCurves3)>0) { - ui->curvetype_CB->setCurrentIndex(0); - } else { - ui->curvetype_CB->setCurrentIndex(2); - } - ui->cname_LE->clear(); - updateSettings(); - drawCurve(); -} - -void ModelEdit::setCurve(uint8_t c, int8_t ar[]) -{ - int len=sizeof(ar)/sizeof(int8_t); - if (GetEepromInterface()->getCapability(CustomCurves)) { - if (GetEepromInterface()->getCapability(NumCurves)>c) { - if (len<9) { - g_model.curves[c].count=5; - g_model.curves[c].custom=false; - for (int i=0; i< 5; i++) { - g_model.curves[c].points[i].y=ar[i]; - } - } else { - g_model.curves[c].count=5; - g_model.curves[c].custom=false; - for (int i=0; i< 5; i++) { - g_model.curves[c].points[i].y=ar[i]; - } - } - } - } else { - if (len<9) { - g_model.curves[c].count=5; - g_model.curves[c].custom=false; - for (int i=0; i< 5; i++) { - g_model.curves[c].points[i].y=ar[i]; - } - } else { - g_model.curves[c+8].count=5; - g_model.curves[c+8].custom=false; - for (int i=0; i< 5; i++) { - g_model.curves[c+8].points[i].y=ar[i]; - } - } - } -} - -void ModelEdit::setSwitch(unsigned int idx, unsigned int func, int v1, int v2) -{ - g_model.customSw[idx-1].func = func; - g_model.customSw[idx-1].val1 = v1; - g_model.customSw[idx-1].val2 = v2; -} - -void ModelEdit::applyNumericTemplate(uint64_t tpl) -{ - clearCurves(false); - clearExpos(false); - clearMixes(false); - int8_t heli_ar1[] = {-100, -20, 30, 70, 90}; - int8_t heli_ar2[] = {80, 70, 60, 70, 100}; - int8_t heli_ar3[] = {100, 90, 80, 90, 100}; - int8_t heli_ar4[] = {-30, -15, 0, 50, 100}; - int8_t heli_ar5[] = {-100, -50, 0, 50, 100}; - bool rx[10]; - for (int i=0; i<10 ; i++) { - rx[i]=false; - } - int thrsw=GetEepromInterface()->getCapability(GetThrSwitch); - MixData *md = &g_model.mixData[0]; - uint8_t spo2ch=(tpl & 0x0F); - tpl>>=4; - uint8_t spo1ch=(tpl & 0x0F); - tpl>>=4; - uint8_t fla2ch=(tpl & 0x0F); - tpl>>=4; - uint8_t fla1ch=(tpl & 0x0F); - tpl>>=4; - uint8_t rud2ch=(tpl & 0x0F); - tpl>>=4; - uint8_t ele2ch=(tpl & 0x0F); - tpl>>=4; - uint8_t ail2ch=(tpl & 0x0F); - tpl>>=4; - uint8_t chstyle=(tpl & 0x03); - tpl>>=2; - uint8_t gyro=(tpl & 0x03); - tpl>>=2; - uint8_t tailtype=(tpl & 0x03); - tpl>>=2; - uint8_t swashtype=(tpl & 0x07); - tpl>>=3; - uint8_t ruddertype=(tpl & 0x03); - tpl>>=2; - uint8_t spoilertype=(tpl & 0x3); - tpl>>=2; - uint8_t flaptype=(tpl & 0x03); - tpl>>=2; - uint8_t ailerontype=(tpl & 0x03); - tpl>>=2; - uint8_t enginetype=(tpl & 0x03); - tpl>>=2; - uint8_t modeltype=(tpl & 0x03); - - #define ICC(x) icc[(x)-1] - uint8_t icc[4] = {0}; - for(uint8_t i=1; i<=4; i++) //generate inverse array - for(uint8_t j=1; j<=4; j++) if(CC(i)==j) icc[j-1]=i; - - int ailerons; - int flaps; - int throttle; - int spoilers; - int elevators; - int rudders; - int sign; - uint8_t rxch; - switch (modeltype) { - case 0: - ailerons=ailerontype; - flaps=flaptype; - throttle=1; - switch (tailtype) { - case 0: - case 1: - rudders=1; - elevators=1; - break; - case 2: - rudders=1; - elevators=2; - break; - } - rxch=ICC(STK_RUD); - md=setDest(rxch); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 0); md->weight=100; md->swtch=RawSwitch();strncpy(md->name, tr("RUD").toAscii().data(),6); - if (tailtype==1) { - md=setDest(rxch); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 1); md->weight=-100; md->swtch=RawSwitch();strncpy(md->name, tr("ELE").toAscii().data(),6); - } - rx[rxch-1]=true; - rxch=ICC(STK_ELE); - if (tailtype==1) { - md=setDest(rxch); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 0); md->weight=100; md->swtch=RawSwitch();strncpy(md->name, tr("RUD").toAscii().data(),6); - } - md=setDest(rxch); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 1); md->weight=100; md->swtch=RawSwitch();strncpy(md->name, tr("ELE").toAscii().data(),6); - rx[rxch-1]=true; - rxch=ICC(STK_THR); - md=setDest(rxch); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight=100; md->swtch=RawSwitch();strncpy(md->name, tr("THR").toAscii().data(),6); - rx[rxch-1]=true; - if (ail2ch > 0) { - rx[ail2ch-1]=true; - } - if (ele2ch > 0) { - rx[ele2ch-1]=true; - } - if (fla1ch > 0) { - rx[fla1ch-1]=true; - } - if (fla2ch > 0) { - rx[fla2ch-1]=true; - } - if (ailerons>0) { - rxch=ICC(STK_AIL); - md=setDest(rxch); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 3); md->weight=100; md->swtch=RawSwitch();strncpy(md->name, tr("AIL").toAscii().data(),6); - rx[rxch-1]=true; - } - if (ailerons>1) { - if (ail2ch==0) { - for (int j=0; j<10 ; j++) { - if (!rx[j]) { - md=setDest(j+1); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 3); md->weight=100; md->swtch=RawSwitch();strncpy(md->name, tr("AIL2").toAscii().data(),6); - rx[j]=true; - break; - } - } - } else { - md=setDest(ail2ch); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 3); md->weight=100; md->swtch=RawSwitch();strncpy(md->name, tr("AIL2").toAscii().data(),6); - } - } - if (elevators>1) { - if (ele2ch==0) { - for (int j=0; j<10 ; j++) { - if (!rx[j]) { - md=setDest(j+1); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 1); md->weight=-100; md->swtch=RawSwitch();;strncpy(md->name, tr("ELE2").toAscii().data(),6); - rx[j]=true; - break; - } - } - }else{ - md=setDest(ele2ch); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 1); md->weight=-100; md->swtch=RawSwitch();;strncpy(md->name, tr("ELE2").toAscii().data(),6); - } - } - if (flaps>0) { - md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_MAX); md->weight=-100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,-DSW_AIL);strncpy(md->name, tr("FLAPS").toAscii().data(),6); md->speedUp=4; md->speedDown=4; - md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 5); md->weight=100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_AIL);strncpy(md->name, tr("FLAPS").toAscii().data(),6); md->speedUp=4; md->speedDown=4; - } - sign=-1; - for (uint8_t i=0; i< flaps; i++) { - sign*=-1; - int index; - if (i==0) { - index=fla1ch; - } else { - index=fla2ch; - } - if (index==0) { - for (int j=0; j<10 ; j++) { - if (!rx[j]) { - md=setDest(j+1); md->srcRaw=RawSource(SOURCE_TYPE_CH, 10); md->weight=100*sign; md->sOffset=0; md->swtch=RawSwitch();strncpy(md->name, tr("FLAP%1").arg(i+1).toAscii().data(),6); - rx[j]=true; - break; - } - } - } else { - md=setDest(index); md->srcRaw=RawSource(SOURCE_TYPE_CH, 10); md->weight=100*sign; md->sOffset=0; md->swtch=RawSwitch();strncpy(md->name, tr("FLAP%1").arg(i+1).toAscii().data(),6); - } - } - break; - case 1: - setCurve(CURVE5(1),heli_ar1); - setCurve(CURVE5(2),heli_ar2); - setCurve(CURVE5(3),heli_ar3); - setCurve(CURVE5(4),heli_ar4); - setCurve(CURVE5(5),heli_ar5); - setCurve(CURVE5(6),heli_ar5); - switch (swashtype) { - case 0: - g_model.swashRingData.type = HELI_SWASH_TYPE_90; - break; - case 1: - g_model.swashRingData.type = HELI_SWASH_TYPE_120; - break; - case 2: - g_model.swashRingData.type = HELI_SWASH_TYPE_120X; - break; - case 3: - g_model.swashRingData.type = HELI_SWASH_TYPE_140; - break; - case 4: - g_model.swashRingData.type = HELI_SWASH_TYPE_NONE; - break; - } - g_model.swashRingData.collectiveSource = RawSource(SOURCE_TYPE_CH, 10); - - if (chstyle==0) { - if (swashtype!=4) { - md=setDest(1); md->srcRaw=RawSource(SOURCE_TYPE_CYC, 0); md->weight= 100; md->swtch=RawSwitch();strncpy(md->name, tr("ELE").toAscii().data(),6); - md=setDest(2); md->srcRaw=RawSource(SOURCE_TYPE_CYC, 1); md->weight= 100; md->swtch=RawSwitch();strncpy(md->name, tr("AIL").toAscii().data(),6); - md=setDest(3); md->srcRaw=RawSource(SOURCE_TYPE_CYC, 2); md->weight= 100; md->swtch=RawSwitch();strncpy(md->name, tr("PITCH").toAscii().data(),6); - } else { - md=setDest(1); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 3); md->weight= 100; md->swtch=RawSwitch();strncpy(md->name, tr("ELE").toAscii().data(),6); - md=setDest(2); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 1); md->weight= 100; md->swtch=RawSwitch();strncpy(md->name, tr("AIL").toAscii().data(),6); - md=setDest(3); md->srcRaw=RawSource(SOURCE_TYPE_CH, 10); md->weight= 100; md->swtch=RawSwitch();strncpy(md->name, tr("PITCH").toAscii().data(),6); - } - md=setDest(4); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 0); md->weight=100; md->swtch=RawSwitch();strncpy(md->name, tr("RUD").toAscii().data(),6); - md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight= 100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID0); md->curve=CV(1); md->carryTrim=TRIM_OFF; - md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight= 100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID1); md->curve=CV(2); md->carryTrim=TRIM_OFF; - md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight= 100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID2); md->curve=CV(3); md->carryTrim=TRIM_OFF; - md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_MAX); md->weight=-100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,thrsw); md->mltpx=MLTPX_REP; - switch (gyro) { - case 1: - md=setDest(6); md->srcRaw=RawSource(SOURCE_TYPE_MAX); md->weight=30; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,-DSW_GEA);strncpy(md->name, tr("GYRO").toAscii().data(),6); - md=setDest(6); md->srcRaw=RawSource(SOURCE_TYPE_MAX); md->weight=-30; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_GEA);strncpy(md->name, tr("GYRO").toAscii().data(),6); - break; - case 2: - md=setDest(6); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 5); md->weight= 50; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,-DSW_GEA); md->sOffset=100;strncpy(md->name, tr("GYRO").toAscii().data(),6); - md=setDest(6); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 5); md->weight=-50; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_GEA); md->sOffset=100;strncpy(md->name, tr("GYRO").toAscii().data(),6); - break; - } - } else { - if (swashtype!=4) { - md=setDest(1); md->srcRaw=RawSource(SOURCE_TYPE_CYC, 1); md->weight= 100; md->swtch=RawSwitch();strncpy(md->name, tr("AIL").toAscii().data(),6); - md=setDest(2); md->srcRaw=RawSource(SOURCE_TYPE_CYC, 0); md->weight= 100; md->swtch=RawSwitch();strncpy(md->name, tr("ELE").toAscii().data(),6); - md=setDest(6); md->srcRaw=RawSource(SOURCE_TYPE_CYC, 2); md->weight= 100; md->swtch=RawSwitch();strncpy(md->name, tr("PITCH").toAscii().data(),6); - } else { - md=setDest(1); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 3); md->weight= 100; md->swtch=RawSwitch();strncpy(md->name, tr("AIL").toAscii().data(),6); - md=setDest(2); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 1); md->weight= 100; md->swtch=RawSwitch();strncpy(md->name, tr("ELE").toAscii().data(),6); - md=setDest(6); md->srcRaw=RawSource(SOURCE_TYPE_CH, 10); md->weight= 100; md->swtch=RawSwitch();strncpy(md->name, tr("PITCH").toAscii().data(),6); - } - md=setDest(4); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 0); md->weight=100; md->swtch=RawSwitch();strncpy(md->name, tr("RUD").toAscii().data(),6); - md=setDest(3); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight= 100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID0); md->curve=CV(1); md->carryTrim=TRIM_OFF; - md=setDest(3); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight= 100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID1); md->curve=CV(2); md->carryTrim=TRIM_OFF; - md=setDest(3); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight= 100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID2); md->curve=CV(3); md->carryTrim=TRIM_OFF; - md=setDest(3); md->srcRaw=RawSource(SOURCE_TYPE_MAX); md->weight=-100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,thrsw); md->mltpx=MLTPX_REP; - switch (gyro) { - case 1: - md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_MAX); md->weight=30; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,-DSW_GEA);strncpy(md->name, tr("GYRO").toAscii().data(),6); - md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_MAX); md->weight=-30; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_GEA);strncpy(md->name, tr("GYRO").toAscii().data(),6); - break; - case 2: - md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 5); md->weight= 50; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,-DSW_GEA); md->sOffset=100;strncpy(md->name, tr("GYRO").toAscii().data(),6); - md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 5); md->weight=-50; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_GEA); md->sOffset=100;strncpy(md->name, tr("GYRO").toAscii().data(),6); - break; - } - } - // collective - md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight=100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID0); md->curve=CV(4); md->carryTrim=TRIM_OFF; - md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight=100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID1); md->curve=CV(5); md->carryTrim=TRIM_OFF; - md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight=100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID2); md->curve=CV(6); md->carryTrim=TRIM_OFF; - break; - case 2: - ailerons=ailerontype; - flaps=flaptype; - spoilers=spoilertype; - throttle=enginetype; - switch (tailtype) { - case 0: - case 1: - rudders=1; - elevators=1; - break; - case 2: - rudders=1; - elevators=2; - break; - } - if (throttle==1) { - rxch=ICC(STK_THR); - md=setDest(rxch); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight=100; md->swtch=RawSwitch();strncpy(md->name, tr("THR").toAscii().data(),6); - rx[rxch-1]=true; - } - rxch=ICC(STK_RUD); - md=setDest(rxch); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 0); md->weight=100; md->swtch=RawSwitch();strncpy(md->name, tr("RUD").toAscii().data(),6); - if (tailtype==1) { - md=setDest(rxch); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 1); md->weight=-100; md->swtch=RawSwitch();strncpy(md->name, tr("RUD").toAscii().data(),6); - } - rx[rxch-1]=true; - rxch=ICC(STK_ELE); - if (tailtype==1) { - md=setDest(rxch); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 0); md->weight=-100; md->swtch=RawSwitch();strncpy(md->name, tr("ELE").toAscii().data(),6); - } - md=setDest(rxch); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 1); md->weight=100; md->swtch=RawSwitch();strncpy(md->name, tr("ELE").toAscii().data(),6); - rx[rxch-1]=true; - if (ail2ch > 0) { - rx[ail2ch-1]=true; - } - if (ele2ch > 0) { - rx[ele2ch-1]=true; - } - if (fla1ch > 0) { - rx[fla1ch-1]=true; - } - if (fla2ch > 0) { - rx[fla2ch-1]=true; - } - if (spo1ch > 0) { - rx[spo1ch-1]=true; - } - if (spo2ch > 0) { - rx[spo2ch-1]=true; - } - - if (ailerons>0) { - rxch=ICC(STK_AIL); - md=setDest(rxch); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 3); md->weight=100; md->swtch=RawSwitch();strncpy(md->name, tr("AIL").toAscii().data(),6); - rx[rxch-1]=true; - } - if (ailerons>1) { - if (ail2ch==0) { - for (int j=0; j<10 ; j++) { - if (!rx[j]) { - md=setDest(j+1); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 3); md->weight=100; md->swtch=RawSwitch();strncpy(md->name, tr("AIL2").toAscii().data(),6); - rx[j]=true; - break; - } - } - } else { - md=setDest(ail2ch); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 3); md->weight=100; md->swtch=RawSwitch();strncpy(md->name, tr("AIL2").toAscii().data(),6); - } - } - if (elevators>1) { - if (ele2ch==0) { - for (int j=0; j<10 ; j++) { - if (!rx[j]) { - md=setDest(j+1); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 1); md->weight=-100; md->swtch=RawSwitch();strncpy(md->name, tr("ELE2").toAscii().data(),6); - rx[j]=true; - break; - } - } - } else { - md=setDest(ele2ch); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 1); md->weight=-100; md->swtch=RawSwitch();strncpy(md->name, tr("ELE2").toAscii().data(),6); - } - } - if (flaps>0) { - md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_MAX); md->weight=-100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,-DSW_AIL);strncpy(md->name, tr("FLAPS").toAscii().data(),6);md->speedUp=4; md->speedDown=4; - md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 5); md->weight=100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_AIL);strncpy(md->name, tr("FLAPS").toAscii().data(),6);md->speedUp=4; md->speedDown=4; - } - sign=-1; - for (uint8_t i=0; i< flaps; i++) { - sign*=-1; - int index; - if (i==0) { - index=fla1ch; - } else { - index=fla2ch; - } - if (index==0) { - for (int j=0; j<10 ; j++) { - if (!rx[j]) { - md=setDest(j+1); md->srcRaw=RawSource(SOURCE_TYPE_CH, 10); md->weight=100*sign; md->sOffset=0; md->swtch=RawSwitch();strncpy(md->name, tr("FLAP%1").arg(i+1).toAscii().data(),6); - rx[j]=true; - break; - } - } - } else { - md=setDest(index); md->srcRaw=RawSource(SOURCE_TYPE_CH, 10); md->weight=100*sign; md->sOffset=0; md->swtch=RawSwitch();strncpy(md->name, tr("FLAP%1").arg(i+1).toAscii().data(),6); - } - } - if (spoilers>0) { - md=setDest(12); md->srcRaw=RawSource(SOURCE_TYPE_MAX); md->weight=-100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,-DSW_GEA);strncpy(md->name, tr("SPOIL").toAscii().data(),6); md->speedUp=4;;md->speedDown=4; - md=setDest(12); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 5); md->weight=100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_GEA);strncpy(md->name, tr("SPOIL").toAscii().data(),6);md->speedUp=4;md->speedDown=4; - } - sign=-1; - for (uint8_t i=0; i< spoilers; i++) { - sign*=-1; - int index; - if (i==0) { - index=spo1ch; - } else { - index=spo2ch; - } - if (index==0) { - for (int j=0; j<10 ; j++) { - if (!rx[j]) { - md=setDest(j+1); md->srcRaw=RawSource(SOURCE_TYPE_CH, 11); md->weight=100*sign; md->sOffset=0; md->swtch=RawSwitch();strncpy(md->name, tr("SPOIL%1").arg(i+1).toAscii().data(),6); - rx[j]=true; - break; - } - } - } else { - md=setDest(index); md->srcRaw=RawSource(SOURCE_TYPE_CH, 11); md->weight=100*sign; md->sOffset=0; md->swtch=RawSwitch();strncpy(md->name, tr("SPOIL%1").arg(i+1).toAscii().data(),6); - } - } - break; - case 3: - flaps=flaptype; - throttle=enginetype; - rudders=ruddertype; - if (throttle==1) { - rxch=ICC(STK_THR); - md=setDest(rxch); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight=100; md->swtch=RawSwitch();strncpy(md->name, tr("THR").toAscii().data(),6); - rx[rxch-1]=true; - } - rxch=ICC(STK_ELE); - md=setDest(rxch); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 1); md->weight=100; md->swtch=RawSwitch();strncpy(md->name, tr("ELE").toAscii().data(),6); - md=setDest(rxch); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 3); md->weight=100; md->swtch=RawSwitch();strncpy(md->name, tr("ELE").toAscii().data(),6); - rx[rxch-1]=true; - rxch=ICC(STK_AIL); - md=setDest(rxch); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 1); md->weight=-100; md->swtch=RawSwitch();strncpy(md->name, tr("AIL").toAscii().data(),6); - md=setDest(rxch); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 3); md->weight=100; md->swtch=RawSwitch();strncpy(md->name, tr("AIL").toAscii().data(),6); - rx[rxch-1]=true; - if (rudders>0) { - rxch=ICC(STK_RUD); - md=setDest(rxch); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 0); md->weight=100; md->swtch=RawSwitch();strncpy(md->name, tr("RUD").toAscii().data(),6); - rx[rxch-1]=true; - } - if (rud2ch > 0) { - rx[rud2ch-1]=true; - } - if (fla1ch > 0) { - rx[fla1ch-1]=true; - } - if (fla2ch > 0) { - rx[fla2ch-1]=true; - } - if (rudders>1) { - if (rud2ch==0) { - for (int j=0; j<10 ; j++) { - if (!rx[j]) { - md=setDest(j+1); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 0); md->weight=-100; md->swtch=RawSwitch();strncpy(md->name, tr("RUD2").toAscii().data(),6); - rx[j]=true; - break; - } - } - } else { - md=setDest(rud2ch); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 0); md->weight=-100; md->swtch=RawSwitch();strncpy(md->name, tr("RUD2").toAscii().data(),6); - } - } - if (flaps>0) { - md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_MAX); md->weight=-100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,-DSW_AIL);strncpy(md->name, tr("FLAPS").toAscii().data(),6); md->sOffset=0; md->speedUp=4; - md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 5); md->weight=100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_AIL);strncpy(md->name, tr("FLAPS").toAscii().data(),6); md->sOffset=0; md->speedUp=4; - } - sign=-1; - for (uint8_t i=0; i< flaps; i++) { - sign*=-1; - int index; - if (i==0) { - index=fla1ch; - } else { - index=fla2ch; - } - if (index==0) { - for (int j=0; j<10 ; j++) { - if (!rx[j]) { - md=setDest(j+1); md->srcRaw=RawSource(SOURCE_TYPE_CH, 10); md->weight=100*sign; md->sOffset=0; md->speedUp=4; md->speedDown=4; md->swtch=RawSwitch();strncpy(md->name, tr("FLAP%1").arg(i+1).toAscii().data(),6); - rx[j]=true; - break; - } - } - } else { - md=setDest(index); md->srcRaw=RawSource(SOURCE_TYPE_CH, 10); md->weight=100*sign; md->sOffset=0; md->speedUp=4; md->speedDown=4; md->swtch=RawSwitch();strncpy(md->name, tr("FLAP%1").arg(i+1).toAscii().data(),6); - } - } - break; - } - updateHeliTab(); - updateCurvesTab(); - if (modeltype==1 && swashtype!=4) { - ui->tabWidget->setCurrentIndex(1); - } else { - ui->tabWidget->setCurrentIndex(4); - } - resizeEvent(); -} - -void ModelEdit::applyTemplate(uint8_t idx) -{ - int8_t heli_ar1[] = {-100, -20, 30, 70, 90}; - int8_t heli_ar2[] = {80, 70, 60, 70, 100}; - int8_t heli_ar3[] = {100, 90, 80, 90, 100}; - int8_t heli_ar4[] = {-30, -15, 0, 50, 100}; - int8_t heli_ar5[] = {-100, -50, 0, 50, 100}; - - int thrsw=GetEepromInterface()->getCapability(GetThrSwitch); - MixData *md = &g_model.mixData[0]; - - //CC(STK) -> vSTK - //ICC(vSTK) -> STK - #define ICC(x) icc[(x)-1] - uint8_t icc[4] = {0}; - for(uint8_t i=1; i<=4; i++) //generate inverse array - for(uint8_t j=1; j<=4; j++) if(CC(i)==j) icc[j-1]=i; - - - uint8_t j = 0; - - //Simple 4-Ch - if(idx==j++) { - if (md->destCh) - clearMixes(); - md=setDest(ICC(STK_RUD)); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 0); md->weight=100; md->swtch=RawSwitch(); - md=setDest(ICC(STK_ELE)); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 1); md->weight=100; md->swtch=RawSwitch(); - md=setDest(ICC(STK_THR)); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight=100; md->swtch=RawSwitch(); - md=setDest(ICC(STK_AIL)); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 3); md->weight=100; md->swtch=RawSwitch(); - } - - //T-Cut - if(idx==j++) { - md=setDest(ICC(STK_THR)); md->srcRaw=RawSource(SOURCE_TYPE_MAX); md->weight=-100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,thrsw); md->mltpx=MLTPX_REP; - } - - //sticky t-cut - if(idx==j++) { - md=setDest(ICC(STK_THR)); md->srcRaw=RawSource(SOURCE_TYPE_MAX); md->weight=-100; md->swtch=RawSwitch(SWITCH_TYPE_VIRTUAL, 12); md->mltpx=MLTPX_REP; - md=setDest(14); md->srcRaw=RawSource(SOURCE_TYPE_CH, 13); md->weight= 100; md->swtch=RawSwitch(); - md=setDest(14); md->srcRaw=RawSource(SOURCE_TYPE_MAX); md->weight=-100; md->swtch=RawSwitch(SWITCH_TYPE_VIRTUAL, 11); md->mltpx=MLTPX_REP; - md=setDest(14); md->srcRaw=RawSource(SOURCE_TYPE_MAX); md->weight= 100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,thrsw); md->mltpx=MLTPX_REP; - setSwitch(0xB, CS_FN_VNEG, RawSource(SOURCE_TYPE_STICK, 2).toValue(), -99); - setSwitch(0xC, CS_FN_VPOS, RawSource(SOURCE_TYPE_CH, 13).toValue(), 0); - updateSwitchesTab(); - } - - //V-Tail - if(idx==j++) { - clearMixes(); - md=setDest(ICC(STK_THR)); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight=100; md->swtch=RawSwitch(); - md=setDest(ICC(STK_AIL)); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 3); md->weight=100; md->swtch=RawSwitch(); - md=setDest(ICC(STK_RUD)); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 0); md->weight= 100; md->swtch=RawSwitch(); - md=setDest(ICC(STK_RUD)); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 1); md->weight=-100; md->swtch=RawSwitch(); - md=setDest(ICC(STK_ELE)); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 0); md->weight= 100; md->swtch=RawSwitch(); - md=setDest(ICC(STK_ELE)); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 1); md->weight= 100; md->swtch=RawSwitch(); - } - - //Elevon\\Delta - if(idx==j++) { - clearMixes(); - md=setDest(ICC(STK_THR)); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight=100; md->swtch=RawSwitch(); - md=setDest(ICC(STK_RUD)); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 0); md->weight=100; md->swtch=RawSwitch(); - md=setDest(ICC(STK_ELE)); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 1); md->weight= 100; md->swtch=RawSwitch(); - md=setDest(ICC(STK_ELE)); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 3); md->weight= 100; md->swtch=RawSwitch(); - md=setDest(ICC(STK_AIL)); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 1); md->weight=-100; md->swtch=RawSwitch(); - md=setDest(ICC(STK_AIL)); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 3); md->weight=100; md->swtch=RawSwitch(); - } - - //Heli Setup - if(idx==j++) { - clearMixes(); //This time we want a clean slate - clearCurves(); - - // Set up Mixes - // 3 cyclic channels - md=setDest(1); md->srcRaw=RawSource(SOURCE_TYPE_CYC, 0); md->weight= 100; md->swtch=RawSwitch(); - md=setDest(2); md->srcRaw=RawSource(SOURCE_TYPE_CYC, 1); md->weight= 100; md->swtch=RawSwitch(); - md=setDest(3); md->srcRaw=RawSource(SOURCE_TYPE_CYC, 2); md->weight= 100; md->swtch=RawSwitch(); - - // rudder - md=setDest(4); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 0); md->weight=100; md->swtch=RawSwitch(); - - // throttle - md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight= 100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID0); md->curve=CV(1); md->carryTrim=TRIM_OFF; - md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight= 100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID1); md->curve=CV(2); md->carryTrim=TRIM_OFF; - md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight= 100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID2); md->curve=CV(3); md->carryTrim=TRIM_OFF; - md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_MAX); md->weight=-100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,thrsw); md->mltpx=MLTPX_REP; - - // gyro gain - md=setDest(6); md->srcRaw=RawSource(SOURCE_TYPE_MAX); md->weight=30; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,-DSW_GEA); - md=setDest(6); md->srcRaw=RawSource(SOURCE_TYPE_MAX); md->weight=-30; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_GEA); - - // collective - md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight=100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID0); md->curve=CV(4); md->carryTrim=TRIM_OFF; - md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight=100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID1); md->curve=CV(5); md->carryTrim=TRIM_OFF; - md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight=100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID2); md->curve=CV(6); md->carryTrim=TRIM_OFF; - - g_model.swashRingData.type = HELI_SWASH_TYPE_120; - g_model.swashRingData.collectiveSource = RawSource(SOURCE_TYPE_CH, 10); - - // set up Curves - setCurve(CURVE5(1),heli_ar1); - setCurve(CURVE5(2),heli_ar2); - setCurve(CURVE5(3),heli_ar3); - setCurve(CURVE5(4),heli_ar4); - setCurve(CURVE5(5),heli_ar5); - setCurve(CURVE5(6),heli_ar5); - - // make sure curves are redrawn - updateHeliTab(); - updateCurvesTab(); - resizeEvent(); - } - - //Heli Setup gyro gain control - if(idx==j++) { - clearMixes(); //This time we want a clean slate - clearCurves(); - - // Set up Mixes - // 3 cyclic channels - md=setDest(1); md->srcRaw=RawSource(SOURCE_TYPE_CYC, 0); md->weight= 100; md->swtch=RawSwitch(); - md=setDest(2); md->srcRaw=RawSource(SOURCE_TYPE_CYC, 1); md->weight= 100; md->swtch=RawSwitch(); - md=setDest(3); md->srcRaw=RawSource(SOURCE_TYPE_CYC, 2); md->weight= 100; md->swtch=RawSwitch(); - - // rudder - md=setDest(4); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 0); md->weight=100; md->swtch=RawSwitch(); - - // throttle - md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight= 100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID0); md->curve=CV(1); md->carryTrim=TRIM_OFF; - md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight= 100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID1); md->curve=CV(2); md->carryTrim=TRIM_OFF; - md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight= 100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID2); md->curve=CV(3); md->carryTrim=TRIM_OFF; - md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_MAX); md->weight=-100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,thrsw); md->mltpx=MLTPX_REP; - - // gyro gain - md=setDest(6); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 5); md->weight= 50; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,-DSW_GEA); md->sOffset=100; - md=setDest(6); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 5); md->weight=-50; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_GEA); md->sOffset=100; - - // collective - md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight=100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID0); md->curve=CV(4); md->carryTrim=TRIM_OFF; - md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight=100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID1); md->curve=CV(5); md->carryTrim=TRIM_OFF; - md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight=100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID2); md->curve=CV(6); md->carryTrim=TRIM_OFF; - - g_model.swashRingData.type = HELI_SWASH_TYPE_120; - g_model.swashRingData.collectiveSource = RawSource(SOURCE_TYPE_CH, 10); - - // set up Curves - setCurve(CURVE5(1),heli_ar1); - setCurve(CURVE5(2),heli_ar2); - setCurve(CURVE5(3),heli_ar3); - setCurve(CURVE5(4),heli_ar4); - setCurve(CURVE5(5),heli_ar5); - setCurve(CURVE5(6),heli_ar5); - - // make sure curves are redrawn - updateHeliTab(); - updateCurvesTab(); - resizeEvent(); - } - - // gyro gain control - if(idx==j++) { - int res = QMessageBox::question(this,tr("Clear Mixes?"),tr("Really clear existing mixes on CH6?"),QMessageBox::Yes | QMessageBox::No); - if(res!=QMessageBox::Yes) return; - // first clear mix on ch6 - bool found=true; - while (found) { - found=false; - for (int i=0; i< GetEepromInterface()->getCapability(Mixes); i++) { - if (g_model.mixData[i].destCh==6) { - gm_deleteMix(i); - found=true; - break; - } - } - } - md=setDest(6); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 5); md->weight= 50; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,-DSW_GEA); md->sOffset=100; - md=setDest(6); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 5); md->weight=-50; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_GEA); md->sOffset=100; - } - - //Heli Setup futaba style - if(idx==j++) { - clearMixes(); //This time we want a clean slate - clearCurves(); - - // Set up Mixes - // 3 cyclic channels - md=setDest(1); md->srcRaw=RawSource(SOURCE_TYPE_CYC, 1); md->weight= 100; md->swtch=RawSwitch(); - md=setDest(2); md->srcRaw=RawSource(SOURCE_TYPE_CYC, 0); md->weight= 100; md->swtch=RawSwitch(); - md=setDest(6); md->srcRaw=RawSource(SOURCE_TYPE_CYC, 2); md->weight= 100; md->swtch=RawSwitch(); - - // rudder - md=setDest(4); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 0); md->weight=100; md->swtch=RawSwitch(); - - // throttle - md=setDest(3); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight= 100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID0); md->curve=CV(1); md->carryTrim=TRIM_OFF; - md=setDest(3); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight= 100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID1); md->curve=CV(2); md->carryTrim=TRIM_OFF; - md=setDest(3); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight= 100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID2); md->curve=CV(3); md->carryTrim=TRIM_OFF; - md=setDest(3); md->srcRaw=RawSource(SOURCE_TYPE_MAX); md->weight=-100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,thrsw); md->mltpx=MLTPX_REP; - - // gyro gain - md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_MAX); md->weight=30; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,-DSW_GEA); - md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_MAX); md->weight=-30; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_GEA); - - // collective - md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight=100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID0); md->curve=CV(4); md->carryTrim=TRIM_OFF; - md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight=100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID1); md->curve=CV(5); md->carryTrim=TRIM_OFF; - md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight=100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID2); md->curve=CV(6); md->carryTrim=TRIM_OFF; - - g_model.swashRingData.type = HELI_SWASH_TYPE_120; - g_model.swashRingData.collectiveSource = RawSource(SOURCE_TYPE_CH, 10); - - // set up Curves - setCurve(CURVE5(1),heli_ar1); - setCurve(CURVE5(2),heli_ar2); - setCurve(CURVE5(3),heli_ar3); - setCurve(CURVE5(4),heli_ar4); - setCurve(CURVE5(5),heli_ar5); - setCurve(CURVE5(6),heli_ar5); - - // make sure curves are redrawn - updateHeliTab(); - updateCurvesTab(); - resizeEvent(); - } - - // Heli setup futaba style with gyro gain control - if(idx==j++) { - clearMixes(); //This time we want a clean slate - clearCurves(); - - // Set up Mixes - // 3 cyclic channels - md=setDest(1); md->srcRaw=RawSource(SOURCE_TYPE_CYC, 1); md->weight= 100; md->swtch=RawSwitch(); - md=setDest(2); md->srcRaw=RawSource(SOURCE_TYPE_CYC, 0); md->weight= 100; md->swtch=RawSwitch(); - md=setDest(6); md->srcRaw=RawSource(SOURCE_TYPE_CYC, 2); md->weight= 100; md->swtch=RawSwitch(); - - // rudder - md=setDest(4); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 0); md->weight=100; md->swtch=RawSwitch(); - - // throttle - md=setDest(3); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight= 100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID0); md->curve=CV(1); md->carryTrim=TRIM_OFF; - md=setDest(3); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight= 100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID1); md->curve=CV(2); md->carryTrim=TRIM_OFF; - md=setDest(3); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight= 100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID2); md->curve=CV(3); md->carryTrim=TRIM_OFF; - md=setDest(3); md->srcRaw=RawSource(SOURCE_TYPE_MAX); md->weight=-100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,thrsw); md->mltpx=MLTPX_REP; - - // gyro gain - md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 5); md->weight= 50; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,-DSW_GEA); md->sOffset=100; - md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 5); md->weight=-50; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_GEA); md->sOffset=100; - - // collective - md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight=100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID0); md->curve=CV(4); md->carryTrim=TRIM_OFF; - md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight=100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID1); md->curve=CV(5); md->carryTrim=TRIM_OFF; - md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight=100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID2); md->curve=CV(6); md->carryTrim=TRIM_OFF; - - g_model.swashRingData.type = HELI_SWASH_TYPE_120; - g_model.swashRingData.collectiveSource = RawSource(SOURCE_TYPE_CH, 10); - - // set up Curves - setCurve(CURVE5(1),heli_ar1); - setCurve(CURVE5(2),heli_ar2); - setCurve(CURVE5(3),heli_ar3); - setCurve(CURVE5(4),heli_ar4); - setCurve(CURVE5(5),heli_ar5); - setCurve(CURVE5(6),heli_ar5); - - // make sure curves are redrawn - updateHeliTab(); - updateCurvesTab(); - resizeEvent(); - } - - // gyro gain control futaba style - if(idx==j++) { - int res = QMessageBox::question(this,tr("Clear Mixes?"),tr("Really clear existing mixes on CH5?"),QMessageBox::Yes | QMessageBox::No); - if(res!=QMessageBox::Yes) return; - // first clear mix on ch6 - bool found=true; - while (found) { - found=false; - for (int i=0; i< GetEepromInterface()->getCapability(Mixes); i++) { - if (g_model.mixData[i].destCh==5) { - gm_deleteMix(i); - found=true; - break; - } - } - } - md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 5); md->weight= 50; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,-DSW_GEA); md->sOffset=100; - md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 5); md->weight=-50; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_GEA); md->sOffset=100; - } - - //Servo Test - if(idx==j++) { - md=setDest(15); md->srcRaw=RawSource(SOURCE_TYPE_CH, 15); md->weight= 100; md->speedUp = 8; md->speedDown = 8; md->swtch=RawSwitch(); - md=setDest(16); md->srcRaw=RawSource(SOURCE_TYPE_CUSTOM_SWITCH, 0); md->weight= 110; md->swtch=RawSwitch(); - md=setDest(16); md->srcRaw=RawSource(SOURCE_TYPE_MAX); md->weight=-110; md->swtch=RawSwitch(SWITCH_TYPE_VIRTUAL, 2); md->mltpx=MLTPX_REP; - md=setDest(16); md->srcRaw=RawSource(SOURCE_TYPE_MAX); md->weight= 110; md->swtch=RawSwitch(SWITCH_TYPE_VIRTUAL, 3); md->mltpx=MLTPX_REP; - setSwitch(1, CS_FN_LESS, RawSource(SOURCE_TYPE_CH, 14).toValue(), RawSource(SOURCE_TYPE_CH, 15).toValue()); - setSwitch(2, CS_FN_VPOS, RawSource(SOURCE_TYPE_CH, 14).toValue(), 105); - setSwitch(3, CS_FN_VNEG, RawSource(SOURCE_TYPE_CH, 14).toValue(), -105); - - // redraw switches tab - updateSwitchesTab(); - } - - //MultiCopter - if(idx==j++) { - if (md->destCh) - clearMixes(); - md=setDest(1); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 3); md->weight=50; md->swtch=RawSwitch(); //CH1 AIL - md=setDest(2); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 1); md->weight=-50; md->swtch=RawSwitch(); //CH2 ELE - md=setDest(3); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight=100; md->swtch=RawSwitch(); //CH3 THR - md=setDest(4); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 0); md->weight=100; md->swtch=RawSwitch(); //CH4 RUD - } -} - -void ModelEdit::ControlCurveSignal(bool flag) -{ - foreach(QSpinBox *sb, findChildren(QRegExp("curvePt[0-9]+"))) { - sb->blockSignals(flag); - } -} - -void ModelEdit::shrink() { -#if defined __APPLE__ - QSettings settings("companion9x", "companion9x"); - QPoint pos = settings.value("mepos", QPoint(0, 0)).toPoint(); - QSize size = settings.value("mesize", QSize(800, 625)).toSize(); - move(pos); - resize(size); -# else - const int height = QApplication::desktop()->height(); - QSettings settings("companion9x", "companion9x"); - QPoint pos = settings.value("mepos", QPoint(100, 100)).toPoint(); - QSize size = settings.value("mesize", QSize(800, 625)).toSize(); - if (size.height() < height) { - move(pos); - resize(size); - } else { - resize(0,0); - } -#endif - ui->curvePreview->repaint(); -} - -void ModelEdit::on_cname_LE_editingFinished() { - if (GetEepromInterface()->getCapability(HasCvNames)) { - int i=0; - for (i=0; icname_LE->text().toAscii().length(); i++) { - g_model.curves[currentCurve].name[i]=ui->cname_LE->text().toAscii().at(i); - } - g_model.curves[currentCurve].name[i]=0; - } - updateSettings(); -} - -void ModelEdit::on_curvetype_CB_currentIndexChanged(int index) { - if (curvesLock) - return; - int numcurves=GetEepromInterface()->getCapability(NumCurves); - if (numcurves==0) { - numcurves=16; - } - int numpoint[]={3,3,5,5,9,9,17,17}; - bool custom[]={false,true,false,true,false,true,false,true}; - int currpoints=g_model.curves[currentCurve].count; - bool currcustom=g_model.curves[currentCurve].custom; - curvesLock=true; - int totalpoints=0; - for (int i=0; i< numcurves; i++) { - if (i!=currentCurve) { - totalpoints+=g_model.curves[i].count; - if (g_model.curves[i].custom) { - totalpoints+=g_model.curves[i].count-2; - } - } - } - totalpoints+=numpoint[index]; - if (currcustom) { - totalpoints+=numpoint[index]-2; - } - int fwpoints=GetEepromInterface()->getCapability(NumCurvePoints); - if (fwpoints!=0) { - if (fwpointscurvetype_CB->setCurrentIndex(oldindex); - curvesLock=false; - return; - } - } - // let's be sure that for standard curves X values are set correctly. - if (!currcustom) { - for (int i=0; i< currpoints; i++) { - spnx[i]->setMinimum(-100); - spnx[i]->setMaximum(100); - spnx[i]->setValue(-100+((200*i)/(currpoints-1))); - } - } - if (numpoint[index]==currpoints) { - for (int i=0; i< currpoints; i++) { - spnx[i]->setMinimum(-100); - spnx[i]->setMaximum(100); - spnx[i]->setValue(-100+((200*i)/(currpoints-1))); - } - for (int i=currpoints; i< 17; i++) { - spnx[i]->setMinimum(-100); - spnx[i]->setMaximum(100); - spnx[i]->setValue(0); - spny[i]->setValue(0); - } - } else if (numpoint[index]>currpoints) { - for (int i=0; i< 17; i++) { - g_model.curves[currentCurve].points[i].x=spnx[i]->value(); - g_model.curves[currentCurve].points[i].y=spny[i]->value(); - spnx[i]->setMinimum(-100); - spnx[i]->setMaximum(100); - } - int currintervals=currpoints-1; - int diffpoints=numpoint[index]-currpoints; - int skip=diffpoints/currintervals; - for (int i=0; i< currpoints; i++) { - if (custom[index]) { - spnx[i+(skip*i)]->setValue(g_model.curves[currentCurve].points[i].x); - } else { - spnx[i+(skip*i)]->setValue(-100+(200*i)/currintervals); - } - spny[i+(skip*i)]->setValue(g_model.curves[currentCurve].points[i].y); - if (i>0) { - int diffx=spnx[i+(skip*i)]->value()-spnx[(i-1)+(skip*(i-1))]->value(); - int diffy=spny[i+(skip*i)]->value()-spny[(i-1)+(skip*(i-1))]->value(); - for (int j=1; j<= skip; j++) { - spny[(i-1)+skip*(i-1)+j]->setValue(spny[(i-1)+(skip*(i-1))]->value()+((diffy*j)/(skip+1))); - spnx[(i-1)+skip*(i-1)+j]->setValue(spnx[(i-1)+(skip*(i-1))]->value()+((diffx*j)/(skip+1))); - } - } - } - } else { - int intervals=numpoint[index]-1; - int diffpoints=currpoints-numpoint[index]; - int skip=diffpoints/intervals; - for (int i=0; i< numpoint[index]; i++) { - spnx[i]->setMinimum(-100); - spnx[i]->setMaximum(100); - if (custom[index]) { - spnx[i]->setValue(spnx[i+skip*i]->value()); - } else { - spnx[i]->setValue(-100+(200*i)/intervals); - } - spny[i]->setValue(spny[i+skip*i]->value()); - } - for (int i=numpoint[index]; i< 17; i++) { - spnx[i]->setValue(0); - spny[i]->setValue(0); - } - } - curvesLock=false; - for (int i=0; i< 17; i++) { - g_model.curves[currentCurve].points[i].x=spnx[i]->value(); - g_model.curves[currentCurve].points[i].y=spny[i]->value(); - } - g_model.curves[currentCurve].count=numpoint[index]; - g_model.curves[currentCurve].custom=custom[index]; - setCurrentCurve(currentCurve); - if (redrawCurve) - drawCurve(); - updateSettings(); -} - -void ModelEdit::closeEvent(QCloseEvent *event) -{ - QSettings settings("companion9x", "companion9x"); - settings.setValue("mepos", pos()); - settings.setValue("mesize", size()); - event->accept(); -} - -void ModelEdit::wizard() -{ - uint64_t result=0xffffffff; - modelConfigDialog *mcw = new modelConfigDialog(radioData, &result, this); - mcw->exec(); - if (result!=0xffffffff) { - applyNumericTemplate(result); - updateSettings(); - tabMixes(); - } else if (this->isNew) { - memset(&g_model, 0, sizeof(ModelData)); - accept(); - } -} diff --git a/companion/src/modeledit.h b/companion/src/modeledit.h deleted file mode 100644 index f6a2785c3..000000000 --- a/companion/src/modeledit.h +++ /dev/null @@ -1,393 +0,0 @@ -#ifndef MODELEDIT_H -#define MODELEDIT_H - -#include -#include -#include -#include "eeprominterface.h" -#include "mixerslist.h" -#ifdef PHONON -#include -#include -#include -#endif -namespace Ui { - class ModelEdit; -} - -class ModelEdit : public QDialog -{ - Q_OBJECT - -public: - explicit ModelEdit(RadioData &radioData, uint8_t id , bool openWizard =false, bool inNew =false, QWidget *parent = 0); - ~ModelEdit(); - - void applyBaseTemplate(); - bool redrawCurve; - void drawCurve(); - bool drawing; - bool mixInserted; - bool expoInserted; - bool openWizard; - bool isNew; -private: - Ui::ModelEdit *ui; - - QSpinBox* spny[17]; - QSpinBox* spnx[17]; - QSpinBox* gvarsSB[9][5]; - QSpinBox* reSB[9][2]; - QGroupBox* barsGB[3]; - QGroupBox* numsGB[3]; - QComboBox* barsCB[12]; - QDoubleSpinBox* minSB[12]; - QDoubleSpinBox* maxSB[12]; - QComboBox* csf[36]; - QComboBox* csw[C9X_NUM_CSW]; - MixersList *ExposlistWidget; - - MixersList *MixerlistWidget; - - RadioData &radioData; - int id_model; - ModelData g_model; - GeneralSettings g_eeGeneral; - bool protocolEditLock; - bool protocol2EditLock; - bool trainerEditLock; - bool switchEditLock; - bool heliEditLock; - bool limitEditLock; - bool phasesLock; - bool telemetryLock; - bool curvesLock; - bool phononLock; - bool fsLock; - bool modelImageLock; - bool plot_curve[16]; - int selectedSwitch; - int selectedFunction; - QDoubleSpinBox * cswitchValue[C9X_NUM_CSW]; - QDoubleSpinBox * cswitchOffset[C9X_NUM_CSW]; - QComboBox * cswitchAnd[C9X_NUM_CSW]; - QDoubleSpinBox * cswitchDuration[C9X_NUM_CSW]; - QDoubleSpinBox * cswitchDelay[C9X_NUM_CSW]; - QComboBox * cswitchSource1[C9X_NUM_CSW]; - QComboBox * cswitchSource2[C9X_NUM_CSW]; - QLabel * fswLabel[C9X_MAX_CUSTOM_FUNCTIONS]; - QComboBox * fswtchSwtch[C9X_MAX_CUSTOM_FUNCTIONS]; - QComboBox * fswtchFunc[C9X_MAX_CUSTOM_FUNCTIONS]; - QCheckBox * fswtchParamGV[C9X_MAX_CUSTOM_FUNCTIONS]; - QDoubleSpinBox * fswtchParam[C9X_MAX_CUSTOM_FUNCTIONS]; - QPushButton * playBT[C9X_MAX_CUSTOM_FUNCTIONS]; - QComboBox * fswtchParamT[C9X_MAX_CUSTOM_FUNCTIONS]; - QComboBox * fswtchParamArmT[C9X_MAX_CUSTOM_FUNCTIONS]; - QCheckBox * fswtchEnable[C9X_MAX_CUSTOM_FUNCTIONS]; - QComboBox * fswtchRepeat[C9X_MAX_CUSTOM_FUNCTIONS]; - QComboBox * fswtchGVmode[C9X_MAX_CUSTOM_FUNCTIONS]; - - QSpinBox * safetySwitchValue[C9X_NUM_CHNOUT]; - QComboBox * safetySwitchSwtch[C9X_NUM_CHNOUT]; - QSlider * phasesTrimSliders[9][4]; - QSpinBox * phasesTrimValues[9][4]; - - void setupExposListWidget(); - void setupMixerListWidget(); - float getBarStep(int barId); - void telBarUpdate(); - - void updateSettings(); - void tabModelEditSetup(); - void tabPhases(); - void tabExpos(); - void tabMixes(); - void tabHeli(); - void tabLimits(); - void tabCurves(); - void tabCustomSwitches(); - void tabSafetySwitches(); - void tabCustomFunctions(); - void tabTelemetry(); - void tabTemplates(); - void updateCurvesTab(); - void setSwitchWidgetVisibility(int i); - void setLimitMinMax(); - void updateSelectedSwitch(); - void updateSwitchesTab(); - void updateHeliTab(); - void updateA1Fields(); - void updateA2Fields(); - - void launchSimulation(); - void resizeEvent(QResizeEvent *event = 0); - - - int currentCurve; - void setCurrentCurve(int curveId); - - QSpinBox *getNodeSB(int i); - QSpinBox *getNodeSBX(int i); - - int getExpoIndex(unsigned int dch); - bool gm_insertExpo(int idx); - void gm_deleteExpo(int index); - void gm_openExpo(int index); - int gm_moveExpo(int idx, bool dir); - void exposDeleteList(QList list); - QList createExpoListFromSelected(); - void setSelectedByExpoList(QList list); - - int getMixerIndex(unsigned int dch); - bool gm_insertMix(int idx); - void gm_deleteMix(int index); - void gm_openMix(int index); - int gm_moveMix(int idx, bool dir); - void mixersDeleteList(QList list); - QList createMixListFromSelected(); - void setSelectedByMixList(QList list); - - void applyTemplate(uint8_t idx); - void applyNumericTemplate(uint64_t tpl); - MixData* setDest(uint8_t dch); - void setCurve(uint8_t c, int8_t ar[]); - void setSwitch(unsigned int idx, unsigned int func, int v1, int v2); - void on_phaseSwitch_currentIndexChanged(unsigned int phase, int index); - void on_phaseFadeIn_valueChanged(unsigned int phase, int value); - void on_phaseFadeOut_valueChanged(unsigned int phase, int value); - void on_phaseTrim_valueChanged(unsigned int phase, unsigned int stick, int value); - void on_phaseTrimUse_currentIndexChanged(unsigned int phase, unsigned int stick, int index, QSpinBox *trim, QSlider *slider); - void displayOnePhaseOneTrim(unsigned int phase_idx, unsigned int trim_idx, QComboBox *trimUse, QSpinBox *trimVal, QSlider *trimSlider); - void displayOnePhase(unsigned int phase_idx, QLineEdit *name, QComboBox *sw, QDoubleSpinBox *fadeIn, QDoubleSpinBox *fadeOut, QComboBox *trim1Use, QSpinBox *trim1, QLabel *trim1Label, QSlider *trim1Slider, QComboBox *trim2Use, QSpinBox *trim2, QLabel *trim2Label, QSlider *trim2Slider, QComboBox *trim3Use, QSpinBox *trim3, QLabel *trim3Label, QSlider *trim3Slider, QComboBox *trim4Use, QSpinBox *trim4, QLabel *trim4Label, QSlider *trim4Slider, QLabel *gv1Label, QComboBox *gv1Use,QSpinBox *gv1Value, QLabel *gv2Label, QComboBox *gv2Use,QSpinBox *gv2Value, QLabel *gv3Label, QComboBox *gv3Use,QSpinBox *gv3Value, QLabel *gv4Label, QComboBox *gv4Use,QSpinBox *gv4Value, QLabel *gv5Label, QComboBox *gv5Use,QSpinBox *gv5Value, QLabel *re1Label, QComboBox *re1Use,QSpinBox *re1Value, QLabel *re2Label, QComboBox *re2Use,QSpinBox *re2Value,bool doConnect); - - void incSubtrim(uint8_t idx, int16_t inc); -#ifdef PHONON - Phonon::MediaObject *clickObject; - Phonon::AudioOutput *clickOutput; -#endif - -signals: - void modelValuesChanged(); - -private slots: - void clearExpos(bool ask=true); - void clearMixes(bool ask=true); - void clearCurves(bool ask=true); - void on_modelVoice_SB_editingFinished(); - void on_T2ThrTrgChkB_toggled(bool checked); - void on_ttraceCB_currentIndexChanged(int index); - void on_instantTrim_CB_currentIndexChanged(int index); - void on_extendedLimitsChkB_toggled(bool checked); - void on_extendedTrimsChkB_toggled(bool checked); - void on_thrwarnChkB_toggled(bool checked); - void on_thrrevChkB_toggled(bool checked); - void on_timer1Perm_toggled(bool checked); - void on_timer2Perm_toggled(bool checked); - void on_timer1Minute_toggled(bool checked); - void on_timer2Minute_toggled(bool checked); - void on_timer1CountDownBeep_toggled(bool checked); - void on_timer2CountDownBeep_toggled(bool checked); - void fssldEdited(); - void fssbEdited(); - void fssldValueChanged(); - void fssbValueChanged(); - void resetCurve(); - void editCurve(); - void playMusic(); -#ifdef PHONON - void mediaPlayer_state(Phonon::State newState, Phonon::State oldState); -#endif - - void plotCurve(bool checked); -//phases slots - void phaseName_editingFinished(); - void phaseSwitch_currentIndexChanged(); - void phaseFadeIn_editingFinished(); - void phaseFadeOut_editingFinished(); - void phaseTrimUse_currentIndexChanged(); - void phaseTrim_valueChanged(); - void phaseTrimSlider_valueChanged(); - void GVName_editingFinished(); - void GVSource_currentIndexChanged(); - void phaseGVValue_editingFinished(); - void phaseGVUse_currentIndexChanged(); - void phaseREValue_editingFinished(); - void phaseREUse_currentIndexChanged(); - - void mimeMixerDropped(int index, const QMimeData *data, Qt::DropAction action); - void pasteMixerMimeData(const QMimeData * mimeData, int destIdx); - - void mimeExpoDropped(int index, const QMimeData *data, Qt::DropAction action); - void pasteExpoMimeData(const QMimeData * mimeData, int destIdx); - - void on_pushButton_clicked(); - - void exposDelete(bool ask=true); - void exposCut(); - void exposCopy(); - void exposPaste(); - void exposDuplicate(); - void expoOpen(QListWidgetItem *item = NULL); - void expoAdd(); - - void cswDelete(); - void cswCopy(); - void cswPaste(); - void cswCut(); - - void fswDelete(); - void fswCopy(); - void fswPaste(); - void fswCut(); - - void moveExpoUp(); - void moveExpoDown(); - - void mixersDelete(bool ask=true); - void mixersCut(); - void mixersCopy(); - void mixersPaste(); - void mixersDuplicate(); - void mixerOpen(); - void mixerAdd(); - void moveMixUp(); - void moveMixDown(); - - void expolistWidget_customContextMenuRequested(QPoint pos); - void expolistWidget_doubleClicked(QModelIndex index); - void expolistWidget_KeyPress(QKeyEvent *event); - - - void mixerlistWidget_customContextMenuRequested(QPoint pos); - void mixerlistWidget_doubleClicked(QModelIndex index); - void mixerlistWidget_KeyPress(QKeyEvent *event); - - void csw_customContextMenuRequested(QPoint pos); - void fsw_customContextMenuRequested(QPoint pos); - - - void curvePointEdited(); - void on_ca_ctype_CB_currentIndexChanged(); - void on_ca_apply_PB_clicked(); - - void on_cname_LE_editingFinished(); - void limitOffsetEdited(); - void limitSymEdited(); - void limitEdited(); - void limitNameEdited(); - void limitInvEdited(); - void ppmcenterEdited(); - void customSwitchesEdited(); - void safetySwitchesEdited(); - void customFunctionEdited(); - void refreshCustomFunction(int index, bool modified=false); - void startupSwitchEdited(); - void exposEdited(); - void mixesEdited(); - void heliEdited(); - - void on_bcRUDChkB_toggled(bool checked); - void on_bcELEChkB_toggled(bool checked); - void on_bcTHRChkB_toggled(bool checked); - void on_bcAILChkB_toggled(bool checked); - void on_bcP1ChkB_toggled(bool checked); - void on_bcP2ChkB_toggled(bool checked); - void on_bcP3ChkB_toggled(bool checked); - void on_bcP4ChkB_toggled(bool checked); - void on_bcREaChkB_toggled(bool checked); - void on_bcREbChkB_toggled(bool checked); - - void on_thrExpoChkB_toggled(bool checked); - void on_thrTrimChkB_toggled(bool checked); - void on_a1UnitCB_currentIndexChanged(int index); - void on_a2UnitCB_currentIndexChanged(int index); - void on_a1RatioSB_editingFinished(); - void on_a1RatioSB_valueChanged(); - void on_a1CalibSB_editingFinished(); - void on_a11LevelCB_currentIndexChanged(int index); - void on_a11GreaterCB_currentIndexChanged(int index); - void on_a11ValueSB_editingFinished(); - void on_a12LevelCB_currentIndexChanged(int index); - void on_a12GreaterCB_currentIndexChanged(int index); - void on_a12ValueSB_editingFinished(); - void on_a2RatioSB_editingFinished(); - void on_a2RatioSB_valueChanged(); - void on_a2CalibSB_editingFinished(); - void on_a21LevelCB_currentIndexChanged(int index); - void on_a21GreaterCB_currentIndexChanged(int index); - void on_a21ValueSB_editingFinished(); - void on_a22LevelCB_currentIndexChanged(int index); - void on_a22GreaterCB_currentIndexChanged(int index); - void on_a22ValueSB_editingFinished(); - void on_frskyProtoCB_currentIndexChanged(int index); - void on_frskyUnitsCB_currentIndexChanged(int index); - void on_frskyBladesCB_currentIndexChanged(int index); - void on_frskyCurrentCB_currentIndexChanged(int index); - void on_frskyVoltCB_currentIndexChanged(int index); - void on_AltitudeToolbar_ChkB_toggled(bool checked); - void on_rssiAlarm1CB_currentIndexChanged(int index); - void on_rssiAlarm2CB_currentIndexChanged(int index); - void on_rssiAlarm1SB_editingFinished(); - void on_rssiAlarm2SB_editingFinished(); - void on_AltitudeGPS_ChkB_toggled(bool checked); - void on_showNames_Ckb_toggled(bool checked); - void on_varioSourceCB_currentIndexChanged(int index); - void on_varioLimitMin_DSB_editingFinished(); - void on_varioLimitMax_DSB_editingFinished(); - void on_varioLimitCenterMin_DSB_editingFinished(); - void on_varioLimitMinOff_ChkB_toggled(bool checked); - void on_varioLimitCenterMax_DSB_editingFinished(); - void telBarCBcurrentIndexChanged(int index); - void ScreenTypeCBcurrentIndexChanged(int index); - void telMaxSBeditingFinished(); - void telMinSBeditingFinished(); - void customFieldEdited(); - void on_ppmDelaySB_editingFinished(); - void on_ppmDelaySB_2_editingFinished(); - void on_ppmDelaySB_3_editingFinished(); - void on_numChannelsSB_editingFinished(); - void on_numChannelsSB_2_editingFinished(); - void on_numChannelsSB_3_editingFinished(); - void on_numChannelsStart_editingFinished(); - void on_numChannelsStart_2_editingFinished(); - void on_numChannelsStart_3_editingFinished(); -// void void ModelEdit::on_numChannelsStart_3_editingFinished(); - void on_protocolCB_currentIndexChanged(int index); - void on_protocolCB_2_currentIndexChanged(int index); - void on_protocolCB_3_currentIndexChanged(int index); - void on_pulsePolCB_currentIndexChanged(int index); - void on_pulsePolCB_2_currentIndexChanged(int index); - void on_pulsePolCB_3_currentIndexChanged(int index); - void on_ppmFrameLengthDSB_editingFinished(); - void on_ppmFrameLengthDSB_2_editingFinished(); - void on_ppmFrameLengthDSB_3_editingFinished(); - void on_DSM_Type_currentIndexChanged(int index); - void on_DSM_Type_2_currentIndexChanged(int index); - void on_pxxRxNum_editingFinished(); - void on_pxxRxNum_2_editingFinished(); - void on_fsm1CB_currentIndexChanged(int index); - void on_fsm2CB_currentIndexChanged(int index); - - // TODO void on_trimSWCB_currentIndexChanged(int index); - void on_trimIncCB_currentIndexChanged(int index); - void on_timer1DirCB_currentIndexChanged(int index); - void on_timer1ModeCB_currentIndexChanged(int index); - void on_timer1ValTE_editingFinished(); - void on_timer1ModeBCB_currentIndexChanged(int index); - void on_timer2DirCB_currentIndexChanged(int index); - void on_timer2ModeCB_currentIndexChanged(int index); - void on_timer2ValTE_editingFinished(); - void on_timer2ModeBCB_currentIndexChanged(int index); - void on_modelNameLE_editingFinished(); - void on_modelImage_CB_currentIndexChanged(int index); - void on_phases_currentChanged(int index); - void on_tabWidget_currentChanged(int index); - void on_templateList_doubleClicked(QModelIndex index); - void ControlCurveSignal(bool flag); - void shrink(); - void wizard(); - void closeEvent(QCloseEvent *event); - void on_curvetype_CB_currentIndexChanged(int index); -}; - -#endif // MODELEDIT_H diff --git a/companion/src/modeledit.ui b/companion/src/modeledit.ui deleted file mode 100644 index e4f3119f1..000000000 --- a/companion/src/modeledit.ui +++ /dev/null @@ -1,24504 +0,0 @@ - - - ModelEdit - - - - 0 - 0 - 1130 - 698 - - - - - 0 - 0 - - - - Dialog - - - - :/icon.png:/icon.png - - - true - - - - - - Simulate - - - - :/images/simulate.png:/images/simulate.png - - - - - - - QTabWidget::North - - - 0 - - - - Setup - - - - - - true - - - 0 - - - true - - - false - - - - ModelSetup - - - - - - Timer2 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 0 - 0 - - - - - 0 - 0 - - - - Disable Throttle Warning - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 0 - 0 - - - - - - - - Extended Limits - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Throttle Trim - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Throttle Source - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Qt::Horizontal - - - - - - - Center beep - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Trim Increment - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 0 - 0 - - - - - Exponential - - - - - Extra Fine - - - - - Fine - - - - - Medium - - - - - Coarse - - - - - - - - Qt::Horizontal - - - - - - - - 0 - 0 - - - - Switch startup Warning - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - 6 - - - 0 - - - - - - 0 - 0 - - - - Qt::Vertical - - - - - - - - 0 - 0 - - - - Qt::Vertical - - - - - - - - 0 - 0 - - - - Qt::Vertical - - - - - - - - 0 - 0 - - - - 3POS - - - Qt::AlignCenter - - - - - - - - 0 - 0 - - - - Check - - - Qt::AlignCenter - - - - - - - Qt::LeftToRight - - - THR - - - - - - - - ON - - - - - OFF - - - - - - - - Qt::LeftToRight - - - RUD - - - - - - - Qt::LeftToRight - - - ELE - - - - - - - Qt::LeftToRight - - - AIL - - - - - - - Qt::LeftToRight - - - GEA - - - - - - - true - - - - ID0 - - - - - ID1 - - - - - ID2 - - - - - - - - - 0 - 0 - - - - Qt::Vertical - - - - - - - - 0 - 0 - - - - Qt::Vertical - - - - - - - - 0 - 0 - - - - Qt::Vertical - - - - - - - - - QLayout::SetMinimumSize - - - 0 - - - 0 - - - - - - 0 - 0 - - - - - ON - - - - - OFF - - - - - - - - - 0 - 0 - - - - SB - - - Qt::AlignCenter - - - - - - - - 0 - 0 - - - - SD - - - Qt::AlignCenter - - - - - - - - 0 - 0 - - - - SA - - - Qt::AlignCenter - - - - - - - - 0 - 0 - - - - Check - - - Qt::AlignCenter - - - - - - - - 0 - 0 - - - - - 0 - 50 - - - - - 16777215 - 50 - - - - 0 - - - 2 - - - 1 - - - 0 - - - Qt::Vertical - - - true - - - QSlider::TicksBothSides - - - 1 - - - - - - - - 0 - 0 - - - - - 0 - 50 - - - - - 16777215 - 50 - - - - 0 - - - 2 - - - 1 - - - 0 - - - Qt::Vertical - - - true - - - QSlider::TicksBothSides - - - 1 - - - - - - - - 0 - 0 - - - - SC - - - Qt::AlignCenter - - - - - - - - 0 - 0 - - - - - 0 - 50 - - - - - 16777215 - 50 - - - - 0 - - - 2 - - - 1 - - - 0 - - - Qt::Vertical - - - true - - - QSlider::TicksBothSides - - - 1 - - - - - - - - 0 - 0 - - - - SG - - - Qt::AlignCenter - - - - - - - - 0 - 0 - - - - SE - - - Qt::AlignCenter - - - - - - - - 0 - 0 - - - - - 0 - 50 - - - - - 16777215 - 50 - - - - 0 - - - 2 - - - 1 - - - 0 - - - Qt::Vertical - - - true - - - QSlider::TicksBothSides - - - 1 - - - - - - - - 0 - 0 - - - - - 0 - 50 - - - - - 16777215 - 50 - - - - 0 - - - 2 - - - 1 - - - 0 - - - Qt::Vertical - - - true - - - QSlider::TicksBothSides - - - 1 - - - - - - - - 0 - 0 - - - - SF - - - Qt::AlignCenter - - - - - - - - 0 - 0 - - - - - 0 - 50 - - - - - 16777215 - 50 - - - - 0 - - - 2 - - - 1 - - - 0 - - - Qt::Vertical - - - true - - - QSlider::TicksBothSides - - - 1 - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - 0 - 0 - - - - - 0 - 50 - - - - - 16777215 - 50 - - - - 0 - - - 1 - - - 1 - - - 1 - - - 0 - - - Qt::Vertical - - - true - - - QSlider::TicksBothSides - - - 1 - - - - - - - - - - - REa - - - - - - - RUD - - - - - - - ELE - - - - - - - THR - - - - - - - AIL - - - - - - - P1 - - - - - - - P2 - - - - - - - P3 - - - - - - - REb - - - - - - - RS - - - - - - - - - - - - - - - - Throttle2Trig - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 16777215 - 16777215 - - - - - - - - - 0 - 0 - - - - - - - - - - - Instant Trim - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 0 - 0 - - - - - - - - - - - - - - - Extended Trims - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - - - - - - - - - - - - - Reverse Throttle Operation - - - - - - - Reverse throttle operation. -If this is checked the throttle will be reversed. Idle will be forward, trim will also be reversed and the throttle warning will be reversed as well. - - - - - - - - - - - - Qt::Vertical - - - QSizePolicy::MinimumExpanding - - - - 20 - 0 - - - - - - - - - - - - - - - Master - - - - - Slave - - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - usec - - - 100 - - - 800 - - - 50 - - - 300 - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - PPM delay - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Pulse Shift (polarity) - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Trainer Mode - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - mSec - - - 1 - - - 12.500000000000000 - - - 32.500000000000000 - - - 0.500000000000000 - - - 22.500000000000000 - - - - - - - - 0 - 0 - - - - - Negative - - - - - Positive - - - - - - - - PPM Frame Length - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - font-weight:bold; - - - Master/Trainer Port - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - ch - - - 1 - - - 16 - - - 2 - - - 8 - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - ch - - - 1 - - - 32 - - - 1 - - - 8 - - - - - - - - 0 - 0 - - - - Channels - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Start - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - - - - - - - - - - PPM delay - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 0 - 0 - - - - Polarity - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 0 - 0 - - - - - Negative - - - - - Positive - - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - usec - - - 100 - - - 800 - - - 50 - - - 300 - - - - - - - - 0 - 0 - - - - PPM Frame Length - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - mSec - - - 1 - - - 12.500000000000000 - - - 32.500000000000000 - - - 0.500000000000000 - - - 22.500000000000000 - - - - - - - - 0 - 0 - - - - - - - 1 - - - 125 - - - 1 - - - 1 - - - - - - - Qt::Horizontal - - - - 5 - 20 - - - - - - - - - 0 - 0 - - - - DSM Type - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 0 - 0 - - - - - LP4/LP5 - - - - - DSM2only - - - - - DSM2/DSMX - - - - - - - - - 0 - 0 - - - - RX Number - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - PPM - - - - - Silver A - - - - - Silver B - - - - - Silver C - - - - - Trac 09 - - - - - - - - font-weight: bold; - - - RF Module 1 - - - - - - - - 0 - 0 - - - - Protocol - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Qt::Vertical - - - QSizePolicy::MinimumExpanding - - - - 20 - 0 - - - - - - - - - - Start - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - ch - - - 1 - - - 32 - - - 1 - - - 1 - - - - - - - - 0 - 0 - - - - Channels - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - ch - - - 1 - - - 16 - - - 2 - - - 8 - - - - - - - - - - - - - - - - - - PPM delay - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - usec - - - 100 - - - 800 - - - 50 - - - 300 - - - - - - - - 0 - 0 - - - - - Negative - - - - - Positive - - - - - - - - - 0 - 0 - - - - Polarity - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 0 - 0 - - - - RX Number - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 0 - 0 - - - - - - - 1 - - - 125 - - - 1 - - - 1 - - - - - - - - 0 - 0 - - - - DSM Type - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 0 - 0 - - - - - LP4/LP5 - - - - - DSM2only - - - - - DSM2/DSMX - - - - - - - - font-weight:bold; - - - RF Module 2 - - - - - - - Qt::Vertical - - - QSizePolicy::MinimumExpanding - - - - 20 - 0 - - - - - - - - - 0 - 0 - - - - PPM Frame Length - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - mSec - - - 1 - - - 12.500000000000000 - - - 32.500000000000000 - - - 0.500000000000000 - - - 22.500000000000000 - - - - - - - Qt::Horizontal - - - - 5 - 20 - - - - - - - - - PPM - - - - - Silver A - - - - - Silver B - - - - - Silver C - - - - - Trac 09 - - - - - - - - - 0 - 0 - - - - Protocol - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - Start - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - ch - - - 1 - - - 32 - - - 1 - - - 1 - - - - - - - - 0 - 0 - - - - Channels - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - ch - - - 1 - - - 16 - - - 2 - - - 8 - - - - - - - - - - - - - - Throttle Expo - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Model Name - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Timer1 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - 2 - - - - - true - - - QDateTimeEdit::MinuteSection - - - mm:ss - - - - - - - - Count Down - - - - - Count Up - - - - - - - - - - - - 0 - 0 - - - - TriggerB - - - - - - - - - - Persistent - - - - - - - (00:00:00) - - - - - - - MinuteBeep - - - - - - - CountDownBeep - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - 2 - - - - - true - - - QDateTimeEdit::MinuteSection - - - mm:ss - - - - - - - - Count Down - - - - - Count Up - - - - - - - - - - - - 0 - 0 - - - - TriggerB - - - - - - - - - - Persistent - - - - - - - (00:00:00) - - - - - - - MinuteBeep - - - - - - - CountDownBeep - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - - 0 - 0 - - - - 10 - - - - - - - Model Voice - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 0 - 0 - - - - - - - 260 - - - 511 - - - 1 - - - 260 - - - - - - - Model Image - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - 0 - 0 - - - - - 64 - 32 - - - - - 64 - 32 - - - - QFrame::Panel - - - QFrame::Raised - - - - - - true - - - - - - - - - - - - - Failsafe - - - - - - External module - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - false - - - true - - - -100 - - - 100 - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - false - - - true - - - -100 - - - 100 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - CH12 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - false - - - true - - - -100 - - - 100 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - CH01 - - - - - - - CH04 - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - false - - - true - - - -100 - - - 100 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - CH10 - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - false - - - true - - - -100 - - - 100 - - - - - - - CH02 - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - false - - - true - - - -100 - - - 100 - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - false - - - true - - - -100 - - - 100 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - CH11 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - CH03 - - - - - - - CH09 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - false - - - true - - - -100 - - - 100 - - - - - - - CH05 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - false - - - true - - - -100 - - - 100 - - - - - - - CH06 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - false - - - true - - - -100 - - - 100 - - - - - - - CH07 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - false - - - true - - - -100 - - - 100 - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - false - - - true - - - -100 - - - 100 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - CH08 - - - - - - - Qt::Vertical - - - - - - - CH13 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - false - - - true - - - -100 - - - 100 - - - - - - - CH14 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - false - - - true - - - -100 - - - 100 - - - - - - - CH15 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - false - - - true - - - -100 - - - 100 - - - - - - - CH16 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - false - - - true - - - -100 - - - 100 - - - - - - - Qt::Vertical - - - - - - - Qt::Vertical - - - - - - - - - Failsafe Mode - - - - - - - - Hold - - - - - Custom - - - - - No Pulses - - - - - - - - - - - - - Qt::Vertical - - - - 20 - 1 - - - - - - - - Internal Module - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - CH14 - - - - - - - CH09 - - - - - - - CH02 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - CH01 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - CH04 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - CH12 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - CH10 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - CH03 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - CH11 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - CH05 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - CH06 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - CH07 - - - - - - - CH08 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - CH13 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - CH15 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - CH16 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - Qt::Vertical - - - - - - - Qt::Vertical - - - - - - - Qt::Vertical - - - - - - - - - Failsafe Mode - - - - - - - - Hold - - - - - Custom - - - - - No Pulses - - - - - - - - - - - - - - - - - - Heli Setup - - - - - - Qt::Horizontal - - - - 647 - 20 - - - - - - - - Swash Ring - - - - - - - - - - Swash Type - - - - - - - - Off - - - - - 120 - - - - - 120X - - - - - 140 - - - - - 90 - - - - - - - - - - Invert Elevator - - - - - - - Invert Aileron - - - - - - - Invert Collective - - - - - - - - - Invert - - - - - - - Collective - - - - - - - - - - 0 - - - 100 - - - 1 - - - 0 - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - Flight Modes - - - - - - - - 0 - - - - Flight Mode 0 (Default) - - - - - - - - Fade In - - - - - - - 1 - - - - - - - 1 - - - - - - - Fade Out - - - - - - - 6 - - - - - - - Flight Mode Name - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - Qt::Vertical - - - QSlider::TicksBothSides - - - 25 - - - - - - - Qt::Vertical - - - false - - - false - - - QSlider::TicksBothSides - - - 25 - - - - - - - - 0 - 0 - - - - Qt::Horizontal - - - QSlider::TicksBothSides - - - 25 - - - - - - - - 0 - 0 - - - - Qt::Horizontal - - - QSlider::TicksBothSides - - - 25 - - - - - - - - - trim1 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - 1 - 0 - - - - Qt::AlignCenter - - - true - - - -896 - - - 896 - - - - - - - trim2 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 1 - 0 - - - - Qt::AlignCenter - - - true - - - -896 - - - 896 - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - trim4 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 1 - 0 - - - - Qt::AlignCenter - - - true - - - -896 - - - 896 - - - - - - - trim3 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 1 - 0 - - - - Qt::AlignCenter - - - true - - - -896 - - - 896 - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - Qt::Horizontal - - - - - - - - - - - - GVAR1 - - - - - - - 6 - - - - - - - 6 - - - - - - - -100 - - - 100 - - - - - - - GVAR2 - - - - - - - 6 - - - - - - - -100 - - - 100 - - - - - - - GVAR3 - - - - - - - -100 - - - 100 - - - - - - - GVAR4 - - - - - - - 6 - - - - - - - -100 - - - 100 - - - - - - - GVAR5 - - - - - - - 6 - - - - - - - -100 - - - 100 - - - - - - - - - - - - - - - - - - - - - - -100 - - - 100 - - - - - - - - - - GVAR6 - - - - - - - 6 - - - - - - - GVAR7 - - - - - - - - - - - - - 6 - - - - - - - -100 - - - 100 - - - - - - - - - - - - - Rotary encoder B - - - - - - - -100 - - - 100 - - - - - - - -100 - - - 100 - - - - - - - Rotary encoder A - - - - - - - - - - - - - FM 1 - - - - - - - - 1 - - - - - - - 6 - - - - - - - Flight Mode Name - - - - - - - Switch - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Fade Out - - - - - - - 1 - - - - - - - Fade In - - - - - - - - - - - Qt::Vertical - - - QSlider::TicksBothSides - - - 25 - - - - - - - Qt::Vertical - - - false - - - false - - - QSlider::TicksBothSides - - - 25 - - - - - - - - 0 - 0 - - - - Qt::Horizontal - - - QSlider::TicksBothSides - - - 25 - - - - - - - - 0 - 0 - - - - Qt::Horizontal - - - QSlider::TicksBothSides - - - 25 - - - - - - - - - trim1 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - trim2 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - Qt::AlignCenter - - - true - - - -896 - - - 896 - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - Qt::AlignCenter - - - true - - - -896 - - - 896 - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - - - trim4 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - trim3 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - Qt::AlignCenter - - - true - - - -896 - - - 896 - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - Qt::AlignCenter - - - true - - - -896 - - - 896 - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - - - - - - - - GVAR1 - - - - - - - - - - -100 - - - 100 - - - - - - - GVAR2 - - - - - - - - - - -100 - - - 100 - - - - - - - GVAR3 - - - - - - - - - - -100 - - - 100 - - - - - - - GVAR4 - - - - - - - - - - -100 - - - 100 - - - - - - - GVAR5 - - - - - - - - - - -100 - - - 100 - - - - - - - - - - - - - Rotary encoder A - - - - - - - - - - Rotary encoder B - - - - - - - -100 - - - 100 - - - - - - - -100 - - - 100 - - - - - - - - - - - - - - - Qt::Horizontal - - - - - - - - FM 2 - - - - - - - - 1 - - - - - - - 1 - - - - - - - Fade Out - - - - - - - 6 - - - - - - - Flight Mode Name - - - - - - - Switch - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Fade In - - - - - - - - - - - Qt::Vertical - - - QSlider::TicksBothSides - - - 25 - - - - - - - Qt::Vertical - - - false - - - false - - - QSlider::TicksBothSides - - - 25 - - - - - - - - 0 - 0 - - - - Qt::Horizontal - - - QSlider::TicksBothSides - - - 25 - - - - - - - - 0 - 0 - - - - Qt::Horizontal - - - QSlider::TicksBothSides - - - 25 - - - - - - - - - trim1 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - trim2 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - Qt::AlignCenter - - - true - - - -896 - - - 896 - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - Qt::AlignCenter - - - true - - - -896 - - - 896 - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - - - trim4 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - trim3 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - Qt::AlignCenter - - - true - - - -896 - - - 896 - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - Qt::AlignCenter - - - true - - - -896 - - - 896 - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - - - Qt::Horizontal - - - - - - - - - - - - GVAR1 - - - - - - - - - - -100 - - - 100 - - - - - - - GVAR2 - - - - - - - - - - -100 - - - 100 - - - - - - - GVAR3 - - - - - - - - - - -100 - - - 100 - - - - - - - GVAR4 - - - - - - - - - - -100 - - - 100 - - - - - - - GVAR5 - - - - - - - - - - -100 - - - 100 - - - - - - - - - - - - - Rotary encoder A - - - - - - - - - - -100 - - - 100 - - - - - - - Rotary encoder B - - - - - - - - - - -100 - - - 100 - - - - - - - - - - - - - FM 3 - - - - - - - - Fade Out - - - - - - - Fade In - - - - - - - 6 - - - - - - - Flight Mode Name - - - - - - - Switch - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - 1 - - - - - - - 1 - - - - - - - - - - - Qt::Vertical - - - QSlider::TicksBothSides - - - 25 - - - - - - - Qt::Vertical - - - false - - - false - - - QSlider::TicksBothSides - - - 25 - - - - - - - - 0 - 0 - - - - Qt::Horizontal - - - QSlider::TicksBothSides - - - 25 - - - - - - - - 0 - 0 - - - - Qt::Horizontal - - - QSlider::TicksBothSides - - - 25 - - - - - - - - - trim1 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - trim2 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - Qt::AlignCenter - - - true - - - -896 - - - 896 - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - Qt::AlignCenter - - - true - - - -896 - - - 896 - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - - - trim4 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - trim3 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - Qt::AlignCenter - - - true - - - -896 - - - 896 - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - Qt::AlignCenter - - - true - - - -896 - - - 896 - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - - - Qt::Horizontal - - - - - - - - - - - - GVAR1 - - - - - - - - - - -100 - - - 100 - - - - - - - GVAR2 - - - - - - - - - - -100 - - - 100 - - - - - - - GVAR3 - - - - - - - - - - -100 - - - 100 - - - - - - - GVAR4 - - - - - - - - - - -100 - - - 100 - - - - - - - GVAR5 - - - - - - - - - - -100 - - - 100 - - - - - - - - - - - - - Rotary encoder A - - - - - - - - - - -100 - - - 100 - - - - - - - Rotary encoder B - - - - - - - - - - -100 - - - 100 - - - - - - - - - - - - - FM 4 - - - - - - - - Flight Mode Name - - - - - - - 6 - - - - - - - Switch - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Fade In - - - - - - - Fade Out - - - - - - - 1 - - - - - - - 1 - - - - - - - - - - - Qt::Vertical - - - QSlider::TicksBothSides - - - 25 - - - - - - - Qt::Vertical - - - false - - - false - - - QSlider::TicksBothSides - - - 25 - - - - - - - - 0 - 0 - - - - Qt::Horizontal - - - QSlider::TicksBothSides - - - 25 - - - - - - - - 0 - 0 - - - - Qt::Horizontal - - - QSlider::TicksBothSides - - - 25 - - - - - - - - - trim1 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - trim2 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - Qt::AlignCenter - - - true - - - -896 - - - 896 - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - Qt::AlignCenter - - - true - - - -896 - - - 896 - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - - - trim4 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - trim3 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - Qt::AlignCenter - - - true - - - -896 - - - 896 - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - Qt::AlignCenter - - - true - - - -896 - - - 896 - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - - - Qt::Horizontal - - - - - - - - - - - - GVAR1 - - - - - - - - - - -100 - - - 100 - - - - - - - GVAR2 - - - - - - - - - - -100 - - - 100 - - - - - - - GVAR3 - - - - - - - - - - -100 - - - 100 - - - - - - - GVAR4 - - - - - - - - - - -100 - - - 100 - - - - - - - GVAR5 - - - - - - - - - - -100 - - - 100 - - - - - - - - - - - - - Rotary encoder A - - - - - - - - - - -100 - - - 100 - - - - - - - Rotary encoder B - - - - - - - - - - -100 - - - 100 - - - - - - - - - - - - - FM 5 - - - - - - - - Qt::Vertical - - - QSlider::TicksBothSides - - - 25 - - - - - - - Qt::Vertical - - - false - - - false - - - QSlider::TicksBothSides - - - 25 - - - - - - - - 0 - 0 - - - - Qt::Horizontal - - - QSlider::TicksBothSides - - - 25 - - - - - - - - 0 - 0 - - - - Qt::Horizontal - - - QSlider::TicksBothSides - - - 25 - - - - - - - - - trim1 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - trim2 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - Qt::AlignCenter - - - true - - - -896 - - - 896 - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - Qt::AlignCenter - - - true - - - -896 - - - 896 - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - - - trim4 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - trim3 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - Qt::AlignCenter - - - true - - - -896 - - - 896 - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - Qt::AlignCenter - - - true - - - -896 - - - 896 - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - - - - - Flight Mode Name - - - - - - - 6 - - - - - - - Switch - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - 1 - - - - - - - 1 - - - - - - - Fade In - - - - - - - Fade Out - - - - - - - - - Qt::Horizontal - - - - - - - - - - - - GVAR1 - - - - - - - - - - -100 - - - 100 - - - - - - - GVAR2 - - - - - - - - - - -100 - - - 100 - - - - - - - GVAR3 - - - - - - - - - - -100 - - - 100 - - - - - - - GVAR4 - - - - - - - - - - -100 - - - 100 - - - - - - - GVAR5 - - - - - - - - - - -100 - - - 100 - - - - - - - - - - - - - Rotary encoder A - - - - - - - - - - -100 - - - 100 - - - - - - - Rotary encoder B - - - - - - - - - - -100 - - - 100 - - - - - - - - - - - - - FM 6 - - - - - - - - Qt::Vertical - - - QSlider::TicksBothSides - - - 25 - - - - - - - Qt::Vertical - - - false - - - false - - - QSlider::TicksBothSides - - - 25 - - - - - - - - 0 - 0 - - - - Qt::Horizontal - - - QSlider::TicksBothSides - - - 25 - - - - - - - - 0 - 0 - - - - Qt::Horizontal - - - QSlider::TicksBothSides - - - 25 - - - - - - - - - trim1 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - trim2 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - Qt::AlignCenter - - - true - - - -896 - - - 896 - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - Qt::AlignCenter - - - true - - - -896 - - - 896 - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - - - trim4 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - trim3 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - 0 - 0 - - - - - - - - Qt::AlignCenter - - - true - - - -896 - - - 896 - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - Qt::AlignCenter - - - true - - - -896 - - - 896 - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - - - - - 6 - - - - - - - Flight Mode Name - - - - - - - Switch - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Fade In - - - - - - - 1 - - - - - - - 1 - - - - - - - Fade Out - - - - - - - - - - - - - - GVAR1 - - - - - - - - - - -100 - - - 100 - - - - - - - GVAR2 - - - - - - - - - - -100 - - - 100 - - - - - - - GVAR3 - - - - - - - - - - -100 - - - 100 - - - - - - - GVAR4 - - - - - - - - - - -100 - - - 100 - - - - - - - GVAR5 - - - - - - - - - - -100 - - - 100 - - - - - - - - - - - - - Rotary encoder A - - - - - - - - - - -100 - - - 100 - - - - - - - Rotary encoder B - - - - - - - - - - -100 - - - 100 - - - - - - - - - - - - Qt::Horizontal - - - - - - - - FM 7 - - - - - - Qt::Horizontal - - - - - - - - - 6 - - - - - - - Flight Mode Name - - - - - - - Switch - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - 1 - - - - - - - 1 - - - - - - - Fade In - - - - - - - Fade Out - - - - - - - - - - - Qt::Vertical - - - QSlider::TicksBothSides - - - 25 - - - - - - - Qt::Vertical - - - false - - - false - - - QSlider::TicksBothSides - - - 25 - - - - - - - - 0 - 0 - - - - Qt::Horizontal - - - QSlider::TicksBothSides - - - 25 - - - - - - - - 0 - 0 - - - - Qt::Horizontal - - - QSlider::TicksBothSides - - - 25 - - - - - - - - - trim1 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - trim2 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - Qt::AlignCenter - - - true - - - -896 - - - 896 - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - Qt::AlignCenter - - - true - - - -896 - - - 896 - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - - - trim4 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - trim3 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - Qt::AlignCenter - - - true - - - -896 - - - 896 - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - Qt::AlignCenter - - - true - - - -896 - - - 896 - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - - - - - - - - GVAR1 - - - - - - - - - - -100 - - - 100 - - - - - - - GVAR2 - - - - - - - - - - -100 - - - 100 - - - - - - - GVAR3 - - - - - - - - - - -100 - - - 100 - - - - - - - GVAR4 - - - - - - - - - - -100 - - - 100 - - - - - - - GVAR5 - - - - - - - - - - -100 - - - 100 - - - - - - - - - - - - - Rotary encoder A - - - - - - - - - - -100 - - - 100 - - - - - - - Rotary encoder B - - - - - - - - - - -100 - - - 100 - - - - - - - - - - - - - FM 8 - - - - - - - - Qt::Vertical - - - QSlider::TicksBothSides - - - 25 - - - - - - - Qt::Vertical - - - false - - - false - - - QSlider::TicksBothSides - - - 25 - - - - - - - - 0 - 0 - - - - Qt::Horizontal - - - QSlider::TicksBothSides - - - 25 - - - - - - - - 0 - 0 - - - - Qt::Horizontal - - - QSlider::TicksBothSides - - - 25 - - - - - - - - - trim1 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - trim2 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - Qt::AlignCenter - - - true - - - -896 - - - 896 - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - Qt::AlignCenter - - - true - - - -896 - - - 896 - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - - - trim4 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - trim3 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - Qt::AlignCenter - - - true - - - -896 - - - 896 - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - Qt::AlignCenter - - - true - - - -896 - - - 896 - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - - - Qt::Horizontal - - - - - - - - - 1 - - - - - - - Flight Mode Name - - - - - - - Switch - - - - - - - - - - 6 - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Fade In - - - - - - - Fade Out - - - - - - - 1 - - - - - - - - - - - - - - GVAR5 - - - - - - - -100 - - - 100 - - - - - - - - - - -100 - - - 100 - - - - - - - -100 - - - 100 - - - - - - - -100 - - - 100 - - - - - - - - - - GVAR4 - - - - - - - GVAR2 - - - - - - - - - - - - - GVAR1 - - - - - - - -100 - - - 100 - - - - - - - GVAR3 - - - - - - - - - - - - - - - - Rotary encoder B - - - - - - - - - - -100 - - - 100 - - - - - - - - - - -100 - - - 100 - - - - - - - Rotary encoder A - - - - - - - - - - - - - - - - - - - Sticks - - - - - - - - - - Mixes - - - - - - - - - Show channels names in mixes - - - - - - - - Limits - - - - - - true - - - - - 0 - 0 - 998 - 481 - - - - - 0 - 0 - - - - - - - - 0 - 0 - - - - - - - - QLayout::SetMinimumSize - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - 1375 - - - 1625 - - - 1500 - - - - - - - - 0 - 0 - - - - 6 - - - - - - - - 0 - 0 - - - - 6 - - - - - - - - 0 - 0 - - - - 6 - - - - - - - - 0 - 0 - - - - 6 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - 1 - - - -100.000000000000000 - - - 0.100000000000000 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - 1 - - - -100.000000000000000 - - - 0.100000000000000 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - - --- - - - - - INV - - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - 1 - - - -100.000000000000000 - - - 0.100000000000000 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - - --- - - - - - INV - - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - 1 - - - -100.000000000000000 - - - 0.100000000000000 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - - --- - - - - - INV - - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - 1 - - - -100.000000000000000 - - - 0.100000000000000 - - - - - - - - 0 - 0 - - - - - --- - - - - - INV - - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - - --- - - - - - INV - - - - - - - - - 0 - 0 - - - - - --- - - - - - INV - - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - 1 - - - -100.000000000000000 - - - 0.100000000000000 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - 1 - - - -100.000000000000000 - - - 0.100000000000000 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - - --- - - - - - INV - - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - - --- - - - - - INV - - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - - --- - - - - - INV - - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - 1 - - - -100.000000000000000 - - - 0.100000000000000 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - - --- - - - - - INV - - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - 1 - - - -100.000000000000000 - - - 0.100000000000000 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - 1 - - - -100.000000000000000 - - - 0.100000000000000 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - - --- - - - - - INV - - - - - - - - - 0 - 0 - - - - - --- - - - - - INV - - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - 1 - - - -100.000000000000000 - - - 0.100000000000000 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - 1 - - - -100.000000000000000 - - - 0.100000000000000 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - - --- - - - - - INV - - - - - - - - - 0 - 0 - - - - QFrame::Panel - - - QFrame::Raised - - - 0 - - - Offset - - - Qt::AlignCenter - - - 3 - - - - - - - - 0 - 0 - - - - QFrame::Panel - - - QFrame::Raised - - - 0 - - - Min - - - Qt::AlignCenter - - - 3 - - - - - - - - 0 - 0 - - - - - --- - - - - - INV - - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - 1 - - - -100.000000000000000 - - - 0.100000000000000 - - - - - - - - 0 - 0 - - - - - --- - - - - - INV - - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - 1 - - - -100.000000000000000 - - - 0.100000000000000 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - 1 - - - -100.000000000000000 - - - 0.100000000000000 - - - - - - - - 0 - 0 - - - - QFrame::Panel - - - QFrame::Raised - - - 0 - - - Max - - - Qt::AlignCenter - - - 3 - - - - - - - - 0 - 0 - - - - QFrame::Panel - - - QFrame::Raised - - - 0 - - - Invert - - - Qt::AlignCenter - - - 3 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - 1 - - - -100.000000000000000 - - - 0.100000000000000 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - - --- - - - - - INV - - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - 1375 - - - 1625 - - - 1500 - - - - - - - - 0 - 0 - - - - QFrame::Panel - - - QFrame::Raised - - - Center - - - Qt::AlignCenter - - - 3 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - 1375 - - - 1625 - - - 1500 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - 1375 - - - 1625 - - - 1500 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - 1375 - - - 1625 - - - 1500 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - 1375 - - - 1625 - - - 1500 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - 1375 - - - 1625 - - - 1500 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - 1375 - - - 1625 - - - 1500 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - 1375 - - - 1625 - - - 1500 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - 1375 - - - 1625 - - - 1500 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - 1375 - - - 1625 - - - 1500 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - 1375 - - - 1625 - - - 1500 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - 1375 - - - 1625 - - - 1500 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - 1375 - - - 1625 - - - 1500 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - 1375 - - - 1625 - - - 1500 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - 1375 - - - 1625 - - - 1500 - - - - - - - - 0 - 0 - - - - QFrame::Panel - - - QFrame::Raised - - - 0 - - - Sym - - - Qt::AlignCenter - - - 3 - - - - - - - - 0 - 0 - - - - - - - - - - - - 0 - 0 - - - - - - - - - - - - 0 - 0 - - - - - - - - - - - - 0 - 0 - - - - - - - - - - - - 0 - 0 - - - - - - - - - - - - 0 - 0 - - - - - - - - - - - - 0 - 0 - - - - - - - - - - - - 0 - 0 - - - - - - - - - - - - 0 - 0 - - - - - - - - - - - - 0 - 0 - - - - - - - - - - - - 0 - 0 - - - - - - - - - - - - 0 - 0 - - - - - - - - - - - - 0 - 0 - - - - - - - - - - - - 0 - 0 - - - - - - - - - - - - 0 - 0 - - - - - - - - - - - - 0 - 0 - - - - - - - - - - - - 0 - 0 - - - - 6 - - - - - - - - 0 - 0 - - - - 6 - - - - - - - - 0 - 0 - - - - 6 - - - - - - - - 0 - 0 - - - - QFrame::Panel - - - QFrame::Raised - - - 0 - - - Channel - - - Qt::AlignCenter - - - 3 - - - - - - - - 0 - 0 - - - - 6 - - - - - - - - 0 - 0 - - - - 6 - - - - - - - - 0 - 0 - - - - 6 - - - - - - - - 0 - 0 - - - - 6 - - - - - - - - 0 - 0 - - - - 6 - - - - - - - - 0 - 0 - - - - 6 - - - - - - - - 0 - 0 - - - - 6 - - - - - - - - 0 - 0 - - - - 6 - - - - - - - - 0 - 0 - - - - 6 - - - - - - - - - - Qt::Vertical - - - - 20 - 1 - - - - - - - - - 0 - 0 - - - - - - - - QLayout::SetMinimumSize - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - 1 - - - -100.000000000000000 - - - 0.100000000000000 - - - - - - - - 0 - 0 - - - - - --- - - - - - INV - - - - - - - - - 0 - 0 - - - - - --- - - - - - INV - - - - - - - - - 0 - 0 - - - - - --- - - - - - INV - - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - 1 - - - -100.000000000000000 - - - 0.100000000000000 - - - - - - - - 0 - 0 - - - - QFrame::Panel - - - QFrame::Raised - - - 0 - - - Offset - - - Qt::AlignCenter - - - 3 - - - - - - - - 0 - 0 - - - - QFrame::Panel - - - QFrame::Raised - - - 0 - - - Min - - - Qt::AlignCenter - - - 3 - - - - - - - - 0 - 0 - - - - QFrame::Panel - - - QFrame::Raised - - - 0 - - - Max - - - Qt::AlignCenter - - - 3 - - - - - - - - 0 - 0 - - - - QFrame::Panel - - - QFrame::Raised - - - 0 - - - Invert - - - Qt::AlignCenter - - - 3 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - 1 - - - -100.000000000000000 - - - 0.100000000000000 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - - --- - - - - - INV - - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - - --- - - - - - INV - - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - 1 - - - -100.000000000000000 - - - 0.100000000000000 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - - --- - - - - - INV - - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - - --- - - - - - INV - - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - 1 - - - -100.000000000000000 - - - 0.100000000000000 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - 1 - - - -100.000000000000000 - - - 0.100000000000000 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - 1 - - - -100.000000000000000 - - - 0.100000000000000 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - - --- - - - - - INV - - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - 1 - - - -100.000000000000000 - - - 0.100000000000000 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - - --- - - - - - INV - - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - 1 - - - -100.000000000000000 - - - 0.100000000000000 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - - --- - - - - - INV - - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - 1 - - - -100.000000000000000 - - - 0.100000000000000 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - - --- - - - - - INV - - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - 1 - - - -100.000000000000000 - - - 0.100000000000000 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - 1 - - - -100.000000000000000 - - - 0.100000000000000 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - - --- - - - - - INV - - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - 1 - - - -100.000000000000000 - - - 0.100000000000000 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - - --- - - - - - INV - - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - 1 - - - -100.000000000000000 - - - 0.100000000000000 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - - --- - - - - - INV - - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - 1 - - - -100.000000000000000 - - - 0.100000000000000 - - - - - - - - 0 - 0 - - - - - --- - - - - - INV - - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - 1 - - - -100.000000000000000 - - - 0.100000000000000 - - - - - - - - 0 - 0 - - - - - --- - - - - - INV - - - - - - - - - 0 - 0 - - - - QFrame::Panel - - - QFrame::Raised - - - Center - - - Qt::AlignCenter - - - 3 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - 1375 - - - 1625 - - - 1500 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - 1375 - - - 1625 - - - 1500 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - 1375 - - - 1625 - - - 1500 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - 1375 - - - 1625 - - - 1500 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - 1375 - - - 1625 - - - 1500 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - 1375 - - - 1625 - - - 1500 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - 1375 - - - 1625 - - - 1500 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - 1375 - - - 1625 - - - 1500 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - 1375 - - - 1625 - - - 1500 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - 1375 - - - 1625 - - - 1500 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - 1375 - - - 1625 - - - 1500 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - 1375 - - - 1625 - - - 1500 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - 1375 - - - 1625 - - - 1500 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - 1375 - - - 1625 - - - 1500 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - 1375 - - - 1625 - - - 1500 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - 1375 - - - 1625 - - - 1500 - - - - - - - - 0 - 0 - - - - QFrame::Panel - - - QFrame::Raised - - - 0 - - - Sym - - - Qt::AlignCenter - - - 3 - - - - - - - - 0 - 0 - - - - - - - - - - - - 0 - 0 - - - - - - - - - - - - 0 - 0 - - - - - - - - - - - - 0 - 0 - - - - - - - - - - - - 0 - 0 - - - - - - - - - - - - 0 - 0 - - - - - - - - - - - - 0 - 0 - - - - - - - - - - - - 0 - 0 - - - - - - - - - - - - 0 - 0 - - - - - - - - - - - - 0 - 0 - - - - - - - - - - - - 0 - 0 - - - - - - - - - - - - 0 - 0 - - - - - - - - - - - - 0 - 0 - - - - - - - - - - - - 0 - 0 - - - - - - - - - - - - 0 - 0 - - - - - - - - - - - - 0 - 0 - - - - - - - - - - - - 0 - 0 - - - - 6 - - - - - - - - 0 - 0 - - - - QFrame::Panel - - - QFrame::Raised - - - 0 - - - Channel - - - Qt::AlignCenter - - - 3 - - - - - - - - 0 - 0 - - - - 6 - - - - - - - - 0 - 0 - - - - 6 - - - - - - - - 0 - 0 - - - - 6 - - - - - - - - 0 - 0 - - - - 6 - - - - - - - - 0 - 0 - - - - 6 - - - - - - - - 0 - 0 - - - - 6 - - - - - - - - 0 - 0 - - - - 6 - - - - - - - - 0 - 0 - - - - 6 - - - - - - - - 0 - 0 - - - - 6 - - - - - - - - 0 - 0 - - - - 6 - - - - - - - - 0 - 0 - - - - 6 - - - - - - - - 0 - 0 - - - - 6 - - - - - - - - 0 - 0 - - - - 6 - - - - - - - - 0 - 0 - - - - 6 - - - - - - - - 0 - 0 - - - - 6 - - - true - - - - - - - - - - - - - - - Curves - - - - - - - 1 - 0 - - - - Qt::ScrollBarAsNeeded - - - true - - - - - 0 - 0 - 969 - 467 - - - - - 0 - 0 - - - - - - - Qt::Horizontal - - - - 5 - 20 - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - - - - 0 - 0 - 127 - - - - - - - 255 - 255 - 255 - - - - - - - - - 0 - 0 - 127 - - - - - - - 255 - 255 - 255 - - - - - - - - - 0 - 0 - 127 - - - - - - - 150 - 147 - 145 - - - - - - - - Curve 1 - - - - - - - - - - - - 127 - 0 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - - - 127 - 0 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - - - 127 - 0 - 0 - - - - - - - 150 - 147 - 145 - - - - - - - - Curve 3 - - - - - - - - 0 - 0 - - - - - - - - :/images/clear.png:/images/clear.png - - - - 14 - 14 - - - - - - - - true - - - - 0 - 0 - - - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 0 - 127 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 0 - 127 - - - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 0 - 127 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 0 - 127 - - - - - - - - - 146 - 145 - 144 - - - - - - - 0 - 0 - 127 - - - - - - - 165 - 164 - 164 - - - - - - - 151 - 150 - 149 - - - - - - - 244 - 244 - 244 - - - - - - - - - - - - - - - - 0 - 0 - - - - - - - - :/images/clear.png:/images/clear.png - - - - 14 - 14 - - - - - - - - - 0 - 0 - - - - - - - - :/images/clear.png:/images/clear.png - - - - 14 - 14 - - - - - - - - - - - - - 255 - 255 - 255 - - - - - - - 127 - 0 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 128 - 0 - 0 - - - - - - - - - 255 - 255 - 255 - - - - - - - 127 - 0 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 128 - 0 - 0 - - - - - - - - - 146 - 145 - 144 - - - - - - - 127 - 0 - 0 - - - - - - - 165 - 164 - 164 - - - - - - - 151 - 150 - 149 - - - - - - - 244 - 244 - 244 - - - - - - - - - - - - - - - - 0 - 0 - - - - - - - - :/images/clear.png:/images/clear.png - - - - 14 - 14 - - - - - - - - - - - - - 0 - 127 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - - - 0 - 127 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - - - 0 - 127 - 0 - - - - - - - 150 - 147 - 145 - - - - - - - - Curve 2 - - - - - - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 127 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 127 - 0 - - - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 127 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 127 - 0 - - - - - - - - - 146 - 145 - 144 - - - - - - - 0 - 127 - 0 - - - - - - - 165 - 164 - 164 - - - - - - - 151 - 150 - 149 - - - - - - - 244 - 244 - 244 - - - - - - - - - - - - - - - - - - - - 255 - 255 - 255 - - - - - - - 127 - 0 - 127 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 127 - 0 - 127 - - - - - - - - - 255 - 255 - 255 - - - - - - - 127 - 0 - 127 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 127 - 0 - 127 - - - - - - - - - 146 - 145 - 144 - - - - - - - 127 - 0 - 127 - - - - - - - 165 - 164 - 164 - - - - - - - 151 - 150 - 149 - - - - - - - 244 - 244 - 244 - - - - - - - - - - - - - - - - 0 - 0 - - - - - - - - :/images/clear.png:/images/clear.png - - - - 14 - 14 - - - - - - - - - - - - - 0 - 127 - 127 - - - - - - - 255 - 255 - 255 - - - - - - - - - 0 - 127 - 127 - - - - - - - 255 - 255 - 255 - - - - - - - - - 0 - 127 - 127 - - - - - - - 150 - 147 - 145 - - - - - - - - Curve 4 - - - - - - - - 0 - 0 - - - - - - - - :/images/clear.png:/images/clear.png - - - - 14 - 14 - - - - - - - - - - - - - 255 - 0 - 127 - - - - - - - 255 - 255 - 255 - - - - - - - - - 255 - 0 - 127 - - - - - - - 255 - 255 - 255 - - - - - - - - - 255 - 0 - 127 - - - - - - - 150 - 147 - 145 - - - - - - - - Curve 15 - - - - - - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 0 - 127 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 0 - 127 - - - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 0 - 127 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 0 - 127 - - - - - - - - - 146 - 145 - 144 - - - - - - - 255 - 0 - 127 - - - - - - - 165 - 164 - 164 - - - - - - - 151 - 150 - 149 - - - - - - - 244 - 244 - 244 - - - - - - - - - - - - - - - - 0 - 0 - - - - - - - - :/images/clear.png:/images/clear.png - - - - 14 - 14 - - - - - - - - - - - - - 255 - 127 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - - - 255 - 127 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - - - 255 - 127 - 0 - - - - - - - 150 - 147 - 145 - - - - - - - - Curve 16 - - - - - - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 127 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 127 - 0 - - - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 127 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 127 - 0 - - - - - - - - - 146 - 145 - 144 - - - - - - - 255 - 127 - 0 - - - - - - - 165 - 164 - 164 - - - - - - - 151 - 150 - 149 - - - - - - - 244 - 244 - 244 - - - - - - - - - - - - - - - - 0 - 0 - - - - - - - - :/images/clear.png:/images/clear.png - - - - 14 - 14 - - - - - - - - - - - - - 127 - 127 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - - - 127 - 127 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - - - 127 - 127 - 0 - - - - - - - 150 - 147 - 145 - - - - - - - - Curve 6 - - - - - - - - - - - - 255 - 255 - 255 - - - - - - - 127 - 127 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 127 - 127 - 0 - - - - - - - - - 255 - 255 - 255 - - - - - - - 127 - 127 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 127 - 127 - 0 - - - - - - - - - 146 - 145 - 144 - - - - - - - 127 - 127 - 0 - - - - - - - 165 - 164 - 164 - - - - - - - 151 - 150 - 149 - - - - - - - 244 - 244 - 244 - - - - - - - - - - - - - - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 127 - 127 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 128 - 128 - - - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 127 - 127 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 128 - 128 - - - - - - - - - 146 - 145 - 144 - - - - - - - 0 - 127 - 127 - - - - - - - 165 - 164 - 164 - - - - - - - 151 - 150 - 149 - - - - - - - 244 - 244 - 244 - - - - - - - - - - - - - - - - - - - - 127 - 0 - 127 - - - - - - - 255 - 255 - 255 - - - - - - - - - 127 - 0 - 127 - - - - - - - 255 - 255 - 255 - - - - - - - - - 127 - 0 - 127 - - - - - - - 150 - 147 - 145 - - - - - - - - Curve 5 - - - - - - - - 0 - 0 - - - - - - - - :/images/clear.png:/images/clear.png - - - - 14 - 14 - - - - - - - - - - - - - 255 - 255 - 255 - - - - - - - 123 - 0 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 127 - 0 - 255 - - - - - - - - - 255 - 255 - 255 - - - - - - - 123 - 0 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 127 - 0 - 255 - - - - - - - - - 146 - 145 - 144 - - - - - - - 123 - 0 - 255 - - - - - - - 165 - 164 - 164 - - - - - - - 151 - 150 - 149 - - - - - - - 244 - 244 - 244 - - - - - - - - - - - - - - - - - - - - 0 - 128 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - - - 0 - 128 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - - - 0 - 128 - 255 - - - - - - - 150 - 147 - 145 - - - - - - - - Curve 9 - - - - - - - - - - - - 0 - 255 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - - - 0 - 255 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - - - 0 - 255 - 0 - - - - - - - 150 - 147 - 145 - - - - - - - - Curve 11 - - - - - - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 255 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 255 - 0 - - - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 255 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 255 - 0 - - - - - - - - - 146 - 145 - 144 - - - - - - - 0 - 255 - 0 - - - - - - - 165 - 164 - 164 - - - - - - - 151 - 150 - 149 - - - - - - - 244 - 244 - 244 - - - - - - - - - - - - - - - - 0 - 0 - - - - - - - - :/images/clear.png:/images/clear.png - - - - 14 - 14 - - - - - - - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 255 - 127 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 255 - 127 - - - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 255 - 127 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 255 - 127 - - - - - - - - - 146 - 145 - 144 - - - - - - - 0 - 255 - 127 - - - - - - - 165 - 164 - 164 - - - - - - - 151 - 150 - 149 - - - - - - - 244 - 244 - 244 - - - - - - - - - - - - - - - - - - - - 0 - 255 - 127 - - - - - - - 255 - 255 - 255 - - - - - - - - - 0 - 255 - 127 - - - - - - - 255 - 255 - 255 - - - - - - - - - 0 - 255 - 127 - - - - - - - 150 - 147 - 145 - - - - - - - - Curve 12 - - - - - - - - 0 - 0 - - - - - - - - :/images/clear.png:/images/clear.png - - - - 14 - 14 - - - - - - - - - - - - - 127 - 127 - 127 - - - - - - - 255 - 255 - 255 - - - - - - - - - 127 - 127 - 127 - - - - - - - 255 - 255 - 255 - - - - - - - - - 127 - 127 - 127 - - - - - - - 150 - 147 - 145 - - - - - - - - Curve 7 - - - - - - - - - - - - 255 - 255 - 255 - - - - - - - 127 - 127 - 127 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 127 - 127 - 127 - - - - - - - - - 255 - 255 - 255 - - - - - - - 127 - 127 - 127 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 127 - 127 - 127 - - - - - - - - - 146 - 145 - 144 - - - - - - - 127 - 127 - 127 - - - - - - - 165 - 164 - 164 - - - - - - - 151 - 150 - 149 - - - - - - - 244 - 244 - 244 - - - - - - - - - - - - - - - - 0 - 0 - - - - - - - - :/images/clear.png:/images/clear.png - - - - 14 - 14 - - - - - - - - - - - - - 0 - 0 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - - - 0 - 0 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - - - 0 - 0 - 255 - - - - - - - 150 - 147 - 145 - - - - - - - - Curve 8 - - - - - - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 0 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 0 - 255 - - - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 0 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 0 - 255 - - - - - - - - - 146 - 145 - 144 - - - - - - - 0 - 0 - 255 - - - - - - - 165 - 164 - 164 - - - - - - - 151 - 150 - 149 - - - - - - - 244 - 244 - 244 - - - - - - - - - - - - - - - - 0 - 0 - - - - - - - - :/images/clear.png:/images/clear.png - - - - 14 - 14 - - - - - - - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 128 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 127 - 255 - - - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 128 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 127 - 255 - - - - - - - - - 146 - 145 - 144 - - - - - - - 0 - 128 - 255 - - - - - - - 165 - 164 - 164 - - - - - - - 151 - 150 - 149 - - - - - - - 244 - 244 - 244 - - - - - - - - - - - - - - - - 0 - 0 - - - - - - - - :/images/clear.png:/images/clear.png - - - - 14 - 14 - - - - - - - - - - - - - 123 - 0 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - - - 123 - 0 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - - - 123 - 0 - 255 - - - - - - - 150 - 147 - 145 - - - - - - - - Curve 10 - - - - - - - - 0 - 0 - - - - - - - - :/images/clear.png:/images/clear.png - - - - 14 - 14 - - - - - - - - - - - - - 127 - 255 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - - - 127 - 255 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - - - 127 - 255 - 0 - - - - - - - 150 - 147 - 145 - - - - - - - - Curve 13 - - - - - - - - - - - - 255 - 255 - 255 - - - - - - - 127 - 255 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 127 - 255 - 0 - - - - - - - - - 255 - 255 - 255 - - - - - - - 127 - 255 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 127 - 255 - 0 - - - - - - - - - 146 - 145 - 144 - - - - - - - 127 - 255 - 0 - - - - - - - 165 - 164 - 164 - - - - - - - 151 - 150 - 149 - - - - - - - 244 - 244 - 244 - - - - - - - - - - - - - - - - 0 - 0 - - - - - - - - :/images/clear.png:/images/clear.png - - - - 14 - 14 - - - - - - - - - - - - - 255 - 0 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - - - 255 - 0 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - - - 255 - 0 - 0 - - - - - - - 150 - 147 - 145 - - - - - - - - Curve 14 - - - - - - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 0 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 0 - 0 - - - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 0 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 0 - 0 - - - - - - - - - 146 - 145 - 144 - - - - - - - 255 - 0 - 0 - - - - - - - 165 - 164 - 164 - - - - - - - 151 - 150 - 149 - - - - - - - 244 - 244 - 244 - - - - - - - - - - - - - - - Qt::Vertical - - - - 20 - 5 - - - - - - - - - - - - Curve type - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 3 points - - - - - 3 points custom - - - - - 5 points - - - - - 5 points custom - - - - - 9 points - - - - - 9 points custom - - - - - 17 points - - - - - 17 points custom - - - - - - - - Curve name - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - 6 - - - - - - - - 0 - 0 - - - - - 400 - 400 - - - - Qt::AlignCenter - - - - - - - - - Qt::Vertical - - - QSizePolicy::MinimumExpanding - - - - 20 - 0 - - - - - - - - 0 - - - 2 - - - 0 - - - 0 - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - Qt::Vertical - - - - 5 - 20 - - - - - - - - - - Qt::Horizontal - - - QSizePolicy::Expanding - - - - 5 - 20 - - - - - - - - - 50 - false - - - - false - - - Curve Creator - - - - - - Y at X=100 - - - - - - - - Both - - - - - x>0 - - - - - x<0 - - - - - - - - - Linear - - - - - Single Expo - - - - - Symmetrical f(x)=-f(-x) - - - - - Symmetrical f(x)=f(-x) - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Apply - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - Side - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Y at X=-100 - - - - - - - Y at X=0 - - - - - - - - 0 - 0 - - - - -100 - - - 100 - - - - - - - Curve type - - - - - - - Coefficient - - - - - - - - 0 - 0 - - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - -100 - - - 100 - - - - - - - - - - - - - - Clear All Curves - - - - :/images/clear.png:/images/clear.png - - - - - - - - Custom switches - - - - - - true - - - - - 0 - 0 - 716 - 482 - - - - - - - - 0 - 0 - - - - - - - - - - - - - 0 - 0 - - - - true - - - Qt::CustomContextMenu - - - QFrame::Panel - - - QFrame::Raised - - - CS9 - - - - - - - - 0 - 0 - - - - QFrame::Panel - - - QFrame::Raised - - - Duration - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - true - - - Qt::CustomContextMenu - - - QFrame::Panel - - - QFrame::Raised - - - CSF - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - true - - - Qt::CustomContextMenu - - - QFrame::Panel - - - QFrame::Raised - - - CSD - - - - - - - QFrame::Panel - - - QFrame::Raised - - - 0 - - - AND - - - Qt::AlignCenter - - - 3 - - - - - - - - 0 - 0 - - - - QFrame::Panel - - - QFrame::Raised - - - V2 - - - - - - - - 0 - 0 - - - - QFrame::Panel - - - QFrame::Raised - - - V1 - - - - - - - - 0 - 0 - - - - true - - - Qt::CustomContextMenu - - - QFrame::Panel - - - QFrame::Raised - - - CS6 - - - - - - - - 0 - 0 - - - - true - - - Qt::CustomContextMenu - - - false - - - QFrame::Panel - - - QFrame::Raised - - - CS1 - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - true - - - Qt::CustomContextMenu - - - QFrame::Panel - - - QFrame::Raised - - - CS8 - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - true - - - Qt::CustomContextMenu - - - QFrame::Panel - - - QFrame::Raised - - - CS7 - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - true - - - Qt::CustomContextMenu - - - QFrame::Panel - - - QFrame::Raised - - - CSA - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - true - - - Qt::CustomContextMenu - - - QFrame::Panel - - - QFrame::Raised - - - CSB - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - true - - - Qt::CustomContextMenu - - - QFrame::Panel - - - QFrame::Raised - - - CSC - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - true - - - Qt::CustomContextMenu - - - QFrame::Panel - - - QFrame::Raised - - - CS5 - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - QFrame::Panel - - - QFrame::Raised - - - Function - - - - - - - - 0 - 0 - - - - true - - - Qt::CustomContextMenu - - - QFrame::Panel - - - QFrame::Raised - - - CS3 - - - - - - - - 0 - 0 - - - - true - - - Qt::CustomContextMenu - - - QFrame::Panel - - - QFrame::Raised - - - CS2 - - - - - - - - 0 - 0 - - - - true - - - Qt::CustomContextMenu - - - QFrame::Panel - - - QFrame::Raised - - - CSE - - - - - - - - 0 - 0 - - - - true - - - Qt::CustomContextMenu - - - QFrame::Panel - - - QFrame::Raised - - - CSG - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - true - - - Qt::CustomContextMenu - - - QFrame::Panel - - - QFrame::Raised - - - CS4 - - - - - - - - 0 - 0 - - - - QFrame::Panel - - - QFrame::Raised - - - Delay - - - - - - - - - - - - - 0 - 0 - - - - - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - true - - - Qt::CustomContextMenu - - - QFrame::Panel - - - QFrame::Raised - - - CST - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - QFrame::Panel - - - QFrame::Raised - - - 0 - - - AND - - - Qt::AlignCenter - - - 3 - - - - - - - - 0 - 0 - - - - QFrame::Panel - - - QFrame::Raised - - - V2 - - - - - - - - 0 - 0 - - - - QFrame::Panel - - - QFrame::Raised - - - V1 - - - - - - - - 0 - 0 - - - - true - - - Qt::CustomContextMenu - - - QFrame::Panel - - - QFrame::Raised - - - CSM - - - - - - - - 0 - 0 - - - - true - - - Qt::CustomContextMenu - - - QFrame::Panel - - - QFrame::Raised - - - CSP - - - - - - - - 0 - 0 - - - - true - - - Qt::CustomContextMenu - - - QFrame::Panel - - - QFrame::Raised - - - CSH - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - true - - - Qt::CustomContextMenu - - - QFrame::Panel - - - QFrame::Raised - - - CSO - - - - - - - - 0 - 0 - - - - true - - - Qt::CustomContextMenu - - - QFrame::Panel - - - QFrame::Raised - - - CSN - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - true - - - Qt::CustomContextMenu - - - QFrame::Panel - - - QFrame::Raised - - - CSQ - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - true - - - Qt::CustomContextMenu - - - QFrame::Panel - - - QFrame::Raised - - - CSR - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - true - - - Qt::CustomContextMenu - - - QFrame::Panel - - - QFrame::Raised - - - CSS - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - true - - - Qt::CustomContextMenu - - - QFrame::Panel - - - QFrame::Raised - - - CSL - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - true - - - Qt::CustomContextMenu - - - QFrame::Panel - - - QFrame::Raised - - - CSK - - - - - - - - 0 - 0 - - - - QFrame::Panel - - - QFrame::Raised - - - Function - - - - - - - - 0 - 0 - - - - true - - - Qt::CustomContextMenu - - - QFrame::Panel - - - QFrame::Raised - - - CSJ - - - - - - - - 0 - 0 - - - - true - - - Qt::CustomContextMenu - - - QFrame::Panel - - - QFrame::Raised - - - CSI - - - - - - - - 0 - 0 - - - - true - - - Qt::CustomContextMenu - - - QFrame::Panel - - - QFrame::Raised - - - CSU - - - - - - - - 0 - 0 - - - - true - - - Qt::CustomContextMenu - - - QFrame::Panel - - - QFrame::Raised - - - CSV - - - - - - - - 0 - 0 - - - - true - - - Qt::CustomContextMenu - - - QFrame::Panel - - - QFrame::Raised - - - CSW - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - QFrame::Panel - - - QFrame::Raised - - - Duration - - - - - - - - 0 - 0 - - - - QFrame::Panel - - - QFrame::Raised - - - Delay - - - - - - - - - - - - Qt::Vertical - - - - 20 - 1 - - - - - - - - - - - - - Safety Switches - - - - - - - 0 - 0 - - - - true - - - - - 0 - 0 - 163 - 354 - - - - - - - QFrame::Panel - - - QFrame::Raised - - - 0 - - - Channel - - - Qt::AlignCenter - - - 3 - - - - - - - QFrame::Panel - - - QFrame::Raised - - - 0 - - - Switch - - - Qt::AlignCenter - - - 3 - - - - - - - QFrame::Panel - - - QFrame::Raised - - - 0 - - - Value - - - Qt::AlignCenter - - - 3 - - - - - - - - 0 - 0 - - - - QFrame::Panel - - - QFrame::Raised - - - CH1 - - - - - - - - 0 - 0 - - - - QFrame::Panel - - - QFrame::Raised - - - CH2 - - - - - - - - 0 - 0 - - - - QFrame::Panel - - - QFrame::Raised - - - CH3 - - - - - - - - 0 - 0 - - - - QFrame::Panel - - - QFrame::Raised - - - CH4 - - - - - - - - 0 - 0 - - - - QFrame::Panel - - - QFrame::Raised - - - CH5 - - - - - - - - 0 - 0 - - - - QFrame::Panel - - - QFrame::Raised - - - CH6 - - - - - - - - 0 - 0 - - - - QFrame::Panel - - - QFrame::Raised - - - CH7 - - - - - - - - 0 - 0 - - - - QFrame::Panel - - - QFrame::Raised - - - CH8 - - - - - - - - 0 - 0 - - - - QFrame::Panel - - - QFrame::Raised - - - CH9 - - - - - - - - 0 - 0 - - - - QFrame::Panel - - - QFrame::Raised - - - CH10 - - - - - - - - 0 - 0 - - - - QFrame::Panel - - - QFrame::Raised - - - CH11 - - - - - - - - 0 - 0 - - - - QFrame::Panel - - - QFrame::Raised - - - CH12 - - - - - - - - 0 - 0 - - - - QFrame::Panel - - - QFrame::Raised - - - CH13 - - - - - - - - 0 - 0 - - - - QFrame::Panel - - - QFrame::Raised - - - CH14 - - - - - - - - 0 - 0 - - - - QFrame::Panel - - - QFrame::Raised - - - CH15 - - - - - - - - 0 - 0 - - - - QFrame::Panel - - - QFrame::Raised - - - CH16 - - - - - - - Qt::Vertical - - - - 20 - 1 - - - - - - - - - - - - - Custom Functions - - - - - - true - - - - - 0 - 0 - 526 - 48 - - - - - - - - 0 - 0 - - - - - - - - - - QLayout::SetNoConstraint - - - - - QFrame::Panel - - - QFrame::Raised - - - Switch - - - Qt::AlignCenter - - - - - - - QFrame::Panel - - - QFrame::Raised - - - Function - - - Qt::AlignCenter - - - - - - - QFrame::Panel - - - QFrame::Raised - - - Param - - - Qt::AlignCenter - - - - - - - QFrame::Panel - - - QFrame::Raised - - - Enable - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - - - 0 - 0 - - - - - - - - - - QLayout::SetNoConstraint - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - QFrame::Panel - - - QFrame::Raised - - - Switch - - - Qt::AlignCenter - - - - - - - QFrame::Panel - - - QFrame::Raised - - - Function - - - Qt::AlignCenter - - - - - - - QFrame::Panel - - - QFrame::Raised - - - Param - - - Qt::AlignCenter - - - - - - - QFrame::Panel - - - QFrame::Raised - - - Enable - - - - - - - - - - - - Qt::Vertical - - - - 20 - 579 - - - - - - - - - - - - - Telemetry - - - - - - - - QLayout::SetMinimumSize - - - - - - 0 - 0 - - - - Serial Protocol - - - - 1 - - - 1 - - - - - - - - 0 - 0 - - - - Volt source - - - - - - - - 0 - 0 - - - - - Metric - - - - - Imperial - - - - - - - - - 0 - 0 - - - - - 0 - 0 - - - - Current source - - - - - - - - 0 - 0 - - - - - 100 - 0 - - - - Protocol - - - - - - - - 0 - 0 - - - - - NONE - - - - - A1 - - - - - A2 - - - - - FAS - - - - - - - - - 0 - 0 - - - - - None - - - - - FrSky Sensor Hub - - - - - - - - - 0 - 0 - - - - - A1 - - - - - A2 - - - - - FAS - - - - - CEL - - - - - - - - - 0 - 0 - - - - - 2 - - - - - 3 - - - - - 4 - - - - - - - - - 0 - 0 - - - - - 0 - 0 - - - - Units - - - - - - - - 0 - 0 - - - - Blades - - - - - - - - - - - - - 0 - 0 - - - - Altimetry / Vario - - - - 1 - - - 1 - - - - - - - - 0 - 0 - - - - - Alti - - - - - Alti+ - - - - - Vario - - - - - A1 - - - - - A2 - - - - - - - - - - - 0 - 0 - - - - Sink Max - - - Qt::AlignCenter - - - - - - - - 0 - 0 - - - - 1 - - - -2.000000000000000 - - - 0.000000000000000 - - - 0.100000000000000 - - - -0.500000000000000 - - - - - - - - 0 - 0 - - - - 1 - - - -1.000000000000000 - - - 2.000000000000000 - - - 0.100000000000000 - - - 0.500000000000000 - - - - - - - - 0 - 0 - - - - 0 - - - 3.000000000000000 - - - 17.000000000000000 - - - 10.000000000000000 - - - - - - - - 0 - 0 - - - - 0 - - - -17.000000000000000 - - - -3.000000000000000 - - - -10.000000000000000 - - - - - - - - 0 - 0 - - - - Off - - - - - - - - 0 - 0 - - - - Climb Max - - - Qt::AlignCenter - - - - - - - - 0 - 0 - - - - Sink Min - - - Qt::AlignCenter - - - - - - - - 0 - 0 - - - - Climb Min - - - Qt::AlignCenter - - - - - - - - - Vario source - - - - - - - Vario limits - - - - - - - - - - 0 - 0 - - - - Use GPS as altitude source - - - - - - - - 0 - 0 - - - - Display altitude in toolbar - - - - - - - - - - - - - - - - QLayout::SetMinimumSize - - - - - - 0 - 0 - - - - true - - - - - - A1 - - - false - - - - 1 - - - 1 - - - - - - - - 0 - 0 - - - - Unit - - - - - - - - 0 - 0 - - - - Max Value - - - - - - - - 0 - 0 - - - - Alarm 1 - - - - - - - - 0 - 0 - - - - - ---- - - - - - Yellow - - - - - Orange - - - - - Red - - - - - - - - - 0 - 0 - - - - - < - - - - - > - - - - - - - - - 0 - 0 - - - - Alarm 2 - - - - - - - - 0 - 0 - - - - - ---- - - - - - Yellow - - - - - Orange - - - - - Red - - - - - - - - - 0 - 0 - - - - - < - - - - - > - - - - - - - - - 0 - 0 - - - - Min Value - - - - - - - true - - - - 0 - 0 - - - - 0 - - - 255.000000000000000 - - - - - - - - 0 - 0 - - - - 2 - - - -12.800000000000001 - - - 12.699999999999999 - - - 0.100000000000000 - - - - - - - true - - - - 0 - 0 - - - - 0 - - - 255.000000000000000 - - - - - - - true - - - - 0 - 0 - - - - 0 - - - 255.000000000000000 - - - - - - - - 0 - 0 - - - - - Volts (V) - - - - - Amps (A) - - - - - Speed (m/s or ft/s) - - - - - Raw (-) - - - - - Speed (km/h or miles/h) - - - - - Meters (m or ft) - - - - - Temp (°) - - - - - Fuel (%) - - - - - mAmps (mA) - - - - - - - - - - - - - A2 - - - - 1 - - - 1 - - - - - - - - 0 - 0 - - - - Unit - - - - - - - - 0 - 0 - - - - Max Value - - - - - - - - 0 - 0 - - - - Alarm 1 - - - - - - - - 0 - 0 - - - - - ---- - - - - - Yellow - - - - - Orange - - - - - Red - - - - - - - - - 0 - 0 - - - - - < - - - - - > - - - - - - - - - 0 - 0 - - - - Alarm 2 - - - - - - - - 0 - 0 - - - - - ---- - - - - - Yellow - - - - - Orange - - - - - Red - - - - - - - - - 0 - 0 - - - - - < - - - - - > - - - - - - - - - 0 - 0 - - - - Min Value - - - - - - - true - - - - 0 - 0 - - - - 0 - - - 255.000000000000000 - - - - - - - - 0 - 0 - - - - 2 - - - -0.800000000000000 - - - 0.700000000000000 - - - 0.100000000000000 - - - - - - - true - - - - 0 - 0 - - - - 0 - - - 255.000000000000000 - - - - - - - true - - - - 0 - 0 - - - - 0 - - - 255.000000000000000 - - - - - - - - 0 - 0 - - - - - Volts (V) - - - - - Amps (A) - - - - - Speed (m/s or ft/s) - - - - - Raw (-) - - - - - Speed (km/h or miles/h) - - - - - Meters (m or ft) - - - - - Temp (°) - - - - - Fuel (%) - - - - - mAmps (mA) - - - - - - - - - - - - - - 0 - 0 - - - - RSSI - - - - - - - 0 - 0 - - - - - 0 - 0 - - - - - - - Alarm 1 - - - - - - - - 0 - 0 - - - - - ---- - - - - - Yellow - - - - - Orange - - - - - Red - - - - - - - - true - - - - 0 - 0 - - - - - - - 20 - - - 80 - - - 1 - - - 50 - - - - - - - - 0 - 0 - - - - - 0 - 0 - - - - Alarm 2 - - - - - - - - 0 - 0 - - - - - ---- - - - - - Yellow - - - - - Orange - - - - - Red - - - - - - - - true - - - - 0 - 0 - - - - - - - 20 - - - 80 - - - 1 - - - 50 - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - - - - - 0 - 0 - - - - - - - - 1 - - - 1 - - - - - - 0 - 0 - - - - 0 - - - - Telemetry screen 1 - - - - - - - - - 0 - 0 - - - - - 0 - 0 - - - - Custom Screen Type - - - - - - - - 0 - 0 - - - - - 90 - 0 - - - - - Nums - - - - - Bars - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - - - - - - Source - - - Qt::AlignCenter - - - - - - - Min - - - Qt::AlignCenter - - - - - - - Gauge - - - Qt::AlignCenter - - - - - - - Max - - - Qt::AlignCenter - - - - - - - - - - 0 - - - - - - - false - - - Background:qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(0, 0, 128, 255), stop:0.339795 rgba(0, 0, 128, 255), stop:0.339799 rgba(255, 255, 255, 255), stop:0.662444 rgba(255, 255, 255, 255),) - - - - QFrame::Panel - - - QFrame::Raised - - - Gauge 1 - - - Qt::AlignCenter - - - - - - - 0 - - - - - - - - - - 0 - - - - - - - false - - - Background:qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(0, 0, 128, 255), stop:0.339795 rgba(0, 0, 128, 255), stop:0.339799 rgba(255, 255, 255, 255), stop:0.662444 rgba(255, 255, 255, 255),) - - - - QFrame::Panel - - - QFrame::Raised - - - Gauge 2 - - - Qt::AlignCenter - - - - - - - 0 - - - - - - - - - - 0 - - - - - - - false - - - Background:qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(0, 0, 128, 255), stop:0.339795 rgba(0, 0, 128, 255), stop:0.339799 rgba(255, 255, 255, 255), stop:0.662444 rgba(255, 255, 255, 255),) - - - - QFrame::Panel - - - QFrame::Raised - - - Gauge 3 - - - Qt::AlignCenter - - - - - - - 0 - - - - - - - - - - 0 - - - - - - - false - - - Background:qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(0, 0, 128, 255), stop:0.339795 rgba(0, 0, 128, 255), stop:0.339799 rgba(255, 255, 255, 255), stop:0.662444 rgba(255, 255, 255, 255),) - - - - QFrame::Panel - - - QFrame::Raised - - - Gauge 4 - - - Qt::AlignCenter - - - - - - - 0 - - - - - - - - - - - Telemetry screen 2 - - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - - - - - - Source - - - Qt::AlignCenter - - - - - - - Min - - - Qt::AlignCenter - - - - - - - Gauge - - - Qt::AlignCenter - - - - - - - Max - - - Qt::AlignCenter - - - - - - - - - - 0 - - - - - - - false - - - Background:qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(0, 0, 128, 255), stop:0.339795 rgba(0, 0, 128, 255), stop:0.339799 rgba(255, 255, 255, 255), stop:0.662444 rgba(255, 255, 255, 255),) - - - - QFrame::Panel - - - QFrame::Raised - - - Gauge 1 - - - Qt::AlignCenter - - - - - - - 0 - - - - - - - - - - 0 - - - - - - - false - - - Background:qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(0, 0, 128, 255), stop:0.339795 rgba(0, 0, 128, 255), stop:0.339799 rgba(255, 255, 255, 255), stop:0.662444 rgba(255, 255, 255, 255),) - - - - QFrame::Panel - - - QFrame::Raised - - - Gauge 2 - - - Qt::AlignCenter - - - - - - - 0 - - - - - - - - - - 0 - - - - - - - false - - - Background:qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(0, 0, 128, 255), stop:0.339795 rgba(0, 0, 128, 255), stop:0.339799 rgba(255, 255, 255, 255), stop:0.662444 rgba(255, 255, 255, 255),) - - - - QFrame::Panel - - - QFrame::Raised - - - Gauge 3 - - - Qt::AlignCenter - - - - - - - 0 - - - - - - - - - - 0 - - - - - - - false - - - Background:qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(0, 0, 128, 255), stop:0.339795 rgba(0, 0, 128, 255), stop:0.339799 rgba(255, 255, 255, 255), stop:0.662444 rgba(255, 255, 255, 255),) - - - - QFrame::Panel - - - QFrame::Raised - - - Gauge 4 - - - Qt::AlignCenter - - - - - - - 0 - - - - - - - - - - - - - 0 - 0 - - - - Custom Screen Type - - - - - - - - 0 - 0 - - - - - 90 - 0 - - - - - Nums - - - - - Bars - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - Telemetry screen 3 - - - - - - - - - 0 - 0 - - - - Custom Screen Type - - - - - - - - 0 - 0 - - - - - 90 - 0 - - - - - Nums - - - - - Bars - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - - - - - - Source - - - Qt::AlignCenter - - - - - - - Min - - - Qt::AlignCenter - - - - - - - Gauge - - - Qt::AlignCenter - - - - - - - Max - - - Qt::AlignCenter - - - - - - - - 0 - 0 - - - - - - - - 0 - - - - - - - false - - - Background:qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(0, 0, 128, 255), stop:0.339795 rgba(0, 0, 128, 255), stop:0.339799 rgba(255, 255, 255, 255), stop:0.662444 rgba(255, 255, 255, 255),) - - - - QFrame::Panel - - - QFrame::Raised - - - Gauge 1 - - - Qt::AlignCenter - - - - - - - 0 - - - - - - - - - - 0 - - - - - - - false - - - Background:qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(0, 0, 128, 255), stop:0.339795 rgba(0, 0, 128, 255), stop:0.339799 rgba(255, 255, 255, 255), stop:0.662444 rgba(255, 255, 255, 255),) - - - - QFrame::Panel - - - QFrame::Raised - - - Gauge 2 - - - Qt::AlignCenter - - - - - - - 0 - - - - - - - - - - 0 - - - - - - - false - - - Background:qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(0, 0, 128, 255), stop:0.339795 rgba(0, 0, 128, 255), stop:0.339799 rgba(255, 255, 255, 255), stop:0.662444 rgba(255, 255, 255, 255),) - - - - QFrame::Panel - - - QFrame::Raised - - - Gauge 3 - - - Qt::AlignCenter - - - - - - - 0 - - - - - - - - - - 0 - - - - - - - false - - - Background:qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(0, 0, 128, 255), stop:0.339795 rgba(0, 0, 128, 255), stop:0.339799 rgba(255, 255, 255, 255), stop:0.662444 rgba(255, 255, 255, 255),) - - - - QFrame::Panel - - - QFrame::Raised - - - Gauge 4 - - - Qt::AlignCenter - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - Qt::Vertical - - - - 20 - 1 - - - - - - - - - Templates - - - - - - - - - - - - - tabWidget - modelNameLE - modelVoice_SB - timer1ValTE - timer1DirCB - timer1ModeCB - timer1ModeBCB - timer1Perm - timer1Minute - timer1CountDownBeep - timer2ValTE - timer2DirCB - timer2ModeCB - timer2ModeBCB - timer2Perm - timer2Minute - timer2CountDownBeep - swwarn0_CB - swwarn1_ChkB - swwarn2_ChkB - swwarn3_ChkB - swwarn4_CB - swwarn5_ChkB - swwarn6_ChkB - tswwarn0_CB - chkSA - chkSB - chkSC - chkSD - chkSE - chkSF - chkSG - bcRUDChkB - bcELEChkB - bcTHRChkB - bcAILChkB - bcP1ChkB - bcP2ChkB - bcP3ChkB - bcP4ChkB - bcREaChkB - bcREbChkB - swashTypeCB - swashCollectiveCB - swashRingValSB - swashInvertELE - swashInvertAIL - swashInvertCOL - phase0Name - phase0Trim2Slider - phase0Trim1Slider - phase0Trim4Slider - phase0Trim3Slider - phase0Trim2Value - phase0Trim3Value - phase0Trim1Value - phase0Trim4Value - phase0GV1Source - phase0GV1Name - phase0GV1Value - phase0GV2Source - phase0GV2Name - phase0GV2Value - phase0GV3Source - phase0GV3Name - phase0GV3Value - phase0GV4Source - phase0GV4Name - phase0GV4Value - phase0GV5Source - phase0GV5Name - phase0GV5Value - phase0RE1Value - phase0RE2Value - phase1Name - phase1Switch - phase1Trim2Slider - phase1Trim1Slider - phase1Trim4Slider - phase1Trim3Slider - phase1Trim2Use - phase1Trim2Value - phase1Trim3Use - phase1Trim3Value - phase1Trim1Use - phase1Trim1Value - phase1Trim4Use - phase1Trim4Value - phase1GV1Use - phase1GV1Value - phase1GV2Use - phase1GV2Value - phase1GV3Use - phase1GV3Value - phase1GV4Use - phase1GV4Value - phase1GV5Use - phase1GV5Value - phase1RE1Use - phase1RE1Value - phase1RE2Use - phase1RE2Value - phase2Name - phase2Switch - phase2Trim2Slider - phase2Trim1Slider - phase2Trim4Slider - phase2Trim3Slider - phase2Trim2Use - phase2Trim2Value - phase2Trim3Use - phase2Trim3Value - phase2Trim1Use - phase2Trim1Value - phase2Trim4Use - phase2Trim4Value - phase2GV1Use - phase2GV1Value - phase2GV2Use - phase2GV2Value - phase2GV3Use - phase2GV3Value - phase2GV4Use - phase2GV4Value - phase2GV5Use - phase2GV5Value - phase2RE1Use - phase2RE1Value - phase2RE2Use - phase2RE2Value - phase3Name - phase3Switch - phase3Trim2Slider - phase3Trim1Slider - phase3Trim4Slider - phase3Trim3Slider - phase3Trim2Use - phase3Trim2Value - phase3Trim3Use - phase3Trim3Value - phase3Trim1Use - phase3Trim1Value - phase3Trim4Use - phase3Trim4Value - phase3GV1Use - phase3GV1Value - phase3GV2Use - phase3GV2Value - phase3GV3Use - phase3GV3Value - phase3GV4Use - phase3GV4Value - phase3GV5Use - phase3GV5Value - phase3RE1Use - phase3RE1Value - phase3RE2Use - phase3RE2Value - phase4Name - phase4Switch - phase4Trim2Slider - phase4Trim1Slider - phase4Trim4Slider - phase4Trim3Slider - phase4Trim2Use - phase4Trim2Value - phase4Trim3Use - phase4Trim3Value - phase4Trim1Use - phase4Trim1Value - phase4Trim4Use - phase4Trim4Value - phase4GV1Use - phase4GV1Value - phase4GV2Use - phase4GV2Value - phase4GV3Use - phase4GV3Value - phase4GV4Use - phase4GV4Value - phase4GV5Use - phase4GV5Value - phase4RE1Use - phase4RE1Value - phase4RE2Use - phase4RE2Value - phase5Name - phase5Switch - phase5Trim2Slider - phase5Trim1Slider - phase5Trim4Slider - phase5Trim3Slider - phase5Trim2Use - phase5Trim2Value - phase5Trim3Use - phase5Trim3Value - phase5Trim1Use - phase5Trim1Value - phase5Trim4Use - phase5Trim4Value - phase5GV1Use - phase5GV1Value - phase5GV2Use - phase5GV2Value - phase5GV3Use - phase5GV3Value - phase5GV4Use - phase5GV4Value - phase5GV5Use - phase5GV5Value - phase5RE1Use - phase5RE1Value - phase5RE2Use - phase5RE2Value - phase6Name - phase6Switch - phase6Trim2Slider - phase6Trim1Slider - phase6Trim4Slider - phase6Trim3Slider - phase6Trim2Use - phase6Trim2Value - phase6Trim3Use - phase6Trim3Value - phase6Trim1Use - phase6Trim1Value - phase6Trim4Use - phase6Trim4Value - phase6GV1Use - phase6GV1Value - phase6GV2Use - phase6GV2Value - phase6GV3Use - phase6GV3Value - phase6GV4Use - phase6GV4Value - phase6GV5Use - phase6GV5Value - phase6RE1Use - phase6RE1Value - phase6RE2Use - phase6RE2Value - phase7Name - phase7Switch - phase7Trim2Slider - phase7Trim1Slider - phase7Trim4Slider - phase7Trim3Slider - phase7Trim2Use - phase7Trim2Value - phase7Trim3Use - phase7Trim3Value - phase7Trim1Use - phase7Trim1Value - phase7Trim4Use - phase7Trim4Value - phase7GV1Use - phase7GV1Value - phase7GV2Use - phase7GV2Value - phase7GV3Use - phase7GV3Value - phase7GV4Use - phase7GV4Value - phase7GV5Use - phase7GV5Value - phase7RE1Use - phase7RE1Value - phase7RE2Use - phase7RE2Value - phase8Name - phase8Switch - phase8Trim2Slider - phase8Trim1Slider - phase8Trim4Slider - phase8Trim3Slider - phase8Trim2Use - phase8Trim2Value - phase8Trim3Use - phase8Trim3Value - phase8Trim1Use - phase8Trim1Value - phase8Trim4Use - phase8Trim4Value - phase8GV1Use - phase8GV1Value - phase8GV2Use - phase8GV2Value - phase8GV3Use - phase8GV3Value - phase8GV4Use - phase8GV4Value - phase8GV5Use - phase8GV5Value - phase8RE1Use - phase8RE1Value - phase8RE2Use - phase8RE2Value - CHName_01 - offsetDSB_1 - symckb_1 - minSB_1 - maxSB_1 - chInvCB_1 - ppmcenter_1 - CHName_02 - offsetDSB_2 - symckb_2 - minSB_2 - maxSB_2 - chInvCB_2 - ppmcenter_2 - CHName_03 - offsetDSB_3 - symckb_3 - minSB_3 - maxSB_3 - chInvCB_3 - ppmcenter_3 - CHName_04 - offsetDSB_4 - symckb_4 - minSB_4 - maxSB_4 - chInvCB_4 - ppmcenter_4 - CHName_05 - offsetDSB_5 - symckb_5 - minSB_5 - maxSB_5 - chInvCB_5 - ppmcenter_5 - CHName_06 - offsetDSB_6 - symckb_6 - minSB_6 - maxSB_6 - chInvCB_6 - ppmcenter_6 - CHName_07 - offsetDSB_7 - symckb_7 - minSB_7 - maxSB_7 - chInvCB_7 - ppmcenter_7 - CHName_08 - offsetDSB_8 - symckb_8 - minSB_8 - maxSB_8 - chInvCB_8 - ppmcenter_8 - CHName_09 - offsetDSB_9 - symckb_9 - minSB_9 - maxSB_9 - chInvCB_9 - ppmcenter_9 - CHName_10 - offsetDSB_10 - symckb_10 - minSB_10 - maxSB_10 - chInvCB_10 - ppmcenter_10 - CHName_11 - offsetDSB_11 - symckb_11 - minSB_11 - maxSB_11 - chInvCB_11 - ppmcenter_11 - CHName_12 - offsetDSB_12 - symckb_12 - minSB_12 - maxSB_12 - chInvCB_12 - ppmcenter_12 - CHName_13 - offsetDSB_13 - symckb_13 - minSB_13 - maxSB_13 - chInvCB_13 - ppmcenter_13 - CHName_14 - offsetDSB_14 - symckb_14 - minSB_14 - maxSB_14 - chInvCB_14 - ppmcenter_14 - CHName_15 - offsetDSB_15 - symckb_15 - minSB_15 - maxSB_15 - chInvCB_15 - ppmcenter_15 - CHName_16 - offsetDSB_16 - symckb_16 - minSB_16 - maxSB_16 - chInvCB_16 - ppmcenter_16 - CHName_17 - offsetDSB_17 - symckb_17 - minSB_17 - maxSB_17 - chInvCB_17 - ppmcenter_17 - CHName_18 - offsetDSB_18 - symckb_18 - minSB_18 - maxSB_18 - chInvCB_18 - ppmcenter_18 - CHName_19 - offsetDSB_19 - symckb_19 - minSB_19 - maxSB_19 - chInvCB_19 - ppmcenter_19 - CHName_20 - offsetDSB_20 - symckb_20 - minSB_20 - maxSB_20 - chInvCB_20 - ppmcenter_20 - CHName_21 - offsetDSB_21 - symckb_21 - minSB_21 - maxSB_21 - chInvCB_21 - ppmcenter_21 - CHName_22 - offsetDSB_22 - symckb_22 - minSB_22 - maxSB_22 - chInvCB_22 - ppmcenter_22 - CHName_23 - offsetDSB_23 - symckb_23 - minSB_23 - maxSB_23 - chInvCB_23 - ppmcenter_23 - CHName_24 - offsetDSB_24 - symckb_24 - minSB_24 - maxSB_24 - chInvCB_24 - ppmcenter_24 - CHName_25 - offsetDSB_25 - symckb_25 - minSB_25 - maxSB_25 - chInvCB_25 - ppmcenter_25 - CHName_26 - offsetDSB_26 - symckb_26 - minSB_26 - maxSB_26 - chInvCB_26 - ppmcenter_26 - CHName_27 - offsetDSB_27 - symckb_27 - minSB_27 - maxSB_27 - chInvCB_27 - ppmcenter_27 - CHName_28 - offsetDSB_28 - symckb_28 - minSB_28 - maxSB_28 - chInvCB_28 - ppmcenter_28 - CHName_29 - offsetDSB_29 - symckb_29 - minSB_29 - maxSB_29 - chInvCB_29 - ppmcenter_29 - CHName_30 - offsetDSB_30 - symckb_30 - minSB_30 - maxSB_30 - chInvCB_30 - ppmcenter_30 - CHName_31 - offsetDSB_31 - symckb_31 - minSB_31 - maxSB_31 - chInvCB_31 - ppmcenter_31 - CHName_32 - offsetDSB_32 - symckb_32 - minSB_32 - maxSB_32 - chInvCB_32 - ppmcenter_32 - a11LevelCB - a1RatioSB - a11ValueSB - a22GreaterCB - a1CalibSB - scrollArea - a21ValueSB - a21LevelCB - scrollArea_5 - a1UnitCB - a2CalibSB - a12ValueSB - a22ValueSB - a21GreaterCB - a22LevelCB - clearMixesPB - pushButton - a12GreaterCB - a2RatioSB - templateList - a11GreaterCB - a12LevelCB - scrollArea_2 - curvePt01_y - curvePt01_x - curvePt02_y - curvePt02_x - curvePt03_y - curvePt03_x - curvePt04_y - curvePt04_x - curvePt05_y - curvePt05_x - curvePt06_y - curvePt06_x - curvePt07_y - curvePt07_x - curvePt08_y - curvePt08_x - curvePt09_y - curvePt09_x - curvePt10_y - curvePt10_x - curvePt11_y - curvePt11_x - curvePt12_y - curvePt12_x - curvePt13_y - curvePt13_x - curvePt14_y - curvePt14_x - curvePt15_y - curvePt15_x - curvePt16_y - curvePt16_x - curvePt17_y - curvePt17_x - resetCurve_1 - curveEdit_1 - plotCB_1 - resetCurve_2 - curveEdit_2 - plotCB_2 - resetCurve_3 - curveEdit_3 - plotCB_3 - resetCurve_4 - curveEdit_4 - plotCB_4 - resetCurve_5 - curveEdit_5 - plotCB_5 - resetCurve_6 - curveEdit_6 - plotCB_6 - resetCurve_7 - curveEdit_7 - plotCB_7 - resetCurve_8 - curveEdit_8 - plotCB_8 - resetCurve_9 - curveEdit_9 - plotCB_9 - resetCurve_10 - curveEdit_10 - plotCB_10 - resetCurve_11 - curveEdit_11 - plotCB_11 - resetCurve_12 - curveEdit_12 - plotCB_12 - resetCurve_13 - curveEdit_13 - plotCB_13 - resetCurve_14 - curveEdit_14 - plotCB_14 - resetCurve_15 - curveEdit_15 - plotCB_15 - resetCurve_16 - curveEdit_16 - plotCB_16 - curvePreview - curvetype_CB - cswitchFunc_15 - cswitchFunc_13 - cswitchFunc_14 - cswitchFunc_4 - cswitchFunc_8 - cswitchFunc_7 - cswitchFunc_9 - cswitchFunc_10 - cswitchFunc_11 - cswitchFunc_12 - cswitchFunc_6 - cswitchFunc_1 - cswitchFunc_5 - cswitchFunc_2 - cswitchFunc_3 - cswitchFunc_16 - cswitchFunc_31 - cswitchFunc_32 - cswitchFunc_30 - cswitchFunc_29 - cswitchFunc_25 - cswitchFunc_20 - cswitchFunc_23 - cswitchFunc_26 - cswitchFunc_27 - cswitchFunc_28 - cswitchFunc_22 - cswitchFunc_17 - cswitchFunc_18 - cswitchFunc_19 - cswitchFunc_24 - cswitchFunc_21 - frskyUnitsCB - frskyCurrentCB - frskyProtoCB - frskyVoltCB - frskyBladesCB - varioSourceCB - varioLimitCenterMin_DSB - varioLimitCenterMax_DSB - varioLimitMax_DSB - varioLimitMin_DSB - varioLimitMinOff_ChkB - a2UnitCB - rssiAlarm1CB - rssiAlarm1SB - tabCsView - telemetryCSType1 - telemetryCS1F1_CB - telemetryCS1F3_CB - telBarCS1B1_CB - telMinCS1SB1 - telMaxCS1SB1 - telBarCS1B2_CB - telMinCS1SB2 - telMaxCS1SB2 - telBarCS1B3_CB - telMinCS1SB3 - telMaxCS1SB3 - telBarCS1B4_CB - telMinCS1SB4 - telMaxCS1SB4 - telemetryCS2F1_CB - telemetryCS2F3_CB - telBarCS2B1_CB - telMinCS2SB1 - telMaxCS2SB1 - telBarCS2B2_CB - telMinCS2SB2 - telMaxCS2SB2 - telBarCS2B3_CB - telMinCS2SB3 - telMaxCS2SB3 - telBarCS2B4_CB - telMinCS2SB4 - telMaxCS2SB4 - telemetryCS3F1_CB - telemetryCS3F3_CB - telBarCS3B1_CB - telMinCS3SB1 - telMaxCS3SB1 - telBarCS3B2_CB - telMinCS3SB2 - telMaxCS3SB2 - telBarCS3B3_CB - telMinCS3SB3 - telMaxCS3SB3 - telBarCS3B4_CB - telMinCS3SB4 - telMaxCS3SB4 - - - - - - diff --git a/companion/src/modeledit/CMakeLists.txt b/companion/src/modeledit/CMakeLists.txt new file mode 100644 index 000000000..aa00bc7dc --- /dev/null +++ b/companion/src/modeledit/CMakeLists.txt @@ -0,0 +1,54 @@ +include_directories(${CMAKE_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}) + +set(modeledit_NAMES + modeledit + setup + heli + curves + telemetry + expodialog + mixerdialog +) + +set(modeledit_SRCS + modelpanel.cpp + flightmodes.cpp + inputs.cpp + mixes.cpp + channels.cpp + customswitches.cpp + customfunctions.cpp + # templates.cpp + mixerslist.cpp + node.cpp + edge.cpp +) + +set(modeledit_HDRS + modelpanel.h + flightmodes.h + inputs.h + mixes.h + channels.h + customswitches.h + customfunctions.h + # templates.h + mixerslist.h + node.h +) + +set(modeledit_UIS + flightmode.ui + telemetry_analog.ui +) + +foreach(name ${modeledit_NAMES}) + set(modeledit_SRCS ${modeledit_SRCS} ${name}.cpp) + set(modeledit_HDRS ${modeledit_HDRS} ${name}.h) + set(modeledit_UIS ${modeledit_UIS} ${name}.ui) +endforeach() + +qt4_wrap_ui(modeledit_SRCS ${modeledit_UIS}) +qt4_wrap_cpp(modeledit_SRCS ${modeledit_HDRS}) + +add_library(modeledit ${modeledit_SRCS}) \ No newline at end of file diff --git a/companion/src/modeledit/channels.cpp b/companion/src/modeledit/channels.cpp new file mode 100644 index 000000000..09b6a367b --- /dev/null +++ b/companion/src/modeledit/channels.cpp @@ -0,0 +1,179 @@ +#include "channels.h" +#include +#include +#include +#include +#include +#include + +Channels::Channels(QWidget * parent, ModelData & model): + ModelPanel(parent, model) +{ + QGridLayout * gridLayout = new QGridLayout(this); + + int col = 1; + if (GetEepromInterface()->getCapability(ChannelsName)) + addLabel(gridLayout, tr("Name"), col++); + addLabel(gridLayout, tr("Offset"), col++); + addLabel(gridLayout, tr("Min"), col++); + addLabel(gridLayout, tr("Max"), col++); + addLabel(gridLayout, tr("Invert"), col++); + if (GetEepromInterface()->getCapability(PPMCenter)) + addLabel(gridLayout, tr("Center"), col++); + if (GetEepromInterface()->getCapability(SYMLimits)) + addLabel(gridLayout, tr("Sym"), col++); + + for (int i=0; igetCapability(Outputs); i++) { + col = 0; + + // Channel label + QLabel *label = new QLabel(this); + label->setText(tr("Channel %1").arg(i+1)); + gridLayout->addWidget(label, i+1, col++, 1, 1); + + // Channel name + int nameLen = GetEepromInterface()->getCapability(ChannelsName); + if (nameLen > 0) { + QLineEdit * name = new QLineEdit(this); + name->setProperty("index", i); + name->setMaxLength(nameLen); + QRegExp rx(CHAR_FOR_NAMES_REGEX); + name->setValidator(new QRegExpValidator(rx, this)); + name->setText(model.limitData[i].name); + connect(name, SIGNAL(editingFinished()), this, SLOT(nameEdited())); + gridLayout->addWidget(name, i+1, col++, 1, 1); + } + + // Channel offset + QDoubleSpinBox * offset = new QDoubleSpinBox(this); + offset->setProperty("index", i); + offset->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter); + offset->setAccelerated(true); + offset->setDecimals(1); + offset->setMinimum(-100); + offset->setSingleStep(0.1); + offset->setValue(float(model.limitData[i].offset) / 10); + connect(offset, SIGNAL(editingFinished()), this, SLOT(offsetEdited())); + gridLayout->addWidget(offset, i+1, col++, 1, 1); + + // Channel min + QSpinBox * minSB = new QSpinBox(this); + minSB->setProperty("index", i); + minSB->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter); + minSB->setAccelerated(true); + minSB->setMinimum(model.extendedLimits ? -125 : -100); + minSB->setMaximum(0); + minSB->setValue(model.limitData[i].min); + connect(minSB, SIGNAL(editingFinished()), this, SLOT(minEdited())); + gridLayout->addWidget(minSB, i+1, col++, 1, 1); + + // Channel max + QSpinBox * maxSB = new QSpinBox(this); + maxSB->setProperty("index", i); + maxSB->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter); + maxSB->setAccelerated(true); + maxSB->setMinimum(0); + maxSB->setMaximum(model.extendedLimits ? 125 : 100); + maxSB->setValue(model.limitData[i].max); + connect(maxSB, SIGNAL(editingFinished()), this, SLOT(maxEdited())); + gridLayout->addWidget(maxSB, i+1, col++, 1, 1); + + // Channel inversion + QComboBox * invCB = new QComboBox(this); + invCB->insertItems(0, QStringList() << tr("---") << tr("INV")); + invCB->setProperty("index", i); + invCB->setCurrentIndex((model.limitData[i].revert) ? 1 : 0); + connect(invCB, SIGNAL(currentIndexChanged(int)), this, SLOT(invEdited())); + gridLayout->addWidget(invCB, i+1, col++, 1, 1); + + // PPM center + if (GetEepromInterface()->getCapability(PPMCenter)) { + QSpinBox * center = new QSpinBox(this); + center->setProperty("index", i); + center->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter); + center->setMinimum(1375); + center->setMaximum(1625); + center->setValue(1500); + center->setValue(model.limitData[i].ppmCenter + 1500); + connect(center, SIGNAL(editingFinished()), this, SLOT(ppmcenterEdited())); + gridLayout->addWidget(center, i+1, col++, 1, 1); + } + + // Symetrical limits + if (GetEepromInterface()->getCapability(SYMLimits)) { + QCheckBox * symlimits = new QCheckBox(this); + symlimits->setProperty("index", i); + symlimits->setChecked(model.limitData[i].symetrical); + connect(symlimits, SIGNAL(toggled(bool)), this, SLOT(symlimitsEdited())); + gridLayout->addWidget(symlimits, i+1, col++, 1, 1); + } + } + + // setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + // setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded); +} + +Channels::~Channels() +{ +} + +void Channels::symlimitsEdited() +{ + QCheckBox * ckb = qobject_cast(sender()); + int index = ckb->property("index").toInt(); + model.limitData[index].symetrical = (ckb->checkState() ? 1 : 0); + emit modified(); +} + +void Channels::nameEdited() +{ + if (!lock) { + lock = true; + QLineEdit *le = qobject_cast(sender()); + int index = le->property("index").toInt(); + strcpy(model.limitData[index].name, le->text().toAscii()); + lock = false; + emit modified(); + } +} + +void Channels::offsetEdited() +{ + QDoubleSpinBox *dsb = qobject_cast(sender()); + int index = dsb->property("index").toInt(); + model.limitData[index].offset = round(dsb->value()*10); + emit modified(); +} + +void Channels::minEdited() +{ + QSpinBox *sb = qobject_cast(sender()); + int index = sb->property("index").toInt(); + model.limitData[index].min = sb->value(); + emit modified(); +} + +void Channels::maxEdited() +{ + QSpinBox *sb = qobject_cast(sender()); + int index = sb->property("index").toInt(); + model.limitData[index].max = sb->value(); + emit modified(); +} + +void Channels::invEdited() +{ + QComboBox *cb = qobject_cast(sender()); + int index = cb->property("index").toInt(); + model.limitData[index].revert = cb->currentIndex(); + emit modified(); +} + +void Channels::ppmcenterEdited() +{ + QSpinBox *sb = qobject_cast(sender()); + int index = sb->property("index").toInt(); + model.limitData[index].ppmCenter = sb->value() - 1500; + emit modified(); +} + diff --git a/companion/src/modeledit/channels.h b/companion/src/modeledit/channels.h new file mode 100644 index 000000000..ee372ecd7 --- /dev/null +++ b/companion/src/modeledit/channels.h @@ -0,0 +1,25 @@ +#ifndef CHANNELS_H +#define CHANNELS_H + +#include "modelpanel.h" + +class Channels : public ModelPanel +{ + Q_OBJECT + + public: + Channels(QWidget *parent, ModelData & model); + ~Channels(); + + private slots: + void symlimitsEdited(); + void nameEdited(); + void offsetEdited(); + void minEdited(); + void maxEdited(); + void invEdited(); + void ppmcenterEdited(); + +}; + +#endif // CHANNELS_H diff --git a/companion/src/modeledit/curvedialog.ui b/companion/src/modeledit/curvedialog.ui new file mode 100644 index 000000000..f8ccccba3 --- /dev/null +++ b/companion/src/modeledit/curvedialog.ui @@ -0,0 +1,217 @@ + + + Dialog + + + + 0 + 0 + 400 + 300 + + + + Dialog + + + + + + + + Curve type + + + + + + + + 0 + 0 + + + + -100 + + + 100 + + + + + + + Coefficient + + + + + + + + Both + + + + + x>0 + + + + + x<0 + + + + + + + + Y at X=0 + + + + + + + + 0 + 0 + + + + -100 + + + 100 + + + + + + + + 0 + 0 + + + + -100 + + + 100 + + + + + + + Side + + + + + + + Y at X=-100 + + + + + + + + 0 + 0 + + + + -100 + + + 100 + + + + + + + Y at X=100 + + + + + + + + Linear + + + + + Single Expo + + + + + Symmetrical f(x)=-f(-x) + + + + + Symmetrical f(x)=f(-x) + + + + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + + + + + + buttonBox + accepted() + Dialog + accept() + + + 248 + 254 + + + 157 + 274 + + + + + buttonBox + rejected() + Dialog + reject() + + + 316 + 260 + + + 286 + 274 + + + + + diff --git a/companion/src/modeledit/curves.cpp b/companion/src/modeledit/curves.cpp new file mode 100644 index 000000000..54cf80e93 --- /dev/null +++ b/companion/src/modeledit/curves.cpp @@ -0,0 +1,722 @@ +#include "curves.h" +#include "ui_curves.h" +#include "node.h" +#include "edge.h" +#include +#include +#include +#include + +// TODO Capability CustomCurves to be removed + +#define GFX_MARGIN 16 + +static const QColor colors[C9X_MAX_CURVES] = { + QColor(0,0,127), + QColor(0,127,0), + QColor(127,0,0), + QColor(0,127,127), + QColor(127,0,127), + QColor(127,127,0), + QColor(127,127,127), + QColor(0,0,255), + QColor(0,127,255), + QColor(127,0,255), + QColor(0,255,0), + QColor(0,255,127), + QColor(127,255,0), + QColor(255,0,0), + QColor(255,0,127), + QColor(255,127,0), +}; + +#if 0 +#ifdef __APPLE__ + ui->curveEdit_1->setStyleSheet("color: #00007f;"); + ui->curveEdit_2->setStyleSheet("color: #007f00;"); + ui->curveEdit_3->setStyleSheet("color: #7f0000;"); + ui->curveEdit_4->setStyleSheet("color: #007f7f;"); + ui->curveEdit_5->setStyleSheet("color: #7f007f;"); + ui->curveEdit_6->setStyleSheet("color: #7f7f00;"); + ui->curveEdit_7->setStyleSheet("color: #7f7f7f;"); + ui->curveEdit_8->setStyleSheet("color: #0000ff;"); + ui->curveEdit_9->setStyleSheet("color: #007fff;"); + ui->curveEdit_10->setStyleSheet("color: #7f00ff;"); + ui->curveEdit_11->setStyleSheet("color: #00ff00;"); + ui->curveEdit_12->setStyleSheet("color: #00ff7f;"); + ui->curveEdit_13->setStyleSheet("color: #7fff00;"); + ui->curveEdit_14->setStyleSheet("color: #ff0000;"); + ui->curveEdit_15->setStyleSheet("color: #ff007f;"); + ui->curveEdit_16->setStyleSheet("color: #ff7f00;"); +#else + ui->curveEdit_1->setStyleSheet("background-color: #00007f; color: white;"); + ui->curveEdit_2->setStyleSheet("background-color: #007f00; color: white;"); + ui->curveEdit_3->setStyleSheet("background-color: #7f0000; color: white;"); + ui->curveEdit_4->setStyleSheet("background-color: #007f7f; color: white;"); + ui->curveEdit_5->setStyleSheet("background-color: #7f007f; color: white;"); + ui->curveEdit_6->setStyleSheet("background-color: #7f7f00; color: white;"); + ui->curveEdit_7->setStyleSheet("background-color: #7f7f7f; color: white;"); + ui->curveEdit_8->setStyleSheet("background-color: #0000ff; color: white;"); + ui->curveEdit_9->setStyleSheet("background-color: #007fff; color: white;"); + ui->curveEdit_10->setStyleSheet("background-color: #7f00ff; color: white;"); + ui->curveEdit_11->setStyleSheet("background-color: #00ff00; color: white;"); + ui->curveEdit_12->setStyleSheet("background-color: #00ff7f; color: white;"); + ui->curveEdit_13->setStyleSheet("background-color: #7fff00; color: white;"); + ui->curveEdit_14->setStyleSheet("background-color: #ff0000; color: white;"); + ui->curveEdit_15->setStyleSheet("background-color: #ff007f; color: white;"); + ui->curveEdit_16->setStyleSheet("background-color: #ff7f00; color: white;"); +#endif +#endif + +Curves::Curves(QWidget * parent, ModelData & model): + ModelPanel(parent, model), + ui(new Ui::Curves), + currentCurve(0) +{ + ui->setupUi(this); + + if (!GetEepromInterface()->getCapability(HasCvNames)) { + ui->cname_LE->hide(); + ui->cname_label->hide(); + } + + QGraphicsScene *scene = new QGraphicsScene(ui->curvePreview); + scene->setItemIndexMethod(QGraphicsScene::NoIndex); + ui->curvePreview->setScene(scene); + + QIcon clearIcon; + clearIcon.addFile(":/images/clear.png", QSize(), QIcon::Normal, QIcon::Off); + + for (int i=0; igetCapability(NumCurves); i++) { + visibleCurves[i] = false; + // The reset curve button + QPushButton * reset = new QPushButton(this); + reset->setProperty("index", i); + reset->setMinimumSize(QSize(0, 0)); + reset->setIcon(clearIcon); + reset->setIconSize(QSize(14, 14)); + connect(reset, SIGNAL(clicked()), this, SLOT(resetCurve())); + ui->curvesLayout->addWidget(reset, i, 0, 1, 1); + + // The edit curve button + QPushButton * edit = new QPushButton(this); + edit->setProperty("index", i); + QPalette palette; + palette.setBrush(QPalette::Active, QPalette::Button, QBrush(colors[i])); + palette.setBrush(QPalette::Active, QPalette::ButtonText, QBrush(Qt::white)); + edit->setPalette(palette); + edit->setText(tr("Curve %1").arg(i+1)); + connect(edit, SIGNAL(clicked()), this, SLOT(editCurve())); + ui->curvesLayout->addWidget(edit, i, 1, 1, 1); + + // The curve plot checkbox + QCheckBox * plot = new QCheckBox(this); + plot->setProperty("index", i); + plot->setPalette(palette); + connect(plot, SIGNAL(toggled(bool)), this, SLOT(plotCurve(bool))); + ui->curvesLayout->addWidget(plot, i, 2, 1, 1); + } + + visibleCurves[0] = true; + + for (int i=0; isetProperty("index", i); + spny[i]->setMinimum(-100); + spny[i]->setMaximum(+100); + spny[i]->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter); + spny[i]->setAccelerated(true); + connect(spny[i], SIGNAL(valueChanged(int)), this, SLOT(onPointEdited())); + ui->pointsLayout->addWidget(spny[i], i, 0, 1, 1); + + spnx[i] = new QSpinBox(this); + spnx[i]->setProperty("index", i); + spnx[i]->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter); + spnx[i]->setAccelerated(true); + connect(spnx[i], SIGNAL(valueChanged(int)), this, SLOT(onPointEdited())); + ui->pointsLayout->addWidget(spnx[i], i, 1, 1, 1); + } +} + +Curves::~Curves() +{ + delete ui; +} + +void Curves::editCurve() +{ + QPushButton *button = (QPushButton *)sender(); + int index = button->property("index").toInt(); + setCurrentCurve(index); + update(); +} + +void Curves::resetCurve() +{ + QPushButton *button = (QPushButton *)sender(); + int index = button->property("index").toInt(); + int res = QMessageBox::question(this, "companion9x", tr("Are you sure you want to reset curve %1 ?").arg(index+1), QMessageBox::Yes | QMessageBox::No); + if (res == QMessageBox::Yes) { + model.curves[index].clear(5); + update(); + emit modified(); + } +} + +void Curves::plotCurve(bool checked) +{ + QCheckBox *chk = (QCheckBox *)sender(); + int index = chk->property("index").toInt(); + visibleCurves[index] = checked; + updateCurve(); +} + +void Curves::update() +{ + lock = true; + + if (GetEepromInterface()->getCapability(HasCvNames)) { + ui->cname_LE->setText(model.curves[currentCurve].name); + } + + int count = model.curves[currentCurve].count; + for (int i=0; ishow(); + spny[i]->setValue(model.curves[currentCurve].points[i].y); + if (model.curves[currentCurve].custom) { + spnx[i]->show(); + if (i==0 || i==model.curves[currentCurve].count-1) { + spnx[i]->setDisabled(true); + spnx[i]->setMaximum(+100); + spnx[i]->setMinimum(-100); + } + else { + spnx[i]->setMaximum(model.curves[currentCurve].points[i+1].x); + spnx[i]->setMinimum(model.curves[currentCurve].points[i-1].x); + } + spnx[i]->setValue(model.curves[currentCurve].points[i].x); + } + else { + spnx[i]->hide(); + } + } + for (int i=count; ihide(); + spnx[i]->hide(); + } + + updateCurveType(); + updateCurve(); + + lock = false; +} + +void Curves::setCurrentCurve(int index) +{ + currentCurve = index; +} + +void Curves::updateCurveType() +{ + int index = model.curves[currentCurve].custom; + if (model.curves[currentCurve].count==5) + index += 2; + else if (model.curves[currentCurve].count==9) + index += 4; + else if (model.curves[currentCurve].count==17) + index += 6; + ui->curvetype_CB->setCurrentIndex(index); +} + +void Curves::updateCurve() +{ + Node * nodel = 0; + Node * nodex = 0; + QColor color; + + QGraphicsScene *scene = ui->curvePreview->scene(); + scene->clear(); + + qreal width = scene->sceneRect().width(); + qreal height = scene->sceneRect().height(); + + qreal centerX = scene->sceneRect().left() + width/2; //center X + qreal centerY = scene->sceneRect().top() + height/2; //center Y + + QGraphicsSimpleTextItem *ti = scene->addSimpleText(tr("Editing curve %1").arg(currentCurve+1)); + ti->setPos(3, 3); + + scene->addLine(centerX, GFX_MARGIN, centerX, height+GFX_MARGIN); + scene->addLine(GFX_MARGIN, centerY, width+GFX_MARGIN, centerY); + + QPen pen; + pen.setWidth(2); + pen.setStyle(Qt::SolidLine); + + int numcurves = GetEepromInterface()->getCapability(NumCurves); + for (int k=0; kaddLine(centerX + (qreal)model.curves[k].points[i].x*width/200,centerY - (qreal)model.curves[k].points[i].y*height/200,centerX + (qreal)model.curves[k].points[i+1].x*width/200,centerY - (qreal)model.curves[k].points[i+1].y*height/200,pen); + else + scene->addLine(GFX_MARGIN + i*width/(numpoints-1),centerY - (qreal)model.curves[k].points[i].y*height/200,GFX_MARGIN + (i+1)*width/(numpoints-1),centerY - (qreal)model.curves[k].points[i+1].y*height/200,pen); + } + } + } + + int numpoints = model.curves[currentCurve].count; + for (int i=0; isetProperty("index", i); + nodex->setColor(colors[currentCurve]); + if (model.curves[currentCurve].custom) { + if (i>0 && isetFixedX(false); + nodex->setMinX(model.curves[currentCurve].points[i-1].x); + nodex->setMaxX(model.curves[currentCurve].points[i+1].x); + } + else { + nodex->setFixedX(true); + } + nodex->setPos(centerX + (qreal)model.curves[currentCurve].points[i].x*width/200,centerY - (qreal)model.curves[currentCurve].points[i].y*height/200); + } + else { + nodex->setFixedX(true); + nodex->setPos(GFX_MARGIN + i*width/(numpoints-1), centerY - (qreal)model.curves[currentCurve].points[i].y*height/200); + } + connect(nodex, SIGNAL(moved(int, int)), this, SLOT(onNodeMoved(int, int))); + connect(nodex, SIGNAL(focus()), this, SLOT(onNodeFocus())); + connect(nodex, SIGNAL(unfocus()), this, SLOT(onNodeUnfocus())); + scene->addItem(nodex); + if (i>0) scene->addItem(new Edge(nodel, nodex)); + } +} + +void Curves::onPointEdited() +{ + if (!lock) { + lock = true; + int index = sender()->property("index").toInt(); + model.curves[currentCurve].points[index].x = spnx[index]->value(); + model.curves[currentCurve].points[index].y = spny[index]->value(); + updateCurve(); + emit modified(); + lock = false; + } +} + +void Curves::onNodeMoved(int x, int y) +{ + if (!lock) { + lock = true; + int index = sender()->property("index").toInt(); + model.curves[currentCurve].points[index].x = x; + model.curves[currentCurve].points[index].y = y; + spnx[index]->setValue(x); + spny[index]->setValue(y); + emit modified(); + lock = false; + } +} + +void Curves::onNodeFocus() +{ + int index = sender()->property("index").toInt(); + spny[index]->setFocus(); +} + +void Curves::onNodeUnfocus() +{ + int index = sender()->property("index").toInt(); + spny[index]->clearFocus(); + updateCurve(); +} + +void Curves::on_curvetype_CB_currentIndexChanged(int index) +{ + static const int numpoint[] = {3,3,5,5,9,9,17,17}; + static const bool custom[] = {false,true,false,true,false,true,false,true}; + + if (!lock) { + lock = true; + + int numcurves = GetEepromInterface()->getCapability(NumCurves); + // int currpoints = model.curves[currentCurve].count; + // bool currcustom = model.curves[currentCurve].custom; + + int totalpoints=0; + for (int i=0; igetCapability(NumCurvePoints); + if (fwpoints!=0) { + if (fwpoints < totalpoints) { + QMessageBox::warning(this, "companion9x", tr("Not enough free points in EEPROM to store the curve.")); + updateCurveType(); + lock = false; + return; + } + } + + model.curves[currentCurve].count = numpoint[index]; + model.curves[currentCurve].custom = custom[index]; + + // TODO something better! + for (int i=0; i= model.curves[currentCurve].count-1 ? +100 : -100 + (200*i)/(numpoint[index]-1)); + model.curves[currentCurve].points[i].y = 0; + } + + update(); + emit modified(); + lock = false; + } +} + +void Curves::on_cname_LE_editingFinished() +{ + memset(model.curves[currentCurve].name, 0, sizeof(model.curves[currentCurve].name)); + strcpy(model.curves[currentCurve].name, ui->cname_LE->text().toAscii()); + emit modified(); +} + +void Curves::resizeEvent(QResizeEvent *event) +{ + QRect qr = ui->curvePreview->contentsRect(); + ui->curvePreview->scene()->setSceneRect(GFX_MARGIN, GFX_MARGIN, qr.width()-GFX_MARGIN*2, qr.height()-GFX_MARGIN*2); + updateCurve(); + + ModelPanel::resizeEvent(event); +} + +#if 0 +void ModelEdit::on_ca_ctype_CB_currentIndexChanged() +{ + int index=ui->ca_ctype_CB->currentIndex(); + switch (index) { + case 0: + ui->ca_coeff_SB->hide(); + ui->ca_coeff_label->hide(); + ui->ca_ymid_SB->hide(); + ui->ca_ymid_label->hide(); + ui->ca_ymin_SB->show(); + ui->ca_ymin_label->show(); + ui->ca_ymin_SB->setValue(-100); + ui->ca_ymax_SB->setValue(100); + break; + case 1: + ui->ca_coeff_SB->show(); + ui->ca_coeff_label->show(); + ui->ca_ymid_SB->hide(); + ui->ca_ymid_label->hide(); + ui->ca_ymin_SB->show(); + ui->ca_ymin_label->show(); + ui->ca_ymin_SB->setValue(-100); + ui->ca_ymax_SB->setValue(100); + break; + case 2: + ui->ca_coeff_SB->show(); + ui->ca_coeff_label->show(); + ui->ca_ymid_SB->hide(); + ui->ca_ymid_label->hide(); + ui->ca_ymin_SB->hide(); + ui->ca_ymin_label->hide(); + ui->ca_ymax_SB->setValue(100); + break; + case 3: + ui->ca_coeff_SB->show(); + ui->ca_coeff_label->show(); + ui->ca_ymid_SB->show(); + ui->ca_ymid_label->show(); + ui->ca_ymin_SB->hide(); + ui->ca_ymin_label->hide(); + ui->ca_ymid_SB->setValue(0); + ui->ca_ymax_SB->setValue(100); + break; + } +} + +void ModelEdit::on_ca_apply_PB_clicked() +{ + int index=ui->ca_ctype_CB->currentIndex(); + float x; + int y; + int invert=0; + float a; + if (index==0) { + a=(ui->ca_ymax_SB->value()-ui->ca_ymin_SB->value())/200.0; + int numpoints=model.curves[currentCurve].count; + for (int i=0; ica_ymin_SB->value()+a*x; + switch (ui->ca_side_CB->currentIndex()) { + case 0: + model.curves[currentCurve].points[i].y=y; + break; + case 1: + if (x>=100) { + model.curves[currentCurve].points[i].y=y; + } + break; + case 2: + if (x<100) { + model.curves[currentCurve].points[i].y=y; + } + break; + } + } + } else if (index==1) { + int numpoints=model.curves[currentCurve].count; + for (int i=0; ica_coeff_SB->value(); + if (a>=0) { + y=round(c9xexpou(x,a)*(ui->ca_ymax_SB->value()-ui->ca_ymin_SB->value())/100.0+ui->ca_ymin_SB->value()); + } else { + a=-a; + x=100-x; + y=round((100.0-c9xexpou(x,a))*(ui->ca_ymax_SB->value()-ui->ca_ymin_SB->value())/100.0+ui->ca_ymin_SB->value()); + } + switch (ui->ca_side_CB->currentIndex()) { + case 0: + model.curves[currentCurve].points[i].y=y; + break; + case 1: + if (x>=50) { + model.curves[currentCurve].points[i].y=y; + } + break; + case 2: + if (x<50) { + model.curves[currentCurve].points[i].y=y; + } + break; + } + } + } else if (index==2) { + int numpoints=model.curves[currentCurve].count; + for (int i=0; ica_coeff_SB->value(); + if (x<0) { + x=-x; + invert=1; + } else { + invert=0; + } + if (a>=0) { + y=round(c9xexpou(x,a)*(ui->ca_ymax_SB->value()/100.0)); + } else { + a=-a; + x=100-x; + y=round((100.0-c9xexpou(x,a))*(ui->ca_ymax_SB->value()/100.0)); + } + switch (ui->ca_side_CB->currentIndex()) { + case 0: + if (invert==1) { + model.curves[currentCurve].points[i].y=-y; + } else { + model.curves[currentCurve].points[i].y=y; + } + break; + case 1: + if (invert==0) { + model.curves[currentCurve].points[i].y=y; + } + break; + case 2: + if (invert==1) { + model.curves[currentCurve].points[i].y=-y; + } + break; + } + } + } else if (index==3) { + int numpoints=model.curves[currentCurve].count; + for (int i=0; i=0); + a=ui->ca_coeff_SB->value(); + if (x<0) { + x=-x; + } + if (a>=0) { + y=round(c9xexpou(x,a)*((ui->ca_ymax_SB->value()-ui->ca_ymid_SB->value())/100.0)+ui->ca_ymid_SB->value()); + } else { + a=-a; + x=100-x; + y=round((100.0-c9xexpou(x,a))*((ui->ca_ymax_SB->value()-ui->ca_ymid_SB->value())/100.0)+ui->ca_ymid_SB->value()); + } + switch (ui->ca_side_CB->currentIndex()) { + case 0: + model.curves[currentCurve].points[i].y=y; + break; + case 1: + if (pos) { + model.curves[currentCurve].points[i].y=y; + } + break; + case 2: + if (!pos) { + model.curves[currentCurve].points[i].y=y; + } + break; + } + } + } + updateSettings(); + setCurrentCurve(currentCurve); + drawCurve(); +} + +void ModelEdit::clearCurves(bool ask) +{ + if(ask) { + int res = QMessageBox::question(this,tr("Clear Curves?"),tr("Really clear all the curves?"),QMessageBox::Yes | QMessageBox::No); + if(res!=QMessageBox::Yes) return; + } + curvesLock=true; + if (!GetEepromInterface()->getCapability(CustomCurves)){ + ui->curvetype_CB->setDisabled(true); + int count=0; + for (int j=0; j< GetEepromInterface()->getCapability(NumCurves3); j++) { + model.curves[count].count=3; + model.curves[count].custom=false; + memset(model.curves[j].name,0,sizeof(model.curves[j].name)); + for (int i=0; i<17; i++) { + model.curves[count].points[i].x=0; + model.curves[count].points[i].y=0; + } + count++; + } + for (int j=0; j< GetEepromInterface()->getCapability(NumCurves5); j++) { + model.curves[count].count=5; + model.curves[count].custom=false; + memset(model.curves[j].name,0,sizeof(model.curves[j].name)); + for (int i=0; i<17; i++) { + model.curves[count].points[i].x=0; + model.curves[count].points[i].y=0; + } + count++; + } + for (int j=0; j< GetEepromInterface()->getCapability(NumCurves9); j++) { + model.curves[count].count=9; + model.curves[count].custom=false; + memset(model.curves[j].name,0,sizeof(model.curves[j].name)); + for (int i=0; i<17; i++) { + model.curves[count].points[i].x=0; + model.curves[count].points[i].y=0; + } + count++; + } + for (int j=count; j<16; j++) { + model.curves[j].count=5; + model.curves[j].custom=false; + memset(model.curves[j].name,0,sizeof(model.curves[j].name)); + for (int i=0; i<17; i++) { + model.curves[j].points[i].x=0; + model.curves[j].points[i].y=0; + } + } + } else { + for (int j=0; j<16; j++) { + model.curves[j].count=5; + model.curves[j].custom=false; + memset(model.curves[j].name,0,sizeof(model.curves[j].name)); + for (int i=0; i<17; i++) { + model.curves[j].points[i].x=0; + model.curves[j].points[i].y=0; + } + } + } + for (int i=0; i<17; i++) { + spnx[i]->setMinimum(-100); + spnx[i]->setMaximum(100); + spnx[i]->setValue(0); + spny[i]->setValue(0); + } + currentCurve=0; + curvesLock=false; + if (GetEepromInterface()->getCapability(NumCurves3)>0) { + ui->curvetype_CB->setCurrentIndex(0); + } else { + ui->curvetype_CB->setCurrentIndex(2); + } + ui->cname_LE->clear(); + updateSettings(); + drawCurve(); +} + +void ModelEdit::setCurve(uint8_t c, int8_t ar[]) +{ + int len=sizeof(ar)/sizeof(int8_t); + if (GetEepromInterface()->getCapability(CustomCurves)) { + if (GetEepromInterface()->getCapability(NumCurves)>c) { + if (len<9) { + model.curves[c].count=5; + model.curves[c].custom=false; + for (int i=0; i< 5; i++) { + model.curves[c].points[i].y=ar[i]; + } + } else { + model.curves[c].count=5; + model.curves[c].custom=false; + for (int i=0; i< 5; i++) { + model.curves[c].points[i].y=ar[i]; + } + } + } + } else { + if (len<9) { + model.curves[c].count=5; + model.curves[c].custom=false; + for (int i=0; i< 5; i++) { + model.curves[c].points[i].y=ar[i]; + } + } else { + model.curves[c+8].count=5; + model.curves[c+8].custom=false; + for (int i=0; i< 5; i++) { + model.curves[c+8].points[i].y=ar[i]; + } + } + } +} + +void ModelEdit::ControlCurveSignal(bool flag) +{ + foreach(QSpinBox *sb, findChildren(QRegExp("curvePt[0-9]+"))) { + sb->blockSignals(flag); + } +} +#endif diff --git a/companion/src/modeledit/curves.h b/companion/src/modeledit/curves.h new file mode 100644 index 000000000..a1086dde0 --- /dev/null +++ b/companion/src/modeledit/curves.h @@ -0,0 +1,47 @@ +#ifndef CURVES_H +#define CURVES_H + +#include "modelpanel.h" +#include + +namespace Ui { + class Curves; +} + +class Curves : public ModelPanel +{ + Q_OBJECT + + public: + Curves(QWidget *parent, ModelData & model); + virtual ~Curves(); + + virtual void update(); + + private slots: + void resetCurve(); + void editCurve(); + void plotCurve(bool checked); + void on_cname_LE_editingFinished(); + void on_curvetype_CB_currentIndexChanged(int index); + void onPointEdited(); + void onNodeMoved(int x, int y); + void onNodeFocus(); + void onNodeUnfocus(); + + protected: + virtual void resizeEvent(QResizeEvent *event); + + private: + Ui::Curves *ui; + int currentCurve; + bool visibleCurves[C9X_MAX_CURVES]; + QSpinBox * spnx[C9X_MAX_POINTS]; + QSpinBox * spny[C9X_MAX_POINTS]; + void setCurrentCurve(int index); + void updateCurve(); + void updateCurveType(); + +}; + +#endif // CURVES_H diff --git a/companion/src/modeledit/curves.ui b/companion/src/modeledit/curves.ui new file mode 100644 index 000000000..17ad1d39a --- /dev/null +++ b/companion/src/modeledit/curves.ui @@ -0,0 +1,167 @@ + + + Curves + + + + 0 + 0 + 638 + 587 + + + + Form + + + + + + + + + + + + + Curve type + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 3 points + + + + + 3 points custom + + + + + 5 points + + + + + 5 points custom + + + + + 9 points + + + + + 9 points custom + + + + + 17 points + + + + + 17 points custom + + + + + + + + Curve name + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + 6 + + + + + + + + 0 + 0 + + + + + 400 + 400 + + + + Qt::AlignCenter + + + + + + + + + 0 + + + 2 + + + 0 + + + 0 + + + + + + + Qt::Vertical + + + QSizePolicy::MinimumExpanding + + + + 20 + 0 + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + diff --git a/companion/src/modeledit/customfunctions.cpp b/companion/src/modeledit/customfunctions.cpp new file mode 100644 index 000000000..26333d6b6 --- /dev/null +++ b/companion/src/modeledit/customfunctions.cpp @@ -0,0 +1,473 @@ +#include "customfunctions.h" +#include +#include +#include +#include +#include +#include +#include "helpers.h" + +CustomFunctionsPanel::CustomFunctionsPanel(QWidget * parent, ModelData & model, GeneralSettings & generalSettings): + ModelPanel(parent, model), + generalSettings(generalSettings), + phononLock(false) +{ + QGridLayout * gridLayout = new QGridLayout(this); + + int col = 1; + addLabel(gridLayout, tr("Switch"), col++); + addLabel(gridLayout, tr("Function"), col++); + addLabel(gridLayout, tr("Parameters"), col++); + addLabel(gridLayout, tr("Enable"), col++); + + lock = true; + int num_fsw = GetEepromInterface()->getCapability(CustomFunctions); + + QStringList paramarmList; + if (!GetEepromInterface()->getCapability(VoicesAsNumbers)) { + for (int i=0; igetCapability(VoicesMaxLength)+4; + if (qd.exists()) { + QStringList filters; + filters << "*.wav" << "*.WAV"; + foreach ( QString file, qd.entryList(filters, QDir::Files) ) { + QFileInfo fi(file); + QString temp=fi.completeBaseName(); + if (!paramarmList.contains(temp) && temp.length()<=vml) { + paramarmList.append(temp); + } + } + } + } + + for (int i=0; isetContextMenuPolicy(Qt::CustomContextMenu); + label->setMouseTracking(true); + label->setProperty("index", i); + label->setText(tr("CF%1").arg(i+1)); + gridLayout->addWidget(label, i+1, 0); + connect(label, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(fsw_customContextMenuRequested(QPoint))); + + // The switch + fswtchSwtch[i] = new QComboBox(this); + fswtchSwtch[i]->setProperty("index", i); + connect(fswtchSwtch[i], SIGNAL(currentIndexChanged(int)), this, SLOT(customFunctionEdited())); + gridLayout->addWidget(fswtchSwtch[i], i+1, 1); + populateSwitchCB(fswtchSwtch[i], model.funcSw[i].swtch, POPULATE_MSWITCHES|POPULATE_ONOFF); + + // The function + fswtchFunc[i] = new QComboBox(this); + fswtchFunc[i]->setProperty("index", i); + connect(fswtchFunc[i], SIGNAL(currentIndexChanged(int)), this, SLOT(customFunctionEdited())); + gridLayout->addWidget(fswtchFunc[i], i+1, 2); + populateFuncCB(fswtchFunc[i], model.funcSw[i].func); + + QHBoxLayout *paramLayout = new QHBoxLayout(); + gridLayout->addLayout(paramLayout, i+1, 3); + + fswtchGVmode[i] = new QComboBox(this); + fswtchGVmode[i]->setProperty("index", i); + connect(fswtchGVmode[i], SIGNAL(currentIndexChanged(int)), this, SLOT(customFunctionEdited())); + paramLayout->addWidget(fswtchGVmode[i]); + populateGVmodeCB(fswtchGVmode[i], model.funcSw[i].adjustMode); + + fswtchParamGV[i] = new QCheckBox(this); + fswtchParamGV[i]->setProperty("index", i); + fswtchParamGV[i]->setText("GV"); + fswtchParamGV[i]->setSizePolicy(QSizePolicy::Minimum,QSizePolicy::Minimum); + connect(fswtchParamGV[i], SIGNAL(stateChanged(int)), this, SLOT(customFunctionEdited())); + paramLayout->addWidget(fswtchParamGV[i]); + + fswtchParam[i] = new QDoubleSpinBox(this); + fswtchParam[i]->setProperty("index", i); + fswtchParam[i]->setAccelerated(true); + fswtchParam[i]->setDecimals(0); + connect(fswtchParam[i], SIGNAL(editingFinished()), this, SLOT(customFunctionEdited())); + paramLayout->addWidget(fswtchParam[i]); + + fswtchParamT[i] = new QComboBox(this); + fswtchParamT[i]->setProperty("index", i); + paramLayout->addWidget(fswtchParamT[i]); + populateFuncParamCB(fswtchParamT[i], func, model.funcSw[i].param, model.funcSw[i].adjustMode); + connect(fswtchParamT[i], SIGNAL(currentIndexChanged(int)), this, SLOT(customFunctionEdited())); + + fswtchParamArmT[i] = new QComboBox(this); + fswtchParamArmT[i]->setProperty("index", i); + populateFuncParamArmTCB(fswtchParamArmT[i],&model, model.funcSw[i].paramarm, paramarmList); + fswtchParamArmT[i]->setEditable(true); + paramLayout->addWidget(fswtchParamArmT[i]); + + connect(fswtchParamArmT[i], SIGNAL(currentIndexChanged(int)), this, SLOT(customFunctionEdited())); + connect(fswtchParamArmT[i], SIGNAL(editTextChanged ( const QString)), this, SLOT(customFunctionEdited())); + +#ifdef PHONON + playBT[i] = new QPushButton(this); + playBT[i]->setObjectName(QString("play_%1").arg(i)); + playBT[i]->setIcon(QIcon(":/images/play.png")); + paramLayout->addWidget(playBT[i]); + connect(playBT[i], SIGNAL(pressed()), this, SLOT(playMusic())); +#endif + + QHBoxLayout *repeatLayout = new QHBoxLayout(); + gridLayout->addLayout(repeatLayout, i+1, 4); + + fswtchRepeat[i] = new QComboBox(this); + fswtchRepeat[i]->setProperty("index", i); + connect(fswtchRepeat[i], SIGNAL(currentIndexChanged(int)), this, SLOT(customFunctionEdited())); + repeatLayout->addWidget(fswtchRepeat[i], i+1); + populateRepeatCB(fswtchRepeat[i], model.funcSw[i].repeatParam); + + fswtchEnable[i] = new QCheckBox(this); + fswtchEnable[i]->setProperty("index", i); + fswtchEnable[i]->setText(tr("ON")); + repeatLayout->addWidget(fswtchEnable[i], i+1); + fswtchEnable[i]->setChecked(model.funcSw[i].enabled); + connect(fswtchEnable[i], SIGNAL(stateChanged(int)), this, SLOT(customFunctionEdited())); + } + + lock = false; +} + +CustomFunctionsPanel::~CustomFunctionsPanel() +{ +} + +#ifdef PHONON + +void CustomFunctionsPanel::mediaPlayer_state(Phonon::State newState, Phonon::State oldState) +{ + if (phononLock) + return; + phononLock=true; + if ((newState==Phonon::StoppedState || newState==Phonon::PausedState) && oldState==Phonon::PlayingState) { + clickObject->stop(); + clickObject->clearQueue(); + clickObject->clear(); + for (int i=0; igetCapability(CustomFunctions); i++) { + playBT[i]->setObjectName(QString("play_%1").arg(i)); + playBT[i]->setIcon(QIcon(":/images/play.png")); + } + } + if (newState==Phonon::ErrorState) { + clickObject->stop(); + clickObject->clearQueue(); + clickObject->clear(); + for (int i=0; igetCapability(CustomFunctions); i++) { + playBT[i]->setObjectName(QString("play_%1").arg(i)); + playBT[i]->setIcon(QIcon(":/images/play.png")); + } + } + + phononLock=false; +} +#endif + +void CustomFunctionsPanel::playMusic() +{ + QPushButton *playButton = qobject_cast(sender()); + int index=playButton->objectName().mid(5,2).toInt(); + QString function=playButton->objectName().left(4); + QSettings settings("companion9x", "companion9x"); + QString path=settings.value("sdPath", ".").toString(); + QDir qd(path); + QString track; + if (qd.exists()) { + if (GetEepromInterface()->getCapability(VoicesAsNumbers)) { + track=path+QString("/%1.wav").arg(int(fswtchParam[index]->value()),4,10,(const QChar)'0'); + } else { + path.append("/SOUNDS/"); + QString lang = generalSettings.ttsLanguage; + if (lang.isEmpty()) + lang="en"; + path.append(lang); + if (fswtchParamArmT[index]->currentText()!="----") { + track=path+"/"+fswtchParamArmT[index]->currentText()+".wav"; + } + } + QFile file(track); + if (!file.exists()) { + QMessageBox::critical(this, tr("Error"), tr("Unable to find sound file %1!").arg(track)); + track.clear(); + } +#ifdef PHONON + if (function=="play" && !track.isEmpty()) { + clickObject->clear(); + clickObject->setCurrentSource(Phonon::MediaSource(track)); + clickObject->play(); + playBT[index]->setObjectName(QString("stop_%1").arg(index)); + playBT[index]->setIcon(QIcon(":/images/stop.png")); + } else { + clickObject->stop(); + clickObject->clear(); + playBT[index]->setObjectName(QString("play_%1").arg(index)); + playBT[index]->setIcon(QIcon(":/images/play.png")); + } +#endif + } +} + +#define CUSTOM_FUNCTION_NUMERIC_PARAM (1<<0) +#define CUSTOM_FUNCTION_SOURCE_PARAM (1<<1) +#define CUSTOM_FUNCTION_FILE_PARAM (1<<2) +#define CUSTOM_FUNCTION_GV_MODE (1<<3) +#define CUSTOM_FUNCTION_GV_TOOGLE (1<<4) +#define CUSTOM_FUNCTION_ENABLE (1<<5) +#define CUSTOM_FUNCTION_REPEAT (1<<6) +#define CUSTOM_FUNCTION_PLAY (1<<7) + +void CustomFunctionsPanel::customFunctionEdited() +{ + if (!lock) { + lock = true; + + int index = sender()->property("index").toInt(); + refreshCustomFunction(index, true); + + emit modified(); + lock = false; + } +} + +void CustomFunctionsPanel::refreshCustomFunction(int i, bool modified) +{ + unsigned int widgetsMask = 0; + if (modified) { + model.funcSw[i].swtch = RawSwitch(fswtchSwtch[i]->itemData(fswtchSwtch[i]->currentIndex()).toInt()); + model.funcSw[i].func = (AssignFunc)fswtchFunc[i]->currentIndex(); + model.funcSw[i].enabled =fswtchEnable[i]->isChecked(); + model.funcSw[i].repeatParam = (AssignFunc)fswtchRepeat[i]->currentIndex(); + model.funcSw[i].adjustMode = (AssignFunc)fswtchGVmode[i]->currentIndex(); + } + + int index = fswtchFunc[i]->currentIndex(); + + if (index>=FuncSafetyCh1 && index<=FuncSafetyCh16) { + fswtchParam[i]->setDecimals(0); + fswtchParam[i]->setSingleStep(1); + fswtchParam[i]->setMinimum(-125); + fswtchParam[i]->setMaximum(125); + if (modified) { + model.funcSw[i].param = fswtchParam[i]->value(); + } + fswtchParam[i]->setValue(model.funcSw[i].param); + widgetsMask |= CUSTOM_FUNCTION_NUMERIC_PARAM + CUSTOM_FUNCTION_ENABLE; + } else if (index==FuncLogs) { + fswtchParam[i]->setDecimals(1); + fswtchParam[i]->setMinimum(0); + fswtchParam[i]->setMaximum(25.5); + fswtchParam[i]->setSingleStep(0.1); + if (modified) model.funcSw[i].param = fswtchParam[i]->value()*10.0; + fswtchParam[i]->setValue(model.funcSw[i].param/10.0); + widgetsMask |= CUSTOM_FUNCTION_NUMERIC_PARAM + CUSTOM_FUNCTION_ENABLE; + } else if (index>=FuncAdjustGV1 && index<=FuncAdjustGV5) { + if (modified) model.funcSw[i].adjustMode = fswtchGVmode[i]->currentIndex(); + widgetsMask |= CUSTOM_FUNCTION_GV_MODE + CUSTOM_FUNCTION_ENABLE; + if (model.funcSw[i].adjustMode==0) { + if (modified) model.funcSw[i].param = fswtchParam[i]->value(); + fswtchParam[i]->setDecimals(0); + fswtchParam[i]->setSingleStep(1); + fswtchParam[i]->setMinimum(-125); + fswtchParam[i]->setMaximum(125); + fswtchParam[i]->setValue(model.funcSw[i].param); + widgetsMask |= CUSTOM_FUNCTION_NUMERIC_PARAM; + } else { + if (modified) model.funcSw[i].param = fswtchParamT[i]->itemData(fswtchParamT[i]->currentIndex()).toInt(); + populateFuncParamCB(fswtchParamT[i], index, model.funcSw[i].param, model.funcSw[i].adjustMode); + widgetsMask |= CUSTOM_FUNCTION_SOURCE_PARAM; + } + } else if (index==FuncReset) { + if (modified) model.funcSw[i].param = (uint8_t)fswtchParamT[i]->currentIndex(); + populateFuncParamCB(fswtchParamT[i], index, model.funcSw[i].param); + widgetsMask |= CUSTOM_FUNCTION_SOURCE_PARAM; + } else if (index==FuncVolume) { + if (modified) model.funcSw[i].param = fswtchParamT[i]->itemData(fswtchParamT[i]->currentIndex()).toInt(); + populateFuncParamCB(fswtchParamT[i], index, model.funcSw[i].param); + widgetsMask |= CUSTOM_FUNCTION_SOURCE_PARAM + CUSTOM_FUNCTION_ENABLE; + } else if (index==FuncPlaySound || index==FuncPlayHaptic || index==FuncPlayValue || index==FuncPlayPrompt || index==FuncPlayBoth || index==FuncBackgroundMusic) { + if (modified) model.funcSw[i].repeatParam = fswtchRepeat[i]->itemData(fswtchRepeat[i]->currentIndex()).toInt(); + if (index != FuncBackgroundMusic) { + if (GetEepromInterface()->getCapability(HasFuncRepeat)) { + widgetsMask |= CUSTOM_FUNCTION_REPEAT; + } + } + if (index==FuncPlayValue) { + if (modified) model.funcSw[i].param = fswtchParamT[i]->itemData(fswtchParamT[i]->currentIndex()).toInt(); + populateFuncParamCB(fswtchParamT[i], index, model.funcSw[i].param); + widgetsMask |= CUSTOM_FUNCTION_SOURCE_PARAM + CUSTOM_FUNCTION_REPEAT; + } else if (index==FuncPlayPrompt || index==FuncPlayBoth) { + if (GetEepromInterface()->getCapability(VoicesAsNumbers)) { + fswtchParam[i]->setDecimals(0); + fswtchParam[i]->setSingleStep(1); + fswtchParam[i]->setMinimum(0); + if (index==FuncPlayPrompt) { + widgetsMask |= CUSTOM_FUNCTION_NUMERIC_PARAM + CUSTOM_FUNCTION_REPEAT + CUSTOM_FUNCTION_GV_TOOGLE; + } else { + widgetsMask |= CUSTOM_FUNCTION_NUMERIC_PARAM + CUSTOM_FUNCTION_REPEAT; + fswtchParamGV[i]->setChecked(false); + } + fswtchParam[i]->setMaximum(index==FuncPlayBoth ? 254 : 255); + if (modified) { + if (fswtchParamGV[i]->isChecked()) { + fswtchParam[i]->setMinimum(1); + model.funcSw[i].param = std::min(fswtchParam[i]->value(),5.0)+(fswtchParamGV[i]->isChecked() ? 250 : 0); + } else { + model.funcSw[i].param = fswtchParam[i]->value(); + } + } + if (model.funcSw[i].param>250 && (index!=FuncPlayBoth)) { + fswtchParamGV[i]->setChecked(true); + fswtchParam[i]->setValue(model.funcSw[i].param-250); + fswtchParam[i]->setMaximum(5); + } else { + fswtchParamGV[i]->setChecked(false); + fswtchParam[i]->setValue(model.funcSw[i].param); + } + if (model.funcSw[i].param < 251) + widgetsMask |= CUSTOM_FUNCTION_PLAY; + } else { + widgetsMask |= CUSTOM_FUNCTION_FILE_PARAM; + if (modified) { + memset(model.funcSw[i].paramarm, 0, sizeof(model.funcSw[i].paramarm)); + int vml=GetEepromInterface()->getCapability(VoicesMaxLength); + if (fswtchParamArmT[i]->currentText() != "----") { + widgetsMask |= CUSTOM_FUNCTION_PLAY; + for (int j=0; jcurrentText().length(),vml); j++) { + model.funcSw[i].paramarm[j] = fswtchParamArmT[i]->currentText().toAscii().at(j); + } + } + } + } + } else if (index==FuncBackgroundMusic) { + widgetsMask |= CUSTOM_FUNCTION_FILE_PARAM; + if (modified) { + memset(model.funcSw[i].paramarm, 0, sizeof(model.funcSw[i].paramarm)); + int vml=GetEepromInterface()->getCapability(VoicesMaxLength); + if (fswtchParamArmT[i]->currentText() != "----") { + widgetsMask |= CUSTOM_FUNCTION_PLAY; + for (int j=0; jcurrentText().length(),vml); j++) { + model.funcSw[i].paramarm[j] = fswtchParamArmT[i]->currentText().toAscii().at(j); + } + } + } + } else if (index==FuncPlaySound) { + if (modified) model.funcSw[i].param = (uint8_t)fswtchParamT[i]->currentIndex(); + populateFuncParamCB(fswtchParamT[i], index, model.funcSw[i].param); + widgetsMask |= CUSTOM_FUNCTION_SOURCE_PARAM; + } else if (index==FuncPlayHaptic) { + if (modified) model.funcSw[i].param = (uint8_t)fswtchParamT[i]->currentIndex(); + populateFuncParamCB(fswtchParamT[i], index, model.funcSw[i].param); + widgetsMask |= CUSTOM_FUNCTION_SOURCE_PARAM; + } + } else if (model.funcSw[i].swtch.type!=SWITCH_TYPE_NONE) { + if (modified) model.funcSw[i].param = fswtchParam[i]->value(); + fswtchParam[i]->setDecimals(0); + fswtchParam[i]->setSingleStep(1); + fswtchParam[i]->setValue(model.funcSw[i].param); + if (index<=FuncInstantTrim) { + widgetsMask |= CUSTOM_FUNCTION_ENABLE; + } + } + + fswtchParam[i]->setVisible(widgetsMask & CUSTOM_FUNCTION_NUMERIC_PARAM); + fswtchParamGV[i]->setVisible(widgetsMask & CUSTOM_FUNCTION_GV_TOOGLE); + fswtchParamT[i]->setVisible(widgetsMask & CUSTOM_FUNCTION_SOURCE_PARAM); + fswtchParamArmT[i]->setVisible(widgetsMask & CUSTOM_FUNCTION_FILE_PARAM); + fswtchEnable[i]->setVisible(widgetsMask & CUSTOM_FUNCTION_ENABLE); + if (!(widgetsMask & CUSTOM_FUNCTION_ENABLE)) fswtchEnable[i]->setChecked(false); + fswtchRepeat[i]->setVisible(widgetsMask & CUSTOM_FUNCTION_REPEAT); + fswtchGVmode[i]->setVisible(widgetsMask & CUSTOM_FUNCTION_GV_MODE); +#ifdef PHONON + playBT[i]->setVisible(widgetsMask & CUSTOM_FUNCTION_PLAY); +#endif +} + +void CustomFunctionsPanel::update() +{ + for (int i=0; igetCapability(CustomFunctions); i++) { + refreshCustomFunction(i); + } +} + +void CustomFunctionsPanel::fswPaste() +{ + const QClipboard *clipboard = QApplication::clipboard(); + const QMimeData *mimeData = clipboard->mimeData(); + if (mimeData->hasFormat("application/x-companion9x-fsw")) { + QByteArray fswData = mimeData->data("application/x-companion9x-fsw"); + + FuncSwData *fsw = &model.funcSw[selectedFunction]; + memcpy(fsw, fswData.mid(0, sizeof(FuncSwData)).constData(), sizeof(FuncSwData)); + // TODO update switch and func + populateSwitchCB(fswtchSwtch[selectedFunction], model.funcSw[selectedFunction].swtch, POPULATE_MSWITCHES|POPULATE_ONOFF); + populateFuncCB(fswtchFunc[selectedFunction], model.funcSw[selectedFunction].func); + refreshCustomFunction(selectedFunction); + emit modified(); + } +} + +void CustomFunctionsPanel::fswDelete() +{ + model.funcSw[selectedFunction].clear(); + // TODO update switch and func + populateSwitchCB(fswtchSwtch[selectedFunction], model.funcSw[selectedFunction].swtch, POPULATE_MSWITCHES|POPULATE_ONOFF); + populateFuncCB(fswtchFunc[selectedFunction], model.funcSw[selectedFunction].func); + refreshCustomFunction(selectedFunction); + emit modified(); +} + +void CustomFunctionsPanel::fswCopy() +{ + QByteArray fswData; + fswData.append((char*)&model.funcSw[selectedFunction],sizeof(FuncSwData)); + QMimeData *mimeData = new QMimeData; + mimeData->setData("application/x-companion9x-fsw", fswData); + QApplication::clipboard()->setMimeData(mimeData,QClipboard::Clipboard); +} + +void CustomFunctionsPanel::fswCut() +{ + fswCopy(); + fswDelete(); +} + +void CustomFunctionsPanel::fsw_customContextMenuRequested(QPoint pos) +{ + QLabel *label = (QLabel *)sender(); + selectedFunction = label->property("index").toInt(); + + QPoint globalPos = label->mapToGlobal(pos); + + const QClipboard *clipboard = QApplication::clipboard(); + const QMimeData *mimeData = clipboard->mimeData(); + bool hasData = mimeData->hasFormat("application/x-companion9x-fsw"); + + QMenu contextMenu; + contextMenu.addAction(QIcon(":/images/clear.png"), tr("&Delete"),this,SLOT(fswDelete()),tr("Delete")); + contextMenu.addAction(QIcon(":/images/copy.png"), tr("&Copy"),this,SLOT(fswCopy()),tr("Ctrl+C")); + contextMenu.addAction(QIcon(":/images/cut.png"), tr("&Cut"),this,SLOT(fswCut()),tr("Ctrl+X")); + contextMenu.addAction(QIcon(":/images/paste.png"), tr("&Paste"),this,SLOT(fswPaste()),tr("Ctrl+V"))->setEnabled(hasData); + + contextMenu.exec(globalPos); +} diff --git a/companion/src/modeledit/customfunctions.h b/companion/src/modeledit/customfunctions.h new file mode 100644 index 000000000..e6729da6a --- /dev/null +++ b/companion/src/modeledit/customfunctions.h @@ -0,0 +1,61 @@ +#ifndef CUSTOMFUNCTIONS_H +#define CUSTOMFUNCTIONS_H + +#include "modelpanel.h" +#include +#include +#include +#include +#include +#ifdef PHONON +#include +#include +#include +#endif + +class CustomFunctionsPanel : public ModelPanel +{ + Q_OBJECT + + public: + CustomFunctionsPanel(QWidget *parent, ModelData & model, GeneralSettings & generalSettings); + ~CustomFunctionsPanel(); + + virtual void update(); + + private slots: + void customFunctionEdited(); + void fsw_customContextMenuRequested(QPoint pos); + void refreshCustomFunction(int index, bool modified=false); + void playMusic(); +#ifdef PHONON + void mediaPlayer_state(Phonon::State newState, Phonon::State oldState); +#endif + void fswDelete(); + void fswCopy(); + void fswPaste(); + void fswCut(); + + private: + GeneralSettings & generalSettings; + bool phononLock; + QComboBox * fswtchSwtch[C9X_MAX_CUSTOM_FUNCTIONS]; + QComboBox * fswtchFunc[C9X_MAX_CUSTOM_FUNCTIONS]; + QCheckBox * fswtchParamGV[C9X_MAX_CUSTOM_FUNCTIONS]; + QDoubleSpinBox * fswtchParam[C9X_MAX_CUSTOM_FUNCTIONS]; + QPushButton * playBT[C9X_MAX_CUSTOM_FUNCTIONS]; + QComboBox * fswtchParamT[C9X_MAX_CUSTOM_FUNCTIONS]; + QComboBox * fswtchParamArmT[C9X_MAX_CUSTOM_FUNCTIONS]; + QCheckBox * fswtchEnable[C9X_MAX_CUSTOM_FUNCTIONS]; + QComboBox * fswtchRepeat[C9X_MAX_CUSTOM_FUNCTIONS]; + QComboBox * fswtchGVmode[C9X_MAX_CUSTOM_FUNCTIONS]; +#ifdef PHONON + Phonon::MediaObject *clickObject; + Phonon::AudioOutput *clickOutput; +#endif + + int selectedFunction; + +}; + +#endif // CUSTOMFUNCTIONS_H diff --git a/companion/src/modeledit/customswitches.cpp b/companion/src/modeledit/customswitches.cpp new file mode 100644 index 000000000..b20cd1f68 --- /dev/null +++ b/companion/src/modeledit/customswitches.cpp @@ -0,0 +1,399 @@ +#include "customswitches.h" +#include +#include +#include +#include +#include +#include +#include "helpers.h" + +CustomSwitchesPanel::CustomSwitchesPanel(QWidget * parent, ModelData & model): + ModelPanel(parent, model), + selectedSwitch(0) +{ + QGridLayout * gridLayout = new QGridLayout(this); + + int col = 1; + addLabel(gridLayout, tr("Function"), col++); + addLabel(gridLayout, tr("V1"), col++); + addLabel(gridLayout, tr("V2"), col++); + addLabel(gridLayout, tr("AND"), col++); + if (GetEepromInterface()->getCapability(CustomSwitchesExt)) { + addLabel(gridLayout, tr("Duration"), col++); + addLabel(gridLayout, tr("Delay"), col++); + } + + lock = true; + for (int i=0; igetCapability(CustomSwitches); i++) { + // The label + QLabel * label = new QLabel(this); + label->setProperty("index", i); + if (i < 9) + label->setText(tr("CS%1").arg(i+1)); + else + label->setText(tr("CS%1").arg(QChar('A'+i-9))); + label->setContextMenuPolicy(Qt::CustomContextMenu); + label->setMouseTracking(true); + connect(label, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(csw_customContextMenuRequested(QPoint))); + gridLayout->addWidget(label, i+1, 0); + + // The function + csw[i] = new QComboBox(this); + csw[i]->setProperty("index", i); + connect(csw[i], SIGNAL(currentIndexChanged(int)), this, SLOT(edited())); + gridLayout->addWidget(csw[i], i+1, 1); + + // V1 + cswitchSource1[i] = new QComboBox(this); + cswitchSource1[i]->setProperty("index",i); + connect(cswitchSource1[i], SIGNAL(currentIndexChanged(int)), this, SLOT(edited())); + gridLayout->addWidget(cswitchSource1[i], i+1, 2); + cswitchSource1[i]->setVisible(false); + cswitchValue[i] = new QDoubleSpinBox(this); + cswitchValue[i]->setMaximum(125); + cswitchValue[i]->setMinimum(-125); + cswitchValue[i]->setAccelerated(true); + cswitchValue[i]->setDecimals(0); + cswitchValue[i]->setProperty("index", i); + connect(cswitchValue[i], SIGNAL(editingFinished()), this, SLOT(edited())); + gridLayout->addWidget(cswitchValue[i], i+1, 2); + cswitchValue[i]->setVisible(false); + + // V2 + cswitchSource2[i] = new QComboBox(this); + cswitchSource2[i]->setProperty("index", i); + connect(cswitchSource2[i], SIGNAL(currentIndexChanged(int)), this, SLOT(edited())); + gridLayout->addWidget(cswitchSource2[i], i+1, 3); + cswitchSource2[i]->setVisible(false); + cswitchOffset[i] = new QDoubleSpinBox(this); + cswitchOffset[i]->setProperty("index",i); + cswitchOffset[i]->setMaximum(125); + cswitchOffset[i]->setMinimum(-125); + cswitchOffset[i]->setAccelerated(true); + cswitchOffset[i]->setDecimals(0); + connect(cswitchOffset[i], SIGNAL(editingFinished()), this, SLOT(edited())); + gridLayout->addWidget(cswitchOffset[i], i+1, 3); + cswitchOffset[i]->setVisible(false); + + // AND + cswitchAnd[i] = new QComboBox(this); + cswitchAnd[i]->setProperty("index", i); + connect(cswitchAnd[i], SIGNAL(currentIndexChanged(int)), this, SLOT(edited())); + gridLayout->addWidget(cswitchAnd[i], i+1, 4); + cswitchAnd[i]->setVisible(false); + + if (GetEepromInterface()->getCapability(CustomSwitchesExt)) { + // Duration + cswitchDuration[i] = new QDoubleSpinBox(this); + cswitchDuration[i]->setProperty("index", i); + cswitchDuration[i]->setSingleStep(0.5); + cswitchDuration[i]->setMaximum(50); + cswitchDuration[i]->setMinimum(0); + cswitchDuration[i]->setAccelerated(true); + cswitchDuration[i]->setDecimals(1); + connect(cswitchDuration[i],SIGNAL(editingFinished()), this, SLOT(edited())); + gridLayout->addWidget(cswitchDuration[i], i+1, 5); + cswitchDuration[i]->setVisible(false); + + // Delay + cswitchDelay[i] = new QDoubleSpinBox(this); + cswitchDelay[i]->setProperty("index", i); + cswitchDelay[i]->setSingleStep(0.5); + cswitchDelay[i]->setMaximum(50); + cswitchDelay[i]->setMinimum(0); + cswitchDelay[i]->setAccelerated(true); + cswitchDelay[i]->setDecimals(1); + connect(cswitchDelay[i], SIGNAL(editingFinished()), this, SLOT(edited())); + gridLayout->addWidget(cswitchDelay[i], i+1, 6); + cswitchDelay[i]->setVisible(false); + } + } + + lock = false; +} + +CustomSwitchesPanel::~CustomSwitchesPanel() +{ +} + +void CustomSwitchesPanel::edited() +{ + if (!lock) { + lock = true; + int i = sender()->property("index").toInt(); + bool chAr; + float value, step; + int newval; + chAr = (getCSFunctionFamily(model.customSw[i].func) != getCSFunctionFamily(csw[i]->itemData(csw[i]->currentIndex()).toInt())); + model.customSw[i].func = csw[i]->itemData(csw[i]->currentIndex()).toInt(); + if(chAr) { + if (getCSFunctionFamily(model.customSw[i].func)==CS_FAMILY_TIMERS) { + model.customSw[i].val1 = -119; + model.customSw[i].val2 = -119; + } else { + model.customSw[i].val1 = 0; + model.customSw[i].val2 = 0; + } + model.customSw[i].andsw = 0; + setSwitchWidgetVisibility(i); + } + if (GetEepromInterface()->getCapability(CustomSwitchesExt)) { + model.customSw[i].duration= (uint8_t)round(cswitchDuration[i]->value()*2); + model.customSw[i].delay= (uint8_t)round(cswitchDelay[i]->value()*2); + } + RawSource source; + switch (getCSFunctionFamily(model.customSw[i].func)) + { + case (CS_FAMILY_VOFS): + if (model.customSw[i].val1 != cswitchSource1[i]->itemData(cswitchSource1[i]->currentIndex()).toInt()) { + source=RawSource(model.customSw[i].val1); + model.customSw[i].val1 = cswitchSource1[i]->itemData(cswitchSource1[i]->currentIndex()).toInt(); + RawSource newSource = RawSource(model.customSw[i].val1); + if (newSource.type == SOURCE_TYPE_TELEMETRY) { + if (model.customSw[i].func>CS_FN_ELESS && model.customSw[i].funcCS_FN_ELESS && model.customSw[i].funcvalue()/source.getStep(model)); + } else { + model.customSw[i].val2 = ((cswitchOffset[i]->value()-source.getOffset(model))/source.getStep(model))-source.getRawOffset(model); + } + } + setSwitchWidgetVisibility(i); + } else { + source=RawSource(model.customSw[i].val1); + if (model.customSw[i].func>CS_FN_ELESS && model.customSw[i].funcvalue()/source.getStep(model)); + cswitchOffset[i]->setValue(model.customSw[i].val2*source.getStep(model)); + } else { + model.customSw[i].val2 = ((cswitchOffset[i]->value()-source.getOffset(model))/source.getStep(model))-source.getRawOffset(model); + cswitchOffset[i]->setValue((model.customSw[i].val2 +source.getRawOffset(model))*source.getStep(model)+source.getOffset(model)); + } + } + break; + case (CS_FAMILY_TIMERS): { + value=cswitchOffset[i]->value(); + newval=TimToVal(value); + if (newval>model.customSw[i].val2) { + if (value >=60) { + value=round(value); + step=1; + } else if (value>=2) { + value=(round(value*2.0)/2); + step=0.5; + } else { + step=0.1; + } + } else { + if (value <=2) { + step=0.1; + } else if (value<=60) { + value=(round(value*2.0)/2); + step=0.5; + } else { + value=round(value); + step=1; + } + } + model.customSw[i].val2=TimToVal(value); + value=ValToTim(model.customSw[i].val2); + cswitchOffset[i]->setValue(value); + cswitchOffset[i]->setSingleStep(step); + + value=cswitchValue[i]->value(); + newval=TimToVal(value); + if (newval>model.customSw[i].val1) { + if (value >=60) { + value=round(value); + step=1; + } else if (value>=2) { + value=(round(value*2.0)/2); + step=0.5; + } else { + step=0.1; + } + } else { + if (value <=2) { + step=0.1; + } else if (value<=60) { + value=(round(value*2.0)/2); + step=0.5; + } else { + value=round(value); + step=1; + } + } + model.customSw[i].val1=TimToVal(value); + value=ValToTim(model.customSw[i].val1); + cswitchValue[i]->setValue(value); + cswitchValue[i]->setSingleStep(step); + break; + } + case (CS_FAMILY_VBOOL): + case (CS_FAMILY_VCOMP): + model.customSw[i].val1 = cswitchSource1[i]->itemData(cswitchSource1[i]->currentIndex()).toInt(); + model.customSw[i].val2 = cswitchSource2[i]->itemData(cswitchSource2[i]->currentIndex()).toInt(); + break; + } + model.customSw[i].andsw = cswitchAnd[i]->itemData(cswitchAnd[i]->currentIndex()).toInt(); + emit modified(); + lock = false; + } +} + +void CustomSwitchesPanel::setSwitchWidgetVisibility(int i) +{ + RawSource source = RawSource(model.customSw[i].val1); + switch (getCSFunctionFamily(model.customSw[i].func)) + { + case CS_FAMILY_VOFS: + cswitchSource1[i]->setVisible(true); + cswitchSource2[i]->setVisible(false); + cswitchValue[i]->setVisible(false); + cswitchOffset[i]->setVisible(true); + populateSourceCB(cswitchSource1[i], source, POPULATE_SOURCES | (GetEepromInterface()->getCapability(ExtraTrims) ? POPULATE_TRIMS : 0) | POPULATE_SWITCHES | POPULATE_TELEMETRY | (GetEepromInterface()->getCapability(GvarsInCS) ? POPULATE_GVARS : 0)); + cswitchOffset[i]->setDecimals(source.getDecimals(model)); + cswitchOffset[i]->setSingleStep(source.getStep(model)); + if (model.customSw[i].func>CS_FN_ELESS && model.customSw[i].funcsetMinimum(source.getStep(model)*-127); + cswitchOffset[i]->setMaximum(source.getStep(model)*127); + cswitchOffset[i]->setValue(source.getStep(model)*model.customSw[i].val2); + } else { + cswitchOffset[i]->setMinimum(source.getMin(model)); + cswitchOffset[i]->setMaximum(source.getMax(model)); + cswitchOffset[i]->setValue(source.getStep(model)*(model.customSw[i].val2+source.getRawOffset(model))+source.getOffset(model)); + } + break; + case CS_FAMILY_VBOOL: + cswitchSource1[i]->setVisible(true); + cswitchSource2[i]->setVisible(true); + cswitchValue[i]->setVisible(false); + cswitchOffset[i]->setVisible(false); + populateSwitchCB(cswitchSource1[i], RawSwitch(model.customSw[i].val1)); + populateSwitchCB(cswitchSource2[i], RawSwitch(model.customSw[i].val2)); + break; + case CS_FAMILY_VCOMP: + cswitchSource1[i]->setVisible(true); + cswitchSource2[i]->setVisible(true); + cswitchValue[i]->setVisible(false); + cswitchOffset[i]->setVisible(false); + populateSourceCB(cswitchSource1[i], RawSource(model.customSw[i].val1), POPULATE_SOURCES | (GetEepromInterface()->getCapability(ExtraTrims) ? POPULATE_TRIMS : 0) | POPULATE_SWITCHES | POPULATE_TELEMETRY | (GetEepromInterface()->getCapability(GvarsInCS) ? POPULATE_GVARS : 0)); + populateSourceCB(cswitchSource2[i], RawSource(model.customSw[i].val2), POPULATE_SOURCES | (GetEepromInterface()->getCapability(ExtraTrims) ? POPULATE_TRIMS : 0) | POPULATE_SWITCHES | POPULATE_TELEMETRY | (GetEepromInterface()->getCapability(GvarsInCS) ? POPULATE_GVARS : 0)); + break; + case CS_FAMILY_TIMERS: + cswitchSource1[i]->setVisible(false); + cswitchSource2[i]->setVisible(false); + cswitchValue[i]->setVisible(true); + cswitchOffset[i]->setVisible(true); + cswitchOffset[i]->setDecimals(1); + cswitchOffset[i]->setMinimum(0.1); + cswitchOffset[i]->setMaximum(175); + float value=ValToTim(model.customSw[i].val2); + cswitchOffset[i]->setSingleStep(0.1); + if (value>60) { + cswitchOffset[i]->setSingleStep(1); + } else if (value>2) { + cswitchOffset[i]->setSingleStep(0.5); + } + cswitchOffset[i]->setValue(value); + + cswitchValue[i]->setDecimals(1); + cswitchValue[i]->setMinimum(0.1); + cswitchValue[i]->setMaximum(175); + value=ValToTim(model.customSw[i].val1); + cswitchValue[i]->setSingleStep(0.1); + if (value>60) { + cswitchValue[i]->setSingleStep(1); + } else if (value>2) { + cswitchValue[i]->setSingleStep(0.5); + } + cswitchValue[i]->setValue(value); + break; + } + cswitchAnd[i]->setVisible(true); + populateSwitchCB(cswitchAnd[i], RawSwitch(model.customSw[i].andsw), POPULATE_AND_SWITCHES); + if (GetEepromInterface()->getCapability(CustomSwitchesExt)) { + cswitchDuration[i]->setVisible(true); + cswitchDuration[i]->setValue(model.customSw[i].duration/2.0); + cswitchDelay[i]->setVisible(true); + cswitchDelay[i]->setValue(model.customSw[i].delay/2.0); + } +} + +void CustomSwitchesPanel::update() +{ + lock = true; + for (int i=0; igetCapability(CustomSwitches); i++) { + populateCSWCB(csw[i], model.customSw[i].func); + setSwitchWidgetVisibility(i); + } + lock = false; +} + +void CustomSwitchesPanel::cswPaste() +{ + const QClipboard *clipboard = QApplication::clipboard(); + const QMimeData *mimeData = clipboard->mimeData(); + if (mimeData->hasFormat("application/x-companion9x-csw")) { + QByteArray cswData = mimeData->data("application/x-companion9x-csw"); + + CustomSwData *csw = &model.customSw[selectedSwitch]; + memcpy(csw, cswData.mid(0, sizeof(CustomSwData)).constData(), sizeof(CustomSwData)); + emit modified(); + updateSelectedSwitch(); + } +} + +void CustomSwitchesPanel::cswDelete() +{ + model.customSw[selectedSwitch].clear(); + emit modified(); + updateSelectedSwitch(); +} + +void CustomSwitchesPanel::cswCopy() +{ + QByteArray cswData; + cswData.append((char*)&model.customSw[selectedSwitch],sizeof(CustomSwData)); + QMimeData *mimeData = new QMimeData; + mimeData->setData("application/x-companion9x-csw", cswData); + QApplication::clipboard()->setMimeData(mimeData,QClipboard::Clipboard); +} + +void CustomSwitchesPanel::updateSelectedSwitch() +{ + lock = true; + populateCSWCB(csw[selectedSwitch], model.customSw[selectedSwitch].func); + setSwitchWidgetVisibility(selectedSwitch); + lock = false; +} + +void CustomSwitchesPanel::cswCut() +{ + cswCopy(); + cswDelete(); +} + +// TODO make something generic here! +void CustomSwitchesPanel::csw_customContextMenuRequested(QPoint pos) +{ + QLabel *label = (QLabel *)sender(); + selectedSwitch = label->property("index").toInt(); + + QPoint globalPos = label->mapToGlobal(pos); + + const QClipboard *clipboard = QApplication::clipboard(); + const QMimeData *mimeData = clipboard->mimeData(); + bool hasData = mimeData->hasFormat("application/x-companion9x-csw"); + + QMenu contextMenu; + contextMenu.addAction(QIcon(":/images/clear.png"), tr("&Delete"),this,SLOT(cswDelete()),tr("Delete")); + contextMenu.addAction(QIcon(":/images/copy.png"), tr("&Copy"),this,SLOT(cswCopy()),tr("Ctrl+C")); + contextMenu.addAction(QIcon(":/images/cut.png"), tr("&Cut"),this,SLOT(cswCut()),tr("Ctrl+X")); + contextMenu.addAction(QIcon(":/images/paste.png"), tr("&Paste"),this,SLOT(cswPaste()),tr("Ctrl+V"))->setEnabled(hasData); + + contextMenu.exec(globalPos); +} diff --git a/companion/src/modeledit/customswitches.h b/companion/src/modeledit/customswitches.h new file mode 100644 index 000000000..c00ad60b6 --- /dev/null +++ b/companion/src/modeledit/customswitches.h @@ -0,0 +1,42 @@ +#ifndef CUSTOMSWITCHES_H +#define CUSTOMSWITCHES_H + +#include "modelpanel.h" +#include +#include + +class CustomSwitchesPanel : public ModelPanel +{ + Q_OBJECT + + public: + CustomSwitchesPanel(QWidget *parent, ModelData & model); + virtual ~CustomSwitchesPanel(); + + virtual void update(); + + private slots: + void edited(); + void csw_customContextMenuRequested(QPoint pos); + void cswDelete(); + void cswCopy(); + void cswPaste(); + void cswCut(); + + private: + QComboBox * csw[C9X_NUM_CSW]; + QDoubleSpinBox * cswitchValue[C9X_NUM_CSW]; + QDoubleSpinBox * cswitchOffset[C9X_NUM_CSW]; + QComboBox * cswitchAnd[C9X_NUM_CSW]; + QDoubleSpinBox * cswitchDuration[C9X_NUM_CSW]; + QDoubleSpinBox * cswitchDelay[C9X_NUM_CSW]; + QComboBox * cswitchSource1[C9X_NUM_CSW]; + QComboBox * cswitchSource2[C9X_NUM_CSW]; + void setSwitchWidgetVisibility(int i); + int selectedSwitch; + + void updateSelectedSwitch(); + +}; + +#endif // CUSTOMSWITCHES_H diff --git a/companion/src/edge.cpp b/companion/src/modeledit/edge.cpp similarity index 100% rename from companion/src/edge.cpp rename to companion/src/modeledit/edge.cpp diff --git a/companion/src/edge.h b/companion/src/modeledit/edge.h similarity index 100% rename from companion/src/edge.h rename to companion/src/modeledit/edge.h diff --git a/companion/src/expodialog.cpp b/companion/src/modeledit/expodialog.cpp similarity index 100% rename from companion/src/expodialog.cpp rename to companion/src/modeledit/expodialog.cpp diff --git a/companion/src/expodialog.h b/companion/src/modeledit/expodialog.h similarity index 100% rename from companion/src/expodialog.h rename to companion/src/modeledit/expodialog.h diff --git a/companion/src/expodialog.ui b/companion/src/modeledit/expodialog.ui similarity index 100% rename from companion/src/expodialog.ui rename to companion/src/modeledit/expodialog.ui diff --git a/companion/src/modeledit/flightmode.ui b/companion/src/modeledit/flightmode.ui new file mode 100644 index 000000000..6ed3d8769 --- /dev/null +++ b/companion/src/modeledit/flightmode.ui @@ -0,0 +1,449 @@ + + + FlightMode + + + + 0 + 0 + 610 + 499 + + + + Form + + + + + + + + Fade In + + + + + + + 1 + + + + + + + 1 + + + + + + + Fade Out + + + + + + + 6 + + + + + + + Name + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Switch + + + + + + + + + + + + + + + 0 + 0 + + + + Qt::Horizontal + + + QSlider::TicksBothSides + + + 25 + + + + + + + Qt::Vertical + + + QSlider::TicksBothSides + + + 25 + + + + + + + Qt::Vertical + + + false + + + false + + + QSlider::TicksBothSides + + + 25 + + + + + + + + 0 + 0 + + + + Qt::Horizontal + + + QSlider::TicksBothSides + + + 25 + + + + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + + + + trim1 + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + Qt::AlignCenter + + + true + + + -896 + + + 896 + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + Qt::AlignCenter + + + true + + + -896 + + + 896 + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + trim2 + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + + + + trim4 + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + trim3 + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + Qt::AlignCenter + + + true + + + -896 + + + 896 + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + Qt::AlignCenter + + + true + + + -896 + + + 896 + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + + + + + + + Qt::Horizontal + + + + + + + + + + + + + + + + + + diff --git a/companion/src/modeledit/flightmodes.cpp b/companion/src/modeledit/flightmodes.cpp new file mode 100644 index 000000000..4475aaebc --- /dev/null +++ b/companion/src/modeledit/flightmodes.cpp @@ -0,0 +1,484 @@ +#include "flightmodes.h" +#include "ui_flightmode.h" +#include "firmwares/opentx/open9xeeprom.h" // TODO shouldn't be there +#include "helpers.h" +#include +#include + +FlightMode::FlightMode(QWidget * parent, ModelData & model, int phaseIdx, GeneralSettings & generalSettings): + ModelPanel(parent, model), + ui(new Ui::FlightMode), + generalSettings(generalSettings), + phaseIdx(phaseIdx), + phase(model.phaseData[phaseIdx]), + reCount(GetEepromInterface()->getCapability(RotaryEncoders)), + gvCount(((!GetEepromInterface()->getCapability(HasVariants)) || (GetCurrentFirmwareVariant() & GVARS_VARIANT)) ? + GetEepromInterface()->getCapability(Gvars) : 0) +{ + ui->setupUi(this); + + // Phase name + QRegExp rx(CHAR_FOR_NAMES_REGEX); + if (GetEepromInterface()->getCapability(FlightPhases)) { + ui->name->setValidator(new QRegExpValidator(rx, this)); + ui->name->setMaxLength(GetEepromInterface()->getCapability(FlightModesName)); + connect(ui->name, SIGNAL(editingFinished()), this, SLOT(phaseName_editingFinished())); + } + else { + ui->name->setDisabled(true); + } + + // Phase switch + if (phaseIdx > 0) { + populateSwitchCB(ui->swtch, phase.swtch); + connect(ui->swtch, SIGNAL(currentIndexChanged(int)), this, SLOT(phaseSwitch_currentIndexChanged(int))); + } + else { + ui->swtch->hide(); + } + + // FadeIn / FadeOut + if (GetEepromInterface()->getCapability(FlightPhasesHaveFades)) { + int scale = GetEepromInterface()->getCapability(SlowScale); + int range = GetEepromInterface()->getCapability(SlowRange); + ui->fadeIn->setMaximum(float(range)/scale); + ui->fadeIn->setSingleStep(1.0/scale); + ui->fadeIn->setDecimals((scale==1 ? 0 :1) ); + connect(ui->fadeIn, SIGNAL(editingFinished()), this, SLOT(phaseFadeIn_editingFinished())); + ui->fadeOut->setMaximum(float(range)/scale); + ui->fadeOut->setSingleStep(1.0/scale); + ui->fadeOut->setDecimals((scale==1 ? 0 :1)); + connect(ui->fadeOut, SIGNAL(editingFinished()), this, SLOT(phaseFadeOut_editingFinished())); + } + else { + ui->fadeIn->setDisabled(true); + ui->fadeOut->setDisabled(true); + } + + // The trims + QString labels[] = { tr("Rud"), tr("Ele"), tr("Thr"), tr("Ail") }; // TODO is elsewhere for sure + + trimsLabel << ui->trim1Label << ui->trim2Label << ui->trim3Label << ui->trim4Label; + trimsUse << ui->trim1Use << ui->trim2Use << ui->trim3Use << ui->trim4Use; + trimsValue << ui->trim1Value << ui->trim2Value << ui->trim3Value << ui->trim4Value; + trimsSlider << ui->trim1Slider << ui->trim2Slider << ui->trim3Slider << ui->trim4Slider; + + for (int i=0; i<4; i++) { + trimsLabel[i]->setText(labels[CONVERT_MODE(i+1)-1]); + + if (phaseIdx > 0) { + trimsUse[i]->setProperty("index", i); + populateTrimUseCB(trimsUse[i], phaseIdx); + connect(trimsUse[i], SIGNAL(currentIndexChanged(int)), this, SLOT(phaseTrimUse_currentIndexChanged(int))); + } + else { + trimsUse[i]->hide(); + } + + trimsValue[i]->setProperty("index", i); + connect(trimsValue[i], SIGNAL(valueChanged(int)), this, SLOT(phaseTrim_valueChanged())); + + trimsSlider[i]->setProperty("index", i); + connect(trimsSlider[i], SIGNAL(valueChanged(int)), this, SLOT(phaseTrimSlider_valueChanged())); + } + + // Rotary encoders + if (reCount > 0) { + QGridLayout *reLayout = new QGridLayout(ui->reGB); + for (int i=0; ireGB); + label->setText(tr("Rotary Encoder %1").arg(i+1)); + reLayout->addWidget(label, i, 0, 1, 1); + if (phaseIdx > 0) { + // RE link to another RE + QComboBox *link = new QComboBox(ui->gvGB); + link->setProperty("index", i); + populateGvarUseCB(link, phaseIdx); + connect(link, SIGNAL(currentIndexChanged(int)), this, SLOT(phaseREUse_currentIndexChanged(int))); + if (phase.rotaryEncoders[i] > 1024) { + link->setCurrentIndex(phase.rotaryEncoders[i] - 1024); + } + reLayout->addWidget(link, i, 1, 1, 1); + } + // RE value + reValues[i] = new QSpinBox(ui->reGB); + reValues[i]->setProperty("index", i); + reValues[i]->setMinimum(-1024); + reValues[i]->setMaximum(1024); + connect(reValues[i], SIGNAL(editingFinished()), this, SLOT(phaseREValue_editingFinished())); + reLayout->addWidget(reValues[i], i, 2, 1, 1); + } + } + else { + ui->reGB->hide(); + } + + // GVars + if (gvCount > 0) { + QGridLayout *gvLayout = new QGridLayout(ui->gvGB); + for (int i=0; igvGB); + label->setText(tr("GVAR%1").arg(i+1)); + gvLayout->addWidget(label, i, col++, 1, 1); +#if 0 + // TODO remove this capability? + // GVar source (er9x/ersky9x) + if (GetEepromInterface()->getCapability(GvarsHaveSources)) { + QComboBox *source = new QComboBox(ui->gvGB); + source->setProperty("index", i); + populateGvSourceCB(source, model.gvsource[i]); + // connect(source, SIGNAL(currentIndexChanged(int)), this, SLOT(phaseGVSource_currentIndexChanged(int))); + gvLayout->addWidget(source, i, col++, 1, 1); + } +#endif + // GVar name + int nameLen = GetEepromInterface()->getCapability(GvarsName); + if (nameLen > 0) { + gvNames[i] = new QLineEdit(ui->gvGB); + gvNames[i]->setProperty("index", i); + gvNames[i]->setMaxLength(nameLen); + connect(gvNames[i], SIGNAL(editingFinished()), this, SLOT(GVName_editingFinished())); + gvLayout->addWidget(gvNames[i], i, col++, 1, 1); + } + if (phaseIdx > 0) { + // GVar link to another GVar + QComboBox *link = new QComboBox(ui->gvGB); + link->setProperty("index", i); + populateGvarUseCB(link, phaseIdx); + if (phase.gvars[i] > 1024) { + link->setCurrentIndex(phase.gvars[i] - 1024); + } + connect(link, SIGNAL(currentIndexChanged(int)), this, SLOT(phaseGVUse_currentIndexChanged(int))); + gvLayout->addWidget(link, i, col++, 1, 1); + } + // GVar value + gvValues[i] = new QSpinBox(ui->gvGB); + gvValues[i]->setProperty("index", i); + connect(gvValues[i], SIGNAL(editingFinished()), this, SLOT(phaseGVValue_editingFinished())); + gvValues[i]->setMinimum(-1024); + gvValues[i]->setMaximum(1024); + gvLayout->addWidget(gvValues[i], i, col++, 1, 1); + } + } + else { + ui->gvGB->hide(); + } + + update(); +} + +FlightMode::~FlightMode() +{ + delete ui; +} + +void FlightMode::update() +{ + ui->name->setText(phase.name); + + int scale = GetEepromInterface()->getCapability(SlowScale); + ui->fadeIn->setValue(float(phase.fadeIn)/scale); + ui->fadeOut->setValue(float(phase.fadeOut)/scale); + + for (int i=0; i<4; i++) { + int trimsMax = GetEepromInterface()->getCapability(ExtendedTrims); + if (trimsMax == 0 || !model.extendedTrims) { + trimsMax = 125; + } + trimsSlider[i]->setRange(-trimsMax, +trimsMax); + trimsValue[i]->setRange(-trimsMax, +trimsMax); + int chn = CONVERT_MODE(i+1)-1; + if (chn == 2/*TODO constant*/ && generalSettings.throttleReversed) + trimsSlider[i]->setInvertedAppearance(true); + + trimUpdate(i); + } + + for (int i=0; isetText(model.gvars_names[i]); + if (phase.gvars[i] < 1024) { + gvValues[i]->setValue(phase.gvars[i]); + gvValues[i]->setDisabled(false); + } + else { + int idx = phase.gvars[i] - 1025; + if (idx >= i) idx++; + // TODO no!!!! + PhaseData *phasegvar = &model.phaseData[idx]; + gvValues[i]->setValue(phasegvar->gvars[i]); + gvValues[i]->setDisabled(true); + } + } + + for (int i=0; isetValue(phase.rotaryEncoders[i]); + reValues[i]->setDisabled(false); + } + else { + int idx = phase.rotaryEncoders[i] - 1025; + if (idx >= i) idx++; + // TODO no!!!! + PhaseData *phasere = &model.phaseData[idx]; + reValues[i]->setValue(phasere->rotaryEncoders[i]); + reValues[i]->setDisabled(true); + } + } +} + +void FlightMode::phaseName_editingFinished() +{ + QLineEdit *lineEdit = qobject_cast(sender()); + strcpy(phase.name, lineEdit->text().toAscii()); + emit modified(); + emit nameModified(); +} + +void FlightMode::phaseSwitch_currentIndexChanged(int index) +{ + QComboBox *comboBox = qobject_cast(sender()); + phase.swtch = RawSwitch(comboBox->itemData(index).toInt()); + emit modified(); +} + +void FlightMode::phaseFadeIn_editingFinished() +{ + QDoubleSpinBox *spinBox = qobject_cast(sender()); + int scale = GetEepromInterface()->getCapability(SlowScale); + phase.fadeIn = round(spinBox->value()*scale); + emit modified(); +} + +void FlightMode::phaseFadeOut_editingFinished() +{ + QDoubleSpinBox *spinBox = qobject_cast(sender()); + int scale = GetEepromInterface()->getCapability(SlowScale); + phase.fadeOut = round(spinBox->value()*scale); + emit modified(); +} + +void FlightMode::trimUpdate(unsigned int trim) +{ + lock = true; + int chn = CONVERT_MODE(trim+1)-1; + int value = phase.trim[chn]; + if (phaseIdx > 0 && phase.trimRef[chn] >= 0) { + trimsUse[trim]->setCurrentIndex(1 + phase.trimRef[chn] - (phase.trimRef[chn] >= phaseIdx ? 1 : 0)); + value = model.phaseData[model.getTrimFlightPhase(chn, phaseIdx)].trim[chn]; + trimsValue[trim]->setEnabled(false); + trimsSlider[trim]->setEnabled(false); + } + else { + if (phaseIdx > 0) trimsUse[trim]->setCurrentIndex(0); + trimsValue[trim]->setEnabled(true); + trimsSlider[trim]->setEnabled(true); + } + trimsSlider[trim]->setValue(value); + trimsValue[trim]->setValue(value); + lock = false; +} + +void FlightMode::phaseGVValue_editingFinished() +{ + if (!lock) { + QSpinBox *spinBox = qobject_cast(sender()); + int gvar = spinBox->property("index").toInt(); + phase.gvars[gvar] = spinBox->value(); + emit modified(); + } +} + +void FlightMode::GVName_editingFinished() +{ + if (!lock) { + QLineEdit *lineedit = qobject_cast(sender()); + int gvar = lineedit->property("index").toInt(); + memset(&model.gvars_names[gvar], 0, sizeof(model.gvars_names[gvar])); + strcpy(model.gvars_names[gvar], lineedit->text().toAscii()); + emit modified(); + } +} + +void FlightMode::GVSource_currentIndexChanged(int index) +{ + QComboBox *comboBox = qobject_cast(sender()); + int gvar = comboBox->property("index").toInt(); + model.gvsource[gvar] = index; + emit modified(); +} + +void FlightMode::phaseGVUse_currentIndexChanged(int index) +{ + if (!lock) { + lock = true; + QComboBox *comboBox = qobject_cast(sender()); + int gvar = comboBox->property("index").toInt(); + if (index == 0) { + int value = phase.gvars[gvar]; + if (value>1024) { + value=0; + } + gvValues[gvar]->setValue(value); + gvValues[gvar]->setEnabled(true); + phase.gvars[gvar]=value; + } + else { + phase.gvars[gvar] = 1024+index; + // TOTO it's wrong!!! + int value = model.phaseData[index + (index>phaseIdx ? 0 :-1)].gvars[gvar]; + gvValues[gvar]->setValue(value); + gvValues[gvar]->setDisabled(true); + } + emit modified(); + lock = false; + } +} + +void FlightMode::phaseREValue_editingFinished() +{ + if (!lock) { + QSpinBox *spinBox = qobject_cast(sender()); + int gvar = spinBox->property("index").toInt(); + phase.rotaryEncoders[gvar] = spinBox->value(); + emit modified(); + } +} + +void FlightMode::phaseREUse_currentIndexChanged(int index) +{ + if (!lock) { + lock = true; + QComboBox *comboBox = qobject_cast(sender()); + int re = comboBox->property("index").toInt(); + if (index == 0) { + // TODO no!!! + int value = phase.rotaryEncoders[re]; + if (value > 1024) { + value = 0; + } + reValues[re]->setValue(value); + reValues[re]->setEnabled(true); + phase.rotaryEncoders[re] = value; + } + else { + phase.rotaryEncoders[re] = 1024 + index; + int value = model.phaseData[index + (index>phaseIdx ? 0 :-1)].rotaryEncoders[re]; + reValues[re]->setValue(value); + reValues[re]->setDisabled(true) ; + } + lock = false; + emit modified(); + } +} + +void FlightMode::phaseTrimUse_currentIndexChanged(int index) +{ + if (!lock) { + QComboBox *comboBox = qobject_cast(sender()); + int trim = comboBox->property("index").toInt(); + int chn = CONVERT_MODE(trim+1)-1; + if (index == 0) { + phase.trim[chn] = model.phaseData[model.getTrimFlightPhase(chn, phaseIdx)].trim[chn]; + phase.trimRef[chn] = -1; + } + else { + phase.trim[chn] = 0; + phase.trimRef[chn] = index - 1 + (index > (int)phaseIdx ? 1 : 0); + } + + trimUpdate(trim); + emit modified(); + } +} + +void FlightMode::phaseTrim_valueChanged() +{ + if (!lock) { + QSpinBox *spinBox = qobject_cast(sender()); + int trim = spinBox->property("index").toInt(); + int chn = CONVERT_MODE(trim+1)-1; + int value = spinBox->value(); + phase.trim[chn] = value; + lock = true; + trimsSlider[trim]->setValue(value); + lock = false; + emit modified(); + } +} + +void FlightMode::phaseTrimSlider_valueChanged() +{ + if (!lock) { + QSlider *slider = qobject_cast(sender()); + int trim = slider->property("index").toInt(); + int chn = CONVERT_MODE(trim+1)-1; + int value = slider->value(); + phase.trim[chn] = value; + lock = true; + trimsValue[trim]->setValue(value); + lock = false; + emit modified(); + } +} + +/**********************************************************/ + +FlightModes::FlightModes(QWidget * parent, ModelData & model, GeneralSettings & generalSettings): + ModelPanel(parent, model), + modesCount(GetEepromInterface()->getCapability(FlightPhases)) +{ + QGridLayout * gridLayout = new QGridLayout(this); + tabWidget = new QTabWidget(this); + for (int i=0; isetProperty("index", i); + panels << tab; + connect(tab, SIGNAL(modified()), this, SLOT(onPhaseModified())); + connect(tab, SIGNAL(nameModified()), this, SLOT(onPhaseNameChanged())); + tabWidget->addTab(tab, getTabName(i)); + } + gridLayout->addWidget(tabWidget, 0, 0, 1, 1); + connect(tabWidget, SIGNAL(currentChanged(int)), this, SLOT(on_tabWidget_currentChanged(int))); +} + +FlightModes::~FlightModes() +{ +} + +void FlightModes::onPhaseModified() +{ + emit modified(); +} + +QString FlightModes::getTabName(int index) +{ + QString result = tr("Flight Mode %1").arg(index); + const char *name = model.phaseData[index].name; + if (GetEepromInterface()->getCapability(FlightModesName) && strlen(name) > 0) { + result += tr(" (%1)").arg(name); + } + else if (index == 0) { + result += tr(" (default)"); + } + + return result; +} + +void FlightModes::onPhaseNameChanged() +{ + int index = sender()->property("index").toInt(); + tabWidget->setTabText(index, getTabName(index)); +} + +void FlightModes::update() +{ + on_tabWidget_currentChanged(tabWidget->currentIndex()); +} + +void FlightModes::on_tabWidget_currentChanged(int index) +{ + panels[index]->update(); +} diff --git a/companion/src/modeledit/flightmodes.h b/companion/src/modeledit/flightmodes.h new file mode 100644 index 000000000..0a09f279b --- /dev/null +++ b/companion/src/modeledit/flightmodes.h @@ -0,0 +1,86 @@ +#ifndef FLIGHTMODES_H +#define FLIGHTMODES_H + +#include "modelpanel.h" +#include +#include +#include +#include +#include + +namespace Ui { + class FlightMode; +} + +class FlightMode : public ModelPanel +{ + Q_OBJECT + + public: + FlightMode(QWidget *parent, ModelData &model, int modeIdx, GeneralSettings & generalSettings); + virtual ~FlightMode(); + + virtual void update(); + + signals: + void nameModified(); + + private slots: + void phaseName_editingFinished(); + void phaseSwitch_currentIndexChanged(int index); + void phaseFadeIn_editingFinished(); + void phaseFadeOut_editingFinished(); + void phaseTrimUse_currentIndexChanged(int index); + void phaseTrim_valueChanged(); + void phaseTrimSlider_valueChanged(); + void GVName_editingFinished(); + void GVSource_currentIndexChanged(int index); + void phaseGVValue_editingFinished(); + void phaseGVUse_currentIndexChanged(int index); + void phaseREValue_editingFinished(); + void phaseREUse_currentIndexChanged(int index); + + private: + Ui::FlightMode *ui; + GeneralSettings & generalSettings; + int phaseIdx; + PhaseData & phase; + int reCount; + int gvCount; + QVector trimsLabel; + QLineEdit * gvNames[C9X_MAX_GVARS]; + QSpinBox * gvValues[C9X_MAX_GVARS]; + QSpinBox * reValues[C9X_MAX_ENCODERS]; + QVector trimsUse; + QVector trimsValue; + QVector trimsSlider; + + void trimUpdate(unsigned int trim); + +}; + +class FlightModes : public ModelPanel +{ + Q_OBJECT + + public: + FlightModes(QWidget *parent, ModelData & model, GeneralSettings & generalSettings); + virtual ~FlightModes(); + + virtual void update(); + + private slots: + void onPhaseModified(); + void onPhaseNameChanged(); + void on_tabWidget_currentChanged(int index); + + private: + int modesCount; + QTabWidget *tabWidget; + QString getTabName(int index); + QVector panels; + +}; + +#endif // FLIGHTMODES_H + diff --git a/companion/src/modeledit/heli.cpp b/companion/src/modeledit/heli.cpp new file mode 100644 index 000000000..6c584658a --- /dev/null +++ b/companion/src/modeledit/heli.cpp @@ -0,0 +1,49 @@ +#include "heli.h" +#include "ui_heli.h" +#include "helpers.h" + +HeliPanel::HeliPanel(QWidget *parent, ModelData & model): + ModelPanel(parent, model), + ui(new Ui::Heli) +{ + ui->setupUi(this); + + connect(ui->swashTypeCB, SIGNAL(currentIndexChanged(int)), this, SLOT(edited())); + connect(ui->swashCollectiveCB, SIGNAL(currentIndexChanged(int)), this, SLOT(edited())); + connect(ui->swashRingValSB, SIGNAL(editingFinished()), this, SLOT(edited())); + connect(ui->swashInvertELE, SIGNAL(stateChanged(int)), this, SLOT(edited())); + connect(ui->swashInvertAIL, SIGNAL(stateChanged(int)), this, SLOT(edited())); + connect(ui->swashInvertCOL, SIGNAL(stateChanged(int)), this, SLOT(edited())); +} + +HeliPanel::~HeliPanel() +{ + delete ui; +} + +void HeliPanel::update() +{ + lock = true; + + ui->swashTypeCB->setCurrentIndex(model.swashRingData.type); + populateSourceCB(ui->swashCollectiveCB, model.swashRingData.collectiveSource, POPULATE_SOURCES | POPULATE_SWITCHES | POPULATE_TRIMS); + ui->swashRingValSB->setValue(model.swashRingData.value); + ui->swashInvertELE->setChecked(model.swashRingData.invertELE); + ui->swashInvertAIL->setChecked(model.swashRingData.invertAIL); + ui->swashInvertCOL->setChecked(model.swashRingData.invertCOL); + + lock = false; +} + +void HeliPanel::edited() +{ + if (!lock) { + model.swashRingData.type = ui->swashTypeCB->currentIndex(); + model.swashRingData.collectiveSource = ui->swashCollectiveCB->itemData(ui->swashCollectiveCB->currentIndex()).toInt(); + model.swashRingData.value = ui->swashRingValSB->value(); + model.swashRingData.invertELE = ui->swashInvertELE->isChecked(); + model.swashRingData.invertAIL = ui->swashInvertAIL->isChecked(); + model.swashRingData.invertCOL = ui->swashInvertCOL->isChecked(); + emit modified(); + } +} diff --git a/companion/src/modeledit/heli.h b/companion/src/modeledit/heli.h new file mode 100644 index 000000000..7b5e3a73d --- /dev/null +++ b/companion/src/modeledit/heli.h @@ -0,0 +1,26 @@ +#ifndef HELI_H +#define HELI_H + +#include "modelpanel.h" + +namespace Ui { + class Heli; +} + +class HeliPanel : public ModelPanel +{ + Q_OBJECT + + public: + HeliPanel(QWidget *parent, ModelData & model); + ~HeliPanel(); + void update(); + + private slots: + void edited(); + + private: + Ui::Heli *ui; +}; + +#endif // HELI_H diff --git a/companion/src/modeledit/heli.ui b/companion/src/modeledit/heli.ui new file mode 100644 index 000000000..c9741fde9 --- /dev/null +++ b/companion/src/modeledit/heli.ui @@ -0,0 +1,141 @@ + + + Heli + + + + 0 + 0 + 795 + 307 + + + + Form + + + + 6 + + + + + + + Invert Elevator + + + + + + + Invert Aileron + + + + + + + Invert Collective + + + + + + + + + Invert + + + + + + + + Off + + + + + 120 + + + + + 120X + + + + + 140 + + + + + 90 + + + + + + + + Collective + + + + + + + + + + Swash Type + + + + + + + + + + 0 + + + 100 + + + 1 + + + 0 + + + + + + + Swash Ring + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + diff --git a/companion/src/modeledit/inputs.cpp b/companion/src/modeledit/inputs.cpp new file mode 100644 index 000000000..96967a5e8 --- /dev/null +++ b/companion/src/modeledit/inputs.cpp @@ -0,0 +1,486 @@ +#include "inputs.h" +#include +#include "expodialog.h" +#include "helpers.h" + +InputsPanel::InputsPanel(QWidget *parent, ModelData & model, GeneralSettings & generalSettings): + ModelPanel(parent, model), + generalSettings(generalSettings), + expoInserted(false) +{ + QGridLayout * exposLayout = new QGridLayout(this); + + ExposlistWidget = new MixersList(this, true); + QPushButton * qbUp = new QPushButton(this); + QPushButton * qbDown = new QPushButton(this); + QPushButton * qbClear = new QPushButton(this); + + qbUp->setText(tr("Move Up")); + qbUp->setIcon(QIcon(":/images/moveup.png")); + qbUp->setShortcut(QKeySequence(tr("Ctrl+Up"))); + qbDown->setText(tr("Move Down")); + qbDown->setIcon(QIcon(":/images/movedown.png")); + qbDown->setShortcut(QKeySequence(tr("Ctrl+Down"))); + qbClear->setText(tr("Clear Expo Settings")); + qbClear->setIcon(QIcon(":/images/clear.png")); + + exposLayout->addWidget(ExposlistWidget,1,1,1,3); + exposLayout->addWidget(qbUp,2,1); + exposLayout->addWidget(qbClear,2,2); + exposLayout->addWidget(qbDown,2,3); + + connect(ExposlistWidget, SIGNAL(customContextMenuRequested(QPoint)),this,SLOT(expolistWidget_customContextMenuRequested(QPoint))); + connect(ExposlistWidget, SIGNAL(doubleClicked(QModelIndex)),this,SLOT(expolistWidget_doubleClicked(QModelIndex))); + connect(ExposlistWidget, SIGNAL(mimeDropped(int,const QMimeData*,Qt::DropAction)),this,SLOT(mimeExpoDropped(int,const QMimeData*,Qt::DropAction))); + + connect(qbUp, SIGNAL(pressed()),SLOT(moveExpoUp())); + connect(qbDown, SIGNAL(pressed()),SLOT(moveExpoDown())); + connect(qbClear, SIGNAL(pressed()),SLOT(clearExpos())); + + connect(ExposlistWidget, SIGNAL(keyWasPressed(QKeyEvent*)), this, SLOT(expolistWidget_KeyPress(QKeyEvent*))); +} + +InputsPanel::~InputsPanel() +{ +} + +void InputsPanel::update() +{ + lock = true; + + // curDest -> destination channel + // i -> mixer number + QByteArray qba; + ExposlistWidget->clear(); + int curDest = -1; + + for(int i=0; imode==0) break; + QString str = ""; + while(curDest<(int)md->chn-1) { + curDest++; + str = getStickStr(curDest); + qba.clear(); + qba.append((quint8)-curDest-1); + QListWidgetItem *itm = new QListWidgetItem(str); + itm->setData(Qt::UserRole,qba); + ExposlistWidget->addItem(itm); + } + + if(curDest!=(int)md->chn) { + str = getStickStr(md->chn); + curDest = md->chn; + } else { + str = " "; + } + + switch (md->mode) { + case (1): str += " <-"; break; + case (2): str += " ->"; break; + default: str += " "; break; + }; + + str += tr("Weight") + getGVarString(md->weight).rightJustified(6, ' '); + if (!GetEepromInterface()->getCapability(ExpoIsCurve)) { + if (md->expo!=0) + str += " " + tr("Expo") + getGVarString(md->expo, true).rightJustified(7, ' '); + } else { + if (md->curveMode==0 && md->curveParam!=0) + str += " " + tr("Expo") + getGVarString(md->curveParam, true).rightJustified(7, ' '); + } + if (GetEepromInterface()->getCapability(FlightPhases)) { + if(md->phases) { + if (md->phases!=(unsigned int)(1<getCapability(FlightPhases))-1) { + int mask=1; + int first=0; + for (int i=0; igetCapability(FlightPhases);i++) { + if (!(md->phases & mask)) { + first++; + } + mask <<=1; + } + if (first>1) { + str += " " + tr("Flight modes") + QString("("); + } else { + str += " " + tr("Flight mode") + QString("("); + } + mask=1; + first=1; + for (int i=0; igetCapability(FlightPhases);i++) { + if (!(md->phases & mask)) { + if (!first) { + str += QString(", ")+ QString("%1").arg(getPhaseName(i+1, model.phaseData[i].name)); + } else { + str += QString("%1").arg(getPhaseName(i+1,model.phaseData[i].name)); + first=0; + } + } + mask <<=1; + } + str += QString(")"); + } else { + str += tr("DISABLED")+QString(" !!!"); + } + } + } + if (md->swtch.type != SWITCH_TYPE_NONE) str += " " + tr("Switch") + QString("(%1)").arg(md->swtch.toString()); + if (md->curveMode) + if (md->curveParam) str += " " + tr("Curve") + QString("(%1)").arg(getCurveStr(md->curveParam)); + if (GetEepromInterface()->getCapability(HasExpoNames)) { + QString ExpoName; + ExpoName.append(md->name); + if (!ExpoName.isEmpty()) { + str+=QString("(%1)").arg(ExpoName); + } + } + qba.clear(); + qba.append((quint8)i); + qba.append((const char*)md, sizeof(ExpoData)); + QListWidgetItem *itm = new QListWidgetItem(str); + itm->setData(Qt::UserRole,qba); // expo number + ExposlistWidget->addItem(itm); //(str); + } + + while(curDestsetData(Qt::UserRole,qba); // add new expo + ExposlistWidget->addItem(itm); + } + + lock = false; +} + + +bool InputsPanel::gm_insertExpo(int idx) +{ + if (idx<0 || idx>=C9X_MAX_EXPOS || model.expoData[C9X_MAX_EXPOS-1].mode > 0) { + QMessageBox::information(this, "companion9x", tr("Not enough available expos!")); + return false; + } + + int chn = model.expoData[idx].chn; + memmove(&model.expoData[idx+1],&model.expoData[idx], + (C9X_MAX_EXPOS-(idx+1))*sizeof(ExpoData) ); + memset(&model.expoData[idx],0,sizeof(ExpoData)); + model.expoData[idx].chn = chn; + model.expoData[idx].weight = 100; + model.expoData[idx].mode = 3 /* TODO enum */; + return true; +} + +void InputsPanel::gm_deleteExpo(int index) +{ + memmove(&model.expoData[index],&model.expoData[index+1], + (C9X_MAX_EXPOS-(index+1))*sizeof(ExpoData)); + memset(&model.expoData[C9X_MAX_EXPOS-1],0,sizeof(ExpoData)); +} + +void InputsPanel::gm_openExpo(int index) +{ + if(index<0 || index>=C9X_MAX_EXPOS) return; + + ExpoData mixd(model.expoData[index]); + emit modified(); + update(); + + ExpoDialog *g = new ExpoDialog(this, &mixd, generalSettings.stickMode); + if(g->exec()) { + model.expoData[index] = mixd; + emit modified(); + update(); + } else { + if (expoInserted) { + gm_deleteExpo(index); + } + expoInserted=false; + emit modified(); + update(); + } +} + +int InputsPanel::getExpoIndex(unsigned int dch) +{ + unsigned int i = 0; + while (model.expoData[i].chn<=dch && model.expoData[i].mode && i InputsPanel::createExpoListFromSelected() +{ + QList list; + foreach(QListWidgetItem *item, ExposlistWidget->selectedItems()) { + int idx= item->data(Qt::UserRole).toByteArray().at(0); + if(idx>=0 && idx list) +{ + for(int i=0; icount(); i++) { + int t = ExposlistWidget->item(i)->data(Qt::UserRole).toByteArray().at(0); + if(list.contains(t)) + ExposlistWidget->item(i)->setSelected(true); + } +} + + +void InputsPanel::exposDelete(bool ask) +{ + QMessageBox::StandardButton ret = QMessageBox::No; + + if(ask) + ret = QMessageBox::warning(this, "companion9x", + tr("Delete Selected Expos?"), + QMessageBox::Yes | QMessageBox::No); + + + if ((ret == QMessageBox::Yes) || (!ask)) { + exposDeleteList(createExpoListFromSelected()); + emit modified(); + update(); + } +} + +void InputsPanel::exposCut() +{ + exposCopy(); + exposDelete(false); +} + +void InputsPanel::exposCopy() +{ + QList list = createExpoListFromSelected(); + + QByteArray mxData; + foreach(int idx, list) { + mxData.append((char*)&model.expoData[idx],sizeof(ExpoData)); + } + + QMimeData *mimeData = new QMimeData; + mimeData->setData("application/x-companion9x-expo", mxData); + QApplication::clipboard()->setMimeData(mimeData,QClipboard::Clipboard); +} + +void InputsPanel::mimeExpoDropped(int index, const QMimeData *data, Qt::DropAction /*action*/) +{ + int idx = ExposlistWidget->item(index > 0 ? index-1 : 0)->data(Qt::UserRole).toByteArray().at(0); + pasteExpoMimeData(data, idx); +} + +#include +#include +void InputsPanel::pasteExpoMimeData(const QMimeData * mimeData, int destIdx) +{ + if (mimeData->hasFormat("application/x-companion9x-expo")) { + int idx; // mixer index + int dch; + + if (destIdx < 0) { + dch = -destIdx - 1; + idx = getExpoIndex(dch) - 1; //get expo index to insert + } else { + idx = destIdx; + dch = model.expoData[idx].chn; + } + + QByteArray mxData = mimeData->data("application/x-companion9x-expo"); + + int i = 0; + while (i < mxData.size()) { + idx++; + if (!gm_insertExpo(idx)) + break; + ExpoData *md = &model.expoData[idx]; + memcpy(md, mxData.mid(i, sizeof(ExpoData)).constData(), sizeof(ExpoData)); + md->chn = dch; + i += sizeof(ExpoData); + } + + emit modified(); + update(); + } +} + + +void InputsPanel::exposPaste() +{ + const QClipboard *clipboard = QApplication::clipboard(); + const QMimeData *mimeData = clipboard->mimeData(); + QListWidgetItem *item = ExposlistWidget->currentItem(); + if (item) + pasteExpoMimeData(mimeData, item->data(Qt::UserRole).toByteArray().at(0)); +} + +void InputsPanel::exposDuplicate() +{ + exposCopy(); + exposPaste(); +} + + +void InputsPanel::expoOpen(QListWidgetItem *item) +{ + if (!item) + item = ExposlistWidget->currentItem(); + + int idx = item->data(Qt::UserRole).toByteArray().at(0); + if (idx<0) { + int ch = -idx-1; + idx = getExpoIndex(ch); // get expo index to insert + if (!gm_insertExpo(idx)) + return; + model.expoData[idx].chn = ch; + expoInserted=true; + } else { + expoInserted=false; + } + gm_openExpo(idx); +} + +void InputsPanel::expoAdd() +{ + int index = ExposlistWidget->currentItem()->data(Qt::UserRole).toByteArray().at(0); + + if(index<0) { // if empty then return relevant index + expoOpen(); + } else { + index++; + if (!gm_insertExpo(index)) + return; + model.expoData[index].chn = model.expoData[index-1].chn; + } + gm_openExpo(index); +} + + +void InputsPanel::expolistWidget_customContextMenuRequested(QPoint pos) +{ + QPoint globalPos = ExposlistWidget->mapToGlobal(pos); + + const QClipboard *clipboard = QApplication::clipboard(); + const QMimeData *mimeData = clipboard->mimeData(); + bool hasData = mimeData->hasFormat("application/x-companion9x-expo"); + + QMenu contextMenu; + contextMenu.addAction(QIcon(":/images/add.png"), tr("&Add"),this,SLOT(expoAdd()),tr("Ctrl+A")); + contextMenu.addAction(QIcon(":/images/edit.png"), tr("&Edit"),this,SLOT(expoOpen()),tr("Enter")); + contextMenu.addSeparator(); + contextMenu.addAction(QIcon(":/images/clear.png"), tr("&Delete"),this,SLOT(exposDelete()),tr("Delete")); + contextMenu.addAction(QIcon(":/images/copy.png"), tr("&Copy"),this,SLOT(exposCopy()),tr("Ctrl+C")); + contextMenu.addAction(QIcon(":/images/cut.png"), tr("&Cut"),this,SLOT(exposCut()),tr("Ctrl+X")); + contextMenu.addAction(QIcon(":/images/paste.png"), tr("&Paste"),this,SLOT(exposPaste()),tr("Ctrl+V"))->setEnabled(hasData); + contextMenu.addAction(QIcon(":/images/duplicate.png"), tr("Du&plicate"),this,SLOT(exposDuplicate()),tr("Ctrl+U")); + contextMenu.addSeparator(); + contextMenu.addAction(QIcon(":/images/moveup.png"), tr("Move Up"),this,SLOT(moveExpoUp()),tr("Ctrl+Up")); + contextMenu.addAction(QIcon(":/images/movedown.png"), tr("Move Down"),this,SLOT(moveExpoDown()),tr("Ctrl+Down")); + + contextMenu.exec(globalPos); +} + + +void InputsPanel::expolistWidget_KeyPress(QKeyEvent *event) +{ + if(event->matches(QKeySequence::SelectAll)) expoAdd(); //Ctrl A + if(event->matches(QKeySequence::Delete)) exposDelete(); + if(event->matches(QKeySequence::Copy)) exposCopy(); + if(event->matches(QKeySequence::Cut)) exposCut(); + if(event->matches(QKeySequence::Paste)) exposPaste(); + if(event->matches(QKeySequence::Underline)) exposDuplicate(); + + if(event->key()==Qt::Key_Return || event->key()==Qt::Key_Enter) expoOpen(); + if(event->matches(QKeySequence::MoveToNextLine)) + ExposlistWidget->setCurrentRow(ExposlistWidget->currentRow()+1); + if(event->matches(QKeySequence::MoveToPreviousLine)) + ExposlistWidget->setCurrentRow(ExposlistWidget->currentRow()-1); +} + + +int InputsPanel::gm_moveExpo(int idx, bool dir) //true=inc=down false=dec=up +{ + if(idx>C9X_MAX_EXPOS || (idx==C9X_MAX_EXPOS && dir)) return idx; + + int tdx = dir ? idx+1 : idx-1; + ExpoData temp; + temp.clear(); + ExpoData &src=model.expoData[idx]; + ExpoData &tgt=model.expoData[tdx]; + if (!dir && tdx<0 && src.chn>0) { + src.chn--; + return idx; + } else if (!dir && tdx<0) { + return idx; + } + + if(memcmp(&src,&temp,sizeof(ExpoData))==0) return idx; + bool tgtempty=(memcmp(&tgt,&temp,sizeof(ExpoData))==0 ? 1:0); + if(tgt.chn!=src.chn || tgtempty) { + if ((dir) && (src.chn<(NUM_STICKS-1))) src.chn++; + if ((!dir) && (src.chn>0)) src.chn--; + return idx; + } + + //flip between idx and tgt + memcpy(&temp,&src,sizeof(ExpoData)); + memcpy(&src,&tgt,sizeof(ExpoData)); + memcpy(&tgt,&temp,sizeof(ExpoData)); + return tdx; +} + +void InputsPanel::moveExpoUp() +{ + QList list = createExpoListFromSelected(); + QList highlightList; + foreach(int idx, list) { + highlightList << gm_moveExpo(idx, false); + } + emit modified(); + update(); + setSelectedByExpoList(highlightList); +} + +void InputsPanel::moveExpoDown() +{ + QList list = createExpoListFromSelected(); + QList highlightList; + foreach(int idx, list) { + highlightList << gm_moveExpo(idx, true); + } + emit modified(); + update(); + setSelectedByExpoList(highlightList); +} + +void InputsPanel::expolistWidget_doubleClicked(QModelIndex index) +{ + expoOpen(ExposlistWidget->item(index.row())); +} + +void InputsPanel::exposDeleteList(QList list) +{ + qSort(list.begin(), list.end()); + + int iDec = 0; + foreach(int idx, list) { + gm_deleteExpo(idx-iDec); + iDec++; + } +} + +void InputsPanel::clearExpos() +{ + if (QMessageBox::question(this, tr("Clear Expos?"), tr("Really clear all the expos?"), QMessageBox::Yes | QMessageBox::No) == QMessageBox::Yes) { + model.clearInputs(); + emit modified(); + update(); + } +} diff --git a/companion/src/modeledit/inputs.h b/companion/src/modeledit/inputs.h new file mode 100644 index 000000000..d4e71ce5d --- /dev/null +++ b/companion/src/modeledit/inputs.h @@ -0,0 +1,50 @@ +#ifndef INPUTS_H +#define INPUTS_H + +#include "modelpanel.h" +#include "mixerslist.h" + +class InputsPanel : public ModelPanel +{ + Q_OBJECT + + public: + InputsPanel(QWidget *parent, ModelData & model, GeneralSettings & generalSettings); + virtual ~InputsPanel(); + + virtual void update(); + + private slots: + void clearExpos(); + void moveExpoUp(); + void moveExpoDown(); + void mimeExpoDropped(int index, const QMimeData *data, Qt::DropAction action); + void expolistWidget_customContextMenuRequested(QPoint pos); + void expolistWidget_doubleClicked(QModelIndex index); + void expolistWidget_KeyPress(QKeyEvent *event); + + private: + GeneralSettings & generalSettings; + bool expoInserted; + MixersList *ExposlistWidget; + + int getExpoIndex(unsigned int dch); + bool gm_insertExpo(int idx); + void gm_deleteExpo(int index); + void gm_openExpo(int index); + int gm_moveExpo(int idx, bool dir); + void exposDeleteList(QList list); + QList createExpoListFromSelected(); + void setSelectedByExpoList(QList list); + void exposDelete(bool ask=true); + void exposCut(); + void exposCopy(); + void exposPaste(); + void exposDuplicate(); + void expoOpen(QListWidgetItem *item = NULL); + void expoAdd(); + void pasteExpoMimeData(const QMimeData * mimeData, int destIdx); + +}; + +#endif // INPUTS_H diff --git a/companion/src/mixerdialog.cpp b/companion/src/modeledit/mixerdialog.cpp similarity index 100% rename from companion/src/mixerdialog.cpp rename to companion/src/modeledit/mixerdialog.cpp diff --git a/companion/src/mixerdialog.h b/companion/src/modeledit/mixerdialog.h similarity index 100% rename from companion/src/mixerdialog.h rename to companion/src/modeledit/mixerdialog.h diff --git a/companion/src/mixerdialog.ui b/companion/src/modeledit/mixerdialog.ui similarity index 100% rename from companion/src/mixerdialog.ui rename to companion/src/modeledit/mixerdialog.ui diff --git a/companion/src/mixerslist.cpp b/companion/src/modeledit/mixerslist.cpp similarity index 100% rename from companion/src/mixerslist.cpp rename to companion/src/modeledit/mixerslist.cpp diff --git a/companion/src/mixerslist.h b/companion/src/modeledit/mixerslist.h similarity index 100% rename from companion/src/mixerslist.h rename to companion/src/modeledit/mixerslist.h diff --git a/companion/src/modeledit/mixes.cpp b/companion/src/modeledit/mixes.cpp new file mode 100644 index 000000000..695e75ff4 --- /dev/null +++ b/companion/src/modeledit/mixes.cpp @@ -0,0 +1,548 @@ +#include "mixes.h" +#include "helpers.h" +// #include +// #include "expodialog.h" + +MixesPanel::MixesPanel(QWidget *parent, ModelData & model, GeneralSettings & generalSettings): + ModelPanel(parent, model), + generalSettings(generalSettings), + mixInserted(false) +{ + QGridLayout * mixesLayout = new QGridLayout(this); + + MixerlistWidget = new MixersList(this, false); // TODO enum + QPushButton * qbUp = new QPushButton(this); + QPushButton * qbDown = new QPushButton(this); + QPushButton * qbClear = new QPushButton(this); + + qbUp->setText(tr("Move Up")); + qbUp->setIcon(QIcon(":/images/moveup.png")); + qbUp->setShortcut(QKeySequence(tr("Ctrl+Up"))); + qbDown->setText(tr("Move Down")); + qbDown->setIcon(QIcon(":/images/movedown.png")); + qbDown->setShortcut(QKeySequence(tr("Ctrl+Down"))); + qbClear->setText(tr("Clear Mixes")); + qbClear->setIcon(QIcon(":/images/clear.png")); + + mixesLayout->addWidget(MixerlistWidget,1,1,1,3); + mixesLayout->addWidget(qbUp,2,1); + mixesLayout->addWidget(qbClear,2,2); + mixesLayout->addWidget(qbDown,2,3); + + connect(MixerlistWidget,SIGNAL(customContextMenuRequested(QPoint)),this,SLOT(mixerlistWidget_customContextMenuRequested(QPoint))); + connect(MixerlistWidget,SIGNAL(doubleClicked(QModelIndex)),this,SLOT(mixerlistWidget_doubleClicked(QModelIndex))); + connect(MixerlistWidget,SIGNAL(mimeDropped(int,const QMimeData*,Qt::DropAction)),this,SLOT(mimeMixerDropped(int,const QMimeData*,Qt::DropAction))); + + connect(qbUp,SIGNAL(pressed()),SLOT(moveMixUp())); + connect(qbDown,SIGNAL(pressed()),SLOT(moveMixDown())); + connect(qbClear,SIGNAL(pressed()),SLOT(clearMixes())); + + connect(MixerlistWidget,SIGNAL(keyWasPressed(QKeyEvent*)), this, SLOT(mixerlistWidget_KeyPress(QKeyEvent*))); +} + +MixesPanel::~MixesPanel() +{ +} + +void MixesPanel::update() +{ + // curDest -> destination channel4 + // i -> mixer number + QByteArray qba; + MixerlistWidget->clear(); + unsigned int curDest = 0; + int i; + unsigned int outputs = GetEepromInterface()->getCapability(Outputs); + int showNames = false; // TODO in a menu ui->showNames_Ckb->isChecked(); + for(i=0; igetCapability(Mixes); i++) { + MixData *md = &model.mixData[i]; + if ((md->destCh==0) || (md->destCh>outputs+(unsigned int)GetEepromInterface()->getCapability(ExtraChannels))) continue; + QString str = ""; + while(curDest<(md->destCh-1)) { + curDest++; + if (curDest > outputs) { + str = tr("X%1 ").arg(curDest-outputs); + } else { + str = tr("CH%1%2").arg(curDest/10).arg(curDest%10); + if (GetEepromInterface()->getCapability(HasChNames) && showNames) { + QString name=model.limitData[curDest-1].name; + if (!name.isEmpty()) { + name.append(" "); + str=name.left(6); + } + } + } + qba.clear(); + qba.append((quint8)-curDest); + QListWidgetItem *itm = new QListWidgetItem(str); + itm->setData(Qt::UserRole,qba); + MixerlistWidget->addItem(itm); + } + + if (md->destCh > outputs) { + str = tr("X%1 ").arg(md->destCh-outputs); + } else { + str = tr("CH%1%2").arg(md->destCh/10).arg(md->destCh%10); + str.append(" "); + if (GetEepromInterface()->getCapability(HasChNames) && showNames) { + QString name=model.limitData[md->destCh-1].name; + if (!name.isEmpty()) { + name.append(" "); + str=name.left(6); + } + } + } + if (curDest != md->destCh) { + curDest = md->destCh; + } else { + str.fill(' '); + } + + switch(md->mltpx) { + case (1): str += " *"; break; + case (2): str += " R"; break; + default: str += " "; break; + }; + + str += " " + getGVarString(md->weight, true).rightJustified(6, ' '); + str += md->srcRaw.toString(); + unsigned int fpCount = GetEepromInterface()->getCapability(FlightPhases); + if (GetEepromInterface()->getCapability(FlightPhases)) { + if(md->phases) { + if (md->phases!=(unsigned int)(1<phases & mask)) { + first++; + } + mask <<=1; + } + if (first>1) { + str += " " + tr("Flight modes") + QString("("); + } else { + str += " " + tr("Flight mode") + QString("("); + } + mask=1; + first=1; + for (unsigned int i=0; iphases & mask)) { + if (!first) { + str += QString(", ")+ QString("%1").arg(getPhaseName(i+1, model.phaseData[i].name)); + } + else { + str += QString("%1").arg(getPhaseName(i+1,model.phaseData[i].name)); + first=0; + } + } + mask <<=1; + } + str += QString(")"); + } else { + str += tr("DISABLED")+QString(" !!!"); + } + } + } + if(md->swtch.type != SWITCH_TYPE_NONE) str += " " + tr("Switch") + QString("(%1)").arg(md->swtch.toString()); + if(md->carryTrim>0) { + str += " " +tr("No Trim"); + } else if (md->carryTrim<0) { + str += " " + RawSource(SOURCE_TYPE_TRIM, (-(md->carryTrim)-1)).toString(); + } + if(md->noExpo) { + str += " " +tr("No DR/Expo"); + } + if (GetEepromInterface()->getCapability(MixFmTrim) && md->enableFmTrim==1) { + if (md->sOffset) str += " " + tr("FMTrim") + QString("(%1%)").arg(md->sOffset); + } else { + if (md->sOffset) str += " " + tr("Offset") + getGVarString(md->sOffset); + } + if (md->differential) str += " " + tr("Diff") + getGVarString(md->differential); + if (md->curve) str += " " + tr("Curve") + QString("(%1)").arg(getCurveStr(md->curve)); + int scale=GetEepromInterface()->getCapability(SlowScale); + if (scale==0) + scale=1; + if (md->delayDown || md->delayUp) + str += tr(" Delay(u%1:d%2)").arg((double)md->delayUp/scale).arg((double)md->delayDown/scale); + if (md->speedDown || md->speedUp) + str += tr(" Slow(u%1:d%2)").arg((double)md->speedUp/scale).arg((double)md->speedDown/scale); + if (md->mixWarn) str += tr(" Warn(%1)").arg(md->mixWarn); + if (GetEepromInterface()->getCapability(HasMixerNames)) { + QString MixerName; + MixerName.append(md->name); + if (!MixerName.isEmpty()) { + str+=QString("(%1)").arg(MixerName); + } + } + qba.clear(); + qba.append((quint8)i); + qba.append((const char*)md, sizeof(MixData)); + QListWidgetItem *itm = new QListWidgetItem(str); + itm->setData(Qt::UserRole,qba); // mix number + MixerlistWidget->addItem(itm);//(str); + } + + while(curDestgetCapability(ExtraChannels)) { + curDest++; + QString str; + + if (curDest > outputs) { + str = tr("X%1 ").arg(curDest-outputs); + } else { + str = tr("CH%1%2").arg(curDest/10).arg(curDest%10); + if (GetEepromInterface()->getCapability(HasChNames) && showNames) { + QString name=model.limitData[curDest-1].name; + if (!name.isEmpty()) { + name.append(" "); + str=name.left(6); + } + } + } + qba.clear(); + qba.append((quint8)-curDest); + QListWidgetItem *itm = new QListWidgetItem(str); + itm->setData(Qt::UserRole,qba); // add new mixer + MixerlistWidget->addItem(itm); + } +} + + +bool MixesPanel::gm_insertMix(int idx) +{ + if (idx<0 || idx>=GetEepromInterface()->getCapability(Mixes) || model.mixData[GetEepromInterface()->getCapability(Mixes)-1].destCh > 0) { + QMessageBox::information(this, "companion9x", tr("Not enough available mixers!")); + return false; + } + + int i = model.mixData[idx].destCh; + memmove(&model.mixData[idx+1],&model.mixData[idx], + (GetEepromInterface()->getCapability(Mixes)-(idx+1))*sizeof(MixData) ); + memset(&model.mixData[idx],0,sizeof(MixData)); + model.mixData[idx].srcRaw = RawSource(SOURCE_TYPE_NONE); + model.mixData[idx].destCh = i; + model.mixData[idx].weight = 100; + return true; +} + +void MixesPanel::gm_deleteMix(int index) +{ + memmove(&model.mixData[index],&model.mixData[index+1], + (GetEepromInterface()->getCapability(Mixes)-(index+1))*sizeof(MixData)); + memset(&model.mixData[GetEepromInterface()->getCapability(Mixes)-1],0,sizeof(MixData)); +} + +void MixesPanel::gm_openMix(int index) +{ + if(index<0 || index>=GetEepromInterface()->getCapability(Mixes)) return; + + MixData mixd(model.mixData[index]); + emit modified(); + update(); + + MixerDialog *g = new MixerDialog(this, &mixd, generalSettings.stickMode); + if(g->exec()) { + model.mixData[index] = mixd; + emit modified(); + update(); + } else { + if (mixInserted) { + gm_deleteMix(index); + } + mixInserted=false; + emit modified(); + update(); + } +} + +int MixesPanel::getMixerIndex(unsigned int dch) +{ + int i = 0; + while ((model.mixData[i].destCh<=dch) && (model.mixData[i].destCh) && (igetCapability(Mixes))) i++; + if(i==GetEepromInterface()->getCapability(Mixes)) return -1; + return i; +} + +void MixesPanel::mixerlistWidget_doubleClicked(QModelIndex index) +{ + int idx= MixerlistWidget->item(index.row())->data(Qt::UserRole).toByteArray().at(0); + if (idx<0) { + int i = -idx; + idx = getMixerIndex(i); //get mixer index to insert + if (!gm_insertMix(idx)) + return; + model.mixData[idx].destCh = i; + mixInserted=true; + } else { + mixInserted=false; + } + gm_openMix(idx); +} + +void MixesPanel::mixersDeleteList(QList list) +{ + qSort(list.begin(), list.end()); + + int iDec = 0; + foreach(int idx, list) { + gm_deleteMix(idx-iDec); + iDec++; + } +} + +QList MixesPanel::createMixListFromSelected() +{ + QList list; + foreach(QListWidgetItem *item, MixerlistWidget->selectedItems()) { + int idx= item->data(Qt::UserRole).toByteArray().at(0); + if(idx>=0 && idxgetCapability(Mixes)) list << idx; + } + return list; +} + +// TODO duplicated code +void MixesPanel::setSelectedByMixList(QList list) +{ + for(int i=0; icount(); i++) { + int t = MixerlistWidget->item(i)->data(Qt::UserRole).toByteArray().at(0); + if(list.contains(t)) + MixerlistWidget->item(i)->setSelected(true); + } +} + + +void MixesPanel::mixersDelete(bool ask) +{ + QMessageBox::StandardButton ret = QMessageBox::No; + + if(ask) + ret = QMessageBox::warning(this, "companion9x", + tr("Delete Selected Mixes?"), + QMessageBox::Yes | QMessageBox::No); + + + if ((ret == QMessageBox::Yes) || (!ask)) { + mixersDeleteList(createMixListFromSelected()); + emit modified(); + update(); + } +} + +void MixesPanel::mixersCut() +{ + mixersCopy(); + mixersDelete(false); +} + +void MixesPanel::mixersCopy() +{ + + QList list = createMixListFromSelected(); + + QByteArray mxData; + foreach(int idx, list) { + mxData.append((char*)&model.mixData[idx],sizeof(MixData)); + } + + QMimeData *mimeData = new QMimeData; + mimeData->setData("application/x-companion9x-mix", mxData); + QApplication::clipboard()->setMimeData(mimeData,QClipboard::Clipboard); +} + +void MixesPanel::pasteMixerMimeData(const QMimeData * mimeData, int destIdx) +{ + if(mimeData->hasFormat("application/x-companion9x-mix")) { + int idx; // mixer index + int dch; + + if(destIdx<0) { + dch = -destIdx; + idx = getMixerIndex(dch) - 1; //get mixer index to insert + } else { + idx = destIdx; + dch = model.mixData[idx].destCh; + } + + QByteArray mxData = mimeData->data("application/x-companion9x-mix"); + + int i = 0; + while(igetCapability(Mixes)) break; + + if (!gm_insertMix(idx)) + break; + MixData *md = &model.mixData[idx]; + memcpy(md,mxData.mid(i,sizeof(MixData)).constData(),sizeof(MixData)); + md->destCh = dch; + i += sizeof(MixData); + } + + emit modified(); + update(); + } +} + + +void MixesPanel::mixersPaste() +{ + const QClipboard *clipboard = QApplication::clipboard(); + const QMimeData *mimeData = clipboard->mimeData(); + QListWidgetItem *item = MixerlistWidget->currentItem(); + if (item) + pasteMixerMimeData(mimeData, item->data(Qt::UserRole).toByteArray().at(0)); +} + +void MixesPanel::mixersDuplicate() +{ + mixersCopy(); + mixersPaste(); +} + +void MixesPanel::mixerOpen() +{ + int idx = MixerlistWidget->currentItem()->data(Qt::UserRole).toByteArray().at(0); + if(idx<0) { + int i = -idx; + idx = getMixerIndex(i); //get mixer index to insert + if (!gm_insertMix(idx)) + return; + model.mixData[idx].destCh = i; + mixInserted=true; + } else { + mixInserted=false; + } + + gm_openMix(idx); +} + +void MixesPanel::mixerAdd() +{ + if (!MixerlistWidget->currentItem()) + return; + int index = MixerlistWidget->currentItem()->data(Qt::UserRole).toByteArray().at(0); + + if(index<0) { // if empty then return relavent index + int i = -index; + index = getMixerIndex(i); //get mixer index to insert + if (!gm_insertMix(index)) + return; + model.mixData[index].destCh = i; + mixInserted=true; + } else { + index++; + if (!gm_insertMix(index)) + return; + model.mixData[index].destCh = model.mixData[index-1].destCh; + mixInserted=true; + } + gm_openMix(index); +} + +void MixesPanel::mixerlistWidget_customContextMenuRequested(QPoint pos) +{ + QPoint globalPos = MixerlistWidget->mapToGlobal(pos); + + const QClipboard *clipboard = QApplication::clipboard(); + const QMimeData *mimeData = clipboard->mimeData(); + bool hasData = mimeData->hasFormat("application/x-companion9x-mix"); + + QMenu contextMenu; + contextMenu.addAction(QIcon(":/images/add.png"), tr("&Add"),this,SLOT(mixerAdd()),tr("Ctrl+A")); + contextMenu.addAction(QIcon(":/images/edit.png"), tr("&Edit"),this,SLOT(mixerOpen()),tr("Enter")); + contextMenu.addSeparator(); + contextMenu.addAction(QIcon(":/images/clear.png"), tr("&Delete"),this,SLOT(mixersDelete()),tr("Delete")); + contextMenu.addAction(QIcon(":/images/copy.png"), tr("&Copy"),this,SLOT(mixersCopy()),tr("Ctrl+C")); + contextMenu.addAction(QIcon(":/images/cut.png"), tr("&Cut"),this,SLOT(mixersCut()),tr("Ctrl+X")); + contextMenu.addAction(QIcon(":/images/paste.png"), tr("&Paste"),this,SLOT(mixersPaste()),tr("Ctrl+V"))->setEnabled(hasData); + contextMenu.addAction(QIcon(":/images/duplicate.png"), tr("Du&plicate"),this,SLOT(mixersDuplicate()),tr("Ctrl+U")); + contextMenu.addSeparator(); + contextMenu.addAction(QIcon(":/images/moveup.png"), tr("Move Up"),this,SLOT(moveMixUp()),tr("Ctrl+Up")); + contextMenu.addAction(QIcon(":/images/movedown.png"), tr("Move Down"),this,SLOT(moveMixDown()),tr("Ctrl+Down")); + + contextMenu.exec(globalPos); +} + +void MixesPanel::mimeMixerDropped(int index, const QMimeData *data, Qt::DropAction /*action*/) +{ + int idx= MixerlistWidget->item(index > 0 ? index-1 : 0)->data(Qt::UserRole).toByteArray().at(0); + pasteMixerMimeData(data, idx); +} + +void MixesPanel::mixesEdited() +{ + emit modified(); +} + +void MixesPanel::mixerlistWidget_KeyPress(QKeyEvent *event) +{ + if(event->matches(QKeySequence::SelectAll)) mixerAdd(); //Ctrl A + if(event->matches(QKeySequence::Delete)) mixersDelete(); + if(event->matches(QKeySequence::Copy)) mixersCopy(); + if(event->matches(QKeySequence::Cut)) mixersCut(); + if(event->matches(QKeySequence::Paste)) mixersPaste(); + if(event->matches(QKeySequence::Underline)) mixersDuplicate(); + + if(event->key()==Qt::Key_Return || event->key()==Qt::Key_Enter) mixerOpen(); + if(event->matches(QKeySequence::MoveToNextLine)) + MixerlistWidget->setCurrentRow(MixerlistWidget->currentRow()+1); + if(event->matches(QKeySequence::MoveToPreviousLine)) + MixerlistWidget->setCurrentRow(MixerlistWidget->currentRow()-1); +} + +int MixesPanel::gm_moveMix(int idx, bool dir) //true=inc=down false=dec=up +{ + if(idx>GetEepromInterface()->getCapability(Mixes) || (idx==0 && !dir) || (idx==GetEepromInterface()->getCapability(Mixes) && dir)) return idx; + + int tdx = dir ? idx+1 : idx-1; + MixData &src=model.mixData[idx]; + MixData &tgt=model.mixData[tdx]; + + unsigned int outputs = GetEepromInterface()->getCapability(Outputs); + if((src.destCh==0) || (src.destCh>outputs) || (tgt.destCh>outputs)) return idx; + + if (tgt.destCh!=src.destCh) { + if ((dir) && (src.destCh0)) src.destCh--; + return idx; + } + + //flip between idx and tgt + MixData temp; + memcpy(&temp,&src,sizeof(MixData)); + memcpy(&src,&tgt,sizeof(MixData)); + memcpy(&tgt,&temp,sizeof(MixData)); + return tdx; +} + +void MixesPanel::moveMixUp() +{ + QList list = createMixListFromSelected(); + QList highlightList; + foreach(int idx, list) { + highlightList << gm_moveMix(idx, false); + } + emit modified(); + update(); + setSelectedByMixList(highlightList); +} + +void MixesPanel::moveMixDown() +{ + QList list = createMixListFromSelected(); + QList highlightList; + foreach(int idx, list) { + highlightList << gm_moveMix(idx, true); + } + emit modified(); + update(); + setSelectedByMixList(highlightList); +} + +void MixesPanel::clearMixes() +{ + if (QMessageBox::question(this, tr("Clear Mixes?"), tr("Really clear all the mixes?"), QMessageBox::Yes | QMessageBox::No) == QMessageBox::Yes) { + model.clearMixes(); + emit modified(); + update(); + } +} diff --git a/companion/src/modeledit/mixes.h b/companion/src/modeledit/mixes.h new file mode 100644 index 000000000..5e5dc4e80 --- /dev/null +++ b/companion/src/modeledit/mixes.h @@ -0,0 +1,56 @@ +#ifndef MIXES_H +#define MIXES_H + +#include "modelpanel.h" +#include "mixerslist.h" +#include "mixerdialog.h" + +class MixesPanel : public ModelPanel +{ + Q_OBJECT + + public: + MixesPanel(QWidget *parent, ModelData & model, GeneralSettings & generalSettings); + virtual ~MixesPanel(); + + virtual void update(); + + private slots: + // TODO all slots? + void clearMixes(); + void mixersDelete(bool ask=true); + void mixersCut(); + void mixersCopy(); + void mixersPaste(); + void mixersDuplicate(); + void mixerOpen(); + void mixerAdd(); + void moveMixUp(); + void moveMixDown(); + + void mixerlistWidget_customContextMenuRequested(QPoint pos); + void mixerlistWidget_doubleClicked(QModelIndex index); + void mixerlistWidget_KeyPress(QKeyEvent *event); + + void mimeMixerDropped(int index, const QMimeData *data, Qt::DropAction action); + void pasteMixerMimeData(const QMimeData * mimeData, int destIdx); + + void mixesEdited(); + + private: + GeneralSettings & generalSettings; + MixersList *MixerlistWidget; + bool mixInserted; + + int getMixerIndex(unsigned int dch); + bool gm_insertMix(int idx); + void gm_deleteMix(int index); + void gm_openMix(int index); + int gm_moveMix(int idx, bool dir); + void mixersDeleteList(QList list); + QList createMixListFromSelected(); + void setSelectedByMixList(QList list); + +}; + +#endif // MIXES_H diff --git a/companion/src/modeledit/modeledit.cpp b/companion/src/modeledit/modeledit.cpp new file mode 100644 index 000000000..fcdc68108 --- /dev/null +++ b/companion/src/modeledit/modeledit.cpp @@ -0,0 +1,130 @@ +#include "modeledit.h" +#include "ui_modeledit.h" +#include "setup.h" +#include "heli.h" +#include "flightmodes.h" +#include "inputs.h" +#include "mixes.h" +#include "channels.h" +#include "curves.h" +#include "customswitches.h" +#include "customfunctions.h" +#include "telemetry.h" +#include + +ModelEdit::ModelEdit(RadioData & radioData, int modelId, bool openWizard, bool isNew, QWidget *parent) : + QDialog(parent), + ui(new Ui::ModelEdit), + modelId(modelId), + model(radioData.models[modelId]), + generalSettings(generalSettings) +{ + ui->setupUi(this); + addTab(new Setup(this, model), tr("Setup")); + addTab(new HeliPanel(this, model), tr("Heli")); + addTab(new FlightModes(this, model, radioData.generalSettings), tr("Flight Modes")); + addTab(new InputsPanel(this, model, radioData.generalSettings), tr("Inputs")); + addTab(new MixesPanel(this, model, radioData.generalSettings), tr("Mixes")); + addTab(new Channels(this, model), tr("Channels")); + addTab(new CustomSwitchesPanel(this, model), tr("Custom Switches")); + if (GetEepromInterface()->getCapability(CustomFunctions)) + addTab(new CustomFunctionsPanel(this, model, radioData.generalSettings), tr("Assignable Functions")); + addTab(new Curves(this, model), tr("Curves")); + // TODO remove this capability if (!GetEepromInterface()->getCapability(FSSwitch)) + if (GetEepromInterface()->getCapability(Telemetry) & TM_HASTELEMETRY) + addTab(new TelemetryPanel(this, model), tr("Telemetry")); +} + +ModelEdit::~ModelEdit() +{ + delete ui; +} + +class VerticalScrollArea : public QScrollArea +{ + public: + VerticalScrollArea(QWidget * parent, ModelPanel * panel); + + protected: + virtual bool eventFilter(QObject *o, QEvent *e); + + private: + ModelPanel * panel; + QWidget * parent; +}; + +VerticalScrollArea::VerticalScrollArea(QWidget * parent, ModelPanel * panel): + QScrollArea(parent), + panel(panel), + parent(parent) +{ + setWidgetResizable(true); + setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + setWidget(panel); + panel->installEventFilter(this); +} + +bool VerticalScrollArea::eventFilter(QObject *o, QEvent *e) +{ + if (o == panel && e->type() == QEvent::Resize) { + setMinimumWidth(panel->minimumSizeHint().width() + verticalScrollBar()->width()); + } + return false; +} + +void ModelEdit::addTab(ModelPanel *panel, QString text) +{ + panels << panel; + QWidget * widget = new QWidget(ui->tabWidget); + QVBoxLayout *baseLayout = new QVBoxLayout(widget); + VerticalScrollArea * area = new VerticalScrollArea(widget, panel); + baseLayout->addWidget(area); + ui->tabWidget->addTab(widget, text); + connect(panel, SIGNAL(modified()), this, SLOT(onTabModified())); +} + +void ModelEdit::onTabModified() +{ + emit modified(); +} + +void ModelEdit::on_tabWidget_currentChanged(int index) +{ + panels[index]->update(); +} + +void ModelEdit::on_pushButton_clicked() +{ + launchSimulation(); +} + +// TODO merge both +#include "simulatordialog.h" +#include "xsimulatordialog.h" + +void ModelEdit::launchSimulation() +{ + if (GetEepromInterface()->getSimulator()) { + RadioData *simuData = new RadioData(); + simuData->generalSettings = generalSettings; + simuData->models[modelId] = model; + if (GetEepromInterface()->getCapability(SimulatorType)) { + xsimulatorDialog sd(this); + sd.loadParams(*simuData, modelId); + sd.exec(); + } + else { + simulatorDialog sd(this); + sd.loadParams(*simuData, modelId); + sd.exec(); + } + delete simuData; + } + else { + QMessageBox::warning(NULL, + QObject::tr("Warning"), + QObject::tr("Simulator for this firmware is not yet available")); + } +} + + diff --git a/companion/src/modeledit/modeledit.h b/companion/src/modeledit/modeledit.h new file mode 100644 index 000000000..4208a7190 --- /dev/null +++ b/companion/src/modeledit/modeledit.h @@ -0,0 +1,39 @@ +#ifndef MODELEDIT_H +#define MODELEDIT_H + +#include +#include "modelpanel.h" + +namespace Ui { + class ModelEdit; +} + +class ModelEdit : public QDialog +{ + Q_OBJECT + + public: + explicit ModelEdit(RadioData & radioData, int modelId , bool openWizard =false, bool inNew =false, QWidget *parent = 0); + ~ModelEdit(); + + signals: + void modified(); + + private slots: + void onTabModified(); + void on_pushButton_clicked(); + void on_tabWidget_currentChanged(int index); + + private: + Ui::ModelEdit *ui; + int modelId; + ModelData & model; + GeneralSettings & generalSettings; + QVector panels; + + void addTab(ModelPanel *panel, QString text); + void launchSimulation(); + +}; + +#endif // MODELEDIT_H diff --git a/companion/src/modeledit/modeledit.ui b/companion/src/modeledit/modeledit.ui new file mode 100644 index 000000000..a4ac2fa1e --- /dev/null +++ b/companion/src/modeledit/modeledit.ui @@ -0,0 +1,67 @@ + + + ModelEdit + + + + 0 + 0 + 339 + 385 + + + + + 0 + 0 + + + + Dialog + + + + :/icon.png:/icon.png + + + true + + + + + + QLayout::SetMinimumSize + + + + + true + + + QTabWidget::North + + + -1 + + + + + + + Simulate + + + + :/images/simulate.png:/images/simulate.png + + + + + + + + + + + + diff --git a/companion/src/modeledit/modelpanel.cpp b/companion/src/modeledit/modelpanel.cpp new file mode 100644 index 000000000..b4c257aba --- /dev/null +++ b/companion/src/modeledit/modelpanel.cpp @@ -0,0 +1,30 @@ +#include "modelpanel.h" +#include + +ModelPanel::ModelPanel(QWidget * parent, ModelData & model): + QWidget(parent), + model(model), + lock(false) +{ +} + +ModelPanel::~ModelPanel() +{ +} + +void ModelPanel::update() +{ +} + +void ModelPanel::addLabel(QGridLayout * gridLayout, QString text, int col) +{ + QLabel *label = new QLabel(this); + label->setFrameShape(QFrame::Panel); + label->setFrameShadow(QFrame::Raised); + label->setMidLineWidth(0); + label->setAlignment(Qt::AlignCenter); + label->setMargin(3); + label->setText(text); + gridLayout->addWidget(label, 0, col, 1, 1); +} + diff --git a/companion/src/modeledit/modelpanel.h b/companion/src/modeledit/modelpanel.h new file mode 100644 index 000000000..8e37010dd --- /dev/null +++ b/companion/src/modeledit/modelpanel.h @@ -0,0 +1,29 @@ +#ifndef MODELPANEL_H +#define MODELPANEL_H + +#include +#include +#include "eeprominterface.h" + +class ModelPanel : public QWidget +{ + Q_OBJECT + + public: + ModelPanel(QWidget *parent, ModelData & model); + virtual ~ModelPanel(); + + signals: + void modified(); + + public slots: + virtual void update(); + + protected: + ModelData & model; + bool lock; + void addLabel(QGridLayout * gridLayout, QString text, int col); + +}; + +#endif // CHANNELS_H diff --git a/companion/src/node.cpp b/companion/src/modeledit/node.cpp similarity index 74% rename from companion/src/node.cpp rename to companion/src/modeledit/node.cpp index 66fa209b1..b421490f9 100644 --- a/companion/src/node.cpp +++ b/companion/src/modeledit/node.cpp @@ -46,32 +46,28 @@ #include "edge.h" #include "node.h" -#include "modeledit.h" -Node::Node(QSpinBox *sb,QSpinBox *sbx) +Node::Node(): + minX(-100), + maxX(+100) { - setFlag(ItemIsMovable); - setFlag(ItemSendsGeometryChanges); - setCacheMode(DeviceCoordinateCache); - setZValue(-1); - nodecolor = QColor(Qt::yellow); - qsb = sb; - qsbx = sbx; - bPressed = false; - centerX = true; - centerY = true; - fixedX = false; - fixedY = false; - ballSize = DEFAULT_BALL_SIZE; - minX=-100; - maxX=100; - + setFlag(ItemIsMovable); + setFlag(ItemSendsGeometryChanges); + setCacheMode(DeviceCoordinateCache); + setZValue(-1); + nodecolor = QColor(Qt::yellow); + bPressed = false; + centerX = true; + centerY = true; + fixedX = false; + fixedY = false; + ballSize = DEFAULT_BALL_SIZE; } void Node::addEdge(Edge *edge) { - edgeList << edge; - edge->adjust(); + edgeList << edge; + edge->adjust(); } void Node::stepToCenter(qreal step) @@ -105,7 +101,7 @@ void Node::stepToCenter(qreal step) } -void Node::setColor(QColor color) +void Node::setColor(const QColor & color) { nodecolor=color; } @@ -190,26 +186,23 @@ QVariant Node::itemChange(GraphicsItemChange change, const QVariant &value) if(fixedY) newPos.setY(y());//make sure x doesn't change newPos.setX(qMin(rect.right(), qMax(newPos.x(), rect.left())));// bound X newPos.setY(qMin(rect.bottom(), qMax(newPos.y(), rect.top())));// bound Y - if (qsb) { - ModelEdit* modeledit = qobject_cast(qsb->parent()->parent()->parent()->parent()->parent()->parent()->parent()); - modeledit->redrawCurve = false; - qsb->setValue(100+(rect.top()-y())*200/rect.height()); - if (qsbx && !getFixedX()) { - int newX = -100 + ( (newPos.x()-rect.left()) * 200) / rect.width(); - if (newX < minX) newX = minX; - if (newX > maxX) newX = maxX; - newPos.setX(((newX+100)*rect.width()/200+rect.left())); - qsbx->setValue(newX); - } - modeledit->redrawCurve = true; + + int newX = -100 + ( (newPos.x()-rect.left()) * 200) / rect.width(); + int newY = 100+(rect.top()-y())*200/rect.height(); + if (newX < minX) newX = minX; + if (newX > maxX) newX = maxX; + + if (!getFixedX()) { + newPos.setX(((newX+100)*rect.width()/200+rect.left())); } + + emit moved(newX, newY); return newPos; } break; case ItemPositionHasChanged: - foreach (Edge *edge, edgeList) - edge->adjust(); + edge->adjust(); break; default: break; @@ -222,25 +215,19 @@ void Node::mousePressEvent(QGraphicsSceneMouseEvent *event) { update(); bPressed = true; - if(qsb) qsb->setFocus(); QGraphicsItem::mousePressEvent(event); + emit focus(); } void Node::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) { update(); bPressed = false; - if(scene()) { - if(qsb) { - qsb->clearFocus(); - ModelEdit* modeledit = qobject_cast(qsb->parent()->parent()->parent()->parent()->parent()->parent()->parent()); - QGraphicsItem::mouseReleaseEvent(event); - modeledit->drawCurve(); - } else { - QGraphicsItem::mouseReleaseEvent(event); - } - //need to tell SB that it needs to write the value - } else { + if (scene()) { + QGraphicsItem::mouseReleaseEvent(event); + emit unfocus(); + } + else { QGraphicsItem::mouseReleaseEvent(event); } } diff --git a/companion/src/node.h b/companion/src/modeledit/node.h similarity index 91% rename from companion/src/node.h rename to companion/src/modeledit/node.h index 7d33f111f..9bc699cb6 100644 --- a/companion/src/node.h +++ b/companion/src/modeledit/node.h @@ -52,11 +52,12 @@ QT_BEGIN_NAMESPACE class QGraphicsSceneMouseEvent; QT_END_NAMESPACE -class Node : public QGraphicsItem +class Node : public QGraphicsObject { + Q_OBJECT -public: - Node(QSpinBox *sb = 0, QSpinBox *sbx = 0); + public: + Node(); void addEdge(Edge *edge); QList edges() const; @@ -80,16 +81,19 @@ public: bool getFixedY() {return fixedY;} void setMinX(int val) {minX = val;}; void setMaxX(int val) {maxX = val;}; - void setColor(QColor color); + void setColor(const QColor & color); -protected: - QVariant itemChange(GraphicsItemChange change, const QVariant &value); + signals: + void moved(int x, int y); + void focus(); + void unfocus(); + protected: + QVariant itemChange(GraphicsItemChange change, const QVariant &value); void mousePressEvent(QGraphicsSceneMouseEvent *event); void mouseReleaseEvent(QGraphicsSceneMouseEvent *event); -private: - + private: bool bPressed; bool centerX; bool centerY; @@ -98,8 +102,6 @@ private: int ballSize; int minX; int maxX; - QSpinBox *qsb; - QSpinBox *qsbx; QList edgeList; QPointF newPos; QColor nodecolor; diff --git a/companion/src/modeledit/setup.cpp b/companion/src/modeledit/setup.cpp new file mode 100644 index 000000000..68ea23242 --- /dev/null +++ b/companion/src/modeledit/setup.cpp @@ -0,0 +1,1492 @@ +#include "setup.h" +#include "ui_setup.h" +#include "helpers.h" + +Setup::Setup(QWidget *parent, ModelData & model): + ModelPanel(parent, model), + ui(new Ui::Setup) +{ + ui->setupUi(this); + tabModelEditSetup(); +} + +Setup::~Setup() +{ + delete ui; +} + +void Setup::tabModelEditSetup() +{ + lock = true; + //name + QLabel * pmsl[] = {ui->swwarn_label, ui->swwarn0_label, ui->swwarn4_label, NULL}; + QCheckBox * pmchkb[] = {ui->swwarn1_ChkB,ui->swwarn2_ChkB,ui->swwarn3_ChkB,ui->swwarn5_ChkB,ui->swwarn6_ChkB, NULL}; + QSlider * tpmsld[] = {ui->chkSA, ui->chkSB, ui->chkSC, ui->chkSD, ui->chkSE, ui->chkSF, ui->chkSG, NULL}; + QSlider * fssld1[] = { ui->fsm1SL_1, ui->fsm1SL_2,ui->fsm1SL_3,ui->fsm1SL_4,ui->fsm1SL_5,ui->fsm1SL_6,ui->fsm1SL_7,ui->fsm1SL_8, + ui->fsm1SL_9, ui->fsm1SL_10,ui->fsm1SL_11,ui->fsm1SL_12,ui->fsm1SL_13,ui->fsm1SL_14,ui->fsm1SL_15,ui->fsm1SL_16, NULL }; + QSlider * fssld2[] = { ui->fsm2SL_1, ui->fsm2SL_2,ui->fsm2SL_3,ui->fsm2SL_4,ui->fsm2SL_5,ui->fsm2SL_6,ui->fsm2SL_7,ui->fsm2SL_8, + ui->fsm2SL_9, ui->fsm2SL_10,ui->fsm2SL_11,ui->fsm2SL_12,ui->fsm2SL_13,ui->fsm2SL_14,ui->fsm2SL_15,ui->fsm2SL_16, NULL }; + QSpinBox * fssb1[] = { ui->fsm1SB_1, ui->fsm1SB_2,ui->fsm1SB_3,ui->fsm1SB_4,ui->fsm1SB_5,ui->fsm1SB_6,ui->fsm1SB_7,ui->fsm1SB_8, + ui->fsm1SB_9, ui->fsm1SB_10,ui->fsm1SB_11,ui->fsm1SB_12,ui->fsm1SB_13,ui->fsm1SB_14,ui->fsm1SB_15,ui->fsm1SB_16, NULL }; + QSpinBox * fssb2[] = { ui->fsm2SB_1, ui->fsm2SB_2,ui->fsm2SB_3,ui->fsm2SB_4,ui->fsm2SB_5,ui->fsm2SB_6,ui->fsm2SB_7,ui->fsm2SB_8, + ui->fsm2SB_9, ui->fsm2SB_10,ui->fsm2SB_11,ui->fsm2SB_12,ui->fsm2SB_13,ui->fsm2SB_14,ui->fsm2SB_15,ui->fsm2SB_16, NULL }; + if (IS_TARANIS(GetEepromInterface()->getBoard())) { + ui->modelNameLE->setMaxLength(12); + } else { + ui->modelNameLE->setMaxLength(10); + } + ui->modelNameLE->setText(model.name); + + if (GetEepromInterface()->getCapability(NumModules)<2) { + ui->rf2_GB->hide(); + } + + if (!GetEepromInterface()->getCapability(HasFailsafe)) { + ui->FSGB_1->hide(); + ui->FSGB_2->hide(); + ui->ModelSetupTab->setTabEnabled(1,0); + } else { + if (GetEepromInterface()->getCapability(HasFailsafe)<32) { + ui->FSGB_2->hide(); + } + + for (int i=0; fssld1[i]; i++) { + fssld1[i]->setValue(model.moduleData[0].failsafeChannels[i]); + fssld2[i]->setValue(model.moduleData[1].failsafeChannels[i]); + fssb1[i]->setValue(model.moduleData[0].failsafeChannels[i]); + fssb2[i]->setValue(model.moduleData[1].failsafeChannels[i]); + connect(fssld1[i],SIGNAL(valueChanged(int)),this,SLOT(fssldValueChanged())); + connect(fssld2[i],SIGNAL(valueChanged(int)),this,SLOT(fssldValueChanged())); + connect(fssb1[i],SIGNAL(valueChanged(int)),this,SLOT(fssbValueChanged())); + connect(fssb2[i],SIGNAL(valueChanged(int)),this,SLOT(fssbValueChanged())); + connect(fssld1[i],SIGNAL(sliderReleased()),this,SLOT(fssldEdited())); + connect(fssld2[i],SIGNAL(sliderReleased()),this,SLOT(fssldEdited())); + connect(fssb1[i],SIGNAL(editingFinished()),this,SLOT(fssbEdited())); + connect(fssb2[i],SIGNAL(editingFinished()),this,SLOT(fssbEdited())); + } + } + + //timer1 mode direction value + populateTimerSwitchCB(ui->timer1ModeCB,model.timers[0].mode,GetEepromInterface()->getCapability(TimerTriggerB)); + int min = model.timers[0].val/60; + int sec = model.timers[0].val%60; + ui->timer1ValTE->setTime(QTime(0,min,sec)); + ui->timer1DirCB->setCurrentIndex(model.timers[0].dir); + if (!GetEepromInterface()->getCapability(ModelVoice)) { + ui->modelVoice_SB->hide(); + ui->modelVoice_label->hide(); + } else { + ui->modelVoice_SB->setValue(model.modelVoice+260); + } + if (!GetEepromInterface()->getCapability(PerModelThrottleInvert)) { + ui->label_thrrev->hide(); + ui->thrrevChkB->hide(); + } + else { + ui->thrrevChkB->setChecked(model.throttleReversed); + } + if (!GetEepromInterface()->getCapability(ModelImage)) { + ui->modelImage_CB->hide(); + ui->modelImage_label->hide(); + ui->modelImage_image->hide(); + } else { + + QStringList items; + items.append(""); + QSettings settings("companion9x", "companion9x"); + QString path=settings.value("sdPath", ".").toString(); + path.append("/BMP/"); + QDir qd(path); + int vml= GetEepromInterface()->getCapability(VoicesMaxLength)+4; + if (qd.exists()) { + QStringList filters; + filters << "*.bmp" << "*.bmp"; + foreach ( QString file, qd.entryList(filters, QDir::Files) ) { + QFileInfo fi(file); + QString temp=fi.completeBaseName(); + if (!items.contains(temp) && temp.length()<=vml) { + items.append(temp); + } + } + } + if (!items.contains(model.bitmap)) { + items.append(model.bitmap); + } + items.sort(); + ui->modelImage_CB->clear(); + foreach ( QString file, items ) { + ui->modelImage_CB->addItem(file); + if (file==model.bitmap) { + ui->modelImage_CB->setCurrentIndex(ui->modelImage_CB->count()-1); + QString fileName=path; + fileName.append(model.bitmap); + fileName.append(".bmp"); + QImage image(fileName); + if (image.isNull()) { + fileName=path; + fileName.append(model.bitmap); + fileName.append(".BMP"); + image.load(fileName); + } + if (!image.isNull()) { + ui->modelImage_image->setPixmap(QPixmap::fromImage(image.scaled( 64,32)));; + } + } + } + + } + + if (!GetEepromInterface()->getCapability(pmSwitchMask)) { + for (int i=0; pmsl[i]; i++) { + pmsl[i]->hide(); + } + for (int i=0; pmchkb[i]; i++) { + pmchkb[i]->hide(); + } + ui->tswwarn0_CB->hide(); + for (int i=0; tpmsld[i]; i++) { + tpmsld[i]->hide(); + } + ui->swwarn0_line->hide(); + ui->swwarn0_line->hide(); + ui->swwarn0_CB->hide(); + ui->swwarn4_CB->hide(); + ui->swwarn_line0->hide(); + ui->swwarn_line1->hide(); + ui->swwarn_line2->hide(); + ui->swwarn_line3->hide(); + ui->swwarn_line4->hide(); + ui->swwarn_line5->hide(); + ui->tswwarn0_label->hide(); + ui->tswwarn1_label->hide(); + ui->tswwarn2_label->hide(); + ui->tswwarn3_label->hide(); + ui->tswwarn4_label->hide(); + ui->tswwarn5_label->hide(); + ui->tswwarn6_label->hide(); + ui->tswwarn7_label->hide(); + } else { + if (GetEepromInterface()->getCapability(Pots)==3) { + ui->swwarn0_CB->setCurrentIndex(model.switchWarningStates & 0x01); + ui->swwarn1_ChkB->setChecked(checkbit(model.switchWarningStates, 1)); + ui->swwarn2_ChkB->setChecked(checkbit(model.switchWarningStates, 2)); + ui->swwarn3_ChkB->setChecked(checkbit(model.switchWarningStates, 3)); + ui->swwarn4_CB->setCurrentIndex((model.switchWarningStates & 0x30)>>4); + ui->swwarn5_ChkB->setChecked(checkbit(model.switchWarningStates, 6)); + ui->swwarn6_ChkB->setChecked(checkbit(model.switchWarningStates, 7)); + for (int i=0; pmchkb[i]; i++) { + connect(pmchkb[i], SIGNAL(stateChanged(int)),this,SLOT(startupSwitchEdited())); + } + connect(ui->swwarn0_CB,SIGNAL(currentIndexChanged(int)),this,SLOT(startupSwitchEdited())); + connect(ui->swwarn4_CB,SIGNAL(currentIndexChanged(int)),this,SLOT(startupSwitchEdited())); + } else { + ui->tswwarn0_CB->setCurrentIndex(model.switchWarningStates & 0x01); + uint16_t switchstate=(model.switchWarningStates>>1); + ui->chkSA->setValue(switchstate & 0x3); + switchstate >>= 2; + ui->chkSB->setValue(switchstate & 0x3); + switchstate >>= 2; + ui->chkSC->setValue(switchstate & 0x3); + switchstate >>= 2; + ui->chkSD->setValue(switchstate & 0x3); + switchstate >>= 2; + ui->chkSE->setValue(switchstate & 0x3); + switchstate >>= 2; + ui->chkSF->setValue((switchstate & 0x3)/2); + switchstate >>= 2; + ui->chkSG->setValue(switchstate & 0x3); + connect(ui->tswwarn0_CB,SIGNAL(currentIndexChanged(int)),this,SLOT(startupSwitchEdited())); + for (int i=0; tpmsld[i]; i++) { + connect(tpmsld[i], SIGNAL(valueChanged(int)),this,SLOT(startupSwitchEdited())); + } + } + } + int ppmmax=GetEepromInterface()->getCapability(PPMFrameLength); + if (ppmmax>0) { + ui->ppmFrameLengthDSB->setMaximum(ppmmax); + } + if (!GetEepromInterface()->getCapability(InstantTrimSW)) { + ui->instantTrim_label->hide(); + ui->instantTrim_CB->setDisabled(true); + ui->instantTrim_CB->hide(); + } + else { + int found=false; + for (int i=0; i< C9X_MAX_CUSTOM_FUNCTIONS; i++) { + if (model.funcSw[i].func==FuncInstantTrim) { + populateSwitchCB(ui->instantTrim_CB,model.funcSw[i].swtch,POPULATE_MSWITCHES & POPULATE_ONOFF); + found=true; + break; + } + } + if (found==false) { + populateSwitchCB(ui->instantTrim_CB,RawSwitch(),POPULATE_MSWITCHES & POPULATE_ONOFF); + } + } + if (GetEepromInterface()->getCapability(NoTimerDirs)) { + ui->timer1DirCB->hide(); + ui->timer2DirCB->hide(); + } + if (GetEepromInterface()->getCapability(NoThrExpo)) { + ui->label_thrExpo->hide(); + ui->thrExpoChkB->hide(); + } + if (!(GetEepromInterface()->getCapability(ExtendedTrims)>0)) { + ui->extendedTrimsChkB->hide(); + ui->extendedTrims_label->hide(); + } else { + ui->extendedTrimsChkB->setChecked(model.extendedTrims); + } + if (!GetEepromInterface()->getCapability(HasTTrace)) { + ui->label_ttrace->hide(); + ui->ttraceCB->hide(); + } else { + populateTTraceCB(ui->ttraceCB,model.thrTraceSrc); + } + if (GetEepromInterface()->getCapability(RotaryEncoders)==0) { + ui->bcREaChkB->hide(); + ui->bcREbChkB->hide(); + } + if (GetEepromInterface()->getCapability(Pots)==3) { + ui->tswwarn0_CB->hide(); + ui->tswwarn0_label->hide(); + ui->tswwarn1_label->hide(); + ui->tswwarn2_label->hide(); + ui->tswwarn3_label->hide(); + ui->tswwarn4_label->hide(); + ui->tswwarn5_label->hide(); + ui->tswwarn6_label->hide(); + ui->tswwarn7_label->hide(); + ui->chkSA->hide(); + ui->chkSB->hide(); + ui->chkSC->hide(); + ui->chkSD->hide(); + ui->chkSE->hide(); + ui->chkSF->hide(); + ui->chkSG->hide(); + this->layout()->removeItem(ui->TaranisSwitchStartup); + ui->bcP4ChkB->hide(); + } else { + ui->swwarn0_CB->hide(); + ui->swwarn0_label->hide(); + ui->swwarn0_line->hide(); + ui->swwarn1_ChkB->hide(); + ui->swwarn1_line->hide(); + ui->swwarn2_ChkB->hide(); + ui->swwarn3_ChkB->hide(); + ui->swwarn4_CB->hide(); + ui->swwarn4_label->hide(); + ui->swwarn5_ChkB->hide(); + ui->swwarn6_ChkB->hide(); + ui->swwarn_line0->hide(); + ui->swwarn_line1->hide(); + ui->swwarn_line2->hide(); + ui->swwarn_line3->hide(); + ui->swwarn_line4->hide(); + ui->swwarn_line5->hide(); + this->layout()->removeItem(ui->StockSwitchStartup); + ui->bcP1ChkB->setText(tr("S1")); + ui->bcP2ChkB->setText(tr("S2")); + ui->bcP3ChkB->setText(tr("LS")); + } + + if (!GetEepromInterface()->getCapability(PerModelThrottleWarning)) { + ui->thrwarnChkB->setDisabled(true); + ui->thrwarnChkB->hide(); + ui->thrwarnLabel->hide(); + } + else { + ui->thrwarnChkB->setChecked(model.disableThrottleWarning); + } + if (!GetEepromInterface()->getCapability(TimerTriggerB)) { + ui->timer1ModeBCB->hide(); + ui->timer1ModeB_label->hide(); + ui->timer2ModeBCB->hide(); + ui->timer2ModeB_label->hide(); + } else { + populateTimerSwitchBCB(ui->timer1ModeBCB,model.timers[0].modeB,GetEepromInterface()->getCapability(TimerTriggerB)); + populateTimerSwitchBCB(ui->timer2ModeBCB,model.timers[1].modeB,GetEepromInterface()->getCapability(TimerTriggerB)); + } + + int index=0; + int selindex; + int selindex2; + ui->protocolCB->clear(); + for (int i=0; iisAvailable((Protocol)i)) { + ui->protocolCB->addItem(getProtocolStr(i), (QVariant)i); + if (model.moduleData[0].protocol == i) { + selindex = index; + } + index++; + } + } + if (GetEepromInterface()->getCapability(NumModules)>1) { + index=0; + ui->protocolCB_2->clear(); + for (int i=0; iisAvailable((Protocol)i, 1)) { + ui->protocolCB_2->addItem(getProtocolStr(i), (QVariant)i); + if (model.moduleData[1].protocol == i) { + selindex2 = index; + } + index++; + } + } + } + if (GetEepromInterface()->getCapability(ModelTrainerEnable)) { + if (!(model.trainerMode||model.traineron)) { + ui->protocolCB_3->setCurrentIndex(0); + ui->label_PPM_3->hide(); + ui->ppmDelaySB_3->hide(); + ui->label_PPMCH_3->hide(); + ui->label_pulsePol_3->hide(); + ui->pulsePolCB_3->hide(); + ui->numChannelsSB_3->hide(); + ui->label_ppmFrameLength_3->hide(); + ui->ppmFrameLengthDSB_3->hide(); + ui->label_numChannelsStart_3->hide(); + ui->numChannelsStart_3->hide(); + } else { + ui->protocolCB_3->setCurrentIndex(1); + ui->label_PPM_3->show(); + ui->ppmDelaySB_3->show(); + ui->label_PPMCH_3->show(); + ui->label_pulsePol_3->show(); + ui->pulsePolCB_3->show(); + ui->numChannelsSB_3->show(); + ui->label_ppmFrameLength_3->show(); + ui->ppmFrameLengthDSB_3->show(); + ui->label_numChannelsStart_3->show(); + ui->numChannelsStart_3->show(); + } + on_protocolCB_3_currentIndexChanged(model.traineron||model.trainerMode); + } else { + ui->rf3_GB->hide(); + } + + ui->label_PPM->hide(); + ui->ppmDelaySB->hide(); + ui->label_PPMCH->hide(); + ui->label_pulsePol->hide(); + ui->pulsePolCB->hide(); + ui->numChannelsSB->hide(); + ui->label_ppmFrameLength->hide(); + ui->ppmFrameLengthDSB->hide(); + ui->label_DSM->hide(); + ui->DSM_Type->hide(); + ui->label_PXX->hide(); + ui->pxxRxNum->hide(); + ui->label_numChannelsStart->hide(); + ui->numChannelsStart->hide(); + ui->pxxRxNum->setEnabled(false); + ui->protocolCB->setCurrentIndex(selindex); + on_protocolCB_currentIndexChanged(selindex); + if (GetEepromInterface()->getCapability(NumModules)>1) { + ui->label_PPM_2->hide(); + ui->ppmDelaySB_2->hide(); + ui->label_PPMCH_2->hide(); + ui->label_pulsePol_2->hide(); + ui->pulsePolCB_2->hide(); + ui->numChannelsSB_2->hide(); + ui->label_ppmFrameLength_2->hide(); + ui->ppmFrameLengthDSB_2->hide(); + ui->label_DSM_2->hide(); + ui->DSM_Type_2->hide(); + ui->label_PXX_2->hide(); + ui->pxxRxNum_2->hide(); + ui->label_numChannelsStart_2->hide(); + ui->numChannelsStart_2->hide(); + ui->pxxRxNum_2->setEnabled(false); + ui->protocolCB_2->setCurrentIndex(selindex2); + on_protocolCB_2_currentIndexChanged(selindex2); + } + + //timer2 mode direction value + if (GetEepromInterface()->getCapability(Timers)<2) { + ui->timer2DirCB->hide(); + ui->timer2ValTE->hide(); + ui->timer2DirCB->hide(); + ui->timer2ModeCB->hide(); + ui->timer2ModeBCB->hide(); + ui->timer2ModeB_label->hide(); + ui->label_timer2->hide(); + } else { + populateTimerSwitchCB(ui->timer2ModeCB,model.timers[1].mode,GetEepromInterface()->getCapability(TimerTriggerB)); + min = model.timers[1].val/60; + sec = model.timers[1].val%60; + ui->timer2ValTE->setTime(QTime(0,min,sec)); + ui->timer2DirCB->setCurrentIndex(model.timers[1].dir); + } + if (!GetEepromInterface()->getCapability(PermTimers)) { + ui->timer1Perm->hide(); + ui->timer2Perm->hide(); + ui->timer1PermValue->hide(); + ui->timer2PermValue->hide(); + } else { + int sign=1; + int pvalue=model.timers[0].pvalue; + if (pvalue<0) { + pvalue=-pvalue; + sign=-1; + } + int hours=pvalue/3600; + pvalue-=hours*3600; + int minutes = pvalue/60; + int seconds = pvalue%60; + ui->timer1PermValue->setText(QString(" %1(%2:%3:%4)").arg(sign<0 ? "-" :" ").arg(hours,2,10,QLatin1Char('0')).arg(minutes,2,10,QLatin1Char('0')).arg(seconds,2,10,QLatin1Char('0'))); + // QString QString::arg ( int a, int fieldWidth = 0, int base = 10, const QChar & fillChar = QLatin1Char( ' ' ) ) const + sign=1; + pvalue=model.timers[1].pvalue; + if (pvalue<0) { + pvalue=-pvalue; + sign=-1; + } + hours=pvalue/3600; + pvalue-=hours*3600; + minutes = pvalue/60; + seconds = pvalue%60; + ui->timer2PermValue->setText(QString(" %1(%2:%3:%4)").arg(sign<0 ? "-" :" ").arg(hours,2,10,QLatin1Char('0')).arg(minutes,2,10,QLatin1Char('0')).arg(seconds,2,10,QLatin1Char('0'))); + ui->timer1Perm->setChecked(model.timers[0].persistent); + ui->timer2Perm->setChecked(model.timers[1].persistent); + } + if (!GetEepromInterface()->getCapability(minuteBeep)) { + ui->timer1Minute->hide(); + ui->timer2Minute->hide(); + } else { + ui->timer1Minute->setChecked(model.timers[0].minuteBeep); + ui->timer2Minute->setChecked(model.timers[1].minuteBeep); + } + + if (!GetEepromInterface()->getCapability(countdownBeep)) { + ui->timer1CountDownBeep->hide(); + ui->timer2CountDownBeep->hide(); + } else { + ui->timer1CountDownBeep->setChecked(model.timers[0].countdownBeep); + ui->timer2CountDownBeep->setChecked(model.timers[1].countdownBeep); + } + + //trim inc, thro trim, thro expo, instatrim + ui->trimIncCB->setCurrentIndex(model.trimInc); + ui->thrExpoChkB->setChecked(model.thrExpo); + ui->thrTrimChkB->setChecked(model.thrTrim); + + //center beep + ui->bcRUDChkB->setChecked(model.beepANACenter & BC_BIT_RUD); + ui->bcELEChkB->setChecked(model.beepANACenter & BC_BIT_ELE); + ui->bcTHRChkB->setChecked(model.beepANACenter & BC_BIT_THR); + ui->bcAILChkB->setChecked(model.beepANACenter & BC_BIT_AIL); + ui->bcP1ChkB->setChecked(model.beepANACenter & BC_BIT_P1); + ui->bcP2ChkB->setChecked(model.beepANACenter & BC_BIT_P2); + ui->bcP3ChkB->setChecked(model.beepANACenter & BC_BIT_P3); + ui->bcP4ChkB->setChecked(model.beepANACenter & BC_BIT_P4); + ui->bcREaChkB->setChecked(model.beepANACenter & BC_BIT_REA); + ui->bcREbChkB->setChecked(model.beepANACenter & BC_BIT_REB); + + // PPM settings fields + ui->ppmDelaySB->setEnabled(model.moduleData[0].protocol == PPM); + ui->pulsePolCB->setCurrentIndex(model.moduleData[0].ppmPulsePol); + ui->ppmDelaySB->setEnabled(model.moduleData[0].protocol == PPM); + ui->ppmDelaySB->setValue(model.moduleData[0].ppmDelay); + // TODO? ui->numChannelsSB->setEnabled(model.moduleData[0].protocol == PPM); + + ui->extendedLimitsChkB->setChecked(model.extendedLimits); + ui->T2ThrTrgChkB->setChecked(model.t2throttle); + if (!GetEepromInterface()->getCapability(Timer2ThrTrig)) { + ui->T2ThrTrg->hide(); + ui->T2ThrTrgChkB->hide(); + } + ui->ppmFrameLengthDSB->setValue(22.5+((double)model.moduleData[0].ppmFrameLength)*0.5); + if (!GetEepromInterface()->getCapability(PPMExtCtrl)) { + ui->ppmFrameLengthDSB->hide(); + ui->label_ppmFrameLength->hide(); + } + switch (model.moduleData[0].protocol) { + case PXX_DJT: + case PXX_XJT_X16: + case PXX_XJT_D8: + case PXX_XJT_LR12: + ui->pxxRxNum->setMinimum(0); + ui->pxxRxNum->setValue((model.modelId)); + break; + case DSM2: + if (!GetEepromInterface()->getCapability(DSM2Indexes)) { + ui->pxxRxNum->setValue(1); + } + else { + ui->pxxRxNum->setMinimum(0); + ui->pxxRxNum->setValue((model.modelId)); + } + ui->numChannelsSB->setValue(8); + break; + default: + ui->label_DSM->hide(); + ui->DSM_Type->hide(); + ui->DSM_Type->setEnabled(false); + ui->label_PXX->hide(); + ui->pxxRxNum->hide(); + ui->pxxRxNum->setEnabled(false); + ui->numChannelsSB->setValue(model.moduleData[0].channelsCount); + break; + } + lock = false; +} + +void Setup::on_protocolCB_currentIndexChanged(int index) +{ + Protocol protocol = (Protocol)ui->protocolCB->itemData(index).toInt(); + + if (!lock) { + model.moduleData[0].protocol = protocol; + emit modified(); + } + + if (protocol==PXX_XJT_D8 || protocol==OFF) { + ui->FSGB_1->hide(); + } else { + ui->fsm1CB->setCurrentIndex(model.moduleData[0].failsafeMode); + on_fsm1CB_currentIndexChanged(model.moduleData[0].failsafeMode); + ui->FSGB_1->show(); + } + + ui->ppmDelaySB->setEnabled(!protocol); + ui->numChannelsSB->setEnabled(!protocol); + + if (GetEepromInterface()->getCapability(HasPPMStart)) { + ui->numChannelsSB->setSingleStep(1); + } else { + ui->numChannelsSB->setSingleStep(2); + } + + switch (protocol) { + case OFF: + ui->label_PPM->hide(); + ui->ppmDelaySB->hide(); + ui->label_PPMCH->hide(); + ui->label_pulsePol->hide(); + ui->pulsePolCB->hide(); + ui->numChannelsSB->hide(); + ui->label_ppmFrameLength->hide(); + ui->ppmFrameLengthDSB->hide(); + ui->label_DSM->hide(); + ui->DSM_Type->hide(); + ui->label_PXX->hide(); + ui->pxxRxNum->hide(); + ui->label_numChannelsStart->hide(); + ui->numChannelsStart->hide(); + break; + case PXX_XJT_X16: + case PXX_XJT_D8: + case PXX_XJT_LR12: + case PXX_DJT: + ui->label_PPM->hide(); + ui->ppmDelaySB->hide(); + ui->ppmDelaySB->setEnabled(false); + ui->label_PPMCH->show(); + ui->label_pulsePol->hide(); + ui->pulsePolCB->hide(); + ui->numChannelsSB->show(); + ui->numChannelsSB->setEnabled(true); + ui->label_ppmFrameLength->hide(); + ui->ppmFrameLengthDSB->hide(); + ui->ppmFrameLengthDSB->setEnabled(false); + ui->label_DSM->hide(); + ui->DSM_Type->hide(); + ui->DSM_Type->setEnabled(false); + ui->label_PXX->show(); + ui->pxxRxNum->setMinimum(0); + ui->pxxRxNum->show(); + ui->pxxRxNum->setEnabled(true); + ui->pxxRxNum->setValue((model.moduleData[0].channelsCount-8)/2+1); + ui->label_numChannelsStart->show(); + ui->numChannelsStart->show(); + ui->numChannelsStart->setValue(model.moduleData[0].channelsStart+1); + ui->numChannelsSB->setMinimum(model.moduleData[0].channelsStart+4); + ui->numChannelsSB->setValue(model.moduleData[0].channelsStart+model.moduleData[0].channelsCount); + break; + case LP45: + case DSM2: + case DSMX: + ui->label_pulsePol->hide(); + ui->pulsePolCB->hide(); + ui->label_PPM->hide(); + ui->ppmDelaySB->hide(); + ui->ppmDelaySB->setEnabled(false); + ui->label_PPMCH->hide(); + ui->label_numChannelsStart->hide(); + ui->numChannelsStart->hide(); + ui->numChannelsSB->hide(); + ui->numChannelsSB->setEnabled(false); + ui->label_ppmFrameLength->hide(); + ui->ppmFrameLengthDSB->hide(); + ui->ppmFrameLengthDSB->setEnabled(false); + if (!GetEepromInterface()->getCapability(DSM2Indexes)) { + ui->label_PXX->hide(); + ui->pxxRxNum->hide(); + ui->pxxRxNum->setEnabled(false); + } + else { + ui->pxxRxNum->setMinimum(0); + ui->pxxRxNum->setValue(model.modelId); + ui->label_PXX->show(); + ui->pxxRxNum->show(); + ui->pxxRxNum->setEnabled(true); + } + ui->DSM_Type->setEnabled(false); + ui->label_DSM->hide(); + ui->DSM_Type->hide(); + break; + default: + if (GetEepromInterface()->getCapability(HasPPMStart)) { + ui->label_numChannelsStart->show(); + ui->numChannelsStart->show(); + } + else { + ui->label_numChannelsStart->hide(); + ui->numChannelsStart->hide(); + } + ui->numChannelsStart->setValue(model.moduleData[0].channelsStart+1); + ui->numChannelsSB->setMinimum(model.moduleData[0].channelsStart+4); + ui->numChannelsSB->setValue(model.moduleData[0].channelsStart + model.moduleData[0].channelsCount); + ui->label_pulsePol->show(); + ui->pulsePolCB->show(); + ui->label_DSM->hide(); + ui->DSM_Type->hide(); + ui->DSM_Type->setEnabled(false); + ui->label_PXX->hide(); + ui->pxxRxNum->hide(); + ui->pxxRxNum->setEnabled(false); + ui->label_PPM->show(); + ui->ppmDelaySB->show(); + ui->ppmDelaySB->setEnabled(true); + ui->label_PPMCH->show(); + ui->numChannelsSB->show(); + ui->numChannelsSB->setEnabled(true); + ui->ppmFrameLengthDSB->setEnabled(true); + ui->ppmFrameLengthDSB->setMinimum(model.moduleData[0].channelsCount*(model.extendedLimits ? 2.250 :2)+3.5); + if (GetEepromInterface()->getCapability(PPMExtCtrl)) { + ui->ppmFrameLengthDSB->show(); + ui->label_ppmFrameLength->show(); + } + + break; + } +} + +void Setup::on_protocolCB_2_currentIndexChanged(int index) +{ + Protocol protocol = (Protocol)ui->protocolCB_2->itemData(index).toInt(); + + if (!lock) { + model.moduleData[1].protocol = protocol; + emit modified(); + } + + if (protocol==PXX_XJT_X16 || protocol==PXX_XJT_LR12) { + ui->FSGB_2->show(); + ui->fsm2CB->setCurrentIndex(model.moduleData[1].failsafeMode); + on_fsm2CB_currentIndexChanged(model.moduleData[1].failsafeMode); + } + else { + ui->FSGB_2->hide(); + } + + ui->ppmDelaySB_2->setEnabled(!protocol); + ui->numChannelsSB_2->setEnabled(!protocol); + + if (GetEepromInterface()->getCapability(HasPPMStart)) { + ui->numChannelsSB_2->setSingleStep(1); + } else { + ui->numChannelsSB_2->setSingleStep(2); + } + + switch (protocol) { + case OFF: + ui->label_PPM_2->hide(); + ui->ppmDelaySB_2->hide(); + ui->label_PPMCH_2->hide(); + ui->label_pulsePol_2->hide(); + ui->pulsePolCB_2->hide(); + ui->numChannelsSB_2->hide(); + ui->label_ppmFrameLength_2->hide(); + ui->ppmFrameLengthDSB_2->hide(); + ui->label_DSM_2->hide(); + ui->DSM_Type_2->hide(); + ui->label_PXX_2->hide(); + ui->pxxRxNum_2->hide(); + ui->label_numChannelsStart_2->hide(); + ui->numChannelsStart_2->hide(); + break; + case PXX_XJT_X16: + case PXX_XJT_D8: + case PXX_XJT_LR12: + case PXX_DJT: + ui->label_PPM_2->hide(); + ui->ppmDelaySB_2->hide(); + ui->ppmDelaySB_2->setEnabled(false); + ui->label_PPMCH_2->show(); + ui->label_pulsePol_2->hide(); + ui->pulsePolCB_2->hide(); + ui->numChannelsSB_2->show(); + ui->numChannelsSB_2->setEnabled(true); + ui->label_ppmFrameLength_2->hide(); + ui->ppmFrameLengthDSB_2->hide(); + ui->ppmFrameLengthDSB_2->setEnabled(false); + ui->label_DSM_2->hide(); + ui->DSM_Type_2->hide(); + ui->DSM_Type_2->setEnabled(false); + ui->label_PXX_2->show(); + ui->pxxRxNum_2->setMinimum(0); + ui->pxxRxNum_2->show(); + ui->pxxRxNum_2->setEnabled(true); + ui->pxxRxNum_2->setValue(model.modelId); + ui->label_numChannelsStart_2->show(); + ui->numChannelsStart_2->show(); + ui->numChannelsStart_2->setValue(model.moduleData[1].channelsStart+1); + ui->numChannelsSB_2->setMinimum(model.moduleData[1].channelsStart+4); + ui->numChannelsSB_2->setValue(model.moduleData[1].channelsStart+model.moduleData[1].channelsCount); + break; + case LP45: + case DSM2: + case DSMX: + ui->label_pulsePol_2->hide(); + ui->pulsePolCB_2->hide(); + ui->label_PPM_2->hide(); + ui->ppmDelaySB_2->hide(); + ui->ppmDelaySB_2->setEnabled(false); + ui->label_PPMCH_2->hide(); + ui->numChannelsSB_2->hide(); + ui->numChannelsSB_2->setEnabled(false); + ui->label_ppmFrameLength_2->hide(); + ui->ppmFrameLengthDSB_2->hide(); + ui->ppmFrameLengthDSB_2->setEnabled(false); + if (!GetEepromInterface()->getCapability(DSM2Indexes)) { + ui->label_PXX_2->hide(); + ui->pxxRxNum_2->hide(); + ui->pxxRxNum_2->setEnabled(false); + } else { + ui->pxxRxNum_2->setMinimum(0); + ui->pxxRxNum_2->setValue(model.modelId); + ui->label_PXX_2->show(); + ui->pxxRxNum_2->show(); + ui->pxxRxNum_2->setEnabled(true); + } + ui->DSM_Type_2->setEnabled(false); + ui->label_DSM_2->hide(); + ui->DSM_Type_2->hide(); + break; + default: + if (GetEepromInterface()->getCapability(HasPPMStart)) { + ui->label_numChannelsStart_2->show(); + ui->numChannelsStart_2->show(); + } else { + ui->label_numChannelsStart_2->hide(); + ui->numChannelsStart_2->hide(); + } + ui->numChannelsStart_2->setValue(model.moduleData[1].channelsStart+1); + ui->numChannelsSB_2->setMinimum(model.moduleData[1].channelsStart+4); + ui->numChannelsSB_2->setValue(model.moduleData[1].channelsStart+model.moduleData[1].channelsCount); + ui->label_pulsePol_2->show(); + ui->pulsePolCB_2->show(); + ui->pulsePolCB_2->setCurrentIndex(model.moduleData[1].ppmPulsePol); + ui->label_DSM_2->hide(); + ui->DSM_Type_2->hide(); + ui->DSM_Type_2->setEnabled(false); + ui->label_PXX_2->hide(); + ui->pxxRxNum_2->hide(); + ui->pxxRxNum_2->setEnabled(false); + ui->label_PPM_2->show(); + ui->ppmDelaySB_2->show(); + ui->ppmDelaySB_2->setEnabled(true); + ui->ppmDelaySB_2->setValue(model.moduleData[1].ppmDelay); + ui->label_PPMCH_2->show(); + ui->numChannelsSB_2->show(); + ui->numChannelsSB_2->setEnabled(true); + ui->ppmFrameLengthDSB_2->setEnabled(true); + ui->ppmFrameLengthDSB_2->setMinimum(model.moduleData[1].channelsCount*(model.extendedLimits ? 2.250 :2)+3.5); + if (GetEepromInterface()->getCapability(PPMExtCtrl)) { + ui->ppmFrameLengthDSB_2->show(); + ui->label_ppmFrameLength_2->show(); + ui->ppmFrameLengthDSB_2->setValue(model.moduleData[1].ppmFrameLength/2.0+22.5); + } + break; + } +} + +void Setup::on_protocolCB_3_currentIndexChanged(int index) +{ + Protocol protocol = (Protocol)ui->protocolCB_3->currentIndex(); + + if (!lock) { + model.moduleData[2].protocol = protocol; + model.trainerMode = ui->protocolCB_3->currentIndex(); + emit modified(); + } + + switch (index) { + case 0: + ui->label_PPM_3->hide(); + ui->ppmDelaySB_3->hide(); + ui->label_PPMCH_3->hide(); + ui->label_pulsePol_3->hide(); + ui->pulsePolCB_3->hide(); + ui->numChannelsSB_3->hide(); + ui->label_ppmFrameLength_3->hide(); + ui->ppmFrameLengthDSB_3->hide(); + ui->label_numChannelsStart_3->hide(); + ui->numChannelsStart_3->hide(); + break; + default: + ui->label_PPM_3->show(); + ui->ppmDelaySB_3->show(); + ui->label_PPMCH_3->show(); + ui->label_pulsePol_3->show(); + ui->pulsePolCB_3->show(); + ui->numChannelsSB_3->show(); + ui->label_ppmFrameLength_3->show(); + ui->ppmFrameLengthDSB_3->show(); + ui->label_numChannelsStart_3->show(); + ui->numChannelsStart_3->show(); + ui->numChannelsStart_3->setValue(model.moduleData[2].channelsStart+1); + ui->numChannelsSB_3->setMinimum(model.moduleData[2].channelsStart+4); + ui->numChannelsSB_3->setValue(model.moduleData[2].channelsStart+model.moduleData[2].channelsCount); + ui->pulsePolCB_3->setCurrentIndex(model.moduleData[2].ppmPulsePol); + ui->ppmDelaySB_3->setValue(model.moduleData[2].ppmDelay); + ui->ppmFrameLengthDSB_3->setMinimum(model.moduleData[2].channelsCount*(model.extendedLimits ? 2.250 :2)+3.5); + if (GetEepromInterface()->getCapability(PPMExtCtrl)) { + ui->ppmFrameLengthDSB_3->show(); + ui->label_ppmFrameLength_3->show(); + ui->ppmFrameLengthDSB_3->setValue(model.moduleData[2].ppmFrameLength/2.0+22.5); + } + break; + } +} + +void Setup::on_T2ThrTrgChkB_toggled(bool checked) +{ + model.t2throttle = checked; + emit modified(); +} + +void Setup::on_extendedLimitsChkB_toggled(bool checked) +{ + model.extendedLimits = checked; + emit modified(); +} + +void Setup::on_thrwarnChkB_toggled(bool checked) +{ + model.disableThrottleWarning = checked; + emit modified(); +} + +void Setup::on_thrrevChkB_toggled(bool checked) +{ + model.throttleReversed = checked; + emit modified(); +} + +void Setup::on_extendedTrimsChkB_toggled(bool checked) +{ + model.extendedTrims = checked; + emit modified(); +} + +void Setup::on_fsm1CB_currentIndexChanged(int index) +{ + QSpinBox * fssb[] = { ui->fsm1SB_1, ui->fsm1SB_2,ui->fsm1SB_3,ui->fsm1SB_4,ui->fsm1SB_5,ui->fsm1SB_6,ui->fsm1SB_7,ui->fsm1SB_8, + ui->fsm1SB_9, ui->fsm1SB_10,ui->fsm1SB_11,ui->fsm1SB_12,ui->fsm1SB_13,ui->fsm1SB_14,ui->fsm1SB_15,ui->fsm1SB_16, NULL }; + QSlider * fssld[] = { ui->fsm1SL_1, ui->fsm1SL_2,ui->fsm1SL_3,ui->fsm1SL_4,ui->fsm1SL_5,ui->fsm1SL_6,ui->fsm1SL_7,ui->fsm1SL_8, + ui->fsm1SL_9, ui->fsm1SL_10,ui->fsm1SL_11,ui->fsm1SL_12,ui->fsm1SL_13,ui->fsm1SL_14,ui->fsm1SL_15,ui->fsm1SL_16, NULL }; + model.moduleData[0].failsafeMode=index; + for (int i=0; fssb[i]; i++) { + if (index==1) { + fssb[i]->setEnabled(true); + fssld[i]->setEnabled(true); + } else { + fssb[i]->setDisabled(true); + fssld[i]->setDisabled(true); + } + } + emit modified(); +} + +void Setup::on_fsm2CB_currentIndexChanged(int index) +{ + QSpinBox * fssb[] = { ui->fsm2SB_1, ui->fsm2SB_2,ui->fsm2SB_3,ui->fsm2SB_4,ui->fsm2SB_5,ui->fsm2SB_6,ui->fsm2SB_7,ui->fsm2SB_8, + ui->fsm2SB_9, ui->fsm2SB_10,ui->fsm2SB_11,ui->fsm2SB_12,ui->fsm2SB_13,ui->fsm2SB_14,ui->fsm2SB_15,ui->fsm2SB_16, NULL }; + QSlider * fssld[] = { ui->fsm2SL_1, ui->fsm2SL_2,ui->fsm2SL_3,ui->fsm2SL_4,ui->fsm2SL_5,ui->fsm2SL_6,ui->fsm2SL_7,ui->fsm2SL_8, + ui->fsm2SL_9, ui->fsm2SL_10,ui->fsm2SL_11,ui->fsm2SL_12,ui->fsm2SL_13,ui->fsm2SL_14,ui->fsm2SL_15,ui->fsm2SL_16, NULL }; + model.moduleData[1].failsafeMode=index; + for (int i=0; fssb[i]; i++) { + if (index==1) { + fssb[i]->setEnabled(true); + fssld[i]->setEnabled(true); + } else { + fssb[i]->setDisabled(true); + fssld[i]->setDisabled(true); + } + } + emit modified(); +} + +void Setup::fssldValueChanged() +{ + if (!lock) { + lock = true; + QSpinBox * fssb1[] = { ui->fsm1SB_1, ui->fsm1SB_2,ui->fsm1SB_3,ui->fsm1SB_4,ui->fsm1SB_5,ui->fsm1SB_6,ui->fsm1SB_7,ui->fsm1SB_8, + ui->fsm1SB_9, ui->fsm1SB_10,ui->fsm1SB_11,ui->fsm1SB_12,ui->fsm1SB_13,ui->fsm1SB_14,ui->fsm1SB_15,ui->fsm1SB_16, NULL }; + QSpinBox * fssb2[] = { ui->fsm2SB_1, ui->fsm2SB_2,ui->fsm2SB_3,ui->fsm2SB_4,ui->fsm2SB_5,ui->fsm2SB_6,ui->fsm2SB_7,ui->fsm2SB_8, + ui->fsm2SB_9, ui->fsm2SB_10,ui->fsm2SB_11,ui->fsm2SB_12,ui->fsm2SB_13,ui->fsm2SB_14,ui->fsm2SB_15,ui->fsm2SB_16, NULL }; + QSlider *sl = qobject_cast(sender()); + int fsId=sl->objectName().mid(sl->objectName().lastIndexOf("_")+1).toInt()-1; + int moduleid=sl->objectName().mid(3,1).toInt(); + if (moduleid==1) { + fssb1[fsId]->setValue(sl->value()); + } else { + fssb2[fsId]->setValue(sl->value()); + } + lock = false; + } +} + +void Setup::fssbValueChanged() +{ + if (!lock) { + lock = true; + QSlider * fssld1[] = { ui->fsm1SL_1, ui->fsm1SL_2,ui->fsm1SL_3,ui->fsm1SL_4,ui->fsm1SL_5,ui->fsm1SL_6,ui->fsm1SL_7,ui->fsm1SL_8, + ui->fsm1SL_9, ui->fsm1SL_10,ui->fsm1SL_11,ui->fsm1SL_12,ui->fsm1SL_13,ui->fsm1SL_14,ui->fsm1SL_15,ui->fsm1SL_16, NULL }; + QSlider * fssld2[] = { ui->fsm2SL_1, ui->fsm2SL_2,ui->fsm2SL_3,ui->fsm2SL_4,ui->fsm2SL_5,ui->fsm2SL_6,ui->fsm2SL_7,ui->fsm2SL_8, + ui->fsm2SL_9, ui->fsm2SL_10,ui->fsm2SL_11,ui->fsm2SL_12,ui->fsm2SL_13,ui->fsm2SL_14,ui->fsm2SL_15,ui->fsm2SL_16, NULL }; + QSpinBox *sb = qobject_cast(sender()); + int fsId=sb->objectName().mid(sb->objectName().lastIndexOf("_")+1).toInt()-1; + int moduleid=sb->objectName().mid(3,1).toInt(); + if (moduleid==1) { + fssld1[fsId]->setValue(sb->value()); + } else { + fssld2[fsId]->setValue(sb->value()); + } + lock = false; + } +} + +void Setup::fssldEdited() +{ + QSlider *sl = qobject_cast(sender()); + int fsId=sl->objectName().mid(sl->objectName().lastIndexOf("_")+1).toInt()-1; + int moduleid=sl->objectName().mid(3,1).toInt(); + if (moduleid==1) { + model.moduleData[0].failsafeChannels[fsId]=sl->value(); + } else { + model.moduleData[1].failsafeChannels[fsId]=sl->value(); + } + emit modified(); +} + +void Setup::fssbEdited() +{ + QSpinBox *sb = qobject_cast(sender()); + int fsId=sb->objectName().mid(sb->objectName().lastIndexOf("_")+1).toInt()-1; + int moduleid=sb->objectName().mid(3,1).toInt(); + if (moduleid==1) { + model.moduleData[0].failsafeChannels[fsId]=sb->value(); + } else { + model.moduleData[1].failsafeChannels[fsId]=sb->value(); + } + emit modified(); +} + + + +void Setup::on_modelVoice_SB_editingFinished() +{ + model.modelVoice=ui->modelVoice_SB->value()-260; + emit modified(); +} + +void Setup::on_timer1Perm_toggled(bool checked) +{ + model.timers[0].persistent=checked; + emit modified(); +} + +void Setup::on_timer2Perm_toggled(bool checked) +{ + model.timers[1].persistent=checked; + emit modified(); +} + +void Setup::on_timer1Minute_toggled(bool checked) +{ + model.timers[0].minuteBeep=checked; + emit modified(); +} + +void Setup::on_timer2Minute_toggled(bool checked) +{ + model.timers[1].minuteBeep=checked; + emit modified(); +} + +void Setup::on_timer1CountDownBeep_toggled(bool checked) +{ + model.timers[0].countdownBeep=checked; + emit modified(); +} + +void Setup::on_timer2CountDownBeep_toggled(bool checked) +{ + model.timers[1].countdownBeep=checked; + emit modified(); +} + +void Setup::on_timer1ModeCB_currentIndexChanged(int index) +{ + model.timers[0].mode = TimerMode(ui->timer1ModeCB->itemData(index).toInt()); + emit modified(); +} + +void Setup::on_timer1DirCB_currentIndexChanged(int index) +{ + model.timers[0].dir = index; + emit modified(); +} + +void Setup::on_timer1ValTE_editingFinished() +{ + model.timers[0].val = ui->timer1ValTE->time().minute()*60 + ui->timer1ValTE->time().second(); + emit modified(); +} + +void Setup::on_timer1ModeBCB_currentIndexChanged(int index) +{ + model.timers[0].modeB = ui->timer1ModeBCB->itemData(index).toInt(); + emit modified(); +} + +void Setup::on_timer2ModeCB_currentIndexChanged(int index) +{ + model.timers[1].mode = TimerMode(ui->timer2ModeCB->itemData(index).toInt()); + emit modified(); +} + +void Setup::on_timer2DirCB_currentIndexChanged(int index) +{ + model.timers[1].dir = index; + emit modified(); +} + +void Setup::on_timer2ValTE_editingFinished() +{ + model.timers[1].val = ui->timer2ValTE->time().minute()*60 + ui->timer2ValTE->time().second(); + emit modified(); +} + +void Setup::on_timer2ModeBCB_currentIndexChanged(int index) +{ + model.timers[1].modeB = ui->timer2ModeBCB->itemData(index).toInt(); + emit modified(); +} + +void Setup::on_trimIncCB_currentIndexChanged(int index) +{ + model.trimInc = index; + emit modified(); +} + +void Setup::on_ttraceCB_currentIndexChanged(int index) +{ + model.thrTraceSrc = index; + emit modified(); +} + +void Setup::on_pulsePolCB_currentIndexChanged(int index) +{ + model.moduleData[0].ppmPulsePol = index; + emit modified(); +} + +void Setup::on_pulsePolCB_2_currentIndexChanged(int index) +{ + model.moduleData[1].ppmPulsePol = index; + emit modified(); +} + +void Setup::on_pulsePolCB_3_currentIndexChanged(int index) +{ + model.moduleData[2].ppmPulsePol = index; + emit modified(); +} + +void Setup::on_numChannelsSB_editingFinished() +{ + // TODO only accept valid values + model.moduleData[0].channelsCount = 1+ui->numChannelsSB->value()-ui->numChannelsStart->value(); + ui->ppmFrameLengthDSB->setMinimum(model.moduleData[0].channelsCount*(model.extendedLimits ? 2.250 :2)+3.5); + emit modified(); +} + +void Setup::on_numChannelsSB_2_editingFinished() +{ + // TODO only accept valid values + model.moduleData[1].channelsCount = 1+ui->numChannelsSB_2->value()-ui->numChannelsStart_2->value(); + ui->ppmFrameLengthDSB_2->setMinimum(model.moduleData[1].channelsCount*(model.extendedLimits ? 2.250 :2.0)+3.5); + emit modified(); +} + +void Setup::on_numChannelsSB_3_editingFinished() +{ + // TODO only accept valid values + model.moduleData[2].channelsCount = 1+ui->numChannelsSB_3->value()-ui->numChannelsStart_3->value(); + ui->ppmFrameLengthDSB_3->setMinimum(model.moduleData[2].channelsCount*(model.extendedLimits ? 2.250 :2)+3.5); + emit modified(); +} + +void Setup::on_numChannelsStart_editingFinished() +{ + // TODO only accept valid values + model.moduleData[0].channelsStart = ui->numChannelsStart->value()-1; + ui->numChannelsSB->setMinimum(model.moduleData[0].channelsStart+4); + ui->numChannelsSB->setValue(model.moduleData[0].channelsStart+model.moduleData[0].channelsCount); + emit modified(); +} + +void Setup::on_numChannelsStart_2_editingFinished() +{ + // TODO only accept valid values + model.moduleData[1].channelsStart = ui->numChannelsStart_2->value()-1; + ui->numChannelsSB_2->setMinimum(model.moduleData[1].channelsStart+4); + ui->numChannelsSB_2->setValue(model.moduleData[1].channelsStart+model.moduleData[1].channelsCount); + emit modified(); +} + +void Setup::on_numChannelsStart_3_editingFinished() +{ + // TODO only accept valid values + model.moduleData[2].channelsStart = ui->numChannelsStart_3->value()-1; + ui->numChannelsSB_3->setMinimum(model.moduleData[2].channelsStart+4); + ui->numChannelsSB_3->setValue(model.moduleData[2].channelsStart+model.moduleData[2].channelsCount); + emit modified(); +} + +void Setup::on_ppmDelaySB_editingFinished() +{ + if (!lock) { + // TODO only accept valid values + model.moduleData[0].ppmDelay = ui->ppmDelaySB->value(); + emit modified(); + } +} + +void Setup::on_ppmDelaySB_2_editingFinished() +{ + if (!lock) { + // TODO only accept valid values + model.moduleData[1].ppmDelay = ui->ppmDelaySB_2->value(); + emit modified(); + } +} + +void Setup::on_ppmDelaySB_3_editingFinished() +{ + if (!lock) { + // TODO only accept valid values + model.moduleData[2].ppmDelay = ui->ppmDelaySB_3->value(); + emit modified(); + } +} + +void Setup::on_DSM_Type_currentIndexChanged(int index) +{ + if (!lock) { + // model.moduleData[0].channelsCount = (index*2)+8; + emit modified(); + } +} + +void Setup::on_DSM_Type_2_currentIndexChanged(int index) +{ + if (!lock) { + // model.moduleData[1].channelsCount = (index*2)+8; + emit modified(); + } +} + +void Setup::on_pxxRxNum_editingFinished() +{ + if (!lock) { + if (!GetEepromInterface()->getCapability(DSM2Indexes)) { + // model.moduleData[0].channelsCount = (ui->pxxRxNum->value()-1)*2+8; + } + else { + model.modelId = ui->pxxRxNum->value(); + } + emit modified(); + } +} + +void Setup::on_pxxRxNum_2_editingFinished() +{ + if (!lock) { + /* if (!GetEepromInterface()->getCapability(DSM2Indexes)) { + model.moduleData[1].channelsCount = (ui->pxxRxNum_2->value()-1)*2+8; + } */ + emit modified(); + } +} + +void Setup::on_ppmFrameLengthDSB_editingFinished() +{ + model.moduleData[0].ppmFrameLength = (ui->ppmFrameLengthDSB->value()-22.5)/0.5; + emit modified(); +} + +void Setup::on_ppmFrameLengthDSB_2_editingFinished() +{ + model.moduleData[1].ppmFrameLength = (ui->ppmFrameLengthDSB_2->value()-22.5)/0.5; + emit modified(); +} + +void Setup::on_ppmFrameLengthDSB_3_editingFinished() +{ + model.moduleData[2].ppmFrameLength = (ui->ppmFrameLengthDSB_3->value()-22.5)/0.5; + emit modified(); +} + +void Setup::on_instantTrim_CB_currentIndexChanged(int index) +{ + if (!lock) { + bool found=false; + for (int i=0; i< C9X_MAX_CUSTOM_FUNCTIONS; i++) { + if (model.funcSw[i].func==FuncInstantTrim) { + model.funcSw[i].swtch = RawSwitch(ui->instantTrim_CB->itemData(ui->instantTrim_CB->currentIndex()).toInt()); + found=true; + } + } + if (found==false) { + for (int i=0; i< C9X_MAX_CUSTOM_FUNCTIONS; i++) { + if (model.funcSw[i].swtch==RawSwitch()) { + model.funcSw[i].swtch = RawSwitch(ui->instantTrim_CB->itemData(ui->instantTrim_CB->currentIndex()).toInt()); + model.funcSw[i].func = FuncInstantTrim; + break; + } + } + } + emit modified(); + } +} + +void Setup::on_modelNameLE_editingFinished() +{ + int length=ui->modelNameLE->maxLength(); + strncpy(model.name, ui->modelNameLE->text().toAscii(), length); + emit modified(); +} + +void Setup::on_modelImage_CB_currentIndexChanged(int index) +{ + if (!lock) { + strncpy(model.bitmap, ui->modelImage_CB->currentText().toAscii(), GetEepromInterface()->getCapability(VoicesMaxLength)); + QSettings settings("companion9x", "companion9x"); + QString path=settings.value("sdPath", ".").toString(); + path.append("/BMP/"); + QDir qd(path); + if (qd.exists()) { + QString fileName=path; + fileName.append(model.bitmap); + fileName.append(".bmp"); + QImage image(fileName); + if (image.isNull()) { + fileName=path; + fileName.append(model.bitmap); + fileName.append(".BMP"); + image.load(fileName); + } + if (!image.isNull()) { + ui->modelImage_image->setPixmap(QPixmap::fromImage(image.scaled( 64,32)));; + } + else { + ui->modelImage_image->clear(); + } + } + else { + ui->modelImage_image->clear(); + } + emit modified(); + } +} + +void Setup::startupSwitchEdited() +{ + if (GetEepromInterface()->getCapability(Pots)==3) { + uint8_t i= 0; + i|=(uint8_t)ui->swwarn0_CB->currentIndex(); + if (i==1) { + ui->swwarn1_ChkB->setDisabled(true) ; + ui->swwarn2_ChkB->setDisabled(true) ; + ui->swwarn3_ChkB->setDisabled(true) ; + ui->swwarn4_CB->setDisabled(true) ; + ui->swwarn5_ChkB->setDisabled(true) ; + ui->swwarn6_ChkB->setDisabled(true) ; + } + else { + ui->swwarn1_ChkB->setEnabled(true) ; + ui->swwarn2_ChkB->setEnabled(true) ; + ui->swwarn3_ChkB->setEnabled(true) ; + ui->swwarn4_CB->setEnabled(true) ; + ui->swwarn5_ChkB->setEnabled(true) ; + ui->swwarn6_ChkB->setEnabled(true) ; + i|=(ui->swwarn1_ChkB->isChecked() ? 1 : 0)<<1; + i|=(ui->swwarn2_ChkB->isChecked() ? 1 : 0)<<2; + i|=(ui->swwarn3_ChkB->isChecked() ? 1 : 0)<<3; + i|=((uint8_t)ui->swwarn4_CB->currentIndex() & 0x03)<<4; + i|=(ui->swwarn5_ChkB->isChecked() ? 1 : 0)<<6; + i|=(ui->swwarn6_ChkB->isChecked() ? 1 : 0)<<7; + } + model.switchWarningStates=i; + } + else { + uint16_t i= 0; + i|=(uint16_t)ui->tswwarn0_CB->currentIndex(); + if (i==1) { + ui->chkSA->setDisabled(true); + ui->chkSB->setDisabled(true); + ui->chkSC->setDisabled(true); + ui->chkSD->setDisabled(true); + ui->chkSE->setDisabled(true); + ui->chkSF->setDisabled(true); + ui->chkSG->setDisabled(true); + } + else { + ui->chkSA->setEnabled(true); + ui->chkSB->setEnabled(true); + ui->chkSC->setEnabled(true); + ui->chkSD->setEnabled(true); + ui->chkSE->setEnabled(true); + ui->chkSF->setEnabled(true); + ui->chkSG->setEnabled(true); + i|=(((uint16_t)ui->chkSA->value())<<1); + i|=(((uint16_t)ui->chkSB->value())<<3); + i|=(((uint16_t)ui->chkSC->value())<<5); + i|=(((uint16_t)ui->chkSD->value())<<7); + i|=(((uint16_t)ui->chkSE->value())<<9); + i|=(((uint16_t)ui->chkSF->value())<<12); + i|=(((uint16_t)ui->chkSG->value())<<13); + } + model.switchWarningStates=i; + } + emit modified(); +} + +void Setup::on_thrTrimChkB_toggled(bool checked) +{ + model.thrTrim = checked; + emit modified(); +} + +void Setup::on_thrExpoChkB_toggled(bool checked) +{ + model.thrExpo = checked; + emit modified(); +} + +void Setup::on_bcRUDChkB_toggled(bool checked) +{ + if(checked) { + model.beepANACenter |= BC_BIT_RUD; + } else { + model.beepANACenter &= ~BC_BIT_RUD; + } + emit modified(); +} + +void Setup::on_bcELEChkB_toggled(bool checked) +{ + if(checked) { + model.beepANACenter |= BC_BIT_ELE; + } else { + model.beepANACenter &= ~BC_BIT_ELE; + } + emit modified(); +} + +void Setup::on_bcTHRChkB_toggled(bool checked) +{ + if(checked) { + model.beepANACenter |= BC_BIT_THR; + } else { + model.beepANACenter &= ~BC_BIT_THR; + } + emit modified(); +} + +void Setup::on_bcAILChkB_toggled(bool checked) +{ + if(checked) { + model.beepANACenter |= BC_BIT_AIL; + } else { + model.beepANACenter &= ~BC_BIT_AIL; + } + emit modified(); +} + +void Setup::on_bcP1ChkB_toggled(bool checked) +{ + if(checked) { + model.beepANACenter |= BC_BIT_P1; + } else { + model.beepANACenter &= ~BC_BIT_P1; + } + emit modified(); +} + +void Setup::on_bcP2ChkB_toggled(bool checked) +{ + if(checked) { + model.beepANACenter |= BC_BIT_P2; + } else { + model.beepANACenter &= ~BC_BIT_P2; + } + emit modified(); +} + +void Setup::on_bcP3ChkB_toggled(bool checked) +{ + if(checked) { + model.beepANACenter |= BC_BIT_P3; + } else { + model.beepANACenter &= ~BC_BIT_P3; + } + emit modified(); +} + +void Setup::on_bcP4ChkB_toggled(bool checked) +{ + if(checked) { + model.beepANACenter |= BC_BIT_P4; + } else { + model.beepANACenter &= ~BC_BIT_P4; + } + emit modified(); +} + +void Setup::on_bcREaChkB_toggled(bool checked) +{ + if(checked) { + model.beepANACenter |= BC_BIT_REA; + } else { + model.beepANACenter &= ~BC_BIT_REA; + } + emit modified(); +} + +void Setup::on_bcREbChkB_toggled(bool checked) +{ + if(checked) { + model.beepANACenter |= BC_BIT_REB; + } else { + model.beepANACenter &= ~BC_BIT_REB; + } + emit modified(); +} + diff --git a/companion/src/modeledit/setup.h b/companion/src/modeledit/setup.h new file mode 100644 index 000000000..87b3cc843 --- /dev/null +++ b/companion/src/modeledit/setup.h @@ -0,0 +1,96 @@ +#ifndef SETUP_H +#define SETUP_H + +#include "modelpanel.h" + +namespace Ui { + class Setup; +} + +class Setup : public ModelPanel +{ + Q_OBJECT + + public: + Setup(QWidget *parent, ModelData & model); + virtual ~Setup(); + + private slots: + void on_protocolCB_currentIndexChanged(int index); + void on_protocolCB_2_currentIndexChanged(int index); + void on_protocolCB_3_currentIndexChanged(int index); + void on_fsm1CB_currentIndexChanged(int index); + void on_fsm2CB_currentIndexChanged(int index); + void on_modelVoice_SB_editingFinished(); + void on_T2ThrTrgChkB_toggled(bool checked); + void on_ttraceCB_currentIndexChanged(int index); + void on_instantTrim_CB_currentIndexChanged(int index); + void on_thrExpoChkB_toggled(bool checked); + void on_thrTrimChkB_toggled(bool checked); + void on_extendedLimitsChkB_toggled(bool checked); + void on_extendedTrimsChkB_toggled(bool checked); + void on_thrwarnChkB_toggled(bool checked); + void on_thrrevChkB_toggled(bool checked); + void on_timer1Perm_toggled(bool checked); + void on_timer2Perm_toggled(bool checked); + void on_timer1Minute_toggled(bool checked); + void on_timer2Minute_toggled(bool checked); + void on_timer1CountDownBeep_toggled(bool checked); + void on_timer2CountDownBeep_toggled(bool checked); + void fssldEdited(); + void fssbEdited(); + void fssldValueChanged(); + void fssbValueChanged(); + void on_ppmDelaySB_editingFinished(); + void on_ppmDelaySB_2_editingFinished(); + void on_ppmDelaySB_3_editingFinished(); + void on_numChannelsSB_editingFinished(); + void on_numChannelsSB_2_editingFinished(); + void on_numChannelsSB_3_editingFinished(); + void on_numChannelsStart_editingFinished(); + void on_numChannelsStart_2_editingFinished(); + void on_numChannelsStart_3_editingFinished(); +// void void ModelEdit::on_numChannelsStart_3_editingFinished(); + void on_pulsePolCB_currentIndexChanged(int index); + void on_pulsePolCB_2_currentIndexChanged(int index); + void on_pulsePolCB_3_currentIndexChanged(int index); + void on_ppmFrameLengthDSB_editingFinished(); + void on_ppmFrameLengthDSB_2_editingFinished(); + void on_ppmFrameLengthDSB_3_editingFinished(); + void on_DSM_Type_currentIndexChanged(int index); + void on_DSM_Type_2_currentIndexChanged(int index); + void on_pxxRxNum_editingFinished(); + void on_pxxRxNum_2_editingFinished(); + + // TODO void on_trimSWCB_currentIndexChanged(int index); + void on_trimIncCB_currentIndexChanged(int index); + void on_timer1DirCB_currentIndexChanged(int index); + void on_timer1ModeCB_currentIndexChanged(int index); + void on_timer1ValTE_editingFinished(); + void on_timer1ModeBCB_currentIndexChanged(int index); + void on_timer2DirCB_currentIndexChanged(int index); + void on_timer2ModeCB_currentIndexChanged(int index); + void on_timer2ValTE_editingFinished(); + void on_timer2ModeBCB_currentIndexChanged(int index); + void on_modelNameLE_editingFinished(); + void on_modelImage_CB_currentIndexChanged(int index); + + void on_bcRUDChkB_toggled(bool checked); + void on_bcELEChkB_toggled(bool checked); + void on_bcTHRChkB_toggled(bool checked); + void on_bcAILChkB_toggled(bool checked); + void on_bcP1ChkB_toggled(bool checked); + void on_bcP2ChkB_toggled(bool checked); + void on_bcP3ChkB_toggled(bool checked); + void on_bcP4ChkB_toggled(bool checked); + void on_bcREaChkB_toggled(bool checked); + void on_bcREbChkB_toggled(bool checked); + + void startupSwitchEdited(); + + private: + Ui::Setup *ui; + void tabModelEditSetup(); +}; + +#endif // SETUP_H diff --git a/companion/src/modeledit/setup.ui b/companion/src/modeledit/setup.ui new file mode 100644 index 000000000..94dbaadfb --- /dev/null +++ b/companion/src/modeledit/setup.ui @@ -0,0 +1,3759 @@ + + + Setup + + + Qt::NonModal + + + true + + + + 0 + 0 + + + + + 0 + 0 + + + + Form + + + + + + true + + + + 0 + 0 + + + + 0 + + + true + + + false + + + + + 0 + 0 + + + + ModelSetup + + + + + + Timer2 + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + Disable Throttle Warning + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + + + + Extended Limits + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Throttle Trim + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Throttle Source + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Qt::Horizontal + + + + + + + Center beep + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Trim Increment + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + Exponential + + + + + Extra Fine + + + + + Fine + + + + + Medium + + + + + Coarse + + + + + + + + Qt::Horizontal + + + + + + + + 0 + 0 + + + + Switch startup Warning + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + 0 + + + 6 + + + + + + 0 + 0 + + + + Qt::Vertical + + + + + + + + 0 + 0 + + + + Qt::Vertical + + + + + + + + 0 + 0 + + + + Qt::Vertical + + + + + + + + 0 + 0 + + + + 3POS + + + Qt::AlignCenter + + + + + + + + 0 + 0 + + + + Check + + + Qt::AlignCenter + + + + + + + Qt::LeftToRight + + + THR + + + + + + + + ON + + + + + OFF + + + + + + + + Qt::LeftToRight + + + RUD + + + + + + + Qt::LeftToRight + + + ELE + + + + + + + Qt::LeftToRight + + + AIL + + + + + + + Qt::LeftToRight + + + GEA + + + + + + + true + + + + ID0 + + + + + ID1 + + + + + ID2 + + + + + + + + + 0 + 0 + + + + Qt::Vertical + + + + + + + + 0 + 0 + + + + Qt::Vertical + + + + + + + + 0 + 0 + + + + Qt::Vertical + + + + + + + + + QLayout::SetMinimumSize + + + 0 + + + 0 + + + + + + 0 + 0 + + + + + ON + + + + + OFF + + + + + + + + + 0 + 0 + + + + SB + + + Qt::AlignCenter + + + + + + + + 0 + 0 + + + + SD + + + Qt::AlignCenter + + + + + + + + 0 + 0 + + + + SA + + + Qt::AlignCenter + + + + + + + + 0 + 0 + + + + Check + + + Qt::AlignCenter + + + + + + + + 0 + 0 + + + + + 0 + 50 + + + + + 16777215 + 50 + + + + 0 + + + 2 + + + 1 + + + 0 + + + Qt::Vertical + + + true + + + QSlider::TicksBothSides + + + 1 + + + + + + + + 0 + 0 + + + + + 0 + 50 + + + + + 16777215 + 50 + + + + 0 + + + 2 + + + 1 + + + 0 + + + Qt::Vertical + + + true + + + QSlider::TicksBothSides + + + 1 + + + + + + + + 0 + 0 + + + + SC + + + Qt::AlignCenter + + + + + + + + 0 + 0 + + + + + 0 + 50 + + + + + 16777215 + 50 + + + + 0 + + + 2 + + + 1 + + + 0 + + + Qt::Vertical + + + true + + + QSlider::TicksBothSides + + + 1 + + + + + + + + 0 + 0 + + + + SG + + + Qt::AlignCenter + + + + + + + + 0 + 0 + + + + SE + + + Qt::AlignCenter + + + + + + + + 0 + 0 + + + + + 0 + 50 + + + + + 16777215 + 50 + + + + 0 + + + 2 + + + 1 + + + 0 + + + Qt::Vertical + + + true + + + QSlider::TicksBothSides + + + 1 + + + + + + + + 0 + 0 + + + + + 0 + 50 + + + + + 16777215 + 50 + + + + 0 + + + 2 + + + 1 + + + 0 + + + Qt::Vertical + + + true + + + QSlider::TicksBothSides + + + 1 + + + + + + + + 0 + 0 + + + + SF + + + Qt::AlignCenter + + + + + + + + 0 + 0 + + + + + 0 + 50 + + + + + 16777215 + 50 + + + + 0 + + + 2 + + + 1 + + + 0 + + + Qt::Vertical + + + true + + + QSlider::TicksBothSides + + + 1 + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 0 + 0 + + + + + 0 + 50 + + + + + 16777215 + 50 + + + + 0 + + + 1 + + + 1 + + + 1 + + + 0 + + + Qt::Vertical + + + true + + + QSlider::TicksBothSides + + + 1 + + + + + + + + + + + REa + + + + + + + RUD + + + + + + + ELE + + + + + + + THR + + + + + + + AIL + + + + + + + P1 + + + + + + + P2 + + + + + + + P3 + + + + + + + REb + + + + + + + RS + + + + + + + + + + + + + + + + Throttle2Trig + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 16777215 + 16777215 + + + + + + + + + 0 + 0 + + + + + + + + + + + Instant Trim + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + + + + + + + + + + + Extended Trims + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + + + + + + + + + + + + Reverse Throttle Operation + + + + + + + Reverse throttle operation. +If this is checked the throttle will be reversed. Idle will be forward, trim will also be reversed and the throttle warning will be reversed as well. + + + + + + + + + + + + Qt::Vertical + + + QSizePolicy::MinimumExpanding + + + + 20 + 0 + + + + + + + + + + + + + + + Master + + + + + Slave + + + + + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + usec + + + 100 + + + 800 + + + 50 + + + 300 + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + PPM delay + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Pulse Shift (polarity) + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Trainer Mode + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + mSec + + + 1 + + + 12.500000000000000 + + + 32.500000000000000 + + + 0.500000000000000 + + + 22.500000000000000 + + + + + + + + 0 + 0 + + + + + Negative + + + + + Positive + + + + + + + + PPM Frame Length + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + font-weight:bold; + + + Master/Trainer Port + + + + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + ch + + + 1 + + + 16 + + + 2 + + + 8 + + + + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + ch + + + 1 + + + 32 + + + 1 + + + 8 + + + + + + + + 0 + 0 + + + + Channels + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Start + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + + + + + + + + + PPM delay + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + Polarity + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + Negative + + + + + Positive + + + + + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + usec + + + 100 + + + 800 + + + 50 + + + 300 + + + + + + + + 0 + 0 + + + + PPM Frame Length + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + mSec + + + 1 + + + 12.500000000000000 + + + 32.500000000000000 + + + 0.500000000000000 + + + 22.500000000000000 + + + + + + + + 0 + 0 + + + + + + + 1 + + + 125 + + + 1 + + + 1 + + + + + + + Qt::Horizontal + + + + 5 + 20 + + + + + + + + + 0 + 0 + + + + DSM Type + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + LP4/LP5 + + + + + DSM2only + + + + + DSM2/DSMX + + + + + + + + + 0 + 0 + + + + RX Number + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + PPM + + + + + Silver A + + + + + Silver B + + + + + Silver C + + + + + Trac 09 + + + + + + + + font-weight: bold; + + + RF Module 1 + + + + + + + + 0 + 0 + + + + Protocol + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Qt::Vertical + + + QSizePolicy::MinimumExpanding + + + + 20 + 0 + + + + + + + + + + Start + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + ch + + + 1 + + + 32 + + + 1 + + + 1 + + + + + + + + 0 + 0 + + + + Channels + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + ch + + + 1 + + + 16 + + + 2 + + + 8 + + + + + + + + + + + + + + + + + + PPM delay + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + usec + + + 100 + + + 800 + + + 50 + + + 300 + + + + + + + + 0 + 0 + + + + + Negative + + + + + Positive + + + + + + + + + 0 + 0 + + + + Polarity + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + RX Number + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + + + 1 + + + 125 + + + 1 + + + 1 + + + + + + + + 0 + 0 + + + + DSM Type + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + LP4/LP5 + + + + + DSM2only + + + + + DSM2/DSMX + + + + + + + + font-weight:bold; + + + RF Module 2 + + + + + + + Qt::Vertical + + + QSizePolicy::MinimumExpanding + + + + 20 + 0 + + + + + + + + + 0 + 0 + + + + PPM Frame Length + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + mSec + + + 1 + + + 12.500000000000000 + + + 32.500000000000000 + + + 0.500000000000000 + + + 22.500000000000000 + + + + + + + Qt::Horizontal + + + + 5 + 20 + + + + + + + + + PPM + + + + + Silver A + + + + + Silver B + + + + + Silver C + + + + + Trac 09 + + + + + + + + + 0 + 0 + + + + Protocol + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + Start + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + ch + + + 1 + + + 32 + + + 1 + + + 1 + + + + + + + + 0 + 0 + + + + Channels + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + ch + + + 1 + + + 16 + + + 2 + + + 8 + + + + + + + + + + + + + + Throttle Expo + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Model Name + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Timer1 + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + 2 + + + + + true + + + QDateTimeEdit::MinuteSection + + + mm:ss + + + + + + + + Count Down + + + + + Count Up + + + + + + + + + + + + 0 + 0 + + + + TriggerB + + + + + + + + + + Persistent + + + + + + + (00:00:00) + + + + + + + MinuteBeep + + + + + + + CountDownBeep + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + 2 + + + + + true + + + QDateTimeEdit::MinuteSection + + + mm:ss + + + + + + + + Count Down + + + + + Count Up + + + + + + + + + + + + 0 + 0 + + + + TriggerB + + + + + + + + + + Persistent + + + + + + + (00:00:00) + + + + + + + MinuteBeep + + + + + + + CountDownBeep + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + 0 + 0 + + + + 10 + + + + + + + Model Voice + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + + + 260 + + + 511 + + + 1 + + + 260 + + + + + + + Model Image + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 0 + 0 + + + + + 64 + 32 + + + + + 64 + 32 + + + + QFrame::Panel + + + QFrame::Raised + + + + + + true + + + + + + + + + + + + + Failsafe + + + + + + External module + + + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + false + + + true + + + -100 + + + 100 + + + + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + false + + + true + + + -100 + + + 100 + + + + + + + -100 + + + 100 + + + Qt::Horizontal + + + + + + + CH12 + + + + + + + -100 + + + 100 + + + Qt::Horizontal + + + + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + false + + + true + + + -100 + + + 100 + + + + + + + -100 + + + 100 + + + Qt::Horizontal + + + + + + + -100 + + + 100 + + + Qt::Horizontal + + + + + + + CH01 + + + + + + + CH04 + + + + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + false + + + true + + + -100 + + + 100 + + + + + + + -100 + + + 100 + + + Qt::Horizontal + + + + + + + CH10 + + + + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + false + + + true + + + -100 + + + 100 + + + + + + + CH02 + + + + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + false + + + true + + + -100 + + + 100 + + + + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + false + + + true + + + -100 + + + 100 + + + + + + + -100 + + + 100 + + + Qt::Horizontal + + + + + + + CH11 + + + + + + + -100 + + + 100 + + + Qt::Horizontal + + + + + + + CH03 + + + + + + + CH09 + + + + + + + -100 + + + 100 + + + Qt::Horizontal + + + + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + false + + + true + + + -100 + + + 100 + + + + + + + CH05 + + + + + + + -100 + + + 100 + + + Qt::Horizontal + + + + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + false + + + true + + + -100 + + + 100 + + + + + + + CH06 + + + + + + + -100 + + + 100 + + + Qt::Horizontal + + + + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + false + + + true + + + -100 + + + 100 + + + + + + + CH07 + + + + + + + -100 + + + 100 + + + Qt::Horizontal + + + + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + false + + + true + + + -100 + + + 100 + + + + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + false + + + true + + + -100 + + + 100 + + + + + + + -100 + + + 100 + + + Qt::Horizontal + + + + + + + CH08 + + + + + + + Qt::Vertical + + + + + + + CH13 + + + + + + + -100 + + + 100 + + + Qt::Horizontal + + + + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + false + + + true + + + -100 + + + 100 + + + + + + + CH14 + + + + + + + -100 + + + 100 + + + Qt::Horizontal + + + + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + false + + + true + + + -100 + + + 100 + + + + + + + CH15 + + + + + + + -100 + + + 100 + + + Qt::Horizontal + + + + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + false + + + true + + + -100 + + + 100 + + + + + + + CH16 + + + + + + + -100 + + + 100 + + + Qt::Horizontal + + + + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + false + + + true + + + -100 + + + 100 + + + + + + + Qt::Vertical + + + + + + + Qt::Vertical + + + + + + + + + Failsafe Mode + + + + + + + + Hold + + + + + Custom + + + + + No Pulses + + + + + + + + + + + + + Qt::Vertical + + + + 20 + 1 + + + + + + + + Internal Module + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + true + + + -100 + + + 100 + + + + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + true + + + -100 + + + 100 + + + + + + + CH14 + + + + + + + CH09 + + + + + + + CH02 + + + + + + + -100 + + + 100 + + + Qt::Horizontal + + + + + + + CH01 + + + + + + + -100 + + + 100 + + + Qt::Horizontal + + + + + + + CH04 + + + + + + + -100 + + + 100 + + + Qt::Horizontal + + + + + + + CH12 + + + + + + + -100 + + + 100 + + + Qt::Horizontal + + + + + + + CH10 + + + + + + + -100 + + + 100 + + + Qt::Horizontal + + + + + + + -100 + + + 100 + + + Qt::Horizontal + + + + + + + CH03 + + + + + + + -100 + + + 100 + + + Qt::Horizontal + + + + + + + CH11 + + + + + + + -100 + + + 100 + + + Qt::Horizontal + + + + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + true + + + -100 + + + 100 + + + + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + true + + + -100 + + + 100 + + + + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + true + + + -100 + + + 100 + + + + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + true + + + -100 + + + 100 + + + + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + true + + + -100 + + + 100 + + + + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + true + + + -100 + + + 100 + + + + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + true + + + -100 + + + 100 + + + + + + + CH05 + + + + + + + -100 + + + 100 + + + Qt::Horizontal + + + + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + true + + + -100 + + + 100 + + + + + + + CH06 + + + + + + + -100 + + + 100 + + + Qt::Horizontal + + + + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + true + + + -100 + + + 100 + + + + + + + -100 + + + 100 + + + Qt::Horizontal + + + + + + + CH07 + + + + + + + CH08 + + + + + + + -100 + + + 100 + + + Qt::Horizontal + + + + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + true + + + -100 + + + 100 + + + + + + + CH13 + + + + + + + -100 + + + 100 + + + Qt::Horizontal + + + + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + true + + + -100 + + + 100 + + + + + + + -100 + + + 100 + + + Qt::Horizontal + + + + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + true + + + -100 + + + 100 + + + + + + + CH15 + + + + + + + -100 + + + 100 + + + Qt::Horizontal + + + + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + true + + + -100 + + + 100 + + + + + + + CH16 + + + + + + + -100 + + + 100 + + + Qt::Horizontal + + + + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + true + + + -100 + + + 100 + + + + + + + Qt::Vertical + + + + + + + Qt::Vertical + + + + + + + Qt::Vertical + + + + + + + + + Failsafe Mode + + + + + + + + Hold + + + + + Custom + + + + + No Pulses + + + + + + + + + + + + + + + + + + diff --git a/companion/src/modeledit/telemetry.cpp b/companion/src/modeledit/telemetry.cpp new file mode 100644 index 000000000..22db68ae4 --- /dev/null +++ b/companion/src/modeledit/telemetry.cpp @@ -0,0 +1,939 @@ +#include "telemetry.h" +#include "ui_telemetry.h" +#include "ui_telemetry_analog.h" +#include "helpers.h" + +TelemetryAnalog::TelemetryAnalog(QWidget *parent, FrSkyChannelData & analog): + QWidget(parent), + ui(new Ui::TelemetryAnalog), + analog(analog), + lock(false) +{ + ui->setupUi(this); + + float ratio; + + if (analog.type==0 || analog.type==1 || analog.type==2) { + ratio = (analog.ratio<RatioSB->setDecimals(1); + ui->RatioSB->setMaximum(25.5*GetEepromInterface()->getCapability(TelemetryMaxMultiplier)); + } + else { + ratio = analog.ratio<RatioSB->setDecimals(0); + ui->RatioSB->setMaximum(255*GetEepromInterface()->getCapability(TelemetryMaxMultiplier)); + } + ui->RatioSB->setValue(ratio); + + update(); + + ui->UnitCB->setCurrentIndex(analog.type); + ui->alarm1LevelCB->setCurrentIndex(analog.alarms[0].level); + ui->alarm1GreaterCB->setCurrentIndex(analog.alarms[0].greater); + ui->alarm2LevelCB->setCurrentIndex(analog.alarms[1].level); + ui->alarm2GreaterCB->setCurrentIndex(analog.alarms[1].greater); + + if (!(GetEepromInterface()->getCapability(Telemetry) & TM_HASOFFSET)) { + ui->CalibSB->hide(); + ui->CalibLabel->hide(); + } + else { + ui->label_Max->setText(tr("Range")); + } +} + +void TelemetryAnalog::update() +{ + float ratio, alarm1value, alarm2value; + if (analog.ratio==0) { + ui->alarm1ValueSB->setMinimum(0); + ui->alarm1ValueSB->setMaximum(0); + ui->alarm2ValueSB->setMinimum(0); + ui->alarm2ValueSB->setMaximum(0); + ui->CalibSB->setMinimum(0); + ui->CalibSB->setMaximum(0); + ui->CalibSB->setValue(0); + ui->alarm1ValueSB->setValue(0); + ui->alarm2ValueSB->setValue(0); + return; + } + + if (analog.type==0 || analog.type==1 || analog.type==2) { + ratio=(analog.ratio<alarm1ValueSB->setDecimals(2); + ui->alarm1ValueSB->setSingleStep(ratio/255.0); + ui->alarm2ValueSB->setDecimals(2); + ui->alarm2ValueSB->setSingleStep(ratio/255.0); + ui->alarm1ValueSB->setMinimum((analog.ratio*1.0*analog.offset)/2550.0); + ui->alarm1ValueSB->setMaximum(ratio+(analog.ratio*1.0*analog.offset)/2550.0); + ui->alarm2ValueSB->setMinimum((analog.offset*1.0*analog.ratio)/2550.0); + ui->alarm2ValueSB->setMaximum(ratio+(analog.offset*1.0*analog.ratio)/2550.0); + } + else { + ratio=analog.ratio<alarm1ValueSB->setDecimals(2); + ui->alarm1ValueSB->setSingleStep(ratio/255.0); + ui->alarm2ValueSB->setDecimals(2); + ui->alarm2ValueSB->setSingleStep(ratio/255.0); + ui->alarm1ValueSB->setMinimum((analog.offset*1.0*analog.ratio)/255.0); + ui->alarm1ValueSB->setMaximum(ratio+(analog.offset*1.0*analog.ratio)/255.0); + ui->alarm2ValueSB->setMinimum((analog.offset*1.0*analog.ratio)/255.0); + ui->alarm2ValueSB->setMaximum(ratio+(analog.offset*1.0*analog.ratio)/255.0); + } + ui->CalibSB->setDecimals(2); + ui->CalibSB->setMaximum((ratio*127)/255.0); + ui->CalibSB->setMinimum((-ratio*128)/255.0); + ui->CalibSB->setSingleStep(ratio/255.0); + ui->CalibSB->setValue((analog.offset*ratio)/255); + alarm1value=ratio*(analog.alarms[0].value/255.0+analog.offset/255.0); + alarm2value=ratio*(analog.alarms[1].value/255.0+analog.offset/255.0);; + ui->alarm1ValueSB->setValue(alarm1value); + ui->alarm2ValueSB->setValue(alarm2value); +} + +void TelemetryAnalog::on_UnitCB_currentIndexChanged(int index) +{ + float ratio; + analog.type=index; + switch (index) { + case 0: + case 1: + case 2: + ui->RatioSB->setDecimals(1); + ui->RatioSB->setMaximum(25.5*GetEepromInterface()->getCapability(TelemetryMaxMultiplier)); + ratio=(analog.ratio<RatioSB->setDecimals(0); + ui->RatioSB->setMaximum(255*GetEepromInterface()->getCapability(TelemetryMaxMultiplier)); + ratio=(analog.ratio<RatioSB->setValue(ratio); + update(); + emit modified(); +} + +void TelemetryAnalog::on_RatioSB_valueChanged() +{ + if (!lock) { + if (analog.type==0 || analog.type==1 || analog.type==2) { + analog.multiplier = findmult(ui->RatioSB->value(), 25.5); + float singlestep =(1<RatioSB->setSingleStep(singlestep); + ui->RatioSB->setValue(round(ui->RatioSB->value()/singlestep)*singlestep); + lock=false; + } + else { + analog.multiplier = findmult(ui->RatioSB->value(), 255); + float singlestep =(1<RatioSB->setSingleStep(singlestep); + ui->RatioSB->setValue(round(ui->RatioSB->value()/singlestep)*singlestep); + lock = false; + } + emit modified(); + } +} + +void TelemetryAnalog::on_RatioSB_editingFinished() +{ + float ratio, calib, alarm1value,alarm2value; + if (lock) return; + if (analog.type==0 || analog.type==1 || analog.type==2) { + analog.multiplier = findmult(ui->RatioSB->value(), 25.5); + ui->CalibSB->setSingleStep((1<alarm1ValueSB->setSingleStep((1<alarm2ValueSB->setSingleStep((1<RatioSB->value()*10))/(1 <RatioSB->value(), 255); + ui->CalibSB->setSingleStep(1<alarm1ValueSB->setSingleStep(1<alarm2ValueSB->setSingleStep(1<RatioSB->value()/(1 << analog.multiplier)); + } + ui->CalibSB->setMaximum((ui->RatioSB->value()*127)/255); + ui->CalibSB->setMinimum((ui->RatioSB->value()*-128)/255); + ui->alarm1ValueSB->setMaximum(ui->RatioSB->value()); + ui->alarm2ValueSB->setMaximum(ui->RatioSB->value()); + repaint(); + ratio=analog.ratio * (1 << analog.multiplier); + calib=ui->CalibSB->value(); + alarm1value=ui->alarm1ValueSB->value(); + alarm2value=ui->alarm2ValueSB->value(); + if (analog.type==0) { + calib*=10; + alarm1value*=10; + alarm2value*=10; + } + if (calib>0) { + if (calib>((ratio*127)/255)) { + analog.offset=127; + } else { + analog.offset=round(calib*255/ratio); + } + } + if (calib<0) { + if (calib<((ratio*-128)/255)) { + analog.offset=-128; + } else { + analog.offset=round(calib*255/ratio); + } + } + analog.alarms[0].value=round((alarm1value*255-analog.offset*(analog.ratio<CalibSB->value()/ratio)); + calib=ratio*analog.offset/255.0; + alarm1value=ui->alarm1ValueSB->value(); + alarm2value=ui->alarm2ValueSB->value(); + if (alarm1value(ratio+calib)) { + alarm1value=ratio+calib; + } + if (alarm2value(ratio+calib)) { + alarm2value=ratio+calib; + } + analog.alarms[0].value=round(((alarm1value-calib)*255)/ratio); + analog.alarms[1].value=round(((alarm2value-calib)*255)/ratio); + } else { + analog.offset=0; + analog.alarms[0].value=0; + analog.alarms[1].value=0; + } + update(); + // TODO ? telBarUpdate(); + emit modified(); +} + +void TelemetryAnalog::on_alarm1LevelCB_currentIndexChanged(int index) +{ + analog.alarms[0].level = index; + emit modified(); +} + + +void TelemetryAnalog::on_alarm1GreaterCB_currentIndexChanged(int index) +{ + analog.alarms[0].greater = index; + emit modified(); +} + +void TelemetryAnalog::on_alarm1ValueSB_editingFinished() +{ + float ratio, calib, alarm1value; + ratio=analog.ratio<alarm1ValueSB->value(); + if (analog.type==0) { + ratio/=10; + } + if (alarm1value<((calib*ratio)/255)) { + analog.alarms[0].value=0; + } else if (alarm1value>(ratio+(calib*ratio)/255)) { + analog.alarms[0].value=255; + } else { + analog.alarms[0].value = round((alarm1value-((calib*ratio)/255))/ratio*255); + } + update(); + emit modified(); +} + +void TelemetryAnalog::on_alarm2LevelCB_currentIndexChanged(int index) +{ + analog.alarms[1].level = index; + emit modified(); +} + +void TelemetryAnalog::on_alarm2GreaterCB_currentIndexChanged(int index) +{ + analog.alarms[1].greater = index; + emit modified(); +} + +void TelemetryAnalog::on_alarm2ValueSB_editingFinished() +{ + float ratio, calib, alarm2value; + ratio = analog.ratio<alarm2ValueSB->value(); + if (analog.type==0) { + ratio/=10; + } + if (alarm2value<((calib*ratio)/255)) { + analog.alarms[1].value=0; + } else if (alarm2value>(ratio+(calib*ratio)/255)) { + analog.alarms[1].value=255; + } else { + analog.alarms[1].value = round((alarm2value-((calib*ratio)/255))/ratio*255); + } + update(); + emit modified(); +} + +TelemetryAnalog::~TelemetryAnalog() +{ + delete ui; +} + +/******************************************************/ + +TelemetryPanel::TelemetryPanel(QWidget *parent, ModelData & model): + ModelPanel(parent, model), + ui(new Ui::Telemetry) +{ + ui->setupUi(this); + + analogs[0] = new TelemetryAnalog(this, model.frsky.channels[0]); + ui->A1Layout->addWidget(analogs[0]); + connect(analogs[0], SIGNAL(modified()), this, SLOT(onAnalogModified())); + analogs[1] = new TelemetryAnalog(this, model.frsky.channels[1]); + ui->A2Layout->addWidget(analogs[1]); + connect(analogs[1], SIGNAL(modified()), this, SLOT(onAnalogModified())); + + QGroupBox* barsgb[3] = { ui->CS1Bars, ui->CS2Bars, ui->CS3Bars }; + QGroupBox* numsgb[3] = { ui->CS1Nums, ui->CS2Nums, ui->CS3Nums }; + + QComboBox* barscb[12] = { ui->telBarCS1B1_CB, ui->telBarCS1B2_CB, ui->telBarCS1B3_CB, ui->telBarCS1B4_CB, + ui->telBarCS2B1_CB, ui->telBarCS2B2_CB, ui->telBarCS2B3_CB, ui->telBarCS2B4_CB, + ui->telBarCS3B1_CB, ui->telBarCS3B2_CB, ui->telBarCS3B3_CB, ui->telBarCS3B4_CB}; + QDoubleSpinBox* minSB[12] = { ui->telMinCS1SB1, ui->telMinCS1SB2, ui->telMinCS1SB3, ui->telMinCS1SB4, + ui->telMinCS2SB1, ui->telMinCS2SB2, ui->telMinCS2SB3, ui->telMinCS2SB4, + ui->telMinCS3SB1, ui->telMinCS3SB2, ui->telMinCS3SB3, ui->telMinCS3SB4}; + QDoubleSpinBox* maxSB[12] = { ui->telMaxCS1SB1, ui->telMaxCS1SB2, ui->telMaxCS1SB3, ui->telMaxCS1SB4, + ui->telMaxCS2SB1, ui->telMaxCS2SB2, ui->telMaxCS2SB3, ui->telMaxCS2SB4, + ui->telMaxCS3SB1, ui->telMaxCS3SB2, ui->telMaxCS3SB3, ui->telMaxCS3SB4}; + QComboBox* tmp[36] = { ui->telemetryCS1F1_CB, ui->telemetryCS1F2_CB, ui->telemetryCS1F3_CB, ui->telemetryCS1F4_CB, ui->telemetryCS1F5_CB, ui->telemetryCS1F6_CB, ui->telemetryCS1F7_CB, ui->telemetryCS1F8_CB, ui->telemetryCS1F9_CB, ui->telemetryCS1F10_CB, ui->telemetryCS1F11_CB, ui->telemetryCS1F12_CB, + ui->telemetryCS2F1_CB, ui->telemetryCS2F2_CB, ui->telemetryCS2F3_CB, ui->telemetryCS2F4_CB, ui->telemetryCS2F5_CB, ui->telemetryCS2F6_CB, ui->telemetryCS2F7_CB, ui->telemetryCS2F8_CB, ui->telemetryCS2F9_CB, ui->telemetryCS2F10_CB, ui->telemetryCS2F11_CB, ui->telemetryCS2F12_CB, + ui->telemetryCS3F1_CB, ui->telemetryCS3F2_CB, ui->telemetryCS3F3_CB, ui->telemetryCS3F4_CB, ui->telemetryCS3F5_CB, ui->telemetryCS3F6_CB, ui->telemetryCS3F7_CB, ui->telemetryCS3F8_CB, ui->telemetryCS3F9_CB, ui->telemetryCS3F10_CB, ui->telemetryCS3F11_CB, ui->telemetryCS3F12_CB}; + + memcpy(barsGB, barsgb, sizeof(barsGB)); + memcpy(numsGB, numsgb, sizeof(numsGB)); + memcpy(barsCB, barscb, sizeof(barsCB)); + memcpy(this->maxSB, maxSB, sizeof(this->maxSB)); + memcpy(this->minSB, minSB, sizeof(this->minSB)); + memcpy(csf, tmp, sizeof(csf)); + + setup(); +} + +TelemetryPanel::~TelemetryPanel() +{ + delete ui; +} + +void TelemetryPanel::setup() +{ + QSettings settings("companion9x", "companion9x"); + QString firmware_id = settings.value("firmware", default_firmware_variant.id).toString(); + + lock=true; + ui->telemetryCSType1->setCurrentIndex(model.frsky.screens[0].type); + ui->telemetryCSType2->setCurrentIndex(model.frsky.screens[1].type); + ui->telemetryCSType3->setCurrentIndex(model.frsky.screens[2].type); + + for (int i=0; i<3; i++) { + bool isNum = (model.frsky.screens[i].type==0); + barsGB[i]->setVisible(!isNum); + numsGB[i]->setVisible(isNum); + } + + connect(ui->telemetryCSType1,SIGNAL(currentIndexChanged(int)),this,SLOT(ScreenTypeCBcurrentIndexChanged(int))); + connect(ui->telemetryCSType2,SIGNAL(currentIndexChanged(int)),this,SLOT(ScreenTypeCBcurrentIndexChanged(int))); + connect(ui->telemetryCSType3,SIGNAL(currentIndexChanged(int)),this,SLOT(ScreenTypeCBcurrentIndexChanged(int))); + + //frsky Settings + if (!GetEepromInterface()->getCapability(TelemetryRSSIModel) ) { + ui->RSSIGB->hide(); + } + ui->rssiAlarm1SB->setValue(model.frsky.rssiAlarms[0].value); + ui->rssiAlarm2SB->setValue(model.frsky.rssiAlarms[1].value); + ui->rssiAlarm1CB->setCurrentIndex(model.frsky.rssiAlarms[0].level); + ui->rssiAlarm2CB->setCurrentIndex(model.frsky.rssiAlarms[1].level); + + if (!GetEepromInterface()->getCapability(HasAltitudeSel)) { + ui->AltitudeGPS_ChkB->hide(); + } else { + ui->AltitudeGPS_ChkB->setChecked(model.frsky.FrSkyGpsAlt); + } + int varioCap=GetEepromInterface()->getCapability(HasVario); + // if (IS_TARANIS(GetEepromInterface()->getBoard())) { + if (false) { + ui->AltitudeToolbar_ChkB->setChecked(model.frsky.altitudeDisplayed); + } else { + ui->AltitudeToolbar_ChkB->hide(); + } + if (!varioCap) { + ui->varioLimitMax_DSB->hide(); + ui->varioLimitMinOff_ChkB->hide(); + ui->varioLimitMin_DSB->hide(); + ui->varioLimitCenterMin_DSB->hide(); + ui->varioLimitCenterMax_DSB->hide(); + ui->varioLimit_label->hide(); + ui->VarioLabel_1->hide(); + ui->VarioLabel_2->hide(); + ui->VarioLabel_3->hide(); + ui->VarioLabel_4->hide(); + ui->varioSourceCB->hide(); + ui->varioSource_label->hide(); + } else { + if (!GetEepromInterface()->getCapability(HasVarioSink)) { + ui->varioLimitMinOff_ChkB->hide(); + ui->varioLimitMin_DSB->hide(); + ui->varioLimitCenterMin_DSB->hide(); + ui->VarioLabel_1->hide(); + ui->VarioLabel_2->hide(); + } + ui->varioLimitMin_DSB->setValue(model.frsky.varioMin-10); + ui->varioLimitMax_DSB->setValue(model.frsky.varioMax+10); + ui->varioLimitCenterMax_DSB->setValue((model.frsky.varioCenterMax/10.0)+0.5); + ui->varioSourceCB->setCurrentIndex(model.frsky.varioSource); + if (model.frsky.varioCenterMin==-16) { + ui->varioLimitMinOff_ChkB->setChecked(true); + ui->varioLimitCenterMin_DSB->setValue(-2.0); + ui->varioLimitCenterMin_DSB->setDisabled(true); + } else { + ui->varioLimitMinOff_ChkB->setChecked(false); + ui->varioLimitCenterMin_DSB->setValue((model.frsky.varioCenterMin/10.0)-0.5); + } + int mask=1; + for (int i=0; i< ui->varioSourceCB->count(); i++) { + if (!(varioCap&mask)) { + QModelIndex index = ui->varioSourceCB->model()->index(i, 0); + QVariant v(0); + ui->varioSourceCB->model()->setData(index, v, Qt::UserRole - 1); + } + mask <<=1; + } + } + + if (!(GetEepromInterface()->getCapability(HasAltitudeSel)||GetEepromInterface()->getCapability(HasVario))) { + ui->altimetryGB->hide(); + } + if (GetEepromInterface()->getCapability(NoTelemetryProtocol)) { + model.frsky.usrProto=1; + ui->frskyProtoCB->setDisabled(true); + } else { + ui->frskyProtoCB->setEnabled(true); + } + + if (GetEepromInterface()->getCapability(TelemetryCSFields)==0) { + ui->groupBox_5->hide(); + } else { + if (GetEepromInterface()->getCapability(TelemetryCSFields)==8) { + ui->tabCsView->removeTab(1); + ui->tabCsView->removeTab(2); + } + if (GetEepromInterface()->getCapability(TelemetryCSFields)==16) { + ui->tabCsView->removeTab(2); + } + int cols=GetEepromInterface()->getCapability(TelemetryColsCSFields); + if (cols==0) cols=2; + for (int screen=0; screen<(GetEepromInterface()->getCapability(TelemetryCSFields)/(4*cols)); screen++) { + for (int c=0; chide(); + } + } + } + } + + if (!GetEepromInterface()->getCapability(TelemetryUnits)) { + ui->frskyUnitsCB->setDisabled(true); + int index=0; + if (firmware_id.contains("imperial")) { + index=1; + } + ui->frskyUnitsCB->setCurrentIndex(index); + } + if ((GetEepromInterface()->getCapability(Telemetry)&TM_HASWSHH)) { + ui->frskyProtoCB->addItem(tr("Winged Shadow How High")); + } else { + ui->frskyProtoCB->addItem(tr("Winged Shadow How High (not supported)")); + } + + ui->frskyProtoCB->setCurrentIndex(model.frsky.usrProto); + ui->frskyUnitsCB->setCurrentIndex(model.frsky.imperial); + ui->frskyBladesCB->setCurrentIndex(model.frsky.blades); + ui->frskyCurrentCB->setCurrentIndex(model.frsky.currentSource); + ui->frskyVoltCB->setCurrentIndex(model.frsky.voltsSource); + + for (int screen=0; screen<2;screen++) { + for (int rows=0; rows<4; rows++) { + for (int cols=0; cols<3; cols++) { + int index=screen*12+cols*4+rows; + populateCustomScreenFieldCB(csf[index], model.frsky.screens[screen].body.lines[rows].source[cols], (rows<4), model.frsky.usrProto); + } + } + } + + for (int j=0; j<12; j++) { + int screen = j/4; + int field = j%4; + populateCustomScreenFieldCB(barsCB[j], model.frsky.screens[screen].body.bars[field].source, false, model.frsky.usrProto); + switch (model.frsky.screens[screen].body.bars[field].source-1) { + case TELEMETRY_SOURCE_TX_BATT: + case TELEMETRY_SOURCE_A1: + case TELEMETRY_SOURCE_A1_MIN: + case TELEMETRY_SOURCE_A2: + case TELEMETRY_SOURCE_A2_MIN: + case TELEMETRY_SOURCE_CELLS_SUM: + case TELEMETRY_SOURCE_VFAS: + case TELEMETRY_SOURCE_CURRENT_MAX: + case TELEMETRY_SOURCE_CURRENT: + minSB[j]->setDecimals(1); + maxSB[j]->setDecimals(1); + break; + case TELEMETRY_SOURCE_CELL: + minSB[j]->setDecimals(2); + maxSB[j]->setDecimals(2); + break; + default: + minSB[j]->setDecimals(0); + maxSB[j]->setDecimals(0); + } + minSB[j]->setMinimum(getBarValue(model.frsky.screens[screen].body.bars[field].source, 0, &model.frsky)); + minSB[j]->setMaximum(getBarValue(model.frsky.screens[screen].body.bars[field].source, 255, &model.frsky)); + minSB[j]->setSingleStep(getBarStep(model.frsky.screens[screen].body.bars[field].source)); + minSB[j]->setValue(getBarValue(model.frsky.screens[screen].body.bars[field].source, model.frsky.screens[screen].body.bars[field].barMin, &model.frsky)); + maxSB[j]->setMinimum(getBarValue(model.frsky.screens[screen].body.bars[field].source, 0, &model.frsky)); + maxSB[j]->setMaximum(getBarValue(model.frsky.screens[screen].body.bars[field].source, 255, &model.frsky)); + maxSB[j]->setSingleStep(getBarStep(model.frsky.screens[screen].body.bars[field].source)); + maxSB[j]->setValue(getBarValue(model.frsky.screens[screen].body.bars[field].source, (255-model.frsky.screens[screen].body.bars[field].barMax), &model.frsky)); + + if (model.frsky.screens[screen].body.bars[field].source==0 || model.frsky.screens[screen].type==0) { + minSB[j]->setDisabled(true); + maxSB[j]->setDisabled(true); + } + connect(barsCB[j],SIGNAL(currentIndexChanged(int)),this,SLOT(telBarCBcurrentIndexChanged(int))); + connect(maxSB[j],SIGNAL(editingFinished()),this,SLOT(telMaxSBeditingFinished())); + connect(minSB[j],SIGNAL(editingFinished()),this,SLOT(telMinSBeditingFinished())); + } + lock=false; +} + +void TelemetryPanel::onAnalogModified() +{ + emit modified(); +} + +void TelemetryPanel::on_frskyUnitsCB_currentIndexChanged(int index) +{ + model.frsky.imperial=index; + emit modified(); +} + +void TelemetryPanel::on_frskyBladesCB_currentIndexChanged(int index) +{ + model.frsky.blades=index; + emit modified(); +} + +void TelemetryPanel::on_frskyCurrentCB_currentIndexChanged(int index) +{ + model.frsky.currentSource=index; + emit modified(); +} + +void TelemetryPanel::on_frskyVoltCB_currentIndexChanged(int index) +{ + model.frsky.voltsSource=index; + emit modified(); +} + +void TelemetryPanel::on_frskyProtoCB_currentIndexChanged(int index) +{ + if (lock) return; + int bindex[12]; + lock=true; + for (int i=0; i<12; i++) { + bindex[i]=barsCB[i]->currentIndex(); + model.frsky.usrProto=index; + populateCustomScreenFieldCB(barsCB[i], bindex[i], false, model.frsky.usrProto); + } + if (!GetEepromInterface()->getCapability(TelemetryCSFields)) { + ui->groupBox_5->hide(); + } else { + for (int screen=0; screen<2;screen++) { + for (int rows=0; rows<4; rows++) { + for (int cols=0; cols<3; cols++) { + int index=screen*12+cols*4+rows; + populateCustomScreenFieldCB(csf[index], model.frsky.screens[screen].body.lines[rows].source[cols], (rows<4), model.frsky.usrProto); + } + } + } + } + lock=false; + if (index==0) { + for (int i=0; i<12; i++) { + if (bindex[i]>2) { + barsCB[i]->setCurrentIndex(0); + } else { + barsCB[i]->setCurrentIndex(bindex[i]); + } + } + } else if (index==2) { + for (int i=0; i<12; i++) { + if (bindex[i]>3) { + barsCB[i]->setCurrentIndex(0); + } else { + barsCB[i]->setCurrentIndex(bindex[i]); + } + } + } else { + for (int i=0; i<12; i++) { + barsCB[i]->setCurrentIndex(bindex[i]); + } + } + emit modified(); +} + +void TelemetryPanel::on_rssiAlarm1CB_currentIndexChanged(int index) { + if (lock) return; + model.frsky.rssiAlarms[0].level=index; + emit modified(); +} + +void TelemetryPanel::on_rssiAlarm2CB_currentIndexChanged(int index) { + if (lock) return; + model.frsky.rssiAlarms[1].level=index; + emit modified(); +} + +void TelemetryPanel::on_rssiAlarm1SB_editingFinished() +{ + if (lock) return; + model.frsky.rssiAlarms[0].value=(ui->rssiAlarm1SB->value()); + emit modified(); +} + +void TelemetryPanel::on_rssiAlarm2SB_editingFinished() +{ + if (lock) return; + model.frsky.rssiAlarms[1].value=(ui->rssiAlarm2SB->value()); + emit modified(); +} + +void TelemetryPanel::on_AltitudeGPS_ChkB_toggled(bool checked) +{ + if (lock) return; + model.frsky.FrSkyGpsAlt = checked; + emit modified(); + //AltitudeGPS_CB +} + +void TelemetryPanel::on_AltitudeToolbar_ChkB_toggled(bool checked) +{ + model.frsky.altitudeDisplayed = checked; + emit modified(); +} + +void TelemetryPanel::on_varioSourceCB_currentIndexChanged(int index) +{ + if (lock) return; + model.frsky.varioSource = index; + emit modified(); +} + +void TelemetryPanel::on_varioLimitMin_DSB_editingFinished() +{ + if (lock) return; + model.frsky.varioMin= round(ui->varioLimitMin_DSB->value()+10); + emit modified(); +} + +void TelemetryPanel::on_varioLimitMax_DSB_editingFinished() +{ + if (lock) return; + model.frsky.varioMax= round(ui->varioLimitMax_DSB->value()-10); + emit modified(); +} + +void TelemetryPanel::on_varioLimitCenterMin_DSB_editingFinished() +{ + if (lock) return; + if (ui->varioLimitCenterMin_DSB->value()>ui->varioLimitCenterMax_DSB->value()) { + ui->varioLimitCenterMax_DSB->setValue(ui->varioLimitCenterMin_DSB->value()); + } + model.frsky.varioCenterMin= round((ui->varioLimitCenterMin_DSB->value()+0.5)*10); + emit modified(); +} + +void TelemetryPanel::on_varioLimitMinOff_ChkB_toggled(bool checked) +{ + if (lock) return; + model.frsky.varioCenterMin = -16; + if (!checked) { + lock=true; + ui->varioLimitCenterMin_DSB->setValue(-2.0); + ui->varioLimitCenterMin_DSB->setEnabled(true); + lock=false; + } else { + ui->varioLimitCenterMin_DSB->setValue(-2.0); + ui->varioLimitCenterMin_DSB->setDisabled(true); + } + emit modified(); +} + +void TelemetryPanel::on_varioLimitCenterMax_DSB_editingFinished() +{ + if (lock) return; + if (ui->varioLimitCenterMin_DSB->value()>ui->varioLimitCenterMax_DSB->value()) { + ui->varioLimitCenterMax_DSB->setValue(ui->varioLimitCenterMin_DSB->value()); + } + model.frsky.varioCenterMax= round((ui->varioLimitCenterMax_DSB->value()-0.5)*10); + emit modified(); +} + +void TelemetryPanel::telBarUpdate() +{ + int index; + lock=true; + for (int i=0; i<12; i++) { + int screen=i/4; + index=barsCB[i]->currentIndex(); + if (index==TELEMETRY_SOURCE_A1 || index==TELEMETRY_SOURCE_A1 || index==TELEMETRY_SOURCE_A1_MIN || index==TELEMETRY_SOURCE_A2_MIN) { + minSB[i]->setMinimum(getBarValue(index, 0, &model.frsky)); + minSB[i]->setMaximum(getBarValue(index, 255, &model.frsky)); + minSB[i]->setSingleStep(getBarStep(index)); + maxSB[i]->setMinimum(getBarValue(index, 0, &model.frsky)); + maxSB[i]->setMaximum(getBarValue(index, 255, &model.frsky)); + maxSB[i]->setSingleStep(getBarStep(index)); + minSB[i]->setValue(getBarValue(index, model.frsky.screens[screen].body.bars[i%4].barMin, &model.frsky)); + maxSB[i]->setValue(getBarValue(index, 255-model.frsky.screens[screen].body.bars[i%4].barMax, &model.frsky)); + } + } + lock=false; +} + +void TelemetryPanel::ScreenTypeCBcurrentIndexChanged(int index) +{ + if (lock) return; + + QComboBox *comboBox = qobject_cast(sender()); + int screen = comboBox->objectName().right(1).toInt() -1; + lock=true; + model.frsky.screens[screen].type=index; + + for (int i=0; i<3; i++) { + bool isNum = (model.frsky.screens[i].type==0); + barsGB[i]->setVisible(!isNum); + numsGB[i]->setVisible(isNum); + } + + lock=false; + emit modified(); +} + +void TelemetryPanel::telBarCBcurrentIndexChanged(int index) +{ + if (lock) return; + QComboBox *comboBox = qobject_cast(sender()); + int screenId = comboBox->objectName().mid(8,1).toInt() - 1; + int barId = comboBox->objectName().mid(10,1).toInt() - 1; + int bar=barId+screenId*4; + model.frsky.screens[screenId].body.bars[barId].source=index; + lock=true; + if (index==0) { + model.frsky.screens[screenId].body.bars[barId].barMin=0; + model.frsky.screens[screenId].body.bars[barId].barMax=0; + minSB[bar]->setDisabled(true); + maxSB[bar]->setDisabled(true); + } else { + minSB[bar]->setEnabled(true); + maxSB[bar]->setEnabled(true); + } + switch (index-1) { + case TELEMETRY_SOURCE_TX_BATT: + case TELEMETRY_SOURCE_A1: + case TELEMETRY_SOURCE_A1_MIN: + case TELEMETRY_SOURCE_A2: + case TELEMETRY_SOURCE_A2_MIN: + case TELEMETRY_SOURCE_CELLS_SUM: + case TELEMETRY_SOURCE_VFAS: + case TELEMETRY_SOURCE_CURRENT_MAX: + case TELEMETRY_SOURCE_CURRENT: + minSB[bar]->setDecimals(1); + maxSB[bar]->setDecimals(1); + break; + case TELEMETRY_SOURCE_CELL: + minSB[bar]->setDecimals(2); + maxSB[bar]->setDecimals(2); + break; + default: + minSB[bar]->setDecimals(0); + maxSB[bar]->setDecimals(0); + } + minSB[bar]->setMinimum(getBarValue(index, 0, &model.frsky)); + minSB[bar]->setMaximum(getBarValue(index, 255, &model.frsky)); + minSB[bar]->setSingleStep(getBarStep(index)); + maxSB[bar]->setMinimum(getBarValue(index, 0, &model.frsky)); + maxSB[bar]->setMaximum(getBarValue(index, 255, &model.frsky)); + maxSB[bar]->setSingleStep(getBarStep(index)); + minSB[bar]->setValue(getBarValue(index, model.frsky.screens[screenId].body.bars[barId].barMin, &model.frsky)); + maxSB[bar]->setValue(getBarValue(index, 255-model.frsky.screens[screenId].body.bars[barId].barMax, &model.frsky)); + lock=false; + emit modified(); +} + +void TelemetryPanel::telMinSBeditingFinished() +{ + if (lock) return; + QDoubleSpinBox *spinBox = qobject_cast(sender()); + int screenId = spinBox->objectName().mid(8,1).toInt() - 1; + int barId = spinBox->objectName().right(1).toInt() - 1; + int minId = barId+screenId*4; + lock=true; + if (model.frsky.screens[screenId].body.bars[barId].source==TELEMETRY_SOURCE_A1 || model.frsky.screens[screenId].body.bars[barId].source==TELEMETRY_SOURCE_A1_MIN) { + model.frsky.screens[screenId].body.bars[barId].barMin=round((minSB[minId]->value()-analogs[0]->ui->CalibSB->value())/getBarStep(model.frsky.screens[screenId].body.bars[barId].source)); + } else if (model.frsky.screens[screenId].body.bars[minId].source==TELEMETRY_SOURCE_A2 || model.frsky.screens[screenId].body.bars[minId].source==TELEMETRY_SOURCE_A2_MIN) { + model.frsky.screens[screenId].body.bars[barId].barMin=round((minSB[minId]->value()-analogs[1]->ui->CalibSB->value())/getBarStep(model.frsky.screens[screenId].body.bars[barId].source)); + } else { + model.frsky.screens[screenId].body.bars[barId].barMin=round((minSB[minId]->value()-getBarValue(model.frsky.screens[screenId].body.bars[barId].source, 0, &model.frsky))/getBarStep(model.frsky.screens[screenId].body.bars[barId].source)); + } + spinBox->setValue(getBarValue(model.frsky.screens[screenId].body.bars[barId].source, model.frsky.screens[screenId].body.bars[barId].barMin, &model.frsky)); + if (maxSB[minId]->value()value()) { + model.frsky.screens[screenId].body.bars[minId].barMax=(255-model.frsky.screens[screenId].body.bars[barId].barMin+1); + maxSB[minId]->setValue(getBarValue(model.frsky.screens[screenId].body.bars[barId].source, 255-model.frsky.screens[screenId].body.bars[barId].barMax, &model.frsky)); + } + maxSB[minId]->setMinimum(getBarValue(model.frsky.screens[screenId].body.bars[barId].source, (model.frsky.screens[screenId].body.bars[barId].barMin+1), &model.frsky)); + lock=false; + emit modified(); +} + +void TelemetryPanel::telMaxSBeditingFinished() +{ + if (lock) return; + QDoubleSpinBox *spinBox = qobject_cast(sender()); + int screenId = spinBox->objectName().mid(8,1).toInt() - 1; + int barId = spinBox->objectName().right(1).toInt() - 1; + lock=true; + if (model.frsky.screens[screenId].body.bars[barId].source==5) { + model.frsky.screens[screenId].body.bars[barId].barMax = (255-round((spinBox->value()-analogs[0]->ui->CalibSB->value())/getBarStep(model.frsky.screens[screenId].body.bars[barId].source))); + } else if (model.frsky.screens[screenId].body.bars[barId].source==6) { + model.frsky.screens[screenId].body.bars[barId].barMax = (255-round((spinBox->value()-analogs[1]->ui->CalibSB->value())/getBarStep(model.frsky.screens[screenId].body.bars[barId].source))); + } else { + model.frsky.screens[screenId].body.bars[barId].barMax = (255-round((spinBox->value()-getBarValue(model.frsky.screens[screenId].body.bars[barId].source, 0, &model.frsky))/getBarStep(model.frsky.screens[screenId].body.bars[barId].source) )); + } + spinBox->setValue(getBarValue(model.frsky.screens[screenId].body.bars[barId].source, (255-model.frsky.screens[screenId].body.bars[barId].barMax), &model.frsky)); + lock=false; + emit modified(); +} + +void TelemetryPanel::customFieldEdited() +{ + if (!lock) { + lock = true; + + int cols=GetEepromInterface()->getCapability(TelemetryColsCSFields); + if (cols==0) cols=2; + + for (int i=0; igetCapability(TelemetryCSFields); i++) { + int screen=i/(4*cols); + int r=((i%(4*cols))%4); + int c=((i%(4*cols))/4); + if (model.frsky.screens[screen].type==0) { + model.frsky.screens[screen].body.lines[r].source[c]=csf[i]->currentIndex(); + } + } + emit modified(); + + lock = false; + } +} + +float TelemetryPanel::getBarStep(int barId) +{ + switch (barId-1) { + case TELEMETRY_SOURCE_TX_BATT: + return 0.1; + break; + case TELEMETRY_SOURCE_TIMER1: + case TELEMETRY_SOURCE_TIMER2: + return 3; + break; + case TELEMETRY_SOURCE_A1: + case TELEMETRY_SOURCE_A1_MIN: + return (analogs[0]->ui->RatioSB->value()/255); + break; + case TELEMETRY_SOURCE_A2: + case TELEMETRY_SOURCE_A2_MIN: + return (analogs[1]->ui->RatioSB->value()/255); + break; + case TELEMETRY_SOURCE_ALT: + case TELEMETRY_SOURCE_GPS_ALT: + case TELEMETRY_SOURCE_ALT_MAX: + case TELEMETRY_SOURCE_ALT_MIN: + return 8; + break; + case TELEMETRY_SOURCE_RPM: + case TELEMETRY_SOURCE_RPM_MAX: + return 50; + break; + case TELEMETRY_SOURCE_CELLS_SUM: + case TELEMETRY_SOURCE_VFAS: + return 0.1; + break; + case TELEMETRY_SOURCE_CELL: + return 0.02; + break; + case TELEMETRY_SOURCE_HDG: + return 2; + break; + case TELEMETRY_SOURCE_DIST: + case TELEMETRY_SOURCE_DIST_MAX: + return 8; + break; + case TELEMETRY_SOURCE_CURRENT_MAX: + case TELEMETRY_SOURCE_CURRENT: + return 0.5; + break; + case TELEMETRY_SOURCE_POWER: + return 5; + break; + case TELEMETRY_SOURCE_CONSUMPTION: + return 20; + break; + case TELEMETRY_SOURCE_SPEED: + case TELEMETRY_SOURCE_SPEED_MAX: + if (model.frsky.imperial==1) { + return 1; + } else { + return 1.852; + } + break; + default: + return 1; + break; + } +} diff --git a/companion/src/modeledit/telemetry.h b/companion/src/modeledit/telemetry.h new file mode 100644 index 000000000..6984a9f51 --- /dev/null +++ b/companion/src/modeledit/telemetry.h @@ -0,0 +1,98 @@ +#ifndef TELEMETRY_H +#define TELEMETRY_H + +#include "modelpanel.h" +#include +#include +#include + +namespace Ui { + class TelemetryAnalog; + class Telemetry; +} + +class TelemetryAnalog : public QWidget +{ + Q_OBJECT + + friend class TelemetryPanel; + + public: + TelemetryAnalog(QWidget *parent, FrSkyChannelData & analog); + virtual ~TelemetryAnalog(); + + signals: + void modified(); + + private slots: + void on_UnitCB_currentIndexChanged(int index); + void on_RatioSB_editingFinished(); + void on_RatioSB_valueChanged(); + void on_CalibSB_editingFinished(); + void on_alarm1LevelCB_currentIndexChanged(int index); + void on_alarm1GreaterCB_currentIndexChanged(int index); + void on_alarm1ValueSB_editingFinished(); + void on_alarm2LevelCB_currentIndexChanged(int index); + void on_alarm2GreaterCB_currentIndexChanged(int index); + void on_alarm2ValueSB_editingFinished(); + + private: + Ui::TelemetryAnalog *ui; + FrSkyChannelData & analog; + bool lock; + + void update(); +}; + +class TelemetryPanel : public ModelPanel +{ + Q_OBJECT + + public: + TelemetryPanel(QWidget *parent, ModelData & model); + virtual ~TelemetryPanel(); + + signals: + void modified(); + + private slots: + void onAnalogModified(); + void on_frskyProtoCB_currentIndexChanged(int index); + void on_frskyUnitsCB_currentIndexChanged(int index); + void on_frskyBladesCB_currentIndexChanged(int index); + void on_frskyCurrentCB_currentIndexChanged(int index); + void on_frskyVoltCB_currentIndexChanged(int index); + void on_AltitudeToolbar_ChkB_toggled(bool checked); + void on_rssiAlarm1CB_currentIndexChanged(int index); + void on_rssiAlarm2CB_currentIndexChanged(int index); + void on_rssiAlarm1SB_editingFinished(); + void on_rssiAlarm2SB_editingFinished(); + void on_AltitudeGPS_ChkB_toggled(bool checked); + void on_varioSourceCB_currentIndexChanged(int index); + void on_varioLimitMin_DSB_editingFinished(); + void on_varioLimitMax_DSB_editingFinished(); + void on_varioLimitCenterMin_DSB_editingFinished(); + void on_varioLimitMinOff_ChkB_toggled(bool checked); + void on_varioLimitCenterMax_DSB_editingFinished(); + void telBarCBcurrentIndexChanged(int index); + void ScreenTypeCBcurrentIndexChanged(int index); + void telMaxSBeditingFinished(); + void telMinSBeditingFinished(); + void customFieldEdited(); + + private: + Ui::Telemetry *ui; + TelemetryAnalog * analogs[2]; + QGroupBox* barsGB[3]; + QGroupBox* numsGB[3]; + QComboBox* barsCB[12]; + QDoubleSpinBox* minSB[12]; + QDoubleSpinBox* maxSB[12]; + QComboBox* csf[36]; + + void setup(); + float getBarStep(int barId); + void telBarUpdate(); +}; + +#endif // TELEMETRY_H diff --git a/companion/src/modeledit/telemetry.ui b/companion/src/modeledit/telemetry.ui new file mode 100644 index 000000000..704eab921 --- /dev/null +++ b/companion/src/modeledit/telemetry.ui @@ -0,0 +1,2013 @@ + + + Telemetry + + + + 0 + 0 + 738 + 507 + + + + Form + + + + + + QLayout::SetMinimumSize + + + + + + 0 + 0 + + + + true + + + + + + A1 + + + false + + + + 1 + + + 1 + + + + + + + + A2 + + + + 1 + + + 1 + + + + + + + + + 0 + 0 + + + + RSSI + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + + + Alarm 1 + + + + + + + + 0 + 0 + + + + + ---- + + + + + Yellow + + + + + Orange + + + + + Red + + + + + + + + true + + + + 0 + 0 + + + + + + + 20 + + + 80 + + + 1 + + + 50 + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + Alarm 2 + + + + + + + + 0 + 0 + + + + + ---- + + + + + Yellow + + + + + Orange + + + + + Red + + + + + + + + true + + + + 0 + 0 + + + + + + + 20 + + + 80 + + + 1 + + + 50 + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + + + QLayout::SetMinimumSize + + + + + + 0 + 0 + + + + Serial Protocol + + + + 1 + + + 1 + + + + + + + + 0 + 0 + + + + Volt source + + + + + + + + 0 + 0 + + + + + Metric + + + + + Imperial + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + Current source + + + + + + + + 0 + 0 + + + + + 100 + 0 + + + + Protocol + + + + + + + + 0 + 0 + + + + + NONE + + + + + A1 + + + + + A2 + + + + + FAS + + + + + + + + + 0 + 0 + + + + + None + + + + + FrSky Sensor Hub + + + + + + + + + 0 + 0 + + + + + A1 + + + + + A2 + + + + + FAS + + + + + CEL + + + + + + + + + 0 + 0 + + + + + 2 + + + + + 3 + + + + + 4 + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + Units + + + + + + + + 0 + 0 + + + + Blades + + + + + + + + + + + + + 0 + 0 + + + + Altimetry / Vario + + + + 1 + + + 1 + + + + + + + + 0 + 0 + + + + + Alti + + + + + Alti+ + + + + + Vario + + + + + A1 + + + + + A2 + + + + + + + + + + + 0 + 0 + + + + Sink Max + + + Qt::AlignCenter + + + + + + + + 0 + 0 + + + + 1 + + + -2.000000000000000 + + + 0.000000000000000 + + + 0.100000000000000 + + + -0.500000000000000 + + + + + + + + 0 + 0 + + + + 1 + + + -1.000000000000000 + + + 2.000000000000000 + + + 0.100000000000000 + + + 0.500000000000000 + + + + + + + + 0 + 0 + + + + 0 + + + 3.000000000000000 + + + 17.000000000000000 + + + 10.000000000000000 + + + + + + + + 0 + 0 + + + + 0 + + + -17.000000000000000 + + + -3.000000000000000 + + + -10.000000000000000 + + + + + + + + 0 + 0 + + + + Off + + + + + + + + 0 + 0 + + + + Climb Max + + + Qt::AlignCenter + + + + + + + + 0 + 0 + + + + Sink Min + + + Qt::AlignCenter + + + + + + + + 0 + 0 + + + + Climb Min + + + Qt::AlignCenter + + + + + + + + + Vario source + + + + + + + Vario limits + + + + + + + + + + 0 + 0 + + + + Use GPS as altitude source + + + + + + + + 0 + 0 + + + + Display altitude in toolbar + + + + + + + + + + + + + + + + + + + 0 + 0 + + + + + + + + 1 + + + 1 + + + + + + 0 + 0 + + + + 0 + + + + Telemetry screen 1 + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + Custom Screen Type + + + + + + + + 0 + 0 + + + + + 90 + 0 + + + + + Nums + + + + + Bars + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + + 0 + 0 + + + + + + + + + 0 + 0 + + + + + + + + + 0 + 0 + + + + + + + + + 0 + 0 + + + + + + + + + 0 + 0 + + + + + + + + + 0 + 0 + + + + + + + + + 0 + 0 + + + + + + + + + 0 + 0 + + + + + + + + + 0 + 0 + + + + + + + + + 0 + 0 + + + + + + + + + 0 + 0 + + + + + + + + + 0 + 0 + + + + + + + + + + + + + + Source + + + Qt::AlignCenter + + + + + + + Min + + + Qt::AlignCenter + + + + + + + Gauge + + + Qt::AlignCenter + + + + + + + Max + + + Qt::AlignCenter + + + + + + + + + + 0 + + + + + + + false + + + Background:qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(0, 0, 128, 255), stop:0.339795 rgba(0, 0, 128, 255), stop:0.339799 rgba(255, 255, 255, 255), stop:0.662444 rgba(255, 255, 255, 255),) + + + + QFrame::Panel + + + QFrame::Raised + + + Gauge 1 + + + Qt::AlignCenter + + + + + + + 0 + + + + + + + + + + 0 + + + + + + + false + + + Background:qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(0, 0, 128, 255), stop:0.339795 rgba(0, 0, 128, 255), stop:0.339799 rgba(255, 255, 255, 255), stop:0.662444 rgba(255, 255, 255, 255),) + + + + QFrame::Panel + + + QFrame::Raised + + + Gauge 2 + + + Qt::AlignCenter + + + + + + + 0 + + + + + + + + + + 0 + + + + + + + false + + + Background:qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(0, 0, 128, 255), stop:0.339795 rgba(0, 0, 128, 255), stop:0.339799 rgba(255, 255, 255, 255), stop:0.662444 rgba(255, 255, 255, 255),) + + + + QFrame::Panel + + + QFrame::Raised + + + Gauge 3 + + + Qt::AlignCenter + + + + + + + 0 + + + + + + + + + + 0 + + + + + + + false + + + Background:qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(0, 0, 128, 255), stop:0.339795 rgba(0, 0, 128, 255), stop:0.339799 rgba(255, 255, 255, 255), stop:0.662444 rgba(255, 255, 255, 255),) + + + + QFrame::Panel + + + QFrame::Raised + + + Gauge 4 + + + Qt::AlignCenter + + + + + + + 0 + + + + + + + + + + + Telemetry screen 2 + + + + + + + + + + 0 + 0 + + + + + + + + + 0 + 0 + + + + + + + + + 0 + 0 + + + + + + + + + 0 + 0 + + + + + + + + + 0 + 0 + + + + + + + + + 0 + 0 + + + + + + + + + 0 + 0 + + + + + + + + + 0 + 0 + + + + + + + + + 0 + 0 + + + + + + + + + 0 + 0 + + + + + + + + + 0 + 0 + + + + + + + + + 0 + 0 + + + + + + + + + + + + + + Source + + + Qt::AlignCenter + + + + + + + Min + + + Qt::AlignCenter + + + + + + + Gauge + + + Qt::AlignCenter + + + + + + + Max + + + Qt::AlignCenter + + + + + + + + + + 0 + + + + + + + false + + + Background:qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(0, 0, 128, 255), stop:0.339795 rgba(0, 0, 128, 255), stop:0.339799 rgba(255, 255, 255, 255), stop:0.662444 rgba(255, 255, 255, 255),) + + + + QFrame::Panel + + + QFrame::Raised + + + Gauge 1 + + + Qt::AlignCenter + + + + + + + 0 + + + + + + + + + + 0 + + + + + + + false + + + Background:qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(0, 0, 128, 255), stop:0.339795 rgba(0, 0, 128, 255), stop:0.339799 rgba(255, 255, 255, 255), stop:0.662444 rgba(255, 255, 255, 255),) + + + + QFrame::Panel + + + QFrame::Raised + + + Gauge 2 + + + Qt::AlignCenter + + + + + + + 0 + + + + + + + + + + 0 + + + + + + + false + + + Background:qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(0, 0, 128, 255), stop:0.339795 rgba(0, 0, 128, 255), stop:0.339799 rgba(255, 255, 255, 255), stop:0.662444 rgba(255, 255, 255, 255),) + + + + QFrame::Panel + + + QFrame::Raised + + + Gauge 3 + + + Qt::AlignCenter + + + + + + + 0 + + + + + + + + + + 0 + + + + + + + false + + + Background:qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(0, 0, 128, 255), stop:0.339795 rgba(0, 0, 128, 255), stop:0.339799 rgba(255, 255, 255, 255), stop:0.662444 rgba(255, 255, 255, 255),) + + + + QFrame::Panel + + + QFrame::Raised + + + Gauge 4 + + + Qt::AlignCenter + + + + + + + 0 + + + + + + + + + + + + + 0 + 0 + + + + Custom Screen Type + + + + + + + + 0 + 0 + + + + + 90 + 0 + + + + + Nums + + + + + Bars + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + Telemetry screen 3 + + + + + + + + + 0 + 0 + + + + Custom Screen Type + + + + + + + + 0 + 0 + + + + + 90 + 0 + + + + + Nums + + + + + Bars + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + + 0 + 0 + + + + + + + + + 0 + 0 + + + + + + + + + 0 + 0 + + + + + + + + + 0 + 0 + + + + + + + + + 0 + 0 + + + + + + + + + 0 + 0 + + + + + + + + + 0 + 0 + + + + + + + + + 0 + 0 + + + + + + + + + 0 + 0 + + + + + + + + + 0 + 0 + + + + + + + + + 0 + 0 + + + + + + + + + 0 + 0 + + + + + + + + + + + + + + Source + + + Qt::AlignCenter + + + + + + + Min + + + Qt::AlignCenter + + + + + + + Gauge + + + Qt::AlignCenter + + + + + + + Max + + + Qt::AlignCenter + + + + + + + + 0 + 0 + + + + + + + + 0 + + + + + + + false + + + Background:qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(0, 0, 128, 255), stop:0.339795 rgba(0, 0, 128, 255), stop:0.339799 rgba(255, 255, 255, 255), stop:0.662444 rgba(255, 255, 255, 255),) + + + + QFrame::Panel + + + QFrame::Raised + + + Gauge 1 + + + Qt::AlignCenter + + + + + + + 0 + + + + + + + + + + 0 + + + + + + + false + + + Background:qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(0, 0, 128, 255), stop:0.339795 rgba(0, 0, 128, 255), stop:0.339799 rgba(255, 255, 255, 255), stop:0.662444 rgba(255, 255, 255, 255),) + + + + QFrame::Panel + + + QFrame::Raised + + + Gauge 2 + + + Qt::AlignCenter + + + + + + + 0 + + + + + + + + + + 0 + + + + + + + false + + + Background:qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(0, 0, 128, 255), stop:0.339795 rgba(0, 0, 128, 255), stop:0.339799 rgba(255, 255, 255, 255), stop:0.662444 rgba(255, 255, 255, 255),) + + + + QFrame::Panel + + + QFrame::Raised + + + Gauge 3 + + + Qt::AlignCenter + + + + + + + 0 + + + + + + + + + + 0 + + + + + + + false + + + Background:qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(0, 0, 128, 255), stop:0.339795 rgba(0, 0, 128, 255), stop:0.339799 rgba(255, 255, 255, 255), stop:0.662444 rgba(255, 255, 255, 255),) + + + + QFrame::Panel + + + QFrame::Raised + + + Gauge 4 + + + Qt::AlignCenter + + + + + + + 0 + + + + + + + + + + + + + + + + + + + + diff --git a/companion/src/modeledit/telemetry_analog.ui b/companion/src/modeledit/telemetry_analog.ui new file mode 100644 index 000000000..30a3615c0 --- /dev/null +++ b/companion/src/modeledit/telemetry_analog.ui @@ -0,0 +1,324 @@ + + + TelemetryAnalog + + + + 0 + 0 + 291 + 118 + + + + Form + + + + + + + + + 0 + 0 + + + + Unit + + + + + + + + 0 + 0 + + + + Max Value + + + + + + + + 0 + 0 + + + + Alarm 1 + + + + + + + + 0 + 0 + + + + + ---- + + + + + Yellow + + + + + Orange + + + + + Red + + + + + + + + + 0 + 0 + + + + + < + + + + + > + + + + + + + + + 0 + 0 + + + + Alarm 2 + + + + + + + + 0 + 0 + + + + + ---- + + + + + Yellow + + + + + Orange + + + + + Red + + + + + + + + + 0 + 0 + + + + + < + + + + + > + + + + + + + + + 0 + 0 + + + + Min Value + + + + + + + true + + + + 0 + 0 + + + + 0 + + + 255.000000000000000 + + + + + + + + 0 + 0 + + + + 2 + + + -12.800000000000001 + + + 12.699999999999999 + + + 0.100000000000000 + + + + + + + true + + + + 0 + 0 + + + + 0 + + + 255.000000000000000 + + + + + + + true + + + + 0 + 0 + + + + 0 + + + 255.000000000000000 + + + + + + + + 0 + 0 + + + + + Volts (V) + + + + + Amps (A) + + + + + Speed (m/s or ft/s) + + + + + Raw (-) + + + + + Speed (km/h or miles/h) + + + + + Meters (m or ft) + + + + + Temp (°) + + + + + Fuel (%) + + + + + mAmps (mA) + + + + + + + + + + + diff --git a/companion/src/modeledit/templates.cpp b/companion/src/modeledit/templates.cpp new file mode 100644 index 000000000..c45b920bf --- /dev/null +++ b/companion/src/modeledit/templates.cpp @@ -0,0 +1,852 @@ +#include "templates.h" +#include +#include + +Templates::Templates(QWidget * parent, ModelData & model): + QWidget(parent), + model(model) +{ + QGridLayout * gridLayout = new QGridLayout(this); + QListWidget * templateList = new QListWidget(this); + gridLayout->addWidget(templateList, 0, 0, 1, 1); + + templateList->addItem(tr("Simple 4-CH")); + templateList->addItem(tr("T-Cut")); + templateList->addItem(tr("Sticky T-Cut")); + templateList->addItem(tr("V-Tail")); + templateList->addItem(tr("Elevon\\Delta")); + templateList->addItem(tr("Heli Setup")); + templateList->addItem(tr("Heli Setup with gyro gain control")); + templateList->addItem(tr("Gyro gain control")); + templateList->addItem(tr("Heli Setup (Futaba's channel assignment style)")); + templateList->addItem(tr("Heli Setup with gyro gain control (Futaba's channel assignment style)")); + templateList->addItem(tr("Gyro gain control (Futaba's channel assignment style)")); + templateList->addItem(tr("Servo Test")); + templateList->addItem(tr("MultiCopter")); + templateList->addItem(tr("Use Model Config Wizard")); + + connect(templateList, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(doubleClicked(QModelIndex))); +} + +Templates::~Templates() +{ +} + +void Templates::setSwitch(unsigned int idx, unsigned int func, int v1, int v2) +{ + g_model.customSw[idx-1].func = func; + g_model.customSw[idx-1].val1 = v1; + g_model.customSw[idx-1].val2 = v2; +} + +void Templates::onDoubleClicked(QModelIndex index) +{ + QString text = ui->templateList->item(index.row())->text(); + if (index.row()==13) { + uint64_t result=0xffffffff; + modelConfigDialog *mcw = new modelConfigDialog(radioData, &result, this); + mcw->exec(); + if (result!=0xffffffff) { + applyNumericTemplate(result); + updateSettings(); + tabMixes(); + } + } else { + int res = QMessageBox::question(this,tr("Apply Template?"),tr("Apply template \"%1\"?").arg(text),QMessageBox::Yes | QMessageBox::No); + if(res!=QMessageBox::Yes) return; + applyTemplate(index.row()); + updateSettings(); + tabMixes(); + } +} + +void Templates::applyNumericTemplate(uint64_t tpl) +{ + clearCurves(); + clearExpos(false); + clearMixes(false); + int8_t heli_ar1[] = {-100, -20, 30, 70, 90}; + int8_t heli_ar2[] = {80, 70, 60, 70, 100}; + int8_t heli_ar3[] = {100, 90, 80, 90, 100}; + int8_t heli_ar4[] = {-30, -15, 0, 50, 100}; + int8_t heli_ar5[] = {-100, -50, 0, 50, 100}; + bool rx[10]; + for (int i=0; i<10 ; i++) { + rx[i]=false; + } + int thrsw=GetEepromInterface()->getCapability(GetThrSwitch); + MixData *md = &model.mixData[0]; + uint8_t spo2ch=(tpl & 0x0F); + tpl>>=4; + uint8_t spo1ch=(tpl & 0x0F); + tpl>>=4; + uint8_t fla2ch=(tpl & 0x0F); + tpl>>=4; + uint8_t fla1ch=(tpl & 0x0F); + tpl>>=4; + uint8_t rud2ch=(tpl & 0x0F); + tpl>>=4; + uint8_t ele2ch=(tpl & 0x0F); + tpl>>=4; + uint8_t ail2ch=(tpl & 0x0F); + tpl>>=4; + uint8_t chstyle=(tpl & 0x03); + tpl>>=2; + uint8_t gyro=(tpl & 0x03); + tpl>>=2; + uint8_t tailtype=(tpl & 0x03); + tpl>>=2; + uint8_t swashtype=(tpl & 0x07); + tpl>>=3; + uint8_t ruddertype=(tpl & 0x03); + tpl>>=2; + uint8_t spoilertype=(tpl & 0x3); + tpl>>=2; + uint8_t flaptype=(tpl & 0x03); + tpl>>=2; + uint8_t ailerontype=(tpl & 0x03); + tpl>>=2; + uint8_t enginetype=(tpl & 0x03); + tpl>>=2; + uint8_t modeltype=(tpl & 0x03); + + #define ICC(x) icc[(x)-1] + uint8_t icc[4] = {0}; + for(uint8_t i=1; i<=4; i++) //generate inverse array + for(uint8_t j=1; j<=4; j++) if(CC(i)==j) icc[j-1]=i; + + int ailerons; + int flaps; + int throttle; + int spoilers; + int elevators; + int rudders; + int sign; + uint8_t rxch; + switch (modeltype) { + case 0: + ailerons=ailerontype; + flaps=flaptype; + throttle=1; + switch (tailtype) { + case 0: + case 1: + rudders=1; + elevators=1; + break; + case 2: + rudders=1; + elevators=2; + break; + } + rxch=ICC(STK_RUD); + md=setDest(rxch); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 0); md->weight=100; md->swtch=RawSwitch();strncpy(md->name, tr("RUD").toAscii().data(),6); + if (tailtype==1) { + md=setDest(rxch); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 1); md->weight=-100; md->swtch=RawSwitch();strncpy(md->name, tr("ELE").toAscii().data(),6); + } + rx[rxch-1]=true; + rxch=ICC(STK_ELE); + if (tailtype==1) { + md=setDest(rxch); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 0); md->weight=100; md->swtch=RawSwitch();strncpy(md->name, tr("RUD").toAscii().data(),6); + } + md=setDest(rxch); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 1); md->weight=100; md->swtch=RawSwitch();strncpy(md->name, tr("ELE").toAscii().data(),6); + rx[rxch-1]=true; + rxch=ICC(STK_THR); + md=setDest(rxch); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight=100; md->swtch=RawSwitch();strncpy(md->name, tr("THR").toAscii().data(),6); + rx[rxch-1]=true; + if (ail2ch > 0) { + rx[ail2ch-1]=true; + } + if (ele2ch > 0) { + rx[ele2ch-1]=true; + } + if (fla1ch > 0) { + rx[fla1ch-1]=true; + } + if (fla2ch > 0) { + rx[fla2ch-1]=true; + } + if (ailerons>0) { + rxch=ICC(STK_AIL); + md=setDest(rxch); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 3); md->weight=100; md->swtch=RawSwitch();strncpy(md->name, tr("AIL").toAscii().data(),6); + rx[rxch-1]=true; + } + if (ailerons>1) { + if (ail2ch==0) { + for (int j=0; j<10 ; j++) { + if (!rx[j]) { + md=setDest(j+1); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 3); md->weight=100; md->swtch=RawSwitch();strncpy(md->name, tr("AIL2").toAscii().data(),6); + rx[j]=true; + break; + } + } + } else { + md=setDest(ail2ch); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 3); md->weight=100; md->swtch=RawSwitch();strncpy(md->name, tr("AIL2").toAscii().data(),6); + } + } + if (elevators>1) { + if (ele2ch==0) { + for (int j=0; j<10 ; j++) { + if (!rx[j]) { + md=setDest(j+1); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 1); md->weight=-100; md->swtch=RawSwitch();;strncpy(md->name, tr("ELE2").toAscii().data(),6); + rx[j]=true; + break; + } + } + }else{ + md=setDest(ele2ch); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 1); md->weight=-100; md->swtch=RawSwitch();;strncpy(md->name, tr("ELE2").toAscii().data(),6); + } + } + if (flaps>0) { + md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_MAX); md->weight=-100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,-DSW_AIL);strncpy(md->name, tr("FLAPS").toAscii().data(),6); md->speedUp=4; md->speedDown=4; + md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 5); md->weight=100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_AIL);strncpy(md->name, tr("FLAPS").toAscii().data(),6); md->speedUp=4; md->speedDown=4; + } + sign=-1; + for (uint8_t i=0; i< flaps; i++) { + sign*=-1; + int index; + if (i==0) { + index=fla1ch; + } else { + index=fla2ch; + } + if (index==0) { + for (int j=0; j<10 ; j++) { + if (!rx[j]) { + md=setDest(j+1); md->srcRaw=RawSource(SOURCE_TYPE_CH, 10); md->weight=100*sign; md->sOffset=0; md->swtch=RawSwitch();strncpy(md->name, tr("FLAP%1").arg(i+1).toAscii().data(),6); + rx[j]=true; + break; + } + } + } else { + md=setDest(index); md->srcRaw=RawSource(SOURCE_TYPE_CH, 10); md->weight=100*sign; md->sOffset=0; md->swtch=RawSwitch();strncpy(md->name, tr("FLAP%1").arg(i+1).toAscii().data(),6); + } + } + break; + case 1: + setCurve(CURVE5(1),heli_ar1); + setCurve(CURVE5(2),heli_ar2); + setCurve(CURVE5(3),heli_ar3); + setCurve(CURVE5(4),heli_ar4); + setCurve(CURVE5(5),heli_ar5); + setCurve(CURVE5(6),heli_ar5); + switch (swashtype) { + case 0: + model.swashRingData.type = HELI_SWASH_TYPE_90; + break; + case 1: + model.swashRingData.type = HELI_SWASH_TYPE_120; + break; + case 2: + model.swashRingData.type = HELI_SWASH_TYPE_120X; + break; + case 3: + model.swashRingData.type = HELI_SWASH_TYPE_140; + break; + case 4: + model.swashRingData.type = HELI_SWASH_TYPE_NONE; + break; + } + model.swashRingData.collectiveSource = RawSource(SOURCE_TYPE_CH, 10); + + if (chstyle==0) { + if (swashtype!=4) { + md=setDest(1); md->srcRaw=RawSource(SOURCE_TYPE_CYC, 0); md->weight= 100; md->swtch=RawSwitch();strncpy(md->name, tr("ELE").toAscii().data(),6); + md=setDest(2); md->srcRaw=RawSource(SOURCE_TYPE_CYC, 1); md->weight= 100; md->swtch=RawSwitch();strncpy(md->name, tr("AIL").toAscii().data(),6); + md=setDest(3); md->srcRaw=RawSource(SOURCE_TYPE_CYC, 2); md->weight= 100; md->swtch=RawSwitch();strncpy(md->name, tr("PITCH").toAscii().data(),6); + } else { + md=setDest(1); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 3); md->weight= 100; md->swtch=RawSwitch();strncpy(md->name, tr("ELE").toAscii().data(),6); + md=setDest(2); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 1); md->weight= 100; md->swtch=RawSwitch();strncpy(md->name, tr("AIL").toAscii().data(),6); + md=setDest(3); md->srcRaw=RawSource(SOURCE_TYPE_CH, 10); md->weight= 100; md->swtch=RawSwitch();strncpy(md->name, tr("PITCH").toAscii().data(),6); + } + md=setDest(4); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 0); md->weight=100; md->swtch=RawSwitch();strncpy(md->name, tr("RUD").toAscii().data(),6); + md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight= 100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID0); md->curve=CV(1); md->carryTrim=TRIM_OFF; + md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight= 100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID1); md->curve=CV(2); md->carryTrim=TRIM_OFF; + md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight= 100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID2); md->curve=CV(3); md->carryTrim=TRIM_OFF; + md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_MAX); md->weight=-100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,thrsw); md->mltpx=MLTPX_REP; + switch (gyro) { + case 1: + md=setDest(6); md->srcRaw=RawSource(SOURCE_TYPE_MAX); md->weight=30; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,-DSW_GEA);strncpy(md->name, tr("GYRO").toAscii().data(),6); + md=setDest(6); md->srcRaw=RawSource(SOURCE_TYPE_MAX); md->weight=-30; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_GEA);strncpy(md->name, tr("GYRO").toAscii().data(),6); + break; + case 2: + md=setDest(6); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 5); md->weight= 50; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,-DSW_GEA); md->sOffset=100;strncpy(md->name, tr("GYRO").toAscii().data(),6); + md=setDest(6); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 5); md->weight=-50; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_GEA); md->sOffset=100;strncpy(md->name, tr("GYRO").toAscii().data(),6); + break; + } + } else { + if (swashtype!=4) { + md=setDest(1); md->srcRaw=RawSource(SOURCE_TYPE_CYC, 1); md->weight= 100; md->swtch=RawSwitch();strncpy(md->name, tr("AIL").toAscii().data(),6); + md=setDest(2); md->srcRaw=RawSource(SOURCE_TYPE_CYC, 0); md->weight= 100; md->swtch=RawSwitch();strncpy(md->name, tr("ELE").toAscii().data(),6); + md=setDest(6); md->srcRaw=RawSource(SOURCE_TYPE_CYC, 2); md->weight= 100; md->swtch=RawSwitch();strncpy(md->name, tr("PITCH").toAscii().data(),6); + } else { + md=setDest(1); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 3); md->weight= 100; md->swtch=RawSwitch();strncpy(md->name, tr("AIL").toAscii().data(),6); + md=setDest(2); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 1); md->weight= 100; md->swtch=RawSwitch();strncpy(md->name, tr("ELE").toAscii().data(),6); + md=setDest(6); md->srcRaw=RawSource(SOURCE_TYPE_CH, 10); md->weight= 100; md->swtch=RawSwitch();strncpy(md->name, tr("PITCH").toAscii().data(),6); + } + md=setDest(4); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 0); md->weight=100; md->swtch=RawSwitch();strncpy(md->name, tr("RUD").toAscii().data(),6); + md=setDest(3); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight= 100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID0); md->curve=CV(1); md->carryTrim=TRIM_OFF; + md=setDest(3); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight= 100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID1); md->curve=CV(2); md->carryTrim=TRIM_OFF; + md=setDest(3); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight= 100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID2); md->curve=CV(3); md->carryTrim=TRIM_OFF; + md=setDest(3); md->srcRaw=RawSource(SOURCE_TYPE_MAX); md->weight=-100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,thrsw); md->mltpx=MLTPX_REP; + switch (gyro) { + case 1: + md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_MAX); md->weight=30; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,-DSW_GEA);strncpy(md->name, tr("GYRO").toAscii().data(),6); + md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_MAX); md->weight=-30; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_GEA);strncpy(md->name, tr("GYRO").toAscii().data(),6); + break; + case 2: + md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 5); md->weight= 50; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,-DSW_GEA); md->sOffset=100;strncpy(md->name, tr("GYRO").toAscii().data(),6); + md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 5); md->weight=-50; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_GEA); md->sOffset=100;strncpy(md->name, tr("GYRO").toAscii().data(),6); + break; + } + } + // collective + md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight=100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID0); md->curve=CV(4); md->carryTrim=TRIM_OFF; + md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight=100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID1); md->curve=CV(5); md->carryTrim=TRIM_OFF; + md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight=100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID2); md->curve=CV(6); md->carryTrim=TRIM_OFF; + break; + case 2: + ailerons=ailerontype; + flaps=flaptype; + spoilers=spoilertype; + throttle=enginetype; + switch (tailtype) { + case 0: + case 1: + rudders=1; + elevators=1; + break; + case 2: + rudders=1; + elevators=2; + break; + } + if (throttle==1) { + rxch=ICC(STK_THR); + md=setDest(rxch); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight=100; md->swtch=RawSwitch();strncpy(md->name, tr("THR").toAscii().data(),6); + rx[rxch-1]=true; + } + rxch=ICC(STK_RUD); + md=setDest(rxch); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 0); md->weight=100; md->swtch=RawSwitch();strncpy(md->name, tr("RUD").toAscii().data(),6); + if (tailtype==1) { + md=setDest(rxch); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 1); md->weight=-100; md->swtch=RawSwitch();strncpy(md->name, tr("RUD").toAscii().data(),6); + } + rx[rxch-1]=true; + rxch=ICC(STK_ELE); + if (tailtype==1) { + md=setDest(rxch); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 0); md->weight=-100; md->swtch=RawSwitch();strncpy(md->name, tr("ELE").toAscii().data(),6); + } + md=setDest(rxch); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 1); md->weight=100; md->swtch=RawSwitch();strncpy(md->name, tr("ELE").toAscii().data(),6); + rx[rxch-1]=true; + if (ail2ch > 0) { + rx[ail2ch-1]=true; + } + if (ele2ch > 0) { + rx[ele2ch-1]=true; + } + if (fla1ch > 0) { + rx[fla1ch-1]=true; + } + if (fla2ch > 0) { + rx[fla2ch-1]=true; + } + if (spo1ch > 0) { + rx[spo1ch-1]=true; + } + if (spo2ch > 0) { + rx[spo2ch-1]=true; + } + + if (ailerons>0) { + rxch=ICC(STK_AIL); + md=setDest(rxch); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 3); md->weight=100; md->swtch=RawSwitch();strncpy(md->name, tr("AIL").toAscii().data(),6); + rx[rxch-1]=true; + } + if (ailerons>1) { + if (ail2ch==0) { + for (int j=0; j<10 ; j++) { + if (!rx[j]) { + md=setDest(j+1); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 3); md->weight=100; md->swtch=RawSwitch();strncpy(md->name, tr("AIL2").toAscii().data(),6); + rx[j]=true; + break; + } + } + } else { + md=setDest(ail2ch); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 3); md->weight=100; md->swtch=RawSwitch();strncpy(md->name, tr("AIL2").toAscii().data(),6); + } + } + if (elevators>1) { + if (ele2ch==0) { + for (int j=0; j<10 ; j++) { + if (!rx[j]) { + md=setDest(j+1); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 1); md->weight=-100; md->swtch=RawSwitch();strncpy(md->name, tr("ELE2").toAscii().data(),6); + rx[j]=true; + break; + } + } + } else { + md=setDest(ele2ch); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 1); md->weight=-100; md->swtch=RawSwitch();strncpy(md->name, tr("ELE2").toAscii().data(),6); + } + } + if (flaps>0) { + md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_MAX); md->weight=-100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,-DSW_AIL);strncpy(md->name, tr("FLAPS").toAscii().data(),6);md->speedUp=4; md->speedDown=4; + md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 5); md->weight=100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_AIL);strncpy(md->name, tr("FLAPS").toAscii().data(),6);md->speedUp=4; md->speedDown=4; + } + sign=-1; + for (uint8_t i=0; i< flaps; i++) { + sign*=-1; + int index; + if (i==0) { + index=fla1ch; + } else { + index=fla2ch; + } + if (index==0) { + for (int j=0; j<10 ; j++) { + if (!rx[j]) { + md=setDest(j+1); md->srcRaw=RawSource(SOURCE_TYPE_CH, 10); md->weight=100*sign; md->sOffset=0; md->swtch=RawSwitch();strncpy(md->name, tr("FLAP%1").arg(i+1).toAscii().data(),6); + rx[j]=true; + break; + } + } + } else { + md=setDest(index); md->srcRaw=RawSource(SOURCE_TYPE_CH, 10); md->weight=100*sign; md->sOffset=0; md->swtch=RawSwitch();strncpy(md->name, tr("FLAP%1").arg(i+1).toAscii().data(),6); + } + } + if (spoilers>0) { + md=setDest(12); md->srcRaw=RawSource(SOURCE_TYPE_MAX); md->weight=-100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,-DSW_GEA);strncpy(md->name, tr("SPOIL").toAscii().data(),6); md->speedUp=4;;md->speedDown=4; + md=setDest(12); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 5); md->weight=100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_GEA);strncpy(md->name, tr("SPOIL").toAscii().data(),6);md->speedUp=4;md->speedDown=4; + } + sign=-1; + for (uint8_t i=0; i< spoilers; i++) { + sign*=-1; + int index; + if (i==0) { + index=spo1ch; + } else { + index=spo2ch; + } + if (index==0) { + for (int j=0; j<10 ; j++) { + if (!rx[j]) { + md=setDest(j+1); md->srcRaw=RawSource(SOURCE_TYPE_CH, 11); md->weight=100*sign; md->sOffset=0; md->swtch=RawSwitch();strncpy(md->name, tr("SPOIL%1").arg(i+1).toAscii().data(),6); + rx[j]=true; + break; + } + } + } else { + md=setDest(index); md->srcRaw=RawSource(SOURCE_TYPE_CH, 11); md->weight=100*sign; md->sOffset=0; md->swtch=RawSwitch();strncpy(md->name, tr("SPOIL%1").arg(i+1).toAscii().data(),6); + } + } + break; + case 3: + flaps=flaptype; + throttle=enginetype; + rudders=ruddertype; + if (throttle==1) { + rxch=ICC(STK_THR); + md=setDest(rxch); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight=100; md->swtch=RawSwitch();strncpy(md->name, tr("THR").toAscii().data(),6); + rx[rxch-1]=true; + } + rxch=ICC(STK_ELE); + md=setDest(rxch); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 1); md->weight=100; md->swtch=RawSwitch();strncpy(md->name, tr("ELE").toAscii().data(),6); + md=setDest(rxch); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 3); md->weight=100; md->swtch=RawSwitch();strncpy(md->name, tr("ELE").toAscii().data(),6); + rx[rxch-1]=true; + rxch=ICC(STK_AIL); + md=setDest(rxch); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 1); md->weight=-100; md->swtch=RawSwitch();strncpy(md->name, tr("AIL").toAscii().data(),6); + md=setDest(rxch); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 3); md->weight=100; md->swtch=RawSwitch();strncpy(md->name, tr("AIL").toAscii().data(),6); + rx[rxch-1]=true; + if (rudders>0) { + rxch=ICC(STK_RUD); + md=setDest(rxch); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 0); md->weight=100; md->swtch=RawSwitch();strncpy(md->name, tr("RUD").toAscii().data(),6); + rx[rxch-1]=true; + } + if (rud2ch > 0) { + rx[rud2ch-1]=true; + } + if (fla1ch > 0) { + rx[fla1ch-1]=true; + } + if (fla2ch > 0) { + rx[fla2ch-1]=true; + } + if (rudders>1) { + if (rud2ch==0) { + for (int j=0; j<10 ; j++) { + if (!rx[j]) { + md=setDest(j+1); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 0); md->weight=-100; md->swtch=RawSwitch();strncpy(md->name, tr("RUD2").toAscii().data(),6); + rx[j]=true; + break; + } + } + } else { + md=setDest(rud2ch); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 0); md->weight=-100; md->swtch=RawSwitch();strncpy(md->name, tr("RUD2").toAscii().data(),6); + } + } + if (flaps>0) { + md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_MAX); md->weight=-100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,-DSW_AIL);strncpy(md->name, tr("FLAPS").toAscii().data(),6); md->sOffset=0; md->speedUp=4; + md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 5); md->weight=100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_AIL);strncpy(md->name, tr("FLAPS").toAscii().data(),6); md->sOffset=0; md->speedUp=4; + } + sign=-1; + for (uint8_t i=0; i< flaps; i++) { + sign*=-1; + int index; + if (i==0) { + index=fla1ch; + } else { + index=fla2ch; + } + if (index==0) { + for (int j=0; j<10 ; j++) { + if (!rx[j]) { + md=setDest(j+1); md->srcRaw=RawSource(SOURCE_TYPE_CH, 10); md->weight=100*sign; md->sOffset=0; md->speedUp=4; md->speedDown=4; md->swtch=RawSwitch();strncpy(md->name, tr("FLAP%1").arg(i+1).toAscii().data(),6); + rx[j]=true; + break; + } + } + } else { + md=setDest(index); md->srcRaw=RawSource(SOURCE_TYPE_CH, 10); md->weight=100*sign; md->sOffset=0; md->speedUp=4; md->speedDown=4; md->swtch=RawSwitch();strncpy(md->name, tr("FLAP%1").arg(i+1).toAscii().data(),6); + } + } + break; + } + updateHeliTab(); + updateCurvesTab(); + if (modeltype==1 && swashtype!=4) { + ui->tabWidget->setCurrentIndex(1); + } else { + ui->tabWidget->setCurrentIndex(4); + } + resizeEvent(); +} + +void Templates::applyTemplate(uint8_t idx) +{ + int8_t heli_ar1[] = {-100, -20, 30, 70, 90}; + int8_t heli_ar2[] = {80, 70, 60, 70, 100}; + int8_t heli_ar3[] = {100, 90, 80, 90, 100}; + int8_t heli_ar4[] = {-30, -15, 0, 50, 100}; + int8_t heli_ar5[] = {-100, -50, 0, 50, 100}; + + int thrsw=GetEepromInterface()->getCapability(GetThrSwitch); + MixData *md = &model.mixData[0]; + + //CC(STK) -> vSTK + //ICC(vSTK) -> STK + #define ICC(x) icc[(x)-1] + uint8_t icc[4] = {0}; + for(uint8_t i=1; i<=4; i++) //generate inverse array + for(uint8_t j=1; j<=4; j++) if(CC(i)==j) icc[j-1]=i; + + + uint8_t j = 0; + + //Simple 4-Ch + if(idx==j++) { + if (md->destCh) + clearMixes(); + md=setDest(ICC(STK_RUD)); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 0); md->weight=100; md->swtch=RawSwitch(); + md=setDest(ICC(STK_ELE)); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 1); md->weight=100; md->swtch=RawSwitch(); + md=setDest(ICC(STK_THR)); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight=100; md->swtch=RawSwitch(); + md=setDest(ICC(STK_AIL)); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 3); md->weight=100; md->swtch=RawSwitch(); + } + + //T-Cut + if(idx==j++) { + md=setDest(ICC(STK_THR)); md->srcRaw=RawSource(SOURCE_TYPE_MAX); md->weight=-100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,thrsw); md->mltpx=MLTPX_REP; + } + + //sticky t-cut + if(idx==j++) { + md=setDest(ICC(STK_THR)); md->srcRaw=RawSource(SOURCE_TYPE_MAX); md->weight=-100; md->swtch=RawSwitch(SWITCH_TYPE_VIRTUAL, 12); md->mltpx=MLTPX_REP; + md=setDest(14); md->srcRaw=RawSource(SOURCE_TYPE_CH, 13); md->weight= 100; md->swtch=RawSwitch(); + md=setDest(14); md->srcRaw=RawSource(SOURCE_TYPE_MAX); md->weight=-100; md->swtch=RawSwitch(SWITCH_TYPE_VIRTUAL, 11); md->mltpx=MLTPX_REP; + md=setDest(14); md->srcRaw=RawSource(SOURCE_TYPE_MAX); md->weight= 100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,thrsw); md->mltpx=MLTPX_REP; + setSwitch(0xB, CS_FN_VNEG, RawSource(SOURCE_TYPE_STICK, 2).toValue(), -99); + setSwitch(0xC, CS_FN_VPOS, RawSource(SOURCE_TYPE_CH, 13).toValue(), 0); + updateSwitchesTab(); + } + + //V-Tail + if(idx==j++) { + clearMixes(); + md=setDest(ICC(STK_THR)); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight=100; md->swtch=RawSwitch(); + md=setDest(ICC(STK_AIL)); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 3); md->weight=100; md->swtch=RawSwitch(); + md=setDest(ICC(STK_RUD)); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 0); md->weight= 100; md->swtch=RawSwitch(); + md=setDest(ICC(STK_RUD)); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 1); md->weight=-100; md->swtch=RawSwitch(); + md=setDest(ICC(STK_ELE)); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 0); md->weight= 100; md->swtch=RawSwitch(); + md=setDest(ICC(STK_ELE)); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 1); md->weight= 100; md->swtch=RawSwitch(); + } + + //Elevon\\Delta + if(idx==j++) { + clearMixes(); + md=setDest(ICC(STK_THR)); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight=100; md->swtch=RawSwitch(); + md=setDest(ICC(STK_RUD)); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 0); md->weight=100; md->swtch=RawSwitch(); + md=setDest(ICC(STK_ELE)); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 1); md->weight= 100; md->swtch=RawSwitch(); + md=setDest(ICC(STK_ELE)); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 3); md->weight= 100; md->swtch=RawSwitch(); + md=setDest(ICC(STK_AIL)); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 1); md->weight=-100; md->swtch=RawSwitch(); + md=setDest(ICC(STK_AIL)); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 3); md->weight=100; md->swtch=RawSwitch(); + } + + //Heli Setup + if(idx==j++) { + clearMixes(); //This time we want a clean slate + clearCurves(); + + // Set up Mixes + // 3 cyclic channels + md=setDest(1); md->srcRaw=RawSource(SOURCE_TYPE_CYC, 0); md->weight= 100; md->swtch=RawSwitch(); + md=setDest(2); md->srcRaw=RawSource(SOURCE_TYPE_CYC, 1); md->weight= 100; md->swtch=RawSwitch(); + md=setDest(3); md->srcRaw=RawSource(SOURCE_TYPE_CYC, 2); md->weight= 100; md->swtch=RawSwitch(); + + // rudder + md=setDest(4); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 0); md->weight=100; md->swtch=RawSwitch(); + + // throttle + md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight= 100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID0); md->curve=CV(1); md->carryTrim=TRIM_OFF; + md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight= 100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID1); md->curve=CV(2); md->carryTrim=TRIM_OFF; + md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight= 100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID2); md->curve=CV(3); md->carryTrim=TRIM_OFF; + md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_MAX); md->weight=-100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,thrsw); md->mltpx=MLTPX_REP; + + // gyro gain + md=setDest(6); md->srcRaw=RawSource(SOURCE_TYPE_MAX); md->weight=30; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,-DSW_GEA); + md=setDest(6); md->srcRaw=RawSource(SOURCE_TYPE_MAX); md->weight=-30; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_GEA); + + // collective + md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight=100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID0); md->curve=CV(4); md->carryTrim=TRIM_OFF; + md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight=100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID1); md->curve=CV(5); md->carryTrim=TRIM_OFF; + md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight=100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID2); md->curve=CV(6); md->carryTrim=TRIM_OFF; + + model.swashRingData.type = HELI_SWASH_TYPE_120; + model.swashRingData.collectiveSource = RawSource(SOURCE_TYPE_CH, 10); + + // set up Curves + setCurve(CURVE5(1),heli_ar1); + setCurve(CURVE5(2),heli_ar2); + setCurve(CURVE5(3),heli_ar3); + setCurve(CURVE5(4),heli_ar4); + setCurve(CURVE5(5),heli_ar5); + setCurve(CURVE5(6),heli_ar5); + + // make sure curves are redrawn + updateHeliTab(); + updateCurvesTab(); + resizeEvent(); + } + + //Heli Setup gyro gain control + if(idx==j++) { + clearMixes(); //This time we want a clean slate + clearCurves(); + + // Set up Mixes + // 3 cyclic channels + md=setDest(1); md->srcRaw=RawSource(SOURCE_TYPE_CYC, 0); md->weight= 100; md->swtch=RawSwitch(); + md=setDest(2); md->srcRaw=RawSource(SOURCE_TYPE_CYC, 1); md->weight= 100; md->swtch=RawSwitch(); + md=setDest(3); md->srcRaw=RawSource(SOURCE_TYPE_CYC, 2); md->weight= 100; md->swtch=RawSwitch(); + + // rudder + md=setDest(4); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 0); md->weight=100; md->swtch=RawSwitch(); + + // throttle + md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight= 100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID0); md->curve=CV(1); md->carryTrim=TRIM_OFF; + md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight= 100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID1); md->curve=CV(2); md->carryTrim=TRIM_OFF; + md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight= 100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID2); md->curve=CV(3); md->carryTrim=TRIM_OFF; + md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_MAX); md->weight=-100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,thrsw); md->mltpx=MLTPX_REP; + + // gyro gain + md=setDest(6); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 5); md->weight= 50; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,-DSW_GEA); md->sOffset=100; + md=setDest(6); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 5); md->weight=-50; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_GEA); md->sOffset=100; + + // collective + md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight=100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID0); md->curve=CV(4); md->carryTrim=TRIM_OFF; + md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight=100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID1); md->curve=CV(5); md->carryTrim=TRIM_OFF; + md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight=100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID2); md->curve=CV(6); md->carryTrim=TRIM_OFF; + + model.swashRingData.type = HELI_SWASH_TYPE_120; + model.swashRingData.collectiveSource = RawSource(SOURCE_TYPE_CH, 10); + + // set up Curves + setCurve(CURVE5(1),heli_ar1); + setCurve(CURVE5(2),heli_ar2); + setCurve(CURVE5(3),heli_ar3); + setCurve(CURVE5(4),heli_ar4); + setCurve(CURVE5(5),heli_ar5); + setCurve(CURVE5(6),heli_ar5); + + // make sure curves are redrawn + updateHeliTab(); + updateCurvesTab(); + resizeEvent(); + } + + // gyro gain control + if(idx==j++) { + int res = QMessageBox::question(this,tr("Clear Mixes?"),tr("Really clear existing mixes on CH6?"),QMessageBox::Yes | QMessageBox::No); + if(res!=QMessageBox::Yes) return; + // first clear mix on ch6 + bool found=true; + while (found) { + found=false; + for (int i=0; i< GetEepromInterface()->getCapability(Mixes); i++) { + if (model.mixData[i].destCh==6) { + gm_deleteMix(i); + found=true; + break; + } + } + } + md=setDest(6); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 5); md->weight= 50; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,-DSW_GEA); md->sOffset=100; + md=setDest(6); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 5); md->weight=-50; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_GEA); md->sOffset=100; + } + + //Heli Setup futaba style + if(idx==j++) { + clearMixes(); //This time we want a clean slate + clearCurves(); + + // Set up Mixes + // 3 cyclic channels + md=setDest(1); md->srcRaw=RawSource(SOURCE_TYPE_CYC, 1); md->weight= 100; md->swtch=RawSwitch(); + md=setDest(2); md->srcRaw=RawSource(SOURCE_TYPE_CYC, 0); md->weight= 100; md->swtch=RawSwitch(); + md=setDest(6); md->srcRaw=RawSource(SOURCE_TYPE_CYC, 2); md->weight= 100; md->swtch=RawSwitch(); + + // rudder + md=setDest(4); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 0); md->weight=100; md->swtch=RawSwitch(); + + // throttle + md=setDest(3); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight= 100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID0); md->curve=CV(1); md->carryTrim=TRIM_OFF; + md=setDest(3); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight= 100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID1); md->curve=CV(2); md->carryTrim=TRIM_OFF; + md=setDest(3); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight= 100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID2); md->curve=CV(3); md->carryTrim=TRIM_OFF; + md=setDest(3); md->srcRaw=RawSource(SOURCE_TYPE_MAX); md->weight=-100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,thrsw); md->mltpx=MLTPX_REP; + + // gyro gain + md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_MAX); md->weight=30; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,-DSW_GEA); + md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_MAX); md->weight=-30; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_GEA); + + // collective + md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight=100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID0); md->curve=CV(4); md->carryTrim=TRIM_OFF; + md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight=100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID1); md->curve=CV(5); md->carryTrim=TRIM_OFF; + md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight=100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID2); md->curve=CV(6); md->carryTrim=TRIM_OFF; + + model.swashRingData.type = HELI_SWASH_TYPE_120; + model.swashRingData.collectiveSource = RawSource(SOURCE_TYPE_CH, 10); + + // set up Curves + setCurve(CURVE5(1),heli_ar1); + setCurve(CURVE5(2),heli_ar2); + setCurve(CURVE5(3),heli_ar3); + setCurve(CURVE5(4),heli_ar4); + setCurve(CURVE5(5),heli_ar5); + setCurve(CURVE5(6),heli_ar5); + + // make sure curves are redrawn + updateHeliTab(); + updateCurvesTab(); + resizeEvent(); + } + + // Heli setup futaba style with gyro gain control + if(idx==j++) { + clearMixes(); //This time we want a clean slate + clearCurves(); + + // Set up Mixes + // 3 cyclic channels + md=setDest(1); md->srcRaw=RawSource(SOURCE_TYPE_CYC, 1); md->weight= 100; md->swtch=RawSwitch(); + md=setDest(2); md->srcRaw=RawSource(SOURCE_TYPE_CYC, 0); md->weight= 100; md->swtch=RawSwitch(); + md=setDest(6); md->srcRaw=RawSource(SOURCE_TYPE_CYC, 2); md->weight= 100; md->swtch=RawSwitch(); + + // rudder + md=setDest(4); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 0); md->weight=100; md->swtch=RawSwitch(); + + // throttle + md=setDest(3); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight= 100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID0); md->curve=CV(1); md->carryTrim=TRIM_OFF; + md=setDest(3); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight= 100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID1); md->curve=CV(2); md->carryTrim=TRIM_OFF; + md=setDest(3); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight= 100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID2); md->curve=CV(3); md->carryTrim=TRIM_OFF; + md=setDest(3); md->srcRaw=RawSource(SOURCE_TYPE_MAX); md->weight=-100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,thrsw); md->mltpx=MLTPX_REP; + + // gyro gain + md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 5); md->weight= 50; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,-DSW_GEA); md->sOffset=100; + md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 5); md->weight=-50; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_GEA); md->sOffset=100; + + // collective + md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight=100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID0); md->curve=CV(4); md->carryTrim=TRIM_OFF; + md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight=100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID1); md->curve=CV(5); md->carryTrim=TRIM_OFF; + md=setDest(11); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight=100; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_ID2); md->curve=CV(6); md->carryTrim=TRIM_OFF; + + model.swashRingData.type = HELI_SWASH_TYPE_120; + model.swashRingData.collectiveSource = RawSource(SOURCE_TYPE_CH, 10); + + // set up Curves + setCurve(CURVE5(1),heli_ar1); + setCurve(CURVE5(2),heli_ar2); + setCurve(CURVE5(3),heli_ar3); + setCurve(CURVE5(4),heli_ar4); + setCurve(CURVE5(5),heli_ar5); + setCurve(CURVE5(6),heli_ar5); + + // make sure curves are redrawn + updateHeliTab(); + updateCurvesTab(); + resizeEvent(); + } + + // gyro gain control futaba style + if(idx==j++) { + int res = QMessageBox::question(this,tr("Clear Mixes?"),tr("Really clear existing mixes on CH5?"),QMessageBox::Yes | QMessageBox::No); + if(res!=QMessageBox::Yes) return; + // first clear mix on ch6 + bool found=true; + while (found) { + found=false; + for (int i=0; i< GetEepromInterface()->getCapability(Mixes); i++) { + if (model.mixData[i].destCh==5) { + gm_deleteMix(i); + found=true; + break; + } + } + } + md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 5); md->weight= 50; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,-DSW_GEA); md->sOffset=100; + md=setDest(5); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 5); md->weight=-50; md->swtch=RawSwitch(SWITCH_TYPE_SWITCH,DSW_GEA); md->sOffset=100; + } + + //Servo Test + if(idx==j++) { + md=setDest(15); md->srcRaw=RawSource(SOURCE_TYPE_CH, 15); md->weight= 100; md->speedUp = 8; md->speedDown = 8; md->swtch=RawSwitch(); + md=setDest(16); md->srcRaw=RawSource(SOURCE_TYPE_CUSTOM_SWITCH, 0); md->weight= 110; md->swtch=RawSwitch(); + md=setDest(16); md->srcRaw=RawSource(SOURCE_TYPE_MAX); md->weight=-110; md->swtch=RawSwitch(SWITCH_TYPE_VIRTUAL, 2); md->mltpx=MLTPX_REP; + md=setDest(16); md->srcRaw=RawSource(SOURCE_TYPE_MAX); md->weight= 110; md->swtch=RawSwitch(SWITCH_TYPE_VIRTUAL, 3); md->mltpx=MLTPX_REP; + setSwitch(1, CS_FN_LESS, RawSource(SOURCE_TYPE_CH, 14).toValue(), RawSource(SOURCE_TYPE_CH, 15).toValue()); + setSwitch(2, CS_FN_VPOS, RawSource(SOURCE_TYPE_CH, 14).toValue(), 105); + setSwitch(3, CS_FN_VNEG, RawSource(SOURCE_TYPE_CH, 14).toValue(), -105); + + // redraw switches tab + updateSwitchesTab(); + } + + //MultiCopter + if(idx==j++) { + if (md->destCh) + clearMixes(); + md=setDest(1); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 3); md->weight=50; md->swtch=RawSwitch(); //CH1 AIL + md=setDest(2); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 1); md->weight=-50; md->swtch=RawSwitch(); //CH2 ELE + md=setDest(3); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 2); md->weight=100; md->swtch=RawSwitch(); //CH3 THR + md=setDest(4); md->srcRaw=RawSource(SOURCE_TYPE_STICK, 0); md->weight=100; md->swtch=RawSwitch(); //CH4 RUD + } +} + +MixData* Templates::setDest(uint8_t dch) +{ + uint8_t i = 0; + while ((g_model.mixData[i].destCh<=dch) && (g_model.mixData[i].destCh) && (igetCapability(Mixes))) i++; + if(i==GetEepromInterface()->getCapability(Mixes)) return &g_model.mixData[0]; + + memmove(&g_model.mixData[i+1],&g_model.mixData[i], + (GetEepromInterface()->getCapability(Mixes)-(i+1))*sizeof(MixData) ); + memset(&g_model.mixData[i],0,sizeof(MixData)); + g_model.mixData[i].destCh = dch; + return &g_model.mixData[i]; +} diff --git a/companion/src/modeledit/templates.h b/companion/src/modeledit/templates.h new file mode 100644 index 000000000..2f485f41e --- /dev/null +++ b/companion/src/modeledit/templates.h @@ -0,0 +1,23 @@ +#ifndef TEMPLATES_H +#define TEMPLATES_H + +#include +#include "eeprominterface.h" + +class Templates : public QWidget +{ + Q_OBJECT + + public: + Templates(QWidget *parent, ModelData & model); + ~Templates(); + + private slots: + void onDoubleClicked(QModelIndex index); + + private: + void applyNumericTemplate(uint64_t tpl); + ModelData & model; +}; + +#endif // TEMPLATES_H diff --git a/companion/src/modelslist.cpp b/companion/src/modelslist.cpp index e63959491..756e3ffaf 100644 --- a/companion/src/modelslist.cpp +++ b/companion/src/modelslist.cpp @@ -51,7 +51,7 @@ public: } bool general_settings; uint8_t models_count; - uint8_t models[C9XMAX_MODELS]; + uint8_t models[C9X_MAX_MODELS]; }; ModelsListWidget::ModelsListWidget(QWidget *parent): diff --git a/companion/src/modelslist.h b/companion/src/modelslist.h index 02e1f6f73..8d6e73e83 100644 --- a/companion/src/modelslist.h +++ b/companion/src/modelslist.h @@ -48,7 +48,7 @@ struct CurrentSelection { QListWidgetItem *current_item; - bool selected[C9XMAX_MODELS+1]; + bool selected[C9X_MAX_MODELS+1]; }; class ModelsListWidget : public QListWidget diff --git a/companion/src/printdialog.cpp b/companion/src/printdialog.cpp index 6a287179e..36b0422c4 100644 --- a/companion/src/printdialog.cpp +++ b/companion/src/printdialog.cpp @@ -157,7 +157,7 @@ QString printDialog::printPhases() if ((GetCurrentFirmwareVariant() & GVARS_VARIANT ) || (!GetEepromInterface()->getCapability(HasVariants) && GetEepromInterface()->getCapability(Gvars))) { if (GetEepromInterface()->getCapability(GvarsFlightPhases)) { gvars=1; - gvarnum=GetEepromInterface()->getCapability(GvarsNum); + gvarnum=GetEepromInterface()->getCapability(Gvars); } } @@ -787,7 +787,7 @@ void printDialog::printGvars() int gvarnum=0; if ((GetCurrentFirmwareVariant() & GVARS_VARIANT ) || (!GetEepromInterface()->getCapability(HasVariants) && GetEepromInterface()->getCapability(Gvars))) { gvars=1; - gvarnum=GetEepromInterface()->getCapability(GvarsNum); + gvarnum=GetEepromInterface()->getCapability(Gvars); } if (!GetEepromInterface()->getCapability(GvarsFlightPhases) && (gvars==1 && GetEepromInterface()->getCapability(Gvars))) { QString str = "
"; diff --git a/companion/src/simulatordialog.h b/companion/src/simulatordialog.h index b50629a7a..65edcb9e5 100644 --- a/companion/src/simulatordialog.h +++ b/companion/src/simulatordialog.h @@ -2,7 +2,7 @@ #define SIMULATORDIALOG_H #include -#include "node.h" +#include "modeledit/node.h" #include "eeprominterface.h" #ifdef JOYSTICKS #include "joystick.h" diff --git a/companion/src/xmlinterface.cpp b/companion/src/xmlinterface.cpp index 67d8be5ce..e7bd91683 100644 --- a/companion/src/xmlinterface.cpp +++ b/companion/src/xmlinterface.cpp @@ -195,7 +195,7 @@ bool XmlInterface::save(RadioData &radioData) // the models models xml_models; models::model_sequence & model_sequence (xml_models.model()); - for (int i=0; i -#include "node.h" +#include "modeledit/node.h" #include "eeprominterface.h" #ifdef JOYSTICKS #include "joystick.h" From 38caa563873d844c5734831f57c6c7fcc0b81a2d Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Thu, 19 Dec 2013 19:38:44 +0100 Subject: [PATCH 017/308] New donations, thanks! --- DONATIONS.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/DONATIONS.txt b/DONATIONS.txt index b2e0e77ea..db1b903c5 100644 --- a/DONATIONS.txt +++ b/DONATIONS.txt @@ -252,4 +252,6 @@ Sławomir Juszczak Stephen Henderson David Morgan Aloft Hobbies - +Netanel Hobara +Cameron Galipo +Doug Schafer From 833dd6261153d177c644ecf99bb8a9d860cdf563 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Thu, 19 Dec 2013 20:00:17 +0100 Subject: [PATCH 018/308] Telemetry tab layout fix --- companion/src/modeledit/telemetry.ui | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/companion/src/modeledit/telemetry.ui b/companion/src/modeledit/telemetry.ui index 704eab921..b03ab1091 100644 --- a/companion/src/modeledit/telemetry.ui +++ b/companion/src/modeledit/telemetry.ui @@ -6,14 +6,14 @@ 0 0 - 738 - 507 + 692 + 540 Form - + @@ -67,7 +67,7 @@ - + 0 0 @@ -241,7 +241,7 @@ 20 - 40 + 0 @@ -2006,6 +2006,19 @@ + + + + Qt::Vertical + + + + 20 + 40 + + + + From d840c8acd4f32078c23e380b7fa11cfff1bc1b10 Mon Sep 17 00:00:00 2001 From: mhotar Date: Thu, 19 Dec 2013 20:26:56 +0100 Subject: [PATCH 019/308] PWFONT defined in Makefile for STD option INVERTED string has black borders from all sides --- radio/src/Makefile | 27 ++++++------------ .../fonts/{sqt5_fw => sqt5}/font_03x05.lbm | 0 .../fonts/{sqt5_fw => sqt5}/font_03x05.png | Bin .../fonts/{sqt5_fw => sqt5}/font_04x06.lbm | 0 .../fonts/{sqt5_fw => sqt5}/font_04x06.png | Bin .../{sqt5_fw => sqt5}/font_04x06_extra.lbm | 0 .../{sqt5_fw => sqt5}/font_04x06_extra.png | Bin .../fonts/{sqt5_fw => sqt5}/font_05x07.lbm | 0 .../fonts/{sqt5_fw => sqt5}/font_05x07.png | Bin .../{sqt5_fw => sqt5}/font_05x07_extra.lbm | 0 .../{sqt5_fw => sqt5}/font_05x07_extra.png | Bin .../fonts/{sqt5_fw => sqt5}/font_08x10.lbm | 0 .../fonts/{sqt5_fw => sqt5}/font_08x10.png | Bin .../fonts/{sqt5_fw => sqt5}/font_10x14.lbm | 0 .../fonts/{sqt5_fw => sqt5}/font_10x14.png | Bin .../font_10x14_compressed.lbm | 0 .../font_10x14_compressed.png | Bin .../{sqt5_fw => sqt5}/font_10x14_extra.lbm | 0 .../{sqt5_fw => sqt5}/font_10x14_extra.png | Bin .../fonts/{sqt5_fw => sqt5}/font_cz_04x06.lbm | 0 .../fonts/{sqt5_fw => sqt5}/font_cz_04x06.png | Bin .../fonts/{sqt5_fw => sqt5}/font_cz_05x07.lbm | 0 .../fonts/{sqt5_fw => sqt5}/font_cz_05x07.png | Bin .../fonts/{sqt5_fw => sqt5}/font_cz_08x10.lbm | 0 .../fonts/{sqt5_fw => sqt5}/font_cz_08x10.png | Bin .../fonts/{sqt5_fw => sqt5}/font_cz_10x14.lbm | 0 .../fonts/{sqt5_fw => sqt5}/font_cz_10x14.png | Bin .../fonts/{sqt5_fw => sqt5}/font_de_04x06.lbm | 0 .../fonts/{sqt5_fw => sqt5}/font_de_04x06.png | Bin .../fonts/{sqt5_fw => sqt5}/font_de_05x07.lbm | 0 .../fonts/{sqt5_fw => sqt5}/font_de_05x07.png | Bin .../fonts/{sqt5_fw => sqt5}/font_de_08x10.lbm | 0 .../fonts/{sqt5_fw => sqt5}/font_de_08x10.png | Bin .../fonts/{sqt5_fw => sqt5}/font_de_10x14.lbm | 0 .../fonts/{sqt5_fw => sqt5}/font_de_10x14.png | Bin .../fonts/{sqt5_fw => sqt5}/font_es_04x06.lbm | 0 .../fonts/{sqt5_fw => sqt5}/font_es_04x06.png | Bin .../fonts/{sqt5_fw => sqt5}/font_es_05x07.lbm | 0 .../fonts/{sqt5_fw => sqt5}/font_es_05x07.png | Bin .../fonts/{sqt5_fw => sqt5}/font_es_08x10.lbm | 0 .../fonts/{sqt5_fw => sqt5}/font_es_08x10.png | Bin .../fonts/{sqt5_fw => sqt5}/font_es_10x14.lbm | 0 .../fonts/{sqt5_fw => sqt5}/font_es_10x14.png | Bin .../fonts/{sqt5_fw => sqt5}/font_fr_04x06.lbm | 0 .../fonts/{sqt5_fw => sqt5}/font_fr_04x06.png | Bin .../fonts/{sqt5_fw => sqt5}/font_fr_05x07.lbm | 0 .../fonts/{sqt5_fw => sqt5}/font_fr_05x07.png | Bin .../fonts/{sqt5_fw => sqt5}/font_fr_08x10.lbm | 0 .../fonts/{sqt5_fw => sqt5}/font_fr_08x10.png | Bin .../fonts/{sqt5_fw => sqt5}/font_fr_10x14.lbm | 0 .../fonts/{sqt5_fw => sqt5}/font_fr_10x14.png | Bin .../fonts/{sqt5_fw => sqt5}/font_it_04x06.lbm | 0 .../fonts/{sqt5_fw => sqt5}/font_it_04x06.png | Bin .../fonts/{sqt5_fw => sqt5}/font_it_05x07.lbm | 0 .../fonts/{sqt5_fw => sqt5}/font_it_05x07.png | Bin .../fonts/{sqt5_fw => sqt5}/font_it_08x10.lbm | 0 .../fonts/{sqt5_fw => sqt5}/font_it_08x10.png | Bin .../fonts/{sqt5_fw => sqt5}/font_it_10x14.lbm | 0 .../fonts/{sqt5_fw => sqt5}/font_it_10x14.png | Bin .../fonts/{sqt5_fw => sqt5}/font_pl_04x06.lbm | 0 .../fonts/{sqt5_fw => sqt5}/font_pl_04x06.png | Bin .../fonts/{sqt5_fw => sqt5}/font_pl_05x07.lbm | 0 .../fonts/{sqt5_fw => sqt5}/font_pl_05x07.png | Bin .../fonts/{sqt5_fw => sqt5}/font_pl_08x10.lbm | 0 .../fonts/{sqt5_fw => sqt5}/font_pl_08x10.png | Bin .../fonts/{sqt5_fw => sqt5}/font_pl_10x14.lbm | 0 .../fonts/{sqt5_fw => sqt5}/font_pl_10x14.png | Bin .../fonts/{sqt5_fw => sqt5}/font_pt_04x06.lbm | 0 .../fonts/{sqt5_fw => sqt5}/font_pt_04x06.png | Bin .../fonts/{sqt5_fw => sqt5}/font_pt_05x07.lbm | 0 .../fonts/{sqt5_fw => sqt5}/font_pt_05x07.png | Bin .../fonts/{sqt5_fw => sqt5}/font_pt_08x10.lbm | 0 .../fonts/{sqt5_fw => sqt5}/font_pt_08x10.png | Bin .../fonts/{sqt5_fw => sqt5}/font_pt_10x14.lbm | 0 .../fonts/{sqt5_fw => sqt5}/font_pt_10x14.png | Bin .../fonts/{sqt5_fw => sqt5}/font_se_04x06.lbm | 0 .../fonts/{sqt5_fw => sqt5}/font_se_04x06.png | Bin .../fonts/{sqt5_fw => sqt5}/font_se_05x07.lbm | 0 .../fonts/{sqt5_fw => sqt5}/font_se_05x07.png | Bin .../fonts/{sqt5_fw => sqt5}/font_se_08x10.lbm | 0 .../fonts/{sqt5_fw => sqt5}/font_se_08x10.png | Bin .../fonts/{sqt5_fw => sqt5}/font_se_10x14.lbm | 0 .../fonts/{sqt5_fw => sqt5}/font_se_10x14.png | Bin radio/src/fonts/sqt5_pw/font_04x06.lbm | 6 ---- radio/src/fonts/sqt5_pw/font_04x06.png | Bin 874 -> 0 bytes radio/src/fonts/sqt5_pw/font_05x07.lbm | 6 ---- radio/src/fonts/sqt5_pw/font_05x07.png | Bin 937 -> 0 bytes radio/src/fonts/sqt5_pw/font_08x10.lbm | 6 ---- radio/src/fonts/sqt5_pw/font_08x10.png | Bin 1390 -> 0 bytes radio/src/fonts/sqt5_pw/font_10x14.lbm | 6 ---- radio/src/fonts/sqt5_pw/font_10x14.png | Bin 1809 -> 0 bytes .../fonts/sqt5_pw/font_10x14_compressed.lbm | 1 - .../fonts/sqt5_pw/font_10x14_compressed.png | Bin 1157 -> 0 bytes radio/src/fonts/sqt5_pw/font_cz_04x06.lbm | 1 - radio/src/fonts/sqt5_pw/font_cz_04x06.png | Bin 215 -> 0 bytes radio/src/fonts/sqt5_pw/font_cz_05x07.lbm | 1 - radio/src/fonts/sqt5_pw/font_cz_05x07.png | Bin 260 -> 0 bytes radio/src/fonts/sqt5_pw/font_cz_08x10.lbm | 1 - radio/src/fonts/sqt5_pw/font_cz_08x10.png | Bin 265 -> 0 bytes radio/src/fonts/sqt5_pw/font_cz_10x14.lbm | 1 - radio/src/fonts/sqt5_pw/font_cz_10x14.png | Bin 352 -> 0 bytes radio/src/fonts/sqt5_pw/font_de_04x06.lbm | 1 - radio/src/fonts/sqt5_pw/font_de_04x06.png | Bin 176 -> 0 bytes radio/src/fonts/sqt5_pw/font_de_05x07.lbm | 1 - radio/src/fonts/sqt5_pw/font_de_05x07.png | Bin 181 -> 0 bytes radio/src/fonts/sqt5_pw/font_de_08x10.lbm | 1 - radio/src/fonts/sqt5_pw/font_de_08x10.png | Bin 192 -> 0 bytes radio/src/fonts/sqt5_pw/font_de_10x14.lbm | 1 - radio/src/fonts/sqt5_pw/font_de_10x14.png | Bin 241 -> 0 bytes radio/src/fonts/sqt5_pw/font_es_04x06.lbm | 1 - radio/src/fonts/sqt5_pw/font_es_04x06.png | Bin 155 -> 0 bytes radio/src/fonts/sqt5_pw/font_es_05x07.lbm | 1 - radio/src/fonts/sqt5_pw/font_es_05x07.png | Bin 155 -> 0 bytes radio/src/fonts/sqt5_pw/font_es_08x10.lbm | 1 - radio/src/fonts/sqt5_pw/font_es_08x10.png | Bin 161 -> 0 bytes radio/src/fonts/sqt5_pw/font_es_10x14.lbm | 1 - radio/src/fonts/sqt5_pw/font_es_10x14.png | Bin 174 -> 0 bytes radio/src/fonts/sqt5_pw/font_fr_04x06.lbm | 1 - radio/src/fonts/sqt5_pw/font_fr_04x06.png | Bin 3570 -> 0 bytes radio/src/fonts/sqt5_pw/font_fr_05x07.lbm | 1 - radio/src/fonts/sqt5_pw/font_fr_05x07.png | Bin 174 -> 0 bytes radio/src/fonts/sqt5_pw/font_fr_08x10.lbm | 1 - radio/src/fonts/sqt5_pw/font_fr_08x10.png | Bin 3597 -> 0 bytes radio/src/fonts/sqt5_pw/font_fr_10x14.lbm | 1 - radio/src/fonts/sqt5_pw/font_fr_10x14.png | Bin 202 -> 0 bytes radio/src/fonts/sqt5_pw/font_it_04x06.lbm | 1 - radio/src/fonts/sqt5_pw/font_it_04x06.png | Bin 157 -> 0 bytes radio/src/fonts/sqt5_pw/font_it_05x07.lbm | 1 - radio/src/fonts/sqt5_pw/font_it_05x07.png | Bin 157 -> 0 bytes radio/src/fonts/sqt5_pw/font_it_08x10.lbm | 1 - radio/src/fonts/sqt5_pw/font_it_08x10.png | Bin 162 -> 0 bytes radio/src/fonts/sqt5_pw/font_it_10x14.lbm | 1 - radio/src/fonts/sqt5_pw/font_it_10x14.png | Bin 171 -> 0 bytes radio/src/fonts/sqt5_pw/font_pl_04x06.lbm | 1 - radio/src/fonts/sqt5_pw/font_pl_04x06.png | Bin 175 -> 0 bytes radio/src/fonts/sqt5_pw/font_pl_05x07.lbm | 1 - radio/src/fonts/sqt5_pw/font_pl_05x07.png | Bin 195 -> 0 bytes radio/src/fonts/sqt5_pw/font_pl_08x10.lbm | 1 - radio/src/fonts/sqt5_pw/font_pl_08x10.png | Bin 237 -> 0 bytes radio/src/fonts/sqt5_pw/font_pl_10x14.lbm | 1 - radio/src/fonts/sqt5_pw/font_pl_10x14.png | Bin 333 -> 0 bytes radio/src/fonts/sqt5_pw/font_pt_05x07.lbm | 1 - radio/src/fonts/sqt5_pw/font_pt_05x07.png | Bin 244 -> 0 bytes radio/src/fonts/sqt5_pw/font_pt_08x10.lbm | 1 - radio/src/fonts/sqt5_pw/font_pt_08x10.png | Bin 289 -> 0 bytes radio/src/fonts/sqt5_pw/font_pt_10x14.lbm | 1 - radio/src/fonts/sqt5_pw/font_pt_10x14.png | Bin 379 -> 0 bytes radio/src/fonts/sqt5_pw/font_se_04x06.lbm | 1 - radio/src/fonts/sqt5_pw/font_se_04x06.png | Bin 169 -> 0 bytes radio/src/fonts/sqt5_pw/font_se_05x07.lbm | 1 - radio/src/fonts/sqt5_pw/font_se_05x07.png | Bin 174 -> 0 bytes radio/src/fonts/sqt5_pw/font_se_08x10.lbm | 1 - radio/src/fonts/sqt5_pw/font_se_08x10.png | Bin 195 -> 0 bytes radio/src/fonts/sqt5_pw/font_se_10x14.lbm | 1 - radio/src/fonts/sqt5_pw/font_se_10x14.png | Bin 214 -> 0 bytes .../src/fonts/{sqt5_pw => std}/font_03x05.lbm | 0 .../src/fonts/{sqt5_pw => std}/font_03x05.png | Bin .../src/fonts/{std_fw => std}/font_04x06.lbm | 0 .../src/fonts/{std_fw => std}/font_04x06.png | Bin .../{sqt5_pw => std}/font_04x06_extra.lbm | 0 .../{sqt5_pw => std}/font_04x06_extra.png | Bin .../src/fonts/{std_fw => std}/font_05x07.lbm | 0 .../src/fonts/{std_fw => std}/font_05x07.png | Bin .../{sqt5_pw => std}/font_05x07_extra.lbm | 0 .../{sqt5_pw => std}/font_05x07_extra.png | Bin .../src/fonts/{std_fw => std}/font_08x10.lbm | 0 .../src/fonts/{std_fw => std}/font_08x10.png | Bin .../src/fonts/{std_fw => std}/font_10x14.lbm | 0 .../src/fonts/{std_fw => std}/font_10x14.png | Bin .../{std_fw => std}/font_10x14_compressed.lbm | 0 .../{std_fw => std}/font_10x14_compressed.png | Bin .../{sqt5_pw => std}/font_10x14_extra.lbm | 0 .../{sqt5_pw => std}/font_10x14_extra.png | Bin .../fonts/{std_fw => std}/font_cz_04x06.lbm | 0 .../fonts/{std_fw => std}/font_cz_04x06.png | Bin .../fonts/{std_fw => std}/font_cz_05x07.lbm | 0 .../fonts/{std_fw => std}/font_cz_05x07.png | Bin .../fonts/{std_fw => std}/font_cz_08x10.lbm | 0 .../fonts/{std_fw => std}/font_cz_08x10.png | Bin .../fonts/{std_fw => std}/font_cz_10x14.lbm | 0 .../fonts/{std_fw => std}/font_cz_10x14.png | Bin .../fonts/{std_fw => std}/font_de_04x06.lbm | 0 .../fonts/{std_fw => std}/font_de_04x06.png | Bin .../fonts/{std_fw => std}/font_de_05x07.lbm | 0 .../fonts/{std_fw => std}/font_de_05x07.png | Bin .../fonts/{std_fw => std}/font_de_08x10.lbm | 0 .../fonts/{std_fw => std}/font_de_08x10.png | Bin .../fonts/{std_fw => std}/font_de_10x14.lbm | 0 .../fonts/{std_fw => std}/font_de_10x14.png | Bin .../fonts/{std_fw => std}/font_es_04x06.lbm | 0 .../fonts/{std_fw => std}/font_es_04x06.png | Bin .../fonts/{std_fw => std}/font_es_05x07.lbm | 0 .../fonts/{std_fw => std}/font_es_05x07.png | Bin .../fonts/{std_fw => std}/font_es_08x10.lbm | 0 .../fonts/{std_fw => std}/font_es_08x10.png | Bin .../fonts/{std_fw => std}/font_es_10x14.lbm | 0 .../fonts/{std_fw => std}/font_es_10x14.png | Bin .../fonts/{std_fw => std}/font_fr_04x06.lbm | 0 .../fonts/{std_fw => std}/font_fr_04x06.png | Bin .../fonts/{std_fw => std}/font_fr_05x07.lbm | 0 .../fonts/{std_fw => std}/font_fr_05x07.png | Bin .../fonts/{std_fw => std}/font_fr_08x10.lbm | 0 .../fonts/{std_fw => std}/font_fr_08x10.png | Bin .../fonts/{std_fw => std}/font_fr_10x14.lbm | 0 .../fonts/{std_fw => std}/font_fr_10x14.png | Bin .../fonts/{std_fw => std}/font_it_04x06.lbm | 0 .../fonts/{std_fw => std}/font_it_04x06.png | Bin .../fonts/{std_fw => std}/font_it_05x07.lbm | 0 .../fonts/{std_fw => std}/font_it_05x07.png | Bin .../fonts/{std_fw => std}/font_it_08x10.lbm | 0 .../fonts/{std_fw => std}/font_it_08x10.png | Bin .../fonts/{std_fw => std}/font_it_10x14.lbm | 0 .../fonts/{std_fw => std}/font_it_10x14.png | Bin .../fonts/{std_fw => std}/font_pl_04x06.lbm | 0 .../fonts/{std_fw => std}/font_pl_04x06.png | Bin .../fonts/{std_fw => std}/font_pl_05x07.lbm | 0 .../fonts/{std_fw => std}/font_pl_05x07.png | Bin .../fonts/{std_fw => std}/font_pl_08x10.lbm | 0 .../fonts/{std_fw => std}/font_pl_08x10.png | Bin .../fonts/{std_fw => std}/font_pl_10x14.lbm | 0 .../fonts/{std_fw => std}/font_pl_10x14.png | Bin .../fonts/{sqt5_pw => std}/font_pt_04x06.lbm | 0 .../fonts/{sqt5_pw => std}/font_pt_04x06.png | Bin .../fonts/{std_fw => std}/font_pt_05x07.lbm | 0 .../fonts/{std_fw => std}/font_pt_05x07.png | Bin .../fonts/{std_fw => std}/font_pt_08x10.lbm | 0 .../fonts/{std_fw => std}/font_pt_08x10.png | Bin .../fonts/{std_fw => std}/font_pt_10x14.lbm | 0 .../fonts/{std_fw => std}/font_pt_10x14.png | Bin .../fonts/{std_fw => std}/font_se_04x06.lbm | 0 .../fonts/{std_fw => std}/font_se_04x06.png | Bin .../fonts/{std_fw => std}/font_se_05x07.lbm | 0 .../fonts/{std_fw => std}/font_se_05x07.png | Bin .../fonts/{std_fw => std}/font_se_08x10.lbm | 0 .../fonts/{std_fw => std}/font_se_08x10.png | Bin .../fonts/{std_fw => std}/font_se_10x14.lbm | 0 .../fonts/{std_fw => std}/font_se_10x14.png | Bin radio/src/fonts/std_pw/font_03x05.lbm | 1 - radio/src/fonts/std_pw/font_03x05.png | Bin 222 -> 0 bytes radio/src/fonts/std_pw/font_04x06_extra.lbm | 1 - radio/src/fonts/std_pw/font_04x06_extra.png | Bin 159 -> 0 bytes radio/src/fonts/std_pw/font_05x07_extra.lbm | 1 - radio/src/fonts/std_pw/font_05x07_extra.png | Bin 161 -> 0 bytes radio/src/fonts/std_pw/font_10x14.png | Bin 1168 -> 0 bytes .../fonts/std_pw/font_10x14_compressed.png | Bin 1503 -> 0 bytes radio/src/fonts/std_pw/font_10x14_extra.lbm | 1 - radio/src/fonts/std_pw/font_10x14_extra.png | Bin 229 -> 0 bytes radio/src/fonts/std_pw/font_pt_04x06.lbm | 1 - radio/src/fonts/std_pw/font_pt_04x06.png | Bin 130 -> 0 bytes .../fonts/{std_fw => stdv2}/font_03x05.lbm | 0 .../fonts/{std_fw => stdv2}/font_03x05.png | Bin .../fonts/{std_pw => stdv2}/font_04x06.lbm | 0 .../fonts/{std_pw => stdv2}/font_04x06.png | Bin .../{std_fw => stdv2}/font_04x06_extra.lbm | 0 .../{std_fw => stdv2}/font_04x06_extra.png | Bin .../fonts/{std_pw => stdv2}/font_05x07.lbm | 0 .../fonts/{std_pw => stdv2}/font_05x07.png | Bin .../{std_fw => stdv2}/font_05x07_extra.lbm | 0 .../{std_fw => stdv2}/font_05x07_extra.png | Bin .../fonts/{std_pw => stdv2}/font_08x10.lbm | 0 .../fonts/{std_pw => stdv2}/font_08x10.png | Bin .../fonts/{std_pw => stdv2}/font_10x14.lbm | 2 +- radio/src/fonts/stdv2/font_10x14.png | Bin 0 -> 1174 bytes .../font_10x14_compressed.lbm | 2 +- .../src/fonts/stdv2/font_10x14_compressed.png | Bin 0 -> 1508 bytes .../{std_fw => stdv2}/font_10x14_extra.lbm | 0 .../{std_fw => stdv2}/font_10x14_extra.png | Bin .../fonts/{std_pw => stdv2}/font_cz_04x06.lbm | 0 .../fonts/{std_pw => stdv2}/font_cz_04x06.png | Bin .../fonts/{std_pw => stdv2}/font_cz_05x07.lbm | 0 .../fonts/{std_pw => stdv2}/font_cz_05x07.png | Bin .../fonts/{std_pw => stdv2}/font_cz_08x10.lbm | 0 .../fonts/{std_pw => stdv2}/font_cz_08x10.png | Bin .../fonts/{std_pw => stdv2}/font_cz_10x14.lbm | 0 .../fonts/{std_pw => stdv2}/font_cz_10x14.png | Bin .../fonts/{std_pw => stdv2}/font_de_04x06.lbm | 0 .../fonts/{std_pw => stdv2}/font_de_04x06.png | Bin .../fonts/{std_pw => stdv2}/font_de_05x07.lbm | 0 .../fonts/{std_pw => stdv2}/font_de_05x07.png | Bin .../fonts/{std_pw => stdv2}/font_de_08x10.lbm | 0 .../fonts/{std_pw => stdv2}/font_de_08x10.png | Bin .../fonts/{std_pw => stdv2}/font_de_10x14.lbm | 0 .../fonts/{std_pw => stdv2}/font_de_10x14.png | Bin .../fonts/{std_pw => stdv2}/font_es_04x06.lbm | 0 .../fonts/{std_pw => stdv2}/font_es_04x06.png | Bin .../fonts/{std_pw => stdv2}/font_es_05x07.lbm | 0 .../fonts/{std_pw => stdv2}/font_es_05x07.png | Bin .../fonts/{std_pw => stdv2}/font_es_08x10.lbm | 0 .../fonts/{std_pw => stdv2}/font_es_08x10.png | Bin .../fonts/{std_pw => stdv2}/font_es_10x14.lbm | 0 .../fonts/{std_pw => stdv2}/font_es_10x14.png | Bin .../fonts/{std_pw => stdv2}/font_fr_04x06.lbm | 0 .../fonts/{std_pw => stdv2}/font_fr_04x06.png | Bin .../fonts/{std_pw => stdv2}/font_fr_05x07.lbm | 0 .../fonts/{std_pw => stdv2}/font_fr_05x07.png | Bin .../fonts/{std_pw => stdv2}/font_fr_08x10.lbm | 0 .../fonts/{std_pw => stdv2}/font_fr_08x10.png | Bin .../fonts/{std_pw => stdv2}/font_fr_10x14.lbm | 0 .../fonts/{std_pw => stdv2}/font_fr_10x14.png | Bin .../fonts/{std_pw => stdv2}/font_it_04x06.lbm | 0 .../fonts/{std_pw => stdv2}/font_it_04x06.png | Bin .../fonts/{std_pw => stdv2}/font_it_05x07.lbm | 0 .../fonts/{std_pw => stdv2}/font_it_05x07.png | Bin .../fonts/{std_pw => stdv2}/font_it_08x10.lbm | 0 .../fonts/{std_pw => stdv2}/font_it_08x10.png | Bin .../fonts/{std_pw => stdv2}/font_it_10x14.lbm | 0 .../fonts/{std_pw => stdv2}/font_it_10x14.png | Bin .../fonts/{std_pw => stdv2}/font_pl_04x06.lbm | 0 .../fonts/{std_pw => stdv2}/font_pl_04x06.png | Bin .../fonts/{std_pw => stdv2}/font_pl_05x07.lbm | 0 .../fonts/{std_pw => stdv2}/font_pl_05x07.png | Bin .../fonts/{std_pw => stdv2}/font_pl_08x10.lbm | 0 .../fonts/{std_pw => stdv2}/font_pl_08x10.png | Bin .../fonts/{std_pw => stdv2}/font_pl_10x14.lbm | 0 .../fonts/{std_pw => stdv2}/font_pl_10x14.png | Bin .../fonts/{std_fw => stdv2}/font_pt_04x06.lbm | 0 .../fonts/{std_fw => stdv2}/font_pt_04x06.png | Bin .../fonts/{std_pw => stdv2}/font_pt_05x07.lbm | 0 .../fonts/{std_pw => stdv2}/font_pt_05x07.png | Bin .../fonts/{std_pw => stdv2}/font_pt_08x10.lbm | 0 .../fonts/{std_pw => stdv2}/font_pt_08x10.png | Bin .../fonts/{std_pw => stdv2}/font_pt_10x14.lbm | 0 .../fonts/{std_pw => stdv2}/font_pt_10x14.png | Bin .../fonts/{std_pw => stdv2}/font_se_04x06.lbm | 0 .../fonts/{std_pw => stdv2}/font_se_04x06.png | Bin .../fonts/{std_pw => stdv2}/font_se_05x07.lbm | 0 .../fonts/{std_pw => stdv2}/font_se_05x07.png | Bin .../fonts/{std_pw => stdv2}/font_se_08x10.lbm | 0 .../fonts/{std_pw => stdv2}/font_se_08x10.png | Bin .../fonts/{std_pw => stdv2}/font_se_10x14.lbm | 0 .../fonts/{std_pw => stdv2}/font_se_10x14.png | Bin radio/src/lcd.cpp | 15 ++++++++-- 332 files changed, 23 insertions(+), 84 deletions(-) rename radio/src/fonts/{sqt5_fw => sqt5}/font_03x05.lbm (100%) rename radio/src/fonts/{sqt5_fw => sqt5}/font_03x05.png (100%) rename radio/src/fonts/{sqt5_fw => sqt5}/font_04x06.lbm (100%) rename radio/src/fonts/{sqt5_fw => sqt5}/font_04x06.png (100%) rename radio/src/fonts/{sqt5_fw => sqt5}/font_04x06_extra.lbm (100%) rename radio/src/fonts/{sqt5_fw => sqt5}/font_04x06_extra.png (100%) rename radio/src/fonts/{sqt5_fw => sqt5}/font_05x07.lbm (100%) rename radio/src/fonts/{sqt5_fw => sqt5}/font_05x07.png (100%) rename radio/src/fonts/{sqt5_fw => sqt5}/font_05x07_extra.lbm (100%) rename radio/src/fonts/{sqt5_fw => sqt5}/font_05x07_extra.png (100%) rename radio/src/fonts/{sqt5_fw => sqt5}/font_08x10.lbm (100%) rename radio/src/fonts/{sqt5_fw => sqt5}/font_08x10.png (100%) rename radio/src/fonts/{sqt5_fw => sqt5}/font_10x14.lbm (100%) rename radio/src/fonts/{sqt5_fw => sqt5}/font_10x14.png (100%) rename radio/src/fonts/{sqt5_fw => sqt5}/font_10x14_compressed.lbm (100%) rename radio/src/fonts/{sqt5_fw => sqt5}/font_10x14_compressed.png (100%) rename radio/src/fonts/{sqt5_fw => sqt5}/font_10x14_extra.lbm (100%) rename radio/src/fonts/{sqt5_fw => sqt5}/font_10x14_extra.png (100%) rename radio/src/fonts/{sqt5_fw => sqt5}/font_cz_04x06.lbm (100%) rename radio/src/fonts/{sqt5_fw => sqt5}/font_cz_04x06.png (100%) rename radio/src/fonts/{sqt5_fw => sqt5}/font_cz_05x07.lbm (100%) rename radio/src/fonts/{sqt5_fw => sqt5}/font_cz_05x07.png (100%) rename radio/src/fonts/{sqt5_fw => sqt5}/font_cz_08x10.lbm (100%) rename radio/src/fonts/{sqt5_fw => sqt5}/font_cz_08x10.png (100%) rename radio/src/fonts/{sqt5_fw => sqt5}/font_cz_10x14.lbm (100%) rename radio/src/fonts/{sqt5_fw => sqt5}/font_cz_10x14.png (100%) rename radio/src/fonts/{sqt5_fw => sqt5}/font_de_04x06.lbm (100%) rename radio/src/fonts/{sqt5_fw => sqt5}/font_de_04x06.png (100%) rename radio/src/fonts/{sqt5_fw => sqt5}/font_de_05x07.lbm (100%) rename radio/src/fonts/{sqt5_fw => sqt5}/font_de_05x07.png (100%) rename radio/src/fonts/{sqt5_fw => sqt5}/font_de_08x10.lbm (100%) rename radio/src/fonts/{sqt5_fw => sqt5}/font_de_08x10.png (100%) rename radio/src/fonts/{sqt5_fw => sqt5}/font_de_10x14.lbm (100%) rename radio/src/fonts/{sqt5_fw => sqt5}/font_de_10x14.png (100%) rename radio/src/fonts/{sqt5_fw => sqt5}/font_es_04x06.lbm (100%) rename radio/src/fonts/{sqt5_fw => sqt5}/font_es_04x06.png (100%) rename radio/src/fonts/{sqt5_fw => sqt5}/font_es_05x07.lbm (100%) rename radio/src/fonts/{sqt5_fw => sqt5}/font_es_05x07.png (100%) rename radio/src/fonts/{sqt5_fw => sqt5}/font_es_08x10.lbm (100%) rename radio/src/fonts/{sqt5_fw => sqt5}/font_es_08x10.png (100%) rename radio/src/fonts/{sqt5_fw => sqt5}/font_es_10x14.lbm (100%) rename radio/src/fonts/{sqt5_fw => sqt5}/font_es_10x14.png (100%) rename radio/src/fonts/{sqt5_fw => sqt5}/font_fr_04x06.lbm (100%) rename radio/src/fonts/{sqt5_fw => sqt5}/font_fr_04x06.png (100%) rename radio/src/fonts/{sqt5_fw => sqt5}/font_fr_05x07.lbm (100%) rename radio/src/fonts/{sqt5_fw => sqt5}/font_fr_05x07.png (100%) rename radio/src/fonts/{sqt5_fw => sqt5}/font_fr_08x10.lbm (100%) rename radio/src/fonts/{sqt5_fw => sqt5}/font_fr_08x10.png (100%) rename radio/src/fonts/{sqt5_fw => sqt5}/font_fr_10x14.lbm (100%) rename radio/src/fonts/{sqt5_fw => sqt5}/font_fr_10x14.png (100%) rename radio/src/fonts/{sqt5_fw => sqt5}/font_it_04x06.lbm (100%) rename radio/src/fonts/{sqt5_fw => sqt5}/font_it_04x06.png (100%) rename radio/src/fonts/{sqt5_fw => sqt5}/font_it_05x07.lbm (100%) rename radio/src/fonts/{sqt5_fw => sqt5}/font_it_05x07.png (100%) rename radio/src/fonts/{sqt5_fw => sqt5}/font_it_08x10.lbm (100%) rename radio/src/fonts/{sqt5_fw => sqt5}/font_it_08x10.png (100%) rename radio/src/fonts/{sqt5_fw => sqt5}/font_it_10x14.lbm (100%) rename radio/src/fonts/{sqt5_fw => sqt5}/font_it_10x14.png (100%) rename radio/src/fonts/{sqt5_fw => sqt5}/font_pl_04x06.lbm (100%) rename radio/src/fonts/{sqt5_fw => sqt5}/font_pl_04x06.png (100%) rename radio/src/fonts/{sqt5_fw => sqt5}/font_pl_05x07.lbm (100%) rename radio/src/fonts/{sqt5_fw => sqt5}/font_pl_05x07.png (100%) rename radio/src/fonts/{sqt5_fw => sqt5}/font_pl_08x10.lbm (100%) rename radio/src/fonts/{sqt5_fw => sqt5}/font_pl_08x10.png (100%) rename radio/src/fonts/{sqt5_fw => sqt5}/font_pl_10x14.lbm (100%) rename radio/src/fonts/{sqt5_fw => sqt5}/font_pl_10x14.png (100%) rename radio/src/fonts/{sqt5_fw => sqt5}/font_pt_04x06.lbm (100%) rename radio/src/fonts/{sqt5_fw => sqt5}/font_pt_04x06.png (100%) rename radio/src/fonts/{sqt5_fw => sqt5}/font_pt_05x07.lbm (100%) rename radio/src/fonts/{sqt5_fw => sqt5}/font_pt_05x07.png (100%) rename radio/src/fonts/{sqt5_fw => sqt5}/font_pt_08x10.lbm (100%) rename radio/src/fonts/{sqt5_fw => sqt5}/font_pt_08x10.png (100%) rename radio/src/fonts/{sqt5_fw => sqt5}/font_pt_10x14.lbm (100%) rename radio/src/fonts/{sqt5_fw => sqt5}/font_pt_10x14.png (100%) rename radio/src/fonts/{sqt5_fw => sqt5}/font_se_04x06.lbm (100%) rename radio/src/fonts/{sqt5_fw => sqt5}/font_se_04x06.png (100%) rename radio/src/fonts/{sqt5_fw => sqt5}/font_se_05x07.lbm (100%) rename radio/src/fonts/{sqt5_fw => sqt5}/font_se_05x07.png (100%) rename radio/src/fonts/{sqt5_fw => sqt5}/font_se_08x10.lbm (100%) rename radio/src/fonts/{sqt5_fw => sqt5}/font_se_08x10.png (100%) rename radio/src/fonts/{sqt5_fw => sqt5}/font_se_10x14.lbm (100%) rename radio/src/fonts/{sqt5_fw => sqt5}/font_se_10x14.png (100%) delete mode 100644 radio/src/fonts/sqt5_pw/font_04x06.lbm delete mode 100644 radio/src/fonts/sqt5_pw/font_04x06.png delete mode 100644 radio/src/fonts/sqt5_pw/font_05x07.lbm delete mode 100644 radio/src/fonts/sqt5_pw/font_05x07.png delete mode 100644 radio/src/fonts/sqt5_pw/font_08x10.lbm delete mode 100644 radio/src/fonts/sqt5_pw/font_08x10.png delete mode 100644 radio/src/fonts/sqt5_pw/font_10x14.lbm delete mode 100644 radio/src/fonts/sqt5_pw/font_10x14.png delete mode 100644 radio/src/fonts/sqt5_pw/font_10x14_compressed.lbm delete mode 100644 radio/src/fonts/sqt5_pw/font_10x14_compressed.png delete mode 100644 radio/src/fonts/sqt5_pw/font_cz_04x06.lbm delete mode 100644 radio/src/fonts/sqt5_pw/font_cz_04x06.png delete mode 100644 radio/src/fonts/sqt5_pw/font_cz_05x07.lbm delete mode 100644 radio/src/fonts/sqt5_pw/font_cz_05x07.png delete mode 100644 radio/src/fonts/sqt5_pw/font_cz_08x10.lbm delete mode 100644 radio/src/fonts/sqt5_pw/font_cz_08x10.png delete mode 100644 radio/src/fonts/sqt5_pw/font_cz_10x14.lbm delete mode 100644 radio/src/fonts/sqt5_pw/font_cz_10x14.png delete mode 100644 radio/src/fonts/sqt5_pw/font_de_04x06.lbm delete mode 100644 radio/src/fonts/sqt5_pw/font_de_04x06.png delete mode 100644 radio/src/fonts/sqt5_pw/font_de_05x07.lbm delete mode 100644 radio/src/fonts/sqt5_pw/font_de_05x07.png delete mode 100644 radio/src/fonts/sqt5_pw/font_de_08x10.lbm delete mode 100644 radio/src/fonts/sqt5_pw/font_de_08x10.png delete mode 100644 radio/src/fonts/sqt5_pw/font_de_10x14.lbm delete mode 100644 radio/src/fonts/sqt5_pw/font_de_10x14.png delete mode 100644 radio/src/fonts/sqt5_pw/font_es_04x06.lbm delete mode 100644 radio/src/fonts/sqt5_pw/font_es_04x06.png delete mode 100644 radio/src/fonts/sqt5_pw/font_es_05x07.lbm delete mode 100644 radio/src/fonts/sqt5_pw/font_es_05x07.png delete mode 100644 radio/src/fonts/sqt5_pw/font_es_08x10.lbm delete mode 100644 radio/src/fonts/sqt5_pw/font_es_08x10.png delete mode 100644 radio/src/fonts/sqt5_pw/font_es_10x14.lbm delete mode 100644 radio/src/fonts/sqt5_pw/font_es_10x14.png delete mode 100644 radio/src/fonts/sqt5_pw/font_fr_04x06.lbm delete mode 100644 radio/src/fonts/sqt5_pw/font_fr_04x06.png delete mode 100644 radio/src/fonts/sqt5_pw/font_fr_05x07.lbm delete mode 100644 radio/src/fonts/sqt5_pw/font_fr_05x07.png delete mode 100644 radio/src/fonts/sqt5_pw/font_fr_08x10.lbm delete mode 100644 radio/src/fonts/sqt5_pw/font_fr_08x10.png delete mode 100644 radio/src/fonts/sqt5_pw/font_fr_10x14.lbm delete mode 100644 radio/src/fonts/sqt5_pw/font_fr_10x14.png delete mode 100644 radio/src/fonts/sqt5_pw/font_it_04x06.lbm delete mode 100644 radio/src/fonts/sqt5_pw/font_it_04x06.png delete mode 100644 radio/src/fonts/sqt5_pw/font_it_05x07.lbm delete mode 100644 radio/src/fonts/sqt5_pw/font_it_05x07.png delete mode 100644 radio/src/fonts/sqt5_pw/font_it_08x10.lbm delete mode 100644 radio/src/fonts/sqt5_pw/font_it_08x10.png delete mode 100644 radio/src/fonts/sqt5_pw/font_it_10x14.lbm delete mode 100644 radio/src/fonts/sqt5_pw/font_it_10x14.png delete mode 100644 radio/src/fonts/sqt5_pw/font_pl_04x06.lbm delete mode 100644 radio/src/fonts/sqt5_pw/font_pl_04x06.png delete mode 100644 radio/src/fonts/sqt5_pw/font_pl_05x07.lbm delete mode 100644 radio/src/fonts/sqt5_pw/font_pl_05x07.png delete mode 100644 radio/src/fonts/sqt5_pw/font_pl_08x10.lbm delete mode 100644 radio/src/fonts/sqt5_pw/font_pl_08x10.png delete mode 100644 radio/src/fonts/sqt5_pw/font_pl_10x14.lbm delete mode 100644 radio/src/fonts/sqt5_pw/font_pl_10x14.png delete mode 100644 radio/src/fonts/sqt5_pw/font_pt_05x07.lbm delete mode 100644 radio/src/fonts/sqt5_pw/font_pt_05x07.png delete mode 100644 radio/src/fonts/sqt5_pw/font_pt_08x10.lbm delete mode 100644 radio/src/fonts/sqt5_pw/font_pt_08x10.png delete mode 100644 radio/src/fonts/sqt5_pw/font_pt_10x14.lbm delete mode 100644 radio/src/fonts/sqt5_pw/font_pt_10x14.png delete mode 100644 radio/src/fonts/sqt5_pw/font_se_04x06.lbm delete mode 100644 radio/src/fonts/sqt5_pw/font_se_04x06.png delete mode 100644 radio/src/fonts/sqt5_pw/font_se_05x07.lbm delete mode 100644 radio/src/fonts/sqt5_pw/font_se_05x07.png delete mode 100644 radio/src/fonts/sqt5_pw/font_se_08x10.lbm delete mode 100644 radio/src/fonts/sqt5_pw/font_se_08x10.png delete mode 100644 radio/src/fonts/sqt5_pw/font_se_10x14.lbm delete mode 100644 radio/src/fonts/sqt5_pw/font_se_10x14.png rename radio/src/fonts/{sqt5_pw => std}/font_03x05.lbm (100%) rename radio/src/fonts/{sqt5_pw => std}/font_03x05.png (100%) rename radio/src/fonts/{std_fw => std}/font_04x06.lbm (100%) rename radio/src/fonts/{std_fw => std}/font_04x06.png (100%) rename radio/src/fonts/{sqt5_pw => std}/font_04x06_extra.lbm (100%) rename radio/src/fonts/{sqt5_pw => std}/font_04x06_extra.png (100%) rename radio/src/fonts/{std_fw => std}/font_05x07.lbm (100%) rename radio/src/fonts/{std_fw => std}/font_05x07.png (100%) rename radio/src/fonts/{sqt5_pw => std}/font_05x07_extra.lbm (100%) rename radio/src/fonts/{sqt5_pw => std}/font_05x07_extra.png (100%) rename radio/src/fonts/{std_fw => std}/font_08x10.lbm (100%) rename radio/src/fonts/{std_fw => std}/font_08x10.png (100%) rename radio/src/fonts/{std_fw => std}/font_10x14.lbm (100%) rename radio/src/fonts/{std_fw => std}/font_10x14.png (100%) rename radio/src/fonts/{std_fw => std}/font_10x14_compressed.lbm (100%) rename radio/src/fonts/{std_fw => std}/font_10x14_compressed.png (100%) rename radio/src/fonts/{sqt5_pw => std}/font_10x14_extra.lbm (100%) rename radio/src/fonts/{sqt5_pw => std}/font_10x14_extra.png (100%) rename radio/src/fonts/{std_fw => std}/font_cz_04x06.lbm (100%) rename radio/src/fonts/{std_fw => std}/font_cz_04x06.png (100%) rename radio/src/fonts/{std_fw => std}/font_cz_05x07.lbm (100%) rename radio/src/fonts/{std_fw => std}/font_cz_05x07.png (100%) rename radio/src/fonts/{std_fw => std}/font_cz_08x10.lbm (100%) rename radio/src/fonts/{std_fw => std}/font_cz_08x10.png (100%) rename radio/src/fonts/{std_fw => std}/font_cz_10x14.lbm (100%) rename radio/src/fonts/{std_fw => std}/font_cz_10x14.png (100%) rename radio/src/fonts/{std_fw => std}/font_de_04x06.lbm (100%) rename radio/src/fonts/{std_fw => std}/font_de_04x06.png (100%) rename radio/src/fonts/{std_fw => std}/font_de_05x07.lbm (100%) rename radio/src/fonts/{std_fw => std}/font_de_05x07.png (100%) rename radio/src/fonts/{std_fw => std}/font_de_08x10.lbm (100%) rename radio/src/fonts/{std_fw => std}/font_de_08x10.png (100%) rename radio/src/fonts/{std_fw => std}/font_de_10x14.lbm (100%) rename radio/src/fonts/{std_fw => std}/font_de_10x14.png (100%) rename radio/src/fonts/{std_fw => std}/font_es_04x06.lbm (100%) rename radio/src/fonts/{std_fw => std}/font_es_04x06.png (100%) rename radio/src/fonts/{std_fw => std}/font_es_05x07.lbm (100%) rename radio/src/fonts/{std_fw => std}/font_es_05x07.png (100%) rename radio/src/fonts/{std_fw => std}/font_es_08x10.lbm (100%) rename radio/src/fonts/{std_fw => std}/font_es_08x10.png (100%) rename radio/src/fonts/{std_fw => std}/font_es_10x14.lbm (100%) rename radio/src/fonts/{std_fw => std}/font_es_10x14.png (100%) rename radio/src/fonts/{std_fw => std}/font_fr_04x06.lbm (100%) rename radio/src/fonts/{std_fw => std}/font_fr_04x06.png (100%) rename radio/src/fonts/{std_fw => std}/font_fr_05x07.lbm (100%) rename radio/src/fonts/{std_fw => std}/font_fr_05x07.png (100%) rename radio/src/fonts/{std_fw => std}/font_fr_08x10.lbm (100%) rename radio/src/fonts/{std_fw => std}/font_fr_08x10.png (100%) rename radio/src/fonts/{std_fw => std}/font_fr_10x14.lbm (100%) rename radio/src/fonts/{std_fw => std}/font_fr_10x14.png (100%) rename radio/src/fonts/{std_fw => std}/font_it_04x06.lbm (100%) rename radio/src/fonts/{std_fw => std}/font_it_04x06.png (100%) rename radio/src/fonts/{std_fw => std}/font_it_05x07.lbm (100%) rename radio/src/fonts/{std_fw => std}/font_it_05x07.png (100%) rename radio/src/fonts/{std_fw => std}/font_it_08x10.lbm (100%) rename radio/src/fonts/{std_fw => std}/font_it_08x10.png (100%) rename radio/src/fonts/{std_fw => std}/font_it_10x14.lbm (100%) rename radio/src/fonts/{std_fw => std}/font_it_10x14.png (100%) rename radio/src/fonts/{std_fw => std}/font_pl_04x06.lbm (100%) rename radio/src/fonts/{std_fw => std}/font_pl_04x06.png (100%) rename radio/src/fonts/{std_fw => std}/font_pl_05x07.lbm (100%) rename radio/src/fonts/{std_fw => std}/font_pl_05x07.png (100%) rename radio/src/fonts/{std_fw => std}/font_pl_08x10.lbm (100%) rename radio/src/fonts/{std_fw => std}/font_pl_08x10.png (100%) rename radio/src/fonts/{std_fw => std}/font_pl_10x14.lbm (100%) rename radio/src/fonts/{std_fw => std}/font_pl_10x14.png (100%) rename radio/src/fonts/{sqt5_pw => std}/font_pt_04x06.lbm (100%) rename radio/src/fonts/{sqt5_pw => std}/font_pt_04x06.png (100%) rename radio/src/fonts/{std_fw => std}/font_pt_05x07.lbm (100%) rename radio/src/fonts/{std_fw => std}/font_pt_05x07.png (100%) rename radio/src/fonts/{std_fw => std}/font_pt_08x10.lbm (100%) rename radio/src/fonts/{std_fw => std}/font_pt_08x10.png (100%) rename radio/src/fonts/{std_fw => std}/font_pt_10x14.lbm (100%) rename radio/src/fonts/{std_fw => std}/font_pt_10x14.png (100%) rename radio/src/fonts/{std_fw => std}/font_se_04x06.lbm (100%) rename radio/src/fonts/{std_fw => std}/font_se_04x06.png (100%) rename radio/src/fonts/{std_fw => std}/font_se_05x07.lbm (100%) rename radio/src/fonts/{std_fw => std}/font_se_05x07.png (100%) rename radio/src/fonts/{std_fw => std}/font_se_08x10.lbm (100%) rename radio/src/fonts/{std_fw => std}/font_se_08x10.png (100%) rename radio/src/fonts/{std_fw => std}/font_se_10x14.lbm (100%) rename radio/src/fonts/{std_fw => std}/font_se_10x14.png (100%) delete mode 100644 radio/src/fonts/std_pw/font_03x05.lbm delete mode 100644 radio/src/fonts/std_pw/font_03x05.png delete mode 100644 radio/src/fonts/std_pw/font_04x06_extra.lbm delete mode 100644 radio/src/fonts/std_pw/font_04x06_extra.png delete mode 100644 radio/src/fonts/std_pw/font_05x07_extra.lbm delete mode 100644 radio/src/fonts/std_pw/font_05x07_extra.png delete mode 100644 radio/src/fonts/std_pw/font_10x14.png delete mode 100644 radio/src/fonts/std_pw/font_10x14_compressed.png delete mode 100644 radio/src/fonts/std_pw/font_10x14_extra.lbm delete mode 100644 radio/src/fonts/std_pw/font_10x14_extra.png delete mode 100644 radio/src/fonts/std_pw/font_pt_04x06.lbm delete mode 100644 radio/src/fonts/std_pw/font_pt_04x06.png rename radio/src/fonts/{std_fw => stdv2}/font_03x05.lbm (100%) rename radio/src/fonts/{std_fw => stdv2}/font_03x05.png (100%) rename radio/src/fonts/{std_pw => stdv2}/font_04x06.lbm (100%) rename radio/src/fonts/{std_pw => stdv2}/font_04x06.png (100%) rename radio/src/fonts/{std_fw => stdv2}/font_04x06_extra.lbm (100%) rename radio/src/fonts/{std_fw => stdv2}/font_04x06_extra.png (100%) rename radio/src/fonts/{std_pw => stdv2}/font_05x07.lbm (100%) rename radio/src/fonts/{std_pw => stdv2}/font_05x07.png (100%) rename radio/src/fonts/{std_fw => stdv2}/font_05x07_extra.lbm (100%) rename radio/src/fonts/{std_fw => stdv2}/font_05x07_extra.png (100%) rename radio/src/fonts/{std_pw => stdv2}/font_08x10.lbm (100%) rename radio/src/fonts/{std_pw => stdv2}/font_08x10.png (100%) rename radio/src/fonts/{std_pw => stdv2}/font_10x14.lbm (98%) create mode 100644 radio/src/fonts/stdv2/font_10x14.png rename radio/src/fonts/{std_pw => stdv2}/font_10x14_compressed.lbm (98%) create mode 100644 radio/src/fonts/stdv2/font_10x14_compressed.png rename radio/src/fonts/{std_fw => stdv2}/font_10x14_extra.lbm (100%) rename radio/src/fonts/{std_fw => stdv2}/font_10x14_extra.png (100%) rename radio/src/fonts/{std_pw => stdv2}/font_cz_04x06.lbm (100%) rename radio/src/fonts/{std_pw => stdv2}/font_cz_04x06.png (100%) rename radio/src/fonts/{std_pw => stdv2}/font_cz_05x07.lbm (100%) rename radio/src/fonts/{std_pw => stdv2}/font_cz_05x07.png (100%) rename radio/src/fonts/{std_pw => stdv2}/font_cz_08x10.lbm (100%) rename radio/src/fonts/{std_pw => stdv2}/font_cz_08x10.png (100%) rename radio/src/fonts/{std_pw => stdv2}/font_cz_10x14.lbm (100%) rename radio/src/fonts/{std_pw => stdv2}/font_cz_10x14.png (100%) rename radio/src/fonts/{std_pw => stdv2}/font_de_04x06.lbm (100%) rename radio/src/fonts/{std_pw => stdv2}/font_de_04x06.png (100%) rename radio/src/fonts/{std_pw => stdv2}/font_de_05x07.lbm (100%) rename radio/src/fonts/{std_pw => stdv2}/font_de_05x07.png (100%) rename radio/src/fonts/{std_pw => stdv2}/font_de_08x10.lbm (100%) rename radio/src/fonts/{std_pw => stdv2}/font_de_08x10.png (100%) rename radio/src/fonts/{std_pw => stdv2}/font_de_10x14.lbm (100%) rename radio/src/fonts/{std_pw => stdv2}/font_de_10x14.png (100%) rename radio/src/fonts/{std_pw => stdv2}/font_es_04x06.lbm (100%) rename radio/src/fonts/{std_pw => stdv2}/font_es_04x06.png (100%) rename radio/src/fonts/{std_pw => stdv2}/font_es_05x07.lbm (100%) rename radio/src/fonts/{std_pw => stdv2}/font_es_05x07.png (100%) rename radio/src/fonts/{std_pw => stdv2}/font_es_08x10.lbm (100%) rename radio/src/fonts/{std_pw => stdv2}/font_es_08x10.png (100%) rename radio/src/fonts/{std_pw => stdv2}/font_es_10x14.lbm (100%) rename radio/src/fonts/{std_pw => stdv2}/font_es_10x14.png (100%) rename radio/src/fonts/{std_pw => stdv2}/font_fr_04x06.lbm (100%) rename radio/src/fonts/{std_pw => stdv2}/font_fr_04x06.png (100%) rename radio/src/fonts/{std_pw => stdv2}/font_fr_05x07.lbm (100%) rename radio/src/fonts/{std_pw => stdv2}/font_fr_05x07.png (100%) rename radio/src/fonts/{std_pw => stdv2}/font_fr_08x10.lbm (100%) rename radio/src/fonts/{std_pw => stdv2}/font_fr_08x10.png (100%) rename radio/src/fonts/{std_pw => stdv2}/font_fr_10x14.lbm (100%) rename radio/src/fonts/{std_pw => stdv2}/font_fr_10x14.png (100%) rename radio/src/fonts/{std_pw => stdv2}/font_it_04x06.lbm (100%) rename radio/src/fonts/{std_pw => stdv2}/font_it_04x06.png (100%) rename radio/src/fonts/{std_pw => stdv2}/font_it_05x07.lbm (100%) rename radio/src/fonts/{std_pw => stdv2}/font_it_05x07.png (100%) rename radio/src/fonts/{std_pw => stdv2}/font_it_08x10.lbm (100%) rename radio/src/fonts/{std_pw => stdv2}/font_it_08x10.png (100%) rename radio/src/fonts/{std_pw => stdv2}/font_it_10x14.lbm (100%) rename radio/src/fonts/{std_pw => stdv2}/font_it_10x14.png (100%) rename radio/src/fonts/{std_pw => stdv2}/font_pl_04x06.lbm (100%) rename radio/src/fonts/{std_pw => stdv2}/font_pl_04x06.png (100%) rename radio/src/fonts/{std_pw => stdv2}/font_pl_05x07.lbm (100%) rename radio/src/fonts/{std_pw => stdv2}/font_pl_05x07.png (100%) rename radio/src/fonts/{std_pw => stdv2}/font_pl_08x10.lbm (100%) rename radio/src/fonts/{std_pw => stdv2}/font_pl_08x10.png (100%) rename radio/src/fonts/{std_pw => stdv2}/font_pl_10x14.lbm (100%) rename radio/src/fonts/{std_pw => stdv2}/font_pl_10x14.png (100%) rename radio/src/fonts/{std_fw => stdv2}/font_pt_04x06.lbm (100%) rename radio/src/fonts/{std_fw => stdv2}/font_pt_04x06.png (100%) rename radio/src/fonts/{std_pw => stdv2}/font_pt_05x07.lbm (100%) rename radio/src/fonts/{std_pw => stdv2}/font_pt_05x07.png (100%) rename radio/src/fonts/{std_pw => stdv2}/font_pt_08x10.lbm (100%) rename radio/src/fonts/{std_pw => stdv2}/font_pt_08x10.png (100%) rename radio/src/fonts/{std_pw => stdv2}/font_pt_10x14.lbm (100%) rename radio/src/fonts/{std_pw => stdv2}/font_pt_10x14.png (100%) rename radio/src/fonts/{std_pw => stdv2}/font_se_04x06.lbm (100%) rename radio/src/fonts/{std_pw => stdv2}/font_se_04x06.png (100%) rename radio/src/fonts/{std_pw => stdv2}/font_se_05x07.lbm (100%) rename radio/src/fonts/{std_pw => stdv2}/font_se_05x07.png (100%) rename radio/src/fonts/{std_pw => stdv2}/font_se_08x10.lbm (100%) rename radio/src/fonts/{std_pw => stdv2}/font_se_08x10.png (100%) rename radio/src/fonts/{std_pw => stdv2}/font_se_10x14.lbm (100%) rename radio/src/fonts/{std_pw => stdv2}/font_se_10x14.png (100%) diff --git a/radio/src/Makefile b/radio/src/Makefile index 2a77793b2..04dcfbe41 100644 --- a/radio/src/Makefile +++ b/radio/src/Makefile @@ -139,14 +139,9 @@ GRAPHICS = YES BOLD = YES BATTGRAPH = NO -# FONT NAME -# Values = STD, SQT5 -FONT = STD - -# PROPORTIONAL FONT -# proportional or fixed-width -# Values = YES, NO -PWFONT = YES +# FONT TYPE +# Values = STD, STDV2, SQT5 +FONT = STDV2 # PPM center adjustable # Values = YES, NO @@ -783,18 +778,12 @@ ifneq ($(PCB), TARANIS) endif endif - -ifneq ($(FONT), STD) - CPPDEFS += -DFONT_$(FONT) -endif - -ifeq ($(PWFONT), YES) - INCDIRS += fonts/$(shell sh -c "echo $(FONT)_pw | tr '[:upper:]' '[:lower:]'") - INCDIRS += fonts/std_pw - CPPDEFS += -DPWFONT +ifeq ($(FONT), STD) + INCDIRS += fonts/std else - INCDIRS += fonts/$(shell sh -c "echo $(FONT)_fw | tr '[:upper:]' '[:lower:]'") - INCDIRS += fonts/std_fw + INCDIRS += fonts/$(shell sh -c "echo $(FONT) | tr '[:upper:]' '[:lower:]'") + INCDIRS += fonts/stdv2 + CPPDEFS += -DPWFONT endif ifeq ($(THR_TRACE), YES) diff --git a/radio/src/fonts/sqt5_fw/font_03x05.lbm b/radio/src/fonts/sqt5/font_03x05.lbm similarity index 100% rename from radio/src/fonts/sqt5_fw/font_03x05.lbm rename to radio/src/fonts/sqt5/font_03x05.lbm diff --git a/radio/src/fonts/sqt5_fw/font_03x05.png b/radio/src/fonts/sqt5/font_03x05.png similarity index 100% rename from radio/src/fonts/sqt5_fw/font_03x05.png rename to radio/src/fonts/sqt5/font_03x05.png diff --git a/radio/src/fonts/sqt5_fw/font_04x06.lbm b/radio/src/fonts/sqt5/font_04x06.lbm similarity index 100% rename from radio/src/fonts/sqt5_fw/font_04x06.lbm rename to radio/src/fonts/sqt5/font_04x06.lbm diff --git a/radio/src/fonts/sqt5_fw/font_04x06.png b/radio/src/fonts/sqt5/font_04x06.png similarity index 100% rename from radio/src/fonts/sqt5_fw/font_04x06.png rename to radio/src/fonts/sqt5/font_04x06.png diff --git a/radio/src/fonts/sqt5_fw/font_04x06_extra.lbm b/radio/src/fonts/sqt5/font_04x06_extra.lbm similarity index 100% rename from radio/src/fonts/sqt5_fw/font_04x06_extra.lbm rename to radio/src/fonts/sqt5/font_04x06_extra.lbm diff --git a/radio/src/fonts/sqt5_fw/font_04x06_extra.png b/radio/src/fonts/sqt5/font_04x06_extra.png similarity index 100% rename from radio/src/fonts/sqt5_fw/font_04x06_extra.png rename to radio/src/fonts/sqt5/font_04x06_extra.png diff --git a/radio/src/fonts/sqt5_fw/font_05x07.lbm b/radio/src/fonts/sqt5/font_05x07.lbm similarity index 100% rename from radio/src/fonts/sqt5_fw/font_05x07.lbm rename to radio/src/fonts/sqt5/font_05x07.lbm diff --git a/radio/src/fonts/sqt5_fw/font_05x07.png b/radio/src/fonts/sqt5/font_05x07.png similarity index 100% rename from radio/src/fonts/sqt5_fw/font_05x07.png rename to radio/src/fonts/sqt5/font_05x07.png diff --git a/radio/src/fonts/sqt5_fw/font_05x07_extra.lbm b/radio/src/fonts/sqt5/font_05x07_extra.lbm similarity index 100% rename from radio/src/fonts/sqt5_fw/font_05x07_extra.lbm rename to radio/src/fonts/sqt5/font_05x07_extra.lbm diff --git a/radio/src/fonts/sqt5_fw/font_05x07_extra.png b/radio/src/fonts/sqt5/font_05x07_extra.png similarity index 100% rename from radio/src/fonts/sqt5_fw/font_05x07_extra.png rename to radio/src/fonts/sqt5/font_05x07_extra.png diff --git a/radio/src/fonts/sqt5_fw/font_08x10.lbm b/radio/src/fonts/sqt5/font_08x10.lbm similarity index 100% rename from radio/src/fonts/sqt5_fw/font_08x10.lbm rename to radio/src/fonts/sqt5/font_08x10.lbm diff --git a/radio/src/fonts/sqt5_fw/font_08x10.png b/radio/src/fonts/sqt5/font_08x10.png similarity index 100% rename from radio/src/fonts/sqt5_fw/font_08x10.png rename to radio/src/fonts/sqt5/font_08x10.png diff --git a/radio/src/fonts/sqt5_fw/font_10x14.lbm b/radio/src/fonts/sqt5/font_10x14.lbm similarity index 100% rename from radio/src/fonts/sqt5_fw/font_10x14.lbm rename to radio/src/fonts/sqt5/font_10x14.lbm diff --git a/radio/src/fonts/sqt5_fw/font_10x14.png b/radio/src/fonts/sqt5/font_10x14.png similarity index 100% rename from radio/src/fonts/sqt5_fw/font_10x14.png rename to radio/src/fonts/sqt5/font_10x14.png diff --git a/radio/src/fonts/sqt5_fw/font_10x14_compressed.lbm b/radio/src/fonts/sqt5/font_10x14_compressed.lbm similarity index 100% rename from radio/src/fonts/sqt5_fw/font_10x14_compressed.lbm rename to radio/src/fonts/sqt5/font_10x14_compressed.lbm diff --git a/radio/src/fonts/sqt5_fw/font_10x14_compressed.png b/radio/src/fonts/sqt5/font_10x14_compressed.png similarity index 100% rename from radio/src/fonts/sqt5_fw/font_10x14_compressed.png rename to radio/src/fonts/sqt5/font_10x14_compressed.png diff --git a/radio/src/fonts/sqt5_fw/font_10x14_extra.lbm b/radio/src/fonts/sqt5/font_10x14_extra.lbm similarity index 100% rename from radio/src/fonts/sqt5_fw/font_10x14_extra.lbm rename to radio/src/fonts/sqt5/font_10x14_extra.lbm diff --git a/radio/src/fonts/sqt5_fw/font_10x14_extra.png b/radio/src/fonts/sqt5/font_10x14_extra.png similarity index 100% rename from radio/src/fonts/sqt5_fw/font_10x14_extra.png rename to radio/src/fonts/sqt5/font_10x14_extra.png diff --git a/radio/src/fonts/sqt5_fw/font_cz_04x06.lbm b/radio/src/fonts/sqt5/font_cz_04x06.lbm similarity index 100% rename from radio/src/fonts/sqt5_fw/font_cz_04x06.lbm rename to radio/src/fonts/sqt5/font_cz_04x06.lbm diff --git a/radio/src/fonts/sqt5_fw/font_cz_04x06.png b/radio/src/fonts/sqt5/font_cz_04x06.png similarity index 100% rename from radio/src/fonts/sqt5_fw/font_cz_04x06.png rename to radio/src/fonts/sqt5/font_cz_04x06.png diff --git a/radio/src/fonts/sqt5_fw/font_cz_05x07.lbm b/radio/src/fonts/sqt5/font_cz_05x07.lbm similarity index 100% rename from radio/src/fonts/sqt5_fw/font_cz_05x07.lbm rename to radio/src/fonts/sqt5/font_cz_05x07.lbm diff --git a/radio/src/fonts/sqt5_fw/font_cz_05x07.png b/radio/src/fonts/sqt5/font_cz_05x07.png similarity index 100% rename from radio/src/fonts/sqt5_fw/font_cz_05x07.png rename to radio/src/fonts/sqt5/font_cz_05x07.png diff --git a/radio/src/fonts/sqt5_fw/font_cz_08x10.lbm b/radio/src/fonts/sqt5/font_cz_08x10.lbm similarity index 100% rename from radio/src/fonts/sqt5_fw/font_cz_08x10.lbm rename to radio/src/fonts/sqt5/font_cz_08x10.lbm diff --git a/radio/src/fonts/sqt5_fw/font_cz_08x10.png b/radio/src/fonts/sqt5/font_cz_08x10.png similarity index 100% rename from radio/src/fonts/sqt5_fw/font_cz_08x10.png rename to radio/src/fonts/sqt5/font_cz_08x10.png diff --git a/radio/src/fonts/sqt5_fw/font_cz_10x14.lbm b/radio/src/fonts/sqt5/font_cz_10x14.lbm similarity index 100% rename from radio/src/fonts/sqt5_fw/font_cz_10x14.lbm rename to radio/src/fonts/sqt5/font_cz_10x14.lbm diff --git a/radio/src/fonts/sqt5_fw/font_cz_10x14.png b/radio/src/fonts/sqt5/font_cz_10x14.png similarity index 100% rename from radio/src/fonts/sqt5_fw/font_cz_10x14.png rename to radio/src/fonts/sqt5/font_cz_10x14.png diff --git a/radio/src/fonts/sqt5_fw/font_de_04x06.lbm b/radio/src/fonts/sqt5/font_de_04x06.lbm similarity index 100% rename from radio/src/fonts/sqt5_fw/font_de_04x06.lbm rename to radio/src/fonts/sqt5/font_de_04x06.lbm diff --git a/radio/src/fonts/sqt5_fw/font_de_04x06.png b/radio/src/fonts/sqt5/font_de_04x06.png similarity index 100% rename from radio/src/fonts/sqt5_fw/font_de_04x06.png rename to radio/src/fonts/sqt5/font_de_04x06.png diff --git a/radio/src/fonts/sqt5_fw/font_de_05x07.lbm b/radio/src/fonts/sqt5/font_de_05x07.lbm similarity index 100% rename from radio/src/fonts/sqt5_fw/font_de_05x07.lbm rename to radio/src/fonts/sqt5/font_de_05x07.lbm diff --git a/radio/src/fonts/sqt5_fw/font_de_05x07.png b/radio/src/fonts/sqt5/font_de_05x07.png similarity index 100% rename from radio/src/fonts/sqt5_fw/font_de_05x07.png rename to radio/src/fonts/sqt5/font_de_05x07.png diff --git a/radio/src/fonts/sqt5_fw/font_de_08x10.lbm b/radio/src/fonts/sqt5/font_de_08x10.lbm similarity index 100% rename from radio/src/fonts/sqt5_fw/font_de_08x10.lbm rename to radio/src/fonts/sqt5/font_de_08x10.lbm diff --git a/radio/src/fonts/sqt5_fw/font_de_08x10.png b/radio/src/fonts/sqt5/font_de_08x10.png similarity index 100% rename from radio/src/fonts/sqt5_fw/font_de_08x10.png rename to radio/src/fonts/sqt5/font_de_08x10.png diff --git a/radio/src/fonts/sqt5_fw/font_de_10x14.lbm b/radio/src/fonts/sqt5/font_de_10x14.lbm similarity index 100% rename from radio/src/fonts/sqt5_fw/font_de_10x14.lbm rename to radio/src/fonts/sqt5/font_de_10x14.lbm diff --git a/radio/src/fonts/sqt5_fw/font_de_10x14.png b/radio/src/fonts/sqt5/font_de_10x14.png similarity index 100% rename from radio/src/fonts/sqt5_fw/font_de_10x14.png rename to radio/src/fonts/sqt5/font_de_10x14.png diff --git a/radio/src/fonts/sqt5_fw/font_es_04x06.lbm b/radio/src/fonts/sqt5/font_es_04x06.lbm similarity index 100% rename from radio/src/fonts/sqt5_fw/font_es_04x06.lbm rename to radio/src/fonts/sqt5/font_es_04x06.lbm diff --git a/radio/src/fonts/sqt5_fw/font_es_04x06.png b/radio/src/fonts/sqt5/font_es_04x06.png similarity index 100% rename from radio/src/fonts/sqt5_fw/font_es_04x06.png rename to radio/src/fonts/sqt5/font_es_04x06.png diff --git a/radio/src/fonts/sqt5_fw/font_es_05x07.lbm b/radio/src/fonts/sqt5/font_es_05x07.lbm similarity index 100% rename from radio/src/fonts/sqt5_fw/font_es_05x07.lbm rename to radio/src/fonts/sqt5/font_es_05x07.lbm diff --git a/radio/src/fonts/sqt5_fw/font_es_05x07.png b/radio/src/fonts/sqt5/font_es_05x07.png similarity index 100% rename from radio/src/fonts/sqt5_fw/font_es_05x07.png rename to radio/src/fonts/sqt5/font_es_05x07.png diff --git a/radio/src/fonts/sqt5_fw/font_es_08x10.lbm b/radio/src/fonts/sqt5/font_es_08x10.lbm similarity index 100% rename from radio/src/fonts/sqt5_fw/font_es_08x10.lbm rename to radio/src/fonts/sqt5/font_es_08x10.lbm diff --git a/radio/src/fonts/sqt5_fw/font_es_08x10.png b/radio/src/fonts/sqt5/font_es_08x10.png similarity index 100% rename from radio/src/fonts/sqt5_fw/font_es_08x10.png rename to radio/src/fonts/sqt5/font_es_08x10.png diff --git a/radio/src/fonts/sqt5_fw/font_es_10x14.lbm b/radio/src/fonts/sqt5/font_es_10x14.lbm similarity index 100% rename from radio/src/fonts/sqt5_fw/font_es_10x14.lbm rename to radio/src/fonts/sqt5/font_es_10x14.lbm diff --git a/radio/src/fonts/sqt5_fw/font_es_10x14.png b/radio/src/fonts/sqt5/font_es_10x14.png similarity index 100% rename from radio/src/fonts/sqt5_fw/font_es_10x14.png rename to radio/src/fonts/sqt5/font_es_10x14.png diff --git a/radio/src/fonts/sqt5_fw/font_fr_04x06.lbm b/radio/src/fonts/sqt5/font_fr_04x06.lbm similarity index 100% rename from radio/src/fonts/sqt5_fw/font_fr_04x06.lbm rename to radio/src/fonts/sqt5/font_fr_04x06.lbm diff --git a/radio/src/fonts/sqt5_fw/font_fr_04x06.png b/radio/src/fonts/sqt5/font_fr_04x06.png similarity index 100% rename from radio/src/fonts/sqt5_fw/font_fr_04x06.png rename to radio/src/fonts/sqt5/font_fr_04x06.png diff --git a/radio/src/fonts/sqt5_fw/font_fr_05x07.lbm b/radio/src/fonts/sqt5/font_fr_05x07.lbm similarity index 100% rename from radio/src/fonts/sqt5_fw/font_fr_05x07.lbm rename to radio/src/fonts/sqt5/font_fr_05x07.lbm diff --git a/radio/src/fonts/sqt5_fw/font_fr_05x07.png b/radio/src/fonts/sqt5/font_fr_05x07.png similarity index 100% rename from radio/src/fonts/sqt5_fw/font_fr_05x07.png rename to radio/src/fonts/sqt5/font_fr_05x07.png diff --git a/radio/src/fonts/sqt5_fw/font_fr_08x10.lbm b/radio/src/fonts/sqt5/font_fr_08x10.lbm similarity index 100% rename from radio/src/fonts/sqt5_fw/font_fr_08x10.lbm rename to radio/src/fonts/sqt5/font_fr_08x10.lbm diff --git a/radio/src/fonts/sqt5_fw/font_fr_08x10.png b/radio/src/fonts/sqt5/font_fr_08x10.png similarity index 100% rename from radio/src/fonts/sqt5_fw/font_fr_08x10.png rename to radio/src/fonts/sqt5/font_fr_08x10.png diff --git a/radio/src/fonts/sqt5_fw/font_fr_10x14.lbm b/radio/src/fonts/sqt5/font_fr_10x14.lbm similarity index 100% rename from radio/src/fonts/sqt5_fw/font_fr_10x14.lbm rename to radio/src/fonts/sqt5/font_fr_10x14.lbm diff --git a/radio/src/fonts/sqt5_fw/font_fr_10x14.png b/radio/src/fonts/sqt5/font_fr_10x14.png similarity index 100% rename from radio/src/fonts/sqt5_fw/font_fr_10x14.png rename to radio/src/fonts/sqt5/font_fr_10x14.png diff --git a/radio/src/fonts/sqt5_fw/font_it_04x06.lbm b/radio/src/fonts/sqt5/font_it_04x06.lbm similarity index 100% rename from radio/src/fonts/sqt5_fw/font_it_04x06.lbm rename to radio/src/fonts/sqt5/font_it_04x06.lbm diff --git a/radio/src/fonts/sqt5_fw/font_it_04x06.png b/radio/src/fonts/sqt5/font_it_04x06.png similarity index 100% rename from radio/src/fonts/sqt5_fw/font_it_04x06.png rename to radio/src/fonts/sqt5/font_it_04x06.png diff --git a/radio/src/fonts/sqt5_fw/font_it_05x07.lbm b/radio/src/fonts/sqt5/font_it_05x07.lbm similarity index 100% rename from radio/src/fonts/sqt5_fw/font_it_05x07.lbm rename to radio/src/fonts/sqt5/font_it_05x07.lbm diff --git a/radio/src/fonts/sqt5_fw/font_it_05x07.png b/radio/src/fonts/sqt5/font_it_05x07.png similarity index 100% rename from radio/src/fonts/sqt5_fw/font_it_05x07.png rename to radio/src/fonts/sqt5/font_it_05x07.png diff --git a/radio/src/fonts/sqt5_fw/font_it_08x10.lbm b/radio/src/fonts/sqt5/font_it_08x10.lbm similarity index 100% rename from radio/src/fonts/sqt5_fw/font_it_08x10.lbm rename to radio/src/fonts/sqt5/font_it_08x10.lbm diff --git a/radio/src/fonts/sqt5_fw/font_it_08x10.png b/radio/src/fonts/sqt5/font_it_08x10.png similarity index 100% rename from radio/src/fonts/sqt5_fw/font_it_08x10.png rename to radio/src/fonts/sqt5/font_it_08x10.png diff --git a/radio/src/fonts/sqt5_fw/font_it_10x14.lbm b/radio/src/fonts/sqt5/font_it_10x14.lbm similarity index 100% rename from radio/src/fonts/sqt5_fw/font_it_10x14.lbm rename to radio/src/fonts/sqt5/font_it_10x14.lbm diff --git a/radio/src/fonts/sqt5_fw/font_it_10x14.png b/radio/src/fonts/sqt5/font_it_10x14.png similarity index 100% rename from radio/src/fonts/sqt5_fw/font_it_10x14.png rename to radio/src/fonts/sqt5/font_it_10x14.png diff --git a/radio/src/fonts/sqt5_fw/font_pl_04x06.lbm b/radio/src/fonts/sqt5/font_pl_04x06.lbm similarity index 100% rename from radio/src/fonts/sqt5_fw/font_pl_04x06.lbm rename to radio/src/fonts/sqt5/font_pl_04x06.lbm diff --git a/radio/src/fonts/sqt5_fw/font_pl_04x06.png b/radio/src/fonts/sqt5/font_pl_04x06.png similarity index 100% rename from radio/src/fonts/sqt5_fw/font_pl_04x06.png rename to radio/src/fonts/sqt5/font_pl_04x06.png diff --git a/radio/src/fonts/sqt5_fw/font_pl_05x07.lbm b/radio/src/fonts/sqt5/font_pl_05x07.lbm similarity index 100% rename from radio/src/fonts/sqt5_fw/font_pl_05x07.lbm rename to radio/src/fonts/sqt5/font_pl_05x07.lbm diff --git a/radio/src/fonts/sqt5_fw/font_pl_05x07.png b/radio/src/fonts/sqt5/font_pl_05x07.png similarity index 100% rename from radio/src/fonts/sqt5_fw/font_pl_05x07.png rename to radio/src/fonts/sqt5/font_pl_05x07.png diff --git a/radio/src/fonts/sqt5_fw/font_pl_08x10.lbm b/radio/src/fonts/sqt5/font_pl_08x10.lbm similarity index 100% rename from radio/src/fonts/sqt5_fw/font_pl_08x10.lbm rename to radio/src/fonts/sqt5/font_pl_08x10.lbm diff --git a/radio/src/fonts/sqt5_fw/font_pl_08x10.png b/radio/src/fonts/sqt5/font_pl_08x10.png similarity index 100% rename from radio/src/fonts/sqt5_fw/font_pl_08x10.png rename to radio/src/fonts/sqt5/font_pl_08x10.png diff --git a/radio/src/fonts/sqt5_fw/font_pl_10x14.lbm b/radio/src/fonts/sqt5/font_pl_10x14.lbm similarity index 100% rename from radio/src/fonts/sqt5_fw/font_pl_10x14.lbm rename to radio/src/fonts/sqt5/font_pl_10x14.lbm diff --git a/radio/src/fonts/sqt5_fw/font_pl_10x14.png b/radio/src/fonts/sqt5/font_pl_10x14.png similarity index 100% rename from radio/src/fonts/sqt5_fw/font_pl_10x14.png rename to radio/src/fonts/sqt5/font_pl_10x14.png diff --git a/radio/src/fonts/sqt5_fw/font_pt_04x06.lbm b/radio/src/fonts/sqt5/font_pt_04x06.lbm similarity index 100% rename from radio/src/fonts/sqt5_fw/font_pt_04x06.lbm rename to radio/src/fonts/sqt5/font_pt_04x06.lbm diff --git a/radio/src/fonts/sqt5_fw/font_pt_04x06.png b/radio/src/fonts/sqt5/font_pt_04x06.png similarity index 100% rename from radio/src/fonts/sqt5_fw/font_pt_04x06.png rename to radio/src/fonts/sqt5/font_pt_04x06.png diff --git a/radio/src/fonts/sqt5_fw/font_pt_05x07.lbm b/radio/src/fonts/sqt5/font_pt_05x07.lbm similarity index 100% rename from radio/src/fonts/sqt5_fw/font_pt_05x07.lbm rename to radio/src/fonts/sqt5/font_pt_05x07.lbm diff --git a/radio/src/fonts/sqt5_fw/font_pt_05x07.png b/radio/src/fonts/sqt5/font_pt_05x07.png similarity index 100% rename from radio/src/fonts/sqt5_fw/font_pt_05x07.png rename to radio/src/fonts/sqt5/font_pt_05x07.png diff --git a/radio/src/fonts/sqt5_fw/font_pt_08x10.lbm b/radio/src/fonts/sqt5/font_pt_08x10.lbm similarity index 100% rename from radio/src/fonts/sqt5_fw/font_pt_08x10.lbm rename to radio/src/fonts/sqt5/font_pt_08x10.lbm diff --git a/radio/src/fonts/sqt5_fw/font_pt_08x10.png b/radio/src/fonts/sqt5/font_pt_08x10.png similarity index 100% rename from radio/src/fonts/sqt5_fw/font_pt_08x10.png rename to radio/src/fonts/sqt5/font_pt_08x10.png diff --git a/radio/src/fonts/sqt5_fw/font_pt_10x14.lbm b/radio/src/fonts/sqt5/font_pt_10x14.lbm similarity index 100% rename from radio/src/fonts/sqt5_fw/font_pt_10x14.lbm rename to radio/src/fonts/sqt5/font_pt_10x14.lbm diff --git a/radio/src/fonts/sqt5_fw/font_pt_10x14.png b/radio/src/fonts/sqt5/font_pt_10x14.png similarity index 100% rename from radio/src/fonts/sqt5_fw/font_pt_10x14.png rename to radio/src/fonts/sqt5/font_pt_10x14.png diff --git a/radio/src/fonts/sqt5_fw/font_se_04x06.lbm b/radio/src/fonts/sqt5/font_se_04x06.lbm similarity index 100% rename from radio/src/fonts/sqt5_fw/font_se_04x06.lbm rename to radio/src/fonts/sqt5/font_se_04x06.lbm diff --git a/radio/src/fonts/sqt5_fw/font_se_04x06.png b/radio/src/fonts/sqt5/font_se_04x06.png similarity index 100% rename from radio/src/fonts/sqt5_fw/font_se_04x06.png rename to radio/src/fonts/sqt5/font_se_04x06.png diff --git a/radio/src/fonts/sqt5_fw/font_se_05x07.lbm b/radio/src/fonts/sqt5/font_se_05x07.lbm similarity index 100% rename from radio/src/fonts/sqt5_fw/font_se_05x07.lbm rename to radio/src/fonts/sqt5/font_se_05x07.lbm diff --git a/radio/src/fonts/sqt5_fw/font_se_05x07.png b/radio/src/fonts/sqt5/font_se_05x07.png similarity index 100% rename from radio/src/fonts/sqt5_fw/font_se_05x07.png rename to radio/src/fonts/sqt5/font_se_05x07.png diff --git a/radio/src/fonts/sqt5_fw/font_se_08x10.lbm b/radio/src/fonts/sqt5/font_se_08x10.lbm similarity index 100% rename from radio/src/fonts/sqt5_fw/font_se_08x10.lbm rename to radio/src/fonts/sqt5/font_se_08x10.lbm diff --git a/radio/src/fonts/sqt5_fw/font_se_08x10.png b/radio/src/fonts/sqt5/font_se_08x10.png similarity index 100% rename from radio/src/fonts/sqt5_fw/font_se_08x10.png rename to radio/src/fonts/sqt5/font_se_08x10.png diff --git a/radio/src/fonts/sqt5_fw/font_se_10x14.lbm b/radio/src/fonts/sqt5/font_se_10x14.lbm similarity index 100% rename from radio/src/fonts/sqt5_fw/font_se_10x14.lbm rename to radio/src/fonts/sqt5/font_se_10x14.lbm diff --git a/radio/src/fonts/sqt5_fw/font_se_10x14.png b/radio/src/fonts/sqt5/font_se_10x14.png similarity index 100% rename from radio/src/fonts/sqt5_fw/font_se_10x14.png rename to radio/src/fonts/sqt5/font_se_10x14.png diff --git a/radio/src/fonts/sqt5_pw/font_04x06.lbm b/radio/src/fonts/sqt5_pw/font_04x06.lbm deleted file mode 100644 index 14e2a2c69..000000000 --- a/radio/src/fonts/sqt5_pw/font_04x06.lbm +++ /dev/null @@ -1,6 +0,0 @@ -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2f,0x00,0x00,0x00,0x07,0x00,0x07,0x00,0x14,0x3e,0x14,0x3e,0x14,0x04,0x2a,0x3e,0x2a,0x10,0x13,0x08,0x04,0x32,0x00,0x14,0x2a,0x14,0x20,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x1e,0x21,0x00,0x00,0x00,0x21,0x1e,0x00,0x00,0x00,0x2a,0x1c,0x2a,0x00,0x08,0x08,0x3e,0x08,0x08,0x00,0x40,0x30,0x10,0x00,0x08,0x08,0x08,0x08,0x00,0x00,0x30,0x30,0x00,0x00,0x10,0x08,0x04,0x02,0x00, -0x00,0x1e,0x21,0x1e,0x00,0x00,0x22,0x3f,0x20,0x00,0x22,0x31,0x29,0x26,0x00,0x21,0x25,0x25,0x1a,0x00,0x0c,0x0a,0x3f,0x08,0x00,0x17,0x25,0x25,0x19,0x00,0x1e,0x25,0x25,0x18,0x00,0x01,0x31,0x0d,0x03,0x00,0x1a,0x25,0x25,0x1a,0x00,0x06,0x29,0x29,0x1e,0x00,0x00,0x36,0x36,0x00,0x00,0x00,0x36,0x16,0x00,0x00,0x00,0x08,0x14,0x22,0x00,0x14,0x14,0x14,0x14,0x00,0x00,0x22,0x14,0x08,0x00,0x00,0x02,0x29,0x06,0x00, -0x00,0x02,0x05,0x02,0x00,0x3e,0x09,0x09,0x3e,0x00,0x3f,0x25,0x27,0x3c,0x00,0x1e,0x21,0x21,0x21,0x00,0x3f,0x21,0x21,0x1e,0x00,0x3f,0x25,0x25,0x21,0x00,0x3f,0x05,0x05,0x01,0x00,0x1e,0x21,0x29,0x39,0x00,0x3f,0x04,0x04,0x3f,0x00,0x00,0x21,0x3f,0x21,0x00,0x10,0x20,0x21,0x1f,0x00,0x3f,0x0c,0x12,0x21,0x00,0x3f,0x20,0x20,0x20,0x00,0x3f,0x01,0x07,0x01,0x3f,0x3f,0x01,0x01,0x3e,0x00,0x1e,0x21,0x21,0x1e,0x00, -0x3f,0x09,0x09,0x0f,0x00,0x3f,0x21,0x31,0x3f,0x00,0x3f,0x09,0x0f,0x38,0x00,0x22,0x25,0x25,0x19,0x00,0x00,0x01,0x3f,0x01,0x00,0x1f,0x20,0x20,0x1f,0x00,0x3f,0x20,0x10,0x0f,0x00,0x3f,0x20,0x18,0x20,0x3f,0x37,0x08,0x08,0x37,0x00,0x00,0x07,0x38,0x07,0x00,0x31,0x29,0x25,0x23,0x00,0x00,0x3f,0x21,0x21,0x00,0x02,0x04,0x08,0x10,0x00,0x00,0x21,0x21,0x3f,0x00,0x00,0x02,0x01,0x02,0x00,0x20,0x20,0x20,0x20,0x00, -0x00,0x01,0x02,0x00,0x00,0x3a,0x2a,0x2a,0x3e,0x00,0x3f,0x22,0x22,0x3e,0x00,0x3e,0x22,0x22,0x22,0x00,0x3e,0x22,0x22,0x3f,0x00,0x3e,0x2a,0x2a,0x2e,0x00,0x28,0x3f,0x29,0x01,0x00,0x2e,0x2a,0x2a,0x3e,0x00,0x3f,0x02,0x02,0x3e,0x00,0x00,0x24,0x3d,0x20,0x00,0x00,0x40,0x44,0x3d,0x00,0x3f,0x08,0x14,0x22,0x00,0x00,0x21,0x3f,0x20,0x00,0x3e,0x02,0x3e,0x02,0x3c,0x3e,0x02,0x02,0x3c,0x00,0x1c,0x22,0x22,0x1c,0x00, -0x3e,0x12,0x12,0x1e,0x00,0x1e,0x12,0x12,0x3e,0x00,0x3e,0x02,0x02,0x04,0x00,0x2e,0x2a,0x2a,0x3a,0x00,0x00,0x1f,0x24,0x20,0x00,0x3e,0x20,0x20,0x3e,0x00,0x3e,0x20,0x10,0x0e,0x00,0x3e,0x20,0x10,0x20,0x3e,0x36,0x08,0x08,0x36,0x00,0x2e,0x28,0x28,0x3e,0x00,0x22,0x32,0x2a,0x26,0x00,0x00,0x04,0x1e,0x21,0x00,0x00,0x00,0x3f,0x00,0x00,0x00,0x21,0x1e,0x04,0x00,0x08,0x2a,0x1c,0x08,0x00,0x00,0x08,0x1c,0x2a,0x08, diff --git a/radio/src/fonts/sqt5_pw/font_04x06.png b/radio/src/fonts/sqt5_pw/font_04x06.png deleted file mode 100644 index f60c60c5a1d830b4b196afc4a5909efec5e7c030..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 874 zcmV-w1C{)VP)NZ!;N~;K!9C9+i@IUFj{N#`gy!wiN?kp zTbda1NZa9w^G6+ZrvDK24OoZ)T1`UEk2)W3a1Wu534Af)5Q(}DCNpz7fnh$%Yfy&#Ha?0Ylq1GZoEXk!?}mp*4;9r^E~cX z;9)B1x_1?649=Sb&YZ3r)RvJ46dEC7{K(ZKgmX^`k(TZ)#c-Z!{o^sJJmlKn1&@e_ zOn^mM>MBVD=}MYpG#XJRh;Zt<3QiVTN~sojDn_z8LU=u`OR!AiutboCPkt!1@?DyE zh={-nml*FVJ-NDcp#gwpz>PzEGVa2a(%P}GxON0oE~Hf@HaQIDVWbXEq2Vp?r_oX) zMsPEYh>8e#AeXoWx*-cfX~YfFmSD%A#Zv>7>jamLZV7d_qY&X7rlnB?^{N~tE_tZR z7ds)Lg;TaPK63>yO$eBxM{iSa%PfB~0n6X~te3cjz6w6giMfHu`cLhmfdr znO_oq8ZC8wdrFCsDb2-O@M4t7Z)4|(GMI>I32eA;09>z&sMXES+}JiXoRT}d%R??7 z=l$q~3t@|BvfJ@fa*0xTIQD#4@om$NO&{*|@kl9tTk&v(hoW3xMAX|!Xor@fQ+Ho5 z;G>p3ua;7s)5(9YT6*ZsOTR^|hgtE~MpqnmsbV^#@xGH`Yf%2u3)80A(JR+V{ z9vX7PTI?b7R#zb(4g7d}Sb|?AThLLLqc_%4ijc@;s}qeBmbu#1YRT=tn-_5xi5H8o z72Zdw{vgf7h^548$=!700)&dwk7?ei*r!!X-v<_t%a2r5L;wH)07*qoM6N<$f|E*= A%>V!Z diff --git a/radio/src/fonts/sqt5_pw/font_05x07.lbm b/radio/src/fonts/sqt5_pw/font_05x07.lbm deleted file mode 100644 index 8cca7ef14..000000000 --- a/radio/src/fonts/sqt5_pw/font_05x07.lbm +++ /dev/null @@ -1,6 +0,0 @@ -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6f,0x00,0x00,0x07,0x00,0x07,0x00,0x18,0x30,0x18,0x0c,0x06,0x3e,0x7f,0x7b,0x7f,0x3e,0x23,0x13,0x08,0x64,0x62,0x36,0x49,0x55,0x22,0x50,0x00,0x05,0x03,0x00,0x00,0x00,0x1c,0x22,0x41,0x00,0x00,0x41,0x22,0x1c,0x00,0x14,0x08,0x3e,0x08,0x14,0x08,0x08,0x3e,0x08,0x08,0x00,0x50,0x30,0x00,0x00,0x00,0x08,0x08,0x08,0x08,0x00,0x60,0x60,0x00,0x00,0x20,0x10,0x08,0x04,0x02, -0x00,0x3e,0x41,0x41,0x3e,0x00,0x00,0x42,0x7f,0x40,0x00,0x62,0x51,0x49,0x46,0x00,0x41,0x49,0x49,0x36,0x00,0x18,0x14,0x12,0x7f,0x00,0x27,0x45,0x45,0x39,0x00,0x3e,0x49,0x49,0x32,0x00,0x01,0x79,0x05,0x03,0x00,0x36,0x49,0x49,0x36,0x00,0x06,0x49,0x29,0x1e,0x00,0x00,0x36,0x36,0x00,0x00,0x00,0x56,0x36,0x00,0x00,0x08,0x14,0x22,0x41,0x14,0x14,0x14,0x14,0x14,0x41,0x22,0x14,0x08,0x00,0x03,0x01,0x51,0x09,0x07, -0x06,0x09,0x09,0x06,0x00,0x7e,0x09,0x09,0x09,0x7e,0x7f,0x49,0x49,0x4f,0x78,0x3e,0x41,0x41,0x41,0x41,0x7f,0x41,0x41,0x41,0x3e,0x7f,0x49,0x49,0x49,0x41,0x7f,0x09,0x09,0x09,0x01,0x3e,0x41,0x49,0x49,0x79,0x7f,0x08,0x08,0x08,0x7f,0x00,0x41,0x7f,0x41,0x00,0x00,0x40,0x41,0x3f,0x01,0x7f,0x08,0x14,0x22,0x41,0x7f,0x40,0x40,0x40,0x40,0x7f,0x01,0x0f,0x01,0x7f,0x7f,0x01,0x01,0x01,0x7e,0x3e,0x41,0x41,0x41,0x3e, -0x7f,0x09,0x09,0x09,0x06,0x3e,0x41,0x51,0x21,0x5e,0x7f,0x09,0x09,0x0f,0x78,0x46,0x49,0x49,0x49,0x31,0x01,0x01,0x7f,0x01,0x01,0x3f,0x40,0x40,0x40,0x3f,0x7f,0x40,0x20,0x10,0x0f,0x7f,0x40,0x30,0x40,0x7f,0x63,0x14,0x08,0x14,0x63,0x0f,0x08,0x78,0x08,0x0f,0x61,0x51,0x49,0x45,0x43,0x00,0x7f,0x41,0x41,0x00,0x02,0x04,0x08,0x10,0x20,0x00,0x41,0x41,0x7f,0x00,0x04,0x02,0x01,0x02,0x04,0x40,0x40,0x40,0x40,0x40, -0x00,0x01,0x02,0x04,0x00,0x74,0x54,0x54,0x54,0x7c,0x7f,0x44,0x44,0x44,0x7c,0x7c,0x44,0x44,0x44,0x44,0x7c,0x44,0x44,0x44,0x7f,0x7c,0x54,0x54,0x54,0x5c,0x00,0x44,0x7f,0x45,0x01,0x5c,0x54,0x54,0x54,0x7c,0x7f,0x04,0x04,0x04,0x7c,0x00,0x44,0x7d,0x40,0x00,0x00,0x40,0x44,0x3d,0x00,0x7f,0x10,0x28,0x44,0x00,0x00,0x41,0x7f,0x40,0x00,0x7c,0x04,0x1c,0x04,0x7c,0x7c,0x04,0x04,0x04,0x78,0x38,0x44,0x44,0x44,0x38, -0x7c,0x14,0x14,0x14,0x1c,0x1c,0x14,0x14,0x14,0x7c,0x7c,0x04,0x04,0x04,0x0c,0x5c,0x54,0x54,0x54,0x74,0x00,0x3f,0x44,0x40,0x00,0x7c,0x40,0x40,0x40,0x7c,0x7c,0x40,0x20,0x10,0x0c,0x7c,0x40,0x20,0x40,0x7c,0x44,0x28,0x10,0x28,0x44,0x5c,0x50,0x50,0x50,0x7c,0x44,0x64,0x54,0x4c,0x44,0x10,0x08,0x10,0x08,0x00,0x7f,0x00,0x00,0x00,0x00,0x41,0x22,0x54,0x28,0x00,0x08,0x08,0x22,0x1c,0x08,0x08,0x1c,0x22,0x08,0x08, diff --git a/radio/src/fonts/sqt5_pw/font_05x07.png b/radio/src/fonts/sqt5_pw/font_05x07.png deleted file mode 100644 index c1ff4651bc32853698dac1ef592be16684b19833..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 937 zcmV;a16KTrP)#2^TaKL7uhokOO5hNUPm-LoX8B(5k>1zLLVhxL?F&Z6^WeClfF%US1q z5vAjguAm1x-u%>b%Tmgac9wiD?Y)nM(4q<<=bB!ho6?q2YP#ikpJ%N1%6m7rbjS>r za!1NB(h#Px=q1J*V0PQQ*?@(>r9xWl0)pMRwiTTV6=0c7llDG&m64$E0VMcUPxCC(GZ+tJ z^iIz8MO(8pbP%NH(^wz{)?PuN!d&X%4OTqe7H}Ie4X_-hVr#E4_fVG%m04p!NOsJR z9JgE_;TptPEulF=OTD%9c1csK;h8bsdaDK?KsRX#I|2IdDND#PW;B}pwx`m<1i}$x z;z4SlXO{bl8shel8B=sQPv9QBF@Tp2J&ox?Z=s?rV|^kH^V%Tq)qZW_D zjQuZtf?W!oC2(?$oCl!FWE7E3Br(G1sKaw|^~XI>f<)fJYj0 zXdF3(2~B&4`|I&M^ISSUc?I^Q5@c{}3whL(L#diW`F)0j6^|S}A#?M(!0PR>C=JUx zejuk9rZ`FLki_9>I9!*OhujeH-(+BBeXpANKZk<#E{=*VEq5#eupqCPvlG5oy_b^P z8U;iaR=9ETlU(adnpVral=$~5n+ar488~4EmP69o(ng!G`JK-1OaR~jAg#s>JxOa`DkOg02zFS5LZ`tf;JVK8R z4w>enmY&uo=@GY*@F~m@-GKC-7y;4_E1a00000 LNkvXXu0mjfr*o#} diff --git a/radio/src/fonts/sqt5_pw/font_08x10.lbm b/radio/src/fonts/sqt5_pw/font_08x10.lbm deleted file mode 100644 index 030669b28..000000000 --- a/radio/src/fonts/sqt5_pw/font_08x10.lbm +++ /dev/null @@ -1,6 +0,0 @@ -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x05,0xfe,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0x00,0x0e,0x00,0x00,0x00,0x0e,0x00,0x0e,0x00,0x00,0x00,0x00,0x00,0x90,0x00,0xfc,0x03,0xfc,0x03,0x90,0x00,0xfc,0x03,0xfc,0x03,0x90,0x00,0x00,0x00,0x38,0x02,0x7c,0x06,0x64,0x04,0xfe,0x0f,0xc4,0x04,0xcc,0x07,0x88,0x03,0x1c,0x02,0x14,0x03,0x9c,0x01,0xc0,0x00,0x60,0x00,0xb0,0x03,0x98,0x02,0x88,0x03,0x80,0x03,0xdc,0x07,0x7e,0x04,0x72,0x04,0xde,0x06,0x8c,0x03,0x80,0x07,0xc0,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0xfc,0x03,0x0e,0x07,0x03,0x0c,0x01,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x08,0x03,0x0c,0x0e,0x07,0xfc,0x03,0xf0,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x50,0x01,0xf0,0x01,0xe0,0x00,0xf0,0x01,0x50,0x01,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0xf8,0x03,0xf8,0x03,0x40,0x00,0x40,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x09,0x80,0x0f,0x80,0x07,0x00,0x00,0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x0e,0x00,0x0e,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x03,0x80,0x01,0xc0,0x00,0x60,0x00,0x30,0x00,0x18,0x00,0x08,0x00, -0xfc,0x03,0xfe,0x07,0x02,0x04,0x02,0x04,0xfe,0x07,0xfc,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x07,0xfe,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x8c,0x07,0xce,0x07,0x62,0x04,0x22,0x04,0x3e,0x04,0x1c,0x04,0x00,0x00,0x00,0x00,0x02,0x04,0x02,0x04,0x22,0x04,0x22,0x04,0xfe,0x07,0xdc,0x03,0x00,0x00,0x00,0x00,0x1e,0x00,0x3e,0x00,0x20,0x00,0x20,0x00,0xfe,0x07,0xfe,0x07,0x00,0x00,0x00,0x00,0x1e,0x03,0x3e,0x07,0x22,0x04,0x22,0x04,0xe2,0x07,0xc2,0x03,0x00,0x00,0x00,0x00,0xfc,0x03,0xfe,0x07,0x22,0x04,0x22,0x04,0xee,0x07,0xcc,0x03,0x00,0x00,0x00,0x00,0x02,0x00,0x02,0x00,0xc2,0x07,0xe2,0x07,0x3e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0xdc,0x03,0xfe,0x07,0x22,0x04,0x22,0x04,0xfe,0x07,0xdc,0x03,0x00,0x00,0x00,0x00,0x3c,0x03,0x7e,0x07,0x42,0x04,0x42,0x04,0xfe,0x07,0xfc,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x9c,0x03,0x9c,0x03,0x9c,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x9c,0x09,0x9c,0x0f,0x88,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0xf0,0x00,0x98,0x01,0x0c,0x03,0x06,0x06,0x02,0x04,0x00,0x00,0x20,0x01,0x20,0x01,0x20,0x01,0x20,0x01,0x20,0x01,0x20,0x01,0x20,0x01,0x20,0x01,0x00,0x00,0x02,0x04,0x06,0x06,0x0c,0x03,0x98,0x01,0xf0,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x0c,0x00,0x0e,0x00,0x82,0x06,0xc2,0x06,0x62,0x00,0x3e,0x00,0x1c,0x00, -0x00,0x00,0x00,0x00,0x0c,0x00,0x1e,0x00,0x12,0x00,0x12,0x00,0x1e,0x00,0x0c,0x00,0xfc,0x07,0xfe,0x07,0x86,0x00,0x86,0x00,0x86,0x00,0x86,0x00,0xfe,0x07,0xfc,0x07,0xfe,0x07,0xfe,0x07,0x22,0x04,0x22,0x04,0x22,0x04,0x3e,0x04,0xfc,0x07,0xc0,0x03,0xfc,0x03,0xfe,0x07,0x02,0x04,0x02,0x04,0x02,0x04,0x02,0x04,0x02,0x04,0x02,0x04,0xfe,0x07,0xfe,0x07,0x02,0x04,0x02,0x04,0x02,0x04,0x06,0x06,0xfe,0x07,0xfc,0x03,0xfe,0x07,0xfe,0x07,0x22,0x04,0x22,0x04,0x22,0x04,0x22,0x04,0x02,0x04,0x02,0x04,0xfe,0x07,0xfe,0x07,0x22,0x00,0x22,0x00,0x22,0x00,0x22,0x00,0x02,0x00,0x02,0x00,0xfc,0x03,0xfe,0x07,0x02,0x04,0x02,0x04,0x42,0x04,0x42,0x04,0xc2,0x07,0xc2,0x03,0xfe,0x07,0xfe,0x07,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0xfe,0x07,0xfe,0x07,0x00,0x00,0x02,0x04,0x02,0x04,0xfe,0x07,0xfe,0x07,0x02,0x04,0x02,0x04,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x07,0x02,0x04,0x02,0x04,0xfe,0x07,0xfe,0x03,0x02,0x00,0xfe,0x07,0xfe,0x07,0x60,0x00,0xf0,0x00,0x98,0x01,0x0c,0x03,0x06,0x06,0x02,0x04,0xfe,0x07,0xfe,0x07,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0xfc,0x07,0xfe,0x07,0x02,0x00,0x7e,0x00,0x7e,0x00,0x02,0x00,0xfe,0x07,0xfc,0x07,0xfe,0x07,0xfe,0x07,0x02,0x00,0x02,0x00,0x02,0x00,0x06,0x00,0xfc,0x07,0xf8,0x07,0xfc,0x03,0xfe,0x07,0x02,0x04,0x02,0x04,0x02,0x04,0x02,0x04,0xfe,0x07,0xfc,0x03, -0xfe,0x07,0xfe,0x07,0x22,0x00,0x22,0x00,0x22,0x00,0x22,0x00,0x3e,0x00,0x1c,0x00,0xfc,0x03,0xfe,0x07,0x02,0x04,0x82,0x04,0x82,0x05,0x02,0x03,0xfe,0x06,0xfc,0x05,0xfe,0x07,0xfe,0x07,0x22,0x00,0x22,0x00,0x22,0x00,0x3e,0x00,0xfc,0x07,0xc0,0x07,0x1c,0x02,0x3e,0x06,0x22,0x04,0x22,0x04,0x22,0x04,0x22,0x04,0xe6,0x07,0xc4,0x03,0x02,0x00,0x02,0x00,0x02,0x00,0xfe,0x07,0xfe,0x07,0x02,0x00,0x02,0x00,0x02,0x00,0xfe,0x03,0xfe,0x07,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0xfe,0x07,0xfe,0x03,0xfe,0x07,0xfe,0x07,0x00,0x06,0x00,0x03,0x80,0x01,0xc0,0x00,0x7e,0x00,0x3e,0x00,0xfe,0x07,0xfe,0x07,0x00,0x06,0xe0,0x03,0xe0,0x03,0x00,0x06,0xfe,0x07,0xfe,0x07,0x06,0x06,0x0e,0x07,0x98,0x01,0xf0,0x00,0xf0,0x00,0x98,0x01,0x0e,0x07,0x06,0x06,0x3e,0x00,0x3e,0x00,0x20,0x00,0xe0,0x07,0xe0,0x07,0x20,0x00,0x3e,0x00,0x3e,0x00,0x02,0x07,0x82,0x07,0xc2,0x04,0x62,0x04,0x32,0x04,0x1a,0x04,0x0e,0x04,0x06,0x04,0x00,0x00,0x00,0x00,0xff,0x0f,0xff,0x0f,0x01,0x08,0x01,0x08,0x01,0x08,0x00,0x00,0x0c,0x00,0x1c,0x00,0x38,0x00,0x70,0x00,0xe0,0x00,0xc0,0x01,0x80,0x03,0x00,0x03,0x00,0x00,0x00,0x00,0x01,0x08,0x01,0x08,0x01,0x08,0xff,0x0f,0xff,0x0f,0x00,0x00,0x00,0x00,0x18,0x00,0x0c,0x00,0x06,0x00,0x06,0x00,0x0c,0x00,0x18,0x00,0x00,0x00,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08, -0x00,0x00,0x00,0x00,0x01,0x00,0x03,0x00,0x06,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x90,0x07,0x90,0x07,0x90,0x04,0x90,0x04,0x90,0x04,0xf0,0x07,0xf0,0x07,0x00,0x00,0xfe,0x07,0xfe,0x07,0x10,0x04,0x10,0x04,0x10,0x04,0xf0,0x07,0xf0,0x07,0x00,0x00,0xf0,0x07,0xf0,0x07,0x10,0x04,0x10,0x04,0x10,0x04,0x10,0x04,0x10,0x04,0x00,0x00,0xf0,0x07,0xf0,0x07,0x10,0x04,0x10,0x04,0x10,0x04,0xfe,0x07,0xfe,0x07,0x00,0x00,0xf0,0x07,0xf0,0x07,0x90,0x04,0x90,0x04,0x90,0x04,0xf0,0x04,0xf0,0x04,0x00,0x00,0x40,0x00,0x40,0x04,0xfe,0x07,0xfe,0x07,0x42,0x04,0x06,0x04,0x06,0x00,0x00,0x00,0xf0,0x09,0xf0,0x09,0x10,0x09,0x10,0x09,0x10,0x09,0xf0,0x0f,0xf0,0x0f,0x00,0x00,0xfe,0x07,0xfe,0x07,0x10,0x00,0x10,0x00,0x10,0x00,0xf0,0x07,0xf0,0x07,0x00,0x00,0x10,0x04,0x10,0x04,0xf6,0x07,0xf6,0x07,0x00,0x04,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x0c,0x00,0x0c,0x00,0x08,0x10,0x08,0xf6,0x0f,0xf6,0x0f,0x00,0x00,0x00,0x00,0xfe,0x07,0xfe,0x07,0xc0,0x00,0xe0,0x01,0x30,0x03,0x18,0x06,0x08,0x04,0x00,0x00,0x00,0x04,0x02,0x04,0xfe,0x07,0xfe,0x07,0x00,0x04,0x00,0x04,0x00,0x00,0x00,0x00,0xf0,0x07,0xf0,0x07,0x10,0x00,0xf0,0x07,0x10,0x00,0xf0,0x07,0xf0,0x07,0x00,0x00,0xf0,0x07,0xf0,0x07,0x10,0x00,0x10,0x00,0x10,0x00,0xf0,0x07,0xe0,0x07,0x00,0x00,0xe0,0x03,0xf0,0x07,0x10,0x04,0x10,0x04,0x10,0x04,0xf0,0x07,0xe0,0x03,0x00,0x00, -0xf0,0x0f,0xf0,0x0f,0x10,0x01,0x10,0x01,0x10,0x01,0xf0,0x01,0xf0,0x01,0x00,0x00,0xf0,0x01,0xf0,0x01,0x10,0x01,0x10,0x01,0x10,0x01,0xf0,0x0f,0xf0,0x0f,0x00,0x00,0xf0,0x07,0xf0,0x07,0x10,0x00,0x10,0x00,0x10,0x00,0x30,0x00,0x30,0x00,0x00,0x00,0xf0,0x04,0xf0,0x04,0x90,0x04,0x90,0x04,0x90,0x04,0x90,0x07,0x90,0x07,0x00,0x00,0x10,0x00,0xfc,0x07,0xfc,0x07,0x10,0x04,0x00,0x04,0x00,0x06,0x00,0x06,0x00,0x00,0xf0,0x07,0xf0,0x07,0x00,0x04,0x00,0x04,0x00,0x04,0xf0,0x07,0xf0,0x07,0x00,0x00,0xf0,0x07,0xf0,0x07,0x00,0x06,0x00,0x03,0x80,0x01,0xf0,0x00,0x70,0x00,0x00,0x00,0xf0,0x07,0xf0,0x07,0x00,0x06,0x80,0x03,0x00,0x06,0xf0,0x07,0xf0,0x07,0x00,0x00,0x10,0x04,0x30,0x06,0xe0,0x03,0xc0,0x01,0xe0,0x03,0x30,0x06,0x10,0x04,0x00,0x00,0xf0,0x09,0xf0,0x09,0x00,0x09,0x00,0x09,0x00,0x09,0xf0,0x0f,0xf0,0x0f,0x00,0x00,0x10,0x04,0x10,0x06,0x10,0x07,0x90,0x05,0xd0,0x04,0x70,0x04,0x30,0x04,0x00,0x00,0x00,0x00,0x60,0x00,0xfe,0x07,0x9f,0x0f,0x01,0x08,0x01,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x07,0xfe,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x08,0x01,0x08,0x9f,0x0f,0xfe,0x07,0x60,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x64,0x02,0x08,0x01,0xf0,0x00,0x60,0x00,0x00,0x00,0x60,0x00,0xf0,0x00,0x08,0x01,0x64,0x02,0x60,0x00,0x60,0x00,0x60,0x00,0x00,0x00, diff --git a/radio/src/fonts/sqt5_pw/font_08x10.png b/radio/src/fonts/sqt5_pw/font_08x10.png deleted file mode 100644 index b6af45c274c18b2006a65ae1403d0d7d999c03f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1390 zcmV-!1(EuRP)9y5|4@1p7%u zK~#9!?OfZI>mUeCvi$#F_B?b=CPx7`H)A@46>2@Rpt)ZlN(u>v1j+^Gd}N%0?;ZTDVV-pX0d^HoU$)2gJZH;xU!>RmTEJl zQagu?&qPK6)LKu5HU^jcK>oMcB8^B?=3DMePG>No8A=(s1J3pLA9`WbpQmRZ`S)Ia zep2sp(bsv)g!yW%&7P1o{o48DR3MugRS^7;ARcbt4C!pvTfzlPaE01>Vd@dUy0F-pBCLv3Zdd`diVtwgkC_+0F*nj^rEa-7hk@t(Rshj?sk?GwX z=laN@xbcVmRdyhD9|(PVF70w+g2WG8#Ktk*_FvEVg2R^wclrQXn?GNV*9gd|jLiq& z0j^pAAxOZ2bIIYU!I}3mAeW;yLGl(R+hz9v`VugK82X;rJZ6|S4XtR2BB+NDdTkOU z(L|`^IEYWWf*+|!r)O)rz_|5a@*xq_&ooqqIj^E2*XoBQ7bP6o! zuRR>*)5yS?3jE5cna=>3ks%i}w?2Ww6GKlT=1c|TK7;^Xt-sO9y#iPO3*t5`X>CAE z#%5>De<1@?fz*vJ7{D!>hg82Sh=snw0_aB$W(l zVISvqneBuZvGT)+cADlL^B4aJIA|KFC4`T|NfqOo|-W58Kb6jijJ|g=9eP zG8`-(7uZD77vkR#19f*6tOp3?eh(8;|cA4n!cN+Wcx# z_;7#|PdHoQ ztv`s|=r0yD2Z~@}%6kv(zt65cP?%9`@7FA_4p8_NIoOqNJd$3!GR=! zFhlr84~T-~$~_Re5Hi?dWndsZTEl{uKqKpws{#wC9mqMa4Jb1K$I+%jef!X&a>}7S z4S7Z5NqR`Q{%l_k4UK&ho0opyV}i2d?(OcotmZ%E76i)dW3$!5d>$`L0Lz9$sc6qk z85m0w@%kS_fAjlAZe;DD?W+vrs~rt;Z5R6#JF5*_wO;3bDB^vzz(WW`@d^M6LqqPc z8DK$kLi<0sljQdIzM$NQw (Re=h_@wChLo@h@iI@{;?;S;FfxWDyfDO${Dhy|(c zopgrnszNI{S~celJR(mkNI92mTSncJYn zmhn!23Nmi&ovi!)HDH7jmgN?Xy*S@IlLwow4wk#mCkjz8bDxtzNisfQ2k`z4A>twr we<5$yGOl$6>Hm)&RoeZawAmbPPKF}>0lexrI`&wwCjbBd07*qoM6N<$f)F>BS^xk5 diff --git a/radio/src/fonts/sqt5_pw/font_10x14.lbm b/radio/src/fonts/sqt5_pw/font_10x14.lbm deleted file mode 100644 index a53a3e8f0..000000000 --- a/radio/src/fonts/sqt5_pw/font_10x14.lbm +++ /dev/null @@ -1,6 +0,0 @@ -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x71,0xfe,0x71,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x7e,0x00,0x00,0x00,0x00,0x00,0x7e,0x00,0x3e,0x00,0x00,0x00,0x00,0x00,0x60,0x06,0x60,0x06,0xfe,0x7f,0xfe,0x7f,0x60,0x06,0x60,0x06,0xfe,0x7f,0xfe,0x7f,0x60,0x06,0x60,0x06,0x60,0x18,0xf0,0x18,0x98,0x19,0x98,0x19,0xfe,0x7f,0xfe,0x7f,0x98,0x19,0x98,0x19,0x18,0x0f,0x18,0x06,0x0c,0x18,0x1e,0x1c,0x1e,0x0e,0x0c,0x07,0x80,0x03,0xc0,0x01,0xe0,0x30,0x70,0x78,0x38,0x78,0x18,0x30,0x78,0x1e,0xfc,0x3f,0x8e,0x71,0xc6,0x63,0xe6,0x67,0x76,0x66,0x3c,0x3c,0x18,0x3c,0x00,0x66,0x00,0x66,0x00,0x00,0x00,0x00,0x66,0x00,0x76,0x00,0x3e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x07,0xf0,0x0f,0x38,0x1c,0x1c,0x38,0x0e,0x70,0x06,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x60,0x0e,0x70,0x1c,0x38,0x38,0x1c,0xf0,0x0f,0xe0,0x07,0x00,0x00,0x00,0x00,0x60,0x06,0x60,0x06,0xc0,0x03,0x80,0x01,0xf8,0x1f,0xf8,0x1f,0x80,0x01,0xc0,0x03,0x60,0x06,0x60,0x06,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xf8,0x1f,0xf8,0x1f,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x66,0x00,0x76,0x00,0x3e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x78,0x00,0x78,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x1c,0x00,0x0e,0x00,0x07,0x80,0x03,0xc0,0x01,0xe0,0x00,0x70,0x00,0x38,0x00,0x18,0x00, -0x00,0x00,0x00,0x00,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x7e,0x0e,0x7f,0x8e,0x7f,0x86,0x63,0x86,0x61,0xfe,0x61,0xfe,0x61,0xfc,0x60,0x00,0x00,0x00,0x00,0x06,0x60,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f,0x00,0x00,0x00,0x00,0xfe,0x00,0xfe,0x01,0xfe,0x01,0x80,0x01,0x80,0x01,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x00,0x00,0x00,0xfe,0x30,0xfe,0x71,0xfe,0x71,0x86,0x61,0x86,0x61,0x86,0x7f,0x86,0x7f,0x06,0x3f,0x00,0x00,0x00,0x00,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x8e,0x7f,0x8e,0x7f,0x0c,0x3f,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x86,0x7f,0xc6,0x7f,0xfe,0x7f,0x7e,0x00,0x3e,0x00,0x00,0x00,0x00,0x00,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f,0x00,0x00,0x00,0x00,0x7c,0x30,0xfe,0x71,0xfe,0x71,0x86,0x61,0x86,0x61,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f,0x00,0x00,0x00,0x00,0x78,0x1e,0x78,0x1e,0x78,0x1e,0x78,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x66,0x78,0x76,0x78,0x3e,0x30,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0xc0,0x03,0xe0,0x07,0x70,0x0e,0x38,0x1c,0x1c,0x38,0x0e,0x70,0x06,0x60,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x06,0x60,0x0e,0x70,0x1c,0x38,0x38,0x1c,0x70,0x0e,0xe0,0x07,0xc0,0x03,0x80,0x01,0x00,0x00,0x00,0x00,0x18,0x00,0x1c,0x00,0x0e,0x00,0x06,0x00,0x06,0x66,0x06,0x67,0x86,0x03,0xce,0x01,0xfc,0x00,0x78,0x00, -0x78,0x00,0xfc,0x00,0xce,0x01,0x86,0x01,0x86,0x01,0xce,0x01,0xfc,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0xfc,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0xfe,0x7f,0xfe,0x7f,0xfc,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0xfe,0x61,0xfe,0x7f,0xfc,0x7f,0x00,0x3f,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x06,0x60,0x0e,0x70,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x06,0x00,0x06,0x00,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x7f,0x86,0x7f,0x80,0x3f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x00,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x78,0x00,0x78,0x00,0x60,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x3f,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0xc0,0x03,0xe0,0x07,0xf0,0x0f,0x78,0x1e,0x3c,0x3c,0x1e,0x78,0x0e,0x70,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0xfc,0x7f,0xfe,0x7f,0xfe,0x7f,0x06,0x00,0xfe,0x01,0xfe,0x01,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0xfc,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x06,0x00,0x06,0x00,0x06,0x00,0x0e,0x00,0xfc,0x7f,0xf8,0x7f,0xf0,0x7f,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f, -0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0xfe,0x01,0xfe,0x01,0xfc,0x00,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x66,0x06,0x6e,0x06,0x1c,0xfe,0x39,0xfe,0x73,0xfc,0x67,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0xfe,0x01,0xfe,0x7f,0xfc,0x7f,0x00,0x7f,0xfc,0x38,0xfe,0x79,0xfe,0x79,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x9e,0x7f,0x9e,0x7f,0x1c,0x3f,0x06,0x00,0x06,0x00,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0xfe,0x3f,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x3f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x70,0x00,0x38,0x00,0x1c,0x00,0x0e,0x00,0x07,0xfe,0x03,0xfe,0x01,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x70,0x00,0x3e,0x00,0x3e,0x00,0x70,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x1e,0x78,0x3e,0x7c,0x7e,0x7e,0xe0,0x07,0xc0,0x03,0xc0,0x03,0xe0,0x07,0x7e,0x7e,0x3e,0x7c,0x1e,0x78,0xfe,0x00,0xfe,0x01,0xfe,0x03,0x00,0x7f,0x00,0x7e,0x00,0x7e,0x00,0x7f,0xfe,0x03,0xfe,0x01,0xfe,0x00,0x06,0x78,0x06,0x7c,0x06,0x7e,0x06,0x67,0x86,0x63,0xc6,0x61,0xe6,0x60,0x7e,0x60,0x3e,0x60,0x1e,0x60,0x00,0x00,0x00,0x00,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x00,0x00,0x00,0x00,0x18,0x00,0x38,0x00,0x70,0x00,0xe0,0x00,0xc0,0x01,0x80,0x03,0x00,0x07,0x00,0x0e,0x00,0x1c,0x00,0x18,0x00,0x00,0x00,0x00,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x00,0x00,0x00,0x00,0x60,0x00,0x70,0x00,0x38,0x00,0x1c,0x00,0x0e,0x00,0x0e,0x00,0x1c,0x00,0x38,0x00,0x70,0x00,0x60,0x00,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60, -0x00,0x00,0x00,0x00,0x06,0x00,0x0e,0x00,0x1c,0x00,0x38,0x00,0x70,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x60,0x7e,0x60,0x7e,0x60,0x7e,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0x67,0xe0,0x67,0xe0,0x67,0x80,0x01,0x80,0x61,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x06,0x60,0x06,0x00,0x1e,0x00,0x1e,0x00,0xe0,0xcf,0xe0,0xcf,0xe0,0xcf,0x60,0xcc,0x60,0xcc,0x60,0xcc,0x60,0xcc,0xe0,0xff,0xe0,0xff,0xe0,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x00,0x00,0x00,0x00,0x60,0x60,0x60,0x60,0xe6,0x7f,0xe6,0x7f,0xe0,0x7f,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0xf0,0x00,0xf0,0x00,0xf0,0x00,0xc0,0x60,0xc0,0x60,0xc0,0xe6,0xff,0xe6,0xff,0xe0,0x7f,0x00,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x0f,0x80,0x1f,0xc0,0x39,0xe0,0x70,0x70,0x60,0x30,0x60,0x00,0x00,0x00,0x00,0x00,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0x00,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x00,0xe0,0x07,0xe0,0x07,0xe0,0x00,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0xe0,0x7f,0xe0,0x7f,0xc0,0x7f,0xc0,0x3f,0xe0,0x7f,0xe0,0x7f,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xe0,0x7f,0xe0,0x7f,0xc0,0x3f, -0xe0,0xff,0xe0,0xff,0xe0,0xff,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0xe0,0x07,0xe0,0x07,0xe0,0x07,0xe0,0x07,0xe0,0x07,0xe0,0x07,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0xe0,0xff,0xe0,0xff,0xe0,0xff,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xc0,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0xe0,0x01,0xe0,0x01,0xe0,0x01,0xe0,0x67,0xe0,0x67,0xe0,0x67,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x7e,0x60,0x7e,0x60,0x7e,0x60,0x00,0x60,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x60,0x60,0x00,0x60,0x00,0x78,0x00,0x78,0x00,0x78,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x00,0x70,0x00,0x38,0x00,0x1c,0x00,0x0e,0x00,0x07,0xe0,0x03,0xe0,0x01,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x00,0x70,0x00,0x3c,0x00,0x3c,0x00,0x70,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x60,0xe0,0x70,0xe0,0x79,0xc0,0x3f,0x80,0x1f,0x80,0x1f,0xc0,0x3f,0xe0,0x79,0xe0,0x70,0x60,0x60,0xe0,0xcf,0xe0,0xcf,0xe0,0xcf,0x00,0xcc,0x00,0xcc,0x00,0xcc,0x00,0xcc,0xe0,0xff,0xe0,0xff,0xe0,0x7f,0x60,0x60,0x60,0x70,0x60,0x78,0x60,0x7c,0x60,0x7e,0x60,0x6f,0xe0,0x67,0xe0,0x63,0xe0,0x61,0xe0,0x60,0x00,0x00,0x00,0x00,0x80,0x01,0xc0,0x03,0x78,0x1e,0x7c,0x3e,0x0e,0x70,0x06,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x7f,0xfe,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x60,0x0e,0x70,0x7c,0x3e,0x78,0x1e,0xc0,0x03,0x80,0x01,0x00,0x00,0x00,0x00,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x18,0x18,0x38,0x1c,0xf0,0x0f,0xe0,0x07,0xc0,0x03,0x80,0x01,0x80,0x01,0xc0,0x03,0xe0,0x07,0xf0,0x0f,0x38,0x1c,0x18,0x18,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01, diff --git a/radio/src/fonts/sqt5_pw/font_10x14.png b/radio/src/fonts/sqt5_pw/font_10x14.png deleted file mode 100644 index e7b202905d412f91ece0512041b0ff7b13c273b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1809 zcmV+s2k!WZP)003YJ0ssI26-DmO00006VoOIv0RI60 z0RN!9r;`8x010qNS#tmY3ljhU3ljkVnw%H_000McNliru-3K2OItb`J4%K ze|-;sm6@5k`EkQ&JD({2F}L9_5?xwTfW;g?WYsiyu_c1Qg)F)??y9yDcxC>4``M8!{#!F|d z9h>{Tsgm#F#q){hAAgmSV-bd!fxG8NOxfgNQ9l(JFsyKQdTXp$of@AP43QM+-x%6urK#bTaUj5(^jKQ+ER)IDD{` z%((oh3A1SS0f@17R#3hz<6?NM7pME}PB#${d(D%@%U{>LxhzzRWKbR}k#-PWjo3H* zRP*X!-nUgNLLJG}ER16bNC8ytxB0R5$eRRfkJ5F}Nc~C(gsHDK4POe6Fq3zK1jw^E zHGHiM`#tr7GlC=)un>&oxWiGGHCtwmL)6mH_3xjh$#&h3X+BFCZH}nK@?PYqV4@2O z6Ip?%`S>(*rlyp9qDg8H>kCb1SO#dOOYJ3G^*sK3Iiurmj+(oO-=31=MeJZ-f)2CS zeHVl0nfPaP7_--KP$mu0fT1A^ht~%2WAekCP zr~l(y??oPz%CQ=I7e|oN^d-f4B_q}hV(bC_Dczj46D@<_C`b<}ZsQHj*JpM#B3#(9 zf7l&T7mK0^{`s;tUi1}Ptywcc(U}P=UC(9&Kn`~C ztTE!MR76T}gRJjySA(Lx$_4hAio3^glxFNx1R6uPg(%ZXwCurUIB!aDM7i8P3Ffkc zMOg~EsBMH0;L9Gl=KHjkyc|y*yhqTceElTb43X>JxeMoZGDo{X}ZajGVxr{IhCt&g2?|AM3RpdYO4iHs0DI|}lKn?E^ zIo>+>8@B#k3`7}GdAtz3Tc%x8$C3de%7Rw&xPHqH_@lHQ!(BU%4{gw|xTrm;H)@7{ z4=x?24|(!BSj}K`us{-QVFUjIUhi0AJiy0P>AQ@Av-84%wH1r^VvmcwHboQZ+x*y$ z-4qvlLkOK5>qgd*aw-R>l;T}PilhvCxwWI^IIGu$Nc@1}PYZXYwDxW0GKR-_&VA>? z-T6~R2ONY&K}u<5N_0$jyuJ_>3t7BZb`oU;?d-*`mQF+>b8v>(9|A_wd*HnWdRLGpt_l`$Ad0HEH5fJ-E zpD)r5roNaPYUwH_1gq}Vwk*)tG-3|6i#${4ph-^KP5IXc#sq`y3hVn2=~ z+;>5rI$Oi{Cod?$MvKL+Tt{Z)xH0&x3Sj=LDEE6DNoo8n@li$1nJ=itEqhrB9-u+M zG=wp_tkZmTJJ#|NS%Oy@Mx-QfPu6r$z*lo`22XS{Araed zbm4JzGkCN`?(zu!jq>7Evt{qY->ne&M30VPMiD|WHwpft*Eg>2A^KZjq8j$%wWGnl zuCJr$`(aZ{yfl-9>ZD=$IhWh3nOB4K+`IoXdr|E}sMYH;Z&P)4@7uv%JtLU|ByLZ1 zKYYZ421oAxX12&NQ~$__J4M?SP&9MStCJejZAfL;x42Za1M1Zl#j-4@(!IB=PK)b$ zPR(#KQ@@u&*JV}NJ=i2Y%1-NUN)dMz@nDPaw7VC(NU%a!9ltKDYv$ZsgC$vjT87jY z?RzkMJ|2veSMw;3F`Qm;{y4)=iv;gj^8Di;!rZC6(Gtov00000NkvXXu0mjf;`?sI diff --git a/radio/src/fonts/sqt5_pw/font_10x14_compressed.lbm b/radio/src/fonts/sqt5_pw/font_10x14_compressed.lbm deleted file mode 100644 index 4cb8fa302..000000000 --- a/radio/src/fonts/sqt5_pw/font_10x14_compressed.lbm +++ /dev/null @@ -1 +0,0 @@ -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x66,0x00,0x76,0x00,0x3e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x78,0x00,0x78,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0x00,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x7e,0x0e,0x7f,0x8e,0x7f,0x86,0x63,0x86,0x61,0xfe,0x61,0xfe,0x61,0xfc,0x60,0x00,0x00,0x00,0x00,0x06,0x60,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f,0x00,0x00,0x00,0x00,0xfe,0x00,0xfe,0x01,0xfe,0x01,0x80,0x01,0x80,0x01,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x00,0x00,0x00,0xfe,0x30,0xfe,0x71,0xfe,0x71,0x86,0x61,0x86,0x61,0x86,0x7f,0x86,0x7f,0x06,0x3f,0x00,0x00,0x00,0x00,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x8e,0x7f,0x8e,0x7f,0x0c,0x3f,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x86,0x7f,0xc6,0x7f,0xfe,0x7f,0x7e,0x00,0x3e,0x00,0x00,0x00,0x00,0x00,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f,0x00,0x00,0x00,0x00,0x7c,0x30,0xfe,0x71,0xfe,0x71,0x86,0x61,0x86,0x61,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f,0x00,0x00,0x00,0x00,0x78,0x1e,0x78,0x1e,0x78,0x1e,0x78,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0xfe,0x7f,0xfe,0x7f,0xfc,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0xfe,0x61,0xfe,0x7f,0xfc,0x7f,0x00,0x3f,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x06,0x60,0x0e,0x70,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x06,0x00,0x06,0x00,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x7f,0x86,0x7f,0x80,0x3f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x00,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x78,0x00,0x78,0x00,0x60,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x3f,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0xc0,0x03,0xe0,0x07,0xf0,0x0f,0x78,0x1e,0x3c,0x3c,0x1e,0x78,0x0e,0x70,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0xfc,0x7f,0xfe,0x7f,0xfe,0x7f,0x06,0x00,0xfe,0x01,0xfe,0x01,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0xfc,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x06,0x00,0x06,0x00,0x06,0x00,0x0e,0x00,0xfc,0x7f,0xf8,0x7f,0xf0,0x7f,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0xfe,0x01,0xfe,0x01,0xfc,0x00,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x66,0x06,0x6e,0x06,0x1c,0xfe,0x39,0xfe,0x73,0xfc,0x67,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0xfe,0x01,0xfe,0x7f,0xfc,0x7f,0x00,0x7f,0xfc,0x38,0xfe,0x79,0xfe,0x79,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x9e,0x7f,0x9e,0x7f,0x1c,0x3f,0x06,0x00,0x06,0x00,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0xfe,0x3f,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x3f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x70,0x00,0x38,0x00,0x1c,0x00,0x0e,0x00,0x07,0xfe,0x03,0xfe,0x01,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x70,0x00,0x3e,0x00,0x3e,0x00,0x70,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x1e,0x78,0x3e,0x7c,0x7e,0x7e,0xe0,0x07,0xc0,0x03,0xc0,0x03,0xe0,0x07,0x7e,0x7e,0x3e,0x7c,0x1e,0x78,0xfe,0x00,0xfe,0x01,0xfe,0x03,0x00,0x7f,0x00,0x7e,0x00,0x7e,0x00,0x7f,0xfe,0x03,0xfe,0x01,0xfe,0x00,0x06,0x78,0x06,0x7c,0x06,0x7e,0x06,0x67,0x86,0x63,0xc6,0x61,0xe6,0x60,0x7e,0x60,0x3e,0x60,0x1e,0x60,0x60,0x7e,0x60,0x7e,0x60,0x7e,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0x67,0xe0,0x67,0xe0,0x67,0x80,0x01,0x80,0x61,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x06,0x60,0x06,0x00,0x1e,0x00,0x1e,0x00,0xe0,0xcf,0xe0,0xcf,0xe0,0xcf,0x60,0xcc,0x60,0xcc,0x60,0xcc,0x60,0xcc,0xe0,0xff,0xe0,0xff,0xe0,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x00,0x00,0x00,0x00,0x60,0x60,0x60,0x60,0xe6,0x7f,0xe6,0x7f,0xe0,0x7f,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0xf0,0x00,0xf0,0x00,0xf0,0x00,0xc0,0x60,0xc0,0x60,0xc0,0xe6,0xff,0xe6,0xff,0xe0,0x7f,0x00,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x0f,0x80,0x1f,0xc0,0x39,0xe0,0x70,0x70,0x60,0x30,0x60,0x00,0x00,0x00,0x00,0x00,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0x00,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x00,0xe0,0x07,0xe0,0x07,0xe0,0x00,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0xe0,0x7f,0xe0,0x7f,0xc0,0x7f,0xc0,0x3f,0xe0,0x7f,0xe0,0x7f,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xe0,0x7f,0xe0,0x7f,0xc0,0x3f,0xe0,0xff,0xe0,0xff,0xe0,0xff,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0xe0,0x07,0xe0,0x07,0xe0,0x07,0xe0,0x07,0xe0,0x07,0xe0,0x07,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0xe0,0xff,0xe0,0xff,0xe0,0xff,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xc0,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0xe0,0x01,0xe0,0x01,0xe0,0x01,0xe0,0x67,0xe0,0x67,0xe0,0x67,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x7e,0x60,0x7e,0x60,0x7e,0x60,0x00,0x60,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x60,0x60,0x00,0x60,0x00,0x78,0x00,0x78,0x00,0x78,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x00,0x70,0x00,0x38,0x00,0x1c,0x00,0x0e,0x00,0x07,0xe0,0x03,0xe0,0x01,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x00,0x70,0x00,0x3c,0x00,0x3c,0x00,0x70,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x60,0xe0,0x70,0xe0,0x79,0xc0,0x3f,0x80,0x1f,0x80,0x1f,0xc0,0x3f,0xe0,0x79,0xe0,0x70,0x60,0x60,0xe0,0xcf,0xe0,0xcf,0xe0,0xcf,0x00,0xcc,0x00,0xcc,0x00,0xcc,0x00,0xcc,0xe0,0xff,0xe0,0xff,0xe0,0x7f,0x60,0x60,0x60,0x70,0x60,0x78,0x60,0x7c,0x60,0x7e,0x60,0x6f,0xe0,0x67,0xe0,0x63,0xe0,0x61,0xe0,0x60, diff --git a/radio/src/fonts/sqt5_pw/font_10x14_compressed.png b/radio/src/fonts/sqt5_pw/font_10x14_compressed.png deleted file mode 100644 index a8ff6a6f315b3b3f330036750d04ce46e23191a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1157 zcmV;01bX|4P)e zSad^gZEa<4bO1wgWnpw>WFU8GbZ8()Nlj2!fese{00ZqwL_t(|+U;H2j_n`_J)QLb zf4S#rlE(4EWua)-O6FxpQ4tUjJJ<6(&p(172!bF8f=Gh<#6?}#RsFr^i@*Dn?IiSC zZF=o~e;@s39a}m-3q32JHT(6ZhnT+>l5rzwmTh``AJJ>=g=Af|zO{a%{r2v!RPMC< zrqMN|{8{D7qkocpL+d?ajTUl<*Ae>`DGMugD{_COa%a)Y74o;U3=jlC%))*0;-nc81U+fi!ZYsd z`DwGcwRW0_Ix=%Dja1R}W<%?wC0?MJ8P6I zy?V90IL&GhJhi=^*Yp_-;LZ*Nntxt7-8GXs!#TCsBgEH55Sgjb!ClLUA=c5eH`V#MwX}03!!vm7GRj zZ;l)^%{3*lhkZrtn=~-_njOh%4>Z9QVqVYl=rgFESJ@{xJ+mTUZ3JhDn!QoAWPU68 zx5^M{bDmqJd%3(kdCps&&+M|>8wDx*klWEBGfCTBB_V^PupX>qBSI;Y? z4ak0@;+4NFrFtm4WT~yz&@1WOvo=aX>-58Kg+P6Een-Yeq`sbHL6AG zMf87}$`DMn>a#L@^U*>ts{@f;e^GW%TkjjqW5oD1y^#DT!A!owE;dT@MTKa4&~hfN z2}Y>{{NoW+bOagw2xFDOM!)u#@@%JZQG7;@9kC7x%@yOWn%8Rn&D0Z_d99WHBar zySp%Su*!M>Ih+L^k;M!Q+`=Ht$S`Y;1W=H@#M9T6{VuzdsIv0Q%PWn5LgAh+jv*Y^ zlYc}>$8Y<3`u^{S;r0dv7ANO=p4pjuar=bkhhNvuj=rAmem8de_NK<)6W&~Fzv)+g z{q3}b6Z^iGzrO!Q>*lvlTnnl?H}hN0$;QIhQAT|o{Dm)X^44G8NgU(X#lNV=@dzJPo(avD-?o#yw(zRW)gf3g?iM{v@T@5%cB0000< KMNUMnLSTZymTH&) diff --git a/radio/src/fonts/sqt5_pw/font_cz_08x10.lbm b/radio/src/fonts/sqt5_pw/font_cz_08x10.lbm deleted file mode 100644 index 4b28f3ded..000000000 --- a/radio/src/fonts/sqt5_pw/font_cz_08x10.lbm +++ /dev/null @@ -1 +0,0 @@ -0x90,0x07,0x90,0x07,0x90,0x04,0x94,0x04,0x93,0x04,0xf1,0x07,0xf0,0x07,0x00,0x00,0xf0,0x07,0xf1,0x07,0x13,0x04,0x16,0x04,0x13,0x04,0x11,0x04,0x10,0x04,0x00,0x00,0xf0,0x07,0xf0,0x07,0x90,0x04,0x94,0x04,0x93,0x04,0xf1,0x04,0xf0,0x04,0x00,0x00,0xf0,0x07,0xf1,0x07,0x93,0x04,0x96,0x04,0x93,0x04,0xf1,0x04,0xf0,0x04,0x00,0x00,0x10,0x04,0x10,0x04,0xf4,0x07,0xf3,0x07,0x01,0x04,0x00,0x04,0x00,0x00,0x00,0x00,0xe0,0x03,0xf0,0x07,0x10,0x04,0x14,0x04,0x13,0x04,0xf1,0x07,0xe0,0x03,0x00,0x00,0xf1,0x07,0xf3,0x07,0x16,0x00,0x13,0x00,0x11,0x00,0x30,0x00,0x30,0x00,0x00,0x00,0xf0,0x04,0xf1,0x04,0x93,0x04,0x96,0x04,0x93,0x04,0x91,0x07,0x90,0x07,0x00,0x00,0xf0,0x07,0xf0,0x07,0x00,0x04,0x04,0x04,0x03,0x04,0xf1,0x07,0xf0,0x07,0x00,0x00,0xf0,0x07,0xf0,0x07,0x02,0x04,0x05,0x04,0x05,0x04,0xf2,0x07,0xf0,0x07,0x00,0x00,0xf0,0x09,0xf0,0x09,0x00,0x09,0x04,0x09,0x03,0x09,0xf1,0x0f,0xf0,0x0f,0x00,0x00,0xf0,0x07,0xf8,0x07,0x98,0x00,0x9c,0x00,0x9b,0x00,0x99,0x00,0xf8,0x07,0xf0,0x07,0x00,0x00,0x08,0x04,0x08,0x04,0xfc,0x07,0xfb,0x07,0x09,0x04,0x08,0x04,0x00,0x00,0xf8,0x07,0xf9,0x07,0x8b,0x00,0x8e,0x00,0x8b,0x00,0xf9,0x00,0xf0,0x07,0x00,0x07,0xf8,0x00,0xf8,0x00,0x80,0x00,0x84,0x07,0x83,0x07,0x81,0x00,0xf8,0x00,0xf8,0x00,0x08,0x06,0x09,0x07,0x8b,0x05,0xce,0x04,0x6b,0x04,0x39,0x04,0x18,0x04,0x00,0x00,0xf8,0x07,0xf8,0x07,0x48,0x04,0x4c,0x04,0x4b,0x04,0x49,0x04,0x08,0x04,0x08,0x04, diff --git a/radio/src/fonts/sqt5_pw/font_cz_08x10.png b/radio/src/fonts/sqt5_pw/font_cz_08x10.png deleted file mode 100644 index 056e38735fa6341f7633000a5f28b05d6f62f99f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 265 zcmeAS@N?(olHy`uVBq!ia0vp^9YD;($P6T#L(}gADYgKg5LY1m|NsA`H|O64vKW)R z-CYvL>4nJa0`PlBg3pY5H=O_PgxzqKtwYGyE0+g&ugiIEF}E zjy-SKcgR41^@9J?G}S42+*4v2_cGiovR>zKTy)c=tXwTCjTI}3rrtc2x-LOeT)`{3 zTQIT5$?Q;T`ZLdepBnaSm#0n6KmR8=h9mHp!-EyCg}<-<+PQvLpJDGrf##LpK7NaS z^Efm-cKWft3x(@nKQvlBb1DCS)&=wB+LoTtH=JWXpK<4{pPLFJg}J0Gu1<`8I6JHM zrq%1SC(hcxS9_z-f0b3>nLCG6Rrzu8Z31<(#f2uVp4M9+FXVkf@w$GE&&~GM%DM@5 u={l+JytV(_VcT-@$Hg9-yMGt8wY?J!*;nH-^@%CauMD29elF{r5}E)^H;)ql diff --git a/radio/src/fonts/sqt5_pw/font_de_04x06.lbm b/radio/src/fonts/sqt5_pw/font_de_04x06.lbm deleted file mode 100644 index 962a76588..000000000 --- a/radio/src/fonts/sqt5_pw/font_de_04x06.lbm +++ /dev/null @@ -1 +0,0 @@ -0x3d,0x0a,0x0a,0x3d,0x00,0x3a,0x2b,0x2a,0x3f,0x00,0x1d,0x22,0x22,0x1d,0x00,0x18,0x25,0x24,0x19,0x00,0x3d,0x20,0x20,0x3d,0x00,0x3d,0x20,0x20,0x3d,0x00,0x7e,0x05,0x25,0x1a,0x00, diff --git a/radio/src/fonts/sqt5_pw/font_de_04x06.png b/radio/src/fonts/sqt5_pw/font_de_04x06.png deleted file mode 100644 index 644bed0b60d7617f155e61dae7f068963567b80f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 176 zcmeAS@N?(olHy`uVBq!ia0vp^%0SG{$P6TRXr);JDYgKg5LY1m|NsA`H|O64vKW)R z-CYbP0l+XkKRD&{8 diff --git a/radio/src/fonts/sqt5_pw/font_de_05x07.lbm b/radio/src/fonts/sqt5_pw/font_de_05x07.lbm deleted file mode 100644 index 363e4f48e..000000000 --- a/radio/src/fonts/sqt5_pw/font_de_05x07.lbm +++ /dev/null @@ -1 +0,0 @@ -0x7c,0x13,0x12,0x13,0x7c,0x74,0x55,0x54,0x55,0x7c,0x3c,0x43,0x42,0x43,0x3c,0x38,0x45,0x44,0x45,0x38,0x3e,0x41,0x40,0x41,0x3e,0x7c,0x41,0x40,0x41,0x7c,0x7e,0x01,0x49,0x56,0x20, diff --git a/radio/src/fonts/sqt5_pw/font_de_05x07.png b/radio/src/fonts/sqt5_pw/font_de_05x07.png deleted file mode 100644 index 6e6c1a0cfda134128f8a7a50b9b46e915b55827e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 181 zcmeAS@N?(olHy`uVBq!ia0vp^%0SG)$P6SsYp%QpQfvV}A+A9B|Ns9>Z_d99WHBar zySp%Su*!M>Ih+L^k;M!Q+`=Ht$S`Y;1W=H@#M9T6{Vs>Jh_F#Qx9SFm{7@=BF=o1U4muVhivIaRt)<|NmclbN*c*i!sUD z-G!lpRn`N@;VkfoEM{Qf76xHPhFNnYfP(BLp1!W^cR8d*40+4$`>h2EIe5A_hHzZ> z?KsGJz<`JOe6r}4IVU;lDzEGlS-v!Yvt&-j_S4H&uhx>B>13tL?c_cEg6;3ef1E4c h{E=4Z_d99WHBar zySp%Su*!M>Ih+L^k;M!Q+`=Ht$S`Y;1W=H@#M9T6{Vs>Js32F(->I{KLWQ0#jv*Y^ zlYj8D)=NBFdcG#iQopv3_wfJcpZ|yctG9D*Te$Ea`|oqc+JVo93VDV^*G-|Tc&izuSN}w#wTp}%#N|K fKeOj42xnx_TWw$1wSVV5pydpnu6{1-oD!M2j(YymzYu0Z<#|Nl#G&c6#}F(!Gt zyD)UH%6b4foCO|{#X!ZvAk4@xYmNj^kiEpy*OmP)hqMTr?%i$Y0)ax(o-U3d9M_X0 sULPoU&CvXZv8{)h=O&-Rm;Ve5{#xuyL^5u%0hKX$y85}Sb4q9e0PgN4g8%>k diff --git a/radio/src/fonts/sqt5_pw/font_es_05x07.lbm b/radio/src/fonts/sqt5_pw/font_es_05x07.lbm deleted file mode 100644 index ade3235f7..000000000 --- a/radio/src/fonts/sqt5_pw/font_es_05x07.lbm +++ /dev/null @@ -1 +0,0 @@ -0x7c,0x06,0x05,0x06,0x79,0x78,0x0a,0x09,0x0a,0x71, diff --git a/radio/src/fonts/sqt5_pw/font_es_05x07.png b/radio/src/fonts/sqt5_pw/font_es_05x07.png deleted file mode 100644 index d23e8b850db15490e978904993dea309d8f1cb06..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 155 zcmeAS@N?(olHy`uVBq!ia0vp^AT|dhGm!jc^5-j%VhivIaRt)<|NmclbN*c*i!sUD z-G!lpRn`N@;VkfoEM{Qf76xHPhFNnYfP(BLp1!W^cR8d*L`5FQu%8ABNqf3DhHzX@ t-f``~hHH(D{~4ScnVk!nMgH0|FvR`lh~84|xe2I@!PC{xWt~$(69E5@DJ=j1 diff --git a/radio/src/fonts/sqt5_pw/font_es_08x10.lbm b/radio/src/fonts/sqt5_pw/font_es_08x10.lbm deleted file mode 100644 index 80e23388e..000000000 --- a/radio/src/fonts/sqt5_pw/font_es_08x10.lbm +++ /dev/null @@ -1 +0,0 @@ -0xf8,0x07,0xfa,0x07,0x0b,0x00,0x09,0x00,0x0b,0x00,0x1a,0x00,0xf3,0x07,0xe1,0x07,0xf0,0x07,0xf4,0x07,0x16,0x00,0x12,0x00,0x16,0x00,0x34,0x00,0xe6,0x07,0xc2,0x07, diff --git a/radio/src/fonts/sqt5_pw/font_es_08x10.png b/radio/src/fonts/sqt5_pw/font_es_08x10.png deleted file mode 100644 index 6f520ee2ab108951a97a58530bf1f74c8113e309..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 161 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~e$P6R{HP;^kQfvV}A+A9B|Ns9>Z_d99WHBar zySp%Su*!M>Ih+L^k;M!Q+`=Ht$S`Y;1W=H@#M9T6{Vs>Jh_Q+EnCCEcpMQ@me$2rrkxRtAUCcJYD@<);T3K0RXC= BEk^(V diff --git a/radio/src/fonts/sqt5_pw/font_es_10x14.lbm b/radio/src/fonts/sqt5_pw/font_es_10x14.lbm deleted file mode 100644 index 19065f688..000000000 --- a/radio/src/fonts/sqt5_pw/font_es_10x14.lbm +++ /dev/null @@ -1 +0,0 @@ -0xf4,0x7f,0xf6,0x7f,0xf3,0x7f,0x31,0x00,0x32,0x00,0x34,0x00,0x76,0x00,0xe3,0x7f,0xc1,0x7f,0x80,0x7f,0xe0,0x7f,0xe8,0x7f,0xec,0x7f,0x66,0x00,0x62,0x00,0x64,0x00,0x68,0x00,0xec,0x7f,0xe6,0x7f,0xc2,0x7f, diff --git a/radio/src/fonts/sqt5_pw/font_es_10x14.png b/radio/src/fonts/sqt5_pw/font_es_10x14.png deleted file mode 100644 index d66da44606b51bef5b2384ce86eda359b21c5623..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 174 zcmeAS@N?(olHy`uVBq!ia0vp^B0wy_$P6TPuAPklQfvV}A+A9B|Ns9>Z_d99WHBar zySp%Su*!M>Ih+L^k;M!Q+`=Ht$S`Y;1W=H@#M9T6{Vs>JsED3zXDdHYNYB&7F@)oK zvPJm+#>7+SnR%woS2OripLgKEkN?cfhZz~!B-z>6EWfes`SJfhKf{SS;l35B*Ls0E O89ZJ6T-G@yGywqF&M-j$ diff --git a/radio/src/fonts/sqt5_pw/font_fr_04x06.lbm b/radio/src/fonts/sqt5_pw/font_fr_04x06.lbm deleted file mode 100644 index 0009fbcec..000000000 --- a/radio/src/fonts/sqt5_pw/font_fr_04x06.lbm +++ /dev/null @@ -1 +0,0 @@ -0x3e,0x2a,0x2b,0x2e,0x00,0x3e,0x2b,0x2a,0x2e,0x00,0x3a,0x2b,0x2a,0x3e,0x00,0x00,0x26,0x3d,0x22,0x00,0x1e,0x52,0x32,0x12,0x00, diff --git a/radio/src/fonts/sqt5_pw/font_fr_04x06.png b/radio/src/fonts/sqt5_pw/font_fr_04x06.png deleted file mode 100644 index 3b5db5110cd19e96fc549a70b482259b925efec4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3570 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 s7^sJ-h+Xi$Jy9hAjZ_d99WHBar zySp%Su*!M>Ih+L^k;M!Q+`=Ht$S`Y;1W=H@#M9T6{Vs>Jh=kVk$tk)(Aw5qQ#}JO| z$rZor>X{GkegBb{ho?tgLZa*YtmcT@(h{rQ=Or*~N|BcM_y0f85cK~%V Nc)I$ztaD0e0s!LrF*yJL diff --git a/radio/src/fonts/sqt5_pw/font_fr_08x10.lbm b/radio/src/fonts/sqt5_pw/font_fr_08x10.lbm deleted file mode 100644 index 62285c702..000000000 --- a/radio/src/fonts/sqt5_pw/font_fr_08x10.lbm +++ /dev/null @@ -1 +0,0 @@ -0xf0,0x07,0xf0,0x07,0x94,0x04,0x96,0x04,0x93,0x04,0xf1,0x04,0xf0,0x04,0x00,0x00,0xf0,0x07,0xf0,0x07,0x91,0x04,0x93,0x04,0x96,0x04,0xf4,0x04,0xf0,0x04,0x00,0x00,0x90,0x07,0x90,0x07,0x91,0x04,0x93,0x04,0x96,0x04,0xf4,0x07,0xf0,0x07,0x00,0x00,0x14,0x04,0x16,0x04,0xf3,0x07,0xf6,0x07,0x04,0x04,0x00,0x04,0x00,0x00,0xf0,0x03,0xf0,0x03,0x10,0x0a,0x10,0x0e,0x10,0x06,0x10,0x02,0x10,0x02,0x00,0x00,0x00,0x00, diff --git a/radio/src/fonts/sqt5_pw/font_fr_08x10.png b/radio/src/fonts/sqt5_pw/font_fr_08x10.png deleted file mode 100644 index 59ed95c85a539d76738a13cad90da8b167f70ad2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3597 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 diff --git a/radio/src/fonts/sqt5_pw/font_it_04x06.lbm b/radio/src/fonts/sqt5_pw/font_it_04x06.lbm deleted file mode 100644 index 5557a1b10..000000000 --- a/radio/src/fonts/sqt5_pw/font_it_04x06.lbm +++ /dev/null @@ -1 +0,0 @@ -0x3a,0x2b,0x2a,0x3e,0x00,0x3c,0x21,0x22,0x3c,0x00, diff --git a/radio/src/fonts/sqt5_pw/font_it_04x06.png b/radio/src/fonts/sqt5_pw/font_it_04x06.png deleted file mode 100644 index f1fd4826563540d182019561deec17971860d2b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 157 zcmeAS@N?(olHy`uVBq!ia0vp^AT~QAGmzv?@>2j(YymzYu0Z<#|Nl#G&c6#}F(!Gt zyD)UH%6b4foCO|{#X!ZvAk4@xYmNj^kiEpy*OmP)hqMT{Zid7L8K97?r;B3<$MxhJ t)eVjB84hQ&v*oe3<*>8yvA6waXK<5XD_MN-nH^9egQu&X%Q~loCIG@6B%S~O diff --git a/radio/src/fonts/sqt5_pw/font_it_05x07.lbm b/radio/src/fonts/sqt5_pw/font_it_05x07.lbm deleted file mode 100644 index 7e4ed004e..000000000 --- a/radio/src/fonts/sqt5_pw/font_it_05x07.lbm +++ /dev/null @@ -1 +0,0 @@ -0x74,0x55,0x56,0x54,0x7c,0x7c,0x41,0x42,0x40,0x7c, diff --git a/radio/src/fonts/sqt5_pw/font_it_05x07.png b/radio/src/fonts/sqt5_pw/font_it_05x07.png deleted file mode 100644 index ebdd099527389868375e87da19ebacb55dfa4226..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 157 zcmeAS@N?(olHy`uVBq!ia0vp^AT|dhGm!jc^5-j%VhivIaRt)<|NmclbN*c*i!sUD z-G!lpRn`N@;VkfoEM{Qf76xHPhFNnYfP(BLp1!W^cR8d*q!{Yt&Q}73WIbIRLpZJ{ u->7bQc#o0o8C%Z_d99WHBar zySp%Su*!M>Ih+L^k;M!Q+`=Ht$S`Y;1W=H@#M9T6{Vs>Jh=q7mJZ_d99WHBar zySp%Su*!M>Ih+L^k;M!Q+`=Ht$S`Y;1W=H@#M9T6{Vs>JsI>awvx+G|A#G0=#}JO| z$v^)8XFmLSzPyCp|DOjwe2!;i?l^zo9>cN!3nY$BZ%&e6SjEb)(NR3GID8W$P#c4% LtDnm{r-UW|5o|I4 diff --git a/radio/src/fonts/sqt5_pw/font_pl_04x06.lbm b/radio/src/fonts/sqt5_pw/font_pl_04x06.lbm deleted file mode 100644 index d885a4da3..000000000 --- a/radio/src/fonts/sqt5_pw/font_pl_04x06.lbm +++ /dev/null @@ -1 +0,0 @@ -0x3a,0x2a,0x2a,0x7e,0x40,0x3e,0x22,0x22,0x22,0x01,0x3e,0x2a,0x2a,0x6e,0x40,0x00,0x29,0x3f,0x24,0x00,0x3e,0x02,0x03,0x3d,0x00,0x1c,0x22,0x23,0x1d,0x00,0x2e,0x2a,0x2a,0x3b,0x00,0x24,0x35,0x2d,0x24,0x00,0x24,0x34,0x2e,0x25,0x00,0x3e,0x09,0x69,0x5e,0x00,0x1c,0x22,0x22,0x23,0x00,0x3f,0x25,0x65,0x41,0x00,0x3f,0x28,0x24,0x24,0x00,0x3e,0x02,0x03,0x3d,0x00,0x1c,0x22,0x22,0x1d,0x00,0x2e,0x2a,0x2b,0x3a,0x00,0x22,0x33,0x2a,0x26,0x00,0x22,0x32,0x2b,0x26,0x00, diff --git a/radio/src/fonts/sqt5_pw/font_pl_04x06.png b/radio/src/fonts/sqt5_pw/font_pl_04x06.png deleted file mode 100644 index e25681d8c2906c6c13237cc7abd9ef898a6572a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 175 zcmeAS@N?(olHy`uVBq!ia0vp^Q9#Vj$P6Smm7T}{QfvV}A+A9B|Ns9>Z_d99WTkkz zIEHXsPyVt0{@R>qK@QnKO^{ tc+PMNg>@+e&-?#}pXJ;0#v}K68M^n`UT$12JOk(k22WQ%mvv4FO#m#xROJ8w diff --git a/radio/src/fonts/sqt5_pw/font_pl_08x10.lbm b/radio/src/fonts/sqt5_pw/font_pl_08x10.lbm deleted file mode 100644 index 56b4f2a54..000000000 --- a/radio/src/fonts/sqt5_pw/font_pl_08x10.lbm +++ /dev/null @@ -1 +0,0 @@ -0x90,0x07,0x90,0x07,0x90,0x04,0x90,0x04,0x90,0x04,0xf0,0x0f,0xf0,0x0b,0x00,0x00,0xf0,0x07,0xf0,0x07,0x10,0x04,0x14,0x04,0x13,0x04,0x11,0x04,0x10,0x04,0x00,0x00,0xf0,0x07,0xf0,0x07,0x90,0x04,0x90,0x04,0x90,0x04,0xf0,0x0c,0xf0,0x08,0x00,0x00,0x40,0x04,0x42,0x04,0xfe,0x07,0xfe,0x07,0x20,0x04,0x20,0x04,0x00,0x00,0x00,0x00,0xf0,0x07,0xf0,0x07,0x10,0x00,0x14,0x00,0x13,0x00,0xf1,0x07,0xe0,0x07,0x00,0x00,0xe0,0x03,0xf0,0x07,0x10,0x04,0x14,0x04,0x13,0x04,0xf1,0x07,0xe0,0x03,0x00,0x00,0xf0,0x04,0xf0,0x04,0x90,0x04,0x94,0x04,0x93,0x04,0x91,0x07,0x90,0x07,0x00,0x00,0x10,0x04,0x10,0x06,0x16,0x07,0x96,0x05,0xd0,0x04,0x70,0x04,0x30,0x04,0x00,0x00,0x10,0x04,0x10,0x06,0x10,0x07,0x94,0x05,0xd3,0x04,0x71,0x04,0x30,0x04,0x00,0x00,0xfc,0x07,0xfe,0x07,0x86,0x00,0x86,0x00,0x86,0x00,0x86,0x00,0xfe,0x0f,0xfc,0x0b,0xf8,0x03,0xfc,0x07,0x04,0x04,0x04,0x04,0x06,0x04,0x05,0x04,0x04,0x04,0x00,0x00,0x00,0x00,0xfe,0x07,0xfe,0x07,0x22,0x04,0x22,0x04,0x22,0x04,0x22,0x0c,0x02,0x08,0x80,0x00,0xfe,0x07,0xfe,0x07,0x40,0x04,0x40,0x04,0x20,0x04,0x20,0x04,0x00,0x04,0xfc,0x07,0xfc,0x07,0x04,0x00,0x04,0x00,0x07,0x00,0x0d,0x00,0xf8,0x07,0xf0,0x07,0xf8,0x03,0xfc,0x07,0x04,0x04,0x04,0x04,0x04,0x04,0x07,0x04,0xfd,0x07,0xf8,0x03,0x30,0x02,0x78,0x06,0x48,0x04,0x4c,0x04,0x4b,0x04,0x49,0x04,0xd8,0x07,0x90,0x03,0x04,0x06,0x04,0x07,0x84,0x05,0xc7,0x04,0x67,0x04,0x34,0x04,0x1c,0x04,0x0c,0x04,0x04,0x06,0x04,0x07,0x84,0x05,0xc4,0x04,0x64,0x04,0x37,0x04,0x1d,0x04,0x0c,0x04, diff --git a/radio/src/fonts/sqt5_pw/font_pl_08x10.png b/radio/src/fonts/sqt5_pw/font_pl_08x10.png deleted file mode 100644 index bbe2fc7f139bd0e5d1e6ac30be339aac7e3f0dba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 237 zcmeAS@N?(olHy`uVBq!ia0vp^6M&e9kr_yC*I9NLNU;U@gt!9f|Ns9ly*d9bkhRFu z#W95Ax@q5DUS>m%){Qm}ZYN}>bws=k=$f)JxN-*10SUd>0ELoi9OcVxRO;*$D+Ht# zu8RDY6VvV-vFEH$Pwwk&w{Iw>otP7>R`7nRI)h8g5yd68inV&A12bat({Qa@vB*OstNi|gEDlrD4#?L1MM{q>)_W!&@51=FH#fBblG kk7Dt!PaiIat?3E2KX9SWd5v;O6wtK{p00i_>zopr0H0f7%>V!Z diff --git a/radio/src/fonts/sqt5_pw/font_pl_10x14.lbm b/radio/src/fonts/sqt5_pw/font_pl_10x14.lbm deleted file mode 100644 index 0846467d2..000000000 --- a/radio/src/fonts/sqt5_pw/font_pl_10x14.lbm +++ /dev/null @@ -1 +0,0 @@ -0x60,0x7e,0x60,0x7e,0x60,0x7e,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0xff,0xe0,0xbf,0xe0,0xbf,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x60,0x68,0x60,0x6c,0x60,0x67,0x60,0x63,0x60,0x61,0x60,0x60,0x60,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0xe7,0xe0,0x87,0xe0,0x87,0x00,0x00,0x00,0x63,0x06,0x63,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0xc0,0x60,0xc0,0x60,0x00,0x00,0x00,0x00,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x00,0x68,0x00,0x6c,0x00,0x67,0x00,0xe3,0x7f,0xe1,0x7f,0xc0,0x7f,0xc0,0x3f,0xe0,0x7f,0xe0,0x7f,0x60,0x60,0x68,0x60,0x6c,0x60,0x67,0x60,0xe3,0x7f,0xe1,0x7f,0xc0,0x3f,0xe0,0x67,0xe0,0x67,0xe0,0x67,0x60,0x66,0x68,0x66,0x6c,0x66,0x67,0x66,0x63,0x7e,0x61,0x7e,0x60,0x7e,0x60,0x60,0x60,0x70,0x60,0x78,0x66,0x7c,0x66,0x6e,0x60,0x67,0xe0,0x63,0xe0,0x61,0xe0,0x60,0x60,0x60,0x60,0x60,0x60,0x70,0x60,0x78,0x60,0x7c,0x68,0x6e,0x6c,0x67,0xe7,0x63,0xe3,0x61,0xe1,0x60,0x60,0x60,0xfc,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0xfe,0x7f,0xfe,0xbf,0xfc,0xbf,0xf8,0x3f,0xfc,0x7f,0xfc,0x7f,0x0c,0x60,0x0c,0x60,0x0f,0x60,0x0f,0x60,0x0d,0x60,0x0c,0x60,0x0c,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x06,0xa0,0x06,0x80,0x00,0x06,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x80,0x61,0x80,0x61,0xc0,0x60,0xc0,0x60,0x60,0x60,0x60,0x60,0xf8,0x7f,0xf8,0x7f,0xf8,0x7f,0x18,0x00,0x18,0x00,0x1c,0x00,0x3f,0x00,0xf3,0x7f,0xe1,0x7f,0xc0,0x7f,0xf0,0x3f,0xf8,0x7f,0xf8,0x7f,0x18,0x60,0x1c,0x60,0x1f,0x60,0x1b,0x60,0xf9,0x7f,0xf8,0x7f,0xf0,0x3f,0xf0,0x39,0xf8,0x7b,0xf8,0x7b,0x18,0x63,0x1c,0x63,0x1f,0x63,0x1b,0x63,0x79,0x7f,0x78,0x7f,0x70,0x3e,0x18,0x70,0x18,0x78,0x18,0x7c,0x18,0x6e,0x1b,0x67,0x9b,0x63,0xd8,0x61,0xf8,0x60,0x78,0x60,0x38,0x60,0x18,0x70,0x18,0x78,0x18,0x7c,0x18,0x6e,0x18,0x67,0x9c,0x63,0xdf,0x61,0xfb,0x60,0x79,0x60,0x38,0x60, diff --git a/radio/src/fonts/sqt5_pw/font_pl_10x14.png b/radio/src/fonts/sqt5_pw/font_pl_10x14.png deleted file mode 100644 index cdd6a18b7aefcdaa25f577a052810fc29e81bb0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 333 zcmV-T0kZyyP)JjwE(Gmj*HVauQ8^VtMcK+u)r0T#TpenUZkLLQ*TK1|goS*ZSdLrsVp z`7P?czYR}BHfl8@UI_uP8y~>t3~4(wj~Q{e;!&34+Q44ZZ-k|{f@hgrzD!M2=J4*m zpZr6%QxkMSQLer#Ws5ajvLK9WC%wly`J5;B`@r6@XKT3f>E(gl2)CwtbJxz~_a(Wo z$*n)#?`~bFlq=Y+uiVim*J-T(_gUFLuiTRQdlu!rPeYlJ=6uzV{PlR(7YQTZ@Ba`L fJkE^ivyLo3E)KrC*Pz#100000NkvXXu0mjf{6Lq? diff --git a/radio/src/fonts/sqt5_pw/font_pt_05x07.lbm b/radio/src/fonts/sqt5_pw/font_pt_05x07.lbm deleted file mode 100644 index 19aac799d..000000000 --- a/radio/src/fonts/sqt5_pw/font_pt_05x07.lbm +++ /dev/null @@ -1 +0,0 @@ -0x78,0x14,0x16,0x15,0x78,0x74,0x54,0x56,0x55,0x7c,0x78,0x16,0x15,0x16,0x78,0x74,0x56,0x55,0x56,0x7c,0x7a,0x15,0x16,0x15,0x78,0x74,0x56,0x55,0x56,0x7d,0x78,0x15,0x16,0x14,0x78,0x74,0x55,0x56,0x54,0x7c,0x1c,0xa2,0x62,0x22,0x22,0x3c,0xa4,0x64,0x24,0x24,0x7c,0x54,0x56,0x55,0x44,0x7c,0x54,0x56,0x55,0x5c,0x7c,0x56,0x55,0x56,0x44,0x7c,0x56,0x55,0x56,0x5c,0x00,0x44,0x7e,0x45,0x00,0x00,0x48,0x7a,0x41,0x00,0x3c,0x42,0x42,0x43,0x3c,0x38,0x44,0x46,0x45,0x38,0x3c,0x42,0x43,0x42,0x3c,0x38,0x44,0x46,0x44,0x38,0x3c,0x43,0x42,0x43,0x3c,0x38,0x46,0x44,0x46,0x38,0x3c,0x40,0x42,0x41,0x3c,0x78,0x40,0x44,0x42,0x78, diff --git a/radio/src/fonts/sqt5_pw/font_pt_05x07.png b/radio/src/fonts/sqt5_pw/font_pt_05x07.png deleted file mode 100644 index d973c436b99b4021cdae8db4c5c1978b804aa2e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 244 zcmeAS@N?(olHy`uVBq!ia0vp^6+q0v$P6MoRt5kmwg8_HS0MfW|No^o=iddg7?Zr+ zT^Kr8Wj%l#&H|6fVg?3oVGw3ym^DWND9B#o>FdgVmqS`aUg{tBAvd5s0 ziuir6uYUi(|NXxEzxVyQ{{Jt}_qg`B^?CpIy{;;~|5)~Vwxrb*i&-LC5)w1scqbi= z%{QKMzBaCM{jYnU?;br`JTH1)GDGt#XP&cH1?*f%Y?ay85}Sb4q9e0KfoR5&!@I diff --git a/radio/src/fonts/sqt5_pw/font_pt_08x10.lbm b/radio/src/fonts/sqt5_pw/font_pt_08x10.lbm deleted file mode 100644 index 7971cf6a9..000000000 --- a/radio/src/fonts/sqt5_pw/font_pt_08x10.lbm +++ /dev/null @@ -1 +0,0 @@ -0xf0,0x07,0xf8,0x07,0x88,0x00,0x8c,0x00,0x8b,0x00,0x89,0x00,0xf8,0x07,0xf0,0x07,0x90,0x07,0x90,0x07,0x90,0x04,0x90,0x04,0x98,0x04,0xf6,0x07,0xf2,0x07,0x00,0x00,0xf0,0x07,0xfa,0x07,0x8b,0x00,0x89,0x00,0x89,0x00,0x8b,0x00,0xfa,0x07,0xf0,0x07,0x90,0x07,0x94,0x07,0x96,0x04,0x93,0x04,0x96,0x04,0xf4,0x07,0xf0,0x07,0x00,0x00,0xf0,0x07,0xfa,0x07,0x89,0x00,0x89,0x00,0x8b,0x00,0x8a,0x00,0xfa,0x07,0xf1,0x07,0x90,0x07,0x90,0x07,0x94,0x04,0x92,0x04,0x96,0x04,0xf4,0x07,0xf2,0x07,0x00,0x00,0xf0,0x07,0xf8,0x07,0x89,0x00,0x8b,0x00,0x8c,0x00,0x88,0x00,0xf8,0x07,0xf0,0x07,0x90,0x07,0x90,0x07,0x92,0x04,0x96,0x04,0x98,0x04,0xf0,0x07,0xf0,0x07,0x00,0x00,0xf8,0x01,0xfc,0x03,0x04,0x0a,0x04,0x0e,0x04,0x06,0x04,0x02,0x04,0x02,0x04,0x02,0xf8,0x03,0xf8,0x03,0x08,0x0a,0x08,0x0e,0x08,0x06,0x08,0x02,0x08,0x02,0x00,0x00,0xf8,0x07,0xf8,0x07,0x48,0x04,0x4c,0x04,0x4b,0x04,0x49,0x04,0x08,0x04,0x00,0x00,0xf0,0x07,0xf0,0x07,0x90,0x04,0x9c,0x04,0x96,0x04,0xf2,0x04,0xf0,0x04,0x00,0x00,0xf8,0x07,0xfa,0x07,0x4b,0x04,0x49,0x04,0x49,0x04,0x4b,0x04,0x0a,0x04,0x00,0x00,0xf0,0x07,0xf4,0x07,0x96,0x04,0x93,0x04,0x96,0x04,0xf4,0x04,0xf0,0x04,0x00,0x00,0x00,0x00,0x08,0x04,0x08,0x04,0xfc,0x07,0xfb,0x07,0x09,0x04,0x08,0x04,0x00,0x00,0x00,0x00,0x10,0x04,0x10,0x04,0xf4,0x07,0xf3,0x07,0x01,0x04,0x00,0x04,0x00,0x00,0xf0,0x03,0xf8,0x07,0x08,0x04,0x08,0x04,0x0c,0x04,0x0b,0x04,0xf9,0x07,0xf0,0x03,0xe0,0x03,0xf0,0x07,0x10,0x04,0x18,0x04,0x16,0x04,0xf2,0x07,0xe0,0x03,0x00,0x00,0xf0,0x03,0xfa,0x07,0x0b,0x04,0x09,0x04,0x09,0x04,0x0b,0x04,0xfa,0x07,0xf0,0x03,0xe0,0x03,0xf4,0x07,0x16,0x04,0x13,0x04,0x16,0x04,0xf4,0x07,0xe0,0x03,0x00,0x00,0xf2,0x03,0xf9,0x07,0x09,0x04,0x0b,0x04,0x0a,0x04,0x0a,0x04,0xf9,0x07,0xf0,0x03,0xe0,0x03,0xf4,0x07,0x12,0x04,0x16,0x04,0x14,0x04,0xf2,0x07,0xe0,0x03,0x00,0x00,0xf8,0x03,0xf8,0x07,0x00,0x04,0x04,0x04,0x03,0x04,0x01,0x04,0xf8,0x07,0xf8,0x03,0xf0,0x07,0xf0,0x07,0x00,0x04,0x04,0x04,0x03,0x04,0xf1,0x07,0xf0,0x07,0x00,0x00, diff --git a/radio/src/fonts/sqt5_pw/font_pt_08x10.png b/radio/src/fonts/sqt5_pw/font_pt_08x10.png deleted file mode 100644 index 5b833f108ddcb33ea2bf74f3868a2e904496954a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 289 zcmeAS@N?(olHy`uVBq!ia0vp^2Y{G|kr_zxStxV^DYgKg5LY1m|NsA`H|O64vKW)R z-CY66N*Hou4|7dbMu?A3=wQ#U;CfAKSXOZ?I!(FVdQ&MBb@06wN|8vpZ_d99WHBar zySp%Su*!M>Ih+L^k;M!Q+`=Ht$S`Y;1W=H@#M9T6{Vs>JsIHzdFUMA(&~Hx{#}J9j zwf!6Y4jTxx>2s}`?jh2L)jgELyreg8BKm%IxqT%UK&)!Sv^vFc;J+nX(d!>{vRpQP8)u5%(a z?7{A9=ChKxUg@9MwB07rs`Jt1$JZMIm+y`e3zS)#y=HQxafQX)Q%2J(b<#>-ee^EB zY+ohpCoFo=@$J5Ci?>@d&ps){zU9{H>)l(E-Rs^Lygu4{?V0=P(~~_9SSTIZ|B-XG XZ_d99WHBar zySp%Su*!M>Ih+L^k;M!Q+`=Ht$S`Y;1W=H@#M9T6{Vs>Jh`RE&iQl#Yh4egK978y+ zC%-s5ZP%d<|LXt9v$3UiD)ZcbZnHfhVM5}D1P!*$Q|9e9_ye?vpTRURA0wtkoIAy_&M2Dg1JBA1;l1;o9pMZJI@>vQr_|J&Op}zD(wG&#m3?ZT k8UOO%t@gM{h4pip=f)|o4zP*32Q-es)78&qol`;+0RQbd{{R30 diff --git a/radio/src/fonts/sqt5_pw/font_se_10x14.lbm b/radio/src/fonts/sqt5_pw/font_se_10x14.lbm deleted file mode 100644 index e1fa337cc..000000000 --- a/radio/src/fonts/sqt5_pw/font_se_10x14.lbm +++ /dev/null @@ -1 +0,0 @@ -0x60,0x7e,0x60,0x7e,0x60,0x7e,0x64,0x66,0x6a,0x66,0x6a,0x66,0x64,0x66,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x7e,0x60,0x7e,0x6c,0x7e,0x6c,0x66,0x60,0x66,0x60,0x66,0x6c,0x66,0xec,0x7f,0xe0,0x7f,0xe0,0x7f,0xc0,0x3f,0xe0,0x7f,0xec,0x7f,0x6c,0x60,0x60,0x60,0x60,0x60,0x6c,0x60,0xec,0x7f,0xe0,0x7f,0xc0,0x3f,0xf0,0x7f,0xf8,0x7f,0xf8,0x7f,0x1a,0x06,0x1d,0x06,0x1d,0x06,0x1a,0x06,0xf8,0x7f,0xf8,0x7f,0xf0,0x7f,0xf0,0x7f,0xfb,0x7f,0xfb,0x7f,0x18,0x06,0x18,0x06,0x18,0x06,0x18,0x06,0xfb,0x7f,0xfb,0x7f,0xf0,0x7f,0xf0,0x3f,0xfb,0x7f,0xfb,0x7f,0x18,0x60,0x18,0x60,0x18,0x60,0x18,0x60,0xfb,0x7f,0xfb,0x7f,0xf0,0x3f, diff --git a/radio/src/fonts/sqt5_pw/font_se_10x14.png b/radio/src/fonts/sqt5_pw/font_se_10x14.png deleted file mode 100644 index dbd4d48d4f7bdc59fed88763ea93066dc09d4534..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 214 zcmeAS@N?(olHy`uVBq!ia0vp^Hb5-E$P6S4V)|-;6kC8#h%1o(|NsBeoAd7iS&T{E z?k)@+tg;?J4rhT!WHAE+w=f7ZGR&GI0Tg5}@$_|Nzsn&lYR0tU@%l4Bp)gMu#}JO| z$v^m6oFVdQ&MBb@ E09VyT8vp0^^Wy!4%+niL8G3w!xHl+Vc~)+#&MuvBlglo~ z>-k+ltE}%o7AUW8V!7BS#*b!978y+C-3Z_d99WN{XF zL>4nJa0`PlBg3pY5H=O_PcD{+@gZnssFwMh4egK978y+C-3003YC0{{R3py}({00006P)t-s00030 z|No`gpWOfe00Cl4M??UK1szBL000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i*(^ z6b~%SUmHIF00a<8L_t(I%XQQ-Z{s!;2k@sda6AZMa9J`0mJc^{RjMTi2;rd_+M#H^ zLV$jO1G;z!ARAsf7|_tQK)(u88mA0G_ys!Xs-Y_#E*c2GK2mbv%efj1_y;}l@##+i z9=HIV)0zF(3GVDGR9(Wm&6gTa$Ers;>-MmOu$sMm&M=fK`kxH=&N2)O5pIP?%;1OL zHHMZfZtsi!nV=($q4^eFjy+l&GYs3T(1{oPBf~HdjoSj@@aX8_Zuhf8^}bGH2XP82 z^(ZVdSX@4y9(6E2g~jyNH@VqHaQ^mT*%YH}V6-l4m9 zkiXZ;tU=jzz>Pc+0hi4RZtN@74TOlJuqpOw%ueo2Guo90S2+y@@Q0%Z2 zwfyK{A>jxGq_G6TMAUz!4%BN@r*sf@<*qN+Y96p($n^_pC41bp#Hb}I?8|q}N2?7X zHIG{QZL%#07+-Y26>XEy4}>A@J*HlJvpS%*bX(35guf}^gzHu$cvba?0av%W5+z=?RL)gX1e8@-ipn1?f`_L0a_YEwugt$`~Hyq>+`75eU05z%9I)zf zd%TZrkM0+syN#;@ZU%hb$IfJQ+|u0Lr;3BA8T|!k-i+8{dg0vkhC@@s8+v7k^Sk2w zc%Hja#^t&m!yUy2rJH(Lp}{~Ces}0z{aULkk8%d{(s23PXbzNzsA;XzQ)S> z@A@nB-}NqWkLZF*$J iXv$}rvi*U)y8Z(=H^&(95DA+A0000e zSad^gZEa<4bO1wgWnpw>WFU8GbZ8()Nlj2!fese{00l=$L_t(|+U;Fi)9WAzOgsJm zf4S%B%-3_j-W5Ua#xAu1o4}J(u%bNshn&m$FAmN#OyC z2Q0iV94hh1=g9*R8H7@K?f=?=*uLK@kKI16{-S`VXA`L(TDzcj)9OzWw0u*~9Mf*!sd2D;E@|?AwvlqhN`n-6lt>4<--h70P^9n>unDRb3I2{2b0-T!i zSmj6cmsuXW-n%k9f%WKJsa$qIs;wiV{-~ff%U2otWBE%|c_q)Bmr6=X{^WBa2(&DP zg{4HxyIU#t>eaMCVkA86lXNmFPorneD!d2c?K>KM_gJl-et!Q)>h&@WNc$w|F|Me8 zq3^ZrwoI_UdSwKsTKls7#ZzAIzi0-3mS`Ecr_4*<@nF?AiVM;2mDuKyr^x%X4*eRI zVPs2rnP6;b->81HJoGt)S!zN2E@;&18~v^Ke>Biq+PBgq>nV%DFnaXI@|URcR<(W9 z*my!vGs4RX>PkxP<@3Z&Bdfir$pmGhtT{ayOjt(n^V_zFfPR!C7*X%8Oav=9z4Nu6 z|J^Z+Ck863w^L&J82BOWW}y0GofYur)_QPy#LlDrway#fvkKPtq@5hJU(q?_Qajk~ zlXg^|l9PTMgPP4IXrA*-_Us%_#DP$zi_OSJgX<|l#4f?9))%4!^b7{@1XipK7?Jb} zjSejSWyy*6;I_73R=aD)*KB`d*46qI+rF$Ea%~-+^Ax+qK#~3X%yQ!0f&hs*xa)6^ zjnf8dBSz1%a_I$wqg=Y*m7A7fL~PACd=|+Fdr$paSCq5BjUAk7ChAeHCKHD&{(>yV zM&n~Q-0LyllD#y{Ai6m9=ES3^NZK5H4Nf!tnVHjyzQ(&BBuIerz_9V%?)nK(nF7v+Q%>G2( zH;de^Az=qQI6ZNkmCUz6H+Zm>q9X(}Gurc2B`YiE0b=Hj z1fu3p+G;h~74l zg$L5&CyMx40S`R!ip4IhJ6(JIWa5GJK6=MI>O*g~gL%q{I3d4dKB(uEVn)3y=-28; zEA(ep8@&FqqOBQi?CHh29hlKR)TYS)tDQj3%%zX`Qs8R3VB^7xS0L@uR>r)pwHp%; zvgZ&rgSx9|SF-h7>~keK{=N%Pmz0#Og9j|UFB~fI$Un=hSX@axV&wn;002ovPDHLk FV1jhf=PdvL diff --git a/radio/src/fonts/std_pw/font_10x14_extra.lbm b/radio/src/fonts/std_pw/font_10x14_extra.lbm deleted file mode 100644 index c71947df1..000000000 --- a/radio/src/fonts/std_pw/font_10x14_extra.lbm +++ /dev/null @@ -1 +0,0 @@ -0x60,0x00,0x70,0x00,0x38,0x00,0x1c,0x00,0xce,0x7f,0xce,0x7f,0x1c,0x00,0x38,0x00,0x70,0x00,0x60,0x00,0x00,0x06,0x00,0x0e,0x00,0x1c,0x00,0x38,0xfe,0x73,0xfe,0x73,0x00,0x38,0x00,0x1c,0x00,0x0e,0x00,0x06,0x00,0x18,0x00,0x1c,0x00,0x0e,0x18,0x07,0x98,0x03,0xd8,0x01,0xd8,0x00,0x18,0x00,0xf8,0x03,0xf8,0x03,0x18,0x00,0x38,0x00,0x70,0x00,0xe0,0x18,0xc0,0x19,0x80,0x1b,0x00,0x1b,0x00,0x18,0xc0,0x1f,0xc0,0x1f,0xc0,0x1f,0xc0,0x1f,0x00,0x18,0x00,0x1b,0x80,0x1b,0xc0,0x19,0xe0,0x18,0x70,0x00,0x38,0x00,0x18,0x00,0xf8,0x03,0xf8,0x03,0x18,0x00,0xd8,0x00,0xd8,0x01,0x98,0x03,0x18,0x07,0x00,0x0e,0x00,0x1c,0x00,0x18, diff --git a/radio/src/fonts/std_pw/font_10x14_extra.png b/radio/src/fonts/std_pw/font_10x14_extra.png deleted file mode 100644 index 85ebfd0e19a3ae590fdac9bee7e45fb53fb3a9f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 229 zcmeAS@N?(olHy`uVBq!ia0vp^Hb5-E$P6S4V)|-;6kC8#h%1o(|NsBeoAd7iS)2tP zk;M!Q+`=Ht$S`Y;1W=H@#M9T6{Vp3fw+Men;is!Wp(0Ng#}JO|$v^lRc8#($xHO){_~%<(Sq}u>Yd~YrXxSnYg~T% zFdlwxoZdBm#eCz0A2oX(|Cj&$pNVI_Jomr+gg^HWeE8XH*iqQ<@N<8aiFe{T28I{w W6C^GAxAy^UXYh3Ob6Mw<&;$VafmR{_ diff --git a/radio/src/fonts/std_pw/font_pt_04x06.lbm b/radio/src/fonts/std_pw/font_pt_04x06.lbm deleted file mode 100644 index bb2db6d13..000000000 --- a/radio/src/fonts/std_pw/font_pt_04x06.lbm +++ /dev/null @@ -1 +0,0 @@ -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, diff --git a/radio/src/fonts/std_pw/font_pt_04x06.png b/radio/src/fonts/std_pw/font_pt_04x06.png deleted file mode 100644 index b3bc84800816a5ce210810e5e8f9b114886dea1b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 130 zcmeAS@N?(olHy`uVBq!ia0vp^6+q0+$P6TZ-ji+xQfvV}A+A9B|Ns9>Z_d99WN{XF zL>4nJa0`PlBg3pY5H=O_PcD{oYKM)Ice5FA%0I6#}JO|$v^tJBr?vhGdwz! VF{3wVxg1c6!PC{xWt~$(698T_AX)$b diff --git a/radio/src/fonts/std_fw/font_03x05.lbm b/radio/src/fonts/stdv2/font_03x05.lbm similarity index 100% rename from radio/src/fonts/std_fw/font_03x05.lbm rename to radio/src/fonts/stdv2/font_03x05.lbm diff --git a/radio/src/fonts/std_fw/font_03x05.png b/radio/src/fonts/stdv2/font_03x05.png similarity index 100% rename from radio/src/fonts/std_fw/font_03x05.png rename to radio/src/fonts/stdv2/font_03x05.png diff --git a/radio/src/fonts/std_pw/font_04x06.lbm b/radio/src/fonts/stdv2/font_04x06.lbm similarity index 100% rename from radio/src/fonts/std_pw/font_04x06.lbm rename to radio/src/fonts/stdv2/font_04x06.lbm diff --git a/radio/src/fonts/std_pw/font_04x06.png b/radio/src/fonts/stdv2/font_04x06.png similarity index 100% rename from radio/src/fonts/std_pw/font_04x06.png rename to radio/src/fonts/stdv2/font_04x06.png diff --git a/radio/src/fonts/std_fw/font_04x06_extra.lbm b/radio/src/fonts/stdv2/font_04x06_extra.lbm similarity index 100% rename from radio/src/fonts/std_fw/font_04x06_extra.lbm rename to radio/src/fonts/stdv2/font_04x06_extra.lbm diff --git a/radio/src/fonts/std_fw/font_04x06_extra.png b/radio/src/fonts/stdv2/font_04x06_extra.png similarity index 100% rename from radio/src/fonts/std_fw/font_04x06_extra.png rename to radio/src/fonts/stdv2/font_04x06_extra.png diff --git a/radio/src/fonts/std_pw/font_05x07.lbm b/radio/src/fonts/stdv2/font_05x07.lbm similarity index 100% rename from radio/src/fonts/std_pw/font_05x07.lbm rename to radio/src/fonts/stdv2/font_05x07.lbm diff --git a/radio/src/fonts/std_pw/font_05x07.png b/radio/src/fonts/stdv2/font_05x07.png similarity index 100% rename from radio/src/fonts/std_pw/font_05x07.png rename to radio/src/fonts/stdv2/font_05x07.png diff --git a/radio/src/fonts/std_fw/font_05x07_extra.lbm b/radio/src/fonts/stdv2/font_05x07_extra.lbm similarity index 100% rename from radio/src/fonts/std_fw/font_05x07_extra.lbm rename to radio/src/fonts/stdv2/font_05x07_extra.lbm diff --git a/radio/src/fonts/std_fw/font_05x07_extra.png b/radio/src/fonts/stdv2/font_05x07_extra.png similarity index 100% rename from radio/src/fonts/std_fw/font_05x07_extra.png rename to radio/src/fonts/stdv2/font_05x07_extra.png diff --git a/radio/src/fonts/std_pw/font_08x10.lbm b/radio/src/fonts/stdv2/font_08x10.lbm similarity index 100% rename from radio/src/fonts/std_pw/font_08x10.lbm rename to radio/src/fonts/stdv2/font_08x10.lbm diff --git a/radio/src/fonts/std_pw/font_08x10.png b/radio/src/fonts/stdv2/font_08x10.png similarity index 100% rename from radio/src/fonts/std_pw/font_08x10.png rename to radio/src/fonts/stdv2/font_08x10.png diff --git a/radio/src/fonts/std_pw/font_10x14.lbm b/radio/src/fonts/stdv2/font_10x14.lbm similarity index 98% rename from radio/src/fonts/std_pw/font_10x14.lbm rename to radio/src/fonts/stdv2/font_10x14.lbm index a78e4abcf..1adf78d9e 100644 --- a/radio/src/fonts/std_pw/font_10x14.lbm +++ b/radio/src/fonts/stdv2/font_10x14.lbm @@ -1,4 +1,4 @@ -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x71,0xfe,0x71,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x7e,0x00,0x00,0x00,0x00,0x00,0x7e,0x00,0x3e,0x00,0x00,0x00,0x00,0x00,0x60,0x06,0x60,0x06,0xfe,0x7f,0xfe,0x7f,0x60,0x06,0x60,0x06,0xfe,0x7f,0xfe,0x7f,0x60,0x06,0x60,0x06,0x60,0x18,0xf0,0x18,0x98,0x19,0x98,0x19,0xfe,0x7f,0xfe,0x7f,0x98,0x19,0x98,0x19,0x18,0x0f,0x18,0x06,0x0c,0x18,0x1e,0x1c,0x1e,0x0e,0x0c,0x07,0x80,0x03,0xc0,0x01,0xe0,0x30,0x70,0x78,0x38,0x78,0x18,0x30,0x78,0x1e,0xfc,0x3f,0x8e,0x71,0xc6,0x63,0xe6,0x67,0x76,0x66,0x3c,0x3c,0x18,0x3c,0x00,0x66,0x00,0x66,0x00,0x00,0x00,0x00,0x66,0x00,0x76,0x00,0x3e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x07,0xf0,0x0f,0x38,0x1c,0x1c,0x38,0x0e,0x70,0x06,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x60,0x0e,0x70,0x1c,0x38,0x38,0x1c,0xf0,0x0f,0xe0,0x07,0x00,0x00,0x00,0x00,0x60,0x06,0x60,0x06,0xc0,0x03,0x80,0x01,0xf8,0x1f,0xf8,0x1f,0x80,0x01,0xc0,0x03,0x60,0x06,0x60,0x06,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xf8,0x1f,0xf8,0x1f,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x66,0x00,0x76,0x00,0x3e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x78,0x00,0x78,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x1c,0x00,0x0e,0x00,0x07,0x80,0x03,0xc0,0x01,0xe0,0x00,0x70,0x00,0x38,0x00,0x18,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x71,0xfe,0x71,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x7e,0x00,0x00,0x00,0x00,0x00,0x7e,0x00,0x3e,0x00,0x00,0x00,0x00,0x00,0x60,0x06,0x60,0x06,0xfe,0x7f,0xfe,0x7f,0x60,0x06,0x60,0x06,0xfe,0x7f,0xfe,0x7f,0x60,0x06,0x60,0x06,0x60,0x18,0xf0,0x18,0x98,0x19,0x98,0x19,0xfe,0x7f,0xfe,0x7f,0x98,0x19,0x98,0x19,0x18,0x0f,0x18,0x06,0x0c,0x18,0x1e,0x1c,0x1e,0x0e,0x0c,0x07,0x80,0x03,0xc0,0x01,0xe0,0x30,0x70,0x78,0x38,0x78,0x18,0x30,0x78,0x1e,0xfc,0x3f,0x8e,0x71,0xc6,0x63,0xe6,0x67,0x76,0x66,0x3c,0x3c,0x18,0x3c,0x00,0x66,0x00,0x66,0x00,0x00,0x00,0x00,0x66,0x00,0x76,0x00,0x3e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x07,0xf0,0x0f,0x38,0x1c,0x1c,0x38,0x0e,0x70,0x06,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x60,0x0e,0x70,0x1c,0x38,0x38,0x1c,0xf0,0x0f,0xe0,0x07,0x00,0x00,0x00,0x00,0x60,0x06,0x60,0x06,0xc0,0x03,0x80,0x01,0xf8,0x1f,0xf8,0x1f,0x80,0x01,0xc0,0x03,0x60,0x06,0x60,0x06,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xf8,0x1f,0xf8,0x1f,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x66,0x00,0x76,0x00,0x3e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x78,0x00,0x78,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x1c,0x00,0x0e,0x00,0x07,0x80,0x03,0xc0,0x01,0xe0,0x00,0x70,0x00,0x38,0x00,0x18,0x00, 0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x60,0x0e,0x70,0xfc,0x3f,0xf8,0x1f,0xff,0xff,0xff,0xff,0x00,0x00,0x18,0x60,0x1c,0x60,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x00,0xff,0xff,0xff,0xff,0x18,0x78,0x1c,0x7c,0x0e,0x6e,0x06,0x67,0x86,0x63,0xce,0x61,0xfc,0x60,0x78,0x60,0xff,0xff,0xff,0xff,0x06,0x60,0x06,0x60,0x86,0x61,0x86,0x61,0x86,0x61,0xce,0x73,0xfc,0x3f,0x78,0x1e,0xff,0xff,0xff,0xff,0x80,0x07,0xc0,0x07,0xe0,0x06,0x70,0x06,0x38,0x06,0x1c,0x06,0xfe,0x7f,0xfe,0x7f,0xff,0xff,0xff,0xff,0x7e,0x18,0x7e,0x38,0x66,0x70,0x66,0x60,0x66,0x60,0xe6,0x70,0xc6,0x3f,0x86,0x1f,0xff,0xff,0xff,0xff,0xf8,0x1f,0xfc,0x3f,0x8e,0x71,0x86,0x61,0x86,0x61,0x8e,0x73,0x1c,0x3f,0x18,0x1e,0xff,0xff,0xff,0xff,0x06,0x00,0x06,0x00,0x86,0x7f,0xc6,0x7f,0xe6,0x00,0x76,0x00,0x3e,0x00,0x1e,0x00,0xff,0xff,0xff,0xff,0x78,0x1e,0xfc,0x3f,0xce,0x73,0x86,0x61,0x86,0x61,0xce,0x73,0xfc,0x3f,0x78,0x1e,0xff,0xff,0xff,0xff,0x78,0x00,0xfc,0x00,0xce,0x61,0x86,0x71,0x86,0x39,0xce,0x1d,0xfc,0x0f,0xf8,0x07,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x30,0x0c,0x78,0x1e,0x78,0x1e,0x30,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x66,0x78,0x76,0x78,0x3e,0x30,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0xc0,0x03,0xe0,0x07,0x70,0x0e,0x38,0x1c,0x1c,0x38,0x0e,0x70,0x06,0x60,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x06,0x60,0x0e,0x70,0x1c,0x38,0x38,0x1c,0x70,0x0e,0xe0,0x07,0xc0,0x03,0x80,0x01,0x00,0x00,0x00,0x00,0x18,0x00,0x1c,0x00,0x0e,0x00,0x06,0x00,0x06,0x66,0x06,0x67,0x86,0x03,0xce,0x01,0xfc,0x00,0x78,0x00, 0x78,0x00,0xfc,0x00,0xce,0x01,0x86,0x01,0x86,0x01,0xce,0x01,0xfc,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0xe0,0x7f,0xf0,0x7f,0xb8,0x01,0x9c,0x01,0x8e,0x01,0x8e,0x01,0x9c,0x01,0xb8,0x01,0xf0,0x7f,0xe0,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0xce,0x73,0xfc,0x3f,0x78,0x1e,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x0e,0x70,0x1c,0x38,0x18,0x18,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x06,0x60,0x0e,0x70,0x1c,0x38,0x38,0x1c,0xf0,0x0f,0xe0,0x07,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x06,0x00,0x06,0x00,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x86,0x61,0x86,0x61,0x86,0x61,0x8e,0x71,0x9c,0x7f,0x98,0x3f,0xfe,0x7f,0xfe,0x7f,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x18,0x00,0x38,0x00,0x70,0x00,0x60,0x06,0x60,0x06,0x70,0xfe,0x3f,0xfe,0x1f,0x06,0x00,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0x80,0x01,0xc0,0x03,0xe0,0x07,0x70,0x0e,0x38,0x1c,0x1c,0x38,0x0e,0x70,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0xfe,0x7f,0xfe,0x7f,0x1c,0x00,0x38,0x00,0xf0,0x01,0xf0,0x01,0x38,0x00,0x1c,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x70,0x00,0xe0,0x00,0xc0,0x01,0x80,0x03,0x00,0x07,0x00,0x0e,0xfe,0x7f,0xfe,0x7f,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x0e,0x70,0xfc,0x3f,0xf8,0x1f, 0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0xce,0x01,0xfc,0x00,0x78,0x00,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x66,0x06,0x6e,0x06,0x3c,0x0e,0x38,0xfc,0x7f,0xf8,0x67,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x07,0x86,0x0f,0x86,0x1d,0xce,0x39,0xfc,0x70,0x78,0x60,0x78,0x18,0xfc,0x38,0xce,0x71,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x8e,0x73,0x1c,0x3f,0x18,0x1e,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0xfe,0x1f,0xfe,0x3f,0x00,0x70,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x70,0xfe,0x3f,0xfe,0x1f,0xfe,0x07,0xfe,0x0f,0x00,0x1c,0x00,0x38,0x00,0x70,0x00,0x70,0x00,0x38,0x00,0x1c,0xfe,0x0f,0xfe,0x07,0xfe,0x1f,0xfe,0x3f,0x00,0x70,0x00,0x70,0x00,0x3e,0x00,0x3e,0x00,0x70,0x00,0x70,0xfe,0x3f,0xfe,0x1f,0x1e,0x78,0x3e,0x7c,0x70,0x0e,0xe0,0x07,0xc0,0x03,0xc0,0x03,0xe0,0x07,0x70,0x0e,0x3e,0x7c,0x1e,0x78,0x7e,0x00,0xfe,0x00,0xc0,0x01,0x80,0x03,0x00,0x7f,0x00,0x7f,0x80,0x03,0xc0,0x01,0xfe,0x00,0x7e,0x00,0x06,0x78,0x06,0x7c,0x06,0x6e,0x06,0x67,0x86,0x63,0xc6,0x61,0xe6,0x60,0x76,0x60,0x3e,0x60,0x1e,0x60,0x00,0x00,0x00,0x00,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x00,0x00,0x00,0x00,0x18,0x00,0x38,0x00,0x70,0x00,0xe0,0x00,0xc0,0x01,0x80,0x03,0x00,0x07,0x00,0x0e,0x00,0x1c,0x00,0x18,0x00,0x00,0x00,0x00,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x00,0x00,0x00,0x00,0x60,0x00,0x70,0x00,0x38,0x00,0x1c,0x00,0x0e,0x00,0x0e,0x00,0x1c,0x00,0x38,0x00,0x70,0x00,0x60,0x00,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60, diff --git a/radio/src/fonts/stdv2/font_10x14.png b/radio/src/fonts/stdv2/font_10x14.png new file mode 100644 index 0000000000000000000000000000000000000000..35ad65ed4cd6fc835056f6eda970396fa1a711a3 GIT binary patch literal 1174 zcmV;H1Zn$;P)003YC0{{R3py}({00006P)t-s00030 z|No`gpWOfe00Cl4M??UK1szBL000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i*)4 z5i2fIYKg!A00b6EL_t(I%XQQ-Z{s!;2k@sda6Aa1aal41mJc^{RjMTcgz(S|?NBsd z!9c&j0bM*8kPR;#3~1u~YyD$i?|b=Y_;A;I$~Dt1ZI;+Amt zHzd371l@J@p~adIFk3hV4RxJK+%% z_~CbYzHiCm(>&{*2|A!oeDgJyDRyXa$gtgJfu(rCKN4&M(fE`h9FLA3?)HCr2X#}% zp@T366?+sG87!|JM<)#oN3fjSBksg@7r@2)hgD_x!^&I?&ayvU*0>p@@0BtYSE@>R zD0qWz?jXI<%4|T{O^aK3CR$uoYq+!Pw!D@+YCN8wT;4)*xtwsnBh0siPsvFt;5=Q% zJ=TQfuN4TkN-xA&#(jA~_-GBGO4HkZAx-#TjpH8EpM<8CD3FUAWh*xbsQmgV%c*(V z`*QLTPTb^2TIh;i4{Z}QD8kUiWs)iy1>pnH$D=#Um%rrc3};LNV*)rhp_QdPn@@uv zknm05u@S}UnesGAHM^!q&P2k?tx(KRp7ptL>AiK%V=ZK0D7s>0@Rs|<2@CP~k?=yR z3dJ6CQOZvamJ&`-KpaXSj70fY>_ELmHKK#CFLzzJR*M$9goSxy-e{Pip$%!42rtV}d8|6bS6H;K+@YUO zD(5{`v*^@eL-V=Vc%+3Y7zB$+>PK-ns`~jfz?qCwqyrnq=E!{Rqx=7m_n!o`)_#q( z-F}UQ_22b3=)W&fPBX9Q$mo8&J?0V3{P%+n$Ar0c*=IpB57SJ)OtQsT#vVt zFl9T|;+Kj?eK{C9mYU|1CizVC3kg)%Xg=JO63eV_sm0HOFobpX+rD{17gW=q$H6!r ov3{E#nK7E?GmhC|AaAb!0HqDY81@=Fxc~qF07*qoM6N<$f`i!~)c^nh literal 0 HcmV?d00001 diff --git a/radio/src/fonts/std_pw/font_10x14_compressed.lbm b/radio/src/fonts/stdv2/font_10x14_compressed.lbm similarity index 98% rename from radio/src/fonts/std_pw/font_10x14_compressed.lbm rename to radio/src/fonts/stdv2/font_10x14_compressed.lbm index ac0f612da..89f587d45 100644 --- a/radio/src/fonts/std_pw/font_10x14_compressed.lbm +++ b/radio/src/fonts/stdv2/font_10x14_compressed.lbm @@ -1 +1 @@ -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x66,0x00,0x76,0x00,0x3e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x78,0x00,0x78,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x60,0x0e,0x70,0xfc,0x3f,0xf8,0x1f,0xff,0xff,0xff,0xff,0x00,0x00,0x18,0x60,0x1c,0x60,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x00,0xff,0xff,0xff,0xff,0x18,0x78,0x1c,0x7c,0x0e,0x6e,0x06,0x67,0x86,0x63,0xce,0x61,0xfc,0x60,0x78,0x60,0xff,0xff,0xff,0xff,0x06,0x60,0x06,0x60,0x86,0x61,0x86,0x61,0x86,0x61,0xce,0x73,0xfc,0x3f,0x78,0x1e,0xff,0xff,0xff,0xff,0x80,0x07,0xc0,0x07,0xe0,0x06,0x70,0x06,0x38,0x06,0x1c,0x06,0xfe,0x7f,0xfe,0x7f,0xff,0xff,0xff,0xff,0x7e,0x18,0x7e,0x38,0x66,0x70,0x66,0x60,0x66,0x60,0xe6,0x70,0xc6,0x3f,0x86,0x1f,0xff,0xff,0xff,0xff,0xf8,0x1f,0xfc,0x3f,0x8e,0x71,0x86,0x61,0x86,0x61,0x8e,0x73,0x1c,0x3f,0x18,0x1e,0xff,0xff,0xff,0xff,0x06,0x00,0x06,0x00,0x86,0x7f,0xc6,0x7f,0xe6,0x00,0x76,0x00,0x3e,0x00,0x1e,0x00,0xff,0xff,0xff,0xff,0x78,0x1e,0xfc,0x3f,0xce,0x73,0x86,0x61,0x86,0x61,0xce,0x73,0xfc,0x3f,0x78,0x1e,0xff,0xff,0xff,0xff,0x78,0x00,0xfc,0x00,0xce,0x61,0x86,0x71,0x86,0x39,0xce,0x1d,0xfc,0x0f,0xf8,0x07,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x30,0x0c,0x78,0x1e,0x78,0x1e,0x30,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x7f,0xf0,0x7f,0xb8,0x01,0x9c,0x01,0x8e,0x01,0x8e,0x01,0x9c,0x01,0xb8,0x01,0xf0,0x7f,0xe0,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0xce,0x73,0xfc,0x3f,0x78,0x1e,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x0e,0x70,0x1c,0x38,0x18,0x18,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x06,0x60,0x0e,0x70,0x1c,0x38,0x38,0x1c,0xf0,0x0f,0xe0,0x07,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x06,0x00,0x06,0x00,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x86,0x61,0x86,0x61,0x86,0x61,0x8e,0x71,0x9c,0x7f,0x98,0x3f,0xfe,0x7f,0xfe,0x7f,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x18,0x00,0x38,0x00,0x70,0x00,0x60,0x06,0x60,0x06,0x70,0xfe,0x3f,0xfe,0x1f,0x06,0x00,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0x80,0x01,0xc0,0x03,0xe0,0x07,0x70,0x0e,0x38,0x1c,0x1c,0x38,0x0e,0x70,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0xfe,0x7f,0xfe,0x7f,0x1c,0x00,0x38,0x00,0xf0,0x01,0xf0,0x01,0x38,0x00,0x1c,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x70,0x00,0xe0,0x00,0xc0,0x01,0x80,0x03,0x00,0x07,0x00,0x0e,0xfe,0x7f,0xfe,0x7f,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x0e,0x70,0xfc,0x3f,0xf8,0x1f,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0xce,0x01,0xfc,0x00,0x78,0x00,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x66,0x06,0x6e,0x06,0x3c,0x0e,0x38,0xfc,0x7f,0xf8,0x67,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x07,0x86,0x0f,0x86,0x1d,0xce,0x39,0xfc,0x70,0x78,0x60,0x78,0x18,0xfc,0x38,0xce,0x71,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x8e,0x73,0x1c,0x3f,0x18,0x1e,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0xfe,0x1f,0xfe,0x3f,0x00,0x70,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x70,0xfe,0x3f,0xfe,0x1f,0xfe,0x07,0xfe,0x0f,0x00,0x1c,0x00,0x38,0x00,0x70,0x00,0x70,0x00,0x38,0x00,0x1c,0xfe,0x0f,0xfe,0x07,0xfe,0x1f,0xfe,0x3f,0x00,0x70,0x00,0x70,0x00,0x3e,0x00,0x3e,0x00,0x70,0x00,0x70,0xfe,0x3f,0xfe,0x1f,0x1e,0x78,0x3e,0x7c,0x70,0x0e,0xe0,0x07,0xc0,0x03,0xc0,0x03,0xe0,0x07,0x70,0x0e,0x3e,0x7c,0x1e,0x78,0x7e,0x00,0xfe,0x00,0xc0,0x01,0x80,0x03,0x00,0x7f,0x00,0x7f,0x80,0x03,0xc0,0x01,0xfe,0x00,0x7e,0x00,0x06,0x78,0x06,0x7c,0x06,0x6e,0x06,0x67,0x86,0x63,0xc6,0x61,0xe6,0x60,0x76,0x60,0x3e,0x60,0x1e,0x60,0x00,0x18,0x00,0x3c,0x60,0x7e,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0x66,0xc0,0x7f,0x80,0x7f,0xfe,0x7f,0xfe,0x7f,0x80,0x61,0xc0,0x61,0xe0,0x60,0x60,0x60,0x60,0x60,0xe0,0x70,0xc0,0x3f,0x80,0x1f,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x70,0x00,0x38,0x00,0x18,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x60,0x60,0xe0,0x60,0xc0,0x61,0x80,0x61,0xfe,0x7f,0xfe,0x7f,0x80,0x1f,0xc0,0x3f,0xe0,0x76,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0x66,0xc0,0x07,0x80,0x07,0x80,0x01,0x80,0x01,0xf8,0x7f,0xfc,0x7f,0x8e,0x01,0x86,0x01,0x06,0x00,0x0e,0x00,0x1c,0x00,0x18,0x00,0xe0,0x01,0xf0,0x03,0x38,0x67,0x18,0x66,0x18,0x66,0x18,0x66,0x18,0x66,0x18,0x76,0xf8,0x3f,0xf8,0x1f,0xfe,0x7f,0xfe,0x7f,0x80,0x01,0xc0,0x01,0xe0,0x00,0x60,0x00,0x60,0x00,0xe0,0x00,0xc0,0x7f,0x80,0x7f,0x60,0x60,0x60,0x60,0xe6,0x7f,0xe6,0x7f,0x00,0x60,0x00,0x60,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x18,0x00,0x38,0x00,0x70,0x00,0x60,0x60,0x60,0x60,0x70,0xe6,0x3f,0xe6,0x1f,0xff,0xff,0xff,0xff,0xfe,0x7f,0xfe,0x7f,0x00,0x06,0x00,0x0f,0x80,0x1f,0xc0,0x39,0xe0,0x70,0x60,0x60,0xff,0xff,0xff,0xff,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0x7f,0xe0,0x7f,0x60,0x00,0xe0,0x00,0xc0,0x07,0xc0,0x07,0xe0,0x00,0xe0,0x00,0xc0,0x7f,0x80,0x7f,0xe0,0x7f,0xe0,0x7f,0x80,0x01,0xc0,0x01,0xe0,0x00,0x60,0x00,0x60,0x00,0xe0,0x00,0xc0,0x7f,0x80,0x7f,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xe0,0x70,0xc0,0x3f,0x80,0x1f,0xe0,0x7f,0xe0,0x7f,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0xe0,0x07,0xc0,0x03,0x80,0x01,0x80,0x01,0xc0,0x03,0xe0,0x07,0x60,0x06,0x60,0x06,0x60,0x06,0xc0,0x07,0x80,0x07,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x80,0x01,0xc0,0x01,0xe0,0x00,0x60,0x00,0x60,0x00,0xe0,0x00,0xc0,0x01,0x80,0x01,0x80,0x61,0xc0,0x63,0xe0,0x67,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x7e,0x00,0x3c,0x00,0x18,0x60,0x00,0x60,0x00,0xf8,0x1f,0xf8,0x3f,0x60,0x70,0x60,0x60,0x00,0x60,0x00,0x70,0x00,0x38,0x00,0x18,0xe0,0x1f,0xe0,0x3f,0x00,0x70,0x00,0x60,0x00,0x60,0x00,0x70,0x00,0x38,0x00,0x18,0xe0,0x7f,0xe0,0x7f,0xe0,0x07,0xe0,0x0f,0x00,0x1c,0x00,0x38,0x00,0x70,0x00,0x70,0x00,0x38,0x00,0x1c,0xe0,0x0f,0xe0,0x07,0xe0,0x1f,0xe0,0x3f,0x00,0x70,0x00,0x70,0x00,0x38,0x00,0x38,0x00,0x70,0x00,0x70,0xe0,0x3f,0xe0,0x1f,0x60,0x60,0xe0,0x70,0xc0,0x39,0x80,0x1f,0x00,0x0f,0x00,0x0f,0x80,0x1f,0xc0,0x39,0xe0,0x70,0x60,0x60,0xe0,0x01,0xe0,0x03,0x00,0x67,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x76,0xe0,0x3f,0xe0,0x1f,0x60,0x60,0x60,0x70,0x60,0x78,0x60,0x7c,0x60,0x6e,0x60,0x67,0xe0,0x63,0xe0,0x61,0xe0,0x60,0x60,0x60, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x66,0x00,0x76,0x00,0x3e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x78,0x00,0x78,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x60,0x0e,0x70,0xfc,0x3f,0xf8,0x1f,0xff,0xff,0xff,0xff,0x00,0x00,0x18,0x60,0x1c,0x60,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x00,0xff,0xff,0xff,0xff,0x18,0x78,0x1c,0x7c,0x0e,0x6e,0x06,0x67,0x86,0x63,0xce,0x61,0xfc,0x60,0x78,0x60,0xff,0xff,0xff,0xff,0x06,0x60,0x06,0x60,0x86,0x61,0x86,0x61,0x86,0x61,0xce,0x73,0xfc,0x3f,0x78,0x1e,0xff,0xff,0xff,0xff,0x80,0x07,0xc0,0x07,0xe0,0x06,0x70,0x06,0x38,0x06,0x1c,0x06,0xfe,0x7f,0xfe,0x7f,0xff,0xff,0xff,0xff,0x7e,0x18,0x7e,0x38,0x66,0x70,0x66,0x60,0x66,0x60,0xe6,0x70,0xc6,0x3f,0x86,0x1f,0xff,0xff,0xff,0xff,0xf8,0x1f,0xfc,0x3f,0x8e,0x71,0x86,0x61,0x86,0x61,0x8e,0x73,0x1c,0x3f,0x18,0x1e,0xff,0xff,0xff,0xff,0x06,0x00,0x06,0x00,0x86,0x7f,0xc6,0x7f,0xe6,0x00,0x76,0x00,0x3e,0x00,0x1e,0x00,0xff,0xff,0xff,0xff,0x78,0x1e,0xfc,0x3f,0xce,0x73,0x86,0x61,0x86,0x61,0xce,0x73,0xfc,0x3f,0x78,0x1e,0xff,0xff,0xff,0xff,0x78,0x00,0xfc,0x00,0xce,0x61,0x86,0x71,0x86,0x39,0xce,0x1d,0xfc,0x0f,0xf8,0x07,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x30,0x0c,0x78,0x1e,0x78,0x1e,0x30,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x7f,0xf0,0x7f,0xb8,0x01,0x9c,0x01,0x8e,0x01,0x8e,0x01,0x9c,0x01,0xb8,0x01,0xf0,0x7f,0xe0,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0xce,0x73,0xfc,0x3f,0x78,0x1e,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x0e,0x70,0x1c,0x38,0x18,0x18,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x06,0x60,0x0e,0x70,0x1c,0x38,0x38,0x1c,0xf0,0x0f,0xe0,0x07,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x06,0x00,0x06,0x00,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x86,0x61,0x86,0x61,0x86,0x61,0x8e,0x71,0x9c,0x7f,0x98,0x3f,0xfe,0x7f,0xfe,0x7f,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x18,0x00,0x38,0x00,0x70,0x00,0x60,0x06,0x60,0x06,0x70,0xfe,0x3f,0xfe,0x1f,0x06,0x00,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0x80,0x01,0xc0,0x03,0xe0,0x07,0x70,0x0e,0x38,0x1c,0x1c,0x38,0x0e,0x70,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0xfe,0x7f,0xfe,0x7f,0x1c,0x00,0x38,0x00,0xf0,0x01,0xf0,0x01,0x38,0x00,0x1c,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x70,0x00,0xe0,0x00,0xc0,0x01,0x80,0x03,0x00,0x07,0x00,0x0e,0xfe,0x7f,0xfe,0x7f,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x0e,0x70,0xfc,0x3f,0xf8,0x1f,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0xce,0x01,0xfc,0x00,0x78,0x00,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x66,0x06,0x6e,0x06,0x3c,0x0e,0x38,0xfc,0x7f,0xf8,0x67,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x07,0x86,0x0f,0x86,0x1d,0xce,0x39,0xfc,0x70,0x78,0x60,0x78,0x18,0xfc,0x38,0xce,0x71,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x8e,0x73,0x1c,0x3f,0x18,0x1e,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0xfe,0x1f,0xfe,0x3f,0x00,0x70,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x70,0xfe,0x3f,0xfe,0x1f,0xfe,0x07,0xfe,0x0f,0x00,0x1c,0x00,0x38,0x00,0x70,0x00,0x70,0x00,0x38,0x00,0x1c,0xfe,0x0f,0xfe,0x07,0xfe,0x1f,0xfe,0x3f,0x00,0x70,0x00,0x70,0x00,0x3e,0x00,0x3e,0x00,0x70,0x00,0x70,0xfe,0x3f,0xfe,0x1f,0x1e,0x78,0x3e,0x7c,0x70,0x0e,0xe0,0x07,0xc0,0x03,0xc0,0x03,0xe0,0x07,0x70,0x0e,0x3e,0x7c,0x1e,0x78,0x7e,0x00,0xfe,0x00,0xc0,0x01,0x80,0x03,0x00,0x7f,0x00,0x7f,0x80,0x03,0xc0,0x01,0xfe,0x00,0x7e,0x00,0x06,0x78,0x06,0x7c,0x06,0x6e,0x06,0x67,0x86,0x63,0xc6,0x61,0xe6,0x60,0x76,0x60,0x3e,0x60,0x1e,0x60,0x00,0x18,0x00,0x3c,0x60,0x7e,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0x66,0xc0,0x7f,0x80,0x7f,0xfe,0x7f,0xfe,0x7f,0x80,0x61,0xc0,0x61,0xe0,0x60,0x60,0x60,0x60,0x60,0xe0,0x70,0xc0,0x3f,0x80,0x1f,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x70,0x00,0x38,0x00,0x18,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x60,0x60,0xe0,0x60,0xc0,0x61,0x80,0x61,0xfe,0x7f,0xfe,0x7f,0x80,0x1f,0xc0,0x3f,0xe0,0x76,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0x66,0xc0,0x07,0x80,0x07,0x80,0x01,0x80,0x01,0xf8,0x7f,0xfc,0x7f,0x8e,0x01,0x86,0x01,0x06,0x00,0x0e,0x00,0x1c,0x00,0x18,0x00,0xe0,0x01,0xf0,0x03,0x38,0x67,0x18,0x66,0x18,0x66,0x18,0x66,0x18,0x66,0x18,0x76,0xf8,0x3f,0xf8,0x1f,0xfe,0x7f,0xfe,0x7f,0x80,0x01,0xc0,0x01,0xe0,0x00,0x60,0x00,0x60,0x00,0xe0,0x00,0xc0,0x7f,0x80,0x7f,0x60,0x60,0x60,0x60,0xe6,0x7f,0xe6,0x7f,0x00,0x60,0x00,0x60,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x18,0x00,0x38,0x00,0x70,0x00,0x60,0x60,0x60,0x60,0x70,0xe6,0x3f,0xe6,0x1f,0xff,0xff,0xff,0xff,0xfe,0x7f,0xfe,0x7f,0x00,0x06,0x00,0x0f,0x80,0x1f,0xc0,0x39,0xe0,0x70,0x60,0x60,0xff,0xff,0xff,0xff,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0x7f,0xe0,0x7f,0x60,0x00,0xe0,0x00,0xc0,0x07,0xc0,0x07,0xe0,0x00,0xe0,0x00,0xc0,0x7f,0x80,0x7f,0xe0,0x7f,0xe0,0x7f,0x80,0x01,0xc0,0x01,0xe0,0x00,0x60,0x00,0x60,0x00,0xe0,0x00,0xc0,0x7f,0x80,0x7f,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xe0,0x70,0xc0,0x3f,0x80,0x1f,0xe0,0x7f,0xe0,0x7f,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0xe0,0x07,0xc0,0x03,0x80,0x01,0x80,0x01,0xc0,0x03,0xe0,0x07,0x60,0x06,0x60,0x06,0x60,0x06,0xc0,0x07,0x80,0x07,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x80,0x01,0xc0,0x01,0xe0,0x00,0x60,0x00,0x60,0x00,0xe0,0x00,0xc0,0x01,0x80,0x01,0x80,0x61,0xc0,0x63,0xe0,0x67,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x7e,0x00,0x3c,0x00,0x18,0x60,0x00,0x60,0x00,0xf8,0x1f,0xf8,0x3f,0x60,0x70,0x60,0x60,0x00,0x60,0x00,0x70,0x00,0x38,0x00,0x18,0xe0,0x1f,0xe0,0x3f,0x00,0x70,0x00,0x60,0x00,0x60,0x00,0x70,0x00,0x38,0x00,0x18,0xe0,0x7f,0xe0,0x7f,0xe0,0x07,0xe0,0x0f,0x00,0x1c,0x00,0x38,0x00,0x70,0x00,0x70,0x00,0x38,0x00,0x1c,0xe0,0x0f,0xe0,0x07,0xe0,0x1f,0xe0,0x3f,0x00,0x70,0x00,0x70,0x00,0x38,0x00,0x38,0x00,0x70,0x00,0x70,0xe0,0x3f,0xe0,0x1f,0x60,0x60,0xe0,0x70,0xc0,0x39,0x80,0x1f,0x00,0x0f,0x00,0x0f,0x80,0x1f,0xc0,0x39,0xe0,0x70,0x60,0x60,0xe0,0x01,0xe0,0x03,0x00,0x67,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x76,0xe0,0x3f,0xe0,0x1f,0x60,0x60,0x60,0x70,0x60,0x78,0x60,0x7c,0x60,0x6e,0x60,0x67,0xe0,0x63,0xe0,0x61,0xe0,0x60,0x60,0x60, diff --git a/radio/src/fonts/stdv2/font_10x14_compressed.png b/radio/src/fonts/stdv2/font_10x14_compressed.png new file mode 100644 index 0000000000000000000000000000000000000000..a240544ee55d225bf35c52e88733b7096a039793 GIT binary patch literal 1508 zcmVe zSad^gZEa<4bO1wgWnpw>WFU8GbZ8()Nlj2!fese{00m4*L_t(|+U;Fi)9WAzOgsJm zf4S%B%-3{GfTt&u**sXepmJmRHzTxv7WlpE z1l3=)p=0%pAUX_tzMivH+xM-XVU z6qYO{+TK~D*z1=W!z?4=8Q+X2qxKj+Gf{XC#M^fme)qCkJ^uXukM!%!G$7-fQ7_|) z>KFQ6J8p}C{pG8|Ic4Rm))!BEz5k*!_^XJ`z&*t-dDnxL-zY9bzgJ|lBTu3C-6r%a zScQ-+?PY?oWqhOl(e}{ikjzpG;%81H%Ww3z-v7}+YZ>28M%L4oBE#t6pGse%+S^t3 zQETG~PR$4}%c(0WI;YPQCyhjVQN{$#L|JQkGBRNq&d=}IA{_crjbKE-SItDIoYOO1 z>*?QFhVhP$%I@QwW%?BOG26{R`KLN7;H|Co;PfavkIvU>H@s&RtnbZsa?p82*O1S~ zp&s9CN98Fs>9@whzyFimUlRk@NfPth_rLYoxBV zmyKf`wNXaT61nu8!BH*UZ{)^i7!mMQ96pQ82zyWcTO-O<>q+gLGKP9otEt2zi@qSi z*l2xRE%@nWzGw1cGJ|Mv>aB@KOOeqe8Cg`zFy$$4pOmF=Cecc6+y6Fl$xi$Vc;WRwIbMH_{VE z&sXWq${m%cdCX+ykq2s*@4lnr)vwB+1}w@|O1J9P0!6LrRY2@XlzFScPV0!7ujNXx z>~X8E^qT3z3_H}$=^fWu(Rvv~?yh9(`igpG&-t46-H)|%b)ocb3pH{(W27usy9aHz zTLHWd#nt8$y~d(4sh)^EtG~0l>lt5GtzUJG7<#*gC5UBfK_iW8#-S#qeOQGDt9Mkg zohP+CygMrFSp_Q|D0fsCf2a4(J9AOb+FJcJBGm%QoX1N3Ax0;oHb?cftITbzRVQ&R z`m$ptHS#NJ79)mi0Y`s{i>(oBbphRi^j@wV3kF4Z@qJzrI_X5~CU zth}*68OhJ&i^wCQ7L={IMb;>??v(Oivy`JYEPQ9{m=*kE?`c%vxK-!adQla2FnEaG zHj#w~v*0Hx@v{RSFmh6yxl!He+MA~m4`%P9cg&+Y^j0gFr=5rs@>i?}^_)`7=ywPH zTJ>m$`K%g)S6_CNwPK7tzF4;dGscI?6#0L*6Udph^bubQ+>IA%JlOFHq^pcoVb@u? zDe)lNhR_*QFRiN4Vk6mlF7~;i9DTnEP!|;y?Sls@ye}Lo^3Xrn;$C7D|4@1W0000< KMNUMnLSTY!==o&; literal 0 HcmV?d00001 diff --git a/radio/src/fonts/std_fw/font_10x14_extra.lbm b/radio/src/fonts/stdv2/font_10x14_extra.lbm similarity index 100% rename from radio/src/fonts/std_fw/font_10x14_extra.lbm rename to radio/src/fonts/stdv2/font_10x14_extra.lbm diff --git a/radio/src/fonts/std_fw/font_10x14_extra.png b/radio/src/fonts/stdv2/font_10x14_extra.png similarity index 100% rename from radio/src/fonts/std_fw/font_10x14_extra.png rename to radio/src/fonts/stdv2/font_10x14_extra.png diff --git a/radio/src/fonts/std_pw/font_cz_04x06.lbm b/radio/src/fonts/stdv2/font_cz_04x06.lbm similarity index 100% rename from radio/src/fonts/std_pw/font_cz_04x06.lbm rename to radio/src/fonts/stdv2/font_cz_04x06.lbm diff --git a/radio/src/fonts/std_pw/font_cz_04x06.png b/radio/src/fonts/stdv2/font_cz_04x06.png similarity index 100% rename from radio/src/fonts/std_pw/font_cz_04x06.png rename to radio/src/fonts/stdv2/font_cz_04x06.png diff --git a/radio/src/fonts/std_pw/font_cz_05x07.lbm b/radio/src/fonts/stdv2/font_cz_05x07.lbm similarity index 100% rename from radio/src/fonts/std_pw/font_cz_05x07.lbm rename to radio/src/fonts/stdv2/font_cz_05x07.lbm diff --git a/radio/src/fonts/std_pw/font_cz_05x07.png b/radio/src/fonts/stdv2/font_cz_05x07.png similarity index 100% rename from radio/src/fonts/std_pw/font_cz_05x07.png rename to radio/src/fonts/stdv2/font_cz_05x07.png diff --git a/radio/src/fonts/std_pw/font_cz_08x10.lbm b/radio/src/fonts/stdv2/font_cz_08x10.lbm similarity index 100% rename from radio/src/fonts/std_pw/font_cz_08x10.lbm rename to radio/src/fonts/stdv2/font_cz_08x10.lbm diff --git a/radio/src/fonts/std_pw/font_cz_08x10.png b/radio/src/fonts/stdv2/font_cz_08x10.png similarity index 100% rename from radio/src/fonts/std_pw/font_cz_08x10.png rename to radio/src/fonts/stdv2/font_cz_08x10.png diff --git a/radio/src/fonts/std_pw/font_cz_10x14.lbm b/radio/src/fonts/stdv2/font_cz_10x14.lbm similarity index 100% rename from radio/src/fonts/std_pw/font_cz_10x14.lbm rename to radio/src/fonts/stdv2/font_cz_10x14.lbm diff --git a/radio/src/fonts/std_pw/font_cz_10x14.png b/radio/src/fonts/stdv2/font_cz_10x14.png similarity index 100% rename from radio/src/fonts/std_pw/font_cz_10x14.png rename to radio/src/fonts/stdv2/font_cz_10x14.png diff --git a/radio/src/fonts/std_pw/font_de_04x06.lbm b/radio/src/fonts/stdv2/font_de_04x06.lbm similarity index 100% rename from radio/src/fonts/std_pw/font_de_04x06.lbm rename to radio/src/fonts/stdv2/font_de_04x06.lbm diff --git a/radio/src/fonts/std_pw/font_de_04x06.png b/radio/src/fonts/stdv2/font_de_04x06.png similarity index 100% rename from radio/src/fonts/std_pw/font_de_04x06.png rename to radio/src/fonts/stdv2/font_de_04x06.png diff --git a/radio/src/fonts/std_pw/font_de_05x07.lbm b/radio/src/fonts/stdv2/font_de_05x07.lbm similarity index 100% rename from radio/src/fonts/std_pw/font_de_05x07.lbm rename to radio/src/fonts/stdv2/font_de_05x07.lbm diff --git a/radio/src/fonts/std_pw/font_de_05x07.png b/radio/src/fonts/stdv2/font_de_05x07.png similarity index 100% rename from radio/src/fonts/std_pw/font_de_05x07.png rename to radio/src/fonts/stdv2/font_de_05x07.png diff --git a/radio/src/fonts/std_pw/font_de_08x10.lbm b/radio/src/fonts/stdv2/font_de_08x10.lbm similarity index 100% rename from radio/src/fonts/std_pw/font_de_08x10.lbm rename to radio/src/fonts/stdv2/font_de_08x10.lbm diff --git a/radio/src/fonts/std_pw/font_de_08x10.png b/radio/src/fonts/stdv2/font_de_08x10.png similarity index 100% rename from radio/src/fonts/std_pw/font_de_08x10.png rename to radio/src/fonts/stdv2/font_de_08x10.png diff --git a/radio/src/fonts/std_pw/font_de_10x14.lbm b/radio/src/fonts/stdv2/font_de_10x14.lbm similarity index 100% rename from radio/src/fonts/std_pw/font_de_10x14.lbm rename to radio/src/fonts/stdv2/font_de_10x14.lbm diff --git a/radio/src/fonts/std_pw/font_de_10x14.png b/radio/src/fonts/stdv2/font_de_10x14.png similarity index 100% rename from radio/src/fonts/std_pw/font_de_10x14.png rename to radio/src/fonts/stdv2/font_de_10x14.png diff --git a/radio/src/fonts/std_pw/font_es_04x06.lbm b/radio/src/fonts/stdv2/font_es_04x06.lbm similarity index 100% rename from radio/src/fonts/std_pw/font_es_04x06.lbm rename to radio/src/fonts/stdv2/font_es_04x06.lbm diff --git a/radio/src/fonts/std_pw/font_es_04x06.png b/radio/src/fonts/stdv2/font_es_04x06.png similarity index 100% rename from radio/src/fonts/std_pw/font_es_04x06.png rename to radio/src/fonts/stdv2/font_es_04x06.png diff --git a/radio/src/fonts/std_pw/font_es_05x07.lbm b/radio/src/fonts/stdv2/font_es_05x07.lbm similarity index 100% rename from radio/src/fonts/std_pw/font_es_05x07.lbm rename to radio/src/fonts/stdv2/font_es_05x07.lbm diff --git a/radio/src/fonts/std_pw/font_es_05x07.png b/radio/src/fonts/stdv2/font_es_05x07.png similarity index 100% rename from radio/src/fonts/std_pw/font_es_05x07.png rename to radio/src/fonts/stdv2/font_es_05x07.png diff --git a/radio/src/fonts/std_pw/font_es_08x10.lbm b/radio/src/fonts/stdv2/font_es_08x10.lbm similarity index 100% rename from radio/src/fonts/std_pw/font_es_08x10.lbm rename to radio/src/fonts/stdv2/font_es_08x10.lbm diff --git a/radio/src/fonts/std_pw/font_es_08x10.png b/radio/src/fonts/stdv2/font_es_08x10.png similarity index 100% rename from radio/src/fonts/std_pw/font_es_08x10.png rename to radio/src/fonts/stdv2/font_es_08x10.png diff --git a/radio/src/fonts/std_pw/font_es_10x14.lbm b/radio/src/fonts/stdv2/font_es_10x14.lbm similarity index 100% rename from radio/src/fonts/std_pw/font_es_10x14.lbm rename to radio/src/fonts/stdv2/font_es_10x14.lbm diff --git a/radio/src/fonts/std_pw/font_es_10x14.png b/radio/src/fonts/stdv2/font_es_10x14.png similarity index 100% rename from radio/src/fonts/std_pw/font_es_10x14.png rename to radio/src/fonts/stdv2/font_es_10x14.png diff --git a/radio/src/fonts/std_pw/font_fr_04x06.lbm b/radio/src/fonts/stdv2/font_fr_04x06.lbm similarity index 100% rename from radio/src/fonts/std_pw/font_fr_04x06.lbm rename to radio/src/fonts/stdv2/font_fr_04x06.lbm diff --git a/radio/src/fonts/std_pw/font_fr_04x06.png b/radio/src/fonts/stdv2/font_fr_04x06.png similarity index 100% rename from radio/src/fonts/std_pw/font_fr_04x06.png rename to radio/src/fonts/stdv2/font_fr_04x06.png diff --git a/radio/src/fonts/std_pw/font_fr_05x07.lbm b/radio/src/fonts/stdv2/font_fr_05x07.lbm similarity index 100% rename from radio/src/fonts/std_pw/font_fr_05x07.lbm rename to radio/src/fonts/stdv2/font_fr_05x07.lbm diff --git a/radio/src/fonts/std_pw/font_fr_05x07.png b/radio/src/fonts/stdv2/font_fr_05x07.png similarity index 100% rename from radio/src/fonts/std_pw/font_fr_05x07.png rename to radio/src/fonts/stdv2/font_fr_05x07.png diff --git a/radio/src/fonts/std_pw/font_fr_08x10.lbm b/radio/src/fonts/stdv2/font_fr_08x10.lbm similarity index 100% rename from radio/src/fonts/std_pw/font_fr_08x10.lbm rename to radio/src/fonts/stdv2/font_fr_08x10.lbm diff --git a/radio/src/fonts/std_pw/font_fr_08x10.png b/radio/src/fonts/stdv2/font_fr_08x10.png similarity index 100% rename from radio/src/fonts/std_pw/font_fr_08x10.png rename to radio/src/fonts/stdv2/font_fr_08x10.png diff --git a/radio/src/fonts/std_pw/font_fr_10x14.lbm b/radio/src/fonts/stdv2/font_fr_10x14.lbm similarity index 100% rename from radio/src/fonts/std_pw/font_fr_10x14.lbm rename to radio/src/fonts/stdv2/font_fr_10x14.lbm diff --git a/radio/src/fonts/std_pw/font_fr_10x14.png b/radio/src/fonts/stdv2/font_fr_10x14.png similarity index 100% rename from radio/src/fonts/std_pw/font_fr_10x14.png rename to radio/src/fonts/stdv2/font_fr_10x14.png diff --git a/radio/src/fonts/std_pw/font_it_04x06.lbm b/radio/src/fonts/stdv2/font_it_04x06.lbm similarity index 100% rename from radio/src/fonts/std_pw/font_it_04x06.lbm rename to radio/src/fonts/stdv2/font_it_04x06.lbm diff --git a/radio/src/fonts/std_pw/font_it_04x06.png b/radio/src/fonts/stdv2/font_it_04x06.png similarity index 100% rename from radio/src/fonts/std_pw/font_it_04x06.png rename to radio/src/fonts/stdv2/font_it_04x06.png diff --git a/radio/src/fonts/std_pw/font_it_05x07.lbm b/radio/src/fonts/stdv2/font_it_05x07.lbm similarity index 100% rename from radio/src/fonts/std_pw/font_it_05x07.lbm rename to radio/src/fonts/stdv2/font_it_05x07.lbm diff --git a/radio/src/fonts/std_pw/font_it_05x07.png b/radio/src/fonts/stdv2/font_it_05x07.png similarity index 100% rename from radio/src/fonts/std_pw/font_it_05x07.png rename to radio/src/fonts/stdv2/font_it_05x07.png diff --git a/radio/src/fonts/std_pw/font_it_08x10.lbm b/radio/src/fonts/stdv2/font_it_08x10.lbm similarity index 100% rename from radio/src/fonts/std_pw/font_it_08x10.lbm rename to radio/src/fonts/stdv2/font_it_08x10.lbm diff --git a/radio/src/fonts/std_pw/font_it_08x10.png b/radio/src/fonts/stdv2/font_it_08x10.png similarity index 100% rename from radio/src/fonts/std_pw/font_it_08x10.png rename to radio/src/fonts/stdv2/font_it_08x10.png diff --git a/radio/src/fonts/std_pw/font_it_10x14.lbm b/radio/src/fonts/stdv2/font_it_10x14.lbm similarity index 100% rename from radio/src/fonts/std_pw/font_it_10x14.lbm rename to radio/src/fonts/stdv2/font_it_10x14.lbm diff --git a/radio/src/fonts/std_pw/font_it_10x14.png b/radio/src/fonts/stdv2/font_it_10x14.png similarity index 100% rename from radio/src/fonts/std_pw/font_it_10x14.png rename to radio/src/fonts/stdv2/font_it_10x14.png diff --git a/radio/src/fonts/std_pw/font_pl_04x06.lbm b/radio/src/fonts/stdv2/font_pl_04x06.lbm similarity index 100% rename from radio/src/fonts/std_pw/font_pl_04x06.lbm rename to radio/src/fonts/stdv2/font_pl_04x06.lbm diff --git a/radio/src/fonts/std_pw/font_pl_04x06.png b/radio/src/fonts/stdv2/font_pl_04x06.png similarity index 100% rename from radio/src/fonts/std_pw/font_pl_04x06.png rename to radio/src/fonts/stdv2/font_pl_04x06.png diff --git a/radio/src/fonts/std_pw/font_pl_05x07.lbm b/radio/src/fonts/stdv2/font_pl_05x07.lbm similarity index 100% rename from radio/src/fonts/std_pw/font_pl_05x07.lbm rename to radio/src/fonts/stdv2/font_pl_05x07.lbm diff --git a/radio/src/fonts/std_pw/font_pl_05x07.png b/radio/src/fonts/stdv2/font_pl_05x07.png similarity index 100% rename from radio/src/fonts/std_pw/font_pl_05x07.png rename to radio/src/fonts/stdv2/font_pl_05x07.png diff --git a/radio/src/fonts/std_pw/font_pl_08x10.lbm b/radio/src/fonts/stdv2/font_pl_08x10.lbm similarity index 100% rename from radio/src/fonts/std_pw/font_pl_08x10.lbm rename to radio/src/fonts/stdv2/font_pl_08x10.lbm diff --git a/radio/src/fonts/std_pw/font_pl_08x10.png b/radio/src/fonts/stdv2/font_pl_08x10.png similarity index 100% rename from radio/src/fonts/std_pw/font_pl_08x10.png rename to radio/src/fonts/stdv2/font_pl_08x10.png diff --git a/radio/src/fonts/std_pw/font_pl_10x14.lbm b/radio/src/fonts/stdv2/font_pl_10x14.lbm similarity index 100% rename from radio/src/fonts/std_pw/font_pl_10x14.lbm rename to radio/src/fonts/stdv2/font_pl_10x14.lbm diff --git a/radio/src/fonts/std_pw/font_pl_10x14.png b/radio/src/fonts/stdv2/font_pl_10x14.png similarity index 100% rename from radio/src/fonts/std_pw/font_pl_10x14.png rename to radio/src/fonts/stdv2/font_pl_10x14.png diff --git a/radio/src/fonts/std_fw/font_pt_04x06.lbm b/radio/src/fonts/stdv2/font_pt_04x06.lbm similarity index 100% rename from radio/src/fonts/std_fw/font_pt_04x06.lbm rename to radio/src/fonts/stdv2/font_pt_04x06.lbm diff --git a/radio/src/fonts/std_fw/font_pt_04x06.png b/radio/src/fonts/stdv2/font_pt_04x06.png similarity index 100% rename from radio/src/fonts/std_fw/font_pt_04x06.png rename to radio/src/fonts/stdv2/font_pt_04x06.png diff --git a/radio/src/fonts/std_pw/font_pt_05x07.lbm b/radio/src/fonts/stdv2/font_pt_05x07.lbm similarity index 100% rename from radio/src/fonts/std_pw/font_pt_05x07.lbm rename to radio/src/fonts/stdv2/font_pt_05x07.lbm diff --git a/radio/src/fonts/std_pw/font_pt_05x07.png b/radio/src/fonts/stdv2/font_pt_05x07.png similarity index 100% rename from radio/src/fonts/std_pw/font_pt_05x07.png rename to radio/src/fonts/stdv2/font_pt_05x07.png diff --git a/radio/src/fonts/std_pw/font_pt_08x10.lbm b/radio/src/fonts/stdv2/font_pt_08x10.lbm similarity index 100% rename from radio/src/fonts/std_pw/font_pt_08x10.lbm rename to radio/src/fonts/stdv2/font_pt_08x10.lbm diff --git a/radio/src/fonts/std_pw/font_pt_08x10.png b/radio/src/fonts/stdv2/font_pt_08x10.png similarity index 100% rename from radio/src/fonts/std_pw/font_pt_08x10.png rename to radio/src/fonts/stdv2/font_pt_08x10.png diff --git a/radio/src/fonts/std_pw/font_pt_10x14.lbm b/radio/src/fonts/stdv2/font_pt_10x14.lbm similarity index 100% rename from radio/src/fonts/std_pw/font_pt_10x14.lbm rename to radio/src/fonts/stdv2/font_pt_10x14.lbm diff --git a/radio/src/fonts/std_pw/font_pt_10x14.png b/radio/src/fonts/stdv2/font_pt_10x14.png similarity index 100% rename from radio/src/fonts/std_pw/font_pt_10x14.png rename to radio/src/fonts/stdv2/font_pt_10x14.png diff --git a/radio/src/fonts/std_pw/font_se_04x06.lbm b/radio/src/fonts/stdv2/font_se_04x06.lbm similarity index 100% rename from radio/src/fonts/std_pw/font_se_04x06.lbm rename to radio/src/fonts/stdv2/font_se_04x06.lbm diff --git a/radio/src/fonts/std_pw/font_se_04x06.png b/radio/src/fonts/stdv2/font_se_04x06.png similarity index 100% rename from radio/src/fonts/std_pw/font_se_04x06.png rename to radio/src/fonts/stdv2/font_se_04x06.png diff --git a/radio/src/fonts/std_pw/font_se_05x07.lbm b/radio/src/fonts/stdv2/font_se_05x07.lbm similarity index 100% rename from radio/src/fonts/std_pw/font_se_05x07.lbm rename to radio/src/fonts/stdv2/font_se_05x07.lbm diff --git a/radio/src/fonts/std_pw/font_se_05x07.png b/radio/src/fonts/stdv2/font_se_05x07.png similarity index 100% rename from radio/src/fonts/std_pw/font_se_05x07.png rename to radio/src/fonts/stdv2/font_se_05x07.png diff --git a/radio/src/fonts/std_pw/font_se_08x10.lbm b/radio/src/fonts/stdv2/font_se_08x10.lbm similarity index 100% rename from radio/src/fonts/std_pw/font_se_08x10.lbm rename to radio/src/fonts/stdv2/font_se_08x10.lbm diff --git a/radio/src/fonts/std_pw/font_se_08x10.png b/radio/src/fonts/stdv2/font_se_08x10.png similarity index 100% rename from radio/src/fonts/std_pw/font_se_08x10.png rename to radio/src/fonts/stdv2/font_se_08x10.png diff --git a/radio/src/fonts/std_pw/font_se_10x14.lbm b/radio/src/fonts/stdv2/font_se_10x14.lbm similarity index 100% rename from radio/src/fonts/std_pw/font_se_10x14.lbm rename to radio/src/fonts/stdv2/font_se_10x14.lbm diff --git a/radio/src/fonts/std_pw/font_se_10x14.png b/radio/src/fonts/stdv2/font_se_10x14.png similarity index 100% rename from radio/src/fonts/std_pw/font_se_10x14.png rename to radio/src/fonts/stdv2/font_se_10x14.png diff --git a/radio/src/lcd.cpp b/radio/src/lcd.cpp index 6aa7eebcd..c689d7a36 100644 --- a/radio/src/lcd.cpp +++ b/radio/src/lcd.cpp @@ -300,6 +300,9 @@ void lcd_putcAtt(xcoord_t x, uint8_t y, const unsigned char c, LcdFlags flags) LCD_BYTE_FILTER(r, 0xff, b >> (8-ym8)); } } +#endif +#if !defined(CPUM64) + if (y && inv) *p |= BITMASK((y-1)%8); #endif if (i == 6) { lcdLastFW++; @@ -310,6 +313,9 @@ void lcd_putcAtt(xcoord_t x, uint8_t y, const unsigned char c, LcdFlags flags) #endif if (pLCD_W-6) break; if (c >= 0x20) { lcd_putcAtt(x, y, c, mode); x += lcdLastFW; } + else if (setx) { + x = c; + setx = false; + } else if (c == 0x1F) { - x++; - x |= 0x0F; + setx = true; } else { x += (c*FW/2); From 7e567fdb153be54625bea1356be6b48ba3f31dc7 Mon Sep 17 00:00:00 2001 From: mhotar Date: Thu, 19 Dec 2013 23:16:09 +0100 Subject: [PATCH 020/308] STD and STDV2 fonts defined in lcd.cpp --- radio/src/lcd.cpp | 238 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 236 insertions(+), 2 deletions(-) diff --git a/radio/src/lcd.cpp b/radio/src/lcd.cpp index c689d7a36..cb1f7e838 100644 --- a/radio/src/lcd.cpp +++ b/radio/src/lcd.cpp @@ -85,6 +85,8 @@ void lcd_img(xcoord_t x, uint8_t y, const pm_uchar * img, uint8_t idx, LcdFlags } uint8_t lcdLastPos; + +#if defined(PWFONT) uint8_t lcdLastFW; void lcd_putcAtt(xcoord_t x, uint8_t y, const unsigned char c, LcdFlags flags) @@ -332,6 +334,198 @@ void lcd_putcAtt(xcoord_t x, uint8_t y, const unsigned char c, LcdFlags flags) } } +#else + +void lcd_putcAtt(xcoord_t x, uint8_t y, const unsigned char c, LcdFlags flags) +{ + uint8_t *p = &displayBuf[ y / 8 * LCD_W + x ]; + +#if defined(CPUARM) + const pm_uchar *q = (c < 0xC0) ? &font_5x7[(c-0x20)*5+4] : &font_5x7_extra[(c-0xC0)*5+4]; +#else + const pm_uchar *q = &font_5x7[(c-0x20)*5+4]; +#endif + + bool inv = false; + if (flags & BLINK) { + if (BLINK_ON_PHASE) { + if (flags & INVERS) + inv = true; + else + return; + } + } + else if (flags & INVERS) { + inv = true; + } + + if (flags & DBLSIZE) { + // To save space only some DBLSIZE chars are available + // c has to be remapped. All non existing chars mapped to 0 (space) + unsigned char c_remapped; + + if (c>=',' && c<=':') + c_remapped = c - ',' + 1; + else if (c>='A' && c<='Z') + c_remapped = c - 'A' + 16; + else if (c>='a' && c<='z') + c_remapped = c - 'a' + 42; + else if (c=='_') + c_remapped = 4; +#if defined(CPUARM) + else if (c>= 128 ) + c_remapped = c - 60; +#endif + else + c_remapped = 0; + + /* each letter consists of ten top bytes followed by + * by ten bottom bytes (20 bytes per * char) */ + q = &font_10x14[((uint16_t)c_remapped)*20]; + for (int8_t i=11; i>=0; i--) { + if ((flags & CONDENSED) && i<=1) break; + uint8_t b1=0, b2=0; + if (i>1) { + b1 = pgm_read_byte(q++); /*top byte*/ + b2 = pgm_read_byte(q++); /*top byte*/ + } + if (inv) { + b1 = ~b1; + b2 = ~b2; + } + if(&p[LCD_W+1] < DISPLAY_END) { + ASSERT_IN_DISPLAY(p); + ASSERT_IN_DISPLAY(p+LCD_W); + LCD_BYTE_FILTER(p, 0, b1); + LCD_BYTE_FILTER(p+LCD_W, 0, b2); + p++; + } + } + } +#if defined(CPUARM) + else if (flags & MIDSIZE) { + /* each letter consists of ten top bytes followed by + * by ten bottom bytes (20 bytes per * char) */ + q = &font_8x10[((uint16_t)c-0x20)*16]; + for (int8_t i=9; i>=0; i--) { + uint8_t b1=0, b2=0; + if ((flags & CONDENSED) && i<=1) break; + if (i!=0 && i!=9) { + b1 = pgm_read_byte(q++); /*top byte*/ + b2 = pgm_read_byte(q++); /*top byte*/ + } + if (inv) { + b1 = ~b1; + b2 = ~b2; + } + uint8_t ym8 = (y & 0x07); + if (&p[LCD_W+1] < DISPLAY_END) { + LCD_BYTE_FILTER(p, ~(0xff << ym8), b1 << ym8); + uint8_t *r = p + LCD_W; + if (r> (8-ym8)), b1 >> (8-ym8)); + LCD_BYTE_FILTER(r, ~(0x0f << ym8), (b2&0x0f) << ym8); + if (ym8) { + r = r + LCD_W; + if (r> (8-ym8)), (b2&0x0f) >> (8-ym8)); + } + } + p++; + } + } + } + else if (flags & SMLSIZE) { + q = (c < 0xC0) ? &font_4x6[(c-0x20)*5+4] : &font_4x6_extra[(c-0xC0)*5+4]; + uint8_t ym8 = (y & 0x07); + p += 4; + for (int8_t i=4; i>=0; i--) { + uint8_t b = pgm_read_byte(q--); + if (inv) b = ~b & 0x7f; + if (p> (8-ym8)), b >> (8-ym8)); + } + } + p--; + } + } + else if (flags & TINSIZE) { + q = &font_3x5[((uint16_t)c-0x2D)*3+2]; + uint8_t ym8 = (y & 0x07); + p += 3; + for (int8_t i=3; i>=0; i--) { + uint8_t b = (i!=3 ? pgm_read_byte(q--) : 0); + if (inv) b = ~b & 0x3f; + if (p> (8-ym8)), b >> (8-ym8)); + } + } + p--; + } + } +#endif + else { + uint8_t condense=0; + + if (flags & CONDENSED) { + *p = inv ? ~0 : 0; + condense=1; + } + + uint8_t ym8 = (y & 0x07); + p += 5; + for (uint8_t i=6, b=0; i>0; i--, b=pgm_read_byte(q--)) { + if (inv) b = ~b; + + if (condense && i==2) { + /*condense the letter by skipping column 4 */ + continue; + } + + if (p> (8-ym8)), b >> (8-ym8)); + } +#if defined(BOLD_FONT) + if (flags & BOLD) { + ASSERT_IN_DISPLAY(p+1); + if (inv) + LCD_BYTE_FILTER(p+1, b << ym8, 0); + else + LCD_BYTE_FILTER(p+1, 0xff, b << ym8); +#if defined(CPUARM) + if (ym8) { + uint8_t *r = p+1 + LCD_W; + if (r> (8-ym8), 0); + else + LCD_BYTE_FILTER(r, 0xff, b >> (8-ym8)); + } + } +#endif + } +#endif + } + p--; + } + } +} +#endif + + void lcd_putc(xcoord_t x, uint8_t y, const unsigned char c) { lcd_putcAtt(x, y, c, 0); @@ -363,8 +557,24 @@ void lcd_putsnAtt(xcoord_t x, uint8_t y, const pm_char * s, uint8_t len, LcdFlag if (!c || x>LCD_W-6) break; if (c >= 0x20) { +#if defined(PWFONT) lcd_putcAtt(x, y, c, mode); - x += lcdLastFW; + x += lcdLastFW; +#else +#if defined(CPUARM) + if ((mode & MIDSIZE) && ((c>='a'&&c<='z')||(c>='0'&&c<='9'))) { + lcd_putcAtt(x, y, c, mode); + x-=1; + } + else +#endif + lcd_putcAtt(x, y, c, mode); + x += FW; + if (c == '|') x -= 4; + if (mode&DBLSIZE) x += FW-1; + else if (mode&MIDSIZE) x += FW-3; + else if (mode&SMLSIZE) x -= 1; +#endif } else if (setx) { x = c; @@ -408,7 +618,11 @@ void lcd_putsLeft(uint8_t y, const pm_char * s) void lcd_outhex4(xcoord_t x, uint8_t y, uint16_t val) { +#if defined(PWFONT) x+=FWNUM*4+1; +#else + x+=FWNUM*4; +#endif for(int i=0; i<4; i++) { x-=FWNUM; @@ -489,8 +703,12 @@ void lcd_outdezNAtt(xcoord_t x, uint8_t y, lcdint_t val, LcdFlags flags, uint8_t } lcdLastPos = x; +#if defined(PWFONT) x -= fw; if (dblsize) x++; +#else + x -= fw + 1; +#endif for (uint8_t i=1; i<=len; i++) { div_t qr = div((uint16_t)val, 10); @@ -498,7 +716,11 @@ void lcd_outdezNAtt(xcoord_t x, uint8_t y, lcdint_t val, LcdFlags flags, uint8_t LcdFlags f = flags; #if !defined(PCBTARANIS) if (dblsize) { +#if defined(PWFONT) if (c=='1' && i==len && xn>x+10) { x+=1; } +#else + if (c=='1' && i==len && xn>x+10) { x+=2; f|=CONDENSED; } +#endif if ((uint16_t)val >= 1000) { x+=FWNUM; f&=~DBLSIZE; } } #endif @@ -506,7 +728,11 @@ void lcd_outdezNAtt(xcoord_t x, uint8_t y, lcdint_t val, LcdFlags flags, uint8_t if (mode==i) { flags &= ~PREC2; // TODO not needed but removes 20bytes, could be improved for sure, check asm if (dblsize) { +#if defined(PWFONT) xn = x - 2; +#else + xn = x; +#endif if (c>='1' && c<='3') ln++; uint8_t tn = (qr.quot) % 10; if (tn==2 || tn==4) { @@ -528,12 +754,18 @@ void lcd_outdezNAtt(xcoord_t x, uint8_t y, lcdint_t val, LcdFlags flags, uint8_t x--; } else { +#if defined(PWFONT) x -= 2; +#else + x--; +#endif lcd_plot(x, y+6); if ((flags&INVERS) && ((~flags & BLINK) || BLINK_ON_PHASE)) { lcd_vline(x, y, 8); } -// x--; +#if !defined(PWFONT) + x--; +#endif } } #if !defined(PCBTARANIS) @@ -558,7 +790,9 @@ void lcd_outdezNAtt(xcoord_t x, uint8_t y, lcdint_t val, LcdFlags flags, uint8_t lcd_hline(xn, y+2*FH-2, ln); } } +#if defined(PWFONT) x--; +#endif if (neg) lcd_putcAtt(x, y, '-', flags); } From 1244b7642cf5200474e6524fff2a56a687479bee Mon Sep 17 00:00:00 2001 From: mhotar Date: Fri, 20 Dec 2013 02:12:48 +0100 Subject: [PATCH 021/308] Only one font-engine used, costs only 30B for M64 Tab function removed, used absolute X adressing instead (0x1F, X-coord) --- radio/src/Makefile | 11 +- radio/src/fonts/std/font_04x06.lbm | 12 +- radio/src/fonts/std/font_04x06.png | Bin 519 -> 575 bytes radio/src/fonts/std/font_05x07.lbm | 10 +- radio/src/fonts/std/font_05x07.png | Bin 570 -> 616 bytes radio/src/fonts/std/font_08x10.lbm | 10 +- radio/src/fonts/std/font_08x10.png | Bin 767 -> 823 bytes radio/src/fonts/std/font_10x14.lbm | 8 +- radio/src/fonts/std/font_10x14.png | Bin 1123 -> 1174 bytes radio/src/fonts/std/font_10x14_compressed.lbm | 2 +- radio/src/fonts/std/font_10x14_compressed.png | Bin 1500 -> 1508 bytes radio/src/fonts/std/font_cz_04x06.lbm | 2 +- radio/src/fonts/std/font_cz_04x06.png | Bin 220 -> 223 bytes radio/src/fonts/std/font_cz_05x07.lbm | 2 +- radio/src/fonts/std/font_cz_05x07.png | Bin 223 -> 243 bytes radio/src/fonts/std/font_cz_08x10.lbm | 2 +- radio/src/fonts/std/font_cz_08x10.png | Bin 292 -> 314 bytes radio/src/fonts/std/font_cz_10x14.lbm | 2 +- radio/src/fonts/std/font_cz_10x14.png | Bin 410 -> 423 bytes radio/src/fonts/std/font_de_04x06.lbm | 2 +- radio/src/fonts/std/font_de_04x06.png | Bin 179 -> 178 bytes radio/src/fonts/std/font_de_08x10.lbm | 2 +- radio/src/fonts/std/font_de_08x10.png | Bin 202 -> 209 bytes radio/src/fonts/std/font_de_10x14.lbm | 2 +- radio/src/fonts/std/font_de_10x14.png | Bin 254 -> 266 bytes radio/src/fonts/std/font_es_04x06.lbm | 2 +- radio/src/fonts/std/font_es_04x06.png | Bin 144 -> 157 bytes radio/src/fonts/std/font_es_08x10.lbm | 2 +- radio/src/fonts/std/font_es_08x10.png | Bin 168 -> 168 bytes radio/src/fonts/std/font_fr_04x06.lbm | 2 +- radio/src/fonts/std/font_fr_04x06.png | Bin 3610 -> 3575 bytes radio/src/fonts/std/font_fr_05x07.lbm | 2 +- radio/src/fonts/std/font_fr_05x07.png | Bin 163 -> 176 bytes radio/src/fonts/std/font_fr_08x10.lbm | 2 +- radio/src/fonts/std/font_fr_08x10.png | Bin 3647 -> 3619 bytes radio/src/fonts/std/font_fr_10x14.lbm | 2 +- radio/src/fonts/std/font_fr_10x14.png | Bin 231 -> 246 bytes radio/src/fonts/std/font_it_04x06.lbm | 2 +- radio/src/fonts/std/font_it_04x06.png | Bin 145 -> 157 bytes radio/src/fonts/std/font_it_08x10.lbm | 2 +- radio/src/fonts/std/font_it_08x10.png | Bin 158 -> 171 bytes radio/src/fonts/std/font_pl_04x06.lbm | 2 +- radio/src/fonts/std/font_pl_04x06.png | Bin 177 -> 230 bytes radio/src/fonts/std/font_pl_05x07.lbm | 2 +- radio/src/fonts/std/font_pl_05x07.png | Bin 196 -> 251 bytes radio/src/fonts/std/font_pl_08x10.lbm | 2 +- radio/src/fonts/std/font_pl_08x10.png | Bin 266 -> 326 bytes radio/src/fonts/std/font_pl_10x14.lbm | 2 +- radio/src/fonts/std/font_pl_10x14.png | Bin 368 -> 422 bytes radio/src/fonts/std/font_pt_05x07.lbm | 2 +- radio/src/fonts/std/font_pt_05x07.png | Bin 246 -> 247 bytes radio/src/fonts/std/font_pt_08x10.lbm | 2 +- radio/src/fonts/std/font_pt_08x10.png | Bin 315 -> 326 bytes radio/src/fonts/std/font_pt_10x14.lbm | 2 +- radio/src/fonts/std/font_pt_10x14.png | Bin 442 -> 452 bytes radio/src/fonts/std/font_se_04x06.lbm | 2 +- radio/src/fonts/std/font_se_04x06.png | Bin 157 -> 169 bytes radio/src/fonts/std/font_se_08x10.lbm | 2 +- radio/src/fonts/std/font_se_08x10.png | Bin 190 -> 208 bytes radio/src/fonts/stdv2/font_03x05.lbm | 1 - radio/src/fonts/stdv2/font_03x05.png | Bin 222 -> 0 bytes radio/src/fonts/stdv2/font_04x06.lbm | 6 - radio/src/fonts/stdv2/font_04x06.png | Bin 575 -> 0 bytes radio/src/fonts/stdv2/font_04x06_extra.lbm | 1 - radio/src/fonts/stdv2/font_04x06_extra.png | Bin 159 -> 0 bytes radio/src/fonts/stdv2/font_05x07.lbm | 6 - radio/src/fonts/stdv2/font_05x07.png | Bin 616 -> 0 bytes radio/src/fonts/stdv2/font_05x07_extra.lbm | 1 - radio/src/fonts/stdv2/font_05x07_extra.png | Bin 161 -> 0 bytes radio/src/fonts/stdv2/font_08x10.lbm | 6 - radio/src/fonts/stdv2/font_08x10.png | Bin 823 -> 0 bytes radio/src/fonts/stdv2/font_10x14.lbm | 6 - radio/src/fonts/stdv2/font_10x14.png | Bin 1174 -> 0 bytes .../src/fonts/stdv2/font_10x14_compressed.lbm | 1 - .../src/fonts/stdv2/font_10x14_compressed.png | Bin 1508 -> 0 bytes radio/src/fonts/stdv2/font_10x14_extra.lbm | 1 - radio/src/fonts/stdv2/font_10x14_extra.png | Bin 229 -> 0 bytes radio/src/fonts/stdv2/font_cz_04x06.lbm | 1 - radio/src/fonts/stdv2/font_cz_04x06.png | Bin 223 -> 0 bytes radio/src/fonts/stdv2/font_cz_05x07.lbm | 1 - radio/src/fonts/stdv2/font_cz_05x07.png | Bin 243 -> 0 bytes radio/src/fonts/stdv2/font_cz_08x10.lbm | 1 - radio/src/fonts/stdv2/font_cz_08x10.png | Bin 314 -> 0 bytes radio/src/fonts/stdv2/font_cz_10x14.lbm | 1 - radio/src/fonts/stdv2/font_cz_10x14.png | Bin 423 -> 0 bytes radio/src/fonts/stdv2/font_de_04x06.lbm | 1 - radio/src/fonts/stdv2/font_de_04x06.png | Bin 178 -> 0 bytes radio/src/fonts/stdv2/font_de_05x07.lbm | 1 - radio/src/fonts/stdv2/font_de_05x07.png | Bin 170 -> 0 bytes radio/src/fonts/stdv2/font_de_08x10.lbm | 1 - radio/src/fonts/stdv2/font_de_08x10.png | Bin 209 -> 0 bytes radio/src/fonts/stdv2/font_de_10x14.lbm | 1 - radio/src/fonts/stdv2/font_de_10x14.png | Bin 266 -> 0 bytes radio/src/fonts/stdv2/font_es_04x06.lbm | 1 - radio/src/fonts/stdv2/font_es_04x06.png | Bin 157 -> 0 bytes radio/src/fonts/stdv2/font_es_05x07.lbm | 1 - radio/src/fonts/stdv2/font_es_05x07.png | Bin 147 -> 0 bytes radio/src/fonts/stdv2/font_es_08x10.lbm | 1 - radio/src/fonts/stdv2/font_es_08x10.png | Bin 168 -> 0 bytes radio/src/fonts/stdv2/font_es_10x14.lbm | 1 - radio/src/fonts/stdv2/font_es_10x14.png | Bin 177 -> 0 bytes radio/src/fonts/stdv2/font_fr_04x06.lbm | 1 - radio/src/fonts/stdv2/font_fr_04x06.png | Bin 3575 -> 0 bytes radio/src/fonts/stdv2/font_fr_05x07.lbm | 1 - radio/src/fonts/stdv2/font_fr_05x07.png | Bin 176 -> 0 bytes radio/src/fonts/stdv2/font_fr_08x10.lbm | 1 - radio/src/fonts/stdv2/font_fr_08x10.png | Bin 3619 -> 0 bytes radio/src/fonts/stdv2/font_fr_10x14.lbm | 1 - radio/src/fonts/stdv2/font_fr_10x14.png | Bin 246 -> 0 bytes radio/src/fonts/stdv2/font_it_04x06.lbm | 1 - radio/src/fonts/stdv2/font_it_04x06.png | Bin 157 -> 0 bytes radio/src/fonts/stdv2/font_it_05x07.lbm | 1 - radio/src/fonts/stdv2/font_it_05x07.png | Bin 148 -> 0 bytes radio/src/fonts/stdv2/font_it_08x10.lbm | 1 - radio/src/fonts/stdv2/font_it_08x10.png | Bin 171 -> 0 bytes radio/src/fonts/stdv2/font_it_10x14.lbm | 1 - radio/src/fonts/stdv2/font_it_10x14.png | Bin 178 -> 0 bytes radio/src/fonts/stdv2/font_pl_04x06.lbm | 1 - radio/src/fonts/stdv2/font_pl_04x06.png | Bin 230 -> 0 bytes radio/src/fonts/stdv2/font_pl_05x07.lbm | 1 - radio/src/fonts/stdv2/font_pl_05x07.png | Bin 251 -> 0 bytes radio/src/fonts/stdv2/font_pl_08x10.lbm | 1 - radio/src/fonts/stdv2/font_pl_08x10.png | Bin 326 -> 0 bytes radio/src/fonts/stdv2/font_pl_10x14.lbm | 1 - radio/src/fonts/stdv2/font_pl_10x14.png | Bin 422 -> 0 bytes radio/src/fonts/stdv2/font_pt_04x06.lbm | 1 - radio/src/fonts/stdv2/font_pt_04x06.png | Bin 130 -> 0 bytes radio/src/fonts/stdv2/font_pt_05x07.lbm | 1 - radio/src/fonts/stdv2/font_pt_05x07.png | Bin 247 -> 0 bytes radio/src/fonts/stdv2/font_pt_08x10.lbm | 1 - radio/src/fonts/stdv2/font_pt_08x10.png | Bin 326 -> 0 bytes radio/src/fonts/stdv2/font_pt_10x14.lbm | 1 - radio/src/fonts/stdv2/font_pt_10x14.png | Bin 452 -> 0 bytes radio/src/fonts/stdv2/font_se_04x06.lbm | 1 - radio/src/fonts/stdv2/font_se_04x06.png | Bin 169 -> 0 bytes radio/src/fonts/stdv2/font_se_05x07.lbm | 1 - radio/src/fonts/stdv2/font_se_05x07.png | Bin 160 -> 0 bytes radio/src/fonts/stdv2/font_se_08x10.lbm | 1 - radio/src/fonts/stdv2/font_se_08x10.png | Bin 208 -> 0 bytes radio/src/fonts/stdv2/font_se_10x14.lbm | 1 - radio/src/fonts/stdv2/font_se_10x14.png | Bin 233 -> 0 bytes radio/src/lcd.cpp | 292 ++---------------- radio/src/lcd.h | 1 + 143 files changed, 69 insertions(+), 386 deletions(-) delete mode 100644 radio/src/fonts/stdv2/font_03x05.lbm delete mode 100644 radio/src/fonts/stdv2/font_03x05.png delete mode 100644 radio/src/fonts/stdv2/font_04x06.lbm delete mode 100644 radio/src/fonts/stdv2/font_04x06.png delete mode 100644 radio/src/fonts/stdv2/font_04x06_extra.lbm delete mode 100644 radio/src/fonts/stdv2/font_04x06_extra.png delete mode 100644 radio/src/fonts/stdv2/font_05x07.lbm delete mode 100644 radio/src/fonts/stdv2/font_05x07.png delete mode 100644 radio/src/fonts/stdv2/font_05x07_extra.lbm delete mode 100644 radio/src/fonts/stdv2/font_05x07_extra.png delete mode 100644 radio/src/fonts/stdv2/font_08x10.lbm delete mode 100644 radio/src/fonts/stdv2/font_08x10.png delete mode 100644 radio/src/fonts/stdv2/font_10x14.lbm delete mode 100644 radio/src/fonts/stdv2/font_10x14.png delete mode 100644 radio/src/fonts/stdv2/font_10x14_compressed.lbm delete mode 100644 radio/src/fonts/stdv2/font_10x14_compressed.png delete mode 100644 radio/src/fonts/stdv2/font_10x14_extra.lbm delete mode 100644 radio/src/fonts/stdv2/font_10x14_extra.png delete mode 100644 radio/src/fonts/stdv2/font_cz_04x06.lbm delete mode 100644 radio/src/fonts/stdv2/font_cz_04x06.png delete mode 100644 radio/src/fonts/stdv2/font_cz_05x07.lbm delete mode 100644 radio/src/fonts/stdv2/font_cz_05x07.png delete mode 100644 radio/src/fonts/stdv2/font_cz_08x10.lbm delete mode 100644 radio/src/fonts/stdv2/font_cz_08x10.png delete mode 100644 radio/src/fonts/stdv2/font_cz_10x14.lbm delete mode 100644 radio/src/fonts/stdv2/font_cz_10x14.png delete mode 100644 radio/src/fonts/stdv2/font_de_04x06.lbm delete mode 100644 radio/src/fonts/stdv2/font_de_04x06.png delete mode 100644 radio/src/fonts/stdv2/font_de_05x07.lbm delete mode 100644 radio/src/fonts/stdv2/font_de_05x07.png delete mode 100644 radio/src/fonts/stdv2/font_de_08x10.lbm delete mode 100644 radio/src/fonts/stdv2/font_de_08x10.png delete mode 100644 radio/src/fonts/stdv2/font_de_10x14.lbm delete mode 100644 radio/src/fonts/stdv2/font_de_10x14.png delete mode 100644 radio/src/fonts/stdv2/font_es_04x06.lbm delete mode 100644 radio/src/fonts/stdv2/font_es_04x06.png delete mode 100644 radio/src/fonts/stdv2/font_es_05x07.lbm delete mode 100644 radio/src/fonts/stdv2/font_es_05x07.png delete mode 100644 radio/src/fonts/stdv2/font_es_08x10.lbm delete mode 100644 radio/src/fonts/stdv2/font_es_08x10.png delete mode 100644 radio/src/fonts/stdv2/font_es_10x14.lbm delete mode 100644 radio/src/fonts/stdv2/font_es_10x14.png delete mode 100644 radio/src/fonts/stdv2/font_fr_04x06.lbm delete mode 100644 radio/src/fonts/stdv2/font_fr_04x06.png delete mode 100644 radio/src/fonts/stdv2/font_fr_05x07.lbm delete mode 100644 radio/src/fonts/stdv2/font_fr_05x07.png delete mode 100644 radio/src/fonts/stdv2/font_fr_08x10.lbm delete mode 100644 radio/src/fonts/stdv2/font_fr_08x10.png delete mode 100644 radio/src/fonts/stdv2/font_fr_10x14.lbm delete mode 100644 radio/src/fonts/stdv2/font_fr_10x14.png delete mode 100644 radio/src/fonts/stdv2/font_it_04x06.lbm delete mode 100644 radio/src/fonts/stdv2/font_it_04x06.png delete mode 100644 radio/src/fonts/stdv2/font_it_05x07.lbm delete mode 100644 radio/src/fonts/stdv2/font_it_05x07.png delete mode 100644 radio/src/fonts/stdv2/font_it_08x10.lbm delete mode 100644 radio/src/fonts/stdv2/font_it_08x10.png delete mode 100644 radio/src/fonts/stdv2/font_it_10x14.lbm delete mode 100644 radio/src/fonts/stdv2/font_it_10x14.png delete mode 100644 radio/src/fonts/stdv2/font_pl_04x06.lbm delete mode 100644 radio/src/fonts/stdv2/font_pl_04x06.png delete mode 100644 radio/src/fonts/stdv2/font_pl_05x07.lbm delete mode 100644 radio/src/fonts/stdv2/font_pl_05x07.png delete mode 100644 radio/src/fonts/stdv2/font_pl_08x10.lbm delete mode 100644 radio/src/fonts/stdv2/font_pl_08x10.png delete mode 100644 radio/src/fonts/stdv2/font_pl_10x14.lbm delete mode 100644 radio/src/fonts/stdv2/font_pl_10x14.png delete mode 100644 radio/src/fonts/stdv2/font_pt_04x06.lbm delete mode 100644 radio/src/fonts/stdv2/font_pt_04x06.png delete mode 100644 radio/src/fonts/stdv2/font_pt_05x07.lbm delete mode 100644 radio/src/fonts/stdv2/font_pt_05x07.png delete mode 100644 radio/src/fonts/stdv2/font_pt_08x10.lbm delete mode 100644 radio/src/fonts/stdv2/font_pt_08x10.png delete mode 100644 radio/src/fonts/stdv2/font_pt_10x14.lbm delete mode 100644 radio/src/fonts/stdv2/font_pt_10x14.png delete mode 100644 radio/src/fonts/stdv2/font_se_04x06.lbm delete mode 100644 radio/src/fonts/stdv2/font_se_04x06.png delete mode 100644 radio/src/fonts/stdv2/font_se_05x07.lbm delete mode 100644 radio/src/fonts/stdv2/font_se_05x07.png delete mode 100644 radio/src/fonts/stdv2/font_se_08x10.lbm delete mode 100644 radio/src/fonts/stdv2/font_se_08x10.png delete mode 100644 radio/src/fonts/stdv2/font_se_10x14.lbm delete mode 100644 radio/src/fonts/stdv2/font_se_10x14.png diff --git a/radio/src/Makefile b/radio/src/Makefile index 04dcfbe41..81f99085b 100644 --- a/radio/src/Makefile +++ b/radio/src/Makefile @@ -140,8 +140,8 @@ BOLD = YES BATTGRAPH = NO # FONT TYPE -# Values = STD, STDV2, SQT5 -FONT = STDV2 +# Values = STD, SQT5 +FONT = STD # PPM center adjustable # Values = YES, NO @@ -778,13 +778,10 @@ ifneq ($(PCB), TARANIS) endif endif -ifeq ($(FONT), STD) - INCDIRS += fonts/std -else +ifneq ($(FONT), STD) INCDIRS += fonts/$(shell sh -c "echo $(FONT) | tr '[:upper:]' '[:lower:]'") - INCDIRS += fonts/stdv2 - CPPDEFS += -DPWFONT endif +INCDIRS += fonts/std ifeq ($(THR_TRACE), YES) CPPDEFS += -DTHRTRACE diff --git a/radio/src/fonts/std/font_04x06.lbm b/radio/src/fonts/std/font_04x06.lbm index d4c2686e5..aaa1f30d6 100644 --- a/radio/src/fonts/std/font_04x06.lbm +++ b/radio/src/fonts/std/font_04x06.lbm @@ -1,6 +1,6 @@ -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2f,0x00,0x00,0x00,0x07,0x00,0x07,0x00,0x14,0x3e,0x14,0x3e,0x14,0x04,0x2a,0x3e,0x2a,0x10,0x13,0x08,0x04,0x32,0x00,0x14,0x2a,0x14,0x20,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x1e,0x21,0x00,0x00,0x00,0x21,0x1e,0x00,0x00,0x00,0x2a,0x1c,0x2a,0x00,0x08,0x08,0x3e,0x08,0x08,0x00,0x40,0x30,0x10,0x00,0x08,0x08,0x08,0x08,0x00,0x00,0x30,0x30,0x00,0x00,0x10,0x08,0x04,0x02,0x00, -0x00,0x1e,0x21,0x1e,0x00,0x00,0x22,0x3f,0x20,0x00,0x22,0x31,0x29,0x26,0x00,0x11,0x25,0x25,0x1b,0x00,0x0c,0x0a,0x3f,0x08,0x00,0x17,0x25,0x25,0x19,0x00,0x1e,0x25,0x25,0x18,0x00,0x01,0x31,0x0d,0x03,0x00,0x1a,0x25,0x25,0x1a,0x00,0x06,0x29,0x29,0x1e,0x00,0x00,0x36,0x36,0x00,0x00,0x40,0x36,0x16,0x00,0x00,0x00,0x08,0x14,0x22,0x00,0x14,0x14,0x14,0x14,0x00,0x00,0x22,0x14,0x08,0x00,0x00,0x02,0x29,0x06,0x00, -0x00,0x02,0x05,0x02,0x00,0x3e,0x09,0x09,0x3e,0x00,0x3f,0x25,0x25,0x1a,0x00,0x1e,0x21,0x21,0x12,0x00,0x3f,0x21,0x21,0x1e,0x00,0x3f,0x25,0x25,0x21,0x00,0x3f,0x05,0x05,0x01,0x00,0x1e,0x21,0x29,0x3a,0x00,0x3f,0x04,0x04,0x3f,0x00,0x00,0x21,0x3f,0x21,0x00,0x10,0x20,0x20,0x1f,0x00,0x3f,0x0c,0x12,0x21,0x00,0x3f,0x20,0x20,0x20,0x00,0x3f,0x02,0x04,0x02,0x3f,0x3f,0x06,0x18,0x3f,0x00,0x1e,0x21,0x21,0x1e,0x00, -0x3f,0x09,0x09,0x06,0x00,0x1e,0x31,0x21,0x5e,0x00,0x3f,0x09,0x19,0x26,0x00,0x12,0x25,0x29,0x12,0x00,0x00,0x01,0x3f,0x01,0x00,0x1f,0x20,0x20,0x1f,0x00,0x0f,0x30,0x30,0x0f,0x00,0x3f,0x18,0x0c,0x18,0x3f,0x33,0x0c,0x0c,0x33,0x00,0x00,0x07,0x38,0x07,0x00,0x31,0x29,0x25,0x23,0x00,0x00,0x3f,0x21,0x21,0x00,0x02,0x04,0x08,0x10,0x00,0x00,0x21,0x21,0x3f,0x00,0x00,0x02,0x01,0x02,0x00,0x20,0x20,0x20,0x20,0x00, -0x00,0x01,0x02,0x00,0x00,0x18,0x24,0x14,0x3c,0x00,0x3f,0x24,0x24,0x18,0x00,0x18,0x24,0x24,0x00,0x00,0x18,0x24,0x24,0x3f,0x00,0x18,0x34,0x2c,0x08,0x00,0x08,0x3e,0x09,0x02,0x00,0x28,0x54,0x54,0x4c,0x00,0x3f,0x04,0x04,0x38,0x00,0x00,0x24,0x3d,0x20,0x00,0x00,0x20,0x40,0x3d,0x00,0x3f,0x08,0x14,0x20,0x00,0x00,0x21,0x3f,0x20,0x00,0x3c,0x08,0x38,0x0c,0x38,0x3c,0x04,0x04,0x38,0x00,0x18,0x24,0x24,0x18,0x00, -0x7c,0x24,0x24,0x18,0x00,0x18,0x24,0x24,0x7c,0x00,0x3c,0x04,0x04,0x08,0x00,0x28,0x2c,0x34,0x14,0x00,0x04,0x1f,0x24,0x20,0x00,0x1c,0x20,0x20,0x3c,0x00,0x00,0x1c,0x20,0x1c,0x00,0x3c,0x30,0x18,0x30,0x3c,0x24,0x18,0x18,0x24,0x00,0x0c,0x50,0x20,0x1c,0x00,0x24,0x34,0x2c,0x24,0x00,0x00,0x04,0x1e,0x21,0x00,0x00,0x00,0x3f,0x00,0x00,0x00,0x21,0x1e,0x04,0x00,0x08,0x2a,0x1c,0x08,0x00,0x00,0x08,0x1c,0x2a,0x08, +0x00,0x00,0x7f,0x7f,0x7f,0x00,0x00,0x2f,0x7f,0x7f,0x00,0x07,0x00,0x07,0x7f,0x14,0x3e,0x14,0x3e,0x14,0x04,0x2a,0x3e,0x2a,0x10,0x13,0x08,0x04,0x32,0x7f,0x14,0x2a,0x14,0x20,0x7f,0x00,0x00,0x07,0x7f,0x7f,0x00,0x1e,0x21,0x7f,0x7f,0x00,0x21,0x1e,0x7f,0x7f,0x00,0x2a,0x1c,0x2a,0x7f,0x08,0x08,0x3e,0x08,0x08,0x00,0x40,0x30,0x10,0x7f,0x08,0x08,0x08,0x08,0x7f,0x00,0x30,0x30,0x7f,0x7f,0x10,0x08,0x04,0x02,0x7f, +0x1e,0x21,0x21,0x1e,0x7f,0x00,0x22,0x3f,0x20,0x7f,0x22,0x31,0x29,0x26,0x7f,0x11,0x25,0x25,0x1b,0x7f,0x0c,0x0a,0x3f,0x08,0x7f,0x17,0x25,0x25,0x19,0x7f,0x1e,0x25,0x25,0x18,0x7f,0x01,0x31,0x0d,0x03,0x7f,0x1a,0x25,0x25,0x1a,0x7f,0x06,0x29,0x29,0x1e,0x7f,0x00,0x36,0x36,0x00,0x7f,0x40,0x36,0x16,0x00,0x7f,0x00,0x08,0x14,0x22,0x7f,0x14,0x14,0x14,0x14,0x7f,0x00,0x22,0x14,0x08,0x7f,0x00,0x02,0x29,0x06,0x7f, +0x00,0x02,0x05,0x02,0x7f,0x3e,0x09,0x09,0x3e,0x7f,0x3f,0x25,0x25,0x1a,0x7f,0x1e,0x21,0x21,0x12,0x7f,0x3f,0x21,0x21,0x1e,0x7f,0x3f,0x25,0x25,0x21,0x7f,0x3f,0x05,0x05,0x01,0x7f,0x1e,0x21,0x29,0x3a,0x7f,0x3f,0x04,0x04,0x3f,0x7f,0x00,0x21,0x3f,0x21,0x7f,0x10,0x20,0x20,0x1f,0x7f,0x3f,0x0c,0x12,0x21,0x7f,0x3f,0x20,0x20,0x20,0x7f,0x3f,0x02,0x04,0x02,0x3f,0x3f,0x06,0x18,0x3f,0x7f,0x1e,0x21,0x21,0x1e,0x7f, +0x3f,0x09,0x09,0x06,0x7f,0x1e,0x31,0x21,0x5e,0x7f,0x3f,0x09,0x19,0x26,0x7f,0x12,0x25,0x29,0x12,0x7f,0x00,0x01,0x3f,0x01,0x7f,0x1f,0x20,0x20,0x1f,0x7f,0x0f,0x30,0x30,0x0f,0x7f,0x3f,0x18,0x0c,0x18,0x3f,0x33,0x0c,0x0c,0x33,0x7f,0x00,0x07,0x38,0x07,0x7f,0x31,0x29,0x25,0x23,0x7f,0x00,0x3f,0x21,0x21,0x7f,0x02,0x04,0x08,0x10,0x7f,0x00,0x21,0x21,0x3f,0x7f,0x00,0x02,0x01,0x02,0x7f,0x20,0x20,0x20,0x20,0x7f, +0x00,0x01,0x02,0x00,0x7f,0x18,0x24,0x14,0x3c,0x7f,0x3f,0x24,0x24,0x18,0x7f,0x18,0x24,0x24,0x7f,0x7f,0x18,0x24,0x24,0x3f,0x7f,0x18,0x34,0x2c,0x08,0x7f,0x08,0x3e,0x09,0x02,0x7f,0x28,0x54,0x54,0x4c,0x7f,0x3f,0x04,0x04,0x38,0x7f,0x24,0x3d,0x20,0x7f,0x7f,0x20,0x40,0x3d,0x7f,0x7f,0x3f,0x08,0x14,0x20,0x7f,0x21,0x3f,0x20,0x7f,0x7f,0x3c,0x08,0x38,0x0c,0x38,0x3c,0x04,0x04,0x38,0x7f,0x18,0x24,0x24,0x18,0x7f, +0x7c,0x24,0x24,0x18,0x7f,0x18,0x24,0x24,0x7c,0x7f,0x3c,0x04,0x04,0x08,0x7f,0x28,0x2c,0x34,0x14,0x7f,0x04,0x1f,0x24,0x20,0x7f,0x1c,0x20,0x20,0x3c,0x7f,0x1c,0x20,0x1c,0x7f,0x7f,0x3c,0x30,0x18,0x30,0x3c,0x24,0x18,0x18,0x24,0x7f,0x0c,0x50,0x20,0x1c,0x7f,0x24,0x34,0x2c,0x24,0x7f,0x00,0x04,0x1e,0x21,0x7f,0x00,0x00,0x3f,0x00,0x7f,0x00,0x21,0x1e,0x04,0x7f,0x08,0x2a,0x1c,0x08,0x7f,0x00,0x08,0x1c,0x2a,0x08, diff --git a/radio/src/fonts/std/font_04x06.png b/radio/src/fonts/std/font_04x06.png index 40e4ae99584e633c50029932e2690a0f0b57ccf8..b3fe5bc1dfe5987b83a65f9ac3c49a653b05449e 100644 GIT binary patch delta 532 zcmV+v0_**U1iu83Hh%$POGiWihy@);00009a7bBm000XU000XU0RWnu7ytkO2XskI zMF-ss2o?w-{wpOb0005MNklNyO@G+19o zEHm9-J&WO(ZN#lR%M|#Tr!gG2;Wdm|X1b?}4 zOL&})vk>5Fv zAz9)qkZGA-G>;)!GS{$cs%dudJqBUcwT2DT*5(44g(7E-T+-&|0huK;b-n!38u^_M zFnqUtUwt2JBE$B%=c?mM4ITl_y*~F`)x2_xS3u?$R(}q!3xWo#OoBkpQSeDM$YSha z_#|;m>Qbt~D$O2-uRsOo5(Extf?RgK`oee3cR+35_r9*4|9$V-==(6{+N`?_BCL#t ze94Tu$qB4ZOAZHcWrhwgNTfdQ%hRo*{Hh=3eE_?l W&O;9&DGd_<0000$Mp!Y|I3K0Q&lJSCxbh8R~K*=xWym5l|RZtWzL9&1}xz;3ts^Pzw(xF zH3oKf;W6)`f8wAWe_Xp^XS5gasM9%V(>JOj-~t*$Q7{zX7Q?wrLJ&;~!+xAgC0k*J z+w+>d%Igt^yA^Ml=S!pN6HwGEQ*=U6#QJ8a>x3wXI1GRM)8)3u!k1f2$2i&Kt?*tJ ztbmdHb^e1n2~iHh%$POGiWihy@);00009a7bBm000XU000XU0RWnu7ytkO2XskI zMF-ss2ooh5X~9$r0005#Nklm5dOqg00`0Kyr4+n? z7FNJEE?tc8|yR6}FA#5(Non^6m00000 LNkvXXu0mjfTuce` delta 501 zcmV`kQ3 z3`sq&Rb0@E0hhXG9tgq~m#e5?9_MupD$w6-t?_w^esrtCrLf8nhf+r)K(w=^8gasc`knpFiPE* rzb-A6%c^RDTk82To4u;a*wOnB51CaF9saF300000NkvXXu0mjfEB);y diff --git a/radio/src/fonts/std/font_08x10.lbm b/radio/src/fonts/std/font_08x10.lbm index 786c5f3d6..a5fcbc547 100644 --- a/radio/src/fonts/std/font_08x10.lbm +++ b/radio/src/fonts/std/font_08x10.lbm @@ -1,6 +1,6 @@ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x05,0xfe,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0x00,0x0e,0x00,0x00,0x00,0x0e,0x00,0x0e,0x00,0x00,0x00,0x00,0x00,0x90,0x00,0xfc,0x03,0xfc,0x03,0x90,0x00,0xfc,0x03,0xfc,0x03,0x90,0x00,0x00,0x00,0x38,0x02,0x7c,0x06,0x64,0x04,0xfe,0x0f,0xc4,0x04,0xcc,0x07,0x88,0x03,0x0c,0x04,0x1e,0x07,0x8c,0x03,0xe0,0x00,0x70,0x00,0x1c,0x03,0x8e,0x07,0x02,0x03,0x80,0x03,0xdc,0x07,0x7e,0x04,0x72,0x04,0xde,0x06,0x8c,0x03,0x80,0x07,0xc0,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0xfc,0x03,0x0e,0x07,0x03,0x0c,0x01,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x08,0x03,0x0c,0x0e,0x07,0xfc,0x03,0xf0,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x50,0x01,0xf0,0x01,0xe0,0x00,0xf0,0x01,0x50,0x01,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0xf8,0x03,0xf8,0x03,0x40,0x00,0x40,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x09,0x80,0x0f,0x80,0x07,0x00,0x00,0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x0e,0x00,0x0e,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x07,0x80,0x03,0xe0,0x00,0x70,0x00,0x1c,0x00,0x0e,0x00,0x02,0x00, -0xfc,0x03,0xfe,0x07,0x02,0x04,0x02,0x04,0xfe,0x07,0xfc,0x03,0x00,0x00,0x00,0x00,0x08,0x04,0x0c,0x04,0xfe,0x07,0xfe,0x07,0x00,0x04,0x00,0x04,0x00,0x00,0x00,0x00,0x0c,0x06,0x0e,0x07,0x82,0x05,0xe2,0x04,0x7e,0x04,0x1c,0x04,0x00,0x00,0x00,0x00,0x0c,0x03,0x0e,0x07,0x22,0x04,0x22,0x04,0xfe,0x07,0xdc,0x03,0x00,0x00,0x00,0x00,0xc0,0x01,0xe0,0x01,0x30,0x01,0xfc,0x07,0xfe,0x07,0x00,0x01,0x00,0x00,0x00,0x00,0x3e,0x03,0x3e,0x07,0x12,0x04,0x12,0x04,0xf2,0x07,0xe2,0x03,0x00,0x00,0x00,0x00,0xf8,0x03,0xfc,0x07,0x26,0x04,0x22,0x04,0xee,0x07,0xcc,0x03,0x00,0x00,0x00,0x00,0x0e,0x00,0x0e,0x00,0xe2,0x07,0xfa,0x07,0x1e,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x9c,0x03,0xfe,0x07,0x62,0x04,0x62,0x04,0xfe,0x07,0x9c,0x03,0x00,0x00,0x00,0x00,0x3c,0x03,0x7e,0x07,0x42,0x04,0x42,0x06,0xfe,0x03,0xfc,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x01,0x9c,0x03,0x9c,0x03,0x08,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x9c,0x09,0x9c,0x0f,0x88,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0xf0,0x00,0x98,0x01,0x0c,0x03,0x06,0x06,0x02,0x04,0x00,0x00,0x20,0x01,0x20,0x01,0x20,0x01,0x20,0x01,0x20,0x01,0x20,0x01,0x20,0x01,0x20,0x01,0x00,0x00,0x02,0x04,0x06,0x06,0x0c,0x03,0x98,0x01,0xf0,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x0c,0x00,0x0e,0x00,0x82,0x06,0xc2,0x06,0x62,0x00,0x3e,0x00,0x1c,0x00, -0x00,0x00,0x00,0x00,0x0c,0x00,0x1e,0x00,0x12,0x00,0x12,0x00,0x1e,0x00,0x0c,0x00,0xf0,0x07,0xf8,0x07,0x8c,0x00,0x86,0x00,0x86,0x00,0x8c,0x00,0xf8,0x07,0xf0,0x07,0xfe,0x07,0xfe,0x07,0x22,0x04,0x22,0x04,0x22,0x04,0x76,0x06,0xdc,0x03,0x88,0x01,0xf8,0x01,0xfc,0x03,0x06,0x06,0x02,0x04,0x02,0x04,0x02,0x04,0x06,0x06,0x0c,0x03,0xfe,0x07,0xfe,0x07,0x02,0x04,0x02,0x04,0x02,0x04,0x06,0x06,0xfc,0x03,0xf8,0x01,0x00,0x00,0xfe,0x07,0xfe,0x07,0x22,0x04,0x22,0x04,0x22,0x04,0x22,0x04,0x02,0x04,0xfe,0x07,0xfe,0x07,0x22,0x00,0x22,0x00,0x22,0x00,0x22,0x00,0x02,0x00,0x02,0x00,0xf8,0x01,0xfc,0x03,0x06,0x06,0x02,0x04,0x02,0x04,0x42,0x04,0xc6,0x07,0xc4,0x03,0xfe,0x07,0xfe,0x07,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0xfe,0x07,0xfe,0x07,0x00,0x00,0x02,0x04,0x02,0x04,0xfe,0x07,0xfe,0x07,0x02,0x04,0x02,0x04,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x06,0x02,0x04,0x02,0x06,0xfe,0x03,0xfe,0x01,0x00,0x00,0xfe,0x07,0xfe,0x07,0x60,0x00,0xf0,0x00,0x98,0x01,0x0c,0x03,0x06,0x06,0x02,0x04,0x00,0x00,0xfe,0x07,0xfe,0x07,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0xfe,0x07,0xfe,0x07,0x0c,0x00,0x78,0x00,0x78,0x00,0x0c,0x00,0xfe,0x07,0xfe,0x07,0xfe,0x07,0xfe,0x07,0x1c,0x00,0x78,0x00,0xe0,0x00,0x80,0x03,0xfe,0x07,0xfe,0x07,0xf8,0x01,0xfc,0x03,0x06,0x06,0x02,0x04,0x02,0x04,0x06,0x06,0xfc,0x03,0xf8,0x01, -0xfe,0x07,0xfe,0x07,0x22,0x00,0x22,0x00,0x22,0x00,0x22,0x00,0x3e,0x00,0x1c,0x00,0xf8,0x01,0xfc,0x03,0x06,0x06,0x82,0x04,0x82,0x05,0x06,0x07,0xfc,0x03,0xf8,0x05,0xfe,0x07,0xfe,0x07,0x62,0x00,0x62,0x00,0xe2,0x00,0xa2,0x01,0x3e,0x07,0x1c,0x06,0x1c,0x02,0x3e,0x06,0x22,0x04,0x22,0x04,0x22,0x04,0x22,0x04,0xe6,0x07,0xc4,0x03,0x02,0x00,0x02,0x00,0x02,0x00,0xfe,0x07,0xfe,0x07,0x02,0x00,0x02,0x00,0x02,0x00,0xfe,0x01,0xfe,0x03,0x00,0x06,0x00,0x04,0x00,0x04,0x00,0x06,0xfe,0x03,0xfe,0x01,0x0e,0x00,0x7e,0x00,0xf0,0x01,0x80,0x07,0x80,0x07,0xf0,0x01,0x7e,0x00,0x0e,0x00,0xfe,0x07,0xfe,0x07,0x00,0x03,0xe0,0x01,0xe0,0x01,0x00,0x03,0xfe,0x07,0xfe,0x07,0x06,0x06,0x0e,0x07,0x98,0x01,0xf0,0x00,0xf0,0x00,0x98,0x01,0x0e,0x07,0x06,0x06,0x06,0x00,0x0e,0x00,0x18,0x00,0xf0,0x07,0xf0,0x07,0x18,0x00,0x0e,0x00,0x06,0x00,0x00,0x00,0x02,0x07,0x82,0x07,0xc2,0x04,0x62,0x04,0x32,0x04,0x1e,0x04,0x0e,0x04,0x00,0x00,0x00,0x00,0xff,0x0f,0xff,0x0f,0x01,0x08,0x01,0x08,0x01,0x08,0x00,0x00,0x02,0x00,0x0e,0x00,0x1c,0x00,0x70,0x00,0xe0,0x00,0x80,0x03,0x00,0x07,0x00,0x04,0x00,0x00,0x00,0x00,0x01,0x08,0x01,0x08,0x01,0x08,0xff,0x0f,0xff,0x0f,0x00,0x00,0x00,0x00,0x18,0x00,0x0c,0x00,0x06,0x00,0x06,0x00,0x0c,0x00,0x18,0x00,0x00,0x00,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08, -0x00,0x00,0x01,0x00,0x03,0x00,0x06,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xa0,0x07,0xb0,0x04,0x90,0x04,0x90,0x02,0xf0,0x07,0xe0,0x07,0x00,0x00,0xfe,0x07,0xfe,0x07,0x20,0x02,0x10,0x04,0x30,0x06,0xe0,0x03,0xc0,0x01,0x00,0x00,0xc0,0x01,0xe0,0x03,0x30,0x06,0x10,0x04,0x10,0x04,0x30,0x06,0x20,0x02,0x00,0x00,0xc0,0x01,0xe0,0x03,0x30,0x06,0x10,0x04,0x20,0x02,0xfe,0x07,0xfe,0x07,0x00,0x00,0xc0,0x01,0xe0,0x03,0xb0,0x06,0x90,0x04,0xb0,0x04,0xe0,0x06,0xc0,0x02,0x00,0x00,0x40,0x00,0x40,0x00,0xfc,0x07,0xfe,0x07,0x42,0x00,0x0e,0x00,0x0c,0x00,0x00,0x00,0x60,0x05,0xf0,0x0f,0x90,0x0a,0x90,0x0a,0xf0,0x0a,0x60,0x0e,0x30,0x04,0x00,0x00,0xfe,0x07,0xfe,0x07,0x20,0x00,0x10,0x00,0x30,0x00,0xe0,0x07,0xc0,0x07,0x00,0x00,0x00,0x04,0x10,0x04,0xf6,0x07,0xf6,0x07,0x00,0x04,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x0f,0x00,0x08,0x10,0x08,0x10,0x08,0xf6,0x0f,0xf6,0x07,0x00,0x00,0x00,0x00,0xfe,0x07,0xfe,0x07,0xc0,0x01,0x60,0x03,0x30,0x06,0x00,0x04,0x00,0x00,0x00,0x04,0x02,0x04,0xfe,0x07,0xfe,0x07,0x00,0x04,0x00,0x04,0x00,0x00,0x00,0x00,0xf0,0x07,0xe0,0x07,0x10,0x00,0xe0,0x07,0x10,0x00,0xf0,0x07,0xe0,0x07,0x00,0x00,0xf0,0x07,0xf0,0x07,0x20,0x00,0x10,0x00,0x30,0x00,0xe0,0x07,0xc0,0x07,0x00,0x00,0xc0,0x01,0xe0,0x03,0x30,0x06,0x10,0x04,0x30,0x06,0xe0,0x03,0xc0,0x01,0x00,0x00, -0xf0,0x0f,0xf0,0x0f,0x10,0x01,0x10,0x01,0xb0,0x01,0xe0,0x00,0xc0,0x00,0x00,0x00,0xc0,0x00,0xe0,0x00,0xb0,0x01,0x10,0x01,0x10,0x01,0xf0,0x0f,0xf0,0x0f,0x00,0x00,0x10,0x00,0xf0,0x07,0xe0,0x07,0x30,0x00,0x10,0x00,0x30,0x00,0x20,0x00,0x00,0x00,0x60,0x02,0xf0,0x06,0x90,0x04,0x90,0x04,0x90,0x04,0xb0,0x07,0x20,0x03,0x00,0x00,0x10,0x00,0x10,0x00,0xfc,0x03,0xfc,0x07,0x10,0x04,0x10,0x06,0x00,0x02,0x00,0x00,0xf0,0x01,0xf0,0x03,0x00,0x06,0x00,0x04,0x00,0x02,0xf0,0x07,0xf0,0x07,0x00,0x00,0x30,0x00,0xf0,0x00,0xc0,0x03,0x00,0x07,0xc0,0x03,0xf0,0x00,0x30,0x00,0x00,0x00,0xf0,0x03,0xf0,0x07,0x00,0x06,0xc0,0x03,0x00,0x06,0xf0,0x07,0xf0,0x03,0x00,0x00,0x10,0x04,0x30,0x06,0x60,0x03,0xc0,0x01,0x60,0x03,0x30,0x06,0x10,0x04,0x00,0x00,0xf0,0x04,0xf0,0x0c,0x00,0x09,0x00,0x09,0x80,0x0c,0xf0,0x07,0xf0,0x03,0x00,0x00,0x10,0x06,0x10,0x07,0x90,0x05,0xd0,0x04,0x70,0x04,0x30,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0xfe,0x07,0x9f,0x0f,0x01,0x08,0x01,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x07,0xfe,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x08,0x01,0x08,0x9f,0x0f,0xfe,0x07,0x60,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x64,0x02,0x68,0x01,0xf0,0x00,0x60,0x00,0x00,0x00,0x60,0x00,0xf0,0x00,0x68,0x01,0x64,0x02,0x60,0x00,0x60,0x00,0x60,0x00,0x00,0x00, +0xfc,0x03,0xfe,0x07,0x02,0x04,0x02,0x04,0xfe,0x07,0xfc,0x03,0xff,0x0f,0xff,0x0f,0x08,0x04,0x0c,0x04,0xfe,0x07,0xfe,0x07,0x00,0x04,0x00,0x04,0xff,0x0f,0xff,0x0f,0x0c,0x06,0x0e,0x07,0x82,0x05,0xe2,0x04,0x7e,0x04,0x1c,0x04,0xff,0x0f,0xff,0x0f,0x0c,0x03,0x0e,0x07,0x22,0x04,0x22,0x04,0xfe,0x07,0xdc,0x03,0xff,0x0f,0xff,0x0f,0xc0,0x01,0xe0,0x01,0x30,0x01,0xfc,0x07,0xfe,0x07,0x00,0x01,0xff,0x0f,0xff,0x0f,0x3e,0x03,0x3e,0x07,0x12,0x04,0x12,0x04,0xf2,0x07,0xe2,0x03,0xff,0x0f,0xff,0x0f,0xf8,0x03,0xfc,0x07,0x26,0x04,0x22,0x04,0xee,0x07,0xcc,0x03,0xff,0x0f,0xff,0x0f,0x0e,0x00,0x0e,0x00,0xe2,0x07,0xfa,0x07,0x1e,0x00,0x06,0x00,0xff,0x0f,0xff,0x0f,0x9c,0x03,0xfe,0x07,0x62,0x04,0x62,0x04,0xfe,0x07,0x9c,0x03,0xff,0x0f,0xff,0x0f,0x3c,0x03,0x7e,0x07,0x42,0x04,0x42,0x06,0xfe,0x03,0xfc,0x01,0xff,0x0f,0xff,0x0f,0x00,0x00,0x00,0x00,0x08,0x01,0x9c,0x03,0x9c,0x03,0x08,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x9c,0x09,0x9c,0x0f,0x88,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0xf0,0x00,0x98,0x01,0x0c,0x03,0x06,0x06,0x02,0x04,0x00,0x00,0x20,0x01,0x20,0x01,0x20,0x01,0x20,0x01,0x20,0x01,0x20,0x01,0x20,0x01,0x20,0x01,0x00,0x00,0x02,0x04,0x06,0x06,0x0c,0x03,0x98,0x01,0xf0,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x0c,0x00,0x0e,0x00,0x82,0x06,0xc2,0x06,0x62,0x00,0x3e,0x00,0x1c,0x00, +0x00,0x00,0x00,0x00,0x0c,0x00,0x1e,0x00,0x12,0x00,0x12,0x00,0x1e,0x00,0x0c,0x00,0xf0,0x07,0xf8,0x07,0x8c,0x00,0x86,0x00,0x86,0x00,0x8c,0x00,0xf8,0x07,0xf0,0x07,0xfe,0x07,0xfe,0x07,0x22,0x04,0x22,0x04,0x22,0x04,0x76,0x06,0xdc,0x03,0x88,0x01,0xf8,0x01,0xfc,0x03,0x06,0x06,0x02,0x04,0x02,0x04,0x02,0x04,0x06,0x06,0x0c,0x03,0xfe,0x07,0xfe,0x07,0x02,0x04,0x02,0x04,0x02,0x04,0x06,0x06,0xfc,0x03,0xf8,0x01,0xfe,0x07,0xfe,0x07,0x22,0x04,0x22,0x04,0x22,0x04,0x22,0x04,0x02,0x04,0xff,0x0f,0xfe,0x07,0xfe,0x07,0x22,0x00,0x22,0x00,0x22,0x00,0x22,0x00,0x02,0x00,0x02,0x00,0xf8,0x01,0xfc,0x03,0x06,0x06,0x02,0x04,0x02,0x04,0x42,0x04,0xc6,0x07,0xc4,0x03,0xfe,0x07,0xfe,0x07,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0xfe,0x07,0xfe,0x07,0x02,0x04,0x02,0x04,0xfe,0x07,0xfe,0x07,0x02,0x04,0x02,0x04,0xff,0x0f,0xff,0x0f,0x00,0x03,0x00,0x06,0x02,0x04,0x02,0x06,0xfe,0x03,0xfe,0x01,0xff,0x0f,0xff,0x0f,0xfe,0x07,0xfe,0x07,0x60,0x00,0xf0,0x00,0x98,0x01,0x0c,0x03,0x06,0x06,0x02,0x04,0xfe,0x07,0xfe,0x07,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0xff,0x0f,0xfe,0x07,0xfe,0x07,0x0c,0x00,0x78,0x00,0x78,0x00,0x0c,0x00,0xfe,0x07,0xfe,0x07,0xfe,0x07,0xfe,0x07,0x1c,0x00,0x78,0x00,0xe0,0x00,0x80,0x03,0xfe,0x07,0xfe,0x07,0xf8,0x01,0xfc,0x03,0x06,0x06,0x02,0x04,0x02,0x04,0x06,0x06,0xfc,0x03,0xf8,0x01, +0xfe,0x07,0xfe,0x07,0x22,0x00,0x22,0x00,0x22,0x00,0x22,0x00,0x3e,0x00,0x1c,0x00,0xf8,0x01,0xfc,0x03,0x06,0x06,0x82,0x04,0x82,0x05,0x06,0x07,0xfc,0x03,0xf8,0x05,0xfe,0x07,0xfe,0x07,0x62,0x00,0x62,0x00,0xe2,0x00,0xa2,0x01,0x3e,0x07,0x1c,0x06,0x1c,0x02,0x3e,0x06,0x22,0x04,0x22,0x04,0x22,0x04,0x22,0x04,0xe6,0x07,0xc4,0x03,0x02,0x00,0x02,0x00,0x02,0x00,0xfe,0x07,0xfe,0x07,0x02,0x00,0x02,0x00,0x02,0x00,0xfe,0x01,0xfe,0x03,0x00,0x06,0x00,0x04,0x00,0x04,0x00,0x06,0xfe,0x03,0xfe,0x01,0x0e,0x00,0x7e,0x00,0xf0,0x01,0x80,0x07,0x80,0x07,0xf0,0x01,0x7e,0x00,0x0e,0x00,0xfe,0x07,0xfe,0x07,0x00,0x03,0xe0,0x01,0xe0,0x01,0x00,0x03,0xfe,0x07,0xfe,0x07,0x06,0x06,0x0e,0x07,0x98,0x01,0xf0,0x00,0xf0,0x00,0x98,0x01,0x0e,0x07,0x06,0x06,0x06,0x00,0x0e,0x00,0x18,0x00,0xf0,0x07,0xf0,0x07,0x18,0x00,0x0e,0x00,0x06,0x00,0x02,0x07,0x82,0x07,0xc2,0x04,0x62,0x04,0x32,0x04,0x1e,0x04,0x0e,0x04,0xff,0x0f,0x00,0x00,0x00,0x00,0xfe,0x07,0xfe,0x07,0x02,0x04,0x02,0x04,0x02,0x04,0x00,0x00,0x02,0x00,0x0e,0x00,0x1c,0x00,0x70,0x00,0xe0,0x00,0x80,0x03,0x00,0x07,0x00,0x04,0x00,0x00,0x00,0x00,0x02,0x04,0x02,0x04,0x02,0x04,0xfe,0x07,0xfe,0x07,0x00,0x00,0x00,0x00,0x18,0x00,0x0c,0x00,0x06,0x00,0x06,0x00,0x0c,0x00,0x18,0x00,0x00,0x00,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08, +0x00,0x00,0x01,0x00,0x03,0x00,0x06,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xa0,0x07,0xb0,0x04,0x90,0x04,0x90,0x02,0xf0,0x07,0xe0,0x07,0xff,0x0f,0xfe,0x07,0xfe,0x07,0x20,0x02,0x10,0x04,0x30,0x06,0xe0,0x03,0xc0,0x01,0xff,0x0f,0xc0,0x01,0xe0,0x03,0x30,0x06,0x10,0x04,0x10,0x04,0x30,0x06,0x20,0x02,0xff,0x0f,0xc0,0x01,0xe0,0x03,0x30,0x06,0x10,0x04,0x20,0x02,0xfe,0x07,0xfe,0x07,0xff,0x0f,0xc0,0x01,0xe0,0x03,0xb0,0x06,0x90,0x04,0xb0,0x04,0xe0,0x06,0xc0,0x02,0xff,0x0f,0x40,0x00,0x40,0x00,0xfc,0x07,0xfe,0x07,0x42,0x00,0x0e,0x00,0x0c,0x00,0xff,0x0f,0x60,0x05,0xf0,0x0f,0x90,0x0a,0x90,0x0a,0xf0,0x0a,0x60,0x0e,0x30,0x04,0xff,0x0f,0xfe,0x07,0xfe,0x07,0x20,0x00,0x10,0x00,0x30,0x00,0xe0,0x07,0xc0,0x07,0xff,0x0f,0x00,0x04,0x10,0x04,0xf6,0x07,0xf6,0x07,0x00,0x04,0x00,0x04,0xff,0x0f,0xff,0x0f,0x00,0x07,0x00,0x0f,0x00,0x08,0x10,0x08,0x10,0x08,0xf6,0x0f,0xf6,0x07,0xff,0x0f,0xfe,0x07,0xfe,0x07,0xc0,0x01,0x60,0x03,0x30,0x06,0x00,0x04,0xff,0x0f,0xff,0x0f,0x00,0x04,0x02,0x04,0xfe,0x07,0xfe,0x07,0x00,0x04,0x00,0x04,0xff,0x0f,0xff,0x0f,0xf0,0x07,0xe0,0x07,0x10,0x00,0xe0,0x07,0x10,0x00,0xf0,0x07,0xe0,0x07,0xff,0x0f,0xf0,0x07,0xf0,0x07,0x20,0x00,0x10,0x00,0x30,0x00,0xe0,0x07,0xc0,0x07,0xff,0x0f,0xc0,0x01,0xe0,0x03,0x30,0x06,0x10,0x04,0x30,0x06,0xe0,0x03,0xc0,0x01,0xff,0x0f, +0xf0,0x0f,0xf0,0x0f,0x10,0x01,0x10,0x01,0xb0,0x01,0xe0,0x00,0xc0,0x00,0xff,0x0f,0xc0,0x00,0xe0,0x00,0xb0,0x01,0x10,0x01,0x10,0x01,0xf0,0x0f,0xf0,0x0f,0xff,0x0f,0x10,0x00,0xf0,0x07,0xe0,0x07,0x30,0x00,0x10,0x00,0x30,0x00,0x20,0x00,0xff,0x0f,0x60,0x02,0xf0,0x06,0x90,0x04,0x90,0x04,0x90,0x04,0xb0,0x07,0x20,0x03,0xff,0x0f,0x10,0x00,0x10,0x00,0xfc,0x03,0xfc,0x07,0x10,0x04,0x10,0x06,0x00,0x02,0xff,0x0f,0xf0,0x01,0xf0,0x03,0x00,0x06,0x00,0x04,0x00,0x02,0xf0,0x07,0xf0,0x07,0xff,0x0f,0x30,0x00,0xf0,0x00,0xc0,0x03,0x00,0x07,0xc0,0x03,0xf0,0x00,0x30,0x00,0xff,0x0f,0xf0,0x03,0xf0,0x07,0x00,0x06,0xc0,0x03,0x00,0x06,0xf0,0x07,0xf0,0x03,0xff,0x0f,0x10,0x04,0x30,0x06,0x60,0x03,0xc0,0x01,0x60,0x03,0x30,0x06,0x10,0x04,0xff,0x0f,0xf0,0x04,0xf0,0x0c,0x00,0x09,0x00,0x09,0x80,0x0c,0xf0,0x07,0xf0,0x03,0xff,0x0f,0x10,0x06,0x10,0x07,0x90,0x05,0xd0,0x04,0x70,0x04,0x30,0x04,0xff,0x0f,0xff,0x0f,0x00,0x00,0x60,0x00,0xfe,0x07,0x9f,0x0f,0x01,0x08,0x01,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x07,0xfe,0x07,0x00,0x00,0xff,0x0f,0xff,0x0f,0xff,0x0f,0x00,0x00,0x01,0x08,0x01,0x08,0x9f,0x0f,0xfe,0x07,0x60,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x64,0x02,0x68,0x01,0xf0,0x00,0x60,0x00,0xff,0x0f,0x60,0x00,0xf0,0x00,0x68,0x01,0x64,0x02,0x60,0x00,0x60,0x00,0x60,0x00,0xff,0x0f, diff --git a/radio/src/fonts/std/font_08x10.png b/radio/src/fonts/std/font_08x10.png index 7f01e370c7990e470289018da89875f4161b4d22..cb6aab0b5fa926109d5330db80c8daeee6a7c431 100644 GIT binary patch delta 782 zcmV+p1M&R-1-Ax}Hh%$POGiWihy@);00009a7bBm000XU000XU0RWnu7ytkO2XskI zMF-ss2mv4t5zYfG0008FNkl`V?RW%ZHc1b+OU=0pfs`R-i)Y1BNd_T%zv(8+GcDJ`ZPQ9+XB;6 znYt?&JvVnBzvx`s`-)&5J$a{f?iwweJJ1c7?)wjKbXv{{a)LSDnzURHXbX`(LFfXl zut&15%yuk{No~jNuw!&SCzt@9o1YJ#8`^^333Zt0Wnd^+ZepK0%v}>*;|HpBHNPcL zL2wIK5Cqs|CVvsIK4VL9#u%gY=?K^k0rMD(W1NAYvg~S0EU6( zs_6w(_5#gUTLD&m*uMT&w{Efv`seqYgV1;q{Re+#YGxdL4w2hGH-ugY^Yaum{o2x@z}c zHsXzAY{i1ekMIu?p%B_akxt6k&_kaf3<<(}2t^$KOw;lc&JY{N2%gqIQeEOuUp%TD zBn@~+2!F8`>v5V}U>yPowM!QA? zr7A?9KwFquPz2^4s=9&8gUi`82@d+-U#M3HQ!vBb;n^TzyQ=V1dv^e);F9z0L#~P) z)#e;b7XgwJgnb7bK_-$b-gGdWF-&?0ID_MiQ-9oYncySNpv`fM3*M`%o{L_ut6CIq z|Alm>8%Wl$TKxyVzQOjz)7~bh0)*e6;c$4$aVa10Y%R3+W-In delta 700 zcmV;t0z>_`2LA<+HjzUde+CN+6&Mn^MpFO)0*pySK~y-)Wzx-R8!-?EaG5>$Qph2f z1bVB%_!gr}2Gr^y`a(8tD{?Yn1C3}v57AShrEGOr7Ee-@B|w!DNGoU9~+^ji`fOrn;QVM>9=k}y?e$Z))M3LK1{MyGxo zj_+kdRZ}fQqm~=xl=9-_#&OUEK7#5H89xRl!Ivwf7Yr+4)!eilg|yGNsRnx zDO5fds3ZSD%JP5$2XxV={G-lbZ3g=QR(T&0<2UZ1MoWeXZzNLWrdo{;J1lR zc!LUDKn7vSVJwixS~^pY@Ix)h^I%%wAwG{Tggd@DOq!pqZPFOsIs+Bx3SfWx1Mu_G zgP;1Y#rMwjGI@h3i44g{QWMZ zz2XP}H3WxYG!np13ul_OKt0UQ-73Rwj{TBx<03*kGHW~6H`UQWcioQasQa-Dt8KTd iK~{Y*9fzEzkNyuRm=NwYv}3FQ0000#eQfi67000CQNklm8G6bJC9GH^Typ>bI<1eOmsbXBS)0fg|- z4DC=fU%^1XzyV!67?2Gw9SmsbTA*KrDUDMGA^ZXzbk)$64u2O7gkK*eIdF2Wh6MgW zPkj9AQGjnRjR@$RPVB!>_WkB%Ph z_J4W@byLQngD?gadlVKKEUz9%Ck+fou$pnH$D=#Um%rrc3};LNV*)rh zp_QdPn}1J(Adv7);IR?K>Y4I1Nj1BsN6tjT%dJq%P@eU2! z#R&`X_>u5Js|v*)b5Y7q4we#5P(U0?AdE!$SL{H&MKz*>urGIAxmJr7yMoT1rQasofq>y<16If;2qtW4!3&6yjQIVk& zFBwB4Xy#!$8U%-U8zJ1DuBw^UEow`*r5r){n_3)mU5f~>iw?2H^}Q}cj#o96b5&(6 z$|BE2;SUwSy&SL>ztmAAYMKW^+ELJxvG7K`)E%oghqL~8xiwOFx#0$Yv8fk;iecLyL01!yUT>@|Vq+3IZgJ}7vEpD#MnA!scLTPZ zTsk+o<4~3Gj$Rq!Vwzo?E>bs0xZIROn19mPpfvQdWIE@B>oSxy-e{Pip$%!42rtV} zd8|6bS6H;K+@YUOD(5{`v*^@eL-V=Vc%+3Y7zB$+>PK-ns`~jfz?qCwqyrnq=E!{R zqx=7m_n!o`)_#q(-F}UQ_22b3=)W&fPBX9Q$mo8&J?0V3{P%+n$Ar0c*=IpB4`|a& zzf7{lSjHYrhqBOlk1%CB*5a3nM}0XMI+mK|lP390^a}}8*l0f7loHFVZ>h!4gD`}3 z_S?RBLKjripU1&C98#2EG(JGlS=002ovPDHLkV1is` B7$g7y delta 1059 zcmV+;1l;?U3F8QmHjzUde+CN+6&+&JvfKaw1Mo>iK~y-)mDI6r<3W1B7T&_a7>W?irSSEc@t#&I>IX~2$g_y^MAN5#Loco(o`BuY29%E?eR1G18;5%sD+!UDo-?&2w> zP+szLyvKJ=P*{j@P#!6TU;Z!@T5>e3^YMRzi42A2Tf&S+bo5G4*k(njKH;A!g@G6v za)Osf_YztpDJYSWf4?aP{E2TNoys0!Zm`)$YGac)CKJHYZb8V+vJSeP~K`8_a3YJN^ND;tfb!&6`jZ8-l%$N zn)M!Ak8!V6-I|^HkV{`)F%AkDoiS=VE@T)nM@j>pDZ?%Ce?WE_QcoA#YqMJ{@`9V^ zy*D?Ri0E?e7s@H-ZIS_NGa)Eb((q_V`GJ^km}iMr3ZX#=l_)@EN+;m9znMglhVLSe zy{hh>B6w@lW_4*Cu2e>Kr%GX0khP~4vnz+_u~j;<2w8P!X(1hw$4Wi^#Q4^f4XFbb zs@69Mw;H}De+9`*17ob}zY~P=IhH4U5f0@zmYZ@Da9jw-g-oeOJhbGvB`zGx56ySm zj**)uqy09;04ljW>p_;hO-4TuLA>`YLq;CR*UuAdA_W(5I;G}=v5GSf%aciTjEk6H zF}-V6&IB}$f0juC<$n}#E={Xqx~xW|fZHomse&$Ae=e70lLypQQK-saDu63J5dlB8 zajaU-10(M!8qqEkhsGmMRrMZg-LG@i@9}-itKT>EcFn@q+vA7RE#u=uJ>UA=NAV-a)af1ZpuXDl4%JH?rYWo|wt*-@esk9I^|nPQKy6oUx(v61n<94uc; z!};VS^Q&`QNb&jiM!tHeHP!jPrGUH1YzEu>w?p%c7&XgZ=g~Yl5&La=6xJHfXOf8H d8G$_e{0}w_B3B;RubBV<002ovPDHLkV1jV*1L6Px diff --git a/radio/src/fonts/std/font_10x14_compressed.lbm b/radio/src/fonts/std/font_10x14_compressed.lbm index 48525daac..89f587d45 100644 --- a/radio/src/fonts/std/font_10x14_compressed.lbm +++ b/radio/src/fonts/std/font_10x14_compressed.lbm @@ -1 +1 @@ -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x66,0x00,0x76,0x00,0x3e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x78,0x00,0x78,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0x00,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x60,0x0e,0x70,0xfc,0x3f,0xf8,0x1f,0x00,0x00,0x00,0x00,0x18,0x60,0x1c,0x60,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x78,0x1c,0x7c,0x0e,0x6e,0x06,0x67,0x86,0x63,0xce,0x61,0xfc,0x60,0x78,0x60,0x00,0x00,0x00,0x00,0x06,0x60,0x06,0x60,0x86,0x61,0x86,0x61,0x86,0x61,0xce,0x73,0xfc,0x3f,0x78,0x1e,0x00,0x00,0x00,0x00,0x80,0x07,0xc0,0x07,0xe0,0x06,0x70,0x06,0x38,0x06,0x1c,0x06,0xfe,0x7f,0xfe,0x7f,0x00,0x00,0x00,0x00,0x7e,0x18,0x7e,0x38,0x66,0x70,0x66,0x60,0x66,0x60,0xe6,0x70,0xc6,0x3f,0x86,0x1f,0x00,0x00,0x00,0x00,0xf8,0x1f,0xfc,0x3f,0x8e,0x71,0x86,0x61,0x86,0x61,0x8e,0x73,0x1c,0x3f,0x18,0x1e,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x86,0x7f,0xc6,0x7f,0xe6,0x00,0x76,0x00,0x3e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x78,0x1e,0xfc,0x3f,0xce,0x73,0x86,0x61,0x86,0x61,0xce,0x73,0xfc,0x3f,0x78,0x1e,0x00,0x00,0x00,0x00,0x78,0x00,0xfc,0x00,0xce,0x61,0x86,0x71,0x86,0x39,0xce,0x1d,0xfc,0x0f,0xf8,0x07,0x00,0x00,0x00,0x00,0x30,0x0c,0x78,0x1e,0x78,0x1e,0x30,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x7f,0xf0,0x7f,0xb8,0x01,0x9c,0x01,0x8e,0x01,0x8e,0x01,0x9c,0x01,0xb8,0x01,0xf0,0x7f,0xe0,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0xce,0x73,0xfc,0x3f,0x78,0x1e,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x0e,0x70,0x1c,0x38,0x18,0x18,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x06,0x60,0x0e,0x70,0x1c,0x38,0x38,0x1c,0xf0,0x0f,0xe0,0x07,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x06,0x00,0x06,0x00,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x86,0x61,0x86,0x61,0x86,0x61,0x8e,0x71,0x9c,0x7f,0x98,0x3f,0xfe,0x7f,0xfe,0x7f,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xfe,0x7f,0xfe,0x7f,0x00,0x00,0x00,0x00,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x38,0x00,0x70,0x00,0x60,0x06,0x60,0x06,0x70,0xfe,0x3f,0xfe,0x1f,0x06,0x00,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0x80,0x01,0xc0,0x03,0xe0,0x07,0x70,0x0e,0x38,0x1c,0x1c,0x38,0x0e,0x70,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0xfe,0x7f,0xfe,0x7f,0x1c,0x00,0x38,0x00,0xf0,0x01,0xf0,0x01,0x38,0x00,0x1c,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x70,0x00,0xe0,0x00,0xc0,0x01,0x80,0x03,0x00,0x07,0x00,0x0e,0xfe,0x7f,0xfe,0x7f,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x0e,0x70,0xfc,0x3f,0xf8,0x1f,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0xce,0x01,0xfc,0x00,0x78,0x00,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x66,0x06,0x6e,0x06,0x3c,0x0e,0x38,0xfc,0x7f,0xf8,0x67,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x07,0x86,0x0f,0x86,0x1d,0xce,0x39,0xfc,0x70,0x78,0x60,0x78,0x18,0xfc,0x38,0xce,0x71,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x8e,0x73,0x1c,0x3f,0x18,0x1e,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0xfe,0x1f,0xfe,0x3f,0x00,0x70,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x70,0xfe,0x3f,0xfe,0x1f,0xfe,0x07,0xfe,0x0f,0x00,0x1c,0x00,0x38,0x00,0x70,0x00,0x70,0x00,0x38,0x00,0x1c,0xfe,0x0f,0xfe,0x07,0xfe,0x1f,0xfe,0x3f,0x00,0x70,0x00,0x70,0x00,0x3e,0x00,0x3e,0x00,0x70,0x00,0x70,0xfe,0x3f,0xfe,0x1f,0x1e,0x78,0x3e,0x7c,0x70,0x0e,0xe0,0x07,0xc0,0x03,0xc0,0x03,0xe0,0x07,0x70,0x0e,0x3e,0x7c,0x1e,0x78,0x7e,0x00,0xfe,0x00,0xc0,0x01,0x80,0x03,0x00,0x7f,0x00,0x7f,0x80,0x03,0xc0,0x01,0xfe,0x00,0x7e,0x00,0x06,0x78,0x06,0x7c,0x06,0x6e,0x06,0x67,0x86,0x63,0xc6,0x61,0xe6,0x60,0x76,0x60,0x3e,0x60,0x1e,0x60,0x00,0x18,0x00,0x3c,0x60,0x7e,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0x66,0xc0,0x7f,0x80,0x7f,0xfe,0x7f,0xfe,0x7f,0x80,0x61,0xc0,0x61,0xe0,0x60,0x60,0x60,0x60,0x60,0xe0,0x70,0xc0,0x3f,0x80,0x1f,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x70,0x00,0x38,0x00,0x18,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x60,0x60,0xe0,0x60,0xc0,0x61,0x80,0x61,0xfe,0x7f,0xfe,0x7f,0x80,0x1f,0xc0,0x3f,0xe0,0x76,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0x66,0xc0,0x07,0x80,0x07,0x80,0x01,0x80,0x01,0xf8,0x7f,0xfc,0x7f,0x8e,0x01,0x86,0x01,0x06,0x00,0x0e,0x00,0x1c,0x00,0x18,0x00,0xe0,0x01,0xf0,0x03,0x38,0x67,0x18,0x66,0x18,0x66,0x18,0x66,0x18,0x66,0x18,0x76,0xf8,0x3f,0xf8,0x1f,0xfe,0x7f,0xfe,0x7f,0x80,0x01,0xc0,0x01,0xe0,0x00,0x60,0x00,0x60,0x00,0xe0,0x00,0xc0,0x7f,0x80,0x7f,0x00,0x00,0x00,0x00,0x60,0x60,0x60,0x60,0xe6,0x7f,0xe6,0x7f,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x38,0x00,0x70,0x00,0x60,0x60,0x60,0x60,0x70,0xe6,0x3f,0xe6,0x1f,0x00,0x00,0x00,0x00,0xfe,0x7f,0xfe,0x7f,0x00,0x06,0x00,0x0f,0x80,0x1f,0xc0,0x39,0xe0,0x70,0x60,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0x00,0xe0,0x7f,0xe0,0x7f,0x60,0x00,0xe0,0x00,0xc0,0x07,0xc0,0x07,0xe0,0x00,0xe0,0x00,0xc0,0x7f,0x80,0x7f,0xe0,0x7f,0xe0,0x7f,0x80,0x01,0xc0,0x01,0xe0,0x00,0x60,0x00,0x60,0x00,0xe0,0x00,0xc0,0x7f,0x80,0x7f,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xe0,0x70,0xc0,0x3f,0x80,0x1f,0xe0,0x7f,0xe0,0x7f,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0xe0,0x07,0xc0,0x03,0x80,0x01,0x80,0x01,0xc0,0x03,0xe0,0x07,0x60,0x06,0x60,0x06,0x60,0x06,0xc0,0x07,0x80,0x07,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x80,0x01,0xc0,0x01,0xe0,0x00,0x60,0x00,0x60,0x00,0xe0,0x00,0xc0,0x01,0x80,0x01,0x80,0x61,0xc0,0x63,0xe0,0x67,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x7e,0x00,0x3c,0x00,0x18,0x60,0x00,0x60,0x00,0xf8,0x1f,0xf8,0x3f,0x60,0x70,0x60,0x60,0x00,0x60,0x00,0x70,0x00,0x38,0x00,0x18,0xe0,0x1f,0xe0,0x3f,0x00,0x70,0x00,0x60,0x00,0x60,0x00,0x70,0x00,0x38,0x00,0x18,0xe0,0x7f,0xe0,0x7f,0xe0,0x07,0xe0,0x0f,0x00,0x1c,0x00,0x38,0x00,0x70,0x00,0x70,0x00,0x38,0x00,0x1c,0xe0,0x0f,0xe0,0x07,0xe0,0x1f,0xe0,0x3f,0x00,0x70,0x00,0x70,0x00,0x38,0x00,0x38,0x00,0x70,0x00,0x70,0xe0,0x3f,0xe0,0x1f,0x60,0x60,0xe0,0x70,0xc0,0x39,0x80,0x1f,0x00,0x0f,0x00,0x0f,0x80,0x1f,0xc0,0x39,0xe0,0x70,0x60,0x60,0xe0,0x01,0xe0,0x03,0x00,0x67,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x76,0xe0,0x3f,0xe0,0x1f,0x60,0x60,0x60,0x70,0x60,0x78,0x60,0x7c,0x60,0x6e,0x60,0x67,0xe0,0x63,0xe0,0x61,0xe0,0x60,0x60,0x60, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x66,0x00,0x76,0x00,0x3e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x78,0x00,0x78,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x60,0x0e,0x70,0xfc,0x3f,0xf8,0x1f,0xff,0xff,0xff,0xff,0x00,0x00,0x18,0x60,0x1c,0x60,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x00,0xff,0xff,0xff,0xff,0x18,0x78,0x1c,0x7c,0x0e,0x6e,0x06,0x67,0x86,0x63,0xce,0x61,0xfc,0x60,0x78,0x60,0xff,0xff,0xff,0xff,0x06,0x60,0x06,0x60,0x86,0x61,0x86,0x61,0x86,0x61,0xce,0x73,0xfc,0x3f,0x78,0x1e,0xff,0xff,0xff,0xff,0x80,0x07,0xc0,0x07,0xe0,0x06,0x70,0x06,0x38,0x06,0x1c,0x06,0xfe,0x7f,0xfe,0x7f,0xff,0xff,0xff,0xff,0x7e,0x18,0x7e,0x38,0x66,0x70,0x66,0x60,0x66,0x60,0xe6,0x70,0xc6,0x3f,0x86,0x1f,0xff,0xff,0xff,0xff,0xf8,0x1f,0xfc,0x3f,0x8e,0x71,0x86,0x61,0x86,0x61,0x8e,0x73,0x1c,0x3f,0x18,0x1e,0xff,0xff,0xff,0xff,0x06,0x00,0x06,0x00,0x86,0x7f,0xc6,0x7f,0xe6,0x00,0x76,0x00,0x3e,0x00,0x1e,0x00,0xff,0xff,0xff,0xff,0x78,0x1e,0xfc,0x3f,0xce,0x73,0x86,0x61,0x86,0x61,0xce,0x73,0xfc,0x3f,0x78,0x1e,0xff,0xff,0xff,0xff,0x78,0x00,0xfc,0x00,0xce,0x61,0x86,0x71,0x86,0x39,0xce,0x1d,0xfc,0x0f,0xf8,0x07,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x30,0x0c,0x78,0x1e,0x78,0x1e,0x30,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x7f,0xf0,0x7f,0xb8,0x01,0x9c,0x01,0x8e,0x01,0x8e,0x01,0x9c,0x01,0xb8,0x01,0xf0,0x7f,0xe0,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0xce,0x73,0xfc,0x3f,0x78,0x1e,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x0e,0x70,0x1c,0x38,0x18,0x18,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x06,0x60,0x0e,0x70,0x1c,0x38,0x38,0x1c,0xf0,0x0f,0xe0,0x07,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x06,0x00,0x06,0x00,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x86,0x61,0x86,0x61,0x86,0x61,0x8e,0x71,0x9c,0x7f,0x98,0x3f,0xfe,0x7f,0xfe,0x7f,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x18,0x00,0x38,0x00,0x70,0x00,0x60,0x06,0x60,0x06,0x70,0xfe,0x3f,0xfe,0x1f,0x06,0x00,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0x80,0x01,0xc0,0x03,0xe0,0x07,0x70,0x0e,0x38,0x1c,0x1c,0x38,0x0e,0x70,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0xfe,0x7f,0xfe,0x7f,0x1c,0x00,0x38,0x00,0xf0,0x01,0xf0,0x01,0x38,0x00,0x1c,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x70,0x00,0xe0,0x00,0xc0,0x01,0x80,0x03,0x00,0x07,0x00,0x0e,0xfe,0x7f,0xfe,0x7f,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x0e,0x70,0xfc,0x3f,0xf8,0x1f,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0xce,0x01,0xfc,0x00,0x78,0x00,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x66,0x06,0x6e,0x06,0x3c,0x0e,0x38,0xfc,0x7f,0xf8,0x67,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x07,0x86,0x0f,0x86,0x1d,0xce,0x39,0xfc,0x70,0x78,0x60,0x78,0x18,0xfc,0x38,0xce,0x71,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x8e,0x73,0x1c,0x3f,0x18,0x1e,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0xfe,0x1f,0xfe,0x3f,0x00,0x70,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x70,0xfe,0x3f,0xfe,0x1f,0xfe,0x07,0xfe,0x0f,0x00,0x1c,0x00,0x38,0x00,0x70,0x00,0x70,0x00,0x38,0x00,0x1c,0xfe,0x0f,0xfe,0x07,0xfe,0x1f,0xfe,0x3f,0x00,0x70,0x00,0x70,0x00,0x3e,0x00,0x3e,0x00,0x70,0x00,0x70,0xfe,0x3f,0xfe,0x1f,0x1e,0x78,0x3e,0x7c,0x70,0x0e,0xe0,0x07,0xc0,0x03,0xc0,0x03,0xe0,0x07,0x70,0x0e,0x3e,0x7c,0x1e,0x78,0x7e,0x00,0xfe,0x00,0xc0,0x01,0x80,0x03,0x00,0x7f,0x00,0x7f,0x80,0x03,0xc0,0x01,0xfe,0x00,0x7e,0x00,0x06,0x78,0x06,0x7c,0x06,0x6e,0x06,0x67,0x86,0x63,0xc6,0x61,0xe6,0x60,0x76,0x60,0x3e,0x60,0x1e,0x60,0x00,0x18,0x00,0x3c,0x60,0x7e,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0x66,0xc0,0x7f,0x80,0x7f,0xfe,0x7f,0xfe,0x7f,0x80,0x61,0xc0,0x61,0xe0,0x60,0x60,0x60,0x60,0x60,0xe0,0x70,0xc0,0x3f,0x80,0x1f,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x70,0x00,0x38,0x00,0x18,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x60,0x60,0xe0,0x60,0xc0,0x61,0x80,0x61,0xfe,0x7f,0xfe,0x7f,0x80,0x1f,0xc0,0x3f,0xe0,0x76,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0x66,0xc0,0x07,0x80,0x07,0x80,0x01,0x80,0x01,0xf8,0x7f,0xfc,0x7f,0x8e,0x01,0x86,0x01,0x06,0x00,0x0e,0x00,0x1c,0x00,0x18,0x00,0xe0,0x01,0xf0,0x03,0x38,0x67,0x18,0x66,0x18,0x66,0x18,0x66,0x18,0x66,0x18,0x76,0xf8,0x3f,0xf8,0x1f,0xfe,0x7f,0xfe,0x7f,0x80,0x01,0xc0,0x01,0xe0,0x00,0x60,0x00,0x60,0x00,0xe0,0x00,0xc0,0x7f,0x80,0x7f,0x60,0x60,0x60,0x60,0xe6,0x7f,0xe6,0x7f,0x00,0x60,0x00,0x60,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x18,0x00,0x38,0x00,0x70,0x00,0x60,0x60,0x60,0x60,0x70,0xe6,0x3f,0xe6,0x1f,0xff,0xff,0xff,0xff,0xfe,0x7f,0xfe,0x7f,0x00,0x06,0x00,0x0f,0x80,0x1f,0xc0,0x39,0xe0,0x70,0x60,0x60,0xff,0xff,0xff,0xff,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0x7f,0xe0,0x7f,0x60,0x00,0xe0,0x00,0xc0,0x07,0xc0,0x07,0xe0,0x00,0xe0,0x00,0xc0,0x7f,0x80,0x7f,0xe0,0x7f,0xe0,0x7f,0x80,0x01,0xc0,0x01,0xe0,0x00,0x60,0x00,0x60,0x00,0xe0,0x00,0xc0,0x7f,0x80,0x7f,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xe0,0x70,0xc0,0x3f,0x80,0x1f,0xe0,0x7f,0xe0,0x7f,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0xe0,0x07,0xc0,0x03,0x80,0x01,0x80,0x01,0xc0,0x03,0xe0,0x07,0x60,0x06,0x60,0x06,0x60,0x06,0xc0,0x07,0x80,0x07,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x80,0x01,0xc0,0x01,0xe0,0x00,0x60,0x00,0x60,0x00,0xe0,0x00,0xc0,0x01,0x80,0x01,0x80,0x61,0xc0,0x63,0xe0,0x67,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x7e,0x00,0x3c,0x00,0x18,0x60,0x00,0x60,0x00,0xf8,0x1f,0xf8,0x3f,0x60,0x70,0x60,0x60,0x00,0x60,0x00,0x70,0x00,0x38,0x00,0x18,0xe0,0x1f,0xe0,0x3f,0x00,0x70,0x00,0x60,0x00,0x60,0x00,0x70,0x00,0x38,0x00,0x18,0xe0,0x7f,0xe0,0x7f,0xe0,0x07,0xe0,0x0f,0x00,0x1c,0x00,0x38,0x00,0x70,0x00,0x70,0x00,0x38,0x00,0x1c,0xe0,0x0f,0xe0,0x07,0xe0,0x1f,0xe0,0x3f,0x00,0x70,0x00,0x70,0x00,0x38,0x00,0x38,0x00,0x70,0x00,0x70,0xe0,0x3f,0xe0,0x1f,0x60,0x60,0xe0,0x70,0xc0,0x39,0x80,0x1f,0x00,0x0f,0x00,0x0f,0x80,0x1f,0xc0,0x39,0xe0,0x70,0x60,0x60,0xe0,0x01,0xe0,0x03,0x00,0x67,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x76,0xe0,0x3f,0xe0,0x1f,0x60,0x60,0x60,0x70,0x60,0x78,0x60,0x7c,0x60,0x6e,0x60,0x67,0xe0,0x63,0xe0,0x61,0xe0,0x60,0x60,0x60, diff --git a/radio/src/fonts/std/font_10x14_compressed.png b/radio/src/fonts/std/font_10x14_compressed.png index 07e890ee2abdf616a6d30fa825eba2d9ee95e4ac..a240544ee55d225bf35c52e88733b7096a039793 100644 GIT binary patch delta 1410 zcmV-|1%3M53*-xsB#|*L2@DevEI8@^s#cL`D1S^zL_t(|+U;Fi)9WAzOgsJmf4S%B z%-3{GfTt&u**sXepmJmRHzTxv7WlpE1l3=) zp?_objpbjozC^XBmd7s7S?9Sr5cc-x#Y?t->v((i2wmsph!!d7eP`!%1ds@DGVQ6_ zkD9NtJ$1ilZFn5((Yv#D)eb4!M@IiqPHmR1D)^_;m#FrNo@tkgii-Z|b4L(pvlNyr zCEDIuq}c118N)0i;ThkIC!_WlJ~L5x4}ZklcNl*6vRXa<{Qi&h>&-MED<*U{gPkX)pqBHobh|Rz~#V&c*gO%SXE=0dqWV0hrq4(V;^eb3} zkS*)0QH`=;5DAU!vOERe$zT zYvTz{%?K~csVgcvr_U27jYNA<#stkoS!;SSGGQ6c&+phG9Qsj>U_`%H%|xi2(=%P` z>EBs~@s5tl?&F+g`V{yv+s#1vr#dU(t*!Oo^e8)z&ev);yk`}x@6C2{(0N7Ikk7`U z9^Y(7whzyFimUlRk@NfPth_rLYoxBV zmyKf`wNXaT61nu8!BH*UZ{)^i7!mMQ96pQ82zyWcTO-O<>q+gLGKP9otADA)Ba6Nu z!PsbhTrK$NWxi+fVlsnhaO$mzM@x~|8hi$)mHMo#X+_^tWzf;xLyvrwHRQe0B$fW5 zx3}zo1Bx9L)K94lYO=Amyzh;!)dsRMj78C4810~|b=XpqeOGyTol}djSx-CP%{lFz29KUU+OIb^Kn)qh`u+{ z6GqQh>CMU=m8f~lWag0vYM1Z6qvF-C%Af`;%2i6Y>ed29t?E@k?0-p=d8@%r>xh}J zSC$&7hJ1Xp11%E3ZD0fsCf2a4(J9AOb+FJcJBGm%QoX1N3Ax0;oHb?cftITbz zRVQ&R`m$ptHS#NJ79)mi0Y`s{i>(oBbphRi^jzEb%WAABH;J8)i*m_YF zb})E|-Zqhi2eaTOD)F-e9x!rJoViim>Drs85)WqYqj$`sI`md6n5UhH6Y^KA2lbp% z%;zY0(n6&3A+2P(WT94hkAKiJ}4Vif;S QdH?_b07*qoM6N<$f=2h{y8r+H delta 1400 zcmV-;1&8|N3)~BkBnkm@Qb$4nuFf3kks&b&1`84c5EBjKNs(J9e>X`)K~#9!?Ok1S z#2^T~+~oiN5SfKYI0{?W6s(*2k7(`KIpwu^h^;QM)Xm?T_RVl^2w6*6+}D zx}(gWexqjE@O>8Qk8P9rK}ZM=MxM|5h@xp1KqfM$i1IYJVnM%&Jn;0g_AL*cHL;&v) z6+1eN2)u%s1B-lFu<+`;1`!xzW_`_;H)UH#xl;32g&}9#@Z6`kn(q@izI~PuU)2e) z?09>T0oGwdFl>zD*>egJOdS(xM0l;Zbf$>tue2@6W=t*>Q+M3r9#uJ@;v>q#lT!k%U?;Nm@nTSmVyY^K4Rbt3{&?J@o zS+ge0*2~rt71Tee2VLnhMd(W4$LyagH+ zb>gFt3-uj~8JpJQ7}WgD-dNw=E_zQ?Eb_H`e-~1Z8FyonCGyEcJR^*{B?86V&PN3k z*%f-QEg6_m74~;jJ_^gD+A(L&qk^yMypd?6!Q6|DL|d7{Gje>uHx-kFPfRM*P&S{9P}#=Yk@edPR|30Vd< zNA=28rjtGECay(JR*a-ZzG7xEV#pD2^h;bUM(ijH=n-BnVA5vqejkxy>d1mog^6ar#Bdbzw?OY;mj$2=Ke?lAu zj}x!hu`)UDP<}SP5la~{ zXLDepm_tU_TV9w`@FP+mST4t)Ck!j-1CPIA(JiW+uDx+8^}*GumBYepxwMVH~siR^XMBRiGOl{xb7oJr2z1AIekY_tkD7XJY6hUI<)m zF4X#9#S}8rw?vwTzPgKQf@M^KB3ii(Pgii(PgBIyUqaxnyy&U-cZV<;U9R(JrU=P^y< qgf!SQKnMW$|Nnpf_pSeX-uTJYDW0xHI7dj~b delta 132 zcmV-~0DJ%60o(zQUwsA=6%HD1D0+$j003M`L_t&t*JF6McYSr}o8RxQZ~eebN_ mr|ib|L=J}kVDKJ@e*geXzcYDhh`k{I0000b@02PqL7! zVewo6)&mT47(U;5WpTcE&MV71m1`K94{%w2EMCCHX19xT4MXv~UzY!pZC;s|Rm@>% vNfvN@IAzfT>jZWyhX4Qn)&B<(|Nd{gEo8Q=`$1|x(0&F_S3j3^P6U-C>zTd`h z@B7~O)%VJQ#CMBeY+hy^89Q6)IOQb>;f3^~e=U z=hdf3If3^N=ZrN5Qes~DHY1`Hdu;?Ec%S`(r%6iC2r*-%uSPK<12{6Kn|?KdTqF}9 z5p~lLcPo=bf-!`UeZ*~RR#1pwNhu8+=Y5~7>z~YDpU1gA?Sp`s1kPwn00000NkvXX Hu0mjf&`wfG diff --git a/radio/src/fonts/std/font_cz_10x14.lbm b/radio/src/fonts/std/font_cz_10x14.lbm index 2e96bc3f2..0296523b6 100644 --- a/radio/src/fonts/std/font_cz_10x14.lbm +++ b/radio/src/fonts/std/font_cz_10x14.lbm @@ -1 +1 @@ -0x00,0x18,0x00,0x3c,0x60,0x7e,0x60,0x66,0x68,0x66,0x6c,0x66,0x67,0x66,0xe3,0x66,0xc1,0x7f,0x80,0x7f,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x67,0x60,0x6f,0x60,0x6c,0x60,0x66,0x60,0x63,0x70,0x01,0x38,0x00,0x18,0x80,0x1f,0xc0,0x3f,0xe0,0x76,0x60,0x66,0x68,0x66,0x6c,0x66,0x67,0x66,0xe3,0x66,0xc1,0x07,0x80,0x07,0x80,0x1f,0xc0,0x3f,0xe0,0x76,0x67,0x66,0x6f,0x66,0x6c,0x66,0x66,0x66,0xe3,0x66,0xc1,0x07,0x80,0x07,0x00,0x00,0x00,0x00,0x60,0x60,0x60,0x60,0xe8,0x7f,0xec,0x7f,0x07,0x60,0x03,0x60,0x01,0x00,0x00,0x00,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x68,0x60,0x6c,0x60,0x67,0x60,0xe3,0x70,0xc1,0x3f,0x80,0x1f,0xe0,0x7f,0xe0,0x7f,0x80,0x01,0xc7,0x01,0xef,0x00,0x6c,0x00,0x66,0x00,0xe3,0x00,0xc1,0x01,0x80,0x01,0x80,0x61,0xc0,0x63,0xe0,0x67,0x67,0x66,0x6f,0x66,0x6c,0x66,0x66,0x66,0x63,0x7e,0x01,0x3c,0x00,0x18,0xe0,0x1f,0xe0,0x3f,0x00,0x70,0x00,0x60,0x08,0x60,0x0c,0x70,0x07,0x38,0x03,0x18,0xe1,0x7f,0xe0,0x7f,0xe0,0x1f,0xe0,0x3f,0x00,0x70,0x06,0x60,0x09,0x60,0x09,0x70,0x0f,0x38,0x06,0x18,0xe0,0x7f,0xe0,0x7f,0xe0,0x01,0xe0,0x03,0x00,0x67,0x00,0x66,0x08,0x66,0x0c,0x66,0x07,0x66,0x03,0x76,0xe1,0x3f,0xe0,0x1f,0x80,0x7f,0xc0,0x7f,0xe0,0x06,0x70,0x06,0x38,0x06,0x38,0x06,0x74,0x06,0xe7,0x06,0xc3,0x7f,0x81,0x7f,0x00,0x00,0x00,0x00,0x18,0x60,0x18,0x60,0xfc,0x7f,0xff,0x7f,0x1b,0x60,0x19,0x60,0x00,0x00,0x00,0x00,0xf8,0x7f,0xf8,0x7f,0x18,0x03,0x17,0x03,0x0f,0x07,0x0c,0x0f,0x16,0x1f,0xbb,0x3b,0xf1,0x71,0xe0,0x60,0xf8,0x00,0xf8,0x01,0x80,0x03,0x00,0x07,0x00,0x7e,0x04,0x7e,0x07,0x07,0x83,0x03,0xf9,0x01,0xf8,0x00,0x18,0x70,0x18,0x70,0x18,0x78,0x17,0x7c,0x0f,0x6e,0x0c,0x67,0x96,0x63,0xdb,0x61,0xf9,0x60,0x78,0x60,0xf8,0x7f,0xf8,0x7f,0x18,0x63,0x18,0x63,0x1c,0x63,0x1f,0x63,0x1b,0x63,0x19,0x63,0x18,0x60,0x18,0x60, +0x00,0x18,0x00,0x3c,0x60,0x7e,0x60,0x66,0x68,0x66,0x6c,0x66,0x67,0x66,0xe3,0x66,0xc1,0x7f,0x80,0x7f,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x67,0x60,0x6f,0x60,0x6c,0x60,0x66,0x60,0x63,0x70,0x01,0x38,0x00,0x18,0x80,0x1f,0xc0,0x3f,0xe0,0x76,0x60,0x66,0x68,0x66,0x6c,0x66,0x67,0x66,0xe3,0x66,0xc1,0x07,0x80,0x07,0x80,0x1f,0xc0,0x3f,0xe0,0x76,0x67,0x66,0x6f,0x66,0x6c,0x66,0x66,0x66,0xe3,0x66,0xc1,0x07,0x80,0x07,0x60,0x60,0x60,0x60,0xe8,0x7f,0xec,0x7f,0x07,0x60,0x03,0x60,0x01,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x68,0x60,0x6c,0x60,0x67,0x60,0xe3,0x70,0xc1,0x3f,0x80,0x1f,0xe0,0x7f,0xe0,0x7f,0x80,0x01,0xc7,0x01,0xef,0x00,0x6c,0x00,0x66,0x00,0xe3,0x00,0xc1,0x01,0x80,0x01,0x80,0x61,0xc0,0x63,0xe0,0x67,0x67,0x66,0x6f,0x66,0x6c,0x66,0x66,0x66,0x63,0x7e,0x01,0x3c,0x00,0x18,0xe0,0x1f,0xe0,0x3f,0x00,0x70,0x00,0x60,0x08,0x60,0x0c,0x70,0x07,0x38,0x03,0x18,0xe1,0x7f,0xe0,0x7f,0xe0,0x1f,0xe0,0x3f,0x00,0x70,0x06,0x60,0x09,0x60,0x09,0x70,0x0f,0x38,0x06,0x18,0xe0,0x7f,0xe0,0x7f,0xe0,0x01,0xe0,0x03,0x00,0x67,0x00,0x66,0x08,0x66,0x0c,0x66,0x07,0x66,0x03,0x76,0xe1,0x3f,0xe0,0x1f,0x80,0x7f,0xc0,0x7f,0xe0,0x06,0x70,0x06,0x38,0x06,0x38,0x06,0x74,0x06,0xe7,0x06,0xc3,0x7f,0x81,0x7f,0x18,0x60,0x18,0x60,0xfc,0x7f,0xff,0x7f,0x1b,0x60,0x19,0x60,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf8,0x7f,0xf8,0x7f,0x18,0x03,0x17,0x03,0x0f,0x07,0x0c,0x0f,0x16,0x1f,0xbb,0x3b,0xf1,0x71,0xe0,0x60,0xf8,0x00,0xf8,0x01,0x80,0x03,0x00,0x07,0x00,0x7e,0x04,0x7e,0x07,0x07,0x83,0x03,0xf9,0x01,0xf8,0x00,0x18,0x70,0x18,0x70,0x18,0x78,0x17,0x7c,0x0f,0x6e,0x0c,0x67,0x96,0x63,0xdb,0x61,0xf9,0x60,0x78,0x60,0xf8,0x7f,0xf8,0x7f,0x18,0x63,0x18,0x63,0x1c,0x63,0x1f,0x63,0x1b,0x63,0x19,0x63,0x18,0x60,0x18,0x60, diff --git a/radio/src/fonts/std/font_cz_10x14.png b/radio/src/fonts/std/font_cz_10x14.png index bc97e13bef4977ff4b280648f909a5ff7faacfbe..6c63ac78661e224595f8dc63064ca141c2601b63 100644 GIT binary patch delta 337 zcmV-X0j~a<1E&L!Uw;e)3JnyB1@Pej00AdSL_t&-(^b#0Y63wJ2H?>XuaO&wjaBX* z;ew6A;j}3Nc?G+?f`Q;E7M2!PRz5^tV8a!cV!3+-!H{}&n>!rb%$YQqV%Yy%_+fxw z_xaAy{mYKu(!4s1B~}W!rgD3x$@7*kRMuZ(iM4{dO84vU$$vat*B9DbJ(6e@Sawtv zi7d-0mC$)Nj{xABxsv;xHF$j!3oDbL7sNyK2s7(xTv;XsYC7t+g6OW>@cBW@UnP9? zPls9IFQ%!mnQ2@ePr?qZ;R2Nr{xGazkRL%x&;S&eU8Up`KtqDL@ZyhMi%<*q=HW(4 zLd@7TTqTH75=sz-4f{(@3xDORK^G6KF-%B!5e)*b9rd}jjGj6SxJjTnCzf;C@sPbN j);;0!#{Z9Ze0!-MP~f$kTkQ!700000NkvXXu0mjf->{rl delta 324 zcmV-K0lWUE1DXSnUw;M?6)`1%kbR2)00A0FL_t&-({0bOYQr!P24EQ%XDJmli>Eq| z;F6_-sn!mKzCyOXLJB3e$>1?Vrc8c_zQ7d~+`&|@V8{z7y+tBN)N{#F=ndlT1O3Md zdTF~Il{e2jdM!KWJdX|pd1bZ~?w_`FRL1*p^dP(|+s2<(S%2e?szn?}1c4NkIX|T` z@bP9Jgb?9RHK3<9X9ioySlhXbmDCucStBVBu((SiJzOUvf8V0f=$KEF!?47zT9nLo ziKgBkn1e)1XuvYRa|da+7aSt35d8JTA)nkqAv@;k%pp>;=dNF68xF~&rZBQAq~wq< zrLvJHHI>+{gFQoq*{do w1GB_2AUjFom|_D%s;Xw71H<>d?<)@g01<5tNoCgbO#lD@07*qoM6N<$f)fxS`Tzg` delta 91 zcmV-h0Hpu20kZ*+UsMJc7YYTl7M3Rf001*dL_t&t*JH?y4*QqDF#q}gtqT}(qRsv! xFmOj*1G2NCt}R`_kehCKHG$#(|Nnm<005vV6+3sv^4b6Z002ovPDHLkV1j0bC0GCe diff --git a/radio/src/fonts/std/font_de_08x10.lbm b/radio/src/fonts/std/font_de_08x10.lbm index 91e1ae1e4..9ad2bbb36 100644 --- a/radio/src/fonts/std/font_de_08x10.lbm +++ b/radio/src/fonts/std/font_de_08x10.lbm @@ -1 +1 @@ -0xe0,0x07,0xf6,0x07,0x96,0x00,0x88,0x00,0x88,0x00,0x96,0x00,0xf6,0x07,0xe0,0x07,0x00,0x03,0xa0,0x07,0xb6,0x04,0x96,0x04,0x90,0x02,0xf6,0x07,0xe6,0x07,0x00,0x00,0xe0,0x01,0xf6,0x03,0x16,0x06,0x08,0x04,0x08,0x04,0x16,0x06,0xf6,0x03,0xe0,0x01,0xc0,0x01,0xe6,0x03,0x36,0x06,0x10,0x04,0x36,0x06,0xe6,0x03,0xc0,0x01,0x00,0x00,0xf8,0x01,0xfb,0x03,0x03,0x06,0x00,0x04,0x03,0x04,0x03,0x06,0xf8,0x03,0xf8,0x01,0xf0,0x01,0xf6,0x03,0x06,0x06,0x00,0x04,0x06,0x02,0xf6,0x07,0xf0,0x07,0x00,0x00,0xf0,0x07,0xf8,0x07,0x8c,0x00,0x86,0x00,0x86,0x00,0x8c,0x00,0xf8,0x07,0xf0,0x07, +0xe0,0x07,0xf6,0x07,0x96,0x00,0x88,0x00,0x88,0x00,0x96,0x00,0xf6,0x07,0xe0,0x07,0x00,0x03,0xa0,0x07,0xb6,0x04,0x96,0x04,0x90,0x02,0xf6,0x07,0xe6,0x07,0xff,0x0f,0xe0,0x01,0xf6,0x03,0x16,0x06,0x08,0x04,0x08,0x04,0x16,0x06,0xf6,0x03,0xe0,0x01,0xc0,0x01,0xe6,0x03,0x36,0x06,0x10,0x04,0x36,0x06,0xe6,0x03,0xc0,0x01,0xff,0x0f,0xf8,0x01,0xfb,0x03,0x03,0x06,0x00,0x04,0x03,0x04,0x03,0x06,0xf8,0x03,0xf8,0x01,0xf0,0x01,0xf6,0x03,0x06,0x06,0x00,0x04,0x06,0x02,0xf6,0x07,0xf0,0x07,0xff,0x0f,0xf0,0x07,0xf8,0x07,0x8c,0x00,0x86,0x00,0x86,0x00,0x8c,0x00,0xf8,0x07,0xf0,0x07, diff --git a/radio/src/fonts/std/font_de_08x10.png b/radio/src/fonts/std/font_de_08x10.png index 6cc400f77090fa5bc9a96009bfaaf41e36cdeb0a..35962a5ae20fecf11118fbde490f01389d39d128 100644 GIT binary patch delta 121 zcmV-<0EYj{0nq`FUvdls6$}RI3Tzwz002=*L_t&t*B#8U4Ztu61i&9DWeSE%nKHsn zew`p$-oz`of`Ener~d+khc^#!P@B$esA2kaae^PaoC0}8w<|NnRRX)!eo*E0c)tI00000NkvXXu0mjf+DI@S delta 114 zcmV-&0FD3A0m=c8Uuy;u4J9%^*xk_p002r!L_t&t*CoiY4ZuJQ0zg(u8Oh6~Oc_xz zkBiq&@-w6&eush+z!loi6v@?^iRI<6pwx&n5DK<$b%|>W^xFR+>M8FWIRpOl0c_MR U-j0Hbu>b%707*qoM6N<$f@m8sjsO4v diff --git a/radio/src/fonts/std/font_de_10x14.lbm b/radio/src/fonts/std/font_de_10x14.lbm index ed3d1da5f..dd114326a 100644 --- a/radio/src/fonts/std/font_de_10x14.lbm +++ b/radio/src/fonts/std/font_de_10x14.lbm @@ -1 +1 @@ -0x80,0x7f,0xc2,0x7f,0xe2,0x06,0x70,0x06,0x38,0x06,0x38,0x06,0x70,0x06,0xe2,0x06,0xc2,0x7f,0x80,0x7f,0x00,0x18,0x06,0x3c,0x66,0x7e,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe6,0x66,0xc6,0x7f,0x80,0x7f,0xe0,0x1f,0xf2,0x3f,0x3a,0x70,0x18,0x60,0x18,0x60,0x18,0x60,0x18,0x60,0x3a,0x70,0xf2,0x3f,0xe0,0x1f,0x80,0x1f,0xc6,0x3f,0xe6,0x70,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xe6,0x70,0xc6,0x3f,0x80,0x1f,0xf8,0x1f,0xfa,0x3f,0x02,0x70,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x02,0x70,0xfa,0x3f,0xf8,0x1f,0xe0,0x1f,0xe6,0x3f,0x06,0x70,0x00,0x60,0x00,0x60,0x00,0x70,0x00,0x38,0x06,0x18,0xe6,0x7f,0xe0,0x7f,0xf8,0x7f,0xfc,0x7f,0x0e,0x00,0x06,0x00,0x66,0x30,0x6e,0x30,0xfc,0x38,0xd8,0x1f,0x00,0x0f,0x00,0x00, +0x80,0x7f,0xc2,0x7f,0xe2,0x06,0x70,0x06,0x38,0x06,0x38,0x06,0x70,0x06,0xe2,0x06,0xc2,0x7f,0x80,0x7f,0x00,0x18,0x06,0x3c,0x66,0x7e,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe6,0x66,0xc6,0x7f,0x80,0x7f,0xe0,0x1f,0xf2,0x3f,0x3a,0x70,0x18,0x60,0x18,0x60,0x18,0x60,0x18,0x60,0x3a,0x70,0xf2,0x3f,0xe0,0x1f,0x80,0x1f,0xc6,0x3f,0xe6,0x70,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xe6,0x70,0xc6,0x3f,0x80,0x1f,0xf8,0x1f,0xfa,0x3f,0x02,0x70,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x02,0x70,0xfa,0x3f,0xf8,0x1f,0xe0,0x1f,0xe6,0x3f,0x06,0x70,0x00,0x60,0x00,0x60,0x00,0x70,0x00,0x38,0x06,0x18,0xe6,0x7f,0xe0,0x7f,0xf8,0x7f,0xfc,0x7f,0x0e,0x00,0x06,0x00,0x66,0x30,0x6e,0x30,0xfc,0x38,0xd8,0x1f,0x00,0x0f,0xff,0xff, diff --git a/radio/src/fonts/std/font_de_10x14.png b/radio/src/fonts/std/font_de_10x14.png index 22ae54efc382d99120bb2c4f73afbf8e1609f71f..f32214fed872b9643b0c09922243a4f6c1e6e99f 100644 GIT binary patch delta 220 zcmV<203-kY0g3{UHh%$POGiWihy@);00009a7bBm000XU000XU0RWnu7ytkO2XskI zMF-ss1PTrawJHB?0001rNkl3O_J=?G z0kR%2Fc>hySPC$fJv&&I`2di0@Ii$f8#4!ky#fatV?%AvJFR0000R ly#WtD^MMbC|1iK^1ps^HP9mk+I*P7MG6 diff --git a/radio/src/fonts/std/font_es_04x06.lbm b/radio/src/fonts/std/font_es_04x06.lbm index 9c8fdb698..dbf678113 100644 --- a/radio/src/fonts/std/font_es_04x06.lbm +++ b/radio/src/fonts/std/font_es_04x06.lbm @@ -1 +1 @@ -0x3e,0x09,0x12,0x3d,0x00,0x3a,0x11,0x0a,0x39,0x00, +0x3e,0x09,0x12,0x3d,0x7f,0x3a,0x11,0x0a,0x39,0x7f, diff --git a/radio/src/fonts/std/font_es_04x06.png b/radio/src/fonts/std/font_es_04x06.png index ee36412ee4bd69d18d365d53bfc8c89b24b5dca8..2c5db9a63327667338254a8c08af137930e4f6cb 100644 GIT binary patch delta 110 zcmbQhIG1sPSvq5qx4R2N2dk_H0|NtRfk$L90|U1(2s1Lwnj--eWH0gbb!ETH!z^Mh zp<8;T04OBu>Eal|aXmTW)B%Aj2PWJ*u;9pn2PY0pICJ2`UPcDJ43;_U<@NzUg$$mq KelF{r5}E)--XZb; delta 72 zcmbQsIDv73*+gddsjv*Y^lOtXq5GZX>{Lj!ljk$R_v-39Q c!~dBXoC4UURHX@J0u?fNy85}Sb4q9e021#OKmY&$ diff --git a/radio/src/fonts/std/font_es_08x10.lbm b/radio/src/fonts/std/font_es_08x10.lbm index f3bb8184c..57a5a829c 100644 --- a/radio/src/fonts/std/font_es_08x10.lbm +++ b/radio/src/fonts/std/font_es_08x10.lbm @@ -1 +1 @@ -0xf0,0x07,0xf4,0x07,0x66,0x00,0xc2,0x00,0x86,0x01,0x04,0x07,0xf6,0x07,0xf2,0x07,0xf4,0x07,0xf6,0x07,0x22,0x00,0x16,0x00,0x34,0x00,0xe6,0x07,0xc2,0x07,0x00,0x00, +0xf0,0x07,0xf4,0x07,0x66,0x00,0xc2,0x00,0x86,0x01,0x04,0x07,0xf6,0x07,0xf2,0x07,0xf4,0x07,0xf6,0x07,0x22,0x00,0x16,0x00,0x34,0x00,0xe6,0x07,0xc2,0x07,0xff,0x0f, diff --git a/radio/src/fonts/std/font_es_08x10.png b/radio/src/fonts/std/font_es_08x10.png index c05c1f406c7ff6e9caac538192c7fadced002c91..783dc7c8456b0412cf53c2921249e314a0a8d6d6 100644 GIT binary patch delta 80 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 delta 2809 zcmVf59&gh zTmgWD0l;*TI7e|ZE3OddDgXd@nX){&BsoQaTL>+22Uk}v z9w^R97b_GtVFF>AKrX_0nHe&HG!NkO%m4tOkrff(gY*4(&VLTB&dxTDwhmt{>c0m6 zB4T3W{^ifBa6kY6;dFk{{wy!E8h|?nfNlPwCGG@hUJIag_lst-4?wj5py}FI^Kkfn zJUm6Akh$5}<>chpO2k52Vaiv1{%68pz*qfj`F=e7_x0eu;v|7GU4cgg_~63K^h~83 z&yop*V%+ABM}Pdc3;+Bb(;~!4V!2o<6ys46agIcqjPo+3B8fthDa9qy|77CdEc*jK z-!%ZRYCZvbku9iQV*~a}ClFY4z~c7+0P?$U!PF=S1Au6Q;m>#f??3%Vpd|o+W=WE9 z003S@Bra6Svp>fO002awfhw>;8}z{#EWidF!3EsG3xE7zHiSYX#KJ-lLJDMn9CBbO ztb#%)hRv`YDqt_vKpix|QD}yfa1JiQRk#j4a1Z)n2%fLC6RbVIkUx0b+_+ zBaR3cnT7Zv!AJxWizFb)h!jyGOOZ85F;a?DAXP{m@;!0_Ifqlp|(=5QHQ7#Gr)$3XMd?XsE4X&sBct1q<&fbi3VB2Ov6t@q*0); zU*o*SAPZv|vv@2aYYnT0b%8a+Cb7-ge0D0knEf5Qi#@8Tp*ce{N;6lpQuCB%KL_KO zarm5cP6_8IrP_yNQcbz0DW*G2J50yT%*~?B)|oY% zJu%lZ=bPu7*PGwBU|M)uEVih&xMfMQuC{HqePL%}7iYJ{uEXw=y_0>qeSeMpJqHbk z*$%56S{;6Kv~mM9!g3B(KJ}#RZ#@)!hR=4N)wtYw9={>5&Kw=W)*2gz%* zkgNq+Eef_mrsz~!DAy_nvS(#iX1~pe$~l&+o-57m%(KedkbgIv@1Ote62cPUlD4IW zOIIx&SmwQ~YB{nzae3Pc;}r!fhE@iwJh+OsDs9zItL;~pu715HdQEGAUct(O!LkCy1<%NCg+}G`0PgpNm-?d@-hMgNe6^V+j6x$b<6@S<$+<4_1hi}TincS4LsjI}f zWY1>OX6feMEq|U{4wkBy=9dm`4cXeX4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u` z%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i&_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx) ziK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01)YTo*JycSU)_*JOM-ImyzW$x>cP$Mz4ONYt z#^NJzM0w=t_X*$k9t}F$c8q(h;Rn+nb{%IOFKR-X@|s4QQ=0o*Vq3aT%s$c9>fU<% zN829{oHRUHc}nwC$!Xf@g42^{^3RN&m7RTlF8SPG+oHC6=VQ*_Y7cMkx)5~X(nbG^ z=R3SR&VO9;xODQe+vO8ixL2C5I$v$-bm~0*lhaSfyPUh4uDM)mx$b(swR>jw=^LIm z&fWCAdGQwi*43UlJ>9+YdT;l|_x0Zv-F|W>{m#p~*>@-It-MdXU-UrjLD@syht)q@ z{@mE_+<$7occAmp+(-8Yg@e!jk@b%cLj{kSkAKUC4TkHUI6gT!;y-fz>HMcd&t%Ug zo)`Y2{>!cx7B7DI)$7;J(U{Spm-3gBzioV_{p!H$8L!*M!p0uH$#^p{Ui4P`?ZJ24 zcOCDe-w#jZd?0@)|7iKK^;6KN`;!@ylm7$*nDhK&GcDTy001CkNK#Dz0D2_=0Dyx4 z02=xK004mL004C`008P>0026e000+nl3&F}vt|kp15PaIW4IW<`*^^(IjCDVG3-t^DE9(G!f6rH!v_LZf9VqzPke`mMGi6@c;ks1^|7o5`pQD=Jx;q002ovPDHLkV1mbYBXIx# diff --git a/radio/src/fonts/std/font_fr_08x10.lbm b/radio/src/fonts/std/font_fr_08x10.lbm index 5be2553c5..58e6f8f7e 100644 --- a/radio/src/fonts/std/font_fr_08x10.lbm +++ b/radio/src/fonts/std/font_fr_08x10.lbm @@ -1 +1 @@ -0xc0,0x01,0xe0,0x03,0xb4,0x06,0x96,0x04,0xb3,0x04,0xe1,0x06,0xc0,0x02,0x00,0x00,0xc0,0x01,0xe0,0x03,0xb1,0x06,0x93,0x04,0xb6,0x04,0xe4,0x06,0xc0,0x02,0x00,0x00,0x00,0x03,0xa0,0x07,0xb1,0x04,0x93,0x04,0x96,0x02,0xf4,0x07,0xe0,0x07,0x00,0x00,0x04,0x04,0x16,0x04,0xf3,0x07,0xf6,0x07,0x04,0x04,0x00,0x04,0x00,0x00,0xe0,0x00,0xf0,0x01,0x18,0x0b,0x08,0x0e,0x08,0x06,0x18,0x03,0x10,0x01,0x00,0x00,0x00,0x00, +0xc0,0x01,0xe0,0x03,0xb4,0x06,0x96,0x04,0xb3,0x04,0xe1,0x06,0xc0,0x02,0xff,0x0f,0xc0,0x01,0xe0,0x03,0xb1,0x06,0x93,0x04,0xb6,0x04,0xe4,0x06,0xc0,0x02,0xff,0x0f,0x00,0x03,0xa0,0x07,0xb1,0x04,0x93,0x04,0x96,0x02,0xf4,0x07,0xe0,0x07,0xff,0x0f,0x04,0x04,0x16,0x04,0xf3,0x07,0xf6,0x07,0x04,0x04,0x00,0x04,0xff,0x0f,0xff,0x0f,0xe0,0x00,0xf0,0x01,0x18,0x0b,0x08,0x0e,0x08,0x06,0x18,0x03,0x10,0x01,0xff,0x0f, diff --git a/radio/src/fonts/std/font_fr_08x10.png b/radio/src/fonts/std/font_fr_08x10.png index f9ad08c8b5e9abe72dd876a22e22cf54c932d222..7f3d79bc9a66710af7ec3971b6551f2ac6fde8e2 100644 GIT binary patch delta 2790 zcmV;QlP9${Ff#{e35u39)87vVOh&UxnkS?~*ikKRgEM^!b zX1*vv5zC1=VUZ0!`z*4fnAxd3wur?!r?XSpV(u03woD;M#E7qm3p2T#ED_%lu||q8 zl`G;m;@DIUGXnq=No*H?a9D{VHW4w29}?su;^hF~NC{tY+*d5%WDCTXa!E_i;d2ub z1#}&jF5T4HnnCyEWTkKf0>c0%E1Ah>(_PY1)0w;+02c53Su*0<(nUqKG_|(0G&D0Z z{i;y^b@OjZ+}lNZ8Th$p5Uu}Y zB~8euXQVS(9J=A3hxi`{{&gM(L7aFFpTiSHgo&n%%S#Zoo5$t~xM@5(m-nBV_z%PW zq{X=wiPHEHP-BdLfYfy=Kz{89C<+lE(fh?+|D$id_%I-TdEqLPi*x_)H~nY9rQ#)n zoA5c#B`Ac>67n+__r%W3O|GA z5P%R78lsAS7$OYB1@T9ska&cTtVfEF3ZwyPMY@qbwx1%qjZ=)yB zuQ3=54Wo^*!gyjLF-e%Um=erBOdIALW)L%unZsg#vGQ1btR2=L%ft$>h1e?WQS4dl z5OxCl21mrH;LLFDxF{SCmyfH!9l@Q!4dEtn3wSBKCf)|`k7wg^@TK@hd^i3&egeNh zkS1so>_C83pYk??@5*JW(Ig>h z2k8)h=^W`U=_Q#=)*?HSqsRjC4stX30{Id7jRZx)NWx2kEwMqOMxsMvNaDF9UQ$!i zNpiJhu4IMe3CZh{Gg5ddEh!f%rqp_=8mW^~BT{qH6lqgwf9X`|66qt-SEQ$8urgXQ zZZd3{0-1v{7i7jM2t}RZLSa!hQyM83DHBwG3{{)zMNOg>Q@^7QP-kUjWS7Z?$!5#e z$exxRr6DveninmFR!Tcg8>YQmqO`QdXKtffUuk1xHa2rKF-1}UypJgC^OIH#n4 ztmL7Tu2iLTL1{*rrtGMkq+G6iMtNF=qGGSYRVi0FtMZgCOLwBD&@1V^^jTF!RZmr+ zYQ5@!>VlfKTBusSTASKKb%HuWJzl+By+?gkLq)?+BTu76*gyjC_sqjXI5<8*3Ox8SgUgGyZ5|VUl9f zXma0F#?;$1-?ZEGcQZXRmRXJ2EpxKDyZHw5F7p@5^p|m#?O%4sf@0xkvDKn~$Kr#f zl_lS@)pFWO!z$LQ)@p=7Wdtxv7?-Wl*3Q-&tWR0LwXw7j*c`X{&DPL1+4hL-)N<|R zoaK$n$L-YYn0EDcqxN+BSo;I^qYkPLOos-C$BycbY{w?YNhe*WB&VZJ&z()2`OfXm z^DZ_n>s-#cBCZ~;MXm#GGH#)NZq;s&+|}F@+*{mdJuE!ddYtn_d-{0p@*MF}@?v>4 zd(C=Vd9U;C^&$BL`&9cp_SN&{`*!=me%^k&{T{5)T)|t>=@0z9{CE354A2f(6Yygo zCNLndCh$p+X;5BJUoa&&CiqD3>k#LV(vbV1I-$bQo-oO<=&{&C* z_u)5XKpCqtx&&0w&s4uqN4P~emT8|^lldkqEbBzJbT%)$KSwWTd(LF8d+xVuQEORi zd-7ECHsy`2b6Quw9$Fu_zGs8_hJpTWll-!O{8yX9H+L5(6>KaR z-{P^QrBI@fUpTVWc5B@>)Hd$6f$iqotG0hEVi#R4HYu(seqX{Wx%!RiHe#iZ-bxL)`b?**v58SEusPAadYN$AfIhc9y zNn==J-?xl!o0}Axikm(h;vE`29CWz1*{Zquh~kmb7Pv*&GJQ1q=#B4Ozw2r>Y^`sj zwG|%&$Arh8ejoe&@Nu8xJtr6^T7S^|p|+jUUep0~4hfb-UsyQuty7Ua;Ou?B?XLHZaol8GAb3Wnxcu!2v{R_`T4=x`(GvqLI z{-*2AOSim#Ze6>*;`ZQh=^oC;Q|`XFmw9jD{>BIB2SpF19#%Y3eAMu> z?$2$bmZPV~T*vw!2S2_)&KiIAOU5tnCkmdBpHxh$Og2xMO`V!{pT6;Q<CYBs z3V)UUwf4Er^B;b5{H=dBVs_#M|HY@@OJ2&qJoIWe*{hzpfVoGnQ(rI47rl{xbNDUe zZQr}_casZQ@3HSIKj?nw{^;}Z!Kc(upZ)~{nDhLRz*^h0y$TNl3ISqEM??UK1szC{ zAs2rD2XskIMF-ss1PKugeOQaL0001FNkl?*2m{OiKfMho6f~KMmS8m=p3h%>5FkLrtZYW sQsOxe6U7<{907*qoM6N<$g1C}XF8}}l delta 2846 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 diff --git a/radio/src/fonts/std/font_fr_10x14.lbm b/radio/src/fonts/std/font_fr_10x14.lbm index 081e4fe70..f7b7edd89 100644 --- a/radio/src/fonts/std/font_fr_10x14.lbm +++ b/radio/src/fonts/std/font_fr_10x14.lbm @@ -1 +1 @@ -0x80,0x1f,0xc0,0x3f,0xe0,0x76,0x68,0x66,0x6c,0x66,0x66,0x66,0x62,0x66,0xe0,0x66,0xc0,0x07,0x80,0x07,0x80,0x1f,0xc0,0x3f,0xe0,0x76,0x62,0x66,0x66,0x66,0x6c,0x66,0x68,0x66,0xe0,0x66,0xc0,0x07,0x80,0x07,0x00,0x18,0x00,0x3c,0x60,0x7e,0x62,0x66,0x66,0x66,0x6c,0x66,0x68,0x66,0xe0,0x66,0xc0,0x7f,0x80,0x7f,0x00,0x00,0x00,0x00,0x98,0x61,0x98,0x61,0x86,0x7f,0x86,0x7f,0x18,0x60,0x18,0x60,0x00,0x00,0x00,0x00,0xe0,0x07,0xf0,0x0f,0x38,0x9c,0x18,0xd8,0x18,0x78,0x18,0x38,0x18,0x18,0x18,0x1c,0x00,0x0e,0x00,0x06, +0x80,0x1f,0xc0,0x3f,0xe0,0x76,0x68,0x66,0x6c,0x66,0x66,0x66,0x62,0x66,0xe0,0x66,0xc0,0x07,0x80,0x07,0x80,0x1f,0xc0,0x3f,0xe0,0x76,0x62,0x66,0x66,0x66,0x6c,0x66,0x68,0x66,0xe0,0x66,0xc0,0x07,0x80,0x07,0x00,0x18,0x00,0x3c,0x60,0x7e,0x62,0x66,0x66,0x66,0x6c,0x66,0x68,0x66,0xe0,0x66,0xc0,0x7f,0x80,0x7f,0x98,0x61,0x98,0x61,0x86,0x7f,0x86,0x7f,0x18,0x60,0x18,0x60,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0x07,0xf0,0x0f,0x38,0x9c,0x18,0xd8,0x18,0x78,0x18,0x38,0x18,0x18,0x18,0x1c,0x00,0x0e,0x00,0x06, diff --git a/radio/src/fonts/std/font_fr_10x14.png b/radio/src/fonts/std/font_fr_10x14.png index 39ca61147bae5533063d9dbc2bd4a220c6a75c3f..d78f9c95ad16559f445feff3d9a332cd22498381 100644 GIT binary patch delta 200 zcmV;(05|{V0rmlqHh%$POGiWihy@);00009a7bBm000XU000XU0RWnu7ytkO2XskI zMF-ss1PTuqAv(j^0001XNklST6olcED4>YM0+GGKD^o;zjFL_823de% zu1o0^+|fSd3JKvnxaKQP`q6yWhX;@2tnF=v`D1Svo|F||1IL` znC%jHbfON1P6D8LtCA+fpX;4eUO>G&zfNE0bL~EgTq_DjNynIIA!Df(JkBncz6CQQdSJXV+_-TM^{9jRM)a zV2vOSRbecsi)jfi2TfU^BxMI5(i&jhlg1v+&-G6He~Hr5AzI(A7OC9hmqJ*!ay3o> O0000zopr03!tz&;S4c diff --git a/radio/src/fonts/std/font_it_08x10.lbm b/radio/src/fonts/std/font_it_08x10.lbm index 8d92e52ad..4572dc5dd 100644 --- a/radio/src/fonts/std/font_it_08x10.lbm +++ b/radio/src/fonts/std/font_it_08x10.lbm @@ -1 +1 @@ -0x00,0x03,0xa0,0x07,0xb2,0x04,0x96,0x04,0x94,0x02,0xf0,0x07,0xe0,0x07,0x00,0x00,0xf0,0x01,0xf0,0x03,0x02,0x06,0x06,0x04,0x04,0x02,0xf0,0x07,0xf0,0x07,0x00,0x00, +0x00,0x03,0xa0,0x07,0xb2,0x04,0x96,0x04,0x94,0x02,0xf0,0x07,0xe0,0x07,0xff,0x0f,0xf0,0x01,0xf0,0x03,0x02,0x06,0x06,0x04,0x04,0x02,0xf0,0x07,0xf0,0x07,0xff,0x0f, diff --git a/radio/src/fonts/std/font_it_08x10.png b/radio/src/fonts/std/font_it_08x10.png index a1753b5b7e5473240e39d56735466557d557d24a..ebd2cfc5f3e8ddb82f71b52c5748748d4a4c1995 100644 GIT binary patch delta 124 zcmbQoxSDZ-St(Eal|aXtCR_x^`>EZfr0OEmO2i}4uiNYq6bm_!&vL>Nf;B)qU-6k%sD X;pXp`xqEU8P#c4%tDnm{r-UW|cK0Dw delta 86 zcmZ3@IFE6H*+gdcI978y+C;#|A|KXp?w&&+18+r~;<1yBi qtcx--i86|aGLrC1d11pT!p>m2n}50I-<%4dHU>{uKbLh*2~7YuTOKq3 diff --git a/radio/src/fonts/std/font_pl_04x06.lbm b/radio/src/fonts/std/font_pl_04x06.lbm index f16f231db..65e843759 100644 --- a/radio/src/fonts/std/font_pl_04x06.lbm +++ b/radio/src/fonts/std/font_pl_04x06.lbm @@ -1 +1 @@ -0x18,0x24,0x14,0x3c,0x40,0x18,0x24,0x24,0x02,0x01,0x18,0x34,0x2c,0x48,0x00,0x00,0x29,0x3f,0x24,0x00,0x3c,0x06,0x05,0x38,0x00,0x18,0x26,0x25,0x18,0x00,0x28,0x2c,0x36,0x15,0x00,0x24,0x35,0x2d,0x24,0x00,0x24,0x34,0x2e,0x25,0x00,0x3e,0x09,0x69,0x5e,0x00,0x1c,0x22,0x22,0x15,0x00,0x3f,0x25,0x65,0x41,0x00,0x3f,0x28,0x24,0x24,0x00,0x3e,0x0c,0x11,0x3e,0x00,0x1c,0x22,0x22,0x1d,0x00,0x24,0x2a,0x2b,0x12,0x00,0x22,0x33,0x2a,0x26,0x00,0x22,0x32,0x2b,0x26,0x00, +0x18,0x24,0x14,0x3c,0x40,0x18,0x24,0x24,0x02,0x01,0x18,0x34,0x2c,0x48,0x7f,0x00,0x29,0x3f,0x24,0x7f,0x3c,0x06,0x05,0x38,0x7f,0x18,0x26,0x25,0x18,0x7f,0x28,0x2c,0x36,0x15,0x7f,0x24,0x35,0x2d,0x24,0x7f,0x24,0x34,0x2e,0x25,0x7f,0x3e,0x09,0x69,0x5e,0x7f,0x1c,0x22,0x22,0x15,0x7f,0x3f,0x25,0x65,0x41,0x7f,0x3f,0x28,0x24,0x24,0x7f,0x3e,0x0c,0x11,0x3e,0x7f,0x1c,0x22,0x22,0x1d,0x7f,0x24,0x2a,0x2b,0x12,0x7f,0x22,0x33,0x2a,0x26,0x7f,0x22,0x32,0x2b,0x26,0x7f, diff --git a/radio/src/fonts/std/font_pl_04x06.png b/radio/src/fonts/std/font_pl_04x06.png index b49d3e8baaa5f18c7928bae9231322109a59f6ab..5f0355deb9894f3c89fb1515e8b3792c1f2e66f1 100644 GIT binary patch delta 184 zcmdnU_>6IaSv_Ntx4R2N2dk_H0|NtRfk$L90|U1(2s1Lwnj--eWH0gbb!ETH!z{|G z@m%iKETB-Dr;B3<$92YNh9&PfQ_C+;=TNh*=3r@P$z~Fs$nX%YriRX%jbG9}xta-}j;lQ*+!N>`y>HE+3 h)%U*H_E+Eg-oVJE!6El=l_F4>!PC{xWt~$(699H&KG*;N delta 130 zcmV-|0Db@F0kHv)HhX4CL_t&t*8y7qr2hc_zdi4>?D`k)yS~5x|9`vRf7@pFws8nR z0F396&LIn0G?lOKKmcpgHnjWLUh|c+-oOA$&$hQWyIS|9y}iHytmhWYVG8CjwqpoD k0QdX<|Ns7fpa1{=z;Bf``pk(7;Q#;t07*qoM6N<$f@o$$pa1{> diff --git a/radio/src/fonts/std/font_pl_05x07.lbm b/radio/src/fonts/std/font_pl_05x07.lbm index 6c92d7afd..6ca6f3c3f 100644 --- a/radio/src/fonts/std/font_pl_05x07.lbm +++ b/radio/src/fonts/std/font_pl_05x07.lbm @@ -1 +1 @@ -0x20,0x54,0x54,0xd4,0xb8,0x38,0x44,0x46,0x45,0x28,0x38,0x54,0x54,0xd4,0x98,0x00,0x49,0x7f,0x44,0x00,0x7c,0x08,0x06,0x05,0x78,0x38,0x44,0x46,0x45,0x38,0x48,0x54,0x56,0x55,0x20,0x44,0x65,0x55,0x4c,0x44,0x44,0x64,0x56,0x4d,0x44,0x7e,0x09,0x09,0xc9,0xbe,0x3c,0x42,0x42,0x43,0x24,0x7f,0x49,0x49,0xc9,0x81,0x08,0x7f,0x44,0x44,0x40,0x7e,0x08,0x12,0x21,0x7e,0x3c,0x42,0x42,0x43,0x3c,0x4c,0x52,0x52,0x53,0x24,0x62,0x52,0x4b,0x4a,0x46,0x62,0x52,0x4a,0x4b,0x46,0x3c,0x3c,0x24,0x42,0xff,0x24,0x18,0x81,0x42,0x3c, +0x20,0x54,0x54,0xd4,0xb8,0x38,0x44,0x46,0x45,0x28,0x38,0x54,0x54,0xd4,0x98,0x49,0x7f,0x44,0xff,0xff,0x7c,0x08,0x06,0x05,0x78,0x38,0x44,0x46,0x45,0x38,0x48,0x54,0x56,0x55,0x20,0x44,0x65,0x55,0x4c,0x44,0x44,0x64,0x56,0x4d,0x44,0x7e,0x09,0x09,0xc9,0xbe,0x3c,0x42,0x42,0x43,0x24,0x7f,0x49,0x49,0xc9,0x81,0x08,0x7f,0x44,0x44,0x40,0x7e,0x08,0x12,0x21,0x7e,0x3c,0x42,0x42,0x43,0x3c,0x4c,0x52,0x52,0x53,0x24,0x62,0x52,0x4b,0x4a,0x46,0x62,0x52,0x4a,0x4b,0x46,0x3c,0x3c,0x24,0x42,0xff,0x24,0x18,0x81,0x42,0x3c, diff --git a/radio/src/fonts/std/font_pl_05x07.png b/radio/src/fonts/std/font_pl_05x07.png index 85d8754813d68378609e1b8598890e9cfbaffc90..3b08bfa9a7b847d27606dbcb60f1f23905a0c4c1 100644 GIT binary patch delta 205 zcmX@Y_?vNpSv_Ntx4R2N2dk_H0|NtRfk$L90|U1(2s1Lwnj--eWH0gbb!ETH!@?<} z+cN*@0-#W}r;B3<$92X6hW`Hy|Lgp|Z+=t7{eAEK+6@f<{`=ls}t?t9AvhR<`HE&sld6P|hgoNod{^FenjYq#6;ey_Z^_iO?~@qBmd>$~Ut z-gvM2$ODF+Bz6}C<|GL#MUXMif1dyU|Gzzm_`9Lk$oA6>x09(rcQAOm`njxgN@xNA Du#8u1 delta 150 zcmV;H0BQgG0mK22Hh+0ZL_t&t*JJo!Z})xkn=0<_d+*n7VEFfc@B8}Oi+-;%WU#!z z(33pnm;&>hA3M)|Z+XD*d9JbL-xqSiGtZy%O<-s~xZTS7_PpOKFYY~?z)(DYyY=%Q6Hh%$POGiWihy@);00009a7bBm000XU000XU0RWnu7ytkO2XskI zMF-ss1PK!svJ4PQ0002SNkltbywBVjv<kf!(IvmqA_aBbJqv<;k~CMVH*aHL`=vGKY3rmO#HmY6>mqh`O&10y73RV W$&57d;GG=p*ps_iEo;&6p8n(IE>icZ_-!mPI|;kr#Ysx~pZCFP=zv?vbf`9-n%Xxik)EIxWjM(YM~ zJPCh0w?C@q9dn&@QpW1D?)uO&^yPJ!#W7L!;FqF~6E8p2Fm`>SQnwHuV%Y`R>w`*M zN8z&4*rNWjb!fyh9IpGalR0ZqwCm+uJm2TDO8@^$xG|Ie@kv$suZL_A)1wE3sjPd_ YFCa$G=t8|LcmMzZ07*qoM6N<$f=oNCKmY&$ delta 324 zcmV-K0lWUD1MmWnHGcsmNkl#^v+T93eXN~u zS;;1=zf8@o_&wy)?U?s6XR{`4HmkY#e4o!M`gfN$MKSq5FLg!FKO_T(r+9kSL;e?0 Ws?~Eu-Bu+40000>}7w!S|gH1AG_zwbmff;xXm<0f{k4J2M@hKSq O0000;Ha+ zd#^*USC^FUx?bJ)c*pfxhMr`JV}{iS1>DR_V#Qr=GnCJLUU{$j-t*nX#dDrpo?~EP zWN;8DZenPzhVa2;Pu%zYVE!3~5?OY~3-^Hf4M8RuG5iOCy%_&t008~_NP6$o(G&mx N002ovPDHLkV1l&|Pyzq| diff --git a/radio/src/fonts/std/font_pt_08x10.lbm b/radio/src/fonts/std/font_pt_08x10.lbm index ac3c9fafb..6ffcb0215 100644 --- a/radio/src/fonts/std/font_pt_08x10.lbm +++ b/radio/src/fonts/std/font_pt_08x10.lbm @@ -1 +1 @@ -0xf0,0x07,0xf8,0x07,0x88,0x00,0x8c,0x00,0x8b,0x00,0x89,0x00,0xf8,0x07,0xf0,0x07,0x00,0x03,0xa0,0x07,0xb0,0x04,0x90,0x04,0x98,0x02,0xf6,0x07,0xe2,0x07,0x00,0x00,0xf0,0x07,0xfa,0x07,0x8b,0x00,0x89,0x00,0x89,0x00,0x8b,0x00,0xfa,0x07,0xf0,0x07,0x00,0x03,0xa4,0x07,0xb6,0x04,0x93,0x04,0x96,0x02,0xf4,0x07,0xe0,0x07,0x00,0x00,0xf0,0x07,0xfa,0x07,0x89,0x00,0x89,0x00,0x8b,0x00,0x8a,0x00,0xfa,0x07,0xf1,0x07,0x00,0x03,0xa0,0x07,0xb4,0x04,0x92,0x04,0x96,0x02,0xf4,0x07,0xe2,0x07,0x00,0x00,0xf0,0x07,0xf8,0x07,0x89,0x00,0x8b,0x00,0x8c,0x00,0x88,0x00,0xf8,0x07,0xf0,0x07,0x00,0x03,0xa0,0x07,0xb2,0x04,0x96,0x04,0x98,0x02,0xf0,0x07,0xe0,0x07,0x00,0x00,0xf8,0x00,0xfc,0x01,0x8e,0x0b,0x06,0x0f,0x02,0x06,0x02,0x02,0x06,0x03,0x04,0x01,0xe0,0x00,0xf0,0x01,0x18,0x0b,0x08,0x0e,0x08,0x06,0x18,0x03,0x10,0x01,0x00,0x00,0xf8,0x07,0xf8,0x07,0x48,0x04,0x4c,0x04,0x4b,0x04,0x49,0x04,0x08,0x04,0x00,0x00,0xc0,0x01,0xe0,0x03,0xb0,0x06,0x9c,0x04,0xb6,0x04,0xe2,0x06,0xc0,0x02,0x00,0x00,0xf8,0x07,0xfa,0x07,0x4b,0x04,0x49,0x04,0x49,0x04,0x4b,0x04,0x0a,0x04,0x00,0x00,0xc0,0x01,0xe4,0x03,0xb6,0x06,0x93,0x04,0xb6,0x04,0xe4,0x06,0xc0,0x02,0x00,0x00,0x00,0x00,0x08,0x04,0x08,0x04,0xfc,0x07,0xfb,0x07,0x09,0x04,0x08,0x04,0x00,0x00,0x00,0x00,0x00,0x04,0x10,0x04,0xf4,0x07,0xf3,0x07,0x01,0x04,0x00,0x04,0x00,0x00,0xe0,0x01,0xf0,0x03,0x18,0x06,0x08,0x04,0x0c,0x04,0x1b,0x06,0xf1,0x03,0xe0,0x01,0xc0,0x01,0xe0,0x03,0x30,0x06,0x18,0x04,0x36,0x06,0xe2,0x03,0xc0,0x01,0x00,0x00,0xe0,0x01,0xf2,0x03,0x1b,0x06,0x09,0x04,0x09,0x04,0x1b,0x06,0xf2,0x03,0xe0,0x01,0xc0,0x01,0xe4,0x03,0x36,0x06,0x13,0x04,0x36,0x06,0xe4,0x03,0xc0,0x01,0x00,0x00,0xe2,0x01,0xf1,0x03,0x19,0x06,0x0b,0x04,0x0a,0x04,0x1a,0x06,0xf1,0x03,0xe0,0x01,0xc0,0x01,0xe4,0x03,0x32,0x06,0x16,0x04,0x34,0x06,0xe2,0x03,0xc0,0x01,0x00,0x00,0xfc,0x01,0xfc,0x03,0x00,0x06,0x04,0x04,0x03,0x04,0x01,0x06,0xfc,0x03,0xfc,0x01,0xf0,0x01,0xf0,0x03,0x00,0x06,0x04,0x04,0x03,0x02,0xf1,0x07,0xf0,0x07,0x00,0x00, +0xf0,0x07,0xf8,0x07,0x88,0x00,0x8c,0x00,0x8b,0x00,0x89,0x00,0xf8,0x07,0xf0,0x07,0x00,0x03,0xa0,0x07,0xb0,0x04,0x90,0x04,0x98,0x02,0xf6,0x07,0xe2,0x07,0xff,0x0f,0xf0,0x07,0xfa,0x07,0x8b,0x00,0x89,0x00,0x89,0x00,0x8b,0x00,0xfa,0x07,0xf0,0x07,0x00,0x03,0xa4,0x07,0xb6,0x04,0x93,0x04,0x96,0x02,0xf4,0x07,0xe0,0x07,0xff,0x0f,0xf0,0x07,0xfa,0x07,0x89,0x00,0x89,0x00,0x8b,0x00,0x8a,0x00,0xfa,0x07,0xf1,0x07,0x00,0x03,0xa0,0x07,0xb4,0x04,0x92,0x04,0x96,0x02,0xf4,0x07,0xe2,0x07,0xff,0x0f,0xf0,0x07,0xf8,0x07,0x89,0x00,0x8b,0x00,0x8c,0x00,0x88,0x00,0xf8,0x07,0xf0,0x07,0x00,0x03,0xa0,0x07,0xb2,0x04,0x96,0x04,0x98,0x02,0xf0,0x07,0xe0,0x07,0xff,0x0f,0xf8,0x00,0xfc,0x01,0x8e,0x0b,0x06,0x0f,0x02,0x06,0x02,0x02,0x06,0x03,0x04,0x01,0xe0,0x00,0xf0,0x01,0x18,0x0b,0x08,0x0e,0x08,0x06,0x18,0x03,0x10,0x01,0xff,0x0f,0xf8,0x07,0xf8,0x07,0x48,0x04,0x4c,0x04,0x4b,0x04,0x49,0x04,0x08,0x04,0xff,0x0f,0xc0,0x01,0xe0,0x03,0xb0,0x06,0x9c,0x04,0xb6,0x04,0xe2,0x06,0xc0,0x02,0xff,0x0f,0xf8,0x07,0xfa,0x07,0x4b,0x04,0x49,0x04,0x49,0x04,0x4b,0x04,0x0a,0x04,0xff,0x0f,0xc0,0x01,0xe4,0x03,0xb6,0x06,0x93,0x04,0xb6,0x04,0xe4,0x06,0xc0,0x02,0xff,0x0f,0x08,0x04,0x08,0x04,0xfc,0x07,0xfb,0x07,0x09,0x04,0x08,0x04,0xff,0x0f,0xff,0x0f,0x00,0x04,0x10,0x04,0xf4,0x07,0xf3,0x07,0x01,0x04,0x00,0x04,0xff,0x0f,0xff,0x0f,0xe0,0x01,0xf0,0x03,0x18,0x06,0x08,0x04,0x0c,0x04,0x1b,0x06,0xf1,0x03,0xe0,0x01,0xc0,0x01,0xe0,0x03,0x30,0x06,0x18,0x04,0x36,0x06,0xe2,0x03,0xc0,0x01,0xff,0x0f,0xe0,0x01,0xf2,0x03,0x1b,0x06,0x09,0x04,0x09,0x04,0x1b,0x06,0xf2,0x03,0xe0,0x01,0xc0,0x01,0xe4,0x03,0x36,0x06,0x13,0x04,0x36,0x06,0xe4,0x03,0xc0,0x01,0xff,0x0f,0xe2,0x01,0xf1,0x03,0x19,0x06,0x0b,0x04,0x0a,0x04,0x1a,0x06,0xf1,0x03,0xe0,0x01,0xc0,0x01,0xe4,0x03,0x32,0x06,0x16,0x04,0x34,0x06,0xe2,0x03,0xc0,0x01,0xff,0x0f,0xfc,0x01,0xfc,0x03,0x00,0x06,0x04,0x04,0x03,0x04,0x01,0x06,0xfc,0x03,0xfc,0x01,0xf0,0x01,0xf0,0x03,0x00,0x06,0x04,0x04,0x03,0x02,0xf1,0x07,0xf0,0x07,0xff,0x0f, diff --git a/radio/src/fonts/std/font_pt_08x10.png b/radio/src/fonts/std/font_pt_08x10.png index fe2f3adda2c516a298f37ba3fdb90a2ee9103833..59f9c123ef45447adb3568581824e322baededfb 100644 GIT binary patch delta 239 zcmV%Q6Uw;e)2^Af4gl8M?2?UX#;Otm*kq8x1|CCo_gW&rt@5dK+Hs11qJFZ##s(Qw~;Cqec zQQCEN+iy73%3iPUy0nvB6L5QVvO6}uV1H(LIyE8g)yQKOW@sFRp@s*eHQumc!4Nvh z6Q{ICCyJZTv_+ zb<7+&mg3{46?4aY7!PAB#*Qd-1G8hdEB?cI{fzg;XLnoAr&3bfe3L(Qr8sdCg5=Ge e@Hf+hw|M~{p{_0Y+inN|0000YGn)mY!~_aj=cRfc!=$CV_NLi0K+q;j{Psn09Bf_JXE?7`3o1~kIt8O5Au)@o3u z9}5p^%L1eXnaJ}{B(i4+ro&DdcwDXmT%0P2>B&ccY1`!lC(Dh;Wg1~QEhL85W>iCf zSXgR^RYa&?TxX68LmmJLq9F|d%B_NgHp6MJ1HAjF_*amHl@ZYlgstEXC6lS;n14I-Fs#r#lz@93$4Zd&ZiY zsb28MJrYn;;0=Ac5+$k7yen8M_xrheyP_IixQW?=p%DydC6|SVNP{w&6du&X0@6&% zD7^?pl#Yyr`FL0b9+#T{H!(^~&Rzpd1};Z9+wMIs+X+?+)EHiyNs9%Zm@M94_qv`|yyS@S984QDl1~Lx-0000Eal|aXop)s+DO6KGd#X#_rsG%8+<0Eal|ab2}%BkutP9+r9)FLAlPk}K;HWG4t1x5$Mp*z{QC>dTT#j-h9H zvQOx-exL9%VpVSbm0SAT=d{i&mdKI;Vst0N-dfMF0Q* delta 118 zcmV-+0Ez$50loo{HjzUdYz7Mn7dMF7&E^0A082?kK~xCWC5*8R03i$my%J?4FPD-! zRpv>7n1KN@0~O?XH>cA{#(6_dOLwektB~hJCL)HGxf@CBEgw_`AVi+ER?X4-AOru| Y1>{XDQvo1Lga7~l07*qoM6N<$g34(t8vp0^^Wy!4%+niL8G3w!xHl+Vc~)+#&MuvBlglo~ z>-k+ltE}%o7AUW8V!7BS#J%=P)8!DZ3 zi{Y4U#H~Ba6!@8^F&wwyHH=wix~GZ{B>HL2QO&(oatz09|Np-8-1axnglS87nH;9< zeP4ZxA!X)C%R9-cdR12#(srtHL`_!JWsYG;+j^jIR*LOwpt)&l&Kgcj2a3iqOkvdZ z3Y)Stuj&@VccA8b-}e9shAXX#3_>Xu$1Nu@ES5NCc_wYga)BO(%Ph}0{MdG+YxFRD zka%W!B5g;yB@e@Au!0%OK}=Rf#tSJb2Y}ijhV6Y{e~&?=Rl~3^m66{$jv-m%ERboL zUNny(Su)qKYpQ8>@jV7%*0qKW)7It!nS~-}ja<^^<^h={Gj+ZE(i-`l4={YUeP4Ya zY$C(Qbt~ zD$O2-uRsOo5(Extf?RgK`oee3cR+35_r9*4|9$V-==(6{+N`?_BCL#te94Tu$qB4ZOAZHcWrhwgNTfdQ%hRo*{Hh=3eE_?l&O;9&DH8wy N002ovPDHLkV1oY@`qBUZ diff --git a/radio/src/fonts/stdv2/font_04x06_extra.lbm b/radio/src/fonts/stdv2/font_04x06_extra.lbm deleted file mode 100644 index cce1e9d68..000000000 --- a/radio/src/fonts/stdv2/font_04x06_extra.lbm +++ /dev/null @@ -1 +0,0 @@ -0x04,0x02,0x3b,0x02,0x04,0x08,0x10,0x37,0x10,0x08,0x20,0x12,0x0a,0x02,0x1e,0x02,0x24,0x28,0x20,0x3c,0x3c,0x20,0x28,0x24,0x02,0x1e,0x02,0x0a,0x12,0x20, diff --git a/radio/src/fonts/stdv2/font_04x06_extra.png b/radio/src/fonts/stdv2/font_04x06_extra.png deleted file mode 100644 index dd59c2e2baf81a726c751c2ab0a129c819ca0638..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 159 zcmeAS@N?(olHy`uVBq!ia0vp^azM<^$P6S^)$=z2DYgKg5LY1m|NsA`H|O64vN#Jo zB8wRqxP?KOkzv*x37{Z*iKnkC`&~9}Zc)avOYbHFg>*b!978y+C-3pLmE=`EjR$vrX{ehMIN?TLzi={EIrj z)5FWl`#oT%)@Ni75go8o%hPi;pJ0vQ+f|i}5Uhf&-Ie=n-iZ`bqBK0ePZ+ud6ixSztqs0Vul0eAa{+EdX|I*NSR+s zbtPWmC_}%$p~Q=w6z)a*EuCBAYS&2!Sjq}T;U>docTYv25KM8I6{*8z3x8x2Xdpxf zcM4R_#B2j()3c~tQr8H>Ulx5lr>#1$eX8A}RWZ_d99WN{XF zL>4nJa0`PlBg3pY5H=O_PcD{+@gZnssFwMh4egK978y+C-3iK5`zu$A7RG_mR4jHp5*6`}3Su439|Y!Lc1JM-HD(^Q$dD;PaD zcOSp#T-*DKU>-err*-ZcEu1^h4Vdox4{vl@&IxjYIo_JITo7mrkv>7_0snCN9-C|GV{pE}H46J6s6s&zHLB~U?d3s(>X z*kvXWus&l;amE;<^yvuL4gvERi({ODpt9_0ODw4)HF<@wyb9Qs3K*p-OM=YHmgUTLD z&m*uMT&w{Efv`seqYgV1;q{Re+#YGxdL4w2hGH-ugY^Yaum{o2x@z}cHsXzAY{i1e zkMIu?p%B_akxt6k&_kaf3<<(}2t^$KOw;lc&JY{N2%gqIQeEOuUp%TDBn@~+2(cII zahh9T9RdioOiK&2Hq?7!4VU6r$GBKSR7DS?15E0ss=BK10%^RWY;W8nSTW^}Y+sCvgiqVk z*~kr*#hA~|rZ6akTZ_=UnXLx=5L_@>G(k^X^glLm{7@K1e=Yz3002ovPDHLkV1hqD BUp)W- diff --git a/radio/src/fonts/stdv2/font_10x14.lbm b/radio/src/fonts/stdv2/font_10x14.lbm deleted file mode 100644 index 1adf78d9e..000000000 --- a/radio/src/fonts/stdv2/font_10x14.lbm +++ /dev/null @@ -1,6 +0,0 @@ -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x71,0xfe,0x71,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x7e,0x00,0x00,0x00,0x00,0x00,0x7e,0x00,0x3e,0x00,0x00,0x00,0x00,0x00,0x60,0x06,0x60,0x06,0xfe,0x7f,0xfe,0x7f,0x60,0x06,0x60,0x06,0xfe,0x7f,0xfe,0x7f,0x60,0x06,0x60,0x06,0x60,0x18,0xf0,0x18,0x98,0x19,0x98,0x19,0xfe,0x7f,0xfe,0x7f,0x98,0x19,0x98,0x19,0x18,0x0f,0x18,0x06,0x0c,0x18,0x1e,0x1c,0x1e,0x0e,0x0c,0x07,0x80,0x03,0xc0,0x01,0xe0,0x30,0x70,0x78,0x38,0x78,0x18,0x30,0x78,0x1e,0xfc,0x3f,0x8e,0x71,0xc6,0x63,0xe6,0x67,0x76,0x66,0x3c,0x3c,0x18,0x3c,0x00,0x66,0x00,0x66,0x00,0x00,0x00,0x00,0x66,0x00,0x76,0x00,0x3e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x07,0xf0,0x0f,0x38,0x1c,0x1c,0x38,0x0e,0x70,0x06,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x60,0x0e,0x70,0x1c,0x38,0x38,0x1c,0xf0,0x0f,0xe0,0x07,0x00,0x00,0x00,0x00,0x60,0x06,0x60,0x06,0xc0,0x03,0x80,0x01,0xf8,0x1f,0xf8,0x1f,0x80,0x01,0xc0,0x03,0x60,0x06,0x60,0x06,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xf8,0x1f,0xf8,0x1f,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x66,0x00,0x76,0x00,0x3e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x78,0x00,0x78,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x1c,0x00,0x0e,0x00,0x07,0x80,0x03,0xc0,0x01,0xe0,0x00,0x70,0x00,0x38,0x00,0x18,0x00, -0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x60,0x0e,0x70,0xfc,0x3f,0xf8,0x1f,0xff,0xff,0xff,0xff,0x00,0x00,0x18,0x60,0x1c,0x60,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x00,0xff,0xff,0xff,0xff,0x18,0x78,0x1c,0x7c,0x0e,0x6e,0x06,0x67,0x86,0x63,0xce,0x61,0xfc,0x60,0x78,0x60,0xff,0xff,0xff,0xff,0x06,0x60,0x06,0x60,0x86,0x61,0x86,0x61,0x86,0x61,0xce,0x73,0xfc,0x3f,0x78,0x1e,0xff,0xff,0xff,0xff,0x80,0x07,0xc0,0x07,0xe0,0x06,0x70,0x06,0x38,0x06,0x1c,0x06,0xfe,0x7f,0xfe,0x7f,0xff,0xff,0xff,0xff,0x7e,0x18,0x7e,0x38,0x66,0x70,0x66,0x60,0x66,0x60,0xe6,0x70,0xc6,0x3f,0x86,0x1f,0xff,0xff,0xff,0xff,0xf8,0x1f,0xfc,0x3f,0x8e,0x71,0x86,0x61,0x86,0x61,0x8e,0x73,0x1c,0x3f,0x18,0x1e,0xff,0xff,0xff,0xff,0x06,0x00,0x06,0x00,0x86,0x7f,0xc6,0x7f,0xe6,0x00,0x76,0x00,0x3e,0x00,0x1e,0x00,0xff,0xff,0xff,0xff,0x78,0x1e,0xfc,0x3f,0xce,0x73,0x86,0x61,0x86,0x61,0xce,0x73,0xfc,0x3f,0x78,0x1e,0xff,0xff,0xff,0xff,0x78,0x00,0xfc,0x00,0xce,0x61,0x86,0x71,0x86,0x39,0xce,0x1d,0xfc,0x0f,0xf8,0x07,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x30,0x0c,0x78,0x1e,0x78,0x1e,0x30,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x66,0x78,0x76,0x78,0x3e,0x30,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0xc0,0x03,0xe0,0x07,0x70,0x0e,0x38,0x1c,0x1c,0x38,0x0e,0x70,0x06,0x60,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x06,0x60,0x0e,0x70,0x1c,0x38,0x38,0x1c,0x70,0x0e,0xe0,0x07,0xc0,0x03,0x80,0x01,0x00,0x00,0x00,0x00,0x18,0x00,0x1c,0x00,0x0e,0x00,0x06,0x00,0x06,0x66,0x06,0x67,0x86,0x03,0xce,0x01,0xfc,0x00,0x78,0x00, -0x78,0x00,0xfc,0x00,0xce,0x01,0x86,0x01,0x86,0x01,0xce,0x01,0xfc,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0xe0,0x7f,0xf0,0x7f,0xb8,0x01,0x9c,0x01,0x8e,0x01,0x8e,0x01,0x9c,0x01,0xb8,0x01,0xf0,0x7f,0xe0,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0xce,0x73,0xfc,0x3f,0x78,0x1e,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x0e,0x70,0x1c,0x38,0x18,0x18,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x06,0x60,0x0e,0x70,0x1c,0x38,0x38,0x1c,0xf0,0x0f,0xe0,0x07,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x06,0x00,0x06,0x00,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x86,0x61,0x86,0x61,0x86,0x61,0x8e,0x71,0x9c,0x7f,0x98,0x3f,0xfe,0x7f,0xfe,0x7f,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x18,0x00,0x38,0x00,0x70,0x00,0x60,0x06,0x60,0x06,0x70,0xfe,0x3f,0xfe,0x1f,0x06,0x00,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0x80,0x01,0xc0,0x03,0xe0,0x07,0x70,0x0e,0x38,0x1c,0x1c,0x38,0x0e,0x70,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0xfe,0x7f,0xfe,0x7f,0x1c,0x00,0x38,0x00,0xf0,0x01,0xf0,0x01,0x38,0x00,0x1c,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x70,0x00,0xe0,0x00,0xc0,0x01,0x80,0x03,0x00,0x07,0x00,0x0e,0xfe,0x7f,0xfe,0x7f,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x0e,0x70,0xfc,0x3f,0xf8,0x1f, -0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0xce,0x01,0xfc,0x00,0x78,0x00,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x66,0x06,0x6e,0x06,0x3c,0x0e,0x38,0xfc,0x7f,0xf8,0x67,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x07,0x86,0x0f,0x86,0x1d,0xce,0x39,0xfc,0x70,0x78,0x60,0x78,0x18,0xfc,0x38,0xce,0x71,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x8e,0x73,0x1c,0x3f,0x18,0x1e,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0xfe,0x1f,0xfe,0x3f,0x00,0x70,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x70,0xfe,0x3f,0xfe,0x1f,0xfe,0x07,0xfe,0x0f,0x00,0x1c,0x00,0x38,0x00,0x70,0x00,0x70,0x00,0x38,0x00,0x1c,0xfe,0x0f,0xfe,0x07,0xfe,0x1f,0xfe,0x3f,0x00,0x70,0x00,0x70,0x00,0x3e,0x00,0x3e,0x00,0x70,0x00,0x70,0xfe,0x3f,0xfe,0x1f,0x1e,0x78,0x3e,0x7c,0x70,0x0e,0xe0,0x07,0xc0,0x03,0xc0,0x03,0xe0,0x07,0x70,0x0e,0x3e,0x7c,0x1e,0x78,0x7e,0x00,0xfe,0x00,0xc0,0x01,0x80,0x03,0x00,0x7f,0x00,0x7f,0x80,0x03,0xc0,0x01,0xfe,0x00,0x7e,0x00,0x06,0x78,0x06,0x7c,0x06,0x6e,0x06,0x67,0x86,0x63,0xc6,0x61,0xe6,0x60,0x76,0x60,0x3e,0x60,0x1e,0x60,0x00,0x00,0x00,0x00,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x00,0x00,0x00,0x00,0x18,0x00,0x38,0x00,0x70,0x00,0xe0,0x00,0xc0,0x01,0x80,0x03,0x00,0x07,0x00,0x0e,0x00,0x1c,0x00,0x18,0x00,0x00,0x00,0x00,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x00,0x00,0x00,0x00,0x60,0x00,0x70,0x00,0x38,0x00,0x1c,0x00,0x0e,0x00,0x0e,0x00,0x1c,0x00,0x38,0x00,0x70,0x00,0x60,0x00,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60, -0x00,0x00,0x00,0x00,0x06,0x00,0x0e,0x00,0x1c,0x00,0x38,0x00,0x70,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x3c,0x60,0x7e,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0x66,0xc0,0x7f,0x80,0x7f,0xfe,0x7f,0xfe,0x7f,0x80,0x61,0xc0,0x61,0xe0,0x60,0x60,0x60,0x60,0x60,0xe0,0x70,0xc0,0x3f,0x80,0x1f,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x70,0x00,0x38,0x00,0x18,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x60,0x60,0xe0,0x60,0xc0,0x61,0x80,0x61,0xfe,0x7f,0xfe,0x7f,0x80,0x1f,0xc0,0x3f,0xe0,0x76,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0x66,0xc0,0x07,0x80,0x07,0x80,0x01,0x80,0x01,0xf8,0x7f,0xfc,0x7f,0x8e,0x01,0x86,0x01,0x06,0x00,0x0e,0x00,0x1c,0x00,0x18,0x00,0xe0,0x01,0xf0,0x03,0x38,0x67,0x18,0x66,0x18,0x66,0x18,0x66,0x18,0x66,0x18,0x76,0xf8,0x3f,0xf8,0x1f,0xfe,0x7f,0xfe,0x7f,0x80,0x01,0xc0,0x01,0xe0,0x00,0x60,0x00,0x60,0x00,0xe0,0x00,0xc0,0x7f,0x80,0x7f,0x60,0x60,0x60,0x60,0xe6,0x7f,0xe6,0x7f,0x00,0x60,0x00,0x60,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x18,0x00,0x38,0x00,0x70,0x00,0x60,0x60,0x60,0x60,0x70,0xe6,0x3f,0xe6,0x1f,0xff,0xff,0xff,0xff,0xfe,0x7f,0xfe,0x7f,0x00,0x06,0x00,0x0f,0x80,0x1f,0xc0,0x39,0xe0,0x70,0x60,0x60,0xff,0xff,0xff,0xff,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0x7f,0xe0,0x7f,0x60,0x00,0xe0,0x00,0xc0,0x07,0xc0,0x07,0xe0,0x00,0xe0,0x00,0xc0,0x7f,0x80,0x7f,0xe0,0x7f,0xe0,0x7f,0x80,0x01,0xc0,0x01,0xe0,0x00,0x60,0x00,0x60,0x00,0xe0,0x00,0xc0,0x7f,0x80,0x7f,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xe0,0x70,0xc0,0x3f,0x80,0x1f, -0xe0,0x7f,0xe0,0x7f,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0xe0,0x07,0xc0,0x03,0x80,0x01,0x80,0x01,0xc0,0x03,0xe0,0x07,0x60,0x06,0x60,0x06,0x60,0x06,0xc0,0x07,0x80,0x07,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x80,0x01,0xc0,0x01,0xe0,0x00,0x60,0x00,0x60,0x00,0xe0,0x00,0xc0,0x01,0x80,0x01,0x80,0x61,0xc0,0x63,0xe0,0x67,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x7e,0x00,0x3c,0x00,0x18,0x60,0x00,0x60,0x00,0xfe,0x1f,0xfe,0x3f,0x60,0x70,0x60,0x60,0x00,0x60,0x00,0x70,0x00,0x38,0x00,0x18,0xe0,0x1f,0xe0,0x3f,0x00,0x70,0x00,0x60,0x00,0x60,0x00,0x70,0x00,0x38,0x00,0x18,0xe0,0x7f,0xe0,0x7f,0xe0,0x07,0xe0,0x0f,0x00,0x1c,0x00,0x38,0x00,0x70,0x00,0x70,0x00,0x38,0x00,0x1c,0xe0,0x0f,0xe0,0x07,0xe0,0x1f,0xe0,0x3f,0x00,0x70,0x00,0x70,0x00,0x38,0x00,0x38,0x00,0x70,0x00,0x70,0xe0,0x3f,0xe0,0x1f,0x60,0x60,0xe0,0x70,0xc0,0x39,0x80,0x1f,0x00,0x0f,0x00,0x0f,0x80,0x1f,0xc0,0x39,0xe0,0x70,0x60,0x60,0xe0,0x01,0xe0,0x03,0x00,0x67,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x76,0xe0,0x3f,0xe0,0x1f,0x60,0x60,0x60,0x70,0x60,0x78,0x60,0x7c,0x60,0x6e,0x60,0x67,0xe0,0x63,0xe0,0x61,0xe0,0x60,0x60,0x60,0x00,0x00,0x00,0x00,0x80,0x01,0xc0,0x03,0x78,0x1e,0x7c,0x3e,0x0e,0x70,0x06,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x7f,0xfe,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x60,0x0e,0x70,0x7c,0x3e,0x78,0x1e,0xc0,0x03,0x80,0x01,0x00,0x00,0x00,0x00,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x18,0x18,0x38,0x1c,0xf0,0x0f,0xe0,0x07,0xc0,0x03,0x80,0x01,0x80,0x01,0xc0,0x03,0xe0,0x07,0xf0,0x0f,0x38,0x1c,0x18,0x18,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01, diff --git a/radio/src/fonts/stdv2/font_10x14.png b/radio/src/fonts/stdv2/font_10x14.png deleted file mode 100644 index 35ad65ed4cd6fc835056f6eda970396fa1a711a3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1174 zcmV;H1Zn$;P)003YC0{{R3py}({00006P)t-s00030 z|No`gpWOfe00Cl4M??UK1szBL000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i*)4 z5i2fIYKg!A00b6EL_t(I%XQQ-Z{s!;2k@sda6Aa1aal41mJc^{RjMTcgz(S|?NBsd z!9c&j0bM*8kPR;#3~1u~YyD$i?|b=Y_;A;I$~Dt1ZI;+Amt zHzd371l@J@p~adIFk3hV4RxJK+%% z_~CbYzHiCm(>&{*2|A!oeDgJyDRyXa$gtgJfu(rCKN4&M(fE`h9FLA3?)HCr2X#}% zp@T366?+sG87!|JM<)#oN3fjSBksg@7r@2)hgD_x!^&I?&ayvU*0>p@@0BtYSE@>R zD0qWz?jXI<%4|T{O^aK3CR$uoYq+!Pw!D@+YCN8wT;4)*xtwsnBh0siPsvFt;5=Q% zJ=TQfuN4TkN-xA&#(jA~_-GBGO4HkZAx-#TjpH8EpM<8CD3FUAWh*xbsQmgV%c*(V z`*QLTPTb^2TIh;i4{Z}QD8kUiWs)iy1>pnH$D=#Um%rrc3};LNV*)rhp_QdPn@@uv zknm05u@S}UnesGAHM^!q&P2k?tx(KRp7ptL>AiK%V=ZK0D7s>0@Rs|<2@CP~k?=yR z3dJ6CQOZvamJ&`-KpaXSj70fY>_ELmHKK#CFLzzJR*M$9goSxy-e{Pip$%!42rtV}d8|6bS6H;K+@YUO zD(5{`v*^@eL-V=Vc%+3Y7zB$+>PK-ns`~jfz?qCwqyrnq=E!{Rqx=7m_n!o`)_#q( z-F}UQ_22b3=)W&fPBX9Q$mo8&J?0V3{P%+n$Ar0c*=IpB57SJ)OtQsT#vVt zFl9T|;+Kj?eK{C9mYU|1CizVC3kg)%Xg=JO63eV_sm0HOFobpX+rD{17gW=q$H6!r ov3{E#nK7E?GmhC|AaAb!0HqDY81@=Fxc~qF07*qoM6N<$f`i!~)c^nh diff --git a/radio/src/fonts/stdv2/font_10x14_compressed.lbm b/radio/src/fonts/stdv2/font_10x14_compressed.lbm deleted file mode 100644 index 89f587d45..000000000 --- a/radio/src/fonts/stdv2/font_10x14_compressed.lbm +++ /dev/null @@ -1 +0,0 @@ -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x66,0x00,0x76,0x00,0x3e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x78,0x00,0x78,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x60,0x0e,0x70,0xfc,0x3f,0xf8,0x1f,0xff,0xff,0xff,0xff,0x00,0x00,0x18,0x60,0x1c,0x60,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x00,0xff,0xff,0xff,0xff,0x18,0x78,0x1c,0x7c,0x0e,0x6e,0x06,0x67,0x86,0x63,0xce,0x61,0xfc,0x60,0x78,0x60,0xff,0xff,0xff,0xff,0x06,0x60,0x06,0x60,0x86,0x61,0x86,0x61,0x86,0x61,0xce,0x73,0xfc,0x3f,0x78,0x1e,0xff,0xff,0xff,0xff,0x80,0x07,0xc0,0x07,0xe0,0x06,0x70,0x06,0x38,0x06,0x1c,0x06,0xfe,0x7f,0xfe,0x7f,0xff,0xff,0xff,0xff,0x7e,0x18,0x7e,0x38,0x66,0x70,0x66,0x60,0x66,0x60,0xe6,0x70,0xc6,0x3f,0x86,0x1f,0xff,0xff,0xff,0xff,0xf8,0x1f,0xfc,0x3f,0x8e,0x71,0x86,0x61,0x86,0x61,0x8e,0x73,0x1c,0x3f,0x18,0x1e,0xff,0xff,0xff,0xff,0x06,0x00,0x06,0x00,0x86,0x7f,0xc6,0x7f,0xe6,0x00,0x76,0x00,0x3e,0x00,0x1e,0x00,0xff,0xff,0xff,0xff,0x78,0x1e,0xfc,0x3f,0xce,0x73,0x86,0x61,0x86,0x61,0xce,0x73,0xfc,0x3f,0x78,0x1e,0xff,0xff,0xff,0xff,0x78,0x00,0xfc,0x00,0xce,0x61,0x86,0x71,0x86,0x39,0xce,0x1d,0xfc,0x0f,0xf8,0x07,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x30,0x0c,0x78,0x1e,0x78,0x1e,0x30,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x7f,0xf0,0x7f,0xb8,0x01,0x9c,0x01,0x8e,0x01,0x8e,0x01,0x9c,0x01,0xb8,0x01,0xf0,0x7f,0xe0,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0xce,0x73,0xfc,0x3f,0x78,0x1e,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x0e,0x70,0x1c,0x38,0x18,0x18,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x06,0x60,0x0e,0x70,0x1c,0x38,0x38,0x1c,0xf0,0x0f,0xe0,0x07,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x06,0x00,0x06,0x00,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x86,0x61,0x86,0x61,0x86,0x61,0x8e,0x71,0x9c,0x7f,0x98,0x3f,0xfe,0x7f,0xfe,0x7f,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x18,0x00,0x38,0x00,0x70,0x00,0x60,0x06,0x60,0x06,0x70,0xfe,0x3f,0xfe,0x1f,0x06,0x00,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0x80,0x01,0xc0,0x03,0xe0,0x07,0x70,0x0e,0x38,0x1c,0x1c,0x38,0x0e,0x70,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0xfe,0x7f,0xfe,0x7f,0x1c,0x00,0x38,0x00,0xf0,0x01,0xf0,0x01,0x38,0x00,0x1c,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x70,0x00,0xe0,0x00,0xc0,0x01,0x80,0x03,0x00,0x07,0x00,0x0e,0xfe,0x7f,0xfe,0x7f,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x0e,0x70,0xfc,0x3f,0xf8,0x1f,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0xce,0x01,0xfc,0x00,0x78,0x00,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x66,0x06,0x6e,0x06,0x3c,0x0e,0x38,0xfc,0x7f,0xf8,0x67,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x07,0x86,0x0f,0x86,0x1d,0xce,0x39,0xfc,0x70,0x78,0x60,0x78,0x18,0xfc,0x38,0xce,0x71,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x8e,0x73,0x1c,0x3f,0x18,0x1e,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0xfe,0x1f,0xfe,0x3f,0x00,0x70,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x70,0xfe,0x3f,0xfe,0x1f,0xfe,0x07,0xfe,0x0f,0x00,0x1c,0x00,0x38,0x00,0x70,0x00,0x70,0x00,0x38,0x00,0x1c,0xfe,0x0f,0xfe,0x07,0xfe,0x1f,0xfe,0x3f,0x00,0x70,0x00,0x70,0x00,0x3e,0x00,0x3e,0x00,0x70,0x00,0x70,0xfe,0x3f,0xfe,0x1f,0x1e,0x78,0x3e,0x7c,0x70,0x0e,0xe0,0x07,0xc0,0x03,0xc0,0x03,0xe0,0x07,0x70,0x0e,0x3e,0x7c,0x1e,0x78,0x7e,0x00,0xfe,0x00,0xc0,0x01,0x80,0x03,0x00,0x7f,0x00,0x7f,0x80,0x03,0xc0,0x01,0xfe,0x00,0x7e,0x00,0x06,0x78,0x06,0x7c,0x06,0x6e,0x06,0x67,0x86,0x63,0xc6,0x61,0xe6,0x60,0x76,0x60,0x3e,0x60,0x1e,0x60,0x00,0x18,0x00,0x3c,0x60,0x7e,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0x66,0xc0,0x7f,0x80,0x7f,0xfe,0x7f,0xfe,0x7f,0x80,0x61,0xc0,0x61,0xe0,0x60,0x60,0x60,0x60,0x60,0xe0,0x70,0xc0,0x3f,0x80,0x1f,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x70,0x00,0x38,0x00,0x18,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x60,0x60,0xe0,0x60,0xc0,0x61,0x80,0x61,0xfe,0x7f,0xfe,0x7f,0x80,0x1f,0xc0,0x3f,0xe0,0x76,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0x66,0xc0,0x07,0x80,0x07,0x80,0x01,0x80,0x01,0xf8,0x7f,0xfc,0x7f,0x8e,0x01,0x86,0x01,0x06,0x00,0x0e,0x00,0x1c,0x00,0x18,0x00,0xe0,0x01,0xf0,0x03,0x38,0x67,0x18,0x66,0x18,0x66,0x18,0x66,0x18,0x66,0x18,0x76,0xf8,0x3f,0xf8,0x1f,0xfe,0x7f,0xfe,0x7f,0x80,0x01,0xc0,0x01,0xe0,0x00,0x60,0x00,0x60,0x00,0xe0,0x00,0xc0,0x7f,0x80,0x7f,0x60,0x60,0x60,0x60,0xe6,0x7f,0xe6,0x7f,0x00,0x60,0x00,0x60,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x18,0x00,0x38,0x00,0x70,0x00,0x60,0x60,0x60,0x60,0x70,0xe6,0x3f,0xe6,0x1f,0xff,0xff,0xff,0xff,0xfe,0x7f,0xfe,0x7f,0x00,0x06,0x00,0x0f,0x80,0x1f,0xc0,0x39,0xe0,0x70,0x60,0x60,0xff,0xff,0xff,0xff,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0x7f,0xe0,0x7f,0x60,0x00,0xe0,0x00,0xc0,0x07,0xc0,0x07,0xe0,0x00,0xe0,0x00,0xc0,0x7f,0x80,0x7f,0xe0,0x7f,0xe0,0x7f,0x80,0x01,0xc0,0x01,0xe0,0x00,0x60,0x00,0x60,0x00,0xe0,0x00,0xc0,0x7f,0x80,0x7f,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xe0,0x70,0xc0,0x3f,0x80,0x1f,0xe0,0x7f,0xe0,0x7f,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0xe0,0x07,0xc0,0x03,0x80,0x01,0x80,0x01,0xc0,0x03,0xe0,0x07,0x60,0x06,0x60,0x06,0x60,0x06,0xc0,0x07,0x80,0x07,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x80,0x01,0xc0,0x01,0xe0,0x00,0x60,0x00,0x60,0x00,0xe0,0x00,0xc0,0x01,0x80,0x01,0x80,0x61,0xc0,0x63,0xe0,0x67,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x7e,0x00,0x3c,0x00,0x18,0x60,0x00,0x60,0x00,0xf8,0x1f,0xf8,0x3f,0x60,0x70,0x60,0x60,0x00,0x60,0x00,0x70,0x00,0x38,0x00,0x18,0xe0,0x1f,0xe0,0x3f,0x00,0x70,0x00,0x60,0x00,0x60,0x00,0x70,0x00,0x38,0x00,0x18,0xe0,0x7f,0xe0,0x7f,0xe0,0x07,0xe0,0x0f,0x00,0x1c,0x00,0x38,0x00,0x70,0x00,0x70,0x00,0x38,0x00,0x1c,0xe0,0x0f,0xe0,0x07,0xe0,0x1f,0xe0,0x3f,0x00,0x70,0x00,0x70,0x00,0x38,0x00,0x38,0x00,0x70,0x00,0x70,0xe0,0x3f,0xe0,0x1f,0x60,0x60,0xe0,0x70,0xc0,0x39,0x80,0x1f,0x00,0x0f,0x00,0x0f,0x80,0x1f,0xc0,0x39,0xe0,0x70,0x60,0x60,0xe0,0x01,0xe0,0x03,0x00,0x67,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x76,0xe0,0x3f,0xe0,0x1f,0x60,0x60,0x60,0x70,0x60,0x78,0x60,0x7c,0x60,0x6e,0x60,0x67,0xe0,0x63,0xe0,0x61,0xe0,0x60,0x60,0x60, diff --git a/radio/src/fonts/stdv2/font_10x14_compressed.png b/radio/src/fonts/stdv2/font_10x14_compressed.png deleted file mode 100644 index a240544ee55d225bf35c52e88733b7096a039793..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1508 zcmVe zSad^gZEa<4bO1wgWnpw>WFU8GbZ8()Nlj2!fese{00m4*L_t(|+U;Fi)9WAzOgsJm zf4S%B%-3{GfTt&u**sXepmJmRHzTxv7WlpE z1l3=)p=0%pAUX_tzMivH+xM-XVU z6qYO{+TK~D*z1=W!z?4=8Q+X2qxKj+Gf{XC#M^fme)qCkJ^uXukM!%!G$7-fQ7_|) z>KFQ6J8p}C{pG8|Ic4Rm))!BEz5k*!_^XJ`z&*t-dDnxL-zY9bzgJ|lBTu3C-6r%a zScQ-+?PY?oWqhOl(e}{ikjzpG;%81H%Ww3z-v7}+YZ>28M%L4oBE#t6pGse%+S^t3 zQETG~PR$4}%c(0WI;YPQCyhjVQN{$#L|JQkGBRNq&d=}IA{_crjbKE-SItDIoYOO1 z>*?QFhVhP$%I@QwW%?BOG26{R`KLN7;H|Co;PfavkIvU>H@s&RtnbZsa?p82*O1S~ zp&s9CN98Fs>9@whzyFimUlRk@NfPth_rLYoxBV zmyKf`wNXaT61nu8!BH*UZ{)^i7!mMQ96pQ82zyWcTO-O<>q+gLGKP9otEt2zi@qSi z*l2xRE%@nWzGw1cGJ|Mv>aB@KOOeqe8Cg`zFy$$4pOmF=Cecc6+y6Fl$xi$Vc;WRwIbMH_{VE z&sXWq${m%cdCX+ykq2s*@4lnr)vwB+1}w@|O1J9P0!6LrRY2@XlzFScPV0!7ujNXx z>~X8E^qT3z3_H}$=^fWu(Rvv~?yh9(`igpG&-t46-H)|%b)ocb3pH{(W27usy9aHz zTLHWd#nt8$y~d(4sh)^EtG~0l>lt5GtzUJG7<#*gC5UBfK_iW8#-S#qeOQGDt9Mkg zohP+CygMrFSp_Q|D0fsCf2a4(J9AOb+FJcJBGm%QoX1N3Ax0;oHb?cftITbzRVQ&R z`m$ptHS#NJ79)mi0Y`s{i>(oBbphRi^j@wV3kF4Z@qJzrI_X5~CU zth}*68OhJ&i^wCQ7L={IMb;>??v(Oivy`JYEPQ9{m=*kE?`c%vxK-!adQla2FnEaG zHj#w~v*0Hx@v{RSFmh6yxl!He+MA~m4`%P9cg&+Y^j0gFr=5rs@>i?}^_)`7=ywPH zTJ>m$`K%g)S6_CNwPK7tzF4;dGscI?6#0L*6Udph^bubQ+>IA%JlOFHq^pcoVb@u? zDe)lNhR_*QFRiN4Vk6mlF7~;i9DTnEP!|;y?Sls@ye}Lo^3Xrn;$C7D|4@1W0000< KMNUMnLSTY!==o&; diff --git a/radio/src/fonts/stdv2/font_10x14_extra.lbm b/radio/src/fonts/stdv2/font_10x14_extra.lbm deleted file mode 100644 index c71947df1..000000000 --- a/radio/src/fonts/stdv2/font_10x14_extra.lbm +++ /dev/null @@ -1 +0,0 @@ -0x60,0x00,0x70,0x00,0x38,0x00,0x1c,0x00,0xce,0x7f,0xce,0x7f,0x1c,0x00,0x38,0x00,0x70,0x00,0x60,0x00,0x00,0x06,0x00,0x0e,0x00,0x1c,0x00,0x38,0xfe,0x73,0xfe,0x73,0x00,0x38,0x00,0x1c,0x00,0x0e,0x00,0x06,0x00,0x18,0x00,0x1c,0x00,0x0e,0x18,0x07,0x98,0x03,0xd8,0x01,0xd8,0x00,0x18,0x00,0xf8,0x03,0xf8,0x03,0x18,0x00,0x38,0x00,0x70,0x00,0xe0,0x18,0xc0,0x19,0x80,0x1b,0x00,0x1b,0x00,0x18,0xc0,0x1f,0xc0,0x1f,0xc0,0x1f,0xc0,0x1f,0x00,0x18,0x00,0x1b,0x80,0x1b,0xc0,0x19,0xe0,0x18,0x70,0x00,0x38,0x00,0x18,0x00,0xf8,0x03,0xf8,0x03,0x18,0x00,0xd8,0x00,0xd8,0x01,0x98,0x03,0x18,0x07,0x00,0x0e,0x00,0x1c,0x00,0x18, diff --git a/radio/src/fonts/stdv2/font_10x14_extra.png b/radio/src/fonts/stdv2/font_10x14_extra.png deleted file mode 100644 index 85ebfd0e19a3ae590fdac9bee7e45fb53fb3a9f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 229 zcmeAS@N?(olHy`uVBq!ia0vp^Hb5-E$P6S4V)|-;6kC8#h%1o(|NsBeoAd7iS)2tP zk;M!Q+`=Ht$S`Y;1W=H@#M9T6{Vp3fw+Men;is!Wp(0Ng#}JO|$v^lRc8#($xHO){_~%<(Sq}u>Yd~YrXxSnYg~T% zFdlwxoZdBm#eCz0A2oX(|Cj&$pNVI_Jomr+gg^HWeE8XH*iqQ<@N<8aiFe{T28I{w W6C^GAxAy^UXYh3Ob6Mw<&;$VafmR{_ diff --git a/radio/src/fonts/stdv2/font_cz_04x06.lbm b/radio/src/fonts/stdv2/font_cz_04x06.lbm deleted file mode 100644 index 3795482ef..000000000 --- a/radio/src/fonts/stdv2/font_cz_04x06.lbm +++ /dev/null @@ -1 +0,0 @@ -0x18,0x24,0x16,0x3d,0x7f,0x18,0x24,0x25,0x02,0x01,0x18,0x34,0x2c,0x0a,0x01,0x18,0x34,0x2d,0x0a,0x01,0x24,0x3c,0x22,0x01,0x7f,0x18,0x24,0x24,0x1a,0x01,0x3c,0x04,0x05,0x0a,0x01,0x28,0x2d,0x36,0x15,0x7f,0x1c,0x20,0x22,0x3d,0x7f,0x1c,0x21,0x21,0x3c,0x7f,0x0c,0x50,0x22,0x1d,0x7f,0x38,0x14,0x14,0x3a,0x01,0x00,0x24,0x3e,0x25,0x7f,0x3c,0x15,0x16,0x2d,0x7f,0x00,0x0c,0x32,0x0d,0x7f,0x24,0x35,0x2e,0x25,0x7f,0x3e,0x2a,0x2a,0x22,0x01, diff --git a/radio/src/fonts/stdv2/font_cz_04x06.png b/radio/src/fonts/stdv2/font_cz_04x06.png deleted file mode 100644 index dcb80e1a7e4e0e81e8fa85de8c97554e25ad19bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 223 zcmeAS@N?(olHy`uVBq!ia0vp^p+L;e$P6T%YbQSiQfvV}A+A9B|Ns9>Z_d99WHBar zySp%Su*!M>Ih+L^k;M!Q+`=Ht$S`Y;1W=H@#M9T6{Vop+mz25gLsnLxP`sy$V+hA} z#t??p{~4a`T~{6QWaqo!DIXZFSKlq)b$#pI>?jU~mgmMk1<8^YObrzb$(LrEE=!iU zYcxxO!TDUZ>5pU$S?;h3h9%DpeIK=$+%R_FVEF$3fBnDjYyVf@`*HHB=Dc;TPyK*a OF?hQAxvX0_i8t>7g^E30978y+ zGiESM|IhHYI;L#vyXrgPTi$PDxc7Zme)YZbUHMh_tr&WegCB!!_a(y%kpFK0xq^)oNE}0=l!z$mu&OOysTmlLrb!N>%%FF9#|)^TLGQ< huO8^sfA#YCh0<22WQ%mvv4FO#r3QSuX$p diff --git a/radio/src/fonts/stdv2/font_cz_08x10.lbm b/radio/src/fonts/stdv2/font_cz_08x10.lbm deleted file mode 100644 index 63354f6ba..000000000 --- a/radio/src/fonts/stdv2/font_cz_08x10.lbm +++ /dev/null @@ -1 +0,0 @@ -0x00,0x03,0xa0,0x07,0xb0,0x04,0x94,0x04,0x93,0x02,0xf1,0x07,0xe0,0x07,0xff,0x0f,0xc0,0x01,0xe1,0x03,0x33,0x06,0x16,0x04,0x13,0x04,0x31,0x06,0x20,0x02,0xff,0x0f,0xc0,0x01,0xe0,0x03,0xb0,0x06,0x94,0x04,0xb3,0x04,0xe1,0x06,0xc0,0x02,0xff,0x0f,0xc0,0x01,0xe1,0x03,0xb3,0x06,0x96,0x04,0xb3,0x04,0xe1,0x06,0xc0,0x02,0xff,0x0f,0x00,0x04,0x10,0x04,0xf4,0x07,0xf3,0x07,0x01,0x04,0x00,0x04,0xff,0x0f,0xff,0x0f,0xc0,0x01,0xe0,0x03,0x30,0x06,0x14,0x04,0x33,0x06,0xe1,0x03,0xc0,0x01,0xff,0x0f,0x11,0x00,0xf3,0x07,0xe6,0x07,0x33,0x00,0x11,0x00,0x30,0x00,0x20,0x00,0xff,0x0f,0x60,0x02,0xf1,0x06,0x93,0x04,0x96,0x04,0x93,0x04,0xb1,0x07,0x20,0x03,0xff,0x0f,0xf0,0x01,0xf0,0x03,0x00,0x06,0x04,0x04,0x03,0x02,0xf1,0x07,0xf0,0x07,0xff,0x0f,0xf0,0x01,0xf0,0x03,0x02,0x06,0x05,0x04,0x05,0x02,0xf2,0x07,0xf0,0x07,0xff,0x0f,0xf0,0x04,0xf0,0x0c,0x00,0x09,0x04,0x09,0x83,0x0c,0xf1,0x07,0xf0,0x03,0xff,0x0f,0xf0,0x07,0xf8,0x07,0x88,0x00,0x8c,0x00,0x8b,0x00,0x89,0x00,0xf8,0x07,0xf0,0x07,0x08,0x04,0x08,0x04,0xfc,0x07,0xfb,0x07,0x09,0x04,0x08,0x04,0xff,0x0f,0xff,0x0f,0xf8,0x07,0xf9,0x07,0xcb,0x00,0xce,0x00,0xcb,0x01,0x49,0x03,0x78,0x06,0x30,0x04,0x18,0x00,0x18,0x00,0x30,0x00,0xe4,0x07,0xe3,0x07,0x31,0x00,0x18,0x00,0x18,0x00,0x08,0x06,0x09,0x07,0x8b,0x05,0xce,0x04,0x6b,0x04,0x39,0x04,0x18,0x04,0xff,0x0f,0xf8,0x07,0xf8,0x07,0x48,0x04,0x4c,0x04,0x4b,0x04,0x49,0x04,0x08,0x04,0xff,0x0f, diff --git a/radio/src/fonts/stdv2/font_cz_08x10.png b/radio/src/fonts/stdv2/font_cz_08x10.png deleted file mode 100644 index 06c301849b0835d6823d875d5732d7ce66f00781..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 314 zcmeAS@N?(olHy`uVBq!ia0vp^9YD;($P6T#L(}gADYgKg5LY1m|NsA`H|O64vKW)R z-CY>5OtU(%W6)N;cys+sTK zWA^FAf+-V9XPmy!l3rVNsv%=h<&oyj?LVqw;?xc;*Q)=%?_=)OZTA-Y@BN)G-NVAL zw)f`jNI#cDU75!Nyu7r_zf3MpDDg>I`CxrdjPbEqjVdp-n&Cn=z|Lt!-wB@P&&-m#@ouGfii-|yAFnGH9xvXU3+%` diff --git a/radio/src/fonts/stdv2/font_cz_10x14.lbm b/radio/src/fonts/stdv2/font_cz_10x14.lbm deleted file mode 100644 index 0296523b6..000000000 --- a/radio/src/fonts/stdv2/font_cz_10x14.lbm +++ /dev/null @@ -1 +0,0 @@ -0x00,0x18,0x00,0x3c,0x60,0x7e,0x60,0x66,0x68,0x66,0x6c,0x66,0x67,0x66,0xe3,0x66,0xc1,0x7f,0x80,0x7f,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x67,0x60,0x6f,0x60,0x6c,0x60,0x66,0x60,0x63,0x70,0x01,0x38,0x00,0x18,0x80,0x1f,0xc0,0x3f,0xe0,0x76,0x60,0x66,0x68,0x66,0x6c,0x66,0x67,0x66,0xe3,0x66,0xc1,0x07,0x80,0x07,0x80,0x1f,0xc0,0x3f,0xe0,0x76,0x67,0x66,0x6f,0x66,0x6c,0x66,0x66,0x66,0xe3,0x66,0xc1,0x07,0x80,0x07,0x60,0x60,0x60,0x60,0xe8,0x7f,0xec,0x7f,0x07,0x60,0x03,0x60,0x01,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x68,0x60,0x6c,0x60,0x67,0x60,0xe3,0x70,0xc1,0x3f,0x80,0x1f,0xe0,0x7f,0xe0,0x7f,0x80,0x01,0xc7,0x01,0xef,0x00,0x6c,0x00,0x66,0x00,0xe3,0x00,0xc1,0x01,0x80,0x01,0x80,0x61,0xc0,0x63,0xe0,0x67,0x67,0x66,0x6f,0x66,0x6c,0x66,0x66,0x66,0x63,0x7e,0x01,0x3c,0x00,0x18,0xe0,0x1f,0xe0,0x3f,0x00,0x70,0x00,0x60,0x08,0x60,0x0c,0x70,0x07,0x38,0x03,0x18,0xe1,0x7f,0xe0,0x7f,0xe0,0x1f,0xe0,0x3f,0x00,0x70,0x06,0x60,0x09,0x60,0x09,0x70,0x0f,0x38,0x06,0x18,0xe0,0x7f,0xe0,0x7f,0xe0,0x01,0xe0,0x03,0x00,0x67,0x00,0x66,0x08,0x66,0x0c,0x66,0x07,0x66,0x03,0x76,0xe1,0x3f,0xe0,0x1f,0x80,0x7f,0xc0,0x7f,0xe0,0x06,0x70,0x06,0x38,0x06,0x38,0x06,0x74,0x06,0xe7,0x06,0xc3,0x7f,0x81,0x7f,0x18,0x60,0x18,0x60,0xfc,0x7f,0xff,0x7f,0x1b,0x60,0x19,0x60,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf8,0x7f,0xf8,0x7f,0x18,0x03,0x17,0x03,0x0f,0x07,0x0c,0x0f,0x16,0x1f,0xbb,0x3b,0xf1,0x71,0xe0,0x60,0xf8,0x00,0xf8,0x01,0x80,0x03,0x00,0x07,0x00,0x7e,0x04,0x7e,0x07,0x07,0x83,0x03,0xf9,0x01,0xf8,0x00,0x18,0x70,0x18,0x70,0x18,0x78,0x17,0x7c,0x0f,0x6e,0x0c,0x67,0x96,0x63,0xdb,0x61,0xf9,0x60,0x78,0x60,0xf8,0x7f,0xf8,0x7f,0x18,0x63,0x18,0x63,0x1c,0x63,0x1f,0x63,0x1b,0x63,0x19,0x63,0x18,0x60,0x18,0x60, diff --git a/radio/src/fonts/stdv2/font_cz_10x14.png b/radio/src/fonts/stdv2/font_cz_10x14.png deleted file mode 100644 index 6c63ac78661e224595f8dc63064ca141c2601b63..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 423 zcmV;Y0a*TtP)XuaO&wjaBX*;ew6A;j}3Nc?G+?f`Q;E z7M2!PRz5^tV8a!cV!3+-!H{}&n>!rb%$YQqV%Yy%_+fxw_xaAy{mYKu(!4s1B~}W! zrgD3x$@7*kRMuZ(iM4{dO84vU$vj-w7us7rl4uoJc2pLLEXygC(0MnH0N|RrlKY)C zczqKKE0drX#6$E5GwW$wStbQ)I_kE9=&sxF`9aHHC4BWyhgsn-rm3)*XR;*VX6Pz(3w;YLbA%-A(tC5TcI5QPo?L}ur%B~h)+%$tuGDp-3ynvulpylPe20_MZt_rBNWXJ8P_Z_d99WN{XF zL>4nJa0`PlBg3pY5H=O_PcD{+yXqMB5Bz`A#+a`#}JO|$q}< z7AueH#z)h*B~CrJ+3u5&FtL&^Mf`kaUPZ$~m&iv;m=4z~R4_2S|025Y(OD5Upb-q7 Lu6{1-oD!MuVhivIaRt)<|NmclbN*c*i!sUD z-G!lpRn`N@;VkfoEM{Qf76xHPhFNnYfP(BLp1!W^cX^madDvcY<;Vbq0zF+ELpZL> zp4rHIz<`70fV^fZSDW`tqeH%Ra}^@*9ns#=)X@56`G2OCc60uMfZ6AAS0w%_DQuG8 yJ%_2%b-T9l(NLz{SL*_PF4Z_d99WHBar zySp%Su*!M>Ih+L^k;M!Q+`=Ht$S`Y;1W=H@#M9T6{Vop+7azw~&HuSTp)OAs#}JO| z$v^m6?IoTqJzo=MsbAa2diekI&;LXJ)!R8YJ^cLN{?GrnZ|%zrZ2tUjmOb&Srs?4U z_QS`|eEZX`DpAGNVsFS4DZ^9r?X0|3!x~|pZ{OPO|1fTnGcb@aI2^%cFwNFFV%krJ z38fz#TV1zK`xJn&tyt#o+1c=d#Wz Gp$Pykwp>I2 diff --git a/radio/src/fonts/stdv2/font_es_04x06.lbm b/radio/src/fonts/stdv2/font_es_04x06.lbm deleted file mode 100644 index dbf678113..000000000 --- a/radio/src/fonts/stdv2/font_es_04x06.lbm +++ /dev/null @@ -1 +0,0 @@ -0x3e,0x09,0x12,0x3d,0x7f,0x3a,0x11,0x0a,0x39,0x7f, diff --git a/radio/src/fonts/stdv2/font_es_04x06.png b/radio/src/fonts/stdv2/font_es_04x06.png deleted file mode 100644 index 2c5db9a63327667338254a8c08af137930e4f6cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 157 zcmeAS@N?(olHy`uVBq!ia0vp^AT~QAGmzv?@>2j(YymzYu0Z<#|Nl#G&c6#}F(!Gt zyD)UH%6b4foCO|{#X!ZvAk4@xYmNj^kiEpy*OmP)53`85gl_4T0-%trr;B3<$Mxih vQwIdD9GGzLz=9(O9-KHZ;mm;#dl?z@GFaxYm)i#b6*73b`njxgN@xNAlBg<` diff --git a/radio/src/fonts/stdv2/font_es_05x07.lbm b/radio/src/fonts/stdv2/font_es_05x07.lbm deleted file mode 100644 index 99f4cd1a2..000000000 --- a/radio/src/fonts/stdv2/font_es_05x07.lbm +++ /dev/null @@ -1 +0,0 @@ -0x7c,0x0a,0x11,0x22,0x7d,0x78,0x12,0x09,0x0a,0x71, diff --git a/radio/src/fonts/stdv2/font_es_05x07.png b/radio/src/fonts/stdv2/font_es_05x07.png deleted file mode 100644 index b1135c1b240f91d08d8a2dda7eb31e80b89fb700..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^AT|dhGm!jc^5-j%VhivIaRt)<|NmclbN*c*i?hHZ zvY3H^TNs2H8D`Cq01C2~c>21s-(}vvU!%b0PEL|I7>togBfT)<<3d)iQXx`njxgN@xNAfrKfn diff --git a/radio/src/fonts/stdv2/font_es_08x10.lbm b/radio/src/fonts/stdv2/font_es_08x10.lbm deleted file mode 100644 index 57a5a829c..000000000 --- a/radio/src/fonts/stdv2/font_es_08x10.lbm +++ /dev/null @@ -1 +0,0 @@ -0xf0,0x07,0xf4,0x07,0x66,0x00,0xc2,0x00,0x86,0x01,0x04,0x07,0xf6,0x07,0xf2,0x07,0xf4,0x07,0xf6,0x07,0x22,0x00,0x16,0x00,0x34,0x00,0xe6,0x07,0xc2,0x07,0xff,0x0f, diff --git a/radio/src/fonts/stdv2/font_es_08x10.png b/radio/src/fonts/stdv2/font_es_08x10.png deleted file mode 100644 index 783dc7c8456b0412cf53c2921249e314a0a8d6d6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 168 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~e$P6R{HP;^kQfvV}A+A9B|Ns9>Z_d99WHBar zySp%Su*!M>Ih+L^k;M!Q+`=Ht$S`Y;1W=H@#M9T6{Vor)D38(UeKS@9g)}@}978y+ zC;#~0|ImZ|u!}02!eO^wN4Ji~<4ul7n+_gmI>^-X?>{rcwGgg+)=6uefO;4_UHx3v IIVCg!02Tl*y8r+H diff --git a/radio/src/fonts/stdv2/font_es_10x14.lbm b/radio/src/fonts/stdv2/font_es_10x14.lbm deleted file mode 100644 index 92d200c51..000000000 --- a/radio/src/fonts/stdv2/font_es_10x14.lbm +++ /dev/null @@ -1 +0,0 @@ -0xe8,0x7f,0xec,0x7f,0xc6,0x01,0x82,0x03,0x04,0x07,0x08,0x0e,0x0c,0x1c,0x06,0x38,0xe2,0x7f,0xe0,0x7f,0xe0,0x7f,0xe8,0x7f,0x8c,0x01,0xc6,0x01,0xe2,0x00,0x64,0x00,0x68,0x00,0xec,0x00,0xc6,0x7f,0x82,0x7f, diff --git a/radio/src/fonts/stdv2/font_es_10x14.png b/radio/src/fonts/stdv2/font_es_10x14.png deleted file mode 100644 index 7f803e46843b1ed4fa8c8f46d9134f8554cf17ee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 177 zcmeAS@N?(olHy`uVBq!ia0vp^B0wy_$P6TPuAPklQfvV}A+A9B|Ns9>Z_d99WN{XF zL>4nJa0`PlBg3pY5H=O_PcD{+yaskCz~38LUx`mjv*Y^lYjjG&wP02DQ2Ev zJKuy2HF*aZ9^L*dVQ`|D!{CFlnZX8Q`GkOH_6HI;j)*zrFdr#%$l*WYu$6(&NGy5Q TtS>KtCNX%r`njxgN@xNA#L+cJ diff --git a/radio/src/fonts/stdv2/font_fr_04x06.lbm b/radio/src/fonts/stdv2/font_fr_04x06.lbm deleted file mode 100644 index 6403f1409..000000000 --- a/radio/src/fonts/stdv2/font_fr_04x06.lbm +++ /dev/null @@ -1 +0,0 @@ -0x18,0x36,0x2d,0x08,0x7f,0x18,0x35,0x2e,0x08,0x7f,0x18,0x25,0x16,0x3c,0x7f,0x26,0x3d,0x22,0x7f,0x7f,0x4c,0x32,0x12,0x7f,0x7f, diff --git a/radio/src/fonts/stdv2/font_fr_04x06.png b/radio/src/fonts/stdv2/font_fr_04x06.png deleted file mode 100644 index 6078b240103c1f95c36a2974dae9aa40a96d1e4e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3575 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 diff --git a/radio/src/fonts/stdv2/font_fr_05x07.lbm b/radio/src/fonts/stdv2/font_fr_05x07.lbm deleted file mode 100644 index 7cf0e0ad8..000000000 --- a/radio/src/fonts/stdv2/font_fr_05x07.lbm +++ /dev/null @@ -1 +0,0 @@ -0x38,0x54,0x56,0x55,0x18,0x38,0x55,0x56,0x54,0x18,0x20,0x55,0x56,0x54,0x78,0x4a,0x79,0x42,0xff,0xff,0x1c,0xa2,0x62,0x22,0x10, diff --git a/radio/src/fonts/stdv2/font_fr_05x07.png b/radio/src/fonts/stdv2/font_fr_05x07.png deleted file mode 100644 index ed0e8e3b6045fce71c7a657d00bc26c2b49d70f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 176 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 diff --git a/radio/src/fonts/stdv2/font_fr_10x14.lbm b/radio/src/fonts/stdv2/font_fr_10x14.lbm deleted file mode 100644 index f7b7edd89..000000000 --- a/radio/src/fonts/stdv2/font_fr_10x14.lbm +++ /dev/null @@ -1 +0,0 @@ -0x80,0x1f,0xc0,0x3f,0xe0,0x76,0x68,0x66,0x6c,0x66,0x66,0x66,0x62,0x66,0xe0,0x66,0xc0,0x07,0x80,0x07,0x80,0x1f,0xc0,0x3f,0xe0,0x76,0x62,0x66,0x66,0x66,0x6c,0x66,0x68,0x66,0xe0,0x66,0xc0,0x07,0x80,0x07,0x00,0x18,0x00,0x3c,0x60,0x7e,0x62,0x66,0x66,0x66,0x6c,0x66,0x68,0x66,0xe0,0x66,0xc0,0x7f,0x80,0x7f,0x98,0x61,0x98,0x61,0x86,0x7f,0x86,0x7f,0x18,0x60,0x18,0x60,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0x07,0xf0,0x0f,0x38,0x9c,0x18,0xd8,0x18,0x78,0x18,0x38,0x18,0x18,0x18,0x1c,0x00,0x0e,0x00,0x06, diff --git a/radio/src/fonts/stdv2/font_fr_10x14.png b/radio/src/fonts/stdv2/font_fr_10x14.png deleted file mode 100644 index d78f9c95ad16559f445feff3d9a332cd22498381..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 246 zcmeAS@N?(olHy`uVBq!ia0vp^MnEjU$P6U&rtUirq}T#{LR^9L|NsA&-kg6I$YMeLS>#Vjv*Y^ zWzTHnZ8i{Tc{o{PLB|oMiF*%e2fI}DO!ED}7TJ)v&ike4or`u)xHuo$?0BZ__v>QK zwT@c*^upH{zZBU%Z&mqYH-qC=^%jpM=Qo?HI{nvu^lHXip^B14d~JSA3o2JnQadvL n_1us+hrQMZs>)}l{$q@pZoe$@|FaUH3m80I{an^LB{Ts5M(tS^ diff --git a/radio/src/fonts/stdv2/font_it_04x06.lbm b/radio/src/fonts/stdv2/font_it_04x06.lbm deleted file mode 100644 index dd424553b..000000000 --- a/radio/src/fonts/stdv2/font_it_04x06.lbm +++ /dev/null @@ -1 +0,0 @@ -0x18,0x25,0x16,0x3c,0x7f,0x1c,0x21,0x22,0x3c,0x7f, diff --git a/radio/src/fonts/stdv2/font_it_04x06.png b/radio/src/fonts/stdv2/font_it_04x06.png deleted file mode 100644 index 44b4ca5605755f2c09957cce44a7fee810019396..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 157 zcmeAS@N?(olHy`uVBq!ia0vp^AT~QAGmzv?@>2j(YymzYu0Z<#|Nl#G&c6#}F(!Gt zyD)UH%6b4foCO|{#X!ZvAk4@xYmNj^kiEpy*OmP)53`7sG~=b;?LZ+}PZ!4!j_b)c uZXGCC+qiIMqvFiQgEJcwIhhZCXJc>_VZE?nlW`?bA%mx@pUXO@geCxL<0%6G diff --git a/radio/src/fonts/stdv2/font_it_05x07.lbm b/radio/src/fonts/stdv2/font_it_05x07.lbm deleted file mode 100644 index 17d52fd9b..000000000 --- a/radio/src/fonts/stdv2/font_it_05x07.lbm +++ /dev/null @@ -1 +0,0 @@ -0x20,0x55,0x56,0x54,0x78,0x3c,0x41,0x42,0x20,0x7c, diff --git a/radio/src/fonts/stdv2/font_it_05x07.png b/radio/src/fonts/stdv2/font_it_05x07.png deleted file mode 100644 index 4a16baf3a204a1fea1c186dcc818314e5cc87625..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 148 zcmeAS@N?(olHy`uVBq!ia0vp^AT|dhGm!jc^5-j%VhivIaRt)<|NmclbN*c*i?hHZ zvY3H^TNs2H8D`Cq01C2~c>21s-(}Z_d99WHBar zySp%Su*!M>Ih+L^k;M!Q+`=Ht$S`Y;1W=H@#M9T6{Vor)D8Gj6MzfK}3Xsgipc?3q}!k1`}@newn)`w*a*Z_d99WN{XF zL>4nJa0`PlBg3pY5H=O_PcD{+9%@Hw85xugEUAI3K3f9w+fKFTNj;6K9Nu!FJVspE{jjSC$c8y_|_GJEJU)HllA UIdbg3AkZiVPgg&ebxsLQ0Qc8A#{d8T diff --git a/radio/src/fonts/stdv2/font_pl_04x06.lbm b/radio/src/fonts/stdv2/font_pl_04x06.lbm deleted file mode 100644 index 65e843759..000000000 --- a/radio/src/fonts/stdv2/font_pl_04x06.lbm +++ /dev/null @@ -1 +0,0 @@ -0x18,0x24,0x14,0x3c,0x40,0x18,0x24,0x24,0x02,0x01,0x18,0x34,0x2c,0x48,0x7f,0x00,0x29,0x3f,0x24,0x7f,0x3c,0x06,0x05,0x38,0x7f,0x18,0x26,0x25,0x18,0x7f,0x28,0x2c,0x36,0x15,0x7f,0x24,0x35,0x2d,0x24,0x7f,0x24,0x34,0x2e,0x25,0x7f,0x3e,0x09,0x69,0x5e,0x7f,0x1c,0x22,0x22,0x15,0x7f,0x3f,0x25,0x65,0x41,0x7f,0x3f,0x28,0x24,0x24,0x7f,0x3e,0x0c,0x11,0x3e,0x7f,0x1c,0x22,0x22,0x1d,0x7f,0x24,0x2a,0x2b,0x12,0x7f,0x22,0x33,0x2a,0x26,0x7f,0x22,0x32,0x2b,0x26,0x7f, diff --git a/radio/src/fonts/stdv2/font_pl_04x06.png b/radio/src/fonts/stdv2/font_pl_04x06.png deleted file mode 100644 index 5f0355deb9894f3c89fb1515e8b3792c1f2e66f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 230 zcmeAS@N?(olHy`uVBq!ia0vp^Q9#Vj$P6Smm7T}{QfvV}A+A9B|Ns9>Z_d99WHBar zySp%Su*!M>Ih+L^k;M!Q+`=Ht$S`Y;1W=H@#M9T6{Vor)D67VExm&Y`MvR8^^pe*JxS~?3d~6o nR*E1~p8q@#bg(^$_`9Lk$oA6>x09(rXE1oW`njxgN@xNA5g%Xd diff --git a/radio/src/fonts/stdv2/font_pl_08x10.lbm b/radio/src/fonts/stdv2/font_pl_08x10.lbm deleted file mode 100644 index 4be62b27d..000000000 --- a/radio/src/fonts/stdv2/font_pl_08x10.lbm +++ /dev/null @@ -1 +0,0 @@ -0x00,0x03,0xa0,0x07,0xb0,0x04,0x90,0x04,0x90,0x02,0xf0,0x0f,0xe0,0x0b,0xff,0x0f,0xc0,0x01,0xe0,0x03,0x30,0x06,0x14,0x04,0x13,0x04,0x31,0x06,0x20,0x02,0xff,0x0f,0xc0,0x01,0xe0,0x03,0xb0,0x06,0x90,0x04,0xb0,0x0c,0xe0,0x0a,0xc0,0x02,0xff,0x0f,0x40,0x04,0x42,0x04,0xfe,0x07,0xfe,0x07,0x20,0x04,0x20,0x04,0x00,0x00,0xff,0x0f,0xf0,0x07,0xf0,0x07,0x20,0x00,0x14,0x00,0x33,0x00,0xe1,0x07,0xc0,0x07,0xff,0x0f,0xc0,0x01,0xe0,0x03,0x30,0x06,0x14,0x04,0x33,0x06,0xe1,0x03,0xc0,0x01,0xff,0x0f,0x60,0x02,0xf0,0x06,0x90,0x04,0x94,0x04,0x93,0x04,0xb1,0x07,0x20,0x03,0xff,0x0f,0x10,0x06,0x10,0x07,0x96,0x05,0xd6,0x04,0x70,0x04,0x30,0x04,0x00,0x00,0xff,0x0f,0x10,0x06,0x10,0x07,0x90,0x05,0xd4,0x04,0x73,0x04,0x31,0x04,0x00,0x00,0xff,0x0f,0xf0,0x07,0xf8,0x07,0x8c,0x00,0x86,0x00,0x86,0x00,0x8c,0x00,0xf8,0x0f,0xf0,0x0b,0xf0,0x01,0xf8,0x03,0x0c,0x06,0x04,0x04,0x06,0x04,0x05,0x04,0x0c,0x06,0x18,0x03,0xfe,0x07,0xfe,0x07,0x22,0x04,0x22,0x04,0x22,0x04,0x22,0x0c,0x02,0x08,0xff,0x0f,0x80,0x00,0xfe,0x07,0xfe,0x07,0x40,0x04,0x40,0x04,0x20,0x04,0x20,0x04,0x00,0x04,0xfc,0x07,0xfc,0x07,0x38,0x00,0x74,0x00,0xe3,0x00,0xc1,0x01,0xfc,0x07,0xfc,0x07,0xe0,0x01,0xf0,0x03,0x18,0x06,0x08,0x04,0x0c,0x04,0x1b,0x06,0xf1,0x03,0xe0,0x01,0x30,0x02,0x78,0x06,0x48,0x04,0x4c,0x04,0x4b,0x04,0x49,0x04,0xd8,0x07,0x90,0x03,0x08,0x06,0x08,0x07,0x8b,0x05,0xcb,0x04,0x68,0x04,0x38,0x04,0x18,0x04,0xff,0x0f,0x08,0x06,0x08,0x07,0x88,0x05,0xcc,0x04,0x6b,0x04,0x39,0x04,0x18,0x04,0xff,0x0f, diff --git a/radio/src/fonts/stdv2/font_pl_08x10.png b/radio/src/fonts/stdv2/font_pl_08x10.png deleted file mode 100644 index a0ebfb1356e45eb02fa916bbfe41912213f9e01c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 326 zcmeAS@N?(olHy`uVBq!ia0vp^6M&e9kr_yC*I9NLNU;U@gt!9f|Ns9ly*d9bkj0qf z?e4vL>4nJa0`PlBg3pY5H=O_PabRoWf$8cm%wGLdQH^978y+ z%k~>~A94_AZ9n>H!v?WEue7*NYaTlpA3U3xyE}wa=48I1)2W}58>16j&UPg}dRKcj zS#FOxzt7o_t0i@}|J2yJ9&Czr;t+bLyybEA6ozNMd%i!)56|2F_^{24nGwtWJua)Y zW^%ax_0#3~bCjQbTfIzT;i^-4p^LOc*Tn@a;JmTg%S@AD0HX`YE*1q ztjU?;xBP~QC3j|))Q!-o2{U=TdPCHi&&9qsFn_oHox^|sBYQNA&ldX4sAZ@)*!)Di S#AzMSM+}~>elF{r5}E)i^nF$U diff --git a/radio/src/fonts/stdv2/font_pl_10x14.lbm b/radio/src/fonts/stdv2/font_pl_10x14.lbm deleted file mode 100644 index fb6d981b1..000000000 --- a/radio/src/fonts/stdv2/font_pl_10x14.lbm +++ /dev/null @@ -1 +0,0 @@ -0x00,0x18,0x00,0x3c,0x60,0x7e,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0xe6,0xc0,0xbf,0x80,0xbf,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x68,0x60,0x6c,0x60,0x67,0x60,0x63,0x70,0x01,0x38,0x00,0x18,0x80,0x1f,0xc0,0x3f,0xe0,0x76,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0xe6,0xc0,0x87,0x80,0x87,0x06,0x61,0x06,0x61,0xfe,0x7f,0xfe,0x7f,0x80,0x60,0x80,0x60,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0x7f,0xe0,0x7f,0x80,0x01,0xc0,0x01,0xe8,0x00,0x6c,0x00,0x67,0x00,0xe3,0x00,0xc1,0x7f,0x80,0x7f,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x68,0x60,0x6c,0x60,0x67,0x60,0xe3,0x70,0xc1,0x3f,0x80,0x1f,0x80,0x61,0xc0,0x63,0xe0,0x67,0x60,0x66,0x68,0x66,0x6c,0x66,0x67,0x66,0x63,0x7e,0x01,0x3c,0x00,0x18,0x60,0x60,0x60,0x70,0x60,0x78,0x66,0x7c,0x66,0x6e,0x60,0x67,0xe0,0x63,0xe0,0x61,0xe0,0x60,0x60,0x60,0x60,0x60,0x60,0x70,0x60,0x78,0x60,0x7c,0x68,0x6e,0x6c,0x67,0xe7,0x63,0xe3,0x61,0xe1,0x60,0x60,0x60,0xe0,0x7f,0xf0,0x7f,0xb8,0x01,0x9c,0x01,0x8e,0x01,0x8e,0x01,0x9c,0x01,0xb8,0x61,0xf0,0xff,0xe0,0xbf,0xe0,0x1f,0xf0,0x3f,0x38,0x70,0x18,0x60,0x1c,0x60,0x1f,0x60,0x1b,0x60,0x39,0x70,0x70,0x38,0x60,0x18,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x06,0xa0,0x06,0x80,0x00,0x06,0xfe,0x7f,0xfe,0x7f,0x00,0x63,0x80,0x61,0x80,0x61,0xc0,0x60,0xc0,0x60,0x60,0x60,0x60,0x60,0xf8,0x7f,0xf8,0x7f,0xe0,0x00,0xc0,0x01,0x80,0x03,0x04,0x07,0x07,0x0e,0x03,0x1c,0xf9,0x7f,0xf8,0x7f,0xe0,0x1f,0xf0,0x3f,0x38,0x70,0x18,0x60,0x1c,0x60,0x1f,0x60,0x1b,0x60,0x39,0x70,0xf0,0x3f,0xe0,0x1f,0xe0,0x18,0xf0,0x39,0xb8,0x73,0x18,0x63,0x1c,0x63,0x1f,0x63,0x1b,0x63,0x39,0x77,0x70,0x3e,0x60,0x1c,0x18,0x70,0x18,0x78,0x18,0x7c,0x18,0x6e,0x1b,0x67,0x9b,0x63,0xd8,0x61,0xf8,0x60,0x78,0x60,0x38,0x60,0x18,0x70,0x18,0x78,0x18,0x7c,0x18,0x6e,0x18,0x67,0x9c,0x63,0xdf,0x61,0xfb,0x60,0x79,0x60,0x38,0x60, diff --git a/radio/src/fonts/stdv2/font_pl_10x14.png b/radio/src/fonts/stdv2/font_pl_10x14.png deleted file mode 100644 index b90769c1c70114ac101820664f67b45441df5d5b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 422 zcmV;X0a^ZuP)^~LqLUIBuB`YO%7eUxd#a7 zDls0MAyiig)zDS07Y82t`SQnwHuV%Y`R>w`*MN8z&4*rNWj zb!fyh9IpGalR0ZqwCm+uJm2TDO8@^$xG|Ie@kv$suZL_A)1wE3sjPd_FCa$G=t8|L QcmMzZ07*qoM6N<$g7P7?sQ>@~ diff --git a/radio/src/fonts/stdv2/font_pt_04x06.lbm b/radio/src/fonts/stdv2/font_pt_04x06.lbm deleted file mode 100644 index bb2db6d13..000000000 --- a/radio/src/fonts/stdv2/font_pt_04x06.lbm +++ /dev/null @@ -1 +0,0 @@ -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, diff --git a/radio/src/fonts/stdv2/font_pt_04x06.png b/radio/src/fonts/stdv2/font_pt_04x06.png deleted file mode 100644 index b3bc84800816a5ce210810e5e8f9b114886dea1b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 130 zcmeAS@N?(olHy`uVBq!ia0vp^6+q0+$P6TZ-ji+xQfvV}A+A9B|Ns9>Z_d99WN{XF zL>4nJa0`PlBg3pY5H=O_PcD{oYKM)Ice5FA%0I6#}JO|$v^tJBr?vhGdwz! VF{3wVxg1c6!PC{xWt~$(698T_AX)$b diff --git a/radio/src/fonts/stdv2/font_pt_05x07.lbm b/radio/src/fonts/stdv2/font_pt_05x07.lbm deleted file mode 100644 index 860c0237c..000000000 --- a/radio/src/fonts/stdv2/font_pt_05x07.lbm +++ /dev/null @@ -1 +0,0 @@ -0x78,0x14,0x16,0x15,0x78,0x20,0x54,0x56,0x55,0x78,0x78,0x16,0x15,0x16,0x78,0x20,0x56,0x55,0x56,0x78,0x7a,0x15,0x16,0x15,0x78,0x20,0x56,0x55,0x56,0x79,0x78,0x15,0x16,0x14,0x78,0x20,0x55,0x56,0x54,0x78,0x1e,0xa1,0x61,0x21,0x12,0x1c,0xa2,0x62,0x22,0x10,0x7c,0x54,0x56,0x55,0x44,0x38,0x54,0x56,0x55,0x18,0x7c,0x56,0x55,0x56,0x44,0x38,0x56,0x55,0x56,0x18,0x44,0x7e,0x45,0xff,0xff,0x4c,0x7a,0x40,0xff,0xff,0x3c,0x42,0x42,0x43,0x3c,0x38,0x44,0x46,0x45,0x38,0x3c,0x42,0x43,0x42,0x3c,0x38,0x44,0x46,0x44,0x38,0x3c,0x43,0x42,0x43,0x3c,0x38,0x46,0x44,0x46,0x38,0x3c,0x40,0x42,0x41,0x3c,0x38,0x40,0x44,0x22,0x78, diff --git a/radio/src/fonts/stdv2/font_pt_05x07.png b/radio/src/fonts/stdv2/font_pt_05x07.png deleted file mode 100644 index b1f2ff750534457bf3933af16113cdee4e4d24ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 247 zcmeAS@N?(olHy`uVBq!ia0vp^6+q0v$P6MoRt5kmwg8_HS0MfW|No^o=iddg7?Zr+ zT^Kr8Wj%l#&H|6fVg?3oVGw3ym^DWND9B#o>FdgVmxqN@j_22b=`}#1a!(h>5RU7~ z74iFCU;X~?e);{=d-VT*t+zkC_xi%?tG!Q^$Iia=z2f-SsJ3}2oyl!i*;!*MypoQ_ z<{M8rUmI7s{@1z zllEMP3`CB9l#e^YZDCQyvA+GI(k{!82|h1b@7OkRvP@j?;7vryL=MrQ|5L(~n;-nv zd4F8I-0a?`M(cHvzgJZq+xwup_gUbr($d@c7FSNit$)93%j8($g6h&u)@J(>>eDK% zOcmcEaR(%kWe8gp%gPoVy^{^EUTlVbP7^J=^}i<=5n2G{WQ=#hho>YEY&h3lD0`0;B|)$n#JnvS$dU z!%i7^T&@CKoGOXw$wz=`+vNl&%ZM5td}jtfH`012WY z3G)a*MgMaOt%iKirh|-OVa6V1dc>${FPpt=$x?=;%Skv{jA{mesaQ9xwx%T@mEfM~ u90xT=fKu27ZH@5XviqtC_+S)fxBde}6bY(WMyf9W0000$WaWQu6{1- HoD!MZ_d99WN{XF zL>4nJa0`PlBg3pY5H=O_PcD{oD#ez{WxX=g>*e#978y+C;#|={}tEayE&c8 zJhqS&K+sj18QXOboFyt=akR{0D|u? Ai~s-t diff --git a/radio/src/fonts/stdv2/font_se_08x10.lbm b/radio/src/fonts/stdv2/font_se_08x10.lbm deleted file mode 100644 index 2fc6f89ee..000000000 --- a/radio/src/fonts/stdv2/font_se_08x10.lbm +++ /dev/null @@ -1 +0,0 @@ -0x00,0x03,0xa0,0x07,0xb4,0x04,0x9a,0x04,0x9a,0x02,0xf4,0x07,0xe0,0x07,0xff,0x0f,0x00,0x03,0xa0,0x07,0xb6,0x04,0x96,0x04,0x90,0x02,0xf6,0x07,0xe6,0x07,0xff,0x0f,0xc0,0x01,0xe6,0x03,0x36,0x06,0x10,0x04,0x36,0x06,0xe6,0x03,0xc0,0x01,0xff,0x0f,0xe0,0x07,0xf0,0x07,0x9c,0x00,0x9a,0x00,0x9a,0x00,0x9c,0x00,0xf0,0x07,0xe0,0x07,0xe0,0x07,0xf6,0x07,0x96,0x00,0x88,0x00,0x88,0x00,0x96,0x00,0xf6,0x07,0xe0,0x07,0xe0,0x01,0xf6,0x03,0x16,0x06,0x08,0x04,0x08,0x04,0x16,0x06,0xf6,0x03,0xe0,0x01, diff --git a/radio/src/fonts/stdv2/font_se_08x10.png b/radio/src/fonts/stdv2/font_se_08x10.png deleted file mode 100644 index 70fbdbcfd949dc94b05b48fae816deed5ab8f806..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 208 zcmeAS@N?(olHy`uVBq!ia0vp^20+Zi$P6UqO4bMgDYgKg5LY1m|NsA`H|O64vKW)R z-CYOfEFEKkwh$$jE#~ al3`MvTQ2v?z*?XS7(8A5T-G@yGywpk=1&9w diff --git a/radio/src/lcd.cpp b/radio/src/lcd.cpp index cb1f7e838..dd190d5d3 100644 --- a/radio/src/lcd.cpp +++ b/radio/src/lcd.cpp @@ -85,8 +85,6 @@ void lcd_img(xcoord_t x, uint8_t y, const pm_uchar * img, uint8_t idx, LcdFlags } uint8_t lcdLastPos; - -#if defined(PWFONT) uint8_t lcdLastFW; void lcd_putcAtt(xcoord_t x, uint8_t y, const unsigned char c, LcdFlags flags) @@ -266,10 +264,14 @@ void lcd_putcAtt(xcoord_t x, uint8_t y, const unsigned char c, LcdFlags flags) else { uint8_t ym8 = (y & 0x07); +#if defined(BOLD_FONT) + uint8_t bb = 0; + if (inv) bb = 0xff; +#endif for (int8_t i=0; i<=6; i++) { uint8_t b = 0; if ( !i ) { - if ( !x || !inv) { + if ( !x || !inv || (flags & BOLD)) { lcdLastFW++; p++; continue; @@ -284,248 +286,36 @@ void lcd_putcAtt(xcoord_t x, uint8_t y, const unsigned char c, LcdFlags flags) continue; } - #if defined(BOLD_FONT) - if (flags & BOLD) { - ASSERT_IN_DISPLAY(p); - if (inv) - LCD_BYTE_FILTER(p, b << ym8, 0); - else - LCD_BYTE_FILTER(p, 0xff, b << ym8); -#if defined(CPUARM) - if (ym8) { - uint8_t *r = p + LCD_W; - if (r> (8-ym8), 0); - else - LCD_BYTE_FILTER(r, 0xff, b >> (8-ym8)); - } - } -#endif -#if !defined(CPUM64) - if (y && inv) *p |= BITMASK((y-1)%8); -#endif - if (i == 6) { - lcdLastFW++; - break; - } - p++; - } + if (flags & BOLD) { + uint8_t a; + if (inv) + a = b & bb; + else + a = b | bb; + bb = b; + b = a; + } #endif if (p> (8-ym8)), b >> (8-ym8)); } - } -#if defined(BOLD_FONT) - if (!(flags & BOLD)) +#if !defined(CPUM64) || !defined(FRSKY) + if (y && inv) lcd_mask( p, BITMASK((y-1)%8),FORCE); #endif + } p++; lcdLastFW++; } } } -#else - -void lcd_putcAtt(xcoord_t x, uint8_t y, const unsigned char c, LcdFlags flags) -{ - uint8_t *p = &displayBuf[ y / 8 * LCD_W + x ]; - -#if defined(CPUARM) - const pm_uchar *q = (c < 0xC0) ? &font_5x7[(c-0x20)*5+4] : &font_5x7_extra[(c-0xC0)*5+4]; -#else - const pm_uchar *q = &font_5x7[(c-0x20)*5+4]; -#endif - - bool inv = false; - if (flags & BLINK) { - if (BLINK_ON_PHASE) { - if (flags & INVERS) - inv = true; - else - return; - } - } - else if (flags & INVERS) { - inv = true; - } - - if (flags & DBLSIZE) { - // To save space only some DBLSIZE chars are available - // c has to be remapped. All non existing chars mapped to 0 (space) - unsigned char c_remapped; - - if (c>=',' && c<=':') - c_remapped = c - ',' + 1; - else if (c>='A' && c<='Z') - c_remapped = c - 'A' + 16; - else if (c>='a' && c<='z') - c_remapped = c - 'a' + 42; - else if (c=='_') - c_remapped = 4; -#if defined(CPUARM) - else if (c>= 128 ) - c_remapped = c - 60; -#endif - else - c_remapped = 0; - - /* each letter consists of ten top bytes followed by - * by ten bottom bytes (20 bytes per * char) */ - q = &font_10x14[((uint16_t)c_remapped)*20]; - for (int8_t i=11; i>=0; i--) { - if ((flags & CONDENSED) && i<=1) break; - uint8_t b1=0, b2=0; - if (i>1) { - b1 = pgm_read_byte(q++); /*top byte*/ - b2 = pgm_read_byte(q++); /*top byte*/ - } - if (inv) { - b1 = ~b1; - b2 = ~b2; - } - if(&p[LCD_W+1] < DISPLAY_END) { - ASSERT_IN_DISPLAY(p); - ASSERT_IN_DISPLAY(p+LCD_W); - LCD_BYTE_FILTER(p, 0, b1); - LCD_BYTE_FILTER(p+LCD_W, 0, b2); - p++; - } - } - } -#if defined(CPUARM) - else if (flags & MIDSIZE) { - /* each letter consists of ten top bytes followed by - * by ten bottom bytes (20 bytes per * char) */ - q = &font_8x10[((uint16_t)c-0x20)*16]; - for (int8_t i=9; i>=0; i--) { - uint8_t b1=0, b2=0; - if ((flags & CONDENSED) && i<=1) break; - if (i!=0 && i!=9) { - b1 = pgm_read_byte(q++); /*top byte*/ - b2 = pgm_read_byte(q++); /*top byte*/ - } - if (inv) { - b1 = ~b1; - b2 = ~b2; - } - uint8_t ym8 = (y & 0x07); - if (&p[LCD_W+1] < DISPLAY_END) { - LCD_BYTE_FILTER(p, ~(0xff << ym8), b1 << ym8); - uint8_t *r = p + LCD_W; - if (r> (8-ym8)), b1 >> (8-ym8)); - LCD_BYTE_FILTER(r, ~(0x0f << ym8), (b2&0x0f) << ym8); - if (ym8) { - r = r + LCD_W; - if (r> (8-ym8)), (b2&0x0f) >> (8-ym8)); - } - } - p++; - } - } - } - else if (flags & SMLSIZE) { - q = (c < 0xC0) ? &font_4x6[(c-0x20)*5+4] : &font_4x6_extra[(c-0xC0)*5+4]; - uint8_t ym8 = (y & 0x07); - p += 4; - for (int8_t i=4; i>=0; i--) { - uint8_t b = pgm_read_byte(q--); - if (inv) b = ~b & 0x7f; - if (p> (8-ym8)), b >> (8-ym8)); - } - } - p--; - } - } - else if (flags & TINSIZE) { - q = &font_3x5[((uint16_t)c-0x2D)*3+2]; - uint8_t ym8 = (y & 0x07); - p += 3; - for (int8_t i=3; i>=0; i--) { - uint8_t b = (i!=3 ? pgm_read_byte(q--) : 0); - if (inv) b = ~b & 0x3f; - if (p> (8-ym8)), b >> (8-ym8)); - } - } - p--; - } - } -#endif - else { - uint8_t condense=0; - - if (flags & CONDENSED) { - *p = inv ? ~0 : 0; - condense=1; - } - - uint8_t ym8 = (y & 0x07); - p += 5; - for (uint8_t i=6, b=0; i>0; i--, b=pgm_read_byte(q--)) { - if (inv) b = ~b; - - if (condense && i==2) { - /*condense the letter by skipping column 4 */ - continue; - } - - if (p> (8-ym8)), b >> (8-ym8)); - } -#if defined(BOLD_FONT) - if (flags & BOLD) { - ASSERT_IN_DISPLAY(p+1); - if (inv) - LCD_BYTE_FILTER(p+1, b << ym8, 0); - else - LCD_BYTE_FILTER(p+1, 0xff, b << ym8); -#if defined(CPUARM) - if (ym8) { - uint8_t *r = p+1 + LCD_W; - if (r> (8-ym8), 0); - else - LCD_BYTE_FILTER(r, 0xff, b >> (8-ym8)); - } - } -#endif - } -#endif - } - p--; - } - } -} -#endif - - void lcd_putc(xcoord_t x, uint8_t y, const unsigned char c) { lcd_putcAtt(x, y, c, 0); @@ -557,24 +347,8 @@ void lcd_putsnAtt(xcoord_t x, uint8_t y, const pm_char * s, uint8_t len, LcdFlag if (!c || x>LCD_W-6) break; if (c >= 0x20) { -#if defined(PWFONT) lcd_putcAtt(x, y, c, mode); x += lcdLastFW; -#else -#if defined(CPUARM) - if ((mode & MIDSIZE) && ((c>='a'&&c<='z')||(c>='0'&&c<='9'))) { - lcd_putcAtt(x, y, c, mode); - x-=1; - } - else -#endif - lcd_putcAtt(x, y, c, mode); - x += FW; - if (c == '|') x -= 4; - if (mode&DBLSIZE) x += FW-1; - else if (mode&MIDSIZE) x += FW-3; - else if (mode&SMLSIZE) x -= 1; -#endif } else if (setx) { x = c; @@ -618,11 +392,7 @@ void lcd_putsLeft(uint8_t y, const pm_char * s) void lcd_outhex4(xcoord_t x, uint8_t y, uint16_t val) { -#if defined(PWFONT) x+=FWNUM*4+1; -#else - x+=FWNUM*4; -#endif for(int i=0; i<4; i++) { x-=FWNUM; @@ -703,12 +473,8 @@ void lcd_outdezNAtt(xcoord_t x, uint8_t y, lcdint_t val, LcdFlags flags, uint8_t } lcdLastPos = x; -#if defined(PWFONT) x -= fw; if (dblsize) x++; -#else - x -= fw + 1; -#endif for (uint8_t i=1; i<=len; i++) { div_t qr = div((uint16_t)val, 10); @@ -716,11 +482,7 @@ void lcd_outdezNAtt(xcoord_t x, uint8_t y, lcdint_t val, LcdFlags flags, uint8_t LcdFlags f = flags; #if !defined(PCBTARANIS) if (dblsize) { -#if defined(PWFONT) if (c=='1' && i==len && xn>x+10) { x+=1; } -#else - if (c=='1' && i==len && xn>x+10) { x+=2; f|=CONDENSED; } -#endif if ((uint16_t)val >= 1000) { x+=FWNUM; f&=~DBLSIZE; } } #endif @@ -728,11 +490,7 @@ void lcd_outdezNAtt(xcoord_t x, uint8_t y, lcdint_t val, LcdFlags flags, uint8_t if (mode==i) { flags &= ~PREC2; // TODO not needed but removes 20bytes, could be improved for sure, check asm if (dblsize) { -#if defined(PWFONT) xn = x - 2; -#else - xn = x; -#endif if (c>='1' && c<='3') ln++; uint8_t tn = (qr.quot) % 10; if (tn==2 || tn==4) { @@ -754,18 +512,8 @@ void lcd_outdezNAtt(xcoord_t x, uint8_t y, lcdint_t val, LcdFlags flags, uint8_t x--; } else { -#if defined(PWFONT) x -= 2; -#else - x--; -#endif - lcd_plot(x, y+6); - if ((flags&INVERS) && ((~flags & BLINK) || BLINK_ON_PHASE)) { - lcd_vline(x, y, 8); - } -#if !defined(PWFONT) - x--; -#endif + lcd_putcAtt(x, y, '.', f); } } #if !defined(PCBTARANIS) @@ -790,9 +538,7 @@ void lcd_outdezNAtt(xcoord_t x, uint8_t y, lcdint_t val, LcdFlags flags, uint8_t lcd_hline(xn, y+2*FH-2, ln); } } -#if defined(PWFONT) x--; -#endif if (neg) lcd_putcAtt(x, y, '-', flags); } diff --git a/radio/src/lcd.h b/radio/src/lcd.h index 52a9ae8ce..3d5cc221e 100644 --- a/radio/src/lcd.h +++ b/radio/src/lcd.h @@ -198,6 +198,7 @@ void putsTime(xcoord_t x, uint8_t y, putstime_t tme, LcdFlags att, LcdFlags att2 #define DOTTED 0x55 void lcd_plot(xcoord_t x, uint8_t y, LcdFlags att=0); +void lcd_mask(uint8_t *p, uint8_t mask, LcdFlags att=0); void lcd_hline(xcoord_t x, uint8_t y, xcoord_t w, LcdFlags att=0); void lcd_hlineStip(xcoord_t x, uint8_t y, xcoord_t w, uint8_t pat, LcdFlags att=0); void lcd_vline(xcoord_t x, int8_t y, int8_t h); From fe30a393b5df695eaa93472955d34783ffad7c5a Mon Sep 17 00:00:00 2001 From: mhotar Date: Fri, 20 Dec 2013 02:14:11 +0100 Subject: [PATCH 022/308] fonts corrected --- radio/src/fonts/std/font_05x07.lbm | 2 +- radio/src/fonts/std/font_05x07.png | Bin 616 -> 619 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/radio/src/fonts/std/font_05x07.lbm b/radio/src/fonts/std/font_05x07.lbm index 86716bb1c..987e3568f 100644 --- a/radio/src/fonts/std/font_05x07.lbm +++ b/radio/src/fonts/std/font_05x07.lbm @@ -1,4 +1,4 @@ -0x00,0x00,0xff,0xff,0xff,0x00,0x00,0x00,0x6f,0x00,0x00,0x07,0x00,0x07,0x00,0x18,0x30,0x18,0x0c,0x06,0x08,0x7f,0x7f,0x7f,0x08,0x23,0x13,0x08,0x64,0x62,0x36,0x49,0x55,0x22,0x50,0x00,0x05,0x03,0x00,0x00,0x00,0x1c,0x22,0x41,0x00,0x00,0x41,0x22,0x1c,0x00,0x14,0x08,0x3e,0x08,0x14,0x08,0x08,0x3e,0x08,0x08,0x00,0x50,0x30,0x00,0x00,0x00,0x08,0x08,0x08,0x08,0x00,0x60,0x60,0x00,0xff,0x20,0x10,0x08,0x04,0x02, +0x00,0x00,0xff,0xff,0xff,0x00,0x00,0x00,0x6f,0x00,0x00,0x07,0x00,0x07,0x00,0x18,0x30,0x18,0x0c,0x06,0x08,0x7f,0x7f,0x7f,0x08,0x23,0x13,0x08,0x64,0x62,0x36,0x49,0x55,0x22,0x50,0x00,0x05,0x03,0x00,0x00,0x00,0x1c,0x22,0x41,0x00,0x00,0x41,0x22,0x1c,0x00,0x14,0x08,0x3e,0x08,0x14,0x08,0x08,0x3e,0x08,0x08,0x00,0x50,0x30,0x00,0x00,0x00,0x08,0x08,0x08,0x08,0x40,0xff,0xff,0xff,0xff,0x20,0x10,0x08,0x04,0x02, 0x3e,0x41,0x41,0x3e,0xff,0x00,0x42,0x7f,0x40,0xff,0x62,0x51,0x49,0x46,0xff,0x41,0x49,0x49,0x36,0xff,0x18,0x14,0x12,0x7f,0xff,0x27,0x45,0x45,0x39,0xff,0x3e,0x49,0x49,0x32,0xff,0x01,0x79,0x05,0x03,0xff,0x36,0x49,0x49,0x36,0xff,0x06,0x49,0x29,0x1e,0xff,0x00,0x00,0x36,0x36,0x00,0x00,0x00,0x56,0x36,0x00,0x08,0x14,0x22,0x41,0xff,0x14,0x14,0x14,0x14,0x14,0x41,0x22,0x14,0x08,0xff,0x02,0x01,0x51,0x09,0x06, 0x06,0x09,0x09,0x06,0x00,0x7e,0x09,0x09,0x09,0x7e,0x7f,0x49,0x49,0x49,0x36,0x3e,0x41,0x41,0x41,0x22,0x7f,0x41,0x41,0x22,0x1c,0x7f,0x49,0x49,0x49,0x41,0x7f,0x09,0x09,0x09,0x01,0x3e,0x41,0x49,0x49,0x7a,0x7f,0x08,0x08,0x08,0x7f,0x41,0x7f,0x41,0xff,0xff,0x20,0x40,0x41,0x3f,0x01,0x7f,0x08,0x14,0x22,0x41,0x7f,0x40,0x40,0x40,0xff,0x7f,0x02,0x0c,0x02,0x7f,0x7f,0x04,0x08,0x10,0x7f,0x3e,0x41,0x41,0x41,0x3e, 0x7f,0x09,0x09,0x09,0x06,0x3e,0x41,0x51,0x21,0x5e,0x7f,0x09,0x19,0x29,0x46,0x26,0x49,0x49,0x49,0x32,0x01,0x01,0x7f,0x01,0x01,0x3f,0x40,0x40,0x40,0x3f,0x1f,0x20,0x40,0x20,0x1f,0x3f,0x40,0x30,0x40,0x3f,0x63,0x14,0x08,0x14,0x63,0x07,0x08,0x70,0x08,0x07,0x61,0x51,0x49,0x45,0x43,0x00,0x7f,0x41,0x41,0x00,0x02,0x04,0x08,0x10,0x20,0x00,0x41,0x41,0x7f,0x00,0x04,0x02,0x01,0x02,0x04,0x40,0x40,0x40,0x40,0x40, diff --git a/radio/src/fonts/std/font_05x07.png b/radio/src/fonts/std/font_05x07.png index 61d3150d3d749d159246edd5424fb659b1a011dc..863731cd829a3cfc5e3d35c7424084a7293872f9 100644 GIT binary patch delta 534 zcmV+x0_pwe1nUHlV1E<^QsSuJ^b)BO+-ab8 z2_D=~(@tT_AT^(FnSb8XkB5in{ehL*n2|lk!Z=u|mFc-9pMQpX5#Ow-beM)Qu=JY~ zjGk$J-3nI7SH|eD8SVm$TzX2E{8HGAxbbt$V?iAk*yiC_?qOG?KTE^(0-T+GCm7?s zdEExlEN}ZT-g~dFgJrIBpXCwUMb&tJ%$!*mqHyxo%%pH*}Rve0#6+cB~k3K;cmp=(y=w6cAkU)Q!EsP8;FhW zo<+fiV2aDEO6@K#Y}zInVGteIA=q*zZV`|T&$Q)|x=s;)nf9YOZOwu0Q!&%7sA-?U z(C)$N z@$T}@9$?qk`H6#k0oChmeq>eQ&v&Avv3xXCS_Ie=n-iZ`bqBK0ePZ+ud6ixSztqs0 zVul0eAa{+EdViLL1xT4+N_8b(;V47DzoEp7ofPgx{4JeZ<7(GQ2w2JrMd2pHW_M3T zpb$)PnH8zSWea~~6KEhr2X_io&ctj3WYe>#TvFEv!(SGCJg2QXuzjlCqE$8RBV4)b zS>>kD#OzTH+PU&m}0aPxpTXe847XMgs>aZvwY9Qn%d`|$3e`thFf zu3o?!Yy8APzQEKs+Wg3h!e8iOlIGIUP-!hN-;I{mp&!z|`Ay&cI$J;tn(Q9_k7F7{ zZ*xpNVjR)Tj6lQ1LVGWF#ws*>o002ovPDHLkV1lEk0-FE; From 350e910a572c02441e838c570057e6aad917d861 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Fri, 20 Dec 2013 09:47:15 +0100 Subject: [PATCH 023/308] TelemetryAnalog widget resized --- companion/src/modeledit/telemetry_analog.ui | 32 ++++++++++----------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/companion/src/modeledit/telemetry_analog.ui b/companion/src/modeledit/telemetry_analog.ui index 30a3615c0..d8b713105 100644 --- a/companion/src/modeledit/telemetry_analog.ui +++ b/companion/src/modeledit/telemetry_analog.ui @@ -6,7 +6,7 @@ 0 0 - 291 + 272 118 @@ -15,7 +15,7 @@ - + @@ -168,19 +168,6 @@ - - - - - 0 - 0 - - - - Min Value - - - @@ -260,7 +247,20 @@ - + + + + + 0 + 0 + + + + Min Value + + + + From 70102b2fa55ae036c612ee8c8ea1afa9b0313d29 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Fri, 20 Dec 2013 10:51:34 +0100 Subject: [PATCH 024/308] [stock / gruvin9x] DSM2=SERIAL was broken since r2725, thanks Cam for reporting this issue! --- src/protocols/pulses_avr.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/protocols/pulses_avr.cpp b/src/protocols/pulses_avr.cpp index 1ed8d05fb..707eac8c9 100644 --- a/src/protocols/pulses_avr.cpp +++ b/src/protocols/pulses_avr.cpp @@ -108,7 +108,9 @@ ISR(TIMER1_COMPA_vect) //2MHz pulse generation (BLOCKING ISR) // Call setupPulses only after REST pulse had been sent. // Must do this before toggle PORTB to keep timing accurate if (IS_DSM2_SERIAL_PROTOCOL(s_current_protocol[0]) || *((uint16_t*)pulses2MHzRPtr) == 0) { - OCR1A = SETUP_PULSES_DURATION; + if (!IS_DSM2_SERIAL_PROTOCOL(s_current_protocol[0])) { + OCR1A = SETUP_PULSES_DURATION; + } setupPulses(); // does not sei() for setupPulsesPPM heartbeat |= HEART_TIMER_PULSES; return; From 5b7654e47555cffa097216d0f4c746269583b54f Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Fri, 20 Dec 2013 19:59:47 +0100 Subject: [PATCH 025/308] StartupSwitches and BeepCenter in ModelSetup rewritten --- companion/src/eeprominterface.cpp | 45 +- companion/src/eeprominterface.h | 15 +- companion/src/helpers.cpp | 6 - companion/src/helpers.h | 2 +- companion/src/modeledit/setup.cpp | 399 +++++--------- companion/src/modeledit/setup.h | 24 +- companion/src/modeledit/setup.ui | 835 +++--------------------------- 7 files changed, 226 insertions(+), 1100 deletions(-) diff --git a/companion/src/eeprominterface.cpp b/companion/src/eeprominterface.cpp index 909a0e5e5..206804e1c 100644 --- a/companion/src/eeprominterface.cpp +++ b/companion/src/eeprominterface.cpp @@ -10,6 +10,9 @@ QString EEPROMWarnings; +const char * switches9X[] = { "3POS", "THR", "RUD", "ELE", "AIL", "GEA", "TRN" }; +const char * switchesX9D[] = { "SA", "SB", "SC", "SD", "SE", "SF", "SG", "SH" }; + void setEEPROMString(char *dst, const char *src, int size) { memcpy(dst, src, size); @@ -244,27 +247,28 @@ double RawSource::getStep(const ModelData & Model) } } +QString AnalogString(int index) +{ + static const QString sticks[] = { QObject::tr("Rud"), QObject::tr("Ele"), QObject::tr("Thr"), QObject::tr("Ail") }; + static const QString pots9X[] = { QObject::tr("P1"), QObject::tr("P2"), QObject::tr("P3") }; + static const QString potsX9D[] = { QObject::tr("S1"), QObject::tr("S2"), QObject::tr("LS"), QObject::tr("RS") }; + + if (index < 4) + return CHECK_IN_ARRAY(sticks, index); + else + return (IS_TARANIS(GetEepromInterface()->getBoard()) ? CHECK_IN_ARRAY(potsX9D, index-4) : CHECK_IN_ARRAY(pots9X, index-4)); +} + +QString RotaryEncoderString(int index) +{ + static const QString rotary[] = { QObject::tr("REa"), QObject::tr("REb") }; + return CHECK_IN_ARRAY(rotary, index); +} + QString RawSource::toString() { - static const QString sticks[] = { QObject::tr("Rud"), QObject::tr("Ele"), QObject::tr("Thr"), QObject::tr("Ail") }; - static const QString trims[] = { QObject::tr("TrmR"), QObject::tr("TrmE"), QObject::tr("TrmT"), QObject::tr("TrmA")}; - static const QString pots9X[] = { QObject::tr("P1"), QObject::tr("P2"), QObject::tr("P3") }; - - static const QString potsX9D[] = { QObject::tr("S1"), QObject::tr("S2"), QObject::tr("LS"), QObject::tr("RS") }; - - static const QString rotary[] = { QObject::tr("REa"), QObject::tr("REb") }; - - static const QString switches9X[] = { QObject::tr("3POS"), - QObject::tr("THR"), QObject::tr("RUD"), QObject::tr("ELE"), - QObject::tr("AIL"), QObject::tr("GEA"), QObject::tr("TRN"), - }; - - static const QString switchesX9D[] = { QObject::tr("SA"), QObject::tr("SB"), QObject::tr("SC"), QObject::tr("SD"), - QObject::tr("SE"), QObject::tr("SF"), QObject::tr("SG"), QObject::tr("SH"), - }; - static const QString telemetry[] = { QObject::tr("Batt"), QObject::tr("Timer1"), QObject::tr("Timer2"), (IS_TARANIS(GetEepromInterface()->getBoard()) ? QObject::tr("SWR") : QObject::tr("Tx")), (IS_TARANIS(GetEepromInterface()->getBoard()) ? QObject::tr("RSSI") : QObject::tr("Rx")), QObject::tr("A1"), QObject::tr("A2"), QObject::tr("Alt"), QObject::tr("Rpm"), QObject::tr("Fuel"), QObject::tr("T1"), QObject::tr("T2"), QObject::tr("Speed"), QObject::tr("Dist"), QObject::tr("GPS Alt"), QObject::tr("Cell"), QObject::tr("Cels"), QObject::tr("Vfas"), QObject::tr("Curr"), @@ -284,14 +288,11 @@ QString RawSource::toString() } switch(type) { case SOURCE_TYPE_STICK: - if (index < 4) - return CHECK_IN_ARRAY(sticks, index); - else - return (IS_TARANIS(GetEepromInterface()->getBoard()) ? CHECK_IN_ARRAY(potsX9D, index-4) : CHECK_IN_ARRAY(pots9X, index-4)); + return AnalogString(index); case SOURCE_TYPE_TRIM: return CHECK_IN_ARRAY(trims, index); case SOURCE_TYPE_ROTARY_ENCODER: - return CHECK_IN_ARRAY(rotary, index); + return RotaryEncoderString(index); case SOURCE_TYPE_MAX: return QObject::tr("MAX"); case SOURCE_TYPE_SWITCH: diff --git a/companion/src/eeprominterface.h b/companion/src/eeprominterface.h index 148f7726d..cf5e7a2dd 100644 --- a/companion/src/eeprominterface.h +++ b/companion/src/eeprominterface.h @@ -50,8 +50,8 @@ enum BoardEnum { BOARD_TARANIS_REV4a }; #define IS_STOCK(board) (board==BOARD_STOCK || board==BOARD_M128) -#define IS_ARM(board) (board==BOARD_SKY9X || board==BOARD_TARANIS || board==BOARD_TARANIS_REV4a) -#define IS_TARANIS(board) (board==BOARD_TARANIS || board==BOARD_TARANIS_REV4a) +#define IS_ARM(board) (board==BOARD_SKY9X || board==BOARD_TARANIS || board==BOARD_TARANIS_REV4a) +#define IS_TARANIS(board) (board==BOARD_TARANIS || board==BOARD_TARANIS_REV4a) const uint8_t modn12x3[4][4]= { {1, 2, 3, 4}, @@ -198,10 +198,13 @@ enum HeliSwashTypes { #define NUM_CAL_PPM 4 #define NUM_PPM 8 #define NUM_CYC 3 -#define C9X_NUM_SWITCHES 10 -#define C9X_NUM_KEYS 6 +#define C9X_NUM_SWITCHES 10 +#define C9X_NUM_KEYS 6 #define C9X_MAX_TIMERS 2 +extern const char * switches9X[]; +extern const char * switchesX9D[]; + enum TelemetrySource { TELEMETRY_SOURCE_TX_BATT, TELEMETRY_SOURCE_TIMER1, @@ -267,8 +270,12 @@ enum RawSourceType { SOURCE_TYPE_TELEMETRY, MAX_SOURCE_TYPE }; + class ModelData; +QString AnalogString(int index); +QString RotaryEncoderString(int index); + class RawSource { public: RawSource(): diff --git a/companion/src/helpers.cpp b/companion/src/helpers.cpp index fc4346a23..3639b7027 100644 --- a/companion/src/helpers.cpp +++ b/companion/src/helpers.cpp @@ -1138,12 +1138,6 @@ int findmult(float value, float base) return mult; } -bool checkbit(int value, int bit) -{ - return ((value & (1<swwarn_label, ui->swwarn0_label, ui->swwarn4_label, NULL}; - QCheckBox * pmchkb[] = {ui->swwarn1_ChkB,ui->swwarn2_ChkB,ui->swwarn3_ChkB,ui->swwarn5_ChkB,ui->swwarn6_ChkB, NULL}; - QSlider * tpmsld[] = {ui->chkSA, ui->chkSB, ui->chkSC, ui->chkSD, ui->chkSE, ui->chkSF, ui->chkSG, NULL}; + QSlider * fssld1[] = { ui->fsm1SL_1, ui->fsm1SL_2,ui->fsm1SL_3,ui->fsm1SL_4,ui->fsm1SL_5,ui->fsm1SL_6,ui->fsm1SL_7,ui->fsm1SL_8, ui->fsm1SL_9, ui->fsm1SL_10,ui->fsm1SL_11,ui->fsm1SL_12,ui->fsm1SL_13,ui->fsm1SL_14,ui->fsm1SL_15,ui->fsm1SL_16, NULL }; QSlider * fssld2[] = { ui->fsm2SL_1, ui->fsm2SL_2,ui->fsm2SL_3,ui->fsm2SL_4,ui->fsm2SL_5,ui->fsm2SL_6,ui->fsm2SL_7,ui->fsm2SL_8, @@ -133,74 +130,50 @@ void Setup::tabModelEditSetup() } } } - } - if (!GetEepromInterface()->getCapability(pmSwitchMask)) { - for (int i=0; pmsl[i]; i++) { - pmsl[i]->hide(); - } - for (int i=0; pmchkb[i]; i++) { - pmchkb[i]->hide(); - } - ui->tswwarn0_CB->hide(); - for (int i=0; tpmsld[i]; i++) { - tpmsld[i]->hide(); - } - ui->swwarn0_line->hide(); - ui->swwarn0_line->hide(); - ui->swwarn0_CB->hide(); - ui->swwarn4_CB->hide(); - ui->swwarn_line0->hide(); - ui->swwarn_line1->hide(); - ui->swwarn_line2->hide(); - ui->swwarn_line3->hide(); - ui->swwarn_line4->hide(); - ui->swwarn_line5->hide(); - ui->tswwarn0_label->hide(); - ui->tswwarn1_label->hide(); - ui->tswwarn2_label->hide(); - ui->tswwarn3_label->hide(); - ui->tswwarn4_label->hide(); - ui->tswwarn5_label->hide(); - ui->tswwarn6_label->hide(); - ui->tswwarn7_label->hide(); - } else { - if (GetEepromInterface()->getCapability(Pots)==3) { - ui->swwarn0_CB->setCurrentIndex(model.switchWarningStates & 0x01); - ui->swwarn1_ChkB->setChecked(checkbit(model.switchWarningStates, 1)); - ui->swwarn2_ChkB->setChecked(checkbit(model.switchWarningStates, 2)); - ui->swwarn3_ChkB->setChecked(checkbit(model.switchWarningStates, 3)); - ui->swwarn4_CB->setCurrentIndex((model.switchWarningStates & 0x30)>>4); - ui->swwarn5_ChkB->setChecked(checkbit(model.switchWarningStates, 6)); - ui->swwarn6_ChkB->setChecked(checkbit(model.switchWarningStates, 7)); - for (int i=0; pmchkb[i]; i++) { - connect(pmchkb[i], SIGNAL(stateChanged(int)),this,SLOT(startupSwitchEdited())); - } - connect(ui->swwarn0_CB,SIGNAL(currentIndexChanged(int)),this,SLOT(startupSwitchEdited())); - connect(ui->swwarn4_CB,SIGNAL(currentIndexChanged(int)),this,SLOT(startupSwitchEdited())); - } else { - ui->tswwarn0_CB->setCurrentIndex(model.switchWarningStates & 0x01); - uint16_t switchstate=(model.switchWarningStates>>1); - ui->chkSA->setValue(switchstate & 0x3); - switchstate >>= 2; - ui->chkSB->setValue(switchstate & 0x3); - switchstate >>= 2; - ui->chkSC->setValue(switchstate & 0x3); - switchstate >>= 2; - ui->chkSD->setValue(switchstate & 0x3); - switchstate >>= 2; - ui->chkSE->setValue(switchstate & 0x3); - switchstate >>= 2; - ui->chkSF->setValue((switchstate & 0x3)/2); - switchstate >>= 2; - ui->chkSG->setValue(switchstate & 0x3); - connect(ui->tswwarn0_CB,SIGNAL(currentIndexChanged(int)),this,SLOT(startupSwitchEdited())); - for (int i=0; tpmsld[i]; i++) { - connect(tpmsld[i], SIGNAL(valueChanged(int)),this,SLOT(startupSwitchEdited())); - } - } + // Beep Center checkboxes + int analogs = 4 + GetEepromInterface()->getCapability(Pots); + for (int i=0; igetCapability(RotaryEncoders); i++) { + QCheckBox * checkbox = new QCheckBox(this); + checkbox->setProperty("index", i); + checkbox->setText(icenterBeepLayout->addWidget(checkbox, 0, i+1); + connect(checkbox, SIGNAL(toggled(bool)), this, SLOT(onBeepCenterToggled(bool))); + centerBeepCheckboxes << checkbox; } + ui->switchesStartupLayout->addItem(new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Minimum), 0, analogs+GetEepromInterface()->getCapability(RotaryEncoders)); + + // Startup switches warnings + ui->switchesStartupWarning_CB->setProperty("index", 0); + connect(ui->switchesStartupWarning_CB, SIGNAL(currentIndexChanged(int)), this, SLOT(startupSwitchEdited(int))); + for (int i=0; igetCapability(Switches)-1; i++) { + QLabel * label = new QLabel(); + QSlider * slider = new QSlider(); + slider->setProperty("index", i+1); + slider->setOrientation(Qt::Vertical); + slider->setMinimum(0); + slider->setSingleStep(1); + slider->setInvertedAppearance(true); + slider->setTickPosition(QSlider::TicksBothSides); + slider->setTickInterval(1); + slider->setMinimumSize(QSize(30, 50)); + slider->setMaximumSize(QSize(50, 50)); + if (IS_TARANIS(GetEepromInterface()->getBoard())) { + label->setText(switchesX9D[i]); + slider->setMaximum(i==5 ? 1 : 2); + } + else { + label->setText(switches9X[i]); + slider->setMaximum(i==0 ? 2 : 1); + } + ui->switchesStartupLayout->addWidget(label, 0, i+1); + ui->switchesStartupLayout->addWidget(slider, 1, i+1); + connect(slider, SIGNAL(valueChanged(int)), this, SLOT(startupSwitchEdited(int))); + startupSwitchesSliders << slider; + } + ui->switchesStartupLayout->addItem(new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Minimum), 0, GetEepromInterface()->getCapability(Switches)); + int ppmmax=GetEepromInterface()->getCapability(PPMFrameLength); if (ppmmax>0) { ui->ppmFrameLengthDSB->setMaximum(ppmmax); @@ -243,52 +216,6 @@ void Setup::tabModelEditSetup() } else { populateTTraceCB(ui->ttraceCB,model.thrTraceSrc); } - if (GetEepromInterface()->getCapability(RotaryEncoders)==0) { - ui->bcREaChkB->hide(); - ui->bcREbChkB->hide(); - } - if (GetEepromInterface()->getCapability(Pots)==3) { - ui->tswwarn0_CB->hide(); - ui->tswwarn0_label->hide(); - ui->tswwarn1_label->hide(); - ui->tswwarn2_label->hide(); - ui->tswwarn3_label->hide(); - ui->tswwarn4_label->hide(); - ui->tswwarn5_label->hide(); - ui->tswwarn6_label->hide(); - ui->tswwarn7_label->hide(); - ui->chkSA->hide(); - ui->chkSB->hide(); - ui->chkSC->hide(); - ui->chkSD->hide(); - ui->chkSE->hide(); - ui->chkSF->hide(); - ui->chkSG->hide(); - this->layout()->removeItem(ui->TaranisSwitchStartup); - ui->bcP4ChkB->hide(); - } else { - ui->swwarn0_CB->hide(); - ui->swwarn0_label->hide(); - ui->swwarn0_line->hide(); - ui->swwarn1_ChkB->hide(); - ui->swwarn1_line->hide(); - ui->swwarn2_ChkB->hide(); - ui->swwarn3_ChkB->hide(); - ui->swwarn4_CB->hide(); - ui->swwarn4_label->hide(); - ui->swwarn5_ChkB->hide(); - ui->swwarn6_ChkB->hide(); - ui->swwarn_line0->hide(); - ui->swwarn_line1->hide(); - ui->swwarn_line2->hide(); - ui->swwarn_line3->hide(); - ui->swwarn_line4->hide(); - ui->swwarn_line5->hide(); - this->layout()->removeItem(ui->StockSwitchStartup); - ui->bcP1ChkB->setText(tr("S1")); - ui->bcP2ChkB->setText(tr("S2")); - ui->bcP3ChkB->setText(tr("LS")); - } if (!GetEepromInterface()->getCapability(PerModelThrottleWarning)) { ui->thrwarnChkB->setDisabled(true); @@ -471,18 +398,6 @@ void Setup::tabModelEditSetup() ui->thrExpoChkB->setChecked(model.thrExpo); ui->thrTrimChkB->setChecked(model.thrTrim); - //center beep - ui->bcRUDChkB->setChecked(model.beepANACenter & BC_BIT_RUD); - ui->bcELEChkB->setChecked(model.beepANACenter & BC_BIT_ELE); - ui->bcTHRChkB->setChecked(model.beepANACenter & BC_BIT_THR); - ui->bcAILChkB->setChecked(model.beepANACenter & BC_BIT_AIL); - ui->bcP1ChkB->setChecked(model.beepANACenter & BC_BIT_P1); - ui->bcP2ChkB->setChecked(model.beepANACenter & BC_BIT_P2); - ui->bcP3ChkB->setChecked(model.beepANACenter & BC_BIT_P3); - ui->bcP4ChkB->setChecked(model.beepANACenter & BC_BIT_P4); - ui->bcREaChkB->setChecked(model.beepANACenter & BC_BIT_REA); - ui->bcREbChkB->setChecked(model.beepANACenter & BC_BIT_REB); - // PPM settings fields ui->ppmDelaySB->setEnabled(model.moduleData[0].protocol == PPM); ui->pulsePolCB->setCurrentIndex(model.moduleData[0].ppmPulsePol); @@ -996,8 +911,6 @@ void Setup::fssbEdited() emit modified(); } - - void Setup::on_modelVoice_SB_editingFinished() { model.modelVoice=ui->modelVoice_SB->value()-260; @@ -1316,66 +1229,86 @@ void Setup::on_modelImage_CB_currentIndexChanged(int index) } } -void Setup::startupSwitchEdited() +void Setup::update() { - if (GetEepromInterface()->getCapability(Pots)==3) { - uint8_t i= 0; - i|=(uint8_t)ui->swwarn0_CB->currentIndex(); - if (i==1) { - ui->swwarn1_ChkB->setDisabled(true) ; - ui->swwarn2_ChkB->setDisabled(true) ; - ui->swwarn3_ChkB->setDisabled(true) ; - ui->swwarn4_CB->setDisabled(true) ; - ui->swwarn5_ChkB->setDisabled(true) ; - ui->swwarn6_ChkB->setDisabled(true) ; + updateBeepCenter(); + updateStartupSwitches(); +} + +void Setup::updateBeepCenter() +{ + for (int i=0; isetChecked(model.beepANACenter & (0x01 << i)); + } +} + +void Setup::updateStartupSwitches() +{ + lock = true; + + unsigned int switchStates = model.switchWarningStates; + bool enabled = !(switchStates & 0x01); + ui->switchesStartupWarning_CB->setCurrentIndex(switchStates & 0x01); + switchStates >>= 1; + + for (int i=0; igetCapability(Switches)-1; i++) { + QSlider * slider = startupSwitchesSliders[i]; + slider->setEnabled(enabled); + if (IS_TARANIS(GetEepromInterface()->getBoard())) { + slider->setValue(i==5 ? (switchStates & 0x3)/2 : switchStates & 0x3); + switchStates >>= 2; } else { - ui->swwarn1_ChkB->setEnabled(true) ; - ui->swwarn2_ChkB->setEnabled(true) ; - ui->swwarn3_ChkB->setEnabled(true) ; - ui->swwarn4_CB->setEnabled(true) ; - ui->swwarn5_ChkB->setEnabled(true) ; - ui->swwarn6_ChkB->setEnabled(true) ; - i|=(ui->swwarn1_ChkB->isChecked() ? 1 : 0)<<1; - i|=(ui->swwarn2_ChkB->isChecked() ? 1 : 0)<<2; - i|=(ui->swwarn3_ChkB->isChecked() ? 1 : 0)<<3; - i|=((uint8_t)ui->swwarn4_CB->currentIndex() & 0x03)<<4; - i|=(ui->swwarn5_ChkB->isChecked() ? 1 : 0)<<6; - i|=(ui->swwarn6_ChkB->isChecked() ? 1 : 0)<<7; + slider->setValue(i==0 ? switchStates & 0x3 : switchStates & 0x1); + switchStates >>= (i==0 ? 2 : 1); } - model.switchWarningStates=i; } - else { - uint16_t i= 0; - i|=(uint16_t)ui->tswwarn0_CB->currentIndex(); - if (i==1) { - ui->chkSA->setDisabled(true); - ui->chkSB->setDisabled(true); - ui->chkSC->setDisabled(true); - ui->chkSD->setDisabled(true); - ui->chkSE->setDisabled(true); - ui->chkSF->setDisabled(true); - ui->chkSG->setDisabled(true); + + lock = false; +} + +void Setup::startupSwitchEdited(int value) +{ + if (!lock) { + int shift = 0; + unsigned int mask; + int index = sender()->property("index").toInt(); + + if (index == 0) { + mask = 0x01; + } + else if (IS_TARANIS(GetEepromInterface()->getBoard())) { + if (index == 6) + mask = 0x02 << (index*2 - 1); + else { + shift = index*2 - 1; + mask = 0x03 << shift; + } } else { - ui->chkSA->setEnabled(true); - ui->chkSB->setEnabled(true); - ui->chkSC->setEnabled(true); - ui->chkSD->setEnabled(true); - ui->chkSE->setEnabled(true); - ui->chkSF->setEnabled(true); - ui->chkSG->setEnabled(true); - i|=(((uint16_t)ui->chkSA->value())<<1); - i|=(((uint16_t)ui->chkSB->value())<<3); - i|=(((uint16_t)ui->chkSC->value())<<5); - i|=(((uint16_t)ui->chkSD->value())<<7); - i|=(((uint16_t)ui->chkSE->value())<<9); - i|=(((uint16_t)ui->chkSF->value())<<12); - i|=(((uint16_t)ui->chkSG->value())<<13); + if (index == 1) { + shift = 1; + mask = 0x03 << shift; + } + else { + mask = 0x01 << (index+1); + } } - model.switchWarningStates=i; + + model.switchWarningStates &= ~mask; + + if (value) { + if (shift == 0) { + model.switchWarningStates |= mask; + } + else { + model.switchWarningStates |= (value << shift); + } + } + + updateStartupSwitches(); + emit modified(); } - emit modified(); } void Setup::on_thrTrimChkB_toggled(bool checked) @@ -1390,103 +1323,15 @@ void Setup::on_thrExpoChkB_toggled(bool checked) emit modified(); } -void Setup::on_bcRUDChkB_toggled(bool checked) +void Setup::onBeepCenterToggled(bool checked) { - if(checked) { - model.beepANACenter |= BC_BIT_RUD; - } else { - model.beepANACenter &= ~BC_BIT_RUD; - } + if (!lock) { + int index = sender()->property("index").toInt(); + unsigned int mask = (0x01 << index); + if (checked) + model.beepANACenter |= mask; + else + model.beepANACenter &= ~mask; emit modified(); + } } - -void Setup::on_bcELEChkB_toggled(bool checked) -{ - if(checked) { - model.beepANACenter |= BC_BIT_ELE; - } else { - model.beepANACenter &= ~BC_BIT_ELE; - } - emit modified(); -} - -void Setup::on_bcTHRChkB_toggled(bool checked) -{ - if(checked) { - model.beepANACenter |= BC_BIT_THR; - } else { - model.beepANACenter &= ~BC_BIT_THR; - } - emit modified(); -} - -void Setup::on_bcAILChkB_toggled(bool checked) -{ - if(checked) { - model.beepANACenter |= BC_BIT_AIL; - } else { - model.beepANACenter &= ~BC_BIT_AIL; - } - emit modified(); -} - -void Setup::on_bcP1ChkB_toggled(bool checked) -{ - if(checked) { - model.beepANACenter |= BC_BIT_P1; - } else { - model.beepANACenter &= ~BC_BIT_P1; - } - emit modified(); -} - -void Setup::on_bcP2ChkB_toggled(bool checked) -{ - if(checked) { - model.beepANACenter |= BC_BIT_P2; - } else { - model.beepANACenter &= ~BC_BIT_P2; - } - emit modified(); -} - -void Setup::on_bcP3ChkB_toggled(bool checked) -{ - if(checked) { - model.beepANACenter |= BC_BIT_P3; - } else { - model.beepANACenter &= ~BC_BIT_P3; - } - emit modified(); -} - -void Setup::on_bcP4ChkB_toggled(bool checked) -{ - if(checked) { - model.beepANACenter |= BC_BIT_P4; - } else { - model.beepANACenter &= ~BC_BIT_P4; - } - emit modified(); -} - -void Setup::on_bcREaChkB_toggled(bool checked) -{ - if(checked) { - model.beepANACenter |= BC_BIT_REA; - } else { - model.beepANACenter &= ~BC_BIT_REA; - } - emit modified(); -} - -void Setup::on_bcREbChkB_toggled(bool checked) -{ - if(checked) { - model.beepANACenter |= BC_BIT_REB; - } else { - model.beepANACenter &= ~BC_BIT_REB; - } - emit modified(); -} - diff --git a/companion/src/modeledit/setup.h b/companion/src/modeledit/setup.h index 87b3cc843..7b33a3af0 100644 --- a/companion/src/modeledit/setup.h +++ b/companion/src/modeledit/setup.h @@ -2,6 +2,9 @@ #define SETUP_H #include "modelpanel.h" +#include +#include +#include namespace Ui { class Setup; @@ -15,6 +18,8 @@ class Setup : public ModelPanel Setup(QWidget *parent, ModelData & model); virtual ~Setup(); + virtual void update(); + private slots: void on_protocolCB_currentIndexChanged(int index); void on_protocolCB_2_currentIndexChanged(int index); @@ -74,23 +79,16 @@ class Setup : public ModelPanel void on_timer2ModeBCB_currentIndexChanged(int index); void on_modelNameLE_editingFinished(); void on_modelImage_CB_currentIndexChanged(int index); - - void on_bcRUDChkB_toggled(bool checked); - void on_bcELEChkB_toggled(bool checked); - void on_bcTHRChkB_toggled(bool checked); - void on_bcAILChkB_toggled(bool checked); - void on_bcP1ChkB_toggled(bool checked); - void on_bcP2ChkB_toggled(bool checked); - void on_bcP3ChkB_toggled(bool checked); - void on_bcP4ChkB_toggled(bool checked); - void on_bcREaChkB_toggled(bool checked); - void on_bcREbChkB_toggled(bool checked); - - void startupSwitchEdited(); + void onBeepCenterToggled(bool checked); + void startupSwitchEdited(int value); private: Ui::Setup *ui; + QVector startupSwitchesSliders; + QVector centerBeepCheckboxes; void tabModelEditSetup(); + void updateStartupSwitches(); + void updateBeepCenter(); }; #endif // SETUP_H diff --git a/companion/src/modeledit/setup.ui b/companion/src/modeledit/setup.ui index 94dbaadfb..82f67f43b 100644 --- a/companion/src/modeledit/setup.ui +++ b/companion/src/modeledit/setup.ui @@ -8,6 +8,14 @@ true + + + 0 + 0 + 968 + 660 + + 0 @@ -225,784 +233,8 @@ - - - - 0 - - - 6 - - - - - - 0 - 0 - - - - Qt::Vertical - - - - - - - - 0 - 0 - - - - Qt::Vertical - - - - - - - - 0 - 0 - - - - Qt::Vertical - - - - - - - - 0 - 0 - - - - 3POS - - - Qt::AlignCenter - - - - - - - - 0 - 0 - - - - Check - - - Qt::AlignCenter - - - - - - - Qt::LeftToRight - - - THR - - - - - - - - ON - - - - - OFF - - - - - - - - Qt::LeftToRight - - - RUD - - - - - - - Qt::LeftToRight - - - ELE - - - - - - - Qt::LeftToRight - - - AIL - - - - - - - Qt::LeftToRight - - - GEA - - - - - - - true - - - - ID0 - - - - - ID1 - - - - - ID2 - - - - - - - - - 0 - 0 - - - - Qt::Vertical - - - - - - - - 0 - 0 - - - - Qt::Vertical - - - - - - - - 0 - 0 - - - - Qt::Vertical - - - - - - - - - QLayout::SetMinimumSize - - - 0 - - - 0 - - - - - - 0 - 0 - - - - - ON - - - - - OFF - - - - - - - - - 0 - 0 - - - - SB - - - Qt::AlignCenter - - - - - - - - 0 - 0 - - - - SD - - - Qt::AlignCenter - - - - - - - - 0 - 0 - - - - SA - - - Qt::AlignCenter - - - - - - - - 0 - 0 - - - - Check - - - Qt::AlignCenter - - - - - - - - 0 - 0 - - - - - 0 - 50 - - - - - 16777215 - 50 - - - - 0 - - - 2 - - - 1 - - - 0 - - - Qt::Vertical - - - true - - - QSlider::TicksBothSides - - - 1 - - - - - - - - 0 - 0 - - - - - 0 - 50 - - - - - 16777215 - 50 - - - - 0 - - - 2 - - - 1 - - - 0 - - - Qt::Vertical - - - true - - - QSlider::TicksBothSides - - - 1 - - - - - - - - 0 - 0 - - - - SC - - - Qt::AlignCenter - - - - - - - - 0 - 0 - - - - - 0 - 50 - - - - - 16777215 - 50 - - - - 0 - - - 2 - - - 1 - - - 0 - - - Qt::Vertical - - - true - - - QSlider::TicksBothSides - - - 1 - - - - - - - - 0 - 0 - - - - SG - - - Qt::AlignCenter - - - - - - - - 0 - 0 - - - - SE - - - Qt::AlignCenter - - - - - - - - 0 - 0 - - - - - 0 - 50 - - - - - 16777215 - 50 - - - - 0 - - - 2 - - - 1 - - - 0 - - - Qt::Vertical - - - true - - - QSlider::TicksBothSides - - - 1 - - - - - - - - 0 - 0 - - - - - 0 - 50 - - - - - 16777215 - 50 - - - - 0 - - - 2 - - - 1 - - - 0 - - - Qt::Vertical - - - true - - - QSlider::TicksBothSides - - - 1 - - - - - - - - 0 - 0 - - - - SF - - - Qt::AlignCenter - - - - - - - - 0 - 0 - - - - - 0 - 50 - - - - - 16777215 - 50 - - - - 0 - - - 2 - - - 1 - - - 0 - - - Qt::Vertical - - - true - - - QSlider::TicksBothSides - - - 1 - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - 0 - 0 - - - - - 0 - 50 - - - - - 16777215 - 50 - - - - 0 - - - 1 - - - 1 - - - 1 - - - 0 - - - Qt::Vertical - - - true - - - QSlider::TicksBothSides - - - 1 - - - - - - - - - - REa - - - - - - - RUD - - - - - - - ELE - - - - - - - THR - - - - - - - AIL - - - - - - - P1 - - - - - - - P2 - - - - - - - P3 - - - - - - - REb - - - - - - - RS - - - - + @@ -2405,6 +1637,55 @@ If this is checked the throttle will be reversed. Idle will be forward, trim wi + + + + QLayout::SetMinimumSize + + + 0 + + + 0 + + + + + + 0 + 0 + + + + + ON + + + + + OFF + + + + + + + + + 0 + 0 + + + + Check + + + Qt::AlignCenter + + + + + From 97ff1828d1da403712c66b96b0e64cd9e14fd3b4 Mon Sep 17 00:00:00 2001 From: mhotar Date: Sun, 22 Dec 2013 00:36:40 +0100 Subject: [PATCH 026/308] proportional SQT5 font bitmaps --- radio/src/fonts/sqt5/font_03x05.lbm | 1 - radio/src/fonts/sqt5/font_03x05.png | Bin 222 -> 0 bytes radio/src/fonts/sqt5/font_04x06.lbm | 12 ++++++------ radio/src/fonts/sqt5/font_04x06.png | Bin 874 -> 967 bytes radio/src/fonts/sqt5/font_04x06_extra.png | Bin 159 -> 0 bytes radio/src/fonts/sqt5/font_05x07.lbm | 10 +++++----- radio/src/fonts/sqt5/font_05x07.png | Bin 937 -> 969 bytes radio/src/fonts/sqt5/font_05x07_extra.lbm | 1 - radio/src/fonts/sqt5/font_05x07_extra.png | Bin 161 -> 0 bytes radio/src/fonts/sqt5/font_08x10.lbm | 10 +++++----- radio/src/fonts/sqt5/font_08x10.png | Bin 1390 -> 1469 bytes .../src/fonts/sqt5/font_10x14_compressed.lbm | 2 +- .../src/fonts/sqt5/font_10x14_compressed.png | Bin 1157 -> 1184 bytes radio/src/fonts/sqt5/font_10x14_extra.lbm | 1 - radio/src/fonts/sqt5/font_10x14_extra.png | Bin 229 -> 0 bytes radio/src/fonts/sqt5/font_cz_04x06.lbm | 2 +- radio/src/fonts/sqt5/font_cz_04x06.png | Bin 215 -> 219 bytes radio/src/fonts/sqt5/font_cz_05x07.lbm | 2 +- radio/src/fonts/sqt5/font_cz_05x07.png | Bin 260 -> 317 bytes radio/src/fonts/sqt5/font_cz_08x10.lbm | 2 +- radio/src/fonts/sqt5/font_cz_08x10.png | Bin 265 -> 284 bytes radio/src/fonts/sqt5/font_cz_10x14.lbm | 2 +- radio/src/fonts/sqt5/font_cz_10x14.png | Bin 352 -> 359 bytes radio/src/fonts/sqt5/font_de_04x06.lbm | 2 +- radio/src/fonts/sqt5/font_de_04x06.png | Bin 176 -> 175 bytes radio/src/fonts/sqt5/font_de_08x10.lbm | 2 +- radio/src/fonts/sqt5/font_de_08x10.png | Bin 192 -> 192 bytes radio/src/fonts/sqt5/font_de_10x14.lbm | 2 +- radio/src/fonts/sqt5/font_de_10x14.png | Bin 241 -> 241 bytes radio/src/fonts/sqt5/font_es_04x06.lbm | 2 +- radio/src/fonts/sqt5/font_es_04x06.png | Bin 155 -> 155 bytes radio/src/fonts/sqt5/font_fr_04x06.lbm | 2 +- radio/src/fonts/sqt5/font_fr_04x06.png | Bin 3570 -> 3571 bytes radio/src/fonts/sqt5/font_fr_05x07.lbm | 2 +- radio/src/fonts/sqt5/font_fr_05x07.png | Bin 174 -> 172 bytes radio/src/fonts/sqt5/font_fr_08x10.lbm | 2 +- radio/src/fonts/sqt5/font_fr_08x10.png | Bin 3597 -> 3599 bytes radio/src/fonts/sqt5/font_fr_10x14.lbm | 2 +- radio/src/fonts/sqt5/font_fr_10x14.png | Bin 202 -> 198 bytes radio/src/fonts/sqt5/font_it_04x06.lbm | 2 +- radio/src/fonts/sqt5/font_it_04x06.png | Bin 157 -> 155 bytes radio/src/fonts/sqt5/font_it_08x10.lbm | 2 +- radio/src/fonts/sqt5/font_it_08x10.png | Bin 162 -> 162 bytes radio/src/fonts/sqt5/font_pl_04x06.lbm | 2 +- radio/src/fonts/sqt5/font_pl_04x06.png | Bin 175 -> 228 bytes radio/src/fonts/sqt5/font_pl_05x07.lbm | 2 +- radio/src/fonts/sqt5/font_pl_05x07.png | Bin 195 -> 251 bytes radio/src/fonts/sqt5/font_pl_08x10.lbm | 2 +- radio/src/fonts/sqt5/font_pl_08x10.png | Bin 237 -> 303 bytes radio/src/fonts/sqt5/font_pl_10x14.lbm | 2 +- radio/src/fonts/sqt5/font_pl_10x14.png | Bin 333 -> 388 bytes radio/src/fonts/sqt5/font_pt_05x07.lbm | 2 +- radio/src/fonts/sqt5/font_pt_05x07.png | Bin 244 -> 244 bytes radio/src/fonts/sqt5/font_pt_08x10.lbm | 2 +- radio/src/fonts/sqt5/font_pt_08x10.png | Bin 289 -> 302 bytes radio/src/fonts/sqt5/font_pt_10x14.lbm | 2 +- radio/src/fonts/sqt5/font_pt_10x14.png | Bin 379 -> 384 bytes radio/src/fonts/sqt5/font_se_04x06.lbm | 2 +- radio/src/fonts/sqt5/font_se_04x06.png | Bin 169 -> 168 bytes radio/src/fonts/sqt5/font_se_08x10.lbm | 2 +- radio/src/fonts/sqt5/font_se_08x10.png | Bin 195 -> 196 bytes 61 files changed, 40 insertions(+), 43 deletions(-) delete mode 100644 radio/src/fonts/sqt5/font_03x05.lbm delete mode 100644 radio/src/fonts/sqt5/font_03x05.png delete mode 100644 radio/src/fonts/sqt5/font_04x06_extra.png delete mode 100644 radio/src/fonts/sqt5/font_05x07_extra.lbm delete mode 100644 radio/src/fonts/sqt5/font_05x07_extra.png delete mode 100644 radio/src/fonts/sqt5/font_10x14_extra.lbm delete mode 100644 radio/src/fonts/sqt5/font_10x14_extra.png diff --git a/radio/src/fonts/sqt5/font_03x05.lbm b/radio/src/fonts/sqt5/font_03x05.lbm deleted file mode 100644 index 1e163ee0d..000000000 --- a/radio/src/fonts/sqt5/font_03x05.lbm +++ /dev/null @@ -1 +0,0 @@ -0x04,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0x11,0x0e,0x12,0x1f,0x10,0x19,0x15,0x13,0x11,0x15,0x1f,0x07,0x04,0x1f,0x17,0x15,0x1d,0x1f,0x15,0x1d,0x01,0x1d,0x03,0x1f,0x15,0x1f,0x17,0x15,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x1f,0x11, diff --git a/radio/src/fonts/sqt5/font_03x05.png b/radio/src/fonts/sqt5/font_03x05.png deleted file mode 100644 index c378d30f00d8dc9d479bb2526dbc754ed709ec9a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 222 zcmeAS@N?(olHy`uVBq!ia0vp^;XusF!2~4tzj=NfNHG=%xjQkeJ16rJ$l)yTh%9Dc z;1&j9Muu5)B!GhKC7!;n?04B^#Q2%dEM&e26e{p^aSX9IeKzDY-vI@V=%4@V-|?li ze7JPk$=_u))7pk7mzf)cOc*9u-u>0^^Wy!4%+niL8G3w!xHl+Vc~)+#&MuvBlglo~ z>-k+ltE}%o7AUW8V!7BS#L_t(&-o;wMmct+jG(P|Tm%E4TT9z3G zG;TMCz9h8@GBAL>Uawbc?YgekT5Am-uj{%$=eN;ykHmZXxUrC%N-T;p;8eXWUiU0h z(Cg>IG4`e+>(rJml+IR^yl-oJ>v>CTKdmvH4olaxc{_29zc{C0^^pW5y*;+fjt z4UWV`5hItTHl)y{5wVnM2_smxsANJ*kw$~X>O*-ra;RZVhcrv$6E%o^iHUJKSeRPa zoQB)T*X}n%fJfxzOVsigk7D2H;P)E`OX?UYqi!Ss4u8YAoPI<3KTR3FEo|XO>o}UG z(HIu72vV-77Sh0z{#FoPPwNsa({xzUv?K;U33&Buh{&E&OC_#|EPZL_4VMX1%X%XE zF|kBcKV#wI+PEsEmP&1;eTPz-izZ8rgn2U}3!r0T91;MgE=PZhbc*b%rHXiw67`7M zQ8Y;u1Ao$bAZ_b8vM845A~aC<=@G>VyCHub_xY&Ij^Z4qrI82qRXLWp>t z^a@)#Y(EK@E&_?BUs`GG$uQEg{vlgN=t3V}O*8g%9`z31YPGc2mlI-$6)Q5o%fkw_ zi1bsig6Ql~Ly4L`&BMi}_@kEk_N)$z`r}d5K!47o28`a9_`;Qk$Fs;{qUxIINJ~X7 zM2L~{kYY(3^QGmXZdpWwQ|KNk562#cE7-=km6E5(+fS8;hpQzA%k+$5HRm~*#C^Ub zeA42n8~{;oRh7p-KI*=tK90~w5dDb9u7a(SMbS_kd38~e1r%3cS$w3x)1bw;pdT9? zDSOZRk+OxRrGx)U(3w*OMEDmO-iTiclKKQ_BkJm+UmsuS>XjaV4c)}3r>wM&O^kBv`yzcJY7;$OBI%iN~=~rh-$5U Y0W_PSIQ@R-h5!Hn07*qoM6N<$g5FTLuK)l5 delta 805 zcmV+=1KRw@2kHipQhx^@6gm@P7OH~)00Q?(L_t(&-sM`+a)dAlY%=-(U$zh4Um1M{?3cjHTL8a-Ab4IB~|Lu?q91`Q$Fso%6}@x!(GeIwOq^R5n9?p zcj48N<_fnGS6DeE8b&tgieg4XPzE zGVa2a(%P}GxON0oE~Hf@HaQIDVWbXEq2Vp?r_oX)MsPEYh>8e#AeXoWx*-cfX~YfF zmSD%A#Zv>7>jamLZV7d_qY&X7rlnB?^{N~tE_tZR7ds)Lg;TaPK63>yO$eBxM{iSa z%PTGj&)nEHHJp+=yvsu_ALsq(g$rSeXtLY!Q*wz?c{uib zSn+Msj!hr#_VGw5ep~Tyg@>YCUqsZ~Noa?bqJL9&UohaKmOZbQQk~Puf3I44=*>&N zMXZNf1v~}Z`#7MRE_QTETHd%Seini9rIXX%IsrT)o>U$ha>H8eA@f#OAs-F=czala zUnN`6QJ14P)>4X)$YiS%jTDx-+SO{w?Z2BBaTkdfi?9{mN2&fG&BTbM#A?aibmIbq jiXPLCY2K;Wr&UYe2NsXZk5pAe00000NkvXXu0mjfQ{0H- diff --git a/radio/src/fonts/sqt5/font_04x06_extra.png b/radio/src/fonts/sqt5/font_04x06_extra.png deleted file mode 100644 index dd59c2e2baf81a726c751c2ab0a129c819ca0638..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 159 zcmeAS@N?(olHy`uVBq!ia0vp^azM<^$P6S^)$=z2DYgKg5LY1m|NsA`H|O64vN#Jo zB8wRqxP?KOkzv*x37{Z*iKnkC`&~9}Zc)avOYbHFg>*b!978y+C-3y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G` z2i*)677_|T$*J-H00UM@L_t(&-rZW;j_4o=w2lA&%btfOh5$1ly4~&ZsjXH)hO1s< zjMmz9U9Gj&+VlE+nO$Ry`Kp@y@p+cR)E7IzF4Ru6NtIph-hY`?&MTj1?-*llgk4)P zDMz9?_c!7`xP=dUiVgJaigfZ!wsMEtF-8x^Jv1qJBjO|*RuS@um6J=!yGp?^tf=ao zPb6E?tK`W|0GEdPS52snn3GP+lAs&diU6s8(WPq^b}By1C)zYbLtNXukfaavfp}Y%H};E}AnOJVfJ*Dvmly^rg^T)RAaD z1cHnf?T8QWXjiN#GKo0yF=2@I4!5zk>0Ir9npS{&fq)5$pDb=0Mho9SQT4z;4^A>Q`7N3ZwThEcGR9gHols zZV;OXFycxDgHtTYqo$gdx@%s3KSJWbORiqvxqmN}8u^Ka4gKBxAxR=~5ZqjaW$Nqy zC`7M8I=?+hfv6&;8-bxOa%43K!s&;tdpsD^s>?xbbe>@lLY{t0GvWEDQFeKva;e_w)Xp4 z;(s3Qtc_&J$c(bQmk*auK$i?hMZz^U3Jae#6JZ+s$(q)Z%D~#|+4X*|;z1-#4iaqQ z)yrgUx(anG3Ef1o2P2t^Lc@ozy`^vXg>^};>fzl4k|dI?v8$ldYl+jl{MaUOK$x*X;%ILoBdC0WvJWl P00000NkvXXu0mjfM(@Vq delta 909 zcmV;819JSy2dM{;Dt`a~0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G` z2i*w=3=tvZ88x#200TBjL_t(&-sM`!mc$?kj6VPWmz_hVeTJndG2OEyrzEZ@Pz73g z?}zo2QqH3DWqj&t=gV2=d=aJNkFKBxI^O)$bjwo8kam`QE`RO4kA={p3L)p3UZ0!N zmQrfE<#?ZGtoO=$H@9@i43=_7+TME!RoZCt(o8WGEbY<|rm^TH#v5RE+q~I;g}|jk zTI>RX-MF?DoeSj(dkbvXRHU;R~~-U~}1)V1P#&b7&kng$Yf2hx_aCJo8*SK6wT9q!MIsYzukRltZbS zL-~D%gcXk*Jt1@Ry1?q~u_z78I({Ih7^XN$?0=BN;b}NrmzIaz5b@t+U}k-uL>5-Kaq*K}>r0we%e<8M_bQtSWKbD6VFs2% z(%RBSo3Qzv&hJbB-~b@4#tc19)3UTxw-~sxpMouiLWc3MK5byO{ps=WZnX4PJY&hz z%6}Z{KiIU81z%#mTSf|R+3aULLXQm&ndYLFp4KMm5x0`?Da;Ywfb^hPr@Z_d99WN{XF zL>4nJa0`PlBg3pY5H=O_PcD{+@gZnssFwMh4egK978y+C-3+wP5JkR4e?n!ljZdfj4O0Q{4#chlq0K0zlZzt8 zRE7Ii&AEhlLzY)m|3c5Eg%azHUVmQ4uZXFP55e#N*MF>l5GG*5XUXBI!+(&AZ|tE= zT1pokkM*w)BsjG7oSP9Kg6toR)&)_5poCBn_t=C!i(C2}Q#Mivh@%Fn2sNkeG?9?X zWs`CHZ}K4#l)Az?IN}U>-W8Xpq_bL)vHg!aP$5X(p_}yqA6z&u(&=C_6}Z2;I`qVM zpt?=nu73vSFG)^xbwBNP&`e-6zxawZB$!F@)g;IfqWJo8iw~bB`0e>&=Yrg@V3I>1 zt5`rLK)^?Yt^sk@{S%p}P&t`H+n+#)9fy2st*6ZSfDxX++LHu`1JLmLaW32z{J0?s z&Wp=8P4a=bpxTtj^OtuFkyV?%e6h!Ox{4L0_wxJ?Ez66?DUDr*6>7f1-8oRf>RLM01P3$TJUHwpIAepidkjcy@(BmC+(Z`A z-nV4&6*{=^2g^E$T`1~RMK0`FP2+@H zVUbY}KWb@p!d!ds(8{EU!4N||1v9Vd^P6`cS8zL4m0udw<1v z!2LB-`i;*^J{4F%+mWvUtG@!T6T4HPv0hy|oP4dfAzL<{9M8>RkoDWKq1~N>ZOM;^ zA!uE6{Or4|@=JMyfdYXp-z?ns@m48d+mLiA+mopS=h4K~DeF8Ub1wz~cfmU6Ij{AR z`}$iGavmn3-W2Hzm(!#AiJDh=ihrC6NvW*+w1{HbKvr%{Ug`Ez5x;T_dpl%s+-h{5 zze##^@q3-wUld`J^}iLcHlkIr{Y)OyBt;Qb&y7vJiz(cv6ufEsFYScGC)_=LU0U0Q z?Ffk`Y$&=I6C~4qh-T4#F1##RC z{+_smyac=gT^9AL8nX4S*7$!Tk?qz0ctB-#qXMBAC0000< KMNUMnLSTZ1V!Dz5 delta 1325 zcmV+|1=9Mx3+@V#Qhx^@6gmTcp}OY)00jFU1qU?cbu{>E`wvTS-7&JVU}t$rBXYGjL$?y0e{q5Plh%Im;6Bfx7i|% zNL1!q?o3W+FrgVr8My<__4gloVbq_eXCL|ZUVeU3?{d-CdCP?PYOT$lkTw0<`Q%g} zn;KOR{E#3XZr=>)Y}Q-C1xs?UF#=c4HWF$yG{ZhL#PqI+0Dn@n1!rsQ#De89D?XY`pBWU@rV6Yb|7{i2z`1k?Q&v* z#1CA=#xdRYU(fi0!ooqqIj^E2*XoBQ7bP6o!uRR>*)5yS?3jE5cna=>3ks%i} zw?2Ww6MsWbBIZm5SQ-RctFBrfrn4dqj z)*XS#5MPhrHnu!V+pa>SIr{N+k@7~yfv})@d2Y{Np6CXKI(_t+=Tq499ZtA-0=1~s z`Xk6#dS>ch@mmrP=XROxgcq^$!-#g8<{k4F z{|Go}8mT3OkHbnr;$`$takADp;Mo~heccSjz1X<+@e6~c|Aiu!cEW!%3BVn!wm&g~ z$_QGp4sr7$v42LpykrX>tp`ks9M=!q&!CN@pnrvAK<+XeEFKrwMA8@H-w*}O310h? z2Y*{e1*fSl8i}U9p)kt~WFh@+TNW>WFLIcu0t3h}E6GnbBXhX%Fi1rxyavr+f1C-$ z#wpU)lgCa&4i?y6;0TP??iH;JA~WF|kM9}|L?EQv{AyD8aDWp}I9uW5KIrs3fOCcn z4t!!+2C*AuSd+?yJ=ri$xE2-=yBL;QYJZ*Z5Zl3zz56p>tv`s|=r0yD2Z~@}%6kv( zzt65cP?%9`@7FA_4p8_NIoOqNJd$3!GR=!Fhlr84~T-~$~_Re5Hi?d zWndsZTEl{uKqKpws{#wC9mqMa4Jb1K$I+%jef!X&a>}7S4S7Z5NqR`Q{%l_k4S$V& z6PuTQ-(!NZS5yR7Cv|?Xl!h9YtO90D;L#b%bOc@wU6Y=^VLx1!8MQ&v6 zq3x>-f`dsTr7!|}As_nv4^D>~cf_+&<=MCg> z>;CfQv%}$E|Ltzvj9#n&cm!v{v6XRLO;yr8ptc+synvb8pv9K)PJjwBZtR_``~5Xw zgcFwK7LL6*-#n8Co30L)yU!;IQ806#lR-%`K41s%{tY4GA`gEdZ`LxdbtVPr|BoJ3 j+Wnxk*&J?8h9dp}yy`bP_E@kd00000NkvXXu0mjfTuzJr diff --git a/radio/src/fonts/sqt5/font_10x14_compressed.lbm b/radio/src/fonts/sqt5/font_10x14_compressed.lbm index 4cb8fa302..c79ed1a95 100644 --- a/radio/src/fonts/sqt5/font_10x14_compressed.lbm +++ b/radio/src/fonts/sqt5/font_10x14_compressed.lbm @@ -1 +1 @@ -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x66,0x00,0x76,0x00,0x3e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x78,0x00,0x78,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0x00,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x7e,0x0e,0x7f,0x8e,0x7f,0x86,0x63,0x86,0x61,0xfe,0x61,0xfe,0x61,0xfc,0x60,0x00,0x00,0x00,0x00,0x06,0x60,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f,0x00,0x00,0x00,0x00,0xfe,0x00,0xfe,0x01,0xfe,0x01,0x80,0x01,0x80,0x01,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x00,0x00,0x00,0xfe,0x30,0xfe,0x71,0xfe,0x71,0x86,0x61,0x86,0x61,0x86,0x7f,0x86,0x7f,0x06,0x3f,0x00,0x00,0x00,0x00,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x8e,0x7f,0x8e,0x7f,0x0c,0x3f,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x86,0x7f,0xc6,0x7f,0xfe,0x7f,0x7e,0x00,0x3e,0x00,0x00,0x00,0x00,0x00,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f,0x00,0x00,0x00,0x00,0x7c,0x30,0xfe,0x71,0xfe,0x71,0x86,0x61,0x86,0x61,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f,0x00,0x00,0x00,0x00,0x78,0x1e,0x78,0x1e,0x78,0x1e,0x78,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0xfe,0x7f,0xfe,0x7f,0xfc,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0xfe,0x61,0xfe,0x7f,0xfc,0x7f,0x00,0x3f,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x06,0x60,0x0e,0x70,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x06,0x00,0x06,0x00,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x7f,0x86,0x7f,0x80,0x3f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x00,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x78,0x00,0x78,0x00,0x60,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x3f,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0xc0,0x03,0xe0,0x07,0xf0,0x0f,0x78,0x1e,0x3c,0x3c,0x1e,0x78,0x0e,0x70,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0xfc,0x7f,0xfe,0x7f,0xfe,0x7f,0x06,0x00,0xfe,0x01,0xfe,0x01,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0xfc,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x06,0x00,0x06,0x00,0x06,0x00,0x0e,0x00,0xfc,0x7f,0xf8,0x7f,0xf0,0x7f,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0xfe,0x01,0xfe,0x01,0xfc,0x00,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x66,0x06,0x6e,0x06,0x1c,0xfe,0x39,0xfe,0x73,0xfc,0x67,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0xfe,0x01,0xfe,0x7f,0xfc,0x7f,0x00,0x7f,0xfc,0x38,0xfe,0x79,0xfe,0x79,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x9e,0x7f,0x9e,0x7f,0x1c,0x3f,0x06,0x00,0x06,0x00,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0xfe,0x3f,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x3f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x70,0x00,0x38,0x00,0x1c,0x00,0x0e,0x00,0x07,0xfe,0x03,0xfe,0x01,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x70,0x00,0x3e,0x00,0x3e,0x00,0x70,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x1e,0x78,0x3e,0x7c,0x7e,0x7e,0xe0,0x07,0xc0,0x03,0xc0,0x03,0xe0,0x07,0x7e,0x7e,0x3e,0x7c,0x1e,0x78,0xfe,0x00,0xfe,0x01,0xfe,0x03,0x00,0x7f,0x00,0x7e,0x00,0x7e,0x00,0x7f,0xfe,0x03,0xfe,0x01,0xfe,0x00,0x06,0x78,0x06,0x7c,0x06,0x7e,0x06,0x67,0x86,0x63,0xc6,0x61,0xe6,0x60,0x7e,0x60,0x3e,0x60,0x1e,0x60,0x60,0x7e,0x60,0x7e,0x60,0x7e,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0x67,0xe0,0x67,0xe0,0x67,0x80,0x01,0x80,0x61,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x06,0x60,0x06,0x00,0x1e,0x00,0x1e,0x00,0xe0,0xcf,0xe0,0xcf,0xe0,0xcf,0x60,0xcc,0x60,0xcc,0x60,0xcc,0x60,0xcc,0xe0,0xff,0xe0,0xff,0xe0,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x00,0x00,0x00,0x00,0x60,0x60,0x60,0x60,0xe6,0x7f,0xe6,0x7f,0xe0,0x7f,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0xf0,0x00,0xf0,0x00,0xf0,0x00,0xc0,0x60,0xc0,0x60,0xc0,0xe6,0xff,0xe6,0xff,0xe0,0x7f,0x00,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x0f,0x80,0x1f,0xc0,0x39,0xe0,0x70,0x70,0x60,0x30,0x60,0x00,0x00,0x00,0x00,0x00,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0x00,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x00,0xe0,0x07,0xe0,0x07,0xe0,0x00,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0xe0,0x7f,0xe0,0x7f,0xc0,0x7f,0xc0,0x3f,0xe0,0x7f,0xe0,0x7f,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xe0,0x7f,0xe0,0x7f,0xc0,0x3f,0xe0,0xff,0xe0,0xff,0xe0,0xff,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0xe0,0x07,0xe0,0x07,0xe0,0x07,0xe0,0x07,0xe0,0x07,0xe0,0x07,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0xe0,0xff,0xe0,0xff,0xe0,0xff,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xc0,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0xe0,0x01,0xe0,0x01,0xe0,0x01,0xe0,0x67,0xe0,0x67,0xe0,0x67,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x7e,0x60,0x7e,0x60,0x7e,0x60,0x00,0x60,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x60,0x60,0x00,0x60,0x00,0x78,0x00,0x78,0x00,0x78,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x00,0x70,0x00,0x38,0x00,0x1c,0x00,0x0e,0x00,0x07,0xe0,0x03,0xe0,0x01,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x00,0x70,0x00,0x3c,0x00,0x3c,0x00,0x70,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x60,0xe0,0x70,0xe0,0x79,0xc0,0x3f,0x80,0x1f,0x80,0x1f,0xc0,0x3f,0xe0,0x79,0xe0,0x70,0x60,0x60,0xe0,0xcf,0xe0,0xcf,0xe0,0xcf,0x00,0xcc,0x00,0xcc,0x00,0xcc,0x00,0xcc,0xe0,0xff,0xe0,0xff,0xe0,0x7f,0x60,0x60,0x60,0x70,0x60,0x78,0x60,0x7c,0x60,0x7e,0x60,0x6f,0xe0,0x67,0xe0,0x63,0xe0,0x61,0xe0,0x60, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x66,0x00,0x76,0x00,0x3e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x78,0x00,0x78,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0x0c,0x7e,0x0e,0x7f,0x8e,0x7f,0x86,0x63,0x86,0x61,0xfe,0x61,0xfe,0x61,0xfc,0x60,0xff,0xff,0xff,0xff,0x06,0x60,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f,0xff,0xff,0xff,0xff,0xfe,0x00,0xfe,0x01,0xfe,0x01,0x80,0x01,0x80,0x01,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0xff,0xff,0xff,0xff,0xfe,0x30,0xfe,0x71,0xfe,0x71,0x86,0x61,0x86,0x61,0x86,0x7f,0x86,0x7f,0x06,0x3f,0xff,0xff,0xff,0xff,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x8e,0x7f,0x8e,0x7f,0x0c,0x3f,0xff,0xff,0xff,0xff,0x06,0x00,0x06,0x00,0x06,0x00,0x86,0x7f,0xc6,0x7f,0xfe,0x7f,0x7e,0x00,0x3e,0x00,0xff,0xff,0xff,0xff,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f,0xff,0xff,0xff,0xff,0x7c,0x30,0xfe,0x71,0xfe,0x71,0x86,0x61,0x86,0x61,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x78,0x1e,0x78,0x1e,0x78,0x1e,0x78,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0xfe,0x7f,0xfe,0x7f,0xfc,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0xfe,0x61,0xfe,0x7f,0xfc,0x7f,0x00,0x3f,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x06,0x60,0x0e,0x70,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x06,0x00,0x06,0x00,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x7f,0x86,0x7f,0x80,0x3f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x38,0x00,0x78,0x00,0x78,0x00,0x60,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x3f,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0xc0,0x03,0xe0,0x07,0xf0,0x0f,0x78,0x1e,0x3c,0x3c,0x1e,0x78,0x0e,0x70,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0xfc,0x7f,0xfe,0x7f,0xfe,0x7f,0x06,0x00,0xfe,0x01,0xfe,0x01,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0xfc,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x06,0x00,0x06,0x00,0x06,0x00,0x0e,0x00,0xfc,0x7f,0xf8,0x7f,0xf0,0x7f,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0xfe,0x01,0xfe,0x01,0xfc,0x00,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x66,0x06,0x6e,0x06,0x1c,0xfe,0x39,0xfe,0x73,0xfc,0x67,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0xfe,0x01,0xfe,0x7f,0xfc,0x7f,0x00,0x7f,0xfc,0x38,0xfe,0x79,0xfe,0x79,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x9e,0x7f,0x9e,0x7f,0x1c,0x3f,0x06,0x00,0x06,0x00,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0xfe,0x3f,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x3f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x70,0x00,0x38,0x00,0x1c,0x00,0x0e,0x00,0x07,0xfe,0x03,0xfe,0x01,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x70,0x00,0x3e,0x00,0x3e,0x00,0x70,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x1e,0x78,0x3e,0x7c,0x7e,0x7e,0xe0,0x07,0xc0,0x03,0xc0,0x03,0xe0,0x07,0x7e,0x7e,0x3e,0x7c,0x1e,0x78,0xfe,0x00,0xfe,0x01,0xfe,0x03,0x00,0x7f,0x00,0x7e,0x00,0x7e,0x00,0x7f,0xfe,0x03,0xfe,0x01,0xfe,0x00,0x06,0x78,0x06,0x7c,0x06,0x7e,0x06,0x67,0x86,0x63,0xc6,0x61,0xe6,0x60,0x7e,0x60,0x3e,0x60,0x1e,0x60,0x60,0x7e,0x60,0x7e,0x60,0x7e,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0x67,0xe0,0x67,0xe0,0x67,0x80,0x01,0x80,0x61,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x06,0x60,0x06,0x00,0x1e,0x00,0x1e,0x00,0xe0,0xcf,0xe0,0xcf,0xe0,0xcf,0x60,0xcc,0x60,0xcc,0x60,0xcc,0x60,0xcc,0xe0,0xff,0xe0,0xff,0xe0,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x60,0x60,0x60,0xe6,0x7f,0xe6,0x7f,0xe0,0x7f,0x00,0x60,0x00,0x60,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xf0,0x00,0xf0,0x00,0xf0,0x00,0xc0,0x60,0xc0,0x60,0xc0,0xe6,0xff,0xe6,0xff,0xe0,0x7f,0xff,0xff,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x0f,0x80,0x1f,0xc0,0x39,0xe0,0x70,0x70,0x60,0x30,0x60,0xff,0xff,0x00,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x00,0xe0,0x07,0xe0,0x07,0xe0,0x00,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0xe0,0x7f,0xe0,0x7f,0xc0,0x7f,0xc0,0x3f,0xe0,0x7f,0xe0,0x7f,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xe0,0x7f,0xe0,0x7f,0xc0,0x3f,0xe0,0xff,0xe0,0xff,0xe0,0xff,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0xe0,0x07,0xe0,0x07,0xe0,0x07,0xe0,0x07,0xe0,0x07,0xe0,0x07,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0xe0,0xff,0xe0,0xff,0xe0,0xff,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xc0,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0xe0,0x01,0xe0,0x01,0xe0,0x01,0xe0,0x67,0xe0,0x67,0xe0,0x67,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x7e,0x60,0x7e,0x60,0x7e,0x60,0x00,0x60,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x60,0x60,0x00,0x60,0x00,0x78,0x00,0x78,0x00,0x78,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x00,0x70,0x00,0x38,0x00,0x1c,0x00,0x0e,0x00,0x07,0xe0,0x03,0xe0,0x01,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x00,0x70,0x00,0x3c,0x00,0x3c,0x00,0x70,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x60,0xe0,0x70,0xe0,0x79,0xc0,0x3f,0x80,0x1f,0x80,0x1f,0xc0,0x3f,0xe0,0x79,0xe0,0x70,0x60,0x60,0xe0,0xcf,0xe0,0xcf,0xe0,0xcf,0x00,0xcc,0x00,0xcc,0x00,0xcc,0x00,0xcc,0xe0,0xff,0xe0,0xff,0xe0,0x7f,0x60,0x60,0x60,0x70,0x60,0x78,0x60,0x7c,0x60,0x7e,0x60,0x6f,0xe0,0x67,0xe0,0x63,0xe0,0x61,0xe0,0x60, diff --git a/radio/src/fonts/sqt5/font_10x14_compressed.png b/radio/src/fonts/sqt5/font_10x14_compressed.png index a8ff6a6f315b3b3f330036750d04ce46e23191a2..61d0f98e2630bddb4fd6f758444e310ed37529a0 100644 GIT binary patch delta 1082 zcmV-A1jYM>37`p(QV9$d7ZWIraI;{MTPJ@62uVaiRCwC$UE8khAP8)C*8l&q=jkL( z(<+w%(at3MWydQ5!l+$mYporLIM4Gqj^jw~R@^Vk<&-1xbe`)$5QNqroaYHCM?XYZ z@!Qn^uXrN<%dn?l`_y7M-b$jih$7hwFR?gObukA|8Smx~QH=@mZ8L9k{GS`3D zgfwZf%0xSV>ALmoFjD`ldgZZ0$-1HKA2G)YL64^|jozSxOV4AFlzGJZMe4*%8;e|Dss35)bB6w{tOEo=5Lx)`I4LPJf@n{} zydv0y-WX8h(=bcgptYA3T9_IQ^Co}ERMG84XUILKLo%0py|+3DoxZl;>+5Mfo{kY` zF@RQmk?33mTVBa0e>q@}IOVa(JEGpmrU`-pY5@cPiUZtv-6^|ql945&YhPR!f~e~k z2!a7BK@d}eQ)2(5_nsJN8F!0*S=-ADl%#!)*4lH*r>vl=aP$<%x2JL5#<+9ny)4;UmtAoTuA4D}Abh~^EB?)7`gl!T}t zb2^sy^^YL3{Q*+GisXX{hvo1R0$6Iu?U_ba3isD7g2)xUo#SN2eT$#S<^)84(EU)DlN+S+~dTWNz^b$rPA5${3jSLVB- zPqI9Qq~6yHag5FPAM)f79Fux4N&JGwdU+vENIn!D5)s~CU z5wu*Y%h{6AMlb=9zcN)JnRvUORpFbDmiDR!5Y_D$QOic*+q1}tC9HV3tYK|KH+FvTGmHI`?8##uE`AFKF(eJEr&6Z!L z9ihk9E2Ck>$b`)eVBY>_jA6CJXBEG-f}EuOpcfCI_4#bct2gVuskC2~%PB|XX75}N zf~aky(E*kwNcbktluAFFX8p$OO1_Z(G+&?p0h%w{Ol7I(djJ3c07*qoM6N<$f@~!> AfdBvi delta 1055 zcmV+)1mOFi355xeQV9ni6ge#aUDSP%TPJ@5?MXyIRCwC$UE7ZBAP7C3^#6ak=V_A0 z@xo=HXxB>SWk*pF5D+`p^E}T#f*=TjAP9m;g8RfpUDs9pz2}R+`;_e@^jd9t?S6kB z{bn6oIzJ0NE1xy{^`?iIzZQ~lBWRXwdVC+zYwd+(UA4Zoexv>N?ypqtwEL#fHKc$1 zS>?*3f0BJe>pfzP7JD6eo(~i?Sn>6cX{%fABors^WIHy*FiJ*seax$zJ zHLj$srVWzU5&IS?3oCUia(|_AXVJ?Q^0%`L5ClQY!hQ1Mq!|(fJ!#g$Gw$s9X|uVt zcAAJfGIK4BRMGTiM97wGN2^b3{Rn?qe$(%bRojp2y8f(bRR+*1FA|wUWFa%#;x9Yw z5w|?3vjb(5B5s`sI;cdD!g9|0@s0*|9AwNqU?Z~Q1VLcz0?!+Q4k|$qDV$T{{J^mc z473?{i+ow>%?wR}&*dxT(MG%>((ZOBIh#}U|vp3p|ujawx zEIH0lYpyxxJbIrsXe;eNOXh#PHw6;|G};GGJ34ZwI3mQ^Kpy}j2V|9;Mqh7^ z95l@}C9#KnMeLh2F!`Dt$!ZTY!4+a&&-3UrsGe8ZCpbN`B4BLqm%Wt_Ih2DX~^_|1nHdi_!Bjs>;ckO&nu)2 z$bO^ZmA@>ddMLYOsjYw3&@1WOvo=aX>-58Kg+P6Een-Yeq`sbHL6AG zMf87}$`DMn>a#L@^U*>ts{@f;e^GW%TkjjqW5oD1y^#DT!AyU?!Y(#S^F@Vdd(d(w ztqDe{1N`F=RCELx{Rm@~!A8IKm-1|{`M^!$2lG+8lb z!qz%4t-lp>*e&qc#cu7uC#gN?`2lEoz8>x#K@bE%EOAg*I9Spz!koxwM7<>4raAKb ZALq2I8A)6vt^f-F002ovPDHLkV1m#J2><{9 diff --git a/radio/src/fonts/sqt5/font_10x14_extra.lbm b/radio/src/fonts/sqt5/font_10x14_extra.lbm deleted file mode 100644 index c71947df1..000000000 --- a/radio/src/fonts/sqt5/font_10x14_extra.lbm +++ /dev/null @@ -1 +0,0 @@ -0x60,0x00,0x70,0x00,0x38,0x00,0x1c,0x00,0xce,0x7f,0xce,0x7f,0x1c,0x00,0x38,0x00,0x70,0x00,0x60,0x00,0x00,0x06,0x00,0x0e,0x00,0x1c,0x00,0x38,0xfe,0x73,0xfe,0x73,0x00,0x38,0x00,0x1c,0x00,0x0e,0x00,0x06,0x00,0x18,0x00,0x1c,0x00,0x0e,0x18,0x07,0x98,0x03,0xd8,0x01,0xd8,0x00,0x18,0x00,0xf8,0x03,0xf8,0x03,0x18,0x00,0x38,0x00,0x70,0x00,0xe0,0x18,0xc0,0x19,0x80,0x1b,0x00,0x1b,0x00,0x18,0xc0,0x1f,0xc0,0x1f,0xc0,0x1f,0xc0,0x1f,0x00,0x18,0x00,0x1b,0x80,0x1b,0xc0,0x19,0xe0,0x18,0x70,0x00,0x38,0x00,0x18,0x00,0xf8,0x03,0xf8,0x03,0x18,0x00,0xd8,0x00,0xd8,0x01,0x98,0x03,0x18,0x07,0x00,0x0e,0x00,0x1c,0x00,0x18, diff --git a/radio/src/fonts/sqt5/font_10x14_extra.png b/radio/src/fonts/sqt5/font_10x14_extra.png deleted file mode 100644 index 85ebfd0e19a3ae590fdac9bee7e45fb53fb3a9f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 229 zcmeAS@N?(olHy`uVBq!ia0vp^Hb5-E$P6S4V)|-;6kC8#h%1o(|NsBeoAd7iS)2tP zk;M!Q+`=Ht$S`Y;1W=H@#M9T6{Vp3fw+Men;is!Wp(0Ng#}JO|$v^lRc8#($xHO){_~%<(Sq}u>Yd~YrXxSnYg~T% zFdlwxoZdBm#eCz0A2oX(|Cj&$pNVI_Jomr+gg^HWeE8XH*iqQ<@N<8aiFe{T28I{w W6C^GAxAy^UXYh3Ob6Mw<&;$VafmR{_ diff --git a/radio/src/fonts/sqt5/font_cz_04x06.lbm b/radio/src/fonts/sqt5/font_cz_04x06.lbm index 15c586b31..fa9c3a08a 100644 --- a/radio/src/fonts/sqt5/font_cz_04x06.lbm +++ b/radio/src/fonts/sqt5/font_cz_04x06.lbm @@ -1 +1 @@ -0x3a,0x2a,0x2a,0x3e,0x01,0x3e,0x23,0x22,0x23,0x00,0x3e,0x2a,0x2a,0x2e,0x01,0x3e,0x2b,0x2a,0x2f,0x00,0x00,0x24,0x3c,0x22,0x01,0x1c,0x22,0x22,0x1d,0x00,0x3e,0x03,0x02,0x05,0x00,0x2e,0x2b,0x2a,0x3b,0x00,0x3e,0x20,0x20,0x3e,0x01,0x3c,0x23,0x23,0x3c,0x00,0x2e,0x28,0x28,0x3e,0x01,0x3c,0x12,0x12,0x3d,0x00,0x00,0x22,0x3e,0x22,0x01,0x3e,0x13,0x1e,0x31,0x00,0x00,0x0e,0x30,0x0e,0x01,0x22,0x33,0x2a,0x27,0x00,0x3e,0x2a,0x2a,0x22,0x01, +0x3a,0x2a,0x2a,0x3e,0x01,0x3e,0x23,0x22,0x23,0x7f,0x3e,0x2a,0x2a,0x2e,0x01,0x3e,0x2b,0x2a,0x2f,0x7f,0x24,0x3c,0x22,0x01,0x7f,0x1c,0x22,0x22,0x1d,0x7f,0x3e,0x03,0x02,0x05,0x7f,0x2e,0x2b,0x2a,0x3b,0x7f,0x3e,0x20,0x20,0x3e,0x01,0x3c,0x23,0x23,0x3c,0x7f,0x2e,0x28,0x28,0x3e,0x01,0x3c,0x12,0x12,0x3d,0x7f,0x22,0x3e,0x22,0x01,0x7f,0x3e,0x13,0x1e,0x31,0x7f,0x0e,0x30,0x0e,0x01,0x7f,0x22,0x33,0x2a,0x27,0x7f,0x3e,0x2a,0x2a,0x22,0x01, diff --git a/radio/src/fonts/sqt5/font_cz_04x06.png b/radio/src/fonts/sqt5/font_cz_04x06.png index 1f1bc61063f2778a1a2ae6bdf9b521b4e412157e..6e72a100ed8d120beb35a64afc2aeb5f66e79aac 100644 GIT binary patch delta 131 zcmV-}0DS+~0owtPUwjM|79j?`6oBaf003J_L_t&t*JJo<>sK`8%ieRrQ$8?oF!6dg zN9Fv0);002ovPDHLkV1fs@Illk^ delta 127 zcmV-_0D%A70oMVLUw8)^6(b|*)2T850037>L_t&t*JJov8(+5d%isIqS3fXtILVz! z%(-pRw~&M3^{ty**JnrFUAMP_f%}l`)`!_nch~KfV937rckAEmD%tk(3ZQz4vky6( hZfsBFVE7LQKLAvZF7`a*sS5xA002ovPDHLkV1mI0KE(h4 diff --git a/radio/src/fonts/sqt5/font_cz_05x07.lbm b/radio/src/fonts/sqt5/font_cz_05x07.lbm index 0b4cd2838..8095c78b8 100644 --- a/radio/src/fonts/sqt5/font_cz_05x07.lbm +++ b/radio/src/fonts/sqt5/font_cz_05x07.lbm @@ -1 +1 @@ -0x74,0x54,0x56,0x55,0x7c,0x7c,0x45,0x46,0x46,0x45,0x7c,0x54,0x56,0x55,0x5c,0x7c,0x55,0x56,0x56,0x5d,0x00,0x44,0x7e,0x41,0x00,0x38,0x44,0x46,0x45,0x38,0x7c,0x05,0x06,0x06,0x0d,0x5c,0x55,0x56,0x56,0x75,0x7c,0x40,0x42,0x41,0x7c,0x7c,0x40,0x43,0x43,0x7c,0x5c,0x50,0x52,0x51,0x7c,0x78,0x14,0x16,0x15,0x78,0x00,0x44,0x7e,0x45,0x00,0x7c,0x15,0x16,0x1e,0x71,0x1c,0x10,0x72,0x11,0x1c,0x44,0x65,0x56,0x4e,0x45,0x7c,0x54,0x56,0x55,0x44,0x3c,0x3c,0x24,0x42,0xff,0x24,0x18,0x81,0x42,0x3c, +0x74,0x54,0x56,0x55,0x7c,0x7c,0x45,0x46,0x46,0x45,0x7c,0x54,0x56,0x55,0x5c,0x7c,0x55,0x56,0x56,0x5d,0x44,0x7e,0x41,0xff,0xff,0x38,0x44,0x46,0x45,0x38,0x7c,0x05,0x06,0x06,0x0d,0x5c,0x55,0x56,0x56,0x75,0x7c,0x40,0x42,0x41,0x7c,0x7c,0x40,0x43,0x43,0x7c,0x5c,0x50,0x52,0x51,0x7c,0x78,0x14,0x16,0x15,0x78,0x44,0x7e,0x45,0xff,0xff,0x7c,0x15,0x16,0x1e,0x71,0x1c,0x10,0x72,0x11,0x1c,0x44,0x65,0x56,0x4e,0x45,0x7c,0x54,0x56,0x55,0x44,0x1c,0x1c,0x3e,0x7f,0xff,0x22,0x1c,0x41,0x3e,0x00, diff --git a/radio/src/fonts/sqt5/font_cz_05x07.png b/radio/src/fonts/sqt5/font_cz_05x07.png index c9c7443e8eea3236fe49d5231f8770512fdbfd2a..f80f828490c9e7804b270fbbb76fd5695f51a66f 100644 GIT binary patch delta 290 zcmV+-0p0$D0=)u|B!32COGiWi000000Qp0^e*gdg32;bRa{vGf6951U69E94oEQKA z00(qQO+^RY3>6jw2>l-G&Hw-a%1J~)R7l6YRm%m|*O* zh=7=L5)lyrSiW`QT>uM{f@5Z;;-%Vk!3*Dw*=1(w2XB9~QGcdHF7=M8$egCe>YgyO z@1EklF^ik*deCmwNOjfY?&YcOu7oktC>5Y} zDj6bxZbs_5yt^C=-VLlchGB1bm;1wRY!yyAx#9we2e9>Ja(|@ho~crA)o?wz-R#7= oZtv?i>(K02`5TYj)wP}R0R!e$?eS2dQ~&?~07*qoM6N<$f@Lp*>;M1& delta 232 zcmV=K~zYI-Bn2rz#s^mN&Nqp?V%|l zKoPX3a?&^p3M%KE005A@$9_;>&B049NdTc#%V;C#81HF5%kF9p{!sa=oGXBK2!B4| zmvXvhB~zoE7zy6M_VzN814i2RGQ9^yu<yw(zRW)gf3g?iM{v@T@5%cB0000(mPjhG$UbuywTmeL1&C~02h=5G ztVEIkw>+NyC4EGd+p$Vkkr+Hm|NVo!MeFfs@rsx}&{OZMZhZ-# zze?GJ07~669gE>1(507*qoM6N<$g4?x9YXATM diff --git a/radio/src/fonts/sqt5/font_cz_10x14.lbm b/radio/src/fonts/sqt5/font_cz_10x14.lbm index 89321208d..2725dc369 100644 --- a/radio/src/fonts/sqt5/font_cz_10x14.lbm +++ b/radio/src/fonts/sqt5/font_cz_10x14.lbm @@ -1 +1 @@ -0x60,0x7e,0x60,0x7e,0x60,0x7e,0x60,0x66,0x68,0x66,0x6c,0x66,0x67,0x66,0xe3,0x7f,0xe1,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x67,0x60,0x6f,0x60,0x6c,0x60,0x66,0x60,0x63,0x60,0x61,0x60,0x60,0x60,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x66,0x68,0x66,0x6c,0x66,0x67,0x66,0xe3,0x67,0xe1,0x67,0xe0,0x67,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x67,0x66,0x6f,0x66,0x6c,0x66,0x66,0x66,0xe3,0x67,0xe1,0x67,0xe0,0x67,0x00,0x00,0x00,0x00,0x60,0x60,0x60,0x60,0xe8,0x7f,0xec,0x7f,0xe7,0x7f,0x03,0x60,0x01,0x60,0x00,0x00,0xc0,0x3f,0xe0,0x7f,0xe0,0x7f,0x60,0x60,0x68,0x60,0x6c,0x60,0x67,0x60,0xe3,0x7f,0xe1,0x7f,0xc0,0x3f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xc7,0x00,0x6f,0x00,0x6c,0x00,0x66,0x00,0xe3,0x01,0xe1,0x01,0xe0,0x01,0xe0,0x67,0xe0,0x67,0xe0,0x67,0x67,0x66,0x6f,0x66,0x6c,0x66,0x66,0x66,0x63,0x7e,0x61,0x7e,0x60,0x7e,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x00,0x60,0x08,0x60,0x0c,0x60,0x07,0x60,0xe3,0x7f,0xe1,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x06,0x60,0x09,0x60,0x09,0x60,0x0f,0x60,0xe6,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0xcf,0xe0,0xcf,0xe0,0xcf,0x00,0xcc,0x08,0xcc,0x0c,0xcc,0x07,0xcc,0xe3,0xff,0xe1,0xff,0xe0,0x7f,0xf0,0x7f,0xf8,0x7f,0xf8,0x7f,0x18,0x06,0x18,0x06,0x18,0x06,0x1c,0x06,0xff,0x7f,0xfb,0x7f,0xf1,0x7f,0x00,0x00,0x18,0x60,0x18,0x60,0xf8,0x7f,0xfc,0x7f,0xff,0x7f,0x1b,0x60,0x19,0x60,0x00,0x00,0x00,0x00,0xf8,0x7f,0xf8,0x7f,0xf8,0x7f,0x1f,0x06,0x1f,0x06,0x1c,0x06,0xfe,0x07,0xfb,0x7f,0xf1,0x7f,0x00,0x7c,0xf8,0x01,0xf8,0x03,0xf8,0x07,0x00,0x7e,0x00,0x7c,0x04,0x7c,0x07,0x7e,0xfb,0x07,0xf9,0x03,0xf8,0x01,0x18,0x70,0x18,0x78,0x18,0x7c,0x17,0x6e,0x0f,0x67,0x8c,0x63,0xd6,0x61,0xfb,0x60,0x79,0x60,0x38,0x60,0xf8,0x7f,0xf8,0x7f,0xf8,0x7f,0x18,0x63,0x1c,0x63,0x1f,0x63,0x1b,0x63,0x19,0x63,0x18,0x60,0x18,0x60, +0x60,0x7e,0x60,0x7e,0x60,0x7e,0x60,0x66,0x68,0x66,0x6c,0x66,0x67,0x66,0xe3,0x7f,0xe1,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x67,0x60,0x6f,0x60,0x6c,0x60,0x66,0x60,0x63,0x60,0x61,0x60,0x60,0x60,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x66,0x68,0x66,0x6c,0x66,0x67,0x66,0xe3,0x67,0xe1,0x67,0xe0,0x67,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x67,0x66,0x6f,0x66,0x6c,0x66,0x66,0x66,0xe3,0x67,0xe1,0x67,0xe0,0x67,0x60,0x60,0x60,0x60,0xe8,0x7f,0xec,0x7f,0xe7,0x7f,0x03,0x60,0x01,0x60,0xff,0xff,0xff,0xff,0xff,0xff,0xc0,0x3f,0xe0,0x7f,0xe0,0x7f,0x60,0x60,0x68,0x60,0x6c,0x60,0x67,0x60,0xe3,0x7f,0xe1,0x7f,0xc0,0x3f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xc7,0x00,0x6f,0x00,0x6c,0x00,0x66,0x00,0xe3,0x01,0xe1,0x01,0xe0,0x01,0xe0,0x67,0xe0,0x67,0xe0,0x67,0x67,0x66,0x6f,0x66,0x6c,0x66,0x66,0x66,0x63,0x7e,0x61,0x7e,0x60,0x7e,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x00,0x60,0x08,0x60,0x0c,0x60,0x07,0x60,0xe3,0x7f,0xe1,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x06,0x60,0x09,0x60,0x09,0x60,0x0f,0x60,0xe6,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0xcf,0xe0,0xcf,0xe0,0xcf,0x00,0xcc,0x08,0xcc,0x0c,0xcc,0x07,0xcc,0xe3,0xff,0xe1,0xff,0xe0,0x7f,0xf0,0x7f,0xf8,0x7f,0xf8,0x7f,0x18,0x06,0x18,0x06,0x18,0x06,0x1c,0x06,0xff,0x7f,0xfb,0x7f,0xf1,0x7f,0x18,0x60,0x18,0x60,0xf8,0x7f,0xfc,0x7f,0xff,0x7f,0x1b,0x60,0x19,0x60,0xff,0xff,0xff,0xff,0xff,0xff,0xf8,0x7f,0xf8,0x7f,0xf8,0x7f,0x1f,0x06,0x1f,0x06,0x1c,0x06,0xfe,0x07,0xfb,0x7f,0xf1,0x7f,0x00,0x7c,0xf8,0x01,0xf8,0x03,0xf8,0x07,0x00,0x7e,0x00,0x7c,0x04,0x7c,0x07,0x7e,0xfb,0x07,0xf9,0x03,0xf8,0x01,0x18,0x70,0x18,0x78,0x18,0x7c,0x17,0x6e,0x0f,0x67,0x8c,0x63,0xd6,0x61,0xfb,0x60,0x79,0x60,0x38,0x60,0xf8,0x7f,0xf8,0x7f,0xf8,0x7f,0x18,0x63,0x1c,0x63,0x1f,0x63,0x1b,0x63,0x19,0x63,0x18,0x60,0x18,0x60, diff --git a/radio/src/fonts/sqt5/font_cz_10x14.png b/radio/src/fonts/sqt5/font_cz_10x14.png index e71755dbc54f70fe11a604eaf15642014b91a3ec..c3afe73b91b6278307c40fb192411a40048b8321 100644 GIT binary patch delta 273 zcmV+s0q*|b0_OsdUw;f07Zo+QEO0ey1>i@sZjeyAEmjFf zfNqgiaZATBxB@G!FjRCiP2I?F*;i5K#ck)P~@U z&-C!d8=f#6MH~`}k`!}eJ#)xDly7|S+50c`_#iOwmyFB`%;;+zQ2X}$dVC?eN#6lQ Xr=YI`4~*Ra015yANkvXXu0mjfeF=h% delta 266 zcmV+l0rmdp0^kCWUw;Q56#)^kXilI2007`gL_t&-(_POoj>0ey1<+6BW+jwv3zS@e zy#U^FJFY;-6|&N5Z7Mn_sHk$4*~(?EU?~?MN@I%=VT?jH!i8t%N&fPHzbkiUlW))b zV_XPP#z5ex>l62@^@*>#jxmjq5QC}q@%CHn<5gE(m&T6JaeuGt;WDe4r4RoFpr0Ow zrOYoeoIjrdx!U=%aaj`z8aUOFTj85(ec3we&B)C^?w4BKZetFcs z6sM(733Qxjx67uht120pLOLxALQ9v>J^SPQLwM}`A0tI20r3HlUw;f07Zw{&*CsOn0041GL_t&t*JJn(1wR<(rO$j;IWK*V1;hX6 z^Z!-;e?CKkp`rc<`+qt6j~xsQ_8*vmtj{MHI20r3HlUw;T26%h)2{gs;l0041GL_t&t*JJn(1%DXkrO$j;IWK*V4a5KE z^Z!-;e?CKop`rc<`+qt6k39?w_8*vmtj}i{bP0l+XkK)8!S8 delta 67 zcmbQuIGb@oybXu62%GNRZRY|R7#O5IT^vI=t|v#lK2Y$Qq4^JETMskOO+JM${}~wk Xwb+-4WZYr{Dr4|;^>bP0l+XkK0EQN7 diff --git a/radio/src/fonts/sqt5/font_fr_04x06.lbm b/radio/src/fonts/sqt5/font_fr_04x06.lbm index 0009fbcec..fee7097c0 100644 --- a/radio/src/fonts/sqt5/font_fr_04x06.lbm +++ b/radio/src/fonts/sqt5/font_fr_04x06.lbm @@ -1 +1 @@ -0x3e,0x2a,0x2b,0x2e,0x00,0x3e,0x2b,0x2a,0x2e,0x00,0x3a,0x2b,0x2a,0x3e,0x00,0x00,0x26,0x3d,0x22,0x00,0x1e,0x52,0x32,0x12,0x00, +0x3e,0x2a,0x2b,0x2e,0x7f,0x3e,0x2b,0x2a,0x2e,0x7f,0x3a,0x2b,0x2a,0x3e,0x7f,0x26,0x3d,0x22,0x7f,0x7f,0x1e,0x52,0x32,0x12,0x7f, diff --git a/radio/src/fonts/sqt5/font_fr_04x06.png b/radio/src/fonts/sqt5/font_fr_04x06.png index 3b5db5110cd19e96fc549a70b482259b925efec4..f165ffab0ddfb6c53510ade021df9c8d015589fd 100644 GIT binary patch delta 93 zcmew){aJd$Jl;?qQ88tiA_r+f1_lNbPZ!4!j_b(@DJcxjEC(5uH0tm)sIW{+Ygy6a xnRxkdhst4&aQSvxCp49!PC{xWt~$(698o^9nAm$ delta 92 zcmV-i0Hgo&8}b{lo()t88x#r=UTpo^0000pNkl|4KaOMo-slGlWX8>vxZMsYV0000&X?r@9l4VcyIeZHa50n%sf0ttM54K oCzopr0Q^ZFJpcdz delta 86 zcmV-c0IC110j>d%Urz`d6c{R(lVmLb001sYL_t&t*JF75et!eQz3=f23=E7P7#NE8 snuA!|8yKqZZeReiWE&X%|Nq?p08TLv|2D#FxBvhE07*qoM6N<$f<{;%TL1t6 diff --git a/radio/src/fonts/sqt5/font_fr_08x10.lbm b/radio/src/fonts/sqt5/font_fr_08x10.lbm index 62285c702..209e1b597 100644 --- a/radio/src/fonts/sqt5/font_fr_08x10.lbm +++ b/radio/src/fonts/sqt5/font_fr_08x10.lbm @@ -1 +1 @@ -0xf0,0x07,0xf0,0x07,0x94,0x04,0x96,0x04,0x93,0x04,0xf1,0x04,0xf0,0x04,0x00,0x00,0xf0,0x07,0xf0,0x07,0x91,0x04,0x93,0x04,0x96,0x04,0xf4,0x04,0xf0,0x04,0x00,0x00,0x90,0x07,0x90,0x07,0x91,0x04,0x93,0x04,0x96,0x04,0xf4,0x07,0xf0,0x07,0x00,0x00,0x14,0x04,0x16,0x04,0xf3,0x07,0xf6,0x07,0x04,0x04,0x00,0x04,0x00,0x00,0xf0,0x03,0xf0,0x03,0x10,0x0a,0x10,0x0e,0x10,0x06,0x10,0x02,0x10,0x02,0x00,0x00,0x00,0x00, +0xf0,0x07,0xf0,0x07,0x94,0x04,0x96,0x04,0x93,0x04,0xf1,0x04,0xf0,0x04,0xff,0x0f,0xf0,0x07,0xf0,0x07,0x91,0x04,0x93,0x04,0x96,0x04,0xf4,0x04,0xf0,0x04,0xff,0x0f,0x90,0x07,0x90,0x07,0x91,0x04,0x93,0x04,0x96,0x04,0xf4,0x07,0xf0,0x07,0xff,0x0f,0x14,0x04,0x16,0x04,0xf3,0x07,0xf6,0x07,0x04,0x04,0x00,0x04,0xff,0x0f,0xff,0x0f,0xf0,0x03,0xf0,0x03,0x10,0x0a,0x10,0x0e,0x10,0x06,0x10,0x02,0x10,0x02,0xff,0x0f, diff --git a/radio/src/fonts/sqt5/font_fr_08x10.png b/radio/src/fonts/sqt5/font_fr_08x10.png index 59ed95c85a539d76738a13cad90da8b167f70ad2..bc7cf4db503085c53882c8bfe94882e33f6ddee5 100644 GIT binary patch delta 121 zcmV-<0EYjK9FH8Zo(*vf6&5-fnJPwx0000`NklJ}M6T bGDn9S_Fw?+6u{@Y00000NkvXXu0mjfP_Ht( delta 119 zcmV--0EqvO9E}{Xo(*pZ8x%Gd#QY%;0000^Nkl(X_`KG^`|F#Xi}WB7Q$ ZZ3{Xz0XD_{Kji=b002ovPDHLkV1hcoE^+_> diff --git a/radio/src/fonts/sqt5/font_fr_10x14.lbm b/radio/src/fonts/sqt5/font_fr_10x14.lbm index 94843b6e9..f81c184c2 100644 --- a/radio/src/fonts/sqt5/font_fr_10x14.lbm +++ b/radio/src/fonts/sqt5/font_fr_10x14.lbm @@ -1 +1 @@ -0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x68,0x66,0x6c,0x66,0x66,0x66,0x62,0x66,0xe0,0x67,0xe0,0x67,0xe0,0x67,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x62,0x66,0x66,0x66,0x6c,0x66,0x68,0x66,0xe0,0x67,0xe0,0x67,0xe0,0x67,0x60,0x7e,0x60,0x7e,0x60,0x7e,0x62,0x66,0x66,0x66,0x6c,0x66,0x68,0x66,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x00,0x00,0x00,0x00,0x6c,0x60,0x6c,0x60,0xe3,0x7f,0xe3,0x7f,0xec,0x7f,0x0c,0x60,0x00,0x60,0x00,0x00,0xf0,0x3f,0xf0,0x3f,0xf0,0xbf,0x30,0xf0,0x30,0x70,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, +0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x68,0x66,0x6c,0x66,0x66,0x66,0x62,0x66,0xe0,0x67,0xe0,0x67,0xe0,0x67,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x62,0x66,0x66,0x66,0x6c,0x66,0x68,0x66,0xe0,0x67,0xe0,0x67,0xe0,0x67,0x60,0x7e,0x60,0x7e,0x60,0x7e,0x62,0x66,0x66,0x66,0x6c,0x66,0x68,0x66,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x6c,0x60,0x6c,0x60,0xe3,0x7f,0xe3,0x7f,0xec,0x7f,0x0c,0x60,0x00,0x60,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0x3f,0xf0,0x3f,0xf0,0xbf,0x30,0xf0,0x30,0x70,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, diff --git a/radio/src/fonts/sqt5/font_fr_10x14.png b/radio/src/fonts/sqt5/font_fr_10x14.png index 16fd4788b6684b530a6afdef00e89079efbab990..a111baa33355b546bcaf878f9d9d5c95479c2a10 100644 GIT binary patch delta 110 zcmV-!0FnR70mcE4UuO&z7Z)Js$Np9T002fwL_t&t*JJn(1Q!1fF#P=auO38y{`24F z1dx9IuYL}Q2Fd?mfB*>?Eq{PPj=ldeG7SXG$h7?NkB{Lr0~&Y^HTV1h0HN(NQoflK QI{*Lx07*qoM6N<$f*|NFMF0Q* delta 114 zcmV-&0FD2~0m=c8Uuy^(6&eJ1v0+yL002r!L_t&t*JJn(1n2)BVEFm-Up&Z8&8yep;9L{EE%VTfLVQ1rGZ~M>A Y;3mOVviRULJD@@aPgg&ebxsLQ0JL}%i2wiq diff --git a/radio/src/fonts/sqt5/font_it_08x10.lbm b/radio/src/fonts/sqt5/font_it_08x10.lbm index e219884ac..d54356222 100644 --- a/radio/src/fonts/sqt5/font_it_08x10.lbm +++ b/radio/src/fonts/sqt5/font_it_08x10.lbm @@ -1 +1 @@ -0x90,0x07,0x90,0x07,0x92,0x04,0x96,0x04,0x94,0x04,0xf0,0x07,0xf0,0x07,0x00,0x00,0xf0,0x07,0xf0,0x07,0x02,0x04,0x06,0x04,0x04,0x04,0xf0,0x07,0xf0,0x07,0x00,0x00, +0x90,0x07,0x90,0x07,0x92,0x04,0x96,0x04,0x94,0x04,0xf0,0x07,0xf0,0x07,0xff,0x0f,0xf0,0x07,0xf0,0x07,0x02,0x04,0x06,0x04,0x04,0x04,0xf0,0x07,0xf0,0x07,0xff,0x0f, diff --git a/radio/src/fonts/sqt5/font_it_08x10.png b/radio/src/fonts/sqt5/font_it_08x10.png index 0f402499fc2af1e52d1d0c7f62412d0f42fac5cf..3329886b7ebe56d50e7cdfcc653558534d1b97b8 100644 GIT binary patch delta 74 zcmZ3)xQKB=yfcren6>Gqm(nT>3=B%1E{-7_*OPyI?|*p5vMv3*L<0{Scbj|yOG-q8 epunHs>&ZX<&wu!*vhDeK$p#)b@3#2~EGZF9 eg38JPG7K_zc~yUJoE!~Q&EVI}N)5S4_<9hOs{pZyyFHM$xb8_=GQ-cBv>#7s6VHM||9yoB|!!NVh4;j-W zMGxbP0l+XkK Ds83T; delta 149 zcmV;G0BZmH0mA{1Hh*|YL_t&t*JJo!Z})xkn=0<_d+*n7VEFfc@B8}O3x2m5GFV<< zU|^hZgn@b9kDcefw>)6@eAnFa?+ZEMo#)T_CNMA`+-@O#d*1Jz7x$h`U?{%7-TL}& zAn#uFkp~PM%;GK#%n1@!iXc;-|NIXG_UD1b-wgnZzCF`{rw$XC00000NkvXXu0mjf Dx=2hc diff --git a/radio/src/fonts/sqt5/font_pl_08x10.lbm b/radio/src/fonts/sqt5/font_pl_08x10.lbm index 56b4f2a54..71a638ead 100644 --- a/radio/src/fonts/sqt5/font_pl_08x10.lbm +++ b/radio/src/fonts/sqt5/font_pl_08x10.lbm @@ -1 +1 @@ -0x90,0x07,0x90,0x07,0x90,0x04,0x90,0x04,0x90,0x04,0xf0,0x0f,0xf0,0x0b,0x00,0x00,0xf0,0x07,0xf0,0x07,0x10,0x04,0x14,0x04,0x13,0x04,0x11,0x04,0x10,0x04,0x00,0x00,0xf0,0x07,0xf0,0x07,0x90,0x04,0x90,0x04,0x90,0x04,0xf0,0x0c,0xf0,0x08,0x00,0x00,0x40,0x04,0x42,0x04,0xfe,0x07,0xfe,0x07,0x20,0x04,0x20,0x04,0x00,0x00,0x00,0x00,0xf0,0x07,0xf0,0x07,0x10,0x00,0x14,0x00,0x13,0x00,0xf1,0x07,0xe0,0x07,0x00,0x00,0xe0,0x03,0xf0,0x07,0x10,0x04,0x14,0x04,0x13,0x04,0xf1,0x07,0xe0,0x03,0x00,0x00,0xf0,0x04,0xf0,0x04,0x90,0x04,0x94,0x04,0x93,0x04,0x91,0x07,0x90,0x07,0x00,0x00,0x10,0x04,0x10,0x06,0x16,0x07,0x96,0x05,0xd0,0x04,0x70,0x04,0x30,0x04,0x00,0x00,0x10,0x04,0x10,0x06,0x10,0x07,0x94,0x05,0xd3,0x04,0x71,0x04,0x30,0x04,0x00,0x00,0xfc,0x07,0xfe,0x07,0x86,0x00,0x86,0x00,0x86,0x00,0x86,0x00,0xfe,0x0f,0xfc,0x0b,0xf8,0x03,0xfc,0x07,0x04,0x04,0x04,0x04,0x06,0x04,0x05,0x04,0x04,0x04,0x00,0x00,0x00,0x00,0xfe,0x07,0xfe,0x07,0x22,0x04,0x22,0x04,0x22,0x04,0x22,0x0c,0x02,0x08,0x80,0x00,0xfe,0x07,0xfe,0x07,0x40,0x04,0x40,0x04,0x20,0x04,0x20,0x04,0x00,0x04,0xfc,0x07,0xfc,0x07,0x04,0x00,0x04,0x00,0x07,0x00,0x0d,0x00,0xf8,0x07,0xf0,0x07,0xf8,0x03,0xfc,0x07,0x04,0x04,0x04,0x04,0x04,0x04,0x07,0x04,0xfd,0x07,0xf8,0x03,0x30,0x02,0x78,0x06,0x48,0x04,0x4c,0x04,0x4b,0x04,0x49,0x04,0xd8,0x07,0x90,0x03,0x04,0x06,0x04,0x07,0x84,0x05,0xc7,0x04,0x67,0x04,0x34,0x04,0x1c,0x04,0x0c,0x04,0x04,0x06,0x04,0x07,0x84,0x05,0xc4,0x04,0x64,0x04,0x37,0x04,0x1d,0x04,0x0c,0x04, +0x90,0x07,0x90,0x07,0x90,0x04,0x90,0x04,0x90,0x04,0xf0,0x0f,0xf0,0x0b,0xff,0x0f,0xf0,0x07,0xf0,0x07,0x10,0x04,0x14,0x04,0x13,0x04,0x11,0x04,0x10,0x04,0xff,0x0f,0xf0,0x07,0xf0,0x07,0x90,0x04,0x90,0x04,0x90,0x04,0xf0,0x0c,0xf0,0x08,0xff,0x0f,0x40,0x04,0x42,0x04,0xfe,0x07,0xfe,0x07,0x20,0x04,0x20,0x04,0xff,0x0f,0xff,0x0f,0xf0,0x07,0xf0,0x07,0x10,0x00,0x14,0x00,0x13,0x00,0xf1,0x07,0xe0,0x07,0xff,0x0f,0xe0,0x03,0xf0,0x07,0x10,0x04,0x14,0x04,0x13,0x04,0xf1,0x07,0xe0,0x03,0xff,0x0f,0xf0,0x04,0xf0,0x04,0x90,0x04,0x94,0x04,0x93,0x04,0x91,0x07,0x90,0x07,0xff,0x0f,0x10,0x04,0x10,0x06,0x16,0x07,0x96,0x05,0xd0,0x04,0x70,0x04,0x30,0x04,0xff,0x0f,0x10,0x04,0x10,0x06,0x10,0x07,0x94,0x05,0xd3,0x04,0x71,0x04,0x30,0x04,0xff,0x0f,0xfc,0x07,0xfe,0x07,0x86,0x00,0x86,0x00,0x86,0x00,0x86,0x00,0xfe,0x0f,0xfc,0x0b,0xf8,0x03,0xfc,0x07,0x04,0x04,0x04,0x04,0x06,0x04,0x05,0x04,0x04,0x04,0xff,0x0f,0x00,0x00,0xfe,0x07,0xfe,0x07,0x22,0x04,0x22,0x04,0x22,0x04,0x22,0x0c,0x02,0x08,0x80,0x00,0xfe,0x07,0xfe,0x07,0x40,0x04,0x40,0x04,0x20,0x04,0x20,0x04,0x00,0x04,0xfc,0x07,0xfc,0x07,0x04,0x00,0x04,0x00,0x07,0x00,0x0d,0x00,0xf8,0x07,0xf0,0x07,0xf8,0x03,0xfc,0x07,0x04,0x04,0x04,0x04,0x04,0x04,0x07,0x04,0xfd,0x07,0xf8,0x03,0x30,0x02,0x78,0x06,0x48,0x04,0x4c,0x04,0x4b,0x04,0x49,0x04,0xd8,0x07,0x90,0x03,0x04,0x06,0x04,0x07,0x84,0x05,0xc7,0x04,0x67,0x04,0x34,0x04,0x1c,0x04,0x0c,0x04,0x04,0x06,0x04,0x07,0x84,0x05,0xc4,0x04,0x64,0x04,0x37,0x04,0x1d,0x04,0x0c,0x04, diff --git a/radio/src/fonts/sqt5/font_pl_08x10.png b/radio/src/fonts/sqt5/font_pl_08x10.png index bbe2fc7f139bd0e5d1e6ac30be339aac7e3f0dba..6db2c6be3c9160e9a113cdcda2a05945abef843c 100644 GIT binary patch delta 257 zcmV+c0sj8&0j~m(Hh%$POGiWihy@);00009a7bBm000XU000XU0RWnu7ytkO2XskI zMF-ss6&C>r&g$cP00025Nklm9rXCL_HXxN+kJ+?1<$077q3 zc9=jy!ID9!`X`x8UVi=`AWy}6Prklu4LR5h6zLvgG*L#O)_QHV8;~RIoHGuDQV010 z03y=VgYR)&g+QjKQ)1S0}_W z&%iiuC>it3DoXv)H2vbo5r#IbH(rDkC}q16rLzB3sMK8_epr38gaK;f00000NkvXX Hu0mjf7~o`O delta 191 zcmV;w06_n*0__2iHh-c?L_t&t*ENp44FfR$cn2A!f*&Qzmfll_vm1gv24F-W&2- zP)d>d%zPk3bO)#QZH?TK_=8BQ2f8Iv&8-(Aj{${>v{tgCemF;5BG8BuxyW^E_5MdW tUgwFRmRj5K@xi6m`GLz<$(EtDe1W80eR2b7m&@pbrAP@!6u`GoYk>Yez>l|TkK#r0lZ0QcH zG$|r+fk?haN_UjLg0&QBjof%8#Ls}8WE#Xn44)yO#TIqz5Pvl+cx(NNh5(ghgqnsp zx1VI8hVK<;Lefdzk{*WJcu!=LRuj^N5COUJ1+31Hwqti!5f^uaL@C!t_A~ufE$Ox4 zRb&@WbC;AUew=6j5dGXm-B1$2(@FFQ@uiBjas8~fbk07@?0y^B-`J}VFMN9;c2m2M z-+grbmHf73uThIzf4JXVSh#fnyY;OrIk`_~{l8z8{qxo>Io|`F_MC<)Bg~O{%>G>d q^+mN2@B18*;)MGgFy&#DT7Cd9k-G6wyCVny0000xytIBpL4ZOYpvFE-)hAh~ z{(D1Bh#L7V>b}1XPee9qH6mUK0k9h%z~&5TJ2a0Oak%19mVe{gz+TgDgr&EFXPI2S zOifhg@b12!{6n@=6LdjQuD&Z}i#1%bAdG7#y~jHFoG17Dz}~TEYq;|1<$>J@x2Ah@ z*UsekCAqN4tv}uGZe6I9E7+~C+|ei3X{`VES=m3Y+>-ix7UjK9Lz$80eASTr^?278 n2_xU{{}2^C&KivAvyLo3E)KrC*Pz#100000NkvXXu0mjfWk!v~ diff --git a/radio/src/fonts/sqt5/font_pt_05x07.lbm b/radio/src/fonts/sqt5/font_pt_05x07.lbm index 19aac799d..107401149 100644 --- a/radio/src/fonts/sqt5/font_pt_05x07.lbm +++ b/radio/src/fonts/sqt5/font_pt_05x07.lbm @@ -1 +1 @@ -0x78,0x14,0x16,0x15,0x78,0x74,0x54,0x56,0x55,0x7c,0x78,0x16,0x15,0x16,0x78,0x74,0x56,0x55,0x56,0x7c,0x7a,0x15,0x16,0x15,0x78,0x74,0x56,0x55,0x56,0x7d,0x78,0x15,0x16,0x14,0x78,0x74,0x55,0x56,0x54,0x7c,0x1c,0xa2,0x62,0x22,0x22,0x3c,0xa4,0x64,0x24,0x24,0x7c,0x54,0x56,0x55,0x44,0x7c,0x54,0x56,0x55,0x5c,0x7c,0x56,0x55,0x56,0x44,0x7c,0x56,0x55,0x56,0x5c,0x00,0x44,0x7e,0x45,0x00,0x00,0x48,0x7a,0x41,0x00,0x3c,0x42,0x42,0x43,0x3c,0x38,0x44,0x46,0x45,0x38,0x3c,0x42,0x43,0x42,0x3c,0x38,0x44,0x46,0x44,0x38,0x3c,0x43,0x42,0x43,0x3c,0x38,0x46,0x44,0x46,0x38,0x3c,0x40,0x42,0x41,0x3c,0x78,0x40,0x44,0x42,0x78, +0x78,0x14,0x16,0x15,0x78,0x74,0x54,0x56,0x55,0x7c,0x78,0x16,0x15,0x16,0x78,0x74,0x56,0x55,0x56,0x7c,0x7a,0x15,0x16,0x15,0x78,0x74,0x56,0x55,0x56,0x7d,0x78,0x15,0x16,0x14,0x78,0x74,0x55,0x56,0x54,0x7c,0x1c,0xa2,0x62,0x22,0x22,0x3c,0xa4,0x64,0x24,0x24,0x7c,0x54,0x56,0x55,0x44,0x7c,0x54,0x56,0x55,0x5c,0x7c,0x56,0x55,0x56,0x44,0x7c,0x56,0x55,0x56,0x5c,0x44,0x7e,0x45,0xff,0xff,0x48,0x7a,0x41,0xff,0xff,0x3c,0x42,0x42,0x43,0x3c,0x38,0x44,0x46,0x45,0x38,0x3c,0x42,0x43,0x42,0x3c,0x38,0x44,0x46,0x44,0x38,0x3c,0x43,0x42,0x43,0x3c,0x38,0x46,0x44,0x46,0x38,0x3c,0x40,0x42,0x41,0x3c,0x78,0x40,0x44,0x42,0x78, diff --git a/radio/src/fonts/sqt5/font_pt_05x07.png b/radio/src/fonts/sqt5/font_pt_05x07.png index d973c436b99b4021cdae8db4c5c1978b804aa2e2..4aba8238c9dd1c96bfa3cd4482f82a0de080a01b 100644 GIT binary patch delta 157 zcmV;O0Am020rUZoUw;f0778dAvT#oT004AJL_t&t*JF5JzU$TZ|G)3Pmv~?P>;Ha+ zd#^*USGRxPb!|%D;~m#)89J0WniMJ+7#L(qV#Qr=GnCJLUU{$j-t%28#dDrpo?`%m z>O%}oQy_dW*&z3QACzAp!_Ii%-T|PZo@9w*3Jm{2U@s8Q0T#0WXlzBMi)<}A00000 LNkvXXu0mjf0Vzae delta 157 zcmV;O0Am020rUZoUw;T26dxM?3&KVK004AJL_t&t*JF5JzU$TZ|G)3P-}}D&*Z=(t z_g;ryuWtXo>w0zH;~m#)89J0WniMJ+7?|u!V#Qr=GnCJLUU{$j-t*nX#dDrpo?`%m z>O&08)et_IY>@lDAIdL~VP`yW?*IdnVNbHeF$ISIAh7p83>E+Yu@pwGD#mmv00000 LNkvXXu0mjf9_LBt diff --git a/radio/src/fonts/sqt5/font_pt_08x10.lbm b/radio/src/fonts/sqt5/font_pt_08x10.lbm index 7971cf6a9..b4996b52a 100644 --- a/radio/src/fonts/sqt5/font_pt_08x10.lbm +++ b/radio/src/fonts/sqt5/font_pt_08x10.lbm @@ -1 +1 @@ -0xf0,0x07,0xf8,0x07,0x88,0x00,0x8c,0x00,0x8b,0x00,0x89,0x00,0xf8,0x07,0xf0,0x07,0x90,0x07,0x90,0x07,0x90,0x04,0x90,0x04,0x98,0x04,0xf6,0x07,0xf2,0x07,0x00,0x00,0xf0,0x07,0xfa,0x07,0x8b,0x00,0x89,0x00,0x89,0x00,0x8b,0x00,0xfa,0x07,0xf0,0x07,0x90,0x07,0x94,0x07,0x96,0x04,0x93,0x04,0x96,0x04,0xf4,0x07,0xf0,0x07,0x00,0x00,0xf0,0x07,0xfa,0x07,0x89,0x00,0x89,0x00,0x8b,0x00,0x8a,0x00,0xfa,0x07,0xf1,0x07,0x90,0x07,0x90,0x07,0x94,0x04,0x92,0x04,0x96,0x04,0xf4,0x07,0xf2,0x07,0x00,0x00,0xf0,0x07,0xf8,0x07,0x89,0x00,0x8b,0x00,0x8c,0x00,0x88,0x00,0xf8,0x07,0xf0,0x07,0x90,0x07,0x90,0x07,0x92,0x04,0x96,0x04,0x98,0x04,0xf0,0x07,0xf0,0x07,0x00,0x00,0xf8,0x01,0xfc,0x03,0x04,0x0a,0x04,0x0e,0x04,0x06,0x04,0x02,0x04,0x02,0x04,0x02,0xf8,0x03,0xf8,0x03,0x08,0x0a,0x08,0x0e,0x08,0x06,0x08,0x02,0x08,0x02,0x00,0x00,0xf8,0x07,0xf8,0x07,0x48,0x04,0x4c,0x04,0x4b,0x04,0x49,0x04,0x08,0x04,0x00,0x00,0xf0,0x07,0xf0,0x07,0x90,0x04,0x9c,0x04,0x96,0x04,0xf2,0x04,0xf0,0x04,0x00,0x00,0xf8,0x07,0xfa,0x07,0x4b,0x04,0x49,0x04,0x49,0x04,0x4b,0x04,0x0a,0x04,0x00,0x00,0xf0,0x07,0xf4,0x07,0x96,0x04,0x93,0x04,0x96,0x04,0xf4,0x04,0xf0,0x04,0x00,0x00,0x00,0x00,0x08,0x04,0x08,0x04,0xfc,0x07,0xfb,0x07,0x09,0x04,0x08,0x04,0x00,0x00,0x00,0x00,0x10,0x04,0x10,0x04,0xf4,0x07,0xf3,0x07,0x01,0x04,0x00,0x04,0x00,0x00,0xf0,0x03,0xf8,0x07,0x08,0x04,0x08,0x04,0x0c,0x04,0x0b,0x04,0xf9,0x07,0xf0,0x03,0xe0,0x03,0xf0,0x07,0x10,0x04,0x18,0x04,0x16,0x04,0xf2,0x07,0xe0,0x03,0x00,0x00,0xf0,0x03,0xfa,0x07,0x0b,0x04,0x09,0x04,0x09,0x04,0x0b,0x04,0xfa,0x07,0xf0,0x03,0xe0,0x03,0xf4,0x07,0x16,0x04,0x13,0x04,0x16,0x04,0xf4,0x07,0xe0,0x03,0x00,0x00,0xf2,0x03,0xf9,0x07,0x09,0x04,0x0b,0x04,0x0a,0x04,0x0a,0x04,0xf9,0x07,0xf0,0x03,0xe0,0x03,0xf4,0x07,0x12,0x04,0x16,0x04,0x14,0x04,0xf2,0x07,0xe0,0x03,0x00,0x00,0xf8,0x03,0xf8,0x07,0x00,0x04,0x04,0x04,0x03,0x04,0x01,0x04,0xf8,0x07,0xf8,0x03,0xf0,0x07,0xf0,0x07,0x00,0x04,0x04,0x04,0x03,0x04,0xf1,0x07,0xf0,0x07,0x00,0x00, +0xf0,0x07,0xf8,0x07,0x88,0x00,0x8c,0x00,0x8b,0x00,0x89,0x00,0xf8,0x07,0xf0,0x07,0x90,0x07,0x90,0x07,0x90,0x04,0x90,0x04,0x98,0x04,0xf6,0x07,0xf2,0x07,0xff,0x0f,0xf0,0x07,0xfa,0x07,0x8b,0x00,0x89,0x00,0x89,0x00,0x8b,0x00,0xfa,0x07,0xf0,0x07,0x90,0x07,0x94,0x07,0x96,0x04,0x93,0x04,0x96,0x04,0xf4,0x07,0xf0,0x07,0xff,0x0f,0xf0,0x07,0xfa,0x07,0x89,0x00,0x89,0x00,0x8b,0x00,0x8a,0x00,0xfa,0x07,0xf1,0x07,0x90,0x07,0x90,0x07,0x94,0x04,0x92,0x04,0x96,0x04,0xf4,0x07,0xf2,0x07,0xff,0x0f,0xf0,0x07,0xf8,0x07,0x89,0x00,0x8b,0x00,0x8c,0x00,0x88,0x00,0xf8,0x07,0xf0,0x07,0x90,0x07,0x90,0x07,0x92,0x04,0x96,0x04,0x98,0x04,0xf0,0x07,0xf0,0x07,0xff,0x0f,0xf8,0x01,0xfc,0x03,0x04,0x0a,0x04,0x0e,0x04,0x06,0x04,0x02,0x04,0x02,0x04,0x02,0xf8,0x03,0xf8,0x03,0x08,0x0a,0x08,0x0e,0x08,0x06,0x08,0x02,0x08,0x02,0xff,0x0f,0xf8,0x07,0xf8,0x07,0x48,0x04,0x4c,0x04,0x4b,0x04,0x49,0x04,0x08,0x04,0xff,0x0f,0xf0,0x07,0xf0,0x07,0x90,0x04,0x9c,0x04,0x96,0x04,0xf2,0x04,0xf0,0x04,0xff,0x0f,0xf8,0x07,0xfa,0x07,0x4b,0x04,0x49,0x04,0x49,0x04,0x4b,0x04,0x0a,0x04,0xff,0x0f,0xf0,0x07,0xf4,0x07,0x96,0x04,0x93,0x04,0x96,0x04,0xf4,0x04,0xf0,0x04,0xff,0x0f,0x08,0x04,0x08,0x04,0xfc,0x07,0xfb,0x07,0x09,0x04,0x08,0x04,0xff,0x0f,0xff,0x0f,0x10,0x04,0x10,0x04,0xf4,0x07,0xf3,0x07,0x01,0x04,0x00,0x04,0xff,0x0f,0xff,0x0f,0xf0,0x03,0xf8,0x07,0x08,0x04,0x08,0x04,0x0c,0x04,0x0b,0x04,0xf9,0x07,0xf0,0x03,0xe0,0x03,0xf0,0x07,0x10,0x04,0x18,0x04,0x16,0x04,0xf2,0x07,0xe0,0x03,0xff,0x0f,0xf0,0x03,0xfa,0x07,0x0b,0x04,0x09,0x04,0x09,0x04,0x0b,0x04,0xfa,0x07,0xf0,0x03,0xe0,0x03,0xf4,0x07,0x16,0x04,0x13,0x04,0x16,0x04,0xf4,0x07,0xe0,0x03,0xff,0x0f,0xf2,0x03,0xf9,0x07,0x09,0x04,0x0b,0x04,0x0a,0x04,0x0a,0x04,0xf9,0x07,0xf0,0x03,0xe0,0x03,0xf4,0x07,0x12,0x04,0x16,0x04,0x14,0x04,0xf2,0x07,0xe0,0x03,0xff,0x0f,0xf8,0x03,0xf8,0x07,0x00,0x04,0x04,0x04,0x03,0x04,0x01,0x04,0xf8,0x07,0xf8,0x03,0xf0,0x07,0xf0,0x07,0x00,0x04,0x04,0x04,0x03,0x04,0xf1,0x07,0xf0,0x07,0xff,0x0f, diff --git a/radio/src/fonts/sqt5/font_pt_08x10.png b/radio/src/fonts/sqt5/font_pt_08x10.png index 5b833f108ddcb33ea2bf74f3868a2e904496954a..20b6fff4dbae7824b1f76f1ad16a4a75a654a495 100644 GIT binary patch delta 215 zcmV;|04V>V0OCkF29{3&`8P{FsODk zUm!rIfER?3s-h&Y5eZ4QVojXde8j^GpFbjlUlDoqVUp(y01g99jXv|d_77=cl?lc+ R4t)Rs002ovPDHLkV1lt4Um^ei delta 202 zcmV;*05$)v0-*wsUw;T26$3EB1w8ry005y$L_t&-(`}A13d1lAMI~}7gTaUCMPf2^ z>Xa!b=-e|DnxR96o}qZu;6a28zjEv$E&UI~7Y_?l#$6s*0F;*VYV(4eN!MwhPkKu;-8H`B$`GrNovP-0KL7v#07*qoM6N<$ Ef}6cu(f|Me diff --git a/radio/src/fonts/sqt5/font_pt_10x14.lbm b/radio/src/fonts/sqt5/font_pt_10x14.lbm index edbb018a6..1480d99f3 100644 --- a/radio/src/fonts/sqt5/font_pt_10x14.lbm +++ b/radio/src/fonts/sqt5/font_pt_10x14.lbm @@ -1 +1 @@ -0xf0,0x7f,0xf8,0x7f,0xf8,0x7f,0x18,0x06,0x18,0x06,0x18,0x06,0x1c,0x06,0xfe,0x7f,0xfb,0x7f,0xf1,0x7f,0x60,0x7e,0x60,0x7e,0x60,0x7e,0x60,0x66,0x60,0x66,0x68,0x66,0x6c,0x66,0xe6,0x7f,0xe2,0x7f,0xe0,0x7f,0xf0,0x7f,0xf8,0x7f,0xf8,0x7f,0x1a,0x06,0x19,0x06,0x19,0x06,0x1a,0x06,0xf8,0x7f,0xf8,0x7f,0xf0,0x7f,0x60,0x7e,0x60,0x7e,0x60,0x7e,0x68,0x66,0x6c,0x66,0x66,0x66,0x6c,0x66,0xe8,0x7f,0xe0,0x7f,0xe0,0x7f,0xf0,0x7f,0xfa,0x7f,0xf9,0x7f,0x19,0x06,0x1b,0x06,0x1a,0x06,0x1a,0x06,0xf9,0x7f,0xf8,0x7f,0xf0,0x7f,0x60,0x7e,0x60,0x7e,0x68,0x7e,0x64,0x66,0x64,0x66,0x6c,0x66,0x68,0x66,0xe8,0x7f,0xe4,0x7f,0xe0,0x7f,0xf1,0x7f,0xfb,0x7f,0xfe,0x7f,0x1c,0x06,0x18,0x06,0x18,0x06,0x18,0x06,0xf8,0x7f,0xf8,0x7f,0xf0,0x7f,0x60,0x7e,0x60,0x7e,0x60,0x7e,0x62,0x66,0x66,0x66,0x6c,0x66,0x68,0x66,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xf8,0x0f,0xfc,0x1f,0xfc,0x5f,0x0c,0x78,0x0c,0x38,0x0c,0x18,0x0c,0x18,0x0c,0x18,0x0c,0x18,0x0c,0x18,0xf8,0x1f,0xf8,0x1f,0xf8,0x5f,0x18,0x78,0x18,0x38,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0xf8,0x7f,0xf8,0x7f,0xf8,0x7f,0x18,0x63,0x1c,0x63,0x1e,0x63,0x1b,0x63,0x19,0x63,0x18,0x60,0x18,0x60,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x66,0x68,0x66,0x6c,0x66,0x66,0x66,0xe2,0x67,0xe0,0x67,0xe0,0x67,0xf0,0x7f,0xf4,0x7f,0xf6,0x7f,0x33,0x66,0x31,0x66,0x33,0x66,0x36,0x66,0x34,0x66,0x30,0x60,0x30,0x60,0xe0,0x7f,0xe0,0x7f,0xe8,0x7f,0x6c,0x66,0x66,0x66,0x6c,0x66,0x68,0x66,0xe0,0x67,0xe0,0x67,0xe0,0x67,0x00,0x00,0x00,0x00,0x30,0x60,0x30,0x60,0xf4,0x7f,0xf6,0x7f,0xf3,0x7f,0x31,0x60,0x30,0x60,0x00,0x00,0x00,0x00,0x60,0x60,0x60,0x60,0xe0,0x7f,0xe8,0x7f,0xec,0x7f,0x06,0x60,0x02,0x60,0x00,0x00,0x00,0x00,0xf0,0x3f,0xf8,0x7f,0xf8,0x7f,0x18,0x60,0x1c,0x60,0x1e,0x60,0x1b,0x60,0xf9,0x7f,0xf8,0x7f,0xf0,0x3f,0xc0,0x3f,0xe0,0x7f,0xe0,0x7f,0x60,0x60,0x68,0x60,0x6c,0x60,0x66,0x60,0xe2,0x7f,0xe0,0x7f,0xc0,0x3f,0xf0,0x3f,0xf8,0x7f,0xf8,0x7f,0x1a,0x60,0x19,0x60,0x19,0x60,0x1a,0x60,0xf8,0x7f,0xf8,0x7f,0xf0,0x3f,0xc0,0x3f,0xe0,0x7f,0xe8,0x7f,0x6c,0x60,0x66,0x60,0x6c,0x60,0x68,0x60,0xe0,0x7f,0xe0,0x7f,0xc0,0x3f,0xf0,0x3f,0xfa,0x7f,0xf9,0x7f,0x19,0x60,0x1b,0x60,0x1a,0x60,0x1a,0x60,0xf9,0x7f,0xf8,0x7f,0xf0,0x3f,0xc0,0x3f,0xe8,0x7f,0xe4,0x7f,0x64,0x60,0x6c,0x60,0x68,0x60,0x68,0x60,0xe4,0x7f,0xe0,0x7f,0xc0,0x3f,0xf8,0x3f,0xf8,0x7f,0xf8,0x7f,0x00,0x60,0x04,0x60,0x06,0x60,0x03,0x60,0xf9,0x7f,0xf8,0x7f,0xf8,0x3f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x00,0x60,0x10,0x60,0x18,0x60,0x0c,0x60,0xe4,0x7f,0xe0,0x7f,0xe0,0x7f, +0xf0,0x7f,0xf8,0x7f,0xf8,0x7f,0x18,0x06,0x18,0x06,0x18,0x06,0x1c,0x06,0xfe,0x7f,0xfb,0x7f,0xf1,0x7f,0x60,0x7e,0x60,0x7e,0x60,0x7e,0x60,0x66,0x60,0x66,0x68,0x66,0x6c,0x66,0xe6,0x7f,0xe2,0x7f,0xe0,0x7f,0xf0,0x7f,0xf8,0x7f,0xf8,0x7f,0x1a,0x06,0x19,0x06,0x19,0x06,0x1a,0x06,0xf8,0x7f,0xf8,0x7f,0xf0,0x7f,0x60,0x7e,0x60,0x7e,0x60,0x7e,0x68,0x66,0x6c,0x66,0x66,0x66,0x6c,0x66,0xe8,0x7f,0xe0,0x7f,0xe0,0x7f,0xf0,0x7f,0xfa,0x7f,0xf9,0x7f,0x19,0x06,0x1b,0x06,0x1a,0x06,0x1a,0x06,0xf9,0x7f,0xf8,0x7f,0xf0,0x7f,0x60,0x7e,0x60,0x7e,0x68,0x7e,0x64,0x66,0x64,0x66,0x6c,0x66,0x68,0x66,0xe8,0x7f,0xe4,0x7f,0xe0,0x7f,0xf1,0x7f,0xfb,0x7f,0xfe,0x7f,0x1c,0x06,0x18,0x06,0x18,0x06,0x18,0x06,0xf8,0x7f,0xf8,0x7f,0xf0,0x7f,0x60,0x7e,0x60,0x7e,0x60,0x7e,0x62,0x66,0x66,0x66,0x6c,0x66,0x68,0x66,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xf8,0x0f,0xfc,0x1f,0xfc,0x5f,0x0c,0x78,0x0c,0x38,0x0c,0x18,0x0c,0x18,0x0c,0x18,0x0c,0x18,0x0c,0x18,0xf8,0x1f,0xf8,0x1f,0xf8,0x5f,0x18,0x78,0x18,0x38,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0xf8,0x7f,0xf8,0x7f,0xf8,0x7f,0x18,0x63,0x1c,0x63,0x1e,0x63,0x1b,0x63,0x19,0x63,0x18,0x60,0x18,0x60,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x66,0x68,0x66,0x6c,0x66,0x66,0x66,0xe2,0x67,0xe0,0x67,0xe0,0x67,0xf0,0x7f,0xf4,0x7f,0xf6,0x7f,0x33,0x66,0x31,0x66,0x33,0x66,0x36,0x66,0x34,0x66,0x30,0x60,0x30,0x60,0xe0,0x7f,0xe0,0x7f,0xe8,0x7f,0x6c,0x66,0x66,0x66,0x6c,0x66,0x68,0x66,0xe0,0x67,0xe0,0x67,0xe0,0x67,0x30,0x60,0x30,0x60,0xf4,0x7f,0xf6,0x7f,0xf3,0x7f,0x31,0x60,0x30,0x60,0xff,0xff,0xff,0xff,0xff,0xff,0x60,0x60,0x60,0x60,0xe0,0x7f,0xe8,0x7f,0xec,0x7f,0x06,0x60,0x02,0x60,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0x3f,0xf8,0x7f,0xf8,0x7f,0x18,0x60,0x1c,0x60,0x1e,0x60,0x1b,0x60,0xf9,0x7f,0xf8,0x7f,0xf0,0x3f,0xc0,0x3f,0xe0,0x7f,0xe0,0x7f,0x60,0x60,0x68,0x60,0x6c,0x60,0x66,0x60,0xe2,0x7f,0xe0,0x7f,0xc0,0x3f,0xf0,0x3f,0xf8,0x7f,0xf8,0x7f,0x1a,0x60,0x19,0x60,0x19,0x60,0x1a,0x60,0xf8,0x7f,0xf8,0x7f,0xf0,0x3f,0xc0,0x3f,0xe0,0x7f,0xe8,0x7f,0x6c,0x60,0x66,0x60,0x6c,0x60,0x68,0x60,0xe0,0x7f,0xe0,0x7f,0xc0,0x3f,0xf0,0x3f,0xfa,0x7f,0xf9,0x7f,0x19,0x60,0x1b,0x60,0x1a,0x60,0x1a,0x60,0xf9,0x7f,0xf8,0x7f,0xf0,0x3f,0xc0,0x3f,0xe8,0x7f,0xe4,0x7f,0x64,0x60,0x6c,0x60,0x68,0x60,0x68,0x60,0xe4,0x7f,0xe0,0x7f,0xc0,0x3f,0xf8,0x3f,0xf8,0x7f,0xf8,0x7f,0x00,0x60,0x04,0x60,0x06,0x60,0x03,0x60,0xf9,0x7f,0xf8,0x7f,0xf8,0x3f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x00,0x60,0x10,0x60,0x18,0x60,0x0c,0x60,0xe4,0x7f,0xe0,0x7f,0xe0,0x7f, diff --git a/radio/src/fonts/sqt5/font_pt_10x14.png b/radio/src/fonts/sqt5/font_pt_10x14.png index 97f12d9982351b96c4aaf0855be233b6d42f71e3..72b56e8d7c9eaac853725db0920b48f73ec87d3c 100644 GIT binary patch delta 298 zcmV+_0oDHd0)PXMUw;f07a9hDWCi8`0096=L_t&-({+!rPQx$|hA%22OO|e#Vk8D$ zfr-3IrLHV2C<7wyj?{srLq(sVPtZ&aOnw2RM0m(Zf)__Jxt>#K+NS+2{kr?V)9DNt z(p#fKD}fU6S{rOLYN3hWvhO9DrD}TIo3ji1h{E6j^KWX=d-#`i2{>v&UAOI)d8cQn!R(^0b z{Bp?h=oqua8~MA8a5#~=HH#ybzKs3Ao#at#2e|ZlxRb>IiFX#;(~j`|q+?>1nlqT6 w#Ji6bbqPInSR<%^%t!vELv{gxJxSfw8(;txy$r1;&+N;-#wPQzq r?{MqIjn?Kzs~*dfNx(QF!oTqet3lkR`!j mz>q8fVyPVSVEDfGeFXrEItj}0dPXP!0000&Y`_=Wc6lTzu~n&*9%&vK_*v91v@J kqamRE_LgMZe;{CF_{hh9r&m?37^sQC)78&qol`;+0Om&@`2YX_ diff --git a/radio/src/fonts/sqt5/font_se_08x10.lbm b/radio/src/fonts/sqt5/font_se_08x10.lbm index bd9f19b29..104f312df 100644 --- a/radio/src/fonts/sqt5/font_se_08x10.lbm +++ b/radio/src/fonts/sqt5/font_se_08x10.lbm @@ -1 +1 @@ -0x90,0x07,0x90,0x07,0x92,0x04,0x95,0x04,0x95,0x04,0xf2,0x07,0xf0,0x07,0x00,0x00,0x90,0x07,0x96,0x07,0x96,0x04,0x90,0x04,0x96,0x04,0xf6,0x07,0xf0,0x07,0x00,0x00,0xe0,0x03,0xf6,0x07,0x16,0x04,0x10,0x04,0x16,0x04,0xf6,0x07,0xe0,0x03,0x00,0x00,0xf0,0x07,0xf8,0x07,0x9a,0x00,0x9d,0x00,0x9d,0x00,0x9a,0x00,0xf8,0x07,0xf0,0x07,0xf0,0x07,0xfb,0x07,0x9b,0x00,0x98,0x00,0x98,0x00,0x9b,0x00,0xfb,0x07,0xf0,0x07,0xf0,0x03,0xfb,0x07,0x0b,0x04,0x08,0x04,0x08,0x04,0x0b,0x04,0xfb,0x07,0xf0,0x03, +0x90,0x07,0x90,0x07,0x92,0x04,0x95,0x04,0x95,0x04,0xf2,0x07,0xf0,0x07,0xff,0x0f,0x90,0x07,0x96,0x07,0x96,0x04,0x90,0x04,0x96,0x04,0xf6,0x07,0xf0,0x07,0xff,0x0f,0xe0,0x03,0xf6,0x07,0x16,0x04,0x10,0x04,0x16,0x04,0xf6,0x07,0xe0,0x03,0xff,0x0f,0xf0,0x07,0xf8,0x07,0x9a,0x00,0x9d,0x00,0x9d,0x00,0x9a,0x00,0xf8,0x07,0xf0,0x07,0xf0,0x07,0xfb,0x07,0x9b,0x00,0x98,0x00,0x98,0x00,0x9b,0x00,0xfb,0x07,0xf0,0x07,0xf0,0x03,0xfb,0x07,0x0b,0x04,0x08,0x04,0x08,0x04,0x0b,0x04,0xfb,0x07,0xf0,0x03, diff --git a/radio/src/fonts/sqt5/font_se_08x10.png b/radio/src/fonts/sqt5/font_se_08x10.png index c82cb832021b1e5124f9835202e5e6dec60c9bb2..3602d7811ffbe581f4fa8eeb4c729de151fefffb 100644 GIT binary patch delta 108 zcmV-y0F(d20mK22Uu6sx7Xvuj1+i5C002ZuL_t&t*FDRz5x^h}L(xB$3oqx4;EvTu z4=Yf~fm|-tJLx2bG+U!*-kXs*tB@2Czy;1)=KceAO0ze8?4^60UsXMqKqH4%?<-CK O0000Pl6TP11#0gMR&54z{8kN}sk|F|T10eQx@`ssU>HgY>UXpQtodca-Bdbt6THXKv N002ovPDHLkV1iZ+DZc;! From a14ba678b4a6c842d4604dffd79f76037279328b Mon Sep 17 00:00:00 2001 From: mhotar Date: Sun, 22 Dec 2013 01:54:01 +0100 Subject: [PATCH 027/308] tinsize number length corrected --- radio/src/lcd.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/radio/src/lcd.cpp b/radio/src/lcd.cpp index dd190d5d3..e9e684357 100644 --- a/radio/src/lcd.cpp +++ b/radio/src/lcd.cpp @@ -452,12 +452,10 @@ void lcd_outdezNAtt(xcoord_t x, uint8_t y, lcdint_t val, LcdFlags flags, uint8_t fw += FWNUM; } else if (midsize) { - flags |= CONDENSED; fw += FWNUM-3; } else if (tinsize) { fw -= 1; - x += 1; } else { if (flags & LEFT) { From e16500de9ec361f3d250f993e0e9ba2808d50712 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Sun, 22 Dec 2013 17:01:41 +0100 Subject: [PATCH 028/308] Model Setup reworked again! --- companion/src/eeprominterface.h | 9 - companion/src/firmwares/er9x/er9xeeprom.cpp | 2 - .../src/firmwares/er9x/er9xinterface.cpp | 3 - .../src/firmwares/ersky9x/ersky9xeeprom.cpp | 2 - .../firmwares/ersky9x/ersky9xinterface.cpp | 4 - .../src/firmwares/gruvin9x/gruvin9xeeprom.cpp | 3 - .../src/firmwares/opentx/open9xeeprom.cpp | 5 +- .../src/firmwares/opentx/open9xinterface.cpp | 15 +- companion/src/firmwares/th9x/th9xeeprom.cpp | 2 - companion/src/generaledit.cpp | 50 +- companion/src/generaledit.h | 4 - companion/src/generaledit.ui | 418 +-- companion/src/helpers.cpp | 45 +- companion/src/helpers.h | 3 +- companion/src/modeledit/CMakeLists.txt | 2 + companion/src/modeledit/flightmodes.cpp | 2 +- companion/src/modeledit/setup.cpp | 1456 ++------ companion/src/modeledit/setup.h | 125 +- companion/src/modeledit/setup.ui | 3154 ++--------------- companion/src/modeledit/setup_module.ui | 343 ++ companion/src/modeledit/setup_timer.ui | 81 + companion/src/xmlinterface.cpp | 2 - 22 files changed, 1281 insertions(+), 4449 deletions(-) create mode 100644 companion/src/modeledit/setup_module.ui create mode 100644 companion/src/modeledit/setup_timer.ui diff --git a/companion/src/eeprominterface.h b/companion/src/eeprominterface.h index cf5e7a2dd..ed33f9380 100644 --- a/companion/src/eeprominterface.h +++ b/companion/src/eeprominterface.h @@ -424,7 +424,6 @@ class GeneralSettings { int timezone; bool optrexDisplay; unsigned int inactivityTimer; - bool throttleReversed; bool minuteBeep; bool preBeep; bool flashBeep; @@ -871,7 +870,6 @@ enum Capability { Mixes, MixesWithoutExpo, Timers, - TimerTriggerB, TimeDivisions, minuteBeep, countdownBeep, @@ -881,7 +879,6 @@ enum Capability { ModelVoice, MultiLangVoice, ModelImage, - InstantTrimSW, Pots, Switches, SwitchesPositions, @@ -925,7 +922,6 @@ enum Capability { TrainerSwitch, ModelTrainerEnable, Timer2ThrTrig, - HasTTrace, HasExpoNames, HasMixerNames, HasChNames, @@ -935,14 +931,11 @@ enum Capability { HasPPMStart, HasGeneralUnits, HasFAIMode, - NoTimerDirs, - NoThrExpo, OptrexDisplay, PPMExtCtrl, PPMFrameLength, MixFmTrim, gsSwitchMask, - pmSwitchMask, BLonStickMove, DSM2Indexes, Telemetry, @@ -986,8 +979,6 @@ enum Capability { HasBrightness, HasContrast, PerModelTimers, - PerModelThrottleWarning, - PerModelThrottleInvert, SlowScale, SlowRange, PermTimers, diff --git a/companion/src/firmwares/er9x/er9xeeprom.cpp b/companion/src/firmwares/er9x/er9xeeprom.cpp index 335121706..aca4ca460 100644 --- a/companion/src/firmwares/er9x/er9xeeprom.cpp +++ b/companion/src/firmwares/er9x/er9xeeprom.cpp @@ -133,7 +133,6 @@ t_Er9xGeneral::t_Er9xGeneral(GeneralSettings &c9x) disableAlarmWarning = c9x.disableAlarmWarning; stickMode = c9x.stickMode; inactivityTimer = c9x.inactivityTimer - 10; - throttleReversed = c9x.throttleReversed; minuteBeep = c9x.minuteBeep; preBeep = c9x.preBeep; flashBeep = c9x.flashBeep; @@ -207,7 +206,6 @@ Er9xGeneral::operator GeneralSettings () result.disableAlarmWarning = disableAlarmWarning; result.stickMode = std::max((uint8_t)0, std::min(stickMode, (uint8_t)3)); result.inactivityTimer = inactivityTimer + 10; - result.throttleReversed = throttleReversed; result.minuteBeep = minuteBeep; result.preBeep = preBeep; result.flashBeep = flashBeep; diff --git a/companion/src/firmwares/er9x/er9xinterface.cpp b/companion/src/firmwares/er9x/er9xinterface.cpp index f7e6762a8..4040bae05 100644 --- a/companion/src/firmwares/er9x/er9xinterface.cpp +++ b/companion/src/firmwares/er9x/er9xinterface.cpp @@ -304,8 +304,6 @@ int Er9xInterface::getCapability(const Capability capability) return TM_HASTELEMETRY|TM_HASWSHH; case TelemetryUnits: return 1; - case TimerTriggerB: - return 1; case TelemetryMaxMultiplier: return 2; case MaxVolume: @@ -323,7 +321,6 @@ int Er9xInterface::getCapability(const Capability capability) case HasStickScroll: case HasAltitudeSel: case HasContrast: - case InstantTrimSW: case HasVolume: case HasBlInvert: case ModelVoice: diff --git a/companion/src/firmwares/ersky9x/ersky9xeeprom.cpp b/companion/src/firmwares/ersky9x/ersky9xeeprom.cpp index f21688f20..231e06af7 100644 --- a/companion/src/firmwares/ersky9x/ersky9xeeprom.cpp +++ b/companion/src/firmwares/ersky9x/ersky9xeeprom.cpp @@ -164,7 +164,6 @@ t_Ersky9xGeneral::t_Ersky9xGeneral(GeneralSettings &c9x) disableAlarmWarning = c9x.disableAlarmWarning; stickMode = c9x.stickMode; inactivityTimer = c9x.inactivityTimer - 10; - throttleReversed = c9x.throttleReversed; minuteBeep = c9x.minuteBeep; preBeep = c9x.preBeep; flashBeep = c9x.flashBeep; @@ -237,7 +236,6 @@ Ersky9xGeneral::operator GeneralSettings () result.disableAlarmWarning = disableAlarmWarning; result.stickMode = std::max((uint8_t)0, std::min(stickMode, (uint8_t)3)); result.inactivityTimer = inactivityTimer + 10; - result.throttleReversed = throttleReversed; result.minuteBeep = minuteBeep; result.preBeep = preBeep; result.flashBeep = flashBeep; diff --git a/companion/src/firmwares/ersky9x/ersky9xinterface.cpp b/companion/src/firmwares/ersky9x/ersky9xinterface.cpp index 5190ce0e8..b90e9e130 100644 --- a/companion/src/firmwares/ersky9x/ersky9xinterface.cpp +++ b/companion/src/firmwares/ersky9x/ersky9xinterface.cpp @@ -338,8 +338,6 @@ int Ersky9xInterface::getCapability(const Capability capability) return 1; case OptrexDisplay: return 1; - case TimerTriggerB: - return 2; case HasAltitudeSel: case HasCurrentCalibration: case HasVolume: @@ -354,8 +352,6 @@ int Ersky9xInterface::getCapability(const Capability capability) case GvarsAsSources: case GvarsAsWeight: return 1; - case InstantTrimSW: - return 1; case TelemetryMaxMultiplier: return 2; case LCDWidth: diff --git a/companion/src/firmwares/gruvin9x/gruvin9xeeprom.cpp b/companion/src/firmwares/gruvin9x/gruvin9xeeprom.cpp index c1c740efb..8f9860d9a 100644 --- a/companion/src/firmwares/gruvin9x/gruvin9xeeprom.cpp +++ b/companion/src/firmwares/gruvin9x/gruvin9xeeprom.cpp @@ -134,7 +134,6 @@ Gruvin9xGeneral_v103::operator GeneralSettings () result.disableAlarmWarning = disableAlarmWarning; result.stickMode = stickMode; result.inactivityTimer = inactivityTimer; - result.throttleReversed = throttleReversed; result.minuteBeep = minuteBeep; result.preBeep = preBeep; result.flashBeep = flashBeep; @@ -188,7 +187,6 @@ t_Gruvin9xGeneral_v104::t_Gruvin9xGeneral_v104(GeneralSettings &c9x) disableAlarmWarning = c9x.disableAlarmWarning; stickMode = c9x.stickMode; inactivityTimer = c9x.inactivityTimer; - throttleReversed = c9x.throttleReversed; minuteBeep = c9x.minuteBeep; preBeep = c9x.preBeep; flashBeep = c9x.flashBeep; @@ -234,7 +232,6 @@ Gruvin9xGeneral_v104::operator GeneralSettings () result.disableAlarmWarning = disableAlarmWarning; result.stickMode = stickMode; result.inactivityTimer = inactivityTimer; - result.throttleReversed = throttleReversed; result.minuteBeep = minuteBeep; result.preBeep = preBeep; result.flashBeep = flashBeep; diff --git a/companion/src/firmwares/opentx/open9xeeprom.cpp b/companion/src/firmwares/opentx/open9xeeprom.cpp index 9601cb35a..1fc5db454 100644 --- a/companion/src/firmwares/opentx/open9xeeprom.cpp +++ b/companion/src/firmwares/opentx/open9xeeprom.cpp @@ -1866,8 +1866,9 @@ Open9xGeneralDataNew::Open9xGeneralDataNew(GeneralSettings & generalData, BoardE internalField.Append(new UnsignedField<8>(generalData.inactivityTimer)); if (IS_STOCK(board) && version >= 215) { internalField.Append(new UnsignedField<3>(generalData.mavbaud)); - } else { - internalField.Append(new BoolField<1>(generalData.throttleReversed)); + } + else { + internalField.Append(new SpareBitsField<1>()); internalField.Append(new BoolField<1>(generalData.minuteBeep)); internalField.Append(new BoolField<1>(generalData.preBeep)); } diff --git a/companion/src/firmwares/opentx/open9xinterface.cpp b/companion/src/firmwares/opentx/open9xinterface.cpp index 0ffe6b85e..2e8b00565 100644 --- a/companion/src/firmwares/opentx/open9xinterface.cpp +++ b/companion/src/firmwares/opentx/open9xinterface.cpp @@ -684,8 +684,6 @@ int Open9xInterface::getCapability(const Capability capability) return 1; case FSSwitch: return 1; - case HasTTrace: - return 1; case CustomCurves: return 1; case MixesWithoutExpo: @@ -700,10 +698,6 @@ int Open9xInterface::getCapability(const Capability capability) return (IS_TARANIS(board) ? 6 : 0); case HasCvNames: return (IS_TARANIS(board) ? 1 : 0); - case NoTimerDirs: - return 1; - case NoThrExpo: - return 1; case Telemetry: return TM_HASTELEMETRY|TM_HASOFFSET|TM_HASWSHH; case TelemetryBars: @@ -770,10 +764,6 @@ int Open9xInterface::getCapability(const Capability capability) case HasBrightness: return (IS_ARM(board) ? true : false); case PerModelTimers: - case PerModelThrottleWarning: - case PerModelThrottleInvert: - return 1; - case pmSwitchMask: return 1; case SlowScale: return (IS_ARM(board) ? 10 : 2); @@ -817,12 +807,15 @@ int Open9xInterface::isAvailable(Protocol proto, int port) case PXX_XJT_D8: case PXX_XJT_LR12: case PXX_DJT: + case LP45: + case DSM2: + case DSMX: return 1; default: return 0; } break; - case 2: + case -1: switch (proto) { case PPM: return 1; diff --git a/companion/src/firmwares/th9x/th9xeeprom.cpp b/companion/src/firmwares/th9x/th9xeeprom.cpp index d09eb979b..2e5ad8a2f 100644 --- a/companion/src/firmwares/th9x/th9xeeprom.cpp +++ b/companion/src/firmwares/th9x/th9xeeprom.cpp @@ -101,7 +101,6 @@ t_Th9xGeneral::t_Th9xGeneral(GeneralSettings &c9x) trainer = c9x.trainer; adcFilt = c9x.filterInput; // keySpeed - thr0pos = c9x.throttleReversed; disableThrottleWarning = c9x.disableThrottleWarning; disableSwitchWarning = (c9x.switchWarning != -1); disableMemoryWarning = c9x.disableMemoryWarning; @@ -158,7 +157,6 @@ Th9xGeneral::operator GeneralSettings () } result.stickMode = stickMode; result.inactivityTimer = inactivityMin; - result.throttleReversed = thr0pos; result.filterInput = adcFilt; return result; } diff --git a/companion/src/generaledit.cpp b/companion/src/generaledit.cpp index 1f5b179bb..59cb25ca3 100644 --- a/companion/src/generaledit.cpp +++ b/companion/src/generaledit.cpp @@ -170,22 +170,10 @@ GeneralEdit::GeneralEdit(RadioData &radioData, QWidget *parent) : ui->crosstrimChkB->hide(); ui->crosstrimLB->hide(); } - if (!GetEepromInterface()->getCapability(HasPPMSim)) { + if (!GetEepromInterface()->getCapability(HasPPMSim)) { ui->PPMSimLB->hide(); ui->PPMSimChkB->hide(); } - - if (GetEepromInterface()->getCapability(PerModelThrottleWarning)) { - ui->thrwarnChkB->setDisabled(true); - ui->thrwarnChkB->hide(); - ui->thrwarnLabel->hide(); - } - if (GetEepromInterface()->getCapability(pmSwitchMask)) { - ui->swwarn_label->hide(); - ui->swtchWarnCB->hide(); - ui->swtchWarnChkB->hide(); - layout()->removeItem(ui->swwarn_layout); - } if (!GetEepromInterface()->getCapability( HasPxxCountry)) { ui->countrycode_label->hide(); ui->countrycode_CB->hide(); @@ -322,11 +310,8 @@ GeneralEdit::GeneralEdit(RadioData &radioData, QWidget *parent) : ui->swID0ChkB->hide(); ui->swID1ChkB->hide(); ui->swID2ChkB->hide(); - ui->swtchWarnChkB->hide(); this->layout()->removeItem(ui->switchMaskLayout); } else { - ui->swtchWarnCB->setDisabled(true); - ui->swtchWarnCB->hide(); setSwitchDefPos(); } if (!GetEepromInterface()->getCapability(TelemetryAlarm)) { @@ -340,12 +325,6 @@ GeneralEdit::GeneralEdit(RadioData &radioData, QWidget *parent) : } else { populateRotEncCB(ui->re_CB, g_eeGeneral.reNavigation, renumber); } - if (GetEepromInterface()->getCapability(PerModelThrottleInvert)) { - ui->label_thrrev->hide(); - ui->thrrevChkB->hide(); - } else { - ui->thrrevChkB->setChecked(g_eeGeneral.throttleReversed); - } ui->telalarmsChkB->setChecked(g_eeGeneral.enableTelemetryAlarm); ui->PotScrollEnableChkB->setChecked(!g_eeGeneral.disablePotScroll); ui->BandGapEnableChkB->setChecked(!g_eeGeneral.disableBG); @@ -359,9 +338,6 @@ GeneralEdit::GeneralEdit(RadioData &radioData, QWidget *parent) : ui->StickScrollChkB->setChecked(g_eeGeneral.stickScroll); ui->PPMSimChkB->setChecked(g_eeGeneral.enablePpmsim); ui->inputfilterCB->setCurrentIndex(g_eeGeneral.filterInput); - ui->thrwarnChkB->setChecked(!g_eeGeneral.disableThrottleWarning); //Default is zero=checked - ui->swtchWarnChkB->setChecked(g_eeGeneral.switchWarning == -1); - ui->swtchWarnCB->setCurrentIndex(g_eeGeneral.switchWarning == -1 ? 2 : g_eeGeneral.switchWarning); ui->memwarnChkB->setChecked(!g_eeGeneral.disableMemoryWarning); //Default is zero=checked ui->alarmwarnChkB->setChecked(!g_eeGeneral.disableAlarmWarning);//Default is zero=checked ui->enableTelemetryAlarmChkB->setChecked(g_eeGeneral.enableTelemetryAlarm); @@ -622,36 +598,12 @@ void GeneralEdit::on_inactimerSB_editingFinished() updateSettings(); } -void GeneralEdit::on_thrrevChkB_stateChanged(int ) -{ - g_eeGeneral.throttleReversed = ui->thrrevChkB->isChecked() ? 1 : 0; - updateSettings(); -} - void GeneralEdit::on_inputfilterCB_currentIndexChanged(int index) { g_eeGeneral.filterInput = index; updateSettings(); } -void GeneralEdit::on_thrwarnChkB_stateChanged(int ) -{ - g_eeGeneral.disableThrottleWarning = ui->thrwarnChkB->isChecked() ? 0 : 1; - updateSettings(); -} - -void GeneralEdit::on_swtchWarnCB_currentIndexChanged(int index) -{ - g_eeGeneral.switchWarning = (index == 2 ? -1 : index); - updateSettings(); -} - -void GeneralEdit::on_swtchWarnChkB_stateChanged(int ) -{ - g_eeGeneral.switchWarning = ui->swtchWarnChkB->isChecked() ? -1 : 0; - updateSettings(); -} - void GeneralEdit::on_memwarnChkB_stateChanged(int ) { g_eeGeneral.disableMemoryWarning = ui->memwarnChkB->isChecked() ? 0 : 1; diff --git a/companion/src/generaledit.h b/companion/src/generaledit.h index ac6b12cbc..eb6895d13 100644 --- a/companion/src/generaledit.h +++ b/companion/src/generaledit.h @@ -123,12 +123,8 @@ private slots: void on_channelorderCB_currentIndexChanged(int index); void on_beeperCB_currentIndexChanged(int index); void on_memwarnChkB_stateChanged(int ); - void on_swtchWarnCB_currentIndexChanged(int index); - void on_swtchWarnChkB_stateChanged(int ); void on_telalarmsChkB_stateChanged(int ); - void on_thrwarnChkB_stateChanged(int ); void on_inputfilterCB_currentIndexChanged(int index); - void on_thrrevChkB_stateChanged(int ); void on_inactimerSB_editingFinished(); void on_backlightautoSB_editingFinished(); void on_backlightswCB_currentIndexChanged(int index); diff --git a/companion/src/generaledit.ui b/companion/src/generaledit.ui index 8ac09986a..d47781a69 100644 --- a/companion/src/generaledit.ui +++ b/companion/src/generaledit.ui @@ -117,6 +117,13 @@ These will be relevant for all models in the same EEPROM. Setup + + + + + + + @@ -130,7 +137,7 @@ These will be relevant for all models in the same EEPROM. - + @@ -160,13 +167,6 @@ These will be relevant for all models in the same EEPROM. - - - - - - - @@ -174,7 +174,7 @@ These will be relevant for all models in the same EEPROM. - + @@ -188,49 +188,7 @@ These will be relevant for all models in the same EEPROM. - - - - - - - 0 - 0 - - - - - 100 - 16777215 - - - - - Off - - - - - Switches Up - - - - - Switches Down - - - - - - - - - - - - - - + Measurement Units @@ -476,13 +434,6 @@ p, li { white-space: pre-wrap; } - - - - Reverse Throttle Operation - - - @@ -490,7 +441,7 @@ p, li { white-space: pre-wrap; } - + @@ -551,26 +502,40 @@ Mode 4: - - + + - Beeper Mode + - - - - sec + + + + LCD Display Type + + + + + + + + 0 + 0 + - 600 - - 5 + + + + BackLight On Stick Move + + + @@ -598,23 +563,37 @@ p, li { white-space: pre-wrap; } - - - - Reverse throttle operation. -If this is checked the throttle will be reversed. Idle will be forward, trim will also be reversed and the throttle warning will be reversed as well. - - + + + + sec - - + + 600 + + + 5 - - + + - BackLight On Stick Move + Beeper Mode + + + + + + + Timeshift from UTC + + + + + + + RotEnc Navigation @@ -637,47 +616,6 @@ If this is checked the throttle will be reversed. Idle will be forward, trim wi - - - - RotEnc Navigation - - - - - - - Timeshift from UTC - - - - - - - - 0 - 0 - - - - 5 - - - - - - - - - - - - - - LCD Display Type - - - @@ -685,14 +623,7 @@ If this is checked the throttle will be reversed. Idle will be forward, trim wi - - - - Throttle Startup Warning - - - - + @@ -775,7 +706,7 @@ p, li { white-space: pre-wrap; } - + @@ -800,7 +731,7 @@ p, li { white-space: pre-wrap; } - + If you enable FAI, you loose the vario, the play functions, the telemetry screen. This function cannot be disabled by the radio. @@ -810,7 +741,7 @@ p, li { white-space: pre-wrap; } - + @@ -948,48 +879,6 @@ This is used by the templated to determine which channel goes to what number out - - - - Alarm Warning - - - - - - - - 0 - 0 - - - - - 16777215 - 16777215 - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" text-decoration: underline;">Warnings</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">These will define startup warnings.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Throttle warning - will alert if the throttle is not at idle during startup</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Switch warning - will alert if switches are not in their defaul position</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Memory warning - will alert if there's not a lot of memory left</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Silent mode warning - will alert you if the beeper is set to quiet (0)</p></body></html> - - - - - - true - - - @@ -1046,7 +935,7 @@ p, li { white-space: pre-wrap; } - + FAI Mode @@ -1163,7 +1052,7 @@ p, li { white-space: pre-wrap; } - + -14 @@ -1176,7 +1065,7 @@ p, li { white-space: pre-wrap; } - + @@ -1190,7 +1079,7 @@ p, li { white-space: pre-wrap; } - + @@ -1203,7 +1092,7 @@ p, li { white-space: pre-wrap; } - + Stick Mode @@ -1247,41 +1136,6 @@ p, li { white-space: pre-wrap; } - - - - - 0 - 0 - - - - - 16777215 - 16777215 - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" text-decoration: underline;">Warnings</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">These will define startup warnings.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Throttle warning - will alert if the throttle is not at idle during startup</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Switch warning - will alert if switches are not in their defaul position</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Memory warning - will alert if there's not a lot of memory left</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Silent mode warning - will alert you if the beeper is set to quiet (0)</p></body></html> - - - - - - true - - - @@ -1345,13 +1199,6 @@ p, li { white-space: pre-wrap; } - - - - Memory Startup Warning - - - @@ -1532,32 +1379,6 @@ p, li { white-space: pre-wrap; } - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" text-decoration: underline;">Warnings</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">These will define startup warnings.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Throttle warning - will alert if the throttle is not at idle during startup</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Switch warning - will alert if switches are not in their defaul position</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Memory warning - will alert if there's not a lot of memory left</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Silent mode warning - will alert you if the beeper is set to quiet (0)</p></body></html> - - - - - - true - - - false - - - @@ -1565,7 +1386,7 @@ p, li { white-space: pre-wrap; } - + Qt::Vertical @@ -1684,7 +1505,7 @@ Acceptable values are 5v..10v - + Readonly Unlock @@ -1726,13 +1547,6 @@ Acceptable values are 5v..10v - - - - Switch Startup Warning - - - @@ -1740,7 +1554,7 @@ Acceptable values are 5v..10v - + QLayout::SetMinimumSize @@ -2268,6 +2082,90 @@ Acceptable values are 5v..10v + + + + + 0 + 0 + + + + + 16777215 + 16777215 + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" text-decoration: underline;">Warnings</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">These will define startup warnings.</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Throttle warning - will alert if the throttle is not at idle during startup</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Switch warning - will alert if switches are not in their defaul position</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Memory warning - will alert if there's not a lot of memory left</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Silent mode warning - will alert you if the beeper is set to quiet (0)</p></body></html> + + + + + + true + + + + + + + Alarm Warning + + + + + + + + 0 + 0 + + + + + 16777215 + 16777215 + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" text-decoration: underline;">Warnings</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">These will define startup warnings.</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Throttle warning - will alert if the throttle is not at idle during startup</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Switch warning - will alert if switches are not in their defaul position</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Memory warning - will alert if there's not a lot of memory left</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Silent mode warning - will alert you if the beeper is set to quiet (0)</p></body></html> + + + + + + true + + + + + + + Memory Startup Warning + + + @@ -3607,8 +3505,6 @@ p, li { white-space: pre-wrap; } beepMinuteChkB beepCountDownChkB beepFlashChkB - swtchWarnCB - swtchWarnChkB swTHRChkB swRUDChkB swELEChkB diff --git a/companion/src/helpers.cpp b/companion/src/helpers.cpp index 3639b7027..445e8013d 100644 --- a/companion/src/helpers.cpp +++ b/companion/src/helpers.cpp @@ -567,63 +567,22 @@ void populateGvarUseCB(QComboBox *b, unsigned int phase) } } -void populateTimerSwitchCB(QComboBox *b, int value, int extrafields) +void populateTimerSwitchCB(QComboBox *b, int value) { b->clear(); - uint8_t endvalue=128; uint8_t count=0; - if (extrafields==2) - endvalue=192; - for (int i=-128; iaddItem(getTimerMode(i), i); if (i==value) b->setCurrentIndex(b->count()-1); - if (extrafields==2 && (i<0 || (i>3 && i model()->index(count, 0); - // This is the effective 'disable' flag - QVariant v(0); - //the magic - b->model()->setData(index, v, Qt::UserRole - 1); - } count++; } } b->setMaxVisibleItems(10); } -void populateTimerSwitchBCB(QComboBox *b, int value, int extrafields) -{ - b->clear(); - if (extrafields!=2) { - int startvalue=-128; - int endvalue=128; - if (extrafields==1) { - startvalue=-25; - endvalue=26; - } - for (int i=startvalue; iaddItem(getTimerMode(i), i); - if (i==value) - b->setCurrentIndex(b->count()-1); - } - } - } else { - for (int i=-33; i<66; i++) { - QString timerMode = getTimerModeB(i); - if (!timerMode.isEmpty()) { - b->addItem(timerMode, i); - if (i==value) - b->setCurrentIndex(b->count()-1); - } - } - } - b->setMaxVisibleItems(10); -} - QString getTimerMode(int tm) { QString stt = "OFFABSTHsTH%THt"; diff --git a/companion/src/helpers.h b/companion/src/helpers.h index b018162e4..4a3b9ee6c 100644 --- a/companion/src/helpers.h +++ b/companion/src/helpers.h @@ -45,8 +45,7 @@ void populateGvarUseCB(QComboBox *b, unsigned int phase); void populateCurvesCB(QComboBox *b, int value); void populateCustomScreenFieldCB(QComboBox *b, unsigned int value, bool last, int hubproto); void populateExpoCurvesCB(QComboBox *b, int value); -void populateTimerSwitchCB(QComboBox *b, int value, int extrafields=0); -void populateTimerSwitchBCB(QComboBox *b, int value, int extrafields=0); +void populateTimerSwitchCB(QComboBox *b, int value); QString getCustomSwitchStr(CustomSwData * customSw, const ModelData & model); QString getProtocolStr(const int proto); diff --git a/companion/src/modeledit/CMakeLists.txt b/companion/src/modeledit/CMakeLists.txt index aa00bc7dc..28c752d64 100644 --- a/companion/src/modeledit/CMakeLists.txt +++ b/companion/src/modeledit/CMakeLists.txt @@ -38,6 +38,8 @@ set(modeledit_HDRS ) set(modeledit_UIS + setup_timer.ui + setup_module.ui flightmode.ui telemetry_analog.ui ) diff --git a/companion/src/modeledit/flightmodes.cpp b/companion/src/modeledit/flightmodes.cpp index 4475aaebc..67b59d60d 100644 --- a/companion/src/modeledit/flightmodes.cpp +++ b/companion/src/modeledit/flightmodes.cpp @@ -191,7 +191,7 @@ void FlightMode::update() trimsSlider[i]->setRange(-trimsMax, +trimsMax); trimsValue[i]->setRange(-trimsMax, +trimsMax); int chn = CONVERT_MODE(i+1)-1; - if (chn == 2/*TODO constant*/ && generalSettings.throttleReversed) + if (chn == 2/*TODO constant*/ && model.throttleReversed) trimsSlider[i]->setInvertedAppearance(true); trimUpdate(i); diff --git a/companion/src/modeledit/setup.cpp b/companion/src/modeledit/setup.cpp index 1c9edb8c3..d71be9cc6 100644 --- a/companion/src/modeledit/setup.cpp +++ b/companion/src/modeledit/setup.cpp @@ -1,92 +1,336 @@ #include "setup.h" #include "ui_setup.h" +#include "ui_setup_timer.h" +#include "ui_setup_module.h" #include "helpers.h" +TimerPanel::TimerPanel(QWidget *parent, ModelData & model, TimerData & timer): + ModelPanel(parent, model), + timer(timer), + ui(new Ui::Timer) +{ + ui->setupUi(this); + + // Mode + populateTimerSwitchCB(ui->mode, timer.mode); + + if (!GetEepromInterface()->getCapability(PermTimers)) { + ui->persistent->hide(); + ui->persistentValue->hide(); + } + + if (!GetEepromInterface()->getCapability(minuteBeep)) { + ui->minuteBeep->hide(); + } + + if (!GetEepromInterface()->getCapability(countdownBeep)) { + ui->countdownBeep->hide(); + } +} + +TimerPanel::~TimerPanel() +{ + delete ui; +} + +void TimerPanel::update() +{ + int min = timer.val / 60; + int sec = timer.val % 60; + ui->value->setTime(QTime(0, min, sec)); + + if (GetEepromInterface()->getCapability(PermTimers)) { + int sign = 1; + int pvalue = timer.pvalue; + if (pvalue < 0) { + pvalue = -pvalue; + sign = -1; + } + int hours = pvalue / 3600; + pvalue -= hours * 3600; + int minutes = pvalue / 60; + int seconds = pvalue % 60; + ui->persistent->setChecked(timer.persistent); + ui->persistentValue->setText(QString(" %1(%2:%3:%4)").arg(sign<0 ? "-" :" ").arg(hours, 2, 10, QLatin1Char('0')).arg(minutes, 2, 10, QLatin1Char('0')).arg(seconds, 2, 10, QLatin1Char('0'))); + } + + if (GetEepromInterface()->getCapability(minuteBeep)) { + ui->minuteBeep->setChecked(timer.minuteBeep); + } + + if (GetEepromInterface()->getCapability(countdownBeep)) { + ui->countdownBeep->setChecked(timer.countdownBeep); + } +} + +void TimerPanel::on_value_editingFinished() +{ + timer.val = ui->value->time().minute()*60 + ui->value->time().second(); + emit modified(); +} + +void TimerPanel::on_mode_currentIndexChanged(int index) +{ + timer.mode = TimerMode(ui->mode->itemData(index).toInt()); + emit modified(); +} + +void TimerPanel::on_persistent_toggled(bool checked) +{ + timer.persistent = checked; + emit modified(); +} + +void TimerPanel::on_minuteBeep_toggled(bool checked) +{ + timer.minuteBeep = checked; + emit modified(); +} + +void TimerPanel::on_countdownBeep_toggled(bool checked) +{ + timer.countdownBeep = checked; + emit modified(); +} + +/******************************************************************************/ + +ModulePanel::ModulePanel(QWidget *parent, ModelData & model, ModuleData & module, int moduleIdx): + ModelPanel(parent, model), + module(module), + moduleIdx(moduleIdx), + ui(new Ui::Module) +{ + ui->setupUi(this); + + QString label; + if (moduleIdx < 0) { + label = tr("Trainer Module"); + } + else { + ui->label_trainerMode->hide(); + ui->trainerMode->hide(); + if (moduleIdx == 0) + label = tr("Internal Module"); + else + label = tr("External Module"); + + } + ui->label_module->setText(label); + + // The protocols available on this board + for (int i=0; iisAvailable((Protocol)i, moduleIdx)) { + ui->protocol->addItem(getProtocolStr(i), (QVariant)i); + } + } + + if (GetEepromInterface()->getCapability(HasFailsafe)) { + for (int i=0; i<16; i++) { + QSlider * slider = new QSlider(this); + slider->setMinimumSize(QSize(30, 50)); + slider->setRange(-100, 100); + QSpinBox * spinbox = new QSpinBox(this); + spinbox->setMinimumSize(QSize(20, 0)); + spinbox->setRange(-100, 100); + slider->setProperty("index", i); + spinbox->setProperty("index", i); + failsafeSliders << slider; + failsafeSpins << spinbox; + ui->failsafesLayout->addWidget(slider, 2*(i/8), i%8, Qt::AlignHCenter); + ui->failsafesLayout->addWidget(spinbox, 1+2*(i/8), i%8, Qt::AlignHCenter); + connect(slider, SIGNAL(valueChanged(int)), this, SLOT(onFailsafeChannelChanged(int))); + connect(slider, SIGNAL(valueChanged(int)), this, SLOT(onFailsafeChannelChanged(int))); + } + } +} + +ModulePanel::~ModulePanel() +{ + delete ui; +} + +#define MASK_CHANNELS_COUNT 1 +#define MASK_RX_NUMBER 2 +#define MASK_CHANNELS_RANGE 4 +#define MASK_PPM_FIELDS 8 +#define MASK_FAILSAFES 16 + +void ModulePanel::update() +{ + unsigned int mask = 0; + Protocol protocol = (Protocol)module.protocol; + + switch (protocol) { + case OFF: + break; + case PXX_XJT_X16: + case PXX_XJT_D8: + case PXX_XJT_LR12: + case PXX_DJT: + mask |= MASK_CHANNELS_RANGE | MASK_CHANNELS_COUNT | MASK_RX_NUMBER; + if (protocol==PXX_XJT_X16) mask |= MASK_FAILSAFES; + break; + case LP45: + case DSM2: + case DSMX: + mask |= MASK_CHANNELS_RANGE | MASK_RX_NUMBER; + module.channelsCount = 8; + break; + default: + mask |= MASK_PPM_FIELDS | MASK_CHANNELS_RANGE| MASK_CHANNELS_COUNT; + break; + } + + ui->rxNumber->setEnabled(mask & MASK_RX_NUMBER); + ui->rxNumber->setValue(model.modelId); + ui->label_channelsStart->setVisible(mask & MASK_CHANNELS_RANGE); + ui->channelsStart->setVisible(mask & MASK_CHANNELS_RANGE); + ui->channelsStart->setValue(module.channelsStart+1); + ui->label_channelsCount->setVisible(mask & MASK_CHANNELS_RANGE); + ui->channelsCount->setVisible(mask & MASK_CHANNELS_RANGE); + ui->channelsCount->setEnabled(mask & MASK_CHANNELS_COUNT); + ui->channelsCount->setValue(module.channelsCount); + ui->channelsCount->setSingleStep(GetEepromInterface()->getCapability(HasPPMStart) ? 1 : 2); + + // PPM settings fields + ui->label_ppmPolarity->setVisible(mask & MASK_PPM_FIELDS); + ui->ppmPolarity->setVisible(mask & MASK_PPM_FIELDS); + ui->ppmPolarity->setCurrentIndex(module.ppmPulsePol); + ui->label_ppmDelay->setVisible(mask & MASK_PPM_FIELDS); + ui->ppmDelay->setVisible(mask & MASK_PPM_FIELDS); + ui->ppmDelay->setValue(module.ppmDelay); + ui->label_ppmFrameLength->setVisible(mask & MASK_PPM_FIELDS); + ui->ppmFrameLength->setVisible(mask & MASK_PPM_FIELDS); + ui->ppmFrameLength->setMinimum(module.channelsCount*(model.extendedLimits ? 2.250 :2)+3.5); + ui->ppmFrameLength->setMaximum(GetEepromInterface()->getCapability(PPMFrameLength)); + ui->ppmFrameLength->setValue(22.5+((double)module.ppmFrameLength)*0.5); + + if (GetEepromInterface()->getCapability(HasFailsafe)) { + ui->label_failsafeMode->setVisible(mask & MASK_FAILSAFES); + ui->failsafeMode->setVisible(mask & MASK_FAILSAFES); + ui->failsafeMode->setCurrentIndex(module.failsafeMode); + ui->label_failsafeFrame->setVisible(mask & MASK_FAILSAFES); + ui->failsafesFrame->setVisible(mask & MASK_FAILSAFES); + ui->failsafesFrame->setEnabled(module.failsafeMode == 1); + for (int i=0; isetValue(module.failsafeChannels[i]); + failsafeSpins[i]->setValue(module.failsafeChannels[i]); + } + } +} + +void ModulePanel::on_protocol_currentIndexChanged(int index) +{ + if (!lock) { + module.protocol = ui->protocol->itemData(index).toInt(); + update(); + emit modified(); + } +} + +void ModulePanel::on_ppmPolarity_currentIndexChanged(int index) +{ + module.ppmPulsePol = index; + emit modified(); +} + +void ModulePanel::on_channelsCount_editingFinished() +{ + if (!lock) { + module.channelsCount = ui->channelsCount->value(); + update(); + emit modified(); + } +} + +void ModulePanel::on_channelsStart_editingFinished() +{ + if (!lock) { + module.channelsStart = ui->channelsStart->value() - 1; + update(); + emit modified(); + } +} + +void ModulePanel::on_ppmDelay_editingFinished() +{ + if (!lock) { + // TODO only accept valid values + module.ppmDelay = ui->ppmDelay->value(); + emit modified(); + } +} + +void ModulePanel::on_rxNumber_editingFinished() +{ + model.modelId = ui->rxNumber->value(); + emit modified(); +} + +void ModulePanel::on_ppmFrameLength_editingFinished() +{ + module.ppmFrameLength = (ui->ppmFrameLength->value()-22.5) / 0.5; + emit modified(); +} + +void ModulePanel::on_failsafeMode_currentIndexChanged(int value) +{ + if (!lock) { + module.failsafeMode = value; + update(); + emit modified(); + } +} + +void ModulePanel::onFailsafeChannelChanged(int value) +{ + if (!lock) { + lock = true; + int index = sender()->property("index").toInt(); + module.failsafeChannels[index] = value; + failsafeSpins[index]->setValue(value); + failsafeSliders[index]->setValue(value); + emit modified(); + lock = false; + } +} + +/******************************************************************************/ + Setup::Setup(QWidget *parent, ModelData & model): ModelPanel(parent, model), ui(new Ui::Setup) { + memset(modules, 0, sizeof(modules)); + ui->setupUi(this); - tabModelEditSetup(); -} -Setup::~Setup() -{ - delete ui; -} + ui->name->setMaxLength(IS_TARANIS(GetEepromInterface()->getBoard()) ? 12 : 10); -void Setup::tabModelEditSetup() -{ - lock = true; + for (int i=0; igridLayout->addWidget(timers[i], 1+i, 1); + connect(timers[i], SIGNAL(modified()), this, SLOT(onChildModified())); + } - QSlider * fssld1[] = { ui->fsm1SL_1, ui->fsm1SL_2,ui->fsm1SL_3,ui->fsm1SL_4,ui->fsm1SL_5,ui->fsm1SL_6,ui->fsm1SL_7,ui->fsm1SL_8, - ui->fsm1SL_9, ui->fsm1SL_10,ui->fsm1SL_11,ui->fsm1SL_12,ui->fsm1SL_13,ui->fsm1SL_14,ui->fsm1SL_15,ui->fsm1SL_16, NULL }; - QSlider * fssld2[] = { ui->fsm2SL_1, ui->fsm2SL_2,ui->fsm2SL_3,ui->fsm2SL_4,ui->fsm2SL_5,ui->fsm2SL_6,ui->fsm2SL_7,ui->fsm2SL_8, - ui->fsm2SL_9, ui->fsm2SL_10,ui->fsm2SL_11,ui->fsm2SL_12,ui->fsm2SL_13,ui->fsm2SL_14,ui->fsm2SL_15,ui->fsm2SL_16, NULL }; - QSpinBox * fssb1[] = { ui->fsm1SB_1, ui->fsm1SB_2,ui->fsm1SB_3,ui->fsm1SB_4,ui->fsm1SB_5,ui->fsm1SB_6,ui->fsm1SB_7,ui->fsm1SB_8, - ui->fsm1SB_9, ui->fsm1SB_10,ui->fsm1SB_11,ui->fsm1SB_12,ui->fsm1SB_13,ui->fsm1SB_14,ui->fsm1SB_15,ui->fsm1SB_16, NULL }; - QSpinBox * fssb2[] = { ui->fsm2SB_1, ui->fsm2SB_2,ui->fsm2SB_3,ui->fsm2SB_4,ui->fsm2SB_5,ui->fsm2SB_6,ui->fsm2SB_7,ui->fsm2SB_8, - ui->fsm2SB_9, ui->fsm2SB_10,ui->fsm2SB_11,ui->fsm2SB_12,ui->fsm2SB_13,ui->fsm2SB_14,ui->fsm2SB_15,ui->fsm2SB_16, NULL }; - if (IS_TARANIS(GetEepromInterface()->getBoard())) { - ui->modelNameLE->setMaxLength(12); - } else { - ui->modelNameLE->setMaxLength(10); - } - ui->modelNameLE->setText(model.name); + for (int i=0; igetCapability(NumModules); i++) { + modules[i] = new ModulePanel(this, model, model.moduleData[i], i); + ui->modulesLayout->addWidget(modules[i]); + connect(modules[i], SIGNAL(modified()), this, SLOT(onChildModified())); + } - if (GetEepromInterface()->getCapability(NumModules)<2) { - ui->rf2_GB->hide(); - } + if (GetEepromInterface()->getCapability(ModelTrainerEnable)) { + modules[C9X_NUM_MODULES] = new ModulePanel(this, model, model.moduleData[C9X_NUM_MODULES], -1); + ui->modulesLayout->addWidget(modules[C9X_NUM_MODULES]); + } - if (!GetEepromInterface()->getCapability(HasFailsafe)) { - ui->FSGB_1->hide(); - ui->FSGB_2->hide(); - ui->ModelSetupTab->setTabEnabled(1,0); - } else { - if (GetEepromInterface()->getCapability(HasFailsafe)<32) { - ui->FSGB_2->hide(); - } - - for (int i=0; fssld1[i]; i++) { - fssld1[i]->setValue(model.moduleData[0].failsafeChannels[i]); - fssld2[i]->setValue(model.moduleData[1].failsafeChannels[i]); - fssb1[i]->setValue(model.moduleData[0].failsafeChannels[i]); - fssb2[i]->setValue(model.moduleData[1].failsafeChannels[i]); - connect(fssld1[i],SIGNAL(valueChanged(int)),this,SLOT(fssldValueChanged())); - connect(fssld2[i],SIGNAL(valueChanged(int)),this,SLOT(fssldValueChanged())); - connect(fssb1[i],SIGNAL(valueChanged(int)),this,SLOT(fssbValueChanged())); - connect(fssb2[i],SIGNAL(valueChanged(int)),this,SLOT(fssbValueChanged())); - connect(fssld1[i],SIGNAL(sliderReleased()),this,SLOT(fssldEdited())); - connect(fssld2[i],SIGNAL(sliderReleased()),this,SLOT(fssldEdited())); - connect(fssb1[i],SIGNAL(editingFinished()),this,SLOT(fssbEdited())); - connect(fssb2[i],SIGNAL(editingFinished()),this,SLOT(fssbEdited())); - } - } - - //timer1 mode direction value - populateTimerSwitchCB(ui->timer1ModeCB,model.timers[0].mode,GetEepromInterface()->getCapability(TimerTriggerB)); - int min = model.timers[0].val/60; - int sec = model.timers[0].val%60; - ui->timer1ValTE->setTime(QTime(0,min,sec)); - ui->timer1DirCB->setCurrentIndex(model.timers[0].dir); - if (!GetEepromInterface()->getCapability(ModelVoice)) { - ui->modelVoice_SB->hide(); - ui->modelVoice_label->hide(); - } else { - ui->modelVoice_SB->setValue(model.modelVoice+260); - } - if (!GetEepromInterface()->getCapability(PerModelThrottleInvert)) { - ui->label_thrrev->hide(); - ui->thrrevChkB->hide(); + if (!GetEepromInterface()->getCapability(ModelImage)) { + ui->image->hide(); + ui->modelImage_label->hide(); + ui->imagePreview->hide(); } else { - ui->thrrevChkB->setChecked(model.throttleReversed); - } - if (!GetEepromInterface()->getCapability(ModelImage)) { - ui->modelImage_CB->hide(); - ui->modelImage_label->hide(); - ui->modelImage_image->hide(); - } else { QStringList items; items.append(""); @@ -110,11 +354,11 @@ void Setup::tabModelEditSetup() items.append(model.bitmap); } items.sort(); - ui->modelImage_CB->clear(); + ui->image->clear(); foreach ( QString file, items ) { - ui->modelImage_CB->addItem(file); + ui->image->addItem(file); if (file==model.bitmap) { - ui->modelImage_CB->setCurrentIndex(ui->modelImage_CB->count()-1); + ui->image->setCurrentIndex(ui->image->count()-1); QString fileName=path; fileName.append(model.bitmap); fileName.append(".bmp"); @@ -126,7 +370,7 @@ void Setup::tabModelEditSetup() image.load(fileName); } if (!image.isNull()) { - ui->modelImage_image->setPixmap(QPixmap::fromImage(image.scaled( 64,32)));; + ui->imagePreview->setPixmap(QPixmap::fromImage(image.scaled( 64,32)));; } } } @@ -145,8 +389,8 @@ void Setup::tabModelEditSetup() ui->switchesStartupLayout->addItem(new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Minimum), 0, analogs+GetEepromInterface()->getCapability(RotaryEncoders)); // Startup switches warnings - ui->switchesStartupWarning_CB->setProperty("index", 0); - connect(ui->switchesStartupWarning_CB, SIGNAL(currentIndexChanged(int)), this, SLOT(startupSwitchEdited(int))); + ui->switchesStartupWarning->setProperty("index", 0); + connect(ui->switchesStartupWarning, SIGNAL(currentIndexChanged(int)), this, SLOT(startupSwitchEdited(int))); for (int i=0; igetCapability(Switches)-1; i++) { QLabel * label = new QLabel(); QSlider * slider = new QSlider(); @@ -154,6 +398,7 @@ void Setup::tabModelEditSetup() slider->setOrientation(Qt::Vertical); slider->setMinimum(0); slider->setSingleStep(1); + slider->setPageStep(1); slider->setInvertedAppearance(true); slider->setTickPosition(QSlider::TicksBothSides); slider->setTickInterval(1); @@ -174,1032 +419,61 @@ void Setup::tabModelEditSetup() } ui->switchesStartupLayout->addItem(new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Minimum), 0, GetEepromInterface()->getCapability(Switches)); - int ppmmax=GetEepromInterface()->getCapability(PPMFrameLength); - if (ppmmax>0) { - ui->ppmFrameLengthDSB->setMaximum(ppmmax); - } - if (!GetEepromInterface()->getCapability(InstantTrimSW)) { - ui->instantTrim_label->hide(); - ui->instantTrim_CB->setDisabled(true); - ui->instantTrim_CB->hide(); - } - else { - int found=false; - for (int i=0; i< C9X_MAX_CUSTOM_FUNCTIONS; i++) { - if (model.funcSw[i].func==FuncInstantTrim) { - populateSwitchCB(ui->instantTrim_CB,model.funcSw[i].swtch,POPULATE_MSWITCHES & POPULATE_ONOFF); - found=true; - break; - } - } - if (found==false) { - populateSwitchCB(ui->instantTrim_CB,RawSwitch(),POPULATE_MSWITCHES & POPULATE_ONOFF); - } - } - if (GetEepromInterface()->getCapability(NoTimerDirs)) { - ui->timer1DirCB->hide(); - ui->timer2DirCB->hide(); - } - if (GetEepromInterface()->getCapability(NoThrExpo)) { - ui->label_thrExpo->hide(); - ui->thrExpoChkB->hide(); - } - if (!(GetEepromInterface()->getCapability(ExtendedTrims)>0)) { - ui->extendedTrimsChkB->hide(); - ui->extendedTrims_label->hide(); - } else { - ui->extendedTrimsChkB->setChecked(model.extendedTrims); - } - if (!GetEepromInterface()->getCapability(HasTTrace)) { - ui->label_ttrace->hide(); - ui->ttraceCB->hide(); - } else { - populateTTraceCB(ui->ttraceCB,model.thrTraceSrc); - } - - if (!GetEepromInterface()->getCapability(PerModelThrottleWarning)) { - ui->thrwarnChkB->setDisabled(true); - ui->thrwarnChkB->hide(); - ui->thrwarnLabel->hide(); - } - else { - ui->thrwarnChkB->setChecked(model.disableThrottleWarning); - } - if (!GetEepromInterface()->getCapability(TimerTriggerB)) { - ui->timer1ModeBCB->hide(); - ui->timer1ModeB_label->hide(); - ui->timer2ModeBCB->hide(); - ui->timer2ModeB_label->hide(); - } else { - populateTimerSwitchBCB(ui->timer1ModeBCB,model.timers[0].modeB,GetEepromInterface()->getCapability(TimerTriggerB)); - populateTimerSwitchBCB(ui->timer2ModeBCB,model.timers[1].modeB,GetEepromInterface()->getCapability(TimerTriggerB)); - } - - int index=0; - int selindex; - int selindex2; - ui->protocolCB->clear(); - for (int i=0; iisAvailable((Protocol)i)) { - ui->protocolCB->addItem(getProtocolStr(i), (QVariant)i); - if (model.moduleData[0].protocol == i) { - selindex = index; - } - index++; - } - } - if (GetEepromInterface()->getCapability(NumModules)>1) { - index=0; - ui->protocolCB_2->clear(); - for (int i=0; iisAvailable((Protocol)i, 1)) { - ui->protocolCB_2->addItem(getProtocolStr(i), (QVariant)i); - if (model.moduleData[1].protocol == i) { - selindex2 = index; - } - index++; - } - } - } - if (GetEepromInterface()->getCapability(ModelTrainerEnable)) { - if (!(model.trainerMode||model.traineron)) { - ui->protocolCB_3->setCurrentIndex(0); - ui->label_PPM_3->hide(); - ui->ppmDelaySB_3->hide(); - ui->label_PPMCH_3->hide(); - ui->label_pulsePol_3->hide(); - ui->pulsePolCB_3->hide(); - ui->numChannelsSB_3->hide(); - ui->label_ppmFrameLength_3->hide(); - ui->ppmFrameLengthDSB_3->hide(); - ui->label_numChannelsStart_3->hide(); - ui->numChannelsStart_3->hide(); - } else { - ui->protocolCB_3->setCurrentIndex(1); - ui->label_PPM_3->show(); - ui->ppmDelaySB_3->show(); - ui->label_PPMCH_3->show(); - ui->label_pulsePol_3->show(); - ui->pulsePolCB_3->show(); - ui->numChannelsSB_3->show(); - ui->label_ppmFrameLength_3->show(); - ui->ppmFrameLengthDSB_3->show(); - ui->label_numChannelsStart_3->show(); - ui->numChannelsStart_3->show(); - } - on_protocolCB_3_currentIndexChanged(model.traineron||model.trainerMode); - } else { - ui->rf3_GB->hide(); - } - - ui->label_PPM->hide(); - ui->ppmDelaySB->hide(); - ui->label_PPMCH->hide(); - ui->label_pulsePol->hide(); - ui->pulsePolCB->hide(); - ui->numChannelsSB->hide(); - ui->label_ppmFrameLength->hide(); - ui->ppmFrameLengthDSB->hide(); - ui->label_DSM->hide(); - ui->DSM_Type->hide(); - ui->label_PXX->hide(); - ui->pxxRxNum->hide(); - ui->label_numChannelsStart->hide(); - ui->numChannelsStart->hide(); - ui->pxxRxNum->setEnabled(false); - ui->protocolCB->setCurrentIndex(selindex); - on_protocolCB_currentIndexChanged(selindex); - if (GetEepromInterface()->getCapability(NumModules)>1) { - ui->label_PPM_2->hide(); - ui->ppmDelaySB_2->hide(); - ui->label_PPMCH_2->hide(); - ui->label_pulsePol_2->hide(); - ui->pulsePolCB_2->hide(); - ui->numChannelsSB_2->hide(); - ui->label_ppmFrameLength_2->hide(); - ui->ppmFrameLengthDSB_2->hide(); - ui->label_DSM_2->hide(); - ui->DSM_Type_2->hide(); - ui->label_PXX_2->hide(); - ui->pxxRxNum_2->hide(); - ui->label_numChannelsStart_2->hide(); - ui->numChannelsStart_2->hide(); - ui->pxxRxNum_2->setEnabled(false); - ui->protocolCB_2->setCurrentIndex(selindex2); - on_protocolCB_2_currentIndexChanged(selindex2); - } - - //timer2 mode direction value - if (GetEepromInterface()->getCapability(Timers)<2) { - ui->timer2DirCB->hide(); - ui->timer2ValTE->hide(); - ui->timer2DirCB->hide(); - ui->timer2ModeCB->hide(); - ui->timer2ModeBCB->hide(); - ui->timer2ModeB_label->hide(); - ui->label_timer2->hide(); - } else { - populateTimerSwitchCB(ui->timer2ModeCB,model.timers[1].mode,GetEepromInterface()->getCapability(TimerTriggerB)); - min = model.timers[1].val/60; - sec = model.timers[1].val%60; - ui->timer2ValTE->setTime(QTime(0,min,sec)); - ui->timer2DirCB->setCurrentIndex(model.timers[1].dir); - } - if (!GetEepromInterface()->getCapability(PermTimers)) { - ui->timer1Perm->hide(); - ui->timer2Perm->hide(); - ui->timer1PermValue->hide(); - ui->timer2PermValue->hide(); - } else { - int sign=1; - int pvalue=model.timers[0].pvalue; - if (pvalue<0) { - pvalue=-pvalue; - sign=-1; - } - int hours=pvalue/3600; - pvalue-=hours*3600; - int minutes = pvalue/60; - int seconds = pvalue%60; - ui->timer1PermValue->setText(QString(" %1(%2:%3:%4)").arg(sign<0 ? "-" :" ").arg(hours,2,10,QLatin1Char('0')).arg(minutes,2,10,QLatin1Char('0')).arg(seconds,2,10,QLatin1Char('0'))); - // QString QString::arg ( int a, int fieldWidth = 0, int base = 10, const QChar & fillChar = QLatin1Char( ' ' ) ) const - sign=1; - pvalue=model.timers[1].pvalue; - if (pvalue<0) { - pvalue=-pvalue; - sign=-1; - } - hours=pvalue/3600; - pvalue-=hours*3600; - minutes = pvalue/60; - seconds = pvalue%60; - ui->timer2PermValue->setText(QString(" %1(%2:%3:%4)").arg(sign<0 ? "-" :" ").arg(hours,2,10,QLatin1Char('0')).arg(minutes,2,10,QLatin1Char('0')).arg(seconds,2,10,QLatin1Char('0'))); - ui->timer1Perm->setChecked(model.timers[0].persistent); - ui->timer2Perm->setChecked(model.timers[1].persistent); - } - if (!GetEepromInterface()->getCapability(minuteBeep)) { - ui->timer1Minute->hide(); - ui->timer2Minute->hide(); - } else { - ui->timer1Minute->setChecked(model.timers[0].minuteBeep); - ui->timer2Minute->setChecked(model.timers[1].minuteBeep); - } - - if (!GetEepromInterface()->getCapability(countdownBeep)) { - ui->timer1CountDownBeep->hide(); - ui->timer2CountDownBeep->hide(); - } else { - ui->timer1CountDownBeep->setChecked(model.timers[0].countdownBeep); - ui->timer2CountDownBeep->setChecked(model.timers[1].countdownBeep); - } - - //trim inc, thro trim, thro expo, instatrim - ui->trimIncCB->setCurrentIndex(model.trimInc); - ui->thrExpoChkB->setChecked(model.thrExpo); - ui->thrTrimChkB->setChecked(model.thrTrim); - - // PPM settings fields - ui->ppmDelaySB->setEnabled(model.moduleData[0].protocol == PPM); - ui->pulsePolCB->setCurrentIndex(model.moduleData[0].ppmPulsePol); - ui->ppmDelaySB->setEnabled(model.moduleData[0].protocol == PPM); - ui->ppmDelaySB->setValue(model.moduleData[0].ppmDelay); - // TODO? ui->numChannelsSB->setEnabled(model.moduleData[0].protocol == PPM); - - ui->extendedLimitsChkB->setChecked(model.extendedLimits); - ui->T2ThrTrgChkB->setChecked(model.t2throttle); - if (!GetEepromInterface()->getCapability(Timer2ThrTrig)) { - ui->T2ThrTrg->hide(); - ui->T2ThrTrgChkB->hide(); - } - ui->ppmFrameLengthDSB->setValue(22.5+((double)model.moduleData[0].ppmFrameLength)*0.5); - if (!GetEepromInterface()->getCapability(PPMExtCtrl)) { - ui->ppmFrameLengthDSB->hide(); - ui->label_ppmFrameLength->hide(); - } - switch (model.moduleData[0].protocol) { - case PXX_DJT: - case PXX_XJT_X16: - case PXX_XJT_D8: - case PXX_XJT_LR12: - ui->pxxRxNum->setMinimum(0); - ui->pxxRxNum->setValue((model.modelId)); - break; - case DSM2: - if (!GetEepromInterface()->getCapability(DSM2Indexes)) { - ui->pxxRxNum->setValue(1); - } - else { - ui->pxxRxNum->setMinimum(0); - ui->pxxRxNum->setValue((model.modelId)); - } - ui->numChannelsSB->setValue(8); - break; - default: - ui->label_DSM->hide(); - ui->DSM_Type->hide(); - ui->DSM_Type->setEnabled(false); - ui->label_PXX->hide(); - ui->pxxRxNum->hide(); - ui->pxxRxNum->setEnabled(false); - ui->numChannelsSB->setValue(model.moduleData[0].channelsCount); - break; - } lock = false; } -void Setup::on_protocolCB_currentIndexChanged(int index) +Setup::~Setup() { - Protocol protocol = (Protocol)ui->protocolCB->itemData(index).toInt(); - - if (!lock) { - model.moduleData[0].protocol = protocol; - emit modified(); - } - - if (protocol==PXX_XJT_D8 || protocol==OFF) { - ui->FSGB_1->hide(); - } else { - ui->fsm1CB->setCurrentIndex(model.moduleData[0].failsafeMode); - on_fsm1CB_currentIndexChanged(model.moduleData[0].failsafeMode); - ui->FSGB_1->show(); - } - - ui->ppmDelaySB->setEnabled(!protocol); - ui->numChannelsSB->setEnabled(!protocol); - - if (GetEepromInterface()->getCapability(HasPPMStart)) { - ui->numChannelsSB->setSingleStep(1); - } else { - ui->numChannelsSB->setSingleStep(2); - } - - switch (protocol) { - case OFF: - ui->label_PPM->hide(); - ui->ppmDelaySB->hide(); - ui->label_PPMCH->hide(); - ui->label_pulsePol->hide(); - ui->pulsePolCB->hide(); - ui->numChannelsSB->hide(); - ui->label_ppmFrameLength->hide(); - ui->ppmFrameLengthDSB->hide(); - ui->label_DSM->hide(); - ui->DSM_Type->hide(); - ui->label_PXX->hide(); - ui->pxxRxNum->hide(); - ui->label_numChannelsStart->hide(); - ui->numChannelsStart->hide(); - break; - case PXX_XJT_X16: - case PXX_XJT_D8: - case PXX_XJT_LR12: - case PXX_DJT: - ui->label_PPM->hide(); - ui->ppmDelaySB->hide(); - ui->ppmDelaySB->setEnabled(false); - ui->label_PPMCH->show(); - ui->label_pulsePol->hide(); - ui->pulsePolCB->hide(); - ui->numChannelsSB->show(); - ui->numChannelsSB->setEnabled(true); - ui->label_ppmFrameLength->hide(); - ui->ppmFrameLengthDSB->hide(); - ui->ppmFrameLengthDSB->setEnabled(false); - ui->label_DSM->hide(); - ui->DSM_Type->hide(); - ui->DSM_Type->setEnabled(false); - ui->label_PXX->show(); - ui->pxxRxNum->setMinimum(0); - ui->pxxRxNum->show(); - ui->pxxRxNum->setEnabled(true); - ui->pxxRxNum->setValue((model.moduleData[0].channelsCount-8)/2+1); - ui->label_numChannelsStart->show(); - ui->numChannelsStart->show(); - ui->numChannelsStart->setValue(model.moduleData[0].channelsStart+1); - ui->numChannelsSB->setMinimum(model.moduleData[0].channelsStart+4); - ui->numChannelsSB->setValue(model.moduleData[0].channelsStart+model.moduleData[0].channelsCount); - break; - case LP45: - case DSM2: - case DSMX: - ui->label_pulsePol->hide(); - ui->pulsePolCB->hide(); - ui->label_PPM->hide(); - ui->ppmDelaySB->hide(); - ui->ppmDelaySB->setEnabled(false); - ui->label_PPMCH->hide(); - ui->label_numChannelsStart->hide(); - ui->numChannelsStart->hide(); - ui->numChannelsSB->hide(); - ui->numChannelsSB->setEnabled(false); - ui->label_ppmFrameLength->hide(); - ui->ppmFrameLengthDSB->hide(); - ui->ppmFrameLengthDSB->setEnabled(false); - if (!GetEepromInterface()->getCapability(DSM2Indexes)) { - ui->label_PXX->hide(); - ui->pxxRxNum->hide(); - ui->pxxRxNum->setEnabled(false); - } - else { - ui->pxxRxNum->setMinimum(0); - ui->pxxRxNum->setValue(model.modelId); - ui->label_PXX->show(); - ui->pxxRxNum->show(); - ui->pxxRxNum->setEnabled(true); - } - ui->DSM_Type->setEnabled(false); - ui->label_DSM->hide(); - ui->DSM_Type->hide(); - break; - default: - if (GetEepromInterface()->getCapability(HasPPMStart)) { - ui->label_numChannelsStart->show(); - ui->numChannelsStart->show(); - } - else { - ui->label_numChannelsStart->hide(); - ui->numChannelsStart->hide(); - } - ui->numChannelsStart->setValue(model.moduleData[0].channelsStart+1); - ui->numChannelsSB->setMinimum(model.moduleData[0].channelsStart+4); - ui->numChannelsSB->setValue(model.moduleData[0].channelsStart + model.moduleData[0].channelsCount); - ui->label_pulsePol->show(); - ui->pulsePolCB->show(); - ui->label_DSM->hide(); - ui->DSM_Type->hide(); - ui->DSM_Type->setEnabled(false); - ui->label_PXX->hide(); - ui->pxxRxNum->hide(); - ui->pxxRxNum->setEnabled(false); - ui->label_PPM->show(); - ui->ppmDelaySB->show(); - ui->ppmDelaySB->setEnabled(true); - ui->label_PPMCH->show(); - ui->numChannelsSB->show(); - ui->numChannelsSB->setEnabled(true); - ui->ppmFrameLengthDSB->setEnabled(true); - ui->ppmFrameLengthDSB->setMinimum(model.moduleData[0].channelsCount*(model.extendedLimits ? 2.250 :2)+3.5); - if (GetEepromInterface()->getCapability(PPMExtCtrl)) { - ui->ppmFrameLengthDSB->show(); - ui->label_ppmFrameLength->show(); - } - - break; - } + delete ui; } -void Setup::on_protocolCB_2_currentIndexChanged(int index) -{ - Protocol protocol = (Protocol)ui->protocolCB_2->itemData(index).toInt(); - - if (!lock) { - model.moduleData[1].protocol = protocol; - emit modified(); - } - - if (protocol==PXX_XJT_X16 || protocol==PXX_XJT_LR12) { - ui->FSGB_2->show(); - ui->fsm2CB->setCurrentIndex(model.moduleData[1].failsafeMode); - on_fsm2CB_currentIndexChanged(model.moduleData[1].failsafeMode); - } - else { - ui->FSGB_2->hide(); - } - - ui->ppmDelaySB_2->setEnabled(!protocol); - ui->numChannelsSB_2->setEnabled(!protocol); - - if (GetEepromInterface()->getCapability(HasPPMStart)) { - ui->numChannelsSB_2->setSingleStep(1); - } else { - ui->numChannelsSB_2->setSingleStep(2); - } - - switch (protocol) { - case OFF: - ui->label_PPM_2->hide(); - ui->ppmDelaySB_2->hide(); - ui->label_PPMCH_2->hide(); - ui->label_pulsePol_2->hide(); - ui->pulsePolCB_2->hide(); - ui->numChannelsSB_2->hide(); - ui->label_ppmFrameLength_2->hide(); - ui->ppmFrameLengthDSB_2->hide(); - ui->label_DSM_2->hide(); - ui->DSM_Type_2->hide(); - ui->label_PXX_2->hide(); - ui->pxxRxNum_2->hide(); - ui->label_numChannelsStart_2->hide(); - ui->numChannelsStart_2->hide(); - break; - case PXX_XJT_X16: - case PXX_XJT_D8: - case PXX_XJT_LR12: - case PXX_DJT: - ui->label_PPM_2->hide(); - ui->ppmDelaySB_2->hide(); - ui->ppmDelaySB_2->setEnabled(false); - ui->label_PPMCH_2->show(); - ui->label_pulsePol_2->hide(); - ui->pulsePolCB_2->hide(); - ui->numChannelsSB_2->show(); - ui->numChannelsSB_2->setEnabled(true); - ui->label_ppmFrameLength_2->hide(); - ui->ppmFrameLengthDSB_2->hide(); - ui->ppmFrameLengthDSB_2->setEnabled(false); - ui->label_DSM_2->hide(); - ui->DSM_Type_2->hide(); - ui->DSM_Type_2->setEnabled(false); - ui->label_PXX_2->show(); - ui->pxxRxNum_2->setMinimum(0); - ui->pxxRxNum_2->show(); - ui->pxxRxNum_2->setEnabled(true); - ui->pxxRxNum_2->setValue(model.modelId); - ui->label_numChannelsStart_2->show(); - ui->numChannelsStart_2->show(); - ui->numChannelsStart_2->setValue(model.moduleData[1].channelsStart+1); - ui->numChannelsSB_2->setMinimum(model.moduleData[1].channelsStart+4); - ui->numChannelsSB_2->setValue(model.moduleData[1].channelsStart+model.moduleData[1].channelsCount); - break; - case LP45: - case DSM2: - case DSMX: - ui->label_pulsePol_2->hide(); - ui->pulsePolCB_2->hide(); - ui->label_PPM_2->hide(); - ui->ppmDelaySB_2->hide(); - ui->ppmDelaySB_2->setEnabled(false); - ui->label_PPMCH_2->hide(); - ui->numChannelsSB_2->hide(); - ui->numChannelsSB_2->setEnabled(false); - ui->label_ppmFrameLength_2->hide(); - ui->ppmFrameLengthDSB_2->hide(); - ui->ppmFrameLengthDSB_2->setEnabled(false); - if (!GetEepromInterface()->getCapability(DSM2Indexes)) { - ui->label_PXX_2->hide(); - ui->pxxRxNum_2->hide(); - ui->pxxRxNum_2->setEnabled(false); - } else { - ui->pxxRxNum_2->setMinimum(0); - ui->pxxRxNum_2->setValue(model.modelId); - ui->label_PXX_2->show(); - ui->pxxRxNum_2->show(); - ui->pxxRxNum_2->setEnabled(true); - } - ui->DSM_Type_2->setEnabled(false); - ui->label_DSM_2->hide(); - ui->DSM_Type_2->hide(); - break; - default: - if (GetEepromInterface()->getCapability(HasPPMStart)) { - ui->label_numChannelsStart_2->show(); - ui->numChannelsStart_2->show(); - } else { - ui->label_numChannelsStart_2->hide(); - ui->numChannelsStart_2->hide(); - } - ui->numChannelsStart_2->setValue(model.moduleData[1].channelsStart+1); - ui->numChannelsSB_2->setMinimum(model.moduleData[1].channelsStart+4); - ui->numChannelsSB_2->setValue(model.moduleData[1].channelsStart+model.moduleData[1].channelsCount); - ui->label_pulsePol_2->show(); - ui->pulsePolCB_2->show(); - ui->pulsePolCB_2->setCurrentIndex(model.moduleData[1].ppmPulsePol); - ui->label_DSM_2->hide(); - ui->DSM_Type_2->hide(); - ui->DSM_Type_2->setEnabled(false); - ui->label_PXX_2->hide(); - ui->pxxRxNum_2->hide(); - ui->pxxRxNum_2->setEnabled(false); - ui->label_PPM_2->show(); - ui->ppmDelaySB_2->show(); - ui->ppmDelaySB_2->setEnabled(true); - ui->ppmDelaySB_2->setValue(model.moduleData[1].ppmDelay); - ui->label_PPMCH_2->show(); - ui->numChannelsSB_2->show(); - ui->numChannelsSB_2->setEnabled(true); - ui->ppmFrameLengthDSB_2->setEnabled(true); - ui->ppmFrameLengthDSB_2->setMinimum(model.moduleData[1].channelsCount*(model.extendedLimits ? 2.250 :2)+3.5); - if (GetEepromInterface()->getCapability(PPMExtCtrl)) { - ui->ppmFrameLengthDSB_2->show(); - ui->label_ppmFrameLength_2->show(); - ui->ppmFrameLengthDSB_2->setValue(model.moduleData[1].ppmFrameLength/2.0+22.5); - } - break; - } -} - -void Setup::on_protocolCB_3_currentIndexChanged(int index) -{ - Protocol protocol = (Protocol)ui->protocolCB_3->currentIndex(); - - if (!lock) { - model.moduleData[2].protocol = protocol; - model.trainerMode = ui->protocolCB_3->currentIndex(); - emit modified(); - } - - switch (index) { - case 0: - ui->label_PPM_3->hide(); - ui->ppmDelaySB_3->hide(); - ui->label_PPMCH_3->hide(); - ui->label_pulsePol_3->hide(); - ui->pulsePolCB_3->hide(); - ui->numChannelsSB_3->hide(); - ui->label_ppmFrameLength_3->hide(); - ui->ppmFrameLengthDSB_3->hide(); - ui->label_numChannelsStart_3->hide(); - ui->numChannelsStart_3->hide(); - break; - default: - ui->label_PPM_3->show(); - ui->ppmDelaySB_3->show(); - ui->label_PPMCH_3->show(); - ui->label_pulsePol_3->show(); - ui->pulsePolCB_3->show(); - ui->numChannelsSB_3->show(); - ui->label_ppmFrameLength_3->show(); - ui->ppmFrameLengthDSB_3->show(); - ui->label_numChannelsStart_3->show(); - ui->numChannelsStart_3->show(); - ui->numChannelsStart_3->setValue(model.moduleData[2].channelsStart+1); - ui->numChannelsSB_3->setMinimum(model.moduleData[2].channelsStart+4); - ui->numChannelsSB_3->setValue(model.moduleData[2].channelsStart+model.moduleData[2].channelsCount); - ui->pulsePolCB_3->setCurrentIndex(model.moduleData[2].ppmPulsePol); - ui->ppmDelaySB_3->setValue(model.moduleData[2].ppmDelay); - ui->ppmFrameLengthDSB_3->setMinimum(model.moduleData[2].channelsCount*(model.extendedLimits ? 2.250 :2)+3.5); - if (GetEepromInterface()->getCapability(PPMExtCtrl)) { - ui->ppmFrameLengthDSB_3->show(); - ui->label_ppmFrameLength_3->show(); - ui->ppmFrameLengthDSB_3->setValue(model.moduleData[2].ppmFrameLength/2.0+22.5); - } - break; - } -} - -void Setup::on_T2ThrTrgChkB_toggled(bool checked) -{ - model.t2throttle = checked; - emit modified(); -} - -void Setup::on_extendedLimitsChkB_toggled(bool checked) +void Setup::on_extendedLimits_toggled(bool checked) { model.extendedLimits = checked; emit modified(); } -void Setup::on_thrwarnChkB_toggled(bool checked) +void Setup::on_throttleWarning_toggled(bool checked) { model.disableThrottleWarning = checked; emit modified(); } -void Setup::on_thrrevChkB_toggled(bool checked) +void Setup::on_throttleReverse_toggled(bool checked) { model.throttleReversed = checked; emit modified(); } -void Setup::on_extendedTrimsChkB_toggled(bool checked) +void Setup::on_extendedTrims_toggled(bool checked) { model.extendedTrims = checked; emit modified(); } -void Setup::on_fsm1CB_currentIndexChanged(int index) +void Setup::on_trimIncrement_currentIndexChanged(int index) { - QSpinBox * fssb[] = { ui->fsm1SB_1, ui->fsm1SB_2,ui->fsm1SB_3,ui->fsm1SB_4,ui->fsm1SB_5,ui->fsm1SB_6,ui->fsm1SB_7,ui->fsm1SB_8, - ui->fsm1SB_9, ui->fsm1SB_10,ui->fsm1SB_11,ui->fsm1SB_12,ui->fsm1SB_13,ui->fsm1SB_14,ui->fsm1SB_15,ui->fsm1SB_16, NULL }; - QSlider * fssld[] = { ui->fsm1SL_1, ui->fsm1SL_2,ui->fsm1SL_3,ui->fsm1SL_4,ui->fsm1SL_5,ui->fsm1SL_6,ui->fsm1SL_7,ui->fsm1SL_8, - ui->fsm1SL_9, ui->fsm1SL_10,ui->fsm1SL_11,ui->fsm1SL_12,ui->fsm1SL_13,ui->fsm1SL_14,ui->fsm1SL_15,ui->fsm1SL_16, NULL }; - model.moduleData[0].failsafeMode=index; - for (int i=0; fssb[i]; i++) { - if (index==1) { - fssb[i]->setEnabled(true); - fssld[i]->setEnabled(true); - } else { - fssb[i]->setDisabled(true); - fssld[i]->setDisabled(true); - } - } + model.trimInc = index; emit modified(); } -void Setup::on_fsm2CB_currentIndexChanged(int index) +void Setup::on_throttleSource_currentIndexChanged(int index) { - QSpinBox * fssb[] = { ui->fsm2SB_1, ui->fsm2SB_2,ui->fsm2SB_3,ui->fsm2SB_4,ui->fsm2SB_5,ui->fsm2SB_6,ui->fsm2SB_7,ui->fsm2SB_8, - ui->fsm2SB_9, ui->fsm2SB_10,ui->fsm2SB_11,ui->fsm2SB_12,ui->fsm2SB_13,ui->fsm2SB_14,ui->fsm2SB_15,ui->fsm2SB_16, NULL }; - QSlider * fssld[] = { ui->fsm2SL_1, ui->fsm2SL_2,ui->fsm2SL_3,ui->fsm2SL_4,ui->fsm2SL_5,ui->fsm2SL_6,ui->fsm2SL_7,ui->fsm2SL_8, - ui->fsm2SL_9, ui->fsm2SL_10,ui->fsm2SL_11,ui->fsm2SL_12,ui->fsm2SL_13,ui->fsm2SL_14,ui->fsm2SL_15,ui->fsm2SL_16, NULL }; - model.moduleData[1].failsafeMode=index; - for (int i=0; fssb[i]; i++) { - if (index==1) { - fssb[i]->setEnabled(true); - fssld[i]->setEnabled(true); - } else { - fssb[i]->setDisabled(true); - fssld[i]->setDisabled(true); - } - } + model.thrTraceSrc = index; emit modified(); } -void Setup::fssldValueChanged() +void Setup::on_name_editingFinished() +{ + int length = ui->name->maxLength(); + strncpy(model.name, ui->name->text().toAscii(), length); + emit modified(); +} + +void Setup::on_image_currentIndexChanged(int index) { if (!lock) { - lock = true; - QSpinBox * fssb1[] = { ui->fsm1SB_1, ui->fsm1SB_2,ui->fsm1SB_3,ui->fsm1SB_4,ui->fsm1SB_5,ui->fsm1SB_6,ui->fsm1SB_7,ui->fsm1SB_8, - ui->fsm1SB_9, ui->fsm1SB_10,ui->fsm1SB_11,ui->fsm1SB_12,ui->fsm1SB_13,ui->fsm1SB_14,ui->fsm1SB_15,ui->fsm1SB_16, NULL }; - QSpinBox * fssb2[] = { ui->fsm2SB_1, ui->fsm2SB_2,ui->fsm2SB_3,ui->fsm2SB_4,ui->fsm2SB_5,ui->fsm2SB_6,ui->fsm2SB_7,ui->fsm2SB_8, - ui->fsm2SB_9, ui->fsm2SB_10,ui->fsm2SB_11,ui->fsm2SB_12,ui->fsm2SB_13,ui->fsm2SB_14,ui->fsm2SB_15,ui->fsm2SB_16, NULL }; - QSlider *sl = qobject_cast(sender()); - int fsId=sl->objectName().mid(sl->objectName().lastIndexOf("_")+1).toInt()-1; - int moduleid=sl->objectName().mid(3,1).toInt(); - if (moduleid==1) { - fssb1[fsId]->setValue(sl->value()); - } else { - fssb2[fsId]->setValue(sl->value()); - } - lock = false; - } -} - -void Setup::fssbValueChanged() -{ - if (!lock) { - lock = true; - QSlider * fssld1[] = { ui->fsm1SL_1, ui->fsm1SL_2,ui->fsm1SL_3,ui->fsm1SL_4,ui->fsm1SL_5,ui->fsm1SL_6,ui->fsm1SL_7,ui->fsm1SL_8, - ui->fsm1SL_9, ui->fsm1SL_10,ui->fsm1SL_11,ui->fsm1SL_12,ui->fsm1SL_13,ui->fsm1SL_14,ui->fsm1SL_15,ui->fsm1SL_16, NULL }; - QSlider * fssld2[] = { ui->fsm2SL_1, ui->fsm2SL_2,ui->fsm2SL_3,ui->fsm2SL_4,ui->fsm2SL_5,ui->fsm2SL_6,ui->fsm2SL_7,ui->fsm2SL_8, - ui->fsm2SL_9, ui->fsm2SL_10,ui->fsm2SL_11,ui->fsm2SL_12,ui->fsm2SL_13,ui->fsm2SL_14,ui->fsm2SL_15,ui->fsm2SL_16, NULL }; - QSpinBox *sb = qobject_cast(sender()); - int fsId=sb->objectName().mid(sb->objectName().lastIndexOf("_")+1).toInt()-1; - int moduleid=sb->objectName().mid(3,1).toInt(); - if (moduleid==1) { - fssld1[fsId]->setValue(sb->value()); - } else { - fssld2[fsId]->setValue(sb->value()); - } - lock = false; - } -} - -void Setup::fssldEdited() -{ - QSlider *sl = qobject_cast(sender()); - int fsId=sl->objectName().mid(sl->objectName().lastIndexOf("_")+1).toInt()-1; - int moduleid=sl->objectName().mid(3,1).toInt(); - if (moduleid==1) { - model.moduleData[0].failsafeChannels[fsId]=sl->value(); - } else { - model.moduleData[1].failsafeChannels[fsId]=sl->value(); - } - emit modified(); -} - -void Setup::fssbEdited() -{ - QSpinBox *sb = qobject_cast(sender()); - int fsId=sb->objectName().mid(sb->objectName().lastIndexOf("_")+1).toInt()-1; - int moduleid=sb->objectName().mid(3,1).toInt(); - if (moduleid==1) { - model.moduleData[0].failsafeChannels[fsId]=sb->value(); - } else { - model.moduleData[1].failsafeChannels[fsId]=sb->value(); - } - emit modified(); -} - -void Setup::on_modelVoice_SB_editingFinished() -{ - model.modelVoice=ui->modelVoice_SB->value()-260; - emit modified(); -} - -void Setup::on_timer1Perm_toggled(bool checked) -{ - model.timers[0].persistent=checked; - emit modified(); -} - -void Setup::on_timer2Perm_toggled(bool checked) -{ - model.timers[1].persistent=checked; - emit modified(); -} - -void Setup::on_timer1Minute_toggled(bool checked) -{ - model.timers[0].minuteBeep=checked; - emit modified(); -} - -void Setup::on_timer2Minute_toggled(bool checked) -{ - model.timers[1].minuteBeep=checked; - emit modified(); -} - -void Setup::on_timer1CountDownBeep_toggled(bool checked) -{ - model.timers[0].countdownBeep=checked; - emit modified(); -} - -void Setup::on_timer2CountDownBeep_toggled(bool checked) -{ - model.timers[1].countdownBeep=checked; - emit modified(); -} - -void Setup::on_timer1ModeCB_currentIndexChanged(int index) -{ - model.timers[0].mode = TimerMode(ui->timer1ModeCB->itemData(index).toInt()); - emit modified(); -} - -void Setup::on_timer1DirCB_currentIndexChanged(int index) -{ - model.timers[0].dir = index; - emit modified(); -} - -void Setup::on_timer1ValTE_editingFinished() -{ - model.timers[0].val = ui->timer1ValTE->time().minute()*60 + ui->timer1ValTE->time().second(); - emit modified(); -} - -void Setup::on_timer1ModeBCB_currentIndexChanged(int index) -{ - model.timers[0].modeB = ui->timer1ModeBCB->itemData(index).toInt(); - emit modified(); -} - -void Setup::on_timer2ModeCB_currentIndexChanged(int index) -{ - model.timers[1].mode = TimerMode(ui->timer2ModeCB->itemData(index).toInt()); - emit modified(); -} - -void Setup::on_timer2DirCB_currentIndexChanged(int index) -{ - model.timers[1].dir = index; - emit modified(); -} - -void Setup::on_timer2ValTE_editingFinished() -{ - model.timers[1].val = ui->timer2ValTE->time().minute()*60 + ui->timer2ValTE->time().second(); - emit modified(); -} - -void Setup::on_timer2ModeBCB_currentIndexChanged(int index) -{ - model.timers[1].modeB = ui->timer2ModeBCB->itemData(index).toInt(); - emit modified(); -} - -void Setup::on_trimIncCB_currentIndexChanged(int index) -{ - model.trimInc = index; - emit modified(); -} - -void Setup::on_ttraceCB_currentIndexChanged(int index) -{ - model.thrTraceSrc = index; - emit modified(); -} - -void Setup::on_pulsePolCB_currentIndexChanged(int index) -{ - model.moduleData[0].ppmPulsePol = index; - emit modified(); -} - -void Setup::on_pulsePolCB_2_currentIndexChanged(int index) -{ - model.moduleData[1].ppmPulsePol = index; - emit modified(); -} - -void Setup::on_pulsePolCB_3_currentIndexChanged(int index) -{ - model.moduleData[2].ppmPulsePol = index; - emit modified(); -} - -void Setup::on_numChannelsSB_editingFinished() -{ - // TODO only accept valid values - model.moduleData[0].channelsCount = 1+ui->numChannelsSB->value()-ui->numChannelsStart->value(); - ui->ppmFrameLengthDSB->setMinimum(model.moduleData[0].channelsCount*(model.extendedLimits ? 2.250 :2)+3.5); - emit modified(); -} - -void Setup::on_numChannelsSB_2_editingFinished() -{ - // TODO only accept valid values - model.moduleData[1].channelsCount = 1+ui->numChannelsSB_2->value()-ui->numChannelsStart_2->value(); - ui->ppmFrameLengthDSB_2->setMinimum(model.moduleData[1].channelsCount*(model.extendedLimits ? 2.250 :2.0)+3.5); - emit modified(); -} - -void Setup::on_numChannelsSB_3_editingFinished() -{ - // TODO only accept valid values - model.moduleData[2].channelsCount = 1+ui->numChannelsSB_3->value()-ui->numChannelsStart_3->value(); - ui->ppmFrameLengthDSB_3->setMinimum(model.moduleData[2].channelsCount*(model.extendedLimits ? 2.250 :2)+3.5); - emit modified(); -} - -void Setup::on_numChannelsStart_editingFinished() -{ - // TODO only accept valid values - model.moduleData[0].channelsStart = ui->numChannelsStart->value()-1; - ui->numChannelsSB->setMinimum(model.moduleData[0].channelsStart+4); - ui->numChannelsSB->setValue(model.moduleData[0].channelsStart+model.moduleData[0].channelsCount); - emit modified(); -} - -void Setup::on_numChannelsStart_2_editingFinished() -{ - // TODO only accept valid values - model.moduleData[1].channelsStart = ui->numChannelsStart_2->value()-1; - ui->numChannelsSB_2->setMinimum(model.moduleData[1].channelsStart+4); - ui->numChannelsSB_2->setValue(model.moduleData[1].channelsStart+model.moduleData[1].channelsCount); - emit modified(); -} - -void Setup::on_numChannelsStart_3_editingFinished() -{ - // TODO only accept valid values - model.moduleData[2].channelsStart = ui->numChannelsStart_3->value()-1; - ui->numChannelsSB_3->setMinimum(model.moduleData[2].channelsStart+4); - ui->numChannelsSB_3->setValue(model.moduleData[2].channelsStart+model.moduleData[2].channelsCount); - emit modified(); -} - -void Setup::on_ppmDelaySB_editingFinished() -{ - if (!lock) { - // TODO only accept valid values - model.moduleData[0].ppmDelay = ui->ppmDelaySB->value(); - emit modified(); - } -} - -void Setup::on_ppmDelaySB_2_editingFinished() -{ - if (!lock) { - // TODO only accept valid values - model.moduleData[1].ppmDelay = ui->ppmDelaySB_2->value(); - emit modified(); - } -} - -void Setup::on_ppmDelaySB_3_editingFinished() -{ - if (!lock) { - // TODO only accept valid values - model.moduleData[2].ppmDelay = ui->ppmDelaySB_3->value(); - emit modified(); - } -} - -void Setup::on_DSM_Type_currentIndexChanged(int index) -{ - if (!lock) { - // model.moduleData[0].channelsCount = (index*2)+8; - emit modified(); - } -} - -void Setup::on_DSM_Type_2_currentIndexChanged(int index) -{ - if (!lock) { - // model.moduleData[1].channelsCount = (index*2)+8; - emit modified(); - } -} - -void Setup::on_pxxRxNum_editingFinished() -{ - if (!lock) { - if (!GetEepromInterface()->getCapability(DSM2Indexes)) { - // model.moduleData[0].channelsCount = (ui->pxxRxNum->value()-1)*2+8; - } - else { - model.modelId = ui->pxxRxNum->value(); - } - emit modified(); - } -} - -void Setup::on_pxxRxNum_2_editingFinished() -{ - if (!lock) { - /* if (!GetEepromInterface()->getCapability(DSM2Indexes)) { - model.moduleData[1].channelsCount = (ui->pxxRxNum_2->value()-1)*2+8; - } */ - emit modified(); - } -} - -void Setup::on_ppmFrameLengthDSB_editingFinished() -{ - model.moduleData[0].ppmFrameLength = (ui->ppmFrameLengthDSB->value()-22.5)/0.5; - emit modified(); -} - -void Setup::on_ppmFrameLengthDSB_2_editingFinished() -{ - model.moduleData[1].ppmFrameLength = (ui->ppmFrameLengthDSB_2->value()-22.5)/0.5; - emit modified(); -} - -void Setup::on_ppmFrameLengthDSB_3_editingFinished() -{ - model.moduleData[2].ppmFrameLength = (ui->ppmFrameLengthDSB_3->value()-22.5)/0.5; - emit modified(); -} - -void Setup::on_instantTrim_CB_currentIndexChanged(int index) -{ - if (!lock) { - bool found=false; - for (int i=0; i< C9X_MAX_CUSTOM_FUNCTIONS; i++) { - if (model.funcSw[i].func==FuncInstantTrim) { - model.funcSw[i].swtch = RawSwitch(ui->instantTrim_CB->itemData(ui->instantTrim_CB->currentIndex()).toInt()); - found=true; - } - } - if (found==false) { - for (int i=0; i< C9X_MAX_CUSTOM_FUNCTIONS; i++) { - if (model.funcSw[i].swtch==RawSwitch()) { - model.funcSw[i].swtch = RawSwitch(ui->instantTrim_CB->itemData(ui->instantTrim_CB->currentIndex()).toInt()); - model.funcSw[i].func = FuncInstantTrim; - break; - } - } - } - emit modified(); - } -} - -void Setup::on_modelNameLE_editingFinished() -{ - int length=ui->modelNameLE->maxLength(); - strncpy(model.name, ui->modelNameLE->text().toAscii(), length); - emit modified(); -} - -void Setup::on_modelImage_CB_currentIndexChanged(int index) -{ - if (!lock) { - strncpy(model.bitmap, ui->modelImage_CB->currentText().toAscii(), GetEepromInterface()->getCapability(VoicesMaxLength)); + strncpy(model.bitmap, ui->image->currentText().toAscii(), GetEepromInterface()->getCapability(VoicesMaxLength)); QSettings settings("companion9x", "companion9x"); QString path=settings.value("sdPath", ".").toString(); path.append("/BMP/"); @@ -1216,14 +490,14 @@ void Setup::on_modelImage_CB_currentIndexChanged(int index) image.load(fileName); } if (!image.isNull()) { - ui->modelImage_image->setPixmap(QPixmap::fromImage(image.scaled( 64,32)));; + ui->imagePreview->setPixmap(QPixmap::fromImage(image.scaled( 64,32)));; } else { - ui->modelImage_image->clear(); + ui->imagePreview->clear(); } } else { - ui->modelImage_image->clear(); + ui->imagePreview->clear(); } emit modified(); } @@ -1231,8 +505,27 @@ void Setup::on_modelImage_CB_currentIndexChanged(int index) void Setup::update() { + ui->name->setText(model.name); + + ui->throttleReverse->setChecked(model.throttleReversed); + populateTTraceCB(ui->throttleSource, model.thrTraceSrc); + ui->throttleWarning->setChecked(model.disableThrottleWarning); + + //trim inc, thro trim, thro expo, instatrim + ui->trimIncrement->setCurrentIndex(model.trimInc); + ui->throttleTrim->setChecked(model.thrTrim); + ui->extendedLimits->setChecked(model.extendedLimits); + ui->extendedTrims->setChecked(model.extendedTrims); + updateBeepCenter(); updateStartupSwitches(); + + for (int i=0; iupdate(); + + for (int i=0; iupdate(); } void Setup::updateBeepCenter() @@ -1248,7 +541,7 @@ void Setup::updateStartupSwitches() unsigned int switchStates = model.switchWarningStates; bool enabled = !(switchStates & 0x01); - ui->switchesStartupWarning_CB->setCurrentIndex(switchStates & 0x01); + ui->switchesStartupWarning->setCurrentIndex(switchStates & 0x01); switchStates >>= 1; for (int i=0; igetCapability(Switches)-1; i++) { @@ -1311,16 +604,10 @@ void Setup::startupSwitchEdited(int value) } } -void Setup::on_thrTrimChkB_toggled(bool checked) +void Setup::on_throttleTrim_toggled(bool checked) { - model.thrTrim = checked; - emit modified(); -} - -void Setup::on_thrExpoChkB_toggled(bool checked) -{ - model.thrExpo = checked; - emit modified(); + model.thrTrim = checked; + emit modified(); } void Setup::onBeepCenterToggled(bool checked) @@ -1335,3 +622,8 @@ void Setup::onBeepCenterToggled(bool checked) emit modified(); } } + +void Setup::onChildModified() +{ + emit modified(); +} diff --git a/companion/src/modeledit/setup.h b/companion/src/modeledit/setup.h index 7b33a3af0..e3fb8d313 100644 --- a/companion/src/modeledit/setup.h +++ b/companion/src/modeledit/setup.h @@ -5,11 +5,65 @@ #include #include #include +#include namespace Ui { class Setup; + class Timer; + class Module; } +class TimerPanel : public ModelPanel +{ + Q_OBJECT + + public: + TimerPanel(QWidget *parent, ModelData & model, TimerData & timer); + virtual ~TimerPanel(); + + virtual void update(); + + private slots: + void on_mode_currentIndexChanged(int index); + void on_value_editingFinished(); + void on_persistent_toggled(bool checked); + void on_minuteBeep_toggled(bool checked); + void on_countdownBeep_toggled(bool checked); + + private: + TimerData & timer; + Ui::Timer *ui; +}; + +class ModulePanel : public ModelPanel +{ + Q_OBJECT + + public: + ModulePanel(QWidget *parent, ModelData & model, ModuleData & module, int moduleIdx); + virtual ~ModulePanel(); + + virtual void update(); + + private slots: + void on_protocol_currentIndexChanged(int index); + void on_ppmDelay_editingFinished(); + void on_channelsCount_editingFinished(); + void on_channelsStart_editingFinished(); + void on_ppmPolarity_currentIndexChanged(int index); + void on_ppmFrameLength_editingFinished(); + void on_rxNumber_editingFinished(); + void on_failsafeMode_currentIndexChanged(int value); + void onFailsafeChannelChanged(int value); + + private: + ModuleData & module; + int moduleIdx; + Ui::Module *ui; + QVector failsafeSpins; + QVector failsafeSliders; +}; + class Setup : public ModelPanel { Q_OBJECT @@ -21,72 +75,25 @@ class Setup : public ModelPanel virtual void update(); private slots: - void on_protocolCB_currentIndexChanged(int index); - void on_protocolCB_2_currentIndexChanged(int index); - void on_protocolCB_3_currentIndexChanged(int index); - void on_fsm1CB_currentIndexChanged(int index); - void on_fsm2CB_currentIndexChanged(int index); - void on_modelVoice_SB_editingFinished(); - void on_T2ThrTrgChkB_toggled(bool checked); - void on_ttraceCB_currentIndexChanged(int index); - void on_instantTrim_CB_currentIndexChanged(int index); - void on_thrExpoChkB_toggled(bool checked); - void on_thrTrimChkB_toggled(bool checked); - void on_extendedLimitsChkB_toggled(bool checked); - void on_extendedTrimsChkB_toggled(bool checked); - void on_thrwarnChkB_toggled(bool checked); - void on_thrrevChkB_toggled(bool checked); - void on_timer1Perm_toggled(bool checked); - void on_timer2Perm_toggled(bool checked); - void on_timer1Minute_toggled(bool checked); - void on_timer2Minute_toggled(bool checked); - void on_timer1CountDownBeep_toggled(bool checked); - void on_timer2CountDownBeep_toggled(bool checked); - void fssldEdited(); - void fssbEdited(); - void fssldValueChanged(); - void fssbValueChanged(); - void on_ppmDelaySB_editingFinished(); - void on_ppmDelaySB_2_editingFinished(); - void on_ppmDelaySB_3_editingFinished(); - void on_numChannelsSB_editingFinished(); - void on_numChannelsSB_2_editingFinished(); - void on_numChannelsSB_3_editingFinished(); - void on_numChannelsStart_editingFinished(); - void on_numChannelsStart_2_editingFinished(); - void on_numChannelsStart_3_editingFinished(); -// void void ModelEdit::on_numChannelsStart_3_editingFinished(); - void on_pulsePolCB_currentIndexChanged(int index); - void on_pulsePolCB_2_currentIndexChanged(int index); - void on_pulsePolCB_3_currentIndexChanged(int index); - void on_ppmFrameLengthDSB_editingFinished(); - void on_ppmFrameLengthDSB_2_editingFinished(); - void on_ppmFrameLengthDSB_3_editingFinished(); - void on_DSM_Type_currentIndexChanged(int index); - void on_DSM_Type_2_currentIndexChanged(int index); - void on_pxxRxNum_editingFinished(); - void on_pxxRxNum_2_editingFinished(); - - // TODO void on_trimSWCB_currentIndexChanged(int index); - void on_trimIncCB_currentIndexChanged(int index); - void on_timer1DirCB_currentIndexChanged(int index); - void on_timer1ModeCB_currentIndexChanged(int index); - void on_timer1ValTE_editingFinished(); - void on_timer1ModeBCB_currentIndexChanged(int index); - void on_timer2DirCB_currentIndexChanged(int index); - void on_timer2ModeCB_currentIndexChanged(int index); - void on_timer2ValTE_editingFinished(); - void on_timer2ModeBCB_currentIndexChanged(int index); - void on_modelNameLE_editingFinished(); - void on_modelImage_CB_currentIndexChanged(int index); + void on_name_editingFinished(); + void on_throttleSource_currentIndexChanged(int index); + void on_throttleTrim_toggled(bool checked); + void on_extendedLimits_toggled(bool checked); + void on_extendedTrims_toggled(bool checked); + void on_throttleWarning_toggled(bool checked); + void on_throttleReverse_toggled(bool checked); + void on_image_currentIndexChanged(int index); + void on_trimIncrement_currentIndexChanged(int index); void onBeepCenterToggled(bool checked); void startupSwitchEdited(int value); + void onChildModified(); private: Ui::Setup *ui; QVector startupSwitchesSliders; QVector centerBeepCheckboxes; - void tabModelEditSetup(); + ModulePanel * modules[C9X_NUM_MODULES+1]; + TimerPanel * timers[C9X_MAX_TIMERS]; void updateStartupSwitches(); void updateBeepCenter(); }; diff --git a/companion/src/modeledit/setup.ui b/companion/src/modeledit/setup.ui index 82f67f43b..c4a632c00 100644 --- a/companion/src/modeledit/setup.ui +++ b/companion/src/modeledit/setup.ui @@ -2,158 +2,189 @@ Setup - - Qt::NonModal - - - true - 0 0 - 968 - 660 + 782 + 334 - - - 0 - 0 - - - - - 0 - 0 - - Form - - - - - true - - - - 0 - 0 - - - - 0 - - - true - - - false - - - - - 0 - 0 - - - - ModelSetup - - - - + + + + + + + Model Name + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Timer2 + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Timer1 + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Throttle Source + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + Switch startup Warning + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Center beep + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + Trim Increment + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + QLayout::SetMinimumSize + + + 0 + + + 0 + + + + + + 0 + 0 + + + + + ON + + + + + OFF + + + + + + + + + 0 + 0 + + - Timer2 + Check - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + Qt::AlignCenter - - + + + + + + + + + - + 0 0 - 0 - 0 + 64 + 32 + + + 64 + 32 + + + + QFrame::Panel + + + QFrame::Raised + - Disable Throttle Warning + - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + true - - - - - 0 - 0 - - - - - - - - Extended Limits - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Throttle Trim - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Throttle Source - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Qt::Horizontal - - - - - - - Center beep - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - + + Qt::Horizontal @@ -165,18 +196,45 @@ - - - - Trim Increment + + + + Qt::Horizontal - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + 40 + 20 + + + + + + + + Model Image - - + + + + + 0 + 0 + + + + 10 + + + + + + + + + 0 @@ -210,84 +268,32 @@ - - - - Qt::Horizontal - - - - - - - - 0 - 0 - + + + + Qt::RightToLeft - Switch startup Warning - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + Extended Limits - - - - - - - - - - - - - - Throttle2Trig - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 16777215 - 16777215 - - - - - - - - - 0 - 0 - + + + + Qt::RightToLeft - + Extended Trims - - - - Instant Trim - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - + + + + + + 0 @@ -296,2742 +302,74 @@ - - + + + + Qt::RightToLeft + - + Throttle Trim - - - - Extended Trims + + + + Qt::RightToLeft - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + Throttle Warning - - - - - - - - - - - - - - - - - - Reverse Throttle Operation - - - - - + + Reverse throttle operation. If this is checked the throttle will be reversed. Idle will be forward, trim will also be reversed and the throttle warning will be reversed as well. + + Qt::RightToLeft + - + Reverse Throttle - - + + - Qt::Vertical - - - QSizePolicy::MinimumExpanding + Qt::Horizontal - 20 - 0 + 40 + 20 - - - - - - - - - - - Master - - - - - Slave - - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - usec - - - 100 - - - 800 - - - 50 - - - 300 - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - PPM delay - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Pulse Shift (polarity) - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Trainer Mode - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - mSec - - - 1 - - - 12.500000000000000 - - - 32.500000000000000 - - - 0.500000000000000 - - - 22.500000000000000 - - - - - - - - 0 - 0 - - - - - Negative - - - - - Positive - - - - - - - - PPM Frame Length - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - font-weight:bold; - - - Master/Trainer Port - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - ch - - - 1 - - - 16 - - - 2 - - - 8 - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - ch - - - 1 - - - 32 - - - 1 - - - 8 - - - - - - - - 0 - 0 - - - - Channels - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Start - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - - - - - - - - - - PPM delay - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 0 - 0 - - - - Polarity - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 0 - 0 - - - - - Negative - - - - - Positive - - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - usec - - - 100 - - - 800 - - - 50 - - - 300 - - - - - - - - 0 - 0 - - - - PPM Frame Length - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - mSec - - - 1 - - - 12.500000000000000 - - - 32.500000000000000 - - - 0.500000000000000 - - - 22.500000000000000 - - - - - - - - 0 - 0 - - - - - - - 1 - - - 125 - - - 1 - - - 1 - - - - - - - Qt::Horizontal - - - - 5 - 20 - - - - - - - - - 0 - 0 - - - - DSM Type - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 0 - 0 - - - - - LP4/LP5 - - - - - DSM2only - - - - - DSM2/DSMX - - - - - - - - - 0 - 0 - - - - RX Number - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - PPM - - - - - Silver A - - - - - Silver B - - - - - Silver C - - - - - Trac 09 - - - - - - - - font-weight: bold; - - - RF Module 1 - - - - - - - - 0 - 0 - - - - Protocol - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Qt::Vertical - - - QSizePolicy::MinimumExpanding - - - - 20 - 0 - - - - - - - - - - Start - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - ch - - - 1 - - - 32 - - - 1 - - - 1 - - - - - - - - 0 - 0 - - - - Channels - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - ch - - - 1 - - - 16 - - - 2 - - - 8 - - - - - - - - - - - - - - - - - - PPM delay - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - usec - - - 100 - - - 800 - - - 50 - - - 300 - - - - - - - - 0 - 0 - - - - - Negative - - - - - Positive - - - - - - - - - 0 - 0 - - - - Polarity - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 0 - 0 - - - - RX Number - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 0 - 0 - - - - - - - 1 - - - 125 - - - 1 - - - 1 - - - - - - - - 0 - 0 - - - - DSM Type - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 0 - 0 - - - - - LP4/LP5 - - - - - DSM2only - - - - - DSM2/DSMX - - - - - - - - font-weight:bold; - - - RF Module 2 - - - - - - - Qt::Vertical - - - QSizePolicy::MinimumExpanding - - - - 20 - 0 - - - - - - - - - 0 - 0 - - - - PPM Frame Length - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - mSec - - - 1 - - - 12.500000000000000 - - - 32.500000000000000 - - - 0.500000000000000 - - - 22.500000000000000 - - - - - - - Qt::Horizontal - - - - 5 - 20 - - - - - - - - - PPM - - - - - Silver A - - - - - Silver B - - - - - Silver C - - - - - Trac 09 - - - - - - - - - 0 - 0 - - - - Protocol - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - Start - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - ch - - - 1 - - - 32 - - - 1 - - - 1 - - - - - - - - 0 - 0 - - - - Channels - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - ch - - - 1 - - - 16 - - - 2 - - - 8 - - - - - - - - - - - - - - Throttle Expo - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Model Name - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Timer1 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - 2 - - - - - true - - - QDateTimeEdit::MinuteSection - - - mm:ss - - - - - - - - Count Down - - - - - Count Up - - - - - - - - - - - - 0 - 0 - - - - TriggerB - - - - - - - - - - Persistent - - - - - - - (00:00:00) - - - - - - - MinuteBeep - - - - - - - CountDownBeep - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - 2 - - - - - true - - - QDateTimeEdit::MinuteSection - - - mm:ss - - - - - - - - Count Down - - - - - Count Up - - - - - - - - - - - - 0 - 0 - - - - TriggerB - - - - - - - - - - Persistent - - - - - - - (00:00:00) - - - - - - - MinuteBeep - - - - - - - CountDownBeep - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - - 0 - 0 - - - - 10 - - - - - - - Model Voice - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 0 - 0 - - - - - - - 260 - - - 511 - - - 1 - - - 260 - - - - - - - Model Image - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - 0 - 0 - - - - - 64 - 32 - - - - - 64 - 32 - - - - QFrame::Panel - - - QFrame::Raised - - - - - - true - - - - - - - - - - - - QLayout::SetMinimumSize - - - 0 - - - 0 - - - - - - 0 - 0 - - - - - ON - - - - - OFF - - - - - - - - - 0 - 0 - - - - Check - - - Qt::AlignCenter - - - - - - - - - Failsafe - - - - - - External module - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - false - - - true - - - -100 - - - 100 - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - false - - - true - - - -100 - - - 100 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - CH12 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - false - - - true - - - -100 - - - 100 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - CH01 - - - - - - - CH04 - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - false - - - true - - - -100 - - - 100 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - CH10 - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - false - - - true - - - -100 - - - 100 - - - - - - - CH02 - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - false - - - true - - - -100 - - - 100 - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - false - - - true - - - -100 - - - 100 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - CH11 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - CH03 - - - - - - - CH09 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - false - - - true - - - -100 - - - 100 - - - - - - - CH05 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - false - - - true - - - -100 - - - 100 - - - - - - - CH06 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - false - - - true - - - -100 - - - 100 - - - - - - - CH07 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - false - - - true - - - -100 - - - 100 - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - false - - - true - - - -100 - - - 100 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - CH08 - - - - - - - Qt::Vertical - - - - - - - CH13 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - false - - - true - - - -100 - - - 100 - - - - - - - CH14 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - false - - - true - - - -100 - - - 100 - - - - - - - CH15 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - false - - - true - - - -100 - - - 100 - - - - - - - CH16 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - false - - - true - - - -100 - - - 100 - - - - - - - Qt::Vertical - - - - - - - Qt::Vertical - - - - - - - - - Failsafe Mode - - - - - - - - Hold - - - - - Custom - - - - - No Pulses - - - - - - - - - - - - - Qt::Vertical - - - - 20 - 1 - - - - - - - - Internal Module - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - CH14 - - - - - - - CH09 - - - - - - - CH02 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - CH01 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - CH04 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - CH12 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - CH10 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - CH03 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - CH11 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - CH05 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - CH06 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - CH07 - - - - - - - CH08 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - CH13 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - CH15 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - CH16 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - Qt::Vertical - - - - - - - Qt::Vertical - - - - - - - Qt::Vertical - - - - - - - - - Failsafe Mode - - - - - - - - Hold - - - - - Custom - - - - - No Pulses - - - - - - - - - - - - + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + diff --git a/companion/src/modeledit/setup_module.ui b/companion/src/modeledit/setup_module.ui new file mode 100644 index 000000000..048c926e3 --- /dev/null +++ b/companion/src/modeledit/setup_module.ui @@ -0,0 +1,343 @@ + + + Module + + + + 0 + 0 + 562 + 340 + + + + Form + + + + + + + + + + + + Failsafe Mode + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + PPM delay + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + usec + + + 100 + + + 800 + + + 50 + + + 300 + + + + + + + + 0 + 0 + + + + + Negative + + + + + Positive + + + + + + + + RX Number + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + Master + + + + + Slave + + + + + + + + Polarity + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Protocol + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Trainer Mode + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + + + 1 + + + 125 + + + 1 + + + 1 + + + + + + + mSec + + + 1 + + + 12.500000000000000 + + + 32.500000000000000 + + + 0.500000000000000 + + + 22.500000000000000 + + + + + + + PPM Frame Length + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + font-weight: bold; + + + Label + + + + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + ch + + + 1 + + + 16 + + + 2 + + + 8 + + + + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + ch + + + 1 + + + 32 + + + 1 + + + 1 + + + + + + + Start + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + Channels + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + Hold + + + + + Custom + + + + + No Pulses + + + + + + + + Failsafe Positions + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + QFrame::StyledPanel + + + QFrame::Sunken + + + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + + diff --git a/companion/src/modeledit/setup_timer.ui b/companion/src/modeledit/setup_timer.ui new file mode 100644 index 000000000..96ed9370f --- /dev/null +++ b/companion/src/modeledit/setup_timer.ui @@ -0,0 +1,81 @@ + + + Timer + + + + 0 + 0 + 726 + 54 + + + + Form + + + + 0 + + + + + true + + + QDateTimeEdit::MinuteSection + + + mm:ss + + + + + + + + + + Persistent + + + + + + + (00:00:00) + + + + + + + MinuteBeep + + + + + + + CountDownBeep + + + + + + + Qt::Horizontal + + + + 255 + 17 + + + + + + + + + diff --git a/companion/src/xmlinterface.cpp b/companion/src/xmlinterface.cpp index e7bd91683..b3514383d 100644 --- a/companion/src/xmlinterface.cpp +++ b/companion/src/xmlinterface.cpp @@ -91,8 +91,6 @@ void saveGeneralSettings(GeneralSettings & settings, global_settings & gs) gs.warnings(warns); gs.beeper(settings.beeperMode); sticks stks(settings.stickMode); - if (settings.throttleReversed) - stks.throttle_reverse(true); gs.sticks(stks); gs.inactivity_timer(settings.inactivityTimer); if (settings.minuteBeep || settings.preBeep || settings.flashBeep) { From b3c7bb1e8ccecfe18c15566e8d3dfe2dc67bcd14 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Sun, 22 Dec 2013 18:17:24 +0100 Subject: [PATCH 029/308] Fixes #155 --- src/targets/sky9x/adc_driver.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/targets/sky9x/adc_driver.cpp b/src/targets/sky9x/adc_driver.cpp index 1d09ef988..e3adf33a3 100644 --- a/src/targets/sky9x/adc_driver.cpp +++ b/src/targets/sky9x/adc_driver.cpp @@ -45,12 +45,12 @@ const char ana_direction[NUMBER_ANALOG] = {1, 1, 0, 1 ,0 ,1 ,0, 0, 0}; // Settings for mode register ADC_MR // USEQ off - silicon problem, doesn't work -// TRANSFER = 1 -// TRACKTIM = 4 (5 clock periods) -// ANACH = 0 -// SETTLING = 1 (not used if ANACH = 0) -// STARTUP = 1 (8 clock periods) -// PRESCAL = 3.6 MHz clock (between 1 and 20MHz) +// TRANSFER = 3 +// TRACKTIM = 15 (16 clock periods) +// ANACH = 1 +// SETTLING = 6 (not used if ANACH = 0) +// STARTUP = 6 (96 clock periods) +// PRESCAL = 9.0 MHz clock (between 1 and 20MHz) // FREERUN = 0 // FWUP = 0 // SLEEP = 0 @@ -66,7 +66,7 @@ void adcInit() // Enable peripheral clock ADC = bit 29 PMC->PMC_PCER0 |= 0x20000000L ; // Enable peripheral clock to ADC padc = ADC ; - padc->ADC_MR = 0x14110000 | timer ; // 0001 0100 0001 0001 xxxx xxxx 0000 0000 + padc->ADC_MR = 0x3FB60000 | timer ; // 0011 1111 1011 0110 xxxx xxxx 0000 0000 padc->ADC_ACR = ADC_ACR_TSON ; // Turn on temp sensor #if defined(REVA) padc->ADC_CHER = 0x0000E23E ; // channels 1,2,3,4,5,9,13,14,15 From a2e9c6cdcadebd5f32c373f44f7acfea9cfa6eaf Mon Sep 17 00:00:00 2001 From: mhotar Date: Mon, 23 Dec 2013 02:41:21 +0100 Subject: [PATCH 030/308] Bold font creation modified to skip some collumns --- radio/src/lcd.cpp | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/radio/src/lcd.cpp b/radio/src/lcd.cpp index e9e684357..b036674c8 100644 --- a/radio/src/lcd.cpp +++ b/radio/src/lcd.cpp @@ -265,10 +265,19 @@ void lcd_putcAtt(xcoord_t x, uint8_t y, const unsigned char c, LcdFlags flags) uint8_t ym8 = (y & 0x07); #if defined(BOLD_FONT) +#if !defined(CPUM64) + uint8_t skipcol = 7; + if ( c >= 'A') skipcol = 4; + if ( c == 'T') skipcol = 5; +#endif uint8_t bb = 0; if (inv) bb = 0xff; #endif +#if !defined(CPUM64) + for (int8_t i=0; i<=7; i++) { +#else for (int8_t i=0; i<=6; i++) { +#endif uint8_t b = 0; if ( !i ) { if ( !x || !inv || (flags & BOLD)) { @@ -280,7 +289,9 @@ void lcd_putcAtt(xcoord_t x, uint8_t y, const unsigned char c, LcdFlags flags) else if (i <= 5) b = pgm_read_byte(q++); if (b == 0xff) continue; if (inv) b = ~b; - +#if !defined(CPUM64) + if (!(flags & BOLD) && (i == 7)) continue; +#endif if ((flags & CONDENSED) && i==2) { /*condense the letter by skipping column 3 */ continue; @@ -295,6 +306,9 @@ void lcd_putcAtt(xcoord_t x, uint8_t y, const unsigned char c, LcdFlags flags) a = b | bb; bb = b; b = a; +#if !defined(CPUM64) + if (i == skipcol) continue; +#endif } #endif From eb41750e9e9a613b10984b9d3a07196f28840603 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Mon, 23 Dec 2013 10:42:57 +0100 Subject: [PATCH 031/308] [Taranis] No more audio freeze! --- src/audio_arm.cpp | 3 ++- src/targets/taranis/audio_driver.cpp | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/audio_arm.cpp b/src/audio_arm.cpp index 8b6bf9b44..428e75856 100644 --- a/src/audio_arm.cpp +++ b/src/audio_arm.cpp @@ -325,8 +325,9 @@ void AudioQueue::pushBuffer(AudioBuffer *buffer) { buffer->state = AUDIO_BUFFER_FILLED; - if (dacQueue(buffer)) + if (dacQueue(buffer)) { buffer->state = AUDIO_BUFFER_PLAYING; + } bufferWIdx = nextBufferIdx(bufferWIdx); } diff --git a/src/targets/taranis/audio_driver.cpp b/src/targets/taranis/audio_driver.cpp index d0b0508aa..5dc714fd5 100644 --- a/src/targets/taranis/audio_driver.cpp +++ b/src/targets/taranis/audio_driver.cpp @@ -95,8 +95,10 @@ void dacInit() bool dacQueue(AudioBuffer *buffer) { + __disable_irq(); if (dacIdle) { dacIdle = false; + __enable_irq(); DMA1_Stream5->CR &= ~DMA_SxCR_EN ; // Disable DMA channel DMA1->HIFCR = DMA_HIFCR_CTCIF5 | DMA_HIFCR_CHTIF5 | DMA_HIFCR_CTEIF5 | DMA_HIFCR_CDMEIF5 | DMA_HIFCR_CFEIF5 ; // Write ones to clear bits DMA1_Stream5->M0AR = CONVERT_PTR(buffer->data); @@ -107,6 +109,7 @@ bool dacQueue(AudioBuffer *buffer) return true; } else { + __enable_irq(); return false; } } From e18499925ec44ab8198bb3ce537dee648671f9e8 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Mon, 23 Dec 2013 15:45:41 +0100 Subject: [PATCH 032/308] New donation, thanks! --- DONATIONS.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/DONATIONS.txt b/DONATIONS.txt index db1b903c5..f0b906af5 100644 --- a/DONATIONS.txt +++ b/DONATIONS.txt @@ -255,3 +255,4 @@ Aloft Hobbies Netanel Hobara Cameron Galipo Doug Schafer +Pietro Rossin From 76a7674272d89fd9dad5919caf14fdbbff5efdd6 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Mon, 23 Dec 2013 15:18:00 +0100 Subject: [PATCH 033/308] [Taranis] Best fix for the audio freeze by Mike, thanks! --- src/audio_arm.cpp | 6 +++++- src/targets/taranis/audio_driver.cpp | 3 --- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/audio_arm.cpp b/src/audio_arm.cpp index 428e75856..c3d311514 100644 --- a/src/audio_arm.cpp +++ b/src/audio_arm.cpp @@ -325,11 +325,15 @@ void AudioQueue::pushBuffer(AudioBuffer *buffer) { buffer->state = AUDIO_BUFFER_FILLED; + __disable_irq(); + + bufferWIdx = nextBufferIdx(bufferWIdx); + if (dacQueue(buffer)) { buffer->state = AUDIO_BUFFER_PLAYING; } - bufferWIdx = nextBufferIdx(bufferWIdx); + __enable_irq(); } void mix(uint16_t * result, int sample, unsigned int fade) diff --git a/src/targets/taranis/audio_driver.cpp b/src/targets/taranis/audio_driver.cpp index 5dc714fd5..d0b0508aa 100644 --- a/src/targets/taranis/audio_driver.cpp +++ b/src/targets/taranis/audio_driver.cpp @@ -95,10 +95,8 @@ void dacInit() bool dacQueue(AudioBuffer *buffer) { - __disable_irq(); if (dacIdle) { dacIdle = false; - __enable_irq(); DMA1_Stream5->CR &= ~DMA_SxCR_EN ; // Disable DMA channel DMA1->HIFCR = DMA_HIFCR_CTCIF5 | DMA_HIFCR_CHTIF5 | DMA_HIFCR_CTEIF5 | DMA_HIFCR_CDMEIF5 | DMA_HIFCR_CFEIF5 ; // Write ones to clear bits DMA1_Stream5->M0AR = CONVERT_PTR(buffer->data); @@ -109,7 +107,6 @@ bool dacQueue(AudioBuffer *buffer) return true; } else { - __enable_irq(); return false; } } From 682517b0ed7dd6960a183430351b7c3ff77b0be0 Mon Sep 17 00:00:00 2001 From: mhotar Date: Wed, 25 Dec 2013 23:41:27 +0100 Subject: [PATCH 034/308] putsTime(..) chanaged to save some flash - newline implemented, thanks to ChrisNisbet01. I will try later to save some flash with It. --- radio/src/fonts/std/font_05x07.lbm | 2 +- radio/src/fonts/std/font_05x07.png | Bin 619 -> 620 bytes radio/src/fonts/std/font_08x10.lbm | 6 +- radio/src/fonts/std/font_08x10.png | Bin 823 -> 837 bytes radio/src/fonts/std/font_10x14_compressed.lbm | 2 +- radio/src/fonts/std/font_10x14_compressed.png | Bin 1508 -> 1518 bytes radio/src/lcd.cpp | 95 +++++++++--------- radio/src/lcd.h | 5 +- 8 files changed, 53 insertions(+), 57 deletions(-) diff --git a/radio/src/fonts/std/font_05x07.lbm b/radio/src/fonts/std/font_05x07.lbm index 987e3568f..ebbf93c6e 100644 --- a/radio/src/fonts/std/font_05x07.lbm +++ b/radio/src/fonts/std/font_05x07.lbm @@ -1,5 +1,5 @@ 0x00,0x00,0xff,0xff,0xff,0x00,0x00,0x00,0x6f,0x00,0x00,0x07,0x00,0x07,0x00,0x18,0x30,0x18,0x0c,0x06,0x08,0x7f,0x7f,0x7f,0x08,0x23,0x13,0x08,0x64,0x62,0x36,0x49,0x55,0x22,0x50,0x00,0x05,0x03,0x00,0x00,0x00,0x1c,0x22,0x41,0x00,0x00,0x41,0x22,0x1c,0x00,0x14,0x08,0x3e,0x08,0x14,0x08,0x08,0x3e,0x08,0x08,0x00,0x50,0x30,0x00,0x00,0x00,0x08,0x08,0x08,0x08,0x40,0xff,0xff,0xff,0xff,0x20,0x10,0x08,0x04,0x02, -0x3e,0x41,0x41,0x3e,0xff,0x00,0x42,0x7f,0x40,0xff,0x62,0x51,0x49,0x46,0xff,0x41,0x49,0x49,0x36,0xff,0x18,0x14,0x12,0x7f,0xff,0x27,0x45,0x45,0x39,0xff,0x3e,0x49,0x49,0x32,0xff,0x01,0x79,0x05,0x03,0xff,0x36,0x49,0x49,0x36,0xff,0x06,0x49,0x29,0x1e,0xff,0x00,0x00,0x36,0x36,0x00,0x00,0x00,0x56,0x36,0x00,0x08,0x14,0x22,0x41,0xff,0x14,0x14,0x14,0x14,0x14,0x41,0x22,0x14,0x08,0xff,0x02,0x01,0x51,0x09,0x06, +0x3e,0x41,0x41,0x3e,0xff,0x00,0x42,0x7f,0x40,0xff,0x62,0x51,0x49,0x46,0xff,0x41,0x49,0x49,0x36,0xff,0x18,0x14,0x12,0x7f,0xff,0x27,0x45,0x45,0x39,0xff,0x3e,0x49,0x49,0x32,0xff,0x01,0x79,0x05,0x03,0xff,0x36,0x49,0x49,0x36,0xff,0x06,0x49,0x29,0x1e,0xff,0x36,0x36,0xff,0xff,0xff,0x00,0x00,0x56,0x36,0x00,0x08,0x14,0x22,0x41,0xff,0x14,0x14,0x14,0x14,0x14,0x41,0x22,0x14,0x08,0xff,0x02,0x01,0x51,0x09,0x06, 0x06,0x09,0x09,0x06,0x00,0x7e,0x09,0x09,0x09,0x7e,0x7f,0x49,0x49,0x49,0x36,0x3e,0x41,0x41,0x41,0x22,0x7f,0x41,0x41,0x22,0x1c,0x7f,0x49,0x49,0x49,0x41,0x7f,0x09,0x09,0x09,0x01,0x3e,0x41,0x49,0x49,0x7a,0x7f,0x08,0x08,0x08,0x7f,0x41,0x7f,0x41,0xff,0xff,0x20,0x40,0x41,0x3f,0x01,0x7f,0x08,0x14,0x22,0x41,0x7f,0x40,0x40,0x40,0xff,0x7f,0x02,0x0c,0x02,0x7f,0x7f,0x04,0x08,0x10,0x7f,0x3e,0x41,0x41,0x41,0x3e, 0x7f,0x09,0x09,0x09,0x06,0x3e,0x41,0x51,0x21,0x5e,0x7f,0x09,0x19,0x29,0x46,0x26,0x49,0x49,0x49,0x32,0x01,0x01,0x7f,0x01,0x01,0x3f,0x40,0x40,0x40,0x3f,0x1f,0x20,0x40,0x20,0x1f,0x3f,0x40,0x30,0x40,0x3f,0x63,0x14,0x08,0x14,0x63,0x07,0x08,0x70,0x08,0x07,0x61,0x51,0x49,0x45,0x43,0x00,0x7f,0x41,0x41,0x00,0x02,0x04,0x08,0x10,0x20,0x00,0x41,0x41,0x7f,0x00,0x04,0x02,0x01,0x02,0x04,0x40,0x40,0x40,0x40,0x40, 0x00,0x01,0x02,0x04,0x00,0x20,0x54,0x54,0x54,0x78,0x7f,0x48,0x44,0x44,0x38,0x38,0x44,0x44,0x44,0x20,0x38,0x44,0x44,0x48,0x7f,0x38,0x54,0x54,0x54,0x18,0x08,0x7e,0x09,0x01,0x02,0x0c,0x52,0x52,0x52,0x3e,0x7f,0x08,0x04,0x04,0x78,0x44,0x7d,0x40,0xff,0xff,0x20,0x40,0x44,0x3d,0xff,0x7f,0x10,0x28,0x44,0xff,0x41,0x7f,0x40,0xff,0xff,0x7c,0x04,0x18,0x04,0x78,0x7c,0x08,0x04,0x04,0x78,0x38,0x44,0x44,0x44,0x38, diff --git a/radio/src/fonts/std/font_05x07.png b/radio/src/fonts/std/font_05x07.png index 863731cd829a3cfc5e3d35c7424084a7293872f9..55d7bc54a97eb498731757c42f3e330906199f08 100644 GIT binary patch delta 535 zcmV+y0_gqg1ndNmV1F4DI1%iX$KU_}0qjXcK~yNuMUGEs(_k3J-*tKr3o{3Cy47A} zYzSi&l%zU084UE`Wo!or4xB`=Fd{LF7~9V>k0OG#I!vbrPZb?KNQt9ndWlr|aHoOV zCU|f|O*@4xgVcP!W&U|jKOP>Q_Xk#Db53>{3!-2pR%aKgo_`taM|`ucnxkeA0V{QT zikauyUUz^M@RbR3)Cl%~MXnUgs#gly5I28LxXf?h0^2$q%RcT64Q2{KatY4Qz7zDx zmRyR0Xq0z+m~45_dKSdzUD8-4=8+tTPZuv`FJL+jVvfeLV!D#DAp^aq#_kqgCO?8# zs%urRz=#d{5Px@_lloSKB}nLBN;M_E%uz(IzpliK-4yPJylvgv<7&@o@G-?gQMiTJ z?Cx6@DEKp6dQIwbaAC`KfDs1ap^2Wfn}3mkB>x#-*fvYOC&#`bejnL8 zTszrU-W>yWbAz8c%;!^QsSuJ^b)BO+-ab8 z2_D=~(@tT_AT^(FnSb8XkB5in{ehL*n2|lk!Z=u|mFc-9pMQpX5#Ow-beM)Qu=JY~ zjGk$J-3nI7SH|eD8SVm$TzX2E{8HGAxbbt$V?iAk*yiC_?qOG?KTE^(0-T+GCm7?s zdEExlEN}ZT-g~dFgJrIBpXCwUMb&tJ%$!*mqHyxo%%pH*}Rve0#6+cB~k3K;cmp=(y=w6cAkU)Q!EsP8;FhW zo<+fiV2aDEO6@K#Y}zInVGteIA=q*zZV`|T&$Q)|x=s;)nf9YOZOwu0Q!&%7sA-?U z(C)$N z@$T}@9$?qk`H6#k0oChmeq>eQ&v&Avv3xXCS_w#0K~y-)Wzj)v)Ibym@Yimsm!i;9g&vB8 zx+fW153?{%zJs5{kFX7)_ORd*F9|HWAHu6jc2m|I#^mZrw(a70T7oMwk&yAtBweh1 zm%wk{y!TH6MXc&t>v%zHwNQnI0*>m{htH6P7AgaQ_xK%zsegsiLia8xc=rAc&_(bS zVQnCIDD#*u<_4q%Po5(HET92cd?B_2RFT_`A7L*J)4;$4Fj&wHpT}lPUkxXwqxN3< zu?f~!;F^wl)kZ&3Lk-oYVr>e1;rqYf5_~__rJhWI3=_^qA&^Kd z5kyg3?yx0-%zyQ|LRenV9Fq7oUsH%(i`=-J7S{f z@q@z%M1%+2brDWE>@m1vJ-3CY+(FQ+Aw?VxM}zzi^Zg%Q(Xha$W_ z<&4@Z?OLaY5SgJE%*9{>1}50O=z3Fi^Ix`-tut)Jf~h;j55ywIqy?2v%0!z(*FY2* zh;AWbN%Aw#%a1sNZJi-FQhv{6i9=oXplTp%!8t`poJ5ZEwFS~M0FmT*X~C?Gu_iVY0J7E%ksKyeFI-NNj6md-Q(c(8aO zULDV&2=~Kbkdb|%9MRnmpiq=kx_d%}+7n$$q39z(c8+k^07c*#r-HT}1ZRYqhk!FE z&bYuWvkZ?YfiA@@O>nQSye4|Rsp>|(y$g9NTWZKQuv+~GzrVq5{KVU)rU2p3CpZZ& zC@!S|Ehgz204N>vj0W8~T{b`t#-4!{5zUp|c&suy@6OXvGnA__O^0&`6l>NZc-QGF jpeN7-7_0snCN9-C|GV{pE}H4 z6J6s6s&zHLB~U?d3s(>X*kvXWus&l;amE;<^yvuL4gvERi({ODpt9_0ODw4)HF<@w zyb9Qs3K*p-OMimQ%a{tf2&T*tlm(XQ1s>4|BL)nC#S0A>j48pE1fI@ut%d*~SOyrc zZ*mN#|BkNRYoMy>1yuF|*SZz803rbwLJARsiaVo@^hZKv9l5t3f(r40^nHXQ2|EI= zMaOU8ne-5hX!&BZ<%7x|OV1;)9bBvd1c9(e1fvc+6o29Mkrdn>Y1Vojgph_}Fdu{U z1yHaD(apMQ_g*&Qjbm)Zg2<2X4-%me+Cq^|%Gl6DpCAkg!g~ls9REzy@)OPw8^;Kq z)<05R;!s~asvIN@ct;4a7wd7FTVNdm2(?U03$!-Wdtwcj;#kMHSVL4r52FK2>ZYo? zs_+77Er08xzNw`uM4v!gm|0K+<{qlLfy;x-*)$0b`rluuR|iut!`a+%;G&Y;b4iwoYX ztDcKqud7-VZ~ujKrW;7suv+~GzrMlt#nav^RWY;W8nSTW^}Y+sCvgiqVk*~kr*#hA~|rZ6akTZ_=UnXLx=5L_@>G(k^X^glLm V{7@K1e=Yz3002ovPDHLkV1la)Q5gUL diff --git a/radio/src/fonts/std/font_10x14_compressed.lbm b/radio/src/fonts/std/font_10x14_compressed.lbm index 89f587d45..1683c727c 100644 --- a/radio/src/fonts/std/font_10x14_compressed.lbm +++ b/radio/src/fonts/std/font_10x14_compressed.lbm @@ -1 +1 @@ -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x66,0x00,0x76,0x00,0x3e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x78,0x00,0x78,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x60,0x0e,0x70,0xfc,0x3f,0xf8,0x1f,0xff,0xff,0xff,0xff,0x00,0x00,0x18,0x60,0x1c,0x60,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x00,0xff,0xff,0xff,0xff,0x18,0x78,0x1c,0x7c,0x0e,0x6e,0x06,0x67,0x86,0x63,0xce,0x61,0xfc,0x60,0x78,0x60,0xff,0xff,0xff,0xff,0x06,0x60,0x06,0x60,0x86,0x61,0x86,0x61,0x86,0x61,0xce,0x73,0xfc,0x3f,0x78,0x1e,0xff,0xff,0xff,0xff,0x80,0x07,0xc0,0x07,0xe0,0x06,0x70,0x06,0x38,0x06,0x1c,0x06,0xfe,0x7f,0xfe,0x7f,0xff,0xff,0xff,0xff,0x7e,0x18,0x7e,0x38,0x66,0x70,0x66,0x60,0x66,0x60,0xe6,0x70,0xc6,0x3f,0x86,0x1f,0xff,0xff,0xff,0xff,0xf8,0x1f,0xfc,0x3f,0x8e,0x71,0x86,0x61,0x86,0x61,0x8e,0x73,0x1c,0x3f,0x18,0x1e,0xff,0xff,0xff,0xff,0x06,0x00,0x06,0x00,0x86,0x7f,0xc6,0x7f,0xe6,0x00,0x76,0x00,0x3e,0x00,0x1e,0x00,0xff,0xff,0xff,0xff,0x78,0x1e,0xfc,0x3f,0xce,0x73,0x86,0x61,0x86,0x61,0xce,0x73,0xfc,0x3f,0x78,0x1e,0xff,0xff,0xff,0xff,0x78,0x00,0xfc,0x00,0xce,0x61,0x86,0x71,0x86,0x39,0xce,0x1d,0xfc,0x0f,0xf8,0x07,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x30,0x0c,0x78,0x1e,0x78,0x1e,0x30,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x7f,0xf0,0x7f,0xb8,0x01,0x9c,0x01,0x8e,0x01,0x8e,0x01,0x9c,0x01,0xb8,0x01,0xf0,0x7f,0xe0,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0xce,0x73,0xfc,0x3f,0x78,0x1e,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x0e,0x70,0x1c,0x38,0x18,0x18,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x06,0x60,0x0e,0x70,0x1c,0x38,0x38,0x1c,0xf0,0x0f,0xe0,0x07,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x06,0x00,0x06,0x00,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x86,0x61,0x86,0x61,0x86,0x61,0x8e,0x71,0x9c,0x7f,0x98,0x3f,0xfe,0x7f,0xfe,0x7f,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x18,0x00,0x38,0x00,0x70,0x00,0x60,0x06,0x60,0x06,0x70,0xfe,0x3f,0xfe,0x1f,0x06,0x00,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0x80,0x01,0xc0,0x03,0xe0,0x07,0x70,0x0e,0x38,0x1c,0x1c,0x38,0x0e,0x70,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0xfe,0x7f,0xfe,0x7f,0x1c,0x00,0x38,0x00,0xf0,0x01,0xf0,0x01,0x38,0x00,0x1c,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x70,0x00,0xe0,0x00,0xc0,0x01,0x80,0x03,0x00,0x07,0x00,0x0e,0xfe,0x7f,0xfe,0x7f,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x0e,0x70,0xfc,0x3f,0xf8,0x1f,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0xce,0x01,0xfc,0x00,0x78,0x00,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x66,0x06,0x6e,0x06,0x3c,0x0e,0x38,0xfc,0x7f,0xf8,0x67,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x07,0x86,0x0f,0x86,0x1d,0xce,0x39,0xfc,0x70,0x78,0x60,0x78,0x18,0xfc,0x38,0xce,0x71,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x8e,0x73,0x1c,0x3f,0x18,0x1e,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0xfe,0x1f,0xfe,0x3f,0x00,0x70,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x70,0xfe,0x3f,0xfe,0x1f,0xfe,0x07,0xfe,0x0f,0x00,0x1c,0x00,0x38,0x00,0x70,0x00,0x70,0x00,0x38,0x00,0x1c,0xfe,0x0f,0xfe,0x07,0xfe,0x1f,0xfe,0x3f,0x00,0x70,0x00,0x70,0x00,0x3e,0x00,0x3e,0x00,0x70,0x00,0x70,0xfe,0x3f,0xfe,0x1f,0x1e,0x78,0x3e,0x7c,0x70,0x0e,0xe0,0x07,0xc0,0x03,0xc0,0x03,0xe0,0x07,0x70,0x0e,0x3e,0x7c,0x1e,0x78,0x7e,0x00,0xfe,0x00,0xc0,0x01,0x80,0x03,0x00,0x7f,0x00,0x7f,0x80,0x03,0xc0,0x01,0xfe,0x00,0x7e,0x00,0x06,0x78,0x06,0x7c,0x06,0x6e,0x06,0x67,0x86,0x63,0xc6,0x61,0xe6,0x60,0x76,0x60,0x3e,0x60,0x1e,0x60,0x00,0x18,0x00,0x3c,0x60,0x7e,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0x66,0xc0,0x7f,0x80,0x7f,0xfe,0x7f,0xfe,0x7f,0x80,0x61,0xc0,0x61,0xe0,0x60,0x60,0x60,0x60,0x60,0xe0,0x70,0xc0,0x3f,0x80,0x1f,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x70,0x00,0x38,0x00,0x18,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x60,0x60,0xe0,0x60,0xc0,0x61,0x80,0x61,0xfe,0x7f,0xfe,0x7f,0x80,0x1f,0xc0,0x3f,0xe0,0x76,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0x66,0xc0,0x07,0x80,0x07,0x80,0x01,0x80,0x01,0xf8,0x7f,0xfc,0x7f,0x8e,0x01,0x86,0x01,0x06,0x00,0x0e,0x00,0x1c,0x00,0x18,0x00,0xe0,0x01,0xf0,0x03,0x38,0x67,0x18,0x66,0x18,0x66,0x18,0x66,0x18,0x66,0x18,0x76,0xf8,0x3f,0xf8,0x1f,0xfe,0x7f,0xfe,0x7f,0x80,0x01,0xc0,0x01,0xe0,0x00,0x60,0x00,0x60,0x00,0xe0,0x00,0xc0,0x7f,0x80,0x7f,0x60,0x60,0x60,0x60,0xe6,0x7f,0xe6,0x7f,0x00,0x60,0x00,0x60,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x18,0x00,0x38,0x00,0x70,0x00,0x60,0x60,0x60,0x60,0x70,0xe6,0x3f,0xe6,0x1f,0xff,0xff,0xff,0xff,0xfe,0x7f,0xfe,0x7f,0x00,0x06,0x00,0x0f,0x80,0x1f,0xc0,0x39,0xe0,0x70,0x60,0x60,0xff,0xff,0xff,0xff,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0x7f,0xe0,0x7f,0x60,0x00,0xe0,0x00,0xc0,0x07,0xc0,0x07,0xe0,0x00,0xe0,0x00,0xc0,0x7f,0x80,0x7f,0xe0,0x7f,0xe0,0x7f,0x80,0x01,0xc0,0x01,0xe0,0x00,0x60,0x00,0x60,0x00,0xe0,0x00,0xc0,0x7f,0x80,0x7f,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xe0,0x70,0xc0,0x3f,0x80,0x1f,0xe0,0x7f,0xe0,0x7f,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0xe0,0x07,0xc0,0x03,0x80,0x01,0x80,0x01,0xc0,0x03,0xe0,0x07,0x60,0x06,0x60,0x06,0x60,0x06,0xc0,0x07,0x80,0x07,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x80,0x01,0xc0,0x01,0xe0,0x00,0x60,0x00,0x60,0x00,0xe0,0x00,0xc0,0x01,0x80,0x01,0x80,0x61,0xc0,0x63,0xe0,0x67,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x7e,0x00,0x3c,0x00,0x18,0x60,0x00,0x60,0x00,0xf8,0x1f,0xf8,0x3f,0x60,0x70,0x60,0x60,0x00,0x60,0x00,0x70,0x00,0x38,0x00,0x18,0xe0,0x1f,0xe0,0x3f,0x00,0x70,0x00,0x60,0x00,0x60,0x00,0x70,0x00,0x38,0x00,0x18,0xe0,0x7f,0xe0,0x7f,0xe0,0x07,0xe0,0x0f,0x00,0x1c,0x00,0x38,0x00,0x70,0x00,0x70,0x00,0x38,0x00,0x1c,0xe0,0x0f,0xe0,0x07,0xe0,0x1f,0xe0,0x3f,0x00,0x70,0x00,0x70,0x00,0x38,0x00,0x38,0x00,0x70,0x00,0x70,0xe0,0x3f,0xe0,0x1f,0x60,0x60,0xe0,0x70,0xc0,0x39,0x80,0x1f,0x00,0x0f,0x00,0x0f,0x80,0x1f,0xc0,0x39,0xe0,0x70,0x60,0x60,0xe0,0x01,0xe0,0x03,0x00,0x67,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x76,0xe0,0x3f,0xe0,0x1f,0x60,0x60,0x60,0x70,0x60,0x78,0x60,0x7c,0x60,0x6e,0x60,0x67,0xe0,0x63,0xe0,0x61,0xe0,0x60,0x60,0x60, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x66,0x00,0x76,0x00,0x3e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x78,0x00,0x78,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x60,0x0e,0x70,0xfc,0x3f,0xf8,0x1f,0xff,0xff,0xff,0xff,0x00,0x00,0x18,0x60,0x1c,0x60,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x00,0xff,0xff,0xff,0xff,0x18,0x78,0x1c,0x7c,0x0e,0x6e,0x06,0x67,0x86,0x63,0xce,0x61,0xfc,0x60,0x78,0x60,0xff,0xff,0xff,0xff,0x06,0x60,0x06,0x60,0x86,0x61,0x86,0x61,0x86,0x61,0xce,0x73,0xfc,0x3f,0x78,0x1e,0xff,0xff,0xff,0xff,0x80,0x07,0xc0,0x07,0xe0,0x06,0x70,0x06,0x38,0x06,0x1c,0x06,0xfe,0x7f,0xfe,0x7f,0xff,0xff,0xff,0xff,0x7e,0x18,0x7e,0x38,0x66,0x70,0x66,0x60,0x66,0x60,0xe6,0x70,0xc6,0x3f,0x86,0x1f,0xff,0xff,0xff,0xff,0xf8,0x1f,0xfc,0x3f,0x8e,0x71,0x86,0x61,0x86,0x61,0x8e,0x73,0x1c,0x3f,0x18,0x1e,0xff,0xff,0xff,0xff,0x06,0x00,0x06,0x00,0x86,0x7f,0xc6,0x7f,0xe6,0x00,0x76,0x00,0x3e,0x00,0x1e,0x00,0xff,0xff,0xff,0xff,0x78,0x1e,0xfc,0x3f,0xce,0x73,0x86,0x61,0x86,0x61,0xce,0x73,0xfc,0x3f,0x78,0x1e,0xff,0xff,0xff,0xff,0x78,0x00,0xfc,0x00,0xce,0x61,0x86,0x71,0x86,0x39,0xce,0x1d,0xfc,0x0f,0xf8,0x07,0xff,0xff,0xff,0xff,0x00,0x00,0x30,0x0c,0x78,0x1e,0x78,0x1e,0x30,0x0c,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0x7f,0xf0,0x7f,0xb8,0x01,0x9c,0x01,0x8e,0x01,0x8e,0x01,0x9c,0x01,0xb8,0x01,0xf0,0x7f,0xe0,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0xce,0x73,0xfc,0x3f,0x78,0x1e,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x0e,0x70,0x1c,0x38,0x18,0x18,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x06,0x60,0x0e,0x70,0x1c,0x38,0x38,0x1c,0xf0,0x0f,0xe0,0x07,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x06,0x00,0x06,0x00,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x86,0x61,0x86,0x61,0x86,0x61,0x8e,0x71,0x9c,0x7f,0x98,0x3f,0xfe,0x7f,0xfe,0x7f,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x18,0x00,0x38,0x00,0x70,0x00,0x60,0x06,0x60,0x06,0x70,0xfe,0x3f,0xfe,0x1f,0x06,0x00,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0x80,0x01,0xc0,0x03,0xe0,0x07,0x70,0x0e,0x38,0x1c,0x1c,0x38,0x0e,0x70,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0xfe,0x7f,0xfe,0x7f,0x1c,0x00,0x38,0x00,0xf0,0x01,0xf0,0x01,0x38,0x00,0x1c,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x70,0x00,0xe0,0x00,0xc0,0x01,0x80,0x03,0x00,0x07,0x00,0x0e,0xfe,0x7f,0xfe,0x7f,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x0e,0x70,0xfc,0x3f,0xf8,0x1f,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0xce,0x01,0xfc,0x00,0x78,0x00,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x66,0x06,0x6e,0x06,0x3c,0x0e,0x38,0xfc,0x7f,0xf8,0x67,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x07,0x86,0x0f,0x86,0x1d,0xce,0x39,0xfc,0x70,0x78,0x60,0x78,0x18,0xfc,0x38,0xce,0x71,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x8e,0x73,0x1c,0x3f,0x18,0x1e,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0xfe,0x1f,0xfe,0x3f,0x00,0x70,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x70,0xfe,0x3f,0xfe,0x1f,0xfe,0x07,0xfe,0x0f,0x00,0x1c,0x00,0x38,0x00,0x70,0x00,0x70,0x00,0x38,0x00,0x1c,0xfe,0x0f,0xfe,0x07,0xfe,0x1f,0xfe,0x3f,0x00,0x70,0x00,0x70,0x00,0x3e,0x00,0x3e,0x00,0x70,0x00,0x70,0xfe,0x3f,0xfe,0x1f,0x1e,0x78,0x3e,0x7c,0x70,0x0e,0xe0,0x07,0xc0,0x03,0xc0,0x03,0xe0,0x07,0x70,0x0e,0x3e,0x7c,0x1e,0x78,0x7e,0x00,0xfe,0x00,0xc0,0x01,0x80,0x03,0x00,0x7f,0x00,0x7f,0x80,0x03,0xc0,0x01,0xfe,0x00,0x7e,0x00,0x06,0x78,0x06,0x7c,0x06,0x6e,0x06,0x67,0x86,0x63,0xc6,0x61,0xe6,0x60,0x76,0x60,0x3e,0x60,0x1e,0x60,0x00,0x18,0x00,0x3c,0x60,0x7e,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0x66,0xc0,0x7f,0x80,0x7f,0xfe,0x7f,0xfe,0x7f,0x80,0x61,0xc0,0x61,0xe0,0x60,0x60,0x60,0x60,0x60,0xe0,0x70,0xc0,0x3f,0x80,0x1f,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x70,0x00,0x38,0x00,0x18,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x60,0x60,0xe0,0x60,0xc0,0x61,0x80,0x61,0xfe,0x7f,0xfe,0x7f,0x80,0x1f,0xc0,0x3f,0xe0,0x76,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0x66,0xc0,0x07,0x80,0x07,0x80,0x01,0x80,0x01,0xf8,0x7f,0xfc,0x7f,0x8e,0x01,0x86,0x01,0x06,0x00,0x0e,0x00,0x1c,0x00,0x18,0x00,0xe0,0x01,0xf0,0x03,0x38,0x67,0x18,0x66,0x18,0x66,0x18,0x66,0x18,0x66,0x18,0x76,0xf8,0x3f,0xf8,0x1f,0xfe,0x7f,0xfe,0x7f,0x80,0x01,0xc0,0x01,0xe0,0x00,0x60,0x00,0x60,0x00,0xe0,0x00,0xc0,0x7f,0x80,0x7f,0x60,0x60,0x60,0x60,0xe6,0x7f,0xe6,0x7f,0x00,0x60,0x00,0x60,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x18,0x00,0x38,0x00,0x70,0x00,0x60,0x60,0x60,0x60,0x70,0xe6,0x3f,0xe6,0x1f,0xff,0xff,0xff,0xff,0xfe,0x7f,0xfe,0x7f,0x00,0x06,0x00,0x0f,0x80,0x1f,0xc0,0x39,0xe0,0x70,0x60,0x60,0xff,0xff,0xff,0xff,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0x7f,0xe0,0x7f,0x60,0x00,0xe0,0x00,0xc0,0x07,0xc0,0x07,0xe0,0x00,0xe0,0x00,0xc0,0x7f,0x80,0x7f,0xe0,0x7f,0xe0,0x7f,0x80,0x01,0xc0,0x01,0xe0,0x00,0x60,0x00,0x60,0x00,0xe0,0x00,0xc0,0x7f,0x80,0x7f,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xe0,0x70,0xc0,0x3f,0x80,0x1f,0xe0,0x7f,0xe0,0x7f,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0xe0,0x07,0xc0,0x03,0x80,0x01,0x80,0x01,0xc0,0x03,0xe0,0x07,0x60,0x06,0x60,0x06,0x60,0x06,0xc0,0x07,0x80,0x07,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x80,0x01,0xc0,0x01,0xe0,0x00,0x60,0x00,0x60,0x00,0xe0,0x00,0xc0,0x01,0x80,0x01,0x80,0x61,0xc0,0x63,0xe0,0x67,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x7e,0x00,0x3c,0x00,0x18,0x60,0x00,0x60,0x00,0xf8,0x1f,0xf8,0x3f,0x60,0x70,0x60,0x60,0x00,0x60,0x00,0x70,0x00,0x38,0x00,0x18,0xe0,0x1f,0xe0,0x3f,0x00,0x70,0x00,0x60,0x00,0x60,0x00,0x70,0x00,0x38,0x00,0x18,0xe0,0x7f,0xe0,0x7f,0xe0,0x07,0xe0,0x0f,0x00,0x1c,0x00,0x38,0x00,0x70,0x00,0x70,0x00,0x38,0x00,0x1c,0xe0,0x0f,0xe0,0x07,0xe0,0x1f,0xe0,0x3f,0x00,0x70,0x00,0x70,0x00,0x38,0x00,0x38,0x00,0x70,0x00,0x70,0xe0,0x3f,0xe0,0x1f,0x60,0x60,0xe0,0x70,0xc0,0x39,0x80,0x1f,0x00,0x0f,0x00,0x0f,0x80,0x1f,0xc0,0x39,0xe0,0x70,0x60,0x60,0xe0,0x01,0xe0,0x03,0x00,0x67,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x76,0xe0,0x3f,0xe0,0x1f,0x60,0x60,0x60,0x70,0x60,0x78,0x60,0x7c,0x60,0x6e,0x60,0x67,0xe0,0x63,0xe0,0x61,0xe0,0x60,0x60,0x60, diff --git a/radio/src/fonts/std/font_10x14_compressed.png b/radio/src/fonts/std/font_10x14_compressed.png index a240544ee55d225bf35c52e88733b7096a039793..3918dafe1115a725a0f72659bce9d22c3b0ce3c0 100644 GIT binary patch delta 1457 zcmV;i1y1_p3+@Y$Dlq^60002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G` z2i*)A6d^OB^)DQeTPS~4Nkl$}W^1D)7MmW->h*c?7o~VwG#TxKr3*?o7Jnl^=VukaS5ALW{#6?~mfu+XMe|G4 zcxrmA@|<;_vjZL8`Mmm)o!`3NmOVn{yd2R2C48Ukoc0tXqBxoHRO3hOS2><~-m5V@ zj&<+d(YR`dl$|4E{wSw5i&qu+Q}IjGcm?mYO9cf5|6zZk5;#XGEKy2yyk08XW2i zA$;n4SL1S96XYa~MDoL=!-i~p`7j8Ak_R$u2R z(x=cLqihC>Kh<3UZ*8qdPoo!0d+W5?4ewnA>wBY24!W=C8uHOP)ax5%RNhjP{hTvwR;80dfWMF&S~p5c=Z0!dA%p|k?@aB!ht-OTXP#mkUN#RgQc#9!E8T=zBdriO5K; z?wrm#NP06M==xB*{Pc{9m%l248X%Ojm~MYo*8(oe+=J@;$Q@9x&g)rHcl32J0IqsJ_F>w~shR{*a= zaku?M%UDz-)pKIcn(wOadW4r*@~f^9L%VBO4zX-4Xryt?xYVSy53}^a?2Jmb^Q3>K zhc~0b-c_*b17${q@poG9d^3f5G}i2|5vc?yb00JD$6R!XR79$;U1g@RX5GZK@XLyk z)X1->S&SHx0*?L?7h5BC<^?nb>1{VQ;}EL;BHrvT&dtyVv-QA=`g9gu*e*H>ectwr!t-)EHhPuIg{bL|R(6(4&8&HRpNRlaFE_qsWeTyq4l(qaTVBE7S81T}#Bb z#1&~_%eqiS77@Kt_0L0O6p=e6J=iE^Zww3G**azg{@6Z^3O#P+IksL@r8|&_6sj97 zku8P2jB-v_)&~ro6nAb^JzZP-RO*A#`)H4Ol!v}*2J?&)aYO!&^`M?xiWznDu7F=F zAFZ&TS!?j}%ZjvCtg(d`YdSDveJD+l|5v+#oLNgB@uk4kaG}-*E4Dzo%UTt7ou!*n zA7tAQI)dtjSv6YhNw%KTKlg-NjCTR+7i9_x3Q8ZS>_X|G0uTHHQ+i}#a_@4+00000 LNkvXXu0mjfLDt;V delta 1447 zcmV;Y1z7s-3*-xsDlz{6{{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G` z2i*)45iB_A|EgAzTPS}_NklCD%0qVB?iCV|H`@dCJ9 zMDzN7zuzN~Ua!}29LJH|E!=NCm-Advj=uk=l1EWd;Q@*VD!eZoD)P|h$qNx#gtPYA z|JjAuzTaz4Jw7l0qJXC-li562xu9}m`8Ol9e-`+?>jc$bwV{7w^^N6Uw7x{Or3wJCbOewHa5C+w+K-yAvORUbXKi>K>(RTj zcGV6k+eb$KQBG}^t}6Ja(wC_Aik@kgii(Q<=yOL9XtNZSEG63BS)|zOml?w>BjFj} zj3=Y^7(O#mcn^QX+jkg#_p(|&{`~%r^y|$uAmf`+FXM{p7y4d1Zi|8a<*ULuW#y~Z z7f*Y=|DrSatBB3OJ;g40*MpVcC@w_5S7fszPoekSCiE**?QFhVhP$%I@QwW%?BO zG26{R`KLN7;H|Co;PfavkIvU>H@s&RtnbZsa?p82*O1S~p&s9CN98Fs>9@=!9ko$L&l0)xoWW5o z-EZW^W*8ChRUAHx%m{l={aYi-RqILZoHB-bRI7if#3PHoAi>yZeOxX0>1DoW@?tWB zXmIMSiAPJ3*cyBWrNP7t995?lYLitd7V>>%x3(z)DuVT_$c&3eb!<{(Av&HE#K_G z`tE=B(YvE!(XWqpAz4p5-_1Ggod%DdKiaQ1GM_DeWDA4^d^8Hps2NoqkYo86bq}gF zV$S5FLayrjCecjCOiy<)VwU@Md$(LLYgOgQNAq!3BZ$5?(i29{SLw~l9hIng%w*<~ z2Wpq^zN6yRugahXEXq|%x9ZjcMXl;pKlzFScPV0!7ujNXx>~X8E^qT3z3_H}$ z=^fWu(Rvv~?yh9(`igpG&-t46-H)|%b)ocb3pH{(W27usy9aHzTLHWd#nt8$y~d(4 zsh)^EtG~0l>lt5GtzUJG7<#*gC5UBfK_iW8#-S#qeOQGDt9MkgohP+CygMrFSp|P9 z9w>KI7=Net&O38a&)Qo3H6qml%ACha{vk#uqc%tNwX4i+tW_s*E&8%!CN=UaY8E4g zYyn4qiHoffYjpwLg7jWDwju~se-Ur>7w1;s!D<}X5l>gi1(BN?54`u4v(D*p9LMWR zB8Jz9tL`^rGA+GR=+W7lwqG{#QOtj1mf7*P*8?uqH={jYRkCK~JV30xu|OHg&*Y29 zBcc|Rt+_?kD6;O9@?f)+qc$vjXX}_1{A2HFRN%N(=h%8t6?QOqh~74lg$J|XCo1u? z10FDPQk=O_-Rat!rxFil@1u9jqdN3fE10L9h!gTxtOxa+Qq1Ug2mV_1XoqY0tQvz? zUv`wWVvIe$ShoW+#)rxj`G2<)$eFeD5nl@2jTdS>*zpRatBh4)*IBtK@gUoV&>2)O zt*X&tBiVW`_PL@QeZLA&7Znxlg9j?SFB~fJ&_CGXUSbsgP= 'A') skipcol = 4; if ( c == 'T') skipcol = 5; @@ -273,7 +273,7 @@ void lcd_putcAtt(xcoord_t x, uint8_t y, const unsigned char c, LcdFlags flags) uint8_t bb = 0; if (inv) bb = 0xff; #endif -#if !defined(CPUM64) +#if !defined(CPUM64) || defined(EXTSTD) for (int8_t i=0; i<=7; i++) { #else for (int8_t i=0; i<=6; i++) { @@ -281,7 +281,7 @@ void lcd_putcAtt(xcoord_t x, uint8_t y, const unsigned char c, LcdFlags flags) uint8_t b = 0; if ( !i ) { if ( !x || !inv || (flags & BOLD)) { - lcdLastFW++; + lcdNextPos++; p++; continue; } @@ -289,7 +289,7 @@ void lcd_putcAtt(xcoord_t x, uint8_t y, const unsigned char c, LcdFlags flags) else if (i <= 5) b = pgm_read_byte(q++); if (b == 0xff) continue; if (inv) b = ~b; -#if !defined(CPUM64) +#if !defined(CPUM64) || defined(EXTSTD) if (!(flags & BOLD) && (i == 7)) continue; #endif if ((flags & CONDENSED) && i==2) { @@ -306,7 +306,7 @@ void lcd_putcAtt(xcoord_t x, uint8_t y, const unsigned char c, LcdFlags flags) a = b | bb; bb = b; b = a; -#if !defined(CPUM64) +#if !defined(CPUM64) || defined(EXTSTD) if (i == skipcol) continue; #endif } @@ -320,12 +320,12 @@ void lcd_putcAtt(xcoord_t x, uint8_t y, const unsigned char c, LcdFlags flags) if (r> (8-ym8)), b >> (8-ym8)); } -#if !defined(CPUM64) || !defined(FRSKY) +#if !defined(CPUM64) || defined(EXTSTD) if (y && inv) lcd_mask( p, BITMASK((y-1)%8),FORCE); #endif } p++; - lcdLastFW++; + lcdNextPos++; } } } @@ -344,6 +344,8 @@ void lcd_putsiAtt(xcoord_t x, uint8_t y,const pm_char * s,uint8_t idx, LcdFlags void lcd_putsnAtt(xcoord_t x, uint8_t y, const pm_char * s, uint8_t len, LcdFlags mode) { + xcoord_t orig_x = x; + while(len!=0) { unsigned char c; bool setx = false; @@ -359,10 +361,14 @@ void lcd_putsnAtt(xcoord_t x, uint8_t y, const pm_char * s, uint8_t len, LcdFlag break; } - if (!c || x>LCD_W-6) break; - if (c >= 0x20) { + if (setx) { + x = c; + setx = false; + } + else if (!c || x>LCD_W-6) break; + else if (c >= 0x20) { lcd_putcAtt(x, y, c, mode); - x += lcdLastFW; + x = lcdNextPos; } else if (setx) { x = c; @@ -370,7 +376,16 @@ void lcd_putsnAtt(xcoord_t x, uint8_t y, const pm_char * s, uint8_t len, LcdFlag } else if (c == 0x1F) { setx = true; - } + } + else if (c == 0x1E) { + x = orig_x; + y += FH; + if (mode & DBLSIZE) y += FH; +#if defined(CPUARM) + else if (mode & MIDSIZE) y += 4; + else if (mode & SMLSIZE) y--; +#endif + } else { x += (c*FW/2); } @@ -378,6 +393,7 @@ void lcd_putsnAtt(xcoord_t x, uint8_t y, const pm_char * s, uint8_t len, LcdFlag len--; } lcdLastPos = x; + lcdNextPos = x; #if defined(CPUARM) if (mode&MIDSIZE) lcdLastPos += 1; @@ -821,15 +837,15 @@ void lcdDrawTelemetryTopBar() { putsModelName(0, 0, g_model.header.name, g_eeGeneral.currModel, 0); uint8_t att = (g_vbat100mV < g_eeGeneral.vBatWarn ? BLINK : 0); - putsVBat(16*FW+2,0,att); + putsVBat(16*FW+1,0,att); if (g_model.timers[0].mode) { att = (timersStates[0].val<0 ? BLINK : 0); - putsTime(22*FW+5*FWNUM+1, 0, timersStates[0].val, att, att); + putsTime(22*FW+5*FWNUM+3, 0, timersStates[0].val, att, att); lcd_putsiAtt(18*FW+2, 1, STR_VTELEMCHNS, TELEM_TM1, SMLSIZE); } if (g_model.timers[1].mode) { att = (timersStates[1].val<0 ? BLINK : 0); - putsTime(31*FW+5*FWNUM+1, 0, timersStates[1].val, att, att); + putsTime(31*FW+5*FWNUM+3, 0, timersStates[1].val, att, att); lcd_putsiAtt(27*FW+2, 1, STR_VTELEMCHNS, TELEM_TM2, SMLSIZE); } lcd_invert_line(0); @@ -862,21 +878,21 @@ void putsTime(xcoord_t x, uint8_t y, putstime_t tme, LcdFlags att, LcdFlags att2 } if (tme < 0) { - lcd_putcAtt(x - ((att & DBLSIZE) ? FW+3 : ((att & MIDSIZE) ? FW+1 : FWNUM)), y, '-', att); + lcd_putcAtt(x - ((att & DBLSIZE) ? FW+2 : ((att & MIDSIZE) ? FW+0 : FWNUM)), y, '-', att); tme = -tme; } qr = div(tme, 60); #if defined(PCBTARANIS) +#define separator ':' if (att & MIDSIZE) { div_t qr2 = div(qr.quot, 60); - LCD_2DOTS(x+2*8-6, y, att); lcd_outdezNAtt(x, y, qr2.quot, att|LEADING0|LEFT, 2); + lcd_putcAtt(lcdLastPos, y, separator, att&att2); qr.quot = qr2.rem; x += 2*8+1; } -#define separator ':' #elif defined(CPUARM) char separator = ':'; if (tme >= 3600 && (~att & DBLSIZE)) { @@ -886,30 +902,9 @@ void putsTime(xcoord_t x, uint8_t y, putstime_t tme, LcdFlags att, LcdFlags att2 #else #define separator ':' #endif - - uint8_t x2, x3; - if (att & DBLSIZE) { - x2 = x+2*(FW+FWNUM)-3; - x3 = x+2*(FW+FWNUM)+FW-2; - } - else if (att & MIDSIZE) { - x2 = x+2*8-6; - x3 = x+2*8+1; - } - else { - x2 = x+2*FWNUM-1; - x3 = x+2*FWNUM-1+FW; - } - -#if defined(CPUARM) - if (att & MIDSIZE) { - LCD_2DOTS(x2, y, att); - } - else -#endif - lcd_putcAtt(x2, y, separator, att&att2); lcd_outdezNAtt(x, y, qr.quot, att|LEADING0|LEFT, 2); - lcd_outdezNAtt(x3, y, qr.rem, att2|LEADING0|LEFT, 2); + lcd_putcAtt(lcdLastPos, y, separator, att&att2); + lcd_outdezNAtt(lcdNextPos, y, qr.rem, att2|LEADING0|LEFT, 2); } // TODO to be optimized with putsTelemetryValue diff --git a/radio/src/lcd.h b/radio/src/lcd.h index 3d5cc221e..4cfa02c15 100644 --- a/radio/src/lcd.h +++ b/radio/src/lcd.h @@ -139,6 +139,7 @@ extern uint8_t displayBuf[DISPLAY_BUF_SIZE]; extern uint8_t lcdLastPos; +extern uint8_t lcdNextPos; #if defined(PCBSTD) && defined(VOICE) extern volatile uint8_t LcdLock ; @@ -227,14 +228,14 @@ void lcdDrawTelemetryTopBar(); lcd_vline(xx-1,yy-ll,ll); \ lcd_vline(xx ,yy-ll,ll); \ lcd_vline(xx+1,yy-ll,ll); - +/* #define LCD_2DOTS(x, y, att) \ lcd_putcAtt(x, y, ' ', att); \ lcd_vline(x+4, y+3, 2); \ lcd_vline(x+5, y+3, 2); \ lcd_vline(x+4, y+8, 2); \ lcd_vline(x+5, y+8, 2); - +*/ void lcd_img(xcoord_t x, uint8_t y, const pm_uchar * img, uint8_t idx, LcdFlags att=0); void lcd_bmp(xcoord_t x, uint8_t y, const pm_uchar * img, uint8_t offset=0, uint8_t width=0); #define LCD_ICON(x, y, icon) lcd_bmp(x, y, icons, icon) From 7e5d0a8bba6ab055cd7b031c0696ac14f3023872 Mon Sep 17 00:00:00 2001 From: mhotar Date: Thu, 26 Dec 2013 14:58:10 +0100 Subject: [PATCH 035/308] Some graphics glitches corrected and some more flash savings All features costs only 4bytes so far --- radio/src/gui/menu_general.cpp | 13 +++++++------ radio/src/lcd.cpp | 11 ++++++----- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/radio/src/gui/menu_general.cpp b/radio/src/gui/menu_general.cpp index e6b7956ca..6ee06bbdd 100644 --- a/radio/src/gui/menu_general.cpp +++ b/radio/src/gui/menu_general.cpp @@ -62,7 +62,7 @@ LanguagePack * languagePacks[] = { &itLanguagePack, &plLanguagePack, &ptLanguagePack, - &skLanguagePack, + &skLanguagePack, &seLanguagePack, NULL }; @@ -1065,13 +1065,14 @@ void menuGeneralDiagKeys(uint8_t event) lcd_puts(14*FW, 3*FH, STR_VTRIM); for(uint8_t i=0; i<9; i++) { - uint8_t y = i*FH; //+FH; #if !defined(PCBTARANIS) - if(i>(SW_ID0-SW_BASE)) y-=FH; //overwrite ID0 + uint8_t y = i*FH-FH; + if(i==(SW_ID0-SW_BASE)) continue; //ignore ID0 putsSwitches(8*FW, y, i+1, 0); //ohne off,on displayKeyState(11*FW+2, y, (EnumKeys)(SW_BASE+i)); -#endif - +#else + uint8_t y = i*FH; +#endif if (i<8) { y = i/2*FH+FH*4; lcd_img(14*FW, y, sticks, i/2, 0); @@ -1113,7 +1114,7 @@ void menuGeneralDiagAna(uint8_t event) uint8_t y = 1+FH+(i/2)*FH; uint8_t x = i&1 ? 64+5 : 0; putsStrIdx(x, y, PSTR("A"), i+1); - lcd_putc(x+2*FWNUM, y, ':'); + lcd_putc(lcdNextPos, y, ':'); lcd_outhex4(x+3*FW-1, y, anaIn(i)); lcd_outdez8(x+10*FW-1, y, (int16_t)calibratedStick[CONVERT_MODE(i)]*25/256); } diff --git a/radio/src/lcd.cpp b/radio/src/lcd.cpp index 34994aa0d..c70b668d9 100644 --- a/radio/src/lcd.cpp +++ b/radio/src/lcd.cpp @@ -923,11 +923,11 @@ void putsStrIdx(xcoord_t x, uint8_t y, const pm_char *str, uint8_t idx, LcdFlags { lcd_putsAtt(x, y, str, att); - if (att & SMLSIZE) - lcd_outdezNAtt(lcdLastPos+1, y, idx, att|LEFT, 2); - else - lcd_outdezNAtt(lcdLastPos, y, idx, att|LEFT, 2); - +// if (att & SMLSIZE) +// lcd_outdezNAtt(lcdLastPos+1, y, idx, att|LEFT, 2); +// else + lcd_outdezNAtt(lcdNextPos, y, idx, att|LEFT, 2); +/* #if defined(CPUARM) uint8_t lastPos = lcdLastPos; #endif @@ -937,6 +937,7 @@ void putsStrIdx(xcoord_t x, uint8_t y, const pm_char *str, uint8_t idx, LcdFlags #if defined(CPUARM) lcdLastPos = lastPos; #endif +*/ } void putsMixerSource(xcoord_t x, uint8_t y, uint8_t idx, LcdFlags att) From 1f4086f3811d354f4204ba5c8fbf85b27ba4880e Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Fri, 27 Dec 2013 00:04:22 +0100 Subject: [PATCH 036/308] New donations, thanks! --- DONATIONS.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/DONATIONS.txt b/DONATIONS.txt index f0b906af5..1e6191c44 100644 --- a/DONATIONS.txt +++ b/DONATIONS.txt @@ -256,3 +256,5 @@ Netanel Hobara Cameron Galipo Doug Schafer Pietro Rossin +Earl Killingsworth +Victor B Wright From bbae0f7533df9565d6ede2a7f4637eafc75abe17 Mon Sep 17 00:00:00 2001 From: mhotar Date: Fri, 27 Dec 2013 01:44:58 +0100 Subject: [PATCH 037/308] layout fixes --- radio/src/gui/menu_general.cpp | 2 +- radio/src/gui/view_main.cpp | 2 +- radio/src/gui/view_telemetry.cpp | 4 +-- radio/src/lcd.cpp | 47 ++++++++++++-------------------- 4 files changed, 22 insertions(+), 33 deletions(-) diff --git a/radio/src/gui/menu_general.cpp b/radio/src/gui/menu_general.cpp index 6ee06bbdd..e1b799e0b 100644 --- a/radio/src/gui/menu_general.cpp +++ b/radio/src/gui/menu_general.cpp @@ -258,7 +258,7 @@ void menuGeneralSetup(uint8_t event) case ITEM_SETUP_TIME: lcd_putsLeft(y, STR_TIME); - lcd_putc(RADIO_SETUP_TIME_COLUMN-1, y, ':'); lcd_putc(RADIO_SETUP_TIME_COLUMN+3*FW-4, y, ':'); + lcd_putc(RADIO_SETUP_TIME_COLUMN+1, y, ':'); lcd_putc(RADIO_SETUP_TIME_COLUMN+3*FW-2, y, ':'); for (uint8_t j=0; j<3; j++) { uint8_t rowattr = (m_posHorz==j ? attr : 0); switch (j) { diff --git a/radio/src/gui/view_main.cpp b/radio/src/gui/view_main.cpp index 51465631d..6855ab618 100644 --- a/radio/src/gui/view_main.cpp +++ b/radio/src/gui/view_main.cpp @@ -318,7 +318,7 @@ void displayTopBar() /* RTC time */ struct gtm t; gettime(&t); - lcd_putcAtt(BAR_TIME_X-1, BAR_Y+1, ':', BLINK); + lcd_putcAtt(BAR_TIME_X+1, BAR_Y+1, ':', BLINK); lcd_outdezNAtt(BAR_TIME_X+1, BAR_Y+1, t.tm_hour, LEADING0, 2); lcd_outdezNAtt(BAR_TIME_X+3*FWNUM-1, BAR_Y+1, t.tm_min, LEADING0, 2); diff --git a/radio/src/gui/view_telemetry.cpp b/radio/src/gui/view_telemetry.cpp index ff06cd142..0bb2df709 100644 --- a/radio/src/gui/view_telemetry.cpp +++ b/radio/src/gui/view_telemetry.cpp @@ -100,9 +100,9 @@ void displayGpsTime() { uint8_t att = (TELEMETRY_STREAMING() ? LEFT|LEADING0 : LEFT|LEADING0|BLINK); lcd_outdezNAtt(CENTER_OFS+6*FW+5, STATUS_BAR_Y, frskyData.hub.hour, att, 2); - lcd_putcAtt(CENTER_OFS+8*FW+2, STATUS_BAR_Y, ':', att); + lcd_putcAtt(CENTER_OFS+8*FW+4, STATUS_BAR_Y, ':', att); lcd_outdezNAtt(CENTER_OFS+9*FW+2, STATUS_BAR_Y, frskyData.hub.min, att, 2); - lcd_putcAtt(CENTER_OFS+11*FW-1, STATUS_BAR_Y, ':', att); + lcd_putcAtt(CENTER_OFS+11*FW+1, STATUS_BAR_Y, ':', att); lcd_outdezNAtt(CENTER_OFS+12*FW-1, STATUS_BAR_Y, frskyData.hub.sec, att, 2); lcd_status_line(); } diff --git a/radio/src/lcd.cpp b/radio/src/lcd.cpp index c70b668d9..522399160 100644 --- a/radio/src/lcd.cpp +++ b/radio/src/lcd.cpp @@ -265,7 +265,7 @@ void lcd_putcAtt(xcoord_t x, uint8_t y, const unsigned char c, LcdFlags flags) uint8_t ym8 = (y & 0x07); #if defined(BOLD_FONT) -#if !defined(CPUM64) || defined(EXTSTD) +#if !defined(CPUM64) || defined(EXTSTD) || 1 uint8_t skipcol = 7; if ( c >= 'A') skipcol = 4; if ( c == 'T') skipcol = 5; @@ -273,7 +273,7 @@ void lcd_putcAtt(xcoord_t x, uint8_t y, const unsigned char c, LcdFlags flags) uint8_t bb = 0; if (inv) bb = 0xff; #endif -#if !defined(CPUM64) || defined(EXTSTD) +#if !defined(CPUM64) || defined(EXTSTD) || 1 for (int8_t i=0; i<=7; i++) { #else for (int8_t i=0; i<=6; i++) { @@ -289,7 +289,7 @@ void lcd_putcAtt(xcoord_t x, uint8_t y, const unsigned char c, LcdFlags flags) else if (i <= 5) b = pgm_read_byte(q++); if (b == 0xff) continue; if (inv) b = ~b; -#if !defined(CPUM64) || defined(EXTSTD) +#if !defined(CPUM64) || defined(EXTSTD) || 1 if (!(flags & BOLD) && (i == 7)) continue; #endif if ((flags & CONDENSED) && i==2) { @@ -306,7 +306,7 @@ void lcd_putcAtt(xcoord_t x, uint8_t y, const unsigned char c, LcdFlags flags) a = b | bb; bb = b; b = a; -#if !defined(CPUM64) || defined(EXTSTD) +#if !defined(CPUM64) || defined(EXTSTD) || 1 if (i == skipcol) continue; #endif } @@ -321,7 +321,11 @@ void lcd_putcAtt(xcoord_t x, uint8_t y, const unsigned char c, LcdFlags flags) LCD_BYTE_FILTER(r, ~(0xff >> (8-ym8)), b >> (8-ym8)); } #if !defined(CPUM64) || defined(EXTSTD) +#if defined(TARANIS) if (y && inv) lcd_mask( p, BITMASK((y-1)%8),FORCE); +#else + if (y && inv) *p |= BITMASK((y-1)%8); +#endif #endif } p++; @@ -344,7 +348,7 @@ void lcd_putsiAtt(xcoord_t x, uint8_t y,const pm_char * s,uint8_t idx, LcdFlags void lcd_putsnAtt(xcoord_t x, uint8_t y, const pm_char * s, uint8_t len, LcdFlags mode) { - xcoord_t orig_x = x; +// xcoord_t orig_x = x; while(len!=0) { unsigned char c; @@ -377,15 +381,15 @@ void lcd_putsnAtt(xcoord_t x, uint8_t y, const pm_char * s, uint8_t len, LcdFlag else if (c == 0x1F) { setx = true; } - else if (c == 0x1E) { - x = orig_x; - y += FH; - if (mode & DBLSIZE) y += FH; -#if defined(CPUARM) - else if (mode & MIDSIZE) y += 4; - else if (mode & SMLSIZE) y--; -#endif - } +// else if (c == 0x1E) { +// x = orig_x; +// y += FH; +// if (mode & DBLSIZE) y += FH; +//#if defined(CPUARM) +// else if (mode & MIDSIZE) y += 4; +// else if (mode & SMLSIZE) y--; +//#endif +// } else { x += (c*FW/2); } @@ -922,22 +926,7 @@ void putsVBat(xcoord_t x, uint8_t y, LcdFlags att) void putsStrIdx(xcoord_t x, uint8_t y, const pm_char *str, uint8_t idx, LcdFlags att) { lcd_putsAtt(x, y, str, att); - -// if (att & SMLSIZE) -// lcd_outdezNAtt(lcdLastPos+1, y, idx, att|LEFT, 2); -// else lcd_outdezNAtt(lcdNextPos, y, idx, att|LEFT, 2); -/* -#if defined(CPUARM) - uint8_t lastPos = lcdLastPos; -#endif - - lcd_putsAtt(x, y, str, att); - -#if defined(CPUARM) - lcdLastPos = lastPos; -#endif -*/ } void putsMixerSource(xcoord_t x, uint8_t y, uint8_t idx, LcdFlags att) From 1be0977330e4ca30bbb8d6615a9c3a5ba541fdc4 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Fri, 27 Dec 2013 10:33:45 +0100 Subject: [PATCH 038/308] Fix for #197 (non audio chunks > 256 bytes) --- radio/src/audio_arm.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/radio/src/audio_arm.cpp b/radio/src/audio_arm.cpp index 83988b215..27807b7d9 100644 --- a/radio/src/audio_arm.cpp +++ b/radio/src/audio_arm.cpp @@ -380,10 +380,13 @@ int AudioQueue::mixWav(AudioContext &context, AudioBuffer *buffer, int volume, u result = FR_DENIED; } while (result == FR_OK && memcmp(wavSamplesPtr, "data", 4) != 0) { - result = (size < 256 ? f_read(&context.state.wav.file, wavBuffer, size+8, &read) : FR_DENIED); - if (read != size+8) result = FR_DENIED; - wavSamplesPtr = (uint32_t *)(wavBuffer + size); - size = wavSamplesPtr[1]; + result = f_lseek(&context.state.wav.file, f_tell(&context.state.wav.file)+size); + if (result == FR_OK) { + result = f_read(&context.state.wav.file, wavBuffer, 8, &read); + if (read != 8) result = FR_DENIED; + wavSamplesPtr = (uint32_t *)wavBuffer; + size = wavSamplesPtr[1]; + } } context.state.wav.size = size; } From c33e7c313cf1c050a01061ca307b1431655c726e Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Mon, 30 Dec 2013 08:39:21 +0100 Subject: [PATCH 039/308] New donations, thanks\! --- DONATIONS.txt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/DONATIONS.txt b/DONATIONS.txt index 1e6191c44..3f22b751f 100644 --- a/DONATIONS.txt +++ b/DONATIONS.txt @@ -258,3 +258,9 @@ Doug Schafer Pietro Rossin Earl Killingsworth Victor B Wright +Terry McKinley +Марков Алексей +Offer Shmuely +Ian Lobley +Keith Hertzog + From 304eaae7512be27d705788432d6682bb82dda162 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Mon, 30 Dec 2013 15:11:15 +0100 Subject: [PATCH 040/308] Update DONATIONS.txt --- DONATIONS.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/DONATIONS.txt b/DONATIONS.txt index 3f22b751f..7f6000467 100644 --- a/DONATIONS.txt +++ b/DONATIONS.txt @@ -263,4 +263,3 @@ Terry McKinley Offer Shmuely Ian Lobley Keith Hertzog - From 5fbaefa004e8a8eb9c9e0c5f214bd6bbae25d536 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Mon, 30 Dec 2013 15:15:06 +0100 Subject: [PATCH 041/308] Jenkins test --- DONATIONS.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/DONATIONS.txt b/DONATIONS.txt index 7f6000467..3f22b751f 100644 --- a/DONATIONS.txt +++ b/DONATIONS.txt @@ -263,3 +263,4 @@ Terry McKinley Offer Shmuely Ian Lobley Keith Hertzog + From 337757f8c696033e6d1aaeb90378eed233b1bdbc Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Mon, 30 Dec 2013 15:20:10 +0100 Subject: [PATCH 042/308] Jenkins test++ --- DONATIONS.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/DONATIONS.txt b/DONATIONS.txt index 3f22b751f..7f6000467 100644 --- a/DONATIONS.txt +++ b/DONATIONS.txt @@ -263,4 +263,3 @@ Terry McKinley Offer Shmuely Ian Lobley Keith Hertzog - From d779aa732c6e3e3cc56f75133f42fff5445d59e9 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Mon, 30 Dec 2013 15:34:08 +0100 Subject: [PATCH 043/308] Jenkins test++ --- DONATIONS.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/DONATIONS.txt b/DONATIONS.txt index 7f6000467..3f22b751f 100644 --- a/DONATIONS.txt +++ b/DONATIONS.txt @@ -263,3 +263,4 @@ Terry McKinley Offer Shmuely Ian Lobley Keith Hertzog + From 7313d13532a985d4df26093ee8df96f93022cb7e Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Mon, 30 Dec 2013 15:53:25 +0100 Subject: [PATCH 044/308] Jenkins test++ --- DONATIONS.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/DONATIONS.txt b/DONATIONS.txt index 3f22b751f..7f6000467 100644 --- a/DONATIONS.txt +++ b/DONATIONS.txt @@ -263,4 +263,3 @@ Terry McKinley Offer Shmuely Ian Lobley Keith Hertzog - From 7a1f11862e128b66d63a9c1fae6e1c6da96729e8 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Mon, 30 Dec 2013 16:26:30 +0100 Subject: [PATCH 045/308] Update DONATIONS.txt --- DONATIONS.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/DONATIONS.txt b/DONATIONS.txt index 7f6000467..1891af975 100644 --- a/DONATIONS.txt +++ b/DONATIONS.txt @@ -45,7 +45,7 @@ Martin Wilson Joe Street John Holdsworth Daniel Schwartz -Dean Church +Dean Church (monthly) Michael Halse David Mark Ted Moss @@ -263,3 +263,4 @@ Terry McKinley Offer Shmuely Ian Lobley Keith Hertzog + From 86ee17eba0f1f96aecee9be1ff6aa80f201d3165 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Mon, 30 Dec 2013 16:37:01 +0100 Subject: [PATCH 046/308] Jenkins test++ --- DONATIONS.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/DONATIONS.txt b/DONATIONS.txt index 1891af975..94e521d82 100644 --- a/DONATIONS.txt +++ b/DONATIONS.txt @@ -263,4 +263,3 @@ Terry McKinley Offer Shmuely Ian Lobley Keith Hertzog - From ed61ce0a19d444e79e8716e79c41dd6e7d371823 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Mon, 30 Dec 2013 16:44:37 +0100 Subject: [PATCH 047/308] Jenkins test++ --- DONATIONS.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/DONATIONS.txt b/DONATIONS.txt index 94e521d82..1891af975 100644 --- a/DONATIONS.txt +++ b/DONATIONS.txt @@ -263,3 +263,4 @@ Terry McKinley Offer Shmuely Ian Lobley Keith Hertzog + From 0d49c5eee6c0964e5101c497ce899d60f2a17cd1 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Mon, 30 Dec 2013 16:49:38 +0100 Subject: [PATCH 048/308] Jenkins test++ --- DONATIONS.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/DONATIONS.txt b/DONATIONS.txt index 1891af975..94e521d82 100644 --- a/DONATIONS.txt +++ b/DONATIONS.txt @@ -263,4 +263,3 @@ Terry McKinley Offer Shmuely Ian Lobley Keith Hertzog - From 91da126cba042b0b64cdb3af3d8d0c990eba9eba Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Tue, 31 Dec 2013 13:05:26 +0100 Subject: [PATCH 049/308] Update DONATIONS.txt --- DONATIONS.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/DONATIONS.txt b/DONATIONS.txt index 94e521d82..161a49fb6 100644 --- a/DONATIONS.txt +++ b/DONATIONS.txt @@ -263,3 +263,4 @@ Terry McKinley Offer Shmuely Ian Lobley Keith Hertzog +Stéphane Fortas From ef28d7e2333e4b26febcf1c0e3497c765de357eb Mon Sep 17 00:00:00 2001 From: mhotar Date: Wed, 1 Jan 2014 20:51:02 +0100 Subject: [PATCH 050/308] Layout fixes --- radio/src/lcd.cpp | 58 +++++++++++++++++++-------------- radio/src/translations/cz.h.txt | 26 +++++++++------ radio/src/translations/de.h.txt | 27 ++++++++------- radio/src/translations/en.h | 22 ++++++++----- radio/src/translations/es.h.txt | 27 ++++++++------- radio/src/translations/fr.h.txt | 27 ++++++++------- radio/src/translations/it.h.txt | 27 ++++++++------- radio/src/translations/pl.h.txt | 26 +++++++++------ radio/src/translations/pt.h.txt | 27 ++++++++------- radio/src/translations/se.h.txt | 27 ++++++++------- 10 files changed, 175 insertions(+), 119 deletions(-) diff --git a/radio/src/lcd.cpp b/radio/src/lcd.cpp index 522399160..24089ff37 100644 --- a/radio/src/lcd.cpp +++ b/radio/src/lcd.cpp @@ -265,7 +265,7 @@ void lcd_putcAtt(xcoord_t x, uint8_t y, const unsigned char c, LcdFlags flags) uint8_t ym8 = (y & 0x07); #if defined(BOLD_FONT) -#if !defined(CPUM64) || defined(EXTSTD) || 1 +#if !defined(CPUM64) || defined(EXTSTD) uint8_t skipcol = 7; if ( c >= 'A') skipcol = 4; if ( c == 'T') skipcol = 5; @@ -273,7 +273,7 @@ void lcd_putcAtt(xcoord_t x, uint8_t y, const unsigned char c, LcdFlags flags) uint8_t bb = 0; if (inv) bb = 0xff; #endif -#if !defined(CPUM64) || defined(EXTSTD) || 1 +#if !defined(CPUM64) || defined(EXTSTD) for (int8_t i=0; i<=7; i++) { #else for (int8_t i=0; i<=6; i++) { @@ -289,7 +289,7 @@ void lcd_putcAtt(xcoord_t x, uint8_t y, const unsigned char c, LcdFlags flags) else if (i <= 5) b = pgm_read_byte(q++); if (b == 0xff) continue; if (inv) b = ~b; -#if !defined(CPUM64) || defined(EXTSTD) || 1 +#if !defined(CPUM64) || defined(EXTSTD) if (!(flags & BOLD) && (i == 7)) continue; #endif if ((flags & CONDENSED) && i==2) { @@ -306,7 +306,7 @@ void lcd_putcAtt(xcoord_t x, uint8_t y, const unsigned char c, LcdFlags flags) a = b | bb; bb = b; b = a; -#if !defined(CPUM64) || defined(EXTSTD) || 1 +#if !defined(CPUM64) || defined(EXTSTD) if (i == skipcol) continue; #endif } @@ -314,18 +314,24 @@ void lcd_putcAtt(xcoord_t x, uint8_t y, const unsigned char c, LcdFlags flags) if (p> (8-ym8)), b >> (8-ym8)); + LCD_BYTE_FILTER(r, ~mask, b >> (8-ym8)); + } + +#if defined(PCBTARANIS) + if (inv) { + if (ym8) lcd_mask(p, 0x01 << (ym8-1), FORCE); + else if (y) { + ASSERT_IN_DISPLAY(p - LCD_W); + lcd_mask(p - LCD_W, 0x80, FORCE); + } } -#if !defined(CPUM64) || defined(EXTSTD) -#if defined(TARANIS) - if (y && inv) lcd_mask( p, BITMASK((y-1)%8),FORCE); #else - if (y && inv) *p |= BITMASK((y-1)%8); -#endif + if (inv && (ym8 == 1)) *p |= 0x01; #endif } p++; @@ -348,11 +354,12 @@ void lcd_putsiAtt(xcoord_t x, uint8_t y,const pm_char * s,uint8_t idx, LcdFlags void lcd_putsnAtt(xcoord_t x, uint8_t y, const pm_char * s, uint8_t len, LcdFlags mode) { -// xcoord_t orig_x = x; - +#if defined(CPUARM) + xcoord_t orig_x = x; +#endif + bool setx = false; while(len!=0) { unsigned char c; - bool setx = false; switch (mode & (BSS+ZCHAR)) { case BSS: c = *s; @@ -378,20 +385,21 @@ void lcd_putsnAtt(xcoord_t x, uint8_t y, const pm_char * s, uint8_t len, LcdFlag x = c; setx = false; } - else if (c == 0x1F) { + else if (c == 0x1F) { //X-coord prefix setx = true; } -// else if (c == 0x1E) { -// x = orig_x; -// y += FH; -// if (mode & DBLSIZE) y += FH; -//#if defined(CPUARM) -// else if (mode & MIDSIZE) y += 4; -// else if (mode & SMLSIZE) y--; -//#endif -// } +#if defined(CPUARM) + else if (c == 0x1E) { //NEWLINE + x = orig_x; + y += FH; + if (mode & DBLSIZE) y += FH; + else if (mode & MIDSIZE) y += 4; + else if (mode & SMLSIZE) y--; + if (y >= LCD_H) break; + } +#endif else { - x += (c*FW/2); + x += (c*FW/2); //EXTENDED SPACE } s++; len--; diff --git a/radio/src/translations/cz.h.txt b/radio/src/translations/cz.h.txt index 145783ff3..86d144dce 100644 --- a/radio/src/translations/cz.h.txt +++ b/radio/src/translations/cz.h.txt @@ -33,6 +33,12 @@ * !!!!! DO NOT EDIT cz.h - EDIT cz.h.txt INSTEAD !!!!!!! * */ + /* Fotmatting octal codes available in TR_ strings: + * \037\x -sets LCD x-coord (x value in octal) + * \036 -newline (ARM boards only) + * \001 to \035 -extended spacing (value * FW/2) + * \0 -ends actual string + */ // NON ZERO TERMINATED STRINGS #define LEN_OFFON "\003" @@ -484,22 +490,22 @@ #define OFS_RX 4 #define TR_ACCEL "Acc:" #define TR_NODATA CENTER "NO DATA" -#define TR_TM1TM2 "TM1\032TM2" -#define TR_THRTHP "THR\032TH%" +#define TR_TM1TM2 "TM1\037\146TM2" +#define TR_THRTHP "THR\037\146TH%" #define TR_TOT "TOT" -#define TR_TMR1LATMAXUS "Tmr1Lat max\006us" -#define STR_US (STR_TMR1LATMAXUS+12) -#define TR_TMR1LATMINUS "Tmr1Lat min\006us" -#define TR_TMR1JITTERUS "Tmr1 Jitter\006us" +#define TR_TMR1LATMAXUS "Tmr1Lat max\037\124us" +#define STR_US (STR_TMR1LATMAXUS+13) +#define TR_TMR1LATMINUS "Tmr1Lat min\037\124us" +#define TR_TMR1JITTERUS "Tmr1 Jitter\037\124us" #if defined(CPUARM) - #define TR_TMIXMAXMS "Tmix max\012ms" + #define TR_TMIXMAXMS "Tmix max" + #define TR_FREESTACKMINB "Free Stack" #else - #define TR_TMIXMAXMS "Tmix max\014ms" + #define TR_TMIXMAXMS "Tmix max\037\124ms" + #define TR_FREESTACKMINB "Free Stack\037\124b" #endif -#define TR_T10MSUS "T10ms\016us" -#define TR_FREESTACKMINB "Free Stack\010b" #define TR_MENUTORESET CENTER TR_ENTER" >> Reset" #define TR_PPM "PPM" #define TR_CH "CH" diff --git a/radio/src/translations/de.h.txt b/radio/src/translations/de.h.txt index 8023eaf06..331eb0976 100644 --- a/radio/src/translations/de.h.txt +++ b/radio/src/translations/de.h.txt @@ -32,7 +32,12 @@ * * !!!!! DO NOT EDIT de.h - EDIT de.h.txt INSTEAD !!!!!!! */ - + /* Fotmatting octal codes available in TR_ strings: + * \037\x -sets LCD x-coord (x value in octal) + * \036 -newline (ARM boards only) + * \001 to \035 -extended spacing (value * FW/2) + * \0 -ends actual string + */ // NON ZERO TERMINATED STRINGS #define LEN_OFFON "\003" @@ -484,22 +489,22 @@ #define OFS_RX 4 #define TR_ACCEL "Acc:" #define TR_NODATA CENTER"NO DATA" -#define TR_TM1TM2 "TM1\032TM2" -#define TR_THRTHP "THR\032TH%" +#define TR_TM1TM2 "TM1\037\146TM2" +#define TR_THRTHP "THR\037\146TH%" #define TR_TOT "TOT" -#define TR_TMR1LATMAXUS "Tmr1Lat max\006us" -#define STR_US (STR_TMR1LATMAXUS+12) -#define TR_TMR1LATMINUS "Tmr1Lat min\006us" -#define TR_TMR1JITTERUS "Tmr1 Jitter\006us" +#define TR_TMR1LATMAXUS "Tmr1Lat max\037\124us" +#define STR_US (STR_TMR1LATMAXUS+13) +#define TR_TMR1LATMINUS "Tmr1Lat min\037\124us" +#define TR_TMR1JITTERUS "Tmr1 Jitter\037\124us" #if defined(CPUARM) - #define TR_TMIXMAXMS "Tmix max\012ms" + #define TR_TMIXMAXMS "Tmix max" + #define TR_FREESTACKMINB "Free Stack" #else - #define TR_TMIXMAXMS "Tmix max\014ms" + #define TR_TMIXMAXMS "Tmix max\037\124ms" + #define TR_FREESTACKMINB "Free Stack\037\124b" #endif -#define TR_T10MSUS "T10ms\016us" -#define TR_FREESTACKMINB "Free Stack\010b" #define TR_MENUTORESET CENTER TR_ENTER" f\205r Reset" #define TR_PPM "PPM" #define TR_CH "CH" diff --git a/radio/src/translations/en.h b/radio/src/translations/en.h index 62876daf9..05bc9cbbf 100644 --- a/radio/src/translations/en.h +++ b/radio/src/translations/en.h @@ -33,6 +33,12 @@ * GNU General Public License for more details. * */ + /* Fotmatting octal codes available in TR_ strings: + * \037\x -sets LCD x-coord (x value in octal) + * \036 -newline (ARM boards only) + * \001 to \035 -extended spacing (value * FW/2) + * \0 -ends actual string + */ // NON ZERO TERMINATED STRINGS #define LEN_OFFON "\003" @@ -488,20 +494,20 @@ #define OFS_RX 4 #define TR_ACCEL "Acc:" #define TR_NODATA CENTER "NO DATA" -#define TR_TM1TM2 "TM1\032TM2" -#define TR_THRTHP "THR\032TH%" +#define TR_TM1TM2 "TM1\037\146TM2" +#define TR_THRTHP "THR\037\146TH%" #define TR_TOT "TOT" -#define TR_TMR1LATMAXUS "Tmr1Lat max\006us" -#define STR_US (STR_TMR1LATMAXUS+12) -#define TR_TMR1LATMINUS "Tmr1Lat min\006us" -#define TR_TMR1JITTERUS "Tmr1 Jitter\006us" +#define TR_TMR1LATMAXUS "Tmr1Lat max\037\124us" +#define STR_US (STR_TMR1LATMAXUS+13) +#define TR_TMR1LATMINUS "Tmr1Lat min\037\124us" +#define TR_TMR1JITTERUS "Tmr1 Jitter\037\124us" #if defined(CPUARM) #define TR_TMIXMAXMS "Tmix max" #define TR_FREESTACKMINB "Free Stack" #else - #define TR_TMIXMAXMS "Tmix max\014ms" - #define TR_FREESTACKMINB "Free Stack\010b" + #define TR_TMIXMAXMS "Tmix max\037\124ms" + #define TR_FREESTACKMINB "Free Stack\037\124b" #endif #define TR_MENUTORESET CENTER TR_ENTER " to reset" diff --git a/radio/src/translations/es.h.txt b/radio/src/translations/es.h.txt index 11f626168..8c12fa680 100644 --- a/radio/src/translations/es.h.txt +++ b/radio/src/translations/es.h.txt @@ -32,7 +32,12 @@ * * !!!!! DO NOT EDIT es.h - EDIT es.h.txt INSTEAD !!!!!!! */ - + /* Fotmatting octal codes available in TR_ strings: + * \037\x -sets LCD x-coord (x value in octal) + * \036 -newline (ARM boards only) + * \001 to \035 -extended spacing (value * FW/2) + * \0 -ends actual string + */ // NON ZERO TERMINATED STRINGS #define LEN_OFFON "\003" @@ -484,22 +489,22 @@ #define OFS_RX 4 #define TR_ACCEL "Acc:" #define TR_NODATA CENTER "SIN DATOS" -#define TR_TM1TM2 "TM1\032TM2" -#define TR_THRTHP "THR\032TH%" +#define TR_TM1TM2 "TM1\037\146TM2" +#define TR_THRTHP "THR\037\146TH%" #define TR_TOT "TOT" -#define TR_TMR1LATMAXUS "Tmr1Lat max\006us" -#define STR_US (STR_TMR1LATMAXUS+12) -#define TR_TMR1LATMINUS "Tmr1Lat min\006us" -#define TR_TMR1JITTERUS "Tmr1 Jitter\006us" +#define TR_TMR1LATMAXUS "Tmr1Lat max\037\124us" +#define STR_US (STR_TMR1LATMAXUS+13) +#define TR_TMR1LATMINUS "Tmr1Lat min\037\124us" +#define TR_TMR1JITTERUS "Tmr1 Jitter\037\124us" #if defined(CPUARM) - #define TR_TMIXMAXMS "Tmix max\012ms" + #define TR_TMIXMAXMS "Tmix max" + #define TR_FREESTACKMINB "Free Stack" #else - #define TR_TMIXMAXMS "Tmix max\014ms" + #define TR_TMIXMAXMS "Tmix max\037\124ms" + #define TR_FREESTACKMINB "Pila LIbre\037\124b" #endif -#define TR_T10MSUS "T10ms\016us" -#define TR_FREESTACKMINB "Pila LIbre\010b" #define TR_MENUTORESET CENTER TR_ENTER "Resetear" #define TR_PPM "PPM" #define TR_CH "CH" diff --git a/radio/src/translations/fr.h.txt b/radio/src/translations/fr.h.txt index 652776e6e..3c405e374 100644 --- a/radio/src/translations/fr.h.txt +++ b/radio/src/translations/fr.h.txt @@ -32,7 +32,12 @@ * * !!!!! DO NOT EDIT fr.h - EDIT fr.h.txt INSTEAD !!!!!!! */ - + /* Fotmatting octal codes available in TR_ strings: + * \037\x -sets LCD x-coord (x value in octal) + * \036 -newline (ARM boards only) + * \001 to \035 -extended spacing (value * FW/2) + * \0 -ends actual string + */ // NON ZERO TERMINATED STRINGS #define LEN_OFFON "\003" @@ -484,22 +489,22 @@ #define OFS_RX 4 #define TR_ACCEL "Acc:" #define TR_NODATA "NO DATA" -#define TR_TM1TM2 "TM1\032TM2" -#define TR_THRTHP "THR\032TH%" +#define TR_TM1TM2 "TM1\037\146TM2" +#define TR_THRTHP "THR\037\146TH%" #define TR_TOT "TOT" -#define TR_TMR1LATMAXUS "Tmr1Lat max\006us" -#define STR_US (STR_TMR1LATMAXUS+12) -#define TR_TMR1LATMINUS "Tmr1Lat min\006us" -#define TR_TMR1JITTERUS "Tmr1 Jitter\006us" +#define TR_TMR1LATMAXUS "Tmr1Lat max\037\124us" +#define STR_US (STR_TMR1LATMAXUS+13) +#define TR_TMR1LATMINUS "Tmr1Lat min\037\124us" +#define TR_TMR1JITTERUS "Tmr1 Jitter\037\124us" #if defined(CPUARM) - #define TR_TMIXMAXMS "Tmix max\012ms" + #define TR_TMIXMAXMS "Tmix max" + #define TR_FREESTACKMINB "Free Stack" #else - #define TR_TMIXMAXMS "Tmix max\014ms" + #define TR_TMIXMAXMS "Tmix max\037\124ms" + #define TR_FREESTACKMINB "Free Stack\037\124b" #endif -#define TR_T10MSUS "T10ms\016us" -#define TR_FREESTACKMINB "Free Stack\010b" #define TR_MENUTORESET CENTER TR_ENTER" pour reset" #define TR_PPM "PPM" #define TR_CH "CH" diff --git a/radio/src/translations/it.h.txt b/radio/src/translations/it.h.txt index 3a2c62fca..3b5e0bbb5 100644 --- a/radio/src/translations/it.h.txt +++ b/radio/src/translations/it.h.txt @@ -32,7 +32,12 @@ * * !!!!! DO NOT EDIT it.h - EDIT it.h.txt INSTEAD !!!!!!! */ - + /* Fotmatting octal codes available in TR_ strings: + * \037\x -sets LCD x-coord (x value in octal) + * \036 -newline (ARM boards only) + * \001 to \035 -extended spacing (value * FW/2) + * \0 -ends actual string + */ // NON ZERO TERMINATED STRINGS #define LEN_OFFON "\003" @@ -484,22 +489,22 @@ #define OFS_RX 4 #define TR_ACCEL "Acc:" #define TR_NODATA CENTER"DATI ASSENTI" -#define TR_TM1TM2 "TM1\032TM2" -#define TR_THRTHP "THR\032TH%" +#define TR_TM1TM2 "TM1\037\146TM2" +#define TR_THRTHP "THR\037\146TH%" #define TR_TOT "TOT" -#define TR_TMR1LATMAXUS "Tmr1Lat max\006us" -#define STR_US (STR_TMR1LATMAXUS+12) -#define TR_TMR1LATMINUS "Tmr1Lat min\006us" -#define TR_TMR1JITTERUS "Tmr1 Jitter\006us" +#define TR_TMR1LATMAXUS "Tmr1Lat max\037\124us" +#define STR_US (STR_TMR1LATMAXUS+13) +#define TR_TMR1LATMINUS "Tmr1Lat min\037\124us" +#define TR_TMR1JITTERUS "Tmr1 Jitter\037\124us" #if defined(CPUARM) - #define TR_TMIXMAXMS "Tmix max\012ms" + #define TR_TMIXMAXMS "Tmix max" + #define TR_FREESTACKMINB "Free Stack" #else - #define TR_TMIXMAXMS "Tmix max\014ms" + #define TR_TMIXMAXMS "Tmix max\037\124ms" + #define TR_FREESTACKMINB "Free Stack\037\124b" #endif -#define TR_T10MSUS "T10ms\007us" -#define TR_FREESTACKMINB "Free Stack\004b" #define TR_MENUTORESET CENTER TR_ENTER" x Azzerare" #define TR_PPM "PPM" #define TR_CH "CH" diff --git a/radio/src/translations/pl.h.txt b/radio/src/translations/pl.h.txt index 5525754ed..cf7fd1169 100644 --- a/radio/src/translations/pl.h.txt +++ b/radio/src/translations/pl.h.txt @@ -34,6 +34,12 @@ * !!!!! DO NOT EDIT pl.h - EDIT pl.h.txt INSTEAD !!!!!!! * */ + /* Fotmatting octal codes available in TR_ strings: + * \037\x -sets LCD x-coord (x value in octal) + * \036 -newline (ARM boards only) + * \001 to \035 -extended spacing (value * FW/2) + * \0 -ends actual string + */ // NON ZERO TERMINATED STRINGS #define LEN_OFFON "\003" @@ -485,22 +491,22 @@ #define OFS_RX 4 #define TR_ACCEL "Acc:" #define TR_NODATA CENTER "NO DATA" -#define TR_TM1TM2 "TM1\032TM2" -#define TR_THRTHP "THR\032TH%" +#define TR_TM1TM2 "TM1\037\146TM2" +#define TR_THRTHP "THR\037\146TH%" #define TR_TOT "TOT" -#define TR_TMR1LATMAXUS "Tmr1Lat max\006us" -#define STR_US (STR_TMR1LATMAXUS+12) -#define TR_TMR1LATMINUS "Tmr1Lat min\006us" -#define TR_TMR1JITTERUS "Tmr1 Jitter\006us" +#define TR_TMR1LATMAXUS "Tmr1Lat max\037\124us" +#define STR_US (STR_TMR1LATMAXUS+13) +#define TR_TMR1LATMINUS "Tmr1Lat min\037\124us" +#define TR_TMR1JITTERUS "Tmr1 Jitter\037\124us" #if defined(CPUARM) - #define TR_TMIXMAXMS "Tmix max\012ms" + #define TR_TMIXMAXMS "Tmix max" + #define TR_FREESTACKMINB "Free Stack" #else - #define TR_TMIXMAXMS "Tmix max\014ms" + #define TR_TMIXMAXMS "Tmix max\037\124ms" + #define TR_FREESTACKMINB "Free Stack\037\124b" #endif -#define TR_T10MSUS "T10ms\016us" -#define TR_FREESTACKMINB "Free Stack\010b" #define TR_MENUTORESET CENTER TR_ENTER" >> Reset" #define TR_PPM "PPM" #define TR_CH "Kan" diff --git a/radio/src/translations/pt.h.txt b/radio/src/translations/pt.h.txt index 691c840af..c3590ab31 100644 --- a/radio/src/translations/pt.h.txt +++ b/radio/src/translations/pt.h.txt @@ -32,7 +32,12 @@ * * !!!!! DO NOT EDIT pt.h - EDIT pt.h.txt INSTEAD !!!!!!! */ - + /* Fotmatting octal codes available in TR_ strings: + * \037\x -sets LCD x-coord (x value in octal) + * \036 -newline (ARM boards only) + * \001 to \035 -extended spacing (value * FW/2) + * \0 -ends actual string + */ // NON ZERO TERMINATED STRINGS #define LEN_OFFON "\003" @@ -484,22 +489,22 @@ #define OFS_RX 4 #define TR_ACCEL "Acc:" #define TR_NODATA CENTER"SEM DADOS" -#define TR_TM1TM2 "TM1\032TM2" -#define TR_THRTHP "MTR\032MT%" +#define TR_TM1TM2 "TM1\037\146TM2" +#define TR_THRTHP "THR\037\146TH%" #define TR_TOT "TOT" -#define TR_TMR1LATMAXUS "Tmr1Lat max\006us" -#define STR_US (STR_TMR1LATMAXUS+12) -#define TR_TMR1LATMINUS "Tmr1Lat min\006us" -#define TR_TMR1JITTERUS "Tmr1 Jitter\006us" +#define TR_TMR1LATMAXUS "Tmr1Lat max\037\124us" +#define STR_US (STR_TMR1LATMAXUS+13) +#define TR_TMR1LATMINUS "Tmr1Lat min\037\124us" +#define TR_TMR1JITTERUS "Tmr1 Jitter\037\124us" #if defined(CPUARM) - #define TR_TMIXMAXMS "Tmix max\012ms" + #define TR_TMIXMAXMS "Tmix max" + #define TR_FREESTACKMINB "Free Stack" #else - #define TR_TMIXMAXMS "Tmix max\014ms" + #define TR_TMIXMAXMS "Tmix max\037\124ms" + #define TR_FREESTACKMINB "Pilha Livre\037\124b" #endif -#define TR_T10MSUS "T10ms\016us" -#define TR_FREESTACKMINB "Pilha Livre\010b" #define TR_MENUTORESET CENTER TR_ENTER" Reinicia" #define TR_PPM "PPM" #define TR_CH "CH" diff --git a/radio/src/translations/se.h.txt b/radio/src/translations/se.h.txt index 68de29549..f3c0eec12 100644 --- a/radio/src/translations/se.h.txt +++ b/radio/src/translations/se.h.txt @@ -32,7 +32,12 @@ * * !!!!! DO NOT EDIT se.h - EDIT se.h.txt INSTEAD !!!!!!! */ - + /* Fotmatting octal codes available in TR_ strings: + * \037\x -sets LCD x-coord (x value in octal) + * \036 -newline (ARM boards only) + * \001 to \035 -extended spacing (value * FW/2) + * \0 -ends actual string + */ // NON ZERO TERMINATED STRINGS #define LEN_OFFON "\003" @@ -484,22 +489,22 @@ #define OFS_RX 4 #define TR_ACCEL "Acc:" #define TR_NODATA CENTER "NO DATA" -#define TR_TM1TM2 "TM1\032TM2" -#define TR_THRTHP "THR\032TH%" +#define TR_TM1TM2 "TM1\037\146TM2" +#define TR_THRTHP "THR\037\146TH%" #define TR_TOT "TOT" -#define TR_TMR1LATMAXUS "Tmr1Lat max\006us" -#define STR_US (STR_TMR1LATMAXUS+12) -#define TR_TMR1LATMINUS "Tmr1Lat min\006us" -#define TR_TMR1JITTERUS "Tmr1 Jitter\006us" +#define TR_TMR1LATMAXUS "Tmr1Lat max\037\124us" +#define STR_US (STR_TMR1LATMAXUS+13) +#define TR_TMR1LATMINUS "Tmr1Lat min\037\124us" +#define TR_TMR1JITTERUS "Tmr1 Jitter\037\124us" #if defined(CPUARM) - #define TR_TMIXMAXMS "Tmix max\012ms" + #define TR_TMIXMAXMS "Tmix max" + #define TR_FREESTACKMINB "Free Stack" #else - #define TR_TMIXMAXMS "Tmix max\014ms" + #define TR_TMIXMAXMS "Tmix max\037\124ms" + #define TR_FREESTACKMINB "Free Stack\037\124b" #endif -#define TR_T10MSUS "T10ms\016us" -#define TR_FREESTACKMINB "Free Stack\010b" #define TR_MENUTORESET CENTER TR_ENTER " Nollar" #define TR_PPM "PPM" #define TR_CH "KN" From 3aee625cd775466a44cad41d85c65a9ae1381242 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Thu, 2 Jan 2014 10:42:13 +0100 Subject: [PATCH 051/308] Update DONATIONS.txt --- DONATIONS.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/DONATIONS.txt b/DONATIONS.txt index 161a49fb6..c51dce26d 100644 --- a/DONATIONS.txt +++ b/DONATIONS.txt @@ -264,3 +264,4 @@ Offer Shmuely Ian Lobley Keith Hertzog Stéphane Fortas +Peter Mitrik From 655169aa7a2aa4e85a5496588c2d5bba37944cbd Mon Sep 17 00:00:00 2001 From: mhotar Date: Fri, 3 Jan 2014 00:04:59 +0100 Subject: [PATCH 052/308] STD font bitmaps -symbols --- radio/src/fonts/std/font_04x06.lbm | 12 ++++++------ radio/src/fonts/std/font_04x06.png | Bin 575 -> 585 bytes radio/src/fonts/std/font_05x07.lbm | 10 +++++----- radio/src/fonts/std/font_05x07.png | Bin 620 -> 636 bytes radio/src/fonts/std/font_08x10.lbm | 8 ++++---- radio/src/fonts/std/font_08x10.png | Bin 837 -> 836 bytes radio/src/fonts/std/font_10x14_compressed.lbm | 2 +- radio/src/fonts/std/font_10x14_compressed.png | Bin 1518 -> 1517 bytes radio/src/fonts/std/font_cz_04x06.lbm | 2 +- radio/src/fonts/std/font_cz_04x06.png | Bin 223 -> 223 bytes radio/src/fonts/std/font_cz_05x07.lbm | 2 +- radio/src/fonts/std/font_cz_05x07.png | Bin 243 -> 243 bytes radio/src/fonts/std/font_pl_05x07.lbm | 2 +- radio/src/fonts/std/font_pl_05x07.png | Bin 251 -> 251 bytes radio/src/fonts/std/font_pl_08x10.lbm | 2 +- radio/src/fonts/std/font_pl_08x10.png | Bin 326 -> 333 bytes 16 files changed, 20 insertions(+), 20 deletions(-) diff --git a/radio/src/fonts/std/font_04x06.lbm b/radio/src/fonts/std/font_04x06.lbm index aaa1f30d6..3936032a7 100644 --- a/radio/src/fonts/std/font_04x06.lbm +++ b/radio/src/fonts/std/font_04x06.lbm @@ -1,6 +1,6 @@ -0x00,0x00,0x7f,0x7f,0x7f,0x00,0x00,0x2f,0x7f,0x7f,0x00,0x07,0x00,0x07,0x7f,0x14,0x3e,0x14,0x3e,0x14,0x04,0x2a,0x3e,0x2a,0x10,0x13,0x08,0x04,0x32,0x7f,0x14,0x2a,0x14,0x20,0x7f,0x00,0x00,0x07,0x7f,0x7f,0x00,0x1e,0x21,0x7f,0x7f,0x00,0x21,0x1e,0x7f,0x7f,0x00,0x2a,0x1c,0x2a,0x7f,0x08,0x08,0x3e,0x08,0x08,0x00,0x40,0x30,0x10,0x7f,0x08,0x08,0x08,0x08,0x7f,0x00,0x30,0x30,0x7f,0x7f,0x10,0x08,0x04,0x02,0x7f, -0x1e,0x21,0x21,0x1e,0x7f,0x00,0x22,0x3f,0x20,0x7f,0x22,0x31,0x29,0x26,0x7f,0x11,0x25,0x25,0x1b,0x7f,0x0c,0x0a,0x3f,0x08,0x7f,0x17,0x25,0x25,0x19,0x7f,0x1e,0x25,0x25,0x18,0x7f,0x01,0x31,0x0d,0x03,0x7f,0x1a,0x25,0x25,0x1a,0x7f,0x06,0x29,0x29,0x1e,0x7f,0x00,0x36,0x36,0x00,0x7f,0x40,0x36,0x16,0x00,0x7f,0x00,0x08,0x14,0x22,0x7f,0x14,0x14,0x14,0x14,0x7f,0x00,0x22,0x14,0x08,0x7f,0x00,0x02,0x29,0x06,0x7f, -0x00,0x02,0x05,0x02,0x7f,0x3e,0x09,0x09,0x3e,0x7f,0x3f,0x25,0x25,0x1a,0x7f,0x1e,0x21,0x21,0x12,0x7f,0x3f,0x21,0x21,0x1e,0x7f,0x3f,0x25,0x25,0x21,0x7f,0x3f,0x05,0x05,0x01,0x7f,0x1e,0x21,0x29,0x3a,0x7f,0x3f,0x04,0x04,0x3f,0x7f,0x00,0x21,0x3f,0x21,0x7f,0x10,0x20,0x20,0x1f,0x7f,0x3f,0x0c,0x12,0x21,0x7f,0x3f,0x20,0x20,0x20,0x7f,0x3f,0x02,0x04,0x02,0x3f,0x3f,0x06,0x18,0x3f,0x7f,0x1e,0x21,0x21,0x1e,0x7f, -0x3f,0x09,0x09,0x06,0x7f,0x1e,0x31,0x21,0x5e,0x7f,0x3f,0x09,0x19,0x26,0x7f,0x12,0x25,0x29,0x12,0x7f,0x00,0x01,0x3f,0x01,0x7f,0x1f,0x20,0x20,0x1f,0x7f,0x0f,0x30,0x30,0x0f,0x7f,0x3f,0x18,0x0c,0x18,0x3f,0x33,0x0c,0x0c,0x33,0x7f,0x00,0x07,0x38,0x07,0x7f,0x31,0x29,0x25,0x23,0x7f,0x00,0x3f,0x21,0x21,0x7f,0x02,0x04,0x08,0x10,0x7f,0x00,0x21,0x21,0x3f,0x7f,0x00,0x02,0x01,0x02,0x7f,0x20,0x20,0x20,0x20,0x7f, -0x00,0x01,0x02,0x00,0x7f,0x18,0x24,0x14,0x3c,0x7f,0x3f,0x24,0x24,0x18,0x7f,0x18,0x24,0x24,0x7f,0x7f,0x18,0x24,0x24,0x3f,0x7f,0x18,0x34,0x2c,0x08,0x7f,0x08,0x3e,0x09,0x02,0x7f,0x28,0x54,0x54,0x4c,0x7f,0x3f,0x04,0x04,0x38,0x7f,0x24,0x3d,0x20,0x7f,0x7f,0x20,0x40,0x3d,0x7f,0x7f,0x3f,0x08,0x14,0x20,0x7f,0x21,0x3f,0x20,0x7f,0x7f,0x3c,0x08,0x38,0x0c,0x38,0x3c,0x04,0x04,0x38,0x7f,0x18,0x24,0x24,0x18,0x7f, -0x7c,0x24,0x24,0x18,0x7f,0x18,0x24,0x24,0x7c,0x7f,0x3c,0x04,0x04,0x08,0x7f,0x28,0x2c,0x34,0x14,0x7f,0x04,0x1f,0x24,0x20,0x7f,0x1c,0x20,0x20,0x3c,0x7f,0x1c,0x20,0x1c,0x7f,0x7f,0x3c,0x30,0x18,0x30,0x3c,0x24,0x18,0x18,0x24,0x7f,0x0c,0x50,0x20,0x1c,0x7f,0x24,0x34,0x2c,0x24,0x7f,0x00,0x04,0x1e,0x21,0x7f,0x00,0x00,0x3f,0x00,0x7f,0x00,0x21,0x1e,0x04,0x7f,0x08,0x2a,0x1c,0x08,0x7f,0x00,0x08,0x1c,0x2a,0x08, +0x00,0x00,0x7f,0x7f,0x7f,0x2f,0x7f,0x7f,0x7f,0x7f,0x07,0x00,0x07,0x7f,0x7f,0x14,0x3e,0x14,0x3e,0x14,0x04,0x2a,0x3e,0x2a,0x10,0x13,0x08,0x04,0x32,0x7f,0x14,0x2a,0x14,0x20,0x7f,0x07,0x7f,0x7f,0x7f,0x7f,0x1e,0x21,0x7f,0x7f,0x7f,0x21,0x1e,0x7f,0x7f,0x7f,0x2a,0x1c,0x2a,0x7f,0x7f,0x08,0x08,0x3e,0x08,0x08,0x40,0x30,0x10,0x7f,0x7f,0x08,0x08,0x08,0x08,0x7f,0x00,0x30,0x30,0x7f,0x7f,0x10,0x08,0x04,0x02,0x7f, +0x1e,0x21,0x21,0x1e,0x7f,0x00,0x22,0x3f,0x20,0x7f,0x22,0x31,0x29,0x26,0x7f,0x11,0x25,0x25,0x1b,0x7f,0x0c,0x0a,0x3f,0x08,0x7f,0x17,0x25,0x25,0x19,0x7f,0x1e,0x25,0x25,0x18,0x7f,0x01,0x31,0x0d,0x03,0x7f,0x1a,0x25,0x25,0x1a,0x7f,0x06,0x29,0x29,0x1e,0x7f,0x36,0x36,0x00,0x7f,0x7f,0x76,0x16,0x00,0x3f,0x7f,0x08,0x14,0x22,0x7f,0x7f,0x14,0x14,0x14,0x14,0x7f,0x00,0x22,0x14,0x08,0x7f,0x00,0x02,0x29,0x06,0x7f, +0x02,0x05,0x02,0x7f,0x7f,0x3e,0x09,0x09,0x3e,0x7f,0x3f,0x25,0x25,0x1a,0x7f,0x1e,0x21,0x21,0x12,0x7f,0x3f,0x21,0x21,0x1e,0x7f,0x3f,0x25,0x25,0x21,0x7f,0x3f,0x05,0x05,0x01,0x7f,0x1e,0x21,0x29,0x3a,0x7f,0x3f,0x04,0x04,0x3f,0x7f,0x21,0x3f,0x21,0x7f,0x7f,0x10,0x20,0x20,0x1f,0x7f,0x3f,0x0c,0x12,0x21,0x7f,0x3f,0x20,0x20,0x20,0x7f,0x3f,0x02,0x04,0x02,0x3f,0x3f,0x06,0x18,0x3f,0x7f,0x1e,0x21,0x21,0x1e,0x7f, +0x3f,0x09,0x09,0x06,0x7f,0x1e,0x31,0x21,0x5e,0x7f,0x3f,0x09,0x19,0x26,0x7f,0x12,0x25,0x29,0x12,0x7f,0x01,0x3f,0x01,0x7f,0x7f,0x1f,0x20,0x20,0x1f,0x7f,0x0f,0x30,0x30,0x0f,0x7f,0x3f,0x18,0x0c,0x18,0x3f,0x33,0x0c,0x0c,0x33,0x7f,0x07,0x38,0x07,0x7f,0x7f,0x31,0x29,0x25,0x23,0x7f,0x3f,0x21,0x21,0x7f,0x7f,0x02,0x04,0x08,0x10,0x7f,0x21,0x21,0x3f,0x7f,0x7f,0x02,0x01,0x02,0x7f,0x7f,0x20,0x20,0x20,0x20,0x7f, +0x01,0x02,0x7f,0x7f,0x7f,0x18,0x24,0x14,0x3c,0x7f,0x3f,0x24,0x24,0x18,0x7f,0x18,0x24,0x24,0x7f,0x7f,0x18,0x24,0x24,0x3f,0x7f,0x18,0x34,0x2c,0x08,0x7f,0x08,0x3e,0x09,0x02,0x7f,0x28,0x54,0x54,0x4c,0x7f,0x3f,0x04,0x04,0x38,0x7f,0x24,0x3d,0x20,0x7f,0x7f,0x20,0x40,0x3d,0x7f,0x7f,0x3f,0x08,0x14,0x20,0x7f,0x21,0x3f,0x20,0x7f,0x7f,0x3c,0x08,0x38,0x0c,0x38,0x3c,0x04,0x04,0x38,0x7f,0x18,0x24,0x24,0x18,0x7f, +0x7c,0x24,0x24,0x18,0x7f,0x18,0x24,0x24,0x7c,0x7f,0x3c,0x04,0x04,0x08,0x7f,0x28,0x2c,0x34,0x14,0x7f,0x04,0x1f,0x24,0x20,0x7f,0x1c,0x20,0x20,0x3c,0x7f,0x1c,0x20,0x1c,0x7f,0x7f,0x3c,0x30,0x18,0x30,0x3c,0x24,0x18,0x18,0x24,0x7f,0x0c,0x50,0x20,0x1c,0x7f,0x24,0x34,0x2c,0x24,0x7f,0x04,0x1e,0x21,0x7f,0x7f,0x3f,0x7f,0x7f,0x7f,0x7f,0x21,0x1e,0x04,0x7f,0x7f,0x08,0x2a,0x1c,0x08,0x7f,0x08,0x1c,0x2a,0x08,0x7f, diff --git a/radio/src/fonts/std/font_04x06.png b/radio/src/fonts/std/font_04x06.png index b3fe5bc1dfe5987b83a65f9ac3c49a653b05449e..ac747c8cb058cdd69be783f0e5cc52d569e6eebb 100644 GIT binary patch delta 501 zcmVAoRc-~s0005WNkl}UGp7K z+xNY%tLJ~;+h7c5It1Nf5MgCB1`!z@ rrNyO@G+19oEHm9-J&WO(ZN#lR%M|#Tr!gG2;Wdm|X1b?}4v^Ny|IQs(Mvd7}9pCa(_fkR@G&WVMyD0pm0`- z?Q5X9X=~0JPD=-h#xYD`)b$FRvNW&i7Q=U-=6m1w011XGt%?jnDHg{qCowFRIA(b! zZO3wf9)`;-&p7;)!GS{$cs%dudJqBUcwT2DT*5(44g(7E-T+-&| z0huK;b-n!38u^_MFnqUtUwt2JBE$B%=c?mM4ITl_y*~F`)x2_xS3u?$Rt~QVf(ENh zf`oee3cR+35_r9*4|9$V- z==(6{+N`?_BCL#te94Tu$qB4ZOAZHcWrhwgNTfdQ%hRo*{Hh= h3eE_?l&O;9&DH8wy002ovPDHLkV1mMd?CAgi diff --git a/radio/src/fonts/std/font_05x07.lbm b/radio/src/fonts/std/font_05x07.lbm index ebbf93c6e..058e17701 100644 --- a/radio/src/fonts/std/font_05x07.lbm +++ b/radio/src/fonts/std/font_05x07.lbm @@ -1,6 +1,6 @@ -0x00,0x00,0xff,0xff,0xff,0x00,0x00,0x00,0x6f,0x00,0x00,0x07,0x00,0x07,0x00,0x18,0x30,0x18,0x0c,0x06,0x08,0x7f,0x7f,0x7f,0x08,0x23,0x13,0x08,0x64,0x62,0x36,0x49,0x55,0x22,0x50,0x00,0x05,0x03,0x00,0x00,0x00,0x1c,0x22,0x41,0x00,0x00,0x41,0x22,0x1c,0x00,0x14,0x08,0x3e,0x08,0x14,0x08,0x08,0x3e,0x08,0x08,0x00,0x50,0x30,0x00,0x00,0x00,0x08,0x08,0x08,0x08,0x40,0xff,0xff,0xff,0xff,0x20,0x10,0x08,0x04,0x02, -0x3e,0x41,0x41,0x3e,0xff,0x00,0x42,0x7f,0x40,0xff,0x62,0x51,0x49,0x46,0xff,0x41,0x49,0x49,0x36,0xff,0x18,0x14,0x12,0x7f,0xff,0x27,0x45,0x45,0x39,0xff,0x3e,0x49,0x49,0x32,0xff,0x01,0x79,0x05,0x03,0xff,0x36,0x49,0x49,0x36,0xff,0x06,0x49,0x29,0x1e,0xff,0x36,0x36,0xff,0xff,0xff,0x00,0x00,0x56,0x36,0x00,0x08,0x14,0x22,0x41,0xff,0x14,0x14,0x14,0x14,0x14,0x41,0x22,0x14,0x08,0xff,0x02,0x01,0x51,0x09,0x06, -0x06,0x09,0x09,0x06,0x00,0x7e,0x09,0x09,0x09,0x7e,0x7f,0x49,0x49,0x49,0x36,0x3e,0x41,0x41,0x41,0x22,0x7f,0x41,0x41,0x22,0x1c,0x7f,0x49,0x49,0x49,0x41,0x7f,0x09,0x09,0x09,0x01,0x3e,0x41,0x49,0x49,0x7a,0x7f,0x08,0x08,0x08,0x7f,0x41,0x7f,0x41,0xff,0xff,0x20,0x40,0x41,0x3f,0x01,0x7f,0x08,0x14,0x22,0x41,0x7f,0x40,0x40,0x40,0xff,0x7f,0x02,0x0c,0x02,0x7f,0x7f,0x04,0x08,0x10,0x7f,0x3e,0x41,0x41,0x41,0x3e, -0x7f,0x09,0x09,0x09,0x06,0x3e,0x41,0x51,0x21,0x5e,0x7f,0x09,0x19,0x29,0x46,0x26,0x49,0x49,0x49,0x32,0x01,0x01,0x7f,0x01,0x01,0x3f,0x40,0x40,0x40,0x3f,0x1f,0x20,0x40,0x20,0x1f,0x3f,0x40,0x30,0x40,0x3f,0x63,0x14,0x08,0x14,0x63,0x07,0x08,0x70,0x08,0x07,0x61,0x51,0x49,0x45,0x43,0x00,0x7f,0x41,0x41,0x00,0x02,0x04,0x08,0x10,0x20,0x00,0x41,0x41,0x7f,0x00,0x04,0x02,0x01,0x02,0x04,0x40,0x40,0x40,0x40,0x40, -0x00,0x01,0x02,0x04,0x00,0x20,0x54,0x54,0x54,0x78,0x7f,0x48,0x44,0x44,0x38,0x38,0x44,0x44,0x44,0x20,0x38,0x44,0x44,0x48,0x7f,0x38,0x54,0x54,0x54,0x18,0x08,0x7e,0x09,0x01,0x02,0x0c,0x52,0x52,0x52,0x3e,0x7f,0x08,0x04,0x04,0x78,0x44,0x7d,0x40,0xff,0xff,0x20,0x40,0x44,0x3d,0xff,0x7f,0x10,0x28,0x44,0xff,0x41,0x7f,0x40,0xff,0xff,0x7c,0x04,0x18,0x04,0x78,0x7c,0x08,0x04,0x04,0x78,0x38,0x44,0x44,0x44,0x38, +0x00,0x00,0xff,0xff,0xff,0x6f,0xff,0xff,0xff,0xff,0x07,0x00,0x07,0xff,0xff,0x18,0x30,0x18,0x0c,0x06,0x08,0x7f,0x7f,0x7f,0x08,0x23,0x13,0x08,0x64,0x62,0x36,0x49,0x55,0x22,0x50,0x05,0x03,0xff,0xff,0xff,0x1c,0x22,0x41,0xff,0xff,0x41,0x22,0x1c,0xff,0xff,0x14,0x08,0x3e,0x08,0x14,0x08,0x08,0x3e,0x08,0x08,0x50,0x30,0xff,0xff,0xff,0x00,0x08,0x08,0x08,0x08,0x40,0xff,0xff,0xff,0xff,0x20,0x10,0x08,0x04,0x02, +0x3e,0x41,0x41,0x3e,0xff,0x00,0x42,0x7f,0x40,0xff,0x62,0x51,0x49,0x46,0xff,0x41,0x49,0x49,0x36,0xff,0x18,0x14,0x12,0x7f,0xff,0x27,0x45,0x45,0x39,0xff,0x3e,0x49,0x49,0x32,0xff,0x01,0x79,0x05,0x03,0xff,0x36,0x49,0x49,0x36,0xff,0x06,0x49,0x29,0x1e,0xff,0x36,0x36,0xff,0xff,0xff,0x56,0x36,0xff,0xff,0xff,0x08,0x14,0x22,0x41,0xff,0x14,0x14,0x14,0x14,0x14,0x41,0x22,0x14,0x08,0xff,0x02,0x01,0x51,0x09,0x06, +0x06,0x09,0x09,0x06,0xff,0x7e,0x09,0x09,0x09,0x7e,0x7f,0x49,0x49,0x49,0x36,0x3e,0x41,0x41,0x41,0x22,0x7f,0x41,0x41,0x22,0x1c,0x7f,0x49,0x49,0x49,0x41,0x7f,0x09,0x09,0x09,0x01,0x3e,0x41,0x49,0x49,0x7a,0x7f,0x08,0x08,0x08,0x7f,0x41,0x7f,0x41,0xff,0xff,0x20,0x40,0x41,0x3f,0x01,0x7f,0x08,0x14,0x22,0x41,0x7f,0x40,0x40,0x40,0xff,0x7f,0x02,0x0c,0x02,0x7f,0x7f,0x04,0x08,0x10,0x7f,0x3e,0x41,0x41,0x41,0x3e, +0x7f,0x09,0x09,0x09,0x06,0x3e,0x41,0x51,0x21,0x5e,0x7f,0x09,0x19,0x29,0x46,0x26,0x49,0x49,0x49,0x32,0x01,0x01,0x7f,0x01,0x01,0x3f,0x40,0x40,0x40,0x3f,0x1f,0x20,0x40,0x20,0x1f,0x3f,0x40,0x30,0x40,0x3f,0x63,0x14,0x08,0x14,0x63,0x07,0x08,0x70,0x08,0x07,0x61,0x51,0x49,0x45,0x43,0x7f,0x41,0x41,0x00,0xff,0x02,0x04,0x08,0x10,0x20,0x00,0x41,0x41,0x7f,0xff,0x04,0x02,0x01,0x02,0x04,0x40,0x40,0x40,0x40,0xff, +0x01,0x02,0x04,0xff,0xff,0x20,0x54,0x54,0x54,0x78,0x7f,0x48,0x44,0x44,0x38,0x38,0x44,0x44,0x44,0x20,0x38,0x44,0x44,0x48,0x7f,0x38,0x54,0x54,0x54,0x18,0x08,0x7e,0x09,0x01,0x02,0x0c,0x52,0x52,0x52,0x3e,0x7f,0x08,0x04,0x04,0x78,0x44,0x7d,0x40,0xff,0xff,0x20,0x40,0x44,0x3d,0xff,0x7f,0x10,0x28,0x44,0xff,0x41,0x7f,0x40,0xff,0xff,0x7c,0x04,0x18,0x04,0x78,0x7c,0x08,0x04,0x04,0x78,0x38,0x44,0x44,0x44,0x38, 0x7c,0x14,0x14,0x14,0x08,0x08,0x14,0x14,0x18,0x7c,0x7c,0x08,0x04,0x04,0x08,0x48,0x54,0x54,0x54,0x20,0x04,0x3f,0x44,0x40,0x20,0x3c,0x40,0x40,0x20,0x7c,0x1c,0x20,0x40,0x20,0x1c,0x3c,0x40,0x20,0x40,0x3c,0x44,0x28,0x10,0x28,0x44,0x0c,0x50,0x50,0x50,0x3c,0x44,0x64,0x54,0x4c,0x44,0x10,0x08,0x10,0x08,0xff,0x7f,0xff,0xff,0xff,0xff,0x41,0x22,0x54,0x28,0xff,0x08,0x08,0x22,0x1c,0x08,0x08,0x1c,0x22,0x08,0x08, diff --git a/radio/src/fonts/std/font_05x07.png b/radio/src/fonts/std/font_05x07.png index 55d7bc54a97eb498731757c42f3e330906199f08..22213129e8fd635fd7ef4700dc2e3cbae34f889c 100644 GIT binary patch delta 553 zcmV+^0@nTP1pEY$UVq*J0u?p`d2yGJ0005}NklX!Aoycm!eRSAb@B`c1YgYD zu+)4{og9#P;%i2l=$<-Rh65H8@_wW#@i<8{9I>#t8<8fup-!CPfMvzT9ZSu3)bRtE zKR!hqw*OKi&v3-@|NkG)!G=v+qQ~SgWn*9MMTV4_XDsI=Gk@^bonuJbd5ZH^G6Oer z97EbxwSurIhVAup8Pe7sD4doK6pdy`n|sc1T3RD--F=2B40>K+Q#bV0-e&l|_kH!f z?;HE;fuhcW4T1#*&n+)9B+q%a_g$&gb-{B$=6BoorB>TD&M{12`p%-kYE`c3$M6{_ z3RJM&vJc1vsehHaZh4O3bF*OMhXS<+Koh?I2Lb#4_5T@ooCPe;6*uS~u45>k^LFRC z;yuql?E^CZ?mV}8*Xxh>7`U5dcb>aj_V)8XhN|grcb;1J?j4X>9rbqCsQkzh%;cb*2PL=739 z_k6R+GqqR+bovvS?@S*`EwVJvF+860-0okg#44bBpD;_feJoHp0Cewju(7u9fF}I^ z{~N@9V2xl#S2OTT76dxI@j>=>hGL%IK&S6^C}?5ek(b_i?vB|4plJR4*G8+>uYV9+ r%}_s2<|1@yiQ@z9|1kHysQwQCYY!I9%96XL00000NkvXXu0mjfhRPfW delta 537 zcmV+!0_Oev1ndNmUVq&T85B4X?3Ksh0005(NklW)J}@ zb$g1L=h|L(fEDnS33Jp4_JBpM6wInu3fd4ie@?i}Z{PykIvmSB?hOrQ3PExS&d)|*Rj-P_}8&uQ>6#X?cI zh1l%wTNWtzGhBL2>T+;l%XWYf2H~My0+rKIi-4@V29-75VT+2l)W%^ara{lZ#4}VOXk%1)t8DH2oOT8z@z9N1f z**jc2*;n2j19o$RpE}IvQN7XWh1L}QVh>8{E5`$+J&(SP*7o5a(t*W)zWp^^V9al_ zbM!xsYY@J}p?ca$6hRLAP4z+P285#>2K{v85vJtfw?p~)d1pieGS~T5xqQMo$o~4S bYV0=jbPCKm5toc$mCODruf%MvZFSk`72j>{imD>CN7xy86?tz-#@Yjq4NGRipXo7wg7 z$7>Eg^X9!TI~-_foa;K-pfiop9cVak>sN1~Dgsy!d2;&&6n|BK?*T@CgMs@mp8+=c zdx9?>@|*3Y#AfNC4Un{_1ON^60L?oVI>6}5(DA7l%c9CXoB;*PN5uo_w@gfS<~v;S zD3w0g#6avj+L-9f&w4I2N$WA?4$EfO{e$uzWk_*S2F&`hS*)A`hVh`38V{;Nc2qz9S4J zcycT_hAYF`XiQN0p%g5pU{el0*niQxO*zvU+ridi>x5dVfZkDcz)Q~C00z&RwDX6t zhqCm*enZI@i_du3Jf#_Y>x3X`+mF~bG&JTnY!CGS(J{dyTC{Wg5`c|8K-miX9>A|H z+kL))bANu)E@*KJ^eOCr(E*qn$~t-`=OA;!8F%G`GJNVm2B-ok5BfJ)H^BMfd9|$5 z!)fzSJw9B5F7}Enui2h5ks9sgpbZMdog-9cSB(%sPY9qsCAiZA5{O!$!l8rFjG|5m zXa>@Z=d|U#rXyr9LfX;?Pn=Eq=x$S1Hv4}=acfWwP;X$p{s+E&fE{@^xrV-g;Kyq? zDxM=P#T+#r(BB;p=c2}Zw8T{pY=543STogM*^zTo<8rjDX8llM=2&G*$PMq;5+qmE kI>#gEg9$SPJ?*3a0uJY~K|5z6^Z)<=07*qoM6N<$f{n0XI{*Lx delta 755 zcmVPfck;&@tuD>9Lg@y#S% ztbLcjZ{EE3PXa}(>RRh~L2I>8g@yu->eYwOkcJj21A+JW9e;$Wh0;RzE+}~R{teJY z@D*WgAb2SAm@ei9qyq(~j(XKbKT<;t)uv)?3Vh-Fzu*#lKh~w5Oo0ptS+XG^B$jKPkAUnMAPymr zNG%aWQC#k@C4Yj<^}0e>UixH5_$1a7C`$u{QxM_z5p=mm5Ee)g-{2LAFd{$@2;4}J z8iA3e0SDH&R)P=UFMW(Rh}RfQ{u^D|==KHh$LOlE54e(@X$N4+AZDDg1Vqvs^|(7? zqUiC1!w5u#2i$cLPC4u`xMDrGg{Ry>(5&OK?T!ngcz?tl$AImiYy-dyFnfg&(_x1q zygucO+AHl^r-u-kp%~1?U;_pw*uCg_Q+4xSwvw$gY{i19JH-#gBF3Zzl~2k7SAvjWg&t-{2UG|`AAZx)nMM#`Pj`Otz(lY>&3k0^mI#Vt*6udci%dcCRYM!mfYd2A|M$TqNA{Rh9l!EXG-+oq-f;m;>H z2`?xvr2#D_=^6ki9rKI^-8o%0Kn}*9ffW(WmECx(GCJ?h(@`^&t1(T7a|je`)*^V< l=_;Tn&;;YE4SL>0{|jP)(2e?k4pjgE002ovPDHLkV1if)UB>_b diff --git a/radio/src/fonts/std/font_10x14_compressed.lbm b/radio/src/fonts/std/font_10x14_compressed.lbm index 1683c727c..17da6f670 100644 --- a/radio/src/fonts/std/font_10x14_compressed.lbm +++ b/radio/src/fonts/std/font_10x14_compressed.lbm @@ -1 +1 @@ -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x66,0x00,0x76,0x00,0x3e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x78,0x00,0x78,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x60,0x0e,0x70,0xfc,0x3f,0xf8,0x1f,0xff,0xff,0xff,0xff,0x00,0x00,0x18,0x60,0x1c,0x60,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x00,0xff,0xff,0xff,0xff,0x18,0x78,0x1c,0x7c,0x0e,0x6e,0x06,0x67,0x86,0x63,0xce,0x61,0xfc,0x60,0x78,0x60,0xff,0xff,0xff,0xff,0x06,0x60,0x06,0x60,0x86,0x61,0x86,0x61,0x86,0x61,0xce,0x73,0xfc,0x3f,0x78,0x1e,0xff,0xff,0xff,0xff,0x80,0x07,0xc0,0x07,0xe0,0x06,0x70,0x06,0x38,0x06,0x1c,0x06,0xfe,0x7f,0xfe,0x7f,0xff,0xff,0xff,0xff,0x7e,0x18,0x7e,0x38,0x66,0x70,0x66,0x60,0x66,0x60,0xe6,0x70,0xc6,0x3f,0x86,0x1f,0xff,0xff,0xff,0xff,0xf8,0x1f,0xfc,0x3f,0x8e,0x71,0x86,0x61,0x86,0x61,0x8e,0x73,0x1c,0x3f,0x18,0x1e,0xff,0xff,0xff,0xff,0x06,0x00,0x06,0x00,0x86,0x7f,0xc6,0x7f,0xe6,0x00,0x76,0x00,0x3e,0x00,0x1e,0x00,0xff,0xff,0xff,0xff,0x78,0x1e,0xfc,0x3f,0xce,0x73,0x86,0x61,0x86,0x61,0xce,0x73,0xfc,0x3f,0x78,0x1e,0xff,0xff,0xff,0xff,0x78,0x00,0xfc,0x00,0xce,0x61,0x86,0x71,0x86,0x39,0xce,0x1d,0xfc,0x0f,0xf8,0x07,0xff,0xff,0xff,0xff,0x00,0x00,0x30,0x0c,0x78,0x1e,0x78,0x1e,0x30,0x0c,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0x7f,0xf0,0x7f,0xb8,0x01,0x9c,0x01,0x8e,0x01,0x8e,0x01,0x9c,0x01,0xb8,0x01,0xf0,0x7f,0xe0,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0xce,0x73,0xfc,0x3f,0x78,0x1e,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x0e,0x70,0x1c,0x38,0x18,0x18,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x06,0x60,0x0e,0x70,0x1c,0x38,0x38,0x1c,0xf0,0x0f,0xe0,0x07,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x06,0x00,0x06,0x00,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x86,0x61,0x86,0x61,0x86,0x61,0x8e,0x71,0x9c,0x7f,0x98,0x3f,0xfe,0x7f,0xfe,0x7f,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x18,0x00,0x38,0x00,0x70,0x00,0x60,0x06,0x60,0x06,0x70,0xfe,0x3f,0xfe,0x1f,0x06,0x00,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0x80,0x01,0xc0,0x03,0xe0,0x07,0x70,0x0e,0x38,0x1c,0x1c,0x38,0x0e,0x70,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0xfe,0x7f,0xfe,0x7f,0x1c,0x00,0x38,0x00,0xf0,0x01,0xf0,0x01,0x38,0x00,0x1c,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x70,0x00,0xe0,0x00,0xc0,0x01,0x80,0x03,0x00,0x07,0x00,0x0e,0xfe,0x7f,0xfe,0x7f,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x0e,0x70,0xfc,0x3f,0xf8,0x1f,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0xce,0x01,0xfc,0x00,0x78,0x00,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x66,0x06,0x6e,0x06,0x3c,0x0e,0x38,0xfc,0x7f,0xf8,0x67,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x07,0x86,0x0f,0x86,0x1d,0xce,0x39,0xfc,0x70,0x78,0x60,0x78,0x18,0xfc,0x38,0xce,0x71,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x8e,0x73,0x1c,0x3f,0x18,0x1e,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0xfe,0x1f,0xfe,0x3f,0x00,0x70,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x70,0xfe,0x3f,0xfe,0x1f,0xfe,0x07,0xfe,0x0f,0x00,0x1c,0x00,0x38,0x00,0x70,0x00,0x70,0x00,0x38,0x00,0x1c,0xfe,0x0f,0xfe,0x07,0xfe,0x1f,0xfe,0x3f,0x00,0x70,0x00,0x70,0x00,0x3e,0x00,0x3e,0x00,0x70,0x00,0x70,0xfe,0x3f,0xfe,0x1f,0x1e,0x78,0x3e,0x7c,0x70,0x0e,0xe0,0x07,0xc0,0x03,0xc0,0x03,0xe0,0x07,0x70,0x0e,0x3e,0x7c,0x1e,0x78,0x7e,0x00,0xfe,0x00,0xc0,0x01,0x80,0x03,0x00,0x7f,0x00,0x7f,0x80,0x03,0xc0,0x01,0xfe,0x00,0x7e,0x00,0x06,0x78,0x06,0x7c,0x06,0x6e,0x06,0x67,0x86,0x63,0xc6,0x61,0xe6,0x60,0x76,0x60,0x3e,0x60,0x1e,0x60,0x00,0x18,0x00,0x3c,0x60,0x7e,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0x66,0xc0,0x7f,0x80,0x7f,0xfe,0x7f,0xfe,0x7f,0x80,0x61,0xc0,0x61,0xe0,0x60,0x60,0x60,0x60,0x60,0xe0,0x70,0xc0,0x3f,0x80,0x1f,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x70,0x00,0x38,0x00,0x18,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x60,0x60,0xe0,0x60,0xc0,0x61,0x80,0x61,0xfe,0x7f,0xfe,0x7f,0x80,0x1f,0xc0,0x3f,0xe0,0x76,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0x66,0xc0,0x07,0x80,0x07,0x80,0x01,0x80,0x01,0xf8,0x7f,0xfc,0x7f,0x8e,0x01,0x86,0x01,0x06,0x00,0x0e,0x00,0x1c,0x00,0x18,0x00,0xe0,0x01,0xf0,0x03,0x38,0x67,0x18,0x66,0x18,0x66,0x18,0x66,0x18,0x66,0x18,0x76,0xf8,0x3f,0xf8,0x1f,0xfe,0x7f,0xfe,0x7f,0x80,0x01,0xc0,0x01,0xe0,0x00,0x60,0x00,0x60,0x00,0xe0,0x00,0xc0,0x7f,0x80,0x7f,0x60,0x60,0x60,0x60,0xe6,0x7f,0xe6,0x7f,0x00,0x60,0x00,0x60,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x18,0x00,0x38,0x00,0x70,0x00,0x60,0x60,0x60,0x60,0x70,0xe6,0x3f,0xe6,0x1f,0xff,0xff,0xff,0xff,0xfe,0x7f,0xfe,0x7f,0x00,0x06,0x00,0x0f,0x80,0x1f,0xc0,0x39,0xe0,0x70,0x60,0x60,0xff,0xff,0xff,0xff,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0x7f,0xe0,0x7f,0x60,0x00,0xe0,0x00,0xc0,0x07,0xc0,0x07,0xe0,0x00,0xe0,0x00,0xc0,0x7f,0x80,0x7f,0xe0,0x7f,0xe0,0x7f,0x80,0x01,0xc0,0x01,0xe0,0x00,0x60,0x00,0x60,0x00,0xe0,0x00,0xc0,0x7f,0x80,0x7f,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xe0,0x70,0xc0,0x3f,0x80,0x1f,0xe0,0x7f,0xe0,0x7f,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0xe0,0x07,0xc0,0x03,0x80,0x01,0x80,0x01,0xc0,0x03,0xe0,0x07,0x60,0x06,0x60,0x06,0x60,0x06,0xc0,0x07,0x80,0x07,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x80,0x01,0xc0,0x01,0xe0,0x00,0x60,0x00,0x60,0x00,0xe0,0x00,0xc0,0x01,0x80,0x01,0x80,0x61,0xc0,0x63,0xe0,0x67,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x7e,0x00,0x3c,0x00,0x18,0x60,0x00,0x60,0x00,0xf8,0x1f,0xf8,0x3f,0x60,0x70,0x60,0x60,0x00,0x60,0x00,0x70,0x00,0x38,0x00,0x18,0xe0,0x1f,0xe0,0x3f,0x00,0x70,0x00,0x60,0x00,0x60,0x00,0x70,0x00,0x38,0x00,0x18,0xe0,0x7f,0xe0,0x7f,0xe0,0x07,0xe0,0x0f,0x00,0x1c,0x00,0x38,0x00,0x70,0x00,0x70,0x00,0x38,0x00,0x1c,0xe0,0x0f,0xe0,0x07,0xe0,0x1f,0xe0,0x3f,0x00,0x70,0x00,0x70,0x00,0x38,0x00,0x38,0x00,0x70,0x00,0x70,0xe0,0x3f,0xe0,0x1f,0x60,0x60,0xe0,0x70,0xc0,0x39,0x80,0x1f,0x00,0x0f,0x00,0x0f,0x80,0x1f,0xc0,0x39,0xe0,0x70,0x60,0x60,0xe0,0x01,0xe0,0x03,0x00,0x67,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x76,0xe0,0x3f,0xe0,0x1f,0x60,0x60,0x60,0x70,0x60,0x78,0x60,0x7c,0x60,0x6e,0x60,0x67,0xe0,0x63,0xe0,0x61,0xe0,0x60,0x60,0x60, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x66,0x00,0x76,0x00,0x3e,0x00,0x1e,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xff,0xff,0xff,0xff,0x00,0x30,0x00,0x78,0x00,0x78,0x00,0x30,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0xff,0xff,0xff,0xff,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x60,0x0e,0x70,0xfc,0x3f,0xf8,0x1f,0xff,0xff,0xff,0xff,0x00,0x00,0x18,0x60,0x1c,0x60,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x00,0xff,0xff,0xff,0xff,0x18,0x78,0x1c,0x7c,0x0e,0x6e,0x06,0x67,0x86,0x63,0xce,0x61,0xfc,0x60,0x78,0x60,0xff,0xff,0xff,0xff,0x06,0x60,0x06,0x60,0x86,0x61,0x86,0x61,0x86,0x61,0xce,0x73,0xfc,0x3f,0x78,0x1e,0xff,0xff,0xff,0xff,0x80,0x07,0xc0,0x07,0xe0,0x06,0x70,0x06,0x38,0x06,0x1c,0x06,0xfe,0x7f,0xfe,0x7f,0xff,0xff,0xff,0xff,0x7e,0x18,0x7e,0x38,0x66,0x70,0x66,0x60,0x66,0x60,0xe6,0x70,0xc6,0x3f,0x86,0x1f,0xff,0xff,0xff,0xff,0xf8,0x1f,0xfc,0x3f,0x8e,0x71,0x86,0x61,0x86,0x61,0x8e,0x73,0x1c,0x3f,0x18,0x1e,0xff,0xff,0xff,0xff,0x06,0x00,0x06,0x00,0x86,0x7f,0xc6,0x7f,0xe6,0x00,0x76,0x00,0x3e,0x00,0x1e,0x00,0xff,0xff,0xff,0xff,0x78,0x1e,0xfc,0x3f,0xce,0x73,0x86,0x61,0x86,0x61,0xce,0x73,0xfc,0x3f,0x78,0x1e,0xff,0xff,0xff,0xff,0x78,0x00,0xfc,0x00,0xce,0x61,0x86,0x71,0x86,0x39,0xce,0x1d,0xfc,0x0f,0xf8,0x07,0xff,0xff,0xff,0xff,0x00,0x00,0x30,0x0c,0x78,0x1e,0x78,0x1e,0x30,0x0c,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0x7f,0xf0,0x7f,0xb8,0x01,0x9c,0x01,0x8e,0x01,0x8e,0x01,0x9c,0x01,0xb8,0x01,0xf0,0x7f,0xe0,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0xce,0x73,0xfc,0x3f,0x78,0x1e,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x0e,0x70,0x1c,0x38,0x18,0x18,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x06,0x60,0x0e,0x70,0x1c,0x38,0x38,0x1c,0xf0,0x0f,0xe0,0x07,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x06,0x00,0x06,0x00,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x86,0x61,0x86,0x61,0x86,0x61,0x8e,0x71,0x9c,0x7f,0x98,0x3f,0xfe,0x7f,0xfe,0x7f,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x18,0x00,0x38,0x00,0x70,0x00,0x60,0x06,0x60,0x06,0x70,0xfe,0x3f,0xfe,0x1f,0x06,0x00,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0x80,0x01,0xc0,0x03,0xe0,0x07,0x70,0x0e,0x38,0x1c,0x1c,0x38,0x0e,0x70,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0xfe,0x7f,0xfe,0x7f,0x1c,0x00,0x38,0x00,0xf0,0x01,0xf0,0x01,0x38,0x00,0x1c,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x70,0x00,0xe0,0x00,0xc0,0x01,0x80,0x03,0x00,0x07,0x00,0x0e,0xfe,0x7f,0xfe,0x7f,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x0e,0x70,0xfc,0x3f,0xf8,0x1f,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0xce,0x01,0xfc,0x00,0x78,0x00,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x66,0x06,0x6e,0x06,0x3c,0x0e,0x38,0xfc,0x7f,0xf8,0x67,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x07,0x86,0x0f,0x86,0x1d,0xce,0x39,0xfc,0x70,0x78,0x60,0x78,0x18,0xfc,0x38,0xce,0x71,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x8e,0x73,0x1c,0x3f,0x18,0x1e,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0xfe,0x1f,0xfe,0x3f,0x00,0x70,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x70,0xfe,0x3f,0xfe,0x1f,0xfe,0x07,0xfe,0x0f,0x00,0x1c,0x00,0x38,0x00,0x70,0x00,0x70,0x00,0x38,0x00,0x1c,0xfe,0x0f,0xfe,0x07,0xfe,0x1f,0xfe,0x3f,0x00,0x70,0x00,0x70,0x00,0x3e,0x00,0x3e,0x00,0x70,0x00,0x70,0xfe,0x3f,0xfe,0x1f,0x1e,0x78,0x3e,0x7c,0x70,0x0e,0xe0,0x07,0xc0,0x03,0xc0,0x03,0xe0,0x07,0x70,0x0e,0x3e,0x7c,0x1e,0x78,0x7e,0x00,0xfe,0x00,0xc0,0x01,0x80,0x03,0x00,0x7f,0x00,0x7f,0x80,0x03,0xc0,0x01,0xfe,0x00,0x7e,0x00,0x06,0x78,0x06,0x7c,0x06,0x6e,0x06,0x67,0x86,0x63,0xc6,0x61,0xe6,0x60,0x76,0x60,0x3e,0x60,0x1e,0x60,0x00,0x18,0x00,0x3c,0x60,0x7e,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0x66,0xc0,0x7f,0x80,0x7f,0xfe,0x7f,0xfe,0x7f,0x80,0x61,0xc0,0x61,0xe0,0x60,0x60,0x60,0x60,0x60,0xe0,0x70,0xc0,0x3f,0x80,0x1f,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x70,0x00,0x38,0x00,0x18,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x60,0x60,0xe0,0x60,0xc0,0x61,0x80,0x61,0xfe,0x7f,0xfe,0x7f,0x80,0x1f,0xc0,0x3f,0xe0,0x76,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0x66,0xc0,0x07,0x80,0x07,0x80,0x01,0x80,0x01,0xf8,0x7f,0xfc,0x7f,0x8e,0x01,0x86,0x01,0x06,0x00,0x0e,0x00,0x1c,0x00,0x18,0x00,0xe0,0x01,0xf0,0x03,0x38,0x67,0x18,0x66,0x18,0x66,0x18,0x66,0x18,0x66,0x18,0x76,0xf8,0x3f,0xf8,0x1f,0xfe,0x7f,0xfe,0x7f,0x80,0x01,0xc0,0x01,0xe0,0x00,0x60,0x00,0x60,0x00,0xe0,0x00,0xc0,0x7f,0x80,0x7f,0x60,0x60,0x60,0x60,0xe6,0x7f,0xe6,0x7f,0x00,0x60,0x00,0x60,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x18,0x00,0x38,0x00,0x70,0x00,0x60,0x60,0x60,0x60,0x70,0xe6,0x3f,0xe6,0x1f,0xff,0xff,0xff,0xff,0xfe,0x7f,0xfe,0x7f,0x00,0x06,0x00,0x0f,0x80,0x1f,0xc0,0x39,0xe0,0x70,0x60,0x60,0xff,0xff,0xff,0xff,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0x7f,0xe0,0x7f,0x60,0x00,0xe0,0x00,0xc0,0x07,0xc0,0x07,0xe0,0x00,0xe0,0x00,0xc0,0x7f,0x80,0x7f,0xe0,0x7f,0xe0,0x7f,0x80,0x01,0xc0,0x01,0xe0,0x00,0x60,0x00,0x60,0x00,0xe0,0x00,0xc0,0x7f,0x80,0x7f,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xe0,0x70,0xc0,0x3f,0x80,0x1f,0xe0,0x7f,0xe0,0x7f,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0xe0,0x07,0xc0,0x03,0x80,0x01,0x80,0x01,0xc0,0x03,0xe0,0x07,0x60,0x06,0x60,0x06,0x60,0x06,0xc0,0x07,0x80,0x07,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x80,0x01,0xc0,0x01,0xe0,0x00,0x60,0x00,0x60,0x00,0xe0,0x00,0xc0,0x01,0x80,0x01,0x80,0x61,0xc0,0x63,0xe0,0x67,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x7e,0x00,0x3c,0x00,0x18,0x60,0x00,0x60,0x00,0xf8,0x1f,0xf8,0x3f,0x60,0x70,0x60,0x60,0x00,0x60,0x00,0x70,0x00,0x38,0x00,0x18,0xe0,0x1f,0xe0,0x3f,0x00,0x70,0x00,0x60,0x00,0x60,0x00,0x70,0x00,0x38,0x00,0x18,0xe0,0x7f,0xe0,0x7f,0xe0,0x07,0xe0,0x0f,0x00,0x1c,0x00,0x38,0x00,0x70,0x00,0x70,0x00,0x38,0x00,0x1c,0xe0,0x0f,0xe0,0x07,0xe0,0x1f,0xe0,0x3f,0x00,0x70,0x00,0x70,0x00,0x38,0x00,0x38,0x00,0x70,0x00,0x70,0xe0,0x3f,0xe0,0x1f,0x60,0x60,0xe0,0x70,0xc0,0x39,0x80,0x1f,0x00,0x0f,0x00,0x0f,0x80,0x1f,0xc0,0x39,0xe0,0x70,0x60,0x60,0xe0,0x01,0xe0,0x03,0x00,0x67,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x76,0xe0,0x3f,0xe0,0x1f,0x60,0x60,0x60,0x70,0x60,0x78,0x60,0x7c,0x60,0x6e,0x60,0x67,0xe0,0x63,0xe0,0x61,0xe0,0x60,0x60,0x60, diff --git a/radio/src/fonts/std/font_10x14_compressed.png b/radio/src/fonts/std/font_10x14_compressed.png index 3918dafe1115a725a0f72659bce9d22c3b0ce3c0..c8721b6ca596d03d0ee0653d55d131c954770a0f 100644 GIT binary patch delta 1456 zcmV;h1yB0!3+)S#Dlz{6{{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G` z2i^e!7AiNq^nf9eTPS~3Nkl!Nc(LCJ$`y;^dpzyseWA4KF3 z&hS|c>t6pJKK1;(^otTa>;=ZUFX+Cp^qT=XJ}daW=LF?nwW5Dx`HiJtG`~dQQ}4$v z?X2sx8c=GzVja&bFWK>}^X=&)^qiL=TA+l_osH9xfJ6i*gHMG&YQ0K)>T%C-cns@N z-x*%DLCTJiF@BU$o5iaN`l)wAyosB0LH6wXhMqNR{IeeeE zXympRrA$yylr^U(!xNTa{QS->!k{1J2u6&1RZoP^{$#r%xe2 zX3-3keyXB%@EJL+#IIMcYCdA@q98K&j@9%Vh+X=G`kI3Lj340G$UtJ^+1lL zV^kef>y0^+j*5L%*PBE=9Wy@NMTuGJ?e?l%FlSX|$Vbz0mLrJv8}Ug*L~3{Abk#-D z8v#M*hwA0KM^wE0RUXuUL%E9SR#h!vLp6U_7Gh6=%&G=Eog-$wmXcuE^H!Dgn(@O- zcBqZhJD#(G^?MK*UCHM475U1Z_cd+bFFU9@L3-B%8X3+QG0WBJpzT%_z-v%kZ9UOv zEy|PXxv^)Bcb0cOqsyxEtIiQat7}*;v1~4Aq;k!8)TGo8tK`Azh)TBcq}~s2M1_BS zt6-G}%7_YM@AUe7G7j?$*Uoq?2PpHaO6v78_?U+dk%CC|wX4i9)~c7d7Jk{$lN$LI zHH#8MLcq~q;$m~eT3$dyklu1*D=wkxFXFBK;@k>(uv!l6C{I`I3tL4;ArHLu%30&| z^?JSD$H_kkqgw00MLv2!YFnc1)N_Agax9hWn0a=*_2bS@F!5?6$U zE%QPJS%mjWRX-0oqsX~a?g#6o9O1Cgoy}ub(2uRt$Xte0GT8c6HI?i@JW{A^w0O1@ z`ZCHm-B}(m`=qdUR5e|D>r~2vS%0*~Jjz2K6=QkuM1~8lm=EfCrI<194)k=j^3x9M zSv3bQzwEfziaGY^Vhsmo%n#jD%8H(IFW!Hy-6t}<7JUT61BDG#!B z2<$=i)_b(xu+`r{uXgL&-QgAERlxd1nSz3Xk_RfiP;#ii1OEUbl6GaPDOr2~0000< KMNUMnLSTX&x8gkj delta 1457 zcmV;i1y1_y3+@Y$Dlq^60002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G` z2i*)A6d^OB^)DQeTPS~4Nkl$}W^1D)7MmW->h*c?7o~VwG#TxKr3*?o7Jnl^=VukaS5ALW{#6?~mfu+XMe|G4 zcxrmA@|<;_vjZL8`Mmm)o!`3NmOVn{yd2R2C48Ukoc0tXqBxoHRO3hOS2><~-m5V@ zj&<+d(YR`dl$|4E{wSw5i&qu+Q}IjGcm?mYO9cf5|6zZk5;#XGEKy2yyk08XW2i zA$;n4SL1S96XYa~MDoL=!-i~p`7j8Ak_R$u2R z(x=cLqihC>Kh<3UZ*8qdPoo!0d+W5?4ewnA>wBY24!W=C8uHOP)ax5%RNhjP{hTvwR;80dfWMF&S~p5c=Z0!dA%p|k?@aB!ht-OTXP#mkUN#RgQc#9!E8T=zBdriO5K; z?wrm#NP06M==xB*{Pc{9m%l248X%Ojm~MYo*8(oe+=J@;$Q@9x&g)rHcl32J0IqsJ_F>w~shR{*a= zaku?M%UDz-)pKIcn(wOadW4r*@~f^9L%VBO4zX-4Xryt?xYVSy53}^a?2Jmb^Q3>K zhc~0b-c_*b17${q@poG9d^3f5G}i2|5vc?yb00JD$6R!XR79$;U1g@RX5GZK@XLyk z)X1->S&SHx0*?L?7h5BC<^?nb>1{VQ;}EL;BHrvT&dtyVv-QA=`g9gu*e*H>ectwr!t-)EHhPuIg{bL|R(6(4&8&HRpNRlaFE_qsWeTyq4l(qaTVBE7S81T}#Bb z#1&~_%eqiS77@Kt_0L0O6p=e6J=iE^Zww3G**azg{@6Z^3O#P+IksL@r8|&_6sj97 zku8P2jB-v_)&~ro6nAb^JzZP-RO*A#`)H4Ol!v}*2J?&)aYO!&^`M?xiWznDu7F=F zAFZ&TS!?j}%ZjvCtg(d`YdSDveJD+l|5v+#oLNgB@uk4kaG}-*E4Dzo%UTt7ou!*n zA7tAQI)dtjSv6YhNw%KTKlg-NjCTR+7i9_x3Q8ZS>_X|G0uTHHQ+i}#a_@4+00000 LNkvXXu0mjfbr0O# diff --git a/radio/src/fonts/std/font_cz_04x06.lbm b/radio/src/fonts/std/font_cz_04x06.lbm index 3795482ef..c4be089c4 100644 --- a/radio/src/fonts/std/font_cz_04x06.lbm +++ b/radio/src/fonts/std/font_cz_04x06.lbm @@ -1 +1 @@ -0x18,0x24,0x16,0x3d,0x7f,0x18,0x24,0x25,0x02,0x01,0x18,0x34,0x2c,0x0a,0x01,0x18,0x34,0x2d,0x0a,0x01,0x24,0x3c,0x22,0x01,0x7f,0x18,0x24,0x24,0x1a,0x01,0x3c,0x04,0x05,0x0a,0x01,0x28,0x2d,0x36,0x15,0x7f,0x1c,0x20,0x22,0x3d,0x7f,0x1c,0x21,0x21,0x3c,0x7f,0x0c,0x50,0x22,0x1d,0x7f,0x38,0x14,0x14,0x3a,0x01,0x00,0x24,0x3e,0x25,0x7f,0x3c,0x15,0x16,0x2d,0x7f,0x00,0x0c,0x32,0x0d,0x7f,0x24,0x35,0x2e,0x25,0x7f,0x3e,0x2a,0x2a,0x22,0x01, +0x18,0x24,0x16,0x3d,0x7f,0x18,0x24,0x25,0x02,0x01,0x18,0x34,0x2c,0x0a,0x01,0x18,0x34,0x2d,0x0a,0x01,0x24,0x3c,0x22,0x01,0x7f,0x18,0x24,0x24,0x1a,0x01,0x3c,0x04,0x05,0x0a,0x01,0x28,0x2d,0x36,0x15,0x7f,0x1c,0x20,0x22,0x3d,0x7f,0x1c,0x21,0x21,0x3c,0x7f,0x0c,0x50,0x22,0x1d,0x7f,0x38,0x14,0x14,0x3a,0x01,0x24,0x3e,0x25,0x7f,0x7f,0x3c,0x15,0x16,0x2d,0x7f,0x0c,0x32,0x0d,0x7f,0x7f,0x24,0x35,0x2e,0x25,0x7f,0x3e,0x2a,0x2a,0x22,0x01, diff --git a/radio/src/fonts/std/font_cz_04x06.png b/radio/src/fonts/std/font_cz_04x06.png index dcb80e1a7e4e0e81e8fa85de8c97554e25ad19bd..0dc759ddc495f62ac3fdf4d9c9217529f2e4d711 100644 GIT binary patch delta 137 zcmV;40CxZ10p9_TUVq*J0u(n8EL(Y3O_+uy<3YK^Pq~|eB r;)FENGJpsG_y7NY{`al^d!G1=$|!wN7~_Zl0000bbDZiq+;}PggTM+o@pGUG2D%6; z0CS%DIsRij>Nj?N8UTc25JlmXqToAV2Q~oz|Nejf|Ns7f{uckfNT)Ov5GOaK00000 LNkvXXu0mjf1dl|s delta 157 zcmV;O0Am010rLTnUVq&T1PK^79g*4I0001UNklbbDZiq+Nj?HoB)Jl5JlmXqToAV2RZ=%|Nejf|Ns7f{uckX+Y&aWi{NE%00000 LNkvXXu0mjf{zFM9 diff --git a/radio/src/fonts/std/font_pl_05x07.lbm b/radio/src/fonts/std/font_pl_05x07.lbm index 6ca6f3c3f..067366719 100644 --- a/radio/src/fonts/std/font_pl_05x07.lbm +++ b/radio/src/fonts/std/font_pl_05x07.lbm @@ -1 +1 @@ -0x20,0x54,0x54,0xd4,0xb8,0x38,0x44,0x46,0x45,0x28,0x38,0x54,0x54,0xd4,0x98,0x49,0x7f,0x44,0xff,0xff,0x7c,0x08,0x06,0x05,0x78,0x38,0x44,0x46,0x45,0x38,0x48,0x54,0x56,0x55,0x20,0x44,0x65,0x55,0x4c,0x44,0x44,0x64,0x56,0x4d,0x44,0x7e,0x09,0x09,0xc9,0xbe,0x3c,0x42,0x42,0x43,0x24,0x7f,0x49,0x49,0xc9,0x81,0x08,0x7f,0x44,0x44,0x40,0x7e,0x08,0x12,0x21,0x7e,0x3c,0x42,0x42,0x43,0x3c,0x4c,0x52,0x52,0x53,0x24,0x62,0x52,0x4b,0x4a,0x46,0x62,0x52,0x4a,0x4b,0x46,0x3c,0x3c,0x24,0x42,0xff,0x24,0x18,0x81,0x42,0x3c, +0x20,0x54,0x54,0xd4,0xb8,0x38,0x44,0x46,0x45,0x28,0x38,0x54,0x54,0xd4,0x98,0x49,0x7f,0x44,0xff,0xff,0x7c,0x08,0x06,0x05,0x78,0x38,0x44,0x46,0x45,0x38,0x48,0x54,0x56,0x55,0x20,0x44,0x65,0x55,0x4c,0x44,0x44,0x64,0x56,0x4d,0x44,0x7e,0x09,0x09,0xc9,0xbe,0x3c,0x42,0x42,0x43,0x24,0x7f,0x49,0x49,0xc9,0x81,0x08,0x7f,0x44,0x44,0x40,0x7e,0x08,0x12,0x21,0x7e,0x3c,0x42,0x42,0x43,0x3c,0x4c,0x52,0x52,0x53,0x24,0x62,0x52,0x4b,0x4a,0x46,0x62,0x52,0x4a,0x4b,0x46,0x1c,0x1c,0x3e,0x7f,0xff,0x22,0x1c,0x41,0x3e,0x00, diff --git a/radio/src/fonts/std/font_pl_05x07.png b/radio/src/fonts/std/font_pl_05x07.png index 3b08bfa9a7b847d27606dbcb60f1f23905a0c4c1..86ade6c1f76fc07c2dbf39a95bf209fa60918cae 100644 GIT binary patch delta 165 zcmV;W09yb10s8@vUVq*J0u~7yFom0=0001cNkl00000NkvXXu0mjf{VTU0wvn2qL9ZGr(pnz-T4002ovPDHLkV1nrRc>w?b delta 240 zcmV%Q6UVq&T1PK!svJ4PQ0002SNkl Date: Fri, 3 Jan 2014 10:25:41 +0100 Subject: [PATCH 053/308] Update DONATIONS.txt --- DONATIONS.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/DONATIONS.txt b/DONATIONS.txt index c51dce26d..095735273 100644 --- a/DONATIONS.txt +++ b/DONATIONS.txt @@ -265,3 +265,4 @@ Ian Lobley Keith Hertzog Stéphane Fortas Peter Mitrik +Thomas Majewski From 58a3ff84a7542c275f69f9db117e1e3a3bed8549 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Fri, 3 Jan 2014 15:07:17 +0100 Subject: [PATCH 054/308] Update DONATIONS.txt --- DONATIONS.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/DONATIONS.txt b/DONATIONS.txt index 095735273..7b46ed329 100644 --- a/DONATIONS.txt +++ b/DONATIONS.txt @@ -266,3 +266,4 @@ Keith Hertzog Stéphane Fortas Peter Mitrik Thomas Majewski +ANF King From 26dc8723bbe230b1599bed28ecb33573f22bc249 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Fri, 3 Jan 2014 22:58:26 +0100 Subject: [PATCH 055/308] Update DONATIONS.txt --- DONATIONS.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/DONATIONS.txt b/DONATIONS.txt index 7b46ed329..6e77dc3ca 100644 --- a/DONATIONS.txt +++ b/DONATIONS.txt @@ -267,3 +267,4 @@ Stéphane Fortas Peter Mitrik Thomas Majewski ANF King +Henrik Hammarström From ab5d5dd8357c7d4cb982fbe571bad439480fd7cb Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Sat, 4 Jan 2014 12:13:50 +0100 Subject: [PATCH 056/308] Update DONATIONS.txt --- DONATIONS.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/DONATIONS.txt b/DONATIONS.txt index 6e77dc3ca..96f83a2e0 100644 --- a/DONATIONS.txt +++ b/DONATIONS.txt @@ -268,3 +268,4 @@ Peter Mitrik Thomas Majewski ANF King Henrik Hammarström +Kenneth Lilja From 3d5806cb3c255ec08132986a889f60f0800fd7f6 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Sat, 4 Jan 2014 12:14:37 +0100 Subject: [PATCH 057/308] Update DONATIONS.txt --- DONATIONS.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DONATIONS.txt b/DONATIONS.txt index 96f83a2e0..02f1dca57 100644 --- a/DONATIONS.txt +++ b/DONATIONS.txt @@ -268,4 +268,4 @@ Peter Mitrik Thomas Majewski ANF King Henrik Hammarström -Kenneth Lilja +Kenneth Lilja (monthly) From 0618f98a1387b20e11ec8326367921b8eb520a5b Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Sat, 4 Jan 2014 18:11:33 +0100 Subject: [PATCH 058/308] Avoid Telemetry Lost / Telemetry Recovered voice alerts playing back to back when using the Reset Telemetry / Flight functions --- radio/src/telemetry/frsky_sport.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/radio/src/telemetry/frsky_sport.cpp b/radio/src/telemetry/frsky_sport.cpp index a9552e150..7aa0f2365 100644 --- a/radio/src/telemetry/frsky_sport.cpp +++ b/radio/src/telemetry/frsky_sport.cpp @@ -734,6 +734,7 @@ void FrskyValueWithMinMax::set(uint8_t value) void resetTelemetry() { memclear(&frskyData, sizeof(frskyData)); + telemetryState = TELEMETRY_INIT; #if defined(FRSKY_HUB) frskyData.hub.gpsLatitude_bp = 2; From dbf39608eba531c488694bc8f37fadf0d7bf1cef Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Sat, 4 Jan 2014 18:21:08 +0100 Subject: [PATCH 059/308] Reinstate A2 alarms in D16 mode for the 3rd party adapter --- radio/src/telemetry/frsky_sport.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/radio/src/telemetry/frsky_sport.cpp b/radio/src/telemetry/frsky_sport.cpp index 7aa0f2365..8499cb5f8 100644 --- a/radio/src/telemetry/frsky_sport.cpp +++ b/radio/src/telemetry/frsky_sport.cpp @@ -671,11 +671,11 @@ void telemetryWakeup() } } else if (alarmsCheckStep == 2) { - if (alarmRaised(1, 1) && g_model.moduleData[INTERNAL_MODULE].rfProtocol == RF_PROTO_D8) { + if (alarmRaised(1, 1)) { AUDIO_A2_RED(); alarmsCheckTime = get_tmr10ms() + 300; /* next check in 3seconds */ } - else if (alarmRaised(1, 0) && g_model.moduleData[INTERNAL_MODULE].rfProtocol == RF_PROTO_D8) { + else if (alarmRaised(1, 0)) { AUDIO_A2_ORANGE(); alarmsCheckTime = get_tmr10ms() + 300; /* next check in 3seconds */ } From fce51a69457c1e89b8b265a27244bfed485a4923 Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Sat, 4 Jan 2014 20:41:19 +0100 Subject: [PATCH 060/308] A2 was also disabled in custom switches in D16 mode --- radio/src/opentx.cpp | 5 ----- 1 file changed, 5 deletions(-) diff --git a/radio/src/opentx.cpp b/radio/src/opentx.cpp index af664925e..c5dd5adce 100644 --- a/radio/src/opentx.cpp +++ b/radio/src/opentx.cpp @@ -1419,11 +1419,6 @@ bool getSwitch(int8_t swtch) if (cs->v1 >= MIXSRC_FIRST_TELEM) { if ((!TELEMETRY_STREAMING() && cs->v1 >= MIXSRC_FIRST_TELEM+TELEM_FIRST_STREAMED_VALUE-1) || IS_FAI_FORBIDDEN(cs->v1-1)) return swtch > 0 ? false : true; - -#if defined (PCBTARANIS) - if (cs->v1 == MIXSRC_FIRST_TELEM+TELEM_A2-1 && g_model.moduleData[INTERNAL_MODULE].rfProtocol == RF_PROTO_X16) - return swtch > 0 ? false : true; -#endif y = convertCswTelemValue(cs); From b90a621db8cd6d446072d1c6b64b41a12ab75ef9 Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Sat, 4 Jan 2014 23:20:54 +0100 Subject: [PATCH 061/308] Telemetry view fix for new font --- radio/src/gui/view_telemetry.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/radio/src/gui/view_telemetry.cpp b/radio/src/gui/view_telemetry.cpp index 0bb2df709..3c62c1b02 100644 --- a/radio/src/gui/view_telemetry.cpp +++ b/radio/src/gui/view_telemetry.cpp @@ -64,7 +64,7 @@ void displayRssiLine() if (TELEMETRY_STREAMING()) { lcd_hline(0, 55, 212, 0); // separator uint8_t rssi = min((uint8_t)99, frskyData.rssi[0].value); - lcd_putsLeft(STATUS_BAR_Y, STR_RX); lcd_outdezNAtt(4*FW, STATUS_BAR_Y, rssi, LEADING0, 2); + lcd_putsn(0, STATUS_BAR_Y, STR_RX, 2); lcd_outdezNAtt(4*FW, STATUS_BAR_Y, rssi, LEADING0, 2); lcd_rect(25, 57, 78, 7); lcd_filled_rect(26, 58, 19*rssi/25, 5, (rssi < getRssiAlarmValue(0)) ? DOTTED : SOLID); } From 24f4535655e73d9e5c1df76500c9b85bed462659 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Sat, 4 Jan 2014 23:38:42 +0100 Subject: [PATCH 062/308] Update DONATIONS.txt --- DONATIONS.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/DONATIONS.txt b/DONATIONS.txt index 02f1dca57..3a6b104aa 100644 --- a/DONATIONS.txt +++ b/DONATIONS.txt @@ -269,3 +269,4 @@ Thomas Majewski ANF King Henrik Hammarström Kenneth Lilja (monthly) +R Wells From 353eab083f10eb460a4a4a130bbfd35a2e0733ab Mon Sep 17 00:00:00 2001 From: Dvogonen Date: Sun, 5 Jan 2014 01:28:12 +0100 Subject: [PATCH 063/308] Fixed problem on Linux. Hopfully did not break Windows. --- companion/src/main.cpp | 13 +++++++------ companion/src/mainwindow.cpp | 12 +++++++++--- companion/src/translations/companion9x_sv.ts | 4 ++-- 3 files changed, 18 insertions(+), 11 deletions(-) diff --git a/companion/src/main.cpp b/companion/src/main.cpp index 700536602..9cdbf430e 100644 --- a/companion/src/main.cpp +++ b/companion/src/main.cpp @@ -116,14 +116,15 @@ int main(int argc, char *argv[]) current_firmware_variant = GetFirmwareVariant(firmware_id); // qDebug() << current_firmware_variant; + MainWindow mainWin; + if (showSplash) { splash->show(); - splash->showMessage(QObject::tr("")); - sleep(SPLASH_TIME); + QTimer::singleShot(1000*SPLASH_TIME, splash, SLOT(close())); + QTimer::singleShot(1000*SPLASH_TIME, &mainWin, SLOT(show())); + } + else { + mainWin.show(); } - - MainWindow mainWin; - mainWin.show(); - splash->finish(&mainWin); return app.exec(); } diff --git a/companion/src/mainwindow.cpp b/companion/src/mainwindow.cpp index b428332c5..870001c4d 100644 --- a/companion/src/mainwindow.cpp +++ b/companion/src/mainwindow.cpp @@ -112,9 +112,15 @@ downloadDialog_forWait(NULL) QNetworkProxyFactory::setUseSystemConfiguration(true); setAcceptDrops(true); - // give time to the main windows to open before starting updates, delay 1s - QTimer::singleShot(1000, this, SLOT(doAutoUpdates())); - QTimer::singleShot(1000, this, SLOT(displayWarnings())); + // give time to the splash to disappear and main window to open before starting updates + int updateDelay = 1000; + QSettings settings("companion9x", "companion9x"); + bool showSplash = settings.value("show_splash", true).toBool(); + if (showSplash) + updateDelay += (SPLASH_TIME*1000); + QTimer::singleShot(updateDelay, this, SLOT(doAutoUpdates())); + QTimer::singleShot(updateDelay, this, SLOT(displayWarnings())); + QStringList strl = QApplication::arguments(); QString str; QString printfilename; diff --git a/companion/src/translations/companion9x_sv.ts b/companion/src/translations/companion9x_sv.ts index bf7422eac..c37c3550a 100644 --- a/companion/src/translations/companion9x_sv.ts +++ b/companion/src/translations/companion9x_sv.ts @@ -322,7 +322,7 @@ Gasen reverseras om alternativet väljs. Tomgång ligger då uppåt. Trim och ga Show Splash Screen on Startup - Visa bild vid start av sändare + Visa Startbild @@ -9450,7 +9450,7 @@ Tryck på Avbryt för att avburyta kalibreringen Show Splash Screen - Visa bild vid start av sändare + Visa Startbild From e5ad887be9c065ec8577d35343e314fa40f773b3 Mon Sep 17 00:00:00 2001 From: Dvogonen Date: Sat, 4 Jan 2014 23:20:23 +0100 Subject: [PATCH 064/308] companion9x renamed Companion --- companion/src/CMakeLists.txt | 2 +- companion/src/avroutputdialog.cpp | 16 +- companion/src/burnconfigdialog.cpp | 4 +- companion/src/burndialog.cpp | 6 +- companion/src/burndialog.ui | 2 +- companion/src/companion9x.desktop | 8 +- companion/src/companion9x.png | Bin 5302 -> 2967 bytes companion/src/contributorsdialog.cpp | 5 +- companion/src/downloaddialog.cpp | 4 +- companion/src/generaledit.cpp | 6 +- companion/src/icon.ico | Bin 10494 -> 8190 bytes companion/src/icon.png | Bin 5302 -> 2967 bytes companion/src/images/9CX.png | Bin 113658 -> 8138 bytes companion/src/images/9xdb-bl.png | Bin 9141 -> 6369 bytes companion/src/images/9xdb-gr.png | Bin 9027 -> 5402 bytes companion/src/images/9xdb-or.png | Bin 8015 -> 5707 bytes companion/src/images/9xdb-rd.png | Bin 8923 -> 6787 bytes companion/src/images/9xdb-yl.png | Bin 8929 -> 6884 bytes companion/src/images/9xdb.png | Bin 7163 -> 5147 bytes companion/src/images/companion9x-title.png | Bin 42644 -> 8272 bytes companion/src/images/customize.png | Bin 864 -> 371 bytes companion/src/images/originals/9CX.xcf | Bin 0 -> 119084 bytes companion/src/images/originals/9xdb-bl.xcf | Bin 0 -> 14668 bytes companion/src/images/originals/9xdb-gr.xcf | Bin 0 -> 14071 bytes companion/src/images/originals/9xdb-or.xcf | Bin 0 -> 13486 bytes companion/src/images/originals/9xdb-rd.xcf | Bin 0 -> 14940 bytes companion/src/images/originals/9xdb-yl.xcf | Bin 0 -> 15562 bytes companion/src/images/originals/9xdb.xcf | Bin 0 -> 9682 bytes .../images/originals/companion9x-title.xcf | Bin 0 -> 66210 bytes companion/src/images/originals/customize.png | Bin 0 -> 526 bytes companion/src/images/originals/customize.xcf | Bin 0 -> 3179 bytes companion/src/images/originals/splash.xcf | Bin 0 -> 158051 bytes companion/src/images/originals/splasht.xcf | Bin 0 -> 205696 bytes companion/src/images/splash.png | Bin 72534 -> 68810 bytes companion/src/images/splasht.png | Bin 106369 -> 106785 bytes companion/src/logsdialog.cpp | 2 +- companion/src/logsdialog.ui | 2 +- companion/src/main.cpp | 2 +- companion/src/mainwindow.cpp | 79 +- companion/src/mdichild.cpp | 6 +- companion/src/modeledit.cpp | 12 +- companion/src/modelslist.cpp | 14 +- companion/src/preferencesdialog.cpp | 8 +- companion/src/simulatordialog.cpp | 2 +- companion/src/simulatordialog.ui | 5 +- companion/src/translations/companion9x_cs.ts | 993 +++++++++------- companion/src/translations/companion9x_de.ts | 993 ++++++++-------- companion/src/translations/companion9x_fr.ts | 1001 +++++++++------- companion/src/translations/companion9x_he.ts | 1016 +++++++++-------- companion/src/translations/companion9x_it.ts | 991 +++++++++------- companion/src/translations/companion9x_pt.ts | 1006 ++++++++-------- companion/src/translations/companion9x_ru.ts | 1003 ++++++++-------- companion/src/translations/companion9x_sv.ts | 454 ++++---- companion/src/warnings.h | 2 +- companion/src/xsimulatordialog.ui | 3 +- 55 files changed, 4099 insertions(+), 3548 deletions(-) create mode 100644 companion/src/images/originals/9CX.xcf create mode 100644 companion/src/images/originals/9xdb-bl.xcf create mode 100644 companion/src/images/originals/9xdb-gr.xcf create mode 100644 companion/src/images/originals/9xdb-or.xcf create mode 100644 companion/src/images/originals/9xdb-rd.xcf create mode 100644 companion/src/images/originals/9xdb-yl.xcf create mode 100644 companion/src/images/originals/9xdb.xcf create mode 100644 companion/src/images/originals/companion9x-title.xcf create mode 100644 companion/src/images/originals/customize.png create mode 100644 companion/src/images/originals/customize.xcf create mode 100644 companion/src/images/originals/splash.xcf create mode 100644 companion/src/images/originals/splasht.xcf diff --git a/companion/src/CMakeLists.txt b/companion/src/CMakeLists.txt index 318a65524..48665720f 100644 --- a/companion/src/CMakeLists.txt +++ b/companion/src/CMakeLists.txt @@ -391,7 +391,7 @@ ADD_CUSTOM_TARGET( translations COMMAND lupdate-qt4 ${CMAKE_SOURCE_DIR} -ts ${companion9x_TS} ) SET(CPACK_PACKAGE_NAME "COMPANION9X") -SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "EEPROM Editor for the openTx open source firmware") +SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Models and settings editor for the OpenTx open source firmware") string(TOLOWER "${CPACK_PACKAGE_NAME}" CPACK_PACKAGE_NAME_LOWERCASE) find_program(DPKG_PROGRAM dpkg DOC "dpkg program of Debian-based systems") if(DPKG_PROGRAM) diff --git a/companion/src/avroutputdialog.cpp b/companion/src/avroutputdialog.cpp index a125d8e99..8680d39a7 100644 --- a/companion/src/avroutputdialog.cpp +++ b/companion/src/avroutputdialog.cpp @@ -58,7 +58,7 @@ avrOutputDialog::avrOutputDialog(QWidget *parent, QString prog, QStringList arg, QFile exec; winTitle=wTitle; if (!(exec.exists(prog))) { - QMessageBox::critical(this, "companion9x", getProgrammer() + " " + tr("executable not found")); + QMessageBox::critical(this, "Companion", getProgrammer() + " " + tr("executable not found")); closeOpt = AVR_DIALOG_FORCE_CLOSE; QTimer::singleShot(0, this, SLOT(forceClose())); } else { @@ -315,10 +315,10 @@ void avrOutputDialog::errorWizard() } } if (fwexist==false) { - QMessageBox::warning(this, "companion9x - Tip of the day", tr("Your radio uses a %1 CPU!!!\n\nPlease check advanced burn options to set the correct cpu type.").arg(DeviceStr)); + QMessageBox::warning(this, "Companion - Tip of the day", tr("Your radio uses a %1 CPU!!!\n\nPlease check advanced burn options to set the correct cpu type.").arg(DeviceStr)); } else { FirmwareInfo *firmware = GetCurrentFirmware(); - QMessageBox::warning(this, "companion9x - Tip of the day", tr("Your radio uses a %1 CPU!!!\n\nPlease select an appropriate firmware type to program it.").arg(DeviceStr)+FwStr+tr("\nYou are currently using:\n %1").arg(firmware->name)); + QMessageBox::warning(this, "Companion - Tip of the day", tr("Your radio uses a %1 CPU!!!\n\nPlease select an appropriate firmware type to program it.").arg(DeviceStr)+FwStr+tr("\nYou are currently using:\n %1").arg(firmware->name)); } } } @@ -416,24 +416,24 @@ void avrOutputDialog::doFinished(int code=0) if (hasErrors || code) { if (!cmdLine.isEmpty()) { if (getProgrammer()!="AVRDUDE") { - QMessageBox::critical(this, "companion9x", getProgrammer() + " " + tr("did not finish correctly")); + QMessageBox::critical(this, "Companion", getProgrammer() + " " + tr("did not finish correctly")); } else { - int res = QMessageBox::question(this, "companion9x",getProgrammer() + " " + tr("did not finish correctly!\nDo you want some help ?"),QMessageBox::Yes | QMessageBox::No); + int res = QMessageBox::question(this, "Companion",getProgrammer() + " " + tr("did not finish correctly!\nDo you want some help ?"),QMessageBox::Yes | QMessageBox::No); if (res != QMessageBox::No) { errorWizard(); } } } else { - QMessageBox::critical(this, "companion9x", tr("Copy did not finish correctly")); + QMessageBox::critical(this, "Companion", tr("Copy did not finish correctly")); } // reject(); } else { if (!cmdLine.isEmpty()) { ui->progressBar->setValue(100); - QMessageBox::information(this, "companion9x", getProgrammer() + " " + tr("finished correctly")); + QMessageBox::information(this, "Companion", getProgrammer() + " " + tr("finished correctly")); accept(); } else { - QMessageBox::information(this, "companion9x", tr("Copy finished correctly")); + QMessageBox::information(this, "Companion", tr("Copy finished correctly")); accept(); } } diff --git a/companion/src/burnconfigdialog.cpp b/companion/src/burnconfigdialog.cpp index 71887d4da..f4440b05f 100644 --- a/companion/src/burnconfigdialog.cpp +++ b/companion/src/burnconfigdialog.cpp @@ -325,7 +325,7 @@ void burnConfigDialog::restFuses(bool eeProtect) QMessageBox::StandardButton ret = QMessageBox::No; - ret = QMessageBox::warning(this, tr("companion9x"), + ret = QMessageBox::warning(this, tr("Companion"), tr("WARNING!
This will reset the fuses of %1 to the factory settings.
Writing fuses can mess up your radio.
Do this only if you are sure they are wrong!
Are you sure you want to continue?").arg(avrMCU), QMessageBox::Yes | QMessageBox::No); if (ret == QMessageBox::Yes) @@ -394,7 +394,7 @@ void burnConfigDialog::on_advCtrChkB_toggled(bool checked) } else { ui->label_av3->show(); ui->avrdude_mcu->show(); - QMessageBox::warning(this, tr("companion9x"), + QMessageBox::warning(this, tr("Companion"), tr("WARNING!
Normally CPU type is automatically selected according to the chosen firmware.
If you change the CPU type the resulting eeprom could be inconsistent."), QMessageBox::Ok); } diff --git a/companion/src/burndialog.cpp b/companion/src/burndialog.cpp index 54b37d7a2..c601b23cf 100644 --- a/companion/src/burndialog.cpp +++ b/companion/src/burndialog.cpp @@ -292,7 +292,7 @@ bool burnDialog::checkeEprom(QString fileName) uint8_t eeprom[EESIZE_RLC_MAX]; int eeprom_size = HexInterface(inputStream).load(eeprom, EESIZE_RLC_MAX); if (!eeprom_size) { - int res = QMessageBox::question(this, "companion9x",tr("Invalid binary Models and Settings File %1, Proceed anyway ?").arg(fileName),QMessageBox::Yes | QMessageBox::No); + int res = QMessageBox::question(this, "Companion",tr("Invalid binary Models and Settings File %1, Proceed anyway ?").arg(fileName),QMessageBox::Yes | QMessageBox::No); if (res == QMessageBox::No) { return false; } @@ -302,7 +302,7 @@ bool burnDialog::checkeEprom(QString fileName) } file.close(); if (!LoadEeprom(radioData, eeprom, eeprom_size)) { - int res = QMessageBox::question(this, "companion9x",tr("Invalid binary Models and Settings File %1, Proceed anyway ?").arg(fileName),QMessageBox::Yes | QMessageBox::No); + int res = QMessageBox::question(this, "Companion",tr("Invalid binary Models and Settings File %1, Proceed anyway ?").arg(fileName),QMessageBox::Yes | QMessageBox::No); if (res == QMessageBox::No) { return false; } @@ -325,7 +325,7 @@ bool burnDialog::checkeEprom(QString fileName) return false; } if (!LoadEeprom(radioData, eeprom, eeprom_size)) { - int res = QMessageBox::question(this, "companion9x",tr("Invalid binary Models and Settings File %1, Proceed anyway ?").arg(fileName),QMessageBox::Yes | QMessageBox::No); + int res = QMessageBox::question(this, "Companion",tr("Invalid binary Models and Settings File %1, Proceed anyway ?").arg(fileName),QMessageBox::Yes | QMessageBox::No); if (res == QMessageBox::No) { return false; } diff --git a/companion/src/burndialog.ui b/companion/src/burndialog.ui index d9c51ec35..7c739d0a1 100644 --- a/companion/src/burndialog.ui +++ b/companion/src/burndialog.ui @@ -273,7 +273,7 @@ - Allows companion9x to write to older version of the firmware + Allows Companion to write to older version of the firmware Check Firmware compatibility diff --git a/companion/src/companion9x.desktop b/companion/src/companion9x.desktop index e50e1551a..ef31c40c5 100644 --- a/companion/src/companion9x.desktop +++ b/companion/src/companion9x.desktop @@ -1,11 +1,11 @@ [Desktop Entry] Type=Application Encoding=UTF-8 -Name=companion9x -GenericName=COMPANION9X -Comment=9x EeProm Editor +Name=Companion +GenericName=COMPANION +Comment=The ultimate transmitter companion Icon=/usr/share/icons/companion9x.png Exec='companion9x' Terminal=false StartupNotify=false -Categories=Application \ No newline at end of file +Categories=Application diff --git a/companion/src/companion9x.png b/companion/src/companion9x.png index 90a961731b0f1581d938f49ced35c66fd7a8bf3f..9a982a316ba0fd4449931bb699b41661a882d3d9 100644 GIT binary patch delta 2918 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.readAll()); } ui->textBrowser->insertPlainText("\n\n\n"); - ui->textBrowser->insertPlainText(tr("Honors go to Rafal Tomczak (RadioClone) and Thomas Husterer (th9x) \nof course. Also to Erez Raviv (er9x) and it's fantastic eePe, from which\ncompanion9x was forked out.")); + ui->textBrowser->insertPlainText(tr( +"Honors go to Rafal Tomczak (RadioClone) and Thomas Husterer (th9x) \nof course. Also to Erez Raviv (er9x) and the fantastic eePe program \nwhich was the staring point for OpenTX Companion.")); ui->textBrowser->insertPlainText("\n\n"); ui->textBrowser->insertPlainText(tr("Thank you all !!!")); ui->textBrowser->setReadOnly(true); @@ -42,7 +43,7 @@ contributorsDialog::contributorsDialog(QWidget *parent, int contest, QString rnu } ui->textBrowser->setReadOnly(true); ui->textBrowser->verticalScrollBar()->setValue(0); - this->setWindowTitle(tr("Companion9x Release Notes")); + this->setWindowTitle(tr("Companion Release Notes")); } break; case 2:{ diff --git a/companion/src/downloaddialog.cpp b/companion/src/downloaddialog.cpp index 83da451bd..bfd425619 100644 --- a/companion/src/downloaddialog.cpp +++ b/companion/src/downloaddialog.cpp @@ -21,7 +21,7 @@ downloadDialog::downloadDialog(QWidget *parent, QString src, QString tgt) : file = new QFile(tgt); if (!file->open(QIODevice::WriteOnly)) { - QMessageBox::critical(this, "companion9x", + QMessageBox::critical(this, "Companion", tr("Unable to save the file %1: %2.") .arg(tgt).arg(file->errorString())); QTimer::singleShot(0, this, SLOT(fileError())); @@ -51,7 +51,7 @@ void downloadDialog::httpFinished() if (reply->error()) { file->remove(); - QMessageBox::information(this, tr("companion9x"), + QMessageBox::information(this, tr("Companion"), tr("Download failed: %1.") .arg(reply->errorString())); ok = false; diff --git a/companion/src/generaledit.cpp b/companion/src/generaledit.cpp index 1f5b179bb..ba522f80e 100644 --- a/companion/src/generaledit.cpp +++ b/companion/src/generaledit.cpp @@ -1074,7 +1074,7 @@ void GeneralEdit::on_blinvert_cb_stateChanged(int ) void GeneralEdit::on_faimode_CB_stateChanged(int ) { if (ui->faimode_CB->isChecked()) { - int ret = QMessageBox::question(this, "companion9x", + int ret = QMessageBox::question(this, "Companion", tr("If you enable FAI, you loose the vario, the play functions, the telemetry screen.\nThis function cannot be disabled by the radio.\nAre you sure ?") , QMessageBox::Yes | QMessageBox::No); if (ret==QMessageBox::Yes) { @@ -1375,7 +1375,7 @@ void GeneralEdit::on_calstore_PB_clicked() } else { QString calib=settings.value("StickPotCalib","").toString(); if (!(calib.isEmpty())) { - int ret = QMessageBox::question(this, "companion9x", + int ret = QMessageBox::question(this, "Companion", tr("Do you want to store calibration in %1 profile
overwriting existing calibration?").arg(name) , QMessageBox::Yes | QMessageBox::No); if (ret == QMessageBox::No) { @@ -1408,7 +1408,7 @@ void GeneralEdit::on_calstore_PB_clicked() settings.setValue("countryCode",QString("%1%2%3").arg((uint8_t)g_eeGeneral.countryCode, 2, 16, QChar('0')).arg((uint8_t)g_eeGeneral.imperial, 2, 16, QChar('0')).arg(g_eeGeneral.ttsLanguage)); settings.endGroup(); settings.endGroup(); - QMessageBox::information(this, "companion9x", tr("Calibration and HW parameters saved.")); + QMessageBox::information(this, "Companion", tr("Calibration and HW parameters saved.")); } } diff --git a/companion/src/icon.ico b/companion/src/icon.ico index 2453af4ff78604cd3b92366ea71cc47aae820435..72b26839a615de856a0280446342824cf00cdf37 100644 GIT binary patch literal 8190 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 Gf&T&5nw@X} diff --git a/companion/src/icon.png b/companion/src/icon.png index 90a961731b0f1581d938f49ced35c66fd7a8bf3f..71a9b1e88d5b7a0aba3201f8813c09ad9d02b4d4 100644 GIT binary patch delta 2918 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 ZBEP@UM&B9uBq%Sa5Gq>mlG_%+{{?&^NWuUB literal 113658 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 z z8V-35;q@fMj=-^rRarzdd80KkfJ(!&3(yikhX7g*0J#iM*MBZ4K-Y+H3BU#*TOlEo z11O_><*Y`I7AN*)(laG)0Z1+=2Fo09M8{j6@e064LO*tBIkaIW%|r~o9mL{|#3!F+ zk8J(#ugHVoFaY3$LBa#$KzZQIY3lORRI=m#>`5yZ1s1vBpf!`bnP5a%6QG5l6(JFp zlu0@Yk})K8j?=1g#*Z#bh$w|N38kr_em_x%4jDRmJX5DmC3M>n(`Zkn39ny%rNp0n zwZPZDQOI!Tt0)HFp?vtH*m|!?XOJxJeQ!cUU!c*4gXP)##dID*+Wi!M=@UKq?5}FM z;}pv`zgx(+zdPi!=dJ|?dC9T8?!@gl;jtAdETnXkk+5Q$VhzG1uSPVUhx0k^(H;ls zYU2bS7Z>KX(fv>V<7Z*LirhHosxZnSQ%a3lBoR?1z+JXrg0(2O_?ErOrf`T%D-Y&c#-0eOa0fScC%1r7f_z9t9rm4Y z+;i*S9K;wyiBiHUNyk5V*+1n7z@d`uy50+tn;c^fxUHavY)o|Haj?zI>>%YCww?n7 z1}T9>MgTbq(jeQaX3w-9Ufkb;I1_3sYRm^oDMd!a8665X0yav)SSyKhY|7H4ysG8c5sgzP6?$EYuO(S)<*&Y#%OC!KIbJ?~6_7awliV#PyB{X|2oBx$Ab#bSwS4yPktl8Duf92!$G<<83m2}6 zt6p`kUUO`(IpG~EJhCFWg_O03ttW!<*Lconuhi@H1;5BuYA@DMW-kPzu5B7G7neUF&zAtaqo(*5_}h0}KkfEuq~ zWW4&CMKO8_wtB^DQ|%RDyB@0MBZw3dx^$$mM)UqT3-=E#08Wak;V~GdEhagRzOUbz z@ePeDkWv;}`zeJ<0+Xh&)}jH(Aape%Vu(od_3PNR76pI}=dkIVuU>n)xa^$khMU?o zImoyTi2&AsPQz5ij!(SkB|!B6wFIbT|D+{=j`-K;1VE<&GR8nzi;n?x0l?Yt@tS9r z*bV}xOV%(!}e zEdTL8!N{V64HTrT9XCvth_xv{LTudyr7v8^vLyG;k)vFt{HK~|Hl8VN!IK{KmnQq7J4 zvJsFs)odvt62k0>W5hgZ%FMn^lEl@1-jWrOiinJLC`D*2q!T|G8EK~jGaPav(5W$I zWL;tEYN*RHb9;M)^$kmxE~m7fO53zYOfjlch2^<-(uVKA_G#BkkJ;l3)J!|K797W}Iu9T6l+?W@2K|0A;be3t@)6 zejV30H+{iF1e?~vTHE9uIV^%>=3bO@oM@z!2S`qX>vj*|j(@skKraKTAAmAEsSBu1 zNcfJ^l=SiAL`RO0$}&1umN>q>O&`B_5f^+2iM4nWFi~NqH)W8r8bI=puSWAAfS?VXGCR}PTpodA9jezsTwl{vMlz1|kKwJ28-Sd{ zASabJT4!Q+>U(X4Z%6kSH+GwrQ z6e$rUj$J~e6JuB#ohDT|T-w`9AR;_2th;tCrOnNP>hf}3=C4bYzXIo+L{IIUV`kPw zhDa|fWloSu?}zDr0;`8VLI2%9NRVX~7cQ3cgQqJD2QP!GS3^JiRWR>>-7tV-AwUfg zhiQl{2ml!yS@4_=o15@?p5!i*D2F-k8RsSEV&t111oq{B_wVc@U;Lth);{bGiO%M9 zv(^^%))w-oo>FV05l$>Gqhv)J)uBK`2kQ!}2x_-6xbD%*pQJhBl`s_79W!zkO{Olt~vwFJJ6P&|PSK-mc(*?@fCyZ6X)0KL5^uh_81 zXu@GUv};nF32b)Ua+4W^*9I~T??w$k2LH$r&jHAIb2bH=MF2U|oI(Vp2;`SaQ)qQ! z0hmSC6;xG=cI;1hBENuH3iP^!Q)>vbCLeuD;EkD@F~ z)O9V^TDI1z1M*YhPfJ0%52X)5>yx15ZkX(TG1&un|N9Q%6CV|P>f?;zsE|MX&xJhu zd?^>+$i>#LiSNhW3^JdlNRwNLwIWpjNb4ZZ%BK2nCSLy@crvt^!} z_GIJ!-v9Z#_K`;(iHV72hIWod%%lNIv{6NpU{qFYgmq?&WPl`zMq&&nySuyTaOik2 zs_5$V#8&xr)a4q=@k^+xikgEb%$xVM0MbI#Q(7Nmo!(2P^AS36@Khu$MY{a zJoU^T>f(90>NVo}il0}`0|*a2VdhHwAcH1J)rf~#S|+>k$Hw+d769i#j~FCx6j|H1 zC){p;^56U$`^Z20XXepA{6qWj=RP<250WIo#@D}&=lAw}7$5=+1{jLqd|9F_OH@?_ zrBuTnV?k(hk}d(r0)rIe*%xO38$jETs{{OKVB=*#E(su+0BRec4Ig@|s{p+Ys5{P| zr(@^OleztNs5|c@I(?ed(W9XI?jyasOUDNToCt%&s=YmmnPPLdM&Kw-7QPI3bsgd- z=kNaDA2TV=a1sf`m;CF_`Y>8-5Peqx6i0qWc2lsKjC^$wdkh42j9D+pVbDS5Ep23D zW-$q|Z@?fe0921unSn5|C1lit-ADWAafcz zxd$eDAC4Zo8y|j9~>k)4tsDMJCV`} z*I~IDfD8=M9|l^o2l!%U{FZ(Izos(u9l%be`uc>l?et=1%E`gIsL6Ms;}!RaH$6Am^O1)_R#8 zDJIGknWIW2cPo>9fKHvdkN(@wFlA|uCw^e@!jCtoE}n<0FM#beu-$@S=-tfO8-@#l zFm1{u8i1q)AjuI(wizbhxKnoKF%K-w9KGbN>m(Orw8F!m`y3wq%2)94=RP-C&{Mzu z>%dpPT0FnE2LZ5QE!M3?UDqgz0@hlmlyVJY!0c=a2S3`hr-82aMH;67)vzb!PX|YU zrtm%O_ny+>nfX=*)dgrPgy3tQS>pKG8r`u`tO)=afRZc!v&?}J7E^Z~4h{!g zhGz_pHiYu*-+MmC#d;V*=n?I=+$vh86|q=+#{TR^lAi#OCYWVH5sZ*ufTjlBm|IpB zuvVt2Yz?P0grG!`aF#)fu+()eRaHqF{Ddo(AY&0WyxdtuV|;lU3i_{axqJn%l2jqMU&`$mPAU#)R@tq``C z#MajsZX3+IPGltFM(ho9%V1PteGXFCL97h`>21(F0*t0XMsrX}ql?U=Y))X4ArCn_ z2VpLIfA4*t#uq;Su#Ky+Ns?fk*H%QA0F==%Mmz0>Qa<`z&M1el0&nRd>< zy_v_p3in$E$uIxz@7hOx`?t-*pZlDB^ebO6F;L$2+0O!h^hX7epKh^R*C@*pe&8Z( zq+yG}(UKQ2*9xc&P->tjK)3Q!`lu=5DE~Q!y{WuoCzRiZpu!h;Xy7Z{Dg&tJbCV zKW4TGqp>tKk`RQuzv-QBSY~kTk*4SpXoL&ED9z6|rWE1!YD`GW$b=$~Hsb^k8_i<~ zwTr0Lt=XJ*UWgq~W|E7%HfN(Y4AL73M;BfIqdho^0M3%L4vw8)TOx3hkW)lLP*y4B z0&A4Iu2EH$lx4|pT->I=dCa=&*Ph2<>zk%5OB6+cvMgg$1J%;aO+d3L%#d1!GDk`2 zlhEniFzI`6`>8{C;Qcio`k+9hlJ9-L#;fORy#9uhs#q7UuaV{(A&fGqSYQ8RfbjIW*9uiB4sa2g=(k8Mf- zHSiy);{lU;J^`wh0QB-4%a<=x_wr@x`2;H{O?~P%PT$tGA2e1~U_X+AN>2}@n(8;i zPU9!80?64Z=yB}<5uwjo>M1BT`9^T~cOl7D(zMko$9{ku&0&_Y1~O)kGX(-^g?F?7 zAmjXFe8IJfWV8%aRUBRm8>1XVIjv!}R#q$Rtd$zzx~i(AC<;oFgfFdC^wcwBH`sYh zit$w{%hDD_q1m6PE~;4W%R~CU;fzT2L28w>IV#GWBAwiYUjG!{f3LxV_vct$RXBIv z;p};bi<+>9nh5WJ-JS&IC?b^rwLq*Bsl(`3*Ho^pm+W#QDrf+5H1&qWzy~wf z3t{$XYG{G+wDnL5nS|LgSMn1-&YgWc4z~>eTUBBp#yM9NS}TweBhX+GqevNJpt~JX zN#fF?V7bjQLID$wqsN+bjDrHV7o!+BA_E150-p=%` z#~i)*(vV#BD!J++*lm&bo6Jchx{F(6uW2D(P=t{=Rc$wi8OC54gKRv;p}EiNHv^Dw z8%V}L3BW%3m9I?V`ChMwjg1WeC<23wk=?d0fbw~|IsjxPAv6qgpGyHU4q(~HYiLSt zn5JR43Oh*!rU?zGP;_ZrU@1uPspG#!=5v@x07~l`rmiOyBt7RivQZMr1(4&23b+Uy zn_UoGc^XjUh(3s$1xH}kIJ7atEortWkk8hTkjr$4SBa^_$Ays$miD(B&M?U9H>hN{ z0g@D~IA~^|s$p5kiNF%U>O?t3ji4`9CV`G+ktOjW~L2WXuDaMoy5*0qBOjf_z`OQHKcQqGCq8#ui;6kS!U zo!!;e=3r*jb=`B$sc28a+qEV{s;87btdu#f?!R|z-}fF?k3TV>=YL$2Eng$HmnrBT zNu-$G)pKeq^Grn+7`(K@ZnO$GZUO6zCn!c+5mgId^P63Zj&=iP2SJ$cjki zoT{0*)LN&^tgFiD7hW3D?#}C`7_XtKDpXa)twIdXF*G0|ML^<>an%ZWfb{M&tE($? z_vtZiKjp0k&b;by<*LKg>nzUgfZeXIxN;6iE@3>Xgp~?hd~ly$fb`&N+78NV^}&W}H9^QASEFu~LWB$zx3SoF1yDe>9>OUKZHmA~}1F#BGyz zCa=gVhGQ}XyGx3| zk){TtjSplDjxz-sYB84P`fS|fJmN3@)|ZUZ;h+^5=U}W8W3A16+dOAlN!J)zNfKVl zQY?j;+RMzmVy#_v&Mm!mes}5Bvm5=<-iukD@Ac}sHolt!2R?lllp;_DqArnMhEj)o z4$>UM?I$$uIHizv2*V+8ecjRKwv(b5gLwe(7{W#9_GkuLIDt4s;22s71fD@crm5y; zX`61Ei8#D5G2V>;b2otKRKqF~RkPU&qzHFIP>|i+I{fx;KVpVsMp3|6D~1Th7&28= zYi4wmlC0ZRy?&Q_0QcXxwAX*`g}v3P8uZ7*bIXI>H&&~v>eY3<944Uj!m|UAB9#%T z6)1gzR#s2Y1NV0ov%xE`F%1UW#P&Lg+Y2*rYMKz^0E`X3Mf%l)D$sI(zk%F9FWJns znUTQ-eeiI0El^Oig~$kf+Qfv>;IcWC0SH7J7WUbvTi@k%+VsTxzP#B$|R@!$jjG z*o3jl^!K9Gcq*-ULBh{AJFNk&x&g)}RA@S2BA^`0G$+~Q74t|GUQ5I{=Y`kvBtEwa zj+4_>P2X%7apm6}0HeK_Jj=8*hD)Q7Fmpykwbr_sx?wI}&ehr1uIRze^C*gftE!U7 zjG#SdIg<8}*QrxVq7LX_dEKNW& zVTtT*_?jb7BwDg&oPdOlMGdQuS!28@Be$PP9&(;&{HDU}_TzVc=gaoD{?{)V=R6Cg zFjH7517T~kOq(p_N^8P+T;s=3GAz;!0MV;pBI%1A-uD+Nm2vB3{s8mMP zZ`Z=4eNpi{5^e`jJP0TeGnfF7nfCLdGxmTd5?EEpu@zwhWitKPm}+J+Ws<1?2?1I{ z=K&PBTYG%_YgW;cuyB153mTXRt#q?Vv{A4d*599kKH z0BmdscJ~Cskp!!>0wP7|`ipY-!fja!e7|+Pl!EDIlE7G~nugG^yN?V*?r}7&YB$1h zszOCOVl86vCa-^7M~rShi(sjdbrPhBL%(O>oI{!#-R)?zW%n>1ZDKqgBdQZLK%(Y!o; z1eQ0`)%1?%B;(W21a^rKde5kSHBe};9I?)WT@&lLkaMgtwQbBpg?k(}Q8zFugK5ZZ z0%+=pRmQ!XlYUMKBsNsZNv4Ey5}8xmq_wqxG+nTLedgi|NFvihNt;2q5LU-v)>Qe+ zh8>0qbsZRV8NOeK8^A@(u?acsoa!~^6==5K-D_h*=$N0I`hgFU4NB}6JyL>(g4K_^pK zSso!t2zvuTSrSHLL0#8DhEjWnnI;1a7s5Y|_8VgDp4(qV6$?=9pN*XvMgEW&PrFoQ z6eK`RC41WC>H#tWM{0%Fa?9)SfB#?qhy5qN@h`$0JYNgYnvfJ>__c2-u>461r$9q}({ zcunpx!K^)d{BiHp&Oa zfKUf8D`^Ul6BZd2Z;GgZQ`28&E``awHCjXgT&5TWG?{lPk!THm>>{0i6N7w zFr5w=qpc>QP6)A6KRQfqu+e7w|V`C-SK$bwbu5-+V!I~O``)Z9B!mR+7P8g zlqyh%NcELcOSHU1==VtzfU*{h$AY|I@+rPDgwqWs`6co4lbMLkO_?L{?8lkICZ6kD zL=v9Sl)+F4y(QA7Qtoq*C|ZJuq5(z$17hFOnnayYCQHfm`(%1uGId>R=bZVYKmJZ< z?ea63wYCc&3)jCBy4$)z4VMumeNs!A(uX_U-fDX19XhLP(Q8*-S{8eTd7wpd1Fi^g zO27nZ>r_7@i5CqYkX6jEXcGk?Sx;PQ)~2l5yxAGszenV`Yz$X^v9Q14@~{>h0u< z3!yc)WC}4jx|r$7te&f3h)tSd0+uvoS*1+n3=KmqWD1Up!sqxq$a&Y zS=v#ntAxama#oO6z;MXQ+A1>DiCf?tWM7sT9Ib4Vrsj|~c2T}7E)3LBs9eml7b<2= zD`@P+;%$IzHX=pL@vZZfrX}>7-~5*SN5B57=w$wPKJkMsyngOSxOm~IMuryyQKTcJ zipX?GbxP99nKFkvCyuGiXfju>*`zFsOe8muiXb)tm;|i-P(EptvTC-zd21P*IiI&d z(#-+2I%0@Li#;}A8UGC5EQ|a}GRYZM8BsVB-hESO0j5l{0ZS7?;xr1svR2Nj39FNc zfi#~}^qQjSYjNnUqeWHGg^3qg&pGKp`xlb~SjiksSKSJ`E83r*ENRLTYnn|oHw$dr zlAgB4i{^;Kci$#(j32-8KYz)jDbVeB))FXpr>?z2`TEAV^Vs(;>YdG}(&1n;D~h6D z*L6IoDG30XU`C}tDM%TjL=$BM>T0F>iqwi)TGDE%PauLWE5SGy6uBdj0>TBnyG$go z3WP*to*%-DF2zNn1)d`r3G!B|rj1l6FlpIuHYWv?o?$DtmDh|wQs9j;-umM=zxXAS zWx${R`J?6wpZ^EAzCJSF_{%2@0JFDqMsI9vnCRN4(O&9+Oh(l0DZQE~eXMi*c$VIE zhc>TYwCToXov__XMTSPWFpydcoB~)uCSngAUE4Q{EsI#?qBU_*;pTufnF+HO99naW zXg?K@gz-#rCj6Gx#|Rwf$%j+~k~#)Vnu1>zvBs1yK%IKtez4s0PBmjKzfBBN>WQ2Z?OlV4) ztk>nW9sSpT^L=ye%CnvEc&uBSGM+b*VP-Z7r68k;QbUw!QhiNoNtt8`hgOwN6KLxM zRS68oLeBcJrXp47@@t~m1{~)V6lC7UbaTMc&4$}DVO^M=N#mJ{?8|vIImp&#q{&)| z6mRR={BQsJzcl?G;rIXGQ3C*1*PbzHni{RO+1%WmE5QR)MyivMT27QcnynsM&hEX( zBa_B@@0G7?EN3*ZF zh+*2+B1@E$beQdi;rQ!TL1r#EwsVhzcL*Hg$3Oq)|I&23ep3d4vw7}?E%WTNPn)Z2 z&*<@Z+}@NX0>_5+hqY80kx`&blj>+vOIoQ_)#+w>b(x?w>9Q0Qm0&b-+6$PAsb6gz zUdzqc4^A}eu2soyZOREaHf%8N>S(~xp;bVecGR>tBUunZIDbdh=aEMqF~9!@j{<-> zclPm_!>g5k$^bG%X-aBID}6ZYbdP3t->Hp&l1poKIvx#-xE(E$CnBYW*Z`2M=P*e9 zHop~j1E7q*Zop8Y&+Ys}>*fIRCz+F6^zN-%Fjt~=oJ`(S1DrIqHY!^TGiIQ=RozBZ zxY6PF>!y$tFS1O3SRL?pG3{T>CI{Gnsf%8dR$*n{EEASFmFXylxiHrlSFMLX0dSn$ zMB(WA!sj2h0VwUW&pwT2nxuN6IPn}7&{*X8XZ-?D6sLw18&A!$S$q_Nj z`1@%8o~Y_R_u9|_7fvG0WorRrhBvdg5d(}1I`gX0?cZ}Ca~%By!LiL;qRlyvy`aTl z%rqrJ0U%RD)Yaa>XT|7bSsz{{BnGCgfwBUPa)G#!2S}eHG_jGwth8sIAFIqODz?8b z(a*KkfLx?N-&c^EZQGw)5U|s1X!(w=RRG6*pUo%_@@Mp3qrhk zKsoP_@-6aB{!w*7YFR0@YC7FMminTNCgi1APMQgB#)#FAC|6K=?Hwl*WfU*h0F^4VA z(`o9PIr$ca+cbAD;yw_Yw~#mh6mg>hOnV{ocL6vqx{eWhnRmEpfIyTOP-aMVq13V= zeF)1-iB41hj>}R^Q3BQ$m~Pfdc#ZwS@Edh}9QZmfWHTbb+!3#0=d7`v1=*NAR`#d8 zE|bqGF+@Emec0&a6z;skm~NMF@p7fdqmf~^1L3g=ok~XF^t3yv`F%6jQ@w+KKOev{ z=Usn0Cp=%s8sz|Uk#{Xf9srgH0cM*C9>^A37r-2JbJ2~#aP9)q{1eLE2>fWlC{cR% zg5!;tOPj^O>mNHH)zwNZgY;pnt{7ts!8$=%z?2n(gIBvq36a|1riwE+WR5oz-ZkJj zhjoZMfQ8I8srV@ZlFjSyx-nPcY2;T7C=gs{0KW_zaqyKN&pfN-uMH3Zf~ZUkn* zHT+3*@GW}nMxc4n&)Wm++kU!*o11yaEa1#5^2{CH6Sd))11@4*ps_czrRe5fznR}} z5Bk0=0O5BzIL7a-echvVA`lsXI+j%5D7|WxK8#*h8KuaTm7pwvx-M;8y`E){ZJ*VJ z8+Q>n9()~VH%%1o$qlTv-j(3k`WuxYBp~WorTR$IC1e>e8Vh!I8QztBY$25iBbfZ5 zFgcKJ=^iw16CmD77=E*#-_-wQ@H6zd3BX+RZwxKIFyt#u*;G8UBi+1F|rN*_j+DrgOx=Yp~pBV0guY<=~*!n8Ou7a$kq6c1vK_9nm) z3&3&C?|4^(V>@!SA_bH>YDljjF=Xo+7>>lS+qEKj=vwlJl5d%m)?s(k1{Ure1j(Ca znQsale`dn%w-A!gJqYL~4+?sV7w|^R^hV#Wel~&e1_v^QFfRkCK9pKDq*p*HLzWV% zO2F&@$swE@nOK@l+jVEd>zfI!Z*nusfw@Y%cyr2}Use4~t=-CzPa6@SD8}%4$YGFH zS+5+JSWCBA`@8Nyely@1)=d6xgXArOX8Vnsx8oGK#hm57fA@C~6z9KR)ip#tkX`{% z52QLE$^udGHfF+OGi5Rsv&EUVt>8Nfjt6Wm`I!dBMGs|88Au*l&TU|kGxKT8+h~LK zPJ`r4|IB}JAbBgm`BoX@EilW;qy8@h5O3y@bU$Vw9L9~hU`$cYFv!{P`ps6a-!wQb z{Qln+U|f7N8#8MieGAw3X9GBY4wAP5obLo!+Mk2rn`AS`j0enlbDn-W;P_L}Hol9~ zCO_MN_;Zkar#5c5Ir!(m_bv$8d*#UDa{e1)GSQy^0000< KMNUMnLSTXqYJ$1| diff --git a/companion/src/images/9xdb-bl.png b/companion/src/images/9xdb-bl.png index 654e2d5ae0891dfd7489fb8d6a65a939d078d5d6..ba1dfbd4cc21e88b75423c3d13291aa6c7d93677 100644 GIT binary patch delta 6363 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 diff --git a/companion/src/images/9xdb-yl.png b/companion/src/images/9xdb-yl.png index e1e9f1e6a90cb14670dc35e06036beea7eb97375..158f1e94e36d671889405e653c2808a0145dfbec 100644 GIT binary patch delta 6882 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 diff --git a/companion/src/images/9xdb.png b/companion/src/images/9xdb.png index 602bc9955d8b821be9663ced5f43505f0851d111..e6198c2a7c5ed302ca55db307918b104b57607b5 100644 GIT binary patch delta 5131 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 literal 7163 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 literal 42644 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 diff --git a/companion/src/images/customize.png b/companion/src/images/customize.png index 96259b922d51feef16b54c1f15a838fe4af069e1..cece052a443d4007dd61c41aeacafaaa89920f35 100644 GIT binary patch delta 318 zcmV-E0m1&@2J-@tBo78qOjJex|Nj6009C@%evwTcf8GHE69+L?9pcOY0096=L_t(I z%e~UQY63wJ2k^5>c`snHrEo8CZx9J_u)Na8xYE+f`XC762J{gu1sf}S8xgGZMDW7o z#=R6~{%diSPPadn+49Ub&;a2)W0MZszH2Q3XDn*zYF6n&jT z94z!Jf5M>xS4RcA$98)MhahM+L;#2d9Y_EG010qNS#tmY4#WTe z4#WYKD-Ig~000McNliru+yMvy12HPiPGtZ90@F!EK~y-)ozp*P6Hyod@b7%mLpgJ` zDyH)@3ZW z&ttA_QGncT>a?3+xr6q)n@Rcrv~HYsNB43ErFHkI=^+@}Su45vy0Y}a$>-GP&dG=2~U}VLmIM ziBMT<3dp;5VP~hhcziY%tqhet%qTU(n&uMsjl-j_iSDa^H~RBnwQ1K zEMSmjqWceFLx2M{zrl2b2RKK6C~_~`WU43Nq86ncNU-Sz9QDB&?n7GX1raJ%44}Id z1~CV8ZkA>F%C^twO$%)9mz5=aRe9%Mr+1>5j+QTplOZFHLR|wm56YyCE66%ke8+%b zx?2{t1Mv~OAqb}6wkMB^Q{v++u-PQXCyadx$rAp-Aa^LvKp82<$ufw4qEaaV0T7$j~VkYxHhU^z6>xU@%dXH2qhHT2KL9E`1u=4PeeD~iWA2G0000 diff --git a/companion/src/images/originals/9CX.xcf b/companion/src/images/originals/9CX.xcf new file mode 100644 index 0000000000000000000000000000000000000000..167a1ad102b5e177de5901802b46d28e6a2a2417 GIT binary patch literal 119084 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 literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/9xdb-bl.xcf b/companion/src/images/originals/9xdb-bl.xcf new file mode 100644 index 0000000000000000000000000000000000000000..8b09f5c82c873515f8e5045d45dc9d8fa51b9855 GIT binary patch literal 14668 zcmch8d013OzV@lJ^iII!9CL`d28!aZ+81_ZkWDzw8$lfd>bhD@| zYJ$dnjT_*O+c;*Qn`iF*?w34s@2uavT84Oz!jj_Yv!yI#uQs-2&iotU0FKRrJ)1xd7K!uS>x?#N2j7vyGTro5!`O-oPC&C1Q!`%1U@`RPfC z`UL?Cq`#kuykgIK38qOuW9rD)|IZO>y1gJTF*!3QUH^)sEhO&vxkP)~{Gy!9LVadV zaz<(awa-mUD@ZMz>>#!N$0S?Iv!-+&?0=*d(^%+u!uLpZgX~F>h{9>`Bq9v+nWHbr+?g7_ z(dU&{UkzHc(I+A-DdMN24SP8$BJ5>a7&p7E4`w+nH>XhVvo0~G!0|MnR;GU?$gwbN zWu#Qw%;#lpPtBrEOUx{+jehBd@>mO5h?y76vVNE%;Tswl)_P6lSLF&}XHl71Anmx6jYc zO-aS;wLO)tc$!e0nNpacev^o5y1%sUP93UP05#nA?nHZJZ&F#EAxGCZjZn>)=0P5aZzX z;Z+6$v)T~n$bSwQEW$|KYQ_*}Sk7?F(^bf3PykkA>u_TXtU;=bFrvL$!f-TcEfz5` zaLmYBgW)x5!81?k4c4n*jmD_8A#S;W81RU!)ds^lBoV{-a$1m@^NbjW1awbe&=69@ z#kA?gk};lWal-s(94wdHDqKq|wHuGou^M1Y45N!3EsxP*QoB(mMl#_IV^UY7ncy6) zvId!>$tk0qY|;{ESc@UqW{4VbC_RqBtwSp9sx%#ci@|KJmBwis9UaX`%sScu!(@B5 zNj5NR;*iKOf5#lti9pxmF!lENj6p=IbJSMh6l)f4VhsXyZ5*}$VhFc~GV*uH=i=J+ z+(?6q1tgwjh7CwyaFP5?bD4O_VvHIx@mxF| z^B7Fx<7wY)6=DeS95aq0uf-EoP2xvs;rI8h|{cLOYJA1PRCPuR0HWDRy1vx7UG$Ik-AD}ECy2uM`Jj)u_50O zgXu-eWP{S=qTV&Mvv`>dQcJk9@gkilOznD+`gsB^uiCSBcVA|{L3)PmPrZnl`rW@^-GHo<7D3Aeq-AFDH&%q`U6X7p)~+1$$DQcL^P zWP+&)33$s)D9)HU^O&ieVam+}kygaateG`o0?n9;R+Bl6THxiDN}J40u>7_O%`#@Q zsTP4jb*8U1kb6e2`v)xo|MQ_AC z^vyPpqD!`BzoX-m>dBT&cyyRPqgvWo+9okebKz*SRT}8u?47f>Nt>c2X)hhaM8$L} zZ55zB)+DxKBLCP(>o@I{hKb>{wzfRmBBmEpRL?XckG|R%R4dGpW-{$Xzc@27iP^M+ zCibVjrR|F?$g|L?fX^FEX6kb@d@cot&qus_e?Rsgz0XmXTP;Veo2ktf>k-)eeOAx! znc08(OSCrnFMoWFdfbXGx%}>XALfPcf2X4!pY{8{#WDx2X)qc~xAuZ;u-5PX+9Cki zQ$PRy>n-3LNU@B45<(~63a7s*-sbO!OHlpOZfhpP{J}a4#^27e{s)R$O}bX=PKL>} z9(Jy@rqh%|x_7L6LtFUt>B*HRyj45TgPZYbkO=+hWU+k4x_VvMN?)n zf_1`SI&;E0;YCfUmA%#fnq~bxEhsQD>oCKNSUKyMR2QnHoh4SZ`H}UI_2^`qhorIo z%{Ep?oBxKU;9bm)%?iU@XFbK7w$iu%UwW*-RsCQ7673ZImp^&a_Ds&L))I!vwH|eI zin&TtCL6>AyZz~}(;3gd{>hE{{JB5=73ix!^oQ|39Gs0(oYnF-lMIm`-hTAmcbAs_ z#MpA&x)GU{jn?C6+TwlikJRZ_I9&=hr+JII23+l05u6t zC-Hd#cunFgF+diY_JagVc#sTuW*lf^!(w3EI>6Kq>nM;qAev=(gM~g4!*>!qQvjn( zfZAZ<3=^wtSj-xRV+;l`24o{kLTG{clMS%}UG_?8#gYZj{F%ZYY-rMy0HCx1^jdVA zOvPw;79$*Sn8C@Dt)?}d(4C()?WFK`3|eEW7pZn35b>=Q#vupN(^gbFdAx% z6*Ae#H z<1x5DqbLP136m*qQIMlnJoCHtKytf@0dTrn%64ER&-{L|1hIBdw%gh);GOud9T+Sj zx2<#3SOR7=g1+0jj2Qw$u!S*OKF9oKO5+Y&dY|M3>kYBC=JDD%>_4*`#jdlB)4@2V zR`4TK$4Jb?2Dgqn#-wa1!}1!sNaFuXnx82(u+$IKyX&bR&^FeFz5jL-kS@4)3QF7E zYgRD8W)p*#mqyD08;e2jC^nl-XhyTEbnv5|3DQK3xz0w3Zv~b=n4Q ztK$pF$k>VoFgbu>Iy;k1)3_a*kx41Tv+e(z-3GJ8Flm?vlbKHaRC{#UG@eZ-iT{c5 zh{FK>or1`A|61YHu|Hm={-sg%yd(4tX0v|t!$0S+*zj5F(;q(jX7n2@9ty4$ZsFiO z>%<@Szx}cCsrGiv|KHXXg2rC+kM@u3Mw$hE471a^7oeLv)tJWZNc=l% zxKrytRPb+hqw)XKkCTn}e>?p3RyzGtM*vq)IA$U~9ml-WwkZd&_upXxCr?3OI2mVU z_Rm~D`r#)*q8~Q#F&o0sCKUGDaUx+6BuT8BE$RwHXjU+4_tddei$DdU87nz#`|!0TaeEQwm?yv#THhhO*yEL;>493C1PrU|nI z2L%TSL2R%X6zmy1>izr+zj(<%Ko&6iazMb#0rUJ-{-M6Hs8SO((P*8VRiaX*RVkDcDy5255w*KQD-#s1G7q^Z@J_rSbK*ro z<|)%jQ7;+cwVWV0ab8l2$a8AWOU?^wTS=ADO{rJNWpa(HdX7qPcG0>xxoal8W=!X& z>pWOD#TCM_|Kc?NBo>#;(YnJWRB_u!AH<5d_?^cb_u^&8%aV*7$3@oXad=V zszA%8cQ?L6-cfH5-;U?w**Jc!xGI*7)@f>s+*I6}_palj&6+dT;mX)7{)=xlf-t&H3oz-h-z;I((wD_t=r1 zgGUc`_3l5=)z`bfegD4pj<(jl=8mqeo+I5|`^=^eb7yCF_n`y(4s`E7XzDzAsI#}n zbbsLX{h>Q|A6&mXc<=tbhqs0v-5I+7Xy{j;e(}kZ&p!X+%g-J^`TWyQzWU^guRi(Y z>#xXH6Q4c!HTm@qpM3hs?O%WTr#@UbdQs7fl3p}@-yi7eo4<@& z8Wqh)WA#T{qN1atu=4TX6+N=#&G6Sk!owovk=$ZsBpacNbcz@bT@oF;b{%D}&NvtW zwemI$$1iw2e92qU%a^ZkTH(9wsqg%k7Y2ofMucm_EukTyAwmcnDu#r5h7Qm6dC}J| zV8P2TFW?r8zOrD!D+}gh)pPS_&l~fYF>99odGfr*XZmbTubqvhK27GKb$`*7u5;p~ z)jF%O=(TEv%A!`O)SP;nl1NKkC*$Q#3PJ8H2y(3;ld0tLe^~5pa^c72K0_hO1zOrk z5Y;L-l}hPOSG<#}W{z5P(P?xVXD6+@)5NTqGsui-o-%hAH`YbvW(k--e;%1f{M7R} zKi-$jRlO+85quPLMt$D;0EfIFGC2T2I z@~_G7CMCRM*pQm^UP96)!@G$I`0u^M}oICI~!B*fvh!IHio| z2+Q&^R;g6TU7Q6uHWVkBLZcA6JI!r}yE_gxnY;I!+Il)n?Jcc)_nVs=T3VX+)K^#5 zHnf=9drd7(#=1shV}0}9*5<}N&5fx{Zkm$tkHM)sljp zf=eSQvQ#l8nIwxeQIjGjr>IlD&nezjWo+Er0&3dMw~w~9x8ol@`D(*Q0clm5gjS8| z2lKmW`NcbTSJ%`va1CrDX%HJ5NQ2Bs>crYQY+JQ#os;p0)f+aYW#!}*ZrfI@C>FOB zlj4b@!lF4v-~TcuHg3bF#N=djgiRAu(@2^unWS)u>ICt<1eRVj3B!xRBj1c#zG6k} zYSn5smaLGiR4?OJYL|WQAMna+fx)5Sz^rf*E=Gj2fGjSI4e<$js`r^Q*VoVAKR_M8 z`K$dzUq7v%!gthf=5yY9y$|OjpQG?0dabvhck&){^YHNW^deqPvji{E)5FO_@O1JJ zUEPQq=b`eHd+1yRHz!xl&BcRvBd%JV;OeAv^AtQpY?a6oU3F@m&Ra1{^z!69)i!HC zU(Q!Im&YsQu9thWi}=^IuW}3c0Ik2y&$1LR6j{P8=HHM-PDDgT&~7V3+=GTUZTzPV z8}LnPh*QOJYso5cHGo7|AuJPO*rg;!ToyxO_+?LbZr@e}SLf%c^0*u^8z^GQOizdV zxMVJ6A~`9UO%@XqxP*zMMOQ^HInM_n(C^mN>a(~mX(R6 zC0q&nJ}D7*m5>s$i!CFkM^7C;e(cDRK0-HDw$E~;ukSfqm>g zS*O_ErfB2Z#m)}WF>>$jom)4q4`M}+_g}qwt)K4~uU#Qmo?gCm<cRBEL{t5MFLsZc5uN)+1WEZtdF+0fL|*d84($Y7ef_6!pCSlA`%QQ+?FVS;j!WJh)6?Z zG#@Mk>4H@uZoym-@5lNB1^m7IM1Mb5Jc#qWBfKMB{K3J%z+^8eG~izx20mBrgexoO zcwdk(UdC}Af=VU>_u>V@5u~bdMLIuCrUgJb@p9Qbg$mY@Do*3;9htR5^Gtx zV#P|ba-8z5RqQHZ4ZnJ1C72gd@&1riaytxRb0MjG`gm$uY8u{=F)*c!%nW4)$s`$$ z#1SOg^G9v@JIPK<$*x_cLMgjTEZN24&Cpg5$AhJ;v~(A7WPDq(t1t^2U3P9kX=TOx z1y#@=Otrrsb3vnrDI)BW5w&ec99UpdoaNxkcuCCU0yr~Cz_Vpg?>uKxg zI@sOOd7$saq1N`M#^xz`Q=%yL=(9VYKmPTTUq8P8Wati{=iZ&$Lw9fVUmfi4AGk8m zf9=}UbC)h&IzJ_EN)*K;O6EfM41r!0wu?NPjS-?%F|ue5cOF3=!$q)>VnpQh$ce>~ zi^<{{k&*F{%lJ?sL>H{YPMV->FN)D`nU=d0wd@N(Cnq ziT9=v$4K;|Dle$ zhKk))Q}U)nQS9c>r8|SyZ{4~*I5cqe=Cx}BS3kaT`TXhQXHK6vbK=bDQ|HbcJ$d}( zM^o~qL{TjADW6XY#QXwMAmpnMczci+a4Bpmn=+A_lIoH=2FHM#k~DB51z1w5I(4R5 z)$VCl8K>8AMxoBts3@`&78PyNZks6HR?HUj+r*-6+&0%DK7maH3a2EwCvl0maY9*a(i>&3bHf{gHPoX*2lQ9*kjY7uY>-q{I!`}g@l29L8|h$Ch}|VCW6R}bq@3TasvzZD*+hwh zU9h`^GSb0ziu(?*2grVMK-e!H=;pftV#;32{sRa0Bhf}GI9oAtVEp8%)2AtaI8V-z z^W-c!C!W8^U39wSc>M447cZVWcmDj@v$!H>^v2Dbw{G9Q%ijI|-q5`vkmjMGd-ooY z2jas=nn!=0k~Aes9+VUE@Z+QVKKkfbXV;-~SFWDv8~ozaFTcEV{P@)yH~KGL9=z7y zfBE92E06AeJT>o`VsZtiWaYe!XX!g3lY=X;0*?b{mII$)2*)yV86KwOO^Gt3c28An zLyNJ#uA#A_dQWpxeN#{#E?zU~hXeb754Z%P!!D6fzXmbhNhqn;!fvwDN0 zg(!9^sUYE&2(WMx!G;s?*>LcT5s7agQ7I*kgXBhp^Wl_k5Q%Jff^@LKmU;gEelsZ7 zaQ7o19;`p>7YVu%sftjDGIXmk`@GOIPYENAWMjVuQ%W5&GBPQt7|YB6lR)A)O-$#~Nh(QksgO7X z*+ojV6>J$tc>~!cDTtwcHq#G_j5jJ36u z#l@4Em8Au_*~QzoWj#X?T(qv>3?9?e)7_kO5@Gnj-NV&|QV1{!7Z-2}*U4;<4G(8e zFpr;5gucEbz575Q4)%iQHa4}l9y-x?ptGa$=TN-f7GNO&7hz(>Jko>C!G^4Ku>X9++}XXn1w zM!W)T<_05PkA}LAL;IWSjVM)L-O|xDnb+Eaa~1QRw)$rYz|q?m&RzNV>cF*YH?IzS z1WIu9%(+viK@mU{j-Nh%c`|Qk@b;}+*9Y%hihRm~3aIULfKmgtz><%TZ5*XI_yCtS zfj62Sn}8aO;lN2E3t(|61mpq1tZi3-C(JMti6?m0DUAQf65O|uBC)VYD56I%4w~Se zB%Q^8J0wJ|oB?7mGlT?>g#?2u_(k}MdY^?pGQH^S72-uaiAT8GG;jcgD-I&uK?1_* z=>))E?#X#gL$*c&f5FEU7XCV*znrdo4}Z}wMC-tRc?cWk7D9q7G0`@x{|E5LiNkWi z&J4f~R*+@GQU8GbPwiYFS=#5gWRf(BQynmbWFc8BD<@MpfKbNorq67-tZa1Gf&CQe z`JX~Rw_og`T!3Z~umkRZxUZ9RI$aVkUm}-=&!0PY_Uw6FFKI6E7k_*_&z@(`lG84a zh8;!~nwyUFA4DkjWXA!w(*5A&7Q3 zIB?{F6X0BzRdUZ_d3kHAsj&t~-@K=~qV)Ze>asnZt@SlEjZL)`WyY5F$-Ksfx_Vd-(aQsOk2r^=BIKSv>JCRRj6zZ9)oHXgO)jj&)Zst}Q2SrAo>ARLj<(eU7q zMGFJ`^nPmp(Romd@J|*n?*Gy+Uhtj^nTQ37vwAX{%>0Fm){XZd?!=YF(S%(m(t-gH zwKL8bv@&-EQL`#%2tQg#L~?f=?9c}t?Yui*IjGZD8LKH{$eFmLjGm$&!SW z(KPHM`060(Vg^0f%gWBmWg!>|xnwIgqT-!AHbFG{HeqAj zyNT~@N=%85d;7hF88e)x&7AH&%gt^2ba!vP2UMSL)Gj);2J!^G>74PE?5x#5vv76u zaCX*$LlBRn?k=uwzW%N=yjF`Ib{;y~X*#&S8-mZF?(WV`bBD={v$!KYU0ogc zMMPUi`##7-y?tE=_V;!{I_klpT<3|yADueb``M$RM~|O8`SjPfA@o4+nRxISw4blO z{^XOdzJM6?>E}-#fA-}UpMUn`lP^B~6+J1x^JwVSLkLKNcdtLV3kB&mOX-7#UL-Y0 z(uE|2NYgh9>W?CtgB&zQFqKwx{>sSsgNcg$6EXZ7?(mFwuD?AiRyb2ILRddy@n&%+uX`D4W0>y`Q zadDHmPxEAFu#kD6aL!S^Napgs93&v($Ii3N4-5>ZhZ>q-E|d?GC_Gdk%aXU=!ZHRa zp%hravL=+IDAtg5Y#e??91kG~YLMb>^3KS{ci-Iv5P+s5rl-hKgtYMtD)n#~;$~<+ zR07({LJbnOjujLZ7VRkEahhRMcvLvmU@M{e)QQG=c|BM6zl;qHP0f3Y${^glpOKif zIj^{=WLI`Z@s7;wdITC*2}v5Q z0OdwTkBK0YxyW&>i6dQ{?{d6M$wBXd>@&#(D4u3OVKs3X$@;=T%x~rK)|e z(bU>t-q%pwiUSOsqU~+2hq_Z|Y-%y}wwqcSYAdVj_cXP%G&Gy{?`>^qH+A&1nf7;^ zn+|q#A8s=b-Nbn=zC&+azB7bV?cd()zYD2{3OtYQJ$~@;Av7N-KM$x7daM8Dz`(Uz z16OY1F#YL;s~4~1JbmB_J-yIv74j`x^YS34vH4;i#!mA8x;4LGD+0Z2&Bg!yl$My{ zWD|7QNsUJULE+N~JgM zla;n9K|87Fs1mqDl7gcFD)_MI2uU7I+_WJscI7fHbRG3F?3F9nSoP|su`5EKhHD?Em~69d>_LKdnC>z%9_e%D*ly3i1e2qOTm4N+X3x{ta$1 zyTtNVRMawV85?6+783*X6k;Igtl(lTt3l}5wQBsB0zX6Cu;HH)Ng|ibCPBf0cq1m_ z+Yt&*3Y&t&RNz4-{kcGP4x6LSBRIYqFWR`4X|TOeo`a|6Z``_b^M>pOdwpVXV2~YTuZuTs@;A9#?49Ae_wL_+`0&xMsLlhihdln^3HJ6c zzdHKyk$oSYY&F)m;a3IcFLbpXKhd`DVE5sk_O_1RZv2=4s?Pp)ym<{xwN>TNdn&3* z3(KpkDry>b6z<$z2^AMK3*rn1HA1bynTreo`VCAx~C xFnHs}^_#Z_ubjVp5uYd*&Ro85>EekCCnY6Fl63I1o^k{&0{vTzKz~ET{9iVjqWu5> literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/9xdb-gr.xcf b/companion/src/images/originals/9xdb-gr.xcf new file mode 100644 index 0000000000000000000000000000000000000000..416ea3f504fa88f2d794dd47f71d5f66ce7ce911 GIT binary patch literal 14071 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 literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/9xdb-rd.xcf b/companion/src/images/originals/9xdb-rd.xcf new file mode 100644 index 0000000000000000000000000000000000000000..b1a3894652988c2885fe685861710b666dc3a0d3 GIT binary patch literal 14940 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 M?Ls=ze;U#M2LvtgFaQ7m literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/9xdb.xcf b/companion/src/images/originals/9xdb.xcf new file mode 100644 index 0000000000000000000000000000000000000000..d0ed54593912ce11ed4e9f8de894b18ea1919367 GIT binary patch literal 9682 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 WBEdcjpAR2s|L+jZ{g>6VrSLyQ@XQGS literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/companion9x-title.xcf b/companion/src/images/originals/companion9x-title.xcf new file mode 100644 index 0000000000000000000000000000000000000000..5e440bf785fe436526c5be19b4b82afc05508dd5 GIT binary patch literal 66210 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 literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/customize.png b/companion/src/images/originals/customize.png new file mode 100644 index 0000000000000000000000000000000000000000..092e8a6a1ca7f7b7366ba9618bdde8d344cba38a GIT binary patch literal 526 zcmV+p0`dKcP)ug zK~y-)t<%9v!cZ6h@I5n@mo1~?=T@gYcnv10894fHV#CCON~1_q&~xBve?c9C2rXzq zp#MQk3cS7!!2)4@^XXuxgUANJ!x#hs zXhzV0zZnDYvh6f&n6o{Ql$T}-Sa7yD*6G4maDDg2cXmr0L=zgT7(t>=#ijl2Vh~UZGKp~#r#EEcVs#O z*dItrrJ2%AY0m{g&`m5z1M(*=#fMS=V$K9Oi^07IbQ>^Q(rjP{E|konZpt6HM0Z9Y zA5;89^9{hnl$liNKdsD>@br78Od?s1_^|K|t~!zTosF&!wbh6kosarZ?<1t;sTt%# zjjD@2oLg^&=z8zBJK|@F1#<^Etn~!L42TytJV+F-o#Y*P%A1MSB|_OaRdZ@66tArq zMirrA?5ep#7uFb5jb$~rMV8{VID<3eRV}8u{$u^YXjP}P2?f&&&FUw70-=7Ibq2~V)c^nh literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/customize.xcf b/companion/src/images/originals/customize.xcf new file mode 100644 index 0000000000000000000000000000000000000000..8032ce8e78b27716dd2d61971c0737074ea6643d GIT binary patch literal 3179 zcmd^BJ#Q015S{TyeDT?i^FbOwItrvv7$q$d(utmu8ac)>rzE!JGmy~uBnk>jYJLGf z0wg4QeghQ}LJ&d(2xQ*7y}RrYgP=i38S80h-`ky;+ub{FFW4P=dz~%s?)v(Mz#_m0 z3V;Gt`qSwY4Qvrm(#wEz?fKkA0{#k6O4`-L=eRQ%e-3T4heWMlx83WudZXYLD27*A z3&;CAT`wH$1h+0#*S30{!Omdht;J1i)Z1)(>zCJKo8fFE(j`pYoG~@kyz95e;y;j?wn)-cy-Dn<13T1md~Yg2|`LYq%(gi$jDJ<#xW5ReVF|BftMluOVFC)R> zF)exqZj~+ zL>+r_LrxvT`)tu-{y*gDn%`pGT;_?3&76CrM|M^DePBnKVTS!=HHS zh3oCnc6Wq(VYu54w>g6gK}#=N6Zn5}*=k@M=Q33jC<3tb-V|43DEBei2=D>$?o*N4 dPj@Nz8Tc2_`2=!aE=>PNOy(k%=mQ=gKLDyNq>KOn literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/splash.xcf b/companion/src/images/originals/splash.xcf new file mode 100644 index 0000000000000000000000000000000000000000..eee7e6d653dd763d779d06e1ed88e94de2e51dea GIT binary patch literal 158051 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%0ADu_DCa zB?u|NPD5yo&3N~=toehr?Wn%93maIS>u}Pc1)Ozl*|Ba#QlyqQtPuUhS!>p4a~t1= zJ(1S;iG_9%Y^*2RA~)B6#vHwQ;T327#214px=X>Dug){U(z4P074N@XzY$3} z0$-1~!CwkZ!&Q}KRTX8W<%q;Jv_UqVsG@&k@A@t@2hk;=Wdgm?x2-u`$;G0`8wKXk z0_%#r<+(YzD-ramZ4=u%d;0qOH=windb+wg==4%+=i1J}2CYosP~>%M-cgD`B;wbc zlap($tgfhS16w^*uD7?Va~-01ooLwVC>1ADcA?D7s;8r)BBK$Q;bZ?C6Q7cim%qYV zy1KDdT-V#z+tbzE-PN^jU0-KgL!=~m&>A{FDnxT6U~;4w6u&ggavY}Wr*x`)|hynx5*Mv(Nyy?gUxI;FcrOnR41FczE>8bdSNRl(sGjdmCh9GY1Q-kWp>w~zc_AO#U~Iy&s6hYd^c+#))+SflaP`5M}vCC+`@MPi`@jvvEB~mF9j8(%=eEa7=KThw<465o_ zi{NUj*wR@XrQ?cG`eloS3z!*zbI@)akfiRra*5!1G9paY0 zrBIM_h9b;+U2E|l3$(O%4%V9VvMhA{xp-e=RItiBI4m^Mlw`?5(1=v!lk8}0B?L5O~Nuk7pW>S=`#CvYgft#2SXhzkILmt*yT%c6AQD-oH^&&kQhe-DCaQx4)@ zywb8B!dh#^tATh`W?fV3I?OB`?d>fsYg-3uG+Hhj4fx+&XW8OgU_SO=UuXCHgLSs| zt9AB&c%9w(UtDLmeYMVhwa$LE&VIGdezng2Q`Xs=X@PZlxBn%7cGo{xXS=^zXa9%S z+3o+ub#~~hb@r=u_N#UFt9ACPb#{K8rPwidRD7jp?||6bD|YvGcj33Er%UYZ>FMqg zhX(umH*VTAxNYmuw(UE1?i|^D{b*0$$gbf%yGM8J*|T@=Zg|Dd3^nEk%2gVDpr2o$ zpFT7+EG#5AFd#4hUky5)w_c|==)LvcbZamg^gc#^gOA?ZTkqrRt4I8(I#7tO+;Z0w zzkc(VFTL>GH=Yunl07LrC4V~n8=v(JnuPcR|MJeO-+SomU%TtplP8WJKX&uY$5h9r zPM$cyeox9y+Hl98n32AoP@VYu;1bp5XJ7gLBX{3?{q@7!w{98QvSn~^i`N$KA=MW3 z(BETyzW(NO-+18Uje}h+YwGK8vr*2Xe zsiutc<&Qu5#LYX`*X80cS9J8!r4f9DIsEhcpLy!oj`s3gQ&7$z)tPh`o_+Z6P-9+VWT3BJr}gsEC^QOnjOM}< zU%#%WG&MHZU$51uRVrnw^5WO;92Qq5Mfe-MH7bPy0k;sDpZwzOw+^jYzAV`2_i`rBcWclfs+!l)Rt7-!i_rCL=1q zhmbt}vtc=~myVqrs7a6X_tqc?#N)Mg0zO`na6JPu<%Diw%q4DxI1O|mhL`Fx)n)IeiCvO?5 z&vf(a<3j0tjX|MHV-UlYkt&Q2x3q5DTg2|(TD&5cnFDsTU=__P%kR>ebm z+pYk}3r@>}gvb8=&`M9ghF^kslX;@ClB!6j&MJnkX2NXL5$uCMj1jyEzxm= zkTXPfNo5ux?tJJvafK<+N9&1D5{>Mla)!A3q3hSKG%W!FXa8I@fQU%QDXt*I#rq$* zzP(@>5NgtTyzzilqxA9zq@|eJkF4Uk?GodeploPKPZ+rMaS5Z=!5d(sl zWe}O1QOPc;$_3=Y&5s@KE4M^IuEZ_g3`I3LF}WqHa|m>WtXt-L1=x`;SFEEv7_8V^i+(V!h>FJ zX?Z%M_r=!kn>Igt%TUvb#BdiuPhd_l>r6rXV&e_RkDa`}ry@Nj(Ay~&xd%mOZxL|! ztvh~v%Z}!i^AtUSxuvYhGVzPv8;@_eXWxd^8K4LrF)icSO1B7;oRS7`sORv`XYbzG zQaDf16PQy{PC}H6Uu+sU(slb0Cq+_ByeMp*Vj`-hA)pk`Uq5*I?vd7l#89-Esf!0J zDYv+S=qbc6H*CIP{k@0#E7PNllE!$FgTgSiQi_wlkxNIfC#DY z6yg^HqPT6_eFwTqQX`Dcv9%D$*!#a@Z+!H{xi7ys_vt6XC$f)KpM-zvvNoosCog>V z{-6K!&Y8F0{^KA1@JH1jC*MAE<{kQd`yJsO8?OAB8R`2O)fvg$_-uM|{KAKS{LL?4 z{l&{Kz4Y^+|4j8W;U({vRWGSuJ|FAz@WsDRPK|&0;cuRQ?tB0Gt*7~?`P0fLV@|`~ zc=yA}>B-N}{P^?(_uO&o@#9C2-lVw6bTjOY-(4P`{P>N3x%cP|Bin}tH}RXy8$ZAQ zuM_9TKK|{$-?D2{XX~1Jm@TVUSLv(NHQFj=&H2wio|yRT%^yCrr>hZXuU9P3Q|8&T z^GtbPzJGpv>d!xU?C7SNRoE!P3F&xQydo|p{`|Y+W1s)}Tet3LFG`D#iHHabO$ojD zyQvHBzwp4muA2P#$RzfG<2IXTo+m=*)OL+2%U`Dip=M&0>WrvCn$ zr;qg4!o~Mq zylA9~c;<3Q~n$d}Z=4FW$SeDc=c$MF1EmdFcTP4uuuR zN9#=&Um6Fsc^KAtz%HmXI)fiT(PTK_Ai8(j#b1oS_re0;7lJ~e^3wVFV@E2{oROWo ze7RL`z4)7{_h0Z}59_+{CBp?rL?@JEw8NRt97*(UmgF;Pal|Xi8psnP@rbN z;0RMv=8B?xl3Rwhc##$qmf4lBqI7!jY8ZLO$luCHss zd$Za*bR8F8oA~hO4@y!b5$U)w5ccx%4~1z_R5KMgb@5lzXJ5vmOmZfK7SzTSXmnsC zAzBIYlc|qhegqJ+)D>6=B_a{=87pgA*Ae8~Q)gd!^CMtR zLwP;x0>{D8=_QRDcJEz7n17o*_nXrPx=Pa`{h`GYKN>tS6q{bwvU%@yEmB=yy!Q0L zo^lx1IuA@}Y-U;O!1dR+5$2~;U%v6LhkGm1qXVzNl#82hxQ_M1t23AW@ZF>RRoO6) zGzxcJp>a9o;+B28s5>vbG&A}3_ir7n%Y$u0{iz`VX>|Th(B4J@{cvjPPyc?`&L&#E zh-(Q1tsqK+`}TJNbpBswra$=EgL@z%VjHB?jFc0#W#7RLLOnD#_4ikw0^^ycU{;|A zs?tU4%dWqTU3lY}+qX7Qjf|LTo*2OxUteze_vy*^e*EzD>q^t3gV97BU~t01<8mt3 z4(+>9M4eyU+xh9#r?36XvCWP7G~p0$%7wUt>j?)dXXeW@KYrl)b;W7X!3JvSJT9wp z?bdyJ>VZ24JLmbC4}SIZu`Tuai4pK+Kv3Z(2;k8EJ#_$nPL|HQWA8lwz;)md?Pc?p z+>Hc_Td&_oUG+ILb}oMM+ILP2HCjQFHRcNBK^i$Yg#>fw&dGOw^2iNc<(Z~Xi6~wX zf^PHiceeY6CO~0#z~UJ{_sj3zvaQK#j+BTlKyKZC18F6QlFjq4V}JhnsRO;`na~Al z{6gpr2dSF{@f@t4eII=K<}-H;Hy5Nvl4{{?rJnU~l{A8&uzS8c_ScslKLjmwQe6n$ ze&FQQvb;n$)BF_t9ulihsF&@R8}Wzj*vWH)JX)rYG$B8;PFN`uXtO zThH9Fts!3;3<9~7F2V0-3MW}V8R@H z)bV4-*za-KaU1UVV>8lML}DcK=hbH)y5q>6Jv+8;**v&;^T5Dnug%_rs?F*_7(WlZ z`RwVhAG>Z-=NcUFt6t5oHdn#$`SCX%Iksn@y{sS?M}FuS2nAZwVECMR^vKqZ>MZlJ z=*Woh@Gw5i9D4r#?>%wTP)kWxbV#6|fr2c8kB?sMqtz>YF8%7sJ4e?Rr!NaJ`Xa`} z>r`61m)4}c@XUh;25Ph8FaW)^UK)*Bp;oA3)R!K=XZQLdbJP-8D{2)28L5hkU%P#K z^Ky6`aMP6YQI^|IZm!RXS>g+;Mgb2)Ciw7S!lj#zZ>q_N4j_*X26!~D7sd|VJWwqK zPvm&iix1$mNWFC8_{OTVrG7Ak$%Djud=Y%PboAJUDhpZ1%qkB+@CAo%WS0)zG_V@U zWURxc_d_xa5Q?*SDOIXV$4_kb$Ti}C$}}8jgjqCRyce(2dtW+w!n3@AAruOYMyK=T zeeFg+AHPe-P7GAfSK*GbXmmcl#(*Fph!6D+zI5x!L1NFz$9$AU=NqsjBz$R9R7|Ws zmOp_AQo0-EgMbYz3lK5{g+xTh(er*Pvnu)0$>W0yU_5`G1z8M1;n4|6i3usmDHgru z(jB)V9wmtcZFhxOu#N^rm`(+rx^(9qLk-zWnaDiyS#~nzpSW{-LpB^3Nu;g_ikELd zs3|#<00-~hu_iYP9l>Po1{i~)lCn}6;NG1r5`cQj1@QI@jZ4jAfLre0)qDj&CRcd} zMkQr0XFS~X;AnGhw4XCt;0m#*^g%Hx`70$Z@82!vUxiQ`f@9MPR;3UZw?D9JF@!NB zF0DvH-1@+-*4$_cCJ~>`S`elQi_ctDnn5&fc>s)Ffsivq_NoddjN2dB-I9lZlq*a_ z!61f6$XZp-5O>~>a8b;{a1kLW2vbJ2T)gkWJ+1i^E`sBYE`iy|h)8jo5^COgl%a+p)D6k=etfF-`SX-5Mq!9Ek#e}31t;Ae$H>Y>Ao8}i_#EK z@KQ3S7lO*OP#Z!l_uag?J}*AZ-$e@l?Ub7*)R#vn7$0BXv#u;XCJ4a}rgfgE?4lA9 z0EJj?JUPhLGH*6X;H4*?#EMHu`B;eM*#7?2nahHFoPh~X7&?|ZMGCRpI@(s0veci* zk=T_UOl{W#Jk&?U0jyN=&=yX zw~udb$cqnk5nKS2I#UXb|5Aa%-Vb(LI@cP=C2z8gD>lEVznNZ>*sV{bp();S3a zcirCIJBEga`QeG{_HNj;ZFKj@u3fwN-Jk8!0p|`_ASPB-rhRB zPN&yn2Zz^R)@iYOgO%2<#iquT(crB&2KX8Ef}Z!m$9tS$dTECTaO*dO6Y7)v3I3#j z4}Zc=yEXht8T-PYRGyeVdEzA7ypd6!fImY^htyjFhL+R_wXrqU3~P9lLF40Ruk);S~xm>B0n`GE4@$yxv5kT<92Zx`%{q=%(tTrsb?q`fN%0uj7;X*hc zrVJNC6GD_GVVPi3F4LHTW0a=ZnAFtdR6f;ifq$>C7*Z#aDIuADEeeZ0IbD&So3US0 zczQqge@3F83TM>s@MrjU1bp~2b_z(@-g*0saAxLhic7tHMsa5Poip#S7?q6j1^jt= z>C5Vu0$#SBw%%;r7*(UG@~g4tS>qL0AMw3Ams*KQw z@+#|fs`n6PxaB{ectVdaaa3yZAQ!lJ?=p-3o9uqtbXdZA8Puc@7@ zuC2ws+67pB3w~9#e5bvmQ|RQ^E4q~HmvnxK=Md;Y3i@5Q4yWroJCq%{>mc>1|3gwg zEgVxH=a2En1$_8pcCv%{<1+SzKdwABef$`jc;s)Xv;Dr=fG zG|ES#_w%u8t!k@caXr?nc%@n{D82E)GySB+{&u4w(jX7EhlUAZe5f)^2uTRm#0oLK zvBA;G*x6{D=*KG%gj7X}F4cfnA<%bhbs=b#l0xr9Fk1>NkmV`Yyzs@Y;T^*}w{6=o zeBJI1TShVLM=<_nd-&axcscK0Z0qjXdmVorzx#{p_U+!bWeawJH}!Y*_G}v3(ACX% zf7;W9$$+K=qan~=t3^N#gB>GY@HvAkn;qEpF3fT4aC+6PM4f)f;ld{L{k3Ob(Oo^$0HgSEOQvqfJ;lwOW36SFKO-GL$xrx6?eiU~{4-X{_ z$+p-BHw&A!14%WqYDI;nGC9MZYVomH!%c=@AG6M=HEWD&tI{kt%JyUaw#p!EZLrbg z7Znm78XBXI^y{1f40`A1%7 zm28;5eddp6^k=5ureTg>;mqtifBfUyf8_r-_50ub{;juu_vY{3lD#$i=38&Q`EtU` zvY*+1`V-+N+82{f%brv`t~r%_v;C$+@|D2g zo%?tFdUo5@wVr<0UO`xc}!1{q(Za@~4EyWslk)Ii)$J#84;q*Vj4J zG1{S@G~|y8M`sToIdteSe^`D5cSjBmCJf3p+XprYo3tBKtDvRj$!Ye~6rU7psL3Z- zZ`K;U%xa^`svs@x$1XP}I%sN?Je+jZV8VkA;US69{;@xmhBEu>9@w7WXpFOAE?uws zW-(g~X`aKM@0t_4y67304ZVZCeSKYvHR1I$rr78RQ+Oo2!5EBde2tC4_WQDB$YS~Nh=iNWctR;QW|=7> zng;%3k9t3S4vBipTVa`9m{@vDI<(&|%^5?4iSlNpN0=W^p}yNH}CWNa@pu zZo28n(Sd=D+Kt+Q@QwCO1M-2SN>#bGGTLHH(^yR5`Y^9>E1ONDltzV@(#nQ=j4V{1 zqVQFDX)|@XehSzCp*f+7aC_*of@OS~-GY7n2}^pq>(@J7mNA!>k&z~(@fr5C3}uEc z-I%d7(>3z{3DP?Iq4$THvxW~y6ph z-+2A?H-tBAuT%OorN8y!i_dGH*S;A3y#0k2$q>YOTH3oZyVx;T*yfnJyni7or7(=KrCD=FAD<;#F zXz@;0WZKgU6AHbH6eaee`la;|4Rc-VyL)s!6Wus27P_=Ou95vu5bCK%ydTk=GCZPsQ1OW3l>Q)pVCLYFBZrS1I4B&PJ#g^gfrI=( zuLHBV9y}l%uyQmBO5pNYx}hu!~5+UHp(|9m8(j%<Og|2~mXELt>Z4MwsTXFk5t%iBv?soWBOk z9Nh}3c%x9NMQPEcEroLGX%TX--LuX`*xu9S6rx6)!-*|C-Nbi|iG3To#BQ;tyRVm? z%A3GLhnsicT-RVX&S_22@*5o+6}6OKIv2?X^d;wjj*G)PrDEgwI3fP*vILXKY)(kP zHlZnz{+e;rq@ZkluPCm;V(t5A(8J>oJ^0Xrk3IG6+m1AfM`cItHy!1Vst+45s1HDV zhYqR_jvYF1;Lzctw|xDH9~`e5&aV0Z|m7RrZChA%ZGW|pnpb*E3J z&xFA*U`e%Q9r+a)nZ@)fvo;7!ML6e_LWKRUAx-%%Rw*rWiA zw=p8UO7IcXG9N*X^wO|kJf|(e1v=Lx zfr~R#8D5!+EOjQIe!-GzPK=KZTjJ-$vGY$542TwI8ZtFm_RK7KmXPr=UQv}Cw=_7w zg>zFoopgF88tHUMMwsWi4C&K}OP3h6#I7*qth^k_Qx=3*fQPgere`Kc2OG5>>7i!A zpG!-pcnlSgYIP>Z=Ojih@lm^y4PmK_dc4&V6T*^Z(`Yf0D~U*|H4_nJ1a)Q5g!$yO zRapt)ewr(j)624vth+Kfvpgpu!cT{;l!$~%w9_d$(A$;l6PjAV_%6>eyOK%vp{Z4r zoL;`1C4)HPZb-IB43;lXUJ4>C8LAnYTuNxmYR_aZJ$n0!WEmpG-of!jNS?H;&P$Fa zA~Ie!O&T8*zk<@!7N)DU0Z~~C(*@ZKc8?9=sYHDq4v~Y5J|qsw6Z6#3bu(bz+b@FB z(?OlFPF*^~3ItJlT7^4Z5H4fD>5PjcqdUBv$tg}MGGUflHJ_@dFq>SMlPgq698a&v zPsYI|XWV`cSfq}nSLS1nOOF^o(;;4FlT-S5TIGtA=q0`y6*A;<8v{#;c-Wpc2^2~@ zk)24dDM*V8@xvI?2pV23Xw0apwjd)uJP@Zoy>&_*5;E$FbCP310|Wg1jY^~W^mJB3 zdA=nvCY%pf!g~WESF9;5$jQJVLrbbM)qHwl`TDj7ye_b$vU0V2HDAT8Ca3qGJJFxj zob~hKi<%ehFFfz}yzxh4KYrn-zxd7X|ML0t<-hGa6@E(pu>8SG51)GU zsc${=!ms~yZszjr0pkI`{n{JH4jj7q_WPcE?$tkCoVnZ^*c;k4*4;m_=Kl-iz=M|0=IZm>SU?x+A1|HY#cOy9JmDHIJMd)ZI4KSRk4MVXiq!GH!m!qDHRpj>+7WT(kLhhA!RSS-moGDNd^U5D_H*8&z4q zv$x)gS;Xk$V+@URCpYcd&{Sf<^0Y9y<@(JnWjHP1Z!mbGTla5nrJZ?K^1!XE%9j0G z#BxN@Su*i`D{Fl7!L1#YI9^4`Xl2DlDY@zJ&W=hPf(SHHa(YGovF|bl5AR&R8vEHS z8Oqyz(>Iv}ad_R8jKeU+>kd3g$!q45afZlTAYS)~3tdY@aMTLpBEMt?7$W$RsV#v%2akAFmB zegjKB;$$4j)SuBAs}?3>$ly>D&IuuTyy?i!?$vYx785tGxl9M65?$%lE0UQGQ94fP zL=&0jqoX~wIQc+l>FMm4Aut@tV=XuD?rSJaGeL?z;BppH2&MGq<9jwVm*m7phX?x` z1>+o!kRka}>#a8oiq$L95>42#hM77S9uY~@Tkkk9+`Fc1Wp)~@sQ5U%jg^?WwD!KE zd$+7_swyok$j{G{<=OL*da>i-J8!yvTmL!{?|P}LtC7{1r!Mt8{ovgv4qQJxjD7Vj z2zl`X=Be?G&wTUAQ}^F{=k0ggal3H4>{j#C)Zp_!{K0e2J@ef6mEY%|>car>+S2`ymjx1hrYY7JiI)hbiAyzth~ChbL+teo=Y*N_$6zT zcr#-4mdw1eRxAObc#%hlJt&wDo(v6-#-3^0@NIg%KE|8ZPvAsgKxlM&SF&T#kZT=No1zXO4omfMW*mADEHr8)`0P zjsgz9!%<+Vu&0BQid4}E{gRsi{{U`+l!J*aX_eMn%X|B21+Qt9lH3GXQE(FoAjc9F zoVd!UFoyY$(a8vJj1uw^fS`>bhR_Ekt_o3vgoRzgf*2I&=j-jo9ybtp_z1iJ8ib%_ zCf$x|8Ts32c2X4*m0NDpS|=PYT!Ynj|Ulb7Wr!kTn?4G?2U zGNTf=A~iZ#Pswl(SaKPwvmh-t*nkZuSoR*tmO}U*POrfuIlVZW4zM%#z#}=Mlop!# zeQgh=@lrdQ7cbvWz-nl9D4CC*&SL&jXj`QMyG+hYVS|%FAzQ#=>;C2jmBY zCKGihoXl)=9Nd5)6Ot$9sgoN3=5@w!N+-C~P)a9$yqB=_GIu(250qL1qduPu?Ij`T zkUVao^Z_zjpYRD#-!qF5T1h5FM2 za9X7n3F$SfvXY{L{rwPRR~pQxrZXE#^DOaESUQv;d@v9>t*eXjvn)wTDJjXyWYEp) zY^kd(FJ6VWzsnKB<0_@SoS%vIK5;+(>yo)q1aR>n`%i+{<=Zb7(6>{kLvWeB`?2_1 zak)5q?3=xGojdTzbCkU2>reF1*By7VuS2(dyP3XjI>ufX*LU=3BGGr`G+}XRClb9k zoo;nro7nZp>1HuToUN~{tE%N|`8s8-vTnBb$Z2|W{X}s|Wou)pH8&?SU&z0(qQIKJ za^(tZ!Aj&KO0`t{thancRa^h2!I3Rp4aL@i0;_c;J_UTi<$Pe8@b>!8yEAiF6jwIv zz4M;`kG=Pfi}K3;$LE;=hOQz40s{=a3^2g-4%3(!W?%-UF*9@(#oh}d_7Yo+HP%F< zNsPKlcGEYTPm;}Mlk8?&vYQ^G>CxD+#O(KdpP^{nU48vtzdw0JC0@^M=bn4ddCooe zeID4hVctYfjX_tXrqovzN)<@lAo;>vAr**)l}b~!rQSEWYeI|DtdT1E&}-QMnL^T~!97%~I=aoxb#egU6qF z{+Z{VKia-(pPh{Lq?}hF6v;J}K!Uf}-A$b{=l5>dap2&i$DbO%@<<&T0R<4Kl$Di+ zYNOfiY;5bAwV-#+hE4ZBu)Uw+J9)7{B2`ss4MwBc=4)!7G;4nMGF%>9Up;>90Xy9W zC}gTiEwr84=58K0W&YCTtJbVqu^bc+)`Q}jyhJ3ItF@H&J3`{{w@;e0Xvs3%jjdVT zxpo&p{68r#7Rlu5swyDTTWn5$+vIt3=Pz8cY{jbOoolx{Kyg-HA`mOkjn-hQscrDK zPV1(+sYTS{tBV#-xNlbjy*RRBfl#i{=pb{}Iv~nToIQVWcXto7=f;F}J8Wp>s-##z z#$uoh-y6+!&c^1B$uk#p_bh=FA`aL?l)ys&wEQI`X$qm^@?N;-yQv7cZW$ zW?yiyJfT=F$5`pa1&tjOr_Wy4vm6$};_+*C(>#$C3dC{+VTs9Nb9h@P&RW>r12=8& zlD3sQYS7CkvQmLmq0%FJLAAwJ?`xejd*PzROP2O7>1pcSVefEy+er!oIln@xRO>O8 zYD;asueo!^yzV8-mM!gB;+fxT@ppFAf$B49DR9HoI;>H3O7_&Ny)t=d#kKFG` z<~JaNzz6aQnL?qd(p4Lc$b#Sk_Fa2Nv)9vLQD+OZ{+SyN@9E*O%aFa`pYl?%Ql)`B zBNIZc&DrR(o3&~wVBK?)b1HP+>8tlXxxFi9tPv;;@5%XMxk`g!n#`7ZuhSsr16IC- zmzR? zde#VUocFIX3_PL!u;?&K-_&R z<4Y7uwN_iBl^g74A$RPU6b_ysQ_0_?;-v??z{y;mQ0wYkyz$_3+XIO)5~LG&M^Y-4 ztJRf;Dy810=Vxc&>MAcgJ2R&sj~yNX*Ku588vF(|O*2;PI`--k8G{ReM!@b%_%ekW zeJM3oguUm(sww92`9=5>c4QP>(4&*mvUpOXYr=x{4?p|Dgmjh`)!vryfd;77sw>SV zSqTC27l_LR0)W+tQ497c?aIz9tf;DOo4#zvvDdfCS$d%EzeT!Jsdbgexgo>b60t;% zxY*PzZh9sv#f~6vXc3s1Sx}*_Y3y9E@yIK0%S#%7r}rf)%JIlVr_<{-U`}OK`Ph&! zCOaA^{!|Z`3a>X4{$n@xhk z!n{&e>9_py3gGieq%uqgc6{^n75iRT#ifT@jwx2x7^~~dNbzBJ3mGFz>do3pjoQMr zd|iW_8?|+H4tqVacmNQyb?V}6C*D=GEsY%^9nY-Z#Q@d{WY@%pKtX1sbMs2Q(ae}ZVc%hx}pHRIXqH^^VVxr)rB(2S?9 zlE41+$u;`NN7t^CfBc~DI;|Q1b>%v(8Q;Hhoz{%+Uq+_VJ2WFo|EFfezu#3eg63|T z5hQofjHILgsTtqD{KZ`~Gyd!HCwJ3~?_D@~7tQ#$^QZ5k8UJ+Vsooj3T{v+M0dO{Q1o@K}GeUuQ zr>uDJSAY2U$LrUBy1Qn~DU};t6T7z^edWDxuU^0L)jep&jQlcXwX1W%rbExYd+O4) z>p$ItX3WUr!MpAnH-Fu}U;puwbMW8)bT67Q2TpmVzScKs;kx}#{o%v2S24sd@2(kn zNC~4d*23rCv*{tyUmxoIba%}N%O8NT4Zd;H7OmQG_{Dee!1n638$X>1YDTEy|E3v{ zGpoVlYw4Uaw|B#?!@qg+!yo$kNX>r|#rU`Xt{5jynlf$1>;>IR*KFSL(9!4LeE*v( zeN^9d43<`mZ~b@0c;9^+Hf-9mW#`@lj~x5;i*Nkp)9FdK{+)Xn+$$aws)4zH4 zxtD(T+8^He+XpAVzl0vCtLXFQ{|D9hQcyJ>eTi0$dmo`yzLp}>{ z%-Q-dts19pe3JZi(z>IxY8)5*T5MhZ2+@$OOAnEM#1C3Ewk$hDt492!Rb$K2L;pcF zqV#{NM*RC-RU>HbrW!$V7u85Q`k$(?W%<^-sK%D%d+w$h+m}6Z7uDEL@jp}}`8FjV zS>&_wKYujh`}S_CaonmMcTtVwR&BkTYV26E<8G?4WA(PXsmAtIyY8YIJ67(wi)w6N zx$7>fv3c3HyQoJ0;s@?QHM-{Z+=FVgOyQ@aH^J8$?Qz|ukr>)p|?5TTDjbZozjEzf5FDTd4k6U=(foJYP zHHIO$C^~lJnAGeN8Q!8U-G20ydr^(})+BLCqY_dx3Pf5*$J})Xe)Ig@RU@et{Ax^2 z&*Q5tO;dWe9)0!hsxb<+fVxG#Hj~qHOXbzBj=A?e^77q38b?v1sJQQdtB{zKoX*WH zDpyq3x6Z!rkyq~a(TI;sit}w+IzAimfn88sE>Tt2w=dXy^sT#nG#0apnS8|d!086( z2voYwH)ZLb=kBH%O)L{-`OaKpMGnR~q<=&Xfxx7NTaNwdu6mI?nh8z!vTQ%s+9GW? zt(F>AO^A)MQZ+Y_>yrG9X})1X@=HL#vs8UDsaz(NNTm`=a!o3c;Qz&xm?fYpz7q)m zcn{$Gav<3Y%K_lyz^DdkG0l2ZL7SC9sNQYe)&O2(95Bc4#R71(Vk_G{8s%8^zuKL<$?(la<|oTP*iaiN&wJ135xII@5H znuXKakVm7@*N8M0NMhi2+7Wr6f)AYBoaW{rmKcG=oD_t(#f6b-Tet7pzGc($g)=+6 z$mxNE8BML@I@(&BoS2bHCPdN#WROI)?97aG4hfnVNmpCB44%bBGbXgc_lwYVYrPkV zFD7)fI2|=Q1s1NPq$t0D)Z>z?+_AVtXOrGmEnBi^&diAcw-axeAq)<0V@rESTfpV8 zXc0<*q>jA2f_y|kV|E5gAq zP)Mo~u5gkE2Dz+f;euIRaO^o7>d=`LX)apv0s~P(CM{M)SYAf%-N2Mgc!I!_{z3LE znm21&XM4bfBpjrg!yRbr?3#$Qu{Ao4f@F0>HqLy+X`{C^405R2%&rM-eit}mMlw{p z*WWt6tFz5pSEJR)rJ@Qx4=f?QWui9>GRTr8-3#WRH=nBkwcy;v+}g%ZLT{v+0(l$; zdLv^*wRoB(KQCH9E%?jKiLE}5tIljRn83=WjtN~|<9!aBzDgw(V-0Xyj_A}ZdI=Ka zM~9OYShR5A{286C7$wr7qMF_9Z|_7kufwLRQj%(=B*6uuSn1gTk1v8$Te@V?yqOc* zd``Q?Y$T3*m%n3T*Q9Y?yA^3(aWPRw?l4JW3=A`kYy-Nt-X#m?P3vq6cpK`h@X6LV z+)Wd@rcCPa)tU9kB?6ux$_A2&^c|>1q%zoB_v{&6)pU zty(1(Bh>;%NmnCp+tFKGBpKwgB@5@zn%seEwFWIN2P}@3iE|duo8)tvD-}{PvT7pj zDh8R0xseqJRy((B`LczRTX7+x5tk#YD39V@K)M}!BVJG04azbhQX`x#MV?Yr#F9f$ z2Kt*nt;1zh3VAsh8JQUw+_dDeaG0j$6w39sdW#zAGfJ>~kbRJ>L2!2TFg-d^Nj|oH zYBC3-=Vov?SlE>0R1TMi*QHfT0T0o_c-ftwO_q)@g;cv%0ncy-0Za_xFw<^uQd3fJ zaGXv}N>0uwl*>h!8WO%D)|l)8vUQ>eOUPfi+ziwM20$9{7V#%16~B{{Q%S~-VqBMz z+$p&jB1SScF`iVr4n>11tTbHBr+=J=Fbq;Tjhm91h9Tq&1qGN8=(DmiGg6cAb_sQE zpgrXWj4)_gE-+CH4I)hFSqb4|LJ~e51E+LC0w-f^0wgpc z0SYxamF}I8CiXW?5DsxSe{*!)XlnHJc<9eD@yz%yfnk7~zc_*l2^gZpl=RFDZdQ7K zrK^bK1%hTuYD6mHNYcP7D*3CFWm7#~e0KoaI6uJ<}( zxDl^S75<1YUt|ErvgbiSGx2Vp;$F$)rDf%Flj37ggW}yp4q6grjsHW|85Tk*sN#!Q zbzTut!;;jt1ysR#USVE-aS3jl3v zvN9o(xR&!v#3Hqblf&cC17vcqk#)dAP-!gA4VuaMn%8|43CJ8iWxOJHJifX=Ex#=k|h$cFe^5mhfKs?w)f3eb38kalg}r2Iu&@zg22r( zMYSxR!DL0{iVW=@zk?qOB+*ewBa95j@}lH1@%fn~$8cY6SY%Qr@(BxAg7?b>QZe!q z3pG-tB&OmxWoDnZ$t_HYWl^yiW%wt#xKf(H3}KNz9iu|y(hH0EB$YC<62r?R6XTLW zB2Huhp)!Xj)VV!@^5keHlbwU8P?@~iYbhL^fSalBT6nRM$vJo!g@KZ~V&aN|EBLbt zxil5eilVrDk-gp9q)3Pgqhj*~Vjz~A>h%UWD!*+_35(+7@{kZ1v#h9qvri_2iyZlz z6{2)DgBi^&uXi^&8yiwahES1QQdenU8ra@Hs7J9AGV@8dq*Ea-rW8`T5q_Cm%?)8O z!n61e9r9)?#zeE2vAH7DL_n+>z5ZAn8p+8gX{z}mgv5#@xU2e5DyV>uth`L9ROf}V zSnOn6YCD@fHQWd`D>4TW#|rq40aGLsey7 zD8&j*%NJGS%BC)h%?=6A;Y;OWkrb8R(2b0UPtWI(MI~-ca9OU93Wa0_Vo`ayN}I=K zFxV-@Qk|#KTbCWfVz9a7icXEnS9y3&gUaCTCHO%R`cJL{#aQdl(ExHttF?vENGzPn z7b=mF+?gI7#fr$1;c5;}z*7y}h%rb>Q$$cez%-FmCKU@sBK$%_l=y2&MX9=497{3T zDP__|B!hS4#fGyY^A(gL)O$se5E_qYEU=r!zfvZY$t4&xxqzeuCoyt~R3K0r1hMEn zfoDg)_a=MV$VkYFg7n>28XujQSpbeP`F};0Y_SaNAZ)`g5t@<8L=^&sMV$l;+9aOD z;r9k=i$@~eb%7K&gjehH*?22V5XY#JE5#5Jcy3Xh65m7|KP5jY6ANVu$fUT+sUCw| z(DD3gufMUyRu~r>7M6w_j{Bgc3s`8N`QKyFnf z03$N4)Z|7o=7z$AP%0YrUsrO-hD7dj%pXu)@{mUzwTmF?c*7tOl#65{A>;-j)(}g%N_=+{qOxuIFda!1KnfrB|MCu>@$&wPG2sTD5Rv~&-8_@_>53hYvP15 zn6W&dmUtVR<>9y~z0gn`8yuQzMvehL$DaRqhrTp3RG$(+}m=A z-I|YW8^;x5A-q008hEX?FovDV&Cfxyavs9Z%Wz}?L>V){-qGk(+}ODIv~rEM67M^d z61Cl)jThxnd19y6=MA9#>$V(rY)W=cK{2vHlmI3UODGd7)N;rXWLuS=n4FkZu25HL z@FGVgQ`&2|ECwq&zg*ek0Rt}Bvgzu%Jj|br{~vgKL1Okbno9D5N1m6EIF>7@1S+6b ztEsG#E9=eKAq>_?p19VJ`hT}_*&{i)oB+}ypCCV@I=F_amAI2rD|yLDiKzlSO~E4o z4Q`?@C@XD_A~uVP<5dTIWd4@4uu+`6B3x9^!S|&CxeC|uc*0PnQ7ZLXUUG6mia=Yb z)8neJ+EA&Ht8LC)yz+`v(DQ%I!eNa}&E;YGd}J_325>w|Lg!j}MR9(yxI8^6H94)Q z9PbnKYz>EE0j7MGd_@hL@;d$M;WQh8-nl{6DiXi8*tWlm>sDIIt%8tv($;>SR`*3yfw+f}+ zV6N6_&65@`UbDPTgjY4y=4yjZtKza*vHmq^;IfU&9*z6AyrLr9 zI{pQ0kZX+=69{#BbFI6jMOR#yRo=2_;k;SX9qMXaD%Y6w7E@*vi&egC0~+YFX0vf> zlLAZv$F*EoDSrZGgssG-B6gAG@2vT>Tx-4#P}@+3y)2)?7w>Y zp@TbCVi&wFj*Ch{|2V_=Wfg)7ab+#Gr`J_qi_i&cWnTQ~F=-M#E}zZhca4D?!3?)Q zapK{J9$F?K9Bh*%MnVX9SidXSM&;$AD!UJuPamQMo5f^Q3&b@hsoG>Vn@rW!#@g!q zNLHxt_|b%3z6#3{c@Aj=L`4)fCX%Hy1ZVy-P>Su zIBYh%y#S9f$3ODe!2<_pW#Zv;EUJIfDjXGt!50Cj6^C#sU!sGa19m9t`@u(-*X^M^ zXPw@9hocw}7~_9+@S%NsJ9BWF-;7s734Uiw2u^g?BFgZqyXL|5Az zea)>cfo6;yYvA!XYcj(b+FX;hcPW%bmqt zb8&IGP-XRE#7&5d2~dGAUABS{R^gn(2Y2q6rzL4~qU6r{+FA#m{jt4Y<+I`ndBufA zMHoKL{&Kk)B8QNn<`!nlH6xGB%%8f4+H-ctLS+>A6{hz4ZA1baQ1=QyHaZ)*{fbL4 z=zkRE=JO?5o73Cqg~)Vt+6!3BlFqH0c5UkvMk5&!o8RcP<4I9not>ED+T?Hq1C%0G z1c4C+Jbs13Q0EQ!J6e3r4Mi+gN$08!8#Ydtj6|A^s4}P3j(3p=n#so}z#oeuV=|E# zh+Op+6hcm=+8R$w%eV>cmh2E#`Ls35maU&I2nS++l*sLJnzLb}Kn0MRwF&Ix{E{*l zh*&8Ex0EXk_GVven<+aqtbE?qwaXSy5(6%u#gw#o8(r3-WKO9Z+&|iz8n~l;^u%Ci`8f?&*C9Ktd`U>Bt(wM!vO+QkQg#JMvCI7 zFjdc%6)SuFu)W!=C;_q=!Eo^hY$X}Fl^(Yp@9F-;kBa3&1jup#c#O~I0xmbRr3b-X zZ9Jf(Gos{Pm#-1B5eU@sx%qlugE!jyjyW|f83#UD3qGo)MX?w;0fT+kik1w34=}vA6$-+mX*armO&WW8JozuEHCb-lR zn0av{Q0u!6eoRDCL0Nf0Di|Fpb9p;#e!!bEzG6iP0v)Y^&Pn4YOqeuf()g+E&Ooh7 zC%1Sl^{$8akuI0Twr9%yNH8%DuaW<*MG1b0sAoG_`QqjTbfaZ|dQ+FG3UdWgsH zH}vo~^zb+I@HaHfui11)LM(%>qkhA9}x>qKv<`+Sz!pC z>SdgdVkhLLMJJW;5qeoh!kxuZRatl_MV0tGEv`oW7=#UnXO@W6W>-tIzqJ|Q96pD~ z-cl1ALUG!>-jL{w@{HJ|A_0Po5xj-KWr;W`l))}<)JZIa9cPOLB7szE ztn;HfiT!MJJ00T<5p1Tw>s3@rh1$9*g2o`0B4SphL|8ea5V6_K9z8-%sgN8+Ss6k~ zMcP^~Aa(qd|1Z8qpR2C9A%V>t>-B0Ck}3^i6O}@Vl7#EZ#vryM$KTlGZPaG4kvu+K zKnZ#ouZk+ff(o_K?n9JAYg1!mgWcis@vpg`!f9KoJHv;Pn81 zB!|slg>eva4mb!&MTJaL(}?h*<`%yX>)>dyM6y_UUJPD}P;5B>ie>UjX%3?Cxn7Uo zAF%R55pY_dmPn*Rgkd8bTV}BPo4mf3CSQxE!O`qU4r8*s5)wHqlOje{BUP)jnQTU; zr!nAa^yNmd7$F%FM2IUSky6rEWJ-E8@jXf@lO5r6LSkjxj*Q09PSKR5${xtBio9Z$Z$NA7D+b_K_4r z0yJ;~qJJ@eR)pH`ZfQ~%jYKk#v4GAHiV<530fI}Qm$6eqgjFW5GT1ycAG|JSz1zoO zvN#BzHOe)`krXqu3XS_Uym(|L;YgHnx@!Pmp&p{#5iE|MT3Z7eK(M46d<+yaSm9~l zQEdstmaS+-G@FW#$a!YELP;Y15!a7tNaPBF)`7oZyBO>qpBuqXh+_(L$PpCyb65hE z@Iguxf`nB*SBqIDh-HN^(o{Nxl4J3)3?!x;qalw&n8J5e22-8K+khxNm&@Oz#|s4# z41_SQFp=Ny_Q-i-5VJE@twl6B))sNZl==uiC3cEh19T-hn&9&!W*QXR?Low>&pC== zh-D;4F+w#E@uo&WB3j7O$Z)QSRS3gY17%x{A4sr327!kPVwK+JbbGM`UWeV~9LsX5 zC0eaa+~)JTEBRQJ5KfgEY$vhZNb#=JsFjr(g-Qt+c?p8$0c>xuIh+9ds&_eU_WI;d zAPM%8N1}ikT#tgPcHqs};y~q*f!)SwTX|!2;}Exmss!aJlUE1{}>EZ#JvZ zXT@<+*VrzXrr-cfQ5xmo+XV#VYk*`%Mvgz3>Xk_SfNdcX$TZcp4VZlc#K`OR=CgbO zk5}n3*}VMZNCqnzyApH7ACi1-W==j*6lWvfX=Y|tp-7~N+lHe-ZM4~$_J244@72)g z;b8z?>@26p=S>b_M2po1wHP~7p%$d4WpN3bPwH4|EY>n%Y-&m#9veWqB^tZWQD5)! zI2}%#jnDG>A(I{-WP{71*g~DfsKN=O(ui`nx!EK&573ZO$EK!na`2!C#}Xn>T@9{! zr@O)GcG&Yn=C?ON0C75alfxM?MMi@L`0+>tPzjtGgnJ@dnnYcSBm%xri04JhN`Si6 zIbAMiZJndGKA*X)XA&MNxEmXtiKD|=31ZYlBz~3Atk>eXj;2xvouSif^*SsqLAMiX z>s@wW?KvDSN1dyHb>FJ>^Ba6kZqFPoHzP7KS7ri~zrL!nQiZ20l=3<_k7#*H-plwH zuyzVr1s)8^tL-G((r&ZXBV3cq+O&KB*2T^4fP2<-WqKHUY?cs1&}lW;0T4g(P61*_ zls~;C5j|_LVj1hKh!w808d6wmm*2N?ZVU8;Bo%Ul!Qw8#a{Vpc$tGd_z|1z<_IeEhL2DkfQKtTt4G7f5e{QL9uk z@=k?$41CwhcF%+fOtE;q1ozq(eYb2EzV4i99Iq~6C z2$z5%ViZO^i>Rb3Z{TFspuM+hNbo)Y0&6S=a|Hr8_0GfBRApSwAFz0W2$?pRC2mvacb~fpxRFub^O9-PPvQ$K<^&0R%iyf*%q`%E#Awpy^nGL0|XIPMFo1qeOtv30)lx!*_(+iPo z?lfhM4rN3Y01yl3K_yl}r&FnoW}s%`6^8-YBg|E~2sL2Kyj5{5F_ zJa?1V+cHa^lf-63;kO93|t!BLu*qwMWQe{+)hHb;GZ@{w-%KWg^XfWt) z9WAA7CaVY*nzL)BDSH$Q77nsh=m2P`1#G1in2vZYVIfZrs!e>nIf|4y9M;-u8^(np z)Yv;Fm$Q+#)!F28PMW04L<3>@3Vju`iqb9vxFt3qrj9og5H49NVrY}CHFXX!)T%XE z%zBev-!!fugvl1v2O7Oyv-F%8HX}5v3ib~K!Dxl>STF#SRDfX?S%nNu*LRoAIj zHWV|x!K*DzDXTw%aaQY)pZ?#d?s^*u@NgdcT#zBEZ%qKsL9}MwdkI_ zCaS99kAMKgTD)GrR!|@)%bm1PT4JjcaPu^l8e5aUAcT>i3ItqjbEXQCq96-}`Woa- zBBu|eL9f$rLy%g#053^ibsCCG1bmKsRab$^UdG9(BIu$`?Zqr+Ty3-8)v~g+Vnh^} zPzb?=0Gq4v=1H%sAo2KPYtX=JHdRrcv?QO`^PoG|Cdkau)fi1CTZf;+WF*!!`5VVC zYUIVm;7Mz~4!gg`X2BE;a`JMI#mD#JYXN;(t^oN}0|yRDIR%`2mDORl)>ypu6eeRd z9<>GLE^XnDiDWUt^0YWZF#?@d$%{Y=zBn`L|Iwx4=3)Xo=hT;Xj)~_KSJm1bfFHGc z%o!|JoTJ_0pEaYtIGznQX6x)mEWSY}h()aUO;#y+EMwyrW-A1_{2J|!S7(KD3M*?c zQylg6EoPjl$@Q&%gz}pT>bZOV;z;J zF`Mh^fPQMTyNyXKCdW`$SE*CWisF#jEGk(B44WH#UssOI9Fjd^J9_vjggP%CT|#I^18NNv(z<+ zE8jUsBhb`9%~^56;a!p2oX83pUBD|VgEd&15E;S<<&>3T-&4%dwW$0R;8xvD)2(ut zm|kmxU1zdFOJd~Y@IF=3;^2fZV$+ICipym3vNSwu2n|DOHWn+CJZ2tt5)3;DhMfe% zPJ&@40m+;->?9a=5)3;DhMfe%PJ&@4!LXBH*hw(#Bp7xQ3_A&iodm;?1jCU8!;u8T zkp#n$1jCU8!;u8Tkp#n$1jCU8!;u8Tkp#n$1jCU8!;u8RNCNWYAk6z|n{#@{t__pz z;>`G%h_DcZ3IjzEQLin@IqS&E$2XG6OL|0t_ zs&MZ)&4dYuSB*E7rpHA`gn@`jT^wr4ETx>J$f8L_jn7H#8_PpstE77 z8t;Ak7W&l%1N~7$O#whQII6StleOMSkE|SD%}OiH#OAvY*F;?xfk|Tf1vPqbfHkHj*6z0L39*80lUkyeDg%%!+s_(oab7_hUSO1&a4+?1Q&qG zyfnaly;(%aDgc~$UM6tw+Oxnb&mI#SiDkNj>Sj(mL7kt{l~cF*P;awlka2^}NpwcS z+n*DFdU!rZx9^FySZnK;3kF)8v}6fhi1C9r9D1;`GAAf9lTU9|~P-+K= zBvrvlvY3QOpgi*EnsI}?7$6d9O@#eFF)1~Mby_N3d2GW(Q*p{DdeH}{#Cm-xp<+>T zLZuQ-Jh6F_wJZf|4$&B*qUHLh5Jown(v&wne*aWkX+K;0sS3n8Ghr&I3TUbl_v2e; z)KzdsVK-sPgEJ&l^tgcYNmKFM$G6S2S8&LlyOoOGx)^;Xp;8w(pWHU%4l0q}NLKp> zi{cWQJ*~<19NkVgMla-Gms)!Bf-JLzkX7Y0p4dsZb~~BQzz^~wkMvo^_5SKVjx5Mm z7K2Bqv>8oLZ<~I{EJeXX3K8JPRI&UANkj~lZ3VOIgscg zWZZ%yN0zq_Zns;=wDj11&LC9AQOYMDUfie*&XdVvUZ%B8flzCt&pRcEzL3W{pLuYe zQ`kRE=n`g-N}x5-$GVkJ@kg#W2C*okg`Yl&`>D_tP30sfu_H0#kz?z|8wU0+4(x%( zbS83I;7~V5RzCkouU{ElA^PC&rx6Da3+N;8%2>o^A^2R2b3u@~(MKSwEw0 zSEuyB3ZgvD@e>;-TFW{8`ui4bD$<(?6WHD#t7DYEd1Pr*Rbg`Q^tz>~Lb2XN1OiIF zB6h~Fch2hX524+N^c+xah5bq%7K43s_T!JQolspm(Bti7^g@G7%5Hsb?_!@SKRGTc zsG4tYji_)atmOE^CpJ#46=fxjM4o|AWapqYb2!Wo^hvKysQ0Xf?Rk3tk|u3Y`WS4+ zu#gbEZlYNhMhIc2&{7D(jD)?v**x7T%T0-kiKGdcEGpzuD4T8&G4_NZNRF(Cu|Icc zX@`-YkqF6Whla3#MoiPiB%~FJwR)mySl%=C)c9>rZJymAD@citMbEz=gnlCp0yth6 z?t1p29bFbmgO$cFlFEcxmy`U=TAjVnjSAPi*o{U9!N@m(bU5 zon8Iv%_GZN(SO2-h})^U8$cEA{T$ZW^&j7RYSWZjX@1J6NOou_d$6gVCH`Pj#5()( z(&sPlp6k)@(&EtLEmTVv)q{$dK;HYVfBp866$Aa;xMj3vMEb@$*_h@v&-MS`AAQbzAPgii#A9$ zbt&CvziD>ihrhzKsTSmb5koXn`g z)XNX{k1Qf0a)9+cOT2`Pm}XzVH2cGqZ{9rA?bDWGjqacdnr0`7Y4-H>Gk<=3WqWXy zhFV*)$Vplwmf5Ks-InVY-uw0XPO~Uy?1;!)h`QY%3L0joV3=LH^2zgCrrPNV3{mwg z4G=2YE;|Lg?8j?gy!_zo24!JNTy!Kod?6&KX8~ErpjmdhwC3;EzyAHc1uhK_=jbg& z^lAsKvQx0iUb*)D+lP9Blf0FRFl^8$d-VF*cOPHgLY8R6Akma1OB!jSexvNrjWd6L zVs(2p5!UEv!c#J+MT_YP4j5$*Ub^`HQ(yxYa?~KvlbdZlkQ%DyC0 zILo2Dwac#VrA=t;R-^1Yve>^Mo7}UYHpq(sqwM=Dr|#^tXEDv!A*1X(*^;--(gM%9U)(muF2^qF=Y`RW9_d*Ijk42%w53=3K6!2nj-4Uy>p>M<$)HVkx-4t| zrM{1z+0-?-lHfj}qUCwWBzyGg<$wKp{W!8Y271(!aghx)WRksf9)Fh77JtoHZVFRT3~+51<{ymJI+PU&q#-N9`}n`Eb8lAXKu z)$bo#;H8hu{tgKvf?Jlh$WFl`JAdtq*LKfpAjcfN&(I;E3hp!7AUg$v>{{Qazuh*S z$k!;c{o{gE-Q6AxK4_1fDoFkH^~)bV7vvUwNCc_6dX^BGxJjF1r?>@gT|4)WWBq&} z=h9$XWT(;A*g05ZA7B09?ZdtO$0`+ZDZ0P0?!`VrHeio^-}lw)d&wMeNJp?E`l%*% z)BO6m-yVD543P+0?&))Ns4X)5p9k!**ZMC0^XcHWrBCT-vP4Gjq@W%O+GD4$egCH; z%Uf_*22cBbn#qe6lf?!N?6LEgzj}j=sWdI9I0k5X=&cPJZp?2kU-|U;2WUwqN{?s_ z^hIy%7PJG!2y5)~t3UkxiB-WfHzKI=QgA4FCoiEJ0uhX{t5?5z#pZfJ8A@V`s z?ZKAvIDfj<_wfrmX1SC>Ro1V|Ks2RiF;RIzW9*A-=l*(ZO{Z0a9T5>qgQBLhyL_`ggu*ptehAw?zw$C8QPfHvX8x2~#bdFC!n-&a{-Yr3s?6r&M zPrr6}d1sxfG%E#mSu`{Hd{p!(kQOTlX*bym{U+ItbrWrHcHmRA-(g0vLP8@(a|%RS zJ%4|~{(h5e=Uk66H!%j^3NTjTFdL#Wl!GehFgvuo-B66jYP2VbMdAA^*iw~ALbpWw z%MPxeS~u9?Ekt@_8HnJ|fkC!so_DafTS#=(!4dsP+hYfpwd;%V5r9usSkQx==}iK( zGvq4UFvVI<<`;_jF$c+ndNUalZH}EIp0XWtJ@V{?exJ`EnMhA}Nt}4_l{5DYnWKXv`z6&a_SmL}7yDIt14}g6npRKPI$)1&e0){Au8>TDIQxc(3>6?6 zvd5lSKXGUVgH%-}F`*jtlbv{AYE60CNGvyD?cf4b(LE0O$@V`ur(TpkvVQ@7Nj2yv z+lr%aaGJL^MtC-8l09;$JD|#;KM!gD1kEuayjwI;ze)D+k)_R=JleT9L?o&-(sLXz z$#xuG*%stP(1#Ihsj8are#j(Scog5-g|J=w{UN~>(&|bG)sRVcY{LX|Nxyq{kX>2> z;ruNo*`u4fET#Q&F+e2@GW8ad?9okAt^5??r=dMy!5*tjSTTQaZ{zGFJ7}+4VnqX zhfK03ADD8-EQM9{S#pa>_Vnh-meODHwSSg_CfSmwHgx@h`zZyY{*@dw$<{t`-vmR^ zZ7WHrXptT=$u>T*x2C>>P2E9bMh7?cciOwC-=MJU9cK=x~!gcW|*+j^l)Ofeq30pA|tj*|Xbb zJA~;_;xz9E+YwdK+Z#08nBB+LPcoI#dzPH4gC~Cf9>TC;mOb-uPe7F)JbG`{SHWWf zG_cBE+CJMcczbn=P75BXpvmJLJ9giAb7=}3QG`oFG(sJ%_b_)j$bNmW2lrb^^sz;S z42}mHh#X05?-{tqp4v8js4wF88X^ns!!Yj;#6R}vst!HfU(i6fosR5_ph@=3?u8zC zPSVJrX6g5%4M+n~+hN{waF88a-&Iq=h3gppCyb2Tsj+EmqpF$+R;c$!_{W~w+wIf9 z#G>6^EO@;LUDyB}Q9_{0NZ9lAhA9ql_E_R=!%hrgT?~QSDcG8xh)mEq_Uywwt-6x5 zG5tQTAX#|y7!J0qj%?YWZ*1$YHqWq&bH|R3iDVPs*e!H8GbC(;1hR!ig5n4r7I#$5}!9&?-#^!(G$96nBp zO`BJB9-C}&x3mRjwVMU?KHP_**tp~Vna?aRg(FQQlUZsT!HlDet-J5<_`j9M@5>2g zk7WP*-`lCP-x6x~zRex4E?BnXNF5_Gw(rXCvoHKWie3Bn1^&>pX65=nv@=IuKJ)R3 z?`i7#{d;_G&Rw$M$R<%pQr}yjU4H4WgxaxhoAZs?`wq2_2@Q+9_UB*sE&7NQ*Y19x z;r~|bDvSt?9>v(UO#M6NTDo}a7XPn1inH_caF&Z<9KY}u~+`|uXo@7 z`hfwIT)GRH@L=m~`fmILfjG7i{NqRy| z7_kqL+Zja{%d4fuqzDx$M(BSlk^O?EtooNF<#&`+7$x}Xxvk|pO3Ln`r2Gz=yOtCk zzVImNKJAX~?<~1(h!<`hbdW&BNqz71ylu& z5p^p>zpl2%X0Kz_-2gde{m=FOQoW9r07D88(pJ$L@}x$~B; zTDOJTa&6Pvb-ha#5^{ZS_M8a|=C18syLR2`-X*i=OrK7QO>4Xd4?XefUq1QryYEhY z{I@^;?#U-fvE%;MWA0Lkwz8^{zzT_qN^=ed5@W zM|VDU_~AnbA9;)vFa6=m`ja1@{`}k1Uw?G|%dby;`{B2wxclO#doOSBwvO)z%o=Bt z`6o6gN%8#aCm%k$v3B5C9L0>6k>Z}~AFMvR<(6ad=buUO{n!7t;@hRS9E-u?&DXw| z|J|~oWAVwp8-#k@wNK}L-#v6JUVHNkQoQ#12Qz-`89EmKz5D_xUU~hq+2^+H9XJ*% z|HRx)idXlYUVW*%A~$#}re-DNrP0ObPWImT*T-Lf_v07ee(~K`Uw!fY=cIVi*Wd7a zdY8^wF>mR-7I*O}LEUc1`I>-%BGyMO)1`yYJ# z>B&>4zWnmk7bide^b-(Y>3Z$eS6=zuE3drvI`ehv)f=z8{L)LL>2c3IdE&804jnkK zZy$c`-Mf3&b`+m)J9=pM0~=QN_H-{=v|zzpYA!V!O*cKfbK|lF(>mK*n+dL_+wF9M z_(%Wl`Ki2%Pi#eopWzqGPR|yQdCx$ zmze=rHztSIcfMi6!iiq&uDpztvGMV7tT>c8*Ulf`P*t9nHa33Li0DXGBr4ahp3`R6 zlxC*D?T>30xR*faSUt0~R#BV*S1q~QV=+mCD63K62qDfmKmjpG*@~IX7I`5Db&*w+ zF1v7B895&ME;t9t02dl8s=u>nsNx`%bNTc@uzh&Z`rEp*sNtT9?yW61-BvzkG}xmH zMJD-eMWn6&P}D!v{yCl}6$iM}&#?=x6(|dG5gkBR^__Qv6*Yv}abyKTSy+H`o>jA2 zY?`thPC^_ODl!5nQGMqdSI_Nm8pMT}X=4-O<3_PYfv|Bcmf5T-=aHr7a8j5l;CEnS z?~JyFY85Rcg;XIkA9B{bZS{i5ZSGpLkrpR{x=3WTefQ?oi)T%0ZygZ61_z4!CLGzj zZPS|G?gh*RL{5L2Ib#}%uT6RC_>qSX><-yYJxJ~RY5M~Ypz!j{-~IN57oLCN#oxaC zJJ#=Ry!_G&&!P0v+_&HU(_jAn{s*6YcJd4Ai|Z#p|Lo(BQ2s;r`yZYB+rQpB`Nij7 zoj!f?v#&n=f^4N97M@c5{?QkXzWCVjqsN|j?1_WNpE!=@XQql311GDbR8&lgH(cL!Zu_iTPS$7NCB>Vr?>oErwv&}Ka%TPY zUEeMG#mTz=vJ|k9ex#6YA2%^{;>~d#`-}GfAe%O2`ph{Cm#n&P)5eYK*R5HzY6U5l z&+l$&YU`RhXU_bo3uaH9KBa34DK@QGUbbQD;U|9k%I|;s_KVLy`ShV zgXX3K<|ZlDZQV5e*YiyS=PJz2a#C#GxuN})6}OzLXTKrE&OIAD{_l2klN2}X-Q$1b zc5{;yJN7>4`@?PK=3hv$ea{2V-`{3#en^U~JMV9JW%+I9CS830X5Ujo=4Lv~O}cp9 z%DN+ap7`B6|NQfNZ@%^N3%`2$QBtg5vMja6;jVAKj5Em=50l ztHMURNvo8Im?EZxCH`3iqN{@XYPGO5FO$k-LFM!I_m$UGNq9M&q(llvX6P8+{>$Z7 zWmz64VdRL|7z&mHGm5wWLV1mXp9>2kibl~43Fqy;fOx);W2kyVfH_3{L zQAt}XFf;dGC^N};#DJt@3CPynf3egg<#CDqNUX(B3N4kGBt>)yu_!5=e)})*QIwVt zOpbrSaD%M|<%n!@-N03C&L zA_ID|BqI^7f$!H)vbGflS#f4k96mDuqZ&#Cpu!|C%}yNyF^P$$qC+4imxLCTu!x(Q zn3#|-CS(j15BU<>_3{c{c1AigJtU3dKrE#mn;w{*WvsH0a;glSshYhFHsB^&Y*v=_ z22j<^M9MW2+Q+rEcTDJ-He>eenbW3rjh}$x%etAf=1iSEZ^?=^o2kv$HmqLL(>;%n z>lSCv8b5!|>LqK|u3fdHXU6QQQ%Q04O3#6ZAOF91KmPLDZ%=*nw>Mutae@@rZEQK} zy3NSUA;tFXQ(pLmkx7c{ADsK@jN6XFZ&7^4v1iunzc4b%*Lui=8(sJwoJvjoar%rI zvt~}8JZbXm-uoYWv#J9QDoXSf5QS}ZdXv*`wKp_)OR16EVuM1aQm$UZTJzo7`|jI_ z^YZ=&?%%k6Rqx{7Rojldu0*WFTR@Ul%k2%7CNQhM&f6xUVmW!0RbqvrYtkfiIC0XX z@#81Wm^p3Yw8`U|TbtMKJ^H#36)yl;T_LM?s?C09Z3D3MKCGZ(lel8FP^&n6^w=XO z9(&@k$B!RB@%&TIJ@@=GC-!c!_8xxn4KarL$5us!Or>zztE|lq01bNr6|Csw3}67O zG&YMsC9A8f@wgN&ZOio9+A02t`}OuyjwyliYsJlrL!JAy6cfSzFEMENy%2L z6bfb2?_aC5=DdCW@Pn5Z{JSgltM3`1sc-Ju`o`<;l0e;W#bpwe+U?Sqn>`I~pRYy0 zisf(#zU?VR`)_|dbAIce|8VAy*T(}`r9K|hyIH}Zyvkq-N;aj(q(fM13>eY{zjAVw7e*VENue{n{u|lR)cs*dN*X;w2 zpOA`8&IgdMN|l^6dUQfk(im>a$n?~>5o6PHQj2zM-SOPZ{cIIT)v`c~s=5`(%>Je} zF%=z?t&mshtByW>^zjqFI&tFolfQcMx#xfT>g%sOd;G|%mB*fYM@$bD6(ucG6}pZN zK)Sb#S1_aEa)3gu*SaA|ZZ80?9bUiRB?5_Z`m~T~%$aAQF=x-2H-FBI>C@--ZajR9NX{97R;y4t z4~#3DxNKrad*`I4G5E&35fT;=RnM&dxek9Y8z}Du4BF##HBFei>fs|~6>nlgQu1%B zA6Y8sJTj}bV`}GA^B8=ahOt9J30gc;L`j%pN(PKz#TAv>;+@>P?{Fz9ekp{gR;rgB zFqn@l>6kRGqodQ285ITBHEhaiNIwa;i+yZf9k~loAZ^5n|gbS45YalXLR@P6mS5E73xcu(A+FBcMB=y>e zsEG5CxJZs0GqzCUoxf`r**0GSyj!l)YE6wDcJtJE<6AoX^))7g9uUuAQDNuVn9PXL ziFqpTyxkAdCxYN>fF=VDxYpm^($KlEcTQIT2OtoY^(+95hn$DoGcsmWLax%YVE0}! zqA!Ia;3BKFCPQuWgwDY9Woy^W01|CYZH;qJ%C>VGK|S5_+2 zTEG}P{2h}g&RTWmNLL?8tJjjSN5W>=k+JdF^2P;wcajCC1Xyk$E(0*vY_m5`fTLr>#`UXL zEosy;q8R6ab{`g`U-Td7>un8ziSt%&+P>q#gAXmcg+5o_xM=SddO$pZ902p0DuUt* zNc9G1V^iC-1wHF`AH0=b1^S(N{o}a^dM!cRt+PA50V;6S-H03wZCyhZ5^_m}2gwA! z7m9H1s89hQ(Ext;5a@d-grD&Fd}{@bf6>1E^rDHs25dXl02M4Y8vxRQD(>+%x*Gkz zq~BUdSPCR=r9!Q$1Qax2hZ~##$A>lRN5X_(((e)xdZB>Ot1HpI)dnbjkb^qV+!VN- ze(}DYM6SOS2ytdIT(CCe0DT7_tRs=5^^>E#rrmrv*adUh%I_vT?qj6 zY9PheJ6$-ZsQ}e<)8BM!4Yj{#|NZ$;d8Zq&2nxBT5^qS&HKYd8j|2iua5FUivch(< znJK|fI7BO{$}?on0EKlr$s__z0iWl#3QaxxHx`pQh$|p;KsyG+G8O?ma(f7uJg$K? zAalsmfPOQ%;Xm!bB!HO?6l#;%ib=biNLt`>;!nq52P1+N){$uVA8Yv}A%_Nt@mMrq z!aFHvpUdNJu-95`zo_x>M*6`)LkYAlHoq1%fX+(L^lR$?@(P6TTPsvH^*p>GI0u0Q z25F`?s$RgRk#g;BA1 zcv4a_EY``5C2>))@#a*M(V!0Y^BvqR1TIo<&4}?GPppeZ4L!v=FaRLx%C?TI%tCDU z!b~G@AGtf@E@Hc2g>i-lnU8kFge6a`p&Q;0iAIPoDQOwjJWEE!sLbeKZ@IVJLnil< zLqO(o=$OkMX&=3Vt^o1xC&U|N62_Ikozz}s}$&{r} zuBS`u+rnt%_DD%bF!?-dvLQMasWlSfbXtu@s|^YY3}%8^1qrzx8m3fhBBRr*rmZ~i z5FNX3ta|Vzk3jhM+|0!Ic;s?OR(pH8OWfV1s1a3?m@CLsVnSjZq=!jKFP=1a?V*Qg z_xeh8^pWhx9!j#WjzH#=%nX`#1xOf&&w&!a7W88Ul9DbcvX$kPl~t3bEq>(4#(^V; z&RBLXjU$d+0M;UtGfB3Y6uyD-dQxw%Yak7m>mdbCn=u0QSIAB zF;sHO$-_Q?tpmv-w8Xh^;kevnbL@h}0I?UeK$GrhTfTD5`VDKBw=dbS{lJS`!YQX! zi-Aqa$*~|{zO|^LtWwJe11trI7M@x?cgobsGk}HHx6E2Hf6YT3^QKLms#<*fd=u^J zhgK~z3|R8=EZGQ`j0bm=o)Jnz(^8QA;Kb3xM~@ylcI-Kbz5n>?n{U4Q`)lO2drLOI z_|6gCK&6n`EmmuKE)L;R>_Iw4=;n<>-JEO)i_)pJO0_mb5r{s;CM9J(|NP>|-g@sj z2WO!nHX+$kP&mShNQvdxSoDy)WHG6!=9JmT%*TS&$ma?D^hP47!dtAy}Z~0))I)qW3)u%ua z`sJ7V4uAgTV|1_jF++!RFlpsQ7Bm-?jvgCHT;yH`Bz8#VeDupF|M=|lufF;I=ijb% z-@Su>cklJ|_6=%LpZ}2-)z#T~?b`M3?whyo0*xj;H}By$ecRhd^{8+DSdV(@$tRz9 z>hZ_OV`OXRqfb1(d&^^w;DgnmN8;bX|4E#QcWl^71)#t?!6Msqe0S_YDjr^yTaCzy9a< z-+%MvH$T35zPAsHhxYLgHK~raj%7=iFJH5yxqZcw`E4uaFK%71EazNL@7F_UQnzp3 zU~b&KdHePq`e1N+@QXfM-wvTgeepTx^BZ4ab^r69-+uSQ&sVzckUQjFU(eTntVi`w zJ?h+9a`u-qXV0EH_tHzRy!P6KH!r^T>9^PJ+_~5D1)aqKP3pJ*QIp!nY-6^NZOqQD zM<3g>|IqPs7eBj-rhYzzA~lQ5Vw#v)WG>U(y{K*FrhUiW`ugVGo-c<`rz&_AY-LxK zZT#e^^H=UX`QC4LdcGV&p-M4x&1_0nYFd`HV)E>jPoDqh-JVNBXjBgK0$0oRs{$Hx&nh$+V~t>(?iEU>h5`O2)#x>cby& z^}IiXVkHy`yBt?k;;oZc9D4U^&o@J8R$MrA^REk~@{pLE@f`>LcBSX5A#^K7$aHZ9 zF0$b0tg&qe{(7b7FLVj~nQjGTjNuF21EVqq7~cLr82(MUq72*th7MZ8>qBW*zh^iI zhBt>)ul~g`zJqdHq;2|B{ptZn7C8QPt>@jL6s+GdETs&u52azDWl;{kkgksbj@O4&v;Ljqg`xDU-!Uws zjXE==qV<3yXQG4S_|Tfxzp?bZFr=#G;Gj)!^4_ey^1m%9ZK1{|9tx>u_LTL^5ONKXNOX^1Oh=PRfGaG=HiC+$3MQ&^W2aM zm$VB?kTN>0V*0}`e0sa*$PfybpAXlE@#_r0b{J*0j&0t4?u&Z^4f|7-OT||ab*Dxf zWlYH(*|6k^^WWaZlxfT~GW{y79?c6DFMDYFfiv&@iW3hA=bvj{n>KCSxB)hi zE1S1$+rHz`z55TJdgFs1akBRw8(Q-^{lfF?^Os*Zb^7eNS6+SN;=7-Ga~T46Pw#O$ z6W_)Eq2l%FC!c)Ge0=$nPe1ztHtQdMxpJKf>JTN44W)K{{VkZj{Orq*|Nh%IKT>hx zhi`xQ>0VDy-_fDeu1C)tJhc1hQ+xL8IpwJ< z*46Qs4CcA<$JZP``#|fueEIQH{r!&*rF9*9>-%Q=a{CYeP3t=FW`F;Np|!508~?RU z+W+6RuBTq<@83M6)>YHn(Ad~8l}zoNK4Zqr8Pgl;8)mj{IQZ6}+I8uV)UM?#R;*mP zV&&@9>(|4AwQ<9`waZ!;wl3TB)Oo6P0i69K>s2FZ{CUdM#`^lk$&(x5ecCX6>g4eg z#;w_P==@Mx*MURNK6&)%XP-WFd4IpO4pm4x4-hr--b}S z9OkPqYQDPpKcaWI4W)G5H(y=(o%!l-yANKx@WBvD*B_X#z(^06KT*1xKm7cE zGGAS|@cIx+*MRwIO}kUw%T6hS=BqP1A9>}qLB>B+x_s`NuY7-JzS^|))JucI`iDx_ zGsmC7vN?SC$nj&(oj&u@>uc~?omOp#yogtJi(_65c;h3FY}rP(-P*EY<+7FQb{sl3gyJ=Q8fO~QbPd4P ztl4wt&7LuR`kdBv`w#!I+T}1`A+f2QW;bQZn2H-PCzO?so;+vSzNhFU{+Z529Y%~K zo?{{jB=NR6Ij6Frb@%=uG_D|i5GS}>5fT=zj!dvtFWj|%2wh9YlW{$}t&h?)uSA&MD0s5Bzf&SlgtAEjlB~-QS zdSoco>UZ>J&~G17vwFY)%NrORmbX7utbWg6YuUYLD81_6=r<3gR{b0O_Mx<@|3<%X z_x7Qbs(+*ZUmLD4$Fi_w+oH!d4yjW8t_sSqbx4is_Y7keJvM0c8Om@)Tck_{{e~g+ zsee`AU|2J>I`!W<_BpHxKMZZSy5FXK>xNRM1}hM{%2epXzI8+BQUi|~4O1o_VEEq} zuJG`Csx4z%_YG;dA_Cl)qc?(J>yoQ2V_NsE9a59RRikcPop+IVMZl=J&tbay@sCYc zgIk_JBzE_XOdmJcs6W-B_)q5G;>BJ_0Q4y=v0z#>VPt^)+=h^O}}4uUgkW7oKC`3y-}vq~i44;b#sXJ_srM^trb` zfsNzK4_|%dmG(_%F76#lank>v=Bg7X7C(C7Z~KQ*oT#~KciCgVH&=cC{lh!{_VKQv z6sJEhSAG21nxPe^|H)jn_wZ+5Y#2&$qMm=Zl97`>KF%0p(CdiqGi{_MA|g_&RV%|a z5s@%oM`L}N65O3atOa=mMJ4&+fm&Y|i6f=^Zv!;Hul^7YYe;*rdKnhn}N=r7UMvI-4g>c3! zsVr3o>H|fT3#PnOWP3L!vWfQ+Oz31h_P*1JH&aZU39oPiO6wfD4k{_$K9bc3mgK{ zPzcSEekDC4H%a0Y4&R2NGFy4XAYVV+5{RWgEj@!|+@uN7Ge(R+8EN!GM^5Kovoc4( z_rfGbLur2cs)`6Sl#b**_$Q#M5o826;|t`^hVv862M+TzwNR%cz@Mv=vZ%PIq%Y0QY5C>bf5k&qswY<6cZ@)}3S-bneK&)RETJaZ> zBIgw#KRdE@r(=m|$BeSUz?>TvqV=VWy>MqKDI!JP1xUY)D`N#kuwCcVdaXa^py9N~ z>1oJ`Y@CQ>9b?Aig(-E8G3mj&!^Ip%OCtLsa1V(n?ct#$v_CiqUg|$7!on1a;IPmD zA7_rG#x~Ao8bCTwc~~PmA-XioEeF=VIo|LY{?2G z;sK(Wc1qWSOOSAXb|&B8HW?S;ZG_G^X5sIJ#NLK66UL1jJHFBsszn4UIwAs`U-Wh* zTsFWW;5akF??rBIp6;%0Vu3*H?qMvi9yLJ1!fdOTwGX+9MjPu>X-m;I@wHyJrfI<9dS1uOCGt{@i2S`@0k%6I0C_u#xi0= zb|I$Hnqg9^V^qH0GTO$p46L0jT4L_qoGiK+bF-Q3{>%}`Xa9>C9zMxw`IY0xR*f5z z8y~5Tjt(2(>&Ze%C1p%mFB}R>O4-t{>8%6goX^fgKjEm9Q(4_Gqq%vaMXiZ7Y5lzA zbVT~G#7Q=r!(@Mo+~#?Cct#v~&gnCkl?jIqYthJw)5e;VT9Zj19^fPQ0Mnfb6DLiY z2=}gu%*4J))srTYiDZI(B3!tBm{?ssVcgg;w#u?1Ykr1Vr-{qRFop&Ozz>D?4Gs*W z;de&H*hj;|?XywTU8<~VBz5PqRgJ7DFUrqOPcfU!rqtZ*B&{+u05wv^J7`-WlE{}9 zaf*82)s$bDPx8NmBNei`=jCRkXP`2qzRpO9R);IY6n?&*a&YyGffHUH!~jyj6n;i& zkwY94h{rW2Clk)H>DienCZkcORH>9vvLG`p0f#|noX(&% z=ftU%3NU)hXzwmnm6yU%t+ZmCt*8K=EThMdpEPA&^VEsBc~_R7Z862g8KMmONWDR$ z!owQq>m&05+b3f%>gB~Wm3kVSCap!~RpT3)W>L10W!6kfvMCOym0lYep(g6PN=1Ob zmz=IkGVa|mxX4lr_p@~P5@zQXm5!WP*Dx90hn1z^Gn?XYT1Dx=huuOE;Ops0*UBYa z#;U3)FU8Da2Op7*3;?6X*VIk2jT~9wV2d|8*fih@4+ERrQQI%$N5i9z)|QiDfiF}} zL8)zAbL>Z4Pva0Ry6Dso4pfh$^z3DD4OHzYW~+uOl)yC56wh&5=G*nmF` zRs;v(f@Dxoh{j;ffTL+ihS^BR-%*=N8LGge<5(wmEb)ecJ9Q+W*WcIIKY#?-=?n4y z0gh+UDcN}$Nih&?AQm~=864o_=~yZ~5uvmWHlWAP*Uyi#Tn-EfR49UQJufg+1#h!> zy&A1#)I@m~4fP#h>kSO>^9$ev^aTd^gZXRP(4gSJARHJ$0ioI$ZJ0`lCoY^eG7u9- zhlI9X|EZz|B9v?4n z{3qVHmhXGh$5(;Hq^3IoM(SQDTmn5DOzuS5=Ps4H6Zczg5~;gXB6X8WB}8HuyAd}c z{Z-;75sTero<2dL;p(v95M_|JmxJ@3%){N?!$U@7c27Bx_j<}bWuC;Are0YR!zMQDh>kK7+zy%o#}j^x?(UxMVs}?}57gu42G2(LTl!&1 z;&{qPH;VbOIKwUJxv{=68W|nPOL4I}O}HWy`)yQGm>+#+FgfZ-T{MJUOLoQhnx>|4 zK}45_Gd!!nk~L(Pba(yG*O2ZVd321^$TFCLJ{Up0DzUT-wXoix}`ath0`0;1y` zY?mPR$Hf|AQo9Ioajbmm^{l<6`F_HM&Xe-rB&@f{7Im!UlC_2ul zmpVn47UUI{R9OQe6C6zTWHW2-!Qw%UjHxFceyp)L&F;n+qz3we_`iQ)e~Q)=fmjC7ZiQj&5!tu)ykIiv2A@ zsnTdv5r&vpa|YaAN+(WfYFaRt%=NK-mgmdoAh@6gmgvYxtvWnhr9q>WDn#&sS6E@? z*m1Sh4O4ACwjLepEK|S}=Q|jmVNQnaIwCwA*5L>}{54I9DOouPZ&hORw%xK$2w=s& z;SoALoc6jS)EccysnP3nXf|4NN2fQ&rKBdCZN9ee68w3t0U>G)Oxkb=h=8qGtB-_} z3T)gO9c;S2uw%#B{A`^W0j$v7KPUoTuTgqfqv5PVB5p)#RJg9I)f(W?WDBs}2thIs z&oGrLlKRyW?NwOGVY=3$cNhp=3|wqM_4Oo^Gl%2i9;iYUFgL@)Kp7qZHv{nKqGHip zTM*K3__Hj}%`a4~jn-qd!|^dZ86wqq?a^t`K3lNu*2G*7mUZs{v1OhjywXm7%4K`O>PgP|Jd>~2M zz4Yu78XS#p`!O$4z%YC_xl$7vriQDq3XVq9X;`ndiEKTfx5Ocm?Y%e)I4Hx-jBr=v z#pS#C_yntn>K4`%YC!`daMP!^vLq`WA-HlCX%)Wxt=eV|a$%hai*&IPxj)>0f+Mu(WM5UW8C=(0 z^|6RIg#dl#BvV`7KuQc~JoKywoqjA}B- zc5C9KipI9}yrDnXjqlh=BSrJXj%CUCmTXWJ94AD_ePUcd&N8F`;RtBBY z#@hNTvp{_}z?7I>1Xoo)Tvc!7WtrjOK%6owZT_~Kqe|kPoO}{3d2pf@TA94t*@+r; zlv8}kC@k7;usiXM<}5_4g@3HjO7iYx#VI2LD6_BahJ#rhmtG3@S*zH3JI|sG(KD3S z$JRYE+sVn$1MMTG_Vk{P&TB8T4H9O8*?nf*2vi(w-?&RbaotOwu$OKg^jh?B+)1kp) z>sCjn=2>&hz7l_@^h(fPu1s@s3W!cHqyLF2JY9MNyse1pUbsr7Hk;vNc-ImjQahzl z;wzLmC^~MC7*CPj1lns6Dy;cLbTZEpz*i2?en)8oqf7&|a1&B%(<5Wm5#cJM+MGno zP4(r44$$7A4Gu)mJAC{-S^@VWb&??tt}$voB}Rii*^q$-JH|n7h)YF-lT`4MjERa) zfOlm$sN*SVoS1kHjKimNV8sSw8XA_QN`z;BVq9z#NHyAc3rMpxTvlep=z7~e$2{?4 z4Tz$K5sOFQv$#Y9dKDfKV@x#V=2`rmoJE){AKOhj4LUsTjh5S5@Q6`u0Ada z4*X`LHULLF>&d4CA+{gr#^Ds8gO8k-ufLzKT+G99Czd&x@pYK(dR1v=yc1U)j@08w zQH|~64&U9EjmyM#6mI(kzLxZBVL&iETEl$gd`^63G4{g<+dX_WxJMch`wpM!@Y%@9 z;`;N^IQ2^2o3}GAxe_%Ok_`$gn)(5MGAmkzsjcSRNV1M~3l{ zVSHp59~s6+hVhYMeB}SP_(;2((|^4;aZE+!SX&;w^NIVh$hc8dgiH_lg;rdW%`2=Z zQX+qwH;}>Tq|`V+E>L0M$GBBT(dD;CRt{Wf&BlFE8aTfQ2rl9WSm`xtYno+LiHgJU zJR&1?F^L%_f7Z#_M43OUsJODvL@gi*mBFEQyJ6xTb6{#>T|uW=Cs$ zSx$gP7aeOdB>>jHlrwvJL&MbCQDw-aG8(thOK?pW877lW@uoOayb)Z+=!EQ?!pca7 z8=x~7V&gJ^t^ZIGHfPT4IWuc<(|NS5vYe*p8G&5A@!-I%Hzxk75qF#uGZ2oBb>ajX zbjGxD$`;9=I<;{+y?0#(k3L)_Oh(!REv^?L8VT3bi2`DE@fmS$$bKi+YG?z$E0npG zlvdbAmlfpaWM`x$C(z5xdYERSW0BMWsg1xEA8#-u8r2fm@x1h@rC@v4>Kl`aggu!E z`H_MvgFs^SYKk4hfP?XmLx>%qqwz7Z20uO)3#-kAQRI$Qk%{yp=D1iAdyV!TAacA` zjj$safg`l^QlcIv6CJDj#Sz8?gGlcy znzX(m#tAI444a$n18Y#4Au7soQ(YSkYmiDE77?k6z}-YW8i%S9OtETrq+~_zYefMd z!oH%QMA&^k!%bH`3^Md8w>DB02HTESXNbkcnz`%U~k> zv@|3JhBjQ~kI<-fm;$sKNj$>CBfwf$zDA0BbRX-6;d6XTCxPs%ioDQ> za0Sw=BgYADR?8(wUJW>xCJ#q6D-T`KBmmBr^Ft$LVzGx5DXWp~nocYJ6Q_HqP@pTY zDQx%h6$aqLPA*ROu%!r&FE4eQojj?mptn_Os9*{&3+l)=89^sco`9;k{< z&MqjkX>I*ljm?Z?Be3G(SCLv_OM-2zLKjH?EK@0M$slpOhO6lN@Id++DW5(r}lPK z=f;HidPrPFh?_?<#1sAvXP(eSEDzBnWaJnR$PW52 zcnnAdlvIIeJ9(x7(jbq;&poziT!ucx*K@E`N+xoVILNFCAiH8SkWnukT-{KV5E1C* zK?_9XgJj+zx`d2eTJcr0Kzsbywq{$pUV&&oZmuFBeATWy3iDQIld^N;4jeonJ8;!Q zxZ(BvD{AwN;elR`<{<>&eYy~BVopxX(@%r$8e9IxsZDdLQgy*TgFO}ulF37K@VYS` zI7G>OkN#!vOH}`c^XGR72$RuKs z(Ak+!$q>JHu+l-YuKnkBEgENu4D=rCf$#y9LYJ7G9pf00uKh1;pFc85?eFF8=BSeJ zIRcj7Jy>2SD6R1r;m*Csx6G|bL`Uy8jVE9R$ixyl5m|Y3B0BdyziDoHVz{5D^nTL> zU3_O+nybVcrDf&Cf~;%r^P6UuCn$X}Y_tagfq*#Q7$njsMkhrC`XJgELW^-FTrqL$mPkEhzRKvNY^%vJ?Okh6?3nLZLtdV!S>ncbV+QEl zJ$*y<3G}&gERQWO>~0>F8WHU0g}`D^q$SQ0A|>uOJY=AYj31E`>uBEf4bMM1-gnu@Xjl-5qtyd_y(ymh6GPTz}&1?iQOxi|nfiSLT77svN0ZB4tqS zEf1NOZ;0BMmS&(sz3bG@`8Eqm^+oj_?kosd)PD)w8LSId~RNW_Li6hRNhqaR_x_)_#jCinFA4-VHQX3&z> zpW5Cs2E7RMqhz!`iJeAf`;|sr^OXDehX6!KHyM%WH7f@JF*&&eAv~|-(WFUQ$}RvB61I>fXOEX_WS};aDCgWXd(uI2D`)LFcN1suH>o|ee?2x8@4VAxlEHS zDJiMWsaFwRcjs$67tkJIN@aBB83d@q`n0>@-Bm7bXXu}f^M9A9?O$(y?LE`&+luk z$%;`a{Jik^0l*^88XQ`k8~<`(+0^31$Plb8+D#!5x(I@tug-nv=p(bL(xW3n0`cg$ zOR(*5T%;mT;pLnQukCKFDM-{ugarBdV8T6QQa6DcPb_p5yIfOje)s4@vq$HcqST>y zKK#7BST9#kM#i{1OE^-#+cj1CdvEMnK6R8eIW8&^(J4a|JOwY933S9Z2Pg~NGyrA8vutB9iw%PWHi4;8%1kBIk9I| z%k=8eV@H;kl@ymC6*RYqDJ1!<)t-|}a(gooxp)LS!ZrQp!~}zE(h~9UBNZ}?H1^Cj?!7f;T5HOrYLL|5yKN`_S5f$2k8xj^|PEJiuFUdwqWP1u; z&Lh~bC56V4&d$lp9SHJVTn-GLZbey^)Damrnp~U)L7q5a0xq0Po>YT$O;e^%ZLFSD z)5tddHu$#T{-@P7wT>@(9A6+5Za?_RxSp{nWwgy?Bcn~24=S?#cI*1br#Cl`&oyZR zePnK87sll}4l`MxQkPsXZbsXpsyp&K2&D^=?SnhFzq|0%(#EpXs8D||DV}KbT#U&6 zfuWJf`QxXzwvBbrUV+T^^W7^Sp4`+tHaAWa>>~#)i!)6s^9c;qB^QowYF#o8q`y(Q z?dMy!zIo$`HwSxXj`Q&P74yPi8& zK7u$hCfhX7Qd;OBsVX|PaKg-`ZL|TGeP6tL_x4Y3Jie@Uu%!d_gA`|0ph}loIBC`r zM_VtC{qE+?JO6n8kq6zUr1TiRE=68WN?SB>=91P56nkxL_pLiuE*@Mxtt`#af2kYm zMg~Ydyn|FxD7I-?JMGuCy|-`Q`u_Djt&8R88dGI~D&||Makfj$-nBCDf5@cNKRLyItFC(&D%e}{nV1$;$)1l52D@j<;1(&CjePhjp?P6XDw-?YoTk?t$V+` zePBs#Nph4*5$Ny3`f$CkBl;)EOzEYyvzHBYa{H}2zg#@9yuK_wMjaaH>+6H0gadR+ zZCqwa^{kH8N)&f>ZTFp@-+p>&V@0}A6B_96>+kQ&_;UQa5lmDa6^A}x)M)drw_dyV z+h3nv)liXX(yBs(NiZA8@xM;vh-wUR8D-VzD;<%p1;5_-`Rzl?rc`FcYr{hnLEIn` zz&Og&M48fyCQNT_r_W#K@~iiLM0r!HG86P_WpHqyb07)6p;T!p)!4>Giyh0k?eg7U z-Z{8t+NkU#Lqs^j-zq?fz_`KP2!yLa0}E}9^A^wsc0F?A-mmW-UN>!2Zc=n)IE{JB z3AP8Kp&(Uhq7p3mBkShPEu(d>>AdyZyNB1z7?qnG6R8dxpk)-@$PcB_$0g^Kji1&$ zo)WITdGG4qo>@0@R9=b^_sD3-VLr;koe+I&QhMQ-`ni)R*{U12FTZJ zZh#Ec>Z47ToU*agS}56)Yu&$IIz-8mV$s4d#F6JH>{Jl>DJ(oZk`|d?UOjW}xT;C@ zQ>M+FIeQLr#gjQ?Hkor}HjJyQZrr&1{*iSv#^yR&gT^p8P}yLj`~g?UqT*9C3ddH@ zZkbb8F|K-IO-)^GZB1=mT|HAzYC3DT+`WDEgCpyj#^j|$(+PA5CZWHnaKS7-C8u~) zZPWbLY<4X>MuR(9?b8-6M3I6RA8A>`(mdbjjNN@a_s0S*Q{Q>IB4SF0QoUc4AE( zTX(M>eXE;{Y$ew^x^JVMYi5khPQaQ&0CPMQ94{78kgxd%1|y0wrXkgmk&}tE3ogW^5 zX!aOTD}(*DV%utTx+qZ;(Oy|`B!{9FSr`|Y@Q z`{tJ~?OIe@Y%!`J6MK1hKw=k)Ia0=hk+E{2H!HvLM9=M8-=5#Mbjrx=By=kfVgQ0Q zOFXzTsr<5R+nw9jE}uWRZq~Shl=vuBXiz|aAM2;|Ch{vQZ{EFjYNyKi;<^S#qg>{`FPb-~NnPaN92YYXy@K13cO>&O~* zwSDDsvYcIVvu!bCxB1O;=gyfkOE`;}0lAX5q5tO1uFfC+e&LOC&p&tc*=L_QbdY}w-Tv*nPe1(Y+kbiM z!W(a#KmYn`cd)iOFwAM7m~K%}UiMzKbax;aSm zOdxegnCG4XmKPuHFL$S9Qdsg|q+W{1`1BlFKSc+hJFHtl@;xv1xk4S#RWA{FRVu2LC^+ZQaR#YfJyMeY2w1A?8bO>m%XzY`q?X0+XV$;0J zL{;GZL1m!60!AGq4b~)N<-`n-c3eETs=gTD97ewLp<|ECDvclLv;cI1LDUdn@W8M;Ca816@rP%X#D_V?W}s<< zs39eD3}XyR>w4(;!%Zb|q29E!AbWrs4iIJK8flg5o_lyEh$wFB3T5qgs3ENqeaNG0 z;`;JqkIX1Fh5&8=TKoVt6ia~H#%Ee-N!Qn$*wj>tk|@c)fJL#yD>TZKl^ac4wDN_m zvr7|{NHyYy+%W^FAtUMrYUlwfKzy-|@#Q?F%@F{~D8_~=-6VX_bxQ#A_$VUcQZix&`nmG-&Uqt~9fZhizyjD{0R17< zzCs<7l4ih=b+^5+eeNI$%Hja8W84@Calhl~9TcXGPoqQM-F9Z@{7PDm4@LEe2jk9{ zbV~uJ$UMFM6cMq>j@8wEddIv`DG`Bm94O)hFzo@Em!G3FT3E};E%Qd9^#f!Ml+VpB zLE;7mz@4K&l>r`)$c8u~6De)_Xu>BPtJx&y3eC~eetPR*EwnAP5`lzxTy>}LA{wJH zB&Ve($0Q~vr;=1+>7{9|kZ*^ic3RfHv}3+4CBgv($$+W341k3|C4+$XC8i@aNohsJ z$V!*W?$s}CX{MusHp)Bz!a`re4`0%S#04I-nh3oyIekQq)y>+q{N-);yDgI<^8^7Z z$V&PE?@=@nK%D|X8RFuT5>t>VNR)hi#VgyI=`c|Q5;M#`00n{dy4{ojse|$rs*2F+ zdHQ<@=pO~&J48olIkU^rBws8HEFT9R$PwS9)p%eQ{18Ea1dEWLqI=<)?enWr)Q$?I zSl#vqc;EoSN8xAU$&rg>T`i}#&qrG*IPHNVAHabOa6U>bb|u0qt*5s+#tjXIe*Z5p zkQJ~%+TENx*Pg}tca-8G{Wma>%aii2Km78JmeHviMSvG_I=Kjl012T01bXs1cfPV~ z(U>%S2pwnagF>7_4h-<2SNANOG$M*Bq!?0>h|lAzc%5x;?eC~Bh*t;u`v6ZByP_nS zvlstr&D)0`o>88n4-fVSd<{g`MZ^(Fg`R>drZ<2PPegj9aO6Vq0-g^x79bLgU!rS@ zO@BMQcE-p|qgELVbrs+t>**q6J^08Ta!nQc-s`)UG*sjy#vrUmXlQT{FNhb&K&S`q zhm0jYUK}s6ywfBb^N$y|FPT1}Brh!`5veAKkps++Z(ySkVFQ4lD{_B8IAhm-{M_#4 z^QKG~g=9a-Yl9p}`Of(WNRVsK$|RZW2u_--<+=mzd-J7(Ti3QNoI7(mnNFsWsbreH zv4J!&jiiCpch}X{04#HWeWS;W5{|Ols+g+#(%8A@_V3yD$V2Pau35Wo9bh@m>dPxv ztXRHe>C%q&w$??9TUzEr37a*O%w(GEGiPyTF*E;#_r37K^G6RII(YEF!Ka@hPca8> zKehkKC!cuY@jZJVC6C_PzGLf_jSp{Fzjn=PX0?6QYUkCTull_tM&Z7ZRTWj`g{5OB zjjk*kId;P6(PPGsLl(xXHPzMQCrz+bRMkuxKVj1Nim?+XFcbbUe&VG6Oi7HIY1{c7 z2bdgZST{m)nLKVTH;-pwQY98?Dr2#yT3jtmm3>qdTSY1bBe|6>BfY9D*1puF#3Wr( zUt&^{SzzWwvHGw`j-Esbb$vm>!9mg>R^b-psbD;lAzuOA7mJ*QULqE@Ix&yyEaCB- zT?8Dy8<)$Ma@`@LNH}=UI%DMxZr=Qt5tSj=Ey7L%kJD+=>UMTQ%7V_Mk z?E)Z^W)a8DRqW&HE+$??F85^Ih4^9dL!|VF>u%SmSv3jgg|W(hB*9_AkOPNR^oLSN zfQ8=03FSdO??E;;WC&za*kqSP#w5fKCy|(#1VKDOG!dkZVk_*W$aTgk?SU6Opm1)n zy`-2FlTv<(y&PZQZCM|6H7CV4%1TR-$Fph1^cgcK0!|uwk>0bRo~^gn)$nTi>+9+{ z^-L|PBlVmqo%N0N4Rrtz>KhuStXaKc#WJ#t?GUyxi@6J##Y`J-abH_|dk52TeCd*< zctii_Sh|#IuSg;b7Wd3DG5*)lZdw7U=T#mDw*j)fy%ufQTL?{v=rJYdV zD&V=e^2K}?z6g>Nn2rfW9H9`lV?jnnnj?)Jaw{T*S|V~hrY0fr4w4sUXJsL>1&xJb z&2ywR%K{{TG&#twm<}g$mA=b0I&ZI-0r31 zwl*8q?j17QJ`=zVcQ%>nFbqg$3+FI%xwE-*d9}=Bdu<)5bE!p+RgYRy(+`k_t>xA^ zZzY=rTezEDws>vjt@T*#y;iikw`Cr(sdAf{dG_Xc0rS}AzPZiw<_qR?YS`+qiA*(_ zOlpMHeRM}lFM6-*TXhj-(ghs4!j_}g3AtYEF$PJbR z@`7DLIDU2?xvQM(Ed|mb@nhu@cYp=%fDPQmQmzL)mpxdyU50E!T$$aS0vYb^GA6+8 z2ZTlBU~~88gmFVWgN1?a!S)cK0vx?q>!I<`+S4F8uqgtwPlCIdlrbf2F}F};WpWUz zCI=y93K^u8qd#0LnZZo!n}VQOq?Vn`*7ny_*Dy8q>WS>c{_2`)Qq9&d)x61^+CJ=s z_=eQpU9)1vN^H(_SuW+bb6S~2{8px&Y2~%MbdV?ep4hi<57|R@+aKM>+js8Z?Xd5Bl=CRr-S_COUD%#)?0)RAGpA3TIrYNHlg~d#o@0;pA31u2 zJz_unEa%ytXP!NL_*wi#4)+~7dX#>Bf*dC&$aCbl{lrOf^3Gr1dHe0ZP_>`D!M@IY z&Hm~uW&urcO{D}jH_HJFfcJtx=yAHf?aOcxcAKJ0|@#AOC9((HL zzrX*{M{hjy%-R2tM`bUQjg3B=nj?!jt@OHhY%O;ffp#?z~{^^d8Qv$Sj0GTH@;C;_gc1 zj7;Dma%bFx_;u*^5h=QlxM!>MMkaj}+d(*E3_eG%a<*hvtskcEn8N# zv@H9NShR!k2`7&Sxx}8ECxC$BmnT4)UJHV!IRq4*MUW=7Flk(i1(FHJ+@EYlmSJZz zlgu-7lYPu2*`o7O@PfDsVGvKj4Pq1)cZ*0W;5l=6uFh^e*4Z2D&4n*P##e7DaWJe4 z*NwGvcnpu_3VCn_zy}g!hxOz!ToL3G3CnQpJieT7=W&EsrxFhSB7Aq?6fQiwGf%|h zJNt@Y^LMrjo#7N9ftX0}hg2BG z3ngLp&|oH*zyd&Eb>Jk3l2{2mkwWa-`ZwzkEK7B6liZKRd7ap>Y?+L%^*+d^g`S^W8;#cgfvOP8))vvTS3)vH#n zT)uSKibvKjUEI;JZsn5p?OQf)-tx%0E!-{aW@d|h^A-+$AzN;(dxU`S%=>wYs-dx~03p@k7ee~fj9z3B$#N+t-_=O22E^wZZx;T5Oq0G93>wUZfJO$3k z>70S^R@4%notbJu*5xZ1BQnyFQI{rtPN7Myk;#u5(v$H*QW#4=f>1H$PJE2?qaduV zu5Ez599Hr!hui__V(@n(X}mqPv1U?r@cr$YS{#Fef7~1Rd{FM-K*n&MOXiWe z+R_-ej-0k5EIO5UG!Wnt056CDtm-V zq#_acLrctp6uTKm$6Yf(1GGAUNg(kq#=dxDAm_%g$hOBO^qUh41O@%p0;HVoN9s~! zxV1X$4aq;4-ubw-3`sEkTojZN< z)R}iKyl~|B^RK;l^28?}e(>RkA6)#9`(f_~@4x@ShvY;1`yX=X3;FQYMf%-`pPV@P zC(ngC_)ngTVDzk{{l>>m$BgC$tCRqPK zKjO~@%HkO#H<}wIie{snqZy;UsF*3{mU2o+>D`i2h!KT_xS}kkhZQf6!B}7?F6=8R zo`Tg(6+!z{hzC&oCNq;Z}t zvY0F)i#aX!MT?;gF0wDiw(;qLmiY@8FK+GVShZ@!(q*ftbiQ=y@{Q}4ENX9GyS!sD z9G*69dU)+7?xtS6d1RBzrdw+trf;?_?)Z~+rux%$rux5Uoejzbgbp(m4up^km^{B+ zLLmzRX`mllz1P4W(p0WRTjc`q!eYgdz&EqW{pMt|*i4e_iAjD*K{^t}(R)W~fLX8# zdyspoyB2tbK*Tr)LQ0STu}}f0-~!i^Vm$#7~n6MAmH(ju?O@C`7^a>5oHvFDC#LLg8%>+!d_m&!(wD8I>9X_ zc*{=dnU09WR1WB#3e67^0EASa4v+^(J;9O1t?#d^2QbkGNC7ecvy^m@_PcEz?d^aZ zfIN_Pd)s0zu!sRn;^nrL>pD6XFJ1o#mfiA|D_5;vzI5f9wJR4aSiKeS!pi2h6)W23 z%$flZZ$@(m#M8wMlO|7{*)nf&+w_K(g;S=_rt(q`m(K@YO8EU8Nc{X;JRk~uA)Gd; zk?kj#X+*#r#C%s59xw=@SRjD4MIxo}#65w#7)L%%{+BGNNLCN99Vyl`(&_P^3~0fe zoQBf`U;|RnTT-*EG>1AxA^=EObFu(Vq+84hQyTtt%-^h;G`XSn!9oAk{cjo{&>+Gz z{csA93CEX%LV$hVTt4IgA%2*-!a0)Jz_~AOxq@ZM*+g z7eEj2L|na=v(^jP19!E(rJ3K%w)8i*%ooq^o7X(InQ8W(7gSAZuuoKbPt*WxV2kcr z2L%I?2(dQt9t}i_c+4J&T7V4#4HFy)*+2rgLFq?;F>t+AKo__&F2n%1oC9G{Igkd( z1{@jd?dIp0X<;afg&v8wBBof zZ10}O_wHl&@%A#0_3oi(HF=cm>U(teZU6^%3L*3ZQed|6wvugq+jpMCVT}{pk;8`pAM{Wd;TZr5y@!t+p@+Er?Th3hd5gSBE|53-01f~n zAm{sDf9iBn&O+Ht#koYV99k$k^md~y}cb8d|&Irg^SolSlkQy7ql#37BCB6Ze6~%y?xP=^&6Kjg`%`#<*H>%SFBpK ztfghumMt4Mub8uF+4A-|GiS_i22|S$b$(&}#OlVT`EwVyPOEQO&^UGGf5ei)fvr7o zW%S-<7ZxpFyz{R`4A<4o>ARbs_8f>jaHVWd%lTRJAK#xN;qY13sq?FVP<-53_E_^v zZAaT9;fya5IXivwUj${`EZsKy%(Pem;z%G=gi~*z(O{xwe_ltX#c%)zXgEmO1p} zj9D}1%xh^|y7uACTeof5yb&(r`1q!!VKUsmCrzqvoH~t}*4tQLUyF}#rA(+QEy&Hu z%*jE(aP5J+i6aZM%%&*4KyTOK`@4xHndWFsXaF0)^Vc4@9aoSRrwQ@H^$#NBxD%Q7 zz%65bN_2RDoSI09D{)~Ub<+A`^OK{(d_CaqAr!!9BD9MfpXMcMLw%&wT?Nntv}XZE zBPK5)QsLz$KrVX@;q>6jg0p}U$K)nN2Ft~u^sQ5F9E_DvOz*18xRN(AnYKUpt89lf>05~z3#PEYh9|2T3dCj?R2`moz~jv zGPc!@EwZdU94#g(um-U18L;^rqPsXVej&&F~Zx~3d2W8PitpyLu)!W%*)x@(2A}O zv%*MgWLjdFmy@BDbaf4gJrs5bx%qMOln5_p8`2vKu=NNRO|{3%M3LSuwuW}5rJZ+- z!fGJ+n(j2?}OiH*S*J%-}k zjfn~m4fFwV1l%J#a^PWHOM6d_vfjtehw`QQSozcZ?jtu7(QWjwvn6*8eXI<99PAuy zoXuP)$6*KXW5DhqJ7w6E{5D3}fC#oB#0NSK*~4&rO;}i>!w_+IEBsCz>RVn>)juHp{@cK_aZT zkFQ@K^sv&47Hl{c5Ew)YG7F@F8KLxWaBJA$*hGzSVq)UrVrj8M@jOXpN%QLGUgw$e z=t71_p9~-?v6e7Wsk8}M8gZA%RW#Hu$jr*jDyUtsdhhwyb2M}fJ$F)rs3cV|S%fkP zlO^EP+$bwAuc)l7s-9g_S5KH9jZL-9%QrrE{*$_Ts(!Sg9@SME5Re>hnvd9I^ZeE} zTAOM6WLqoMN^85`zG&gXr5znz%ezBva}(QbbbrMl=Com zUHxp3X9$I+ObcF3MRjeFwivt`I3W=MEh{fAF0Lx3iodV7@XM^+U~7(h%W`xiiFBqU zQVF}@CTkL`Ss_^<;iE3ho>5 z|6|Jl1e=?Z}`E$=-!`KB>eV`$0Nt+y#LhQ<#U!bKYHUe%q=V?%{{l5{o|`^ zgI|Ah?fUg^zWr|Sn{Niu{BXs!@7A9_a_0ESQwXDtzIgJ~izoj?x-Y%-`PFMTe)#F` zgQ4Nk(Xml5TF`vI?cH}TT=?LlPd>Z+#XrBKzND^FU$BQCw!HG^GcTPw{Sv%e%yaDF z;l>k34(!>rZR=+9&6683Y@}iTQ=8YUSVj`*Tg~RPhwoQDwW(*x{MvF|Q9(Yo>_mP6 znY46U-{QuKeDJpbEn#YilEq}w(v2&cEAwQcL}+=1Q{j4|Oh&pFukENWQVL`61SP>H zU;j`xnjaMQFRaN+iw{M@3|^^YpwR?{lkVD8?Um}}Xn!x3gS{={t6o8*`*7aMwu%g4 zqz?>8%4*cs!QDHQ9DOAJi8kbqN8lMSVr}O%D=3DnWkl1{QmW*KIR@Dpkrwajg-uPQ8C&{CbBtKb?gi(hPdRo{_|wWhVSx=9i}U?SEH%9JG-&dxthUc36l$6L*}QdBcW3pgRXrVx+v>^-Ga%WQ5ax%^_pnt^ zylT$+)0Y=ANQ|CZXtrn^G5aOdlF3EjHc*RyS=c&%ZhaYa_avgEXm$XOJ8Tn_nAN!P z?3GH(N_sW3W^{HPc?`i(Pu1M5F4t+ZpwO2X7Zo1lO?tZrqW7k=U!ZgbOoS|&nx*+! zjrTLCf`WKXR9JA3pNFAe2rql?rgK+$*6_^Jg*M6eggkD1Y;+`OD?UD+*fqoM=raGw zb6@l9leGeJ;Q~X)@|p%^0o%c!yHTnnm-jlA@HO3 z1o41n#u{?)jZVpJ-}RS4zCIu<@?_G-jGYc05O5#WXT%#PEgJ6J^aBPBpOUQxiDOu+-|$Of#wGt0OX@N z2MhD(tv_|?fs3UJ1EdfyrkAbHEnh!>Ur!eh!QJhB{1cVsOR=62Uvpnme@38P2qWxP zL{wyW2vPw_8en{8S@Y`W-@iS|wq!G+=rJ~N3}T}3ZYS~hND>hxOLJ-#tlIs`m7&q3 zB!RgANjHe-C5uf#MgUtHQ2-<@WK3jb=TJEha!Z=JH|~A$@3)4>P{aoz+H7Pu~S}?L` zF?3FStd%3Q^zMx96v!jL3?5NrPHU+AQj@z=csd&gm0if|MJVP zfPZlRFR%Uejkn%@=iT?-zxW~HCwzSA(@($r;emd9Fv;|F#_RMqXm1U@{m$S1_TGCJ z-X~lG5Dut|@BjV7k3PBd>1UV!dG*V|ufP8G`i<|tyZOU?{rBW;yl4O3?b~*cNXRba zK|Hmc@L@OfuUrA9!7nSj7Od#&>+N5+biuNoC%V8#80zoqgO7Q^f@LTk_J8Jey!XeV zJ-u)J&H&vTvG+&K(~IBuodJsGpR=D@@XGSvy^i-j$l22R=ieEiFgB zYO-=jv$9Xww{!pTSKhe*57PVZzI^tDV}{;Ky0RN;TU(cQ!vICtv~zJAX_m~N*V49d zS$F@sOTj45O99Zt&6 zNF`Q5ghd2 zBu#RDBy1&+A}q`aiGI=&6WxuK!VIn4YFgmK|w~{%s>% z@Xk|>+;A@^7KX$0G-X;jc^O(^WO_RNYLMD_gpgKtYGSCTqoLK%)sM3`Z12#sd*fuu z;hz6vlDdToNc+CMu~H%XHzuiPq>LPeBNjyZI6pQ>9ev`|q%~fg80q`SOf_dY1@g3{ zH34kIM+Paw+{!svR6<(C&@c6!GDu3d{mep z-b#-QPgu(Ck+K>dgJk_sJhP;6WC01Sgp}YH5s#mk5QRi#Pjp7anb@98OIwdfSuNgk zEcR#wGQsg>7Ilvu7UDmZ{Eu8`gGos`M#*Zt?Yt>3n!$}n`B1ZlNQODg&PR49lV#{+ zZ)b1g#BiaUk>q1fS<|d0rwq@jU)NePrt*#8Jb~E>+Y-CgV0W4ttY%pq>`rHMiiO;7 zWS+vhWWwEHHw%V0@{y2t;0%R_M`kB%SvyaTsvhQ~`y-PRhNxF;X5(*6PE^i=X*w5u zJk2KQj}1;T)H#5g+k#vWhN%a_i+6~*X=+AinzL*iTtftfi_9I(oh?QYU&P1C($sR; z+TPhSD!pR4CES`UODm@J0~nuPLEP-Q{Z>{;bF#N#B4W>Q8iF`TNK9Jk(w*QtSb%$I z=VIzQ>Fz;!&}Q8Meb~#}$3FzpDETdGkNEosSRieL5ljz7CU-a$L1!bgn==%Xn5-X5j7qolalU{_XEg5!!j)`mINb34}UJNI!hA{?X0R3b@FRKxHb=sh4ys=0;MV%j>{ zf(jC}mg}v6m&iZuTm~2Eir(Iym3XuCZ9jbefr83h+w~mlA}C9N?xWoGgp(VMRC;#%F5L>MwHAKSgzK8f7$zAhfTh}8fZzQ zo0(D}mo6PX@x_&m;bdf1Ogyr9^VKPt(6TNlDlTVJEGK7OXfmmi9hW4KXf??hMfn(7R?VSUE^hH8Z9tn{m0eL)T-7kA zbl%d|hUPg9O=r&ZJ^k({yUB9DSD~7rFttFFl2NGD;5-c@JrWSI_*QcC$o@Yaeg4D? zXV1TW;q8C?6yeO}m;8^q0uzCfVapiP|Jfdah^bDN{h zP{-F4F6kQ}LAkgQErq}^PEuMT@vkeHAB`%i{|Ro}I_-+}DDd zzfHCC@SK?g77J`6dq+1sj3FvAf5nzV=avR~l=OB~XF*o|Lm@ks$K{KYI|kJ08~ci& z$Wm5PQe2d$$=9%~ZJj)bcwJu2;(=#Q9^f&!J*yzTGFgFvABm&lxrqX)IAcY-xMZMN zlU16Vt)Cerz&@r&AGiLS{h=V+q)Q5PX8f~2De_2ERm#_wKf)3_O0vfsxQn& zap25MNZj#Mx_Lc24xa}bd`;JENSA*qkB&o24#>xLvIMO<5o!(s+^|Yu4TO|)@MIqO+=H89#)@|MT)c%c?IlQcf6+2IA&D9$^XXnKc~zt%tjDb#t+zx_fs!le1|}4N7TVl@s-VBtfz?S*prZXJjc9s@$^1#moEF z^cJg{ z_nNs(UNw|f{;xq+Tot;G@7Q|mE6|X#`$Rx*+MRHJ_nJ-L%@{?+tWp4(K1`RU zr%5HNkEwst2MbEUfqw0iCWRK1c+D}Dnyi@|ClUKjl#(jTz{Lg+Bt1PX4Ksc&gd&~fm_WFR&s%p=q%fQl zhdf2eNlBr+k*|jL3WbpcsEwSs;gnc~F5{{QHn?~9xJgN=;*5$pjXD*gh7@-Kg%wZ+ zd&`+r!&#|#F>DSFgxcJ*x9;qylo9_E8xAOcpIzsLD9*NbTeA|eav%S;O!e8UAsv(&TRz&*<2PV^$ zZVHnTsZbV7lF>^u8)KSoGZB;DSLreZF|iSBR9uJ*M>%U!(t9j|9W%=riumL7qWL;# z@k=+<;IE0TjcA)}fGYk(PAz2dMLNKo+y4RP{B2@lopG2m@&Ce{qi;@(bsB>?_eNLv zjKBIjm~-@{DZ6)*P)qyki80NHJx^(bw z;}e^Wz?>n;;I+@c9=tO6Cb3UJQR&fP!%>R;b}|D(&-et@LaFf~kJsDAu&1ID@V2N-Ab z=55=z@7Z_ger`270)p`qcCk$IW@bXGm`p;*98xLYz^(afmajHwtlZ7^4tpRBsgGjOvX-oDscIh%>664#XML z8-+My<3=IQ=(tgcqrYPu;*9?>#QExf3F7=GPtKWt4)z&`IRC+ubLhmC%ZrUcod1s} z=hG`a#vsm=CnxaVAkKvgJC1(v>3}haqg7XCmlID;!()ikbozAP?sq=!Hv)0Kl^l8g z*<(izA3u5K<-fj1JUMTlKDcvd(Z<(4USrIY(*jQ+BHg#!7j`V`dSX@Iy478aTIRMs zbMAu;#t=>~NY7xz!TmEZuwm0y+SZ4g)~?;K^WfQ!7a0RN2$PQ^?;8#sedCr3yVuC>RVQ9J@V$1Bj=AmPDBK1phZS;Vq)R> z6U#GmOKKMM?>Y0aQ9llZLT(agGLim^iW5k)3TL^%AIapNfG25bsAW8lc~3r3l_ ztYSoVpE~)@l4*b(D5TptKt{(aAR=C@E^A!AVc(fOuG0cJP+^B7$JHw^f-B3zj607V zESwg|L8_3gJu*U~_!%Wl%Qqc3yJUJG2O1U*Za!hq5UpC!|McI`>Tj zTaE_s1aT_5Tf!Lqb-1 zxWf1#W#5ETjc5mfFr1WxLZI9P6a$Tqjg5h0><%}|#w1#;Qm8d$N-ws+)dR_`l<+oD ztB327M81(S$ma<#9)al_{G`N$1cT3wV`CDNlc`i|N|j#G0#{FrdmJf;tQshR$wEr_ zrO4pYBeD=U0uQA=xzTne(b;Nv#7pF!Q9>6lGG7WMp^0gdNwI_``DZE-x`8W@j1=LE z2X9`Ktw~(2I#ZojrtpjwIFrd}l2P=ONYkVwg^7|4rAgsu#6QIdMg5SRB7l%atc^)L z%C)Ms6-v)Yp^G<$(WQEHOPA3hAcwS6A|Lm)Os$#tDJzg24AQN95H4t?3SL%_-1*!%%oSCDak{cpk2pTgYc`zMBT^as z)NmiuWIw0Lko&GA^f(-f)SacoH&c@N37lvflUSW5N2@CnxpBD;J~~|uViw=PpA4=8 zsoYD3DdECbDO6ebCgo>wjz0>xF&uj;u28EjC@tr^p(KDG);aPvZ=fN@MA63R3?k@YM%ObU$}2z`zf+kL z;L8hf4ASYU>vcNRG$nC-ib2y;2u#r#^kI@lZbB!c>7y*R7R1`OqIYF4&OZ`9Yyvt0x$UV z{fMANN}5uYsZ5Ov4~~uUa&Zd4RFjz~mkdz}N^>b+n@bcW3bZKsKq4jNek-K-?8$Nw zSu8Kj=7&K6J>0|9*04s+19c9HJm(jYTErMXj5;QTpkQU;fHx6lK)fTfu%fzYQJo|- zJV6lcz}o+?Z5_3(7T zjbrG>N{SFT#g3$vP&$2KL7}dMDxnoo+8bCzUT!{)rAifX!Z`w!lpE~h4Ixf{a)LQ( zq&8$h@r7Jd92;scSreIA8B_+Px}{7@OP3(fAXB6YqWydf1x3j2)vFcwP%)sVL8-<_ z&1xl746e&@Bk;MAsnl5tNh&`&G&Cq6(AQ&@lVO1)^R!qydg88O*f=4dQp#a)Pcexs z4bPNeF+Tyde#1h8so)VGPcIiY=Ri#MU|vIci8cqHDcoraBo&$hpVM@i1Ron@2MM{c zaG!^TQlSqay6)>kD)o>HayMNKL!qLg7zMMHO7hwM3K0-7G`Cb4N*U3Rj)`QG%EFLU z4*+EZs+VNgFDa1WN>yd$73sA3*n^06eU+!xl_Gtjp(NLvbAWM~;93-)*l#dX6!Hb5+RerU!{V;4j+V+?xfo9! z)O%)=eB3}3Oo1S{qpe|_1mniZD~94zNtgLTi5zIDvaY>r#j*v}`3g{nae7!M85n@) zlZUgjeF!ETfr1=zTS@f}igy{|NL5aru4+zu7nGfAv`UOa8E|qJh_=09oQp#!#$CjN z5E`IZDV8cqNmFU^i))$|baXCluPIProsWkFnxCbGRhdCQ&8^U`G?@_#YaekKt!c?U?x2U|fb@7r;!#EW9#$}1X zRtZM&XT#;RH>?tSg{%=TYz$42VwkR?wq@~>j<(tPO6jAELT-6rpr4-)SV<1yYlsHH}WTZes#0@zdMHnpFpMhT$9mPjg#Q{2x*iT3(D%-7q_+46)IBr2{D{V)cnR33G(yz z@tg&9PI7J+6R;8DvHPN;!L#C^q7o$ux2?KR88!_(W(AGH`D)2hruxR6VB7rBi7xQ;#^c;(q}Fxx{gy-;5XTtUKh zF_cXD5!I6{ST@iMMvWyONU;V6`1{fP9{T!uySt-`o-;W)8tWnQHc@m2BpN0O>oI8- zW9Cc?Qzi(5KbV?BDcR136ug?{>EY(#4%JvYDTduKpvs)Rts&OH}H%q)j702P?fo3a?h(ue{pQbwV(K~{jkq2YKSQaLhR6gpEK z#hO4-910Q1F%Ww2zbOizj)Refwuktqy@i9L7ofkHj$(cf$!)`eKygHv5kW{C(~@P5 zsVMWGFqt)ri8UjK-OZo`sVVpc`Xxs_ZoTuTR5bQ`mBHSom;n=d+CsdN2 zCrZ=kx@qaU8F)GaPiNri3_P8Ir!(+$2A(?4z|$FcIs;E<;35TVu z#(O&BJ)QBM&UjD#XS}B~-qYWCPrI#4|7BuAd77A*l;fNHw*lYLhM!DK6++BCybq(uA!=eH+-Tgh!se5nVo*DPQzjxpN`}@AprthtD>QvRKQ*}>0b#8Tf zW^O@D#p1M>w9K4TP1Ecf@y}23;a@L&Y&QJU2cPgUYl5HR2iJY^3C1S^pMLr^`K|*0 z7<~6khuA@xxyk9NgVKvKQ;?*AZqx24E~(5(jVaF0$xOL3@{Y9h#rZk;MKO2C*Px>G zMaeO7gX83{i;E#T=}u%_)J0Z<9`oH7%vw=gki0lEFFj_6Q5F&_yGqp429@Szmc(S{ zEzU?SX8!!NwBpnfvx3asIZ34iW~ClN)01;^lXZ<~ed7k-GYtQY9654C+&%Y<9DeWc zVWjDQwiBB6xJ%Ox4KPxm#SOT=A0KM`hQ!Cl#yBP=j-UKc;@FtP=?_hrF?oDq;@Igi zg9i_0o=|+)RX%*e^=oEi*D;-c*W+VcM_R6u#3o9=N95W_)t-3B$*bWta); zK-1WUZ)F-KsTC!Ia*``ki;yIyQGZ8na#40^LCnpg)Wzsg(0*P_ab{KO19NY_d-(9X zJGG=jV zUP&tR=Va!k4l;~$kfowIsU_g>lMJJ0Me-{K<>sfP#-vo{CFf=?)|14H%?4#;qD2@5 z(j0b!{ug|$x-jhw-5ER*b_k<=99{f)WgtBm=@BreK3{0sodY%PfdiU0)vIZaUy`rh z=G1z|*|gxeP<(>4=(x!LkNckB3p4qH|*CK~w+o9#WH_DV;w!37YzE-1kITQAyAg@_yI#e_F=Bn?E`! zuuYxsO-;F>DK|9bhNj%m)W5ukR5vuG^9Q@3ssF}(Pm~qqhNh7ByRQG!GXCBC(eA)D zb-p(><%6bt(3B6F@Vm%H2F1n& z$Jt^-J7lW2-=_t|dg5ZW;hJXvd4_A=L2;pR!!*wj-g*Y!s@;Q9Jh4N;g0k(n9HiaL z%b>WCDg})lp!7{i!Rl|R zM-#$K#S$b+?Sh^t8N19s1A;F*lBP^a5=k>U6=B1(969+&XX!9kDTU^m6p`d{h`9!k zg0!z4Nf3ws9SK@Uhm15?PeLM!y;rk4f|FplU<^qbrrB`U?wC3r28;FvC3z>oWJ8j? z6KPvafZ^$tgx$&2L>MGYM{Lzh@H2&|ED)s_Z4P8iKw&lq2E&Y`P}IRQ#gP;YzF>zp z$#0@=m?$2Y!ETtSJe+y$)!ae<0RbH&&+Sg4{_iJvG?&{BU3i`N^15gwa9jM%QFLz! z?eIHTM0t|c+xRbqDCu1m(u|BYm#xg^3UYfJJJkX<>2gP*n$d1n5T+_!Xw%x$TrPJg zvU;5~2*>9hDYS2JpdQkz}w5LBk! zi3&5zUj3sBmYZe_>Y$Bn8ES0?4&;`p-5H4Sw6CFM0B3a@( zvA}*e`XYVaCuyWU))XczeF+l|Ughq9y5p2v;n#R%GRJTL#$lP35i zD_l>@{Ryvz^NQKLJ$co}tKh&iKi@ht??bqvKxBEDmoJ1vw&%9L&45Q7fBTm4|5&^xW-nm*H%p!Qg-e(;Kx7 zMuP_dq+(eSaTm2gpu^KcrGzOM&ZlNLxCWOEjmI*IGFWL|qEU*<0;Q(y$Ooe63ob11 zH`ZSqRn@Lg%@Y$FXF~xo24`$sw3P!LLI%-uFm&LJiR&Kcy_I$@ni0BPyk5K3OB`=1 ztOq`J_?02}V1^M^rr9*lKylSsS5c!Ub|7@GnvOvX4rvgD=!H@#CWW1ZzLTsLdc7T} z9h_-zfArbc?1)%?2IDS-Idt<1(z;V)1H~yH2t%SpgrbJsm6FhOt|4F`rj-S0k#TKs z)#Ff0`rqil*unk#qX^}8+hBGyJ+{&g(-FSGG)uilq&bvnF+(y(sfK#vsfl>>i{4uu z%u%t@+JhAbhk|a2ewq}*B0CtN;y_J?QfWg`XT6jTrbs^2en1>GB^?ysAwvhV3__=H z2z3%{7^cZE1cE}uK+(0dKhrA1RnM?(217@4{BAYD6fK6y`iE(rF7z%&%NEgM$rh|# ziKBs_hd6|7v9|vF_QWzpE&UW5*?UM9TAz_7W~;CEtlU>%af4}n9xRQ5v3?tZYd=H1 z?RCs|nCp@pRB9*JS-9O07V#7bdUpeM+&82c*HxBx+QtXbMg}sLTOG%ne2@nT?a-6)e<}rqI-8AWyp^ zX$G#@gG{3J1!-ZpW65l=XNChSKQshWqM=rvEKW0UCB-fxY6e!$|%1h^TFj~dTF~Q~u z2Xb01Ru?BWOY28vO<^$B0J~MZQYkSUKVt{$B_rD8P=f%IH`s^z<#sS(DvN^>Z4DF~ zXu^t3DQ9LUPU&@J$6;9IVm7rl8cGc`;jVRj!DG%cEK!K5iYBXtxDlToA$-fG=s z4%ULWqLzNdf_qAs7$dDzQTff4eC4nga}ken1q4C+nU{2p%FL0LN45m6(}Y#zajZL?ob80~ zqSgpujUo|bX`me|Sxp01tAqxmO_;<0{#%sb+E8u+;ee%8Oqk0 zgp*2D%~guEVJYi0cwO#jHo)Kr(@<&zx zOfu_+tDpd)R2DMC!k>h?&VVYiw%x#54hiB6%fiTrS6HI|iO=yF1%1t=I!vC_;uFqTNr+%jxv*@`B002x_n zevLBb{NyXJ-e#Kb*C<8CJydQvDH^)b8!t;G%D;{qQDnhIY(8W(l{h3g` z_4xAE>9i=H_kI-W9fjpRW&+#qNc_N0+)Ls2pbO zJVlOe7LK-eeZC@av=#e&?+DiAiTDyso-ZTV4qeX0#XjHrSp5Ck=UXI9-Z^Z*7hmFE z?`$h$m#ZK#AohBW(3GpYOkXzE=_TLW$mAk+D|O>d5#@ zosrvz-nn3CpCf$G-Ehz^qbsx+c8YfxdsvzcZHN8MXY;lF72z$&0^W_jXhKv52VB#Y zVDPSh0)v4adBXky2G8F^X+$CeR(qS*ho!t?@Fx1Y```c?WK6%v=6#+8??V;Qk+^y; zfR5hlCqU6yGK>X-r>&pJqk>>(Fd%OslRt)7&13(VG736!{FtdrIBb{j>c=KsX5oMQ zXxE%*bkEnrm%RGXH{X2p+7j#_XdynYX|+#uVba(s#_07kwz+GxTdnyL{~a=;-^8;mY&%-ADzyY0}g) zw0g~Aq+h=32n_ItEZp!6>Fg7lNBwzdNH)E;6N+{G%pf; z?N{^+0V9AK1VfjyJB$IHRccJE&Kv8mF-#_46tHir-u8*Y z4TH9f3brsz@4X*^N%fu^S8YGE>HL;4LUv5veIHt@Y-HFs;JkeFzUb)tj^fJm%{}OH zg+wb>;=G=z7in%6r^>+LkWjQB-Bt&@N?Uz(fDBwe`O4=%-ZfXO{@!J;fAa0OpS->d z+q4$x#^h~}ix6NmEba;cuOWzi69m-*@X)5yq6FL^hziulNbE+;F_chOtkxSq1zawG zH0`$nHwz+u$Q@^(U@BmV@CQ-^d_zy@5UQU>piiNukmgS|vS3UQfw9Ggn1M%-r@+=u z6!hq=CQJzl1W1j1swJ3#bx70}r>Y)_77nD1C@eHcPX?Sf1d0{ZNui%c1_;mw0M!E; zItV?3e35z{h2jYWMi38pXOv0NE8RX6U}>~9H3pcq4ImbJNT5$DQ`K@n2e=c{s;C+d zKmnh47i8wqTOc}7Lz!FbKCKLGy-+#ogb{24JKH#0HEyvx~MtPk8TSF1Zotii0nts zrUstQy1}S0Or%s%JOss4(TZ1^u0!jTMKn}_sk|ekES+FCF>zb0QuQT;m@B;7!U<## zfI5u`U?uxHIPQ`{;Qg!uW7^RV?a&Z-EqJ@)Cn7IsysCuipLhtfW7r`SR+$~dsPGZ) zC3pnlSNytsz|(BI#T<1d3hF(GF#8=S-OM9{S;yn4GEo=NYSlc9bb|5iw+eJGpfKxU zR#6li3Q%6D88e6g=OFstnUhTj>baw_}t^5#C#MVXEK7ZfNwX)wCOyBIYb} zhd!P-)5A&)E=W;^0KXHcsV%nN_OhU)_9V<|0*QL3b4DXh>H&IaGt+I3aKKVT9*s00 zbBUbL2)1BW5R3%M9*?X@2~h|s<|ZM)h=?uf$fzYX0jZeF1P?_v3uPiu9$8BY4jOC* z28t*XdbBx0ObRT2yh1t?Fe?41r;#@bZJI%c!Gt+&Nvh@qP$qM}*O5&l9bp?YIidOC zOoM_(YQRwNH4*(5t;-=+#YFTZptMLc6^>C-+caXPQI<3SNjl!BH%AaDf|%%9fIqkm zV#Np=>Tsn!$xl`oAc<mrEiB%3@ zGKt=4V7mf@(Zt9p2JIo%s7k}YG(byO9Qg&26fP8z$T^usV5mtwFpaSu%%ek>I%Y1C zr$ci4OdXJB-$^$hJF~TG9l&$eK_GTr5=BTF`3ZVYK`&cTbP^e3#4Q2^dg~cvK0_C< zmKH#r{M;(&z)kU&fb~H!eruGzXMUA|gGtp#HDM;kvH;{{!GuLE8XO@>;bNrSlG?}X zSY^18*-$Q~40<>7iX__=3FN)U9 zjhPMWd25P*O5_c3_rVGtML~$fiwJ6kiZlbr#M~hyR7i(xK+rKvOk@U459UEF30_(< zRRF+{92AP8jDTLqV-O1}f$@i$5qmUfnB$x(!i8Zt1~zHrjUqQ^IMzpi7Q0>`uvr3S zAm|9BO(y^^Ba$JQl1 zk&y#aGS~tEP^lfEn!qOtJ@HB!b^iA;4mEn9)y%mqtB`;$WPN=fR}s z@-+DYIwIJZ_s||{PXRkHnMRl0MKp+rp}==al*xkW4|M|YT!txym&CF|kRc6PG2kJX zgui@DOUIg(CQg)&0ca)= zWejP_f^N}KNDH^p0=1+-P}IS~uj6rgP7l`DdbR!E$UQ?R+e z2tg)EXfM-P7coUu-%DB};4zFp1ul~bs3fLNcN;M6K>HxkMnF4&yByq?T<&Jfgq?tL zRsov<&CpP#S%Rv5BOMzZEhn2aCe+ZOt`oJ@(aqhC_gs)4b0$s7sH&l9SQn9VB}LhT z>N$Npa&FWOQMYNO8YG73{j5y69Z)1%BSjbn&(WsZ>&?~KVfjE5sXwtF!}JYKl))*2 zRe+^Jy{xZM0lg|pCODlsCl)b+Q(}}{P(Gj!^C1AFFyEE0KR#D;BWFtiC)<2?&d$)K3aNg%R|LC|R<``CGWob3z*GT4mthg`yA-W?K!cw`n1FzYdD$qn_+^ z#;F-v!l3W|2`jvjGYqgpKM74q2Ib1-Yv4cnqRcF)cG#amXsg$>K-3WPsptsRZz98| zAstXdKZEDGE8y_V2?PyoK7#|zJV=JOEtsLqt8G8uH6BK7!LKo|`aJ)L;-o2<3k*yU zL~8l9>yd1L*_d1jN*a8y832etoqiL|wi~E6xjY|Y3s4t_qJSg<@cshz5lGyyCAbGZ z?;Mj6dJ#0S4QS#5^8N&34cijlADO&RyMZHu=PGbtxrmq94Ah%dY`f_5jpOVojY78> zc%q)64H*pkLt(R}U2SW8z7}gH9ZN&@g(#%$Cz@s$CGxx^c`n`9=JO2^7>wnDRRPa1=*E5*~UHZlDNeF@Hgq~Ar$o7EGcd@s>EFFZzWUNEzWJBD`8$MsH zpG#L5=3@cU+W@4qzTlhc^ZmuoXY>Z9IRfhKGjukO?N`|5P&M_~bhHsnfg`2;IbCxY zVu~BqBRFF_a7MJdBi`N)yj=?SgnkTTq@PEWVb^|oR72o#CYb^#x^AA$}G$fT{r!v&BXN z8DP{M(SZ;k0R{#|Xi3qG*gJ+|3RndjK_)>CzKIsugzI!M$K5R1pqKGdBkm5Dl0Z{SwoQa~V{AhP84Lr$0?2SJl6Q3Z)2 zCyW|Apy(h|nAR3Q1idCukWRD&=jk~x)Ct{1L6u6LH9imVh#jD(Xcb~;&8&xxs(MHl z5rpFVN~ouavg+6tgY-IZ+Ty-Nmk%9qhXh>ek|WXW9ib@T*#o4Nk<#yksW7>sEQJ}f z`c{e#J$-d68oEhi|JA=$OqX_9QzbW6WwOgY@ zO$)w_?IpUZ%oVrsxRqc?k-<*59Un^=sOq-cRYuY+HiuM8IHv{D>_{-JD3IVcnA_2u zj^<&c=>}k}tR4x?wwO)Q$7cxi(cT~GB*dq}DfKSD**{2$9Nz5LAUo-1&29!vVs;`b zSa17CW*Gw$3eh4Qo-+L+AT4G(+ndnEkSI=bEb3V=l};HPZ;tfO;?o+h-VZ0i&?CI z5T;LnAA*UI6cEy8X7D3IAsU3U48hw7{iu*p6`hH-0c^{H2XW$=A>fKhl2(yRPr)>+ zkfA8NRmNUmH86Sk2R4I;s&@(MFuJi$b+EQ5Qc0jiLh-mdb0zk z9WdCHX^sR$IZBIJIm{kO9e^T0&Z>El#P?LpDxo1XNP^s0Z^@=z9EsWl@TVd*4YS8UF`_bwePS3XJ61?1M%xrrQAgdBLEi>8sg-dX5JZWZDcBM- zjZ%(SJKKlp!5ScGu{%(x2VIv|u#r=WpJFwlz&w6y=_;KaV%CR!qj&#p0tljDBX}`9 z2{VqROW3V9YZ%?3Vj}96pfQKB0CNQNOdS%#4#jP-1Q=q@;NE~a(O{XYKp2=vp)1%W z@iR@FaEMwUkt=BUECf(6G70}+X&Zs1tt1h~A=MAUa3LNEvLGtt3P4|EjosGdb~d?y z1v0irkNhGA=SN>q7-k$uv4nd8fKWBHA}?xvU52RyocLHCFh$CQC~nJh?4|@EkGprPM)V(Rj^a|A{A#rT+lQZW0x2q7wirQ{u20y zsV3lpiKeO91r$q=C=vp~8O>A^ZGp?`Y;Km9>O>>VB7lV+@}(zY9w6+6$wuK^3Y${E znh_5M8P**%m}R5T%igvGfQGvsDwKzR!kKNg0Z_Vp`y-8 z6=11qfSIEs^b##b%0m1^*s(%eAPNDax-J9g3S(){#e0Rpt~SJlm52pn){#KRAQjx` zhaoXUq#)h2*=cZesCSMA!@@E9SmG8|W;P3n zMvS4=4w2j`s8DCO1P@vaD=>p;LP%!anAL*HA=Ru2D-NDe)LZ)3jQG=mHzbp{O%HfA z`kK1HY~T;!(|ZxX_mD&YO(~ZcH|G#YqjE9XAbc0IjHI!@%z4QKF+#L|hA(*b zzb;<+>j!V`D&<=U{vaqj-UKyK46c8E>x;k&&>#M!82kW+=i0vk)4}9qhCuOUQVVe5 zU5jPlH$Qo_Z&=K{Q(hlR^M^m_tOjo3m4LUqxbC|11!44uJt58|f=vy;ExeZ?+Z)YU z$QKy*gow4yh=o^T`Rar{AoK~`U0@a7vskjW{mMPDH)k#1MQa2Uupfl*VOj|UD!h*( zuCUGf^XBhKT?1kOQBxwk%wfV5Xld3JVnmm+g%l7A*cC*9x$E{V|3D7-g|I%r5CJiP z2<=m;COCn)D`;r(sY_^z_Z6LJjf+C4A9MI|3QS);_ED{0>D+;FQJnz`OkjP;|E(^_ z9~l+W8Mg4eJcf_J+nC|EdImEz3j7^#3!CrT-!wjQO-S!Y1y)dX#j4HM39mp*;#W6_ zK+IUa4giJsBCOc+;YiW3&^y2qUxhwYef-CNz105IZ;mHNO5b5p^U3nfh!pgrfEaoH zus{X)VSMVbfPQojW4S}rp91qR^evHnUS<85-U6cdOmq&DN-ngeN9_3lIHbohU4`da zKsFF8!FU!N4Fq(w5p-v?b)xXAiG zKGFF6d-srzH?~xK2wEyK{%6vn;L&%K_wS|!BTA@a-v5m>zux>h=sL~Ry0}QtI^2uY<1BOsxw}4lUy` z9F33d-@1o%gm0^zEVNYe{LiFC;W6G(-oKj`jD66KdH*-k{Ce~2pzAczy5X2-RCNapw(#^nQIKYJZ^-yDy;KTyr@0==NDhXJq8S%owreqZm%%ims0ZcASxG$x` zZ%0t7py#R(5r+UWK6_9B2K17^j|UN+@c(eF$EETH&JYpMdi#4?JsKC4gg`|!Oy19w zNJQi$W~GN8@(yAdiG|wmQUw~yr5RbM^9bam^7{h_(KY}Ze2Z5F2cm5Z2Bb89K4DKTx&tM%gLOXCrZnB_7OgCDjhbV>OEjNC!f<IH-Ih=vmV_QN;(N@3W!cRc6TSu( znS7;D)=#|D!3lU5zzj?9qmPR)LuKz zZ{aPvlpE`wPea60Mw?|DUEhR8$8yiy`?gkZe^!y5T;S7dYQoqliL+wN<7|Y|~C#;_(%wvWBUq4Uy|EFVv=O!pCF-;j(Gq(UoSHoft^~UGMK>A#md?t|Q zqPdz@i&yoQchj^DA8Fd2-;=N2j`i{&gs9`35B`T({z0%u?})e_ao!Qy07muq;#OdP zfYz~befd(ut=!`4hv!GUb_*XD*Tms#FkZyCGI+?)TZgJMBV)La7bXuG4AlN|IYPTh z&b+|^DT8qt9v6+Lr|dXJ8V}JBtSj(%8OXPE25H=!mTkyhd`f{J?A_EC&*i~;A$Tq@ z2lsQk8-(6?)-g34NvN4@YufR^#r$$B-vLp1AZ&=%4NQC%hpGpk?8NEjGcxsyh zz{TU7%>41B^8hAY#85mtyAUDOW(5NBqs|aKfFg$YMeto1C0}YUJlrAIt7s4*axik5 zlF_vO0ZohbQ=unHkY=$Y+~I{iUB?zR0^3xyaHzYd+Qzq`GIF3z1Qo>4geV3P;EgPH z6+p$I=y+5mL=N>t{t=kE`Cb#(hhi0%Vh0Z#Fc7C^ix`GBkchdRmV@|C<2F9-YFZZ_ zWs(AcFt|QqW(F7H;dFBh*SQehGL)t|6bG%Vd{Nq03;^KfH~zn4Bz!^ytV|OI=!8NU&J55)~HSFAxbTzrLJ(GyNM4O{+ z+W2WRc*clBgUL@)`-`ynDeCGb<_N=X8TK6$Ve=9%59RY*8oEAq2OKPDl0Fp=d4w39 z3Ma^psB*kbz_%>O5T4W>pCG(J!nY{UpUfn&--+mJQhG7JmEh0`4F7H)kM@Pg`V#|* zjvWk-CrnD75alQtbS0PBy%SL_bg6NCiV~0f%J%*FVcV17i*+m>MVR@=8hd)Ix~Ky3 zr&~pE$4hTlD4Gi;tISXlUjpH_q&07%KQ9_M1q}of-;eO?M%o}+qH3%fnn``npuTm@ z;~WiBwXkeGli6F0&`+8uodIg1bSs#`(2?DcPxT`xVgzH+t3u?vAAEO)EB6R==j9ob z9h0%UslS||NWt2*Y#eM~IN|A-HfN+kTzpbrF+&UoVGGmx0uoTyh$5Yom=ujFCQjm5 z5C)8enMo*1{&V2?A&dnf7-Qk9M(!iYf3D_6O#Gh0W*lYVX)eTg=(Ads#?z+s%SCn(3CxD-heFc{!E z_oCwsYf=KG99SFor6fH>_pU<)8<0XlX{Nc__M(-x-jfC#0Y{gh-4khzRP5RgfY&u{5!iCchx)+98Vri=sx4^6lYh*w9d!P|yyx<{9hJ~|N)V^XU)+Rl9U?|lOir&9?SjZLkXu0CT zSufbYWACb+C7MME?x7#pO(D4WY6W2yUUv(q(jTN7F5ZMQEG{y3Yhl3)5 z)3c)oJBTO;Xu(N%hU-!ee&<`@Tg7ivW?MHeqpSRT@|B#7~kUWl8?;)K* zp6%VnoChfGol5IwF+48Qdn5U7;?-xuheq1Za5reb!S*eQ-O1LISKkO5#=-sM`n|#B zB@JiQa1#Mn9)kTjl5D7Lx~TN>vsm1H1lC{ zjU|_ACad2ka|28N=twN=={(mYXX zz~=d5IQT*k;7|0;JDn!_N9XW${Vh=N94;``gMK;N2Ex^h#Xve@P~i-*8A;Wet58WFh`^i z)QHT{`o!JU#b-Di*?Z~CYH{7*X-XU-3Rmk5GmQss2BeAii;7$M!o@|Eg$hqO?V+4u z=)hoN8iH8ksWxjG*9;O;8<5IV^BLq6kO`~YBP>t|A|s6i_94+y^}@YgluE=X<;pK0jVD5MNRUM! z)9UT7U=aYjNrK&U`oL~*%sL!X4F@7Js0zL$Y$OReEopowGaxM-zHvYT&$B}}8Tt6a zu=xLIhBXbV1~D6J8r^Y(o^|5%IK*r^uuf$hACJrrkP8_+xzgsaq({TQM+g~SkYyyA z$*z(SNP>{gc)Xt)Y!qM+;J)jTY8^0KqJ4L0zT8sqtoUCSs!Zo+_oH|alLjukn4CI0FNP=l7 zZWv0Z4-5q-o5Q8k;4Sm5LLBw#hG>6+c)%UgT$~mI`8+PZU}+}uHB0fNJETR>rN#td zWF{XSS%kX5XYEX2Fb~deM^6XlpeH0Dah)h=3d4M`W$Mop4Hp=JK6noi(waL{FxL=- zZg=7>zF?yul?iiAC5w_cs17vPhawePvZ)p+_mJ*lClahg5bqLyQ7R9h51ctjMRcUV zQktc?oe7>?I+uEvDLJqqBY~Yt|KF2FSJ%?9;*oceM*rJXwaN{!g6kA!HjN2qYW3;# zfidA2akzh)ubU6Ejt`p~m{5Gk=}+_g1pN}22&ya@t&E7>`8oDK{ET)V42sc5ozgt- z^LTc%7&5|-xPte{yz{#tY~c%LAMi!74p}_cUt*rcT~M?&%=BOIL;abeC8VoeyZUS9 zO7Bd9Q7r+f?T>)O;XmqHP}yKry}tmlJ*P7bR#ivRC*hWCs#UP6Zhr%faX6+#MS@k8 zk@8t&XNo8CPat_qJ5pd)xg`9xGr<%3A-p8L&Z-2ga#H+h?BNioz!UsixLcMk=2>%i z!?IJF$NqEpcL9vBtm%51vaEP|Abf&iQHGa@1g`8&tPIHmkc?L(vEYHrAgF3jVt-L| zj=~Yg5rH3X>uw;ZKnCTB8ivFkNc4=LG`{ozNCIdY@{iDZ02_pt8XJa3vS4~Wgccmv z4Z^VgK;AF_ufT)xnw@0og&V9!iBGCCXv8B!Jt(n<`jYyie54LwIk6~*4jHO1O<^?# zAgzZ~hZ2#jpCZ$noP%*Zik$J@hw0G45G1hCP{LsRw5CcNpsu9eeVJ`&K!U*p*?ikb zGJ9{Mjz(l;|Ge{by zW4so`yhs<}^as$zqN<)eBV3#|h(-6G9vGBYLR%HhC)z=7R#nuz=#QQ~Hn}W+ip<#NNuK2s9)t_4Z%D z%Ys$%=`ElpGU-<+N1bt^j^>W12zkw7A}c!;Z?w=!2?MYt$-U@iFxn)7hfe4+usU&c zQ|KogvjiBYP;8E#K=3fwQGmdjdOAQp7#Y(DlZwBjBqg#)m5#5lq$^W24R2;hjp?$X zx27XmRS1)<&W$S~u{H+^*F}T@R_lc`XXyE{c5)mDj1);ye`FyM>`0K;C>*dmBrqKb z{CT3WMhYy7;4+x|s_Kc6;?)a>nV@HjN-{WjrVr%E4ok5n2gmAd3{>sGa@6xixCDTlO~ zV2f5=VRVtMM>*wL?*Yt20rG-)inh=ua+XR!MR3xl!wz&E`jSe+mgGt*%vU{NMS8IU z!BcIp4rO!5F&P?IM{Ndj-4R`F5#0o6|PC-h$NoXfnf)KDiVA8z>5S| zL#>9scT#!pntd=XN!%5qAO7wmSXIUxP$*U$R zvIcbU%;l7G@lBbDsnmHVpfC@NSjF4DcNTrqxiPR}D$YwCIn>hW#^;GruxGLFZ z0VA7e(`Xf>84aT}D1u~YNfT8xBSScpZLk^oX7eRY`ho9=mRw?~WZYK3lubE24#p3X!_x5H1e@CiF>XG>r9Yv0FtLT~3)p8f zX-Gh;oFwV(Gb}p7hd>F$0bh=#U5{udTy%i>hVSDcjlDi5@n@(UFreS^8s{dUj@Lhp zNcwi|5kcBkv4qVedLJfn%IAPR;i;{Wqz{{1iJn`|!eIH{N8NWJrGxK&VpCFOB#>s`PrjyCUWV1v2aU&Z(3 zzvBmVZ~BrMU&a0ao*iIA-+%urB(=S$**}y+N9n z%=}N2{~I3L>wTI=m(Kf7LRhE1pYfF0KlNquPBN_G)kL06JApNM78AM3N1d3G^v6-dP`?K^CDCJ)SGNKDuqBn z`;pl8*M8sooFeuyqae$FCsLUJE*_ypH&s0>rr`=5(nqRxh@EweLO<(6t=V43HL@Ml zlhEZ?2?%_En!oECai8JJLf8}<0mY*wpv~nkDq-04753dUuid&3P_ub#FrEd6ne=f_ zj-VbN;o5tMx|#7Md~-e$DD5#?^;qfS86dXZc*5sn(p7@_Zslm%NGX5r%Z?g(kY;{_ z34iFu!4mZW#U9Zg4jP;w#!6soJGMOzzlst^@24Bwpq}_qBkRW=_YJn5hYlDJ2k$8e zM4WU;}eCa`WQG5uXT^vJ*YdDP8YHj@C$=D!>j(}5&o#a@0==9ja<8ILSo0{F= zdh*wl!sD(NM~i+i-?NX1yH0?y5d22YfLnR^r}_y^ecS$8AZPU7u?EA5lJIBk$N_)i zY7N1FA#pg9i>m{oh$vFtYQI`?#Pjf(c*sH)oodHVM1zU1l8cvz7sK>SgYoP1ph)Zk zp1Arkr;<&6H!2o%WEns(+6<9Ey|jTuDr2#c0_&FiF=QEGL{absZh4nH)?~Pq3^7&) zGKk|Ja-m;G+zugQ1V5>!ttN3e4O=zZ~zM4#p3sz*!muHxd@F ze+V^Rnla7cn1K!WASB8g;ZW90>^;-kaabRe48IH3?x3|N@rPFU>MhRM3x}hLZ7*z6 z(+N(Z$tT^wu!HWnorv~`m;61}0lW9ye}_koh|z0d_QVG9TDD_6LOJMXa!n)~>(|l| zlz;*FP>d45Kw-sU_VKubDp*s-cc72y{mQG=pfZ$|$+Uhj+7XtDY%p)~;|j*XLSX@D zw1BTd;|tLS3ni*|h9#%0M38Nop3Q@U1<~{w+DsZPAz-UaAf9+3nTrFE#*@SVS1FE_ z!+C`>lN50>iH1;YDyjGgO#V{SL{Oz<)&{mM+L(rJ;A{TU1iW}8axp98IL{Ec%54Z1 z;48+8*#R9e3_*Vln<_-Ukfg7n@5zpd3H<#eI}=$!v=kbXLX=7Y%3&qdTd-LExQn7G zs2aAdNU8%7M1znBc9H>d!^#K@PnH8O@TPRtl)xQ3M;373oCcS%JokW zgB@H>yx2^i4pTbcc!iNS;+{qh{}@K@V#z4^d%{I$n>*{`E5oAG;PPE^H9K=r2Oyg2h1Cf6b@Vp*-ZKQM zD=rfF{&6|%ojxN12%6bH%!RtaB)~0*DF=jPW(7@FodKXPO+QrL%C#es8IJ}Q1G|&6 z@LWm~fn%g%97st{(&b9g`LZ-H;zrE{yS11g@w4%@@Ji)$UC#-O%2X^6CT zzQ$e-Qw2}6yrb{Ji_+|VhLEe-|I5h9OJ4ld=a<|5_Q8uwr$^Jz`Id`;OV5wz*zkFO z&avUc*w8yz9Y4O7qoe-|933}cbbMud zpswZDe{1{OZ(8a{V~tGM`={ECTDxt|&+v9+`_JY;)davF=J@D&0xJg3vpAiTNzZe9 z^!gQdkblMPZXTt7E1w6!XW>#_dS=qqp;u3S7MGqD;?;1ep9IyL37^u__Bh0PX18(A zK3#~Ouex)Xgnh)MVh)oMG6H@^4Se2Di1Ze6oJ?Wz2Ph6(+P@?7B*jq!4$trH8~{%; zxt7MqGq${Igu&DITgsS5hIg4PGyX%odPgy6+sW_>8Kf3hQ^GZ5_)upU1f{meX+tM4@@ZdBtFd5U$0}K}h>9ZMVq-SWokY1@KHE&!xea$srfPyZT1hy^s(;- zt|X+w50WXKf>ebuSn_e_`O!7()Z0%%kE-bsZcsx;)pR^tx_wE`569CO?%D`r0Iz8B zw+J_dCO;rIe;bZ5Bi_~Ux4(X~`0jooJ#QY@z*GG2APM`JJcaC?DVg{xYG9b-?yv+ zc8K5w+k?(?zx_wsKYn|zA)ZDaf_Hc^#DX7zs~C)5;M89oLc?_A6mLDjEoJ;|FBOs; z3ZK=V1P>QVqCdzLL^vquccQVunz)R-6vvc=2&DRBp812Hln&Tm5%5el-CTg(f|5hA z@X80vLICb6^Mg%=JcAoNbY(>dUo!Hu(5t_KpJm0{M?lT_tDIoc<Bu2f1r-lc7!Zk(2XoCL_!p3kEl_vI1f&SM>-cl%7Y&QV_*?3g7zih$TgRM zHY^zsR}G66=g^F42Al+!n1}Kpow3e(C^Ju!}c1SuTpD&!VbCz?KmHceok;4aip zR`J{ubwY$Vlx8q91_L8$Db1rL;0ns}2Qq^Or++3b7Gy>%AcgOSS%R6P;WA1(eR)5T zk<6&ZP%L}In(6I_7&#fnOc+G@#%LW2fM|$d$b*s}iu^cPNoS%B!F&b1DVlZghG8Pd$(1CXPf7&-w=EP$_MVevCm1GU(IH+s8buv|M+H|% z4))Gv#x|q2tbZtU$dl2>>r@rq3=X26 z66_J8jAT`#1e)jBb-$e+C@JAcW@s#)HH4Ar_`#wG@x$?E9to?3 zq3Xe`iYRw56gZQL4^~bmnpDPHP-+N0KNWzC(_@4TL(>m|7AKNCn4js|;>Qu-$EK2pJNwoWbubHf!Q@SD;_%#M9Z8_DUGCPHl5)h}{TAEAVC{e}#^+dKpn8C7*5Ayg{cBXt&k9R9T|YGBT+lPagDyRCw!q8pC5zOr%A=#3Q+``U<1#;9EsoC z{|~0%kir_k zhgWgG?4~o)XjCXMS$vS3Gd+aw{W}RkrsP;cMOkPwyfFjw7bl;|>O+67OZZ;}B^!(# zwgKo`0}eK*7@+|h0{mSq2{{!GI<0)+6Pk;sQ%-*vUq;w6g+M^S<^Y_0IOlL~>0hd< z3X3?~P@lO=0EavvoLLEjz5@3P^ksn=+H95yfq~lwa(IF@(%H&-E4$9zK%ggY20ohw z2ks+~#~K7}N(@>@R3&K*Y`w2YJK`r+{?7X2svWlu^eq8%E7J`lSCn*8@3p|ZTol%VnTXq^ISJeJJ{ZaAP3 zW^}j7W7%^M9y82aaVS6Cvh~0tIE;{QlSLgK%Tqd_Dl_m~C+oX5n1B6S4_uPyf#5n< z7h4WwlDKfP@DsS}z=J^4;t?Z8_KiAjJIGNXj2UNUbiaT1AsFVSmX;U?{_O`QGkA#n z+=#%s25u}CgGxkX;I;#Q9Za|X5D6DYHXJR~)h>a;Y)MyMov~XW8wiG1iK^Hhhjm3o1wv_o zY*3OJ;2zjoE+426=-VIZu2)R03j+5jxQK$nsaSv2^pywZXjW2fP>@kY!c!VDDN-~0 zompk25)6A%Ys&A~rXYigl&2JA^>0^jWd})I2Xm=v*|H!-Ma`2G)?v$nr+}datP@8` zr@acCENqM>II${T9;`Sus?){-TyH&go(w1`V21(Q4l0PAMAXQ#(||xBJ(iv{G%;Yy zK@X`X32Nzj=K&iNdXT+h>v{_U4X{MrlN0^i<#q%(tzr0zwd;KeK-|{2e4Vw6{RuDz zgz4*?U2IffX%Y~%uXA>>W5EN00)qH;)-HA~$QlsSZ)FYKzzF7w)Dq%vEkAG@gPhig zf1R_7y$m_n$o~R>&M0aM+{=)|iTv*a=!{)%WNNeGI(d zs$L;bOy9AWK`!-D0oibE+0&5UU}w-4NicHDz6MF^6$8>ZI;`6oJQhygH6W2=tHXW< z4$zfhh{I^$!74N#GdZ1EE_EcpMlEi5wunkH7cboBP%prN(Xtw0y0P{Ug0afrO~9Ih z34v<|roi^-hU;%YsuVi5=8KO^vbg=~*6QIi1+%f~%&U8g)6N9bJy$o%4d*pIZuPBP zYhGg(spK>J_x1l^<=uvlZnW8(jgwK`wz-RGNnQjD9 z2*Kic%Dvyo|FklL_>!0*hg5_l|CRnF%b+0CB zUhC7bx>R#6uc2YivFcLIsl3)_P-+-|@8NSDFYuR!PdB;3#wose<{bX)8}ZLi@v-3( zU0jfpT%1udxF9bbx55*QZy!G4`0$#15&AX05HO+Ac^zrFW(CO4zi51nYu3TI?tyE{ zHU7FfmyYMr>3@gh6fsMkA?GmW)>{y@b<13QGVm!;%tpHopVzdX)o9vBM>Xvqc#-eh zPc&QbY0cJim}dLl7|nJY4tcoeE^GoF)@_y8pd(*?3{mEZx_H#J* z`iG&K{rzE@{dYL%{0~bs`={4v_AiEO_AAG=D zV*T39+YcOn=B3wu^t(_0@%O*(Eq~`*-=&Y&zA3-`_m3rEy7hm95HN-BwjoQ&n?S%}1?uF4vNk zPdvG4^R}IP4?g|$p=VDNF8l18k6zrhrLNjm9RrTWh9ygvFIls0{kE+;_a8WX{Lquh zEf@cAYTK&H>YAHtK5eb9M-ZBO)tVi6=L2-F5ijkzE;$=T2>?ChQR<>sBc_8vaGFQ@UvQ zwW_+Vv3cq8m8;fl-nM=3!M#sqHJ;pGRb#7RjXr6utZ~*itz5cl_1cYFw(r}uXTzeU zuk5U@sj05H6`9K_tLhq-FMVRo+D+TG@7np)hRlZ3d#m-#pS6}(RXQ78D^{*tyKd`_ z-8=TL&u(hjU0u^3IV&rwm#^Qtd&g57H*DRub^Gphc}q_1BI(oCl9Gzz?An#v4jp># znUgO)e{6Tzk{9+iL4iRv_Uao^r<#hi2}ujGs_L3nt=WF)(EekkD~S|DdY0s=Bi&t=$q>5x|-_RI$Pau>Y>j124_=UZCy=mbxmDmYkB#+_%Y)qPn)%U*6VS zQ&wy%wv`+zEw3mmEro=d%Bo7_hMm?|RoA0qYHRRsU2VOywx+JJwX`g0^q6szX3UwJ zT(b4G4}SRUirVs$(z4>B^0M;MlJctR+RBQG>RM*0sjY8x+R=AkG&Q1E(Zh`^)-H!l zC5;+0cG8T;=Pt^seCo|VfA-E(jWrczMI~ir%`4?_jhXUYiS{QQ^CtZ%NWDlIN6hbF6_ z#;U5yn(E4$n!5Vhx`ukEdr9+?N6zfbpEhwqYf(W`{6k|WCnU{VoRME#?OOZHPd>kV z>CRRf(p#g(>{kG>$9a@=*Xzzs9;=IHM9~wI~apt^5 z>3Jn(PWSq~t)E_MZ~yAoFYSDyxwg8bxUvi)oZ43v<<)i0+Nyf@%1wJtw46Dzu4eJ< zd9xBHwif439~J-TG{>y@i_&vTsv4H9S-<`C&;NY!%H>O+|MBh9dp56M=5BT`S-yPL zinW_}A3SmPmDkShSYDZzk+NXk<1?nT7Uj=);GsvSLI=oSP}R6>?dGlfUugZwZ$JFY zm!JRRZ=e4D2d`W>b?Vtur(QU7?!wvAFP+-EaYb!OUQWj19@{Cz? zk~4COs-3RYTet2$e&)g}ufFl_J3o5w?RQ>nZF%v9Qzwt@+qHem>NRUtxSbWHr3HBz zsVT{GrcG=u$eQ-RgO5#_K5Nc`l$_!!=aMy>w(LJ~>decwmz~=fs(S#W@=O(A+7FIScdt&{L14mE3boSiYm!3O% z;Hgb(UCx^7(!%`Af})~g&YcbQH5DaAd6_B6v!;zl6{e0F{phsBS+f_Ursr2SxR$Tm zvH$qV(=F#(PCvVU&(4i&meiv>dx6vTOkq(GjI*i^##mOCpO=-ga8|;E*4)g5Q4fqu zNSr-yK}uFZWqrf44LkQg^WsbAThF&VcW~F1Cs#p2HD;FlykZPr7*cJ01@3aQQ|8Q? zJ{kF^-Zy$&!i=PO$tf8HWp&M~)^FZ@^!b<0oj?B)G`D5lnx#z`{pCe@`6b2WRW(hn z+S=-h(&D_#^aV2$Cbwp1O}p>@ag%4voU;h|%WK>#*KXQ-^!b)^7tWu4?&$;DH?CXd za#mGU6yz6SWMVqOV5+GsD=ElYG{-S@Qfn5Nr zg>x^QII?HQhP5k}G*p+BXR@yxliXHFj3wSCjtrH#(2;*tVPt3~CN6}5GB_0`3N`Ppd;XFDd1 zZ_UX_y6?fUFv2+tQ!@)ntDBau*|6{U^DXDugNJu-+qh;~qqDrAATK+wu)GZ8vAU|7 z)yYg`i&n>QOSiWxSzGJ7(oU@&C+7e!T_Q>9C>z-KJ zT#q^z=H}&dc5v3!RaKT3=VqraOqxDxdHKwbi5<`3;^OSocO*`N~^b7arXO)K4)1xpI@^KuIcQG0ZMX>opb zX6l?dj)V!1wPvRzj2!ha-XoYZKP{`Eth#yms`Y!0pFsOxdGXm}dv~s1;clp_D$2{t z$+hJ=?X|@vnBU9Mhgqq~b7s$+I{vZNjI1c>z1tDxP9Nr)6eX5rjCmn5YxTy^*4U+x~qG4 zi;V7b-5qz2y#L|EwA`%p^u_aM&2&r^6B<3@;Ry*zv*x4zCDnLLZP<1E$c|-c<6^Jw z8*}G?+i&^)4cGL$x?kTuy`rOg^}8+Z{_%6tQ^rm}Yr>G2+eh3x;MyMDul-)1t9tkB-m_Ql-o1Ks50AX@p2ud-U9f1u<6;6i zne#`EdhoG?8MEds&dx6>t8=g2v3GaH1J~U2z`fVrG<;r;d+~i~ao6|j*SmZ7=x#lF z_3Reet$(~@?t=OA9n(1qvuECSU;KpWn2S?0^NK5-D>m%dTRQTpoA0@0i0kyTuB>@O zV(+@~+N-a>=7#UbToo18t$Vk~u$VE4a~IEbBu*X&6P|hB{SVZ9ekB;uyqg$V=Zy7kCPegRLZjs?PKQ@2vJQ)I+nKMV- zKW6+im|#jqURib1$}QVx$J{vZ#{M_<>wD+maj|`SUezrsIw~^47V%1C&zrvAI}+j| zqK3>`3=K?vv^67V&ghX3p#$d3OG$$_i);>?%k{JRo$ba zBf=q}DLk_K)xD!4qa(ulBxcN?J7dE5*0hXy_uq#em@#)=N_t*?nQQglwIi>)<+}d& zPaier{`;oh)34XH*Y}8yK)b`k!Xu)(fA5;`$f$_0`!ZAJO`r5wYkJz8k@t<7FfDQR z{6!gA`ISv;k3KQ*`WvqsmN+>s{{9EY59`(E`fGbfMMOr}BVG>+50Ad)rfyN)Lqmo+ zQ|Hf^IF|Vz934Ml+DvF5Ju|Po{)uPS-*wHk{U4e5*szC3JTm#7UVX0X*E2fO7U|TQ z&~&N3?!7`oM>XWmn*t+FPnk37{&*-6gD5SlsG@GwbNfg2>NDV;`$rEOIq;GA zJFn{9w^xto$VgNoJR%}Is>k^rDjL)hAvm z?%n6k*nxN6I^dSOZtvH%#x4cpZw^=(Ve??J+<1kYiJENZNKu>**zN? zn_V}%K5cPQ#PYQpHf`T=;MgCMYOeSQtH-vTn1dRURI-MDl6-lI=H^W4)p zX&--betWa)Hs-}rZ|TZ4YuE3c4zx(cUPby+v?UJQSmakg3Zu71^N1i)* z>gdAUS6|=TMB<-X;6l5XE?Kp1{kmNT4<9{w@|o1)m(Oi#a^3Fwtc6QG*V0vM)^6Oj z_rS5|pE;aT_VNpSvx+tPxCKutEcKSHS+{Y=o&!gYAKx>t_6N`6*jb#kc?)vuYrQoa zuyQ@P|M0;*X{E28ch!628t`9{|#E!CBa z#!Z`@URl??dc&R*&pz8ySlIf){%vc>;aR)H)eoo9x`M%2UNtX%>dd(*g;=GnUbkt> zlEwA!oj1v z>P5gMi2t%th1}en+=4tlmZgH~jwXJuw(q-W*i=4WSR<>nXS zp_+%uw-Am}DM~IWg@ig+T}x5n^kHx@Ccw>{o4xwAZ~oc3tN=OE(=#)((sT1ObMkWY za5( zfF@CmygZbTT9lN)+b>2l8rJUFQZe=ZmV!L^Cl5S40l!)?KeMpB`RUJmSAMy(DmObf zJry#pq-SBN4{dsLu$2FCVL?%0K`9)jVhohs&u&V4^q~h^@^Yt*964&tqmvV7FG$a; zXmss-_eu!DJ;={1EUR9+?%1&%4Ra=ppD?y1KWplU zk)z;zBtE_{Ew{891L)KrJ-#b{`|}`PSntFYH-f zlr(wzlnD>E6l6^qHUh5dRQL&L`IYsqHJi2{fA_O1USIo{AHI2H^^zv6-{IlH&0o59 z>)vP2zxvus+Zu9`=gx7=m^$I%mb{#)!$-!CgS-Ct!t~qV>Zn3`8n z-@JPJu7f8py#B`9KltfSfBmapy#MoG{`jpoUb%4c*rC1K)&O#8tjy2ONKcs$H*wmd zV_LG)CJi6)5b{rV%uUNLt6#Ea+n(buoojvPowr^)d*=B=`wwkjyK2qKC5^T9HCX6X zR+W_&7G$TTFPcBwF$Lx4Wlp*G-uUs8rp}l(KRvgsVfmUZ2cJH9?$x({@a`KIPM^SX zYo)8Hp{Ak~Jy2LwQB_%4Q3f{=i^bV9r#$*#OMcqKVZ-7lOiq}FWE1ZC$&pu^NLNfJ_nWA9HAVA=U{g3uh-y!SgLAZQ}4@500NaJuzus zYED^Q!>TR&j=uPE>)Stg=dBBvzjtkYa+!NcU3qC?VMz%9jOyC*^88FJRgz~q}TJZo_hMX(PP*f?|L{)%DJD49M(E zEZ7~B$34=Ll{RVU(9z@2ez-X~B{lBV8+RN%dG3vO-h21;m(QNWbhv5tvZlt`QjGeN zvg&%c`W40bIaz57XHA1U7c-?8C|f%bY-h^7DZv0SW`4RGgcYx?s-Z z3FG7Ap@M{=_uM~rVgj15D5IdF@rlj5kG=59TkqQ5b=sz)6(^7Fd1?c+P*qV@m|p-i ztFpGLqPUPN{y9k#9~~3llD2r-&|wcej2E$?MW6-^D>m%Hiuu*I-ub~>FP}PfeBZWp zE0?+JvCNcNu)LzOxUeWYEp`6vq)Fq)j&4a!n{xN?QIAZS?wCD4g^QKtYquSK{`?zn zqY1B^d-3VRd$+FpKa9Nxd{jr4FHDm`=n{oMLOFM#aAt5(n1Ep2tFJ37$jMBK4pZE$s7x0Mf})d&(qCS$HFxYg{>Hh>LsPTU zlhdO&uU-D|-BXA6cUg?kd7+x*Ltd4iy*1ZZp}74>Rk$AP1# z&Rw}Zb$51Z{Py7Gi)T)qIM~}`(P_Zb)i4=gA(|U&D$DZI(h>+Kt1d|p2%#{-_*7KZ zpf&d#I{xN`&u&|%XYY>>-MI3}>66F%_xH4DHLzmRw4JmWP?4sozNWk=H!T%p5PY+u zELp?{D%r4&>xsIj!Z`qoOI1~AVR{PQ zK=93~iWGtECBk+DmDk*T=+!qa-muQxnYlA}gLi5X>$ zs)p+FlDv$h*eEi7NrsrG2#ZSrA1ZIq7(1ZuoVheSef!-0x+tcvi`_P77pL7jx7x2K z>K;cd4NEVpttx}In4FXVK2TMWD&i=@W0RqGEAFGaFY}>rYFTlsk z)5X!@XLWD$4j;BGGN-&Gzc4o?IVO_er*rty2=L*YoRUVEz7D+f_T?LAH3@82FQJ6) zuxZ0i$F1A9{;clVZ`!cYg%^>XotK}Jo=DcOrXrUokc7r2q-N%qH#QqO559Ef%9T## zPB$@cw~Mse@>*k5lfdOyb&s-Jx5+m+HJg^*x#GvHq}cF~o7GimBEB>{K0YnIu(Sat z&?B#%`?O23%|qZRIr(7rjc%<(!1ZwYRpW#5wSKKza7tD|dP00e(9QCSG@(Ei7MGBo zU07bHZs|Pw)+Z-Jclbi%D{e{%@bTTbWApYc(D*c$mz?auDj`O{;u2YJp+@Z4x1gfZMG-c$_6NW?pxO5QZO{>aQTQCTY*@c> z-O8;Q)w!8*pn}r!91%|v9-EMvQBYjfWN1Hr?M=xJFDIYy@}$(n#By}t=CR#=gT38) zo5Htg_s+HJH>_GKt1Hir2@k$mR+`1*3B%$N)1hxw)|1e~zN*YP@PX2@ERjG8t3gI~K~Yt$zWwOXS^Bn} zjI`qXnC$r6qTpRSU7dE=+o21h?`>GW*=5tF&FfZ(4%MYchAMBC6=w;!QY;~;sIa=x z*mh{>bGh9PzA`>3GER}6z~AMtd&d^w|E%wAuy?axyNg<(+*gjnIOJw|Ss|Y*3deDn zm0MH}3-Z8?Im4!HT)g-|E`!hBvvvE9&6NGW>w6n17yC7?>uK%B%QB*Z6(NJaZHK-G z&)Mlq*9OP#e)H!aA3s`rul(x#-Kq|83!SW0y{xI=J%S%Kqhp0|N&K90vY4*wWp*@5sxi-g@W# z3zt5*apT(XP^0dTfBVbi)r*JwY5nei=;+wD|IlIh-cFyn0Cn!h=Wk_v_;hjl(|6#K z^Bnl|U~3zci2>+?@4S2d-iH(y8~}IeYPw%hxU& zRDb$E(`OD2_z>Lg?%sn(PQ3K$yJydRcxCX~$7=K42RB~px7}>B?Ay10;K(bly#D@~ zkFI`x{o{JgL8<@18k#@$%&}RbBT7;jHUFG~fkn zoe@XDz`>uz0 zCJxe`Bd6Yb`|a1?JbmW$#cLmE`zFw_A08AsLqmn}!0YEex-mFBVI96|>6^UyGFEWa zz{-Btfj@-`v+D7P;bf)!d5J7 zupB&g{N+<`9IWsAa{9_kFC9O&>e%9uqsNaOJ$mfe(PKwf9sTLp(IdwX_a8kvaOlVz zhmX>ZcG4UM`UmxfJW*(JIz)U;d;js1Z|zgP^}BncpABBW^wEbOT{wO2(%IAJ&YnB> z;rY`SKKkI|)z{yBno3Fj`#e-aNn##&**ot9&tEet2%q^)cEh)~g9BkI+2*k>y!Wy{hs$rNahItJ- zTv17JQE3Sjz9Oh|w*N)NRb^%6Wu>JRrG@$V#U%hNEGit->eGcnkutGRbLi!Lnu-c2 zi+}-UX?Z2l6w9kBtE!+L*45P4)-*QOL4T{MhB8=PT~-CHa8R#F6$yp%i1@;`w?94G z*HltSD|}j9T3kjedssRMWDCoP!tPzzn50csoZI6~z>hjsPUgE|d(ia@4} zNG$HX`sLUwx~fvx_=<_*irJT=3(TP!T3dZ1NO{ccHnrKUvcoZD(O%2VheFH6-gAI*| z0(Css<8YG(19D(>duoN z94=H!rGxc#Ng{zrjwMXbE3MV$n80tg`RkLH!usayBG{GRn+pZ@LX55K+kQX3TIic&a}VJCnY z8%i&X&ArFo`}o6?owbQku@Rxt!N%%1E?+`Cycv0=^}2Sr4c{C5=7*vRWOHE#A8{eCHqk z^w)>W&yg(m*MGP(ee2e>>z{vq>-Ola!Ot$ed7!1HxB!Oaq~z#e*!Bp^W#Kk075zj9-I_6vePa`V#*@4tHN(82C@6YLel zsRm7-cp{4P;R=XUN(Sr8qj@}8M09*YT24W=mMEF$F5jBC^Tk&W?oHkt{PY5m?|Ut9 z=;*XC7C_5~FQuZaAU``bF)~OpSW_OugJcnt04=GsT4ULJn9HNw86%s)*8)5gF&aRD=E%{b`lj9 zBpWO*Pv>zJ!4WYqQ~=-7f9y59zsb8_e*M*#cSf&&{_zKIojlRsWijiZ-$1g5-(S^G zQdj`lG$ukWAFM1(=5WLz;ZgBvc_r0N=H4SG-@iOO{l(W`fAz)8$c<~4&c1!}_`&uT z12H#|r~#liR6svWONj}W%Lc2<5;<&9aCj_O2&8+%-ea$S@agTDFTVQvYs~-lXCIz< z3;3NFU#-@|#$?iK8fu|iK)8<#CC^`y#N|qYB4ZL^<$xu<8%qA=o8z-ze)Zcgr*GdL zymd7l1-_V>7`^`KM{p`0+}jBiOQ+M~6&k>O%gggKQ2# z3F7%X7q3sYIC0V>bssdiOQBB-@B_g+#jO4bYC^%F9Av zLrf^%U}qUD0vq`|93!HX(GFWs!U(Y>GyLas*-n=aizHD(=Iv8MfdVE}Xh!XfI_(D%*cuaC;W>HO( zxeJjSSBEZIa^!vtnS$lCg>v4rbGO6xE!&7UkD}~0I&(tO(=)-rqr<=fDoe9CT%J5U z3LLDorb*K=aO%S6*AK?J`3B3~{lc2}zO9XI7JKa4wPOn$GMnMk*|5=Dk&vE|nu7hS z7_2By=CgT0k&*GKc||pix{hOST^c+Xz zgC9n@`nxe=s?&1P(re;9oISmEZnfKN4`&wKdG=0@>o#m$vszM7m>!Npw74h@g(#H~ z(Ky5qBBbkj_4aw0m%D3JZFy8qT5eg4i?f&e?roIaD)Ip6!p_lk(?;$X%bf_XU82|?KcsxC{}LM7SAmk zoVTtD*;|qvi9J|SoQn)o*!+o4w5U#HI(q9tkCT&7sgMe!e3`&w=T67%+n^oN?7k(c z`Fi`U(6K%2Hgp^*Ned5>b!=Jjw_t0>irbc_2qv>Qkq|zbWo6rwb{MuyW)scyBOFjh zv)N!m&=(F7v^<5u-r{Ka1`${7t&R0%xhQQJn;0JxAD)1wR$V&9r0metrY@jZ)F#VQQ;iZIo^&7t z4KZ+QEYCEV6q|Z{>fLuP?8W1)0#ZF6El(iVrzUD`4dx7rLp`o8OABQckcVGxwKPl6 z^vI~Gj0?;}EGNzK%veBismCprx-fcz9t}_1>f=buep9l*FWhKZX?fNxM#H=+MJnIeu^3_rLTq%fh%QwT z1VgB;ho~T7pw!lbUP&5a!WA5bgv5$I)5~5o1aSg*8q%PZ+xiF#;`)hAwuToFkqRM0 zVCz(?AP|w^a$bOdJjt`4I}JkvuZc9+hMkXz2of;3wQUxQo=jst1^{$c4X$-$7W2_C zz4^1r^$YmOa49d4Rf%g;EZ)@G0`g=62Ga%+@uDRO8UreHoQOu_MG6t`JgHBs0P&+TlDN-59JAB`5Bt#LhRj8H1L ze*R@`t*y<`1ad8Dj0~1={OFaP?X9{9(zuQ^Mu$jwbb19M#SFGa+dz;^1q{C;Y#!79 zw@;ZMz&4QC)@VbI03N%O*qlgd% zHz1&}9jp92?N=ll{3>Ao|KZF>1k1Srez_Q@H4!MQ$QUbMbp4;=ge&DdKOc-^G5$xK zRdY|s1b?36&r_QZ4VLl)d`hsGElC)LHus1Ej16%0+=A`z|BYo^*f3!E`Q#x6wSx>q zn_K)9YmQol>wljtc{mKV2J1izT~zS>yffRua^h`h0HggnErLhGa{RiEKcme@geimp zo|$_Q*+y2+*86{rwwkPZSg?#A;GNMyRz1^(N28w1Q9nQ1ucOeY)pM(U-Y`*0DVOe* z+K%wr46oyzcO41mvl=104$pk-(K$6Db zn_#oOPkRvQ;Di#BBz0!hzW>#YfLE|9#I7RduC1f3t)m@3B%-#X*Rl5-fbHL_X{vzO zoE?{#5R(v}6cdvimjHH~6ayZc7?+R~9UTXMJgsMGZ)09eAmOpSPg>h_C6NJy$M!C3 zRRuO4+q>LdUlv7pZ10nv-p=}55#h1DPg^SzFvrckPrEB(K!f(Z%RSvH8;`|oEjAvD zrarTc$M!z$Y)}v$yB`kyzMkGSz0XWpgvY*p_T1$GJliTDHL(egEh@;13^&>uy3z=b zEzF4%dgqeZ1r+QzhzO5usLl`eNC6sZ7IhR7j;hfWi`~ObXn5M!Y~!&VO%Z{vGK;N6 zCn8L?B8tUw6YEixc3%zQX2Bvc+m+u!I_a`8S*ctY=qBhw5QQao@cKm zid+XP1%d7y6~4yQ5@hQ@$!B=5+ertlHioH`@%-Fbdr3o!$c6zH;7->7!$hthhe!nh zu1qqiXGVbyK*3{qG8%scP{_Cpce=sWgTw|P6Mz=Nr00X>faA>G@j9M|p9gjJrI$G#5q^d=Z>Hs*O|UMXhLJv}N( zi}D4GLc|Gh_ozUNIfU#)mosb5%*#cbKo6giUmKlBV-Uu3cQ4r2+helv!`-$<0gLY8 zipJiSaDwh&LlFtR8_eKGm;l3wte{XN6tB$SQ0*q;o+RIzqe=qf0M^~AYozPg zSgfs4F61yhos!YG&jz`kKuQI8KIho|K+h!Tq%n99EOy{&|3LqM)4;R-0c4-7I=p;v zU*A43+rM=8?eE#w*WKGg{*$`IJzc#6jsxES?#Kb7rnWRcryw~E&d8MX#KiREl+=_& z_$E^m(~{EQ3`>R$oYudzzqu%pM|kYOlg_=S%Gf}{V+WQ^`qBs@#||tXY^;taJa*to z|3Gh3fsF9jfv26dq6$o7;Er$jM4(SsK(=}Cv1-Jz51;o=sCMjXDMZtj#cWKL^ zf&Rk{;7*UFYys1i*GBr-S4h|uPXKns-v_@%S2DR4^O+1cK|dTBd*jKqRLlWORbh<1 zHZfKzVg-1zx=9C}HZfMhXZv_C57-(A&z;8}@^Pi>fzfW0QKdYt?;d6+0cf*vP>Fy| zcMl|8w%ZVde3qXp-Hhu_f-o=Pv3y+vnhxVS_(g}{eg1XiI^^g3ey+Z?xbCoVR56$7 zn_`Uv4H94;Zuq09-?fl{oA}u$PRGxsX@!$$QLbA9>dSwli=X7Y%pRD)7RCj z3N7t678!~vZ}TEmOcLb~Rou`3E>`}a7k(uO18__@0goc@eoasE>V8}wor zwvW3@CQuG01Lf~ASOvim^H}~KyR(2}P5+RH3?wI`Y(Sg1f!sy>c zY=Z9^eexy;%XZyQ3CldTzg71sQ7v_R`Bq=h9rGTstm9+ zn~XFg&9KV20Gol?)Ql!X2+<5Q{VKyFMC-wj0D~}1PcuxB=tKNZN{Ee5h>l52h)765 z^nXfHVnQsMVv`ae?8YV}#>FMZMMp=(MMX!!pb!@m6HAMokB-MD(iR;PO?9k_rXFX) z5Rs7@O0A)mgOd{(`1{B|Br*mj_8=%DPs36osg=}%G&&+8CKhJ*ED<0U+s1Ao3+2X* z^98uM6nSmxh6KQii7(%nm>Li;<;JPGccIeF2j83+ADb8-86Ll1My;miUb|)2j{M=#@f3t0{6CtQ){%)tULT${X1@L2Yp2hhBv$W`eqvp|Ib&2_{QSE0)<_W=mSk6M3>T0AqlSiu;t6Kw=;Vpr>sK(( z4bL8@sJPoh*CPmK%IMHo)-D#W$2xK`5Dm*MW4F$b5qn05PZ2!P<&n`=xjf<3@$pY& z6xBCmJwevAZsPXnz7T%u#o;L}88Gnt@N^>?ka_9mNEJbB9Jzk;@+Vh6zdd>*k)i~b zZ%-Bi@tJD;7VXw!c+qZ+Ton?`QtQZdDZx~ak9@+yhvyw=UN}23IzB!+Iyv@k3V~8j z-?_j9{sRBpjMX}99lCwDpDfU+JJY>nx@Yg+F$4Dp^)yA%`wk5tnRlQq%a?%Eo;Z<( zTZR1~B<+2_cAd^I8Q@zii zmu>ES-hs5xg*F)JkeEo4I&n#BTiyPcWOwN;owiGudtk<+wSA9_QIf$3I}|KYh-iee ze7`k0Av!KDGBP#>!Jx5G@$s=SQBko`F;Vfc;SmWD(Xmk=uCTD+$k6c6u&}6z@Ri|@ zB0?i0B0`msp|sFv;bAZ65?}el;?h0IQ+v~SJMs6Cy^Fh#kH4QQp-Ybdf3i-yJ-pmK zz5VI_EH^+bCbk)n<*L!tl0{tdHd$KT2wi#>=#5AY>u6Jvl?w0aZo=Bkdzd;}j7X=o zm=7zlGV{BdR4Oy#N)a`^8~2x!4Ei)em)VA91dFz`82ZTOU9xXb=_Lfepxe~k*wkz^ zwKZ-5{J)bs?os0aPzr_rj{IKm{J)bUQ6(WND$nD4-3(W^1P;| zdZi-F3+R8@T%k1}S)b;oZZa?^D#W0v+61sCVWuV>a|QO=a*56o3&^F_19aKt+ij_uc_C2 zQdE(_5Dv7Tw$(S9f*jRNWpxdDLS9R|)Qvhi8PQYQ)a*epqcw))HLF%^D$$xVDauz@ zuW=!m41J@@o3?e8RNY**0S(I``ld=UV!TeBMerOO)f)cR9e%kwW7AHGir2z8i$zsx z>zcwH9Ngf6u49pO{wwAod=kaJ>XlOyGx=yXPRJjtUxUSYJd*Cl@t8GI(1p@FbiMU)Y z)LY`obn6V3FyQ`>*iBKpv*GPdg~ya(M?m5WatOUI?hHxG$;`^l%W)(fI^}1l>>$H> zloe%e$A@RRnZFPwRFZnA4NMX~v-!oZCrC2s?%vx?>wePJ-P?_9XIl5Oz1=;ldwzsc zV(RMa?k4wj z=#&^(;c<9^2%{sTA|j&T>x!a9J&MMe7aJWOi_f&^j#V+#V|Q0q4|k_+`wi6%+ImkXN zG*THwR>?0RCK&57zda5f4rQ=XAy4$is?2WX$X?1 zBuQRmIX5X8VzQy;gG0s4Kt>>6qLi-#{XKF z+}%8UJz-;{mV9M&F%(y7LBw%GfE(A#)pr}v|6;G?$sJM0!(QYs-$hYO37@|jU{Czz zbm2}LQ3kO^9)Mh;@iMXeiaYXA09*@KEq^)1QPRbDYQk0u4Kx9Yo*fIuhomjwTGuUi`$KtX5$?{9s zJTHQ_B_xnfo)Dz)s-rSr*nY<%e+8E>#6*Hy4ig5E-SdMe30ZI=IxB$53G{VbOF$3;<%nC0cHRs= zgU#a!2rpjR7AoLuBEvd{;0wO-;aN!FFXZ^M09yb7b|rq+;>VFVd~oP(v@DWx3glxa zF%>U%9k5+kT6-+pEGu>Yh){cya)M+Ra1(?y;8TOqsA)8)Q3*hWtZRg@L(2UDo_d4X zU^Ll;UnBz4j5o;@j>jk)LE_AejtY;6h>Hk|j){zliI2gV8W)|K5SyA7pPZ7MnvtB5 znwF51nx2}Ho*EmUn39&1n3_pRsOM}v-*aais_Urb!2H|GxI#<1Q zYjR?2>_Hzvczx>T*m;7m{L%=7l+DzI>Kf94@JKgoy*V`gfiroF z-NU1MsqNJA+fy@#F!Lw9bHl?14s@J{wIfsSbq|f5cP6iu{psjfJhhElim{H2lCyIm ze#CnF^KXnJUDVixHO-wZ>E1@XYK&Fy!9U3cOGFfznKRW+EM@DX6zk2QJ&0*^$fSaer&d2zY zm$Vdcess1OvsrAK92u%tNMu2QnEJQYiPPb5*Y2~9UGS%<{nNK@UO7)Y|2&zpr}ZakEiYw%d+flLBlVr*=#w<9ZCWM~T}l#l&LXH{l&D`9PjRt}V5oh*9KeRLv2xAR-4ZmKvK>$uhB6L@4l4q*+^2-&|%B zKaw>17(ywT26G}N{v@@fxskJuygZRXpU$sWSCC_7XK7m26KxgQ~e2 z^*f5IiNv+&jXE_uyqnZz8wq%b!H{Q9C?!p=&qlWk8Cv8d>Jc{A7lZqMb!|}B*JKno zG#78ADElf+D~I&GtFghzMBl%6K>lJi!Xs3S*J zpsln6^rA%DQ0KIcvbW!gi7ezAnpF+8wTSGj!AMUM&FVr#&1}IVG-%s{F_*;%ZG8iK z*B&=FM*^=km%D7=Y!}hoSPA%tIp(TH1ZQfPtRP$O8@m;;ojEovgF zd>?BuXmF%5+ALZU&gMwyq}pJPA&XZ;Y67V>ZRF5;mf}I)W?*JoG_D?dM#I6D&Leb^ zo{_N=XWt`Hd`d!cMzsAeWC97V021Cx{H(=~BkZoQ(F|-HScDnc_VLJJSX&m4zGAx= z=s!NNZQz?u6v*l9Mir+n6h$I`y2&SPPj8E^+uYOBW$5a}?{$mLV?PpK6<@R0M9UOLS-;Nv= zG(X@i!)W^=i#(bLi{ITtb& zrsMDB;e~)d*FC=Eg)Rn31KEhq+T*zk2#;7w4kwTUTEKb2=CPQBN&>k8FU<*%ix6*8qCS zAJXC`>|~nY88ZOAE{LQIzKAar3nIuG{&h!)ATZEdz~!*kLNpEL$X&>`w-07W90-wY z4i02-gc7k#0!fhC9K`YGGdL^;hYM(raJJuS0?iBx6s;vQ@mKisk%B^7v!0Coe*}Cc zmoE@N^5L%oO-bqANcF&yKvHIl$SYgqNdtvD?6z*-La6HBWI`^rcKupU4hv68iKPrW zMW0d)!itiLiWl)kFio_z8rrn228+?y z4oM67X}bD)gmdG+%1~ckjtpyy`-`BZC7Za00$R^4`1O+xrGy&HsG&m=3?YO)Hn$9e6`)YhiQFayV2lWIT4|m~RwB}?kzZ|2PfMkxj+JJh z3P^TdUT$_)eqK&SVSWz&7v$!qXJ_W;=jLZ;WaeaL=j3Fkrln=2rKV?OrKf_>Qqoe> zQpn-54KRW4ZZ${G(WkE(xK46wFOx{f)Z3{O-r1e_S7HTc^L->u+ zaqHb?DtK^g)OyDR;K#j4yliAU6E=LnN>Tlj_j<{gRa2v5H!q(5;Oqy)DD=mk+3~TF z>2&AQlVf8O!@(4lG;E!?e)_$$@18LL{2}|=FeUwLY$Ac+zIVquH90vtGGZ;n2tP1C z9i1GS9?RT6W1Sqm`!bpqj^7=dnx4CNXZi~r5FXW8t(0YU<`sONPe2i@tCz1{`E>A@ zFF^lAWt}>6d1~bB=oIAP>2!)x-b8x!;I+@L-GCGcVt{#Y+R+1 zvjvm>*7^L@wC?g447b+~jNEW4FWb9Z1Dhc zi7SGY5)t9JKNL^ieKYyy#KhQ4!<+YK%LssKa>&{!m4f?XU;O#?@!5kB<3p%*^x?-n z6xDivcKYB1bIW;>w77f@RBCS&wsQB@TyRTCR?@p49x5zm=jco7PJ5y;u|FQor z){KRhlKWc2uBr!pz={$u-vRLjYOZ0yoUjJlq_BZm&@F!SZQ z?!GASk&&N;(%rqk>+VDDcCSjKvS?bgEgA?BNdK-wl7Ce_imGTEYAfq2YinP`&me-P zucx!Gt*4{6t8<^e(~Pu=HmwHb7#f?KjqTdHdemj;btjfnTJMrglK6XK2UWJZ`(VH6?89-6-+Q}y_oD6GwSxrYDBnTWqXAh766$!m`S$Ci2XGj5jo? z>rK8JYxSgh2Mm@hb8~ZLE^@`{5;4R>hlYB}75V!%3A@G!i4*lGn%g)S;fGzQL55s3 zr&u#m23nHQw2*ITY|@fMn9guuKMK}qs06c#P{%yGrBPj5TUA@%oJS<`e~U1hGfEq4 zQZ(Aq%4QQ-frl1m%34&gc&e@-wya0B+7_x_qw~k-rFcVQxdXCKpA)_1kJUzcfmD?YA8fk`hnhJ ztfshzW>XH8ZZs*;uPFYr%)T48)}+RgA5@eB%%bdB){+PJ=EFXJJ8p6#MIl~(PG$(>LDmMqtUkX zAU6a_Mg#7|#!DMmvdQ}WEBl`h;MY%`2m1OA`%xIt+-?)!ANL+2<$e10(e~Xz<;H#c zdJi7j-+!Q&6hS=DduV^(0K!`EdEWtu{$NRceE`|l+t=NSR-r ziRtczWr-Nkm$BU#gpGK=U?Y22fewU?Z1eE(^!6l@%aWbTP8SD&EN|bs)tRu79gdDp zdt7bU4xS$FfLV?Riz54F(JnAHJV+iSj}IW2VM$>LHq)RYF+4UBT|D#FI1}bV+x}DvI1+y^Z#RF! zsOES3I(c$oK@DLE*8~5FOhWftZ(}14L4jPJ)QNHq<^^(OZUBDFRdV>-R<0#%#2+dm z#w5<41^*xhht5+sZf;`D0N6CQ68pYYR<1zmnCYA)a#xPj| z2`?B-KoG)!E+v)3@W?v~=1Uy5$#}dlcZVPbZzaL@iD2_Y$e4-{VCWwmBlzO=_7SmS zkz5kxj{A>-!-7P7u{@ZdyGIGdlzS8phH$B9|8VtaT05r6jYru|bd2 zP?gSHQ(jYvTwP=?SJl_l*H8V8K>tEoz$jM?+J+zPVA4GGWbX_z-E$j~h`TN8O-C^`v1H zQd;Y(n$)!#wE^`i8&Q)A&N-s%WF#ji;cs$ELPAP%d`5g^d`w(?bOh|uQDHGix(bG! zA~Z6D7D5aCE;uwaOb&ZqNC-TwK|!)0%Jqc~z`9zR9sw?Og6`I zL`*7SB+Eg031QGTABN`UWasAOrZVszA6tiS-@ZPwANQYWMkZEH&?cXa5#43^-Ps3i z_`8(%+5J1vMX0Cm!!Al2|H(T1Q4B>{$M4*onaKsfpShQAOx(Ty_2l)D=_o`F43ED} zQL4{}5FS8Lf2p`_y>ox=?!@TV2uH9^4OCV^PoYu&+Bh^Z*xTOn)|7P=x<;vW>~e_d zwso`!8v6IACud&L)|)>c|LQ13jh-fw)xrl8_f?LoclM4?y#e%xid(}YSFDqtXA}6G zp}9-4Eq2j^Ho*bGQn)yTt;Q9FBG3&(Lx#`iFb3_Vy-bSEft`AL( zPg!qU&k>zu>G0I}Sw6LuTIin~yE`#9F>Hz#5=cAD^9QZktBZDCnb$oc1bVa{>Z#IK~ zADo}&3sHIy=?g6i??xOF=+bkY!-F&{=Ihqzszgz(~vzA+1_0V@a3FiN3&pV zSuWZ)kc{?+ru}^iKVt{{?f)K3(YfNIy4uRhy7DS@Wocz;ZFyNkeI-hVK{O~sojH^= zt*NQyQCqFKz7k3Hbxlns5GoXlMigCx5ZJ6z*EfSWLB;SMsgM}ngt}vm zO=`7PZP3I0tkRPzYHE`O^r~((wOjg7&I#E7W@9^i);evw+0YIFLkp9I384?DOKUbD zHLJB9F;p!Ei`IymwKUU`)`U_fAnG;1>!i%NzE zITBXJ@Yv|caAia!GRTx6N<|2K!a=CK25l7nUYSfvlhP#51X4oLK9D0^smDSd3(1}= zynsg%kyt7b1rS@+a)1{+kofDu_J*efUI>W%NT_3N#e1X~mUMb;M;`7k#F7(gRwR!JTw(T^lplh>YFMyN3}NV5YtP2 zU!&F~Nu;4QjcxH1rO#hSwr`Eb%*1z0EXQgLIlzDDjy&T^#5fR3=l2r5rWD^R;asO} zfn?Rn1;V`8)Tl}ckI!#tY#|5Kb5dCTsj+-3A?Y%mx-2p#woGNofbp)zp3qW}Ue$~Y z=w?kDiDP?`sc$xv6Epcd+kjGdFlp&qs&-)H=S0q3@Ygr#%s3F#xi+V5jzODm59(OR z);8;LdNega766$tcLR7aMXSx&!E97%Y^sE_rcv)hU_I51Dv58VT3bL4;AdVM(y<55 z88?cmZ!pRU9Y*PNg{uL)7^6cv4y81xtMD+-YHT`td`k;ii{;Wr1Mv_pZLZd|aRL0D zbA!eJg->8;sBt7wCvBvwU53t9BG)Y!wit^DjRtoZY6y)c>}@MT`=U>qvE7fV>gp;a z6z!3g5<)f&J=qr6w=B<1XA=qTuYPWPZqm(0R z_(SDu(l%=~4M=R)BS48%bwu?=R1$=z$BdG28fY}oUdNQ2MRBm)J-T54KYBgH+JYy9`Z3vB8`|9_R}Al!Dt$5b@~RVDHeTwW2Z?| z)6|@njAB+P$?%h{Or*vBkA(QB6cR&;vpFguHaY^y?9rjh(1@_m2pr0xAxgw`$&|st za+;hbTb9a1GD6b6FG$*TkE@%ziwhxXUoTG&PY*|AZBfh4TX(M^f1NybK-8ulI+0uM zo~}gPrUfm9NrS>=xWCAaRs_ivC{swH0+!R_5wHo8_J|2f6$0&B`23U#MQ}J=b`+B% zN7-W{@BevA7?Y10$U?Rt8aJd;v6!L)gL%Q&Ow?cK@<6^qA>(nw`4q(#x$oGuhfwrF zpp+-_bocNQh{?&f=q_Y%Rx(4`atA`8N`cUK&rTO6Q|?DmJSL57^&l~y!uQ6|`BI`z zJlqa{1Vb!Bumj+|m0aI7D^_e3F+<_-k`pqT_fxVs{{G%PF(a7h(T^dDGdPkBgrH?2 z4#U&ihtClN!q_j^K)RQ5{R0?60hb%LhY&QM%Mu9J5Q26N4rEKXVliLHUXOvF6L-sk zr!s&m5OCP6KwFd%m&2y7B}6LWGlVi0i^p;&;a1OFHvxE&D-wCx?Ur(dMA%)jm(oQ$ z2<+|%7HiiIe;(g|1%cgV;}knXxpKJlZ$i-aa*ooO5VT{kK!$bjRB}Y{_$h=zq^oVQq96wXE)k1}ZF|WtS|C~n z@MT$IIO%6`cY-{6Hx(73ATs^36H+N{dnSNgaF1?;|q5HNwl?aUU&#>xy_GBJBe~!X?gep zgg~rDW-$Kjw9KPmISNLQ%AyGKpy|HSlh3651L}}yQRxpgaKHqb2|EV2sDmhu5Ia;J zs;)qlQ(E0reM6{H5)7xcOes@}aW=|j3KYswDC9~RY_SSi5Dq_ym@iez6k=Fsr6Msd z1#CWz|5!-JuI1a@@d64G4}?0KuYeAp3RLuU)H9I)w6}{|W|me(;k7)9swvFN$xSCw zY0Ex|8AOYG5>&1;tKx`ni+gVBtJAo(5H$G37jyR>d@=Q!O^iNu@3$>j=7;I84Bth$ zhVfpk_0sEB>s=dg-`LpQ`zS#%K1X~6OXAi8Ka%}oRGr`+GPBq@T^Gb*H z{zqgKiz`G(mZ0t0m;FQna{j!n!Q+p}@Qip1gJnIbI9@6*o>kB^LwjgH(0 z9+fvcI}~BJam(R}>5q97D?JG{3m8uc*Mz24xRtjoja!? z*xVW&8HXr8cIS?U#I%gv>mqMJ`Z*deoI}~hEAha3;``3c+qc-b^WCfWADp46o|)-6 z6gHij8!o{pOPSW`nMzTtlsZC zdiVCgG*7Z(k(Y(voEMgOn>qe5fg-n7_C9=JnI{mdUnJ4)>|HiBsVw-eD3l~H>&^JE zi0^WNl!%J3#D(`1RdX6>4K(8)4ERb8t)Zb>SEC~8ug<7bS63i%psKo|E=Vqruatiw zlnG@#F<-*x2|=2CzECO>3ix87R0wgD&l19H!r}3Gd=8hx<#GbKH11=bA4TUdZIMb0 z3dax(^MqN!01s*nAk@kvEm3tbpn`?0jmQ%8(Z5 zl59|QM-U?LH6z-|qONMv7ZJPAQk+RwfNvXIu~5)xjJKmi291G)2>v8*(V7)F6n%Bg z9U_95X{5r;tx*!Sv6zIee2eOztTh`}xI!7`QByOVppx+xC$NVoe5r( zj;C)f-ze1^%ZVxcTe;p?y?M==6;Y7Mw^A-zm67O}KPq6T-L?j`7K`*PnVSeA^qc19 z+FX=@$tOWD-=ZQ^(8>*~cd2w8NCJq{=nBb!`cs+49JktT!-_ynv&j$Z@{C&zbH^W> z)T#z!5q#g07G3qWm8;ig8Cpv>P|hlK8_B!)(OIW5`O{Xf*pBd*EF5#xA9N^14W-G9 zb)ic1hQzIo9=WJy4bB(QYG@$p%TEk*vq5C%5LjU{*E?d4|K#N9<(0a9^X6?i8hswD zmC(lO8*!`{+aRuNL80IX@(#RFXsW5I(V%Z_a0k|t?KOx_*?>Eb%33;$p$)gdyz>NK zCDqzYSl*Jb%}{R()h$G+DoCV;++BoVV>|IREQDYc>6uE33QLTGNhT@MpY*gW$;l9t z4H<&Ec6srB#M8f|NKZ~k{Dod2F@JZ^Xza9f==Yjo@jiHv1hudRzVCsdy1)B{d3!%; zS1?=W?&>^MwzI?~>8jejOf z2TI%_|DdI#%h;-_G1qEZTXiVyYu49R)x&O9twM~wC`b{c5X(h!zEmU?@C96Pus}cv zmCqLmBtkwH`Xk6$41E*y%Hauwe6|1|{V6(^Wg}M>g*^d@(MGN$yaB#kMe39uCMlPpNYWChvYov)IG=oVlJBcxJD00;?=cOc|S zoLW!hQWi_hB%N)K;IUkG?PhQTX@QSdLCoU84vxJd3gL?Aj`mEEe}osI0>?N6h=g*z z*)oK{f?m17+(6_Z&=y%7DTF6aC67c6{zQ-Ag}UNf5gmirL3@BllPyvVX^{UeE}uiD z^R1F2by&55=BV^jVwr?UsU`u$KZWqcdseJmy}~<0fDmqs7sB_5;QFm}6A6Swy#Ll; zAr-A%y>10dA&{)4wnuTqo6-EEHzJW&uUWrtEo5zm4KYp_D&jF2T&9RcY_Q+TxnlPf zcB{69vO*C^!jy9YiQ@T_l*jX3xpot6PY7SK8SCZ`Q9Hu865@pT(IJc@-LiVk3cE0&f{wsuMD6^GRE+V&2uPt&x5UG4%T|FjP`(wq zLkNjd!BAe|TnV1pK`xPqHsIO*$-!}lga4ZK8`g3W_(FUFY!*`>k+b+@N$iy(tQ_8e zbC^F?~ih*?Vn)e00utbhT!x(X#8QL3_nRIaS8 z# zPFn9@PXhj*nh>J!;OqPM<{nJK2vm0Wi#y{JcfS73Kg^{A_q} z$M#BKAdva)$(Rqu?_Z9>)qKkE?4658k00INyT1w;{~Dpvy+1uQen@XBgCH09K0+kk z>YjX8L~WoR8Yd@4ZcN`jDa6#4UYfr1h6EdC>GhfWuMzS6hojRIw;Q?C`1Lp5c=NS` zk!X69Ic*)E`f|T75EcSHo|?IO^5y;mtz>1El5XFbA!gX`a&Aw}S}(o*rWK{xr)KXA zhXVNj&h%TO z>xX*>AN}UpvrpkgVr$mD|M-eAKD-$@c(8kT{P26ks_*R|>_3enmt}JO@L@S@;cNEB zy$8DplE2+Q@+SwJxepH0(Cn)K5UB6*?(z0@j13GL4-dC&$l;s^k5|peP1-oxJ5M}5 zy3PN#?(lGt?C-uVd-(8HH1<7IS9`m-h22L@q>awp-oqTE=)XM=Q;lgBzVZlo9vm>e ze(x!XIDOr8_~=d&Qc)Bj&w0FOH)!N2edj5PEl)`N>%!vp*7o+j`@08Erzqq|#@+qv zZmDlDC+;k*VKcRW$)G1^G8l*NqiDLE-4{i2{j{zScCiLPoLM(Q^GdcKpQ1>=N0wO zD=8W48%QYWDM?&VI;SLoe|66(>FXI7NN8*8Ya6L(D@*8IATb*(#M5RD7mN*!Er}N; zU;tMY3sLLr1yWM>y~0_v(bF^2ChJ7&0)A&?Y-~m$iLWn}&s%3eERkp>w!n2ULOxmx zKYJbC+*WUbh48sP!`KlJd*E)^~FO3NW|h$z=-a{i2* zDp<#)(vnnlvJPE~QLYCmg_7z5O$iCNCaCx27gb@SKrZGR4R%36WnErzyfdt z9meIAy2_>$m$3*8=Jkb=f`WK}0^a!e2JkCo4V`SFQ1s<)<4D3w|5i!|X<4LuQLqpu z=@0%zIc!LCkRr?1v3aOwBMUJqx7?rPMPEf1=ck>B&Q4`#al@7;o{96sk z3lsnwU(p0t7ahl!R7Qy7!`I1B5I_VES-pIKr?bjPko@&2M6qdDh~L>ksHFfb`vsN6 z47}Dwg*7QT_}Qo;?}NPWa`PpmrNo>I@-v7F_}ZnQAVGvILq!!eC15Dhl*qS1g+(z0 zmh-iLaejh|l(e+$S#?!2b`H1&a8!n!S8734hN9Z3Q_3nTM$BArz2Ja)ZdQ>oZt?5r zf zs&9fL{N+g-M=$UR+*9UG0?0X@2>DqMD}q zDUCB4>RL)T_NBbCjR8-BVTDdIk~%;nb_FdJJ~w|FoAXGYDCkJ5T{w0nGnbCwXv(I1&w-~`n4T^ z*%GEfcIGB#CV+c;k{!)A^3ISLb2GQr*F2+nPDh6zJ^pQHLD3dr{;z6UY6yLrXr0nh!1-j|DV9zKYQ|c}$Q(5>HP+F$vN0g5>a`u!4Bx^P zHG6A)?iil#D{z>ZhzLkn>7F;UwzHJRS3jI~G&C`_)i{m@|5oxaH`P98WMX_CQ{&AU zM`Kbi@Y6X514|QQiU8#Yb2B3oORAF?e*2@6tsxvQe~O=SGNO_aysxxe%#1B) z*49qKqQWOnQ_U&-n?V^K{8!u}bOlc6SXx;TAi--3drN&{30_kjtn>v@virT5thl5K zASuKQzZP>e0$3dDP)c4-NmfQ$m1=5B>Z4!FIvd-P^31Posg|a4*eOaOVrZ^Ug@=u! z=WWd`L~-6z^qsMx-UWTE z104l$rom3wn__Q)WvFjxWM*cp@&7EtUwu>g@~@#&)6|U$?efYl5_g5V_HocUwv{6G z`fXYJU}^K{U};%Gw$40l3hF7_LqEf8b2) zG)6Lkk;g*58EZN%4Jlg4G{LXM@@6vZP~w%_ZID$wPL}Z9+~++w$^#bk?d(!E`Em2X1E8?I%@^+P9X;Hz z!x4dlUl=&?E6R+a#E7moaF zV~hjeP}U#buG%`JV{rzyvnpaUhLw*v$okLXymem8rWPkGy z3C$Sw|LYIl(>5+P*j0+*ORP(af|+}JcMcD34TeaF;Hwi7ug({5Zck;gI>Q*>78KTs*x1X)vet}&aq!%m^;Z@;3GCDNf0+s?f_{I9XskF!m!4oHs9Xl>~Qsjj2agnZV zLJXl90}yBFUWmLP$YzCwGskM=`QjcQ8r~;l9GWqIkvMz5M@L-nBt$z@*ETlvM1{nK zMT9j54ZQWEtP~-zdtj=DUpMl_r zkf5;O3CXSMUyomz(v%Q9so2@m(ldAET6q=g&;sFa?+Pv^$(J z`ryQeL?}jBNa&=1NY2A*{uBQ|;;ZlnoJe_rV;`V^=J+u|qrrQnm?!pJ`G&9So0>ZN z!KT*G1YOI9dVD;NKr|E)KWzB6zGt+)YkZ`xzNfAmnwPKZJKDf72C2k0f-3)|4!^-R z;AF#hzjBY&cOtB9)9@cSQ4%vATL3^dQz1hEtt(b?Tq1mtL^}SEvKUAR9A|vV!gp{^ zVq>D?V(3ZC?1IuNLQeQOP5}SIrUtqOB-{7qtoAwLrM=NUcm519QlJTK@x)nQ zvuny)g2{*E`r5t(a;U1Z7Liq0Eh_^0CV0-DLJPAC%8iKqa&dGcpvYJB;@s>KI575* zK&yxmC-%#r7>a%cdJ?7xW#^Sz5&M;xP4?KYLJ?QZE;uEhkq=#MdzH%=qcQQaZXGw|yyEyF>F;gV#@{M$6L7uvCer7@GIs38#G{6CM(uG5L zX%K?F*=4q(X+^o@t@p|?JXA}rrKDu_=y#qJ z6ZP>~XW1%mm)F|b-o4D9mF*DTCe#fwN)DN)D*iRMk!szBdJR9wjTpoOfjS(vX! z!}?I_MSrTd@7y+(6(RiEC)#$%OO6~*ejcYLD=IE7CZ>M#`m&iK_{+saK5%%M{Oj@F zO;aV15Q$1koxjOhHjoCrHI}f{Zr!iPSFfB_6cawxJKR6U;cSkM4z-=bwTLb9&Cl%j z65NYtkl&`gfc*FI+uz;cZ0`elC$2EUH(%&~vqwux>V(za?d=`TCU=v2|E{HsxahGP z?Z2M?=Fn+52~kN0FPA7Nxdpg-xtx*~KcRS7@$2!io5sKfh@KP^(&OHqHfh#%|NCV?%@+0P}+o^_rBzFu5h*lO?b=y^hc zE+(x1u#G=_7~QVNK}u3$_*%x+pQb7WH&Iyd(iRCPlSlKK%b`h2iys&NR!m%4Mnp_X z=vc)w{%Z#Z|LyW(*+vp|%;J*b0^&cS_*lI91qon~$?#R|lkH?Ju@6sTHk>#nWI6Mw zgqSameEZjJogKY{ZIE5+;1{Ce<8cJ$FOvBDw`~_kp*?V^t*sx`sd7NC_k#6{DF1-m z3`Ak%H~0@JZ~eZ#4XJ>(UK~Ez{!2&uS@Ivz_A3bYGgx#wBoO1H(~=UCppML9!jK_~ zn2?;Dki>*$IxJZdK0p@*hAcWNHab2rIk&V5YEfVrY;Om|)(j?08$VQ}k7pyB_wW42!5DJ3o7*?VutA~G7=h#jK^XA?VS_udavRaaH!Bi5x9 z<%ui)Mo~dYniwl*Tc=>+y}WkubPpt!>9vc$0|E#*1Z5LvB$$yeb;9O`U{8KBwZ33x zPujiF(9}^QM#Ik1(1?(U7&#)va9)7eF?C0nU~3r(EhjS*6RI4sRy5CZqeMrDunAV1h@6 z9m8uEW=YZ2oFZp#36S+!lNqzaw3 zGc%`3pRu(=0~{dbrLPPfY_%m!oJ^h61f8r<2nsufYIs=*U5c@;fE>k0=j3}k_6~OJ zfBq0V=KZT3dj~saU48B7`QAq_c~ddOj=h5&yHIzyKbxD{881G&cFc>% zYxK}olu?tBkvB-Z`;5F_HQ&Jx3x2*7tSLh_rQb^t{c4@@-;;oy<~tZNyMtL<(C~|s zB_)ZOFCX&NzPIQYfgHOeVjNR^8V96O1hh)W4e4D1saism~kwdxl!>M|&Hk(4Z& zZB&zy1V~-P+1cFM+T7ZEV51-gm1~@#HHmWr3D>-!}zs*&c~6eM4>`b+;aQof}x_MGy+N=cHAMMR?T;x zOIW__(}9SCl$03l@cD#+jFgn5l$gPzj{hFs-lridvXZzZ1&3gJby+EKs40%#b>bh! zgWKM;mBE;iR&w&=83IYj#Zhw7q^_5H8j zy)L&b{{e8G*2!Cc{=S@A{<^ebc;k=d){qvcyLt$i4;7z!ZeSN#PAUJftbQso8^yqs z@}ElE&U&Vi!#|dSwTp@4RyZ?eSR9LGlh9OM*3=5r{#-qRmT%2)Z6B0BL96-hjwTRi)K`{uw4z43s-m&CbiAvh zv#qM5v%Rwuq^-Tpja}Uxot;`r#m-_TCMTyuwwH}6 zZ0I|ur9sa)BO?=KY7j<-&jsnJdNh4Q$;Ragl>f0T#?Ub+k(G-2Fu)@-k&n%WGE)`+ zllg!_XA&9F%x}}OGqch&(;!@(k%b5La|{tK5GeaL)W9nlLa~Sg1B-FIOrY{Jlu?5B zfY5&cz5v<~;5N#j1Pt(GE;>isw_a&vfBn}2A3dkk@=}741W`yuWnDEA$Tc;D&+ZEh zGf39U%fQHi$_Anm1TE`)(y>)G;s;NPoOR6oi<@f+1zuGJh8&8+wfHX>8z_hUj3KaDqI6eT7#Uiq@t`8 zVNaBoqtc=PEq{(E!394lqMfHY*?TeD#s+%`)CC2g0Dq!#w1#l;RhJg=k)MT-mLjT5 zxrN1OdgxPtPD^cdtsFoU6je7pKa4uFT4c(raH|kLK(%EV!L{)Jph_K*x5X9Jq@`ye zLA2THTG=?G+9EJ(VsoJvM90-tHH7r99Kg78B2rvZREp7onovP$Y5m0&a=DI$xZFQv z0VD_&p@5L!(3JMMjrGxs&GndfWUSFA>fuWSO8x~_&w?VT%r=hR`TR%H){clr{ILkk z15i-%h6YwtQhDFPCUeNtATSqHco9m$xKQzrb{L?o-{`C60FFqpO+T@X@ zxu&|tw$2`qoevP?`+=O*jU}z04(hfpa0|QZ~poB&wlrucat== z<~J?2(lN1h^7IajhR_@ku>}ZCH$tVbYj|w(^0gZqH*axy_m2)AJw1B3cmLkq%_Y*5 zMw)(C+6O1cr>?Et*xC`;dAqr>_CEvl zq`+JkQa`Sq5F2BpAkq)017>k~2{hERQ?hdK@T(ho1}|M%T)(|_XY2NjMbec2eEysX zVGbK753hg-IwKXJbSOSoRicu#5YUnA|M>L6+RZz6w>H=3NuMtKJ}>B-WAa1f6@uw$Svh%#HC9%j zG75#Tnc4YJ-mPu!862BjxUso)XYhj&PHQgRCEq>NA(fxip2 z5dd};RoAw34~$ODlgF~ny-vpVsT1T~Dp&?OCRF6GeS^a2$!QsoSVJi@C|e5)Q27g8 z@sg_g=FYy+nT6F`*ri}HTqB+Gn$Ao6*g82uUi{zBFtURQkV09t5i7Mypd|0N&_Q8qig_WDP!Bflc z^D~$HvdZdYJso3;J*pY}p=q1|7y=QZt0;rew?M|<(=#)3L44ELc5!0n+Ul))xY0HK z%*7L}s$uBqnNrDf2?&XdVX*O9$}a%3a84>>x~a)2VE=$7c=Ooo!s^W}?D4Lz^KTU8 z92Ido`sUX5u3o-=fnl+XU?P+5SmrhI!vb+k|r>JS2(bm(|lv6ZvW44Sh@Q28kI1Z6Iy2#|X zkS7`$pBNt#0UbBcq^j%9v@L)R-P?siACTtD$6DJVgfA4@l|?`Z--Qs=cF| zFXWh$VnUoW1rc-*7ZjD()KXJArKqf~Z)6gi+OW!LFgas>TAoT?iif`Nb1I|G>7b<( znYpnsaUQ3IL=X}Xmen&jqlhGkl$e-=l%kxruC`Nhw7!O+jyw%5|L9HJqR_KCW;91f zcVFCQQiKV@lwuMhGFlo^BEkZ~Uy48&OI%(`&dAMBS584)N8Lc3&>nmi1iMokdRo_l z=H%k(6&w@C4v`fU784PbQItSfQ9$_b2oFLSPEK0J)We46Y_6+zN)s76JeW}OV5&mS z>VlHU$paeCj1+4@VNnqwB|sDrXcfXu3yVpfQkGUQ_qVojq6OLLsGK29KMNs>FM((D zOt92ky@TVDt1V8Pln@oyP!fZ@G>Y`UgnpTf@+nzq3r~9+2V>t53l()jsrXAEI{i~+ z2>5X+j+pj-u^BbAlP3XC(vXJi7~+(|h>(6ICZ(VvD{b!ULUFe6@OIHrCKRxTAqdA+ zhMv>2pkm(p1V*zcvvxFv0v1; zHnl(=1BLbVlu;rgy8d^`Z{s>}sU>#dg!2fge9Pz)6GKsv+llsP{)!~7j z#-`@3=7xbjh)c9IbzQ2zGCVlc-!eEfFf=qcI6T(ZGcr0fJhZyLwn_Z&pc>NlX_2#Q zRCFveCN3c%H6a$9M~IIw(wL|VPG+;9(u-2U6c*SA(%@0&=M_~F|J$+<*Cv2|BhOlR zMZ`j;7c#+!r6eS>*ol*^J?4w!f z8L+x=^8uAbuoZ@}7@liEZhj6i|H#@cr-XMl}9wv9qRCJQDc@c@WZs zcMUB#u-L=7A%%fO{% z!Zhb(5iMjWBd4<1D7<8)q_ENQ=ZG58X{njIk(H%=baiigT`_p1fm}fJ7?qc~sF=&j z%RuQ@MrL|SRt5{|#4y;YX!^_x)2E@vT*JV^hHB$qJUrb~L)2s8qM`Z&_+n6epjHx` z!x^X$0|SNt`wjVkrvK$uPLS#r8W&7ZF6HRX99*4hE-lW(>#+dH5$ux$vVKX&0KJAJ zGp<*F{bMoK7Unhum&jc1}SdK@L@vS5?$P zc)p`&Y;Jb$`sUVygQFwfo!jJ2Df~Mv)YH^Av8LI(`-Mlrfrn>MNKi+`@S;(L3)S_y zhIaVEYn;1#s0hD*hu^79Deg4myr!-R)!xC)FD#0V6mv!n6cLGV0X%Rlpn|g6mY$Kx zxuqL-_Kuz$@V3dF9@>_nC0j?!z#MOB55K@DELs%v7olL6l=l%?+oDR?j^2^U`IYN; z4~`xm@^)^KmZZ-n);TS>K=v+fzM^pO_vamU>Zs{5rzr471YX|Vg#|Jy4bkJF6gS#`Y5Lj?TbiljAA0a%@mX3JzX=G_yUxY&mtap z8WEE(D5>umUcY(!-aeRsvE<3sx}uV&DN^-}fw6^+qYJc|Lt^5RP)QDku2d%RzXfFw5$+SJ+E7KOgAOn&BQXSe)4zJ)*jUcZb@BEIjtL8}*Ek7XUeW(?!Bw=t0FzgD>FC7}<+Qn$ z46TNYkuUt4<`7jaeNb-F9KHO4!=v1_1cd-A5Pa`~BWx`uB`YbXpnXo)Co>){xV9XD zP8@oJfT-C|<+Q$uC8U0R0>To)jfDl_PYOwC5*M7fmg15!ijwkFKZDcavJl_ZQ&vaI z&w^?iS~~rq9Bg6*yWkZX$qJD^E(qUSO8)Ur!r(08yV1vm;YCX-sA(!FI>rY11UkhhJE^KDk~BJgw#)ntGyqg_x?B7Smk7;PZ^n^`~%}*A|qzcF>U`>Tkqoh(gx?Z|9JE6+Z*ks z$l|rOw)8Yj?EUt;cR#jUw*P=ioY5P5U%qRnw!dx}Tsio6yER0~26ujsY#X)xr`Fkn zX22sU?LW2+aAWd2$;Y2sC$+t^$l)JbB_y2F@JlPC{)qcctHyDBg!`S+^8Q=6-`;tx zZS5B1d$`{bHNSp_`<+;cbDKhhjiijKx2vnCx2LC9p!esl>--RSF3C$iY3t~`F)=pO+0`}B z)iE~G*@aULOt&pgjE`UH86O{;m>3(Im>C(In3|ZJxW&13kGSAr&7|$qayR#=$e3hQ zJ|(2kBV*%W&k~Z;nMp`bve@aM?SP||3YQC{9oa>BMFbi0#<~o5BY=LR&RKYdMaRa) z#>W608XXNNSwcc0DVKs#y#X|fr^nF~i3^_4fToYz+5@!gpp(u@W-$|4 zD8|4aMAB2iC6bcHPK77WWF`X}PLQZTfa45k`&(Zkht^Tyy`&#_IU(+X4d3+6`D(9-tCvTUH5(^GMs@PAU%SgaH{qX|%wM@wcB z88(bvBI(p06R5q(433YvsfA}w_fS(Yy!?R#Lx;bUM1mqp%pr0u?rgCM=jB`BMTn1 zu@x1R2aX}d{WDXo)p;nINoA5yQ*tt%ZxXu2Lq&=^t*DFhUq6vMwIkYePwEU$>l#{8 zsg5q5ZoVniLyIfZJq<;8QG#j%j8EioCnqqlQ>nPP@yV;V@7|K8*8HX|7qre9!6G|g z+a44W$tdn#=HA|zAG_FIR{>^Pk{c*%=^VQ8?2GTWw&epvD@dv#_4wvm*hLn_pT{*U{N`34KEN>g7kjdGYAr4rysug_bGWxLQ*R&DO;yBrKYq z$V|)3DKEvAH3u!rs$06d2QOV-Tqk@`AAR)v(E~2O&l8PE%U}9xMbMo+qpnMXO z?|dUkl!u;65Wnsno`TWd-aUNs(Z?^I?($oD)uUzdIW3(F=BN#Ha)VzP6;Dsi0SX>9 z6xdqkUAnb-@8AilnV#9f z{L%c9@|w23q4BFLw{G8i`26KZ&mZscpNb=C$vUm6qmP+@(0M=*ymm%9nxZYlEr5?I zt!(Wbnz*vOvAJ{j?Bz!vJv-pHbjD2RWI|Nsf-&yX(G`vwyu+0AT;$%sgMzx^lJaV_ z9G_jhc?Vbf(MKG0GN$9b_gAznsj6;l@49&D z@)GCHorC9}ynKH2er(+<+S>)7oUC{v1V13#- zID2^$3hmfnCo3aud4z(cWfhc^RZgAO21TF#X$2K?|Ll?VyZo#5M;&rksG26xHi#gJyLuVWKYzQi9}-#WAmQ`S0fXlg~n>tbTn=3wKY6j`7eR2&56CK;bGH`MS#%g_A4`qS;FjFoL}VPog+9TXE{ zAOwG1Tv!@zx2S-qfY?89zj7+_Y7U_m28t?Y49=RIK2JIgZEWxE_gB=^Gqj-C+PeCO zCI(4;C?qN@BCP{ALt+AYIa8JtiBd$8HUHw?XRq<1JX&FgL7~! zgYw}C5n(|^6>)gohy{yFib^Y-IjySY%|^jy5X(bf<2>Kj4~J4|cL2X71zVHgglc1f zlj0&`>WZRhC;EZtKO|(7HP5K3c_c;#MYtuUxT$Lr$)jIF@J4#v9i*a(T`CQaC6L)@ zB>=BmTwRKI&bU@Y`=u4tv{X;ICdLLt`@|)M8J^N0R~rt{S2qS1_X!d*SATk~!w1r; z!cwOZyA~o1fhm-hLzRs>B`Ctt&nq~<*+N+bE&nT$T&=IF26R7QaGitbT~)%OTG-G4 zyF&Iv7~ZdeRgqOxP|z~BHlxBfx3f?=rb5ss^1NyRcG1k2Uw!@ge?EP1du8d$*ig^K z&i2My-e&5xqn+)$>+@G;rY~I@=deIG&|q(8J2nfIyzjUP zy>m8F?uIJf%{#U1$%U))lOsdDotde^aPcT-W0bk?c(hC)c8nW5B#r&+G^w@ zd6OGWnSE1ZBcmhz1DD39MlQC3yp4DHW>ewRwd=QUtgO$?jkZ^$<)OrnH+Q3`;M(lm z+*o%rXY`ph#d(7 zSND!zYRpXt@^G?`C@SRT!jH+V>{+}u-}^4d#BfBRzpQb}rJOk}W+s}n5@_t&}p zhadm7KTwkgb?MLmKQ{;ako-K}C*OSg*X@Ct;v7~&Yl~h&&->|{=PNx8WqDcb zq}Z?kUsp$muJRWE4Vs}eTX?_MPF)kuB(A|L+ zl#$1q9U1CrsRg4Q`E8KDyQ6JzRxWR9WTdO1x-2)H4TbAqUw3=EAbdMJJlNe-U7DB9 zh>wm4^7F8_4NT4ET^YaF*-{HB6=p(AcyNF_zRkdI$NO3vYD%(L$?*_A2z0lj`Qx{< z6a6hURVCS}jQH57kN`JZT0lw$Z))fwh|3DI*^GqPu;2hUJ8OS@J2TkR-dJ9QZxf@# zgMHm>tOHZic+*3D?M>x{nJG#1sPJHaH(UHRl{Y)o+uBl9n89Wy#)Sv_dD_vU@a^UP z?$)}pg6x!JdNl6M)!sUcozA;F($`v3l9$0^(4!(l{9J6UL)e)(Z+BA-6b4cf6JjDl zyxr_*VeC}iBs!}pE64$xV@zb2kE@+^NNNgi;$lYwsGPG>7_m{|Q2Mi_MWnEKlRa$> zmBsm48SL2T5L_>f8q7@PO<(M2tuHIgPG!bLhlTh$)2IQAG+b|YTYYJMCdMHuJjl!0 zh8E0ZR}!nc7wPBdF`4HJVHv$BG$G$!uC-`l~K7M_&C8yo0ps>GHdoe>uq z9_Z<8Z6C?N_4WfjRF;o3#6^S!csWz-$Qds8_u#P=WTnvQQK13e4m3&xzMUEGX+)MJ zD=jHDA~?Xqo<@yJNyoSSZPiEvq$J}J2YESITZgBm^V%i{+H1=4GSZmwQ4kn&w6PAy z9Y>7~x7U>wX0jQ$w?I!P8(Mfu3eT=@tfK*uO_Wzf;~E^PcG2l<9<^tts{z`VEJkch zFs{McCYH_Q8FVi8)RknVvOz>066i&b0xWQzJtc+uC4q>$pGdhn1~ttgl?VGCnrg-_uHdTFw2-|6-;uudggG&WugK z40g2=lgoYhFe`a+ePayo^GxP$=O1X27D`KaYmKLr|j}P>9 zw-A$CR?OYFU%;HcIzM|AZ-f5sUrjD|ZLgR;y*79C%JfKoR|ntZmK1Q;?pLQyF3nEQ zOpgqYjZY2tBKcIn-Poe_UFSAAs(D=N?} zv80T<{irIbX?U=&3)VG<5fkq304_%E{-?vt#__?vwu%BKJtiT_!#b|Gh+AKg7?qWq zi`t6#L@2fd+gpVc7IU#FM+6}u9&|MYh3OG)HWm>Dxm?6Kl36T9Vb}Oz87th=j$##B zRKUfKJS8o&X6f!ib8@hci!Fr`l3&DSveL4P`yYI|-N_F1aVOtK78G*X=~-oSpM3eC zofRGw1U7MsRS@nXExU#H?e`D5(qN|iy|5B3f^u@XrSpG!_it`vUJ5-T==~W2va-0J zyngq$<@%zWl(>ixKQHi+(}FXzx$pk@aH65MIFl7072@meM59szGcvh<+Q6`s6=X2! zks*M7(5Mvu)GY4O*kE@(#4NU`)`rg4|A4tKZK6lSpEBEY`m z>0o8$my*f7HapbOP*a!&^A{N4>*Zi!;myqAE?yq)sHrSWPmT=>3G(%{x3KhPrgP^f zhPxXo^3q^ALU9IrOEWKgyEs13)mWaNj#Z2Ex`EHihndQqpB(CHDa}oRjR^Gj^|UoN z^G;@Q7bgZgTPyNlgCj%zeB2x?EyGw$?&4T~M?+~Y&Wjh6w;RpUEGU`Hy*4$}SzDaV zPQ)1kyj^X~%>r=V#mWA*8oV?3Hp1H(6{vwpOz!+>Pb)EijJT-KAU_wHrKuk?nLBr> zx2dWm4|WPK2Y+`IuLdVGxO2nZEmcK1X$(5ds*jtkxv765le;k1+fiSVmyU4&4Xqo^ z!rX_>;;u~gch;BWq~IEY1Mq~*Ed3K1+@(u{9WXvA47}p_S7si-U~=ashGFV*VOQ~j z@^GPAng_)vb7x@|tBP{dk&p-q@N%M=T7}SY#}oa{_-!f!=Fi{LnPzMmh%>BBTx`Kx zGJ_rwfoJSOH8T#zx7TMcwpJHrXCy_3LbuV8Vs0AAU~|{!M!N7)Pfv&q4)XSPrkYs> zFe7|T>EVmLz3ugI201Stm*lK$aIP=T zU6~rZ*w@wCP*+#RdAygKwsQN{jcc{Nq zYb#1Qckh*CE?vL10)suwKS51-Nik>TSq*b`ZEb08c4~OAx3#Md2)aVf_HJp`mBpp` zg)5W8gFUV7NX!-GbGS#9Iah8jEzVya9qR4sfV~EQmc!X?%)7d=bb0pj*yzN>^l(=_ zl9imTy~gqzkQ%zn*}OJ4+ETNTAm(@XJQ*&T)=tq+wrWX@uA+f%3K(*V1Gx;sKNqHV|ik928f$;7?BY%aS%0f^0x^@AF1L|!(&g%M^ja+~@)a$|k%z+oR;kjIIS6^O0=V2GaC zcx8Q}BG%i*#=^ofFt>mc7oWh)AGrVgMnk->i=DMOW=n29CxO8#UHatDTP=xxkp8Av zm|OT~=Wgno-ef37NjIZ1*10`R9X9_rg8qto9=Ha%SpwzK5oeG znOpd<(m9-Iz>q8R(-NXWh&N6#Gx1_&aF(aZa?DRj||eKMScn$ z-nfUeqqUitH#?QHK0A&x@@`Wni!Sg{dUqHb7A#^l?z z%Okx_r8%s4_>f+1_EbY-&m<;i<;tbrmXfUG`0yYfPgh5Zv9U*D60U5dr>z{{;uYiJ zVox(M4Ngkptj!E{HI!ts=utu5Zq5!?#>W1M$(;48qdm2SFkl#UPiK2eBV*r07H17_ zh&nh`c=7mpxY|-oO#J9coaG4wj*Bzdm^;2+Znjn?M&3z@oTW+Fs^TnWe1yNZ2Og)9 zSpfW_rSZPD>VgbbLX00&qwOh1Mn3ULoYl$x?uH`rO7!#fbho!OHuj8VaIRk->aH)! z#49n-$II2$(#XswK7q47J3y;#)Tt2MZ(95PBTPdj8H}O+MMP1ww+<&e+H(C@!8uUD@ud08M;MWS}2; z9hu@C6UXtod$+qhFEtU4w=a4F8AVV`Jg5G}R(Ek$Dm?4}FE}{HM#hoxbWYWY>US@B z?BqzAwWDWX7*GXFCWzZR7xw0LWOc32C@adVDJr0hQxriBQV0(2h(lo^Q3YiYag`H} zA2%^0@OtE>Fv1Z+0SGk`@jIZPOWH4Q?U$;mx|vDI$jL~8R}NL20;1K&xa1T_X`+%$ zSw>JnLgL~^W+LAG?mSjvgdNQu5RS-rK(GO)Xd2)A4bM^0GSEU%UPekrQdATfU&Ki8 zUtxrjWaPvolmxvVR^%d4Zvc7(fzHOk)jxl}O3^V33%j7IsxB=| za>q!D;ty^|OhH&!T~PD(XdcLWyggib%#~00^@BI2i;o4v1-qiJp{F5Y(Gn?QBR04)XJH;V~HDb~r@cgU3mGo zuWvYkuUf}C&_w}oQ*ja80RcA(3M0VVWho~u!M|?h^Wuam5bH!e&LbiN%N8zQK0_y42r-l zB&Vcj7T0x+PhZ*m_>ZstH0i0Up(um$H5qYo`(g-JiYqvEa2DFi69Xe5;se)`mz)%B zL$L!)HZlfKqx6j8y3Vo5tE)Rt|M2(E9&|<1&Z^4G%FDbNNBb}T_@|H8+Ed~^tU*|3W#g0C zv$lD)tExCBJ}Nm0d-y;M#Y)|z7H z?hgVeq^dIWifY<>$F2|@(SsfC#_GbvKwnd31!~tx8Wt(60|%LPgbWff_x#OO%O0WZwq zBu6V-cVOS+kZ6TMOm%C|1jb-z4+SzemuIK@I~!1=ki|q=F`Y1(AlH+DD?kh+*w@p8 z$4I6-Q*2xVLZjk=Im^y3u59iZU)S?@l$i`U{rUwdsuWg!6<;`UJwfZZk$Jph&* zt_;>7E5VIQb4Dg1E|HO%h5lQ*$FHq(b{_2RZr@(NGTz(XS_2Wj3?!VO#*54m6x2~L zoDdxr z90j*M6+%6*_g=2N1XjE&YCHUbfH-Gh019dvyD@%SyuJP1dmAfDR8oSSa3`yo97UH;lh`FtGthlIB-8b&gzF=icAl!}wjFn?#tdp%M=* zD>oZSI^beazLA#7phuIPohvUfF&6#1cm;>W@PUfC<<0FQ^Xr>C5B7JrH#ZihhP&JA z%K)9tM12bxe+WCIu~B;+g>3`oFFh&Fm1^TiDmKs_o9e3Ou8HNFcXoCKc2~D=ug*;m zw>QDFA)s9%MM6+-x#>ufBUBaa@9n|^>6|;&8bBdfkwkVn1T~tw$Ct?s?C))FZ7hrr zcDB@&=aWP%z`xbU_K>VBD9p_SMuEZKy14S<>2xn7#XbBniSathDXeJf=)bmp_x|1? zWM!`79xw(~sMf;+%*jQfvj}nqfI-B8&fEufgieozopSI*d02cRGdr)as<~rm8Eas7 z|H1uxH?LhD9_(nY0t^%5my4Q0RQn)h&rXVq#+KLDgBO<&>q?aLtq-*s1%@T$thSU z+A44ExH!Mg1*Q4!z0K>iw1dTU$H4rJCemKMyAdYcnI=GrBrjU>`A~x`u?u0>Bc7 z`wu0L0IVi{u%jM6!O?LEm_=xRap3Cut<9~TSa+wuP-hc8Z7of8RlHUuWsq39U~KIb z9v2rK6BQl?|C1M=5bur5znf1`BohDZ?4r8ffq^T_+w(b&)(#-Uf&hZHri!wHoPw-? z>~X1Tfl_HzZF4)XuxRMsg^`yLs#`p%WD)@)ft8q9P}MpxdiCbTC}U++b4NoZVM!@P zHF;GTFlPY8hLn$t>?s3^TWCZi*%D(RCB%4GTRY$hM8?vSQ$b_W(l@j?03l9Qv-7h0 z;jOI`eRc)r(lXL0xd9GOQdU-6>a>L?RDeSR{oHtQ^k{D?#lhVV^;+>vyh$oM2gawu zw587(YS@n79|yVRX$g7sE-EIYWuPG`EG_}hLWSZJ8xcWfKx|y3JDvc%nMi(nJi+1R zS{;eAx@YvAysb!1( z6ZutLQ*&O5T88Rcib_@v9-*$Mg@MGNkg%YXoD@l%35i^YpojarqkTfOClzlZ zKZp#|8LW)l%FekC0~I}WiBqm_u8zLGE@xygfKp;87Wsu#jJy?9It3rIRYXuOm>m=7 z?!v=t@U*nF^&}8UIwE|9^*sv}XVlKgY6W|O$S%;w@szZZrjm>}97^I+i705x3rk1{ zNxJ4m1i~Ky>c*R5j$45AavX!1nqSesSfh^gaA=eZq=&q{s7f-*XO%(kAuMuSL_oOu z*p|epQ=;OMCr|iRg$2PH$Hm5ZQZ4OVP}UV0kHBL_Y44350|f;uW@Lb~ql>SviISws zX{elI6fust1UWScF)7iL;f*l?7=)O(I3F6-#))7D0O??7mi8`9+DplJB*lfgItE0C zoP|jGDS2se;*;VIa0?oef-=G)jMAte+(9fo*4GBDo2Bk)kAL9-k26 z>f{&Vt$}$bCnd>mF93kzeNiP1F(D-()sD2FAUB*KHp+))Y2)GrXmu>OdoxR#C+=La zl|Rdfb$7M5u(wc^7DpKt9v$&Y1%w`mh^Z={6hC#MY$p^UQ&(P8Otha3h34UnMIOTd z`m4BM7WG zu~FW(Ry242AV6#ZXU{CG@4x!&i)TS9x-Q{9o*vGpBo$>ab#VtGqA0LJ(LYE5V(+9Q zZWn-wjJSuFjTOzy6SDwr9TI)z7q2dV^38*AWtDR_?rx!uiZZfzfM|bQ_$%@tr6f-z zK4?e?2?@Z?f)_0i{Tm-^s*NWc+bGm3q+}J=^iI!kfB&~f1={kmYT7h6O=%?!lGdXqGfrpI~gS;8tXp)U{5|EwAjn z{Nw++-xF!2E(b;#kmA6O5GrXk?_utEE}Iz}859&8;^D~)3y=1rTGCLFhSxd}8rjA5 z?P!0UyZhwjA3ooi$aXW;S3jjJr64DvsO?p~x;#}^l%9s@UO-4lD0T)B0uj{$3w|I@ z_x47GBVzYZE~>^UR&R0dA3k~d_~_H$9j%Vmq(FW>uYdl=_WDRed09UA^r9l5NKD=c zVUaQZpk8+)_5>&{h@{rFUAnTe&fNpneP?S6OwIRsH#nSIh-~+v0v%;DsIQ5SjE>}Q zx_OZi(SCN8Hh^t}qmC&Fo=Hvp$o%s9_Wi?y-7W6Q!o=tp5*z)UO_gQ&kX3>TVg`2M zG12Hg5Pk_HlKpKhFa*I7v9WQ<899aJbz@6Qa7^|OcJFhLWJi9jzJZkQq6#-1pv7b) z5#g4Hg}^cOzz|0I+gjSV`QVKjlfcf*DXOd+SzNjfu>Qe=om*>*h;P@`Rsr4vgd`A; zsMSGcF%hq%2*A+E{YM4b0^r~i8W|m(n36#@7b91eZr<5DIN0ND-B=tS?rtt48N#$w z`18<_%>-;G5plXm5&+_bx#l}R&h@>2zH7!AuBY~X z_I`F)d#$zCy6=<(%8{@*o|zscKTt<2s&|7AdrIkobp2#>A(rUQ<%tapLZadR2Cqvlf%d zP$N93G=*^j3`Lv-h<#SnQkKz_r){}akRIyoB_7X6k%|P4k^l&U_*9HRb;rTUAD+0W z2vQ_CRhYKW0}X}&g|F#PdD*+dRBt7ougME1S*aMWD>OR zKL6)mCj|z=j9ga}6El`Fkp!rH1G^C>zLNSX1@HgB&xGA>Su8R7XWs4e|u%0nSF5Rq9I1tOu_itdEj}2Kh={ z#?#WH9rz*%60Tws(m+d4)!1|N@Re78|MgC)B|If;104-*4nvt7tF%=&6_qqs$OTV~ z@2iOQ3C4Yl#C1F+HO9f#K@t>!45$>K2~@XjJ9d0v^3_l8zB%M?gh9j!1UCU~6;0uy zGF@I)*{%2b(6)-`fY6ALP(Lr%@wAi}k*&Q~5Mnsv6VvnXg006-ogbb5_`84n?O|_> zhyx5!4OLaBHVP}{3}cVnys~F~QIvmpG%dQBb}_`;(``IGBf&)|@(6~02ty^mxUzXG z;{8UZ7CwId)!V;*HPVxx;zc1bi9$+tj?E1p=%~(#ihzw8BgGvU1|colQ7DoGg+(Fn z9{Ocp5?Tg28%i+Mc z_X-G)#!7^{sj9i_;Ax06gyG%0cN4sr6Qfg;<6}dYPWEl;sBf+-0BT8Qav~xraK-KI zHlCUijawQ?5LR*=Un>Xw|d->Yzod*ve-n%g|bpFKA?cG~8Z)!z$4s0C6OCw}C zJB{R_g!*}iF@#B>Adf)UB-AU|$yLppcAvR0J$LWn;{EyQ@sab#_HNs}p&5knMW|Z< zW3#*f0SxK5X~QCL9Zye5k`Rg zbK)j|!y9 z-M>9Eap~OQz1_I9sK^JAHOzzZ>QV$H=fdL}fvYnQ3}Jebo2|grA3?-05g^Z-Huasj zJay|nqBif$Tpb!b)`x2spm7sZlkj0R(?BJepARTi+)cvm>oT5_ndD+86#If$E{RHN zYTUHz_~o%%fZczDXw#vALw(&FH#F5&P()d!h-yW8R!&w*49q-VPnYr3%w&n3(8VVh z?vm7;f--br$MK=7vv(gYE-uVXT|RRNsP~8+fr(6vI3uIdgY$@gb>?S?tB-RW11h5_DXSSdW67v^1FdLEc{Ie|mzm zt-uXAZ-}1F1RzLL+qUCZCg<)wd9rx#=C$EV{rhpfSzlXDC^KQ95uAns05ige3zxp@ zcv5Dfr+|Qj6e$ zR&rcqP=L3G>v(cJgLWJ$A_m7XiQtYurPNG`)E(^rgi{S zUJt_DIjad`VmoW~RJ1&An@_@VSB0yf4$HA18xc~N13wI5QeqsC zq@6r{gCk-R($^GMw03VlbbfT^4(9Ow-1Nx6{%r^pAUUU)0*qsMbu|cQ;qZ~-Ji_-U zB*aSWY#lxPaU>?dZ;dI~y8qP3)E$IEFWekHzH{4#^$pcPj43Nv16M&F&|uc$W*(v_ zG{jdd9#2g|eLDwtg4+VEAis3owjKM=jLzPB^ytCN+1;CJi;{2!?*-@)Uq84C2qs4! ziB^JI6^ihx@zjKPKY^{t9kx1@+uUNr((O8McI?*ty+;#W1u?k8^Ko~ywc?ta8JJij z?9xjL-z4NG{C&Y-k{wS;Ob8J2Meg1R1t$G3ZS3vae;%TIes5-gPgH`x$i~vtNMA>X zfg=rCwk6NePnwtzgA4o+A20WDSU5fc8+-W75aXPJo7dJ|`wpDDdUvea6GZG1vDkrU zW~jqrYG}e$&`fhvQB_u98QVJhMaD$KQYWWTd;+Ebd9x5iNKwdIQ`+3U@9@RBBZ*c_ zwu6r?bCt3x+YrzV3b2zXUxA7$%S?yN<^v#`+5Qj$-eC@YuLi97j#t z_MJJGV5n%!Gxk08;9Qx%kGY1nvNEiLC0_xwEIC=G&>ylKk$&TG@zD|iU*v&&&6rpm zXJzZQ9~$0ZBF6=0On}tQ&fQ&CMS~crP-rM$0RbnLU#aPxf>=0+k+|e&Zvjsv_QefS zTyj=^N%OYTmx46(`5a?ieX*Z3CD@P!j1OffhRfxq;44rf0lKSJnM)I;h?*OZON#Nv z6u1GvhX~TVwT;^^@3+#l&{yV!#Y7`VJk)}zW584elrLptwaRO;$u-gndRR`Zzu0*^ zK0eypmT&Kgq)3>VS*uIe?;P38VVJ0!Bqu~lBU0jnxlCOn0I85#OP&G^S)lvMdzC~7 zpaV&XNxnjBvW6gslHl{J>l^D~YihHz3J}T|5*O>uVd|RdYS8i7OP+#JcnahclvaEc z+9C~b#}bH(_ZISCqWOnKKosWYSMQiQY{5`-tSiZqMn)&ZyXrG^xon~sq6_#6;wey| z%dJe<5buW`#Ky<_0WjYQQ;7Q<#O+sa8@T|gKL6_S+}OzU+%z6rTU(#Gq*(suDNtP@ zzq&5UpA2DQoWB5xzQ{_3oty!-y6(aGwdyLO!jkM5X>w+)Ij#bk0NKMe7|CQ@aujGT zXKgJ6T082;Mf(bQw$5Jgy2hm8D5&0W{Lw{cW#fW1@iC!3VP2-%YJl>9MofB7Th&H6 z3KZGP%I4z&5kop29UJ2hULrS$(a6};oZP~i_JfbUJfz18Elvw^1T`s(p$;fN_^4#5 z?^jUcD6G(vGkU%qXCdmxM92AH3SIpJ!(x&WGja;6I{LA*Rn2g@z!cij2P$Qb6D#35Gs|TU6kJ?K(5~hj$ARsthYX zXg*bC@%qBaYfETM?wI|ZzXQyF|?TGWruz3Z0+160puitiCDRA$I0VU z-~95dOkZ7#W9J`gqNQU9IybTef$y!PvP`XIx+^nG>W^RmxAEv0sjofM2_Fn0^r1Dy z)vev9&R(4U;y=IL>8}syMgX`l3>fnAva&KVa*FEmEB(i&+EXK%l9o-hBA!SAY5W-idM_o~e$Oy1a_2f~rAa>*&at zjg`5$dWs4}7d+g@rHI-U@C074j$o!|=B}-1={a=)nMV(vJ^$q8=Rf@U*~sAyMY(w` z)q5^noxggbx2di)Cp#5i5E6pW;PHs4C_l_1SwzI~oC`n2*8X#&*KRF7dHVF;!aby| zJbiNe?%joZQ=>}2Y@1_O zMy}m@^z_-{!<$zT&~&i3s|zH{P^JkyM)R_*YcexZ;uA;!98@9?3}K|7J(#|HLPDj{ zNw~tQYHB}pd35Ub{U=W!-9v=W00J;zli=D4rUCo}xwv(N4iE#sJyENXTM~#M2l)J8 zrUO4{ZBxAGZa;qd6!~q_qi2rq>1}Ik25vREx63QcEzHVFgWo$UB8aFnAUU}k zXlE^Og)D?xoxTRhZSDInj8ETw`WOnqovER-NB8z3fVHX&cQ6G7MX)fCz)4H{dwgVg zfVZdX-jTGFa4Z5>EP}AO#FV_Es_siKuM4z<{x&8?2BwAvns7R*sA4aXt8|EQMJ<*B zolO&eu`w;!)7^0-JvkJJyRMRe5FCe@s|%~T&OG|EQ_ncsQ{RB2!(;;#6btd6Kt6^r zx<(|jvbNePhLX&VImF<5x;u@eCWIsO0;zEDHYH~O`J(gK&9|?@^j*^f%nfvObeRMe z6yQi$#jy8jijUMa0@RmRq$?>i6y$Yitm)&W1!0H;cNj@dj}%(kiGeyr1~I3ox_!^U zgCE}wd2sja5E!QVPK}zK$F3MNF`wv%RS&fl~dGEUd9_3K2#g#i6|)-hmoX| zNTC%0Z9`N;LPl0$Rm=91C#Syo=euVG&PE&^BXc8`J{J(G#ATzPtg0;|A3Q$1t2)vH z5riJD4kHOkQhRG#%p*b)h+0s+VdtrHBe%bN`|gK<7&}u#widFbVCBPisE+syb(xiJeE15+bpg0aOPwKQ1X}P3?vqr_YT}KYIP+ufKe9Fx%VONRP$VW@#g+ zKtY)scX;;F?&bn1?t_p&;O^==lAIFbNF7O`Ffo(izhA%O=-J`x^G`ne?E8QG^H0-z zEAv9#-CSLq#gXNGV>1_bw^pu>3X8`L7HoVcr;((j2*^W{{1gsMk!-{>^d37mIyJxe z{N>A6pTGX<>*o)j+@G1eId%8p#FgXQI-5(7?t$P3ptYfWmyv|H2!XYL!l%JH#EG)5 zyB}9r_ZD9~fA;MDEb-gT-JHBOa^=+CEuFwcECdQtDuOR?0~H`~a~(-ch;XvT_Y=2i zQf5{`6`ZaYC+6-w{`kcw&+g1lk6#!#uzM#Wzi}fDjLV{2+ybYjCnv{{;4Wt}esMuO zdndqsU>|_Ct7`q00~f~bJa~%q*hhD84>)*i-wt5q)Iqg}VTB~?wYe}X5~IQcd_7&A zMvy-MJZo1k0B}SnWaboAwQf6bc6jdY`pmYW0>wAuz8JWGi_{ocppWL0fHhcyVwIs3_wXXvWe{DGo z6TBfIIwZ*7(^ZTmoakh2=jsigYg|%VUSZ|>t@{QhZasMN^2PH<@Uo1YKGwGt_H}U~ zFkYs~b$l_BYqC=jO9yG}f&om9b>{J*Q;=&+oXO?QTlSuvn1A@}<;#zs+`n~wWZ=lQ z?k+?;69)R_W$SSvnS+$W1Vqvy#lmSMF%`Sm*2N2_0V12S*OWGH-g9kQQ%839_O!RuR08)ESJD9cCtm9~5{=^N>Nt{=8t-Of3x6ZDLZ}qQ70p}v&R(6p z_w>c57{NP}L#K}&K+JYi6}iNwmC{OR#T!U!1MF)k6&_?0C%9k-0i`1x@IA!M)4AvD z*zDb>FJFE_UNC;4f8UPowiW~g5El*plb@ZNk$@n@0AF`E$C1R8SVw#S5a`Gb#0WNT z*nMW~=KW`{UcGqsV1D}A`Qrz7bhfr227*?8t)>#LrV^|HOaWZh9#{hLX>np3J7>%x zj2l>oa~^3xYjaT*K{o;dbwN!KY6a@7@?5gqsCvN;L$G z7heF_Ad=|=wbd8%<%0vbfZYd~%a|cx-m@`KO=1eD?Ux4Iow?*xl2< zzM-}j^N1kbk`jOnkc<X&_-L`UwLOS@LL%eg<|<#`z4Peh*}G3(yn6Bc$-P@+ zgJ%!#1ZXY5gb@ir&~gibSC9%^9ZqXRmEbbJ5g<&%Gxwi<@)C07 z?#$JTM|SnVNdm4kAgxscDH&@3i8PTRen`D_9Ep#M_OyX|AJ)J~Y-|+u{Q$;=?*4n+}$hpb+ zCnU@N-sIrHy@;=FtgWC`G%xprN`r8i{Ji{p#MH(k8Xoqo%LqJH?mQa+$_5Z81@yw! zoqLX5n7aG?B?b^7mo4R)$ouj03-I^HS%sTM;7cPU3FdVmA|N42V`IE+a1_De3++Cu zptu>S-WR7HJbL!Y%#Mn*r0AuvOmm)vk(mvwC@-{4V6Y>4SR^O z1Y)B-`8<19FId>oSOcZ&dk>u$y?Z*>!NAZZz+R88sikkCYp4Yr9iVU`wO37zZ6@#t z2}kg-1R50#bPrpey_+{dR070pX>-qkQ(rDf*>9}igq(J_(ke2hPiGHFy|`s&iwUH#X4Y&9%+7J}edFP8vc zV=blzkn*7u(ivPUCNg*B6;^0S5~Ya4bsmXMi1g%J3Y@VHQK7rY=|>PaSmc=-V4nN!@dbL@n( zKHpHC3uxK6w3H}YJq}k#Q-$brP=^$mZ0MGqavv#&q(}MUFpPg^X7Tl842CDjEf30Z5B`TBZnU8V+ApCpOjP+}P<%WKK# zZ7T@!b;b*#BfV@bZ5-X-n6JV{Ur3thlXp>a`XB6qW zELkP?vYOj*1Px#$GD_-WgVU7w+ob?q%dhP``sBL{LT*$=PNb)Ur<0KmLla&$Fx(KO zc-d6~nq;W7QeWQqZO8n86fKvjU42597}%B$2>XlXYKBLb1;<$_5Fha9kVbH^%(z{OWVMbqAkBj3Dx zzS`7O6qb~dFXh6|NSF?kmMhT|e^9_1R%Xq&B@heW-E~AtlRo#d;qhJF{FZ$7h1IQn z7cR|z|Ia^c6qy*BIE2Pn=@^;nKn#GPrFq#Fm{`i{D;VphHe`f^`w^f0NF=h+?eGdP zE5gW4UR_wzvF+TIiTQ8e{m`E*Fl94zIBY!=wlel2n0ZtgN~;1!uC}Fy!qpfM09hO! z0biLVloJ2I5UAx@g|!=cadS7l_|;$k`Rc?PPg7k;5ls~}-~fY3MnyO1;Pqn_*(pe> z^r!hxLoEyqi}2=I+KPeO0KF_Fv#56C_Q8?sH}8G&)%QRD`sqk(lndX;P)`H!TuigD zj8>^696%*kbKnpnHCLRe75B26-@;y9!gAkpRnq5@cwtZma#_jtrKL7lSKYai5 zUq8Pwu)VURth43V<*D275;QlI;nD(!NnoH4P6L3?_}E(UUEpOvxOY-^am|Kpr-r8I z9=`mH_Sx98C(oX}c=_tp{YMY(KbRgpy1lclro4D{Rz^IeDHMCL<48n!gtq_)^6>dX zFH6iqP)pZ|v8h{+KY9J-=T9EonjO7FyVShw6RQ!-2JktCRIzC&s5?+r0Yh#j|_2Z;YNhvTJ)!E3OdBaQRYL zn1^VDIHbcNCdLydN@zs5KkQ2%g;Xh^y9^anc;KC_H}RR zXd;(Ch$+B-voeyA?-dd1?*WMn!rK`?8w);SMT2o0pPYk`lCGm8xHWk7DOAhHP_74# z?d$E?&{$Q44iv2|%SW1Da&i)kBiOf21km8E#7!);G?uot0Hm2Bg-KeO^cJS8$igt9 z5t!p?Xyp0V`A+r!1)%E%SG z8x848Pr&Z!U}@yijIUTKL-PQ$sfD2n_!B;q@$z&LSQv>(t@rQ2sVuNEa0mQyL-zak zxH;Qd>x&7Ted>odI|{9h9Dmmz%$&fQBP{Q!YsmUg##z8K6jn6XHDrEx;$qJ;5L9mb z?TMG0i@@5*uDreOx3)Z>uo&2uZmVlpy;RH7%~4=sAS}nX=PW((5Ifsh7}}R^_^p&-*_VP z&5CQ0N501Szm)ykhxgJKXbZp67gnHKA0;j4zj1dVV`83*DutvgE2)0}){WnFoD`?I z|Kuv-b1ibwn<7`Lg_U%frBC~BMKMicdm9te94tVvDw7cbqZ9RZQu24DF?yaDJsV?g zItIA#!)rf`;O__7-Pys$*fOWSy}rooyf5YM>cBJAO8^CI)%(|bx;Z=WxVnjLb@i3r zRH>i6+%S7addXz=ihY-AdgBhyhRaF7w^sYSe?&TFsvonZuD)Wa<{KhBtc~^J5ZPTJ zd0$H6=4i>~#CFtGzJLE4_e z0mZ?=nrjtCDh4c-f|E{Q%heAj^epcmc}paC-_z{-df($fXxPdxcmu773!TQLNhu~y(lz=5Wd zhw|hhaxblom_7)9YolbY5_#w-#Aes_A|)v~E=wMYgtnI4rH52W>YXAxzPX{6gp{O& zJM~Tnds{OjP07ag){Z11Ec)L%Ir0J7@3wIxP-%bbkD~+M(nMR_+0oiT3F4)?LK`zK z(*>|J?Nrm$Lq}U{Gh?Q>4FolmbjAyXR%T`_$4&spQnIiAt+R-4WvVUg1lTSmXYmyR zJD!oYko1j`nEf=-Uj>$i+Cl*2ynpi6$pL49wg`lqzdaH0EsdFuKy>KHUFy7}kZ-|d zhzRO1CHKjjZLGK~yH@n)ed{8WF=pD;9BA#JWI8E>S}fa|&fh<=;%f72x3_jsa+Z9B zt)(%`rfO?z2PKP9OJr+dq|K|`-`bwH)VhO^XJNqPSM|2GzweI-2CE^HSAi!V$_V&o zMl6f+U9Ig!RINAmb~cvA+Lo1I!zs2QYoh;+BRFH#UiCG$u4}u&_-XBgt%pZ1!xt?K8+m^Oc*QLoq?yse(J|}ZCYQBHuED~Cn>g%K) zUf*6tiCs(%9+~N}()P5rm%F`RF%EX-ruy1Ro$YNk?;knY+gY3GGn4kTwl%oCUkgIM zwTZ4)a(8Q6{fBo6ZLCb$+Nl_VGD^gvUjl)ZsU9m4pV~+r2YBRQYmL{(^|iLuQpW*0 z;fSHu)r#NJ+Fnb^ew1<)@Qn4eVtZPf8b7=XoiNqWmf~G4{_nq0$mg4In9SCD2HSO_*y=MVWHu)yduLff&$L#Tee71`OEbF?FN_5eT+ zPkv>;Tlwy-qaDxEfEfzpw=G$}JrvoYQC0vRZlVOF3MnbVCm68&wgMHAD#;}e$#)sB zd;zDmg%a)5JB5536MZe;9=wwhrPM=vfsF}=;Rl#8l!R=4_trsVW5Hp1ZQZ(QOXk0t zw&z^I_E^P+Om~3kZT{Cok&U&ffwt$S-K6Bw3vI1TxonpnK=V=(3tva1 zBg?55J)z_rzQUGoZJ_NyzJiir?`Xom+Myc`0F!(FLqGwcZH$IL%mAwVUyT(wyJD5s?#$9oRJyrqbLqci=)cpP(E`>lSJ#k~tygez&~+jlhOyjw6MP%<|E+8$Z^kU)Y}C)gFm||82gL_@OFs1XviaQ`J3imSR8Kbxt6jg=X{1t`^&@FXqT;><8i1U};iO2lFT z+6t_(-lOoSgHnG{%HGc0T$dTW1wdTyA2~VjtxR+^Iz$W zm`_m6~j)+TIC>E>OVwnS2oh-afot~se`*%ZHN>?#JIT_`4r} zzr)|{`1{@epUQEPR?vSCAHQ=V+g4>6ZG~xc_w_3TR-2QwlKvM)&fv`(gGUaXn3%g# zEuzce=_>l){0lei+}m9mWsfK}P7(-y|F8U002h!0pH9c?K@}`nck=S+#K>rWxqwgw zqjNtBcU?czxjH6XnzM2AdMB6aGpK^&#|H}?^wmMHtEeKV8ae9@P;*WaD9_`^H@fPn zkz_X+*_AS@c>6{}VD@v8KsXyc*<#92l9k2X1){uG$u84AdR_$Ncuo?H{ukHL%{ENL zO(DaPTrkk&|FLSB$+_T~YebVW_Xg{_cXxl$H=2BZ1%{EK2jq?-gH-X5-|BB+8_ zE?co;+45y1ZU#LF8IPfU|A{_PfyhQp0FbWPLEG`Ruh&)yVUCKctVhz8UcjHpQU`Da zu4eWP4xYa_+nBH`pV`;mYO_bQ&*|?kBp7ZjCdmjQ9)70awPM8 ziNDjwYt-?Grub(CQE*6jWQYm;;}{L^vA_>6p&#i(R3@NXLA0!*q^_!}fU#1LDLZCL zb>r{!@^JxPOH=qk4isS|J%`-0$f}=iqQ>DZT{KmzCX2xXz6DDC74L`lds+Nw0QEbK z{_XZrcLfoAigI8HrJL)1$0GB+y8P$^rKC` zfyE2Ot~$uewNC6?7)m8=_G2Sz7hJkKKXmrg`I-BpwN7Ls_G2T4lyvRh-%}PPA{((E z&Hi8cr$DE<|LQN7TC z`prwFuEs2;rY3{!-g^B?5E;a>nu5l zcf^9kUE1H36pYUdd5~%B#~SdO-zLxlo(yhiaMgx%M->^~@Xq(Yeslbi#8^`k@nML` z!ZyOsiYuhEDP#fle@*wkU2VovVo+{vPV*Khs;syttaGI`pL#CQs79 z{;sIBviOP{S-|~Y(a-GR8G)EZMPWH;J!C<#huATtl~FgSjfmf8YpoFFtFEL}a^TRu z{X6ZETZ?2g+iQtS^_}nK8Eb2k8?wVgqgRHf$ z&}#om-u#gw4HsFzEK8m8rGCZ??7tqUr-n#ej1$HYBS8PiVs8EW8Th;F&Ew7tWs(Vq zThPDZ%}O6}&K-B6e#S10zH>;d45oE_7I+(FmhsM>^P=V*yD(|ydB_aK^DV*DLc}hVWK=a)uZ?ja zyYPRz6~H$CL%@Y67uLG!$jj4hlJ+i)Wsx>PPX8Bn(a`;c(Sg$!Zay4ua3#C&9d==O zIYR!oSH(M%UHBW<{qK42|G)SfyU^oTC$bCQVHXB(zH(!J?#9f87I*UT=-iL)#~%!D zD^7|{DB3oAXB%;*aPTdE&bl>JCN^cW5Zl0VTQ@UA?ZS81g;{gGK4v=P+7>%Xjp2HH zI-1M|DAutHJNQN{VG0o8wpfO_(eLT@C!GjOuD?${$H@Ws(K-?kBqM?FK6yO+5yZ8BkOCS2fVq|3gJi z`{WL)z*qFP2|p92CL%PIsjGaT9;vD*$&`#p$od5_{h9r?#-L@=ps&O!Ei0pjyj7%Z zOJ}KV_U=#gxdtl(ZE)GER2(^a_(-3WD{}Ty>)$9Xv}77X{f6AkB-yE zf0_u^#)?!`FuRdYwov;=@4j+*P{d_uX)u(v&rD9=xH}mDa(k4pouqauDM6oG&t+<1 z1k_w`2bmCQsfox9Wd;Aq&=2pRpE<%~YBCT{qOPH(&Vtw=nf7v(C#|S%d`+*P_C-uS zIPTSz$tPe-)0Gu82MFmT=iOiE9=F>-aH>HjK$(t_`WgSPN=u)jPD70Hw+Cl}5wf9% zo&jA;6%0^nt1Ra_-p|3$;#((Ov@!G;T$;+?kT;?%%Q<(35~G;i?_(B@NtAF%gTz!t zRYPu>^}r?SG{mC#Q}X;!8XE^C!eeEZE3KV5Po0KjPlTVHJ6R^N*3&b0DLr#zgBP{F zun%+gUA;LuGIV|V()w^}DPkY`X4kbgRANJ5AO0^l1W~c&=wBo>*0;1tjX_B5MzW;h zayp)Pu4F06Ycmkck6eUrao!WnN&%V!1DFz8+D6Xi>Za)2i!{)mH%1s*h+I5;{enZI zGm5Tkr_&j-YT9&Y5wbv-r!*3p{2N8OrZTY3R0O_kb}g#TCxRNiDa6oBgn$Lmsz#)) zZoCsH%Y+`MMnE%&76Ao^{4b_YO;gK0LZsz6O=_mX$KMoWWDfX!2{^yQQY*^#j&fx6 zih|+CZ?sq%MfIPVA=wmM?x}ysuEI5s++n`j9us{3U+aD z5IH&fr{;BCc=E;Pi*vVe72Z#3rZv=cH28oH&(THVhc*e;T~=nsnlAdDjbAv8Hos2C`fGMI0xhVAw;#aq5OV^&vAof;199mXZfBnJ8wI)X{Q}cpG>zc(z76KPfaBGCc#3yE~&Mzu1N8ThT71tK#uR+3l zW7CG-9fVTm+BEn+fip=)Hydp>xEp}U(F1hqz~4$pLyI87uBbt9GZ>(>BYEqy4pU8=?U2^0UXjVWX5{fMFM9^#H76VMIny}x1I~C|)4K1Bry$1mNbZr*sZ6g;c8urYFy5ogk20yB4%zNX}f>xpjB{sq-TMtC}N7QA=Z6*IsUCWGw*owqHO@u6#|}wGwi$Tgrt776M1?Gb}%nbcwV!0A7)?1$Y?7 zwzRIbYir-((^tko+%z*acJUN?`yjiaZbPZPp@ki|Z@dvL2g+2?ZxtZK8VT4`LOMdV z>p{5McjV-Gj4f^Umno!+qv{v=4Ru{5w#HVrpp!wA7^uQQthT186mhW>SMaysTP-WE zU%zq7t^=pRqz>o{^mh<8#Vuh0Hfb3KiO}Ks1!5T?NDg&Ns;dybgS=s&g;fI0ZDS8Q zd5Q4?lT&zMWCKSn1AW{O+YYkx&Eh|Q%Fj%f?TUx;`ee&|y^xWLc^)bjYRJC7& zjaqDD0>VLeFF!vblE8JJSBg2sPFuSsFCV)V9HF(18#;HN92zHxVMFH*Q?2HaR&7jp zgn!r9KRgz!TA%=1TS#!rVnD*+<1KM_4*v7~A#Nx{lm;ap zkm-zXO#$E+!1{fh$VIAwDZs!m5*|Pok!H6HOal_;d_Sow%14Lu%}uPqxr&G{uwEi# zHzg%D(3x*-#88Fm!(g%XI0hybwqDT@62Ii0iLqhGB+%!Hix39zO@X-yNY)U$8W;kA z)WpP?KsTWYn<$^l)xQG*m^O=JVkvM$5f5k2l2g|Pso8NUL=?qpbFg_idwTjH{y!dZ z)V_{ZIsp1YgfFZnx{?|j=&CBpa!j75kgd&6*gixJu`?OsJPWRs(3#LF!Ay&b3$QnY zPedIm)heiZNaPh(xNSSw*%@o8ZYE&UEy8x5As;J7tM$3&WMUB-78D*A2OKq)92km} zT}hK}=Rljv5VK?bqV;jtlr?+23Qm#}(mN1fEYXAHRsWG9Tqtbh@0T34 zQUk=7s*Y!Hgr}!CKx&}Q)ipxZFWd_oYS(3Aq(m;BzJ9=FY6@8?gRoB>9g^g`T>e|+ zI8x|dOsBvgSEy47(K;;9i=tJplKQ%BX&`h_R8$I2+EAY4@gjiNFJ3dBK% zEM=xGV9Gqb!sBxs7!0bzp2hWbU1>%}NC$vG^@~iX&61Z>1M5BdOLZ7AtE!qhh(R@u zN(}e(K}Ns7nhNnge&JD8-`JdFfL2{Sy?lHlBl9=2fz+j_&qTN`Mv5l?9iYclG_bt% zgQ7wuK2hnZLJcONQ~%Pvs=lr}0n~C1;IH-xh>VP$s#~d}B%{qnIxK)*%sL}NneZDiL&6D7_{1&%7Hnb7dJ@Wd%0;FPYa zZpt&XbPCD{)HT}k5Ox34w-_7fKa%x~uz^5)g@nH7^nuMXs#-Eiz~eOaAh zr>m=)3;8}l=?TXAS+8EA@+}_{%9a4WEeEmK8yFYJ{wTPbOjA*lg%1u4ve0L-I2Azv zs{@T8IM&;o6$xA~s?Qbmbz5TeP08eXLxTnkReIY@#!6+-#sYsA3Cs$A#3ZS!X?aHb z`nlj@A$I16r$i#ZmQ+C6#_1Vb6Q$H2QZ*tbHotA6nXwY-`=$T{WV*_jOv61>%7_P`Z^^cN9A`LqyxAeexUl2+3h9d~@T(I!y8hQ@# zJvaXF`Qp^M!IPw_Un#0e^|;oK&TgPWiw5o(z+3Z?ZgzO^d~=|Q7F~m(qOGH6Y3IB4 z;MCWz7VpiDUs|dfNH%UXHi3hS*as3B0j6;Y8F~5TU^m=z@!I86JId;_vhrH?p1=L# z`R%*+fh{vWe4c7GfOI&_ifiovLTaSOM8yMYD-|r80Gk1s-nJ8i3vPEtdk>f_}Ruf6ZD@cW>C*ci_xrK(zvq>*~+| z`PT0dW7XaeqGQZ+5CiNI8dMw(X@F`GzSmNc0sJlSwu-8uOmEqB@Z`m-MESaP^~(8E z#BS|q>*@&szZ&Q(U44ARGdF%ATEgoUmv?A-!L2Pcc}*E*EqK2Htwq_bkmvBT{RH4GCR58fjICOas-GvdVf=iU zM%K0>SFjNW#AbIs_E^S%qg{n~-HD`8_!B(f*m|m@qJbnupyKufRXc0UADub@C^!;MAaX> zI%vHN*j+L>cp#9m)!{7C2~G9k8#0-$!@vIg7&TufA*N`fM3XRSJ0MFI@K`>v75l~~ zg5_3d!iP&+^&Ji_Wd=uEL&ty(3*9pH&aZ!eMJ(4(Q#x8VZgkTE^S2|=hW$c81RW4v zv2EyjubZ;0Jp3>UsQzaqHJl0Jy&iXi8Yj4iOr74dB|}lM->lH8>+ zFt8$`a)6aSJU6zpBm|LkNMG_w$?qBY>aTCVdj2sI?1*AKpVraZ+a_ijn^}WE9*qKu zFeNcDK0T`p#?A4|6A$Jmu8&UKy1%ga#p_R=JprHT{M0bjW+nnrIvrVNW>!KcH*f!N zX*5uqph`5sBLP+CoGmo zVnq^cS~fv7hI$E9tjg+EkSTX>KYHT)(8P^<4x$fn(abuLrZ~3hzG%8R_* zg53Oy#&vDodk>$xG%<7g{-edaw=uY zUBAAqv+o!%lxOZdSbTi{))X~Hn3vvGI~GB|b%X{3g9QLcImK%$2+U9ktih6s+NKQ~ zyZa6e3{BnyqSb?iTVqts?2gt0HFiv6G%9lPAyyqA_cPb5EkpJwvFTvlRn@m|+Ohl4 znafji3yZ+g0*Vls7u4*mv1OsVXcLkfHfUN}P5}@t%VFh|k>1uews-YnUP#S{i;H(> zCaIb^9j)7I`Py77)C6-YJQ<1UnMf(FKz0BCuz_z?UJJh19sBz)4PUznp4lh&<|Zj0 z(dv%YtyMNGW5QDodk_{gD2KE13IODUj8W7C(=0Hid-wGZj9tA!Az#f;lbV0XYj53O z$fEE|sC5!$68ttv%F%4mhh@6ot z6&ewrnv%8}SnUKu3kXW3RaJHEn|k+P(O<*h(iVTYcWY`GRbLmix9%#p0NE#B-~e}H zP>>V^$smjc>Jwq&rImeGURK@EzG*vPFOluC062yRv*SbLY_lmw_+F)@wy~v+9dvLk zBp`?Yb+-@{$v}7~5ZTrBjew8_l=;~7oqLPVo;|U_0ZA>O!2rxfs@fK`w|16W=s@0MhkL<30@g7MU%-n} zwkr(g8UR;q-gV@}rKy_>_W@{yY*WhG7UUzYw*)bw7JNGgXNeyf;bfqCVgUgV9e8== z9zI^YGc`gf9-_iFv}%f0ZLpf$d_$pnAdRmeFEhepK| zbWH%l@75UQSrCv87aHhrd073ha3GbC-I^%%b3~*cY*$rPhK`QDk*TGP$Uh;O*3X?vQMJfG#{`&HMC8MaL>8u>v#l`;_W&xuqWVr#gUQk{G=pj)mbiO3c~+0z zy?Ty}lLLv#U1OkYV$KIygEugwBcQSu*i5U$BXbu? zRYww8n{UX5bP+kYdi!IX012ZIJ6S5RcA`Xv|s!mI- zvT-unViEg6jQR_i6ld*{?Ft=OSy@}d+{eG{+=ElT0H;zkOrSdKOg=WxkPU0w9{jOB z!7(Y`n&6KG%LZk;Qb8A>WL431ceits2JlTRxpF2O(CTaFbvQ9r>+66r*#W%UzJQc6 z2Nf$69VKGBE|>cbK?GVlOqOAAiquc6uWQWV>uZn;urD#ht?d~);4g*(0n&xooG|(d zv?<5dB8tv`5Pe5Um5E3u3s7_bYBG$YtZ$)78G^2*h@{Oi1S2(0M^|w`bcvVzN<~Fk zjo&O+Il6|9kuH-P9G?PAn1p12Q874Z_6t`uyEzji&z3mL#qI&pme7w@AYbucma9Bn z187rBj(2QaNVqh%Ad9W7$tFYWQPsZwaH@{JsRgtwSFvCGhJ=-Jur7XYxvH_bx(t2S zc;t#nvr6h5)fg6}s#|$`>z*{0o*Ak-xr+Ux>Q>9IQ2j5KD*{;bwYAy2wA}Q_*xd4J ze+9aPbl9z?t-UizTi?_idmXI?6>eoM*Zh~|x?KKyB^7lh?p@4dGn1t;*(HS{74@~K z`lU-lTkD=Aranc0?CRkc7&l+GjIH=P!&Ux!#Bl&WUE98()UAby9~>9X*P;C>NznzjI#3Q8*uW$7LIlJr;r$m;X zsg;1Z<@|y|LW}0oY04@xO2lY|gMb7bC~LB{Ov8YcmJ?v89Qpc}Pf+!>XKh<+UmS)B zH12R^`vDm$p<^Lug(5)>Bd}55L3378WiU7)IdM`yD~4*s!n;3E;?%viy>&}GKGhQX zC@#4I{H0-;UDGXU%T!>r%C5pnRG@1a>S&pS`rC1|)b-1r{qoHeWsFH0n_7Efwe*ZZ z-|Z|G2L%JHBqFtaYRrG7yt<;CjEpR3a{wEq&SEI5F!cR*e*2$aOjCZ(kNsQltx|1l z9XoqxcelVm9L_PxSrx~o4+OAat^y=V4qKL{{1+t^rcLy&#lQXd>Fv?s3uK&ps-QDP zGdU)FzEJG$fo21va9NOBx$(@%XltMW0HRdn)wOg?c|PSQ?*06iuRaBQ(o)rc^{5(S z$T7FE6FMUkHY5aHPR-6Kt!wH%0aU09d#YRVa*H+`9(nfXA3g^{z_SOpu8&cz`eCzo zgqv{8Z0vC-2Rx2}y+BF1lB zYimb1lVfEG+r~xW?;8S+4Y+64>y3iz6BKQLd?L3wpmwinZfon^bNtNc^z8=(AL{mvVe+xxhd}9S z4`qM@9D)tb<$!Q#dbG690b)}C7}o-L(ZNj9v7r~d_d`>6aK=7C4> z!pLn0!RGEO&Fp&awMBT>pWML%^OOCsb6Kx;i=r<^k!h`eCn7^)Z_5+UmzL zz;Y5nihG9@lpddE(RAb$7|IC$ktcPDiLI)p58$VtJ@a$KJjqSUXiZ1e9$%`ePy}cI zzo@$IYiEr=(gd0lPCGi9{-ctzvZ|W8rZ_1gI5vXM@fdpdBU=3|4IkU%3)BW1K5RJ; z-$2i>+C#$wyk*K71T~t(4*d~Qjls|~kY)x7O^wXLZ@hz?fEJ#P(Cw{$433G70CuZ~ zS5S~gWc9A$@nCrwZB<|-!jY$}&f@B`0Pv*4F>)?=_U@nGP!#r=TQ+Uo>c!+(*pM%U zgaMdvRK=DH*LpmGEeRBRW%!BJm<)9-wxOwA%)k%t-hO#|gtVEBHhVl-MwWbgkt^;; z!T`?iD=lc=eQEY^99LNZSFHeY0^zxlwRiTxPk#CJ$JdXhN2!{K*zI&@8j_^%icw#l1w#K|*z|Jk$WFBb33jFUE3V_JHhSj0ARbcX&O z5Ehf1oSvGRxf%=})s?tK?CjaGbN7J(0HV#_c?Kk;$M@zYNX@>(F?>&0{0#G}*$cO$R2UXWO!E1v3;^gdxs*z|F?f~32(aO-@ z^6IA6uI_C|21c&my1xXqG*1l?rlk)K0V4|@A38L3`;PQ~TpB^^#${l6X=P1Idr$A~ zBd12L-(CWFdN@OBewn{z)3JIRhOsHk8<7WzPl$@gtstR*BDlog;A*g{39vE;j-4Kw zyn`_UIMKb?tEf7Usy+2QZLTQ~W}urpe9+Q_gpAzmdMge>3M=^^y=CD zo79vRV(Hde!`)(Ihr`0%kAPyvr{fZn^!97moxt(Mr}pjZKQ}Ua6EHSNnSV4-t-#_f zoyTh|wO|E8&vJ41_62eisGRVvxRC>db4_(^Q~TE42Tl$SL+}Da=;g-`W{HjchawCw z8a1SJB^XA4-HHO&D(*1X5_`Ao+w!W~=JlI*9ftWhweaxCOM)RaOKlkRx39*Ag{@{Q zbRbu!FvozumvO>GB8&GHHN43EI8bHDHZmb56&9~ARItP} zkX#hO2>}zbs-~tH!@IwKaQMdE#U}(C;Qq{2ay$u1+DNSx3qC16&P6PwzzAH1XXOE^ zy0Qw>Qd`@wzP$%udU5Q=oyX5!e*Wq6Ma&GUTA=FIN;8|$S_r!vtf9`EdXPTfQ=`n<>lw+<>U4rDgc0!{#4u8*4e%H z;NavvfZM$QRXL@zxU9u4M_pqJYohOa2f!Tx_?+DAY*5|-OM<{9`T0deC1jSjY&$%J zkpd{#6s0LSk!H(G*oNlB1>))Dhig^P+5rI~0_?)JNSLzVnM1n5^AGs;iXAh+GkY*a z>D>-gvJaAetZd+YMtn|i7$7cUBK@6gtPu2vcs6Yg$HMabapANJ^6d`$C^+G%gYkZy$fJkagD|-=GvF*9ufE zFwp1Xvew?wUE&`c79QduFk`E!AvjSL(RJ!7T86qvX49nW*$2278aU*hzDpUNuB5|- zhPp;(JfS@aKY?24#nV$(Qd7ezE(cu&z(~#wAx8)Mc4hFG)=nICyTsFzWI4GZ9SW`L zaLsu(0!%DC3O;sPtK<=#3Y*p1NCTmF>gsx0R{lYi7apAUGqtl|@UqF8xJ7+yzM-zE zB_E~&(7~jM5{(tOGnHS(wBj=8(324RsKL}S_6>0HiVYS3EJ?$*2US0J@4&p~>BD=1 z_3!NB9U2#IDkDpR%9LTVlG{@#9%?Lo9gbOKc3hZ`v4N?v(3BI4y5FMNO`EfH^-L}J zaJ{(rMx}=+eBaBZKSVDOy#e9>NamWmZ7U}VrC~q ztKKo~39|Akl+j9)rz!jgt`q3$41Ehj9j+ubBPl*HudL2pThEpB*sFT;rhOT}voRM4 zAu4>Ob$LoMfHg8;5|AYH7*JQ5I>vhX2KL!&bK_Hrs%pX*%t+E>Nn_WRttl)$u9>X} zqwE`0uuV@!OJ3Q4MPk3n5PwHk(_red_4N74YqAnj3aU$7S$Zv~`=!Uau1)*XS^CD< zv?6#=0^)AhEMqIlvcT?yp{6N(3sp;1T|-k#&pH6uN2#gBMHZYOvZP-7v~+FSo}vB! zaP}7PQ6AeHFdHBSgdh>(2GQMYHnN^gHoK9HyKdZFh!OV?4+#W!wN{trU zLgiYowB^>3e$Q;^z4!m!-h2Cfzor4^otbxL-kCXb&Ybf+u&Uw2g!6z;$nXbNnx;!v zSSX`IP!^8Qa2(aqHL_#__9!f~JYv1e_!p$RK2?~GX@&-5{V+LDZ~~If4=vT!)mW)R zx{E7qOes)CturxUiN$d#mAQ0>if^7Ni?(7;B^w#9cL10>7m$UL(1Pp96zw$tAIFIl z_q%WtUA-1wxzuP}e&t0ltuwxO^|7+W4d`uxkqNB3xTu2h+|M_z?N<6y6eP;7%8D;= z?p_T`)%x(f#DrisYwN7{fBvHkMW2cqd%K6E=qx#s5+kioNMLH`rDokFYjBcX4hQlt zuyBp6EsY$af|x)!a@+j*i$C8|S}uKB+Pb$T0N9)A>;@_8=Lb7gP*U5h%ujsCx`x)y(j#B~{HI$pWV84xkSw4W@Hg2z!8pbPFwrAmq$XyRAHKZL-&lJE z94xf8R%^q5P}kVnGxylXFTVZV+lou1$zMrodwcp~^>L-=$l&tbfl2hp8`38|r*iYj z^A|gUZS)Cpk%@&Rog2|A`{>p8fBxO0d)F_MvNwY|5n~#UU5M)B#NzP85(##57^TbV z8lk%0zBF~XsSDJi!)LBM{r3AmfBxyyr;qQ0#Q;U$3_z3nA|QRJ&M?&Saj3-x7n_<+ zI6B+9h7Vm(0Iuk*`yYP{P(DBy0m@%wsp^mGdLRDd;HNSA3u6<T)BPk;o~PC;{>melY#Q@N8oR`j-Lm^I&ZoEEAs~<+!$2$}zQT=54xG4tvTsvqNoHm$c>F^B zJUP7BjBLe?nZrHRfVL!5vys7m?mS*}dXD1ZMbOfKk|Z09AYkMW@Z4ikvlO3=jkK4S z6z60EOco+m!1YYb&Q#n!ytM@kC^-ODi~$rDsD|TmG8HFx4K`IPsad388$+slbb7jC z_nuxbycXnVr6k6p25<_;Wo9T2?(GM|c0PetjEM>JbLR-+($f_C_w=VlL(leacSuaU}l4RH9r?Tk)WIP_F#p< z5TV$!r3Yxxg}E81Au`yjQd5xv+q*wskjv@$>r77^mZ zXL_cg#~`Z#S50vaxPap#L&RK`S8@hY`#bA^&`lU$;-iASc`T3QtTe^mfz8NUl$#ES z$%r5?9@`skxQcyS+UqLI!J7>-?C?Mz9!r>v(b?M%p3jn!tke`xmIR3TOhIBMsiD28 z9Mz^PNms>uwm2y(MX|H5qY>4DGb<5z-e`k&Vj5C=I%^5JC|FaX!X+Z)m8PaD_JLIe zEEq_Qj|`CjBvhQ3mW+Bk8!L+Q!Q~qt6(sTGuzix#k`!BeJL)P3`wluB>L#^8UuC@4;D)-O-WRMegs^hg;^vuNFrdd zz2Uc@80qV71`ljTB07w>vDkhI$tjAhT^&vMZs5a>AuZ#ueB+an6e9zDP31*-8DJd& zOR#{$@_`?xVq~zlZev*iK0F2z(+u2?N$HAh!$?IhQW6QLJw9eoVse^d+qNw&mBpYS zB6MQjd=|?eHyDat+qxQnTa4o*@XOH)v>_=`v3+QBZFzBSMlu#lh{S`#@l8m<=xpn& z$0W&2N{j)NoCk~TAD^74IJ*NaQ>J1%NYDnK*hHz~_<{b0jYWiI1>|i$?rto<*i@;a z_jq4@X#rT#;$x7?XR`g`Q>2QzlY^}ld09YAjR9;f-_6Yru7QfCQ(Nmcg03hrE;R# zKd9g{Gg1H}8Yl(}V<6ZR6|?&~Notl9ILQ(b*NqntCzUEL?`*3o%*{#1sXE->m&f7; z0r^)kx~;tegOi+s9tV57qsP*?c*U`;trdk};Q?klaIQgE?H?ya>TvDGqHMCRq9gqz zAi9&ppbZBJZ9GXl4ceQ{TCNmwI zQFwqDbbmofu`!DMJ*`#6xmhWgsbK-WJU4bwd~_628#k5|WTk?9CCuL+ynI1~qHj@~ zVmGQT0X<9-8F>I-@`7=_rPv9G;o`is6tLce1^95?+=Jp{VikK@YAZ?#G7_cI7|ax& zD?d0PDn_xhrM|MHFgqmyGcW+ik$fO>qXx2Z6y&7B=^!#d1R}f8IMlnnrJ<^||~NXEeuA&2e~k&-5V{Km14s*>ES#Mr1XP{1<5cb}Xt z|8jm`M-}QuZ^MH9ge+&b@WfR4-^RALmlqb0X%P}6@nSJJap@`Y+ef#x5c--#!1D$o zmF^aa)RTL+Hlqe0H%DO#k<{?yB>90ugY}g~S)itl1~s$Ljn0frNtPcyJk(YNE-p;0 z&`^INnAD<@66Gh34j?rr1-%Ocj=rmtTT~+Q?i*;VD9Xczf@K%r;pW1POHGlV*w^1w zMHZuyGFj;6!ir2zmY>|$15EzBZ1gQM#LvqWZ%as&pWfBkScN@QNmt{KHt-@7ljNti zcQ;mIw@D66Hs?B5zrKW)e2{05R8vA(W<}hOO9!%ZfnH1GGi4z{Sa3iqSbb)Yed5T$q*+ z11dz3yR#D~E(NK>9Zls0*e$W;OT786&YtmU3G#zOosAm{F}|385-+|p!!tfHL4Kfr zb8RX37$LU;{k?cD&YrPSDcaE0SXBtb@93~VU#O+dp73gs9~tRsE-%ai%~u$R%GeAi z)DS1%Gt^xV+H!adhXnX|u$`Pl@$qqTP{B7;5 zC>FBlbdQ*XSo!YZp8B$)9Pm8^qh2Q632lf+4gIaaEl(kwR^Fa$y0a)IK0&@`0BwK( z$0P~#^#BlpFggxx*gDi)nuqBd84QGZCf)`vO!?lC!TQpoY%E*stO7SDXCK(M5( zsRuDOY6$li3Eb!|esS@M^1Zu9S~r6IC_XY2!pPOpS&WTFeqeWhV`(n7lqh@(ca{^{ z5Em;yv=iGUn9*@ILA^{c_QB&#eroqn1Ex+=Of=XU_$<1!cXWKL{QUmm<}yquus8er zc(~D>g^{r_^2w7!jU{=Y`@)&Wn-5|PQKU3RzGrHdCgfAl@KHEm2GP& z#h_zz_w({}r8|itV`Jrm7kAV^oF$OYhF(xzyg`*CKX7Sl6-dJqqeB5v&2yuui5z5d@-=#gYq(8(&b>$lp5JS%vA4OmND*IAEIq zaWYc(wO1EpXC`5D2TPy}o#6}MWckG%9hC){sqqO>;Nj$Hydu94+2Tx|T=s6aB4K zMY&iQc%K;a+SNNeDpG#3zqPsuJ1(+gwu4f|J31m&LxlWr zdtF6wPI7ESM3BGO!-eYVgNs}F{`Q7SoRJbD!-E3RGMcLoc#P!xyBe@Vq)Q`1F|h$e z=PC(Dy?fdls!DSKFA66%FP<}%Apr@WJs(L6LdBr#d`*;}W2 zDhsl(7y%|KwyI*ti0}|)s)KV#LcHww@!_V*g7j1X ze3KgJ4lZGd39``>+d8YrG{ylLEpwu}h9|_yMo(_-+?1OM%2WVvi}@JNu($--=|fvv za6$kb0y>DT%83<~D3y&K-hz`eglKdKQnA^&h9)G)#*XwiW454g*s8qT!T%5%6DOO1 zY^?;%Ndl3fsF%tPjfMK%?T*E zvQq~KTfp51es#dAd+`}`*C_Pj%0Nz|8!{d8MKGM}(mY0?k4}tIN zfi}1!I8SzLxVye22ghcR&G=#yrSqfW;!s0xQ$;S0?l{4Tv3WSU19D$>Vn=^-DN;O3h0xB7s2euzK8qE`g<+8&g*ue6!F@iY33tNh#0Lxi+Xj^~FM#vq| zElPv}S1Oes85KMww>ErvF6B*jW)PA(gg4+lO5hY+*p(koZ)bYUrZfG5kgyJhxTr5 z#GVg|pb%eAtPQ$%bWFVL(1D$8r8&tsjtBaBav2VEA*@}pWBa#Y3rxnL%pWwVt~9zQ zNUdZi_6|0dW~ao4BUJ?KN+%C&t+I)O+nR9tkHcv}EabXU>0S{rQL@WNMp{d=QsN=1 z!Jy(yqYHo{FO!dLYbn7oBob2xSf%!K&#<^i*|Ce;nu>6eC2S=gqz#_ov5_*MlD8HU zwFDBz)15)3d4@$r$@a|ct^?;DK7~IPtg|iM3mdNN%+>AHM1_e63h;*XM7=;6m(9+M zROezJj{-d(q#Vsj6crUAdwXKI3RFjN*h3*x0R)ciGE(-zsoqVL?D62$Rk3?XJql_J^~gSO}z`+1yPjs527x1tf7d?`V4s}!) zWZ@JFT2AZ`G=>+b@nmPWbZ#n0$EpvM;3EODS`--?B0D?0c~c=cKA;DIy3Wa-CJGG> zlARfDt0=^r!o2qO@Bp~9C@3UEc4DZrx+nt+4re4UE`YnmVWB~?V?8+Rr^jOz;mE)P zD7y%F(6Up|fr~PwN{wTvj!n}I2&Q6{>G}6=6-U#nQxEU7|6si-^a$LfMu|<7KB3Z_PBDJa=UTSJJ;t%PaoV3LYsyfP-PYt zz)zy6xG)D~CZG)t4fMx12#bh};JLCqyaPcdpNKx--ev&KvNJbsBU0hw#MuL&J8dII z8u%)c%gv(voSbwhrs3hBffp-KJWlA!6o|nh0VnMI;;QEMfkWey7jE3Tee=r2>G1<2 zLz_W&ioQC1Azfi2EtPeK~xye4P2FkYZ63v1Ug#-)KHzZ=4~6-HPq;F1-I$rT zvA%O?Km2a4-M)PX(a2**cJ_m_7j!iE1SCeaxTp{scyd&DSWsYqj{*@VfqXZnJE2P@ zti$=`b=_NbpBcY!?bh8lF3T^B9y&1G-dIyYDQQ&EFV2U-uBZfN57>WFV?ftQh9D#? zEP#(IdvQQ035x}OeMA4io>SxUYd7!SzIJi^AS5T&QE@rgdJ&fbmv`6#(~@9Sg5>uR zDR3tiB4RT6-u}cJG%+2-Q2pC>9|cL=P2l_N?{BWjgTc%{06t1V@Lz~cz?)Inh@Cf>8|v!ntO;Y-b^?~Bd zQK{nMV70N8qi0Ag>;d5s;ZTkh!6D%hLN_Mg%ReYG4n&6q6%D;xM-Gop?JWy+UZ<+E zL_@~_WD`F^NGMTQ_{62Tswf+;}N$(C)qr zU4WBWtR!5s6pcm-A9xwd^!1i$u3WmZs3B71r3eTL4HmLo*`B!Dj!D2?R8%)~?wHf+ zwZe>q1aA+f$j?bn+lXqmilB55hf&Stt93QiR;%fElw*Vx0fCqYOl5hHV>hXg-KX#5Je4< zUe|YWe!JTmM;IM(ofQ}7wt9u`x>aypQ(JDch5)@G8=-F(7z_rpxGdLIYk_qI95whsH>!j!Q(eAtx#}td-NBKp zNPo;^e@S2{RCOjU>It_Nn2T$=w@=;w;0WKqf+=(thUR+et;I52rm1VDtpvtfzEsO( zb;DF)w6_HFSb`NSW`q2hFnPe|DX*x!ZOgvPj~*Wp8tbhG&q^rG2p6pSI;-{95e$+Q z>Wf!es7vMb2|>R8{un`g0uc;;Jc2MFl_F}PqG@o?(c8cKVlrm^+O=km4BPdlh*LH- zG|&YGkh;n;eG}cXi)|?}0iK}&DDUSREMmg10vv%DK|-_GG;nm!*!@5L^=1Lj0ym`w z78cglmX;>Qy33cSYw4}g7Vny9Oo<8+2f_hP;pgWYC}zUF5*&Bo@xTKqsc!5!zW?al zgU7#ndalaT%0LGciH7>xYcPj&*6C=mho^_~q_M$p#31j7|3v`$PZlx&2SAuwP}$gX z5G;F_?|<<4(|5=FQ$;RThPtK(x~t)R$j|6IySHg$PGU$X*~#$*z2VN}%XPt4geab9 zG6Sj`y7nDCF*S4R{_Qv4d+_$-it6E0J&m9=3uPn|@!$}e+&k*c{J_xi! z{5*pL&R6hMf*Y;6u6-NOK<2LBxqt7*98eDK+_*3!o1Q*(Y+qmVrrJ#~ohE`BEj&CB zr&N^pk%(9>Ak-nZf^jJzJZKnDC&7Lb z6&?{7j3bo~#b=wZ$km0=uS*~d00vOi(!Jxz>B&o1Zr-_hb^Zbv zJ0mkCB?(s^VAcwTC`2^4ucsU6*Rc}@;YJf&F3lZ7M^8`AUAp}S%AY@ZXxDI0!={b- zU+1q2MSGcP{o|!Q#sY;z@W+a(aGgOV`kW3E5S| zyxzDZpE!PK+dwT^kb|>Wb`}`kaf_0cL@YCsAhD2?$6n*&Lbg))KqsUZmNs;6**ALb z#_c!m-M%q@@${Y@eYkGIolF+uRB`_Z_3fK><;h%kmQ z(X-(?6G;5>HrCen?l>}W@#5^%&Ml13iMh5OvY8zFs^;BP{pH%S7Z zS|AplA{-UFJ2~TM>lYFO{^gCeO}*O>A0F;44D$)`hE;-UXKQJ0zJ7z5C0vKBZ51ofS#5J2rS1>;u|9To)*EcBtSsR!Y;F#UHgo)# znp4ab_}lvR);9L=UUvmAk-!6!$=%h7>w!D@i1fP5j95P}P%fBTT3T3GuD3ErDN|E3 zRAORmW`PRcGqtclWfta^R@T-E1U4W%UL^K$#cUJ@g~Ug5!1G{ay54HNl_kaUnYo3z zIeD>(u{r9Xm^Ut(G_^pYnK^1UvoOV<3dE8EqRLC;EyBeei|6KOuD5O-oSqC2r(*=k z2mk_|bw=`y$HYt-afv**w{Fg_pc6& z479YgwzM`9XrT6vnueO@noaEuwJU1xD_mWfB!hFu=aQN;N_dj6ReDGd(20QD` z^F8gG+gchM>rnv!2z~%d4+7mu@fS6@7B~RoSd=dm@E$bGtp{+r>6)uRaVU9 z`OePf#>S?`29&J>CXD7k-}%16iQ$ZLZtx9u=kw5Afrp2H=_nb!Iyl(c+1%WOLZrod zwGR|Dx|5T$Gh7gu@RH@by9@BcWAL_LJ24er(Uy!S=>YfU_wiIzBA<>8Zq30S0<6o*e!a5?3%= z0lp(NCMh|ixT3aw*O+|n=7Yx{y!YUiLNMJ?P2~_G`6wx<_BJ(c-ZeHqf8!klQoIdXr*Rm{`r6w!RhAPSzZjZwUKXs9 z(cuB0C<6s{NT{EyBO%uc0a_5K2CKmsIy$eo4GL`pzFq>a)UK_4ZBVn}Sz1(F3>VY< zOlYXMbN2=xi##+WBG8S_UmV7cGSDQ;tm~z>P}hAoL~}YD;!WRcq(IshKOc9=?yTiaVDtj33>xeE_6f zBuciBQur=908aoZ44o1mk&rJB3JMKy0cEMs2X2efq)ZTKckVnhbM4lH_bKl;zjJr? z;@HVOI|eql)gdgi1YlS|(jp2nE&+VSUib(&6$Z1Yjx11k2gBPkvv^Z;*Y-0rmv6uO z{=4tKb?frX*a=Xkc7pVk!21*f(g+;h$%#^!;gnSLAz{Ih?o^;&5Ek*6&4ELA|pR$9M1OZfgQpDNwSAy#<#spdJQiEA}pTIlOiJnKVbZ zDdA`vBL!`2L+{QL^7&hDz5Brj?+{?L_s~88*V_{4!=zVIJI1q_}$s_7!=8 zNIoTSA)w? zoXucj703eugZu?_QeHyXgHyoMH@xS_IAXaUe)#^?v%9*QO45_!f??EvDi%$&{G?3G zqojCr9i*LdNnl_`0(f7!ct8BpKp)*cwCmvXm8PV)96%6(zd952&0BUJoS47;=KQ{TDbIS{@+C{4t1n%; zWI@X}vY-lrW8z@g4~9M2T`utt4B(*uge(!|(+et^hWG3}GpjgR6XB$%x>!Yh?K)#4 zynHRtkf7yL)EXDbw2Ww;!2mxAA;xF9pP#>kLj!IjPBu87r-Ooe$NmEo7Z2pQ>!_%& zvvZ`{puFztmA@$Z0DRCghUGO3$|0HnA>_?=1cf(<;DaLKl5@-3wqX`*i?Uh1d_BW( zg^^cGNu~?OX3c9we=*31^wc(xnExK=>SpJmkLc4%{igB@zz!U|x+&$tuRW@4pl8iL}Y*$`rzy1F92;O%N;8r z9Ex&z)An;asG8OmtIb2wVUmi8VFBF72&hS~_59Ug`2k}c+ZD9>VrfKhP+W+Ep#{xs6~5uW>iH_#u_a-oyo&b-n`Tdk#n3+x zOoiD+bvtkO8m-eeuB|Id2@MF06`QX!bF^FoQ~xL;(fz(UUqT(IOL{HvaC&{Gxa!IR@q=gW1pC)+7B z?Z~9GqK1*V8!@^%qUwU&h^X-7WPypUk?lII6|4SL&tF4vAIQ_(fr_n! zP;RDVmDLYUy?KbC#VD^Rj*pAY&GIx{YiPC>(QWE0pyvbbL}!iqie<}o9Et$nq#P$3 zAD$D8fbeLD^_t$Z_usD2HH@k#O;1S3%HyxoS*yDmDn24w5!I@(0yy+qOZjsf zqj6tN%6qYK4ddoPV3bJthW?{hK7Nq6dP7(uu5|LNga(F){sN%-V$DXCSzx5ETA`|~ zufKDDW-yVdUI4w}IoT5qXwX%Hf4HQsf7gX4U!CKxHRnSSOQ{YtGt|>tvwYb)%T*-S z6vVe$rfXZ}CE*^p-I5EjesR?T4r?GP0f;iYuyXUr(K~Q*YclEZxYaFdXGdI^1aj_`>_R15|X^02yn)}UFKDz(ro!htPFOKc$ zZ)#B9n}M)5D99H+IC6o9CoZ}i?63)-JOXBmDq9B+PEF6>!g=C7z=O=qPEU=VIeBQu zK!0-s2*~r(lM^FhF%J%g8X%Ahpj7av4z_gYsNTVmQfTRILkCCC&%#FW0m@&WojP@B z&yK;)8fdwYrP=A}uy)76e@x=z18L58=Xc;JEd?_Yu_%Ezj^P2$K?I8 z@#6<~LP>=yEhTS0I}?g_MrsPYIB;_W5VGm^c7Qq%`i6!}Q*tXi2KSu4c>VTU z?>~I!jhi#)N006rYJ)2Vbo6wkp+F@QK1eV$gar9Ze6a|*d;z>=V4o!djhGtp!DGJj zxcu_H_ul{D-Fvq#P2*s^xwQ@`DEYW{%gn~97NE2-#N_}q_N2T!%hADs3Jzy6RMg~x zvgU#9$Ij0^c=+fMqJ3^&gq}XUxoJ~bQ8tia5kQrni(@Hqy%B>FRnFn^c^)iVI~qZI z2?95Zi&t@TL2&-Pj|Jwln z05LA8Hw_ zCZ-fqigDwjaZ;7BDeRcWXqu^r|S#iIK-(5pGwcsfk%h>B*%D ziE(iSnQ_UW+YODw`8zQIepxYz@QzDDdAQWOFEr2U?pO2c{3&5a4W3l9pjmk54LROiz7-aT;qV1MsG zUmqCVS~m|2wr+0iZfzOtY+KRxqnt{0M2s`VN-f_Cjvw;7D;)aeC##qOkq|^N1HVbGE&s z^xfM#28RZEyEb=pbau2+ko%`L00T6m^o!Q^);86)r>$*rTYIcHM_^(h_L#%Qm-F!8 zIyeSheQVoLcNe9LviV08Zbx>_f4=j5xvibOtv%We7&E3DQTBP@54IJKy>nns-4 zuFg)3OnaMN+avh~8(Z=YDErRH%wn-IL77z7;WsCD4`VDhE3+ESo<=T$VYin8=A)%||GDco?tl2%Cr>|m=kAr6Ge`Dp$7Wtv zQ%V4W3$U4_6Ib4W>>4$xFxQCVIF`siHvH7Cc!!NJ2@2=-|l@BJ8dRC1sT4315LJZtYceBsKS z2Tz_pee&UZcdyQl9XzmesH+9jj4h++(N1 z<1PYTULK@8Zhu_tY0&S0atTm3$khIQ<5%vy{r;0ro+8Hl=FH@=LtFdNg-RG13gMDa zh&yaJ_QJsmjJ`7epb%eh93o(n*eT*t@++DL_Kku?{n1CCeEQMbK(!h_c5vsG&gR<6 z3fMV-ECvp8xXpyZwMhsrd+4_k7YCqr3%n$OVF{`E6|IB&CWxKrqfb8j@WF$tit(cd zb`N$o*H4gd!Ecs;_u7FnT|uyrb8nW^J}`c z1C{Q^y>~zU?8%+!L&KY^;L;lomo4}U#KLw9So2KmH9FgKp^M=3qw$f&my7qNO?2o3|ero!^t}qPN!8&1{W@B(Wlg z>F$82?-EZ?TwVXG>>6v%)=gLQYxpu4A$@X?EHsOgqc0 znfpf@HhLL5n5_k9m5zbFmKykWG*wmCaRLJU;XNkv_VM=S(e3ECw(y0WDKVq0Wyjgu zgRX1M8C0jxhAMdBxk5KstBp9~6*`u7K*9v*rkaL@Fj(RzMEhZ&VA>=0kq57$;OM0E zjg8xK)7GgCY*tt|9Vp3vbmF50rv0N7Fp@l{(%4-5D6PNbK#y zwzGw~5)=%uBW0Dh?Y_Fp!I-*+(NYDE%;>ae7fTz4)mjjMfj{CO_xOuf#T12-@+zVc zH+x$eY<(ynDa|f!+;e}sorS4IBb;ufQHU?LHM4fM*3|+@5D9KpU%1C#s+m|9!eh#C zityslY=KM+nD~$=X?AJz?t6#n=DMCu<(sk+pzZnE7+bS!fyk+hy2WJVX)Ird_+8xN zmo$cQ*)m}5ikVbfDu9tu1?)scjXQ77dl~Bo)K*jjP%0_a*WT3H)kY6?CU_%|pkEzu zv8`5H*Hsw`X@VOxZ?=OS(a)itg(svJHSbb9$h9)`g^3q#FS$8B8%)>JOjfU2y8`%4 zBy4!?I!%qW6#kiv0DMJUd5BP+z`v7w?8NMiOKrKJ{? ziA;?R*XgY$L`&KT;$5~fQWI{%9)6khazkgh4?HHSe z;F{6~UvmosU2wPocAT=jaZ&FI^_6Q@s%x*)-@Z39L?qzKaBbtmq1o8G0PM#%C@LYV zv|-C(#b@7M4mWr3jtGm&tPi)gG%?g)wbBSs-~@(erJA)jfMpzxlVn&qX>|I144=DFO$oEw&?lQ&T{QFVoUoy2?s3d9ESW-;?6m zNV$Sh^b}$g5DkwF-H#X?3pZ`vdvff(?|*(X-^tXR%5`^h#hssnwS~Eno{si1RV@Qk z{fbK+N#Q;mU-A_^1^5a$=OdP$fUjf})ok81b>{NZ?|=TVCD_T_%+lJ?5yX{t>#a=I zE?c(RP+Qmck``Je)r_}Uw`@S$Ddw5(T`}+^0tAam!RZ#))i-`L zf{6n@{4zd;->9<4onvojO>^N105=tvUR<+zbGB!)=m^0@9yaI#ae61@Cj?kuc@Z{E4t8xJ0S`Z>zKiKFeQLtA=V zs>^Zr1z1(MwWTJ~Vn{pjh_kKTK5{Sv(X zclUMFmKWj91!{5@LSCftQIH0>!{^G_Tt3&0W^WCFCV*d4OmcpC=kWfsid*l0{PgL^ z58t{qfAP$bExoNZWuQpN&&kY15Ck!x5sB`FjRfU+Zd5xvK>G?j0k@T0Sl+gE-BJ)paEB=@O~VLs!IXCRRD0=f;>c2lDHqCkk68_*j$b~!s8v_90;pF*-2Wr?mT|+ zIwG<^|Ma7W_pi)Np4vCkRS*BpBE(SRG9Lqw7zIBBKQ9hb=Eh=!yutyI&urj*1>js+ z(bTi;=(#KJJ^kpDr;l#P$Bt~@G2Bs^o0^P}<;3KKBq;kNBs9=hEW}<;R2?ptjx_{4 zeNkv=d`5Xw$Mz!=mu}s?fA#pj-i8X|-7fJHd3p-CTsB}O0Xz#I8b4oOp_hOygI-Eu zH7+{Ob+sh|i7X>&Rz)Me!P(LMJF4RS!@OBeR0lgd3o|n-u=nEr-D179wVgec02(uS z9F~j${Sv(ZzXY3jw}mB?mN#@Zx3rWUCM{Bj%Ro>n+STthcnHSm7Gq0)7e5`{7_< zZUGko3mJd`pbWBsX`|Heok8jcd!)`f7&eqv0y7g617kBIa43=Xn^_UNfw2WBD3sm_ zmNKZ>WEe1;h=vbVZ@M$w4@5gQ!2tsfwHxya^J+4)l9S5{lC!cilM~VbjhvN%AfnWq zjGT;Ylm|Qq(1Vx@8a{ARd|hbHb$_^Z^3cKKeLIJTdMUlH`ta*TPhVfJ3i-P#`L(3? zp3L3>h7Ej2+~pG$ABI=>cd;ry`gDBk#K_j|Tel4YbZTJx&Ypqpq3+E)26|TX+?T;d z1Dg)8Q}{%~7h*p`RF_-f$L}6IcBFsjK>t90e_wA;_x7HyLtUGXclD_Byz1^*+C%B4 z^n5F`v7rHGg{tc?T& z$v<+T6=DIK!>}__HtcmlDC`_(YZCz}_&Ui$z-K#cFafK?KMHyXxGbRb2uWSPyb;K5 z&KnFp|D}4wg0r2h4c$pyQ44QG^Vv=|hTIAy#VsVEE)K)mh(nTMfNZruzD@YO7ye&* zcQF|;p~!>dWMj-JSC&-AW7U6Tq1;`9zk`GuLnaV#9PNx*BwHeCquf=)|1Y%e-qj-2 z{Ue_jkBf#Fxo$+hE7%V~q5QyFrkDciL~OGR11KPrKp+s)a=#D!Es zvXGbk-%6edJos!ETN4JUCE>rcN8rI@JKLB#5q5_ZWxikQ9>wDu4hvq#%IXNy>;E0B zUm8Z?f5T%lY>jCps4Zz>m@&$(j&>&0e@PN@SWH)Y6GxJixRA>e@d7S(rgYMb*WX9L zztqnHnYfvK5wfK&Bzd@V*)Dcwc7^|_|7+NF zSqwXKTaqi?O3N0X>^lJr$P9ZkhhkD&*1{W5l;vz^hL<9(U?B~2n(bn5VM}OwUgp^- z3qJ!I1ILwWVO0R4xANCz@o8PCme$IA8>w1!t*^-|TxgaX(2|-8XQX^5;B%P_JInP2 zq_Q&Gg(M!6LA6*&DpDqS@nPk2FyEleRly*+gnTC0=*mHjE^_ za%WT6KQU=mmiZ*Dz?EckN4uP9mJ8WR*hr$d|DEH^a56V9fTL0sN%;g`BBBJ^b>kho9fX5l!G3{OSW`iJ#!Rg&%m9)orf9=Xk{ee_WOXS;oK z@5fg^Kfn7!u&aRU9`N#gWf|4lpHQe>nLP^Gzd`mmH&+HL^6N)0DKDSB_}zyU4sNb& zzvsW?e~#8D`&`TgVJxcuHU4DUa__3FiopPzo3tpM0n ziWlT^b)j0D>4;le+d7mI?Z`6@k~Wy@1a<%sT`3)pJmZ10!q#G~1UC4N(1q%`t_-T3 z*_f!PBc3cT@OImc7!YxS&_iuZ&3ifOWG>i_{&B@k6 z&$UKb@;?Z)BhTEK$Y!PMg4)`pO2P1J0u3YU;*5sq(n)o{D$tHR!^TCoH`AeRLKZ?$ zycE*x|46hW6xKHgv9-{rlPnpp-}Zkb8rsctrPHkRXw}FDdBEx?L$=kmSs8u(8rtCMg9I-pQcT z9MkyU^v-tFxWs|kh|~#l%zXY z8(CM77nCieVNN?aSetApN7~C`r9i`Yz~$85#@M6`#5{Gc%epwz?W~Q>HP)j~lI`b4uc zUdXkPNUyI^7v0g;%(xWoFI0*+mXnjCqn(*aDQQBHQk=0}&~arZBvr6TIX271(ayol zxU99UwNY7)>54;#ow;cqDOXN1QJ6ot(j9EgjZ;WcBOh{rh_kP;0%VEOG5A&utV!waclXq?6=6X_UEm;;i<5+?Pc9>k!Rqv8SKOc z3>5LU*3OjQAkT13i62~|wr^=gKVC6^gFI{d35EKV*?*HfYkQ8?DEnN_{@?O!W!tOh z-yqJ~URM7WafWqbzus6UqHnOfM=5W9e&*)lV!z%*C%mt_yI-ki{rn6|*ulzJ&ld`3 zpK_~5F03yU^x51E96quPe}2ZqqP8$u8`2M8Sfz0J8H?4Cw!w5w05rnB=!IM?29}}e z8c_!z?UW~I)CD`Hm9Z|807LjoUC3pk=h^tEOa?7NK$TaKR?5<-pRp2kJXH%e^)tPi!)?nyVC6}^xc|}Z9)G0 ziURZVGcNXVoAtWR$kt0_(637mj4T5^u+pVBB46gO2_k$oXB<_`bQ~IxB^O!#O`IVM z94_oF^c{c6@^1%_a`5M`UBOUe zv)<5>B;{`)Di-Qz&}cT0W~8zrW&Pi|;WTDzZHOdF&#UT%G)#O)J8L7M*40oq(pDNvc!KEX4yG;r3l$+?S_T! zW%Y*Npq%wS?>>BRH!OiKTg1OXIqT^j+R@+DjZSy7(Xx=_U`INKVETv zgD~s)3573neToqx+OP4LxT&l5DT}4fG2}|n-L>3b& z9j!H5l$8`Mit3->e66O6cx83)1*;K%WWqO$qFO(w;-Byh*3#AbUC7{;p8m}(4b6xG z!Yzg}2q{^b9AvmcYbi1kmK-%VWc;dXX68KknVX+GKY9NA9A%DjiK2LMch~_LzlXmw zvYN_~^I5}{`MJ6IOY-Syx#F^dqIfwsi`>s=uWz$|ofUrdF&D_&i;o;aNa~@nbJJ%I z?%T0z*Qvw%_8mTQwA6fs))K9k%heF;{IX-32 zoNyJVXuMc+cuGr8i?TvR>zftT7pA8N*kA_Iz-YY$-zA>AO-^YUYkgmPar)f+&U8aW z^?$FV`b|7HiS%#lno=x0B|iE; zYL;J~z+3THd*l2BT6Ato5v?q&e5`fg!ouShtI97;QKo)6H#MmU!}D)QZ!~NalM_?Q z%2!vL`Fc$Mcc#L5}cUvzZY0(5(Em#># zC=|-eMVRuK^gk@d>|eTM$x_Nv71i(5RN<_mWKL4S5>Z+99BV|4dUxHOaS@IIa zmMngWvP)GoDX+-tdZmIaYAaNMQlP52SmOo85WGz<)j<8b^Q&(hawJ)S8h{m>szBD?*N>e&dE)rl3v=_+XHFhDdUR^^LaGtCf;|(_U4vri8=P#d6;cz`X{R7};8yV!PTrrs5$f+|r`;P_FdU<|+ zkLT+J^F8>n)YN%1vzS!hw_To}yMCnDSh-%*)m2q<=4QxbYg1rhUpv=qs$4H9p}u5b zR{5m$^4!e)+~q5kx@0A3qMPQ&<)p4}Dz47Y&dttVy2^RIT<~25lQX2$Hx<`r$us$b z#D(R8okulshBAZYQgsy%=H_PZ7HVVqU`3#LE9yXIOv=?&EEn=VlYR3G zO{u?5>O{$0<)mGXZmBs=&dKGZ2lY2*W@qFx^1E5ehs(&|h2EIKL$X{NuFuTPT%4V~ zmHCgSnyokGcqv&eP1ogU(A?~;6y;OARDI=X#lq7UtD0}jQf7aeo1M8umMIpCx~dxW z){J~sS@r7nYZqoo@moZ!y(0X!FEoh%fz(Id-Tj^MfFe^@BQ)yd;OEEE#4_Nxm8as}nIe|@36g#R2x^Cz=kT`3Tv%YM{w z`qhPkg3DBv{q!Ff3iv0ME&q=Tg>+=qe_kjEInw-33k6aILHe*y1FFh#t?hECI>P+l#9hDLEAk7+F%=5=S+t0<6u)sUQ(g3&vIzezraW6jAz}rmF`T#vTFVRUV??&7 zf2p|yF^#JD*HSgSaH;Cj#Y-vp3(kQ!3@*iC@JqzEDJU(A(AiIh>B)K{~ z_S8Um_!2cNK@w_Jf2DzN!!NynxFGQGA<=36L7^UN)R&MBlhVIeS6#yvdU^;wJ%P)> z$E6<&?v%#bsEDHe6Ujq{W&ZBX8`rNO9{RfC%9Z)+XYC;@m1jf@8YZ&i-Xr_>?c2L| ze^b@&{X2J#>}abkllnUwgGLS&kR>vyGWmRBzPA~t8*+O~IQbRCCPDYcX=ZjWpEawf&kO%ojN6(GgzaHzU>4}N+M|4*lmZ2uf zj#*x{7>>*I)XXhIkTZJyJv7GBtequk}06k%1W>Js*KX3sM$OemxVl zT+>^Ialn8a)<#(sbm2>!xzxO-aTpvQAH9%+(iF`f)HS1IC_F|P`)N9y@X@QNze|p+ zXFQf^QgIfRO|r zxwhf_B*`tSz&HszhtKwzjTKDamPB-E#({<((w)a3X~7iNcGFPRb(6S5R7 ztcGu2H-j}gfie60#Q0R!a__z~lV_D*@y9LRs|iKp63s6(CMM2p$F)3{<8=T_3SGF+ zvKAGPnS=rQs|J@eV|;RKGE+^RT5@{&?3l{fk4Lv}4ANKET&nrS*u>b>`E%!|rl-fr z!5umG>1kkN`F}`z53necrEQoQU~(YmoIyl_3MN33fFMytMG-_%K%yBi0_M1`Y0Zcr z3=ElpAtQ>YyXz)(!&x_<-E%hT8qx2+>lwiHy!(FN^}p{mLzsEGx~r?Z@2;w@?*0m5 z^lw3FcsHlvI53OFwJkOH(9o)^Sf@p#4fSnXj<%qV)KfrP+t}twl6gi$-LJV$qi(nn zlq|uo(x}R2d0j1Da%B+JoGtjHzOmWFerIbV#&~@br1zvP34&BTeCgK+F8_&~SD|D+ zUo)<;u7=4#zLe=67-?is{5|ZmVS1~xU$EF3>HvBCg5f|$#!Fx^8%8)|AD~mK3p9n# zv8Nu>0!QNo%?*sj{usoVF$nrK@#_Um0I*t~snL``Isd_8Gp#ey*V+76Jm^oa2x@;9 zYVycf2k3J&I5>|_6BfNDOc644G+*Eg4a5VJPJ~H{=>fofHg}l1Gn@Z}IuBz6Q2VKK zpE2mnLxShbL<8CWg3W!iL&KsYBBQaDDKX4|k2&WBJ%yYfp!ezd%?=L>$1zzrCkh8U z`1!gySnFUWVUlPFe!27BySInlAMC$&RbI{)R!6yT@m?_u>k?CZT& z;#b;qqp$z!br?F22d-?LYmCYRiQlLrGMQ$RpVM|*o) zTWe>5z$CG}w@uluXlrll9&F0eVWxn30lx$KeCNAC<2$=MI@*;37jVQI;ls!bFsqG} z{SHOXW?jB0=t3`&AelnZrSKS;0Xn;t%APs{iM$sXu{vH{cZHx?ys;S|SfOMoe`{B^ z^%iMiAiKZau2gnFZU0Kq+P`FE2Izv4-+#i2d!V3ngL)YbX+gcK-RvMcDB0FHdP!1bm&9J$@ zo4(yea%oreB#BisK*ulr$wKa&UWftmkZS|fXyB`+fZ5$JaN64yeH%c|;y&eZQ+h$& z#%g=sy+kzyd_rbeONfB$1p^1hld^j&FX@L&kVEU$`6E*R z1pTkh7?@vVM;l{O7 zUs86|dO-C8bgJ{d^HXu()?T)C%cf1+jyDl)XJ1Pu>1BU#c<2G0UZ@o}pcRGuyIm2+ zLETl7;rS`4!C7s;b{xuW9_a7yqu$WgbUF@=fqug1WyoJ{h;jde^%d$2N@Z^rIe{2( z;q#{}l#ta!WqaouarB9nj#j4io}P=+lTroMdGB$R%C1Y{fzbLQWEe}}zV8SI$%tTh zfy6?4M_WfehvQMu+}+y7ZhKmPX-9%7hKmO8Uv0{^&YrHG&hGAZvOrSDPmr+w|KR?x2vE!hHou~o0h+n`E0_lA zF97fGG^rymOdJ0l`a{zs#T|z(kcspoaGca%cJpU@8+ zdCuIGj0@jb!f%XcMudk0{6j+{LU69q%$e>^Hu_+bZd1m!ZY;@9;{O1DcbZ#~3+5v+ zOZ4sJzs3HkHb5{aD3nC~FVO$&W+*mz@gabh%(ZbZg#LfQ{+(}N|2z|@&2%pv>p!ty zpR%Cr+2RKxLEtF%7m7^Z#C|;-aRD)ig#U^C#zORg8`xn)(iFbNem$Y&P3#|$w+j1> zq_43btkHDL5*ipI%rjoQSAR3*q@|DEiMwNu-{fVhW%2^%yd8D17z?T`RR-q z-uP{=kzX6FjhnGWD&#j5jv+r(U}EAG-OKp9@HO&F7|H)`_8R)7XiPTR0njfIjzK@@ zRZa9Ox)1*~^rJU|Ey45G(4QnhNo>K#4D`G=ui+T*Gd%$!`W1W# zW5$3V$E&b}9}2`{$nQ?9;!Vh3L^s}#A-}1LIY?+&$RPh6AioxF6*U^4GKT!nB51@3 z2>KV(Kk=i`?}cWBvxhCX!}tI1u%8I<<_ih^C*prW&Du-^!b{$MkP{Zb}xMf_ z{i^*J^p7OLv4sr!yZitwy;E7{?2azJim6QS{kd7Uv~&ez=J^@ZxZukb{TbDF5ft z|7a14(M-5Fyy|yd9eqOsoIYV>WDfloIgNQ~9`dzu)TD{Ak%_UHJ|1B02MKsuIE|Oh zdkRG=8!G}8tO}OwhszhsE}kvBV9#Nc4orwlI~Xik$6EIzt`%RCw?5q*&lrt@%b$ly z3iIa=T)uuK{37tI$WM`*prL*!oNRh%BBaJ+>BaUqMhmO$7X^mcwWS#Hq-p8!4308} zOTi+mO$$zeCJvOVRzD8bC)4N8GvQVkS(bIrFrxXObYZ zvA(WWUemb@X-HZa43EHx!`pIs{jtg#8B6wCjjZvIEgm8PlLH$TawHkGHFYg->v2OH z$+(p_?}1rP&5WjC3x07pF0XCgvA(fJCaacJ_a;iwoWuJ2$tHe={PP>+HSC%n+lutL zUX}GQk89;+7L0tTl5F0;?N6fEGwz3)Ymh^2ee*PCx*j$>L^<@KwU5i;EUT&QSRm!u z9ILC7)yZq*(=ZMhK8Xv5lX6*YhvSTTc`bxl(|pJrSqP8;wWQ$JahGc$yqdZOe?DJ- zTdf@KitlUdmjcBo2j*pmI>>tF3f8wk46NE0)h#QvQ2ITi!z3$#U^XOB11`?H!Fb3f zBfU=ExK4M32WqQ_4ku(avX&CTgiG=o8C!O*_WUFaZj-l2OA>Hbp(CJ;>i3!9%<*`6 zEoD%5&;}W3^8VoS?2e-k)m7^YQsgpq+5MXKd?+>6Z!^v+!;%K1uc>Lsm0)!FK*%*D z!|~+V_!Zir?NK?pV3&`;?iBvAWM9?DY(|<@@TDGR^2^Mz>jaP2J=5wH=H#Tm>)w10>L!uLUnaDHU4PrVcx;|T2?Kq zX1FC=1o3JLzUP}CM$Kg%^Z0!211*&@Sygpa`#Q17NtEyvUp!xl7DKyScGJ<((iRrA zAaQMN;|Xn&i>Ba-#annN>za$qKA%Lyvg+yzrN7}xv=3jWu&tJ%mha!bwQ%$1bM>g; zlUkX)(H`vv@*gaY)S}-hb$thg|HL;u(@+EQ+PVsPLp7er(8a+0 zW0^9NX;$jLPb?23gQ~W8P(0&V?5Bh**^A3n>(1cmbC2F?=8Hd@S9+E=)yRMXc>E_a zYc3%9k{thpU=O1bRjqNT#Y3JjqOQ7vK3B@B$%Er3VT-tg;)J;5ac7a^2LIs&kG+Qa zBU7acE(qj=1~D(*Q@ts1}NYQm`wZw-EEU6{rG8M-?%U>y1Qhx|BrF`2Vi&k4ej zu?p0gau9X_R$=_Z%Z_DZF!>UWd^YD96n9u3`0pvL7NDy_cc(}2^k`_Z;n#UitPoev z)!8&s)ZuL7YU|+6bVFktB!m-+tYFu&N4zr{g5P*LIF1MhFq)c}>my4L!1F`ks)F^x z7Wl$g4XozJ^%xFUYGp38qVWh>t6<$I9nqmb7H>rmN6AL3QOM^ClE+}(s1eQ%cuN%J zWcn-H@4(mlS6Fwv(9=&2`QHAk{kK=ECX^R?Jma&dHH$~E9@4H2<{S=;=7gsU-A{80B8glb53VkkcFZd ze6U(RXowwwbz>$AjCp$n^R(^ybm7L1_O@0<%hg=z8?f$jUZH3&L#PL<`PY`_jx&yw zIge*_oM4a5`+7cEtSxQb7Y%r^9b~yGx{hg4haQ3T?_Dk`TDy*vcC<7jf}?40l{Ukk z(J4Mx9j#rYRJ5>Le(&37$n&Xdhw0m@sI>-`!Kna9cPT@WmELE%T0q^}-Zhgk5QmLU zlOvDC8xmer!1>kE+P^}JZ-2h6t+`Fnq6iSFB+PIy?vkRpwcj}_>X4iAR>&B zb?5|WpZ1d$JU(X;)`VDXj}>jF9f$`W{4Ni9P8ZRI+L{dc*@|ZM<{w)6wxgffUqpF4 zuJKz+1v*HJa;pTHKJue584}_IERb`51sj+o;E43nDDI1m^S!x zCUv1Ugci-h7=3xVohr~W+`U;0cHpE?=l#O9Itu|b_a}3?+V3FVrkR3f`btFRsiS>CrZ5~KMfuBzYITJzDKg*~b_2+8u z?Q3Po71+v)*tn{8)bep_v!cU!g#HKXbFHB2UxMTsxt$OYvS>Z)ei_C8#5Jr`wt&91 ztwEt|!V^RpHKPv0&HV{@KCE)XJh3@T<@PPbSI;`9*zGNhSK}bDzN`=8HeO z*7?+RA}k7du$uowZe4qDC<)_<`IF1DIZK0}X9?=@kRzDi*3>|sv7|&Un*SEu$-&N{ z_#9}=V25caI7r}Ddx{bbFdo`EN2S(7I|sG{%l{73U$AiQ z3>4X6@_n#Hs-WV~|9iIZOivA0tbCEFxH<2^trST}B z?*O3Nko8UW8&8mogGj;L54b$#zW}-fLx>C|#+&lO`62`8zo-CR8yO%6eSyhY#_T5* z^KSs%kg^~flr4t4!11quJ{4K33mzCB11HEzC>R5D^HD&DehS{c8*vqgoZk5>pj!|T zOZZe^c!F|3!r$3rfUfl#(8&jY0#x1<=Qja8PD@p`36llfMy~-~GzRF}L=TCvM32D9 zxYvOG8v(i#)4T%X<6r`-B0@pJD54wk#}Hi`CkJCbVLHe!uK$7PI-tXfw(%+C1Y=zw z+{}RbZ+-iW1XJoqK;1@&1vtiE@WZ(OK=lBIJ(JTg_lHDdh^{Sk97S~O?_{dUaNw#! z^pN&ZL`P@9`jE*PkpJp22In~J^);MRXJMKMe`r1eoC`kD~cR z+$%GN<_06>lOSDHXfB$hLi5M1)icnOEY4F;`;9jS=2q~BB{E?C3}Ehv3`j`75gX1b zI5!e8aQ+x@ZX^^sT%;7=3QfoGoSN2u6wYZih9&$rk@JO)BbY99R$=;MV0si^>~e|H zJmkBKf_f@tIczru>Y`DH${)5PkS-J?y@qt5O&P=FpMj&09!9Xhe~sxT9$dapY(}6Q1${n)AQkV1{!o*0R7{}vcToPE zpxgztKiH1IIFfSm#$epzGK&34VDjI?I8!OcW%9&!1ja$~jBoQ-7)MS2uP{zHN8uq+M;#Pz zh63}l1`l2tH4QbyaN;*~do{#6V~G~3`U^H(C(!LRHDAG-qDf#(!J!ncqp8U_<26~& z$ub~So>_|p{VR2-@e(x->#2^m6p@5fkzZi{qig{e5jXJeV4lMw?4R(u^SGKEiBwmQ zrT0`{S6f@cf$C1v4>JESFMrM2&6b3Sz(qc9M%J3O8?shq<+@RvAl_6f1K-F6E7J1T zX0S3Ir7vHe7(TTw;6H6{ZEm^YNnR7up@&o8v|!czDXXrCk}~wPyfdxno%5Hf zYSz9D^S8RXs^Zf5V{3d#ol@sLCJ#xM7mWcX^e4HZrkYg^8?t(i1dkD-z@L5^i{DkX z)&5gTt7@-Qk*OwcZH(7O>Hn^V@!LCv(Tl0#Db@0-YIgN-MFfsy20PzLO5{})l@+q` zK(2lIDLD*CSfCYk%E4uIinNPJj>*B2TT6!+?8^1>o6Yq;7_P1e z5bzCVA8#c4wW_+jGe?KWVb50f1&hbXm&SPIdT$E8m{9D$*#48B+MjJ|Y6d&D>{Yi|m z^c4Pt%Dym)o_<9P{VrZkmOQm?DEdFlzCU>G7b>eEKUq^Q{PXI9N9LB6wo_cJ3?OMx zuw^f*I%m9hdTos!G_&vg*{SwmLjaHZK{=kmy%&=m|Ffp~bv zmn?69#97tPt15yqY@rzOzvp@tRVv{psH~{2SF~3j-&>e9Kh)CZ&1Pk8?_#|9KC^0}U zX>wy_WworLy3B91Q&VSwcz#kP;OdWyJyt`FTyeQJfhzu|03T(FKw<$wEquw+rfM`< zMa3n5%7VrJ1C?ML7=TJ-!sb8HjK@f*L=IJHU{PImw>1#NcnjbWLMM=+#mWL1k)Zx2 zNl7V7ahhxxt`=11KO0|x8c-cxtffsGYCLkHYymib&uFi>@eP0smjd1tRKb{I>fE0g zD8dH@nhBXnKByPmTzF~l$@R@9|G9=bp)+81m|P|Bi4zRNhyDUya}L}daEwrF3*+^s z5S8Z?Jwt(w&k^Q`D1Bz(ltFKbq+|danIRuqOl9%a)L9(%Gd*oBE!|=08CsF{deP#HDG7TUf%0H(!;FF@MdyfjOX~W4-ERY?j z$^Ao^0|yeLWf47_(Av8O{wUhEqKsgM>m#now*7neUpRg&cLc8CC}_M9PvZ{+!Zl=@ z6G1~1PA8@48s22o0zqueom=6wL#~f-tn0@~CyY3If6zP@fHM2#&_ z*k^I&#P-<~NQnHKSq;Mj(KIUA+)sJptPXHP5r5%?XjFILl*DdEV(yM(WwOThwr1)O zEXDKsRD{K%T=K8=;49kXJ>RVGN0hc;m zZzO4}Y~GJt@#;?UQZzKkLx7W{_z_IA)Sqc+B8-K)#3PNR7z7kY+n5J20PLFY_E7i2 zn+FdMIsod~R2xQ9EtO!tIwL0&H~qx`M-aQ`LD8I4hv&tF)O>P?5Kz+&3)rncOSGjD zsg{;lieM1(9pH3QP3bENW%*62tF5K2qYK3r3Gkfux>0n02@*6rzXY;HsfExi^N;LFAnh3dbN?mu5mf1JQ8^F3}J^6z7ft zG`^s4V1bVcpNE^3k>K=^z;xSzeFrWaKc1(BqS4?gbQXcnXOh?09F2(%{pF#+dkmWm zkpCl`A?fHp!OjS>1-S~D#i0E{GKR`gxV{<00)hK$R1R>|_BA?3l0^#`NzX9Y310;9|!e;Ca7>FjNkuCUC zs5OSj5j0eZJus>5;P*F(tg@6DL%u7mCI@xFZ+xD<_2gL#-oWF# z=15DoUt5hQ}dj6cq>18;Dc9ct#$7LE~l2V-*@x`4m8>HHOBsz&yi%fTAg$ z!O?)Dw^7MQoY!a!8N3t-;kCcp6NwC%=8%lxF%yP^G6WW@Gjmo0k7IENH+rGhYdq!? z3!`x)gvq}HEdh?2h~K0b225G6=+_e<9iKz<4=v5S!aZY}A0QpzA89qAtbz>x(|;7) zhaWtm*#VOTW-5Gvoj;h^*vRy2X0pX17GeXj9?PN0ozG`uYmu57l522(1_i#u8xsnX znDiY?Xeb|S;YG6~)>CQ1!zY@@G}NE7!LtAlMph~5TiON-7N}%R-uKMxh?XW-C+VDc zb7?t=)?rvkH?kmr)c8o@B_shn<6+Aisj2FM$D}lX4tbC|z-VzAynljGWI|aoQ!xI3 zR}j$X`59Uym4?;<8SzWBC<+O{Ar?_Ic<5e4prXfb2>B&G6ZvCM@MaS;bUk>=H)fB4UU4l$0+@PD-IF z%4UT4F<*i>E7XCWAqSfB;OeDv+5De~Exc6x&}J=srs_Syx7f2v@t+I_ObRR@;VSL+3~a%-ls_@91w#>Sz(i~Fa19ytDA>x-v5|m|?8i6; zIpX1nEt<6P4^}Q9sryU?s5ua?!K2}cFK~q#V!U}gP0;djF&+AgI&sT1J2}ZU5DkIK zlEk?jXc|~LC(dd3z|v&>f?s4ma?!md&_$U3@*J7sjSZwIgSJ&5Ll%x!cmT&B54t~( zrKW3bYHWJ~nPr6;y)e3DmqB%F1OGm*s19UJYQ3{XY1B2 z>(5q|%bI4g@~SV^p8y#OWLgGy3o;Wm@_-09LYCg4s!P=u%PVTP8{u4vxz!ijHaJ^Y znu*qSwf9wx)46zAelFCON+X`x{Oc49%Xo0npCM|soJ*JM_T^rzk{z%{`xKW~HiqfK z^jDjhv9V~8Xj07uMX?h(=g?e_hyx5C2Aeg7_c&_PFP$&1n-zNLlI)}_PtBtCe8U+x zksA7dL>JfasiilZZ%8p`kNPt1GCY6}bT8(OIw4CAR(I(iMk1<8QnUt@_#9Y=E-h^Wj&9tAas!Hun`pY(G|6 z9pHq)RAy>G9zYOmya6SF4Ej5*`7w?c^7lMfXL>pUJU|R_{t04+bNt4+5+G9nB67fU z7H$2(H~2t+LtYvnEk+ycMbw1Z-vjKy83|NvR1IAHLDFF=$>a;)kZ2U63Co#fRSod? z9El)B1fCH!h4?WxBll0#n8^&k5F$)HO~uj(PB9n_x3G$w*)xSwezC!T=)pi9! zhKDMFgO|~&F+!)fKdizN2P2q`txUu?mY6ww+)#pwjzIhfL~ByBk-R7s8GJ~=xL8Lf zDiVW8YYd%V5jG=#f^@WuIy0Yv3J^eZFxa6N`Uz67xQ`&fB{%8W?vLxv%$n+lRhwFhphiiPC~F9cqMskFY1jP7F=M@}3mbuDtd5#llp zMq?VI3jx;H@z?Nh*|8aQtN8H_ByBlrmf>fG+PU_es>Fy3Ly8$|_b^V`YS5*~3oO7NO*K;&Is@L^$Out^ zA|XdjQwM7+kl7PPVjxEoGL|ZQD{S)v=ifPd+zV?{JWaMmQB!?Wb6Z^E9yC=&5BTq?U8>YB+H)zH-0Ionu}-rL&R zjF}u2zfBqm4JOKftC81NTL;HSmL)J(w7a*lr4<2GZ7r>hiq3fb@czcy);3zYXYrm; z??u&A{g#jfXSxW~{5uf%z-sxdb-Oc6o(Zk>t!*dw@7Yrs=vB3aFUywRq0^&VC~d#%0@-iqN%9z z=4gLG4Iij{0 z?8E>>r_!C-!jF*^S1knIE9IgTMSc6F0ArS8XKm-D>2_Kok<`e<*2S7r(BIIVK0#OI z#n>VFO)Qa;(*pgN-gL{!6P#Fu18{Kb45Aw(ucY|%l#W$_4*>zsFSN9^q}nX)KXtXV zumqzvGC|P-q{2grBRIgUs58HqsBo1<^c6zOQC}2-Ju@)@xPbyY$FaW|1z>^fr;?h(cJ)=QrOlRoO;W3PkgQ*+n zOCg|SdeDB&ha_u;1JVnikVwc%)IhKVj}HW5K|6$&j2^`pBOC!8$Uw;jLJmw?tb?Ml zR26|5r3yennPgZq`#@oVGP?p;f+tizYFX3>n|nm~Ky<_S3al`?+%F_6Vu#qn|M;Lm zMl^j8V-EpKs44oH9;y;BT&OS$E8j#)A|J^C`^Z(1_b>P&+*iZ~>2m?pH{zR0MLKfV zjF7STh=iaQ1)z`^m{xis#Wgu-l97NLF-T!!BNehiZ>7IXp?~5J5mWALAxHE?D&eCk zQCr%sA(Akj0ZPjdljcpOF{F$V&vXy0fuR$yu{{c#Wmxo!EqX2%;=CA;qY024FOmr6 zWXj_+{6S9;;W{cb9kC=5po^m8QZk7|3j13dw2(hJXYef=;}7HmpDb6%Lt=7cJr#&? zBNRFgOY#)n8QQ;vI=sN8JX9{zc9^bJnUL0s7j>bh;1z-q(Yg21e~YA2oXUfu!K_%K zC81~tY7&%5{Q$vAD!$R8EWyt_TziFGjhH7ufou?L%2xkP14br3Nx(A)VNytl!^DVb z8cR@Lk*n~;}Jk3hJ8b7Jz3}sIm#v&x+@TA zSRE?6P=3Z65)unomfMwxgo8`BPTsJ}5;BN7CznyHFsGQ2XjR?%4l*J(1R}2X;p?4O zuU=0w#6aUaR}EnEW@k6{vUXm(Hpf&edjKIz#3oC?!HEx4XU1oNS!cs_1-9At=9x)# z#FE|pSXu96ce0d^6g`6rjlyrVH!Hg#FN_i573QIssWgd>CAudRsRiQ1iJs2(zETG* zDc7^TrK{uQp#yu0<=x8utMd&H_A9PlIRcWOiB)1&tSx1L0xiT6y(bWBn3i?5_qMhv z`;NNlin%F$iko|9;`CDM-M0tcZS`~Q>gcOanohN3xJJR^XH0Vv`h7qs#M{!@F;KRr zt+V&S6dkePcz4&;r5+Zh=Efmwx9mu>oO7-1)-gX9$^f8((L+6-8kd~A_xS3wvETP< z^75{>-kJ~-P1pX`tFk~RT-L5_V&&{%E820h?RvhKAvrFr5-lYEyPsE*TNwnLOn5-N4XpU4wk_*h({clWEy1SKZ8ogg{r7BMYxo?=ssIb zD$ro#LU|;Ga|yZ@Ihoj4eN_YasX_0gzz3xLl*e*AP+jZ-=1^g^i6xHE>O$YSP%=qJ z&3l<1S1p(W{Sn0&O73z@FCAKT`jD-VrzvD>A5-Gw#Z9fd3d_nv)Y7VLcxpxPWI>if zWcyfc{I*G=MfF}{D4ySFq}J3=<%cvZvzBb;TcLmy}e9cow z9ksXuwV8W2)p+yP9`w*tQ!_VK%ag@Vb3e1Eyp|4{p|r4$)V4K*nuvI8t^J{kD$OJZ zi!6C-_ZEh;ij;C3j*-}&VWGpLQ>pIq*{ogH5-s)M709SfK2p6F=mYF@j}U3w?Ofwy_Jk%r*Z`O62LB~031I6?{T9M)G8>1m7EY9eiHXj6O4 zF)-7EQ$w3t@QIF%%LH6`Pp$mTp?&-J9XPyeje}5=WuITNW5?!#yw!Q>85udNQkJup zKVG(IL3+GC%qwC8aWqx3%hf$QE!ZZf8!leHR9=B_7ubk4cL? zB~4c@RkiQ3Vy|yFcLhNga%@YWZASGCm1Sk+WgTyO7>wjwykqlTdHI#rjmDx271gz+ zg_}!Dwr(ljQChNN*Osm4uE-9CTkBx#5D#Wn5>Hu2fA>TK)lt(_`vu{@aKA-dxZFyPL0B+I_^BqB zB{nd!x6)SIccnshx*%=ks*F{+(Nct$3B?;LuC!nrsrs)~Il$t7_46hKjRI!*-vQ?T z^~*N_v;6M?b2NuH0rT~@e*w(D|ME?4M*#DGRDS|Y?8qg38uK2#G5ccvfGqyO+bgex zvhw9Fx@tQB$}q4Qs9;Ul;iJ8*-bWj@7&oh>*;jjxV!5N~%!=jWf{V6%wc=o3e{7Ir z#;8!wQY_Qa{ab%ONjwzP6_wYe#j`Y`@AqHT5&aLI$pcVy@cm?htc* zF<1B0ywpl7tFzmk4Yr;-v_x{awY9&aBXJEg<{2fEXAD&KN3(o@V2nr;U9 zGHDY^OHZB5Hdwvc#!y$XCePMTH~4U6)8)+Z1_#zzY8hTCyL{XYvD=hZ&&-w%XVyzC9cA`2aX8qe0t-P2TxQ+<*4O2rkR;Dx-w~z7DKTwL_07He-1*yksv8h6)Ix_TVZRE(gzDuuYWB!v6Ra9i+5`Jb-@?LI z*JfAqx`yV~BRfm?@7=X?@1FgK_8r`P03k33gB%R7fIw+IJ#50d2L^kV83rlkJ;h<3 zi+;T z|5rb6g3u^r{-3{t%>V0`Z$jq(`FqG5&EZYReEscTAoK6Pe3RP|$owDGpCI$D76ou< zY3XR|Xh{)Dp{GMXQhe6a*2cfO`nr1h`iPuBqkKoeCk8$OTM>n*h5KgV=OEie3Jv;^ zR4ftU991|21QH{hBK#XHQLZp}s)d*`- z47(a$JE!TbXq~PnkqY^_9i73tv0dpdrUBI}B%3bV3)D)(`~$7PGgVD$Xrm=9KLOoI zM+} zb~7x#a57ovNKeN=SI^RcTzexCQr^XgI{aRet%a^wBflf}Vr%;NqetD$_Mhw9t$U$* zameJ#j$IS1^q7XYE0XT+USw(oycQMJH7f?rIB%(+Vl1u-rGj6>Mb`bQ{n*J z@{@*6741khoSSQBGv4c1O_;ggm5LQ{`v!9LYtDEY>2)lc86TfAYkEea8+S+;edEmXaM? zHx+K$l4!0AS0A|T@9XdC?&y8@kgK+1%aF3SyQjDJ`qhCO1HFCt+tbtE`{8mk9VYGf z-T2ti);V;m0KED4*y|VpSgp)D3V$dHa-M0(x9ej5%(=4>RWpGc}1Q*-~ z>OFCikI!W9agp_HJrnFqbkXlAUo%sEhs?sA>jQL(uXYR;x}zVXPiYyMnA@7`rYhU7 z>+9>GyHnav^>oB0R(80jO6ziWXK(A7-8)Nm7VlZvMg=IinNUEoSckRtFrReZQQgIq!+F%5G#l@wg?xZg_xt%X*2u-XNAv+UyzubmY$KBm7SH7m6e&Elbc^uRJ`-xv9hYh zj)5CPx30H0G!p59D3n?dVruU?Y5I(r0U=>?;ub7UPQf+1xvN*_WM{2rul`r=`hwz} z2aa91($GC{b?D|mXEQ@O7)iHlMwmK`n>?Lv(T?A2L0C^kD|b>7;7 z?Ys9KJzG`Z)qnlQ;Pvj7Myl)gV7Qk77%?mcw+qDF(5heX6i z&re*Ol9IM6BRe-QXLUwaR?gZDMWwsnI)0(PrM-V}=*IQ7#`-d)M>ux6_JtA^AeI$R;|idotu}pIs+W%=C9vUvhT<{SL$2ZuHC#jIMC5pf1XH* zio4EHt*Vd=$-1?w)TPBw+63vwbW5% z8HP6onA&^#Oao~|Jc}r84ugc2K$;->hf{63itlwO^@8GHOIz?Ci&7mRms9GxZ z3r0>eO&z?ZO~uvrsB3I&LP~O4MtW9$ZuY9otjwHTR_@OQTT72#D3iA-dvD*mG0;|D zbDD~s2aY%RnmT&mvPJ)(S+k?!=Pg>2v@9)ibq4i{j8&PrYjZFPwjVrsvA%s^=+@wX zvcCEZkuC)3x@o3PAe|8yJS#FLZeCJK@`_a}Qx+yJSUfLkPGm@E#O!&CmSz-eKX|_7 z#_hqLwx-KWsR=|n)y&azDk>Wk9vwe#{^F%eQc@D*BK#(~;r1T`V?zT2Q)>sW;ONEq zd#btzu>w_na*2mms!c;#$R5dnk?!5W)V*=bQwBSUAYZ*cFMuw&qmL~dq4K~Nv zD<=OeZoxiIq)S1%W|A4|I&FF&F8q#*nKv(NqJrDiVX`ZhBoX8H%rPF{

P@Nj}qjL&D?YPQE44mT-0S;Z5M`I^kdtu~6ICK&&%);lf#AVGEO& zPtcuwqMJBQL9yB6teiY117||QV-{vN`*5^)VtuI5e3_u2(lt|nY=Y@sGEKZ9t zGt9o)H!7$s7b};EQ>OX)2Zzm`n|A!Lfe8#*DK3$~iqVhc=9NhFv?rx43<`~migYoG z@4VHH>mjb&rBboZ)-LE3Gte8uL*{2SZPBriU`+;Q6IaU$hj3vC=^4&Uj|uP%@U}6T zQGWluCaP^3)i%e~YMkeksgTs{*`ae1H!BzOY^3TuF?lkKjdb*luvlQ`785wl!`{$5 zp!~B>d(ROq-FS5>NXX{F3@|V;wX}1#wX}Ekgwm;J zpV0WzcSD!YfajM^bS3VsEN7c>6Q^M63WHrM@JhQ z69Zjco9U|ufBxrtb!RSuV>%5}6I4?$1&4+$q=jfq~eYR$H@wFj2Z7;mYg zV_;%wU}`rpDCJ=N$6tST|Gi#C^~H-MXs>lBILpD-Z6XOPaCUSgbg8-Xm!;>d-+bso zbN%rh8&)n)P2X~&{zmVIcRqQ4=)D^qO;;|TgSqs|0jq5qGA>#E=fvGUa=gSU{(fZz%4uXAAI}FWqDio)xn#C{XLDca)#KOO8$Pe zgO%IlN!~L8W`#qCjGLRVbouhM^p&fYr?Jxhxgs-j&898;j=ob?)e7p{Lp@!MvdeE# z(cVl`XV^f$ndAcnCoC!|Ixc?k(iCWPE7Q_eEL*-JEj@ExVd=pW7p~N{cVB}#*Q=~A zV=6s~I@$9~TRS&zT%7!oZ$R*z@HugF6O)#uq^``$Se~{Ly3Q(;U3lnNS!IK==lami z8&?$#7nq`_&^^?*GHh(!ywKXdeu0tUQSk{-L(?*$4Q6CyW~622tl6+-*MXB~WbNJ8 zhj0q<^=A3GBh=bcHsH41)z;P?o?f_5J|K8@bjy>Gu$ z4z+pU)_d>0+utfXeUR$R6#Va%wl;2Flc)Lm1%=IyjGj9`F)=xnmHKt^lH|qnmn1D& zyezA*c=xWu?_93$A9{D__CQnRseMF^JJwl+za&}NxK5nn>*p6377-p39TOeJih40S zB*cFjYuXR!0Ddz=LZagqF3noE^~kBF&i3|(@{{|CaX&C#m}qP5>g_!PvqVskUw|*J z*Y%j->gw$1>||?exTJj& zuHYT#26vi`x++6w%1DBT}3zUo-rmbyRwomQs?d&bhEJ6M%1$QssTH~r?fUBg< zO)N11nONW+P7~-lCdL*xx6ahu)EH;i8JpORcN=eKX=Y|(WMZJNkDF^=+Gd0JX#wui z$xTgM$XfWxyajU?#LbDr*j_Y0Zr&WIsPm(jq{hU~pO=%8mbx-IH8CnWGW}4HHBtMo zFXR-yEGR7E7QNbB#3^EJW)}@_E-EZy7yVX4bJ})RG zYRAGS1zQUCwZ5M=1+I;k({hlQRqzr|MkrYY&v$kACgA=Q$xA4r&UpF|Px0Qi>#96_ z0s+$WHH9uH4&Sj0pKacDYT(3lPgsl*rNw(nqxG$w#!vE|Iz2EXENWgtVoFNt@>S69 zvol~AtlPA;^zhqfD(V$iZ@&BC-A_Ka-QC_m*c`SCw>3u@fYjR?=o}Ot8NG1vl9Xl3 z(qJ6q!V1gVP_%9P!DFW@lY9b5eMUK zd0NJ5#LSb?xOV-f($WJ*PhYB6^bUP^_ui);UGMH@NTYU^6z>Suw{jdmanh8jzB5B+ zLvLN2vLX{F?BwdeMSAKbhD;ZR?NXB#HGuYtt87hBO^OIZ|%lyC3{bvu59SMdi%pq?tXITW?u)H z)`LX4WriU%6hNt8KydKvnD|AD!EgrJCJRlJzkbu!org}Ht8B&8@zMSJAAfM8n<@3H zc_7_9-O$q61L~(ARLH2<`HL4PFHg_NLXXI2<^Ko+ck9k0C(l&2DF<(S_}TrBQLIvi zV!x)!ZkeHPKPrgvIwy^eB=PSZ?eZxOwOP-Mb$Q^(vU!Qn_2E z>06KY^qf4^55p%iGJZ+Y3V2IkGNxzd=B!<}VPnajL+5Jc9oL86`|Q(uA6)NjCBtGc zfmoiR4+UZ3r0Ey};m|M^E`f|Q$zsgP$jn(=u)d(QWY3AR+Mb~g?|pXngTc-gMk`u` zUQsj|q#l!eeEkE_DPk5Sp;N3#B8zc;bkrP}%ux%IQggTMd8hX3z0dF7zSdn|PNgnH zsfCjaY+XH|%K3$0dXHU@xHvg^VN5t#j8;a5CPoH^uox$W&P^?NyXp4bcdz!hF!nr^ zS}@7b#@S=?w5h%!5p$yE#3d|Di1Hh60}mTnjM&=;gAe{#W5?->H=pZ%f2f;r1$?&{ zq=gd=>_F=68xRsX2WC`!)J!)sx()3+G8wgCGU9YPV?7>DSTgj8FR1G4tYK`orBtlD z0V?Y?ak?*PBV%KOJJBBy!Bn1=mwIgz>>*|?3L=;H&^dQNoY zbQ4WY3V+}+79&ggFD)}?6Th6o^7qV+F?cCgfslLGxkugCw zh@^u3BN#Cmg+gsz9o-4RVbS>;BV3)_Oa;z6`@!)8;&_9rk?nYQFKGCI5p&}`B^(g) z_y&x{$QJxdtY=|qHg#cAblB`k+V*ba^|j*KsItqbR99nL*9jgz(6b|!C7EKQDi(o883D`sRm5OI`15Was1xkLOhX*v(0Nb(kW5F&KrqwiB$3t%Dat zM#Lm%7ZsWt8Jq0~>DNrDE{685Ztn13_(pHd)6#g;U=;Fn>?d03SzEDuOx`pY1wvgLcPm31zXfx{;u5m6*U!?@@+3GOTmjN` z_QrNjrll`fxF~1cT2F~*+51#1b*Oc? zXxAAWV+@4NU(+>16E_DMkip1>6Bt&bj)9)O@r;bL#KhFRb@NOO)_wRMNWV@7=^A?z z2aMUtKA5+nR-8X&WTeFrYl}Iwwd^MZ3F_*YngndfoVRevl2`|wC3pVOPx_%9Rd%hN zsr@*2&q?0X0)qYHa+Sq;mJ&@^wlI*jZH&057LY9v(Wi?wx(Ei7!Dpl*(L_nGKuqG!FZ>(!%=sxOgp z=#)dmYaJ{cT|F>y`Ob<8^$(9*yi;*5L`&B|%;9L6U}L-!Zu508H!{$(nwt0FtB0Sp zU#=w~<68BSd<%1@ab6x?Q)UE5M1%#;p1U~fbl0&dQaxh>p%^-&rH!SDfswKO)b%~T zKmGNy>-AUasNC^%hx@HH*5-~b?p_mpd;*|wjDpu#TR6Lru%-ph4h@flYins*PSMVHWPRP2_Y`HWT9sXT zrt{uMKYstygS(&J8R}}3SCYBtLfVm z)U|gH4c&bIy)VA};_e6Ue)Q?*_wU~9Ry3VuM3%=8TUk1fbMu-AKW%7eR21BvbC)bl z&0M=--InbK51lNls=u zSd@e*G!yh`D=~@Y7ZvY@4%yOkBXiZt?EFpJb{~bo*N%ekfBNa&J6)|6CqR7Ndn@j;&o{Snb(t{H2R_@7h=|zO z1xuEtt<10}Bd0FOT9kwDee~HEpWlDCr}^Shrr@|p)-G_d0c&T5 zgwBqRou9CHDQoH1OBN+1&R?9gBx!m6_Wf_Yb-J>t=fnG--TU2fL`_j(F!rau%gc6yUvCJNU9(kBqSXf$Fuq^&Cw*);bHVa2jzgbl0 z`0c3k_iIfI&8%?Lp{XSbF^7-J5}BCeG+RrSl)@Gc)J|L=F5y zFDaa$rHe02jm(T-8Jd|G8=AscGy)jlY!@R#tb!Zr8Cs8Xb+tCp*Von8$FezNEasQ6 zOKuexZP>6eBV}n)(xN2`mn6g{EJ<9lY;nTEn7N6Imo8kfdLbZpeR_6gZhB^N{M@+g z!~SNBtyomTDS263Qpzc1@8p!Sc50NqDk)``{#H_2Qo3vZuARH~9_##aBVD}uIC&R( z6ogb8uCAKB6iow$3(&D#@4-ehTaHps9 z@br1{L87)V`Lnd7cvtbsp^q0&AY*XKS|n!`zr?c<+NZ@O$3D0^hn~KgU*dv?5AhK1 zy>EY17vRiTiW~9$FgOD3vz>dY-ak5NJS@eSeR~fdh}So_9|wq=;t$0>EutF?xoe>$!^3f|yso1kcH-v`zWnUt>;2?t9gIA6DLmg@tujqAh^Pk zmL{jJ#DZi_PTo2!Tpc)dzP!G@|JDbee);vcpT2+XYAcb>JFsuxo=`(`J6FtLK5)f_ zMa97qNyS)Oos*NlCa(ZXDu+&-DX;11zxB}<55D^5^Y^Y_YbMh81N-*wo&|;h%9FjZ z1{E3=zhGg~vh=KUvL$fL+NQ0$51u%CskXiE=DmM>_SM&)eK>TD(GlVf?A?DbTF=4; zlOI$#vI*iACM-=|fwiEVy!^H6*KOQ}HOccAWv%@~cR&B)!IxirbaQ}Vcs@$q7oltE z;5NZ)%2b#lvq(!uRpEnTXg6%yvFEK*7cSOyUcL3n=U+Z}@a3JG{WRmgzwp4`eLI76 zEingp`b_cn4+xHkU9fQJGAw&#t%lQX-NwS=10cQJs2mu)`{h@xub$t(bGx50#uN7M z11$nVT|GUpG6~}rKIugOB`l@p<*!+@zMx>+p2L9QM&n20_R5HO37KXt__EDx@MQM_(_;r3lePF<|1?-_je!!N%6>WfeBT<>E_C5DTA z4J{opQ%;@^u$(<7e&NEUDOldir*_@2Ve|G~hfiO)T;F%~&YjP{`RWVuA21?bNTvG2 z#+=|WY4Y@dz+gB>7m(+H?8JPmDsCtO>8Xq5^&QtSLx26{m!Ezxq;gs$g0$4%z{=Ir zofr~~=S2@DO8|Yw@ zeWnLOor#*ea1kIdb~en!aW*CdDqI%A1{jJ-kc-Y#)Wp9jLmQoae;#a zzUs)RFb|H7I-)4yw$fY=Hm(aJ;TARA-qd%AD;d5g8<9JHlTft48fQ!^Oq2_X2E*ZF zy;Ti?_K3XLfV_(v)@|IPqoW7C-%3}Fu{|iQXI3OXPaj9oeD+2?7{TluoV^2K!}YV? zfN*@oD#^aH^L>-Bi%8?@}>Z>-vscwN z@DxLtwRy`%P0e*1^w>H+srj9crj8m~@V9GNB=pI-A{lEwSIf`>Mlk5+LBSE;2ACE2 zahO{z3^yVUilqU34sD0fh}ew$C>xHg{sxDJ`pE0BelSwgao9E(iV&DuD0t=>EOFSU*4j;1uSC!~$8#LE#=Njvp z1ROgKr#p;zfm@A^KPH1cPl}puF*LT|SlhdL21nn%hRce|8?|uXhrZE*#aySUscmSm z%^>*9xkHB&(z7z`xA>2I^!+?#gzXc zG0+dpKNoi>DPfP5>FHno{ym}`nvl_E8E!R(5yj5I$gmE*yPbo0A{>{n^KZJw&%-r<1~2M%zqr1h92<^$YQJ4URfc zGTs^h-vGd~Hf%RCwm_e(tV|8{^lc)FKmGf&&*%E&622H|%`dW7K{9tBugiJKAgfy(T-Q3Iy z3XPLjpkF{xWcZFl$!Bsaa8jJ@tS?PFdp@)7?$Q^({^qZL`~7GC@tdElNJahRq{t@P z8M{#4y1uR{sF2Ke09?5d(L47XNIaQaR8n_iXj=B@0~oJ=`}^O0_USJ_`|a<3^Q#Y6 z=BDI_YxV_sVT0`^W^8mFaZ@-WM?~#}k1p|aMs{XV>BY;fJ;P(7Y3cIH2Okrm`zbNn zcad@PO5e`6u@yE6jv9Wx0YPYZFYM7tu+gTcLUtlNtW!8Tz4G|uUw-z*XP?&XBEJN4?ust1JJw4?CHv8faBhcjp&T1(sX_>_}jdyyX1Ac(Qzx(26kC&&%+Q_82 z5Q56kh0UMz+Qk!d7815|U)+JjV@Gk^f-yWLEvLNpdi#KAcIolQzxw?1Uwrs*4yH$x zbxtE?^>j@*Tq{I1xcd+ZO3Wk)M^7D3I(G78%K7uzB{hv5eUmfye)6+lfByNee|}Gf zfFO+6EtiZqLwCE01#DEXWO&0<5xsN&;Ugzt2tR%b*?rDsLeoIQqw{F@H^0S@7o~lz zq+z%6YC(0T?sm2%8=`^l>=Oic=uVtYkHMvQ>eMl~Inwf~uC(@!Nar8@>{nm>?zf+R zv^2STKJ~~U4X5biM9+bF*a<#K1Ogxk3Wvjk`{NJnId~}k@bL@f7q4CI7?dpk;`879 z>hq81$2#SXRKIdkI8j&EjKj5eaB%YQ@eT|O3JgNDfR~pWIH-$dU^&HV8%9% z{?Q@(GOo1^^xwWhrYoq7G@OK9!#rkh!{u0-m>9w>xK(GnE;--9nWqa+AI@moiB}Jt z)iOBlY;kcB3O@;{K*JaG4NNR?N;ERSx$YAkT^*Ff>v{$Ta7E%D9PteG;3G679z}gU zV~(S5C~0|bC0hP{j=m1+#Q_jLL|yW-Ar6Fae;OE3Mt?LkHqkdQ);B~2`fsa%Yfz7r z2Jb_^i+P*3k&fw+7f@7hy8#ZBdb&n>^0Vo-?c4Np5VXN_urMSCOkM4bo5(rOBvU{W zJg6?o&o4+laV$AG@mS)q!*L18iAPT+A33r=J}LQV{HgQt@kfv5pNDu!zi|3s{DG`% zs}4oKVu6z2b+w>Ix#mr6jZzI&ySCNO+BLa>qmRP_*J?iIS0C65U;9RY6OOYH`VCVw>4EQ)z?4z^=TgYb|1cd zQGJD!HWqwSQ(awO-TwHaBtAJMx@F^as`~Znccg{tn;*~bT zf9mMrxZS&=Li{}WJlDwGJ7Z)`6}hRWk0tEewKFor*UgdV8od+sHdW-MqPyg2sK1+| zqZ@)!Ft+O4w3A2U_wU>p73%NK=edRL+=2eq<)@!cJh(S@M^vbv8{feVcBV+#<+|bv zr!k0~vC$#^ZhXFPWK49Ftg*Hz{q(Ve`*+7;%3K|I3CE+OBV%q5QiX#zVj;q1;!D|QP8>Oa!9@i5pa!pST6h6xuGHrAAjHHt$w!UMgW92~tPqQXOELznVSA5GZ5Z&$SZDIZ-93zhZM=3=kL?cWt0 z7U0RZ=lg_*hXu>Js>wcy+qWYsJjlzD=j0m!`7XO%oqHxZ0T!T$@L*3T$ZjI_Wml`S z&mBK7x5At*2+wpxPz^i3~g3Pl=55?_^2@UXd=GpQ6!UBVW@bto| zq{I97#DtQmM7^Owfq}BB{7lkc3?c}tVeb+c7Ub_QE6dG1cRXP~wp6gMv#p(zUvQ9r zfUKe*{mijLdt;+Qg1nt=?HzrC1MsxEIO7cBO=H7@13aB<>>Ydq1E_!k1);3GC^IGT z(7u>(teqpAoKRT&{bW_8=_e8o@7@_6?B~g|wR7|e_Ve?VRTZB*c_e;!Oh~Yg8xO8Y z$Z0YM>+k2|!~=I%xaFOl z9eH?UXKN#K^>BB`FP=H^o%r^4cDSa+mCao*&B;6mn%*6a<#V&+Is`{YMoU`Ca?;Nv z#vj}r6#<&IW;+DOMn_6oDhsmC9*vJfj9iefvkjLY98EPt| zwsHuHij0x8RA9>_#qZk@85ZQ>Xlu<2+YuQhX{{*9IGc?4#ay&>n1U%1* z;~pD<&Rwl4&N!WT0DLUO&z%pIJ%rTIEGWEiD&fGM9pS;gZhRXn$8gZ5q`4;l{0UfS zLDJrCj#gZLNK6!YT5uk`0&LgM$IZdo$}tSAMbc7Jm{)Kv-CajKaGv_8jj1#IUenNpoXy`l+P-vC-lFUe5MbR&J4zA%Uo&F#XgKJVhT| zP_J`nSV*v>?OJi_$s=G2pb$5EORjTpNKlZZ<#K7-@%X)X8tCnA$FXwq$2ODPx|Vn5 z*umW~VZj03E_Q5=OJG2NzohF*-kGFBdt=asx3e9`&LfBl>Isw#T+TU@cxZ2QRH%=; zlP!nq48<@&GIq5v4V*Lv6XEV?!?E%R2?+F;%v>u@J9=;r_@}>zqm3oUIS89tg8M-! zSfQw}5XeAlORkeY%^!kaa_?IH+2r^=(cwhiSzFq=g35d(3zu^tt}vIuzF0Z7wR1p_ zzpq4kB|jzMU@RCcSx-wVblJ~WGTM-L{^%hLBnb1)VOzQQ`}=uI`fIYWU3U>q=)t$* z+PDUQS|puy`Q$0YlCLMvieuyCL!P$Oi3$nu@!)YRZCr!=ynQ5BDleQ)KCpX7 zXrPaW1D?8JQoSWtN;6I;!DJ8`;NyniH)~gP0Z+>^vD46+zn7aW*V4*0z}v@5(pZv> zQS6Ed@%3;ePu=`{@$_Oz#)-oRh=BLRR9e^|e&5?u{%+zyXddJ#n{DUm=i})vsV~kv zn{*%+L-TO9u|OZZe7!s*4J8*+68G;QPaSP6*w(IIUY;J3rc!X-xY!7PFh^^1HV0Ab z9v+g~lC0B^&k^8Vd@BnJu9K&myPKq;{KD}=aWPTYs(h}6rL~hcIE$pNJ7n}?f=q`v6Eg(>Fn9EHb#rl+Kz&I% zuq!eEJQ021dbtxOBq_~JMR#`u`nbE;TUpwnDOWr#!@F^0ay*@Fxop0hGv!>M(Cf&P z6z7~jdmttv$k)x)&fL}&HGpMFb|)rfABqeCH{r3ZoxrvTbCc+@`7ygf13hdx9BVJI zM<q|k-qRP0<>ldu*hoH)2g2iWBpgRCKVN?^T^wY2_LTh-Ybz@bM`G!O)%F3y zccdKO*xOJxG%E?)Lc(_O^hA%GoSmE;>~ISflV@ozAs1>06Xx+9?QKxn(%jO*T*AjF zogf4p!JDnQQ<84fz-uxcF zVDL=QEzrWT_`NY<@@>R{_=h`Kbn9YC*2%+Q=BNR@&CKhy!D7tgCD*NOCbSyXk^|IM6fg!;`qP8oQnWqzWp*w_$Sy=8l42CCayIhuWGGSME zXb>jHhRt?`hT|u?b)_^DtwE;wcsin9$Ka5F0MVV6iVG*=cSnZ=`hs@NEcyO{0fC}h zS1U7*VbVha{XAT(E!aFC@HO`2X{r_jN;0(vLN-M58{@R^dk^o;ZUQn_G~w(T)v`(>!oQ&A*e$9 zeIP8&Et~@U{d`4_ZWNqJj>DGnhp6M4Tk?EqzR-+C?_V!EmmCMi}wSWGzK0N5J_*d{6{aR1Ao{D9i@hbDLh14l z4c6zLO^n+CrOVq5%gJ%}^Y!u+^)(fqN!%YBhT7ciITjo~SevJ)y)pmX(fvEa1AV<* z?Jdo?&QSF{MK=YRDaqJ8L4KaDb{3{w7wB&uqMMajr-@(;0td0SG)2AMULK;B%IuUx z^f$=I-5D-t^uYs9uTV+RfY3%~jM0xQ@hq(ZT+n&<{+}Gk55HqKg$7DT#Zcg8e<*cw93J z4q;4gqAQizXO8TR3i0u9wda~zSUS7AQEt$TMNJhsry)i|d@vInGcz{d-Nn^Kbfqd2 z@;NdL8^xY&X3ph%f^DMew3G3>aioE!#5T3$;-aLBlju@u+UfWmQ6XN~5|$Pg97L9q zrzK?Gp-te#$2K+PxjVZ!If?{@=^(^VA1^lu8WXmMtCN!>PgGu*mbfn}3XSnGKh|gp z+(=YakbV?vgqgthF?VnQD}!dtvlmt5r=0`UK^<_iHnAc#@a%0xammTKhaO2J`8Tzl+hsP%*!^PPD14mMmo#R&;wc9k3R!MDNf*_I-ns~;?(-h>;wIfLzU z*$7M!S>d{(x9=)59wmI2!{%6+iMSAw?$C5snXxsDQx@i?A_S@uQ6Oi=w$>Op0^m(W z&JYU1RI6LU#5HPruf=gjuZZ_e)BQ4eCMWjeRDT4c@Irv8- z=Vvk)%GexaPO!rXgG6XJJ0V8H!;V)t+TKuDT!;+1q?H_m)xRRa;u<+0$Slk)EZJPR zv8-Ve=M$krFLH1bn9TKS+^=Qj{80uYpMjx? zskylYHlP*P${JH>PXzThcGg~H9W4#{h^R;SeNJB1yHa1u*oL|W#)ihmrf3g_SB@3U z>i0Hwb`D5dVeMPl(Ndd5S|L+FW=a>5orsJS)vTuva+?ug4x*wm9$+g z%trms$cOJG=Iz0xt;ufkN~&EN%@dQ)?n z`B!Gh50N@qYNL-#P97!>vjW%-(8 zWka+1&f=hOpbaIc@|R_+1EQ7EN?4_zN)S(_vz=U*F~CfinxL4u1w0;HYc}V6U(fY= zTz#O*UzC!244CZKWhJGo(qBll0S3Mm_HA8#BSdmyuV84FV7(lUsZ*J-tF02n@ z{I1lO5~HnJBnV4q8`=Zq7@5#aeoyu$hGybk(bwHvjGH0ynIluDQTjKDmDx6UEfMiW znlhja{w&{^*cn(dGh?sf&fC=`Xy6&%N6+x9jzW+P1_;waI2haj`jq}}2pM3TnHpnj z8XGxhw{{}j3Gq^xX?#GLClV5!W~`&FjQ}$eQ%2MM3mgrYNYD=$zkywHV>4;!MM-%% zx~7Q|_O>wVunllk8k4bAhoi(mzXJw1MQpLBLRZ(?+=Sk#&sPLT&pi zP0w(SNS z_gzV+ic8m(dPsgMLSI3w5HzbK1`m&`tEYqAY1xXf_1cw-jScm6b+rh}sHv@?YTz4C z7rYT+4ZZ-u;$|54Es;6lLa!?~WZ>TD?dFRY8|$h17bpe$J|&=PGzGsBVMiKZLlTyZ z{cDRzS4U@O4}1IK*~#vvOHGXpb+kHoF=#c!k)SE~rAQB>17(_;!P^LN26@3J$0F+; zy|aBS7wa49>+5Q1wco*sAb>+c-Yu|{PYGWot1K6SR@OvTIN0;E7sPk#n#f2&Z zg!q+hpcc54Fd}ep@J29iJId}mZsO2bcT*GIeTn%JV8&wCkp^A}Y6WnMP=eQRnXm-E5Mk{Q@J{xkfj(iYAWR5%gfdvM-75!r zI~q_7jl2@nR=q3rrN}^ga`WMpi-D&kE|ol>sc ztd{$l>JapYZSYqSc8V3(LJyl?Ycu8@OZ*qPq#>nD3{A{UZT6Pe3f2f-RyU!G8iK!x zY;8d>)?DK)gkT7{Y<($b0c-RrgKr@|jm`Z|qdUZDwNCI{gqNZ4QQU9XdRoYgqD6)S za?$zgs@oBx!iw2OoG!rdHwd1RA;{}zn;UHdBr9#x3$jKe8kN#{f^DIvgNuj8Ha-VV zrdA2o2|PskYYYC)f}G7g>42bx-zoTh6=Y^)X6&%uXW{REe-OOQX`402+~fJrSPJ-h zZO)tg92LBslVAt$;_nm!J}*(xP~WPyVT00^t#oxA#unfJ#ea2L{`MLuJQX?2oHqyL z?>ayDLtA}q*=0fX<=UD{^_7<@1hq|nT(W=rE-jl*D$YrOKkz#RR?ts>^7$vfp#5Ua zFW3I!yN@4#BxT9pTZemo1t*BtPXS>AucHG4R0CcGg_)8V0@B0vIWKdsz-dThZBbBR zZOD0=SAifVTL=)kfoLLBEPRQh0oGwZO(a~d404k&4;Cn&tGR}mR%g` zY&sS0Zp7Nc+9JQ$nA6oec(df}-f&lQ64YUYbUWK~ew|T%wRLD>e4@YOT2)zbc53>` zV{q2P1+!;YOgN6<0Xf@qKFiL^xm0?!Z*WK~U0hz0&c45LZ)IU=WkxzbBb%ET7Ut;Z zJjbQQtlaD@D(g=X2J9ACuR~eZZnZ*^k zm1PCE8*7)t$o7!2z`V;&+y5I&SNf*1R0VIB9GR^Y zvD@dp$l8^DT~burJlfTCDwwZF)()}8&{BE_M_Nl$c89o_k+m}?cci_rVY4^O1GDOR#IGgv$kzagp4r{A3a*W_wfgh-@o_X z!^QdKg{Aq)iP2L1(&q>xE-ou6ri%Ym+E(A)+lf?teG}s&(-V`p#ypLPWvYaRAs3Yt z(Tb?TuZs#1`CiskSBaQ$yHZAphlB;bP;-{|Z!DhRO}#(`Zwr$C9l8^|u5A`D;Czq& zHx>^PfKF-_{67c}4*1%CL3kSkuUa#mzh67S%c>jAa=H_|sA?O?@+4~~cu_li_ne&W z1kbBFCOb0x$=V6NuCBb;CKg^j7vXM9)(#N>5P*ZDqV~$PxJXYnSvwQ5c7k75Tx=Ik z%}S-CJ+1Y%m4#V3=WvM~-sSi>;`|H?4i;<|d{$j0Xus4sIX%5}@6qGO_ul*D!=FBW z@c!eKl?TWNFe8}|=nI}Bex(Y^Ggb8`LHp&tA>q)#(12JpF+V*!KRY8s9065L!-%V@ zE7w+jT~$$evAL%CN;#PJRj!#&`<_0V~)^ECckOuZf z^R;VD)eQ}T@{;1L%#8CX*kuRy#qEg-qr#rR_#Na0$2;E{$5}fo7K>G&P>6&Hvs2Sc z^Rgx6MnamR#pUN}y`#3F>0(3c^&1T>H*dDz?dk1myCDRu@92a?ESegVNW`-%OViT1h53>9 zR+bl6mgkpdre(`BvyZYF+27)TkCR|-UVZ^p@H!{EK&9YCeqm8TVG&jIw6MIixTv_M zxURIQ?dC1&*2~tmj=M5wIU)Yto=iitY-#@9{M>u@Rvtcj|M8=T@7;g! z=qD?S5AV+{-d~uWo0*;#i6;kzGDpq*;ojp%ODjwFmM0!Pd~pBady6Zw zx#b573y(_}CEr$*5k`41 zqavb%{KNf`kOp=nXBVE$>Q-2}xAbs%`GbcKAAk7a&p!I_@uSBd{rvs+9zR^T_x|$C zf^2qHGBqm*dh3lFEv>h1w*lO{?XFNb zJU$^F>+hWuizTyQV)M(=rA35te|Ycy{Ri(!KK$U(!^e;AKU`Y8|H1OgN7an#Z=oK8 z3~OrZpe;WWR70VytFNo4)jzLoXsmB&Y@izcd>Q(8AEs7G${Y} z<)%E8r47Ft75mD+Ri&#Z%?k$xh6hMlt$gXg@X*lU@VGa)!gGY3Hca#n&<4=x=0dS> zU~phyaM%l9eWS)SY99g+)PTI))|!(rty+DpbsM9oq*SaL(!`YdFrLj;|yUK6M!WRK$hA^NTRYH8kIzO<22$?;n@8DESzc_Q3wb`*uaa5*`^7 z6%rN#=L+o3zMifg9qdR zagk_ZVsKd4C+zDN-tE2J+1h#gM$6TkEsa;e*6JD?sw*l5jb$)G6qXg_XXWK$(^A<~ z&m6Y>@Zjk1*!ak#1p7lgDw&#|nVyu2rzF#}b4!a0)6$s-_vh!36Yl`mlA_$gg6tevsQV$l zM#e@au=#PrRWdy@H8C?YE1R93o0^%KTUdmqFejUT^#0Pq!-p#m@8R#|MaawdmY3gK zmd(wryk*EwhR3fd)3>IH$G}Ag!Dp$Vmtz&+T?D_7=`%j4IQaTFfiQc@U=>UH`v&pT ze}Dj^|B*2)J`2XC7BVu?KQuTnIy5jiB1C#BMaCDZ-or>TV?+5!8 z_U$2n@LvsyLs68@biF&;KR^w9H#9IXH11ByK2`O`i{L{80|`nbUEEi6wVks`>aGZfsz%ZvZ=d{22KgIn1A``3eW{YJY#umeo0r~F)O5mwEow< zJ24DEs0>{~rd@n|sj@v&(nst2u76;tP6;)Vw;5`Fc$?~d0ZNMps20Yp7A_GAdwPU@ zclW5E?=OZgpeaniQx(Hb(a;dEs>i#HR%e72JTXe(tH*{8E2&6XRjt+(6C z_3^^1t@2g@d#l3K)}pjtAa%rM0&V+i`bL;#5vuLvxczNOhM6DY#e;)_yf>p&dBS!i zn3f~D;U8tp0!iTx=sbc;LB5tFfdOtCz#D|20cHibkMfl2PlzDHfFY(=KPk~)l42Ok zDh%Knpv}o~DwPN>APUn+ZEJuMiq4>gHHsL4VayHjnsy3006E+Dg8kOe<&*x zgf`L?+GFBg4gSFVqpr2|H%ug1R%N{)DU<=U3G|sassQu(4seU41=I=R#VhKpH)=Qn z($$WzzCDw6fn@SIpMrEI)n`&pAdBYd7+g^?o(#q7$gyX$5Z6R zUn;8~TppvwXcMnT;{Z+vjKRq^#FY5Oq^KCB8u;noga)3UaBq8}Ip{aw14uhx; zA5BW8lBFl`KRiaBS){m|mEsJyJUc6$mffG5nV*);OwZ3t=N2V%bJ97fbVec-PcPtu zcmjxg&^yM+iItjqCc&--O^GEQ5<+My4Ba0S+AHZr0xO1bg%UD*ogtSGOpSMRc9i51 zdC3HwLC`-@{|7?b3_!In)PmoU8DV75;op(jAp))oGTQ}C1$AeY%$~238HzrIAb3k; z=aBi7;D@WfBeFy2)$c)M1gn+F_%V%no?`X`NJoqD1J?0&ap>=R! zRj(gtOn&?Dg(_3Hi;i)=()xkM$c%i=3jLnO_L9n(48wO6W{mG&>B<|WF~6p(ZiC4h z1g4`d$9~&PZdbY@?$;2*BJg5QRJjpInY1G&CS)s-2l9t1tI)_0Hy9N_*S^CAK_+tQ zW7I%a!+&d-z;A-oAn@=64DJc!1DRA@yIlRGL>`e;<52Hb!2;2(HB5?5DkHCAo#mi+ z$^;#bkRYk}JCp~Q1B-y*LG<7m!RaPzC5MBOw?I=R6@3G_g(;KQ1N3SllvJTO0xFSU z%@Oc1NGM1y+-gKAQai!c`v=MO&4rx2w2bWBtn`cv)P+ye&RxhzKY#MHXk@$oo$+&NG?D$FQr1bRhV<%1=PdN4-d|Xlmn}YAkS)(G z$!3?9W)|)d8^OZdoJ=}5C0(4KnZ=nG`JiRfq8WUmX1)btoD|97B~x#;LyGYyy4t~+ zUZJqBw|C4z=g^=@S_x9%Aj6AF7tg)lu>V*()EpXoIW;K6t}>iVgQ-yqPDdhyeR9J<@Z z1HHZdLgC-bH7q z`pM7?DjG_Ge(+bE*BskMyU{Kl^%W|jEdc21*Y%>hp-6BzqAmW>;MPD_cV|yeFN3am zeyU5})4?#pGb#F0rg6z=7pm;;>bj;4#MRe^f^Mq&RqsGJzQ>*flsGeDxEnp7x<8{U zZ@fO--GkPIJ=@VWuwW+L^x|;05XHMYoY5z=4+5z}jl#ij%+y+y|I#QJ>h41S8OmmZ zBRI5;kBJ)y0Rz&EPS@Cd4`w=?+s5Kl0IB@Us1}Bs&aMD7{0;eDMb)*r^G+w#NvZrs zJt!n7Fv#D_-G~qXzN6Eb+gv^TL&L(NLb-%O0BWnUK49-2YR`B3j8|Ww=wGR51RTfB z#1lYjBNIYnKF7S1o%%f>Ft)!2rSVD=P&Y(RL`4uxFEBXyJ4z~YWKIHV559*5K^_03 zCMp6zjqDpTU*!BuTA@E75)0}gW(kLA4N?pw{9{d#0hQ@Fq$JU*p}Rx1CR+#Pu!SHw zF~PVA&S0%$eMJ;UvK{2VG^iZp1ZT;jsmU>(X$1BeEfG=11!WQhNK^>eOY+1Py5lxt zbWMmq9G`F)NjKu-562yd+k5cPfqkGj@-QhW8P}{5Z~#nz41*>K!IpR^em``{Lr0Dr zh=(S5JY{TRd~yzoibx7_6N{uc;7yC>CdVhnMgWcrxSCNYU}7N0j)zRgV3n8^ zk4+K~-03M|QK3}+q|7|IGzv=$@N4{(Z5w4GvLk3?&v5GNQzP2K8lWp1+`z-JSsYHF z2)xp{C>o`Weu8F3fu^T%c^1W?-Hqz1&~=hTQn{i~ze3~!E)jEzn0k?TDw z%u*QdM$q!GvI;Z&9(q1XjlQ1Df#&h8lA1^FG^|tP(W~*=wdguc<-d%sllmt25ETgH zF&2u3M~3hQfVMS?=7&j3W8z(C9C{+%ylHwERpNZrz7@*PYm;ju)X2+G(O#li(UhO7 z?3Rq6eQM;d%1T;YlGTom8W7^6RG!jREN@A0VjdnI>GzbYOn78^9Tkp=_k#Mc3I0=M zUESo!Fb1Ha!~vm6XJ(|b7D9h={PC|e5+2P1d}Dq=dK9VRm7kfmNGC>zhNG}s-x8p2 z$520x(4V3EF}P^ABO*A!Oiq9ppfX(-X)t%~-o1a99cBa*s;smj@@QgWLW24C^!GCr z&B$~x{|thZNE8GVUZp>|7O8?w%2L-rJ_)%NNhyDW6@y~^&(sGs8$~ICkBi++s0}j! z1@wD0@;RAo5CH@x7y*s`=YJ+Y!k8&KBqF+jpZ}&xQqUJyDG&g@i-K8{5j_3aAM-2BT2wOI1qmjX{zGmlE@<*(}1%9-7y&%uTDUje4KO?$(C`1 zJ4mSVXfhI7K@^^mkaOGY%*>Q*VPR={dO-%5Q=rLAN+`)QaukEICV>|DAFv#bO-g4( zBa#WR6#kECu~Y)n7gSFezbNLP7_4_R=ufx%M;b(;45BlA$uxRPgG60o=>9;0SiSW> zkRVf4_a8}+C<<#C&y3%aAl8FS`8yKC#x;CLf&{wx$%d#OlOO{s*k{IXNsw$6(O_gc(mi*+(6vg~c#`?GP$E0)L z(H|X3(;CKC>)#PyGO-gqGkZ&X$nx-wTytZ+CBDBf=!E!?Y!k#s5SXw=6ys}Ez3-{d z9^J)UGU!@S;NC}$Sjb<&^nS%y2kL`Q9b20LrR-avK>bL;gpvt}?RC_;SL<1-M1(@& z{06{t0BnD&gepPflk1{?f&Kw;g7W`e&m@S!G$zIb2wfWXm%Q^tn*=VxI$%KoSmA%t zGjWiS59B35R%R;8;jy8U0-cY59j}8Z11ht;F7$w)`Jqp%Vh?)~4L(~{gymw7ruK|f zh9^Y#w37?HpM#u^96gHEz(*334<{r5dgSoIWIV!24T+~xP9P^Oj&rA>Y%U!?c7&*& zcqah~?@lBhMMmJ$=cc98b1U=k4J=F ziDo2IvorIH(y2KqERqYevbS0%t>;;<$VaXufb;xDZN~@{#@^oUJHD&DjLxub@9gb? zDZECT@SZ;~nB3bvU7cN>9i115rmg}Vs%ylHs20S|^_6POSU1u0x^AOZSRWa-P{E*v z^as~-mY7I5EG=q7Yv(Dv_|WE z*;C=Ci3cy4Hf=pb@#^?n`*9`0aEX#P=%GT$4suy-$6yCKM|FPJ9!wNjQproRJME;7 zKXnaWj@tr(Y1`J_(b?6}ad)S@5n9(v)Ibic6djO`5hDN)MGtQUf#K3rp3#*zH4Jog z-0q^fzU&a*KCzk3u)EQDhcwe_iD`RAXY_P+^$7WR`AecVsfTxWwBNpcr{jh{*fexq z^g`A1R##7FXM6jdJMEn*CUnj>Cy>%Nc{@te=nv7H&9PI+1aazkyd@DV z@+O!pW3Si*AOKZX1GXrAS9We@Qlyn!{aiiB$rVZ^l`oj;8k)d!+ei>gNq5NZMH6b9 z^o%SWcr@OZe6I1fjjO6IX&oyG{zlA@@r3bm|PJh*ZwtDo4}8gVV)va>fb z$E|S(Be=AkT^$@;++E$^-t)nsE%6KtlK?aV=oD;~^(p7mQ_r5hkap%mW=2|SX4Zx5 z+~Pb$*%#H2% z^u{N4cG}R((aT{P=)g<5UGFILENbw{zy&$I5w%WCES#`zK{r!7C|-4Dd^fOz=tpvb zVSh{D9=LKssr^?Lx1j1S&Q!(3^>KdM4ot2-rd*g`=P3QM?9*dJ4pX2#>ekmu`UatMtat$hm;fxy(~IX@5^|>gGZF z&lHr`T)ukw+O5)rDnZ4$y$=7K-X5wFa@(*`YonUHL#SL%Z!B$Ow03dBWo&nQb6o;- zBd3)AUwZqI8i`ZL|BB!q@ixO- z`wwQM(+i7BbF(n5h@n=l8GSt$2AM49ZNFiCPjCIfK*1p{4psj5^rj7TcLW!PzljO) zg{tE_f(u^{VewMc;Vr@aZ6E{r+Ei8L1Q$RQ3mh_3)W4^45$7 zzbCju@>W&}POc2mzf%8!;0WV>#-wlg2YQ3?i2psk*`PHo;FR#as;Zpeyf6v)rI@cZ2*KT#6I?9W?a-~5%ys`jZ-L%&dTUN1 zi-Z?4GqXT%C{ANOg!1k9J-yiwolD+^nkEwd{4>4rh=Pf)(Q`Gq#;C-2$RgB+aN$kJ z2Tr;~G*>jCvBlWJ7T2fT+&mmC^t6dGOPYq_##CJc{qfr$^hcP5$seRz#ee?htJQCy zm68=+%Y^a`(!~g22_b!5%Uq+1MO(}K(?5Md+G0S*euWMZ;ij=F+??Uh#!V>RM<%vx zIJX^fJrAyK6M_uo;fQpn?q1#=K7prCpGrP|_T+h3GS8*Km|2&Rj;Pj*w7i@PaA6~k ztPttDDoe^M$|^6_A+-DArN*mQo0~7)yw!3OL1ee@F3j9pm|0qyl`YLJ%N8Ck%H|gq z?$0hioSR>PT?MY}<@bOrv$%Zk{vt5q9zI-HdjHY9Y;FaAFU;ZW_g13>cOi5%kApHm z%*a$A`5xwwp`y68uA^-zgJs^_-hInWSs`G!OO&C9Gd0ZHP;b^M*LC#Yc3;0LLEhSf z<)%I;|FG#kR9>UC~NfBqmwMq(>J-0{eI2vnE z9bxlwPQI4@01Ks}z^^NBy>+YOnjo*fy-nD6K#AVbHF({cp-40~2sRak1Yzg+iR~I| z&}(wkBvwm``8x(vfelMyduMk?U*FxH_OAYc6uPajbEI*b0$t(D(vE>n7e$%^mYXam znx&Bj$<|S!pS#l01;F{S3CYytKzGkz5hJm^W1#(@4To!Lunk#)*V|va-Ct#?i~+#+ zfZaj*{2H1Ojs8B9&Qev^NJN-W+umUB;6V2)eO)6(%IUp#yL&qO`(SZ}LJ4DU$DM)p zmdnjo2w@RB9|leo*-scOLcK%s~9Gq%1d=KP-Q5>A?J~rQJiAUFbj-32>j0^ zq_YM>B(n6LOHWPBypRrhdJfw^83V=WC$b5hLB>2i!>#L;m0;OXWNp$n)!hViULg6g zG&gL}($dyK%4OW**}4^B_DrPzgr9;Ka_CH=ViFX0)phC{Sad}|k5kJ3i8P-ecc=}> z5K5AS;!FvZRlZeTg5*_Mz9d-e5bKGR9iM0K%y)6*dj$bk3_+s>3U{LR#O(uaRe*nR za0t-)5Ja{sa_8Q|`{Lr`la3#Uf8Y#~;ie)almsRdHM^zt>h-Q+gdk3gjZTOs5jwKe z+SSpGP`#e+{yw7VjZ9(Y5K}faGyiCIW?42pvjk{P9PHj3nTIcKdI^Ax63N&UtS1wr z16Vupm}nAa#lGS3kwIvV1N}XHcZE1{+-gTOODn=cpWbXMDy>7DXi;%#ISCwnQCLt^ zn2%6W57}G#q*N9$$v@C1@`)-L+#Da8Einrn9vbb5+^P^eJG@w81+;X`;<}BS)HUvm zOZ$UOHpx|{?}#E!6rI(DrkG#Q6}9xUrv@i)1zW~W^ozs?wkp()4^Jm@HZz&<@GvN~ zzbM$u4bNV4GhlsBpQQL&`lp~zhJyR8>o6mV@3yz~O$<$lPi@^iJ~GuAW&)&TAlPDW zKUFw2Gdh=PwFQYee?*{PfIw}ArBh?X%8MBunV6W$*yJ}qENyezyhdS-!hfxyDXhIJ z5)DKeuoVACGR?S+br4Gz5O%x()bN=qodVI2Xe1{Rm!xse-_S%i2!WE9{JERg{m*2o zu{9M@UOmbCqxS5M>Y19FZ!o<)F(Q({+qy81C?Omg=HT5Q8bP?@i7DpV8N%v;weO^{R5R^^s7|bGCQ?g;c9`jaT>~n zOR|+7kC1EPDcaQUU;~(fk!@-g(Ps!+!ja`4sq`WE7E4vd=*0Qr3@>wS=sXNYPmR5Tfjpp6iuvsZ9YYf{gRRJ&N>gpyq-$Yq zwq0w}W?bFTN2W`2+=4=~3Uc|CT(kZ$nPPE4rr;auo7Qh$$0Bl*sj9wCd(--Lu+V61 z0FK@|=*GByq$Nit-i)m3-xFzpLM5`~BU2TRkZG{DKalhyV)h-3^9drse~1B$LT0hZ z-BG*t9o~NcG6tlbn74cH3j1O9 z5DpKLaF20BpNJ73I44_tys+?Kc}}*n_};_&4<0_6SiXlK=0}h3A)}m-BQtu;Az1tgWN5 zp=V}cEXHyxxG;&^!9Q|OD8#241*_FVRpl*)d2%bDW zPF+o1oyK39TDj$GvH@(AC{?I}QeDe@fR$h>c-?8kacF+D=g!cycy=yLce_L+>kl{8 zMEBIuN0!3b`KkK_wtDN(Yc=RhYhZh$)K*m0X!c_=8KNPlq%+c4@$~FM!S>)~@qCBV zW~DVW{3t0>ir1#*L_2iXsQ~dEqb04=NV^z5Hb-u!7^i?`1lHZVKMQcai-yJM_+(zR zua}cOmuq5f5Hd13+Zx2#rUf(GOBQhrL(jxsqA}lBV`{M0ZM!f(yEt^}z|I2)b`8$Y z+`DFeb!KXIe)0YLD=SMdi9xlQonDv%3mGGpI=LD~wlc;1L{)>K&RWYE6U!FT91)wk zeOrS}ywqvmaDPrF1Baf0HG6gr2DiUR;Rl{yk;z~;TwOZSi;u_%SZd0fug}dqtaZoD z&duwU^OqJMjd%szf^Ib@o1I(0Z2%Y#5J3B6X?YQ<7j#nOJ4RYw>;$YFrbL6qFgcx8 zmhEe)tx3}62IUk~rMVkA?>>U;sAtYzNKHqOakl(UeSTqK0SueZS*QSuNU6ey4qGP7 ztebRkE7nLylci2m@7b)+v9r|QvSpj8v8f?0MB;KY7ikc1eT~b-O>i~v1#COw_J

"; } } @@ -728,7 +727,8 @@ void compareDialog::printExpos() } str += tr("Weight") + QString("%1").arg(getGVarString(ed->weight)).rightJustified(6, ' '); - str += " " + tr("Expo") + QString("%1").arg(getGVarString(ed->expo)).rightJustified(7, ' '); + str += ed->curve.toString().replace("<", "<").replace(">", ">"); + if (GetEepromInterface()->getCapability(FlightPhases)) { if(ed->phases) { if (ed->phases!=(unsigned int)(1<getCapability(FlightPhases))-1) { @@ -767,9 +767,7 @@ void compareDialog::printExpos() } if (ed->swtch.type) str += " " + tr("Switch") + QString("(%1)").arg(ed->swtch.toString()); - if (ed->curveMode) - if (ed->curveParam) - str += " " + tr("Curve") + QString("(%1)").arg(getCurveStr(ed->curveParam).replace("<", "<").replace(">", ">")); + str += ""; } } @@ -824,13 +822,8 @@ void compareDialog::printMixers() str += md->srcRaw.toString(); if (md->swtch.type) str += " " + tr("Switch") + QString("(%1)").arg(md->swtch.toString()); if (md->carryTrim) str += " " + tr("noTrim"); - if(GetEepromInterface()->getCapability(MixFmTrim) && md->enableFmTrim==1){ - if (md->sOffset) str += " "+ tr("FMTrim") + QString(" (%1%)").arg(md->sOffset); - } else { - if (md->sOffset) str += " "+ tr("Offset") + QString(" (%1%)").arg(getGVarString(md->sOffset)); - } - if (md->differential) str += " "+ tr("Diff") + QString(" (%1%)").arg(getGVarString(md->differential)); - if (md->curve) str += " " + tr("Curve") + QString("(%1)").arg(getCurveStr(md->curve).replace("<", "<").replace(">", ">")); + if (md->sOffset) str += " "+ tr("Offset") + QString(" (%1%)").arg(getGVarString(md->sOffset)); + str += md->curve.toString().replace("<", "<").replace(">", ">"); if (md->delayDown || md->delayUp) str += tr(" Delay(u%1:d%2)").arg(md->delayUp/scale).arg(md->delayDown/scale); if (md->speedDown || md->speedUp) str += tr(" Slow(u%1:d%2)").arg(md->speedUp/scale).arg(md->speedDown/scale); if (md->mixWarn) str += " "+tr("Warn")+QString("(%1)").arg(md->mixWarn); @@ -907,13 +900,9 @@ void compareDialog::printMixers() str += md->srcRaw.toString(); if (md->swtch.type) str += " " + tr("Switch") + QString("(%1)").arg(md->swtch.toString()); if (md->carryTrim) str += " " + tr("noTrim"); - if(GetEepromInterface()->getCapability(MixFmTrim) && md->enableFmTrim==1){ - if (md->sOffset) str += " "+ tr("FMTrim") + QString(" (%1%)").arg(getGVarString(md->sOffset)); - } else { - if (md->sOffset) str += " "+ tr("Offset") + QString(" (%1%)").arg(getGVarString(md->sOffset)); - } - if (md->differential) str += " "+ tr("Diff") + QString(" (%1%)").arg(getGVarString(md->differential)); - if (md->curve) str += " " + tr("Curve") + QString("(%1)").arg(getCurveStr(md->curve).replace("<", "<").replace(">", ">")); + if (md->sOffset) str += " "+ tr("Offset") + QString(" (%1%)").arg(getGVarString(md->sOffset)); + // TODO if (md->differential) str += " "+ tr("Diff") + QString(" (%1%)").arg(getGVarString(md->differential)); + // TODO if (md->curve) str += " " + tr("Curve") + QString("(%1)").arg(getCurveStr(md->curve).replace("<", "<").replace(">", ">")); if (md->delayDown || md->delayUp) str += tr(" Delay(u%1:d%2)").arg(md->delayUp/scale).arg(md->delayDown/scale); if (md->speedDown || md->speedUp) str += tr(" Slow(u%1:d%2)").arg(md->speedUp/scale).arg(md->speedDown/scale); if (md->mixWarn) str += " "+tr("Warn")+QString("(%1)").arg(md->mixWarn); diff --git a/companion/src/eepromimportexport.h b/companion/src/eepromimportexport.h index 370287851..1f5c701f5 100644 --- a/companion/src/eepromimportexport.h +++ b/companion/src/eepromimportexport.h @@ -74,7 +74,10 @@ class DataField { QByteArray bytes = bitsToBytes(bits); int result = (offset+bits.count()) % 8; for (int i=0; iDump(level+1, offset); } diff --git a/companion/src/eeprominterface.cpp b/companion/src/eeprominterface.cpp index 206804e1c..28a7d813b 100644 --- a/companion/src/eeprominterface.cpp +++ b/companion/src/eeprominterface.cpp @@ -4,9 +4,10 @@ #include "firmwares/er9x/er9xinterface.h" #include "firmwares/th9x/th9xinterface.h" #include "firmwares/gruvin9x/gruvin9xinterface.h" -#include "firmwares/opentx/open9xinterface.h" +#include "firmwares/opentx/opentxinterface.h" #include "firmwares/ersky9x/ersky9xinterface.h" #include "qsettings.h" +#include "helpers.h" QString EEPROMWarnings; @@ -408,6 +409,25 @@ QString RawSwitch::toString() return QObject::tr("----"); } +QString CurveReference::toString() +{ + if (value == 0) { + return ""; + } + else { + switch(type) { + case CURVE_REF_DIFF: + return QObject::tr("Diff(%1%%)").arg(getGVarString(value)); + case CURVE_REF_EXPO: + return QObject::tr("Expo(%1%%)").arg(getGVarString(value)); + case CURVE_REF_FUNC: + return QObject::tr("Function(%1)").arg(QString("x>0" "x<0" "|x|" "f>0" "f<0" "|f|").mid(3*(value-1), 3)); + default: + return QString(value > 0 ? QObject::tr("Curve(%1)") : QObject::tr("!Curve(%1)")).arg(abs(value)); + } + } +} + GeneralSettings::GeneralSettings() { memset(this, 0, sizeof(GeneralSettings)); @@ -579,12 +599,8 @@ void ModelData::clear() expoData[i].clear(); for (int i=0; igetCapability(CustomCurves); for (int i=0; i=8) - curves[i].clear(9); - else - curves[i].clear(5); + curves[i].clear(5); } swashRingData.clear(); @@ -628,13 +644,13 @@ ModelData ModelData::removeGlobalVars() for (int i=0; i t LIMIT(t mi, t x, t ma) { return std::min(std::max(mi, x), ma enum BoardEnum { BOARD_STOCK, BOARD_M128, + BOARD_MEGA2560, BOARD_GRUVIN9X, BOARD_SKY9X, BOARD_TARANIS, BOARD_TARANIS_REV4a }; + #define IS_STOCK(board) (board==BOARD_STOCK || board==BOARD_M128) +#define IS_2560(board) (board==BOARD_GRUVIN9X || board==BOARD_MEGA2560) #define IS_ARM(board) (board==BOARD_SKY9X || board==BOARD_TARANIS || board==BOARD_TARANIS_REV4a) #define IS_TARANIS(board) (board==BOARD_TARANIS || board==BOARD_TARANIS_REV4a) @@ -470,17 +473,44 @@ class GeneralSettings { unsigned int switchUnlockStates; }; +class CurveReference { + public: + enum CurveRefType { + CURVE_REF_DIFF, + CURVE_REF_EXPO, + CURVE_REF_FUNC, + CURVE_REF_CUSTOM + }; + + CurveReference() { clear(); } + + CurveReference(CurveRefType type, int value): + type(type), + value(value) + { + } + + void clear() { memset(this, 0, sizeof(CurveReference)); } + + CurveRefType type; + int value; + + QString toString(); +}; + class ExpoData { public: ExpoData() { clear(); } + RawSource srcRaw; + unsigned int scale; unsigned int mode; // 0=end, 1=pos, 2=neg, 3=both unsigned int chn; RawSwitch swtch; unsigned int phases; // -5=!FP4, 0=normal, 5=FP4 int weight; - int expo; - unsigned int curveMode; - int curveParam; + int offset; + CurveReference curve; + int carryTrim; char name[10+1]; void clear() { memset(this, 0, sizeof(ExpoData)); } }; @@ -493,11 +523,19 @@ class CurvePoint { class CurveData { public: + enum CurveType { + CURVE_TYPE_STANDARD, + CURVE_TYPE_CUSTOM, + CURVE_TYPE_LAST = CURVE_TYPE_CUSTOM + }; + CurveData() { clear(5); } - bool custom; // 0=end, 1=pos, 2=neg, 3=both - uint8_t count; + + CurveType type; + bool smooth; + int count; CurvePoint points[C9X_MAX_POINTS]; - char name[6+1]; + char name[6+1]; void clear(int count) { memset(this, 0, sizeof(CurveData)); this->count = count; } }; @@ -511,6 +549,7 @@ class LimitData { int ppmCenter; bool symetrical; char name[6+1]; + CurveReference curve; void clear() { memset(this, 0, sizeof(LimitData)); min = -100; max = +100; } }; @@ -520,7 +559,6 @@ enum MltpxValue { MLTPX_REP=2 }; - class MixData { public: MixData() { clear(); } @@ -528,9 +566,8 @@ class MixData { RawSource srcRaw; unsigned int srcVariant; int weight; - int differential; RawSwitch swtch; - int curve; //0=symmetrisch + CurveReference curve; //0=symmetrisch unsigned int delayUp; unsigned int delayDown; unsigned int speedUp; // Servogeschwindigkeit aus Tabelle (10ms Cycle) @@ -539,7 +576,6 @@ class MixData { bool noExpo; MltpxValue mltpx; // multiplex method 0=+ 1=* 2=replace unsigned int mixWarn; // mixer warning - unsigned int enableFmTrim; unsigned int phases; // -5=!FP4, 0=normal, 5=FP4 unsigned int lateOffset; int sOffset; @@ -621,7 +657,7 @@ class PhaseData { unsigned int fadeIn; unsigned int fadeOut; int rotaryEncoders[2]; - int gvars[5]; + int gvars[C9X_MAX_GVARS]; void clear() { memset(this, 0, sizeof(PhaseData)); for (int i=0; i -int8_t er9xFromSwitch(const RawSwitch & sw) -{ - switch (sw.type) { - case SWITCH_TYPE_SWITCH: - return sw.index; - case SWITCH_TYPE_VIRTUAL: - return sw.index > 0 ? (9 + sw.index) : (-9 + sw.index); - case SWITCH_TYPE_ON: - return 22; - case SWITCH_TYPE_OFF: - return -22; - case SWITCH_TYPE_MOMENT_SWITCH: - return sw.index > 0 ? (22 + sw.index) : (-22 + sw.index); - case SWITCH_TYPE_MOMENT_VIRTUAL: - return sw.index > 0 ? (31 + sw.index) : (-31 + sw.index); - default: - return 0; - } -} - RawSwitch er9xToSwitch(int8_t sw) { uint8_t swa = abs(sw); @@ -47,15 +27,6 @@ t_Er9xTrainerMix::t_Er9xTrainerMix() memset(this, 0, sizeof(t_Er9xTrainerMix)); } -t_Er9xTrainerMix::t_Er9xTrainerMix(TrainerMix &c9x) -{ - memset(this, 0, sizeof(t_Er9xTrainerMix)); - srcChn = c9x.src; - swtch = er9xFromSwitch(c9x.swtch); - studWeight = (8 * c9x.weight) / 25; - mode = c9x.mode; -} - t_Er9xTrainerMix::operator TrainerMix() { TrainerMix c9x; @@ -71,15 +42,6 @@ t_Er9xTrainerData::t_Er9xTrainerData() memset(this, 0, sizeof(t_Er9xTrainerData)); } -t_Er9xTrainerData::t_Er9xTrainerData(TrainerData &c9x) -{ - memset(this, 0, sizeof(t_Er9xTrainerData)); - for (int i=0; i125) { - if (c9x.weight>0) { - int index=abs(c9x.weight)-10000; - int gvar=125+index; - if (gvar>127) { - gvar-=256; - } - weight = gvar; - } else { - EEPROMWarnings += ::QObject::tr("er9x doesn't have negative gvars as weight") + "\n"; - weight=0; - } - } else { - weight = c9x.weight; - } - - if (abs(c9x.sOffset)>125) { - if (c9x.sOffset>0) { - int index=abs(c9x.sOffset)-10000; - int gvar=125+index; - if (gvar>127) { - gvar-=256; - } - sOffset = gvar; - } else { - EEPROMWarnings += ::QObject::tr("er9x doesn't have negative gvars as offset") + "\n"; - sOffset=0; - } - } else { - sOffset = c9x.sOffset; - } - - if (c9x.curve!=0) { - curve = c9x.curve; - differential=0; - } else { - if (c9x.differential!=0) { - curve=c9x.differential; - differential=1; - } else { - curve=0; - differential=0; - } - } - lateOffset=c9x.lateOffset; - delayUp = c9x.delayUp; - delayDown = c9x.delayDown; - speedUp = c9x.speedUp; - speedDown = c9x.speedDown; - if (c9x.carryTrim<0) { - EEPROMWarnings += ::QObject::tr("er9x doesn't have swappable trims") + "\n"; - carryTrim=1; - } else { - carryTrim = c9x.carryTrim; - } - mltpx = (MltpxValue)c9x.mltpx; - mixWarn = c9x.mixWarn; - enableFmTrim=c9x.enableFmTrim; - -} - t_Er9xMixData::operator MixData () { MixData c9x; @@ -432,13 +215,20 @@ t_Er9xMixData::operator MixData () else { c9x.srcRaw = RawSource(SOURCE_TYPE_GVAR, srcRaw-38); } + if (differential==1) { - c9x.differential=curve; - c9x.curve=0; - } else { - c9x.differential=0; - c9x.curve=curve; + c9x.curve.type = CurveReference::CURVE_REF_DIFF; + c9x.curve.value = differential; } + else if (curve > 6) { + c9x.curve.type = CurveReference::CURVE_REF_CUSTOM; + c9x.curve.value = curve - 6; + } + else if (curve > 0) { + c9x.curve.type = CurveReference::CURVE_REF_FUNC; + c9x.curve.value = curve; + } + c9x.lateOffset=lateOffset; c9x.delayUp = delayUp; c9x.delayDown = delayDown; @@ -447,32 +237,10 @@ t_Er9xMixData::operator MixData () c9x.carryTrim = carryTrim; c9x.mltpx = (MltpxValue)mltpx; c9x.mixWarn = mixWarn; - c9x.enableFmTrim=enableFmTrim; + // c9x.enableFmTrim=enableFmTrim; return c9x; } -int8_t er9xFromSource(RawSource source) -{ - int v1 = 0; - if (source.type == SOURCE_TYPE_STICK) - v1 = 1+source.index; - else if (source.type == SOURCE_TYPE_ROTARY_ENCODER) { - EEPROMWarnings += ::QObject::tr("er9x on this board doesn't have Rotary Encoders") + "\n"; - v1 = 5+source.index; - } - else if (source.type == SOURCE_TYPE_MAX) - v1 = 8; - else if (source.type == SOURCE_TYPE_CYC) - v1 = 10+source.index; - else if (source.type == SOURCE_TYPE_PPM) - v1 = 13+source.index; - else if (source.type == SOURCE_TYPE_CH) - v1 = 21+source.index; - else if (source.type == SOURCE_TYPE_TELEMETRY) - v1 = 36+source.index; - return v1; -} - RawSource er9xToSource(int8_t value) { if (value == 0) { @@ -501,33 +269,6 @@ RawSource er9xToSource(int8_t value) } } -t_Er9xCustomSwData::t_Er9xCustomSwData(CustomSwData &c9x) -{ - func = c9x.func; - v1 = c9x.val1; - v2 = c9x.val2; - - if ((c9x.func >= CS_FN_VPOS && c9x.func <= CS_FN_ANEG) || c9x.func >= CS_FN_EQUAL) { - v1 = er9xFromSource(RawSource(c9x.val1)); - } - - if (c9x.func >= CS_FN_EQUAL) { - v2 = er9xFromSource(RawSource(c9x.val2)); - } - - if (c9x.func >= CS_FN_AND && c9x.func <= CS_FN_XOR) { - v1 = er9xFromSwitch(RawSwitch(c9x.val1)); - v2 = er9xFromSwitch(RawSwitch(c9x.val2)); - } - - if (func>ER9X_MAX_CSFUNC ) { - EEPROMWarnings += ::QObject::tr("er9x does not support Custom Switch function %1").arg(getFuncName(func)) + "\n"; - func=0; - v1=0; - v2=0; - } -} - Er9xCustomSwData::operator CustomSwData () { CustomSwData c9x; @@ -557,13 +298,6 @@ t_Er9xSafetySwData::t_Er9xSafetySwData() memset(this, 0, sizeof(t_Er9xSafetySwData)); } -t_Er9xSafetySwData::t_Er9xSafetySwData(SafetySwData &c9x) -{ - memset(this, 0, sizeof(t_Er9xSafetySwData)); - swtch = er9xFromSwitch(c9x.swtch); - val = c9x.val; -} - t_Er9xSafetySwData::operator SafetySwData () { SafetySwData c9x; @@ -572,35 +306,11 @@ t_Er9xSafetySwData::operator SafetySwData () return c9x; } - t_Er9xFrSkyChannelData::t_Er9xFrSkyChannelData() { memset(this, 0, sizeof(t_Er9xFrSkyChannelData)); } -t_Er9xFrSkyChannelData::t_Er9xFrSkyChannelData(FrSkyChannelData &c9x) -{ - memset(this, 0, sizeof(t_Er9xFrSkyChannelData)); - ratio = c9x.ratio; - alarms_value[0] = c9x.alarms[0].value; - alarms_value[1] = c9x.alarms[1].value; - alarms_level = (c9x.alarms[1].level << 2) + c9x.alarms[0].level; - alarms_greater = (c9x.alarms[1].greater << 1) + c9x.alarms[0].greater; - if (c9x.type==0) { - if (c9x.multiplier==0) { - type = 0; - } else if (c9x.multiplier==1) { - type = 2; - } else { - EEPROMWarnings += ::QObject::tr("er9x does not support this range for A1/A2") + "\n"; - } - } else if (c9x.type==1 || c9x.type==3) { - type=c9x.type; - } else { - EEPROMWarnings += ::QObject::tr("er9x does not support this telemetry units") + "\n"; - } -} - t_Er9xFrSkyChannelData::operator FrSkyChannelData () { FrSkyChannelData c9x; @@ -620,19 +330,11 @@ t_Er9xFrSkyChannelData::operator FrSkyChannelData () return c9x; } - t_Er9xFrSkyData::t_Er9xFrSkyData() { memset(this, 0, sizeof(t_Er9xFrSkyData)); } -t_Er9xFrSkyData::t_Er9xFrSkyData(FrSkyData &c9x) -{ - memset(this, 0, sizeof(t_Er9xFrSkyData)); - channels[0] = c9x.channels[0]; - channels[1] = c9x.channels[1]; -} - t_Er9xFrSkyData::operator FrSkyData () { FrSkyData c9x; @@ -641,24 +343,6 @@ t_Er9xFrSkyData::operator FrSkyData () return c9x; } -int setEr9xTimerMode(TimerMode mode) -{ - if (mode == TMRMODE_OFF || mode == TMRMODE_ABS) - return mode; - else if (mode == TMRMODE_THs || mode == TMRMODE_THp) - return mode + 4; - else if (mode >= TMRMODE_FIRST_MOMENT_SWITCH) - return 37+mode-TMRMODE_FIRST_MOMENT_SWITCH; - else if (mode >= TMRMODE_FIRST_SWITCH) - return 16+mode-TMRMODE_FIRST_SWITCH; - else if (mode <= TMRMODE_FIRST_NEG_MOMENT_SWITCH) - return -37+mode-TMRMODE_FIRST_NEG_MOMENT_SWITCH; - else if (mode <= TMRMODE_FIRST_NEG_SWITCH) - return -16+mode-TMRMODE_FIRST_NEG_SWITCH; - else - return 0; -} - TimerMode getEr9xTimerMode(int mode) { if (mode <= -33) @@ -673,162 +357,6 @@ TimerMode getEr9xTimerMode(int mode) return TimerMode(TMRMODE_FIRST_MOMENT_SWITCH+(mode-16-21)); } -t_Er9xModelData::t_Er9xModelData(ModelData &c9x) -{ - memset(this, 0, sizeof(t_Er9xModelData)); - - if (c9x.used) { - setEEPROMString(name, c9x.name, sizeof(name)); - modelVoice=c9x.modelVoice; - tmrMode = setEr9xTimerMode(c9x.timers[0].mode); - tmrModeB = c9x.timers[0].modeB; - tmrDir = c9x.timers[0].dir; - tmrVal = c9x.timers[0].val; - switch(c9x.moduleData[0].protocol) { - case PPM: - protocol = 0; - break; - case PXX_DJT: - protocol = 1; - break; - case DSM2: - protocol = 2; - break; - case PPM16: - protocol = 3; - break; - default: - protocol = 0; - EEPROMWarnings += QObject::tr("Er9x doesn't accept this protocol") + "\n"; - // TODO more explicit warning for each protocol - break; - } - traineron = c9x.traineron; - t2throttle = c9x.t2throttle; - ppmFrameLength = c9x.moduleData[0].ppmFrameLength; - ppmNCH = (c9x.moduleData[0].channelsCount - 8) / 2; - thrTrim = c9x.thrTrim; - thrExpo = c9x.thrExpo; - trimInc = c9x.trimInc; - ppmDelay = (c9x.moduleData[0].ppmDelay - 300) / 50; - for (unsigned int i=0; iEeFsCreate(eeprom, getEEpromSize(), BOARD_STOCK); - - Er9xGeneral er9xGeneral(radioData.generalSettings); - int sz = efile->writeRlc1(FILE_GENERAL, FILE_TYP_GENERAL, (uint8_t*)&er9xGeneral, sizeof(Er9xGeneral)); - if(sz != sizeof(Er9xGeneral)) { - return 0; - } - - for (int i=0; iwriteRlc1(FILE_MODEL(i), FILE_TYP_MODEL, (uint8_t*)&er9xModel, sizeof(Er9xModelData)); - if(sz != sizeof(Er9xModelData)) { - return 0; - } - } - } - - return getEEpromSize(); + return 0; } int Er9xInterface::getSize(ModelData &model) { - if (model.isempty()) - return 0; - - uint8_t tmp[2*EESIZE_STOCK]; - efile->EeFsCreate(tmp, getEEpromSize(), BOARD_STOCK); - - Er9xModelData er9xModel(model); - int sz = efile->writeRlc1(0, FILE_TYP_MODEL, (uint8_t*)&er9xModel, sizeof(Er9xModelData)); - if(sz != sizeof(Er9xModelData)) { - return -1; - } - return efile->size(0); + return 0; } int Er9xInterface::getSize(GeneralSettings &settings) { - uint8_t tmp[2*EESIZE_STOCK]; - efile->EeFsCreate(tmp, getEEpromSize(), BOARD_STOCK); - - Er9xGeneral er9xGeneral(settings); - int sz = efile->writeRlc1(0, FILE_TYP_GENERAL, (uint8_t*)&er9xGeneral, sizeof(Er9xGeneral)); - if(sz != sizeof(Er9xGeneral)) { - return -1; - } - return efile->size(0); + return 0; } int Er9xInterface::getCapability(const Capability capability) @@ -244,12 +207,6 @@ int Er9xInterface::getCapability(const Capability capability) return 4; case Mixes: return ER9X_MAX_MIXERS; - case NumCurves5: - return ER9X_MAX_CURVE5; - case NumCurves9: - return ER9X_MAX_CURVE5; - case MixFmTrim: - return 1; case PPMExtCtrl: return 1; case ModelTrainerEnable: @@ -324,8 +281,6 @@ int Er9xInterface::getCapability(const Capability capability) case HasVolume: case HasBlInvert: case ModelVoice: - case DiffMixers: - case HasNegCurves: case HasFixOffset: return 1; case Gvars: diff --git a/companion/src/firmwares/ersky9x/ersky9xeeprom.cpp b/companion/src/firmwares/ersky9x/ersky9xeeprom.cpp index 231e06af7..1247c795a 100644 --- a/companion/src/firmwares/ersky9x/ersky9xeeprom.cpp +++ b/companion/src/firmwares/ersky9x/ersky9xeeprom.cpp @@ -3,19 +3,8 @@ #include "ersky9xeeprom.h" #include -extern int8_t er9xFromSwitch(const RawSwitch & sw); extern RawSwitch er9xToSwitch(int8_t sw); -int setErSky9xTimerMode(TimerMode mode) -{ - if (mode == TMRMODE_OFF || mode == TMRMODE_ABS || mode == TMRMODE_THs || mode == TMRMODE_THp) - return mode; - else if (mode >= TMRMODE_FIRST_CHPERC) - return 4+mode-TMRMODE_FIRST_CHPERC; - else - return 0; -} - TimerMode getErSky9xTimerMode(int mode) { if (mode<4) @@ -26,26 +15,6 @@ TimerMode getErSky9xTimerMode(int mode) return TimerMode(0); } -int8_t ersky9xFromSwitch(const RawSwitch & sw) -{ - switch (sw.type) { - case SWITCH_TYPE_SWITCH: - return sw.index; - case SWITCH_TYPE_VIRTUAL: - return sw.index > 0 ? (9 + sw.index) : (-9 + sw.index); - case SWITCH_TYPE_ON: - return 34; - case SWITCH_TYPE_OFF: - return -34; - case SWITCH_TYPE_MOMENT_SWITCH: - return sw.index > 0 ? (34 + sw.index) : (-34 + sw.index); - case SWITCH_TYPE_MOMENT_VIRTUAL: - return sw.index > 0 ? (31 + sw.index) : (-31 + sw.index); - default: - return 0; - } -} - RawSwitch ersky9xToSwitch(int8_t sw) { uint8_t swa = abs(sw); @@ -65,21 +34,11 @@ RawSwitch ersky9xToSwitch(int8_t sw) return RawSwitch(SWITCH_TYPE_MOMENT_VIRTUAL, sw > 0 ? sw-34-9 : sw+34+9); } - t_Ersky9xTrainerMix::t_Ersky9xTrainerMix() { memset(this, 0, sizeof(t_Ersky9xTrainerMix)); } -t_Ersky9xTrainerMix::t_Ersky9xTrainerMix(TrainerMix &c9x) -{ - memset(this, 0, sizeof(t_Ersky9xTrainerMix)); - srcChn = c9x.src; - swtch = er9xFromSwitch(c9x.swtch); - studWeight = (8 * c9x.weight) / 25; - mode = c9x.mode; -} - t_Ersky9xTrainerMix::operator TrainerMix() { TrainerMix c9x; @@ -95,15 +54,6 @@ t_Ersky9xTrainerData::t_Ersky9xTrainerData() memset(this, 0, sizeof(t_Ersky9xTrainerData)); } -t_Ersky9xTrainerData::t_Ersky9xTrainerData(TrainerData &c9x) -{ - memset(this, 0, sizeof(t_Ersky9xTrainerData)); - for (int i=0; i 6) { + c9x.curve.type = CurveReference::CURVE_REF_CUSTOM; + c9x.curve.value = curve - 6; + } + else if (curve > 0) { + c9x.curve.type = CurveReference::CURVE_REF_FUNC; + c9x.curve.value = curve; + } + c9x.delayUp = delayUp; c9x.delayDown = delayDown; c9x.speedUp = speedUp; @@ -396,7 +221,7 @@ t_Ersky9xMixData_v10::operator MixData () c9x.carryTrim = carryTrim; c9x.mltpx = (MltpxValue)mltpx; c9x.mixWarn = mixWarn; - c9x.enableFmTrim=enableFmTrim; + // c9x.enableFmTrim=enableFmTrim; c9x.sOffset = sOffset; return c9x; } @@ -407,67 +232,6 @@ t_Ersky9xMixData_v11::t_Ersky9xMixData_v11() memset(this, 0, sizeof(t_Ersky9xMixData_v11)); } -t_Ersky9xMixData_v11::t_Ersky9xMixData_v11(MixData &c9x) -{ - memset(this, 0, sizeof(t_Ersky9xMixData_v11)); - destCh = c9x.destCh; - swtch = ersky9xFromSwitch(c9x.swtch); - if (c9x.srcRaw.type == SOURCE_TYPE_NONE) { - srcRaw = 0; - swtch = 0; - } - else if (c9x.srcRaw.type == SOURCE_TYPE_STICK) { - srcRaw = 1 + c9x.srcRaw.index; - } - else if (c9x.srcRaw.type == SOURCE_TYPE_ROTARY_ENCODER) { - EEPROMWarnings += ::QObject::tr("ersky9x doesn't have Rotary Encoders") + "\n"; - srcRaw = 5 + c9x.srcRaw.index; // use pots instead - } - else if (c9x.srcRaw.type == SOURCE_TYPE_MAX) { - srcRaw = 8; // MAX - } - /* else if (c9x.srcRaw.type == SOURCE_TYPE_3POS) { - srcRaw = 45; - } */ - else if (c9x.srcRaw.type == SOURCE_TYPE_GVAR) { - srcRaw = 46+c9x.srcRaw.index; // MAX - } - else if (c9x.srcRaw.type == SOURCE_TYPE_SWITCH) { - srcRaw = 9; // FULL - swtch = ersky9xFromSwitch(RawSwitch(c9x.srcRaw.index)); - } - else if (c9x.srcRaw.type == SOURCE_TYPE_CYC) { - srcRaw = 10 + c9x.srcRaw.index; - } - else if (c9x.srcRaw.type == SOURCE_TYPE_PPM) { - srcRaw = 13 + c9x.srcRaw.index; - } - else if (c9x.srcRaw.type == SOURCE_TYPE_CH) { - srcRaw = 21 + c9x.srcRaw.index; - } - else if (c9x.srcRaw.type == SOURCE_TYPE_TRIM) { - EEPROMWarnings += ::QObject::tr("ersky9x doesn't have trims as source") + "\n"; - srcRaw = 0; // use pots instead - } - - weight = c9x.weight; - curve = c9x.curve; - delayUp = c9x.delayUp; - delayDown = c9x.delayDown; - speedUp = c9x.speedUp; - speedDown = c9x.speedDown; - if (c9x.carryTrim<0) { - EEPROMWarnings += ::QObject::tr("er9x doesn't have swappable trims") + "\n"; - carryTrim=1; - } else { - carryTrim = c9x.carryTrim; - } - mltpx = (MltpxValue)c9x.mltpx; - mixWarn = c9x.mixWarn; - enableFmTrim=c9x.enableFmTrim; - sOffset = c9x.sOffset; -} - t_Ersky9xMixData_v11::operator MixData () { MixData c9x; @@ -514,7 +278,15 @@ t_Ersky9xMixData_v11::operator MixData () c9x.srcRaw = RawSource(SOURCE_TYPE_CH, srcRaw-21); } - c9x.curve = curve; + if (curve > 6) { + c9x.curve.type = CurveReference::CURVE_REF_CUSTOM; + c9x.curve.value = curve - 6; + } + else if (curve > 0) { + c9x.curve.type = CurveReference::CURVE_REF_FUNC; + c9x.curve.value = curve; + } + c9x.delayUp = delayUp; c9x.delayDown = delayDown; c9x.speedUp = speedUp; @@ -522,60 +294,11 @@ t_Ersky9xMixData_v11::operator MixData () c9x.carryTrim = carryTrim; c9x.mltpx = (MltpxValue)mltpx; c9x.mixWarn = mixWarn; - c9x.enableFmTrim=enableFmTrim; + // c9x.enableFmTrim=enableFmTrim; c9x.sOffset = sOffset; return c9x; } -int8_t ersky9xFromSource_v10(RawSource source) -{ - int v1 = 0; - if (source.type == SOURCE_TYPE_STICK) - v1 = 1+source.index; - else if (source.type == SOURCE_TYPE_ROTARY_ENCODER) { - EEPROMWarnings += ::QObject::tr("er9x on this board doesn't have Rotary Encoders") + "\n"; - v1 = 5+source.index; - } - else if (source.type == SOURCE_TYPE_MAX) - v1 = 8; - /* else if (source.type == SOURCE_TYPE_3POS) - v1 = 0; */ - else if (source.type == SOURCE_TYPE_CYC) - v1 = 10+source.index; - else if (source.type == SOURCE_TYPE_PPM) - v1 = 13+source.index; - else if (source.type == SOURCE_TYPE_CH) - v1 = 21+source.index; - else if (source.type == SOURCE_TYPE_TELEMETRY) - v1 = 36+source.index; - return v1; -} - -int8_t ersky9xFromSource_v11(RawSource source) -{ - int v1 = 0; - if (source.type == SOURCE_TYPE_STICK) - v1 = 1+source.index; - else if (source.type == SOURCE_TYPE_ROTARY_ENCODER) { - EEPROMWarnings += ::QObject::tr("er9x on this board doesn't have Rotary Encoders") + "\n"; - v1 = 5+source.index; - } - else if (source.type == SOURCE_TYPE_MAX) - v1 = 8; - /* else if (source.type == SOURCE_TYPE_3POS) - v1 = 0; */ - else if (source.type == SOURCE_TYPE_CYC) - v1 = 10+source.index; - else if (source.type == SOURCE_TYPE_PPM) - v1 = 13+source.index; - else if (source.type == SOURCE_TYPE_CH) - v1 = 21+source.index; - else if (source.type == SOURCE_TYPE_TELEMETRY) - v1 = 36+source.index; - return v1; -} - - RawSource ersky9xToSource_v10(int8_t value) { if (value == 0) { @@ -632,33 +355,6 @@ RawSource ersky9xToSource_v11(int8_t value) } } -t_Ersky9xCustomSwData_v10::t_Ersky9xCustomSwData_v10(CustomSwData &c9x) -{ - func = c9x.func; - v1 = c9x.val1; - v2 = c9x.val2; - - if ((c9x.func >= CS_FN_VPOS && c9x.func <= CS_FN_ANEG) || c9x.func >= CS_FN_EQUAL) { - v1 = ersky9xFromSource_v10(RawSource(c9x.val1)); - } - - if (c9x.func >= CS_FN_EQUAL) { - v2 = ersky9xFromSource_v10(RawSource(c9x.val2)); - } - - if (c9x.func >= CS_FN_AND && c9x.func <= CS_FN_XOR) { - v1 = er9xFromSwitch(RawSwitch(c9x.val1)); - v2 = er9xFromSwitch(RawSwitch(c9x.val2)); - } - - if (func>ERSKY9X_MAX_CSFUNC ) { - EEPROMWarnings += ::QObject::tr("ersky9x does not support Custom Switch function %1").arg(getFuncName(func)) + "\n"; - func=0; - v1=0; - v2=0; - } -} - Ersky9xCustomSwData_v10::operator CustomSwData () { CustomSwData c9x; @@ -682,33 +378,6 @@ Ersky9xCustomSwData_v10::operator CustomSwData () return c9x; } -t_Ersky9xCustomSwData_v11::t_Ersky9xCustomSwData_v11(CustomSwData &c9x) -{ - func = c9x.func; - v1 = c9x.val1; - v2 = c9x.val2; - - if ((c9x.func >= CS_FN_VPOS && c9x.func <= CS_FN_ANEG) || c9x.func >= CS_FN_EQUAL) { - v1 = ersky9xFromSource_v11(RawSource(c9x.val1)); - } - - if (c9x.func >= CS_FN_EQUAL) { - v2 = ersky9xFromSource_v11(RawSource(c9x.val2)); - } - - if (c9x.func >= CS_FN_AND && c9x.func <= CS_FN_XOR) { - v1 = er9xFromSwitch(RawSwitch(c9x.val1)); - v2 = er9xFromSwitch(RawSwitch(c9x.val2)); - } - - if (func>ERSKY9X_MAX_CSFUNC ) { - EEPROMWarnings += ::QObject::tr("ersky9x does not support Custom Switch function %1").arg(getFuncName(func)) + "\n"; - func=0; - v1=0; - v2=0; - } -} - Ersky9xCustomSwData_v11::operator CustomSwData () { CustomSwData c9x; @@ -737,13 +406,6 @@ t_Ersky9xSafetySwData_v10::t_Ersky9xSafetySwData_v10() memset(this, 0, sizeof(t_Ersky9xSafetySwData_v10)); } -t_Ersky9xSafetySwData_v10::t_Ersky9xSafetySwData_v10(SafetySwData &c9x) -{ - memset(this, 0, sizeof(t_Ersky9xSafetySwData_v10)); - swtch = er9xFromSwitch(c9x.swtch); - val = c9x.val; -} - t_Ersky9xSafetySwData_v10::operator SafetySwData () { SafetySwData c9x; @@ -757,13 +419,6 @@ t_Ersky9xSafetySwData_v11::t_Ersky9xSafetySwData_v11() memset(this, 0, sizeof(t_Ersky9xSafetySwData_v11)); } -t_Ersky9xSafetySwData_v11::t_Ersky9xSafetySwData_v11(SafetySwData &c9x) -{ - memset(this, 0, sizeof(t_Ersky9xSafetySwData_v11)); - opt.ss.swtch = ersky9xFromSwitch(c9x.swtch); - opt.ss.val = c9x.val; -} - t_Ersky9xSafetySwData_v11::operator SafetySwData () { SafetySwData c9x; @@ -777,29 +432,6 @@ t_Ersky9xFrSkyChannelData_v10::t_Ersky9xFrSkyChannelData_v10() memset(this, 0, sizeof(t_Ersky9xFrSkyChannelData_v10)); } -t_Ersky9xFrSkyChannelData_v10::t_Ersky9xFrSkyChannelData_v10(FrSkyChannelData &c9x) -{ - memset(this, 0, sizeof(t_Ersky9xFrSkyChannelData_v10)); - ratio = c9x.ratio; - alarms_value[0] = c9x.alarms[0].value; - alarms_value[1] = c9x.alarms[1].value; - alarms_level = (c9x.alarms[1].level << 2) + c9x.alarms[0].level; - alarms_greater = (c9x.alarms[1].greater << 1) + c9x.alarms[0].greater; - if (c9x.type==0) { - if (c9x.multiplier==0) { - type = 0; - } else if (c9x.multiplier==1) { - type = 2; - } else { - EEPROMWarnings += ::QObject::tr("er9x does not support this range for A1/A2") + "\n"; - } - } else if (c9x.type==1 || c9x.type==3) { - type=c9x.type; - } else { - EEPROMWarnings += ::QObject::tr("er9x does not support this telemetry units") + "\n"; - } -} - t_Ersky9xFrSkyChannelData_v10::operator FrSkyChannelData () { FrSkyChannelData c9x; @@ -824,29 +456,6 @@ t_Ersky9xFrSkyChannelData_v11::t_Ersky9xFrSkyChannelData_v11() memset(this, 0, sizeof(t_Ersky9xFrSkyChannelData_v11)); } -t_Ersky9xFrSkyChannelData_v11::t_Ersky9xFrSkyChannelData_v11(FrSkyChannelData &c9x) -{ - memset(this, 0, sizeof(t_Ersky9xFrSkyChannelData_v11)); - ratio = c9x.ratio; - alarms_value[0] = c9x.alarms[0].value; - alarms_value[1] = c9x.alarms[1].value; - alarms_level = (c9x.alarms[1].level << 2) + c9x.alarms[0].level; - alarms_greater = (c9x.alarms[1].greater << 1) + c9x.alarms[0].greater; - if (c9x.type==0) { - if (c9x.multiplier==0) { - type = 0; - } else if (c9x.multiplier==1) { - type = 2; - } else { - EEPROMWarnings += ::QObject::tr("er9x does not support this range for A1/A2") + "\n"; - } - } else if (c9x.type==1 || c9x.type==3) { - type=c9x.type; - } else { - EEPROMWarnings += ::QObject::tr("er9x does not support this telemetry units") + "\n"; - } -} - t_Ersky9xFrSkyChannelData_v11::operator FrSkyChannelData () { FrSkyChannelData c9x; @@ -871,13 +480,6 @@ t_Ersky9xFrSkyData_v10::t_Ersky9xFrSkyData_v10() memset(this, 0, sizeof(t_Ersky9xFrSkyData_v10)); } -t_Ersky9xFrSkyData_v10::t_Ersky9xFrSkyData_v10(FrSkyData &c9x) -{ - memset(this, 0, sizeof(t_Ersky9xFrSkyData_v10)); - channels[0] = c9x.channels[0]; - channels[1] = c9x.channels[1]; -} - t_Ersky9xFrSkyData_v10::operator FrSkyData () { FrSkyData c9x; @@ -891,13 +493,6 @@ t_Ersky9xFrSkyData_v11::t_Ersky9xFrSkyData_v11() memset(this, 0, sizeof(t_Ersky9xFrSkyData_v11)); } -t_Ersky9xFrSkyData_v11::t_Ersky9xFrSkyData_v11(FrSkyData &c9x) -{ - memset(this, 0, sizeof(t_Ersky9xFrSkyData_v11)); - channels[0] = c9x.channels[0]; - channels[1] = c9x.channels[1]; -} - t_Ersky9xFrSkyData_v11::operator FrSkyData () { FrSkyData c9x; @@ -906,168 +501,6 @@ t_Ersky9xFrSkyData_v11::operator FrSkyData () return c9x; } -t_Ersky9xModelData_v10::t_Ersky9xModelData_v10(ModelData &c9x) -{ - memset(this, 0, sizeof(t_Ersky9xModelData_v10)); - - if (c9x.used) { - setEEPROMString(name, c9x.name, sizeof(name)); - reserved_spare = 0; - spare21 = 0; - sparex = 0; - spare22 = 0; - for (int i=0; i<2; i++) { - timer[i].tmrModeA = setErSky9xTimerMode(c9x.timers[i].mode); - timer[i].tmrModeB = c9x.timers[i].modeB; - timer[i].tmrDir = c9x.timers[i].dir; - timer[i].tmrVal = c9x.timers[i].val; - } - switch(c9x.moduleData[0].protocol) { - case PPM: - protocol = 0; - break; - case PXX_DJT: - protocol = 1; - break; - case DSM2: - protocol = 2; - break; - case PPM16: - protocol = 3; - break; - default: - protocol = 0; - EEPROMWarnings += QObject::tr("Ersky9x doesn't accept this protocol") + "\n"; - // TODO more explicit warning for each protocol - break; - } - traineron = c9x.traineron; - // t2throttle = c9x.t2throttle; - ppmFrameLength = c9x.moduleData[0].ppmFrameLength; - ppmNCH = (c9x.moduleData[0].channelsCount - 8) / 2; - thrTrim = c9x.thrTrim; - thrExpo = c9x.thrExpo; - trimInc = c9x.trimInc; - ppmDelay = (c9x.moduleData[0].ppmDelay - 300) / 50; - for (unsigned int i=0; iEeFsCreate(eeprom, EESIZE_SKY9X, BOARD_SKY9X); - - Ersky9xGeneral ersky9xGeneral(radioData.generalSettings); - int sz = efile->writeRlc2(FILE_GENERAL, FILE_TYP_GENERAL, (uint8_t*)&ersky9xGeneral, sizeof(Ersky9xGeneral)); - if(sz != sizeof(Ersky9xGeneral)) { - return 0; - } - - for (int i=0; iwriteRlc2(FILE_MODEL(i), FILE_TYP_MODEL, (uint8_t*)&ersky9xModel, sizeof(Ersky9xModelData_v11)); - if(sz != sizeof(Ersky9xModelData_v11)) { - return 0; - } - } - } - - if (!EEPROMWarnings.isEmpty()) - QMessageBox::warning(NULL, - QObject::tr("Warning"), - QObject::tr("EEPROM saved with these warnings:") + "\n- " + EEPROMWarnings.remove(EEPROMWarnings.length()-1, 1).replace("\n", "\n- ")); - - return EESIZE_SKY9X; + return 0; } int Ersky9xInterface::getSize(ModelData &model) @@ -272,12 +249,6 @@ int Ersky9xInterface::getCapability(const Capability capability) switch (capability) { case Mixes: return ERSKY9X_MAX_MIXERS_V11; - case NumCurves5: - return ERSKY9X_MAX_CURVE5; - case NumCurves9: - return ERSKY9X_MAX_CURVE9; - case MixFmTrim: - return 1; case PPMExtCtrl: return 1; case ModelTrainerEnable: diff --git a/companion/src/firmwares/gruvin9x/gruvin9xeeprom.cpp b/companion/src/firmwares/gruvin9x/gruvin9xeeprom.cpp index 8f9860d9a..429899ab5 100644 --- a/companion/src/firmwares/gruvin9x/gruvin9xeeprom.cpp +++ b/companion/src/firmwares/gruvin9x/gruvin9xeeprom.cpp @@ -6,7 +6,6 @@ #define EEPROM_VER 106 -extern void setEEPROMZString(char *dst, const char *src, int size); extern void getEEPROMZString(char *dst, const char *src, int size); RawSwitch gruvin9xToSwitch(int8_t sw) @@ -19,18 +18,6 @@ RawSwitch gruvin9xToSwitch(int8_t sw) return RawSwitch(SWITCH_TYPE_VIRTUAL, sw > 0 ? sw-9 : sw+9); } -int8_t gruvin9xFromSwitch(const RawSwitch & sw) -{ - switch (sw.type) { - case SWITCH_TYPE_SWITCH: - return sw.index; - case SWITCH_TYPE_VIRTUAL: - return sw.index > 0 ? (9 + sw.index) : (-9 + sw.index); - default: - return 0; - } -} - t_Gruvin9xTrainerMix_v103::operator TrainerMix() { TrainerMix c9x; @@ -50,14 +37,6 @@ t_Gruvin9xTrainerMix_v104::operator TrainerMix() return c9x; } -t_Gruvin9xTrainerMix_v104::t_Gruvin9xTrainerMix_v104(TrainerMix &c9x) -{ - memset(this, 0, sizeof(t_Gruvin9xTrainerMix_v104)); - srcChn = c9x.src; - studWeight = c9x.weight; - mode = c9x.mode; -} - t_Gruvin9xTrainerData_v103::operator TrainerData () { TrainerData c9x; @@ -78,16 +57,6 @@ t_Gruvin9xTrainerData_v104::operator TrainerData () return c9x; } -t_Gruvin9xTrainerData_v104::t_Gruvin9xTrainerData_v104(TrainerData &c9x) -{ - memset(this, 0, sizeof(t_Gruvin9xTrainerData_v104)); - for (int i=0; i>=1; - } - if (zeros==G9X_MAX_PHASES || zeros==0) { - phase=0; - negPhase=0; - } else if (zeros==1) { - int phtemp=c9x.phases; - int ph=0; - for (int i=0; i>=1; - } - phase=ph+1; - negPhase=0; - } else if (ones==1) { - int phtemp=c9x.phases; - int ph=0; - for (int i=0; i>=1; - } - phase=(ph+1); - negPhase=1; - } else { - phase=0; - EEPROMWarnings += ::QObject::tr("Flight modes settings on expos not exported") + "\n"; - } - weight = c9x.weight; - expo = c9x.expo; -} - t_Gruvin9xExpoData::operator ExpoData () { ExpoData c9x; c9x.mode = mode; c9x.chn = chn; - c9x.curveParam = curve; - c9x.curveMode=1; c9x.swtch = gruvin9xToSwitch(swtch); if (negPhase) { c9x.phases= 1 << (phase -1); @@ -322,7 +180,18 @@ t_Gruvin9xExpoData::operator ExpoData () c9x.phases &= ~(1 << (phase -1)); } c9x.weight = weight; - c9x.expo = expo; + if (expo) { + c9x.curve.type = CurveReference::CURVE_REF_EXPO; + c9x.curve.value = expo; + } + else if (curve > 6) { + c9x.curve.type = CurveReference::CURVE_REF_CUSTOM; + c9x.curve.value = curve - 6; + } + else if (curve > 0) { + c9x.curve.type = CurveReference::CURVE_REF_FUNC; + c9x.curve.value = curve; + } return c9x; } @@ -331,14 +200,6 @@ t_Gruvin9xLimitData::t_Gruvin9xLimitData() memset(this, 0, sizeof(t_Gruvin9xLimitData)); } -t_Gruvin9xLimitData::t_Gruvin9xLimitData(LimitData &c9x) -{ - min = c9x.min+100; - max = c9x.max-100; - revert = c9x.revert; - offset = c9x.offset; -} - t_Gruvin9xLimitData::operator LimitData () { LimitData c9x; @@ -349,67 +210,11 @@ t_Gruvin9xLimitData::operator LimitData () return c9x; } - t_Gruvin9xMixData::t_Gruvin9xMixData() { memset(this, 0, sizeof(t_Gruvin9xMixData)); } -t_Gruvin9xMixData::t_Gruvin9xMixData(MixData &c9x) -{ - destCh = c9x.destCh; - mixWarn = c9x.mixWarn; - swtch = gruvin9xFromSwitch(c9x.swtch); - - if (c9x.srcRaw.type == SOURCE_TYPE_NONE) { - srcRaw = 0; - swtch = 0; - } - else if (c9x.srcRaw.type == SOURCE_TYPE_STICK) { - srcRaw = 1 + c9x.srcRaw.index; - } - else if (c9x.srcRaw.type == SOURCE_TYPE_ROTARY_ENCODER) { - EEPROMWarnings += ::QObject::tr("Open9x on this board doesn't have Rotary Encoders") + "\n"; - srcRaw = 5 + c9x.srcRaw.index; // use pots instead - } - else if (c9x.srcRaw.type == SOURCE_TYPE_MAX) { - srcRaw = 8; // MAX - } - else if (c9x.srcRaw.type == SOURCE_TYPE_SWITCH) { - srcRaw = 9; // FULL - swtch = c9x.srcRaw.index+1; - } - else if (c9x.srcRaw.type == SOURCE_TYPE_CYC) { - srcRaw = 10 + c9x.srcRaw.index; - } - else if (c9x.srcRaw.type == SOURCE_TYPE_PPM) { - srcRaw = 13 + c9x.srcRaw.index; - } - else if (c9x.srcRaw.type == SOURCE_TYPE_CH) { - srcRaw = 21 + c9x.srcRaw.index; - } - else if (c9x.srcRaw.type == SOURCE_TYPE_TRIM) { - EEPROMWarnings += ::QObject::tr("gruvin9x doesn't have trims as source") + "\n"; - srcRaw = 0; // use pots instead - } - - weight = c9x.weight; - curve = c9x.curve; - delayUp = c9x.delayUp; - delayDown = c9x.delayDown; - speedUp = c9x.speedUp; - speedDown = c9x.speedDown; - if (c9x.carryTrim<0) { - EEPROMWarnings += ::QObject::tr("gruvin9x doesn't have swappable trims") + "\n"; - carryTrim=1; - } else { - carryTrim = c9x.carryTrim; - } - mltpx = (MltpxValue)c9x.mltpx; -// phase = c9x.phase; - sOffset = c9x.sOffset; -} - t_Gruvin9xMixData::operator MixData () { MixData c9x; @@ -447,7 +252,6 @@ t_Gruvin9xMixData::operator MixData () c9x.srcRaw = RawSource(SOURCE_TYPE_CH, srcRaw-21); } - c9x.curve = curve; c9x.delayUp = delayUp; c9x.delayDown = delayDown; c9x.speedUp = speedUp; @@ -455,34 +259,18 @@ t_Gruvin9xMixData::operator MixData () c9x.carryTrim = carryTrim; c9x.mltpx = (MltpxValue)mltpx; c9x.mixWarn = mixWarn; - // c9x.phase = phase; c9x.sOffset = sOffset; - return c9x; -} - -int8_t gruvin9xFromSource(RawSource source) -{ - int v1 = 0; - if (source.type == SOURCE_TYPE_STICK) - v1 = 1+source.index; - else if (source.type == SOURCE_TYPE_ROTARY_ENCODER) { - EEPROMWarnings += ::QObject::tr("gruvin9x on this board doesn't have Rotary Encoders") + "\n"; - v1 = 5+source.index; + if (curve > 6) { + c9x.curve.type = CurveReference::CURVE_REF_CUSTOM; + c9x.curve.value = curve - 6; } - else if (source.type == SOURCE_TYPE_MAX) - v1 = 8; - /* else if (source.type == SOURCE_TYPE_3POS) - v1 = 0; */ - else if (source.type == SOURCE_TYPE_CYC) - v1 = 10+source.index; - else if (source.type == SOURCE_TYPE_PPM) - v1 = 13+source.index; - else if (source.type == SOURCE_TYPE_CH) - v1 = 21+source.index; - else if (source.type == SOURCE_TYPE_TELEMETRY) - v1 = 36+source.index; - return v1; + else if (curve > 0) { + c9x.curve.type = CurveReference::CURVE_REF_FUNC; + c9x.curve.value = curve; + } + + return c9x; } RawSource gruvin9xToSource(int8_t value) @@ -513,33 +301,6 @@ RawSource gruvin9xToSource(int8_t value) } } -t_Gruvin9xCustomSwData::t_Gruvin9xCustomSwData(CustomSwData &c9x) -{ - func = c9x.func; - v1 = c9x.val1; - v2 = c9x.val2; - - if ((c9x.func >= CS_FN_VPOS && c9x.func <= CS_FN_ANEG) || c9x.func >= CS_FN_EQUAL) { - v1 = gruvin9xFromSource(RawSource(c9x.val1)); - } - - if (c9x.func >= CS_FN_EQUAL) { - v2 = gruvin9xFromSource(RawSource(c9x.val2)); - } - - if (c9x.func >= CS_FN_AND && c9x.func <= CS_FN_XOR) { - v1 = gruvin9xFromSwitch(RawSwitch(c9x.val1)); - v2 = gruvin9xFromSwitch(RawSwitch(c9x.val2)); - } - - if (func>GR9X_MAX_CSFUNC ) { - EEPROMWarnings += ::QObject::tr("gruvin9x does not support Custom Switch function %1").arg(getFuncName(func)) + "\n"; - func=0; - v1=0; - v2=0; - } -} - Gruvin9xCustomSwData::operator CustomSwData () { CustomSwData c9x; @@ -563,12 +324,6 @@ Gruvin9xCustomSwData::operator CustomSwData () return c9x; } -t_Gruvin9xFuncSwData::t_Gruvin9xFuncSwData(FuncSwData &c9x) -{ - swtch = gruvin9xFromSwitch(c9x.swtch); - func = c9x.func - G9X_NUM_CHNOUT; -} - Gruvin9xFuncSwData::operator FuncSwData () { FuncSwData c9x; @@ -577,12 +332,6 @@ Gruvin9xFuncSwData::operator FuncSwData () return c9x; } -t_Gruvin9xSafetySwData::t_Gruvin9xSafetySwData(SafetySwData &c9x) -{ - swtch = gruvin9xFromSwitch(c9x.swtch); - val = c9x.val; -} - t_Gruvin9xSafetySwData::operator SafetySwData () { SafetySwData c9x; @@ -596,16 +345,6 @@ t_Gruvin9xSwashRingData::t_Gruvin9xSwashRingData() memset(this, 0, sizeof(t_Gruvin9xSwashRingData)); } -t_Gruvin9xSwashRingData::t_Gruvin9xSwashRingData(SwashRingData &c9x) -{ - invertELE = c9x.invertELE; - invertAIL = c9x.invertAIL; - invertCOL = c9x.invertCOL; - type = c9x.type; - collectiveSource = gruvin9xFromSource(c9x.collectiveSource); - value = c9x.value; -} - t_Gruvin9xSwashRingData::operator SwashRingData () { SwashRingData c9x; @@ -642,21 +381,7 @@ t_Gruvin9xPhaseData_v106::operator PhaseData () return c9x; } -t_Gruvin9xPhaseData_v106::t_Gruvin9xPhaseData_v106(PhaseData &c9x) -{ - trim_ext = 0; - for (int i=0; i> 2); - trim_ext = (trim_ext & ~(0x03 << (2*i))) + (((c9x.trim[i] & 0x03) << (2*i))); - } - swtch = gruvin9xFromSwitch(c9x.swtch); - setEEPROMZString(name, c9x.name, sizeof(name)); - fadeIn = c9x.fadeIn; - fadeOut = c9x.fadeOut; -} - extern TimerMode getEr9xTimerMode(int mode); -extern int setEr9xTimerMode(TimerMode mode); t_Gruvin9xTimerData::operator TimerData () { @@ -667,29 +392,11 @@ t_Gruvin9xTimerData::operator TimerData () return c9x; } -t_Gruvin9xTimerData::t_Gruvin9xTimerData(TimerData &c9x) -{ - mode = setEr9xTimerMode(c9x.mode); - val = c9x.val; - dir = c9x.dir; -} - t_Gruvin9xFrSkyChannelData::t_Gruvin9xFrSkyChannelData() { memset(this, 0, sizeof(t_Gruvin9xFrSkyChannelData)); } -t_Gruvin9xFrSkyChannelData::t_Gruvin9xFrSkyChannelData(FrSkyChannelData &c9x) -{ - memset(this, 0, sizeof(t_Gruvin9xFrSkyChannelData)); - ratio = c9x.ratio; - alarms_value[0] = c9x.alarms[0].value; - alarms_value[1] = c9x.alarms[1].value; - alarms_level = (c9x.alarms[1].level << 2) + c9x.alarms[0].level; - alarms_greater = (c9x.alarms[1].greater << 1) + c9x.alarms[0].greater; - type = c9x.type; -} - t_Gruvin9xFrSkyChannelData::operator FrSkyChannelData () { FrSkyChannelData c9x; @@ -704,19 +411,11 @@ t_Gruvin9xFrSkyChannelData::operator FrSkyChannelData () return c9x; } - t_Gruvin9xFrSkyData::t_Gruvin9xFrSkyData() { memset(this, 0, sizeof(t_Gruvin9xFrSkyData)); } -t_Gruvin9xFrSkyData::t_Gruvin9xFrSkyData(FrSkyData &c9x) -{ - memset(this, 0, sizeof(t_Gruvin9xFrSkyData)); - channels[0] = c9x.channels[0]; - channels[1] = c9x.channels[1]; -} - t_Gruvin9xFrSkyData::operator FrSkyData () { FrSkyData c9x; @@ -725,7 +424,6 @@ t_Gruvin9xFrSkyData::operator FrSkyData () return c9x; } - t_Gruvin9xModelData_v102::operator ModelData () { ModelData c9x; @@ -775,7 +473,6 @@ t_Gruvin9xModelData_v102::operator ModelData () c9x.expoData[i] = expoData[i]; for (int i=0; i= 0) { - phase.trim[j] = 501 + phase.trimRef[j] - (phase.trimRef[j] >= i ? 1 : 0); - } - else { - phase.trim[j] = std::max(-500, std::min(500, phase.trim[j])); - } - } - phaseData[i] = phase; - } - frsky = c9x.frsky; - } - else { - memset(this, 0, sizeof(t_Gruvin9xModelData_v106)); - } -} - diff --git a/companion/src/firmwares/gruvin9x/gruvin9xeeprom.h b/companion/src/firmwares/gruvin9x/gruvin9xeeprom.h index f2e0cf1e2..410e96e08 100644 --- a/companion/src/firmwares/gruvin9x/gruvin9xeeprom.h +++ b/companion/src/firmwares/gruvin9x/gruvin9xeeprom.h @@ -38,8 +38,6 @@ PACK(typedef struct t_Gruvin9xTrainerMix_v104 { operator TrainerMix(); t_Gruvin9xTrainerMix_v104() { memset(this, 0, sizeof(t_Gruvin9xTrainerMix_v104)); } - t_Gruvin9xTrainerMix_v104(TrainerMix&); - }) Gruvin9xTrainerMix_v104; // PACK(typedef struct t_Gruvin9xTrainerData_v103 { @@ -55,8 +53,6 @@ PACK(typedef struct t_Gruvin9xTrainerData_v104 { operator TrainerData(); t_Gruvin9xTrainerData_v104() { memset(this, 0, sizeof(t_Gruvin9xTrainerData_v104)); } - t_Gruvin9xTrainerData_v104(TrainerData&); - }) Gruvin9xTrainerData_v104; PACK(typedef struct t_Gruvin9xFrSkyRSSIAlarm { @@ -136,8 +132,6 @@ PACK(typedef struct t_Gruvin9xGeneral_v104 { operator GeneralSettings(); t_Gruvin9xGeneral_v104() { memset(this, 0, sizeof(t_Gruvin9xGeneral_v104)); } - t_Gruvin9xGeneral_v104(GeneralSettings&); - }) Gruvin9xGeneral_v104; typedef Gruvin9xGeneral_v104 Gruvin9xGeneral; @@ -156,8 +150,6 @@ PACK(typedef struct t_Gruvin9xExpoData { operator ExpoData(); t_Gruvin9xExpoData(); - t_Gruvin9xExpoData(ExpoData&); - }) Gruvin9xExpoData; PACK(typedef struct t_Gruvin9xLimitData { @@ -168,8 +160,6 @@ PACK(typedef struct t_Gruvin9xLimitData { operator LimitData(); t_Gruvin9xLimitData(); - t_Gruvin9xLimitData(LimitData&); - }) Gruvin9xLimitData; #define MLTPX_ADD 0 @@ -194,8 +184,6 @@ PACK(typedef struct t_Gruvin9xMixData { operator MixData(); t_Gruvin9xMixData(); - t_Gruvin9xMixData(MixData&); - }) Gruvin9xMixData; PACK(typedef struct t_Gruvin9xCustomSwData { // Custom Switches data @@ -205,8 +193,6 @@ PACK(typedef struct t_Gruvin9xCustomSwData { // Custom Switches data operator CustomSwData(); t_Gruvin9xCustomSwData() { memset(this, 0, sizeof(t_Gruvin9xCustomSwData)); } - t_Gruvin9xCustomSwData(CustomSwData&); - }) Gruvin9xCustomSwData; PACK(typedef struct t_Gruvin9xSafetySwData { // Safety Switches data @@ -215,8 +201,6 @@ PACK(typedef struct t_Gruvin9xSafetySwData { // Safety Switches data operator SafetySwData(); t_Gruvin9xSafetySwData() { memset(this, 0, sizeof(t_Gruvin9xSafetySwData)); } - t_Gruvin9xSafetySwData(SafetySwData&); - }) Gruvin9xSafetySwData; PACK(typedef struct t_Gruvin9xFuncSwData { // Function Switches data @@ -225,8 +209,6 @@ PACK(typedef struct t_Gruvin9xFuncSwData { // Function Switches data operator FuncSwData(); t_Gruvin9xFuncSwData() { memset(this, 0, sizeof(t_Gruvin9xFuncSwData)); } - t_Gruvin9xFuncSwData(FuncSwData&); - }) Gruvin9xFuncSwData; PACK(typedef struct t_Gruvin9xFrSkyChannelData { @@ -242,17 +224,13 @@ PACK(typedef struct t_Gruvin9xFrSkyChannelData { operator FrSkyChannelData(); t_Gruvin9xFrSkyChannelData(); - t_Gruvin9xFrSkyChannelData(FrSkyChannelData&); - }) Gruvin9xFrSkyChannelData; PACK(typedef struct t_Gruvin9xFrSkyData { - Gruvin9xFrSkyChannelData channels[2]; - - operator FrSkyData(); - t_Gruvin9xFrSkyData(); - t_Gruvin9xFrSkyData(FrSkyData&); + Gruvin9xFrSkyChannelData channels[2]; + operator FrSkyData(); + t_Gruvin9xFrSkyData(); }) Gruvin9xFrSkyData; PACK(typedef struct t_Gruvin9xSwashRingData { // Swash Ring data @@ -265,8 +243,6 @@ PACK(typedef struct t_Gruvin9xSwashRingData { // Swash Ring data operator SwashRingData(); t_Gruvin9xSwashRingData(); - t_Gruvin9xSwashRingData(SwashRingData&); - }) Gruvin9xSwashRingData; PACK(typedef struct t_Gruvin9xPhaseData_v102 { @@ -291,7 +267,6 @@ PACK(typedef struct t_Gruvin9xPhaseData_v106 { operator PhaseData(); t_Gruvin9xPhaseData_v106() { memset(this, 0, sizeof(t_Gruvin9xPhaseData_v106)); } - t_Gruvin9xPhaseData_v106(PhaseData &eepe); }) Gruvin9xPhaseData_v106; PACK(typedef struct t_Gruvin9xTimerData { @@ -301,7 +276,6 @@ PACK(typedef struct t_Gruvin9xTimerData { operator TimerData(); t_Gruvin9xTimerData() { memset(this, 0, sizeof(t_Gruvin9xTimerData)); } - t_Gruvin9xTimerData(TimerData &eepe); }) Gruvin9xTimerData; #define G9X_MAX_PHASES 5 @@ -410,8 +384,6 @@ PACK(typedef struct t_Gruvin9xModelData_v105 { operator ModelData(); t_Gruvin9xModelData_v105() { memset(this, 0, sizeof(t_Gruvin9xModelData_v105)); } - t_Gruvin9xModelData_v105(ModelData&); - }) Gruvin9xModelData_v105; PACK(typedef struct t_Gruvin9xModelData_v106 { @@ -443,11 +415,8 @@ PACK(typedef struct t_Gruvin9xModelData_v106 { operator ModelData(); t_Gruvin9xModelData_v106() { memset(this, 0, sizeof(t_Gruvin9xModelData_v106)); } - t_Gruvin9xModelData_v106(ModelData&); - }) Gruvin9xModelData_v106; typedef Gruvin9xModelData_v106 Gruvin9xModelData; #endif -/*eof*/ diff --git a/companion/src/firmwares/gruvin9x/gruvin9xinterface.cpp b/companion/src/firmwares/gruvin9x/gruvin9xinterface.cpp index 114fd3bee..cdb6d4124 100644 --- a/companion/src/firmwares/gruvin9x/gruvin9xinterface.cpp +++ b/companion/src/firmwares/gruvin9x/gruvin9xinterface.cpp @@ -200,62 +200,20 @@ bool Gruvin9xInterface::loadBackup(RadioData &radioData, uint8_t *eeprom, int es int Gruvin9xInterface::save(uint8_t *eeprom, RadioData &radioData, uint32_t variant, uint8_t version) { - EEPROMWarnings.clear(); + std::cout << "NO!\n"; + // TODO an error - int size = getEEpromSize(); - - efile->EeFsCreate(eeprom, size, BOARD_STOCK); - - Gruvin9xGeneral gruvin9xGeneral(radioData.generalSettings); - int sz = efile->writeRlc2(FILE_GENERAL, FILE_TYP_GENERAL, (uint8_t*)&gruvin9xGeneral, sizeof(Gruvin9xGeneral)); - if(sz != sizeof(Gruvin9xGeneral)) { - return 0; - } - - for (int i=0; iwriteRlc2(FILE_MODEL(i), FILE_TYP_MODEL, (uint8_t*)&gruvin9xModel, sizeof(Gruvin9xModelData)); - if(sz != sizeof(Gruvin9xModelData)) { - return 0; - } - } - } - - return size; + return 0; } int Gruvin9xInterface::getSize(ModelData &model) { - if (model.isempty()) - return 0; - - uint8_t tmp[EESIZE_GRUVIN9X]; - efile->EeFsCreate(tmp, EESIZE_GRUVIN9X, BOARD_STOCK); - - Gruvin9xModelData gruvin9xModel(model); - int sz = efile->writeRlc2(0, FILE_TYP_MODEL, (uint8_t*)&gruvin9xModel, sizeof(Gruvin9xModelData)); - if(sz != sizeof(Gruvin9xModelData)) { - return -1; - } - return efile->size(0); + return 0; } int Gruvin9xInterface::getSize(GeneralSettings &settings) { - uint8_t tmp[EESIZE_GRUVIN9X]; - efile->EeFsCreate(tmp, EESIZE_GRUVIN9X, BOARD_STOCK); - - Gruvin9xGeneral gruvin9xGeneral(settings); - int sz = efile->writeRlc1(0, FILE_TYP_GENERAL, (uint8_t*)&gruvin9xGeneral, sizeof(gruvin9xGeneral)); - if(sz != sizeof(gruvin9xGeneral)) { - return -1; - } - return efile->size(0); + return 0; } int Gruvin9xInterface::getCapability(const Capability capability) @@ -263,10 +221,6 @@ int Gruvin9xInterface::getCapability(const Capability capability) switch (capability) { case OwnerName: return 0; - case NumCurves5: - return G9X_MAX_CURVE5; - case NumCurves9: - return G9X_MAX_CURVE9; case Mixes: return G9X_MAX_MIXERS; case FlightPhases: @@ -297,7 +251,6 @@ int Gruvin9xInterface::getCapability(const Capability capability) return true; case OffsetWeight: return 125; - case HasExpoCurves: case HasContrast: return true; case Telemetry: diff --git a/companion/src/firmwares/opentx/open9xGruvin9xeeprom.cpp b/companion/src/firmwares/opentx/open9xGruvin9xeeprom.cpp index 74d4d0074..d18939827 100644 --- a/companion/src/firmwares/opentx/open9xGruvin9xeeprom.cpp +++ b/companion/src/firmwares/opentx/open9xGruvin9xeeprom.cpp @@ -5,10 +5,7 @@ #include #include -extern void setEEPROMZString(char *dst, const char *src, int size); extern void getEEPROMZString(char *dst, const char *src, int size); - -extern int8_t open9xStockFromSwitch(const RawSwitch & sw); extern RawSwitch open9xStockToSwitch(int8_t sw); t_Open9xGruvin9xPhaseData_v207::operator PhaseData () @@ -25,21 +22,6 @@ t_Open9xGruvin9xPhaseData_v207::operator PhaseData () return c9x; } -t_Open9xGruvin9xPhaseData_v207::t_Open9xGruvin9xPhaseData_v207(PhaseData &c9x) -{ - trim_ext = 0; - for (int i=0; i> 2); - trim_ext = (trim_ext & ~(0x03 << (2*i))) + (((c9x.trim[i] & 0x03) << (2*i))); - } - swtch = open9xStockFromSwitch(c9x.swtch); - setEEPROMZString(name, c9x.name, sizeof(name)); - fadeIn = c9x.fadeIn; - fadeOut = c9x.fadeOut; - for (int i=0; i<2; i++) - rotaryEncoders[i] = c9x.rotaryEncoders[i]; -} - t_Open9xGruvin9xPhaseData_v208::operator PhaseData () { PhaseData c9x; @@ -54,107 +36,6 @@ t_Open9xGruvin9xPhaseData_v208::operator PhaseData () return c9x; } -t_Open9xGruvin9xPhaseData_v208::t_Open9xGruvin9xPhaseData_v208(PhaseData &c9x) -{ - for (int i=0; i>=1; - } - if (zeros==O9X_MAX_PHASES || zeros==0) { - phase=0; - } else if (zeros==1) { - int phtemp=c9x.phases; - int ph=0; - for (int i=0; i>=1; - } - phase=ph+1; - } else if (ones==1) { - int phtemp=c9x.phases; - int ph=0; - for (int i=0; i>=1; - } - phase=-(ph+1); - } else { - phase=0; - EEPROMWarnings += ::QObject::tr("Flight mode settings on mixers not exported") + "\n"; - } - sOffset = c9x.sOffset; - } - else { - memset(this, 0, sizeof(t_Open9xGruvin9xMixData_v207)); - } -} - t_Open9xGruvin9xMixData_v207::operator MixData () { MixData c9x; @@ -188,9 +69,15 @@ t_Open9xGruvin9xMixData_v207::operator MixData () c9x.srcRaw = RawSource(SOURCE_TYPE_CH, srcRaw-44); } c9x.weight = weight; - c9x.differential = differential*2; + + if (differential) { + c9x.curve = CurveReference(CurveReference::CURVE_REF_DIFF, differential*2); + } + else { + // TODO c9x.curve = curve; + } + c9x.swtch = open9xStockToSwitch(swtch); - c9x.curve = curve; c9x.delayUp = delayUp; c9x.delayDown = delayDown; c9x.speedUp = speedUp; @@ -198,12 +85,14 @@ t_Open9xGruvin9xMixData_v207::operator MixData () c9x.carryTrim = carryTrim; c9x.mltpx = (MltpxValue)mltpx; c9x.mixWarn = mixWarn; -// c9x.phase = phase; + if (phase<0) { c9x.phases= 1 << (-phase -1); - } else if (phase==0) { + } + else if (phase==0) { c9x.phases=0; - } else { + } + else { c9x.phases=63; c9x.phases &= ~(1 << (phase -1)); } @@ -212,98 +101,6 @@ t_Open9xGruvin9xMixData_v207::operator MixData () return c9x; } -t_Open9xGruvin9xMixData_v209::t_Open9xGruvin9xMixData_v209(MixData &c9x) -{ - if (c9x.destCh) { - destCh = c9x.destCh-1; - mixWarn = c9x.mixWarn; - swtch = open9xStockFromSwitch(c9x.swtch); - if (c9x.srcRaw.type == SOURCE_TYPE_NONE) { - srcRaw = 0; - swtch = 0; - } - else if (c9x.srcRaw.type == SOURCE_TYPE_STICK) { - srcRaw = 1 + c9x.srcRaw.index; - } - else if (c9x.srcRaw.type == SOURCE_TYPE_ROTARY_ENCODER) { - srcRaw = 8 + c9x.srcRaw.index; - } - else if (c9x.srcRaw.type == SOURCE_TYPE_TRIM) { - srcRaw = 10 + c9x.srcRaw.index; - } - else if (c9x.srcRaw.type == SOURCE_TYPE_MAX) { - srcRaw = 14; - } - /* else if (c9x.srcRaw.type == SOURCE_TYPE_3POS) { - srcRaw = 15; - } */ - else if (c9x.srcRaw.type == SOURCE_TYPE_SWITCH) { - srcRaw = 15 + open9xStockFromSwitch(RawSwitch(c9x.srcRaw.index)); - } - else if (c9x.srcRaw.type == SOURCE_TYPE_CYC) { - srcRaw = 37 + c9x.srcRaw.index; - } - else if (c9x.srcRaw.type == SOURCE_TYPE_PPM) { - srcRaw = 40 + c9x.srcRaw.index; - } - else if (c9x.srcRaw.type == SOURCE_TYPE_CH) { - srcRaw = 48 + c9x.srcRaw.index; - } - weight = c9x.weight; - differential = c9x.differential/2; - curve = c9x.curve; - delayUp = c9x.delayUp; - delayDown = c9x.delayDown; - speedUp = c9x.speedUp; - speedDown = c9x.speedDown; - carryTrim = c9x.carryTrim; - mltpx = (MltpxValue)c9x.mltpx; - int zeros=0; - int ones=0; - int phtemp=c9x.phases; - for (int i=0; i>=1; - } - if (zeros==O9X_MAX_PHASES || zeros==0) { - phase=0; - } else if (zeros==1) { - int phtemp=c9x.phases; - int ph=0; - for (int i=0; i>=1; - } - phase=ph+1; - } else if (ones==1) { - int phtemp=c9x.phases; - int ph=0; - for (int i=0; i>=1; - } - phase=-(ph+1); - } else { - phase=0; - EEPROMWarnings += ::QObject::tr("Flight mode settings on mixers not exported") + "\n"; - } - sOffset = c9x.sOffset; - } - else { - memset(this, 0, sizeof(t_Open9xGruvin9xMixData_v207)); - } -} - t_Open9xGruvin9xMixData_v209::operator MixData () { MixData c9x; @@ -340,9 +137,15 @@ t_Open9xGruvin9xMixData_v209::operator MixData () c9x.srcRaw = RawSource(SOURCE_TYPE_CH, srcRaw-48); } c9x.weight = weight; - c9x.differential = differential*2; + + if (differential) { + c9x.curve = CurveReference(CurveReference::CURVE_REF_DIFF, differential*2); + } + else { + // TODO c9x.curve = curve; + } + c9x.swtch = open9xStockToSwitch(swtch); - c9x.curve = curve; c9x.delayUp = delayUp; c9x.delayDown = delayDown; c9x.speedUp = speedUp; @@ -350,12 +153,14 @@ t_Open9xGruvin9xMixData_v209::operator MixData () c9x.carryTrim = carryTrim; c9x.mltpx = (MltpxValue)mltpx; c9x.mixWarn = mixWarn; - // c9x.phase = phase; + if (phase<0) { c9x.phases= 1 << (-phase -1); - } else if (phase==0) { + } + else if (phase==0) { c9x.phases=0; - } else { + } + else { c9x.phases=63; c9x.phases &= ~(1 << (phase -1)); } @@ -364,66 +169,6 @@ t_Open9xGruvin9xMixData_v209::operator MixData () return c9x; } -t_Open9xGruvin9xMixData_v211::t_Open9xGruvin9xMixData_v211(MixData &c9x) -{ - if (c9x.destCh) { - destCh = c9x.destCh-1; - mixWarn = c9x.mixWarn; - swtch = open9xStockFromSwitch(c9x.swtch); - if (c9x.srcRaw.type == SOURCE_TYPE_NONE) { - srcRaw = 0; - swtch = 0; - } - else if (c9x.srcRaw.type == SOURCE_TYPE_STICK) { - srcRaw = 1 + c9x.srcRaw.index; - } - else if (c9x.srcRaw.type == SOURCE_TYPE_ROTARY_ENCODER) { - srcRaw = 8 + c9x.srcRaw.index; - } - else if (c9x.srcRaw.type == SOURCE_TYPE_TRIM) { - srcRaw = 10 + c9x.srcRaw.index; - } - else if (c9x.srcRaw.type == SOURCE_TYPE_MAX) { - srcRaw = 14; - } - /* else if (c9x.srcRaw.type == SOURCE_TYPE_3POS) { - srcRaw = 15; - } */ - else if (c9x.srcRaw.type == SOURCE_TYPE_SWITCH) { - srcRaw = 15 + open9xStockFromSwitch(RawSwitch(c9x.srcRaw.index)); - } - else if (c9x.srcRaw.type == SOURCE_TYPE_CYC) { - srcRaw = 37 + c9x.srcRaw.index; - } - else if (c9x.srcRaw.type == SOURCE_TYPE_PPM) { - srcRaw = 40 + c9x.srcRaw.index; - } - else if (c9x.srcRaw.type == SOURCE_TYPE_CH) { - srcRaw = 48 + c9x.srcRaw.index; - } - weight = c9x.weight; - if (c9x.curve==0) { - curveMode=0; - curveParam=c9x.differential; - } else { - curveMode=1; - curveParam = c9x.curve; - } - delayUp = c9x.delayUp; - delayDown = c9x.delayDown; - speedUp = c9x.speedUp; - speedDown = c9x.speedDown; - carryTrim = c9x.carryTrim; - noExpo = c9x.noExpo; - mltpx = (MltpxValue)c9x.mltpx; - phases = c9x.phases; - sOffset = c9x.sOffset; - } - else { - memset(this, 0, sizeof(t_Open9xGruvin9xMixData_v211)); - } -} - t_Open9xGruvin9xMixData_v211::operator MixData () { MixData c9x; @@ -461,12 +206,14 @@ t_Open9xGruvin9xMixData_v211::operator MixData () } c9x.weight = weight; c9x.swtch = open9xStockToSwitch(swtch); + if (curveMode==0) { - c9x.differential = curveParam; - c9x.curve=0; - } else { - c9x.curve=curveParam; - } + c9x.curve = CurveReference(CurveReference::CURVE_REF_DIFF, curveParam); + } + else { + // TODO c9x.curve = curve; + } + c9x.delayUp = delayUp; c9x.delayDown = delayDown; c9x.speedUp = speedUp; @@ -481,28 +228,6 @@ t_Open9xGruvin9xMixData_v211::operator MixData () return c9x; } -int8_t open9xV4207FromSource(RawSource source) -{ - int v1 = 0; - if (source.type == SOURCE_TYPE_STICK) - v1 = 1+source.index; - else if (source.type == SOURCE_TYPE_ROTARY_ENCODER) - v1 = 8+source.index; - else if (source.type == SOURCE_TYPE_MAX) - v1 = 10; - /* else if (source.type == SOURCE_TYPE_3POS) - v1 = 11; */ - else if (source.type == SOURCE_TYPE_CYC) - v1 = 12+source.index; - else if (source.type == SOURCE_TYPE_PPM) - v1 = 15+source.index; - else if (source.type == SOURCE_TYPE_CH) - v1 = 23+source.index; - else if (source.type == SOURCE_TYPE_TELEMETRY) - v1 = 38+source.index; - return v1; -} - RawSource open9xV4207ToSource(int8_t value) { if (value == 0) { @@ -534,30 +259,6 @@ RawSource open9xV4207ToSource(int8_t value) } } -int8_t open9xV4209FromSource(RawSource source) -{ - int v1 = 0; - if (source.type == SOURCE_TYPE_STICK) - v1 = 1+source.index; - else if (source.type == SOURCE_TYPE_ROTARY_ENCODER) - v1 = 8+source.index; - if (source.type == SOURCE_TYPE_TRIM) - v1 = 10+source.index; - else if (source.type == SOURCE_TYPE_MAX) - v1 = 14; - /* else if (source.type == SOURCE_TYPE_3POS) - v1 = 15; */ - else if (source.type == SOURCE_TYPE_CYC) - v1 = 16+source.index; - else if (source.type == SOURCE_TYPE_PPM) - v1 = 19+source.index; - else if (source.type == SOURCE_TYPE_CH) - v1 = 27+source.index; - else if (source.type == SOURCE_TYPE_TELEMETRY) - v1 = 42+source.index; - return v1; -} - RawSource open9xV4209ToSource(int8_t value) { if (value == 0) { @@ -592,33 +293,6 @@ RawSource open9xV4209ToSource(int8_t value) } } -t_Open9xGruvin9xCustomSwData_v207::t_Open9xGruvin9xCustomSwData_v207(CustomSwData &c9x) -{ - func = c9x.func; - v1 = c9x.val1; - v2 = c9x.val2; - - if ((c9x.func >= CS_FN_VPOS && c9x.func <= CS_FN_ANEG) || c9x.func >= CS_FN_EQUAL) { - v1 = open9xV4207FromSource(RawSource(c9x.val1)); - } - - if (c9x.func >= CS_FN_EQUAL) { - v2 = open9xV4207FromSource(RawSource(c9x.val2)); - } - - if (c9x.func >= CS_FN_AND && c9x.func <= CS_FN_XOR) { - v1 = open9xStockFromSwitch(RawSwitch(c9x.val1)); - v2 = open9xStockFromSwitch(RawSwitch(c9x.val2)); - } - - if (func>O9X_V4_MAX_CSFUNCOLD ) { - EEPROMWarnings += ::QObject::tr("This version of open9x does not support Custom Switch function %1").arg(getFuncName(func)) + "\n"; - func=0; - v1=0; - v2=0; - } -} - Open9xGruvin9xCustomSwData_v207::operator CustomSwData () { CustomSwData c9x; @@ -642,26 +316,6 @@ Open9xGruvin9xCustomSwData_v207::operator CustomSwData () return c9x; } -t_Open9xGruvin9xCustomSwData_v209::t_Open9xGruvin9xCustomSwData_v209(CustomSwData &c9x) -{ - func = c9x.func; - v1 = c9x.val1; - v2 = c9x.val2; - - if ((c9x.func >= CS_FN_VPOS && c9x.func <= CS_FN_ANEG) || c9x.func >= CS_FN_EQUAL) { - v1 = open9xV4209FromSource(RawSource(c9x.val1)); - } - - if (c9x.func >= CS_FN_EQUAL && c9x.func <= CS_FN_ELESS) { - v2 = open9xV4209FromSource(RawSource(c9x.val2)); - } - - if (c9x.func >= CS_FN_AND && c9x.func <= CS_FN_XOR) { - v1 = open9xStockFromSwitch(RawSwitch(c9x.val1)); - v2 = open9xStockFromSwitch(RawSwitch(c9x.val2)); - } -} - Open9xGruvin9xCustomSwData_v209::operator CustomSwData () { CustomSwData c9x; @@ -685,45 +339,6 @@ Open9xGruvin9xCustomSwData_v209::operator CustomSwData () return c9x; } -t_Open9xGruvin9xFuncSwData_v203::t_Open9xGruvin9xFuncSwData_v203(FuncSwData &c9x) -{ - swtch = open9xStockFromSwitch(c9x.swtch); - if (c9x.func <= FuncSafetyCh16) { - param = ((c9x.param>>1)<<1); - param |=(c9x.enabled & 0x01); - func = c9x.func; - } else { - param = c9x.param; - if (c9x.func <= FuncTrainerAIL) - func = 16 + c9x.func - FuncTrainer; - else if (c9x.func == FuncInstantTrim) - func = 21; - else if (c9x.func == FuncPlaySound) - func = 22; - else if (c9x.func == FuncPlayHaptic) - func = 23; - else if (c9x.func == FuncReset) - func = 24; - else if (c9x.func == FuncVario) - func = 25; - else if (c9x.func == FuncPlayPrompt) - func = 26; - else if (c9x.func == FuncPlayValue) - func = 27; - else if (c9x.func == FuncLogs) - func = 28; - else if (c9x.func == FuncBacklight) - func = 29; - else if (c9x.func >= FuncAdjustGV1 && c9x.func <= FuncAdjustGV5) - func = 30 + c9x.func - FuncAdjustGV1; - else { - swtch = 0; - func = 0; - param = 0; - } - } -} - t_Open9xGruvin9xFuncSwData_v203::operator FuncSwData () { FuncSwData c9x; @@ -763,37 +378,6 @@ t_Open9xGruvin9xFuncSwData_v203::operator FuncSwData () return c9x; } -t_Open9xGruvin9xFuncSwData_v210::t_Open9xGruvin9xFuncSwData_v210(FuncSwData &c9x) -{ - swtch = open9xStockFromSwitch(c9x.swtch); - param = c9x.param; - if (c9x.func <= FuncInstantTrim) { - func = (uint8_t)c9x.func; - delay = c9x.enabled; - } - else if (c9x.func == FuncPlaySound) - func = 22; - else if (c9x.func == FuncPlayHaptic) - func = 23; - else if (c9x.func == FuncReset) - func = 24; - else if (c9x.func == FuncVario) - func = 25; - else if (c9x.func == FuncPlayPrompt) - func = 26; - else if (c9x.func == FuncPlayValue) - func = 27; - else if (c9x.func == FuncLogs) - func = 28; - else if (c9x.func == FuncBacklight) - func = 29; - else { - swtch = 0; - func = 0; - param = 0; - } -} - t_Open9xGruvin9xFuncSwData_v210::operator FuncSwData () { FuncSwData c9x; @@ -823,16 +407,6 @@ t_Open9xGruvin9xFuncSwData_v210::operator FuncSwData () return c9x; } -t_Open9xGruvin9xSwashRingData_v208::t_Open9xGruvin9xSwashRingData_v208(SwashRingData &c9x) -{ - invertELE = c9x.invertELE; - invertAIL = c9x.invertAIL; - invertCOL = c9x.invertCOL; - type = c9x.type; - collectiveSource = open9xV4207FromSource(c9x.collectiveSource); - value = c9x.value; -} - t_Open9xGruvin9xSwashRingData_v208::operator SwashRingData () { SwashRingData c9x; @@ -845,16 +419,6 @@ t_Open9xGruvin9xSwashRingData_v208::operator SwashRingData () return c9x; } -t_Open9xGruvin9xSwashRingData_v209::t_Open9xGruvin9xSwashRingData_v209(SwashRingData &c9x) -{ - invertELE = c9x.invertELE; - invertAIL = c9x.invertAIL; - invertCOL = c9x.invertCOL; - type = c9x.type; - collectiveSource = open9xV4209FromSource(c9x.collectiveSource); - value = c9x.value; -} - t_Open9xGruvin9xSwashRingData_v209::operator SwashRingData () { SwashRingData c9x; @@ -915,7 +479,6 @@ t_Open9xGruvin9xModelData_v207::operator ModelData () c9x.expoData[i] = expoData[i]; for (int i=0; i= 0) { - phase.trim[j] = 501 + phase.trimRef[j] - (phase.trimRef[j] >= i ? 1 : 0); - } - else { - phase.trim[j] = std::max(-500, std::min(500, phase.trim[j])); - } - } - phaseData[i] = phase; - } - frsky = c9x.frsky; - ppmFrameLength = c9x.moduleData[0].ppmFrameLength; - thrTraceSrc = c9x.thrTraceSrc; - modelId = c9x.modelId; - frskyLinesXtra=0; - for (int j=0; j<4; j++) { - frskyLines[j] = 0; - for (int k=0; k<2; k++) { - int value = c9x.frsky.screens[1].body.lines[j].source[k]; - frskyLines[j] |= (k==0 ? (value & 0x0f) : ((value & 0x0f) << 4)); - frskyLinesXtra |= (value / 16) << (4*j+2*k); - } - } - } - else { - memset(this, 0, sizeof(t_Open9xGruvin9xModelData_v207)); - } -} - - t_Open9xGruvin9xModelData_v208::operator ModelData () { ModelData c9x; @@ -1104,7 +563,6 @@ t_Open9xGruvin9xModelData_v208::operator ModelData () for (int i=0; i= 0) { - phase.trim[j] = 501 + phase.trimRef[j] - (phase.trimRef[j] >= i ? 1 : 0); - } - else { - phase.trim[j] = std::max(-500, std::min(500, phase.trim[j])); - } - } - phaseData[i] = phase; - } - frsky = c9x.frsky; - varioSource = c9x.frsky.varioSource; - varioSpeedUpMin = c9x.frsky.varioCenterMax; - varioSpeedDownMin = c9x.frsky.varioCenterMin; - ppmFrameLength = c9x.moduleData[0].ppmFrameLength; - thrTraceSrc = c9x.thrTraceSrc; - modelId = c9x.modelId; - frskyLinesXtra=0; - for (int j=0; j<4; j++) { - frskyLines[j] = 0; - for (int k=0; k<2; k++) { - int value = c9x.frsky.screens[1].body.lines[j].source[k]; - frskyLines[j] |= (k==0 ? (value & 0x0f) : ((value & 0x0f) << 4)); - frskyLinesXtra |= (value / 16) << (4*j+2*k); - } - } - for (int i=0; i= 0) { - phase.trim[j] = 501 + phase.trimRef[j] - (phase.trimRef[j] >= i ? 1 : 0); - } - else { - phase.trim[j] = std::max(-500, std::min(500, phase.trim[j])); - } - } - phaseData[i] = phase; - } - frsky = c9x.frsky; - varioSource = c9x.frsky.varioSource; - varioSpeedUpMin = c9x.frsky.varioCenterMax; - varioSpeedDownMin = c9x.frsky.varioCenterMin; - switchWarningStates = c9x.switchWarningStates; - ppmFrameLength = c9x.moduleData[0].ppmFrameLength; - thrTraceSrc = c9x.thrTraceSrc; - modelId = c9x.modelId; - frskyLinesXtra=0; - for (int j=0; j<4; j++) { - frskyLines[j] = 0; - for (int k=0; k<2; k++) { - int value = c9x.frsky.screens[1].body.lines[j].source[k]; - frskyLines[j] |= (k==0 ? (value & 0x0f) : ((value & 0x0f) << 4)); - frskyLinesXtra |= (value / 16) << (4*j+2*k); - } - } - for (int i=0; i O9X_NUM_POINTS - 5 * O9X_MAX_CURVES) { - EEPROMWarnings += ::QObject::tr("open9x only accepts %1 points in all curves").arg(O9X_NUM_POINTS) + "\n"; - break; - } - curves[i] = offset; - for (int j=0; j= 0) { - phase.trim[j] = 501 + phase.trimRef[j] - (phase.trimRef[j] >= i ? 1 : 0); - } - else { - phase.trim[j] = std::max(-500, std::min(500, phase.trim[j])); - } - } - phaseData[i] = phase; - } - frsky = c9x.frsky; - switchWarningStates = c9x.switchWarningStates; - ppmFrameLength = c9x.moduleData[0].ppmFrameLength; - thrTraceSrc = c9x.thrTraceSrc; - modelId = c9x.modelId; - for (int i=0; i O9X_NUM_POINTS - 5 * O9X_MAX_CURVES) { - EEPROMWarnings += ::QObject::tr("open9x only accepts %1 points in all curves").arg(O9X_NUM_POINTS) + "\n"; - break; - } - curves[i] = offset; - for (int j=0; j= 0) { - phase.trim[j] = 501 + phase.trimRef[j] - (phase.trimRef[j] >= i ? 1 : 0); - } - else { - phase.trim[j] = std::max(-500, std::min(500, phase.trim[j])); - } - } - phaseData[i] = phase; - } - frsky = c9x.frsky; - switchWarningStates = c9x.switchWarningStates; - ppmFrameLength = c9x.moduleData[0].ppmFrameLength; - thrTraceSrc = c9x.thrTraceSrc; - modelId = c9x.modelId; - } -} - diff --git a/companion/src/firmwares/opentx/open9xGruvin9xeeprom.h b/companion/src/firmwares/opentx/open9xGruvin9xeeprom.h index a37ed3d9d..c95dc6742 100644 --- a/companion/src/firmwares/opentx/open9xGruvin9xeeprom.h +++ b/companion/src/firmwares/opentx/open9xGruvin9xeeprom.h @@ -32,7 +32,6 @@ PACK(typedef struct t_Open9xGruvin9xPhaseData_v207 { int16_t rotaryEncoders[2]; operator PhaseData(); t_Open9xGruvin9xPhaseData_v207() { memset(this, 0, sizeof(t_Open9xGruvin9xPhaseData_v207)); } - t_Open9xGruvin9xPhaseData_v207(PhaseData &eepe); }) Open9xGruvin9xPhaseData_v207; PACK(typedef struct t_Open9xGruvin9xPhaseData_v208 { @@ -44,7 +43,6 @@ PACK(typedef struct t_Open9xGruvin9xPhaseData_v208 { int16_t rotaryEncoders[2]; operator PhaseData(); t_Open9xGruvin9xPhaseData_v208() { memset(this, 0, sizeof(t_Open9xGruvin9xPhaseData_v208)); } - t_Open9xGruvin9xPhaseData_v208(PhaseData &eepe); }) Open9xGruvin9xPhaseData_v208; PACK(typedef struct t_Open9xGruvin9xMixData_v207 { @@ -66,8 +64,6 @@ PACK(typedef struct t_Open9xGruvin9xMixData_v207 { operator MixData(); t_Open9xGruvin9xMixData_v207() { memset(this, 0, sizeof(t_Open9xGruvin9xMixData_v207)); } - t_Open9xGruvin9xMixData_v207(MixData&); - }) Open9xGruvin9xMixData_v207; PACK(typedef struct t_Open9xGruvin9xMixData_v209 { @@ -89,8 +85,6 @@ PACK(typedef struct t_Open9xGruvin9xMixData_v209 { operator MixData(); t_Open9xGruvin9xMixData_v209() { memset(this, 0, sizeof(t_Open9xGruvin9xMixData_v209)); } - t_Open9xGruvin9xMixData_v209(MixData&); - }) Open9xGruvin9xMixData_v209; PACK(typedef struct t_Open9xGruvin9xMixData_v211 { @@ -114,8 +108,6 @@ PACK(typedef struct t_Open9xGruvin9xMixData_v211 { operator MixData(); t_Open9xGruvin9xMixData_v211() { memset(this, 0, sizeof(t_Open9xGruvin9xMixData_v211)); } - t_Open9xGruvin9xMixData_v211(MixData&); - }) Open9xGruvin9xMixData_v211; PACK(typedef struct t_Open9xGruvin9xCustomSwData_v207 { // Custom Switches data @@ -125,10 +117,8 @@ PACK(typedef struct t_Open9xGruvin9xCustomSwData_v207 { // Custom Switches data operator CustomSwData(); t_Open9xGruvin9xCustomSwData_v207() { memset(this, 0, sizeof(t_Open9xGruvin9xCustomSwData_v207)); } - t_Open9xGruvin9xCustomSwData_v207(CustomSwData&); int8_t fromSource(RawSource source); RawSource toSource(int8_t value); - }) Open9xGruvin9xCustomSwData_v207; PACK(typedef struct t_Open9xGruvin9xCustomSwData_v209 { // Custom Switches data @@ -138,10 +128,8 @@ PACK(typedef struct t_Open9xGruvin9xCustomSwData_v209 { // Custom Switches data operator CustomSwData(); t_Open9xGruvin9xCustomSwData_v209() { memset(this, 0, sizeof(t_Open9xGruvin9xCustomSwData_v209)); } - t_Open9xGruvin9xCustomSwData_v209(CustomSwData&); int8_t fromSource(RawSource source); RawSource toSource(int8_t value); - }) Open9xGruvin9xCustomSwData_v209; PACK(typedef struct t_Open9xGruvin9xFuncSwData_v203 { // Function Switches data @@ -151,8 +139,6 @@ PACK(typedef struct t_Open9xGruvin9xFuncSwData_v203 { // Function Switches data operator FuncSwData(); t_Open9xGruvin9xFuncSwData_v203() { memset(this, 0, sizeof(t_Open9xGruvin9xFuncSwData_v203)); } - t_Open9xGruvin9xFuncSwData_v203(FuncSwData&); - }) Open9xGruvin9xFuncSwData_v203; PACK(typedef struct t_Open9xGruvin9xFuncSwData_v210 { // Function Switches data @@ -163,8 +149,6 @@ PACK(typedef struct t_Open9xGruvin9xFuncSwData_v210 { // Function Switches data operator FuncSwData(); t_Open9xGruvin9xFuncSwData_v210() { memset(this, 0, sizeof(t_Open9xGruvin9xFuncSwData_v210)); } - t_Open9xGruvin9xFuncSwData_v210(FuncSwData&); - }) Open9xGruvin9xFuncSwData_v210; PACK(typedef struct t_Open9xGruvin9xSwashRingData_v208 { // Swash Ring data @@ -177,8 +161,6 @@ PACK(typedef struct t_Open9xGruvin9xSwashRingData_v208 { // Swash Ring data operator SwashRingData(); t_Open9xGruvin9xSwashRingData_v208() { memset(this, 0, sizeof(t_Open9xGruvin9xSwashRingData_v208)); } - t_Open9xGruvin9xSwashRingData_v208(SwashRingData&); - }) Open9xGruvin9xSwashRingData_v208; PACK(typedef struct t_Open9xGruvin9xSwashRingData_v209 { // Swash Ring data @@ -191,8 +173,6 @@ PACK(typedef struct t_Open9xGruvin9xSwashRingData_v209 { // Swash Ring data operator SwashRingData(); t_Open9xGruvin9xSwashRingData_v209() { memset(this, 0, sizeof(t_Open9xGruvin9xSwashRingData_v209)); } - t_Open9xGruvin9xSwashRingData_v209(SwashRingData&); - }) Open9xGruvin9xSwashRingData_v209; PACK(typedef struct t_Open9xGruvin9xModelData_v207 { @@ -227,8 +207,6 @@ PACK(typedef struct t_Open9xGruvin9xModelData_v207 { operator ModelData(); t_Open9xGruvin9xModelData_v207() { memset(this, 0, sizeof(t_Open9xGruvin9xModelData_v207)); } - t_Open9xGruvin9xModelData_v207(ModelData&); - }) Open9xGruvin9xModelData_v207; PACK(typedef struct t_Open9xGruvin9xModelData_v208 { @@ -268,8 +246,6 @@ PACK(typedef struct t_Open9xGruvin9xModelData_v208 { operator ModelData(); t_Open9xGruvin9xModelData_v208() { memset(this, 0, sizeof(t_Open9xGruvin9xModelData_v208)); } - t_Open9xGruvin9xModelData_v208(ModelData&); - }) Open9xGruvin9xModelData_v208; PACK(typedef struct t_Open9xGruvin9xModelData_v209 { @@ -310,8 +286,6 @@ PACK(typedef struct t_Open9xGruvin9xModelData_v209 { operator ModelData(); t_Open9xGruvin9xModelData_v209() { memset(this, 0, sizeof(t_Open9xGruvin9xModelData_v209)); } - t_Open9xGruvin9xModelData_v209(ModelData&); - }) Open9xGruvin9xModelData_v209; PACK(typedef struct t_Open9xGruvin9xModelData_v210 { @@ -350,8 +324,6 @@ PACK(typedef struct t_Open9xGruvin9xModelData_v210 { operator ModelData(); t_Open9xGruvin9xModelData_v210() { memset(this, 0, sizeof(t_Open9xGruvin9xModelData_v210)); } - t_Open9xGruvin9xModelData_v210(ModelData&); - }) Open9xGruvin9xModelData_v210; PACK(typedef struct t_Open9xGruvin9xModelData_v211 { @@ -388,8 +360,6 @@ PACK(typedef struct t_Open9xGruvin9xModelData_v211 { operator ModelData(); t_Open9xGruvin9xModelData_v211() { memset(this, 0, sizeof(t_Open9xGruvin9xModelData_v211)); } - t_Open9xGruvin9xModelData_v211(ModelData&); - }) Open9xGruvin9xModelData_v211; #endif diff --git a/companion/src/firmwares/opentx/open9xSky9xeeprom.cpp b/companion/src/firmwares/opentx/open9xSky9xeeprom.cpp index afa897700..41a7300d4 100644 --- a/companion/src/firmwares/opentx/open9xSky9xeeprom.cpp +++ b/companion/src/firmwares/opentx/open9xSky9xeeprom.cpp @@ -5,31 +5,8 @@ #include #include -extern void setEEPROMZString(char *dst, const char *src, int size); extern void getEEPROMZString(char *dst, const char *src, int size); -int8_t open9xArmFromSwitch(const RawSwitch & sw) -{ - switch (sw.type) { - case SWITCH_TYPE_SWITCH: - return sw.index; - case SWITCH_TYPE_VIRTUAL: - return sw.index > 0 ? (9 + sw.index) : (-9 + sw.index); - case SWITCH_TYPE_ON: - return 42; - case SWITCH_TYPE_OFF: - return -42; - case SWITCH_TYPE_MOMENT_SWITCH: - return sw.index > 0 ? (42 + sw.index) : (-42 + sw.index); - case SWITCH_TYPE_MOMENT_VIRTUAL: - return sw.index > 0 ? (51 + sw.index) : (-51 + sw.index); - case SWITCH_TYPE_ONM: - return 84; - default: - return 0; - } -} - RawSwitch open9xArmToSwitch(int8_t sw) { uint8_t swa = abs(sw); @@ -51,30 +28,6 @@ RawSwitch open9xArmToSwitch(int8_t sw) return RawSwitch(SWITCH_TYPE_MOMENT_VIRTUAL, sw > 0 ? sw-42-9 : sw+42+9); } -int8_t open9xArm208FromSource(RawSource source) -{ - int v1 = 0; - if (source.type == SOURCE_TYPE_STICK) - v1 = 1+source.index; - else if (source.type == SOURCE_TYPE_ROTARY_ENCODER) { - EEPROMWarnings += ::QObject::tr("Open9x on this board doesn't have Rotary Encoders") + "\n"; - v1 = 5+source.index; - } - else if (source.type == SOURCE_TYPE_MAX) - v1 = 8; - /* else if (source.type == SOURCE_TYPE_3POS) - v1 = 9; */ - else if (source.type == SOURCE_TYPE_CYC) - v1 = 10+source.index; - else if (source.type == SOURCE_TYPE_PPM) - v1 = 13+source.index; - else if (source.type == SOURCE_TYPE_CH) - v1 = 21+source.index; - else if (source.type == SOURCE_TYPE_TELEMETRY) - v1 = 52+source.index; - return v1; -} - RawSource open9xArm208ToSource(int8_t value) { if (value == 0) { @@ -103,32 +56,6 @@ RawSource open9xArm208ToSource(int8_t value) } } -int8_t open9xArm209FromSource(RawSource source) -{ - int v1 = 0; - if (source.type == SOURCE_TYPE_STICK) - v1 = 1+source.index; - else if (source.type == SOURCE_TYPE_ROTARY_ENCODER) { - EEPROMWarnings += ::QObject::tr("Open9x on this board doesn't have Rotary Encoders") + "\n"; - v1 = 5+source.index; - } - else if (source.type == SOURCE_TYPE_TRIM) - v1 = 8 + source.index; - else if (source.type == SOURCE_TYPE_MAX) - v1 = 12; - /* else if (source.type == SOURCE_TYPE_3POS) - v1 = 13; */ - else if (source.type == SOURCE_TYPE_CYC) - v1 = 14+source.index; - else if (source.type == SOURCE_TYPE_PPM) - v1 = 17+source.index; - else if (source.type == SOURCE_TYPE_CH) - v1 = 25+source.index; - else if (source.type == SOURCE_TYPE_TELEMETRY) - v1 = 56+source.index; - return v1; -} - RawSource open9xArm209ToSource(int8_t value) { if (value == 0) { @@ -160,30 +87,6 @@ RawSource open9xArm209ToSource(int8_t value) } } -int8_t open9xArm210FromSource(RawSource source) -{ - int v1 = 0; - if (source.type == SOURCE_TYPE_STICK) - v1 = 1+source.index; - else if (source.type == SOURCE_TYPE_ROTARY_ENCODER) - v1 = 8; - else if (source.type == SOURCE_TYPE_TRIM) - v1 = 9 + source.index; - else if (source.type == SOURCE_TYPE_MAX) - v1 = 13; - /* else if (source.type == SOURCE_TYPE_3POS) - v1 = 14; */ - else if (source.type == SOURCE_TYPE_CYC) - v1 = 15+source.index; - else if (source.type == SOURCE_TYPE_PPM) - v1 = 18+source.index; - else if (source.type == SOURCE_TYPE_CH) - v1 = 26+source.index; - else if (source.type == SOURCE_TYPE_TELEMETRY) - v1 = 57+source.index; - return v1; -} - RawSource open9xArm210ToSource(int8_t value) { if (value == 0) { @@ -239,88 +142,6 @@ t_Open9xArmTimerData_v202::operator TimerData () return c9x; } -t_Open9xArmTimerData_v202::t_Open9xArmTimerData_v202(TimerData &c9x) -{ - val = c9x.val; - - if (c9x.mode >= TMRMODE_OFF && c9x.mode <= TMRMODE_THt) - mode = 0+c9x.mode-TMRMODE_OFF; - else if (c9x.mode >= TMRMODE_FIRST_MOMENT_SWITCH) - mode = 46+c9x.mode-TMRMODE_FIRST_MOMENT_SWITCH; - else if (c9x.mode >= TMRMODE_FIRST_SWITCH) - mode = 5+c9x.mode-TMRMODE_FIRST_SWITCH; - else if (c9x.mode <= TMRMODE_FIRST_NEG_MOMENT_SWITCH) - mode = -42+c9x.mode-TMRMODE_FIRST_NEG_MOMENT_SWITCH; - else if (c9x.mode <= TMRMODE_FIRST_NEG_SWITCH) - mode = -1+c9x.mode-TMRMODE_FIRST_NEG_SWITCH; - else - mode = 0; -} - -t_Open9xArmExpoData_v208::t_Open9xArmExpoData_v208(ExpoData &c9x) -{ - mode = c9x.mode; - chn = c9x.chn; - // 0=no curve, 1-6=std curves, 7-10=CV1-CV4, 11-15=CV9-CV13 - curve = 0; - expo = 0; - if (c9x.curveMode==1) { - if (c9x.curveParam >=0 && c9x.curveParam <= 10) - curve = c9x.curveParam; - else if (c9x.curveParam >= 15 && c9x.curveParam <= 19) - curve = c9x.curveParam - 4; - else - EEPROMWarnings += ::QObject::tr("Open9x doesn't allow Curve%1 in expos").arg(c9x.curveParam-6) + "\n"; - } - else { - expo=c9x.curveParam; - } - - swtch = open9xArmFromSwitch(c9x.swtch); - int zeros=0; - int ones=0; - int phtemp=c9x.phases; - for (int i=0; i>=1; - } - if (zeros==O9X_MAX_PHASES || zeros==0) { - phase=0; - } else if (zeros==1) { - int phtemp=c9x.phases; - int ph=0; - for (int i=0; i>=1; - } - phase=ph+1; - } else if (ones==1) { - int phtemp=c9x.phases; - int ph=0; - for (int i=0; i>=1; - } - phase=-(ph+1); - } else { - phase=0; - EEPROMWarnings += ::QObject::tr("Flight modes settings on expos not exported") + "\n"; - } - - weight = c9x.weight; - expo = c9x.expo; -} - t_Open9xArmExpoData_v208::operator ExpoData () { ExpoData c9x; @@ -332,14 +153,10 @@ t_Open9xArmExpoData_v208::operator ExpoData () } else { if (curve == 0) { - c9x.curveMode=0; - c9x.curveParam=expo; - } else { - c9x.curveMode=1; - if (curve <= 10) - c9x.curveParam = curve; - else - c9x.curveParam = curve + 4; + c9x.curve = CurveReference(CurveReference::CURVE_REF_EXPO, expo); + } + else { + // TODO } } c9x.swtch = open9xArmToSwitch(swtch); @@ -355,70 +172,6 @@ t_Open9xArmExpoData_v208::operator ExpoData () return c9x; } -t_Open9xArmExpoData_v210::t_Open9xArmExpoData_v210(ExpoData &c9x) -{ - mode = c9x.mode; - chn = c9x.chn; - // 0=no curve, 1-6=std curves, 7-10=CV1-CV4, 11-15=CV9-CV13 - curve = 0; - expo = 0; - if (c9x.curveMode==1) { - if (c9x.curveParam >=0 && c9x.curveParam <= 10) - curve = c9x.curveParam; - else if (c9x.curveParam >= 15 && c9x.curveParam <= 19) - curve = c9x.curveParam - 4; - else - EEPROMWarnings += ::QObject::tr("Open9x doesn't allow Curve%1 in expos").arg(c9x.curveParam-6) + "\n"; - } - else { - expo=c9x.curveParam; - } - - swtch = open9xArmFromSwitch(c9x.swtch); - int zeros=0; - int ones=0; - int phtemp=c9x.phases; - for (int i=0; i>=1; - } - if (zeros==O9X_MAX_PHASES || zeros==0) { - phase=0; - } else if (zeros==1) { - int phtemp=c9x.phases; - int ph=0; - for (int i=0; i>=1; - } - phase=ph+1; - } else if (ones==1) { - int phtemp=c9x.phases; - int ph=0; - for (int i=0; i>=1; - } - phase=-(ph+1); - } else { - phase=0; - EEPROMWarnings += ::QObject::tr("Flight modes settings on expos not exported") + "\n"; - } - weight = c9x.weight; - expo = c9x.expo; - setEEPROMZString(name, c9x.name, sizeof(name)); -} - t_Open9xArmExpoData_v210::operator ExpoData () { ExpoData c9x; @@ -430,53 +183,36 @@ t_Open9xArmExpoData_v210::operator ExpoData () } else { if (curve == 0) { - c9x.curveMode=0; - c9x.curveParam=expo; + c9x.curve = CurveReference(CurveReference::CURVE_REF_EXPO, expo); } else { - c9x.curveMode=1; - if (curve <= 10) - c9x.curveParam = curve; - else - c9x.curveParam = curve + 4; + // TODO } } c9x.swtch = open9xArmToSwitch(swtch); if (phase<0) { c9x.phases= 1 << (-phase -1); - } else if (phase==0) { + } + else if (phase==0) { c9x.phases=0; - } else { + } + else { c9x.phases=63; c9x.phases &= ~(1 << (phase -1)); } c9x.weight = weight; - c9x.expo = expo; getEEPROMZString(c9x.name, name, sizeof(name)); return c9x; } -t_Open9xArmExpoData_v212::t_Open9xArmExpoData_v212(ExpoData &c9x) -{ - mode = c9x.mode; - chn = c9x.chn; - // 0=no curve, 1-6=std curves, 7-10=CV1-CV4, 11-15=CV9-CV13 - curveParam=c9x.curveParam; - curveMode=c9x.curveMode; - swtch = open9xArmFromSwitch(c9x.swtch); - phases=c9x.phases; - weight = c9x.weight; - setEEPROMZString(name, c9x.name, sizeof(name)); -} - t_Open9xArmExpoData_v212::operator ExpoData () { ExpoData c9x; c9x.mode = mode; c9x.chn = chn; - c9x.curveMode=curveMode; - c9x.curveParam=curveParam; + // TODO c9x.curveMode=curveMode; + // c9x.curveParam=curveParam; c9x.swtch = open9xArmToSwitch(swtch); c9x.phases= phases; c9x.weight = weight; @@ -496,16 +232,6 @@ t_Open9xArmPhaseData_v208::operator PhaseData () return c9x; } -t_Open9xArmPhaseData_v208::t_Open9xArmPhaseData_v208(PhaseData &c9x) -{ - for (int i=0; i>=1; - } - if (zeros==O9X_ARM_MAX_PHASES || zeros==0) { - phase=0; - } else if (zeros==1) { - int phtemp=c9x.phases; - int ph=0; - for (int i=0; i>=1; - } - phase=ph+1; - } else if (ones==1) { - int phtemp=c9x.phases; - int ph=0; - for (int i=0; i>=1; - } - phase=-(ph+1); - } else { - phase=0; - EEPROMWarnings += ::QObject::tr("Flight modes settings on mixers not exported") + "\n"; - } - sOffset = c9x.sOffset; - } - else { - memset(this, 0, sizeof(t_Open9xArmMixData_v208)); - } -} - t_Open9xArmMixData_v208::operator MixData () { MixData c9x; @@ -646,9 +275,15 @@ t_Open9xArmMixData_v208::operator MixData () c9x.srcRaw = RawSource(SOURCE_TYPE_CH, srcRaw-10-9-O9X_ARM_NUM_CSW-NUM_CYC-NUM_PPM); } c9x.weight = weight; - c9x.differential = differential*2; c9x.swtch = open9xArmToSwitch(swtch); - c9x.curve = curve; + + if (differential) { + c9x.curve = CurveReference(CurveReference::CURVE_REF_DIFF, differential*2); + } + else { + // TODO c9x.curve = curve; + } + c9x.delayUp = delayUp; c9x.delayDown = delayDown; c9x.speedUp = speedUp; @@ -656,109 +291,23 @@ t_Open9xArmMixData_v208::operator MixData () c9x.carryTrim = carryTrim; c9x.mltpx = (MltpxValue)mltpx; c9x.mixWarn = mixWarn; -// c9x.phase = phase; + if (phase<0) { c9x.phases= 1 << (-phase -1); - } else if (phase==0) { + } + else if (phase==0) { c9x.phases=0; - } else { + } + else { c9x.phases=511; c9x.phases &= ~(1 << (phase -1)); - } + } + c9x.sOffset = sOffset; } return c9x; } -t_Open9xArmMixData_v209::t_Open9xArmMixData_v209(MixData &c9x) -{ - if (c9x.destCh) { - destCh = c9x.destCh-1; - mixWarn = c9x.mixWarn; - swtch = open9xArmFromSwitch(c9x.swtch); - if (c9x.srcRaw.type == SOURCE_TYPE_NONE) { - srcRaw = 0; - swtch = 0; - } - else if (c9x.srcRaw.type == SOURCE_TYPE_STICK) { - srcRaw = 1 + c9x.srcRaw.index; - } - else if (c9x.srcRaw.type == SOURCE_TYPE_MAX) { - srcRaw = 8; - } - else if (c9x.srcRaw.type == SOURCE_TYPE_TRIM) { - srcRaw = 9 + c9x.srcRaw.index; - } - /* else if (c9x.srcRaw.type == SOURCE_TYPE_3POS) { - srcRaw = 13; - } */ - else if (c9x.srcRaw.type == SOURCE_TYPE_SWITCH) { - srcRaw = 13 + open9xArmFromSwitch(RawSwitch(c9x.srcRaw.index)); - } - else if (c9x.srcRaw.type == SOURCE_TYPE_CYC) { - srcRaw = 14+9+O9X_ARM_NUM_CSW + c9x.srcRaw.index; - } - else if (c9x.srcRaw.type == SOURCE_TYPE_PPM) { - srcRaw = 14+9+O9X_ARM_NUM_CSW+NUM_CYC + c9x.srcRaw.index; - } - else if (c9x.srcRaw.type == SOURCE_TYPE_CH) { - srcRaw = 14+9+O9X_ARM_NUM_CSW+NUM_CYC+NUM_PPM + c9x.srcRaw.index; - } - weight = c9x.weight; - differential = c9x.differential/2; - curve = c9x.curve; - delayUp = c9x.delayUp; - delayDown = c9x.delayDown; - speedUp = c9x.speedUp; - speedDown = c9x.speedDown; - carryTrim = c9x.carryTrim; - mltpx = (MltpxValue)c9x.mltpx; - int zeros=0; - int ones=0; - int phtemp=c9x.phases; - for (int i=0; i>=1; - } - if (zeros==O9X_ARM_MAX_PHASES || zeros==0) { - phase=0; - } else if (zeros==1) { - int phtemp=c9x.phases; - int ph=0; - for (int i=0; i>=1; - } - phase=ph+1; - } else if (ones==1) { - int phtemp=c9x.phases; - int ph=0; - for (int i=0; i>=1; - } - phase=-(ph+1); - } else { - phase=0; - EEPROMWarnings += ::QObject::tr("Flight modes settings on mixers not exported") + "\n"; - } - sOffset = c9x.sOffset; - } - else { - memset(this, 0, sizeof(t_Open9xArmMixData_v209)); - } -} - t_Open9xArmMixData_v209::operator MixData () { MixData c9x; @@ -792,9 +341,15 @@ t_Open9xArmMixData_v209::operator MixData () c9x.srcRaw = RawSource(SOURCE_TYPE_CH, srcRaw-14-9-O9X_ARM_NUM_CSW-NUM_CYC-NUM_PPM); } c9x.weight = weight; - c9x.differential = differential*2; + + if (differential) { + c9x.curve = CurveReference(CurveReference::CURVE_REF_DIFF, differential*2); + } + else { + // TODO c9x.curve = curve; + } + c9x.swtch = open9xArmToSwitch(swtch); - c9x.curve = curve; c9x.delayUp = delayUp; c9x.delayDown = delayDown; c9x.speedUp = speedUp; @@ -802,110 +357,23 @@ t_Open9xArmMixData_v209::operator MixData () c9x.carryTrim = carryTrim; c9x.mltpx = (MltpxValue)mltpx; c9x.mixWarn = mixWarn; - // c9x.phase = phase; + if (phase<0) { c9x.phases= 1 << (-phase -1); - } else if (phase==0) { + } + else if (phase==0) { c9x.phases=0; - } else { + } + else { c9x.phases=511; c9x.phases &= ~(1 << (phase -1)); - } + } + c9x.sOffset = sOffset; } return c9x; } -t_Open9xArmMixData_v210::t_Open9xArmMixData_v210(MixData &c9x) -{ - if (c9x.destCh) { - destCh = c9x.destCh-1; - mixWarn = c9x.mixWarn; - swtch = open9xArmFromSwitch(c9x.swtch); - if (c9x.srcRaw.type == SOURCE_TYPE_NONE) { - srcRaw = 0; - swtch = 0; - } - else if (c9x.srcRaw.type == SOURCE_TYPE_STICK) { - srcRaw = 1 + c9x.srcRaw.index; - } - else if (c9x.srcRaw.type == SOURCE_TYPE_TRIM) { - srcRaw = 8 + c9x.srcRaw.index; - } - else if (c9x.srcRaw.type == SOURCE_TYPE_MAX) { - srcRaw = 12; - } - /* else if (c9x.srcRaw.type == SOURCE_TYPE_3POS) { - srcRaw = 13; - } */ - else if (c9x.srcRaw.type == SOURCE_TYPE_SWITCH) { - srcRaw = 13 + open9xArmFromSwitch(RawSwitch(c9x.srcRaw.index)); - } - else if (c9x.srcRaw.type == SOURCE_TYPE_CYC) { - srcRaw = 14+9+O9X_ARM_NUM_CSW + c9x.srcRaw.index; - } - else if (c9x.srcRaw.type == SOURCE_TYPE_PPM) { - srcRaw = 14+9+O9X_ARM_NUM_CSW+NUM_CYC + c9x.srcRaw.index; - } - else if (c9x.srcRaw.type == SOURCE_TYPE_CH) { - srcRaw = 14+9+O9X_ARM_NUM_CSW+NUM_CYC+NUM_PPM + c9x.srcRaw.index; - } - weight = c9x.weight; - differential = c9x.differential/2; - curve = c9x.curve; - delayUp = c9x.delayUp; - delayDown = c9x.delayDown; - speedUp = c9x.speedUp; - speedDown = c9x.speedDown; - carryTrim = c9x.carryTrim; - mltpx = (MltpxValue)c9x.mltpx; - int zeros=0; - int ones=0; - int phtemp=c9x.phases; - for (int i=0; i>=1; - } - if (zeros==O9X_ARM_MAX_PHASES || zeros==0) { - phase=0; - } else if (zeros==1) { - int phtemp=c9x.phases; - int ph=0; - for (int i=0; i>=1; - } - phase=ph+1; - } else if (ones==1) { - int phtemp=c9x.phases; - int ph=0; - for (int i=0; i>=1; - } - phase=-(ph+1); - } else { - phase=0; - EEPROMWarnings += ::QObject::tr("Flight modes settings on mixers not exported") + "\n"; - } - sOffset = c9x.sOffset; - setEEPROMZString(name, c9x.name, sizeof(name)); - } - else { - memset(this, 0, sizeof(t_Open9xArmMixData_v210)); - } -} - t_Open9xArmMixData_v210::operator MixData () { MixData c9x; @@ -939,9 +407,15 @@ t_Open9xArmMixData_v210::operator MixData () c9x.srcRaw = RawSource(SOURCE_TYPE_CH, srcRaw-14-9-O9X_ARM_NUM_CSW-NUM_CYC-NUM_PPM); } c9x.weight = weight; - c9x.differential = differential*2; + + if (differential) { + c9x.curve = CurveReference(CurveReference::CURVE_REF_DIFF, differential*2); + } + else { + // TODO c9x.curve = curve; + } + c9x.swtch = open9xArmToSwitch(swtch); - c9x.curve = curve; c9x.delayUp = delayUp; c9x.delayDown = delayDown; c9x.speedUp = speedUp; @@ -949,82 +423,24 @@ t_Open9xArmMixData_v210::operator MixData () c9x.carryTrim = carryTrim; c9x.mltpx = (MltpxValue)mltpx; c9x.mixWarn = mixWarn; - // c9x.phase = phase; + if (phase<0) { c9x.phases= 1 << (-phase -1); - } else if (phase==0) { + } + else if (phase==0) { c9x.phases=0; - } else { + } + else { c9x.phases=511; c9x.phases &= ~(1 << (phase -1)); } + c9x.sOffset = sOffset; getEEPROMZString(c9x.name, name, sizeof(name)); } return c9x; } -t_Open9xArmMixData_v212::t_Open9xArmMixData_v212(MixData &c9x) -{ - if (c9x.destCh) { - destCh = c9x.destCh-1; - mixWarn = c9x.mixWarn; - swtch = open9xArmFromSwitch(c9x.swtch); - if (c9x.srcRaw.type == SOURCE_TYPE_NONE) { - srcRaw = 0; - swtch = 0; - } - else if (c9x.srcRaw.type == SOURCE_TYPE_STICK) { - srcRaw = 1 + c9x.srcRaw.index; - } - else if (c9x.srcRaw.type == SOURCE_TYPE_ROTARY_ENCODER) { - srcRaw = 8; - } - else if (c9x.srcRaw.type == SOURCE_TYPE_TRIM) { - srcRaw = 9 + c9x.srcRaw.index; - } - else if (c9x.srcRaw.type == SOURCE_TYPE_MAX) { - srcRaw = 13; - } - /* else if (c9x.srcRaw.type == SOURCE_TYPE_3POS) { - srcRaw = 14; - } */ - else if (c9x.srcRaw.type == SOURCE_TYPE_SWITCH) { - srcRaw = 14 + open9xArmFromSwitch(RawSwitch(c9x.srcRaw.index)); - } - else if (c9x.srcRaw.type == SOURCE_TYPE_CYC) { - srcRaw = 15+9+O9X_ARM_NUM_CSW + c9x.srcRaw.index; - } - else if (c9x.srcRaw.type == SOURCE_TYPE_PPM) { - srcRaw = 15+9+O9X_ARM_NUM_CSW+NUM_CYC + c9x.srcRaw.index; - } - else if (c9x.srcRaw.type == SOURCE_TYPE_CH) { - srcRaw = 15+9+O9X_ARM_NUM_CSW+NUM_CYC+NUM_PPM + c9x.srcRaw.index; - } - weight = c9x.weight; - if (c9x.curve==0) { - curveMode=0; - curveParam=c9x.differential; - } else { - curveMode=1; - curveParam = c9x.curve; - } - delayUp = c9x.delayUp; - delayDown = c9x.delayDown; - speedUp = c9x.speedUp; - speedDown = c9x.speedDown; - carryTrim = c9x.carryTrim; - noExpo = c9x.noExpo; - mltpx = (MltpxValue)c9x.mltpx; - phases = c9x.phases; - sOffset = c9x.sOffset; - setEEPROMZString(name, c9x.name, sizeof(name)); - } - else { - memset(this, 0, sizeof(t_Open9xArmMixData_v210)); - } -} - t_Open9xArmMixData_v212::operator MixData () { MixData c9x; @@ -1061,12 +477,14 @@ t_Open9xArmMixData_v212::operator MixData () c9x.srcRaw = RawSource(SOURCE_TYPE_CH, srcRaw-15-9-O9X_ARM_NUM_CSW-NUM_CYC-NUM_PPM); } c9x.weight = weight; + if (curveMode==0) { - c9x.differential = curveParam; - c9x.curve=0; - } else { - c9x.curve=curveParam; - } + c9x.curve = CurveReference(CurveReference::CURVE_REF_DIFF, curveParam); + } + else { + // TODO + } + c9x.swtch = open9xArmToSwitch(swtch); c9x.delayUp = delayUp; c9x.delayDown = delayDown; @@ -1083,33 +501,6 @@ t_Open9xArmMixData_v212::operator MixData () return c9x; } -t_Open9xArmCustomSwData_v208::t_Open9xArmCustomSwData_v208(CustomSwData &c9x) -{ - func = c9x.func; - v1 = c9x.val1; - v2 = c9x.val2; - - if ((c9x.func >= CS_FN_VPOS && c9x.func <= CS_FN_ANEG) || c9x.func >= CS_FN_EQUAL) { - v1 = open9xArm208FromSource(RawSource(c9x.val1)); - } - - if (c9x.func >= CS_FN_EQUAL) { - v2 = open9xArm208FromSource(RawSource(c9x.val2)); - } - - if (c9x.func >= CS_FN_AND && c9x.func <= CS_FN_XOR) { - v1 = open9xArmFromSwitch(RawSwitch(c9x.val1)); - v2 = open9xArmFromSwitch(RawSwitch(c9x.val2)); - } - - if (func>O9X_ARM_MAX_CSFUNCOLD ) { - EEPROMWarnings += ::QObject::tr("This version of open9x does not support Custom Switch function %1").arg(getFuncName(func)) + "\n"; - func=0; - v1=0; - v2=0; - } -} - t_Open9xArmCustomSwData_v208::operator CustomSwData () { CustomSwData c9x; @@ -1133,33 +524,6 @@ t_Open9xArmCustomSwData_v208::operator CustomSwData () return c9x; } -t_Open9xArmCustomSwData_v209::t_Open9xArmCustomSwData_v209(CustomSwData &c9x) -{ - func = c9x.func; - v1 = c9x.val1; - v2 = c9x.val2; - - if ((c9x.func >= CS_FN_VPOS && c9x.func <= CS_FN_ANEG) || c9x.func >= CS_FN_EQUAL) { - v1 = open9xArm209FromSource(RawSource(c9x.val1)); - } - - if (c9x.func >= CS_FN_EQUAL) { - v2 = open9xArm209FromSource(RawSource(c9x.val2)); - } - - if (c9x.func >= CS_FN_AND && c9x.func <= CS_FN_XOR) { - v1 = open9xArmFromSwitch(RawSwitch(c9x.val1)); - v2 = open9xArmFromSwitch(RawSwitch(c9x.val2)); - } - - if (func>O9X_ARM_MAX_CSFUNCOLD ) { - EEPROMWarnings += ::QObject::tr("This version of open9x does not support Custom Switch function %1").arg(getFuncName(func)) + "\n"; - func=0; - v1=0; - v2=0; - } -} - t_Open9xArmCustomSwData_v209::operator CustomSwData () { CustomSwData c9x; @@ -1183,28 +547,6 @@ t_Open9xArmCustomSwData_v209::operator CustomSwData () return c9x; } -t_Open9xArmCustomSwData_v210::t_Open9xArmCustomSwData_v210(CustomSwData &c9x) -{ - func = c9x.func; - v1 = c9x.val1; - v2 = c9x.val2; - - delay = c9x.delay; - duration = c9x.duration; - if ((c9x.func >= CS_FN_VPOS && c9x.func <= CS_FN_ANEG) || c9x.func >= CS_FN_EQUAL) { - v1 = open9xArm210FromSource(RawSource(c9x.val1)); - } - - if (c9x.func >= CS_FN_EQUAL && c9x.func <= CS_FN_ELESS) { - v2 = open9xArm210FromSource(RawSource(c9x.val2)); - } - - if (c9x.func >= CS_FN_AND && c9x.func <= CS_FN_XOR) { - v1 = open9xArmFromSwitch(RawSwitch(c9x.val1)); - v2 = open9xArmFromSwitch(RawSwitch(c9x.val2)); - } -} - t_Open9xArmCustomSwData_v210::operator CustomSwData () { CustomSwData c9x; @@ -1230,21 +572,6 @@ t_Open9xArmCustomSwData_v210::operator CustomSwData () return c9x; } -t_Open9xArmFuncSwData_v208::t_Open9xArmFuncSwData_v208(FuncSwData &c9x) -{ - swtch = open9xArmFromSwitch(c9x.swtch); - if (c9x.func <= FuncSafetyCh16) { - param = ((c9x.param>>1)<<1); - param |=(c9x.enabled & 0x01); - } else { - param = c9x.param; - if ((c9x.func == FuncPlayValue || c9x.func == FuncVolume) && param > 7) { - param -= -2; - } - } - func = c9x.func; -} - t_Open9xArmFuncSwData_v208::operator FuncSwData () { FuncSwData c9x; @@ -1263,29 +590,6 @@ t_Open9xArmFuncSwData_v208::operator FuncSwData () return c9x; } -t_Open9xArmFuncSwData_v210::t_Open9xArmFuncSwData_v210(FuncSwData &c9x) -{ - swtch = open9xArmFromSwitch(c9x.swtch); - uint32_t value; - if (c9x.func <= FuncInstantTrim) { - value = ((c9x.param>>1)<<1); - value |=(c9x.enabled & 0x01); - } - else { - if (c9x.func == FuncPlayPrompt || c9x.func == FuncBackgroundMusic) { - memcpy(param, c9x.paramarm, sizeof(param)); - } - else { - value = c9x.param; - if ((c9x.func == FuncPlayValue || c9x.func == FuncVolume) && value > 7) { - value-=2; - } - *((uint32_t *)param) = value; - } - } - func = c9x.func; -} - t_Open9xArmFuncSwData_v210::operator FuncSwData () { FuncSwData c9x; @@ -1310,30 +614,6 @@ t_Open9xArmFuncSwData_v210::operator FuncSwData () return c9x; } -t_Open9xArmFuncSwData_v211::t_Open9xArmFuncSwData_v211(FuncSwData &c9x) -{ - swtch = open9xArmFromSwitch(c9x.swtch); - uint32_t value; - if (c9x.func <= FuncInstantTrim) { - value = c9x.param; - *((uint32_t *)param) = value; - delay=(c9x.enabled & 0x01); - } - else { - if (c9x.func == FuncPlayPrompt || c9x.func == FuncBackgroundMusic) { - memcpy(param, c9x.paramarm, sizeof(param)); - } - else { - value = c9x.param; - if ((c9x.func == FuncPlayValue || c9x.func == FuncVolume || (c9x.func >= FuncAdjustGV1 && c9x.func <= FuncAdjustGV5)) && value > 7) { - value--; - } - *((uint32_t *)param) = value; - } - } - func = c9x.func; -} - t_Open9xArmFuncSwData_v211::operator FuncSwData () { FuncSwData c9x; @@ -1358,16 +638,6 @@ t_Open9xArmFuncSwData_v211::operator FuncSwData () return c9x; } -t_Open9xArmSwashRingData_v208::t_Open9xArmSwashRingData_v208(SwashRingData &c9x) -{ - invertELE = c9x.invertELE; - invertAIL = c9x.invertAIL; - invertCOL = c9x.invertCOL; - type = c9x.type; - collectiveSource = open9xArm208FromSource(c9x.collectiveSource); - value = c9x.value; -} - t_Open9xArmSwashRingData_v208::operator SwashRingData () { SwashRingData c9x; @@ -1380,16 +650,6 @@ t_Open9xArmSwashRingData_v208::operator SwashRingData () return c9x; } -t_Open9xArmSwashRingData_v209::t_Open9xArmSwashRingData_v209(SwashRingData &c9x) -{ - invertELE = c9x.invertELE; - invertAIL = c9x.invertAIL; - invertCOL = c9x.invertCOL; - type = c9x.type; - collectiveSource = open9xArm209FromSource(c9x.collectiveSource); - value = c9x.value; -} - t_Open9xArmSwashRingData_v209::operator SwashRingData () { SwashRingData c9x; @@ -1402,16 +662,6 @@ t_Open9xArmSwashRingData_v209::operator SwashRingData () return c9x; } -t_Open9xArmSwashRingData_v210::t_Open9xArmSwashRingData_v210(SwashRingData &c9x) -{ - invertELE = c9x.invertELE; - invertAIL = c9x.invertAIL; - invertCOL = c9x.invertCOL; - type = c9x.type; - collectiveSource = open9xArm210FromSource(c9x.collectiveSource); - value = c9x.value; -} - t_Open9xArmSwashRingData_v210::operator SwashRingData () { SwashRingData c9x; @@ -1452,31 +702,6 @@ t_Open9xArmFrSkyData_v210::operator FrSkyData () return c9x; } -t_Open9xArmFrSkyData_v210::t_Open9xArmFrSkyData_v210(FrSkyData &c9x) -{ - memset(this, 0, sizeof(t_Open9xArmFrSkyData_v210)); - channels[0] = c9x.channels[0]; - channels[1] = c9x.channels[1]; - usrProto = c9x.usrProto; - voltsSource = c9x.voltsSource; - blades = c9x.blades; - currentSource=c9x.currentSource; - for (int i=0; i<4; i++) { - bars[i].source = c9x.screens[0].body.bars[i].source; - bars[i].barMin = c9x.screens[0].body.bars[i].barMin; - bars[i].barMax = c9x.screens[0].body.bars[i].barMax; - } - for (int line=0; line<4; line++) { - for (int col=0; col<2; col++) { - int i=line*2+col; - lines[i]=c9x.screens[1].body.lines[line].source[col]; - } - } - rssiAlarms[0] = Open9xFrSkyRSSIAlarm(0, c9x.rssiAlarms[0]); - rssiAlarms[1] = Open9xFrSkyRSSIAlarm(1, c9x.rssiAlarms[1]); -} - - t_Open9xArmFrSkyData_v211::operator FrSkyData () { FrSkyData c9x; @@ -1509,33 +734,6 @@ t_Open9xArmFrSkyData_v211::operator FrSkyData () return c9x; } -t_Open9xArmFrSkyData_v211::t_Open9xArmFrSkyData_v211(FrSkyData &c9x) -{ - memset(this, 0, sizeof(t_Open9xArmFrSkyData_v211)); - channels[0] = c9x.channels[0]; - channels[1] = c9x.channels[1]; - usrProto = c9x.usrProto; - voltsSource = c9x.voltsSource; - blades = c9x.blades; - currentSource=c9x.currentSource; - for (int i=0; i<4; i++) { - bars[i].source = c9x.screens[0].body.bars[i].source; - bars[i].barMin = c9x.screens[0].body.bars[i].barMin; - bars[i].barMax = c9x.screens[0].body.bars[i].barMax; - } - for (int line=0; line<4; line++) { - for (int col=0; col<2; col++) { - int i=line*2+col; - lines[i]=c9x.screens[1].body.lines[line].source[col]; - } - } - rssiAlarms[0] = Open9xFrSkyRSSIAlarm(0, c9x.rssiAlarms[0]); - rssiAlarms[1] = Open9xFrSkyRSSIAlarm(1, c9x.rssiAlarms[1]); - varioSource = c9x.varioSource; - varioSpeedUpMin = c9x.varioCenterMax; - varioSpeedDownMin = c9x.varioCenterMin; -} - t_Open9xArmModelData_v208::operator ModelData () { ModelData c9x; @@ -1587,7 +785,6 @@ t_Open9xArmModelData_v208::operator ModelData () for (int i=0; i= 0) { - phase.trim[j] = 501 + phase.trimRef[j] - (phase.trimRef[j] >= i ? 1 : 0); - } - else { - phase.trim[j] = std::max(-500, std::min(500, phase.trim[j])); - } - } - phaseData[i] = phase; - } - frsky = c9x.frsky; - varioSource = c9x.frsky.varioSource; - varioSpeedUpMin = c9x.frsky.varioCenterMax; - varioSpeedDownMin = c9x.frsky.varioCenterMin; - - ppmFrameLength = c9x.moduleData[0].ppmFrameLength; - thrTraceSrc = c9x.thrTraceSrc; - modelId = c9x.modelId; - frskyLinesXtra=0; - for (int j=0; j<4; j++) { - frskyLines[j] = 0; - for (int k=0; k<2; k++) { - int value = c9x.frsky.screens[1].body.lines[j].source[k]; - frskyLines[j] |= (k==0 ? (value & 0x0f) : ((value & 0x0f) << 4)); - frskyLinesXtra |= (value / 16) << (4*j+2*k); - } - } - for (int i=0; i= 0) { - phase.trim[j] = 501 + phase.trimRef[j] - (phase.trimRef[j] >= i ? 1 : 0); - } - else { - phase.trim[j] = std::max(-500, std::min(500, phase.trim[j])); - } - } - phaseData[i] = phase; - } - frsky = c9x.frsky; - varioSource = c9x.frsky.varioSource; - varioSpeedUpMin = c9x.frsky.varioCenterMax; - varioSpeedDownMin = c9x.frsky.varioCenterMin; - switchWarningStates = c9x.switchWarningStates; - - ppmFrameLength = c9x.moduleData[0].ppmFrameLength; - thrTraceSrc = c9x.thrTraceSrc; - modelId = c9x.modelId; - frskyLinesXtra=0; - for (int j=0; j<4; j++) { - frskyLines[j] = 0; - for (int k=0; k<2; k++) { - int value = c9x.frsky.screens[1].body.lines[j].source[k]; - frskyLines[j] |= (k==0 ? (value & 0x0f) : ((value & 0x0f) << 4)); - frskyLinesXtra |= (value / 16) << (4*j+2*k); - } - } - for (int i=0; i= 0) { - phase.trim[j] = 501 + phase.trimRef[j] - (phase.trimRef[j] >= i ? 1 : 0); - } - else { - phase.trim[j] = std::max(-500, std::min(500, phase.trim[j])); - } - } - phaseData[i] = phase; - } - frsky = c9x.frsky; - varioSource = c9x.frsky.varioSource; - varioSpeedUpMin = c9x.frsky.varioCenterMax; - varioSpeedDownMin = c9x.frsky.varioCenterMin; - switchWarningStates = c9x.switchWarningStates; - - ppmFrameLength = c9x.moduleData[0].ppmFrameLength; - thrTraceSrc = c9x.thrTraceSrc; - modelId = c9x.modelId; - - for (int i=0; i O9X_ARM_NUM_POINTS - 5 * O9X_ARM_MAX_CURVES) { - EEPROMWarnings += ::QObject::tr("open9x only accepts %1 points in all curves").arg(O9X_ARM_NUM_POINTS) + "\n"; - break; - } - curves[i] = offset; - for (int j=0; j= 0) { - phase.trim[j] = 501 + phase.trimRef[j] - (phase.trimRef[j] >= i ? 1 : 0); - } - else { - phase.trim[j] = std::max(-500, std::min(500, phase.trim[j])); - } - } - phaseData[i] = phase; - } - frsky = c9x.frsky; - switchWarningStates = c9x.switchWarningStates; - - ppmFrameLength = c9x.moduleData[0].ppmFrameLength; - thrTraceSrc = c9x.thrTraceSrc; - modelId = c9x.modelId; - - for (int i=0; i O9X_ARM_NUM_POINTS - 5 * O9X_ARM_MAX_CURVES) { - EEPROMWarnings += ::QObject::tr("open9x only accepts %1 points in all curves").arg(O9X_ARM_NUM_POINTS) + "\n"; - break; - } - curves[i] = offset; - for (int j=0; j= 0) { - phase.trim[j] = 501 + phase.trimRef[j] - (phase.trimRef[j] >= i ? 1 : 0); - } - else { - phase.trim[j] = std::max(-500, std::min(500, phase.trim[j])); - } - } - phaseData[i] = phase; - } - frsky = c9x.frsky; - switchWarningStates = c9x.switchWarningStates; - - ppmFrameLength = c9x.moduleData[0].ppmFrameLength; - thrTraceSrc = c9x.thrTraceSrc; - modelId = c9x.modelId; - } -} diff --git a/companion/src/firmwares/opentx/open9xSky9xeeprom.h b/companion/src/firmwares/opentx/open9xSky9xeeprom.h index 1c28d6d18..b313169b8 100644 --- a/companion/src/firmwares/opentx/open9xSky9xeeprom.h +++ b/companion/src/firmwares/opentx/open9xSky9xeeprom.h @@ -36,7 +36,6 @@ PACK(typedef struct t_Open9xArmTimerData_v202 { operator TimerData(); t_Open9xArmTimerData_v202() { memset(this, 0, sizeof(t_Open9xArmTimerData_v202)); } - t_Open9xArmTimerData_v202(TimerData &eepe); }) Open9xArmTimerData_v202; PACK(typedef struct t_Open9xArmExpoData_v208 { @@ -50,8 +49,6 @@ PACK(typedef struct t_Open9xArmExpoData_v208 { operator ExpoData(); t_Open9xArmExpoData_v208() { memset(this, 0, sizeof(t_Open9xArmExpoData_v208)); } - t_Open9xArmExpoData_v208(ExpoData&); - }) Open9xArmExpoData_v208; PACK(typedef struct t_Open9xArmExpoData_v210 { @@ -67,8 +64,6 @@ PACK(typedef struct t_Open9xArmExpoData_v210 { operator ExpoData(); t_Open9xArmExpoData_v210() { memset(this, 0, sizeof(t_Open9xArmExpoData_v210)); } - t_Open9xArmExpoData_v210(ExpoData&); - }) Open9xArmExpoData_v210; PACK(typedef struct t_Open9xArmExpoData_v212 { @@ -83,8 +78,6 @@ PACK(typedef struct t_Open9xArmExpoData_v212 { operator ExpoData(); t_Open9xArmExpoData_v212() { memset(this, 0, sizeof(t_Open9xArmExpoData_v212)); } - t_Open9xArmExpoData_v212(ExpoData&); - }) Open9xArmExpoData_v212; PACK(typedef struct t_Open9xArmMixData_v208 { @@ -106,8 +99,6 @@ PACK(typedef struct t_Open9xArmMixData_v208 { operator MixData(); t_Open9xArmMixData_v208() { memset(this, 0, sizeof(t_Open9xArmMixData_v208)); } - t_Open9xArmMixData_v208(MixData&); - }) Open9xArmMixData_v208; PACK(typedef struct t_Open9xArmMixData_v209 { @@ -129,8 +120,6 @@ PACK(typedef struct t_Open9xArmMixData_v209 { operator MixData(); t_Open9xArmMixData_v209() { memset(this, 0, sizeof(t_Open9xArmMixData_v209)); } - t_Open9xArmMixData_v209(MixData&); - }) Open9xArmMixData_v209; PACK(typedef struct t_Open9xArmMixData_v210 { @@ -154,8 +143,6 @@ PACK(typedef struct t_Open9xArmMixData_v210 { operator MixData(); t_Open9xArmMixData_v210() { memset(this, 0, sizeof(t_Open9xArmMixData_v210)); } - t_Open9xArmMixData_v210(MixData&); - }) Open9xArmMixData_v210; PACK(typedef struct t_Open9xArmMixData_v212 { @@ -180,8 +167,6 @@ PACK(typedef struct t_Open9xArmMixData_v212 { operator MixData(); t_Open9xArmMixData_v212() { memset(this, 0, sizeof(t_Open9xArmMixData_v212)); } - t_Open9xArmMixData_v212(MixData&); - }) Open9xArmMixData_v212; PACK(typedef struct t_Open9xArmPhaseData_v208 { @@ -192,7 +177,6 @@ PACK(typedef struct t_Open9xArmPhaseData_v208 { uint8_t fadeOut:4; operator PhaseData(); t_Open9xArmPhaseData_v208() { memset(this, 0, sizeof(t_Open9xArmPhaseData_v208)); } - t_Open9xArmPhaseData_v208(PhaseData &eepe); }) Open9xArmPhaseData_v208; PACK(typedef struct t_Open9xArmPhaseData_v212 { @@ -204,7 +188,6 @@ PACK(typedef struct t_Open9xArmPhaseData_v212 { int16_t rotaryEncoders[1]; operator PhaseData(); t_Open9xArmPhaseData_v212() { memset(this, 0, sizeof(t_Open9xArmPhaseData_v212)); } - t_Open9xArmPhaseData_v212(PhaseData &eepe); }) Open9xArmPhaseData_v212; PACK(typedef struct t_Open9xArmCustomSwData_v208 { // Custom Switches data @@ -214,7 +197,6 @@ PACK(typedef struct t_Open9xArmCustomSwData_v208 { // Custom Switches data operator CustomSwData(); t_Open9xArmCustomSwData_v208() { memset(this, 0, sizeof(t_Open9xArmCustomSwData_v208)); } - t_Open9xArmCustomSwData_v208(CustomSwData&); }) Open9xArmCustomSwData_v208; PACK(typedef struct t_Open9xArmCustomSwData_v209 { // Custom Switches data @@ -224,7 +206,6 @@ PACK(typedef struct t_Open9xArmCustomSwData_v209 { // Custom Switches data operator CustomSwData(); t_Open9xArmCustomSwData_v209() { memset(this, 0, sizeof(t_Open9xArmCustomSwData_v209)); } - t_Open9xArmCustomSwData_v209(CustomSwData&); }) Open9xArmCustomSwData_v209; PACK(typedef struct t_Open9xArmCustomSwData_v210 { // Custom Switches data @@ -236,7 +217,6 @@ PACK(typedef struct t_Open9xArmCustomSwData_v210 { // Custom Switches data operator CustomSwData(); t_Open9xArmCustomSwData_v210() { memset(this, 0, sizeof(t_Open9xArmCustomSwData_v210)); } - t_Open9xArmCustomSwData_v210(CustomSwData&); }) Open9xArmCustomSwData_v210; PACK(typedef struct t_Open9xArmFuncSwData_v208 { // Function Switches data @@ -246,8 +226,6 @@ PACK(typedef struct t_Open9xArmFuncSwData_v208 { // Function Switches data operator FuncSwData(); t_Open9xArmFuncSwData_v208() { memset(this, 0, sizeof(t_Open9xArmFuncSwData_v208)); } - t_Open9xArmFuncSwData_v208(FuncSwData&); - }) Open9xArmFuncSwData_v208; PACK(typedef struct t_Open9xArmFuncSwData_v210 { // Function Switches data @@ -257,8 +235,6 @@ PACK(typedef struct t_Open9xArmFuncSwData_v210 { // Function Switches data operator FuncSwData(); t_Open9xArmFuncSwData_v210() { memset(this, 0, sizeof(t_Open9xArmFuncSwData_v210)); } - t_Open9xArmFuncSwData_v210(FuncSwData&); - }) Open9xArmFuncSwData_v210; PACK(typedef struct t_Open9xArmFuncSwData_v211 { // Function Switches data @@ -270,8 +246,6 @@ PACK(typedef struct t_Open9xArmFuncSwData_v211 { // Function Switches data operator FuncSwData(); t_Open9xArmFuncSwData_v211() { memset(this, 0, sizeof(t_Open9xArmFuncSwData_v211)); } - t_Open9xArmFuncSwData_v211(FuncSwData&); - }) Open9xArmFuncSwData_v211; PACK(typedef struct t_Open9xArmSwashRingData_v208 { // Swash Ring data @@ -284,8 +258,6 @@ PACK(typedef struct t_Open9xArmSwashRingData_v208 { // Swash Ring data operator SwashRingData(); t_Open9xArmSwashRingData_v208() { memset(this, 0, sizeof(t_Open9xArmSwashRingData_v208)); } - t_Open9xArmSwashRingData_v208(SwashRingData&); - }) Open9xArmSwashRingData_v208; PACK(typedef struct t_Open9xArmSwashRingData_v209 { // Swash Ring data @@ -298,8 +270,6 @@ PACK(typedef struct t_Open9xArmSwashRingData_v209 { // Swash Ring data operator SwashRingData(); t_Open9xArmSwashRingData_v209() { memset(this, 0, sizeof(t_Open9xArmSwashRingData_v209)); } - t_Open9xArmSwashRingData_v209(SwashRingData&); - }) Open9xArmSwashRingData_v209; PACK(typedef struct t_Open9xArmSwashRingData_v210 { // Swash Ring data @@ -312,8 +282,6 @@ PACK(typedef struct t_Open9xArmSwashRingData_v210 { // Swash Ring data operator SwashRingData(); t_Open9xArmSwashRingData_v210() { memset(this, 0, sizeof(t_Open9xArmSwashRingData_v210)); } - t_Open9xArmSwashRingData_v210(SwashRingData&); - }) Open9xArmSwashRingData_v210; @@ -336,7 +304,6 @@ PACK(typedef struct t_Open9xArmFrSkyData_v210 { operator FrSkyData(); t_Open9xArmFrSkyData_v210() { memset(this, 0, sizeof(t_Open9xArmFrSkyData_v210)); } - t_Open9xArmFrSkyData_v210(FrSkyData&); }) Open9xArmFrSkyData_v210; PACK(typedef struct t_Open9xArmFrSkyData_v211 { @@ -355,7 +322,6 @@ PACK(typedef struct t_Open9xArmFrSkyData_v211 { operator FrSkyData(); t_Open9xArmFrSkyData_v211() { memset(this, 0, sizeof(t_Open9xArmFrSkyData_v211)); } - t_Open9xArmFrSkyData_v211(FrSkyData&); }) Open9xArmFrSkyData_v211; PACK(typedef struct t_Open9xArmModelData_v208 { @@ -395,8 +361,6 @@ PACK(typedef struct t_Open9xArmModelData_v208 { operator ModelData(); t_Open9xArmModelData_v208() { memset(this, 0, sizeof(t_Open9xArmModelData_v208)); } - t_Open9xArmModelData_v208(ModelData&); - }) Open9xArmModelData_v208; PACK(typedef struct t_Open9xArmModelData_v209 { @@ -437,8 +401,6 @@ PACK(typedef struct t_Open9xArmModelData_v209 { operator ModelData(); t_Open9xArmModelData_v209() { memset(this, 0, sizeof(t_Open9xArmModelData_v209)); } - t_Open9xArmModelData_v209(ModelData&); - }) Open9xArmModelData_v209; PACK(typedef struct t_Open9xArmModelData_v210 { @@ -477,7 +439,6 @@ PACK(typedef struct t_Open9xArmModelData_v210 { operator ModelData(); t_Open9xArmModelData_v210() { memset(this, 0, sizeof(t_Open9xArmModelData_v210)); } - t_Open9xArmModelData_v210(ModelData&); }) Open9xArmModelData_v210; @@ -517,8 +478,6 @@ PACK(typedef struct t_Open9xArmModelData_v211 { operator ModelData(); t_Open9xArmModelData_v211() { memset(this, 0, sizeof(t_Open9xArmModelData_v211)); } - t_Open9xArmModelData_v211(ModelData&); - }) Open9xArmModelData_v211; PACK(typedef struct t_Open9xArmModelData_v212 { @@ -555,8 +514,6 @@ PACK(typedef struct t_Open9xArmModelData_v212 { operator ModelData(); t_Open9xArmModelData_v212() { memset(this, 0, sizeof(t_Open9xArmModelData_v212)); } - t_Open9xArmModelData_v212(ModelData&); - }) Open9xArmModelData_v212; #endif diff --git a/companion/src/firmwares/opentx/open9xStockeeprom.cpp b/companion/src/firmwares/opentx/open9xStockeeprom.cpp index 274e91be9..0fc602e04 100644 --- a/companion/src/firmwares/opentx/open9xStockeeprom.cpp +++ b/companion/src/firmwares/opentx/open9xStockeeprom.cpp @@ -62,28 +62,6 @@ void getEEPROMZString(char *dst, const char *src, int size) } } -int8_t open9xStockFromSwitch(const RawSwitch & sw) -{ - switch (sw.type) { - case SWITCH_TYPE_SWITCH: - return sw.index; - case SWITCH_TYPE_VIRTUAL: - return sw.index > 0 ? (9 + sw.index) : (-9 + sw.index); - case SWITCH_TYPE_ON: - return 22; - case SWITCH_TYPE_OFF: - return -22; - case SWITCH_TYPE_MOMENT_SWITCH: - return sw.index > 0 ? (22 + sw.index) : (-22 + sw.index); - case SWITCH_TYPE_MOMENT_VIRTUAL: - return sw.index > 0 ? (31 + sw.index) : (-31 + sw.index); - case SWITCH_TYPE_ONM: - return 44; - default: - return 0; - } -} - RawSwitch open9xStockToSwitch(int8_t sw) { uint8_t swa = abs(sw); @@ -105,70 +83,6 @@ RawSwitch open9xStockToSwitch(int8_t sw) return RawSwitch(SWITCH_TYPE_MOMENT_VIRTUAL, sw > 0 ? sw-22-9 : sw+22+9); } -t_Open9xExpoData_v201::t_Open9xExpoData_v201(ExpoData &c9x) -{ - mode = c9x.mode; - chn = c9x.chn; - // 0=no curve, 1-6=std curves, 7-10=CV1-CV4, 11-15=CV9-CV13 - curve = 0; - expo = 0; - if (c9x.curveMode == 1) { - if (c9x.curveParam >=0 && c9x.curveParam <= 10) - curve = c9x.curveParam; - else if (c9x.curveParam >= 15 && c9x.curveParam <= 19) - curve = c9x.curveParam - 4; - else - EEPROMWarnings += ::QObject::tr("Open9x doesn't allow Curve%1 in expos").arg(c9x.curveParam-6) + "\n"; - } - else { - expo=c9x.expo; - } - swtch = open9xStockFromSwitch(c9x.swtch); - int zeros=0; - int ones=0; - int phtemp=c9x.phases; - for (int i=0; i>=1; - } - if (zeros==O9X_MAX_PHASES || zeros==0) { - phase=0; - negPhase=0; - } else if (zeros==1) { - int phtemp=c9x.phases; - int ph=0; - for (int i=0; i>=1; - } - phase=ph+1; - negPhase=0; - } else if (ones==1) { - int phtemp=c9x.phases; - int ph=0; - for (int i=0; i>=1; - } - phase=(ph+1); - negPhase=1; - } else { - phase=0; - EEPROMWarnings += ::QObject::tr("Flight modes settings on expos not exported") + "\n"; - } - weight = c9x.weight; -} - t_Open9xExpoData_v201::operator ExpoData () { ExpoData c9x; @@ -179,15 +93,10 @@ t_Open9xExpoData_v201::operator ExpoData () } else { if (curve == 0) { - c9x.curveMode = 0; - c9x.curveParam = expo; + c9x.curve = CurveReference(CurveReference::CURVE_REF_EXPO, expo); } else { - c9x.curveMode = 1; - if (curve <= 10) - c9x.curveParam = curve; - else - c9x.curveParam = curve + 4; + // TODO } } c9x.swtch = open9xStockToSwitch(swtch); @@ -205,40 +114,18 @@ t_Open9xExpoData_v201::operator ExpoData () return c9x; } -t_Open9xExpoData_v211::t_Open9xExpoData_v211(ExpoData &c9x) -{ - mode = c9x.mode; - chn = c9x.chn; - // 0=no curve, 1-6=std curves, 7-10=CV1-CV4, 11-15=CV9-CV13 - - swtch = open9xStockFromSwitch(c9x.swtch); - phases = c9x.phases; - weight = c9x.weight; - curveMode = c9x.curveMode; - curveParam = c9x.curveParam; -} - t_Open9xExpoData_v211::operator ExpoData () { ExpoData c9x; c9x.mode = mode; c9x.chn = chn; - c9x.curveMode = curveMode; - c9x.curveParam = curveParam; + // TODO c9x.curve c9x.swtch = open9xStockToSwitch(swtch); c9x.phases = phases; c9x.weight = weight; return c9x; } -t_Open9xLimitData_v201::t_Open9xLimitData_v201(LimitData &c9x) -{ - min = c9x.min+100; - max = c9x.max-100; - revert = c9x.revert; - offset = c9x.offset; -} - t_Open9xLimitData_v201::operator LimitData () { LimitData c9x; @@ -249,16 +136,6 @@ t_Open9xLimitData_v201::operator LimitData () return c9x; } -t_Open9xLimitData_v211::t_Open9xLimitData_v211(LimitData &c9x) -{ - min = c9x.min+100; - max = c9x.max-100; - revert = c9x.revert; - offset = c9x.offset; - ppmCenter = c9x.ppmCenter; - symetrical = c9x.symetrical; -} - t_Open9xLimitData_v211::operator LimitData () { LimitData c9x; @@ -271,90 +148,6 @@ t_Open9xLimitData_v211::operator LimitData () return c9x; } -t_Open9xMixData_v201::t_Open9xMixData_v201(MixData &c9x) -{ - destCh = c9x.destCh; - mixWarn = c9x.mixWarn; - swtch = open9xStockFromSwitch(c9x.swtch); - - if (c9x.srcRaw.type == SOURCE_TYPE_NONE) { - srcRaw = 0; - swtch = 0; - } - else if (c9x.srcRaw.type == SOURCE_TYPE_STICK) { - srcRaw = 1 + c9x.srcRaw.index; - } - else if (c9x.srcRaw.type == SOURCE_TYPE_ROTARY_ENCODER) { - EEPROMWarnings += ::QObject::tr("open9x on this board doesn't have Rotary Encoders") + "\n"; - srcRaw = 5 + c9x.srcRaw.index; // use pots instead - } - else if (c9x.srcRaw.type == SOURCE_TYPE_MAX) { - srcRaw = 8; // MAX - } - else if (c9x.srcRaw.type == SOURCE_TYPE_SWITCH) { - srcRaw = 9; // FULL - swtch = open9xStockFromSwitch(RawSwitch(c9x.srcRaw.index)); - } - else if (c9x.srcRaw.type == SOURCE_TYPE_CYC) { - srcRaw = 10 + c9x.srcRaw.index; - } - else if (c9x.srcRaw.type == SOURCE_TYPE_PPM) { - srcRaw = 13 + c9x.srcRaw.index; - } - else if (c9x.srcRaw.type == SOURCE_TYPE_CH) { - srcRaw = 21 + c9x.srcRaw.index; - } - - weight = c9x.weight; - curve = c9x.curve; - delayUp = c9x.delayUp; - delayDown = c9x.delayDown; - speedUp = c9x.speedUp; - speedDown = c9x.speedDown; - carryTrim = c9x.carryTrim; - mltpx = (MltpxValue)c9x.mltpx; - int zeros=0; - int ones=0; - int phtemp=c9x.phases; - for (int i=0; i>=1; - } - if (zeros==O9X_MAX_PHASES || zeros==0) { - phase=0; - } else if (zeros==1) { - int phtemp=c9x.phases; - int ph=0; - for (int i=0; i>=1; - } - phase=ph+1; - } else if (ones==1) { - int phtemp=c9x.phases; - int ph=0; - for (int i=0; i>=1; - } - phase=-(ph+1); - } else { - phase=0; - EEPROMWarnings += ::QObject::tr("Flight modes settings on mixers not exported") + "\n"; - } - sOffset = c9x.sOffset; -} - t_Open9xMixData_v201::operator MixData () { MixData c9x; @@ -395,7 +188,7 @@ t_Open9xMixData_v201::operator MixData () c9x.srcRaw = RawSource(SOURCE_TYPE_CH, srcRaw-21); } - c9x.curve = curve; + // TODO c9x.curve = curve; c9x.delayUp = delayUp; c9x.delayDown = delayDown; c9x.speedUp = speedUp; @@ -403,7 +196,7 @@ t_Open9xMixData_v201::operator MixData () c9x.carryTrim = carryTrim; c9x.mltpx = (MltpxValue)mltpx; c9x.mixWarn = mixWarn; -// c9x.phase = phase; + if (phase<0) { c9x.phases= 1 << (-phase -1); } else if (phase==0) { @@ -416,90 +209,6 @@ t_Open9xMixData_v201::operator MixData () return c9x; } -t_Open9xMixData_v203::t_Open9xMixData_v203(MixData &c9x) -{ - destCh = c9x.destCh; - mixWarn = c9x.mixWarn; - swtch = open9xStockFromSwitch(c9x.swtch); - - if (c9x.srcRaw.type == SOURCE_TYPE_NONE) { - srcRaw = 0; - swtch = 0; - } - else if (c9x.srcRaw.type == SOURCE_TYPE_STICK) { - srcRaw = 1 + c9x.srcRaw.index; - } - else if (c9x.srcRaw.type == SOURCE_TYPE_ROTARY_ENCODER) { - EEPROMWarnings += ::QObject::tr("open9x on this board doesn't have Rotary Encoders") + "\n"; - srcRaw = 5 + c9x.srcRaw.index; // use pots instead - } - else if (c9x.srcRaw.type == SOURCE_TYPE_MAX) { - srcRaw = 8; // MAX - } - else if (c9x.srcRaw.type == SOURCE_TYPE_SWITCH) { - srcRaw = 9; // FULL - swtch = open9xStockFromSwitch(RawSwitch(c9x.srcRaw.index)); - } - else if (c9x.srcRaw.type == SOURCE_TYPE_CYC) { - srcRaw = 10 + c9x.srcRaw.index; - } - else if (c9x.srcRaw.type == SOURCE_TYPE_PPM) { - srcRaw = 13 + c9x.srcRaw.index; - } - else if (c9x.srcRaw.type == SOURCE_TYPE_CH) { - srcRaw = 21 + c9x.srcRaw.index; - } - - weight = c9x.weight; - curve = c9x.curve; - delayUp = c9x.delayUp; - delayDown = c9x.delayDown; - speedUp = c9x.speedUp; - speedDown = c9x.speedDown; - carryTrim = c9x.carryTrim; - mltpx = (MltpxValue)c9x.mltpx; - int zeros=0; - int ones=0; - int phtemp=c9x.phases; - for (int i=0; i>=1; - } - if (zeros==O9X_MAX_PHASES || zeros==0) { - phase=0; - } else if (zeros==1) { - int phtemp=c9x.phases; - int ph=0; - for (int i=0; i>=1; - } - phase=ph+1; - } else if (ones==1) { - int phtemp=c9x.phases; - int ph=0; - for (int i=0; i>=1; - } - phase=-(ph+1); - } else { - phase=0; - EEPROMWarnings += ::QObject::tr("Flight modes settings on mixers not exported") + "\n"; - } - sOffset = c9x.sOffset; -} - t_Open9xMixData_v203::operator MixData () { MixData c9x; @@ -540,7 +249,7 @@ t_Open9xMixData_v203::operator MixData () c9x.srcRaw = RawSource(SOURCE_TYPE_CH, srcRaw-21); } - c9x.curve = curve; + // TODO c9x.curve = curve; c9x.delayUp = delayUp; c9x.delayDown = delayDown; c9x.speedUp = speedUp; @@ -548,7 +257,7 @@ t_Open9xMixData_v203::operator MixData () c9x.carryTrim = carryTrim; c9x.mltpx = (MltpxValue)mltpx; c9x.mixWarn = mixWarn; - // c9x.phase = phase; + if (phase<0) { c9x.phases= 1 << (-phase -1); } else if (phase==0) { @@ -561,98 +270,6 @@ t_Open9xMixData_v203::operator MixData () return c9x; } -t_Open9xMixData_v205::t_Open9xMixData_v205(MixData &c9x) -{ - if (c9x.destCh) { - destCh = c9x.destCh-1; - mixWarn = c9x.mixWarn; - swtch = open9xStockFromSwitch(c9x.swtch); - - if (c9x.srcRaw.type == SOURCE_TYPE_NONE) { - srcRaw = 0; - swtch = 0; - } - else if (c9x.srcRaw.type == SOURCE_TYPE_STICK) { - srcRaw = 1 + c9x.srcRaw.index; - } - else if (c9x.srcRaw.type == SOURCE_TYPE_ROTARY_ENCODER) { - EEPROMWarnings += ::QObject::tr("Open9x on this board doesn't have Rotary Encoders") + "\n"; - srcRaw = 5 + c9x.srcRaw.index; // use pots instead - } - else if (c9x.srcRaw.type == SOURCE_TYPE_MAX) { - srcRaw = 8; // MAX - } - /* else if (c9x.srcRaw.type == SOURCE_TYPE_3POS) { - srcRaw = 9; - } */ - else if (c9x.srcRaw.type == SOURCE_TYPE_SWITCH) { - srcRaw = 9 + open9xStockFromSwitch(RawSwitch(c9x.srcRaw.index)); - } - else if (c9x.srcRaw.type == SOURCE_TYPE_CYC) { - srcRaw = 31 + c9x.srcRaw.index; - } - else if (c9x.srcRaw.type == SOURCE_TYPE_PPM) { - srcRaw = 34 + c9x.srcRaw.index; - } - else if (c9x.srcRaw.type == SOURCE_TYPE_CH) { - srcRaw = 42 + c9x.srcRaw.index; - } - - weight = c9x.weight; - differential = c9x.differential/2; - curve = c9x.curve; - delayUp = c9x.delayUp; - delayDown = c9x.delayDown; - speedUp = c9x.speedUp; - speedDown = c9x.speedDown; - carryTrim = c9x.carryTrim; - mltpx = (MltpxValue)c9x.mltpx; - int zeros=0; - int ones=0; - int phtemp=c9x.phases; - for (int i=0; i>=1; - } - if (zeros==O9X_MAX_PHASES || zeros==0) { - phase=0; - } else if (zeros==1) { - int phtemp=c9x.phases; - int ph=0; - for (int i=0; i>=1; - } - phase=ph+1; - } else if (ones==1) { - int phtemp=c9x.phases; - int ph=0; - for (int i=0; i>=1; - } - phase=-(ph+1); - } else { - phase=0; - EEPROMWarnings += ::QObject::tr("Flight modes settings on mixers not exported") + "\n"; - } - sOffset = c9x.sOffset; - } - else { - memset(this, 0, sizeof(t_Open9xMixData_v205)); - } -} - t_Open9xMixData_v205::operator MixData () { MixData c9x; @@ -686,8 +303,14 @@ t_Open9xMixData_v205::operator MixData () c9x.srcRaw = RawSource(SOURCE_TYPE_CH, srcRaw-42); } c9x.weight = weight; - c9x.differential = differential*2; - c9x.curve = curve; + + if (differential) { + c9x.curve = CurveReference(CurveReference::CURVE_REF_DIFF, differential*2); + } + else { + // TODO c9x.curve = curve; + } + c9x.delayUp = delayUp; c9x.delayDown = delayDown; c9x.speedUp = speedUp; @@ -695,12 +318,14 @@ t_Open9xMixData_v205::operator MixData () c9x.carryTrim = carryTrim; c9x.mltpx = (MltpxValue)mltpx; c9x.mixWarn = mixWarn; - // c9x.phase = phase; + if (phase<0) { c9x.phases= 1 << (-phase -1); - } else if (phase==0) { + } + else if (phase==0) { c9x.phases=0; - } else { + } + else { c9x.phases=63; c9x.phases &= ~(1 << (phase -1)); } @@ -709,101 +334,6 @@ t_Open9xMixData_v205::operator MixData () return c9x; } -t_Open9xMixData_v209::t_Open9xMixData_v209(MixData &c9x) -{ - if (c9x.destCh) { - destCh = c9x.destCh-1; - mixWarn = c9x.mixWarn; - swtch = open9xStockFromSwitch(c9x.swtch); - - if (c9x.srcRaw.type == SOURCE_TYPE_NONE) { - srcRaw = 0; - swtch = 0; - } - else if (c9x.srcRaw.type == SOURCE_TYPE_STICK) { - srcRaw = 1 + c9x.srcRaw.index; - } - else if (c9x.srcRaw.type == SOURCE_TYPE_ROTARY_ENCODER) { - EEPROMWarnings += ::QObject::tr("Open9x on this board doesn't have Rotary Encoders") + "\n"; - srcRaw = 5 + c9x.srcRaw.index; // use pots instead - } - else if (c9x.srcRaw.type == SOURCE_TYPE_TRIM) { - srcRaw = 8 + c9x.srcRaw.index; // use pots instead - } - else if (c9x.srcRaw.type == SOURCE_TYPE_MAX) { - srcRaw = 12; // MAX - } - /* else if (c9x.srcRaw.type == SOURCE_TYPE_3POS) { - srcRaw = 13; - } */ - else if (c9x.srcRaw.type == SOURCE_TYPE_SWITCH) { - srcRaw = 13 + open9xStockFromSwitch(RawSwitch(c9x.srcRaw.index)); - } - else if (c9x.srcRaw.type == SOURCE_TYPE_CYC) { - srcRaw = 35 + c9x.srcRaw.index; - } - else if (c9x.srcRaw.type == SOURCE_TYPE_PPM) { - srcRaw = 38 + c9x.srcRaw.index; - } - else if (c9x.srcRaw.type == SOURCE_TYPE_CH) { - srcRaw = 46 + c9x.srcRaw.index; - } - - weight = c9x.weight; - differential = c9x.differential/2; - curve = c9x.curve; - delayUp = c9x.delayUp; - delayDown = c9x.delayDown; - speedUp = c9x.speedUp; - speedDown = c9x.speedDown; - carryTrim = c9x.carryTrim; - mltpx = (MltpxValue)c9x.mltpx; - int zeros=0; - int ones=0; - int phtemp=c9x.phases; - for (int i=0; i>=1; - } - if (zeros==O9X_MAX_PHASES || zeros==0) { - phase=0; - } else if (zeros==1) { - int phtemp=c9x.phases; - int ph=0; - for (int i=0; i>=1; - } - phase=ph+1; - } else if (ones==1) { - int phtemp=c9x.phases; - int ph=0; - for (int i=0; i>=1; - } - phase=-(ph+1); - } else { - phase=0; - EEPROMWarnings += ::QObject::tr("Flight modes settings on mixers not exported") + "\n"; - } - sOffset = c9x.sOffset; - } - else { - memset(this, 0, sizeof(t_Open9xMixData_v209)); - } -} - t_Open9xMixData_v209::operator MixData () { MixData c9x; @@ -840,8 +370,14 @@ t_Open9xMixData_v209::operator MixData () c9x.srcRaw = RawSource(SOURCE_TYPE_CH, srcRaw-46); } c9x.weight = weight; - c9x.differential = differential*2; - c9x.curve = curve; + + if (differential) { + c9x.curve = CurveReference(CurveReference::CURVE_REF_DIFF, differential*2); + } + else { + // TODO c9x.curve = curve; + } + c9x.delayUp = delayUp; c9x.delayDown = delayDown; c9x.speedUp = speedUp; @@ -849,12 +385,14 @@ t_Open9xMixData_v209::operator MixData () c9x.carryTrim = carryTrim; c9x.mltpx = (MltpxValue)mltpx; c9x.mixWarn = mixWarn; - // c9x.phase = phase; + if (phase<0) { c9x.phases= 1 << (-phase -1); - } else if (phase==0) { + } + else if (phase==0) { c9x.phases=0; - } else { + } + else { c9x.phases=63; c9x.phases &= ~(1 << (phase -1)); } @@ -863,70 +401,6 @@ t_Open9xMixData_v209::operator MixData () return c9x; } -t_Open9xMixData_v211::t_Open9xMixData_v211(MixData &c9x) -{ - if (c9x.destCh) { - destCh = c9x.destCh-1; - mixWarn = c9x.mixWarn; - swtch = open9xStockFromSwitch(c9x.swtch); - - if (c9x.srcRaw.type == SOURCE_TYPE_NONE) { - srcRaw = 0; - swtch = 0; - } - else if (c9x.srcRaw.type == SOURCE_TYPE_STICK) { - srcRaw = 1 + c9x.srcRaw.index; - } - else if (c9x.srcRaw.type == SOURCE_TYPE_ROTARY_ENCODER) { - EEPROMWarnings += ::QObject::tr("Open9x on this board doesn't have Rotary Encoders") + "\n"; - srcRaw = 5 + c9x.srcRaw.index; // use pots instead - } - else if (c9x.srcRaw.type == SOURCE_TYPE_TRIM) { - srcRaw = 8 + c9x.srcRaw.index; // use pots instead - } - else if (c9x.srcRaw.type == SOURCE_TYPE_MAX) { - srcRaw = 12; // MAX - } - /* else if (c9x.srcRaw.type == SOURCE_TYPE_3POS) { - srcRaw = 13; - } */ - else if (c9x.srcRaw.type == SOURCE_TYPE_SWITCH) { - srcRaw = 13 + open9xStockFromSwitch(RawSwitch(c9x.srcRaw.index)); - } - else if (c9x.srcRaw.type == SOURCE_TYPE_CYC) { - srcRaw = 35 + c9x.srcRaw.index; - } - else if (c9x.srcRaw.type == SOURCE_TYPE_PPM) { - srcRaw = 38 + c9x.srcRaw.index; - } - else if (c9x.srcRaw.type == SOURCE_TYPE_CH) { - srcRaw = 46 + c9x.srcRaw.index; - } - - weight = c9x.weight; - if (c9x.curve==0) { - curveMode = 0; - curveParam = c9x.differential; - } - else { - curveMode = 1; - curveParam = c9x.curve; - } - delayUp = c9x.delayUp; - delayDown = c9x.delayDown; - speedUp = c9x.speedUp; - speedDown = c9x.speedDown; - carryTrim = c9x.carryTrim; - noExpo = c9x.noExpo; - mltpx = (MltpxValue)c9x.mltpx; - phases = c9x.phases; - sOffset = c9x.sOffset; - } - else { - memset(this, 0, sizeof(t_Open9xMixData_v211)); - } -} - t_Open9xMixData_v211::operator MixData () { MixData c9x; @@ -963,12 +437,14 @@ t_Open9xMixData_v211::operator MixData () c9x.srcRaw = RawSource(SOURCE_TYPE_CH, srcRaw-46); } c9x.weight = weight; + if (curveMode==0) { - c9x.differential = curveParam; - c9x.curve=0; - } else { - c9x.curve=curveParam; + c9x.curve = CurveReference(CurveReference::CURVE_REF_DIFF, curveParam); + } + else { + // TODO c9x.curve = curve; } + c9x.delayUp = delayUp; c9x.delayDown = delayDown; c9x.speedUp = speedUp; @@ -983,30 +459,6 @@ t_Open9xMixData_v211::operator MixData () return c9x; } -int8_t open9x208FromSource(RawSource source) -{ - int v1 = 0; - if (source.type == SOURCE_TYPE_STICK) - v1 = 1+source.index; - else if (source.type == SOURCE_TYPE_ROTARY_ENCODER) { - EEPROMWarnings += ::QObject::tr("Open9x on this board doesn't have Rotary Encoders") + "\n"; - v1 = 5+source.index; - } - else if (source.type == SOURCE_TYPE_MAX) - v1 = 8; - /* else if (source.type == SOURCE_TYPE_3POS) - v1 = 9; */ - else if (source.type == SOURCE_TYPE_CYC) - v1 = 10+source.index; - else if (source.type == SOURCE_TYPE_PPM) - v1 = 13+source.index; - else if (source.type == SOURCE_TYPE_CH) - v1 = 21+source.index; - else if (source.type == SOURCE_TYPE_TELEMETRY) - v1 = 36+source.index; - return v1; -} - RawSource open9x208ToSource(int8_t value) { if (value == 0) { @@ -1035,32 +487,6 @@ RawSource open9x208ToSource(int8_t value) } } -int8_t open9xStock209FromSource(RawSource source) -{ - int v1 = 0; - if (source.type == SOURCE_TYPE_STICK) - v1 = 1+source.index; - else if (source.type == SOURCE_TYPE_ROTARY_ENCODER) { - EEPROMWarnings += ::QObject::tr("Open9x on this board doesn't have Rotary Encoders") + "\n"; - v1 = 5+source.index; - } - else if (source.type == SOURCE_TYPE_TRIM) - v1 = 8+source.index; - else if (source.type == SOURCE_TYPE_MAX) - v1 = 12; - /* else if (source.type == SOURCE_TYPE_3POS) - v1 = 13; */ - else if (source.type == SOURCE_TYPE_CYC) - v1 = 14+source.index; - else if (source.type == SOURCE_TYPE_PPM) - v1 = 17+source.index; - else if (source.type == SOURCE_TYPE_CH) - v1 = 25+source.index; - else if (source.type == SOURCE_TYPE_TELEMETRY) - v1 = 40+source.index; - return v1; -} - RawSource open9xStock209ToSource(int8_t value) { if (value == 0) { @@ -1092,33 +518,6 @@ RawSource open9xStock209ToSource(int8_t value) } } -t_Open9xCustomSwData_v208::t_Open9xCustomSwData_v208(CustomSwData &c9x) -{ - func = c9x.func; - v1 = c9x.val1; - v2 = c9x.val2; - - if ((c9x.func >= CS_FN_VPOS && c9x.func <= CS_FN_ANEG) || c9x.func >= CS_FN_EQUAL) { - v1 = open9x208FromSource(RawSource(c9x.val1)); - } - - if (c9x.func >= CS_FN_EQUAL) { - v2 = open9x208FromSource(RawSource(c9x.val2)); - } - - if (c9x.func >= CS_FN_AND && c9x.func <= CS_FN_XOR) { - v1 = open9xStockFromSwitch(RawSwitch(c9x.val1)); - v2 = open9xStockFromSwitch(RawSwitch(c9x.val2)); - } - - if (func>O9X_MAX_CSFUNCOLD ) { - EEPROMWarnings += ::QObject::tr("This version of open9x does not support Custom Switch function %1").arg(getFuncName(func)) + "\n"; - func=0; - v1=0; - v2=0; - } -} - Open9xCustomSwData_v208::operator CustomSwData () { CustomSwData c9x; @@ -1142,26 +541,6 @@ Open9xCustomSwData_v208::operator CustomSwData () return c9x; } -t_Open9xCustomSwData_v209::t_Open9xCustomSwData_v209(CustomSwData &c9x) -{ - func = c9x.func; - v1 = c9x.val1; - v2 = c9x.val2; - - if ((c9x.func >= CS_FN_VPOS && c9x.func <= CS_FN_ANEG) || c9x.func >= CS_FN_EQUAL) { - v1 = open9xStock209FromSource(RawSource(c9x.val1)); - } - - if (c9x.func >= CS_FN_EQUAL && c9x.func <= CS_FN_ELESS) { - v2 = open9xStock209FromSource(RawSource(c9x.val2)); - } - - if (c9x.func >= CS_FN_AND && c9x.func <= CS_FN_XOR) { - v1 = open9xStockFromSwitch(RawSwitch(c9x.val1)); - v2 = open9xStockFromSwitch(RawSwitch(c9x.val2)); - } -} - Open9xCustomSwData_v209::operator CustomSwData () { CustomSwData c9x; @@ -1185,12 +564,6 @@ Open9xCustomSwData_v209::operator CustomSwData () return c9x; } -t_Open9xFuncSwData_v201::t_Open9xFuncSwData_v201(FuncSwData &c9x) -{ - swtch = open9xStockFromSwitch(c9x.swtch); - func = c9x.func - O9X_NUM_CHNOUT; -} - t_Open9xFuncSwData_v201::operator FuncSwData () { FuncSwData c9x; @@ -1225,37 +598,6 @@ enum Functions { FUNC_MAX }; -t_Open9xFuncSwData_v203::t_Open9xFuncSwData_v203(FuncSwData &c9x) -{ - swtch = open9xStockFromSwitch(c9x.swtch); - if (c9x.func <= FuncSafetyCh16) { - param = ((c9x.param>>1)<<1); - param |=(c9x.enabled & 0x01); - func = c9x.func; - } else { - param = c9x.param;; - if (c9x.func <= FuncTrainerAIL) - func = 16 + c9x.func - FuncTrainer; - else if (c9x.func == FuncInstantTrim) - func = 21; - else if (c9x.func == FuncPlaySound) - func = 22; - else if (c9x.func == FuncPlayHaptic) - func = 23; - else if (c9x.func == FuncReset) - func = 24; - else if (c9x.func == FuncVario) - func = 25; - else if (c9x.func == FuncBacklight) - func = 26; - else { - swtch = 0; - func = 0; - param = 0; - } - } -} - t_Open9xFuncSwData_v203::operator FuncSwData () { FuncSwData c9x; @@ -1286,38 +628,6 @@ t_Open9xFuncSwData_v203::operator FuncSwData () return c9x; } -t_Open9xFuncSwData_v210::t_Open9xFuncSwData_v210(FuncSwData &c9x) -{ - swtch = open9xStockFromSwitch(c9x.swtch); - param = c9x.param; - if (c9x.func <= FuncInstantTrim) { - delay = c9x.enabled; - func = (uint8_t)c9x.func; - } - else if (c9x.func == FuncPlaySound) - func = 22; - else if (c9x.func == FuncPlayHaptic) - func = 23; - else if (c9x.func == FuncReset) - func = 24; - else if (c9x.func == FuncVario) - func = 25; - else if (c9x.func == FuncPlayPrompt) - func = 26; - else if (c9x.func == FuncPlayValue) { - func = 27; - if (c9x.param > 7) { - param -= 2; - } - } else if (c9x.func == FuncBacklight) - func = 28; - else { - swtch = 0; - func = 0; - param = 0; - } -} - t_Open9xFuncSwData_v210::operator FuncSwData () { FuncSwData c9x; @@ -1352,12 +662,6 @@ t_Open9xFuncSwData_v210::operator FuncSwData () return c9x; } -t_Open9xSafetySwData::t_Open9xSafetySwData(SafetySwData &c9x) -{ - swtch = open9xStockFromSwitch(c9x.swtch); - val = c9x.val; -} - t_Open9xSafetySwData::operator SafetySwData () { SafetySwData c9x; @@ -1366,16 +670,6 @@ t_Open9xSafetySwData::operator SafetySwData () return c9x; } -t_Open9xSwashRingData_v208::t_Open9xSwashRingData_v208(SwashRingData &c9x) -{ - invertELE = c9x.invertELE; - invertAIL = c9x.invertAIL; - invertCOL = c9x.invertCOL; - type = c9x.type; - collectiveSource = open9x208FromSource(c9x.collectiveSource); - value = c9x.value; -} - t_Open9xSwashRingData_v208::operator SwashRingData () { SwashRingData c9x; @@ -1388,16 +682,6 @@ t_Open9xSwashRingData_v208::operator SwashRingData () return c9x; } -t_Open9xSwashRingData_v209::t_Open9xSwashRingData_v209(SwashRingData &c9x) -{ - invertELE = c9x.invertELE; - invertAIL = c9x.invertAIL; - invertCOL = c9x.invertCOL; - type = c9x.type; - collectiveSource = open9xStock209FromSource(c9x.collectiveSource); - value = c9x.value; -} - t_Open9xSwashRingData_v209::operator SwashRingData () { SwashRingData c9x; @@ -1422,19 +706,6 @@ t_Open9xPhaseData_v201::operator PhaseData () return c9x; } -t_Open9xPhaseData_v201::t_Open9xPhaseData_v201(PhaseData &c9x) -{ - trim_ext = 0; - for (int i=0; i> 2); - trim_ext = (trim_ext & ~(0x03 << (2*i))) + (((c9x.trim[i] & 0x03) << (2*i))); - } - swtch = open9xStockFromSwitch(c9x.swtch); - setEEPROMZString(name, c9x.name, sizeof(name)); - fadeIn = c9x.fadeIn; - fadeOut = c9x.fadeOut; -} - t_Open9xTimerData_v201::operator TimerData () { TimerData c9x; @@ -1466,24 +737,6 @@ t_Open9xTimerData_v202::operator TimerData () return c9x; } -t_Open9xTimerData_v202::t_Open9xTimerData_v202(TimerData &c9x) -{ - val = c9x.val; - - if (c9x.mode >= TMRMODE_OFF && c9x.mode <= TMRMODE_THt) - mode = 0+c9x.mode-TMRMODE_OFF; - else if (c9x.mode >= TMRMODE_FIRST_MOMENT_SWITCH) - mode = 26+c9x.mode-TMRMODE_FIRST_MOMENT_SWITCH; - else if (c9x.mode >= TMRMODE_FIRST_SWITCH) - mode = 5+c9x.mode-TMRMODE_FIRST_SWITCH; - else if (c9x.mode <= TMRMODE_FIRST_NEG_MOMENT_SWITCH) - mode = -22+c9x.mode-TMRMODE_FIRST_NEG_MOMENT_SWITCH; - else if (c9x.mode <= TMRMODE_FIRST_NEG_SWITCH) - mode = -1+c9x.mode-TMRMODE_FIRST_NEG_SWITCH; - else - mode = 0; -} - FrSkyRSSIAlarm t_Open9xFrSkyRSSIAlarm::get(int index) { FrSkyRSSIAlarm c9x; @@ -1492,25 +745,6 @@ FrSkyRSSIAlarm t_Open9xFrSkyRSSIAlarm::get(int index) return c9x; } -t_Open9xFrSkyRSSIAlarm::t_Open9xFrSkyRSSIAlarm(int index, FrSkyRSSIAlarm &c9x) -{ - memset(this, 0, sizeof(t_Open9xFrSkyRSSIAlarm)); - level = (2+c9x.level-index) % 4; - value = c9x.value - 50; -} - -t_Open9xFrSkyChannelData_v201::t_Open9xFrSkyChannelData_v201(FrSkyChannelData &c9x) -{ - memset(this, 0, sizeof(t_Open9xFrSkyChannelData_v201)); - ratio = c9x.ratio; - alarms_value[0] = c9x.alarms[0].value; - alarms_value[1] = c9x.alarms[1].value; - alarms_level = (c9x.alarms[1].level << 2) + c9x.alarms[0].level; - alarms_greater = (c9x.alarms[1].greater << 1) + c9x.alarms[0].greater; - type = c9x.type; - offset = LIMIT(-8, c9x.offset, +7); -} - t_Open9xFrSkyChannelData_v201::operator FrSkyChannelData () { FrSkyChannelData c9x; @@ -1526,18 +760,6 @@ t_Open9xFrSkyChannelData_v201::operator FrSkyChannelData () return c9x; } -t_Open9xFrSkyChannelData_v203::t_Open9xFrSkyChannelData_v203(FrSkyChannelData &c9x) -{ - memset(this, 0, sizeof(t_Open9xFrSkyChannelData_v203)); - ratio = c9x.ratio; - alarms_value[0] = c9x.alarms[0].value; - alarms_value[1] = c9x.alarms[1].value; - alarms_level = (c9x.alarms[1].level << 2) + c9x.alarms[0].level; - alarms_greater = (c9x.alarms[1].greater << 1) + c9x.alarms[0].greater; - type = c9x.type; - offset = c9x.offset; -} - t_Open9xFrSkyChannelData_v203::operator FrSkyChannelData () { FrSkyChannelData c9x; @@ -1553,20 +775,6 @@ t_Open9xFrSkyChannelData_v203::operator FrSkyChannelData () return c9x; } -t_Open9xFrSkyChannelData_v204::t_Open9xFrSkyChannelData_v204(FrSkyChannelData &c9x) -{ - memset(this, 0, sizeof(t_Open9xFrSkyChannelData_v204)); - ratio = c9x.ratio; - type = c9x.type; - multiplier = c9x.multiplier; - alarms_value[0] = c9x.alarms[0].value; - alarms_value[1] = c9x.alarms[1].value; - alarms_level = (c9x.alarms[1].level << 2) + c9x.alarms[0].level; - alarms_greater = (c9x.alarms[1].greater << 1) + c9x.alarms[0].greater; - // TODO multiplier = c9x.multiplier; - offset = c9x.offset; -} - t_Open9xFrSkyChannelData_v204::operator FrSkyChannelData () { FrSkyChannelData c9x; @@ -1584,20 +792,6 @@ t_Open9xFrSkyChannelData_v204::operator FrSkyChannelData () return c9x; } -t_Open9xFrSkyChannelData_v208::t_Open9xFrSkyChannelData_v208(FrSkyChannelData &c9x) -{ - memset(this, 0, sizeof(t_Open9xFrSkyChannelData_v208)); - ratio = c9x.ratio; - type = c9x.type; - multiplier = c9x.multiplier; - alarms_value[0] = c9x.alarms[0].value; - alarms_value[1] = c9x.alarms[1].value; - alarms_level = (c9x.alarms[1].level << 2) + c9x.alarms[0].level; - alarms_greater = (c9x.alarms[1].greater << 1) + c9x.alarms[0].greater; - // TODO multiplier = c9x.multiplier; - offset = c9x.offset; -} - t_Open9xFrSkyChannelData_v208::operator FrSkyChannelData () { FrSkyChannelData c9x; @@ -1632,14 +826,6 @@ t_Open9xFrSkyData_v202::operator FrSkyData () return c9x; } -t_Open9xFrSkyData_v202::t_Open9xFrSkyData_v202(FrSkyData &c9x) -{ - memset(this, 0, sizeof(t_Open9xFrSkyData_v202)); - channels[0] = c9x.channels[0]; - channels[1] = c9x.channels[1]; - usrProto = c9x.usrProto; -} - t_Open9xFrSkyData_v203::operator FrSkyData () { FrSkyData c9x; @@ -1649,14 +835,6 @@ t_Open9xFrSkyData_v203::operator FrSkyData () return c9x; } -t_Open9xFrSkyData_v203::t_Open9xFrSkyData_v203(FrSkyData &c9x) -{ - memset(this, 0, sizeof(t_Open9xFrSkyData_v203)); - channels[0] = c9x.channels[0]; - channels[1] = c9x.channels[1]; - usrProto = c9x.usrProto; -} - t_Open9xFrSkyBarData_v204::operator FrSkyBarData () { FrSkyBarData c9x; @@ -1666,14 +844,6 @@ t_Open9xFrSkyBarData_v204::operator FrSkyBarData () return c9x; } -t_Open9xFrSkyBarData_v204::t_Open9xFrSkyBarData_v204(FrSkyBarData &c9x) -{ - memset(this, 0, sizeof(t_Open9xFrSkyBarData_v204)); - source = c9x.source; - barMin = c9x.barMin; - barMax = c9x.barMax; -} - t_Open9xFrSkyData_v204::operator FrSkyData () { FrSkyData c9x; @@ -1688,18 +858,6 @@ t_Open9xFrSkyData_v204::operator FrSkyData () return c9x; } -t_Open9xFrSkyData_v204::t_Open9xFrSkyData_v204(FrSkyData &c9x) -{ - memset(this, 0, sizeof(t_Open9xFrSkyData_v204)); - channels[0] = c9x.channels[0]; - channels[1] = c9x.channels[1]; - usrProto = c9x.usrProto; - imperial = c9x.imperial; - blades = c9x.blades; - for (int i=0; i<4; i++) - bars[i] = c9x.screens[0].body.bars[i]; -} - t_Open9xFrSkyData_v205::operator FrSkyData () { FrSkyData c9x; @@ -1716,21 +874,6 @@ t_Open9xFrSkyData_v205::operator FrSkyData () return c9x; } -t_Open9xFrSkyData_v205::t_Open9xFrSkyData_v205(FrSkyData &c9x) -{ - memset(this, 0, sizeof(t_Open9xFrSkyData_v205)); - channels[0] = c9x.channels[0]; - channels[1] = c9x.channels[1]; - usrProto = c9x.usrProto; - imperial = c9x.imperial; - blades = c9x.blades; - for (int i=0; i<4; i++) - bars[i] = c9x.screens[0].body.bars[i]; - rssiAlarms[0] = Open9xFrSkyRSSIAlarm(0, c9x.rssiAlarms[0]); - rssiAlarms[1] = Open9xFrSkyRSSIAlarm(1, c9x.rssiAlarms[1]); -} - - t_Open9xFrSkyData_v208::operator FrSkyData () { FrSkyData c9x; @@ -1748,21 +891,6 @@ t_Open9xFrSkyData_v208::operator FrSkyData () return c9x; } -t_Open9xFrSkyData_v208::t_Open9xFrSkyData_v208(FrSkyData &c9x) -{ - memset(this, 0, sizeof(t_Open9xFrSkyData_v208)); - channels[0] = c9x.channels[0]; - channels[1] = c9x.channels[1]; - usrProto = c9x.usrProto; - voltsSource = c9x.voltsSource; - blades = c9x.blades; - currentSource=c9x.currentSource; - for (int i=0; i<4; i++) - bars[i] = c9x.screens[0].body.bars[i]; - rssiAlarms[0] = Open9xFrSkyRSSIAlarm(0, c9x.rssiAlarms[0]); - rssiAlarms[1] = Open9xFrSkyRSSIAlarm(1, c9x.rssiAlarms[1]); -} - t_Open9xFrSkyData_v210::operator FrSkyData () { FrSkyData c9x; @@ -1798,40 +926,6 @@ t_Open9xFrSkyData_v210::operator FrSkyData () return c9x; } -t_Open9xFrSkyData_v210::t_Open9xFrSkyData_v210(FrSkyData &c9x) -{ - memset(this, 0, sizeof(t_Open9xFrSkyData_v210)); - channels[0] = c9x.channels[0]; - channels[1] = c9x.channels[1]; - usrProto = c9x.usrProto; - voltsSource = c9x.voltsSource; - blades = c9x.blades; - currentSource=c9x.currentSource; - - for (int scr=0; scr<2; scr++) { - if (c9x.screens[scr].type == 1) { - for (int i=0; i<4; i++) - bars[i] = c9x.screens[scr].body.bars[i]; - } - else { - linesXtra=0; - for (int j=0; j<4; j++) { - lines[j] = 0; - for (int k=0; k<2; k++) { - int value = c9x.screens[scr].body.lines[j].source[k]; - lines[j] |= (k==0 ? (value & 0x0f) : ((value & 0x0f) << 4)); - linesXtra |= (value / 16) << (4*j+2*k); - } - } - } - } - rssiAlarms[0] = Open9xFrSkyRSSIAlarm(0, c9x.rssiAlarms[0]); - rssiAlarms[1] = Open9xFrSkyRSSIAlarm(1, c9x.rssiAlarms[1]); - varioSource = c9x.varioSource; - varioSpeedUpMin = c9x.varioCenterMax; - varioSpeedDownMin = c9x.varioCenterMin; -} - t_Open9xModelData_v201::operator ModelData () { ModelData c9x; @@ -1881,7 +975,6 @@ t_Open9xModelData_v201::operator ModelData () c9x.expoData[i] = expoData[i]; for (int i=0; i= 0) { - phase.trim[j] = 501 + phase.trimRef[j] - (phase.trimRef[j] >= i ? 1 : 0); - } - else { - phase.trim[j] = std::max(-500, std::min(500, phase.trim[j])); - } - } - phaseData[i] = phase; - } - frsky = c9x.frsky; - ppmFrameLength = c9x.moduleData[0].ppmFrameLength; - thrTraceSrc = c9x.thrTraceSrc; - modelId=c9x.modelId; - } - else { - memset(this, 0, sizeof(t_Open9xModelData_v202)); - } -} - t_Open9xModelData_v203::operator ModelData () { ModelData c9x; @@ -2115,7 +1125,6 @@ t_Open9xModelData_v203::operator ModelData () c9x.expoData[i] = expoData[i]; for (int i=0; i= 0) { - phase.trim[j] = 501 + phase.trimRef[j] - (phase.trimRef[j] >= i ? 1 : 0); - } - else { - phase.trim[j] = std::max(-500, std::min(500, phase.trim[j])); - } - } - phaseData[i] = phase; - } - frsky = c9x.frsky; - ppmFrameLength = c9x.moduleData[0].ppmFrameLength; - thrTraceSrc = c9x.thrTraceSrc; - modelId = c9x.modelId; - } - else { - memset(this, 0, sizeof(t_Open9xModelData_v203)); - } -} - t_Open9xModelData_v204::operator ModelData () { ModelData c9x; @@ -2281,7 +1199,6 @@ t_Open9xModelData_v204::operator ModelData () c9x.expoData[i] = expoData[i]; for (int i=0; i= 0) { - phase.trim[j] = 501 + phase.trimRef[j] - (phase.trimRef[j] >= i ? 1 : 0); - } - else { - phase.trim[j] = std::max(-500, std::min(500, phase.trim[j])); - } - } - phaseData[i] = phase; - } - frsky = c9x.frsky; - ppmFrameLength = c9x.moduleData[0].ppmFrameLength; - thrTraceSrc = c9x.thrTraceSrc; - modelId = c9x.modelId; - frskyRssiAlarms[0] = Open9xFrSkyRSSIAlarm(0, c9x.frsky.rssiAlarms[0]); - frskyRssiAlarms[1] = Open9xFrSkyRSSIAlarm(1, c9x.frsky.rssiAlarms[1]); - } - else { - memset(this, 0, sizeof(t_Open9xModelData_v204)); - } -} - t_Open9xModelData_v205::operator ModelData () { ModelData c9x; @@ -2454,7 +1278,6 @@ t_Open9xModelData_v205::operator ModelData () c9x.expoData[i] = expoData[i]; for (int i=0; i= 0) { - phase.trim[j] = 501 + phase.trimRef[j] - (phase.trimRef[j] >= i ? 1 : 0); - } - else { - phase.trim[j] = std::max(-500, std::min(500, phase.trim[j])); - } - } - phaseData[i] = phase; - } - frsky = c9x.frsky; - ppmFrameLength = c9x.moduleData[0].ppmFrameLength; - thrTraceSrc = c9x.thrTraceSrc; - modelId = c9x.modelId; - frskyLinesXtra=0; - for (int j=0; j<4; j++) { - frskyLines[j] = 0; - for (int k=0; k<2; k++) { - int value = c9x.frsky.screens[1].body.lines[j].source[k]; - frskyLines[j] |= (k==0 ? (value & 0x0f) : ((value & 0x0f) << 4)); - frskyLinesXtra |= (value / 16) << (4*j+2*k); - } - } - } - else { - memset(this, 0, sizeof(t_Open9xModelData_v205)); - } -} - - t_Open9xModelData_v208::operator ModelData () { ModelData c9x; @@ -2645,7 +1364,6 @@ t_Open9xModelData_v208::operator ModelData () c9x.expoData[i] = expoData[i]; for (int i=0; i= 0) { - phase.trim[j] = 501 + phase.trimRef[j] - (phase.trimRef[j] >= i ? 1 : 0); - } - else { - phase.trim[j] = std::max(-500, std::min(500, phase.trim[j])); - } - } - phaseData[i] = phase; - } - frsky = c9x.frsky; - varioSource = c9x.frsky.varioSource; - varioSpeedUpMin = c9x.frsky.varioCenterMax; - varioSpeedDownMin = c9x.frsky.varioCenterMin; - - ppmFrameLength = c9x.moduleData[0].ppmFrameLength; - thrTraceSrc = c9x.thrTraceSrc; - modelId = c9x.modelId; - frskyLinesXtra=0; - for (int j=0; j<4; j++) { - frskyLines[j] = 0; - for (int k=0; k<2; k++) { - int value = c9x.frsky.screens[1].body.lines[j].source[k]; - frskyLines[j] |= (k==0 ? (value & 0x0f) : ((value & 0x0f) << 4)); - frskyLinesXtra |= (value / 16) << (4*j+2*k); - } - } - - for (int i=0; i= 0) { - phase.trim[j] = 501 + phase.trimRef[j] - (phase.trimRef[j] >= i ? 1 : 0); - } - else { - phase.trim[j] = std::max(-500, std::min(500, phase.trim[j])); - } - } - phaseData[i] = phase; - } - frsky = c9x.frsky; - varioSource = c9x.frsky.varioSource; - varioSpeedUpMin = c9x.frsky.varioCenterMax; - varioSpeedDownMin = c9x.frsky.varioCenterMin; - switchWarningStates = c9x.switchWarningStates; - - ppmFrameLength = c9x.moduleData[0].ppmFrameLength; - thrTraceSrc = c9x.thrTraceSrc; - modelId = c9x.modelId; - frskyLinesXtra=0; - for (int j=0; j<4; j++) { - frskyLines[j] = 0; - for (int k=0; k<2; k++) { - int value = c9x.frsky.screens[1].body.lines[j].source[k]; - frskyLines[j] |= (k==0 ? (value & 0x0f) : ((value & 0x0f) << 4)); - frskyLinesXtra |= (value / 16) << (4*j+2*k); - } - } - - for (int i=0; i O9X_NUM_POINTS - 5 * O9X_MAX_CURVES) { - EEPROMWarnings += ::QObject::tr("open9x only accepts %1 points in all curves").arg(O9X_NUM_POINTS) + "\n"; - break; - } - curves[i] = offset; - for (int j=0; j= 0) { - phase.trim[j] = 501 + phase.trimRef[j] - (phase.trimRef[j] >= i ? 1 : 0); - } - else { - phase.trim[j] = std::max(-500, std::min(500, phase.trim[j])); - } - } - phaseData[i] = phase; - } - frsky = c9x.frsky; - - switchWarningStates = c9x.switchWarningStates; - - ppmFrameLength = c9x.moduleData[0].ppmFrameLength; - thrTraceSrc = c9x.thrTraceSrc; - modelId = c9x.modelId; - - for (int i=0; i O9X_NUM_POINTS - 5 * O9X_MAX_CURVES) { - EEPROMWarnings += ::QObject::tr("open9x only accepts %1 points in all curves").arg(O9X_NUM_POINTS) + "\n"; - break; - } - curves[i] = offset; - for (int j=0; j= 0) { - phase.trim[j] = 501 + phase.trimRef[j] - (phase.trimRef[j] >= i ? 1 : 0); - } - else { - phase.trim[j] = std::max(-500, std::min(500, phase.trim[j])); - } - } - phaseData[i] = phase; - } - frsky = c9x.frsky; - - switchWarningStates = c9x.switchWarningStates; - - ppmFrameLength = c9x.moduleData[0].ppmFrameLength; - thrTraceSrc = c9x.thrTraceSrc; - modelId = c9x.modelId; - } -} diff --git a/companion/src/firmwares/opentx/open9xStockeeprom.h b/companion/src/firmwares/opentx/open9xStockeeprom.h index 46178281f..59bee09a9 100644 --- a/companion/src/firmwares/opentx/open9xStockeeprom.h +++ b/companion/src/firmwares/opentx/open9xStockeeprom.h @@ -65,7 +65,6 @@ PACK(typedef struct t_Open9xFrSkyRSSIAlarm { int8_t value:6; FrSkyRSSIAlarm get(int index); t_Open9xFrSkyRSSIAlarm() { memset(this, 0, sizeof(t_Open9xFrSkyRSSIAlarm)); } - t_Open9xFrSkyRSSIAlarm(int index, FrSkyRSSIAlarm&); }) Open9xFrSkyRSSIAlarm; PACK(typedef struct t_Open9xExpoData_v201 { @@ -80,8 +79,6 @@ PACK(typedef struct t_Open9xExpoData_v201 { operator ExpoData(); t_Open9xExpoData_v201() { memset(this, 0, sizeof(t_Open9xExpoData_v201)); } - t_Open9xExpoData_v201(ExpoData&); - }) Open9xExpoData_v201; PACK(typedef struct t_Open9xExpoData_v211 { @@ -95,8 +92,6 @@ PACK(typedef struct t_Open9xExpoData_v211 { operator ExpoData(); t_Open9xExpoData_v211() { memset(this, 0, sizeof(t_Open9xExpoData_v211)); } - t_Open9xExpoData_v211(ExpoData&); - }) Open9xExpoData_v211; PACK(typedef struct t_Open9xLimitData_v201 { @@ -107,8 +102,6 @@ PACK(typedef struct t_Open9xLimitData_v201 { operator LimitData(); t_Open9xLimitData_v201() { memset(this, 0, sizeof(t_Open9xLimitData_v201)); } - t_Open9xLimitData_v201(LimitData&); - }) Open9xLimitData_v201; PACK(typedef struct t_Open9xLimitData_v211 { @@ -121,8 +114,6 @@ PACK(typedef struct t_Open9xLimitData_v211 { operator LimitData(); t_Open9xLimitData_v211() { memset(this, 0, sizeof(t_Open9xLimitData_v211)); } - t_Open9xLimitData_v211(LimitData&); - }) Open9xLimitData_v211; PACK(typedef struct t_Open9xMixData_v201 { @@ -143,8 +134,6 @@ PACK(typedef struct t_Open9xMixData_v201 { operator MixData(); t_Open9xMixData_v201() { memset(this, 0, sizeof(t_Open9xMixData_v201)); } - t_Open9xMixData_v201(MixData&); - }) Open9xMixData_v201; PACK(typedef struct t_Open9xMixData_v203 { @@ -165,8 +154,6 @@ PACK(typedef struct t_Open9xMixData_v203 { operator MixData(); t_Open9xMixData_v203() { memset(this, 0, sizeof(t_Open9xMixData_v203)); } - t_Open9xMixData_v203(MixData&); - }) Open9xMixData_v203; PACK(typedef struct t_Open9xMixData_v205 { @@ -188,8 +175,6 @@ PACK(typedef struct t_Open9xMixData_v205 { operator MixData(); t_Open9xMixData_v205() { memset(this, 0, sizeof(t_Open9xMixData_v205)); } - t_Open9xMixData_v205(MixData&); - }) Open9xMixData_v205; PACK(typedef struct t_Open9xMixData_v209 { @@ -211,8 +196,6 @@ PACK(typedef struct t_Open9xMixData_v209 { operator MixData(); t_Open9xMixData_v209() { memset(this, 0, sizeof(t_Open9xMixData_v209)); } - t_Open9xMixData_v209(MixData&); - }) Open9xMixData_v209; PACK(typedef struct t_Open9xMixData_v211 { @@ -236,8 +219,6 @@ PACK(typedef struct t_Open9xMixData_v211 { operator MixData(); t_Open9xMixData_v211() { memset(this, 0, sizeof(t_Open9xMixData_v211)); } - t_Open9xMixData_v211(MixData&); - }) Open9xMixData_v211; PACK(typedef struct t_Open9xCustomSwData_v208 { // Custom Switches data @@ -257,7 +238,6 @@ PACK(typedef struct t_Open9xCustomSwData_v209 { // Custom Switches data operator CustomSwData(); t_Open9xCustomSwData_v209() { memset(this, 0, sizeof(t_Open9xCustomSwData_v209)); } - t_Open9xCustomSwData_v209(CustomSwData&); }) Open9xCustomSwData_v209; PACK(typedef struct t_Open9xSafetySwData { // Safety Switches data @@ -266,8 +246,6 @@ PACK(typedef struct t_Open9xSafetySwData { // Safety Switches data operator SafetySwData(); t_Open9xSafetySwData() { memset(this, 0, sizeof(t_Open9xSafetySwData)); } - t_Open9xSafetySwData(SafetySwData&); - }) Open9xSafetySwData; PACK(typedef struct t_Open9xFuncSwData_v201 { // Function Switches data @@ -276,8 +254,6 @@ PACK(typedef struct t_Open9xFuncSwData_v201 { // Function Switches data operator FuncSwData(); t_Open9xFuncSwData_v201() { memset(this, 0, sizeof(t_Open9xFuncSwData_v201)); } - t_Open9xFuncSwData_v201(FuncSwData&); - }) Open9xFuncSwData_v201; PACK(typedef struct t_Open9xFuncSwData_v203 { // Function Switches data @@ -287,8 +263,6 @@ PACK(typedef struct t_Open9xFuncSwData_v203 { // Function Switches data operator FuncSwData(); t_Open9xFuncSwData_v203() { memset(this, 0, sizeof(t_Open9xFuncSwData_v203)); } - t_Open9xFuncSwData_v203(FuncSwData&); - }) Open9xFuncSwData_v203; PACK(typedef struct t_Open9xFuncSwData_v210 { // Function Switches data @@ -299,8 +273,6 @@ PACK(typedef struct t_Open9xFuncSwData_v210 { // Function Switches data operator FuncSwData(); t_Open9xFuncSwData_v210() { memset(this, 0, sizeof(t_Open9xFuncSwData_v210)); } - t_Open9xFuncSwData_v210(FuncSwData&); - }) Open9xFuncSwData_v210; PACK(typedef struct t_Open9xFrSkyChannelData_v201 { @@ -316,8 +288,6 @@ PACK(typedef struct t_Open9xFrSkyChannelData_v201 { operator FrSkyChannelData(); t_Open9xFrSkyChannelData_v201() { memset(this, 0, sizeof(t_Open9xFrSkyChannelData_v201)); } - t_Open9xFrSkyChannelData_v201(FrSkyChannelData&); - }) Open9xFrSkyChannelData_v201; PACK(typedef struct t_Open9xFrSkyChannelData_v203 { @@ -333,8 +303,6 @@ PACK(typedef struct t_Open9xFrSkyChannelData_v203 { operator FrSkyChannelData(); t_Open9xFrSkyChannelData_v203() { memset(this, 0, sizeof(t_Open9xFrSkyChannelData_v203)); } - t_Open9xFrSkyChannelData_v203(FrSkyChannelData&); - }) Open9xFrSkyChannelData_v203; PACK(typedef struct t_Open9xFrSkyChannelData_v204 { @@ -348,8 +316,6 @@ PACK(typedef struct t_Open9xFrSkyChannelData_v204 { operator FrSkyChannelData(); t_Open9xFrSkyChannelData_v204() { memset(this, 0, sizeof(t_Open9xFrSkyChannelData_v204)); } - t_Open9xFrSkyChannelData_v204(FrSkyChannelData&); - }) Open9xFrSkyChannelData_v204; PACK(typedef struct t_Open9xFrSkyChannelData_v208 { @@ -363,37 +329,30 @@ PACK(typedef struct t_Open9xFrSkyChannelData_v208 { operator FrSkyChannelData(); t_Open9xFrSkyChannelData_v208() { memset(this, 0, sizeof(t_Open9xFrSkyChannelData_v208)); } - t_Open9xFrSkyChannelData_v208(FrSkyChannelData&); - }) Open9xFrSkyChannelData_v208; PACK(typedef struct t_Open9xFrSkyData_v201 { - Open9xFrSkyChannelData_v201 channels[2]; - - operator FrSkyData(); - t_Open9xFrSkyData_v201() { memset(this, 0, sizeof(t_Open9xFrSkyData_v201)); } + Open9xFrSkyChannelData_v201 channels[2]; + operator FrSkyData(); + t_Open9xFrSkyData_v201() { memset(this, 0, sizeof(t_Open9xFrSkyData_v201)); } }) Open9xFrSkyData_v201; PACK(typedef struct t_Open9xFrSkyData_v202 { - Open9xFrSkyChannelData_v201 channels[2]; - uint8_t usrProto:2; // Protocol in FrSky user data, 0=None, 1=FrSky hub, 2=WS HowHigh - uint8_t spare:6; - - operator FrSkyData(); - t_Open9xFrSkyData_v202() { memset(this, 0, sizeof(t_Open9xFrSkyData_v202)); } - t_Open9xFrSkyData_v202(FrSkyData&); + Open9xFrSkyChannelData_v201 channels[2]; + uint8_t usrProto:2; // Protocol in FrSky user data, 0=None, 1=FrSky hub, 2=WS HowHigh + uint8_t spare:6; + operator FrSkyData(); + t_Open9xFrSkyData_v202() { memset(this, 0, sizeof(t_Open9xFrSkyData_v202)); } }) Open9xFrSkyData_v202; PACK(typedef struct t_Open9xFrSkyData_v203 { - Open9xFrSkyChannelData_v203 channels[2]; - uint8_t usrProto; // Protocol in FrSky user data, 0=None, 1=FrSky hub, 2=WS HowHigh - - operator FrSkyData(); - t_Open9xFrSkyData_v203() { memset(this, 0, sizeof(t_Open9xFrSkyData_v203)); } - t_Open9xFrSkyData_v203(FrSkyData&); + Open9xFrSkyChannelData_v203 channels[2]; + uint8_t usrProto; // Protocol in FrSky user data, 0=None, 1=FrSky hub, 2=WS HowHigh + operator FrSkyData(); + t_Open9xFrSkyData_v203() { memset(this, 0, sizeof(t_Open9xFrSkyData_v203)); } }) Open9xFrSkyData_v203; PACK(typedef struct t_Open9xFrSkyBarData_v204 { @@ -403,8 +362,6 @@ PACK(typedef struct t_Open9xFrSkyBarData_v204 { operator FrSkyBarData(); t_Open9xFrSkyBarData_v204() { memset(this, 0, sizeof(t_Open9xFrSkyBarData_v204)); } - t_Open9xFrSkyBarData_v204(FrSkyBarData&); - }) Open9xFrSkyBarData_v204; PACK(typedef struct t_Open9xFrSkyData_v204 { @@ -417,7 +374,6 @@ PACK(typedef struct t_Open9xFrSkyData_v204 { operator FrSkyData(); t_Open9xFrSkyData_v204() { memset(this, 0, sizeof(t_Open9xFrSkyData_v204)); } - t_Open9xFrSkyData_v204(FrSkyData&); }) Open9xFrSkyData_v204; PACK(typedef struct t_Open9xFrSkyData_v205 { @@ -431,7 +387,6 @@ PACK(typedef struct t_Open9xFrSkyData_v205 { operator FrSkyData(); t_Open9xFrSkyData_v205() { memset(this, 0, sizeof(t_Open9xFrSkyData_v205)); } - t_Open9xFrSkyData_v205(FrSkyData&); }) Open9xFrSkyData_v205; PACK(typedef struct t_Open9xFrSkyData_v208 { @@ -445,7 +400,6 @@ PACK(typedef struct t_Open9xFrSkyData_v208 { operator FrSkyData(); t_Open9xFrSkyData_v208() { memset(this, 0, sizeof(t_Open9xFrSkyData_v208)); } - t_Open9xFrSkyData_v208(FrSkyData&); }) Open9xFrSkyData_v208; PACK(typedef struct t_Open9xFrSkyData_v210 { @@ -466,7 +420,6 @@ PACK(typedef struct t_Open9xFrSkyData_v210 { operator FrSkyData(); t_Open9xFrSkyData_v210() { memset(this, 0, sizeof(t_Open9xFrSkyData_v210)); } - t_Open9xFrSkyData_v210(FrSkyData&); }) Open9xFrSkyData_v210; PACK(typedef struct t_Open9xSwashRingData_v208 { // Swash Ring data @@ -479,8 +432,6 @@ PACK(typedef struct t_Open9xSwashRingData_v208 { // Swash Ring data operator SwashRingData(); t_Open9xSwashRingData_v208() { memset(this, 0, sizeof(t_Open9xSwashRingData_v208)); } - t_Open9xSwashRingData_v208(SwashRingData&); - }) Open9xSwashRingData_v208; PACK(typedef struct t_Open9xSwashRingData_v209 { // Swash Ring data @@ -493,8 +444,6 @@ PACK(typedef struct t_Open9xSwashRingData_v209 { // Swash Ring data operator SwashRingData(); t_Open9xSwashRingData_v209() { memset(this, 0, sizeof(t_Open9xSwashRingData_v209)); } - t_Open9xSwashRingData_v209(SwashRingData&); - }) Open9xSwashRingData_v209; PACK(typedef struct t_Open9xPhaseData_v201 { @@ -507,7 +456,6 @@ PACK(typedef struct t_Open9xPhaseData_v201 { operator PhaseData(); t_Open9xPhaseData_v201() { memset(this, 0, sizeof(t_Open9xPhaseData_v201)); } - t_Open9xPhaseData_v201(PhaseData &eepe); }) Open9xPhaseData_v201; PACK(typedef struct t_Open9xTimerData_v201 { @@ -526,7 +474,6 @@ PACK(typedef struct t_Open9xTimerData_v202 { operator TimerData(); t_Open9xTimerData_v202() { memset(this, 0, sizeof(t_Open9xTimerData_v202)); } - t_Open9xTimerData_v202(TimerData &eepe); }) Open9xTimerData_v202; PACK(typedef struct t_Open9xTimerDataExtra { @@ -579,8 +526,6 @@ PACK(typedef struct t_Open9xModelData_v201 { operator ModelData(); t_Open9xModelData_v201() { memset(this, 0, sizeof(t_Open9xModelData_v201)); } - t_Open9xModelData_v201(ModelData&); - }) Open9xModelData_v201; PACK(typedef struct t_Open9xModelData_v202 { @@ -615,8 +560,6 @@ PACK(typedef struct t_Open9xModelData_v202 { operator ModelData(); t_Open9xModelData_v202() { memset(this, 0, sizeof(t_Open9xModelData_v202)); } - t_Open9xModelData_v202(ModelData&); - }) Open9xModelData_v202; PACK(typedef struct t_Open9xModelData_v203 { @@ -650,8 +593,6 @@ PACK(typedef struct t_Open9xModelData_v203 { operator ModelData(); t_Open9xModelData_v203() { memset(this, 0, sizeof(t_Open9xModelData_v203)); } - t_Open9xModelData_v203(ModelData&); - }) Open9xModelData_v203; PACK(typedef struct t_Open9xModelData_v204 { @@ -686,8 +627,6 @@ PACK(typedef struct t_Open9xModelData_v204 { operator ModelData(); t_Open9xModelData_v204() { memset(this, 0, sizeof(t_Open9xModelData_v204)); } - t_Open9xModelData_v204(ModelData&); - }) Open9xModelData_v204; PACK(typedef struct t_Open9xModelData_v205 { @@ -723,8 +662,6 @@ PACK(typedef struct t_Open9xModelData_v205 { operator ModelData(); t_Open9xModelData_v205() { memset(this, 0, sizeof(t_Open9xModelData_v205)); } - t_Open9xModelData_v205(ModelData&); - }) Open9xModelData_v205; PACK(typedef struct t_Open9xModelData_v208 { @@ -764,8 +701,6 @@ PACK(typedef struct t_Open9xModelData_v208 { operator ModelData(); t_Open9xModelData_v208() { memset(this, 0, sizeof(t_Open9xModelData_v208)); } - t_Open9xModelData_v208(ModelData&); - }) Open9xModelData_v208; PACK(typedef struct t_Open9xModelData_v209 { @@ -806,8 +741,6 @@ PACK(typedef struct t_Open9xModelData_v209 { operator ModelData(); t_Open9xModelData_v209() { memset(this, 0, sizeof(t_Open9xModelData_v209)); } - t_Open9xModelData_v209(ModelData&); - }) Open9xModelData_v209; PACK(typedef struct t_Open9xModelData_v210 { @@ -846,8 +779,6 @@ PACK(typedef struct t_Open9xModelData_v210 { operator ModelData(); t_Open9xModelData_v210() { memset(this, 0, sizeof(t_Open9xModelData_v210)); } - t_Open9xModelData_v210(ModelData&); - }) Open9xModelData_v210; PACK(typedef struct t_Open9xModelData_v211 { @@ -884,8 +815,6 @@ PACK(typedef struct t_Open9xModelData_v211 { operator ModelData(); t_Open9xModelData_v211() { memset(this, 0, sizeof(t_Open9xModelData_v211)); } - t_Open9xModelData_v211(ModelData&); - }) Open9xModelData_v211; #endif diff --git a/companion/src/firmwares/opentx/open9xGruvin9xsimulator.cpp b/companion/src/firmwares/opentx/opentxGruvin9xsimulator.cpp similarity index 97% rename from companion/src/firmwares/opentx/open9xGruvin9xsimulator.cpp rename to companion/src/firmwares/opentx/opentxGruvin9xsimulator.cpp index 9cb478b16..646043839 100644 --- a/companion/src/firmwares/opentx/open9xGruvin9xsimulator.cpp +++ b/companion/src/firmwares/opentx/opentxGruvin9xsimulator.cpp @@ -14,9 +14,9 @@ * */ -#include "open9xGruvin9xsimulator.h" -#include "open9xinterface.h" -#include "open9xeeprom.h" +#include "opentxGruvin9xsimulator.h" +#include "opentxinterface.h" +#include "opentxeeprom.h" #define SIMU #define SIMU_EXCEPTIONS diff --git a/companion/src/firmwares/opentx/open9xGruvin9xsimulator.h b/companion/src/firmwares/opentx/opentxGruvin9xsimulator.h similarity index 100% rename from companion/src/firmwares/opentx/open9xGruvin9xsimulator.h rename to companion/src/firmwares/opentx/opentxGruvin9xsimulator.h diff --git a/companion/src/firmwares/opentx/open9xM128simulator.cpp b/companion/src/firmwares/opentx/opentxM128simulator.cpp similarity index 97% rename from companion/src/firmwares/opentx/open9xM128simulator.cpp rename to companion/src/firmwares/opentx/opentxM128simulator.cpp index a82b53b0c..505c05fe3 100644 --- a/companion/src/firmwares/opentx/open9xM128simulator.cpp +++ b/companion/src/firmwares/opentx/opentxM128simulator.cpp @@ -14,9 +14,9 @@ * */ -#include "open9xM128simulator.h" -#include "open9xinterface.h" -#include "open9xeeprom.h" +#include "opentxM128simulator.h" +#include "opentxinterface.h" +#include "opentxeeprom.h" #define SIMU #define SIMU_EXCEPTIONS diff --git a/companion/src/firmwares/opentx/open9xM128simulator.h b/companion/src/firmwares/opentx/opentxM128simulator.h similarity index 100% rename from companion/src/firmwares/opentx/open9xM128simulator.h rename to companion/src/firmwares/opentx/opentxM128simulator.h diff --git a/companion/src/firmwares/opentx/open9xSky9xsimulator.cpp b/companion/src/firmwares/opentx/opentxSky9xsimulator.cpp similarity index 98% rename from companion/src/firmwares/opentx/open9xSky9xsimulator.cpp rename to companion/src/firmwares/opentx/opentxSky9xsimulator.cpp index d724028ec..1b4d42793 100644 --- a/companion/src/firmwares/opentx/open9xSky9xsimulator.cpp +++ b/companion/src/firmwares/opentx/opentxSky9xsimulator.cpp @@ -14,8 +14,8 @@ * */ -#include "open9xSky9xsimulator.h" -#include "open9xinterface.h" +#include "opentxSky9xsimulator.h" +#include "opentxinterface.h" #define SIMU #define SIMU_EXCEPTIONS diff --git a/companion/src/firmwares/opentx/open9xSky9xsimulator.h b/companion/src/firmwares/opentx/opentxSky9xsimulator.h similarity index 100% rename from companion/src/firmwares/opentx/open9xSky9xsimulator.h rename to companion/src/firmwares/opentx/opentxSky9xsimulator.h diff --git a/companion/src/firmwares/opentx/opentxTaranisSimulator.cpp b/companion/src/firmwares/opentx/opentxTaranisSimulator.cpp index 6f216273a..e48cbf9af 100644 --- a/companion/src/firmwares/opentx/opentxTaranisSimulator.cpp +++ b/companion/src/firmwares/opentx/opentxTaranisSimulator.cpp @@ -15,7 +15,7 @@ */ #include "opentxTaranisSimulator.h" -#include "open9xinterface.h" +#include "opentxinterface.h" #define SIMU #define SIMU_EXCEPTIONS diff --git a/companion/src/firmwares/opentx/open9xeeprom.cpp b/companion/src/firmwares/opentx/opentxeeprom.cpp similarity index 88% rename from companion/src/firmwares/opentx/open9xeeprom.cpp rename to companion/src/firmwares/opentx/opentxeeprom.cpp index 1fc5db454..b97be920c 100644 --- a/companion/src/firmwares/opentx/open9xeeprom.cpp +++ b/companion/src/firmwares/opentx/opentxeeprom.cpp @@ -1,7 +1,7 @@ #include #include #include "helpers.h" -#include "open9xeeprom.h" +#include "opentxeeprom.h" #include #define IS_DBLEEPROM(board, version) ((board==BOARD_GRUVIN9X || board==BOARD_M128) && version >= 213) @@ -18,10 +18,11 @@ #define MAX_PHASES(board, version) (IS_ARM(board) ? 9 : (IS_DBLRAM(board, version) ? 6 : 5)) #define MAX_MIXERS(board, version) (IS_ARM(board) ? 64 : 32) #define MAX_CHANNELS(board, version) (IS_ARM(board) ? 32 : 16) -#define MAX_EXPOS(board, version) (IS_ARM(board) ? 32 : (IS_DBLRAM(board, version) ? 16 : 14)) +#define MAX_EXPOS(board, version) (IS_ARM(board) ? ((IS_TARANIS(board) && version >= 216) ? 64 : 32) : (IS_DBLRAM(board, version) ? 16 : 14)) #define MAX_CUSTOM_SWITCHES(board, version) (IS_ARM(board) ? 32 : (IS_DBLEEPROM(board, version) ? 15 : 12)) #define MAX_CUSTOM_FUNCTIONS(board, version) (IS_ARM(board) ? 32 : (IS_DBLEEPROM(board, version) ? 24 : 16)) -#define MAX_CURVES(board) (IS_ARM(board) ? O9X_ARM_MAX_CURVES : O9X_MAX_CURVES) +#define MAX_CURVES(board, version) (IS_ARM(board) ? ((IS_TARANIS(board) && version >= 216) ? 32 : 16) : O9X_MAX_CURVES) +#define MAX_GVARS(board, version) ((IS_ARM(board) && version >= 216) ? 9 : 5) #define IS_RELEASE_21_MARCH_2013(board, version) (version >= 214 || (!IS_ARM(board) && version >= 213)) #define IS_RELEASE_23_MARCH_2013(board, version) (version >= 214 || (board==BOARD_STOCK && version >= 213)) @@ -352,6 +353,15 @@ class SourceField: public ConversionField< UnsignedField > { unsigned int _source; }; +class CurveReferenceField: public StructField { + public: + CurveReferenceField(CurveReference & curve, BoardEnum board, unsigned int version) + { + Append(new UnsignedField<8>((unsigned int &)curve.type)); + Append(new SignedField<8>(curve.value)); + } +}; + class HeliField: public StructField { public: HeliField(SwashRingData & heli, BoardEnum board, unsigned int version, unsigned int variant) @@ -409,7 +419,7 @@ class PhaseField: public TransformedField { } if (board != BOARD_STOCK && (board != BOARD_M128 || version < 215)) { - for (int i=0; i(phase.gvars[i])); } } @@ -595,7 +605,25 @@ class MixField: public TransformedField { board(board), version(version) { - if (IS_ARM(board)) { + if (IS_TARANIS(board) && version >= 216) { + internalField.Append(new UnsignedField<8>(_destCh)); + internalField.Append(new UnsignedField<16>(mix.phases)); + internalField.Append(new UnsignedField<8>((unsigned int &)mix.mltpx)); + internalField.Append(new SignedField<16>(_weight)); + internalField.Append(new SwitchField<8>(mix.swtch, board, version)); + internalField.Append(new CurveReferenceField(mix.curve, board, version)); + internalField.Append(new UnsignedField<4>(mix.mixWarn)); + internalField.Append(new UnsignedField<4>(mix.srcVariant)); + internalField.Append(new UnsignedField<8>(mix.delayUp)); + internalField.Append(new UnsignedField<8>(mix.delayDown)); + internalField.Append(new UnsignedField<8>(mix.speedUp)); + internalField.Append(new UnsignedField<8>(mix.speedDown)); + internalField.Append(new SourceField<8>(mix.srcRaw, board, version, FLAG_NOTELEMETRY)); + internalField.Append(new SignedField<16>(_offset)); + internalField.Append(new ZCharField<8>(mix.name)); + internalField.Append(new SpareBitsField<8>()); + } + else if (IS_ARM(board)) { internalField.Append(new UnsignedField<8>(_destCh)); internalField.Append(new UnsignedField<16>(mix.phases)); internalField.Append(new BoolField<1>(_curveMode)); @@ -680,8 +708,18 @@ class MixField: public TransformedField { { if (mix.destCh && mix.srcRaw.type != SOURCE_TYPE_NONE) { _destCh = mix.destCh - 1; - _curveMode = mix.curve; - _curveParam = (mix.curve ? mix.curve : smallGvarToEEPROM(mix.differential)); + if (mix.curve.type == CurveReference::CURVE_REF_CUSTOM) { + _curveMode = true; + _curveParam = 6 + mix.curve.value; + } + else if (mix.curve.type == CurveReference::CURVE_REF_FUNC) { + _curveMode = true; + _curveParam = mix.curve.value; + } + else if (mix.curve.type == CurveReference::CURVE_REF_DIFF) { + _curveMode = 0; + _curveParam = smallGvarToEEPROM(mix.curve.value); + } } else { mix.clear(); @@ -707,12 +745,14 @@ class MixField: public TransformedField { { if (mix.srcRaw.type != SOURCE_TYPE_NONE) { mix.destCh = _destCh + 1; - mix.curve = 0; - mix.differential = 0; - if (_curveMode) - mix.curve = _curveParam; - else - mix.differential = smallGvarToC9x(_curveParam); + if (!IS_ARM(board) || version < 216) { + if (!_curveMode) + mix.curve = CurveReference(CurveReference::CURVE_REF_DIFF, smallGvarToC9x(_curveParam)); + else if (_curveParam > 6) + mix.curve = CurveReference(CurveReference::CURVE_REF_CUSTOM, _curveParam-6); + else + mix.curve = CurveReference(CurveReference::CURVE_REF_FUNC, _curveParam); + } } if (IS_ARM(board)) { @@ -748,22 +788,30 @@ class ExpoField: public TransformedField { TransformedField(internalField), internalField("Expo"), expo(expo), - board(board) + board(board), + version(version) { - if (IS_ARM(board)) { + if (IS_TARANIS(board) && version >= 216) { + internalField.Append(new SourceField<8>(expo.srcRaw, board, version, 0)); + internalField.Append(new UnsignedField<16>(expo.scale)); + internalField.Append(new UnsignedField<8>(expo.chn)); + internalField.Append(new SwitchField<8>(expo.swtch, board, version)); + internalField.Append(new UnsignedField<16>(expo.phases)); + internalField.Append(new SignedField<8>(_weight)); + internalField.Append(new SignedField<8>(expo.carryTrim)); + internalField.Append(new ZCharField<8>(expo.name)); + internalField.Append(new SignedField<8>(expo.offset)); + internalField.Append(new CurveReferenceField(expo.curve, board, version)); + internalField.Append(new SpareBitsField<8>()); + } + else if (IS_ARM(board)) { internalField.Append(new UnsignedField<8>(expo.mode)); internalField.Append(new UnsignedField<8>(expo.chn)); internalField.Append(new SwitchField<8>(expo.swtch, board, version)); internalField.Append(new UnsignedField<16>(expo.phases)); internalField.Append(new SignedField<8>(_weight)); internalField.Append(new BoolField<8>(_curveMode)); - if (HAS_LARGE_LCD(board)) { - internalField.Append(new ZCharField<8>(expo.name)); - internalField.Append(new SpareBitsField<16>()); - } - else { - internalField.Append(new ZCharField<6>(expo.name)); - } + internalField.Append(new ZCharField<6>(expo.name)); internalField.Append(new SignedField<8>(_curveParam)); } else if (IS_DBLRAM(board, version) && IS_RELEASE_23_MARCH_2013(board, version)) { @@ -789,22 +837,41 @@ class ExpoField: public TransformedField { virtual void beforeExport() { - _curveMode = (expo.curveMode && expo.curveParam); _weight = smallGvarToEEPROM(expo.weight); - _curveParam = smallGvarToEEPROM(expo.curveParam); + if (!IS_TARANIS(board) || version < 216) { + if (expo.curve.type==CurveReference::CURVE_REF_FUNC && expo.curve.value) { + _curveMode = true; + _curveParam = expo.curve.value; + } + else if (expo.curve.type==CurveReference::CURVE_REF_CUSTOM && expo.curve.value) { + _curveMode = true; + _curveParam = expo.curve.value+6; + } + else { + _curveMode = false; + _curveParam = smallGvarToEEPROM(expo.curve.value); + } + } } virtual void afterImport() { - expo.curveMode = _curveMode; expo.weight = smallGvarToC9x(_weight); - expo.curveParam = smallGvarToC9x(_curveParam); + if (!IS_TARANIS(board) || version < 216) { + if (!_curveMode) + expo.curve = CurveReference(CurveReference::CURVE_REF_EXPO, smallGvarToC9x(_curveParam)); + else if (_curveParam > 6) + expo.curve = CurveReference(CurveReference::CURVE_REF_CUSTOM, _curveParam-6); + else + expo.curve = CurveReference(CurveReference::CURVE_REF_FUNC, _curveParam); + } } protected: StructField internalField; ExpoData & expo; BoardEnum board; + unsigned int version; bool _curveMode; int _weight; int _curveParam; @@ -812,36 +879,55 @@ class ExpoField: public TransformedField { class LimitField: public StructField { public: - LimitField(LimitData & limit, BoardEnum board): + LimitField(LimitData & limit, BoardEnum board, unsigned int version): StructField("Limit") { - Append(new ConversionField< SignedField<8> >(limit.min, +100)); - Append(new ConversionField< SignedField<8> >(limit.max, -100)); + if (IS_ARM(board) && version >= 216) { + Append(new ConversionField< SignedField<16> >(limit.min, +1000)); + Append(new ConversionField< SignedField<16> >(limit.max, -1000)); + } + else { + Append(new ConversionField< SignedField<8> >(limit.min, +100)); + Append(new ConversionField< SignedField<8> >(limit.max, -100)); + } Append(new SignedField<8>(limit.ppmCenter)); Append(new SignedField<14>(limit.offset)); Append(new BoolField<1>(limit.symetrical)); Append(new BoolField<1>(limit.revert)); - if (HAS_LARGE_LCD(board)) + if (HAS_LARGE_LCD(board)) { Append(new ZCharField<6>(limit.name)); + } + if (IS_TARANIS(board) && version >= 216) { + Append(new SignedField<8>(limit.curve.value)); + } } }; class CurvesField: public TransformedField { public: - CurvesField(CurveData * curves, BoardEnum board): + CurvesField(CurveData * curves, BoardEnum board, unsigned int version): TransformedField(internalField), internalField("Curves"), curves(curves), board(board), - maxCurves(MAX_CURVES(board)), + maxCurves(MAX_CURVES(board, version)), maxPoints(IS_ARM(board) ? O9X_ARM_NUM_POINTS : O9X_NUM_POINTS) { for (int i=0; i= 216) { + internalField.Append(new UnsignedField<3>((unsigned int &)curves[i].type)); + internalField.Append(new BoolField<1>(curves[i].smooth)); + internalField.Append(new SpareBitsField<4>()); + internalField.Append(new ConversionField< SignedField<8> >(curves[i].count, -5)); + } + else if (IS_ARM(board)) { internalField.Append(new SignedField<16>(_curves[i])); - else + } + else { internalField.Append(new SignedField<8>(_curves[i])); + } } + for (int i=0; i(_points[i])); } @@ -855,7 +941,7 @@ class CurvesField: public TransformedField { int offset = 0; for (int i=0; icustom ? curve->count * 2 - 2 : curve->count) - 5; + offset += (curve->type == CurveData::CURVE_TYPE_CUSTOM ? curve->count * 2 - 2 : curve->count) - 5; if (offset > maxPoints - 5 * maxCurves) { EEPROMWarnings += ::QObject::tr("openTx only accepts %1 points in all curves").arg(maxPoints) + "\n"; break; @@ -864,7 +950,7 @@ class CurvesField: public TransformedField { for (int j=0; jcount; j++) { *cur++ = curve->points[j].y; } - if (curve->custom) { + if (curve->type == CurveData::CURVE_TYPE_CUSTOM) { for (int j=1; jcount-1; j++) { *cur++ = curve->points[j].x; } @@ -881,15 +967,15 @@ class CurvesField: public TransformedField { int size = next - cur; if (size % 2 == 0) { curve->count = (size / 2) + 1; - curve->custom = true; + curve->type = CurveData::CURVE_TYPE_CUSTOM; } else { curve->count = size; - curve->custom = false; + curve->type = CurveData::CURVE_TYPE_STANDARD; } for (int j=0; jcount; j++) curve->points[j].y = cur[j]; - if (curve->custom) { + if (curve->type == CurveData::CURVE_TYPE_CUSTOM) { curve->points[0].x = -100; for (int j=1; jcount-1; j++) curve->points[j].x = cur[curve->count+j-1]; @@ -908,8 +994,8 @@ class CurvesField: public TransformedField { BoardEnum board; int maxCurves; int maxPoints; - int _curves[O9X_ARM_MAX_CURVES]; - int _points[O9X_ARM_NUM_POINTS]; + int _curves[C9X_MAX_CURVES]; + int _points[C9X_MAX_CURVES*C9X_MAX_POINTS*2]; }; class CustomSwitchesFunctionsTable: public ConversionTable { @@ -1551,7 +1637,14 @@ class FrskyField: public StructField { Append(new UnsignedField<8>(frsky.channels[i].multiplier, 0, 5, "Multiplier")); } Append(new UnsignedField<8>(frsky.usrProto)); - Append(new UnsignedField<8>(frsky.voltsSource)); + if (version >= 216) { + Append(new UnsignedField<7>(frsky.voltsSource)); + // TODO altitude displayed + Append(new SpareBitsField<1>()); + } + else { + Append(new UnsignedField<8>(frsky.voltsSource)); + } Append(new UnsignedField<8>(frsky.blades)); Append(new UnsignedField<8>(frsky.currentSource)); @@ -1575,6 +1668,12 @@ class FrskyField: public StructField { Append(new ConversionField< UnsignedField<2> >(frsky.rssiAlarms[i].level, &rssiConversionTable[i], "RSSI")); Append(new ConversionField< SignedField<6> >(frsky.rssiAlarms[i].value, -45+i*3)); } + if (version >= 216) { + // TODO uint16_t mAhPersistent:1; + // uint16_t storedMah:15; + // int8_t fasOffset; + Append(new SpareBitsField<24>()); + } } else { for (int i=0; i<2; i++) { @@ -1607,6 +1706,10 @@ class FrskyField: public StructField { Append(new SignedField<5>(frsky.varioCenterMin)); Append(new UnsignedField<3>(frsky.currentSource)); Append(new SignedField<8>(frsky.varioCenterMax)); + if (version >= 216) { + // TODO int8_t fasOffset; + Append(new SpareBitsField<8>()); + } } } @@ -1658,9 +1761,16 @@ Open9xModelDataNew::Open9xModelDataNew(ModelData & modelData, BoardEnum board, u for (int i=0; i= 216) { + internalField.Append(new UnsignedField<16>(modelData.timers[i].val)); + internalField.Append(new BoolField<2>(modelData.timers[i].countdownBeep)); + internalField.Append(new BoolField<1>(modelData.timers[i].minuteBeep)); + internalField.Append(new BoolField<1>(modelData.timers[i].persistent)); + internalField.Append(new SpareBitsField<4>()); + internalField.Append(new SignedField<16>(modelData.timers[i].pvalue)); + } + else if (release21March2013) { internalField.Append(new UnsignedField<12>(modelData.timers[i].val)); - internalField.Append(new BoolField<1>(modelData.timers[i].countdownBeep)); internalField.Append(new BoolField<1>(modelData.timers[i].minuteBeep)); if (HAS_PERSISTENT_TIMERS(board)) { @@ -1688,7 +1798,7 @@ Open9xModelDataNew::Open9xModelDataNew(ModelData & modelData, BoardEnum board, u internalField.Append(new BoolField<1>(modelData.thrTrim)); - if (IS_TARANIS(board)) + if (IS_TARANIS(board) || (IS_ARM(board) && version >= 216)) internalField.Append(new SpareBitsField<4>()); else internalField.Append(new ConversionField< SignedField<4> >(modelData.moduleData[0].channelsCount, &channelsConversionTable, "Channels number", ::QObject::tr("OpenTX doesn't allow this number of channels"))); @@ -1696,7 +1806,7 @@ Open9xModelDataNew::Open9xModelDataNew(ModelData & modelData, BoardEnum board, u internalField.Append(new UnsignedField<3>(modelData.trimInc)); internalField.Append(new BoolField<1>(modelData.disableThrottleWarning)); - if (IS_TARANIS(board)) + if (IS_TARANIS(board) || (IS_ARM(board) && version >= 216)) internalField.Append(new SpareBitsField<1>()); else internalField.Append(new BoolField<1>(modelData.moduleData[0].ppmPulsePol)); @@ -1704,7 +1814,10 @@ Open9xModelDataNew::Open9xModelDataNew(ModelData & modelData, BoardEnum board, u internalField.Append(new BoolField<1>(modelData.extendedLimits)); internalField.Append(new BoolField<1>(modelData.extendedTrims)); internalField.Append(new BoolField<1>(modelData.throttleReversed)); - internalField.Append(new ConversionField< SignedField<8> >(modelData.moduleData[0].ppmDelay, exportPpmDelay, importPpmDelay)); + + if (!IS_ARM(board) || version < 216) { + internalField.Append(new ConversionField< SignedField<8> >(modelData.moduleData[0].ppmDelay, exportPpmDelay, importPpmDelay)); + } if (IS_ARM(board) || board==BOARD_GRUVIN9X) internalField.Append(new UnsignedField<16>(modelData.beepANACenter)); @@ -1714,10 +1827,10 @@ Open9xModelDataNew::Open9xModelDataNew(ModelData & modelData, BoardEnum board, u for (int i=0; i(modelData.moduleData[0].ppmFrameLength)); + + if (!IS_ARM(board) || version < 216) { + internalField.Append(new SignedField<8>(modelData.moduleData[0].ppmFrameLength)); + } + internalField.Append(new UnsignedField<8>(modelData.thrTraceSrc)); - if (!release21March2013) + if (!release21March2013) { internalField.Append(new UnsignedField<8>(modelData.modelId)); + } if (IS_TARANIS(board)) internalField.Append(new UnsignedField<16>(modelData.switchWarningStates)); @@ -1737,15 +1855,19 @@ Open9xModelDataNew::Open9xModelDataNew(ModelData & modelData, BoardEnum board, u internalField.Append(new SwitchesWarningField<8>(modelData.switchWarningStates, board, version)); if ((board == BOARD_STOCK || (board == BOARD_M128 && version >= 215)) && (variant & GVARS_VARIANT)) { - for (int i=0; i(modelData.phaseData[0].gvars[i])); } } if (board != BOARD_STOCK && (board != BOARD_M128 || version < 215)) { - for (int i=0; i(modelData.gvars_names[i])); + if (version >= 216) { + internalField.Append(new BoolField<1>(modelData.gvars_popups[i])); + internalField.Append(new SpareBitsField<7>()); + } } } @@ -1783,10 +1905,17 @@ Open9xModelDataNew::Open9xModelDataNew(ModelData & modelData, BoardEnum board, u } if (IS_TARANIS(board)) { - for (int i=0; i(modelData.curves[i].name)); } } + + if (IS_TARANIS(board) && version >= 216) { + // TODO ScriptData scriptsData[MAX_SCRIPTS]; + internalField.Append(new SpareBitsField<720>()); + // TODO char inputNames[MAX_INPUTS][4]; + internalField.Append(new SpareBitsField<1024>()); + } } void Open9xModelDataNew::beforeExport() diff --git a/companion/src/firmwares/opentx/open9xeeprom.h b/companion/src/firmwares/opentx/opentxeeprom.h similarity index 98% rename from companion/src/firmwares/opentx/open9xeeprom.h rename to companion/src/firmwares/opentx/opentxeeprom.h index 29385f66b..363c46677 100644 --- a/companion/src/firmwares/opentx/open9xeeprom.h +++ b/companion/src/firmwares/opentx/opentxeeprom.h @@ -42,7 +42,6 @@ #define O9X_NUM_FSW 16 // number of functions assigned to switches #define O9X_MAX_CURVES 8 #define O9X_NUM_POINTS (112-O9X_MAX_CURVES) -#define O9X_MAX_GVARS 5 #define O9X_ARM_MAX_PHASES 9 #define O9X_ARM_MAX_MIXERS 64 @@ -50,7 +49,6 @@ #define O9X_ARM_NUM_CHNOUT 32 // number of real output channels CH1-CH16 #define O9X_ARM_NUM_CSW 32 // number of custom switches #define O9X_ARM_NUM_FSW 32 // number of functions assigned to switches -#define O9X_ARM_MAX_CURVES 16 #define O9X_ARM_NUM_POINTS 512 #define O9X_ARM_MAX_CSFUNCOLD 13 #define O9X_ARM_MAX_CSFUNC 15 diff --git a/companion/src/firmwares/opentx/open9xinterface.cpp b/companion/src/firmwares/opentx/opentxinterface.cpp similarity index 92% rename from companion/src/firmwares/opentx/open9xinterface.cpp rename to companion/src/firmwares/opentx/opentxinterface.cpp index 2e8b00565..1b201945c 100644 --- a/companion/src/firmwares/opentx/open9xinterface.cpp +++ b/companion/src/firmwares/opentx/opentxinterface.cpp @@ -16,14 +16,14 @@ #include #include -#include "open9xinterface.h" -#include "open9xeeprom.h" +#include "opentxinterface.h" +#include "opentxeeprom.h" #include "open9xGruvin9xeeprom.h" #include "open9xSky9xeeprom.h" -#include "open9xsimulator.h" -#include "open9xM128simulator.h" -#include "open9xGruvin9xsimulator.h" -#include "open9xSky9xsimulator.h" +#include "opentxsimulator.h" +#include "opentxM128simulator.h" +#include "opentxGruvin9xsimulator.h" +#include "opentxSky9xsimulator.h" #include "opentxTaranisSimulator.h" #include "file.h" @@ -278,15 +278,7 @@ bool Open9xInterface::saveGeneral(GeneralSettings &settings, BoardEnum board, ui } template -bool Open9xInterface::saveModel(unsigned int index, ModelData &model) -{ - T open9xModel(model); - int sz = efile->writeRlc2(FILE_MODEL(index), FILE_TYP_MODEL, (uint8_t*)&open9xModel, sizeof(T)); - return (sz == sizeof(T)); -} - -template -bool Open9xInterface::saveModelVariant(unsigned int index, ModelData &model, unsigned int version, unsigned int variant) +bool Open9xInterface::saveModel(unsigned int index, ModelData &model, unsigned int version, unsigned int variant) { T open9xModel(model, board, version, variant); // open9xModel.Dump(); @@ -371,16 +363,16 @@ int Open9xInterface::save(uint8_t *eeprom, RadioData &radioData, uint32_t varian case BOARD_TARANIS: case BOARD_TARANIS_REV4a: case BOARD_SKY9X: - version = 215; + version = 216; break; case BOARD_GRUVIN9X: - version = 214; + version = 216; break; case BOARD_M128: - version = 215; + version = 216; break; case BOARD_STOCK: - version = 213; + version = 216; break; } } @@ -389,81 +381,21 @@ int Open9xInterface::save(uint8_t *eeprom, RadioData &radioData, uint32_t varian efile->EeFsCreate(eeprom, size, board); - int result = 0; - if (board == BOARD_M128) { variant |= M128_VARIANT; } - result = saveGeneral(radioData.generalSettings, board, version, variant); - - if (!result) + int result = saveGeneral(radioData.generalSettings, board, version, variant); + if (!result) { return 0; + } for (int i=0; i(i, radioData.models[i]); - break; - case 203: - result = saveModel(i, radioData.models[i]); - break; - case 204: - result = saveModel(i, radioData.models[i]); - break; - case 205: - result = saveModel(i, radioData.models[i]); - break; - case 207: - if (board == BOARD_GRUVIN9X) - result = saveModel(i, radioData.models[i]); - break; - case 208: - if (board == BOARD_GRUVIN9X) - result = saveModel(i, radioData.models[i]); - else if (board == BOARD_SKY9X) - result = saveModel(i, radioData.models[i]); - else - result = saveModel(i, radioData.models[i]); - break; - case 209: - if (board == BOARD_GRUVIN9X) - result = saveModel(i, radioData.models[i]); - else if (board == BOARD_SKY9X) - result = saveModel(i, radioData.models[i]); - else - result = saveModel(i, radioData.models[i]); - break; - case 210: - if (board == BOARD_GRUVIN9X) - result = saveModel(i, radioData.models[i]); - else if (board == BOARD_SKY9X) - result = saveModel(i, radioData.models[i]); - else - result = saveModel(i, radioData.models[i]); - break; - case 211: - if (board == BOARD_GRUVIN9X) - result = saveModel(i, radioData.models[i]); - else if (board == BOARD_SKY9X) - result = saveModel(i, radioData.models[i]); - else - result = saveModel(i, radioData.models[i]); - break; - case 212: - if (board == BOARD_SKY9X) - result = saveModel(i, radioData.models[i]); - else - result = saveModelVariant(i, radioData.models[i], version, variant); - break; - default: - result = saveModelVariant(i, radioData.models[i], version, variant); - break; + result = saveModel(i, radioData.models[i], version, variant); + if (!result) { + return 0; } - if (!result) - return false; } } @@ -565,13 +497,12 @@ int Open9xInterface::getCapability(const Capability capability) case FlightPhasesHaveFades: return 1; case Gvars: - return 5; + return IS_ARM(board) ? 9 : 5; case FlightModesName: case GvarsName: return (IS_TARANIS(board) ? 10 : 6); case GvarsInCS: case GvarsAsWeight: - case ExpoIsCurve: case HasFAIMode: return 1; case GvarsAreNamed: @@ -667,13 +598,6 @@ int Open9xInterface::getCapability(const Capability capability) return 0; case ExtraInputs: return 1; - case HasNegCurves: - return 1; - case HasExpoCurves: - return true; - case ExpoCurve5: - case ExpoCurve9: - return 4; case ExtendedTrims: return 500; case ExtraTrims: @@ -684,8 +608,6 @@ int Open9xInterface::getCapability(const Capability capability) return 1; case FSSwitch: return 1; - case CustomCurves: - return 1; case MixesWithoutExpo: return 1; case NumCurves: @@ -732,8 +654,6 @@ int Open9xInterface::getCapability(const Capability capability) return 1; case TelemetryMaxMultiplier: return (IS_ARM(board) ? 32 : 8); - case DiffMixers: - return 1; case PPMCenter: return 1; case SYMLimits: diff --git a/companion/src/firmwares/opentx/open9xinterface.h b/companion/src/firmwares/opentx/opentxinterface.h similarity index 95% rename from companion/src/firmwares/opentx/open9xinterface.h rename to companion/src/firmwares/opentx/opentxinterface.h index 351b1ba53..82e8c7671 100644 --- a/companion/src/firmwares/opentx/open9xinterface.h +++ b/companion/src/firmwares/opentx/opentxinterface.h @@ -67,10 +67,7 @@ class Open9xInterface : public EEPROMInterface bool loadModel(uint8_t version, ModelData &model, uint8_t *data, int index, unsigned int variant, unsigned int stickMode=0); template - bool saveModel(unsigned int index, ModelData &model); - - template - bool saveModelVariant(unsigned int index, ModelData &model, unsigned int version, unsigned int variant); + bool saveModel(unsigned int index, ModelData &model, unsigned int version, unsigned int variant); template bool loadGeneral(GeneralSettings &settings, unsigned int version); diff --git a/companion/src/firmwares/opentx/open9xsimulator.cpp b/companion/src/firmwares/opentx/opentxsimulator.cpp similarity index 98% rename from companion/src/firmwares/opentx/open9xsimulator.cpp rename to companion/src/firmwares/opentx/opentxsimulator.cpp index 252ee6ecc..a406305b2 100644 --- a/companion/src/firmwares/opentx/open9xsimulator.cpp +++ b/companion/src/firmwares/opentx/opentxsimulator.cpp @@ -14,9 +14,9 @@ * */ -#include "open9xsimulator.h" -#include "open9xinterface.h" -#include "open9xeeprom.h" +#include "opentxsimulator.h" +#include "opentxinterface.h" +#include "opentxeeprom.h" #define HELI #define SIMU diff --git a/companion/src/firmwares/opentx/open9xsimulator.h b/companion/src/firmwares/opentx/opentxsimulator.h similarity index 100% rename from companion/src/firmwares/opentx/open9xsimulator.h rename to companion/src/firmwares/opentx/opentxsimulator.h diff --git a/companion/src/firmwares/th9x/th9xeeprom.cpp b/companion/src/firmwares/th9x/th9xeeprom.cpp index 2e5ad8a2f..8df98e04b 100644 --- a/companion/src/firmwares/th9x/th9xeeprom.cpp +++ b/companion/src/firmwares/th9x/th9xeeprom.cpp @@ -29,15 +29,6 @@ t_Th9xTrainerMix::t_Th9xTrainerMix() memset(this, 0, sizeof(t_Th9xTrainerMix)); } -t_Th9xTrainerMix::t_Th9xTrainerMix(TrainerMix &c9x) -{ - memset(this, 0, sizeof(t_Th9xTrainerMix)); - srcChn = c9x.src; - swtch = th9xFromSwitch(c9x.swtch); - studWeight = (8 * c9x.weight) / 25; - mode = c9x.mode; -} - t_Th9xTrainerMix::operator TrainerMix() { TrainerMix c9x; @@ -53,15 +44,6 @@ t_Th9xTrainerData::t_Th9xTrainerData() memset(this, 0, sizeof(t_Th9xTrainerData)); } -t_Th9xTrainerData::t_Th9xTrainerData(TrainerData &c9x) -{ - memset(this, 0, sizeof(t_Th9xTrainerData)); - for (int i=0; i 6) { + c9x.curve.type = CurveReference::CURVE_REF_CUSTOM; + c9x.curve.value = curve - 6; + } + else if (curve > 0) { + c9x.curve.type = CurveReference::CURVE_REF_FUNC; + c9x.curve.value = curve; + } c9x.mode = mode3; c9x.weight = weight6; c9x.chn = chn; c9x.swtch = th9xToSwitch(drSw); - if (curve) { - c9x.curveMode=1; - c9x.curveParam = curve; - } else { - c9x.curveMode = 0; - c9x.curveParam = exp5; - } return c9x; } @@ -204,15 +134,6 @@ t_Th9xLimitData::t_Th9xLimitData() memset(this, 0, sizeof(t_Th9xLimitData)); } -t_Th9xLimitData::t_Th9xLimitData(LimitData &c9x) -{ - memset(this, 0, sizeof(t_Th9xLimitData)); - min = c9x.min+100; - max = c9x.max-100; - revert = c9x.revert; - offset = c9x.offset; -} - t_Th9xLimitData::operator LimitData () { LimitData c9x; @@ -223,36 +144,11 @@ t_Th9xLimitData::operator LimitData () return c9x; } - t_Th9xMixData::t_Th9xMixData() { memset(this, 0, sizeof(t_Th9xMixData)); } -t_Th9xMixData::t_Th9xMixData(MixData &c9x) -{ - memset(this, 0, sizeof(t_Th9xMixData)); - destCh = c9x.destCh; - mixMode = c9x.mltpx; - if (c9x.srcRaw.type == SOURCE_TYPE_STICK) - srcRaw = c9x.srcRaw.index; - else if (c9x.srcRaw.type == SOURCE_TYPE_MAX) - srcRaw = 10; - else if (c9x.srcRaw.type == SOURCE_TYPE_PPM) - srcRaw = 24 + c9x.srcRaw.index; - else if (c9x.srcRaw.type == SOURCE_TYPE_CH) - srcRaw = 12 + c9x.srcRaw.index; - else - srcRaw = 0; // TODO - switchMode = 1; - curveNeg = 0; - weight = c9x.weight; - swtch = th9xFromSwitch(c9x.swtch); - curve = c9x.curve; - speedUp = c9x.speedUp; - speedDown = c9x.speedDown; -} - t_Th9xMixData::operator MixData () { MixData c9x; @@ -271,41 +167,20 @@ t_Th9xMixData::operator MixData () c9x.srcRaw = RawSource(SOURCE_TYPE_PPM, srcRaw-24); c9x.weight = weight; c9x.swtch = th9xToSwitch(swtch); - c9x.curve = curve; + if (curve > 6) { + c9x.curve.type = CurveReference::CURVE_REF_CUSTOM; + c9x.curve.value = curve - 6; + } + else if (curve > 0) { + c9x.curve.type = CurveReference::CURVE_REF_FUNC; + c9x.curve.value = curve; + } c9x.speedUp = speedUp; c9x.speedDown = speedDown; c9x.mltpx = (MltpxValue)mixMode; return c9x; } - -t_Th9xCustomSwData::t_Th9xCustomSwData(CustomSwData &c9x) -{ - opCmp = c9x.func; - val1 = c9x.val1; - val2 = c9x.val2; - - if ((c9x.func >= CS_FN_VPOS && c9x.func <= CS_FN_ANEG) || c9x.func >= CS_FN_EQUAL) { - val1 = fromSource(RawSource(c9x.val1)); - } - - if (c9x.func >= CS_FN_EQUAL) { - val2 = fromSource(RawSource(c9x.val2)); - } - - if (c9x.func >= CS_FN_AND && c9x.func <= CS_FN_XOR) { - val1 = th9xFromSwitch(RawSwitch(c9x.val1)); - val2 = th9xFromSwitch(RawSwitch(c9x.val2)); - } - - if (opCmp>TH9X_MAX_CSFUNC ) { - EEPROMWarnings += ::QObject::tr("th9x does not support Custom Switch function %1").arg(getFuncName(opCmp)) + "\n"; - opCmp=0; - val1=0; - val2=0; - } -} - t_Th9xCustomSwData::operator CustomSwData () { CustomSwData c9x; @@ -386,76 +261,6 @@ t_Th9xModelData::t_Th9xModelData() memset(this, 0, sizeof(t_Th9xModelData)); } -t_Th9xModelData::t_Th9xModelData(ModelData &c9x) -{ - memset(this, 0, sizeof(t_Th9xModelData)); - - if (c9x.used) { - setEEPROMString(name, c9x.name, sizeof(name)); - mdVers = MDVERS; - if (c9x.timers[0].mode == TMRMODE_ABS) - tmrMode = 1; - if (c9x.timers[0].mode == TMRMODE_THs) - tmrMode = 2; - if (c9x.timers[0].mode == TMRMODE_THp) - tmrMode = 3; - else - tmrMode = 0; - - // TODO tmrDir = c9x.timers[0].dir; - tmrVal = c9x.timers[0].val; - //protocol = c9x.protocol; - /* - ppmNCH = (c9x.moduleData[0].channelsCount - 8) / 2; - thrTrim = c9x.thrTrim; - thrExpo = c9x.thrExpo; - trimInc = c9x.trimInc; - ppmDelay = (c9x.moduleData[0].ppmDelay - 300) / 50; - for (unsigned int i=0; i 1*4 operator ModelData(); t_Th9xModelData(); - t_Th9xModelData(ModelData&); }) Th9xModelData; - #endif -/*eof*/ diff --git a/companion/src/firmwares/th9x/th9xinterface.cpp b/companion/src/firmwares/th9x/th9xinterface.cpp index 624b077a8..d86065ddb 100644 --- a/companion/src/firmwares/th9x/th9xinterface.cpp +++ b/companion/src/firmwares/th9x/th9xinterface.cpp @@ -124,56 +124,20 @@ bool Th9xInterface::loadBackup(RadioData &radioData, uint8_t *eeprom, int esize, int Th9xInterface::save(uint8_t *eeprom, RadioData &radioData, uint32_t variant, uint8_t version) { - EEPROMWarnings.clear(); + std::cout << "NO!\n"; + // TODO a warning - efile->EeFsCreate(eeprom, getEEpromSize(), BOARD_STOCK); - - Th9xGeneral th9xGeneral(radioData.generalSettings); - int sz = efile->writeRlc2(FILE_GENERAL, FILE_TYP_GENERAL, (uint8_t*)&th9xGeneral, sizeof(Th9xGeneral)); - if(sz != sizeof(Th9xGeneral)) { - return 0; - } - - for (int i=0; iwriteRlc2(FILE_MODEL(i), FILE_TYP_MODEL, (uint8_t*)&th9xModel, sizeof(Th9xModelData)); - if(sz != sizeof(Th9xModelData)) { - return 0; - } - } - } - - return getEEpromSize(); + return 0; } int Th9xInterface::getSize(ModelData &model) { - if (model.isempty()) - return 0; - - uint8_t tmp[2*EESIZE_STOCK]; - efile->EeFsCreate(tmp, getEEpromSize(), BOARD_STOCK); - - Th9xModelData th9xModel(model); - int sz = efile->writeRlc2(0, FILE_TYP_MODEL, (uint8_t*)&th9xModel, sizeof(Th9xModelData)); - if(sz != sizeof(Th9xModelData)) { - return -1; - } - return efile->size(0); + return 0; } int Th9xInterface::getSize(GeneralSettings &settings) { - uint8_t tmp[2*EESIZE_STOCK]; - efile->EeFsCreate(tmp, getEEpromSize(), BOARD_STOCK); - - Th9xGeneral th9xGeneral(settings); - int sz = efile->writeRlc2(0, FILE_TYP_GENERAL, (uint8_t*)&th9xGeneral, sizeof(Th9xGeneral)); - if(sz != sizeof(th9xGeneral)) { - return -1; - } - return efile->size(0); + return 0; } int Th9xInterface::getCapability(const Capability capability) @@ -181,12 +145,6 @@ int Th9xInterface::getCapability(const Capability capability) switch (capability) { case Mixes: return TH9X_MAX_MIXERS; - case NumCurves3: - return TH9X_MAX_CURVES3; - case NumCurves5: - return TH9X_MAX_CURVES5; - case NumCurves9: - return TH9X_MAX_CURVES9; case OwnerName: return 0; case Timers: diff --git a/companion/src/helpers.cpp b/companion/src/helpers.cpp index 445e8013d..0bc850e09 100644 --- a/companion/src/helpers.cpp +++ b/companion/src/helpers.cpp @@ -480,68 +480,57 @@ void populatePhasesCB(QComboBox *b, int value) b->setCurrentIndex(value + GetEepromInterface()->getCapability(FlightPhases)); } -void populateCurvesCB(QComboBox *b, int value) +void populateCurveReference(QComboBox *curveTypeCB, QCheckBox *curveGVarCB, QComboBox *curveValueCB, QSpinBox *curveValueSB, CurveReference & curve, unsigned int flags) { - b->clear(); - int numcurves=GetEepromInterface()->getCapability(NumCurves); - if (numcurves==0) { - numcurves=16; - } - for (int i = -(numcurves)*GetEepromInterface()->getCapability(HasNegCurves); i < CURVE_BASE + numcurves; i++) { - if ((i==0) && GetEepromInterface()->getCapability(DiffMixers)) { - b->addItem(QObject::tr("Diff")); - } else { - b->addItem(getCurveStr(i)); + curveTypeCB->clear(); + curveTypeCB->addItem(QObject::tr("Diff")); + curveTypeCB->addItem(QObject::tr("Expo")); + curveTypeCB->addItem(QObject::tr("Func")); + curveTypeCB->addItem(QObject::tr("Curve")); + curveTypeCB->setCurrentIndex(curve.type); + + if (curve.type == CurveReference::CURVE_REF_DIFF || curve.type == CurveReference::CURVE_REF_EXPO) { + curveGVarCB->show(); + if (curve.value>100 || curve.value<-100) { + curveGVarCB->setChecked(true); + populateGVCB(curveValueCB, curve.value); + curveValueCB->show(); + curveValueSB->hide(); + } + else { + curveGVarCB->setChecked(false); + curveValueSB->setMinimum(-100); + curveValueSB->setMaximum(100); + curveValueSB->setValue(curve.value); + curveValueSB->show(); + curveValueCB->hide(); } } - b->setCurrentIndex(value+numcurves*GetEepromInterface()->getCapability(HasNegCurves)); - b->setMaxVisibleItems(10); -} - -void populateExpoCurvesCB(QComboBox *b, int value) -{ - b->clear(); - int numcurves=GetEepromInterface()->getCapability(NumCurves); - if (numcurves==0) { - numcurves=16; - } - if (GetEepromInterface()->getCapability(ExpoIsCurve)) { - b->addItem(QObject::tr("Expo")); - } else { - b->addItem(getCurveStr(0)); - } - for (int i = 1; i < CURVE_BASE + numcurves; i++) - b->addItem(getCurveStr(i)); - b->setCurrentIndex(value); - b->setMaxVisibleItems(10); - /* TODO - if (GetEepromInterface()->getCapability(ExpoCurve5)) { - int curve5=GetEepromInterface()->getCapability(ExpoCurve5); - for (int i=CURVE_BASE+curve5; i < CURVE_BASE + MAX_CURVE5; i++) { - // Get the index of the value to disable - QModelIndex index = b->model()->index(i, 0); - - // This is the effective 'disable' flag - QVariant v(0); - - //the magic - b->model()->setData(index, v, Qt::UserRole - 1); + else { + curveGVarCB->hide(); + curveValueSB->hide(); + curveValueCB->show(); + curveValueCB->setMaxVisibleItems(10); + switch (curve.type) { + case CurveReference::CURVE_REF_FUNC: + for (int i=0; i<=6/*TODO constant*/; i++) { + curveValueCB->addItem(CurveReference(CurveReference::CURVE_REF_FUNC, i).toString()); + } + curveValueCB->setCurrentIndex(curve.value); + break; + case CurveReference::CURVE_REF_CUSTOM: + { + int numcurves = GetEepromInterface()->getCapability(NumCurves); + for (int i=-numcurves; iaddItem(CurveReference(CurveReference::CURVE_REF_CUSTOM, i).toString()); + } + curveValueCB->setCurrentIndex(curve.value+numcurves); + break; + } + default: + break; } } - if (GetEepromInterface()->getCapability(ExpoCurve9)) { - int curve9=GetEepromInterface()->getCapability(ExpoCurve9); - for (int i=CURVE_BASE+MAX_CURVE5+curve9; i < CURVE_BASE + MAX_CURVE5+ MAX_CURVE9; i++) { - // Get the index of the value to disable - QModelIndex index = b->model()->index(i, 0); - - // This is the effective 'disable' flag - QVariant v(0); - - //the magic - b->model()->setData(index, v, Qt::UserRole - 1); - } - } - */ } void populateTrimUseCB(QComboBox *b, unsigned int phase) @@ -1017,12 +1006,6 @@ QString getSignedStr(int value) return value > 0 ? QString("+%1").arg(value) : QString("%1").arg(value); } -QString getCurveStr(int curve) -{ - QString crvStr = "!c16!c15!c14!c13!c12!c11!c10!c9 !c8 !c7 !c6 !c5 !c4 !c3 !c2 !c1 ----x>0 x<0 |x| f>0 f<0 |f| c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 "; - return crvStr.mid((curve+C9X_MAX_CURVES) * 4, 4).remove(' ').replace("c", QObject::tr("Curve") + " "); -} - QString getGVarString(int16_t val, bool sign) { if (val >= -10000 && val <= 10000) diff --git a/companion/src/helpers.h b/companion/src/helpers.h index 4a3b9ee6c..43ed54f34 100644 --- a/companion/src/helpers.h +++ b/companion/src/helpers.h @@ -42,9 +42,9 @@ void populateFuncParamArmTCB(QComboBox *b, ModelData * g_model, char * value, QS void populatePhasesCB(QComboBox *b, int value); void populateTrimUseCB(QComboBox *b, unsigned int phase); void populateGvarUseCB(QComboBox *b, unsigned int phase); +void populateCurveReference(QComboBox *curveTypeCB, QCheckBox *curveGVarCB, QComboBox *curveValueCB, QSpinBox *curveValueSB, CurveReference & curve, unsigned int flags); void populateCurvesCB(QComboBox *b, int value); void populateCustomScreenFieldCB(QComboBox *b, unsigned int value, bool last, int hubproto); -void populateExpoCurvesCB(QComboBox *b, int value); void populateTimerSwitchCB(QComboBox *b, int value); QString getCustomSwitchStr(CustomSwData * customSw, const ModelData & model); QString getProtocolStr(const int proto); @@ -71,7 +71,6 @@ QString getCSWFunc(int val); QString getFuncName(unsigned int val); QString getRepeatString(unsigned int val); QString getSignedStr(int value); -QString getCurveStr(int curve); QString getGVarString(int16_t val, bool sign=false); QString image2qstring(QImage image); QImage qstring2image(QString imagestr); diff --git a/companion/src/mainwindow.cpp b/companion/src/mainwindow.cpp index 058218ec7..fc9c58b93 100644 --- a/companion/src/mainwindow.cpp +++ b/companion/src/mainwindow.cpp @@ -59,7 +59,7 @@ #include "burndialog.h" #include "hexinterface.h" #include "warnings.h" -#include "firmwares/opentx/open9xinterface.h" // TODO get rid of this include +#include "firmwares/opentx/opentxinterface.h" // TODO get rid of this include #define DONATE_STR "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=QUZ48K4SEXDP2" #ifdef __APPLE__ diff --git a/companion/src/modeledit/curves.cpp b/companion/src/modeledit/curves.cpp index 54cf80e93..577e3bd0f 100644 --- a/companion/src/modeledit/curves.cpp +++ b/companion/src/modeledit/curves.cpp @@ -89,6 +89,7 @@ Curves::Curves(QWidget * parent, ModelData & model): for (int i=0; igetCapability(NumCurves); i++) { visibleCurves[i] = false; + // The reset curve button QPushButton * reset = new QPushButton(this); reset->setProperty("index", i); @@ -117,8 +118,6 @@ Curves::Curves(QWidget * parent, ModelData & model): ui->curvesLayout->addWidget(plot, i, 2, 1, 1); } - visibleCurves[0] = true; - for (int i=0; isetProperty("index", i); @@ -183,7 +182,7 @@ void Curves::update() for (int i=0; ishow(); spny[i]->setValue(model.curves[currentCurve].points[i].y); - if (model.curves[currentCurve].custom) { + if (model.curves[currentCurve].type == CurveData::CURVE_TYPE_CUSTOM) { spnx[i]->show(); if (i==0 || i==model.curves[currentCurve].count-1) { spnx[i]->setDisabled(true); @@ -218,7 +217,7 @@ void Curves::setCurrentCurve(int index) void Curves::updateCurveType() { - int index = model.curves[currentCurve].custom; + int index = (model.curves[currentCurve].type == CurveData::CURVE_TYPE_CUSTOM ? 1 : 0); if (model.curves[currentCurve].count==5) index += 2; else if (model.curves[currentCurve].count==9) @@ -256,10 +255,10 @@ void Curves::updateCurve() int numcurves = GetEepromInterface()->getCapability(NumCurves); for (int k=0; kaddLine(centerX + (qreal)model.curves[k].points[i].x*width/200,centerY - (qreal)model.curves[k].points[i].y*height/200,centerX + (qreal)model.curves[k].points[i+1].x*width/200,centerY - (qreal)model.curves[k].points[i+1].y*height/200,pen); else scene->addLine(GFX_MARGIN + i*width/(numpoints-1),centerY - (qreal)model.curves[k].points[i].y*height/200,GFX_MARGIN + (i+1)*width/(numpoints-1),centerY - (qreal)model.curves[k].points[i+1].y*height/200,pen); @@ -273,7 +272,7 @@ void Curves::updateCurve() nodex = new Node(); nodex->setProperty("index", i); nodex->setColor(colors[currentCurve]); - if (model.curves[currentCurve].custom) { + if (model.curves[currentCurve].type == CurveData::CURVE_TYPE_CUSTOM) { if (i>0 && isetFixedX(false); nodex->setMinX(model.curves[currentCurve].points[i-1].x); @@ -339,7 +338,7 @@ void Curves::onNodeUnfocus() void Curves::on_curvetype_CB_currentIndexChanged(int index) { static const int numpoint[] = {3,3,5,5,9,9,17,17}; - static const bool custom[] = {false,true,false,true,false,true,false,true}; + static const CurveData::CurveType types[] = {CurveData::CURVE_TYPE_STANDARD, CurveData::CURVE_TYPE_CUSTOM, CurveData::CURVE_TYPE_STANDARD, CurveData::CURVE_TYPE_CUSTOM, CurveData::CURVE_TYPE_STANDARD, CurveData::CURVE_TYPE_CUSTOM, CurveData::CURVE_TYPE_STANDARD, CurveData::CURVE_TYPE_CUSTOM}; if (!lock) { lock = true; @@ -352,13 +351,13 @@ void Curves::on_curvetype_CB_currentIndexChanged(int index) for (int i=0; ica_ymax_SB->value()-ui->ca_ymin_SB->value())/200.0; int numpoints=model.curves[currentCurve].count; for (int i=0; igetCapability(CustomCurves)){ - ui->curvetype_CB->setDisabled(true); - int count=0; - for (int j=0; j< GetEepromInterface()->getCapability(NumCurves3); j++) { - model.curves[count].count=3; - model.curves[count].custom=false; - memset(model.curves[j].name,0,sizeof(model.curves[j].name)); - for (int i=0; i<17; i++) { - model.curves[count].points[i].x=0; - model.curves[count].points[i].y=0; - } - count++; - } - for (int j=0; j< GetEepromInterface()->getCapability(NumCurves5); j++) { - model.curves[count].count=5; - model.curves[count].custom=false; - memset(model.curves[j].name,0,sizeof(model.curves[j].name)); - for (int i=0; i<17; i++) { - model.curves[count].points[i].x=0; - model.curves[count].points[i].y=0; - } - count++; - } - for (int j=0; j< GetEepromInterface()->getCapability(NumCurves9); j++) { - model.curves[count].count=9; - model.curves[count].custom=false; - memset(model.curves[j].name,0,sizeof(model.curves[j].name)); - for (int i=0; i<17; i++) { - model.curves[count].points[i].x=0; - model.curves[count].points[i].y=0; - } - count++; - } - for (int j=count; j<16; j++) { - model.curves[j].count=5; - model.curves[j].custom=false; - memset(model.curves[j].name,0,sizeof(model.curves[j].name)); - for (int i=0; i<17; i++) { - model.curves[j].points[i].x=0; - model.curves[j].points[i].y=0; - } - } - } else { - for (int j=0; j<16; j++) { - model.curves[j].count=5; - model.curves[j].custom=false; - memset(model.curves[j].name,0,sizeof(model.curves[j].name)); - for (int i=0; i<17; i++) { - model.curves[j].points[i].x=0; - model.curves[j].points[i].y=0; - } + for (int j=0; j<16; j++) { + model.curves[j].count = 5; + model.curves[j].custom = false; + memset(model.curves[j].name, 0, sizeof(model.curves[j].name)); + for (int i=0; i<17; i++) { + model.curves[j].points[i].x = 0; + model.curves[j].points[i].y = 0; } } for (int i=0; i<17; i++) { @@ -667,11 +622,7 @@ void ModelEdit::clearCurves(bool ask) } currentCurve=0; curvesLock=false; - if (GetEepromInterface()->getCapability(NumCurves3)>0) { - ui->curvetype_CB->setCurrentIndex(0); - } else { - ui->curvetype_CB->setCurrentIndex(2); - } + ui->curvetype_CB->setCurrentIndex(2); ui->cname_LE->clear(); updateSettings(); drawCurve(); diff --git a/companion/src/modeledit/expodialog.cpp b/companion/src/modeledit/expodialog.cpp index 9382766b0..097d8c1a6 100644 --- a/companion/src/modeledit/expodialog.cpp +++ b/companion/src/modeledit/expodialog.cpp @@ -28,19 +28,24 @@ ExpoDialog::ExpoDialog(QWidget *parent, ExpoData *expoData, int stickMode) : ui->expoGV->setDisabled(true); ui->weightGV->setDisabled(true); ui->expoCurveGV->setDisabled(true); + + /* TODO if (ed->expo>100) { ed->expo=0; } + */ if (ed->weight>100 || ed->weight<-100) { ed->weight=100; } +/* TODO if (ed->curveParam>100 || ed->curveParam<-100) { ed->curveParam=0; } + */ } - populateGVCB(ui->expoCB,ed->expo); - populateGVCB(ui->weightCB,ed->weight); - populateGVCB(ui->expoCurveCB,ed->curveParam); + // TODO populateGVCB(ui->expoCB, ed->expo); + populateGVCB(ui->weightCB, ed->weight); + // TODO populateGVCB(ui->expoCurveCB, ed->curveParam); ui->weightSB->setMinimum(0); ui->weightSB->setMaximum(100); @@ -54,14 +59,15 @@ ExpoDialog::ExpoDialog(QWidget *parent, ExpoData *expoData, int stickMode) : ui->weightSB->show(); ui->weightCB->hide(); } - +/* TODO ui->expoSB->setMinimum(-100); ui->expoSB->setMaximum(100); if (ed->expo>100 || ed->expo<-100) { ui->expoGV->setChecked(true); ui->expoSB->hide(); ui->expoCB->show(); - } else { + } + else { ui->expoGV->setChecked(false); ui->expoSB->setValue(ed->expo); ui->expoSB->show(); @@ -74,49 +80,45 @@ ExpoDialog::ExpoDialog(QWidget *parent, ExpoData *expoData, int stickMode) : ui->expoCurveGV->setChecked(true); ui->expoCurveSB->hide(); ui->expoCurveCB->show(); - } else { + } + else { ui->expoCurveGV->setChecked(false); ui->expoCurveSB->setValue(ed->curveParam); ui->expoCurveSB->show(); ui->expoCurveCB->hide(); } - } else { - ui->expoGV->hide(); + */ + } + else { +// TODO ui->expoGV->hide(); ui->weightGV->hide(); - ui->expoCurveGV->hide(); - ui->expoSB->setMinimum(-100); - ui->expoSB->setMaximum(100); - ui->expoSB->setValue(ed->expo); - ui->expoCurveSB->setMinimum(-100); - ui->expoCurveSB->setMaximum(100); - ui->expoCurveSB->setValue(ed->curveParam); + // TODO ui->expoCurveGV->hide(); + // TODO ui->expoSB->setMinimum(-100); + // TODO ui->expoSB->setMaximum(100); + // TODO ui->expoSB->setValue(ed->expo); + // TODO ui->expoCurveSB->setMinimum(-100); + // TODO ui->expoCurveSB->setMaximum(100); + // TODO ui->expoCurveSB->setValue(ed->curveParam); ui->weightSB->setMinimum(0); ui->weightSB->setMaximum(100); ui->weightSB->setValue(ed->weight); } + populateSwitchCB(ui->switchesCB,ed->swtch); - if (ed->curveMode==0) { + /* if (ed->curveMode==0) { populateExpoCurvesCB(ui->curvesCB,0); // TODO capacity for er9x - } else { + } + else { populateExpoCurvesCB(ui->curvesCB,ed->curveParam); // TODO capacity for er9x } + */ ui->modeCB->setCurrentIndex(ed->mode-1); - if (!GetEepromInterface()->getCapability(HasExpoCurves)) { - ui->label_curves->hide(); - ui->curvesCB->hide(); - ed->curveMode=1; - } - if (!GetEepromInterface()->getCapability(ExpoIsCurve)) { - ui->expoCurveCB->hide(); - ui->expoCurveSB->hide(); - ui->expoCurveGV->hide(); - ui->label_curves->setText(tr("Curve")); - } else { - ui->label_expo->hide(); - ui->expoCB->hide(); - ui->expoGV->hide(); - ui->expoSB->hide(); - } + + ui->label_expo->hide(); + // TODO ui->expoCB->hide(); + // TODO ui->expoGV->hide(); + // TODO ui->expoSB->hide(); + if (!GetEepromInterface()->getCapability(FlightPhases)) { ui->label_phases->hide(); for (int i=0; i<9; i++) { @@ -194,22 +196,12 @@ void ExpoDialog::widgetChanged() gvars=1; } if (gvars==1) { - if (!GetEepromInterface()->getCapability(ExpoIsCurve)) { - if (ui->expoGV->isChecked()) { - ui->expoCB->show(); - ui->expoSB->hide(); - } else { - ui->expoCB->hide(); - ui->expoSB->show(); - } + if (ui->expoCurveGV->isChecked()) { + ui->expoCurveCB->show(); + ui->expoCurveSB->hide(); } else { - if (ui->expoCurveGV->isChecked()) { - ui->expoCurveCB->show(); - ui->expoCurveSB->hide(); - } else { - ui->expoCurveCB->hide(); - ui->expoCurveSB->show(); - } + ui->expoCurveCB->hide(); + ui->expoCurveSB->show(); } if (ui->weightGV->isChecked()) { ui->weightCB->show(); @@ -229,45 +221,24 @@ void ExpoDialog::valuesChanged() { QCheckBox * cb_fp[] = {ui->cb_FP0,ui->cb_FP1,ui->cb_FP2,ui->cb_FP3,ui->cb_FP4,ui->cb_FP5,ui->cb_FP6,ui->cb_FP7,ui->cb_FP8 }; if (ui->curvesCB->currentIndex()==0) { - if (GetEepromInterface()->getCapability(ExpoIsCurve)) { - ed->curveMode = 0; - ui->expoCurveGV->show(); - if (ui->expoCurveGV->isChecked()) { - ui->expoCurveCB->show(); - ui->expoCurveSB->hide(); - ed->curveParam = ui->expoCurveCB->itemData(ui->expoCurveCB->currentIndex()).toInt(); - } else { - ui->expoCurveCB->hide(); - ui->expoCurveSB->show(); - ed->curveParam = ui->expoCurveSB->value(); - } - ed->expo = ed->curveParam; - } else { - ui->expoCurveCB->hide(); + // TODO ed->curveMode = 0; + ui->expoCurveGV->show(); + if (ui->expoCurveGV->isChecked()) { + ui->expoCurveCB->show(); ui->expoCurveSB->hide(); - ui->expoCurveGV->hide(); - ed->curveMode = 0; - if (ui->expoGV->isChecked()) { - ed->expo = ui->expoCB->itemData(ui->expoCB->currentIndex()).toInt(); - } else { - ed->expo = ui->expoSB->value(); - } - ed->curveParam = ed->expo; + // TODO ed->curveParam = ui->expoCurveCB->itemData(ui->expoCurveCB->currentIndex()).toInt(); } - } else { - if (!GetEepromInterface()->getCapability(ExpoIsCurve)) { - ed->curveMode = 1; - ed->curveParam = ui->curvesCB->currentIndex(); - if (ui->expoGV->isChecked()) { - ed->expo = ui->expoCB->itemData(ui->expoCB->currentIndex()).toInt(); - } else { - ed->expo = ui->expoSB->value(); - } - } else { - ed->curveMode = 1; - ed->curveParam = ui->curvesCB->currentIndex(); - ed->expo = 0; + else { + ui->expoCurveCB->hide(); + ui->expoCurveSB->show(); + // TODO ed->curveParam = ui->expoCurveSB->value(); } + // TODO ed->expo = ed->curveParam; + } + else { + // TODO ed->curveMode = 1; + // TODO ed->curveParam = ui->curvesCB->currentIndex(); + // TODO ed->expo = 0; ui->expoCurveCB->hide(); ui->expoCurveSB->hide(); ui->expoCurveGV->hide(); diff --git a/companion/src/modeledit/flightmodes.cpp b/companion/src/modeledit/flightmodes.cpp index 67b59d60d..4a4e5e651 100644 --- a/companion/src/modeledit/flightmodes.cpp +++ b/companion/src/modeledit/flightmodes.cpp @@ -1,6 +1,6 @@ #include "flightmodes.h" #include "ui_flightmode.h" -#include "firmwares/opentx/open9xeeprom.h" // TODO shouldn't be there +// #include "firmwares/opentx/opentxeeprom.h" // TODO shouldn't be there #include "helpers.h" #include #include diff --git a/companion/src/modeledit/inputs.cpp b/companion/src/modeledit/inputs.cpp index 96967a5e8..49eb8cf83 100644 --- a/companion/src/modeledit/inputs.cpp +++ b/companion/src/modeledit/inputs.cpp @@ -83,13 +83,12 @@ void InputsPanel::update() }; str += tr("Weight") + getGVarString(md->weight).rightJustified(6, ' '); - if (!GetEepromInterface()->getCapability(ExpoIsCurve)) { - if (md->expo!=0) - str += " " + tr("Expo") + getGVarString(md->expo, true).rightJustified(7, ' '); - } else { - if (md->curveMode==0 && md->curveParam!=0) - str += " " + tr("Expo") + getGVarString(md->curveParam, true).rightJustified(7, ' '); + + QString curveStr = md->curve.toString(); + if (!curveStr.isEmpty()) { + str += " " + curveStr; } + if (GetEepromInterface()->getCapability(FlightPhases)) { if(md->phases) { if (md->phases!=(unsigned int)(1<getCapability(FlightPhases))-1) { @@ -120,14 +119,14 @@ void InputsPanel::update() mask <<=1; } str += QString(")"); - } else { + } + else { str += tr("DISABLED")+QString(" !!!"); } } } if (md->swtch.type != SWITCH_TYPE_NONE) str += " " + tr("Switch") + QString("(%1)").arg(md->swtch.toString()); - if (md->curveMode) - if (md->curveParam) str += " " + tr("Curve") + QString("(%1)").arg(getCurveStr(md->curveParam)); + if (GetEepromInterface()->getCapability(HasExpoNames)) { QString ExpoName; ExpoName.append(md->name); diff --git a/companion/src/modeledit/mixerdialog.cpp b/companion/src/modeledit/mixerdialog.cpp index 92d7b809f..33c374ef9 100644 --- a/companion/src/modeledit/mixerdialog.cpp +++ b/companion/src/modeledit/mixerdialog.cpp @@ -17,7 +17,9 @@ MixerDialog::MixerDialog(QWidget *parent, MixData *mixdata, int stickMode) : this->setWindowTitle(tr("DEST -> X%1").arg(md->destCh-GetEepromInterface()->getCapability(Outputs))); else this->setWindowTitle(tr("DEST -> CH%1%2").arg(md->destCh/10).arg(md->destCh%10)); + populateSourceCB(ui->sourceCB, md->srcRaw, POPULATE_SOURCES | POPULATE_SWITCHES | (GetEepromInterface()->getCapability(ExtraTrims) ? POPULATE_TRIMS : 0) | (GetEepromInterface()->getCapability(GvarsAsSources) ? POPULATE_GVARS : 0)); + ui->sourceCB->removeItem(0); int limit=GetEepromInterface()->getCapability(OffsetWeight); if (GetEepromInterface()->getCapability(GvarsAsWeight)) { @@ -32,20 +34,15 @@ MixerDialog::MixerDialog(QWidget *parent, MixData *mixdata, int stickMode) : if (gvars==0) { ui->offsetGV->setDisabled(true); ui->weightGV->setDisabled(true); - ui->differentialGV->setDisabled(true); if (md->weight>limit || md->weight<-limit) { md->weight=100; } if (md->sOffset>limit || md->sOffset<-limit) { md->sOffset=0; } - if (md->differential>100 || md->weight<-100) { - md->differential=0; - } } populateGVCB(ui->offsetCB,md->sOffset); populateGVCB(ui->weightCB,md->weight); - populateGVCB(ui->differentialCB,md->differential); ui->weightSB->setMinimum(-limit); ui->weightSB->setMaximum(limit); if (md->weight>limit || md->weight<-limit) { @@ -65,57 +62,33 @@ MixerDialog::MixerDialog(QWidget *parent, MixData *mixdata, int stickMode) : ui->offsetGV->setChecked(true); ui->offsetSB->hide(); ui->offsetCB->show(); - } else { + } + else { ui->offsetGV->setChecked(false); ui->offsetSB->setValue(md->sOffset); ui->offsetSB->show(); ui->offsetCB->hide(); } - - ui->differentialSB->setMinimum(-100); - ui->differentialSB->setMaximum(100); - if (md->differential>100 || md->differential<-100) { - ui->differentialGV->setChecked(true); - ui->differentialSB->hide(); - ui->differentialCB->show(); - } else { - ui->differentialGV->setChecked(false); - ui->differentialSB->setValue(md->differential); - ui->differentialSB->show(); - ui->differentialCB->hide(); - } - } else { + } + else { ui->offsetGV->hide(); ui->weightGV->hide(); - ui->differentialGV->hide(); ui->offsetSB->setMinimum(-limit); ui->offsetSB->setMaximum(limit); ui->offsetSB->setValue(md->sOffset); - ui->differentialSB->setMinimum(-100); - ui->differentialSB->setMaximum(100); - ui->differentialSB->setValue(md->differential); ui->weightSB->setMinimum(-limit); ui->weightSB->setMaximum(limit); ui->weightSB->setValue(md->weight); } + populateCurveReference(ui->curveTypeCB, ui->curveGVarCB, ui->curveValueCB, ui->curveValueSB, md->curve, 0); + ui->FixOffsetChkB->setChecked(md->lateOffset); ui->MixDR_CB->setChecked(md->noExpo==0); - if (md->enableFmTrim==1) { - ui->label_4->setText(tr("FM Trim Value")); - } - else { - ui->label_4->setText(tr("Offset")); - } if (!GetEepromInterface()->getCapability(MixesWithoutExpo)) { ui->MixDR_CB->hide(); ui->label_MixDR->hide(); } - if (!GetEepromInterface()->getCapability(MixFmTrim)) { - ui->FMtrimChkB->hide(); - ui->label_FMtrim->hide(); - ui->label_4->setText(tr("Offset")); - } if (!GetEepromInterface()->getCapability(HasFixOffset)) { ui->FixOffsetChkB->hide(); ui->label_FixOffset->hide(); @@ -127,12 +100,6 @@ MixerDialog::MixerDialog(QWidget *parent, MixData *mixdata, int stickMode) : ui->trimCB->addItem(tr("Ail"),4); } ui->trimCB->setCurrentIndex((-md->carryTrim)+1); - if (!GetEepromInterface()->getCapability(DiffMixers)) { - ui->differentialGV->hide(); - ui->differentialSB->hide(); - ui->differentialCB->hide(); - ui->label_curve->setText(tr("Curve")); - } int namelength=GetEepromInterface()->getCapability(HasMixerNames); if (!namelength) { ui->label_name->hide(); @@ -146,7 +113,8 @@ MixerDialog::MixerDialog(QWidget *parent, MixData *mixdata, int stickMode) : lb_fp[i]->hide(); cb_fp[i]->hide(); } - } else { + } + else { int mask=1; for (int i=0; i<9 ; i++) { if ((md->phases & mask)==0) { @@ -159,9 +127,10 @@ MixerDialog::MixerDialog(QWidget *parent, MixData *mixdata, int stickMode) : cb_fp[i]->hide(); } } + ui->mixerName->setValidator(new QRegExpValidator(rx, this)); ui->mixerName->setText(md->name); - populateCurvesCB(ui->curvesCB,md->curve); + populateSwitchCB(ui->switchesCB,md->swtch); ui->warningCB->setCurrentIndex(md->mixWarn); ui->mltpxCB->setCurrentIndex(md->mltpx); @@ -190,18 +159,19 @@ MixerDialog::MixerDialog(QWidget *parent, MixData *mixdata, int stickMode) : connect(ui->sourceCB,SIGNAL(currentIndexChanged(int)),this,SLOT(valuesChanged())); connect(ui->weightCB,SIGNAL(currentIndexChanged(int)),this,SLOT(valuesChanged())); connect(ui->offsetCB,SIGNAL(currentIndexChanged(int)),this,SLOT(valuesChanged())); - connect(ui->differentialCB,SIGNAL(currentIndexChanged(int)),this,SLOT(valuesChanged())); + + connect(ui->curveTypeCB,SIGNAL(currentIndexChanged(int)),this,SLOT(valuesChanged())); + connect(ui->curveGVarCB,SIGNAL(stateChanged(int)),this,SLOT(valuesChanged())); + connect(ui->curveValueCB,SIGNAL(currentIndexChanged(int)),this,SLOT(valuesChanged())); + connect(ui->curveValueSB,SIGNAL(editingFinished()),this,SLOT(valuesChanged())); + connect(ui->weightSB,SIGNAL(editingFinished()),this,SLOT(valuesChanged())); connect(ui->offsetSB,SIGNAL(editingFinished()),this,SLOT(valuesChanged())); - connect(ui->differentialSB,SIGNAL(editingFinished()),this,SLOT(valuesChanged())); - connect(ui->weightGV,SIGNAL(stateChanged(int)),this,SLOT(widgetChanged())); + connect(ui->weightGV,SIGNAL(stateChanged(int)),this,SLOT(widgetChanged())); // TODO why the same slot? connect(ui->offsetGV,SIGNAL(stateChanged(int)),this,SLOT(widgetChanged())); - connect(ui->differentialGV,SIGNAL(stateChanged(int)),this,SLOT(widgetChanged())); connect(ui->trimCB,SIGNAL(currentIndexChanged(int)),this,SLOT(valuesChanged())); connect(ui->MixDR_CB,SIGNAL(toggled(bool)),this,SLOT(valuesChanged())); - connect(ui->FMtrimChkB,SIGNAL(toggled(bool)),this,SLOT(valuesChanged())); connect(ui->FixOffsetChkB,SIGNAL(toggled(bool)),this,SLOT(valuesChanged())); - connect(ui->curvesCB,SIGNAL(currentIndexChanged(int)),this,SLOT(valuesChanged())); connect(ui->switchesCB,SIGNAL(currentIndexChanged(int)),this,SLOT(valuesChanged())); connect(ui->warningCB,SIGNAL(currentIndexChanged(int)),this,SLOT(valuesChanged())); connect(ui->mltpxCB,SIGNAL(currentIndexChanged(int)),this,SLOT(valuesChanged())); @@ -243,15 +213,6 @@ void MixerDialog::widgetChanged() gvars=1; } if (gvars==1) { - if (!GetEepromInterface()->getCapability(DiffMixers)) { - if (ui->differentialGV->isChecked()) { - ui->differentialCB->show(); - ui->differentialSB->hide(); - } else { - ui->differentialCB->hide(); - ui->differentialSB->show(); - } - } if (ui->weightGV->isChecked()) { ui->weightCB->show(); ui->weightSB->hide(); @@ -301,28 +262,15 @@ void MixerDialog::valuesChanged() md->carryTrim = -(ui->trimCB->currentIndex()-1); md->noExpo = ui->MixDR_CB->checkState() ? 0 : 1; md->lateOffset = ui->FixOffsetChkB->checkState() ? 1 : 0; - md->enableFmTrim = ui->FMtrimChkB->checkState() ? 1 : 0; - int numcurves=GetEepromInterface()->getCapability(NumCurves); - if (numcurves==0) { - numcurves=16; - } - if (GetEepromInterface()->getCapability(DiffMixers) && (ui->curvesCB->currentIndex()-(numcurves)*GetEepromInterface()->getCapability(HasNegCurves))==0){ - ui->differentialGV->show(); - if (ui->differentialGV->isChecked()) { - ui->differentialSB->hide(); - ui->differentialCB->show(); - } else { - ui->differentialSB->show(); - ui->differentialCB->hide(); - } - } else { - ui->differentialGV->hide(); - ui->differentialGV->setChecked(false); - ui->differentialSB->hide(); - ui->differentialSB->setValue(0); - ui->differentialCB->hide(); - } - md->curve = ui->curvesCB->currentIndex()-(numcurves)*GetEepromInterface()->getCapability(HasNegCurves); + + // TODO md->curve = ui->curvesCB->currentIndex()-(numcurves)*GetEepromInterface()->getCapability(HasNegCurves); + // TODO if (ui->differentialGV->isChecked()) { + // TODO md->differential = ui->differentialCB->itemData(ui->differentialCB->currentIndex()).toInt(); + // TODO } else { + // TODO md->differential = ui->differentialSB->value(); + // TODO } + // populateCurveReference(QComboBox *curveTypeCB, QCheckBox *curveGVarCB, QComboBox *curveValueCB, QSpinBox *curveValueCB, CurveReference & curve, unsigned int flags) + md->swtch = RawSwitch(ui->switchesCB->itemData(ui->switchesCB->currentIndex()).toInt()); md->mixWarn = ui->warningCB->currentIndex(); md->mltpx = (MltpxValue)ui->mltpxCB->currentIndex(); @@ -331,16 +279,7 @@ void MixerDialog::valuesChanged() md->delayUp = round(ui->delayUpSB->value()*scale); md->speedDown = round(ui->slowDownSB->value()*scale); md->speedUp = round(ui->slowUpSB->value()*scale); - if (ui->differentialGV->isChecked()) { - md->differential = ui->differentialCB->itemData(ui->differentialCB->currentIndex()).toInt(); - } else { - md->differential = ui->differentialSB->value(); - } - if (GetEepromInterface()->getCapability(MixFmTrim) && md->enableFmTrim==1) { - ui->label_4->setText(tr("FM Trim Value")); - } else { - ui->label_4->setText(tr("Offset")); - } + int i=0; for (i=0; imixerName->text().toAscii().length(); i++) { md->name[i]=ui->mixerName->text().toAscii().at(i); diff --git a/companion/src/modeledit/mixerdialog.ui b/companion/src/modeledit/mixerdialog.ui index 594d26356..3eec442eb 100644 --- a/companion/src/modeledit/mixerdialog.ui +++ b/companion/src/modeledit/mixerdialog.ui @@ -6,8 +6,8 @@ 0 0 - 367 - 475 + 342 + 434 @@ -20,7 +20,7 @@ Dialog - + :/icon.png:/icon.png @@ -178,7 +178,142 @@ p, li { white-space: pre-wrap; } - + + + + Include DR/Expo + + + + + + + + 0 + 0 + + + + + + + + Flight modes + + + + + + + Include Trim + + + + + + + Switch + + + + + + + + + + + + + + The curve used by the mix + + + + + + + Mixer warning. +Setting this value will cause a beep to be emmitted when this value is active. + + + + OFF + + + + + 1 Beep + + + + + 2 Beep + + + + + 3 Beep + + + + + + + + Fix Offset + + + + + + + + No + + + + + Yes + + + + + + + + + + GV + + + + + + + The source for the mixer + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + Multiplexer @@ -213,7 +348,7 @@ This determines how mixer values are added. - + @@ -370,14 +505,14 @@ This determines how mixer values are added. - + Warning - + Multiplex @@ -415,162 +550,10 @@ This determines how mixer values are added. - Curve/Differential + Curve - - - - Include Trim - - - - - - - Enable FM Trim - - - - - - - Flight modes - - - - - - - Switch - - - - - - - Include DR/Expo - - - - - - - Fix Offset - - - - - - - Mixer warning. -Setting this value will cause a beep to be emmitted when this value is active. - - - - OFF - - - - - 1 Beep - - - - - 2 Beep - - - - - 3 Beep - - - - - - - - The curve used by the mix - - - - - - - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - - GV - - - - - - - The source for the mixer - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - No - - - - - Yes - - - - @@ -605,7 +588,7 @@ Setting this value will cause a beep to be emmitted when this value is active. - + Switch used by the mix. @@ -623,21 +606,21 @@ If blank then the mix is considered to be "ON" all the time. - + GV - + The source for the mixer - + @@ -646,7 +629,7 @@ If blank then the mix is considered to be "ON" all the time. - + diff --git a/companion/src/modeledit/mixes.cpp b/companion/src/modeledit/mixes.cpp index 695e75ff4..b40f36f81 100644 --- a/companion/src/modeledit/mixes.cpp +++ b/companion/src/modeledit/mixes.cpp @@ -152,13 +152,14 @@ void MixesPanel::update() if(md->noExpo) { str += " " +tr("No DR/Expo"); } - if (GetEepromInterface()->getCapability(MixFmTrim) && md->enableFmTrim==1) { - if (md->sOffset) str += " " + tr("FMTrim") + QString("(%1%)").arg(md->sOffset); - } else { - if (md->sOffset) str += " " + tr("Offset") + getGVarString(md->sOffset); + + if (md->sOffset) str += " " + tr("Offset") + getGVarString(md->sOffset); + + QString curveStr = md->curve.toString(); + if (!curveStr.isEmpty()) { + str += " " + curveStr; } - if (md->differential) str += " " + tr("Diff") + getGVarString(md->differential); - if (md->curve) str += " " + tr("Curve") + QString("(%1)").arg(getCurveStr(md->curve)); + int scale=GetEepromInterface()->getCapability(SlowScale); if (scale==0) scale=1; @@ -171,7 +172,7 @@ void MixesPanel::update() QString MixerName; MixerName.append(md->name); if (!MixerName.isEmpty()) { - str+=QString("(%1)").arg(MixerName); + str += QString("(%1)").arg(MixerName); } } qba.clear(); @@ -188,7 +189,8 @@ void MixesPanel::update() if (curDest > outputs) { str = tr("X%1 ").arg(curDest-outputs); - } else { + } + else { str = tr("CH%1%2").arg(curDest/10).arg(curDest%10); if (GetEepromInterface()->getCapability(HasChNames) && showNames) { QString name=model.limitData[curDest-1].name; diff --git a/companion/src/printdialog.cpp b/companion/src/printdialog.cpp index 36b0422c4..ac1cc9feb 100644 --- a/companion/src/printdialog.cpp +++ b/companion/src/printdialog.cpp @@ -261,23 +261,8 @@ void printDialog::printExpo() }; str += tr("Weight") + QString("%1").arg(getGVarString(ed->weight,true)).rightJustified(6, ' '); - if (!GetEepromInterface()->getCapability(ExpoIsCurve)) { - if (ed->expo!=0) { - if (ed->expo<126) { - str += " " + tr("Expo") + QString("%1").arg(getGVarString(ed->expo)).rightJustified(7, ' '); - } else { - str += " " + tr("Expo") + QString("%1").arg(getGVarString(ed->expo)).rightJustified(7, ' '); - } - } - } else { - if (ed->curveMode==0 && ed->curveParam!=0) { - if (ed->curveParam<126) { - str += " " + tr("Expo") + QString("%1").arg(getGVarString(ed->curveParam)).rightJustified(7, ' '); - } else { - str += " " + tr("Expo") + QString("%1").arg(getGVarString(ed->curveParam)).rightJustified(7, ' '); - } - } - } + str += ed->curve.toString().replace("<", "<").replace(">", ">"); + if (GetEepromInterface()->getCapability(FlightPhases)) { if(ed->phases) { if (ed->phases!=(unsigned int)(1<getCapability(FlightPhases))-1) { @@ -316,9 +301,7 @@ void printDialog::printExpo() } if (ed->swtch.type) str += " " + tr("Switch") + QString("(%1)").arg(ed->swtch.toString()); - if (ed->curveMode) - if (ed->curveParam) - str += " " + tr("Curve") + QString("(%1)").arg(getCurveStr(ed->curveParam).replace("<", "<").replace(">", ">")); + str += ed->curve.toString().replace("<", "<").replace(">", ">"); if (GetEepromInterface()->getCapability(HasExpoNames)) { QString ExpoName; ExpoName.append(ed->name); @@ -370,13 +353,8 @@ void printDialog::printMixes() str += md->srcRaw.toString(); if (md->swtch.type) str += " " + tr("Switch") + QString("(%1)").arg(md->swtch.toString()); if (md->carryTrim) str += " " + tr("noTrim"); - if(GetEepromInterface()->getCapability(MixFmTrim) && md->enableFmTrim==1){ - if (md->sOffset) str += " "+ tr("FMTrim") + QString(" %1").arg(getGVarString(md->sOffset)); - } else { - if (md->sOffset) str += " "+ tr("Offset") + QString(" %1").arg(getGVarString(md->sOffset)); - } - if (md->differential) str += " "+ tr("Diff") + QString(" %1").arg(getGVarString(md->differential)); - if (md->curve) str += " " + tr("Curve") + QString("(%1)").arg(getCurveStr(md->curve).replace("<", "<").replace(">", ">")); + if (md->sOffset) str += " "+ tr("Offset") + QString(" %1").arg(getGVarString(md->sOffset)); + str += md->curve.toString().replace("<", "<").replace(">", ">"); float scale=GetEepromInterface()->getCapability(SlowScale); if (md->delayDown || md->delayUp) str += tr(" Delay(u%1:d%2)").arg(md->delayUp/scale).arg(md->delayDown/scale); if (md->speedDown || md->speedUp) str += tr(" Slow(u%1:d%2)").arg(md->speedUp/scale).arg(md->speedDown/scale); @@ -566,101 +544,7 @@ void printDialog::printCurves() if (numcurves==0) { numcurves=16; } - if (!GetEepromInterface()->getCapability(CustomCurves)) { - QImage qi(ISIZE+1,ISIZE+1,QImage::Format_RGB32); - QPainter painter(&qi); - painter.setBrush(QBrush("#FFFFFF")); - painter.setPen(QColor(0,0,0)); - painter.drawRect(0,0,ISIZE,ISIZE); - str.append("
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 literal 0 HcmV?d00001 diff --git a/companion/src/images/splash.png b/companion/src/images/splash.png index 601c590d98b40a5d91d571b596e941dfbad6bc5f..0049e2da177e43541f20309a2fd306ce04c5a52a 100644 GIT binary patch literal 68810 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≺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 HLE!%YMkV3u literal 72534 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%0DEO>%>!B~IA-hkSsE%E`?QyX4OK<_+uCGqN}u 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
akG5? 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 Hu0mjfH-Zb^ diff --git a/companion/src/logsdialog.cpp b/companion/src/logsdialog.cpp index 4334da516..e1b415ce9 100644 --- a/companion/src/logsdialog.cpp +++ b/companion/src/logsdialog.cpp @@ -687,7 +687,7 @@ bool logsDialog::cvsFileParse() file.close(); if (errors>1) { - QMessageBox::warning(this, "companion9x", tr("The selected logfile contains %1 invalid lines out of %2 total lines").arg(errors).arg(lines)); + QMessageBox::warning(this, "Companion", tr("The selected logfile contains %1 invalid lines out of %2 total lines").arg(errors).arg(lines)); } plotLock=true; int n=csvlog.count(); diff --git a/companion/src/logsdialog.ui b/companion/src/logsdialog.ui index deee92d6b..4d0c91939 100644 --- a/companion/src/logsdialog.ui +++ b/companion/src/logsdialog.ui @@ -11,7 +11,7 @@ - Companion9x log viewer + Companion Log Viewer diff --git a/companion/src/main.cpp b/companion/src/main.cpp index 700536602..cabf5e6f0 100644 --- a/companion/src/main.cpp +++ b/companion/src/main.cpp @@ -78,7 +78,7 @@ int main(int argc, char *argv[]) { Q_INIT_RESOURCE(companion9x); QApplication app(argc, argv); - app.setApplicationName("Companion9x"); + app.setApplicationName("OpenTX Companion"); #ifdef __APPLE__ app.setStyle(new MyProxyStyle); #endif diff --git a/companion/src/mainwindow.cpp b/companion/src/mainwindow.cpp index b428332c5..4f7b85a78 100644 --- a/companion/src/mainwindow.cpp +++ b/companion/src/mainwindow.cpp @@ -103,9 +103,9 @@ downloadDialog_forWait(NULL) readSettings(); FirmwareInfo *firmware = GetCurrentFirmware(); if (ActiveProfile) { - setWindowTitle(tr("companion9x - Models and Settings Editor - %1 - profile %2").arg(firmware->name).arg(ActiveProfileName)); + setWindowTitle(tr("Companion - Models and Settings Editor - %1 - profile %2").arg(firmware->name).arg(ActiveProfileName)); } else { - setWindowTitle(tr("companion9x - Models and Settings Editor - %1").arg(firmware->name)); + setWindowTitle(tr("Companion - Models and Settings Editor - %1").arg(firmware->name)); } setUnifiedTitleAndToolBarOnMac(true); this->setWindowIcon(QIcon(":/icon.png")); @@ -166,11 +166,11 @@ void MainWindow::displayWarnings() if (warnId0) { - QMessageBox::warning(this, "companion9x", WARNING); - res = QMessageBox::question(this, "companion9x",tr("Display previous warning again at startup ?"),QMessageBox::Yes | QMessageBox::No); + QMessageBox::warning(this, "Companion", WARNING); + res = QMessageBox::question(this, "Companion",tr("Display previous warning again at startup ?"),QMessageBox::Yes | QMessageBox::No); } else { - QMessageBox::about(this, "companion9x", WARNING); - res = QMessageBox::question(this, "companion9x",tr("Display previous message again at startup ?"),QMessageBox::Yes | QMessageBox::No); + QMessageBox::about(this, "Companion", WARNING); + res = QMessageBox::question(this, "Companion",tr("Display previous message again at startup ?"),QMessageBox::Yes | QMessageBox::No); } if (res == QMessageBox::No) { settings.setValue("warningId", WARNING_ID); @@ -243,7 +243,7 @@ void MainWindow::checkForUpdateFinished(QNetworkReply * reply) QString version = qba.mid(i+14, 4); if (version.isNull()) { - QMessageBox::warning(this, "companion9x", tr("Unable to check for updates.")); + QMessageBox::warning(this, "Companion", tr("Unable to check for updates.")); return; } double vnum=version.toDouble(); @@ -257,7 +257,7 @@ void MainWindow::checkForUpdateFinished(QNetworkReply * reply) if (c9xver< vnum) { #if defined WIN32 || !defined __GNUC__ // || defined __APPLE__ // OSX should only notify of updates since no update packages are available. showcheckForUpdatesResult = false; // update is available - do not show dialog - int ret = QMessageBox::question(this, "companion9x", tr("A new version of companion9x is available (version %1)
" + int ret = QMessageBox::question(this, "Companion", tr("A new version of Companion is available (version %1)
" "Would you like to download it?").arg(version) , QMessageBox::Yes | QMessageBox::No); @@ -278,21 +278,21 @@ void MainWindow::checkForUpdateFinished(QNetworkReply * reply) } } #else - QMessageBox::warning(this, tr("New release available"), tr("A new release of companion is available please check the repository")); + QMessageBox::warning(this, tr("New release available"), tr("A new release of Companion is available please check the repository")); #endif } else { if (showcheckForUpdatesResult && check1done && check2done) - QMessageBox::information(this, "companion9x", tr("No updates available at this time.")); + QMessageBox::information(this, "Companion", tr("No updates available at this time.")); } } else { if(check1done && check2done) - QMessageBox::warning(this, "companion9x", tr("Unable to check for updates.")); + QMessageBox::warning(this, "Companion", tr("Unable to check for updates.")); } } void MainWindow::updateDownloaded() { - int ret = QMessageBox::question(this, "companion9x", tr("Would you like to launch the installer?") , + int ret = QMessageBox::question(this, "Companion", tr("Would you like to launch the installer?") , QMessageBox::Yes | QMessageBox::No); if (ret == QMessageBox::Yes) { if(QDesktopServices::openUrl(QUrl::fromLocalFile(installer_fileName))) @@ -356,7 +356,7 @@ void MainWindow::reply1Accepted() errormsg=tr("Compilation server too busy, try later"); break; case 4: - errormsg=tr("Compilation server requires registration, please check opentx web site"); + errormsg=tr("Compilation server requires registration, please check OpenTX web site"); break; default: errormsg=tr("Unknown server failure, try later"); @@ -396,7 +396,7 @@ void MainWindow::reply1Accepted() errormsg=tr("Compilation server too busy, try later"); break; case 4: - errormsg=tr("Compilation server requires registration, please check opentx web site"); + errormsg=tr("Compilation server requires registration, please check OpenTX web site"); break; default: errormsg=tr("Unknown server failure, try later"); @@ -427,7 +427,7 @@ void MainWindow::reply1Accepted() } settings.setValue(downloadedFW, currentFWrev); if (autoflash) { - int ret = QMessageBox::question(this, "companion9x", tr("Do you want to write the firmware to the transmitter now ?"), QMessageBox::Yes | QMessageBox::No); + int ret = QMessageBox::question(this, "Companion", tr("Do you want to write the firmware to the transmitter now ?"), QMessageBox::Yes | QMessageBox::No); if (ret == QMessageBox::Yes) { burnToFlash(downloadedFWFilename); } @@ -464,7 +464,7 @@ void MainWindow::reply1Finished(QNetworkReply * reply) QString newrev=qba.mid(k).replace('"', "").trimmed(); if(!cres) { - QMessageBox::warning(this, "companion9x", tr("Unable to check for updates.")); + QMessageBox::warning(this, "Companion", tr("Unable to check for updates.")); int server = settings.value("fwserver",0).toInt(); server++; settings.setValue("fwserver",server); @@ -484,6 +484,7 @@ void MainWindow::reply1Finished(QNetworkReply * reply) showcheckForUpdatesResult = false; // update is available - do not show dialog QString rn = GetFirmware(fwToUpdate)->rnurl; QAbstractButton *rnButton; + msgBox.setWindowTitle("Companion"); msgBox.setInformativeText(tr("Firmware %1 does not seem to have ever been downloaded.\nVersion %2 is available.\nDo you want to download it now ?").arg(fwToUpdate).arg(NewFwRev)); QAbstractButton *YesButton = msgBox.addButton(trUtf8("Yes"), QMessageBox::YesRole); msgBox.addButton(trUtf8("No"), QMessageBox::NoRole); @@ -496,7 +497,7 @@ void MainWindow::reply1Finished(QNetworkReply * reply) if( msgBox.clickedButton() == rnButton ) { contributorsDialog *cd = new contributorsDialog(this,2,rn); cd->exec(); - int ret2 = QMessageBox::question(this, "companion9x", tr("Do you want to download release %1 now ?").arg(NewFwRev), + int ret2 = QMessageBox::question(this, "Companion", tr("Do you want to download release %1 now ?").arg(NewFwRev), QMessageBox::Yes | QMessageBox::No); if (ret2 == QMessageBox::Yes) { download = true; @@ -512,7 +513,7 @@ void MainWindow::reply1Finished(QNetworkReply * reply) showcheckForUpdatesResult = false; // update is available - do not show dialog QString rn = GetFirmware(fwToUpdate)->rnurl; QAbstractButton *rnButton; - msgBox.setText("companion9x"); + msgBox.setText("Companion"); msgBox.setInformativeText(tr("A new version of %1 firmware is available (current %2 - newer %3).\nDo you want to download it now ?").arg(fwToUpdate).arg(OldFwRev).arg(NewFwRev)); QAbstractButton *YesButton = msgBox.addButton(trUtf8("Yes"), QMessageBox::YesRole); msgBox.addButton(trUtf8("No"), QMessageBox::NoRole); @@ -526,7 +527,7 @@ void MainWindow::reply1Finished(QNetworkReply * reply) warning=0; contributorsDialog *cd = new contributorsDialog(this,2,rn); cd->exec(); - int ret2 = QMessageBox::question(this, "companion9x", tr("Do you want to download release %1 now ?").arg(NewFwRev), + int ret2 = QMessageBox::question(this, "Companion", tr("Do you want to download release %1 now ?").arg(NewFwRev), QMessageBox::Yes | QMessageBox::No); if (ret2 == QMessageBox::Yes) { download = true; @@ -540,10 +541,10 @@ void MainWindow::reply1Finished(QNetworkReply * reply) } } else { if(showcheckForUpdatesResult && check1done && check2done) - QMessageBox::information(this, "companion9x", tr("No updates available at this time.")); + QMessageBox::information(this, "Companion", tr("No updates available at this time.")); } if (ignore) { - int res = QMessageBox::question(this, "companion9x",tr("Ignore this version (r%1)?").arg(rev), QMessageBox::Yes | QMessageBox::No); + int res = QMessageBox::question(this, "Companion",tr("Ignore this version (r%1)?").arg(rev), QMessageBox::Yes | QMessageBox::No); if (res==QMessageBox::Yes) { settings.beginGroup("FwRevisions"); settings.setValue(fwToUpdate, NewFwRev); @@ -553,7 +554,7 @@ void MainWindow::reply1Finished(QNetworkReply * reply) if (warning>0) { QString rn = GetFirmware(fwToUpdate)->rnurl; if (!rn.isEmpty()) { - int ret2 = QMessageBox::warning(this, "companion9x", tr("Release notes contain very important informations. Do you want to see them now ?"), QMessageBox::Yes | QMessageBox::No); + int ret2 = QMessageBox::warning(this, "Companion", tr("Release notes contain very important informations. Do you want to see them now ?"), QMessageBox::Yes | QMessageBox::No); if (ret2 == QMessageBox::Yes) { contributorsDialog *cd = new contributorsDialog(this,2,rn); cd->exec(); @@ -586,11 +587,11 @@ void MainWindow::reply1Finished(QNetworkReply * reply) } } } else { - QMessageBox::warning(this, "companion9x", tr("Unable to check for updates.")); + QMessageBox::warning(this, "Companion", tr("Unable to check for updates.")); } } else { if(check1done && check2done) { - QMessageBox::warning(this, "companion9x", tr("Unable to check for updates.")); + QMessageBox::warning(this, "Companion", tr("Unable to check for updates.")); int server = settings.value("fwserver",0).toInt(); server++; settings.setValue("fwserver",server); @@ -712,13 +713,13 @@ void MainWindow::loadProfile() settings.setValue("profileId", profnum); current_firmware_variant = GetFirmwareVariant(firmware_id); FirmwareInfo *firmware = GetCurrentFirmware(); - setWindowTitle(tr("companion9x - Models and Settings Editor - %1").arg(firmware->name)); + setWindowTitle(tr("Companion - Models and Settings Editor - %1").arg(firmware->name)); // settings.setValue("lastDir", QFileInfo(fileName).dir().absolutePath()); foreach (QMdiSubWindow *window, mdiArea->subWindowList()) { MdiChild *mdiChild = qobject_cast(window->widget()); mdiChild->eepromInterfaceChanged(); } - setWindowTitle(tr("companion9x - Models and Settings Editor - %1 - profile %2").arg(firmware->name).arg(ActiveProfileName)); + setWindowTitle(tr("Companion - Models and Settings Editor - %1 - profile %2").arg(firmware->name).arg(ActiveProfileName)); } } @@ -729,7 +730,7 @@ void MainWindow::unloadProfile() QSettings settings("companion9x", "companion9x"); settings.setValue("ActiveProfile",0); FirmwareInfo *firmware = GetCurrentFirmware(); - setWindowTitle(tr("companion9x - Models and Settings Editor - %1").arg(firmware->name)); + setWindowTitle(tr("Companion - Models and Settings Editor - %1").arg(firmware->name)); } void MainWindow::preferences() @@ -738,9 +739,9 @@ void MainWindow::preferences() pd->exec(); FirmwareInfo *firmware = GetCurrentFirmware(); if (ActiveProfile) { - setWindowTitle(tr("companion9x - Models and Settings Editor - %1 - profile %2").arg(firmware->name).arg(ActiveProfileName)); + setWindowTitle(tr("Companion - Models and Settings Editor - %1 - profile %2").arg(firmware->name).arg(ActiveProfileName)); } else { - setWindowTitle(tr("companion9x - Models and Settings Editor - %1").arg(firmware->name)); + setWindowTitle(tr("Companion - Models and Settings Editor - %1").arg(firmware->name)); } foreach (QMdiSubWindow *window, mdiArea->subWindowList()) { @@ -1076,10 +1077,10 @@ void MainWindow::burnExtenalToEEPROM() cd->exec(); if (!fileName.isEmpty()) { settings.setValue("lastDir", QFileInfo(fileName).dir().absolutePath()); - int ret = QMessageBox::question(this, "companion9x", tr("Write Models and settings from %1 to the Tx?").arg(QFileInfo(fileName).fileName()), QMessageBox::Yes | QMessageBox::No); + int ret = QMessageBox::question(this, "Companion", tr("Write Models and settings from %1 to the Tx?").arg(QFileInfo(fileName).fileName()), QMessageBox::Yes | QMessageBox::No); if (ret != QMessageBox::Yes) return; if (!isValidEEPROM(fileName)) - ret = QMessageBox::question(this, "companion9x", tr("The file %1\nhas not been recognized as a valid Models and Settings file\nWrite anyway ?").arg(QFileInfo(fileName).fileName()), QMessageBox::Yes | QMessageBox::No); + ret = QMessageBox::question(this, "Companion", tr("The file %1\nhas not been recognized as a valid Models and Settings file\nWrite anyway ?").arg(QFileInfo(fileName).fileName()), QMessageBox::Yes | QMessageBox::No); if (ret != QMessageBox::Yes) return; bool backupEnable = settings.value("backupEnable", true).toBool(); QString backupPath = settings.value("backupPath", "").toString(); @@ -1488,15 +1489,15 @@ void MainWindow::logFile() void MainWindow::about() { - QString aboutStr = "
"); + aboutStr.append(tr("donating") + ""); - QMessageBox::about(this, tr("About companion9x"),aboutStr); + QMessageBox::about(this, tr("About Companion"),aboutStr); } void MainWindow::updateMenus() @@ -1623,15 +1624,15 @@ void MainWindow::createActions() connect(preferencesAct, SIGNAL(triggered()), this, SLOT(preferences())); checkForUpdatesAct = new QAction(QIcon(":/images/update.png"), tr("&Check for updates..."), this); - checkForUpdatesAct->setStatusTip(tr("Check for new version of companion9x/er9x")); + checkForUpdatesAct->setStatusTip(tr("Check for new version of Companion")); connect(checkForUpdatesAct, SIGNAL(triggered()), this, SLOT(doUpdates())); contributorsAct = new QAction(QIcon(":/images/contributors.png"), tr("Contributors &List..."), this); - contributorsAct->setStatusTip(tr("Show companion9x contributors list")); + contributorsAct->setStatusTip(tr("Show Companion contributors list")); connect(contributorsAct, SIGNAL(triggered()), this, SLOT(contributors())); changelogAct = new QAction(QIcon(":/images/changelog.png"), tr("ChangeLog..."), this); - changelogAct->setStatusTip(tr("Show companion9x changelog")); + changelogAct->setStatusTip(tr("Show Companion changelog")); connect(changelogAct, SIGNAL(triggered()), this, SLOT(changelog())); fwchangelogAct = new QAction(QIcon(":/images/changelog.png"), tr("Firmware ChangeLog..."), this); diff --git a/companion/src/mdichild.cpp b/companion/src/mdichild.cpp index 6fbd16afa..ac595a19b 100644 --- a/companion/src/mdichild.cpp +++ b/companion/src/mdichild.cpp @@ -179,12 +179,12 @@ void MdiChild::OpenEditWindow(bool wizard=false) QSettings settings("companion9x", "companion9x"); bool wizardEnable=settings.value("wizardEnable", true).toBool(); if (wizardEnable) { - ret = QMessageBox::question(this, tr("companion9x"), tr("Do you want to use model wizard? "), QMessageBox::Yes | QMessageBox::No); + ret = QMessageBox::question(this, tr("Companion"), tr("Do you want to use model wizard? "), QMessageBox::Yes | QMessageBox::No); if (ret == QMessageBox::Yes) { wizard=true; } else { qSleep(500); - ret = QMessageBox::question(this, tr("companion9x"), tr("Ask this question again ? "), QMessageBox::Yes | QMessageBox::No); + ret = QMessageBox::question(this, tr("Companion"), tr("Ask this question again ? "), QMessageBox::Yes | QMessageBox::No); if (ret == QMessageBox::No) { settings.setValue("wizardEnable", false); } @@ -467,7 +467,7 @@ bool MdiChild::maybeSave() { if (fileChanged) { QMessageBox::StandardButton ret; - ret = QMessageBox::warning(this, tr("companion9x"), + ret = QMessageBox::warning(this, tr("Companion"), tr("%1 has been modified.\n" "Do you want to save your changes?").arg(userFriendlyCurrentFile()), QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel); diff --git a/companion/src/modeledit.cpp b/companion/src/modeledit.cpp index b6b5aade1..c49a3eb57 100644 --- a/companion/src/modeledit.cpp +++ b/companion/src/modeledit.cpp @@ -5389,7 +5389,7 @@ void ModelEdit::drawCurve() bool ModelEdit::gm_insertMix(int idx) { if (idx<0 || idx>=GetEepromInterface()->getCapability(Mixes) || g_model.mixData[GetEepromInterface()->getCapability(Mixes)-1].destCh > 0) { - QMessageBox::information(this, "companion9x", tr("Not enough available mixers!")); + QMessageBox::information(this, "Companion", tr("Not enough available mixers!")); return false; } @@ -5444,7 +5444,7 @@ int ModelEdit::getMixerIndex(unsigned int dch) bool ModelEdit::gm_insertExpo(int idx) { if (idx<0 || idx>=C9X_MAX_EXPOS || g_model.expoData[C9X_MAX_EXPOS-1].mode > 0) { - QMessageBox::information(this, "companion9x", tr("Not enough available expos!")); + QMessageBox::information(this, "Companion", tr("Not enough available expos!")); return false; } @@ -5584,7 +5584,7 @@ void ModelEdit::mixersDelete(bool ask) QMessageBox::StandardButton ret = QMessageBox::No; if(ask) - ret = QMessageBox::warning(this, "companion9x", + ret = QMessageBox::warning(this, "Companion", tr("Delete Selected Mixes?"), QMessageBox::Yes | QMessageBox::No); @@ -5622,7 +5622,7 @@ void ModelEdit::exposDelete(bool ask) QMessageBox::StandardButton ret = QMessageBox::No; if(ask) - ret = QMessageBox::warning(this, "companion9x", + ret = QMessageBox::warning(this, "Companion", tr("Delete Selected Expos?"), QMessageBox::Yes | QMessageBox::No); @@ -6183,7 +6183,7 @@ void ModelEdit::resetCurve() QPushButton *button = (QPushButton *)sender(); int btn=button->objectName().mid(button->objectName().lastIndexOf("_")+1).toInt()-1; if (btn!=currentCurve) { - int res = QMessageBox::question(this, "companion9x",tr("Are you sure you want to delete curve %1 ?").arg(btn+1),QMessageBox::Yes | QMessageBox::No); + int res = QMessageBox::question(this, "Companion",tr("Are you sure you want to delete curve %1 ?").arg(btn+1),QMessageBox::Yes | QMessageBox::No); if (res == QMessageBox::No) { return; } @@ -7312,7 +7312,7 @@ void ModelEdit::on_curvetype_CB_currentIndexChanged(int index) { int fwpoints=GetEepromInterface()->getCapability(NumCurvePoints); if (fwpoints!=0) { if (fwpointsmimeData(); if(mimeData->hasFormat("application/x-companion9x")) { @@ -360,9 +360,9 @@ void ModelsListWidget::deleteSelected(bool ask=true) } if (isModel==true) { if (radioData->generalSettings.currModel != selModel) { - ret = QMessageBox::warning(this, "companion9x", tr("Delete Selected Models?"), QMessageBox::Yes | QMessageBox::No); + ret = QMessageBox::warning(this, "Companion", tr("Delete Selected Models?"), QMessageBox::Yes | QMessageBox::No); } else { - ret = QMessageBox::warning(this, "companion9x", tr("Cannot delete default model."), QMessageBox::Ok); + ret = QMessageBox::warning(this, "Companion", tr("Cannot delete default model."), QMessageBox::Ok); } } } @@ -373,9 +373,9 @@ void ModelsListWidget::deleteSelected(bool ask=true) ((MdiChild *)parent())->setModified(); } else if (index.row()>0) { if (ask) { - ret = QMessageBox::warning(this, "companion9x", tr("Cannot delete default model."), QMessageBox::Ok); + ret = QMessageBox::warning(this, "Companion", tr("Cannot delete default model."), QMessageBox::Ok); } else { - ret = QMessageBox::warning(this, "companion9x", tr("Cannot cut default model."), QMessageBox::Ok); + ret = QMessageBox::warning(this, "Companion", tr("Cannot cut default model."), QMessageBox::Ok); } } } @@ -456,7 +456,7 @@ void ModelsListWidget::doPaste(QByteArray *gmData, int index) } else { //model data if (!radioData->models[id-1].isempty()) { - ret = QMessageBox::question(this, "companion9x", tr("You are pasting on an not empty model, are you sure?"), + ret = QMessageBox::question(this, "Companion", tr("You are pasting on an not empty model, are you sure?"), QMessageBox::Yes | QMessageBox::No); if (ret == QMessageBox::Yes) { radioData->models[id-1] = *((ModelData *)gData); @@ -519,7 +519,7 @@ void ModelsListWidget::duplicate() i++; } if (i==GetEepromInterface()->getMaxModels()) { - QMessageBox::warning(this, "companion9x", tr("No free slot available, cannot duplicate"), QMessageBox::Ok); + QMessageBox::warning(this, "Companion", tr("No free slot available, cannot duplicate"), QMessageBox::Ok); } } } diff --git a/companion/src/preferencesdialog.cpp b/companion/src/preferencesdialog.cpp index 6afa8ee9a..9df07b69e 100644 --- a/companion/src/preferencesdialog.cpp +++ b/companion/src/preferencesdialog.cpp @@ -239,11 +239,11 @@ void preferencesDialog::firmwareChanged() } else { if (ui->fw_dnld->isEnabled()) { - ui->FwInfo->setText(tr("The selected firmware has never been downloaded by companion9x.")); + ui->FwInfo->setText(tr("The selected firmware has never been downloaded by Companion.")); ui->checkFWUpdates->hide(); } else { - ui->FwInfo->setText(tr("The selected firmware cannot be downloaded by companion9x.")); + ui->FwInfo->setText(tr("The selected firmware cannot be downloaded by Companion.")); ui->checkFWUpdates->hide(); } } @@ -660,7 +660,7 @@ void preferencesDialog::on_ProfSave_PB_clicked() QString profile=QString("profile%1").arg(ui->ProfSlot_SB->value()); QString name=ui->ProfName_LE->text(); if (name.isEmpty()) { - int ret = QMessageBox::question(this, "companion9x", + int ret = QMessageBox::question(this, "Companion", tr("Profile name is empty, profile slot %1 will be deleted.
Are you sure ?").arg(ui->ProfSlot_SB->value()) , QMessageBox::Yes | QMessageBox::No); if (ret==QMessageBox::Yes) { @@ -719,7 +719,7 @@ void preferencesDialog::on_import_PB_clicked() QString profile=QString("profile%1").arg(ui->ProfSlot_SB->value()); QString name=ui->ProfName_LE->text(); if (!name.isEmpty()) { - int ret = QMessageBox::question(this, "companion9x", + int ret = QMessageBox::question(this, "Companion", tr("Profile slot is not empty, profile slot %1 will we overwritten.
Are you sure ?").arg(ui->ProfSlot_SB->value()) , QMessageBox::Yes | QMessageBox::No); if (ret==QMessageBox::No) { diff --git a/companion/src/simulatordialog.cpp b/companion/src/simulatordialog.cpp index b55a4db82..0e3d2a688 100644 --- a/companion/src/simulatordialog.cpp +++ b/companion/src/simulatordialog.cpp @@ -227,7 +227,7 @@ void simulatorDialog::onTimerEvent() { static unsigned int lcd_counter = 0; if (!simulator->timer10ms()) { - QMessageBox::critical(this, "companion9x", QString(tr("Firmware %1 error: %2")).arg(txInterface->getName()).arg(simulator->getError())); + QMessageBox::critical(this, "Companion", QString(tr("Firmware %1 error: %2")).arg(txInterface->getName()).arg(simulator->getError())); timer->stop(); return; } diff --git a/companion/src/simulatordialog.ui b/companion/src/simulatordialog.ui index 2c9b67de3..004da67c6 100644 --- a/companion/src/simulatordialog.ui +++ b/companion/src/simulatordialog.ui @@ -23,7 +23,7 @@ - Companion9x Simulator + Companion Simulator @@ -1092,6 +1092,7 @@ QPushButton:checked { + @@ -1810,6 +1811,7 @@ QPushButton:checked { QFrame::Raised + 2 @@ -2294,6 +2296,7 @@ border-radius: 4px; + 0 diff --git a/companion/src/translations/companion9x_cs.ts b/companion/src/translations/companion9x_cs.ts index c6bef50cc..d656507aa 100644 --- a/companion/src/translations/companion9x_cs.ts +++ b/companion/src/translations/companion9x_cs.ts @@ -1239,9 +1239,9 @@ Opravdu to takto chcete ? - - - + + + File loaded Soubor byl načten @@ -1259,22 +1259,21 @@ Opravdu to takto chcete ? - - + + Unable to check for updates. Nelze ověřit aktualizace. - A new version of companion9x is available (version %1)<br>Would you like to download it? - Je dostupná nová verze companion9x (verze %1)<br>Chcete ji stáhnout nyní? + Je dostupná nová verze companion9x (verze %1)<br>Chcete ji stáhnout nyní? - - + + Save As Uložit jako @@ -1289,13 +1288,12 @@ Opravdu to takto chcete ? Je dostupné nové vydání - A new release of companion is available please check the repository - Je dostupné nové vydání companion9x, prosím zkontrolujte repozitář + Je dostupné nové vydání companion9x, prosím zkontrolujte repozitář - + No updates available at this time. žádné aktualizace nejsou nyní dostupné. @@ -1309,24 +1307,24 @@ Opravdu to takto chcete ? - - - - - - - - - + + + + + + + + + Error Chyba - - - + + + Error opening file %1: %2. Chyba při otevírání souboru %1: @@ -1366,10 +1364,8 @@ Opravdu to takto chcete ? Server companion je zaneprázdněn, zkuste to později - - Compilation server requires registration, please check opentx web site - Kompilační server vyžaduje registraci. Více najdete na webu opentx. + Kompilační server vyžaduje registraci. Více najdete na webu opentx. @@ -1382,7 +1378,7 @@ Opravdu to takto chcete ? Chcete nyní zapsat firmware do rádia ? - + Firmware %1 does not seem to have ever been downloaded. Version %2 is available. Do you want to download it now ? @@ -1391,31 +1387,31 @@ Verze %2 je dostupná. Chcete ho nyní stáhnout ? - - + + Yes Ano - - + + No Ne - - + + Release Notes Poznámky k vydání - - + + Do you want to download release %1 now ? Chcete nyní stáhnout vydání %1 ? - + A new version of %1 firmware is available (current %2 - newer %3). Do you want to download it now ? Nová verze firmware %1 je dostupná. @@ -1423,57 +1419,57 @@ Do you want to download it now ? Chcete ji stáhnout nyní ? - + Ignore this version (r%1)? Ignorovat tuto verzi (r%1)? - + Release notes contain very important informations. Do you want to see them now ? Poznámky k vydání mohou obsahovat důležité informace. Chcete si je přečíst nyní ? - + Open Otevřít - - + + File saved Soubor byl uložen - + Firmware updates Aktualizace firmwaru - + Current firmware does not provide release notes informations. K tomuto firmwaru nejsou poznámky k vydání. - + Cannot write file %1: %2. Nelze zapsat soubor %1: %2. - - - - - + + + + + Taranis radio not found Radio Taranis nenalezeno - - - - + + + + Impossible to identify the radio on your system, please verify the eeprom disk is connected. Nebylo možné identifikovat rádio ve vašem systému, zkontrolujte zda je eeprom disk připojen. @@ -1494,16 +1490,16 @@ nebyl rozpoznán jako platná EEPROM Chcete ji přesto naprogramovat? - - - + + + Backup is impossible Není možné zálohovat - - - + + + The backup dir set in preferences does not exist Složka pro zálohování zvolená v předvolbách neexistuje @@ -1516,8 +1512,8 @@ Chcete ji přesto naprogramovat? Nelze ověřit kompatibilitu EEprom! Mám přesto pokračovat? - - + + Warning Varování @@ -1538,7 +1534,7 @@ Chcete ji přesto naprogramovat? Zapsat do paměti FLASH rádia - + Conversion failed Porovnání selhalo @@ -1551,7 +1547,7 @@ Chcete ji přesto naprogramovat? Zapsat EEPROM do rádia - + Restore failed Zápis selhal @@ -1568,7 +1564,7 @@ Chcete ji přesto naprogramovat? Nemohu naprogramovat rádio, původní EEPROM najdete zde: %1 - + Backup failed Zálohování selhalo @@ -1585,19 +1581,12 @@ Chcete ji přesto naprogramovat? Načíst paměť FLASH z rádia do souboru - - - companion9x - Models and Settings Editor - %1 - profile %2 - companion9x - Editor nastavení rádia a modelů - %1 - profile %2 + companion9x - Editor nastavení rádia a modelů - %1 - profile %2 - - - - companion9x - Models and Settings Editor - %1 - companion9x - Editor nastavení rádia a modelů - %1 + companion9x - Editor nastavení rádia a modelů - %1 @@ -1605,10 +1594,10 @@ Chcete ji přesto naprogramovat? Chcete zapsat firmware do rádia nyní ? - - - - + + + + Read Models and Settings From Tx Načíst modely a nastavení z rádia @@ -1617,18 +1606,49 @@ Chcete ji přesto naprogramovat? Firmware does not longer fit in the Tx, due to selected firmware options Firmware s těmito vybranými součástmi, se již nevejde do rádia + + + + + Companion - Models and Settings Editor - %1 - profile %2 + + + + + + + + Companion - Models and Settings Editor - %1 + + + + + A new version of Companion is available (version %1)<br>Would you like to download it? + + + + + A new release of Companion is available please check the repository + + + + + + Compilation server requires registration, please check OpenTX web site + + Firmware does not fit in the Tx, due to selected firmware options Firmware s těmito vybranými součástmi, se již nevejde do rádia - + Write Models and settings from %1 to the Tx? Zapsat modely a nastavení z %1 do rádia? - + The file %1 has not been recognized as a valid Models and Settings file Write anyway ? @@ -1637,386 +1657,406 @@ neobsahuje platná data modelů a nastavení Chcete ho přesto zapsat ? - - - - - - + + + + + + Backup Models and Settings From Tx Zálohovat modely a nastavení z rádia - + Cannot check Models and Settings compatibility! Continue anyway? Nelze ověřit kompatibilitu dat modelů a nastavení! Chcete přesto pokračovat? - + The transmitter firmware belongs to another product family, check file and preferences! Firmware patří do jiné produktové rodiny, zkontrolujte nastavení předvoleb! - + The transmitter firmware is outdated, please upgrade! Firmware rádia je zastaralý, aktualizujte ho prosím! - + Write Models and Settings To Tx Zapsat modely a nastavení do rádia - - + + Write Firmware To Tx Zapsat firmware do rádia - + Cannot convert Models and Settings for use with this firmware, original data will be used Nemohu konvertovat modely a nastavení pro použití s tímto firmwarem, budou použita původní data - + Restore Models and Settings To Tx Obnovit modely a nastavení do rádia - + Could not restore Models and Settings to TX. The models and settings data file can be found at: %1 Nelze obnovit modely a nastavení do rádia. Soubor s modely a nastavením najdete v: %1 - + Firmware write failed Zápis firmware selhal - + Could not write firmware to to transmitter. The models and settings data file can be found at: %1 Nelze zapsat firmware do rádio. Data modelů a nastavení najdete v: %1 - + Cannot backup existing Models and Settings from TX. Firmware write process aborted Nemohu zálohovat stávající modely a nastavení z rádia. Zápis firmware byl přerušen - + Save transmitter Models and Settings to File Uložit modely a nastavení do souboru - + Impossible to identify the radio on your system, please verify that the eeprom disk is connected. Nebylo možné identifikovat rádio ve vašem systému, zkontrolujte zda je eeprom disk připojen. - + Read Tx Firmware to File Načíst firmware z rádia a uložit do souboru - + Copyright - + Version %1 (revision %2), %3 Verze %1 (revize %2), %3 - The companion9x project was originally forked from eePe - Projekt companion9x vznikl oddělením z eePe + Projekt companion9x vznikl oddělením z eePe - + If you've found this program useful, please support by Pokud vám byl tento program užitečný, podpořte jej - + donating darem - About companion9x - O aplikaci Companion9x + O aplikaci Companion9x - - - + + + &%1 %2 - + %1 %2 - + &New &Nový - + Create a new file Vytvořit nový soubor - + &Open... &Otevřít... - + Open an existing file Otevřít existující soubor - + &loadBackup... &Načíst zálohu... - + Load backup from file Načíst zálohu ze souboru - + &Save &Uložit - + Save the document to disk Uložit dokument na disk - + Save &As... Uložit j&ako... - + Save the document under a new name Uložit dokument s novým jménem - + Lo&gs Lo&gy - + Ctrl+G - + Open log file Otevřít soubor s logy - + &Preferences... &Předvolby... - + Edit general preferences Nastavení obecných předvoleb - + &Check for updates... &Zkontrolovat aktualizace... - Check for new version of companion9x/er9x - Zkontolovat dostupnost nové verze companion9x/er9x + Zkontolovat dostupnost nové verze companion9x/er9x - + Contributors &List... &Seznam přispěvatelů... - Show companion9x contributors list - Zobrazit seznam přispěvatelů companion9x + Zobrazit seznam přispěvatelů companion9x - + ChangeLog... Změny... - Show companion9x changelog - Zobrazit změny ve verzích companion9x + Zobrazit změny ve verzích companion9x - + + The Companion project was originally forked from eePe + + + + + About Companion + + + + + Check for new version of Companion + + + + + Show Companion contributors list + + + + + Show Companion changelog + + + + Firmware ChangeLog... Změny firmware... - + Show firmware changelog Zobrazit změny ve firmware - + Compare... Porovnat... - + Compare models Porovnat modely - + Customize your &TX... &Přizpůsobení loga... - + Customize the splash screen of your TX Přizpůsobení úvodního logo vašeho rádia - + E&xit U&končit - + Exit the application Ukončit aplikaci companion9x - + Cu&t &Vyjmout - + Cut the current selection's contents to the clipboard Vyjmout aktuální výběr a uložit do schránky - + &Copy &Kopírovat - + Copy the current selection's contents to the clipboard Kopírovat aktuální výběr do schránky - + &Paste &Vložit - + Paste the clipboard's contents into the current selection Vložit obsah schránky na aktuální pozici - + &Write Models and Settings To Tx &Zapsat modely a nastavení do rádia - + Write Models and Settings to transmitter Zapsat modely a nastavení do rádia - + &Read Models and Settings From Tx &Načíst modely a nastavení z rádia - + Read Models and Settings from transmitter Načíst modely a nastavení z rádia - + Write Firmware Zapsat firmware - + Write firmware to transmitter Zapsat firmware do rádia - + Write Models and Settings from file to Tx Zapsat modely a nastavení ze souboru do rádia - + Write Models and Settings from file to transmitter Zapsat modely a nastavení ze souboru do rádia - + Save transmitter Models and Settings to file Uložit modely a nastavení z rádia do souboru - + Save the Models and Settings from the transmitter to a file Uložit modely a nastavení z rádia do souboru - + Read Firmware Načíst firmware - + Read firmware from transmitter Načíst firmware z rádia - + Configure software for reading from and writing to the transmitter Nastavení softwaru pro čtení a zápis do rádia - + &Read/Write Čtení/&Zápis - + Write Zápis - - + + Invalid Models and Settings File %1 Neplatný soubor modelů a nastavení %1 - + Invalid binary Models and Settings File %1 Neplatný binární soubor modelů a nastavení %1 @@ -2025,7 +2065,7 @@ Chcete ho přesto zapsat ? &Zapsat do EEPROM rádia - + Ctrl+Alt+W @@ -2038,7 +2078,7 @@ Chcete ho přesto zapsat ? &Načíst EEPROM z rádia - + Ctrl+Alt+R @@ -2079,7 +2119,7 @@ Chcete ho přesto zapsat ? Načíst paměť FLASH z rádia - + &Configure... &Konfigurace... @@ -2088,154 +2128,154 @@ Chcete ho přesto zapsat ? Konfigurace programátoru - + &List programmers &Seznam programátorů - + List available programmers Seznam použitelných programátorů - + &Fuses... Pojistky &mikrokontroléru... - + Show fuses dialog Zobrazit dialog nastavení pojistek mikrokontroléru - + &Simulate &Simulátor - + Alt+S - + Simulate selected model. Simulovat vybraný model. - + &Print &Tisk - + Ctrl+P - + Print current model. Vytisknout aktuální model. - + Cl&ose &Zavřít - + Close the active window Zavřít aktivní okno - + Close &All Zavřít &Vše - + Close all the windows Zavřít všechna okna - + &Tile D&laždice - + Tile the windows Uspořádat okna jako dlaždice - + &Cascade &Kaskáda - + Cascade the windows Uspořádat okna do kaskády - + Ne&xt &Další - + Move the focus to the next window Aktivovat následující okno - + Pre&vious &Předchozí - + Move the focus to the previous window Aktivovat předchozí okno - + &About &O aplikaci - + Show the application's About box O aplikaci companion9x - + Switch layout direction Přepnout styl panelu - + Switch layout Left/Right Přepnout styl rozložení panelu vlevo/vpravo - - + + Recent Files Nedávné soubory - - + + Firmware Profiles Profily firmwaru - + &File &Soubor - + &Edit &Úpravy @@ -2244,22 +2284,22 @@ Chcete ho přesto zapsat ? &Programátor - + &Window &Okno - + &Help &Nápověda - + File Soubor - + Edit Úpravy @@ -2268,17 +2308,17 @@ Chcete ho přesto zapsat ? Programátor - + Help Nápověda - + Ready Připraven - + Unable to find file %1! Nemohu nalézt soubor %1! @@ -2287,7 +2327,7 @@ Chcete ho přesto zapsat ? Neplatný soubor EEPROM %1 - + Error reading file %1: %2. Chyba při otevírání souboru %1: @@ -2396,15 +2436,15 @@ Chcete ho přesto zapsat ? - - - companion9x - + Do you want to use model wizard? + Chcete použít průvodce nastavením modelu? - Do you want to use model wizard? - Chcete použít průvodce nastavením modelu? + + + Companion + @@ -7772,18 +7812,26 @@ Formát ukládání obrázku loga v nastavení předvoleb se změnil. Zkontrolujte si nastavení loga v předvolbách. - Thanks all for the donations, kind messages, nice ideas, constructive proposals etc. for the next openTX/C9x funding model. We are really sensible to that! The openTX/C9X Team. - Děkujeme všem za příspěvky, dobré nápady a přátelské emaily k chystenému modelu financování openTX/C9x. + Děkujeme všem za příspěvky, dobré nápady a přátelské emaily k chystenému modelu financování openTX/C9x. Vážíme si toho a nasloucháme! Tým OpenTX/C9X. + + + Thanks all for the donations, kind messages, nice ideas, constructive proposals etc. for the next OpenTX/Companion funding model. + +We are really appreciative for that! + +The OpenTX/Companion Team. + + avrOutputDialog @@ -8146,8 +8194,8 @@ m2560 pro V4 desky - companion9x - + Companion + @@ -8251,6 +8299,11 @@ m2560 pro V4 desky Browse for file Procházet ... + + + Allows Companion to write to older version of the firmware + + Backup and restore Models and Settings @@ -8262,9 +8315,8 @@ m2560 pro V4 desky Logo nastavené v předvolbách - Allows companion9x to write to older version of the firmware - Povolí zápis do starší verze firmware + Povolí zápis do starší verze firmware @@ -9147,29 +9199,39 @@ m2560 pro V4 desky Honors go to Rafal Tomczak (RadioClone) and Thomas Husterer (th9x) +of course. Also to Erez Raviv (er9x) and the fantastic eePe program +which was the staring point for OpenTX Companion. + + + + + Companion Release Notes + + + + Honors go to Rafal Tomczak (RadioClone) and Thomas Husterer (th9x) of course. Also to Erez Raviv (er9x) and it's fantastic eePe, from which companion9x was forked out. - Speciální poděkování patří Rafalu Tomczakovi (RadioClone), + Speciální poděkování patří Rafalu Tomczakovi (RadioClone), Thomasi Husteterovi (th9x) a také Erazovi Ravivovi(er9x) a jeho fantastickému eePe, na jehož základech companion9x vznikl. - + Thank you all !!! Děkujeme vám všem !!! - + Contributors Přispěvatelé - Companion9x Release Notes - Poznámky k vydání Companion9x + Poznámky k vydání Companion9x - + OpenTX Release Notes Poznámky k vydání OpenTX @@ -9324,8 +9386,8 @@ Obsahuje firmware podporu loga? - companion9x - + Companion + @@ -9668,9 +9730,13 @@ Tlačítkem Zrušit přerušíte kalibraci logsDialog - Companion9x log viewer - Companion9x - zobrazení logu + Companion9x - zobrazení logu + + + + Companion Log Viewer + @@ -9683,47 +9749,59 @@ Tlačítkem Zrušit přerušíte kalibraci Otevřít - + Zoom - + X - + Y - + Fly sessions Lety - + Telemetry logs Logy telemetrie - + Time Čas - + + Error + Chyba + + + + Cannot write file %1: +%2. + Nelze zapsat soubor %1: +%2. + + + Select your log file Vyberte soubor s logy - + Available fields Dostupná pole - + The selected logfile contains %1 invalid lines out of %2 total lines Zvolený soubor logu obsahuje %1neplatných řádků z celkových %2 @@ -10181,84 +10259,84 @@ Tlačítkem Zrušit přerušíte kalibraci Předvolby - + Check for selected Fw updates Aktualizace vybraného firmware - + Ask use of wizard for new models Zeptat se na použití průvodce pro nový model - + Invert Pixels Invertovat - - + + ... - + Remember switches in simulator Pamatovat si přepínače v simulátoru - + Enable Povolit - + Calibrate Kalibrovat - - - - + + + + Open Folder Vybrat složku - + FwInfo - + Check for updates Zkontrolovat aktualizace - + Open Image Načíst obrázek - + Language Jazyk - - + + Download Stáhnout - + Set language of voice. May be different from firmware language Vyberte jazykovou verzi hlasu tts(voice). Může být jiná než verze firmwaru - + Voice Hlas tts @@ -10309,63 +10387,63 @@ Může být jiná než verze firmwaru - + Ask for flashing after Download Po stažení firmwaru se zeptat, zda ho hned zapsat do rádia - + Export Profile Exportovat profil - + Import Profile Importovat profil - + Profile Name Název profilu - + Automatically add version number to the filename after download Přidat číslo verze do názvu souboru staženého firmwaru - + Save Profile Uložit profil - + Simu BackLight BackLight Color Barva podsvětlení Simu - + Blue Modrá - + Green Zelená - + Red Červená - + Orange Oranžová - + Yellow Žlutá @@ -10374,22 +10452,22 @@ Může být jiná než verze firmwaru Kontrolovat aktualizace vybraného firmwaru - + Check for updates on startup Aktualizace při spuštění - + Language (requires restart) Jazyk companion (vyžaduje restart) - + Custom TX splash screen Vlastní úvodní logo - + Channel order This is used by the templated to determine which channel goes to what number output. @@ -10399,27 +10477,27 @@ Toto je použito šablonami k určení který kanál patří ke kterému výstupu. - + Firmware - + Default Stick Mode Výchozí mód vysílačky - + Default Channel Order Výchozí pořadí kanálů - + Show Splash Screen Zobrazit úvodní logo - + Personal splash library Vlastní knihovna s logy @@ -10428,7 +10506,7 @@ který kanál patří ke kterému výstupu. Pamatovat polohu přepínačů - + Mode selection: Mode 1: @@ -10469,57 +10547,57 @@ Mode 4: - + Mode 1 (RUD ELE THR AIL) Mode 1 (Směr.Výšk.Plyn.Křid) - + Mode 2 (RUD THR ELE AIL) Mode 2 (Směr.Plyn.Výšk.Křid) - + Mode 3 (AIL ELE THR RUD) Mode 3 (Křid.Výšk.Plyn.Směr) - + Mode 4 (AIL THR ELE RUD) Mode 4 (Křid.Plyn.Výšk.Směr) - + Joystick - + Include companion splashes Zahrnout i výchozí loga - + Only user defined splashes Jen vlastní loga - + Splash library behaviour Chování knihovny s logy - + Automatic Backup Folder Složka pro automatické zálohy - + SD Structure path Cesta k obsahu SD karty - + Processor ID ID procesoru @@ -10529,7 +10607,17 @@ Mode 4: Počet položek nedávné historie - + + Find Executable + + + + + Google Earth Executable + + + + Profile slot Slot profilu @@ -10538,7 +10626,7 @@ Mode 4: Složka pro zálohy EEprom - + auto backup before write zálohovat před zápisem @@ -10547,53 +10635,66 @@ Mode 4: Složka zvukových dat - + Simulator capture folder Složka pro snímky obrazovky Simu - + Use clipboard only Kopírovat pouze do schránky - + Last downloaded release: %1 Naposledy stažené vydání: %1 - The selected firmware has never been downloaded by companion9x. - Zvolený firmware ještě nebyl stažen pomocí companion9x. + Zvolený firmware ještě nebyl stažen pomocí companion9x. - The selected firmware cannot be downloaded by companion9x. - Companion9x nemůže stáhnout zvolený firmware. + Companion9x nemůže stáhnout zvolený firmware. - + + The selected firmware has never been downloaded by Companion. + + + + + The selected firmware cannot be downloaded by Companion. + + + + Image stored in settings Logo nastavené v předvolbách - - + + No joysticks found Joystick nenalezen - + Select your Models and Settings backup folder Zvolte složku pro automatické zálohy modelů a nastavení - + + Select Google Earth executable + + + + Select the folder replicating your SD structure Vyberte složku která představuje obsah SD karty rádia - + Profile name is empty, profile slot %1 will be deleted.<br>Are you sure ? Název profilu je prázdný, slot %1 bude smazán.<br>Jste si jist ? @@ -10660,7 +10761,7 @@ zatim ve zkušební verzi Podpora DSM2 modulů s použitím PPM místo sériového protokolu - + Select your library folder Support for SD memory card Vyberte složkus s logy @@ -10739,7 +10840,7 @@ nutno zastavět hlasový modul Bez uživatelsky definovatelných křivek - + Select your snapshot folder Vyberte složku pro snímky obrazovky simulátoru @@ -10748,14 +10849,14 @@ nutno zastavět hlasový modul Vyber složku pro zálohování eeprom - - + + Error Chyba - - + + Cannot load %1. Nemohu načíst %1. @@ -10768,27 +10869,27 @@ nutno zastavět hlasový modul Název profilu je prázdný, slot %1 bude odstraněn.<br>Souhlasíte ? - + Export profile As Exportovat profil jako - + Profile slot is not empty, profile slot %1 will we overwritten.<br>Are you sure ? Slot profilu není prázdný, slot %1 bude přepsán.<br>Jste si jist ? - + Open Profile to import Zvolte profil k importu - + Open Image to load Otevřít soubor - + Images (%1) obrázky (%1) @@ -11397,9 +11498,13 @@ nutno zastavět hlasový modul simulatorDialog - Companion9x Simulator - Companion9x Simulátor + Companion9x Simulátor + + + + Companion Simulator + @@ -11514,157 +11619,157 @@ nutno zastavět hlasový modul 9x Simulátor - + Outputs Výstupy - + CS1 VS1 - + CS2 VS2 - + CS3 VS3 - + CS4 VS4 - + CS5 VS5 - + CS6 VS6 - + CS7 VS7 - + CS8 VS8 - + CS9 VS9 - + CSA VSA - + CSB VSB - + CSC VSC - + CSD VSD - + CSE VSE - + CSF VSF - + CSG VSG - + CSH VSH - + CSI VSI - + CSJ VSJ - + CSL VSL - + CSM VSM - + CSN VSN - + CSO VSO - + CSP VSP - + CSQ VSQ - + CSR VSR - + CSS VSS - + CST VST - + CSU VSU - + CSV VSV @@ -11750,7 +11855,7 @@ nutno zastavět hlasový modul VSJ - + CSK SWK VSK @@ -11800,108 +11905,108 @@ nutno zastavět hlasový modul VSV - + CSW SWW VSW - + CH1 - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + -100.1 - + CH9 - + CH2 - + CH10 - + CH3 - + CH11 - + CH4 - + CH12 - + CH5 - + CH13 - + CH6 - + CH14 - + CH7 - + CH15 - + CH8 - + CH16 @@ -11983,9 +12088,8 @@ nutno zastavět hlasový modul xsimulatorDialog - Companion9x Simulator - Companion9x Simulátor + Companion9x Simulátor @@ -12223,6 +12327,11 @@ nutno zastavět hlasový modul Taranis Simulator Taranis Simulátor + + + Companion Simulator + + @@ -12230,16 +12339,16 @@ nutno zastavět hlasový modul - - - - - - - - - - + + + + + + + + + + -100.1 @@ -12274,207 +12383,207 @@ nutno zastavět hlasový modul - + CH12 - + CH5 - + CH13 - + CH6 - + CH14 - + CH7 - + CH15 - + CH8 - + CH16 - + CSK VSK - + CSC VSC - + CSD VSD - + CS7 VS7 - + CSL VSL - + CSB VSB - + CS1 VS1 - + CSH VSH - + CSG VSG - + CSE VSE - + CSF VSF - + CS8 VS8 - + CS9 VS9 - + CSA VSA - + CSM VSM - + CSJ VSJ - + CSI VSI - + CS4 VS4 - + CS5 VS5 - + CS2 VS2 - + CS3 VS3 - + CS6 VS6 - + CSN VSN - + CSO VSO - + CSP VSP - + CSQ VSQ - + CSR VSR - + CSS VSS - + CST VST - + CSU VSU - + CSV VSV - + CSW VSW diff --git a/companion/src/translations/companion9x_de.ts b/companion/src/translations/companion9x_de.ts index 23280e633..fd62aa4cd 100644 --- a/companion/src/translations/companion9x_de.ts +++ b/companion/src/translations/companion9x_de.ts @@ -1304,9 +1304,9 @@ Are you sure ? - - - + + + File loaded Datei geladen @@ -1322,8 +1322,8 @@ Are you sure ? - - + + Save As Speichern unter @@ -1333,7 +1333,7 @@ Are you sure ? - + No updates available at this time. Kein Update vorhanden. @@ -1341,8 +1341,8 @@ Are you sure ? - - + + Unable to check for updates. Kann nicht auf Updates überprüfen. @@ -1365,14 +1365,20 @@ Are you sure ? Möchtest Du das Installationsprogramm starten ? - + + + Compilation server requires registration, please check OpenTX web site + + + + A new version of %1 firmware is available (current %2 - newer %3). Do you want to download it now ? Eine neue Version der %1-Firmware ist verfügbar (aktuell %2 - neueste %3).. Möchten Sie sie jetzt herunterladen? - + Open Öffnen @@ -1381,8 +1387,8 @@ Möchten Sie sie jetzt herunterladen? EEPROM Dateien (*.bin *.hex);;BIN Dateien (*.bin);;HEX Dateien (*.hex) - - + + File saved Datei gespeichert @@ -1423,7 +1429,7 @@ Möchten Sie sie jetzt herunterladen? Lese Flash und speichere in Datei - + Copyright Copyright @@ -1433,7 +1439,7 @@ Möchten Sie sie jetzt herunterladen? Wenn Du dieses Programm und/oder die Firmware nützlich findest dann unterstütze uns durch - + donating spenden @@ -1442,69 +1448,69 @@ Möchten Sie sie jetzt herunterladen? Über eePe - - - + + + &%1 %2 &%1 %2 - + %1 %2 %1 %2 - + &New &Neu - + Create a new file Neue Datei erstellen - + &Open... Datei ö&ffnen... - + Open an existing file Öffne eine bestehende Datei - + &Save Datei &speichern - + Save the document to disk Speichere das Dokument auf Festplatte - + Save &As... Speichern &unter... - + Save the document under a new name Speichere das Dokument unter einem neuen Namen - + &Preferences... &Einstellungen... - + Edit general preferences Bearbeite generelle Einstellungen - + &Check for updates... &Überprüfe auf Updates... @@ -1518,44 +1524,38 @@ Möchten Sie sie jetzt herunterladen? - A new version of companion9x is available (version %1)<br>Would you like to download it? Wether in french, which form of address do you prefer? - Eine neue Version von companion9x ist verfügbar (version %1)<br>Möchten Sie sie herunterladen? + Eine neue Version von companion9x ist verfügbar (version %1)<br>Möchten Sie sie herunterladen? New release available - - - A new release of companion is available please check the repository - - - - - - - - - - - + + + + + + + + + Error Fehler - - - + + + Error opening file %1: %2. Fehler beim Öffnen der Datei %1: @@ -1571,6 +1571,31 @@ Möchten Sie sie jetzt herunterladen? Display previous message again at startup ? + + + + + Companion - Models and Settings Editor - %1 - profile %2 + + + + + + + + Companion - Models and Settings Editor - %1 + + + + + A new version of Companion is available (version %1)<br>Would you like to download it? + + + + + A new release of Companion is available please check the repository + + Firmware does not longer fit in the Tx, due to selected firmware options @@ -1587,12 +1612,6 @@ Möchten Sie sie jetzt herunterladen? Compilation server too busy, try later - - - - Compilation server requires registration, please check opentx web site - - @@ -1605,7 +1624,7 @@ Möchten Sie sie jetzt herunterladen? - + Firmware %1 does not seem to have ever been downloaded. Version %2 is available. Do you want to download it now ? @@ -1614,65 +1633,65 @@ Version %2 ist verfügbar. Möchten Sie sie jetzt herunterladen? - - + + Yes Ja - - + + No Nein - - + + Release Notes - - + + Do you want to download release %1 now ? - + Release notes contain very important informations. Do you want to see them now ? - + Firmware updates - + Current firmware does not provide release notes informations. - + Cannot write file %1: %2. Kann Datei %1: %2 nicht schreiben. - - - - - + + + + + Taranis radio not found - - - - + + + + Impossible to identify the radio on your system, please verify the eeprom disk is connected. @@ -1685,16 +1704,16 @@ wurde nicht als gültige EEPROM Datei erkannt. Trotzdem brennen? - - - + + + Backup is impossible - - - + + + The backup dir set in preferences does not exist @@ -1703,8 +1722,8 @@ Trotzdem brennen? Sicherung EEPROM von Tx - - + + Warning Warnung @@ -1713,7 +1732,7 @@ Trotzdem brennen? Brenne Flash in den Tx - + Conversion failed Umwandlung gescheitert @@ -1726,7 +1745,7 @@ Trotzdem brennen? EEPROM in Tx zurückspeichern - + Restore failed Zurückspeicherung gescheitert @@ -1743,7 +1762,7 @@ Trotzdem brennen? Flashen des Tx nicht möglich, ursprüngliche EEProm Dateil ist verfügbar unter: %1 - + Backup failed Sicherung fehlgeschlagen @@ -1751,340 +1770,341 @@ Trotzdem brennen? Cannot backup existing EEProm from TX, Flash process aborted Sicherung des bestehenden EEEPROMs vom Tx gescheitert, Flash Prozess abgebrochen - - - - - companion9x - Models and Settings Editor - %1 - profile %2 - - - - - - - - companion9x - Models and Settings Editor - %1 - - Do you want to write the firmware to the transmitter now ? - - - - + + + + Read Models and Settings From Tx - + Write Models and settings from %1 to the Tx? - + The file %1 has not been recognized as a valid Models and Settings file Write anyway ? - - - - - - + + + + + + Backup Models and Settings From Tx - + Cannot check Models and Settings compatibility! Continue anyway? - + The transmitter firmware belongs to another product family, check file and preferences! - + The transmitter firmware is outdated, please upgrade! - + Write Models and Settings To Tx - - + + Write Firmware To Tx - + Cannot convert Models and Settings for use with this firmware, original data will be used - + Restore Models and Settings To Tx - + Could not restore Models and Settings to TX. The models and settings data file can be found at: %1 - + Firmware write failed - + Could not write firmware to to transmitter. The models and settings data file can be found at: %1 - + Cannot backup existing Models and Settings from TX. Firmware write process aborted - + Save transmitter Models and Settings to File - + Impossible to identify the radio on your system, please verify that the eeprom disk is connected. - + Read Tx Firmware to File - + Version %1 (revision %2), %3 Version %1 (Revision %2), %3 - The companion9x project was originally forked from eePe - Das 'companion9x' Projekt ist ursprünglich aus eePe entstanden. + Das 'companion9x' Projekt ist ursprünglich aus eePe entstanden. - + If you've found this program useful, please support by Wenn Sie diese Programm hilfreich finden, bitte unterstützen Sie - About companion9x - Über companion9x + Über companion9x - + &loadBackup... - + Load backup from file - + Lo&gs - + Ctrl+G - + Open log file - Check for new version of companion9x/er9x - Überprüfe auf neue Version von companion9x/er9x + Überprüfe auf neue Version von companion9x/er9x - + Contributors &List... &Mitwirkende... - Show companion9x contributors list - Zeige die Liste der Mitwirkenden von 'companion9x' + Zeige die Liste der Mitwirkenden von 'companion9x' - + ChangeLog... - - Show companion9x changelog + + The Companion project was originally forked from eePe - - Firmware ChangeLog... + + About Companion + + + + + Check for new version of Companion + + + + + Show Companion contributors list + + + + + Show Companion changelog + Firmware ChangeLog... + + + + Show firmware changelog - + Compare... - + Compare models - + Customize your &TX... Passe Deinen &TX an... - + Customize the splash screen of your TX Persönliche Anpassung des Tx Startbildschirmes - + E&xit Be&enden - + Exit the application Beendet die Anwendung - + Cu&t &Ausschneiden - + Cut the current selection's contents to the clipboard Scheidet die momentane Auwahl aus und kopiert den Inhalt in den Zwischenspeicher - + &Copy &Kopieren - + Copy the current selection's contents to the clipboard Kopiert die momentane Auswahl in den Zwischenspeicher - + &Paste &Einfügen - + Paste the clipboard's contents into the current selection Fügt den Inhalt des Zwischenspeichers in die momentane Auswahl ein - + &Write Models and Settings To Tx - + Write Models and Settings to transmitter - + &Read Models and Settings From Tx - + Read Models and Settings from transmitter - + Write Firmware - + Write firmware to transmitter - + Write Models and Settings from file to Tx - + Write Models and Settings from file to transmitter - + Save transmitter Models and Settings to file - + Save the Models and Settings from the transmitter to a file - + Read Firmware - + Read firmware from transmitter - + Configure software for reading from and writing to the transmitter - - + + Invalid Models and Settings File %1 - + Invalid binary Models and Settings File %1 @@ -2093,7 +2113,7 @@ Write anyway ? &Schreibe EEPROM in den Sender - + Ctrl+Alt+W Ctrl+Alt+W @@ -2106,7 +2126,7 @@ Write anyway ? &Lese EEPROM vom Sender - + Ctrl+Alt+R Ctrl+Alt+R @@ -2147,7 +2167,7 @@ Write anyway ? Lese Flash Speicher und schreibe in den Sender - + &Configure... &Einstellungen... @@ -2156,143 +2176,143 @@ Write anyway ? Einstellungen Brennsoftware - + &List programmers &Programmiergeräte - + List available programmers Programmiergeräte - + &Fuses... &Fuses... - + Show fuses dialog Zeige Fuses Einstellungen - + &Simulate &Simulation - + Alt+S Alt+S - + Simulate selected model. Simuliert das ausgewählte Modell. - + &Print &Drucken - + Ctrl+P Ctrl+P - + Print current model. Drucke momentane Modelleinstellungen. - + Cl&ose &Schliessen - + Close the active window Schliesst das aktuelle Fenster - + Close &All Schliesse &Alles - + Close all the windows Schliesst alle Fenster - + &Tile &Anordnen - + Tile the windows Nebeneinander Ordnen von Fenstern - + &Cascade &Kaskadieren - + Cascade the windows Kaskadiere die Fenster - + Ne&xt Nä&chstes - + Move the focus to the next window Nächstes Fenster aufrufen - + Pre&vious Vor&hergehendes - + Move the focus to the previous window Vorhergehendes Fenster aufrufen - + &About &Über - + Show the application's About box Zeige das Infofenster - - + + Recent Files Letzte Dateien - + &Read/Write - + Write - + Unable to find file %1! Kann die Datei %1 nicht finden ! @@ -2301,7 +2321,7 @@ Write anyway ? Ungültige EEPROM Datei %1 - + Error reading file %1: %2. Fehler beim Lesen der Datei %1: @@ -2320,23 +2340,23 @@ Write anyway ? Zeige die er9x/eePe Mitwirkende - + Switch layout Left/Right Schalte Layout um Rechts/Links - - + + Firmware Profiles - + &File &Datei - + Switch layout direction Schalte Programmlayout um @@ -2350,7 +2370,7 @@ Write anyway ? Überprüfe auf Updates - + Ignore this version (r%1)? Diese Version ignorieren (%1)? @@ -2359,7 +2379,7 @@ Write anyway ? Eine neue Version von eePe ist vorhanden /r%1)<br>Möchtest Du diese herunterladen ? - + &Edit &Bearbeiten @@ -2368,22 +2388,22 @@ Write anyway ? B&rennen - + &Window &Fenster - + &Help &Hilfe - + File Datei - + Edit Bearbeiten @@ -2392,12 +2412,12 @@ Write anyway ? Brennen - + Help Hilfe - + Ready Fertig @@ -2562,6 +2582,13 @@ Möchtest Du die Änderungen speichern ? Do you want to use model wizard? + + + + + Companion + + Ask this question again ? @@ -2646,11 +2673,8 @@ Möchtest Du die Änderungen speichern ? - - - companion9x - companion9x + companion9x @@ -8253,11 +8277,11 @@ Right - Thanks all for the donations, kind messages, nice ideas, constructive proposals etc. for the next openTX/C9x funding model. + Thanks all for the donations, kind messages, nice ideas, constructive proposals etc. for the next OpenTX/Companion funding model. -We are really sensible to that! +We are really appreciative for that! -The openTX/C9X Team. +The OpenTX/Companion Team. @@ -8640,8 +8664,12 @@ Bitte nutze dies nur wenn Du weißt was Du machst. Es gibt keine Plausibilitäts + Companion + + + companion9x - companion9x + companion9x @@ -8768,6 +8796,11 @@ m2560 fürRadios mit v4.1 Boards Substitute image in firmware Ersetze Bild in Firmware + + + Allows Companion to write to older version of the firmware + + Backup and restore Models and Settings @@ -8800,11 +8833,6 @@ m2560 fürRadios mit v4.1 Boards Browse for file - - - Allows companion9x to write to older version of the firmware - - Check Firmware compatibility @@ -9671,29 +9699,35 @@ m2560 fürRadios mit v4.1 Boards Honors go to Rafal Tomczak (RadioClone) and Thomas Husterer (th9x) +of course. Also to Erez Raviv (er9x) and the fantastic eePe program +which was the staring point for OpenTX Companion. + + + + + Companion Release Notes + + + + Honors go to Rafal Tomczak (RadioClone) and Thomas Husterer (th9x) of course. Also to Erez Raviv (er9x) and it's fantastic eePe, from which companion9x was forked out. - Ehre gebührt Rafal Tomczak (RadioClone) und natürlich Thomas + Ehre gebührt Rafal Tomczak (RadioClone) und natürlich Thomas Husterer (th9x) und auch Erez Raviv (er9x) und sein fantastisches eePe, worauf companion9x basiert. - + Thank you all !!! Besten Dank an alle! - + Contributors Mitwirkende - - Companion9x Release Notes - - - - + OpenTX Release Notes @@ -9858,8 +9892,12 @@ p, li { white-space: pre-wrap; } + Companion + + + companion9x - companion9x + companion9x eePe @@ -10279,7 +10317,7 @@ Wähle "abbrechen", um die Kalibration abzubrechen logsDialog - Companion9x log viewer + Companion Log Viewer @@ -10293,47 +10331,59 @@ Wähle "abbrechen", um die Kalibration abzubrechen - + Zoom - + X - + Y - + Fly sessions - + Telemetry logs - + Time - + + Error + Fehler + + + + Cannot write file %1: +%2. + Kann Datei %1: +%2 nicht schreiben. + + + Select your log file - + Available fields - + The selected logfile contains %1 invalid lines out of %2 total lines @@ -10791,7 +10841,7 @@ Wähle "abbrechen", um die Kalibration abzubrechen Einstellungen - + Language (requires restart) Sprache (Benötigt Neustart) @@ -10804,7 +10854,7 @@ Wähle "abbrechen", um die Kalibration abzubrechen eePe - + Show Splash Screen Startbild anzeigen @@ -10830,18 +10880,18 @@ Wähle "abbrechen", um die Kalibration abzubrechen Anzahl zuletzt geöffnete Dateien - - + + Download Download - + Default Channel Order Standardeinstellung Kanalzuordnung - + Channel order This is used by the templated to determine which channel goes to what number output. @@ -10850,12 +10900,12 @@ This is used by the templated to determine which channel goes to what number out Hier wird die Zuordnung der Kanäle zum Ausgang festgelegt. - + Default Stick Mode Standard Knüppelmodus - + Mode selection: Mode 1: @@ -10900,117 +10950,117 @@ Mode 4: Prüfe ausgewählte Fw Updates - + Mode 1 (RUD ELE THR AIL) Mode 1 (RUD ELE THR AIL) - + Mode 2 (RUD THR ELE AIL) Mode 2 (RUD THR ELE AIL) - + Mode 3 (AIL ELE THR RUD) Mode 3 (AIL ELE THR RUD) - + Mode 4 (AIL THR ELE RUD) Mode 4 (AIL THR ELE RUD) - + Automatic Backup Folder - + Automatically add version number to the filename after download - + Voice - + Set language of voice. May be different from firmware language - + Firmware Firmware - + Check for updates on startup Überprüfe auf Aktualisierung beim Start - - + + ... ... - + Splash library behaviour Verhalten Startbild Bibliothek - + Include companion splashes 'companion' Startbilder einschliessen - + Only user defined splashes Nur Benutzer Startbilder - + Custom TX splash screen Benutzer Startbild - + Personal splash library Benutzer Startbild Bibliothek - + Joystick Joystick - - - - + + + + Open Folder Verzeichnis öffnen - + SD Structure path - + Processor ID - + Simulator capture folder - + Use clipboard only @@ -11061,113 +11111,123 @@ May be different from firmware language CheckBox - + Check for updates Prüfe für Updates - + Language - + Profile Name - + Export Profile - + Save Profile - + Import Profile - + Simu BackLight - + Check for selected Fw updates - + Ask use of wizard for new models - + Remember switches in simulator - + Blue Blu blau - + Green grün - + Red rot - + Orange orange - + Yellow gelb - + Profile slot - + auto backup before write - + + Find Executable + + + + + Google Earth Executable + + + + Ask for flashing after Download - + Enable aktivieren - + Calibrate kalibrieren - + Open Image Bild öffnen - + Invert Pixels Pixel invertieren @@ -11176,63 +11236,66 @@ May be different from firmware language HG Beleuchtung - + FwInfo FwInfo - + Last downloaded release: %1 Letzte geladene Version: %1 - The selected firmware has never been downloaded by companion9x. - Die gewählte Firmware wurde noch nie von companion9x geladen. + Die gewählte Firmware wurde noch nie von companion9x geladen. - The selected firmware cannot be downloaded by companion9x. - Die gewählte Firmware kann von companio9x nicht geladen werden. + Die gewählte Firmware kann von companio9x nicht geladen werden. - + Image stored in settings Gewähltes Bild in Einstellungen - - + + No joysticks found kein Joystick gefunden - + Select your Models and Settings backup folder - + + Select Google Earth executable + + + + Select the folder replicating your SD structure - + Profile name is empty, profile slot %1 will be deleted.<br>Are you sure ? - + Export profile As - + Profile slot is not empty, profile slot %1 will we overwritten.<br>Are you sure ? - + Open Profile to import @@ -11241,34 +11304,44 @@ May be different from firmware language Bitte Bibliothek Verzeichnis wählen - + Open Image to load Bilddatei öffnen - + Images (%1) Bilder (%1) - - + + Error Fehler - + + The selected firmware has never been downloaded by Companion. + + + + + The selected firmware cannot be downloaded by Companion. + + + + Select your library folder - + Select your snapshot folder - - + + Cannot load %1. Kann %1 nicht laden. @@ -12026,10 +12099,9 @@ May be different from firmware language simulatorDialog - Companion9x Simulator ER9x Simulator - Companion9x Simulator + Companion9x Simulator @@ -12165,7 +12237,7 @@ May be different from firmware language 9x Simulator - + Outputs Ausgaben @@ -12205,264 +12277,269 @@ May be different from firmware language SW12 - + CSK SWK - + CS1 - + + Companion Simulator + + + + CS2 - + CS3 - + CS4 - + CS5 - + CS6 - + CS7 - + CS8 - + CS9 - + CSA - + CSB - + CSC - + CSD - + CSE - + CSF - + CSG - + CSH - + CSI - + CSJ - + CSL - + CSM - + CSN - + CSO - + CSP - + CSQ - + CSR - + CSS - + CST - + CSU - + CSV - + CSW SWW - + CH1 CH1 - + CH9 CH9 - + CH2 CH2 - + CH10 CH10 - + CH3 CH3 - + CH11 CH11 - + CH4 CH4 - + CH12 CH12 - + CH5 CH5 - + CH13 CH13 - + CH6 CH6 - + CH14 CH14 - + CH7 CH7 - + CH15 CH15 - + CH8 CH8 - + CH16 CH16 - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + -100.1 -100.1 @@ -12544,9 +12621,8 @@ May be different from firmware language xsimulatorDialog - Companion9x Simulator - Companion9x Simulator + Companion9x Simulator @@ -12655,7 +12731,7 @@ May be different from firmware language Ausgaben - + CSK SWK @@ -12723,6 +12799,11 @@ May be different from firmware language S2 + + + Companion Simulator + + @@ -12753,16 +12834,16 @@ May be different from firmware language - - - - - - - - - - + + + + + + + + + + -100.1 -100.1 @@ -12797,202 +12878,202 @@ May be different from firmware language CH4 - + CH12 CH12 - + CH5 CH5 - + CH13 CH13 - + CH6 CH6 - + CH14 CH14 - + CH7 CH7 - + CH15 CH15 - + CH8 CH8 - + CH16 CH16 - + CSC - + CSD - + CS7 - + CSL - + CSB - + CS1 - + CSH - + CSG - + CSE - + CSF - + CS8 - + CS9 - + CSA - + CSM - + CSJ - + CSI - + CS4 - + CS5 - + CS2 - + CS3 - + CS6 - + CSN - + CSO - + CSP - + CSQ - + CSR - + CSS - + CST - + CSU - + CSV - + CSW SWW diff --git a/companion/src/translations/companion9x_fr.ts b/companion/src/translations/companion9x_fr.ts index 46f1297e4..d62d3e8c8 100644 --- a/companion/src/translations/companion9x_fr.ts +++ b/companion/src/translations/companion9x_fr.ts @@ -1202,7 +1202,7 @@ Are you sure ? MainWindow - + &New &Nouveau @@ -1211,17 +1211,17 @@ Are you sure ? Flasher - + Cu&t C&ouper - + Edit Edition - + File Fichier @@ -1240,33 +1240,32 @@ Are you sure ? Nouvelle version disponible - A new release of companion is available please check the repository - Une nouvelle version de companion9x est disponible, veuillez vérifier dans l'espace de téléchargement + Une nouvelle version de companion9x est disponible, veuillez vérifier dans l'espace de téléchargement - - - - - - - - - + + + + + + + + + Error Erreur - - - + + + Error opening file %1: %2. Erreur à l'ouverture du fichier %1: @@ -1306,10 +1305,8 @@ Are you sure ? Serveur de compilation trop occupé - - Compilation server requires registration, please check opentx web site - Le serveur de compilation nécessite d'être enregistré, veuillez vous référer au site web d'openTx + Le serveur de compilation nécessite d'être enregistré, veuillez vous référer au site web d'openTx @@ -1322,70 +1319,70 @@ Are you sure ? Voulez-vous flasher ce firmware maintenant ? - - + + Yes Oui - - + + No Non - - + + Release Notes Release Notes - - + + Do you want to download release %1 now ? Voulez-vous télécharger la release %1 ? - + Release notes contain very important informations. Do you want to see them now ? Les notes de version contiennent des informations très importantes. Voulez-vous les voir maintenant? - + Open Ouvrir - + Firmware updates Mises à jour de firmware - + Current firmware does not provide release notes informations. Le firmware actuel ne contient pas de notes de version. - + Cannot write file %1: %2. Ecriture fichier %1 impossible: %2. - - - - - + + + + + Taranis radio not found Radio Taranis non détectée - - - - + + + + Impossible to identify the radio on your system, please verify the eeprom disk is connected. Impossible de trouver la radio, vérifiez qu'elle est bien sous tension et connectée. @@ -1396,16 +1393,16 @@ Burn anyway ? Le fichier %1 n'est pas reconnu comme une EEPROM valide. Confirmer le transfert ? - - - + + + Backup is impossible Sauvegarde impossible - - - + + + The backup dir set in preferences does not exist Le dossier de sauvegarde configuré dans les préférences n'existe pas @@ -1418,8 +1415,8 @@ Burn anyway ? Impossible de vérifier la compatibilité de l'EEPROM! Continuer quand même? - - + + Warning Avertissement @@ -1440,7 +1437,7 @@ Burn anyway ? Flasher l'émetteur - + Conversion failed La conversion a échoué @@ -1453,7 +1450,7 @@ Burn anyway ? Restaurer l'EEPROM vers l'émetteur - + Restore failed Erreur lors de la restauration @@ -1470,7 +1467,7 @@ Burn anyway ? Impossible de flasher l'émetteur, l'EEPROM d'origine se trouve dans : %1 - + Backup failed Erreur lors de la sauvegarde @@ -1479,87 +1476,86 @@ Burn anyway ? Impossible de sauvegarder l'EEPROM. Flashage annulé - + %1 %2 - + &loadBackup... c&harger sauvegarde... - + Load backup from file Charger une sauvegarde à partir du fichier - + Lo&gs - + Ctrl+G - + Open log file Ouvrir fichier de log - + ChangeLog... Historique des changements... - Show companion9x changelog - Historique des changements de companion9x + Historique des changements de companion9x - + Firmware ChangeLog... Historique des changements du firmware... - + Show firmware changelog Montrer l'historique des changements du firmware - + Compare... Comparer... - + Compare models Comparer les modèles - + Configure software for reading from and writing to the transmitter Configure le programme pour communiquer correctement avec la radio - + Show fuses dialog Afficher les réglages des fusibles - + &Read/Write &Lire/Ecrire - + Write Ecrire - + Unable to find file %1! Fichier %1 introuvable! @@ -1568,7 +1564,7 @@ Burn anyway ? Fichier EEPROM %1 invalide - + Error reading file %1: %2. Fichier %1 corrompu: @@ -1587,78 +1583,119 @@ Burn anyway ? Fl&asher - + &Copy &Copier - + &Edit Éditio&n - + &File &Fichier - + &Help &Aide - + &Save &Enregistrer - + &Tile &Mosaïque - + E&xit &Quitter - + Alt+S - + &Simulate &Simulation + + + + + Companion - Models and Settings Editor - %1 - profile %2 + + + + + + + + Companion - Models and Settings Editor - %1 + + + + + A new version of Companion is available (version %1)<br>Would you like to download it? + + + + + A new release of Companion is available please check the repository + + Firmware does not longer fit in the Tx, due to selected firmware options Le firmware sélectionné est trop gros pour la mémoire de la radio, veuillez sélectionner moins d'options + + + + Compilation server requires registration, please check OpenTX web site + + Firmware does not fit in the Tx, due to selected firmware options Le firmware sélectionné est trop gros pour la mémoire de la radio, veuillez sélectionner moins d'options - + Write Models and settings from %1 to the Tx? Ecrire les réglages et modèles de %1 dans la radio? - + + Show Companion contributors list + + + + + Show Companion changelog + + + + Ne&xt Sui&vante - - + + Firmware Profiles Profils de firmware - + Ready Prêt @@ -1667,39 +1704,39 @@ Burn anyway ? Enregistrer la mémoire Flash sous - + Show the application's About box Afficher la fenêtre "A propos" de l'application - - - + + + &%1 %2 - + &About &À Propos - + &Paste Co&ller - + &Print Im&primer - + Save &As... Enregistrer &Sous... - + Cascade the windows Disposer les fenêtres en cascade @@ -1708,32 +1745,32 @@ Burn anyway ? Lire la mémoire Flash - + Paste the clipboard's contents into the current selection Coller le contenu du presse-papier à l'emplacement sélectionné - + Open an existing file Ouvrir un fichier existant - + &Configure... &Configurer la communication... - + Cl&ose &Fermer - + Ctrl+P - + Print current model. Imprimer les données du modèle sélectionné. @@ -1742,7 +1779,7 @@ Burn anyway ? Charger l'EEPROM de l'émetteur - + Close all the windows Fermer toutes les fenêtres @@ -1751,56 +1788,56 @@ Burn anyway ? Écrire dans la mémoire Flash de l'émetteur - + donating don - + &Open... &Ouvrir... - + Create a new file Créer un nouveau fichier - + Close the active window Fermer la fenêtre active - - - + + + File loaded Fichier chargé - - + + File saved Fichier sauvegardé - + Switch layout direction Inverser l'interface - + Move the focus to the previous window Activer la fenêtre précedente - + Pre&vious P&récédente - + Exit the application Quitter l'application @@ -1809,32 +1846,32 @@ Burn anyway ? Écrire la mémoire Flash - + List available programmers Lister les programmateurs supportés - + Save the document to disk Enregistrer sur le disque - + Close &All Fermer To&ut - + &Cascade &Cascade - + Simulate selected model. Simuler le modèle sélectionné - + Tile the windows Disposer les fenêtres en mosaïque @@ -1843,47 +1880,46 @@ Burn anyway ? Lire la mémoire Flash de l'émetteur - + Save the document under a new name Enregistrer sous un nom différent - + &Window Fe&nêtre - + Edit general preferences Définir les préférences générales - + &Preferences... &Préférences... - About companion9x - À propos de companion9x + À propos de companion9x - + &Fuses... &Fusibles... - + Copy the current selection's contents to the clipboard Copier la sélection dans le presse-papier - + Move the focus to the next window Activer la fenêtre suivante - + &List programmers &Programmateurs supportés @@ -1892,17 +1928,17 @@ Burn anyway ? Transférer l'EEPROM vers l'émetteur - + Cut the current selection's contents to the clipboard Couper la sélection et la copier dans le presse-papier - + Ctrl+Alt+R - + Ctrl+Alt+W @@ -1923,22 +1959,21 @@ Burn anyway ? Enregistrer l'EEPROM de l'émetteur dans un fichier - + Version %1 (revision %2), %3 Version %1 (révision %2), %3 - The companion9x project was originally forked from eePe - Le projet companion9x a été créé à partir de eePe + Le projet companion9x a été créé à partir de eePe - + Customize your &TX... &Personnaliser votre émetteur... - + Customize the splash screen of your TX Personnaliser l'écran de démarrage de votre émetteur @@ -1962,8 +1997,8 @@ Burn anyway ? - - + + Save As Enregistrer Sous @@ -1974,7 +2009,7 @@ Burn anyway ? - + No updates available at this time. Aucune mise à jour disponible. @@ -1982,8 +2017,8 @@ Burn anyway ? - - + + Unable to check for updates. Impossible de rechercher des mises à jour. @@ -1993,7 +2028,7 @@ Burn anyway ? Voulez-vous lancer l'installation ? - + A new version of %1 firmware is available (current %2 - newer %3). Do you want to download it now ? Une nouvelle version du firmware %1 est disponible (courante %2 - nouvelle %3). @@ -2004,32 +2039,31 @@ Voulez vous la télécharger maintenant ? Transférer %1 dans la mémoire EEPROM de l'émetteur ? - + &Check for updates... Re&chercher des mises à jour... - Check for new version of companion9x/er9x - Vérifier l'existence d'une nouvelle version de companion9x et du firmware sélectionné + Vérifier l'existence d'une nouvelle version de companion9x et du firmware sélectionné - + Copyright Copyright - + Switch layout Left/Right Inverser l'interface gauche/droite - + Ignore this version (r%1)? Ignorer cette version (r%1)? - + Help Aide @@ -2039,24 +2073,16 @@ Voulez vous la télécharger maintenant ? Recherche de mises à jour - - - companion9x - Models and Settings Editor - %1 - profile %2 - companion9x - Editeur de réglages et modèles - %1 - profil %2 + companion9x - Editeur de réglages et modèles - %1 - profil %2 - - - - companion9x - Models and Settings Editor - %1 - companion9x - Editeur de réglages et modèles - %1 + companion9x - Editeur de réglages et modèles - %1 - A new version of companion9x is available (version %1)<br>Would you like to download it? - Une nouvelle version de companion9x est disponible (r%1)<br>Voulez-vous la télécharger ? + Une nouvelle version de companion9x est disponible (r%1)<br>Voulez-vous la télécharger ? @@ -2064,7 +2090,7 @@ Voulez vous la télécharger maintenant ? Voulez-vous vraiment flasher le firmware de la radio? - + Firmware %1 does not seem to have ever been downloaded. Version %2 is available. Do you want to download it now ? @@ -2073,15 +2099,15 @@ La version %2 est disponible. Voulez-vous la télécharger maintenant ? - - - - + + + + Read Models and Settings From Tx Lire les réglages et modèles depuis la radio - + The file %1 has not been recognized as a valid Models and Settings file Write anyway ? @@ -2090,158 +2116,172 @@ n'a pas été reconnu comme un fichier de réglage et modèles valide. Ecrire quand même? - - - - - - + + + + + + Backup Models and Settings From Tx Sauvegarder les réglages et modèles depuis la radio - + Cannot check Models and Settings compatibility! Continue anyway? Impossible de vérifier la compatibilité des réglages et modèles. Continuer quand même? - + The transmitter firmware belongs to another product family, check file and preferences! Le firmware sélectionné est destiné à un différent type de radio, veuillez vérifier le fichier et les préférences! - + The transmitter firmware is outdated, please upgrade! Le firmware de la radio est obsolète, veuillez mettre à jour! - + Write Models and Settings To Tx Ecrire les réglages et modèles dans la radio - - + + Write Firmware To Tx Flasher le firmware de la radio - + Cannot convert Models and Settings for use with this firmware, original data will be used Impossible de convertir les réglages et modèles pour ce firmware, les données originales vont être utilisées - + Restore Models and Settings To Tx Restaurer une sauvegarde de réglages et modèles - + Could not restore Models and Settings to TX. The models and settings data file can be found at: %1 Impossible de restaurerles réglages et modèles. Une copie du fichier est placée ici: %1 - + Firmware write failed L'écriture du firmware a échoué. - + Could not write firmware to to transmitter. The models and settings data file can be found at: %1 Impossible de flasher le firmware. Une copie du fichier de réglages et modèles est placée ici: %1 - + Cannot backup existing Models and Settings from TX. Firmware write process aborted Impossible de sauvegarder les réglages et modèles de la radio. Le flashage est abandonné. - + Save transmitter Models and Settings to File Sauvegarder les réglages et modèles depuis la radio dans un fichier - + Impossible to identify the radio on your system, please verify that the eeprom disk is connected. Impossible de trouver la radio, veuillez vérifier que la radio est sous tension sur la page d'accueil et connectée. - + Read Tx Firmware to File Sauvegarder le firmware de la radio dans un fichier + The Companion project was originally forked from eePe + + + + If you've found this program useful, please support by Si vous trouvez ce programme utile, merci d'apporter votre soutien en effectuant un - + + About Companion + + + + + Check for new version of Companion + + + + Contributors &List... &Liste des contributeurs... - Show companion9x contributors list - Lister les contributeurs de companion9x + Lister les contributeurs de companion9x - + &Write Models and Settings To Tx &Transférer les réglages et modèles à la radio - + Write Models and Settings to transmitter Transférer les réglages et modèles à la radio - + &Read Models and Settings From Tx &Lire les réglages et modèles depuis la radio - + Read Models and Settings from transmitter Lire les réglages et modèles depuis la radio - + Write Firmware Flasher le firmware - + Write firmware to transmitter Flasher le firmware de la radio - + Write Models and Settings from file to Tx Restaurer les réglages et modèles depuis un fichier - + Write Models and Settings from file to transmitter Restaurer les réglages et modèles depuis un fichier - + Save transmitter Models and Settings to file Sauvegarder les réglages et modèles dans un fichier - + Save the Models and Settings from the transmitter to a file Sauvegarder les réglages et modèles dans un fichier - + Read Firmware Lire le firmware de la radio - + Read firmware from transmitter Lire le firmware de la radio @@ -2254,32 +2294,25 @@ Ecrire quand même? Configure le programme pour communiquer correctement avec la radio - - + + Recent Files Derniers documents utilisés - - + + Invalid Models and Settings File %1 Fichier de réglages et modèles invalide: %1 - + Invalid binary Models and Settings File %1 Fichier binaire de réglages et modèles invalide: %1 MdiChild - - - - - companion9x - - @@ -2373,6 +2406,13 @@ Ecrire quand même? Do you want to use model wizard? Voulez-vous utiliser l'assistant de configuration de modèle ? + + + + + Companion + + Ask this question again ? @@ -7355,18 +7395,26 @@ Check your settings again. Attention, le format de l'écran d'accueil personnalisé dans les préférences a changé. Veuillez le sélectionner à nouveau le cas échéant. - Thanks all for the donations, kind messages, nice ideas, constructive proposals etc. for the next openTX/C9x funding model. We are really sensible to that! The openTX/C9X Team. - Merci pour vos donations, messages, bonnes idées, propositions constructives pour le nouveau système de financement d'openTx. + Merci pour vos donations, messages, bonnes idées, propositions constructives pour le nouveau système de financement d'openTx. Nous en sommes très reconnaissants! L'équipe d'openTx/C9X + + + Thanks all for the donations, kind messages, nice ideas, constructive proposals etc. for the next OpenTX/Companion funding model. + +We are really appreciative for that! + +The OpenTX/Companion Team. + + avrOutputDialog @@ -7631,6 +7679,12 @@ Consulter la documentation du programmateur utilisé et celle d'AVRDUDE pou Select Location Choisir l'emplacement + + + + Companion + + <b><u>WARNING!</u></b><br>This will reset the fuses of %1 to the factory settings.<br>Writing fuses can mess up your radio.<br>Do this only if you are sure they are wrong!<br>Are you sure you want to continue? @@ -7731,10 +7785,8 @@ m2560 for v4.1 boards Port série de SAM-BA - - companion9x - companion9x + companion9x @@ -7784,6 +7836,11 @@ m2560 for v4.1 boards Browse for file Parcourir... + + + Allows Companion to write to older version of the firmware + + Backup and restore Models and Settings @@ -7831,9 +7888,8 @@ m2560 for v4.1 boards Variante - Allows companion9x to write to older version of the firmware - Permet à companion9x de programmer des anciennes versions de firmware + Permet à companion9x de programmer des anciennes versions de firmware @@ -8607,28 +8663,38 @@ m2560 for v4.1 boards Honors go to Rafal Tomczak (RadioClone) and Thomas Husterer (th9x) +of course. Also to Erez Raviv (er9x) and the fantastic eePe program +which was the staring point for OpenTX Companion. + + + + + Companion Release Notes + + + + Honors go to Rafal Tomczak (RadioClone) and Thomas Husterer (th9x) of course. Also to Erez Raviv (er9x) and it's fantastic eePe, from which companion9x was forked out. - Un merci tout particulier à Rafal Tomczak (RadioClone) et Thomas Husterer (th9x) bien sûr. + Un merci tout particulier à Rafal Tomczak (RadioClone) et Thomas Husterer (th9x) bien sûr. Egalement à Erez Raviv (er9x) et son fantastique programme eePe d'où est parti companion9x. - + Thank you all !!! Merci à tous !!! - + Contributors Contributeurs - Companion9x Release Notes - Notes de version de companion9x + Notes de version de companion9x - + OpenTX Release Notes Notes de version d'openTx @@ -8778,8 +8844,12 @@ p, li { white-space: pre-wrap; } + Companion + + + companion9x - companion9x + companion9x @@ -9132,9 +9202,13 @@ Press cancel to abort joystick calibration logsDialog - Companion9x log viewer - Visualiseur de log + Visualiseur de log + + + + Companion Log Viewer + @@ -9147,47 +9221,59 @@ Press cancel to abort joystick calibration Ouvrir fichier de log - + Zoom - + X - + Y - + Fly sessions Sessions de vol - + Telemetry logs Enregistrements de télémesure - + Time Heure - + + Error + Erreur + + + + Cannot write file %1: +%2. + Ecriture fichier %1 impossible: +%2. + + + Select your log file Sélectionnez votre fichier log - + Available fields Champs disponibles - + The selected logfile contains %1 invalid lines out of %2 total lines Le fichier de log sélectionné contient %1 lignes invalides sur %2 @@ -9642,17 +9728,17 @@ Press cancel to abort joystick calibration preferencesDialog - + Mode 2 (RUD THR ELE AIL) Mode 2 (DIR GAZ PROF AIL) - + Mode 4 (AIL THR ELE RUD) Mode 4 (AIL GAZ PROF DIR) - + Mode selection: Mode 1: @@ -9693,88 +9779,88 @@ Manche Droit: Profondeur, Direction - + Mode 3 (AIL ELE THR RUD) Mode 3 (AIL PROF GAZ DIR) - + Firmware - - + + ... - + Enable Actif - + Calibrate Calibrer - - - - + + + + Open Folder Ouvrir le répertoire - + Set language of voice. May be different from firmware language Langue des voix. Peut être différente de la langue du firmware - + Export Profile Exporter le profil - + Import Profile Importer le profil - + Custom TX splash screen Personnaliser l'écran d'accueil - + Automatic Backup Folder Dossier de sauvegardes automatiques - + Automatically add version number to the filename after download Ajouter le numéro de version au nom de fichier après téléchargement - + SD Structure path Chemin de la structure de la carte SD - + Processor ID ID du processeur - + Simulator capture folder Dossier de sauvegarde des captures d'écran - + Use clipboard only Utiliser le presse-papiers @@ -9825,12 +9911,12 @@ Peut être différente de la langue du firmware - + Check for updates Vérifier les mises à jour - + Channel order This is used by the templated to determine which channel goes to what number output. @@ -9838,138 +9924,148 @@ This is used by the templated to determine which channel goes to what number out Indique l'affectation voie / numéro de canal par défaut utilisée lors de la création d'un modèle. - + Language Langue - + Voice Voix - + Profile Name Nom du profil - + Save Profile Sauvegarder profil - + Simu BackLight Rétroéclairage simu - + Check for selected Fw updates Vérifier les mises à jour de firmwares au démarrage - + Ask use of wizard for new models Utiliser l'assistant de configuration de modèle - + Remember switches in simulator Mémoriser les inters pour le simulateur - + Blue Blu Bleu - + Green Vert - + Red Rouge - + Orange Orange - + Yellow Jaune - + Personal splash library Bibliothèque de splashs personnalisés - + Profile slot Numéro de profil + + + Find Executable + + + + + Google Earth Executable + + eEprom backup folder Dossier de sauvegarde de l'EEPROM - + auto backup before write Sauvegarde automatique avant programmation - + Ask for flashing after Download Demander pour flasher après téléchargement - + Splash library behaviour Utilisation de la bibliothèque de Splashes - + Include companion splashes Inclure les écrans d'accueil de companion9x - + Only user defined splashes Seulement vos écrans d'accueil - + Joystick Joystick - + Open Image Charger une image - + Invert Pixels Inverser les couleurs - + FwInfo - + Language (requires restart) Version française par Pascal Dugué / Octobre 2010. Langue (nécessite un redémarrage de companion9x) - + Default Channel Order Ordre des voies par défaut @@ -9979,22 +10075,22 @@ Indique l'affectation voie / numéro de canal par défaut utilisée lors de Préférences - + Default Stick Mode Mode par défaut - + Mode 1 (RUD ELE THR AIL) Mode 1 (DIR PROF GAZ AIL) - + Check for updates on startup Vérifier les mises à jour au démarrage - + Show Splash Screen Afficher l'écran d'accueil au démarrage @@ -10004,90 +10100,103 @@ Indique l'affectation voie / numéro de canal par défaut utilisée lors de Taille de l'historique des derniers documents utilisés - - + + Download Télécharger - + Last downloaded release: %1 Dernière version téléchargée : %1 - The selected firmware has never been downloaded by companion9x. - Le firmware sélectionné n'a jamais été téléchargé par companion9x. + Le firmware sélectionné n'a jamais été téléchargé par companion9x. - The selected firmware cannot be downloaded by companion9x. - Le firmware sélectionné ne peut pas être téléchargé par companion9x. + Le firmware sélectionné ne peut pas être téléchargé par companion9x. - + Image stored in settings Image enregistrée dans les paramètres - - + + No joysticks found Aucun joystick - + Select your Models and Settings backup folder Sélectionner le dossier dans lequel une sauvegarde des réglages et modèles sera placée automatiquement lors de chaque opération - + + Select Google Earth executable + + + + Select the folder replicating your SD structure Sélectionner un dossier contenant une copie des dossiers de la carte SD - + Profile name is empty, profile slot %1 will be deleted.<br>Are you sure ? Le nom du profil est vide, le profil %1 va être effacé.<br>Etes-vous sûr? - + Export profile As Exporter le profil sous - + Profile slot is not empty, profile slot %1 will we overwritten.<br>Are you sure ? L'emplacement %1 n'est pas vide, il va être écrasé. Continuer? - + Open Profile to import Ouvrir le profil à importer - + Open Image to load Ouvre l'image à charger - + Images (%1) Images (%1) - - + + Error Erreur - + + The selected firmware has never been downloaded by Companion. + + + + + The selected firmware cannot be downloaded by Companion. + + + + Select your library folder Sélectionner le dossier de bibliothèque - + Select your snapshot folder Sélectionner le dossier où stocker les captures d'écran @@ -10096,8 +10205,8 @@ Indique l'affectation voie / numéro de canal par défaut utilisée lors de Sélectionner le dossier de sauvegarde d'EEPROM - - + + Cannot load %1. Impossible de charger %1. @@ -10625,59 +10734,59 @@ Indique l'affectation voie / numéro de canal par défaut utilisée lors de - + CSK SWK IPK - + CSW SWW IPW - + CH1 - + CH2 - + CH3 - + CH4 - + CH5 - + CH6 - + CH7 - + CH8 - + CH9 @@ -10742,187 +10851,192 @@ Indique l'affectation voie / numéro de canal par défaut utilisée lors de BIP - + + Companion Simulator + + + + CS1 IP1 - + CS2 IP2 - + CS3 IP3 - + CS4 IP4 - + CS5 IP5 - + CS6 IP6 - + CS7 IP7 - + CS8 IP8 - + CS9 IP9 - + CSA IPA - + CSB IPB - + CSC IPC - + CSD IPD - + CSE IPE - + CSF IPF - + CSG IPG - + CSH IPH - + CSI IPI - + CSJ IPJ - + CSL IPL - + CSM IPM - + CSN IPN - + CSO IPO - + CSP IPQ - + CSQ IPR - + CSR IPS - + CSS IPS - + CST IPT - + CSU IPU - + CSV IPV - + CH10 - + CH11 - + CH12 - + CH13 - + CH14 - + CH15 - + CH16 @@ -10939,22 +11053,22 @@ Indique l'affectation voie / numéro de canal par défaut utilisée lors de Verrou Y - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + -100.1 @@ -10984,9 +11098,8 @@ Indique l'affectation voie / numéro de canal par défaut utilisée lors de - Companion9x Simulator - Simulateur companion9x + Simulateur companion9x @@ -10994,7 +11107,7 @@ Indique l'affectation voie / numéro de canal par défaut utilisée lors de Simulateur 9x - + Outputs Sorties @@ -11068,9 +11181,8 @@ Indique l'affectation voie / numéro de canal par défaut utilisée lors de xsimulatorDialog - Companion9x Simulator - Simulateur companion9x + Simulateur companion9x @@ -11191,7 +11303,7 @@ Indique l'affectation voie / numéro de canal par défaut utilisée lors de Sorties - + CSK SWK IPK @@ -11201,6 +11313,11 @@ Indique l'affectation voie / numéro de canal par défaut utilisée lors de CH1 VOIE1 + + + Companion Simulator + + Taranis Simulator @@ -11213,16 +11330,16 @@ Indique l'affectation voie / numéro de canal par défaut utilisée lors de - - - - - - - - - - + + + + + + + + + + -100.1 @@ -11257,202 +11374,202 @@ Indique l'affectation voie / numéro de canal par défaut utilisée lors de VOIE4 - + CH12 VOIE12 - + CH5 VOIE5 - + CH13 VOIE13 - + CH6 VOIE6 - + CH14 VOIE14 - + CH7 VOIE7 - + CH15 VOIE15 - + CH8 VOIE8 - + CH16 VOIE16 - + CSC IPC - + CSD IPD - + CS7 IP7 - + CSL IPL - + CSB IPB - + CS1 IP1 - + CSH IPH - + CSG IPG - + CSE IPE - + CSF IPF - + CS8 IP8 - + CS9 IP9 - + CSA IPA - + CSM IPM - + CSJ IPJ - + CSI IPI - + CS4 IP4 - + CS5 IP5 - + CS2 IP2 - + CS3 IP3 - + CS6 IP6 - + CSN IPN - + CSO IPO - + CSP IPQ - + CSQ IPR - + CSR IPS - + CSS IPS - + CST IPT - + CSU IPU - + CSV IPV - + CSW SWW IPW diff --git a/companion/src/translations/companion9x_he.ts b/companion/src/translations/companion9x_he.ts index c8d66f2f5..ddfaa4e3d 100644 --- a/companion/src/translations/companion9x_he.ts +++ b/companion/src/translations/companion9x_he.ts @@ -1149,29 +1149,24 @@ Are you sure ? MainWindow - - - + + + File loaded - - - A new version of companion9x is available (version %1)<br>Would you like to download it? - - - - + + Save As - + No updates available at this time. @@ -1179,26 +1174,11 @@ Are you sure ? - - + + Unable to check for updates. - - - - - companion9x - Models and Settings Editor - %1 - profile %2 - - - - - - - - companion9x - Models and Settings Editor - %1 - - Checking for updates @@ -1220,102 +1200,102 @@ Are you sure ? - + Firmware %1 does not seem to have ever been downloaded. Version %2 is available. Do you want to download it now ? - + Open - - + + File saved - + Copyright - + donating - - - + + + &%1 %2 - + %1 %2 - + &New - + Create a new file - + &Open... - + Open an existing file - + &Save - + Save the document to disk - + Save &As... - + Save the document under a new name - + &Preferences... - + Edit general preferences - + &Check for updates... - + If you've found this program useful, please support by @@ -1329,34 +1309,29 @@ Do you want to download it now ? New release available - - - A new release of companion is available please check the repository - - - - - - - - - - - + + + + + + + + + Error - - - + + + Error opening file %1: %2. @@ -1387,12 +1362,6 @@ Do you want to download it now ? Compilation server too busy, try later - - - - Compilation server requires registration, please check opentx web site - - @@ -1405,640 +1374,671 @@ Do you want to download it now ? - - + + Yes - - + + No - - + + Release Notes - - + + Do you want to download release %1 now ? - + A new version of %1 firmware is available (current %2 - newer %3). Do you want to download it now ? - + Ignore this version (r%1)? - + Release notes contain very important informations. Do you want to see them now ? - + Firmware updates - + Current firmware does not provide release notes informations. - + Cannot write file %1: %2. - - - - - + + + + + Taranis radio not found - - - - + + + + Impossible to identify the radio on your system, please verify the eeprom disk is connected. - + Write Models and settings from %1 to the Tx? - - - + + + Backup is impossible - - - + + + The backup dir set in preferences does not exist - - + + Warning - + Conversion failed - + Restore failed - + Backup failed - + Version %1 (revision %2), %3 - - The companion9x project was originally forked from eePe - - - - - About companion9x - - - - + &loadBackup... - + Load backup from file - + Lo&gs - + Ctrl+G - + Open log file - - Check for new version of companion9x/er9x - - - - + Contributors &List... - - Show companion9x contributors list - - - - + ChangeLog... - - Show companion9x changelog - - - - + Firmware ChangeLog... - + Show firmware changelog - + Compare... - + Compare models - + Customize your &TX... - + Customize the splash screen of your TX - + E&xit - + Exit the application - + Cu&t - + Cut the current selection's contents to the clipboard - + &Copy - + Copy the current selection's contents to the clipboard - + &Paste - + Paste the clipboard's contents into the current selection - + Ctrl+Alt+W - + Ctrl+Alt+R - + &Configure... - + Configure software for reading from and writing to the transmitter - + &List programmers - + List available programmers - + &Fuses... - + Show fuses dialog - + &Simulate - + Alt+S - + Simulate selected model. - + &Print - + Ctrl+P - + Print current model. - + Cl&ose - + Close the active window - + Close &All - + Close all the windows - + &Tile - + Tile the windows - + &Cascade - + Cascade the windows - + Ne&xt - + Move the focus to the next window - + Pre&vious - + Move the focus to the previous window - + &About - + Show the application's About box - - + + Recent Files - + &Read/Write - + Write - + Unable to find file %1! - + Error reading file %1: %2. - + Switch layout Left/Right - + &File - + Switch layout direction - - - - + + + + Companion - Models and Settings Editor - %1 - profile %2 + + + + + + + + Companion - Models and Settings Editor - %1 + + + + + A new version of Companion is available (version %1)<br>Would you like to download it? + + + + + A new release of Companion is available please check the repository + + + + + + Compilation server requires registration, please check OpenTX web site + + + + + + + Read Models and Settings From Tx - + The file %1 has not been recognized as a valid Models and Settings file Write anyway ? - - - - - - + + + + + + Backup Models and Settings From Tx - + Cannot check Models and Settings compatibility! Continue anyway? - + The transmitter firmware belongs to another product family, check file and preferences! - + The transmitter firmware is outdated, please upgrade! - + Write Models and Settings To Tx - - + + Write Firmware To Tx - + Cannot convert Models and Settings for use with this firmware, original data will be used - + Restore Models and Settings To Tx - + Could not restore Models and Settings to TX. The models and settings data file can be found at: %1 - + Firmware write failed - + Could not write firmware to to transmitter. The models and settings data file can be found at: %1 - + Cannot backup existing Models and Settings from TX. Firmware write process aborted - + Save transmitter Models and Settings to File - + Impossible to identify the radio on your system, please verify that the eeprom disk is connected. - + Read Tx Firmware to File - + + The Companion project was originally forked from eePe + + + + + About Companion + + + + + Check for new version of Companion + + + + + Show Companion contributors list + + + + + Show Companion changelog + + + + &Write Models and Settings To Tx - + Write Models and Settings to transmitter - + &Read Models and Settings From Tx - + Read Models and Settings from transmitter - + Write Firmware - + Write firmware to transmitter - + Write Models and Settings from file to Tx - + Write Models and Settings from file to transmitter - + Save transmitter Models and Settings to file - + Save the Models and Settings from the transmitter to a file - + Read Firmware - + Read firmware from transmitter - - + + Firmware Profiles - + &Edit - - + + Invalid Models and Settings File %1 - + Invalid binary Models and Settings File %1 - + &Window - + &Help - + File - + Edit - + Help - + Ready @@ -2130,14 +2130,14 @@ Write anyway ? - - - companion9x + Do you want to use model wizard? - Do you want to use model wizard? + + + Companion @@ -7026,18 +7026,6 @@ If this is checked the throttle will be reversed. Idle will be forward, trim wi th9x doesn't support curve with %1 point as curve%2 - - - Thanks all for the donations, kind messages, nice ideas, constructive proposals etc. for the next openTX/C9x funding model. - -We are really sensible to that! - -The openTX/C9X Team. - Warning! -Telemetry channel order has been changed, please check function switches and telemetry settings! -Expos settings have been changed, please verify before flight! - - @@ -7073,6 +7061,15 @@ Expos settings have been changed, please verify before flight! OpenTX doesn't allow this number of channels + + + Thanks all for the donations, kind messages, nice ideas, constructive proposals etc. for the next OpenTX/Companion funding model. + +We are really appreciative for that! + +The OpenTX/Companion Team. + + avrOutputDialog @@ -7395,7 +7392,7 @@ Please only use this if you know what you are doing. There are no error checks - companion9x + Companion @@ -7466,6 +7463,11 @@ m2560 for v4.1 boards Browse for file + + + Allows Companion to write to older version of the firmware + + Backup and restore Models and Settings @@ -7512,11 +7514,6 @@ m2560 for v4.1 boards Variant - - - Allows companion9x to write to older version of the firmware - - Check Firmware compatibility @@ -8243,27 +8240,27 @@ m2560 for v4.1 boards Honors go to Rafal Tomczak (RadioClone) and Thomas Husterer (th9x) -of course. Also to Erez Raviv (er9x) and it's fantastic eePe, from which -companion9x was forked out. +of course. Also to Erez Raviv (er9x) and the fantastic eePe program +which was the staring point for OpenTX Companion. - + + Companion Release Notes + + + + Thank you all !!! - + Contributors - - Companion9x Release Notes - - - - + OpenTX Release Notes @@ -8413,7 +8410,7 @@ p, li { white-space: pre-wrap; } - companion9x + Companion @@ -8740,7 +8737,7 @@ Press cancel to abort joystick calibration logsDialog - Companion9x log viewer + Companion Log Viewer @@ -8754,47 +8751,58 @@ Press cancel to abort joystick calibration - + Zoom - + X - + Y - + Fly sessions - + Telemetry logs - + Time - + + Error + + + + + Cannot write file %1: +%2. + + + + Select your log file - + Available fields - + The selected logfile contains %1 invalid lines out of %2 total lines @@ -9252,27 +9260,27 @@ Press cancel to abort joystick calibration - + Language (requires restart) - + SD Structure path - + Processor ID - + Simulator capture folder - + Use clipboard only @@ -9282,40 +9290,40 @@ Press cancel to abort joystick calibration - - + + Download - + Default Channel Order - + Default Stick Mode - + Channel order This is used by the templated to determine which channel goes to what number output. - + FwInfo - + Show Splash Screen - + Mode selection: Mode 1: @@ -9338,97 +9346,107 @@ Mode 4: - + Mode 1 (RUD ELE THR AIL) - + Mode 2 (RUD THR ELE AIL) - + Mode 3 (AIL ELE THR RUD) - + Mode 4 (AIL THR ELE RUD) - + Automatic Backup Folder - + Automatically add version number to the filename after download - + Voice - + Set language of voice. May be different from firmware language - + Firmware - + + Find Executable + + + + + Google Earth Executable + + + + Check for updates on startup - - + + ... - + Splash library behaviour - + Include companion splashes - + Only user defined splashes - + Custom TX splash screen - + Personal splash library - + Joystick - - - - + + + + Open Folder @@ -9479,201 +9497,206 @@ May be different from firmware language - + Check for updates - + Language - + Profile Name - + Export Profile - + Save Profile - + Import Profile - + Blue Blu - + Simu BackLight - + Check for selected Fw updates - + Ask use of wizard for new models - + Remember switches in simulator - + Green - + Red - + Orange - + Yellow - + Profile slot - + auto backup before write - + Ask for flashing after Download - + Enable - + Calibrate - + Open Image - + Invert Pixels - + Last downloaded release: %1 - - The selected firmware has never been downloaded by companion9x. - - - - - The selected firmware cannot be downloaded by companion9x. - - - - + Image stored in settings - - + + No joysticks found - + Select your Models and Settings backup folder - + + Select Google Earth executable + + + + Select the folder replicating your SD structure - + Profile name is empty, profile slot %1 will be deleted.<br>Are you sure ? - + Export profile As - + Profile slot is not empty, profile slot %1 will we overwritten.<br>Are you sure ? - + Open Profile to import - + Open Image to load - + Images (%1) - - + + Error - + + The selected firmware has never been downloaded by Companion. + + + + + The selected firmware cannot be downloaded by Companion. + + + + Select your library folder - + Select your snapshot folder - - + + Cannot load %1. @@ -10174,12 +10197,6 @@ May be different from firmware language simulatorDialog - - - Companion9x Simulator - ER9x Simulator - - P1 @@ -10285,6 +10302,11 @@ May be different from firmware language Right Double Click to Reset + + + Companion Simulator + + @@ -10298,267 +10320,267 @@ May be different from firmware language - + Outputs - + CS1 - + CS2 - + CS3 - + CS4 - + CS5 - + CS6 - + CS7 - + CS8 - + CS9 - + CSA - + CSB - + CSC - + CSD - + CSE - + CSF - + CSG - + CSH - + CSI - + CSJ - + CSK - + CSL - + CSM - + CSN - + CSO - + CSP - + CSQ - + CSR - + CSS - + CST - + CSU - + CSV - + CSW - + CH1 - + CH9 - + CH2 - + CH10 - + CH3 - + CH11 - + CH4 - + CH12 - + CH5 - + CH13 - + CH6 - + CH14 - + CH7 - + CH15 - + CH8 - + CH16 - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + -100.1 @@ -10635,11 +10657,6 @@ May be different from firmware language xsimulatorDialog - - - Companion9x Simulator - - @@ -10758,6 +10775,11 @@ May be different from firmware language LS + + + Companion Simulator + + Taranis Simulator @@ -10775,16 +10797,16 @@ May be different from firmware language - - - - - - - - - - + + + + + + + + + + -100.1 @@ -10819,207 +10841,207 @@ May be different from firmware language - + CH12 - + CH5 - + CH13 - + CH6 - + CH14 - + CH7 - + CH15 - + CH8 - + CH16 - + CSK - + CSC - + CSD - + CS7 - + CSL - + CSB - + CS1 - + CSH - + CSG - + CSE - + CSF - + CS8 - + CS9 - + CSA - + CSM - + CSJ - + CSI - + CS4 - + CS5 - + CS2 - + CS3 - + CS6 - + CSN - + CSO - + CSP - + CSQ - + CSR - + CSS - + CST - + CSU - + CSV - + CSW diff --git a/companion/src/translations/companion9x_it.ts b/companion/src/translations/companion9x_it.ts index 952477a89..d880d890b 100644 --- a/companion/src/translations/companion9x_it.ts +++ b/companion/src/translations/companion9x_it.ts @@ -1210,9 +1210,9 @@ Siete sicuri ? MainWindow - - - + + + File loaded Documento caricato @@ -1230,22 +1230,21 @@ Siete sicuri ? - - + + Unable to check for updates. Impossibile controllare gli aggiornamenti. - A new version of companion9x is available (version %1)<br>Would you like to download it? - Una nuova versione di companion9x è disponibile (versione %1)<br>Desiderate scaricarla ? + Una nuova versione di companion9x è disponibile (versione %1)<br>Desiderate scaricarla ? - - + + Save As Salva come @@ -1260,13 +1259,12 @@ Siete sicuri ? Nuova versione disponibile - A new release of companion is available please check the repository - Una nuova versione di companion9x è stata rilasciata, controllate il repository SVN + Una nuova versione di companion9x è stata rilasciata, controllate il repository SVN - + No updates available at this time. Nessun aggiornamento disponibile. @@ -1278,9 +1276,9 @@ Siete sicuri ? - - - + + + Error opening file %1: %2. Errore durante l'apertura del file %1: @@ -1302,19 +1300,12 @@ Siete sicuri ? Il server di compilazione è occupato, provate più tardi - - - companion9x - Models and Settings Editor - %1 - profile %2 - Companion9x - EEPROM Editor - %1- profilo %2 + Companion9x - EEPROM Editor - %1- profilo %2 - - - - companion9x - Models and Settings Editor - %1 - Companion9x - EEPROM Editor - %1 + Companion9x - EEPROM Editor - %1 Firmware does not longer fit in program memory, due to selected firmware options @@ -1331,7 +1322,7 @@ Siete sicuri ? Volete scrivere il nuovo firmware sulla radio ora ? - + Firmware %1 does not seem to have ever been downloaded. Version %2 is available. Do you want to download it now ? @@ -1340,25 +1331,25 @@ E' disponibile la versione %2. Volete scaricarla adesso ? - + A new version of %1 firmware is available (current %2 - newer %3). Do you want to download it now ? Una nuova versione del firmware %1 è disponibile (attuale %2 - nuova %3). Volete scaricarla ora ? - + Ignore this version (r%1)? Ignorare questa versione (r%1) ? - + Open Apri - - + + File saved Documento salvato @@ -1367,15 +1358,15 @@ Volete scaricarla ora ? - - - - - - - - - + + + + + + + + + Error Errore @@ -1402,10 +1393,8 @@ Volete scaricarla ora ? Guasto temporaneo del server di compilazione, riprovate più tardi - - Compilation server requires registration, please check opentx web site - Il server di compilazione richiede una registrazione, controllate il sito di opentx + Il server di compilazione richiede una registrazione, controllate il sito di opentx Firmware does not fit in program memory, due to selected firmware options @@ -1417,65 +1406,65 @@ Volete scaricarla ora ? Volete scrivere il nuovo firmware sulla radio ora ? - - + + Yes Si - - + + No No - - + + Release Notes Note di aggiornamento - - + + Do you want to download release %1 now ? Volete scaricare la versione %1 adesso ? - + Release notes contain very important informations. Do you want to see them now ? Le note di rilascio includono informazioni molto importanti. Volete vederle ora ? - + Firmware updates Aggiornamenti firmware - + Current firmware does not provide release notes informations. Il firmware selezionato non fornisce note di aggiornamento. - + Cannot write file %1: %2. Non posso scrivere il file %1: %2. - - - - - + + + + + Taranis radio not found Radio taranis non trovata - - - - + + + + Impossible to identify the radio on your system, please verify the eeprom disk is connected. Impossibile identificare la radio sul vostro sistema, verificate che il disco della eeprom sia connesso. @@ -1496,16 +1485,16 @@ non è stato riconosciuto come una EEProm valida Scriverlo ugualmente ? - - - + + + Backup is impossible Impossibile effettuare il Backup - - - + + + The backup dir set in preferences does not exist La directory per i backup impostata in preferenze non esiste @@ -1518,8 +1507,8 @@ Scriverlo ugualmente ? Non posso controllare la compatibilità delle impostazioni! Continuare ugualmente ? - - + + Warning Avviso @@ -1540,7 +1529,7 @@ Scriverlo ugualmente ? Scrivi il fimware sulla radio - + Conversion failed Conversione fallita @@ -1553,7 +1542,7 @@ Scriverlo ugualmente ? Ripristina memoria sulla Radio - + Restore failed Ripristino fallito @@ -1570,7 +1559,7 @@ Scriverlo ugualmente ? Non posso aggiornare il firmware, la memoria dei settaggi originale può essere trovata in %1 - + Backup failed Salvataggio fallito @@ -1587,10 +1576,10 @@ Scriverlo ugualmente ? Scrivi il firmware in un documento - - - - + + + + Read Models and Settings From Tx Leggi le impostazioni dalla radio @@ -1609,12 +1598,12 @@ Scriverlo ugualmente ? Il firmware richiesto è troppo grande per la radio a causa delle opzioni selezionate - + Write Models and settings from %1 to the Tx? Scrivere le impostazioni sulla radio da %1? - + The file %1 has not been recognized as a valid Models and Settings file Write anyway ? @@ -1623,365 +1612,360 @@ non è stato riconosciuto come un file di impostazioni valido. Scriverlo ugualmente ? - - - - - - + + + + + + Backup Models and Settings From Tx Salva impostazioni della radio - + Cannot check Models and Settings compatibility! Continue anyway? Non posso controllare la compatibilità delle impostazioni! Continuare ugualmente ? - + The transmitter firmware belongs to another product family, check file and preferences! Il firmware nella radio è di una famiglia differente\n rispetto a quello delle impostazioni che si stanno scrivendo.\n Controllare il documento e le preferenze! - + The transmitter firmware is outdated, please upgrade! Il firmware della radio è obsoleto, pianificate un aggiornamento! - + Write Models and Settings To Tx Scrivi le impostazioni nella radio - - + + Write Firmware To Tx Scrivi il fimware sulla radio - + Cannot convert Models and Settings for use with this firmware, original data will be used Non posso convertire le impostazioni per questo firmware, verranno usate le impostazioni originali - + Restore Models and Settings To Tx Ripristina le impostazioni sulla Radio - + Could not restore Models and Settings to TX. The models and settings data file can be found at: %1 Non posso ripristinare le impostazioni sulla radio, il file originale può essere trovato in %1 - + Firmware write failed Scrittura del firmware fallita - + Could not write firmware to to transmitter. The models and settings data file can be found at: %1 Non posso aggiornare il firmware, le impostazioni originali possono essere trovate nel file %1 - + Cannot backup existing Models and Settings from TX. Firmware write process aborted Non riesco a salvare le impostazioni della radio, l'aggiornamento firmware viene annullato - + Save transmitter Models and Settings to File Salva le impostazioni dalla radio e scrivile in un documento - + Impossible to identify the radio on your system, please verify that the eeprom disk is connected. Impossibile identificare la radio sul vostro sistema, verificate che il disco della eeprom sia connesso. - + Read Tx Firmware to File Scrivi il firmware in un documento - + Copyright Copyright - + Version %1 (revision %2), %3 Versione %1 (revisione %2), %3 - The companion9x project was originally forked from eePe - Il progetto companion9x è stato inizialmente derivato da eePe + Il progetto companion9x è stato inizialmente derivato da eePe - + If you've found this program useful, please support by Se trovate questo programma utile, supportatelo mediante una - + donating donazione - About companion9x - Informazioni su companion9x + Informazioni su companion9x - - - + + + &%1 %2 - + %1 %2 - + &New &Nuovo - + Create a new file Crea un nuovo documento - + &Open... &Apri... - + Open an existing file Apri un documente esistente - + &loadBackup... carica&Backup... - + Load backup from file Carica backup da file - + &Save &Salva - + Save the document to disk Salva il documento su disco - + Save &As... S&alva come... - + Save the document under a new name Salva il documento con un nuovo nome - + Lo&gs Lo&gs - + Ctrl+G - + Open log file Apri file di log - + &Preferences... &Preferenze... - + Edit general preferences Modifica preferenze - + &Check for updates... &Controlla aggiornamenti... - Check for new version of companion9x/er9x - Controlla per nuove versioni di companion9x + Controlla per nuove versioni di companion9x - + Contributors &List... E&lenco collaboratori... - Show companion9x contributors list - Mostra l'elenco di quelli che hanno contribuito a companion9x + Mostra l'elenco di quelli che hanno contribuito a companion9x - + ChangeLog... Cambiamenti... - Show companion9x changelog - Mostra l'elenco dei cambiamenti in Companion9x + Mostra l'elenco dei cambiamenti in Companion9x - + Firmware ChangeLog... Cambiamenti del firmware... - + Show firmware changelog Mostra l'elenco dei cambiamenti del firmware - + Compare... Confronta... - + Compare models Confronta due modelli - + Customize your &TX... Personalizza il &TX... - + Customize the splash screen of your TX Personalizza la schermata di avvio della radio - + E&xit Es&ci - + Exit the application Esci dall'applicazione - + Cu&t Ta&glia - + Cut the current selection's contents to the clipboard Taglia la selezione negli appunti - + &Copy &Copia - + Copy the current selection's contents to the clipboard Copia la selezione negli appunti - + &Paste &Incolla - + Paste the clipboard's contents into the current selection Incolla gli appunti nella selezione corrente - + &Write Models and Settings To Tx Scri&vi le impostazioni nella radio - + Write Models and Settings to transmitter Scrivi le impostazioni nella radio - + &Read Models and Settings From Tx &Leggi le impostazioni dalla radio - + Read Models and Settings from transmitter Leggi le impostazioni dalla radio - + Write Firmware Scrivi il fimware - + Write firmware to transmitter Scrivi il firmware nella radio - + Write Models and Settings from file to Tx Scrivi le impostazioni nella radio da un documento - + Write Models and Settings from file to transmitter Scrivi le impostazioni nella radio da un documento - + Save transmitter Models and Settings to file Salva le impostazioni dalla radio e scrivile in un documento - + Save the Models and Settings from the transmitter to a file Leggi le impostazioni dalla radio e scrivile in un file - + Read Firmware Leggi firmware - + Read firmware from transmitter Leggi il firmware dalla radio - + Configure software for reading from and writing to the transmitter Configura il software per la lettura/scrittura del microprocessore @@ -1994,23 +1978,23 @@ Scriverlo ugualmente ? Configura il programmatore del microprocessore - + &Read/Write &Leggi/Scrivi - + Write Scrivi - - + + Invalid Models and Settings File %1 File impostazioni non valido %1 - + Invalid binary Models and Settings File %1 File binario delle impostazioni non valido %1 @@ -2019,7 +2003,7 @@ Scriverlo ugualmente ? &Scrivi la memoria nella radio - + Ctrl+Alt+W Ctrl+Alt+W @@ -2032,7 +2016,7 @@ Scriverlo ugualmente ? &Leggi la memoria dalla radio - + Ctrl+Alt+R Ctrl+Alt+R @@ -2073,7 +2057,7 @@ Scriverlo ugualmente ? Leggi il firmware dalla radio - + &Configure... &Configura... @@ -2082,154 +2066,210 @@ Scriverlo ugualmente ? Configura il programmatore del microprocessore - + + + + Companion - Models and Settings Editor - %1 - profile %2 + + + + + + + + Companion - Models and Settings Editor - %1 + + + + + A new version of Companion is available (version %1)<br>Would you like to download it? + + + + + A new release of Companion is available please check the repository + + + + + + Compilation server requires registration, please check OpenTX web site + + + + + The Companion project was originally forked from eePe + + + + + About Companion + + + + + Check for new version of Companion + + + + + Show Companion contributors list + + + + + Show Companion changelog + + + + &List programmers E&lenco programmatori - + List available programmers Lista dei programmatori supportati - + &Fuses... &Fuses... - + Show fuses dialog Mostra finestra di dialogo Fuses - + &Simulate Si&mula - + Alt+S - + Simulate selected model. Simula modello selezionato. - + &Print Stam&pa - + Ctrl+P - + Print current model. Stampa modello corrente. - + Cl&ose C&hiudi - + Close the active window Chiudi finestra corrente - + Close &All Chiudi &Tutto - + Close all the windows Chiudi dutte le finestre - + &Tile Aff&ianca - + Tile the windows Affianca fineste - + &Cascade &Disponi - + Cascade the windows Disponi finestre a cascata - + Ne&xt Successi&va - + Move the focus to the next window Sposta il fuoco sulla finestra seguente - + Pre&vious P&recedente - + Move the focus to the previous window Sposta il fuoco sulla finestra precedente - + &About &Informazioni su - + Show the application's About box Mostra la finestra Informazioni Su - + Switch layout direction Cambia orientamento - + Switch layout Left/Right Cambia orientazione Sinistra/Destra - - + + Recent Files Documenti Recenti - - + + Firmware Profiles Profili personalizzati - + &File &Documento - + &Edit &Modifica @@ -2238,22 +2278,22 @@ Scriverlo ugualmente ? &Programma - + &Window &Finestra - + &Help &Aiuto - + File Documento - + Edit Modifica @@ -2262,17 +2302,17 @@ Scriverlo ugualmente ? Scrivi - + Help Aiuto - + Ready Pronto - + Unable to find file %1! Impossibile trovare il file %1! @@ -2281,7 +2321,7 @@ Scriverlo ugualmente ? File impostazioni non valido %1 - + Error reading file %1: %2. Error durante la lettura del file %1: @@ -2304,6 +2344,13 @@ Scriverlo ugualmente ? Do you want to use model wizard? Utilizzare l'assistente di configurazione dei modelli ? + + + + + Companion + + Ask this question again ? @@ -2466,11 +2513,8 @@ Scriverlo ugualmente ? File di backup binario non valido %1 - - - companion9x - companion9x + companion9x @@ -7380,11 +7424,11 @@ la eeprom è 4096 bytes ma solo 2048 vengono utilizzati - Thanks all for the donations, kind messages, nice ideas, constructive proposals etc. for the next openTX/C9x funding model. + Thanks all for the donations, kind messages, nice ideas, constructive proposals etc. for the next OpenTX/Companion funding model. -We are really sensible to that! +We are really appreciative for that! -The openTX/C9X Team. +The OpenTX/Companion Team. @@ -7731,8 +7775,12 @@ utilizzatelo solo se sapete cosa state facendo. Non viene fatto alcun controllo + Companion + + + companion9x - companion9x + companion9x @@ -7808,6 +7856,11 @@ m2560 per le schede v4.1 Browse for file Apri file + + + Allows Companion to write to older version of the firmware + + Backup and restore Models and Settings @@ -7855,9 +7908,8 @@ m2560 per le schede v4.1 Variante - Allows companion9x to write to older version of the firmware - Abilita companion a scrivere in versioni precedenti o diverse del firmware + Abilita companion a scrivere in versioni precedenti o diverse del firmware @@ -8625,29 +8677,39 @@ m2560 per le schede v4.1 Honors go to Rafal Tomczak (RadioClone) and Thomas Husterer (th9x) +of course. Also to Erez Raviv (er9x) and the fantastic eePe program +which was the staring point for OpenTX Companion. + + + + + Companion Release Notes + + + + Honors go to Rafal Tomczak (RadioClone) and Thomas Husterer (th9x) of course. Also to Erez Raviv (er9x) and it's fantastic eePe, from which companion9x was forked out. - Sentiti ringraziamenti a Rafal Tomczak (RadioClone) e Thomas Husterer (th9x). + Sentiti ringraziamenti a Rafal Tomczak (RadioClone) e Thomas Husterer (th9x). Anche a Erez Raviv (er9x) e al fantastico eePe dal quale è stato derivato companion9x. - + Thank you all !!! Grazie a tutti !!! - + Contributors Amici e Programmatori - Companion9x Release Notes - informazioni su aggiornamenti Companion9x + informazioni su aggiornamenti Companion9x - + OpenTX Release Notes informazioni su aggiornamenti OpenTX @@ -8796,8 +8858,12 @@ p, li { white-space: pre-wrap; } + Companion + + + companion9x - companion9x + companion9x @@ -9165,9 +9231,13 @@ Premere annulla per cancellare l'operazione logsDialog - Companion9x log viewer - Visualizzatore di file di log di Companion9x + Visualizzatore di file di log di Companion9x + + + + Companion Log Viewer + @@ -9180,47 +9250,59 @@ Premere annulla per cancellare l'operazione Apri file di log - + Zoom Ingrandimento - + X - + Y - + Fly sessions Sessioni di volo - + Telemetry logs Log telemetrici - + Time Tempo - + + Error + Errore + + + + Cannot write file %1: +%2. + Non posso scrivere il file %1: +%2. + + + Select your log file Selezionare il file di log - + Available fields Campi disponibili - + The selected logfile contains %1 invalid lines out of %2 total lines Il file di log selezionato contiene %1 righe errate su un totale di %2 righe @@ -9678,27 +9760,27 @@ Premere annulla per cancellare l'operazione Preferenze - + Language (requires restart) Lingua (richiede il riavvio) - + Firmware Firmware - + Check for updates on startup Controllo aggiornamenti all'avvio - + FwInfo - + Show Splash Screen Mostra schermata iniziale @@ -9708,18 +9790,18 @@ Premere annulla per cancellare l'operazione File recenti - - + + Download Scarica - + Default Channel Order Ordine canali predefinito - + Channel order This is used by the templated to determine which channel goes to what number output. @@ -9728,12 +9810,12 @@ This is used by the templated to determine which channel goes to what number out Utilizzato dai Modelli per stabilire quale uscita viene assegnata ai canali. - + Default Stick Mode Modalità Stick - + Mode selection: Mode 1: @@ -9774,63 +9856,63 @@ Mode 4: - - + + ... - + Enable Abilita - + Calibrate Calibrazione - - - - + + + + Open Folder Apri Cartella - + Automatic Backup Folder Cartella per backup - + Set language of voice. May be different from firmware language Impostazione del linguaggio della voce. Può essere differente dalla lingua del firmware - + Voice Voce - + Ask for flashing after Download Scrivere dopo aggiornamento - + Export Profile Esporta Profilo - + Import Profile Importa Profilo - + Custom TX splash screen Schermo personalizzato @@ -9839,32 +9921,32 @@ Può essere differente dalla lingua del firmware Cartella per backup - + auto backup before write Esegui backup prima di ogni scrittura - + Automatically add version number to the filename after download Aggiungi automaticamente il numero di versione al nome del file dopo il download - + SD Structure path Cartella Struttura Scheda SD - + Processor ID ID del processore - + Simulator capture folder Cartella per cattura schermate - + Use clipboard only Usa solo gli appunti @@ -9915,173 +9997,196 @@ Può essere differente dalla lingua del firmware CheckBox - + Check for updates Verifica aggiornamenti - + Check for selected Fw updates Controlla aggiornamenti Fw - + Ask use of wizard for new models Chiedi l'utilizzo dell'assistente per i nuovi modelli - + Remember switches in simulator Ricorda la posizione degli switches nel simulatore - + Mode 1 (RUD ELE THR AIL) Modo 1 (DIR ELE MOT ALE) - + Mode 2 (RUD THR ELE AIL) Modo 2 (DIR MOTO ELE ALE) - + Mode 3 (AIL ELE THR RUD) Modo 3 (ALE ELE MOT DIR) - + Mode 4 (AIL THR ELE RUD) Modo 4 (ALE MOT ELE DIR) - + Profile slot Profilo personalizzato - + + Find Executable + + + + + Google Earth Executable + + + + Profile Name Descrizione - + Save Profile Salva Profilo - + Blue Blu - + Language Lingua - + Green Verde - + Red Rosso - + Orange Arancione - + Yellow Giallo - + Personal splash library Libreria sfondi personale - + Splash library behaviour Caratteristiche libreria sfondi - + Include companion splashes Includi sfondi predefiniti - + Only user defined splashes Solamente sfondi utente - + Joystick Joystick - + Open Image Apri immagine - + Invert Pixels Negativo - + Simu BackLight Colore Retroilluminazione - + Last downloaded release: %1 Ultima versione scaricata: %1 - The selected firmware has never been downloaded by companion9x. - Il firmware selezionato non è mai stato scaricato da companion9x. + Il firmware selezionato non è mai stato scaricato da companion9x. - The selected firmware cannot be downloaded by companion9x. - Il firmware selezionato non può essere scaricato da companion9x. + Il firmware selezionato non può essere scaricato da companion9x. - + Image stored in settings Immagine predefinita - - + + No joysticks found Nessun joystick trovato - + Select your Models and Settings backup folder Selezionare la cartella per i backup - + + Select Google Earth executable + + + + Profile name is empty, profile slot %1 will be deleted.<br>Are you sure ? La descrizione del profilo è vuota. Il profilo %1 sarà cancellato.<br>Siete sicuri ? - + Select your library folder Selezionare la cartella degli sfondi - + + The selected firmware has never been downloaded by Companion. + + + + + The selected firmware cannot be downloaded by Companion. + + + + Select your snapshot folder Selezionare la cartella per le schermate del simulatore @@ -10090,44 +10195,44 @@ Può essere differente dalla lingua del firmware Selezionare la cartella per i backup - + Select the folder replicating your SD structure Selezionare la cartella contenente la struttura della scheda SD - + Export profile As Esporta il profilo come - + Profile slot is not empty, profile slot %1 will we overwritten.<br>Are you sure ? La descrizione del profilo è vuota. Il profilo %1 sarà sovrascritto.<br>Siete sicuri ? - + Open Profile to import Apri il profile da importare - + Open Image to load Apri l'immagine da caricare - + Images (%1) Immagini (%1) - - + + Error Errore - - + + Cannot load %1. Non posso caricare %1. @@ -10633,9 +10738,8 @@ Può essere differente dalla lingua del firmware simulatorDialog - Companion9x Simulator - companion9x + companion9x @@ -10657,6 +10761,11 @@ Può essere differente dalla lingua del firmware THR THR + + + Companion Simulator + + @@ -10750,157 +10859,157 @@ Può essere differente dalla lingua del firmware Simulatore 9x - + Outputs Uscite - + CS1 CS1 - + CS2 CS2 - + CS3 CS3 - + CS4 CS4 - + CS5 CS5 - + CS6 CS6 - + CS7 CS7 - + CS8 CS8 - + CS9 CS9 - + CSA CSA - + CSB CSB - + CSC CSC - + CSD CSD - + CSE CSE - + CSF CSF - + CSG CSG - + CSH CSH - + CSI CSI - + CSJ CSJ - + CSL CSL - + CSM CSM - + CSN CSN - + CSO CSO - + CSP CSP - + CSQ CSQ - + CSR CSR - + CSS CSS - + CST CST - + CSU CSU - + CSV CSV @@ -10910,114 +11019,114 @@ Può essere differente dalla lingua del firmware SUONO - + CSK SWK CSK - + CSW SWW CSW - + CH1 CH1 - + CH9 CH9 - + CH2 CH2 - + CH10 CH10 - + CH3 CH3 - + CH11 CH11 - + CH4 CH4 - + CH12 CH12 - + CH5 CH5 - + CH13 CH13 - + CH6 CH6 - + CH14 CH14 - + CH7 CH7 - + CH15 CH15 - + CH8 CH8 - + CH16 CH16 - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + -100.1 -100.1 @@ -11095,9 +11204,8 @@ Può essere differente dalla lingua del firmware xsimulatorDialog - Companion9x Simulator - companion9x + companion9x @@ -11223,13 +11331,13 @@ Può essere differente dalla lingua del firmware Uscite - + CSK SWK CSK - + CSW SWW CSW @@ -11239,6 +11347,11 @@ Può essere differente dalla lingua del firmware CH1 CH1 + + + Companion Simulator + + @@ -11246,16 +11359,16 @@ Può essere differente dalla lingua del firmware - - - - - - - - - - + + + + + + + + + + -100.1 -100.1 @@ -11290,197 +11403,197 @@ Può essere differente dalla lingua del firmware CH4 - + CH12 CH12 - + CH5 CH5 - + CH13 CH13 - + CH6 CH6 - + CH14 CH14 - + CH7 CH7 - + CH15 CH15 - + CH8 CH8 - + CH16 CH16 - + CSC CSC - + CSD CSD - + CS7 CS7 - + CSL CSL - + CSB CSB - + CS1 CS1 - + CSH CSH - + CSG CSG - + CSE CSE - + CSF CSF - + CS8 CS8 - + CS9 CS9 - + CSA CSA - + CSM CSM - + CSJ CSJ - + CSI CSI - + CS4 CS4 - + CS5 CS5 - + CS2 CS2 - + CS3 CS3 - + CS6 CS6 - + CSN CSN - + CSO CSO - + CSP CSP - + CSQ CSQ - + CSR CSR - + CSS CSS - + CST CST - + CSU CSU - + CSV CSV diff --git a/companion/src/translations/companion9x_pt.ts b/companion/src/translations/companion9x_pt.ts index de3d9bf28..97da176bb 100644 --- a/companion/src/translations/companion9x_pt.ts +++ b/companion/src/translations/companion9x_pt.ts @@ -1233,9 +1233,9 @@ Are you sure ? - - - + + + File loaded Ficheiro carregado @@ -1247,8 +1247,8 @@ Are you sure ? - - + + Save As Gravar Como @@ -1258,7 +1258,7 @@ Are you sure ? - + No updates available at this time. @@ -1266,8 +1266,8 @@ Are you sure ? - - + + Unable to check for updates. @@ -1286,13 +1286,13 @@ Are you sure ? Ficheiros EEPROM (*.bin *.hex);;BIN files (*.bin);;HEX files (*.hex) - + Open Abrir - - + + File saved Ficheiro gravado @@ -1313,15 +1313,10 @@ Are you sure ? Ficheiros HEX (*.hex);;BIN files (*.bin);;FLASH files (*.bin *.hex) - + Copyright - - - A new version of companion9x is available (version %1)<br>Would you like to download it? - - Display previous warning again at startup ? @@ -1332,34 +1327,29 @@ Are you sure ? New release available - - - A new release of companion is available please check the repository - - - - - - - - - - - + + + + + + + + + Error Erro - - - + + + Error opening file %1: %2. @@ -1374,6 +1364,21 @@ Are you sure ? Display previous message again at startup ? + + + + + Companion - Models and Settings Editor - %1 - profile %2 + + + + + + + + Companion - Models and Settings Editor - %1 + + Firmware does not longer fit in the Tx, due to selected firmware options @@ -1390,12 +1395,6 @@ Are you sure ? Compilation server too busy, try later - - - - Compilation server requires registration, please check opentx web site - - @@ -1408,343 +1407,322 @@ Are you sure ? - - + + Yes - - + + No - - + + Release Notes - - + + Do you want to download release %1 now ? - + A new version of %1 firmware is available (current %2 - newer %3). Do you want to download it now ? - + Ignore this version (r%1)? - + Release notes contain very important informations. Do you want to see them now ? - + Firmware updates - + Current firmware does not provide release notes informations. - + Cannot write file %1: %2. - - - - - + + + + + Taranis radio not found - - - - + + + + Impossible to identify the radio on your system, please verify the eeprom disk is connected. - + Write Models and settings from %1 to the Tx? - - - + + + Backup is impossible - - - + + + The backup dir set in preferences does not exist - - + + Warning Aviso - + Conversion failed - + Restore failed - + Backup failed - + Version %1 (revision %2), %3 - - The companion9x project was originally forked from eePe - - - - + If you've found this program useful, please support by - + donating doar - About companion9x - Sobre o companion9x + Sobre o companion9x - - - + + + &%1 %2 &%1 %2 - + %1 %2 %1 %2 - + &New &Novo - + Create a new file Criar um novo ficheiro - + &Open... &Abrir... - + Open an existing file Abrir um ficheiro existente - + &loadBackup... - + Load backup from file - + &Save &Gravar - + Save the document to disk Gravar o documento no disco - + Save &As... Gravar &Como... - + Save the document under a new name Gravar o documento com um novo nome - + Lo&gs - + Ctrl+G - + Open log file - + &Preferences... &Preferências - + Edit general preferences Editar preferências gerais - + &Check for updates... - - Check for new version of companion9x/er9x - - - - + Contributors &List... - - Show companion9x contributors list - - - - + ChangeLog... - - Show companion9x changelog - - - - + Firmware ChangeLog... - + Show firmware changelog - + Compare... - + Compare models - + Customize your &TX... - + Customize the splash screen of your TX - + E&xit &Sair - + Exit the application Sair da aplicação - + Cu&t Cor&tar - + Cut the current selection's contents to the clipboard Cortar a selecção corrente para a zona de transferência - + &Copy &Copiar - + Copy the current selection's contents to the clipboard Copiar a selecção corrente para a zona de transferência - + &Paste Co&lar - + Paste the clipboard's contents into the current selection Colar o conteúdo na zona de transferência para a selecção corrente - + Configure software for reading from and writing to the transmitter - - + + Invalid Models and Settings File %1 - + Invalid binary Models and Settings File %1 @@ -1753,7 +1731,7 @@ Do you want to download it now ? &Gravar EEPROM no Rádio - + Ctrl+Alt+W Ctrl+Alt+W @@ -1766,7 +1744,7 @@ Do you want to download it now ? &Ler EEPROM do Rádio - + Ctrl+Alt+R Ctrl-Alt-R @@ -1791,7 +1769,7 @@ Do you want to download it now ? Ler memória Flash do Rádio - + &Configure... &Configurar... @@ -1800,148 +1778,148 @@ Do you want to download it now ? Configurar aplicação de gravação do Rádio - + &List programmers &Listar programadores - + List available programmers Lista os programadores disponíveis - + &Fuses... - + Show fuses dialog - + &Simulate &Simular - + Alt+S Alt+S - + Simulate selected model. Simular o modelo seleccionado - + &Print &Imprimir - + Ctrl+P Ctrl+P - + Print current model. Imprimir o modelo corrente - + Cl&ose &Fechar - + Close the active window Fechar a janela activa - + Close &All Fechar &Todas - + Close all the windows Fechar todas as janelas - + &Tile &Mosaico - + Tile the windows Apresentar as janelas abertas em mosaico - + &Cascade &Cascata - + Cascade the windows Apresentar as janelas abertas em cascata - + Ne&xt &Próxima - + Move the focus to the next window Selecciona janela seguinte - + Pre&vious &Anterior - + Move the focus to the previous window Selecciona janela anterior - + &About A&cerca - + Show the application's About box Sobre a aplicação - - + + Recent Files - + &Read/Write - + Write - + Unable to find file %1! Impossível encontrar o ficheiro %1! - + Error reading file %1: %2. @@ -1955,236 +1933,262 @@ Do you want to download it now ? Lista de contribuidores do er9x/companion9x - + Switch layout Left/Right - + &File &Ficheiro - + Switch layout direction Mudar apresentação dos menus - - - - - companion9x - Models and Settings Editor - %1 - profile %2 - - - - - - - - companion9x - Models and Settings Editor - %1 - - Checking for updates + + + A new version of Companion is available (version %1)<br>Would you like to download it? + + + + + A new release of Companion is available please check the repository + + + + + + Compilation server requires registration, please check OpenTX web site + + Do you want to write the firmware to the transmitter now ? - + Firmware %1 does not seem to have ever been downloaded. Version %2 is available. Do you want to download it now ? - - - - + + + + Read Models and Settings From Tx - + The file %1 has not been recognized as a valid Models and Settings file Write anyway ? - - - - - - + + + + + + Backup Models and Settings From Tx - + Cannot check Models and Settings compatibility! Continue anyway? - + The transmitter firmware belongs to another product family, check file and preferences! - + The transmitter firmware is outdated, please upgrade! - + Write Models and Settings To Tx - - + + Write Firmware To Tx - + Cannot convert Models and Settings for use with this firmware, original data will be used - + Restore Models and Settings To Tx - + Could not restore Models and Settings to TX. The models and settings data file can be found at: %1 - + Firmware write failed - + Could not write firmware to to transmitter. The models and settings data file can be found at: %1 - + Cannot backup existing Models and Settings from TX. Firmware write process aborted - + Save transmitter Models and Settings to File - + Impossible to identify the radio on your system, please verify that the eeprom disk is connected. - + Read Tx Firmware to File - + + The Companion project was originally forked from eePe + + + + + About Companion + + + + + Check for new version of Companion + + + + + Show Companion contributors list + + + + + Show Companion changelog + + + + &Write Models and Settings To Tx - + Write Models and Settings to transmitter - + &Read Models and Settings From Tx - + Read Models and Settings from transmitter - + Write Firmware - + Write firmware to transmitter - + Write Models and Settings from file to Tx - + Write Models and Settings from file to transmitter - + Save transmitter Models and Settings to file - + Save the Models and Settings from the transmitter to a file - + Read Firmware - + Read firmware from transmitter - - + + Firmware Profiles - + &Edit &Editar - + &Window &Janela - + &Help &Ajuda - + File Ficheiro - + Edit Editar @@ -2193,12 +2197,12 @@ Write anyway ? Gravar - + Help - + Ready Pronto @@ -2210,11 +2214,8 @@ Write anyway ? Parâmetros Gerais - - - companion9x - companion9x + companion9x Delete Selected Models? @@ -2298,6 +2299,13 @@ Write anyway ? Do you want to use model wizard? + + + + + Companion + + Ask this question again ? @@ -7625,11 +7633,11 @@ If this is checked the throttle will be reversed. Idle will be forward, trim wi - Thanks all for the donations, kind messages, nice ideas, constructive proposals etc. for the next openTX/C9x funding model. + Thanks all for the donations, kind messages, nice ideas, constructive proposals etc. for the next OpenTX/Companion funding model. -We are really sensible to that! +We are really appreciative for that! -The openTX/C9X Team. +The OpenTX/Companion Team. @@ -7996,8 +8004,12 @@ Please only use this if you know what you are doing. There are no error checks + Companion + + + companion9x - companion9x + companion9x @@ -8067,6 +8079,11 @@ m2560 for v4.1 boards Browse for file + + + Allows Companion to write to older version of the firmware + + Backup and restore Models and Settings @@ -8113,11 +8130,6 @@ m2560 for v4.1 boards Variant - - - Allows companion9x to write to older version of the firmware - - Check Firmware compatibility @@ -8900,27 +8912,27 @@ m2560 for v4.1 boards Honors go to Rafal Tomczak (RadioClone) and Thomas Husterer (th9x) -of course. Also to Erez Raviv (er9x) and it's fantastic eePe, from which -companion9x was forked out. +of course. Also to Erez Raviv (er9x) and the fantastic eePe program +which was the staring point for OpenTX Companion. - + + Companion Release Notes + + + + Thank you all !!! - + Contributors - - Companion9x Release Notes - - - - + OpenTX Release Notes @@ -9077,8 +9089,12 @@ p, li { white-space: pre-wrap; } + Companion + + + companion9x - companion9x + companion9x @@ -9408,7 +9424,7 @@ Press cancel to abort joystick calibration logsDialog - Companion9x log viewer + Companion Log Viewer @@ -9422,47 +9438,58 @@ Press cancel to abort joystick calibration - + Zoom - + X - + Y - + Fly sessions - + Telemetry logs - + Time - + + Error + Erro + + + + Cannot write file %1: +%2. + + + + Select your log file - + Available fields - + The selected logfile contains %1 invalid lines out of %2 total lines @@ -9920,7 +9947,7 @@ Press cancel to abort joystick calibration Preferências - + Language (requires restart) Língua (necessita uma reinicialização) @@ -9930,23 +9957,23 @@ Press cancel to abort joystick calibration - - + + Download - + Default Channel Order Ordem dos Canais por Defeito - + Default Stick Mode Modo do Rádio por Defeito - + Channel order This is used by the templated to determine which channel goes to what number output. @@ -9957,12 +9984,12 @@ This is used by the templated to determine which channel goes to what number out companion9x - + Show Splash Screen - + Mode selection: Mode 1: @@ -9985,117 +10012,127 @@ Mode 4: - + Mode 1 (RUD ELE THR AIL) Modo 1 (RUD ELE THR AIL) - + Mode 2 (RUD THR ELE AIL) Modo 2 (RUD THR ELE AIL) - + Mode 3 (AIL ELE THR RUD) Modo 3 (AIL ELE THR RUD) - + Mode 4 (AIL THR ELE RUD) Modo 4 (AIL THR ELE RUD) - + Automatic Backup Folder - + Automatically add version number to the filename after download - + Voice - + Set language of voice. May be different from firmware language - + Firmware - + + Find Executable + + + + + Google Earth Executable + + + + Check for updates on startup - - + + ... - + Splash library behaviour - + Include companion splashes - + Only user defined splashes - + Custom TX splash screen - + Personal splash library - + Joystick - - - - + + + + Open Folder - + SD Structure path - + Processor ID - + Simulator capture folder - + Use clipboard only @@ -10146,206 +10183,211 @@ May be different from firmware language - + Check for updates - + Language - + Profile Name - + Export Profile - + Save Profile - + Import Profile - + Simu BackLight - + Check for selected Fw updates - + Ask use of wizard for new models - + Remember switches in simulator - + Blue Blu - + Green - + Red - + Orange - + Yellow - + Profile slot - + auto backup before write - + Ask for flashing after Download - + Enable - + Calibrate - + Open Image - + Invert Pixels - + FwInfo - + Last downloaded release: %1 - - The selected firmware has never been downloaded by companion9x. - - - - - The selected firmware cannot be downloaded by companion9x. - - - - + Image stored in settings - - + + No joysticks found - + Select your snapshot folder - + Select your Models and Settings backup folder - + + Select Google Earth executable + + + + Select the folder replicating your SD structure - + Profile name is empty, profile slot %1 will be deleted.<br>Are you sure ? - + Export profile As - + Profile slot is not empty, profile slot %1 will we overwritten.<br>Are you sure ? - + Open Profile to import - + Open Image to load - + Images (%1) - - + + Error Erro - + + The selected firmware has never been downloaded by Companion. + + + + + The selected firmware cannot be downloaded by Companion. + + + + Select your library folder - - + + Cannot load %1. @@ -11027,10 +11069,9 @@ May be different from firmware language simulatorDialog - Companion9x Simulator ER9x Simulator - Simulador ER9x + Simulador ER9x @@ -11166,7 +11207,7 @@ May be different from firmware language - + Outputs @@ -11206,264 +11247,269 @@ May be different from firmware language SW12 - + CSK SWK - + CS1 - + + Companion Simulator + + + + CS2 - + CS3 - + CS4 - + CS5 - + CS6 - + CS7 - + CS8 - + CS9 - + CSA - + CSB - + CSC - + CSD - + CSE - + CSF - + CSG - + CSH - + CSI - + CSJ - + CSL - + CSM - + CSN - + CSO - + CSP - + CSQ - + CSR - + CSS - + CST - + CSU - + CSV - + CSW SWW - + CH1 CH1 - + CH9 CH9 - + CH2 CH2 - + CH10 CH10 - + CH3 CH3 - + CH11 CH11 - + CH4 CH4 - + CH12 CH12 - + CH5 CH5 - + CH13 CH13 - + CH6 CH6 - + CH14 CH14 - + CH7 CH7 - + CH15 CH15 - + CH8 CH8 - + CH16 CH16 - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + -100.1 -100.1 @@ -11545,9 +11591,8 @@ May be different from firmware language xsimulatorDialog - Companion9x Simulator - Simulador ER9x + Simulador ER9x @@ -11718,6 +11763,11 @@ May be different from firmware language S2 + + + Companion Simulator + + @@ -11748,16 +11798,16 @@ May be different from firmware language - - - - - - - - - - + + + + + + + + + + -100.1 -100.1 @@ -11792,207 +11842,207 @@ May be different from firmware language CH4 - + CH12 CH12 - + CH5 CH5 - + CH13 CH13 - + CH6 CH6 - + CH14 CH14 - + CH7 CH7 - + CH15 CH15 - + CH8 CH8 - + CH16 CH16 - + CSK - + CSC - + CSD - + CS7 - + CSL - + CSB - + CS1 - + CSH - + CSG - + CSE - + CSF - + CS8 - + CS9 - + CSA - + CSM - + CSJ - + CSI - + CS4 - + CS5 - + CS2 - + CS3 - + CS6 - + CSN - + CSO - + CSP - + CSQ - + CSR - + CSS - + CST - + CSU - + CSV - + CSW diff --git a/companion/src/translations/companion9x_ru.ts b/companion/src/translations/companion9x_ru.ts index c6fb8c1ef..92c12ee9b 100644 --- a/companion/src/translations/companion9x_ru.ts +++ b/companion/src/translations/companion9x_ru.ts @@ -1225,29 +1225,24 @@ Are you sure ? MainWindow - - - + + + File loaded Файл загружен - - - A new version of companion9x is available (version %1)<br>Would you like to download it? - - - - + + Save As Сохранить как... - + No updates available at this time. @@ -1255,8 +1250,8 @@ Are you sure ? - - + + Unable to check for updates. @@ -1275,13 +1270,13 @@ Are you sure ? файлы EEPROM (*.bin *.hex);;файлы BIN (*.bin);;файлы HEX (*.hex) - + Open Открыть - - + + File saved Файл записан @@ -1310,7 +1305,7 @@ Are you sure ? Считать прошивку в файл - + Copyright @@ -1320,7 +1315,7 @@ Are you sure ? Если эта программа и/или прошивка оказалась полезной, вы можете - + donating поддержать ее @@ -1329,74 +1324,74 @@ Are you sure ? О eePe - - - + + + &%1 %2 - + %1 %2 - + &New Новый - + Create a new file Создать новый файл - + &Open... Открыть - + Open an existing file Открыть файл - + &Save Сохранить - + Save the document to disk Записать на диск - + Save &As... Сохранить как... - + Save the document under a new name Записать с другим именем - + &Preferences... Настройки - + Edit general preferences Редактировать основные настройки - + &Check for updates... - + If you've found this program useful, please support by @@ -1410,34 +1405,29 @@ Are you sure ? New release available - - - A new release of companion is available please check the repository - - - - - - - - - - - + + + + + + + + + Error Ошибка - - - + + + Error opening file %1: %2. @@ -1452,6 +1442,21 @@ Are you sure ? Display previous message again at startup ? + + + + + Companion - Models and Settings Editor - %1 - profile %2 + + + + + + + + Companion - Models and Settings Editor - %1 + + Firmware does not longer fit in the Tx, due to selected firmware options @@ -1468,12 +1473,6 @@ Are you sure ? Compilation server too busy, try later - - - - Compilation server requires registration, please check opentx web site - - @@ -1486,256 +1485,231 @@ Are you sure ? - - + + Yes - - + + No - - + + Release Notes - - + + Do you want to download release %1 now ? - + A new version of %1 firmware is available (current %2 - newer %3). Do you want to download it now ? - + Ignore this version (r%1)? - + Release notes contain very important informations. Do you want to see them now ? - + Firmware updates - + Current firmware does not provide release notes informations. - + Cannot write file %1: %2. Не удается записать файл %1: %2. - - - - - + + + + + Taranis radio not found - - - - + + + + Impossible to identify the radio on your system, please verify the eeprom disk is connected. - + Write Models and settings from %1 to the Tx? - - - + + + Backup is impossible - - - + + + The backup dir set in preferences does not exist - - + + Warning Звук - + Conversion failed - + Restore failed - + Backup failed - + Version %1 (revision %2), %3 - - The companion9x project was originally forked from eePe - - - - - About companion9x - - - - + &loadBackup... - + Load backup from file - + Lo&gs - + Ctrl+G - + Open log file - - Check for new version of companion9x/er9x - - - - + Contributors &List... - - Show companion9x contributors list - - - - + ChangeLog... - - Show companion9x changelog - - - - + Firmware ChangeLog... - + Show firmware changelog - + Compare... - + Compare models - + Customize your &TX... - + Customize the splash screen of your TX - + E&xit Выход - + Exit the application Выйти из программы - + Cu&t Вырезать - + Cut the current selection's contents to the clipboard Вырезать выделение в буфер обмена - + &Copy Копировать - + Copy the current selection's contents to the clipboard Копировать выделение в буфер обмена - + &Paste Вставить - + Paste the clipboard's contents into the current selection Вставить выделение из буфера обмена - + Configure software for reading from and writing to the transmitter @@ -1744,7 +1718,7 @@ Do you want to download it now ? Записать EEPROM в TX - + Ctrl+Alt+W @@ -1757,7 +1731,7 @@ Do you want to download it now ? Считать EEPROM из TX - + Ctrl+Alt+R @@ -1798,7 +1772,7 @@ Do you want to download it now ? Считать прошивку из передатчика - + &Configure... Настройка @@ -1807,148 +1781,148 @@ Do you want to download it now ? Настроить программатор - + &List programmers Список программаторов - + List available programmers Показать список программаторов - + &Fuses... Фьюзы - + Show fuses dialog Показать диалог установки фьюзов - + &Simulate Симуляция - + Alt+S - + Simulate selected model. Запустить симуляцию - + &Print Печать - + Ctrl+P - + Print current model. Распечатать текущую модель - + Cl&ose Закрыть - + Close the active window Закрыть активное окно - + Close &All Закрыть все - + Close all the windows Закрыть все окна - + &Tile Мозаика - + Tile the windows Расположить окна мозаикой - + &Cascade Каскад - + Cascade the windows Разместить окна каскадом - + Ne&xt Следующее - + Move the focus to the next window Переместить фокус на следующее окно - + Pre&vious Предыдущее - + Move the focus to the previous window Переместить фокус на предыдущее окно - + &About О программе - + Show the application's About box Показать окно "О программе" - - + + Recent Files - + &Read/Write - + Write - + Unable to find file %1! Невозможно найти файл %1! - + Error reading file %1: %2. Ошибка при считывании файла %1: @@ -1959,227 +1933,253 @@ Do you want to download it now ? Авторы - + Switch layout Left/Right - + &File Файл - + Switch layout direction Зеркало - - - - - companion9x - Models and Settings Editor - %1 - profile %2 - - - - - - - - companion9x - Models and Settings Editor - %1 - - Checking for updates + + + A new version of Companion is available (version %1)<br>Would you like to download it? + + + + + A new release of Companion is available please check the repository + + + + + + Compilation server requires registration, please check OpenTX web site + + Do you want to write the firmware to the transmitter now ? - + Firmware %1 does not seem to have ever been downloaded. Version %2 is available. Do you want to download it now ? - - - - + + + + Read Models and Settings From Tx - + The file %1 has not been recognized as a valid Models and Settings file Write anyway ? - - - - - - + + + + + + Backup Models and Settings From Tx - + Cannot check Models and Settings compatibility! Continue anyway? - + The transmitter firmware belongs to another product family, check file and preferences! - + The transmitter firmware is outdated, please upgrade! - + Write Models and Settings To Tx - - + + Write Firmware To Tx - + Cannot convert Models and Settings for use with this firmware, original data will be used - + Restore Models and Settings To Tx - + Could not restore Models and Settings to TX. The models and settings data file can be found at: %1 - + Firmware write failed - + Could not write firmware to to transmitter. The models and settings data file can be found at: %1 - + Cannot backup existing Models and Settings from TX. Firmware write process aborted - + Save transmitter Models and Settings to File - + Impossible to identify the radio on your system, please verify that the eeprom disk is connected. - + Read Tx Firmware to File - + + The Companion project was originally forked from eePe + + + + + About Companion + + + + + Check for new version of Companion + + + + + Show Companion contributors list + + + + + Show Companion changelog + + + + &Write Models and Settings To Tx - + Write Models and Settings to transmitter - + &Read Models and Settings From Tx - + Read Models and Settings from transmitter - + Write Firmware - + Write firmware to transmitter - + Write Models and Settings from file to Tx - + Write Models and Settings from file to transmitter - + Save transmitter Models and Settings to file - + Save the Models and Settings from the transmitter to a file - + Read Firmware - + Read firmware from transmitter - - + + Firmware Profiles - + &Edit Правка - - + + Invalid Models and Settings File %1 - + Invalid binary Models and Settings File %1 @@ -2188,22 +2188,22 @@ Write anyway ? Запись - + &Window Окна - + &Help Помощь - + File Файл - + Edit Правка @@ -2212,12 +2212,12 @@ Write anyway ? Запись - + Help - + Ready Готово @@ -2321,6 +2321,13 @@ Write anyway ? Do you want to use model wizard? + + + + + Companion + + Ask this question again ? @@ -2422,13 +2429,6 @@ Write anyway ? Invalid binary backup File %1 - - - - - companion9x - - %1 has been modified. @@ -7506,11 +7506,11 @@ If this is checked the throttle will be reversed. Idle will be forward, trim wi - Thanks all for the donations, kind messages, nice ideas, constructive proposals etc. for the next openTX/C9x funding model. + Thanks all for the donations, kind messages, nice ideas, constructive proposals etc. for the next OpenTX/Companion funding model. -We are really sensible to that! +We are really appreciative for that! -The openTX/C9X Team. +The OpenTX/Companion Team. @@ -7840,7 +7840,7 @@ Please only use this if you know what you are doing. There are no error checks - companion9x + Companion @@ -7915,6 +7915,11 @@ m2560 for v4.1 boards Browse for file + + + Allows Companion to write to older version of the firmware + + Backup and restore Models and Settings @@ -7961,11 +7966,6 @@ m2560 for v4.1 boards Variant - - - Allows companion9x to write to older version of the firmware - - Check Firmware compatibility @@ -8743,27 +8743,27 @@ m2560 for v4.1 boards Honors go to Rafal Tomczak (RadioClone) and Thomas Husterer (th9x) -of course. Also to Erez Raviv (er9x) and it's fantastic eePe, from which -companion9x was forked out. +of course. Also to Erez Raviv (er9x) and the fantastic eePe program +which was the staring point for OpenTX Companion. - + + Companion Release Notes + + + + Thank you all !!! - + Contributors - - Companion9x Release Notes - - - - + OpenTX Release Notes @@ -8920,7 +8920,7 @@ p, li { white-space: pre-wrap; } - companion9x + Companion @@ -9247,7 +9247,7 @@ Press cancel to abort joystick calibration logsDialog - Companion9x log viewer + Companion Log Viewer @@ -9261,47 +9261,59 @@ Press cancel to abort joystick calibration - + Zoom - + X - + Y - + Fly sessions - + Telemetry logs - + Time - + + Error + Ошибка + + + + Cannot write file %1: +%2. + Не удается записать файл %1: +%2. + + + Select your log file - + Available fields - + The selected logfile contains %1 invalid lines out of %2 total lines @@ -9759,7 +9771,7 @@ Press cancel to abort joystick calibration Настройки - + Language (requires restart) Язык (треб. перезапуск) @@ -9769,23 +9781,23 @@ Press cancel to abort joystick calibration - - + + Download - + Default Channel Order Порядок следов. каналов - + Default Stick Mode Режим стиков - + Channel order This is used by the templated to determine which channel goes to what number output. @@ -9794,17 +9806,17 @@ This is used by the templated to determine which channel goes to what number out Шаблон для определения порядка следования каналов. - + FwInfo - + Show Splash Screen - + Mode selection: Mode 1: @@ -9827,117 +9839,127 @@ Mode 4: - + Mode 1 (RUD ELE THR AIL) - + Mode 2 (RUD THR ELE AIL) - + Mode 3 (AIL ELE THR RUD) - + Mode 4 (AIL THR ELE RUD) - + Automatic Backup Folder - + Automatically add version number to the filename after download - + Voice - + Set language of voice. May be different from firmware language - + Firmware - + + Find Executable + + + + + Google Earth Executable + + + + Check for updates on startup Проверять обновления - - + + ... - + Splash library behaviour - + Include companion splashes - + Only user defined splashes - + Custom TX splash screen - + Personal splash library - + Joystick - - - - + + + + Open Folder - + SD Structure path - + Processor ID - + Simulator capture folder - + Use clipboard only @@ -9988,201 +10010,206 @@ May be different from firmware language - + Check for updates - + Language - + Profile Name - + Export Profile - + Save Profile - + Import Profile - + Simu BackLight - + Check for selected Fw updates - + Ask use of wizard for new models - + Remember switches in simulator - + Blue Blu - + Green - + Red - + Orange - + Yellow - + Profile slot - + auto backup before write - + Ask for flashing after Download - + Enable - + Calibrate - + Open Image - + Invert Pixels - + Last downloaded release: %1 - - The selected firmware has never been downloaded by companion9x. - - - - - The selected firmware cannot be downloaded by companion9x. - - - - + Image stored in settings - - + + No joysticks found - + Select your snapshot folder - + Select your Models and Settings backup folder - + + Select Google Earth executable + + + + Select the folder replicating your SD structure - + Profile name is empty, profile slot %1 will be deleted.<br>Are you sure ? - + Export profile As - + Profile slot is not empty, profile slot %1 will we overwritten.<br>Are you sure ? - + Open Profile to import - + Open Image to load - + Images (%1) - - + + Error Ошибка - + + The selected firmware has never been downloaded by Companion. + + + + + The selected firmware cannot be downloaded by Companion. + + + + Select your library folder - - + + Cannot load %1. @@ -10756,10 +10783,9 @@ May be different from firmware language simulatorDialog - Companion9x Simulator ER9x Simulator - ER9x Симулятор + ER9x Симулятор @@ -10879,269 +10905,274 @@ May be different from firmware language - + Outputs - + CSK SWK - + CS1 - + + Companion Simulator + + + + CS2 - + CS3 - + CS4 - + CS5 - + CS6 - + CS7 - + CS8 - + CS9 - + CSA - + CSB - + CSC - + CSD - + CSE - + CSF - + CSG - + CSH - + CSI - + CSJ - + CSL - + CSM - + CSN - + CSO - + CSP - + CSQ - + CSR - + CSS - + CST - + CSU - + CSV - + CSW SWW - + CH1 - + CH9 - + CH2 - + CH10 - + CH3 - + CH11 - + CH4 - + CH12 - + CH5 - + CH13 - + CH6 - + CH14 - + CH7 - + CH15 - + CH8 - + CH16 - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + -100.1 @@ -11219,9 +11250,8 @@ May be different from firmware language xsimulatorDialog - Companion9x Simulator - ER9x Симулятор + ER9x Симулятор @@ -11328,6 +11358,11 @@ May be different from firmware language S2 + + + Companion Simulator + + @@ -11358,16 +11393,16 @@ May be different from firmware language - - - - - - - - - - + + + + + + + + + + -100.1 @@ -11402,207 +11437,207 @@ May be different from firmware language - + CH12 - + CH5 - + CH13 - + CH6 - + CH14 - + CH7 - + CH15 - + CH8 - + CH16 - + CSK - + CSC - + CSD - + CS7 - + CSL - + CSB - + CS1 - + CSH - + CSG - + CSE - + CSF - + CS8 - + CS9 - + CSA - + CSM - + CSJ - + CSI - + CS4 - + CS5 - + CS2 - + CS3 - + CS6 - + CSN - + CSO - + CSP - + CSQ - + CSR - + CSS - + CST - + CSU - + CSV - + CSW diff --git a/companion/src/translations/companion9x_sv.ts b/companion/src/translations/companion9x_sv.ts index bf7422eac..463c6e52e 100644 --- a/companion/src/translations/companion9x_sv.ts +++ b/companion/src/translations/companion9x_sv.ts @@ -1211,53 +1211,38 @@ FAI-funktionen kan inte slås av i sändaren. MainWindow - + File loaded Filen har laddats - + - + Save As Spara Som - - + + No updates available at this time. Inga updateringar finns tillgängliga. - + - + Unable to check for updates. Det gick inte att söka efter uppdateringar. - - - - companion9x - Models and Settings Editor - %1 - profile %2 - companion9x - Editor för Modeller och Inställningar - %1 - profile %2 - - - - - - - companion9x - Models and Settings Editor - %1 - companion9x - Editor för Modeller och Inställningar - %1 - - - + Executable (*.exe) Program (*.exe) @@ -1272,7 +1257,7 @@ FAI-funktionen kan inte slås av i sändaren. Vill du skriva firmware till sändaren nu? - + A new version of %1 firmware is available (current %2 - newer %3). Do you want to download it now ? En ny version finns tillgänglig av %1 fimware (Din version %2 - Ny version %3). @@ -1367,12 +1352,7 @@ Vill du ladda ned den nya versionen nu ? &Sök efter uppdateringar... - - A new version of companion9x is available (version %1)<br>Would you like to download it? - An ny version av companion9x finns tillgänglig (version %1)<br>Vill du ladda ned den? - - - + Display previous message again at startup ? Skall föregående varning visas igen vid uppstart ? @@ -1387,18 +1367,12 @@ Vill du ladda ned den nya versionen nu ? Tillfälligt fel i byggservern. Försök igen senare - - - Compilation server requires registration, please check opentx web site - Byggservern kräver registrering. Var god kontrollera openTX webbsida - - - + Firmware does not fit in the Tx, due to selected firmware options Firmware får inte rum i minnet på grund av att för många funktioner aktiverats - + Firmware %1 does not seem to have ever been downloaded. Version %2 is available. Do you want to download it now ? @@ -1432,32 +1406,12 @@ Vill du ladda ned den nu ? Version %1 (revision %2), %3 - - The companion9x project was originally forked from eePe - Ursprungligen grenades companion9x av från eePe - - - + If you've found this program useful, please support by Om du tycker att programet är användbart så kan du stödja utvecklingen genom att - - About companion9x - Om companion9x - - - - Check for new version of companion9x/er9x - Sök efter ny version av companion9x/er9x - - - - Show companion9x contributors list - Visa vilka som bidragit till companion9x - - - + Customize your &TX... Sändari&nställningar... @@ -1668,17 +1622,37 @@ Vill du ladda ned den nu ? Byt layout-riktning - + + + + Companion - Models and Settings Editor - %1 - profile %2 + Companion - Editor för Modeller och Inställningar - %1 - profile %2 + + + + + + + Companion - Models and Settings Editor - %1 + Companion - Editor för Modeller och Inställningar - %1 + + + Checking for updates Letar efter uppdateringar - + Ignore this version (r%1)? Ladda inte ned versionen (r%1)? - + + Show Companion changelog + Visa en lista med förändringar av Companion + + + &Write Models and Settings To Tx &Skriv Modeller och Inställningar till sändaren @@ -1737,14 +1711,6 @@ Vill du ladda ned den nu ? Read firmware from transmitter Läs firmware från sändaren - - &Configure Communication... - &Kommunikationsinställningar... - - - Configure software for communication with the transmitter - Inställningar för mjukvaran som kommunicerar med sändaren - &Edit @@ -1786,7 +1752,7 @@ Vill du ladda ned den nu ? &Bidragsgivare... - + Display previous warning again at startup ? SKall föregående varning visas igen vid uppstart ? @@ -1795,7 +1761,7 @@ Vill du ladda ned den nu ? - + @@ -1815,19 +1781,14 @@ Vill du ladda ned den nu ? %2. - + New release available En ny version finns tillgänglig - - - A new release of companion is available please check the repository - En ny version av companion finns tillgänglig. Kontrollera källkods-repository - - + Error opening file %1: @@ -1836,7 +1797,7 @@ Vill du ladda ned den nu ? %2. - + Compilation server termporary failure, try later Tillfälligt fel i byggservern. Försök igen senare @@ -1853,7 +1814,7 @@ Vill du ladda ned den nu ? Okänt server-fel. Försök igen senare - + Compare... Jämför... @@ -1959,7 +1920,23 @@ Vill du ladda ned den nu ? Ja - + + A new version of Companion is available (version %1)<br>Would you like to download it? + An ny version av Companion finns tillgänglig (version %1)<br>Vill du ladda ned den? + + + + A new release of Companion is available please check the repository + En ny version av Companion finns tillgänglig. Kontrollera källkods-repository + + + + + Compilation server requires registration, please check OpenTX web site + Byggservern kräver registrering. Var god kontrollera OpenTX webbsida + + + No Nej @@ -2090,17 +2067,32 @@ Starta skrivningen i alla fall ? Läs Sändarens Firmware till Fil - + + The Companion project was originally forked from eePe + Ursprungligen grenades Companion av från eePe + + + + About Companion + Om Companion + + + + Check for new version of Companion + Sök efter ny version av Companion + + + + Show Companion contributors list + Visa vilka som bidragit till Companion + + + ChangeLog... Förändringar... - - Show companion9x changelog - Visa en lista med förändringar av companion9x - - - + Firmware ChangeLog... Firmware-förändringar... @@ -2218,14 +2210,7 @@ Starta skrivningen i alla fall ? Ogiltig binär modelldatafil %1 - - - - companion9x - companion9x - - - + %1 has been modified. Do you want to save your changes? %1 har förändrats. @@ -2242,7 +2227,14 @@ Vill du spara förändringarna? Säkerhetskopierin kan ej utföras - + + + + Companion + Companion + + + The backup dir set in preferences does not exist Katalog för säkerhetskopiering saknas i inställningarna @@ -7167,16 +7159,16 @@ eeprom-storleken är 4096, men enbart den första hälften används - Thanks all for the donations, kind messages, nice ideas, constructive proposals etc. for the next openTX/C9x funding model. + Thanks all for the donations, kind messages, nice ideas, constructive proposals etc. for the next OpenTX/Companion funding model. -We are really sensible to that! +We are really appreciative for that! -The openTX/C9X Team. - Tack för alla donationer, vänliga meddelanden, goda idéer och konstruktiva förslag för att bekosta fortsatt utveckling av openTX/companion9x +The OpenTX/Companion Team. + Tack för alla donationer, vänliga meddelanden, goda idéer och konstruktiva förslag för att bekosta fortsatt utveckling av OpenTX/Companion -Vi uppkskattar ert stöd! +Vi uppskattar ert stöd! -Gruppen bakum openTX/companion9X. +Gruppen bakom OpenTX/Companion. @@ -7450,12 +7442,6 @@ OBS. Fyll enbart i detta fällt om du är säker på vad du gör. Ingen kontroll Select Location Välj sökväg - - - - companion9x - companion9x - @@ -7473,7 +7459,7 @@ m2560 for v4.1 boards m2560 för v4.1-kort - + <b><u>WARNING!</u></b><br>This will reset the fuses of %1 to the factory settings.<br>Writing fuses can mess up your radio.<br>Do this only if you are sure they are wrong!<br>Are you sure you want to continue? <b><u>VARNING!</u></b><br>Detta åerställer säkringarna för %1 till deras ursprungliga värden.<br>Att ändra dessa värden kan skapa allvarliga problem med din sändare.<br>Ändra säkringarna bara om du är helt säker på att de har fel värde!<br>Är du säker på att du vill fortsätta? @@ -7550,6 +7536,12 @@ m2560 för v4.1-kort AVRDUDE Configuration Inställningar för AVRDUDE + + + + Companion + Companion + burnDialog @@ -7569,7 +7561,12 @@ m2560 för v4.1-kort Subversion - + + Allows Companion to write to older version of the firmware + Tillåter Companon att skriva till äldre firmware-versioner + + + Load Image Ladda Bild @@ -7748,12 +7745,7 @@ m2560 för v4.1-kort Välj fil - - Allows companion9x to write to older version of the firmware - Tillåter companon9x att skriva till äldre firmware-versioner - - - + Backup and restore Models and Settings Säkerhetskopiera Modeller och Inställningar @@ -8375,14 +8367,19 @@ m2560 för v4.1-kort Honors go to Rafal Tomczak (RadioClone) and Thomas Husterer (th9x) -of course. Also to Erez Raviv (er9x) and it's fantastic eePe, from which -companion9x was forked out. - All heder åt Rafal Tomczak (RadioClone) och Thomas Husterer (th9x) naturligtvis. -Dessutom till Erez Raviv (er9x) och dess fantastiska eePe, från vilken -companion9x grenades av. +of course. Also to Erez Raviv (er9x) and the fantastic eePe program +which was the staring point for OpenTX Companion. + All heder åt Rafal Tomczak (RadioClone) och Thomas Husterer (th9x) naturligtvis. +Dessutom till Erez Raviv (er9x) och hans fantastiska eePe, från vilken +OpenTX Companion grenades av. - + + Companion Release Notes + Companion Release Notes + + + Thank you all !!! Tack till er alla !!! @@ -8392,12 +8389,7 @@ companion9x grenades av. Bidragande - - Companion9x Release Notes - Companion9x Release Notes - - - + OpenTX Release Notes OpenTX Release Notes @@ -8550,8 +8542,8 @@ p, li { white-space: pre-wrap; } - companion9x - companion9x + Companion + Companion @@ -8931,8 +8923,8 @@ Tryck på Avbryt för att avburyta kalibreringen logsDialog - Companion9x log viewer - Companion9x loggläsare + Companion Log Viewer + Companion Logg-läsare @@ -8945,7 +8937,7 @@ Tryck på Avbryt för att avburyta kalibreringen Öppna Loggfil - + Zoom Zoom @@ -8960,7 +8952,7 @@ Tryck på Avbryt för att avburyta kalibreringen Y - + Telemetry logs Telemetriloggar @@ -8970,7 +8962,19 @@ Tryck på Avbryt för att avburyta kalibreringen Tid - + + Error + Fel + + + + Cannot write file %1: +%2. + Filen %1 kunde inte skrivas: +%2. + + + Select your log file Välj loggfil @@ -8980,7 +8984,7 @@ Tryck på Avbryt för att avburyta kalibreringen Tillgängliga fält - + The selected logfile contains %1 invalid lines out of %2 total lines Denn aktuella filen innehåller %1 felaktiga rader. Totalt innehåller filen %2 rader @@ -9443,22 +9447,22 @@ Tryck på Avbryt för att avburyta kalibreringen Inställningar - + Language (requires restart) Språk (kräver omstart) - + Show Splash Screen Visa bild vid start av sändare - + Recent History Size Loggstorlek - + Download Nedladdning @@ -9469,7 +9473,7 @@ Tryck på Avbryt för att avburyta kalibreringen Kanalordning - + Channel order This is used by the templated to determine which channel goes to what number output. @@ -9478,7 +9482,7 @@ This is used by the templated to determine which channel goes to what number out Detta används av mallen för att koppla kanal till output-nummer. - + Default Stick Mode Spaktilldelning @@ -9554,7 +9558,17 @@ Mode 4: Firmware - + + Find Executable + Sök Program + + + + Google Earth Executable + Sökväg till Google Earth + + + Check for updates on startup Sök efter uppdateringar vid start @@ -9565,30 +9579,30 @@ Mode 4: ... - + Splash library behaviour Beteende för bildbibliotek - + Personal splash library Personligt bildbibliotek - + Joystick Joystick - - + + + - Open Folder Öppna katalog - + @@ -9634,12 +9648,12 @@ Mode 4: Kryssruta - + Check for updates Sök efter uppdateringar - + Blue Blu Blå @@ -9665,7 +9679,7 @@ Mode 4: Gul - + Enable Slå på @@ -9675,7 +9689,7 @@ Mode 4: Kalibrera - + Open Image Öppna bild @@ -9685,38 +9699,33 @@ Mode 4: Invertera bild - + FwInfo Firmware-info - + Last downloaded release: %1 Senast nedladdade release: %1 - - The selected firmware has never been downloaded by companion9x. - Firmware-filen har aldrig laddats ned av companion9x. - - - - The selected firmware cannot be downloaded by companion9x. - Firmware-filen kan inte laddas ned av companion9x. - - - - + + No joysticks found Ingen joystick hittades - + Select your Models and Settings backup folder Välj folder för automatisk säkerhetskopiering - + + Select Google Earth executable + Sökväg till Google Earth + + + Open Image to load Öppna bild för laddning @@ -9726,24 +9735,34 @@ Mode 4: Bilder (%1) - - + + Error Fel - - + + The selected firmware has never been downloaded by Companion. + Firmware-filen har aldrig laddats ned av Companion. + + + + The selected firmware cannot be downloaded by Companion. + Firmware-filen kan inte laddas ned av Companion. + + + + Cannot load %1. %1 kunde inte laddas. - + Image stored in settings Bilden lagras i inställningar - + Include companion splashes Användarens bilder och companion-bilder @@ -9753,7 +9772,7 @@ Mode 4: Enbart användarens bilder - + Custom TX splash screen Egen uppstartsbild @@ -9763,12 +9782,12 @@ Mode 4: Fråga om skrivning efter Nedladdning - + Language Språk - + Profile Name Profilnamn @@ -9778,7 +9797,7 @@ Mode 4: Spara Profil - + Profile slot Profilplats @@ -9793,7 +9812,7 @@ Mode 4: Välj bibliotekskatalog - + Export Profile Exportera Profil @@ -9803,7 +9822,7 @@ Mode 4: Importera Profil - + Automatically add version number to the filename after download Lägg automatiskt till ett versionsnummer till filnamnet @@ -9820,7 +9839,7 @@ May be different from firmware language Får skilja från språket för mjukvaran - + Export profile As Exportera profil som @@ -9835,12 +9854,12 @@ Får skilja från språket för mjukvaran Öppna profil för import - + Simu BackLight Simulatorbelysning - + Processor ID Processortyp @@ -9850,22 +9869,22 @@ Får skilja från språket för mjukvaran Katalog för simulator-data - + Use clipboard only Använd bara clipboard - + Select your snapshot folder Välj katalog för snapshots - + Profile name is empty, profile slot %1 will be deleted.<br>Are you sure ? Profilnamn saknas, profilplats %1 kommer att raderas.<br> Är du säker? - + Check for selected Fw updates Sök efter updatering av vald FW @@ -9880,7 +9899,7 @@ Får skilja från språket för mjukvaran Minns brytare i simulator - + SD Structure path Sökväg till SD-struktur @@ -10387,13 +10406,7 @@ Får skilja från språket för mjukvaran simulatorDialog - - Companion9x Simulator - ER9x Simulator - Companion 9x Simulator - - - + P1 P1 @@ -10498,17 +10511,22 @@ Får skilja från språket för mjukvaran Höger dubbelklick nollställer - + + Companion Simulator + Companion Simulator + + + 9x Simulator Simulator för 9x - + Outputs Utgångar - + CH1 KN1 @@ -10639,7 +10657,7 @@ Får skilja från språket för mjukvaran Simulerar - + 0 % @@ -10651,7 +10669,7 @@ Får skilja från språket för mjukvaran - Fligmod: %1(%2) - + CS1 LB1 @@ -10741,7 +10759,7 @@ Får skilja från språket för mjukvaran LBI - + CSJ LBJ @@ -10848,12 +10866,7 @@ Får skilja från språket för mjukvaran xsimulatorDialog - - Companion9x Simulator - Companion 9x-Simulator - - - + SE SE @@ -10923,7 +10936,12 @@ Får skilja från språket för mjukvaran SG - + + Companion Simulator + Companion Simulator + + + SD SD @@ -10951,7 +10969,7 @@ Får skilja från språket för mjukvaran - + @@ -10965,7 +10983,7 @@ Får skilja från språket för mjukvaran -100.1 - + CH9 KN9 @@ -10995,7 +11013,7 @@ Får skilja från språket för mjukvaran KN4 - + CH12 KN12 @@ -11071,7 +11089,7 @@ Får skilja från språket för mjukvaran Simulerar - + SF @@ -11112,7 +11130,7 @@ Får skilja från språket för mjukvaran - Fligmod: %1(%2) - + CSK LBK diff --git a/companion/src/warnings.h b/companion/src/warnings.h index 2f18a736d..c8fb4753e 100644 --- a/companion/src/warnings.h +++ b/companion/src/warnings.h @@ -2,7 +2,7 @@ #define WARNINGS_H #define WARNING_LEVEL 0 #define WARNING_ID 6 -#define WARNING QObject::tr("Thanks all for the donations, kind messages, nice ideas, constructive proposals etc. for the next openTX/C9x funding model.\n\nWe are really sensible to that!\n\nThe openTX/C9X Team.") +#define WARNING QObject::tr("Thanks all for the donations, kind messages, nice ideas, constructive proposals etc. for the next OpenTX/Companion funding model.\n\nWe are really appreciative for that!\n\nThe OpenTX/Companion Team.") #endif /* WARNINGS_H */ diff --git a/companion/src/xsimulatordialog.ui b/companion/src/xsimulatordialog.ui index d2bc64bfe..2ddd8f310 100644 --- a/companion/src/xsimulatordialog.ui +++ b/companion/src/xsimulatordialog.ui @@ -23,7 +23,7 @@ - Companion9x Simulator + Companion Simulator @@ -2053,6 +2053,7 @@ border-radius: 4px; 16777215 18 + QSlider::sub-page:horizontal:disabled { From 3783648a7cc74218480a9f1899ef3b4de1b3ce08 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Sun, 5 Jan 2014 10:38:29 +0100 Subject: [PATCH 065/308] Update DONATIONS.txt --- DONATIONS.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/DONATIONS.txt b/DONATIONS.txt index 3a6b104aa..3c1fa360a 100644 --- a/DONATIONS.txt +++ b/DONATIONS.txt @@ -270,3 +270,4 @@ ANF King Henrik Hammarström Kenneth Lilja (monthly) R Wells +Uwe Jordt From 32c16f9f285f28032b3185baf7ea84b0f75f7066 Mon Sep 17 00:00:00 2001 From: mhotar Date: Sun, 5 Jan 2014 10:56:17 +0100 Subject: [PATCH 066/308] FIXEDWIDTH flag Editing fields are now in FIXED mode to show its real width on LCD. TODO: font bitmaps have to be altered to center shorter characters to the center of the field. --- radio/src/fonts/std/font_05x07.png | Bin 636 -> 636 bytes radio/src/gui/menu_model.cpp | 12 +++++++++--- radio/src/lcd.cpp | 9 +++++++-- radio/src/lcd.h | 2 +- 4 files changed, 17 insertions(+), 6 deletions(-) diff --git a/radio/src/fonts/std/font_05x07.png b/radio/src/fonts/std/font_05x07.png index 22213129e8fd635fd7ef4700dc2e3cbae34f889c..ecce792a0551ae4b62832b2b0cfe014f03ef9746 100644 GIT binary patch delta 19 acmeyv@`q(Y0tYLjAYb&~tk{hiB1`~9$Odcx delta 19 acmeyv@`q(Y0tb_*8FOXf^a&d?M3?|ZxCV&; diff --git a/radio/src/gui/menu_model.cpp b/radio/src/gui/menu_model.cpp index 3f8a650e1..e4af21281 100644 --- a/radio/src/gui/menu_model.cpp +++ b/radio/src/gui/menu_model.cpp @@ -768,7 +768,12 @@ void editName(uint8_t x, uint8_t y, char *name, uint8_t size, uint8_t event, uin lcd_putsLeft(y, STR_NAME); #endif - lcd_putsnAtt(x, y, name, size, ZCHAR | ((active && s_editMode <= 0) ? INVERS : 0)); + uint8_t mode = 0; + if (active) { + if (s_editMode <= 0) mode = INVERS+FIXEDWIDTH; + else mode = FIXEDWIDTH; + } + lcd_putsnAtt(x, y, name, size, ZCHAR | mode); if (active) { uint8_t cur = editNameCursorPos; @@ -831,8 +836,9 @@ void editName(uint8_t x, uint8_t y, char *name, uint8_t size, uint8_t event, uin name[cur] = v; eeDirty(EE_MODEL); } - lcd_putsnAtt(x, y, name, editNameCursorPos, ZCHAR | ((active && s_editMode <= 0) ? INVERS : 0)); - lcd_putcAtt(lcdLastPos, y, idx2char(v), INVERS); + lcd_putcAtt(x+editNameCursorPos*FW, y, idx2char(v), INVERS+FIXEDWIDTH); +// lcd_putsnAtt(x, y, name, editNameCursorPos, ZCHAR); +// lcd_putcAtt(lcdLastPos, y, idx2char(v), INVERS); } else { cur = 0; diff --git a/radio/src/lcd.cpp b/radio/src/lcd.cpp index 24089ff37..723dce392 100644 --- a/radio/src/lcd.cpp +++ b/radio/src/lcd.cpp @@ -287,7 +287,10 @@ void lcd_putcAtt(xcoord_t x, uint8_t y, const unsigned char c, LcdFlags flags) } } else if (i <= 5) b = pgm_read_byte(q++); - if (b == 0xff) continue; + if (b == 0xff) { + if (flags & FIXEDWIDTH) b = 0; + else continue; + } if (inv) b = ~b; #if !defined(CPUM64) || defined(EXTSTD) if (!(flags & BOLD) && (i == 7)) continue; @@ -459,6 +462,7 @@ void lcd_outdezNAtt(xcoord_t x, uint8_t y, lcdint_t val, LcdFlags flags, uint8_t { uint8_t fw = FWNUM; int8_t mode = MODE(flags); + flags &= ~LEADING0; bool dblsize = flags & DBLSIZE; #if defined(CPUARM) bool midsize = flags & MIDSIZE; @@ -490,6 +494,7 @@ void lcd_outdezNAtt(xcoord_t x, uint8_t y, lcdint_t val, LcdFlags flags, uint8_t len = mode + 1; } + if (dblsize) { fw += FWNUM; } @@ -933,7 +938,7 @@ void putsVBat(xcoord_t x, uint8_t y, LcdFlags att) void putsStrIdx(xcoord_t x, uint8_t y, const pm_char *str, uint8_t idx, LcdFlags att) { - lcd_putsAtt(x, y, str, att); + lcd_putsAtt(x, y, str, att & ~LEADING0); lcd_outdezNAtt(lcdNextPos, y, idx, att|LEFT, 2); } diff --git a/radio/src/lcd.h b/radio/src/lcd.h index 4cfa02c15..2ba458c7f 100644 --- a/radio/src/lcd.h +++ b/radio/src/lcd.h @@ -78,7 +78,7 @@ /* lcd putc flags */ #define CONDENSED 0x08 - +#define FIXEDWIDTH 0x10 /* lcd puts flags */ /* no 0x80 here because of "GV"1 which is aligned LEFT */ /* no 0x10 here because of "MODEL"01 which uses LEADING0 */ From 0d189b87da87cf765f097746e83f2eeb49081648 Mon Sep 17 00:00:00 2001 From: Dvogonen Date: Sun, 5 Jan 2014 12:11:18 +0100 Subject: [PATCH 067/308] Removed old graphics. Created scalable version of the Companion logo. Regenerated icons for Windows and Linux. --- companion/src/icon.ico | Bin 8190 -> 208630 bytes companion/src/icon.png | Bin 2967 -> 3732 bytes companion/src/icon.svg | 157 ------------------ .../src/images/originals/vector-logo.odg | Bin 0 -> 15921 bytes .../src/images/originals/vector-logo.svg | 104 ++++++++++++ .../src/images/originals/windows-icon.xcf | Bin 0 -> 37057 bytes companion/src/images/splash-2012.png | Bin 403007 -> 0 bytes companion/src/images/splash-2013.png | Bin 386571 -> 0 bytes companion/src/images/splash-ambroise.png | Bin 39575 -> 0 bytes companion/src/images/splash-hb.png | Bin 171149 -> 0 bytes companion/src/images/splash-old.png | Bin 42569 -> 0 bytes 11 files changed, 104 insertions(+), 157 deletions(-) delete mode 100644 companion/src/icon.svg create mode 100644 companion/src/images/originals/vector-logo.odg create mode 100644 companion/src/images/originals/vector-logo.svg create mode 100644 companion/src/images/originals/windows-icon.xcf delete mode 100644 companion/src/images/splash-2012.png delete mode 100644 companion/src/images/splash-2013.png delete mode 100644 companion/src/images/splash-ambroise.png delete mode 100644 companion/src/images/splash-hb.png delete mode 100644 companion/src/images/splash-old.png diff --git a/companion/src/icon.ico b/companion/src/icon.ico index 72b26839a615de856a0280446342824cf00cdf37..ad09f76fe1f90e61bef1ef6bf70a426db6eb80b8 100644 GIT binary patch literal 208630 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

=y@{*xo@(54V0{yW49ACH!q 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 literal 2967 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 N002ovPDHLkV1m;n$2tH2 diff --git a/companion/src/icon.svg b/companion/src/icon.svg deleted file mode 100644 index c36f00f53..000000000 --- a/companion/src/icon.svg +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - diff --git a/companion/src/images/originals/vector-logo.odg b/companion/src/images/originals/vector-logo.odg new file mode 100644 index 0000000000000000000000000000000000000000..a4c4278c84e0c4c63be7612524404fdfa615b1fd GIT binary patch literal 15921 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 literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/vector-logo.svg b/companion/src/images/originals/vector-logo.svg new file mode 100644 index 000000000..40a99a3b0 --- /dev/null +++ b/companion/src/images/originals/vector-logo.svg @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + COMPANION + + + + + + O + + + + + P + + + + + E + + + + + N + + + + + + + + + \ No newline at end of file diff --git a/companion/src/images/originals/windows-icon.xcf b/companion/src/images/originals/windows-icon.xcf new file mode 100644 index 0000000000000000000000000000000000000000..7cf9bcf7144690d860d21db5050bb488a3b96b42 GIT binary patch literal 37057 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 Uv^I0Mt(1a|UH*`$8IeEr7wS-&5dZ)H literal 0 HcmV?d00001 diff --git a/companion/src/images/splash-2012.png b/companion/src/images/splash-2012.png deleted file mode 100644 index f5afdbafa368ccc425a5d34cb6addec0fcfa1af1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 403007 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


8`bQmS@l#g=<9~T1tYvB!MRFw~>gs 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[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%0DEwIMS+Q>qPBQQBAEPFL2ygOI@0>x)dIR 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

AA0ptzEtT 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�(BS)(f8@BbP7N~!Kn0-p=&JiDhC8|=Z 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

@Sv$VSg-|Us# zoP(+p3X|l+FcJ33&cxI^70O;2%YExtGX>Zl*s5ZLV;-pKG6V`5S^NHjmh3)5VCRl6{%&6LJQgO{ z<-2tI;j;0L?0qRrP=xZBt1RwjHEx959JuZ;RMsWLrLS24?8HlQNW{?qdljwK)r zrpAQiZl+3?@;Y9Fi`z)~gA+Zb5H{G}970H+=AM)+&M$~~&M zb{?3Y96OqFaiHYqqo?Yc(tpQcMVf^QMI-$7Mmd0*Ry(U;g+3oeN|I&lL9)N}F_4&ZpJ$iS?>Ww)wi7Zk%q!l+a9QTzejdNOxMZI=_!KzZU+EtQhA|J$e83AG4XHT=i&)@rMPM>;)!uJtD z=yF)4B92p%I3tNO9J$Ti2TxRo2IW+m#?cy@%_eib4kGaAq%lFWPA5y8Qd>ZpXJ~6M zxf4Fr>vd)p=3R@`f+}-wofDi`Op&op`7O%Nmv-rVlLoLZtE%icfSN#Xq2@CQeu=vOT+eEyYrEEtpET6b4f%&ROuxt7cX9-*NfeuLODZY ztu@*T^pZv0VC=9UM52YnqOd6P!eGk3F&3r7vnS#q6=`MF!$xYv93vn=Dg-~BEJ4;~z}#H$#=)z*;BtSPsOssxv9_;IdWxx(vS_c}VA4sj9>7T)EYi;6c_Apyhr!|N4)%fIKf zlYs4Yjem9h6^dCY^43cWP)gzZKDAnnv9U4s?c2xU!-r`$n_RkdiQ~tQbLPw$_Uzfi zJKyUP^z<}EQ7}3>I^Z~&Vb8u*EEy&yCaBeF%+Jpgh9SLPZ-CM|pG7n9VXKs% z!w5>nRSSZEAPC5^j83ORqtW1JfA(kj*vCGGl#*Vr=lt8OrQ7W?J3G6WB`YQS_wVPk zpZ)CM{w7I65Cr(XKgh)$PVeY;yM$pl@OZ2EZc!8st}_h7#TGb=9L(YCAGG|+goJv% zKA2Y(0#}V=r92J8kbb{E@Rr-`+*-~{t>%VP>st2j-#?fuMNtf%pVOyLbM)v@eBWO& z_ES?+eBu+IpwsCfgxm0qF)rOBidMC*SZzL3&)I4n10e)^_wMEV`SXMEs9rxiJ3CMr zkByBHhM`OJ$#aMD*IbeD{`bG1ef#$D;SYb97rp33jE#+vW!aMZQa$5U_HU=t8KAz) zpYh>m>RJmxfH;mhb?OvTQ&WTQRL#lfN-J?SOO?(3BuPS8ck^I&c9tme8K0P-)9GyL z`>nNp-l~G{dJg9|x<$WyF5QYTSkJKg*3D15=D(uQt|Kw9wlYY$%&v%1?1t;ui9x>h zP#1EAMXFuur76}%Ethny2lNojb1_dvP*Q}9Tf_e!?hydOgfujQ00000NkvXXu0mjf DKs)gW diff --git a/companion/src/images/splash-2013.png b/companion/src/images/splash-2013.png deleted file mode 100644 index 0afa871741fb6acd2ebd1fe7b4397ca9f18a70b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 386571 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

*~o9<#xcQ-l; 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 diff --git a/companion/src/images/splash-ambroise.png b/companion/src/images/splash-ambroise.png deleted file mode 100644 index e7df433b566adc749f6771d98aaabd0359dc8403..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39575 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 z 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�c7GMn9pAg)GGApcp(Oa3oN?M>78PyX(sct}-_tBwZr{GeI1Kb% zPpvggz2a=U1SV>}sIy=FWaFQo*}(R3%j2hyI9weT z5LTW@gXg_J`aVakWz#qgR}GCR?^X(ea)!3GXrl-rV~u5;BAd+y=PaZDl=Jg5yq{RS z_A(!zd3GsaUpwMEKX{K_cR9bO`MKg%T{oydpUCnezU68t4V%$&rOt|GNcVJf1Su7#ZXxuR90lzEORsZo-!W`|P+s*ReNgeoIxBIk*wQK;jlxrnOT|1l8er3ZrYl5L6|&ooJgU>t*Xi~lIV>PYlF86@t*tJ3y2;&_Jrs$Mt*WC z_cKW6OYla=f`M9%G-c;b){2QT{j9Vm<-()XX$F2%G0Mc06>7iZplOH~p&$+7Fprng zGaaYCVoGLe2~=T1b(iF!N6Qwa)Eqcbc(t`Nq?8C!Ql3Z^$=~4g{ z$a6oXi~?1Y)uN;dN`-Qcj3=r@wwfFgt($Nfbk(48g~Fk1{>}$-n6RoC|In%!a$<&u3d;dM{+)lqM_mzX z#}uv&W?6o=nY+dm2C_*IJ@tV`9T?Iwv2`8Jb|}@;rF~)cRyC+f&hXRgkBFNuk$enlYaO=%in0}{7Sj^S5d}gFiv$026L%$S;gUsME zcB8oL2kN?EdwI#tgWD{R*PJ~#Lrg&;O?77S88s?WuneJMnhx;cWm5eLF&{GENM@Q> znCjV~ZWXz1=0?~sXvf_zzr}-%gU**{JtZm(Q<|&$YfPF3=fOUrx1XWvCAm#t77(ZB zn5h-y7Ns+y3ulX`M-mpR(p76fPz#io^8*10fl4Gznw>NL_zx~7CCd=$u(a(x% z{Q@K9=Y{N?QuQKhFznfhF{P^Z-kX9qkgXq zTAslv>04fj4j3#zxg1E(Lr#EvoJ9Dk+^+ABO|ff7L!I!FCO0V(+3Uz zPty4~^EYD_q#JQ!X;h7_s=`o?W&K$i!Wt)n%L>UFhhw>DSy)r}&Cb9WUeI;r&(Vdn zz(OkyDorC9l_r!cWimI|jONS=ne*%}QpEF~j%DZm0LMbWh zeWelaaVfBLs_2bXqK$iM=NVmti_&(Y;CBlV+w()(pX~=RiPquPj;|ez}m2|iZCi7u@7b_}bi|3)T2(w1tIAR|$qKN{^7CfNQ32W;TsL&b~2MsAFHcLx&0=0@v z66ZB?ng5#ST8a4FbD*C?F%4u+Qs&(o4R8FlU!eILUqf!LQ9dKbw;)d3-2Hkfef?BE znnf`NrC20HPbYZkO{V|qzr$#d9Ivb8pi9iS^@>z0e)T{5EnfS#{yMrgkS2cgqaU$s zTbib3eXzkCEa|5KNtvZLQ@)eTNizDR^^V> zsjS)dB^DN|$lD9HdZPNpxA4FJC!h-%;!5Y7vbvsXs2GtBFgJ1P0Hh-LKuUXPN_4WO zY?-o}^?0$MzjTgdMw+GL(A5xnP-BsBrRR9H&&C1daX^L+(|Y>hlJDL7fada?JoK!f zd@Wg6EEX)=6^P<^bI77?xrjm-dbAaE9yz#igYSRxh_~PP65o4tpLc)b?{N1kzsAYw z8Ob`bYrtomz~CpA%MDQ?A!aJ0IXXNdjuTziQCW*>8^#n%lAx5qn@B)c7Q0-MyFEC~ zloFqZ%>23B?=$D+8rP>3Q6?%XM)o|pc*w0=xAD1Rx9>Qf-VtSq)E^z)5s+Yqv_hrM>}}5g|`mRxq0^v zx-v|auDm>fIP5XH zp?@-xANRb}M?UHTH#5A_3+Hi9MWQBi^AO(n`b!*zfZu7-FtQ(Z3|ql!Q@Z|rV(39h z|MDtWoqlY}6)@@gPtO+!ScWk+w42 z@QLbTVp$hgcruyZmkD&xkd?#qHD^Db`0@pl2?i>3Cy0D?vuL<;$%_Dm9;uTPLVOq z(gJ!gV`1HjVal$!^X5GDqAQ)|X`Y=S-m}R{T|vs!oZ_VMrn)vu&BE>SQQLA-^<8nt z#)y47vH$QCPD(Xr1&nt1oXQ`lsa#5O1$a?EA-pe%lnR}MEE)31;}5@wy!%VkdV!w; zwrY?VN};BT(Px^e7L_#^F>?@EAjX6?mSt0+#G`X&DVh8CevBJ0p}!<|7bqeoe@-X) z1&i3LvtR@!yP~J1tp#OTq^?PoBHM`=hC;Yd#XwhUK}C;*OcF)vBaKglaVkV4xq{al z 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 Bc`pC} diff --git a/companion/src/images/splash-old.png b/companion/src/images/splash-old.png deleted file mode 100644 index 44a0bab1c1e329cb950f5401f6e77170373f709d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42569 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 From d65b74269bcdcd57449a1c588dcf4e1c5b50c27d Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Sun, 5 Jan 2014 12:11:51 +0100 Subject: [PATCH 068/308] More renaming. Just for the life of me can't get the translations to be recognised. Also, while a clean install will use the new app folders, the nsi scripts are currently configured to retrieve the install folder from registry if present. Might want to think about whether we want to remove this or not. --- companion/src/CMakeLists.txt | 84 ++-- ...{companion9x.desktop => companion.desktop} | 0 .../src/{companion9x.png => companion.png} | Bin companion/src/main.cpp | 6 +- companion/src/translations.qrc.in | 16 +- .../{companion9x_cs.ts => companion_cs.ts} | 0 .../{companion9x_de.ts => companion_de.ts} | 0 .../{companion9x_fr.ts => companion_fr.ts} | 0 .../{companion9x_he.ts => companion_he.ts} | 0 .../{companion9x_it.ts => companion_it.ts} | 0 .../{companion9x_pt.ts => companion_pt.ts} | 0 .../{companion9x_ru.ts => companion_ru.ts} | 0 .../{companion9x_sv.ts => companion_sv.ts} | 0 ...on9x-msys.nsi.in => companion-msys.nsi.in} | 372 +++++++-------- ...panion9x-vs.nsi.in => companion-vs.nsi.in} | 428 +++++++++--------- 15 files changed, 453 insertions(+), 453 deletions(-) rename companion/src/{companion9x.desktop => companion.desktop} (100%) rename companion/src/{companion9x.png => companion.png} (100%) rename companion/src/translations/{companion9x_cs.ts => companion_cs.ts} (100%) rename companion/src/translations/{companion9x_de.ts => companion_de.ts} (100%) rename companion/src/translations/{companion9x_fr.ts => companion_fr.ts} (100%) rename companion/src/translations/{companion9x_he.ts => companion_he.ts} (100%) rename companion/src/translations/{companion9x_it.ts => companion_it.ts} (100%) rename companion/src/translations/{companion9x_pt.ts => companion_pt.ts} (100%) rename companion/src/translations/{companion9x_ru.ts => companion_ru.ts} (100%) rename companion/src/translations/{companion9x_sv.ts => companion_sv.ts} (100%) rename companion/targets/windows/{companion9x-msys.nsi.in => companion-msys.nsi.in} (80%) rename companion/targets/windows/{companion9x-vs.nsi.in => companion-vs.nsi.in} (82%) diff --git a/companion/src/CMakeLists.txt b/companion/src/CMakeLists.txt index 48665720f..aa5583d3f 100644 --- a/companion/src/CMakeLists.txt +++ b/companion/src/CMakeLists.txt @@ -1,4 +1,4 @@ -PROJECT( companion9x ) +PROJECT( companion ) SET( C9X_VERSION_MAJOR "1" ) SET( C9X_VERSION_MINOR "51" ) @@ -109,7 +109,7 @@ add_custom_command( DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/firmwares/ersky9x/ersky9xsimulator.cpp ) -SET( companion9x_SRCS +SET( companion_SRCS eeprominterface.cpp hexinterface.cpp flashinterface.cpp @@ -168,7 +168,7 @@ SET( companion9x_SRCS qcustomplot.cpp ) -SET( companion9x_MOC_HDRS +SET( companion_MOC_HDRS avroutputdialog.h preferencesdialog.h burnconfigdialog.h @@ -201,7 +201,7 @@ SET( companion9x_MOC_HDRS qcustomplot.h ) -SET( companion9x_UIS +SET( companion_UIS mdichild.ui avroutputdialog.ui comparedialog.ui @@ -225,25 +225,25 @@ SET( companion9x_UIS ) IF ( SDL_FOUND ) - SET( companion9x_SRCS - ${companion9x_SRCS} + SET( companion_SRCS + ${companion_SRCS} joystick.cpp joystickdialog.cpp ) - SET( companion9x_MOC_HDRS - ${companion9x_MOC_HDRS} + SET( companion_MOC_HDRS + ${companion_MOC_HDRS} joystick.h joystickdialog.h ) - SET( companion9x_UIS - ${companion9x_UIS} + SET( companion_UIS + ${companion_UIS} joystickdialog.ui ) ENDIF( ) -SET( companion9x_RCS +SET( companion_RCS companion9x.qrc ${CMAKE_CURRENT_BINARY_DIR}/translations.qrc ) @@ -286,7 +286,7 @@ CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/firmwares/opentx/stamp-opentx.h.in ${ SET( PATCH_FLAGS "--binary" ) IF( WIN32 ) - SET( companion9x_SRCS ${companion9x_SRCS} icon.rc ) + SET( companion_SRCS ${companion_SRCS} icon.rc ) IF ( NOT MSVC ) SET(CMAKE_EXE_LINKER_FLAGS -mwindows) ENDIF( ) @@ -298,28 +298,28 @@ INCLUDE_DIRECTORIES( ${CMAKE_SOURCE_DIR} ) SET( LANGUAGES he pt ru de fr it sv cs ) FOREACH( language ${LANGUAGES} ) - SET( companion9x_TS ${companion9x_TS} translations/companion9x_${language}.ts ) + SET( companion_TS ${companion_TS} translations/companion_${language}.ts ) ENDFOREACH( language ) -QT4_WRAP_UI( companion9x_SRCS ${companion9x_UIS} ) -QT4_WRAP_CPP( companion9x_SRCS ${companion9x_MOC_HDRS} ) -QT4_ADD_TRANSLATION( companion9x_QM ${companion9x_TS} ) -QT4_ADD_RESOURCES( companion9x_SRCS ${companion9x_RCS} ) +QT4_WRAP_UI( companion_SRCS ${companion_UIS} ) +QT4_WRAP_CPP( companion_SRCS ${companion_MOC_HDRS} ) +QT4_ADD_TRANSLATION( companion_QM ${companion_TS} ) +QT4_ADD_RESOURCES( companion_SRCS ${companion_RCS} ) ADD_DEFINITIONS( -DQT_TRANSLATIONS_DIR="${QT_TRANSLATIONS_DIR}" ) IF( APPLE ) - ADD_EXECUTABLE( ${PROJECT_NAME} MACOSX_BUNDLE ${companion9x_SRCS} ${companion9x_QM} ) + ADD_EXECUTABLE( ${PROJECT_NAME} MACOSX_BUNDLE ${companion_SRCS} ${companion_QM} ) ELSE( ) - ADD_EXECUTABLE( ${PROJECT_NAME} WIN32 ${companion9x_SRCS} ${companion9x_QM} ) + ADD_EXECUTABLE( ${PROJECT_NAME} WIN32 ${companion_SRCS} ${companion_QM} ) ENDIF( ) TARGET_LINK_LIBRARIES( ${PROJECT_NAME} ${QT_LIBRARIES} ${QT_QTMAIN_LIBRARY} ${XERCESC_LIBRARY} ${PTHREAD_LIBRARY} ${SDL_LIBRARY} ${PHONON_LIBS} ) IF(${CMAKE_SYSTEM_NAME} MATCHES "Linux") INSTALL( TARGETS ${PROJECT_NAME} DESTINATION ${CMAKE_INSTALL_PREFIX}/bin ) - INSTALL( FILES companion9x.desktop DESTINATION share/applications ) - INSTALL( FILES companion9x.png DESTINATION share/icons ) + INSTALL( FILES companion.desktop DESTINATION share/applications ) + INSTALL( FILES companion.png DESTINATION share/icons ) INSTALL( FILES ../targets/linux/45-taranis.rules DESTINATION /etc/udev/rules.d/ ) # Linux specific code SET(OperatingSystem "Linux") @@ -329,13 +329,13 @@ ENDIF(${CMAKE_SYSTEM_NAME} MATCHES "Linux") IF( WIN32 ) IF( MSVC ) - SET( NSI_IN_FILE companion9x-vs.nsi.in ) + SET( NSI_IN_FILE companion-vs.nsi.in ) ELSE( ) - SET( NSI_IN_FILE companion9x-msys.nsi.in ) + SET( NSI_IN_FILE companion-msys.nsi.in ) ENDIF( ) SET( SYSDIR "$ENV{windir}/system32" ) - CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/../targets/windows/${NSI_IN_FILE} ${CMAKE_CURRENT_BINARY_DIR}/companion9x.nsi @ONLY) + CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/../targets/windows/${NSI_IN_FILE} ${CMAKE_CURRENT_BINARY_DIR}/companion.nsi @ONLY) FIND_PROGRAM(NSIS_EXE makensis.exe PATHS "C:/Program Files/NSIS" @@ -343,14 +343,14 @@ IF( WIN32 ) "C:/Programs/NSIS" ) - ADD_CUSTOM_COMMAND(OUTPUT ${PROJECT_BINARY_DIR}/companion9xInstall.exe - COMMAND "${NSIS_EXE}" ARGS companion9x.nsi - DEPENDS ${PROJECT_NAME} ${PROJECT_BINARY_DIR}/companion9x.nsi + ADD_CUSTOM_COMMAND(OUTPUT ${PROJECT_BINARY_DIR}/companionInstall.exe + COMMAND "${NSIS_EXE}" ARGS companion.nsi + DEPENDS ${PROJECT_NAME} ${PROJECT_BINARY_DIR}/companion.nsi COMMENT "Windows NSIS Installer") ADD_CUSTOM_TARGET( installer - DEPENDS ${PROJECT_BINARY_DIR}/companion9xInstall.exe - SOURCES ${PROJECT_BINARY_DIR}/companion9x.nsi) + DEPENDS ${PROJECT_BINARY_DIR}/companionInstall.exe + SOURCES ${PROJECT_BINARY_DIR}/companion.nsi) ENDIF( ) IF( APPLE ) @@ -362,35 +362,35 @@ IF( APPLE ) ENDIF() ADD_CUSTOM_TARGET( addframeworks ALL - COMMAND mkdir -p companion9x.app/Contents/Frameworks - COMMAND mkdir -p companion9x.app/Contents/Resources - COMMAND mkdir -p companion9x.app/Contents/translations - COMMAND rsync ${PROJECT_SOURCE_DIR}/images/${MACOSX_BUNDLE_ICON_FILE} companion9x.app/Contents/Resources/${MACOSX_BUNDLE_ICON_FILE} # Copy the icon files - COMMAND rsync ${PROJECT_SOURCE_DIR}/../macbuild/lib* companion9x.app/Contents/Frameworks - #COMMAND rsync ${PROJECT_SOURCE_DIR}/../macbuild/libcrypto.1.0.0.dylib companion9x.app/Contents/Frameworks - COMMAND rsync -r --exclude=.svn ${PROJECT_SOURCE_DIR}/../macbuild/qt_menu.nib companion9x.app/Contents/Resources/ - COMMAND rsync ${PROJECT_BINARY_DIR}/*.qm companion9x.app/Contents/translations - COMMAND ${QT_BINARY_DIR}/macdeployqt companion9x.app + COMMAND mkdir -p companion.app/Contents/Frameworks + COMMAND mkdir -p companion.app/Contents/Resources + COMMAND mkdir -p companion.app/Contents/translations + COMMAND rsync ${PROJECT_SOURCE_DIR}/images/${MACOSX_BUNDLE_ICON_FILE} companion.app/Contents/Resources/${MACOSX_BUNDLE_ICON_FILE} # Copy the icon files + COMMAND rsync ${PROJECT_SOURCE_DIR}/../macbuild/lib* companion.app/Contents/Frameworks + #COMMAND rsync ${PROJECT_SOURCE_DIR}/../macbuild/libcrypto.1.0.0.dylib companion.app/Contents/Frameworks + COMMAND rsync -r --exclude=.svn ${PROJECT_SOURCE_DIR}/../macbuild/qt_menu.nib companion.app/Contents/Resources/ + COMMAND rsync ${PROJECT_BINARY_DIR}/*.qm companion.app/Contents/translations + COMMAND ${QT_BINARY_DIR}/macdeployqt companion.app WORKING_DIRECTORY ${WORK_DIR} DEPENDS ${PROJECT_NAME} ) ADD_CUSTOM_TARGET( makedmg - COMMAND ${QT_BINARY_DIR}/macdeployqt companion9x.app -dmg -no-plugins + COMMAND ${QT_BINARY_DIR}/macdeployqt companion.app -dmg -no-plugins WORKING_DIRECTORY ${WORK_DIR} DEPENDS addframeworks ) ENDIF( ) ADD_CUSTOM_TARGET( stamp - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_BINARY_DIR}/version.h ${CMAKE_SOURCE_DIR}/../companion9x.stamp + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_BINARY_DIR}/version.h ${CMAKE_SOURCE_DIR}/../companion.stamp DEPENDS ${CMAKE_BINARY_DIR}/version.h ) ADD_CUSTOM_TARGET( translations WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} - COMMAND lupdate-qt4 ${CMAKE_SOURCE_DIR} -ts ${companion9x_TS} ) + COMMAND lupdate-qt4 ${CMAKE_SOURCE_DIR} -ts ${companion_TS} ) -SET(CPACK_PACKAGE_NAME "COMPANION9X") +SET(CPACK_PACKAGE_NAME "COMPANION") SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Models and settings editor for the OpenTx open source firmware") string(TOLOWER "${CPACK_PACKAGE_NAME}" CPACK_PACKAGE_NAME_LOWERCASE) find_program(DPKG_PROGRAM dpkg DOC "dpkg program of Debian-based systems") diff --git a/companion/src/companion9x.desktop b/companion/src/companion.desktop similarity index 100% rename from companion/src/companion9x.desktop rename to companion/src/companion.desktop diff --git a/companion/src/companion9x.png b/companion/src/companion.png similarity index 100% rename from companion/src/companion9x.png rename to companion/src/companion.png diff --git a/companion/src/main.cpp b/companion/src/main.cpp index d97592c08..06ae8167f 100644 --- a/companion/src/main.cpp +++ b/companion/src/main.cpp @@ -89,13 +89,13 @@ int main(int argc, char *argv[]) QString locale = settings.value("locale",QLocale::system().name()).toString(); bool showSplash = settings.value("show_splash", true).toBool(); - QTranslator companion9xTranslator; - companion9xTranslator.load(":/companion9x_" + locale); + QTranslator companionTranslator; + companionTranslator.load(":/companion_" + locale); QTranslator qtTranslator; qtTranslator.load((QString)"qt_" + locale.left(2), QLibraryInfo::location(QLibraryInfo::TranslationsPath)); // qDebug() << locale; // qtTranslator.load("qt_" + QLocale::system().name(), QLibraryInfo::location(QLibraryInfo::TranslationsPath)); - app.installTranslator(&companion9xTranslator); + app.installTranslator(&companionTranslator); app.installTranslator(&qtTranslator); QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8")); diff --git a/companion/src/translations.qrc.in b/companion/src/translations.qrc.in index d01dd945f..434cbd225 100644 --- a/companion/src/translations.qrc.in +++ b/companion/src/translations.qrc.in @@ -1,12 +1,12 @@ - companion9x_fr.qm - companion9x_de.qm - companion9x_he.qm - companion9x_it.qm - companion9x_pt.qm - companion9x_ru.qm - companion9x_sv.qm - companion9x_cs.qm + companion_fr.qm + companion_de.qm + companion_he.qm + companion_it.qm + companion_pt.qm + companion_ru.qm + companion_sv.qm + companion_cs.qm diff --git a/companion/src/translations/companion9x_cs.ts b/companion/src/translations/companion_cs.ts similarity index 100% rename from companion/src/translations/companion9x_cs.ts rename to companion/src/translations/companion_cs.ts diff --git a/companion/src/translations/companion9x_de.ts b/companion/src/translations/companion_de.ts similarity index 100% rename from companion/src/translations/companion9x_de.ts rename to companion/src/translations/companion_de.ts diff --git a/companion/src/translations/companion9x_fr.ts b/companion/src/translations/companion_fr.ts similarity index 100% rename from companion/src/translations/companion9x_fr.ts rename to companion/src/translations/companion_fr.ts diff --git a/companion/src/translations/companion9x_he.ts b/companion/src/translations/companion_he.ts similarity index 100% rename from companion/src/translations/companion9x_he.ts rename to companion/src/translations/companion_he.ts diff --git a/companion/src/translations/companion9x_it.ts b/companion/src/translations/companion_it.ts similarity index 100% rename from companion/src/translations/companion9x_it.ts rename to companion/src/translations/companion_it.ts diff --git a/companion/src/translations/companion9x_pt.ts b/companion/src/translations/companion_pt.ts similarity index 100% rename from companion/src/translations/companion9x_pt.ts rename to companion/src/translations/companion_pt.ts diff --git a/companion/src/translations/companion9x_ru.ts b/companion/src/translations/companion_ru.ts similarity index 100% rename from companion/src/translations/companion9x_ru.ts rename to companion/src/translations/companion_ru.ts diff --git a/companion/src/translations/companion9x_sv.ts b/companion/src/translations/companion_sv.ts similarity index 100% rename from companion/src/translations/companion9x_sv.ts rename to companion/src/translations/companion_sv.ts diff --git a/companion/targets/windows/companion9x-msys.nsi.in b/companion/targets/windows/companion-msys.nsi.in similarity index 80% rename from companion/targets/windows/companion9x-msys.nsi.in rename to companion/targets/windows/companion-msys.nsi.in index ed7bf33fb..3b38bb303 100644 --- a/companion/targets/windows/companion9x-msys.nsi.in +++ b/companion/targets/windows/companion-msys.nsi.in @@ -1,186 +1,186 @@ -;NSIS Modern User Interface -;Start Menu Folder Selection Example Script -;Written by Joost Verburg - -;-------------------------------- -;Include Modern UI - - !include "MUI2.nsh" - !include "@CMAKE_CURRENT_SOURCE_DIR@\..\targets\windows\FileAssociation.nsh" - -;-------------------------------- -;General - - ;Name and file - Name "companion9x" - OutFile "companion9xInstall_v@C9X_VERSION@.exe" - - ;Default installation folder - InstallDir "$PROGRAMFILES\companion9x" - - ;Get installation folder from registry if available - InstallDirRegKey HKCU "Software\companion9x" "" - - ;Compressor options - SetCompressor /FINAL /SOLID lzma - SetCompressorDictSize 64 - - ;Request application privileges for Windows Vista - RequestExecutionLevel admin - -;-------------------------------- -;Variables - - Var StartMenuFolder - -;-------------------------------- -;Interface Settings - - !define MUI_ABORTWARNING - -;-------------------------------- -;Pages - - !insertmacro MUI_PAGE_LICENSE "@CMAKE_CURRENT_SOURCE_DIR@\..\targets\windows\license.txt" - !insertmacro MUI_PAGE_COMPONENTS - !insertmacro MUI_PAGE_DIRECTORY - - ;Start Menu Folder Page Configuration - !define MUI_STARTMENUPAGE_REGISTRY_ROOT "HKCU" - !define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\companion9x" - !define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "Start Menu Folder" - - !insertmacro MUI_PAGE_STARTMENU Application $StartMenuFolder - - !insertmacro MUI_PAGE_INSTFILES - - # These indented statements modify settings for MUI_PAGE_FINISH - !define MUI_FINISHPAGE_NOAUTOCLOSE - !define MUI_FINISHPAGE_RUN - !define MUI_FINISHPAGE_RUN_CHECKED - !define MUI_FINISHPAGE_RUN_TEXT "Launch companion9x" - !define MUI_FINISHPAGE_RUN_FUNCTION "LaunchLink" - # !define MUI_FINISHPAGE_SHOWREADME_NOTCHECKED - # !define MUI_FINISHPAGE_SHOWREADME $INSTDIR\readme.txt - !insertmacro MUI_PAGE_FINISH - - !insertmacro MUI_UNPAGE_CONFIRM - !insertmacro MUI_UNPAGE_INSTFILES - -;-------------------------------- -;Languages - - !insertmacro MUI_LANGUAGE "English" - !insertmacro MUI_LANGUAGE "French" - -;-------------------------------- -;Installer Sections - -Section "companion9x" SecDummy - - SetOutPath "$INSTDIR" - - File "@CMAKE_CURRENT_SOURCE_DIR@\..\targets\windows\license.txt" - File "companion9x.exe" - File "C:\Programs\xerces\src\.libs\libxerces-c-3-1.dll" - File "C:\MinGW\bin\libgcc_s_dw2-1.dll" - File "C:\MinGW\bin\mingwm10.dll" - File "C:\MinGW\bin\libstdc++-6.dll" - File "@QT_BINARY_DIR@\QtCore4.dll" - File "@QT_BINARY_DIR@\QtGui4.dll" - File "@QT_BINARY_DIR@\QtXml4.dll" - File "@QT_BINARY_DIR@\QtNetwork4.dll" - File "@QT_BINARY_DIR@\Phonon4.dll" - File "@CMAKE_CURRENT_SOURCE_DIR@\..\targets\windows\avrdude.exe" - File "@CMAKE_CURRENT_SOURCE_DIR@\..\targets\windows\avrdude.conf" - File "@CMAKE_CURRENT_SOURCE_DIR@\..\targets\windows\libusb0.dll" - File "@CMAKE_CURRENT_SOURCE_DIR@\..\targets\windows\dfu-util.exe" - - CreateDirectory "$INSTDIR\lang" - SetOutPath "$INSTDIR\lang" - File "*.qm" - - SetOutPath "$INSTDIR" - ;Store installation folder - WriteRegStr HKCU "Software\companion9x" "" $INSTDIR - - ;Associate with extentions ,bin and .hex - ${registerExtension} "$INSTDIR\companion9x.exe" ".bin" "BIN_File" - ${registerExtension} "$INSTDIR\companion9x.exe" ".hex" "HEX_File" - ${registerExtension} "$INSTDIR\companion9x.exe" ".companion9x" "EEPE_File" - ${registerExtension} "$INSTDIR\companion9x.exe" ".eepm" "EEPM_File" - - - ;Create uninstaller - WriteUninstaller "$INSTDIR\Uninstall.exe" - - !insertmacro MUI_STARTMENU_WRITE_BEGIN Application - - ;Create shortcuts - CreateDirectory "$SMPROGRAMS\$StartMenuFolder" - CreateShortCut "$SMPROGRAMS\$StartMenuFolder\companion9x.lnk" "$INSTDIR\companion9x.exe" - CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Uninstall.lnk" "$INSTDIR\Uninstall.exe" - - !insertmacro MUI_STARTMENU_WRITE_END - -SectionEnd - -;-------------------------------- -;Descriptions - - ;Language strings - LangString DESC_SecDummy ${LANG_ENGLISH} "companion9x EEPROM editor." - LangString DESC_SecDummy ${LANG_FRENCH} "companion9x editeur d'EEPROM" - - ;Assign language strings to sections - !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN - !insertmacro MUI_DESCRIPTION_TEXT ${SecDummy} $(DESC_SecDummy) - !insertmacro MUI_FUNCTION_DESCRIPTION_END - -;-------------------------------- -;Uninstaller Section - -Section "Uninstall" - - ;ADD YOUR OWN FILES HERE... - - Delete "$INSTDIR\license.txt" - Delete "$INSTDIR\companion9x.exe" - Delete "$INSTDIR\libxerces-c-3-1.dll" - Delete "$INSTDIR\libgcc_s_dw2-1.dll" - Delete "$INSTDIR\mingwm10.dll" - Delete "$INSTDIR\libstdc++-6.dll" - Delete "$INSTDIR\QtCore4.dll" - Delete "$INSTDIR\QtGui4.dll" - Delete "$INSTDIR\QtNetwork4.dll" - Delete "$INSTDIR\Phonon4.dll" - Delete "$INSTDIR\QtXml4.dll" - Delete "$INSTDIR\avrdude.exe" - Delete "$INSTDIR\avrdude.conf" - Delete "$INSTDIR\libusb0.dll" - Delete "$INSTDIR\dfu-util.exe" - Delete "$INSTDIR\Uninstall.exe" - - Delete "$INSTDIR\lang\*.*" - - RMDir "$INSTDIR\lang" - RMDir "$INSTDIR" - - ${unregisterExtension} ".bin" "BIN File" - ${unregisterExtension} ".hex" "HEX File" - ${unregisterExtension} ".eepm" "EEPE File" - ${unregisterExtension} ".companion9x" "EEPM File" - - !insertmacro MUI_STARTMENU_GETFOLDER Application $StartMenuFolder - - Delete "$SMPROGRAMS\$StartMenuFolder\companion9x.lnk" - Delete "$SMPROGRAMS\$StartMenuFolder\Uninstall.lnk" - RMDir "$SMPROGRAMS\$StartMenuFolder" - - DeleteRegKey /ifempty HKCU "Software\companion9x" - -SectionEnd - -Function LaunchLink - ExecShell "" "$INSTDIR\companion9x.exe" -FunctionEnd +;NSIS Modern User Interface +;Start Menu Folder Selection Example Script +;Written by Joost Verburg + +;-------------------------------- +;Include Modern UI + + !include "MUI2.nsh" + !include "@CMAKE_CURRENT_SOURCE_DIR@\..\targets\windows\FileAssociation.nsh" + +;-------------------------------- +;General + + ;Name and file + Name "openTx companion" + OutFile "companionInstall_v@C9X_VERSION@.exe" + + ;Default installation folder + InstallDir "$PROGRAMFILES\openTx companion" + + ;Get installation folder from registry if available + InstallDirRegKey HKCU "Software\companion9x" "" + + ;Compressor options + SetCompressor /FINAL /SOLID lzma + SetCompressorDictSize 64 + + ;Request application privileges for Windows Vista + RequestExecutionLevel admin + +;-------------------------------- +;Variables + + Var StartMenuFolder + +;-------------------------------- +;Interface Settings + + !define MUI_ABORTWARNING + +;-------------------------------- +;Pages + + !insertmacro MUI_PAGE_LICENSE "@CMAKE_CURRENT_SOURCE_DIR@\..\targets\windows\license.txt" + !insertmacro MUI_PAGE_COMPONENTS + !insertmacro MUI_PAGE_DIRECTORY + + ;Start Menu Folder Page Configuration + !define MUI_STARTMENUPAGE_REGISTRY_ROOT "HKCU" + !define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\companion9x" + !define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "Start Menu Folder" + + !insertmacro MUI_PAGE_STARTMENU Application $StartMenuFolder + + !insertmacro MUI_PAGE_INSTFILES + + # These indented statements modify settings for MUI_PAGE_FINISH + !define MUI_FINISHPAGE_NOAUTOCLOSE + !define MUI_FINISHPAGE_RUN + !define MUI_FINISHPAGE_RUN_CHECKED + !define MUI_FINISHPAGE_RUN_TEXT "Launch companion" + !define MUI_FINISHPAGE_RUN_FUNCTION "LaunchLink" + # !define MUI_FINISHPAGE_SHOWREADME_NOTCHECKED + # !define MUI_FINISHPAGE_SHOWREADME $INSTDIR\readme.txt + !insertmacro MUI_PAGE_FINISH + + !insertmacro MUI_UNPAGE_CONFIRM + !insertmacro MUI_UNPAGE_INSTFILES + +;-------------------------------- +;Languages + + !insertmacro MUI_LANGUAGE "English" + !insertmacro MUI_LANGUAGE "French" + +;-------------------------------- +;Installer Sections + +Section "openTx companion" SecDummy + + SetOutPath "$INSTDIR" + + File "@CMAKE_CURRENT_SOURCE_DIR@\..\targets\windows\license.txt" + File "companion.exe" + File "C:\Programs\xerces\src\.libs\libxerces-c-3-1.dll" + File "C:\MinGW\bin\libgcc_s_dw2-1.dll" + File "C:\MinGW\bin\mingwm10.dll" + File "C:\MinGW\bin\libstdc++-6.dll" + File "@QT_BINARY_DIR@\QtCore4.dll" + File "@QT_BINARY_DIR@\QtGui4.dll" + File "@QT_BINARY_DIR@\QtXml4.dll" + File "@QT_BINARY_DIR@\QtNetwork4.dll" + File "@QT_BINARY_DIR@\Phonon4.dll" + File "@CMAKE_CURRENT_SOURCE_DIR@\..\targets\windows\avrdude.exe" + File "@CMAKE_CURRENT_SOURCE_DIR@\..\targets\windows\avrdude.conf" + File "@CMAKE_CURRENT_SOURCE_DIR@\..\targets\windows\libusb0.dll" + File "@CMAKE_CURRENT_SOURCE_DIR@\..\targets\windows\dfu-util.exe" + + CreateDirectory "$INSTDIR\lang" + SetOutPath "$INSTDIR\lang" + File "*.qm" + + SetOutPath "$INSTDIR" + ;Store installation folder + WriteRegStr HKCU "Software\companion9x" "" $INSTDIR + + ;Associate with extentions ,bin and .hex + ${registerExtension} "$INSTDIR\companion.exe" ".bin" "BIN_File" + ${registerExtension} "$INSTDIR\companion.exe" ".hex" "HEX_File" + ${registerExtension} "$INSTDIR\companion.exe" ".companion" "EEPE_File" + ${registerExtension} "$INSTDIR\companion.exe" ".eepm" "EEPM_File" + + + ;Create uninstaller + WriteUninstaller "$INSTDIR\Uninstall.exe" + + !insertmacro MUI_STARTMENU_WRITE_BEGIN Application + + ;Create shortcuts + CreateDirectory "$SMPROGRAMS\$StartMenuFolder" + CreateShortCut "$SMPROGRAMS\$StartMenuFolder\companion.lnk" "$INSTDIR\companion.exe" + CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Uninstall.lnk" "$INSTDIR\Uninstall.exe" + + !insertmacro MUI_STARTMENU_WRITE_END + +SectionEnd + +;-------------------------------- +;Descriptions + + ;Language strings + LangString DESC_SecDummy ${LANG_ENGLISH} "Models and settings editor for openTx" + LangString DESC_SecDummy ${LANG_FRENCH} "Editeur de réglages et modèles pour openTx" + + ;Assign language strings to sections + !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN + !insertmacro MUI_DESCRIPTION_TEXT ${SecDummy} $(DESC_SecDummy) + !insertmacro MUI_FUNCTION_DESCRIPTION_END + +;-------------------------------- +;Uninstaller Section + +Section "Uninstall" + + ;ADD YOUR OWN FILES HERE... + + Delete "$INSTDIR\license.txt" + Delete "$INSTDIR\companion.exe" + Delete "$INSTDIR\libxerces-c-3-1.dll" + Delete "$INSTDIR\libgcc_s_dw2-1.dll" + Delete "$INSTDIR\mingwm10.dll" + Delete "$INSTDIR\libstdc++-6.dll" + Delete "$INSTDIR\QtCore4.dll" + Delete "$INSTDIR\QtGui4.dll" + Delete "$INSTDIR\QtNetwork4.dll" + Delete "$INSTDIR\Phonon4.dll" + Delete "$INSTDIR\QtXml4.dll" + Delete "$INSTDIR\avrdude.exe" + Delete "$INSTDIR\avrdude.conf" + Delete "$INSTDIR\libusb0.dll" + Delete "$INSTDIR\dfu-util.exe" + Delete "$INSTDIR\Uninstall.exe" + + Delete "$INSTDIR\lang\*.*" + + RMDir "$INSTDIR\lang" + RMDir "$INSTDIR" + + ${unregisterExtension} ".bin" "BIN File" + ${unregisterExtension} ".hex" "HEX File" + ${unregisterExtension} ".eepm" "EEPE File" + ${unregisterExtension} ".companion" "EEPM File" + + !insertmacro MUI_STARTMENU_GETFOLDER Application $StartMenuFolder + + Delete "$SMPROGRAMS\$StartMenuFolder\companion.lnk" + Delete "$SMPROGRAMS\$StartMenuFolder\Uninstall.lnk" + RMDir "$SMPROGRAMS\$StartMenuFolder" + + DeleteRegKey /ifempty HKCU "Software\companion9x" + +SectionEnd + +Function LaunchLink + ExecShell "" "$INSTDIR\companion.exe" +FunctionEnd diff --git a/companion/targets/windows/companion9x-vs.nsi.in b/companion/targets/windows/companion-vs.nsi.in similarity index 82% rename from companion/targets/windows/companion9x-vs.nsi.in rename to companion/targets/windows/companion-vs.nsi.in index 3e5950ada..340abc782 100644 --- a/companion/targets/windows/companion9x-vs.nsi.in +++ b/companion/targets/windows/companion-vs.nsi.in @@ -1,214 +1,214 @@ -;NSIS Modern User Interface -;Start Menu Folder Selection Example Script -;Written by Joost Verburg - -;-------------------------------- -;Include Modern UI - - !include "MUI2.nsh" - !include "@CMAKE_CURRENT_SOURCE_DIR@\..\targets\windows\FileAssociation.nsh" - -;-------------------------------- -;General - - ;Name and file - Name "companion9x" - OutFile "companion9xInstall_v@C9X_VERSION@.exe" - - ;Default installation folder - InstallDir "$PROGRAMFILES\companion9x" - - ;Get installation folder from registry if available - InstallDirRegKey HKCU "Software\companion9x" "" - - ;Compressor options - SetCompressor /FINAL /SOLID lzma - SetCompressorDictSize 64 - - ;Request application privileges for Windows Vista - RequestExecutionLevel admin - -;-------------------------------- -;Variables - - Var StartMenuFolder - -;-------------------------------- -;Interface Settings - - !define MUI_ABORTWARNING - -;-------------------------------- -;File Exists Macro - -; See http://nsis.sourceforge.net/Check_if_a_file_exists_at_compile_time for documentation -!macro !defineifexist _VAR_NAME _FILE_NAME - !tempfile _TEMPFILE - !ifdef NSIS_WIN32_MAKENSIS - ; Windows - cmd.exe - !system 'if exist "${_FILE_NAME}" echo !define ${_VAR_NAME} > "${_TEMPFILE}"' - !else - ; Posix - sh - !system 'if [ -e "${_FILE_NAME}" ]; then echo "!define ${_VAR_NAME}" > "${_TEMPFILE}"; fi' - !endif - !include '${_TEMPFILE}' - !delfile '${_TEMPFILE}' - !undef _TEMPFILE -!macroend -!define !defineifexist "!insertmacro !defineifexist" - -;-------------------------------- -;Pages - - !insertmacro MUI_PAGE_LICENSE "@CMAKE_CURRENT_SOURCE_DIR@\..\targets\windows\license.txt" - !insertmacro MUI_PAGE_COMPONENTS - !insertmacro MUI_PAGE_DIRECTORY - - ;Start Menu Folder Page Configuration - !define MUI_STARTMENUPAGE_REGISTRY_ROOT "HKCU" - !define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\companion9x" - !define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "Start Menu Folder" - - !insertmacro MUI_PAGE_STARTMENU Application $StartMenuFolder - - !insertmacro MUI_PAGE_INSTFILES - - # These indented statements modify settings for MUI_PAGE_FINISH - !define MUI_FINISHPAGE_NOAUTOCLOSE - !define MUI_FINISHPAGE_RUN - !define MUI_FINISHPAGE_RUN_CHECKED - !define MUI_FINISHPAGE_RUN_TEXT "Launch companion9x" - !define MUI_FINISHPAGE_RUN_FUNCTION "LaunchLink" - # !define MUI_FINISHPAGE_SHOWREADME_NOTCHECKED - # !define MUI_FINISHPAGE_SHOWREADME $INSTDIR\readme.txt - !insertmacro MUI_PAGE_FINISH - - !insertmacro MUI_UNPAGE_CONFIRM - !insertmacro MUI_UNPAGE_INSTFILES - -;-------------------------------- -;Languages - - !insertmacro MUI_LANGUAGE "English" - !insertmacro MUI_LANGUAGE "French" - -;-------------------------------- -;Installer Sections - -Section "companion9x" SecDummy - - SetOutPath "$INSTDIR" - - File "@CMAKE_CURRENT_SOURCE_DIR@\..\targets\windows\license.txt" - File "Release\companion9x.exe" - ${!defineifexist} PTHREAD_WINDIR "C:\Programs\pthreads\Pre-built.2\lib\pthreadVC2.dll" - !ifdef PTHREAD_WINDIR - File "C:\Programs\pthreads\Pre-built.2\lib\pthreadVC2.dll" - !else - File "@SYSDIR@\system32\pthreadVC2.dll" - !endif - File "C:\Programs\xerces-vc\bin\xerces-c_3_1.dll" - File "C:\Programs\SDL\lib\SDL.dll" - File "@SYSDIR@\msvcp100.dll" - File "@SYSDIR@\msvcr100.dll" - File "@QT_BINARY_DIR@\QtCore4.dll" - File "@QT_BINARY_DIR@\QtGui4.dll" - File "@QT_BINARY_DIR@\QtNetwork4.dll" - File "@QT_BINARY_DIR@\Phonon4.dll" - File "@QT_BINARY_DIR@\QtXml4.dll" - File "@CMAKE_CURRENT_SOURCE_DIR@\..\targets\windows\avrdude.exe" - File "@CMAKE_CURRENT_SOURCE_DIR@\..\targets\windows\avrdude.conf" - File "@CMAKE_CURRENT_SOURCE_DIR@\..\targets\windows\libusb0.dll" - File "@CMAKE_CURRENT_SOURCE_DIR@\..\targets\windows\dfu-util.exe" - File "@CMAKE_CURRENT_SOURCE_DIR@\..\targets\windows\libusb-1.0.dll" - - CreateDirectory "$INSTDIR\lang" - SetOutPath "$INSTDIR\lang" - File "*.qm" - - SetOutPath "$INSTDIR" - ;Store installation folder - WriteRegStr HKCU "Software\companion9x" "" $INSTDIR - - ;Associate with extentions ,bin and .hex - ${registerExtension} "$INSTDIR\companion9x.exe" ".bin" "BIN_File" - ${registerExtension} "$INSTDIR\companion9x.exe" ".hex" "HEX_File" - ${registerExtension} "$INSTDIR\companion9x.exe" ".companion9x" "EEPE_File" - ${registerExtension} "$INSTDIR\companion9x.exe" ".eepm" "EEPM_File" - - - ;Create uninstaller - WriteUninstaller "$INSTDIR\Uninstall.exe" - - !insertmacro MUI_STARTMENU_WRITE_BEGIN Application - - ;Create shortcuts - CreateDirectory "$SMPROGRAMS\$StartMenuFolder" - CreateShortCut "$SMPROGRAMS\$StartMenuFolder\companion9x.lnk" "$INSTDIR\companion9x.exe" - CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Uninstall.lnk" "$INSTDIR\Uninstall.exe" - - !insertmacro MUI_STARTMENU_WRITE_END - -SectionEnd - -;-------------------------------- -;Descriptions - - ;Language strings - LangString DESC_SecDummy ${LANG_ENGLISH} "companion9x EEPROM editor." - LangString DESC_SecDummy ${LANG_FRENCH} "companion9x editeur d'EEPROM" - - ;Assign language strings to sections - !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN - !insertmacro MUI_DESCRIPTION_TEXT ${SecDummy} $(DESC_SecDummy) - !insertmacro MUI_FUNCTION_DESCRIPTION_END - -;-------------------------------- -;Uninstaller Section - -Section "Uninstall" - - ;ADD YOUR OWN FILES HERE... - - Delete "$INSTDIR\license.txt" - Delete "$INSTDIR\companion9x.exe" - Delete "$INSTDIR\pthreadVC2.dll" - Delete "$INSTDIR\xerces-c_3_1.dll" - Delete "$INSTDIR\SDL.dll" - Delete "$INSTDIR\msvcp100.dll" - Delete "$INSTDIR\msvcr100.dll" - Delete "$INSTDIR\QtCore4.dll" - Delete "$INSTDIR\QtGui4.dll" - Delete "$INSTDIR\QtXml4.dll" - Delete "$INSTDIR\QtNetwork4.dll" - Delete "$INSTDIR\Phonon4.dll" - Delete "$INSTDIR\avrdude.exe" - Delete "$INSTDIR\avrdude.conf" - Delete "$INSTDIR\libusb0.dll" - Delete "$INSTDIR\dfu-util.exe" - Delete "$INSTDIR\libusb-1.0.dll" - Delete "$INSTDIR\Uninstall.exe" - - Delete "$INSTDIR\lang\*.*" - - RMDir "$INSTDIR\lang" - RMDir "$INSTDIR" - - ${unregisterExtension} ".bin" "BIN File" - ${unregisterExtension} ".hex" "HEX File" - ${unregisterExtension} ".eepm" "EEPE File" - ${unregisterExtension} ".companion9x" "EEPM File" - - !insertmacro MUI_STARTMENU_GETFOLDER Application $StartMenuFolder - - Delete "$SMPROGRAMS\$StartMenuFolder\companion9x.lnk" - Delete "$SMPROGRAMS\$StartMenuFolder\Uninstall.lnk" - RMDir "$SMPROGRAMS\$StartMenuFolder" - - DeleteRegKey /ifempty HKCU "Software\companion9x" - -SectionEnd - -Function LaunchLink - ExecShell "" "$INSTDIR\companion9x.exe" -FunctionEnd +;NSIS Modern User Interface +;Start Menu Folder Selection Example Script +;Written by Joost Verburg + +;-------------------------------- +;Include Modern UI + + !include "MUI2.nsh" + !include "@CMAKE_CURRENT_SOURCE_DIR@\..\targets\windows\FileAssociation.nsh" + +;-------------------------------- +;General + + ;Name and file + Name "openTx companion" + OutFile "companionInstall_v@C9X_VERSION@.exe" + + ;Default installation folder + InstallDir "$PROGRAMFILES\openTx companion" + + ;Get installation folder from registry if available + InstallDirRegKey HKCU "Software\companion9x" "" + + ;Compressor options + SetCompressor /FINAL /SOLID lzma + SetCompressorDictSize 64 + + ;Request application privileges for Windows Vista + RequestExecutionLevel admin + +;-------------------------------- +;Variables + + Var StartMenuFolder + +;-------------------------------- +;Interface Settings + + !define MUI_ABORTWARNING + +;-------------------------------- +;File Exists Macro + +; See http://nsis.sourceforge.net/Check_if_a_file_exists_at_compile_time for documentation +!macro !defineifexist _VAR_NAME _FILE_NAME + !tempfile _TEMPFILE + !ifdef NSIS_WIN32_MAKENSIS + ; Windows - cmd.exe + !system 'if exist "${_FILE_NAME}" echo !define ${_VAR_NAME} > "${_TEMPFILE}"' + !else + ; Posix - sh + !system 'if [ -e "${_FILE_NAME}" ]; then echo "!define ${_VAR_NAME}" > "${_TEMPFILE}"; fi' + !endif + !include '${_TEMPFILE}' + !delfile '${_TEMPFILE}' + !undef _TEMPFILE +!macroend +!define !defineifexist "!insertmacro !defineifexist" + +;-------------------------------- +;Pages + + !insertmacro MUI_PAGE_LICENSE "@CMAKE_CURRENT_SOURCE_DIR@\..\targets\windows\license.txt" + !insertmacro MUI_PAGE_COMPONENTS + !insertmacro MUI_PAGE_DIRECTORY + + ;Start Menu Folder Page Configuration + !define MUI_STARTMENUPAGE_REGISTRY_ROOT "HKCU" + !define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\companion9x" + !define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "Start Menu Folder" + + !insertmacro MUI_PAGE_STARTMENU Application $StartMenuFolder + + !insertmacro MUI_PAGE_INSTFILES + + # These indented statements modify settings for MUI_PAGE_FINISH + !define MUI_FINISHPAGE_NOAUTOCLOSE + !define MUI_FINISHPAGE_RUN + !define MUI_FINISHPAGE_RUN_CHECKED + !define MUI_FINISHPAGE_RUN_TEXT "Launch companion" + !define MUI_FINISHPAGE_RUN_FUNCTION "LaunchLink" + # !define MUI_FINISHPAGE_SHOWREADME_NOTCHECKED + # !define MUI_FINISHPAGE_SHOWREADME $INSTDIR\readme.txt + !insertmacro MUI_PAGE_FINISH + + !insertmacro MUI_UNPAGE_CONFIRM + !insertmacro MUI_UNPAGE_INSTFILES + +;-------------------------------- +;Languages + + !insertmacro MUI_LANGUAGE "English" + !insertmacro MUI_LANGUAGE "French" + +;-------------------------------- +;Installer Sections + +Section "openTx companion" SecDummy + + SetOutPath "$INSTDIR" + + File "@CMAKE_CURRENT_SOURCE_DIR@\..\targets\windows\license.txt" + File "Release\companion.exe" + ${!defineifexist} PTHREAD_WINDIR "C:\Programs\pthreads\Pre-built.2\lib\pthreadVC2.dll" + !ifdef PTHREAD_WINDIR + File "C:\Programs\pthreads\Pre-built.2\lib\pthreadVC2.dll" + !else + File "@SYSDIR@\system32\pthreadVC2.dll" + !endif + File "C:\Programs\xerces-vc\bin\xerces-c_3_1.dll" + File "C:\Programs\SDL\lib\SDL.dll" + File "@SYSDIR@\msvcp100.dll" + File "@SYSDIR@\msvcr100.dll" + File "@QT_BINARY_DIR@\QtCore4.dll" + File "@QT_BINARY_DIR@\QtGui4.dll" + File "@QT_BINARY_DIR@\QtNetwork4.dll" + File "@QT_BINARY_DIR@\Phonon4.dll" + File "@QT_BINARY_DIR@\QtXml4.dll" + File "@CMAKE_CURRENT_SOURCE_DIR@\..\targets\windows\avrdude.exe" + File "@CMAKE_CURRENT_SOURCE_DIR@\..\targets\windows\avrdude.conf" + File "@CMAKE_CURRENT_SOURCE_DIR@\..\targets\windows\libusb0.dll" + File "@CMAKE_CURRENT_SOURCE_DIR@\..\targets\windows\dfu-util.exe" + File "@CMAKE_CURRENT_SOURCE_DIR@\..\targets\windows\libusb-1.0.dll" + + CreateDirectory "$INSTDIR\lang" + SetOutPath "$INSTDIR\lang" + File "*.qm" + + SetOutPath "$INSTDIR" + ;Store installation folder + WriteRegStr HKCU "Software\companion9x" "" $INSTDIR + + ;Associate with extentions ,bin and .hex + ${registerExtension} "$INSTDIR\companion.exe" ".bin" "BIN_File" + ${registerExtension} "$INSTDIR\companion.exe" ".hex" "HEX_File" + ${registerExtension} "$INSTDIR\companion.exe" ".companion" "EEPE_File" + ${registerExtension} "$INSTDIR\companion.exe" ".eepm" "EEPM_File" + + + ;Create uninstaller + WriteUninstaller "$INSTDIR\Uninstall.exe" + + !insertmacro MUI_STARTMENU_WRITE_BEGIN Application + + ;Create shortcuts + CreateDirectory "$SMPROGRAMS\$StartMenuFolder" + CreateShortCut "$SMPROGRAMS\$StartMenuFolder\companion.lnk" "$INSTDIR\companion.exe" + CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Uninstall.lnk" "$INSTDIR\Uninstall.exe" + + !insertmacro MUI_STARTMENU_WRITE_END + +SectionEnd + +;-------------------------------- +;Descriptions + + ;Language strings + LangString DESC_SecDummy ${LANG_ENGLISH} "Models and settings editor for openTx" + LangString DESC_SecDummy ${LANG_FRENCH} "Editeur de réglages et modèles pour openTx" + + ;Assign language strings to sections + !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN + !insertmacro MUI_DESCRIPTION_TEXT ${SecDummy} $(DESC_SecDummy) + !insertmacro MUI_FUNCTION_DESCRIPTION_END + +;-------------------------------- +;Uninstaller Section + +Section "Uninstall" + + ;ADD YOUR OWN FILES HERE... + + Delete "$INSTDIR\license.txt" + Delete "$INSTDIR\companion.exe" + Delete "$INSTDIR\pthreadVC2.dll" + Delete "$INSTDIR\xerces-c_3_1.dll" + Delete "$INSTDIR\SDL.dll" + Delete "$INSTDIR\msvcp100.dll" + Delete "$INSTDIR\msvcr100.dll" + Delete "$INSTDIR\QtCore4.dll" + Delete "$INSTDIR\QtGui4.dll" + Delete "$INSTDIR\QtXml4.dll" + Delete "$INSTDIR\QtNetwork4.dll" + Delete "$INSTDIR\Phonon4.dll" + Delete "$INSTDIR\avrdude.exe" + Delete "$INSTDIR\avrdude.conf" + Delete "$INSTDIR\libusb0.dll" + Delete "$INSTDIR\dfu-util.exe" + Delete "$INSTDIR\libusb-1.0.dll" + Delete "$INSTDIR\Uninstall.exe" + + Delete "$INSTDIR\lang\*.*" + + RMDir "$INSTDIR\lang" + RMDir "$INSTDIR" + + ${unregisterExtension} ".bin" "BIN File" + ${unregisterExtension} ".hex" "HEX File" + ${unregisterExtension} ".eepm" "EEPE File" + ${unregisterExtension} ".companion" "EEPM File" + + !insertmacro MUI_STARTMENU_GETFOLDER Application $StartMenuFolder + + Delete "$SMPROGRAMS\$StartMenuFolder\companion.lnk" + Delete "$SMPROGRAMS\$StartMenuFolder\Uninstall.lnk" + RMDir "$SMPROGRAMS\$StartMenuFolder" + + DeleteRegKey /ifempty HKCU "Software\companion9x" + +SectionEnd + +Function LaunchLink + ExecShell "" "$INSTDIR\companion.exe" +FunctionEnd From 7a5154305b8abf5404718ed6abc3ff42e7051127 Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Sun, 5 Jan 2014 12:51:30 +0100 Subject: [PATCH 069/308] Fix mac paths - app icon still needs updating --- companion/src/CMakeLists.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/companion/src/CMakeLists.txt b/companion/src/CMakeLists.txt index aa5583d3f..a58489478 100644 --- a/companion/src/CMakeLists.txt +++ b/companion/src/CMakeLists.txt @@ -366,9 +366,9 @@ IF( APPLE ) COMMAND mkdir -p companion.app/Contents/Resources COMMAND mkdir -p companion.app/Contents/translations COMMAND rsync ${PROJECT_SOURCE_DIR}/images/${MACOSX_BUNDLE_ICON_FILE} companion.app/Contents/Resources/${MACOSX_BUNDLE_ICON_FILE} # Copy the icon files - COMMAND rsync ${PROJECT_SOURCE_DIR}/../macbuild/lib* companion.app/Contents/Frameworks - #COMMAND rsync ${PROJECT_SOURCE_DIR}/../macbuild/libcrypto.1.0.0.dylib companion.app/Contents/Frameworks - COMMAND rsync -r --exclude=.svn ${PROJECT_SOURCE_DIR}/../macbuild/qt_menu.nib companion.app/Contents/Resources/ + COMMAND rsync ${PROJECT_SOURCE_DIR}/../targets/mac/lib* companion.app/Contents/Frameworks + #COMMAND rsync ${PROJECT_SOURCE_DIR}/../targets/mac/libcrypto.1.0.0.dylib companion.app/Contents/Frameworks + COMMAND rsync -r --exclude=.svn ${PROJECT_SOURCE_DIR}/../targets/mac/qt_menu.nib companion.app/Contents/Resources/ COMMAND rsync ${PROJECT_BINARY_DIR}/*.qm companion.app/Contents/translations COMMAND ${QT_BINARY_DIR}/macdeployqt companion.app WORKING_DIRECTORY ${WORK_DIR} From 9b1f36c15556ace60d7dfd062df20183db330a5e Mon Sep 17 00:00:00 2001 From: Dvogonen Date: Sun, 5 Jan 2014 13:37:36 +0100 Subject: [PATCH 070/308] Mac Icon genereated online from vector image by iconverticons.com. I have no way of checking it. Hope it is acceptable. Improved 48x48 png icon. Also generated online at iconverticons.com. They must use a good rendering machine. The result is better than from Gimp. --- companion/src/companion.png | Bin 2967 -> 1734 bytes companion/src/images/iconmac.icns | Bin 464053 -> 145634 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/companion/src/companion.png b/companion/src/companion.png index 9a982a316ba0fd4449931bb699b41661a882d3d9..c1b34a0fa0246acec1f904d723f26e7cc4a4612e 100644 GIT binary patch delta 1713 zcmV;i22S~x7sd^c83+OZ007uvZqSh-6n_SLNkl>b7vbtB9VCU;sul7;lqajfV+3^&dkifwW$5VW5R1iBo?z(I zsZ(q=+iW%u3=G`9ecNC#6c-oMrhl85n0WN)5dfg9tc+G*v)SIgdp9{b$z;gm@tiw% z?i+?wDpfcf4hDk&0Efc?08p#dOc@OZ0|3C~a?wUdMnFj=005j$Cv7^L%?1D%8X9`@<_)c&y}jLTw<8F`WPhl?zu#;& zpEz+M9*^UBg2Cs{pJN#I;K76A$B$pRa>Zh?eEj&4HeIsFjvhU_xw%Oz$jZtR3WZ9g zlF1N;VO?Ead-v{T68w#pmX_)1=};*2`t@s_PDd3a=SXE`B~u3cEQ4W~Nubl|#A0zc z945`OUHouhrLGPiKK$g#lYf8S6Nce4XU^mnY%ZSs z;{9SDu&0_^(>^03gLbcA!ra^(03a|QkQ7UDbUFBt`WJQ35sa_LNnMl`%1l`%p20RT z=LlhCA+JmS0mypt zJfqU9*gQ6#+4#KS8YM6EX)pu;aM@hz!F4>tf>;H01*sAhC(rf8H-yl!$eN6GfgrFR&C4sYJp&A)cq! zati5rWl11bN_A&usH@c~J-NVrGd@x+?}(v@KjInpkVxrIQeHL>&wLGkbz13%C(VWc z0PZn&EEwBfgN!1ZG5Rw?`VC=m%=w=2=>Y&CXJ~D9Z5u(F4SxXu0tj@p zsj5{xF=0`Tg@0o!zpbo{tdNy@RhA@cXANb^vlIsuBoY}x;;}foh@y)q;jSD=T}S^- zoE}3g7OSAXfCUleI=X=R=l#iRC+ytZAZ!=e>TFq=Y^My#_sfM!!rY0+;ttr6YOaUY zz2oFlrMgDV6>&*q8VqqoT}mE+^%QmORXwQIe-y~!?BRaL92 ztINyFlarIx)zxRuo^5Dokjv!&02qd~T5Ux|MJhivAyq>#G%+!8#w6L_-*2~X{T}$CO-R!0;zz_^iZAo!tPlmu00000NkvXX Hu0mjfQS&%A delta 2955 zcmV;63v~3x4VM>?83+ad00374`G=7q6n_8-a7bBm000go000go0o@VibpQYW2XskI zMF-vi1PeJi3pRsG000XlNkl0Y5q}Xx z(>(q1hCm`oIH7wwzf7ReaOqpqoAOGW5QeR&m?uW%<5sSqlN-3E>eY#XtRY_l8pG-8j+b!F+ZIi^rMA0-& zChRR1ivUtlQ6VBCqobpt-`lru7a+{mVzG$TYL&_Dg%@5h*#Yv#8*hk+$bV;_eI}Zw ziOb~@5s`iS_L=P`cPuY2mw|x+>F@8CHEY($lTSV=gM))|?bTrH8tv_y!z^^A&^_QZWT?_L_}ow?%k$wwaH7o zc=2MAlanbcE8~+-K4Jg<{eP@mw~m=JXOf$n8#kEh>+5ki9Eb>hzdx>RUS1w=zWFAZ znVA@dVS27<8l$75`2Bufd+jwIdE}9pV}$|Gbsd1LtSoFc8+N;$dGqFlJ&V=8`Q{sr zA3u&#ietx)#kHL?XAY&MrDSDg#S{jo)5-hqzmL=Dq^71OwhB$Y=zrFUeO=DvtJ9g|a1^ndp(MKOqUS5vPW{YcARaHe& zQWE9m<*{EpnR}_Jsj_$PUI_#OAr6j@k4tTBt)!%+h*HYL*9{vsh=@p0QIXutDJJem z#(=KtA|kSJC>ml z$;m-PXliO=&z?P8y?Qn3Y_+$y^XaFbGB7ZJQYuUmqqPGE4&d|oa5|l|wY5dHX>4rd zz<~n{4i4h=dfB{rGi%qb<@oXA(ei?l$vPb^sA46YNc&jHE`MH<(ljmXUgVgXrkSq8 z>@`i3iH^4l)Z1yArrjix5#P|FnTwd)>8CVMQA!D2*V(XP1FygSI(EA~ZaR+c1 zNl8g$W@ciy+kgL~*$+`@Y#ep=BJ$YJAYxTT0lAr|jy|~D8(fKrc4rbsewNvJfbjsT zqZdYfVZgO1DG_x+UA%(oa6@EJ3rLa+V_vF>QpRH|V%El5OBd?QMboNH4FClU4x{SN z!3|$%xx>?OCd``+h6HE)-g}U=yCG6Ul!B2PsDGR`Pk%-vfQjt;@07Qbo73r>92BT4 z9#qq1vr{6$Rakfr*e#IgK!0dCjEzT;Ed$HnPQj=@>O_Raz|o^edFiE>LV7PEq^GB| zWy=;*$B~f{Dl02-xm+Rs4-E~4gB=T?eR~1po>|CU$q_U&ko)GtcbAa7OqiAsT#c|9 zwW1o^pns*y9PkqhbTj+KtatMB^ErF=tm(eTlnp9gK3VKKqU1}WLb7h-T(0b=sHrg1W8LVXXXg~H}W!(*)!wY{h$DJ1DQJuW95Cf zc7I9)k`s{?IpCW1696CrN+Ayy+&=#UI+B-(%$@Zk1Gwq0JiIJeE<}^o&a2=bj|#$g za496a;>Pn712B*UX&8&)Zd2qaI(C|VNN%c%ok7%<}|mmLXa z`Uq&>G{ewnFza5u9t0J!3zLNz$bIunJAb>W2Vl2hEYA+APNegihU##m&b0@D`o^&w zJ{3bc1!L7>xMRAx+@4ARl6DueWMTB(+Nclp-6a?r4Q540WnGdL5KtLl$SjjKnZ1-4Z~oqe6$n5jAinI}KTxALO>x68LDpjri55rbR!Qo4l#FSS+SZzEUd8VO`f_f{W~LwOR=T0-)>v|92ewc;i_o9q?)s zn|F)F!j>&t@OZA#-+vvO&Bprm>uG9g!s{Jo@7@ncNlBrosEGdl>r_?!AAhN-sa(9+ zMny#h)z#Hpzdpe5@Cdth?LyaecI?M{bdwV-` z=gwttaERL4T3&wnWjZ@Mc*47qsb93?g$A9?iUk`=EB}Ae0 z^fbD7>2=GG%3D)Yk3>ptZG?-~av0&Ye5i zx^)YAd3pT#&wpX&%zv3^nnrVTGu72^)6~?2+ua*I5BU9KBqb$LSh#|p|9ll+e)%Of zn~inr*0FHmLJA8D`TqOwx#NyI=;-L6xw)Bwf&va5I>fA5vv4|{WMpJ;@4X9o`|WB{ zQc}ps$Y6YYoE0lpgl4R^ww95R5!S9Pt^LgNbUjX3q`LNsV zy!hfK5)%{o)vrn!8}pljLzGgIot-U*5C2^}o@=7(BATYj!GoX3$jGSl^<5Q@=bAk9 z&_i_Zq<^GD0s&n<_+X!$Jb6;~?>`_8E@4qfRJ#HBo7?StitC5WxH;M$K zRetlE--?LHAO7&iuN9IOyrQ!if`gJpTA&csw4O zo10m_d^zXNouja@5W_I=dcD-w*OQQtKymRCeEaPwI(R!fDJdzTukR`g7GzOhUr%pu zFGWQ~3=a?Ea5(V$$Ed42!RpnkNl#D5=krltUyo9XRjVFg-@Xs9*=#)icro4GT{JW_ zgiZuQ-^l*mFEaoAvo96*A4ej;qfM?2|EK@m=3hAtvVtN#Jw*Tj002ovPDHLkV1fpi B%J={P diff --git a/companion/src/images/iconmac.icns b/companion/src/images/iconmac.icns index 3c26785d6fd9df02236b8e8b70af7457b6e7235a..0c1a1326e2c0eb7148ecc0da84f5188f54014a96 100644 GIT binary patch literal 145634 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 literal 464053 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 z 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�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 AL;wH) literal 0 HcmV?d00001 diff --git a/companion/src/images/linuxicons/256x256/companion.png b/companion/src/images/linuxicons/256x256/companion.png new file mode 100644 index 0000000000000000000000000000000000000000..6049cba5c52dcdd376298f690876d2ee6a67b38c GIT binary patch literal 8828 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 brt<+wXH~nxAc(;f@vx$-noO0HN$~#wT+r_$ literal 0 HcmV?d00001 diff --git a/companion/src/images/linuxicons/32x32/companion.png b/companion/src/images/linuxicons/32x32/companion.png new file mode 100644 index 0000000000000000000000000000000000000000..0915c1f8391a17f4e8da8e38736db1035fa03a8d GIT binary patch literal 1143 zcmV--1c>{IP)7O-%IU zNe?8Fc+r>`E_#p)iSc5LM8=2*&Te|}ra?tlQJTf>#+6vJ3Mj*%8x>Gcm>#|f&SJY! z*Q9CRW#0R}Kfm|B_sswR{}WNER2v%`>+9+bGuX=$0Ao#ld4Q&U>4HXe_2L9^Mc*X#d=z+^J%_4?J-Rg1-PbaZrgg8KS; zr_;#=dwO~t4o7iuF&B(PB6D+d_i6gSBM5vL42J&x{;$L}G&BT}psb4B|Mlhd?wj44 z*i9-Rrzq#es~1pD+$21|d1B`=0019C7={r9@f89dk4L|!i4p=QZ~y>`q4H|^!O8*j zq5@R$ivq<^Xa?Q|V0CcMTLgtkGTt>WU|5rQNr(%?P?xHtSQZBLtJ5p$4=R<#PO!YZ zJUl!M0LaP7>Feu*;Njun^z<~;DT)FBTm&vo_D=Fj@&Et;0g7K0J8yQdEKK^dG*!|2 z*2^TAl!>IZSyEEs@pz!_bUJHlYSID(LV>bF$$@^Yi|~J~#dW zM+D_MdL4Lo`z4T7$x_vm*Ga$ApBDdM0ssK@o{9#eY`);O!tw9Nv5VLf5P&4`zP;Tx zl*`jg?ry)00Dv$Rj)WpyB=j-FB$>OBk0f~Z!!uF7h>J*7QZxg78Uj>+D(VzzASS}( zRr0&Rk0Fq%q#5E2s9&94C1MGv6G|fMyR2^|5D}sRRRPqQB=gDs$?syXCc;CWzk1H& ze^K*+1PGAV$`O=(J?Rg0Bov`P&=Hzlc%~#%s*-Xu9!5aCB*ZfI`xCo}9l4GG0Du9$ zH6O#USExW$Aj}g!hJcUrW$N3XYwwyj5ob?7OodN8Cu~JNPf@2p5Ozv_T9srnd3JUN z^=LH8brn_=@=zWudhRNdk6p*v-)Ex&6aawd;(0&ig+7Mv-~Ho-9YmwijE;`( z?d@5uR-@4v4u{*?+Q!Dl;_>*x!h*?UvfJ%ywc71=>vTGbqB=V}+uPfHJ|964BuV!6 z_L|M++}vDlF7&eR-o(U&PNySDa(sNetE)>a7U$>Z7ZnvLl}d?3A`}W~njRV&8W}--GD=I1q3k&Ub zJ4upiwHg4hw6p{OuvjcBD=TGXWq!ZEyu2KG({iEriB|b9%3nR`wjz4YX+!`3002ov JPDHLkV1f#CD$M`@ literal 0 HcmV?d00001 diff --git a/companion/src/companion.png b/companion/src/images/linuxicons/48x48/companion.png similarity index 100% rename from companion/src/companion.png rename to companion/src/images/linuxicons/48x48/companion.png diff --git a/companion/src/images/linuxicons/512x512/companion.png b/companion/src/images/linuxicons/512x512/companion.png new file mode 100644 index 0000000000000000000000000000000000000000..40d08e869266d25af43b0912c13acf0f81db2975 GIT binary patch literal 18769 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 &H0I_|=7lg%C#mT7@+&s5YHOuHW;& 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + COMPANION + + + + + + O + + + + + P + + + + + E + + + + + N + + + + + + + + + \ No newline at end of file From 04941180897c74a8375ec3d34121bca1924c3049 Mon Sep 17 00:00:00 2001 From: Dvogonen Date: Mon, 6 Jan 2014 01:31:16 +0100 Subject: [PATCH 084/308] Improved customized splash for burn dialog with OpenTX logo. --- companion/src/images/customize.png | Bin 371 -> 383 bytes companion/src/images/originals/customize.xcf | Bin 3179 -> 2325 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/companion/src/images/customize.png b/companion/src/images/customize.png index cece052a443d4007dd61c41aeacafaaa89920f35..4cac4850ed3fbabc7d5db7cab858d7d6873142e5 100644 GIT binary patch delta 309 zcmV-50m}aK0{;S#Q-1{vGdrRrdkp{p0Srk*K~y-)z0#{r13?r9;Hly*w!Uvr0i)0r z?MWTH0tQ3c9W;`pb}O5m3OoX;5NlBNCG?V@CY>PK&^>IIq?~^ctID|fGM95xs$4bx zS-Dcj1jo)e{hl0PR&1Sq`-Kz)O?mN1i0TrqP1<9Qj$H-FgkDiXhVc3Obr5|ZO) z`v)dUU7heGl5pMS>4k)wG215zePW6w^ipmB#GSkYzr;4TB92?b)F%Y{I7S#W+X&hH z2w`#FLin%`2%mI`u(m^l4QYfgYY=v1Do+G&Z0&Pp96_WD3UbNrf^4VMt*Y2*P}4>) z1<0W-X50RTxvK~y-)z0$pE0znW5@Uu#JFJQ8za4&Ih z5D9UxywbH2oeVs!bEc7eFp??BbM+Ljbc6$ehAZRw^ z@S@?B31s_j?MaU$<%;ECj80QgeR`N=x2eYc1=;I~^i00000NkvXXu0mjfp?Zw` diff --git a/companion/src/images/originals/customize.xcf b/companion/src/images/originals/customize.xcf index 8032ce8e78b27716dd2d61971c0737074ea6643d..fb7c85d5e283bbccfaf0cc312c6912b7d175b5e4 100644 GIT binary patch delta 434 zcmaDYF;!?n0HeglKx;PEH^j1R8+Y0mui6bFu>23}BOhrU8Ki5Gw#N0{};j BDKY>6 literal 3179 zcmd^BJ#Q015S{TyeDT?i^FbOwItrvv7$q$d(utmu8ac)>rzE!JGmy~uBnk>jYJLGf z0wg4QeghQ}LJ&d(2xQ*7y}RrYgP=i38S80h-`ky;+ub{FFW4P=dz~%s?)v(Mz#_m0 z3V;Gt`qSwY4Qvrm(#wEz?fKkA0{#k6O4`-L=eRQ%e-3T4heWMlx83WudZXYLD27*A z3&;CAT`wH$1h+0#*S30{!Omdht;J1i)Z1)(>zCJKo8fFE(j`pYoG~@kyz95e;y;j?wn)-cy-Dn<13T1md~Yg2|`LYq%(gi$jDJ<#xW5ReVF|BftMluOVFC)R> zF)exqZj~+ zL>+r_LrxvT`)tu-{y*gDn%`pGT;_?3&76CrM|M^DePBnKVTS!=HHS zh3oCnc6Wq(VYu54w>g6gK}#=N6Zn5}*=k@M=Q33jC<3tb-V|43DEBei2=D>$?o*N4 dPj@Nz8Tc2_`2=!aE=>PNOy(k%=mQ=gKLDyNq>KOn From a86ab46bb1218dd022d7abb905a9f8b76893a878 Mon Sep 17 00:00:00 2001 From: Dvogonen Date: Mon, 6 Jan 2014 01:48:45 +0100 Subject: [PATCH 085/308] And now the infernal Linux install path should be correct. I hope... --- companion/src/CMakeLists.txt | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/companion/src/CMakeLists.txt b/companion/src/CMakeLists.txt index cd3bd87ee..a3abc3ef3 100644 --- a/companion/src/CMakeLists.txt +++ b/companion/src/CMakeLists.txt @@ -319,12 +319,12 @@ TARGET_LINK_LIBRARIES( ${PROJECT_NAME} ${QT_LIBRARIES} ${QT_QTMAIN_LIBRARY} ${XE IF(${CMAKE_SYSTEM_NAME} MATCHES "Linux") INSTALL( TARGETS ${PROJECT_NAME} DESTINATION ${CMAKE_INSTALL_PREFIX}/bin ) INSTALL( FILES companion.desktop DESTINATION share/applications ) - INSTALL( FILES images/linuxicons/32x32/companion.png DESTINATION share/icons/hicolor/32x32/apps ) - INSTALL( FILES images/linuxicons/48x48/companion.png DESTINATION share/icons/hicolor/48x48/apps ) - INSTALL( FILES images/linuxicons/128x128/companion.png DESTINATION share/icons/hicolor/128x128/apps ) - INSTALL( FILES images/linuxicons/256x256/companion.png DESTINATION share/icons/hicolor/256x256/apps ) - INSTALL( FILES images/linuxicons/512x512/companion.png DESTINATION share/icons/hicolor/512x512/apps ) - INSTALL( FILES images/linuxicons/scalable/companion.svg DESTINATION share/icons/hicolor/scalable/apps ) + INSTALL( FILES images/linuxicons/32x32/companion.png DESTINATION /usr/share/icons/hicolor/32x32/apps ) + INSTALL( FILES images/linuxicons/48x48/companion.png DESTINATION /usr/share/icons/hicolor/48x48/apps ) + INSTALL( FILES images/linuxicons/128x128/companion.png DESTINATION /usr/share/icons/hicolor/128x128/apps ) + INSTALL( FILES images/linuxicons/256x256/companion.png DESTINATION /usr/share/icons/hicolor/256x256/apps ) + INSTALL( FILES images/linuxicons/512x512/companion.png DESTINATION /usr/share/icons/hicolor/512x512/apps ) + INSTALL( FILES images/linuxicons/scalable/companion.svg DESTINATION /usr/share/icons/hicolor/scalable/apps ) INSTALL( FILES ../targets/linux/45-taranis.rules DESTINATION /etc/udev/rules.d/ ) # Linux specific code SET(OperatingSystem "Linux") From 57718d010051b268ab57d7ba309cbf14e08128a4 Mon Sep 17 00:00:00 2001 From: Dvogonen Date: Mon, 6 Jan 2014 13:59:39 +0100 Subject: [PATCH 086/308] Cleaning up graphics and about box --- companion/src/icon.ico | Bin 208630 -> 263518 bytes companion/src/images/9CX.png | Bin 8138 -> 0 bytes companion/src/images/companion9x-title.png | Bin 8272 -> 8636 bytes companion/src/images/customize.png | Bin 383 -> 381 bytes .../images/originals/companion9x-title.xcf | Bin 66210 -> 70158 bytes companion/src/images/originals/customize.png | Bin 526 -> 0 bytes companion/src/images/originals/customize.xcf | Bin 2325 -> 4704 bytes companion/src/images/originals/splash.xcf | Bin 158051 -> 171481 bytes companion/src/images/originals/splasht.xcf | Bin 205696 -> 202775 bytes companion/src/images/splash.png | Bin 68810 -> 68222 bytes companion/src/images/splasht.png | Bin 106785 -> 104459 bytes companion/src/mainwindow.cpp | 7 ++++--- 12 files changed, 4 insertions(+), 3 deletions(-) delete mode 100644 companion/src/images/9CX.png delete mode 100644 companion/src/images/originals/customize.png diff --git a/companion/src/icon.ico b/companion/src/icon.ico index ad09f76fe1f90e61bef1ef6bf70a426db6eb80b8..ff48395bac58cafe9de98e94e5589e6383919929 100644 GIT binary patch literal 263518 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 literal 208630 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

=y@{*xo@(54V0{yW49ACH!q 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 ZBEP@UM&B9uBq%Sa5Gq>mlG_%+{{?&^NWuUB diff --git a/companion/src/images/companion9x-title.png b/companion/src/images/companion9x-title.png index 4db1ed2f27eac7adc789f754e7a2d0e781f9eb3d..cbaa0d13bf60e4d8605ae331cdcafc37e7ef93fb 100644 GIT binary patch literal 8636 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 diff --git a/companion/src/images/customize.png b/companion/src/images/customize.png index 4cac4850ed3fbabc7d5db7cab858d7d6873142e5..078d0af75638cd472e47a5ff15d3e72407d5f23b 100644 GIT binary patch delta 307 zcmV-30nGmY0{sGzQ-1~wEjAiqmw^BP0SZY(K~y-)?b0zz!$1@V@QVjmhpSny7(741 zI~-iZY<`Z2plintVw8ZHG;1J(Lq9^n`Qkxc@+|^&tz^l8RNo~PyNZKL|KpGM{=?%D zvdwSv8Qzt~f84vWt2n$x5UMN)}`rt;q{<8fNGSH>TIL58l{I7+knY14Y`9DqW?S4X=oC=BCULSZLC3fVKfPV z?vC>X^&Du%3@%QCnIAVc-G1`l^97g)Xu>?EiTnTn002ovPDHLk FV1l;&h~xkO delta 309 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 diff --git a/companion/src/images/originals/customize.png b/companion/src/images/originals/customize.png deleted file mode 100644 index 092e8a6a1ca7f7b7366ba9618bdde8d344cba38a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 526 zcmV+p0`dKcP)ug zK~y-)t<%9v!cZ6h@I5n@mo1~?=T@gYcnv10894fHV#CCON~1_q&~xBve?c9C2rXzq zp#MQk3cS7!!2)4@^XXuxgUANJ!x#hs zXhzV0zZnDYvh6f&n6o{Ql$T}-Sa7yD*6G4maDDg2cXmr0L=zgT7(t>=#ijl2Vh~UZGKp~#r#EEcVs#O z*dItrrJ2%AY0m{g&`m5z1M(*=#fMS=V$K9Oi^07IbQ>^Q(rjP{E|konZpt6HM0Z9Y zA5;89^9{hnl$liNKdsD>@br78Od?s1_^|K|t~!zTosF&!wbh6kosarZ?<1t;sTt%# zjjD@2oLg^&=z8zBJK|@F1#<^Etn~!L42TytJV+F-o#Y*P%A1MSB|_OaRdZ@66tArq zMirrA?5ep#7uFb5jb$~rMV8{VID<3eRV}8u{$u^YXjP}P2?f&&&FUw70-=7Ibq2~V)c^nh diff --git a/companion/src/images/originals/customize.xcf b/companion/src/images/originals/customize.xcf index fb7c85d5e283bbccfaf0cc312c6912b7d175b5e4..d5ef01df88beccbedb674a66c50658d836fd55c2 100644 GIT binary patch literal 4704 zcmd^CU2IfE6rS1tr9bqCpJ05r){qo+OKW2Ar(h9EVj_rbc_0#!ZM)rG*zPvFTWpDD z>x0qwq$Z+9c>_&UFh<`10|_CD@kI@41R@4#_=mQ%yX~^$cV_Orom&qLeCuyEGGiL2;>7T z11+(5vRe%M2Qk;gaZtn@h{j`)c-riRh_>gfF_Rrh#EeWTVfL(Xq$5wA^XlY*cMDwu7J^)Vi{JP3ubX!enjIfQ&w!Xso}^#syAlzjwGW4W{)M3*m6SaHxV14DFdT4TElzPVr+=u z#(IB8W&d)^y?|8cDU#(vqddosv7q40D`scUyXV+hgd`Ll6Ej$7l~`+x?UV& zhs8SSdb3~bR<2jYuWxUn$AWi8>|q~>wC1hC-b3zRhz`~%K9}y3{P@(v^5iX-5$28j zXJ}zUgvX|vr^mvMzh8`<#a&rCbKb{%=Vzo1d!%rPJUP4KU%zi$h;L*ZgW|GCk=#z$ z6bn9nQuH%6Ec{~P6&393VjE0+?7H_oF(E~vi{e5^_w%snWrZ^yex_vLj9W(OG$%C+ z{&pFYpWUbvSJY+$A|V<3L@z5G6rCH8C2)sDyNdGKYAPf9ap2KV#ZK{#^q^GRrGf2> z;=}>5mAtl!FI6npKO(2EPTiO(oO(?aiJWr$m=2Yo(9q-+GZJ7TAOgCP0}XG z*O5>m!CTG7B?g?5Dxade@_2ZlK{|xlHOF?Yrk20Kz4=8>8xVjLq&Jqt)jE+9rw)B(P@5J0k@AGg-Ulh9da!b zYe#L*6unoa&=#p#g#i`iDaVs+s{O!)nTfO120Wr5uK+`#RdSpb>t&bT6`w5kFYP)a zub}FtblC{Fbei2vk(ce_YrNkH2zhFox>erpnVc2B7th#clrEQ<-5+6gThvOkY1zW} zz-}(Oyxj;LJHIGU&(i|S&$Ybb57v>l?e3=8aWQny9K1L?b?#dk7{ru(?J-aeYFIh;6TSB6-ACW8G)6&fAo`rD+mhay zFb4-S{doJw($RDb!m=MyB)_j8Quv;prcE)*eMr&AoHZ&wwU|-NZ6LhmE55@6Z3j&p-@WN&?k)wq;Tmd0NRi?_qq3mIP`MU(ojN>s*bLbFnv z)$?&phF$4|e+lxIeXupFhvn?1Th2HsD0NPLw2&!xHT($}-!~5(WQ}rf r9=u)bQD<1(DCRa0VySx))CHc#D5wqV7eJfAGue63eKFcV28jIwGFldb delta 157 zcmaE$GF50o0HeglKx;}#125r1VqI^ zrNTfq2s8k(15m7;fq}Vu^EqxGHaCu|Krs+#0AdFqW(2B#%fP_N31ovn0}wj^`9N__ RRv??9UI2n2;tUEPF#!2l6f6J$ diff --git a/companion/src/images/originals/splash.xcf b/companion/src/images/originals/splash.xcf index eee7e6d653dd763d779d06e1ed88e94de2e51dea..4130570dd156947c6f78d9b5e863185fab918b65 100644 GIT binary patch delta 31349 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 R-_Pg%qr7+hbH4Yb{}(oBbkP6+ delta 45298 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 Sv!}=J%IDnE^n3Dcr~m)|OZTDx diff --git a/companion/src/images/splash.png b/companion/src/images/splash.png index 0049e2da177e43541f20309a2fd306ce04c5a52a..8c55b1551346ebb5e602f8644ea3ccc079ab5cbd 100644 GIT binary patch delta 65941 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 mO8S2?DU`#8cS&o&o6+m5w8-Br;07V< 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

;5Tmpk(h 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 delta 93338 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 V(_5>;r~m*8002ovPDHLkV1hHzhC~1W diff --git a/companion/src/mainwindow.cpp b/companion/src/mainwindow.cpp index b05a10a54..3b18ab7b8 100644 --- a/companion/src/mainwindow.cpp +++ b/companion/src/mainwindow.cpp @@ -1496,12 +1496,13 @@ void MainWindow::logFile() void MainWindow::about() { QString aboutStr = "


"; - aboutStr.append(tr("Copyright") +" Bertrand Songis & Romolo Manfredini © 2011- 2014
"); - aboutStr.append(QString("
http://code.google.com/p/companion9x/
")+tr("Version %1 (revision %2), %3").arg(C9X_VERSION).arg(C9X_REVISION).arg(__DATE__)+QString("

")); + aboutStr.append("OpenTX Home Page: http://open-tx.org

"); aboutStr.append(tr("The Companion project was originally forked from eePe")+QString(" http://code.google.com/p/eepe

")); aboutStr.append(tr("If you've found this program useful, please support by")); aboutStr.append(" "); - aboutStr.append(tr("donating") + ""); + aboutStr.append(tr("donating") + "

"); + aboutStr.append(tr("Version %1 (revision %2), %3").arg(C9X_VERSION).arg(C9X_REVISION).arg(__DATE__)+QString("

")); + aboutStr.append(tr("Copyright") +" Bertrand Songis & Romolo Manfredini © 2011- 2014
"); QMessageBox::about(this, tr("About Companion"),aboutStr); } From a646e240fb265ad532330cb3fd4042db8de39f76 Mon Sep 17 00:00:00 2001 From: Dvogonen Date: Mon, 6 Jan 2014 18:21:30 +0100 Subject: [PATCH 087/308] Fixed last companion9x strings. Getting very close. --- companion/src/companion9x.qrc | 2 +- .../{companion9x-title.png => companion-title.png} | Bin companion/src/mainwindow.cpp | 2 +- companion/src/modelslist.cpp | 2 +- companion/src/xsimulatordialog.cpp | 2 +- 5 files changed, 4 insertions(+), 4 deletions(-) rename companion/src/images/{companion9x-title.png => companion-title.png} (100%) diff --git a/companion/src/companion9x.qrc b/companion/src/companion9x.qrc index 8a8409172..6cd5e7faa 100644 --- a/companion/src/companion9x.qrc +++ b/companion/src/companion9x.qrc @@ -48,7 +48,7 @@ images/screenshot.png images/splash.png images/splasht.png - images/companion9x-title.png + images/companion-title.png images/read_eeprom.png images/write_eeprom.png images/write_flash.png diff --git a/companion/src/images/companion9x-title.png b/companion/src/images/companion-title.png similarity index 100% rename from companion/src/images/companion9x-title.png rename to companion/src/images/companion-title.png diff --git a/companion/src/mainwindow.cpp b/companion/src/mainwindow.cpp index 3b18ab7b8..6c0c6fdaa 100644 --- a/companion/src/mainwindow.cpp +++ b/companion/src/mainwindow.cpp @@ -1495,7 +1495,7 @@ void MainWindow::logFile() void MainWindow::about() { - QString aboutStr = "

"; + QString aboutStr = "

"; aboutStr.append("OpenTX Home Page: http://open-tx.org

"); aboutStr.append(tr("The Companion project was originally forked from eePe")+QString(" http://code.google.com/p/eepe

")); aboutStr.append(tr("If you've found this program useful, please support by")); diff --git a/companion/src/modelslist.cpp b/companion/src/modelslist.cpp index ad21682ee..6c063e7a8 100644 --- a/companion/src/modelslist.cpp +++ b/companion/src/modelslist.cpp @@ -445,7 +445,7 @@ void ModelsListWidget::doPaste(QByteArray *gmData, int index) i++; gData++; if(c=='G') { //General settings - ret = QMessageBox::question(this, "companion9x", tr("Do you want to overwrite TX general settings?"), + ret = QMessageBox::question(this, "Companion", tr("Do you want to overwrite TX general settings?"), QMessageBox::Yes | QMessageBox::No); if (ret == QMessageBox::Yes) { radioData->generalSettings = *((GeneralSettings *)gData); diff --git a/companion/src/xsimulatordialog.cpp b/companion/src/xsimulatordialog.cpp index a048532f6..749d1f577 100644 --- a/companion/src/xsimulatordialog.cpp +++ b/companion/src/xsimulatordialog.cpp @@ -195,7 +195,7 @@ void xsimulatorDialog::onTimerEvent() { static unsigned int lcd_counter = 0; if (!simulator->timer10ms()) { - QMessageBox::critical(this, "companion9x", QString(tr("Firmware %1 error: %2")).arg(txInterface->getName()).arg(simulator->getError())); + QMessageBox::critical(this, "companion", QString(tr("Firmware %1 error: %2")).arg(txInterface->getName()).arg(simulator->getError())); timer->stop(); return; } From 893eb3c06183e011b9b1fb35900c71f0f00973f1 Mon Sep 17 00:00:00 2001 From: Dvogonen Date: Mon, 6 Jan 2014 19:11:30 +0100 Subject: [PATCH 088/308] Fixed problem with language selection in dropbox. --- companion/src/preferencesdialog.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/companion/src/preferencesdialog.cpp b/companion/src/preferencesdialog.cpp index 9df07b69e..1d98d55ac 100644 --- a/companion/src/preferencesdialog.cpp +++ b/companion/src/preferencesdialog.cpp @@ -506,10 +506,10 @@ void preferencesDialog::populateLocale() if (!strl.count()) return; QDir directory = QDir(":/"); - QStringList files = directory.entryList(QStringList("companion9x_*.qm"), QDir::Files | QDir::NoSymLinks); + QStringList files = directory.entryList(QStringList("companion_*.qm"), QDir::Files | QDir::NoSymLinks); foreach(QString file, files) { - QLocale loc(file.mid(12, 2)); + QLocale loc(file.mid(10, 2)); ui->locale_QB->addItem(QLocale::languageToString(loc.language()), loc.name()); } } From 4a6acab3c9c3d2068f3774f733357d7fbeaf5b69 Mon Sep 17 00:00:00 2001 From: mhotar Date: Mon, 6 Jan 2014 22:15:08 +0100 Subject: [PATCH 089/308] BOLD FONT added Bold font definitions MIXER: active mix weight is BOLDed instead of source, because we now have no international Bold definitions. Bolded numbers are wider than before, but it seems it can fit. --- radio/src/fonts/std/font_05x07.lbm | 2 +- radio/src/fonts/std/font_05x07.png | Bin 636 -> 623 bytes .../src/fonts/std/font_05x07_B_compressed.lbm | 1 + .../src/fonts/std/font_05x07_B_compressed.png | Bin 0 -> 436 bytes radio/src/gui/menu_model.cpp | 4 +- radio/src/lcd.cpp | 59 +++++++++++------- radio/src/translations.cpp | 6 ++ radio/src/translations.h | 3 + 8 files changed, 48 insertions(+), 27 deletions(-) create mode 100644 radio/src/fonts/std/font_05x07_B_compressed.lbm create mode 100644 radio/src/fonts/std/font_05x07_B_compressed.png diff --git a/radio/src/fonts/std/font_05x07.lbm b/radio/src/fonts/std/font_05x07.lbm index 51377730e..d370d9101 100644 --- a/radio/src/fonts/std/font_05x07.lbm +++ b/radio/src/fonts/std/font_05x07.lbm @@ -1,4 +1,4 @@ -0x00,0x00,0xff,0xff,0xff,0xff,0xff,0x6f,0xff,0xff,0xff,0x07,0x00,0x07,0xff,0x18,0x30,0x18,0x0c,0x06,0x08,0x7f,0x7f,0x7f,0x08,0x23,0x13,0x08,0x64,0x62,0x36,0x49,0x55,0x22,0x50,0xff,0x05,0x03,0xff,0xff,0xff,0x1c,0x22,0x41,0xff,0xff,0x41,0x22,0x1c,0xff,0x14,0x08,0x3e,0x08,0x14,0x08,0x08,0x3e,0x08,0x08,0xff,0x50,0x30,0xff,0xff,0x00,0x08,0x08,0x08,0x08,0xff,0xff,0x40,0xff,0xff,0x20,0x10,0x08,0x04,0x02, +0x00,0x00,0xff,0xff,0xff,0xff,0xff,0x6f,0xff,0xff,0xff,0x07,0x00,0x07,0xff,0x18,0x30,0x18,0x0c,0x06,0x08,0x7f,0x7f,0x7f,0x08,0x23,0x13,0x08,0x64,0x62,0x36,0x49,0x55,0x22,0x50,0xff,0x05,0x03,0xff,0xff,0xff,0x1c,0x22,0x41,0xff,0xff,0x41,0x22,0x1c,0xff,0x14,0x08,0x3e,0x08,0x14,0x08,0x08,0x3e,0x08,0x08,0xff,0x50,0x30,0xff,0xff,0x00,0x08,0x08,0x08,0xff,0xff,0xff,0x40,0xff,0xff,0x20,0x10,0x08,0x04,0x02, 0x3e,0x41,0x41,0x3e,0xff,0x00,0x42,0x7f,0x40,0xff,0x62,0x51,0x49,0x46,0xff,0x41,0x49,0x49,0x36,0xff,0x18,0x14,0x12,0x7f,0xff,0x27,0x45,0x45,0x39,0xff,0x3e,0x49,0x49,0x32,0xff,0x01,0x79,0x05,0x03,0xff,0x36,0x49,0x49,0x36,0xff,0x06,0x49,0x29,0x1e,0xff,0xff,0x36,0x36,0xff,0xff,0xff,0x56,0x36,0xff,0xff,0xff,0x08,0x14,0x22,0x41,0x14,0x14,0x14,0x14,0x14,0x41,0x22,0x14,0x08,0xff,0x02,0x01,0x51,0x09,0x06, 0x06,0x09,0x09,0x06,0xff,0x7e,0x09,0x09,0x09,0x7e,0x7f,0x49,0x49,0x49,0x36,0x3e,0x41,0x41,0x41,0x22,0x7f,0x41,0x41,0x22,0x1c,0x7f,0x49,0x49,0x49,0x41,0x7f,0x09,0x09,0x09,0x01,0x3e,0x41,0x49,0x49,0x7a,0x7f,0x08,0x08,0x08,0x7f,0xff,0x41,0x7f,0x41,0xff,0x20,0x40,0x41,0x3f,0x01,0x7f,0x08,0x14,0x22,0x41,0x7f,0x40,0x40,0x40,0xff,0x7f,0x02,0x0c,0x02,0x7f,0x7f,0x04,0x08,0x10,0x7f,0x3e,0x41,0x41,0x41,0x3e, 0x7f,0x09,0x09,0x09,0x06,0x3e,0x41,0x51,0x21,0x5e,0x7f,0x09,0x19,0x29,0x46,0x26,0x49,0x49,0x49,0x32,0x01,0x01,0x7f,0x01,0x01,0x3f,0x40,0x40,0x40,0x3f,0x1f,0x20,0x40,0x20,0x1f,0x3f,0x40,0x30,0x40,0x3f,0x63,0x14,0x08,0x14,0x63,0x07,0x08,0x70,0x08,0x07,0x61,0x51,0x49,0x45,0x43,0x7f,0x41,0x41,0x00,0xff,0x02,0x04,0x08,0x10,0x20,0x00,0x41,0x41,0x7f,0xff,0x04,0x02,0x01,0x02,0x04,0x40,0x40,0x40,0x40,0xff, diff --git a/radio/src/fonts/std/font_05x07.png b/radio/src/fonts/std/font_05x07.png index 4922f3cfde305c28088c386e82d19e812bb29b59..9f7dfaf4b7280a49ec2547867d449288de38a44d 100644 GIT binary patch delta 131 zcmV-}0DS-a1n&fpHjzUeU!-002ovPDHLkV1k>X!!1-fdLgM~!HS-w`aK4ziB53=znt4FxiLWWf zqT6cbG8~YZkoU$|iOpd)!$BE~yFSLE8)~LA9FVQpxF%@(mJ6DGAoIs3pTzy2YO%AZ Z0Tj!`AG<3?WCs8M002ovPDHLkV1lOALLLAB diff --git a/radio/src/fonts/std/font_05x07_B_compressed.lbm b/radio/src/fonts/std/font_05x07_B_compressed.lbm new file mode 100644 index 000000000..6c9ed49db --- /dev/null +++ b/radio/src/fonts/std/font_05x07_B_compressed.lbm @@ -0,0 +1 @@ +0x00,0x00,0x00,0xff,0xff,0xff,0x80,0xe0,0x60,0xff,0x00,0x18,0x18,0x18,0xff,0xff,0x60,0x60,0xff,0xff,0x60,0x60,0x60,0x60,0xff,0x3e,0x7f,0x41,0x7f,0x3e,0x00,0x42,0x7f,0x7f,0x40,0x62,0x73,0x59,0x4f,0x46,0x41,0x49,0x7f,0x7f,0x36,0x18,0x1c,0x12,0x7f,0x7f,0x27,0x67,0x45,0x7d,0x39,0x3e,0x7f,0x49,0x7b,0x32,0x01,0x79,0x7d,0x07,0x03,0x36,0x7f,0x49,0x7f,0x36,0x06,0x4f,0x69,0x3f,0x1e,0xff,0x36,0x36,0xff,0xff,0x7e,0x7f,0x09,0x7f,0x7e,0x7f,0x7f,0x49,0x7f,0x36,0x3e,0x7f,0x41,0x77,0x36,0x7f,0x7f,0x41,0x3e,0x1c,0x7f,0x7f,0x49,0x49,0x41,0x7f,0x7f,0x09,0x09,0x01,0x3e,0x7f,0x41,0x59,0x7a,0x7f,0x7f,0x08,0x7f,0x7f,0x41,0x7f,0x7f,0x41,0xff,0x30,0x70,0x41,0x7f,0x3f,0x7f,0x7f,0x14,0x63,0x41,0x7f,0x7f,0x40,0x40,0xff,0x7f,0x07,0x1e,0x07,0x7f,0x7f,0x7f,0x0c,0x18,0x7f,0x3e,0x7f,0x41,0x7f,0x3e,0x7f,0x7f,0x09,0x0f,0x06,0x3e,0x7f,0x41,0x2f,0x5e,0x7f,0x7f,0x19,0x6f,0x46,0x26,0x4f,0x5d,0x79,0x32,0x01,0x7f,0x7f,0x01,0xff,0x3f,0x7f,0x60,0x7f,0x3f,0x1f,0x3f,0x60,0x3f,0x1f,0x3f,0x70,0x38,0x70,0x3f,0x63,0x77,0x1c,0x77,0x63,0x07,0x1f,0x78,0x1f,0x07,0x71,0x79,0x5d,0x4f,0x47,0x20,0x74,0x54,0x7c,0x78,0x7f,0x7f,0x44,0x7c,0x38,0x38,0x7c,0x44,0x44,0x20,0x38,0x7c,0x44,0x7f,0x7f,0x38,0x7c,0x54,0x5c,0x18,0x08,0x7e,0x7f,0x09,0x02,0x0c,0x5e,0x52,0x7e,0x3e,0x7f,0x7f,0x04,0x7c,0x78,0x44,0x7d,0x7d,0x40,0xff,0x30,0x70,0x44,0x7d,0x3d,0x7f,0x7f,0x28,0x44,0xff,0x41,0x7f,0x7f,0x40,0xff,0x7c,0x1c,0x38,0x1c,0x78,0x7c,0x78,0x0c,0x7c,0x78,0x38,0x7c,0x44,0x7c,0x38,0x7c,0x7c,0x24,0x3c,0x18,0x18,0x3c,0x24,0x7c,0x7c,0x7c,0x78,0x0c,0x1c,0x18,0x48,0x5c,0x7c,0x74,0x20,0x04,0x3f,0x7f,0x44,0x20,0x3c,0x7c,0x60,0x3c,0x7c,0x1c,0x3c,0x60,0x3c,0x1c,0x3c,0x70,0x38,0x70,0x3c,0x44,0x6c,0x38,0x6c,0x44,0x0c,0x5c,0x50,0x7c,0x3c,0x44,0x64,0x74,0x5c,0x4c, diff --git a/radio/src/fonts/std/font_05x07_B_compressed.png b/radio/src/fonts/std/font_05x07_B_compressed.png new file mode 100644 index 0000000000000000000000000000000000000000..41b21c72c381cd00c14efcee327c491dab43845c GIT binary patch literal 436 zcmV;l0ZaagP)DWbB;{sN|0z# z@W_TiSp7JM=VS%2dnaDjfWshr2$B-8w0|2JUr`~UYK3QT~& e-~ZJx<_7>Sd!W?O0hloW0000 0) lcd_putsiAtt(FW, y, STR_VMLTPX2, md->mltpx, 0); - putsMixerSource(MIX_LINE_SRC_POS, y, md->srcRaw, isMixActive(i) ? BOLD : 0); + putsMixerSource(MIX_LINE_SRC_POS, y, md->srcRaw, 0); - gvarWeightItem(MIX_LINE_WEIGHT_POS, y, md, attr, event); + gvarWeightItem(MIX_LINE_WEIGHT_POS, y, md, attr | (isMixActive(i) ? BOLD : 0), event); #if LCD_W >= 212 displayFlightModes(EXPO_LINE_FM_POS, y, md->phases); diff --git a/radio/src/lcd.cpp b/radio/src/lcd.cpp index 723dce392..1b5973f49 100644 --- a/radio/src/lcd.cpp +++ b/radio/src/lcd.cpp @@ -113,10 +113,14 @@ void lcd_putcAtt(xcoord_t x, uint8_t y, const unsigned char c, LcdFlags flags) inv = true; } + unsigned char c_remapped; +#if defined(BOLD_FONT) && !defined(CPUM64) || defined(EXTSTD) + if (flags & (DBLSIZE+BOLD)) { +#else if (flags & DBLSIZE) { - // To save space only some DBLSIZE chars are available +#endif + // To save space only some DBLSIZE and BOLD chars are available // c has to be remapped. All non existing chars mapped to 0 (space) - unsigned char c_remapped; if (c>=',' && c<=':') c_remapped = c - ',' + 1; @@ -126,13 +130,24 @@ void lcd_putcAtt(xcoord_t x, uint8_t y, const unsigned char c, LcdFlags flags) c_remapped = c - 'a' + 42; else if (c=='_') c_remapped = 4; -#if defined(CPUARM) - else if (c>= 128) +#if defined(BOLD_FONT) && !defined(CPUM64) || defined(EXTSTD) + else if (c==' ') + c_remapped = 0; + else if (flags & BOLD) + flags &= ~BOLD; +#endif +#if defined(CPUARM) + else if ((c>= 128) && (flags & DBLSIZE)) c_remapped = c - 60; -#endif +#endif else c_remapped = 0; +#if defined(BOLD_FONT) && !defined(CPUM64) || defined(EXTSTD) + } + if (flags & DBLSIZE) { +#endif + /* each letter consists of ten top bytes followed by * by ten bottom bytes (20 bytes per * char) */ q = &font_10x14[((uint16_t)c_remapped)*20]; @@ -264,23 +279,18 @@ void lcd_putcAtt(xcoord_t x, uint8_t y, const unsigned char c, LcdFlags flags) else { uint8_t ym8 = (y & 0x07); -#if defined(BOLD_FONT) -#if !defined(CPUM64) || defined(EXTSTD) - uint8_t skipcol = 7; - if ( c >= 'A') skipcol = 4; - if ( c == 'T') skipcol = 5; -#endif +#if defined(BOLD_FONT) && defined(CPUM64) && !defined(EXTSTD) uint8_t bb = 0; if (inv) bb = 0xff; -#endif -#if !defined(CPUM64) || defined(EXTSTD) - for (int8_t i=0; i<=7; i++) { #else - for (int8_t i=0; i<=6; i++) { + if (flags & BOLD) { + q = &font_5x7_B[(c_remapped)*5]; + } #endif + for (int8_t i=0; i<=6; i++) { uint8_t b = 0; if ( !i ) { - if ( !x || !inv || (flags & BOLD)) { + if ( !x || !inv ) { lcdNextPos++; p++; continue; @@ -292,15 +302,12 @@ void lcd_putcAtt(xcoord_t x, uint8_t y, const unsigned char c, LcdFlags flags) else continue; } if (inv) b = ~b; -#if !defined(CPUM64) || defined(EXTSTD) - if (!(flags & BOLD) && (i == 7)) continue; -#endif if ((flags & CONDENSED) && i==2) { /*condense the letter by skipping column 3 */ continue; } -#if defined(BOLD_FONT) +#if defined(BOLD_FONT) && defined(CPUM64) && !defined(EXTSTD) if (flags & BOLD) { uint8_t a; if (inv) @@ -309,9 +316,6 @@ void lcd_putcAtt(xcoord_t x, uint8_t y, const unsigned char c, LcdFlags flags) a = b | bb; bb = b; b = a; -#if !defined(CPUM64) || defined(EXTSTD) - if (i == skipcol) continue; -#endif } #endif @@ -509,6 +513,10 @@ void lcd_outdezNAtt(xcoord_t x, uint8_t y, lcdint_t val, LcdFlags flags, uint8_t if (mode > 0) x += 2; } +#if defined(BOLD_FONT) && !defined(CPUM64) || defined(EXTSTD) +/////////////////////////////////////////////////////////////////// + if (flags & BOLD) fw += 1; +#endif } if (flags & LEFT) { @@ -566,6 +574,10 @@ void lcd_outdezNAtt(xcoord_t x, uint8_t y, lcdint_t val, LcdFlags flags, uint8_t #endif val = qr.quot; x-=fw; +#if defined(BOLD_FONT) && !defined(CPUM64) || defined(EXTSTD) +//////////////////////////////////////////////////////////// + if (i==len && (flags & BOLD)) x += 1; +#endif } if (xn) { @@ -583,7 +595,6 @@ void lcd_outdezNAtt(xcoord_t x, uint8_t y, lcdint_t val, LcdFlags flags, uint8_t lcd_hline(xn, y+2*FH-2, ln); } } - x--; if (neg) lcd_putcAtt(x, y, '-', flags); } diff --git a/radio/src/translations.cpp b/radio/src/translations.cpp index 98d62ab7b..cce2952aa 100644 --- a/radio/src/translations.cpp +++ b/radio/src/translations.cpp @@ -586,6 +586,12 @@ const pm_uchar font_5x7[] PROGMEM = { #endif }; +#if !defined(CPUM64) || defined(EXTSTD) +const pm_uchar font_5x7_B[] PROGMEM = { +#include "font_05x07_B_compressed.lbm" +}; +#endif + const pm_uchar font_10x14[] PROGMEM = { #include "font_10x14_compressed.lbm" #if defined(CPUARM) diff --git a/radio/src/translations.h b/radio/src/translations.h index 4a3e0600a..1b27dacb9 100644 --- a/radio/src/translations.h +++ b/radio/src/translations.h @@ -536,6 +536,9 @@ extern const pm_char STR_RESET_BTN[]; extern const pm_uchar font_5x7[]; extern const pm_uchar font_10x14[]; +#if !defined(CPUM64) || defined(EXTSTD) +extern const pm_uchar font_5x7_B[]; +#endif #if defined(CPUARM) extern const pm_uchar font_3x5[]; From d72d8f609f72b9efd85ad2b655b3a00f1c391114 Mon Sep 17 00:00:00 2001 From: mhotar Date: Tue, 7 Jan 2014 00:50:52 +0100 Subject: [PATCH 090/308] putsSwitches suffix alignment fix --- radio/src/lcd.cpp | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/radio/src/lcd.cpp b/radio/src/lcd.cpp index 1b5973f49..3d54cedc2 100644 --- a/radio/src/lcd.cpp +++ b/radio/src/lcd.cpp @@ -1051,32 +1051,35 @@ void putsSwitches(xcoord_t x, uint8_t y, int8_t idx, LcdFlags att) else if (idx >= SWSRC_FIRST_ROTENC_SWITCH) { idx -= SWSRC_FIRST_ROTENC_SWITCH; char suffix = (idx & 1) ? CHR_LONG : CHR_SHORT; - lcd_putcAtt(x+3*FW, y, suffix, att); - return lcd_putsiAtt(x, y, STR_VRENCODERS, idx/2, att); + lcd_putsiAtt(x, y, STR_VRENCODERS, idx/2, att); + return lcd_putcAtt(lcdLastPos, y, suffix, att); } #endif #if !defined(PCBSTD) else if (idx >= SWSRC_TRAINER_SHORT) { idx -= SWSRC_TRAINER_SHORT; - lcd_putcAtt(x+3*FW, y, (idx & 1) ? CHR_LONG : CHR_SHORT, att); + char suffix = (idx & 1) ? CHR_LONG : CHR_SHORT; #if ROTARY_ENCODERS > 0 if (idx >= 2) { idx -= 2; - return lcd_putsiAtt(x, y, STR_VRENCODERS, idx/2, att); + lcd_putsiAtt(x, y, STR_VRENCODERS, idx/2, att); } else #endif { - return lcd_putsiAtt(x, y, STR_VSWITCHES, SWSRC_TRAINER-1, att); + lcd_putsiAtt(x, y, STR_VSWITCHES, SWSRC_TRAINER-1, att); } + return lcd_putcAtt(lcdLastPos, y, suffix, att); } #endif if (idx > SWSRC_ON) { idx -= SWSRC_ON; - char suffix = CHR_TOGGLE; - if (idx != SWSRC_ON && (~att & STRCONDENSED)) lcd_putcAtt(x+3*FW, y, suffix, att); + if (idx != SWSRC_ON && (~att & STRCONDENSED)) { + lcd_putsiAtt(x, y, STR_VSWITCHES, idx-1, att); + return lcd_putcAtt(lcdLastPos, y, CHR_TOGGLE, att); + } } lcd_putsiAtt(x, y, STR_VSWITCHES, idx-1, att); } From d0281da58d9b4a02c17ac5ce243970168d1ee67e Mon Sep 17 00:00:00 2001 From: Dvogonen Date: Tue, 7 Jan 2014 02:10:50 +0100 Subject: [PATCH 091/308] The part where the old companion9x settings are automatically transferred to companion settings is done. Tested on Linux. Should work on Windows/OSX. Now remains only to rename all the hundreds of seting references from companion9x to companion. This is blocked until Bertrand merges his reworked edit dialogs. --- companion/src/main.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/companion/src/main.cpp b/companion/src/main.cpp index 9cdbf430e..04a20ec84 100644 --- a/companion/src/main.cpp +++ b/companion/src/main.cpp @@ -76,6 +76,17 @@ class MyProxyStyle : public QProxyStyle int main(int argc, char *argv[]) { + // Start by borrowing any left over settings from companion9x + QSettings c9x_settings("companion9x", "companion9x"); + QSettings com_settings("companion", "companion"); + if (!com_settings.contains("pos")) { + QStringList keys = c9x_settings.allKeys(); + for( QStringList::iterator i = keys.begin(); i != keys.end(); i++ ) + { + com_settings.setValue( *i, c9x_settings.value( *i ) ); + } + } + Q_INIT_RESOURCE(companion9x); QApplication app(argc, argv); app.setApplicationName("Companion9x"); From 3dfdd1b61d78ec6f86bb968fae2274906af299f4 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Tue, 7 Jan 2014 15:13:26 +0100 Subject: [PATCH 092/308] Update DONATIONS.txt --- DONATIONS.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/DONATIONS.txt b/DONATIONS.txt index 49eab321a..816ad3764 100644 --- a/DONATIONS.txt +++ b/DONATIONS.txt @@ -272,3 +272,4 @@ Kenneth Lilja (monthly) R Wells Uwe Jordt Harald Wilczak +Bernhard Lohmann From 3b59d077249090368c5769cde62bf5ce0ab72c79 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Tue, 7 Jan 2014 17:57:42 +0100 Subject: [PATCH 093/308] Support of current EEPROM inside Companion. Some more code around EEPROMS export removed (needed to be fixed, so I preferred to remove in the same commit). --- companion/src/CMakeLists.txt | 12 +- companion/src/comparedialog.cpp | 35 +- companion/src/eepromimportexport.h | 7 +- companion/src/eeprominterface.cpp | 32 +- companion/src/eeprominterface.h | 71 +- companion/src/firmwares/er9x/er9xeeprom.cpp | 510 +---- companion/src/firmwares/er9x/er9xeeprom.h | 15 - .../src/firmwares/er9x/er9xinterface.cpp | 55 +- .../src/firmwares/ersky9x/ersky9xeeprom.cpp | 811 +------- .../src/firmwares/ersky9x/ersky9xeeprom.h | 22 - .../firmwares/ersky9x/ersky9xinterface.cpp | 35 +- .../src/firmwares/gruvin9x/gruvin9xeeprom.cpp | 448 +--- .../src/firmwares/gruvin9x/gruvin9xeeprom.h | 37 +- .../firmwares/gruvin9x/gruvin9xinterface.cpp | 57 +- .../firmwares/opentx/open9xGruvin9xeeprom.cpp | 1065 +--------- .../firmwares/opentx/open9xGruvin9xeeprom.h | 30 - .../firmwares/opentx/open9xSky9xeeprom.cpp | 1486 +------------- .../src/firmwares/opentx/open9xSky9xeeprom.h | 43 - .../firmwares/opentx/open9xStockeeprom.cpp | 1826 +---------------- .../src/firmwares/opentx/open9xStockeeprom.h | 95 +- ...ulator.cpp => opentxGruvin9xsimulator.cpp} | 6 +- ...xsimulator.h => opentxGruvin9xsimulator.h} | 0 ...8simulator.cpp => opentxM128simulator.cpp} | 6 +- ...xM128simulator.h => opentxM128simulator.h} | 0 ...simulator.cpp => opentxSky9xsimulator.cpp} | 4 +- ...ky9xsimulator.h => opentxSky9xsimulator.h} | 0 .../opentx/opentxTaranisSimulator.cpp | 2 +- .../{open9xeeprom.cpp => opentxeeprom.cpp} | 237 ++- .../opentx/{open9xeeprom.h => opentxeeprom.h} | 2 - ...pen9xinterface.cpp => opentxinterface.cpp} | 116 +- .../{open9xinterface.h => opentxinterface.h} | 5 +- ...pen9xsimulator.cpp => opentxsimulator.cpp} | 6 +- .../{open9xsimulator.h => opentxsimulator.h} | 0 companion/src/firmwares/th9x/th9xeeprom.cpp | 240 +-- companion/src/firmwares/th9x/th9xeeprom.h | 13 - .../src/firmwares/th9x/th9xinterface.cpp | 52 +- companion/src/helpers.cpp | 109 +- companion/src/helpers.h | 3 +- companion/src/mainwindow.cpp | 2 +- companion/src/modeledit/curves.cpp | 93 +- companion/src/modeledit/expodialog.cpp | 139 +- companion/src/modeledit/flightmodes.cpp | 2 +- companion/src/modeledit/inputs.cpp | 17 +- companion/src/modeledit/mixerdialog.cpp | 119 +- companion/src/modeledit/mixerdialog.ui | 313 ++- companion/src/modeledit/mixes.cpp | 18 +- companion/src/printdialog.cpp | 144 +- radio/src/myeeprom.h | 37 +- 48 files changed, 938 insertions(+), 7439 deletions(-) rename companion/src/firmwares/opentx/{open9xGruvin9xsimulator.cpp => opentxGruvin9xsimulator.cpp} (97%) rename companion/src/firmwares/opentx/{open9xGruvin9xsimulator.h => opentxGruvin9xsimulator.h} (100%) rename companion/src/firmwares/opentx/{open9xM128simulator.cpp => opentxM128simulator.cpp} (97%) rename companion/src/firmwares/opentx/{open9xM128simulator.h => opentxM128simulator.h} (100%) rename companion/src/firmwares/opentx/{open9xSky9xsimulator.cpp => opentxSky9xsimulator.cpp} (98%) rename companion/src/firmwares/opentx/{open9xSky9xsimulator.h => opentxSky9xsimulator.h} (100%) rename companion/src/firmwares/opentx/{open9xeeprom.cpp => opentxeeprom.cpp} (88%) rename companion/src/firmwares/opentx/{open9xeeprom.h => opentxeeprom.h} (98%) rename companion/src/firmwares/opentx/{open9xinterface.cpp => opentxinterface.cpp} (92%) rename companion/src/firmwares/opentx/{open9xinterface.h => opentxinterface.h} (95%) rename companion/src/firmwares/opentx/{open9xsimulator.cpp => opentxsimulator.cpp} (98%) rename companion/src/firmwares/opentx/{open9xsimulator.h => opentxsimulator.h} (100%) diff --git a/companion/src/CMakeLists.txt b/companion/src/CMakeLists.txt index 375b4e7ff..0c8f7e70b 100644 --- a/companion/src/CMakeLists.txt +++ b/companion/src/CMakeLists.txt @@ -126,16 +126,16 @@ SET( companion9x_SRCS ${ER9X_CHECKOUT_DIRECTORY}/er9xsimulator.cpp firmwares/gruvin9x/gruvin9xeeprom.cpp firmwares/gruvin9x/gruvin9xinterface.cpp - firmwares/opentx/open9xeeprom.cpp + firmwares/opentx/opentxeeprom.cpp firmwares/opentx/open9xStockeeprom.cpp - firmwares/opentx/open9xinterface.cpp firmwares/opentx/open9xGruvin9xeeprom.cpp firmwares/opentx/open9xSky9xeeprom.cpp + firmwares/opentx/opentxinterface.cpp firmwares/opentx/opentxTaranisSimulator.cpp - firmwares/opentx/open9xSky9xsimulator.cpp - firmwares/opentx/open9xGruvin9xsimulator.cpp - firmwares/opentx/open9xM128simulator.cpp - firmwares/opentx/open9xsimulator.cpp + firmwares/opentx/opentxSky9xsimulator.cpp + firmwares/opentx/opentxGruvin9xsimulator.cpp + firmwares/opentx/opentxM128simulator.cpp + firmwares/opentx/opentxsimulator.cpp firmwares/ersky9x/ersky9xeeprom.cpp firmwares/ersky9x/ersky9xinterface.cpp ${ERSKY9X_CHECKOUT_DIRECTORY}/ersky9xsimulator.cpp diff --git a/companion/src/comparedialog.cpp b/companion/src/comparedialog.cpp index f5dd1216a..48ed3f9f5 100644 --- a/companion/src/comparedialog.cpp +++ b/companion/src/comparedialog.cpp @@ -649,7 +649,8 @@ void compareDialog::printExpos() }; str += tr("Weight") + QString("%1").arg(getGVarString(ed->weight)).rightJustified(6, ' '); - str += " " + tr("Expo") + QString("%1").arg(getGVarString(ed->expo)).rightJustified(7, ' '); + str += ed->curve.toString().replace("<", "<").replace(">", ">"); + if (GetEepromInterface()->getCapability(FlightPhases)) { if(ed->phases) { if (ed->phases!=(unsigned int)(1<getCapability(FlightPhases))-1) { @@ -681,16 +682,14 @@ void compareDialog::printExpos() mask <<=1; } str += QString(")"); - } else { + } + else { str += tr("DISABLED")+QString(" !!!"); } } } if (ed->swtch.type) str += " " + tr("Switch") + QString("(%1)").arg(ed->swtch.toString()); - if (ed->curveMode) - if (ed->curveParam) - str += " " + tr("Curve") + QString("(%1)").arg(getCurveStr(ed->curveParam).replace("<", "<").replace(">", ">")); str += "

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∨KDt3hI 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 From 499092b479bb760a5c5523fe1b697241534ced82 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Sun, 22 Dec 2013 18:17:24 +0100 Subject: [PATCH 071/308] Fixes #155 --- src/targets/sky9x/adc_driver.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/targets/sky9x/adc_driver.cpp b/src/targets/sky9x/adc_driver.cpp index 1d09ef988..e3adf33a3 100644 --- a/src/targets/sky9x/adc_driver.cpp +++ b/src/targets/sky9x/adc_driver.cpp @@ -45,12 +45,12 @@ const char ana_direction[NUMBER_ANALOG] = {1, 1, 0, 1 ,0 ,1 ,0, 0, 0}; // Settings for mode register ADC_MR // USEQ off - silicon problem, doesn't work -// TRANSFER = 1 -// TRACKTIM = 4 (5 clock periods) -// ANACH = 0 -// SETTLING = 1 (not used if ANACH = 0) -// STARTUP = 1 (8 clock periods) -// PRESCAL = 3.6 MHz clock (between 1 and 20MHz) +// TRANSFER = 3 +// TRACKTIM = 15 (16 clock periods) +// ANACH = 1 +// SETTLING = 6 (not used if ANACH = 0) +// STARTUP = 6 (96 clock periods) +// PRESCAL = 9.0 MHz clock (between 1 and 20MHz) // FREERUN = 0 // FWUP = 0 // SLEEP = 0 @@ -66,7 +66,7 @@ void adcInit() // Enable peripheral clock ADC = bit 29 PMC->PMC_PCER0 |= 0x20000000L ; // Enable peripheral clock to ADC padc = ADC ; - padc->ADC_MR = 0x14110000 | timer ; // 0001 0100 0001 0001 xxxx xxxx 0000 0000 + padc->ADC_MR = 0x3FB60000 | timer ; // 0011 1111 1011 0110 xxxx xxxx 0000 0000 padc->ADC_ACR = ADC_ACR_TSON ; // Turn on temp sensor #if defined(REVA) padc->ADC_CHER = 0x0000E23E ; // channels 1,2,3,4,5,9,13,14,15 From 0f242f556569ada998da490300711740ae6e23b2 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Mon, 23 Dec 2013 10:42:57 +0100 Subject: [PATCH 072/308] [Taranis] No more audio freeze! --- src/audio_arm.cpp | 3 ++- src/targets/taranis/audio_driver.cpp | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/audio_arm.cpp b/src/audio_arm.cpp index 8b6bf9b44..428e75856 100644 --- a/src/audio_arm.cpp +++ b/src/audio_arm.cpp @@ -325,8 +325,9 @@ void AudioQueue::pushBuffer(AudioBuffer *buffer) { buffer->state = AUDIO_BUFFER_FILLED; - if (dacQueue(buffer)) + if (dacQueue(buffer)) { buffer->state = AUDIO_BUFFER_PLAYING; + } bufferWIdx = nextBufferIdx(bufferWIdx); } diff --git a/src/targets/taranis/audio_driver.cpp b/src/targets/taranis/audio_driver.cpp index d0b0508aa..5dc714fd5 100644 --- a/src/targets/taranis/audio_driver.cpp +++ b/src/targets/taranis/audio_driver.cpp @@ -95,8 +95,10 @@ void dacInit() bool dacQueue(AudioBuffer *buffer) { + __disable_irq(); if (dacIdle) { dacIdle = false; + __enable_irq(); DMA1_Stream5->CR &= ~DMA_SxCR_EN ; // Disable DMA channel DMA1->HIFCR = DMA_HIFCR_CTCIF5 | DMA_HIFCR_CHTIF5 | DMA_HIFCR_CTEIF5 | DMA_HIFCR_CDMEIF5 | DMA_HIFCR_CFEIF5 ; // Write ones to clear bits DMA1_Stream5->M0AR = CONVERT_PTR(buffer->data); @@ -107,6 +109,7 @@ bool dacQueue(AudioBuffer *buffer) return true; } else { + __enable_irq(); return false; } } From 132aa15ab6a86d0b750edc675e41c34dd2333b67 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Mon, 23 Dec 2013 15:18:00 +0100 Subject: [PATCH 073/308] [Taranis] Best fix for the audio freeze by Mike, thanks! --- src/audio_arm.cpp | 6 +++++- src/targets/taranis/audio_driver.cpp | 3 --- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/audio_arm.cpp b/src/audio_arm.cpp index 428e75856..c3d311514 100644 --- a/src/audio_arm.cpp +++ b/src/audio_arm.cpp @@ -325,11 +325,15 @@ void AudioQueue::pushBuffer(AudioBuffer *buffer) { buffer->state = AUDIO_BUFFER_FILLED; + __disable_irq(); + + bufferWIdx = nextBufferIdx(bufferWIdx); + if (dacQueue(buffer)) { buffer->state = AUDIO_BUFFER_PLAYING; } - bufferWIdx = nextBufferIdx(bufferWIdx); + __enable_irq(); } void mix(uint16_t * result, int sample, unsigned int fade) diff --git a/src/targets/taranis/audio_driver.cpp b/src/targets/taranis/audio_driver.cpp index 5dc714fd5..d0b0508aa 100644 --- a/src/targets/taranis/audio_driver.cpp +++ b/src/targets/taranis/audio_driver.cpp @@ -95,10 +95,8 @@ void dacInit() bool dacQueue(AudioBuffer *buffer) { - __disable_irq(); if (dacIdle) { dacIdle = false; - __enable_irq(); DMA1_Stream5->CR &= ~DMA_SxCR_EN ; // Disable DMA channel DMA1->HIFCR = DMA_HIFCR_CTCIF5 | DMA_HIFCR_CHTIF5 | DMA_HIFCR_CTEIF5 | DMA_HIFCR_CDMEIF5 | DMA_HIFCR_CFEIF5 ; // Write ones to clear bits DMA1_Stream5->M0AR = CONVERT_PTR(buffer->data); @@ -109,7 +107,6 @@ bool dacQueue(AudioBuffer *buffer) return true; } else { - __enable_irq(); return false; } } From b185cc7fd89983a2a52babe7566e809475d1c81a Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Fri, 27 Dec 2013 10:33:45 +0100 Subject: [PATCH 074/308] Fix for #197 (non audio chunks > 256 bytes) --- src/audio_arm.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/audio_arm.cpp b/src/audio_arm.cpp index c3d311514..8864bdf4e 100644 --- a/src/audio_arm.cpp +++ b/src/audio_arm.cpp @@ -373,10 +373,13 @@ int AudioQueue::mixWav(AudioContext &context, AudioBuffer *buffer, int volume, u result = FR_DENIED; } while (result == FR_OK && memcmp(wavSamplesPtr, "data", 4) != 0) { - result = (size < 256 ? f_read(&context.state.wav.file, wavBuffer, size+8, &read) : FR_DENIED); - if (read != size+8) result = FR_DENIED; - wavSamplesPtr = (uint32_t *)(wavBuffer + size); - size = wavSamplesPtr[1]; + result = f_lseek(&context.state.wav.file, f_tell(&context.state.wav.file)+size); + if (result == FR_OK) { + result = f_read(&context.state.wav.file, wavBuffer, 8, &read); + if (read != 8) result = FR_DENIED; + wavSamplesPtr = (uint32_t *)wavBuffer; + size = wavSamplesPtr[1]; + } } context.state.wav.size = size; } From c1778246016c5e07226f076a1a6115279e2bfdd8 Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Sat, 4 Jan 2014 18:21:08 +0100 Subject: [PATCH 075/308] Reinstate A2 alarms in D16 mode for the 3rd party adapter --- src/telemetry/frsky_sport.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/telemetry/frsky_sport.cpp b/src/telemetry/frsky_sport.cpp index 5ea7a2846..4b8c68a5f 100644 --- a/src/telemetry/frsky_sport.cpp +++ b/src/telemetry/frsky_sport.cpp @@ -576,11 +576,11 @@ void telemetryWakeup() } } else if (alarmsCheckStep == 2) { - if (alarmRaised(1, 1) && g_model.moduleData[INTERNAL_MODULE].rfProtocol == RF_PROTO_D8) { + if (alarmRaised(1, 1)) { AUDIO_A2_RED(); alarmsCheckTime = get_tmr10ms() + 300; /* next check in 3seconds */ } - else if (alarmRaised(1, 0) && g_model.moduleData[INTERNAL_MODULE].rfProtocol == RF_PROTO_D8) { + else if (alarmRaised(1, 0)) { AUDIO_A2_ORANGE(); alarmsCheckTime = get_tmr10ms() + 300; /* next check in 3seconds */ } From 4ffe49ef01fc2db191e5dfca1a6c15ac30b898d9 Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Sat, 4 Jan 2014 20:41:19 +0100 Subject: [PATCH 076/308] A2 was also disabled in custom switches in D16 mode --- src/opentx.cpp | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/opentx.cpp b/src/opentx.cpp index 6f02ebd2f..574da915f 100644 --- a/src/opentx.cpp +++ b/src/opentx.cpp @@ -1013,11 +1013,6 @@ bool getSwitch(int8_t swtch) if (cs->v1 >= MIXSRC_FIRST_TELEM) { if ((!TELEMETRY_STREAMING() && cs->v1 >= MIXSRC_FIRST_TELEM+TELEM_FIRST_STREAMED_VALUE-1) || IS_FAI_FORBIDDEN(cs->v1-1)) return swtch > 0 ? false : true; - -#if defined (PCBTARANIS) - if (cs->v1 == MIXSRC_FIRST_TELEM+TELEM_A2-1 && g_model.moduleData[INTERNAL_MODULE].rfProtocol == RF_PROTO_X16) - return swtch > 0 ? false : true; -#endif y = convertCswTelemValue(cs); From 300d6af0860fa366b54fafe908200a35a03f5b87 Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Sat, 4 Jan 2014 18:11:33 +0100 Subject: [PATCH 077/308] Avoid Telemetry Lost / Telemetry Recovered voice alerts playing back to back when using the Reset Telemetry / Flight functions --- src/telemetry/frsky_sport.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/telemetry/frsky_sport.cpp b/src/telemetry/frsky_sport.cpp index 4b8c68a5f..c5ef5c309 100644 --- a/src/telemetry/frsky_sport.cpp +++ b/src/telemetry/frsky_sport.cpp @@ -639,6 +639,7 @@ void FrskyValueWithMinMax::set(uint8_t value) void resetTelemetry() { memclear(&frskyData, sizeof(frskyData)); + telemetryState = TELEMETRY_INIT; #if defined(FRSKY_HUB) frskyData.hub.gpsLatitude_bp = 2; From 1615fd75932f14739a1897cee9362fa2d2759eda Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Sun, 5 Jan 2014 15:52:30 +0100 Subject: [PATCH 078/308] Switch CPU speed to 120MHz. Rest should not be affected. --- .../Source/Templates/system_stm32f2xx.c | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Device/ST/STM32F2xx/Source/Templates/system_stm32f2xx.c b/radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Device/ST/STM32F2xx/Source/Templates/system_stm32f2xx.c index e1d39a223..654bb5fcf 100644 --- a/radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Device/ST/STM32F2xx/Source/Templates/system_stm32f2xx.c +++ b/radio/src/targets/taranis/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Device/ST/STM32F2xx/Source/Templates/system_stm32f2xx.c @@ -3,7 +3,7 @@ * @file system_stm32f2xx.c * @author MCD Application Team * @version V1.1.0 - * @date 09-January-2013 + * @date 05-January-2014 * @brief CMSIS Cortex-M3 Device Peripheral Access Layer System Source File. * This file contains the system clock configuration for STM32F2xx devices, * and is generated by the clock configuration tool @@ -46,15 +46,15 @@ *----------------------------------------------------------------------------- * System Clock source | PLL (HSE) *----------------------------------------------------------------------------- - * SYSCLK(Hz) | 60000000 + * SYSCLK(Hz) | 120000000 *----------------------------------------------------------------------------- - * HCLK(Hz) | 60000000 + * HCLK(Hz) | 120000000 *----------------------------------------------------------------------------- * AHB Prescaler | 1 *----------------------------------------------------------------------------- - * APB1 Prescaler | 2 + * APB1 Prescaler | 4 *----------------------------------------------------------------------------- - * APB2 Prescaler | 1 + * APB2 Prescaler | 2 *----------------------------------------------------------------------------- * HSE Frequency(Hz) | 12000000 *----------------------------------------------------------------------------- @@ -62,7 +62,7 @@ *----------------------------------------------------------------------------- * PLL_N | 240 *----------------------------------------------------------------------------- - * PLL_P | 4 + * PLL_P | 2 *----------------------------------------------------------------------------- * PLL_Q | 5 *----------------------------------------------------------------------------- @@ -74,7 +74,7 @@ *----------------------------------------------------------------------------- * VDD(V) | 3.3 *----------------------------------------------------------------------------- - * Flash Latency(WS) | 2 + * Flash Latency(WS) | 3 *----------------------------------------------------------------------------- * Prefetch Buffer | ON *----------------------------------------------------------------------------- @@ -146,7 +146,7 @@ #define PLL_N 240 /* SYSCLK = PLL_VCO / PLL_P */ -#define PLL_P 4 +#define PLL_P 2 /* USB OTG FS, SDIO and RNG Clock = PLL_VCO / PLLQ */ #define PLL_Q 5 @@ -167,7 +167,7 @@ * @{ */ - uint32_t SystemCoreClock = 60000000; + uint32_t SystemCoreClock = 120000000; __I uint8_t AHBPrescTable[16] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 6, 7, 8, 9}; @@ -359,11 +359,11 @@ static void SetSysClock(void) /* HCLK = SYSCLK / 1*/ RCC->CFGR |= RCC_CFGR_HPRE_DIV1; - /* PCLK2 = HCLK / 1*/ - RCC->CFGR |= RCC_CFGR_PPRE2_DIV1; + /* PCLK2 = HCLK / 2*/ + RCC->CFGR |= RCC_CFGR_PPRE2_DIV2; - /* PCLK1 = HCLK / 2*/ - RCC->CFGR |= RCC_CFGR_PPRE1_DIV2; + /* PCLK1 = HCLK / 4*/ + RCC->CFGR |= RCC_CFGR_PPRE1_DIV4; /* Configure the main PLL */ RCC->PLLCFGR = PLL_M | (PLL_N << 6) | (((PLL_P >> 1) -1) << 16) | @@ -378,7 +378,7 @@ static void SetSysClock(void) } /* Configure Flash prefetch, Instruction cache, Data cache and wait state */ - FLASH->ACR = FLASH_ACR_PRFTEN |FLASH_ACR_ICEN |FLASH_ACR_DCEN |FLASH_ACR_LATENCY_2WS; + FLASH->ACR = FLASH_ACR_PRFTEN |FLASH_ACR_ICEN |FLASH_ACR_DCEN |FLASH_ACR_LATENCY_3WS; /* Select the main PLL as system clock source */ RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW)); From 8dcd1da9190559484286908aedc70f9412132414 Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Sun, 5 Jan 2014 20:42:59 +0100 Subject: [PATCH 079/308] Some timers are receiving 120MHz --- radio/src/targets/taranis/board_taranis.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/radio/src/targets/taranis/board_taranis.h b/radio/src/targets/taranis/board_taranis.h index 9c492c32d..1de2f354d 100644 --- a/radio/src/targets/taranis/board_taranis.h +++ b/radio/src/targets/taranis/board_taranis.h @@ -60,7 +60,7 @@ extern "C" { #define PERI1_FREQUENCY 30000000 #define PERI2_FREQUENCY 60000000 #define TIMER_MULT_APB1 2 -#define TIMER_MULT_APB2 1 +#define TIMER_MULT_APB2 2 #define JACK_PPM_OUT() #define JACK_PPM_IN() From d19f50772e258712be8aeaba1f61344721e1a200 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Sun, 5 Jan 2014 20:57:12 +0100 Subject: [PATCH 080/308] Update DONATIONS.txt --- DONATIONS.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/DONATIONS.txt b/DONATIONS.txt index 3c1fa360a..49eab321a 100644 --- a/DONATIONS.txt +++ b/DONATIONS.txt @@ -271,3 +271,4 @@ Henrik Hammarström Kenneth Lilja (monthly) R Wells Uwe Jordt +Harald Wilczak From 8d1d4567219feb6ed1467537710797a6dd4415e7 Mon Sep 17 00:00:00 2001 From: mhotar Date: Sun, 5 Jan 2014 22:39:46 +0100 Subject: [PATCH 081/308] layout fix of displayHeaderChannelName --- radio/src/gui/menu_model.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/radio/src/gui/menu_model.cpp b/radio/src/gui/menu_model.cpp index e4af21281..7cbcd3d84 100644 --- a/radio/src/gui/menu_model.cpp +++ b/radio/src/gui/menu_model.cpp @@ -3316,8 +3316,8 @@ void displayHeaderChannelName(uint8_t ch) uint8_t len = zlen(g_model.limitData[ch-1].name, sizeof(g_model.limitData[ch-1].name)); if (len) { lcd_putc(17*FW, 0, ' '); - lcd_putsnAtt(18*FW, 0, g_model.limitData[ch-1].name, len, ZCHAR); - lcd_putc(18*FW+len*FW, 0, ' '); + lcd_putsnAtt(lcdNextPos, 0, g_model.limitData[ch-1].name, len, ZCHAR); + lcd_putc(lcdNextPos, 0, ' '); } } #endif From bddfa3938a906e59f937157558fa05436654e867 Mon Sep 17 00:00:00 2001 From: mhotar Date: Mon, 6 Jan 2014 00:29:32 +0100 Subject: [PATCH 082/308] STD font bitmaps --- radio/src/fonts/std/font_04x06.lbm | 6 +++--- radio/src/fonts/std/font_04x06.png | Bin 585 -> 585 bytes radio/src/fonts/std/font_05x07.lbm | 10 +++++----- radio/src/fonts/std/font_05x07.png | Bin 636 -> 636 bytes radio/src/fonts/std/font_08x10.lbm | 10 +++++----- radio/src/fonts/std/font_08x10.png | Bin 836 -> 868 bytes radio/src/fonts/std/font_10x14_compressed.lbm | 2 +- radio/src/fonts/std/font_10x14_compressed.png | Bin 1517 -> 1527 bytes radio/src/fonts/std/font_cz_04x06.lbm | 2 +- radio/src/fonts/std/font_cz_04x06.png | Bin 223 -> 223 bytes radio/src/fonts/std/font_cz_05x07.lbm | 2 +- radio/src/fonts/std/font_cz_05x07.png | Bin 243 -> 243 bytes radio/src/fonts/std/font_cz_08x10.lbm | 2 +- radio/src/fonts/std/font_cz_08x10.png | Bin 314 -> 316 bytes radio/src/fonts/std/font_cz_10x14.lbm | 2 +- radio/src/fonts/std/font_cz_10x14.png | Bin 423 -> 423 bytes radio/src/fonts/std/font_fr_04x06.lbm | 2 +- radio/src/fonts/std/font_fr_04x06.png | Bin 3575 -> 3576 bytes radio/src/fonts/std/font_fr_05x07.lbm | 2 +- radio/src/fonts/std/font_fr_05x07.png | Bin 176 -> 176 bytes radio/src/fonts/std/font_fr_08x10.lbm | 2 +- radio/src/fonts/std/font_fr_08x10.png | Bin 3619 -> 3620 bytes radio/src/fonts/std/font_fr_10x14.lbm | 2 +- radio/src/fonts/std/font_fr_10x14.png | Bin 246 -> 247 bytes radio/src/fonts/std/font_pl_05x07.lbm | 2 +- radio/src/fonts/std/font_pl_05x07.png | Bin 251 -> 251 bytes radio/src/fonts/std/font_pl_08x10.lbm | 2 +- radio/src/fonts/std/font_pl_08x10.png | Bin 333 -> 342 bytes radio/src/fonts/std/font_pl_10x14.lbm | 2 +- radio/src/fonts/std/font_pl_10x14.png | Bin 422 -> 423 bytes radio/src/fonts/std/font_pt_05x07.lbm | 2 +- radio/src/fonts/std/font_pt_05x07.png | Bin 247 -> 248 bytes radio/src/fonts/std/font_pt_08x10.lbm | 2 +- radio/src/fonts/std/font_pt_08x10.png | Bin 326 -> 330 bytes radio/src/fonts/std/font_pt_10x14.lbm | 2 +- radio/src/fonts/std/font_pt_10x14.png | Bin 452 -> 451 bytes 36 files changed, 28 insertions(+), 28 deletions(-) diff --git a/radio/src/fonts/std/font_04x06.lbm b/radio/src/fonts/std/font_04x06.lbm index 3936032a7..852037f54 100644 --- a/radio/src/fonts/std/font_04x06.lbm +++ b/radio/src/fonts/std/font_04x06.lbm @@ -1,6 +1,6 @@ -0x00,0x00,0x7f,0x7f,0x7f,0x2f,0x7f,0x7f,0x7f,0x7f,0x07,0x00,0x07,0x7f,0x7f,0x14,0x3e,0x14,0x3e,0x14,0x04,0x2a,0x3e,0x2a,0x10,0x13,0x08,0x04,0x32,0x7f,0x14,0x2a,0x14,0x20,0x7f,0x07,0x7f,0x7f,0x7f,0x7f,0x1e,0x21,0x7f,0x7f,0x7f,0x21,0x1e,0x7f,0x7f,0x7f,0x2a,0x1c,0x2a,0x7f,0x7f,0x08,0x08,0x3e,0x08,0x08,0x40,0x30,0x10,0x7f,0x7f,0x08,0x08,0x08,0x08,0x7f,0x00,0x30,0x30,0x7f,0x7f,0x10,0x08,0x04,0x02,0x7f, -0x1e,0x21,0x21,0x1e,0x7f,0x00,0x22,0x3f,0x20,0x7f,0x22,0x31,0x29,0x26,0x7f,0x11,0x25,0x25,0x1b,0x7f,0x0c,0x0a,0x3f,0x08,0x7f,0x17,0x25,0x25,0x19,0x7f,0x1e,0x25,0x25,0x18,0x7f,0x01,0x31,0x0d,0x03,0x7f,0x1a,0x25,0x25,0x1a,0x7f,0x06,0x29,0x29,0x1e,0x7f,0x36,0x36,0x00,0x7f,0x7f,0x76,0x16,0x00,0x3f,0x7f,0x08,0x14,0x22,0x7f,0x7f,0x14,0x14,0x14,0x14,0x7f,0x00,0x22,0x14,0x08,0x7f,0x00,0x02,0x29,0x06,0x7f, +0x00,0x00,0x7f,0x7f,0x7f,0x7f,0x7f,0x2f,0x7f,0x7f,0x7f,0x07,0x00,0x07,0x7f,0x14,0x3e,0x14,0x3e,0x14,0x04,0x2a,0x3e,0x2a,0x10,0x13,0x08,0x04,0x32,0x7f,0x14,0x2a,0x14,0x20,0x7f,0x7f,0x07,0x7f,0x7f,0x7f,0x7f,0x1e,0x21,0x7f,0x7f,0x7f,0x21,0x1e,0x7f,0x7f,0x7f,0x2a,0x1c,0x2a,0x7f,0x08,0x08,0x3e,0x08,0x08,0x7f,0x40,0x30,0x10,0x7f,0x08,0x08,0x08,0x08,0x7f,0x00,0x30,0x30,0x7f,0x7f,0x10,0x08,0x04,0x02,0x7f, +0x1e,0x21,0x21,0x1e,0x7f,0x00,0x22,0x3f,0x20,0x7f,0x22,0x31,0x29,0x26,0x7f,0x11,0x25,0x25,0x1b,0x7f,0x0c,0x0a,0x3f,0x08,0x7f,0x17,0x25,0x25,0x19,0x7f,0x1e,0x25,0x25,0x18,0x7f,0x01,0x31,0x0d,0x03,0x7f,0x1a,0x25,0x25,0x1a,0x7f,0x06,0x29,0x29,0x1e,0x7f,0x7f,0x36,0x36,0x00,0x7f,0x7f,0x76,0x16,0x00,0x7f,0x7f,0x08,0x14,0x22,0x7f,0x14,0x14,0x14,0x14,0x7f,0x7f,0x22,0x14,0x08,0x7f,0x7f,0x02,0x29,0x06,0x7f, 0x02,0x05,0x02,0x7f,0x7f,0x3e,0x09,0x09,0x3e,0x7f,0x3f,0x25,0x25,0x1a,0x7f,0x1e,0x21,0x21,0x12,0x7f,0x3f,0x21,0x21,0x1e,0x7f,0x3f,0x25,0x25,0x21,0x7f,0x3f,0x05,0x05,0x01,0x7f,0x1e,0x21,0x29,0x3a,0x7f,0x3f,0x04,0x04,0x3f,0x7f,0x21,0x3f,0x21,0x7f,0x7f,0x10,0x20,0x20,0x1f,0x7f,0x3f,0x0c,0x12,0x21,0x7f,0x3f,0x20,0x20,0x20,0x7f,0x3f,0x02,0x04,0x02,0x3f,0x3f,0x06,0x18,0x3f,0x7f,0x1e,0x21,0x21,0x1e,0x7f, 0x3f,0x09,0x09,0x06,0x7f,0x1e,0x31,0x21,0x5e,0x7f,0x3f,0x09,0x19,0x26,0x7f,0x12,0x25,0x29,0x12,0x7f,0x01,0x3f,0x01,0x7f,0x7f,0x1f,0x20,0x20,0x1f,0x7f,0x0f,0x30,0x30,0x0f,0x7f,0x3f,0x18,0x0c,0x18,0x3f,0x33,0x0c,0x0c,0x33,0x7f,0x07,0x38,0x07,0x7f,0x7f,0x31,0x29,0x25,0x23,0x7f,0x3f,0x21,0x21,0x7f,0x7f,0x02,0x04,0x08,0x10,0x7f,0x21,0x21,0x3f,0x7f,0x7f,0x02,0x01,0x02,0x7f,0x7f,0x20,0x20,0x20,0x20,0x7f, 0x01,0x02,0x7f,0x7f,0x7f,0x18,0x24,0x14,0x3c,0x7f,0x3f,0x24,0x24,0x18,0x7f,0x18,0x24,0x24,0x7f,0x7f,0x18,0x24,0x24,0x3f,0x7f,0x18,0x34,0x2c,0x08,0x7f,0x08,0x3e,0x09,0x02,0x7f,0x28,0x54,0x54,0x4c,0x7f,0x3f,0x04,0x04,0x38,0x7f,0x24,0x3d,0x20,0x7f,0x7f,0x20,0x40,0x3d,0x7f,0x7f,0x3f,0x08,0x14,0x20,0x7f,0x21,0x3f,0x20,0x7f,0x7f,0x3c,0x08,0x38,0x0c,0x38,0x3c,0x04,0x04,0x38,0x7f,0x18,0x24,0x24,0x18,0x7f, -0x7c,0x24,0x24,0x18,0x7f,0x18,0x24,0x24,0x7c,0x7f,0x3c,0x04,0x04,0x08,0x7f,0x28,0x2c,0x34,0x14,0x7f,0x04,0x1f,0x24,0x20,0x7f,0x1c,0x20,0x20,0x3c,0x7f,0x1c,0x20,0x1c,0x7f,0x7f,0x3c,0x30,0x18,0x30,0x3c,0x24,0x18,0x18,0x24,0x7f,0x0c,0x50,0x20,0x1c,0x7f,0x24,0x34,0x2c,0x24,0x7f,0x04,0x1e,0x21,0x7f,0x7f,0x3f,0x7f,0x7f,0x7f,0x7f,0x21,0x1e,0x04,0x7f,0x7f,0x08,0x2a,0x1c,0x08,0x7f,0x08,0x1c,0x2a,0x08,0x7f, +0x7c,0x24,0x24,0x18,0x7f,0x18,0x24,0x24,0x7c,0x7f,0x3c,0x04,0x04,0x08,0x7f,0x28,0x2c,0x34,0x14,0x7f,0x04,0x1f,0x24,0x20,0x7f,0x1c,0x20,0x20,0x3c,0x7f,0x1c,0x20,0x1c,0x7f,0x7f,0x3c,0x30,0x18,0x30,0x3c,0x24,0x18,0x18,0x24,0x7f,0x0c,0x50,0x20,0x1c,0x7f,0x24,0x34,0x2c,0x24,0x7f,0x04,0x1e,0x21,0x7f,0x7f,0x7f,0x3f,0x7f,0x7f,0x7f,0x21,0x1e,0x04,0x7f,0x7f,0x08,0x2a,0x1c,0x08,0x7f,0x08,0x1c,0x2a,0x08,0x7f, diff --git a/radio/src/fonts/std/font_04x06.png b/radio/src/fonts/std/font_04x06.png index ac747c8cb058cdd69be783f0e5cc52d569e6eebb..ebbfa7a1042ca02b1719882cf3f0295c1f80d2ae 100644 GIT binary patch delta 499 zcmVrP1fA;}L+3(f!7!GhoY&xLC zxxIQ0!vPM~mkvsz+pA|W9FUE;bwY`Oop~C=K^a~{4<*qpReT`PPaTe&TdU+44$A)j zeIi-*Gth)-OL&d5R%r=1I#t$t-FWM;Ov}s&Yh4W`9v-^kGQbdZ2Jtip=B6 zE{3!r)r84j{H!ys+eOG<|yY2bnc?|Az&sE2j8ax7;+dlVP)x2_xS3u?wRt~QV zf(ENhf*1}<98>T~HOOM@VK^jlOzKjq!79xjhND0Q=WG%L4roqdIKKCM^@Z=6?||CA z?|of8|NGtsV>r_x=oW(rE2AM_GJ}J27|^}hhFp_P9Re5_l4ZLM8K&ww1cxz*$mlq= pq%}4e-C`)WeP2EQ>)s>9_W)o|x}_pIa~=Qy002ovPDHLkV1fxi>Hz=% delta 499 zcmVlrAfA@hV%YW7L7!C+VY&zf~ zxUYH+!vO)-mkutP`>JO#9I%YIb-{&!k9iuy5er_!02j?2ReT`PPZOF1cU8$T9I^cW z`@%8HZ$J~KE#YNyn6mR+^(}^!nI|ppBy;#wU13Pusmc*GnSaBJIffx^>w&^qDVE28 z=BBMVYd9?(C>qBwg;CclY)Z$Os#^@-_r9;b_kG8^>U#`JS``_D5-g5ePGWGDIA(b! z)nd6o55r=XXB>X47U>#23=brpS)NF>NVnu+cnnq`u^hx?Rb;%7pmG4H?K#*m+xPYN z7(`kX4EvH8_@7xkHLNJx$3x5gGWGf+vlFEnpbY|3dlUd%HefE z&|sBG5W``KV+ua023d?f42L9+NnJ`cSf$y+a1^NETx^2C0nJGa$M>GEzVKc19Z=i% zy|1h1f8X0+3}-q7-C_`7Wi;eVW^iy01G+cckZZE3LjVIqvTU~@!&F^|;4lUe86BsV pw8jRbTMXs4@2ls3-Fu?=9sq7}zh}*O0@?li1pEY$VSg448ooJJhyVZq{7FPXR4C75IKcU1UP9vjZ#DB74sgDhxgu!$ zwwifB=83N<#-iJ5<}w_RnUMF!Sc%PHHp4*~i@QF?q8n4pU|vuf52SGV_e(oMZ;Je}Cr~(srKWyp_zr+8oD_ zwpFblY>LF;|8p7A)*dLFmJSq+W=NZR&Tv{U-a3 z9RCj#brx(8EHHR(d66M`&a=JmigsNWJO^Zcw|!rPWc12REsXMbI{Jjd|4S+Ma#f!YJ03E%$%!SDV5>;E(GI15;wD{jy~T*pv6=k3mO z#e1HA+6QF*-Fa^HuGb&$F>p7_?mTz5?Cs}&3{}(L?mV^b-8&$&I_mANRb}_y7yo0Z znJas|wCsTX;Rg)=A>jS*e+=gL|JU1B?RW^ZBK-dUx_=ARd!7QBDZ!F%?>sgf6*Xii z@A+ntXS8D}(CH;I-0@?li1pEY$VSfP;4qN?dT>t<9{7FPXR4C75I3W0AUczDfKXvj92LxZt+_2Pq zPn{f)dE#qEn&_T7S%w1^6Y_qfDe*W-GaRw7xEqlsx}i>-;echu#vMz|chvC%nLj>7 z9Jc>bBhPTe^8f!I&%uUGTcXG0FlA$3?L~%^nP)8LBs1{VoquCU+j)xfRx$%Oa~wn3 zR<(k#DTeL!a~aas9w?la4it@MNSk}ka9Ua;Z{2-{DGYjEVN*Bs)!t_KzW06gz3&_Q z>w%)qf(?QN2G1=oG9=G=w)b7B)pfyhK<0Pb_oY_bHO?_iVEWFY!D>~m>BsOHC<;`t z-LenJ1gVv}Zhv`>;d8TK%!|Nk4r zeqfDYMprZNOcn$>z41Zzc7|e}-$1ADb|`3J;E|W!dG3zc0-$L9{MSaS)~|mMT+L8F oPv&%Ki67$w?f)?MzNr2W0Ba8x&B~IyrT_o{07*qoM6N<$f`i8!7XSbN diff --git a/radio/src/fonts/std/font_08x10.lbm b/radio/src/fonts/std/font_08x10.lbm index fffe7cd99..3b1c1ca3c 100644 --- a/radio/src/fonts/std/font_08x10.lbm +++ b/radio/src/fonts/std/font_08x10.lbm @@ -1,6 +1,6 @@ -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x0f,0xff,0x0f,0xff,0x0f,0xff,0x0f,0xfe,0x05,0xfe,0x05,0xff,0x0f,0xff,0x0f,0xff,0x0f,0xff,0x0f,0xff,0x0f,0xff,0x0f,0x0e,0x00,0x0e,0x00,0x00,0x00,0x0e,0x00,0x0e,0x00,0xff,0x0f,0xff,0x0f,0xff,0x0f,0x90,0x00,0xfc,0x03,0xfc,0x03,0x90,0x00,0xfc,0x03,0xfc,0x03,0x90,0x00,0xff,0x0f,0x38,0x02,0x7c,0x06,0x64,0x04,0xfe,0x0f,0xc4,0x04,0xcc,0x07,0x88,0x03,0xff,0x0f,0x0c,0x04,0x1e,0x07,0x8c,0x03,0xe0,0x00,0x70,0x00,0x1c,0x03,0x8e,0x07,0x02,0x03,0x80,0x03,0xdc,0x07,0x7e,0x04,0x72,0x04,0xde,0x06,0x8c,0x03,0x80,0x07,0xc0,0x04,0x1e,0x00,0x1e,0x00,0xff,0x0f,0xff,0x0f,0xff,0x0f,0xff,0x0f,0xff,0x0f,0xff,0x0f,0xf0,0x00,0xfc,0x03,0x0e,0x07,0x03,0x0c,0x01,0x08,0xff,0x0f,0xff,0x0f,0xff,0x0f,0x01,0x08,0x03,0x0c,0x0e,0x07,0xfc,0x03,0xf0,0x00,0xff,0x0f,0xff,0x0f,0xff,0x0f,0x40,0x00,0x50,0x01,0xf0,0x01,0xe0,0x00,0xf0,0x01,0x50,0x01,0x40,0x00,0xff,0x0f,0x40,0x00,0x40,0x00,0xf0,0x01,0x40,0x00,0x40,0x00,0xff,0x0f,0xff,0x0f,0xff,0x0f,0x80,0x09,0x80,0x0f,0x80,0x07,0xff,0x0f,0xff,0x0f,0xff,0x0f,0xff,0x0f,0xff,0x0f,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0xff,0x0f,0xff,0x0f,0xff,0x0f,0x00,0x04,0x00,0x0e,0x00,0x0e,0x00,0x04,0xff,0x0f,0xff,0x0f,0xff,0x0f,0xff,0x0f,0x00,0x04,0x00,0x07,0x80,0x03,0xe0,0x00,0x70,0x00,0x1c,0x00,0x0e,0x00,0x02,0x00, -0xfc,0x03,0xfe,0x07,0x02,0x04,0x02,0x04,0xfe,0x07,0xfc,0x03,0xff,0x0f,0xff,0x0f,0x08,0x04,0x0c,0x04,0xfe,0x07,0xfe,0x07,0x00,0x04,0x00,0x04,0xff,0x0f,0xff,0x0f,0x0c,0x06,0x0e,0x07,0x82,0x05,0xe2,0x04,0x7e,0x04,0x1c,0x04,0xff,0x0f,0xff,0x0f,0x0c,0x03,0x0e,0x07,0x22,0x04,0x22,0x04,0xfe,0x07,0xdc,0x03,0xff,0x0f,0xff,0x0f,0xc0,0x01,0xe0,0x01,0x30,0x01,0xfc,0x07,0xfe,0x07,0x00,0x01,0xff,0x0f,0xff,0x0f,0x3e,0x03,0x3e,0x07,0x12,0x04,0x12,0x04,0xf2,0x07,0xe2,0x03,0xff,0x0f,0xff,0x0f,0xf8,0x03,0xfc,0x07,0x26,0x04,0x22,0x04,0xee,0x07,0xcc,0x03,0xff,0x0f,0xff,0x0f,0x0e,0x00,0x0e,0x00,0xe2,0x07,0xfa,0x07,0x1e,0x00,0x06,0x00,0xff,0x0f,0xff,0x0f,0x9c,0x03,0xfe,0x07,0x62,0x04,0x62,0x04,0xfe,0x07,0x9c,0x03,0xff,0x0f,0xff,0x0f,0x3c,0x03,0x7e,0x07,0x42,0x04,0x42,0x06,0xfe,0x03,0xfc,0x01,0xff,0x0f,0xff,0x0f,0x18,0x03,0x18,0x03,0xff,0x0f,0xff,0x0f,0xff,0x0f,0xff,0x0f,0xff,0x0f,0xff,0x0f,0x08,0x00,0x9c,0x09,0x9c,0x0f,0x88,0x07,0xff,0x0f,0xff,0x0f,0xff,0x0f,0xff,0x0f,0x60,0x00,0xf0,0x00,0x98,0x01,0x0c,0x03,0x06,0x06,0x02,0x04,0xff,0x0f,0xfe,0x0f,0x20,0x01,0x20,0x01,0x20,0x01,0x20,0x01,0x20,0x01,0x20,0x01,0xff,0x0f,0xff,0x0f,0x02,0x04,0x06,0x06,0x0c,0x03,0x98,0x01,0xf0,0x00,0x60,0x00,0xff,0x0f,0xff,0x0f,0x0c,0x00,0x0e,0x00,0x82,0x06,0xc2,0x06,0x62,0x00,0x3e,0x00,0x1c,0x00,0xff,0x0f, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x0f,0xff,0x0f,0xff,0x0f,0xff,0x0f,0xff,0x0f,0xff,0x0f,0xfe,0x05,0xfe,0x05,0xff,0x0f,0xff,0x0f,0xff,0x0f,0xff,0x0f,0xff,0x0f,0x0e,0x00,0x0e,0x00,0x00,0x00,0x0e,0x00,0x0e,0x00,0xff,0x0f,0xff,0x0f,0x90,0x00,0xfc,0x03,0xfc,0x03,0x90,0x00,0xfc,0x03,0xfc,0x03,0x90,0x00,0xff,0x0f,0x38,0x02,0x7c,0x06,0x64,0x04,0xfe,0x0f,0xc4,0x04,0xcc,0x07,0x88,0x03,0xff,0x0f,0x0c,0x04,0x1e,0x07,0x8c,0x03,0xe0,0x00,0x70,0x00,0x1c,0x03,0x8e,0x07,0x02,0x03,0x80,0x03,0xdc,0x07,0x7e,0x04,0x72,0x04,0xde,0x06,0x8c,0x03,0x80,0x07,0xc0,0x04,0xff,0x0f,0xff,0x0f,0x1e,0x00,0x1e,0x00,0xff,0x0f,0xff,0x0f,0xff,0x0f,0xff,0x0f,0xff,0x0f,0xf0,0x00,0xfc,0x03,0x0e,0x07,0x03,0x0c,0x01,0x08,0xff,0x0f,0xff,0x0f,0xff,0x0f,0x01,0x08,0x03,0x0c,0x0e,0x07,0xfc,0x03,0xf0,0x00,0xff,0x0f,0xff,0x0f,0x40,0x00,0x50,0x01,0xf0,0x01,0xe0,0x00,0xf0,0x01,0x50,0x01,0x40,0x00,0xff,0x0f,0xff,0x0f,0x40,0x00,0x40,0x00,0xf0,0x01,0x40,0x00,0x40,0x00,0xff,0x0f,0xff,0x0f,0xff,0x0f,0x80,0x09,0x80,0x0f,0x80,0x07,0xff,0x0f,0xff,0x0f,0xff,0x0f,0xff,0x0f,0xff,0x0f,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0xff,0x0f,0xff,0x0f,0xff,0x0f,0x00,0x04,0x00,0x0e,0x00,0x0e,0x00,0x04,0xff,0x0f,0xff,0x0f,0xff,0x0f,0x00,0x04,0x00,0x07,0x80,0x03,0xe0,0x00,0x70,0x00,0x1c,0x00,0x0e,0x00,0x02,0x00, +0xff,0x0f,0xfc,0x03,0xfe,0x07,0x02,0x04,0x02,0x04,0xfe,0x07,0xfc,0x03,0xff,0x0f,0xff,0x0f,0x08,0x04,0x0c,0x04,0xfe,0x07,0xfe,0x07,0x00,0x04,0x00,0x04,0xff,0x0f,0xff,0x0f,0x0c,0x06,0x0e,0x07,0x82,0x05,0xe2,0x04,0x7e,0x04,0x1c,0x04,0xff,0x0f,0xff,0x0f,0x0c,0x03,0x0e,0x07,0x22,0x04,0x22,0x04,0xfe,0x07,0xdc,0x03,0xff,0x0f,0xff,0x0f,0xc0,0x01,0xe0,0x01,0x30,0x01,0xfc,0x07,0xfe,0x07,0x00,0x01,0xff,0x0f,0xff,0x0f,0x3e,0x03,0x3e,0x07,0x12,0x04,0x12,0x04,0xf2,0x07,0xe2,0x03,0xff,0x0f,0xff,0x0f,0xf8,0x03,0xfc,0x07,0x26,0x04,0x22,0x04,0xee,0x07,0xcc,0x03,0xff,0x0f,0xff,0x0f,0x0e,0x00,0x0e,0x00,0xe2,0x07,0xfa,0x07,0x1e,0x00,0x06,0x00,0xff,0x0f,0xff,0x0f,0x9c,0x03,0xfe,0x07,0x62,0x04,0x62,0x04,0xfe,0x07,0x9c,0x03,0xff,0x0f,0xff,0x0f,0x3c,0x03,0x7e,0x07,0x42,0x04,0x42,0x06,0xfe,0x03,0xfc,0x01,0xff,0x0f,0xff,0x0f,0xff,0x0f,0x18,0x03,0x18,0x03,0xff,0x0f,0xff,0x0f,0xff,0x0f,0xff,0x0f,0xff,0x0f,0x08,0x00,0x9c,0x09,0x9c,0x0f,0x88,0x07,0xff,0x0f,0xff,0x0f,0xff,0x0f,0xff,0x0f,0x60,0x00,0xf0,0x00,0x98,0x01,0x0c,0x03,0x06,0x06,0x02,0x04,0xff,0x0f,0xff,0x0f,0x20,0x01,0x20,0x01,0x20,0x01,0x20,0x01,0x20,0x01,0x20,0x01,0xff,0x0f,0xff,0x0f,0x02,0x04,0x06,0x06,0x0c,0x03,0x98,0x01,0xf0,0x00,0x60,0x00,0xff,0x0f,0x0c,0x00,0x0e,0x00,0x82,0x06,0xc2,0x06,0x62,0x00,0x3e,0x00,0x1c,0x00,0xff,0x0f, 0x0c,0x00,0x1e,0x00,0x12,0x00,0x12,0x00,0x1e,0x00,0x0c,0x00,0xff,0x0f,0xff,0x0f,0xf0,0x07,0xf8,0x07,0x8c,0x00,0x86,0x00,0x86,0x00,0x8c,0x00,0xf8,0x07,0xf0,0x07,0xfe,0x07,0xfe,0x07,0x22,0x04,0x22,0x04,0x22,0x04,0x76,0x06,0xdc,0x03,0x88,0x01,0xf8,0x01,0xfc,0x03,0x06,0x06,0x02,0x04,0x02,0x04,0x02,0x04,0x06,0x06,0x0c,0x03,0xfe,0x07,0xfe,0x07,0x02,0x04,0x02,0x04,0x02,0x04,0x06,0x06,0xfc,0x03,0xf8,0x01,0xfe,0x07,0xfe,0x07,0x22,0x04,0x22,0x04,0x22,0x04,0x22,0x04,0x02,0x04,0xff,0x0f,0xfe,0x07,0xfe,0x07,0x22,0x00,0x22,0x00,0x22,0x00,0x22,0x00,0x02,0x00,0x02,0x00,0xf8,0x01,0xfc,0x03,0x06,0x06,0x02,0x04,0x02,0x04,0x42,0x04,0xc6,0x07,0xc4,0x03,0xfe,0x07,0xfe,0x07,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0xfe,0x07,0xfe,0x07,0x02,0x04,0x02,0x04,0xfe,0x07,0xfe,0x07,0x02,0x04,0x02,0x04,0xff,0x0f,0xff,0x0f,0x00,0x03,0x00,0x06,0x02,0x04,0x02,0x06,0xfe,0x03,0xfe,0x01,0xff,0x0f,0xff,0x0f,0xfe,0x07,0xfe,0x07,0x60,0x00,0xf0,0x00,0x98,0x01,0x0c,0x03,0x06,0x06,0x02,0x04,0xfe,0x07,0xfe,0x07,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0xff,0x0f,0xfe,0x07,0xfe,0x07,0x0c,0x00,0x78,0x00,0x78,0x00,0x0c,0x00,0xfe,0x07,0xfe,0x07,0xfe,0x07,0xfe,0x07,0x1c,0x00,0x78,0x00,0xe0,0x00,0x80,0x03,0xfe,0x07,0xfe,0x07,0xf8,0x01,0xfc,0x03,0x06,0x06,0x02,0x04,0x02,0x04,0x06,0x06,0xfc,0x03,0xf8,0x01, -0xfe,0x07,0xfe,0x07,0x22,0x00,0x22,0x00,0x22,0x00,0x22,0x00,0x3e,0x00,0x1c,0x00,0xf8,0x01,0xfc,0x03,0x06,0x06,0x82,0x04,0x82,0x05,0x06,0x07,0xfc,0x03,0xf8,0x05,0xfe,0x07,0xfe,0x07,0x62,0x00,0x62,0x00,0xe2,0x00,0xa2,0x01,0x3e,0x07,0x1c,0x06,0x1c,0x02,0x3e,0x06,0x22,0x04,0x22,0x04,0x22,0x04,0x22,0x04,0xe6,0x07,0xc4,0x03,0x02,0x00,0x02,0x00,0x02,0x00,0xfe,0x07,0xfe,0x07,0x02,0x00,0x02,0x00,0x02,0x00,0xfe,0x01,0xfe,0x03,0x00,0x06,0x00,0x04,0x00,0x04,0x00,0x06,0xfe,0x03,0xfe,0x01,0x0e,0x00,0x7e,0x00,0xf0,0x01,0x80,0x07,0x80,0x07,0xf0,0x01,0x7e,0x00,0x0e,0x00,0xfe,0x07,0xfe,0x07,0x00,0x03,0xe0,0x01,0xe0,0x01,0x00,0x03,0xfe,0x07,0xfe,0x07,0x06,0x06,0x0e,0x07,0x98,0x01,0xf0,0x00,0xf0,0x00,0x98,0x01,0x0e,0x07,0x06,0x06,0x06,0x00,0x0e,0x00,0x18,0x00,0xf0,0x07,0xf0,0x07,0x18,0x00,0x0e,0x00,0x06,0x00,0x02,0x07,0x82,0x07,0xc2,0x04,0x62,0x04,0x32,0x04,0x1e,0x04,0x0e,0x04,0xff,0x0f,0xfe,0x07,0xfe,0x07,0x02,0x04,0x02,0x04,0x02,0x04,0xff,0x0f,0xff,0x0f,0xff,0x0f,0x02,0x00,0x0e,0x00,0x1c,0x00,0x70,0x00,0xe0,0x00,0x80,0x03,0x00,0x07,0x00,0x04,0x02,0x04,0x02,0x04,0x02,0x04,0xfe,0x07,0xfe,0x07,0xff,0x0f,0xff,0x0f,0xff,0x0f,0x18,0x00,0x0c,0x00,0x06,0x00,0x06,0x00,0x0c,0x00,0x18,0x00,0xff,0x0f,0xff,0x0f,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08, -0x01,0x00,0x03,0x00,0x06,0x00,0x04,0x00,0xff,0x0f,0xff,0x0f,0xff,0x0f,0xff,0x0f,0x00,0x03,0xa0,0x07,0xb0,0x04,0x90,0x04,0x90,0x02,0xf0,0x07,0xe0,0x07,0xff,0x0f,0xfe,0x07,0xfe,0x07,0x20,0x02,0x10,0x04,0x30,0x06,0xe0,0x03,0xc0,0x01,0xff,0x0f,0xc0,0x01,0xe0,0x03,0x30,0x06,0x10,0x04,0x10,0x04,0x30,0x06,0x20,0x02,0xff,0x0f,0xc0,0x01,0xe0,0x03,0x30,0x06,0x10,0x04,0x20,0x02,0xfe,0x07,0xfe,0x07,0xff,0x0f,0xc0,0x01,0xe0,0x03,0xb0,0x06,0x90,0x04,0xb0,0x04,0xe0,0x06,0xc0,0x02,0xff,0x0f,0x40,0x00,0x40,0x00,0xfc,0x07,0xfe,0x07,0x42,0x00,0x0e,0x00,0x0c,0x00,0xff,0x0f,0x60,0x05,0xf0,0x0f,0x90,0x0a,0x90,0x0a,0xf0,0x0a,0x60,0x0e,0x30,0x04,0xff,0x0f,0xfe,0x07,0xfe,0x07,0x20,0x00,0x10,0x00,0x30,0x00,0xe0,0x07,0xc0,0x07,0xff,0x0f,0x00,0x04,0x10,0x04,0xf6,0x07,0xf6,0x07,0x00,0x04,0x00,0x04,0xff,0x0f,0xff,0x0f,0x00,0x07,0x00,0x0f,0x00,0x08,0x10,0x08,0x10,0x08,0xf6,0x0f,0xf6,0x07,0xff,0x0f,0xfe,0x07,0xfe,0x07,0xc0,0x01,0x60,0x03,0x30,0x06,0x00,0x04,0xff,0x0f,0xff,0x0f,0x00,0x04,0x02,0x04,0xfe,0x07,0xfe,0x07,0x00,0x04,0x00,0x04,0xff,0x0f,0xff,0x0f,0xf0,0x07,0xe0,0x07,0x10,0x00,0xe0,0x07,0x10,0x00,0xf0,0x07,0xe0,0x07,0xff,0x0f,0xf0,0x07,0xf0,0x07,0x20,0x00,0x10,0x00,0x30,0x00,0xe0,0x07,0xc0,0x07,0xff,0x0f,0xc0,0x01,0xe0,0x03,0x30,0x06,0x10,0x04,0x30,0x06,0xe0,0x03,0xc0,0x01,0xff,0x0f, -0xf0,0x0f,0xf0,0x0f,0x10,0x01,0x10,0x01,0xb0,0x01,0xe0,0x00,0xc0,0x00,0xff,0x0f,0xc0,0x00,0xe0,0x00,0xb0,0x01,0x10,0x01,0x10,0x01,0xf0,0x0f,0xf0,0x0f,0xff,0x0f,0x10,0x00,0xf0,0x07,0xe0,0x07,0x30,0x00,0x10,0x00,0x30,0x00,0x20,0x00,0xff,0x0f,0x60,0x02,0xf0,0x06,0x90,0x04,0x90,0x04,0x90,0x04,0xb0,0x07,0x20,0x03,0xff,0x0f,0x10,0x00,0x10,0x00,0xfc,0x03,0xfc,0x07,0x10,0x04,0x10,0x06,0x00,0x02,0xff,0x0f,0xf0,0x01,0xf0,0x03,0x00,0x06,0x00,0x04,0x00,0x02,0xf0,0x07,0xf0,0x07,0xff,0x0f,0x30,0x00,0xf0,0x00,0xc0,0x03,0x00,0x07,0xc0,0x03,0xf0,0x00,0x30,0x00,0xff,0x0f,0xf0,0x03,0xf0,0x07,0x00,0x06,0xc0,0x03,0x00,0x06,0xf0,0x07,0xf0,0x03,0xff,0x0f,0x10,0x04,0x30,0x06,0x60,0x03,0xc0,0x01,0x60,0x03,0x30,0x06,0x10,0x04,0xff,0x0f,0xf0,0x04,0xf0,0x0c,0x00,0x09,0x00,0x09,0x80,0x0c,0xf0,0x07,0xf0,0x03,0xff,0x0f,0x10,0x06,0x10,0x07,0x90,0x05,0xd0,0x04,0x70,0x04,0x30,0x04,0xff,0x0f,0xff,0x0f,0x60,0x00,0xfe,0x07,0x9f,0x0f,0x01,0x08,0x01,0x08,0xff,0x0f,0xff,0x0f,0xff,0x0f,0xfe,0x07,0xfe,0x07,0x00,0x00,0xff,0x0f,0xff,0x0f,0xff,0x0f,0xff,0x0f,0xff,0x0f,0x01,0x08,0x01,0x08,0x9f,0x0f,0xfe,0x07,0x60,0x00,0xff,0x0f,0xff,0x0f,0xff,0x0f,0x60,0x00,0x60,0x00,0x60,0x00,0x64,0x02,0x68,0x01,0xf0,0x00,0x60,0x00,0xff,0x0f,0x60,0x00,0xf0,0x00,0x68,0x01,0x64,0x02,0x60,0x00,0x60,0x00,0x60,0x00,0xff,0x0f, +0xfe,0x07,0xfe,0x07,0x22,0x00,0x22,0x00,0x22,0x00,0x22,0x00,0x3e,0x00,0x1c,0x00,0xf8,0x01,0xfc,0x03,0x06,0x06,0x82,0x04,0x82,0x05,0x06,0x07,0xfc,0x03,0xf8,0x05,0xfe,0x07,0xfe,0x07,0x62,0x00,0x62,0x00,0xe2,0x00,0xa2,0x01,0x3e,0x07,0x1c,0x06,0x1c,0x02,0x3e,0x06,0x22,0x04,0x22,0x04,0x22,0x04,0x22,0x04,0xe6,0x07,0xc4,0x03,0x02,0x00,0x02,0x00,0x02,0x00,0xfe,0x07,0xfe,0x07,0x02,0x00,0x02,0x00,0x02,0x00,0xfe,0x01,0xfe,0x03,0x00,0x06,0x00,0x04,0x00,0x04,0x00,0x06,0xfe,0x03,0xfe,0x01,0x0e,0x00,0x7e,0x00,0xf0,0x01,0x80,0x07,0x80,0x07,0xf0,0x01,0x7e,0x00,0x0e,0x00,0xfe,0x07,0xfe,0x07,0x00,0x03,0xe0,0x01,0xe0,0x01,0x00,0x03,0xfe,0x07,0xfe,0x07,0x06,0x06,0x0e,0x07,0x98,0x01,0xf0,0x00,0xf0,0x00,0x98,0x01,0x0e,0x07,0x06,0x06,0x06,0x00,0x0e,0x00,0x18,0x00,0xf0,0x07,0xf0,0x07,0x18,0x00,0x0e,0x00,0x06,0x00,0x02,0x07,0x82,0x07,0xc2,0x04,0x62,0x04,0x32,0x04,0x1e,0x04,0x0e,0x04,0xff,0x0f,0xff,0x0f,0xfe,0x07,0xfe,0x07,0x02,0x04,0x02,0x04,0x02,0x04,0xff,0x0f,0xff,0x0f,0x02,0x00,0x0e,0x00,0x1c,0x00,0x70,0x00,0xe0,0x00,0x80,0x03,0x00,0x07,0x00,0x04,0xff,0x0f,0x02,0x04,0x02,0x04,0x02,0x04,0xfe,0x07,0xfe,0x07,0xff,0x0f,0xff,0x0f,0xff,0x0f,0x18,0x00,0x0c,0x00,0x06,0x00,0x06,0x00,0x0c,0x00,0x18,0x00,0xff,0x0f,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08, +0xff,0x0f,0x01,0x00,0x03,0x00,0x06,0x00,0x04,0x00,0xff,0x0f,0xff,0x0f,0xff,0x0f,0x00,0x03,0xa0,0x07,0xb0,0x04,0x90,0x04,0x90,0x02,0xf0,0x07,0xe0,0x07,0xff,0x0f,0xfe,0x07,0xfe,0x07,0x20,0x02,0x10,0x04,0x30,0x06,0xe0,0x03,0xc0,0x01,0xff,0x0f,0xc0,0x01,0xe0,0x03,0x30,0x06,0x10,0x04,0x10,0x04,0x30,0x06,0x20,0x02,0xff,0x0f,0xc0,0x01,0xe0,0x03,0x30,0x06,0x10,0x04,0x20,0x02,0xfe,0x07,0xfe,0x07,0xff,0x0f,0xc0,0x01,0xe0,0x03,0xb0,0x06,0x90,0x04,0xb0,0x04,0xe0,0x06,0xc0,0x02,0xff,0x0f,0x40,0x00,0x40,0x00,0xfc,0x07,0xfe,0x07,0x42,0x00,0x0e,0x00,0x0c,0x00,0xff,0x0f,0x60,0x05,0xf0,0x0f,0x90,0x0a,0x90,0x0a,0xf0,0x0a,0x60,0x0e,0x30,0x04,0xff,0x0f,0xfe,0x07,0xfe,0x07,0x20,0x00,0x10,0x00,0x30,0x00,0xe0,0x07,0xc0,0x07,0xff,0x0f,0x00,0x04,0x10,0x04,0xf6,0x07,0xf6,0x07,0x00,0x04,0x00,0x04,0xff,0x0f,0xff,0x0f,0x00,0x07,0x00,0x0f,0x00,0x08,0x10,0x08,0x10,0x08,0xf6,0x0f,0xf6,0x07,0xff,0x0f,0xfe,0x07,0xfe,0x07,0xc0,0x01,0x60,0x03,0x30,0x06,0x00,0x04,0xff,0x0f,0xff,0x0f,0x00,0x04,0x02,0x04,0xfe,0x07,0xfe,0x07,0x00,0x04,0x00,0x04,0xff,0x0f,0xff,0x0f,0xf0,0x07,0xe0,0x07,0x10,0x00,0xe0,0x07,0x10,0x00,0xf0,0x07,0xe0,0x07,0xff,0x0f,0xf0,0x07,0xf0,0x07,0x20,0x00,0x10,0x00,0x30,0x00,0xe0,0x07,0xc0,0x07,0xff,0x0f,0xc0,0x01,0xe0,0x03,0x30,0x06,0x10,0x04,0x30,0x06,0xe0,0x03,0xc0,0x01,0xff,0x0f, +0xf0,0x0f,0xf0,0x0f,0x10,0x01,0x10,0x01,0xb0,0x01,0xe0,0x00,0xc0,0x00,0xff,0x0f,0xc0,0x00,0xe0,0x00,0xb0,0x01,0x10,0x01,0x10,0x01,0xf0,0x0f,0xf0,0x0f,0xff,0x0f,0x10,0x00,0xf0,0x07,0xe0,0x07,0x30,0x00,0x10,0x00,0x30,0x00,0x20,0x00,0xff,0x0f,0x60,0x02,0xf0,0x06,0x90,0x04,0x90,0x04,0x90,0x04,0xb0,0x07,0x20,0x03,0xff,0x0f,0x10,0x00,0x10,0x00,0xfc,0x03,0xfc,0x07,0x10,0x04,0x10,0x06,0x00,0x02,0xff,0x0f,0xf0,0x01,0xf0,0x03,0x00,0x06,0x00,0x04,0x00,0x02,0xf0,0x07,0xf0,0x07,0xff,0x0f,0x30,0x00,0xf0,0x00,0xc0,0x03,0x00,0x07,0xc0,0x03,0xf0,0x00,0x30,0x00,0xff,0x0f,0xf0,0x03,0xf0,0x07,0x00,0x06,0xc0,0x03,0x00,0x06,0xf0,0x07,0xf0,0x03,0xff,0x0f,0x10,0x04,0x30,0x06,0x60,0x03,0xc0,0x01,0x60,0x03,0x30,0x06,0x10,0x04,0xff,0x0f,0xf0,0x04,0xf0,0x0c,0x00,0x09,0x00,0x09,0x80,0x0c,0xf0,0x07,0xf0,0x03,0xff,0x0f,0x10,0x06,0x10,0x07,0x90,0x05,0xd0,0x04,0x70,0x04,0x30,0x04,0xff,0x0f,0xff,0x0f,0xff,0x0f,0x60,0x00,0xfe,0x07,0x9f,0x0f,0x01,0x08,0x01,0x08,0xff,0x0f,0xff,0x0f,0xff,0x0f,0xff,0x0f,0xfe,0x07,0xfe,0x07,0x00,0x00,0xff,0x0f,0xff,0x0f,0xff,0x0f,0xff,0x0f,0x01,0x08,0x01,0x08,0x9f,0x0f,0xfe,0x07,0x60,0x00,0xff,0x0f,0xff,0x0f,0x60,0x00,0x60,0x00,0x60,0x00,0x64,0x02,0x68,0x01,0xf0,0x00,0x60,0x00,0xff,0x0f,0x60,0x00,0xf0,0x00,0x68,0x01,0x64,0x02,0x60,0x00,0x60,0x00,0x60,0x00,0xff,0x0f, diff --git a/radio/src/fonts/std/font_08x10.png b/radio/src/fonts/std/font_08x10.png index 98b9a4452ae55d99052a6d8b56d15034259aeee7..7a5d376ca1717e1fd127acc13488c46119d9832e 100644 GIT binary patch delta 785 zcmV+s1Md992IK~iV1ES`D?Awy6X3xe}UbS))`!S$dj|3L|%M4gOD zpeRM0`tGEd{&<50pL_S-7YW0Z`brfA^(^IkzARu0%WCrJ3xDiv7|1n*!IKZLv18!Q zK=W_#;rYk+V0qyigj)^aqx6DW-bh1gAV~KS06ZuGF27RK0lvI29Y6Xly0H^#H~|b6 zHv2EA-qQ9vC%QugulA@8*7m{H9cofVU-ml%^kzjR{wQ!<$9W6e;5byuUOfP^PDr=j zA%xIQx3|fFEPrYsH9`Q~o{Qj0xjkR+B6K!;-3+0-?T~rbAyn2u-e{0DNnEFm(395) zt^p!x8?Ph?n*;~~fwl{-La39jh8k?)+5{W`r|V$6b-IPYl0Tz&O!U0K!VgpAxp}}| zx^T7taK_=33(ki?hppq5u#b5>Z3$vUKqEX5wvDhRV1J3j9&gzdJQEFsoG;jXe!+%# z`dBm?8cYY{GXSoEn=72^4l@+NTN9j_E7jUY3n9`&F_?|P4ms#x|3xomrToJ06)-oP z+r?Ha!0+f5z$4C61DSQ=IfXv7HAImHat{$74sWarkK+tJw~Nq7(`zgBaH!26;=7 z>2KJ0xKlwggURF{`1uVMPoDIbz>Spkxqe zn9#VqvUobk5;kg%#>eGQkqy}RXar%#%e4r>)p!!JRVagrtO~kcM*j_`TRZgoS4$ZH P015yANkvXXu0mjf4Bu(Y delta 752 zcmVnu~K~y-)Wz)ZF6hRaR@E0So2@0tqSOi(( zRWc?P?_iw$AN)%!EicOwEv{JBW*3gjA7Lvp=EAwfxM{6q35RQS3@S3pIP06)_3+1Q z4nFhdy)Qc)Xlb15I@zEzjnN%wIB@G%Z=oszSPyw}`vnwLfPe1+Mt_5W`!AmXHu-yk zFCOxn?WM$K>7fmfw5J3B4fFubI~F>?=*!UYsTj+m$~~L`1^t0gh<;$Q4(z6+{%Ng)RHf-xxPUa3T3em~n=-cI8DmUlD?3AAyB=7?7=W^h zKxut(ov#S8nSWgwg4IRJuB((u%|Uz7J zm4^rOZ4r)org7XEi#dtOr@r)}y z7W;QfU?m-hI3_q2u*)Ik<9L93A|kMSJLcE6V^I2*h<_pvp#%8_fP3KK3TM6}3?+DS zEI5WM!`f&}Q2L=1ET&*n4nEj_(YsAK(;3^r)?({~TB(5EQFXve&f5S6&ziLJhp~sU z^uT^Y$rp>yc-cIq8GP%6AZpu>*fumY<~M8)^#IW^!6I6;bNmv3jXglw3j7|xuPxhs zzJYUo(tj>!aSQY*?0?Y#m>bGEdM4)}bHW*S<%BYP>Olsm0w@pqH&{2o`QdrBtkc73 z^H4oLT!Jq4iY%|$o-&ad?d6~i3dEfwRAyI=5J67}pgtwI(*qKSTA;$AgVBtlP6%iQ z(v0V{<-DdNWH3V7(g#nRP5S6=Q&u+ne?xIl4QWtsV7>kazI}ilc{jO+zJTDzYd9*N zBQ3=oH6GC49T4ZD#(cEIRS#@`o_JU@)nD0>b5rATw5(?RP+{g+WlP8n@7EF}SJgVl iBj|$(GXy>DqyGX9=dnRMXCm|f0000r#06%`ddM<1Yi+-uKE4;6Xn zeexznHX^cdSf`qGzS{Rk0fKUTDy5@zHhcV-&4J|!$}@KDW`uwC&lnm7k5SpR29VzN z+IFn`Rm)3Mduo2{@|<;^s~sM1e_mZ_?ceg=_gLBY3xFt6(%{_G0_5P1mu$J-dWMn;UDG+}~&-$t4C91t$c^|bmp5V-k zbY(enMMb~q{nUvgkzSNRLD48{Jx>N27VZ3ek1N8NA0dko{oWOUP&uc+(SB3p;GI7k#RA+RF&t*)*S$|2_ghBcv9rO$Y@B~z>br_NI z3T6!~@@1)q_vmbPURJ(a4>7HfH)UU~T&el1sv&3l@SLZ(oBtCzzxU3RNk< z9P6whHJ*&)*>ea-^>p9S8-p?`qxTu&9VLI>Q~!U~h;r3_Qah)Np&r$0D)o^?UXYB- zXm8vt_~{|vGk!71AR3%{>*3KFc((qY(a}nIM$R2D@{PQsLeSC7p@+Z98uDIgl1l#2 z+goZ25by1-z23fC1uf*K7gDpD)MXa`*_zbHC`9=5KajeY$P*W>hTl^;U1B6HjYekWU8jj4=!DgJU`KtriYM$1 zItqQ@y|0{gPOs~_UY{TTFow(eZSH?;w54|nJsPoT`(>ja#XM%{j<>y@@?sDWMa0V7 zc^9RK)%Oi5zj2N#vIz7_b$=eRKaoABijMvqPL${brSs?r?@ zB857J7Gz6hFC(1Oo%I33CxySGy3@5cPo+MXy^r26kIK-WTEIN*M5WR1SPy>cIjNY@ z?+)v0k)s{vvT6)oS=puJ#KT`^U99QAjPap7MgHII1af8_eZ*G+cUy}S^?l@iTRnE~ zo{rQ9**1hmP`zKQP=5h~NzJj*Y(1xc&iZw%A{$TY+s;Krr4Ow3(reF44;6XnACVD) UXz^&f?EnA(07*qoM6N<$f)j_}{r~^~ delta 1456 zcmV;h1yB0-3+)S#Dlz{6{{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G` z2i^e!7AiNq^nf9eTPS~3Nkl!Nc(LCJ$`y;^dpzyseWA4KF3 z&hS|c>t6pJKK1;(^otTa>;=ZUFX+Cp^qT=XJ}daW=LF?nwW5Dx`HiJtG`~dQQ}4$v z?X2sx8c=GzVja&bFWK>}^X=&)^qiL=TA+l_osH9xfJ6i*gHMG&YQ0K)>T%C-cns@N z-x*%DLCTJiF@BU$o5iaN`l)wAyosB0LH6wXhMqNR{IeeeE zXympRrA$yylr^U(!xNTa{QS->!k{1J2u6&1RZoP^{$#r%xe2 zX3-3keyXB%@EJL+#IIMcYCdA@q98K&j@9%Vh+X=G`kI3Lj340G$UtJ^+1lL zV^kef>y0^+j*5L%*PBE=9Wy@NMTuGJ?e?l%FlSX|$Vbz0mLrJv8}Ug*L~3{Abk#-D z8v#M*hwA0KM^wE0RUXuUL%E9SR#h!vLp6U_7Gh6=%&G=Eog-$wmXcuE^H!Dgn(@O- zcBqZhJD#(G^?MK*UCHM475U1Z_cd+bFFU9@L3-B%8X3+QG0WBJpzT%_z-v%kZ9UOv zEy|PXxv^)Bcb0cOqsyxEtIiQat7}*;v1~4Aq;k!8)TGo8tK`Azh)TBcq}~s2M1_BS zt6-G}%7_YM@AUe7G7j?$*Uoq?2PpHaO6v78_?U+dk%CC|wX4i9)~c7d7Jk{$lN$LI zHH#8MLcq~q;$m~eT3$dyklu1*D=wkxFXFBK;@k>(uv!l6C{I`I3tL4;ArHLu%30&| z^?JSD$H_kkqgw00MLv2!YFnc1)N_Agax9hWn0a=*_2bS@F!5?6$U zE%QPJS%mjWRX-0oqsX~a?g#6o9O1Cgoy}ub(2uRt$Xte0GT8c6HI?i@JW{A^w0O1@ z`ZCHm-B}(m`=qdUR5e|D>r~2vS%0*~Jjz2K6=QkuM1~8lm=EfCrI<194)k=j^3x9M zSv3bQzwEfziaGY^Vhsmo%n#jD%8H(IFW!Hy-6t}<7JUT61BDG#!B z2<$=i)_b(xu+`r{uXgL&-QgAERlxd1nSz3Xk_RfiP;#ii1OEUbl6GaPDOr2~0000< KMNUMnLSTYW=i){H diff --git a/radio/src/fonts/std/font_cz_04x06.lbm b/radio/src/fonts/std/font_cz_04x06.lbm index c4be089c4..1f8bc43dc 100644 --- a/radio/src/fonts/std/font_cz_04x06.lbm +++ b/radio/src/fonts/std/font_cz_04x06.lbm @@ -1 +1 @@ -0x18,0x24,0x16,0x3d,0x7f,0x18,0x24,0x25,0x02,0x01,0x18,0x34,0x2c,0x0a,0x01,0x18,0x34,0x2d,0x0a,0x01,0x24,0x3c,0x22,0x01,0x7f,0x18,0x24,0x24,0x1a,0x01,0x3c,0x04,0x05,0x0a,0x01,0x28,0x2d,0x36,0x15,0x7f,0x1c,0x20,0x22,0x3d,0x7f,0x1c,0x21,0x21,0x3c,0x7f,0x0c,0x50,0x22,0x1d,0x7f,0x38,0x14,0x14,0x3a,0x01,0x24,0x3e,0x25,0x7f,0x7f,0x3c,0x15,0x16,0x2d,0x7f,0x0c,0x32,0x0d,0x7f,0x7f,0x24,0x35,0x2e,0x25,0x7f,0x3e,0x2a,0x2a,0x22,0x01, +0x18,0x24,0x16,0x3d,0x7f,0x18,0x24,0x25,0x02,0x01,0x18,0x34,0x2c,0x0a,0x01,0x18,0x34,0x2d,0x0a,0x01,0x24,0x3c,0x22,0x01,0x7f,0x18,0x24,0x24,0x1a,0x01,0x3c,0x04,0x05,0x0a,0x01,0x28,0x2d,0x36,0x15,0x7f,0x1c,0x20,0x22,0x3d,0x7f,0x1c,0x21,0x21,0x3c,0x7f,0x0c,0x50,0x22,0x1d,0x7f,0x38,0x14,0x14,0x3a,0x01,0x7f,0x24,0x3e,0x25,0x7f,0x3c,0x15,0x16,0x2d,0x7f,0x7f,0x0c,0x32,0x0d,0x7f,0x24,0x35,0x2e,0x25,0x7f,0x3e,0x2a,0x2a,0x22,0x01, diff --git a/radio/src/fonts/std/font_cz_04x06.png b/radio/src/fonts/std/font_cz_04x06.png index 0dc759ddc495f62ac3fdf4d9c9217529f2e4d711..176c827b82ed538628ee5ab5f12ecdb31ead2f9a 100644 GIT binary patch delta 134 zcmV;10D1r40p9_TV1ES{1~Krn95es`0AEQ&K~xCW0aO61{{ZH_u6tDEx#m%n@Br6) z-FLdzwbf}_2mplVGfZ$}8885VcmQM4n>D6m7}YSE7yv`gdo}oDC>04-cmSm5F-_ux oG|(|X2mts0|9}4Xt@nA}_`dTgSivsh!vFvP07*qoM6N<$g6uasHxT6(jW_@R0AEQ&K~xCW0aO61{{ZH_u6tDEx$ILE@Br6) z-FLdzwc2W$2mplVGfZ$}8886=cmQM4n>D6m7}_x!7yv`gdo}oDC>jcucmSm5F-_ux oG|)1D2mts0|9}4Xt^RwS_>9UZeNhPx# diff --git a/radio/src/fonts/std/font_cz_05x07.lbm b/radio/src/fonts/std/font_cz_05x07.lbm index 45f4a2368..1d275e5ce 100644 --- a/radio/src/fonts/std/font_cz_05x07.lbm +++ b/radio/src/fonts/std/font_cz_05x07.lbm @@ -1 +1 @@ -0x20,0x54,0x56,0x55,0x78,0x38,0x45,0x46,0x45,0x20,0x38,0x54,0x56,0x55,0x18,0x38,0x55,0x56,0x55,0x18,0x44,0x7e,0x41,0xff,0xff,0x38,0x44,0x46,0x45,0x38,0x7c,0x09,0x06,0x05,0x08,0x48,0x55,0x56,0x55,0x20,0x3c,0x40,0x42,0x21,0x7c,0x3c,0x40,0x43,0x23,0x7c,0x0c,0x50,0x52,0x51,0x3c,0x78,0x14,0x16,0x15,0x78,0x44,0x7e,0x45,0xff,0xff,0x7c,0x15,0x16,0x35,0x48,0x0c,0x10,0x62,0x11,0x0c,0x44,0x65,0x56,0x4d,0xff,0x7c,0x54,0x56,0x55,0x44,0x1c,0x1c,0x3e,0x7f,0xff,0x22,0x1c,0x41,0x3e,0x00, +0x20,0x54,0x56,0x55,0x78,0x38,0x45,0x46,0x45,0x20,0x38,0x54,0x56,0x55,0x18,0x38,0x55,0x56,0x55,0x18,0xff,0x44,0x7e,0x41,0xff,0x38,0x44,0x46,0x45,0x38,0x7c,0x09,0x06,0x05,0x08,0x48,0x55,0x56,0x55,0x20,0x3c,0x40,0x42,0x21,0x7c,0x3c,0x40,0x43,0x23,0x7c,0x0c,0x50,0x52,0x51,0x3c,0x78,0x14,0x16,0x15,0x78,0xff,0x44,0x7e,0x45,0xff,0x7c,0x15,0x16,0x35,0x48,0x0c,0x10,0x62,0x11,0x0c,0x44,0x65,0x56,0x4d,0xff,0x7c,0x54,0x56,0x55,0x44,0x1c,0x1c,0x3e,0x7f,0xff,0x22,0x1c,0x41,0x3e,0x00, diff --git a/radio/src/fonts/std/font_cz_05x07.png b/radio/src/fonts/std/font_cz_05x07.png index dbe7a34f64a64b24336b5f7251c2fbb9f4a4fc02..a0ef49a4b374801301317c956e6d245a3a706170 100644 GIT binary patch delta 138 zcmV;50CoTK0rLTnU||Ip2nN=Tl(hf=0CP!1K~xCW0cZf1{{ZcKR(7@Sd)8O9?=}G5 z_qA_(-gmWcdfplUjAIc+F>{>|1;79*0Q21CIL~vO{>|1;79*0Q21HIL~vO>N(taDgcAP3OVs}pb7@M2r2+` sp87fdV?64S!4w|;fB*mg{(t`ezDTDu6%Z#kr2qf`07*qoM6N<$fwmQ`HLO{5* g{{QDVY=@!mKL#CjLy@T`ZvX%Q07*qoM6N<$g8mg@tN;K2 delta 228 zcmVK_rCFM)wbTFPrdtZ8;k@1t&Q26Sx!X4id|{PP)bTGcl48UV027m zso<}STrV01E&L!UVq*J1s4kgjmk6m0003eNklY?U*jVL! z1j9BSESWY%Ag^GTS1=Gf#p22_X>h9aAuo399-v;G?`+U`38O% z;Foo_GIaaA;@2oEN1?2x1+FMxn%(`=lFyV^VJK^5p(>+w9DjaHgSa}=+Ub$3&Vpl4 zxqg@CIHDYyZ^Z)u__}E4e=7#nD~7_hFsRg4qasY5(ztL;7VLP`YN*XktLE=JEw@tm z(mov~I-ZRq;bNk3emn_#bOr0g7Q&x0K|ec!gkS-nlk_4XUowHgOnCOkzCpN`sWS}{ z2?;P|Uvp^?B}=4B6x7_FbEM;iFZ(S#u*SfU@NCfUD%kY6F&{iO889(WzcZ9~V5?cB k!+l3M|Kb17d!oAAE2-V01E&L!UVq&T1PToliUsiD0003eNklcb5 z9^rzG!r`mY z^-qUc;V-7Cu$gIG9#6s!t>FTd5&kf&VUQm|O3(llm|dmh6F@_Px$xqTU5ii)_vYb7 zN~Y^2Yyz>% diff --git a/radio/src/fonts/std/font_fr_04x06.lbm b/radio/src/fonts/std/font_fr_04x06.lbm index 6403f1409..93aa19910 100644 --- a/radio/src/fonts/std/font_fr_04x06.lbm +++ b/radio/src/fonts/std/font_fr_04x06.lbm @@ -1 +1 @@ -0x18,0x36,0x2d,0x08,0x7f,0x18,0x35,0x2e,0x08,0x7f,0x18,0x25,0x16,0x3c,0x7f,0x26,0x3d,0x22,0x7f,0x7f,0x4c,0x32,0x12,0x7f,0x7f, +0x18,0x36,0x2d,0x08,0x7f,0x18,0x35,0x2e,0x08,0x7f,0x18,0x25,0x16,0x3c,0x7f,0x7f,0x26,0x3d,0x22,0x7f,0x7f,0x4c,0x32,0x12,0x7f, diff --git a/radio/src/fonts/std/font_fr_04x06.png b/radio/src/fonts/std/font_fr_04x06.png index 6078b240103c1f95c36a2974dae9aa40a96d1e4e..44f05829223120fc15aeab6562352b32122b2de4 100644 GIT binary patch delta 99 zcmew^{X=@gT;Aw=jI83kd`lHy9AaQ#u=I3s4B@z*oRE^j;H<&;j6qUB%t_`%dotS& zBMx!3RvrH5hf)_X^%R))MEEq%WG`n^7Gf+EJHf#qEzIDp{sWJu` z23tg;--7xJp5qzEP=N)V;UEigO0miRZSG63FF0_+0~;#0000mNkl`(Iid`?N?R zi9UFYP65{dhFCPLH0Q~t9p^1)DFh9+KPPk?>~OQ0|G+;{A~O}2><{907(Z$PDHLkV1mhxI(`5E diff --git a/radio/src/fonts/std/font_fr_10x14.lbm b/radio/src/fonts/std/font_fr_10x14.lbm index f7b7edd89..49e9c13cc 100644 --- a/radio/src/fonts/std/font_fr_10x14.lbm +++ b/radio/src/fonts/std/font_fr_10x14.lbm @@ -1 +1 @@ -0x80,0x1f,0xc0,0x3f,0xe0,0x76,0x68,0x66,0x6c,0x66,0x66,0x66,0x62,0x66,0xe0,0x66,0xc0,0x07,0x80,0x07,0x80,0x1f,0xc0,0x3f,0xe0,0x76,0x62,0x66,0x66,0x66,0x6c,0x66,0x68,0x66,0xe0,0x66,0xc0,0x07,0x80,0x07,0x00,0x18,0x00,0x3c,0x60,0x7e,0x62,0x66,0x66,0x66,0x6c,0x66,0x68,0x66,0xe0,0x66,0xc0,0x7f,0x80,0x7f,0x98,0x61,0x98,0x61,0x86,0x7f,0x86,0x7f,0x18,0x60,0x18,0x60,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0x07,0xf0,0x0f,0x38,0x9c,0x18,0xd8,0x18,0x78,0x18,0x38,0x18,0x18,0x18,0x1c,0x00,0x0e,0x00,0x06, +0x80,0x1f,0xc0,0x3f,0xe0,0x76,0x68,0x66,0x6c,0x66,0x66,0x66,0x62,0x66,0xe0,0x66,0xc0,0x07,0x80,0x07,0x80,0x1f,0xc0,0x3f,0xe0,0x76,0x62,0x66,0x66,0x66,0x6c,0x66,0x68,0x66,0xe0,0x66,0xc0,0x07,0x80,0x07,0x00,0x18,0x00,0x3c,0x60,0x7e,0x62,0x66,0x66,0x66,0x6c,0x66,0x68,0x66,0xe0,0x66,0xc0,0x7f,0x80,0x7f,0xff,0xff,0xff,0xff,0x98,0x61,0x98,0x61,0x86,0x7f,0x86,0x7f,0x18,0x60,0x18,0x60,0xff,0xff,0xff,0xff,0xe0,0x07,0xf0,0x0f,0x38,0x9c,0x18,0xd8,0x18,0x78,0x18,0x38,0x18,0x18,0x18,0x1c,0x00,0x0e,0x00,0x06, diff --git a/radio/src/fonts/std/font_fr_10x14.png b/radio/src/fonts/std/font_fr_10x14.png index d78f9c95ad16559f445feff3d9a332cd22498381..c1c2dede781e5b4719dd1bd91b9f40cd86bcd19b 100644 GIT binary patch delta 161 zcmV;S0ABz00rvrrUVq*J1s4w}MH&yi0001YNkl3$yao|kACe$- z4B89nemQ6qy5n;WZakOTgg}lCCvpd|d}>ZN`nT(!G+$x;eHvi-f3?UL%f~_Z-)JSz P00000NkvXXu0mjf2Y*8L delta 160 zcmV;R0AK(20rmlqUVq&T1PTuqAv(j^0001XNklST6olcED4>YM0+GGK zD^o;zjFL_823de%u1o0^+|fSd3JKvnxaKQP`q6yWhX;@2-z!0yK)pM_dKq_{W&QzNmp`Ui|K@Z6 O0000!5Sd=@Bjb*KhOXF|NZc;#(p8KiM uy}?ibbDu|%!5Sd>&;S4bKhOXF|NZb*ggsWB6CBe30000)OSzE4S=R;%}culSfqZa zI7XCZ@%~s)o^v*-?l|)vQRtpXRx8fr>zOyF6V?Jlv^55q%;r3F9Y`caak;#15fA%4 z=4EN9py`wok*ic-*R-H3@$E2K^X)`bZ*RYbF^);9|3sm8Zdhh(k^lez07*qoM6N<$ Eg14@CQUCw| delta 245 zcmVb>B9g30L@86K~xCW9geYT!$1&32b0oO>OfMZO5t*g z&Fa@|H-V5!l?1~2l~@K3u%Gm?c%)q>Xc}w2=G|m^B&wuB^!-9Q; z5cKzJLOWfiA;6reb56exdud;$A9FA>%}%Lqq=Rh3dn%$$i_ v=K}9t54sXx_lq^(PDJzR_AAYC&NBN4SN(&W%7Ko`00000NkvXXu0mjfBG7m; diff --git a/radio/src/fonts/std/font_pl_10x14.lbm b/radio/src/fonts/std/font_pl_10x14.lbm index fb6d981b1..fc7bd1e59 100644 --- a/radio/src/fonts/std/font_pl_10x14.lbm +++ b/radio/src/fonts/std/font_pl_10x14.lbm @@ -1 +1 @@ -0x00,0x18,0x00,0x3c,0x60,0x7e,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0xe6,0xc0,0xbf,0x80,0xbf,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x68,0x60,0x6c,0x60,0x67,0x60,0x63,0x70,0x01,0x38,0x00,0x18,0x80,0x1f,0xc0,0x3f,0xe0,0x76,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0xe6,0xc0,0x87,0x80,0x87,0x06,0x61,0x06,0x61,0xfe,0x7f,0xfe,0x7f,0x80,0x60,0x80,0x60,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0x7f,0xe0,0x7f,0x80,0x01,0xc0,0x01,0xe8,0x00,0x6c,0x00,0x67,0x00,0xe3,0x00,0xc1,0x7f,0x80,0x7f,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x68,0x60,0x6c,0x60,0x67,0x60,0xe3,0x70,0xc1,0x3f,0x80,0x1f,0x80,0x61,0xc0,0x63,0xe0,0x67,0x60,0x66,0x68,0x66,0x6c,0x66,0x67,0x66,0x63,0x7e,0x01,0x3c,0x00,0x18,0x60,0x60,0x60,0x70,0x60,0x78,0x66,0x7c,0x66,0x6e,0x60,0x67,0xe0,0x63,0xe0,0x61,0xe0,0x60,0x60,0x60,0x60,0x60,0x60,0x70,0x60,0x78,0x60,0x7c,0x68,0x6e,0x6c,0x67,0xe7,0x63,0xe3,0x61,0xe1,0x60,0x60,0x60,0xe0,0x7f,0xf0,0x7f,0xb8,0x01,0x9c,0x01,0x8e,0x01,0x8e,0x01,0x9c,0x01,0xb8,0x61,0xf0,0xff,0xe0,0xbf,0xe0,0x1f,0xf0,0x3f,0x38,0x70,0x18,0x60,0x1c,0x60,0x1f,0x60,0x1b,0x60,0x39,0x70,0x70,0x38,0x60,0x18,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x06,0xa0,0x06,0x80,0x00,0x06,0xfe,0x7f,0xfe,0x7f,0x00,0x63,0x80,0x61,0x80,0x61,0xc0,0x60,0xc0,0x60,0x60,0x60,0x60,0x60,0xf8,0x7f,0xf8,0x7f,0xe0,0x00,0xc0,0x01,0x80,0x03,0x04,0x07,0x07,0x0e,0x03,0x1c,0xf9,0x7f,0xf8,0x7f,0xe0,0x1f,0xf0,0x3f,0x38,0x70,0x18,0x60,0x1c,0x60,0x1f,0x60,0x1b,0x60,0x39,0x70,0xf0,0x3f,0xe0,0x1f,0xe0,0x18,0xf0,0x39,0xb8,0x73,0x18,0x63,0x1c,0x63,0x1f,0x63,0x1b,0x63,0x39,0x77,0x70,0x3e,0x60,0x1c,0x18,0x70,0x18,0x78,0x18,0x7c,0x18,0x6e,0x1b,0x67,0x9b,0x63,0xd8,0x61,0xf8,0x60,0x78,0x60,0x38,0x60,0x18,0x70,0x18,0x78,0x18,0x7c,0x18,0x6e,0x18,0x67,0x9c,0x63,0xdf,0x61,0xfb,0x60,0x79,0x60,0x38,0x60, +0x00,0x18,0x00,0x3c,0x60,0x7e,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0xe6,0xc0,0xbf,0x80,0xbf,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x68,0x60,0x6c,0x60,0x67,0x60,0x63,0x70,0x01,0x38,0x00,0x18,0x80,0x1f,0xc0,0x3f,0xe0,0x76,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0xe6,0xc0,0x87,0x80,0x87,0xff,0xff,0xff,0xff,0x06,0x61,0x06,0x61,0xfe,0x7f,0xfe,0x7f,0x80,0x60,0x80,0x60,0xff,0xff,0xff,0xff,0xe0,0x7f,0xe0,0x7f,0x80,0x01,0xc0,0x01,0xe8,0x00,0x6c,0x00,0x67,0x00,0xe3,0x00,0xc1,0x7f,0x80,0x7f,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x68,0x60,0x6c,0x60,0x67,0x60,0xe3,0x70,0xc1,0x3f,0x80,0x1f,0x80,0x61,0xc0,0x63,0xe0,0x67,0x60,0x66,0x68,0x66,0x6c,0x66,0x67,0x66,0x63,0x7e,0x01,0x3c,0x00,0x18,0x60,0x60,0x60,0x70,0x60,0x78,0x66,0x7c,0x66,0x6e,0x60,0x67,0xe0,0x63,0xe0,0x61,0xe0,0x60,0x60,0x60,0x60,0x60,0x60,0x70,0x60,0x78,0x60,0x7c,0x68,0x6e,0x6c,0x67,0xe7,0x63,0xe3,0x61,0xe1,0x60,0x60,0x60,0xe0,0x7f,0xf0,0x7f,0xb8,0x01,0x9c,0x01,0x8e,0x01,0x8e,0x01,0x9c,0x01,0xb8,0x61,0xf0,0xff,0xe0,0xbf,0xe0,0x1f,0xf0,0x3f,0x38,0x70,0x18,0x60,0x1c,0x60,0x1f,0x60,0x1b,0x60,0x39,0x70,0x70,0x38,0x60,0x18,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x06,0xa0,0x06,0x80,0x00,0x06,0xfe,0x7f,0xfe,0x7f,0x00,0x63,0x80,0x61,0x80,0x61,0xc0,0x60,0xc0,0x60,0x60,0x60,0x60,0x60,0xf8,0x7f,0xf8,0x7f,0xe0,0x00,0xc0,0x01,0x80,0x03,0x04,0x07,0x07,0x0e,0x03,0x1c,0xf9,0x7f,0xf8,0x7f,0xe0,0x1f,0xf0,0x3f,0x38,0x70,0x18,0x60,0x1c,0x60,0x1f,0x60,0x1b,0x60,0x39,0x70,0xf0,0x3f,0xe0,0x1f,0xe0,0x18,0xf0,0x39,0xb8,0x73,0x18,0x63,0x1c,0x63,0x1f,0x63,0x1b,0x63,0x39,0x77,0x70,0x3e,0x60,0x1c,0x18,0x70,0x18,0x78,0x18,0x7c,0x18,0x6e,0x1b,0x67,0x9b,0x63,0xd8,0x61,0xf8,0x60,0x78,0x60,0x38,0x60,0x18,0x70,0x18,0x78,0x18,0x7c,0x18,0x6e,0x18,0x67,0x9c,0x63,0xdf,0x61,0xfb,0x60,0x79,0x60,0x38,0x60, diff --git a/radio/src/fonts/std/font_pl_10x14.png b/radio/src/fonts/std/font_pl_10x14.png index b90769c1c70114ac101820664f67b45441df5d5b..b37d221ee23bd017f7703f1c1cc2c69dafdb4da2 100644 GIT binary patch delta 338 zcmV-Y0j>U~1E&L!UVq*J1s4=Ch(~Pa0003eNkla1z>E?bwK)+(+!5KvL3#J~r%GKh)q3fk-p*INKL%Mr+KvW>2DF#AA z4RP8`kv2f2F-OwgBGLscY5N(e1WE?;TQb((7PAMNjP{gHKz~T+B7dM5_BmPalmHH{ zh>m_@+GfnJ>(!mN{K}Pl0LXeIE4%TWbOr74DRaBymbvN!T|^&PZv#orW4o3$&3F(f z-nu@RC9#i+Ay=xSX=$0iT>CFE;|W?7z-e_=!|Zz`<(}heS^`uL?qoCFdGRjdGRy%A z)gyC16@%x#)=P_k&BR>R%w_YT8{e^~ug7ySaGf11>fI(|&(~~Ksef~UF3Y?BB^QF*Z40S4OD6Ug3--T(jq07*qoM6N<$f;pq0VgLXD delta 337 zcmV-X0j~b11EvFzUVq&T1PTx_K5a<40003dNkl1pw6oy|=h?jygW^<09 zu|q(GUL;4zm`x5{y154k=qfQDoFP-uv_uP$ID_JFr6y zIo5H&k^swwVS{JJkvy#b9$*OBvAJdE{cUs`^4ZydydyAR27h^gA#I-E!$m8S$V3?2 z6IXNL=f!N|r?k<=$W@}^aD^|L>pt6xPTS|gthX!Sx=lE$HZi*;<)V+YC=TfPMX~y5 z+T_M8K6*$->jrT=34c4cKdR>)ope&h>a*_p&@%Mpb(qC5QT5=LqK*?UKh-dHeWFsg z5FTRL1=;I^N=jTu;j+@$qW-dVXv8xduKTi+Icrh0>*ZWL-{-SR|Nl$4F_ZuCNmcr< jhinnkqX&ektb5WgAV$yVLcJ__00000NkvXXu0mjfk0+&A diff --git a/radio/src/fonts/std/font_pt_05x07.lbm b/radio/src/fonts/std/font_pt_05x07.lbm index 860c0237c..162b0e4b3 100644 --- a/radio/src/fonts/std/font_pt_05x07.lbm +++ b/radio/src/fonts/std/font_pt_05x07.lbm @@ -1 +1 @@ -0x78,0x14,0x16,0x15,0x78,0x20,0x54,0x56,0x55,0x78,0x78,0x16,0x15,0x16,0x78,0x20,0x56,0x55,0x56,0x78,0x7a,0x15,0x16,0x15,0x78,0x20,0x56,0x55,0x56,0x79,0x78,0x15,0x16,0x14,0x78,0x20,0x55,0x56,0x54,0x78,0x1e,0xa1,0x61,0x21,0x12,0x1c,0xa2,0x62,0x22,0x10,0x7c,0x54,0x56,0x55,0x44,0x38,0x54,0x56,0x55,0x18,0x7c,0x56,0x55,0x56,0x44,0x38,0x56,0x55,0x56,0x18,0x44,0x7e,0x45,0xff,0xff,0x4c,0x7a,0x40,0xff,0xff,0x3c,0x42,0x42,0x43,0x3c,0x38,0x44,0x46,0x45,0x38,0x3c,0x42,0x43,0x42,0x3c,0x38,0x44,0x46,0x44,0x38,0x3c,0x43,0x42,0x43,0x3c,0x38,0x46,0x44,0x46,0x38,0x3c,0x40,0x42,0x41,0x3c,0x38,0x40,0x44,0x22,0x78, +0x78,0x14,0x16,0x15,0x78,0x20,0x54,0x56,0x55,0x78,0x78,0x16,0x15,0x16,0x78,0x20,0x56,0x55,0x56,0x78,0x7a,0x15,0x16,0x15,0x78,0x20,0x56,0x55,0x56,0x79,0x78,0x15,0x16,0x14,0x78,0x20,0x55,0x56,0x54,0x78,0x1e,0xa1,0x61,0x21,0x12,0x1c,0xa2,0x62,0x22,0x10,0x7c,0x54,0x56,0x55,0x44,0x38,0x54,0x56,0x55,0x18,0x7c,0x56,0x55,0x56,0x44,0x38,0x56,0x55,0x56,0x18,0xff,0x44,0x7e,0x45,0xff,0xff,0x4c,0x7a,0x40,0xff,0x3c,0x42,0x42,0x43,0x3c,0x38,0x44,0x46,0x45,0x38,0x3c,0x42,0x43,0x42,0x3c,0x38,0x44,0x46,0x44,0x38,0x3c,0x43,0x42,0x43,0x3c,0x38,0x46,0x44,0x46,0x38,0x3c,0x40,0x42,0x41,0x3c,0x38,0x40,0x44,0x22,0x78, diff --git a/radio/src/fonts/std/font_pt_05x07.png b/radio/src/fonts/std/font_pt_05x07.png index b1f2ff750534457bf3933af16113cdee4e4d24ca..b6d68899bee0766785cf97b2d57c221c6e3e4385 100644 GIT binary patch delta 162 zcmV;T0A2t00r&xsUVq*J1s4@C=38wr0001ZNklbsO QY5)KL07*qoM6N<$g7nEx^Z)<= delta 161 zcmV;S0ABz20rvrrUVq&T1PLAt`oNcb0001YNklOT3A>v+F2+_s_X^qJ%R}Yu~6^~qFsa)vi`uVaf9GI&3wGLv-OUT+;GLlkH^or zmwc~KKT5Yb-ws<2m3EWKyDHsqUkBV?jcQJ{U$DQh8jb1@_iei8F$*(}Lf629QCM%; zvS0|4u3LI#~=^0!))G5eR?b_bfEU`w#tOYe%Q6UVq&T1PK)#bA)b10002SNkl^<9f(ZnXpy2FSbdd-ZQvZ}!V}s!PEbqq`cQ)Sgfjh2Q`>J}zz2JL| z=26;pb=z+^)XHA3@4B>;T@!G7b+S7)zF>c5c{(*A?$yX+7HMW2g`tKAqcz^JVZjhO z$rV|$t|;x7$RJdb6G@WJ3E7L`k>oVU23ZVQ0!))35eR?b_Y{ia{fBX~(WFQ@SIXWJ qVxC;i&=HL7ZP9UZ*mJzL{p}Aa52{B;%334<0000qU}yvb8nAh0W6m=o4a)Rm z;XzF-KuU-bc@~O9_Kby#VW$i{E>{7r+A_lQj%N#FJpd9!LlWi@fD*rR3ay5G(6;|FhJ~4Ul<8S^KX8!EK_*K!!_ws> zoUX<-1He>l8#a5>5|B!8*L049nj=6ds6mqv{#kyWDgyqy$k?CZ8y5-+qexi9JOBUy M07*qoM6N<$f@o}}=l}o! delta 367 zcmV-#0g(Q~1H=Q6UVq&T1PT%#(2Xbe0003*Nklus)qE)KF`|U=(Jz{sTl53948|sxJTl N002ovPDHLkV1iG?r=S1; From c2d220e94b81099fcb02ee2b28be67f1cfa2bcbe Mon Sep 17 00:00:00 2001 From: Dvogonen Date: Mon, 6 Jan 2014 01:29:53 +0100 Subject: [PATCH 083/308] Fixed Linux desktop file, which was badly broken. Added more and better icons to propper locations. --- companion/src/CMakeLists.txt | 7 +- companion/src/companion.desktop | 8 +- .../images/linuxicons/128x128/companion.png | Bin 0 -> 4591 bytes .../images/linuxicons/256x256/companion.png | Bin 0 -> 8828 bytes .../src/images/linuxicons/32x32/companion.png | Bin 0 -> 1143 bytes .../linuxicons/48x48}/companion.png | Bin .../images/linuxicons/512x512/companion.png | Bin 0 -> 18769 bytes .../images/linuxicons/scalable/companion.svg | 104 ++++++++++++++++++ 8 files changed, 114 insertions(+), 5 deletions(-) create mode 100644 companion/src/images/linuxicons/128x128/companion.png create mode 100644 companion/src/images/linuxicons/256x256/companion.png create mode 100644 companion/src/images/linuxicons/32x32/companion.png rename companion/src/{ => images/linuxicons/48x48}/companion.png (100%) create mode 100644 companion/src/images/linuxicons/512x512/companion.png create mode 100644 companion/src/images/linuxicons/scalable/companion.svg diff --git a/companion/src/CMakeLists.txt b/companion/src/CMakeLists.txt index a58489478..cd3bd87ee 100644 --- a/companion/src/CMakeLists.txt +++ b/companion/src/CMakeLists.txt @@ -319,7 +319,12 @@ TARGET_LINK_LIBRARIES( ${PROJECT_NAME} ${QT_LIBRARIES} ${QT_QTMAIN_LIBRARY} ${XE IF(${CMAKE_SYSTEM_NAME} MATCHES "Linux") INSTALL( TARGETS ${PROJECT_NAME} DESTINATION ${CMAKE_INSTALL_PREFIX}/bin ) INSTALL( FILES companion.desktop DESTINATION share/applications ) - INSTALL( FILES companion.png DESTINATION share/icons ) + INSTALL( FILES images/linuxicons/32x32/companion.png DESTINATION share/icons/hicolor/32x32/apps ) + INSTALL( FILES images/linuxicons/48x48/companion.png DESTINATION share/icons/hicolor/48x48/apps ) + INSTALL( FILES images/linuxicons/128x128/companion.png DESTINATION share/icons/hicolor/128x128/apps ) + INSTALL( FILES images/linuxicons/256x256/companion.png DESTINATION share/icons/hicolor/256x256/apps ) + INSTALL( FILES images/linuxicons/512x512/companion.png DESTINATION share/icons/hicolor/512x512/apps ) + INSTALL( FILES images/linuxicons/scalable/companion.svg DESTINATION share/icons/hicolor/scalable/apps ) INSTALL( FILES ../targets/linux/45-taranis.rules DESTINATION /etc/udev/rules.d/ ) # Linux specific code SET(OperatingSystem "Linux") diff --git a/companion/src/companion.desktop b/companion/src/companion.desktop index ef31c40c5..df19a4a80 100644 --- a/companion/src/companion.desktop +++ b/companion/src/companion.desktop @@ -2,10 +2,10 @@ Type=Application Encoding=UTF-8 Name=Companion -GenericName=COMPANION -Comment=The ultimate transmitter companion -Icon=/usr/share/icons/companion9x.png -Exec='companion9x' +GenericName=Transmitter Companion App +Comment=The Ultimate Transmitter Companion +Icon=companion +Exec='companion' Terminal=false StartupNotify=false Categories=Application diff --git a/companion/src/images/linuxicons/128x128/companion.png b/companion/src/images/linuxicons/128x128/companion.png new file mode 100644 index 0000000000000000000000000000000000000000..e268b289e5c8162bd6a469308bb65b5103918db8 GIT binary patch literal 4591 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


"; - aboutStr.append(tr("Copyright") +" Bertrand Songis & Romolo Manfredini © 2011- 2013
"); + QString aboutStr = "

"; + aboutStr.append(tr("Copyright") +" Bertrand Songis & Romolo Manfredini © 2011- 2014
"); aboutStr.append(QString("
http://code.google.com/p/companion9x/
")+tr("Version %1 (revision %2), %3").arg(C9X_VERSION).arg(C9X_REVISION).arg(__DATE__)+QString("

")); - aboutStr.append(tr("The companion9x project was originally forked from eePe")+QString(" http://code.google.com/p/eepe

")); + aboutStr.append(tr("The Companion project was originally forked from eePe")+QString(" http://code.google.com/p/eepe

")); aboutStr.append(tr("If you've found this program useful, please support by")); aboutStr.append(" "); - aboutStr.append(tr("donating") + "
"+tr("5 Points Curves")+QString("
").arg(curvefile5)); - str.append(""); - str.append(doTC(" ")); - for(i=0; i<5; i++) - str.append(doTC(tr("pt %1").arg(i+1), "", true)); - str.append(""); - for(i=0; i<8; i++) { - pen.setColor(*qplot_color[i]); - painter.setPen(pen); - qplot_color[i]->getRgb(&r,&g,&b); - c=r; - c*=256; - c+=g; - c*=256; - c+=b; - sprintf(buffer,"%06x",c); - str.append(""); - str.append(QString("").arg(i+1)); - count=0; - for(int j=0; j<5; j++) { - if (g_model->curves[i].points[j].y!=0) - count++; - } - for(int j=0; j<5; j++) { - str.append(doTR(QString::number(g_model->curves[i].points[j].y),"green")); - if (j>0 && count!=0) { - painter.drawLine(ISIZE*(j-1)/4,ISIZE/2-(ISIZE*g_model->curves[i].points[j-1].y)/200,ISIZE*(j)/4,ISIZE/2-(ISIZE*g_model->curves[i].points[j].y)/200); - } - } - str.append(""); - } - str.append("
").arg(buffer)+tr("Curve")+QString(" %1
"); - painter.setPen(QColor(0,0,0)); - painter.drawLine(0,ISIZE/2,ISIZE,ISIZE/2); - painter.drawLine(ISIZE/2,0,ISIZE/2,ISIZE); - for(i=0; i<5; i++) { - painter.drawLine(ISIZE/2-2,(ISIZE*i)/4,ISIZE/2+2,(ISIZE*i)/4); - painter.drawLine((ISIZE*i)/4,ISIZE/2-2,(ISIZE*i)/4,ISIZE/2+2); - } - - qi.save(curvefile5, "png",100); - str.append("
"+tr("9 Points Curves")+QString("
").arg(curvefile9)); - str.append(""); - for(i=0; i<9; i++) str.append(doTC(tr("pt %1").arg(i+1), "", true)); - str.append(""); - - painter.setBrush(QBrush("#FFFFFF")); - painter.setPen(QColor(0,0,0)); - painter.drawRect(0,0,ISIZE,ISIZE); - for(i=0; i<9; i++) { - painter.drawLine(ISIZE/2-2,(ISIZE*i)/8,ISIZE/2+2,(ISIZE*i)/8); - painter.drawLine((ISIZE*i)/8,ISIZE/2-2,(ISIZE*i)/8,ISIZE/2+2); - } - for(i=0; i<8; i++) { - pen.setColor(*qplot_color[i]); - painter.setPen(pen); - qplot_color[i]->getRgb(&r,&g,&b); - c=r; - c*=256; - c+=g; - c*=256; - c+=b; - sprintf(buffer,"%06x",c); - str.append(""); - str.append(QString("").arg(i+9)); - count=0; - for(int j=0; j<9; j++) { - if (g_model->curves[i].points[j].y!=0) - count++; - } - for(int j=0; j<9; j++) { - str.append(doTR(QString::number(g_model->curves[i].points[j].y),"green")); - if (j>0 && count!=0) { - painter.drawLine(ISIZE*(j-1)/8,ISIZE/2-(ISIZE*g_model->curves[i+8].points[j-1].y)/200,ISIZE*(j)/8,ISIZE/2-(ISIZE*g_model->curves[i+8].points[j].y)/200); - } - } - str.append(""); - } - str.append("
 
").arg(buffer)+tr("Curve")+QString(" %1
"); - str.append("
"); - painter.setPen(QColor(0,0,0)); - painter.drawLine(0,ISIZE/2,ISIZE,ISIZE/2); - painter.drawLine(ISIZE/2,0,ISIZE/2,ISIZE); - for(i=0; i<9; i++) { - painter.drawLine(ISIZE/2-2,(ISIZE*i)/8,ISIZE/2+2,(ISIZE*i)/8); - painter.drawLine((ISIZE*i)/8,ISIZE/2-2,(ISIZE*i)/8,ISIZE/2+2); - } - qi.save(curvefile9, "png",100); - } else { + { QImage qi(ISIZEW+1,ISIZEW+1,QImage::Format_RGB32); QPainter painter(&qi); painter.setBrush(QBrush("#FFFFFF")); @@ -703,11 +587,10 @@ void printDialog::printCurves() sprintf(buffer,"%06x",c); str.append(""); int curvepoints=g_model->curves[i].count; - if (!g_model->curves[i].custom) { - str.append(QString("").arg(buffer)+tr("Curve")+QString(" %1Y").arg(i+1)); - } else { + if (g_model->curves[i].type == CurveData::CURVE_TYPE_CUSTOM) str.append(QString("").arg(buffer)+tr("Curve")+QString(" %1Y").arg(i+1)); - } + else + str.append(QString("").arg(buffer)+tr("Curve")+QString(" %1Y").arg(i+1)); count=0; for(int j=0; jcurves[i].points[j].y!=0) @@ -716,18 +599,17 @@ void printDialog::printCurves() for(int j=0; jcurves[i].points[j].y),"green")); if (j>0 && count!=0) { - if (!g_model->curves[i].custom) { - painter.drawLine(ISIZEW*(j-1)/(curvepoints-1),ISIZEW/2-(ISIZEW*g_model->curves[i].points[j-1].y)/200,ISIZEW*(j)/(curvepoints-1),ISIZEW/2-(ISIZEW*g_model->curves[i].points[j].y)/200); - } else { + if (g_model->curves[i].type == CurveData::CURVE_TYPE_CUSTOM) painter.drawLine(ISIZEW/2+(ISIZEW*g_model->curves[i].points[j-1].x)/200,ISIZEW/2-(ISIZEW*g_model->curves[i].points[j-1].y)/200,ISIZEW/2+(ISIZEW*g_model->curves[i].points[j].x)/200,ISIZEW/2-(ISIZEW*g_model->curves[i].points[j].y)/200); - } + else + painter.drawLine(ISIZEW*(j-1)/(curvepoints-1),ISIZEW/2-(ISIZEW*g_model->curves[i].points[j-1].y)/200,ISIZEW*(j)/(curvepoints-1),ISIZEW/2-(ISIZEW*g_model->curves[i].points[j].y)/200); } } for(int j=curvepoints; j"); - if (g_model->curves[i].custom) { + if (g_model->curves[i].type == CurveData::CURVE_TYPE_CUSTOM) { str.append("X"); for(int j=0; jcurves[i].points[j].x),"green")); diff --git a/radio/src/myeeprom.h b/radio/src/myeeprom.h index 3c49e6f59..bbf184de6 100644 --- a/radio/src/myeeprom.h +++ b/radio/src/myeeprom.h @@ -56,11 +56,11 @@ #elif defined(PCBSKY9X) #define EEPROM_VER 216 #elif defined(CPUM2560) || defined(CPUM2561) - #define EEPROM_VER 215 + #define EEPROM_VER 216 #elif defined(CPUM128) #define EEPROM_VER 216 #else - #define EEPROM_VER 214 + #define EEPROM_VER 216 #endif #ifndef PACK @@ -274,12 +274,12 @@ PACK(typedef struct t_ScriptData { TRAINER_MODULE }; #define MODELDATA_BITMAP char bitmap[LEN_BITMAP_NAME]; - #define MODELDATA_EXTRA uint8_t externalModule; uint8_t trainerMode; ModuleData moduleData[NUM_MODULES+1]; char curveNames[MAX_CURVES][6]; ScriptData scriptsData[MAX_SCRIPTS]; char inputNames[MAX_INPUTS][4]; uint8_t nPotsToWarn; int8_t potPosition[NUM_POTS]; + #define MODELDATA_EXTRA uint8_t externalModule; uint8_t trainerMode; ModuleData moduleData[NUM_MODULES+1]; char curveNames[MAX_CURVES][6]; ScriptData scriptsData[MAX_SCRIPTS]; char inputNames[MAX_INPUTS][4]; #define LIMITDATA_EXTRA char name[LEN_CHANNEL_NAME]; int8_t curve; #define swstate_t uint16_t #elif defined(PCBSKY9X) #define MODELDATA_BITMAP - #define MODELDATA_EXTRA ModuleData moduleData[NUM_MODULES]; uint8_t nPotsToWarn; int8_t potPosition[NUM_POTS]; + #define MODELDATA_EXTRA ModuleData moduleData[NUM_MODULES]; #define LIMITDATA_EXTRA #define swstate_t uint8_t #else @@ -397,7 +397,7 @@ PACK(typedef struct t_ExpoData { char name[LEN_EXPOMIX_NAME]; int8_t offset; CurveRef curve; - uint8_t spare[2]; + uint8_t spare; }) ExpoData; #define MIN_EXPO_WEIGHT -100 #define EXPO_VALID(ed) ((ed)->srcRaw) @@ -508,7 +508,7 @@ PACK(typedef struct t_MixData { uint8_t srcRaw; int16_t offset; char name[LEN_EXPOMIX_NAME]; - uint8_t spare[2]; + uint8_t spare; }) MixData; #else PACK(typedef struct t_MixData { @@ -988,8 +988,7 @@ PACK(typedef struct t_FrSkyData { FrSkyRSSIAlarm rssiAlarms[2]; uint16_t mAhPersistent:1; uint16_t storedMah:15; - int8_t fasOffset:5; - uint8_t spare:3; + int8_t fasOffset; }) FrSkyData; #else #define MAX_FRSKY_SCREENS 2 @@ -1007,8 +1006,7 @@ PACK(typedef struct t_FrSkyData { int8_t varioCenterMin:5; uint8_t currentSource:3; int8_t varioCenterMax:5; - int8_t fasOffset:5; - uint8_t spare:3; + int8_t fasOffset; }) FrSkyData; #endif @@ -1412,24 +1410,28 @@ PACK(typedef struct t_ModelHeader { }) ModelHeader; #if defined (CPUARM) - #define ARM_OR_AVR(x, y) x + #define ARM_FIELD(x) x; + #define AVR_FIELD(x) #else - #define ARM_OR_AVR(x, y) y + #define ARM_FIELD(x) + #define AVR_FIELD(x) x; #endif PACK(typedef struct t_ModelData { ModelHeader header; TimerData timers[MAX_TIMERS]; - uint8_t protocol:3; + uint8_t protocol:3; // not used on Taranis uint8_t thrTrim:1; // Enable Throttle Trim - int8_t ppmNCH:4; /* spare on ARM */ + AVR_FIELD(int8_t ppmNCH:4) + ARM_FIELD(int8_t spare2:4) uint8_t trimInc:3; // Trim Increments uint8_t disableThrottleWarning:1; - uint8_t ARM_OR_AVR(displayText, pulsePol):1; + ARM_FIELD(uint8_t displayText:1) + AVR_FIELD(uint8_t pulsePol:1) uint8_t extendedLimits:1; uint8_t extendedTrims:1; uint8_t throttleReversed:1; - int8_t ppmDelay; /* spare on ARM */ + AVR_FIELD(int8_t ppmDelay) BeepANACenter beepANACenter; // 1<<0->A1.. 1<<6->A7 MixData mixData[MAX_MIXERS]; LimitData limitData[NUM_CHNOUT]; @@ -1443,11 +1445,10 @@ PACK(typedef struct t_ModelData { SwashRingData swashR; PhaseData phaseData[MAX_PHASES]; - int8_t ppmFrameLength; // 0=22.5ms (10ms-30ms) 0.5ms increments + AVR_FIELD(int8_t ppmFrameLength) // 0=22.5ms (10ms-30ms) 0.5ms increments uint8_t thrTraceSrc; swstate_t switchWarningStates; - uint8_t nSwToWarn; MODEL_GVARS_DATA From 27f8be304abb780c06f87a23a30442fd30c8120b Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Tue, 7 Jan 2014 18:03:50 +0100 Subject: [PATCH 094/308] The non active curves are not drawn in bold (pen width 2) --- companion/src/modeledit/curves.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/companion/src/modeledit/curves.cpp b/companion/src/modeledit/curves.cpp index 577e3bd0f..2e52c54ea 100644 --- a/companion/src/modeledit/curves.cpp +++ b/companion/src/modeledit/curves.cpp @@ -249,19 +249,19 @@ void Curves::updateCurve() scene->addLine(GFX_MARGIN, centerY, width+GFX_MARGIN, centerY); QPen pen; - pen.setWidth(2); + pen.setWidth(1); pen.setStyle(Qt::SolidLine); int numcurves = GetEepromInterface()->getCapability(NumCurves); for (int k=0; kaddLine(centerX + (qreal)model.curves[k].points[i].x*width/200,centerY - (qreal)model.curves[k].points[i].y*height/200,centerX + (qreal)model.curves[k].points[i+1].x*width/200,centerY - (qreal)model.curves[k].points[i+1].y*height/200,pen); + scene->addLine(centerX + (qreal)model.curves[k].points[i].x*width/200,centerY - (qreal)model.curves[k].points[i].y*height/200,centerX + (qreal)model.curves[k].points[i+1].x*width/200,centerY - (qreal)model.curves[k].points[i+1].y*height/200, pen); else - scene->addLine(GFX_MARGIN + i*width/(numpoints-1),centerY - (qreal)model.curves[k].points[i].y*height/200,GFX_MARGIN + (i+1)*width/(numpoints-1),centerY - (qreal)model.curves[k].points[i+1].y*height/200,pen); + scene->addLine(GFX_MARGIN + i*width/(numpoints-1),centerY - (qreal)model.curves[k].points[i].y*height/200,GFX_MARGIN + (i+1)*width/(numpoints-1),centerY - (qreal)model.curves[k].points[i+1].y*height/200, pen); } } } From 57f9489d8137d952832c89e66ccb50b52b446977 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Tue, 7 Jan 2014 19:33:29 +0100 Subject: [PATCH 095/308] EEPROM import bugfixing --- .../src/firmwares/opentx/opentxeeprom.cpp | 42 ++++++++++++------- .../src/firmwares/opentx/opentxinterface.cpp | 3 ++ 2 files changed, 30 insertions(+), 15 deletions(-) diff --git a/companion/src/firmwares/opentx/opentxeeprom.cpp b/companion/src/firmwares/opentx/opentxeeprom.cpp index b97be920c..a608b899a 100644 --- a/companion/src/firmwares/opentx/opentxeeprom.cpp +++ b/companion/src/firmwares/opentx/opentxeeprom.cpp @@ -910,6 +910,7 @@ class CurvesField: public TransformedField { internalField("Curves"), curves(curves), board(board), + version(version), maxCurves(MAX_CURVES(board, version)), maxPoints(IS_ARM(board) ? O9X_ARM_NUM_POINTS : O9X_NUM_POINTS) { @@ -939,14 +940,17 @@ class CurvesField: public TransformedField { int * cur = &_points[0]; int offset = 0; + for (int i=0; itype == CurveData::CURVE_TYPE_CUSTOM ? curve->count * 2 - 2 : curve->count) - 5; - if (offset > maxPoints - 5 * maxCurves) { + int size = (curve->type == CurveData::CURVE_TYPE_CUSTOM ? curve->count * 2 - 2 : curve->count); + if (offset+size > maxPoints) { EEPROMWarnings += ::QObject::tr("openTx only accepts %1 points in all curves").arg(maxPoints) + "\n"; break; } - _curves[i] = offset; + if (!IS_TARANIS(board) || version < 216) { + _curves[i] = offset - (5*i); + } for (int j=0; jcount; j++) { *cur++ = curve->points[j].y; } @@ -955,30 +959,37 @@ class CurvesField: public TransformedField { *cur++ = curve->points[j].x; } } + offset += size; } } virtual void afterImport() { + int * cur = &_points[0]; + for (int i=0; icount = (size / 2) + 1; - curve->type = CurveData::CURVE_TYPE_CUSTOM; + if (!IS_TARANIS(board) || version < 216) { + int * next = &_points[5*(i+1) + _curves[i]]; + int size = next - cur; + if (size % 2 == 0) { + curve->count = (size / 2) + 1; + curve->type = CurveData::CURVE_TYPE_CUSTOM; + } + else { + curve->count = size; + curve->type = CurveData::CURVE_TYPE_STANDARD; + } } - else { - curve->count = size; - curve->type = CurveData::CURVE_TYPE_STANDARD; + + for (int j=0; jcount; j++) { + curve->points[j].y = *cur++; } - for (int j=0; jcount; j++) - curve->points[j].y = cur[j]; + if (curve->type == CurveData::CURVE_TYPE_CUSTOM) { curve->points[0].x = -100; for (int j=1; jcount-1; j++) - curve->points[j].x = cur[curve->count+j-1]; + curve->points[j].x = *cur++; curve->points[curve->count-1].x = +100; } else { @@ -992,6 +1003,7 @@ class CurvesField: public TransformedField { StructField internalField; CurveData *curves; BoardEnum board; + unsigned int version; int maxCurves; int maxPoints; int _curves[C9X_MAX_CURVES]; diff --git a/companion/src/firmwares/opentx/opentxinterface.cpp b/companion/src/firmwares/opentx/opentxinterface.cpp index 1b201945c..ee9d2583e 100644 --- a/companion/src/firmwares/opentx/opentxinterface.cpp +++ b/companion/src/firmwares/opentx/opentxinterface.cpp @@ -870,6 +870,9 @@ bool Open9xInterface::checkVersion(unsigned int version) case 215: // M128 revert because too much RAM used! break; + case 216: + // A lot of things (first github release) + break; default: return false; } From 3ade8707a7440354239473951120e3988bc1f9e5 Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Tue, 7 Jan 2014 16:47:27 +0100 Subject: [PATCH 096/308] Nicer module UI --- companion/src/modeledit/setup_module.ui | 266 +++++++++++++++++++----- 1 file changed, 210 insertions(+), 56 deletions(-) diff --git a/companion/src/modeledit/setup_module.ui b/companion/src/modeledit/setup_module.ui index 048c926e3..500ea2fe8 100644 --- a/companion/src/modeledit/setup_module.ui +++ b/companion/src/modeledit/setup_module.ui @@ -6,7 +6,7 @@ 0 0 - 562 + 694 340 @@ -16,12 +16,54 @@ + + + 0 + 0 + + + + + 16777215 + 16777215 + + - - + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + 700 + 16777215 + + + + QFrame::StyledPanel + + + QFrame::Sunken + + + + + + + + + + + + 16777215 + 16777215 + + Failsafe Mode @@ -30,11 +72,40 @@ - - + + + + + 16777215 + 16777215 + + + + Start + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + - + + + + + 125 + 16777215 + + + + + + + + 16777215 + 16777215 + + PPM delay @@ -43,8 +114,14 @@ - + + + + 125 + 16777215 + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter @@ -65,7 +142,7 @@ - + @@ -73,6 +150,12 @@ 0 + + + 125 + 16777215 + + Negative @@ -85,8 +168,14 @@ - + + + + 16777215 + 16777215 + + RX Number @@ -97,6 +186,18 @@ + + + 0 + 0 + + + + + 125 + 16777215 + + Master @@ -109,8 +210,14 @@ - + + + + 16777215 + 16777215 + + Polarity @@ -119,18 +226,14 @@ - - - - Protocol - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - + + + + 16777215 + 16777215 + + Trainer Mode @@ -139,14 +242,20 @@ - + - + 0 0 + + + 125 + 16777215 + + @@ -164,8 +273,20 @@ - + + + + 0 + 0 + + + + + 125 + 16777215 + + mSec @@ -186,8 +307,14 @@ - + + + + 16777215 + 16777215 + + PPM Frame Length @@ -206,8 +333,14 @@ - + + + + 125 + 16777215 + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter @@ -228,8 +361,14 @@ - + + + + 125 + 16777215 + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter @@ -250,17 +389,7 @@ - - - - Start - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - + @@ -268,6 +397,12 @@ 0 + + + 16777215 + 16777215 + + Channels @@ -276,8 +411,20 @@ - + + + + 0 + 0 + + + + + 125 + 16777215 + + Hold @@ -295,8 +442,14 @@ - + + + + 16777215 + 16777215 + + Failsafe Positions @@ -305,22 +458,7 @@ - - - - QFrame::StyledPanel - - - QFrame::Sunken - - - - - - - - - + Qt::Vertical @@ -333,6 +471,22 @@ + + + + + 16777215 + 16777215 + + + + Protocol + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + From df4c7afdbbb4beb1b31500850a46f17872daf6f9 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Wed, 8 Jan 2014 17:32:37 +0100 Subject: [PATCH 097/308] Update DONATIONS.txt --- DONATIONS.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/DONATIONS.txt b/DONATIONS.txt index 816ad3764..10871127a 100644 --- a/DONATIONS.txt +++ b/DONATIONS.txt @@ -273,3 +273,4 @@ R Wells Uwe Jordt Harald Wilczak Bernhard Lohmann +Ferenc Koller From b5435ce9405c3153b55ec564711358ec8932c8bb Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Thu, 9 Jan 2014 07:15:06 +0100 Subject: [PATCH 098/308] Update DONATIONS.txt --- DONATIONS.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/DONATIONS.txt b/DONATIONS.txt index 10871127a..12b08eb2b 100644 --- a/DONATIONS.txt +++ b/DONATIONS.txt @@ -274,3 +274,7 @@ Uwe Jordt Harald Wilczak Bernhard Lohmann Ferenc Koller +Robert Ferguson +Daniel Byers +Tyler Darby +Miguel Villalpando From 84661b20d4a8e4420cef743ea4bd8de140340359 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Thu, 9 Jan 2014 17:12:54 +0100 Subject: [PATCH 099/308] Update DONATIONS.txt --- DONATIONS.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/DONATIONS.txt b/DONATIONS.txt index 12b08eb2b..6cbf88988 100644 --- a/DONATIONS.txt +++ b/DONATIONS.txt @@ -278,3 +278,4 @@ Robert Ferguson Daniel Byers Tyler Darby Miguel Villalpando +Kim Dong Hoon From 691d568b1a7b5122c1be6e96f9d43399173b1b09 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Thu, 9 Jan 2014 18:03:22 +0100 Subject: [PATCH 100/308] FixOffset (from er9x) removed --- companion/src/eeprominterface.h | 2 - companion/src/firmwares/er9x/er9xeeprom.cpp | 2 +- .../src/firmwares/er9x/er9xinterface.cpp | 2 - companion/src/modeledit/mixerdialog.cpp | 7 - companion/src/modeledit/mixerdialog.ui | 337 +++++++++--------- 5 files changed, 161 insertions(+), 189 deletions(-) diff --git a/companion/src/eeprominterface.h b/companion/src/eeprominterface.h index a57990e14..2acda3b71 100644 --- a/companion/src/eeprominterface.h +++ b/companion/src/eeprominterface.h @@ -577,7 +577,6 @@ class MixData { MltpxValue mltpx; // multiplex method 0=+ 1=* 2=replace unsigned int mixWarn; // mixer warning unsigned int phases; // -5=!FP4, 0=normal, 5=FP4 - unsigned int lateOffset; int sOffset; char name[10+1]; @@ -995,7 +994,6 @@ enum Capability { HasPPMSim, HasCrossTrims, HasStickScroll, - HasFixOffset, HasSoundMixer, NumModules, FSSwitch, diff --git a/companion/src/firmwares/er9x/er9xeeprom.cpp b/companion/src/firmwares/er9x/er9xeeprom.cpp index 89f28f311..f07716e72 100644 --- a/companion/src/firmwares/er9x/er9xeeprom.cpp +++ b/companion/src/firmwares/er9x/er9xeeprom.cpp @@ -229,7 +229,7 @@ t_Er9xMixData::operator MixData () c9x.curve.value = curve; } - c9x.lateOffset=lateOffset; + // c9x.lateOffset=lateOffset; c9x.delayUp = delayUp; c9x.delayDown = delayDown; c9x.speedUp = speedUp; diff --git a/companion/src/firmwares/er9x/er9xinterface.cpp b/companion/src/firmwares/er9x/er9xinterface.cpp index 4f986ced7..123ec7f3b 100644 --- a/companion/src/firmwares/er9x/er9xinterface.cpp +++ b/companion/src/firmwares/er9x/er9xinterface.cpp @@ -281,8 +281,6 @@ int Er9xInterface::getCapability(const Capability capability) case HasVolume: case HasBlInvert: case ModelVoice: - case HasFixOffset: - return 1; case Gvars: return 7; case GvarsHaveSources: diff --git a/companion/src/modeledit/mixerdialog.cpp b/companion/src/modeledit/mixerdialog.cpp index 33c374ef9..896cdad56 100644 --- a/companion/src/modeledit/mixerdialog.cpp +++ b/companion/src/modeledit/mixerdialog.cpp @@ -83,16 +83,11 @@ MixerDialog::MixerDialog(QWidget *parent, MixData *mixdata, int stickMode) : populateCurveReference(ui->curveTypeCB, ui->curveGVarCB, ui->curveValueCB, ui->curveValueSB, md->curve, 0); - ui->FixOffsetChkB->setChecked(md->lateOffset); ui->MixDR_CB->setChecked(md->noExpo==0); if (!GetEepromInterface()->getCapability(MixesWithoutExpo)) { ui->MixDR_CB->hide(); ui->label_MixDR->hide(); } - if (!GetEepromInterface()->getCapability(HasFixOffset)) { - ui->FixOffsetChkB->hide(); - ui->label_FixOffset->hide(); - } if (GetEepromInterface()->getCapability(ExtraTrims)) { ui->trimCB->addItem(tr("Rud"),1); ui->trimCB->addItem(tr("Ele"),2); @@ -171,7 +166,6 @@ MixerDialog::MixerDialog(QWidget *parent, MixData *mixdata, int stickMode) : connect(ui->offsetGV,SIGNAL(stateChanged(int)),this,SLOT(widgetChanged())); connect(ui->trimCB,SIGNAL(currentIndexChanged(int)),this,SLOT(valuesChanged())); connect(ui->MixDR_CB,SIGNAL(toggled(bool)),this,SLOT(valuesChanged())); - connect(ui->FixOffsetChkB,SIGNAL(toggled(bool)),this,SLOT(valuesChanged())); connect(ui->switchesCB,SIGNAL(currentIndexChanged(int)),this,SLOT(valuesChanged())); connect(ui->warningCB,SIGNAL(currentIndexChanged(int)),this,SLOT(valuesChanged())); connect(ui->mltpxCB,SIGNAL(currentIndexChanged(int)),this,SLOT(valuesChanged())); @@ -261,7 +255,6 @@ void MixerDialog::valuesChanged() } md->carryTrim = -(ui->trimCB->currentIndex()-1); md->noExpo = ui->MixDR_CB->checkState() ? 0 : 1; - md->lateOffset = ui->FixOffsetChkB->checkState() ? 1 : 0; // TODO md->curve = ui->curvesCB->currentIndex()-(numcurves)*GetEepromInterface()->getCapability(HasNegCurves); // TODO if (ui->differentialGV->isChecked()) { diff --git a/companion/src/modeledit/mixerdialog.ui b/companion/src/modeledit/mixerdialog.ui index 3eec442eb..c41bf2563 100644 --- a/companion/src/modeledit/mixerdialog.ui +++ b/companion/src/modeledit/mixerdialog.ui @@ -178,30 +178,6 @@ p, li { white-space: pre-wrap; } - - - - Include DR/Expo - - - - - - - - 0 - 0 - - - - - - - - Flight modes - - - @@ -209,146 +185,21 @@ p, li { white-space: pre-wrap; } - - + + - Switch + Offset - - + + - + Weight - - - - The curve used by the mix - - - - - - - Mixer warning. -Setting this value will cause a beep to be emmitted when this value is active. - - - - OFF - - - - - 1 Beep - - - - - 2 Beep - - - - - 3 Beep - - - - - - - - Fix Offset - - - - - - - - No - - - - - Yes - - - - - - - - - - GV - - - - - - - The source for the mixer - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - Multiplexer - -This determines how mixer values are added. - -"+" means the value of the current mix is added to the previous mixes in the same channel. -"*" means the value of the current mix is amultiplied with the previous mixes in the same channel. -"R" means the value replaces the previous values. If the switch is off the value will be ignored. - - - - ADD - - - - - MULTIPLY - - - - - REPLACE - - - - - - - - The source for the mixer - - - - + @@ -505,20 +356,6 @@ This determines how mixer values are added. - - - - Warning - - - - - - - Multiplex - - - @@ -533,17 +370,163 @@ This determines how mixer values are added. - - + + - Weight + Multiplex - - + + - Offset + Warning + + + + + + + The curve used by the mix + + + + + + + Include DR/Expo + + + + + + + Flight modes + + + + + + + Switch + + + + + + + + + + + + + + Mixer warning. +Setting this value will cause a beep to be emmitted when this value is active. + + + + OFF + + + + + 1 Beep + + + + + 2 Beep + + + + + 3 Beep + + + + + + + + + No + + + + + Yes + + + + + + + + + + GV + + + + + + + The source for the mixer + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + Multiplexer + +This determines how mixer values are added. + +"+" means the value of the current mix is added to the previous mixes in the same channel. +"*" means the value of the current mix is amultiplied with the previous mixes in the same channel. +"R" means the value replaces the previous values. If the switch is off the value will be ignored. + + + + ADD + + + + + MULTIPLY + + + + + REPLACE + + + + + + + + The source for the mixer @@ -588,7 +571,7 @@ This determines how mixer values are added. - + Switch used by the mix. From ef3f8a7405a6520a53ce2a46a72bbfc9c507d836 Mon Sep 17 00:00:00 2001 From: mhotar Date: Thu, 9 Jan 2014 18:35:25 +0100 Subject: [PATCH 101/308] Font definitions --- radio/src/fonts/sqt5/.gitignore | 1 + radio/src/fonts/sqt5/font_04x06.lbm | 6 ------ radio/src/fonts/sqt5/font_04x06.png | Bin 967 -> 957 bytes radio/src/fonts/sqt5/font_04x06_extra.lbm | 1 - radio/src/fonts/sqt5/font_05x07.lbm | 6 ------ radio/src/fonts/sqt5/font_05x07.png | Bin 969 -> 999 bytes .../fonts/sqt5/font_05x07_B_compressed.png | Bin 0 -> 448 bytes radio/src/fonts/sqt5/font_08x10.lbm | 6 ------ radio/src/fonts/sqt5/font_08x10.png | Bin 1469 -> 1535 bytes radio/src/fonts/sqt5/font_10x14.lbm | 6 ------ .../src/fonts/sqt5/font_10x14_compressed.lbm | 1 - .../src/fonts/sqt5/font_10x14_compressed.png | Bin 1184 -> 1198 bytes radio/src/fonts/sqt5/font_cz_04x06.lbm | 1 - radio/src/fonts/sqt5/font_cz_05x07.lbm | 1 - radio/src/fonts/sqt5/font_cz_05x07.png | Bin 317 -> 317 bytes radio/src/fonts/sqt5/font_cz_08x10.lbm | 1 - radio/src/fonts/sqt5/font_cz_08x10.png | Bin 284 -> 287 bytes radio/src/fonts/sqt5/font_cz_10x14.lbm | 1 - radio/src/fonts/sqt5/font_cz_10x14.png | Bin 359 -> 357 bytes radio/src/fonts/sqt5/font_de_04x06.lbm | 1 - radio/src/fonts/sqt5/font_de_05x07.lbm | 1 - radio/src/fonts/sqt5/font_de_08x10.lbm | 1 - radio/src/fonts/sqt5/font_de_10x14.lbm | 1 - radio/src/fonts/sqt5/font_es_04x06.lbm | 1 - radio/src/fonts/sqt5/font_es_05x07.lbm | 1 - radio/src/fonts/sqt5/font_es_08x10.lbm | 1 - radio/src/fonts/sqt5/font_es_10x14.lbm | 1 - radio/src/fonts/sqt5/font_fr_04x06.lbm | 1 - radio/src/fonts/sqt5/font_fr_04x06.png | Bin 3571 -> 3572 bytes radio/src/fonts/sqt5/font_fr_05x07.lbm | 1 - radio/src/fonts/sqt5/font_fr_05x07.png | Bin 172 -> 174 bytes radio/src/fonts/sqt5/font_fr_08x10.lbm | 1 - radio/src/fonts/sqt5/font_fr_08x10.png | Bin 3599 -> 3604 bytes radio/src/fonts/sqt5/font_fr_10x14.lbm | 1 - radio/src/fonts/sqt5/font_fr_10x14.png | Bin 198 -> 201 bytes radio/src/fonts/sqt5/font_it_04x06.lbm | 1 - radio/src/fonts/sqt5/font_it_05x07.lbm | 1 - radio/src/fonts/sqt5/font_it_08x10.lbm | 1 - radio/src/fonts/sqt5/font_it_10x14.lbm | 1 - radio/src/fonts/sqt5/font_pl_04x06.lbm | 1 - radio/src/fonts/sqt5/font_pl_04x06.png | Bin 228 -> 227 bytes radio/src/fonts/sqt5/font_pl_05x07.lbm | 1 - radio/src/fonts/sqt5/font_pl_05x07.png | Bin 251 -> 251 bytes radio/src/fonts/sqt5/font_pl_08x10.lbm | 1 - radio/src/fonts/sqt5/font_pl_08x10.png | Bin 303 -> 305 bytes radio/src/fonts/sqt5/font_pl_10x14.lbm | 1 - radio/src/fonts/sqt5/font_pl_10x14.png | Bin 388 -> 390 bytes radio/src/fonts/sqt5/font_pt_04x06.lbm | 1 - radio/src/fonts/sqt5/font_pt_05x07.lbm | 1 - radio/src/fonts/sqt5/font_pt_05x07.png | Bin 244 -> 246 bytes radio/src/fonts/sqt5/font_pt_08x10.lbm | 1 - radio/src/fonts/sqt5/font_pt_08x10.png | Bin 302 -> 305 bytes radio/src/fonts/sqt5/font_pt_10x14.lbm | 1 - radio/src/fonts/sqt5/font_pt_10x14.png | Bin 384 -> 388 bytes radio/src/fonts/sqt5/font_se_04x06.lbm | 1 - radio/src/fonts/sqt5/font_se_05x07.lbm | 1 - radio/src/fonts/sqt5/font_se_08x10.lbm | 1 - radio/src/fonts/sqt5/font_se_10x14.lbm | 1 - radio/src/fonts/std/.gitignore | 1 + radio/src/fonts/std/font_03x05.lbm | 1 - radio/src/fonts/std/font_04x06.lbm | 6 ------ radio/src/fonts/std/font_04x06_extra.lbm | 1 - radio/src/fonts/std/font_05x07.lbm | 6 ------ radio/src/fonts/std/font_05x07.png | Bin 623 -> 638 bytes .../src/fonts/std/font_05x07_B_compressed.lbm | 1 - radio/src/fonts/std/font_05x07_extra.lbm | 1 - radio/src/fonts/std/font_08x10.lbm | 6 ------ radio/src/fonts/std/font_08x10.png | Bin 868 -> 866 bytes radio/src/fonts/std/font_10x14.lbm | 6 ------ radio/src/fonts/std/font_10x14_compressed.lbm | 1 - radio/src/fonts/std/font_10x14_extra.lbm | 1 - radio/src/fonts/std/font_cz_04x06.lbm | 1 - radio/src/fonts/std/font_cz_05x07.lbm | 1 - radio/src/fonts/std/font_cz_08x10.lbm | 1 - radio/src/fonts/std/font_cz_10x14.lbm | 1 - radio/src/fonts/std/font_de_04x06.lbm | 1 - radio/src/fonts/std/font_de_05x07.lbm | 1 - radio/src/fonts/std/font_de_08x10.lbm | 1 - radio/src/fonts/std/font_de_10x14.lbm | 1 - radio/src/fonts/std/font_es_04x06.lbm | 1 - radio/src/fonts/std/font_es_05x07.lbm | 1 - radio/src/fonts/std/font_es_08x10.lbm | 1 - radio/src/fonts/std/font_es_10x14.lbm | 1 - radio/src/fonts/std/font_fr_04x06.lbm | 1 - radio/src/fonts/std/font_fr_05x07.lbm | 1 - radio/src/fonts/std/font_fr_08x10.lbm | 1 - radio/src/fonts/std/font_fr_10x14.lbm | 1 - radio/src/fonts/std/font_it_04x06.lbm | 1 - radio/src/fonts/std/font_it_05x07.lbm | 1 - radio/src/fonts/std/font_it_08x10.lbm | 1 - radio/src/fonts/std/font_it_10x14.lbm | 1 - radio/src/fonts/std/font_pl_04x06.lbm | 1 - radio/src/fonts/std/font_pl_05x07.lbm | 1 - radio/src/fonts/std/font_pl_08x10.lbm | 1 - radio/src/fonts/std/font_pl_10x14.lbm | 1 - radio/src/fonts/std/font_pt_04x06.lbm | 1 - radio/src/fonts/std/font_pt_05x07.lbm | 1 - radio/src/fonts/std/font_pt_08x10.lbm | 1 - radio/src/fonts/std/font_pt_10x14.lbm | 1 - radio/src/fonts/std/font_se_04x06.lbm | 1 - radio/src/fonts/std/font_se_05x07.lbm | 1 - radio/src/fonts/std/font_se_08x10.lbm | 1 - radio/src/fonts/std/font_se_10x14.lbm | 1 - 103 files changed, 2 insertions(+), 120 deletions(-) create mode 100644 radio/src/fonts/sqt5/.gitignore delete mode 100644 radio/src/fonts/sqt5/font_04x06.lbm delete mode 100644 radio/src/fonts/sqt5/font_04x06_extra.lbm delete mode 100644 radio/src/fonts/sqt5/font_05x07.lbm create mode 100644 radio/src/fonts/sqt5/font_05x07_B_compressed.png delete mode 100644 radio/src/fonts/sqt5/font_08x10.lbm delete mode 100644 radio/src/fonts/sqt5/font_10x14.lbm delete mode 100644 radio/src/fonts/sqt5/font_10x14_compressed.lbm delete mode 100644 radio/src/fonts/sqt5/font_cz_04x06.lbm delete mode 100644 radio/src/fonts/sqt5/font_cz_05x07.lbm delete mode 100644 radio/src/fonts/sqt5/font_cz_08x10.lbm delete mode 100644 radio/src/fonts/sqt5/font_cz_10x14.lbm delete mode 100644 radio/src/fonts/sqt5/font_de_04x06.lbm delete mode 100644 radio/src/fonts/sqt5/font_de_05x07.lbm delete mode 100644 radio/src/fonts/sqt5/font_de_08x10.lbm delete mode 100644 radio/src/fonts/sqt5/font_de_10x14.lbm delete mode 100644 radio/src/fonts/sqt5/font_es_04x06.lbm delete mode 100644 radio/src/fonts/sqt5/font_es_05x07.lbm delete mode 100644 radio/src/fonts/sqt5/font_es_08x10.lbm delete mode 100644 radio/src/fonts/sqt5/font_es_10x14.lbm delete mode 100644 radio/src/fonts/sqt5/font_fr_04x06.lbm delete mode 100644 radio/src/fonts/sqt5/font_fr_05x07.lbm delete mode 100644 radio/src/fonts/sqt5/font_fr_08x10.lbm delete mode 100644 radio/src/fonts/sqt5/font_fr_10x14.lbm delete mode 100644 radio/src/fonts/sqt5/font_it_04x06.lbm delete mode 100644 radio/src/fonts/sqt5/font_it_05x07.lbm delete mode 100644 radio/src/fonts/sqt5/font_it_08x10.lbm delete mode 100644 radio/src/fonts/sqt5/font_it_10x14.lbm delete mode 100644 radio/src/fonts/sqt5/font_pl_04x06.lbm delete mode 100644 radio/src/fonts/sqt5/font_pl_05x07.lbm delete mode 100644 radio/src/fonts/sqt5/font_pl_08x10.lbm delete mode 100644 radio/src/fonts/sqt5/font_pl_10x14.lbm delete mode 100644 radio/src/fonts/sqt5/font_pt_04x06.lbm delete mode 100644 radio/src/fonts/sqt5/font_pt_05x07.lbm delete mode 100644 radio/src/fonts/sqt5/font_pt_08x10.lbm delete mode 100644 radio/src/fonts/sqt5/font_pt_10x14.lbm delete mode 100644 radio/src/fonts/sqt5/font_se_04x06.lbm delete mode 100644 radio/src/fonts/sqt5/font_se_05x07.lbm delete mode 100644 radio/src/fonts/sqt5/font_se_08x10.lbm delete mode 100644 radio/src/fonts/sqt5/font_se_10x14.lbm create mode 100644 radio/src/fonts/std/.gitignore delete mode 100644 radio/src/fonts/std/font_03x05.lbm delete mode 100644 radio/src/fonts/std/font_04x06.lbm delete mode 100644 radio/src/fonts/std/font_04x06_extra.lbm delete mode 100644 radio/src/fonts/std/font_05x07.lbm delete mode 100644 radio/src/fonts/std/font_05x07_B_compressed.lbm delete mode 100644 radio/src/fonts/std/font_05x07_extra.lbm delete mode 100644 radio/src/fonts/std/font_08x10.lbm delete mode 100644 radio/src/fonts/std/font_10x14.lbm delete mode 100644 radio/src/fonts/std/font_10x14_compressed.lbm delete mode 100644 radio/src/fonts/std/font_10x14_extra.lbm delete mode 100644 radio/src/fonts/std/font_cz_04x06.lbm delete mode 100644 radio/src/fonts/std/font_cz_05x07.lbm delete mode 100644 radio/src/fonts/std/font_cz_08x10.lbm delete mode 100644 radio/src/fonts/std/font_cz_10x14.lbm delete mode 100644 radio/src/fonts/std/font_de_04x06.lbm delete mode 100644 radio/src/fonts/std/font_de_05x07.lbm delete mode 100644 radio/src/fonts/std/font_de_08x10.lbm delete mode 100644 radio/src/fonts/std/font_de_10x14.lbm delete mode 100644 radio/src/fonts/std/font_es_04x06.lbm delete mode 100644 radio/src/fonts/std/font_es_05x07.lbm delete mode 100644 radio/src/fonts/std/font_es_08x10.lbm delete mode 100644 radio/src/fonts/std/font_es_10x14.lbm delete mode 100644 radio/src/fonts/std/font_fr_04x06.lbm delete mode 100644 radio/src/fonts/std/font_fr_05x07.lbm delete mode 100644 radio/src/fonts/std/font_fr_08x10.lbm delete mode 100644 radio/src/fonts/std/font_fr_10x14.lbm delete mode 100644 radio/src/fonts/std/font_it_04x06.lbm delete mode 100644 radio/src/fonts/std/font_it_05x07.lbm delete mode 100644 radio/src/fonts/std/font_it_08x10.lbm delete mode 100644 radio/src/fonts/std/font_it_10x14.lbm delete mode 100644 radio/src/fonts/std/font_pl_04x06.lbm delete mode 100644 radio/src/fonts/std/font_pl_05x07.lbm delete mode 100644 radio/src/fonts/std/font_pl_08x10.lbm delete mode 100644 radio/src/fonts/std/font_pl_10x14.lbm delete mode 100644 radio/src/fonts/std/font_pt_04x06.lbm delete mode 100644 radio/src/fonts/std/font_pt_05x07.lbm delete mode 100644 radio/src/fonts/std/font_pt_08x10.lbm delete mode 100644 radio/src/fonts/std/font_pt_10x14.lbm delete mode 100644 radio/src/fonts/std/font_se_04x06.lbm delete mode 100644 radio/src/fonts/std/font_se_05x07.lbm delete mode 100644 radio/src/fonts/std/font_se_08x10.lbm delete mode 100644 radio/src/fonts/std/font_se_10x14.lbm diff --git a/radio/src/fonts/sqt5/.gitignore b/radio/src/fonts/sqt5/.gitignore new file mode 100644 index 000000000..82b82bcbf --- /dev/null +++ b/radio/src/fonts/sqt5/.gitignore @@ -0,0 +1 @@ +/*.lbm diff --git a/radio/src/fonts/sqt5/font_04x06.lbm b/radio/src/fonts/sqt5/font_04x06.lbm deleted file mode 100644 index f15e99975..000000000 --- a/radio/src/fonts/sqt5/font_04x06.lbm +++ /dev/null @@ -1,6 +0,0 @@ -0x00,0x00,0x7f,0x7f,0x7f,0x00,0x00,0x2f,0x7f,0x7f,0x00,0x07,0x00,0x07,0x7f,0x14,0x3e,0x14,0x3e,0x14,0x04,0x2a,0x3e,0x2a,0x10,0x13,0x08,0x04,0x32,0x7f,0x14,0x2a,0x14,0x20,0x7f,0x00,0x00,0x07,0x7f,0x7f,0x00,0x1e,0x21,0x7f,0x7f,0x00,0x21,0x1e,0x7f,0x7f,0x00,0x2a,0x1c,0x2a,0x7f,0x08,0x08,0x3e,0x08,0x08,0x00,0x40,0x30,0x10,0x7f,0x08,0x08,0x08,0x08,0x7f,0x00,0x30,0x30,0x7f,0x7f,0x10,0x08,0x04,0x02,0x7f, -0x1e,0x21,0x21,0x1e,0x7f,0x00,0x22,0x3f,0x20,0x7f,0x22,0x31,0x29,0x26,0x7f,0x21,0x25,0x25,0x1a,0x7f,0x0c,0x0a,0x3f,0x08,0x7f,0x17,0x25,0x25,0x19,0x7f,0x1e,0x25,0x25,0x18,0x7f,0x01,0x31,0x0d,0x03,0x7f,0x1a,0x25,0x25,0x1a,0x7f,0x06,0x29,0x29,0x1e,0x7f,0x00,0x36,0x36,0x00,0x7f,0x00,0x36,0x16,0x00,0x7f,0x00,0x08,0x14,0x22,0x7f,0x14,0x14,0x14,0x14,0x7f,0x00,0x22,0x14,0x08,0x7f,0x00,0x02,0x29,0x06,0x7f, -0x00,0x02,0x05,0x02,0x7f,0x3e,0x09,0x09,0x3e,0x7f,0x3f,0x25,0x27,0x3c,0x7f,0x1e,0x21,0x21,0x21,0x7f,0x3f,0x21,0x21,0x1e,0x7f,0x3f,0x25,0x25,0x21,0x7f,0x3f,0x05,0x05,0x01,0x7f,0x1e,0x21,0x29,0x39,0x7f,0x3f,0x04,0x04,0x3f,0x7f,0x00,0x21,0x3f,0x21,0x7f,0x10,0x20,0x21,0x1f,0x7f,0x3f,0x0c,0x12,0x21,0x7f,0x3f,0x20,0x20,0x20,0x7f,0x3f,0x01,0x07,0x01,0x3f,0x3f,0x01,0x01,0x3e,0x7f,0x1e,0x21,0x21,0x1e,0x7f, -0x3f,0x09,0x09,0x0f,0x7f,0x3f,0x21,0x31,0x3f,0x7f,0x3f,0x09,0x0f,0x38,0x7f,0x22,0x25,0x25,0x19,0x7f,0x00,0x01,0x3f,0x01,0x7f,0x1f,0x20,0x20,0x1f,0x7f,0x3f,0x20,0x10,0x0f,0x7f,0x3f,0x20,0x18,0x20,0x3f,0x37,0x08,0x08,0x37,0x7f,0x00,0x07,0x38,0x07,0x7f,0x31,0x29,0x25,0x23,0x7f,0x00,0x3f,0x21,0x21,0x7f,0x02,0x04,0x08,0x10,0x7f,0x00,0x21,0x21,0x3f,0x7f,0x00,0x02,0x01,0x02,0x7f,0x20,0x20,0x20,0x20,0x7f, -0x00,0x01,0x02,0x00,0x7f,0x3a,0x2a,0x2a,0x3e,0x7f,0x3f,0x22,0x22,0x3e,0x7f,0x3e,0x22,0x22,0x22,0x7f,0x3e,0x22,0x22,0x3f,0x7f,0x3e,0x2a,0x2a,0x2e,0x7f,0x28,0x3f,0x29,0x01,0x7f,0x2e,0x2a,0x2a,0x3e,0x7f,0x3f,0x02,0x02,0x3e,0x7f,0x00,0x24,0x3d,0x20,0x7f,0x40,0x44,0x3d,0x7f,0x7f,0x3f,0x08,0x14,0x22,0x7f,0x21,0x3f,0x20,0x7f,0x7f,0x3e,0x02,0x3e,0x02,0x3c,0x3e,0x02,0x02,0x3c,0x7f,0x1c,0x22,0x22,0x1c,0x7f, -0x3e,0x12,0x12,0x1e,0x7f,0x1e,0x12,0x12,0x3e,0x7f,0x3e,0x02,0x02,0x04,0x7f,0x2e,0x2a,0x2a,0x3a,0x7f,0x1f,0x24,0x20,0x7f,0x7f,0x3e,0x20,0x20,0x3e,0x7f,0x3e,0x20,0x10,0x0e,0x7f,0x3e,0x20,0x10,0x20,0x3e,0x36,0x08,0x08,0x36,0x7f,0x2e,0x28,0x28,0x3e,0x7f,0x22,0x32,0x2a,0x26,0x7f,0x00,0x04,0x1e,0x21,0x7f,0x00,0x00,0x3f,0x00,0x7f,0x00,0x21,0x1e,0x04,0x7f,0x08,0x2a,0x1c,0x08,0x7f,0x00,0x08,0x1c,0x2a,0x08, diff --git a/radio/src/fonts/sqt5/font_04x06.png b/radio/src/fonts/sqt5/font_04x06.png index ba19ad02b1791476f85fc807c8c8e4935ea6f468..07cdcbddd954fb7d074ad1e340cf655b7829c0a5 100644 GIT binary patch delta 889 zcmV-<1BU#^2fYW7QGeb62?-z?!@pOO0009@Nkl%|I7Bl)>1CR zV6ycgXOkEOg&Dx@YpvE=@4dxst+hMs&Qa^VpAPbOH2xXZeG(0oP9$F`nS1Y}726)= zh}D0Z?USyfl2z%iCQ3&mB_G$?Zaufe@_HWbAJD8(2+Nk#~{9PTPS*2kZ>Ks+zfD1S1BG}6FwFt;FEI{w=Rv}jeOxUZX2~g^uNTitMDZ8a(0-U+s>-O1|U-^ zv5H}AK%%&}R7f~KCWz_Xx)dlir5xsdYYS#JY{pVWyhxVfD2OMcB?iMU4Bm}2aPi=D z9*mS~Ie!5kyy)tHid_#UiwC1BM~O?`s=QU<0Bplx*ivO7PXJRP5GeYknZ}(AGfnFs zvSnmlHsh~`8FxC*Qq?ocHeCX^tIGi~z>JK{-wKn|0>V$g3QUR1Jzl|d2xM>AEScLUG#M9NlFa82qy+`FdkD!WG65`RdZfQc!qnK<0BpykFxOc5*XoSH6x z09Et{_0U;8r{R&t;ud)*%bZJGx0kaeWtQm~MK$JmGmiUQz{J;a_!3WA&2f)1T5H6SkuNlqpeR P00000NkvXXu0mjfmn@_m delta 899 zcmV-}1AP3w2ge7HQGeYG6&4*1z&vpz000A2Nkl{^x? z1~hIrhrT4W3NkQ&y>-~AFu1WKj*j6b&te*`?#@?n@TK-GT>CbEnfF5 zQ_$<@!ZG%yBJ0$aE|ktzl)P_id+T{iY(K3roeoRaw0S#m&3~zSW#Q;^>SIkhMWhnf z6~N84H*O>a8ii69N~S_s<*mWzfQJ@#n`>{Z@-K6_uh4P2P^@BYs~Z|q>x@o|;YaUR z1ut$)U!BNmYj>Ca+zr+X(Mh5K+PzVvUkYm`aPYA1oGG2)rp z-wlq$MG+&HrZ%L|r4g}|X$d1(wy0!6OOZx{#p*+OIC7|AO@}l~;}bQAeTj*2I#`%m z*qnyj$k*;SLx4x*EQPp2TST0DWh&A0Dlg{xSW1N`9Dn=zAbFwN9#D6 zrqLJ{u?SMGs20+|lm1o^UQg>1EYoyY(zGN7KM8pCYlz66QcESSh%9|+<_(t#Q_FfH z`Z2LYR6k?k;@Y?>rIt!1kM(9ExUQILhbRP8%-fFe9*OwDwh!ra`zsti4 zwTSdnu!899QA3HEKF!0$rud_l`u402i~8eH)PF$EqXvxLm-xb!hsU$XVxsDr=}1dO zE<}it@{nRl9P_2+p>A13gHz}pDG$dUhAY^{xRsKp$lFhqhli^r2g~$~Vm0SEnZ$j* zBz)51sT=@NZ&j7YKR)Wdq&|+&M-csp$F72{l10%_9C>w7k_8l3U|D>mz|)|`xS$^! z9DFIy`;oGRrlo`bO3;~81w{B48QzFr3X=K+Xd~+CqF*0h=<1aofDPTmsHd#OY6(vs z#X;=eZsK2RtiearYO3VAQBO}t<6;(FS*{rNtib|_iK8R|q ZeE~F^pg8@0=Y{|P002ovPDHLkV1h?GxnKYQ diff --git a/radio/src/fonts/sqt5/font_04x06_extra.lbm b/radio/src/fonts/sqt5/font_04x06_extra.lbm deleted file mode 100644 index cce1e9d68..000000000 --- a/radio/src/fonts/sqt5/font_04x06_extra.lbm +++ /dev/null @@ -1 +0,0 @@ -0x04,0x02,0x3b,0x02,0x04,0x08,0x10,0x37,0x10,0x08,0x20,0x12,0x0a,0x02,0x1e,0x02,0x24,0x28,0x20,0x3c,0x3c,0x20,0x28,0x24,0x02,0x1e,0x02,0x0a,0x12,0x20, diff --git a/radio/src/fonts/sqt5/font_05x07.lbm b/radio/src/fonts/sqt5/font_05x07.lbm deleted file mode 100644 index 784e4bd93..000000000 --- a/radio/src/fonts/sqt5/font_05x07.lbm +++ /dev/null @@ -1,6 +0,0 @@ -0x00,0x00,0xff,0xff,0xff,0x00,0x00,0x00,0x6f,0x00,0x00,0x07,0x00,0x07,0x00,0x18,0x30,0x18,0x0c,0x06,0x3e,0x7f,0x7b,0x7f,0x3e,0x23,0x13,0x08,0x64,0x62,0x36,0x49,0x55,0x22,0x50,0x00,0x05,0x03,0x00,0x00,0x00,0x1c,0x22,0x41,0x00,0x00,0x41,0x22,0x1c,0x00,0x14,0x08,0x3e,0x08,0x14,0x08,0x08,0x3e,0x08,0x08,0x00,0x50,0x30,0x00,0x00,0x00,0x08,0x08,0x08,0x08,0x40,0xff,0xff,0xff,0xff,0x20,0x10,0x08,0x04,0x02, -0x3e,0x41,0x41,0x3e,0xff,0x00,0x42,0x7f,0x40,0xff,0x62,0x51,0x49,0x46,0xff,0x41,0x49,0x49,0x36,0xff,0x18,0x14,0x12,0x7f,0xff,0x27,0x45,0x45,0x39,0xff,0x3e,0x49,0x49,0x32,0xff,0x01,0x79,0x05,0x03,0xff,0x36,0x49,0x49,0x36,0xff,0x06,0x49,0x29,0x1e,0xff,0x00,0x00,0x36,0x36,0x00,0x00,0x00,0x56,0x36,0x00,0x08,0x14,0x22,0x41,0xff,0x14,0x14,0x14,0x14,0x14,0x41,0x22,0x14,0x08,0xff,0x03,0x01,0x51,0x09,0x07, -0x06,0x09,0x09,0x06,0x00,0x7e,0x09,0x09,0x09,0x7e,0x7f,0x49,0x49,0x4f,0x78,0x3e,0x41,0x41,0x41,0x41,0x7f,0x41,0x41,0x41,0x3e,0x7f,0x49,0x49,0x49,0x41,0x7f,0x09,0x09,0x09,0x01,0x3e,0x41,0x49,0x49,0x79,0x7f,0x08,0x08,0x08,0x7f,0x41,0x7f,0x41,0xff,0xff,0x40,0x41,0x3f,0x01,0xff,0x7f,0x08,0x14,0x22,0x41,0x7f,0x40,0x40,0x40,0x40,0x7f,0x01,0x0f,0x01,0x7f,0x7f,0x01,0x01,0x01,0x7e,0x3e,0x41,0x41,0x41,0x3e, -0x7f,0x09,0x09,0x09,0x06,0x3e,0x41,0x51,0x21,0x5e,0x7f,0x09,0x09,0x0f,0x78,0x46,0x49,0x49,0x49,0x31,0x01,0x01,0x7f,0x01,0x01,0x3f,0x40,0x40,0x40,0x3f,0x7f,0x40,0x20,0x10,0x0f,0x7f,0x40,0x30,0x40,0x7f,0x63,0x14,0x08,0x14,0x63,0x0f,0x08,0x78,0x08,0x0f,0x61,0x51,0x49,0x45,0x43,0x00,0x7f,0x41,0x41,0x00,0x02,0x04,0x08,0x10,0x20,0x00,0x41,0x41,0x7f,0x00,0x04,0x02,0x01,0x02,0x04,0x40,0x40,0x40,0x40,0x40, -0x00,0x01,0x02,0x04,0x00,0x74,0x54,0x54,0x54,0x7c,0x7f,0x44,0x44,0x44,0x7c,0x7c,0x44,0x44,0x44,0x44,0x7c,0x44,0x44,0x44,0x7f,0x7c,0x54,0x54,0x54,0x5c,0x44,0x7f,0x45,0x01,0xff,0x5c,0x54,0x54,0x54,0x7c,0x7f,0x04,0x04,0x04,0x7c,0x44,0x7d,0x40,0xff,0xff,0x40,0x44,0x3d,0xff,0xff,0x7f,0x10,0x28,0x44,0xff,0x41,0x7f,0x40,0xff,0xff,0x7c,0x04,0x1c,0x04,0x7c,0x7c,0x04,0x04,0x04,0x78,0x38,0x44,0x44,0x44,0x38, -0x7c,0x14,0x14,0x14,0x1c,0x1c,0x14,0x14,0x14,0x7c,0x7c,0x04,0x04,0x04,0x0c,0x5c,0x54,0x54,0x54,0x74,0x3f,0x44,0x40,0xff,0xff,0x7c,0x40,0x40,0x40,0x7c,0x7c,0x40,0x20,0x10,0x0c,0x7c,0x40,0x20,0x40,0x7c,0x44,0x28,0x10,0x28,0x44,0x5c,0x50,0x50,0x50,0x7c,0x44,0x64,0x54,0x4c,0x44,0x10,0x08,0x10,0x08,0xff,0x7f,0xff,0xff,0xff,0xff,0x41,0x22,0x54,0x28,0xff,0x08,0x08,0x22,0x1c,0x08,0x08,0x1c,0x22,0x08,0x08, diff --git a/radio/src/fonts/sqt5/font_05x07.png b/radio/src/fonts/sqt5/font_05x07.png index 85f3c9e90fd3b777775ba3c4d77abb55dfac4a54..01f19e8ea68fe92b216868a1f69bd79cacd42ff9 100644 GIT binary patch delta 932 zcmV;V16%yb2j>TnQGeb62@x9-obx8QiRHBhx-{~QUBbR!Z|p*9Q90JGNO-E%%MxB6RQWDI;rfRLM%bhLcAs&6-AWV%*hJ(Pn5ss}TbWAA+=`5#og!!{4|V}zQ_#F9hw9>P+8hb<^2E#LK+H((@{ z0)w{m9OC4H6J50|e~ys2;U!lu$UI1)N6eciNq$6LKsN)fK@ZCfxI}_{WD6`d~Uzn0n zmmCgTrZeFU1-bivwDcc-VPBF5Byv6yHUNlfTr}?1QorZJD?V-S#6R@p5CNF?$phY>z2h-9EIUO9?9r|IJv+)DK`NOcl{7Oy$0000e3@NijQOgX{PB5~!_*f$z%JBIv`Lj+?%tVH z&MTj1?-*llgk4)PDMz9?_c!7`xP=dUiVgJaigfZ!wsMEtF@Hu6$2~MDcq8H@8&(nW zh?SE|$-7FyF|4TSoKGZM(yQdjO#qjM`d3Y^z!lCG=&%bUDQz;ZRBytqtF(3r^zYK% z)r}S+Wh$`ZM`4oi?5Z?+C6G~TX{UhP(x)3y=`Qs_ZMJKoT%aQSyZ^eq_BGEKa_rW3 zw${2-JWIXmb$>Z@w{wCS{i}K{8DZRll!bT)-w!W266;!B3NpG^aH?|A*%YQ6Navk| z!avzaA`=ejjM2)tcjN;4s#z!aM__TsSPbVO%`J$Hky3$227yQ|H-Vb*VUlMaqAOB6 z3KfwJLx2elZ)n3qKWwqau>(WPq^b}By1C)zYbLtNXn(%`sB#@*3~Vg5PcE7>96Uth ziz<#fN%W=AT-1?hJ_LxhG)jS8>mB;u&~@MKJMD-M?`T)7C^CsS@-bnE_71nP(IOj> zQB+qI%QGi^ByV4WG;z^u5?)HR5a4I9StHkV{=^UEIoF2puO+~twcnkeguXThP6p4J z%x=k8@PAq_ud6eoMd%>WvYX28tLqXoHl;yE?*4TP#1ZTEhUP%li5&^^l)!G=sp?l) zCkmtYFf8>YY=cszx^57g2QcDF1%p#8$)l#4m%3|Sem_Fuz)P-P;JGiA8u^Ka4gKBx zAxR=~5ZqjaW$NqyC`7M8I=?+hfv6&;8-bxOa(}SU^HSRfS-H`ZA?LqLUPa;%f7c=WQ;7Ic1R@{J!ZMq6|D+%31u?HiWibBJOuf3&j_=R;zuIl041d=3@t+A`1 z(`l+jl{MaUOK$x* bX;%ILoBdC0WvJWl00000NkvXXu0mjfcKp2- diff --git a/radio/src/fonts/sqt5/font_05x07_B_compressed.png b/radio/src/fonts/sqt5/font_05x07_B_compressed.png new file mode 100644 index 0000000000000000000000000000000000000000..2c766c5f8e5c1d73f2f10a4c31d9d4d4ef785fe9 GIT binary patch literal 448 zcmV;x0YCnUP)n15mAy$}v7afd)l4=Q&TNb0rA0DEcZ19#IFX{q*ziV{a6-!Zt^lY9>I{ zvVqjPD+yjyV_;wqVqj(RVC-NJ;Ako2U|@K>;JmP9r-kG(9tJjtmWJtksRE4(%1VOK zEEUc`{i=-~42m3#Gg?AC4}jGgAF%M8+@Q$jJf~$MTdF|2fuWLsV8;RH2||pj&7Llb z91apKYzHSWJhEXBRzJ?+IavXu_Q*u8bb)qFNrfXUH%~ZE`1DY<(bGkNp+Q{{MYn4PyKTg#!R3I+qZG+Z><(0000B}-p^p#_f-g&rEA@1oR9a6fXJT8DVAy({#eY`bDO&b$8Jw#-xUy#8 z1)aiAR@D`pIgZ04fYw@PC^e4s2m9^t0##w%bb{*7P6FM8?oonHbJ`5(S{vrXG>E#spKifvK*9E#9#%->t?2`!Kd1$u)C_~^pQIZE z)(;JCpGsW`(0@(xpxU;{1R)88^1f~;rn6+|$Ps0wTb^F3Rb^6o)h*9ze>n9qx*_!q zT;fAbv~=vien{_8N3UTsCK``kKc9LUHqpJs*-CcUlLw?k9W-p6zVG--^09I5TiXGR zXDJ1>51&*oNlUVaDg87?27fAJR_Hku|1Tw&qMj1_bd;3M zyp(#0Us>%-VJ_=w2bW7VX*vT~56spq$AX@W!%RJ=+YR8MV+ae{P&W5vHTtHEkNv#H zt>G|XX}uIm4)v0oL1sFQTzwjfFV`RnE)D!jc8zdf$KS1v8bl*>+|-dn#Ai&zMW4Cc ze_FZb6MwjGKs>gOQM9Js$eq=K)EBEAnC=kH>y0Q&q&Ys|Ba7lcs0iTtT1?1fbg1gpVKt?v_QMH7c~^z{kQlYd+J(^@-x!IlFa(er>r;1gMHlnf3y zE-BeG@#m-J1moze8TS^JEipcxstsO2W_k^zDiyPg*H1_g^2@&Iv=Is&?62vL_vFkSN8CMX%RR*cQF-yd`Hh;y9Bd||z91MOW+E5?h!-A;6vF7wTn;Z)` z?g%F?gUn3$#^bxzld2`Qd)Xw>eF9+Dk{-x?(CI}0=M^$I@s4#FV&2D!5u3>7Ms@V6$0Xt{(~YmK@p+}k~X-RwBs%6mHSzWy#GvUN`Fc- zm5EEsuP_vh8iT8*>6xcPPZg)4x3j_roVm93;U4dSl+<+pwiN0~XPngjHYQY`5x^<7 z)~}#vYFHfUH$E2PxW+J))SD~iTLTN7`I2(9<_ z+>(CZY=UwJEE(l*$WiJo2oz}O_J6B|V`J7@0X#M&U5fVXl!0?=;_8$&ZjqH+L6BP( zC07&)i0RqsL)nm&auso6y(!XHZf>%+Q;gToSnDf`fjn>nVf?r+dsA1r;F@|;rd&N3 zi5I@~wv=fY%F0Q){WM~l&OM|0sym5IZtrgftc_@=&fwTgQxKxas@GYDTYr@yZDjcS z0xG1Zbz1VVr++-4V?>GwmAk1U aQ|ccume(dQr5$Ae0000pn& ztb~xsg@;ZKAs8gFk`{2!TI=yahIPOVxe{NVVWJ<4Tkd@@OvUI?fT+hN2M{&PC zAQxVp#!1gESZN8`e*;3^7A}s2zJqI$JyA$vf=^t6|I1a?F1EI|*rIU*y z##Dv-R?WGDcte&~RR2QHriBvgjb49V$FGQ~j1R%^0Dsr4fDk5N!)M9isl$Jei*M|q zOj=489gp>|4ZIymACdEOP5r=+u5k+J=cI#3}<-l3cI0UumAFVg8?G8MSLx;pg4 zcc8jW-G8nI=PyZ4bag-NcF;^7hkl8 z?$vgVQx3tjp1e+xP&ZK$Vw_7TKZ>xk7v%$oS% zK7b6^Np{4#u_Ff*T#ojmBDSF-KE4E+TI5k}6Qp>!4j5{zIl)XlIA!qMri?t$3gF^; zwSWE&+DI%Ow~!pn-RgCKWEE<@!reJg!RlH%)dUAK-aI($Cpcq+w|fjoZ1M>Qv)n`$ z(%!dZ@#F7>!!r4K>N%fqXC+Hb<&9@(pSyD~_!-A$^8r3CXapSJQ4UT_jtv|^(AKqL z)j?z?{NVLn$At)dJIrl!vC_D}2PfREn17T$==5d?=M_4*@CVB}h+Qb^RYflBSxw`F zTVat=4?k*Yb;4YG@X*Snh`|s;Jq0tb>GPX+A6IZYR+V2S0Ff`^ZeB0HoMpZrc|4UW z|AnDo)Hu0o8lHK|<3YYvTdJrS#IM&&c79A2I3&-mmxpvW^y?|Lb zzg&D7YywrV;*Gt@w%_TJbOS}e?iHqO+7srSA&1?<`+P#^jTz~4Iw)!2W8L`^&INJY z4*s6FguDd20$mpMs~WQPuGaW}Ba!XZ|9C)V7g`mPPvl4ox1Rn0g=ursE@ymw00000 LNkvXXu0mjfoH)CI diff --git a/radio/src/fonts/sqt5/font_10x14.lbm b/radio/src/fonts/sqt5/font_10x14.lbm deleted file mode 100644 index a53a3e8f0..000000000 --- a/radio/src/fonts/sqt5/font_10x14.lbm +++ /dev/null @@ -1,6 +0,0 @@ -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x71,0xfe,0x71,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x7e,0x00,0x00,0x00,0x00,0x00,0x7e,0x00,0x3e,0x00,0x00,0x00,0x00,0x00,0x60,0x06,0x60,0x06,0xfe,0x7f,0xfe,0x7f,0x60,0x06,0x60,0x06,0xfe,0x7f,0xfe,0x7f,0x60,0x06,0x60,0x06,0x60,0x18,0xf0,0x18,0x98,0x19,0x98,0x19,0xfe,0x7f,0xfe,0x7f,0x98,0x19,0x98,0x19,0x18,0x0f,0x18,0x06,0x0c,0x18,0x1e,0x1c,0x1e,0x0e,0x0c,0x07,0x80,0x03,0xc0,0x01,0xe0,0x30,0x70,0x78,0x38,0x78,0x18,0x30,0x78,0x1e,0xfc,0x3f,0x8e,0x71,0xc6,0x63,0xe6,0x67,0x76,0x66,0x3c,0x3c,0x18,0x3c,0x00,0x66,0x00,0x66,0x00,0x00,0x00,0x00,0x66,0x00,0x76,0x00,0x3e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x07,0xf0,0x0f,0x38,0x1c,0x1c,0x38,0x0e,0x70,0x06,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x60,0x0e,0x70,0x1c,0x38,0x38,0x1c,0xf0,0x0f,0xe0,0x07,0x00,0x00,0x00,0x00,0x60,0x06,0x60,0x06,0xc0,0x03,0x80,0x01,0xf8,0x1f,0xf8,0x1f,0x80,0x01,0xc0,0x03,0x60,0x06,0x60,0x06,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xf8,0x1f,0xf8,0x1f,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x66,0x00,0x76,0x00,0x3e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x78,0x00,0x78,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x1c,0x00,0x0e,0x00,0x07,0x80,0x03,0xc0,0x01,0xe0,0x00,0x70,0x00,0x38,0x00,0x18,0x00, -0x00,0x00,0x00,0x00,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x7e,0x0e,0x7f,0x8e,0x7f,0x86,0x63,0x86,0x61,0xfe,0x61,0xfe,0x61,0xfc,0x60,0x00,0x00,0x00,0x00,0x06,0x60,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f,0x00,0x00,0x00,0x00,0xfe,0x00,0xfe,0x01,0xfe,0x01,0x80,0x01,0x80,0x01,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x00,0x00,0x00,0xfe,0x30,0xfe,0x71,0xfe,0x71,0x86,0x61,0x86,0x61,0x86,0x7f,0x86,0x7f,0x06,0x3f,0x00,0x00,0x00,0x00,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x8e,0x7f,0x8e,0x7f,0x0c,0x3f,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x86,0x7f,0xc6,0x7f,0xfe,0x7f,0x7e,0x00,0x3e,0x00,0x00,0x00,0x00,0x00,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f,0x00,0x00,0x00,0x00,0x7c,0x30,0xfe,0x71,0xfe,0x71,0x86,0x61,0x86,0x61,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f,0x00,0x00,0x00,0x00,0x78,0x1e,0x78,0x1e,0x78,0x1e,0x78,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x66,0x78,0x76,0x78,0x3e,0x30,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0xc0,0x03,0xe0,0x07,0x70,0x0e,0x38,0x1c,0x1c,0x38,0x0e,0x70,0x06,0x60,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x06,0x60,0x0e,0x70,0x1c,0x38,0x38,0x1c,0x70,0x0e,0xe0,0x07,0xc0,0x03,0x80,0x01,0x00,0x00,0x00,0x00,0x18,0x00,0x1c,0x00,0x0e,0x00,0x06,0x00,0x06,0x66,0x06,0x67,0x86,0x03,0xce,0x01,0xfc,0x00,0x78,0x00, -0x78,0x00,0xfc,0x00,0xce,0x01,0x86,0x01,0x86,0x01,0xce,0x01,0xfc,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0xfc,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0xfe,0x7f,0xfe,0x7f,0xfc,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0xfe,0x61,0xfe,0x7f,0xfc,0x7f,0x00,0x3f,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x06,0x60,0x0e,0x70,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x06,0x00,0x06,0x00,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x7f,0x86,0x7f,0x80,0x3f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x00,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x78,0x00,0x78,0x00,0x60,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x3f,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0xc0,0x03,0xe0,0x07,0xf0,0x0f,0x78,0x1e,0x3c,0x3c,0x1e,0x78,0x0e,0x70,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0xfc,0x7f,0xfe,0x7f,0xfe,0x7f,0x06,0x00,0xfe,0x01,0xfe,0x01,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0xfc,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x06,0x00,0x06,0x00,0x06,0x00,0x0e,0x00,0xfc,0x7f,0xf8,0x7f,0xf0,0x7f,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f, -0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0xfe,0x01,0xfe,0x01,0xfc,0x00,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x66,0x06,0x6e,0x06,0x1c,0xfe,0x39,0xfe,0x73,0xfc,0x67,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0xfe,0x01,0xfe,0x7f,0xfc,0x7f,0x00,0x7f,0xfc,0x38,0xfe,0x79,0xfe,0x79,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x9e,0x7f,0x9e,0x7f,0x1c,0x3f,0x06,0x00,0x06,0x00,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0xfe,0x3f,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x3f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x70,0x00,0x38,0x00,0x1c,0x00,0x0e,0x00,0x07,0xfe,0x03,0xfe,0x01,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x70,0x00,0x3e,0x00,0x3e,0x00,0x70,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x1e,0x78,0x3e,0x7c,0x7e,0x7e,0xe0,0x07,0xc0,0x03,0xc0,0x03,0xe0,0x07,0x7e,0x7e,0x3e,0x7c,0x1e,0x78,0xfe,0x00,0xfe,0x01,0xfe,0x03,0x00,0x7f,0x00,0x7e,0x00,0x7e,0x00,0x7f,0xfe,0x03,0xfe,0x01,0xfe,0x00,0x06,0x78,0x06,0x7c,0x06,0x7e,0x06,0x67,0x86,0x63,0xc6,0x61,0xe6,0x60,0x7e,0x60,0x3e,0x60,0x1e,0x60,0x00,0x00,0x00,0x00,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x00,0x00,0x00,0x00,0x18,0x00,0x38,0x00,0x70,0x00,0xe0,0x00,0xc0,0x01,0x80,0x03,0x00,0x07,0x00,0x0e,0x00,0x1c,0x00,0x18,0x00,0x00,0x00,0x00,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x00,0x00,0x00,0x00,0x60,0x00,0x70,0x00,0x38,0x00,0x1c,0x00,0x0e,0x00,0x0e,0x00,0x1c,0x00,0x38,0x00,0x70,0x00,0x60,0x00,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60, -0x00,0x00,0x00,0x00,0x06,0x00,0x0e,0x00,0x1c,0x00,0x38,0x00,0x70,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x60,0x7e,0x60,0x7e,0x60,0x7e,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0x67,0xe0,0x67,0xe0,0x67,0x80,0x01,0x80,0x61,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x06,0x60,0x06,0x00,0x1e,0x00,0x1e,0x00,0xe0,0xcf,0xe0,0xcf,0xe0,0xcf,0x60,0xcc,0x60,0xcc,0x60,0xcc,0x60,0xcc,0xe0,0xff,0xe0,0xff,0xe0,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x00,0x00,0x00,0x00,0x60,0x60,0x60,0x60,0xe6,0x7f,0xe6,0x7f,0xe0,0x7f,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0xf0,0x00,0xf0,0x00,0xf0,0x00,0xc0,0x60,0xc0,0x60,0xc0,0xe6,0xff,0xe6,0xff,0xe0,0x7f,0x00,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x0f,0x80,0x1f,0xc0,0x39,0xe0,0x70,0x70,0x60,0x30,0x60,0x00,0x00,0x00,0x00,0x00,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0x00,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x00,0xe0,0x07,0xe0,0x07,0xe0,0x00,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0xe0,0x7f,0xe0,0x7f,0xc0,0x7f,0xc0,0x3f,0xe0,0x7f,0xe0,0x7f,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xe0,0x7f,0xe0,0x7f,0xc0,0x3f, -0xe0,0xff,0xe0,0xff,0xe0,0xff,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0xe0,0x07,0xe0,0x07,0xe0,0x07,0xe0,0x07,0xe0,0x07,0xe0,0x07,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0xe0,0xff,0xe0,0xff,0xe0,0xff,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xc0,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0xe0,0x01,0xe0,0x01,0xe0,0x01,0xe0,0x67,0xe0,0x67,0xe0,0x67,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x7e,0x60,0x7e,0x60,0x7e,0x60,0x00,0x60,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x60,0x60,0x00,0x60,0x00,0x78,0x00,0x78,0x00,0x78,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x00,0x70,0x00,0x38,0x00,0x1c,0x00,0x0e,0x00,0x07,0xe0,0x03,0xe0,0x01,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x00,0x70,0x00,0x3c,0x00,0x3c,0x00,0x70,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x60,0xe0,0x70,0xe0,0x79,0xc0,0x3f,0x80,0x1f,0x80,0x1f,0xc0,0x3f,0xe0,0x79,0xe0,0x70,0x60,0x60,0xe0,0xcf,0xe0,0xcf,0xe0,0xcf,0x00,0xcc,0x00,0xcc,0x00,0xcc,0x00,0xcc,0xe0,0xff,0xe0,0xff,0xe0,0x7f,0x60,0x60,0x60,0x70,0x60,0x78,0x60,0x7c,0x60,0x7e,0x60,0x6f,0xe0,0x67,0xe0,0x63,0xe0,0x61,0xe0,0x60,0x00,0x00,0x00,0x00,0x80,0x01,0xc0,0x03,0x78,0x1e,0x7c,0x3e,0x0e,0x70,0x06,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x7f,0xfe,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x60,0x0e,0x70,0x7c,0x3e,0x78,0x1e,0xc0,0x03,0x80,0x01,0x00,0x00,0x00,0x00,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x18,0x18,0x38,0x1c,0xf0,0x0f,0xe0,0x07,0xc0,0x03,0x80,0x01,0x80,0x01,0xc0,0x03,0xe0,0x07,0xf0,0x0f,0x38,0x1c,0x18,0x18,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01, diff --git a/radio/src/fonts/sqt5/font_10x14_compressed.lbm b/radio/src/fonts/sqt5/font_10x14_compressed.lbm deleted file mode 100644 index c79ed1a95..000000000 --- a/radio/src/fonts/sqt5/font_10x14_compressed.lbm +++ /dev/null @@ -1 +0,0 @@ -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x66,0x00,0x76,0x00,0x3e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x78,0x00,0x78,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0x0c,0x7e,0x0e,0x7f,0x8e,0x7f,0x86,0x63,0x86,0x61,0xfe,0x61,0xfe,0x61,0xfc,0x60,0xff,0xff,0xff,0xff,0x06,0x60,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f,0xff,0xff,0xff,0xff,0xfe,0x00,0xfe,0x01,0xfe,0x01,0x80,0x01,0x80,0x01,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0xff,0xff,0xff,0xff,0xfe,0x30,0xfe,0x71,0xfe,0x71,0x86,0x61,0x86,0x61,0x86,0x7f,0x86,0x7f,0x06,0x3f,0xff,0xff,0xff,0xff,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x8e,0x7f,0x8e,0x7f,0x0c,0x3f,0xff,0xff,0xff,0xff,0x06,0x00,0x06,0x00,0x06,0x00,0x86,0x7f,0xc6,0x7f,0xfe,0x7f,0x7e,0x00,0x3e,0x00,0xff,0xff,0xff,0xff,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f,0xff,0xff,0xff,0xff,0x7c,0x30,0xfe,0x71,0xfe,0x71,0x86,0x61,0x86,0x61,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x78,0x1e,0x78,0x1e,0x78,0x1e,0x78,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0xfe,0x7f,0xfe,0x7f,0xfc,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0xfe,0x61,0xfe,0x7f,0xfc,0x7f,0x00,0x3f,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x06,0x60,0x0e,0x70,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x06,0x00,0x06,0x00,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x7f,0x86,0x7f,0x80,0x3f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x38,0x00,0x78,0x00,0x78,0x00,0x60,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x3f,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0xc0,0x03,0xe0,0x07,0xf0,0x0f,0x78,0x1e,0x3c,0x3c,0x1e,0x78,0x0e,0x70,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0xfc,0x7f,0xfe,0x7f,0xfe,0x7f,0x06,0x00,0xfe,0x01,0xfe,0x01,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0xfc,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x06,0x00,0x06,0x00,0x06,0x00,0x0e,0x00,0xfc,0x7f,0xf8,0x7f,0xf0,0x7f,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0xfe,0x01,0xfe,0x01,0xfc,0x00,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x66,0x06,0x6e,0x06,0x1c,0xfe,0x39,0xfe,0x73,0xfc,0x67,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0xfe,0x01,0xfe,0x7f,0xfc,0x7f,0x00,0x7f,0xfc,0x38,0xfe,0x79,0xfe,0x79,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x9e,0x7f,0x9e,0x7f,0x1c,0x3f,0x06,0x00,0x06,0x00,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0xfe,0x3f,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x3f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x70,0x00,0x38,0x00,0x1c,0x00,0x0e,0x00,0x07,0xfe,0x03,0xfe,0x01,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x70,0x00,0x3e,0x00,0x3e,0x00,0x70,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x1e,0x78,0x3e,0x7c,0x7e,0x7e,0xe0,0x07,0xc0,0x03,0xc0,0x03,0xe0,0x07,0x7e,0x7e,0x3e,0x7c,0x1e,0x78,0xfe,0x00,0xfe,0x01,0xfe,0x03,0x00,0x7f,0x00,0x7e,0x00,0x7e,0x00,0x7f,0xfe,0x03,0xfe,0x01,0xfe,0x00,0x06,0x78,0x06,0x7c,0x06,0x7e,0x06,0x67,0x86,0x63,0xc6,0x61,0xe6,0x60,0x7e,0x60,0x3e,0x60,0x1e,0x60,0x60,0x7e,0x60,0x7e,0x60,0x7e,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0x67,0xe0,0x67,0xe0,0x67,0x80,0x01,0x80,0x61,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x06,0x60,0x06,0x00,0x1e,0x00,0x1e,0x00,0xe0,0xcf,0xe0,0xcf,0xe0,0xcf,0x60,0xcc,0x60,0xcc,0x60,0xcc,0x60,0xcc,0xe0,0xff,0xe0,0xff,0xe0,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x60,0x60,0x60,0xe6,0x7f,0xe6,0x7f,0xe0,0x7f,0x00,0x60,0x00,0x60,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xf0,0x00,0xf0,0x00,0xf0,0x00,0xc0,0x60,0xc0,0x60,0xc0,0xe6,0xff,0xe6,0xff,0xe0,0x7f,0xff,0xff,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x0f,0x80,0x1f,0xc0,0x39,0xe0,0x70,0x70,0x60,0x30,0x60,0xff,0xff,0x00,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x00,0xe0,0x07,0xe0,0x07,0xe0,0x00,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0xe0,0x7f,0xe0,0x7f,0xc0,0x7f,0xc0,0x3f,0xe0,0x7f,0xe0,0x7f,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xe0,0x7f,0xe0,0x7f,0xc0,0x3f,0xe0,0xff,0xe0,0xff,0xe0,0xff,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0xe0,0x07,0xe0,0x07,0xe0,0x07,0xe0,0x07,0xe0,0x07,0xe0,0x07,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0xe0,0xff,0xe0,0xff,0xe0,0xff,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xc0,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0xe0,0x01,0xe0,0x01,0xe0,0x01,0xe0,0x67,0xe0,0x67,0xe0,0x67,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x7e,0x60,0x7e,0x60,0x7e,0x60,0x00,0x60,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x60,0x60,0x00,0x60,0x00,0x78,0x00,0x78,0x00,0x78,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x00,0x70,0x00,0x38,0x00,0x1c,0x00,0x0e,0x00,0x07,0xe0,0x03,0xe0,0x01,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x00,0x70,0x00,0x3c,0x00,0x3c,0x00,0x70,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x60,0xe0,0x70,0xe0,0x79,0xc0,0x3f,0x80,0x1f,0x80,0x1f,0xc0,0x3f,0xe0,0x79,0xe0,0x70,0x60,0x60,0xe0,0xcf,0xe0,0xcf,0xe0,0xcf,0x00,0xcc,0x00,0xcc,0x00,0xcc,0x00,0xcc,0xe0,0xff,0xe0,0xff,0xe0,0x7f,0x60,0x60,0x60,0x70,0x60,0x78,0x60,0x7c,0x60,0x7e,0x60,0x6f,0xe0,0x67,0xe0,0x63,0xe0,0x61,0xe0,0x60, diff --git a/radio/src/fonts/sqt5/font_10x14_compressed.png b/radio/src/fonts/sqt5/font_10x14_compressed.png index 61d0f98e2630bddb4fd6f758444e310ed37529a0..89db1e233f925fd3b2d4cc764ebdd4b6fd0814f7 100644 GIT binary patch delta 1096 zcmV-O1h@O339bo{Q3~Dx2@p3P(x#8%ky|K#7D+@wRCwC$UE8k2APC%^^#6ak=e04d z9dH!XA=#IWq9P!Smmb%3UB7~kJa&=U4Rmlyyyp=$wf} zBKZRgFAGokA(4m96%7;#tkD1$;fDtFPi;Nbt?^^`&nrKxoIP#cc_L*z<85uX2hXy9 z%$MvveMIV@_Fzp)tujG%&pK~48|hl7hAHnJbJtTJBJHc^{Gz(&vCRnmn^^}$ zB9UkmovRKEMMoI?EXXSZQKPG?k%I@Ru^?|qrpo3wB15jB9bYmm>oDfA z*3UaaW0~Kl?Zzks(5o+q&M{EP%>H=ifW5~qk5}f*I&U^E5-C7UX5hOy!4>CRa;par zBV}}NOYoRmfen{&_Yd^yR5Nn`!IodEp3aJ-jtEXY zK8f+d2m_h=TDZTSZDJu)9&{FetrHQPW;kn(tceV}&ziKAe&B75Yu#Ze>kC00xX7S& z7#9k5JRhVpQKHD8+xl+g3U=|fFrxvVkkdK+D`Vc!#AG)=lGPtrk}F2PuIsWRsIBk1 z%@jmfkb~&+8zWyWu=KC@E&h=@#Yiw1nRkQ@p}|*1XYPFm@(mI2eq1DfYTjxH$Jbk# z2ohM^QLzT6Gp`R{{&SUJeD-nl26>RAElQ@XXTC@5sN8u9LEXeCMWR-n-wB~!;mbFz z!BJVimP|eI7jkNs_x&dljrIpj-9z=c=1a^7DjTU=Wib$mRt#32&K|97r%$)nEl5MA z3na|ov?iZk{mGsn?YdrnF?~Sx9hFx7%W_3LU<`_oC9fC83~aN zVnOOITiF`g~juz43lu8WDu$mZy~; zT2|%a%IWcU{^Ei&Y^zAlB2iBJWd>NNKS0{FKAV==4>69V>5|`gef|gZA^B%Fx74Zt O0000N<%dn?l`_y7M-b$jih$7hwFR?gObukA|8Smx~QH=@mZ8L9k{GS}FD zgfwZf%0xSV>ALmoFjD`ldgZZ0$-1HKA2G)YL64^|jozSxOV4AFlzGJZMe4*%8;e|Dss35)bB6w{tOEo=5Lx)`I4LPJf@n{} zydv0y-WX8h(=bcgptYA3T9_IQ^CroERMG84XUILKLo%0py|+3DoxZl;>+5Mfo{kY` zF@RQmk?33mTVBa0e>q@}IOVa(JEGpmrU`-pY5@cPiUZtv-6^|ql945&YhPR!f~e~k z2!a7BK@d}eQ)2(5_nsJN8F!0*S=-ADl%#!)*4lH*r>vl=aP$<%x2JL5#<+9ny)4;UmtAoTuA4D}Abh~^EB?)7`gl!T}t zb2^sy^^YL3{Q*+GisXX{hvo1R0$6Iu?U_ba3isD7g2)xRo#SN2eT$#S<^)84(EU)DlN+S+~dTWNz^b$rPA5${3jSLVB- zPqI9Qq~6yHag5FPAM)f79Fux4N&JGwdU+vENIn!D5)s~CU z5wu*Y%h{6AMlb=9zcN)JnRvUORpFbDmiDR!5Y_D$QOic*+q1}tC9HV3tYK|KH+FvTGmHI`?8##uE`AFKF(eJEr&6Z!L z9ihk9E2Ck>$b`)eVBY>_jA6CJXBEG-f}EuOpcfCI_4#bct2gVuskC2~%PB|XX75}N zf~aky(E*kwNchhsluAFFX8p$OO1_Z(G+&?p0h%w{Ol7I(djJ3c07*qoM6N<$f~q7q Ag8%>k diff --git a/radio/src/fonts/sqt5/font_cz_04x06.lbm b/radio/src/fonts/sqt5/font_cz_04x06.lbm deleted file mode 100644 index fa9c3a08a..000000000 --- a/radio/src/fonts/sqt5/font_cz_04x06.lbm +++ /dev/null @@ -1 +0,0 @@ -0x3a,0x2a,0x2a,0x3e,0x01,0x3e,0x23,0x22,0x23,0x7f,0x3e,0x2a,0x2a,0x2e,0x01,0x3e,0x2b,0x2a,0x2f,0x7f,0x24,0x3c,0x22,0x01,0x7f,0x1c,0x22,0x22,0x1d,0x7f,0x3e,0x03,0x02,0x05,0x7f,0x2e,0x2b,0x2a,0x3b,0x7f,0x3e,0x20,0x20,0x3e,0x01,0x3c,0x23,0x23,0x3c,0x7f,0x2e,0x28,0x28,0x3e,0x01,0x3c,0x12,0x12,0x3d,0x7f,0x22,0x3e,0x22,0x01,0x7f,0x3e,0x13,0x1e,0x31,0x7f,0x0e,0x30,0x0e,0x01,0x7f,0x22,0x33,0x2a,0x27,0x7f,0x3e,0x2a,0x2a,0x22,0x01, diff --git a/radio/src/fonts/sqt5/font_cz_05x07.lbm b/radio/src/fonts/sqt5/font_cz_05x07.lbm deleted file mode 100644 index 8095c78b8..000000000 --- a/radio/src/fonts/sqt5/font_cz_05x07.lbm +++ /dev/null @@ -1 +0,0 @@ -0x74,0x54,0x56,0x55,0x7c,0x7c,0x45,0x46,0x46,0x45,0x7c,0x54,0x56,0x55,0x5c,0x7c,0x55,0x56,0x56,0x5d,0x44,0x7e,0x41,0xff,0xff,0x38,0x44,0x46,0x45,0x38,0x7c,0x05,0x06,0x06,0x0d,0x5c,0x55,0x56,0x56,0x75,0x7c,0x40,0x42,0x41,0x7c,0x7c,0x40,0x43,0x43,0x7c,0x5c,0x50,0x52,0x51,0x7c,0x78,0x14,0x16,0x15,0x78,0x44,0x7e,0x45,0xff,0xff,0x7c,0x15,0x16,0x1e,0x71,0x1c,0x10,0x72,0x11,0x1c,0x44,0x65,0x56,0x4e,0x45,0x7c,0x54,0x56,0x55,0x44,0x1c,0x1c,0x3e,0x7f,0xff,0x22,0x1c,0x41,0x3e,0x00, diff --git a/radio/src/fonts/sqt5/font_cz_05x07.png b/radio/src/fonts/sqt5/font_cz_05x07.png index f80f828490c9e7804b270fbbb76fd5695f51a66f..f7018789e856a3589325fa3b526106f9b28debc6 100644 GIT binary patch delta 244 zcmV=&eJJ?>Nik5a>Yrf6lcckHPgJcov%}`HQlDuSSzi7LMg}% zHHjlSt+S4%(Jp?n2^8TJXuoXvsUzR<5$dcFcOMPGz3iic^le}|uBB1rTRUmNX~T6Z zl`_V%$`r8GRV>lWb{Wz0#tG5j%C92uQ78PweZQ`vXvK@mm#Y^@{{UB?${&E?e-^iF uSHn8FyX^FN>F(!$)|oZ)dDULZTcJKXdt~rkk5cIX0000s{T}Pi0002WNklgE-0W!FEa_`WgLx*Iuiw%yaxN1Xa{~*B=LW0*`H~y^s8+Blkc zk4t-7%mOQ^?Zev1y4pGGuu8i1n;r#Y%W(jR2-SsOC6Xelh(e?ii#&HxyO;t{fXKFW zz*s`YN+bzz#q;T3(nnOe9UEj7iNUk<-#^G*&TD=HR3c*j1-gOq00000NkvXXu0mjf DGRIeb delta 198 zcmV;%06G7k0-OSnUVq&T6&5x$a6nc60001-Nkl60002xNkl&$(5k;vO(H z3jnn*C7Y)vhQLhF*55b)LUAz3N(46>>6U%#xMY5c(l2|XI=+4Q@WnYeMBD*pYC^EW zFhBqBo+tDN5r>4LB*k1?&m3|JC6)cI*_F(Qnk5D-(0XTIXe1Nu$UQz66U ziT+e-iy5z0gPhEcm5dihy2{K|GhUsBvntu;@jBYMt4!+rn}63@qozh?|3BPnQt<$o znmK^R*G;xhLkxkLpsSB@0EA*|R%a1hY@|E(t>=>YCQ83-jOzLF_4pt#@Ry9t3e4zh98mlA{Ca#Lx=G&w YMW>*z0}qVd01E&B07*qoM6N<$f@<7@ZvX%Q diff --git a/radio/src/fonts/sqt5/font_de_04x06.lbm b/radio/src/fonts/sqt5/font_de_04x06.lbm deleted file mode 100644 index 6e70f2f27..000000000 --- a/radio/src/fonts/sqt5/font_de_04x06.lbm +++ /dev/null @@ -1 +0,0 @@ -0x3d,0x0a,0x0a,0x3d,0x7f,0x3a,0x2b,0x2a,0x3f,0x7f,0x1d,0x22,0x22,0x1d,0x7f,0x18,0x25,0x24,0x19,0x7f,0x3d,0x20,0x20,0x3d,0x7f,0x3d,0x20,0x20,0x3d,0x7f,0x7e,0x05,0x25,0x1a,0x7f, diff --git a/radio/src/fonts/sqt5/font_de_05x07.lbm b/radio/src/fonts/sqt5/font_de_05x07.lbm deleted file mode 100644 index 363e4f48e..000000000 --- a/radio/src/fonts/sqt5/font_de_05x07.lbm +++ /dev/null @@ -1 +0,0 @@ -0x7c,0x13,0x12,0x13,0x7c,0x74,0x55,0x54,0x55,0x7c,0x3c,0x43,0x42,0x43,0x3c,0x38,0x45,0x44,0x45,0x38,0x3e,0x41,0x40,0x41,0x3e,0x7c,0x41,0x40,0x41,0x7c,0x7e,0x01,0x49,0x56,0x20, diff --git a/radio/src/fonts/sqt5/font_de_08x10.lbm b/radio/src/fonts/sqt5/font_de_08x10.lbm deleted file mode 100644 index 7b030ad69..000000000 --- a/radio/src/fonts/sqt5/font_de_08x10.lbm +++ /dev/null @@ -1 +0,0 @@ -0xf0,0x07,0xfb,0x07,0x9b,0x00,0x98,0x00,0x98,0x00,0x9b,0x00,0xfb,0x07,0xf0,0x07,0x90,0x07,0x96,0x07,0x96,0x04,0x90,0x04,0x96,0x04,0xf6,0x07,0xf0,0x07,0xff,0x0f,0xf0,0x03,0xfb,0x07,0x0b,0x04,0x08,0x04,0x08,0x04,0x0b,0x04,0xfb,0x07,0xf0,0x03,0xe0,0x03,0xf6,0x07,0x16,0x04,0x10,0x04,0x16,0x04,0xf6,0x07,0xe0,0x03,0xff,0x0f,0xf8,0x03,0xfb,0x07,0x03,0x04,0x00,0x04,0x03,0x04,0x03,0x04,0xf8,0x07,0xf8,0x03,0xf0,0x07,0xf6,0x07,0x06,0x04,0x00,0x04,0x06,0x04,0xf6,0x07,0xf0,0x07,0xff,0x0f,0xfc,0x07,0xfe,0x07,0x86,0x00,0x86,0x00,0x86,0x00,0x86,0x00,0xfe,0x07,0xfc,0x07, diff --git a/radio/src/fonts/sqt5/font_de_10x14.lbm b/radio/src/fonts/sqt5/font_de_10x14.lbm deleted file mode 100644 index 57284df25..000000000 --- a/radio/src/fonts/sqt5/font_de_10x14.lbm +++ /dev/null @@ -1 +0,0 @@ -0xf0,0x7f,0xfa,0x7f,0xfa,0x7f,0x18,0x06,0x18,0x06,0x18,0x06,0x18,0x06,0xfa,0x7f,0xfa,0x7f,0xf0,0x7f,0x60,0x7e,0x66,0x7e,0x66,0x7e,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe6,0x7f,0xe6,0x7f,0xe0,0x7f,0xf0,0x3f,0xfa,0x7f,0xfa,0x7f,0x18,0x60,0x18,0x60,0x18,0x60,0x18,0x60,0xfa,0x7f,0xfa,0x7f,0xf0,0x3f,0xc0,0x3f,0xe6,0x7f,0xe6,0x7f,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xe6,0x7f,0xe6,0x7f,0xc0,0x3f,0xf8,0x3f,0xfa,0x7f,0xfa,0x7f,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0xfa,0x7f,0xfa,0x7f,0xf8,0x3f,0xe0,0x7f,0xe6,0x7f,0xe6,0x7f,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0xe6,0x7f,0xe6,0x7f,0xe0,0x7f,0xf8,0x7f,0xfc,0x7f,0x0e,0x00,0x06,0x00,0x66,0x30,0x6e,0x30,0xfc,0x38,0xd8,0x1f,0x00,0x0f,0xff,0xff, diff --git a/radio/src/fonts/sqt5/font_es_04x06.lbm b/radio/src/fonts/sqt5/font_es_04x06.lbm deleted file mode 100644 index eb50e6735..000000000 --- a/radio/src/fonts/sqt5/font_es_04x06.lbm +++ /dev/null @@ -1 +0,0 @@ -0x3c,0x05,0x06,0x39,0x7f,0x3a,0x09,0x0a,0x31,0x7f, diff --git a/radio/src/fonts/sqt5/font_es_05x07.lbm b/radio/src/fonts/sqt5/font_es_05x07.lbm deleted file mode 100644 index ade3235f7..000000000 --- a/radio/src/fonts/sqt5/font_es_05x07.lbm +++ /dev/null @@ -1 +0,0 @@ -0x7c,0x06,0x05,0x06,0x79,0x78,0x0a,0x09,0x0a,0x71, diff --git a/radio/src/fonts/sqt5/font_es_08x10.lbm b/radio/src/fonts/sqt5/font_es_08x10.lbm deleted file mode 100644 index 80e23388e..000000000 --- a/radio/src/fonts/sqt5/font_es_08x10.lbm +++ /dev/null @@ -1 +0,0 @@ -0xf8,0x07,0xfa,0x07,0x0b,0x00,0x09,0x00,0x0b,0x00,0x1a,0x00,0xf3,0x07,0xe1,0x07,0xf0,0x07,0xf4,0x07,0x16,0x00,0x12,0x00,0x16,0x00,0x34,0x00,0xe6,0x07,0xc2,0x07, diff --git a/radio/src/fonts/sqt5/font_es_10x14.lbm b/radio/src/fonts/sqt5/font_es_10x14.lbm deleted file mode 100644 index 19065f688..000000000 --- a/radio/src/fonts/sqt5/font_es_10x14.lbm +++ /dev/null @@ -1 +0,0 @@ -0xf4,0x7f,0xf6,0x7f,0xf3,0x7f,0x31,0x00,0x32,0x00,0x34,0x00,0x76,0x00,0xe3,0x7f,0xc1,0x7f,0x80,0x7f,0xe0,0x7f,0xe8,0x7f,0xec,0x7f,0x66,0x00,0x62,0x00,0x64,0x00,0x68,0x00,0xec,0x7f,0xe6,0x7f,0xc2,0x7f, diff --git a/radio/src/fonts/sqt5/font_fr_04x06.lbm b/radio/src/fonts/sqt5/font_fr_04x06.lbm deleted file mode 100644 index fee7097c0..000000000 --- a/radio/src/fonts/sqt5/font_fr_04x06.lbm +++ /dev/null @@ -1 +0,0 @@ -0x3e,0x2a,0x2b,0x2e,0x7f,0x3e,0x2b,0x2a,0x2e,0x7f,0x3a,0x2b,0x2a,0x3e,0x7f,0x26,0x3d,0x22,0x7f,0x7f,0x1e,0x52,0x32,0x12,0x7f, diff --git a/radio/src/fonts/sqt5/font_fr_04x06.png b/radio/src/fonts/sqt5/font_fr_04x06.png index f165ffab0ddfb6c53510ade021df9c8d015589fd..0b15e63a3cbf8b5663080d68ff7bb71210d4a1cc 100644 GIT binary patch delta 95 zcmV-l0HFW#8}u8noefvs0SO5sFTNqbasU7THAzH4R0!8&U}R(fLnr~|fLIs+AqJKP ztA;8>Vxnn*%P_*#L%0mstU$5=qM8wj0P6<35&#v{06?tC3`zh1002ovPDHLkV1hn8 BApQUV delta 94 zcmew&{aJd$T;8y|JfdRCGDQy3f(#4{CY~;iAsp9}6H-zboLLSsENRr?X;5LAme#VO y#WV5p;SQC<9O3-Ocp`EfHZnZp6KP_6MpUXO@geCy9?;flG diff --git a/radio/src/fonts/sqt5/font_fr_05x07.lbm b/radio/src/fonts/sqt5/font_fr_05x07.lbm deleted file mode 100644 index 32daabead..000000000 --- a/radio/src/fonts/sqt5/font_fr_05x07.lbm +++ /dev/null @@ -1 +0,0 @@ -0x7c,0x54,0x56,0x55,0x5c,0x7c,0x55,0x56,0x54,0x5c,0x74,0x55,0x56,0x54,0x7c,0x4a,0x79,0x42,0xff,0xff,0x3c,0xa4,0x64,0x24,0x24, diff --git a/radio/src/fonts/sqt5/font_fr_05x07.png b/radio/src/fonts/sqt5/font_fr_05x07.png index f1dd6628cdc0b6a6df49dba2fd023d34504169d2..0ad3bcf6785c112964186a54bce828af0588f993 100644 GIT binary patch delta 87 zcmZ3(xQ=l`T);g>PHtt^G`YK{7#JAzJY5_^IIbsG{LZUoKD;;oA1@CN55I&&*Y_38 r5vQdkR=w9@Fp{W{miYI-`Yr>5^I87#C$VBiK%ESpu6{1-oD!MC#Le=Ecbtis=zi2HW@%H%&Z4klb)=6t5*4?$1LD)Kdi~3lN3a?D>$nNs h=oWl5U-o5>34iu90PducA*BES002ovPDHLkV1kb*IAZ_+ delta 122 zcmV-=0EPdQ9FH8Zoegr`3>6kS8JQ|Zh5!HnP)S5VR2b8pkP8X`AP7UZ`(L`yMyB+k zK~3znLa+-UZ0F(}HB}&Vrvpf!5|r$2Dd(@8JH~nwYZq2RPx# delta 111 zcmV-#0FeL50mcE4UTED66&DvE=g0n50000+Nkl0`v`L7;CfBy5| z<^+&_{;z%xhz803V1NJ#7%hK*L5{uuF)|GV%*eF-@sE$;Gy@uV4mJ1u0RW-xGE%;o R6gvO_002ovPDHLkV1j)qFChQ` diff --git a/radio/src/fonts/sqt5/font_it_04x06.lbm b/radio/src/fonts/sqt5/font_it_04x06.lbm deleted file mode 100644 index 83ad285ab..000000000 --- a/radio/src/fonts/sqt5/font_it_04x06.lbm +++ /dev/null @@ -1 +0,0 @@ -0x3a,0x2b,0x2a,0x3e,0x7f,0x3c,0x21,0x22,0x3c,0x7f, diff --git a/radio/src/fonts/sqt5/font_it_05x07.lbm b/radio/src/fonts/sqt5/font_it_05x07.lbm deleted file mode 100644 index 7e4ed004e..000000000 --- a/radio/src/fonts/sqt5/font_it_05x07.lbm +++ /dev/null @@ -1 +0,0 @@ -0x74,0x55,0x56,0x54,0x7c,0x7c,0x41,0x42,0x40,0x7c, diff --git a/radio/src/fonts/sqt5/font_it_08x10.lbm b/radio/src/fonts/sqt5/font_it_08x10.lbm deleted file mode 100644 index d54356222..000000000 --- a/radio/src/fonts/sqt5/font_it_08x10.lbm +++ /dev/null @@ -1 +0,0 @@ -0x90,0x07,0x90,0x07,0x92,0x04,0x96,0x04,0x94,0x04,0xf0,0x07,0xf0,0x07,0xff,0x0f,0xf0,0x07,0xf0,0x07,0x02,0x04,0x06,0x04,0x04,0x04,0xf0,0x07,0xf0,0x07,0xff,0x0f, diff --git a/radio/src/fonts/sqt5/font_it_10x14.lbm b/radio/src/fonts/sqt5/font_it_10x14.lbm deleted file mode 100644 index 6f8fbcc11..000000000 --- a/radio/src/fonts/sqt5/font_it_10x14.lbm +++ /dev/null @@ -1 +0,0 @@ -0x60,0x7e,0x60,0x7e,0x60,0x7e,0x62,0x66,0x66,0x66,0x6c,0x66,0x68,0x66,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x02,0x60,0x06,0x60,0x0c,0x60,0x08,0x60,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f, diff --git a/radio/src/fonts/sqt5/font_pl_04x06.lbm b/radio/src/fonts/sqt5/font_pl_04x06.lbm deleted file mode 100644 index 0f0348f44..000000000 --- a/radio/src/fonts/sqt5/font_pl_04x06.lbm +++ /dev/null @@ -1 +0,0 @@ -0x3a,0x2a,0x2a,0x7e,0x40,0x3e,0x22,0x22,0x22,0x01,0x3e,0x2a,0x2a,0x6e,0x40,0x29,0x3f,0x24,0x7f,0x7f,0x3e,0x02,0x03,0x3d,0x7f,0x1c,0x22,0x23,0x1d,0x7f,0x2e,0x2a,0x2a,0x3b,0x7f,0x24,0x35,0x2d,0x24,0x7f,0x24,0x34,0x2e,0x25,0x7f,0x3e,0x09,0x69,0x5e,0x7f,0x1c,0x22,0x22,0x23,0x7f,0x3f,0x25,0x65,0x41,0x7f,0x3f,0x28,0x24,0x24,0x7f,0x3e,0x02,0x03,0x3d,0x7f,0x1c,0x22,0x22,0x1d,0x7f,0x2e,0x2a,0x2b,0x3a,0x7f,0x22,0x33,0x2a,0x26,0x7f,0x22,0x32,0x2b,0x26,0x7f, diff --git a/radio/src/fonts/sqt5/font_pl_04x06.png b/radio/src/fonts/sqt5/font_pl_04x06.png index 93550576f4d2463e2c1811203cda742662afbe2e..9eb7251fe62fc2f14ca1274d0a5309e5f8a2f5e6 100644 GIT binary patch delta 141 zcmV;80CNB20pkIXUVq*J2?-?tL#kS>0001ENklt04&3M{ondgRcwgUAy wv3W2sEl@B5>3RP1eD%F=w*A%jzBd2>Kr|#f-bG4&00000Ne4wvM6N<$f^+lI9uv9G&OuNB1Hnf)8{3}y wxzWABPyln^N0GrAAo!G#iX3p#T5?07*qoM6N<$f_g$k2><{9 diff --git a/radio/src/fonts/sqt5/font_pl_08x10.lbm b/radio/src/fonts/sqt5/font_pl_08x10.lbm deleted file mode 100644 index 71a638ead..000000000 --- a/radio/src/fonts/sqt5/font_pl_08x10.lbm +++ /dev/null @@ -1 +0,0 @@ -0x90,0x07,0x90,0x07,0x90,0x04,0x90,0x04,0x90,0x04,0xf0,0x0f,0xf0,0x0b,0xff,0x0f,0xf0,0x07,0xf0,0x07,0x10,0x04,0x14,0x04,0x13,0x04,0x11,0x04,0x10,0x04,0xff,0x0f,0xf0,0x07,0xf0,0x07,0x90,0x04,0x90,0x04,0x90,0x04,0xf0,0x0c,0xf0,0x08,0xff,0x0f,0x40,0x04,0x42,0x04,0xfe,0x07,0xfe,0x07,0x20,0x04,0x20,0x04,0xff,0x0f,0xff,0x0f,0xf0,0x07,0xf0,0x07,0x10,0x00,0x14,0x00,0x13,0x00,0xf1,0x07,0xe0,0x07,0xff,0x0f,0xe0,0x03,0xf0,0x07,0x10,0x04,0x14,0x04,0x13,0x04,0xf1,0x07,0xe0,0x03,0xff,0x0f,0xf0,0x04,0xf0,0x04,0x90,0x04,0x94,0x04,0x93,0x04,0x91,0x07,0x90,0x07,0xff,0x0f,0x10,0x04,0x10,0x06,0x16,0x07,0x96,0x05,0xd0,0x04,0x70,0x04,0x30,0x04,0xff,0x0f,0x10,0x04,0x10,0x06,0x10,0x07,0x94,0x05,0xd3,0x04,0x71,0x04,0x30,0x04,0xff,0x0f,0xfc,0x07,0xfe,0x07,0x86,0x00,0x86,0x00,0x86,0x00,0x86,0x00,0xfe,0x0f,0xfc,0x0b,0xf8,0x03,0xfc,0x07,0x04,0x04,0x04,0x04,0x06,0x04,0x05,0x04,0x04,0x04,0xff,0x0f,0x00,0x00,0xfe,0x07,0xfe,0x07,0x22,0x04,0x22,0x04,0x22,0x04,0x22,0x0c,0x02,0x08,0x80,0x00,0xfe,0x07,0xfe,0x07,0x40,0x04,0x40,0x04,0x20,0x04,0x20,0x04,0x00,0x04,0xfc,0x07,0xfc,0x07,0x04,0x00,0x04,0x00,0x07,0x00,0x0d,0x00,0xf8,0x07,0xf0,0x07,0xf8,0x03,0xfc,0x07,0x04,0x04,0x04,0x04,0x04,0x04,0x07,0x04,0xfd,0x07,0xf8,0x03,0x30,0x02,0x78,0x06,0x48,0x04,0x4c,0x04,0x4b,0x04,0x49,0x04,0xd8,0x07,0x90,0x03,0x04,0x06,0x04,0x07,0x84,0x05,0xc7,0x04,0x67,0x04,0x34,0x04,0x1c,0x04,0x0c,0x04,0x04,0x06,0x04,0x07,0x84,0x05,0xc4,0x04,0x64,0x04,0x37,0x04,0x1d,0x04,0x0c,0x04, diff --git a/radio/src/fonts/sqt5/font_pl_08x10.png b/radio/src/fonts/sqt5/font_pl_08x10.png index 6db2c6be3c9160e9a113cdcda2a05945abef843c..760d2f850d72997fb03b12fbf6f9241ce107e5de 100644 GIT binary patch delta 219 zcmV<103`pf0Tj(x@2r;Q)Y_#nk7>38^|A9EEopa*Wx2#i~#t89p_1<@0dzg8d z#|2`gvetGM4V#000T7W&HW9NqlTIl^RK-2-4G~d{2&`^Oaa0Jz#gnL+8QrS(U8{p3KHu5uOwmJ^#QL& Vb$#xXLW=+Z002ovPDHLkV1g>qU*iA( delta 217 zcmV;~04D#j0r&g$cP00025Nklm9rXCL_HX zxN+kJ+?1<$077q3c9=jy!ID9!`X`x8UVi=`AWy}6Prklu4LR5h6zLvgG*L#O)@`*L zkR$D!GY*7O2l)a3BGS}_T&Xk4QW^w3T-)vl5p#yb*^@Dz5>j&cKpaEp=-80=&2>YR z)&g+QjKQ)1S0}_W&%iiuC>it3DoXv)H2vbo5r#IbH(rDkC}q16rLzB3sMK8_epr38 TgaK;f00000NkvXXu0mjfiZfk` diff --git a/radio/src/fonts/sqt5/font_pl_10x14.lbm b/radio/src/fonts/sqt5/font_pl_10x14.lbm deleted file mode 100644 index 1c88076c1..000000000 --- a/radio/src/fonts/sqt5/font_pl_10x14.lbm +++ /dev/null @@ -1 +0,0 @@ -0x60,0x7e,0x60,0x7e,0x60,0x7e,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0xff,0xe0,0xbf,0xe0,0xbf,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x60,0x68,0x60,0x6c,0x60,0x67,0x60,0x63,0x60,0x61,0x60,0x60,0x60,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0xe7,0xe0,0x87,0xe0,0x87,0x00,0x63,0x06,0x63,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0xc0,0x60,0xc0,0x60,0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x00,0x68,0x00,0x6c,0x00,0x67,0x00,0xe3,0x7f,0xe1,0x7f,0xc0,0x7f,0xc0,0x3f,0xe0,0x7f,0xe0,0x7f,0x60,0x60,0x68,0x60,0x6c,0x60,0x67,0x60,0xe3,0x7f,0xe1,0x7f,0xc0,0x3f,0xe0,0x67,0xe0,0x67,0xe0,0x67,0x60,0x66,0x68,0x66,0x6c,0x66,0x67,0x66,0x63,0x7e,0x61,0x7e,0x60,0x7e,0x60,0x60,0x60,0x70,0x60,0x78,0x66,0x7c,0x66,0x6e,0x60,0x67,0xe0,0x63,0xe0,0x61,0xe0,0x60,0x60,0x60,0x60,0x60,0x60,0x70,0x60,0x78,0x60,0x7c,0x68,0x6e,0x6c,0x67,0xe7,0x63,0xe3,0x61,0xe1,0x60,0x60,0x60,0xfc,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0xfe,0x7f,0xfe,0xbf,0xfc,0xbf,0xf8,0x3f,0xfc,0x7f,0xfc,0x7f,0x0c,0x60,0x0c,0x60,0x0f,0x60,0x0f,0x60,0x0d,0x60,0x0c,0x60,0x0c,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x06,0xa0,0x06,0x80,0x00,0x06,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x80,0x61,0x80,0x61,0xc0,0x60,0xc0,0x60,0x60,0x60,0x60,0x60,0xf8,0x7f,0xf8,0x7f,0xf8,0x7f,0x18,0x00,0x18,0x00,0x1c,0x00,0x3f,0x00,0xf3,0x7f,0xe1,0x7f,0xc0,0x7f,0xf0,0x3f,0xf8,0x7f,0xf8,0x7f,0x18,0x60,0x1c,0x60,0x1f,0x60,0x1b,0x60,0xf9,0x7f,0xf8,0x7f,0xf0,0x3f,0xf0,0x39,0xf8,0x7b,0xf8,0x7b,0x18,0x63,0x1c,0x63,0x1f,0x63,0x1b,0x63,0x79,0x7f,0x78,0x7f,0x70,0x3e,0x18,0x70,0x18,0x78,0x18,0x7c,0x18,0x6e,0x1b,0x67,0x9b,0x63,0xd8,0x61,0xf8,0x60,0x78,0x60,0x38,0x60,0x18,0x70,0x18,0x78,0x18,0x7c,0x18,0x6e,0x18,0x67,0x9c,0x63,0xdf,0x61,0xfb,0x60,0x79,0x60,0x38,0x60, diff --git a/radio/src/fonts/sqt5/font_pl_10x14.png b/radio/src/fonts/sqt5/font_pl_10x14.png index f407458ee737f716c92e7a18de5067aee0c35e54..33888bfd10ae1fec223dd4c6b065ba9d544087f3 100644 GIT binary patch delta 305 zcmV-10nYw}1BL^TUVq*J2@wGi%ExIj00037Nklb^l5Czb&EQJ)7;#|Pa z5qtyoC^^EG?!Zcu!V(vVSFL-qz9mG$sm@+gvv*SU>S@2-#iVJb}iw!iBeaxFfOe~6MUc>DuR^q4Kb@2|dV!d6hO00000NkvXXu0mjf Do*$3t delta 303 zcmV+~0nq-21B3&RUVq&T6&DyXljf7r00035Nklb^l5Czb&EQJ)2;&fE& z9AR%jj*=s6=?<(kDI#%!NWMl&ca*+@wG?TM+;}C#&w!m|8pJ~kpCO>d7Io_oH7s~* z{fdSFm1KmPhB&vMWTA%d6=y=yN#2qkhTC{gWRq4C(uEKKxqtEntj>_OV|P~(7k7k2 zDc48#GyPUA>9yfiWEW3!my{`foM-k$TMjTqyqaMYR#{`y7(ug!>#YP diff --git a/radio/src/fonts/sqt5/font_pt_04x06.lbm b/radio/src/fonts/sqt5/font_pt_04x06.lbm deleted file mode 100644 index bb2db6d13..000000000 --- a/radio/src/fonts/sqt5/font_pt_04x06.lbm +++ /dev/null @@ -1 +0,0 @@ -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, diff --git a/radio/src/fonts/sqt5/font_pt_05x07.lbm b/radio/src/fonts/sqt5/font_pt_05x07.lbm deleted file mode 100644 index 107401149..000000000 --- a/radio/src/fonts/sqt5/font_pt_05x07.lbm +++ /dev/null @@ -1 +0,0 @@ -0x78,0x14,0x16,0x15,0x78,0x74,0x54,0x56,0x55,0x7c,0x78,0x16,0x15,0x16,0x78,0x74,0x56,0x55,0x56,0x7c,0x7a,0x15,0x16,0x15,0x78,0x74,0x56,0x55,0x56,0x7d,0x78,0x15,0x16,0x14,0x78,0x74,0x55,0x56,0x54,0x7c,0x1c,0xa2,0x62,0x22,0x22,0x3c,0xa4,0x64,0x24,0x24,0x7c,0x54,0x56,0x55,0x44,0x7c,0x54,0x56,0x55,0x5c,0x7c,0x56,0x55,0x56,0x44,0x7c,0x56,0x55,0x56,0x5c,0x44,0x7e,0x45,0xff,0xff,0x48,0x7a,0x41,0xff,0xff,0x3c,0x42,0x42,0x43,0x3c,0x38,0x44,0x46,0x45,0x38,0x3c,0x42,0x43,0x42,0x3c,0x38,0x44,0x46,0x44,0x38,0x3c,0x43,0x42,0x43,0x3c,0x38,0x46,0x44,0x46,0x38,0x3c,0x40,0x42,0x41,0x3c,0x78,0x40,0x44,0x42,0x78, diff --git a/radio/src/fonts/sqt5/font_pt_05x07.png b/radio/src/fonts/sqt5/font_pt_05x07.png index 4aba8238c9dd1c96bfa3cd4482f82a0de080a01b..cd92fc7ab332d9ece9df2a5c622fc022ad3f99c5 100644 GIT binary patch delta 160 zcmV;R0AK&~0rmlqUVq*J2@53wHz~eV0001XNklC9&eJw;9UkKCir2eed~Br{X!!EzdE4 zLG>YqMlT2-Og6}U-wWjz$gndWxOV`ks3%$Cm;%Fp5ZL?w{~6zNU={#QG({HpATn0~ O0000TGaAO1t?k{&5@nBdni}o;X_UYrRmn+=e$_!jxbrfNl+~sd`>~KbSrXN3=aoyozp3f;F7=Iefuzf};Xis(9E+(&f zncx+w`$&U0kNq2Qa^P10Fp~Iws-DDI>+gxp&J@#fGisrU-?Hx|*0>glVj6Z4jhTlI(%EEGht+52QmHx{rDIfqR-x^CR16F=; zHT-hO^5__|#2fj$jBq%Sx;2XA4z2(I002ovPDHLkV1k>Gh;je` diff --git a/radio/src/fonts/sqt5/font_se_04x06.lbm b/radio/src/fonts/sqt5/font_se_04x06.lbm deleted file mode 100644 index 2eb67ea9e..000000000 --- a/radio/src/fonts/sqt5/font_se_04x06.lbm +++ /dev/null @@ -1 +0,0 @@ -0x3a,0x2b,0x2b,0x3e,0x7f,0x3a,0x2b,0x2a,0x3f,0x7f,0x18,0x25,0x24,0x19,0x7f,0x3c,0x0b,0x0b,0x3c,0x7f,0x3d,0x0a,0x0a,0x3d,0x7f,0x1d,0x22,0x22,0x1d,0x7f, diff --git a/radio/src/fonts/sqt5/font_se_05x07.lbm b/radio/src/fonts/sqt5/font_se_05x07.lbm deleted file mode 100644 index ef8fc9c71..000000000 --- a/radio/src/fonts/sqt5/font_se_05x07.lbm +++ /dev/null @@ -1 +0,0 @@ -0x74,0x57,0x55,0x57,0x7c,0x74,0x55,0x54,0x55,0x7c,0x38,0x45,0x44,0x45,0x38,0x78,0x17,0x15,0x17,0x78,0x78,0x15,0x14,0x15,0x78,0x38,0x45,0x44,0x45,0x38, diff --git a/radio/src/fonts/sqt5/font_se_08x10.lbm b/radio/src/fonts/sqt5/font_se_08x10.lbm deleted file mode 100644 index 104f312df..000000000 --- a/radio/src/fonts/sqt5/font_se_08x10.lbm +++ /dev/null @@ -1 +0,0 @@ -0x90,0x07,0x90,0x07,0x92,0x04,0x95,0x04,0x95,0x04,0xf2,0x07,0xf0,0x07,0xff,0x0f,0x90,0x07,0x96,0x07,0x96,0x04,0x90,0x04,0x96,0x04,0xf6,0x07,0xf0,0x07,0xff,0x0f,0xe0,0x03,0xf6,0x07,0x16,0x04,0x10,0x04,0x16,0x04,0xf6,0x07,0xe0,0x03,0xff,0x0f,0xf0,0x07,0xf8,0x07,0x9a,0x00,0x9d,0x00,0x9d,0x00,0x9a,0x00,0xf8,0x07,0xf0,0x07,0xf0,0x07,0xfb,0x07,0x9b,0x00,0x98,0x00,0x98,0x00,0x9b,0x00,0xfb,0x07,0xf0,0x07,0xf0,0x03,0xfb,0x07,0x0b,0x04,0x08,0x04,0x08,0x04,0x0b,0x04,0xfb,0x07,0xf0,0x03, diff --git a/radio/src/fonts/sqt5/font_se_10x14.lbm b/radio/src/fonts/sqt5/font_se_10x14.lbm deleted file mode 100644 index e1fa337cc..000000000 --- a/radio/src/fonts/sqt5/font_se_10x14.lbm +++ /dev/null @@ -1 +0,0 @@ -0x60,0x7e,0x60,0x7e,0x60,0x7e,0x64,0x66,0x6a,0x66,0x6a,0x66,0x64,0x66,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x7e,0x60,0x7e,0x6c,0x7e,0x6c,0x66,0x60,0x66,0x60,0x66,0x6c,0x66,0xec,0x7f,0xe0,0x7f,0xe0,0x7f,0xc0,0x3f,0xe0,0x7f,0xec,0x7f,0x6c,0x60,0x60,0x60,0x60,0x60,0x6c,0x60,0xec,0x7f,0xe0,0x7f,0xc0,0x3f,0xf0,0x7f,0xf8,0x7f,0xf8,0x7f,0x1a,0x06,0x1d,0x06,0x1d,0x06,0x1a,0x06,0xf8,0x7f,0xf8,0x7f,0xf0,0x7f,0xf0,0x7f,0xfb,0x7f,0xfb,0x7f,0x18,0x06,0x18,0x06,0x18,0x06,0x18,0x06,0xfb,0x7f,0xfb,0x7f,0xf0,0x7f,0xf0,0x3f,0xfb,0x7f,0xfb,0x7f,0x18,0x60,0x18,0x60,0x18,0x60,0x18,0x60,0xfb,0x7f,0xfb,0x7f,0xf0,0x3f, diff --git a/radio/src/fonts/std/.gitignore b/radio/src/fonts/std/.gitignore new file mode 100644 index 000000000..82b82bcbf --- /dev/null +++ b/radio/src/fonts/std/.gitignore @@ -0,0 +1 @@ +/*.lbm diff --git a/radio/src/fonts/std/font_03x05.lbm b/radio/src/fonts/std/font_03x05.lbm deleted file mode 100644 index 1e163ee0d..000000000 --- a/radio/src/fonts/std/font_03x05.lbm +++ /dev/null @@ -1 +0,0 @@ -0x04,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0x11,0x0e,0x12,0x1f,0x10,0x19,0x15,0x13,0x11,0x15,0x1f,0x07,0x04,0x1f,0x17,0x15,0x1d,0x1f,0x15,0x1d,0x01,0x1d,0x03,0x1f,0x15,0x1f,0x17,0x15,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x1f,0x11, diff --git a/radio/src/fonts/std/font_04x06.lbm b/radio/src/fonts/std/font_04x06.lbm deleted file mode 100644 index 852037f54..000000000 --- a/radio/src/fonts/std/font_04x06.lbm +++ /dev/null @@ -1,6 +0,0 @@ -0x00,0x00,0x7f,0x7f,0x7f,0x7f,0x7f,0x2f,0x7f,0x7f,0x7f,0x07,0x00,0x07,0x7f,0x14,0x3e,0x14,0x3e,0x14,0x04,0x2a,0x3e,0x2a,0x10,0x13,0x08,0x04,0x32,0x7f,0x14,0x2a,0x14,0x20,0x7f,0x7f,0x07,0x7f,0x7f,0x7f,0x7f,0x1e,0x21,0x7f,0x7f,0x7f,0x21,0x1e,0x7f,0x7f,0x7f,0x2a,0x1c,0x2a,0x7f,0x08,0x08,0x3e,0x08,0x08,0x7f,0x40,0x30,0x10,0x7f,0x08,0x08,0x08,0x08,0x7f,0x00,0x30,0x30,0x7f,0x7f,0x10,0x08,0x04,0x02,0x7f, -0x1e,0x21,0x21,0x1e,0x7f,0x00,0x22,0x3f,0x20,0x7f,0x22,0x31,0x29,0x26,0x7f,0x11,0x25,0x25,0x1b,0x7f,0x0c,0x0a,0x3f,0x08,0x7f,0x17,0x25,0x25,0x19,0x7f,0x1e,0x25,0x25,0x18,0x7f,0x01,0x31,0x0d,0x03,0x7f,0x1a,0x25,0x25,0x1a,0x7f,0x06,0x29,0x29,0x1e,0x7f,0x7f,0x36,0x36,0x00,0x7f,0x7f,0x76,0x16,0x00,0x7f,0x7f,0x08,0x14,0x22,0x7f,0x14,0x14,0x14,0x14,0x7f,0x7f,0x22,0x14,0x08,0x7f,0x7f,0x02,0x29,0x06,0x7f, -0x02,0x05,0x02,0x7f,0x7f,0x3e,0x09,0x09,0x3e,0x7f,0x3f,0x25,0x25,0x1a,0x7f,0x1e,0x21,0x21,0x12,0x7f,0x3f,0x21,0x21,0x1e,0x7f,0x3f,0x25,0x25,0x21,0x7f,0x3f,0x05,0x05,0x01,0x7f,0x1e,0x21,0x29,0x3a,0x7f,0x3f,0x04,0x04,0x3f,0x7f,0x21,0x3f,0x21,0x7f,0x7f,0x10,0x20,0x20,0x1f,0x7f,0x3f,0x0c,0x12,0x21,0x7f,0x3f,0x20,0x20,0x20,0x7f,0x3f,0x02,0x04,0x02,0x3f,0x3f,0x06,0x18,0x3f,0x7f,0x1e,0x21,0x21,0x1e,0x7f, -0x3f,0x09,0x09,0x06,0x7f,0x1e,0x31,0x21,0x5e,0x7f,0x3f,0x09,0x19,0x26,0x7f,0x12,0x25,0x29,0x12,0x7f,0x01,0x3f,0x01,0x7f,0x7f,0x1f,0x20,0x20,0x1f,0x7f,0x0f,0x30,0x30,0x0f,0x7f,0x3f,0x18,0x0c,0x18,0x3f,0x33,0x0c,0x0c,0x33,0x7f,0x07,0x38,0x07,0x7f,0x7f,0x31,0x29,0x25,0x23,0x7f,0x3f,0x21,0x21,0x7f,0x7f,0x02,0x04,0x08,0x10,0x7f,0x21,0x21,0x3f,0x7f,0x7f,0x02,0x01,0x02,0x7f,0x7f,0x20,0x20,0x20,0x20,0x7f, -0x01,0x02,0x7f,0x7f,0x7f,0x18,0x24,0x14,0x3c,0x7f,0x3f,0x24,0x24,0x18,0x7f,0x18,0x24,0x24,0x7f,0x7f,0x18,0x24,0x24,0x3f,0x7f,0x18,0x34,0x2c,0x08,0x7f,0x08,0x3e,0x09,0x02,0x7f,0x28,0x54,0x54,0x4c,0x7f,0x3f,0x04,0x04,0x38,0x7f,0x24,0x3d,0x20,0x7f,0x7f,0x20,0x40,0x3d,0x7f,0x7f,0x3f,0x08,0x14,0x20,0x7f,0x21,0x3f,0x20,0x7f,0x7f,0x3c,0x08,0x38,0x0c,0x38,0x3c,0x04,0x04,0x38,0x7f,0x18,0x24,0x24,0x18,0x7f, -0x7c,0x24,0x24,0x18,0x7f,0x18,0x24,0x24,0x7c,0x7f,0x3c,0x04,0x04,0x08,0x7f,0x28,0x2c,0x34,0x14,0x7f,0x04,0x1f,0x24,0x20,0x7f,0x1c,0x20,0x20,0x3c,0x7f,0x1c,0x20,0x1c,0x7f,0x7f,0x3c,0x30,0x18,0x30,0x3c,0x24,0x18,0x18,0x24,0x7f,0x0c,0x50,0x20,0x1c,0x7f,0x24,0x34,0x2c,0x24,0x7f,0x04,0x1e,0x21,0x7f,0x7f,0x7f,0x3f,0x7f,0x7f,0x7f,0x21,0x1e,0x04,0x7f,0x7f,0x08,0x2a,0x1c,0x08,0x7f,0x08,0x1c,0x2a,0x08,0x7f, diff --git a/radio/src/fonts/std/font_04x06_extra.lbm b/radio/src/fonts/std/font_04x06_extra.lbm deleted file mode 100644 index cce1e9d68..000000000 --- a/radio/src/fonts/std/font_04x06_extra.lbm +++ /dev/null @@ -1 +0,0 @@ -0x04,0x02,0x3b,0x02,0x04,0x08,0x10,0x37,0x10,0x08,0x20,0x12,0x0a,0x02,0x1e,0x02,0x24,0x28,0x20,0x3c,0x3c,0x20,0x28,0x24,0x02,0x1e,0x02,0x0a,0x12,0x20, diff --git a/radio/src/fonts/std/font_05x07.lbm b/radio/src/fonts/std/font_05x07.lbm deleted file mode 100644 index d370d9101..000000000 --- a/radio/src/fonts/std/font_05x07.lbm +++ /dev/null @@ -1,6 +0,0 @@ -0x00,0x00,0xff,0xff,0xff,0xff,0xff,0x6f,0xff,0xff,0xff,0x07,0x00,0x07,0xff,0x18,0x30,0x18,0x0c,0x06,0x08,0x7f,0x7f,0x7f,0x08,0x23,0x13,0x08,0x64,0x62,0x36,0x49,0x55,0x22,0x50,0xff,0x05,0x03,0xff,0xff,0xff,0x1c,0x22,0x41,0xff,0xff,0x41,0x22,0x1c,0xff,0x14,0x08,0x3e,0x08,0x14,0x08,0x08,0x3e,0x08,0x08,0xff,0x50,0x30,0xff,0xff,0x00,0x08,0x08,0x08,0xff,0xff,0xff,0x40,0xff,0xff,0x20,0x10,0x08,0x04,0x02, -0x3e,0x41,0x41,0x3e,0xff,0x00,0x42,0x7f,0x40,0xff,0x62,0x51,0x49,0x46,0xff,0x41,0x49,0x49,0x36,0xff,0x18,0x14,0x12,0x7f,0xff,0x27,0x45,0x45,0x39,0xff,0x3e,0x49,0x49,0x32,0xff,0x01,0x79,0x05,0x03,0xff,0x36,0x49,0x49,0x36,0xff,0x06,0x49,0x29,0x1e,0xff,0xff,0x36,0x36,0xff,0xff,0xff,0x56,0x36,0xff,0xff,0xff,0x08,0x14,0x22,0x41,0x14,0x14,0x14,0x14,0x14,0x41,0x22,0x14,0x08,0xff,0x02,0x01,0x51,0x09,0x06, -0x06,0x09,0x09,0x06,0xff,0x7e,0x09,0x09,0x09,0x7e,0x7f,0x49,0x49,0x49,0x36,0x3e,0x41,0x41,0x41,0x22,0x7f,0x41,0x41,0x22,0x1c,0x7f,0x49,0x49,0x49,0x41,0x7f,0x09,0x09,0x09,0x01,0x3e,0x41,0x49,0x49,0x7a,0x7f,0x08,0x08,0x08,0x7f,0xff,0x41,0x7f,0x41,0xff,0x20,0x40,0x41,0x3f,0x01,0x7f,0x08,0x14,0x22,0x41,0x7f,0x40,0x40,0x40,0xff,0x7f,0x02,0x0c,0x02,0x7f,0x7f,0x04,0x08,0x10,0x7f,0x3e,0x41,0x41,0x41,0x3e, -0x7f,0x09,0x09,0x09,0x06,0x3e,0x41,0x51,0x21,0x5e,0x7f,0x09,0x19,0x29,0x46,0x26,0x49,0x49,0x49,0x32,0x01,0x01,0x7f,0x01,0x01,0x3f,0x40,0x40,0x40,0x3f,0x1f,0x20,0x40,0x20,0x1f,0x3f,0x40,0x30,0x40,0x3f,0x63,0x14,0x08,0x14,0x63,0x07,0x08,0x70,0x08,0x07,0x61,0x51,0x49,0x45,0x43,0x7f,0x41,0x41,0x00,0xff,0x02,0x04,0x08,0x10,0x20,0x00,0x41,0x41,0x7f,0xff,0x04,0x02,0x01,0x02,0x04,0x40,0x40,0x40,0x40,0xff, -0xff,0x01,0x02,0x04,0xff,0x20,0x54,0x54,0x54,0x78,0x7f,0x48,0x44,0x44,0x38,0x38,0x44,0x44,0x44,0x20,0x38,0x44,0x44,0x48,0x7f,0x38,0x54,0x54,0x54,0x18,0x08,0x7e,0x09,0x01,0x02,0x0c,0x52,0x52,0x52,0x3e,0x7f,0x08,0x04,0x04,0x78,0xff,0x44,0x7d,0x40,0xff,0x20,0x40,0x44,0x3d,0xff,0x7f,0x10,0x28,0x44,0xff,0xff,0x41,0x7f,0x40,0xff,0x7c,0x04,0x18,0x04,0x78,0x7c,0x08,0x04,0x04,0x78,0x38,0x44,0x44,0x44,0x38, -0x7c,0x14,0x14,0x14,0x08,0x08,0x14,0x14,0x18,0x7c,0x7c,0x08,0x04,0x04,0x08,0x48,0x54,0x54,0x54,0x20,0x04,0x3f,0x44,0x40,0x20,0x3c,0x40,0x40,0x20,0x7c,0x1c,0x20,0x40,0x20,0x1c,0x3c,0x40,0x20,0x40,0x3c,0x44,0x28,0x10,0x28,0x44,0x0c,0x50,0x50,0x50,0x3c,0x44,0x64,0x54,0x4c,0x44,0x10,0x08,0x10,0x08,0xff,0xff,0xff,0x7f,0xff,0xff,0x41,0x22,0x54,0x28,0xff,0x08,0x08,0x22,0x1c,0x08,0x08,0x1c,0x22,0x08,0x08, diff --git a/radio/src/fonts/std/font_05x07.png b/radio/src/fonts/std/font_05x07.png index 9f7dfaf4b7280a49ec2547867d449288de38a44d..71a4d36ebf4dad393b0142d8f1badd6fbadbe918 100644 GIT binary patch delta 323 zcmV-J0lfb21pWk&HZ}obOGiWihy@);00009a7bBm000XU000XU0RWnu7ytkO2XskI zMF-vi2?;YV^yAVa00060v0oDbe~>?1$51@y?ap(>d&)oU12X^aJhysR^~ZY*+|9B( z&)qGn{rr!iYWmxqr`Elz12U_l-tJmecCWtpA4APt+2f^U2jmYwVE7LP|Nj5}$6$W{ zf4zOxj)y=i!tejDyHLI7DUg{GEa~>nW5ZEVLx%F6Zx(q*JC*{SULy0If9XTfj#SNa zK#QN-{VSTW6zJX(W(l{C1u6%C?kxwqckgqc2|yaed0>rTMprZNOcn$>z41Zzc7|e} z-$1ADb|`3J;E|W!dG3zc0-$L9{MSaS)~|mMT+L8FPv&%KiQ@z9|4{e-e^mV+0G;|B VUWz^fS^xk507*qoM6N<$0fL#`msbD) delta 281 zcmV+!0p|Yx1n&fpHjzUe3p7_?mTz5?Cs}&3{}(L?mV^b-8&$&I_mANRb}_y7yo0ZnJas|wCsTX z;Rg)=A>jS*e+=gL|JU1B?RW^ZBK-dUx(n5No&uRE!IEz8JT@E^HDoC7`DT%4v|}mI z=_NAXnSMSL?MT%;2ekOP-M^w4OM&h!VU}?FSfFwM=-zU$d-pyEngFChoCnqjW^^?J z&tyTM(;FXTZ)Ygx`3-dXZij*v1|E6oo#*bDEdYwv&wp*SYW?~L!PN})^JGq!mN-7p f{tt8Sqw4-ELc=7oI7~A1nglh%iqx6&-+hYZ(h9KQT0ANr8oPDRd13Z4JJAU=sw7V55I06h7 zw)!ur+Op`GN2)^xuXm{mw&;PSI^?v9{?IcE@MlF`{E=Wgw*3w^!M3UE`pp2y8X>)A zhY&(LJ%616sedaV4MG4M-$8I(cXPhkL+Gsgy$qqZX_I-!Ce&?$d!@i_xWutn5q$Ro z!O=imx{5~nyfwOk!IFQYcXV{Wz`_?(_`be? zoz_lj04E$axZr#QWYj)v3+s?OZd(u|0utd3VOa<(0)G}b*t~63@LZS(KCfAPzGi{r zJ{G2_KzA@c1K#0vN=Lz(jW{#oRwD$SF~L}UnZ?;c z++z62yhng!55XvbA&5kD%PDHLkV1hvLW|RN` delta 785 zcmV+s1Md9d2IK~iV1ES`D?Awy6X3xe}UbS))`!S$dj|3L|%M4gOD zpeRM0`tGEd{&<50pL_S-7YW0Z`brfA^(^IkzARu0%WCrJ3xDiv7|1n*!IKZLv18!Q zK=W_#;rYk+V0qyigj)^aqx6DW-bh1gAV~KS06ZuGF27RK0lvI29Y6Xly0H^#H~|b6 zHv2EA-qQ9vC%QugulA@8*7m{H9cofVU-ml%^kzjR{wQ!<$9W6e;5byuUOfP^PDr=j zA%xIQx3|fFEPrYsH9`Q~o{Qj0xjkR+B6K!;-3+0-?T~rbAyn2u-e{0DNnEFm(395) zt^p!x8?Ph?n*;~~fwl{-La39jh8k?)+5{W`r|V$6b-IPYl0Tz&O!U0K!VgpAxp}}| zx^T7taK_=33(ki?hppq5u#b5>Z3$vUKqEX5wvDhRV1J3j9&gzdJQEFsoG;jXe!+%# z`dBm?8cYY{GXSoEn=72^4l@+NTN9j_E7jUY3n9`&F_?|P4ms#x|3xomrToJ06)-oP z+r?Ha!0+f5z$4C61DSQ=IfXv7HAImHat{$74sWarkK+tJw~Nq7(`zgBaH!26;=7 z>2KJ0xKlwggURF{`1uVMPoDIbz>Spkxqe zn9#VqvUobk5;kg%#>eGQkqy}RXar%#%e4r>)p!!JRVagrtO~kcM*j_`TRZgoS4$ZH P015yANkvXXu0mjfXx(Y* diff --git a/radio/src/fonts/std/font_10x14.lbm b/radio/src/fonts/std/font_10x14.lbm deleted file mode 100644 index 1adf78d9e..000000000 --- a/radio/src/fonts/std/font_10x14.lbm +++ /dev/null @@ -1,6 +0,0 @@ -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x71,0xfe,0x71,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x7e,0x00,0x00,0x00,0x00,0x00,0x7e,0x00,0x3e,0x00,0x00,0x00,0x00,0x00,0x60,0x06,0x60,0x06,0xfe,0x7f,0xfe,0x7f,0x60,0x06,0x60,0x06,0xfe,0x7f,0xfe,0x7f,0x60,0x06,0x60,0x06,0x60,0x18,0xf0,0x18,0x98,0x19,0x98,0x19,0xfe,0x7f,0xfe,0x7f,0x98,0x19,0x98,0x19,0x18,0x0f,0x18,0x06,0x0c,0x18,0x1e,0x1c,0x1e,0x0e,0x0c,0x07,0x80,0x03,0xc0,0x01,0xe0,0x30,0x70,0x78,0x38,0x78,0x18,0x30,0x78,0x1e,0xfc,0x3f,0x8e,0x71,0xc6,0x63,0xe6,0x67,0x76,0x66,0x3c,0x3c,0x18,0x3c,0x00,0x66,0x00,0x66,0x00,0x00,0x00,0x00,0x66,0x00,0x76,0x00,0x3e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x07,0xf0,0x0f,0x38,0x1c,0x1c,0x38,0x0e,0x70,0x06,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x60,0x0e,0x70,0x1c,0x38,0x38,0x1c,0xf0,0x0f,0xe0,0x07,0x00,0x00,0x00,0x00,0x60,0x06,0x60,0x06,0xc0,0x03,0x80,0x01,0xf8,0x1f,0xf8,0x1f,0x80,0x01,0xc0,0x03,0x60,0x06,0x60,0x06,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xf8,0x1f,0xf8,0x1f,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x66,0x00,0x76,0x00,0x3e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x78,0x00,0x78,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x1c,0x00,0x0e,0x00,0x07,0x80,0x03,0xc0,0x01,0xe0,0x00,0x70,0x00,0x38,0x00,0x18,0x00, -0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x60,0x0e,0x70,0xfc,0x3f,0xf8,0x1f,0xff,0xff,0xff,0xff,0x00,0x00,0x18,0x60,0x1c,0x60,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x00,0xff,0xff,0xff,0xff,0x18,0x78,0x1c,0x7c,0x0e,0x6e,0x06,0x67,0x86,0x63,0xce,0x61,0xfc,0x60,0x78,0x60,0xff,0xff,0xff,0xff,0x06,0x60,0x06,0x60,0x86,0x61,0x86,0x61,0x86,0x61,0xce,0x73,0xfc,0x3f,0x78,0x1e,0xff,0xff,0xff,0xff,0x80,0x07,0xc0,0x07,0xe0,0x06,0x70,0x06,0x38,0x06,0x1c,0x06,0xfe,0x7f,0xfe,0x7f,0xff,0xff,0xff,0xff,0x7e,0x18,0x7e,0x38,0x66,0x70,0x66,0x60,0x66,0x60,0xe6,0x70,0xc6,0x3f,0x86,0x1f,0xff,0xff,0xff,0xff,0xf8,0x1f,0xfc,0x3f,0x8e,0x71,0x86,0x61,0x86,0x61,0x8e,0x73,0x1c,0x3f,0x18,0x1e,0xff,0xff,0xff,0xff,0x06,0x00,0x06,0x00,0x86,0x7f,0xc6,0x7f,0xe6,0x00,0x76,0x00,0x3e,0x00,0x1e,0x00,0xff,0xff,0xff,0xff,0x78,0x1e,0xfc,0x3f,0xce,0x73,0x86,0x61,0x86,0x61,0xce,0x73,0xfc,0x3f,0x78,0x1e,0xff,0xff,0xff,0xff,0x78,0x00,0xfc,0x00,0xce,0x61,0x86,0x71,0x86,0x39,0xce,0x1d,0xfc,0x0f,0xf8,0x07,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x30,0x0c,0x78,0x1e,0x78,0x1e,0x30,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x66,0x78,0x76,0x78,0x3e,0x30,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0xc0,0x03,0xe0,0x07,0x70,0x0e,0x38,0x1c,0x1c,0x38,0x0e,0x70,0x06,0x60,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x06,0x60,0x0e,0x70,0x1c,0x38,0x38,0x1c,0x70,0x0e,0xe0,0x07,0xc0,0x03,0x80,0x01,0x00,0x00,0x00,0x00,0x18,0x00,0x1c,0x00,0x0e,0x00,0x06,0x00,0x06,0x66,0x06,0x67,0x86,0x03,0xce,0x01,0xfc,0x00,0x78,0x00, -0x78,0x00,0xfc,0x00,0xce,0x01,0x86,0x01,0x86,0x01,0xce,0x01,0xfc,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0xe0,0x7f,0xf0,0x7f,0xb8,0x01,0x9c,0x01,0x8e,0x01,0x8e,0x01,0x9c,0x01,0xb8,0x01,0xf0,0x7f,0xe0,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0xce,0x73,0xfc,0x3f,0x78,0x1e,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x0e,0x70,0x1c,0x38,0x18,0x18,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x06,0x60,0x0e,0x70,0x1c,0x38,0x38,0x1c,0xf0,0x0f,0xe0,0x07,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x06,0x00,0x06,0x00,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x86,0x61,0x86,0x61,0x86,0x61,0x8e,0x71,0x9c,0x7f,0x98,0x3f,0xfe,0x7f,0xfe,0x7f,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x18,0x00,0x38,0x00,0x70,0x00,0x60,0x06,0x60,0x06,0x70,0xfe,0x3f,0xfe,0x1f,0x06,0x00,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0x80,0x01,0xc0,0x03,0xe0,0x07,0x70,0x0e,0x38,0x1c,0x1c,0x38,0x0e,0x70,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0xfe,0x7f,0xfe,0x7f,0x1c,0x00,0x38,0x00,0xf0,0x01,0xf0,0x01,0x38,0x00,0x1c,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x70,0x00,0xe0,0x00,0xc0,0x01,0x80,0x03,0x00,0x07,0x00,0x0e,0xfe,0x7f,0xfe,0x7f,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x0e,0x70,0xfc,0x3f,0xf8,0x1f, -0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0xce,0x01,0xfc,0x00,0x78,0x00,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x66,0x06,0x6e,0x06,0x3c,0x0e,0x38,0xfc,0x7f,0xf8,0x67,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x07,0x86,0x0f,0x86,0x1d,0xce,0x39,0xfc,0x70,0x78,0x60,0x78,0x18,0xfc,0x38,0xce,0x71,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x8e,0x73,0x1c,0x3f,0x18,0x1e,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0xfe,0x1f,0xfe,0x3f,0x00,0x70,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x70,0xfe,0x3f,0xfe,0x1f,0xfe,0x07,0xfe,0x0f,0x00,0x1c,0x00,0x38,0x00,0x70,0x00,0x70,0x00,0x38,0x00,0x1c,0xfe,0x0f,0xfe,0x07,0xfe,0x1f,0xfe,0x3f,0x00,0x70,0x00,0x70,0x00,0x3e,0x00,0x3e,0x00,0x70,0x00,0x70,0xfe,0x3f,0xfe,0x1f,0x1e,0x78,0x3e,0x7c,0x70,0x0e,0xe0,0x07,0xc0,0x03,0xc0,0x03,0xe0,0x07,0x70,0x0e,0x3e,0x7c,0x1e,0x78,0x7e,0x00,0xfe,0x00,0xc0,0x01,0x80,0x03,0x00,0x7f,0x00,0x7f,0x80,0x03,0xc0,0x01,0xfe,0x00,0x7e,0x00,0x06,0x78,0x06,0x7c,0x06,0x6e,0x06,0x67,0x86,0x63,0xc6,0x61,0xe6,0x60,0x76,0x60,0x3e,0x60,0x1e,0x60,0x00,0x00,0x00,0x00,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x00,0x00,0x00,0x00,0x18,0x00,0x38,0x00,0x70,0x00,0xe0,0x00,0xc0,0x01,0x80,0x03,0x00,0x07,0x00,0x0e,0x00,0x1c,0x00,0x18,0x00,0x00,0x00,0x00,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x00,0x00,0x00,0x00,0x60,0x00,0x70,0x00,0x38,0x00,0x1c,0x00,0x0e,0x00,0x0e,0x00,0x1c,0x00,0x38,0x00,0x70,0x00,0x60,0x00,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60, -0x00,0x00,0x00,0x00,0x06,0x00,0x0e,0x00,0x1c,0x00,0x38,0x00,0x70,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x3c,0x60,0x7e,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0x66,0xc0,0x7f,0x80,0x7f,0xfe,0x7f,0xfe,0x7f,0x80,0x61,0xc0,0x61,0xe0,0x60,0x60,0x60,0x60,0x60,0xe0,0x70,0xc0,0x3f,0x80,0x1f,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x70,0x00,0x38,0x00,0x18,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x60,0x60,0xe0,0x60,0xc0,0x61,0x80,0x61,0xfe,0x7f,0xfe,0x7f,0x80,0x1f,0xc0,0x3f,0xe0,0x76,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0x66,0xc0,0x07,0x80,0x07,0x80,0x01,0x80,0x01,0xf8,0x7f,0xfc,0x7f,0x8e,0x01,0x86,0x01,0x06,0x00,0x0e,0x00,0x1c,0x00,0x18,0x00,0xe0,0x01,0xf0,0x03,0x38,0x67,0x18,0x66,0x18,0x66,0x18,0x66,0x18,0x66,0x18,0x76,0xf8,0x3f,0xf8,0x1f,0xfe,0x7f,0xfe,0x7f,0x80,0x01,0xc0,0x01,0xe0,0x00,0x60,0x00,0x60,0x00,0xe0,0x00,0xc0,0x7f,0x80,0x7f,0x60,0x60,0x60,0x60,0xe6,0x7f,0xe6,0x7f,0x00,0x60,0x00,0x60,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x18,0x00,0x38,0x00,0x70,0x00,0x60,0x60,0x60,0x60,0x70,0xe6,0x3f,0xe6,0x1f,0xff,0xff,0xff,0xff,0xfe,0x7f,0xfe,0x7f,0x00,0x06,0x00,0x0f,0x80,0x1f,0xc0,0x39,0xe0,0x70,0x60,0x60,0xff,0xff,0xff,0xff,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0x7f,0xe0,0x7f,0x60,0x00,0xe0,0x00,0xc0,0x07,0xc0,0x07,0xe0,0x00,0xe0,0x00,0xc0,0x7f,0x80,0x7f,0xe0,0x7f,0xe0,0x7f,0x80,0x01,0xc0,0x01,0xe0,0x00,0x60,0x00,0x60,0x00,0xe0,0x00,0xc0,0x7f,0x80,0x7f,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xe0,0x70,0xc0,0x3f,0x80,0x1f, -0xe0,0x7f,0xe0,0x7f,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0xe0,0x07,0xc0,0x03,0x80,0x01,0x80,0x01,0xc0,0x03,0xe0,0x07,0x60,0x06,0x60,0x06,0x60,0x06,0xc0,0x07,0x80,0x07,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x80,0x01,0xc0,0x01,0xe0,0x00,0x60,0x00,0x60,0x00,0xe0,0x00,0xc0,0x01,0x80,0x01,0x80,0x61,0xc0,0x63,0xe0,0x67,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x7e,0x00,0x3c,0x00,0x18,0x60,0x00,0x60,0x00,0xfe,0x1f,0xfe,0x3f,0x60,0x70,0x60,0x60,0x00,0x60,0x00,0x70,0x00,0x38,0x00,0x18,0xe0,0x1f,0xe0,0x3f,0x00,0x70,0x00,0x60,0x00,0x60,0x00,0x70,0x00,0x38,0x00,0x18,0xe0,0x7f,0xe0,0x7f,0xe0,0x07,0xe0,0x0f,0x00,0x1c,0x00,0x38,0x00,0x70,0x00,0x70,0x00,0x38,0x00,0x1c,0xe0,0x0f,0xe0,0x07,0xe0,0x1f,0xe0,0x3f,0x00,0x70,0x00,0x70,0x00,0x38,0x00,0x38,0x00,0x70,0x00,0x70,0xe0,0x3f,0xe0,0x1f,0x60,0x60,0xe0,0x70,0xc0,0x39,0x80,0x1f,0x00,0x0f,0x00,0x0f,0x80,0x1f,0xc0,0x39,0xe0,0x70,0x60,0x60,0xe0,0x01,0xe0,0x03,0x00,0x67,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x76,0xe0,0x3f,0xe0,0x1f,0x60,0x60,0x60,0x70,0x60,0x78,0x60,0x7c,0x60,0x6e,0x60,0x67,0xe0,0x63,0xe0,0x61,0xe0,0x60,0x60,0x60,0x00,0x00,0x00,0x00,0x80,0x01,0xc0,0x03,0x78,0x1e,0x7c,0x3e,0x0e,0x70,0x06,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x7f,0xfe,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x60,0x0e,0x70,0x7c,0x3e,0x78,0x1e,0xc0,0x03,0x80,0x01,0x00,0x00,0x00,0x00,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x18,0x18,0x38,0x1c,0xf0,0x0f,0xe0,0x07,0xc0,0x03,0x80,0x01,0x80,0x01,0xc0,0x03,0xe0,0x07,0xf0,0x0f,0x38,0x1c,0x18,0x18,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01, diff --git a/radio/src/fonts/std/font_10x14_compressed.lbm b/radio/src/fonts/std/font_10x14_compressed.lbm deleted file mode 100644 index 54d25b09f..000000000 --- a/radio/src/fonts/std/font_10x14_compressed.lbm +++ /dev/null @@ -1 +0,0 @@ -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x66,0x00,0x76,0x00,0x3e,0x00,0x1e,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x30,0x00,0x78,0x00,0x78,0x00,0x30,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0xff,0xff,0xff,0xff,0xff,0xff,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x60,0x0e,0x70,0xfc,0x3f,0xf8,0x1f,0xff,0xff,0xff,0xff,0x00,0x00,0x18,0x60,0x1c,0x60,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x00,0xff,0xff,0xff,0xff,0x18,0x78,0x1c,0x7c,0x0e,0x6e,0x06,0x67,0x86,0x63,0xce,0x61,0xfc,0x60,0x78,0x60,0xff,0xff,0xff,0xff,0x06,0x60,0x06,0x60,0x86,0x61,0x86,0x61,0x86,0x61,0xce,0x73,0xfc,0x3f,0x78,0x1e,0xff,0xff,0xff,0xff,0x80,0x07,0xc0,0x07,0xe0,0x06,0x70,0x06,0x38,0x06,0x1c,0x06,0xfe,0x7f,0xfe,0x7f,0xff,0xff,0xff,0xff,0x7e,0x18,0x7e,0x38,0x66,0x70,0x66,0x60,0x66,0x60,0xe6,0x70,0xc6,0x3f,0x86,0x1f,0xff,0xff,0xff,0xff,0xf8,0x1f,0xfc,0x3f,0x8e,0x71,0x86,0x61,0x86,0x61,0x8e,0x73,0x1c,0x3f,0x18,0x1e,0xff,0xff,0xff,0xff,0x06,0x00,0x06,0x00,0x86,0x7f,0xc6,0x7f,0xe6,0x00,0x76,0x00,0x3e,0x00,0x1e,0x00,0xff,0xff,0xff,0xff,0x78,0x1e,0xfc,0x3f,0xce,0x73,0x86,0x61,0x86,0x61,0xce,0x73,0xfc,0x3f,0x78,0x1e,0xff,0xff,0xff,0xff,0x78,0x00,0xfc,0x00,0xce,0x61,0x86,0x71,0x86,0x39,0xce,0x1d,0xfc,0x0f,0xf8,0x07,0xff,0xff,0xff,0xff,0x00,0x00,0x30,0x0c,0x78,0x1e,0x78,0x1e,0x30,0x0c,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0x7f,0xf0,0x7f,0xb8,0x01,0x9c,0x01,0x8e,0x01,0x8e,0x01,0x9c,0x01,0xb8,0x01,0xf0,0x7f,0xe0,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0xce,0x73,0xfc,0x3f,0x78,0x1e,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x0e,0x70,0x1c,0x38,0x18,0x18,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x06,0x60,0x0e,0x70,0x1c,0x38,0x38,0x1c,0xf0,0x0f,0xe0,0x07,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x06,0x00,0x06,0x00,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x86,0x61,0x86,0x61,0x86,0x61,0x8e,0x71,0x9c,0x7f,0x98,0x3f,0xfe,0x7f,0xfe,0x7f,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xfe,0x7f,0xfe,0x7f,0xff,0xff,0xff,0xff,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0xff,0xff,0xff,0xff,0x00,0x18,0x00,0x38,0x00,0x70,0x00,0x60,0x06,0x60,0x06,0x70,0xfe,0x3f,0xfe,0x1f,0x06,0x00,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0x80,0x01,0xc0,0x03,0xe0,0x07,0x70,0x0e,0x38,0x1c,0x1c,0x38,0x0e,0x70,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0xfe,0x7f,0xfe,0x7f,0x1c,0x00,0x38,0x00,0xf0,0x01,0xf0,0x01,0x38,0x00,0x1c,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x70,0x00,0xe0,0x00,0xc0,0x01,0x80,0x03,0x00,0x07,0x00,0x0e,0xfe,0x7f,0xfe,0x7f,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x0e,0x70,0xfc,0x3f,0xf8,0x1f,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0xce,0x01,0xfc,0x00,0x78,0x00,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x66,0x06,0x6e,0x06,0x3c,0x0e,0x38,0xfc,0x7f,0xf8,0x67,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x07,0x86,0x0f,0x86,0x1d,0xce,0x39,0xfc,0x70,0x78,0x60,0x78,0x18,0xfc,0x38,0xce,0x71,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x8e,0x73,0x1c,0x3f,0x18,0x1e,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0xfe,0x1f,0xfe,0x3f,0x00,0x70,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x70,0xfe,0x3f,0xfe,0x1f,0xfe,0x07,0xfe,0x0f,0x00,0x1c,0x00,0x38,0x00,0x70,0x00,0x70,0x00,0x38,0x00,0x1c,0xfe,0x0f,0xfe,0x07,0xfe,0x1f,0xfe,0x3f,0x00,0x70,0x00,0x70,0x00,0x3e,0x00,0x3e,0x00,0x70,0x00,0x70,0xfe,0x3f,0xfe,0x1f,0x1e,0x78,0x3e,0x7c,0x70,0x0e,0xe0,0x07,0xc0,0x03,0xc0,0x03,0xe0,0x07,0x70,0x0e,0x3e,0x7c,0x1e,0x78,0x7e,0x00,0xfe,0x00,0xc0,0x01,0x80,0x03,0x00,0x7f,0x00,0x7f,0x80,0x03,0xc0,0x01,0xfe,0x00,0x7e,0x00,0x06,0x78,0x06,0x7c,0x06,0x6e,0x06,0x67,0x86,0x63,0xc6,0x61,0xe6,0x60,0x76,0x60,0x3e,0x60,0x1e,0x60,0x00,0x18,0x00,0x3c,0x60,0x7e,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0x66,0xc0,0x7f,0x80,0x7f,0xfe,0x7f,0xfe,0x7f,0x80,0x61,0xc0,0x61,0xe0,0x60,0x60,0x60,0x60,0x60,0xe0,0x70,0xc0,0x3f,0x80,0x1f,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x70,0x00,0x38,0x00,0x18,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x60,0x60,0xe0,0x60,0xc0,0x61,0x80,0x61,0xfe,0x7f,0xfe,0x7f,0x80,0x1f,0xc0,0x3f,0xe0,0x76,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0x66,0xc0,0x07,0x80,0x07,0x80,0x01,0x80,0x01,0xf8,0x7f,0xfc,0x7f,0x8e,0x01,0x86,0x01,0x06,0x00,0x0e,0x00,0x1c,0x00,0x18,0x00,0xe0,0x01,0xf0,0x03,0x38,0x67,0x18,0x66,0x18,0x66,0x18,0x66,0x18,0x66,0x18,0x76,0xf8,0x3f,0xf8,0x1f,0xfe,0x7f,0xfe,0x7f,0x80,0x01,0xc0,0x01,0xe0,0x00,0x60,0x00,0x60,0x00,0xe0,0x00,0xc0,0x7f,0x80,0x7f,0xff,0xff,0xff,0xff,0x60,0x60,0x60,0x60,0xe6,0x7f,0xe6,0x7f,0x00,0x60,0x00,0x60,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x18,0x00,0x38,0x00,0x70,0x00,0x60,0x60,0x60,0x60,0x70,0xe6,0x3f,0xe6,0x1f,0xff,0xff,0xfe,0x7f,0xfe,0x7f,0x00,0x06,0x00,0x0f,0x80,0x1f,0xc0,0x39,0xe0,0x70,0x60,0x60,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0xff,0xff,0xff,0xff,0xe0,0x7f,0xe0,0x7f,0x60,0x00,0xe0,0x00,0xc0,0x07,0xc0,0x07,0xe0,0x00,0xe0,0x00,0xc0,0x7f,0x80,0x7f,0xe0,0x7f,0xe0,0x7f,0x80,0x01,0xc0,0x01,0xe0,0x00,0x60,0x00,0x60,0x00,0xe0,0x00,0xc0,0x7f,0x80,0x7f,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xe0,0x70,0xc0,0x3f,0x80,0x1f,0xe0,0x7f,0xe0,0x7f,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0xe0,0x07,0xc0,0x03,0x80,0x01,0x80,0x01,0xc0,0x03,0xe0,0x07,0x60,0x06,0x60,0x06,0x60,0x06,0xc0,0x07,0x80,0x07,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x80,0x01,0xc0,0x01,0xe0,0x00,0x60,0x00,0x60,0x00,0xe0,0x00,0xc0,0x01,0x80,0x01,0x80,0x61,0xc0,0x63,0xe0,0x67,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x7e,0x00,0x3c,0x00,0x18,0x60,0x00,0x60,0x00,0xf8,0x1f,0xf8,0x3f,0x60,0x70,0x60,0x60,0x00,0x60,0x00,0x70,0x00,0x38,0x00,0x18,0xe0,0x1f,0xe0,0x3f,0x00,0x70,0x00,0x60,0x00,0x60,0x00,0x70,0x00,0x38,0x00,0x18,0xe0,0x7f,0xe0,0x7f,0xe0,0x07,0xe0,0x0f,0x00,0x1c,0x00,0x38,0x00,0x70,0x00,0x70,0x00,0x38,0x00,0x1c,0xe0,0x0f,0xe0,0x07,0xe0,0x1f,0xe0,0x3f,0x00,0x70,0x00,0x70,0x00,0x38,0x00,0x38,0x00,0x70,0x00,0x70,0xe0,0x3f,0xe0,0x1f,0x60,0x60,0xe0,0x70,0xc0,0x39,0x80,0x1f,0x00,0x0f,0x00,0x0f,0x80,0x1f,0xc0,0x39,0xe0,0x70,0x60,0x60,0xe0,0x01,0xe0,0x03,0x00,0x67,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x76,0xe0,0x3f,0xe0,0x1f,0x60,0x60,0x60,0x70,0x60,0x78,0x60,0x7c,0x60,0x6e,0x60,0x67,0xe0,0x63,0xe0,0x61,0xe0,0x60,0x60,0x60, diff --git a/radio/src/fonts/std/font_10x14_extra.lbm b/radio/src/fonts/std/font_10x14_extra.lbm deleted file mode 100644 index c71947df1..000000000 --- a/radio/src/fonts/std/font_10x14_extra.lbm +++ /dev/null @@ -1 +0,0 @@ -0x60,0x00,0x70,0x00,0x38,0x00,0x1c,0x00,0xce,0x7f,0xce,0x7f,0x1c,0x00,0x38,0x00,0x70,0x00,0x60,0x00,0x00,0x06,0x00,0x0e,0x00,0x1c,0x00,0x38,0xfe,0x73,0xfe,0x73,0x00,0x38,0x00,0x1c,0x00,0x0e,0x00,0x06,0x00,0x18,0x00,0x1c,0x00,0x0e,0x18,0x07,0x98,0x03,0xd8,0x01,0xd8,0x00,0x18,0x00,0xf8,0x03,0xf8,0x03,0x18,0x00,0x38,0x00,0x70,0x00,0xe0,0x18,0xc0,0x19,0x80,0x1b,0x00,0x1b,0x00,0x18,0xc0,0x1f,0xc0,0x1f,0xc0,0x1f,0xc0,0x1f,0x00,0x18,0x00,0x1b,0x80,0x1b,0xc0,0x19,0xe0,0x18,0x70,0x00,0x38,0x00,0x18,0x00,0xf8,0x03,0xf8,0x03,0x18,0x00,0xd8,0x00,0xd8,0x01,0x98,0x03,0x18,0x07,0x00,0x0e,0x00,0x1c,0x00,0x18, diff --git a/radio/src/fonts/std/font_cz_04x06.lbm b/radio/src/fonts/std/font_cz_04x06.lbm deleted file mode 100644 index 1f8bc43dc..000000000 --- a/radio/src/fonts/std/font_cz_04x06.lbm +++ /dev/null @@ -1 +0,0 @@ -0x18,0x24,0x16,0x3d,0x7f,0x18,0x24,0x25,0x02,0x01,0x18,0x34,0x2c,0x0a,0x01,0x18,0x34,0x2d,0x0a,0x01,0x24,0x3c,0x22,0x01,0x7f,0x18,0x24,0x24,0x1a,0x01,0x3c,0x04,0x05,0x0a,0x01,0x28,0x2d,0x36,0x15,0x7f,0x1c,0x20,0x22,0x3d,0x7f,0x1c,0x21,0x21,0x3c,0x7f,0x0c,0x50,0x22,0x1d,0x7f,0x38,0x14,0x14,0x3a,0x01,0x7f,0x24,0x3e,0x25,0x7f,0x3c,0x15,0x16,0x2d,0x7f,0x7f,0x0c,0x32,0x0d,0x7f,0x24,0x35,0x2e,0x25,0x7f,0x3e,0x2a,0x2a,0x22,0x01, diff --git a/radio/src/fonts/std/font_cz_05x07.lbm b/radio/src/fonts/std/font_cz_05x07.lbm deleted file mode 100644 index 1d275e5ce..000000000 --- a/radio/src/fonts/std/font_cz_05x07.lbm +++ /dev/null @@ -1 +0,0 @@ -0x20,0x54,0x56,0x55,0x78,0x38,0x45,0x46,0x45,0x20,0x38,0x54,0x56,0x55,0x18,0x38,0x55,0x56,0x55,0x18,0xff,0x44,0x7e,0x41,0xff,0x38,0x44,0x46,0x45,0x38,0x7c,0x09,0x06,0x05,0x08,0x48,0x55,0x56,0x55,0x20,0x3c,0x40,0x42,0x21,0x7c,0x3c,0x40,0x43,0x23,0x7c,0x0c,0x50,0x52,0x51,0x3c,0x78,0x14,0x16,0x15,0x78,0xff,0x44,0x7e,0x45,0xff,0x7c,0x15,0x16,0x35,0x48,0x0c,0x10,0x62,0x11,0x0c,0x44,0x65,0x56,0x4d,0xff,0x7c,0x54,0x56,0x55,0x44,0x1c,0x1c,0x3e,0x7f,0xff,0x22,0x1c,0x41,0x3e,0x00, diff --git a/radio/src/fonts/std/font_cz_08x10.lbm b/radio/src/fonts/std/font_cz_08x10.lbm deleted file mode 100644 index 0d2947a6b..000000000 --- a/radio/src/fonts/std/font_cz_08x10.lbm +++ /dev/null @@ -1 +0,0 @@ -0x00,0x03,0xa0,0x07,0xb0,0x04,0x94,0x04,0x93,0x02,0xf1,0x07,0xe0,0x07,0xff,0x0f,0xc0,0x01,0xe1,0x03,0x33,0x06,0x16,0x04,0x13,0x04,0x31,0x06,0x20,0x02,0xff,0x0f,0xc0,0x01,0xe0,0x03,0xb0,0x06,0x94,0x04,0xb3,0x04,0xe1,0x06,0xc0,0x02,0xff,0x0f,0xc0,0x01,0xe1,0x03,0xb3,0x06,0x96,0x04,0xb3,0x04,0xe1,0x06,0xc0,0x02,0xff,0x0f,0xff,0x0f,0x00,0x04,0x10,0x04,0xf4,0x07,0xf3,0x07,0x01,0x04,0x00,0x04,0xff,0x0f,0xc0,0x01,0xe0,0x03,0x30,0x06,0x14,0x04,0x33,0x06,0xe1,0x03,0xc0,0x01,0xff,0x0f,0x11,0x00,0xf3,0x07,0xe6,0x07,0x33,0x00,0x11,0x00,0x30,0x00,0x20,0x00,0xff,0x0f,0x60,0x02,0xf1,0x06,0x93,0x04,0x96,0x04,0x93,0x04,0xb1,0x07,0x20,0x03,0xff,0x0f,0xf0,0x01,0xf0,0x03,0x00,0x06,0x04,0x04,0x03,0x02,0xf1,0x07,0xf0,0x07,0xff,0x0f,0xf0,0x01,0xf0,0x03,0x02,0x06,0x05,0x04,0x05,0x02,0xf2,0x07,0xf0,0x07,0xff,0x0f,0xf0,0x04,0xf0,0x0c,0x00,0x09,0x04,0x09,0x83,0x0c,0xf1,0x07,0xf0,0x03,0xff,0x0f,0xf0,0x07,0xf8,0x07,0x88,0x00,0x8c,0x00,0x8b,0x00,0x89,0x00,0xf8,0x07,0xf0,0x07,0xff,0x0f,0x08,0x04,0x08,0x04,0xfc,0x07,0xfb,0x07,0x09,0x04,0x08,0x04,0xff,0x0f,0xf8,0x07,0xf9,0x07,0xcb,0x00,0xce,0x00,0xcb,0x01,0x49,0x03,0x78,0x06,0x30,0x04,0x18,0x00,0x18,0x00,0x30,0x00,0xe4,0x07,0xe3,0x07,0x31,0x00,0x18,0x00,0x18,0x00,0x08,0x06,0x09,0x07,0x8b,0x05,0xce,0x04,0x6b,0x04,0x39,0x04,0x18,0x04,0xff,0x0f,0xf8,0x07,0xf8,0x07,0x48,0x04,0x4c,0x04,0x4b,0x04,0x49,0x04,0x08,0x04,0xff,0x0f, diff --git a/radio/src/fonts/std/font_cz_10x14.lbm b/radio/src/fonts/std/font_cz_10x14.lbm deleted file mode 100644 index 00aaa41b3..000000000 --- a/radio/src/fonts/std/font_cz_10x14.lbm +++ /dev/null @@ -1 +0,0 @@ -0x00,0x18,0x00,0x3c,0x60,0x7e,0x60,0x66,0x68,0x66,0x6c,0x66,0x67,0x66,0xe3,0x66,0xc1,0x7f,0x80,0x7f,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x67,0x60,0x6f,0x60,0x6c,0x60,0x66,0x60,0x63,0x70,0x01,0x38,0x00,0x18,0x80,0x1f,0xc0,0x3f,0xe0,0x76,0x60,0x66,0x68,0x66,0x6c,0x66,0x67,0x66,0xe3,0x66,0xc1,0x07,0x80,0x07,0x80,0x1f,0xc0,0x3f,0xe0,0x76,0x67,0x66,0x6f,0x66,0x6c,0x66,0x66,0x66,0xe3,0x66,0xc1,0x07,0x80,0x07,0xff,0xff,0xff,0xff,0x60,0x60,0x60,0x60,0xe8,0x7f,0xec,0x7f,0x07,0x60,0x03,0x60,0x01,0x00,0xff,0xff,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x68,0x60,0x6c,0x60,0x67,0x60,0xe3,0x70,0xc1,0x3f,0x80,0x1f,0xe0,0x7f,0xe0,0x7f,0x80,0x01,0xc7,0x01,0xef,0x00,0x6c,0x00,0x66,0x00,0xe3,0x00,0xc1,0x01,0x80,0x01,0x80,0x61,0xc0,0x63,0xe0,0x67,0x67,0x66,0x6f,0x66,0x6c,0x66,0x66,0x66,0x63,0x7e,0x01,0x3c,0x00,0x18,0xe0,0x1f,0xe0,0x3f,0x00,0x70,0x00,0x60,0x08,0x60,0x0c,0x70,0x07,0x38,0x03,0x18,0xe1,0x7f,0xe0,0x7f,0xe0,0x1f,0xe0,0x3f,0x00,0x70,0x06,0x60,0x09,0x60,0x09,0x70,0x0f,0x38,0x06,0x18,0xe0,0x7f,0xe0,0x7f,0xe0,0x01,0xe0,0x03,0x00,0x67,0x00,0x66,0x08,0x66,0x0c,0x66,0x07,0x66,0x03,0x76,0xe1,0x3f,0xe0,0x1f,0x80,0x7f,0xc0,0x7f,0xe0,0x06,0x70,0x06,0x38,0x06,0x38,0x06,0x74,0x06,0xe7,0x06,0xc3,0x7f,0x81,0x7f,0xff,0xff,0xff,0xff,0x18,0x60,0x18,0x60,0xfc,0x7f,0xff,0x7f,0x1b,0x60,0x19,0x60,0xff,0xff,0xff,0xff,0xf8,0x7f,0xf8,0x7f,0x18,0x03,0x17,0x03,0x0f,0x07,0x0c,0x0f,0x16,0x1f,0xbb,0x3b,0xf1,0x71,0xe0,0x60,0xf8,0x00,0xf8,0x01,0x80,0x03,0x00,0x07,0x00,0x7e,0x04,0x7e,0x07,0x07,0x83,0x03,0xf9,0x01,0xf8,0x00,0x18,0x70,0x18,0x70,0x18,0x78,0x17,0x7c,0x0f,0x6e,0x0c,0x67,0x96,0x63,0xdb,0x61,0xf9,0x60,0x78,0x60,0xf8,0x7f,0xf8,0x7f,0x18,0x63,0x18,0x63,0x1c,0x63,0x1f,0x63,0x1b,0x63,0x19,0x63,0x18,0x60,0x18,0x60, diff --git a/radio/src/fonts/std/font_de_04x06.lbm b/radio/src/fonts/std/font_de_04x06.lbm deleted file mode 100644 index 1d500b394..000000000 --- a/radio/src/fonts/std/font_de_04x06.lbm +++ /dev/null @@ -1 +0,0 @@ -0x3d,0x0a,0x0a,0x3d,0x7f,0x18,0x25,0x14,0x3d,0x7f,0x1d,0x22,0x22,0x1d,0x7f,0x18,0x25,0x24,0x19,0x7f,0x1d,0x20,0x20,0x1d,0x7f,0x1a,0x20,0x10,0x3a,0x7f,0x7e,0x05,0x25,0x1a,0x7f, diff --git a/radio/src/fonts/std/font_de_05x07.lbm b/radio/src/fonts/std/font_de_05x07.lbm deleted file mode 100644 index d6b5a02e6..000000000 --- a/radio/src/fonts/std/font_de_05x07.lbm +++ /dev/null @@ -1 +0,0 @@ -0x7c,0x13,0x12,0x13,0x7c,0x20,0x55,0x54,0x55,0x78,0x3c,0x43,0x42,0x43,0x3c,0x38,0x45,0x44,0x45,0x38,0x3e,0x41,0x40,0x41,0x3e,0x3c,0x41,0x40,0x21,0x7c,0x7e,0x01,0x49,0x56,0x20, diff --git a/radio/src/fonts/std/font_de_08x10.lbm b/radio/src/fonts/std/font_de_08x10.lbm deleted file mode 100644 index 9ad2bbb36..000000000 --- a/radio/src/fonts/std/font_de_08x10.lbm +++ /dev/null @@ -1 +0,0 @@ -0xe0,0x07,0xf6,0x07,0x96,0x00,0x88,0x00,0x88,0x00,0x96,0x00,0xf6,0x07,0xe0,0x07,0x00,0x03,0xa0,0x07,0xb6,0x04,0x96,0x04,0x90,0x02,0xf6,0x07,0xe6,0x07,0xff,0x0f,0xe0,0x01,0xf6,0x03,0x16,0x06,0x08,0x04,0x08,0x04,0x16,0x06,0xf6,0x03,0xe0,0x01,0xc0,0x01,0xe6,0x03,0x36,0x06,0x10,0x04,0x36,0x06,0xe6,0x03,0xc0,0x01,0xff,0x0f,0xf8,0x01,0xfb,0x03,0x03,0x06,0x00,0x04,0x03,0x04,0x03,0x06,0xf8,0x03,0xf8,0x01,0xf0,0x01,0xf6,0x03,0x06,0x06,0x00,0x04,0x06,0x02,0xf6,0x07,0xf0,0x07,0xff,0x0f,0xf0,0x07,0xf8,0x07,0x8c,0x00,0x86,0x00,0x86,0x00,0x8c,0x00,0xf8,0x07,0xf0,0x07, diff --git a/radio/src/fonts/std/font_de_10x14.lbm b/radio/src/fonts/std/font_de_10x14.lbm deleted file mode 100644 index dd114326a..000000000 --- a/radio/src/fonts/std/font_de_10x14.lbm +++ /dev/null @@ -1 +0,0 @@ -0x80,0x7f,0xc2,0x7f,0xe2,0x06,0x70,0x06,0x38,0x06,0x38,0x06,0x70,0x06,0xe2,0x06,0xc2,0x7f,0x80,0x7f,0x00,0x18,0x06,0x3c,0x66,0x7e,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe6,0x66,0xc6,0x7f,0x80,0x7f,0xe0,0x1f,0xf2,0x3f,0x3a,0x70,0x18,0x60,0x18,0x60,0x18,0x60,0x18,0x60,0x3a,0x70,0xf2,0x3f,0xe0,0x1f,0x80,0x1f,0xc6,0x3f,0xe6,0x70,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xe6,0x70,0xc6,0x3f,0x80,0x1f,0xf8,0x1f,0xfa,0x3f,0x02,0x70,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x02,0x70,0xfa,0x3f,0xf8,0x1f,0xe0,0x1f,0xe6,0x3f,0x06,0x70,0x00,0x60,0x00,0x60,0x00,0x70,0x00,0x38,0x06,0x18,0xe6,0x7f,0xe0,0x7f,0xf8,0x7f,0xfc,0x7f,0x0e,0x00,0x06,0x00,0x66,0x30,0x6e,0x30,0xfc,0x38,0xd8,0x1f,0x00,0x0f,0xff,0xff, diff --git a/radio/src/fonts/std/font_es_04x06.lbm b/radio/src/fonts/std/font_es_04x06.lbm deleted file mode 100644 index dbf678113..000000000 --- a/radio/src/fonts/std/font_es_04x06.lbm +++ /dev/null @@ -1 +0,0 @@ -0x3e,0x09,0x12,0x3d,0x7f,0x3a,0x11,0x0a,0x39,0x7f, diff --git a/radio/src/fonts/std/font_es_05x07.lbm b/radio/src/fonts/std/font_es_05x07.lbm deleted file mode 100644 index 99f4cd1a2..000000000 --- a/radio/src/fonts/std/font_es_05x07.lbm +++ /dev/null @@ -1 +0,0 @@ -0x7c,0x0a,0x11,0x22,0x7d,0x78,0x12,0x09,0x0a,0x71, diff --git a/radio/src/fonts/std/font_es_08x10.lbm b/radio/src/fonts/std/font_es_08x10.lbm deleted file mode 100644 index 57a5a829c..000000000 --- a/radio/src/fonts/std/font_es_08x10.lbm +++ /dev/null @@ -1 +0,0 @@ -0xf0,0x07,0xf4,0x07,0x66,0x00,0xc2,0x00,0x86,0x01,0x04,0x07,0xf6,0x07,0xf2,0x07,0xf4,0x07,0xf6,0x07,0x22,0x00,0x16,0x00,0x34,0x00,0xe6,0x07,0xc2,0x07,0xff,0x0f, diff --git a/radio/src/fonts/std/font_es_10x14.lbm b/radio/src/fonts/std/font_es_10x14.lbm deleted file mode 100644 index 92d200c51..000000000 --- a/radio/src/fonts/std/font_es_10x14.lbm +++ /dev/null @@ -1 +0,0 @@ -0xe8,0x7f,0xec,0x7f,0xc6,0x01,0x82,0x03,0x04,0x07,0x08,0x0e,0x0c,0x1c,0x06,0x38,0xe2,0x7f,0xe0,0x7f,0xe0,0x7f,0xe8,0x7f,0x8c,0x01,0xc6,0x01,0xe2,0x00,0x64,0x00,0x68,0x00,0xec,0x00,0xc6,0x7f,0x82,0x7f, diff --git a/radio/src/fonts/std/font_fr_04x06.lbm b/radio/src/fonts/std/font_fr_04x06.lbm deleted file mode 100644 index 93aa19910..000000000 --- a/radio/src/fonts/std/font_fr_04x06.lbm +++ /dev/null @@ -1 +0,0 @@ -0x18,0x36,0x2d,0x08,0x7f,0x18,0x35,0x2e,0x08,0x7f,0x18,0x25,0x16,0x3c,0x7f,0x7f,0x26,0x3d,0x22,0x7f,0x7f,0x4c,0x32,0x12,0x7f, diff --git a/radio/src/fonts/std/font_fr_05x07.lbm b/radio/src/fonts/std/font_fr_05x07.lbm deleted file mode 100644 index 87ec0ca86..000000000 --- a/radio/src/fonts/std/font_fr_05x07.lbm +++ /dev/null @@ -1 +0,0 @@ -0x38,0x54,0x56,0x55,0x18,0x38,0x55,0x56,0x54,0x18,0x20,0x55,0x56,0x54,0x78,0xff,0x4a,0x79,0x42,0xff,0x1c,0xa2,0x62,0x22,0x10, diff --git a/radio/src/fonts/std/font_fr_08x10.lbm b/radio/src/fonts/std/font_fr_08x10.lbm deleted file mode 100644 index a64ffcd56..000000000 --- a/radio/src/fonts/std/font_fr_08x10.lbm +++ /dev/null @@ -1 +0,0 @@ -0xc0,0x01,0xe0,0x03,0xb4,0x06,0x96,0x04,0xb3,0x04,0xe1,0x06,0xc0,0x02,0xff,0x0f,0xc0,0x01,0xe0,0x03,0xb1,0x06,0x93,0x04,0xb6,0x04,0xe4,0x06,0xc0,0x02,0xff,0x0f,0x00,0x03,0xa0,0x07,0xb1,0x04,0x93,0x04,0x96,0x02,0xf4,0x07,0xe0,0x07,0xff,0x0f,0xff,0x0f,0x04,0x04,0x16,0x04,0xf3,0x07,0xf6,0x07,0x04,0x04,0x00,0x04,0xff,0x0f,0xe0,0x00,0xf0,0x01,0x18,0x0b,0x08,0x0e,0x08,0x06,0x18,0x03,0x10,0x01,0xff,0x0f, diff --git a/radio/src/fonts/std/font_fr_10x14.lbm b/radio/src/fonts/std/font_fr_10x14.lbm deleted file mode 100644 index 49e9c13cc..000000000 --- a/radio/src/fonts/std/font_fr_10x14.lbm +++ /dev/null @@ -1 +0,0 @@ -0x80,0x1f,0xc0,0x3f,0xe0,0x76,0x68,0x66,0x6c,0x66,0x66,0x66,0x62,0x66,0xe0,0x66,0xc0,0x07,0x80,0x07,0x80,0x1f,0xc0,0x3f,0xe0,0x76,0x62,0x66,0x66,0x66,0x6c,0x66,0x68,0x66,0xe0,0x66,0xc0,0x07,0x80,0x07,0x00,0x18,0x00,0x3c,0x60,0x7e,0x62,0x66,0x66,0x66,0x6c,0x66,0x68,0x66,0xe0,0x66,0xc0,0x7f,0x80,0x7f,0xff,0xff,0xff,0xff,0x98,0x61,0x98,0x61,0x86,0x7f,0x86,0x7f,0x18,0x60,0x18,0x60,0xff,0xff,0xff,0xff,0xe0,0x07,0xf0,0x0f,0x38,0x9c,0x18,0xd8,0x18,0x78,0x18,0x38,0x18,0x18,0x18,0x1c,0x00,0x0e,0x00,0x06, diff --git a/radio/src/fonts/std/font_it_04x06.lbm b/radio/src/fonts/std/font_it_04x06.lbm deleted file mode 100644 index dd424553b..000000000 --- a/radio/src/fonts/std/font_it_04x06.lbm +++ /dev/null @@ -1 +0,0 @@ -0x18,0x25,0x16,0x3c,0x7f,0x1c,0x21,0x22,0x3c,0x7f, diff --git a/radio/src/fonts/std/font_it_05x07.lbm b/radio/src/fonts/std/font_it_05x07.lbm deleted file mode 100644 index 17d52fd9b..000000000 --- a/radio/src/fonts/std/font_it_05x07.lbm +++ /dev/null @@ -1 +0,0 @@ -0x20,0x55,0x56,0x54,0x78,0x3c,0x41,0x42,0x20,0x7c, diff --git a/radio/src/fonts/std/font_it_08x10.lbm b/radio/src/fonts/std/font_it_08x10.lbm deleted file mode 100644 index 4572dc5dd..000000000 --- a/radio/src/fonts/std/font_it_08x10.lbm +++ /dev/null @@ -1 +0,0 @@ -0x00,0x03,0xa0,0x07,0xb2,0x04,0x96,0x04,0x94,0x02,0xf0,0x07,0xe0,0x07,0xff,0x0f,0xf0,0x01,0xf0,0x03,0x02,0x06,0x06,0x04,0x04,0x02,0xf0,0x07,0xf0,0x07,0xff,0x0f, diff --git a/radio/src/fonts/std/font_it_10x14.lbm b/radio/src/fonts/std/font_it_10x14.lbm deleted file mode 100644 index b25268b4e..000000000 --- a/radio/src/fonts/std/font_it_10x14.lbm +++ /dev/null @@ -1 +0,0 @@ -0x00,0x18,0x00,0x3c,0x60,0x7e,0x62,0x66,0x66,0x66,0x6c,0x66,0x68,0x66,0xe0,0x66,0xc0,0x7f,0x80,0x7f,0xe0,0x1f,0xe0,0x3f,0x00,0x70,0x02,0x60,0x06,0x60,0x0c,0x60,0x08,0x60,0x00,0x30,0xe0,0x7f,0xe0,0x7f, diff --git a/radio/src/fonts/std/font_pl_04x06.lbm b/radio/src/fonts/std/font_pl_04x06.lbm deleted file mode 100644 index 65e843759..000000000 --- a/radio/src/fonts/std/font_pl_04x06.lbm +++ /dev/null @@ -1 +0,0 @@ -0x18,0x24,0x14,0x3c,0x40,0x18,0x24,0x24,0x02,0x01,0x18,0x34,0x2c,0x48,0x7f,0x00,0x29,0x3f,0x24,0x7f,0x3c,0x06,0x05,0x38,0x7f,0x18,0x26,0x25,0x18,0x7f,0x28,0x2c,0x36,0x15,0x7f,0x24,0x35,0x2d,0x24,0x7f,0x24,0x34,0x2e,0x25,0x7f,0x3e,0x09,0x69,0x5e,0x7f,0x1c,0x22,0x22,0x15,0x7f,0x3f,0x25,0x65,0x41,0x7f,0x3f,0x28,0x24,0x24,0x7f,0x3e,0x0c,0x11,0x3e,0x7f,0x1c,0x22,0x22,0x1d,0x7f,0x24,0x2a,0x2b,0x12,0x7f,0x22,0x33,0x2a,0x26,0x7f,0x22,0x32,0x2b,0x26,0x7f, diff --git a/radio/src/fonts/std/font_pl_05x07.lbm b/radio/src/fonts/std/font_pl_05x07.lbm deleted file mode 100644 index afde4f063..000000000 --- a/radio/src/fonts/std/font_pl_05x07.lbm +++ /dev/null @@ -1 +0,0 @@ -0x20,0x54,0x54,0xd4,0xb8,0x38,0x44,0x46,0x45,0x28,0x38,0x54,0x54,0xd4,0x98,0xff,0x49,0x7f,0x44,0xff,0x7c,0x08,0x06,0x05,0x78,0x38,0x44,0x46,0x45,0x38,0x48,0x54,0x56,0x55,0x20,0x44,0x65,0x55,0x4c,0x44,0x44,0x64,0x56,0x4d,0x44,0x7e,0x09,0x09,0xc9,0xbe,0x3c,0x42,0x42,0x43,0x24,0x7f,0x49,0x49,0xc9,0x81,0x08,0x7f,0x44,0x44,0x40,0x7e,0x08,0x12,0x21,0x7e,0x3c,0x42,0x42,0x43,0x3c,0x4c,0x52,0x52,0x53,0x24,0x62,0x52,0x4b,0x4a,0x46,0x62,0x52,0x4a,0x4b,0x46,0x1c,0x1c,0x3e,0x7f,0xff,0x22,0x1c,0x41,0x3e,0x00, diff --git a/radio/src/fonts/std/font_pl_08x10.lbm b/radio/src/fonts/std/font_pl_08x10.lbm deleted file mode 100644 index 5d023a131..000000000 --- a/radio/src/fonts/std/font_pl_08x10.lbm +++ /dev/null @@ -1 +0,0 @@ -0x00,0x03,0xa0,0x07,0xb0,0x04,0x90,0x04,0x90,0x02,0xf0,0x0f,0xe0,0x0b,0xff,0x0f,0xc0,0x01,0xe0,0x03,0x30,0x06,0x14,0x04,0x13,0x04,0x31,0x06,0x20,0x02,0xff,0x0f,0xc0,0x01,0xe0,0x03,0xb0,0x06,0x90,0x04,0xb0,0x0c,0xe0,0x0a,0xc0,0x02,0xff,0x0f,0xff,0x0f,0x40,0x04,0x42,0x04,0xfe,0x07,0xfe,0x07,0x20,0x04,0x20,0x04,0xff,0x0f,0xf0,0x07,0xf0,0x07,0x20,0x00,0x14,0x00,0x33,0x00,0xe1,0x07,0xc0,0x07,0xff,0x0f,0xc0,0x01,0xe0,0x03,0x30,0x06,0x14,0x04,0x33,0x06,0xe1,0x03,0xc0,0x01,0xff,0x0f,0x60,0x02,0xf0,0x06,0x90,0x04,0x94,0x04,0x93,0x04,0xb1,0x07,0x20,0x03,0xff,0x0f,0xff,0x0f,0x10,0x06,0x10,0x07,0x96,0x05,0xd6,0x04,0x70,0x04,0x30,0x04,0xff,0x0f,0xff,0x0f,0x10,0x06,0x10,0x07,0x90,0x05,0xd4,0x04,0x73,0x04,0x31,0x04,0xff,0x0f,0xf0,0x07,0xf8,0x07,0x8c,0x00,0x86,0x00,0x86,0x00,0x8c,0x00,0xf8,0x0f,0xf0,0x0b,0xf0,0x01,0xf8,0x03,0x0c,0x06,0x04,0x04,0x06,0x04,0x05,0x04,0x0c,0x06,0x18,0x03,0xfe,0x07,0xfe,0x07,0x22,0x04,0x22,0x04,0x22,0x04,0x22,0x0c,0x02,0x08,0xff,0x0f,0x80,0x00,0xfe,0x07,0xfe,0x07,0x40,0x04,0x40,0x04,0x20,0x04,0x20,0x04,0x00,0x04,0xfc,0x07,0xfc,0x07,0x38,0x00,0x74,0x00,0xe3,0x00,0xc1,0x01,0xfc,0x07,0xfc,0x07,0xe0,0x01,0xf0,0x03,0x18,0x06,0x08,0x04,0x0c,0x04,0x1b,0x06,0xf1,0x03,0xe0,0x01,0x30,0x02,0x78,0x06,0x48,0x04,0x4c,0x04,0x4b,0x04,0x49,0x04,0xd8,0x07,0x90,0x03,0x08,0x06,0x08,0x07,0x8b,0x05,0xcb,0x04,0x68,0x04,0x38,0x04,0x18,0x04,0xff,0x0f,0x08,0x06,0x08,0x07,0x88,0x05,0xcc,0x04,0x6b,0x04,0x39,0x04,0x18,0x04,0xff,0x0f, diff --git a/radio/src/fonts/std/font_pl_10x14.lbm b/radio/src/fonts/std/font_pl_10x14.lbm deleted file mode 100644 index fc7bd1e59..000000000 --- a/radio/src/fonts/std/font_pl_10x14.lbm +++ /dev/null @@ -1 +0,0 @@ -0x00,0x18,0x00,0x3c,0x60,0x7e,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0xe6,0xc0,0xbf,0x80,0xbf,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x68,0x60,0x6c,0x60,0x67,0x60,0x63,0x70,0x01,0x38,0x00,0x18,0x80,0x1f,0xc0,0x3f,0xe0,0x76,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0xe6,0xc0,0x87,0x80,0x87,0xff,0xff,0xff,0xff,0x06,0x61,0x06,0x61,0xfe,0x7f,0xfe,0x7f,0x80,0x60,0x80,0x60,0xff,0xff,0xff,0xff,0xe0,0x7f,0xe0,0x7f,0x80,0x01,0xc0,0x01,0xe8,0x00,0x6c,0x00,0x67,0x00,0xe3,0x00,0xc1,0x7f,0x80,0x7f,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x68,0x60,0x6c,0x60,0x67,0x60,0xe3,0x70,0xc1,0x3f,0x80,0x1f,0x80,0x61,0xc0,0x63,0xe0,0x67,0x60,0x66,0x68,0x66,0x6c,0x66,0x67,0x66,0x63,0x7e,0x01,0x3c,0x00,0x18,0x60,0x60,0x60,0x70,0x60,0x78,0x66,0x7c,0x66,0x6e,0x60,0x67,0xe0,0x63,0xe0,0x61,0xe0,0x60,0x60,0x60,0x60,0x60,0x60,0x70,0x60,0x78,0x60,0x7c,0x68,0x6e,0x6c,0x67,0xe7,0x63,0xe3,0x61,0xe1,0x60,0x60,0x60,0xe0,0x7f,0xf0,0x7f,0xb8,0x01,0x9c,0x01,0x8e,0x01,0x8e,0x01,0x9c,0x01,0xb8,0x61,0xf0,0xff,0xe0,0xbf,0xe0,0x1f,0xf0,0x3f,0x38,0x70,0x18,0x60,0x1c,0x60,0x1f,0x60,0x1b,0x60,0x39,0x70,0x70,0x38,0x60,0x18,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x06,0xa0,0x06,0x80,0x00,0x06,0xfe,0x7f,0xfe,0x7f,0x00,0x63,0x80,0x61,0x80,0x61,0xc0,0x60,0xc0,0x60,0x60,0x60,0x60,0x60,0xf8,0x7f,0xf8,0x7f,0xe0,0x00,0xc0,0x01,0x80,0x03,0x04,0x07,0x07,0x0e,0x03,0x1c,0xf9,0x7f,0xf8,0x7f,0xe0,0x1f,0xf0,0x3f,0x38,0x70,0x18,0x60,0x1c,0x60,0x1f,0x60,0x1b,0x60,0x39,0x70,0xf0,0x3f,0xe0,0x1f,0xe0,0x18,0xf0,0x39,0xb8,0x73,0x18,0x63,0x1c,0x63,0x1f,0x63,0x1b,0x63,0x39,0x77,0x70,0x3e,0x60,0x1c,0x18,0x70,0x18,0x78,0x18,0x7c,0x18,0x6e,0x1b,0x67,0x9b,0x63,0xd8,0x61,0xf8,0x60,0x78,0x60,0x38,0x60,0x18,0x70,0x18,0x78,0x18,0x7c,0x18,0x6e,0x18,0x67,0x9c,0x63,0xdf,0x61,0xfb,0x60,0x79,0x60,0x38,0x60, diff --git a/radio/src/fonts/std/font_pt_04x06.lbm b/radio/src/fonts/std/font_pt_04x06.lbm deleted file mode 100644 index bb2db6d13..000000000 --- a/radio/src/fonts/std/font_pt_04x06.lbm +++ /dev/null @@ -1 +0,0 @@ -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, diff --git a/radio/src/fonts/std/font_pt_05x07.lbm b/radio/src/fonts/std/font_pt_05x07.lbm deleted file mode 100644 index 162b0e4b3..000000000 --- a/radio/src/fonts/std/font_pt_05x07.lbm +++ /dev/null @@ -1 +0,0 @@ -0x78,0x14,0x16,0x15,0x78,0x20,0x54,0x56,0x55,0x78,0x78,0x16,0x15,0x16,0x78,0x20,0x56,0x55,0x56,0x78,0x7a,0x15,0x16,0x15,0x78,0x20,0x56,0x55,0x56,0x79,0x78,0x15,0x16,0x14,0x78,0x20,0x55,0x56,0x54,0x78,0x1e,0xa1,0x61,0x21,0x12,0x1c,0xa2,0x62,0x22,0x10,0x7c,0x54,0x56,0x55,0x44,0x38,0x54,0x56,0x55,0x18,0x7c,0x56,0x55,0x56,0x44,0x38,0x56,0x55,0x56,0x18,0xff,0x44,0x7e,0x45,0xff,0xff,0x4c,0x7a,0x40,0xff,0x3c,0x42,0x42,0x43,0x3c,0x38,0x44,0x46,0x45,0x38,0x3c,0x42,0x43,0x42,0x3c,0x38,0x44,0x46,0x44,0x38,0x3c,0x43,0x42,0x43,0x3c,0x38,0x46,0x44,0x46,0x38,0x3c,0x40,0x42,0x41,0x3c,0x38,0x40,0x44,0x22,0x78, diff --git a/radio/src/fonts/std/font_pt_08x10.lbm b/radio/src/fonts/std/font_pt_08x10.lbm deleted file mode 100644 index d7a8a8a35..000000000 --- a/radio/src/fonts/std/font_pt_08x10.lbm +++ /dev/null @@ -1 +0,0 @@ -0xf0,0x07,0xf8,0x07,0x88,0x00,0x8c,0x00,0x8b,0x00,0x89,0x00,0xf8,0x07,0xf0,0x07,0x00,0x03,0xa0,0x07,0xb0,0x04,0x90,0x04,0x98,0x02,0xf6,0x07,0xe2,0x07,0xff,0x0f,0xf0,0x07,0xfa,0x07,0x8b,0x00,0x89,0x00,0x89,0x00,0x8b,0x00,0xfa,0x07,0xf0,0x07,0x00,0x03,0xa4,0x07,0xb6,0x04,0x93,0x04,0x96,0x02,0xf4,0x07,0xe0,0x07,0xff,0x0f,0xf0,0x07,0xfa,0x07,0x89,0x00,0x89,0x00,0x8b,0x00,0x8a,0x00,0xfa,0x07,0xf1,0x07,0x00,0x03,0xa0,0x07,0xb4,0x04,0x92,0x04,0x96,0x02,0xf4,0x07,0xe2,0x07,0xff,0x0f,0xf0,0x07,0xf8,0x07,0x89,0x00,0x8b,0x00,0x8c,0x00,0x88,0x00,0xf8,0x07,0xf0,0x07,0x00,0x03,0xa0,0x07,0xb2,0x04,0x96,0x04,0x98,0x02,0xf0,0x07,0xe0,0x07,0xff,0x0f,0xf8,0x00,0xfc,0x01,0x8e,0x0b,0x06,0x0f,0x02,0x06,0x02,0x02,0x06,0x03,0x04,0x01,0xe0,0x00,0xf0,0x01,0x18,0x0b,0x08,0x0e,0x08,0x06,0x18,0x03,0x10,0x01,0xff,0x0f,0xf8,0x07,0xf8,0x07,0x48,0x04,0x4c,0x04,0x4b,0x04,0x49,0x04,0x08,0x04,0xff,0x0f,0xc0,0x01,0xe0,0x03,0xb0,0x06,0x9c,0x04,0xb6,0x04,0xe2,0x06,0xc0,0x02,0xff,0x0f,0xf8,0x07,0xfa,0x07,0x4b,0x04,0x49,0x04,0x49,0x04,0x4b,0x04,0x0a,0x04,0xff,0x0f,0xc0,0x01,0xe4,0x03,0xb6,0x06,0x93,0x04,0xb6,0x04,0xe4,0x06,0xc0,0x02,0xff,0x0f,0xff,0x0f,0x08,0x04,0x08,0x04,0xfc,0x07,0xfb,0x07,0x09,0x04,0x08,0x04,0xff,0x0f,0xff,0x0f,0x00,0x04,0x10,0x04,0xf4,0x07,0xf3,0x07,0x01,0x04,0x00,0x04,0xff,0x0f,0xe0,0x01,0xf0,0x03,0x18,0x06,0x08,0x04,0x0c,0x04,0x1b,0x06,0xf1,0x03,0xe0,0x01,0xc0,0x01,0xe0,0x03,0x30,0x06,0x18,0x04,0x36,0x06,0xe2,0x03,0xc0,0x01,0xff,0x0f,0xe0,0x01,0xf2,0x03,0x1b,0x06,0x09,0x04,0x09,0x04,0x1b,0x06,0xf2,0x03,0xe0,0x01,0xc0,0x01,0xe4,0x03,0x36,0x06,0x13,0x04,0x36,0x06,0xe4,0x03,0xc0,0x01,0xff,0x0f,0xe2,0x01,0xf1,0x03,0x19,0x06,0x0b,0x04,0x0a,0x04,0x1a,0x06,0xf1,0x03,0xe0,0x01,0xc0,0x01,0xe4,0x03,0x32,0x06,0x16,0x04,0x34,0x06,0xe2,0x03,0xc0,0x01,0xff,0x0f,0xfc,0x01,0xfc,0x03,0x00,0x06,0x04,0x04,0x03,0x04,0x01,0x06,0xfc,0x03,0xfc,0x01,0xf0,0x01,0xf0,0x03,0x00,0x06,0x04,0x04,0x03,0x02,0xf1,0x07,0xf0,0x07,0xff,0x0f, diff --git a/radio/src/fonts/std/font_pt_10x14.lbm b/radio/src/fonts/std/font_pt_10x14.lbm deleted file mode 100644 index df7af948b..000000000 --- a/radio/src/fonts/std/font_pt_10x14.lbm +++ /dev/null @@ -1 +0,0 @@ -0x80,0x7f,0xc0,0x7f,0xe0,0x06,0x70,0x06,0x38,0x06,0x38,0x06,0x74,0x06,0xe6,0x06,0xc3,0x7f,0x81,0x7f,0x00,0x18,0x00,0x3c,0x60,0x7e,0x60,0x66,0x60,0x66,0x68,0x66,0x6c,0x66,0xe6,0x66,0xc2,0x7f,0x80,0x7f,0x80,0x7f,0xc0,0x7f,0xe4,0x06,0x76,0x06,0x3b,0x06,0x3b,0x06,0x76,0x06,0xe4,0x06,0xc0,0x7f,0x80,0x7f,0x00,0x18,0x00,0x3c,0x60,0x7e,0x68,0x66,0x6c,0x66,0x66,0x66,0x6c,0x66,0xe8,0x66,0xc0,0x7f,0x80,0x7f,0x80,0x7f,0xc2,0x7f,0xe1,0x06,0x71,0x06,0x3b,0x06,0x3a,0x06,0x72,0x06,0xe1,0x06,0xc0,0x7f,0x80,0x7f,0x00,0x18,0x00,0x3c,0x68,0x7e,0x64,0x66,0x64,0x66,0x6c,0x66,0x68,0x66,0xe8,0x66,0xc4,0x7f,0x80,0x7f,0x81,0x7f,0xc3,0x7f,0xe6,0x06,0x74,0x06,0x38,0x06,0x38,0x06,0x70,0x06,0xe0,0x06,0xc0,0x7f,0x80,0x7f,0x00,0x18,0x00,0x3c,0x60,0x7e,0x62,0x66,0x66,0x66,0x6c,0x66,0x68,0x66,0xe0,0x66,0xc0,0x7f,0x80,0x7f,0xf8,0x03,0xfc,0x07,0x0e,0x4e,0x06,0x6c,0x06,0x3c,0x06,0x1c,0x06,0x0c,0x0e,0x0e,0x1c,0x07,0x18,0x03,0xf0,0x03,0xf8,0x07,0x1c,0x4e,0x0c,0x6c,0x0c,0x3c,0x0c,0x1c,0x0c,0x0c,0x0c,0x0e,0x00,0x07,0x00,0x03,0xf8,0x7f,0xf8,0x7f,0x18,0x63,0x18,0x63,0x1c,0x63,0x1e,0x63,0x1b,0x63,0x19,0x63,0x18,0x60,0x18,0x60,0x80,0x1f,0xc0,0x3f,0xe0,0x76,0x60,0x66,0x68,0x66,0x6c,0x66,0x66,0x66,0xe2,0x66,0xc0,0x07,0x80,0x07,0xf0,0x7f,0xf4,0x7f,0x36,0x66,0x33,0x66,0x31,0x66,0x33,0x66,0x36,0x66,0x34,0x66,0x30,0x60,0x30,0x60,0x80,0x1f,0xc0,0x3f,0xe8,0x76,0x6c,0x66,0x66,0x66,0x6c,0x66,0x68,0x66,0xe0,0x66,0xc0,0x07,0x80,0x07,0xff,0xff,0xff,0xff,0x30,0x60,0x30,0x60,0xf4,0x7f,0xf6,0x7f,0x33,0x60,0x31,0x60,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x60,0x60,0x60,0x60,0xe8,0x7f,0xec,0x7f,0x06,0x60,0x02,0x60,0xff,0xff,0xff,0xff,0xe0,0x1f,0xf0,0x3f,0x38,0x70,0x18,0x60,0x1c,0x60,0x1e,0x60,0x1b,0x60,0x39,0x70,0xf0,0x3f,0xe0,0x1f,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x68,0x60,0x6c,0x60,0x66,0x60,0xe2,0x70,0xc0,0x3f,0x80,0x1f,0xc0,0x1f,0xe0,0x3f,0x74,0x70,0x36,0x60,0x33,0x60,0x33,0x60,0x36,0x60,0x74,0x70,0xe0,0x3f,0xc0,0x1f,0x80,0x1f,0xc0,0x3f,0xe8,0x70,0x6c,0x60,0x66,0x60,0x6c,0x60,0x68,0x60,0xe0,0x70,0xc0,0x3f,0x80,0x1f,0xe0,0x1f,0xf2,0x3f,0x39,0x70,0x19,0x60,0x1b,0x60,0x1a,0x60,0x1a,0x60,0x39,0x70,0xf0,0x3f,0xe0,0x1f,0x80,0x1f,0xc8,0x3f,0xe4,0x70,0x64,0x60,0x6c,0x60,0x68,0x60,0x68,0x60,0xe4,0x70,0xc0,0x3f,0x80,0x1f,0xf8,0x1f,0xf8,0x3f,0x00,0x70,0x00,0x60,0x04,0x60,0x06,0x60,0x03,0x60,0x01,0x70,0xf8,0x3f,0xf8,0x1f,0xe0,0x1f,0xe0,0x3f,0x00,0x70,0x00,0x60,0x10,0x60,0x18,0x70,0x0c,0x38,0x04,0x18,0xe0,0x7f,0xe0,0x7f, diff --git a/radio/src/fonts/std/font_se_04x06.lbm b/radio/src/fonts/std/font_se_04x06.lbm deleted file mode 100644 index 2e6fe90c6..000000000 --- a/radio/src/fonts/std/font_se_04x06.lbm +++ /dev/null @@ -1 +0,0 @@ -0x18,0x25,0x15,0x3c,0x7f,0x18,0x25,0x14,0x3d,0x7f,0x18,0x25,0x24,0x19,0x7f,0x3c,0x0b,0x0b,0x3c,0x7f,0x3d,0x0a,0x0a,0x3d,0x7f,0x1d,0x22,0x22,0x1d,0x7f, diff --git a/radio/src/fonts/std/font_se_05x07.lbm b/radio/src/fonts/std/font_se_05x07.lbm deleted file mode 100644 index 8d767a82b..000000000 --- a/radio/src/fonts/std/font_se_05x07.lbm +++ /dev/null @@ -1 +0,0 @@ -0x20,0x54,0x56,0x54,0x78,0x20,0x56,0x54,0x56,0x78,0x38,0x46,0x44,0x46,0x38,0x7c,0x13,0x13,0x12,0x7c,0x7c,0x13,0x12,0x13,0x7c,0x3c,0x43,0x42,0x43,0x3c, diff --git a/radio/src/fonts/std/font_se_08x10.lbm b/radio/src/fonts/std/font_se_08x10.lbm deleted file mode 100644 index 2fc6f89ee..000000000 --- a/radio/src/fonts/std/font_se_08x10.lbm +++ /dev/null @@ -1 +0,0 @@ -0x00,0x03,0xa0,0x07,0xb4,0x04,0x9a,0x04,0x9a,0x02,0xf4,0x07,0xe0,0x07,0xff,0x0f,0x00,0x03,0xa0,0x07,0xb6,0x04,0x96,0x04,0x90,0x02,0xf6,0x07,0xe6,0x07,0xff,0x0f,0xc0,0x01,0xe6,0x03,0x36,0x06,0x10,0x04,0x36,0x06,0xe6,0x03,0xc0,0x01,0xff,0x0f,0xe0,0x07,0xf0,0x07,0x9c,0x00,0x9a,0x00,0x9a,0x00,0x9c,0x00,0xf0,0x07,0xe0,0x07,0xe0,0x07,0xf6,0x07,0x96,0x00,0x88,0x00,0x88,0x00,0x96,0x00,0xf6,0x07,0xe0,0x07,0xe0,0x01,0xf6,0x03,0x16,0x06,0x08,0x04,0x08,0x04,0x16,0x06,0xf6,0x03,0xe0,0x01, diff --git a/radio/src/fonts/std/font_se_10x14.lbm b/radio/src/fonts/std/font_se_10x14.lbm deleted file mode 100644 index 20ce6d8df..000000000 --- a/radio/src/fonts/std/font_se_10x14.lbm +++ /dev/null @@ -1 +0,0 @@ -0x00,0x18,0x00,0x3c,0x60,0x7e,0x60,0x66,0x6e,0x66,0x6a,0x66,0x6e,0x66,0xe0,0x66,0xc0,0x7f,0x80,0x7f,0x00,0x18,0x00,0x3c,0x6c,0x7e,0x6c,0x66,0x60,0x66,0x60,0x66,0x6c,0x66,0xec,0x66,0xc0,0x7f,0x80,0x7f,0x80,0x1f,0xc0,0x3f,0xec,0x70,0x6c,0x60,0x60,0x60,0x60,0x60,0x6c,0x60,0xec,0x70,0xc0,0x3f,0x80,0x1f,0xe0,0x7f,0xf0,0x7f,0xb8,0x01,0x9e,0x01,0x9a,0x01,0x9a,0x01,0x9e,0x01,0xb8,0x01,0xf0,0x7f,0xe0,0x7f,0xe0,0x7f,0xf6,0x7f,0xba,0x01,0x9c,0x01,0x8e,0x01,0x8e,0x01,0x9c,0x01,0xba,0x01,0xf6,0x7f,0xe0,0x7f,0xe0,0x1f,0xf6,0x3f,0x36,0x70,0x18,0x60,0x18,0x60,0x18,0x60,0x18,0x60,0x36,0x70,0xf6,0x3f,0xe0,0x1f, From 9a2b6689561f1c2670b50ea035328816355d92c4 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Thu, 9 Jan 2014 18:53:35 +0100 Subject: [PATCH 102/308] GvarsOfsNum (er9x) removed --- companion/src/eeprominterface.h | 1 - companion/src/firmwares/er9x/er9xinterface.cpp | 2 -- companion/src/firmwares/ersky9x/ersky9xinterface.cpp | 2 -- companion/src/firmwares/opentx/opentxinterface.cpp | 2 -- companion/src/helpers.cpp | 2 +- 5 files changed, 1 insertion(+), 8 deletions(-) diff --git a/companion/src/eeprominterface.h b/companion/src/eeprominterface.h index 2acda3b71..8c2218a00 100644 --- a/companion/src/eeprominterface.h +++ b/companion/src/eeprominterface.h @@ -977,7 +977,6 @@ enum Capability { GvarsAsSources, GvarsAsWeight, GvarsName, - GvarsOfsNum, NoTelemetryProtocol, TelemetryCSFields, TelemetryColsCSFields, diff --git a/companion/src/firmwares/er9x/er9xinterface.cpp b/companion/src/firmwares/er9x/er9xinterface.cpp index 123ec7f3b..7ef121909 100644 --- a/companion/src/firmwares/er9x/er9xinterface.cpp +++ b/companion/src/firmwares/er9x/er9xinterface.cpp @@ -243,8 +243,6 @@ int Er9xInterface::getCapability(const Capability capability) return 12; case CustomAndSwitches: return 5; - case GvarsOfsNum: - return 5; case CSFunc: return 13; case Outputs: diff --git a/companion/src/firmwares/ersky9x/ersky9xinterface.cpp b/companion/src/firmwares/ersky9x/ersky9xinterface.cpp index 1f78a4b98..d3fba6d85 100644 --- a/companion/src/firmwares/ersky9x/ersky9xinterface.cpp +++ b/companion/src/firmwares/ersky9x/ersky9xinterface.cpp @@ -279,8 +279,6 @@ int Ersky9xInterface::getCapability(const Capability capability) return 3; case Gvars: return 7; - case GvarsOfsNum: - return 5; case Switches: return 7; case SwitchesPositions: diff --git a/companion/src/firmwares/opentx/opentxinterface.cpp b/companion/src/firmwares/opentx/opentxinterface.cpp index ee9d2583e..fbe7652bd 100644 --- a/companion/src/firmwares/opentx/opentxinterface.cpp +++ b/companion/src/firmwares/opentx/opentxinterface.cpp @@ -691,8 +691,6 @@ int Open9xInterface::getCapability(const Capability capability) return (IS_ARM(board) ? 250 : 15); case CSFunc: return 18; - case GvarsOfsNum: - return 5; case HasSDLogs: return ((board == BOARD_GRUVIN9X || IS_ARM(board)) ? true : false); case LCDWidth: diff --git a/companion/src/helpers.cpp b/companion/src/helpers.cpp index 0bc850e09..a1e69ed04 100644 --- a/companion/src/helpers.cpp +++ b/companion/src/helpers.cpp @@ -814,7 +814,7 @@ void populateGVCB(QComboBox *b, int value) int selected=0; int nullitem; b->clear(); - int pgvars=GetEepromInterface()->getCapability(GvarsOfsNum); + int pgvars = GetEepromInterface()->getCapability(Gvars); for (int i=-pgvars; i<=-1; i++) { int16_t gval = (int16_t)(-10000+i); b->addItem(QObject::tr("-GV%1").arg(-i), gval); From e8d54d35f1709ab3e0354414fe22c5e482de35a0 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Thu, 9 Jan 2014 19:47:18 +0100 Subject: [PATCH 103/308] Sources shift when exporting EEPROM (Virtual and Lua inputs) --- companion/src/eeprominterface.h | 2 ++ companion/src/firmwares/opentx/opentxeeprom.cpp | 10 ++++++++++ 2 files changed, 12 insertions(+) diff --git a/companion/src/eeprominterface.h b/companion/src/eeprominterface.h index 8c2218a00..228ae2cb6 100644 --- a/companion/src/eeprominterface.h +++ b/companion/src/eeprominterface.h @@ -260,6 +260,8 @@ enum TelemetrySource { enum RawSourceType { SOURCE_TYPE_NONE, + SOURCE_TYPE_VIRTUAL_INPUT, + SOURCE_TYPE_LUA_INPUT, SOURCE_TYPE_STICK, // and POTS SOURCE_TYPE_ROTARY_ENCODER, SOURCE_TYPE_TRIM, diff --git a/companion/src/firmwares/opentx/opentxeeprom.cpp b/companion/src/firmwares/opentx/opentxeeprom.cpp index a608b899a..49a552a5f 100644 --- a/companion/src/firmwares/opentx/opentxeeprom.cpp +++ b/companion/src/firmwares/opentx/opentxeeprom.cpp @@ -135,6 +135,16 @@ class SourcesConversionTable: public ConversionTable { addConversion(RawSource(SOURCE_TYPE_NONE), val++); } + if (IS_TARANIS(board) && version >= 216) { + for (int i=0; i<32; i++) + addConversion(RawSource(SOURCE_TYPE_VIRTUAL_INPUT, i), val++); + for (int i=0; i<3; i++) { + for (int j=0; j<6; j++) { + addConversion(RawSource(SOURCE_TYPE_LUA_INPUT, i*16+j), val++); + } + } + } + for (int i=0; i<4+MAX_POTS(board); i++) addConversion(RawSource(SOURCE_TYPE_STICK, i), val++); From 7f6bdd87cb7afd0b2dd9a1b6fb1b58536aae35c1 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Thu, 9 Jan 2014 20:43:56 +0100 Subject: [PATCH 104/308] Update DONATIONS.txt --- DONATIONS.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/DONATIONS.txt b/DONATIONS.txt index 6cbf88988..5b7163952 100644 --- a/DONATIONS.txt +++ b/DONATIONS.txt @@ -279,3 +279,4 @@ Daniel Byers Tyler Darby Miguel Villalpando Kim Dong Hoon +Terry McKinley From 7880d144f605f7b26c22672af80e4b8aa9d04a15 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Fri, 10 Jan 2014 11:43:10 +0100 Subject: [PATCH 105/308] Issue #193 fixed (shift when importing Taranis EEPROM v215) --- companion/src/firmwares/opentx/opentxeeprom.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/companion/src/firmwares/opentx/opentxeeprom.cpp b/companion/src/firmwares/opentx/opentxeeprom.cpp index 49a552a5f..69a73d97b 100644 --- a/companion/src/firmwares/opentx/opentxeeprom.cpp +++ b/companion/src/firmwares/opentx/opentxeeprom.cpp @@ -821,7 +821,13 @@ class ExpoField: public TransformedField { internalField.Append(new UnsignedField<16>(expo.phases)); internalField.Append(new SignedField<8>(_weight)); internalField.Append(new BoolField<8>(_curveMode)); - internalField.Append(new ZCharField<6>(expo.name)); + if (HAS_LARGE_LCD(board)) { + internalField.Append(new ZCharField<8>(expo.name)); + internalField.Append(new SpareBitsField<16>()); + } + else { + internalField.Append(new ZCharField<6>(expo.name)); + } internalField.Append(new SignedField<8>(_curveParam)); } else if (IS_DBLRAM(board, version) && IS_RELEASE_23_MARCH_2013(board, version)) { From 96e1dcbcd89777700c7fd44f6fb753b3c7267ca5 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Fri, 10 Jan 2014 15:57:25 +0100 Subject: [PATCH 106/308] Issue #193 fixed (curves names shifted) --- radio/src/eeprom_conversions.cpp | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/radio/src/eeprom_conversions.cpp b/radio/src/eeprom_conversions.cpp index 6edb00974..1d92fc813 100644 --- a/radio/src/eeprom_conversions.cpp +++ b/radio/src/eeprom_conversions.cpp @@ -131,6 +131,22 @@ PACK(typedef struct { gvar_t gvars[5]; }) PhaseData_v215; +PACK(typedef struct { + FrSkyChannelData channels[2]; + uint8_t usrProto; // Protocol in FrSky user data, 0=None, 1=FrSky hub, 2=WS HowHigh, 3=Halcyon + uint8_t voltsSource; + uint8_t blades; // How many blades for RPMs, 0=2 blades, 1=3 blades + uint8_t currentSource; + uint8_t screensType; + FrSkyScreenData screens[MAX_FRSKY_SCREENS]; + uint8_t varioSource; + int8_t varioCenterMax; + int8_t varioCenterMin; + int8_t varioMin; + int8_t varioMax; + FrSkyRSSIAlarm rssiAlarms[2]; +}) FrSkyData_v215; + PACK(typedef struct { ModelHeader header; TimerData_v215 timers[MAX_TIMERS]; @@ -164,7 +180,7 @@ PACK(typedef struct { char gvar_names[5][LEN_GVAR_NAME]; - TELEMETRY_DATA + FrSkyData_v215 frsky; ROTARY_ENCODER_ARRAY_EXTRA @@ -427,7 +443,8 @@ void ConvertModel_215_to_216(ModelData &model) for (uint8_t i=0; i<5; i++) { memcpy(g_model.gvars[i].name, oldModel.gvar_names[i], LEN_GVAR_NAME); } - g_model.frsky = oldModel.frsky; + + memcpy(&g_model.frsky, &oldModel.frsky, sizeof(oldModel.frsky)); #if defined(PCBTARANIS) g_model.externalModule = oldModel.externalModule; From cb4286d99d12b2b01885575b643ad84e608ab581 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Fri, 10 Jan 2014 15:58:58 +0100 Subject: [PATCH 107/308] make clean now removes all .o files --- radio/src/Makefile | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/radio/src/Makefile b/radio/src/Makefile index 73515c551..7e49bf5ab 100644 --- a/radio/src/Makefile +++ b/radio/src/Makefile @@ -1299,12 +1299,7 @@ clean_list : $(REMOVE) $(TARGET).lss $(REMOVE) $(TARGET).lst $(REMOVE) $(SRC:.c=.s) - $(REMOVE) *.o - $(REMOVE) */*.o - $(REMOVE) */*/*.o - $(REMOVE) */*/*/*.o - $(REMOVE) */*/*/*/*.o - $(REMOVE) */*/*/*/*/*.o + $(REMOVE) `find . -name "*.o"` $(REMOVE) *.d $(REMOVE) *.lst $(REMOVE) allsrc.cpp From 7426aa77383e041381cefe3b3d2c2360df4197cf Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Fri, 10 Jan 2014 17:04:58 +0100 Subject: [PATCH 108/308] Update DONATIONS.txt --- DONATIONS.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/DONATIONS.txt b/DONATIONS.txt index 5b7163952..d1ea683e8 100644 --- a/DONATIONS.txt +++ b/DONATIONS.txt @@ -280,3 +280,4 @@ Tyler Darby Miguel Villalpando Kim Dong Hoon Terry McKinley +Walter Bell From 33cb784ff11a5aeb5425a4b8e1a45e382e9ff79f Mon Sep 17 00:00:00 2001 From: mhotar Date: Fri, 10 Jan 2014 20:13:36 +0100 Subject: [PATCH 109/308] Bold SQT5 correction Makefile -clean- removes lbm files --- radio/src/Makefile | 1 + .../src/fonts/sqt5/font_05x07_B_compressed.png | Bin 448 -> 448 bytes 2 files changed, 1 insertion(+) diff --git a/radio/src/Makefile b/radio/src/Makefile index 81f99085b..17341a643 100644 --- a/radio/src/Makefile +++ b/radio/src/Makefile @@ -1307,6 +1307,7 @@ clean_list : $(REMOVE) *.lst $(REMOVE) allsrc.cpp $(REMOVE) stamp-opentx.h + $(REMOVE) fonts/*/*.lbm #### Install diff --git a/radio/src/fonts/sqt5/font_05x07_B_compressed.png b/radio/src/fonts/sqt5/font_05x07_B_compressed.png index 2c766c5f8e5c1d73f2f10a4c31d9d4d4ef785fe9..bb316797b660c84af0b8a947c92036dbf1b06d30 100644 GIT binary patch delta 143 zcmV;A0C4}n1Hc22Ut4G{wFKojRVdTgcwzuJzW$z93)!U4o+Zr zWWyk=ew@Q|vI0o$k%?UC0_~cTN-UF50Vzj~z9lz6?qy_9Vm#9MqricAC6N1I&-r?g xPyfFGli&Zp2T@?+|Nnpg|GuvVF@A%>0RU9XmeG2nI931v002ovPDHLkV1f-hKdt}( delta 143 zcmV;A0C4}n1Hc22Usb~{wFJ7#{uUFLX4`-o-T?U4iYVF2PZH* zvSAQbKhEJfSplT>$V9Gmfp$$vg(H(t0VzktcS~-7+{?(I#CW9hM}Y(LN+9>ap7Zq} xpZ Date: Fri, 10 Jan 2014 21:51:48 +0100 Subject: [PATCH 110/308] att&STRCONDENSED BUG ?? It seems to me att&STRCONDENSED colides with att&BOLD. It removes switch suffix in Custom Functions when the switch is active(when it is BOLD) I am not sure this behaviour was meant to work this way. --- radio/src/lcd.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/radio/src/lcd.h b/radio/src/lcd.h index 2ba458c7f..223901be7 100644 --- a/radio/src/lcd.h +++ b/radio/src/lcd.h @@ -83,7 +83,7 @@ /* no 0x80 here because of "GV"1 which is aligned LEFT */ /* no 0x10 here because of "MODEL"01 which uses LEADING0 */ #define BSS 0x20 -#define STRCONDENSED 0x40 /* means that THRm will be displayed as THR */ +#define STRCONDENSED 0x80 /* means that THRm will be displayed as THR */ #define ZCHAR 0x80 /* lcd outdez flags */ From 4312e708febde1455f21cf7830bf70b6b3170b95 Mon Sep 17 00:00:00 2001 From: mhotar Date: Sat, 11 Jan 2014 00:34:39 +0100 Subject: [PATCH 111/308] Bold fonts "Y,S" characters --- .../src/fonts/sqt5/font_05x07_B_compressed.png | Bin 448 -> 448 bytes radio/src/fonts/std/font_05x07_B_compressed.png | Bin 436 -> 449 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/radio/src/fonts/sqt5/font_05x07_B_compressed.png b/radio/src/fonts/sqt5/font_05x07_B_compressed.png index bb316797b660c84af0b8a947c92036dbf1b06d30..8e4ac6632918f66dbc16304271b2314f3f3b1b8a 100644 GIT binary patch delta 60 zcmX@We1LgEBD=V>`M&!{y(eZUGBQo<(qz=0xMe2ew8?&qT8wFvD;bSNB0o>N*r+#Q QJ_8VVy85}Sb4q9e0EzPy;Q#;t delta 60 zcmX@We1LgEBD*lRrO29~gA+3p8HFZxX)t>*268Mc9_&);6O}dIExDlp zbZ;l45aW@~9|g~%S1K_uJlJ!-9^}*iZ@}dD|L;K*m;iyl|Epma%ntxvTcIS2;)SjN O0000HjzUe2nG``AAO&RB9Umre~t&v6NDR8oIO|+IXup^usxi>@W_Ti zSp7JM=VS%2dnaDjfWshr2$B-8w0|2JUr`~UYK3QT~&-~ZJx b7v={5E_ Date: Sat, 11 Jan 2014 00:54:45 +0100 Subject: [PATCH 112/308] Fetch donors and coders from files. Improved dialog appearance. --- companion/src/contributorsdialog.cpp | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/companion/src/contributorsdialog.cpp b/companion/src/contributorsdialog.cpp index d60a682db..4372eb730 100644 --- a/companion/src/contributorsdialog.cpp +++ b/companion/src/contributorsdialog.cpp @@ -1,7 +1,6 @@ #include "contributorsdialog.h" #include "ui_contributorsdialog.h" #include -#define CLINESEP "=====================================================\n" contributorsDialog::contributorsDialog(QWidget *parent, int contest, QString rnurl) : QDialog(parent, Qt::WindowTitleHint | Qt::WindowSystemMenuHint), @@ -10,22 +9,27 @@ contributorsDialog::contributorsDialog(QWidget *parent, int contest, QString rnu ui->setupUi(this); switch (contest) { case 0: { - ui->textBrowser->insertPlainText(CLINESEP); - ui->textBrowser->insertPlainText(tr("People who have contributed to this project")+"\n"); - ui->textBrowser->insertPlainText(CLINESEP); - QFile file(":/contributors"); + ui->textBrowser->insertHtml(tr("

People who have contributed to this project

")); + ui->textBrowser->insertPlainText("\n"); + QFile file(":/DONATIONS.txt"); if(file.open( QIODevice::ReadOnly | QIODevice::Text ) ) { - ui->textBrowser->insertPlainText(file.readAll()); + QString color = "black"; + while (!file.atEnd()) { + QByteArray line = file.readLine(); + ui->textBrowser->insertHtml(QString("") + line + QString(",  ")); + if (color == "black") + color = "#505050"; + else + color = "black"; + } } ui->textBrowser->insertPlainText("\n"); - ui->textBrowser->insertPlainText(CLINESEP); - ui->textBrowser->insertPlainText(tr("Coders")+"\n"); - ui->textBrowser->insertPlainText(CLINESEP); - QFile file2(":/coders"); + ui->textBrowser->insertHtml(tr("

Coders

")); + QFile file2(":/CREDITS.txt"); if(file2.open( QIODevice::ReadOnly | QIODevice::Text ) ) { ui->textBrowser->insertPlainText(file2.readAll()); } - ui->textBrowser->insertPlainText("\n\n\n"); + ui->textBrowser->insertPlainText("\n\n"); ui->textBrowser->insertPlainText(tr("Honors go to Rafal Tomczak (RadioClone) and Thomas Husterer (th9x) \nof course. Also to Erez Raviv (er9x) and it's fantastic eePe, from which\ncompanion9x was forked out.")); ui->textBrowser->insertPlainText("\n\n"); ui->textBrowser->insertPlainText(tr("Thank you all !!!")); From 7255f47a851dbd414a02a70f3b148d351c65a96f Mon Sep 17 00:00:00 2001 From: mhotar Date: Sat, 11 Jan 2014 11:17:47 +0100 Subject: [PATCH 113/308] comments cleanup --- radio/src/gui/menu_model.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/radio/src/gui/menu_model.cpp b/radio/src/gui/menu_model.cpp index 5dab9a585..9c3d5d633 100644 --- a/radio/src/gui/menu_model.cpp +++ b/radio/src/gui/menu_model.cpp @@ -837,8 +837,6 @@ void editName(uint8_t x, uint8_t y, char *name, uint8_t size, uint8_t event, uin eeDirty(EE_MODEL); } lcd_putcAtt(x+editNameCursorPos*FW, y, idx2char(v), INVERS+FIXEDWIDTH); -// lcd_putsnAtt(x, y, name, editNameCursorPos, ZCHAR); -// lcd_putcAtt(lcdLastPos, y, idx2char(v), INVERS); } else { cur = 0; From 8ad6f3d5e6e6d613c5788e8f97b1e86dec9b24a5 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Sat, 11 Jan 2014 19:55:10 +0100 Subject: [PATCH 114/308] Update DONATIONS.txt --- DONATIONS.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/DONATIONS.txt b/DONATIONS.txt index d1ea683e8..860c043b4 100644 --- a/DONATIONS.txt +++ b/DONATIONS.txt @@ -281,3 +281,6 @@ Miguel Villalpando Kim Dong Hoon Terry McKinley Walter Bell +wsTech - http://wstech.de +Clinton Linck +Gordon Stahl From f7e1c6cb8b5c22167faed710111c1f9c18ad34c5 Mon Sep 17 00:00:00 2001 From: Dvogonen Date: Sat, 11 Jan 2014 22:33:01 +0100 Subject: [PATCH 115/308] Now formatted in 6 columns. Looks rather nice. Stripped http:// tags in donors text file to improve automatic formatting. --- DONATIONS.txt | 6 ++--- companion/src/contributorsdialog.cpp | 38 ++++++++++++++++++---------- 2 files changed, 28 insertions(+), 16 deletions(-) diff --git a/DONATIONS.txt b/DONATIONS.txt index d1ea683e8..7076054ce 100644 --- a/DONATIONS.txt +++ b/DONATIONS.txt @@ -95,8 +95,8 @@ Heinrich Illig Michael Collins Michael Manning Craig Lorentz -Jonathan Modellismo - http://jonathan.it -Aviomotive - http://www.aviomotive.com +Jonathan Modellismo - jonathan.it +Aviomotive - www.aviomotive.com André Lasseret Felipe Alexandre de Oliveira Brian Harris @@ -126,7 +126,7 @@ Larisa Filocamo Alex Calderhead Hartmut Sahm Åke Brodin -Aloft Hobbies - http://www.alofthobbies.com +Aloft Hobbies - www.alofthobbies.com Ted Moss Filippos Tigarakis Chewytm diff --git a/companion/src/contributorsdialog.cpp b/companion/src/contributorsdialog.cpp index 4372eb730..d49925caf 100644 --- a/companion/src/contributorsdialog.cpp +++ b/companion/src/contributorsdialog.cpp @@ -9,26 +9,38 @@ contributorsDialog::contributorsDialog(QWidget *parent, int contest, QString rnu ui->setupUi(this); switch (contest) { case 0: { - ui->textBrowser->insertHtml(tr("

People who have contributed to this project

")); - ui->textBrowser->insertPlainText("\n"); QFile file(":/DONATIONS.txt"); + QString htmlString = ""; + htmlString += ""; if(file.open( QIODevice::ReadOnly | QIODevice::Text ) ) { - QString color = "black"; + int i = 0; while (!file.atEnd()) { - QByteArray line = file.readLine(); - ui->textBrowser->insertHtml(QString("") + line + QString(",  ")); - if (color == "black") - color = "#505050"; - else - color = "black"; - } + QByteArray line = file.readLine(); + htmlString += QString(""); + i++; + if (!(i%6)){ + htmlString += ""; + } + } + htmlString += ""; } - ui->textBrowser->insertPlainText("\n"); - ui->textBrowser->insertHtml(tr("

Coders

")); + + htmlString += ""; QFile file2(":/CREDITS.txt"); if(file2.open( QIODevice::ReadOnly | QIODevice::Text ) ) { - ui->textBrowser->insertPlainText(file2.readAll()); + int i = 0; + while (!file2.atEnd()) { + QByteArray line = file2.readLine(); + htmlString += QString(""); + i++; + if (!(i%6)){ + htmlString += ""; + } + } } + htmlString += "

People who have contributed to this project

") + line + QString("

Coders

") + line + QString("
"; + ui->textBrowser->insertHtml(htmlString); + ui->textBrowser->insertPlainText("\n\n"); ui->textBrowser->insertPlainText(tr("Honors go to Rafal Tomczak (RadioClone) and Thomas Husterer (th9x) \nof course. Also to Erez Raviv (er9x) and it's fantastic eePe, from which\ncompanion9x was forked out.")); ui->textBrowser->insertPlainText("\n\n"); From 00779bc33afff1aef556dd216c1cc273882dca21 Mon Sep 17 00:00:00 2001 From: Dvogonen Date: Sun, 12 Jan 2014 01:16:37 +0100 Subject: [PATCH 116/308] Settled on 5 rows. Fixed minor bug that prevented the changelog of companion from diaplying. --- companion/src/contributorsdialog.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/companion/src/contributorsdialog.cpp b/companion/src/contributorsdialog.cpp index d49925caf..f72685a76 100644 --- a/companion/src/contributorsdialog.cpp +++ b/companion/src/contributorsdialog.cpp @@ -11,21 +11,21 @@ contributorsDialog::contributorsDialog(QWidget *parent, int contest, QString rnu case 0: { QFile file(":/DONATIONS.txt"); QString htmlString = ""; - htmlString += ""; + htmlString += ""; if(file.open( QIODevice::ReadOnly | QIODevice::Text ) ) { int i = 0; while (!file.atEnd()) { QByteArray line = file.readLine(); htmlString += QString(""); i++; - if (!(i%6)){ + if (!(i%5)){ htmlString += ""; } } htmlString += ""; } - htmlString += ""; + htmlString += ""; QFile file2(":/CREDITS.txt"); if(file2.open( QIODevice::ReadOnly | QIODevice::Text ) ) { int i = 0; @@ -33,7 +33,7 @@ contributorsDialog::contributorsDialog(QWidget *parent, int contest, QString rnu QByteArray line = file2.readLine(); htmlString += QString(""); i++; - if (!(i%6)){ + if (!(i%5)){ htmlString += ""; } } @@ -52,7 +52,7 @@ contributorsDialog::contributorsDialog(QWidget *parent, int contest, QString rnu break; case 1:{ - QFile file(":/releasenotes"); + QFile file(":/releasenotes.txt"); if(file.open( QIODevice::ReadOnly | QIODevice::Text ) ) { ui->textBrowser->insertHtml(file.readAll()); } From 278f5013ab258aa9e62339a2a1df467c8f6db16b Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Sun, 12 Jan 2014 09:25:24 +0100 Subject: [PATCH 117/308] Update DONATIONS.txt --- DONATIONS.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/DONATIONS.txt b/DONATIONS.txt index 860c043b4..8957b7630 100644 --- a/DONATIONS.txt +++ b/DONATIONS.txt @@ -284,3 +284,4 @@ Walter Bell wsTech - http://wstech.de Clinton Linck Gordon Stahl +Josep Clodas Sola From a025d325dd63dc789006adc071d0eaf44c5b9f47 Mon Sep 17 00:00:00 2001 From: Romolo Manfredini Date: Sun, 12 Jan 2014 10:14:55 +0100 Subject: [PATCH 118/308] Contributor dialog fixed --- companion/src/CMakeLists.txt | 3 +- companion/src/contributorsdialog.cpp | 95 +++++++++++++++++----------- companion/src/contributorsdialog.ui | 15 ++++- 3 files changed, 75 insertions(+), 38 deletions(-) diff --git a/companion/src/CMakeLists.txt b/companion/src/CMakeLists.txt index 318a65524..593443103 100644 --- a/companion/src/CMakeLists.txt +++ b/companion/src/CMakeLists.txt @@ -1,7 +1,7 @@ PROJECT( companion9x ) SET( C9X_VERSION_MAJOR "1" ) -SET( C9X_VERSION_MINOR "51" ) +SET( C9X_VERSION_MINOR "52" ) SET( C9X_VERSION ${C9X_VERSION_MAJOR}.${C9X_VERSION_MINOR} ) CMAKE_MINIMUM_REQUIRED( VERSION 2.8 ) @@ -39,6 +39,7 @@ ENDIF() FIND_PACKAGE( Qt4 REQUIRED ) SET( QT_USE_QTNETWORK True ) SET( QT_USE_QTXML True ) +SET( QT_USE_QTWEBKIT True ) INCLUDE( ${QT_USE_FILE} ) IF ( APPLE ) diff --git a/companion/src/contributorsdialog.cpp b/companion/src/contributorsdialog.cpp index f72685a76..a555c294a 100644 --- a/companion/src/contributorsdialog.cpp +++ b/companion/src/contributorsdialog.cpp @@ -10,54 +10,77 @@ contributorsDialog::contributorsDialog(QWidget *parent, int contest, QString rnu switch (contest) { case 0: { QFile file(":/DONATIONS.txt"); - QString htmlString = "

People who have contributed to this project

People who have contributed to this project

") + line + QString("

Coders

Coders

") + line + QString("
"; - htmlString += ""; + QString str; + str.append(""); + str.append("\n

People who have contributed to this project

"); + str.append(""); + str.append("
"+tr("People who have contributed to this project")+"
"); + str.append(""); if(file.open( QIODevice::ReadOnly | QIODevice::Text ) ) { - int i = 0; - while (!file.atEnd()) { - QByteArray line = file.readLine(); - htmlString += QString(""); - i++; - if (!(i%5)){ - htmlString += ""; - } + int columns=6; + float cwidth=100.0/columns; + while (!file.atEnd()) { + str.append(""); + for (int i=0; i"); + } else { + str.append("class=\"mycss\">"); + } + str.append(line.trimmed()+""); + } else { + str.append("class=\"mycss\"> "); } - htmlString += ""; + } + str.append(""); + } } - - htmlString += ""; + str.append("
") + line + QString("

Coders

"); QFile file2(":/CREDITS.txt"); + str.append(""); + str.append(""); + str.append("
"+tr("Coders")+"
"); + str.append(""); if(file2.open( QIODevice::ReadOnly | QIODevice::Text ) ) { - int i = 0; - while (!file2.atEnd()) { - QByteArray line = file2.readLine(); - htmlString += QString(""); - i++; - if (!(i%5)){ - htmlString += ""; - } + while (!file2.atEnd()) { + str.append(""); + for (int i=0; i<3; i++) { + str.append(""); + } + str.append(""); + } + + str.append(""); + str.append(""); + str.append("
") + line + QString("
"); + if (!file2.atEnd()) { + QByteArray line = file2.readLine(); + str.append(line.trimmed()); + } else { + str.append(" "); } + str.append("
"+tr("Honors go to Rafal Tomczak (RadioClone) and Thomas Husterer (th9x) \nof course. Also to Erez Raviv (er9x) and it's fantastic eePe, from which\ncompanion9x was forked out.")+"
"+tr("Thank you all !!!")+"
"); + str.append(""); } - htmlString += ""; - ui->textBrowser->insertHtml(htmlString); - - ui->textBrowser->insertPlainText("\n\n"); - ui->textBrowser->insertPlainText(tr("Honors go to Rafal Tomczak (RadioClone) and Thomas Husterer (th9x) \nof course. Also to Erez Raviv (er9x) and it's fantastic eePe, from which\ncompanion9x was forked out.")); - ui->textBrowser->insertPlainText("\n\n"); - ui->textBrowser->insertPlainText(tr("Thank you all !!!")); - ui->textBrowser->setReadOnly(true); - ui->textBrowser->verticalScrollBar()->setValue(0); + ui->webBrowser->setHtml(str,QUrl("")); + ui->webBrowser->scroll(0,0); this->setWindowTitle(tr("Contributors")); } break; case 1:{ - QFile file(":/releasenotes.txt"); + QFile file(":/releasenotes"); if(file.open( QIODevice::ReadOnly | QIODevice::Text ) ) { - ui->textBrowser->insertHtml(file.readAll()); + ui->webBrowser->setHtml(file.readAll(),QUrl("")); } - ui->textBrowser->setReadOnly(true); - ui->textBrowser->verticalScrollBar()->setValue(0); + ui->webBrowser->scroll(0,0); this->setWindowTitle(tr("Companion9x Release Notes")); } break; @@ -80,7 +103,7 @@ contributorsDialog::contributorsDialog(QWidget *parent, int contest, QString rnu void contributorsDialog::showEvent ( QShowEvent * ) { - ui->textBrowser->verticalScrollBar()->setValue(0); + ui->webBrowser->scroll(0,0); } contributorsDialog::~contributorsDialog() @@ -90,7 +113,7 @@ contributorsDialog::~contributorsDialog() void contributorsDialog::replyFinished(QNetworkReply * reply) { - ui->textBrowser->insertHtml(reply->readAll()); + ui->webBrowser->setHtml(reply->readAll(),QUrl("")); } void contributorsDialog::forceClose() { diff --git a/companion/src/contributorsdialog.ui b/companion/src/contributorsdialog.ui index 1c09ba66d..28fc29060 100644 --- a/companion/src/contributorsdialog.ui +++ b/companion/src/contributorsdialog.ui @@ -19,10 +19,23 @@
- + + + + about:blank + + +
+ + + QWebView + QWidget +
QtWebKit/QWebView
+
+
From bcf072708d33f0bafc3c19e0ad1276fd405a85f9 Mon Sep 17 00:00:00 2001 From: Dvogonen Date: Sun, 12 Jan 2014 10:46:16 +0100 Subject: [PATCH 119/308] Corrected name of releae notes --- companion/src/contributorsdialog.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/companion/src/contributorsdialog.cpp b/companion/src/contributorsdialog.cpp index a555c294a..f4317515c 100644 --- a/companion/src/contributorsdialog.cpp +++ b/companion/src/contributorsdialog.cpp @@ -76,7 +76,7 @@ contributorsDialog::contributorsDialog(QWidget *parent, int contest, QString rnu break; case 1:{ - QFile file(":/releasenotes"); + QFile file(":/releasenotes.txt"); if(file.open( QIODevice::ReadOnly | QIODevice::Text ) ) { ui->webBrowser->setHtml(file.readAll(),QUrl("")); } From f2c5e428d964e6ba3fc9bcdfb4ce6b42ee7edfb7 Mon Sep 17 00:00:00 2001 From: Romolo Manfredini Date: Sun, 12 Jan 2014 10:49:37 +0100 Subject: [PATCH 120/308] more space between sections --- companion/src/contributorsdialog.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/companion/src/contributorsdialog.cpp b/companion/src/contributorsdialog.cpp index a555c294a..a2f8a2ac7 100644 --- a/companion/src/contributorsdialog.cpp +++ b/companion/src/contributorsdialog.cpp @@ -45,6 +45,7 @@ contributorsDialog::contributorsDialog(QWidget *parent, int contest, QString rnu str.append(""); QFile file2(":/CREDITS.txt"); str.append(""); + str.append(""); str.append(""); str.append("
 
"+tr("Coders")+"
"); str.append(""); @@ -63,12 +64,12 @@ contributorsDialog::contributorsDialog(QWidget *parent, int contest, QString rnu } str.append(""); } - - str.append(""); - str.append(""); - str.append("
"+tr("Honors go to Rafal Tomczak (RadioClone) and Thomas Husterer (th9x) \nof course. Also to Erez Raviv (er9x) and it's fantastic eePe, from which\ncompanion9x was forked out.")+"
"+tr("Thank you all !!!")+"
"); - str.append(""); } + str.append(" "); + str.append(""+tr("Honors go to Rafal Tomczak (RadioClone) and Thomas Husterer (th9x) \nof course. Also to Erez Raviv (er9x) and it's fantastic eePe, from which\ncompanion9x was forked out.")+""); + str.append(""+tr("Thank you all !!!")+""); + str.append(""); + str.append(""); ui->webBrowser->setHtml(str,QUrl("")); ui->webBrowser->scroll(0,0); this->setWindowTitle(tr("Contributors")); From 1bdca8ae9cd81cff39b3ad0a21e78485c8d5bc3c Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Sun, 12 Jan 2014 16:47:31 +0100 Subject: [PATCH 121/308] Update DONATIONS.txt --- DONATIONS.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/DONATIONS.txt b/DONATIONS.txt index 8957b7630..9409c3a4e 100644 --- a/DONATIONS.txt +++ b/DONATIONS.txt @@ -285,3 +285,5 @@ wsTech - http://wstech.de Clinton Linck Gordon Stahl Josep Clodas Sola +Thierry Martin + From 01cb2411c8b19fefc132b3eb6791979d7e45badf Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Sun, 12 Jan 2014 21:08:15 +0100 Subject: [PATCH 122/308] Update DONATIONS.txt --- DONATIONS.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DONATIONS.txt b/DONATIONS.txt index 9409c3a4e..8c94fa180 100644 --- a/DONATIONS.txt +++ b/DONATIONS.txt @@ -166,7 +166,7 @@ Heiko Polig Andrew Fernie Marco Lange Nick McMillan -Michel Baily (mensual) +Michel Baily (monthly) Patrick Mullen Scott Campbell Erich Roeder From bbf5e9608de77874ba7ea8df0087098ade379b67 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Sun, 12 Jan 2014 22:02:52 +0100 Subject: [PATCH 123/308] Update CREDITS.txt --- CREDITS.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CREDITS.txt b/CREDITS.txt index 6ea0e45a2..c9f3d46c8 100644 --- a/CREDITS.txt +++ b/CREDITS.txt @@ -2,6 +2,7 @@ Bertrand Songis Romolo Manfredini André Bernet Michael Blandford +Rob Thomson Bryan J. Rentoul (aka Gruvin) Cameron Weeks Martin Hotař @@ -17,4 +18,4 @@ Severino Anedda (splash screens) Grootwitbaas - 9xforums.com (mac) Adrian Amberg (splash screens) Wallaguest1 - 9xforums.com (splash screens) -HC1969 - 9xforums.com (splash screens) \ No newline at end of file +HC1969 - 9xforums.com (splash screens) From 7755ae606388730aab85869b8e8e023e01403059 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Mon, 13 Jan 2014 07:12:18 +0100 Subject: [PATCH 124/308] Update DONATIONS.txt --- DONATIONS.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DONATIONS.txt b/DONATIONS.txt index 8c94fa180..7f0710e4f 100644 --- a/DONATIONS.txt +++ b/DONATIONS.txt @@ -286,4 +286,4 @@ Clinton Linck Gordon Stahl Josep Clodas Sola Thierry Martin - +Peter Mauro From 0b387a24678bde035d57fe34c5cdf3cd924eab74 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Mon, 13 Jan 2014 11:54:08 +0100 Subject: [PATCH 125/308] [Companion] Assert on EEPROM import errors removed --- companion/src/file.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/companion/src/file.cpp b/companion/src/file.cpp index 10c918cf3..404a40db8 100644 --- a/companion/src/file.cpp +++ b/companion/src/file.cpp @@ -323,7 +323,10 @@ unsigned int EFile::readRlc12(uint8_t *buf, unsigned int i_len, bool rlc2) if (read(&m_bRlc, 1) !=1) break; //read how many bytes to read - assert(m_bRlc & 0x7f); + if (!(m_bRlc & 0x7f)) { + qDebug() << "RLC decoding error!"; + return 0; + } if (rlc2) { if(m_bRlc&0x80){ // if contains high byte From 9cc9e115a4fe364938d191bd5165da959fe235a6 Mon Sep 17 00:00:00 2001 From: Dvogonen Date: Mon, 13 Jan 2014 14:02:39 +0100 Subject: [PATCH 126/308] Icons regenerated to correct font related problem. --- companion/src/icon.ico | Bin 263518 -> 280982 bytes companion/src/icon.png | Bin 3732 -> 6350 bytes companion/src/images/iconmac.icns | Bin 145634 -> 165687 bytes .../images/linuxicons/128x128/companion.png | Bin 4591 -> 8690 bytes .../images/linuxicons/256x256/companion.png | Bin 8828 -> 19094 bytes .../src/images/linuxicons/32x32/companion.png | Bin 1143 -> 1831 bytes .../src/images/linuxicons/48x48/companion.png | Bin 1734 -> 2979 bytes .../images/linuxicons/512x512/companion.png | Bin 18769 -> 39722 bytes 8 files changed, 0 insertions(+), 0 deletions(-) diff --git a/companion/src/icon.ico b/companion/src/icon.ico index ff48395bac58cafe9de98e94e5589e6383919929..bb088b1ae5e2f787f42b089953a66b308b551123 100644 GIT binary patch literal 280982 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ⓈtejZj4{K`}wDhy$^~E~oJSTG#(nT2cGDKwXQp z7Of_=LhY#aZ&GqnS`uicWNH`IP6#9rXwbU>lr#9RR`EsSLKby8)*;kgO$j)H^L534 zLtWHpS_Az)l)qX8n2?Mvpnk9VE;R(;stj)!t~U9TCnUF;(yHn3re1#HrE<~e93heD@a8hC^%5PadqVAIttL!#}fv5tI4fEQMKAWdQ~+4DJh}x#ph(Y z5TP9ulv+8?D*L7nU;!~ zC08hQ`4PMh`EO9jG3{d1C4;bnFx;+uCWt2QU&CMBCNDHUT7C0T&3%G=D!CW>QX{jL5+tr_VTT?ksy~eA~Ax7z3L75h2;bCH|Rr$;$AoIdgVV=kgy8s-CR#y zVhAg!cKg~&j!xx_t!4Vq6QqFxQ*)EeGP)J^x{;wj9?|ZNnIfw^FtN zaP`G@idA>M*D&mjOm@jtKaKxZ5MX*>Q;@p!5c7f96yYJh5NAb}iudNy1x5v`J;ouk ze`-qNz(jZPIi89yN#&(@J?no1s@MsfI4BV{sOoY6(vNCIC&4;(QOr$3yHj_i!?28w zhDL?EmREZXj41wl-SfYMk~CDM8f!x^v699l`A7H@xWX(iMp=bBE?4zt)z$6V3|k#A zne3c$sQ{I&B(Hn^qwritY*ta1D#A#p-@87#8(WB1$TN|HEl7E=wIa8zB|!*B_3#de9kUdgYN>$+V3Md?a7p);{* zQ{5&YtRVfSh!WXXGWm`wD9qM%=%?=6sABM-}3~p&l_ysrEn^niFG2FaL_(6d{zb zcQtRk-KJ_2Cd+49YW&Udirz5h%=L6%rTEVk=kDR&cyMDVHx-R%VFlH>fnJZQK+AzE z3ww{%-O({Indfp<9mTjvBdTir=knsMRdx9l{&?=hU!+(lvWkHDFWLMU{R)E8HRNcA6mQU>)=q)y; zgj$4iv2?34|G6q?Qe|ipRoO-Fk4#CynX!&mKGzOfsJg>mAzssAO>umXqY_^0;j1|R zx%ik=Po0{o;&Pb5#KHzV5QZ}?ojGiwg{g0$3I2!F4RJuW(xtyPLR4}7D>bhAqN+G4 z0<-syZYQhXN8MpBSw7QJ>vpBS$=-%}ZBW}TDK-A{w4`^SH=UZR>dArP$i&(m>^doe z>jm4-)ZVR%BIE1`6rboKdK|lWbG-!8_)pa?mIG8jHJ3Lpz`bfEgFxndxUue6vSC*_=tNgzLV zW#AJDRb-Q=NfjIa)c9|X2A`U%`f|XeWZq+6Y0aZ% zDX@Zs_=u{y6OS;zu_!MC4bJ+V@(I97>v4hWN;7A9EQKPxKpRL5} zGq8MMUm-89cWY&@I{q5}E!H)|5*RIx7FW+2LCV4k!lWyPz3OhjKt_{WHNE|M_-Luc zDl40(#(!(LF*2&3n#%*>k!pD*i%zN>$}9K%B*4Te1DDqRxuX?VNYLAIyG0- zeQ~0Hp)6GEXn4+tKU&H)Zne}^?19FA8x_vrIOB`z!Vpr6|FC?-w+VQZQM}w>qvTcQ zk;Z>}sv0k_tGyhc7WoaI?sCSd?DjzEVqrA?mr^0Z3Ub=1xfR|Dc%M&$Tdu2*mX=aw zjy%@*Un*J*5l+ojbvJT_GoKTL<%4O@>+GYYrB<2!0W|*Gi52#$VWM8uvj;1@3GlEt zD!B@sXJuz?D#0}VD^S?DVU)0JdJXX(*A5de|xJ@3$Y;wMiKU!Lb zDzg?vPfYsmjms#{V*6 zC-~2wq6YEo*U~D5WaVE)K3ZDFDzg+#lhbUjt=qooy6Wt@n{|MG*$=f&Y@5p}`a&+a+|6|;ZkL6K8w8?)5 zt5f5@gMgU^clUCK`mNlJpuF>kU-i|RfN2fc{H^idCOoztGIY_Y(UmjvZ#*3&UU;{u02Xifh+j+uxd_^%_{|bz8wlG~mlR0jzui!YfX2h#N`2?cg7Kq_0w%YDZKey< z2EwJ+t;YY-F*1Z;toYamY&@{aKy!ucWFKuHY^btQ|7!d%6(ZvR*l7vXS}FVd9cylr zl5rM9Kx6<3ugwJ+S7FI}jsGR_u=tw}p=KjEB89SJEcuvJD^51x#+$cxYp7MOdju^Bax- z=9rlHFhrHU$=ObwUm_R}gxhH=!X{N({8Qt9F&5VEc-ULHo19A!+x{Lw41@zC1F3M@ zK-jE`HU67HQo@7ZZNFxQz2@!0Fc9W~lqj3_L$m*FbHHfW>nfX^%^7Zw4_1V=fv}~z z*7Uz6RP=rfPQ9D!x%vmcY&QWh5T+GjZELhyWo!I5gQNuc@f9t++w0P+y|&5EPtgRX zw&Kr0YNG(-8rS%5jE2cQ4SR<)xrV-ZZEK9Itq7acuK20(-x4bNWf5l%dsRO^NE{Z2 ztWWV^n{w67L9)O~N-jsKix% zMOf4SM#R?-dvTJp>Li>!8wiVv*Z6P3|9Uq$Z?)H&5t29{5#MuEu?g@% zct{g3e=jP26}Eyj{xkm>2VU(}k$7S?7BA62!&^MDnZ>~OjK~DCXJNO@VR#_imbON7 zri?>XyK4MbYTQYyy+Zdk8_~?m*Rt;A8mZg0E?GgUo~(!!;jt~a52~_FK;yrn03%yE zW7vxsPAqtZH4IboRT`lFMpz@>LEbIKwNQ7{DX$3ktY2lxuT(*mKL44Ay+J;z^Nr_x zrln%;g{W@b>SjVZY4^poIS>X!72@38-BA_Z-rjuvc~Mc3T%j&MKOgDMnl%f#czJnM zh|HV_QK%vuQbRIM8}`Da@eB7O!L9S3i-j+1G#%Dd-IvY`E5cQFAk4L2W%WN7Ke$e? z6ZYO!-D`^y?S+FVd1%R=Pp)|LuwUj_>@R2Gc)tTg$orT>DjYqk@Vul zivfbCr>8?)G6~E&mcH9NL*qK= zc*AR8YcyB-JMX*$rsw75!D6Wpr)s;Y5D7UE6d9tHpZ`p)dflC|+RNW(^a&O=nQqFJcgg|0ES7 z@m_$cpWAl%fw0E^GV`CwkC)9=U+v-v|7j^EuXmNl3}CaZR_j`-&xN}7Kv?5{nfVX; zIcL}lEsZ9Y&@X{WTOQh*#HAM`Z&&#RNi<#;9tdmvFB|_^`8#dci@Ev=-&)T_2u}=m z&ZZ!o$HF<9w86^#sqw!o{1@X#?`qz7<3sK31ia6UU++?hKMDO4a4M;~bDA^x+rtl6Tb>eGf|+N9+;dtdJ=Pm|z6Ipdrz zUJ-Vsfw0DZ2l($qRmsEN=v2F2? zlT%Xg9+{)BcPV6c^oF~Dka{7iza1t<^!Sdjr*FC5HgdFp*1~K2x0ClW!(J$1>?xwU7M!f` zO1GS#$jdLnPu(3s!US@ifw0DZd-%_4s%DZihP_x&OG-;B%j;d1Y3+b77qj*awVg8; z8s9VC0pZjMs`0;c{u>Q@)z*zP?46d1`6bkLCD;a{q&P|u-w{yv1xc3~2y6T=mH*5` z8uqGvu!As+69<;}^{(=0N-k`TCgKH2RZmUltcULioA}?CBsB`De0F9w2Mo(}6^Wjm+Q8+LMy?}cEB9kKVp)MRtQk;9G z-w9c8s1ZJ7P_vneWk=%30!z=8USdrE4S}kO08YV$Ayj3ZspdB(fgA01cFsTJY+d9Y z#+Y-;?h;m?i-4|)p&_6lpdp|kpdp|kpdp|kpdp|kpdp|kpdp|kpdp|kpdp|kpdp|k zpdp|kpdp|kpdp|kpdp|kpdp|kpdp|d0<;;#$Z2~vDglRf~A!68>h((#~ ziHmLBCULJ7{&={%V{06QH!mi(hS4MXh`dYe-Gva?%V*+*c;>QeKF&h`^>VGS-53-Q z$ymJv`uW7xj!9_Puwg<%Y~6Z+L7@um(GakQ6ooX7uHBb{fPgD9EVxnQ#sbs?ha765 zQKQ6Kb#RJ^1=Una)@6F^=jEQ*uzo^9q9P{*h>6A9TebvXP6Su;ZQLjUGQ**;jTCx`kB%KVl#`W#7pCB{^YV|KJpIk~Umtzqf2}+B z^3eGru;}0@mh&BhTutZRy-SDgH{IM_xNhCM_qe%x+YVhN4?iK2Yc)@7I)_xN@1FoX z3-a>?t`1xZ3W^Z=y&WedDS$v%lSv-#1YPI4!E*Km%C(3t1%-vUZu|YHBn65FU>ROF zC`L)z_S%CKrJw-U{Cv93d+lTRdwSSvI|$%>2O5L@$ai43)L*~ZDi`HJTB}Y#@$;WY z`i+_?x%;3J+(ld`i|rw5KQ+=U{`g$TNwf!>gw(b!+z=4r;F+w3?fL;` zCyzRf_M2$`1$v!|H(s0V5c1>z$9-dXZ#0@IiP9_C-k&R_TLC*!8f?Afb#ubw@oj2rddx>vF@ z&WqAfN36K~Jetb5_u0)zkcU6GQQKWN{73%^^cFn*L5-SGiHV5~th@RR8el3hvUXii zO?7yA{>N_p?2@t~F!&4mRfwoH(RO!y*{3k;ZoU{rhtL3b4Y&JZ4_G6#oSk+yf-($d8+e#)e5Mn);OGJtwpL zBb%c*9-dz2@QTF?_virW)Sq7>FlHUOfE;)CnH=|Uns|4@D8L5)Y5p_7bpBIp>OfPb z7GYj4=lIy*|D*-$Aj7q&|2>5vedq8_q!DTTg;-?bT#EnPw7WL0F6W&myT>q2=axHS z?z2=8URLMxy@aKA_sAO&m1iXMg%x&etG-ha-3iM9miaHr^7nsvwGukTL`BrDT_-9k zIyfZE!&7I>a8#Ldw5V~W1PibKmR$cb=zrqBZT+w6g0HEl_SyezNH>r6yLxh$pi;3R zt!IV!<5K+R2D^ClO%N^LFjNr>r}FU(IVd(2P}rb{07i-ncDs7=H!8AW?7$29Q&+r& z=uXgM7WvPZLjeJBKG!-kEBn9GXLs%0w{_d+4=#JETc1IG)xxQO*uO;M6sOunHuyi` z{%gbeg$>WnCjN`T7u|@4uril8Ip}1w1aNv%!CE1?E?-l%uCFE`0pu(CGRQfG5GqDT)2j zE%RUWoA*8bUQlpoy}EVlSaGp&aX$V*_UBd3koMUB7!o3vMPqvi{uG-%gtNh@;977U z{ZFJ6dli0q=YNn5yBUlnyzd#B!^8$>+vu@+e|FwTD!8Eq3ENNJy8E2u9wg{rnfyl; z7(0yXX(bPn?6ggSN_^r{POnjO2n;7~$Fj(O#y>YNKO-aKsuh=UIUV(M!|nG9fvuXR zwrkCyr={}WOK_xp{jmJ=2T_FLIUg*W%JScT{w3#SanW#fE&jWCz#9JN%Qqodp`p)W z>t)#dX9!`@u5G}@{J($X4OBF-DG@i!|LrF-B>yPHReQ>%4Ei5J!eNgD8Ujj=`%(8i zP33h~6R^R5A)3`ok*KClV;0#{J2ooL{zs+qA2Vt}9@5?~))J%&i-Z~d;m#9N2Hzsf zIbw2z)Qt=AUvvQ29DL&EcSv$&0!I{~=N-%KL72C&&bp-)6^%y@NJ=Qy-Dk7hgJO}0 z+S4rd@E=_OG(Qgnu$K?gDh~cd1$jBLoYHp+q;<~bB^&$~CWCR8RpP!dpH}BPjb3O^ z?I29~T`Bx`qtp9ed4M*uDh2=%y|4g+#@#R?ty5ikWPsd-_)pN#=J?|~1pf^!mkps_ zvsTdKQuV)3m~;B2h%)L8Kj#0gGnwwy>L3wU;6KDOcA^RBrG-BaSU%lzTJnh?t)TuI zfi3=%31QXg`9H=b`2X4N)uE%%%INSVCqw^D$Dmgvk6$<(XRy|?3(;{^T5ph z!Ou$eTtfKKi=Kz@Jg&iwHOKbPqH$dWi}Z|Q`{%o3S0vw>PN0)T{m*Ui@R|I!-G;Vn zo!qfw$KE|}o{)C?%g?SjacD23U$p z92*{yab!DWRThAF&%;N*9d{3`1+b>~by5C9Hhw+lySJW({A~8)hI^<7Uit(9N_|6z z>+$6WCMpprDPah0{^dU>?9PRdmiaGa*mE>j@~g;X5Fw!Cu3yzSQ@x ze4k2P+Nd94%IR$I9}N>DbZag@7nYjbVbuK)fDET@*mK_VXBAUHsYVS zG6x3DB;(n~o0b}94rmE~7qovM8?S%OxwSncR2Fc#312Lbqnq_a7#n-oc*(C>lwZNc zLr6iH_~NeQ_W3U%x)XGi4gUXm+`{`WUSdW2sX2qFUJQzh`>d}Io|fE0oME$BU;n)( z_P+r-c4z>GTYVq;)W+{HD8RUoZR1&kk`cf)`Oi%|B{opL!f#F)40yqcxlg|f0yA51 zW9|$@8iE2UJ6$P>q5@3#Hn?FZqBvnX#ZmrqtAB8KSE?7os<(d5_V8KBGrV&7Z_oZW zCydaQ>b9Z(0ifda03JA}Gwl0f<9YUNVs231&Fb5Ti>&`rMZ41)@6L~2K|z#loT3XT zI+H8MwI(ah%S&f6hmQ#oCVxt7P|oRnh+C}ug;o8<-m{Wd4JQx@;yJ{BNbW8ATYc)|$1e6E;>s3^;rE&o;w_Jh@@} z+Yp779uK4D3=wmKF3Eq0%8hj9U^0P}1uSX{g2vkqo(rv;OeMk#jRyM}fAJHZb;G<5 zZQmjS8;XaHKvd$$duaNIH&^3ERcC|$CiXvVAr{1r3-UO(|9eQT%vx|q@cfot5LNx* zuih+NZE62o+P!a(3{Dt0*;gy}@So?*2hS|AX2krTJ1kXD3m0;(Gyl(}7j$qB_K=S3 zcn{(!V_4jCk9P3C^j^cKyL-_gKNt;gES-mRd!LS{4$-zZeoY29bT3-X?XdOO`zK_=?-_n2(-WUmsj6>Re0ZKhO3rS%V2fcM(`G6!ZVC;jMwNVQY-b@gJD+ zqW|cw&2UZ&jZ;Kt#;l-YPsD2J-b2S$u6kqM{R{7(ci*ZPo;mdAuS|B+wN$Zo&}Yg+ zB3aD4IKx@wKNliBv*@MQ-~Qk8&#qj#a?R_jzWDT`V}}o*#fr6>;(;5FSuW(`wY5@) z{1sImi~MKIOTDsQdUww$$<42LR=1)gGfT%d|GD4X`rA>rfGF_ZSmUu8x%>7ug8%xV zrK{UcI#ViRox%Twq)^V7>|YMMU}OO_=ud5?iC4pqxm2i~Khh z)#P5Z>0*NoPqF0;*ClJeq}0TmFTR5 zt)AEsSeYF9!Ti5>WIIT!nAWbze`2beJ4~F<#ruq4va*>U!oyLe(5^{x_-n#^tk#Po zQ{)eJ9P|u|G0_9+v4~T)&3_@U5L=wzVj?+OH#ghuf1me_Y(y|P$7ZuM|H)97dS(6p z&hJ=WtW5rssasfZrASWhH4eC$kH?w+_l>>*C3128i+ZOf06;gdTug))C%>7r0`scj zU|6igqm5tv;S&-^Nm)8C8vZJ|V*Xz|N)j5`Z{`BC4;rjkVAVI|Z}%Jvk1yqApNbWp z_5W-0#zCIkoE&Sby%znsx7zsIacAC6HHmzUZ`-<~k4>uRgnh%T?9OVq{J$Fo>jPt}L@B|7IVq?oZZWM=l zfhX)D=GxV~qB)PgD0$J$p_9pvvM~QsBmLy`Q?Tg?Wh)L+LvoaYi-zmjE7@}&eZear z0_pIimNjrH)}Q&mcEM!Gz{`cWvD2~s-?aObGx^`OZit+HiGhQhtQaRhyb7?0^%Sxo zOdRw7{)zN@EKbVg(t%32x&MuA2wdv!8j}Q_@Dua={3cXfjcU(5a`%~IhgfV&S1Qq& z^sCRkzA3J8YsiLiwDZZ2e0fSUA=K-?KYxHoXtS22E#Y_W;+0Rn`DxOe`$MDZk>oTn z>J+=*P=!3;nsIBlPd@$howwh9*Ae&5JDawBxaF?LU%@h~5ZVIw4Ea>RUp>4Le(PWT z-eXxB+4$DfdCMfpTMU;h3&1C8_Uo9qdDHsWSFd?PxYesyzq{$3z7y_( zWKPE1PApIuGyz`l3i9{vcT>kFmprg->wACh-g)fkzsHUr-}~2rk3awFiRWMHH)M2h z1nuz?QQV!mC~2`Q)%?8Mr6i3THSD3q3!ZxN$!Cq+(@#IWWZCk&?wvPu#OOBdJB3z{ zR#Fg!bt?IltgrPOL14?|zvhd^U$rnQ2K0cpPUr3I&ALl@0<~}Aqdaou8x#jtYo&Bp z3M^1E)bW(bIazYniqI9tPG~-*G?s7JqA-qydnXHTSu#6(S$M&d5|jDxhbM;o&Y3N- zLsAMNq(xhVXjUDb68=t^s8Uh*u8Uh*u8Uh*u z*8l=IoD*kv@^Ptrh$l{mHI^G^FtWc0Nr6ocQ&j?(e2zy+1mA!(N!gH~g^xHO7R2EI z=EuFVv?PNYeeubVj)k*QDU6{YN-UETvlYpUi)MCCDGLLTl;Yq9A2H;ttrgigu(f*} z2y6nic}N^}Z1Lz+2y7l$@qu`Ja;D-_wi_g39I@mt<0mEVEec#Bg!n>Wtt55r*yf29OWt{VOj=>1_(=D2R&ypoe?wYqy7Z5^^_<^`i96fZ& z(q$`FJQm+HB`nbUk%u2ZzPF7Wi%^uS2ooC_{_q0}S3LH3QfdcIdGffC%a<=-@W4Ys zVUZ#|J@G=S`Hvkrbk)l*Zr;54wbgG-oHi@GCLJ%2qEP`*c5l!5_ujc;`SMA3%t32| z4`&hV?>+yXIZr(KWVc=e;8`k-DJ>(%iG&CFezJL;@dp(6OA2Q$=hUp*l!JFjZv5}x zyOl5;AR{|(?DTsPfIkV{wQVB4cY!c3uiFYwR%SRh94*w#(+fU}rqP#|;YQ9}jGysQ zVOi;C@bl+A|KN)TqNJj}@J#S(=eJu$aJk*hgW-pybY4iuy>@uOl{5e1QFfsmQ8%f1 zTn&7@4nNm#`x?PO2i6knURci2M^7ao;eP#wzW$k+FV}9+5 z>xC;>gGNrKFrtCi4D!8nhQ15)%Yh@3yAPy9q40F^o#Q!+CC|K0fh~Ov2mTfvmlx{e zn-AYYBKWcnt`{#|K5^p2<@9vi|F-|Qn|C$DO-_itdf`9#K(?IR{Nu-uU%he}Kk-!; zTt`j2kJE3RP`faT{9oPp8T-8W!~;3mS(~+VD8JTg}=ZT}I|@w0AZ=;iY#5dOzM z4xmt;bT~J}A-Pa@xXu}O8=k^F_R>c3q#la=rw+e`{WpF3BYw7S99NK=0iQRve2$+w zFG8ko7kvFWKTCY{XT)Us=mXsLFX^Mn=~?-;>L;;J*Vau7voDM9b`)i0=N>zDJnJeY zRai)0OX)pyf(YhTy_)yAlT=4P?l~yAd2_31Rxc|1(y3hfa;N;@Q}`%`WB7B;P8iY) z(eYiQ%)G+!Gw%%v4G#3kx@NE9sec&kk1pb-nr{J@F z_d&xKT}gESW^Tw0qC+@^Gv_a_TfgDWH{V>pemy?Iapb^WPG{J}xk#r?vv|2M3qI>U z{2D*O{%St%2Y&w!K6$zH(WQ}7?}0zu&)-mkx|%1)G-!dJsHdIZeFPu4EuZ~Rw_y_$ zt!_-z`|DS+=f0z7eS>LQp=L1ne*~UC?K=YeS>JxPc{O};awv<3pLvZEbcFx>?SL=d zqeS55Jn$q^Fz!!TX}4?;U6eztK9!zbBepTZ5I90V?D*_m5mio`wGjUGqJpz79f!|{ zKm3lL%kGUCmxW4(}H}HA!u>~AHrQ1OK1pZm+r{VMGKPTFC=-RGb+t|AC9zrJ| z3wL2@Y}@z>0^qAk9Fed1CLnH3T+9rOibp!BP3ju({|Z0ho_Xjl1i+U8`3pzp_}59G zZ;Rj5t|`(+$OFeO_=l3hr=sEGMjq1s-@fL&ZW%EJK2f3m#rS*q!)M0mfs}>#-V<&f zaS(s*%Bp!u{~g+e=$VCbY!mS*AF}AELq=8VbUI`-X(%-ixK(d|ik~{27Xsjl`&ns& z_|Z#m(O12qf^-*;{|%o{w(rupyPZ5hABo0ir_h?SWjU-?!vu>o8uqbs1-skoSBBFa7+I8CVry4qG(j=NAIBzRKY#` z>}vdsHsJru{(nL9#M)t3&K|>4d?A&&;VAwv5|C_6sBh*u>Q;`P$?y#!0zd#<*>P)n z;7)y~Id94H@Mll-ak%f@F_}b^<@dh*6+Z*Lq@xFR;^&qxejasOU)%tg`=9^30>TmNW6>hu)4s=T z_z9QND3kA8pOgzJhy4^$+789qe=EG#L`d&t3HouZ@(A zZDuc_%@)lZ#gZ&o@gf2ke)$|fzu)o44_|zOnnWo%cOq}9Y2k)^GqB+_T9Hu7ZuT!g(0h1vkXPQ-^SIx!_psy@!2O_t|En9ftbFW25mvtY;b*6h9l-b2@L#!v z)D+yLyB}7H#`upP+>;-@xDj9XF2?`!9e*siYX(1pLg?MC4c|Zf%&STYxGB{Mn!9;R z(m%U*AO+G1sa+AvOQ(Yl1jy(J80yjeNCUua`1l6|faXB}n1Z-pFk`fMB0u%&yPV^W zPYL1dtgP&8>JT4%iln-|Ul-ix+U z39fC^y4(Rh`O3ywu~nRyjAzwG-Lx_tf&ePB!Ylm5AT z;xJC_xi_}pC(K)=XwN=0mmkev_7WaJ|6D#xM7^Amks)lqlNU05!(#j2*n)#O%73H@ zd~sd-zoneQ^J_NaCxgH@s0-XQhz`vWy<}E_+@v+t5%VcUzoVR>^~uS_`$zUN&NYvc<;aQKS~j4j+uopo;s@N zZ-s??>dg70NB+U1vsZF!#E~Vy3}O7C>+nrdw4KY@1SRN zkLv5(mE775NhNa8fcEJle{$RoJ!ve7{`ay_)W`s~A|CY_Iv)N*`*h%7Wx-$c_3fL- z%Xu06mDpA5HnnNrv3av*eR_2NV%z)UW-mY%aO+ksLoO)V;S*;Ej~t(v*rM`49Ui zrESMf9ojEhbZ=hvRqE7aIU%_Vf-wh159o&I`0gctGWhv7-p3;vXNe*x_~++QD;RFD z_7}|7_gv=uXZsV0Y;$fNA9Mi3i9(XGHuwhBYc=q)x6yf?c@niIht4W)&nZ#8vW0bx(d`MVycp4KPm?;KmoSn#BK5_co zyoVn1@*x`==;OjE&z~`pQ-1G@pWw;O&47QLTtqGIZP=flzIfzC(-hL;yNC>MqYUG( zU%vSeKa0m-LIc;YUGwXYX&?h8&{cfJa{JCd8z;A?+{OF@_vc>J{YP+&M2ik!vJ zTRMqI4%`1oL2-;vaG-zxK0W8%ch925i^orz(j+O_jb;PLfrJF%YYw#hZfL=6q{Z__%Zb(=Q9VbsI2CvM<;bzZGnCbezbu6k5${G>FIV50^D z`u7_oT;G2ETc))33!s?_k*3}f=08CJzFj(X=+?b^t=M`Tov!#VN&ddxsVT{+t=j|y z5nCu_QE|~VBigiS17X6dM~Z+_qlEhKNp6**^Pvt14jG|rNGG{@;~CQ?qi8c{-`To- zCwEWk`?zSh@$ztMk<_ehyLRCsDH3U2teK0@2=J2 zTJC?Y)zUa5H!9bm@U9bBRmsuwqoiqRX@?IV{`J>ie=p7L+_`h#zI{naG{!VHS1f}j zfcFdcYdoZJ;=shjL3aEbnAmu59D3Xn$p)3fqR6u*A2`fX;nX*Ic3%G8w7|4m70 zeMjqvMiEG{0?N(;^sL`zR-0B+>=ht&Mru-8l9wNixXp}KDqAJ7pOyVk|!o7Pq5?P_~cfTS|yE1(go0PwLHb=>I;nzO`V?Fa(qj> za-WclkRVA&y%5S=HRb6f{u_#bwhU4c2&je9{vj9;tJ|$^`4RBYc{Cl-6wD{^OUoAl zIO}>h70-td2UKuQ!(T7En}jYPWm-zh33gQh;35*%EjtOBy0zNYYCWU1o%N1Pp(N2% z(O^kzp}SPTo|1GX{tQJx%>b0n9uiU*Kry9N)8S1$y{Vsa*a_&+_1l}BXc|QR8L1JC zE2!(SDYP^3hag-9wQs0xKN}ehL{XyKEKtdZ0{;fLG)SG6YG;c>FetqSeHu_gYBHY% zbu#|?Ouapu-QLW8Z4CCJ$pl6P5+rtag&Z=hVVM0r4mFcWr2Jv2lBm}s{tS!W8nLez z04LE4G`h8sn|{wMS7Yf{Pan_bBb$@Dv%lM&ks8^O))efo=+fn|9->nC&%BE78Lu}8 z?KDV$OtQVmFnW$DI@I#CltzOZiA5XhkX7iDO2pqM*oO>~Np=~8ie^A(N&wi_4B}}( z4M#e9!2z@smd(qw284=)SrlE#Tw_IfK-v;xK?@1ZgBhEo(Mk4qyGRxs2&xlANjgjOa8*_!{z_r%bgJW+ z7Q&=Ncbb$i$Dh%Q?Hubsg5z5vaBP=YO3%6ABge|c9|FL6`Fb@U<$#sQbTywD(>JK7 zKnF$^VyXeTLk1GXcDGI;D%e#z{tQ}p!*Ej9_6-L}3-P3ckLjcYQo{_tqa8|EgD}AA zeDWjHO2?o0Bv^+bKMe=$s{)#on4Vg@L-C{p8||21bx89dk@z0*l?A>_;g2Cdi0#ls z8G6`i(X^+I!N+uEi?kM4HLxoYG@?nZT8wSs9b}~|N4n}em*Bsl?MJ6XJHTGUq=dUC z-dQ80;=0D!Z*!srA+H)u#o8ioIaMER^Bi0Re-;c#HW|_c+S|^Cz*-2khUh`HgB*w` zrWzXdYiJILlYLwVfA0Pqf)RQKIs~=gU&G(AWgRiwVAoWJ%Jtzo_@kg)1=#jrzZ&5x zfZDf9=L^`W)yznZY89pAs4~X3l6NWmS&i%bby#+HVDu_lft~p4r?PKzcq-c#h~;?Z zTKF590A_d`Y65ol7hFdeJ2<+OQx1SjiRxd-#j)5~`atzx~_f4CH4m#44zMPtpHcgrHJAU7G&_f2_}z)BdEHhp8#p@e8Ci z`_oRkF;EzP*}sQS>2^(Tc;;uAYt8&H4zA39T8t+cgCrO+d^-=sRMU83?;9{_!`L zyW2Id5p)F8T&p8?HT;!sw*sa;E#i-T=EIt}&Jv8P;SaT0f!(eJEhLs8U8f^JR-*1e`KOmc1P?w__OA(ceBH*EdU>DD~_#H zy3B~!Met|vu{iEfx67-#^}5q38Q4kdfYuTtV(N%>mAn_iMer|Mw@Vwy(^~MmU=F{^ zC-y%_r&jWa*cI^Cce}}sb-PS{{o0CnFFq)Swm?I@o0~nBebn!W(XMSfKI{12d+BQt z_Md-s!wolpv8X%SiQ_4PmEy|O?E+*#jaQA7EcnKu#d;nQS8hjK>HOE@R)%iZWE&^f zqoa!jJR+{A*3>jUI295S5^UXthtsYMoK5Wz|8KteW>j2QSeW&MgOP7Q0KLm^!!h{5 zvDEF_zlWAJ58hfu$_oFLd#H5R>4?Am_FH^0;oP}%7p%MU=g((~FG-mkwP)k!<;#~5 z%X*R*&YnGs)8w{p6-WKsJU`jdcV19UFgWRrQ7gyd!K7(6!hyqWxHeVlh{V0h zc5&u_oo`PF<%WY>afYP*8%NdXh+PnWCMQl3bHGXztA`FPU2!foThw$Y7fhm3M_h4- z@3|cQ-0cR@mMRCBDQuoH3{)L$Wfk5LyC(h)%@WYm4bw8jv8@Z-1RUN$BsyaA!)>55 z%ivrJe+Gm{yI`8-IWaT)94!Spq>OuLMRUWs>ogp&Gsg<;h+PVQ@COP3Uje|>nZ2_O zKx1kOz6F3`avA8y%UjrdYiC_^Fs|_m84=@i2^d(>*P@;4F!_Ldzxs+kTFv8MeYe{p z5>#w4t_9d=*FSLxe0ff0<9utkuMJz&{(Mmp2<+>i#xrM#i}0U8fL(#jgunq+V9!4o zJZ~9ay-9Vv#sV`23fazo2#oi?sEk6B+b*oNr<^AsEsQ7U2tNg?bedgZ7^axqw0CwJEEuNjl z64{xED+B}P6%ISfg*26KF8g@vqN5_Cqigy2itn%sj;WDp`SJAi*42)Qsb$60u3g*D zpAKJj)P)39LtLa=BQg>vw<^&Ygz&JC7~#Bq_1`g90+j6rYKCdqv+E6;-+uG>zeh5! zUd_zPI(Fi}%^!T+qwiot4LGchSm202pO>G1`qkH7-?(u@x86e`qyyi@vr;5Zp?{|o zSuV=V%FfBj!7dJCcQqpe^BY4Z+>Hd#^sFRf>dhfvcyvDE7Ut*ve&Cp-6UXPGBtjd< zga`b0cyC^Q0RnXFI|A{`sUJkDZoXdbZ@u~q(!|O*u8QNI>o$Mt6Ihl5sG%YuVZDfI zdFf|KVp+ap-jndL9}rW348Ixwfn8FOWNF-if{6!bD`HlY}!Q9+D7MpX&HNT*MC(7R5_PylpO=t>8 z4KS4Qm+_Aa56nDwGFNbB`aLTUr(*HXM+Fp7E4XsyN`}FuU%CYOZyPt)q3l?&SC%bg z1oj>|#rWfc_eiH#hZb^CPC*eWHxB_i_b)I0%%Vv{`yjQPTuSp?`qew`TF|svQnRLw z@491B`nmt$nVUn^oi=j;WN=7zDEQ}II>Q@`X3Z!5`}p{vq?D8+wTXy|Gv+^UW$AO< zgrI5xwPIqT3=Z9buYW1~>y!lfMvwn;J^p_h_>W#7z)RZq%h$l6u&|)8fErgh`7gA& zJL+}M_Ro--Tv(8mFDG~E1xd)d678Z>t48@*7rA-=w*R=~tyhL7Vq5!Zj{mfKXu?h5 zKa{FN6{=)pj(_Vex8i9zwSh(aJwy-u_~O|BiR-#T@b?f1rzFP6`B(GMsATz>*WX1E zyuEd>h49qdo8}c)KT8^~ATJjonzp+MK6r?$J&#NLiroi3*+ChWqoAM*2|Q6k3#Y?Au({?5UF`>sQyhun(d=j2j{yXgPzeFt1sN7MIF ziu7Iu>C!tY3WyX@5{(HaDk>_1V((F7>=l(n1#9dv#^kXkmPDhN*h^xs(b&;|4eTXG z-~aC1dpP%8E?$u5`+e{CvA@e<&Ys!X+1WljyE}7PkcR_?pRkt2>$}RI%Q@|XIFO?D zC#6$ABvVH@TcHN3v!sDaNgp6ZkjX^-Roed0_=oymJw0}9@v_;IS=4-R^?rNa^eLlO zCnfWd${&Md(D`=t#_TDRzx;9r*3`cIA}41?uB|iO+oElrA_|rA|N8a);sQShzpZJ zbO1gPO@JV3Dr7QIe^ryW@g4NiftC@56UlIvZB>}FdN)zU$a!?&!<}I{V&Z} z)wwFiM=F0B>bycr_WIw4&;Jc>#9Fi1a4)d@>QxoUpRvLFro%gbU=n`y62+)l>(21z z!%tRhS~rV&^XeIo?ai(u=aD%Tnu4jzpUS@h&)I&RKSI3ExgkW`Zi5lsyU4#mRgXU* ze<%a~dC3MIX}yPoJ-C=q50rn*_~7}D44yp121J)f>h&YW6K8bG#va<0fd=&D(R!R9U&0(7j;Z9$=W#hy; zaWu#@8jNe;!>TMFjmPu0S{$xaLh@n|%G?ltuh}!E9sT{#&6@=`Z{0e2{N(HfOG4^L z1C6y*6%;-~Q3w-#o$PTVwr%}+pVH;$?_9BR)xb|b^Y94(8lV4a+e8r0)VDg@TX#b&GS_?J#dFB*Gizktd2=W8LcB!c@p1w-L60O=Fam~;sP$s1Fr~EvL;;--5bz)BP7Wx|^z<%?NzF`5ncbkCu1;KROy|yByu4YNgbNPxZy3eY`$XTu%rrSU z+0ew)#kqE5qbSIi*zl?Anbkk0Vt&VeA#|}-KC+iz9BR9m}G%>;1)g3Ul7$hddTiefk`=@ z1BQ)-&+Z*R1E%%3AtT1YXYGmw7q1lo=-aEiPheP7cmNP;yZdF28TRn$KUgy&tFCq* zCd0pe3|m0=c6SEcwb!8BX%lYVErE}MOaqaGZStGaIMuvBRFc{MXCJAE#3S-_%g==GBWuckZ1( zfBwext1td#VHf62yMDVEUl+`phES{4v6BoR-7lP$yAa}g^YY1>joXA8Ix&%9_&R0Q z0(`~FQPzOrCbeqbD=dI#LUJp3%J@e~hG+Jep;%!xwPG2htIO6<_T_Ira{3|wxL{w# za9ncAh=Dz>+$fxvHxuUnSFRUKoirH>k9x+I6Gwdt1c(m{+m9#CUuNV4Aw19zeh$>Xk2Fyezy6k?MXiY2@=)Z`?e+=g!Cmf~~V>M1Uujxl=oI#EN`}jNTxE z@>%@w(Vg3c(`U`i-@0M@?!)kW`r!8XX?Y>O?g-U5sU?eyiEhi`Qx^^N^&S@AK6~zL z;q7~w-7=AuW*?BntjdBusvLqeiU41{9;l=n*M19O z8kpI%YSsjv7p~j{&#m821bp%O-v~Zy>e#0*UmKfQO&UEEo}T_;@Z7s|E8w#iuNqs} z;C0@t>3BVO^fch#_x|z==l@AbQO=yj@Ok>+PX6A*sG+StXb!Xy6LP@igL{R5Gy4p2 zceVx4v_%>6M_6h!MhxkP6<1o|?vm9X{%gKnj!;;Heg5)QT1HR!#54$nPwzn^0PEHe z&Kx~(>>SG@EEmEbVUf&9(`Uj5E;XeEJco>&K(Alr<)9*X`Gw&1kNrD;%HIc|b|EGs|ofujc2skTE> zQj)J<09&Evjgp_QH(Ej)J612?^!0T;Jw0mi_6@Igw$@J0bpT)kQD|sLNNA{ytsPz| zY%M)KA0KZcrA4}(t*wJ2E1z)KZ{=9q34ptstF?_S_Y*A4%@X3{fDRKo`j2$WcW^eP4+fXRo@Bv1MTe37Os6#PYM znqXNF^;ZN$?9wPSF)8DR7?Z|J2sN3#6H782XHe0_i?B2Zh_Kj|V+;flQzU~KIV~K5 z<1lS?$0V%5;ZPkm7*hZ7ywDIx#T${95gb&prp(VISHafsLL5d$Miv$pUcP+!s?uG$ zbg8(w7zWP>Crbs%%GS>ow~7b03k+%>RQl@>6woGs4y9M-Mp+T_jB<~659t(wTi!~8 zgH(qg_-KFb2k{mg8;e>mJ?fTPr$vhvA$scgWPCvWh!+RKMD%2*3(^lT&S~*T@&Ga= zQx;0}xAd??Seyndh6RAL!Ws^2SfLAUr2KDUN@D1@bUk|pBfGIP-Xf^`3L8$QReQg@~0%Y#ko_(%jgU% zm&R%~B)r%gS(kAlmLf=uS`c-PRedVYzfwxJ{09s&lLEQ&sXO;k(AV zmeG0fL8g5Cpgigs13z`HwD+kJ{uR~M!9;z8NfR-sL@-E}jVovfQHhF-=tM`lg(gj! zVAifae_yT5(hogqyUH+7!GH1ag zVVs}LgkYqHi=Sjw0|=}lC$o(_+7Bem&CPK^7&+WQ2JyCN!4%-?@?WuH1=zE-wN;{9 zV%2~SuaM?K+0~X5DQUr&HWIR3Kp8_j))u`@Uqr!4P~a998$EvfSiIN^w{hW4F0S>F zKd_xldRJFbQ4!MEv13ONq=H8@T^pBCZK;v8uFFqnqH#_Q0k{5PUXM?urAX_FOmXS! z>qEyWleV014ezAX%E-u2@XxCP8?C8N40#JLom)}tOl7Bb0K1|h*JsNFghm3FJw^Vn zT)6@UX=5PPT*zr)nJvnQjuu!;`R5U!+RBtC3fXp#kX^<>46r$x`UP8BRAiC=Dv>|R zA=odc+B&JrljoNKzkoy59Y`y(rYsQohn^hLmTGHJs%pU0}cjfO-he? zQZ+1K4BpV-mpQ^D9%|R;*Og|<6~8E2xN-u-%S?jEf0f7|Yf4bwHXPItg&*-sf0)8U z7omv_mUif$I|iYrMoLQq_NosbD7Z9f5s81~`;Hwu{`%{$GiT16t)M$~>Qq5N0k-&o z2V-kv+=hVL4WvK+HvUkIqd5YCruLlJz$G0>0`OIWf8r1R-$fn7;?>S!>PMWEjjpkm zE*o9ytNqlBaiDoTAf;I$n3n2@xJLRsfrKLxm%WPq>HvlfG;+Wvz7nW$osPn4Pgy-K zEqz!@wG*bujG3vanVC80i#}S$RSp`Ay6o-kZSCxE!zpt%He_W{W)N#DOJEY);KA0$ z#@vFnKjk=D^9>2``E~nNcHY|S*E@IZ3l3u@M)XMRlNrhD*K9#5ykQ&yN>_XFN-OUNc5b~6?F_|Ge`c5U@5292pwL zLY_f&nT5&m(|=BwIPpuI_cCK})aEbwo>S9Ut%(2Q2X;MxHJ2a^?9~;a;Fhdf%K~axH>Wzgc`aoA#@#27V)yZ2 zc3q_Z>Ro=l^vkqR@ zZP~#iDuaJJOViiSA0Iz+F(I+(;swlhZpPdtEEZiA@hZv>=l|~gl7j~iUb%dE$mioZ zSrtt95dX&x>@Ioy^z`u~B~M=9USk+ceZ6KAqpU&xR6Irw=>r}Hb9*@;e>S)`UWbmJ z!~&L8er(N6V6?V1pOybmKTja9*}NUFEVC5l$HN5(a~Jb!sG2|o5gqZrf9EzJ!?o+2 zWovE-VDYMTz|q7%l?Quk^Xr$+19|gLTYuWjYR#2`A{$3$-XpJNyuLeFnZI~ca;Ny= zx^?SrUT1TM-h)14v8X1N_z&?x0{?vmd$YpAhYw1Qp8ivxH!l>mjQ@kbvhyKx=d;}O zcCQV1*?-C_KR}}!WEy&6KC2!46BmSp^F#k(7u`l&4P`H*ew6TKqI= zdmD>QKdkLJ;8Wm`C`4o#fUp!C=P}Y`R`ii!imzyPr8FtH`1KtDDP=85A&A%}0C+0} zkzruUij6Erq!a|DPKF?TB{oFj2=!J@q`}`R_DUm516IS;68QgH0=`IoDE`v%C+-tr z+MaS8>ZY_hQ-eVGfN98$SHQqTt*1tSS`R{lCpr4WLMib9;1h)<7_U+Qu+)J95rHSV zL_!A40NzCcMzbd3NW&5uFr{DdCdCm6vS^e9rLYv45bSKMTc@Nb_A=C{kr*Er7oUh> zjjm2j80eA#En35n;9z4DQ&{KH#KhFZIHF!XU9LOw_3`%b^z`@lH!?BBuskRz2%S-I za1d>&@b~pjNoj3q#Y{WgT8Y_4t!#&(EJdefjz=Yb&e2F8&#p(Dc%|laHRi!tvXe z{`#|iWFz2r%4BEO?b`9vs0q_1jQ(uyqGkPibpy@*LsW)F#LuR+-_4w}h;ajB@766Z zT)ILqQrEoYN1N9F=YH|SNs}j^J9XmH)dD*Qhd`Xz>Q0LB^{PW_))oa$AIC;|D-Sgbp)3HtBFI_kn6W<(Pk?=VSmk;REP z0zy_UnSbcW2^?Vc;@Q)`ls^W@cf9*OtjiW5!PeP)ko| z(!>dM+`P<;4IocTORI5XM?1N=8|drI&YiJ$-@c42mTPTVx9ZlTH-KJQnJrqS01zu6 zU^uaO6D+<04f;2{qK@*XN-bu{WPZ%6FtbA@fTJ?HN=N?m1~gK&;bc%vIyYb<x?K_QfgCIRGWlzdVM%FfPi@ZiA%1`ZrB zU_ifq{e}%2)~Z!2pp_<*)39*0a0qq4O^C3u!P7p(o@@>^r5cx*+Xve-Wd5@av~>(~ zP*~GxV2biFJUkrb4QhWpu}pv`2J_%YOdv4^B`q$Rgfbs`SN7{431w`VRxyO{(bOYq zNR$GRIq@H#fY$sFi^%N zq~OOd#ZN|@FwI@e@ija%9GD_; z20ye=4m9Y%%QqvZfLi94A{HJa)XOS1a#(rEEVY6o;i%m3PBxZZLs6U<9Su2E34TOs zQj=hocBNGznJ2+Q51!(J3ke4cH;fmF42c2RvqJI_`N74VrR#&-Tn#K)`>>TnIIrej zcx5apKY@Stp9R1R)_{H3}t%B4um(J?mjXA4@!F6Bsk%f~FShXq*wnqr&o0 z21eA_yHQ$V`FbTPxc|rgrJlUBJBB%msZfU2_`h=eNNaSdsR=g~6BpbeB3Kvrwf1{! znUOMAIeu7rdC7E7a962ow8=tg%md!A_{*ZxqT~=)mF9<{&^PAxrK;NvSTROU4TyAZ zRAHOI%JZWX5t<{hz=#XSSl5G%UnNXy-i03$k^1%uG9++|cVii)I`5!NDd+j_{J;i4 zrGiTekEvtD_Nsu-O7lbI*~-(ZOlB073tepmU8VU!JhTgmS-OhWWg@_fG^!pM4wqGiA^-Oc|$Q4+aE=v-6gdA0T0O!1TnUOBP)e^_3B~FBOQ-z-n zVw=KJF^1_ysaTZ#6n4y^0Yo!MpQtBwZNgTowG>fhx3Z|H@*U>0p4W zi6!C_o8J=>65`|I6B82~HENWV#dgq>d|*cb_`rb!*prB_adB}?n>NLOjf6wNvG^`6 z#v}(CQ2N#sf&l>KI2umx-@hNBNSLLY>3Hd7txcZ>bbC8- zE8E?p;5MM_@ek3Y0)x0js}dPYkQIF*lb*eM_cDI?;uj18Rf;ikq(?n*R8K6yq^%T( za#KUW*2Is7&g(2&2F3*eI! z4X^K#UkL8~fp^0J4G|HuJn30KvTqp%Cln)E9)=0y7GUxpSTc2zx7Z{f=#H*kyLR#7 zMcAd3?=D=p@b}+;uUWeW%$PZuVFN6zP+;xDe(eH-I|XYpsYTC)I*5IdKm#&D0ogs# z9dy(kk^n(rN{jY~CboE0clbnKDHWK-AQly;`l=EUGyuE`&@>;RK!n*WX&4I;S)xGE zsZgux7erSMNs$@YRT}U;{$PnbrB9+DBC8WLFsNl`ZwDJrXaHb}p^kv-NGvRwMFi+u z+gR)A^C_4r9_YivxwieD-||uAA3l2AcOYLxlO%x-d>%D)(B_{N%fvDn(u!yMk3U31 zQBqQZ=R&Tk5?4Zz(THXFS97-i%G!#?krB86A+m8iU=$2IMMsqLw{E;zP#78(F?s|$ zXd*hU84yHFqBiG?>}xx*(W&SNVf8ml_Z&P5 z&%^tELo5wr699{`04B1Qrbe${z39}9>8v2E!W);T&6)?8h=@S;xKWh+Lw_9g4`Ld3 zQA&iF-o6bGa9`@Op)t@%R+^ugUdIN>BFfhiT$`LQrHeErY! z^sK%t3PC6;xSBmj!>z>^i^@RQbv5*bZScy7lPMBP*<410cu*xFGjSAPg8f(%Rez zKult?G#0>clx6ldRzGk40Tz#U?%wO#ooOAVI)5t9{d;vUDJh19@UA`kef)zsjzT_^ z#%A%cfBgRYkt0WL+$c!P=m7*V?F4*2bkL$@-@xC|)^g|09f2C`h=4#`85tRoIg_lo z0)ZSFOp>S4qcZNi2h_n!UTyLaESd)MM6 z%UZWiIeYrlf<;SPwQO42JKLtV|7_T&m`^TTycB1&{kD6Lzn^b@etw%apX}JaeeJsSme$t4h^W^RzDnVA{pu0er;mR3xuYGrAOMKVL&{cC7wWMl{&Y;l2qK!AT87dD7DGc|)) z%*|PTiB8OMiqX)}0C@+pVvztQR7jX#VTg&vA&gBC1Yd~)1&1d?;7`^St2#sq4-XFy zjJa>!x`k~jST=(Xqr){pm@HwLA-F>@wr#t`x#1JVPO(5^j-fUd05I&voJ6q~Macls z!PDE@n`S}i5f2?YBoYCDi4F9;Y{uRr0_qHLa8LBznz&((fvFLeUa$=V_%cUn1bvJP z;Xof&eZZmM^aNLIGMpKXxeBb$#oazQyaV$V+FF1)m~1ZxMI_Q!=U>4I7dFkPAt+4V z$T%L-V_R|h)F;o{5v8Y8NRyx?ed#O_%0x_!OEtbhn@hIm=nzz%3tawI)LpI|D zLB6>H^Dfftl&`JOhCZcNu>yo`=iOLF;0FLnP@n5oOg327Io zX|n{yqCNjKZ4Czk)ihY!Ptrp=04#>)@Z{1h4!tk7WTh%}XawFa9T z8F59k#6Z!#oqryR9UGCsj*Xx)gTn6;KC4h!J^tdC&*J zp?$#qmQkZdjU77{{TIwNh!dy@*fItRf1mnT;DINLF;fvE+y1AzYlxanEMtQp?Rk@G zdEiNLHE6(Q2o^3DD2gN#0HoB0zhk%~lUPPLsu)^PrW#N>b^4$wbwnRpIfMvq9}GGu z_E>LLsDyZquobM-K%|R4Nl)D(`aOI0eDvrMHap$8apSt0D=aDu^b0g}Hbe`FlV6}r z!LEL+uP`2!vso<9qxHs)AhiEDEKIh5ib8_!4(Nv5q4yIV$`xSNUt!>b-iiOHI5GN4 z2On~*cZ2dp?MwvpjE;^D(BvpXDE^}Wkdyiw8yR_cxO;ikRm^aBi3DrL#wLgbU9gCZ zSHL)G5SG5jjvZUGZbL1e5bB7X9qrbxU0+j|R22-9KXL$P$A%*jit|a%I(b|DgkFkr1N4 zXx^N48-7e^n#AbTP((Ux@W459<{dt;_td!yGWuOQrf%8#3p}@O*_f8zO{DMQ)WvDmz9Fic_I~|9-5Z3Ip&Tm+%Siz28D;fj`zk zGgYRYovmQyWhLazo-KGLc?zD%o`RE;lYn8P&@`!;fCG;Ow1NT#w`>=(z_!Mxr>6@} zjhuw(({qIAhS9iRT2HVDv=Er7fnF^=0V@{*+5w@Kje*dxUqb=23<0wX0nN4m&7%NS zv4GY^uynH&MvffG_b8bKnDHU_%5PT*c{B5H(y@;49pH$J2!S=|_5t<+hJr$ej%mWg zNs|P05W*z<$JkjIGI)s4Xka5D;Nt)xDk@5-)2NPM;$p&kaI}L$LR_N24DQ21Lxhtj zPYMg>%@bHTTfS_W;O*lhG#=gIiI@3kySpOJHkULPBDaVB=>aU=S=A8W{>n z&69=XrpW?&9>EyzsDT1I=nUK71-7D&mROjcGhN8c$lycW9$DRm8aPEZEImwcaBvXN zQwmsU5TMNwunkm5ZvLL|)mL8$?(Xiw;w6iPsG(6pU2h)&+vf#lVl`vt4B^R>CkX4v zn=L&9Jpltt0b7BEw6u;w{fGzwU5;SjU?9MBM!>FC!NA=>u(Glgu**}3iHSi;t9JkE zBw##rl5T41XFl(xrdsGm59;;tz^G5`YwL_2FtSU)1XE|B^#^%P+}eNcl-{?sL64?^ zgM{e14ugdFI#UI~Bj^j^L%|{^t*cPKW317XPh0xq{iES**Ou9s%r85{34`#SlZN+p zDJjEp(dH=L6JW8KZ6XZf;S(nVsM)BIA%FkKhT*%+=^tMu=$Kuk#o? zNY^XJ(z18xOixE4!MxjeY;PZx6dgS%Y{)Dh!L@rEL73KdtS}fo(fe6Kvv8P(S~qMV f=!J9=k~4(q<6sG@Ur!L+VSlUp8JKJJ&e`=pP%I5o13*zVoCzxwJcSRYCrLd;bOw92hhe7pShT-aGaGKKtx5ewPQ-xmOzcpdP1VutzmX?-s0duvCqtBIfz$pPw>iie6sf;o*3KUVH5|MJn~>fBy5IBaS#CIyzcU z72?(HrAGrzC86g3@ZrPN^{T0<(JYJ@dDmTcDH1;O%rl~Z`HG)>^2rKS@}(>MZ>`p} zR4EZR8)4LO#flYw{q>h7jGB?(e*3LvM(OG4c;Ra%(Tm)^eS3a>zNR)rnx}!LhEVe# z(0%;z$BL?*d+xcKh2fFO$;rR|`l}+00Jf}o|KgI%{SjDRLPgl`QKWtX|+-! zZdSv1{XX>2Lz(~@L~8OsH#ZkuCWBOZx4!t|i^|GM&61m>fo57nhMND#0&G{*>w^zI zK!-uENQj?5f4(BgFTebPMi-NqtoYeypRG{EFCFr~6cR)50p7qpgrA}}!w=3!%wBnG@%F6obr=Jw6 z_@xv6w^nP~tCRvd^OuJoemI9q3_Shx(*p(!P`t!srd@vdb!1i>l_#nIkIkfd9yD$BrFh8Ek|{ zj~*=+8{wc8hskIadB~^`C$KsUBPkN`prpc|_EMZxGJ~0dM$!^wCF)Ww07X zE2sevTJhrI;@^M&-5@X9{BOn9v{xyy#m$EoEn1{T57sN*^X8SvlFOGbSF2jGWQl>E z*|TS>ldN64R*}S*26&GC{`+r*o_+V-mn-px|7mGy##B_4P;t3t%^F@{9x$#r#1uoX zY8-6yzqMM^cBMFImI9h)ubHtsbuQ>HDcTe-|Ad4DwIq+h8&5rIjaddRAP0u zzPLo+n=7%+|6RLwp+6@7uD||zd=p`m9d_7ZO-)VecQvxR=bn4iB{3OOTU*Nu%mc<1 z$6&Qc_@96N`M&$^Q)FkG|E<-UwkyR!GarbFi2-N|#4xaLUIUket)zbY-GBf6TtF`X z15r@`T%vO&${WxiF)e+4hW#3{i%M^(qd5ZQHhqdQLgz6hykk z|5j;Dhn3=>nGcK@F+#*p4l4!^O={Cr1@ks&ax4K-mtp$!>0&}X8jKn>N=$pxO*di9 zk{B~%#ti5QDgTk(-FM&3ON+rSu>c5TR!cO3uAX@3=*(QAdn|UCWmK^g%}iQ_jO`JFE3dp#Y)v_g z$rn+-CJipW_+l}k+|@y4XAI!~w$s4G5f*f2$;_;GQI{~oudE0t2CXC~&K|NN(-MR18RSTkuAGG2}t!$1~S zB5_j}MZ(CuxBw5_8!}{wqK*#N|EouO6-#&2%U@-y>b>{gQMxq9E zgv6OjxA>1@c-fk+R7wGz$xCz{MLgy3)~#DbR86YVoH0aaz##b{ha95L-OT*&9e3Oz zCS0{@m6(fS-8lB_h{6av;XmGu3T?Q&?z-#50?eE_Qz3)*45+S%eDlpW#Z>CBn*U;# z584z1WiImH%hq(IQflms;jQjoZ{pSCPrlw-lg_BJbmLr|;ALIF4GY=>pK&+}#%*vq*7@p$ta^Tcc zPZf);4y*YuYQPYvB8iLq_p&uzsgwc=^Ox9jAr^p#pMCb(L4yXtFc($fp}^n(o(|3R zpO`!2$$8-W@4sKTa3QzRpbbi3?`W=q#$p38J2`Aj14Z9MPIB$F*YX0W1Gf2(o~q`u z)xm=YD~gSZsPh$L@X|Bb@?)mrm@QId>LUN4xm8-zcBK?hSh~FN#v8?^5yN09R##&E zKQ`;3Pbj|D)a#$IVN-AYKZIpH=n1HoeabnSU;i(bP>mSsUSD4?$|%An`7f^j!8F#Z zufD3#BVWGz?z`gCEhCR7LQ|MWZrQRWXd4+k_?tIxRws9t|K7KzlS--4Fdu{FL)N@$ zOa|2aM~+T*40Z3`U9-#vG|*c)13hXBj@Qd1|GB(z;J^b9R2LiHP0L#!h1A}+jvSsLgt6NGhMw9=@6f1!h3-a|e@OX^gW7tryzZO`Ic{10p2)M}q6HYimuK?<)US16J9^>QV^%C-Uy^7;=%w@!Y>->ju&sx)A zr9>QThcSN&Gfh3d#~Y3Zz*zOlE}k!*CX9iY@&AC%12&*3b}Vu|azKv;FrV>_RtWP; zcvkuF!w-3Z#eggPM{f=00MAYxC@U)yGZn+=aH{3iF`5-e>tKh7S{N~*;6K!Q(3;LG zr3r|=NGw0bbP{H!u%{10)-YgEJdh15^I>dav7&m5mS#ri1Hk_eM$+&(c;k&XU`oh( zuxRb^#~;U-iEaNsGM6x&q?s>|!~l!PIv%#ie{5%fp9c&JtXsDZK2H=Q13XhP@UMUU zi)ShZFeM?1>4i1&gi&k zlry9_$jXaH7RRRt-xg}43SK5L*mx-JfwCQzeSLdSqwI$4#`%p+3z|auU)h*459;D1 zi{hchAw_^IFF&9>EPOA2J5Gw-T4~!2|FPq*Z2vOeIw1<+5zDOE%in2hHJoO?i8+b& zbLvA>cTsKKth$6;qtmi9i|510cEf*Qn~;-$b`hH?6yfSA)seB0K5R<70V>8Zxitq#>m=B}BFGUTr($KLAXt zNCQ9hn$NBH?i0I*NBZa;h%q0xs%EUG+mLSFvov%$wm<#@tCEpkkfCruVd&b$lIEns zBo7{WJQr05Rr%BQu>_YW+%EawDXCNS^lIbxnDe`Jv+LrsTYmr?gOJ@Pba!5zpc)$I zHl|mli{xns;daS?w2L>!AjVr-eGELeS8h=1x*||Is0l7Dd#0y(l6qBCK*^$Y(kLPTkD9_^j49^BwYBFM0dsKWd#` zo!&Sv0b3dmZA6FM^#;;Z=*<(2(SxLJNty*{H<2BI|7fhd-d^+; zDkoKX@V1l|c+3s?0uOu*F?!H$c&=BG4#NNNi13O7y_gOt928p4;Q7K+=CG?~CVAE5 zs)(2fJ=(OJ_zuEgI%YQA9yMFBW*CFNd#8yCJzjMLG`u0YcG` zA}8E7nHC?K5G{(p?qiHbnkf|23r-+EC2&}z#(xow(wsdSMAnG{34#$7SFq>aHGvsR~-CY#n%|fP{={23xI(HoM zqoy5@|EP6--+YtrLnmTxEsBWCjKf|VCnYhNHm7Gu%oaaCP#u&1a9@B8ye3)UM9dXW z5#Dszuw5cV!&bz9A0m)amV!}kC)_rZ*7>4{%(_f34EFZo&&n#(I_CRdMhTCSz-z7t+vM?>z)^|$*2!wj^5Dbd)(EZndihO~_>UGr|J>wj+=-a^ zMG^3^24*_R%S_sK>CejQ^F{mzV$v|nWG{wUOnQp&W?-sa`m-YbTSY*Ysz?X=b zMG=YliS>ts+-*^N^=DW+)eQNF3pA~OSlL6vC2P!r-7S7zv z^qd{a80;?b#%*ak_GiUg(`117F9PL_FIg;#NGZ`cLLxfei!&_Rw?8YfHO+*H{~}7B zZIjnr6yePo7I}T!vp*}bHO+*H{|c1g@y3H$SM;D1iz2)^!ve;I?Zrq6pxVbJ@n7AJ z-mJR8q#LH*Qym8Of5&T)HThlm( z_^*kNH>>XP2*Bc&&aepmxKju5XQkPi29d;nJ#b1#d*L+~qcI*FTHV1HdFnMW;)(xy z;J|CHH_oPl_S>Bc7|b~6RlkG86aNhw8bgK7x!39%I+Q;vgVxl%Mf}%{0z084(rcK(P}|2iT^<%;sOQz zy*PWw`J>U1{aNwGG8rKLn*<7C5z!IeoIU5{5ul|G<{K1}#D7b0NoS898uCN*obbPc z`?Iptn#6yra6#UiZSwXW0prc}HY(fhlhFI$Y7^sNFK@i&T73k_pOw|7ggo)z256X9 zvPw=50`P&=qf$4yG_f7@*z*(uVSGkJ|40rF>My9JSu`0oV0jOq-y zv^C~usPB?LD<>^T{C9#L(w2_#Vw=3)Lqz_p95x^E-ywk5CSNNEnw%cQC_E@SuSf^fK>T;!=mi5>XI-c(hs!&!ew)@n{CC)VozpwF*1mv- zISpO%yErU=2TxA?cSwNp{k=FoRj)TCc@U+Me+NxS{C5BzORq|Aniulpv-QX?$KwcZ zCspX+X^H=~2@nw#;fMJz_@;>J9A&!}9XuiN-!=ifIW^e$huM z)lUQ&!uA>wsfhpfple;TSN#Z(A#AT5iT^fmORsKyvse8HkRfcNDT)79L4(;_IXUEK zb*bqcG=>aet4#@c;=fhU{A2d2p9nI9t+pod-x6ZJGJDnhCqvj$YeJa#ZwWEKnZ4>q zfDB#l z#D8M~ghz$@bGBE_c6AIH!p4n@yTpHEi2OX;t0ufUh74ij_9gxs;L|y+bM36w@ol1J zvb`8Ggbmskw}}4+__Rf{SN)ifA#BjZ#D6_-+OFBFegw!6)@xXsB15!U^{?&?m9>oH^qtJ|9RufQa|GQDZ8M=q`SS-mNxDGhVII98YpVMTKj z|3yF~vv-n5dwZ*=R!7C{@mqz{8(n|ls}+(VEH*d7#D5VG&t`jZYD`u`mY8*1S{xa| zA|T#`iT@mD=_CuUW_w{`sQuRF_s>_qv0aZLLzuTX0>poghG%9k{G})4B=CHBAR^i$ zhoWQ%bIghVG8A5#y*Mv}%p*>Bgb zUG5cj`;Hwu#*G`NNf;ZEo|(N3hc={?q*yIsT18spyhhEJw!4vS%MgC&op(aU);6Gc z;lhPhiKHoyu6W(dI(Lbrr>%Hcv1S>9MwX8DVo^}rGK7i$L1|+~z%#SAW?D^5ml!ie zQp?0;#MRHL*L$p7jBi7RF!5i_6RR=anZ5Iy9C~BMWU-4pH&E493}NEGRkkbSy)=6< znHv@!rYL}=%g9cV)l;escbl(9z4lwVdB3?3`=3p%wCM!VeZ-0r=(6;L1au_SMK`U5GMX>ki$fjXJ#+9@y2Jyn<$ZGk-R=0Eei6pAx!+Y z%p1nMGTd6{QF1Yfv?$1vqv!o>2owKBN|+3njV*JfZxB=o+@~09?=o3h1F?+C z3~v?%`PL97{u|Ik^Ok33FML>~m8WTz!Nth3F&;h3{xpP%|CYGqrP*6Ds>D*+>38#D7b)@yzV4nNbs)5^Je!wuK7^d2|@D4-H}Bzj@ktY4+y!$~9jw zhmz58(Qu#W{0$#egAWa1;=g(FcxLui99R(^VPSih`6}p1Vp(ZW_PQeAH$#~CuSW?* zymw~roCdftSL7b*OKDNicrO+O;UV&sAx!)?LoF}O-lCyJW{TvxOmeYDi-LS*2owL! z5Xm#M7u<-Bk2X`JP{@>wC~>8e6I6+R3}NDbP$GF|_DXKd8~1W!9<*%k3Up5KXcx18 z3}NDbPzrfALsT}dOzp-zXz|Ut;f>dHKN!Nqe*&D!m zgdw>V=H0%wRyTx+|9TYi&g`Anm|h*kjk#VSLlmEwlL!;lmG7Fdl2$i_*Q{ByzN7vw zyX>;s+FCsd;S|yQe)%5!m($aaho@xKWqD9{WRcN5L$3)ao)91e2mwNX5Fi8y0YZQf zAOr{jLVyq;1PB2_fDj-A2mwNX5Fi8y0YZQfAOr{jLVyq;1PB2_fDj-A2mwNX5Fi8y z0YZQfAOr{jLVyq;1PB3>2&AN>3>q|O&YU?XoN&VO<;#~YU3%0}M@^hK5t~OMB7C!J z&tzr%Bvw&T@jqw3GtWHJvkK{zcI?=(24#qhjNH9@w_Yu)tE&ytw(hOs;^Nh-SHJq| zt9pe;{7*mqbpQSL&zLbII=a=oHgS~n8t8!s9^f**3g{Ks0C2@E|MP$T{P~J9iC4?Zwp zjt}{N@WBUv|NZv{Wj46Ab?esb>}-4RI!~q7K*WFN*g}IIyaxPVym+wzTX4&7{72v3 zxWGa0{^vjcDJk*d;1YG4>NODYUyYTG7(ICP_#YP+_xb0a8xzJ?{6GBg!;MR8@-BR; zWMs6$rhdH!BL3T8yE=&;yn6gU_0&^?62?FLZ)|M*{rBJX3jEt|zroI3vSi8Z*|YJO zoOj-NZ@lq_o-pDceDFavfT51jYoIpA|3@EvG|SvCK0YKz18cUF9=w|TPfAMq=9_N} z7$V>D3IE}Cb?45VdZh(_a&t9~<2mS{gZ}&9|LUchI(4chjG>FvYoIpAe}5KO4_;0F zpLNz*dc+XpeZv1qlO~C!62lueZZsIxsj8~_^2;wpc^-c2t+xykhT`XDQ$7@tdJUvmFh%5Z&pkI{#E4Lo%0Q=+ z0;Bw1VvAbnl~&~ct+(E)0QQL|oNHR{7{n&!-fqr-^!RB(^PWw z(MOwC;!x5do#gW0dFP#;E$VhyV88MIzWeS|aA5Q1&2pRing4ooSn`u=l9RXHcAKK^ z^5uyqo@i2ob1{c>;^l`$;Jh$qG&n4!O#3}_wRo!XT>fC z{=;?*Y+Fz?mU#Kyci*L@rI{hHLz(u(|1Dd#h!`S_u?3EgpZVYJ`~T|U6!dV=yLn`4Q zp$q8o|KW!p#s?_qFDfc3bY)X()+;T>e=vHc;Q#g4UoUF#GygBS_KFtF{;|6Cy$86g2sdSuk}Yx*ns)DD(TjuyM)tQt2twE3F9N zx8HsXZ&7LuKIgyj{x8h!=HzIcQI4lZZ|)43z>kC)hmgkTHITYH4W~?4?SmNsvF*fg zn;8E@fw9dnq>zfr_23n8JMFa7#3VfIbN-{8#`}My`lLE^RvQPT|@OWnY-e_C=m)TWRR0Q|J27@GM0!(&b)%W!2(@oA4 zYx35uNb_`p{foWHFyXPr14eyiWu;qXAU*95f#l@mfddC(Cl?HyWy_YqMu7kS2@@vN z)YN#kRiyo)N;M(`2mwNX5Fi8y0YZQfAOr{jLVyq;1PB2_fDj-A2mwNX5Fi8y0YZQf zAOr{jLVyq;1PB2_fDj-A2mwNX5Fi8y0YZQfAOr{jLVyq;1PB2_fDj-A2mwNX5Fi8y z0YZQfAOr{jLVyq;1PB2_fDj-A2mwNX5Fi8y0YZQfAOr{jLVyrxYY0@Jz$>Ie<1Cmk z)_nBV6H)~I2mwNX5Fi8y0YZQfAOr{jA0rSO8;diTwrtsglcawC{r68k`Q)jmo;vc# zBXLlpSn9O2w3RDY?%cWayYIe(7(AKdY_f6V#)&crFIu!nc9MU?4L2xm$(J~$Sr&jt zYdMA|*|B4XI?2|pTV?qrOO`0^_UhG3zV*WoKXmTgnd=d=&dbaD_19lzF&sBwoTHOE zYG$M;u=*0-f5(3T1O!uU*2)Y9ikh2O%TLQm-?p!&eXP$XR z)PwL@XPqVAy6L8yaH*N~6<1uri*1a*!#Zkaq$sfB5{G8K|Ni@O@&5etPuVR$V8>}h z@YT=p$1#*&ef5WWW3FyLr9VuV2qKt3lX*|NU32STS+pL|Miv{&);! z0{`{bUr>${Pxudqy~<_4v64`(&bqL$5RWP^rvd&B>!_Czheb1h0}bV}p=$7TFUsIa z?9ro#9COJfm&jshg|1z@a{;#^ue zBh9~{gzS)Cku?%td+oJi5(E65)X^X#856y~@4fe)T)bkda(4&A)iAc@=P`t)>hjaSQ|(!<$4Q#*a|vpF9Qr zIMkRYfA-mDk=y`(E-44T{`za2v4SKqF)`nK^9>^LoMvZd%Vpq4wDj!RQ;tz&jgJD7 zfFU^BOIE0dzr#8jWF!|%^KU^xfm|y5?bD}^rVJuQG4wYSV)$gpO7J<5Z;2q3mX`kg z_umje>&Rktb#>Q;|Y~D;1Cd8R#jEWmpE3H7fH;zyu2J=G{`Jnx^(Q= zv9hop{!Z#>oDnaZI^Y5S*Q{BCilajd0?Y3@bP^2km;0YMP7BBKe)!>sGH9DNZ9?G( z4H_h3xN6lZ`4V4tUNsT_TW`G;0ywBTK0ZDu{!aLBoDnaZW&o!~%C*3EN>f0N#36&S z7{1q{SX^8jUJ>#wehMcC0gs0KbvWaUGmz?(Q%->-I_fvxc%z(z_pf*ovH#EemM^{Z z5|X1)v~Gx^(Q-MV#hW$_ZmA#q$4fR*F%q~jYT$8!*H{xa_377P>Ig2LZ^`wcNL-{e%r z_;1{}Q5KWG8qje5`RB_qH{X1-96M zO@MA5Fu_?%2%yW&@j;)H8(#=qc;SUGMK^EWEa#5D=)7^|3J~tS_g;QWepGoXuAe87 z`#*S;0KWX;fG|!&lQq=W*YmV;06itH909IJzI*Jk$I5rj;P0f41{sOP(+roDmF?QK zOHnWRlH-Gfy?gim{PWK>#ek}K3Z4Q49D&F4?ccw@sDbNOBoSp`n}Z}=gLwQpo-905 z{1yVD9(;88!K`NRM{;|0G|osYo?aN`M1LC{MSQK$Va7}5>8GE@n^SShA&lkIPe1*I z7hb?Y?Rb-*!;C)9m@#7%YDEyrpWVC4WTZ27376 zhxh0Wgv6}nZjvlu5`PHWsH1U4iW1T#AwUQa0)zk|KnM^5ga9Ex2oM565y12c23ySk znwpw|>Qo4H$?H-vzQWRf-3E43C~!!l?l=OcCE;DA9`F`KEW zQyp0{vZQH2lcoPs%Tv{QY{!(2F13_9gsTs#j_ed^J4cfVy}`e8TIc#X^_CE*KDatE z)}897cTcyJHG~`IH6|DD8J;o;rVTM~@JGRN_Q|mdLcxFn8#PiSiHwOvQ(Dcsa8RK_ zPlzr(!#_MSy!(XimT+jC+lX(6!;0tk%eRy%glnhOMkho&%-3Xc&+tcilDZ|~xweD` znk+1GuYp#R^^(Q#*=?BHU@1okr&p$1%EgJWm-wTcc&@FYk<&ZJb_L7FmRrrPWJHPW z>}(|T7=Jw1H8W}~VS*2L=X7bd(dsXwI>S;%5U!tH-#OJzURKM-_S@1!L%=%2LEn7LMG9o&{ zb!^QjY%Tmzwv^J8ruo(eg=(hO7>~(B$4A#rueF4KFNdx>lzo4mj zc=OU?&(Kz9)av-7NQpU#=zd#5ui=mejIHtNNbj*3*4|@y@5LrHZ-e4`ybt&Rf7H65 zpJj6uMl>Ik=r+XiXE&?Xnn4|+rtt~>7_OVsEY5dpb&*rz(4q-nl`5CYYw(N$cdTIkV0xn zxv%h#O^dZUO>gy)={~W0ctp4*h(aptEBsMY8`JdWn*bBatvJ-6*^Yk0ALIl@%|mKQ z5_9pIAhcqn-|z<%NkvH*6SD-Y8R4p_RmNj?tOt6sh#QHo{x--pZSlm zWxT-6vt3itw>^LV<8Na)THOTF@}5HN^%4%BO;?ipmj50zmXIG8Cw0t_jk3$eX#NU3AT)#y2o z!P3Mo`A&CJy8d?Z8~!O}mKQ~vZyKzW@Y{#jSNOaB*;O}9*B<`*5c>*$tm;%F=5CDN zKE(dPU-A)QaZ?zY#>V#QqM@etF}eP#*Hq{q{IT)bD%D}zW;bM8T{7e=i`Xal+p~6M zCg=9D{MPDzV0WK z@bKf44{@vG4}S|b2AQ$dNbv%(v8NuJ^)$bUUPiV${x+;#X&I+#3tmD_g4Inlez1sJ z7k_)7T|K{81^q2=q6yuH_~n;h#wlh&e|paU^<41bScjlGA#l}IR|S2F?R|D@rq$@} z7?oDdS=@ZB_>KfEvv~ol!0G{RFaDNWZV6gcd!Jq7#Z)$Svtr|3D2Aqej=#M@=F%~x ze9xU``-Vk?VRx|AzGx^u#6HKrc%Hkrr#YH%IJG{Ox^qi-%cu)FAnHvhMcQ#W`Ys;%{S+xpr2qJkDl@_M!~j zs9OCBxM&gk5P!TwY&MSFm5Z0tD+eb~So?2eX>@0IJhNp~WmwC4bZOa`GOP#C!nCaP76%ss)0^h$wMYV&M7bpHE4#wr)YrRMf2b{;}u1TvRLbKQAv2eL|G^k3asv zYnd0`IsRXK@dekW`Ffc?eL5Go@4owjqOBGXtHV_(0{7l~uR3ASn4p?VO6;7HDXNw6 zzx?vc&rQ^28HQ)XG$>bo+;PXLb2p9=@mFXzPH22rRQud> z&w=(RBpv~L1(48P{HIKr!V&oN(@&F<_VNJ*(+oWpSpXeT%@2feU2s>djsm48o_K=i zK6mcipsExC2AUO;mM%rLym*&gcA2ciUHl^=BHn!SO`gjOFT4QEkrCoC^7F|jpYU5Z z-E@W_x~08AAR&ulbDNQqGn!HF>uZ~=ZNwq!)mpc zTyhCd>pK3>49;W6mRNEzjJHHahJD}2>gtHf5q|a6SM81O1=Z{d{xEwn@)J`0p&XAY z-oWUGW6TFR{_w*Ocvs+^GkWxBp0&MzCQ5h^zWVAb*pkN_bBw)F8WcuTv)H(<;D7PO z7mF1S1^-3;6ea`+0YZQfAOr{jLVyq;1PB2_fDj-A2mwNX5Fi8yfwqG{1&Uga|L5TU zFeZ88#7|t7ChVKW^bbq!mdvmVm0_tX`{08QSVT+&ll){A4J%@pvSHHtJnR!?m=I)J zwrpW5SFU8z2x?|sCYv#11}iKqWZ0d~u(E?4fBf;RSFc{IYEl)eno`9i_dPe>cq4=V zF^1K~46BS;;h;kH&_fR~xaDKgN+kFRWiP(?B9pvHNaOyPA!M62ZDKKrF|4t%kzwSP zJ^AF5Z1w8ZY}BYx48AH@LP7$QPH=nUjW?JykBu=>_RTlnu<9w*EPvm8wtf3{hNYuS zI${P6N!f%66PPrlFP*WCLtGga-!jYuv%?QRoTZkhGWgzQnDb$eJ@yzII&>)O)TtB0 z_DuHgfB&0dEe7k9*ol=NP|p7Q-~Y0^?z)RfPBx|aTdd<{(i9iGud#xD1q`Fu?9@|F zWdjBbkY?1FmkkJ;_F-_D{FqM78h3Ui!n3kg}*#;y#j z16X`kJUi*6lNb)WV71d~8Mf)N^z?MLaN$CRfpR8I-MsS3D=a@hpOuX(V_4b6jy?8R zw$DEMFlqc*I>#Nmx|uY!ilvt9`s=S}@VUXH`OfdZ|DNsKxsy$vJef&j{BZ2R;Cq7A z*VnU*$_$oKlfkg$hm9C9f|ZXeXRp8hI+Iq3R8FX5ahY)pL+GqepFRve(imon*##F| zz{ZasFAa=KWMi0AVaY|w?6AWQWAF>bu)CjOa!VTQXKCHjSadw+zyD@&sc}r2%)oRjD=jT$-+uco!{P#V z^2sL$9!dJ6LZD069y4FByJ7j#nnlCz?)L9{7h#dsy}9h6jkqknc+tHrw~Cu5NZ#GO z-z6*luXygDH4hEDyq7GWUOBWfcG0kB^B~`R3t>5{fm`rz%xKoMA#qsPs1xs9wCkwT zp5Bpi)sc&a-TMsWn{Od3%OAFMTI95Yjyd_Yr(*XnC_4`2nVYt(DxrWa${UvqdHI$U zmgPsB(j%(--16nOoxNy7->V_NE57*EMH?E~qFt*bdHI$UmgPP9dp};v#~;5=&g*%+ zMOUwGURi*sM+4WZ-w;ZYfrZx_HjI;FvS-BMSNLSh{ez{;xWgZ8xyHYH$+P|efnzU~ z1^NW8;`Um_x3~Q4eFGw^1M)9q1}>VvSH@_YH)brIqDjcaIGS zN$c{)ToDLf!$kuDg??7QG9ZOA|1%Jnv$wdSzPNc&KX(5J)tAZ(&@iVURPrwe?qfX-_p z0tptjWS}80KT|o)FOUNQ^1RAZ&~Fldv)E-=@rvJz%^LfiAGj2%+>(_~{_Q(|`OXx% zEQfAb)l#TK(Im~U{6jaS+&a0T<;JE%y4Kv*t3|%-@w;1smk&RoC73dP1DC&Z*R5>X z25G$(W0KNGrZxw+KD{^)LhO0ZP2lpS|6uH~4O5zhR-L|~ra8D_!`c@48`t;d@_XxF zwRpqr&GHA1=++`XA$={Ef9tHSZ{EghwzYc0h0XGp4}Z8te)6q* zVC5x~e27Z6;<|O~0`_8yt%#+9EVDL~VMQ8~d>2W!qGTgpef8C>xVSiABVsoRTeD^j z>r&7qU@J-o5WM%^djWf~;gAL}B_zefHS_+b=#7?KK%=2RM~(^XAO~ zn@_U$BwJ6i=hCaw12&yx&t=tT1?)M=mTR%sBwKCJpg{rq?4_4pV%SK;B=6jk`!;F2 z8&2?4*<>}-YsfBZdDzn@tN#{)r?^~SO&~iT&-@=*QI|Xzd z6xmdKQTnlE-HPikZqZ-g{B;Zh>TrxQ9V*GB9d*=E`v!zhxDvq@UtgDD)L^6(ec%{$ znF1>$7a=fjWk8fMexDtO=;?hJTUHwv*Y(`y+rs@L^C2*T9k~SmG#iBw+LNBmzc4Ot z_WUz(dwHM}7*HYHXQ$#;GJ1NmlUlUzm7X0v9Rm1CFZh<9n4X;$xP7H~?&@CmnN+s8 z<_?OiVXynk`bqaM9owQD|BCl}6-l?_;tF)`55zsG<9Wd3Jpw}dx+>focntm=(|mu; z;>DG~zZ#=eQH*8c&VsRdUGYzIM|T2lHveMT!6;n6gPDv{MnHpjf9wLJlX}ZXOXlC% zf%_})T5A4{KLm}Q5?FbDK0-%G8!#OIR*gJd-s&(|K7C^F{!>e#bnv*tP7LVoRMPvz zz)qyW>z6i4H=4z|q$=-URerp5|GYuRO8-ndN4~#D|N5ar4o^8_fznl<3AxReIuoD@8rVdz_(Iz)+ddbOXHx@n5r}u3+Jy4-WLPo=+YRn)MqIl zUmoa-NMnrBxOHHB9b=@}p&b}+l*X6g`!6tFn_89{_|8gWy;5IB8WY93=D>KhG$t-N z@Q}WWwA3G{=c@%_Pr2M6X1q<)mtZ;{5j(<;*f{RnAH7boyA zSZ&g_2X^kc=d$b`*$le@S>5!yz}Uak50QM>;|XGt&xMtmz@2_4jSHa&9V~H z@)GxvQU~s{xXQ|&nFID*vmS|wRnleieKs*M@c`j^Qet>bb~i-S7YwTlONhx#j3`W$ z`V~X*v?ZtHB_^?)zKMeaDfara?}$<+4K-90F*bfEW4R>(^b diff --git a/companion/src/icon.png b/companion/src/icon.png index 010b78b9c1293180c1ce83dc65a8ecec7f86134d..6ceee4f23b88df1ab9671286b2772554ea86e7ad 100644 GIT binary patch literal 6350 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 QuK)l507*qoM6N<$f&(I7H2?qr literal 3732 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 diff --git a/companion/src/images/iconmac.icns b/companion/src/images/iconmac.icns index 0c1a1326e2c0eb7148ecc0da84f5188f54014a96..0e20c9fe35f339b75d8af931c057bb8e2045d53a 100644 GIT binary patch literal 165687 zcmeFa1z43$_dYs1=@g|E5CkNo%RmIX1I0$^61!tl(jXYv*e#f^{o38#Vqk!Uh4h?z zp1noc@B97E|6Kobu5+&QA?l82o;7RMteADrnumy>agzu?**#*CvlAf#^?5|efDlDx zLX?yVkIyG$SfV9~*(4xKIuqx0T?iSTU`axH5|ZDIwAnO*5H(W;RaKsVr=>+iN{WOO z)V+B_a}_-d39qHICLyVJYku6CM4UZUwY;ne;S>GZA^{;yJZ$XTRM7=7ta~mZJYwPI zW{j74Xi$d+JYwMHs*M-fXQJrj#@ww^=UR!$U=(oikj6ji?=ytH-i5%N&;SSY_ zf%s1oyeO*UKc5cmy!=LWZ`-M-PtR_?0;TA&iHlaI$E-|SHg{ImLJ?`Ir>~@45HuA|5Ur3-cAtMr6ke;D>Uq^v5B(Qj8+PGEekU;iA zA!(+k*H8k=f9e2FI^x(3JhHSCab4%fK3kBm?u4xAOdK~4`y~MZ4-)wQoDL{39gs?( z8+4#k&u*RgD$zll1f)8UE0CAKB#)RVLU@Ywzx+=`H1i6|r^FBjpYVAJP`*^c=kxH6 z&u=P-Cp;z11i}-E*_Ajlf=2{vZ*Eh7k!qYhI)m_qWXh>rH6kQKmujzpA_+*qVX`Nf zh=|^W$yW(pb1wuDTpvx7_X*kcVFyWJD86q}w6!g}f6;DOoRExPa^{hQ81aZ`%k@HK zv};x%hN25e>ZLp*G#@v^q3C(u6N2*0^+uh=e?Jr04GB>?CpKIVmRnaaTN1 z=Cwwr&Q9(IgqQfol{g~c5p@@dGvC!lF#nGWiA2H5)yc_CkMRDa6i1X;dr)$848nkY3UmQ`haC3Br9Iag) z8Q<|lA9ARvp%*Yv9%|J$p3Ub{1G{yMv%IXmy<6M=wCJ~U)*!HVFVi5c-rNP60;ys@k1 z&mXyKM?iAaKBx}i8F*Qd_Btv$q?wK;X~EYtRae!~B~Gn~fk-!w7)V)#HK8fSjMmS|gLc%o>&dv_@EqaKp{bV%)2B?#MJqflNDln?12ms7#p4RIMtyh)W{m=6GjlW$D5>z&m^CVK)+i7w@`MtEdd?n& z5F2`w*<*>dQSi`_{wi$9rh&tT4~3TfX^%r=LdSQ&z=Q#K;||eq7whe@c|>qXggzlo zF=HbF(DOg+(KjY2Y9LVy3JZ=h{iTOeRbz5i8yglp&br;Wpy+PwqCo?b;z`XC(bcJ5dkB^+33NWUcH-P!_o=~4T;pT9v2ij z2;3PoxYi>&D5gE(4~zX7*q3eQ!g>)Uv?&t8AuqNzgI$Rg=EYg^4BO_*L%6i zgW2Yaot-!vS#;?(gv=ufJFah6fV_-$z-OonN%r~0dT2gnVp}fi{I*VI6<8;3fOT@Q zQfi%zvGTtxR>};rL9FDnSn1G$II8p1cj2W9LYQ?A_7n0*}B(Gi)xGr&i;I3^$lExP@d*mCmZN=-Lt;%Ah25G_5GF4-- z(#4#o|DWv|s zG(Q1hUjmxtG;tp4JNjezX<*kK;+$Sw%U{7=@`&a>u1GK7YOx=G(=(pk#18xbI) zBLG)K6Y_i!b9zFO_}=o`1!D!$0lAw=0WbKtJBMEu7MB08fExU#_B)iq0 zu32j?eVczQs-m_l5yTN~KH2lmc?#_!Whc29LyjY2Aql9n&^5vWRY+D}BPVDl))+(8 zJy!F5G8-zIOgM@JBaY|@NMBk;H%ciiIzybRdLTgfL z#Z~kSz)WP&LN1S$V4%oaot@l}hT<-+nWQ$Js?^oivbMkz-O*ajMFrfF=E%OCT^vLS z_5EtGe)&XT$C6YxOSDmr18ujaEK{&V?$F7{*E1BTKrKD*?%UB1Y6t1Ku~Z#x0COUp zceP4Gsz993s)p_*f+V8MzDGxVO*eEdU`cfn(c}pPA`FAI+DF6!0YpTU;+$2S+)S;x z?lFec29zLsq{D0gJXeMRfc5kS4d!F1Y3Gv2IBrIG@@(K{Z8xWQXTFoGb!LP6QV1U` z#)CD8w;{_X_bi=J!@ zs$#}W1v=tLtEwyLE@tsC$`)>pPL8hD@lq*BoP>_9u#Y67^@lRCt~5Q}Bqz&PI?vktC=;b5;V<|9kYbmM^oCKa2N%A{)PpA5T5DksPJ= zSRKMTZG#_fbpbL#JbNY06dGYggxzw2C`#v>*E2sxf%zc`btc zl{!5?m`-Qy`NX{V&JE)=uU{7OpLQF+8vzTas+rGBAeM;JBC|$IeVXOFdN%_06 zWu1SuuL&mP)dFdI2`#(AMO$FWG=Gh$^wtdrV=HR7h=uTWu-I|NuV|a`j8jL%u8~zH zdWKwhTYrI^r5$A9&EQ1MxA9C{(PYX2=qwlB1|qxxz+twJ_;{kg?>>A8KKRPV zx!$p15#iAz#GF&Hi4B)T2%-T)OX}mCIv3{{!V?k{17HZAL}@fos-Wl&{~qTA#4RRR z5~>k~Fu)^iV}e6N!bfAz4?V~tthO}LiH1dhY7|@s(Fv1;3WH;8{-;paGMWKkF|7&d zfp;NM{TsSY&i!_0SHc5@Ceb01PyvIg{w>%^m~v~Qg-S@Y&j8?R!7<+Q-aL_L@rXN^ z2eKBWVUC`p-b$PpK9z;%2mAKW&KQf#%t#t|PX2nUx9;~qjOFzfhG zA=o4QhH;9!(JGP+FC=1+s3BF(`c%e*hs1%QSZotEqzf33M>=t1V)ut*kFX)fi3FzK zJQ8vaiDZM08X(6Rq$wPN>mkv81Mw0Z1B-1almzTE5La%}1BETvlyPXLd}v|=j0;r@ ziMAx9Ycy0Ox)GdN5-{r`xDx;$dV1{D^h$u!QH>wF9rI$WHq zUkf1~DviRZf@9inS}YjMjiB>C;~_#@hp4f^L6QBTv?@#@LBaTB%CrfNhDmCVG4@bS061ulk_KnznGTwX?Ipd4}xOgnS8PRzP&Cad@ymIOXeL&)+F8H zh$z8CB}r>ub8*huP%slC~zFFSICb zQDn2~>WH76$5DrM=~73zV-X<(o)YrBSHb6`+t2mxNv@>ZpIyG3+(l3{y%+8M$cHRn z9`*6)88{E-=$7vz#OH&W#z*htb7|7G*0(OrCJTPvd#U}n)BOsAC+@d`$kF&YD7%xbfAiZNe9BQ!O94-0>l5FGracjlFB#t;*oJt^d~>Z&Xvakk_Ek1x20y zo&uha4^QBrjG(A$sYz536fIk}R^{6%*sBq%{@SF4IWfUH5IaOnhS=Va4~p>5|F;B1 z0IgikC-@`hV~HS3@I+Y4|05>q9;kdjhKq>;GOp~yNlWRpbh&c%)d&_T1Z3t4qW`z8 zEG8a!(>4Vgf?Np6eQovNsPt_R9UBHCWb$50W1G-+vKXgX7fARe$+Bn6!N$ zUAPGHVC`4_cr*4Z!WJh>t-6tf_byf1KADzXt zoL?b&(W756F}Sk1z5y2#x1A=JsD~^j8lA5B8qJ0(7LeKdq%o0&+cLUb+TofbqI_Wi+C?p!ICu&Iy6&IcvOZ=NFIVx$tH7vs+@CFiLH`F6^*xWx<04HrjMcAP|QH(@Qs{NUbf zLINHU^0MpRPl@-RHhVbdMxyiSRg1{|hudzN-jD9^v>jQqDE7nQv$JL1s*sQ_rHVSA z+Mk+B6Rug^yD*b1`SIXclP4XYelvLLdT%5-IXiywI698C=M$Tf+gJ3ry?nhv;g$0= z%O_6v+Y`;=VdgJJ-)q_Tr~XUJVP9_+D`l@GrL$y#t=Rx~KHs+^Y7?*r-bTezgQz(R ziIrJvWdQ=4Drwzciy8;9R0fkp{5N}y2!jS~28lt9E}wz=E+Z-PIx{s-_4k5>Um6%Za)T!Mw{ zzc@Z$DCFnhi)3Lo)~@&v&z7-B`N9v0zC|RdfUqE?}ER z?P*PIbzav_314U>jUa+_>^Ty(5=wXb3`uxTs~Ap^Ml=|~T6*``sgozp?gnVaaW|J% zSAz#3X<1cEM>2xI;CJDkQH*7;pOijOU`=HdGl&A|hh8QUVHy^;j72(#jR^wNm&``IS_xkl*76&?n^3&vbu%>6-r}zg88V!jMvoCx$N$Lr}myd4`V*zEIE}}?EF+e|c;*SR ze$o1^B=ns+ArnAEMn+3OdSPVW=Q!Aey}|U&Vd8=LGAh|b5tu9fmugyws#`}tM!P57BkW|EYW zdCLsSu>wqhOfE8Jel9mxb@VVW;|xXwRt{#^MNSJ6sIZ#Olu?)m$zbRx_5k;wu#l+o zNxMx&-^t?-$dgADbJlDPAgDos@w?Xjtcd?9{6?qBD9oajFF^t4o$l1o;f#U` zOBcoZMkrt4^9r!FYn)`nYp#xMH}&R5`T+N!QCh~v%6X76FhXodEhG{l;U8u0awRZp z0CRguGTc`dbBusVxv!*tH4{WP30Qq_7H=`h=25bM@bgX{Sa(S2z^M$zM>8w)bPJxj z0uu(&wqzeHm2wFGCaqmZ6>BK={CGskHQi0<>IsY;SA-7kX>NR1Ps?1wzecOp)hJie z=l&$axhLhn;l(}LIRhJA528^KZ8>o+|%b+QB(8!al z`kbc-zAzq36nj{@Ii+%ATiSpiS6_moA6(};+_ngJZi5>Snx6Xke*Q<^haVY~_vOR< zkHXT*eGFOuHL^CML_|;f`jJ5i)wJeo3Uv_cs#BPQ>?&+BUz4Y$n#^`jG$9TQ5}U&k zHV{;8NM~#V5emsP*&Wz`UML$TCW@7(NZ3eZ<6MdgBcX^)mo;ujgeizg+(?yC>IGB?PzL^qkl%u$qQRMVc z?Bv#x=>8hfX1R7K>f-ofBhs;RVH$`@lkavZ8%U-z!F8sFTjhx4$=F}Plv)1bGLGeC zG8Nk*ck5DitCp+NQqDpUvJECQr(gJmD3LsU?gdiydh?;66#c`D{@m}Us;N<+n$BWLpv_&;p|E zLFD43V$Cd(D9iVh$0<>ovxqrP4bCOITFN)#j1aS)3bRIG8ez3&oWWuqlp`jzAgimtR1-7hM-%?x8;&SRc?;#kP%5&Bdj(MR^6a`5W&2|9N5Z&W88>~ z1*i{%>uAsvOHgQ(ObRe+ENo!nTm)`OcyI^o>|13@EyB1L5nvT2c3?W0bvNp!owxaRp1T=p=#U*zMF#xGzDbLvnwgrh1c$(s5l*`mu%9l`8K93OIFIT z7FyZCR*oWgqM{C>&A>{K{XD@EP=M7WD;4BRSlJ*`aDf1o4}6rbB03be&E+8u1r%585u`otufkm)nYG))XFjEy*59qXnXo?)X*zS3&z5@sLb4O|bo0`>aUfd=2K%A&8-%F8 zrNtfEPXAs*eTW$OcWpJ@&4g%DiBxh5LHz<7=sq@3vWnKe9A@o%n$o*UMDYbuqh*A& zoCdQfk6KODSsS^JrCFoeLp=y=4`M<`V!luyB%L4zWQ+

l?2*iihl+(}6q@D7}dX6EpFLc{5N>d>SbXxYEKIh}3bfhk*te|^9Q-MsT zsIX9ZPQQJjKTI6CPJxji^?OdgH-|ltP$3ybAqM1W$VBO7g0k2fhv?TPtLU>rTGfhZ zzN7C(k6jDYz@3nplnxVppwCnZF)62e;wfDSb(8k$N~TZ>FOIQxXZVV85xo&Z>0u9U zQn_B0UeIr-J&}->LN+gmmgv=)(kp~qqnG+ny6z>-oJ;GRh$fH;PL=YJ#NMQDbjV6d z{kdL`lZ*7n-kSPer&BtQ>$M9yW4%5n8))smuS~$1B=#l+<7~rOOnR^eBA$p0q;x+K zKcY8zR{>K|%UKkM6SUAJr4^4SLE|wIpDvt#T!->#Vp@*W(y_d*uDV{lV<_DOd`wKj znXRdyOJS3jEam6s6pFl-W#+*A>{0Xoh5iJX$0r38D2wJRdYwejA4rSlFdKrJ75jRc zix4s}Lcj#hb@YchF)K%+3VBxj>eHFnRnw0~%om)Xz|+uYkqQ~WfHJ8b2{5{<+UYuK zO@k*8vX0VQI47S)Ykyc0z0WvTp!0?zi=RM&p=mSah1)@`sMZ_$W$UKRYwu8C59a0c z1kCj`%%a|6{(?r@DjTe#v{a8Mp;HAO23Ns4%^>4>Q2i?UrMQgYEGFfF1A!{znsO%%!BR9`mN;e+Tsz$fMq^vo61Wb7QG1*yR>MV#z_t zS<$f#lTif6eW5!dAbzMIU_>93zXJHS8ye6O^N2)k@W249;5p!XP7QMsz_oKwD#-!g zP0OTcXr3Yi+F-~&6bEobwe$s&XAW9Rr}U{IGe?FJ50D{r>GjAr(kBl2)_Gr#e6M4x z6fr}2t2pGlmOlSQECtB-IYrE%Gfbi%5disS&ab+zVnJu$v>ymS!(_;}&Sy&3`vjzv zq1QGHxdrkK-ssK0fqb9e3UlPROJfGT5^>B4?fNr<+C0RZ8gL4hyTDgng(h%VFrzpP z!DkeD31*lb@JJurd1T;TXz7H1U&$i6`o-27d>Xfl?+{kLSorbNdwuvK)$8CiO52TWhna&STLd( z-8MfnBO?nDfJ3U&Xx(SvsrLl7^%R-SNtYCuY$gK^&y-QTv~bIPd{qW7$RXd{+zQz< zRHVo^?D^&paFK2H2fa|xL#;h?0uH!&HseObaVSH+C&-ZRf1&o0WMMvLeW5b>Ne2nU zl#Q1Sos+wa8mEX)hBEz;jdpWV9bxygX}b3il3TBJlgs_JT`W6dR+SeaFOGc|E3|FuB^+*>*o zzj5z|Dng6Id!@Uo}ayi^v=RFH(QrsH~QCBX-y@S}SK*v%sDluf+o&{Uj6UgAXJga5E zcOlX#4)}(ZGsQp>!Wj_+T#3e zJ!QzZH!YVU-yt#*^J(=%kbvx-RntBU15^PCqF`XC1T|vFw*rTJt01}30P>CX4A^X9 zY^;=rjv4YTz&#SIZH_YE{lAZV+xF|8-b2tGKmnHqoA>RW)5&$TdBDRfTpF@KXw1B%ez`z9p z6#S>+v_a%xA#zKIC4-%IaQinL+$1U_ja_tRGlkp|2OQX)5ktidp>PSi*d;m`jl+V` zCzmCgayN%WAvbCWh;ywqg2T`{B)U6OB^giBj}1w4xHyggu*Ok9Nx013k^3ALjBKl6 zYwSV%8eYV31+J~?7}gOtz<+_qe~r*n29I})36_oUU+{5^Fg;Wdh8!4C80dU>I%5js z`zJ=u;psTykjBo6^Z`uXHwvPY4zMBRM0PSqHo$0W8BlJ?^%M-1K;!=al?&L(jnq(4 zNcbr1v?6^L507Ada6^Ua{ztqVbM9_2&?CoajgoRf<5MW+7WT zb8OuIhM99h=SHp^5;>4%UraN8ja{BRfOFaC6@z2!;VX2?}gV^Y$qm{?vINXlYKXGtOXJS`Bx_=^t5C%6oVYn5JFEKXRqxAlX+o2r>l@ZDd z=kzuTdMi&1*d)AlOz?6U|MJ(DN%>#On06<;Epn3PpiwZL$61(yJmQL+j$?I+%n;;} zQSLfeTrATv`TIFU7YBJ3$+(lh4!_2vn+xuu!QDS$U33rba-`h-6HUhDZqdODWCE1O zqOsWLG$)(cLw9+Uo5R3e#|3ABw-6xN^3-wCPUs&I0!I}R1z%JkC%H9*-!D>n)t>O> zuX4oONQpD&Bu|`UO?_-wHWOUW|8N~D%!U?i^&en%PBJjXK;Sd-qJw0`&@Cp}7dQExE3fya7?@Z0JqyPZ%IPnx|jvat6d(8 zb}E74uqy)9MqKb0$m2V{@J-0{q=eZMyyRPR&d)Lits(niiVUK}F*(kc zwIaNKV(r2*dRGXL}rG#vYW6 zU?5gc@oegpN6WfI?Ee=`Ugjo4qHScDJhXuuPJl?BA8s|`#4ck(dI6NjX^b(;-|GW;jGW6xxvr%a!>wz2%Yt(+!jo^$ z;q-dp%rGK`Dg3cuf;{0l8VnOp72`qgIR!A2t;9UpD4_s|SW*Q3kKO2W#_KQj^W)Zd zzhZcFmwy8G+|bmyicQ&|I@Ap=qe3I+`B#E^d2RmMPJ|DpB`L3{@0OF;$fnQ}lr z12_H&F$BefJ`!kPe#7u@TOxZrfIs3 zgR>qW!DDCQfG7&^15|b)VDissM(f@s0MJ054LtQ2=Yv|;(St%DnSfl8;-6$dt&lW7 zz`^*}oN+s__&Yj8#85WOA_wD7q_rH3e}hl7vBKwI{OT@%5b!Y4S_V-o00!JiNVBiB zhQnUButAA#BauP|je06%eR*g;kpYl^AuC%EVq7F6^vxAed?|2W0BhKafa~F4{5B}_ z+St~<+d+Vmd9=28q_xj+N*|$=Dhn|FIv^dRLH;Z{Eu&98+t2%13s6D~FacGF>!qC{ zFAitLS@i=Y+iBh7fmU5FQ+f%HgMAMI88{Qp4U~iNmjFm+V&{vAVHvH#u|lGFgO#rV zuB@g%Q9*eLL>~x9pSi>ja$Ni|aIvOoZ0mqBxx?#qs-6dVqu9F<+|*IZVrc(gk?JP4y2}mBsbSC%ZY0 z>?-I=;EXfTKYIQ0gWhA4EbX;52?c5dctC+9FsNUUiXqa^z*^ry#kq=z!4h2Hb2noec-{BfBlq>6%rOb zp|!SfIDA0)0bqzj-~q*NAsVmfdHzFy7}N+5f(zFxr9baSq5!TRrSC7CFRH^16zlaM zXRXd1IO^!k7_FJ+rZkZ?LH&)Y>QTnq>0x2m9JCd`hHQ0)5{e1_i6 z0F=Lh_2yVaSPHfX^hS`$zCK+8EKdNpOC4OZ3>-rPq9He!PoCMT+@ zLg---K6bi))K#@==Trbc z@6F-&AXZsNSNIIef-+ZfmDi};9{>xv2K@f`#nl{N*uSg7wx0s1acFHW(YORWvueJ)? zBtY7wv?c<%?*gVn{-6a+ydJp+J@o$79(>g>6q&0CAAuVHk1{)EI|z7NPcI54n2+zU zch4dBjJJ)+nHibsm@E#t$6oBG4|Uiq_WFY&RuL2x9Z(N+#A^OAGLA!RAuinZ2v^?$ ze!~)zlN{y>4>H3rei1xB8seB|_Xj~NeDQ=Pj$nIurzl1c+F^=4b_o^N)zr}-8Fmlp z{)65F>~Pflm{UpXhs;(Qz1WcPta!ZTL|;!2+}!Uc1Mk^@*8#jwO-5+_#os-m{s7=T zdXe!(wg>!o4D%GObdj8hGaA)E#c6{RgQ^nN2&upE_^SQ3ttq4$_L zp!YS{CXGf=^)^2ldf$)!VCemKIz&cd zDXqN@5=EivLG8REP#>NW&6L`M|6#pz- zm%x2VJ!>Y2ZbF$zW8FGL&{(%F17-001{&+u8|&8Du>;i9HP)>&DR8iQW8Jz`B^vA2 z<<8hN)~#c`)L6Iv|J%BC8QjfKYlc@N^Jn1oFSMKg3+-k*MjWV($Nc?Ol*%_1qr#fhdYk$0PR+C@kIGL&#wQ# zfqk5m3F?GB0oVBWp_qxm8*c3P>tSoj!yWb5tv#H@Y-P=Jj*-N=^I5_sa`Z&z1bXi5 zH(F&9bv_CEz~MW4(A03BgqqaRo9?U#GmIiTXLvVIPoN>jKR8IJc%}$l3JD5xcYz?w zwUCAIMeN}ECNB9>$YWWb)fCA&J7tVy{1Pi&CKhkeC98k` z2ox1SF7R?O;5t_K4Cq;aV)AOb%A-xMV?l(VO!e7d>(1vXy#f4YHIT7|00*LxpB+S} zKj>Xo@8qhwYAbLJ^sfr#&_J{B1oCR6L##S@B!;c&lHHs4|*Q#9b>2^@vNiS<0+DPF`LuRKfo3ySvph`>_k8t7~Z{*)tjMo z`pY-^TB)C`SEQhZU+F9Cm;>(?F>dF8dG_ddOoQk?J#!XyyGQA*!|YTz>eHVDgcj7* zm75YA!KUpDtMJRfI89oe2Y@^Jcdz&u20~oH?=l9Y9>q9TVHblND|&@izQBGghj+&@ zu%7jb>$`~B3%X|%ty}epPF_a80HCel@a|eDA!+iO-V(9;;lNt1 z?XjQ+Zr+_g|FRA$!Ft`w(s3x|F9}1LlQ}~3+3?WoWnvACzM5GL@NRCJCUSVUfH>9B zx4KNRE>Iu|Ez5x^r_%2zeFy8VtVaE=mzN20UpydLhIbchvqJ2HgB2fw=<^=laCCixBLL1Z%13PZ&#>nw+p!Hd;^V>!!rE8UwKYNdfca zP}-T8F;#*K0s!6WCoS2yY4f@wiV{-~)+t~8A=Lbr)d;WQ41}4o8I=8=603o~2o8?G z_%Ny5xeLKbh~-o97kU+tOoj+VbHhl}WmJ+1e+Q9$f}R>B&jwd*>E*i6;Y z5G+#>D(I{5C4z(W1YVj{&pzJTk;YAe0r1@9+vuPVjH#0Y}ki9#&K0BoPmnj@Y@pis&29{~=1SGM zs`vklcu(e@V%JfTHvVapK%)d2CD15=MhP@Zpiu&i5@?h_qXZfy&?tdM2{cNeQ38z; zXp}&s1R5pKD1k-^G)kaR0*w-Alt7~d8YR#ufkp{5N}y2!jS^^-K%)d2CD15=MhP@Z zpiu&i5@?h_qXZfy&?tdM2{cNeQ38z;Xp}&s1R5pKD1k-^G)kaR0*w-Alt7~d8YR#u zfkp{5O5p!>2}A@rco4Gm79m76vY&~GnsTx--s^-;o-sahypsvu6WMEDyyE%Aq*+9G z@I>zM3+xdLLInlZhG+!EMzcqK<=E`$y##%xM$$tGyZ^F5bcY{ zt2(hyzZ$Uj?2p`Mp#qOr{}&Gj!4vv@Cx(of96Qm=q{o;^{X!<13=Ww%DI#{9iKD%z zgM+;z9s!MC#R)nhJd}cm$J8|G*s)u;et-VO!z6Tg|N1TeU%wUn^VVS55>q$M=0(~*)C+pF$1bb%?3tWn7kgwqbj>XWt%ht( z>AO+DYdgkc{fhNE{Zx%TR}W73O1Az|<9&Ufjt&`7n0)=Ddd>BgWq!>zw_Q**@YDyRX**1UFEj*Y}Yr!H(rUQ3+IG=_giwsozm*+S}zaFR2d85kuTUr547ae>#=W<}m{*hBDy%mfP83ug+aLF{VT{ z%O^Z*b`ilIWTF3G;W*qo@?bGesc9T~7 z4XGc?nM-Gf&2jBI)^l9`XGiKeI%?sbC92t<-}L)1?b3PckHM>ouV<(!4*z^Az9hcM zp#5J?4J|%CD`U1+{eUKmg7?vOhxZ=S*Pqaz&vhpUX^v^M%1S$=91r-l0#O>2f9YRG9LTs zm0C%y`i}e7?%h8R39C-qsOCq7^9EflAFQCc`D&9kqu1HZXy@0*V@Rm!&3G} z+7FKOT;5Id+v_lt@08r+SlZ;eXst) zx1-N&j#=0wW=+xEEv@@%jNGTW*H8a)`}1R!6iwResw9OQ*GAO_h_3I~9#dkr+T@^F zfyWT*+YvDbTkaLeQllxP> zpJXh2^>o6}rT%*JCaq9AGT__u87>}*8RL z#AlOv;|pheh#BTQU;(daipqYE5zfnuhw+zvywD;eu*E)dD0ayGC$BF(>iSe<;BYx2 z?!1xbM?3G&@3X2muj$r(LmEH$+z+iKMN5~5KfE_)Tt>Gcn(YJpUT8fvT-nmdS5z{! zX!_}~sF*R=l`_lPFgEflU7L? z6%~JLot(U+|KXNfUSF;W*i?ML@vofh=oiChR;iA@cY1`$xm7i9=MF#PP&VTxucm!a z)rSIgp<`(I*#%va-AhLc*ER1Pc+z&K<(yqBhW$Ji>uBB4b7jc>5id>mbbppRIC_eW z<`}=I&MP)26$D<>dStuZGsm}3NBs7&d%FWALwYCh?r%$eq0@TuWE+L=`!<`_qaZs`5Unm^ZI>ir$JR$O+A9I~c|`n;l5McyhC z=T0;EU)0Ri8!s6JualUyG>uwyOT2cD(!=Hci5m>`&nCqk)DsAzj#ji9xn!VUVZf!M z7g9=}mVZszQaW?lJ;PH8v}ykbHxItQ+GUgF+=aYX-+LZEc=q1;C(HMTL@a!sd@OkI zh`Yfh6|{*ZzjeG^~B8` z&zo#W4V-D8_`>So@t(0m`s@r`vZ&M184ow#^B6FGwe`uH-z>Fm_U~J3>Mh>ceqE2q z@+=GE2gf=j>iI1At)peHmN{4Xk7>5s)bv`s?Uo~o*F7D3@5%oD)NkE^{I}WxYlS-R z-{1Q*w>C=a>a>d{pITMurb!Gwi_czo{jp=(H}4rY{hl5kS=aH_=BlN6q8NkP3G?^s zS;w^K`K9y8(oGd5X=B>=>YlgYVb9HK61$g0FH|DOk?CSry(?F}jyQ?)-YET?n7{aP z(=UnNCkXUk3G!y>KYSF~^})V9ecIO?pW?PbC23Jr+o`4L#t%ymyA2lW_nfpOw?9wA z$lGs+dsfzk@gH%iuEJZo<26s3U=w4QRB-^aV=|RU%D0zMB*ndN1 z)5^oMLe9I@@lNg^r8&T=%fYc8Bj&DM8MLV(jw%wK2xno6oP?t-6cl9Pm zNwaKY{TG+jau@Nl2GH;i^WzPDZXWCM`hb?%^66Lh*jOigT%Nvr_jsN|bmq02#XSAg zGpi$J75LwOcdbL)RLdrG((}#pzYXc3Z0e%quF9{oR@`u3Y0abUN0y&ovbxs<_0fGc z4)3xsdE@n*=?C;Dz4qU?aFj!U_RfbL>>sXFRa)F(TK~$9&xiG~vM)H>eP!LWTOMk6 z`<*Bc*%P()z{$*_RcF0bI!HaLj`20U@AsPh-8#;)q^GWBlWke*N9Oi)G75?9Ywx;i zPNw=rJA<>g$Jo21J~1^<`!+Cd$9U6}aXMDn56;Kj(}^@1?wL^;|6oMrF4LY^-N35%uUmE-7%y}vFEM$OG<3)uqpeH2 zj9Yp*q+9YSw=aD!ND5;8qYl68G-Q3rn54?sDJRd4Aj7mX;~5%6j9UnR|5X zg|l5(c2gc;tEl!-*u%oTwR%ENmG_e`cGkS=vVFng&u^@%&xU)R8lMzubI)VvG?}XQ zzGk8EwB3-3^TTF%UAQ2zF>TVa-;XtI0wyb5ZIflVw|A@EIc^hXU)sG;#mge;$NX_e zcoi12twv2gndhqLq;`5%@xJ^Qb_=p2LU(yrPAu;+I4ik{_;A1LUCc%I5*2m(|JeD= zXS~6t8?J_iJKyQ<-%+&W`phfmi*~fHI$7d5wBM;yQ)Be<1$x1^_pel#Fmsyws_MOm zk7V5n_Q+^HQ_$PcWx#Ij@b#ViA0Ox%Q?P#d(}Lsc&t5f)O6XJVR4LlCDf`~n?pjC0 zy=whq2X{EWXhi3|7EOPw-TcLO&M?2^BadBAU7o*OsXAluQs>LZ4X358@j2Bpw#oaC zCtV9l%39w(zGan{*Hh0!z3UFPaBQo%>yqo7?oEfj8+$-o7My=xaB(YrlHQk36i+S?oZ<{Exa_L&g${%vK? z8LQl!d&Ga*ziZH^v@Pu_+bG>XH+4gnMv`o{H=k}> z5gV6%=^-+gWd(Id|&e)ry`MAe~ikrUMRWB8JJ~^;xlGP96+|Lij zbl+)px#08S2P2msNHgfX_hXlLj|R7$|7_{t7h)Z9?F|`Tt+0O%Z$x!?qW9N6+jn)| zlVw*N^}rscQHC57*nznHMK<>>w2tXoX^+HX-=eD91;Q+9pJ?X2)9 zTWQdpH%?ijO~0J(JFhCYwm?_3J~w$wH*&arY{KRKfnB~G z8*aKF_{E_2-WL6OPVZGR>Fj~<0qfptT)40O_lS(OmS!7o_I`=cPiI`+yiaH{`as8-*Eh!ZIdRtH!Oq*ElSZ%WxWY*}XI9*x%%iOx7S^H=wqSLI%LfVT?bpO6er(@NxGSfOlhw zy@B6b!^B_r@vDA6BZtpfp;7WO&!}wX)6Y>Q*$({S)u#vE`ta0asj}&a_Z1zQz4c5z ztN3}_PVXaWM}x0u=}$8oeX6zn@@~B=CPf$IKetUT%}DF7=V1P6Y5p|d+?@|i`h8V< z?%iGQ?viq)ZY0&G>7L|4-7cQH@0Bj}TIlll-P;{Cqr%RVzS`ln{T-u_P_+YwqCWzoW0+wzu>$FI+wK=*8G}XGYIj7T4|BT-rP1Pz$StZyz1u?|9tSEOYZm z-+O28?RQ-N`offi(&;a1`nakV)99XWT29w;7_Oea_5RVP(dDI=(w+a_|DFH2L+RMq z(+PRj3!LNqtvio3@mA}pp!2y&r_-ClmRydiva#{=ySr)duzhFvyKX)DYuc`_XY75N zFFK-Va6S9!!=z^}gH)7)#<$dXn>RjkX|P{Gxrdw4qpP}4Hq|*%@^S5|E`8?JBv~!{ zJf?e|VQN86fbRGSKFRZDo*OiML;k}8J@xrXYV=vwf5kW{0xJXb)F6};;Y@) zZoO+{dYFt0JgsvgV?$8RiS&>Ic3ExB*LvR!tbMN^yDeN-*U;=ls{`L(j*os>+RWh4 z-vchUvDKLWC93*((@9a~wx!MM))_e;Dvf%Hu2g>f?a5?* z;61C=3SS4uZSVHTPWkSlSxKW6V<(LoG_t!WerMY*eW&+%vU$;V%3PRh{(Jb*gQ1>lWDLJUTie?Zc9t6D&WC5n3gA@V7tt*|U53 zgqf2Co;}Jw2EE+;QDMWb2OlnE7F!(h2udFLA;Ugqr0osw{c&q!BTO~7#lQdlde!qM zK}9wl((K~ zpOr5R@iOmMd!p&*w$WeGr+$5S`!AQ|(R>5z6Z4{{&nwFBG34#d=()yXi7cAZBHtNwR_I?U>S;(ByY|1ayO-JVtR$>o;D;cAQGWn03R z`@ZwM)MIO}JB~}s)iy_LeOb1ce?~WSM|VNt$%zRSSyhqiHTX|9={xj)II`VitC@dD`!a70n9UB8rP zyWWORT_3x#dB%*R7j#PdcI@}oyYKwjCuZB$IL(~7_sfZ(8GY8TQfl7Wv+By1%?|c! z=X|Lfyv5w;UD1ck?=i0anHg7;GfJ;0n>3AB;=bmrO7I&y@2)w%ox;j4muajjxI8Xk z7JucrW7~gj*jmgx`^qarCvJPIxMs(rdTrmV92%O^x4Dhzy=}iK-L5r%GvDvZ+pZs9 zJ}FOln0wTv{94L~j!|97i{t&A?|fM7r5Ludhe}C-!xb8^Z@GfY`I0=#wMj=*&w4sc zIJPOQI9FZgW~o7Djq~B9AA+}ywM{&$V=zxM$t_H~*`(LD8`b)oEqKoaO zZ8&?|E#t|7fcb-F96B<6dYH|9Pum4=KfHQ*+jIAmcGx}3|U^bc$nt+9@hMHU8UHmZ$oGJbs!am+XgoMu~gNk_O$2u_?-{S->;_g{-<$2c5 zT6A>H0?kQfQ^!Uo+_c#s%CR$U%BV>FzmJB z8wM4<)%}b%2StH7^ZCvIbV0+)rZyhcq?Dp zHCbX5bLdUw=A2%N>i1QR?*H}1AWu_p0~G! zb8Ve#F!1S~PurK?IAts;nQ>~vj``R66eY}fzii*-$@ktV-I;9jbk)3|I;$4DJCEqI zFlo)LA&IZ54sAUVwsZZV+^phH6MLL5dzRKOC5-RaTW#~LjzdO|ntNiBPQbYxy+-b< zxmop6b83kB!7Dk&UD{8(xI~Trx=HuBv(`l)?6xOGtHPteQSpnRb}QO*=Yz1Ao=-}A z&*+8(S?0Us>95?=UOO#G*(|shFyEJjkJziQ@OTi0U#Gs154;Cm`E}Oml zP3Z1>h3YDn^W4W5J-;%ySTcFVsN^WE5d(J@-VeQ?)BkAn=Hd{`XFr}_*R6Om-)fGF zv9bT-TECV#{o_^hn*DV`@mBi|yKbJH{qaoJ-%Xcgc8>HO?XaL~@Ex^|rL+2N&0FNM zpFiNtx(SkNd;bqg&ap=q258b_+qP}nw#|EN+qP}nwrzXn4A0m)gZD{xv&m*Z?QiI$ zyRNQE2~T1-kcuig1zLz3brX~PWxiq7;Z<8R-26& zNMPcqvg#6BCY!Ef)F&;#(uHVkV-Ei=Uv!RbR5+xZm%+jh(jfb+W4?TEpY6q@a_dgz zCOysF`c7ivve9wfeg2?8R>LQgez>_BJuX%()BqyYefOM$Qb;pA1?O>nQ39fSE-#I^ zK=sBr(^1QfZmCc;8mxak=Zg3hPJvF}Cxo%2w;%FEys4&_-)q-ovk-N{u0y`E%6bGm zXWa><2AK$F8%gsj&BGwU;lYKn_TmxkNR6Z`gm>=Q9I{X2R2SVd=EkAknLW4TwT5q& zp$zsY`I(?@cO$3Eo&dH|h1@bS)&%2g4MSIHUNx^1a3r#4Pa1TU99cph3n?9tc(?uy z*U7CZr?$%}Mb*GT*=?BCrnsvyMcCg3?@4xMY^PZW1#~QFqws}(4zxV*Q>w-LALC@4 zFNXT#zD5X2ZFbvPkr06E31sVE{RT9K_&y9sQc3SMdgF}f;fGUr=-=dZNA1c7{tXg( zwh-JbFeC+%?6SZ_$5I&QdP%(v8Lj!Mf7uv|eKd2JhY^n9Isl1(MzVgH?x0IMCNC%_D3V~1&-7A5yT^C>d&DX?Odr>g$1%SzoeX!{IN;zR`XWB zpx$aozsrkZP?-}{c#aR7zomT3}eIg`o_ zibT#0~HkBKTN)WOM1C8P7oW6)?9jD@LMNnzvvG@AI>h5f@d}{j&&MMF_>NEr`^JE!h>tcV`YqSeKRLpg#@?qKQ1m>qi;Z@}#q?TsV8wyIOs+R`| z&5`L3%><*vby4CZ-GQzZPt9hJCskx%1-}K=rsgckw6>JbZZ|w>rdeEDZw-E947i0_ zhF)-$L7e_E=syw^N-0Sy7Zo>~Pv@_Ft>2(%izMm*;ue7hj{=79(8w2TD3CwRJTBDVcYUD&oGb3MEg7fE^t0?B^Va?tI*u@^gl%nc1=};yfOLNV~ zDdr@Bu&I~m!H{zmD}Jd5LSrCkSZmBBDu*2IE(FbuhRM+1M~&-wRd*`5cb8RUhwh_6 z2UV~kG4+=dZ7odqC7+7B&qvE*KdJM>(=QfmiwS7u5zskYztO($)n$N~o_UST!o4lw z++>jo;X+RW?jc&*U$~cP0J0kfHck$DRBz6yc!xsWJH%X|OD_;(!Ip|-`8*_y>T`kq zSG2?OhAmE=iYd-F2ICme4NH!p3D7@qPOE*SLpy7wf;5`agG$aEk1_F zC|pEeBR}gTwiEW0uWIHkB0&OV{oxwZWR(83qb+w^He;9km-!EoWc6Cu6k4t)9k<0-$I@~}NF5dGXg@4YfvERP{C)p4ISOF3iC z^ELbLJZLW-)bcQn;F?`$4+QJevmJ~n(rOW+d{$~441{rk6~sT+#odkg)b1!n^$7aG zZ=aU6c9Sl&O~~mTaVf>UJ>2e)hiiDEis^ZoKKe%er}Ji?rGCuRGIYzmUB3$Arpne^ z!{?s8NLegOExAU7)z*~l`0{_W*8c&VQE`iY9f)au_-Pm6EnHvAKh-;k0YiZcBP$601d+<`9_y_TvwiJe zh`6zMS5#5`47rMd!r>>hs&+~hT)(Ys7O{50Wn$^oFWcpZcFh5FBfKriQzS(7Y}xbv0d1$ z^Rr_nXQFl4!gmB?2Z&)!<Gf@nN0`kts5(lL7??9{@Hb@>BNbWYLGrTsV)Kp)i==bUi>+Sabv??V77TIWBSI$h z8luJu!{DmZpZ>zl+zkp)`~vAqg16U7135IUAp8`%+d$5VQ6k^!4~_+bV}e43Wj8mJ3ljI6VF)7w`YhmjfbGddJz$9KdiGhd)sL z0R;!1isDvXxy`~{@%9iB@)FMRdqz}lPEq2yNVEM}5c=Z4H@r=1Xf_Jrpt}yVp26t= z;dxeYRi%N(=ZnC<72vys5^d1T8tgPUT0wt{Kq)z)lBvKwC{e~{&{TFLnhTcEFT;Y9 z+lrAXLSB`f^EExjJvc4X(Qu;v9I};Old|JQpZbR=yHI%}GYs1(>uE9pW=S!ZOS_J= zhmzZ zQnKnEvP27#F0Yt%A_p`eUDfKF)&hRWM*K*&pxMXShPc)mqlz{E0O>?>$`0%N4J@ul zG1~_$Ixc_?F`{n8*!cMES>=POq~0hze6XeyWyRr4vUJ}vdOF|#qX=Uq7nz6S>6Dlp znYne-6l?>4EwJL7p1(_rf(+}wl>ocN7UY9P`F~&F-zsc&v(d@pSE3#V8Lp8TRC^T3 z79ff$afYtU122=R4owu!yx^HxJw_WjwNtO~`f%Dt6Vki?aw)y30{_%WurLf%p5tX^ zQB@7mYR)1)ha6Ya2U#*ijik|>6wK6wz$Qtc9dNs5jwBWz^TZFmgwG%zQK_U$&D8x0 z5t$zUw?x;4+F9o7#u(82h_|HGxwh6fr%-(fJ=YI>1>K+pQJ6-j zR41@I-pZ}b()4AE#tAg-Pj0%KZ5f1oU&mnUa&P59vO!&`mD#oq$1aN#y&}o!)>#K(? zXkK5`lx|pdhW)l}itk{d<;6_Vu4N_K>@x7b_{pTf-4hD#^ODyeNAi9(B;$1&EF|fy zSh*gL`cTB&T(=g4^_6q=-YJL5I6p?pM)Xn`0?_xs+7f|sFnqb^ZE*-`ah0Cn^1++< zmF-?fOJPyiq*+3Y(^mIUQaxXTSD~}9ECU=_R3o+PzFYzu#L?kFt9S4ZtBAh?SLggl z#*u>vs&gCWA%{(5|-A*xuOi)7Li{W+ool{ zu;Hpbl$M>zfQ}9*tRZ!!O9f%&3UzUwk}u8fZ}-$pr0xJkTB1!4!-u{l(2ohYE3@*% z@Dl2(CVwhnbA((P_WV4Qn0|%%K;wE0;fZgmrh-qL&D5W0$1;Y(+yP*0d4v=7o%~c4 ziLb3MtYKt`tOXwn4T`l;Yw$E~5SvZq8xwq+>o-bGlhagSFhs|{_U5o$H(NaKbHww} zyYZ+CNWJJ8#G|V#-K`$&$~84D zm{hc-Tp!r|wlW4Q7OHmHIr<8+=C%x|ryU>XnhMzjr9{isdYwK3klDjy6#Q0?Z9G1e z(S<}9nRDA#-#Ry?^2j!rdgErlCR~j8VHyhVw;vZDyh70jg2D;^s6v%1STo0lzo3`H z)0=5@r2h2yqcFlBMsb+YREk z5XVA_T|f1YUNw`Mu%ky1!c`h`&7G_MtkS~-FxGT?>u$Yl?<0I-!Bi0up5sH+Wk^Iac;P;NzeZu6^L zL{k=ja@)qA47ZG%S!c-sASsI9;AjMB;hgFiYvWY9`VyYv*?uRnBB5=H+_Jy_PIAP7bCo^7(z=ef=p!ax4!mlB~*AHtv?-ya&2~V-E*UBbQscWws zPf$D8Lx$uv@T&F``viimlY4UmcE`aw0QSE^W!GR84j$|PA4pq?B^edXv&Da-p$O?E z;x1^qM4%!dwxo=i-F4M_>#|*jx;D_Zn2`QV%lA;7OXuLHfO;>VhOA1 zNrP$-s3}!|V_^5cJHX|I`>X>hc<#c$I1+1&2xweyKS9L7ed-!bQUOtCt6G1jkfZQ) zmzr*2s|etCo&EU=gcP{Po%I*>nk%rg;>*P6%b-ZVmRrnmWfqMh{|+)9+f~#jUjO&1 zg1NDogXVtNBRG&SvXGg_!rdxOStMlgjZc!)wth$zQ&XPxX^7S#$>M9=Bx^ndxpt`~ z3k&~+YS<9^(UJsJIg;9>xFe&Y{R=POLECL4QUOUGa=|=yULugBPy$@%rhAdB?V(%| z{=J@$*uc%GfHBd3spl>Sk&!SSJSo$uCVzVBl7lAfb3CY8;4hd|$FYUJT#I?J7be9w zuxtQNy75f!Yd9Wh^q0o{iek)h^koY>O66H{`{a+PTk{6$Q$?}GFau|y--(Z#HshJ> z4M>1#r+Qx)NT|Y&M=qs2->Uft0%m1_Zj zuwVms@q>WFu*6Um3eY0c7cDp;p1?(oStc@W9+L)LV_OOSaAGS)I(*FXvGJ$OQ+V9s zsRy~`fK@)qojI)Qnu@%89tx6czNnd)n`h9)^r%*o^J9SK?a(y8aKKgO zf;~&H_4N=wiKWxf=p`O7G7*xI@m18wct83Unj%n;kwdRVel^PtvYbbwhBURc^1oXP zPl)Y*`Oc=K1?`ItL*2kVLFth#Wy;%kL!szsTCU%}wo3sG3S^ecrNF6q8TNGIwVqz| ztf;l{`R4Q3TfRgk@~1#eBqd=9M^zh41k#p(O}z;?hH7i)OG|Tr26Ub$mYS}GUkB^~ z1M-@QzV%iy8D#_r**k&9jp3^L1hoY{VonvLZ5H}Nt2wKP!4C?1@k|kPpY35^t}M3k zS~{YMdNA_5Cmhe6B+TihK67;P!EqSpB+>~lJIyD&Qiys1ezy2#O*}boA8IyAt)@0G zs_3-C_CcW{;c6I^j50W=`0a}6idYBh4>TU-p0Pp+si~Z}G_tjG&{YpTZN)_bdW9B4 zyu?R?FK*MBUt2eixV4utXeA97>|H4HtB3>vVoB$#vqfGh@z*UfE}v2=A)yV`;!n zT}+<(;QJz(E(5FDxGXOTChc}p+w)S~<*ad@KibZJ=riw6kl^(04ITKu+2=pYP2v(C zi|zro0S;@bOY|@M{v7SYb+`Y0Fe0V@V|lykVS&lF@jpl5F)|?BzjA*DcPc_pBe)U- zf0l&O+nw%wrh|VYOV)sO@ku=KKyU1|2ysIZlkgCLaT?Lhw(_@@Y!{{?N-JvfK)Ec` zaYtk-3SlUm+1&OQn@pxc*$!|9+H!0qD?<&MIQ=6X^7`nK4U$bRh!*s(hp=)bOc=m}4Z^!^iJEtEv>e$hi>4 zGtyba{qUj>rkr$kt^2Dd7B9$)c0%Gz$kEd?51|~NWsaQJk49+`zsjhE@>I|{{|b*_ zb_2<+%k%Xl3WiC)&5UJ;dPVXV{<`Z!MWe68rs>4((+Jf^{_V~CHSRDnwk^D|G4<3R zq@>*B=C#1YL~u>J86>CN+@zloFdRPX3}LRvtob$Yc97Nj2pO>ncI2<==$fy5Xhm;v zO1OyB&eSRv6ohO>m{u^gkRvbC&eIZoGN<7Qw4I*g#vz)r$qg`D)M2cKV=^;T=Wx_1 zt-pI|zJ21w&(%(uU`UQ%jO70pM=pF6$r6AwHEKP+E0oyJJ2RG*h`9HeA-nrvF}t)O zOyGJZL^akGuDE3`CAW&}edLQ93c!rD4!>Xm&=>a5`flOGdpe_9juZUEvTblc6(#|q z#Clh&?a6N-<2e%{;P<^IqqI4D2-1aR?=g7(Ii1qFM|mIQR*&{q|EgmR9Lst~d|pHM zyPC&2SKAjygb9BJ2dN%?Wov=l8|8tEOi9{`_$A5vezM(4NGpMRg17MHL?JT05lp(C zRs(*u(SvSGa#aLToDL3^$Zis)2GB* z@*`~v=1e#I>sa$`3MsbJQ0#}h%*m8(Txc8t6<92^DV6tMJv-XnE2;6D+Y}XVYx(YK zg8Ph!EG!U_RaTPQ_f;Uxd++5xLf!)XON@iJEth)-Gj)#*=gO_{X-TinU8shK8Vv%W zl}glm8W_R0UWS`#pD6H~%1~LT{?44Wu-@f-EgqbVRSaCWxUk7{0C~c)(WiP>YTizN0vkbX`1FzzB z#998>v6@iO%mst68n`9Ay$lk1eL7wj$yBK=p)m2+R!{*~6Afz>5V?GFy=E7r*47*% z9yEmZj+__2k~gvfzvvplc-iD7T}%YG`Mi{gQeDkIXVT0W|11g(mg(s7V?6yMAQn+B z5-#O1@gOp~YM8hE;;^Xzldb59ou?UUbc)sfN&BO_d9^iPai;@j5hP3kXaM5n3%FIe z4AToQpYInW$Fj~~##@=~FuDzB#<)K(IV;wRUNEsMyEAeAz`qV$jxVXi3UaZmxKc;0 zm@h8h%>|QlOk7CYEWnhFn;UxxPbys#h6RgecD#6hps}bnnrjh#_A_Zu|j$kCX&Ds6w zD)3kc_f^+IIrk1N?3)e=5~U> zD)w_^UhdVsZ5LhrOZhb0k?y^5)CE^Bn76O=cS0RKmS_!r>LQW#RimrpwO}^gIq9i#G}~2dGn!snOqhBj z(89HPm!NtAKCBNI-9~&**1U7PY5v!8uSD8;!?AUHMDMn9X{e#Pp=dBQYBd=$uG=r) zy$J?GyUcksZoFRO-S&~>hMYy<*Oy3QUaj8%f&8yEAkY%?tpuI*lI z#yv^{Z9?A)F|s8ego^cKCu};+nz{hz;H7tttKzP`n8>-gq@SqgTf2f&-QHp2?1&@& z9h_Sx`Cji)&S#6RI}>wk=npq!LUe^G{Y*lT4oQliUEP-Qj5AL5bErsZi&I^Y+&1S( z7_0EW5GA{;Tf0H&T!-%W97QAH(i1Y0T)PO>Tk^tVJ5@^7QGhJ8Si{&G1hb$-M6tXz zmX{v`v1MRskx)gki|k+@Y&E1`>aL2S6zIMT$w&DOVQzd=3RGlZ)7ad(tn3PId0dZj z*r`t^mZD*q!b3NOJsxxtvvT+g(KXDQuRO0@sMR82`DZp3?%J~F%0fx&pPceT`snQgXDoG+I+4$+hKqSHEx}op!0A~S-#x{6{`wNoi?m;OT}3M z3>EaBJa^ZZl1xKu&b;b_nAV;-qNDv09b~_}N$7XBo$@D+Uo1B;9A6imF4*(9g-KYm z(uBwEm@}dm^v<3zZW#Z>(dJ@fV;(bbCNFY*ZmJ55wYq)M9ip7i z23~1+?XPeBQ#KwHmlHv66d^1>(C0=O4fao+mz;_bRM2MgGhUwhkYQJGi+@Pv7d{oZ z^|<)N!VSdYtnL@={ZGsnQ|z3X{uUBVT;C*v3g>D>unct1u|%PMk2gF!Rri|$(Ha44 z1C%>&oQBGdV_oYUDO9t{pWyoNB|Ro^pExS#M=Im$Sn1122#gl{-OD~&ZJhKz+eg!7 z#wl$rE%ld?dO0^dq@v!DMV*zsvq57_H=$GE8{~97bjd>|Ae2cQD0|*8qkhrWbIUc8 z#5vb>R0@;6+$FZMC_OSymWxhCll?CjHX}SnmZrn?5jxvoui6zOf{c$f`6>JWpj*Rt zBR9E3YKb)BDx3XjoK}iAX?`%(`Rm-(F1jn!DM}~bkiqq7JX{W{+s-=$gnv6>cD~Zi zXit5&y!tQ7V`Z!=pv*&|O3y?hi_?)(y&_tC2dlYFwJJCjGbP*kmy}iZpL&rG26pyC z+#aTHetqbntJt&h<+F^ELidd+{?i}Xd1h?=DZsRKS0@U8$*K0YjA;N!<&pIz4>ry_ zq{BhHIz+doN#j=SbI+nprh*i-zwEJP5r~AWdAN7;Kgt)Kh$G2b{!WrssU@LGy6F6| z+dvau3rOeJG^mQxle@#G(u}*q(or=v4_=|6Cd_nn{EjTv*)&ac3BQaPLc8yQvn+J9dUkTg*6kyhf#} zh2x&d325KDfG0w8A*as!6JE?}I)@+58dVgZUm(X-w$%)7Od^z@!ylJCb2?$4L3kPA z9dezG67UB&OIcq+=S%2!8~iR#n(Yz{ONTIdONsV#%1rR&ZI|6PNZOL&i8*e{j`133 zYTn7zC$2eT{sna#>Qo3xI><{`9-pov@_<_!qb029zt56ey!4ht9OQ2iLr2l3bwqgg zA9!jhnpx0xj=X}-gK>j$2s=pCtg&UTn4aqv_B&CG~NOK z!5GJXJ{0r2$M%0Lb_4}u(BF1l$7J}zgZ;AgsQL=JekosLgw!&zCTK)j_I{uE@0Tg= zv~44%@RfHkCC1#+c8uzDa;5rM)V&Y~IXsy`nPOMG%&O{qbPw1UUWn(9a&6W6bj*AKHdsxqQo`tc@Wa)= zUwUnz_7zVIFvGT)1$b7_+LPg1?|?-v7M9W$W5$9vwJNm=#ss=(vH7XL`|5dSYBM6* zp2jca!3vCsn6ZB(l@TXn6!xM0Xl&Z+PNqme&_x;~jc3!$jBu@-;-k6u!j)!!h^b%6K2$v$4vxNZi5 zMH7PRs$%|`dmrk_Zdhc`*LEoAi_H;I+Yp}Q+w43QB2(9ZL1{<-k!ib}SM?^lbm9FNe{lo^gG!xw;~ zReO8|^QgvQM6SpGOeip-TkweR2NP_Xr;AE^a|lrlQ%X`p2TvlByQtJsv*7aImVTKc zi6OywWHb#@J$c+2vJ=F^*6c_bPOXQouH0>=zMnn0O8;mGuQ&{Jw85#y>Ss12m`Afw zq;XCUi=kXe*$l18**jK-JWXt2nN@4c+4HFu@IO7FKJ#k(gpk}{Cr=BDVxsx@ zqY63ZYd1}_=u`e{D`NHaiANN_$D4ctw@`Qar(q=b#JnyL5Trzh0j=6|51HBA@U5YRD3(J-r3;@->oo5G+>Weai*gR54~XX8c_I^He!zAJV8n1 zu=So;94?vc^VgeH!WAP*hZ^flY3l7am(cdlU~=*4Jn7N^!I$s1Ozb+tv_vj1^bjb{FQ`p!rJF9sR0? zH&3#uJk{{4Dt~rc1KHFku^)sK#V6@77(`RdEA_F5%$c4K*i8d_=ygH;UzDW;!m-a$ znBxD=+H_3wkr~iAwiY|S{S*+>qrax~An<6&ZwVEy4iVkk1^c7^eG6yw;XPAgp0F}m zztW`bA`95jvRniU%LJ}RES1^MiK$5g{G+_9(jsSw7V*~-UK;5oqGJmz_r(M%5KRkP z9wN0wL>nzlM3TN1qaUxYtfhu0JIKTfWchTA*5^$UWy>>a9mg9i^;pY}QekN8MQQ`r z8|aF@!5Jse76SepuZtL(mq}C*)SRRySo}VL#(REez%m}{#?;Y!7Qn&e-fuT;8MKr~QgN;4g^5|Yt{CZfIV(ZwI#$`7Y=VWG@O_6AJ1=yU(rEwy4Il~&BlF>P2L6Gop@NGg5oOZD zi<0TOE_>YFII@?kRhTzVgq7#Ec?#B{?D>yJ4_57T>D?~{wk4)*bnHL*4O2=IEhSxh?14x1F8W_*q%nfx;86+wo%F23D@-*WJA9p8BskaXF(CirHl5 z@J(QxFOzdA2IoU}j4OKG@CafVViCHzwh12N)6!b85tA0_S-Z@*R`%={R4Brw@zbJ( zd&|iTYU}JV*GulNwdpQeOXcZwxfI;qR+{`0FW+4g&vg`5oVfAC2n}vX;S)+?QpztRLPT`Vm+p=~b2(@$G}3tZqbW?rtm(jHS$zeSWq zh>w#Qzf3U@8)HB4NJjhsTk6q1r_DP0bVLZZK+_dA%zg?buBn+p^OI5#lHZqo343gN zq|O@U04S+^V+J|y0vPfQ%KJ(!Pj0seIW`p2Epm5oQ>rz_^ivAyk$G7I)a9}r>&&QN zQ!;^TehCO^bHlrDTocGqbE5b|hs@^GGoPpq1KeEAAcnT5LknR3U-SG~m+*vPF8NT= z?Z_~~ug|oKcMR`A%k$Zm`%#RX`+qYSF#RRl9hd_=gx|1prI{FJ;v>@|l@AqdKjpvK z{VKvJ6qNfgH6VD&n?IfX$f9o+ZIQTyM8<&hU%i<77KK~ZM#YzEY^i#*?#qb$1v&@!?p_7_(xEN0wG9L@4!8*rNV}YX4 zj5`OBpz+_py0#;1vPD=|?@1>s0U$R`wd+Mo7pGMm@$KnAf947BK2L9OXoB_!$#%0* znBHiywSiYoW9)P=Z<@cx^CBtMDSZ6|Yh3m4r%(E<_RSTA{0PpJgyF?A$wd+v=$7<} zPX31g&zw)Lx19QM2bO{jS1SVa7HQd`2sWe9t^UA5QDcsI!*x4kou+)Ni{1yFLrGAG zLR0P{k`FbWAm@L%FoI;Ct}Nvx?}2jo*Oo<5R9#z5mqWa~z8;S$I8ZITB!{ zjN+n2yf{z|1B^JN{aT3Z2=rA(x-_GUJZo^`~0`HVu_O za65uwDYcsU3mmjEJD*Ms-Mnq+nqGi%Xm`@Y;C2$8!cY9n=hFo@UqQ=+?ENr(72iYn z-2(i(qSBR9GibNnh(zsUWIPI`2HD?K-;lMFHM(6w?N+U&2Kt-a+r)nyls_7B3oigI zP3pO}4w!eu3Licf)yXKyp;4fx%<6wg!OchkAcTKe*lb?JP=jqz>vx2>V$Bi>hOJPL zpXg$}JCV2;WjAJt^_QNTlBXitZ6sAK+0`la&r>cgq0Q>}aLXeakZCl4k2r=RLdp`* zN!!`RU9wU;%&7HBS1etKfCkh?Wn+H5>9B+#$hf*RR@WjGt(v#0--zlrW&y8dZi~NKP`W5vWc~Y6Fk+DwH4L}ikszkcHGvpi`Ylm!t4`eovCg#bK98h>v*J9WT&t#!rF0g@Q@eb%B-WS-;PE&jX8|bj1#%$ z<%#yLoO3?16PuJpXR^{wWQy=ss(vNmW#uUB(E6LBq`NXM$WCxCAB&Zu>CA(e)3a2R zK=qJu?fZ5JN7W)x!bKIm)_553sMDOxZdJwja*@-re0F5FTyxy}m{z?DQ0LIR0{$4eYF)5q9VW*!TSG$NX|u6)se4T&Z;|tnXC2 z3*99TlXQC&;@zL(_v+EE>ny;pr6SLTe`*qe%6lOYk-qzDs_MI%V{=V^?M-TJ(pvfk z&?4m)CXf0d#nryLs_>;ejiPrLe*f7}mrEKp_Hj1FJb4xms{Lg8`$t6pRyI4B97$eh z=z1_Uk=znw2E_}drMim}Yg0a}1N}LGwu9g1fWG6L1HaHHD|vv}-PVmXz5f z^DNIg=OVh}RqOkUVgFsu&XTS-avrpR&bB0_^wSs&WLyYY3N@(nm^dGyU(%R6{ zss&Yw#il6G-3QwvNIKki0vR(PUhHGF?lEfqnBnhuNHe=qDX2RwUt5qgVG zRB%Jlt=`fp??eX~B$H2PI;FRv4z~B{vkfqova#I}pS}>ekb@$HQh&*cbKLKnfV z&c&$pn#$#T9(|0@X6!cQSM;o5txgh>ZB{mK7Vu0l*+V*F|B?nfmcm!EV*E$Ddx!5O zQHdZfa#asU+Mi%R{S80`4_ZACx^J)>%w>?nKdu1xLfI1wJ-rddL|iT_a*_G(#zpLB zWJtQTaa_UqYan69p1RUrY=qOV?{&TgMBt=x`9;5=1_x_i7@E*U>-Cuowb?pEmU`vwIcTWpkvB^%q-Y#2m8X_O-iPcN}Lcho654t_m(+z-B#iX zL;}gmHf9e`S_*Z+ydCU^fZ4O6F#LJLW8lBlB@tAG*COzd+&-_#my@C@)94-4@X|-B z=D8jsDuz$}0)_Pa5O0Sh0woXFL~F|L>0i7)J1e&kqeNDz9vwtlw@S2w`=d9#)zCD@ zQ(EIEou#qy`|h{ICC79yqa8Mr%NIz#>jk?NW`npl-!8aQ4O6~F5Pt)H{Y_i_<1FPR zzP4Ux#^g_QU$(_ zC-fhhE$CoyQT;AXqB=;0&?o9a+IW@+Cqor&cbGC*rFksP^hn@3NE75<_n;00@be;$ zDyU@MV@z&J9>btI0>7?BWUU6~mm+j8kW&*F#*;_B^b)eMWX`$|t&MepEnkW-TgVq% zn$Mzl{&QGOZF@T+@3Z1xg&$$W2 zW4)wsj#lS|bTo}hdipl^3DmP;#9L~S77+LbDGjWy4e#Oe#8x_pM@qhh7@ORJ9gnWQ zFJev4hB$c1f@w1@qZ0yEg1~g`CPC{cxHtu*%Mv3kelD={P~3p$g3AmvP7U-Y$S35$~xg;4@mq)J(D1|MWM3@(Yb7a z2>U8uKL0qMX2rtH8(9Ncs!tt`R>?D|p;0ST=j!n-3-GFobRTR)+|+S(Cw(kn`Xj(x zSJwpSo%K3&hnzl3VSA z!3V#&)KJkEB0YDb4Z>_6; zxlo0KmoR1pMzdz?c5*I}RG%$!q?2Wg*e!|J*Yr5_x&R%E%ht3#FH<)Ygj&* z+6GyEw@YG7x%;%0^=;{m#TYaZQfb#8Wr4RHhBop>5KD-238cKbEZl%NP_CG*oX8J+ zTyV+pQMUU5M#BB#2FCC(M_8~ZFniM~gwzV*J@>0M4fQd=7&_YCA3Va?$<~`D2!2g>!;o)keR>sbw!>()#IDjm%a>Mp5csm zaBWw_%T9A2TT7U^K)k5JQOw^&NXuEc1ercvOOMQ$NKwY?Byc)6=rc?GARmH^vNA)+ z7IMXxQwDE}bfH-_(J_?dKv4G5;$nR0K3o#gG3JM|@GqWR=RgeJXtE zn)a58NwX9B{Rrk+3S0%Hb*JNv0EM^(s?&pWY{I?1mBF8CrLN!FlTl0z$Sg?&>byGO z(A*{S_Gj;dB==Yg7UyNOv^lZIg!+BCA@U_7Dt#pUiiu`qFmaF=55*Q)0?|E-As5nD z_$PS~_kuJs=l!87D-(bHXiC*;dDSO3fB|Y;>Z@UnBNMaP7Z- zEZPwfwF|#tFQjZVJVcR4j`cdt{xGp+V_jFYc@M-UCHrX402t!sh=uH^^%q_+@3y(=wb=7s{y|`{~4GqI6{!rk1{>&CVNK5g<_N%Z#U9i7F z#q()PB#;83&1-_g`IWPsoUiB<=QKTT;x423Kyh1FIy z)C3pq*?}4?Gw~%=ZSDYCY9^7~>aksx275&adbCRN>tQ6Z6OJeL% z9Ibo_X|K6iB!??0=lS)r^R@%T;~t?I+u0ozHB3|WCb4Sw)NDNvG#S1{S3QWv7oys` zNjxNCfNqAO2BQcJC&ybL`s+SpVIiyiv(wwlxBcSU9`OtZeV%F z%f^vb0Z0Um*&&*C6)|m-+z*%%e41oMCbGlMcaJ+|%hr)46)416<1?-85=Aw^c-$)9z`efc`3vIt>Uk zK1J)r54x!}TE_td`V`3VNXoJk|8zV@qxW7_hLZne;@xknxvQ1Up*-4E*Ejm#QlS{c zU_MPOF(HmRMT&=wNzUCf3eP|soZ=S!q0d9$8Yg9zYXAb+c_#)>Mp|)~w-c@tYS(qU zbmtzVcA8v_4jkaUGwqm~ARry*gNX@;YnTf!Tg3QKlb0LdlLTLo3x}zv=)ge`eMz-lCeThVpYYfACWl{ zPx2EZz7ZJ;vs45dR`2Y!Q49FIFG6Msq8~_RfON%zqKAkffP1PO#fZc1{jyW4% zHJIm`j`-;q3ommB$KvDqqf3a~>UI}HGHA|$j|R*OR)ynxHzH9wGlJYwmk{TeTSw+6cj3bYZ_TU?*ZD1t%6sj&>*r{aCI zAANTgu008#u@GMj@z*A}_?3vTsFXT!NrQ5Xl#OmDo~J0?Xc-pl35f(QYX~NkY*7~& zx6OlBYiKRVrCWjp5=-NTd=RqcXsxDi2zB}^y)hWbf{FX14t=2z0RY{ud2fe( zTglXYQT zJ(V?ivRu@KQ+O8K?7f_yxS6WhyL%1;ju|goNQS%h^C5hWaJILE%b-;GRJ>7`+SFA_ zdCfg@uo|fAnA{gcqMGPkVdR}HQ>djSrL>fk2MUb#k%x`6Wk-Y6( z%PYYFdV`KoOk7&JB@jgVi@oo;x*7Nj=Q9#KK9G?NXD6rF3>WdB0dUQ;OEqm(I@mjW zM2%tNc*oT=v1E>co^g!w-(?R|;ffNcBOd11Z!_3y2l8$ic^t%mX^7rZ*1O4;tRPYt zd06u)4f7dxyBll%X5JRsT3L?%(5f_ zh_QOHv?WULyTlEVTo0eBlBVInRy-5$40gOhgWwDa>ROtSvU|2kz4Dx_?VK-eI?@^u zfGp$*oFWmw%ysm-Cpnvmy>~v8;eXj6Ca^ViH;G_GOU%qj@BId>4fx#|%)3G{6W2Wq-^_d%YFE>%M8QuvjT52{ z-~4V)1k!pk)^bCRw2@7)P}zu;2L=$)H?b{VeRCxvfc}JGce5{v^3$N&@}Yh3F+3*X zJY<-En+{J!GaN)z^pg3Dy9bfURS+$Ke;tTDSv*wuOlBahbxN@P` z-7o$~pXe&%EP@edStUoRCGH-*5MJLvN7cFo4@4sK2=JFJGxRldKId98kFozD(Ci3g za#YUxI29 zdzzd)z#|ZwsNxBTD=r*o{RG}jl~|=p=oy)cedXmaVj6oQ0)e< ztJ}luFu&6m=r3W{)0zVLhi_2=mPL9|R)c5oP$A7{XPczu@2!iXj3o@|4lZ!Z zQ{A-G7g>^fY^>K>PDiUPs>3izT7$irQRF%h^<63qfKftBU&WMQbD+ezIXvhF3f`fi z2P@*3333iFFl5AW)Mwpa^j)s6yaPgGF;tWycI?6H&%D)P7`VwT~J$|>SXMcyF z`;vuOPunc~yF5y%7*x-(w5|^M^{3z+)>^3fW-D5@f!1HKA9_tVcQyJ@K6%GjfXtgW zrLRYe0F5RXDm=@QPn`+wTj3|f*O&KOfC^NxqFL8}aFa6R2KJFoghw^0nu0TvN1D# zU4NcN3n^NLrfu1JiKTO=f7QJy9|65URIG{1VZ z-Q^k>c%)mOg4(sAW;||G-K(Myg{#+$*A48T9)<@sJIv#s8VomY@0z4Fh5n?=wMGX5 zcA=~T*37KJYHg2(|ib*4= zC|I2~kC12KXQ$UPfgW0Gv%dBj;7ZdKHdr!4W=(Mn4?r0=Fudn{#ooR(BU7@N8dd4o ze@D$u{R$!rrSGQpJ=`0fZ~| z8l3Q7a0Sk_uy;b-6)s=U=J)1R9L=uoDx!c}f_{he*vK5f^d7dr3Nn%^wA-t%+PPW= zHh?-Db_GCyU=X@RD{tj?IG;J+c!Q+5T}7`md>$>-9|AWaks_&P-Y&D#58XdFHjDcC z21DUv4|G?)6_S_ZK0y^og?$ey{#akVsdSAFkPUdO;YqZ39q2 z(T`M!*l3^L0}m$z)QkeW+^00ldi9=1Eh8-SD~9eQ8|lED$bWVd7?PcTYK2aD^oO*A z(0t{?0k;6}`vv%8I0)FINj@lBSB}D1+kp;+-OYFW@`UKq4d(~fOV`?3<-5K2-TC_I zY4zRhVeskF`*IC_eRlcs9KCQPoS=D01JsmSZ>Ucv+5DADWfOk&$rh$073g+Zl`o-i z>za@8^J4Prt31vh`%ks1bJSjYPAk&QjIT_r(R}|knVpdANmnO}=_?-{2(?*zo)bjO z;@0PsoN<+>*rU9BDs;)3sbi2A7_ns(rd@Y?hCFj67n9`cDeUx%3pFT+w>=k>I&xo$ z@~O1I>0S%g?gCc1th>qn^nwoi82aI6%HYfz6Qu_eti`=VE^?pm#SU!QDV1uDzT>OB zhMoXcZr}xdH`*!^Ru7MLYe2@Pt=ofGQ`%l(L~N}*$|c~qNd+I^2T%*hU%#wj0I+8} zrerTlo#{Wj2=G8RNgg78p$R%TZeOEbcZU&}rU=Lre!|=8TqP>I1jnA_d&-

}VPr9qNfc6X}8 zM#X>t2!H@`_ppe_$5Pdh&(`do^aRWd9$12X)=*U*$1WlvpTT)H0#`4i=>(YBBe4OW zO&h=RKx+*tSc31G(9Gx>LlL?0FWDGQqnOERLtq&+~GgAGWAzTNCTQPHTLpO;N^(;ho@pir)- zi(^Q|t+&@3c@GE(I0PQ~r#)Ztgy56Cj9coKgf9iE0D|xpp0AHQDSkBduW7oALL-Zi zhe9JmjOnNE*ZKGO?5Sz0`c$>?WsB5jCeAO*-{c2~X4GC`-jOBo`Cl_wDGL+WlpUuS Y_8#RlYwY4XJ_{t^>FVdQ&MBb@05WqxIRF3v diff --git a/companion/src/images/read_eeprom.png b/companion/src/images/read_eeprom.png index 3597bb50566f3dc3b93093e99adfa1a661a91c5a..a331b4af11f71b66b032a2730e4901063a7bc829 100644 GIT binary patch delta 265 zcmV+k0rvj21F-@jiBL{Q4GJ0x0000DNk~Le0000W0000W2nGNE0CReJ^pPPle-IKk z7!^?FtN;K2zDYzuR9M69l`#&&AQXl_8V5&D;zT?JhjDc5=;&cMgfT3=iKA0-p@tZW zF)g6U`;&&(pOXJe^8jcpwQ%hr)HlG_2H%HJA8OSqyedQ-J_6V9j5Q$M!-r^YC=HPd zUj*?D=>@n0Ti`VF%^7$AJK%`uUtgsX?`wPcCN##pj#X=|D&bAqBnrHz4YkRpr zFzxj&8d=#>p8%@$S=YMb1wa4^kSNJ~P~O z=#UTt!-3E%_roQ`bo_Sgjl5uy_$|Hham$Uxto@sR*}Y|Zv}RX0x7hJTb3Mfj{8lvI zZaT&(e3I!nr{Kw^Mwekqaf;+C%3>8JHsW2Kh)$vb}x zR!=L`diDGLo2)-OYp<&1t~$;C+0m?T@^Up_%hz|Fr-hcL&bYj9eoETcx3!yX$5HNKcqhedWpf))z4*}Q$iB}1H-Kg diff --git a/companion/src/images/read_eeprom_file.png b/companion/src/images/read_eeprom_file.png index 6c86a71954511ec846eb041e3227f75c742362ba..4dc1fdb154387812fdbefd8054d07cc51e892f57 100644 GIT binary patch delta 196 zcmX@X{Dx7nGr-TCmrII^fq{Y7)59eQNGpIa2OE$quB!SnQPHSgK$uZ0G}0#zC{*d` z;usQf`0XS^t^*1@uKVX!%~~hB_y02StX)eKlDeFQHUF?j`h2i=VleV&Q;0e`L-VZ9 zzbFMpi!YzK9p3&5z3=*b(s41J&ItwHPD+Q}g@k17CUNlRt8UPmV>9Qj;kKve{t4;r ukGOy4YghWYZB@)73m90XG#nV6PVl}B)5@Hwr@{+#1%s!npUXO@geCwM21Hx{ delta 417 zcmaFEc!F86Gr-TCmrII^fq{Y7)59eQNPB=V2OE$KeY@FxqM}hfKc5+E5%;o}3=E8+ zo-U3d6}R5r3iLbVAmaA$zh8ROf@4447?oJBJ9|}PenfM(Lf6|ZG4Z{DP7_Pqs`j;* zJH5B%S)vFs^>d1F>~a5++WA%dvp<~u@wzB3iGB8uBXYZ!OrLe1t7gq{z1OPg`hpo} zF2z;73u@$xyq7&=XUc;5TESH_x0ft1oY-|H%6WmalIZNs(;TkWJij9IV!6lGv*Erf z>dXubGZtEVu8)7$&R1!3R@HC97aOB-I9=Kexmq#dhT|4%@v%}PiN~sI@Ek9@5aep>-aZz)_UD4 zzpHXxYrAvJ{clFb`*+5!*>C^ScKdf<4z7b!bkSV=@dR9M5+mcL2^K@i4&b0i?biBDpwt*vik7r{d9EPWEO_5n<=N;)m_ z4i+LpFrUpu)+2j&`{yoXU|_kOz4>wFE& zDqRl&qV9a*>@E5R(d0Y{L(Q>{i8p-murPa3S ze3ubaDgzdoK=cB@S08S>ZS0gI8ouz>^`~QPxcXvdXR*$^0&BIGbX4CQWz4ahbaejL zD3T}Sv9-`k#1x@#uho9F`XWaPtYiIb((!l6@%S*92NYNns)4ksWs`|0dUU>9*Rw?g z+s!%@o^p`TMy5_)rwx42`d!kwq=HPn?{j3HbVyPe(ggzU0-|=?uy+IS^!S`K2i6fY z;Ga$=*JTQT=wW7N0<>Jd?*@P~jLJS9BuO$ffZ%DElU(Lz_L=%z&n~~^T*2<$JEd#@ O0000Kn#ZcPG*`-7o>iH1gkytz-_th|NjR_m6jW-I92q} z1*%mk$s{osgbLD*+K^_P%8!&&tFisoc0AJ|QWQl|6h-L-{{4sn!o(5h8-$7@#y3hm(F1X!`U+v|N3-b7R6umNSr7>qi5oD?l*)5E-pS? zs4%U?X<8NsM?7r>e2N`jEEe}o4A~1EI1hbdBBJ$rO)&-Py39_tw_Gkce@2P*hV6Ds zeJnBV%7$~UmwPdsS)4!Qd9It)5RZ?Ws3mr6=^&O3pcWwzANe`DwlRA(7L`G5^rTit zhk>V@DnK_NwgSxn-+Q>#-H*1IIYSL&aV6?S?U9DE1 z0DRUGdxnn>4_~zhg)->NDv4QQ=bCp~TX(bBKr<-7_w6^`YJ^DBW=F1F9(N#S3Etk` zXa*gUSo6=II8uQQsmi~PSg$fY?g;Ys=8Xyz;{Dy73KU{KpBoh@f53D)YZPmjulcC= zh(@DPqd(`-=b%q=lz9Na#~9u&`i7aJC~|8v&;9+=(;ma&3!i1!5s`mpO%M@0m98lA zD-c^}9T{Voh^gX|d{qz;lS?cNOkENCqV%-i|8#~DbDh1U)TV66)KyI=iqhD`md;Vg zt|O+Q&nx?5UlITwEnZtn5|A$|s_L59Fu{NlW5^hggZ*&0z%Oq^xt}Tz?ri`7002ov JPDHLkV1m41MQ{KB diff --git a/companion/src/images/recentdocument.png b/companion/src/images/recentdocument.png index 92b63686f6eca997ec2af5f1004206e3d2537cd4..1dfbadb5d8552712ca8f91cf980482fce6639abe 100644 GIT binary patch delta 483 zcmV<90UZAI2Z;nBiBL{Q4GJ0x0000DNk~Le0000W0000W2nGNE0CReJ^pPPle-IM| z6^B!#R{#J3mPtfGR9M69m%B>?K@i4&ci4z1S}0NQ(P$&Suo4S}fC!crLJ-8#`~zBR zt!QCTu(UH+S^H>Gs0a~32(h!U5;3KZ*v!EY?#^7CQ;Q4?d-u(^v)}H`-rhmo>Q=XK zD@XL~Ukfl7;U%q>_iimBs(>DAe-TjyU@f8+0RSz)t6)cA9i1u?N8v>t$NhzE9BK_l z139${i1G-WZxSv7Gr)x0=Ydlo6L%4&RMiLhGB6T{fQ;gt0SiD8C;)T7iHdJo3s_O{ zS%p7{dp0ecPaq96SqN}dY)ZTg3;}IGYXyH&@m&i6tAZaZEHBt_Kyha!f4*iR;9Brx z0DsA+Pf}tR76P7CvYgtgDd0_FX~oY8w+uX5yoeg59R!+{*m<@53B?}=N^)&dgg1hZ zDl8$`2e9K)2V)YyviKs}kTz4X%mtqv;MuO~`(pu}>bg&oZ->0*yA{97>ZJ2#R07%+ zelPA>2k;`?ee2`)T+M6~Ip_!OfLodAx{6=Mb>{C?@uhqi_y0q$RDMwn`UD&R1ONKZ Z=L^Hd!R)Qvcm@Cf002ovPDHLkV1m%9%Sr$M delta 979 zcmV;^11$WB1oa0YiBL{Q4GJ0x0000DNk~Le0000;0000;2nGNE09Ea?N0A{ie-94? z2;d0h5&!@Lf=NU{RCwC$noUSmK@`V-zO0vo)FKrTp+zYr6|{&1DT6*1Zfeo4B7$h) zrcFfVA|j9^q7Njfh$33lB7&9~8VN>(W#OhGi4a31lF~G#+v3fG;WYQYFYkMIF7t;A zZ|2RM%lzJ%bMBe@z{$zU$;rvdf62+o$;rvd$;rt_UdUIs0~B*eo`Vz(K-NN%i&#us zC*uGqOhCi|QrLj3hg1weRzoTlAZsBN6OfgViVes*NTmQ|6{J!D@`JP}Dz_*@mP846 z2;l%ZKw&DXF{msmaVkz8RF)^$SY)vT&gsb%)1r`KndWH&jRlQE!x-~?YkbWf4ze7SInOTp4twm!!Umw*lQT;2Pmy( z;IlSnK|$&&bxg_^P>WiGe?E5vsPh@02@pUn@X`>Iw%X`Huf)7jwLob%t#vAux2n&6 zsscU<+e5YiY7=u7#IIav;NN8M&NiC>4T?FJL&%QZV*a2lfT|7NQyW48s5N*|wGGAU ze$gIKnJb&>J{L&oI!)IO8vwP4c7GlodjqJ2_VRJpAB0qna7q~11vSzS(&4) zlerWA^@%=$ym%+|QU_$iG1JAYgDqyqLp0#0%-4o;6b4=Cg3V%x$_i7jO zZbe~>c^RO+5$$aOf3}VTOSJYgU=Oe%%kn{H%y&`nATI-?Cei=hCoYw%`pi>D8E13+ zVUxDu-k!!DmNUOd87{L zO%H&XP85@>Mw9l2RS9CH>VOYE&pG>qCj|l8?qg>RSc~QIgOpz2CE$RFD|bj8y`BNy z2h43CCaUBAQ^rEBkvPFgYZ-73m?;3v0;!jfD~Pe`fvfocalv%W0C!2fL|hb=S>jPU zf!)AHRe#l}DeN}|d?EGfxfgh%`kb7coSdAT_y@1wy=UA_8Pfm&002ovPDHLkV1i{U BxiSC% diff --git a/companion/src/images/save.png b/companion/src/images/save.png index f0550d979c9943b9f8ef462377be51b8cf331936..6466d65282d604bb3c8fdc62d72af3e88b8f66b5 100644 GIT binary patch delta 168 zcmbQibdgc9Gr-TCmrII^fq{Y7)59eQNGpIa2OE$quB!SnQPHSQKuBJ#GbeN{P$6gv?)dPShsAp;DgUh?(UbZg#${NHpa5+BrtO86n1SbWjZ!P*m@(E(b|nK Rcz`xBc)I$ztaD0e0ssK+IEerN delta 240 zcmcb}ID<*CGr-TCmrII^fq{Y7)59eQNPB=V2OE$KeY@FxqM}hfKaZ-VJ-`1XpwLoJ z7srr_TW@bTavd@dalN?QL;YR7yxzgwo1SyHw>eE#Yb#!G*}uwDL4^^hn&HL5l3(*Y z-!b_Ltn4r;Tkuf1R_~j~f%s?oo^t<1UcPa-*{O2DZ;6)PROZ~XdhFM?n$~-M%KDgp z-Sb^S_UeP1S-KpUI91#(^yD$$KlN6@{fyx2vh3~6EJ7X%jRHUnX0Ql#=ttR=i&&o! ebXEXa+K_e6hwXyD#PwVk5ZBYy&t;ucLK6T)V^t#n diff --git a/companion/src/images/saveas.png b/companion/src/images/saveas.png index 51fcd6936c280acc4a1f7a833d634a67b234ca87..9cc2a72efd7861401e9f1b9633eadd850b2798c5 100644 GIT binary patch delta 213 zcmaFJ^p{bwGr-TCmrII^fq{Y7)59eQNGpIa2OE$quB!SnQPHSgKuAgMblcKipiq~m zi(^Q{;kVN^ay1z6xac4KA0I1oB=YakVyzAj-;KWA&m5<*UGgrP!qoS0wNfxF_b%d9`Y9@#)jb+zogC|MTl&c9GF@=suXL1auaI Mr>mdKI;Vst0A`9(X8-^I delta 314 zcmey%_>f7lGr-TCmrII^fq{Y7)59eQNPB=V2OE$KeY@FxqM}hfzW|r?TmKw>pwK%{ z7srr_TW@dq@--O z{EjOtt!pT2FmXD?J4Np0=alCRev$PZ9lxhdxW?ASCA5I+lG0o;Hm$X`=WNzr`sM6m z6CHEAQoVXZ`0Cd0O!XoS42(=$j_Y-nKb@zren$A3+w1;*xWB-}JmIv%W2uCFjv#p! z4gm#+TQV267oNMa(Qntw?CzZ*yqUp^U#d0lW}Ud}k;|69iVw|%S6cgdFWBj!SrEni zw|fd(I`4w`i9rujZZpY9EpKC4-T+2TEbbt;m-O7*Y`or2ASnInS)kt;JYD@<);T3K F0RZY&eGUKs diff --git a/companion/src/images/simulate.png b/companion/src/images/simulate.png index acdf192d6e26952560bc08ceee5515d5dd6c04fb..a7020777fb9f50e31071491f97b167b4913ab04e 100644 GIT binary patch delta 196 zcmeBYe#5BP8Q|y6%O%Cdz`(%k>ERLtq!mDzgAGU)S5f-l6Yks)g80j?>lxY(`=%yU>Cb(mEn rqt_=hYIcB;8y5baCZ_sf@?Q7=?R2R1uxL8S8(bH zy7d5#&JI05gn~nt4%JCIB+*YzDgFM>55C#(ke4KaBuSDaNs=T<`I-WkW~f&HbKuq# z^?^3P2XJSO`arw$?Bw|H>dz~1ZJ_e`0w$R(pz%OUpyy-0`pkf~ zFN)=}21b5r_#Jjspl{%bfPbE)1S)_bK^+S82HX%>vFF|9G1qsSa|68tJ_A%4=mqGQ zr5xxJxHm_2paszV4;S0|gWtRY#=y#ZMUo^*k|arzq#s)vc|Uu4tYbX@0000UiBL{Q4GJ0x0000DNk~Le0000W0000W2nGNE0CReJ^pPPle-IHE z8FCF!4gdfFEJ;K`R9M69);li*Q5eSYA92arLZKusQBbUiT1doKPzY)fB?^s1C=n_j zfksQB(f9&N(MwdU!X-p#W|Pf0*-gwvGymkR&NK5o^PV|x4h01T$>>b_g4RDiw}dK2 z^8VsgJmWj6N?yjBc&{_ARbQ5-e{I+anBHMAE7KN~aTG87hMhX9a)}& z+o)a}Xh!jf`LsGPh3mi;9Ahw`uheOtu$)$qVVnkn+(dJr#y~*xhV`_9bmJgk@{RsF z-3snw>tEPTFz|k{ftMzOXd0J+u=^-QCoM4xc))lAO%D$784Hps?M>EaPH>)OfDmPD zMKdHmLFckGp2bCA@2@bKrEzcU$E?)}hVp26C1$)AZ9{I1;R9>`buB9uH`9WGB>Vt^ WVrW*x#|_c|0000iBL{Q4GJ0x0000DNk~Le0000;0000;2nGNE09Ea?N0A{ie-8}> zIx;{|y#N3LSxH1eRCwC$nLlXMU>L@Kguo5wAP$8Ng$|`642Hx)z#agc&^)^aXNagjQR;Lz;`J5>})>)sxAE%XbiXt z%mMpCi2Z&EGyz-#&H)Xj+&{E{r@$7l)8oow5@s4$c8IcL;w=FOV-V&j@Y*TNSKy}Q zrJ*JPP66+n!h8TO#E^?p;HcA2oJ! z)e)fWJZBqtZu4IdG=a;`e?~Izs>8bo^{9Y5mqY5-6W}zk>U_DZhdUR5b>~@a;CM)_ zfhVDR_CYCdra<_u+DA%45o)SSLNB^7YZWLCYrrgn+rj@=Lcb1dP=2F$z&h@Ar%*wW zPv~V=uBq*%+C8=l!S0quD>|zMtPGn#RXA}Lc0il6*6#Fdb_+_iWpk1}fl3;12Kv__5awT1dPx zVU}$0jh1|f4Rj$^X9s-)9s>7lRuefU3FtSE5JCtcgb+dqA%qao@Do#$inwWmvWEZw N002ovPDHLkV1j+FDjfg- diff --git a/companion/src/images/update.png b/companion/src/images/update.png index 06b722e72b554ccdb2b17bf3be7a2f7f66165381..be4c746b04e91145d27a04808bc3dbce92cb8567 100644 GIT binary patch delta 357 zcmV-r0h<2X1dIbAiBL{Q4GJ0x0000DNk~Le0000W0000W2nGNE0CReJ^pPPle-IHF z33j1zD*yli8A(JzR9M69)xAmsQ4j^-FKVNLSXxMI6jA)^d;%53w@~n9EQ}&Pf`wpX zVA0IxbL0163Sgq!;3s zA=>HL=%)Bph`eG4qp?1X(@YU7f87w@jN~sE@4(p$&TTi{Z|Cryg11<70q>D`D2I0( zyxp%z1HUMs`OaGouNHBv=mM${=W}?=5g&^F1xN8|&pYgwFqxTz!J-RT%_Oh1*`LTX zU?neE>4)NF+_ku>;RKIZ!d9$bW3EW&OK&Grhd=p8F{-L_hi^E;@NXW;-Dv;s4`43lKt6?JC62bM6f`;+-LJ3BK05fKp) z5fKp)5fPE!(e%&0PctwKOar4pe-`Kg9)Ww{8YlvXz(<;HR5LIGlz>Wv;{lijTG9|s z7C4R=jD1`I10jbqWFDPLg5%jdmci)*?i?L{12%whpdV;6pCiB$@Z`9rY|aTr3vlY_ zXc5RXxV8&ecU*fB(wJ0mba45bH5MH;3ZeXZ?6=i!%vw8EosxMZy_R>3e>s_$wKC@V z>U#N~o`3wdNvpkW2H7~uz*d9$-Z``GcrIbRoK^3{_khY)hdL70>vxPpUbEjkNp)ED zUVI;eTpdiJ(`vu^9?-R8xsk-6)xPyTpd+h2ld#^j)xPw744U$39`qO59B;Cpnn~Y; zFp~zD*IKN$R$#Bj-cIUQfAjUisUDNo%zjX>>2$Bz4_XL$KPXB#ad#AR3Mb$_=_uhG z0dqATpP>KMh#F3N)%jzJ z8aPlm^<{y5Gk>W7n+nIR6X;e9A|fIpA|fIpB9b0o!$?M9h|(th3;+NC07*qoM6N<$ Ef;njP@Bjb+ diff --git a/companion/src/images/wizard.png b/companion/src/images/wizard.png index a205e06c94cdcfd8c0e48155cf333018c7bd828c..edd01da610ce8eae7f55bcf02fb0b677e8c43306 100644 GIT binary patch delta 1111 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 S2TL{p0000 zo-U3d6}R5biq1P^AmI9*XPd^B(5qXw{Jzh)+Obv5Z^pmHPL-zH9?W?kXj5F1>^e~u zXimfNBWh9Vd0XmyY}Lg4E9)gPkfTjyMPv$t(Qaa-T5+Ur6k zr#@VCI&aDy=k}t=HwSat+#Q7cF?@%*@N17Tj0adM(~~5)&`bc!tuQ zU%bCw`(K=O^>63oiT_1Y)Zcl%E>+1`Wvn5WnNwdmbXIV}r28Ie7y?yhpl|C)rTXXML(a#_;?%$I__-xLrL|&Zm zdtbGY>nY9Ccb&O<4OjH+T@o-)wfOVh6&im7w%n~tzkX)E`1)DPD|ghGze}mLub8z| zF{N(BC K=d#Wzp$Py`Zm;(M diff --git a/companion/src/images/write_eeprom_file.png b/companion/src/images/write_eeprom_file.png index 4b5ff2d39d5ee88ea7d6a485ee42b8ce082262dd..b76c3050fad30ff7af9b723683bf2c3cd68089b9 100644 GIT binary patch delta 211 zcmZ3^^qWz!Gr-TCmrII^fq{Y7)59eQNGpIa2OE$quB!SnQPHSgK$wBAz;Wh3piqaW zi(^Q{;kQ!^xf%=vSlqR}=v-t(IUxLBw%^+ z@b;za*$+5%i_2y0^GiC|?6u}0-;2M6iYnVa6ke6SKh2`qe$tNQTa3aJ7|$M@D>kE1 zW<}t?Nm=RY5i8Eln0w%@rtst4pLpN;`bkwY2~B8VQBh!Y4HTRANatQik6{PUQ4F50 KelF{r5}E+;LQjzZ delta 255 zcmey(xSUC`Gr-TCmrII^fq{Y7)59eQNPB=V2OE$KeY@FxqM}hfKc6|#o^~~WRFN%Ww#%Fxy5=V^JACTJF-&hYC-JBJ3FpCENpXs zC3~c^-iL`{L+{R2)2iMs54~@Bee;o-t6qIeoU_CAzkTe!p5j>!<&758;@5LsTU>kl uiM*hPLL-Y1h;V{2gg6>mn1C*3P&mi@H{H9j%7gtEi0kR<=d#Wzp$PyiU1df9 diff --git a/companion/src/images/write_flash.png b/companion/src/images/write_flash.png index 75c5a0657795bad2f2f8f0b725039fcaafa007d7..6af3c2950177b7980013744bd1ca9d7cb3334c3a 100644 GIT binary patch delta 406 zcmV;H0crk`2E79ziBL{Q4GJ0x0000DNk~Le0000W0000W2nGNE0CReJ^pPPle-IK7 zDV|GI^8f$=N=ZaPR9M5+R=rNcKn(sIwGu)KkHQFJS$U!&F_gYg)tLvNjOhkL-=bov z$k!#Qjwnv<$GHkiUe3Prced~I0slxA0N7}y_*9P1!Ww`8xNi=x0qi^WeY4KSPo~I% z1|myv4Fq!r?*qZy!TUgD5AK3Me@bu}SbqTUJhJ}=z{^y(`|8wK)9RY!)PjhX!U)79 z0JQ#aNvHLrMK-kbcJ1o*7YF5K-u`5#PN<1lxUjG#)KTY^ar;Q`g-9 zAB?V(d?H!E=bO%jIjC0w8*ri3kDk zaQMCs0B0DLQ+!C0BsYNIX=q6tvpkQzFlM&okqhjRAo`AP@)yg7XAb@n*bK9EZ?A zo-?+qNDjrH0+e-Iu^f_n2!q;)f9BAX<$2)I|On7wq=tPZirc*gKhZ=lb32qaIm&@gCmq7YNe+SM(P7DB> z%?2S2@?B=FUJ4pCyg!EU!hA4`mV#W2S7au=f`oAVc0mdUbe!~Oj>Xo)o~9SRkL zsE)!QZumX@dhwzdS`XwYX2Wdy zHp(94V+CmxV~`GI)vykVe|b@bHi#VjmSKOpqjQYOWImM)vS2!$e_-YXGp8YYkdHT1 zJH@E$Ztd_`O`04DCRYpWdcFQaL|>)Ep26q4yYJG2Y#H=zorEm0W6e9xuDjiCNixWS zpSvHjYS@sb-Hu#+9(Pd461={?k_=VLzTdqm^$xYM8W)MwGHh%yg|s0cB Date: Thu, 16 Jan 2014 21:47:54 +0100 Subject: [PATCH 146/308] Final icon commit. I have a couple of original icons on another computer hat I will add tomorrow. Besides that I thing this thing is ready for prime time (except if there is some kind of an uproar against mhotars new nice icons). --- .../originals/mhotar icons/read_eeprom.png | Bin 0 -> 1358 bytes .../mhotar icons/read_eeprom_64(mhotar).png | Bin 0 -> 2725 bytes .../mhotar icons/read_eeprom_file.png | Bin 0 -> 1374 bytes .../read_eeprom_file_64(mhotar).png | Bin 0 -> 2687 bytes .../originals/mhotar icons/read_flash.png | Bin 0 -> 1247 bytes .../mhotar icons/read_flash_64(mhotar).png | Bin 0 -> 2831 bytes .../originals/mhotar icons/write_eeprom.png | Bin 0 -> 1412 bytes .../mhotar icons/write_eeprom_64(mhotar).png | Bin 0 -> 2763 bytes .../mhotar icons/write_eeprom_file.png | Bin 0 -> 1398 bytes .../write_eeprom_file_64(mhotar).png | Bin 0 -> 2736 bytes .../originals/mhotar icons/write_flash.png | Bin 0 -> 1279 bytes .../mhotar icons/write_flash_64(mhotar).png | Bin 0 -> 2904 bytes .../images/originals/monochrome icons/add.png | Bin 0 -> 226 bytes .../originals/monochrome icons/add64.png | Bin 0 -> 215 bytes .../originals/monochrome icons/arrow-left.png | Bin 0 -> 222 bytes .../monochrome icons/arrow-left64.png | Bin 0 -> 431 bytes .../originals/monochrome icons/arrow-right.png | Bin 0 -> 227 bytes .../monochrome icons/arrow-right64.png | Bin 0 -> 418 bytes .../originals/monochrome icons/changelog.png | Bin 0 -> 307 bytes .../originals/monochrome icons/changelog64.png | Bin 0 -> 306 bytes .../originals/monochrome icons/clear.png | Bin 0 -> 235 bytes .../originals/monochrome icons/compare.png | Bin 0 -> 460 bytes .../originals/monochrome icons/configure.png | Bin 0 -> 333 bytes .../originals/monochrome icons/configure64.png | Bin 0 -> 493 bytes .../monochrome icons/contributors.png | Bin 0 -> 574 bytes .../monochrome icons/contributors64.png | Bin 0 -> 1006 bytes .../images/originals/monochrome icons/copy.png | Bin 0 -> 302 bytes .../originals/monochrome icons/copy64.png | Bin 0 -> 320 bytes .../monochrome icons/currentmodel.png | Bin 0 -> 365 bytes .../monochrome icons/currentmodel64.png | Bin 0 -> 621 bytes .../images/originals/monochrome icons/cut.png | Bin 0 -> 3651 bytes .../originals/monochrome icons/duplicate.png | Bin 0 -> 313 bytes .../images/originals/monochrome icons/edit.png | Bin 0 -> 389 bytes .../images/originals/monochrome icons/exit.png | Bin 0 -> 408 bytes .../originals/monochrome icons/fuses.png | Bin 0 -> 487 bytes .../originals/monochrome icons/information.png | Bin 0 -> 252 bytes .../monochrome icons/information64.png | Bin 0 -> 303 bytes .../originals/monochrome icons/library.png | Bin 0 -> 216 bytes .../originals/monochrome icons/library64.png | Bin 0 -> 270 bytes .../images/originals/monochrome icons/list.png | Bin 0 -> 345 bytes .../originals/monochrome icons/list64.png | Bin 0 -> 391 bytes .../images/originals/monochrome icons/logs.png | Bin 0 -> 343 bytes .../originals/monochrome icons/logs64.png | Bin 0 -> 619 bytes .../originals/monochrome icons/movedown.png | Bin 0 -> 312 bytes .../originals/monochrome icons/movedown64.png | Bin 0 -> 492 bytes .../originals/monochrome icons/moveup.png | Bin 0 -> 306 bytes .../originals/monochrome icons/moveup64.png | Bin 0 -> 493 bytes .../images/originals/monochrome icons/new.png | Bin 0 -> 250 bytes .../originals/monochrome icons/new64.png | Bin 0 -> 306 bytes .../images/originals/monochrome icons/open.png | Bin 0 -> 306 bytes .../originals/monochrome icons/open64.png | Bin 0 -> 439 bytes .../originals/monochrome icons/paste.png | Bin 0 -> 324 bytes .../originals/monochrome icons/paste64.png | Bin 0 -> 472 bytes .../images/originals/monochrome icons/play.png | Bin 0 -> 534 bytes .../originals/monochrome icons/preferences.png | Bin 0 -> 431 bytes .../monochrome icons/preferences64.png | Bin 0 -> 731 bytes .../originals/monochrome icons/print.png | Bin 0 -> 258 bytes .../originals/monochrome icons/print64.png | Bin 0 -> 306 bytes .../originals/monochrome icons/profiles.png | Bin 0 -> 257 bytes .../originals/monochrome icons/profiles64.png | Bin 0 -> 219 bytes .../originals/monochrome icons/read_eeprom.png | Bin 0 -> 305 bytes .../monochrome icons/read_eeprom64.png | Bin 0 -> 426 bytes .../monochrome icons/read_eeprom_file.png | Bin 0 -> 236 bytes .../monochrome icons/read_eeprom_file64.png | Bin 0 -> 448 bytes .../originals/monochrome icons/read_flash.png | Bin 0 -> 459 bytes .../monochrome icons/read_flash64.png | Bin 0 -> 616 bytes .../monochrome icons/recentdocument.png | Bin 0 -> 521 bytes .../monochrome icons/recentdocument64.png | Bin 0 -> 1001 bytes .../images/originals/monochrome icons/save.png | Bin 0 -> 209 bytes .../originals/monochrome icons/save64.png | Bin 0 -> 275 bytes .../originals/monochrome icons/saveas.png | Bin 0 -> 253 bytes .../originals/monochrome icons/saveas64.png | Bin 0 -> 351 bytes .../originals/monochrome icons/simulate.png | Bin 0 -> 236 bytes .../originals/monochrome icons/simulate64.png | Bin 0 -> 392 bytes .../originals/monochrome icons/switch_dir.png | Bin 0 -> 415 bytes .../monochrome icons/switch_dir64.png | Bin 0 -> 706 bytes .../originals/monochrome icons/update.png | Bin 0 -> 396 bytes .../originals/monochrome icons/update64.png | Bin 0 -> 599 bytes .../originals/monochrome icons/wizard.png | Bin 0 -> 1144 bytes .../originals/monochrome icons/wizard64.png | Bin 0 -> 1818 bytes .../monochrome icons/write_eeprom.png | Bin 0 -> 359 bytes .../monochrome icons/write_eeprom64.png | Bin 0 -> 444 bytes .../monochrome icons/write_eeprom_file.png | Bin 0 -> 251 bytes .../monochrome icons/write_eeprom_file64.png | Bin 0 -> 296 bytes .../originals/monochrome icons/write_flash.png | Bin 0 -> 445 bytes .../monochrome icons/write_flash64.png | Bin 0 -> 634 bytes companion/src/images/read_eeprom.png | Bin 305 -> 1358 bytes companion/src/images/read_eeprom_file.png | Bin 236 -> 1374 bytes companion/src/images/read_flash.png | Bin 459 -> 1247 bytes companion/src/images/write_eeprom.png | Bin 359 -> 1412 bytes companion/src/images/write_eeprom_file.png | Bin 251 -> 1398 bytes companion/src/images/write_flash.png | Bin 445 -> 1279 bytes 92 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 companion/src/images/originals/mhotar icons/read_eeprom.png create mode 100644 companion/src/images/originals/mhotar icons/read_eeprom_64(mhotar).png create mode 100644 companion/src/images/originals/mhotar icons/read_eeprom_file.png create mode 100644 companion/src/images/originals/mhotar icons/read_eeprom_file_64(mhotar).png create mode 100644 companion/src/images/originals/mhotar icons/read_flash.png create mode 100644 companion/src/images/originals/mhotar icons/read_flash_64(mhotar).png create mode 100644 companion/src/images/originals/mhotar icons/write_eeprom.png create mode 100644 companion/src/images/originals/mhotar icons/write_eeprom_64(mhotar).png create mode 100644 companion/src/images/originals/mhotar icons/write_eeprom_file.png create mode 100644 companion/src/images/originals/mhotar icons/write_eeprom_file_64(mhotar).png create mode 100644 companion/src/images/originals/mhotar icons/write_flash.png create mode 100644 companion/src/images/originals/mhotar icons/write_flash_64(mhotar).png create mode 100644 companion/src/images/originals/monochrome icons/add.png create mode 100644 companion/src/images/originals/monochrome icons/add64.png create mode 100644 companion/src/images/originals/monochrome icons/arrow-left.png create mode 100644 companion/src/images/originals/monochrome icons/arrow-left64.png create mode 100644 companion/src/images/originals/monochrome icons/arrow-right.png create mode 100644 companion/src/images/originals/monochrome icons/arrow-right64.png create mode 100644 companion/src/images/originals/monochrome icons/changelog.png create mode 100644 companion/src/images/originals/monochrome icons/changelog64.png create mode 100644 companion/src/images/originals/monochrome icons/clear.png create mode 100644 companion/src/images/originals/monochrome icons/compare.png create mode 100644 companion/src/images/originals/monochrome icons/configure.png create mode 100644 companion/src/images/originals/monochrome icons/configure64.png create mode 100644 companion/src/images/originals/monochrome icons/contributors.png create mode 100644 companion/src/images/originals/monochrome icons/contributors64.png create mode 100644 companion/src/images/originals/monochrome icons/copy.png create mode 100644 companion/src/images/originals/monochrome icons/copy64.png create mode 100644 companion/src/images/originals/monochrome icons/currentmodel.png create mode 100644 companion/src/images/originals/monochrome icons/currentmodel64.png create mode 100644 companion/src/images/originals/monochrome icons/cut.png create mode 100644 companion/src/images/originals/monochrome icons/duplicate.png create mode 100644 companion/src/images/originals/monochrome icons/edit.png create mode 100644 companion/src/images/originals/monochrome icons/exit.png create mode 100644 companion/src/images/originals/monochrome icons/fuses.png create mode 100644 companion/src/images/originals/monochrome icons/information.png create mode 100644 companion/src/images/originals/monochrome icons/information64.png create mode 100644 companion/src/images/originals/monochrome icons/library.png create mode 100644 companion/src/images/originals/monochrome icons/library64.png create mode 100644 companion/src/images/originals/monochrome icons/list.png create mode 100644 companion/src/images/originals/monochrome icons/list64.png create mode 100644 companion/src/images/originals/monochrome icons/logs.png create mode 100644 companion/src/images/originals/monochrome icons/logs64.png create mode 100644 companion/src/images/originals/monochrome icons/movedown.png create mode 100644 companion/src/images/originals/monochrome icons/movedown64.png create mode 100644 companion/src/images/originals/monochrome icons/moveup.png create mode 100644 companion/src/images/originals/monochrome icons/moveup64.png create mode 100644 companion/src/images/originals/monochrome icons/new.png create mode 100644 companion/src/images/originals/monochrome icons/new64.png create mode 100644 companion/src/images/originals/monochrome icons/open.png create mode 100644 companion/src/images/originals/monochrome icons/open64.png create mode 100644 companion/src/images/originals/monochrome icons/paste.png create mode 100644 companion/src/images/originals/monochrome icons/paste64.png create mode 100644 companion/src/images/originals/monochrome icons/play.png create mode 100644 companion/src/images/originals/monochrome icons/preferences.png create mode 100644 companion/src/images/originals/monochrome icons/preferences64.png create mode 100644 companion/src/images/originals/monochrome icons/print.png create mode 100644 companion/src/images/originals/monochrome icons/print64.png create mode 100644 companion/src/images/originals/monochrome icons/profiles.png create mode 100644 companion/src/images/originals/monochrome icons/profiles64.png create mode 100644 companion/src/images/originals/monochrome icons/read_eeprom.png create mode 100644 companion/src/images/originals/monochrome icons/read_eeprom64.png create mode 100644 companion/src/images/originals/monochrome icons/read_eeprom_file.png create mode 100644 companion/src/images/originals/monochrome icons/read_eeprom_file64.png create mode 100644 companion/src/images/originals/monochrome icons/read_flash.png create mode 100644 companion/src/images/originals/monochrome icons/read_flash64.png create mode 100644 companion/src/images/originals/monochrome icons/recentdocument.png create mode 100644 companion/src/images/originals/monochrome icons/recentdocument64.png create mode 100644 companion/src/images/originals/monochrome icons/save.png create mode 100644 companion/src/images/originals/monochrome icons/save64.png create mode 100644 companion/src/images/originals/monochrome icons/saveas.png create mode 100644 companion/src/images/originals/monochrome icons/saveas64.png create mode 100644 companion/src/images/originals/monochrome icons/simulate.png create mode 100644 companion/src/images/originals/monochrome icons/simulate64.png create mode 100644 companion/src/images/originals/monochrome icons/switch_dir.png create mode 100644 companion/src/images/originals/monochrome icons/switch_dir64.png create mode 100644 companion/src/images/originals/monochrome icons/update.png create mode 100644 companion/src/images/originals/monochrome icons/update64.png create mode 100644 companion/src/images/originals/monochrome icons/wizard.png create mode 100644 companion/src/images/originals/monochrome icons/wizard64.png create mode 100644 companion/src/images/originals/monochrome icons/write_eeprom.png create mode 100644 companion/src/images/originals/monochrome icons/write_eeprom64.png create mode 100644 companion/src/images/originals/monochrome icons/write_eeprom_file.png create mode 100644 companion/src/images/originals/monochrome icons/write_eeprom_file64.png create mode 100644 companion/src/images/originals/monochrome icons/write_flash.png create mode 100644 companion/src/images/originals/monochrome icons/write_flash64.png diff --git a/companion/src/images/originals/mhotar icons/read_eeprom.png b/companion/src/images/originals/mhotar icons/read_eeprom.png new file mode 100644 index 0000000000000000000000000000000000000000..01b3402741fa1877d8dd904017de627e08011b9a GIT binary patch literal 1358 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 literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/mhotar icons/read_eeprom_file_64(mhotar).png b/companion/src/images/originals/mhotar icons/read_eeprom_file_64(mhotar).png new file mode 100644 index 0000000000000000000000000000000000000000..9c575eb53a4db2956a23aa9c234c21f69c101211 GIT binary patch literal 2687 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 literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/mhotar icons/read_flash.png b/companion/src/images/originals/mhotar icons/read_flash.png new file mode 100644 index 0000000000000000000000000000000000000000..dbba623d8b6cfab41393af4aa79d3bcc58335eb6 GIT binary patch literal 1247 zcmV<51R(o~P)*Kq-hWN8{{S!yd<#4!U`Buz;7a?>yoNpQaB}UhyT;ODioQT_fqOEUOhU7Xb^+sBSRI;Pp|*EmF8{k)jCQ5i^UL1RB>8h9|6Y^*D6-viac%(HwOamM*736G z23DpFwZT~wPU&z4aF0Zx4T#R*tsj&9L5MLr^7U6wrMoVPp6yQInSw6r--Q-YgVs8scVH`m z*-}GYT^&lPR^T=r0FqE9kfF&B%JY3qZ|k~y*Aa`wIMmXD9e8E;ZW{LNVQ*t2#l^({ z3=a=;{8%S;;KllSnwpyE?d@e@!9v^~H<&!611JYB01JV7safRxEbu5WASJXQKR=(b zu`z6bBR7}3SFIuw*x%SldV2ab0KX5D0X*UNv%>4;g ze0UgWO-j;2>1tJgM>5?gC@27%$)!t|Sh0LLnSg0CaX1`UmPJuv5kCMQ1OhY%0;B_l z%UndG(J3h%k3g+9%bx_klHQ*qAgbjVXDrL2YD*24-G%{JX?Ch=9>KCK07^?sxog!* zE(_xH{5*WV4a8!xDG3#iz+vgrj|s==f()O5R8{44I@!MSS%!v&NJ~p25{VEDCMpb9 znTw@MmJ$w!al73_B9Uol*tPe~z-PeQGLp9f`y>ylMQ6{nzN-|Yqoer!{%Kzqrk9bP$)!3Mn*!hq@)C&&o?80zP`Q$0Mj%X9Ua9m zjo(yEO#zThMe=k@BiaR6z^9#Eoex&7ujK00s{ouibB2zNjzj~R2B5zW_cAw1DXfS^ z|3E(q)qbO^(pnir$rsWFV642nJh!5vf~>48CMG5bhr=@-WVhRKI2@cica9@pAHlM$ zXHdL0+q>HRfKRwglfNV&^Jh7C6wqU{+1`joqsQiZVKw-#(cfbboJNJdT0{T<002ov JPDHLkV1i}9F(Lo} literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/mhotar icons/read_flash_64(mhotar).png b/companion/src/images/originals/mhotar icons/read_flash_64(mhotar).png new file mode 100644 index 0000000000000000000000000000000000000000..4f3367a081176ecfb3842fceffd6a29cc8229792 GIT binary patch literal 2831 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 literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/mhotar icons/write_eeprom.png b/companion/src/images/originals/mhotar icons/write_eeprom.png new file mode 100644 index 0000000000000000000000000000000000000000..194e00bde1b46965cffc1dfe51d32e34bb80279e GIT binary patch literal 1412 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 ROTPdB002ovPDHLkV1m(W7T^E? literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/mhotar icons/write_eeprom_file.png b/companion/src/images/originals/mhotar icons/write_eeprom_file.png new file mode 100644 index 0000000000000000000000000000000000000000..dcdcc3577f5c920e2194108053839dc15d5797c4 GIT binary patch literal 1398 zcmV-+1&R8JP)21p`S$ zK~z}7?U!v#Q&$+rf9F!yVtEO(a{W_}~&u<^W|;jKeLVZUTEzRxxw9L3oh}Q)*eut+!_%yfk;EAk=-^ zp5!Laeg5~H^Y8yW=R8m0ziz_duLhEJ-vn6ZF@6&80-7O~4Ji84AM<@S5CJ4`*9g3& z2NQY5fklS7iVWCIL;SWO?u`8+7Z4?UsP-=;)Zn z`eNo=0X)*NpMW0S4*@U6lX43n`}+E%lv18Lbt*1_wzf7YrIb}wRT7X=O6m1_r}6GM zB*KRAlfVnH3oB2XL@t+$rluxnZLbz+6U zaJ;dmg)G$H-%oFEFXQ9mGq6Y`f-ZHe-I#06xCHdcW>{rq<$Sp+`VrUWz$3E~C@n4J z;>C*yArjdUJJ759KER>-UjXI0{{hf2D}k)6EEGk-Y&MgTk+Dz$xAcU&sqg&_JvP1g zJ3#B4TM!He$;`~8q@;xQ_V#F8RaN%v*@M|^j>f{_Fb5AFBu?@b=p>wmi)Rzi_QV{x zbm(;Gf zaBz^FJ9n~c*RFpkpsFghwY77RDAH>{`x8%rrfE2xPO`JJ85$ZQJw2V`;$nJwdQepr zA;dxyz>tW(c^yM3C1qu0q@<+acDpGkDB#GEBV4_DHJTe$RaH?16h%SPG-_*Wr%#Mb zv>a~%n)~|t$ji$EAT2G8&6_uK`t<3z1Dl$gxN_wRqjyJ9k`!87TM0Z2jOtRyyI~^; zdQfOUVgg^)peV=~J zW-|}{583_UZfwulIN#jFZ?}4BY;2^vyPL_sCb8S?6c!fZ_fOE=+|18E{74`WV8@Of zcsw4YlwShrMg_i-QdY(^7V#_u9CN$f$x=$rHa21c4jnqo(W6Jn$;oBevSk1a4G+`t z&9^APM+Xkj(9nR-=VR5XRXCgue82eKlTw~EZbAJ#^X8<@W@CJO93de!IhoftZseNR zOWmiR@V>_rEnH?`>$Yud+^~WD`}XmDS0_b9Mc8aMq?82sg-|HOOLjZS zKtu?ZELno4X=G<-@f~pX%o#p!Y{UX&<>#Ym8p6h?1Z1PaqWWhm6RC2%PWi?A%sTQt~*VgrL8_p9>c*%&LIz zrjOj5+$iDe*RLayEwTTM=4*?9Kb=lzio@x^y4cG7`}YZkg0uI1NhX#qUCQX_D3`y! zOfVR%MpBa~fob~~cmsHLp5IHrrzpy2kx1k+|C?@q14Zx&6#0~u$N&HU07*qoM6N<$ Eg3}q8kN^Mx literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/mhotar icons/write_eeprom_file_64(mhotar).png b/companion/src/images/originals/mhotar icons/write_eeprom_file_64(mhotar).png new file mode 100644 index 0000000000000000000000000000000000000000..7c924904f461ded3d64c627892c9ba8724f2ea3e GIT binary patch literal 2736 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 OY6eeNKbLh*2~7ZYazg+B literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/monochrome icons/add64.png b/companion/src/images/originals/monochrome icons/add64.png new file mode 100644 index 0000000000000000000000000000000000000000..718fad0c859b98b3e3d64a585cb6ee4058b6afb9 GIT binary patch literal 215 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=Y)RhkE)4%caKYZ?lYt_f1s;*b z3=DjSL74G){)!Z!AbW|YuPggKMgajfmH*E?zXOF*JY5_^DsH{K(a6gnz{7BG)Bkf; zEiR^e;~B)2Ts$VJcwRaXc5%n^=|A7Rv<50i20!?B)SurT-LDK1-0t95*DA}1EYHB8 d;0ZLKDvIgs17@#R-b#N#vYxJfF6*2Ung9X_Jo^9u literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/monochrome icons/arrow-left.png b/companion/src/images/originals/monochrome icons/arrow-left.png new file mode 100644 index 0000000000000000000000000000000000000000..9fb8a885d324653306b5435cd4413d60c97a4491 GIT binary patch literal 222 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzwj^(N7l!{JxM1({$v_d#0*}aI z1_r*vAk26?e?~ zmwN`!+)lZMb9sjuIp*?CE#I(ZkwO&f(0Y{0)>S)E=X8OD<4X-b;AA`ReDFeTw;EmD?92*DycmusvIo{H4eT zQM!Lrc6{nCQJD1UQo_@vhvqZqFKx?be804fy@IdpKC^k(_1Am`{L>7WZ*{3|Y4o4Y zAis3_g%sy0x(iSGKjL|zq*bLcYk6--(3c3ESf|O|f&N=tUR;gX)$*bsWu=9@MOWYP ztfxY&5;(J2(p%gw3jW;Bn4Mvkf7Ry;HUvU(f2Avh0!Xh6kbI|4Ji{Jf+15LOYSGBMRi^?20f8fA}77q7| zIxHGot&IIl#~QcP1f(2Rj1=I_2>io*l2IqXXZxua_Pm=vYJe~OQlXVwz5y3QeN=yX5K_a(>dGQq8Tt#giYEYCaKe`{|%r@?BQKgrdXbu9l}d3&b+ zcC+6}?)w`pYWVLw*%x0>ar*duKbbn-IiYpGH&?Un6KaoVbic`HRMftYJ!8Azs&`EK w4bA`mZQTFy{)5d0chn1R>eUFsK>Z8pr?=&c4lU$)2np$SM zb?Voyn0a%)-ju7FY%yzMTYqM4)lU}E^|*E7Wr*uo$B>@x#K9Wj z8}M!3F9r`OhMlasw$5KWf0sE0zHSW+zbLz|@Z4qxSM5b1Pc1)Y-k8ChcYNM-=JR_6 x*UIb&?`!@kKSY>p9{~Nr;OXk;vd$@?2>@WVar*!O literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/monochrome icons/changelog64.png b/companion/src/images/originals/monochrome icons/changelog64.png new file mode 100644 index 0000000000000000000000000000000000000000..dec43fe54abc627dab57a8a9834c1e4ce3e82147 GIT binary patch literal 306 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=Y)RhkE)4%caKYZ?lYt_f1s;*b z3=DjSL74G){)!Z!AbW|YuPggKMgajnrF$`Hr+`BHJzX3_DsH{K?#*?`L4fUHUx)Pj zdj9?iv$y_k@RGCLawdGjTL~>wdkIFM;so``KWhX(&WUuW=Cs`1GAH)XH`Udx+a?!m zZFoC#{X3ymtTwy6f2bt9|NE~jE}K)CWy`bx+op@LhddZ{ReQufcpp-nHd(*sYGh&K z5$FB&`dZ0X+%3-Le%rrAlvQUlw}h%*Y~wQ4l+8gR2`r)x4T2#+#K7nl075Jhj;uf= m5Kzn-#Kzx{fZF3{a@T)5S3);_%yP2l);ta5%60|Ns2m zqm$cN1rAO7qI!>|t07CRVGd000McNliru-T@F3At6@}u|xm>0a-~z zK~z}7?Uyl*gFp;LZM34M2pvrhfRISZ5s=6oD7K30S{#vU6p0D7lc^k(}9PzGRTsOoq;suvajB@q$UC`l41y>~5uijVL6 z4~V8|%mV%Od;|-hiU9?C;1i-fKhwu4(HVZIS z-}fYH;cz&Z1?al&({UUS5%&8%#&IOAv*1}_7=oD*$1!BxQagYMbiH1cpP6k$!!T^t z85jSyWvdx8i?7iZSj%D}_JWs((buUk88H6y+wmR$G$vAZwXYli0000^alxP)8C=|NT@IS{C!{`{y`(E*$!Y5wUV3M_j!%41WO**_--e@S z^gh=fezS?iQGn%aL8JAX|Ls2{T%)?pTG@a29a=r9)6Md@t)BMJ)hcDp&S!#c*3FTA zr&JgFYSn?xT!R-l+tjm6Q6zbP4SKw%h ax%Rr#`KsDaHASE=89ZJ6T-G@yGywp{Pl-AJ literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/monochrome icons/configure64.png b/companion/src/images/originals/monochrome icons/configure64.png new file mode 100644 index 0000000000000000000000000000000000000000..f0fd78cf1fef2018886fa5016253c3e716807f89 GIT binary patch literal 493 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=Y)RhkE)4%caKYZ?lYt_f1s;*b z3=DjSL74G){)!Z!AbW|YuPggKMgakF!-J3dco-NMt2|vCLn>~)y|&Ps#Zlz=$Mx+A zJ2ohY8UA2D(HJYxeWG=@8r$ZBX@-(V)3$eXJUx&l+^mo!*zKwpvsXi@t7FGBLAm3* zwwLQ|KK2%J;H_7`p5~tX zy+f>?F+H#PY`Tww3xiain!9G%!On)qTIvVZwJATil+L8)HLK^w^%>b6aNtq;hvAoy Wa?5GM$Y;QaVeoYIb6Mw<&;$U&vC;7W literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/monochrome icons/contributors.png b/companion/src/images/originals/monochrome icons/contributors.png new file mode 100644 index 0000000000000000000000000000000000000000..a51bc3c5650d926da41c2c28edb12977ed151bbb GIT binary patch literal 574 zcmV-E0>S->P)VGd000McNliru-T@F3CN3j@6e}E5#z+0%Nf@wIg8BaS92qNDw?gtaCfG52Wj9w*4PH8sd9D(WPxjojq@nyI~GMB zxE0v}<*Z)_Tshd;)d&<~6g=Qi>Pti!0_1=r3xPs41oou1+H`0HQu56L+cpBJkYZkW zIQFI9Ut(|sSOms^E<^TRdT0f>kgR1SBYA`5rIZ}kd!hrlbEvJajBH|zRpHoN<2K_d z2Lh$gLsKovHeHvi*h`ST%5P-AbCipEM`D9)bbJ%iH4^ZsqmI9hACtK3j}QGt1poj5 M07*qoM6N<$f=2E0G5`Po literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/monochrome icons/contributors64.png b/companion/src/images/originals/monochrome icons/contributors64.png new file mode 100644 index 0000000000000000000000000000000000000000..53dd1a7b19eb8a62fd63d13e4a43bf44b70c83e5 GIT binary patch literal 1006 zcmVVGd000McNliru-T@F07$_nUIs*Uz1A9qC zK~#9!?U_wTR8bVie@>CaSPr2^RuWM{L?Dq_lm&tmM79WbwTdDm+yxcVrbPt>QM7PV zE{dR46hefHAfyjk^a0gs2t+2#$`8ge#+eqL2M?Kf@7_1}`JQkR7aZm2d61Wah^dwl|x zA+H?@0Xa?mDUY!qnzpK<4uFloKgEERE)ukoB5v#fJ}BDE11(V!a7@wBL7+zFv;vRi z8gp;t6>!)^%yUKCC!!>v2KegZU=~;_`sWljbWLRD0V!>WY*J z#}kGKm;`Q=7#orMT_7TB&KPQsfJ8zsUHQDW?-5e;OAg zQPNFtCgk+>G8Z1kd)R{Q<1Tw^1Py1v@fh^hqZ8Qe)0LsWa|slJ*8T z5LUK#M|0zjVv3WNE;NLpOAOTLrxFN_j*aFnE@KG-@CDKG_I>4Oo za)O~EECObLC%`FSvn#99K{rqh90Bh6^b$isXMpc53)}+M&k3Ym64m`~fxJZTe&8~& z*JURKT+%G79qA04fIM*9)t*WMXC$F1H;AQW<8IqM%>GFl3j(sP7FI$|d(=<_cgqxT z5m@GGmi#K0fC`_Qyjn59jWhd4@c|a;c@~h%Nz=DP)z!I>?vDAQ#hrpVM{Lf%vVPRomVPRom cVG#uX0bXOwq&NU=0000007*qoM6N<$g4>$CkN^Mx literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/monochrome icons/copy.png b/companion/src/images/originals/monochrome icons/copy.png new file mode 100644 index 0000000000000000000000000000000000000000..aae5f53029fe6123ced90141eb44fdae2214f1a8 GIT binary patch literal 302 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzwj^(N7l!{JxM1({$v_d#0*}aI z1_r*vAk26?e?uF(6? z-4}m_`wnpa%Zc$~Y(2=T5<5en#z~i9(xy$an|9=!;%-L-5e3sy0MiteiS9)eJy>L8m zt7qL2p-DTc_r1=(B3-jdWIpq8rV5`?ttWiuHr_n`ZF5nG tv;R(6t_@r#JWhO4IkIn7?t!cW{AxL~qt?$~4fF*AgQu&X%Q~loCIBfub+Z5f literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/monochrome icons/copy64.png b/companion/src/images/originals/monochrome icons/copy64.png new file mode 100644 index 0000000000000000000000000000000000000000..c68e9211c78781fc6306332d7ab9c6d014b79cfb GIT binary patch literal 320 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=Y)RhkE)4%caKYZ?lYt_f1s;*b z3=DjSL74G){)!Z!AbW|YuPggKMgajy`R48Ge1Sq|JzX3_DsH{Kagev!K)~gqs?*LT z|Lua9=H|YesL-(Xqs8z2M?@F5Z*1gH0)kyJWj5P7Dni+22q~^sPAP49&%OV$vC_TG zN-~U7W(aCAM6;+is5VI*;CsmBaQ^O5Hb>Tk-QFu0a<+SkHoX1aBy>Q?kvE~;faw5N zqDTYpA&-W5j^)u(jNi^p<$aveKD)STkNemERSY5Q5xnbPp4&C$4A6;4AmPgK03&7w uh6PuoHvBnUwcwZX6dNXBSh#?IT`hylnY0;yCavEB(&Fjr=d#Wzp$P!C#cz%P literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/monochrome icons/currentmodel.png b/companion/src/images/originals/monochrome icons/currentmodel.png new file mode 100644 index 0000000000000000000000000000000000000000..816752fafd5d7ce4f220fef74967cd26cfa5d8b9 GIT binary patch literal 365 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzwj^(N7l!{JxM1({$v_d#0*}aI z1_r*vAk26?e?t4f-@4CZ}NtDJ9eR{HK_ z&P?F_($KDcp0&u~+UGN}JAOS$YtX&G9v8@X{F2@3V%ed}+k#^RBjc0+Oz~JfX=d#Wz Gp$P!e;f?bE literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/monochrome icons/currentmodel64.png b/companion/src/images/originals/monochrome icons/currentmodel64.png new file mode 100644 index 0000000000000000000000000000000000000000..c3f67e047aa0dc5287fcc898096b3c031711c73b GIT binary patch literal 621 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=Y)RhkE)4%caKYZ?lYt_f1s;*b z3=DjSL74G){)!Z!AbW|YuPggKMgc)JRhi}HUlSSM7=1yMHWc{o$o@*oO6z-d4kD(bCEfuAP^Dm9eo_zkoqS=HK<6v)jV8 zB-ei8Olfr2pFEA>TyDsv_dD2r{gJVacF<%vLh=BaI8=~ar=2(s#{#=enz(De{0@{EDI?MtcYBG(K1!4qV(j8Wj?V#k2ZFj z9l2kfTN1~=vMFk=W$J-1i#OfcY_GmCyNKyo%!dZ`$;%H+;;!Xc_;Ih}?mfG|NZ1$# z{%Prc&2XO2XYU*)Zr^qP8LSU*eMmd(W1ML9cPC?8wpqw;-)+~+)jHqjD?F0Eu}z{< z*_SW6$MCSPbm;b^INiqV-xfxyjMH^P?q=P4zv_PYuU}4wZ!4>(x9#U!mACb%-CD0h zZWn|nWG;SnwrqO2+Kj|&t*guzaYuxwX>v3vKoQ?h_D7F4_LZ-;i327K22WQ%mvv4F FO#p!+2bcf= literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/monochrome icons/cut.png b/companion/src/images/originals/monochrome icons/cut.png new file mode 100644 index 0000000000000000000000000000000000000000..efbb2cd5dfbfd5d9d2408f175312f29ddf71bd66 GIT binary patch literal 3651 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 VL@zJ5U~2#X002ovPDHLkV1jFe)B^wj literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/monochrome icons/duplicate.png b/companion/src/images/originals/monochrome icons/duplicate.png new file mode 100644 index 0000000000000000000000000000000000000000..43041429ccfa50f19886f3a4d080e14846bf9257 GIT binary patch literal 313 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzwj^(N7l!{JxM1({$v_d#0*}aI z1_r*vAk26?e?l#Bv=+~Ng4_dM0d15$*l}DT=hOerEACrj zeVFIok6e)>r`);Fsf?q;$iQGvv(&%2jg5}8!c-L%KmPSda#NY*I*oZlqnOIqeOn3` z3|-&bYy3NZ;J^gy0KSHe{+F$}q$XVPUr;LLAb!77Ma-+;g+o|8F(ILXHT8c=Lc)b* zK^Z|Y;uGF5h$)#QYd`%Ly!wFThg}IGJxzfO3_JeMxWw__JsjvG22WQ%mvv4FO#stZ Ba`^xN literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/monochrome icons/edit.png b/companion/src/images/originals/monochrome icons/edit.png new file mode 100644 index 0000000000000000000000000000000000000000..cebabbd9f73d581d3aa08d025e8b215d8b1a7d23 GIT binary patch literal 389 zcmV;00eb$4P)VGd000McNliru-T@F09u~DKfGz+40TM|> zK~z}7?bb0$#6T1V;Lk-66%oN^ZL9=OAc&sC)94A(cmT1m)JCzju&n%S-n+LTo1j3S>KD`9*oaj#^t-EoX*c=Q-R~ zW4x6fn6=cdVi1$cjLth~d-Sp+XA>&@q3W)O|9Zx#?|;4J jgjuwj-YYO%LApBYWd;UDRZkbkkch)?r`dNg8HyaMPhOs& ze(MdVnEoS4o2IpUpI&QPJGJ}+lU$q$7k|F;IkDFK-Sjvr=gddODgJ$bu2yTx2=_F|FW?dg;7m_Ze4xT7 z&lJYX6z1iidPn8VRV7n{+=;Bg{l@-+1)+UrjF~$Ei^IEZ);GpAG|W5h8}~=zp#3(% zi`)2QlvreRxC8B-9PTTz${&BOwBy{O@E7$KoDY0;ngkM-cb&3qC=c5c+tsjf`{euu z85{JExD_8;S-9a#)*j|Ghwz&vPiKFwI(BK5Vy>;AmBroeooh?I<0{;5n~1&Nb%3YA zw4i#^3*TpKihSKHhRzRy=Y2n*8b8tapX$56oV_zto-E!C3_}J_S3j3^P6VGd000McNliru-T@F09}mb{8Lt2U0dz@3 zK~z}7?Uuhv13?hRe?d!|fEctB2^RT-%@r1MU?-S7g^dtMqhMiSA@~dyHa>t);d2O* zLP5bM8U@XznS){6iTQ%S}$ALLj!RPk}q?YULS()nmgd|!#SX4i~Lo#=n6On7DG3$#4%FxksRTMjYjS#0{3D}YU d#1bX`A0~`Vq2}bY$`k+q002ovPDHLkV1mCd#`pjL literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/monochrome icons/information.png b/companion/src/images/originals/monochrome icons/information.png new file mode 100644 index 0000000000000000000000000000000000000000..2e9c398f6d4894d8a1cb925893a23d29402e1460 GIT binary patch literal 252 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzwj^(N7l!{JxM1({$v_d#0*}aI z1_r*vAk26?e?{wd!b_UP#IUP|Hc z;Xl8Mb3)zPV>6p3Om4cP^rpek^UQ&7?dLRwbf$IPT+p+tVfBT!X-vWfjHQf$(%baq rZ(e5DrR?F7b%rT0=c|+f&try-jH1TwMGnV+j$-h1^>bP0l+XkK7f4*0 literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/monochrome icons/information64.png b/companion/src/images/originals/monochrome icons/information64.png new file mode 100644 index 0000000000000000000000000000000000000000..fb4dd298a5989505c8eb2cda25b1485abc1cad5c GIT binary patch literal 303 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=Y)RhkE)4%caKYZ?lYt_f1s;*b z3=DjSL74G){)!Z!AbW|YuPggKMgaj8>#H$LN(CHn!GVa7NzLP%xxA)&!l^ff?s7ZwL+okPiY`F5iVd=5L zpL_xf3XdPDKAT$K)sfvjdBJ?e;sypL4h0kN7|iprZzW_$KdJe=d#Wzp$PygZf=bL literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/monochrome icons/library.png b/companion/src/images/originals/monochrome icons/library.png new file mode 100644 index 0000000000000000000000000000000000000000..a3d112626cb82e3b142f55d49fe3741ac25da383 GIT binary patch literal 216 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzwj^(N7l!{JxM1({$v_d#0*}aI z1_r*vAk26?e?ik za~n=~oN~YLrmQd4xk~j;eMs=Gwi>~rr}tiqa4VjwWO!37AisF6-U6V744$rjF6*2U Fng9Y1O=bW9 literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/monochrome icons/library64.png b/companion/src/images/originals/monochrome icons/library64.png new file mode 100644 index 0000000000000000000000000000000000000000..1b749f91398149b349436e392019f6f8c15cd32d GIT binary patch literal 270 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=Y)RhkE)4%caKYZ?lYt_f1s;*b z3=DjSL74G){)!Z!AbW|YuPggKMgak9p{OlWE&zpQd%8G=RNQ)deIqZEBM-{~)gquCYl?i0x?aWI{bPA@vq3}nB=1xP@5ImZ zt4d`4zTZ_U{rA)I4L(=?EL&a>A$efN7x!N~=P!<*bMH;VJ7I-}cZ_q?YL*{n`SX*7 z$J&8`NuYs&h2dP{^9`yR49_}SK=YR+UExK`D`l$0IpRFman}9q9Pgg&ebxsLQ E0BkE^wg3PC literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/monochrome icons/list.png b/companion/src/images/originals/monochrome icons/list.png new file mode 100644 index 0000000000000000000000000000000000000000..f94bafb12265b97e08be2c2921e15151ebdee669 GIT binary patch literal 345 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzwj^(N7l!{JxM1({$v_d#0*}aI z1_r*vAk26?e?z30hEl=aF@TPV;A-4F{uH>Uxg6E4((vVWx+uMWn)+HBL`BySYBZ zz7l++d`WA^0j|qZ69sGz7Qf2Y$aaa}!FBD-M}bEBSvfAD{(54X%mdKI;Vst0M7l3d;kCd literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/monochrome icons/list64.png b/companion/src/images/originals/monochrome icons/list64.png new file mode 100644 index 0000000000000000000000000000000000000000..6245f61ccfbdf0b9e5f6a1fe8288bcabeed9fefa GIT binary patch literal 391 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=Y)RhkE)4%caKYZ?lYt_f1s;*b z3=DjSL74G){)!Z!AbW|YuPggKMgc(v#>Z6wj0_BnBAzaeAr-gY&N|3@$UuN)d-I5_j-!=L*p~tsR@2AABxNXaB(aK;MCX z0cTj+jfXl06?L~JFKJ)$m~HvN<|VV2Y+oL`QAEqNMRmvQ>xX}t=qd#@g^O?ew)dZ^ zl6u9Axe0=TS{0sx3!A44Ty*)c_IARJp9$+a0uH)+UOyw0@{&dT{qh5I%yujj-Z7tf zjo`%Kwmbbt{&k+nZA^4anr0@kNq7oSpQM-QMIY`Im17=j)^y~(=PaoXUUGZ4(_L0} cu&-8}6aVz_`{|_E2rm%d)78&qol`;+0Gj!ouK)l5 literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/monochrome icons/logs.png b/companion/src/images/originals/monochrome icons/logs.png new file mode 100644 index 0000000000000000000000000000000000000000..f8f96b505e4cd02caa790e3b44c80d3ed13ff9b1 GIT binary patch literal 343 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzwj^(N7l!{JxM1({$v_d#0*}aI z1_r*vAk26?e?w^oxQ!nWz)XCo^QVY-5jDn^M|NjkMKUgxFd7#0iRDLCM;7_jt8ygYnik-Bie!W zh3XN0)w-bV%U7(szpTNgKrlYI#xx9iO8SeD&~4KWulH)^CFehgbflBJf{}$Y`>Er=y`qa)7Zb& zwf7&|?R$TB@Bj7tp1#}r{r~^^@B7~GEiYf7(X|MS9x0mc&x!B2aNRSjc0Qw)1M3O~ z(Ewc^2I>E@OBD2`XD}J5t>=|z&FS8Au2$GUsi=y1SB+2rzfH%SX|>gCYr1OQHCoMQ z`NC{D*;`JcPkDtlQ&wa4#M6E;jj@6oG(MeRI%~)I!o>e~l3Z~iTe;(bjVB&zy?fxv zJwxoHed9ha!3k#kYcFzaj6VA}u4n(WBkBQt4O_0hXY!aTSRLN;k;5dUiD7p|rR>bD zf7E-TYmZN=V)*NJz^U^QcM@|kN6B=F<$@JLwS1Fe>g%-YvbI|eV)lSb;VA%abJi)-JN2EaOShbmU<7TFNYpctj^d~KCFjkhB&U#|+PnJ->84WfDt?VtF zGmZ;4v8)Lxa{R^4X`_CMXGPbpFV71_Tmzx#{|~0M^S^#H4lq3hOco5Du6{1-oD!M< D81Mn6 literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/monochrome icons/movedown.png b/companion/src/images/originals/monochrome icons/movedown.png new file mode 100644 index 0000000000000000000000000000000000000000..0097679e11f38a6a77685246483ba7062c1468ac GIT binary patch literal 312 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzwj^(N7l!{JxM1({$v_d#0*}aI z1_r*vAk26?e?x{|kYHV$Akx#M$ek*ua^Bp=#)qsS{GqZR<^x$0 zj9bqDCC>vj|GRjK5u}LkLBR1N2M&DT@YM}%keRg*B(^Ovu$;TwYE`3#PTP9-N&CB8 z?@hRM(~!AawHqjVE=h3v($JX!jYo}2-gv%lS}ENBH1Ug;Y~)y|K{$u!GFekNLA0 z7B!`CHtAT*P~-k#B^1KT5I$2d<|wd8T^l8qMAx2&$Sn4`NRPhabx*&mJ@#ZTv4 z*sSwV)%gcs-^*y0&6T3H&7mtC&waSBYM-ugq~Pd>$3IR5ac`GA?B6ii%GT&}!)~63 z&RHjz<$@0RH+pB~2v@`e9T4SxaD4WHlph^z9~-aRKg`cq5LOdzzU1IGK^T~5^q1+< XL&>8VQ+NIX#tVa|tDnm{r-UW|q-n{_ literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/monochrome icons/moveup.png b/companion/src/images/originals/monochrome icons/moveup.png new file mode 100644 index 0000000000000000000000000000000000000000..ba68dcaa5f060ff03997a51fba341e7189715c96 GIT binary patch literal 306 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzwj^(N7l!{JxM1({$v_d#0*}aI z1_r*vAk26?e?e<4aFTNDyd_`ZtA3PEqoMp@Bh78c>q|==K+xme$P7ho#xr+Uh;{ zew;sWpkSWdG-IF&n}bP~Jn{>-GUqLh{2|`0yzSztPsI^B#)%0D90!&5_1u~!e<-Qb za#D?m*w2?&HpR$yKb#hEWobg7yXb=Ev=z*9TYqjTYcLmlm7VdlK|tusmf*{b$9Q;n rW~RJ|Hj&V>K6dd}9nh(P1}_*HbmP6N61Tf9U;qM7S3j3^P6~)y|K~ju!GF;kNSZu zg~C=Ig_E0_6_j?Al?jNmvWpj9Jb830e?Scrd$^;x{6ThsyRI=yvdv_bO!WRcaCp4G zCKy0X{PN|u|Djs5uVwDCw*4~%?4%7h+}!d(-R$PlzGRj!vxNQ~Fa}Cqy>R&b zEuQ&)mT`?!0}g-B4f0NxIe(xi_3on_we_e zPer`%f0tKouyxTbZRBqk$Z!4dQ)r(|-~P>eUDlSoS@kRK=c3x<%a8fq<+9LM+>_5a zcLJ9LW47FL>#_(N*5CtMPT%r8{ak^oqw%ZcxoWW@M#BxEhj!{a>nwOv`&VHJ)2gb? z#ykrfmOQ#16<(^Rura-2s!}w|)UX3Jp7w8~Ew*f}ntJR&rtEjd`n}%WUVAE(U?BGs Zvx$e6fzV9BbYR3Vc)I$ztaD0e0ssXf(bNC{ literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/monochrome icons/new.png b/companion/src/images/originals/monochrome icons/new.png new file mode 100644 index 0000000000000000000000000000000000000000..e9531c78a9f7f7676fbcfcd00fc66da4acdddb27 GIT binary patch literal 250 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzwj^(N7l!{JxM1({$v_d#0*}aI z1_r*vAk26?e?lBm#n2St%em&9$Ka~Yql<&<`E;aymr*Y@5a^w`tw qvI5U9+s3i)neY4e508pxxu4-wM+1%Zf0%(zV(@hJb6Mw<&;$U?(OZoG literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/monochrome icons/new64.png b/companion/src/images/originals/monochrome icons/new64.png new file mode 100644 index 0000000000000000000000000000000000000000..6f346af10dddeb866cb56d88ea2733c48e6c8724 GIT binary patch literal 306 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=Y)RhkE)4%caKYZ?lYt_f1s;*b z3=DjSL74G){)!Z!AbW|YuPggKMgc($X=hjVi$J0Mo-U3d6}R4AcjP)`AmDJ(H{XKCE0gbB3y* z5o4aULJCt%nZpSd2_TDkihBfOfK;NWLuAWT235f@<~`09SN;@TjJzIIroa5%{w)l< znCEn_d3@rtv>F3L!=?8PKR%YXa{}GN(BQTEfC=MSbp@ewGl6mp4F5Or{*rvPjo0se rLz?i1ETw0SFAW(P7(6Dact+h|_LqI0G1FgRJ4mIctDnm{r-UW|AysZ} literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/monochrome icons/open.png b/companion/src/images/originals/monochrome icons/open.png new file mode 100644 index 0000000000000000000000000000000000000000..6f437856cbd81a2ef5926f05c860ce7d07f4a683 GIT binary patch literal 306 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzwj^(N7l!{JxM1({$v_d#0*}aI z1_r*vAk26?e?_(Cyy$m;spg0LM#Y0I?(fuXAI;BP5d3OFQ3IPvhUd|c!UJM# zY;18{LaIjFT+C*)da$H zjs;CmZFzWj-g};0?+c{!B_$+|0I`3@T4X`SseVwFGgM_N93EoN+Ll%RjQ!RX5y>CXLUy_!;AL{9&br1a1EQrR>{@j_eE zSN~FK9k6OzGPv#hn&AJG(73jy!D%h>E(jL~y74A=T^Nzv8Rvg#$E%lt0hd z%&KRVpC;I;6Tvs(e{130)5(e+N^O!8Q Q13ky!>FVdQ&MBb@0D}sD?f?J) literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/monochrome icons/paste64.png b/companion/src/images/originals/monochrome icons/paste64.png new file mode 100644 index 0000000000000000000000000000000000000000..4f0f2108c6b34b4125fc1463e5dc5ec84a212200 GIT binary patch literal 472 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=Y)RhkE)4%caKYZ?lYt_f1s;*b z3=DjSL74G){)!Z!AbW|YuPggKMgc)}xh>n@Ph?Mks`IEI;0e4$Kv+IZG8BrU21cWxRG$wQMadW6iT`EieyTkT%?ffS*o_%}r z?WOJa#hM(7Edov)ic-&bA{gQi_T>V&#u=Bd|e5P%sKT6vZty$*rT1u<0)KoC>lopP>;?ckYL?wok zr@KnNw0q0EYTeVD+b+-feR&4UgGeV0#yr&)kq1Fe8I12#N)!)FZCS@6;@RQlFt5dH z$L}*DzfP=OTkwX-W}1W0CYKNm&H)T;i5Q?0wbq~1C!8%1{M`4GmJ^7 zti46;ui^pqozGQF4R$74)!sH>23mmt^<`Gq<{rOL`Y$T~_^yu@yBODeEm@P@zf}6b z^IsO%n%yt+Caf+0-CV|yz4w;<7UqcctiPKJ7_#TS;lIWBW`6HC_J<7Dsy;?#uy1(J z-@yhX-q~KtWBC2=!L`M2**09;{MXUCVXJ+`ml?Ym-~48t-}{h3Mw|Pgf}`2$4`Mpdp2%nIJR*UL){JeA2~eiAQ_-qi!iYR64u-aK(z)S z?b~Ovfao9m$4`a-Ivmfio`LZO3)g}41q?DQoCg9oFdQ@RU`UqHY53SIz}Pdtg)`xg zMhL^>^oKtgVt6{)9%MzBFidw|%(z2Nj_<$>GpUBhw=)=yZF$JB=lNnriOX)x1vS#V zKna-!!(0=F~6@vd$@?2>^$4&Mp7| literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/monochrome icons/preferences.png b/companion/src/images/originals/monochrome icons/preferences.png new file mode 100644 index 0000000000000000000000000000000000000000..d2ba00eaa817aeed212e97ecc478495f5be513c4 GIT binary patch literal 431 zcmV;g0Z{&lP)VGd000McNliru-T@F3BLlEmk|F>A0X#`W zK~z}7?Uyl2!%!53KWy#RPTi#9;MTp+tl9QX9^WMGpy#xvr_=i~Uc-#Rspa)cU6+7@?_#0>f zkH8!_@-+i-aU$^{@aZ!JaZm%6BEA3)(=c!bJa0+gOvKl~sqZ2LXsPR0EAB(xJ5Qqv zA`BJxF5Hvi0-%(p0RW@;g*tx$j)7apJNv*2xKC1q#_Ins;g^o0eXyQ0NxC31@dMOj z#8+gU2rUyqk~W+G?HKW6m72L_;?3tmVGd000McNliru-T@F12LnPir|JLz0%%D@ zK~#9!?V3GE96=a{AHs1GL=eGB0#;gSacFD;Pw7}5pNA|P@I77`9DOd*1Z7z;;Oj+xoNac_3+dtsZ~y_tERn{W1=;Xou3i9{li zNF?$}k9-`||9iZyfoavxQ{Vzv=p+Dhs*e%iU*z*Iz=O~Mtf=+}fMd=5cRm7etsY=c zWBx>e2^v5Z*wUE41SWi416=Bxp)_WEUIbm~t-<`N@2|mD)qpzCm!iEF2J>~GQYHX3 z;8cD7C*h(s30!H+H-KJW)0qxH)O^&04Z;|3t}%ZG4Er2UbpX~3)A%niq-kRiXd05> zbKmp14nQ}sZGkWndA1MOH$1ykh7F2o4X{BtRb^5Iej1+n9x07d0!RX(Zn(DtJOujH zjLEB6;1_TRd{S)}mIG`MOeHeVGCT65$sd|Nw$-=_3qnaDTmp~PcRuF~SXE%%(w8#` zNt0j_2s4fnW}JDa5Yi0P24U4<#D1n;p-D=vUi4l-2VqkabF%>GYKhcIAxss$8Hz$M z#oVl5KW2dNp&h%yZeYU_bMur|S_m(FJP*jbxF&^gly@O)CxEy&OB{r_4O;4f-q)2U zTbLj?G2bo#Y13sZgaem{szn1xYhDMTi;^m<`MYbG5-YEH(_xI57xQ9X%!_$3FXqL( zm~WRVooxP2uR7U$RtQ0vPYWR!^A+HAN(e#y@=r8}6*dULP5ZBg6B`|bAZxy9Ikt*I z2-5sG@n?4c^C6lCcy9pEP;i3R?}+JL;0-WJ2dM@ua{CW4kw_%+N;hqbAJ9@9A58!N N002ovPDHLkV1oBSD9``^ literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/monochrome icons/print.png b/companion/src/images/originals/monochrome icons/print.png new file mode 100644 index 0000000000000000000000000000000000000000..1495a1eac0bb5cfbebc6ed3de657ab99d3913c53 GIT binary patch literal 258 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzwj^(N7l!{JxM1({$v_d#0*}aI z1_r*vAk26?e?9b!DQnXMdi`bs=cs5|eqA|7L%5&{COjY2uy0gqwlrplzJ6O+PYCzwuVZPphCkngvCB!WHJt-*V6T|FkO;pD&+OP|bK>Wr@HB tb;aI>Yx6$5?tCMpw3~&2q2cfzMw1nJD|8q9`V4d;gQu&X%Q~loCIIjxaLfPz literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/monochrome icons/profiles.png b/companion/src/images/originals/monochrome icons/profiles.png new file mode 100644 index 0000000000000000000000000000000000000000..0d5c86a47f3a69bf4e3d7b07a9556e06751ed7d7 GIT binary patch literal 257 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzwj^(N7l!{JxM1({$v_d#0*}aI z1_r*vAk26?e?9klS4MIW<=BbSr^W{ka8B>`SGTN z-{Ki}S@(Xw72ELtz~$m!uSE_p3otM~W#ZfadWn1f$A(&<%NRUe{an^LB{Ts59L!|G literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/monochrome icons/profiles64.png b/companion/src/images/originals/monochrome icons/profiles64.png new file mode 100644 index 0000000000000000000000000000000000000000..27899ade0088f89bd217ab43c011b13be8f41321 GIT binary patch literal 219 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=Y)RhkE)4%caKYZ?lYt_f1s;*b z3=DjSL74G){)!Z!AbW|YuPggKMgc)?uIVuWPC%gyPZ!6Kid%25MRPS6@VFif+4W!d zxakk3!*hSGf24RNgb}EwCDQ!-*Q3wB#qWRaF`t2vMZkf9kzsYgE3G~D6_Nh48vcH$ z*>4h9*UZFW@R={-B;ziI)gL~D-jGvhU|`}<02;u+VCmP-#c6h-`dbl*=jrO_vd$@? F2>=rSN4x+4 literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/monochrome icons/read_eeprom.png b/companion/src/images/originals/monochrome icons/read_eeprom.png new file mode 100644 index 0000000000000000000000000000000000000000..a331b4af11f71b66b032a2730e4901063a7bc829 GIT binary patch literal 305 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzwj^(N7l!{JxM1({$v_d#0*}aI z1_o|n5N2eUHAey{$X?><>&kwQQ9#ICLNwsn8lccVPZ!6Kh{JEE8uA@d5NWfQVt4m{ zR`H7Yf$MDd z+XLjYu4?Vka*?rPy8fZZRN>y?_KZ9Y-ih4tEFXDavhHAxeqi$XtYig)^@ENV@k@o? zXIKAJGdZ@WFEo3t)!SfkbeT}@n>oKbX1B(O0 vr0Ie8zuT<}<;;I)#B{(i{El#EotuBJd9J4`=dRU2pD=j3`njxgN@xNA|6g(8 literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/monochrome icons/read_eeprom64.png b/companion/src/images/originals/monochrome icons/read_eeprom64.png new file mode 100644 index 0000000000000000000000000000000000000000..fd7d1176fa752cb59891c8f1190fe1ee9f4ad2b6 GIT binary patch literal 426 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmPqqktf%NPH^)Vg?3Ab59q?kcwMxX9fBlHV|-0H{0gL z#8D`=<3F#3ud8#8`m^Qo0f8>sBI_?z2K@^=dG2!BR1dZm0p69zS4-x|?5or-5!x4N zUm~*4)4xQl?(4o627gxVy?E04evbMD#~;hOC;A;SpX}iNaJI*S%^y~KFF5?+o!zt+ z0VfVcvy-avq5uDeUtjf3y6m-ZLbxBVdBAecAFugVM4wwFtH3CP57j;UlJkG(=70BI zn=r<6hWi~7du751G&OH-ci%k!;JUl--T4kXzpLKId?NjwBf}XD!=*3#Rw%Y{7_W9X z8pHi*4nxQhy$czqdu9cnlsMj>@#4+C`XhR8RvnyH$r!99wksg%NdEcW6%wCJ+7CxK rY_hX`f6uR*ud?dpnS^DNzdsTV_R31s{E)U47^)1Ou6{1-oD!M<;~k_P literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/monochrome icons/read_eeprom_file.png b/companion/src/images/originals/monochrome icons/read_eeprom_file.png new file mode 100644 index 0000000000000000000000000000000000000000..4dc1fdb154387812fdbefd8054d07cc51e892f57 GIT binary patch literal 236 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzwj^(N7l!{JxM1({$v_d#0*}aI z1_o|n5N2eUHAey{$X?><>&kwQQ9zhcD>Tw44=7aW>Eaj?aro^dL#_h~Jg)oaR?S)` zyZ8Sx@vL1-6q34}g*E@MNBVrQcVaN|XH$qeIz#iU&%Y=IMvE_>xgFmA3cc_8eA00- zoz4jb-cCw~-Gzi??Iv;X=c{henqxEPuHm+)=l%)l?T@&B=4)5_xouUrH?xTw779dF{F7QNJY!uS#;E~pfq2_1W!%xxyDl)ET8JQADhC|H}%Xk{jCkE zLX%QXD<<@{r0gu>JhAQh|49w+Ri2!i?Az2R-~=?ei2cFW%asY|zHXWNiR(dS;!j`M zIdc9w`z0CmmvSrYwEX`0^1o_v-C8D%20RF4RLcaR8GrrvzCV1p?!M>kxYlJ8%^4oH zKWA-Vak1z5+j?M5x!kI(hQuu$27C-W`-&DVy3E1t%=2Pb`T7-KHtlqKn-%=R#BV}k z$15%Iy~j6}+VbSSa4&zMi0@Acj5v-uY8Umvni>%*fmnZ`>$8O$tO+FnikehnDb N44$rjF6*2UngDW}v8n(7 literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/monochrome icons/read_flash.png b/companion/src/images/originals/monochrome icons/read_flash.png new file mode 100644 index 0000000000000000000000000000000000000000..555161593ef15a009dc8dd14bbff21ead497fb69 GIT binary patch literal 459 zcmV;+0W|)JP)uu3{D@(vavLNK4rMb;yG zcl+lqWME*qoxS;X{(Q4Wyclp=tzQ8#pcrscIaRf`T{#~VgzJ0_%qm?E0iy1F;p{E? z2GQg^2}B6e2jBxZ0IobX_rN!B3|z7gVl6#>(Q>{i8p-murPa3Se3ubaDgzdoK=cB@ zS08S>ZS0gI8ouz>^`~QPxcXvdXR*$^0&BIGbX4CQWz4ahbaejLD3T}Sv9-`k#1x@# zuho9F`XWaPtYiIb((!l6@%S*92NYNns)4ksWs`|0biP~Hvqc2k%{mmGa*)tQrcPd` z4Sdl0UDCOvf=s>db7Y=$NKzTn1p@8@qITP`cLVVB_?$Ec))6z{pH3#%WeR}kVP<9m zv|PUL27oh+%03<>NisBm;AxnXT;^u>nfhGMF2Chm!S3BVrECBI002ovPDHLkV1hbg B!}S0F literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/monochrome icons/read_flash64.png b/companion/src/images/originals/monochrome icons/read_flash64.png new file mode 100644 index 0000000000000000000000000000000000000000..adfb05758575bafa8578da28c655b9d01ce5e0d7 GIT binary patch literal 616 zcmV-u0+;=XP)i5KfgtcKF+mu3=W#(Gc&D*JNX@fp0tA3( z6-EdF&qe|SfoCBB!oWKx0Rq8`88FSL@gg-82Q}= zX6Y4+2DliJwR}YJ#P3nK{x}?M695Cxk~)7{w6%}vG)ukCfHci+i6|$c*ro=!IOWyK z$LXXeN2Wv&h5*6T0;wp9M*vUWmcYY${o=I-6wk%TW(nBp_r~5^mL68 z^|r)pE{DNcB8$b`uM8N4!Jk1W@r!`t=kG1Bi;3sU;hXuj-vrz(mwpqF=Xu~Y0kc`A zh0SIgWIacaB#G9~L39aJqdVGd000McNliru-T@F31r>)=q*nj{0hUQb zK~z}7?U%bt13?hRe|Ol3C|W2{@X=@^zOWJtg@6c_7D5oj()|YBo7vUwX zmiKNgBC3EMYY|ZeU@f8+0RSz)t6)cA9i1u?N8v>t$NhzE9BK_l139${i1G-WZxSv7 zGr)x0=Ydlo6L%4&RMiLhGB6T{fQ;gt0SiD8C;)T7iHdJo3s_O{S%p7{dp0ecPaq96 zSqN}dY)ZTg3;}IGYXyH&@m&i6tAZaZEHBt_Kyha!zGfldTJU55f61p$Qeqbt0-jZ} zoZ6}>;7wv_#m@=13_M!Ah#I9G1e%rDdA0lr#UBSsa&1zCH-e8UEFstju;Wt)V-mlz z_#)bnHdC?81)m+@*{*MxZ z&1@6s2kwAdnd!QUU&eLj?^W@od>HrtL$6eRQ4RV88~_9V`p@SJ!^Oeut=xD900000 LNkvXXu0mjfF_YDX literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/monochrome icons/recentdocument64.png b/companion/src/images/originals/monochrome icons/recentdocument64.png new file mode 100644 index 0000000000000000000000000000000000000000..d1356671e3304e30f1f0c575c368e4f0febd59ef GIT binary patch literal 1001 zcmVVGd000McNliru-T@F16*g>g6B+;j19nM7 zK~#9!?U_$V6+s-wKfbJ&gxDb!5urmVB^7jt1Sy059K6(_TSWxX!AqBj%tJ&VNko5; zpdyOsP=^RQW@scB5tfCQiX=h|kw{9@l(xg0h2h8SzW4U|c4v9}g@rfsW`4W#+28zT zezTA$QKCeN5+zEMC{dz3Y`cC0Yb3>SPvl# z09Hc?3xKr{!USL?gs=fv2O$aoRzZjgfER>7Dz|u-8H!S+p3)`&N*#bLF`z7}I1y(L zC<_QK7OOxCXabsnHeijap9lJZ31ASISqca?>;qgi0hfR&kAsol>T-Zzz#|1H_5d2x zV1k|)y#!j6t;VkPa|q)&k27cB=BUwbF(uFfYm@z)!8bApSoD>^9i> z1Wby$1>l8NUJY!~%5yeMf%~F;N1jWWn;~w^;a(l0-|aA_fRhEvTT$NbW9tO4Oe;SJ z_5vGo+}_F+=Y1F+;ADZ&Eb4!F#D#K|A2=%2J(uT;N-Nv?y_%y0phFlF^+$c|PI$zC zY&v2{wy*`j1yTQ91uSW^&u5$Lr%GU4+@l+dR72({TYtbOnu|L?SHRem0v-z6Gk$qM zR61?&kgGmH`J!6(Ce?2*bsOwVc0Q>->J< z34Q=}c-R>S)?vB4Ah-j#3>*~m`mQ<}I}3d9>Dx$5RBt#XD&!iC)8JjL0L}xm1q^(V z%tw}0#8?f$HM~EJnyy*k9+{6MfmCLxN9+Rj0GrhQzgDdt)4*3UpT_!tr>ZVdqJa7j XUI@Ksviy%q00000NkvXXu0mjfkjJrS literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/monochrome icons/save.png b/companion/src/images/originals/monochrome icons/save.png new file mode 100644 index 0000000000000000000000000000000000000000..6466d65282d604bb3c8fdc62d72af3e88b8f66b5 GIT binary patch literal 209 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzwj^(N7l!{JxM1({$v_d#0*}aI z1_r*vAk26?e?aD3YVuuwGp*P3xb0L*SkTX>MY8qb8Ek5g`FlkeY>alLwY{3Vg yncUqkTMGx2GHr}y*GXXH)+y}TTFP{6hOqTUE~B*@U+@5JV(@hJb6Mw<&;$VF!bBPX literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/monochrome icons/save64.png b/companion/src/images/originals/monochrome icons/save64.png new file mode 100644 index 0000000000000000000000000000000000000000..50c9341669144b1a306181cd1589d767935a4500 GIT binary patch literal 275 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=Y)RhkE)4%caKYZ?lYt_f1s;*b z3=DjSL74G){)!Z!AbW|YuPggKMgc(~h3n4^dVoR;JY5_^DsH{KZpe4YK*05&e9NVR z|J4O7>sWhVYWf@yJMz&+^X)0g+$9zhRXiuDyqtV${=Dc(r_V6#cGTFcJmscf9RFpe zEvf%zJ=vw+63_gE_mBvKY0LU3DaNeLUXLxaK3`Y)F897j>Wlo7i`f@eFfan`Y>=B< zUb1-$BLm+zP8~C#05XvIZxxdR6qp3Ej`xD_@0bhznwO3|2C4CM^>bP0l+XkKG^bt( literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/monochrome icons/saveas.png b/companion/src/images/originals/monochrome icons/saveas.png new file mode 100644 index 0000000000000000000000000000000000000000..9cc2a72efd7861401e9f1b9633eadd850b2798c5 GIT binary patch literal 253 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzwj^(N7l!{JxM1({$v_d#0*}aI z1_r*vAk26?e?-J;?t*>{J*(0wpf3Fs;YPgg&ebxsLQ0G_j5R{#J2 literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/monochrome icons/saveas64.png b/companion/src/images/originals/monochrome icons/saveas64.png new file mode 100644 index 0000000000000000000000000000000000000000..df85fb89ba4a17321f42f36f58ee415917db6027 GIT binary patch literal 351 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=Y)RhkE)4%caKYZ?lYt_f1s;*b z3=DjSL74G){)!Z!AbW|YuPggKMgc()tD5_H1wf%Uo-U3d6}R5rbmVI?5O90A|Ja7Y z$AA3~3htSf_v+e&0FAjTTPyVwZyUsmY@FHw0a>T&cg0PTo52J9p?I6ve$l%4%?$yh%bZgP$+9}uOtL)WH+d21(?33iJ7a|#1fYvf3T&!JC zKdpv|VaJVdg^xTRbX}QG$SK&cFoGn(fGs0;clG;i<=-zWPpKVc;k~R5V||B1;8+4@O1TaS?83{1OWTGl=%Pv literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/monochrome icons/switch_dir.png b/companion/src/images/originals/monochrome icons/switch_dir.png new file mode 100644 index 0000000000000000000000000000000000000000..36253c57e0cbd2fa9a90a886c2cd33d42efc9e67 GIT binary patch literal 415 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzwj^(N7l!{JxM1({$v_d#0*}aI z1_r*vAk26?e?-C-BGx9iN;CW*)Levyrw*K~VDoOFiU$Bv&{tPEOT9}tsCHdwI! zO6I%`bHXMh&S7i1<5Ilfn1jRTwy#^7N**gDeCqvYb(ia1^6U5;eg+@vHa1RIYtE3G z-niknhO4@+A$P@r3T9t^zK@dJleFIYUP~{Sm)anZn&WD$V(0jLlgYfJt_kng8_Zl< znE&SZnyZ{`pE4>{)AoqxI_LE~WX}Fys;ez(ez~bhgTe~ HDWM4ftQn`D literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/monochrome icons/switch_dir64.png b/companion/src/images/originals/monochrome icons/switch_dir64.png new file mode 100644 index 0000000000000000000000000000000000000000..49155ffafc7b48ca7a0a9bdf5825a96218661ba4 GIT binary patch literal 706 zcmV;z0zLhSP)VGd000McNliru-T@F17zJhw3_$<@0#8Xq zK~#9!?V2%2Rbdpze_SrSK?iXV8UzPXLLNl83eI8D5)C$(G+oLiq9Bl#hENbfHw_|! za1bG!OP)(1En!0l4Q_A9$tVzY=m?j<_s->BujhX6{NS$NchC9$_k8F4-vh^S9LI4S z$8j8|G`fHR3ojCtyk8IS1o#Quu#kYbq<#8;2f#x~f*CG40sX*Z;2zLz@msv81PlUC zfxAGhlZsm%cn2H-CvBc2q`*gkO-0ZrlAH}-IE28*fltc7e*rJ0E>xNbxCMMs2L27W zA3`mNfhh?{EAz1sWL}dK{GkZE3A_kF=4o~nfqw;NLcQ{uEoA<_Aer}HR`Q~p%J?9~ zFfTWOJ(&}_s-l4O^|k<9&9O)FUmcmVG&4+Qxbi;AO;O8{fV1Zin3qAy1Y^KDaI9>4 zvZx|yvDP18+0xB22&~A96{U(q*;~8;Myw>FPrlVA`d0WnRa^%e%5{!`HJLxm*juy8 zMk%d|Yv&~5bp~~9TIx0<;5M+MeEFn}x}E|1%C#E6gr%!fQ!q7tKn&c;@OkXWAw*UZ zG18)7W;I0W8H(>NFim-$r>bB+2M!8wgnFf8+*c;T6zPJQ*Ak1xmuR$^PR)7?R|;CI z4s2B|0YxZj8u+a6CxW6bZSjH9oO#qqr=2c*L3of^PTOQNRK{r^@$ZM2(W(bNknyw+ zfmgs#D8(&N2Hup0sxY@Gu1JEu1B<|0;BV0liDkAW@C_NPf+e{u!^4sSegmt(lFSMn o#Sq5+I^#Hw<2a7vIF1uEr-9XqxM>hSvH$=807*qoM6N<$g84NrrvLx| literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/monochrome icons/update.png b/companion/src/images/originals/monochrome icons/update.png new file mode 100644 index 0000000000000000000000000000000000000000..be4c746b04e91145d27a04808bc3dbce92cb8567 GIT binary patch literal 396 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzwj^(N7l!{JxM1({$v_d#0*}aI z1_r*vAk26?e?l!A}BijQ$r0Vo2*)_E$BquA{wRfzDmEu-xlDKliCxNr`^?5bMo$S*Z ztIwaCx!Jl{pA!h`4_oO4xHE^!BrFksG+pu5%bPEj{Rr*Ylf=Gwqh0T1A3^QA0{45K z=u5mmaFhF7uKC^k=O5-ZZI38nd_S>5qrF^a&)xMN%=$_Np_S z48&#$sPyh@>}^%hZ0hY5zjV8k|ABDFjgA{tj$1Z(CnhiUJ>ax~BksT{w}2@cO-&1W zHx@9RHh8t`b!yu48iN*Q=D+0z);6pU&UEUsQrYtwB+Nzl3@F0n-Au zkOtcas-D94xu!H0FA!XGmm%0ei}Ts%19cvctE^e8V$JTak9+IZQ?`CuZ}As~a5iWE z16l@5A`M%9$*??Yv_3pz*Q>`onh!1{EMZF7FL9f5jl?mz-BX0sc-h4Etu#!(Fr(z@ z%hxySv=?1lwyb#Fw4SR|c(U!J1GQHlWB=+^`2F$yG@ows5TR}-*@*v6_pP#S32Ps_ zqMcR6zRlku_V+?RzHVLLx&-%REmwivD<};A&aCYmK&z;|3e7MkpuQsYC^EXS# z)*Ujz`A*&bIp-N4o6Tqb*R&;3{m0754_dj^9UCO)zh}xl@QuCv_mTT-_QvvOI8U#V zn-ILLXqBA7>mpl)o}Vj37cN@=Z0-uqHp6(HP)zjN=MG|j6iq!7i)%-Bxd<^>`f5*}$5K}aAZ7F4i6gi28U5D+R0 z7N~5B5QqgJu}+avl~SoFLZVXCHf?EwCw>$h8c`Jz1euw84-03C>)NTE7{r3JocT1r zbH97$n>)b&wS$_PniREaAKiS1K#5DHz>qo8D*U2a>k^P;_l#;&A~0R1YxWxNQJW05ohV>t(IO5yQL&=3@Y^wzjvPzjXOZ zzNn42fH@UO}(X4U~ZtfYKL>u`jbK|nh|Zz)T?*%Rx& z6=`q&a`TVYwwC83_~vR^DUlm^WcZCpC+oHSmDgT8xpXz%!_1=qzzkTHTo@V|d~D|A z>{_Jz)8D|2)zy4wM@J_SjRAlVf?C^Ko;v&Wx#exoz=BP`4AEv1!JaTZ^t-;KhWAd10#A9wtKEz%HRu~_jR@|dg)Oe z>O+FiT>1*rcK8X~iF>*1G5{oPmkcl_z;n`4^I&dX^t{1ZpS3LqBKU*%cM%vd0nAxV zP1B3%^r+T4ldzqIe-3j2HCHJ$Yii*1>9giG+;)i!#f&k_N{ZF)ya3FOg48o86K=(>P zzXAMYwbX3i(>{OU(n5yngPWKk5y7K`V`i-EYPQ}E1AW{NbxaB>c-agm9QR`-<*UXR zFf%rTi#FNhW?5Q(rqBgj*xpI*&g989bDZ0Zz9}oSYM-mENHp2k$+zU^?&deW{ zz@yY0pFMSEt)?wV+Ae_+TZg9R(E9xh$8x5l4yW1Q?J?g27)ddET=% z4PgYw7H|Mz;0Jakc-7P_4j}=6ss%2#fQNoy3n^AA!i&BiPUo`A$N>Ppjoa?As5Jmg z)!>Fqk6>|K$f8LV;5zh!zAfQ3l&rRL0&NNR{h&|o5PsJX)?_=u_!~j5lw!r(A^Z*p zlD12RsfP&pE%uxPU)xfNLL=a}9Y{JZ!61eryt?h7wk1))%VoGxA2a~~>1>8U{FRV` ztJxm-fg?p@;dkUfJk>u;grAKuT()u(Yy^%_@~0@_8d-GrX~)eIAtpreW8;UqH_G;Z z;!II72U3Ydff@UXdya+;T+IiPJ#B6K109YO_q=v^J^zaTnfeQENdey%`I9aH0000< KMNUMnLSTYRyb=%q literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/monochrome icons/wizard64.png b/companion/src/images/originals/monochrome icons/wizard64.png new file mode 100644 index 0000000000000000000000000000000000000000..71f45dd165e16d03bf5537db8dd93c2df40b54ef GIT binary patch literal 1818 zcmV+#2j%#QP)yR z+b7_GhkXLXYQ;Y63j%3hwnenrG%+F(?GqpbLM^l@!4uDbxYIPHw6#5+vk!3^H|tyN zi7#!w=kf9RzW$tiQFVDp< z=6R(W zUz4w^s`5OMGI=Wcb&r>^dvu*=&(wwEq;55B>*JcM0993<2NW>7-MS|J>{Z-gclWFF z-J5KO7ES;;mMae6YLwRX4>8le{xql4D~>lDTJy+zIeK1lr6%pXyUqWyA#$ zh(UMgLNb`ogXknNjx{W6INrFd@t=o>-%BpK0Ocl`FScpLBD#=oGGmRZDwJ{ZAX?Dd zM9s|D;!~Adnwpk{E?&4;xf!4f`91O^nF(gFsw&j7yd~7Ws{Nz!@uTs=J#U-^s0DDT zP~5dJib*ZZF9H4M9ZR#0lZ2w zPyF*fa2GG=}Z>U%)BN#@_= z=%%@t%xpI{H9kv<@8h|d1Hw&J7oe0R4I%!cYqGVlxco;3E->)a?SI+2q3gQN{inX3 zyv=b^{RG4a2v+^(rwj3+F68gJCZBw4-=60F{<~JsuEk=Tp-Iya^0Mo&p~+E0NY*u( z+`47+y8NrPcsSqfPuJwr>#x7TpKBAW(EeY1l7=QDh7ha^$vwL6_8Nw>b<37@i&vdB z1YO7x0`Fo50?mPk5>Dc8?7D{Iq~bpEt(~;Y>8n-%Lz58@b}%zq0)fF}Cr=EgtLIB1 z>SJbypsb17Q=W>T)G~PhFl}oiz!LyeCih3JWi;F*5=!f%}f1 zIB_VuNMZtn9x%n*R<`xFb+mpnK7N$zwgST8&}!TKCW1Ng%L9YC$OAyswt~!<@Tp4U zxwF4TXMQ~!thp8lheQ5ipR=dze>+ZU8<-JjX}>Iwx5BZ;)Mf zpV`>c`&?e~eSP;P;)x-E;iTLl(~1q2>Nlp_f~qnE4NZG58wUt znd79Ii9mV%#x)(ER?HMlm;IHJN3rB<+7z8F`+_~6)f)s{I4SpFA@W}OjjGpWkJ3&a z>671Y+SWs5`i+#)N*urFR>l;aztWaW{y_8!$(QOkdcFyIM1F56-(89+nz;!1>X|$M zw70gMGi~dUTefcg{NTZnzsTF^MDp~fmM*fNfxEje9 zEkN1ib6jcbLI6XPqaf@o{p8(Y)6Q*URU3IXL0yx>ATEdeNG+4kD}bTN2oVo3Q|V=I z#|BX2plhw?3kqNe`5u7nWlZ~F)3ydtC-}b>VDM{T&ioJ0m7M%gJ(16P8=Rh*iLUMH zI_0|V9)LM*T^DomhfUkM7j=fL*WsUk`Q?kw&NUOscw#RR@xoTgaq@LXzTh5U2)Tn9 z5h7d?AuIVjzu45Z0BI3+F=K>i*0*0!_9Lck4WN!u&=QMUu~C}c1nIKDI9v90O}=PL zYi_@% literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/monochrome icons/write_eeprom.png b/companion/src/images/originals/monochrome icons/write_eeprom.png new file mode 100644 index 0000000000000000000000000000000000000000..4bd028f8bb1b2bb0fe9868af0a799e5038a4f4ea GIT binary patch literal 359 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzwj^(N7l!{JxM1({$v_d#0*}aI z1_o|n5N2eUHAey{$X?><>&kwQQ9#I2q$#zX6Dah>)5S3);_%yPj_aBXL|py7uNo-T zEBDRV%_w$sQ3MOv;KXWqA60xw+z$)7kG&dOJ6+c)yi7Wrvi%Z}QbQ z%h&=Altt`e|EB-`d$Ydt+*ymc?K%`5+Hr77zH6Fr;h|o~gNJ4;-mUI`<28?ezB138 zr(uysicEOu(q|vsB-!Uasq8alY*@LsTvoztv!-u%Bm86Ff^OkAe6YIkTifi;QIC%ksCL?>BEPKHXLHU;189 z%CxD{+e$dSr-lp3Y~Fb~;?x>VmNSv3f}Z=RCY&morkw1>*gx&eH2tj&mO_(KPAevK zwWRDU;yh9IY`e+>ea@YqQzj=Uvid)b zGm1FiLr<>&kwQQ9zi1ufTEUKcG;Dr;B4q#NoG747nN%1X$d)z2lQs z-rw|vbDEv^n?IdPL(i$Tc62GJb?g?f*wG@%S0rG0^6>Vh>)8)Db&Jbo?ej}I*zC3D zA>WI?g^DWMJ``S+zCX>P*?!WFJcl>&X{}Pt?=XB qpLpN;`bkwY2~B8VQBh!Y4HTRANatQik6{PUO$?r{elF{r5}E*yj#y;? literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/monochrome icons/write_eeprom_file64.png b/companion/src/images/originals/monochrome icons/write_eeprom_file64.png new file mode 100644 index 0000000000000000000000000000000000000000..fccdc6802dd3dc4f9156155357914a7acccb5f8e GIT binary patch literal 296 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmPqqky0w%Yl>a^MFEIJzX3_DsH{KahkU&K%niS6 z*_)-3C8sn=3vb`I!#M7o=Z*XSxdl|2G`85TGm5m?_ebYuO3ls6O&5PmGEUw6@$mVn zyvO-%qs=OxoxaC;Goj{Xx8dv_{q709$ELfSNPFDwexmL1?Y|LB3^z_|DqX9nldpNY z>x@xdXUFT=k5Ah#`FH8(;g6SDcF5W?T;2CKd*|QZ)1JO4Z(v~JP{2X}oqXWSy8{Qk UTV1ksJ^^_Qp00i_>zopr00=~L$p8QV literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/monochrome icons/write_flash.png b/companion/src/images/originals/monochrome icons/write_flash.png new file mode 100644 index 0000000000000000000000000000000000000000..6af3c2950177b7980013744bd1ca9d7cb3334c3a GIT binary patch literal 445 zcmV;u0Yd(XP)a18`=2JZvG z+`;=mWDo9wKuT~KSbqTUJhJ}=z{^y(`|8wK)9RY!)PjhX!U)790JQ#aNvHLrMK-kb zcJ1o*7YF5K-u`5#PN<1lxUjG#)KTsFj^l*WCagjINV>B3Z!b?Q4NV zDF;cGA+LY{)&W_28?dbaV7qxwngeyj4EUqV*jI>_RPO|?9lOF00000NkvXXu0mjfAOgTf literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/monochrome icons/write_flash64.png b/companion/src/images/originals/monochrome icons/write_flash64.png new file mode 100644 index 0000000000000000000000000000000000000000..c3d200d61477419c7307fc9c885bacd4a97b3adf GIT binary patch literal 634 zcmV-=0)_pFP) zof_Tu6WixYV$2Y_1Bli|M|eoh8wkz)FL~tP48$4MRs?eK1%@(fDh4^Zav0D=6ms+A zGQdV0N^s;f;G9S?e%uB$F@c4fgaI}tuIK&<9{GT<*0r1^-MfM$pxhUn697(L)1 z296%xh+brXs0lvJ0U}(2p$Ymm3PYa_Kp**m$KqKyg6HDNd4jMoaXruz;jMKA{}c}v zKUad9;NWVty0=+4?C1b>juRSV%yzpqlm>8@L1VnlW`h(Z(3z;J%J^6U$b~T;kG(t# z0I~S*sOwtyVQ9B2NlU;swO#HOjW7UCEC!(E|Glf8Mpm;7ulqEp5 z-#c5kEK5+G0dLi-?ol|7?H-9y9*04)L>7y=t_&E3!LLCm(PhB#^XDV5i;42%@Xh>M zw*hy{rEUZAJP%YGFq>so+9O3w0?rDMJ%0_?000fw0YWI7cmMzZ2XskIMF-vi5EK;_QP=S~000ErNkl2acd7onPSH3gR7%9SfvtyTc+b~{~NUHJX}d9FfGR#wLK>(@b& zjo_ykA%=l6Knt5G9*HFioIQJX#j`IhEtO+qW3sNUPD&|dXJ_Yv65mHe8w)=_2W$)5 zT-Z0dq5=z9#>2yh4^dT>+qZAi($d1CM~|>PZvn}61b>%-N}vsRJDl}s*q#R71ug*l zquWq$63Hot!-3sy2f*cWasK>ycJJQJo;`bzQj(dONo{Q{mo8mGi23cRs?yrpO5ay~ z^IEL24Wo*%udh!6vazvIu7(pQPRzGvl89S`9*+ly!$EU%Gb1A-jE;`3b;5iM{Ft-? z9UUDKkbigY-j#qna^%Qb6tG4V@JLb$gCMPFxyWGr% zX0beH`8%W#2t_dEpJHfeh;{4M;r-Q%K)fQQ{4A~lO-)UVkB`SJw)*;drl+Sl{^oI9 zE`JwabarCgXr!&<0wpCS)YQ~aQBi@asyJ@mWZ=dPHmuKKdU~41#zuTTA6Bci3$O#e zq!rkhyOD!c2Qe57eDvW5s1mF#EnM#HrJ$eypU+2bZZ00Lhl}l>q61B5&XAItip^%D zyu2Kn&Bn;+$Qx3Z=b{v7YimQ7dd!z+WPfBZ`P(E$qY_P9Y+MlX$!yj#eK<*JIaC&*dI8 zO+!(XsDF~R5b*o`{+#sm^u-n}EPp8Ez<~o%@-E<>>mGsWz#@77lpmppU!*SAMBvLo z$6)o|7xxkhg%CpE{@IPqW{azU)9IwJpm33})9FMadzSy2B?=Yrm6Vn|zGM3iva+(6 znwmn>wD|KrB?W`QfXCy(-fu_yQ+o%U_t#2b;RN49@&b^X;0_%aR#fGjJ{zZh&Ho7F YFS^S663lgcivR!s07*qoM6N<$f(*WDm;e9( delta 252 zcmVFAh8T)5EuhK!lZMxylK)Hd z0B9_=aP1+~H^A2h--l2iYSk*dDnuMU0@v`2H6Y%@hiGmn4Rw(VUj*?D=>@n0Ti`VF z%^7$AJK%`uU!@Z7YkT=7G{(G+Rcoy(;Z52k=)BgNXaN9gd$~U_?e#7iS=m#c0IKy_ z*Sg~cKmY_l0Fswc-}gSMRS9qIG6KLkSKJecenwA?H*HBp3A(EQ0000JDlQ-}kTQL_QtROr}E%^-Y?3??5XEr0Fao?ZC1>7dvSx!a!P zq|f>OpMRgP7yj!aBJ{U_Bu!5Q^l|K80-S&vV_ib5HSYp)ooyD_^n$YofG4qDatM$e z9UXFDU_jQ_*GIkV)TvXlrKLq$tyT%hzP`TDoO_LPe~#GyI3@tM+byM(vbD7}DuAx8 zE-9syb#-+TkbhE2>2x|n^MfnSe4>qe0smScl$SN4($Z2K4hO)Sz-4Xt7r+7pHQOrI z#hY`-_OaDC(-G2;juser{c4)4-Jtlze?rs1K1_Jm)`)YHT`|f6NWU`4E?SKkeHZA zLqh{su76ws!0B{ST3X8P-MbkdALsb-ZI}eZT^65$FXvBi!&~ zZA}gE$R zIXM}t)k~o(tp&{6!I9k-gJBjXm`8a>(T4=2q6$cg!`eU)9F}TT;#+jComd~+;KQ? z|2l%*Zf9_Ckfo(13i1osR=ACY`32hB+j;ckPk0tR96NRlo6Uxl@+%-Ml7Tx?%9C=2a(9h1IB8)~OGAIjQDjlb%r$d5*&*$Tff&!9&pd#43c{8f2V#+k(2Y+te zyvYr_9X(*m%|%sJL_{gN?t&x`2ynEj3csR|04ytlqm@;t>hsz&J1d)=#l?7}L;y-^ z3grh5gy%P;ATec_IDO^}|}X)8AVYdqkoTBFMy@FxjBPguMbDh+?-sF96qv&-jIxqjp14J zgu&0x%_9`?n+(cz0r$kDa}m&S|9;9 z^z#cq?fO;UMdy;o7A%R7a7#iW!$%Sl9X^r>4{s%~Dx5r=-7qn><<9;RF27jc%=LZERCz6vuz}w%f8d**YMp+ma1jX_qph9|YkO!eWVuL@^sov@%VW_{A?m@GVO) zMq;9a1r5&Vtcqfm!Ln)8h?<~mGY~a>ZHxPT;*c0Dmy%0^m(K_zR#ExRL~BNc2`~V6I2+NHxrwD&*j1SuX)D1B1Yqz?~xB zBzhmodJPZ&>a?>yoNpQaB}UhyT;ODioQT_fqOEUOhU?AHy_#Go5^9%um8 zYWv@4hjszuT38*LUZJ*kU@rf=T8wt3*z?QY(IokEBL7~K{V1~Cb8&6}+qGK$T-Ncj z=>}G&47I^o6i(@I25^r=p$&-6;H@8%{X_{SH;4_uUZ6~zdqqAXVO^Fy<(#)W%e`JN z+1c5gAAdQ|sZ*zjsTgZkuR*D6g*jJ@F*}KCA1(v zKcBI&F>HV%H1tJgM>5?gC@27%$)!t|Sh0LLnSg0CaX1`UmPJuv5kCMQ1OhY% z0;B_l%UndG(J3h%k3g+9%bx_klHQ*qAgbjVXDrL2YD*24-G%{JX?Ch=9>KCK07^?s zxog!*E(_xH{5*WV4a8!xDG3#iz+vgrkADfr>4FTOfmBuHbUN9-^I3+5hDb|GBNB-a z3??cJSDA~YOO_H2hjF{zL?V%CXV|s(&A?~C+cJ{30{bKnszqndw7#npqobqv{r+iR z7pIn%mPBN({Z}K=0(1Z;W%S0WRRE03`UT)=fKVtzMn*eZ_NoH=ubj*gB*1DXb)zYq5^ zH%ck2h(-TEKMK`;qpQ+d8AQn!(gt9xyu3WOqN0MVtSlxbCJ2YaGah8O+i^G?oI7`p zBVQlEvaDxNyf)jr+Wmk}xJ;A3Br72EXE}Ei&||aN-iSt{$L4!sHTbX5-(wJ*Muomw QL;wH)07*qoM6N<$f~`F&EdT%j delta 408 zcmV;J0cZZ-3CjbJJ%0-m000XU0RWnu7ytkO2XskIMF-vi5E2g`oU70D00044Nkl@E5R z(d0Y{LhEj@nGa=s}V$?~?P)wbz;ml0Gd0~VP;^a8+F zA8xyC?35!KzVO!dr(Uk|*S`wa`n%6rpdg z)qb`5B1a0WV}Jc@((!l6@%S*92NYNns)4ksWs`|0biP~Hvqc2k%{mmGa*)tQrcPd` z4Sdl0UDCOvf=s>db7Y=$NKzTn1p@8@qITP`cLVVB_?$Ec))6z{pH3#%WeR}kVP<9m zv|PUL27oh+%03<>NisBm;AxnXT;^u>nfhGMF2Chm!4dA=JEd#@0000~8 diff --git a/companion/src/images/write_eeprom.png b/companion/src/images/write_eeprom.png index 4bd028f8bb1b2bb0fe9868af0a799e5038a4f4ea..194e00bde1b46965cffc1dfe51d32e34bb80279e 100644 GIT binary patch delta 1368 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 A2LJ#7 diff --git a/companion/src/images/write_flash.png b/companion/src/images/write_flash.png index 6af3c2950177b7980013744bd1ca9d7cb3334c3a..b83fc7d8ac47a1d6584992c4784aacb0d0d663c6 100644 GIT binary patch delta 1234 zcmV;@1TFi$1OEw-J%0_?000fw0YWI7cmMzZ2XskIMF-vi5EKzK;M;ZC000DxNklC13|^z|VjZzE#%3fB{@wETh(nQU#n7o(;I5@tuq9Stl?h z%Fb$@7z45v$@5V`7@F0iz#adTa+B5w2tSZ63jMG%z~d zrS0v}_{TK<6F2&13TV^{%QZ=*uYq;K-z57!m3cAH1UwI{*3z&W_)=58aUq}KPpyK* zqExX^MHzN219bkqv4oWZTY)lQhio1P5*GmWFfb|BzkeZT--}WUHq0mFmnc>gMx@>! z!k>@;OpK9Q=J|A)7XbIor#wy$oC00}YJn1M{X0!)2XIB+gMdTZm!+*8x|y`wB8T=w zS*w(_6A}EEh5x2#8pm&ef15G^e&be{c*Kz|@WMMVYG)zv7ant|JO07yWYWzwpp z7{JHczHOx&O9_X=9PxUw18?qqi`u$6_SM&ulam8Le}6xxPqt$RUaP60p`n4Ut}Zgt zGjQj*!NOxY01q%CEwe_hP00Ht;Ay$tybCNzOH0G=_hSPbsj1vuR74_hpuV2?`1ol6 z7k~Rn0G_R^WNm&vpEWkpapD9@DV8r=4hlC?u>ej=JUk9GM+9jW@Hwy<$dgF7q^GBY z&C1x=7;6g(ri+5jhQr~&FbuM@v-tt|q^XIf^@0vK_2Ha}H?VSg9^tjJx#x}x=56U6apOS!+ioNzciE1*md z90fXoXJnW(BF*Pqw5-a^%w*^8m+1SwkGQxvg25mI0|VFZWKJimR<2?)7{u*z5ex?B z$gpegTcv9ql$N{=*e`LgMfTLqsk=%sGBU#U%I$NkGs)}q&Uj|}yIN*SfDWKXT7R!e z%>v+x%wGjw00@i)NQl3Fr^wCCr96szP3rFMo&jLBTDk1MjKymCO@-Ag0Fjg}Pq!4J zJ<{2}Xm4+Sw5+s@si`RddV70mYilE{VgT@U<94}GN?{lVKA#VTYQ52)QHeC7$O~yL z;P-eusfC4wBqb*?Iy%ba#AHlC_DeWBjx+~@gM%FZ_Be)NyolnRh5nj72$aiMqkYKN wQIr5_3+y`z=(O2w?}w&BC;vNklgQl)g~anFpYZ=>|jJqGGAY*CnZrC{FIjxe7~O z&c5?^w(s)+|40@9*l4BrRF2QW8h`+}Zw{{k>^t^-v(Cm(rhmwS1|myv4Fq!r?*qZy z!TUgD5AK3MN^luie*o}2vi}Ca%T%}f>eN`%>YC)#f{2#F2*e}+wEl2Or}d*nHnjA1 z_1CjET>TJ{$JpS$z()N^-gS*L!y3~mhxb{tNS>hLE1{Q&X+q65>VG=@z@h}=**|SL zE|;9oZ-aS&fqy;0o*7YF5K-u`5#PN<1lxUjG#)KTsFj^l*WCagjINV>B3Z!b?Q4NV zDF;cGA+LY{)&W_28?dbaV7qxwngeyj4EUqV*jI>_RPO|?9lOF00000NkvXXt^-0~g1Gp$b^rhX From ddd8d137fc29d24b4ae3c288f6184d53cb22dc75 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Thu, 16 Jan 2014 22:31:03 +0100 Subject: [PATCH 147/308] Replace SVN strings by a VERS string (2.0) --- radio/src/Makefile | 56 ++++++++++++++++++++--------------------- radio/src/simpgmspace.h | 2 ++ radio/src/stamp.cpp | 2 +- 3 files changed, 31 insertions(+), 29 deletions(-) diff --git a/radio/src/Makefile b/radio/src/Makefile index 7e49bf5ab..0fba8ef16 100644 --- a/radio/src/Makefile +++ b/radio/src/Makefile @@ -256,7 +256,7 @@ MENUS_LOCK == NO SHELL = sh IMG2LBM = -python ../util/img2lbm.py TRANSLATE = -python ../util/translate.py -SVNREV = $(shell sh -c "svnversion | egrep -o '[[:digit:]]+[[:alpha:]]*$$'") +VERSION = 2.0 SRC = CPPSRC = @@ -1063,43 +1063,43 @@ stamp_header: @echo "//Automatically generated file (Makefile) - do not edit" > stamp-opentx.h @echo "#define DATE_STR \"`date +%Y-%m-%d | tr -d '\r\n'`\"" >> stamp-opentx.h @echo "#define TIME_STR \"`date +%H:%M:%S | tr -d '\r\n'`\"" >> stamp-opentx.h - @echo "#define SVN_STR \"opentx-r$(SVNREV)\"" >> stamp-opentx.h + @echo "#define VERS_STR \"$(VERSION)\"" >> stamp-opentx.h @cat stamp-opentx.h -stock-stamp: - @echo "#define DATE_STR \"`date +%Y-%m-%d`\"" > stamp-opentx-stock.txt - @echo "#define TIME_STR \"`date +%H:%M:%S`\"" >> stamp-opentx-stock.txt - @echo "#define SVN_VERS \"opentx-r$(SVNREV)\"" >> stamp-opentx-stock.txt - @cat stamp-opentx-stock.txt +9x-stamp: + @echo "#define DATE_STR \"`date +%Y-%m-%d`\"" > stamp-opentx-9x.txt + @echo "#define TIME_STR \"`date +%H:%M:%S`\"" >> stamp-opentx-9x.txt + @echo "#define VERS_STR \"$(VERSION)\"" >> stamp-opentx-9x.txt + @cat stamp-opentx-9x.txt -stock128-stamp: - @echo "#define DATE_STR \"`date +%Y-%m-%d`\"" > stamp-opentx-stock128.txt - @echo "#define TIME_STR \"`date +%H:%M:%S`\"" >> stamp-opentx-stock128.txt - @echo "#define SVN_VERS \"opentx-r$(SVNREV)\"" >> stamp-opentx-stock128.txt - @cat stamp-opentx-stock128.txt +9x128-stamp: + @echo "#define DATE_STR \"`date +%Y-%m-%d`\"" > stamp-opentx-9x128.txt + @echo "#define TIME_STR \"`date +%H:%M:%S`\"" >> stamp-opentx-9x128.txt + @echo "#define VERS_STR \"$(VERSION)\"" >> stamp-opentx-9x128.txt + @cat stamp-opentx-9x128.txt -stock2561-stamp: - @echo "#define DATE_STR \"`date +%Y-%m-%d`\"" > stamp-opentx-stock2561.txt - @echo "#define TIME_STR \"`date +%H:%M:%S`\"" >> stamp-opentx-stock2561.txt - @echo "#define SVN_VERS \"opentx-r$(SVNREV)\"" >> stamp-opentx-stock2561.txt - @cat stamp-opentx-stock2561.txt +9x2561-stamp: + @echo "#define DATE_STR \"`date +%Y-%m-%d`\"" > stamp-opentx-9x2561.txt + @echo "#define TIME_STR \"`date +%H:%M:%S`\"" >> stamp-opentx-9x2561.txt + @echo "#define VERS_STR \"$(VERSION)\"" >> stamp-opentx-9x2561.txt + @cat stamp-opentx-9x2561.txt -v4-stamp: - @echo "#define DATE_STR \"`date +%Y-%m-%d`\"" > stamp-opentx-v4.txt - @echo "#define TIME_STR \"`date +%H:%M:%S`\"" >> stamp-opentx-v4.txt - @echo "#define SVN_VERS \"opentx-r$(SVNREV)\"" >> stamp-opentx-v4.txt - @cat stamp-opentx-v4.txt +gruvin9x-stamp: + @echo "#define DATE_STR \"`date +%Y-%m-%d`\"" > stamp-opentx-gruvin9x.txt + @echo "#define TIME_STR \"`date +%H:%M:%S`\"" >> stamp-opentx-gruvin9x.txt + @echo "#define VERS_STR \"$(VERSION)\"" >> stamp-opentx-gruvin9x.txt + @cat stamp-opentx-9x.txt -arm-stamp: - @echo "#define DATE_STR \"`date +%Y-%m-%d`\"" > stamp-opentx-arm.txt - @echo "#define TIME_STR \"`date +%H:%M:%S`\"" >> stamp-opentx-arm.txt - @echo "#define SVN_VERS \"opentx-r$(SVNREV)\"" >> stamp-opentx-arm.txt - @cat stamp-opentx-arm.txt +sky9x-stamp: + @echo "#define DATE_STR \"`date +%Y-%m-%d`\"" > stamp-opentx-sky9x.txt + @echo "#define TIME_STR \"`date +%H:%M:%S`\"" >> stamp-opentx-sky9x.txt + @echo "#define VERS_STR \"$(VERSION)\"" >> stamp-opentx-sky9x.txt + @cat stamp-opentx-sky9x.txt taranis-stamp: @echo "#define DATE_STR \"`date +%Y-%m-%d`\"" > stamp-opentx-taranis.txt @echo "#define TIME_STR \"`date +%H:%M:%S`\"" >> stamp-opentx-taranis.txt - @echo "#define SVN_VERS \"opentx-r$(SVNREV)\"" >> stamp-opentx-taranis.txt + @echo "#define VERS_STR \"$(VERSION)\"" >> stamp-opentx-taranis.txt @cat stamp-opentx-taranis.txt translations/cz.h: translations/cz.h.txt diff --git a/radio/src/simpgmspace.h b/radio/src/simpgmspace.h index cda058487..b177d82a0 100644 --- a/radio/src/simpgmspace.h +++ b/radio/src/simpgmspace.h @@ -359,6 +359,8 @@ void eeprom_read_block (void *pointer_ram, const void *pointer_eeprom, size_t si #define boardInit() #define OS_MutexID pthread_mutex_t +extern OS_MutexID audioMutex; + #define OS_FlagID int #define OS_TID int #define OS_TCID int diff --git a/radio/src/stamp.cpp b/radio/src/stamp.cpp index 7200b60b9..72e1208bd 100644 --- a/radio/src/stamp.cpp +++ b/radio/src/stamp.cpp @@ -40,7 +40,7 @@ #define STR2(s) #s #define DEFNUMSTR(s) STR2(s) -const pm_char stamp1[] PROGMEM = " SVN: " SVN_STR; +const pm_char stamp1[] PROGMEM = "VERS: " VERS_STR; const pm_char stamp2[] PROGMEM = "DATE: " DATE_STR; const pm_char stamp3[] PROGMEM = "TIME: " TIME_STR; #if defined(PCBSTD) From c19c592035eb8bfca1520b0d37d115c8f0814d12 Mon Sep 17 00:00:00 2001 From: Kjell Kernen Date: Fri, 17 Jan 2014 00:23:44 +0100 Subject: [PATCH 148/308] THe rest of the monochrome icons originals. --- .../originals/monochrome icons/clear64.png | Bin 0 -> 335 bytes .../originals/monochrome icons/compare64.png | Bin 0 -> 879 bytes .../images/originals/monochrome icons/cut64.png | Bin 0 -> 4252 bytes .../originals/monochrome icons/duplicate64.png | Bin 0 -> 472 bytes .../images/originals/monochrome icons/edit64.png | Bin 0 -> 534 bytes .../images/originals/monochrome icons/exit64.png | Bin 0 -> 855 bytes .../originals/monochrome icons/fuses64.png | Bin 0 -> 868 bytes .../images/originals/monochrome icons/play.png | Bin 534 -> 0 bytes 8 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 companion/src/images/originals/monochrome icons/clear64.png create mode 100644 companion/src/images/originals/monochrome icons/compare64.png create mode 100644 companion/src/images/originals/monochrome icons/cut64.png create mode 100644 companion/src/images/originals/monochrome icons/duplicate64.png create mode 100644 companion/src/images/originals/monochrome icons/edit64.png create mode 100644 companion/src/images/originals/monochrome icons/exit64.png create mode 100644 companion/src/images/originals/monochrome icons/fuses64.png delete mode 100644 companion/src/images/originals/monochrome icons/play.png diff --git a/companion/src/images/originals/monochrome icons/clear64.png b/companion/src/images/originals/monochrome icons/clear64.png new file mode 100644 index 0000000000000000000000000000000000000000..3e80f3ff991b4c895af4f7390a4d8f0ca4ab2c21 GIT binary patch literal 335 zcmeAS@N?(olHy`uVBq!ia0vp^P9V&|1|%PcFuVX#Y)RhkE)4%caKYZ?lYt_f1s;*b z3=DjSL74G){)!Z!AbW|YuPggKMgeg?5s{TouK|Vbc)B=-RNQ)d%a`krfk4|se*bIA z6)lehUHac0Yb{J(Dx&LWeDutdT7}z}_FUM%LV#Q-NgxqVS3j3^P6VGd000McNliru-T@F74iVD02HUnREtAk56;E@RuTr+~&Nl0S^llb_K$oE!Y z(14Gxk#HMWl&4|L+sD^4sGT|tqfIK1R+P1WHRO+y&(UD*p zAAeY}itUj$8-P-s=ggMMb6p`IPL#VM_h$l2Obl$35mXs90X-rq z@)9VEKvK&4I)Mkkx&(pKDd4hCDliWi z0v0Roy^Beb^rGP`f-MB>1C~j34}q0J=UZY{{GcxcY?aD?fNj8AQ7!}ffl;a5Mqri? z1gw$Dj}?((1$d(9+w21Y3#9Vzn06}^b)_r=+Y$&ZmC9vBn`8X{YtkK|F3uBBZxxSH z{q;DC31A>n9t7Ha424euXB71(sAi69WO%t37yyn-bst5PcRlON+fG2Y;^prO_xL>` z_LpM%kGi-Qh+;(A1C)UIMM;RX1M8)_Yrv195YVEi`($FEkQJU{zc!Me085I$!rzyH zdy3%bXQRn7eM)Sk5ie!43Ty#hh?T!!YLGO4m@xTgh}stTh}iWtQ$0I0Cvtx~*-oZ8 zg)W7P94eA=UMTVbwU@6@KUe4-TB)YNhJYOe1Ox;az&}1P7(jYd4^sdD002ovPDHLk FV1nP8dOZLD literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/monochrome icons/cut64.png b/companion/src/images/originals/monochrome icons/cut64.png new file mode 100644 index 0000000000000000000000000000000000000000..fa78a545d93a1846752086f3583c7d024debaf9b GIT binary patch literal 4252 zcmV;N5M%F&P)|D^_ww@lRz|vCuzLs)$;-`! zo*{AqUjza0dRV*yaMRE;fKCVhpQKsoe1Yhg01=zBIT!& zC1$=TK@rP|Ibo3vKKm@PqnO#LJhq6%Ij6Hz*<$V$@wQAMN5qJ)hzm2hoGcOF60t^# zFqJFfH{#e-4l@G)6iI9sa9D{VHW4w29}?su;^hF~NC{tY+*d5%WDCTXa!E_i;d2ub z1#}&jF5T4HnnCyEWTkKf0>c0%E1Ah>(_PY1)0w;+02c53Su*0<(nUqKG_|(0G&D0Z z{i;y^b@OjZ+}lNZ8Th$p5Uu}MTtq^NHl z*T1?CO*}7&0ztZsv2j*bmJyf3G7=Z`5B*PvzoDiKdLpOAxi2$L0#SX*@cY_n(^h55xYX z#km%V()bZjV~l{*bt*u9?FT3d5g^g~#a;iSZ@&02Abxq_DwB(I|L-^bXThc7C4-yr zInE_0gw7K3GZ**7&k~>k0Z0NWkO#^@9q0fwx1%qjZ=)yBuQ3=5 z4Wo^*!gyjLF-e%Um=erBOdIALW)L%unZshS@>qSW9o8Sq#0s#5*edK%>{;v(b^`kb zN5rY%%y90wC>#%$kE_5P!JWYk;U;klcqzOl-UjcFXXA75rT9jCH~u<)0>40zCTJ7v z2qAyk54cquI@7b&LHdZ`+zlTss6bJ7%PQ)z$cROu4wBhpu-r)01)S~6}jY?%U? zgEALn#wiFzo#H}aQ8rT=DHkadR18&{>P1bW7E`~Y4p3)hWn`DhhRJ5j*2tcg9i<^O zEt(fCg;q*CP8+7ZTcWhYX$fb^_9d-LhL+6BEtPYWVlfK zTBusSTASKKb%HuWJzl+By+?gkLq)?+BTu761jmyXF)a;mc z^>(B7bo*HQ1NNg1st!zt28YLv>W*y3CdWx9U8f|cqfXDAO`Q48?auQqHZJR2&bcD4 z9Ip>EY~kKEPV6Wm+eXFV)D)_R=tM0@&p?(!V*Qu1PXHG9o^TY0bZ?)4%0 z1p8F`JoeS|<@=<@RE7GY07EYX@lwd>4oW|Yi!o+Su@M`;WuSK8LKk71XR(_ zRKHM1xJ5XYX`fk>`6eqY>qNG6HZQwBM=xi4&Sb88?zd}EYguc1@>KIS<&CX#T35dw zS|7K*XM_5Nf(;WJJvJWRMA($P>8E^?{IdL4o5MGE7bq2MEEwP7v8AO@qL5!WvekBL z-8R%V?zVyL=G&{be=K4bT`e{#t|)$A!YaA?jp;X)-+bB;zhj`(vULAW%ue3U;av{9 z4wp%n<(7@__S@Z2PA@Mif3+uO&y|X06?J#o zSi8M;ejj_^(0<4Lt#wLu#dYrva1Y$6_o(k^&}yhSh&h;f@JVA>W8b%oZ=0JGnu?n~ z9O4}sJsfnnx7n(>`H13?(iXTy*fM=I`sj`CT)*pTHEgYKqqP+u1IL8No_-(u{qS+0 z<2@%BCt82d{Gqm;(q7a7b>wu+b|!X?c13m#p7cK1({0<`{-e>4hfb-UsyQuty7Ua; zOu?B?XLHZaol8GAb3Wnxcu!2v{R_`T4=x`(GvqLI{-*2AOSimkUAw*F_TX^n z@STz9kDQ$NC=!KfXWC z8h`dn#xL(D3Z9UkR7|Q&Hcy#Notk!^zVUSB(}`#4&lYA1f0h2V_PNgUAAWQEt$#LR zcH#y9#i!p(Udq2b^lI6wp1FXzN3T;~FU%Lck$-deE#qz9yYP3D3t8{6?<+s(e(3(_ z^YOu_)K8!O1p}D#{JO;G(*OVf24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV z0GgZ_00007bV*G`2i^e?7Z5jMkE?qC00rbpL_t(|+U;7)P8&%SJ!N;dtSr*TK@ka2 z8b}ZzKyB;~h_lO%{DD2Y+2MSFJzp@+7vStND_}Rfm@mMr5Q<1lgz~og0SL{;cQ);) zXtmwdFT$daRPyFNPgmWlTV)_ciWDhQq)3q>g&4}^^0RWetlq-7)N;A}ET~>4h;XS? z+9aY55p_zX(ybw(R4S=lT$_mzKtx3%8vV9z3jsvb;$usa0Djbp#bV=kCtoZU8$?v& zW4kE=KtxSl*Q>uPd0p45MAUT0l^6lT;m~We*4Nkdn@)axeO(_8hb^y|ZgK{Ii1I|# zSzBAXv7)%Pwl*qyd9Rp~B*2_R!s_a3;v}rDu1-vzh|DAj=!|hX+8Nq6Q1RPb#rGPW zAof_$09IC3J_4AVAksQII(n5v@+&JVe*>sb5a}Hq9nB{;1Dr2VpTItdsJ^_s9Q)3& zyu4f$@g3AI3lq%J($YHs6~8U|`1trRj^vk?mUIAJAFqbM7O@hzXvL!=;1O-=Po(-bO-^Yimn08IhW=7$d-{)v(U zLkyUkn-f_I08r`mdiy@Mo&gX!%yfIb-bU2eGjR~$Zbv7KT}{)*HcpzR=|r?EXsZ@S z?AbVsSeEroRaFzf3m?%OfETK&wk^xLwlh3_{8)9q{EUFh`lnBy_Tq>=mL)L4qeqWK zsx|<0&(6*^T)LvmsB?C9_B^hbGl&;2Cv=S08mHOW*hbUL_vL{qV^`x}`70C4~Q{UG&V?7IK{{ri4WF=mq_;PUeF^v<0-y^vqf z1n}pNA3yezj4{*y+7z|!{=r$bPNj0Sdpf(r` zPGcuvYHCV%9EcXRE`W+*7?z{22^K{YK+!OaQ%7%fL@owcIu*k(4r3!ApU-oR_1KzVG%cLI8g+C)Bjqwr#lrx%PB*et!Pit#f{U z{(8dGTidp6OYj8Rij@HV?)~E8LinL$%w4`Y=_bc{Z!o>y7)1SETwELmc`6r~0im9q z$J`4vFE1}oC!HL<{_qg=#WzUIfe6Uua$0~O+*jJ2tE;QmetK6|S6)k@BI-An%V}{F z&3qA27HLs1k>Kxd27Aw^NPLii1ALs1mXiE*S8 z{ZCx7ENikX8?r2uGY(`~)+WeTIa!ir`CSCx?_9R3K5-s!vc{x1gWZ})(v~Di#0^7| zq=qC(Iw!L!Nz#sooEE{a=GfqE?nsif$;s$WEN;0i#EEP+yPeHuDZntY*{mLeU)`}4 z#P>FmKqiyfVvHG#G4dG)nM_8H(XY-JI}q?|WHOm8Bnift#u#e=_y~ab!5G_Nj8zl# yU1f~zxcvh7$QWxd#x$fzks?Kk6e&`q5X1j@I)`h&j{?vD0000~)ouTh{BtW3up5tJG zVGB#6YBlE>xkh1yf*9s2S$PMv`Wh51cn&_gCU{4Rg+G|5^6b8Uw`U&zvv0|&%iq3c zTN}#?IB_Vp0EvwgLpDr3R(eyevH1kk9ghtn51g8|G8A*}oGmMKJ$%bd7HvlUIF$&_ z8{d@k>k@{&BtGVx9-k1H>oE>@z=U?vH zHqCh3U$z*=`!mn%UGX$mW--sX#!|Is`!sWd*PZs2FJM~}mGvW$g^|JifVbK=QHwr> zhGn^DON+G=!ZtUo>#Ue)`CYvruDL<;d42o=*A&K;nzOG@Wc^deryj_`Omyjn)qye)B&Cf`Gt(Df)2?1IB~@0dq(4G;ewkc z=Jnt2^ZpQ)Q91BBU`ppT(_bzcqF%lhuFip+upklamv7r1;li_ojT0CL44$rjF6*2U FngC*Uw{-vj literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/monochrome icons/edit64.png b/companion/src/images/originals/monochrome icons/edit64.png new file mode 100644 index 0000000000000000000000000000000000000000..68f2da48ac3a4cbfee444482f3c99132fb700367 GIT binary patch literal 534 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=Y)RhkE)4%caKYZ?lYt_f1s;*b z3=DjSL74G){)!Z!AbW|YuPggKMgehQ;nIaNnG6h!i#=T&Ln>~)y}8lvP=H9o!~1Ox zJl%$R$Ih}Rl)rvp{XvC?Pfbs+mP0(g;Vi4L*yA^^66W-3cM4yBI?2RWv-Qio;+?kj zmsmOWKGzQ5N{F163PNG*I~#5bNqm=lpdk=*Ul52^ar1UcsycZzRPu17AGngg{1Ah4 zZi~zh-M2puH+wKH=$yd3dX}vIpG8X;LIm=*@$A1jua)tLpqRB?Z}@?&^>1Q097G;b6GR+#MxJIBIibcD@TO3tON24WRe-fa&{0Ogj779zhQJkuB*y^O4n{}W zgf%@2_%?*N1+W*eEBOR7-4K6xGCrLrm`NkPUtG6sKhwPiM=yrF<2M)D{8_$V*I#r& zSAh8*X1O4?8wxqn`?}|ET*SU0v4Z^%qq1j%4`U{84Ac4pVGd000McNliru-T@F76eAotx&i;NO3b~lFM0RA7jk}ZA>2pqIp=@B&wHRK zilQirq9{Gdh6HUFfg??IcYtrbBK~6_XexVsJJHwcQ$PjqWM@xW{c~;LEHDdvZu9>O zz*S&Vw~ee(V7h66YiAK`)Gq*qZVCQ6P;U`jCjtc0=6IR|?*}GZ1QnM6jq*%vrEW2O zVF^A?0Ro@|WYV+}^!$k!FGFKM&0=pTiAC_5<=I2vb&O)a z0v@#KixW0lhUFI^>)<-v4=h@yTh`|Y7zG9l&&I`}xTym74bKLEgFXc~YN%fUCLE5u z31BIrPgXK93osL*_a|H262sDA6=2G+yBzkp2AJmJJrA~T8*I<{oC4b{!no!~M4y}p zFlea%>p_5(h(3AE2n~7=AQw>>Cj$I5)bH{jz|J%XV9N3B^B}-(L;bu@0p=}d_N>F; zvtlDkr#KPdt>uV(-k|_RvC)cYpXY$Q<#x76OzEl?hc?ssqn1Qopk%q8UU6XWGWHyy zcMe$`s`CGv-%cpV9l&JoWKu~H+bH-A9Eicjh_q$0Ged%mgk)+e!08U!KhA32FR;x0 z{Uppy?3vp-@I2xnDKA;2YDn96NdbMp8^TlA%W?%i2W&R1^2a1o^k*IIy>qnNw8a*= zjt1*2HQ+0&Z;of>cP+yIKZ(s$5mkhC%N($Sl#-RSm8;-Oz*f3|q73V}0x!$qs;fTf z$w~UE+(F>WvMA>1Vsdhfox=W#YwfoA0l4L3uKWH_G6M|D0cvVGd000McNliru-T@F76()5^f6M>?0`W;i zK~#9!?V3Gk6hRnrOuisQa--)CoLzxn3C z$;rvd$;rvd$*C*VWAK|(zyz=Zcmq5I{^We0y}%)vdpGbCSO#7Kzl#KR6cC|n6}Sm_ zIpsVLtVHDXfdfU4nA;II(!M?bBN;#S`!TtEpkBt5nN9#8fM39woMD${9$+{HfB?3D zsSfj;w9$N9FBBnM=^)3Fq4_${pErQRz@`EO0o*W%Ujx<+&HKP)5u@O)A^-tg(~Lc8 z@buf}1u#ZS0`O2vQ{0q$aVc?nO+^($oAcXgU1<%uf zPt4DuKzV7-o=X@>V?NA8_$ALv) zjqQge3z`d_S0xC&z#YSlOVVmz83^}sFkcx67jiUjJ%n1!R@ayHewG!Ul@J;UP0FDZ z2x|rvUL1sZV4w^DGbFdE(;)0I$QieRdRGR7S<(+Gk|2y4=JkN*c|gz|l7HprH(*Q} z4a=9`eNFhit~O+EA*_S64pIvn36rQFR4zw!ggWWj56CAj%A5}UvLBabKI+6~DTDk; z5EgBy5#r1XT7PgNCkRn(cB{m&H)T;i5Q?0wbq~1C!8%1{M`4GmJ^7 zti46;ui^pqozGQF4R$74)!sH>23mmt^<`Gq<{rOL`Y$T~_^yu@yBODeEm@P@zf}6b z^IsO%n%yt+Caf+0-CV|yz4w;<7UqcctiPKJ7_#TS;lIWBW`6HC_J<7Dsy;?#uy1(J z-@yhX-q~KtWBC2=!L`M2**09;{MXUCVXJ+`ml?Ym-~48t-}{h3Mw|Pgf}`2$4`Mpdp2%nIJR*UL){JeA2~eiAQ_-qi!iYR64u-aK(z)S z?b~Ovfao9m$4`a-Ivmfio`LZO3)g}41q?DQoCg9oFdQ@RU`UqHY53SIz}Pdtg)`xg zMhL^>^oKtgVt6{)9%MzBFidw|%(z2Nj_<$>GpUBhw=)=yZF$JB=lNnriOX)x1vS#V zKna-!!(0=F~6@vd$@?2>^$4&Mp7| From 1edd98f50175fd4627c4fe7231d94cf7dfe4ddc5 Mon Sep 17 00:00:00 2001 From: "Tim G. Foley" Date: Thu, 16 Jan 2014 19:42:48 -0500 Subject: [PATCH 149/308] Update README.txt --- README.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.txt b/README.txt index 8f6415cbd..345e6aef7 100644 --- a/README.txt +++ b/README.txt @@ -1 +1 @@ -[to be written] +Test From 01c2413a0c833dd3a75f80f7a95686a9baf50667 Mon Sep 17 00:00:00 2001 From: "Tim G. Foley" Date: Thu, 16 Jan 2014 17:10:04 -0800 Subject: [PATCH 150/308] Added RPM calculation based on Spur and Pinion Gear --- radio/src/gui/menu_model.cpp | 25 +- radio/src/gui/menu_model.cpp~ | 5643 ++++++++++++++++++++++++++++++++ radio/src/myeeprom.h | 8 +- radio/src/myeeprom.h~ | 1469 +++++++++ radio/src/simu.cpp | 8 + radio/src/simu.cpp~ | 425 +++ radio/src/telemetry/frsky.cpp | 10 +- radio/src/telemetry/frsky.cpp~ | 926 ++++++ radio/src/translations.cpp | 2 + radio/src/translations.cpp~ | 672 ++++ radio/src/translations.h | 2 + radio/src/translations.h~ | 754 +++++ radio/src/translations/en.h | 2 + radio/src/translations/en.h~ | 765 +++++ 14 files changed, 10705 insertions(+), 6 deletions(-) create mode 100644 radio/src/gui/menu_model.cpp~ create mode 100644 radio/src/myeeprom.h~ create mode 100644 radio/src/simu.cpp~ create mode 100644 radio/src/telemetry/frsky.cpp~ create mode 100644 radio/src/translations.cpp~ create mode 100644 radio/src/translations.h~ create mode 100644 radio/src/translations/en.h~ diff --git a/radio/src/gui/menu_model.cpp b/radio/src/gui/menu_model.cpp index d1f9889fb..681aaa22f 100644 --- a/radio/src/gui/menu_model.cpp +++ b/radio/src/gui/menu_model.cpp @@ -5164,6 +5164,8 @@ enum menuModelTelemetryItems { ITEM_TELEMETRY_USR_PROTO, #endif ITEM_TELEMETRY_USR_BLADES, + ITEM_TELEMETRY_USR_SPUR_GEAR, // T.Foley + ITEM_TELEMETRY_USR_PINION_GEAR, // T.Foley #endif ITEM_TELEMETRY_USR_VOLTAGE_SOURCE, ITEM_TELEMETRY_USR_CURRENT_SOURCE, @@ -5200,7 +5202,8 @@ enum menuModelTelemetryItems { }; #if defined(PCBTARANIS) - #define USRDATA_LINES (uint8_t)-1, 0, + //#define USRDATA_LINES (uint8_t)-1, 0, + #define USRDATA_LINES (uint8_t)-1, 0, 0, 0, // T.Foley - Add room for two new gearing options #elif defined(FRSKY_HUB) || defined(WS_HOW_HIGH) #define USRDATA_LINES (uint8_t)-1, 0, 0, #else @@ -5403,8 +5406,24 @@ void menuModelTelemetry(uint8_t event) case ITEM_TELEMETRY_USR_BLADES: lcd_putsLeft(y, STR_BLADES); - lcd_outdezAtt(TELEM_COL2+FWNUM, y, 2+g_model.frsky.blades, attr); - if (attr) CHECK_INCDEC_MODELVAR_ZERO(event, g_model.frsky.blades, 3); + //lcd_outdezAtt(TELEM_COL2+FWNUM, y, 2+g_model.frsky.blades, attr); + lcd_outdezAtt(TELEM_COL2, y, 1+g_model.frsky.blades, LEFT|attr); // T.Foley + //if (attr) CHECK_INCDEC_MODELVAR_ZERO(event, g_model.frsky.blades, 3); + if (attr) CHECK_INCDEC_MODELVAR_ZERO(event, g_model.frsky.blades, 254); // T.Foley + break; + + case ITEM_TELEMETRY_USR_SPUR_GEAR: // T.Foley + lcd_putsLeft(y, STR_SPURGEAR); + lcd_outdezAtt(TELEM_COL2, y, 1+g_model.frsky.spur_gear, LEFT|attr); + // Spur gear must be greater than or equal to pinion to prevent floating point error + if (attr) CHECK_INCDEC_MODELVAR(event, g_model.frsky.spur_gear, g_model.frsky.pinion_gear, 254); + break; + + case ITEM_TELEMETRY_USR_PINION_GEAR: // T.Foley + lcd_putsLeft(y, STR_PINIONGEAR); + lcd_outdezAtt(TELEM_COL2, y, 1+g_model.frsky.pinion_gear, LEFT|attr); + // Pinion gear ,ust be less than or equal to spur gear to prevent floating point error + if (attr) CHECK_INCDEC_MODELVAR_ZERO(event, g_model.frsky.pinion_gear, g_model.frsky.spur_gear); break; #endif diff --git a/radio/src/gui/menu_model.cpp~ b/radio/src/gui/menu_model.cpp~ new file mode 100644 index 000000000..d1f9889fb --- /dev/null +++ b/radio/src/gui/menu_model.cpp~ @@ -0,0 +1,5643 @@ +/* + * Authors (alphabetical order) + * - Andre Bernet + * - Andreas Weitl + * - Bertrand Songis + * - Bryan J. Rentoul (Gruvin) + * - Cameron Weeks + * - Erez Raviv + * - Gabriel Birkus + * - Jean-Pierre Parisy + * - Karl Szmutny + * - Michael Blandford + * - Michal Hlavinka + * - Pat Mackenzie + * - Philip Moss + * - Rob Thomson + * - Romolo Manfredini + * - Thomas Husterer + * + * opentx is based on code named + * gruvin9x by Bryan J. Rentoul: http://code.google.com/p/gruvin9x/, + * er9x by Erez Raviv: http://code.google.com/p/er9x/, + * and the original (and ongoing) project by + * Thomas Husterer, th9x: http://code.google.com/p/th9x/ + * + * This program 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. + * + * This program 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. See the + * GNU General Public License for more details. + * + */ + +#include "../opentx.h" +#ifdef MAVLINK +#include "gui/view_mavlink.h" +#endif + +#define WCHART 32 +#define X0 (LCD_W-WCHART-2) +#define Y0 32 + +enum EnumTabModel { + e_ModelSelect, + e_ModelSetup, + IF_HELI(e_Heli) + IF_FLIGHT_MODES(e_FlightModesAll) + e_InputsAll, + e_MixAll, + e_Limits, + IF_CURVES(e_CurvesAll) +#if LCD_W >= 212 + IF_GVARS(e_GVars) +#endif + e_CustomSwitches, + e_CustomFunctions, +#if defined(LUA_MODEL_SCRIPTS) + e_CustomScripts, +#endif + IF_FRSKY(e_Telemetry) + IF_MAVLINK(e_MavSetup) + IF_TEMPLATES(e_Templates) +}; + +void menuModelSelect(uint8_t event); +void menuModelSetup(uint8_t event); +void menuModelHeli(uint8_t event); +void menuModelFlightModesAll(uint8_t event); +void menuModelExposAll(uint8_t event); +void menuModelMixAll(uint8_t event); +void menuModelLimits(uint8_t event); +void menuModelCurvesAll(uint8_t event); +void menuModelGVars(uint8_t event); +void menuModelCustomSwitches(uint8_t event); +void menuModelCustomFunctions(uint8_t event); +void menuModelCustomScripts(uint8_t event); +void menuModelTelemetry(uint8_t event); +void menuModelTemplates(uint8_t event); +void menuModelExpoOne(uint8_t event); + +const MenuFuncP_PROGMEM menuTabModel[] PROGMEM = { + menuModelSelect, + menuModelSetup, + IF_HELI(menuModelHeli) + IF_FLIGHT_MODES(menuModelFlightModesAll) + menuModelExposAll, + menuModelMixAll, + menuModelLimits, + IF_CURVES(menuModelCurvesAll) +#if LCD_W >= 212 && defined(GVARS) && defined(FLIGHT_MODES) + IF_GVARS(menuModelGVars) +#endif + menuModelCustomSwitches, + menuModelCustomFunctions, +#if defined(LUA_MODEL_SCRIPTS) + menuModelCustomScripts, +#endif + IF_FRSKY(menuModelTelemetry) + IF_MAVLINK(menuTelemetryMavlinkSetup) + IF_TEMPLATES(menuModelTemplates) +}; + +#define COPY_MODE 1 +#define MOVE_MODE 2 +static uint8_t s_copyMode = 0; +static int8_t s_copySrcRow; +static int8_t s_copyTgtOfs; + +uint8_t eeFindEmptyModel(uint8_t id, bool down) +{ + uint8_t i = id; + for (;;) { + i = (MAX_MODELS + (down ? i+1 : i-1)) % MAX_MODELS; + if (!eeModelExists(i)) break; + if (i == id) return 0xff; // no free space in directory left + } + return i; +} + +void selectModel(uint8_t sub) +{ + displayPopup(STR_LOADINGMODEL); + saveTimers(); + eeCheck(true); // force writing of current model data before this is changed + g_eeGeneral.currModel = sub; + eeDirty(EE_GENERAL); + eeLoadModel(sub); +} + +#if defined(SDCARD) +#define LIST_NONE_SD_FILE 1 +bool listSdFiles(const char *path, const char *extension, const uint8_t maxlen, const char *selection, uint8_t flags=0) +{ + FILINFO fno; + DIR dir; + char *fn; /* This function is assuming non-Unicode cfg. */ +#if _USE_LFN + TCHAR lfn[_MAX_LFN + 1]; + fno.lfname = lfn; + fno.lfsize = sizeof(lfn); +#endif + + static uint16_t s_last_menu_offset = 0; + +#if defined(CPUARM) + static uint8_t s_last_flags; + + if (selection) { + s_last_flags = flags; + memset(reusableBuffer.modelsel.menu_bss, 0, sizeof(reusableBuffer.modelsel.menu_bss)); + strcpy(reusableBuffer.modelsel.menu_bss[0], path); + strcat(reusableBuffer.modelsel.menu_bss[0], "/"); + strncat(reusableBuffer.modelsel.menu_bss[0], selection, maxlen); + strcat(reusableBuffer.modelsel.menu_bss[0], extension); + if (f_stat(reusableBuffer.modelsel.menu_bss[0], &fno) != FR_OK) { + selection = NULL; + } + } + else { + flags = s_last_flags; + } +#endif + + if (s_menu_offset == 0) { + s_last_menu_offset = 0; + memset(reusableBuffer.modelsel.menu_bss, 0, sizeof(reusableBuffer.modelsel.menu_bss)); + } + else if (s_menu_offset == s_menu_count - MENU_MAX_LINES) { + s_last_menu_offset = 0xffff; + memset(reusableBuffer.modelsel.menu_bss, 0, sizeof(reusableBuffer.modelsel.menu_bss)); + } + else if (s_menu_offset == s_last_menu_offset) { + // should not happen, only there because of Murphy's law + return true; + } + else if (s_menu_offset > s_last_menu_offset) { + memmove(reusableBuffer.modelsel.menu_bss[0], reusableBuffer.modelsel.menu_bss[1], (MENU_MAX_LINES-1)*MENU_LINE_LENGTH); + memset(reusableBuffer.modelsel.menu_bss[MENU_MAX_LINES-1], 0xff, MENU_LINE_LENGTH); + } + else { + memmove(reusableBuffer.modelsel.menu_bss[1], reusableBuffer.modelsel.menu_bss[0], (MENU_MAX_LINES-1)*MENU_LINE_LENGTH); + memset(reusableBuffer.modelsel.menu_bss[0], 0, MENU_LINE_LENGTH); + } + + s_menu_count = 0; + s_menu_flags = BSS; + + FRESULT res = f_opendir(&dir, path); /* Open the directory */ + if (res == FR_OK) { + + if (flags & LIST_NONE_SD_FILE) { + s_menu_count++; + if (selection) { + s_last_menu_offset++; + } + else if (s_menu_offset==0 || s_menu_offset < s_last_menu_offset) { + char *line = reusableBuffer.modelsel.menu_bss[0]; + memset(line, 0, MENU_LINE_LENGTH); + strcpy(line, "---"); + s_menu[0] = line; + } + } + + for (;;) { + res = f_readdir(&dir, &fno); /* Read a directory item */ + if (res != FR_OK || fno.fname[0] == 0) break; /* Break on error or end of dir */ + +#if _USE_LFN + fn = *fno.lfname ? fno.lfname : fno.fname; +#else + fn = fno.fname; +#endif + + uint8_t len = strlen(fn); + if (len < 5 || len > maxlen+4 || strcasecmp(fn+len-4, extension) || (fno.fattrib & AM_DIR)) continue; + + s_menu_count++; + fn[len-4] = '\0'; + + if (s_menu_offset == 0) { + if (selection && strncasecmp(fn, selection, maxlen) < 0) { + s_last_menu_offset++; + } + else { + for (uint8_t i=0; i=0; i--) { + char *line = reusableBuffer.modelsel.menu_bss[i]; + if (line[0] == '\0' || strcasecmp(fn, line) > 0) { + if (i > 0) memmove(reusableBuffer.modelsel.menu_bss[0], reusableBuffer.modelsel.menu_bss[1], sizeof(reusableBuffer.modelsel.menu_bss[i]) * i); + memset(line, 0, MENU_LINE_LENGTH); + strcpy(line, fn); + break; + } + } + for (uint8_t i=0; i s_last_menu_offset) { + if (strcasecmp(fn, reusableBuffer.modelsel.menu_bss[MENU_MAX_LINES-2]) > 0 && strcasecmp(fn, reusableBuffer.modelsel.menu_bss[MENU_MAX_LINES-1]) < 0) { + memset(reusableBuffer.modelsel.menu_bss[MENU_MAX_LINES-1], 0, MENU_LINE_LENGTH); + strcpy(reusableBuffer.modelsel.menu_bss[MENU_MAX_LINES-1], fn); + } + } + else { + if (strcasecmp(fn, reusableBuffer.modelsel.menu_bss[1]) < 0 && strcasecmp(fn, reusableBuffer.modelsel.menu_bss[0]) > 0) { + memset(reusableBuffer.modelsel.menu_bss[0], 0, MENU_LINE_LENGTH); + strcpy(reusableBuffer.modelsel.menu_bss[0], fn); + } + } + } + } + + if (s_menu_offset > 0) + s_last_menu_offset = s_menu_offset; + else + s_menu_offset = s_last_menu_offset; + + return s_menu_count; +} +#endif + +#if defined(PCBTARANIS) + static int8_t modelselBitmapIdx; + static uint8_t modelselBitmap[MODEL_BITMAP_SIZE]; + #define MODELSEL_W 133 + #define BMP_DIRTY() modelselBitmapIdx = -1 +#else + #define MODELSEL_W LCD_W + #define BMP_DIRTY() +#endif + +#if defined(NAVIGATION_MENUS) +void onModelSelectMenu(const char *result) +{ + int8_t sub = m_posVert; + + if (result == STR_SELECT_MODEL || result == STR_CREATE_MODEL) { + selectModel(sub); + } + else if (result == STR_COPY_MODEL) { + s_copyMode = COPY_MODE; + s_copyTgtOfs = 0; + s_copySrcRow = -1; + } + else if (result == STR_MOVE_MODEL) { + s_copyMode = MOVE_MODE; + s_copyTgtOfs = 0; + s_copySrcRow = -1; + } +#if defined(SDCARD) + else if (result == STR_BACKUP_MODEL) { + eeCheck(true); // force writing of current model data before this is changed + POPUP_WARNING(eeBackupModel(sub)); + } + else if (result == STR_RESTORE_MODEL || result == STR_UPDATE_LIST) { + if (!listSdFiles(MODELS_PATH, MODELS_EXT, sizeof(g_model.header.name), NULL)) { + POPUP_WARNING(STR_NO_MODELS_ON_SD); + s_menu_flags = 0; + } + } +#endif + else if (result == STR_DELETE_MODEL) { + POPUP_CONFIRMATION(STR_DELETEMODEL); +#if defined(CPUARM) + s_warning_info = modelHeaders[sub].name; +#else + char * name = reusableBuffer.modelsel.mainname; + eeLoadModelName(sub, name); + s_warning_info = name; +#endif + s_warning_info_len = sizeof(g_model.header.name); + } +#if defined(SDCARD) + else { + // The user choosed a file on SD to restore + POPUP_WARNING(eeRestoreModel(sub, (char *)result)); + BMP_DIRTY(); + if (!s_warning && g_eeGeneral.currModel == sub) + eeLoadModel(sub); + } +#endif +} +#endif + +void menuModelSelect(uint8_t event) +{ + if (s_warning_result) { + s_warning_result = 0; + eeDeleteModel(m_posVert); // delete file + s_copyMode = 0; + event = EVT_ENTRY_UP; + BMP_DIRTY(); + } + + uint8_t _event_ = (IS_ROTARY_BREAK(event) || IS_ROTARY_LONG(event) ? 0 : event); + +#if defined(PCBTARANIS) + if ((s_copyMode && EVT_KEY_MASK(event) == KEY_EXIT) || event == EVT_KEY_BREAK(KEY_EXIT)) + _event_ -= KEY_EXIT; +#else + if (s_copyMode && EVT_KEY_MASK(event) == KEY_EXIT) + _event_ -= KEY_EXIT; +#endif + + int8_t oldSub = m_posVert; + + if (!check_submenu_simple(_event_, MAX_MODELS-1)) return; + +#if defined(NAVIGATION_POT2) + if (event==0 && p2valdiff<0) { + event = EVT_KEY_FIRST(KEY_RIGHT); + } +#endif + + if (s_editMode > 0) s_editMode = 0; + +#if !defined(CPUARM) + if (event) { + eeFlush(); // flush eeprom write + } +#endif + + int8_t sub = m_posVert; + + switch (event) + { + case EVT_ENTRY: + m_posVert = sub = g_eeGeneral.currModel; + if (sub >= LCD_LINES-1) s_pgOfs = sub-LCD_LINES+2; + s_copyMode = 0; + s_editMode = EDIT_MODE_INIT; + BMP_DIRTY(); + eeCheck(true); + break; + case EVT_KEY_LONG(KEY_EXIT): + if (s_copyMode && s_copyTgtOfs == 0 && g_eeGeneral.currModel != sub && eeModelExists(sub)) { + POPUP_CONFIRMATION(STR_DELETEMODEL); +#if defined(CPUARM) + s_warning_info = modelHeaders[sub].name; +#else + char * name = reusableBuffer.modelsel.mainname; + eeLoadModelName(sub, name); + s_warning_info = name; +#endif + s_warning_info_len = sizeof(g_model.header.name); + killEvents(event); + break; + } + // no break +#if defined(ROTARY_ENCODER_NAVIGATION) + case EVT_ROTARY_LONG: + killEvents(event); + if (s_editMode < 0) { + popMenu(); + return; + } + else if (!s_copyMode) { + m_posVert = sub = g_eeGeneral.currModel; + s_copyMode = 0; + s_editMode = EDIT_MODE_INIT; + } + // no break +#endif + case EVT_KEY_BREAK(KEY_EXIT): + if (s_copyMode) { + sub = m_posVert = (s_copyMode == MOVE_MODE || s_copySrcRow<0) ? (MAX_MODELS+sub+s_copyTgtOfs) % MAX_MODELS : s_copySrcRow; + s_copyMode = 0; + } +#if defined(PCBTARANIS) + else { + if (m_posVert != g_eeGeneral.currModel) { + m_posVert = g_eeGeneral.currModel; + s_pgOfs = 0; + } + else { + popMenu(); + return; + } + } +#endif + break; +#if defined(ROTARY_ENCODER_NAVIGATION) + case EVT_ROTARY_BREAK: + if (s_editMode == -1) { + s_editMode = 0; + break; + } + // no break; +#endif + case EVT_KEY_LONG(KEY_ENTER): + case EVT_KEY_BREAK(KEY_ENTER): + s_editMode = 0; + if (READ_ONLY()) { + if (g_eeGeneral.currModel != sub && eeModelExists(sub)) { + selectModel(sub); + } + } + else if (s_copyMode && (s_copyTgtOfs || s_copySrcRow>=0)) { + displayPopup(s_copyMode==COPY_MODE ? STR_COPYINGMODEL : STR_MOVINGMODEL); + eeCheck(true); // force writing of current model data before this is changed + + uint8_t cur = (MAX_MODELS + sub + s_copyTgtOfs) % MAX_MODELS; + + if (s_copyMode == COPY_MODE) { + if (eeCopyModel(cur, s_copySrcRow)) + BMP_DIRTY(); + else + cur = sub; + } + + s_copySrcRow = g_eeGeneral.currModel; // to update the currModel value + while (sub != cur) { + uint8_t src = cur; + cur = (s_copyTgtOfs > 0 ? cur+MAX_MODELS-1 : cur+1) % MAX_MODELS; + eeSwapModels(src, cur); + BMP_DIRTY(); + if (src == s_copySrcRow) + s_copySrcRow = cur; + else if (cur == s_copySrcRow) + s_copySrcRow = src; + } + + if (s_copySrcRow != g_eeGeneral.currModel) { + g_eeGeneral.currModel = s_copySrcRow; + eeDirty(EE_GENERAL); + } + + s_copyMode = 0; + event = EVT_ENTRY_UP; + } + else if (event == EVT_KEY_LONG(KEY_ENTER) +#if !defined(PCBTARANIS) + || IS_ROTARY_BREAK(event) +#endif + ) { + s_copyMode = 0; + killEvents(event); +#if defined(NAVIGATION_MENUS) + if (g_eeGeneral.currModel != sub) { + if (eeModelExists(sub)) { + MENU_ADD_ITEM(STR_SELECT_MODEL); + MENU_ADD_SD_ITEM(STR_BACKUP_MODEL); + MENU_ADD_ITEM(STR_COPY_MODEL); + MENU_ADD_ITEM(STR_MOVE_MODEL); + MENU_ADD_ITEM(STR_DELETE_MODEL); + } + else { +#if defined(SDCARD) + MENU_ADD_ITEM(STR_CREATE_MODEL); + MENU_ADD_ITEM(STR_RESTORE_MODEL); +#else + selectModel(sub); +#endif + } + } + else { + MENU_ADD_SD_ITEM(STR_BACKUP_MODEL); + MENU_ADD_ITEM(STR_COPY_MODEL); + MENU_ADD_ITEM(STR_MOVE_MODEL); + } + menuHandler = onModelSelectMenu; +#else + if (g_eeGeneral.currModel != sub) { + selectModel(sub); + } +#endif + } + else if (eeModelExists(sub)) { + s_copyMode = (s_copyMode == COPY_MODE ? MOVE_MODE : COPY_MODE); + s_copyTgtOfs = 0; + s_copySrcRow = -1; + } + break; + +#if defined(PCBTARANIS) + case EVT_KEY_BREAK(KEY_PAGE): + case EVT_KEY_LONG(KEY_PAGE): + chainMenu(event == EVT_KEY_BREAK(KEY_PAGE) ? menuModelSetup : menuTabModel[DIM(menuTabModel)-1]); + killEvents(event); + return; +#else +#if defined(ROTARY_ENCODER_NAVIGATION) + case EVT_ROTARY_LEFT: + case EVT_ROTARY_RIGHT: +#endif + case EVT_KEY_FIRST(KEY_LEFT): + case EVT_KEY_FIRST(KEY_RIGHT): +#if defined(ROTARY_ENCODER_NAVIGATION) + if ((!IS_ROTARY_RIGHT(event) && !IS_ROTARY_LEFT(event)) || s_editMode < 0) { +#endif + if (sub == g_eeGeneral.currModel) { + chainMenu((IS_ROTARY_RIGHT(event) || event == EVT_KEY_FIRST(KEY_RIGHT)) ? menuModelSetup : menuTabModel[DIM(menuTabModel)-1]); + return; + } + AUDIO_WARNING2(); + break; +#if defined(ROTARY_ENCODER_NAVIGATION) + } + // no break +#endif +#endif + + case EVT_KEY_FIRST(KEY_MOVE_UP): + case EVT_KEY_REPT(KEY_MOVE_UP): + case EVT_KEY_FIRST(KEY_MOVE_DOWN): + case EVT_KEY_REPT(KEY_MOVE_DOWN): + if (s_copyMode) { + int8_t next_ofs = s_copyTgtOfs + oldSub - m_posVert; + if (next_ofs == MAX_MODELS || next_ofs == -MAX_MODELS) + next_ofs = 0; + + if (s_copySrcRow < 0 && s_copyMode==COPY_MODE) { + s_copySrcRow = oldSub; + // find a hole (in the first empty slot above / below) + sub = eeFindEmptyModel(s_copySrcRow, IS_ROTARY_DOWN(event) || event==EVT_KEY_FIRST(KEY_MOVE_DOWN)); + if (sub < 0) { + // no free room for duplicating the model + AUDIO_ERROR(); + sub = oldSub; + s_copyMode = 0; + } + next_ofs = 0; + m_posVert = sub; + } + s_copyTgtOfs = next_ofs; + } + break; + } + +#if defined(PCBTARANIS) + lcd_puts(27*FW-(LEN_FREE-4)*FW, 0, STR_FREE); + if (event) reusableBuffer.modelsel.eepromfree = EeFsGetFree(); + lcd_outdezAtt(20*FW, 0, reusableBuffer.modelsel.eepromfree, 0); + lcd_puts(21*FW, 0, STR_BYTES); +#elif !defined(PCBSKY9X) + lcd_puts(9*FW-(LEN_FREE-4)*FW, 0, STR_FREE); + if (event) reusableBuffer.modelsel.eepromfree = EeFsGetFree(); + lcd_outdezAtt(17*FW, 0, reusableBuffer.modelsel.eepromfree, 0); +#endif + +#if defined(ROTARY_ENCODER_NAVIGATION) + displayScreenIndex(e_ModelSelect, DIM(menuTabModel), (sub == g_eeGeneral.currModel) ? ((IS_RE_NAVIGATION_ENABLE() && s_editMode < 0) ? INVERS|BLINK : INVERS) : 0); +#elif defined(PCBTARANIS) + displayScreenIndex(e_ModelSelect, DIM(menuTabModel), 0); + lcd_filled_rect(0, 0, LCD_W, FH, SOLID, FILL_WHITE|GREY_DEFAULT); +#else + displayScreenIndex(e_ModelSelect, DIM(menuTabModel), (sub == g_eeGeneral.currModel) ? INVERS : 0); +#endif + + TITLE(STR_MENUMODELSEL); + + for (uint8_t i=0; i= 0)) { + if (k == sub) { + if (s_copyMode == COPY_MODE) { + k = s_copySrcRow; + lcd_putc(MODELSEL_W-FW, y, '+'); + } + else { + k = sub + s_copyTgtOfs; + } + } + else if (s_copyTgtOfs < 0 && ((k < sub && k >= sub+s_copyTgtOfs) || (k-MAX_MODELS < sub && k-MAX_MODELS >= sub+s_copyTgtOfs))) + k += 1; + else if (s_copyTgtOfs > 0 && ((k > sub && k <= sub+s_copyTgtOfs) || (k+MAX_MODELS > sub && k+MAX_MODELS <= sub+s_copyTgtOfs))) + k += MAX_MODELS-1; + } + + k %= MAX_MODELS; + + if (eeModelExists(k)) { +#if defined(PCBSKY9X) + putsModelName(4*FW, y, modelHeaders[k].name, k, 0); +#elif defined(CPUARM) + putsModelName(4*FW, y, modelHeaders[k].name, k, 0); + lcd_outdezAtt(20*FW, y, eeModelSize(k), 0); +#else + char * name = reusableBuffer.modelsel.listnames[i]; + if (event) eeLoadModelName(k, name); + putsModelName(4*FW, y, name, k, 0); + lcd_outdezAtt(20*FW, y, eeModelSize(k), 0); +#endif + if (k==g_eeGeneral.currModel && (s_copyMode!=COPY_MODE || s_copySrcRow<0 || i+s_pgOfs!=(vertpos_t)sub)) lcd_putc(1, y, '*'); + } + + if (s_copyMode && (vertpos_t)sub==i+s_pgOfs) { + lcd_filled_rect(9, y, MODELSEL_W-1-9, 7); + lcd_rect(8, y-1, MODELSEL_W-1-7, 9, s_copyMode == COPY_MODE ? SOLID : DOTTED); + } + } + +#if defined(PCBTARANIS) + if (modelselBitmapIdx != m_posVert) { + modelselBitmapIdx = m_posVert; + if (modelselBitmapIdx == g_eeGeneral.currModel) + memcpy(modelselBitmap, modelBitmap, MODEL_BITMAP_SIZE); + else + loadModelBitmap(modelHeaders[sub].bitmap, modelselBitmap); + } + lcd_bmp(22*FW+2, 2*FH+FH/2, modelselBitmap); +#endif +} + +#if defined(PCBTARANIS) +uint8_t g_moduleIdx; +void menuModelFailsafe(uint8_t event) +{ + static bool longNames = false; + bool newLongNames = false; + uint8_t ch; + + if (event == EVT_KEY_BREAK(KEY_ENTER) && s_editMode) { + g_model.moduleData[g_moduleIdx].failsafeChannels[m_posVert] = channelOutputs[m_posVert]; + eeDirty(EE_MODEL); + AUDIO_WARNING1(); + SEND_FAILSAFE_NOW(g_moduleIdx); + } + + SIMPLE_SUBMENU_NOTITLE(32); + + SET_SCROLLBAR_X(0); + + if (m_posVert >= 16) + ch = 16; + else + ch = 0; + + lcd_putsCenter(0*FH, FAILSAFESET); + lcd_invert_line(0); + + // Column separator + lcd_vline(LCD_W/2, FH, LCD_H-FH); + + for (uint8_t col=0; col<2; col++) { + + uint8_t x = col*LCD_W/2+1; + + // Channels + for (uint8_t line=0; line<8; line++) { + uint8_t y = 9+line*7; + int32_t val; + uint8_t ofs = (col ? 0 : 1); + + if (ch < g_model.moduleData[g_moduleIdx].channelsStart || ch >= NUM_CHANNELS(g_moduleIdx) + g_model.moduleData[g_moduleIdx].channelsStart) + val = 0; + else if (s_editMode && m_posVert == ch) + val = channelOutputs[ch]; + else + val = g_model.moduleData[g_moduleIdx].failsafeChannels[8*col+line]; + + // Channel name if present, number if not + uint8_t lenLabel = ZLEN(g_model.limitData[ch].name); + if (lenLabel > 4) { + newLongNames = longNames = true; + } + + if (lenLabel > 0) + lcd_putsnAtt(x+1-ofs, y, g_model.limitData[ch].name, sizeof(g_model.limitData[ch].name), ZCHAR | SMLSIZE); + else + putsChn(x+1-ofs, y, ch+1, SMLSIZE); + + // Value + LcdFlags flags = TINSIZE; + if (m_posVert == ch) { + flags |= INVERS; + if (s_editMode) + flags |= BLINK; + } +#if defined(PPM_UNIT_US) + uint8_t wbar = (longNames ? 54 : 64); + lcd_outdezAtt(x+LCD_W/2-4-wbar-ofs, y, PPM_CH_CENTER(ch)+val/2, flags); +#elif defined(PPM_UNIT_PERCENT_PREC1) + uint8_t wbar = (longNames ? 48 : 58); + lcd_outdezAtt(x+LCD_W/2-4-wbar-ofs, y, calcRESXto1000(val), PREC1|flags); +#else + uint8_t wbar = (longNames ? 54 : 64); + lcd_outdezAtt(x+LCD_W/2-4-wbar-ofs, y, calcRESXto1000(val)/10, flags); +#endif + + // Gauge + lcd_rect(x+LCD_W/2-3-wbar-ofs, y, wbar+1, 6); + uint16_t lim = g_model.extendedLimits ? 640*2 : 512*2; + uint8_t len = limit((uint8_t)1, uint8_t((abs(val) * wbar/2 + lim/2) / lim), uint8_t(wbar/2)); + uint8_t x0 = (val>0) ? x+LCD_W/2-ofs-3-wbar/2 : x+LCD_W/2-ofs-2-wbar/2-len; + lcd_hline(x0, y+1, len); + lcd_hline(x0, y+2, len); + lcd_hline(x0, y+3, len); + lcd_hline(x0, y+4, len); + + ch++; + } + } + + longNames = newLongNames; +} +#endif + +#if defined(CPUM64) + #define editNameCursorPos m_posHorz +#else + static uint8_t editNameCursorPos = 0; +#endif + +void editName(uint8_t x, uint8_t y, char *name, uint8_t size, uint8_t event, uint8_t active) +{ +#if defined(CPUM64) + // in order to save flash + lcd_putsLeft(y, STR_NAME); +#endif + + lcd_putsnAtt(x, y, name, size, ZCHAR | ((active && s_editMode <= 0) ? INVERS : 0)); + + if (active) { + uint8_t cur = editNameCursorPos; + if (s_editMode > 0) { + int8_t c = name[cur]; + int8_t v = c; + + if (p1valdiff || IS_ROTARY_RIGHT(event) || IS_ROTARY_LEFT(event) || event==EVT_KEY_FIRST(KEY_DOWN) || event==EVT_KEY_FIRST(KEY_UP) + || event==EVT_KEY_REPT(KEY_DOWN) || event==EVT_KEY_REPT(KEY_UP)) { + v = checkIncDec(event, abs(v), 0, LEN_STD_CHARS, 0); + if (c <= 0) v = -v; + } + + switch (event) { +#if defined(ROTARY_ENCODER_NAVIGATION) || defined(PCBTARANIS) + case EVT_ROTARY_BREAK: + if (s_editMode == EDIT_MODIFY_FIELD) { + s_editMode = EDIT_MODIFY_STRING; + cur = 0; + } + else if (cur0) cur--; + break; + case EVT_KEY_BREAK(KEY_RIGHT): + if (cur=-26 && v<=26) { + v = -v; // toggle case + if (event==EVT_KEY_LONG(KEY_LEFT)) + killEvents(KEY_LEFT); + } + break; + } + + if (c != v) { + name[cur] = v; + eeDirty(EE_MODEL); + } + lcd_putcAtt(x+editNameCursorPos*FW, y, idx2char(v), INVERS); + } + else { + cur = 0; + } + editNameCursorPos = cur; + } +} + +#if defined(CPUM64) +#define editSingleName(x, y, label, name, size, event, active) editName(x, y, name, size, event, active) +#else +void editSingleName(uint8_t x, uint8_t y, const pm_char *label, char *name, uint8_t size, uint8_t event, uint8_t active) +{ + lcd_putsLeft(y, label); + editName(x, y, name, size, event, active); +} +#endif + +enum menuModelSetupItems { + ITEM_MODEL_NAME, + CASE_PCBTARANIS(ITEM_MODEL_BITMAP) + ITEM_MODEL_TIMER1, + IF_PERSISTENT_TIMERS(ITEM_MODEL_TIMER1_PERSISTENT) + ITEM_MODEL_TIMER1_MINUTE_BEEP, + ITEM_MODEL_TIMER1_COUNTDOWN_BEEP, + ITEM_MODEL_TIMER2, + IF_PERSISTENT_TIMERS(ITEM_MODEL_TIMER2_PERSISTENT) + ITEM_MODEL_TIMER2_MINUTE_BEEP, + ITEM_MODEL_TIMER2_COUNTDOWN_BEEP, + ITEM_MODEL_EXTENDED_LIMITS, + ITEM_MODEL_EXTENDED_TRIMS, + ITEM_MODEL_TRIM_INC, + ITEM_MODEL_THROTTLE_REVERSED, + ITEM_MODEL_THROTTLE_TRACE, + ITEM_MODEL_THROTTLE_TRIM, + ITEM_MODEL_THROTTLE_WARNING, + ITEM_MODEL_SWITCHES_WARNING, + ITEM_MODEL_BEEP_CENTER, +#if defined(PCBTARANIS) + ITEM_MODEL_INTERNAL_MODULE_LABEL, + ITEM_MODEL_INTERNAL_MODULE_MODE, + ITEM_MODEL_INTERNAL_MODULE_CHANNELS, + ITEM_MODEL_INTERNAL_MODULE_BIND, + ITEM_MODEL_INTERNAL_MODULE_FAILSAFE, + ITEM_MODEL_EXTERNAL_MODULE_LABEL, + ITEM_MODEL_EXTERNAL_MODULE_MODE, + ITEM_MODEL_EXTERNAL_MODULE_CHANNELS, + ITEM_MODEL_EXTERNAL_MODULE_BIND, + ITEM_MODEL_EXTERNAL_MODULE_FAILSAFE, + ITEM_MODEL_TRAINER_LABEL, + ITEM_MODEL_TRAINER_MODE, + ITEM_MODEL_TRAINER_CHANNELS, + ITEM_MODEL_TRAINER_SETTINGS, +#elif defined(PCBSKY9X) + ITEM_MODEL_PPM1_PROTOCOL, + ITEM_MODEL_PPM1_PARAMS, + ITEM_MODEL_PPM2_PROTOCOL, + ITEM_MODEL_PPM2_PARAMS, +#else + ITEM_MODEL_PPM1_PROTOCOL, + ITEM_MODEL_PPM1_PARAMS, +#endif + ITEM_MODEL_SETUP_MAX +}; + +#if defined(PCBSKY9X) + #define FIELD_PROTOCOL_MAX 2 +#else + #define FIELD_PROTOCOL_MAX 1 +#endif + +#if LCD_W >= 212 +#define MODEL_SETUP_2ND_COLUMN (LCD_W-17*FW-MENUS_SCROLLBAR_WIDTH) +#else +#define MODEL_SETUP_2ND_COLUMN (LCD_W-11*FW-MENUS_SCROLLBAR_WIDTH) +#endif + +#if defined(PCBTARANIS) && defined(SDCARD) +void copySelection(char *dst, const char *src, uint8_t size) +{ + if (memcmp(src, "---", 3) == 0) + memset(dst, 0, size); + else + memcpy(dst, src, size); +} + +void onModelSetupBitmapMenu(const char *result) +{ + if (result == STR_UPDATE_LIST) { + if (!listSdFiles(BITMAPS_PATH, BITMAPS_EXT, sizeof(g_model.header.bitmap), NULL)) { + POPUP_WARNING(STR_NO_BITMAPS_ON_SD); + s_menu_flags = 0; + } + } + else { + // The user choosed a bmp file in the list + copySelection(g_model.header.bitmap, result, sizeof(g_model.header.bitmap)); + LOAD_MODEL_BITMAP(); + memcpy(modelHeaders[g_eeGeneral.currModel].bitmap, g_model.header.bitmap, sizeof(g_model.header.bitmap)); + eeDirty(EE_MODEL); + } +} +#endif + +void menuModelSetup(uint8_t event) +{ +#if defined(PCBTARANIS) + #define IF_PORT1_ON(x) (g_model.moduleData[0].rfProtocol == RF_PROTO_OFF ? HIDDEN_ROW : (uint8_t)(x)) + #define IF_PORT2_ON(x) (g_model.externalModule == MODULE_TYPE_NONE ? HIDDEN_ROW : (uint8_t)(x)) + #define IF_TRAINER_ON(x) (g_model.trainerMode ? (uint8_t)(x) : HIDDEN_ROW) + #define IF_PORT_ON(idx, x) (idx==0 ? IS_PORT1_ON(x) : (idx==1 ? IS_PORT2_ON(x) : IS_TRAINER_ON())) + #define IF_PORT2_XJT(x) (IS_MODULE_XJT(1) ? (uint8_t)x : HIDDEN_ROW) + #define IS_D8_RX(x) (g_model.moduleData[x].rfProtocol == RF_PROTO_D8) + #define PORT1_CHANNELS_ROWS() IF_PORT1_ON(1) + #define PORT2_CHANNELS_ROWS() IF_PORT2_ON(IS_MODULE_DSM2(1) ? (uint8_t)0 : (uint8_t)1) + #define TRAINER_CHANNELS_ROWS() IF_TRAINER_ON(1) + #define PORT_CHANNELS_ROWS(x) (x==0 ? PORT1_CHANNELS_ROWS() : (x==1 ? PORT2_CHANNELS_ROWS() : TRAINER_CHANNELS_ROWS())) + #define FAILSAFE_ROWS(x) ((g_model.moduleData[x].rfProtocol==RF_PROTO_X16 || g_model.moduleData[x].rfProtocol==RF_PROTO_LR12) ? (g_model.moduleData[x].failsafeMode==FAILSAFE_CUSTOM ? (uint8_t)1 : (uint8_t)0) : HIDDEN_ROW) + #define MODEL_SETUP_MAX_LINES (1+ITEM_MODEL_SETUP_MAX) + + bool CURSOR_ON_CELL = (m_posHorz >= 0); + MENU_TAB({ 0, 0, CASE_PCBTARANIS(0) 2, IF_PERSISTENT_TIMERS(0) 0, 0, 2, IF_PERSISTENT_TIMERS(0) 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, NAVIGATION_LINE_BY_LINE|(NUM_STICKS+NUM_POTS+NUM_ROTARY_ENCODERS-1), LABEL(InternalModule), 0, IF_PORT1_ON(1), IF_PORT1_ON(IS_D8_RX(0) ? (uint8_t)1 : (uint8_t)2), IF_PORT1_ON(FAILSAFE_ROWS(0)), LABEL(ExternalModule), (g_model.externalModule==MODULE_TYPE_XJT || IS_MODULE_DSM2(EXTERNAL_MODULE)) ? (uint8_t)1 : (uint8_t)0, PORT2_CHANNELS_ROWS(), (IS_MODULE_XJT(1) && IS_D8_RX(1)) ? (uint8_t)1 : (IS_MODULE_PPM(1) || IS_MODULE_XJT(1) || IS_MODULE_DSM2(1)) ? (uint8_t)2 : HIDDEN_ROW, IF_PORT2_XJT(FAILSAFE_ROWS(1)), LABEL(Trainer), 0, TRAINER_CHANNELS_ROWS(), IF_TRAINER_ON(2)}); +#elif defined(CPUM64) + #define CURSOR_ON_CELL (true) + #define MODEL_SETUP_MAX_LINES ((IS_PPM_PROTOCOL(protocol)||IS_DSM2_PROTOCOL(protocol)||IS_PXX_PROTOCOL(protocol)) ? 1+ITEM_MODEL_SETUP_MAX : ITEM_MODEL_SETUP_MAX) + + uint8_t protocol = g_model.protocol; + MENU_TAB({ 0, 0, CASE_PCBTARANIS(0) 2, IF_PERSISTENT_TIMERS(0) 0, 0, 2, IF_PERSISTENT_TIMERS(0) 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NUM_STICKS+NUM_POTS+NUM_ROTARY_ENCODERS-1, FIELD_PROTOCOL_MAX, 2 }); +#else + #define CURSOR_ON_CELL (true) + #define MODEL_SETUP_MAX_LINES ((IS_PPM_PROTOCOL(protocol)||IS_DSM2_PROTOCOL(protocol)||IS_PXX_PROTOCOL(protocol)) ? 1+ITEM_MODEL_SETUP_MAX : ITEM_MODEL_SETUP_MAX) + + uint8_t protocol = g_model.protocol; + MENU_TAB({ 0, 0, CASE_PCBTARANIS(0) 2, IF_PERSISTENT_TIMERS(0) 0, 0, 2, IF_PERSISTENT_TIMERS(0) 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, NUM_STICKS+NUM_POTS+NUM_ROTARY_ENCODERS-1, FIELD_PROTOCOL_MAX, 2, IF_PCBSKY9X(1) IF_PCBSKY9X(2) }); +#endif + + if (!MENU_CHECK(menuTabModel, e_ModelSetup, MODEL_SETUP_MAX_LINES)) { +#if defined(DSM2) + dsm2Flag = 0; +#endif +#if defined(PCBTARANIS) + pxxFlag[INTERNAL_MODULE] = 0; + pxxFlag[EXTERNAL_MODULE] = 0; +#endif + return; + } + + TITLE(STR_MENUSETUP); + + uint8_t sub = m_posVert - 1; + int8_t editMode = s_editMode; + + for (uint8_t i=0; i0) ? BLINK|INVERS : INVERS); + uint8_t attr = (sub == k ? blink : 0); + + switch(k) { + case ITEM_MODEL_NAME: + editSingleName(MODEL_SETUP_2ND_COLUMN, y, STR_MODELNAME, g_model.header.name, sizeof(g_model.header.name), event, attr); +#if defined(CPUARM) + memcpy(modelHeaders[g_eeGeneral.currModel].name, g_model.header.name, sizeof(g_model.header.name)); +#endif + break; + +#if defined(PCBTARANIS) && defined(SDCARD) + case ITEM_MODEL_BITMAP: + lcd_putsLeft(y, STR_BITMAP); + if (ZEXIST(g_model.header.bitmap)) + lcd_putsnAtt(MODEL_SETUP_2ND_COLUMN, y, g_model.header.bitmap, sizeof(g_model.header.bitmap), attr); + else + lcd_putsiAtt(MODEL_SETUP_2ND_COLUMN, y, STR_VCSWFUNC, 0, attr); + if (attr && event==EVT_KEY_BREAK(KEY_ENTER) && READ_ONLY_UNLOCKED()) { + s_editMode = 0; + if (listSdFiles(BITMAPS_PATH, BITMAPS_EXT, sizeof(g_model.header.bitmap), g_model.header.bitmap, LIST_NONE_SD_FILE)) { + menuHandler = onModelSetupBitmapMenu; + } + else { + POPUP_WARNING(STR_NO_BITMAPS_ON_SD); + s_menu_flags = 0; + } + } + break; +#endif + + case ITEM_MODEL_TIMER1: + case ITEM_MODEL_TIMER2: + case ITEM_MODEL_TIMER1_MINUTE_BEEP: + case ITEM_MODEL_TIMER2_MINUTE_BEEP: + case ITEM_MODEL_TIMER1_COUNTDOWN_BEEP: + case ITEM_MODEL_TIMER2_COUNTDOWN_BEEP: + { + TimerData *timer = &g_model.timers[k>=ITEM_MODEL_TIMER2 ? 1 : 0]; + if (k==ITEM_MODEL_TIMER1_MINUTE_BEEP || k==ITEM_MODEL_TIMER2_MINUTE_BEEP) { + timer->minuteBeep = onoffMenuItem(timer->minuteBeep, MODEL_SETUP_2ND_COLUMN, y, STR_MINUTEBEEP, attr, event); + } + else if (k==ITEM_MODEL_TIMER1_COUNTDOWN_BEEP || k==ITEM_MODEL_TIMER2_COUNTDOWN_BEEP) { +#if defined(CPUARM) + timer->countdownBeep = selectMenuItem(MODEL_SETUP_2ND_COLUMN, y, STR_BEEPCOUNTDOWN, STR_VBEEPCOUNTDOWN, timer->countdownBeep, 0, 2, attr, event); +#else + timer->countdownBeep = onoffMenuItem(timer->countdownBeep, MODEL_SETUP_2ND_COLUMN, y, STR_BEEPCOUNTDOWN, attr, event); +#endif + } + else { + putsStrIdx(0*FW, y, STR_TIMER, k>=ITEM_MODEL_TIMER2 ? 2 : 1); + putsTmrMode(MODEL_SETUP_2ND_COLUMN, y, timer->mode, m_posHorz==0 ? attr : 0); + putsTime(MODEL_SETUP_2ND_COLUMN+5*FW-2+5*FWNUM+1, y, timer->start, m_posHorz==1 ? attr : 0, m_posHorz==2 ? attr : 0); +#if defined(PCBTARANIS) + if (attr && m_posHorz < 0) lcd_filled_rect(MODEL_SETUP_2ND_COLUMN, y, LCD_W-MODEL_SETUP_2ND_COLUMN-MENUS_SCROLLBAR_WIDTH, 8); +#endif + if (attr && (editMode>0 || p1valdiff)) { + div_t qr = div(timer->start, 60); + switch (m_posHorz) { + case 0: + CHECK_INCDEC_MODELVAR(event, timer->mode, -2*(MAX_PSWITCH+NUM_CSW), TMR_VAROFS-1+2*(MAX_PSWITCH+NUM_CSW)); + break; + case 1: + CHECK_INCDEC_MODELVAR_ZERO(event, qr.quot, 59); + timer->start = qr.rem + qr.quot*60; + break; + case 2: + qr.rem -= checkIncDecModel(event, qr.rem+2, 1, 62)-2; + timer->start -= qr.rem ; + if ((int16_t)timer->start < 0) timer->start=0; + break; + } + } + } + break; + } + +#if defined(CPUARM) || defined(PCBGRUVIN9X) + case ITEM_MODEL_TIMER1_PERSISTENT: + case ITEM_MODEL_TIMER2_PERSISTENT: + { + TimerData &timer = g_model.timers[k==ITEM_MODEL_TIMER2_PERSISTENT]; + timer.persistent = onoffMenuItem(timer.persistent, MODEL_SETUP_2ND_COLUMN, y, STR_PERSISTENT, attr, event); + break; + } +#endif + + case ITEM_MODEL_EXTENDED_LIMITS: + g_model.extendedLimits = onoffMenuItem(g_model.extendedLimits, MODEL_SETUP_2ND_COLUMN, y, STR_ELIMITS, attr, event); + break; + + case ITEM_MODEL_EXTENDED_TRIMS: +#if defined(CPUM64) + g_model.extendedTrims = onoffMenuItem(g_model.extendedTrims, MODEL_SETUP_2ND_COLUMN, y, STR_ETRIMS, attr, event); +#else + g_model.extendedTrims = onoffMenuItem(g_model.extendedTrims, MODEL_SETUP_2ND_COLUMN, y, STR_ETRIMS, m_posHorz<=0 ? attr : 0, event==EVT_KEY_BREAK(KEY_ENTER) ? event : 0); + lcd_putsAtt(MODEL_SETUP_2ND_COLUMN+3*FW, y, STR_RESET_BTN, m_posHorz>0 ? attr : 0); + if (attr && m_posHorz>0) { + s_editMode = 0; + if (event==EVT_KEY_LONG(KEY_ENTER)) { + for (uint8_t i=0; i MIXSRC_Thr) + idx += 1; + if (idx >= MIXSRC_FIRST_POT+NUM_POTS) + idx += MIXSRC_CH1 - MIXSRC_FIRST_POT - NUM_POTS; + putsMixerSource(MODEL_SETUP_2ND_COLUMN, y, idx, attr); + break; + } + + case ITEM_MODEL_THROTTLE_TRIM: + g_model.thrTrim = onoffMenuItem(g_model.thrTrim, MODEL_SETUP_2ND_COLUMN, y, STR_TTRIM, attr, event); + break; + + case ITEM_MODEL_THROTTLE_WARNING: + g_model.disableThrottleWarning = !onoffMenuItem(!g_model.disableThrottleWarning, MODEL_SETUP_2ND_COLUMN, y, STR_THROTTLEWARNING, attr, event); + break; + + case ITEM_MODEL_SWITCHES_WARNING: + { + lcd_putsLeft(y, STR_SWITCHWARNING); + swstate_t states = g_model.switchWarningStates; + char c = !(states & 1); + menu_lcd_onoff(MODEL_SETUP_2ND_COLUMN, y, c, attr); + if (attr) { + s_editMode = 0; + switch(event) { + case EVT_KEY_LONG(KEY_ENTER): + if (!READ_ONLY()) { + killEvents(event); + getMovedSwitch(); + g_model.switchWarningStates = 0x01 + (switches_states << 1); + } + // no break + CASE_EVT_ROTARY_BREAK + case EVT_KEY_BREAK(KEY_ENTER): +#if !defined(PCBTARANIS) + case EVT_KEY_BREAK(KEY_LEFT): + case EVT_KEY_BREAK(KEY_RIGHT): +#endif + if (!READ_ONLY()) { + g_model.switchWarningStates ^= 0x01; + eeDirty(EE_MODEL); + } + break; + } + } + if (c) { + states >>= 1; + for (uint8_t i=1; i>= 2; +#else + attr = 0; + if (IS_3POS(i-1)) { + c = '0'+(states & 0x03); + states >>= 2; + } + else { + if (states & 0x01) + attr = INVERS; + c = pgm_read_byte(STR_VSWITCHES - 2 + 6 + (3*i)); + states >>= 1; + } + lcd_putcAtt(MODEL_SETUP_2ND_COLUMN+2*FW+i*FW, y, c, attr); +#endif + } + } + break; + } + + case ITEM_MODEL_BEEP_CENTER: + lcd_putsLeft(y, STR_BEEPCTR); + for (uint8_t i=0; i0 || p1valdiff)) { + switch (m_posHorz) { + case 0: + CHECK_INCDEC_MODELVAR(event, g_model.externalModule, MODULE_TYPE_NONE, MODULE_TYPE_COUNT-1); + if (checkIncDec_Ret) { + g_model.moduleData[EXTERNAL_MODULE].channelsStart = 0; + if (g_model.externalModule == MODULE_TYPE_PPM) + g_model.moduleData[EXTERNAL_MODULE].channelsCount = 0; + else + g_model.moduleData[EXTERNAL_MODULE].channelsCount = MAX_PORT2_CHANNELS(); + } + break; + case 1: + if (IS_MODULE_DSM2(EXTERNAL_MODULE)) + CHECK_INCDEC_MODELVAR(event, g_model.moduleData[EXTERNAL_MODULE].rfProtocol, DSM2_PROTO_LP45, DSM2_PROTO_DSMX); + else + CHECK_INCDEC_MODELVAR(event, g_model.moduleData[EXTERNAL_MODULE].rfProtocol, RF_PROTO_X16, RF_PROTO_LAST); + if (checkIncDec_Ret) { + g_model.moduleData[EXTERNAL_MODULE].channelsStart = 0; + g_model.moduleData[EXTERNAL_MODULE].channelsCount = MAX_PORT2_CHANNELS(); + } + } + } + break; + + case ITEM_MODEL_INTERNAL_MODULE_CHANNELS: + case ITEM_MODEL_EXTERNAL_MODULE_CHANNELS: + case ITEM_MODEL_TRAINER_CHANNELS: + { + uint8_t moduleIdx = (k>=ITEM_MODEL_TRAINER_LABEL ? 2 : (k>=ITEM_MODEL_EXTERNAL_MODULE_LABEL ? 1 : 0)); + ModuleData & moduleData = g_model.moduleData[moduleIdx]; + lcd_putsLeft(y, STR_CHANNELRANGE); + if ((int8_t)PORT_CHANNELS_ROWS(moduleIdx) >= 0) { + lcd_putsAtt(MODEL_SETUP_2ND_COLUMN, y, STR_CH, m_posHorz==0 ? attr : 0); + lcd_outdezAtt(lcdLastPos, y, moduleData.channelsStart+1, LEFT | (m_posHorz==0 ? attr : 0)); + lcd_putc(lcdLastPos, y, '-'); + lcd_outdezAtt(lcdLastPos + FW+1, y, moduleData.channelsStart+NUM_CHANNELS(moduleIdx), LEFT | (m_posHorz==1 ? attr : 0)); + if (attr && (editMode>0 || p1valdiff)) { + switch (m_posHorz) { + case 0: + CHECK_INCDEC_MODELVAR_ZERO(event, moduleData.channelsStart, 32-8-moduleData.channelsCount); + break; + case 1: + CHECK_INCDEC_MODELVAR(event, moduleData.channelsCount, -4, min(MAX_CHANNELS(moduleIdx), 32-8-moduleData.channelsStart)); + if ((k == ITEM_MODEL_EXTERNAL_MODULE_CHANNELS && g_model.externalModule == MODULE_TYPE_PPM) || (k == ITEM_MODEL_TRAINER_CHANNELS)) + SET_DEFAULT_PPM_FRAME_LENGTH(moduleIdx); + break; + } + } + } + break; + } + + case ITEM_MODEL_INTERNAL_MODULE_BIND: + case ITEM_MODEL_EXTERNAL_MODULE_BIND: + case ITEM_MODEL_TRAINER_SETTINGS: + { + uint8_t moduleIdx = (k>=ITEM_MODEL_TRAINER_LABEL ? 2 : (k>=ITEM_MODEL_EXTERNAL_MODULE_LABEL ? 1 : 0)); + ModuleData & moduleData = g_model.moduleData[moduleIdx]; + if (IS_MODULE_PPM(moduleIdx)) { + lcd_putsLeft(y, STR_PPMFRAME); + lcd_puts(MODEL_SETUP_2ND_COLUMN+3*FW, y, STR_MS); + lcd_outdezAtt(MODEL_SETUP_2ND_COLUMN, y, (int16_t)moduleData.ppmFrameLength*5 + 225, (m_posHorz<=0 ? attr : 0) | PREC1|LEFT); + lcd_putc(MODEL_SETUP_2ND_COLUMN+8*FW+2, y, 'u'); + lcd_outdezAtt(MODEL_SETUP_2ND_COLUMN+8*FW+2, y, (moduleData.ppmDelay*50)+300, (m_posHorz < 0 || m_posHorz==1) ? attr : 0); + lcd_putcAtt(MODEL_SETUP_2ND_COLUMN+10*FW, y, moduleData.ppmPulsePol ? '+' : '-', (m_posHorz < 0 || m_posHorz==2) ? attr : 0); + + if (attr && (editMode>0 || p1valdiff)) { + switch (m_posHorz) { + case 0: + CHECK_INCDEC_MODELVAR(event, moduleData.ppmFrameLength, -20, 35); + break; + case 1: + CHECK_INCDEC_MODELVAR(event, moduleData.ppmDelay, -4, 10); + break; + case 2: + CHECK_INCDEC_MODELVAR_ZERO(event, moduleData.ppmPulsePol, 1); + break; + } + } + } + else { + horzpos_t l_posHorz = m_posHorz; + uint8_t xOffsetBind = 3*FW; + if (IS_MODULE_XJT(moduleIdx) && IS_D8_RX(moduleIdx)) { + xOffsetBind = 0; + lcd_putsLeft(y, INDENT "Receiver"); + if (attr) l_posHorz += 1; + } + else { + lcd_putsLeft(y, STR_RXNUM); + } + if (IS_MODULE_XJT(moduleIdx) || IS_MODULE_DSM2(moduleIdx)) { + if (xOffsetBind) lcd_outdezNAtt(MODEL_SETUP_2ND_COLUMN, y, g_model.header.modelId, (l_posHorz==0 ? attr : 0) | LEADING0|LEFT, 2); + if (attr && l_posHorz==0) { + if (editMode>0 || p1valdiff) { + CHECK_INCDEC_MODELVAR_ZERO(event, g_model.header.modelId, IS_MODULE_DSM2(moduleIdx) ? 20 : 63); + if (checkIncDec_Ret) { + modelHeaders[g_eeGeneral.currModel].modelId = g_model.header.modelId; + } + } + if (editMode==0 && event==EVT_KEY_BREAK(KEY_ENTER)) { + checkModelIdUnique(g_eeGeneral.currModel); + } + } + lcd_putsAtt(MODEL_SETUP_2ND_COLUMN+xOffsetBind, y, STR_MODULE_BIND, l_posHorz==1 ? attr : 0); + lcd_putsAtt(MODEL_SETUP_2ND_COLUMN+7*FW+xOffsetBind, y, STR_MODULE_RANGE, l_posHorz==2 ? attr : 0); + if (IS_MODULE_XJT(moduleIdx)) { + uint8_t newFlag = 0; + if (attr && l_posHorz>0 && s_editMode>0) { + if (l_posHorz == 1) + newFlag = PXX_SEND_RXNUM; + else if (l_posHorz == 2) { + newFlag = PXX_SEND_RANGECHECK; + } + } + pxxFlag[moduleIdx] = newFlag; + } +#if defined(DSM2) + else { + uint8_t newFlag = 0; + if (attr && l_posHorz>0 && s_editMode>0) { + if (l_posHorz == 1) + newFlag = DSM2_BIND_FLAG; + else if (l_posHorz == 2) { + newFlag = DSM2_RANGECHECK_FLAG; + } + } + dsm2Flag = newFlag; + } +#endif + } + } + break; + } + + case ITEM_MODEL_INTERNAL_MODULE_FAILSAFE: + case ITEM_MODEL_EXTERNAL_MODULE_FAILSAFE: + { + uint8_t moduleIdx = (k>=ITEM_MODEL_EXTERNAL_MODULE_LABEL ? 1 : 0); + ModuleData & moduleData = g_model.moduleData[moduleIdx]; + lcd_putsLeft(y, TR_FAILSAFE); + if (IS_MODULE_XJT(moduleIdx)) { + lcd_putsiAtt(MODEL_SETUP_2ND_COLUMN, y, STR_VFAILSAFE, moduleData.failsafeMode, m_posHorz==0 ? attr : 0); + if (moduleData.failsafeMode == FAILSAFE_CUSTOM) lcd_putsAtt(MODEL_SETUP_2ND_COLUMN + 10*FW, y, STR_SET, m_posHorz==1 ? attr : 0); + if (attr) { + if (moduleData.failsafeMode != FAILSAFE_CUSTOM) + m_posHorz = 0; + if (m_posHorz==0) { + if (editMode>0 || p1valdiff) { + CHECK_INCDEC_MODELVAR_ZERO(event, moduleData.failsafeMode, FAILSAFE_LAST); + if (checkIncDec_Ret) SEND_FAILSAFE_NOW(moduleIdx); + } + } + else if (m_posHorz==1) { + s_editMode = 0; + if (moduleData.failsafeMode==FAILSAFE_CUSTOM && event==EVT_KEY_FIRST(KEY_ENTER)) { + g_moduleIdx = moduleIdx; + pushMenu(menuModelFailsafe); + } + } + else { + lcd_filled_rect(MODEL_SETUP_2ND_COLUMN, y, LCD_W-MODEL_SETUP_2ND_COLUMN-MENUS_SCROLLBAR_WIDTH, 8); + } + } + } + break; + } + + case ITEM_MODEL_TRAINER_LABEL: + lcd_putsLeft(y, STR_TRAINER); + break; + + case ITEM_MODEL_TRAINER_MODE: + g_model.trainerMode = selectMenuItem(MODEL_SETUP_2ND_COLUMN, y, STR_MODE, STR_VTRAINERMODES, g_model.trainerMode, 0, 1, attr, event); + break; + +#else + + case ITEM_MODEL_PPM1_PROTOCOL: +#if defined(PCBSKY9X) + lcd_putsLeft(y, PSTR("Port1")); +#else + lcd_putsLeft(y, NO_INDENT(STR_PROTO)); +#endif + + lcd_putsiAtt(MODEL_SETUP_2ND_COLUMN, y, STR_VPROTOS, protocol, m_posHorz<=0 ? attr : 0); + +#if defined(PCBSKY9X) + lcd_putsAtt(MODEL_SETUP_2ND_COLUMN+4*FW+3, y, STR_CH, m_posHorz==1 ? attr : 0); + lcd_outdezAtt(lcdLastPos, y, g_model.moduleData[0].channelsStart+1, LEFT | (m_posHorz==1 ? attr : 0)); + lcd_putc(lcdLastPos, y, '-'); + lcd_outdezAtt(lcdLastPos + FW+1, y, g_model.moduleData[0].channelsStart+NUM_PORT1_CHANNELS(), LEFT | (m_posHorz==2 ? attr : 0)); +#else + if (IS_PPM_PROTOCOL(protocol)) { + lcd_putsiAtt(MODEL_SETUP_2ND_COLUMN+7*FW, y, STR_NCHANNELS, g_model.ppmNCH+2, m_posHorz!=0 ? attr : 0); + } + else if (attr) { + MOVE_CURSOR_FROM_HERE(); + } +#endif + + if (attr && (editMode>0 || p1valdiff +#if !defined(PCBSKY9X) + || (!IS_PPM_PROTOCOL(protocol) && !IS_DSM2_PROTOCOL(protocol)) +#endif + )) { + switch (m_posHorz) { + case 0: + CHECK_INCDEC_MODELVAR_ZERO(event, g_model.protocol, PROTO_MAX-1); + break; + case 1: +#if defined(PCBSKY9X) + CHECK_INCDEC_MODELVAR_ZERO(event, g_model.moduleData[0].channelsStart, 32-8-g_model.moduleData[0].channelsCount); + g_model.moduleData[0].ppmFrameLength = max((int8_t)0, g_model.moduleData[0].channelsCount) * 4; + SET_DEFAULT_PPM_FRAME_LENGTH(0); +#else + CHECK_INCDEC_MODELVAR(event, g_model.ppmNCH, -2, 4); + g_model.ppmFrameLength = g_model.ppmNCH * 8; +#endif + break; +#if defined(PCBSKY9X) + case 2: + if (IS_PPM_PROTOCOL(protocol)) { + CHECK_INCDEC_MODELVAR(event, g_model.moduleData[0].channelsCount, -4, min(8, 32-8-g_model.moduleData[0].channelsStart)); + SET_DEFAULT_PPM_FRAME_LENGTH(0); + } + else + REPEAT_LAST_CURSOR_MOVE(); + break; +#endif + } + } + break; + +#if defined(PCBSKY9X) + case ITEM_MODEL_PPM2_PROTOCOL: + lcd_putsLeft(y, PSTR("Port2")); + lcd_putsiAtt(MODEL_SETUP_2ND_COLUMN, y, STR_VPROTOS, 0, 0); + lcd_putsAtt(MODEL_SETUP_2ND_COLUMN+4*FW+3, y, STR_CH, m_posHorz<=0 ? attr : 0); + lcd_outdezAtt(lcdLastPos, y, g_model.moduleData[1].channelsStart+1, LEFT | (m_posHorz<=0 ? attr : 0)); + lcd_putc(lcdLastPos, y, '-'); + lcd_outdezAtt(lcdLastPos + FW+1, y, g_model.moduleData[1].channelsStart+8+g_model.moduleData[1].channelsCount, LEFT | (m_posHorz!=0 ? attr : 0)); + if (attr && (editMode>0 || p1valdiff)) { + switch (m_posHorz) { + case 0: + CHECK_INCDEC_MODELVAR_ZERO(event, g_model.moduleData[1].channelsStart, 32-8-g_model.moduleData[1].channelsCount); + SET_DEFAULT_PPM_FRAME_LENGTH(1); + break; + case 1: + CHECK_INCDEC_MODELVAR(event, g_model.moduleData[1].channelsCount, -4, min(8, 32-8-g_model.moduleData[1].channelsStart)); + SET_DEFAULT_PPM_FRAME_LENGTH(1); + break; + } + } + break; + + case ITEM_MODEL_PPM2_PARAMS: + lcd_putsLeft(y, STR_PPMFRAME); + lcd_puts(MODEL_SETUP_2ND_COLUMN+3*FW, y, STR_MS); + lcd_outdezAtt(MODEL_SETUP_2ND_COLUMN, y, (int16_t)g_model.moduleData[1].ppmFrameLength*5 + 225, (m_posHorz<=0 ? attr : 0) | PREC1|LEFT); + lcd_putc(MODEL_SETUP_2ND_COLUMN+8*FW+2, y, 'u'); + lcd_outdezAtt(MODEL_SETUP_2ND_COLUMN+8*FW+2, y, (g_model.moduleData[1].ppmDelay*50)+300, (m_posHorz < 0 || m_posHorz==1) ? attr : 0); + lcd_putcAtt(MODEL_SETUP_2ND_COLUMN+10*FW, y, g_model.moduleData[1].ppmPulsePol ? '+' : '-', (m_posHorz < 0 || m_posHorz==2) ? attr : 0); + if (attr && (editMode>0 || p1valdiff)) { + switch (m_posHorz) { + case 0: + CHECK_INCDEC_MODELVAR(event, g_model.moduleData[1].ppmFrameLength, -20, 35); + break; + case 1: + CHECK_INCDEC_MODELVAR(event, g_model.moduleData[1].ppmDelay, -4, 10); + break; + case 2: + CHECK_INCDEC_MODELVAR_ZERO(event, g_model.moduleData[1].ppmPulsePol, 1); + break; + } + } + break; +#endif + + case ITEM_MODEL_PPM1_PARAMS: +#if defined(PCBSKY9X) + if (IS_PPM_PROTOCOL(protocol)) { + lcd_putsLeft(y, STR_PPMFRAME); + lcd_puts(MODEL_SETUP_2ND_COLUMN+3*FW, y, STR_MS); + lcd_outdezAtt(MODEL_SETUP_2ND_COLUMN, y, (int16_t)g_model.moduleData[0].ppmFrameLength*5 + 225, (m_posHorz<=0 ? attr : 0) | PREC1|LEFT); + lcd_putc(MODEL_SETUP_2ND_COLUMN+8*FW+2, y, 'u'); + lcd_outdezAtt(MODEL_SETUP_2ND_COLUMN+8*FW+2, y, (g_model.moduleData[0].ppmDelay*50)+300, (m_posHorz < 0 || m_posHorz==1) ? attr : 0); + lcd_putcAtt(MODEL_SETUP_2ND_COLUMN+10*FW, y, g_model.moduleData[0].ppmPulsePol ? '+' : '-', (m_posHorz < 0 || m_posHorz==2) ? attr : 0); + if (attr && (editMode>0 || p1valdiff)) { + switch (m_posHorz) { + case 0: + CHECK_INCDEC_MODELVAR(event, g_model.moduleData[0].ppmFrameLength, -20, 35); + break; + case 1: + CHECK_INCDEC_MODELVAR(event, g_model.moduleData[0].ppmDelay, -4, 10); + break; + case 2: + CHECK_INCDEC_MODELVAR_ZERO(event, g_model.moduleData[0].ppmPulsePol, 1); + break; + } + } + } +#else + if (IS_PPM_PROTOCOL(protocol)) { + lcd_putsLeft(y, STR_PPMFRAME); + lcd_puts(MODEL_SETUP_2ND_COLUMN+3*FW, y, STR_MS); + lcd_outdezAtt(MODEL_SETUP_2ND_COLUMN, y, (int16_t)g_model.ppmFrameLength*5 + 225, (m_posHorz<=0 ? attr : 0) | PREC1|LEFT); + lcd_putc(MODEL_SETUP_2ND_COLUMN+8*FW+2, y, 'u'); + lcd_outdezAtt(MODEL_SETUP_2ND_COLUMN+8*FW+2, y, (g_model.ppmDelay*50)+300, (m_posHorz < 0 || m_posHorz==1) ? attr : 0); + lcd_putcAtt(MODEL_SETUP_2ND_COLUMN+10*FW, y, g_model.pulsePol ? '+' : '-', (m_posHorz < 0 || m_posHorz==2) ? attr : 0); + if (attr && (editMode>0 || p1valdiff)) { + switch (m_posHorz) { + case 0: + CHECK_INCDEC_MODELVAR(event, g_model.ppmFrameLength, -20, 35); + break; + case 1: + CHECK_INCDEC_MODELVAR(event, g_model.ppmDelay, -4, 10); + break; + case 2: + CHECK_INCDEC_MODELVAR_ZERO(event, g_model.pulsePol, 1); + break; + } + } + } +#endif +#if defined(DSM2) || defined(PXX) + else if (IS_DSM2_PROTOCOL(protocol) || IS_PXX_PROTOCOL(protocol)) { + if (attr && m_posHorz > 1) { + REPEAT_LAST_CURSOR_MOVE(); // limit 3 column row to 2 colums (Rx_Num and RANGE fields) + } + + lcd_putsLeft(y, STR_RXNUM); + lcd_outdezNAtt(MODEL_SETUP_2ND_COLUMN, y, g_model.header.modelId, (m_posHorz<=0 ? attr : 0) | LEADING0|LEFT, 2); + if (attr && (m_posHorz==0 && (editMode>0 || p1valdiff))) { + CHECK_INCDEC_MODELVAR_ZERO(event, g_model.header.modelId, 99); +#if defined(CPUARM) + if (checkIncDec_Ret) + modelHeaders[g_eeGeneral.currModel].modelId = g_model.header.modelId; +#endif + } + +#if defined(PXX) + if (protocol == PROTO_PXX) { +#if defined(CPUARM) + if (attr && m_posHorz==0 && editMode==0 && event==EVT_KEY_BREAK(KEY_ENTER)) + checkModelIdUnique(g_eeGeneral.currModel); +#endif + + lcd_putsAtt(MODEL_SETUP_2ND_COLUMN+4*FW, y, STR_SYNCMENU, m_posHorz!=0 ? attr : 0); + if (attr && m_posHorz>0 && editMode>0) { + // send reset code + pxxFlag[0] = PXX_SEND_RXNUM; + } + } +#endif + +#if defined(DSM2) + if (IS_DSM2_PROTOCOL(protocol)) { + lcd_putsAtt(MODEL_SETUP_2ND_COLUMN+4*FW, y, STR_MODULE_RANGE, m_posHorz!=0 ? attr : 0); + dsm2Flag = (attr && m_posHorz>0 && editMode>0) ? DSM2_RANGECHECK_FLAG : 0; // [MENU] key toggles range check mode + } +#endif + } +#endif + break; +#endif // defined(PCBTARANIS) + } + } + +#if defined(PCBTARANIS) + if (pxxFlag[INTERNAL_MODULE] == PXX_SEND_RANGECHECK || pxxFlag[EXTERNAL_MODULE] == PXX_SEND_RANGECHECK) { + displayPopup("RSSI: "); + lcd_outdezAtt(16+4*FW, 5*FH, frskyData.rssi[0].value, BOLD); + } +#endif +} + +static uint8_t s_currIdx; + +#if MENU_COLUMNS < 2 + #if LCD_W >= 212 + #define MIXES_2ND_COLUMN (18*FW) + #else + #define MIXES_2ND_COLUMN (12*FW) + #endif +#else + #define MIXES_2ND_COLUMN (9*FW) +#endif + +#if LCD_W >= 212 + #define EXPO_ONE_2ND_COLUMN (LCD_W-8*FW-90) + #define EXPO_ONE_FP_WIDTH (9*FW) +#else + #define EXPO_ONE_2ND_COLUMN (7*FW+3*FW+2) + #define EXPO_ONE_FP_WIDTH (5*FW) +#endif + +#if MENU_COLUMNS > 1 +uint8_t editDelay(const xcoord_t x, const uint8_t y, const uint8_t event, const uint8_t attr, const pm_char *str, uint8_t delay) +{ + lcd_puts(x, y, str); + lcd_outdezAtt(x+MIXES_2ND_COLUMN, y, (10/DELAY_STEP)*delay, attr|PREC1|LEFT); + if (attr) CHECK_INCDEC_MODELVAR_ZERO(event, delay, DELAY_MAX); + return delay; +} +#define EDIT_DELAY(x, y, event, attr, str, delay) editDelay(x, y, event, attr, str, delay) +#else +uint8_t editDelay(const uint8_t y, const uint8_t event, const uint8_t attr, const pm_char *str, uint8_t delay) +{ + lcd_putsLeft(y, str); + lcd_outdezAtt(MIXES_2ND_COLUMN, y, (10/DELAY_STEP)*delay, attr|PREC1|LEFT); + if (attr) CHECK_INCDEC_MODELVAR_ZERO(event, delay, DELAY_MAX); + return delay; +} +#define EDIT_DELAY(x, y, event, attr, str, delay) editDelay(y, event, attr, str, delay) +#endif + +#if defined(FLIGHT_MODES) + +#if defined(CPUARM) + #define FlightModesType uint16_t +#else + #define FlightModesType uint8_t +#endif + +void displayFlightModes(uint8_t x, uint8_t y, FlightModesType value) +{ + uint8_t p = MAX_PHASES; + do { + --p; + if (!(value & (1< EXPO_ONE_2ND_COLUMN-FW))) + continue; +#endif +#if defined(PCBTARANIS) + LcdFlags flags = 0; + if (attr) { + flags |= INVERS; + if (posHorz==p) flags |= BLINK; + } + if (value & (1<= 212 + +enum FlightModesItems { + ITEM_PHASES_NAME, + ITEM_PHASES_SWITCH, + ITEM_PHASES_TRIMS, + ITEM_PHASES_FADE_IN, + ITEM_PHASES_FADE_OUT, + ITEM_PHASES_COUNT, + ITEM_PHASES_LAST = ITEM_PHASES_COUNT-1 +}; + +void editPhaseTrims(uint8_t x, uint8_t y, uint8_t phase, uint8_t event, uint8_t active) +{ + static uint8_t cursorPos = 0; + + for (uint8_t t=0; t 0) { + if (p1valdiff || IS_ROTARY_RIGHT(event) || IS_ROTARY_LEFT(event) || event==EVT_KEY_FIRST(KEY_DOWN) || event==EVT_KEY_FIRST(KEY_UP) + || event==EVT_KEY_REPT(KEY_DOWN) || event==EVT_KEY_REPT(KEY_UP)) { + int16_t v = getRawTrimValue(phase, cur); + if (v < TRIM_EXTENDED_MAX) v = TRIM_EXTENDED_MAX; + v = checkIncDec(event, v, TRIM_EXTENDED_MAX, TRIM_EXTENDED_MAX+MAX_PHASES-1, EE_MODEL); + if (checkIncDec_Ret) { + if (v == TRIM_EXTENDED_MAX) v = 0; + setTrimValue(phase, cur, v); + } + } + + switch (event) { +#if defined(ROTARY_ENCODER_NAVIGATION) || defined(PCBTARANIS) + case EVT_ROTARY_BREAK: + if (s_editMode == EDIT_MODIFY_FIELD) { + s_editMode = EDIT_MODIFY_STRING; + cur = 0; + } + else if (cur0) cur--; + break; + case EVT_KEY_BREAK(KEY_RIGHT): + if (cur 0) { posHorz += 2; } + + if (sub=0) { + displayColumnHeader(STR_PHASES_HEADERS, posHorz); + } + + for (uint8_t i=0; i0) ? BLINK|INVERS : INVERS) : 0); + uint8_t active = (attr && (s_editMode>0 || p1valdiff)) ; + switch(j) + { + case ITEM_PHASES_NAME: + editName(4*FW, y, p->name, sizeof(p->name), event, attr); + break; + + case ITEM_PHASES_SWITCH: + if (k == 0) { + lcd_puts((5+LEN_FP_NAME)*FW+FW/2, y, STR_DEFAULT); + } + else { + putsSwitches((5+LEN_FP_NAME)*FW+FW/2, y, p->swtch, attr); + if (active) CHECK_INCDEC_MODELSWITCH(event, p->swtch, -MAX_SWITCH, MAX_SWITCH); + } + break; + + case ITEM_PHASES_TRIMS: + if (k != 0) { + editPhaseTrims((10+LEN_FP_NAME)*FW+FW/2, y, k, event, attr); + } + break; + + case ITEM_PHASES_FADE_IN: + lcd_outdezAtt(29*FW, y, (10/DELAY_STEP)*p->fadeIn, attr|PREC1); + if (active) p->fadeIn = checkIncDec(event, p->fadeIn, 0, DELAY_MAX, EE_MODEL|NO_INCDEC_MARKS); + break; + + case ITEM_PHASES_FADE_OUT: + lcd_outdezAtt(34*FW, y, (10/DELAY_STEP)*p->fadeOut, attr|PREC1); + if (active) p->fadeOut = checkIncDec(event, p->fadeOut, 0, DELAY_MAX, EE_MODEL|NO_INCDEC_MARKS); + break; + + } + } + } +} + +#else // LCD_W >= 212 + +enum menuModelPhaseItems { + ITEM_MODEL_PHASE_NAME, + ITEM_MODEL_PHASE_SWITCH, + ITEM_MODEL_PHASE_TRIMS, + IF_ROTARY_ENCODERS(ITEM_MODEL_PHASE_ROTARY_ENCODERS) + ITEM_MODEL_PHASE_FADE_IN, + ITEM_MODEL_PHASE_FADE_OUT, +#if defined(GVARS) && !defined(PCBSTD) + ITEM_MODEL_PHASE_GVARS_LABEL, + ITEM_MODEL_PHASE_GV1, + ITEM_MODEL_PHASE_GV2, + ITEM_MODEL_PHASE_GV3, + ITEM_MODEL_PHASE_GV4, + ITEM_MODEL_PHASE_GV5, +#endif + ITEM_MODEL_PHASE_MAX +}; + +void menuModelPhaseOne(uint8_t event) +{ + PhaseData *phase = phaseAddress(s_currIdx); + putsFlightPhase(13*FW, 0, s_currIdx+1, (getFlightPhase()==s_currIdx ? BOLD : 0)); + +#if defined(GVARS) && !defined(PCBSTD) + static const pm_uint8_t mstate_tab_phase1[] PROGMEM = {0, 0, 0, (uint8_t)-1, 1, 1, 1, 1, 1}; + static const pm_uint8_t mstate_tab_others[] PROGMEM = {0, 0, 3, IF_ROTARY_ENCODERS(NUM_ROTARY_ENCODERS-1) 0, 0, (uint8_t)-1, 2, 2, 2, 2, 2}; + + if (!check(event, 0, NULL, 0, (s_currIdx == 0) ? mstate_tab_phase1 : mstate_tab_others, DIM(mstate_tab_others)-1, ITEM_MODEL_PHASE_MAX - 1 - (s_currIdx==0 ? (ITEM_MODEL_PHASE_FADE_IN-ITEM_MODEL_PHASE_SWITCH) : 0))) return; + + TITLE(STR_MENUFLIGHTPHASE); + + #define PHASE_ONE_FIRST_LINE (1+1*FH) +#else + SUBMENU(STR_MENUFLIGHTPHASE, 3 + (s_currIdx==0 ? 0 : 2 + (bool)NUM_ROTARY_ENCODERS), {0, 0, 3, IF_ROTARY_ENCODERS(NUM_ROTARY_ENCODERS-1) 0/*, 0*/}); + #define PHASE_ONE_FIRST_LINE (1+1*FH) +#endif + + int8_t sub = m_posVert; + int8_t editMode = s_editMode; + +#if defined(GVARS) && !defined(PCBSTD) + if (s_currIdx == 0 && sub>=ITEM_MODEL_PHASE_SWITCH) sub += ITEM_MODEL_PHASE_FADE_IN-ITEM_MODEL_PHASE_SWITCH; + + for (uint8_t k=0; k=ITEM_MODEL_PHASE_SWITCH) i += ITEM_MODEL_PHASE_FADE_IN-ITEM_MODEL_PHASE_SWITCH; + uint8_t attr = (sub==i ? (editMode>0 ? BLINK|INVERS : INVERS) : 0); +#else + for (uint8_t i=0, k=0, y=PHASE_ONE_FIRST_LINE; i0 ? BLINK|INVERS : INVERS) : 0); +#endif + switch(i) { + case ITEM_MODEL_PHASE_NAME: + editSingleName(MIXES_2ND_COLUMN, y, STR_PHASENAME, phase->name, sizeof(phase->name), event, attr); + break; + case ITEM_MODEL_PHASE_SWITCH: + phase->swtch = switchMenuItem(MIXES_2ND_COLUMN, y, phase->swtch, attr, event); + break; + case ITEM_MODEL_PHASE_TRIMS: + lcd_putsLeft(y, STR_TRIMS); + for (uint8_t t=0; t0) || p1valdiff)) { + int16_t v = getRawTrimValue(s_currIdx, t); + if (v < TRIM_EXTENDED_MAX) v = TRIM_EXTENDED_MAX; + v = checkIncDec(event, v, TRIM_EXTENDED_MAX, TRIM_EXTENDED_MAX+MAX_PHASES-1, EE_MODEL); + if (checkIncDec_Ret) { + if (v == TRIM_EXTENDED_MAX) v = 0; + setTrimValue(s_currIdx, t, v); + } + } + } + break; + +#if ROTARY_ENCODERS > 0 + case ITEM_MODEL_PHASE_ROTARY_ENCODERS: + lcd_putsLeft(y, STR_ROTARY_ENCODER); + for (uint8_t t=0; t0) || p1valdiff)) { +#if ROTARY_ENCODERS > 2 + int16_t v; + if(t < (NUM_ROTARY_ENCODERS - NUM_ROTARY_ENCODERS_EXTRA)) + v = phaseAddress(s_currIdx)->rotaryEncoders[t]; + else + v = g_model.rotaryEncodersExtra[s_currIdx][t-(NUM_ROTARY_ENCODERS - NUM_ROTARY_ENCODERS_EXTRA)]; +#else + int16_t v = phaseAddress(s_currIdx)->rotaryEncoders[t]; +#endif + if (v < ROTARY_ENCODER_MAX) v = ROTARY_ENCODER_MAX; + v = checkIncDec(event, v, ROTARY_ENCODER_MAX, ROTARY_ENCODER_MAX+MAX_PHASES-1, EE_MODEL); + if (checkIncDec_Ret) { + if (v == ROTARY_ENCODER_MAX) v = 0; +#if ROTARY_ENCODERS > 2 + if (t < (NUM_ROTARY_ENCODERS - NUM_ROTARY_ENCODERS_EXTRA)) + phaseAddress(s_currIdx)->rotaryEncoders[t] = v; + else + g_model.rotaryEncodersExtra[s_currIdx][t-(NUM_ROTARY_ENCODERS - NUM_ROTARY_ENCODERS_EXTRA)] = v; +#else + phaseAddress(s_currIdx)->rotaryEncoders[t] = v; +#endif + } + } + } + break; +#endif + + case ITEM_MODEL_PHASE_FADE_IN: + phase->fadeIn = EDIT_DELAY(0, y, event, attr, STR_FADEIN, phase->fadeIn); + break; + + case ITEM_MODEL_PHASE_FADE_OUT: + phase->fadeOut = EDIT_DELAY(0, y, event, attr, STR_FADEOUT, phase->fadeOut); + break; + +#if defined(GVARS) && !defined(PCBSTD) + case ITEM_MODEL_PHASE_GVARS_LABEL: + lcd_putsLeft(y, STR_GLOBAL_VARS); + break; + + default: + { + uint8_t idx = i-ITEM_MODEL_PHASE_GV1; + uint8_t posHorz = m_posHorz; + if (attr && posHorz > 0 && s_currIdx==0) posHorz++; + + putsStrIdx(INDENT_WIDTH, y, STR_GV, idx+1); + + editName(4*FW, y, g_model.gvars[idx].name, LEN_GVAR_NAME, event, posHorz==0 ? attr : 0); + + int16_t v = phase->gvars[idx]; + if (v > GVAR_MAX) { + uint8_t p = v - GVAR_MAX - 1; + if (p >= s_currIdx) p++; + putsFlightPhase(11*FW, y, p+1, posHorz==1 ? attr : 0); + } + else { + lcd_putsAtt(11*FW, y, STR_OWN, posHorz==1 ? attr : 0); + } + if (attr && s_currIdx>0 && posHorz==1 && (editMode>0 || p1valdiff)) { + if (v < GVAR_MAX) v = GVAR_MAX; + v = checkIncDec(event, v, GVAR_MAX, GVAR_MAX+MAX_PHASES-1, EE_MODEL); + if (checkIncDec_Ret) { + if (v == GVAR_MAX) v = 0; + phase->gvars[idx] = v; + } + } + + uint8_t p = getGVarFlightPhase(s_currIdx, idx); + lcd_outdezAtt(21*FW, y, GVAR_VALUE(idx, p), posHorz==2 ? attr : 0); + if (attr && posHorz==2 && ((editMode>0) || p1valdiff)) { + GVAR_VALUE(idx, p) = checkIncDec(event, GVAR_VALUE(idx, p), -GVAR_LIMIT, GVAR_LIMIT, EE_MODEL); + } + + break; + } +#endif + } + } +} + +#if defined(ROTARY_ENCODERS) + #if ROTARY_ENCODERS > 2 + #define NAME_OFS (-4-12) + #define SWITCH_OFS (-FW/2-2-13) + #define TRIMS_OFS (-FW/2-4-15) + #define ROTARY_ENC_OFS (0) + #else + #define NAME_OFS (-4) + #define SWITCH_OFS (-FW/2-2) + #define TRIMS_OFS (-FW/2-4) + #define ROTARY_ENC_OFS (2) + #endif +#else + #define NAME_OFS 0 + #define SWITCH_OFS (FW/2) + #define TRIMS_OFS (FW/2) +#endif + +void menuModelFlightModesAll(uint8_t event) +{ + SIMPLE_MENU(STR_MENUFLIGHTPHASES, menuTabModel, e_FlightModesAll, 1+MAX_PHASES+1); + + int8_t sub = m_posVert - 1; + + switch (event) { + CASE_EVT_ROTARY_BREAK + case EVT_KEY_FIRST(KEY_ENTER): + if (sub == MAX_PHASES) { + s_editMode = 0; + trimsCheckTimer = 200; // 2 seconds + } + // no break + case EVT_KEY_FIRST(KEY_RIGHT): + if (sub >= 0 && sub < MAX_PHASES) { + s_currIdx = sub; + pushMenu(menuModelPhaseOne); + } + break; + } + + uint8_t att; + for (uint8_t i=0; i(LCD_LINES-1)*FH+1) continue; +#else + uint8_t y = 1 + (i+1)*FH; +#endif + att = (i==sub ? INVERS : 0); + PhaseData *p = phaseAddress(i); +#if ROTARY_ENCODERS > 2 + putsFlightPhase(0, y, i+1, att|CONDENSED|(getFlightPhase()==i ? BOLD : 0)); +#else + putsFlightPhase(0, y, i+1, att|(getFlightPhase()==i ? BOLD : 0)); +#endif + + lcd_putsnAtt(4*FW+NAME_OFS, y, p->name, sizeof(p->name), ZCHAR); + if (i == 0) { + lcd_puts((5+LEN_FP_NAME)*FW+SWITCH_OFS, y, STR_DEFAULT); + } + else { + putsSwitches((5+LEN_FP_NAME)*FW+SWITCH_OFS, y, p->swtch, 0); + for (uint8_t t=0; tfadeIn || p->fadeOut) + lcd_putc(LCD_W-FW-MENUS_SCROLLBAR_WIDTH, y, (p->fadeIn && p->fadeOut) ? '*' : (p->fadeIn ? 'I' : 'O')); + + } + +#if defined(CPUARM) + if (s_pgOfs != MAX_PHASES-(LCD_LINES-2)) return; +#endif + + lcd_putsLeft((LCD_LINES-1)*FH+1, STR_CHECKTRIMS); + putsFlightPhase(OFS_CHECKTRIMS, (LCD_LINES-1)*FH+1, s_perout_flight_phase+1); + if (sub==MAX_PHASES && !trimsCheckTimer) { + lcd_status_line(); + } +} + +#endif // defined(PCBTARANIS) + +#else // defined(FLIGHT_MODES) + +#define displayFlightModes(...) + +#endif + +#if defined(HELI) + +enum menuModelHeliItems { + ITEM_HELI_SWASHTYPE, + ITEM_HELI_COLLECTIVE, + ITEM_HELI_SWASHRING, + ITEM_HELI_ELEDIRECTION, + ITEM_HELI_AILDIRECTION, + ITEM_HELI_COLDIRECTION +}; + +#if LCD_W >= 212 + #define HELI_PARAM_OFS (23*FW) +#else + #define HELI_PARAM_OFS (14*FW) +#endif + +void menuModelHeli(uint8_t event) +{ + SIMPLE_MENU(STR_MENUHELISETUP, menuTabModel, e_Heli, 7); + + uint8_t sub = m_posVert - 1; + + for (uint8_t i=0; i<6; i++) { + uint8_t y = 1 + 1*FH + i*FH; + uint8_t attr = (sub == i ? ((s_editMode>0) ? BLINK|INVERS : INVERS) : 0); + switch(i) { + case ITEM_HELI_SWASHTYPE: + g_model.swashR.type = selectMenuItem(HELI_PARAM_OFS, y, STR_SWASHTYPE, STR_VSWASHTYPE, g_model.swashR.type, 0, SWASH_TYPE_NUM, attr, event); + break; + + case ITEM_HELI_COLLECTIVE: +#if defined(PCBTARANIS) + lcd_putsLeft(y, STR_COLLECTIVE); + if (attr) CHECK_INCDEC_MODELSOURCE(event, g_model.swashR.collectiveSource, 0, MIXSRC_LAST_CH); +#else + g_model.swashR.collectiveSource = selectMenuItem(HELI_PARAM_OFS, y, STR_COLLECTIVE, NULL, g_model.swashR.collectiveSource, 0, MIXSRC_LAST_CH, attr, event); +#endif + putsMixerSource(HELI_PARAM_OFS, y, g_model.swashR.collectiveSource, attr); + break; + + case ITEM_HELI_SWASHRING: + lcd_putsLeft(y, STR_SWASHRING); + lcd_outdezAtt(HELI_PARAM_OFS, y, g_model.swashR.value, LEFT|attr); + if (attr) CHECK_INCDEC_MODELVAR_ZERO(event, g_model.swashR.value, 100); + break; + + case ITEM_HELI_ELEDIRECTION: + g_model.swashR.invertELE = selectMenuItem(HELI_PARAM_OFS, y, STR_ELEDIRECTION, STR_MMMINV, g_model.swashR.invertELE, 0, 1, attr, event); + break; + + case ITEM_HELI_AILDIRECTION: + g_model.swashR.invertAIL = selectMenuItem(HELI_PARAM_OFS, y, STR_AILDIRECTION, STR_MMMINV, g_model.swashR.invertAIL, 0, 1, attr, event); + break; + + case ITEM_HELI_COLDIRECTION: + g_model.swashR.invertCOL = selectMenuItem(HELI_PARAM_OFS, y, STR_COLDIRECTION, STR_MMMINV, g_model.swashR.invertCOL, 0, 1, attr, event); + break; + } + } +} +#endif + +typedef int16_t (*FnFuncP) (int16_t x); + +int16_t expoFn(int16_t x) +{ + ExpoData *ed = expoAddress(s_currIdx); + int16_t anas[NUM_INPUTS] = {0}; +#if defined(PCBTARANIS) + applyExpos(anas, e_perout_mode_inactive_phase, ed->srcRaw, x); +#else + anas[ed->chn] = x; + applyExpos(anas, e_perout_mode_inactive_phase); +#endif + return anas[ed->chn]; +} + +void DrawFunction(FnFuncP fn, uint8_t offset=0) +{ + lcd_vlineStip(X0-offset, 0, LCD_H, 0xee); + lcd_hlineStip(X0-WCHART-offset, Y0, WCHART*2, 0xee); + + uint8_t prev_yv = 255; + + for (int8_t xv=-WCHART; xv<=WCHART; xv++) { + uint8_t yv = (LCD_H-1) - (((uint16_t)RESX + fn(xv * (RESX/WCHART))) / 2 * (LCD_H-1) / RESX); + if (prev_yv != 255) { + if (abs((int8_t)yv-prev_yv) <= 1) { + lcd_plot(X0+xv-offset-1, prev_yv, FORCE); + } + else { + uint8_t tmp = (prev_yv < yv ? 0 : 1); + lcd_vline(X0+xv-offset-1, yv+tmp, prev_yv-yv); + } + } + prev_yv = yv; + } +} + +#if defined(CURVES) +static uint8_t s_curveChan; +int16_t curveFn(int16_t x) +{ + return applyCustomCurve(x, s_curveChan); +} + +struct point_t { + uint8_t x; + uint8_t y; +}; + +point_t getPoint(uint8_t i) +{ + point_t result = {0, 0}; +#if defined(PCBTARANIS) + CurveInfo &crv = g_model.curves[s_curveChan]; + int8_t *points = curveAddress(s_curveChan); + bool custom = (crv.type == CURVE_TYPE_CUSTOM); + uint8_t count = 5+crv.points; +#else + CurveInfo crv = curveInfo(s_curveChan); + int8_t *points = crv.crv; + bool custom = crv.custom; + uint8_t count = crv.points; +#endif + if (i < count) { +#if defined(PCBTARANIS) + result.x = X0-1-WCHART+i*WCHART*2/(count-1); +#else + result.x = X0-1-WCHART+i*WCHART/(count/2); +#endif + result.y = (LCD_H-1) - (100 + points[i]) * (LCD_H-1) / 200; + if (custom && i>0 && i g_model.points + sizeof(g_model.points)) { + AUDIO_WARNING2(); + return false; + } + + int8_t *nextCrv = curveAddress(index+1); + memmove(nextCrv+shift, nextCrv, 5*(MAX_CURVES-index-1)+curveEnd[MAX_CURVES-1]-curveEnd[index]); + if (shift < 0) memclear(&g_model.points[NUM_POINTS-1] + shift, -shift); + while (index NUM_POINTS-5*MAX_CURVES) { + AUDIO_WARNING2(); + return false; + } + + int8_t *crv = curveAddress(index); + if (shift < 0) { + for (uint8_t i=0; i0 ? INVERS|BLINK : INVERS) : 0); + lcd_putsLeft(3*FH+1, STR_TYPE); + lcd_putsiAtt(INDENT_WIDTH, 4*FH+1, "\010StandardCustom\0", crv.type, attr); + if (attr) { + uint8_t newType = checkIncDecModelZero(event, crv.type, CURVE_TYPE_LAST); + if (newType != crv.type) { + for (int i=1; i<4+crv.points; i++) + points[i] = calcRESXto100(applyCustomCurve(calc100toRESX(-100 + i*200/(4+crv.points)), s_curveChan)); + moveCurve(s_curveChan, checkIncDec_Ret > 0 ? 3+crv.points : -3-crv.points); + if (newType == CURVE_TYPE_CUSTOM) { + for (int i=0; i<3+crv.points; i++) + points[5+crv.points+i] = -100 + ((i+1)*200) / (4+crv.points); + } + crv.type = newType; + } + } + + attr = (m_posVert==2 ? (s_editMode>0 ? INVERS|BLINK : INVERS) : 0); + lcd_putsLeft(5*FH+1, "Count"); + lcd_outdezAtt(INDENT_WIDTH, 6*FH+1, 5+crv.points, LEFT|attr); + lcd_putsAtt(lcdLastPos, 6*FH+1, PSTR("pts"), attr); + if (attr) { + int8_t count = checkIncDecModel(event, crv.points, -3, 12); // 2pts - 17pts + if (checkIncDec_Ret) { + int8_t newPoints[MAX_POINTS]; + newPoints[0] = points[0]; + newPoints[4+count] = points[4+crv.points]; + for (int i=1; i<4+count; i++) + newPoints[i] = calcRESXto100(applyCustomCurve(calc100toRESX(-100 + (i*200) / (4+count)), s_curveChan)); + moveCurve(s_curveChan, checkIncDec_Ret*(crv.type==CURVE_TYPE_CUSTOM?2:1)); + for (int i=0; i<5+count; i++) { + points[i] = newPoints[i]; + if (crv.type == CURVE_TYPE_CUSTOM && i!=0 && i!=4+count) + points[5+count+i-1] = -100 + (i*200) / (4+count); + } + crv.points = count; + } + } + + lcd_putsLeft(7*FH+1, PSTR("Smooth")); + menu_lcd_onoff(7*FW, 7*FH+1, crv.smooth, m_posVert==3 ? INVERS : 0); + if (m_posVert==3) crv.smooth = checkIncDecModel(event, crv.smooth, 0, 1); + + switch(event) { + case EVT_ENTRY: + pointsOfs = 0; + SET_SCROLLBAR_X(0); + break; + case EVT_KEY_LONG(KEY_ENTER): + if (m_posVert > 1) { + killEvents(event); + MENU_ADD_ITEM(STR_CURVE_PRESET); + MENU_ADD_ITEM(STR_MIRROR); + MENU_ADD_ITEM(STR_CLEAR); + menuHandler = onCurveOneMenu; + } + break; + case EVT_KEY_LONG(KEY_MENU): + pushMenu(menuChannelsView); + killEvents(event); + return; + } + + DrawCurve(FW); + + uint8_t posY = FH+1; + attr = (s_editMode > 0 ? INVERS|BLINK : INVERS); + for (uint8_t i=0; i<5+crv.points; i++) { + point_t point = getPoint(i); + uint8_t selectionMode = 0; + if (crv.type==CURVE_TYPE_CUSTOM) { + if (m_posVert==4+2*i || (i==5+crv.points-1 && m_posVert==4+5+crv.points+5+crv.points-2-1)) + selectionMode = 2; + else if (i>0 && m_posVert==3+2*i) + selectionMode = 1; + } + else if (m_posVert == 4+i) { + selectionMode = 2; + } + + if (i>=pointsOfs && i0 && i<5+crv.points-1) x = points[5+crv.points+i-1]; + lcd_outdezAtt(6+8*FW, posY, i+1, LEFT); + lcd_outdezAtt(3+12*FW, posY, x, LEFT|(selectionMode==1?attr:0)); + lcd_outdezAtt(3+16*FW, posY, points[i], LEFT|(selectionMode==2?attr:0)); + posY += FH; + } + + if (selectionMode > 0) { + // do selection square + lcd_filled_rect(point.x-FW-1, point.y-2, 5, 5, SOLID, FORCE); + lcd_filled_rect(point.x-FW, point.y-1, 3, 3, SOLID); + if (s_editMode > 0) { + if (selectionMode == 1) + CHECK_INCDEC_MODELVAR(event, points[5+crv.points+i-1], i==1 ? -100 : points[5+crv.points+i-2], i==5+crv.points-2 ? 100 : points[5+crv.points+i]); // edit X + else if (selectionMode == 2) + CHECK_INCDEC_MODELVAR(event, points[i], -100, 100); + } + if (i < pointsOfs) + pointsOfs = i; + else if (i > pointsOfs+6) + pointsOfs = i-6; + } + } +} +#else +void menuModelCurveOne(uint8_t event) +{ + TITLE(STR_MENUCURVE); + lcd_outdezAtt(PSIZE(TR_MENUCURVE)*FW+1, 0, s_curveChan+1, INVERS|LEFT); + DISPLAY_PROGRESS_BAR(20*FW+1); + + CurveInfo crv = curveInfo(s_curveChan); + + switch(event) { + case EVT_ENTRY: + s_editMode = 1; + break; + CASE_EVT_ROTARY_BREAK + case EVT_KEY_BREAK(KEY_ENTER): + if (s_editMode <= 0) + m_posHorz = 0; + if (s_editMode == 1 && crv.custom) + s_editMode = 2; + else + s_editMode = 1; + break; + case EVT_KEY_LONG(KEY_ENTER): + if (s_editMode <= 0) { + if (int8_t(++m_posHorz) > 4) + m_posHorz = -4; + for (uint8_t i=0; i 0) { + if (--s_editMode == 0) + m_posHorz = 0; + } + else { + popMenu(); + } + break; + + /* CASE_EVT_ROTARY_LEFT */ + case EVT_KEY_REPT(KEY_LEFT): + case EVT_KEY_FIRST(KEY_LEFT): + if (s_editMode==1 && m_posHorz>0) m_posHorz--; + if (s_editMode <= 0) { + if (crv.custom) { + moveCurve(s_curveChan, -crv.points+2); + } + else if (crv.points > MIN_POINTS) { + moveCurve(s_curveChan, -1, (crv.points+1)/2); + } + else { + AUDIO_WARNING2(); + } + return; + } + break; + + /* CASE_EVT_ROTARY_RIGHT */ + case EVT_KEY_REPT(KEY_RIGHT): + case EVT_KEY_FIRST(KEY_RIGHT): + if (s_editMode==1 && m_posHorz<(crv.points-1)) m_posHorz++; + if (s_editMode <= 0) { + if (!crv.custom) { + moveCurve(s_curveChan, crv.points-2, crv.points); + } + else if (crv.points < MAX_POINTS) { + if (moveCurve(s_curveChan, 1)) { + for (int8_t i=crv.points+crv.points-2; i>=0; i--) { + if (i%2) + crv.crv[i] = (crv.crv[i/2] + crv.crv[1+i/2]) / 2; + else + crv.crv[i] = crv.crv[i/2]; + } + } + } + else { + AUDIO_WARNING2(); + } + } + break; + } + + lcd_putsLeft(7*FH, STR_TYPE); + uint8_t attr = (s_editMode <= 0 ? INVERS : 0); + lcd_outdezAtt(5*FW-2, 7*FH, crv.points, LEFT|attr); + lcd_putsAtt(lcdLastPos, 7*FH, crv.custom ? PSTR("pt'") : PSTR("pt"), attr); + + DrawCurve(); + + if (s_editMode>0) { + uint8_t i = m_posHorz; + point_t point = getPoint(i); + + if (s_editMode==1 || !BLINK_ON_PHASE) { + // do selection square + lcd_filled_rect(point.x-1, point.y-2, 5, 5, SOLID, FORCE); + lcd_filled_rect(point.x, point.y-1, 3, 3, SOLID); + } + + int8_t x = -100 + 200*i/(crv.points-1); + if (crv.custom && i>0 && i=0; i--) { + ch = (expo ? EXPO_VALID(expoAddress(i)) : mixAddress(i)->srcRaw); + if (ch != 0) { + count++; + } + } + return count; +} + +bool reachExpoMixCountLimit(uint8_t expo) +{ + // check mixers count limit + if (getExpoMixCount(expo) >= (expo ? MAX_EXPOS : MAX_MIXERS)) { + POPUP_WARNING(expo ? STR_NOFREEEXPO : STR_NOFREEMIXER); + return true; + } + return false; +} + +void deleteExpoMix(uint8_t expo, uint8_t idx) +{ + pauseMixerCalculations(); + if (expo) { + ExpoData *expo = expoAddress(idx); + memmove(expo, expo+1, (MAX_EXPOS-(idx+1))*sizeof(ExpoData)); + memclear(&g_model.expoData[MAX_EXPOS-1], sizeof(ExpoData)); + } + else { + MixData *mix = mixAddress(idx); + memmove(mix, mix+1, (MAX_MIXERS-(idx+1))*sizeof(MixData)); + memclear(&g_model.mixData[MAX_MIXERS-1], sizeof(MixData)); + } + resumeMixerCalculations(); + eeDirty(EE_MODEL); +} + +// TODO avoid this global s_currCh on ARM boards ... +int8_t s_currCh; +void insertExpoMix(uint8_t expo, uint8_t idx) +{ + pauseMixerCalculations(); + if (expo) { + ExpoData *expo = expoAddress(idx); + memmove(expo+1, expo, (MAX_EXPOS-(idx+1))*sizeof(ExpoData)); + memclear(expo, sizeof(ExpoData)); +#if defined(PCBTARANIS) + expo->srcRaw = (s_currCh > 4 ? MIXSRC_Rud - 1 + s_currCh : MIXSRC_Rud - 1 + channel_order(s_currCh)); + expo->curve.type = CURVE_REF_EXPO; +#else + expo->mode = 3; // pos&neg +#endif + expo->chn = s_currCh - 1; + expo->weight = 100; + } + else { + MixData *mix = mixAddress(idx); + memmove(mix+1, mix, (MAX_MIXERS-(idx+1))*sizeof(MixData)); + memclear(mix, sizeof(MixData)); + mix->destCh = s_currCh-1; +#if defined(PCBTARANIS) + mix->srcRaw = s_currCh; + if (!isSourceAvailable(mix->srcRaw)) + mix->srcRaw = (s_currCh > 4 ? MIXSRC_Rud - 1 + s_currCh : MIXSRC_Rud - 1 + channel_order(s_currCh)); +#else + mix->srcRaw = (s_currCh > 4 ? MIXSRC_Rud - 1 + s_currCh : MIXSRC_Rud - 1 + channel_order(s_currCh)); +#endif + mix->weight = 100; + } + resumeMixerCalculations(); + eeDirty(EE_MODEL); +} + +void copyExpoMix(uint8_t expo, uint8_t idx) +{ + pauseMixerCalculations(); + if (expo) { + ExpoData *expo = expoAddress(idx); + memmove(expo+1, expo, (MAX_EXPOS-(idx+1))*sizeof(ExpoData)); + } + else { + MixData *mix = mixAddress(idx); + memmove(mix+1, mix, (MAX_MIXERS-(idx+1))*sizeof(MixData)); + } + resumeMixerCalculations(); + eeDirty(EE_MODEL); +} + +void memswap(void *a, void *b, uint8_t size) +{ + uint8_t *x = (uint8_t*)a; + uint8_t *y = (uint8_t*)b; + uint8_t temp ; + + while (size--) { + temp = *x; + *x++ = *y; + *y++ = temp; + } +} + +bool swapExpoMix(uint8_t expo, uint8_t &idx, uint8_t up) +{ + void *x, *y; + uint8_t size; + int8_t tgt_idx = (up ? idx-1 : idx+1); + + if (expo) { + x = (ExpoData *)expoAddress(idx); + + if (tgt_idx < 0) { + if (((ExpoData *)x)->chn == 0) + return false; + ((ExpoData *)x)->chn--; + return true; + } + + if (tgt_idx == MAX_EXPOS) { + if (((ExpoData *)x)->chn == NUM_STICKS-1) + return false; + ((ExpoData *)x)->chn++; + return true; + } + + y = (ExpoData *)expoAddress(tgt_idx); + if(((ExpoData *)x)->chn != ((ExpoData *)y)->chn || !EXPO_VALID((ExpoData *)y)) { + if (up) { + if (((ExpoData *)x)->chn>0) ((ExpoData *)x)->chn--; + else return false; + } + else { + if (((ExpoData *)x)->chnchn++; + else return false; + } + return true; + } + + size = sizeof(ExpoData); + } + else { + x = (MixData *)mixAddress(idx); + + if (tgt_idx < 0) { + if (((MixData *)x)->destCh == 0) + return false; + ((MixData *)x)->destCh--; + return true; + } + + if (tgt_idx == MAX_MIXERS) { + if (((MixData *)x)->destCh == NUM_CHNOUT-1) + return false; + ((MixData *)x)->destCh++; + return true; + } + + y = (MixData *)mixAddress(tgt_idx); + uint8_t destCh = ((MixData *)x)->destCh; + if(!((MixData *)y)->srcRaw || destCh != ((MixData *)y)->destCh) { + if (up) { + if (destCh>0) ((MixData *)x)->destCh--; + else return false; + } + else { + if (destChdestCh++; + else return false; + } + return true; + } + + size = sizeof(MixData); + } + + pauseMixerCalculations(); + memswap(x, y, size); + resumeMixerCalculations(); + + idx = tgt_idx; + return true; +} + +enum ExposFields { + CASE_PCBTARANIS(EXPO_FIELD_INPUT_NAME) + IF_CPUARM(EXPO_FIELD_NAME) + CASE_PCBTARANIS(EXPO_FIELD_SOURCE) + CASE_PCBTARANIS(EXPO_FIELD_SCALE) + EXPO_FIELD_WEIGHT, + CASE_PCBTARANIS(EXPO_FIELD_OFFSET) + CASE_9X(EXPO_FIELD_EXPO) + IF_CURVES(EXPO_FIELD_CURVE) + IF_FLIGHT_MODES(EXPO_FIELD_FLIGHT_PHASE) + EXPO_FIELD_SWITCH, + CASE_9X(EXPO_FIELD_SIDE) + CASE_PCBTARANIS(EXPO_FIELD_TRIM) + EXPO_FIELD_MAX +}; + +#if defined(PCBTARANIS) + #define CURVE_ROWS 1 +#else + #define CURVE_ROWS 0 +#endif + +void menuModelExpoOne(uint8_t event) +{ +#if defined(PCBTARANIS) + if (event == EVT_KEY_LONG(KEY_MENU)) { + pushMenu(menuChannelsView); + killEvents(event); + return; + } +#endif + + ExpoData *ed = expoAddress(s_currIdx); +#if defined(PCBTARANIS) + putsMixerSource(7*FW+FW/2, 0, MIXSRC_FIRST_INPUT+ed->chn, 0); +#else + putsMixerSource(7*FW+FW/2, 0, MIXSRC_Rud+ed->chn, 0); +#endif + + SUBMENU(STR_MENUINPUTS, EXPO_FIELD_MAX, {CASE_PCBTARANIS(0) IF_CPUARM(0) CASE_PCBTARANIS(0) CASE_PCBTARANIS((ed->srcRaw >= MIXSRC_FIRST_TELEM ? (uint8_t)0 : (uint8_t)HIDDEN_ROW)) 0, CASE_PCBTARANIS(0) CASE_9X(0) IF_CURVES(CURVE_ROWS) IF_FLIGHT_MODES((MAX_PHASES-1) | NAVIGATION_LINE_BY_LINE) 0 /*, ...*/}); + + SET_SCROLLBAR_X(EXPO_ONE_2ND_COLUMN+10*FW); + + int8_t sub = m_posVert; + + uint8_t y = FH+1; + +#if defined(PCBTARANIS) + for (uint8_t k=0; k0 ? BLINK|INVERS : INVERS) : 0); + switch(i) + { +#if defined(PCBTARANIS) + case EXPO_FIELD_INPUT_NAME: + editSingleName(EXPO_ONE_2ND_COLUMN, y, "Input Name", g_model.inputNames[ed->chn], sizeof(g_model.inputNames[ed->chn]), event, attr); + break; +#endif + +#if defined(CPUARM) + case EXPO_FIELD_NAME: + editSingleName(EXPO_ONE_2ND_COLUMN-IF_9X(sizeof(ed->name)*FW), y, STR_EXPONAME, ed->name, sizeof(ed->name), event, attr); + break; +#endif + +#if defined(PCBTARANIS) + case EXPO_FIELD_SOURCE: + lcd_putsLeft(y, NO_INDENT(STR_SOURCE)); + putsMixerSource(EXPO_ONE_2ND_COLUMN, y, ed->srcRaw, STREXPANDED|attr); + if (attr) ed->srcRaw = checkIncDec(event, ed->srcRaw, INPUTSRC_FIRST, INPUTSRC_LAST, EE_MODEL|INCDEC_SOURCE|NO_INCDEC_MARKS, isInputSourceAvailable); + break; + + case EXPO_FIELD_SCALE: + lcd_putsLeft(y, STR_SCALE); + putsTelemetryChannel(EXPO_ONE_2ND_COLUMN, y, ed->srcRaw - MIXSRC_FIRST_TELEM, convertTelemValue(ed->srcRaw - MIXSRC_FIRST_TELEM + 1, ed->scale), LEFT|attr); + if (attr) ed->scale = checkIncDec(event, ed->scale, 0, maxTelemValue(ed->srcRaw - MIXSRC_FIRST_TELEM + 1), EE_MODEL, NULL); + break; +#endif + + case EXPO_FIELD_WEIGHT: + lcd_putsLeft(y, STR_WEIGHT); + ed->weight = GVAR_MENU_ITEM(EXPO_ONE_2ND_COLUMN, y, ed->weight, MIN_EXPO_WEIGHT, 100, IF_PCBTARANIS(LEFT)|attr, 0, event); + break; + +#if defined(PCBTARANIS) + case EXPO_FIELD_OFFSET: + lcd_putsLeft(y, NO_INDENT(STR_OFFSET)); + ed->offset = GVAR_MENU_ITEM(EXPO_ONE_2ND_COLUMN, y, ed->offset, -100, 100, LEFT|attr, 0, event); + break; +#endif + +#if !defined(PCBTARANIS) + case EXPO_FIELD_EXPO: + lcd_putsLeft(y, STR_EXPO); + if (ed->curveMode==MODE_EXPO || ed->curveParam==0) { + ed->curveMode = MODE_EXPO; + ed->curveParam = GVAR_MENU_ITEM(EXPO_ONE_2ND_COLUMN, y, ed->curveParam, -100, 100, attr, 0, event); + } + else { + lcd_putsAtt(EXPO_ONE_2ND_COLUMN-3*FW, y, STR_NA, attr); + } + break; +#endif + +#if defined(CURVES) + case EXPO_FIELD_CURVE: + lcd_putsLeft(y, STR_CURVE); +#if defined(PCBTARANIS) + editCurveRef(EXPO_ONE_2ND_COLUMN, y, ed->curve, event, attr); +#else + if (ed->curveMode!=MODE_EXPO || ed->curveParam==0) { + putsCurve(EXPO_ONE_2ND_COLUMN-3*FW, y, ed->curveParam, attr); + if (attr) { + CHECK_INCDEC_MODELVAR_ZERO(event, ed->curveParam, CURVE_BASE+MAX_CURVES-1); + if (ed->curveParam) ed->curveMode = MODE_CURVE; + if (ed->curveParam>=CURVE_BASE && event==EVT_KEY_LONG(KEY_ENTER)) { + s_curveChan = ed->curveParam - CURVE_BASE; + pushMenu(menuModelCurveOne); + } + } + } + else { + lcd_putsAtt(EXPO_ONE_2ND_COLUMN-3*FW, y, STR_NA, attr); + } +#endif + break; +#endif + +#if defined(FLIGHT_MODES) + case EXPO_FIELD_FLIGHT_PHASE: + ed->phases = editFlightModes(EXPO_ONE_2ND_COLUMN-IF_9X(EXPO_ONE_FP_WIDTH), y, event, ed->phases, attr); + break; +#endif + + case EXPO_FIELD_SWITCH: + ed->swtch = switchMenuItem(EXPO_ONE_2ND_COLUMN-IF_9X(3*FW), y, ed->swtch, attr, event); + break; + +#if !defined(PCBTARANIS) + case EXPO_FIELD_SIDE: + ed->mode = 4 - selectMenuItem(EXPO_ONE_2ND_COLUMN-3*FW, y, STR_SIDE, STR_VSIDE, 4-ed->mode, 1, 3, attr, event); + break; +#endif + +#if defined(PCBTARANIS) + case EXPO_FIELD_TRIM: + uint8_t not_stick = (ed->srcRaw > MIXSRC_Ail); + int8_t carryTrim = -ed->carryTrim; + lcd_putsLeft(y, STR_TRIM); + lcd_putsiAtt(EXPO_ONE_2ND_COLUMN, y, STR_VMIXTRIMS, (not_stick && carryTrim == 0) ? 0 : carryTrim+1, m_posHorz==0 ? attr : 0); + if (attr) ed->carryTrim = -checkIncDecModel(event, carryTrim, not_stick ? TRIM_ON : -TRIM_OFF, -TRIM_AIL); + break; +#endif + } + y += FH; + } + + DrawFunction(expoFn); + +#if defined(PCBTARANIS) + int x512 = getValue(ed->srcRaw); + if (ed->srcRaw >= MIXSRC_FIRST_TELEM) { + putsTelemetryChannel(LCD_W-8, 6*FH, ed->srcRaw - MIXSRC_FIRST_TELEM, x512, 0); + if (ed->scale > 0) x512 = (x512 * 1024) / convertTelemValue(ed->srcRaw - MIXSRC_FIRST_TELEM + 1, ed->scale); + x512 = limit(-1024, x512, 1024); + } + else { + lcd_outdezAtt(LCD_W-8, 6*FH, calcRESXto1000(x512), PREC1); + } + int y512 = expoFn(x512); + lcd_outdezAtt(LCD_W-8-6*FW, 1*FH, calcRESXto1000(y512), PREC1); +#else + int16_t x512 = calibratedStick[ed->chn]; + lcd_outdezAtt(LCD_W-8, 6*FH, calcRESXto100(x512), 0); + int16_t y512 = expoFn(x512); + lcd_outdezAtt(LCD_W-8-6*FW, 1*FH, calcRESXto100(y512), 0); +#endif + + x512 = X0+x512/(RESXu/WCHART); +#if defined(CPUARM) + y512 = (LCD_H-1) - ((y512+RESX)/2) * (LCD_H-1) / RESX; +#else + y512 = (LCD_H-1) - (uint16_t)((y512+RESX)/2) * (LCD_H-1) / RESX; +#endif + + lcd_vline(x512, y512-3, 3*2+1); + lcd_hline(x512-3, y512, 3*2+1); +} + +enum MixFields { + IF_CPUARM(MIX_FIELD_NAME) + MIX_FIELD_SOURCE, + MIX_FIELD_WEIGHT, + MIX_FIELD_OFFSET, + CASE_9X(MIX_FIELD_TRIM) + IF_CURVES(MIX_FIELD_CURVE) + IF_FLIGHT_MODES(MIX_FIELD_FLIGHT_PHASE) + MIX_FIELD_SWITCH, + MIX_FIELD_WARNING, + MIX_FIELD_MLTPX, + MIX_FIELD_DELAY_UP, + MIX_FIELD_DELAY_DOWN, + MIX_FIELD_SLOW_UP, + MIX_FIELD_SLOW_DOWN, + MIX_FIELD_COUNT +}; + +void gvarWeightItem(xcoord_t x, uint8_t y, MixData *md, uint8_t attr, uint8_t event) +{ + u_int8int16_t weight; + MD_WEIGHT_TO_UNION(md, weight); + weight.word = GVAR_MENU_ITEM(x, y, weight.word, -500, 500, attr, 0, event); + MD_UNION_TO_WEIGHT(weight, md); +} + +void menuModelMixOne(uint8_t event) +{ +#if defined(PCBTARANIS) + if (event == EVT_KEY_LONG(KEY_MENU)) { + pushMenu(menuChannelsView); + killEvents(event); + return; + } +#endif + + TITLE(s_currCh ? STR_INSERTMIX : STR_EDITMIX); + MixData *md2 = mixAddress(s_currIdx) ; + putsChn(lcdLastPos+1*FW, 0, md2->destCh+1,0); + +#if defined(ROTARY_ENCODERS) +#if defined(CURVES) + if ((m_posVert == MIX_FIELD_TRIM && md2->srcRaw > NUM_STICKS) || (m_posVert == MIX_FIELD_CURVE && md2->curveMode == MODE_CURVE)) +#else + if (m_posVert == MIX_FIELD_TRIM && md2->srcRaw > NUM_STICKS) +#endif + SUBMENU_NOTITLE(MIX_FIELD_COUNT, {IF_CPUARM(0) 0, 0, 0, CASE_9X(0) IF_CURVES(0) IF_FLIGHT_MODES((MAX_PHASES-1) | NAVIGATION_LINE_BY_LINE) 0, 0 /*, ...*/}) + else + SUBMENU_NOTITLE(MIX_FIELD_COUNT, {IF_CPUARM(0) 0, 0, 0, CASE_9X(1) IF_CURVES(1) IF_FLIGHT_MODES((MAX_PHASES-1) | NAVIGATION_LINE_BY_LINE) 0, 0 /*, ...*/}); +#else + SUBMENU_NOTITLE(MIX_FIELD_COUNT, {IF_CPUARM(0) 0, 0, 0, CASE_9X(1) IF_CURVES(1) IF_FLIGHT_MODES((MAX_PHASES-1) | NAVIGATION_LINE_BY_LINE) 0, 0 /*, ...*/}); +#endif + +#if MENU_COLUMNS > 1 + lcd_vline(MENU_COLUMN2_X-4, FH+1, LCD_H-FH-1); +#endif + + int8_t sub = m_posVert; + int8_t editMode = s_editMode; + + for (uint8_t k=0; k 1 + uint8_t y; + uint8_t COLUMN_X; + if (k >= LCD_LINES-1) { + y = 1 + (k-LCD_LINES+2)*FH; + COLUMN_X = MENU_COLUMN2_X; + } + else { + y = 1 + (k+1)*FH; + COLUMN_X = 0; + } + int8_t i = k; +#else + uint8_t y = 1 + (k+1)*FH; + int8_t i = k + s_pgOfs; +#endif + + uint8_t attr = (sub==i ? (editMode>0 ? BLINK|INVERS : INVERS) : 0); + switch(i) { +#if defined(CPUARM) + case MIX_FIELD_NAME: + editSingleName(COLUMN_X+MIXES_2ND_COLUMN, y, STR_MIXNAME, md2->name, sizeof(md2->name), event, attr); + break; +#endif + case MIX_FIELD_SOURCE: + lcd_putsColumnLeft(COLUMN_X, y, NO_INDENT(STR_SOURCE)); + putsMixerSource(COLUMN_X+MIXES_2ND_COLUMN, y, md2->srcRaw, STREXPANDED|attr); + if (attr) CHECK_INCDEC_MODELSOURCE(event, md2->srcRaw, 1, MIXSRC_LAST); + break; + case MIX_FIELD_WEIGHT: + lcd_putsColumnLeft(COLUMN_X, y, STR_WEIGHT); + gvarWeightItem(COLUMN_X+MIXES_2ND_COLUMN, y, md2, attr|LEFT, event); + break; + case MIX_FIELD_OFFSET: + { + lcd_putsColumnLeft(COLUMN_X, y, NO_INDENT(STR_OFFSET)); + u_int8int16_t offset; + MD_OFFSET_TO_UNION(md2, offset); + offset.word = GVAR_MENU_ITEM(COLUMN_X+MIXES_2ND_COLUMN, y, offset.word, GV_RANGELARGE_NEG, GV_RANGELARGE, attr|LEFT, 0, event); + MD_UNION_TO_OFFSET(offset, md2); + break; + } + +#if !defined(PCBTARANIS) + case MIX_FIELD_TRIM: + { + uint8_t not_stick = (md2->srcRaw > NUM_STICKS); + int8_t carryTrim = -md2->carryTrim; + lcd_putsColumnLeft(COLUMN_X, y, STR_TRIM); +#if LCD_W >= 212 && defined(TRANSLATIONS_FR) + lcd_putsiAtt((not_stick ? COLUMN_X+MIXES_2ND_COLUMN : COLUMN_X+11*FW-3), y, STR_VMIXTRIMS, (not_stick && carryTrim == 0) ? 0 : carryTrim+1, m_posHorz==0 ? attr : 0); +#else + lcd_putsiAtt((not_stick ? COLUMN_X+MIXES_2ND_COLUMN : COLUMN_X+6*FW-3), y, STR_VMIXTRIMS, (not_stick && carryTrim == 0) ? 0 : carryTrim+1, m_posHorz==0 ? attr : 0); +#endif + if (attr && m_posHorz==0 && (not_stick || editMode>0)) md2->carryTrim = -checkIncDecModel(event, carryTrim, not_stick ? TRIM_ON : -TRIM_OFF, -TRIM_AIL); + if (!not_stick) { + lcd_puts(COLUMN_X+MIXES_2ND_COLUMN, y, STR_DREX); + menu_lcd_onoff(COLUMN_X+MIXES_2ND_COLUMN+5*FW, y, !md2->noExpo, m_posHorz==1 ? attr : 0); + if (attr && m_posHorz==1 && editMode>0) md2->noExpo = !checkIncDecModel(event, !md2->noExpo, 0, 1); + } + else if (attr) { + REPEAT_LAST_CURSOR_MOVE(); + } + break; + } +#endif + +#if defined(CURVES) + case MIX_FIELD_CURVE: + { + lcd_putsColumnLeft(COLUMN_X, y, STR_CURVE); +#if defined(PCBTARANIS) + editCurveRef(COLUMN_X+MIXES_2ND_COLUMN, y, md2->curve, event, attr); +#else + int8_t curveParam = md2->curveParam; + if (md2->curveMode == MODE_CURVE) { + putsCurve(COLUMN_X+MIXES_2ND_COLUMN, y, curveParam, attr); + if (attr) { + if (event==EVT_KEY_LONG(KEY_ENTER) && (curveParam<0 || curveParam>=CURVE_BASE)){ + s_curveChan = (curveParam<0 ? -curveParam-1 : curveParam-CURVE_BASE); + pushMenu(menuModelCurveOne); + } + else { + CHECK_INCDEC_MODELVAR(event, md2->curveParam, -MAX_CURVES, CURVE_BASE+MAX_CURVES-1); + if (md2->curveParam == 0) + md2->curveMode = MODE_DIFFERENTIAL; +#if defined(ROTARY_ENCODER_NAVIGATION) || defined(PCBTARANIS) + MOVE_CURSOR_FROM_HERE(); +#else + m_posHorz = 0; +#endif + } + } + } + else { + lcd_putsAtt(COLUMN_X+MIXES_2ND_COLUMN, y, PSTR("Diff"), m_posHorz==0 ? attr : 0); + md2->curveParam = GVAR_MENU_ITEM(COLUMN_X+MIXES_2ND_COLUMN+5*FW, y, curveParam, -100, 100, LEFT|(m_posHorz==1 ? attr : 0), 0, editMode>0 ? event : 0); + if (attr && editMode>0 && m_posHorz==0) { + int8_t tmp = 0; + CHECK_INCDEC_MODELVAR(event, tmp, -1, 1); + if (tmp != 0) { + md2->curveMode = MODE_CURVE; + md2->curveParam = tmp; + } + } + } +#endif + break; + } +#endif +#if defined(FLIGHT_MODES) + case MIX_FIELD_FLIGHT_PHASE: + md2->phases = editFlightModes(COLUMN_X+MIXES_2ND_COLUMN, y, event, md2->phases, attr); + break; +#endif + case MIX_FIELD_SWITCH: + md2->swtch = switchMenuItem(COLUMN_X+MIXES_2ND_COLUMN, y, md2->swtch, attr, event); + break; + case MIX_FIELD_WARNING: + lcd_putsColumnLeft(COLUMN_X+MIXES_2ND_COLUMN, y, STR_MIXWARNING); + if (md2->mixWarn) + lcd_outdezAtt(COLUMN_X+MIXES_2ND_COLUMN, y, md2->mixWarn, attr|LEFT); + else + lcd_putsAtt(COLUMN_X+MIXES_2ND_COLUMN, y, STR_OFF, attr); + if (attr) CHECK_INCDEC_MODELVAR_ZERO(event, md2->mixWarn, 3); + break; + case MIX_FIELD_MLTPX: + md2->mltpx = selectMenuItem(COLUMN_X+MIXES_2ND_COLUMN, y, STR_MULTPX, STR_VMLTPX, md2->mltpx, 0, 2, attr, event); + break; + case MIX_FIELD_DELAY_UP: + md2->delayUp = EDIT_DELAY(COLUMN_X, y, event, attr, STR_DELAYUP, md2->delayUp); + break; + case MIX_FIELD_DELAY_DOWN: + md2->delayDown = EDIT_DELAY(COLUMN_X, y, event, attr, STR_DELAYDOWN, md2->delayDown); + break; + case MIX_FIELD_SLOW_UP: + md2->speedUp = EDIT_DELAY(COLUMN_X, y, event, attr, STR_SLOWUP, md2->speedUp); + break; + case MIX_FIELD_SLOW_DOWN: + md2->speedDown = EDIT_DELAY(COLUMN_X, y, event, attr, STR_SLOWDOWN, md2->speedDown); + break; + } + } +} + +static uint8_t s_maxLines = 8; +static uint8_t s_copySrcIdx; +static uint8_t s_copySrcCh; + +#define _STR_MAX(x) PSTR("/" #x) +#define STR_MAX(x) _STR_MAX(x) + +#define MIX_LINE_SRC_POS 4*FW-1 + +#if LCD_W >= 212 + #define EXPO_LINE_WEIGHT_POS 8*FW+1 + #define EXPO_LINE_SRC_POS 9*FW-2 + #define EXPO_LINE_CURVE_POS 12*FW+4 + #define EXPO_LINE_SWITCH_POS 17*FW-1 + #define EXPO_LINE_SELECT_POS 5*FW+2 + #define EXPO_LINE_FM_POS LCD_W-LEN_EXPOMIX_NAME*FW-MENUS_SCROLLBAR_WIDTH-FW-1 + #define EXPO_LINE_NAME_POS LCD_W-LEN_EXPOMIX_NAME*FW-MENUS_SCROLLBAR_WIDTH + #define MIX_LINE_WEIGHT_POS 11*FW+5 + #define MIX_LINE_CURVE_POS 12*FW+4 + #define MIX_LINE_SWITCH_POS 16*FW+1 + #define MIX_LINE_DELAY_POS 19*FW+2 +#elif defined(CPUARM) + #define EXPO_LINE_WEIGHT_POS 7*FW-1 + #define EXPO_LINE_EXPO_POS 10*FW+5 + #define EXPO_LINE_SWITCH_POS 11*FW+2 + #define EXPO_LINE_SIDE_POS 14*FW+2 + #define EXPO_LINE_SELECT_POS 24 + #define EXPO_LINE_FM_POS + #define EXPO_LINE_NAME_POS LCD_W-sizeof(ed->name)*FW-MENUS_SCROLLBAR_WIDTH + #define MIX_LINE_WEIGHT_POS 11*FW+3 + #define MIX_LINE_CURVE_POS 12*FW+2 + #define MIX_LINE_SWITCH_POS 16*FW + #define MIX_LINE_DELAY_POS 19*FW+7 +#else + #define EXPO_LINE_WEIGHT_POS 7*FW-1 + #define EXPO_LINE_EXPO_POS 11*FW + #define EXPO_LINE_SWITCH_POS 11*FW+4 + #if MAX_PHASES == 6 + #define EXPO_LINE_SIDE_POS 15*FW + #else + #define EXPO_LINE_SIDE_POS 15*FW+2 + #endif + #define EXPO_LINE_FM_POS LCD_W-FW-MENUS_SCROLLBAR_WIDTH + #define EXPO_LINE_SELECT_POS 24 + #define MIX_LINE_WEIGHT_POS 11*FW+3 + #define MIX_LINE_CURVE_POS 12*FW+2 + #define MIX_LINE_SWITCH_POS 16*FW + #define MIX_LINE_DELAY_POS 19*FW+7 +#endif + +#if defined(NAVIGATION_MENUS) +void onExpoMixMenu(const char *result) +{ + bool expo = (g_menuStack[g_menuStackPtr] == menuModelExposAll); + uint8_t chn = (expo ? expoAddress(s_currIdx)->chn+1 : mixAddress(s_currIdx)->destCh+1); + + if (result == STR_EDIT) { + pushMenu(expo ? menuModelExpoOne : menuModelMixOne); + } + else if (result == STR_INSERT_BEFORE || result == STR_INSERT_AFTER) { + if (!reachExpoMixCountLimit(expo)) { + s_currCh = chn; + if (result == STR_INSERT_AFTER) { s_currIdx++; m_posVert++; } + insertExpoMix(expo, s_currIdx); + pushMenu(expo ? menuModelExpoOne : menuModelMixOne); + } + } + else if (result == STR_COPY || result == STR_MOVE) { + s_copyMode = (result == STR_COPY ? COPY_MODE : MOVE_MODE); + s_copySrcIdx = s_currIdx; + s_copySrcCh = chn; + s_copySrcRow = m_posVert; + } + else if (result == STR_DELETE) { + deleteExpoMix(expo, s_currIdx); + } +} +#endif + +#if LCD_W >= 212 +void displayHeaderChannelName(uint8_t ch) +{ + uint8_t len = zlen(g_model.limitData[ch-1].name, sizeof(g_model.limitData[ch-1].name)); + if (len) { + lcd_putc(17*FW, 0, ' '); + lcd_putsnAtt(18*FW, 0, g_model.limitData[ch-1].name, len, ZCHAR); + lcd_putc(18*FW+len*FW, 0, ' '); + } +} +#endif + +void menuModelExpoMix(uint8_t expo, uint8_t event) +{ + uint8_t sub = m_posVert; + + if (s_editMode > 0) + s_editMode = 0; + + uint8_t chn = (expo ? expoAddress(s_currIdx)->chn+1 : mixAddress(s_currIdx)->destCh+1); + + switch (event) + { + case EVT_ENTRY: + case EVT_ENTRY_UP: + s_copyMode = 0; + s_copyTgtOfs = 0; + break; + case EVT_KEY_LONG(KEY_EXIT): + if (s_copyMode && s_copyTgtOfs == 0) { + deleteExpoMix(expo, s_currIdx); + killEvents(event); + event = 0; + } + // no break +#if defined(ROTARY_ENCODER_NAVIGATION) + case EVT_ROTARY_LONG: + if (s_copyMode) { + killEvents(event); + } +#endif + case EVT_KEY_BREAK(KEY_EXIT): + if (s_copyMode) { + if (s_copyTgtOfs) { + // cancel the current copy / move operation + if (s_copyMode == COPY_MODE) { + deleteExpoMix(expo, s_currIdx); + } + else { + do { + swapExpoMix(expo, s_currIdx, s_copyTgtOfs > 0); + s_copyTgtOfs += (s_copyTgtOfs < 0 ? +1 : -1); + } while (s_copyTgtOfs != 0); + eeDirty(EE_MODEL); + } + m_posVert = s_copySrcRow; + s_copyTgtOfs = 0; + } + s_copyMode = 0; + event = 0; + } + break; + case EVT_KEY_BREAK(KEY_ENTER): + if (sub != 0 && (!s_currCh || (s_copyMode && !s_copyTgtOfs)) && !READ_ONLY()) { + s_copyMode = (s_copyMode == COPY_MODE ? MOVE_MODE : COPY_MODE); + s_copySrcIdx = s_currIdx; + s_copySrcCh = chn; + s_copySrcRow = sub; + break; + } + // no break + + CASE_EVT_ROTARY_BREAK + case EVT_KEY_LONG(KEY_ENTER): + killEvents(event); + if (s_copyTgtOfs) { + s_copyMode = 0; + s_copyTgtOfs = 0; + } + else if (sub != 0) { + if (READ_ONLY()) { + if (!s_currCh) { + pushMenu(expo ? menuModelExpoOne : menuModelMixOne); + return; + } + } + else { + if (s_copyMode) s_currCh = 0; +#if defined(NAVIGATION_MENUS) + if (s_currCh) { + if (reachExpoMixCountLimit(expo)) break; + insertExpoMix(expo, s_currIdx); + pushMenu(expo ? menuModelExpoOne : menuModelMixOne); + s_copyMode = 0; + return; + } + else { + event = 0; + s_copyMode = 0; + MENU_ADD_ITEM(STR_EDIT); + MENU_ADD_ITEM(STR_INSERT_BEFORE); + MENU_ADD_ITEM(STR_INSERT_AFTER); + MENU_ADD_ITEM(STR_COPY); + MENU_ADD_ITEM(STR_MOVE); + MENU_ADD_ITEM(STR_DELETE); + menuHandler = onExpoMixMenu; + } +#else + if (s_currCh) { + if (reachExpoMixCountLimit(expo)) break; + insertExpoMix(expo, s_currIdx); + } + pushMenu(expo ? menuModelExpoOne : menuModelMixOne); + s_copyMode = 0; + return; +#endif + } + } + break; + case EVT_KEY_LONG(KEY_LEFT): + case EVT_KEY_LONG(KEY_RIGHT): + if (s_copyMode && !s_copyTgtOfs) { + if (reachExpoMixCountLimit(expo)) break; + s_currCh = chn; + if (event == EVT_KEY_LONG(KEY_RIGHT)) { s_currIdx++; m_posVert++; } + insertExpoMix(expo, s_currIdx); + pushMenu(expo ? menuModelExpoOne : menuModelMixOne); + s_copyMode = 0; + killEvents(event); + return; + } + break; +#if defined(ROTARY_ENCODER_NAVIGATION) + case EVT_ROTARY_LEFT: + case EVT_ROTARY_RIGHT: +#endif + case EVT_KEY_FIRST(KEY_MOVE_UP): + case EVT_KEY_REPT(KEY_MOVE_UP): + case EVT_KEY_FIRST(KEY_MOVE_DOWN): + case EVT_KEY_REPT(KEY_MOVE_DOWN): + if (s_copyMode) { + uint8_t key = (event & 0x1f); + uint8_t next_ofs = ((IS_ROTARY_UP(event) || key==KEY_MOVE_UP) ? s_copyTgtOfs - 1 : s_copyTgtOfs + 1); + + if (s_copyTgtOfs==0 && s_copyMode==COPY_MODE) { + // insert a mix on the same channel (just above / just below) + if (reachExpoMixCountLimit(expo)) break; + copyExpoMix(expo, s_currIdx); + if (IS_ROTARY_DOWN(event) || key==KEY_MOVE_DOWN) s_currIdx++; + else if (sub-s_pgOfs >= 6) s_pgOfs++; + } + else if (next_ofs==0 && s_copyMode==COPY_MODE) { + // delete the mix + deleteExpoMix(expo, s_currIdx); + if (IS_ROTARY_UP(event) || key==KEY_MOVE_UP) s_currIdx--; + } + else { + // only swap the mix with its neighbor + if (!swapExpoMix(expo, s_currIdx, IS_ROTARY_UP(event) || key==KEY_MOVE_UP)) break; + eeDirty(EE_MODEL); + } + + s_copyTgtOfs = next_ofs; + } + break; + } + + lcd_outdezAtt(FW*max(sizeof(TR_MENUINPUTS), sizeof(TR_MIXER))+FW+FW/2, 0, getExpoMixCount(expo)); + lcd_puts(FW*max(sizeof(TR_MENUINPUTS), sizeof(TR_MIXER))+FW+FW/2, 0, expo ? STR_MAX(MAX_EXPOS) : STR_MAX(MAX_MIXERS)); + SIMPLE_MENU(expo ? STR_MENUINPUTS : STR_MIXER, menuTabModel, expo ? e_InputsAll : e_MixAll, s_maxLines); + + sub = m_posVert; + s_currCh = 0; + uint8_t cur = 1; + uint8_t i = 0; + + for (uint8_t ch=1; ch<=(expo ? NUM_INPUTS : NUM_CHNOUT); ch++) { + void *pointer = NULL; MixData * &md = (MixData * &)pointer; ExpoData * &ed = (ExpoData * &)pointer; + uint8_t y = 1+(cur-s_pgOfs)*FH; + if (expo ? (ichn+1 == ch && EXPO_VALID(ed)) : (isrcRaw && md->destCh+1 == ch)) { + if (s_pgOfs < cur && cur-s_pgOfs < LCD_LINES) { + if (expo) { +#if defined(PCBTARANIS) + putsMixerSource(0, y, ch, 0); +#else + putsMixerSource(0, y, MIXSRC_Rud+ch-1, 0); +#endif + } + else { + putsChn(0, y, ch, 0); // show CHx + } + } + uint8_t mixCnt = 0; + do { + if (s_copyMode) { + if (s_copyMode == MOVE_MODE && s_pgOfs < cur && cur-s_pgOfs < 8 && s_copySrcCh == ch && s_copyTgtOfs != 0 && i == (s_copySrcIdx + (s_copyTgtOfs<0))) { + lcd_rect(expo ? 18 : 22, y-1, expo ? LCD_W-18 : LCD_W-22, 9, DOTTED); + cur++; y+=FH; + } + if (s_currIdx == i) { + sub = m_posVert = cur; + s_currCh = ch; + } + } + else if (sub == cur) { + s_currIdx = i; + } + if (s_pgOfs < cur && cur-s_pgOfs < 8) { + uint8_t attr = ((s_copyMode || sub != cur) ? 0 : INVERS); + if (expo) { + ed->weight = GVAR_MENU_ITEM(EXPO_LINE_WEIGHT_POS, y, ed->weight, MIN_EXPO_WEIGHT, 100, attr | (isExpoActive(i) ? BOLD : 0), 0, event); + +#if defined(PCBTARANIS) + putsMixerSource(EXPO_LINE_SRC_POS, y, ed->srcRaw, 0); +#endif + +#if defined(PCBTARANIS) + putsCurveRef(EXPO_LINE_CURVE_POS, y, ed->curve, 0); +#else + if (ed->curveMode == MODE_CURVE) + putsCurve(EXPO_LINE_EXPO_POS-3*FW, y, ed->curveParam); + else + displayGVar(EXPO_LINE_EXPO_POS, y, ed->curveParam, -100, 100); +#endif + + putsSwitches(EXPO_LINE_SWITCH_POS, y, ed->swtch, 0); + +#if !defined(PCBTARANIS) + if (ed->mode!=3) lcd_putc(EXPO_LINE_SIDE_POS, y, ed->mode == 2 ? 126 : 127); +#endif + +#if defined(CPUARM) && LCD_W >= 212 + displayFlightModes(EXPO_LINE_FM_POS, y, ed->phases); + if (ed->name[0]) lcd_putsnAtt(EXPO_LINE_NAME_POS, y, ed->name, sizeof(ed->name), ZCHAR | (isExpoActive(i) ? BOLD : 0)); +#elif defined(CPUARM) + if (ed->name[0]) lcd_putsnAtt(EXPO_LINE_NAME_POS, y, ed->name, sizeof(ed->name), ZCHAR | (isExpoActive(i) ? BOLD : 0)); +#else + displayFlightModes(EXPO_LINE_FM_POS, y, ed->phases); +#endif + } + else { +#if LCD_W >= 212 + if (attr) { + displayHeaderChannelName(ch); + } +#endif + + if (mixCnt > 0) lcd_putsiAtt(FW, y, STR_VMLTPX2, md->mltpx, 0); + + putsMixerSource(MIX_LINE_SRC_POS, y, md->srcRaw, isMixActive(i) ? BOLD : 0); + + gvarWeightItem(MIX_LINE_WEIGHT_POS, y, md, attr, event); + +#if LCD_W >= 212 + displayFlightModes(EXPO_LINE_FM_POS, y, md->phases); +#endif + +#if defined(CPUARM) + if (md->name[0]) { + lcd_putsnAtt(EXPO_LINE_NAME_POS, y, md->name, sizeof(md->name), ZCHAR | (isMixActive(i) ? BOLD : 0)); + } +#if LCD_W < 212 + else +#endif +#endif + { +#if defined(PCBTARANIS) +#else + if (md->curveParam) { + if (md->curveMode == MODE_CURVE) + putsCurve(MIX_LINE_CURVE_POS, y, md->curveParam); + else + displayGVar(MIX_LINE_CURVE_POS+3*FW, y, md->curveParam, -100, 100); + } +#endif + if (md->swtch) putsSwitches(MIX_LINE_SWITCH_POS, y, md->swtch); + + char cs = ' '; + if (md->speedDown || md->speedUp) + cs = 'S'; + if ((md->delayUp || md->delayDown)) + cs = (cs =='S' ? '*' : 'D'); + lcd_putc(MIX_LINE_DELAY_POS, y, cs); + } + } + if (s_copyMode) { + if ((s_copyMode==COPY_MODE || s_copyTgtOfs == 0) && s_copySrcCh == ch && i == (s_copySrcIdx + (s_copyTgtOfs<0))) { + /* draw a border around the raw on selection mode (copy/move) */ + lcd_rect(expo ? EXPO_LINE_SELECT_POS : 22, y-1, expo ? (LCD_W-EXPO_LINE_SELECT_POS) : (LCD_W-22), 9, s_copyMode == COPY_MODE ? SOLID : DOTTED); + } + if (cur == sub) { + /* invert the raw when it's the current one */ + lcd_filled_rect(expo ? EXPO_LINE_SELECT_POS+1 : 23, y, expo ? (LCD_W-EXPO_LINE_SELECT_POS-2) : (LCD_W-24), 7); + } + } + } + cur++; y+=FH; mixCnt++; i++; if (expo) ed++; else md++; + } while (expo ? (ichn+1 == ch && EXPO_VALID(ed)) : (isrcRaw && md->destCh+1 == ch)); + if (s_copyMode == MOVE_MODE && s_pgOfs < cur && cur-s_pgOfs < LCD_LINES && s_copySrcCh == ch && i == (s_copySrcIdx + (s_copyTgtOfs<0))) { + lcd_rect(expo ? EXPO_LINE_SELECT_POS : 22, y-1, expo ? LCD_W-EXPO_LINE_SELECT_POS : LCD_W-22, 9, DOTTED); + cur++; y+=FH; + } + } + else { + uint8_t attr = 0; + if (sub == cur) { + s_currIdx = i; + s_currCh = ch; + if (!s_copyMode) { + attr = INVERS; + } + } + if (s_pgOfs < cur && cur-s_pgOfs < LCD_LINES) { + if (expo) { +#if defined(PCBTARANIS) + putsMixerSource(0, y, ch, attr); +#else + putsMixerSource(0, y, MIXSRC_Rud+ch-1, attr); +#endif + } + else { + putsChn(0, y, ch, attr); // show CHx +#if LCD_W >= 212 + if (attr) { + displayHeaderChannelName(ch); + } +#endif + } + if (s_copyMode == MOVE_MODE && s_copySrcCh == ch) { + lcd_rect(expo ? EXPO_LINE_SELECT_POS : 22, y-1, expo ? (LCD_W-EXPO_LINE_SELECT_POS) : (LCD_W-22), 9, DOTTED); + } + } + cur++; y+=FH; + } + } + s_maxLines = cur; + if (sub >= s_maxLines-1) m_posVert = s_maxLines-1; +} + +void menuModelExposAll(uint8_t event) +{ + return menuModelExpoMix(1, event); +} + +void menuModelMixAll(uint8_t event) +{ + return menuModelExpoMix(0, event); +} + +bool thrOutput(uint8_t ch) +{ + for (uint8_t i=0; idestCh==ch && mix->srcRaw==MIXSRC_Thr) + return true; + } + return false; +} + +enum LimitsItems { +#if defined(PCBTARANIS) + ITEM_LIMITS_CH_NAME, +#endif + ITEM_LIMITS_OFFSET, + ITEM_LIMITS_MIN, + ITEM_LIMITS_MAX, + ITEM_LIMITS_DIRECTION, +#if defined(PCBTARANIS) && defined(CURVES) + ITEM_LIMITS_CURVE, +#endif +#if defined(PPM_CENTER_ADJUSTABLE) + ITEM_LIMITS_PPM_CENTER, +#endif +#if defined(PPM_LIMITS_SYMETRICAL) + ITEM_LIMITS_SYMETRICAL, +#endif + ITEM_LIMITS_COUNT, + ITEM_LIMITS_MAXROW = ITEM_LIMITS_COUNT-1 +}; + +#if defined(PCBTARANIS) + #define LIMITS_NAME_POS 4*FW + #define LIMITS_OFFSET_POS 14*FW+4 + #define LIMITS_MIN_POS 20*FW-3 + #if defined(PPM_CENTER_ADJUSTABLE) + #define LIMITS_DIRECTION_POS 20*FW-3 + #define LIMITS_MAX_POS 24*FW+2 + #define LIMITS_REVERT_POS 25*FW-1 + #define LIMITS_CURVE_POS 27*FW-1 + #define LIMITS_PPM_CENTER_POS 34*FW + #else + #define LIMITS_DIRECTION_POS 21*FW + #define LIMITS_MAX_POS 26*FW + #define LIMITS_REVERT_POS 27*FW + #define LIMITS_CURVE_POS 32*FW + #endif +#else + #if defined(PPM_UNIT_US) + #define LIMITS_MIN_POS 12*FW+1 + #else + #define LIMITS_MIN_POS 12*FW + #endif + #define LIMITS_OFFSET_POS 8*FW + #if defined(PPM_LIMITS_SYMETRICAL) + #if defined(PPM_CENTER_ADJUSTABLE) + #define LIMITS_MAX_POS 15*FW + #define LIMITS_REVERT_POS 16*FW-3 + #define LIMITS_PPM_CENTER_POS 20*FW+1 + #else + #define LIMITS_DIRECTION_POS 12*FW+4 + #define LIMITS_MAX_POS 16*FW+4 + #define LIMITS_REVERT_POS 17*FW + #endif + #else + #if defined(PPM_CENTER_ADJUSTABLE) + #define LIMITS_MAX_POS 16*FW + #define LIMITS_REVERT_POS 17*FW-2 + #define LIMITS_PPM_CENTER_POS 21*FW+2 + #else + #define LIMITS_MAX_POS 17*FW + #define LIMITS_REVERT_POS 18*FW + #define LIMITS_DIRECTION_POS 12*FW+5 + #endif + #endif +#endif + +#if defined(CPUARM) + #define LIMITS_MIN_MAX_OFFSET 1000 + #define CONVERT_US_MIN_MAX(x) (((x)*128)/250) + #define MIN_MAX_LIMIT (10*limit) + #define MIN_MAX_ATTR attr|PREC1 +#else + #define LIMITS_MIN_MAX_OFFSET 100 + #define CONVERT_US_MIN_MAX(x) ((int16_t(x)*128)/25) + #define MIN_MAX_LIMIT (limit) + #define MIN_MAX_ATTR attr +#endif + +#if defined(PPM_UNIT_US) + #define MIN_MAX_DISPLAY(x) CONVERT_US_MIN_MAX(x) + #undef MIN_MAX_ATTR + #define MIN_MAX_ATTR attr +#else + #define MIN_MAX_DISPLAY(x) (x) +#endif + +#if defined(PCBTARANIS) +void onLimitsMenu(const char *result) +{ + uint8_t ch = m_posVert - 1; + + if (result == STR_RESET) { + LimitData *ld = limitAddress(ch); + ld->min = 0; + ld->max = 0; + ld->offset = 0; + ld->ppmCenter = 0; + ld->revert = false; + ld->curve = 0; + } + else if (result == STR_COPY_TRIMS_TO_OFFSET) { + copyTrimsToOffset(ch); + } +} +#endif + +void menuModelLimits(uint8_t event) +{ + uint8_t sub = m_posVert - 1; + + if (sub < NUM_CHNOUT) { +#if defined(PPM_CENTER_ADJUSTABLE) || defined(PPM_UNIT_US) + lcd_outdezAtt(13*FW, 0, PPM_CH_CENTER(sub)+channelOutputs[sub]/2, 0); + lcd_puts(13*FW, 0, STR_US); +#else + lcd_outdezAtt(13*FW, 0, calcRESXto1000(channelOutputs[sub]), PREC1); +#endif + } + +#if defined(CPUARM) + MENU(STR_MENULIMITS, menuTabModel, e_Limits, 1+NUM_CHNOUT+1, {0, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, 0}); +#else + MENU(STR_MENULIMITS, menuTabModel, e_Limits, 1+NUM_CHNOUT+1, {0, ITEM_LIMITS_MAXROW, ITEM_LIMITS_MAXROW, ITEM_LIMITS_MAXROW, ITEM_LIMITS_MAXROW, ITEM_LIMITS_MAXROW, ITEM_LIMITS_MAXROW, ITEM_LIMITS_MAXROW, ITEM_LIMITS_MAXROW, ITEM_LIMITS_MAXROW, ITEM_LIMITS_MAXROW, ITEM_LIMITS_MAXROW, ITEM_LIMITS_MAXROW, ITEM_LIMITS_MAXROW, ITEM_LIMITS_MAXROW, ITEM_LIMITS_MAXROW, ITEM_LIMITS_MAXROW, 0}); +#endif + +#if LCD_W >= 212 + if (sub=0) { + displayColumnHeader(STR_LIMITS_HEADERS, m_posHorz); + } +#endif + + if (s_warning_result) { + s_warning_result = 0; + LimitData *ld = limitAddress(sub); + ld->revert = !ld->revert; + eeDirty(EE_MODEL); + } + + for (uint8_t i=0; i= 212 || !defined(PPM_CENTER_ADJUSTABLE) + int16_t v = (ld->revert) ? -ld->offset : ld->offset; + char swVal = '-'; // '-', '<', '>' + if((channelOutputs[k] - v) > 50) swVal = (ld->revert ? 127 : 126); // Switch to raw inputs? - remove trim! + if((channelOutputs[k] - v) < -50) swVal = (ld->revert ? 126 : 127); + putsChn(0, y, k+1, 0); + lcd_putc(LIMITS_DIRECTION_POS, y, swVal); +#endif + +#if defined(PPM_CENTER_ADJUSTABLE) + int8_t limit = ((g_model.extendedLimits && !limitAddress(k)->ppmCenter) ? 125 : 100); +#else + int8_t limit = (g_model.extendedLimits ? 125 : 100); +#endif + +#if defined(PCBTARANIS) + putsChn(0, y, k+1, (sub==k && m_posHorz < 0) ? INVERS : 0); + if (sub==k && m_posHorz < 0 && event==EVT_KEY_LONG(KEY_ENTER)) { + killEvents(event); + MENU_ADD_ITEM(STR_RESET); + MENU_ADD_ITEM(STR_COPY_TRIMS_TO_OFFSET); + menuHandler = onLimitsMenu; + } +#else + putsChn(0, y, k+1, 0); +#endif + + for (uint8_t j=0; j0) ? BLINK|INVERS : INVERS) : 0); + uint8_t active = (attr && (s_editMode>0 || p1valdiff)) ; + if (active) STICK_SCROLL_DISABLE(); + switch(j) + { +#if defined(PCBTARANIS) + case ITEM_LIMITS_CH_NAME: + editName(LIMITS_NAME_POS, y, ld->name, sizeof(ld->name), event, attr); + break; +#endif + + case ITEM_LIMITS_OFFSET: +#if defined(PCBTARANIS) + ld->offset = GVAR_MENU_ITEM(LIMITS_OFFSET_POS, y, MIN_MAX_DISPLAY(ld->offset), -1000, 1000, attr|PREC1, 0, event); +#else + #if defined(PPM_UNIT_US) + lcd_outdezAtt(LIMITS_OFFSET_POS, y, ((int32_t)ld->offset*128) / 25, attr|PREC1); + #else + lcd_outdezAtt(LIMITS_OFFSET_POS, y, ld->offset, attr|PREC1); + #endif + if (active) { + ld->offset = checkIncDec(event, ld->offset, -1000, 1000, EE_MODEL|NO_INCDEC_MARKS); + } + else if (attr && event==EVT_KEY_LONG(KEY_MENU)) { + copyTrimsToOffset(k); + s_editMode = 0; + } +#endif + break; + + case ITEM_LIMITS_MIN: +#if defined(CPUARM) + ld->min = LIMITS_MIN_MAX_OFFSET + GVAR_MENU_ITEM(LIMITS_MIN_POS, y, MIN_MAX_DISPLAY(ld->min-LIMITS_MIN_MAX_OFFSET), -MIN_MAX_LIMIT, 0, MIN_MAX_ATTR, DBLKEYS_1000, event); +#else + lcd_outdezAtt(LIMITS_MIN_POS, y, MIN_MAX_DISPLAY(ld->min-LIMITS_MIN_MAX_OFFSET), MIN_MAX_ATTR); + if (active) ld->min = LIMITS_MIN_MAX_OFFSET + checkIncDecModel(event, ld->min-LIMITS_MIN_MAX_OFFSET, -MIN_MAX_LIMIT, 0); +#endif + break; + + case ITEM_LIMITS_MAX: +#if defined(CPUARM) + ld->max = -LIMITS_MIN_MAX_OFFSET + GVAR_MENU_ITEM(LIMITS_MAX_POS, y, MIN_MAX_DISPLAY(ld->max+LIMITS_MIN_MAX_OFFSET), 0, MIN_MAX_LIMIT, MIN_MAX_ATTR, DBLKEYS_1000, event); +#else + lcd_outdezAtt(LIMITS_MAX_POS, y, MIN_MAX_DISPLAY(ld->max+LIMITS_MIN_MAX_OFFSET), MIN_MAX_ATTR); + if (active) ld->max = -LIMITS_MIN_MAX_OFFSET + checkIncDecModelZero(event, ld->max+LIMITS_MIN_MAX_OFFSET, +MIN_MAX_LIMIT); +#endif + break; + + case ITEM_LIMITS_DIRECTION: + { + uint8_t revert = ld->revert; +#if defined(PPM_CENTER_ADJUSTABLE) + lcd_putcAtt(LIMITS_REVERT_POS, y, revert ? 127 : 126, attr); +#else + lcd_putsiAtt(LIMITS_REVERT_POS, y, STR_MMMINV, revert, attr); +#endif + if (active) { + uint8_t revert_new = checkIncDecModel(event, revert, 0, 1); + if (checkIncDec_Ret && thrOutput(k)) { + POPUP_CONFIRMATION(STR_INVERT_THR); + } + else { + ld->revert = revert_new; + } + } + break; + } + +#if defined(PCBTARANIS) && defined(CURVES) + case ITEM_LIMITS_CURVE: + putsCurve(LIMITS_CURVE_POS, y, ld->curve, attr); + if (attr && event==EVT_KEY_LONG(KEY_ENTER) && ld->curve>0) { + s_curveChan = (ld->curve<0 ? -ld->curve-1 : ld->curve-1); + pushMenu(menuModelCurveOne); + } + if (active) { + CHECK_INCDEC_MODELVAR(event, ld->curve, -MAX_CURVES, +MAX_CURVES); + } + break; +#endif + +#if defined(PPM_CENTER_ADJUSTABLE) + case ITEM_LIMITS_PPM_CENTER: + lcd_outdezAtt(LIMITS_PPM_CENTER_POS, y, PPM_CENTER+ld->ppmCenter, attr); +#pragma message("could be less restrictive!") + if (active && ld->max <= 0 && ld->min >= 0) { + CHECK_INCDEC_MODELVAR(event, ld->ppmCenter, -125, +125); + } + break; +#endif + +#if defined(PPM_LIMITS_SYMETRICAL) + case ITEM_LIMITS_SYMETRICAL: + lcd_putcAtt(LCD_W-FW-MENUS_SCROLLBAR_WIDTH, y, ld->symetrical ? '=' : '^', attr); + if (active) { + CHECK_INCDEC_MODELVAR_ZERO(event, ld->symetrical, 1); + } + break; +#endif + } + } + } +} + +#if defined(CURVES) + +#if defined(GVARS) + #define CURVE_SELECTED() (sub >= 0 && sub < MAX_CURVES) + #define GVAR_SELECTED() (sub >= MAX_CURVES) +#else + #define CURVE_SELECTED() (sub >= 0) +#endif + +void menuModelCurvesAll(uint8_t event) +{ +#if defined(GVARS) && defined(PCBSTD) + SIMPLE_MENU(STR_MENUCURVES, menuTabModel, e_CurvesAll, 1+MAX_CURVES+MAX_GVARS); +#else + SIMPLE_MENU(STR_MENUCURVES, menuTabModel, e_CurvesAll, 1+MAX_CURVES); +#endif + + int8_t sub = m_posVert - 1; + + switch (event) { +#if defined(ROTARY_ENCODER_NAVIGATION) + case EVT_ROTARY_BREAK: +#endif +#if defined(PCBTARANIS) + case EVT_KEY_BREAK(KEY_ENTER): +#else + case EVT_KEY_FIRST(KEY_RIGHT): + case EVT_KEY_FIRST(KEY_ENTER): +#endif + if (CURVE_SELECTED() && !READ_ONLY()) { + s_curveChan = sub; + pushMenu(menuModelCurveOne); + } + break; + } + + for (uint8_t i=0; i= MAX_CURVES) { + putsStrIdx(0, y, STR_GV, k-MAX_CURVES+1); + if (GVAR_SELECTED()) { + if (attr && s_editMode>0) attr |= BLINK; + lcd_outdezAtt(10*FW, y, GVAR_VALUE(k-MAX_CURVES, -1), attr); + if (attr) g_model.gvars[k-MAX_CURVES] = checkIncDec(event, g_model.gvars[k-MAX_CURVES], -1000, 1000, EE_MODEL); + } + } + else +#endif + { + putsStrIdx(0, y, STR_CV, k+1, attr); +#if defined(PCBTARANIS) + editName(4*FW, y, g_model.curveNames[k], sizeof(g_model.curveNames[k]), 0, 0); + CurveInfo & crv = g_model.curves[k]; + lcd_outdezAtt(11*FW, y, 5+crv.points, LEFT); + lcd_putsAtt(lcdLastPos, y, PSTR("pts"), 0); +#endif + } + } + + if (CURVE_SELECTED()) { + s_curveChan = sub; + DrawCurve(23); + } +} +#endif + +#if LCD_W >= 212 && defined(GVARS) && defined(FLIGHT_MODES) + +void onGVARSMenu(const char *result) +{ + int8_t sub = m_posVert - 1; + + if (result == STR_ENABLE_POPUP) { + g_model.gvars[sub].popup = true; + eeDirty(EE_MODEL); + } + else if (result == STR_DISABLE_POPUP) { + g_model.gvars[sub].popup = false; + eeDirty(EE_MODEL); + } + else if (result == STR_CLEAR) { + for (int i=0; i 6 + for (uint8_t l=0; l0) ? BLINK|INVERS : INVERS) : 0); + xcoord_t x = 12*FW + FWNUM + (j-1)*(2+3*FWNUM) - 3; + +#if MAX_GVARS == 6 + if (i==0 && j!=9) putsStrIdx(x+2, FH+1, STR_FP, j, SMLSIZE); +#elif MAX_GVARS <= 5 + if (i==0 && j!=9) putsStrIdx(x+2, 2*FH, STR_FP, j, SMLSIZE); +#endif + + switch(j) + { + case 0: + editName(4*FW-3, y, g_model.gvars[i].name, LEN_GVAR_NAME, event, attr); + break; + + default: + { + PhaseData *phase = &g_model.phaseData[j-1]; + int16_t & v = phase->gvars[i]; + int16_t vmin, vmax; + if (v > GVAR_MAX) { + uint8_t p = v - GVAR_MAX - 1; + if (p >= j-1) p++; + putsFlightPhase(x-15, y, p+1, attr|SMLSIZE); + vmin = GVAR_MAX+1; vmax = GVAR_MAX+MAX_PHASES-1; + } + else { + if (abs(v) >= 100) + lcd_outdezAtt(x, y+1, v, attr | TINSIZE); + else + lcd_outdezAtt(x, y, v, attr); + vmin = -GVAR_MAX; vmax = GVAR_MAX; + } + if (attr) { + if (event == EVT_KEY_LONG(KEY_ENTER)) { + s_editMode = 2; // TODO constant for that ... + v = (v > GVAR_MAX ? 0 : GVAR_MAX+1); + eeDirty(EE_MODEL); + } + else if (s_editMode>0 || p1valdiff) { + v = checkIncDec(event, v, vmin, vmax, EE_MODEL); + } + } + break; + } + } + } + } + +#if defined(CPUARM) + #define INCDEC_DECLARE_VARS() uint8_t incdecFlag = EE_MODEL; IsValueAvailable isValueAvailable = NULL + #define INCDEC_SET_FLAG(f) incdecFlag = (EE_MODEL|(f)) + #define INCDEC_ENABLE_CHECK(fn) isValueAvailable = fn + #define CHECK_INCDEC_PARAM(event, var, min, max) checkIncDec(event, var, min, max, incdecFlag, isValueAvailable) +#elif defined(CPUM64) + #define INCDEC_DECLARE_VARS() + #define INCDEC_SET_FLAG(f) + #define INCDEC_ENABLE_CHECK(fn) + #define CHECK_INCDEC_PARAM(event, var, min, max) checkIncDec(event, var, min, max, EE_MODEL) +#else + #define INCDEC_DECLARE_VARS() uint8_t incdecFlag = EE_MODEL + #define INCDEC_SET_FLAG(f) incdecFlag = (EE_MODEL|(f)) + #define INCDEC_ENABLE_CHECK(fn) + #define CHECK_INCDEC_PARAM(event, var, min, max) checkIncDec(event, var, min, max, incdecFlag) +#endif + + if (m_posVert > 0 && m_posHorz < 0 && event==EVT_KEY_LONG(KEY_ENTER)) { + killEvents(event); + if (g_model.gvars[sub].popup) + MENU_ADD_ITEM(STR_DISABLE_POPUP); + else + MENU_ADD_ITEM(STR_ENABLE_POPUP); + MENU_ADD_ITEM(STR_CLEAR); + menuHandler = onGVARSMenu; + } +} +#endif + +#if defined(CPUARM) + #define INCDEC_DECLARE_VARS() uint8_t incdecFlag = EE_MODEL; IsValueAvailable isValueAvailable = NULL + #define INCDEC_SET_FLAG(f) incdecFlag = (EE_MODEL|(f)) + #define INCDEC_ENABLE_CHECK(fn) isValueAvailable = fn + #define CHECK_INCDEC_PARAM(event, var, min, max) checkIncDec(event, var, min, max, incdecFlag, isValueAvailable) +#elif defined(CPUM64) + #define INCDEC_DECLARE_VARS() + #define INCDEC_SET_FLAG(f) + #define INCDEC_ENABLE_CHECK(fn) + #define CHECK_INCDEC_PARAM(event, var, min, max) checkIncDec(event, var, min, max, EE_MODEL) +#else + #define INCDEC_DECLARE_VARS() uint8_t incdecFlag = EE_MODEL + #define INCDEC_SET_FLAG(f) incdecFlag = (EE_MODEL|(f)) + #define INCDEC_ENABLE_CHECK(fn) + #define CHECK_INCDEC_PARAM(event, var, min, max) checkIncDec(event, var, min, max, incdecFlag) +#endif + +enum CustomSwitchFields { + CSW_FIELD_FUNCTION, + CSW_FIELD_V1, + CSW_FIELD_V2, + CSW_FIELD_ANDSW, +#if defined(CPUARM) + CSW_FIELD_DURATION, + CSW_FIELD_DELAY, +#endif + CSW_FIELD_COUNT, + CSW_FIELD_LAST = CSW_FIELD_COUNT-1 +}; + +#if LCD_W >= 212 + #define CSW_1ST_COLUMN (4*FW-3) + #define CSW_2ND_COLUMN (8*FW+1) + #define CSW_3RD_COLUMN (14*FW) + #define CSW_4TH_COLUMN (21*FW+1) + #define CSW_5TH_COLUMN (26*FW+1) + #define CSW_6TH_COLUMN (31*FW+1) +#else + #define CSW_1ST_COLUMN (4*FW-3) + #define CSW_2ND_COLUMN (8*FW-3) + #define CSW_3RD_COLUMN (13*FW-6) + #define CSW_4TH_COLUMN (18*FW+2) +#endif + +#if defined(CPUARM) && LCD_W < 212 + +#define CSWONE_2ND_COLUMN (11*FW) + +void menuModelCustomSwitchOne(uint8_t event) +{ + TITLE(STR_MENUCUSTOMSWITCH); + + CustomSwData * cs = cswAddress(s_currIdx); + uint8_t sw = SWSRC_SW1+s_currIdx; + putsSwitches(14*FW, 0, sw, (getSwitch(sw) ? BOLD : 0)); + SIMPLE_SUBMENU_NOTITLE(CSW_FIELD_COUNT); + + int8_t sub = m_posVert; + + for (uint8_t k=0; k0 ? BLINK|INVERS : INVERS) : 0); + uint8_t cstate = cswFamily(cs->func); + switch(i) { + case CSW_FIELD_FUNCTION: + lcd_putsLeft(y, STR_FUNC); + lcd_putsiAtt(CSWONE_2ND_COLUMN, y, STR_VCSWFUNC, cs->func, attr); + if (attr) { + CHECK_INCDEC_MODELVAR_ZERO(event, cs->func, CS_MAXF); + if (cstate != cswFamily(cs->func)) { + cs->v1 = 0; + cs->v2 = 0; + } + } + break; + case CSW_FIELD_V1: + { + lcd_putsLeft(y, STR_V1); + int8_t v1_min=0, v1_max=MIXSRC_LAST_TELEM; + if (cstate == CS_VBOOL) { + putsSwitches(CSWONE_2ND_COLUMN, y, cs->v1, attr); + v1_min = SWSRC_OFF+1; v1_max = SWSRC_ON-1; + } + else if (cstate == CS_VTIMER) { + lcd_outdezAtt(CSWONE_2ND_COLUMN, y, cs->v1+1, LEFT|attr); + v1_max = 99; + } + else { + putsMixerSource(CSWONE_2ND_COLUMN, y, cs->v1, attr); + } + if (attr) { + CHECK_INCDEC_MODELVAR(event, cs->v1, v1_min, v1_max); + } + break; + } + case CSW_FIELD_V2: + { + lcd_putsLeft(y, STR_V2); + int8_t v2_min=0, v2_max=MIXSRC_LAST_TELEM; + if (cstate == CS_VBOOL) { + putsSwitches(CSWONE_2ND_COLUMN, y, cs->v2, attr); + v2_min = SWSRC_OFF+1; v2_max = SWSRC_ON-1; + } + else if (cstate == CS_VTIMER) { + lcd_outdezAtt(CSWONE_2ND_COLUMN, y, cs->v2+1, LEFT|attr); + v2_max = 99; + } + else if (cstate == CS_VCOMP) { + putsMixerSource(CSWONE_2ND_COLUMN, y, cs->v2, attr); + } + else { +#if defined(FRSKY) + if (cs->v1 >= MIXSRC_FIRST_TELEM) { + putsTelemetryChannel(CSWONE_2ND_COLUMN, y, cs->v1 - MIXSRC_FIRST_TELEM, convertCswTelemValue(cs), attr|LEFT); + v2_max = maxTelemValue(cs->v1 - MIXSRC_FIRST_TELEM + 1); + if (cstate == CS_VOFS) { + v2_min = -128; + v2_max -= 128; + } + else { + v2_max = min((uint8_t)127, (uint8_t)v2_max); + v2_min = -v2_max; + } + if (cs->v2 > v2_max) { + cs->v2 = v2_max; + eeDirty(EE_MODEL); + } + } + else +#endif + { + v2_min = -125; v2_max = 125; + lcd_outdezAtt(CSWONE_2ND_COLUMN, y, cs->v2, LEFT|attr); + } + } + + if (attr) { + CHECK_INCDEC_MODELVAR(event, cs->v2, v2_min, v2_max); + } + break; + } + case CSW_FIELD_ANDSW: + lcd_putsLeft(y, STR_AND_SWITCH); + putsSwitches(CSWONE_2ND_COLUMN, y, cs->andsw, attr); + if (attr) CHECK_INCDEC_MODELVAR(event, cs->andsw, -MAX_SWITCH, MAX_SWITCH); + break; + case CSW_FIELD_DURATION: + lcd_putsLeft(y, STR_DURATION); + if (cs->duration > 0) + lcd_outdezAtt(CSWONE_2ND_COLUMN, y, 5*cs->duration, attr|PREC1|LEFT); + else + lcd_putsiAtt(CSWONE_2ND_COLUMN, y, STR_MMMINV, 0, attr); + if (attr) CHECK_INCDEC_MODELVAR_ZERO(event, cs->duration, MAX_CSW_DURATION); + break; + case CSW_FIELD_DELAY: + lcd_putsLeft(y, STR_DELAY); + if (cs->delay > 0) + lcd_outdezAtt(CSWONE_2ND_COLUMN, y, 5*cs->delay, attr|PREC1|LEFT); + else + lcd_putsiAtt(CSWONE_2ND_COLUMN, y, STR_MMMINV, 0, attr); + if (attr) CHECK_INCDEC_MODELVAR_ZERO(event, cs->delay, MAX_CSW_DELAY); + break; + } + } +} + +void menuModelCustomSwitches(uint8_t event) +{ + SIMPLE_MENU(STR_MENUCUSTOMSWITCHES, menuTabModel, e_CustomSwitches, NUM_CSW+1); + + uint8_t y = 0; + uint8_t k = 0; + int8_t sub = m_posVert - 1; + + switch (event) { +#if defined(ROTARY_ENCODER_NAVIGATION) + case EVT_ROTARY_BREAK: +#endif + case EVT_KEY_FIRST(KEY_RIGHT): + case EVT_KEY_FIRST(KEY_ENTER): + if (sub >= 0) { + s_currIdx = sub; + pushMenu(menuModelCustomSwitchOne); + } + break; + } + + for (uint8_t i=0; ifunc > 0) { + // CSW func + lcd_putsiAtt(CSW_1ST_COLUMN, y, STR_VCSWFUNC, cs->func, 0); + + // CSW params + uint8_t cstate = cswFamily(cs->func); + + if (cstate == CS_VBOOL) { + putsSwitches(CSW_2ND_COLUMN, y, cs->v1, 0); + putsSwitches(CSW_3RD_COLUMN, y, cs->v2, 0); + } + else if (cstate == CS_VCOMP) { + putsMixerSource(CSW_2ND_COLUMN, y, cs->v1, 0); + putsMixerSource(CSW_3RD_COLUMN, y, cs->v2, 0); + } + else if (cstate == CS_VTIMER) { + lcd_outdezAtt(CSW_2ND_COLUMN, y, cs->v1+1, LEFT); + lcd_outdezAtt(CSW_3RD_COLUMN, y, cs->v2+1, LEFT); + } + else { + putsMixerSource(CSW_2ND_COLUMN, y, cs->v1, 0); + if (cs->v1 >= MIXSRC_FIRST_TELEM) { + putsTelemetryChannel(CSW_3RD_COLUMN, y, cs->v1 - MIXSRC_FIRST_TELEM, convertCswTelemValue(cs), LEFT); + } + else { + lcd_outdezAtt(CSW_3RD_COLUMN, y, cs->v2, LEFT); + } + } + + // CSW and switch + putsSwitches(CSW_4TH_COLUMN, y, cs->andsw, 0); + } + } +} + +#else + +#if defined(PCBTARANIS) +enum ClipboardType { + CLIPBOARD_TYPE_NONE, + CLIPBOARD_TYPE_CUSTOM_SWITCH, + CLIPBOARD_TYPE_CUSTOM_FUNCTION, +}; + +struct Clipboard { + ClipboardType type; + union { + CustomSwData csw; + CustomFnData cfn; + } data; +}; + +Clipboard clipboard; + +void onCustomSwitchesMenu(const char *result) +{ + int8_t sub = m_posVert-1; + CustomSwData * cs = cswAddress(sub); + + if (result == STR_COPY) { + clipboard.type = CLIPBOARD_TYPE_CUSTOM_SWITCH; + clipboard.data.csw = *cs; + } + else if (result == STR_PASTE) { + *cs = clipboard.data.csw; + eeDirty(EE_MODEL); + } + else if (result == STR_DELETE) { + memset(cs, 0, sizeof(CustomSwData)); + eeDirty(EE_MODEL); + } +} +#endif + +void menuModelCustomSwitches(uint8_t event) +{ + INCDEC_DECLARE_VARS(); + + MENU(STR_MENUCUSTOMSWITCHES, menuTabModel, e_CustomSwitches, NUM_CSW+1, {0, NAVIGATION_LINE_BY_LINE|CSW_FIELD_LAST/*repeated...*/}); + + uint8_t y = 0; + uint8_t k = 0; + int8_t sub = m_posVert - 1; + horzpos_t horz = m_posHorz; + +#if LCD_W >= 212 + if (horz>=0) { + displayColumnHeader(STR_CSW_HEADERS, horz); + } +#endif + +#if defined(PCBTARANIS) + if (sub>=0 && horz<0 && event==EVT_KEY_LONG(KEY_ENTER) && !READ_ONLY()) { + killEvents(event); + CustomSwData * cs = cswAddress(sub); + if (cs->func) MENU_ADD_ITEM(STR_COPY); + if (clipboard.type == CLIPBOARD_TYPE_CUSTOM_SWITCH) + MENU_ADD_ITEM(STR_PASTE); + if (cs->func || cs->v1 || cs->v2 || cs->delay || cs->duration || cs->andsw) MENU_ADD_ITEM(STR_DELETE); + menuHandler = onCustomSwitchesMenu; + } +#endif + + for (uint8_t i=0; i0) ? BLINK|INVERS : INVERS) : 0); + uint8_t attr1 = (horz==1 ? attr : 0); + uint8_t attr2 = (horz==2 ? attr : 0); + CustomSwData * cs = cswAddress(k); + + // CSW name + uint8_t sw = SWSRC_SW1+k; + putsSwitches(0, y, sw, (getSwitch(sw) ? BOLD : 0) | ((sub==k && horz<0) ? INVERS : 0)); + + // CSW func + lcd_putsiAtt(CSW_1ST_COLUMN, y, STR_VCSWFUNC, cs->func, horz==0 ? attr : 0); + + // CSW params + uint8_t cstate = cswFamily(cs->func); +#if defined(CPUARM) + int16_t v1_min=0, v1_max=MIXSRC_LAST_TELEM, v2_min=0, v2_max=MIXSRC_LAST_TELEM; +#else + int8_t v1_min=0, v1_max=MIXSRC_LAST_TELEM, v2_min=0, v2_max=MIXSRC_LAST_TELEM; +#endif + + if (cstate == CS_VBOOL) { + putsSwitches(CSW_2ND_COLUMN, y, cs->v1, attr1); + putsSwitches(CSW_3RD_COLUMN, y, cs->v2, attr2); + v1_min = SWSRC_OFF+1; v1_max = SWSRC_ON-1; + v2_min = SWSRC_OFF+1; v2_max = SWSRC_ON-1; + INCDEC_SET_FLAG(INCDEC_SWITCH); + INCDEC_ENABLE_CHECK(NULL); + } + else if (cstate == CS_VCOMP) { + putsMixerSource(CSW_2ND_COLUMN, y, cs->v1, attr1); + putsMixerSource(CSW_3RD_COLUMN, y, cs->v2, attr2); + INCDEC_SET_FLAG(INCDEC_SOURCE); + INCDEC_ENABLE_CHECK(isSourceAvailable); + } + else if (cstate == CS_VTIMER) { + lcd_outdezAtt(CSW_2ND_COLUMN, y, cswTimerValue(cs->v1), LEFT|PREC1|attr1); + lcd_outdezAtt(CSW_3RD_COLUMN, y, cswTimerValue(cs->v2), LEFT|PREC1|attr2); + v1_min = v2_min = -128; + v1_max = v2_max = 122; + INCDEC_SET_FLAG(0); + INCDEC_ENABLE_CHECK(NULL); + } + else { + putsMixerSource(CSW_2ND_COLUMN, y, cs->v1, attr1); + if (horz == 1) { + INCDEC_SET_FLAG(INCDEC_SOURCE); + INCDEC_ENABLE_CHECK(isSourceAvailable); + } + else { + INCDEC_SET_FLAG(0); + INCDEC_ENABLE_CHECK(NULL); + } +#if defined(FRSKY) + if (cs->v1 >= MIXSRC_FIRST_TELEM) { + putsTelemetryChannel(CSW_3RD_COLUMN, y, cs->v1 - MIXSRC_FIRST_TELEM, convertCswTelemValue(cs), LEFT|attr2); + v2_max = maxTelemValue(cs->v1 - MIXSRC_FIRST_TELEM + 1); +#if defined(CPUARM) + v2_min = minTelemValue(cs->v1 - MIXSRC_FIRST_TELEM + 1); + if (cs->v2 < v2_min || cs->v2 > v2_max) { + cs->v2 = 0; + eeDirty(EE_MODEL); + } +#else + if (cstate == CS_VOFS) { + v2_min = -128; + v2_max -= 128; + } + else { + v2_max = min((uint8_t)127, (uint8_t)v2_max); + v2_min = -v2_max; + } + if (cs->v2 > v2_max) { + cs->v2 = v2_max; + eeDirty(EE_MODEL); + } +#endif + } + else { + lcd_outdezAtt(CSW_3RD_COLUMN, y, cs->v2, LEFT|attr2); + v2_min = -125; v2_max = 125; + } +#else + if (cs->v1 >= MIXSRC_FIRST_TELEM) { + putsTelemetryChannel(CSW_3RD_COLUMN, y, cs->v1 - MIXSRC_FIRST_TELEM, convertCswTelemValue(cs), LEFT|attr2); + v2_min = -128; v2_max = 127; + } + else { + lcd_outdezAtt(CSW_3RD_COLUMN, y, cs->v2, LEFT|attr2); + v2_min = -125; v2_max = 125; + } +#endif + } + + // CSW and switch + putsSwitches(CSW_4TH_COLUMN, y, cs->andsw, horz==3 ? attr : 0); + +#if defined(CPUARM) + // CSW duration + if (cs->duration > 0) + lcd_outdezAtt(CSW_5TH_COLUMN, y, 5*cs->duration, (horz==4 ? attr : 0)|PREC1|LEFT); + else + lcd_putsiAtt(CSW_5TH_COLUMN, y, STR_MMMINV, 0, horz==4 ? attr : 0); + + // CSW delay + if (cs->delay > 0) + lcd_outdezAtt(CSW_6TH_COLUMN, y, 5*cs->delay, (horz==5 ? attr : 0)|PREC1|LEFT); + else + lcd_putsiAtt(CSW_6TH_COLUMN, y, STR_MMMINV, 0, horz==5 ? attr : 0); +#endif + + if ((s_editMode>0 || p1valdiff) && attr) { + switch (horz) { + case CSW_FIELD_FUNCTION: + { + CHECK_INCDEC_MODELVAR_ZERO(event, cs->func, CS_MAXF); + uint8_t new_cstate = cswFamily(cs->func); + if (cstate != new_cstate) + cs->v1 = cs->v2 = (new_cstate==CS_VTIMER ? -119/*1.0*/ : 0); + break; + } + case CSW_FIELD_V1: + cs->v1 = CHECK_INCDEC_PARAM(event, cs->v1, v1_min, v1_max); + break; + case CSW_FIELD_V2: + cs->v2 = CHECK_INCDEC_PARAM(event, cs->v2, v2_min, v2_max); +#if defined(PCBTARANIS) + if (cstate==CS_VOFS && cs->v1!=0 && event==EVT_KEY_LONG(KEY_ENTER)) { + killEvents(event); + getvalue_t x = getValue(cs->v1); + TRACE("AUTO x=%d", x); + if (cs->v1 < MIXSRC_GVAR1) + cs->v2 = calcRESXto100(x); + else if (cs->v1 - MIXSRC_FIRST_TELEM + 1 == TELEM_ALT) + cs->v2 *= 100; + eeDirty(EE_MODEL); + } +#endif + break; + case CSW_FIELD_ANDSW: +#if defined(CPUARM) + CHECK_INCDEC_MODELSWITCH(event, cs->andsw, -MAX_CSW_ANDSW, MAX_CSW_ANDSW); +#else + CHECK_INCDEC_MODELVAR_ZERO(event, cs->andsw, MAX_CSW_ANDSW); +#endif + break; +#if defined(CPUARM) + case CSW_FIELD_DURATION: + CHECK_INCDEC_MODELVAR_ZERO(event, cs->duration, MAX_CSW_DURATION); + break; + case CSW_FIELD_DELAY: + CHECK_INCDEC_MODELVAR_ZERO(event, cs->delay, MAX_CSW_DELAY); + break; +#endif + } + } + } +} +#endif + +#if LCD_W >= 212 + #define MODEL_CUSTOM_FUNC_1ST_COLUMN (5+4*FW) + #define MODEL_CUSTOM_FUNC_2ND_COLUMN (9*FW) + #define MODEL_CUSTOM_FUNC_3RD_COLUMN (21*FW) + #define MODEL_CUSTOM_FUNC_4TH_COLUMN (33*FW-3) + #define MODEL_CUSTOM_FUNC_4TH_COLUMN_ONOFF (34*FW-3) +#else + #define MODEL_CUSTOM_FUNC_1ST_COLUMN (3) + #define MODEL_CUSTOM_FUNC_2ND_COLUMN (5*FW-2) + #define MODEL_CUSTOM_FUNC_3RD_COLUMN (15*FW+2) + #define MODEL_CUSTOM_FUNC_4TH_COLUMN (20*FW) + #if defined(GRAPHICS) + #define MODEL_CUSTOM_FUNC_4TH_COLUMN_ONOFF (20*FW) + #else + #define MODEL_CUSTOM_FUNC_4TH_COLUMN_ONOFF (18*FW+2) + #endif +#endif + +#if defined(CPUARM) && defined(SDCARD) +void onCustomFunctionsFileSelectionMenu(const char *result) +{ + int8_t sub = m_posVert - 1; + + if (result == STR_UPDATE_LIST) { + char directory[] = SOUNDS_PATH; + strncpy(directory+SOUNDS_PATH_LNG_OFS, currentLanguagePack->id, 2); + if (!listSdFiles(directory, SOUNDS_EXT, sizeof(g_model.funcSw[sub].param), NULL)) { + POPUP_WARNING(STR_NO_SOUNDS_ON_SD); + s_menu_flags = 0; + } + } + else { + // The user choosed a wav file in the list + memcpy(g_model.funcSw[sub].param.name, result, sizeof(g_model.funcSw[sub].param.name)); + eeDirty(EE_MODEL); + } +} +#endif + +#if defined(PCBTARANIS) +void onCustomFunctionsMenu(const char *result) +{ + int8_t sub = m_posVert-1; + CustomFnData * cfn = &g_model.funcSw[sub]; + + if (result == STR_COPY) { + clipboard.type = CLIPBOARD_TYPE_CUSTOM_FUNCTION; + clipboard.data.cfn = *cfn; + } + else if (result == STR_PASTE) { + *cfn = clipboard.data.cfn; + eeDirty(EE_MODEL); + } + else if (result == STR_CLEAR) { + memset(cfn, 0, sizeof(CustomFnData)); + eeDirty(EE_MODEL); + } + else if (result == STR_INSERT) { + memmove(cfn+1, cfn, (NUM_CFN-sub-1)*sizeof(CustomFnData)); + memset(cfn, 0, sizeof(CustomFnData)); + eeDirty(EE_MODEL); + } + else if (result == STR_DELETE) { + memmove(cfn, cfn+1, (NUM_CFN-sub-1)*sizeof(CustomFnData)); + memset(&g_model.funcSw[NUM_CFN-1], 0, sizeof(CustomFnData)); + eeDirty(EE_MODEL); + } +} + +#endif + +void menuModelCustomFunctions(uint8_t event) +{ + MENU(STR_MENUCUSTOMFUNC, menuTabModel, e_CustomFunctions, NUM_CFN+1, {0, NAVIGATION_LINE_BY_LINE|3/*repeated*/}); + + uint8_t y; + uint8_t k = 0; + int8_t sub = m_posVert - 1; + +#if defined(PCBTARANIS) + if (sub>=0 && m_posHorz<0 && event==EVT_KEY_LONG(KEY_ENTER) && !READ_ONLY()) { + killEvents(event); + CustomFnData *sd = &g_model.funcSw[sub]; + if (!CFN_EMPTY(sd)) + MENU_ADD_ITEM(STR_COPY); + if (clipboard.type == CLIPBOARD_TYPE_CUSTOM_FUNCTION) + MENU_ADD_ITEM(STR_PASTE); + if (!CFN_EMPTY(sd) && CFN_EMPTY(&g_model.funcSw[NUM_CFN-1])) + MENU_ADD_ITEM(STR_INSERT); + if (CFN_EMPTY(sd)) + MENU_ADD_ITEM(STR_DELETE); + else + MENU_ADD_ITEM(STR_CLEAR); + menuHandler = onCustomFunctionsMenu; + } +#endif + + for (uint8_t i=0; i= 212 + putsStrIdx(0, y, STR_CF, k+1, (sub==k && m_posHorz<0) ? INVERS : 0); +#endif + + CustomFnData *sd = &g_model.funcSw[k]; + for (uint8_t j=0; j<4; j++) { + uint8_t attr = ((sub==k && m_posHorz==j) ? ((s_editMode>0) ? BLINK|INVERS : INVERS) : 0); + uint8_t active = (attr && (s_editMode>0 || p1valdiff)); + switch (j) { + case 0: + putsSwitches(MODEL_CUSTOM_FUNC_1ST_COLUMN, y, sd->swtch, attr | ((activeFnSwitches & ((MASK_CFN_TYPE)1 << k)) ? BOLD : 0)); + if (active || AUTOSWITCH_ENTER_LONG()) CHECK_INCDEC_MODELSWITCH(event, sd->swtch, SWSRC_FIRST, SWSRC_LAST); + break; + + case 1: + if (sd->swtch) { + uint8_t func_displayed; + if (CFN_FUNC(sd) < FUNC_TRAINER) { + func_displayed = 0; + putsChn(MODEL_CUSTOM_FUNC_2ND_COLUMN+6*FW, y, CFN_CH_NUMBER(sd)+1, attr); + } + else if (CFN_FUNC(sd) <= FUNC_TRAINER + NUM_STICKS) { + func_displayed = 1; + if (CFN_FUNC(sd) != FUNC_TRAINER) + putsMixerSource(MODEL_CUSTOM_FUNC_2ND_COLUMN+7*FW, y, MIXSRC_Rud+CFN_FUNC(sd)-FUNC_TRAINER-1, attr); + } +#if defined(DEBUG) + else if (CFN_FUNC(sd) == FUNC_TEST) { +#if defined(GVARS) + func_displayed = FUNC_TEST - FUNC_TRAINER - NUM_STICKS - MAX_GVARS + 2; +#else + func_displayed = FUNC_TEST - FUNC_TRAINER - NUM_STICKS + 1; +#endif + } +#endif +#if defined(GVARS) + else if (CFN_FUNC(sd) >= FUNC_ADJUST_GV1) { + func_displayed = FUNC_ADJUST_GV1 - FUNC_TRAINER - NUM_STICKS + 1; + putsStrIdx(MODEL_CUSTOM_FUNC_2ND_COLUMN+7*FW, y, STR_GV, CFN_FUNC(sd)-FUNC_ADJUST_GV1+1, attr); + } +#endif + else { + func_displayed = 2 + CFN_FUNC(sd) - FUNC_TRAINER - NUM_STICKS - 1; + } + lcd_putsiAtt(MODEL_CUSTOM_FUNC_2ND_COLUMN, y, STR_VFSWFUNC, func_displayed, attr); + if (active) { +#if defined(CPUARM) + CHECK_INCDEC_MODELVAR_ZERO(event, CFN_FUNC(sd), FUNC_MAX-1); +#else + if (CFN_FUNC(sd) < FUNC_TRAINER) { + CHECK_INCDEC_MODELVAR_ZERO(event, sd->internal.func_safety.func, 16); + } + else { + CHECK_INCDEC_MODELVAR_ZERO(event, CFN_FUNC(sd), FUNC_MAX-1); + if (CFN_FUNC(sd) < FUNC_TRAINER) + sd->internal.func_safety.func = 15; + } +#endif + if (checkIncDec_Ret) CFN_RESET(sd); + } + } + else if (attr) { + REPEAT_LAST_CURSOR_MOVE(); + } + break; + + case 2: + if (sd->swtch) { + INCDEC_DECLARE_VARS(); + int16_t val_displayed = CFN_PARAM(sd); + int8_t val_min = 0; + uint8_t val_max = 255; + if (CFN_FUNC(sd) == FUNC_PLAY_SOUND) { +#if defined(AUDIO) + val_max = AU_FRSKY_LAST-AU_FRSKY_FIRST-1; + lcd_putsiAtt(MODEL_CUSTOM_FUNC_3RD_COLUMN, y, STR_FUNCSOUNDS, val_displayed, attr); +#else + break; +#endif + } +#if defined(HAPTIC) + else if (CFN_FUNC(sd) == FUNC_HAPTIC) { + val_max = 3; + lcd_outdezAtt(MODEL_CUSTOM_FUNC_3RD_COLUMN, y, val_displayed, attr|LEFT); + } +#endif +#if defined(CPUARM) && defined(SDCARD) + else if (CFN_FUNC(sd) == FUNC_PLAY_TRACK || CFN_FUNC(sd) == FUNC_BACKGND_MUSIC) { +#if LCD_W >= 212 + xcoord_t x = MODEL_CUSTOM_FUNC_3RD_COLUMN; +#else + xcoord_t x = (CFN_FUNC(sd) == FUNC_PLAY_TRACK ? MODEL_CUSTOM_FUNC_2ND_COLUMN + FW + FW*strlen(TR_PLAY_TRACK) : MODEL_CUSTOM_FUNC_3RD_COLUMN); +#endif + if (ZEXIST(sd->param.name)) + lcd_putsnAtt(x, y, sd->param.name, sizeof(sd->param.name), attr); + else + lcd_putsiAtt(x, y, STR_VCSWFUNC, 0, attr); + if (active && event==EVT_KEY_BREAK(KEY_ENTER)) { + s_editMode = 0; + char directory[] = SOUNDS_PATH; + strncpy(directory+SOUNDS_PATH_LNG_OFS, currentLanguagePack->id, 2); + if (listSdFiles(directory, SOUNDS_EXT, sizeof(sd->param.name), sd->param.name)) { + menuHandler = onCustomFunctionsFileSelectionMenu; + } + else { + POPUP_WARNING(STR_NO_SOUNDS_ON_SD); + s_menu_flags = 0; + } + } + break; + } + else if (CFN_FUNC(sd) == FUNC_PLAY_VALUE) { + val_max = MIXSRC_FIRST_TELEM + TELEM_DISPLAY_MAX - 1; + putsMixerSource(MODEL_CUSTOM_FUNC_3RD_COLUMN, y, val_displayed, attr); + INCDEC_ENABLE_CHECK(isSourceAvailable); + } +#endif +#if defined(CPUARM) + else if (CFN_FUNC(sd) == FUNC_VOLUME) { + val_max = MIXSRC_LAST_CH; + putsMixerSource(MODEL_CUSTOM_FUNC_3RD_COLUMN, y, val_displayed, attr); + INCDEC_ENABLE_CHECK(isSourceAvailable); + } +#elif defined(VOICE) + else if (CFN_FUNC(sd) == FUNC_PLAY_TRACK) { +#if defined(GVARS) + if (attr && event==EVT_KEY_LONG(KEY_ENTER)) { + killEvents(event); + s_editMode = !s_editMode; + active = true; + val_displayed = (val_displayed > 250 ? 0 : 251); + } + if (val_displayed > 250) { + putsStrIdx(MODEL_CUSTOM_FUNC_3RD_COLUMN, y, STR_GV, val_displayed-250, attr); + } + else { + lcd_outdezAtt(MODEL_CUSTOM_FUNC_3RD_COLUMN, y, val_displayed+PROMPT_CUSTOM_BASE, attr|LEFT); + } +#else + lcd_outdezAtt(MODEL_CUSTOM_FUNC_3RD_COLUMN, y, val_displayed+PROMPT_CUSTOM_BASE, attr|LEFT); +#endif + } + else if (CFN_FUNC(sd) == FUNC_PLAY_BOTH) { + lcd_putcAtt(MODEL_CUSTOM_FUNC_3RD_COLUMN+3*FWNUM, y, '|', attr); + lcd_outdezAtt(MODEL_CUSTOM_FUNC_3RD_COLUMN+3*FWNUM, y, val_displayed+PROMPT_CUSTOM_BASE, attr); + lcd_outdezAtt(MODEL_CUSTOM_FUNC_3RD_COLUMN+2+3*FWNUM, y, (val_displayed+PROMPT_CUSTOM_BASE+1)%10, attr|LEFT); + } + else if (CFN_FUNC(sd) == FUNC_PLAY_VALUE) { + val_max = MIXSRC_FIRST_TELEM + TELEM_DISPLAY_MAX - 1; + putsMixerSource(MODEL_CUSTOM_FUNC_3RD_COLUMN, y, val_displayed, attr); + INCDEC_ENABLE_CHECK(isSourceAvailable); + } +#endif +#if defined(SDCARD) + else if (CFN_FUNC(sd) == FUNC_LOGS) { + if (val_displayed) { + lcd_outdezAtt(MODEL_CUSTOM_FUNC_3RD_COLUMN, y, val_displayed, attr|PREC1|LEFT); + lcd_putc(lcdLastPos, y, 's'); + } + else { + lcd_putsiAtt(MODEL_CUSTOM_FUNC_3RD_COLUMN, y, STR_MMMINV, 0, attr); + } + } +#endif + else if (CFN_FUNC(sd) == FUNC_RESET) { + val_max = FUNC_RESET_PARAM_LAST; + lcd_putsiAtt(MODEL_CUSTOM_FUNC_3RD_COLUMN, y, STR_VFSWRESET, CFN_PARAM(sd), attr); + } + else if (CFN_FUNC(sd) < FUNC_TRAINER) { + val_displayed = (int8_t)CFN_PARAM(sd); + val_min = -125; val_max = 125; + lcd_outdezAtt(MODEL_CUSTOM_FUNC_3RD_COLUMN, y, val_displayed, attr|LEFT); + } +#if defined(GVARS) + else if (CFN_FUNC(sd) >= FUNC_ADJUST_GV1 +#if defined(DEBUG) + && CFN_FUNC(sd) <= FUNC_ADJUST_GVLAST +#endif + ) { + switch (CFN_GVAR_MODE(sd)) { + case FUNC_ADJUST_GVAR_CONSTANT: + val_displayed = (int8_t)CFN_PARAM(sd); + val_min = -125; val_max = 125; + lcd_outdezAtt(MODEL_CUSTOM_FUNC_3RD_COLUMN, y, val_displayed, attr|LEFT); + break; + case FUNC_ADJUST_GVAR_SOURCE: + val_max = MIXSRC_LAST_CH; + putsMixerSource(MODEL_CUSTOM_FUNC_3RD_COLUMN, y, val_displayed, attr); + INCDEC_ENABLE_CHECK(isSourceAvailable); + break; + case FUNC_ADJUST_GVAR_GVAR: + val_max = MAX_GVARS-1; + putsStrIdx(MODEL_CUSTOM_FUNC_3RD_COLUMN, y, STR_GV, val_displayed+1, attr); + break; + default: // FUNC_ADJUST_GVAR_INC + val_max = 1; + lcd_putsiAtt(MODEL_CUSTOM_FUNC_3RD_COLUMN, y, PSTR("\002-1+1"), val_displayed, attr); + break; + } + + if (attr && event==EVT_KEY_LONG(KEY_ENTER)) { + killEvents(event); + s_editMode = !s_editMode; + active = true; + CFN_GVAR_MODE(sd) += 1; + val_displayed = 0; + } + } +#endif + else { + if (attr) m_posHorz = (CURSOR_MOVED_LEFT(event) ? 1 : 3); + break; + } + + if (active) { + CFN_PARAM(sd) = CHECK_INCDEC_PARAM(event, val_displayed, val_min, val_max); + } + } + else if (attr) { + REPEAT_LAST_CURSOR_MOVE(); + } + break; + + case 3: + if (sd->swtch && (CFN_FUNC(sd) <= FUNC_INSTANT_TRIM +#if defined(GVARS) + || CFN_FUNC(sd) >= FUNC_ADJUST_GV1 +#endif +#if defined(CPUARM) + || CFN_FUNC(sd) == FUNC_VOLUME +#endif + )) { + menu_lcd_onoff(MODEL_CUSTOM_FUNC_4TH_COLUMN_ONOFF, y, CFN_ACTIVE(sd), attr); + if (active) CHECK_INCDEC_MODELVAR_ZERO(event, CFN_ACTIVE(sd), 1); + } + else if (sd->swtch && HAS_REPEAT_PARAM(sd)) { + if (CFN_PLAY_REPEAT(sd) == 0) { +#if LCD_W >= 212 + lcd_putsAtt(MODEL_CUSTOM_FUNC_4TH_COLUMN+2, y, "1x", attr); +#else + lcd_putcAtt(MODEL_CUSTOM_FUNC_4TH_COLUMN_ONOFF+1, y, '-', attr); +#endif + } +#if defined(CPUARM) + else if (CFN_PLAY_REPEAT(sd) == CFN_PLAY_REPEAT_NOSTART) { +#if LCD_W >= 212 + lcd_putcAtt(MODEL_CUSTOM_FUNC_4TH_COLUMN-2, y, '!', attr); + lcd_putsAtt(MODEL_CUSTOM_FUNC_4TH_COLUMN+2, y, "1x", attr); +#else + lcd_putcAtt(MODEL_CUSTOM_FUNC_4TH_COLUMN_ONOFF+1, y, '!', attr); +#endif + } +#endif + else { + lcd_outdezAtt(MODEL_CUSTOM_FUNC_4TH_COLUMN+2+FW, y, CFN_PLAY_REPEAT(sd)*CFN_PLAY_REPEAT_MUL, attr); +#if LCD_W >= 212 + lcd_putcAtt(MODEL_CUSTOM_FUNC_4TH_COLUMN+2+FW, y, 's', attr); +#endif + } +#if defined(CPUARM) + if (active) CFN_PLAY_REPEAT(sd) = checkIncDecModel(event, CFN_PLAY_REPEAT(sd)==CFN_PLAY_REPEAT_NOSTART?-1:CFN_PLAY_REPEAT(sd), -1, 60/CFN_PLAY_REPEAT_MUL); +#else + if (active) CHECK_INCDEC_MODELVAR_ZERO(event, CFN_PLAY_REPEAT(sd), 60/CFN_PLAY_REPEAT_MUL); +#endif + } + else if (attr) { + REPEAT_LAST_CURSOR_MOVE(); + } + break; + } + } + } +} + +#if defined(LUA_MODEL_SCRIPTS) +void onModelCustomScriptMenu(const char *result) +{ + ScriptData &sd = g_model.scriptsData[s_currIdx]; + + if (result == STR_UPDATE_LIST) { + if (!listSdFiles(SCRIPTS_PATH, MIXES_EXT, sizeof(sd.file), NULL)) { + POPUP_WARNING(STR_NO_BITMAPS_ON_SD); + s_menu_flags = 0; + } + } + else { + // The user choosed a lua file in the list + copySelection(sd.file, result, sizeof(sd.file)); + memset(sd.inputs, 0, sizeof(sd.inputs)); + eeDirty(EE_MODEL); + LUA_LOAD_MODEL_SCRIPT(s_currIdx); + } +} + +enum menuModelCustomScriptItems { + ITEM_MODEL_CUSTOMSCRIPT_FILE, + ITEM_MODEL_CUSTOMSCRIPT_NAME, + ITEM_MODEL_CUSTOMSCRIPT_PARAMS_LABEL, +}; + +#define SCRIPT_ONE_2ND_COLUMN_POS (12*FW) +#define SCRIPT_ONE_3RD_COLUMN_POS (23*FW) + +void menuModelCustomScriptOne(uint8_t event) +{ + TITLE(STR_MENUCUSTOMSCRIPT); + + ScriptData &sd = g_model.scriptsData[s_currIdx]; + + putsStrIdx(lcdLastPos+FW, 0, "LUA", s_currIdx+1, 0); + + SUBMENU_NOTITLE(3+scriptInternalData[s_currIdx].inputsCount, { 0, 0, LABEL(inputs), 0/*repeated*/ }); + + int8_t sub = m_posVert; + + for (uint8_t k=0; k0 ? BLINK|INVERS : INVERS) : 0); + + if (i == ITEM_MODEL_CUSTOMSCRIPT_FILE) { + lcd_putsLeft(y, "Script"); + if (ZEXIST(sd.file) > 0) + lcd_putsnAtt(SCRIPT_ONE_2ND_COLUMN_POS, y, sd.file, sizeof(sd.file), attr); + else + lcd_putsiAtt(SCRIPT_ONE_2ND_COLUMN_POS, y, STR_VCSWFUNC, 0, attr); + if (attr && event==EVT_KEY_BREAK(KEY_ENTER) && !READ_ONLY()) { + s_editMode = 0; + if (listSdFiles(SCRIPTS_PATH, MIXES_EXT, sizeof(sd.file), sd.file, LIST_NONE_SD_FILE)) { + menuHandler = onModelCustomScriptMenu; + } + else { + POPUP_WARNING(STR_NO_SCRIPTS_ON_SD); + s_menu_flags = 0; + } + } + } + else if (i == ITEM_MODEL_CUSTOMSCRIPT_NAME) { + lcd_putsLeft(y, "Name"); + editName(SCRIPT_ONE_2ND_COLUMN_POS, y, sd.name, sizeof(sd.name), event, attr); + } + else if (i == ITEM_MODEL_CUSTOMSCRIPT_PARAMS_LABEL) { + lcd_putsLeft(y, "Inputs"); + } + else if (i <= ITEM_MODEL_CUSTOMSCRIPT_PARAMS_LABEL+scriptInternalData[s_currIdx].inputsCount) { + int inputIdx = i-ITEM_MODEL_CUSTOMSCRIPT_PARAMS_LABEL-1; + lcd_putsnAtt(INDENT_WIDTH, y, scriptInternalData[s_currIdx].inputs[inputIdx].name, 10, 0); + if (scriptInternalData[s_currIdx].inputs[inputIdx].type == 0) { + lcd_outdezAtt(SCRIPT_ONE_2ND_COLUMN_POS, y, g_model.scriptsData[s_currIdx].inputs[inputIdx]+scriptInternalData[s_currIdx].inputs[inputIdx].def, attr|LEFT); + if (attr) { + CHECK_INCDEC_MODELVAR(event, g_model.scriptsData[s_currIdx].inputs[inputIdx], scriptInternalData[s_currIdx].inputs[inputIdx].min-scriptInternalData[s_currIdx].inputs[inputIdx].def, scriptInternalData[s_currIdx].inputs[inputIdx].max-scriptInternalData[s_currIdx].inputs[inputIdx].def); + } + } + else { + putsMixerSource(SCRIPT_ONE_2ND_COLUMN_POS, y, g_model.scriptsData[s_currIdx].inputs[inputIdx]+scriptInternalData[s_currIdx].inputs[inputIdx].def, attr); + if (attr) { + uint8_t *source = (uint8_t *)&g_model.scriptsData[s_currIdx].inputs[inputIdx]; + CHECK_INCDEC_MODELSOURCE(event, *source, scriptInternalData[s_currIdx].inputs[inputIdx].min-scriptInternalData[s_currIdx].inputs[inputIdx].def, scriptInternalData[s_currIdx].inputs[inputIdx].max-scriptInternalData[s_currIdx].inputs[inputIdx].def); + } + } + } + } + + if (scriptInternalData[s_currIdx].outputsCount > 0) { + lcd_vline(SCRIPT_ONE_3RD_COLUMN_POS-4, FH+1, LCD_H-FH-1); + lcd_puts(SCRIPT_ONE_3RD_COLUMN_POS, FH+1, "Outputs"); + + for (int i=0; i= 0) { + s_currIdx = sub; + pushMenu(menuModelCustomScriptOne); + } + break; + } + + for (int i=0; i= 212 + #define TELEM_COL1 (1*FW) + #define TELEM_COL2 (16*FW) + #define TELEM_COL3 (28*FW) + #define TELEM_BARS_COLMIN (3*FW+56) + #define TELEM_BARS_COLMAX (20*FW-3) + #define TELEM_SCRTYPE_COL (10*FW) +#else + #define TELEM_COL1 INDENT_WIDTH + #if defined(TRANSLATIONS_FR) || defined(TRANSLATIONS_CZ) + #define TELEM_COL2 (9*FW) + #else + #define TELEM_COL2 (8*FW) + #endif + #define TELEM_BARS_COLMIN (56-3*FW) + #define TELEM_BARS_COLMAX (14*FW-3) + #define TELEM_SCRTYPE_COL (10*FW) +#endif + +#if defined(PCBTARANIS) + #define CHANNEL_ROWS (uint8_t)-1, 1, 0, 0, 0, + #define RSSI_ROWS (uint8_t)-1, 0, 0, +#else + #define CHANNEL_ROWS (uint8_t)-1, 1, 0, 2, 2, + #define RSSI_ROWS (uint8_t)-1, 1, 1, +#endif + +#if defined(GAUGES) + #define SCREEN_TYPE_ROWS 0 +#else + #define SCREEN_TYPE_ROWS (uint8_t)-1 +#endif + +#if defined(PCBSTD) + #define VARIO_RANGE_ROWS 1 +#else + #define VARIO_RANGE_ROWS 3 +#endif + +void menuModelTelemetry(uint8_t event) +{ + MENU(STR_MENUTELEMETRY, menuTabModel, e_Telemetry, ITEM_TELEMETRY_MAX+1, {0, CHANNEL_ROWS CHANNEL_ROWS RSSI_ROWS USRDATA_LINES 0, 0, IF_CPUARM(0) IF_VARIO(LABEL(Vario)) IF_VARIO(0) IF_VARIO(VARIO_RANGE_ROWS) CASE_PCBTARANIS(LABEL(TopBar)) CASE_PCBTARANIS(0) SCREEN_TYPE_ROWS, 2, 2, 2, 2, SCREEN_TYPE_ROWS, 2, 2, 2, 2, IF_CPUARM(SCREEN_TYPE_ROWS) IF_CPUARM(2) IF_CPUARM(2) IF_CPUARM(2) IF_CPUARM(2) }); + + uint8_t sub = m_posVert - 1; + +#if !defined(PCBTARANIS) + switch (event) { + case EVT_KEY_BREAK(KEY_DOWN): + case EVT_KEY_BREAK(KEY_UP): + case EVT_KEY_BREAK(KEY_LEFT): + case EVT_KEY_BREAK(KEY_RIGHT): + if (s_editMode>0 && sub<=ITEM_TELEMETRY_RSSI_ALARM2) + frskySendAlarms(); // update FrSky module when edit mode exited + break; + } +#endif + + for (uint8_t i=0; i0) ? BLINK|INVERS : INVERS); + uint8_t attr = (sub == k ? blink : 0); + uint8_t ch = (k >= ITEM_TELEMETRY_A2_LABEL) ? 1 : 0; + FrSkyChannelData & channel = g_model.frsky.channels[ch]; + uint8_t dest=TELEM_A1-1+ch; + switch(k) { + case ITEM_TELEMETRY_A1_LABEL: + case ITEM_TELEMETRY_A2_LABEL: + lcd_putsLeft(y, STR_ACHANNEL); + lcd_outdezAtt(2*FW, y, ch+1, 0); + putsTelemetryChannel(TELEM_COL2+6*FW, y, dest, frskyData.analog[ch].value, LEFT); + break; + + case ITEM_TELEMETRY_A1_RANGE: + case ITEM_TELEMETRY_A2_RANGE: + lcd_putsLeft(y, STR_RANGE); + putsTelemetryChannel(TELEM_COL2, y, dest, 255-channel.offset, (m_posHorz<=0 ? attr : 0)|NO_UNIT|LEFT); + lcd_putsiAtt(lcdLastPos, y, STR_VTELEMUNIT, channel.type, m_posHorz!=0 ? attr : 0); + if (attr && (s_editMode>0 || p1valdiff)) { + if (m_posHorz == 0) { + uint16_t ratio = checkIncDec(event, channel.ratio, 0, 256, EE_MODEL); + if (checkIncDec_Ret) { + if (ratio == 127 && channel.multiplier > 0) { + channel.multiplier--; channel.ratio = 255; + } + else if (ratio == 256) { + if (channel.multiplier < FRSKY_MULTIPLIER_MAX) { channel.multiplier++; channel.ratio = 128; } + } + else { + channel.ratio = ratio; + } + } + } + else { + CHECK_INCDEC_MODELVAR_ZERO(event, channel.type, UNIT_A1A2_MAX); + } + } + break; + + case ITEM_TELEMETRY_A1_OFFSET: + case ITEM_TELEMETRY_A2_OFFSET: + lcd_putsLeft(y, STR_OFFSET); + putsTelemetryChannel(TELEM_COL2, y, dest, 0, LEFT|attr); + if (attr) channel.offset = checkIncDec(event, channel.offset, -256, 256, EE_MODEL); + break; + + case ITEM_TELEMETRY_A1_ALARM1: + case ITEM_TELEMETRY_A1_ALARM2: + case ITEM_TELEMETRY_A2_ALARM1: + case ITEM_TELEMETRY_A2_ALARM2: + { + uint8_t j = ((k==ITEM_TELEMETRY_A1_ALARM1 || k==ITEM_TELEMETRY_A2_ALARM1) ? 0 : 1); +#if defined(PCBTARANIS) + lcd_putsLeft(y, (j==0 ? STR_LOWALARM : STR_CRITICALALARM)); + putsTelemetryChannel(TELEM_COL2, y, dest, channel.alarms_value[j], LEFT|attr); + if (attr && (s_editMode>0 || p1valdiff)) { + channel.alarms_value[j] = checkIncDec(event, channel.alarms_value[j], 0, 255, EE_MODEL); + } +#else + lcd_putsLeft(y, STR_ALARM); + lcd_putsiAtt(TELEM_COL2, y, STR_VALARM, ALARM_LEVEL(ch, j), m_posHorz<=0 ? attr : 0); + lcd_putsiAtt(TELEM_COL2+4*FW, y, STR_VALARMFN, ALARM_GREATER(ch, j), (m_posHorz<0 || m_posHorz==1) ? attr : 0); + putsTelemetryChannel(TELEM_COL2+6*FW, y, dest, channel.alarms_value[j], ((m_posHorz<0 || m_posHorz==2) ? attr : 0) | LEFT); + + if (attr && (s_editMode>0 || p1valdiff)) { + uint8_t t; + switch (m_posHorz) { + case 0: + t = ALARM_LEVEL(ch, j); + channel.alarms_level = (channel.alarms_level & ~(3<<(2*j))) + (checkIncDecModel(event, t, 0, 3) << (2*j)); + break; + case 1: + t = ALARM_GREATER(ch, j); + if (t != checkIncDecModel(event, t, 0, 1)) { + channel.alarms_greater ^= (1 << j); + frskySendAlarms(); + } + break; + case 2: + channel.alarms_value[j] = checkIncDec(event, channel.alarms_value[j], 0, 255, EE_MODEL); + break; + } + } +#endif + break; + } + + case ITEM_TELEMETRY_RSSI_LABEL: + lcd_putsLeft(y, PSTR("RSSI")); + break; + + case ITEM_TELEMETRY_RSSI_ALARM1: + case ITEM_TELEMETRY_RSSI_ALARM2: { + uint8_t j = k-ITEM_TELEMETRY_RSSI_ALARM1; +#if defined(PCBTARANIS) + lcd_putsLeft(y, (j==0 ? STR_LOWALARM : STR_CRITICALALARM)); + lcd_outdezNAtt(TELEM_COL2, y, getRssiAlarmValue(j), LEFT|attr, 3); + if (attr && (s_editMode>0 || p1valdiff)) { + CHECK_INCDEC_MODELVAR(event, g_model.frsky.rssiAlarms[j].value, -30, 30); + } +#else + lcd_putsLeft(y, STR_ALARM); + lcd_putsiAtt(TELEM_COL2, y, STR_VALARM, ((2+j+g_model.frsky.rssiAlarms[j].level)%4), m_posHorz<=0 ? attr : 0); + lcd_putc(TELEM_COL2+4*FW, y, '<'); + lcd_outdezNAtt(TELEM_COL2+6*FW, y, getRssiAlarmValue(j), LEFT|(m_posHorz!=0 ? attr : 0), 3); + + if (attr && (s_editMode>0 || p1valdiff)) { + switch (m_posHorz) { + case 0: + CHECK_INCDEC_MODELVAR(event, g_model.frsky.rssiAlarms[j].level, -3, 2); // circular (saves flash) + break; + case 1: + CHECK_INCDEC_MODELVAR(event, g_model.frsky.rssiAlarms[j].value, -30, 30); + break; + } + } +#endif + break; + } + +#if defined(FRSKY_HUB) || defined(WS_HOW_HIGH) + case ITEM_TELEMETRY_USR_LABEL: + lcd_putsLeft(y, STR_USRDATA); + break; + +#if !defined(PCBTARANIS) + case ITEM_TELEMETRY_USR_PROTO: + lcd_putsLeft(y, STR_PROTO); + lcd_putsiAtt(TELEM_COL2, y, STR_VTELPROTO, g_model.frsky.usrProto, attr); + if (attr) CHECK_INCDEC_MODELVAR_ZERO(event, g_model.frsky.usrProto, USR_PROTO_LAST); + break; +#endif + + case ITEM_TELEMETRY_USR_BLADES: + lcd_putsLeft(y, STR_BLADES); + lcd_outdezAtt(TELEM_COL2+FWNUM, y, 2+g_model.frsky.blades, attr); + if (attr) CHECK_INCDEC_MODELVAR_ZERO(event, g_model.frsky.blades, 3); + break; +#endif + + case ITEM_TELEMETRY_USR_VOLTAGE_SOURCE: + lcd_putsLeft(y, STR_VOLTAGE); + lcd_putsiAtt(TELEM_COL2, y, STR_VOLTSRC, g_model.frsky.voltsSource+1, attr); + if (attr) CHECK_INCDEC_MODELVAR_ZERO(event, g_model.frsky.voltsSource, 3); + break; + + case ITEM_TELEMETRY_USR_CURRENT_SOURCE: + lcd_putsLeft(y, STR_CURRENT); + lcd_putsiAtt(TELEM_COL2, y, STR_VOLTSRC, g_model.frsky.currentSource, attr); + if (attr) CHECK_INCDEC_MODELVAR_ZERO(event, g_model.frsky.currentSource, 3); + break; + +#if defined(CPUARM) + case ITEM_TELEMTETRY_PERSISTENT_MAH: + g_model.frsky.mAhPersistent = onoffMenuItem(g_model.frsky.mAhPersistent, TELEM_COL2, y, STR_PERSISTENT_MAH, attr, event); + break; +#endif + +#if defined(VARIO) + case ITEM_TELEMETRY_VARIO_LABEL: + lcd_putsLeft(y, STR_VARIO); + break; + + case ITEM_TELEMETRY_VARIO_SOURCE: + lcd_putsLeft(y, STR_SOURCE); + lcd_putsiAtt(TELEM_COL2, y, STR_VARIOSRC, g_model.frsky.varioSource, attr); + if (attr) CHECK_INCDEC_MODELVAR(event, g_model.frsky.varioSource, 0, VARIO_SOURCE_LAST); + break; + + case ITEM_TELEMETRY_VARIO_RANGE: + lcd_putsLeft(y, STR_LIMIT); +#if defined(PCBSTD) + lcd_outdezAtt(TELEM_COL2, y, 5+g_model.frsky.varioCenterMax, (m_posHorz==0 ? attr : 0)|PREC1|LEFT); + lcd_outdezAtt(TELEM_COL2+8*FW, y, 10+g_model.frsky.varioMax, (m_posHorz==1 ? attr : 0)); + if (attr && (s_editMode>0 || p1valdiff)) { + switch (m_posHorz) { + case 0: + CHECK_INCDEC_MODELVAR(event, g_model.frsky.varioCenterMax, -15, +15); + break; + case 1: + CHECK_INCDEC_MODELVAR(event, g_model.frsky.varioMax, -7, 7); + break; + } + } +#else + lcd_outdezAtt(TELEM_COL2, y, -10+g_model.frsky.varioMin, (m_posHorz<=0 ? attr : 0)|LEFT); + if (g_model.frsky.varioCenterMin == -16) + lcd_putsAtt(TELEM_COL2+4*FW-2, y, STR_OFF, m_posHorz==1 ? attr : 0); + else + lcd_outdezAtt(TELEM_COL2+7*FW-2, y, -5+g_model.frsky.varioCenterMin, ((m_posHorz<0 || m_posHorz==1) ? attr : 0)|PREC1); + lcd_outdezAtt(TELEM_COL2+10*FW, y, 5+g_model.frsky.varioCenterMax, ((m_posHorz<0 || m_posHorz==2) ? attr : 0)|PREC1); + lcd_outdezAtt(TELEM_COL2+13*FW+2, y, 10+g_model.frsky.varioMax, ((m_posHorz<0 || m_posHorz==3) ? attr : 0)); + if (attr && (s_editMode>0 || p1valdiff)) { + switch (m_posHorz) { + case 0: + CHECK_INCDEC_MODELVAR(event, g_model.frsky.varioMin, -7, 7); + break; + case 1: + CHECK_INCDEC_MODELVAR(event, g_model.frsky.varioCenterMin, -16, 5+min(10, g_model.frsky.varioCenterMax+5)); + break; + case 2: + CHECK_INCDEC_MODELVAR(event, g_model.frsky.varioCenterMax, -5+max(-10, g_model.frsky.varioCenterMin-5), +15); + break; + case 3: + CHECK_INCDEC_MODELVAR(event, g_model.frsky.varioMax, -7, 7); + break; + } + } +#endif + break; +#endif + +#if defined(PCBTARANIS) + case ITEM_TELEMETRY_TOP_BAR_LABEL: + lcd_putsLeft(y, STR_TOP_BAR); + break; + + case ITEM_TELEMETRY_TOP_BAR_ALTITUDE: + g_model.frsky.altitudeDisplayed = onoffMenuItem(g_model.frsky.altitudeDisplayed, TELEM_COL2, y, STR_ALTITUDE, attr, event); + break; +#endif + + case ITEM_TELEMETRY_SCREEN_LABEL1: + case ITEM_TELEMETRY_SCREEN_LABEL2: +#if defined(CPUARM) + case ITEM_TELEMETRY_SCREEN_LABEL3: + { + uint8_t screenIndex = (k < ITEM_TELEMETRY_SCREEN_LABEL2 ? 0 : (k < ITEM_TELEMETRY_SCREEN_LABEL3 ? 1 : 2)); + putsStrIdx(0*FW, y, STR_SCREEN, screenIndex+1); +#if defined(GAUGES) + bool screenType = IS_BARS_SCREEN(screenIndex); + if (screenType != selectMenuItem(TELEM_SCRTYPE_COL, y, PSTR(""), STR_VSCREEN, screenType, 0, 1, attr, event)) + g_model.frsky.screensType ^= (1 << screenIndex); +#endif + break; + } +#else + { + uint8_t screenIndex = (k < ITEM_TELEMETRY_SCREEN_LABEL2 ? 1 : 2); + putsStrIdx(0*FW, y, STR_SCREEN, screenIndex); +#if defined(GAUGES) + bool screenType = g_model.frsky.screensType & screenIndex; + if (screenType != selectMenuItem(TELEM_SCRTYPE_COL, y, PSTR(""), STR_VSCREEN, screenType, 0, 1, attr, event)) + g_model.frsky.screensType ^= screenIndex; +#endif + break; + } +#endif + + case ITEM_TELEMETRY_SCREEN_LINE1: + case ITEM_TELEMETRY_SCREEN_LINE2: + case ITEM_TELEMETRY_SCREEN_LINE3: + case ITEM_TELEMETRY_SCREEN_LINE4: + case ITEM_TELEMETRY_SCREEN_LINE5: + case ITEM_TELEMETRY_SCREEN_LINE6: + case ITEM_TELEMETRY_SCREEN_LINE7: + case ITEM_TELEMETRY_SCREEN_LINE8: + +#if defined(CPUARM) + case ITEM_TELEMETRY_SCREEN_LINE9: + case ITEM_TELEMETRY_SCREEN_LINE10: + case ITEM_TELEMETRY_SCREEN_LINE11: + case ITEM_TELEMETRY_SCREEN_LINE12: +#endif + + { + uint8_t screenIndex, lineIndex; + if (k < ITEM_TELEMETRY_SCREEN_LABEL2) { + screenIndex = 0; + lineIndex = k-ITEM_TELEMETRY_SCREEN_LINE1; + } +#if defined(CPUARM) + else if (k >= ITEM_TELEMETRY_SCREEN_LABEL3) { + screenIndex = 2; + lineIndex = k-ITEM_TELEMETRY_SCREEN_LINE9; + } +#endif + else { + screenIndex = 1; + lineIndex = k-ITEM_TELEMETRY_SCREEN_LINE5; + } + +#if 0 + putsStrIdx(0, y, PSTR(INDENT"Line"), lineIndex+1, m_posHorz<0 ? attr : 0); +#endif + +#if defined(GAUGES) + if (IS_BARS_SCREEN(screenIndex)) { + FrSkyBarData & bar = g_model.frsky.screens[screenIndex].bars[lineIndex]; + uint8_t barSource = bar.source; + lcd_putsiAtt(TELEM_COL1, y, STR_VTELEMCHNS, barSource, m_posHorz==0 ? attr : 0); + if (barSource) { + putsTelemetryChannel(TELEM_BARS_COLMIN, y, barSource-1, convertTelemValue(barSource, bar.barMin), (m_posHorz==1 ? attr : 0) | LEFT); + putsTelemetryChannel(TELEM_BARS_COLMAX, y, barSource-1, convertTelemValue(barSource, 255-bar.barMax), (m_posHorz==2 ? attr : 0) | LEFT); + } + else if (attr) { + MOVE_CURSOR_FROM_HERE(); + } + if (attr && (s_editMode>0 || p1valdiff)) { + switch (m_posHorz) { + case 0: + bar.source = checkIncDecModel(event, barSource, 0, TELEM_DISPLAY_MAX); + if (checkIncDec_Ret) { + bar.barMin = 0; + bar.barMax = 255-maxTelemValue(bar.source); + } + break; + case 1: + bar.barMin = checkIncDec(event, bar.barMin, 0, 254-bar.barMax, EE_MODEL|NO_INCDEC_MARKS); + break; + case 2: + bar.barMax = 255 - checkIncDec(event, 255-bar.barMax, bar.barMin+1, maxTelemValue(barSource), EE_MODEL|NO_INCDEC_MARKS); + break; + } + } + } + else +#endif + { + for (uint8_t c=0; c0 || p1valdiff)) { + CHECK_INCDEC_MODELVAR_ZERO(event, value, (lineIndex==3 && c==0) ? TELEM_STATUS_MAX : TELEM_DISPLAY_MAX); + } + } + if (attr && m_posHorz == NUM_LINE_ITEMS) { + REPEAT_LAST_CURSOR_MOVE(); + } + } + break; + } + } + } +} +#endif + +#if defined(TEMPLATES) +void menuModelTemplates(uint8_t event) +{ + SIMPLE_MENU(STR_MENUTEMPLATES, menuTabModel, e_Templates, 1+TMPL_COUNT); + + uint8_t sub = m_posVert - 1; + + if (sub < TMPL_COUNT) { + if (s_warning_result) { + s_warning_result = 0; + applyTemplate(sub); + AUDIO_WARNING2(); + } + if (event==EVT_KEY_BREAK(KEY_ENTER)) { + POPUP_CONFIRMATION(STR_VTEMPLATES+1 + (sub * LEN2_VTEMPLATES)); + s_editMode = 0; + } + } + + uint8_t y = 1 + 1*FH; + uint8_t k = 0; + for (uint8_t i=0; i + * - Andreas Weitl + * - Bertrand Songis + * - Bryan J. Rentoul (Gruvin) + * - Cameron Weeks + * - Erez Raviv + * - Gabriel Birkus + * - Jean-Pierre Parisy + * - Karl Szmutny + * - Michael Blandford + * - Michal Hlavinka + * - Pat Mackenzie + * - Philip Moss + * - Rob Thomson + * - Romolo Manfredini + * - Thomas Husterer + * + * opentx is based on code named + * gruvin9x by Bryan J. Rentoul: http://code.google.com/p/gruvin9x/, + * er9x by Erez Raviv: http://code.google.com/p/er9x/, + * and the original (and ongoing) project by + * Thomas Husterer, th9x: http://code.google.com/p/th9x/ + * + * This program 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. + * + * This program 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. See the + * GNU General Public License for more details. + * + */ + +#ifndef myeeprom_h +#define myeeprom_h + +#include + +#define WARN_THR_BIT 0x01 +#define WARN_BEP_BIT 0x80 +#define WARN_SW_BIT 0x02 +#define WARN_MEM_BIT 0x04 +#define WARN_BVAL_BIT 0x38 + +#define WARN_THR (!(g_eeGeneral.warnOpts & WARN_THR_BIT)) +#define WARN_BEP (!(g_eeGeneral.warnOpts & WARN_BEP_BIT)) +#define WARN_SW (!(g_eeGeneral.warnOpts & WARN_SW_BIT)) +#define WARN_MEM (!(g_eeGeneral.warnOpts & WARN_MEM_BIT)) +#define BEEP_VAL ( (g_eeGeneral.warnOpts & WARN_BVAL_BIT) >>3 ) + +#if defined(PCBTARANIS) + #define EEPROM_VER 216 +#elif defined(PCBSKY9X) + #define EEPROM_VER 216 +#elif defined(CPUM2560) || defined(CPUM2561) + #define EEPROM_VER 216 +#elif defined(CPUM128) + #define EEPROM_VER 216 +#else + #define EEPROM_VER 216 +#endif + +#ifndef PACK +#define PACK( __Declaration__ ) __Declaration__ __attribute__((__packed__)) +#endif + +#if defined(PCBTARANIS) + #define MAX_MODELS 60 + #define NUM_CHNOUT 32 // number of real output channels CH1-CH32 + #define MAX_PHASES 9 + #define MAX_MIXERS 64 + #define MAX_EXPOS 64 + #define NUM_CSW 32 // number of custom switches + #define NUM_CFN 32 // number of functions assigned to switches + #define MAX_SCRIPTS 3 + #define MAX_INPUTS 32 +#elif defined(CPUARM) + #define MAX_MODELS 60 + #define NUM_CHNOUT 32 // number of real output channels CH1-CH32 + #define MAX_PHASES 9 + #define MAX_MIXERS 64 + #define MAX_EXPOS 32 + #define NUM_CSW 32 // number of custom switches + #define NUM_CFN 32 // number of functions assigned to switches +#elif defined(CPUM2560) || defined(CPUM2561) + #define MAX_MODELS 30 + #define NUM_CHNOUT 16 // number of real output channels CH1-CH16 + #define MAX_PHASES 6 + #define MAX_MIXERS 32 + #define MAX_EXPOS 16 + #define NUM_CSW 15 // number of custom switches + #define NUM_CFN 24 // number of functions assigned to switches +#elif defined(CPUM128) + #define MAX_MODELS 30 + #define NUM_CHNOUT 16 // number of real output channels CH1-CH16 + #define MAX_PHASES 5 + #define MAX_MIXERS 32 + #define MAX_EXPOS 14 + #define NUM_CSW 15 // number of custom switches + #define NUM_CFN 24 // number of functions assigned to switches +#else + #define MAX_MODELS 16 + #define NUM_CHNOUT 16 // number of real output channels CH1-CH16 + #define MAX_PHASES 5 + #define MAX_MIXERS 32 + #define MAX_EXPOS 14 + #define NUM_CSW 12 // number of custom switches + #define NUM_CFN 16 // number of functions assigned to switches +#endif + +#define MAX_TIMERS 2 + +#if defined(PCBTARANIS) + enum CurveType { + CURVE_TYPE_STANDARD, + CURVE_TYPE_CUSTOM, + CURVE_TYPE_LAST = CURVE_TYPE_CUSTOM + }; +PACK(typedef struct t_CurveInfo { + uint8_t type:3; + uint8_t smooth:1; + uint8_t spare:4; + int8_t points; +}) CurveInfo; + #define MAX_CURVES 32 + #define NUM_POINTS 512 + #define CURVDATA CurveInfo +#elif defined(CPUARM) + #define MAX_CURVES 16 + #define NUM_POINTS 512 + #define CURVDATA int16_t +#else + #define MAX_CURVES 8 + #define NUM_POINTS (112-MAX_CURVES) + #define CURVDATA int8_t +#endif + +#if defined(PCBTARANIS) || defined(PCBSKY9X) + #define NUM_MODULES 2 +#else + #define NUM_MODULES 1 +#endif + +typedef int16_t gvar_t; + +#if !defined(PCBSTD) + #define LEN_GVAR_NAME 6 + #define GVAR_MAX 1024 + #define GVAR_LIMIT 500 + PACK(typedef struct { + char name[LEN_GVAR_NAME]; + uint8_t popup:1; + uint8_t spare:7; + }) global_gvar_t; +#endif + +#define RESERVE_RANGE_FOR_GVARS 10 +// even we do not spend space in EEPROM for 10 GVARS, we reserve the space inside the range of values, like offset, weight, etc. + +#if defined(PCBSTD) && defined(GVARS) + #define MAX_GVARS 5 + #define MODEL_GVARS_DATA gvar_t gvars[MAX_GVARS]; + #define PHASE_GVARS_DATA + #define GVAR_VALUE(x, p) g_model.gvars[x] +#elif defined(PCBSTD) + #define MAX_GVARS 0 + #define MODEL_GVARS_DATA + #define PHASE_GVARS_DATA +#else + #if defined(CPUARM) + #define MAX_GVARS 9 + #else + #define MAX_GVARS 5 + #endif + #define MODEL_GVARS_DATA global_gvar_t gvars[MAX_GVARS]; + #define PHASE_GVARS_DATA gvar_t gvars[MAX_GVARS] + #define GVAR_VALUE(x, p) g_model.phaseData[p].gvars[x] +#endif + +PACK(typedef struct t_TrainerMix { + uint8_t srcChn:6; // 0-7 = ch1-8 + uint8_t mode:2; // off,add-mode,subst-mode + int8_t studWeight; +}) TrainerMix; + +PACK(typedef struct t_TrainerData { + int16_t calib[4]; + TrainerMix mix[4]; +}) TrainerData; + +PACK(typedef struct t_FrSkyRSSIAlarm { + int8_t level:2; + int8_t value:6; +}) FrSkyRSSIAlarm; + +#if defined(PCBTARANIS) +enum MainViews { + VIEW_TIMERS, + VIEW_INPUTS, + VIEW_SWITCHES, + VIEW_COUNT +}; +#else +enum MainViews { + VIEW_OUTPUTS_VALUES, + VIEW_OUTPUTS_BARS, + VIEW_INPUTS, + VIEW_TIMER2, + VIEW_COUNT +}; +#endif + +enum BeeperMode { + e_mode_quiet = -2, + e_mode_alarms, + e_mode_nokeys, + e_mode_all +}; + +#if defined(CPUARM) + #define EXTRA_GENERAL_FIELDS \ + uint8_t backlightBright; \ + int8_t currentCalib; \ + int8_t temperatureWarn; \ + uint8_t mAhWarn; \ + uint16_t mAhUsed; \ + uint32_t globalTimer; \ + int8_t temperatureCalib; \ + uint8_t btBaudrate; \ + uint8_t optrexDisplay; \ + uint8_t sticksGain; \ + uint8_t rotarySteps; \ + uint8_t countryCode; \ + uint8_t imperial; \ + char ttsLanguage[2]; \ + int8_t beepVolume; \ + int8_t wavVolume; \ + int8_t varioVolume; \ + int8_t backgroundVolume; +#elif defined(PXX) + #define EXTRA_GENERAL_FIELDS uint8_t countryCode; +#else + #define EXTRA_GENERAL_FIELDS +#endif + +PACK(typedef struct t_ModuleData { + int8_t rfProtocol; + uint8_t channelsStart; + int8_t channelsCount; // 0=8 channels + uint8_t failsafeMode; + int16_t failsafeChannels[NUM_CHNOUT]; + int8_t ppmDelay; + int8_t ppmFrameLength; + uint8_t ppmPulsePol; +}) ModuleData; + +#define SET_DEFAULT_PPM_FRAME_LENGTH(idx) g_model.moduleData[idx].ppmFrameLength = 4 * max((int8_t)0, g_model.moduleData[idx].channelsCount) + +#define MAX_SCRIPT_INPUTS 10 +#define MAX_SCRIPT_OUTPUTS 6 +PACK(typedef struct t_ScriptData { + char file[10]; + char name[10]; + int8_t inputs[MAX_SCRIPT_INPUTS]; +}) ScriptData; + +#if defined(PCBTARANIS) + enum ModuleIndex { + INTERNAL_MODULE, + EXTERNAL_MODULE, + TRAINER_MODULE + }; + #define MODELDATA_BITMAP char bitmap[LEN_BITMAP_NAME]; + #define MODELDATA_EXTRA uint8_t externalModule; uint8_t trainerMode; ModuleData moduleData[NUM_MODULES+1]; char curveNames[MAX_CURVES][6]; ScriptData scriptsData[MAX_SCRIPTS]; char inputNames[MAX_INPUTS][4]; + #define LIMITDATA_EXTRA char name[LEN_CHANNEL_NAME]; int8_t curve; + #define swstate_t uint16_t +#elif defined(PCBSKY9X) + #define MODELDATA_BITMAP + #define MODELDATA_EXTRA ModuleData moduleData[NUM_MODULES]; + #define LIMITDATA_EXTRA + #define swstate_t uint8_t +#else + #define MODELDATA_BITMAP + #define MODELDATA_EXTRA + #define LIMITDATA_EXTRA + #define swstate_t uint8_t +#endif + +enum BacklightMode { + e_backlight_mode_off = 0, + e_backlight_mode_keys = 1, + e_backlight_mode_sticks = 2, + e_backlight_mode_all = e_backlight_mode_keys+e_backlight_mode_sticks, + e_backlight_mode_on +}; + +#if defined(FSPLASH) || defined(XSPLASH) + #define SPLASH_MODE uint8_t splashMode:3 +#else + #define SPLASH_MODE uint8_t splashMode:1; uint8_t spare4:2 +#endif + +#define ALTERNATE_VIEW 0x10 +PACK(typedef struct t_EEGeneral { + uint8_t version; + uint16_t variant; + int16_t calibMid[NUM_STICKS+NUM_POTS]; + int16_t calibSpanNeg[NUM_STICKS+NUM_POTS]; + int16_t calibSpanPos[NUM_STICKS+NUM_POTS]; + uint16_t chkSum; + int8_t currModel; + uint8_t contrast; + uint8_t vBatWarn; + int8_t vBatCalib; + int8_t backlightMode; + TrainerData trainer; + uint8_t view; // index of view in main screen + int8_t buzzerMode:2; // -2=quiet, -1=only alarms, 0=no keys, 1=all + uint8_t fai:1; + int8_t beepMode:2; // -2=quiet, -1=only alarms, 0=no keys, 1=all + uint8_t alarmsFlash:1; + uint8_t disableMemoryWarning:1; + uint8_t disableAlarmWarning:1; + uint8_t stickMode:2; + int8_t timezone:5; + uint8_t spare1:1; + uint8_t inactivityTimer; + uint8_t mavbaud:3; + SPLASH_MODE; /* 3bits */ + int8_t hapticMode:2; // -2=quiet, -1=only alarms, 0=no keys, 1=all + uint8_t blOffBright:4; + uint8_t blOnBright:4; + uint8_t lightAutoOff; + uint8_t templateSetup; // RETA order for receiver channels + int8_t PPM_Multiplier; + int8_t hapticLength; + uint8_t reNavigation; // not used on STOCK board + int8_t beepLength:3; + uint8_t hapticStrength:3; + uint8_t gpsFormat:1; + uint8_t unexpectedShutdown:1; + uint8_t speakerPitch; + int8_t speakerVolume; + int8_t vBatMin; + int8_t vBatMax; + + EXTRA_GENERAL_FIELDS + + swstate_t switchUnlockStates; + +}) EEGeneral; + +#if defined(PCBTARANIS) + #define LEN_MODEL_NAME 12 + #define LEN_BITMAP_NAME 10 + #define LEN_EXPOMIX_NAME 8 + #define LEN_FP_NAME 10 + #define LEN_CHANNEL_NAME 6 +#elif defined(PCBSKY9X) + #define LEN_MODEL_NAME 10 + #define LEN_EXPOMIX_NAME 6 + #define LEN_FP_NAME 6 +#else + #define LEN_MODEL_NAME 10 + #define LEN_FP_NAME 6 +#endif + +#if defined(PCBTARANIS) +enum CurveRefType { + CURVE_REF_DIFF, + CURVE_REF_EXPO, + CURVE_REF_FUNC, + CURVE_REF_CUSTOM +}; +PACK(typedef struct t_CurveRef { + uint8_t type; + int8_t value; +}) CurveRef; +#else + #define MODE_DIFFERENTIAL 0 + #define MODE_EXPO 0 + #define MODE_CURVE 1 +#endif + +#if defined(PCBTARANIS) +PACK(typedef struct t_ExpoData { + uint8_t srcRaw; + uint16_t scale; + uint8_t chn; + int8_t swtch; + uint16_t phases; + int8_t weight; + int8_t carryTrim; + char name[LEN_EXPOMIX_NAME]; + int8_t offset; + CurveRef curve; + uint8_t spare; +}) ExpoData; +#define MIN_EXPO_WEIGHT -100 +#define EXPO_VALID(ed) ((ed)->srcRaw) +#define EXPO_MODE_ENABLE(ed, v) (true) +#elif defined(CPUARM) +PACK(typedef struct t_ExpoData { + uint8_t mode; // 0=end, 1=pos, 2=neg, 3=both + uint8_t chn; + int8_t swtch; + uint16_t phases; + int8_t weight; + uint8_t curveMode; + char name[LEN_EXPOMIX_NAME]; + int8_t curveParam; +}) ExpoData; +#define MIN_EXPO_WEIGHT 0 +#define EXPO_VALID(ed) ((ed)->mode) +#define EXPO_MODE_ENABLE(ed, v) ((v<0 && (ed->mode&1)) || (v>=0 && (ed->mode&2))) +#elif defined(CPUM2560) || defined(CPUM2561) +PACK(typedef struct t_ExpoData { + uint8_t mode:2; // 0=end, 1=pos, 2=neg, 3=both + uint8_t chn:2; + uint8_t curveMode:1; + uint8_t spare:3; + uint8_t phases; + int8_t swtch; + uint8_t weight; + int8_t curveParam; +}) ExpoData; +#define MIN_EXPO_WEIGHT 0 +#define EXPO_VALID(ed) ((ed)->mode) +#define EXPO_MODE_ENABLE(ed, v) ((v<0 && (ed->mode&1)) || (v>=0 && (ed->mode&2))) +#else +PACK(typedef struct t_ExpoData { + uint8_t mode:2; // 0=end, 1=pos, 2=neg, 3=both + int8_t swtch:6; + uint8_t chn:2; + uint8_t phases:5; + uint8_t curveMode:1; + uint8_t weight; // One spare bit here (used for GVARS) + int8_t curveParam; +}) ExpoData; +#define MIN_EXPO_WEIGHT 0 +#define EXPO_VALID(ed) ((ed)->mode) +#define EXPO_MODE_ENABLE(ed, v) ((v<0 && (ed->mode&1)) || (v>=0 && (ed->mode&2))) +#endif + +#if defined(CPUARM) + #define limit_min_max_t int16_t + #define LIMIT_MAX(lim) (GV_IS_GV_VALUE(lim->max+1000, 0, 1250) ? GET_GVAR(lim->max+1000, 0, 125, s_perout_flight_phase)*10 : lim->max+1000) + #define LIMIT_MIN(lim) (GV_IS_GV_VALUE(lim->min-1000, -1250, 0) ? GET_GVAR(lim->min-1000, -125, 0, s_perout_flight_phase)*10 : lim->min-1000) + #define LIMIT_OFS(lim) (GV_IS_GV_VALUE(lim->offset, -1000, 1000) ? GET_GVAR(lim->offset, -100, 100, s_perout_flight_phase)*10 : lim->offset) + #define LIMIT_MAX_RESX(lim) calc1000toRESX(LIMIT_MAX(lim)) + #define LIMIT_MIN_RESX(lim) calc1000toRESX(LIMIT_MIN(lim)) + #define LIMIT_OFS_RESX(lim) calc1000toRESX(LIMIT_OFS(lim)) +#else + #define limit_min_max_t int8_t + #define LIMIT_MAX(lim) (lim->max+100) + #define LIMIT_MIN(lim) (lim->min-100) + #define LIMIT_OFS(lim) (lim->offset) + #define LIMIT_MAX_RESX(lim) calc100toRESX(LIMIT_MAX(lim)) + #define LIMIT_MIN_RESX(lim) calc100toRESX(LIMIT_MIN(lim)) + #define LIMIT_OFS_RESX(lim) calc1000toRESX(LIMIT_OFS(lim)) +#endif + +PACK(typedef struct t_LimitData { + limit_min_max_t min; + limit_min_max_t max; + int8_t ppmCenter; + int16_t offset:14; + uint16_t symetrical:1; + uint16_t revert:1; + + LIMITDATA_EXTRA + +}) LimitData; + +#define TRIM_OFF (1) +#define TRIM_ON (0) +#define TRIM_RUD (-1) +#define TRIM_ELE (-2) +#define TRIM_THR (-3) +#define TRIM_AIL (-4) + +#define MLTPX_ADD 0 +#define MLTPX_MUL 1 +#define MLTPX_REP 2 + +#if defined(CPUARM) +#define DELAY_STEP 10 +#define SLOW_STEP 10 +#define DELAY_MAX (25*DELAY_STEP) /* 25 seconds */ +#define SLOW_MAX (25*SLOW_STEP) /* 25 seconds */ +#if defined(PCBTARANIS) +PACK(typedef struct t_MixData { + uint8_t destCh; + uint16_t phases; + uint8_t mltpx; // multiplex method: 0 means +=, 1 means *=, 2 means := + int16_t weight; + int8_t swtch; + CurveRef curve; + uint8_t mixWarn:4; // mixer warning + uint8_t srcVariant:4; + uint8_t delayUp; + uint8_t delayDown; + uint8_t speedUp; + uint8_t speedDown; + uint8_t srcRaw; + int16_t offset; + char name[LEN_EXPOMIX_NAME]; + uint8_t spare; +}) MixData; +#else +PACK(typedef struct t_MixData { + uint8_t destCh; + uint16_t phases; + uint8_t curveMode:1; + uint8_t noExpo:1; + int8_t carryTrim:3; + uint8_t mltpx:2; // multiplex method: 0 means +=, 1 means *=, 2 means := + uint8_t spare:1; + int16_t weight; + int8_t swtch; + int8_t curveParam; + uint8_t mixWarn:4; // mixer warning + uint8_t srcVariant:4; + uint8_t delayUp; + uint8_t delayDown; + uint8_t speedUp; + uint8_t speedDown; + uint8_t srcRaw; + int16_t offset; + char name[LEN_EXPOMIX_NAME]; +}) MixData; +#endif +#define MD_WEIGHT(md) (md->weight) +#define MD_WEIGHT_TO_UNION(md, var) var.word = md->weight +#define MD_UNION_TO_WEIGHT(var, md) md->weight = var.word +// #define MD_SETWEIGHT(md, val) md->weight = val + +PACK( union u_int8int16_t { + struct { + int8_t lo; + uint8_t hi; + } bytes_t; + int16_t word; +}); + +#define MD_OFFSET(md) (md->offset) +#define MD_OFFSET_TO_UNION(md, var) var.word = md->offset +#define MD_UNION_TO_OFFSET(var, md) md->offset = var.word +// #define MD_SETOFFSET(md, val) md->offset = val + +#else +#define DELAY_STEP 2 +#define SLOW_STEP 2 +#define DELAY_MAX 15 /* 7.5 seconds */ +#define SLOW_MAX 15 /* 7.5 seconds */ + +#if defined(CPUM2560) || defined(CPUM2561) +PACK(typedef struct t_MixData { + uint8_t destCh:4; // 0, 1..NUM_CHNOUT + uint8_t curveMode:1; // O=curve, 1=differential + uint8_t noExpo:1; + uint8_t weightMode:1; + uint8_t offsetMode:1; + uint8_t srcRaw; + int8_t weight; + int8_t swtch; + uint8_t phases; + uint8_t mltpx:2; // multiplex method: 0 means +=, 1 means *=, 2 means := + int8_t carryTrim:3; + uint8_t mixWarn:2; // mixer warning + uint8_t spare:1; + uint8_t delayUp:4; + uint8_t delayDown:4; + uint8_t speedUp:4; + uint8_t speedDown:4; + int8_t curveParam; + int8_t offset; +}) MixData; +#else +PACK(typedef struct t_MixData { + uint8_t destCh:4; // 0, 1..NUM_CHNOUT + uint8_t curveMode:1; // O=curve, 1=differential + uint8_t noExpo:1; + uint8_t weightMode:1; + uint8_t offsetMode:1; + int8_t weight; + int8_t swtch:6; + uint8_t mltpx:2; // multiplex method: 0 means +=, 1 means *=, 2 means := + uint8_t phases:5; + int8_t carryTrim:3; + uint8_t srcRaw:6; + uint8_t mixWarn:2; // mixer warning + uint8_t delayUp:4; + uint8_t delayDown:4; + uint8_t speedUp:4; + uint8_t speedDown:4; + int8_t curveParam; + int8_t offset; +}) MixData; +#endif +PACK( union u_gvarint_t { + struct { + int8_t lo; + uint8_t hi; + } bytes_t; + int16_t word; + + u_gvarint_t(int8_t l, uint8_t h) {bytes_t.lo=l; bytes_t.hi=h?255:0;} // hi bit is negativ sign + +private: + // prevent unwanted constructors, also saves program + u_gvarint_t() {} + u_gvarint_t(const u_gvarint_t&) {} +}); +#define MD_WEIGHT(md) (u_gvarint_t(md->weight,md->weightMode).word) + +PACK( union u_int8int16_t { + struct { + int8_t lo; + uint8_t hi; + } bytes_t; + int16_t word; +}); + +#define MD_WEIGHT_TO_UNION(md, var) var.bytes_t.lo=md->weight; var.bytes_t.hi=md->weightMode?255:0 +#define MD_UNION_TO_WEIGHT(var, md) md->weight=var.bytes_t.lo; if (var.word<0) md->weightMode=1; else md->weightMode=0 +// #define MD_SETWEIGHT(md, val) md->weight=val; if (val<0) md->weightMode=1; else md->weightMode=0 + +#define MD_OFFSET(md) (u_gvarint_t(md->offset,md->offsetMode).word) +#define MD_OFFSET_TO_UNION(md, var) var.bytes_t.lo=md->offset; var.bytes_t.hi=md->offsetMode?255:0 +#define MD_UNION_TO_OFFSET(var, md) md->offset=var.bytes_t.lo; if (var.word<0) md->offsetMode=1; else md->offsetMode=0 /* set negative sign */ +// #define MD_SETOFFSET(md, val) md->offset=val; if (val<0) md->offsetMode=1; else md->offsetMode=0 + +#endif + +#if defined(CPUARM) +#define MAX_CSW_DURATION 120 /*60s*/ +#define MAX_CSW_DELAY 120 /*60s*/ +#define MAX_CSW_ANDSW MAX_SWITCH +typedef int16_t csw_telemetry_value_t; +PACK(typedef struct t_CustomSwData { // Custom Switches data + int16_t v1; + int16_t v2; + uint8_t func; + uint8_t delay; + uint8_t duration; + int8_t andsw; +}) CustomSwData; +#else +typedef uint8_t csw_telemetry_value_t; +#define MAX_CSW_ANDSW 15 +PACK(typedef struct t_CustomSwData { // Custom Switches data + int8_t v1; //input + int8_t v2; //offset + uint8_t func:4; + uint8_t andsw:4; +}) CustomSwData; +#endif + +enum Functions { +#if defined(CPUARM) + FUNC_SAFETY_CH1, + FUNC_SAFETY_CH16=FUNC_SAFETY_CH1+15, +#else + FUNC_SAFETY_GROUP1, + FUNC_SAFETY_GROUP2, + FUNC_SAFETY_GROUP3, + FUNC_SAFETY_GROUP4, +#endif + FUNC_TRAINER, + FUNC_TRAINER_RUD, + FUNC_TRAINER_ELE, + FUNC_TRAINER_THR, + FUNC_TRAINER_AIL, + FUNC_INSTANT_TRIM, + FUNC_PLAY_SOUND, +#if !defined(PCBTARANIS) + FUNC_HAPTIC, +#endif + FUNC_RESET, + FUNC_VARIO, + FUNC_PLAY_TRACK, +#if !defined(CPUARM) + FUNC_PLAY_BOTH, +#endif + FUNC_PLAY_VALUE, +#if !defined(PCBSTD) + FUNC_LOGS, +#endif +#if defined(CPUARM) + FUNC_VOLUME, +#endif + FUNC_BACKLIGHT, +#if defined(CPUARM) + FUNC_BACKGND_MUSIC, + FUNC_BACKGND_MUSIC_PAUSE, +#endif +#if defined(GVARS) + FUNC_ADJUST_GV1, + FUNC_ADJUST_GVLAST = (FUNC_ADJUST_GV1 + (MAX_GVARS-1)), +#endif +#if defined(DEBUG) + FUNC_TEST, // should remain the last before MAX as not added in companion9x +#endif + FUNC_MAX +}; + +#if defined(GVARS) + #define IS_ADJUST_GV_FUNCTION(sd) (CFN_FUNC(sd) >= FUNC_ADJUST_GV1 && CFN_FUNC(sd) <= FUNC_ADJUST_GVLAST) +#else + #define IS_ADJUST_GV_FUNCTION(sd) (0) +#endif + +#if defined(VOICE) + #define HAS_REPEAT_PARAM(sd) (CFN_FUNC(sd) == FUNC_PLAY_SOUND || (CFN_FUNC(sd) >= FUNC_PLAY_TRACK && CFN_FUNC(sd) <= FUNC_PLAY_VALUE)) +#else + #define HAS_REPEAT_PARAM(sd) (CFN_FUNC(sd) == FUNC_PLAY_SOUND) +#endif + +enum ResetFunctionParam { + FUNC_RESET_TIMER1, + FUNC_RESET_TIMER2, + FUNC_RESET_ALL, +#if defined(FRSKY) + FUNC_RESET_TELEMETRY, +#endif +#if ROTARY_ENCODERS > 0 + FUNC_RESET_ROTENC1, +#endif +#if ROTARY_ENCODERS > 1 + FUNC_RESET_ROTENC2, +#endif + FUNC_RESET_PARAMS_COUNT, + FUNC_RESET_PARAM_LAST = FUNC_RESET_PARAMS_COUNT-1 +}; + +enum AdjustGvarFunctionParam { + FUNC_ADJUST_GVAR_CONSTANT, + FUNC_ADJUST_GVAR_SOURCE, + FUNC_ADJUST_GVAR_GVAR, + FUNC_ADJUST_GVAR_INC, +}; + +#if defined(CPUARM) +#if defined(PCBTARANIS) + #define LEN_CFN_NAME 10 +#else + #define LEN_CFN_NAME 6 +#endif +PACK(typedef struct t_CustomFnData { // Function Switches data + int8_t swtch; + uint8_t func; + PACK(union { + char name[LEN_CFN_NAME]; + struct { + int16_t val; + int16_t ext1; + int16_t ext2; + } composite; + }) param; + uint8_t mode:2; + uint8_t active:6; +}) CustomFnData; +#define CFN_EMPTY(p) (!(p)->swtch) +#define CFN_FUNC(p) ((p)->func) +#define CFN_ACTIVE(p) ((p)->active) +#define CFN_CH_NUMBER(p) (CFN_FUNC(p)) +#define CFN_PLAY_REPEAT(p) ((p)->active) +#define CFN_PLAY_REPEAT_MUL 1 +#define CFN_PLAY_REPEAT_NOSTART 0x3F +#define CFN_GVAR_MODE(p) ((p)->mode) +#define CFN_PARAM(p) ((p)->param.composite.val) +#define CFN_RESET(p) (p->active = 0, memset(&(p)->param, 0, sizeof((p)->param))) +#else +PACK(typedef struct t_CustomFnData { + int8_t swtch; // input + union { + struct { + uint8_t param:3; + uint8_t func:5; + } func_param; + + struct { + uint8_t active:1; + uint8_t param:2; + uint8_t func:5; + } func_param_enable; + + struct { + uint8_t active:1; + uint8_t func:7; + } func_safety; + } internal; + uint8_t param; +}) CustomFnData; +#define CFN_FUNC(p) ((p)->internal.func_param.func) +#define CFN_ACTIVE(p) ((p)->internal.func_param_enable.active) +#define CFN_CH_NUMBER(p) ((p)->internal.func_safety.func) +#define CFN_PLAY_REPEAT(p) ((p)->internal.func_param.param) +#define CFN_PLAY_REPEAT_MUL 10 +#define CFN_GVAR_MODE(p) ((p)->internal.func_param_enable.param) +#define CFN_PARAM(p) ((p)->param) +#define CFN_RESET(p) ((p)->internal.func_param_enable.active = 0, CFN_PARAM(p) = 0) +#endif + +enum TelemetryUnit { + UNIT_VOLTS, + UNIT_AMPS, + UNIT_METERS_PER_SECOND, + UNIT_RAW, + UNIT_KMH, + UNIT_METERS, + UNIT_DEGREES, + UNIT_PERCENT, + UNIT_MILLIAMPS, + UNIT_A1A2_MAX = UNIT_MILLIAMPS, + UNIT_MAH, + UNIT_WATTS, + UNIT_DBM, + UNIT_FEET, + UNIT_KTS, + UNIT_HOURS, + UNIT_MINUTES, + UNIT_SECONDS, + UNIT_RPMS, + UNIT_G, +}; + +#if defined(CPUARM) +PACK(typedef struct t_FrSkyChannelData { + uint8_t ratio; // 0.0 means not used, 0.1V steps EG. 6.6 Volts = 66. 25.1V = 251, etc. + int16_t offset:12; + uint16_t type:4; // channel unit (0=volts, ...) + uint8_t alarms_value[2]; // 0.1V steps EG. 6.6 Volts = 66. 25.1V = 251, etc. + uint8_t alarms_level:4; + uint8_t alarms_greater:2; // 0=LT(<), 1=GT(>) + uint8_t spare:2; + uint8_t multiplier; // 0=no multiplier, 1=*2 multiplier +}) FrSkyChannelData; +#else +PACK(typedef struct t_FrSkyChannelData { + uint8_t ratio; // 0.0 means not used, 0.1V steps EG. 6.6 Volts = 66. 25.1V = 251, etc. + int16_t offset:12; + uint16_t type:4; // channel unit (0=volts, ...) + uint8_t alarms_value[2]; // 0.1V steps EG. 6.6 Volts = 66. 25.1V = 251, etc. + uint8_t alarms_level:4; + uint8_t alarms_greater:2; // 0=LT(<), 1=GT(>) + uint8_t multiplier:2; // 0=no multiplier, 1=*2 multiplier +}) FrSkyChannelData; +#endif + +enum TelemetrySource { + TELEM_NONE, + TELEM_TX_VOLTAGE, + TELEM_TM1, + TELEM_TM2, + TELEM_RSSI_TX, + TELEM_RSSI_RX, + TELEM_A1, + TELEM_A2, + TELEM_ALT, + TELEM_RPM, + TELEM_FUEL, + TELEM_T1, + TELEM_T2, + TELEM_SPEED, + TELEM_DIST, + TELEM_GPSALT, + TELEM_CELL, + TELEM_CELLS_SUM, + TELEM_VFAS, + TELEM_CURRENT, + TELEM_CONSUMPTION, + TELEM_POWER, + TELEM_ACCx, + TELEM_ACCy, + TELEM_ACCz, + TELEM_HDG, + TELEM_VSPD, + TELEM_MIN_A1, + TELEM_MIN_A2, + TELEM_MIN_ALT, + TELEM_MAX_ALT, + TELEM_MAX_RPM, + TELEM_MAX_T1, + TELEM_MAX_T2, + TELEM_MAX_SPEED, + TELEM_MAX_DIST, + // TODO TELEM_MIN_CELL, + // TODO TELEM_MIN_VFAS, + TELEM_MAX_CURRENT, + TELEM_MAX_POWER, + TELEM_ACC, + TELEM_GPS_TIME, + TELEM_CSW_MAX = TELEM_POWER, + TELEM_NOUSR_MAX = TELEM_A2, +#if defined(FRSKY) + TELEM_DISPLAY_MAX = TELEM_MAX_POWER, +#else + TELEM_DISPLAY_MAX = TELEM_TM2, // because used also in PlayValue +#endif + TELEM_STATUS_MAX = TELEM_GPS_TIME, +#if defined(FRSKY_SPORT) + TELEM_SWR = TELEM_RSSI_TX, + TELEM_FIRST_STREAMED_VALUE = TELEM_RSSI_RX, +#else + TELEM_FIRST_STREAMED_VALUE = TELEM_RSSI_TX, +#endif +}; + +enum VarioSource { +#if !defined(FRSKY_SPORT) + VARIO_SOURCE_ALTI, + VARIO_SOURCE_ALTI_PLUS, +#endif + VARIO_SOURCE_VARIO, + VARIO_SOURCE_A1, + VARIO_SOURCE_A2, + VARIO_SOURCE_LAST = VARIO_SOURCE_A2 +}; + +#if defined(FRSKY_HUB) + #define NUM_TELEMETRY TELEM_CSW_MAX +#elif defined(WS_HOW_HIGH) + #define NUM_TELEMETRY TELEM_ALT +#elif defined(FRSKY) + #define NUM_TELEMETRY TELEM_A2 +#elif defined(MAVLINK) + #define NUM_TELEMETRY 4 +#else + #define NUM_TELEMETRY TELEM_TM2 +#endif + +PACK(typedef struct t_FrSkyBarData { + uint8_t source; + uint8_t barMin; // minimum for bar display + uint8_t barMax; // ditto for max display (would usually = ratio) +}) FrSkyBarData; + +#if defined(PCBTARANIS) + #define NUM_LINE_ITEMS 3 +#else + #define NUM_LINE_ITEMS 2 +#endif +PACK(typedef struct t_FrSkyLineData { + uint8_t sources[NUM_LINE_ITEMS]; +}) FrSkyLineData; + +typedef union t_FrSkyScreenData { + FrSkyBarData bars[4]; + FrSkyLineData lines[4]; +} FrSkyScreenData; + +enum FrskyUsrProtocols { + USR_PROTO_NONE, + USR_PROTO_FRSKY, + USR_PROTO_WS_HOW_HIGH, + USR_PROTO_LAST = USR_PROTO_WS_HOW_HIGH, +}; + +enum FrskySource { + FRSKY_SOURCE_NONE, + FRSKY_SOURCE_A1, + FRSKY_SOURCE_A2, + FRSKY_SOURCE_FAS, + FRSKY_SOURCE_CELLS, +}; + +#if defined(CPUARM) +#define MAX_FRSKY_SCREENS 3 +PACK(typedef struct t_FrSkyData { + FrSkyChannelData channels[2]; + uint8_t usrProto; // Protocol in FrSky user data, 0=None, 1=FrSky hub, 2=WS HowHigh, 3=Halcyon + uint8_t voltsSource:7; + uint8_t altitudeDisplayed:1; + uint8_t blades; // How many blades for RPMs, 0=2 blades, 1=3 blades + uint8_t currentSource; + uint8_t screensType; + FrSkyScreenData screens[MAX_FRSKY_SCREENS]; + uint8_t varioSource; + int8_t varioCenterMax; + int8_t varioCenterMin; + int8_t varioMin; + int8_t varioMax; + FrSkyRSSIAlarm rssiAlarms[2]; + uint16_t mAhPersistent:1; + uint16_t storedMah:15; + int8_t fasOffset; +}) FrSkyData; +#else +#define MAX_FRSKY_SCREENS 2 +PACK(typedef struct t_FrSkyData { + FrSkyChannelData channels[2]; + uint8_t usrProto:2; // Protocol in FrSky user data, 0=None, 1=FrSky hub, 2=WS HowHigh, 3=Halcyon + uint8_t blades:2; // How many blades for RPMs, 0=2 blades, 1=3 blades + uint8_t screensType:2; + uint8_t voltsSource:2; + int8_t varioMin:4; + int8_t varioMax:4; + FrSkyRSSIAlarm rssiAlarms[2]; + FrSkyScreenData screens[MAX_FRSKY_SCREENS]; + uint8_t varioSource:3; + int8_t varioCenterMin:5; + uint8_t currentSource:3; + int8_t varioCenterMax:5; + int8_t fasOffset; +}) FrSkyData; +#endif + +#if defined(MAVLINK) +PACK(typedef struct t_MavlinkData { + uint8_t rc_rssi_scale:4; + uint8_t pc_rssi_en:1; + uint8_t spare1:3; + uint8_t spare2[3]; +}) MavlinkData; +#endif + +PACK(typedef struct t_SwashRingData { // Swash Ring data + uint8_t invertELE:1; + uint8_t invertAIL:1; + uint8_t invertCOL:1; + uint8_t type:5; + uint8_t collectiveSource; + uint8_t value; +}) SwashRingData; + +#define TRIM_EXTENDED_MAX 500 +#define TRIM_EXTENDED_MIN (-TRIM_EXTENDED_MAX) +#define TRIM_MAX 125 +#define TRIM_MIN (-TRIM_MAX) + +#define ROTARY_ENCODER_MAX 1024 + +#if defined(PCBTARANIS) +#define NUM_ROTARY_ENCODERS 0 +#define NUM_ROTARY_ENCODERS_EXTRA 0 +#define ROTARY_ENCODER_ARRAY_EXTRA +#define ROTARY_ENCODER_ARRAY int16_t rotaryEncoders[1]; +#elif defined(PCBSKY9X) +#define NUM_ROTARY_ENCODERS_EXTRA 0 +#define NUM_ROTARY_ENCODERS 1 +#define ROTARY_ENCODER_ARRAY int16_t rotaryEncoders[1]; +#define ROTARY_ENCODER_ARRAY_EXTRA +#elif defined(PCBGRUVIN9X) && ROTARY_ENCODERS > 2 +#define NUM_ROTARY_ENCODERS_EXTRA 2 +#define NUM_ROTARY_ENCODERS (2+NUM_ROTARY_ENCODERS_EXTRA) +#define ROTARY_ENCODER_ARRAY int16_t rotaryEncoders[2]; +#define ROTARY_ENCODER_ARRAY_EXTRA int16_t rotaryEncodersExtra[MAX_PHASES][NUM_ROTARY_ENCODERS_EXTRA]; +#elif defined(CPUM2560) && ROTARY_ENCODERS <= 2 +#define NUM_ROTARY_ENCODERS_EXTRA 0 +#define NUM_ROTARY_ENCODERS 2 +#define ROTARY_ENCODER_ARRAY int16_t rotaryEncoders[2]; +#define ROTARY_ENCODER_ARRAY_EXTRA +#else +#define NUM_ROTARY_ENCODERS_EXTRA 0 +#define NUM_ROTARY_ENCODERS 0 +#define ROTARY_ENCODER_ARRAY +#define ROTARY_ENCODER_ARRAY_EXTRA +#endif + +#if defined(PCBSTD) + #define TRIMS_ARRAY int8_t trim[4]; int8_t trim_ext:8 + #define TRIMS_ARRAY_SIZE 5 +#else + #define TRIMS_ARRAY int16_t trim[4] + #define TRIMS_ARRAY_SIZE 8 +#endif + +#if defined(CPUARM) +PACK(typedef struct t_PhaseData { + TRIMS_ARRAY; + int8_t swtch; // swtch of phase[0] is not used + char name[LEN_FP_NAME]; + uint8_t fadeIn; + uint8_t fadeOut; + ROTARY_ENCODER_ARRAY; + PHASE_GVARS_DATA; +}) PhaseData; +#else +PACK(typedef struct t_PhaseData { + TRIMS_ARRAY; + int8_t swtch; // swtch of phase[0] is not used + char name[LEN_FP_NAME]; + uint8_t fadeIn:4; + uint8_t fadeOut:4; + ROTARY_ENCODER_ARRAY; + PHASE_GVARS_DATA; +}) PhaseData; +#endif + +enum SwitchSources { + SWSRC_NONE = 0, + + SWSRC_FIRST_SWITCH, + +#if defined(PCBTARANIS) + SWSRC_SA0 = SWSRC_FIRST_SWITCH, + SWSRC_SA1, + SWSRC_SA2, + SWSRC_SB0, + SWSRC_SB1, + SWSRC_SB2, + SWSRC_SC0, + SWSRC_SC1, + SWSRC_SC2, + SWSRC_SD0, + SWSRC_SD1, + SWSRC_SD2, + SWSRC_SE0, + SWSRC_SE1, + SWSRC_SE2, + SWSRC_SF0, + SWSRC_SF2, + SWSRC_SG0, + SWSRC_SG1, + SWSRC_SG2, + SWSRC_SH0, + SWSRC_SH2, +#else + SWSRC_ID0 = SWSRC_FIRST_SWITCH, + SWSRC_ID1, + SWSRC_ID2, +#if defined(EXTRA_3POS) + SWSRC_ID3, + SWSRC_ID4, + SWSRC_ID5, +#endif + SWSRC_THR, + SWSRC_RUD, + SWSRC_ELE, + SWSRC_AIL, + SWSRC_GEA, + SWSRC_TRN, +#endif + + SWSRC_FIRST_CSW, + SWSRC_SW1 = SWSRC_FIRST_CSW, + SWSRC_SW2, + SWSRC_SW3, + SWSRC_SW4, + SWSRC_SW5, + SWSRC_SW6, + SWSRC_SW7, + SWSRC_SW8, + SWSRC_SW9, + SWSRC_SWA, + SWSRC_SWB, + SWSRC_SWC, + SWSRC_LAST_CSW = SWSRC_SW1+NUM_CSW-1, + + SWSRC_ON, + + SWSRC_FIRST_MOMENT_SWITCH, + SWSRC_LAST_MOMENT_SWITCH = SWSRC_FIRST_MOMENT_SWITCH+SWSRC_ON-1, + +#if !defined(PCBSTD) + SWSRC_TRAINER_SHORT, + SWSRC_TRAINER_LONG, +#endif + +#if ROTARY_ENCODERS > 0 + SWSRC_FIRST_ROTENC_SWITCH, + SWSRC_LAST_ROTENC_SWITCH = SWSRC_FIRST_ROTENC_SWITCH+(2*ROTARY_ENCODERS)-1, +#endif + + SWSRC_COUNT, + SWSRC_FIRST = -SWSRC_LAST_MOMENT_SWITCH, + SWSRC_LAST = SWSRC_COUNT-1, + + SWSRC_OFF = -SWSRC_ON, + SWSRC_TRAINER = SWSRC_SW1-1, +}; + +enum MixSources { + MIXSRC_NONE, + +#if defined(PCBTARANIS) + MIXSRC_FIRST_INPUT, + MIXSRC_LAST_INPUT = MIXSRC_FIRST_INPUT+MAX_INPUTS-1, + + MIXSRC_FIRST_LUA, + MIXSRC_LAST_LUA = MIXSRC_FIRST_LUA+(MAX_SCRIPTS*MAX_SCRIPT_OUTPUTS)-1, +#endif + + MIXSRC_Rud, + MIXSRC_Ele, + MIXSRC_Thr, + MIXSRC_Ail, + + MIXSRC_FIRST_POT, +#if defined(PCBTARANIS) + MIXSRC_S1 = MIXSRC_FIRST_POT, + MIXSRC_S2, + MIXSRC_S3, + MIXSRC_S4, + MIXSRC_LAST_POT = MIXSRC_S4, +#else + MIXSRC_P1 = MIXSRC_FIRST_POT, + MIXSRC_P2, + #if defined(EXTRA_3POS) + MIXSRC_LAST_POT = MIXSRC_P2, + #else + MIXSRC_P3, + MIXSRC_LAST_POT = MIXSRC_P3, + #endif +#endif + +#if defined(PCBSKY9X) + MIXSRC_REa, + MIXSRC_LAST_ROTARY_ENCODER = MIXSRC_REa, +#elif defined(PCBGRUVIN9X) || defined(PCBMEGA2560) + MIXSRC_REa, + MIXSRC_REb, + #if ROTARY_ENCODERS > 2 + MIXSRC_REc, + MIXSRC_REd, + MIXSRC_LAST_ROTARY_ENCODER = MIXSRC_REd, + #else + MIXSRC_LAST_ROTARY_ENCODER = MIXSRC_REb, + #endif +#endif + + MIXSRC_MAX, + + MIXSRC_CYC1, + MIXSRC_CYC2, + MIXSRC_CYC3, + + MIXSRC_TrimRud, + MIXSRC_TrimEle, + MIXSRC_TrimThr, + MIXSRC_TrimAil, + + MIXSRC_FIRST_SWITCH, + +#if defined(PCBTARANIS) + MIXSRC_SA = MIXSRC_FIRST_SWITCH, + MIXSRC_SB, + MIXSRC_SC, + MIXSRC_SD, + MIXSRC_SE, + MIXSRC_SF, + MIXSRC_SG, + MIXSRC_SH, +#else + MIXSRC_3POS = MIXSRC_FIRST_SWITCH, + #if defined(EXTRA_3POS) + MIXSRC_3POS2, + #endif + MIXSRC_THR, + MIXSRC_RUD, + MIXSRC_ELE, + MIXSRC_AIL, + MIXSRC_GEA, + MIXSRC_TRN, +#endif + MIXSRC_FIRST_CSW, + MIXSRC_SW1 = MIXSRC_FIRST_CSW, + MIXSRC_SW9 = MIXSRC_SW1 + 8, + MIXSRC_SWA, + MIXSRC_SWB, + MIXSRC_SWC, + MIXSRC_LAST_CSW = MIXSRC_FIRST_CSW+NUM_CSW-1, + + MIXSRC_FIRST_PPM, + MIXSRC_LAST_PPM = MIXSRC_FIRST_PPM + 7, + + MIXSRC_FIRST_CH, + MIXSRC_CH1 = MIXSRC_FIRST_CH, + MIXSRC_CH2, + MIXSRC_CH3, + MIXSRC_CH4, + MIXSRC_CH5, + MIXSRC_CH6, + MIXSRC_CH7, + MIXSRC_CH8, + MIXSRC_CH9, + MIXSRC_CH10, + MIXSRC_CH11, + MIXSRC_CH12, + MIXSRC_CH13, + MIXSRC_CH14, + MIXSRC_CH15, + MIXSRC_CH16, + MIXSRC_LAST_CH = MIXSRC_CH1+NUM_CHNOUT-1, + + MIXSRC_GVAR1, + MIXSRC_LAST_GVAR = MIXSRC_GVAR1+MAX_GVARS-1, + + MIXSRC_FIRST_TELEM, + MIXSRC_LAST_TELEM = MIXSRC_FIRST_TELEM+NUM_TELEMETRY-1 +}; + +#define MIXSRC_FIRST (MIXSRC_NONE+1) +#define MIXSRC_LAST MIXSRC_LAST_CH +#define INPUTSRC_FIRST MIXSRC_Rud +#define INPUTSRC_LAST MIXSRC_LAST_TELEM + +#define MIN_POINTS 3 +#define MAX_POINTS 17 + +#define TMRMODE_NONE 0 +#define TMRMODE_ABS 1 +#define TMRMODE_THR 2 +#define TMRMODE_THR_REL 3 +#define TMRMODE_THR_TRG 4 + +#define COUNTDOWN_SILENT 0 +#define COUNTDOWN_BEEPS 1 +#define COUNTDOWN_VOICE 2 + +#if defined(CPUARM) || defined(CPUM2560) +PACK(typedef struct t_TimerData { + int8_t mode; // timer trigger source -> off, abs, stk, stk%, sw/!sw, !m_sw/!m_sw + uint16_t start; + uint8_t countdownBeep:2; + uint8_t minuteBeep:1; + uint8_t persistent:1; + uint8_t spare:4; + uint16_t value; +}) TimerData; +#else +PACK(typedef struct t_TimerData { + int8_t mode; // timer trigger source -> off, abs, stk, stk%, sw/!sw, !m_sw/!m_sw + uint16_t start:12; + uint16_t countdownBeep:1; + uint16_t minuteBeep:1; + uint16_t spare:2; +}) TimerData; +#endif + +enum Protocols { + PROTO_PPM, +#if !defined(CPUARM) + PROTO_PPM16, + PROTO_PPMSIM, +#endif +#if defined(PXX) || defined(DSM2) || defined(IRPROTOS) + PROTO_PXX, +#endif +#if defined(DSM2) || defined(IRPROTOS) + PROTO_DSM2_LP45, + PROTO_DSM2_DSM2, + PROTO_DSM2_DSMX, +#endif +#if defined(IRPROTOS) + // we will need 4 bytes for proto :( + PROTO_SILV, + PROTO_TRAC09, + PROTO_PICZ, + PROTO_SWIFT, +#endif + PROTO_MAX, + PROTO_NONE +}; + +enum RFProtocols { + RF_PROTO_OFF = -1, + RF_PROTO_X16, + RF_PROTO_D8, + RF_PROTO_LR12, + RF_PROTO_LAST = RF_PROTO_LR12 +}; + +enum DSM2Protocols { + DSM2_PROTO_LP45, + DSM2_PROTO_DSM2, + DSM2_PROTO_DSMX, +}; + +enum ModuleTypes { + MODULE_TYPE_NONE = 0, + MODULE_TYPE_PPM, + MODULE_TYPE_XJT, +#if defined(DSM2) + MODULE_TYPE_DSM2, +#endif + MODULE_TYPE_COUNT +}; + +enum FailsafeModes { + FAILSAFE_HOLD, + FAILSAFE_CUSTOM, + FAILSAFE_NOPULSES, + FAILSAFE_LAST = FAILSAFE_NOPULSES +}; + +#if defined(FRSKY) || !defined(PCBSTD) + #define TELEMETRY_DATA FrSkyData frsky; +#elif defined(MAVLINK) + #define TELEMETRY_DATA MavlinkData mavlink; +#else + #define TELEMETRY_DATA +#endif + +#if defined(CPUARM) || defined(PCBGRUVIN9X) || defined(PCBMEGA2560) + #define BeepANACenter uint16_t +#else + #define BeepANACenter uint8_t +#endif + +PACK(typedef struct t_ModelHeader { + char name[LEN_MODEL_NAME]; // must be first for eeLoadModelName + uint8_t modelId; + MODELDATA_BITMAP +}) ModelHeader; + +#if defined (CPUARM) + #define ARM_FIELD(x) x; + #define AVR_FIELD(x) +#else + #define ARM_FIELD(x) + #define AVR_FIELD(x) x; +#endif + +PACK(typedef struct t_ModelData { + ModelHeader header; + TimerData timers[MAX_TIMERS]; + uint8_t protocol:3; // not used on Taranis + uint8_t thrTrim:1; // Enable Throttle Trim + AVR_FIELD(int8_t ppmNCH:4) + ARM_FIELD(int8_t spare2:4) + uint8_t trimInc:3; // Trim Increments + uint8_t disableThrottleWarning:1; + ARM_FIELD(uint8_t displayText:1) + AVR_FIELD(uint8_t pulsePol:1) + uint8_t extendedLimits:1; + uint8_t extendedTrims:1; + uint8_t throttleReversed:1; + AVR_FIELD(int8_t ppmDelay) + BeepANACenter beepANACenter; // 1<<0->A1.. 1<<6->A7 + MixData mixData[MAX_MIXERS]; + LimitData limitData[NUM_CHNOUT]; + ExpoData expoData[MAX_EXPOS]; + + CURVDATA curves[MAX_CURVES]; + int8_t points[NUM_POINTS]; + + CustomSwData customSw[NUM_CSW]; + CustomFnData funcSw[NUM_CFN]; + SwashRingData swashR; + PhaseData phaseData[MAX_PHASES]; + + AVR_FIELD(int8_t ppmFrameLength) // 0=22.5ms (10ms-30ms) 0.5ms increments + uint8_t thrTraceSrc; + + swstate_t switchWarningStates; + + MODEL_GVARS_DATA + + TELEMETRY_DATA + + ROTARY_ENCODER_ARRAY_EXTRA + + MODELDATA_EXTRA + +}) ModelData; + +extern EEGeneral g_eeGeneral; +extern ModelData g_model; + +#define TOTAL_EEPROM_USAGE (sizeof(ModelData)*MAX_MODELS + sizeof(EEGeneral)) + +#endif +/*eof*/ diff --git a/radio/src/simu.cpp b/radio/src/simu.cpp index 37aad7040..8fabf48f8 100644 --- a/radio/src/simu.cpp +++ b/radio/src/simu.cpp @@ -337,6 +337,14 @@ void Open9xSim::refreshDiplay() bmp->render(); bmf->setImage(bmp); + + // Recalc RPM based on Blades setting during simulator - T.Foley + // Final value will change as user adjusts blades, spur or gear live in simulator + frskyData.hub.rpm = 303; + frskyData.hub.rpm *= (uint8_t)60; + frskyData.hub.rpm /= (g_model.frsky.blades+1); + float gear_ratio = (((float)g_model.frsky.spur_gear+1) / ((float)g_model.frsky.pinion_gear+1)); + frskyData.hub.rpm = (float)(frskyData.hub.rpm / gear_ratio); } } diff --git a/radio/src/simu.cpp~ b/radio/src/simu.cpp~ new file mode 100644 index 000000000..37aad7040 --- /dev/null +++ b/radio/src/simu.cpp~ @@ -0,0 +1,425 @@ +/* + * Authors (alphabetical order) + * - Andre Bernet + * - Andreas Weitl + * - Bertrand Songis + * - Bryan J. Rentoul (Gruvin) + * - Cameron Weeks + * - Erez Raviv + * - Gabriel Birkus + * - Jean-Pierre Parisy + * - Karl Szmutny + * - Michael Blandford + * - Michal Hlavinka + * - Pat Mackenzie + * - Philip Moss + * - Rob Thomson + * - Romolo Manfredini + * - Thomas Husterer + * + * opentx is based on code named + * gruvin9x by Bryan J. Rentoul: http://code.google.com/p/gruvin9x/, + * er9x by Erez Raviv: http://code.google.com/p/er9x/, + * and the original (and ongoing) project by + * Thomas Husterer, th9x: http://code.google.com/p/th9x/ + * + * This program 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. + * + * This program 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. See the + * GNU General Public License for more details. + * + */ + +#include "fx.h" +#include "FXExpression.h" +#include "FXPNGImage.h" +#include +#include "fxkeys.h" +#include "opentx.h" +#include +#include + +#define W2 LCD_W*2 +#define H2 LCD_H*2 + +int g_snapshot_idx = 0; + +class Open9xSim: public FXMainWindow +{ + FXDECLARE(Open9xSim) +public: + Open9xSim(){}; + Open9xSim(FXApp* a); + long onKeypress(FXObject*,FXSelector,void*); + long onTimeout(FXObject*,FXSelector,void*); + void makeSnapshot(const FXDrawable* drawable); + void doEvents(); + void refreshDiplay(); + +private: + FXImage *bmp; + FXImageFrame *bmf; + bool firstTime; + +public: + FXSlider *sliders[8]; + FXKnob *knobs[NUM_POTS]; +}; +// Message Map +FXDEFMAP(Open9xSim) Open9xSimMap[]={ + + //________Message_Type_________ID_____________________Message_Handler_______ + FXMAPFUNC(SEL_TIMEOUT, 2, Open9xSim::onTimeout), + FXMAPFUNC(SEL_KEYPRESS, 0, Open9xSim::onKeypress), + }; + +FXIMPLEMENT(Open9xSim,FXMainWindow,Open9xSimMap,ARRAYNUMBER(Open9xSimMap)) + +Open9xSim::Open9xSim(FXApp* a) +:FXMainWindow(a,"OpenTXSimu",NULL,NULL,DECOR_ALL,20,90,0,0) +{ + firstTime=true; + for(int i=0; i<(LCD_W*LCD_H/8); i++) displayBuf[i]=0;//rand(); + bmp = new FXPPMImage(getApp(),NULL,IMAGE_OWNED|IMAGE_KEEP|IMAGE_SHMI|IMAGE_SHMP, W2, H2); + + FXHorizontalFrame *hf11=new FXHorizontalFrame(this,LAYOUT_CENTER_X); + FXHorizontalFrame *hf1=new FXHorizontalFrame(this,LAYOUT_FILL_X); + + //rh lv rv lh + for(int i=0; i<4; i++){ + switch(i) + { +#define L LAYOUT_FIX_WIDTH|LAYOUT_FIX_HEIGHT|LAYOUT_FIX_X|LAYOUT_FIX_Y +#undef X0 +#define X0 10 +#define Y0 10 + case 0: + sliders[i]=new FXSlider(hf1,NULL,0,L|SLIDER_HORIZONTAL,X0+0,Y0+100,100,20); + break; + case 1: + sliders[i]=new FXSlider(hf1,NULL,0,L|SLIDER_VERTICAL,X0+100,Y0+0,20,100); + break; + case 2: + sliders[i]=new FXSlider(hf1,NULL,0,L|SLIDER_VERTICAL,X0+120,Y0+0,20,100); + break; + case 3: + sliders[i]=new FXSlider(hf1,NULL,0,L|SLIDER_HORIZONTAL,X0+140,Y0+100,100,20); + break; + default:; + } + sliders[i]->setRange(-1024, 1024); + sliders[i]->setTickDelta(7); + sliders[i]->setValue(0); + } + + for(int i=0; isetRange(-1024, 1024); + knobs[i]->setValue(0); + } + + bmf = new FXImageFrame(this,bmp); + + getApp()->addTimeout(this,2,100); +} + +void Open9xSim::makeSnapshot(const FXDrawable* drawable) +{ + // Construct and create an FXImage object + FXPNGImage snapshot(getApp(), NULL, 0, drawable->getWidth(), drawable->getHeight()); + snapshot.create(); + + // Create a window device context and lock it onto the image + FXDCWindow dc(&snapshot); + + // Draw from the widget to this + dc.drawArea(drawable, 0, 0, drawable->getWidth(), drawable->getHeight(), 0, 0); + + // Release lock + dc.end(); + + // Grab pixels from server side back to client side + snapshot.restore(); + + // Save recovered pixels to a file + FXFileStream stream; + char buf[100]; + + do { + stream.close(); + sprintf(buf,"snapshot_%02d.png", ++g_snapshot_idx); + } while (stream.open(buf, FXStreamLoad)); + + if (stream.open(buf, FXStreamSave)) { + snapshot.savePixels(stream); + stream.close(); + printf("Snapshot written: %s\n", buf); + } + else { + printf("Cannot create snapshot %s\n", buf); + } +} +void Open9xSim::doEvents() +{ + getApp()->runOneEvent(false); +} + +long Open9xSim::onKeypress(FXObject*,FXSelector,void*v) +{ + FXEvent *evt=(FXEvent*)v; + // printf("keypress %x\n", evt->code); + if (evt->code=='s'){ + makeSnapshot(bmf); + } + return 0; +} + +long Open9xSim::onTimeout(FXObject*,FXSelector,void*) +{ + if(hasFocus()) { + static int keys1[]={ +#if defined(PCBTARANIS) + KEY_Page_Up, KEY_MENU, + KEY_Page_Down, KEY_PAGE, + KEY_Return, KEY_ENTER, + KEY_BackSpace, KEY_EXIT, + KEY_Up, KEY_PLUS, + KEY_Down, KEY_MINUS, +#else + KEY_Return, KEY_MENU, + KEY_BackSpace, KEY_EXIT, + KEY_Right, KEY_RIGHT, + KEY_Left, KEY_LEFT, + KEY_Up, KEY_UP, + KEY_Down, KEY_DOWN, +#endif +#if defined(ROTARY_ENCODER_NAVIGATION) + KEY_F, BTN_REa, +#endif + }; + +#if defined(PCBSKY9X) + Coproc_temp = 23; + Coproc_maxtemp = 28; +#endif + +#if defined(PCBSKY9X) + temperature = 31; + maxTemperature = 42; +#endif + + for (unsigned int i=0; igetKeyState(keys1[i])); + } + +#ifdef __APPLE__ + // gruvin: Can't use Function keys on the Mac -- too many other app conflicts. + // The ordering of these keys, Q/W,E/R,T/Y,U/I matches the on screen + // order of trim sliders + static FXuint trimKeys[] = { KEY_E, KEY_R, KEY_U, KEY_I, KEY_R, KEY_E, KEY_Y, KEY_T, KEY_Q, KEY_W }; +#else + static FXuint trimKeys[] = { KEY_F1, KEY_F2, KEY_F3, KEY_F4, KEY_F5, KEY_F6, KEY_F7, KEY_F8 }; +#endif + + for (unsigned i=0; igetKeyState(trimKeys[i])); + } + +#if defined(ROTARY_ENCODER_NAVIGATION) + static bool rotencAction = false; + if (getApp()->getKeyState(KEY_G)) { + if (!rotencAction) g_rotenc[0] += ROTARY_ENCODER_GRANULARITY; + rotencAction = true; + } + else if (getApp()->getKeyState(KEY_D)) { + if (!rotencAction) g_rotenc[0] -= ROTARY_ENCODER_GRANULARITY; + rotencAction = true; + } + else { + rotencAction = false; + } +#endif + +#define SWITCH_KEY(key, swtch, states) \ + static bool state##key = 0; \ + static int8_t state_##swtch = 2; \ + static int8_t inc_##swtch = 1; \ + if (getApp()->getKeyState(KEY_##key)) { \ + if (!state##key) { \ + state_##swtch = (state_##swtch+inc_##swtch); \ + if (state_##swtch == 1+states) inc_##swtch = -1; \ + else if (state_##swtch == 2) inc_##swtch = 1; \ + state##key = true; \ + } \ + } \ + else { \ + state##key = false; \ + } \ + simuSetSwitch(swtch, state_##swtch-states); + +#if defined(PCBTARANIS) + SWITCH_KEY(A, 0, 3); + SWITCH_KEY(B, 1, 3); + SWITCH_KEY(C, 2, 3); + SWITCH_KEY(D, 3, 3); + SWITCH_KEY(E, 4, 3); + SWITCH_KEY(F, 5, 2); + SWITCH_KEY(G, 6, 3); + SWITCH_KEY(H, 7, 2); +#else + SWITCH_KEY(1, 0, 2); + SWITCH_KEY(2, 1, 2); + SWITCH_KEY(3, 2, 2); + SWITCH_KEY(4, 3, 3); + SWITCH_KEY(5, 4, 2); + SWITCH_KEY(6, 5, 2); + SWITCH_KEY(7, 6, 2); +#endif + } + + per10ms(); + refreshDiplay(); + getApp()->addTimeout(this,2,5); + return 0; +} + +#if defined(PCBTARANIS) +#define BL_COLOR FXRGB(47,123,227) +#else +#define BL_COLOR FXRGB(150,200,152) +#endif + +void Open9xSim::refreshDiplay() +{ + if (lcd_refresh) { + lcd_refresh = false; + FXColor offColor = IS_BACKLIGHT_ON() ? BL_COLOR : FXRGB(200,200,200); +#if !defined(PCBTARANIS) + FXColor onColor = FXRGB(0,0,0); +#endif + for (int x=0;xsetPixel(2*x, 2*y, color); + bmp->setPixel(2*x+1, 2*y, color); + bmp->setPixel(2*x, 2*y+1, color); + bmp->setPixel(2*x+1, 2*y+1, color); + } +#else + if (lcd_buf[x+(y/8)*LCD_W] & (1<<(y%8))) { + bmp->setPixel(2*x, 2*y, onColor); + bmp->setPixel(2*x+1, 2*y, onColor); + bmp->setPixel(2*x, 2*y+1, onColor); + bmp->setPixel(2*x+1, 2*y+1, onColor); + } +#endif + else { + bmp->setPixel(2*x, 2*y, offColor); + bmp->setPixel(2*x+1, 2*y, offColor); + bmp->setPixel(2*x, 2*y+1, offColor); + bmp->setPixel(2*x+1, 2*y+1, offColor); + } + } + } + + bmp->render(); + bmf->setImage(bmp); + } +} + +Open9xSim *th9xSim; +void doFxEvents() +{ + //puts("doFxEvents"); + th9xSim->getApp()->runOneEvent(false); + th9xSim->refreshDiplay(); +} + +int main(int argc,char **argv) +{ + // Each FOX GUI program needs one, and only one, application object. + // The application objects coordinates some common stuff shared between + // all the widgets; for example, it dispatches events, keeps track of + // all the windows, and so on. + // We pass the "name" of the application, and its "vendor", the name + // and vendor are used to search the registry database (which stores + // persistent information e.g. fonts and colors). + FXApp application("Open9xSim", "thus"); + + // Here we initialize the application. We pass the command line arguments + // because FOX may sometimes need to filter out some of the arguments. + // This opens up the display as well, and reads the registry database + // so that persistent settings are now available. + application.init(argc,argv); + + // This creates the main window. We pass in the title to be displayed + // above the window, and possibly some icons for when its iconified. + // The decorations determine stuff like the borders, close buttons, + // drag handles, and so on the Window Manager is supposed to give this + // window. + //FXMainWindow *main=new FXMainWindow(&application,"Hello",NULL,NULL,DECOR_ALL); + th9xSim = new Open9xSim(&application); + application.create(); + + // Pretty self-explanatory:- this shows the window, and places it in the + // middle of the screen. +#ifndef __APPLE__ + th9xSim->show(PLACEMENT_SCREEN); +#else + th9xSim->show(); // Otherwise the main window gets centred across my two monitors, split down the middle. +#endif + +#if defined(FRSKY) && !defined(FRSKY_SPORT) + frskyStreaming = 1; +#endif + + printf("Model size = %d\n", (int)sizeof(g_model)); + + StartEepromThread(argc >= 2 ? argv[1] : "eeprom.bin"); + StartMainThread(); + +#if defined(PCBTARANIS) + simuSetSwitch(0, 0); + simuSetSwitch(1, 0); +#endif + + return application.run(); +} + +uint16_t anaIn(uint8_t chan) +{ + if (chansliders[chan]->getValue(); + else if (chanknobs[chan-NUM_STICKS]->getValue(); +#if defined(PCBTARANIS) + else if (chan == 8) + return 1000; +#elif defined(PCBSKY9X) + else if (chan == 7) + return 1500; + else if (chan == 8) + return 100; +#elif defined(PCBGRUVIN9X) + else if (chan == 7) + return 150; +#else + else if (chan == 7) + return 1500; +#endif + else + return 0; +} diff --git a/radio/src/telemetry/frsky.cpp b/radio/src/telemetry/frsky.cpp index f2e7f7905..fc6e6ed4a 100644 --- a/radio/src/telemetry/frsky.cpp +++ b/radio/src/telemetry/frsky.cpp @@ -175,7 +175,15 @@ void parseTelemHubByte(uint8_t byte) switch ((uint8_t)structPos) { case offsetof(FrskySerialData, rpm): - frskyData.hub.rpm *= (uint8_t)60/(g_model.frsky.blades+2); + //frskyData.hub.rpm *= (uint8_t)60/(g_model.frsky.blades+2); + // Change minimum Blades to 1 to allow for single sensors/raw data - T.Foley + // Added Spur and Pinion Ratio Calculation to provide final head/drive RPM after gearing + // + frskyData.hub.rpm *= (uint8_t)60; + frskyData.hub.rpm /= (g_model.frsky.blades+1); + float gear_ratio = (((float)g_model.frsky.spur_gear+1) / ((float)g_model.frsky.pinion_gear+1)); + frskyData.hub.rpm = (float)(frskyData.hub.rpm / gear_ratio); + if (frskyData.hub.rpm > frskyData.hub.maxRpm) frskyData.hub.maxRpm = frskyData.hub.rpm; break; diff --git a/radio/src/telemetry/frsky.cpp~ b/radio/src/telemetry/frsky.cpp~ new file mode 100644 index 000000000..35d3bf5cc --- /dev/null +++ b/radio/src/telemetry/frsky.cpp~ @@ -0,0 +1,926 @@ +/* + * Authors (alphabetical order) + * - Andre Bernet + * - Andreas Weitl + * - Bertrand Songis + * - Bryan J. Rentoul (Gruvin) + * - Cameron Weeks + * - Erez Raviv + * - Gabriel Birkus + * - Jean-Pierre Parisy + * - Karl Szmutny + * - Michael Blandford + * - Michal Hlavinka + * - Pat Mackenzie + * - Philip Moss + * - Rob Thomson + * - Romolo Manfredini + * - Thomas Husterer + * + * opentx is based on code named + * gruvin9x by Bryan J. Rentoul: http://code.google.com/p/gruvin9x/, + * er9x by Erez Raviv: http://code.google.com/p/er9x/, + * and the original (and ongoing) project by + * Thomas Husterer, th9x: http://code.google.com/p/th9x/ + * + * This program 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. + * + * This program 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. See the + * GNU General Public License for more details. + * + */ + +#include "../opentx.h" + +// Enumerate FrSky packet codes +#define LINKPKT 0xfe +#define USRPKT 0xfd +#define A11PKT 0xfc +#define A12PKT 0xfb +#define A21PKT 0xfa +#define A22PKT 0xf9 +#define ALRM_REQUEST 0xf8 +#define RSSI1PKT 0xf7 +#define RSSI2PKT 0xf6 +#define RSSI_REQUEST 0xf1 + +#define START_STOP 0x7e +#define BYTESTUFF 0x7d +#define STUFF_MASK 0x20 + +#if defined(TELEMETREZ) +#define PRIVATE 0x1B +#endif + +uint8_t frskyRxBuffer[FRSKY_RX_PACKET_SIZE]; // Receive buffer. 9 bytes (full packet), worst case 18 bytes with byte-stuffing (+1) +uint8_t frskyTxBuffer[FRSKY_TX_PACKET_SIZE]; // Ditto for transmit buffer +#if !defined(CPUARM) +uint8_t frskyTxBufferCount = 0; +#endif +uint8_t frskyStreaming = 0; +#if defined(WS_HOW_HIGH) +uint8_t frskyUsrStreaming = 0; +#endif +uint8_t link_counter = 0; +FrskyData frskyData; + +#if defined(FRSKY_HUB) || defined(WS_HOW_HIGH) +void checkMinMaxAltitude() +{ + if (TELEMETRY_ALT_BP > frskyData.hub.maxAltitude) + frskyData.hub.maxAltitude = TELEMETRY_ALT_BP; + if (TELEMETRY_ALT_BP < frskyData.hub.minAltitude) + frskyData.hub.minAltitude = TELEMETRY_ALT_BP; +} +#endif + +#if defined(VARIO) && !defined(FRSKY_SPORT) && (defined(FRSKY_HUB) || defined(WS_HOW_HIGH)) +void evalVario(int16_t altitude_bp, uint16_t altitude_ap) +{ + int32_t varioAltitude_cm = (int32_t)altitude_bp * 100 + (altitude_bp > 0 ? altitude_ap : -altitude_ap); + uint8_t varioAltitudeQueuePointer = frskyData.hub.varioAltitudeQueuePointer + 1; + if (varioAltitudeQueuePointer >= VARIO_QUEUE_LENGTH) + varioAltitudeQueuePointer = 0; + frskyData.hub.varioAltitudeQueuePointer = varioAltitudeQueuePointer; + frskyData.hub.varioSpeed -= frskyData.hub.varioAltitudeQueue[varioAltitudeQueuePointer] ; + frskyData.hub.varioAltitudeQueue[varioAltitudeQueuePointer] = varioAltitude_cm - frskyData.hub.varioAltitude_cm; + frskyData.hub.varioAltitude_cm = varioAltitude_cm; + frskyData.hub.varioSpeed += frskyData.hub.varioAltitudeQueue[varioAltitudeQueuePointer] ; +} +#else +#define evalVario(...) +#endif + +#if defined(FRSKY_HUB) +typedef enum { + TS_IDLE = 0, // waiting for 0x5e frame marker + TS_DATA_ID, // waiting for dataID + TS_DATA_LOW, // waiting for data low byte + TS_DATA_HIGH, // waiting for data high byte + TS_XOR = 0x80 // decode stuffed byte +} TS_STATE; + +void parseTelemHubByte(uint8_t byte) +{ + static int8_t structPos; + static uint8_t lowByte; + static TS_STATE state = TS_IDLE; + + if (byte == 0x5e) { + state = TS_DATA_ID; + return; + } + if (state == TS_IDLE) { + return; + } + if (state & TS_XOR) { + byte = byte ^ 0x60; + state = (TS_STATE)(state - TS_XOR); + } + if (byte == 0x5d) { + state = (TS_STATE)(state | TS_XOR); + return; + } + if (state == TS_DATA_ID) { + if (byte > 0x3f) { + state = TS_IDLE; + } + else { + structPos = byte*2; + state = TS_DATA_LOW; + } + return; + } + if (state == TS_DATA_LOW) { + lowByte = byte; + state = TS_DATA_HIGH; + return; + } + + state = TS_IDLE; + +#if defined(GPS) + if ((uint8_t)structPos == offsetof(FrskySerialData, gpsLatitude_bp)) { + if (lowByte || byte) + frskyData.hub.gpsFix = 1; + else if (frskyData.hub.gpsFix > 0 && frskyData.hub.gpsLatitude_bp > 1) + frskyData.hub.gpsFix = 0; + } + else if ((uint8_t)structPos == offsetof(FrskySerialData, gpsLongitude_bp)) { + if (lowByte || byte) + frskyData.hub.gpsFix = 1; + else if (frskyData.hub.gpsFix > 0 && frskyData.hub.gpsLongitude_bp > 1) + frskyData.hub.gpsFix = 0; + } + + if ((uint8_t)structPos == offsetof(FrskySerialData, gpsAltitude_bp) || + ((uint8_t)structPos >= offsetof(FrskySerialData, gpsAltitude_ap) && (uint8_t)structPos <= offsetof(FrskySerialData, gpsLatitudeNS) && (uint8_t)structPos != offsetof(FrskySerialData, baroAltitude_bp) && (uint8_t)structPos != offsetof(FrskySerialData, baroAltitude_ap))) { + // If we don't have a fix, we may discard the value + if (frskyData.hub.gpsFix <= 0) + return; + } +#endif + +#if 0 + uint16_t previousValue = *((uint16_t *)(((uint8_t*)&frskyData.hub) + structPos)); +#endif + + ((uint8_t*)&frskyData.hub)[structPos] = lowByte; + ((uint8_t*)&frskyData.hub)[structPos+1] = byte; + + switch ((uint8_t)structPos) { + + case offsetof(FrskySerialData, rpm): + //frskyData.hub.rpm *= (uint8_t)60/(g_model.frsky.blades+2); + // Change minimum Blades to 1 to allow for single sensors/raw data - T.Foley + // Added Spur and Pinion Ratio Calculation to provide final head/drive RPM after gearing + // + frskyData.hub.rpm *= (uint8_t)60; + frskyData.hub.rpm /= (g_model.frsky.blades+1); + float gear_ratio = (((float)g_model.frsky.spur_gear+1) / ((float)g_model.frsky.pinion_gear+1)); + frskyData.hub.rpm = (float)(frskyData.hub.rpm / gear_ratio); + if (frskyData.hub.rpm > frskyData.hub.maxRpm) + frskyData.hub.maxRpm = frskyData.hub.rpm; + break; + + case offsetof(FrskySerialData, temperature1): + if (frskyData.hub.temperature1 > frskyData.hub.maxTemperature1) + frskyData.hub.maxTemperature1 = frskyData.hub.temperature1; + break; + + case offsetof(FrskySerialData, temperature2): + if (frskyData.hub.temperature2 > frskyData.hub.maxTemperature2) + frskyData.hub.maxTemperature2 = frskyData.hub.temperature2; + break; + + case offsetof(FrskySerialData, current): + if (frskyData.hub.current > frskyData.hub.maxCurrent) + frskyData.hub.maxCurrent = frskyData.hub.current; + break; + + case offsetof(FrskySerialData, currentConsumption): + // we receive data from openXsensor. stops the calculation of consumption and power + frskyData.hub.openXsensor = 1; + break; + + case offsetof(FrskySerialData, volts_ap): +#if defined(FAS_BSS) + frskyData.hub.vfas = (frskyData.hub.volts_bp * 10 + frskyData.hub.volts_ap); +#else + frskyData.hub.vfas = ((frskyData.hub.volts_bp * 100 + frskyData.hub.volts_ap * 10) * 21) / 110; +#endif + /* TODO later if (!frskyData.hub.minVfas || frskyData.hub.minVfas > frskyData.hub.vfas) + frskyData.hub.minVfas = frskyData.hub.vfas; */ + break; + + case offsetof(FrskySerialData, baroAltitude_bp): + // First received barometer altitude => Altitude offset + if (!frskyData.hub.baroAltitudeOffset) + frskyData.hub.baroAltitudeOffset = -frskyData.hub.baroAltitude_bp; + if (g_model.frsky.varioSource == VARIO_SOURCE_ALTI) { + evalVario(frskyData.hub.baroAltitude_bp, 0); + } + frskyData.hub.baroAltitude_bp += frskyData.hub.baroAltitudeOffset; + checkMinMaxAltitude(); + break; + + case offsetof(FrskySerialData, baroAltitude_ap): + if (g_model.frsky.varioSource == VARIO_SOURCE_ALTI_PLUS) { + evalVario(frskyData.hub.baroAltitude_bp-frskyData.hub.baroAltitudeOffset, frskyData.hub.baroAltitude_ap); + } + break; + +#if defined(GPS) + case offsetof(FrskySerialData, gpsAltitude_ap): + if (!frskyData.hub.gpsAltitudeOffset) + frskyData.hub.gpsAltitudeOffset = -frskyData.hub.gpsAltitude_bp; + frskyData.hub.gpsAltitude_bp += frskyData.hub.gpsAltitudeOffset; + if (!frskyData.hub.baroAltitudeOffset) { + if (frskyData.hub.gpsAltitude_bp > frskyData.hub.maxAltitude) + frskyData.hub.maxAltitude = frskyData.hub.gpsAltitude_bp; + if (frskyData.hub.gpsAltitude_bp < frskyData.hub.minAltitude) + frskyData.hub.minAltitude = frskyData.hub.gpsAltitude_bp; + } + if (!frskyData.hub.pilotLatitude && !frskyData.hub.pilotLongitude) { + // First received GPS position => Pilot GPS position + getGpsPilotPosition(); + } + else if (frskyData.hub.gpsDistNeeded || g_menuStack[g_menuStackPtr] == menuTelemetryFrsky) { + getGpsDistance(); + } + break; + + case offsetof(FrskySerialData, gpsSpeed_bp): + // Speed => Max speed + if (frskyData.hub.gpsSpeed_bp > frskyData.hub.maxGpsSpeed) + frskyData.hub.maxGpsSpeed = frskyData.hub.gpsSpeed_bp; + break; +#endif + + case offsetof(FrskySerialData, volts): + // Voltage => Cell number + Cell voltage + { + uint8_t battnumber = ((frskyData.hub.volts & 0x00F0) >> 4); + if (battnumber < 12) { + if (frskyData.hub.cellsCount < battnumber+1) { + frskyData.hub.cellsCount = battnumber+1; + } + uint8_t cellVolts = (uint8_t)(((((frskyData.hub.volts & 0xFF00) >> 8) + ((frskyData.hub.volts & 0x000F) << 8)))/10); + frskyData.hub.cellVolts[battnumber] = cellVolts; + if (!frskyData.hub.minCellVolts || cellVolts < frskyData.hub.minCellVolts || battnumber==frskyData.hub.minCellIdx) { + frskyData.hub.minCellIdx = battnumber; + frskyData.hub.minCellVolts = cellVolts; + } + } + break; + } + +#if defined(GPS) + case offsetof(FrskySerialData, hour): + frskyData.hub.hour = ((uint8_t)(frskyData.hub.hour + g_eeGeneral.timezone + 24)) % 24; + break; +#endif + + case offsetof(FrskySerialData, accelX): + case offsetof(FrskySerialData, accelY): + case offsetof(FrskySerialData, accelZ): + *(int16_t*)(&((uint8_t*)&frskyData.hub)[structPos]) /= 10; + break; + +#if 0 + case offsetof(FrskySerialData, gpsAltitude_bp): + case offsetof(FrskySerialData, fuelLevel): + case offsetof(FrskySerialData, gpsLongitude_bp): + case offsetof(FrskySerialData, gpsLatitude_bp): + case offsetof(FrskySerialData, gpsCourse_bp): + case offsetof(FrskySerialData, day): + case offsetof(FrskySerialData, year): + case offsetof(FrskySerialData, sec): + case offsetof(FrskySerialData, gpsSpeed_ap): + case offsetof(FrskySerialData, gpsLongitude_ap): + case offsetof(FrskySerialData, gpsLatitude_ap): + case offsetof(FrskySerialData, gpsCourse_ap): + case offsetof(FrskySerialData, gpsLongitudeEW): + case offsetof(FrskySerialData, gpsLatitudeNS): + case offsetof(FrskySerialData, varioSpeed): + case offsetof(FrskySerialData, power): /* because sent by openXsensor */ + case offsetof(FrskySerialData, vfas): + case offsetof(FrskySerialData, volts_bp): + break; + + default: + *((uint16_t *)(((uint8_t*)&frskyData.hub) + structPos)) = previousValue; + break; +#endif + } +} +#endif + +#if defined(WS_HOW_HIGH) +void parseTelemWSHowHighByte(uint8_t byte) +{ + if (frskyUsrStreaming < (FRSKY_TIMEOUT10ms*3 - 10)) { + ((uint8_t*)&frskyData.hub)[offsetof(FrskySerialData, baroAltitude_bp)] = byte; + checkMinMaxAltitude(); + if (g_model.frsky.varioSource == VARIO_SOURCE_ALTI) { + evalVario(frskyData.hub.baroAltitude_bp, 0); + } + } + else { + // At least 100mS passed since last data received + ((uint8_t*)&frskyData.hub)[offsetof(FrskySerialData, baroAltitude_bp)+1] = byte; + } + // baroAltitude_bp unit here is feet! + frskyUsrStreaming = FRSKY_TIMEOUT10ms*3; // reset counter +} +#endif + +void processFrskyPacket(uint8_t *packet) +{ + // What type of packet? + switch (packet[0]) + { + case LINKPKT: // A1/A2/RSSI values + { + link_counter += 32; + frskyData.analog[0].set(packet[1], g_model.frsky.channels[0].type); + frskyData.analog[1].set(packet[2], g_model.frsky.channels[1].type); + frskyData.rssi[0].set(packet[3]); + frskyData.rssi[1].set(packet[4] / 2); + frskyStreaming = FRSKY_TIMEOUT10ms; // reset counter only if valid frsky packets are being detected +#if defined(VARIO) + uint8_t varioSource = g_model.frsky.varioSource - VARIO_SOURCE_A1; + if (varioSource < 2) + frskyData.hub.varioSpeed = applyChannelRatio(varioSource, frskyData.analog[varioSource].value); +#endif + break; + } +#if defined(FRSKY_HUB) || defined (WS_HOW_HIGH) + case USRPKT: // User Data packet + uint8_t numBytes = 3 + (packet[1] & 0x07); // sanitize in case of data corruption leading to buffer overflow + for (uint8_t i=3; i>1) * (voltage>>1)) / 25; +#endif + + frskyData.hub.currentPrescale += current; + if (frskyData.hub.currentPrescale >= 3600) { + frskyData.hub.currentConsumption += 1; + frskyData.hub.currentPrescale -= 3600; + } + } + + if (frskyData.hub.power > frskyData.hub.maxPower) + frskyData.hub.maxPower = frskyData.hub.power; + } +} + +void telemetryWakeup() +{ +#if defined(PCBSKY9X) + rxPdcUsart(processSerialData); // Receive serial data here +#endif + + // Attempt to transmit any waiting Fr-Sky alarm set packets every 50ms (subject to packet buffer availability) + static uint8_t frskyTxDelay = 5; + if (frskyAlarmsSendState && (--frskyTxDelay == 0)) { + frskyTxDelay = 5; // 50ms + frskySendNextAlarm(); + } + +#ifndef SIMU +#if defined(WS_HOW_HIGH) + if (frskyUsrStreaming > 0) { + frskyUsrStreaming--; + } +#endif + + if (frskyStreaming > 0) { + frskyStreaming--; + } + else { + frskyData.rssi[0].set(0); + frskyData.rssi[1].set(0); + } +#endif + +#if defined(VARIO) + if (TELEMETRY_STREAMING() && !IS_FAI_ENABLED()) + varioWakeup(); +#endif +} + +#if 0 +// not used any more +bool FRSKY_alarmRaised(uint8_t idx) +{ + for (int i=0; i<2; i++) { + if (ALARM_LEVEL(idx, i) != alarm_off) { + if (ALARM_GREATER(idx, i)) { + if (frskyData.analog[idx].value > g_model.frsky.channels[idx].alarms_value[i]) + return true; + } + else { + if (frskyData.analog[idx].value < g_model.frsky.channels[idx].alarms_value[i]) + return true; + } + } + } + return false; +} +#endif + +#if !defined(CPUARM) +inline void FRSKY_EnableTXD(void) +{ + frskyTxBufferCount = 0; + UCSR0B |= (1 << TXEN0); // enable TX +} + +inline void FRSKY_EnableRXD(void) +{ + UCSR0B |= (1 << RXEN0); // enable RX + UCSR0B |= (1 << RXCIE0); // enable Interrupt +} +#endif + +void FRSKY_Init(void) +{ + // clear frsky variables + resetTelemetry(); + +#if defined(PCBTARANIS) + // TODO +#elif defined(PCBSKY9X) + startPdcUsartReceive() ; +#elif !defined(SIMU) + + DDRE &= ~(1 << DDE0); // set RXD0 pin as input + PORTE &= ~(1 << PORTE0); // disable pullup on RXD0 pin + +#undef BAUD +#define BAUD 9600 +#include + + UBRR0H = UBRRH_VALUE; + UBRR0L = UBRRL_VALUE; + UCSR0A &= ~(1 << U2X0); // disable double speed operation. + + // set 8N1 + UCSR0B = 0 | (0 << RXCIE0) | (0 << TXCIE0) | (0 << UDRIE0) | (0 << RXEN0) | (0 << TXEN0) | (0 << UCSZ02); + UCSR0C = 0 | (1 << UCSZ01) | (1 << UCSZ00); + + + while (UCSR0A & (1 << RXC0)) UDR0; // flush receive buffer + + // These should be running right from power up on a FrSky enabled '9X. + FRSKY_EnableTXD(); // enable FrSky-Telemetry reception + FRSKY_EnableRXD(); // enable FrSky-Telemetry reception +#endif +} + +void FrskyValueWithMin::set(uint8_t value) +{ + if (this->value == 0) { + this->value = value; + } + else { + sum += value; + if (link_counter == 0) { + this->value = sum / 8; + sum = 0; + } + } + + if (value && (!min || value < min)) + min = value; +} + +void FrskyValueWithMinMax::set(uint8_t value, uint8_t unit) +{ + FrskyValueWithMin::set(value); + if (unit != UNIT_VOLTS) { + this->value = value; + } + if (!max || value > max) + max = value; +} + +void resetTelemetry() +{ + memclear(&frskyData, sizeof(frskyData)); + +#if defined(FRSKY_HUB) + frskyData.hub.gpsLatitude_bp = 2; + frskyData.hub.gpsLongitude_bp = 2; + frskyData.hub.gpsFix = -1; +#endif + +#ifdef SIMU + frskyData.analog[0].set(120, UNIT_VOLTS); + frskyData.analog[1].set(240, UNIT_VOLTS); + frskyData.rssi[0].value = 75; + frskyData.rssi[1].value = 75; + frskyData.hub.fuelLevel = 75; + frskyData.hub.rpm = 12000; + +#if defined(GPS) + frskyData.hub.gpsFix = 1; + frskyData.hub.gpsLatitude_bp = 4401; + frskyData.hub.gpsLatitude_ap = 7710; + frskyData.hub.gpsLongitude_bp = 1006; + frskyData.hub.gpsLongitude_ap = 8872; + frskyData.hub.gpsSpeed_bp = (100 * 250) / 463; + getGpsPilotPosition(); + + frskyData.hub.gpsLatitude_bp = 4401; + frskyData.hub.gpsLatitude_ap = 7455; + frskyData.hub.gpsLongitude_bp = 1006; + frskyData.hub.gpsLongitude_ap = 9533; + getGpsDistance(); +#endif + + frskyData.hub.cellsCount = 6; + + frskyData.hub.gpsAltitude_bp = 50; + frskyData.hub.baroAltitude_bp = 50; + frskyData.hub.minAltitude = 10; + frskyData.hub.maxAltitude = 500; + + frskyData.hub.accelY = 100; + frskyData.hub.temperature1 = -30; + frskyData.hub.maxTemperature1 = 100; + + frskyData.hub.current = 5; + frskyData.hub.maxCurrent = 56; +#endif +} diff --git a/radio/src/translations.cpp b/radio/src/translations.cpp index 98d62ab7b..3e1ef09c7 100644 --- a/radio/src/translations.cpp +++ b/radio/src/translations.cpp @@ -185,6 +185,8 @@ const pm_char STR_BAR[] PROGMEM = TR_BAR; const pm_char STR_ALARM[] PROGMEM = TR_ALARM; const pm_char STR_USRDATA[] PROGMEM = TR_USRDATA; const pm_char STR_BLADES[] PROGMEM = TR_BLADES; +const pm_char STR_SPURGEAR[] PROGMEM = TR_SPURGEAR; // T.Foley +const pm_char STR_PINIONGEAR[] PROGMEM = TR_PINIONGEAR; // T.Foley const pm_char STR_SCREEN[] PROGMEM = TR_SCREEN; const pm_char STR_SOUND_LABEL[] PROGMEM = TR_SOUND_LABEL; const pm_char STR_LENGTH[] PROGMEM = TR_LENGTH; diff --git a/radio/src/translations.cpp~ b/radio/src/translations.cpp~ new file mode 100644 index 000000000..98d62ab7b --- /dev/null +++ b/radio/src/translations.cpp~ @@ -0,0 +1,672 @@ +/* + * Authors (alphabetical order) + * - Andre Bernet + * - Andreas Weitl + * - Bertrand Songis + * - Bryan J. Rentoul (Gruvin) + * - Cameron Weeks + * - Erez Raviv + * - Gabriel Birkus + * - Jean-Pierre Parisy + * - Karl Szmutny + * - Michael Blandford + * - Michal Hlavinka + * - Pat Mackenzie + * - Philip Moss + * - Rob Thomson + * - Romolo Manfredini + * - Thomas Husterer + * + * opentx is based on code named + * gruvin9x by Bryan J. Rentoul: http://code.google.com/p/gruvin9x/, + * er9x by Erez Raviv: http://code.google.com/p/er9x/, + * and the original (and ongoing) project by + * Thomas Husterer, th9x: http://code.google.com/p/th9x/ + * + * This program 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. + * + * This program 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. See the + * GNU General Public License for more details. + * + */ + +#include "opentx.h" + +#define ISTR(x) LEN_##x TR_##x + +// The non-0-terminated-strings +const pm_char STR_OPEN9X[] PROGMEM = + ISTR(OFFON) + ISTR(MMMINV) + ISTR(NCHANNELS) +#if !defined(GRAPHICS) + ISTR(VBEEPLEN) +#endif + ISTR(VBEEPMODE) +#if defined(ROTARY_ENCODERS) + ISTR(VRENAVIG) +#endif +#if defined(ROTARY_ENCODER_NAVIGATION) + ISTR(VRENCODERS) +#endif + ISTR(TRNMODE) + ISTR(TRNCHN) + ISTR(VTRIMINC) + ISTR(RETA123) + ISTR(VPROTOS) + ISTR(POSNEG) + ISTR(VBLMODE) + ISTR(VCURVEFUNC) + ISTR(VMLTPX) + ISTR(VMLTPX2) + ISTR(VMIXTRIMS) + ISTR(VCSWFUNC) + ISTR(VFSWFUNC) + ISTR(VFSWRESET) + ISTR(FUNCSOUNDS) + ISTR(VTELEMCHNS) +#if defined(FRSKY) || defined(CPUARM) + #if defined(CPUARM) + ISTR(VTELEMUNIT_IMP) + ISTR(VTELEMUNIT_NORM) + #else + ISTR(VTELEMUNIT) + #endif + ISTR(VALARM) + ISTR(VALARMFN) + ISTR(VTELPROTO) + ISTR(GPSFORMAT) + ISTR(VOLTSRC) + ISTR(VARIOSRC) + ISTR(VSCREEN) +#endif +#if defined(TEMPLATES) + ISTR(VTEMPLATES) +#endif +#if defined(HELI) + ISTR(VSWASHTYPE) +#endif + ISTR(VKEYS) + ISTR(VSWITCHES) + ISTR(VSRCRAW) + ISTR(VTMRMODES) +#if defined(CPUM2560) || defined(CPUARM) + ISTR(DATETIME) +#endif +#if defined(CPUARM) + ISTR(VLCD) + ISTR(VUNITSSYSTEM) + ISTR(VBEEPCOUNTDOWN) +#endif +#if defined(PXX) + ISTR(COUNTRYCODES) + ISTR(VFAILSAFE) +#endif +#if defined(PCBTARANIS) + ISTR(VTRAINERMODES) +#endif +#if defined(MAVLINK) + ISTR(MAVLINK_BAUDS) + ISTR(MAVLINK_AC_MODES) + ISTR(MAVLINK_AP_MODES) +#endif + ; + +// The 0-terminated-strings +const pm_char STR_POPUPS[] PROGMEM = TR_POPUPS; +const pm_char STR_MENUWHENDONE[] PROGMEM = TR_MENUWHENDONE; +const pm_char STR_FREE[] PROGMEM = TR_FREE; +const pm_char STR_DELETEMODEL[] PROGMEM = TR_DELETEMODEL; +const pm_char STR_COPYINGMODEL[] PROGMEM = TR_COPYINGMODEL; +const pm_char STR_MOVINGMODEL[] PROGMEM = TR_MOVINGMODEL; +const pm_char STR_LOADINGMODEL[] PROGMEM = TR_LOADINGMODEL; +const pm_char STR_NAME[] PROGMEM = TR_NAME; +const pm_char STR_BITMAP[] PROGMEM = TR_BITMAP; +const pm_char STR_TIMER[] PROGMEM = TR_TIMER; +const pm_char STR_ELIMITS[] PROGMEM = TR_ELIMITS; +const pm_char STR_ETRIMS[] PROGMEM = TR_ETRIMS; +const pm_char STR_TRIMINC[] PROGMEM = TR_TRIMINC; +const pm_char STR_TTRACE[] PROGMEM = TR_TTRACE; +const pm_char STR_TTRIM[] PROGMEM = TR_TTRIM; +const pm_char STR_BEEPCTR[] PROGMEM = TR_BEEPCTR; +const pm_char STR_PROTO[] PROGMEM = TR_PROTO; +const pm_char STR_PPMFRAME[] PROGMEM = TR_PPMFRAME; +const pm_char STR_MS[] PROGMEM = TR_MS; +const pm_char STR_SWITCH[] PROGMEM = TR_SWITCH; +const pm_char STR_TRIMS[] PROGMEM = TR_TRIMS; +const pm_char STR_FADEIN[] PROGMEM = TR_FADEIN; +const pm_char STR_FADEOUT[] PROGMEM = TR_FADEOUT; +const pm_char STR_DEFAULT[] PROGMEM = TR_DEFAULT; +const pm_char STR_CHECKTRIMS[] PROGMEM = TR_CHECKTRIMS; +#ifdef HELI +const pm_char STR_SWASHTYPE[] PROGMEM = TR_SWASHTYPE; +const pm_char STR_COLLECTIVE[] PROGMEM = TR_COLLECTIVE; +const pm_char STR_SWASHRING[] PROGMEM = TR_SWASHRING; +const pm_char STR_ELEDIRECTION[] PROGMEM = TR_ELEDIRECTION; +const pm_char STR_AILDIRECTION[] PROGMEM = TR_AILDIRECTION; +const pm_char STR_COLDIRECTION[] PROGMEM = TR_COLDIRECTION; +#endif +const pm_char STR_MODE[] PROGMEM = TR_MODE; +#if defined(AUDIO) && defined(BUZZER) +const pm_char STR_SPEAKER[] PROGMEM = TR_SPEAKER; +const pm_char STR_BUZZER[] PROGMEM = TR_BUZZER; +#endif +const pm_char STR_NOFREEEXPO[] PROGMEM = TR_NOFREEEXPO; +const pm_char STR_NOFREEMIXER[] PROGMEM = TR_NOFREEMIXER; +const pm_char STR_INSERTMIX[] PROGMEM = TR_INSERTMIX; +const pm_char STR_EDITMIX[] PROGMEM = TR_EDITMIX; +const pm_char STR_SOURCE[] PROGMEM = TR_SOURCE; +const pm_char STR_WEIGHT[] PROGMEM = TR_WEIGHT; +const pm_char STR_EXPO[] PROGMEM = TR_EXPO; +const pm_char STR_SIDE[] PROGMEM = TR_SIDE; +const pm_char STR_DIFFERENTIAL[] PROGMEM = TR_DIFFERENTIAL; +const pm_char STR_OFFSET[] PROGMEM = TR_OFFSET; +const pm_char STR_TRIM[] PROGMEM = TR_TRIM; +const pm_char STR_DREX[] PROGMEM = TR_DREX; +const pm_char STR_CURVE[] PROGMEM = TR_CURVE; +const pm_char STR_FLMODE[] PROGMEM = TR_FLMODE; +const pm_char STR_MIXWARNING[] PROGMEM = TR_MIXWARNING; +const pm_char STR_OFF[] PROGMEM = TR_OFF; +const pm_char STR_MULTPX[] PROGMEM = TR_MULTPX; +const pm_char STR_DELAYDOWN[] PROGMEM = TR_DELAYDOWN; +const pm_char STR_DELAYUP[] PROGMEM = TR_DELAYUP; +const pm_char STR_SLOWDOWN[] PROGMEM = TR_SLOWDOWN; +const pm_char STR_SLOWUP[] PROGMEM = TR_SLOWUP; +const pm_char STR_MIXER[] PROGMEM = TR_MIXER; +const pm_char STR_CV[] PROGMEM = TR_CV; +const pm_char STR_GV[] PROGMEM = TR_GV; +const pm_char STR_ACHANNEL[] PROGMEM = TR_ACHANNEL; +const pm_char STR_RANGE[] PROGMEM = TR_RANGE; +const pm_char STR_BAR[] PROGMEM = TR_BAR; +const pm_char STR_ALARM[] PROGMEM = TR_ALARM; +const pm_char STR_USRDATA[] PROGMEM = TR_USRDATA; +const pm_char STR_BLADES[] PROGMEM = TR_BLADES; +const pm_char STR_SCREEN[] PROGMEM = TR_SCREEN; +const pm_char STR_SOUND_LABEL[] PROGMEM = TR_SOUND_LABEL; +const pm_char STR_LENGTH[] PROGMEM = TR_LENGTH; +#if defined(AUDIO) +const pm_char STR_SPKRPITCH[] PROGMEM = TR_SPKRPITCH; +#endif +#if defined(HAPTIC) +const pm_char STR_HAPTIC_LABEL[] PROGMEM = TR_HAPTIC_LABEL; +const pm_char STR_HAPTICSTRENGTH[] PROGMEM = TR_HAPTICSTRENGTH; +#endif +const pm_char STR_CONTRAST[] PROGMEM = TR_CONTRAST; +const pm_char STR_ALARMS_LABEL[] PROGMEM = TR_ALARMS_LABEL; +#if defined(BATTGRAPH) || defined(PCBTARANIS) +const pm_char STR_BATTERY_RANGE[] PROGMEM = TR_BATTERY_RANGE; +#endif +const pm_char STR_BATTERYWARNING[] PROGMEM = TR_BATTERYWARNING; +const pm_char STR_INACTIVITYALARM[] PROGMEM = TR_INACTIVITYALARM; +const pm_char STR_MEMORYWARNING[] PROGMEM = TR_MEMORYWARNING; +const pm_char STR_ALARMWARNING[] PROGMEM = TR_ALARMWARNING; +#if defined(ROTARY_ENCODERS) +const pm_char STR_RENAVIG[] PROGMEM = TR_RENAVIG; +#endif +const pm_char STR_THROTTLEREVERSE[] PROGMEM = TR_THROTTLEREVERSE; +const pm_char STR_MINUTEBEEP[] PROGMEM = TR_MINUTEBEEP; +const pm_char STR_BEEPCOUNTDOWN[] PROGMEM = TR_BEEPCOUNTDOWN; +const pm_char STR_PERSISTENT[] PROGMEM = TR_PERSISTENT; +const pm_char STR_BACKLIGHT_LABEL[] PROGMEM = TR_BACKLIGHT_LABEL; +const pm_char STR_BLDELAY[] PROGMEM = TR_BLDELAY; + +#if defined(PWM_BACKLIGHT) +const pm_char STR_BLONBRIGHTNESS[] PROGMEM = TR_BLONBRIGHTNESS; +const pm_char STR_BLOFFBRIGHTNESS[] PROGMEM = TR_BLOFFBRIGHTNESS; +#endif + +const pm_char STR_SPLASHSCREEN[] PROGMEM = TR_SPLASHSCREEN; +const pm_char STR_THROTTLEWARNING[] PROGMEM = TR_THROTTLEWARNING; +const pm_char STR_SWITCHWARNING[] PROGMEM = TR_SWITCHWARNING; +#ifdef FRSKY +const pm_char STR_TIMEZONE[] PROGMEM = TR_TIMEZONE; +const pm_char STR_GPSCOORD[] PROGMEM = TR_GPSCOORD; +const pm_char STR_VARIO[] PROGMEM = TR_VARIO; +#endif +const pm_char STR_RXCHANNELORD[] PROGMEM = TR_RXCHANNELORD; +const pm_char STR_SLAVE[] PROGMEM = TR_SLAVE; +const pm_char STR_MODESRC[] PROGMEM = TR_MODESRC; +const pm_char STR_MULTIPLIER[] PROGMEM = TR_MULTIPLIER; +const pm_char STR_CAL[] PROGMEM = TR_CAL; +const pm_char STR_VTRIM[] PROGMEM = TR_VTRIM; +const pm_char STR_BG[] PROGMEM = TR_BG; +const pm_char STR_MENUTOSTART[] PROGMEM = TR_MENUTOSTART; +const pm_char STR_SETMIDPOINT[] PROGMEM = TR_SETMIDPOINT; +const pm_char STR_MOVESTICKSPOTS[] PROGMEM = TR_MOVESTICKSPOTS; +const pm_char STR_RXBATT[] PROGMEM = TR_RXBATT; +const pm_char STR_TX[] PROGMEM = TR_TXnRX; +const pm_char STR_ACCEL[] PROGMEM = TR_ACCEL; +const pm_char STR_NODATA[] PROGMEM = TR_NODATA; +const pm_char STR_TM1TM2[] PROGMEM = TR_TM1TM2; +const pm_char STR_THRTHP[] PROGMEM = TR_THRTHP; +const pm_char STR_TOT[] PROGMEM = TR_TOT; +const pm_char STR_TMR1LATMAXUS[] PROGMEM = TR_TMR1LATMAXUS; +const pm_char STR_TMR1LATMINUS[] PROGMEM = TR_TMR1LATMINUS; +const pm_char STR_TMR1JITTERUS[] PROGMEM = TR_TMR1JITTERUS; +const pm_char STR_TMIXMAXMS[] PROGMEM = TR_TMIXMAXMS; +const pm_char STR_FREESTACKMINB[] PROGMEM = TR_FREESTACKMINB; +const pm_char STR_MENUTORESET[] PROGMEM = TR_MENUTORESET; +const pm_char STR_PPM[] PROGMEM = TR_PPM; +const pm_char STR_CH[] PROGMEM = TR_CH; +const pm_char STR_MODEL[] PROGMEM = TR_MODEL; +const pm_char STR_FP[] PROGMEM = TR_FP; +const pm_char STR_MIX[] PROGMEM = TR_MIX; +const pm_char STR_EEPROMLOWMEM[] PROGMEM = TR_EEPROMLOWMEM; +const pm_char STR_ALERT[] PROGMEM = TR_ALERT; +const pm_char STR_PRESSANYKEYTOSKIP[] PROGMEM = TR_PRESSANYKEYTOSKIP; +const pm_char STR_THROTTLENOTIDLE[] PROGMEM = TR_THROTTLENOTIDLE; +const pm_char STR_ALARMSDISABLED[] PROGMEM = TR_ALARMSDISABLED; +const pm_char STR_PRESSANYKEY[] PROGMEM = TR_PRESSANYKEY; +const pm_char STR_BADEEPROMDATA[] PROGMEM = TR_BADEEPROMDATA; +const pm_char STR_EEPROMFORMATTING[] PROGMEM = TR_EEPROMFORMATTING; +const pm_char STR_EEPROMOVERFLOW[] PROGMEM = TR_EEPROMOVERFLOW; +const pm_char STR_TRIMS2OFFSETS[] PROGMEM = TR_TRIMS2OFFSETS; +const pm_char STR_MENURADIOSETUP[] PROGMEM = TR_MENURADIOSETUP; + +#if defined(CPUM2560) || defined(CPUARM) +const pm_char STR_MENUDATEANDTIME[] PROGMEM = TR_MENUDATEANDTIME; +#endif + +const pm_char STR_MENUTRAINER[] PROGMEM = TR_MENUTRAINER; +const pm_char STR_MENUVERSION[] PROGMEM = TR_MENUVERSION; +const pm_char STR_MENUDIAG[] PROGMEM = TR_MENUDIAG; +const pm_char STR_MENUANA[] PROGMEM = TR_MENUANA; +const pm_char STR_MENUCALIBRATION[] PROGMEM = TR_MENUCALIBRATION; + +const pm_char STR_MENUMODELSEL[] PROGMEM = TR_MENUMODELSEL; +const pm_char STR_MENUSETUP[] PROGMEM = TR_MENUSETUP; +const pm_char STR_MENUFLIGHTPHASE[] PROGMEM = TR_MENUFLIGHTPHASE; +const pm_char STR_MENUFLIGHTPHASES[] PROGMEM = TR_MENUFLIGHTPHASES; + +#ifdef HELI +const pm_char STR_MENUHELISETUP[] PROGMEM = TR_MENUHELISETUP; +#endif + +const pm_char STR_MENUINPUTS[] PROGMEM = TR_MENUINPUTS; +const pm_char STR_MENULIMITS[] PROGMEM = TR_MENULIMITS; +const pm_char STR_MENUCURVES[] PROGMEM = TR_MENUCURVES; +const pm_char STR_MENUCURVE[] PROGMEM = TR_MENUCURVE; +const pm_char STR_MENUCUSTOMSWITCH[] PROGMEM = TR_MENUCUSTOMSWITCH; +const pm_char STR_MENUCUSTOMSWITCHES[] PROGMEM = TR_MENUCUSTOMSWITCHES; +const pm_char STR_MENUCUSTOMFUNC[] PROGMEM = TR_MENUCUSTOMFUNC; + +#if defined(LUA) +const pm_char STR_MENUCUSTOMSCRIPTS[] PROGMEM = "CUSTOM SCRIPTS"; +const pm_char STR_MENUCUSTOMSCRIPT[] PROGMEM = "CUSTOM SCRIPT"; +#endif + +#if defined(FRSKY) +const pm_char STR_MENUTELEMETRY[] PROGMEM = TR_MENUTELEMETRY; +const pm_char STR_LIMIT[] PROGMEM = TR_LIMIT; +#endif + +#if defined(TEMPLATES) +const pm_char STR_MENUTEMPLATES[] PROGMEM = TR_MENUTEMPLATES; +#endif + +const pm_char STR_MENUSTAT[] PROGMEM = TR_MENUSTAT; +const pm_char STR_MENUDEBUG[] PROGMEM = TR_MENUDEBUG; +const pm_char STR_MENUGLOBALVARS[] PROGMEM = TR_MENUGLOBALVARS; + +#if defined(DSM2) || defined(PXX) +const pm_char STR_RXNUM[] PROGMEM = TR_RXNUM; +#endif + +#if defined(PXX) +const pm_char STR_SYNCMENU[] PROGMEM = TR_SYNCMENU; +const pm_char STR_INTERNALRF[] PROGMEM = TR_INTERNALRF; +const pm_char STR_EXTERNALRF[] PROGMEM = TR_EXTERNALRF; +const pm_char STR_COUNTRYCODE[] PROGMEM = TR_COUNTRYCODE; +const pm_char STR_FAILSAFE[] PROGMEM = TR_FAILSAFE; +const pm_char STR_FAILSAFESET[] PROGMEM = TR_FAILSAFESET; +#endif + +const pm_char STR_INVERT_THR[] PROGMEM = TR_INVERT_THR; +const pm_char STR_AND_SWITCH[] PROGMEM = TR_AND_SWITCH; +extern const pm_char STR_CF[] PROGMEM = TR_CF; + +#if defined(FRSKY_HUB) +const pm_char STR_MINRSSI[] PROGMEM = TR_MINRSSI; +const pm_char STR_LATITUDE[] PROGMEM = TR_LATITUDE; +const pm_char STR_LONGITUDE[] PROGMEM = TR_LONGITUDE; +#endif + +#if defined(CPUARM) || defined(CPUM2560) +const pm_char STR_SHUTDOWN[] PROGMEM = TR_SHUTDOWN; +#endif + +const pm_char STR_BATT_CALIB[] PROGMEM = TR_BATT_CALIB; + +#if defined(CPUARM) || defined(FRSKY) +const pm_char STR_VOLTAGE[] PROGMEM = TR_VOLTAGE; +const pm_char STR_CURRENT[] PROGMEM = TR_CURRENT; +#endif + +#if defined(CPUARM) +const pm_char STR_CURRENT_CALIB[] PROGMEM = TR_CURRENT_CALIB; +const pm_char STR_UNITSSYSTEM[] PROGMEM = TR_UNITSSYSTEM; +const pm_char STR_VOICELANG[] PROGMEM = TR_VOICELANG; +const pm_char STR_MODELIDUSED[] PROGMEM = TR_MODELIDUSED; +const pm_char STR_BEEP_VOLUME[] PROGMEM = INDENT TR_BEEP_VOLUME; +const pm_char STR_WAV_VOLUME[] PROGMEM = INDENT TR_WAV_VOLUME; +const pm_char STR_VARIO_VOLUME[] PROGMEM = INDENT TR_VARIO_VOLUME; +const pm_char STR_BG_VOLUME[] PROGMEM = INDENT TR_BG_VOLUME; +const pm_char STR_PERSISTENT_MAH[] PROGMEM = TR_PERSISTENT_MAH; +#endif + +#if defined(NAVIGATION_MENUS) +const pm_char STR_SELECT_MODEL[] PROGMEM = TR_SELECT_MODEL; +const pm_char STR_CREATE_MODEL[] PROGMEM = TR_CREATE_MODEL; +const pm_char STR_COPY_MODEL[] PROGMEM = TR_COPY_MODEL; +const pm_char STR_MOVE_MODEL[] PROGMEM = TR_MOVE_MODEL; +const pm_char STR_DELETE_MODEL[] PROGMEM = TR_DELETE_MODEL; +const pm_char STR_EDIT[] PROGMEM = TR_EDIT; +const pm_char STR_INSERT_BEFORE[] PROGMEM = TR_INSERT_BEFORE; +const pm_char STR_INSERT_AFTER[] PROGMEM = TR_INSERT_AFTER; +const pm_char STR_COPY[] PROGMEM = TR_COPY; +const pm_char STR_MOVE[] PROGMEM = TR_MOVE; +const pm_char STR_PASTE[] PROGMEM = TR_PASTE; +const pm_char STR_INSERT[] PROGMEM = TR_INSERT; +const pm_char STR_DELETE[] PROGMEM = TR_DELETE; +const pm_char STR_RESET_FLIGHT[] PROGMEM = TR_RESET_FLIGHT; +const pm_char STR_RESET_TIMER1[] PROGMEM = TR_RESET_TIMER1; +const pm_char STR_RESET_TIMER2[] PROGMEM = TR_RESET_TIMER2; +const pm_char STR_RESET_TELEMETRY[] PROGMEM = TR_RESET_TELEMETRY; +const pm_char STR_STATISTICS[] PROGMEM = TR_STATISTICS; +const pm_char STR_ABOUT_US[] PROGMEM = TR_ABOUT_US; +#endif + +const pm_char STR_RESET_BTN[] PROGMEM = TR_RESET_BTN; + +#if defined(SDCARD) +const pm_char STR_BACKUP_MODEL[] PROGMEM = TR_BACKUP_MODEL; +const pm_char STR_RESTORE_MODEL[] PROGMEM = TR_RESTORE_MODEL; +const pm_char STR_SDCARD_ERROR[] PROGMEM = TR_SDCARD_ERROR; +const pm_char STR_NO_SDCARD[] PROGMEM = TR_NO_SDCARD; +const pm_char STR_INCOMPATIBLE[] PROGMEM = TR_INCOMPATIBLE; +const pm_char STR_LOGS_PATH[] PROGMEM = LOGS_PATH; +const pm_char STR_LOGS_EXT[] PROGMEM = LOGS_EXT; +const pm_char STR_MODELS_PATH[] PROGMEM = MODELS_PATH; +const pm_char STR_MODELS_EXT[] PROGMEM = MODELS_EXT; +#endif + +const pm_char STR_WARNING[] PROGMEM = TR_WARNING; +const pm_char STR_EEPROMWARN[] PROGMEM = TR_EEPROMWARN; +const pm_char STR_THROTTLEWARN[] PROGMEM = TR_THROTTLEWARN; +const pm_char STR_ALARMSWARN[] PROGMEM = TR_ALARMSWARN; +const pm_char STR_SWITCHWARN[] PROGMEM = TR_SWITCHWARN; + +const pm_char STR_SPEAKER_VOLUME[] PROGMEM = TR_SPEAKER_VOLUME; +const pm_char STR_LCD[] PROGMEM = TR_LCD; +const pm_char STR_BRIGHTNESS[] PROGMEM = TR_BRIGHTNESS; +const pm_char STR_CPU_TEMP[] PROGMEM = TR_CPU_TEMP; +const pm_char STR_CPU_CURRENT[] PROGMEM = TR_CPU_CURRENT; +const pm_char STR_CPU_MAH[] PROGMEM = TR_CPU_MAH; +const pm_char STR_COPROC[] PROGMEM = TR_COPROC; +const pm_char STR_COPROC_TEMP[] PROGMEM = TR_COPROC_TEMP; +const pm_char STR_TEMPWARNING[] PROGMEM = TR_TEMPWARNING; +const pm_char STR_CAPAWARNING[] PROGMEM = TR_CAPAWARNING; +const pm_char STR_FUNC[] PROGMEM = TR_FUNC; +const pm_char STR_V1[] PROGMEM = TR_V1; +const pm_char STR_V2[] PROGMEM = TR_V2; +const pm_char STR_DURATION[] PROGMEM = TR_DURATION; +const pm_char STR_DELAY[] PROGMEM = TR_DELAY; +const pm_char STR_SD_CARD[] PROGMEM = TR_SD_CARD; +const pm_char STR_SDHC_CARD[] PROGMEM = TR_SDHC_CARD; +const pm_char STR_NO_SOUNDS_ON_SD[] PROGMEM = TR_NO_SOUNDS_ON_SD; +const pm_char STR_NO_MODELS_ON_SD[] PROGMEM = TR_NO_MODELS_ON_SD; +const pm_char STR_NO_BITMAPS_ON_SD[] PROGMEM = TR_NO_BITMAPS_ON_SD; +const pm_char STR_NO_SCRIPTS_ON_SD[] PROGMEM = "No Scripts on SD"; // TODO TR_NO_BITMAPS_ON_SD; +const pm_char STR_PLAY_FILE[] PROGMEM = TR_PLAY_FILE; +const pm_char STR_ASSIGN_BITMAP[] PROGMEM = TR_ASSIGN_BITMAP; +const pm_char STR_EXECUTE_FILE[] PROGMEM = "Execute"; +const pm_char STR_DELETE_FILE[] PROGMEM = TR_DELETE_FILE; +const pm_char STR_COPY_FILE[] PROGMEM = TR_COPY_FILE; +const pm_char STR_RENAME_FILE[] PROGMEM = TR_RENAME_FILE; +const pm_char STR_SD_INFO[] PROGMEM = TR_SD_INFO; +const pm_char STR_SD_FORMAT[] PROGMEM = TR_SD_FORMAT; +const pm_char STR_REMOVED[] PROGMEM = TR_REMOVED; +const pm_char STR_NA[] PROGMEM = TR_NA; +const pm_char STR_HARDWARE[] PROGMEM = TR_HARDWARE; +const pm_char STR_FORMATTING[] PROGMEM = TR_FORMATTING; +const pm_char STR_TEMP_CALIB[] PROGMEM = TR_TEMP_CALIB; +const pm_char STR_TIME[] PROGMEM = TR_TIME; +const pm_char STR_BAUDRATE[] PROGMEM = TR_BAUDRATE; +const pm_char STR_SD_INFO_TITLE[] PROGMEM = TR_SD_INFO_TITLE; +const pm_char STR_SD_TYPE[] PROGMEM = TR_SD_TYPE; +const pm_char STR_SD_SPEED[] PROGMEM = TR_SD_SPEED; +const pm_char STR_SD_SECTORS[] PROGMEM = TR_SD_SECTORS; +const pm_char STR_SD_SIZE[] PROGMEM = TR_SD_SIZE; +const pm_char STR_TYPE[] PROGMEM = TR_TYPE; +const pm_char STR_GLOBAL_VARS[] PROGMEM = TR_GLOBAL_VARS; +const pm_char STR_GLOBAL_VAR[] PROGMEM = TR_GLOBAL_VAR; +const pm_char STR_OWN[] PROGMEM = TR_OWN; +const pm_char STR_ROTARY_ENCODER[] PROGMEM = TR_ROTARY_ENCODER; +const pm_char STR_DATE[] PROGMEM = TR_DATE; +const pm_char STR_CHANNELS_MONITOR[] PROGMEM = TR_CHANNELS_MONITOR; +const pm_char STR_PATH_TOO_LONG[] PROGMEM = "Path too long"; +const pm_char STR_VIEW_TEXT[] PROGMEM = "View text"; + +#if LCD_W >= 212 + const pm_char STR_MODELNAME[] PROGMEM = TR_MODELNAME; + const pm_char STR_PHASENAME[] PROGMEM = TR_PHASENAME; + const pm_char STR_MIXNAME[] PROGMEM = TR_MIXNAME; + const pm_char STR_EXPONAME[] PROGMEM = TR_EXPONAME; +#endif + +#if LCD_W >= 212 + const char * STR_PHASES_HEADERS[] = TR_PHASES_HEADERS; + const char * STR_LIMITS_HEADERS[] = TR_LIMITS_HEADERS; + const char * STR_CSW_HEADERS[] = TR_CSW_HEADERS; +#endif + +#if defined(PCBTARANIS) + const pm_char STR_BYTES[] PROGMEM = TR_BYTES; + const pm_char STR_MODULE_BIND[] PROGMEM = TR_MODULE_BIND; + const pm_char STR_SET[] PROGMEM = TR_SET; + const pm_char STR_TRAINER[] PROGMEM = TR_TRAINER; + const pm_char STR_ANTENNAPROBLEM[] PROGMEM = TR_ANTENNAPROBLEM; + const pm_char STR_MODULE[] PROGMEM = TR_MODULE; + const pm_char STR_CHANNELRANGE[] PROGMEM = TR_CHANNELRANGE; + const pm_char STR_LOWALARM[] PROGMEM = TR_LOWALARM; + const pm_char STR_CRITICALALARM[] PROGMEM = TR_CRITICALALARM; + const pm_char STR_ENABLE_POPUP[] PROGMEM = "Enable Popup"; + const pm_char STR_DISABLE_POPUP[] PROGMEM = "Disable Popup"; + const pm_char STR_CURVE_PRESET[] PROGMEM = "Preset..."; + const pm_char STR_PRESET[] PROGMEM = "Preset"; + const pm_char STR_MIRROR[] PROGMEM = "Mirror"; + const pm_char STR_CLEAR[] PROGMEM = "Clear"; + const pm_char STR_RESET[] PROGMEM = "Reset"; + const pm_char STR_COPY_TRIMS_TO_OFFSET[] = "Copy Trims To Offset"; + const pm_char STR_TOP_BAR[] PROGMEM = "Top Bar"; + const pm_char STR_ALTITUDE[] PROGMEM = INDENT "Altitude"; + const pm_char STR_SCALE[] PROGMEM = "Scale"; + const pm_char STR_VIEW_CHANNELS[] PROGMEM = "View Channels"; + const pm_char STR_VIEW_NOTES[] PROGMEM = "View Notes"; +#endif + +#if MENUS_LOCK == 1 + const pm_char STR_UNLOCKED[] PROGMEM = TR_UNLOCKED; + const pm_char STR_MODS_FORBIDDEN[] PROGMEM = TR_MODS_FORBIDDEN; +#endif + +#if defined(PCBTARANIS) || defined(DSM2) + const pm_char STR_MODULE_RANGE[] PROGMEM = TR_MODULE_RANGE; +#endif + +#if defined(MAVLINK) + const pm_char STR_MAVLINK_RC_RSSI_SCALE_LABEL[] PROGMEM = TR_MAVLINK_RC_RSSI_SCALE_LABEL; + const pm_char STR_MAVLINK_PC_RSSI_EN_LABEL[] PROGMEM = TR_MAVLINK_PC_RSSI_EN_LABEL; + const pm_char STR_MAVMENUSETUP_TITLE[] PROGMEM = TR_MAVMENUSETUP_TITLE; + const pm_char STR_MAVLINK_BAUD_LABEL[] PROGMEM = TR_MAVLINK_BAUD_LABEL; + const pm_char STR_MAVLINK_INFOS[] PROGMEM = TR_MAVLINK_INFOS; + const pm_char STR_MAVLINK_MODE[] PROGMEM = TR_MAVLINK_MODE; + const pm_char STR_MAVLINK_CUR_MODE[] PROGMEM = TR_MAVLINK_CUR_MODE; + const pm_char STR_MAVLINK_ARMED[] PROGMEM = TR_MAVLINK_ARMED; + const pm_char STR_MAVLINK_BAT_MENU_TITLE[] PROGMEM = TR_MAVLINK_BAT_MENU_TITLE; + const pm_char STR_MAVLINK_BATTERY_LABEL[] PROGMEM = TR_MAVLINK_BATTERY_LABEL; + const pm_char STR_MAVLINK_RC_RSSI_LABEL[] PROGMEM = TR_MAVLINK_RC_RSSI_LABEL; + const pm_char STR_MAVLINK_PC_RSSI_LABEL[] PROGMEM = TR_MAVLINK_PC_RSSI_LABEL; + const pm_char STR_MAVLINK_NAV_MENU_TITLE[] PROGMEM = TR_MAVLINK_NAV_MENU_TITLE; + const pm_char STR_MAVLINK_COURSE[] PROGMEM = TR_MAVLINK_COURSE; + const pm_char STR_MAVLINK_HEADING[] PROGMEM = TR_MAVLINK_HEADING; + const pm_char STR_MAVLINK_BEARING[] PROGMEM = TR_MAVLINK_BEARING; + const pm_char STR_MAVLINK_ALTITUDE[] PROGMEM = TR_MAVLINK_ALTITUDE; + const pm_char STR_MAVLINK_GPS[] PROGMEM = TR_MAVLINK_GPS; + const pm_char STR_MAVLINK_NO_FIX[] PROGMEM = TR_MAVLINK_NO_FIX; + const pm_char STR_MAVLINK_SAT[] PROGMEM = TR_MAVLINK_SAT; + const pm_char STR_MAVLINK_HDOP[] PROGMEM = TR_MAVLINK_HDOP; + const pm_char STR_MAVLINK_LAT[] PROGMEM = TR_MAVLINK_LAT; + const pm_char STR_MAVLINK_LON[] PROGMEM = TR_MAVLINK_LON; +#endif + +#if !defined(CPUM64) + const pm_char STR_ABOUTUS[] PROGMEM = TR_ABOUTUS; + const pm_char STR_ABOUT_OPENTX_1[] PROGMEM = TR_ABOUT_OPENTX_1; + const pm_char STR_ABOUT_OPENTX_2[] PROGMEM = TR_ABOUT_OPENTX_2; + const pm_char STR_ABOUT_OPENTX_3[] PROGMEM = TR_ABOUT_OPENTX_3; + const pm_char STR_ABOUT_OPENTX_4[] PROGMEM = TR_ABOUT_OPENTX_4; + const pm_char STR_ABOUT_OPENTX_5[] PROGMEM = TR_ABOUT_OPENTX_5; + + const pm_char STR_ABOUT_BERTRAND_1[] PROGMEM = TR_ABOUT_BERTRAND_1; + const pm_char STR_ABOUT_BERTRAND_2[] PROGMEM = TR_ABOUT_BERTRAND_2; + const pm_char STR_ABOUT_BERTRAND_3[] PROGMEM = TR_ABOUT_BERTRAND_3; + + const pm_char STR_ABOUT_MIKE_1[] PROGMEM = TR_ABOUT_MIKE_1; + const pm_char STR_ABOUT_MIKE_2[] PROGMEM = TR_ABOUT_MIKE_2; + const pm_char STR_ABOUT_MIKE_3[] PROGMEM = TR_ABOUT_MIKE_3; + const pm_char STR_ABOUT_MIKE_4[] PROGMEM = TR_ABOUT_MIKE_4; + + const pm_char STR_ABOUT_ROMOLO_1[] PROGMEM = TR_ABOUT_ROMOLO_1; + const pm_char STR_ABOUT_ROMOLO_2[] PROGMEM = TR_ABOUT_ROMOLO_2; + const pm_char STR_ABOUT_ROMOLO_3[] PROGMEM = TR_ABOUT_ROMOLO_3; + + const pm_char STR_ABOUT_ANDRE_1[] PROGMEM = TR_ABOUT_ANDRE_1; + const pm_char STR_ABOUT_ANDRE_2[] PROGMEM = TR_ABOUT_ANDRE_2; + const pm_char STR_ABOUT_ANDRE_3[] PROGMEM = TR_ABOUT_ANDRE_3; + + const pm_char STR_ABOUT_ROB_1[] PROGMEM = TR_ABOUT_ROB_1; + const pm_char STR_ABOUT_ROB_2[] PROGMEM = TR_ABOUT_ROB_2; + + const pm_char STR_ABOUT_MARTIN_1[] PROGMEM = TR_ABOUT_MARTIN_1; + const pm_char STR_ABOUT_MARTIN_2[] PROGMEM = TR_ABOUT_MARTIN_2; + + const pm_char STR_ABOUT_HARDWARE_1[] PROGMEM = TR_ABOUT_HARDWARE_1; + const pm_char STR_ABOUT_HARDWARE_2[] PROGMEM = TR_ABOUT_HARDWARE_2; + const pm_char STR_ABOUT_HARDWARE_3[] PROGMEM = TR_ABOUT_HARDWARE_3; + + const pm_char STR_ABOUT_PARENTS_1[] PROGMEM = TR_ABOUT_PARENTS_1; + const pm_char STR_ABOUT_PARENTS_2[] PROGMEM = TR_ABOUT_PARENTS_2; + const pm_char STR_ABOUT_PARENTS_3[] PROGMEM = TR_ABOUT_PARENTS_3; + const pm_char STR_ABOUT_PARENTS_4[] PROGMEM = TR_ABOUT_PARENTS_4; +#endif + +const pm_uchar font_5x7[] PROGMEM = { +#include "font_05x07.lbm" +#if defined(TRANSLATIONS_DE) +#include "font_de_05x07.lbm" +#elif defined(TRANSLATIONS_CZ) +#include "font_cz_05x07.lbm" +#elif defined(TRANSLATIONS_ES) +#include "font_es_05x07.lbm" +#elif defined(TRANSLATIONS_FR) +#include "font_fr_05x07.lbm" +#elif defined(TRANSLATIONS_IT) +#include "font_it_05x07.lbm" +#elif defined(TRANSLATIONS_PL) +#include "font_pl_05x07.lbm" +#elif defined(TRANSLATIONS_PT) +#include "font_pt_05x07.lbm" +#elif defined(TRANSLATIONS_SE) +#include "font_se_05x07.lbm" +#endif +}; + +const pm_uchar font_10x14[] PROGMEM = { +#include "font_10x14_compressed.lbm" +#if defined(CPUARM) + #if defined(TRANSLATIONS_DE) + #include "font_de_10x14.lbm" + #elif defined(TRANSLATIONS_CZ) + #include "font_cz_10x14.lbm" + #elif defined(TRANSLATIONS_ES) + #include "font_es_10x14.lbm" + #elif defined(TRANSLATIONS_FR) + #include "font_fr_10x14.lbm" + #elif defined(TRANSLATIONS_IT) + #include "font_it_10x14.lbm" + #elif defined(TRANSLATIONS_PL) + #include "font_pl_10x14.lbm" + #elif defined(TRANSLATIONS_PT) + #include "font_pt_10x14.lbm" + #elif defined(TRANSLATIONS_SE) + #include "font_se_10x14.lbm" + #endif +#endif +}; + +#if defined(CPUARM) +const pm_uchar font_3x5[] PROGMEM = { +#include "font_03x05.lbm" +}; + +const pm_uchar font_4x6[] PROGMEM = { +#include "font_04x06.lbm" +#if defined(TRANSLATIONS_DE) +#include "font_de_04x06.lbm" +#elif defined(TRANSLATIONS_CZ) +#include "font_cz_04x06.lbm" +#elif defined(TRANSLATIONS_ES) +#include "font_es_04x06.lbm" +#elif defined(TRANSLATIONS_FR) +#include "font_fr_04x06.lbm" +#elif defined(TRANSLATIONS_IT) +#include "font_it_04x06.lbm" +#elif defined(TRANSLATIONS_PL) +#include "font_pl_04x06.lbm" +#elif defined(TRANSLATIONS_PT) +#include "font_pt_04x06.lbm" +#elif defined(TRANSLATIONS_SE) +#include "font_se_04x06.lbm" +#endif +}; + +const pm_uchar font_8x10[] PROGMEM = { +#include "font_08x10.lbm" +#if defined(TRANSLATIONS_DE) +#include "font_de_08x10.lbm" +#elif defined(TRANSLATIONS_CZ) +#include "font_cz_08x10.lbm" +#elif defined(TRANSLATIONS_ES) +#include "font_es_08x10.lbm" +#elif defined(TRANSLATIONS_FR) +#include "font_fr_08x10.lbm" +#elif defined(TRANSLATIONS_IT) +#include "font_it_08x10.lbm" +#elif defined(TRANSLATIONS_PL) +#include "font_pl_08x10.lbm" +#elif defined(TRANSLATIONS_PT) +#include "font_pt_08x10.lbm" +#elif defined(TRANSLATIONS_SE) +#include "font_se_08x10.lbm" +#endif +}; + +const pm_uchar font_4x6_extra[] PROGMEM = { +#include "font_04x06_extra.lbm" +}; + +const pm_uchar font_5x7_extra[] PROGMEM = { +#include "font_05x07_extra.lbm" +}; + +const pm_uchar font_10x14_extra[] PROGMEM = { +#include "font_10x14_extra.lbm" +}; + +#endif + diff --git a/radio/src/translations.h b/radio/src/translations.h index 4a3e0600a..b49bb005d 100644 --- a/radio/src/translations.h +++ b/radio/src/translations.h @@ -343,6 +343,8 @@ extern const pm_char STR_BAR[]; extern const pm_char STR_ALARM[]; extern const pm_char STR_USRDATA[]; extern const pm_char STR_BLADES[]; +extern const pm_char STR_SPURGEAR[]; // T.Foley +extern const pm_char STR_PINIONGEAR[]; // T.Foley extern const pm_char STR_SCREEN[]; extern const pm_char STR_SOUND_LABEL[]; extern const pm_char STR_LENGTH[]; diff --git a/radio/src/translations.h~ b/radio/src/translations.h~ new file mode 100644 index 000000000..4a3e0600a --- /dev/null +++ b/radio/src/translations.h~ @@ -0,0 +1,754 @@ +/* + * Authors (alphabetical order) + * - Andre Bernet + * - Andreas Weitl + * - Bertrand Songis + * - Bryan J. Rentoul (Gruvin) + * - Cameron Weeks + * - Erez Raviv + * - Gabriel Birkus + * - Jean-Pierre Parisy + * - Karl Szmutny + * - Michael Blandford + * - Michal Hlavinka + * - Pat Mackenzie + * - Philip Moss + * - Rob Thomson + * - Romolo Manfredini + * - Thomas Husterer + * + * opentx is based on code named + * gruvin9x by Bryan J. Rentoul: http://code.google.com/p/gruvin9x/, + * er9x by Erez Raviv: http://code.google.com/p/er9x/, + * and the original (and ongoing) project by + * Thomas Husterer, th9x: http://code.google.com/p/th9x/ + * + * This program 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. + * + * This program 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. See the + * GNU General Public License for more details. + * + */ + +#ifndef translations_h +#define translations_h + +#if defined(TRANSLATIONS_FR) +#include "translations/fr.h" +#define LEN_SPECIAL_CHARS 3 +#elif defined(TRANSLATIONS_IT) +#include "translations/it.h" +#define LEN_SPECIAL_CHARS 1 +#elif defined(TRANSLATIONS_SE) +#include "translations/se.h" +#define LEN_SPECIAL_CHARS 6 +#elif defined(TRANSLATIONS_DE) +#include "translations/de.h" +#define LEN_SPECIAL_CHARS 6 +#elif defined(TRANSLATIONS_CZ) +#include "translations/cz.h" +#define LEN_SPECIAL_CHARS 0 +#elif defined(TRANSLATIONS_ES) +#include "translations/es.h" +#define LEN_SPECIAL_CHARS 0 +#elif defined(TRANSLATIONS_PL) +#include "translations/pl.h" +#define LEN_SPECIAL_CHARS 0 +#elif defined(TRANSLATIONS_PT) +#include "translations/pt.h" +#define LEN_SPECIAL_CHARS 0 +#else +#include "translations/en.h" +#define LEN_SPECIAL_CHARS 0 +#endif + +#define PSIZE(x) ( sizeof(x) - 1 ) +#define EOFS(x) ( OFS_##x + sizeof(TR_##x) ) + +#if LCD_W >= 212 + #define TR(x,y) y +#else + #define TR(x,y) x +#endif + +// The non-0-terminated-strings + +extern const pm_char STR_OPEN9X[]; + +#define OFS_OFFON 0 +#define OFS_MMMINV (OFS_OFFON + sizeof(TR_OFFON)) +#define OFS_NCHANNELS (OFS_MMMINV + sizeof(TR_MMMINV)) +#if defined(GRAPHICS) +#define OFS_VBEEPMODE (OFS_NCHANNELS + sizeof(TR_NCHANNELS)) +#else +#define OFS_VBEEPLEN (OFS_NCHANNELS + sizeof(TR_NCHANNELS)) +#define OFS_VBEEPMODE (OFS_VBEEPLEN + sizeof(TR_VBEEPLEN)) +#endif +#if defined(ROTARY_ENCODERS) +#define OFS_VRENAVIG (OFS_VBEEPMODE + sizeof(TR_VBEEPMODE)) +#define OFS_VRENCODERS (OFS_VRENAVIG + sizeof(TR_VRENAVIG)) +#define OFS_TRNMODE (OFS_VRENCODERS + sizeof(TR_VRENCODERS)) +#elif defined(ROTARY_ENCODER_NAVIGATION) +#define OFS_VRENCODERS (OFS_VBEEPMODE + sizeof(TR_VBEEPMODE)) +#define OFS_TRNMODE (OFS_VRENCODERS + sizeof(TR_VRENCODERS)) +#else +#define OFS_TRNMODE (OFS_VBEEPMODE + sizeof(TR_VBEEPMODE)) +#endif +#define OFS_TRNCHN (OFS_TRNMODE + sizeof(TR_TRNMODE)) +#define OFS_VTRIMINC (OFS_TRNCHN + sizeof(TR_TRNCHN)) +#define OFS_RETA123 (OFS_VTRIMINC + sizeof(TR_VTRIMINC)) +#define OFS_VPROTOS (OFS_RETA123 + sizeof(TR_RETA123)) +#define OFS_POSNEG (OFS_VPROTOS + sizeof(TR_VPROTOS)) +#define OFS_VBLMODE (OFS_POSNEG + sizeof(TR_POSNEG)) +#define OFS_VCURVEFUNC (OFS_VBLMODE + sizeof(TR_VBLMODE)) +#define OFS_VMLTPX (OFS_VCURVEFUNC + sizeof(TR_VCURVEFUNC)) +#define OFS_VMLTPX2 (OFS_VMLTPX + sizeof(TR_VMLTPX)) +#define OFS_VMIXTRIMS (OFS_VMLTPX2 + sizeof(TR_VMLTPX2)) +#define OFS_VCSWFUNC (OFS_VMIXTRIMS + sizeof(TR_VMIXTRIMS)) +#define OFS_VFSWFUNC (OFS_VCSWFUNC + sizeof(TR_VCSWFUNC)) +#define OFS_VFSWRESET (OFS_VFSWFUNC + sizeof(TR_VFSWFUNC)) +#define OFS_FUNCSOUNDS (OFS_VFSWRESET + sizeof(TR_VFSWRESET)) +#define OFS_VTELEMCHNS (OFS_FUNCSOUNDS + sizeof(TR_FUNCSOUNDS)) +#if defined(FRSKY) || defined(CPUARM) + #if defined(CPUARM) + #define OFS_VTELEMUNIT_IMP (OFS_VTELEMCHNS + sizeof(TR_VTELEMCHNS)) + #define OFS_VTELEMUNIT_NORM (OFS_VTELEMUNIT_IMP + sizeof(TR_VTELEMUNIT_IMP)) + #define OFS_VALARM (OFS_VTELEMUNIT_NORM + sizeof(TR_VTELEMUNIT_NORM)) + #else + #define OFS_VTELEMUNIT (OFS_VTELEMCHNS + sizeof(TR_VTELEMCHNS)) + #define OFS_VALARM (OFS_VTELEMUNIT + sizeof(TR_VTELEMUNIT)) + #endif + #define OFS_VALARMFN (OFS_VALARM + sizeof(TR_VALARM)) + #define OFS_VTELPROTO (OFS_VALARMFN + sizeof(TR_VALARMFN)) + #define OFS_GPSFORMAT (OFS_VTELPROTO + sizeof(TR_VTELPROTO)) + #define OFS_VOLTSRC (OFS_GPSFORMAT + sizeof(TR_GPSFORMAT)) + #define OFS_VARIOSRC (OFS_VOLTSRC + sizeof(TR_VOLTSRC)) + #define OFS_VSCREEN (OFS_VARIOSRC + sizeof(TR_VARIOSRC)) + #define OFS_VTEMPLATES (OFS_VSCREEN + sizeof(TR_VSCREEN)) +#else + #define OFS_VTEMPLATES (OFS_VTELEMCHNS + sizeof(TR_VTELEMCHNS)) +#endif +#if defined(TEMPLATES) + #define OFS_VSWASHTYPE (OFS_VTEMPLATES + sizeof(TR_VTEMPLATES)) +#else + #define OFS_VSWASHTYPE (OFS_VTEMPLATES) +#endif +#if defined(HELI) + #define OFS_VKEYS (OFS_VSWASHTYPE + sizeof(TR_VSWASHTYPE)) +#else + #define OFS_VKEYS (OFS_VSWASHTYPE) +#endif +#define OFS_VSWITCHES (OFS_VKEYS + sizeof(TR_VKEYS)) +#define OFS_VSRCRAW (OFS_VSWITCHES + sizeof(TR_VSWITCHES)) +#define OFS_VTMRMODES (OFS_VSRCRAW + sizeof(TR_VSRCRAW)) +#define OFS_DATETIME (OFS_VTMRMODES + sizeof(TR_VTMRMODES)) +#if defined(CPUM2560) || defined(CPUARM) + #define OFS_VLCD (OFS_DATETIME + sizeof(TR_DATETIME)) +#else + #define OFS_VLCD (OFS_DATETIME) +#endif +#if defined(CPUARM) + #define OFS_VUNITSSYSTEM (OFS_VLCD + sizeof(TR_VLCD)) + #define OFS_VBEEPCOUNTDOWN (OFS_VUNITSSYSTEM + sizeof(TR_VUNITSSYSTEM)) + #define OFS_COUNTRYCODES (OFS_VBEEPCOUNTDOWN + sizeof(TR_VBEEPCOUNTDOWN)) +#else + #define OFS_COUNTRYCODES (OFS_VLCD) +#endif +#if defined(PXX) + #define OFS_VFAILSAFE (OFS_COUNTRYCODES + sizeof(TR_COUNTRYCODES)) +#else + #define OFS_VFAILSAFE (OFS_COUNTRYCODES) +#endif +#if defined(PXX) + #define OFS_VTRAINERMODES (OFS_VFAILSAFE + sizeof(TR_VFAILSAFE)) +#else + #define OFS_VTRAINERMODES (OFS_VFAILSAFE) +#endif +#if defined(PCBTARANIS) + #define OFS_MAVLINK_BAUDS (OFS_VTRAINERMODES + sizeof(TR_VTRAINERMODES)) +#else + #define OFS_MAVLINK_BAUDS (OFS_VTRAINERMODES) +#endif +#if defined(MAVLINK) + #define OFS_MAVLINK_AC_MODES (OFS_MAVLINK_BAUDS + sizeof(TR_MAVLINK_BAUDS)) + #define OFS_MAVLINK_AP_MODES (OFS_MAVLINK_AC_MODES + sizeof(TR_MAVLINK_AC_MODES)) + #define OFS_SPARE (OFS_MAVLINK_AP_MODES + sizeof(TR_MAVLINK_AP_MODES)) +#else + #define OFS_SPARE (OFS_MAVLINK_BAUDS) +#endif + +#define STR_OFFON (STR_OPEN9X + OFS_OFFON) +#define STR_MMMINV (STR_OPEN9X + OFS_MMMINV) +#define STR_NCHANNELS (STR_OPEN9X + OFS_NCHANNELS) +#if !defined(GRAPHICS) +#define STR_VBEEPLEN (STR_OPEN9X + OFS_VBEEPLEN) +#endif +#define STR_VBEEPMODE (STR_OPEN9X + OFS_VBEEPMODE) +#define STR_TRNMODE (STR_OPEN9X + OFS_TRNMODE) +#define STR_TRNCHN (STR_OPEN9X + OFS_TRNCHN) +#define STR_VTRIMINC (STR_OPEN9X + OFS_VTRIMINC) +#define STR_RETA123 (STR_OPEN9X + OFS_RETA123) +#define STR_VPROTOS (STR_OPEN9X + OFS_VPROTOS) +#define STR_POSNEG (STR_OPEN9X + OFS_POSNEG) +#define STR_VBLMODE (STR_OPEN9X + OFS_VBLMODE) +#define STR_VCURVEFUNC (STR_OPEN9X + OFS_VCURVEFUNC) +#define STR_VSIDE STR_VCURVEFUNC +#define LEN_VSIDE LEN_VCURVEFUNC +#define STR_VMLTPX (STR_OPEN9X + OFS_VMLTPX) +#define STR_VMLTPX2 (STR_OPEN9X + OFS_VMLTPX2) +#define STR_VMIXTRIMS (STR_OPEN9X + OFS_VMIXTRIMS) +#define STR_VCSWFUNC (STR_OPEN9X + OFS_VCSWFUNC) +#define STR_VFSWFUNC (STR_OPEN9X + OFS_VFSWFUNC) +#define STR_VFSWRESET (STR_OPEN9X + OFS_VFSWRESET) +#define STR_FUNCSOUNDS (STR_OPEN9X + OFS_FUNCSOUNDS) +#define STR_VTELEMCHNS (STR_OPEN9X + OFS_VTELEMCHNS) + +#if defined(FRSKY) || defined(CPUARM) + #if defined(CPUARM) + #define STR_VTELEMUNIT (STR_OPEN9X + (g_eeGeneral.imperial ? OFS_VTELEMUNIT_IMP : OFS_VTELEMUNIT_NORM)) + #else + #define STR_VTELEMUNIT (STR_OPEN9X + OFS_VTELEMUNIT) + #endif +#define STR_VALARM (STR_OPEN9X + OFS_VALARM) +#define STR_VALARMFN (STR_OPEN9X + OFS_VALARMFN) +#define STR_VTELPROTO (STR_OPEN9X + OFS_VTELPROTO) +#define STR_GPSFORMAT (STR_OPEN9X + OFS_GPSFORMAT) +#define STR_VOLTSRC (STR_OPEN9X + OFS_VOLTSRC) +#define STR_VARIOSRC (STR_OPEN9X + OFS_VARIOSRC) +#define STR_VSCREEN (STR_OPEN9X + OFS_VSCREEN) +#define STR_TELEMCHNS (STR_OPEN9X + OFS_TELEMCHNS) +#endif + +#ifdef TEMPLATES +#define STR_VTEMPLATES (STR_OPEN9X + OFS_VTEMPLATES) +#endif + +#ifdef HELI +#define STR_VSWASHTYPE (STR_OPEN9X + OFS_VSWASHTYPE) +#endif + +#define STR_VKEYS (STR_OPEN9X + OFS_VKEYS) +#define STR_VSWITCHES (STR_OPEN9X + OFS_VSWITCHES) +#define STR_VSRCRAW (STR_OPEN9X + OFS_VSRCRAW) +#define STR_VTMRMODES (STR_OPEN9X + OFS_VTMRMODES) + +#if defined(ROTARY_ENCODERS) + #define STR_VRENAVIG (STR_OPEN9X + OFS_VRENAVIG) +#endif + +#if defined(ROTARY_ENCODER_NAVIGATION) + #define STR_VRENCODERS (STR_OPEN9X + OFS_VRENCODERS) +#endif + +#if defined(CPUM2560) || defined(CPUARM) +#define STR_DATETIME (STR_OPEN9X + OFS_DATETIME) +#endif + +#if defined(CPUARM) + #define STR_VLCD (STR_OPEN9X + OFS_VLCD) + #define STR_VUNITSSYSTEM (STR_OPEN9X + OFS_VUNITSSYSTEM) + #define STR_VBEEPCOUNTDOWN (STR_OPEN9X + OFS_VBEEPCOUNTDOWN) +#endif + +#if defined(PXX) + #define STR_COUNTRYCODES (STR_OPEN9X + OFS_COUNTRYCODES) + #define STR_VFAILSAFE (STR_OPEN9X + OFS_VFAILSAFE) +#endif + +#if defined(PCBTARANIS) + #define STR_VTRAINERMODES (STR_OPEN9X + OFS_VTRAINERMODES) +#endif + +#if defined(MAVLINK) + #define STR_MAVLINK_BAUDS (STR_OPEN9X + OFS_MAVLINK_BAUDS) + #define STR_MAVLINK_AC_MODES (STR_OPEN9X + OFS_MAVLINK_AC_MODES) + #define STR_MAVLINK_AP_MODES (STR_OPEN9X + OFS_MAVLINK_AP_MODES) +#endif + +// The 0-terminated-strings +#define NO_INDENT(x) (x)+LEN_INDENT + +extern const pm_char STR_POPUPS[]; +#define STR_EXIT (STR_POPUPS + OFS_EXIT) +extern const pm_char STR_MENUWHENDONE[]; +extern const pm_char STR_FREE[]; +#define LEN_FREE PSIZE(TR_FREE) +extern const pm_char STR_DELETEMODEL[]; +extern const pm_char STR_COPYINGMODEL[]; +extern const pm_char STR_MOVINGMODEL[]; +extern const pm_char STR_LOADINGMODEL[]; +extern const pm_char STR_NAME[]; +extern const pm_char STR_BITMAP[]; +extern const pm_char STR_TIMER[]; +extern const pm_char STR_ELIMITS[]; +extern const pm_char STR_ETRIMS[]; +extern const pm_char STR_TRIMINC[]; +extern const pm_char STR_TTRACE[]; +extern const pm_char STR_TTRIM[]; +extern const pm_char STR_BEEPCTR[]; +extern const pm_char STR_PROTO[]; +extern const pm_char STR_PPMFRAME[]; +extern const pm_char STR_MS[]; +extern const pm_char STR_SWITCH[]; +extern const pm_char STR_TRIMS[]; +extern const pm_char STR_FADEIN[]; +extern const pm_char STR_FADEOUT[]; +extern const pm_char STR_DEFAULT[]; +extern const pm_char STR_CHECKTRIMS[]; +extern const pm_char STR_SWASHTYPE[]; +extern const pm_char STR_COLLECTIVE[]; +extern const pm_char STR_SWASHRING[]; +extern const pm_char STR_ELEDIRECTION[]; +extern const pm_char STR_AILDIRECTION[]; +extern const pm_char STR_COLDIRECTION[]; +extern const pm_char STR_MODE[]; +#if defined(AUDIO) && defined(BUZZER) +extern const pm_char STR_SPEAKER[]; +extern const pm_char STR_BUZZER[]; +#else +#define STR_SPEAKER STR_MODE +#define STR_BUZZER STR_MODE +#endif +extern const pm_char STR_NOFREEEXPO[]; +extern const pm_char STR_NOFREEMIXER[]; +extern const pm_char STR_INSERTMIX[]; +extern const pm_char STR_EDITMIX[]; +extern const pm_char STR_SOURCE[]; +extern const pm_char STR_WEIGHT[]; +extern const pm_char STR_EXPO[]; +extern const pm_char STR_SIDE[]; +extern const pm_char STR_DIFFERENTIAL[]; +extern const pm_char STR_OFFSET[]; +extern const pm_char STR_TRIM[]; +extern const pm_char STR_DREX[]; +extern const pm_char STR_CURVE[]; +extern const pm_char STR_FLMODE[]; +extern const pm_char STR_MIXWARNING[]; +extern const pm_char STR_OFF[]; +extern const pm_char STR_MULTPX[]; +extern const pm_char STR_DELAYDOWN[]; +extern const pm_char STR_DELAYUP[]; +extern const pm_char STR_SLOWDOWN[]; +extern const pm_char STR_SLOWUP[]; +extern const pm_char STR_MIXER[]; +extern const pm_char STR_CV[]; +extern const pm_char STR_GV[]; +extern const pm_char STR_ACHANNEL[]; +extern const pm_char STR_RANGE[]; +extern const pm_char STR_BAR[]; +extern const pm_char STR_ALARM[]; +extern const pm_char STR_USRDATA[]; +extern const pm_char STR_BLADES[]; +extern const pm_char STR_SCREEN[]; +extern const pm_char STR_SOUND_LABEL[]; +extern const pm_char STR_LENGTH[]; +extern const pm_char STR_SPKRPITCH[]; +extern const pm_char STR_HAPTIC_LABEL[]; +extern const pm_char STR_HAPTICSTRENGTH[]; +extern const pm_char STR_CONTRAST[]; +extern const pm_char STR_ALARMS_LABEL[]; +#if defined(BATTGRAPH) || defined(PCBTARANIS) +extern const pm_char STR_BATTERY_RANGE[]; +#endif +extern const pm_char STR_BATTERYWARNING[]; +extern const pm_char STR_INACTIVITYALARM[]; +extern const pm_char STR_MEMORYWARNING[]; +extern const pm_char STR_ALARMWARNING[]; +extern const pm_char STR_RENAVIG[]; +extern const pm_char STR_THROTTLEREVERSE[]; +extern const pm_char STR_MINUTEBEEP[]; +extern const pm_char STR_BEEPCOUNTDOWN[]; +extern const pm_char STR_PERSISTENT[]; +extern const pm_char STR_BACKLIGHT_LABEL[]; +extern const pm_char STR_BLDELAY[]; +#if defined(PWM_BACKLIGHT) +extern const pm_char STR_BLONBRIGHTNESS[]; +extern const pm_char STR_BLOFFBRIGHTNESS[]; +#endif +extern const pm_char STR_SPLASHSCREEN[]; +extern const pm_char STR_THROTTLEWARNING[]; +extern const pm_char STR_SWITCHWARNING[]; +extern const pm_char STR_TIMEZONE[]; +extern const pm_char STR_GPSCOORD[]; +extern const pm_char STR_VARIO[]; +extern const pm_char STR_RXCHANNELORD[]; +extern const pm_char STR_SLAVE[]; +extern const pm_char STR_MODESRC[]; +extern const pm_char STR_MULTIPLIER[]; +#define LEN_MULTIPLIER PSIZE(TR_MULTIPLIER) +extern const pm_char STR_CAL[]; +extern const pm_char STR_VTRIM[]; +extern const pm_char STR_BG[]; +extern const pm_char STR_MENUTOSTART[]; +extern const pm_char STR_SETMIDPOINT[]; +extern const pm_char STR_MOVESTICKSPOTS[]; +extern const pm_char STR_RXBATT[]; +extern const pm_char STR_TX[]; +#define STR_RX (STR_TX+OFS_RX) +extern const pm_char STR_ACCEL[]; +extern const pm_char STR_NODATA[]; +extern const pm_char STR_TM1TM2[]; +extern const pm_char STR_THRTHP[]; +extern const pm_char STR_TOT[]; +extern const pm_char STR_TMR1LATMAXUS[]; +extern const pm_char STR_TMR1LATMINUS[]; +extern const pm_char STR_TMR1JITTERUS[]; +extern const pm_char STR_TMIXMAXMS[]; +extern const pm_char STR_FREESTACKMINB[]; +extern const pm_char STR_MENUTORESET[]; +extern const pm_char STR_PPM[]; +extern const pm_char STR_CH[]; +extern const pm_char STR_MODEL[]; +extern const pm_char STR_FP[]; +#if defined(CPUARM) +extern const pm_char STR_MIX[]; +#endif +extern const pm_char STR_EEPROMLOWMEM[]; +extern const pm_char STR_ALERT[]; +extern const pm_char STR_PRESSANYKEYTOSKIP[]; +extern const pm_char STR_THROTTLENOTIDLE[]; +extern const pm_char STR_ALARMSDISABLED[]; +extern const pm_char STR_PRESSANYKEY[]; +#define LEN_PRESSANYKEY PSIZE(TR_PRESSANYKEY) +extern const pm_char STR_BADEEPROMDATA[]; +extern const pm_char STR_EEPROMFORMATTING[]; +extern const pm_char STR_EEPROMOVERFLOW[]; +extern const pm_char STR_TRIMS2OFFSETS[]; +extern const pm_char STR_MENURADIOSETUP[]; +extern const pm_char STR_MENUDATEANDTIME[]; +extern const pm_char STR_MENUTRAINER[]; +extern const pm_char STR_MENUVERSION[]; +extern const pm_char STR_MENUDIAG[]; +extern const pm_char STR_MENUANA[]; +extern const pm_char STR_MENUCALIBRATION[]; +extern const pm_char STR_MENUMODELSEL[]; +extern const pm_char STR_MENUSETUP[]; +extern const pm_char STR_MENUFLIGHTPHASE[]; +extern const pm_char STR_MENUFLIGHTPHASES[]; +extern const pm_char STR_MENUHELISETUP[]; +extern const pm_char STR_MENUINPUTS[]; +extern const pm_char STR_MENULIMITS[]; +extern const pm_char STR_MENUCURVES[]; +extern const pm_char STR_MENUCURVE[]; +extern const pm_char STR_MENUCUSTOMSWITCH[]; +extern const pm_char STR_MENUCUSTOMSWITCHES[]; +extern const pm_char STR_MENUCUSTOMFUNC[]; +extern const pm_char STR_MENUCUSTOMSCRIPTS[]; +extern const pm_char STR_MENUCUSTOMSCRIPT[]; +extern const pm_char STR_MENUTELEMETRY[]; +extern const pm_char STR_MENUTEMPLATES[]; +extern const pm_char STR_MENUSTAT[]; +extern const pm_char STR_MENUDEBUG[]; +extern const pm_char STR_MENUGLOBALVARS[]; +extern const pm_char STR_INVERT_THR[]; +extern const pm_char STR_AND_SWITCH[]; +extern const pm_char STR_CF[]; + +#if defined(DSM2) || defined(PXX) +extern const pm_char STR_RXNUM[]; +#endif + +#if defined(PXX) +extern const pm_char STR_SYNCMENU[]; +extern const pm_char STR_INTERNALRF[]; +extern const pm_char STR_EXTERNALRF[]; +extern const pm_char STR_FAILSAFE[]; +extern const pm_char STR_FAILSAFESET[]; +extern const pm_char STR_COUNTRYCODE[]; +#endif + +#if defined(FRSKY) +extern const pm_char STR_LIMIT[]; +#endif + +#ifdef FRSKY_HUB +extern const pm_char STR_MINRSSI[]; +extern const pm_char STR_LATITUDE[]; +extern const pm_char STR_LONGITUDE[]; +#endif + +#if defined(CPUARM) || defined(CPUM2560) +extern const pm_char STR_SHUTDOWN[]; +#endif + +extern const pm_char STR_BATT_CALIB[]; + +#if defined(CPUARM) || defined(FRSKY) +extern const pm_char STR_VOLTAGE[]; +extern const pm_char STR_CURRENT[]; +#endif + +#if defined(CPUARM) + extern const pm_char STR_CURRENT_CALIB[]; + #define LEN_CALIB_FIELDS (PSIZE(TR_BATT_CALIB) > PSIZE(TR_CURRENT_CALIB) ? PSIZE(TR_BATT_CALIB) : PSIZE(TR_CURRENT_CALIB)) + extern const pm_char STR_UNITSSYSTEM[]; + extern const pm_char STR_VOICELANG[]; + extern const pm_char STR_MODELIDUSED[]; + extern const pm_char STR_BEEP_VOLUME[]; + extern const pm_char STR_WAV_VOLUME[]; + extern const pm_char STR_VARIO_VOLUME[]; + extern const pm_char STR_BG_VOLUME[]; + extern const pm_char STR_PERSISTENT_MAH[]; +#else + #define LEN_CALIB_FIELDS PSIZE(TR_BATT_CALIB) +#endif + +#if defined(NAVIGATION_MENUS) + extern const pm_char STR_SELECT_MODEL[]; + extern const pm_char STR_CREATE_MODEL[]; + extern const pm_char STR_COPY_MODEL[]; + extern const pm_char STR_MOVE_MODEL[]; + extern const pm_char STR_DELETE_MODEL[]; + extern const pm_char STR_EDIT[]; + extern const pm_char STR_INSERT_BEFORE[]; + extern const pm_char STR_INSERT_AFTER[]; + extern const pm_char STR_COPY[]; + extern const pm_char STR_MOVE[]; + extern const pm_char STR_PASTE[]; + extern const pm_char STR_INSERT[]; + extern const pm_char STR_DELETE[]; + extern const pm_char STR_RESET_FLIGHT[]; + extern const pm_char STR_RESET_TIMER1[]; + extern const pm_char STR_RESET_TIMER2[]; + extern const pm_char STR_RESET_TELEMETRY[]; + extern const pm_char STR_STATISTICS[]; + extern const pm_char STR_ABOUT_US[]; +#endif + +extern const pm_char STR_RESET_BTN[]; + +#if defined(SDCARD) + extern const pm_char STR_BACKUP_MODEL[]; + extern const pm_char STR_RESTORE_MODEL[]; + extern const pm_char STR_SDCARD_ERROR[]; + extern const pm_char STR_NO_SDCARD[]; + extern const pm_char STR_INCOMPATIBLE[]; + extern const pm_char STR_LOGS_PATH[]; + extern const pm_char STR_LOGS_EXT[]; + extern const pm_char STR_MODELS_PATH[]; + extern const pm_char STR_MODELS_EXT[]; + #define STR_UPDATE_LIST STR_DELAYDOWN +#endif + +extern const pm_uchar font_5x7[]; +extern const pm_uchar font_10x14[]; + +#if defined(CPUARM) +extern const pm_uchar font_3x5[]; +extern const pm_uchar font_4x6[]; +extern const pm_uchar font_8x10[]; +extern const pm_uchar font_5x7_extra[]; +extern const pm_uchar font_10x14_extra[]; +extern const pm_uchar font_4x6_extra[]; +#endif + +extern const pm_char STR_WARNING[]; +extern const pm_char STR_EEPROMWARN[]; +extern const pm_char STR_THROTTLEWARN[]; +extern const pm_char STR_ALARMSWARN[]; +extern const pm_char STR_SWITCHWARN[]; + +extern const pm_char STR_SPEAKER_VOLUME[]; +extern const pm_char STR_LCD[]; +extern const pm_char STR_BRIGHTNESS[]; +extern const pm_char STR_CPU_TEMP[]; +extern const pm_char STR_CPU_CURRENT[]; +extern const pm_char STR_CPU_MAH[]; +extern const pm_char STR_COPROC[]; +extern const pm_char STR_COPROC_TEMP[]; +extern const pm_char STR_CAPAWARNING[]; +extern const pm_char STR_TEMPWARNING[]; +extern const pm_char STR_FUNC[]; +extern const pm_char STR_V1[]; +extern const pm_char STR_V2[]; +extern const pm_char STR_DURATION[]; +extern const pm_char STR_DELAY[]; +extern const pm_char STR_SD_CARD[]; +extern const pm_char STR_SDHC_CARD[]; +extern const pm_char STR_NO_SOUNDS_ON_SD[]; +extern const pm_char STR_NO_MODELS_ON_SD[]; +extern const pm_char STR_NO_BITMAPS_ON_SD[]; +extern const pm_char STR_NO_SCRIPTS_ON_SD[]; +extern const pm_char STR_PLAY_FILE[]; +extern const pm_char STR_ASSIGN_BITMAP[]; +extern const pm_char STR_EXECUTE_FILE[]; +extern const pm_char STR_DELETE_FILE[]; +extern const pm_char STR_COPY_FILE[]; +extern const pm_char STR_RENAME_FILE[]; +extern const pm_char STR_REMOVED[]; +extern const pm_char STR_SD_INFO[]; +extern const pm_char STR_SD_FORMAT[]; +extern const pm_char STR_NA[]; +extern const pm_char STR_HARDWARE[]; +extern const pm_char STR_FORMATTING[]; +extern const pm_char STR_TEMP_CALIB[]; +extern const pm_char STR_TIME[]; +extern const pm_char STR_BAUDRATE[]; +extern const pm_char STR_SD_INFO_TITLE[]; +extern const pm_char STR_SD_TYPE[]; +extern const pm_char STR_SD_SPEED[]; +extern const pm_char STR_SD_SECTORS[]; +extern const pm_char STR_SD_SIZE[]; +extern const pm_char STR_TYPE[]; +extern const pm_char STR_GLOBAL_VARS[]; +extern const pm_char STR_GLOBAL_VAR[]; +extern const pm_char STR_OWN[]; +extern const pm_char STR_ROTARY_ENCODER[]; +extern const pm_char STR_DATE[]; +extern const pm_char STR_CHANNELS_MONITOR[]; +extern const pm_char STR_PATH_TOO_LONG[]; +extern const pm_char STR_VIEW_TEXT[]; + +#if defined(VOICE) && defined(CPUARM) + struct LanguagePack { + const char *id; + const char *name; + void (*playNumber)(getvalue_t number, uint8_t unit, uint8_t att, uint8_t id); + void (*playDuration)(int16_t seconds, uint8_t id); + }; + extern LanguagePack * languagePacks[]; + extern LanguagePack * currentLanguagePack; + extern uint8_t currentLanguagePackIdx; + #define LANGUAGE_PACK_DECLARE(lng, name) LanguagePack lng ## LanguagePack = { #lng, name, lng ## _ ## playNumber, lng ## _ ## playDuration } + #define LANGUAGE_PACK_DECLARE_DEFAULT(lng, name) LANGUAGE_PACK_DECLARE(lng, name); LanguagePack * currentLanguagePack = & lng ## LanguagePack; uint8_t currentLanguagePackIdx + inline PLAY_FUNCTION(playNumber, getvalue_t number, uint8_t unit, uint8_t att) { currentLanguagePack->playNumber(number, unit, att, id); } + inline PLAY_FUNCTION(playDuration, int16_t seconds) { currentLanguagePack->playDuration(seconds, id); } +#elif defined(VOICE) + PLAY_FUNCTION(playNumber, getvalue_t number, uint8_t unit, uint8_t att); + PLAY_FUNCTION(playDuration, int16_t seconds); + #define LANGUAGE_PACK_DECLARE(lng, name) + #define LANGUAGE_PACK_DECLARE_DEFAULT(lng, name) +#else + #define LANGUAGE_PACK_DECLARE(lng, name) + #define LANGUAGE_PACK_DECLARE_DEFAULT(lng, name) +#endif + +#if LCD_W >= 212 + extern const pm_char STR_MODELNAME[]; + extern const pm_char STR_PHASENAME[]; + extern const pm_char STR_MIXNAME[]; + extern const pm_char STR_EXPONAME[]; +#else + #define STR_MODELNAME STR_NAME + #define STR_PHASENAME STR_NAME + #define STR_MIXNAME STR_NAME + #define STR_EXPONAME STR_NAME +#endif + +#if LCD_W >= 212 + extern const char * STR_PHASES_HEADERS[]; + extern const char * STR_LIMITS_HEADERS[]; + extern const char * STR_CSW_HEADERS[]; +#endif + +#if defined(PCBTARANIS) + extern const pm_char STR_BYTES[]; + extern const pm_char STR_MODULE_BIND[]; + extern const pm_char STR_SET[]; + extern const pm_char STR_TRAINER[]; + extern const pm_char STR_ANTENNAPROBLEM[]; + extern const pm_char STR_MODULE[]; + extern const pm_char STR_CHANNELRANGE[]; + extern const pm_char STR_LOWALARM[]; + extern const pm_char STR_CRITICALALARM[]; + extern const pm_char STR_ENABLE_POPUP[]; + extern const pm_char STR_DISABLE_POPUP[]; + extern const pm_char STR_CURVE_PRESET[]; + extern const pm_char STR_PRESET[]; + extern const pm_char STR_MIRROR[]; + extern const pm_char STR_CLEAR[]; + extern const pm_char STR_RESET[]; + extern const pm_char STR_COPY_TRIMS_TO_OFFSET[]; + extern const pm_char STR_TOP_BAR[]; + extern const pm_char STR_ALTITUDE[]; + extern const pm_char STR_SCALE[]; + extern const pm_char STR_VIEW_CHANNELS[]; + extern const pm_char STR_VIEW_NOTES[]; +#endif + +#if MENUS_LOCK == 1 + extern const pm_char STR_UNLOCKED[]; + extern const pm_char STR_MODS_FORBIDDEN[]; +#endif + +#if defined(PCBTARANIS) || defined(DSM2) + extern const pm_char STR_MODULE_RANGE[]; +#endif + +#if defined(MAVLINK) + extern const pm_char STR_MAVLINK_RC_RSSI_SCALE_LABEL[]; + extern const pm_char STR_MAVLINK_PC_RSSI_EN_LABEL[]; + extern const pm_char STR_MAVMENUSETUP_TITLE[]; + extern const pm_char STR_MAVLINK_BAUD_LABEL[]; + extern const pm_char STR_MAVLINK_INFOS[]; + extern const pm_char STR_MAVLINK_MODE[]; + extern const pm_char STR_MAVLINK_CUR_MODE[]; + extern const pm_char STR_MAVLINK_ARMED[]; + extern const pm_char STR_MAVLINK_BAT_MENU_TITLE[]; + extern const pm_char STR_MAVLINK_BATTERY_LABEL[]; + extern const pm_char STR_MAVLINK_RC_RSSI_LABEL[]; + extern const pm_char STR_MAVLINK_PC_RSSI_LABEL[]; + extern const pm_char STR_MAVLINK_NAV_MENU_TITLE[]; + extern const pm_char STR_MAVLINK_COURSE[]; + extern const pm_char STR_MAVLINK_HEADING[]; + extern const pm_char STR_MAVLINK_BEARING[]; + extern const pm_char STR_MAVLINK_ALTITUDE[]; + extern const pm_char STR_MAVLINK_GPS[]; + extern const pm_char STR_MAVLINK_NO_FIX[]; + extern const pm_char STR_MAVLINK_SAT[]; + extern const pm_char STR_MAVLINK_HDOP[]; + extern const pm_char STR_MAVLINK_LAT[]; + extern const pm_char STR_MAVLINK_LON[]; +#endif + +#if !defined(CPUM64) + extern const pm_char STR_ABOUTUS[]; + extern const pm_char STR_ABOUT_OPENTX_1[]; + extern const pm_char STR_ABOUT_OPENTX_2[]; + extern const pm_char STR_ABOUT_OPENTX_3[]; + extern const pm_char STR_ABOUT_OPENTX_4[]; + extern const pm_char STR_ABOUT_OPENTX_5[]; + + extern const pm_char STR_ABOUT_BERTRAND_1[]; + extern const pm_char STR_ABOUT_BERTRAND_2[]; + extern const pm_char STR_ABOUT_BERTRAND_3[]; + + extern const pm_char STR_ABOUT_MIKE_1[]; + extern const pm_char STR_ABOUT_MIKE_2[]; + extern const pm_char STR_ABOUT_MIKE_3[]; + extern const pm_char STR_ABOUT_MIKE_4[]; + + extern const pm_char STR_ABOUT_ROMOLO_1[]; + extern const pm_char STR_ABOUT_ROMOLO_2[]; + extern const pm_char STR_ABOUT_ROMOLO_3[]; + + extern const pm_char STR_ABOUT_ANDRE_1[]; + extern const pm_char STR_ABOUT_ANDRE_2[]; + extern const pm_char STR_ABOUT_ANDRE_3[]; + + extern const pm_char STR_ABOUT_ROB_1[]; + extern const pm_char STR_ABOUT_ROB_2[]; + + extern const pm_char STR_ABOUT_MARTIN_1[]; + extern const pm_char STR_ABOUT_MARTIN_2[]; + + extern const pm_char STR_ABOUT_HARDWARE_1[]; + extern const pm_char STR_ABOUT_HARDWARE_2[]; + extern const pm_char STR_ABOUT_HARDWARE_3[]; + + extern const pm_char STR_ABOUT_PARENTS_1[]; + extern const pm_char STR_ABOUT_PARENTS_2[]; + extern const pm_char STR_ABOUT_PARENTS_3[]; + extern const pm_char STR_ABOUT_PARENTS_4[]; +#endif + +#define CHR_SHORT TR_CHR_SHORT +#define CHR_LONG TR_CHR_LONG +#define CHR_TOGGLE TR_CHR_TOGGLE +#define CHR_HOUR TR_CHR_HOUR + +#endif diff --git a/radio/src/translations/en.h b/radio/src/translations/en.h index 62876daf9..86c4f48cf 100644 --- a/radio/src/translations/en.h +++ b/radio/src/translations/en.h @@ -447,6 +447,8 @@ #define TR_ALARM INDENT"Alarm" #define TR_USRDATA "UsrData" #define TR_BLADES INDENT"Blades" +#define TR_SPURGEAR INDENT"Spur Gear" // T.Foley +#define TR_PINIONGEAR INDENT"Pinion Gear" // T.Foley #define TR_SCREEN "Screen " #define TR_SOUND_LABEL "Sound" #define TR_LENGTH INDENT"Length" diff --git a/radio/src/translations/en.h~ b/radio/src/translations/en.h~ new file mode 100644 index 000000000..62876daf9 --- /dev/null +++ b/radio/src/translations/en.h~ @@ -0,0 +1,765 @@ +/* + * Authors (alphabetical order) + * - Andre Bernet + * - Andreas Weitl + * - Bertrand Songis + * - Bryan J. Rentoul (Gruvin) + * - Cameron Weeks + * - Erez Raviv + * - Gabriel Birkus + * - Jean-Pierre Parisy + * - Karl Szmutny + * - Michael Blandford + * - Michal Hlavinka + * - Pat Mackenzie + * - Philip Moss + * - Rob Thomson + * - Romolo Manfredini + * - Thomas Husterer + * + * opentx is based on code named + * gruvin9x by Bryan J. Rentoul: http://code.google.com/p/gruvin9x/, + * er9x by Erez Raviv: http://code.google.com/p/er9x/, + * and the original (and ongoing) project by + * Thomas Husterer, th9x: http://code.google.com/p/th9x/ + * + * This program 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. + * + * This program 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. See the + * GNU General Public License for more details. + * + */ + +// NON ZERO TERMINATED STRINGS +#define LEN_OFFON "\003" +#define TR_OFFON "OFF""ON\0" + +#define LEN_MMMINV "\003" +#define TR_MMMINV "---""INV" + +#define LEN_NCHANNELS "\004" +#define TR_NCHANNELS "\0014CH\0016CH\0018CH10CH12CH14CH16CH" + +#define LEN_VBEEPMODE "\005" +#define TR_VBEEPMODE "Quiet""Alarm""NoKey""All " + +#define LEN_VBEEPLEN "\005" +#define TR_VBEEPLEN "0====""=0===""==0==""===0=""====0" + +#define LEN_VRENAVIG "\003" +#define TR_VRENAVIG "No REaREb" + +#define LEN_VBLMODE TR("\004", "\010") +#define TR_VBLMODE TR("OFF\0""Keys""Ctrl""Both""ON\0 ", "OFF\0 ""Keys\0 ""Controls""Both\0 ""ON\0 ") + +#define LEN_TRNMODE "\003" +#define TR_TRNMODE "OFF"" +="" :=" + +#define LEN_TRNCHN "\003" +#define TR_TRNCHN "CH1CH2CH3CH4" + +#define LEN_DATETIME "\005" +#define TR_DATETIME "DATE:""TIME:" + +#define LEN_VLCD "\006" +#define TR_VLCD "NormalOptrex" + +#define LEN_COUNTRYCODES TR("\002", "\007") +#define TR_COUNTRYCODES TR("US""JP""EU", "America""Japan\0 ""Europe\0") + +#define LEN_VTRIMINC TR("\006","\013") +#define TR_VTRIMINC TR("Expo ""ExFine""Fine ""Medium""Coarse","Exponential""Extra Fine ""Fine ""Medium ""Coarse ") + +#define LEN_VBEEPCOUNTDOWN "\006" +#define TR_VBEEPCOUNTDOWN "SilentBeeps\0Voice\0" + +#define LEN_RETA123 "\001" + +#if defined(PCBGRUVIN9X) + #if ROTARY_ENCODERS > 2 + #define TR_RETA123 "RETA123abcd" + #else + #define TR_RETA123 "RETA123ab" + #endif +#elif defined(PCBTARANIS) + #define TR_RETA123 "RETA12LR" +#else + #define TR_RETA123 "RETA123" +#endif + +#define LEN_VPROTOS "\006" + +#if defined(PXX) + #define TR_PXX "PXX\0 " +#elif defined(DSM2) || defined(IRPROTOS) + #define TR_PXX "[PXX]\0" +#else + #define TR_PXX +#endif + +#if defined(DSM2) + #define TR_DSM2 "LP45\0 ""DSM2\0 ""DSMX\0 " +#elif defined(IRPROTOS) + #define TR_DSM2 "[LP45]""[DSM2]""[DSMX]" +#else + #define TR_DSM2 +#endif + +#if defined(IRPROTOS) + #define TR_IRPROTOS "SILV TRAC09PICZ SWIFT\0" +#else + #define TR_IRPROTOS +#endif + +#if defined(CPUARM) + #define TR_XPPM +#else + #define TR_XPPM "PPM16\0""PPMsim" +#endif + +#define TR_VPROTOS "PPM\0 " TR_XPPM TR_PXX TR_DSM2 TR_IRPROTOS + +#define LEN_POSNEG "\003" +#define TR_POSNEG "POS""NEG" + +#define LEN_VCURVEFUNC "\003" +#define TR_VCURVEFUNC "---""x>0""x<0""|x|""f>0""f<0""|f|" + +#define LEN_VMLTPX "\010" +#define TR_VMLTPX "Add\0 ""Multiply""Replace\0" + +#define LEN_VMLTPX2 "\002" +#define TR_VMLTPX2 "+=""*="":=" + +#define LEN_VMIXTRIMS "\003" +#define TR_VMIXTRIMS "OFF""ON\0""Rud""Ele""Thr""Ail" + +#define LEN_VCSWFUNC "\005" +#define TR_VCSWFUNC "---\0 ""a{x\0 ""a>x\0 ""ax""|a|b\0 ""a" + +#define LEN_VTELPROTO "\007" +#define TR_VTELPROTO "None\0 ""Hub\0 ""WSHHigh" + +#define LEN_VOLTSRC "\003" +#define TR_VOLTSRC "---""A1\0""A2\0""FAS""Cel" + +#define LEN_VARIOSRC "\005" +#if defined(FRSKY_SPORT) + #define TR_VARIOSRC "Vario""A1\0 ""A2\0" +#else + #define TR_VARIOSRC "Alti\0""Alti+""Vario""A1\0 ""A2\0" +#endif + +#define LEN_VSCREEN "\004" +#define TR_VSCREEN "Nums""Bars" + +#define LEN_GPSFORMAT "\004" +#define TR_GPSFORMAT "HMS NMEA" + +#define LEN2_VTEMPLATES 13 +#define LEN_VTEMPLATES "\015" +#define TR_VTEMPLATES "Clear Mixes\0\0""Simple 4-CH \0""Sticky-T-Cut\0""V-Tail \0""Elevon\\Delta\0""eCCPM \0""Heli Setup \0""Servo Test \0" + +#define LEN_VSWASHTYPE "\004" +#define TR_VSWASHTYPE "---\0""120\0""120X""140\0""90\0" + +#define LEN_VKEYS "\005" +#define TR_VKEYS TR(" Menu"" Exit"" Down"" Up""Right"" Left", " Menu"" Exit""Enter"" Page"" Plus""Minus") + +#define LEN_VRENCODERS "\003" +#define TR_VRENCODERS "REa""REb" + +#define LEN_VSWITCHES "\003" +#define LEN_VSRCRAW "\004" + +#if defined(PCBTARANIS) + #define TR_POTS_VSRCRAW "S1\0 ""S2\0 ""LS\0 ""RS\0 " + #define TR_SW_VSRCRAW "SA\0 ""SB\0 ""SC\0 ""SD\0 ""SE\0 ""SF\0 ""SG\0 ""SH\0 " +#elif defined(EXTRA_3POS) + #define TR_POTS_VSRCRAW "P1\0 ""P2\0 " + #define TR_SW_VSRCRAW "3P1\0""3P2\0" + #define TR_9X_3POS_SWITCHES "ID0""ID1""ID2""ID3""ID4""ID5" +#else + #define TR_POTS_VSRCRAW "P1\0 ""P2\0 ""P3\0 " + #define TR_SW_VSRCRAW "3POS" + #define TR_9X_3POS_SWITCHES "ID0""ID1""ID2" +#endif + +#if defined(CPUARM) + #define TR_CUSTOMSW "CS1""CS2""CS3""CS4""CS5""CS6""CS7""CS8""CS9""CSA""CSB""CSC""CSD""CSE""CSF""CSG""CSH""CSI""CSJ""CSK""CSL""CSM""CSN""CSO""CSP""CSQ""CSR""CSS""CST""CSU""CSV""CSW" +#elif defined(PCBGRUVIN9X) || defined(CPUM2561) || defined(CPUM128) + #define TR_CUSTOMSW "CS1""CS2""CS3""CS4""CS5""CS6""CS7""CS8""CS9""CSA""CSB""CSC""CSD""CSE""CSF" +#else + #define TR_CUSTOMSW "CS1""CS2""CS3""CS4""CS5""CS6""CS7""CS8""CS9""CSA""CSB""CSC" +#endif + +#if defined(PCBTARANIS) + #define TR_VSWITCHES "SA\300""SA-""SA\301""SB\300""SB-""SB\301""SC\300""SC-""SC\301""SD\300""SD-""SD\301""SE\300""SE-""SE\301""SF\300""SF\301""SG\300""SG-""SG\301""SH\300""SH\301" TR_CUSTOMSW "One" +#else + #define TR_VSWITCHES TR_9X_3POS_SWITCHES "THR""RUD""ELE""AIL""GEA""TRN" TR_CUSTOMSW "One" +#endif + +#if defined(PCBSKY9X) + #define TR_ROTARY_ENCODERS_VSRCRAW "REnc" +#elif defined(PCBGRUVIN9X) && ROTARY_ENCODERS > 2 + #define TR_ROTARY_ENCODERS_VSRCRAW "REa ""REb ""REc ""REd " +#elif defined(PCBGRUVIN9X) && ROTARY_ENCODERS <= 2 + #define TR_ROTARY_ENCODERS_VSRCRAW "REa ""REb " +#else + #define TR_ROTARY_ENCODERS_VSRCRAW +#endif + +#if defined(HELI) + #define TR_CYC_VSRCRAW "CYC1""CYC2""CYC3" +#else + #define TR_CYC_VSRCRAW "[C1]""[C2]""[C3]" +#endif + +#define TR_VSRCRAW "---\0""Rud\0""Ele\0""Thr\0""Ail\0" TR_POTS_VSRCRAW TR_ROTARY_ENCODERS_VSRCRAW "MAX\0" TR_CYC_VSRCRAW "TrmR" "TrmE" "TrmT" "TrmA" TR_SW_VSRCRAW + +#define LEN_VTMRMODES "\003" +#define TR_VTMRMODES "OFF""ABS""THs""TH%""THt" + +#define LEN_VTRAINERMODES "\006" +#define TR_VTRAINERMODES "Master""Slave\0" + +#define LEN_VFAILSAFE "\011" +#define TR_VFAILSAFE "Hold\0 ""Custom\0 ""No pulses" + +#if defined(MAVLINK) + #define LEN_MAVLINK_BAUDS "\006" + #define TR_MAVLINK_BAUDS "4800 ""9600 ""14400 ""19200 ""38400 ""57600 ""76800 ""115200" + #define LEN_MAVLINK_AC_MODES "\011" + #define TR_MAVLINK_AC_MODES "Stabilize""Acro ""Alt Hold ""Auto ""Guided ""Loiter ""RTL ""Circle ""Pos Hold ""Land ""OF Loiter""Toy A ""Toy M ""INVALID " + #define LEN_MAVLINK_AP_MODES "\015" + #define TR_MAVLINK_AP_MODES "Manual ""Circle ""Stabilize ""Training ""Fly by Wire A""Fly by Wire A""Auto ""RTL ""Loiter ""Guided ""Initialising ""INVALID " +#endif + +// ZERO TERMINATED STRINGS +#define INDENT "\001" +#define LEN_INDENT 1 +#define INDENT_WIDTH (FW/2) + +#if defined(PCBTARANIS) + #define TR_ENTER "[ENTER]" +#else + #define TR_ENTER "[MENU]" +#endif + +#define TR_POPUPS TR_ENTER "\010[EXIT]" +#define OFS_EXIT sizeof(TR_ENTER) + +#define TR_MENUWHENDONE CENTER "\006" TR_ENTER " WHEN DONE" +#define TR_FREE "free" +#define TR_DELETEMODEL "DELETE MODEL" +#define TR_COPYINGMODEL "Copying model..." +#define TR_MOVINGMODEL "Moving model..." +#define TR_LOADINGMODEL "Loading model..." +#define TR_NAME "Name" +#define TR_MODELNAME "Model Name" +#define TR_PHASENAME "Mode Name" +#define TR_MIXNAME "Mix Name" +#if defined(PCBTARANIS) + #define TR_EXPONAME "Line Name" +#else + #define TR_EXPONAME "Expo Name" +#endif +#define TR_BITMAP "Model Image" +#define TR_TIMER TR("Timer","Timer ") +#define TR_ELIMITS TR("E.Limits","Extended Limits") +#define TR_ETRIMS TR("E.Trims","Extended Trims") +#define TR_TRIMINC "Trim Step" +#define TR_TTRACE TR("T-Source","Throttle Source") +#define TR_TTRIM TR("T-Trim","Throttle Trim") +#define TR_BEEPCTR TR("Ctr Beep","Center Beep") +#define TR_PROTO TR(INDENT "Proto", INDENT "Protocol") +#define TR_PPMFRAME TR("PPM frame", INDENT "PPM frame") +#define TR_MS "ms" +#define TR_SWITCH "Switch" +#define TR_TRIMS "Trims" +#define TR_FADEIN "Fade In" +#define TR_FADEOUT "Fade Out" +#define TR_DEFAULT "(default)" +#define TR_CHECKTRIMS CENTER "\006Check\012Trims" +#define OFS_CHECKTRIMS CENTER_OFS+(9*FW) +#define TR_SWASHTYPE "Swash Type" +#define TR_COLLECTIVE TR("Collective","Collective source") +#define TR_SWASHRING "Swash Ring" +#define TR_ELEDIRECTION TR("ELE Direction","Long. cyc. direction") +#define TR_AILDIRECTION TR("AIL Direction","Lateral cyc. direction") +#define TR_COLDIRECTION TR("PIT Direction","Coll. pitch direction") +#define TR_MODE INDENT"Mode" +#define TR_NOFREEEXPO "No free expo!" +#define TR_NOFREEMIXER "No free mixer!" +#define TR_INSERTMIX "INSERT MIX " +#define TR_EDITMIX "EDIT MIX " +#define TR_SOURCE INDENT"Source" +#define TR_WEIGHT "Weight" +#define TR_EXPO TR("Expo","Exponential") +#define TR_SIDE "Side" +#define TR_DIFFERENTIAL "Differ" +#define TR_OFFSET INDENT"Offset" +#define TR_TRIM "Trim" +#define TR_DREX "DRex" +#define TR_CURVE "Curve" +#define TR_FLMODE TR("Mode","Modes") +#define TR_MIXWARNING "Warning" +#define TR_OFF "OFF" +#define TR_MULTPX "Multpx" +#define TR_DELAYDOWN "Delay Dn" +#define TR_DELAYUP "Delay Up" +#define TR_SLOWDOWN "Slow Dn" +#define TR_SLOWUP "Slow Up" +#define TR_MIXER "MIXER" +#define TR_CV "CV" +#define TR_GV "GV" +#define TR_ACHANNEL "A\004channel" +#define TR_RANGE INDENT"Range" +#define TR_BAR "Bar" +#define TR_ALARM INDENT"Alarm" +#define TR_USRDATA "UsrData" +#define TR_BLADES INDENT"Blades" +#define TR_SCREEN "Screen " +#define TR_SOUND_LABEL "Sound" +#define TR_LENGTH INDENT"Length" +#define TR_SPKRPITCH INDENT"Pitch" +#define TR_HAPTIC_LABEL "Haptic" +#define TR_HAPTICSTRENGTH INDENT"Strength" +#define TR_CONTRAST "Contrast" +#define TR_ALARMS_LABEL "Alarms" +#define TR_BATTERY_RANGE TR("Battery range","Battery meter range") +#define TR_BATTERYWARNING INDENT"Battery Low" +#define TR_INACTIVITYALARM INDENT"Inactivity" +#define TR_MEMORYWARNING INDENT"Memory Low" +#define TR_ALARMWARNING INDENT"Sound Off" +#define TR_RENAVIG "RotEnc Navig" +#define TR_THROTTLEREVERSE TR("T-Reverse", "Throttle reverse") +#define TR_MINUTEBEEP TR(INDENT"Minute",INDENT"Minute call") +#define TR_BEEPCOUNTDOWN INDENT"Countdown" +#define TR_PERSISTENT TR(INDENT"Persist.",INDENT"Persistent") +#define TR_BACKLIGHT_LABEL "Backlight" +#define TR_BLDELAY INDENT"Duration" +#define TR_BLONBRIGHTNESS INDENT"ON Brightness" +#define TR_BLOFFBRIGHTNESS INDENT"OFF Brightness" +#define TR_SPLASHSCREEN "Splash screen" +#define TR_THROTTLEWARNING TR("T-Warning","Throttle Warning") +#define TR_SWITCHWARNING TR("S-Warning","Switch Warning") +#define TR_TIMEZONE TR("Time Zone","GPS Time zone") +#define TR_RXCHANNELORD TR("Rx Channel Ord","Default channel order") +#define TR_SLAVE "Slave" +#define TR_MODESRC "Mode\006% Source" +#define TR_MULTIPLIER "Multiplier" +#define TR_CAL "Cal" +#define TR_VTRIM "Trim- +" +#define TR_BG "BG:" +#define TR_MENUTOSTART CENTER "\006" TR_ENTER " TO START" +#define TR_SETMIDPOINT TR(CENTER "\003SET STICKS MIDPOINT",CENTER "\003CENTER STICKS/SLIDERS") +#define TR_MOVESTICKSPOTS CENTER "\006MOVE STICKS/POTS" +#define TR_RXBATT "Rx Batt:" +#define TR_TXnRX "Tx:\0Rx:" +#define OFS_RX 4 +#define TR_ACCEL "Acc:" +#define TR_NODATA CENTER "NO DATA" +#define TR_TM1TM2 "TM1\032TM2" +#define TR_THRTHP "THR\032TH%" +#define TR_TOT "TOT" +#define TR_TMR1LATMAXUS "Tmr1Lat max\006us" +#define STR_US (STR_TMR1LATMAXUS+12) +#define TR_TMR1LATMINUS "Tmr1Lat min\006us" +#define TR_TMR1JITTERUS "Tmr1 Jitter\006us" + +#if defined(CPUARM) + #define TR_TMIXMAXMS "Tmix max" + #define TR_FREESTACKMINB "Free Stack" +#else + #define TR_TMIXMAXMS "Tmix max\014ms" + #define TR_FREESTACKMINB "Free Stack\010b" +#endif + +#define TR_MENUTORESET CENTER TR_ENTER " to reset" +#define TR_PPM "PPM" +#define TR_CH "CH" +#define TR_MODEL "MODEL" +#define TR_FP "FM" +#define TR_MIX "MIX" +#define TR_EEPROMLOWMEM "EEPROM low mem" +#define TR_ALERT "\016ALERT" +#define TR_PRESSANYKEYTOSKIP "Press any key to skip" +#define TR_THROTTLENOTIDLE "Throttle not idle" +#define TR_ALARMSDISABLED "Alarms Disabled" +#define TR_PRESSANYKEY TR("\010Press any Key", "Press any Key") +#define TR_BADEEPROMDATA "Bad EEprom Data" +#define TR_EEPROMFORMATTING "Formatting EEPROM" +#define TR_EEPROMOVERFLOW "EEPROM overflow" +#define TR_MENURADIOSETUP "RADIO SETUP" +#define TR_MENUDATEANDTIME "DATE AND TIME" +#define TR_MENUTRAINER "TRAINER" +#define TR_MENUVERSION "VERSION" +#define TR_MENUDIAG TR("SWITCHES","SWITCH TEST") +#define TR_MENUANA TR("ANAS","ANALOG INPUTS") +#define TR_MENUCALIBRATION "CALIBRATION" +#define TR_TRIMS2OFFSETS "\006Trims => Offsets" +#define TR_MENUMODELSEL TR("MODELSEL","MODEL SELECTION") +#define TR_MENUSETUP TR("SETUP","MODEL SETUP") +#define TR_MENUFLIGHTPHASE "FLIGHT MODE" +#define TR_MENUFLIGHTPHASES "FLIGHT MODES" +#define TR_MENUHELISETUP "HELI SETUP" + +#if defined(PCBTARANIS) + #define TR_MENUINPUTS "INPUTS" + #define TR_MENULIMITS "SERVOS" +#elif defined(PPM_CENTER_ADJUSTABLE) || defined(PPM_LIMITS_SYMETRICAL) // The right menu titles for the gurus ... + #define TR_MENUINPUTS "STICKS" + #define TR_MENULIMITS "SERVOS" +#else + #define TR_MENUINPUTS "DR/EXPO" + #define TR_MENULIMITS "LIMITS" +#endif + +#define TR_MENUCURVES "CURVES" +#define TR_MENUCURVE "CURVE" +#define TR_MENUCUSTOMSWITCH "CUSTOM SWITCH" +#define TR_MENUCUSTOMSWITCHES "CUSTOM SWITCHES" +#define TR_MENUCUSTOMFUNC "CUSTOM FUNCTIONS" +#define TR_MENUTELEMETRY "TELEMETRY" +#define TR_MENUTEMPLATES "TEMPLATES" +#define TR_MENUSTAT "STATS" +#define TR_MENUDEBUG "DEBUG" +#define TR_RXNUM TR("RxNum", INDENT"Receiver No.") +#define TR_SYNCMENU "[Sync]" +#define TR_LIMIT INDENT"Limit" +#define TR_MINRSSI "Min Rssi" +#define TR_LATITUDE "Latitude" +#define TR_LONGITUDE "Longitude" +#define TR_GPSCOORD TR("GPS Coords", "GPS coordinate format") +#define TR_VARIO TR("Vario", "Variometer") +#define TR_SHUTDOWN "SHUTTING DOWN" +#define TR_BATT_CALIB "Battery Calib" +#define TR_CURRENT_CALIB "Current Calib" +#define TR_VOLTAGE INDENT"Voltage" +#define TR_CURRENT INDENT"Current" +#define TR_SELECT_MODEL "Select Model" +#define TR_CREATE_MODEL "Create Model" +#define TR_COPY_MODEL "Copy Model" +#define TR_MOVE_MODEL "Move Model" +#define TR_BACKUP_MODEL "Backup Model" +#define TR_DELETE_MODEL "Delete Model" +#define TR_RESTORE_MODEL "Restore Model" +#define TR_SDCARD_ERROR "SDCARD Error" +#define TR_NO_SDCARD "No SDCARD" +#define TR_INCOMPATIBLE "Incompatible" +#define TR_WARNING "WARNING" +#define TR_EEPROMWARN "EEPROM" +#define TR_THROTTLEWARN "THROTTLE" +#define TR_ALARMSWARN "ALARMS" +#define TR_SWITCHWARN "SWITCH" +#define TR_INVERT_THR TR("Invert Thr?","Invert Throttle?") +#define TR_SPEAKER_VOLUME INDENT "Volume" +#define TR_LCD "LCD" +#define TR_BRIGHTNESS INDENT "Brightness" +#define TR_CPU_TEMP "CPU Temp.\016>" +#define TR_CPU_CURRENT "Current\022>" +#define TR_CPU_MAH "Consumpt." +#define TR_COPROC "CoProc." +#define TR_COPROC_TEMP "MB Temp. \016>" +#define TR_CAPAWARNING INDENT "Capacity Low" +#define TR_TEMPWARNING INDENT "Overheat" +#define TR_FUNC "Func" +#define TR_V1 "V1" +#define TR_V2 "V2" +#define TR_DURATION "Duration" +#define TR_DELAY "Delay" +#define TR_SD_CARD "SD CARD" +#define TR_SDHC_CARD "SD-HC CARD" +#define TR_NO_SOUNDS_ON_SD "No Sounds on SD" +#define TR_NO_MODELS_ON_SD "No Models on SD" +#define TR_NO_BITMAPS_ON_SD "No Bitmaps on SD" +#define TR_PLAY_FILE "Play" +#define TR_DELETE_FILE "Delete" +#define TR_COPY_FILE "Copy" +#define TR_RENAME_FILE "Rename" +#define TR_ASSIGN_BITMAP "Assign Bitmap" +#define TR_REMOVED " removed" +#define TR_SD_INFO "Information" +#define TR_SD_FORMAT "Format" +#define TR_NA "N/A" +#define TR_HARDWARE "HARDWARE" +#define TR_FORMATTING "Formatting..." +#define TR_TEMP_CALIB "Temp. Calib" +#define TR_TIME "Time" +#define TR_BAUDRATE "BT Baudrate" +#define TR_SD_INFO_TITLE "SD INFO" +#define TR_SD_TYPE "Type:" +#define TR_SD_SPEED "Speed:" +#define TR_SD_SECTORS "Sectors:" +#define TR_SD_SIZE "Size:" +#define TR_TYPE "Type" +#define TR_GLOBAL_VARS "Global Variables" +#define TR_GLOBAL_VAR "Global Variable" +#define TR_MENUGLOBALVARS "GLOBAL VARIABLES" +#define TR_OWN "Own" +#define TR_DATE "Date" +#define TR_ROTARY_ENCODER "R.Encs" +#define TR_CHANNELS_MONITOR "CHANNEL MONITOR" +#define TR_INTERNALRF "Internal RF" +#define TR_EXTERNALRF "External RF" +#define TR_FAILSAFE INDENT "Failsafe mode" +#define TR_FAILSAFESET "FAILSAFE SETTINGS" +#define TR_COUNTRYCODE "Country Code" +#define TR_VOICELANG "Voice Language" +#define TR_UNITSSYSTEM "Units" +#define TR_EDIT "Edit" +#define TR_INSERT_BEFORE "Insert Before" +#define TR_INSERT_AFTER "Insert After" +#define TR_COPY "Copy" +#define TR_MOVE "Move" +#define TR_PASTE "Paste" +#define TR_DELETE "Delete" +#define TR_INSERT "Insert" +#define TR_RESET_FLIGHT "Reset Flight" +#define TR_RESET_TIMER1 "Reset Timer1" +#define TR_RESET_TIMER2 "Reset Timer2" +#define TR_RESET_TELEMETRY "Reset Telemetry" +#define TR_STATISTICS "Statistics" +#define TR_ABOUT_US "About" +#define TR_AND_SWITCH "AND Switch" +#define TR_CF "CF" +#define TR_SPEAKER INDENT"Speaker" +#define TR_BUZZER INDENT"Buzzer" +#define TR_BYTES "bytes" +#define TR_MODULE_BIND "[Bind]" +#define TR_MODULE_RANGE "[Range]" +#define TR_RESET_BTN "[Reset]" +#define TR_SET "[Set]" +#define TR_TRAINER "Trainer" +#define TR_ANTENNAPROBLEM CENTER "TX Antenna problem!" +#define TR_MODELIDUSED TR("ID already used","Model ID already used") +#define TR_MODULE INDENT "Module" +#define TR_CHANNELRANGE INDENT "Channel Range" +#define TR_LOWALARM INDENT "Low Alarm" +#define TR_CRITICALALARM INDENT "Critical Alarm" +#define TR_PERSISTENT_MAH INDENT "Store mAh" + +#if defined(MAVLINK) + #define TR_MAVLINK_RC_RSSI_SCALE_LABEL "Max RSSI" + #define TR_MAVLINK_PC_RSSI_EN_LABEL "PC RSSI EN" + #define TR_MAVMENUSETUP_TITLE "Mavlink Setup" + #define TR_MAVLINK_BAUD_LABEL "Baudrate" + #define TR_MAVLINK_INFOS "INFOS" + #define TR_MAVLINK_MODE "MODE" + #define TR_MAVLINK_CUR_MODE "Current Mode" + #define TR_MAVLINK_ARMED "Armed" + #define TR_MAVLINK_BAT_MENU_TITLE "BAT RSSI" + #define TR_MAVLINK_BATTERY_LABEL "Flight Battery status" + #define TR_MAVLINK_RC_RSSI_LABEL "RC RSSI" + #define TR_MAVLINK_PC_RSSI_LABEL "PC RSSI" + #define TR_MAVLINK_NAV_MENU_TITLE "NAV" + #define TR_MAVLINK_COURSE "Course" + #define TR_MAVLINK_HEADING "Heading" + #define TR_MAVLINK_BEARING "Bearing" + #define TR_MAVLINK_ALTITUDE "Altitude" + #define TR_MAVLINK_GPS "GPS" + #define TR_MAVLINK_NO_FIX "NO Fix" + #define TR_MAVLINK_SAT "SAT" + #define TR_MAVLINK_HDOP "HDOP" + #define TR_MAVLINK_LAT "LAT" + #define TR_MAVLINK_LON "LON" +#endif + + + +// Taranis column headers +#define TR_PHASES_HEADERS { " Name ", " Switch ", " Trims ", " Fade In ", " Fade Out " } +#define TR_LIMITS_HEADERS { " Name ", " Subtrim ", " Min ", " Max ", " Direction ", " Curve ", " PPM Center ", " Subtrim mode " } +#define TR_CSW_HEADERS { " Function ", " V1 ", " V2 ", " AND Switch ", " Duration ", " Delay " } + +// About screen +#define TR_ABOUTUS TR(" ABOUT ", "ABOUT") + +#define TR_ABOUT_OPENTX_1 TR("OpenTX\001is\001open\001source,\001non", "OpenTX is open source, non-") +#define TR_ABOUT_OPENTX_2 TR("commercial,\001wo\001warranties.", "commercial and comes with no") +#define TR_ABOUT_OPENTX_3 TR("It\001was\001developed\001for\001free.", "warranties. It was developed") +#define TR_ABOUT_OPENTX_4 TR("Support through donations", "for free. Support through") +#define TR_ABOUT_OPENTX_5 TR("is welcome!", "donations is welcome!") + +#define TR_ABOUT_BERTRAND_1 "Bertrand Songis" +#define TR_ABOUT_BERTRAND_2 "OpenTX main author" +#define TR_ABOUT_BERTRAND_3 "Companion9x co-author" + +#define TR_ABOUT_MIKE_1 "Mike Blandford" +#define TR_ABOUT_MIKE_2 "Code and drivers guru" +#define TR_ABOUT_MIKE_3 TR("Arguably,\001one\001of\001the\001best", "Arguably, one of the best") +#define TR_ABOUT_MIKE_4 "Inspirational" + +#define TR_ABOUT_ROMOLO_1 "Romolo Manfredini" +#define TR_ABOUT_ROMOLO_2 "Companion9x co-author" +#define TR_ABOUT_ROMOLO_3 "" + +#define TR_ABOUT_ANDRE_1 "Andre Bernet" +#define TR_ABOUT_ANDRE_2 "Functionality, usability," +#define TR_ABOUT_ANDRE_3 "debugging, documentation" + +#define TR_ABOUT_ROB_1 "Rob Thomson" +#define TR_ABOUT_ROB_2 "openrcforums webmaster" + +#define TR_ABOUT_MARTIN_1 "Martin Hotar" +#define TR_ABOUT_MARTIN_2 "Graphics designer" + +#if defined(PCBTARANIS) + #define TR_ABOUT_HARDWARE_1 "FrSky" + #define TR_ABOUT_HARDWARE_2 "Hardware designer/producer" + #define TR_ABOUT_HARDWARE_3 "Firmware contributor" +#else + #define TR_ABOUT_HARDWARE_1 "Brent Nelson" + #define TR_ABOUT_HARDWARE_2 "Sky9x designer/producer" + #define TR_ABOUT_HARDWARE_3 "" +#endif + +#define TR_ABOUT_PARENTS_1 "Parent projects" +#define TR_ABOUT_PARENTS_2 TR("Ersky9x (Mike Blandford)", "Ersky9x (Mike Blandford)") +#define TR_ABOUT_PARENTS_3 "ER9X (Erez Raviv)" +#define TR_ABOUT_PARENTS_4 "TH9X (Thomas Husterer)" + +#define TR_CHR_SHORT 's' +#define TR_CHR_LONG 'l' +#define TR_CHR_TOGGLE 't' +#define TR_CHR_HOUR 'h' + +#define TR_BEEP_VOLUME "Beep Volume" +#define TR_WAV_VOLUME "Wav Volume" +#define TR_VARIO_VOLUME "Vario Volume" +#define TR_BG_VOLUME "Bg Volume" + +#define TR_TOP_BAR "Top Bar" +#define TR_ALTITUDE INDENT "Altitude" +#define TR_MODS_FORBIDDEN "Modifications forbidden!" +#define TR_UNLOCKED "Unlocked" + From ccc4096106cbd9c06e90edc53d8475a499e234a8 Mon Sep 17 00:00:00 2001 From: "Tim G. Foley" Date: Thu, 16 Jan 2014 20:25:50 -0500 Subject: [PATCH 151/308] Update README.txt --- README.txt | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/README.txt b/README.txt index 345e6aef7..70103f756 100644 --- a/README.txt +++ b/README.txt @@ -1 +1,29 @@ -Test +Add Gear Ratio to RPM Telemetry Calculation and allow for Blades to equal 1 + +Jan 16 2014 +- Switched to 'next' branch +- Need to solve issue with frsky_sport.cpp and calc compile error + + +Jan 15 2014 +•Fully working in Simulator now, new options for Spur and Pinion are in Telemetry setup screen for the model. Pinion is forced to stay equal to or smaller than spur (to prevent divide by zero). +•Tested on Taranis Rev A (eeprom is modified so backup everything before experimenting). + + +Jan 14 2014 +•The current implementation of OpenTX has a few limitations with regards to RPM sensors on Nitro Helicopters and this patch is to resolve and improve that. + +•Initial changes to make: +◦Change Minimum Blades to 1 (currently hardcoded to 2) to allow for Fan RPM Sensors (single magnet) and crank sensors. +◦Change Maximum Blades to 255 (currently limited to 5) to allow for any number of divider for both nitro or electric. +◦Add Spur Gear USRDATA option to assist with calculating head speed +◦Add Pinion Gear USRDATA option to assist with calculating head speed +◦Change RPM telemetry calculation to take into account gear ratio based upon Spur and Pinion size + + +•Future: +◦Add new telemtry calculated value "HDSP" for Headspeed to allow user to see engine RPM and calculated headspeed +◦Add more options for electric setups + + +Author - Tim Foley From 5219d9d53b97c47626a5d4d2914b586cb5189a24 Mon Sep 17 00:00:00 2001 From: "Tim G. Foley" Date: Thu, 16 Jan 2014 20:27:27 -0500 Subject: [PATCH 152/308] Delete translations.cpp~ --- radio/src/translations.cpp~ | 672 ------------------------------------ 1 file changed, 672 deletions(-) delete mode 100644 radio/src/translations.cpp~ diff --git a/radio/src/translations.cpp~ b/radio/src/translations.cpp~ deleted file mode 100644 index 98d62ab7b..000000000 --- a/radio/src/translations.cpp~ +++ /dev/null @@ -1,672 +0,0 @@ -/* - * Authors (alphabetical order) - * - Andre Bernet - * - Andreas Weitl - * - Bertrand Songis - * - Bryan J. Rentoul (Gruvin) - * - Cameron Weeks - * - Erez Raviv - * - Gabriel Birkus - * - Jean-Pierre Parisy - * - Karl Szmutny - * - Michael Blandford - * - Michal Hlavinka - * - Pat Mackenzie - * - Philip Moss - * - Rob Thomson - * - Romolo Manfredini - * - Thomas Husterer - * - * opentx is based on code named - * gruvin9x by Bryan J. Rentoul: http://code.google.com/p/gruvin9x/, - * er9x by Erez Raviv: http://code.google.com/p/er9x/, - * and the original (and ongoing) project by - * Thomas Husterer, th9x: http://code.google.com/p/th9x/ - * - * This program 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. - * - * This program 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. See the - * GNU General Public License for more details. - * - */ - -#include "opentx.h" - -#define ISTR(x) LEN_##x TR_##x - -// The non-0-terminated-strings -const pm_char STR_OPEN9X[] PROGMEM = - ISTR(OFFON) - ISTR(MMMINV) - ISTR(NCHANNELS) -#if !defined(GRAPHICS) - ISTR(VBEEPLEN) -#endif - ISTR(VBEEPMODE) -#if defined(ROTARY_ENCODERS) - ISTR(VRENAVIG) -#endif -#if defined(ROTARY_ENCODER_NAVIGATION) - ISTR(VRENCODERS) -#endif - ISTR(TRNMODE) - ISTR(TRNCHN) - ISTR(VTRIMINC) - ISTR(RETA123) - ISTR(VPROTOS) - ISTR(POSNEG) - ISTR(VBLMODE) - ISTR(VCURVEFUNC) - ISTR(VMLTPX) - ISTR(VMLTPX2) - ISTR(VMIXTRIMS) - ISTR(VCSWFUNC) - ISTR(VFSWFUNC) - ISTR(VFSWRESET) - ISTR(FUNCSOUNDS) - ISTR(VTELEMCHNS) -#if defined(FRSKY) || defined(CPUARM) - #if defined(CPUARM) - ISTR(VTELEMUNIT_IMP) - ISTR(VTELEMUNIT_NORM) - #else - ISTR(VTELEMUNIT) - #endif - ISTR(VALARM) - ISTR(VALARMFN) - ISTR(VTELPROTO) - ISTR(GPSFORMAT) - ISTR(VOLTSRC) - ISTR(VARIOSRC) - ISTR(VSCREEN) -#endif -#if defined(TEMPLATES) - ISTR(VTEMPLATES) -#endif -#if defined(HELI) - ISTR(VSWASHTYPE) -#endif - ISTR(VKEYS) - ISTR(VSWITCHES) - ISTR(VSRCRAW) - ISTR(VTMRMODES) -#if defined(CPUM2560) || defined(CPUARM) - ISTR(DATETIME) -#endif -#if defined(CPUARM) - ISTR(VLCD) - ISTR(VUNITSSYSTEM) - ISTR(VBEEPCOUNTDOWN) -#endif -#if defined(PXX) - ISTR(COUNTRYCODES) - ISTR(VFAILSAFE) -#endif -#if defined(PCBTARANIS) - ISTR(VTRAINERMODES) -#endif -#if defined(MAVLINK) - ISTR(MAVLINK_BAUDS) - ISTR(MAVLINK_AC_MODES) - ISTR(MAVLINK_AP_MODES) -#endif - ; - -// The 0-terminated-strings -const pm_char STR_POPUPS[] PROGMEM = TR_POPUPS; -const pm_char STR_MENUWHENDONE[] PROGMEM = TR_MENUWHENDONE; -const pm_char STR_FREE[] PROGMEM = TR_FREE; -const pm_char STR_DELETEMODEL[] PROGMEM = TR_DELETEMODEL; -const pm_char STR_COPYINGMODEL[] PROGMEM = TR_COPYINGMODEL; -const pm_char STR_MOVINGMODEL[] PROGMEM = TR_MOVINGMODEL; -const pm_char STR_LOADINGMODEL[] PROGMEM = TR_LOADINGMODEL; -const pm_char STR_NAME[] PROGMEM = TR_NAME; -const pm_char STR_BITMAP[] PROGMEM = TR_BITMAP; -const pm_char STR_TIMER[] PROGMEM = TR_TIMER; -const pm_char STR_ELIMITS[] PROGMEM = TR_ELIMITS; -const pm_char STR_ETRIMS[] PROGMEM = TR_ETRIMS; -const pm_char STR_TRIMINC[] PROGMEM = TR_TRIMINC; -const pm_char STR_TTRACE[] PROGMEM = TR_TTRACE; -const pm_char STR_TTRIM[] PROGMEM = TR_TTRIM; -const pm_char STR_BEEPCTR[] PROGMEM = TR_BEEPCTR; -const pm_char STR_PROTO[] PROGMEM = TR_PROTO; -const pm_char STR_PPMFRAME[] PROGMEM = TR_PPMFRAME; -const pm_char STR_MS[] PROGMEM = TR_MS; -const pm_char STR_SWITCH[] PROGMEM = TR_SWITCH; -const pm_char STR_TRIMS[] PROGMEM = TR_TRIMS; -const pm_char STR_FADEIN[] PROGMEM = TR_FADEIN; -const pm_char STR_FADEOUT[] PROGMEM = TR_FADEOUT; -const pm_char STR_DEFAULT[] PROGMEM = TR_DEFAULT; -const pm_char STR_CHECKTRIMS[] PROGMEM = TR_CHECKTRIMS; -#ifdef HELI -const pm_char STR_SWASHTYPE[] PROGMEM = TR_SWASHTYPE; -const pm_char STR_COLLECTIVE[] PROGMEM = TR_COLLECTIVE; -const pm_char STR_SWASHRING[] PROGMEM = TR_SWASHRING; -const pm_char STR_ELEDIRECTION[] PROGMEM = TR_ELEDIRECTION; -const pm_char STR_AILDIRECTION[] PROGMEM = TR_AILDIRECTION; -const pm_char STR_COLDIRECTION[] PROGMEM = TR_COLDIRECTION; -#endif -const pm_char STR_MODE[] PROGMEM = TR_MODE; -#if defined(AUDIO) && defined(BUZZER) -const pm_char STR_SPEAKER[] PROGMEM = TR_SPEAKER; -const pm_char STR_BUZZER[] PROGMEM = TR_BUZZER; -#endif -const pm_char STR_NOFREEEXPO[] PROGMEM = TR_NOFREEEXPO; -const pm_char STR_NOFREEMIXER[] PROGMEM = TR_NOFREEMIXER; -const pm_char STR_INSERTMIX[] PROGMEM = TR_INSERTMIX; -const pm_char STR_EDITMIX[] PROGMEM = TR_EDITMIX; -const pm_char STR_SOURCE[] PROGMEM = TR_SOURCE; -const pm_char STR_WEIGHT[] PROGMEM = TR_WEIGHT; -const pm_char STR_EXPO[] PROGMEM = TR_EXPO; -const pm_char STR_SIDE[] PROGMEM = TR_SIDE; -const pm_char STR_DIFFERENTIAL[] PROGMEM = TR_DIFFERENTIAL; -const pm_char STR_OFFSET[] PROGMEM = TR_OFFSET; -const pm_char STR_TRIM[] PROGMEM = TR_TRIM; -const pm_char STR_DREX[] PROGMEM = TR_DREX; -const pm_char STR_CURVE[] PROGMEM = TR_CURVE; -const pm_char STR_FLMODE[] PROGMEM = TR_FLMODE; -const pm_char STR_MIXWARNING[] PROGMEM = TR_MIXWARNING; -const pm_char STR_OFF[] PROGMEM = TR_OFF; -const pm_char STR_MULTPX[] PROGMEM = TR_MULTPX; -const pm_char STR_DELAYDOWN[] PROGMEM = TR_DELAYDOWN; -const pm_char STR_DELAYUP[] PROGMEM = TR_DELAYUP; -const pm_char STR_SLOWDOWN[] PROGMEM = TR_SLOWDOWN; -const pm_char STR_SLOWUP[] PROGMEM = TR_SLOWUP; -const pm_char STR_MIXER[] PROGMEM = TR_MIXER; -const pm_char STR_CV[] PROGMEM = TR_CV; -const pm_char STR_GV[] PROGMEM = TR_GV; -const pm_char STR_ACHANNEL[] PROGMEM = TR_ACHANNEL; -const pm_char STR_RANGE[] PROGMEM = TR_RANGE; -const pm_char STR_BAR[] PROGMEM = TR_BAR; -const pm_char STR_ALARM[] PROGMEM = TR_ALARM; -const pm_char STR_USRDATA[] PROGMEM = TR_USRDATA; -const pm_char STR_BLADES[] PROGMEM = TR_BLADES; -const pm_char STR_SCREEN[] PROGMEM = TR_SCREEN; -const pm_char STR_SOUND_LABEL[] PROGMEM = TR_SOUND_LABEL; -const pm_char STR_LENGTH[] PROGMEM = TR_LENGTH; -#if defined(AUDIO) -const pm_char STR_SPKRPITCH[] PROGMEM = TR_SPKRPITCH; -#endif -#if defined(HAPTIC) -const pm_char STR_HAPTIC_LABEL[] PROGMEM = TR_HAPTIC_LABEL; -const pm_char STR_HAPTICSTRENGTH[] PROGMEM = TR_HAPTICSTRENGTH; -#endif -const pm_char STR_CONTRAST[] PROGMEM = TR_CONTRAST; -const pm_char STR_ALARMS_LABEL[] PROGMEM = TR_ALARMS_LABEL; -#if defined(BATTGRAPH) || defined(PCBTARANIS) -const pm_char STR_BATTERY_RANGE[] PROGMEM = TR_BATTERY_RANGE; -#endif -const pm_char STR_BATTERYWARNING[] PROGMEM = TR_BATTERYWARNING; -const pm_char STR_INACTIVITYALARM[] PROGMEM = TR_INACTIVITYALARM; -const pm_char STR_MEMORYWARNING[] PROGMEM = TR_MEMORYWARNING; -const pm_char STR_ALARMWARNING[] PROGMEM = TR_ALARMWARNING; -#if defined(ROTARY_ENCODERS) -const pm_char STR_RENAVIG[] PROGMEM = TR_RENAVIG; -#endif -const pm_char STR_THROTTLEREVERSE[] PROGMEM = TR_THROTTLEREVERSE; -const pm_char STR_MINUTEBEEP[] PROGMEM = TR_MINUTEBEEP; -const pm_char STR_BEEPCOUNTDOWN[] PROGMEM = TR_BEEPCOUNTDOWN; -const pm_char STR_PERSISTENT[] PROGMEM = TR_PERSISTENT; -const pm_char STR_BACKLIGHT_LABEL[] PROGMEM = TR_BACKLIGHT_LABEL; -const pm_char STR_BLDELAY[] PROGMEM = TR_BLDELAY; - -#if defined(PWM_BACKLIGHT) -const pm_char STR_BLONBRIGHTNESS[] PROGMEM = TR_BLONBRIGHTNESS; -const pm_char STR_BLOFFBRIGHTNESS[] PROGMEM = TR_BLOFFBRIGHTNESS; -#endif - -const pm_char STR_SPLASHSCREEN[] PROGMEM = TR_SPLASHSCREEN; -const pm_char STR_THROTTLEWARNING[] PROGMEM = TR_THROTTLEWARNING; -const pm_char STR_SWITCHWARNING[] PROGMEM = TR_SWITCHWARNING; -#ifdef FRSKY -const pm_char STR_TIMEZONE[] PROGMEM = TR_TIMEZONE; -const pm_char STR_GPSCOORD[] PROGMEM = TR_GPSCOORD; -const pm_char STR_VARIO[] PROGMEM = TR_VARIO; -#endif -const pm_char STR_RXCHANNELORD[] PROGMEM = TR_RXCHANNELORD; -const pm_char STR_SLAVE[] PROGMEM = TR_SLAVE; -const pm_char STR_MODESRC[] PROGMEM = TR_MODESRC; -const pm_char STR_MULTIPLIER[] PROGMEM = TR_MULTIPLIER; -const pm_char STR_CAL[] PROGMEM = TR_CAL; -const pm_char STR_VTRIM[] PROGMEM = TR_VTRIM; -const pm_char STR_BG[] PROGMEM = TR_BG; -const pm_char STR_MENUTOSTART[] PROGMEM = TR_MENUTOSTART; -const pm_char STR_SETMIDPOINT[] PROGMEM = TR_SETMIDPOINT; -const pm_char STR_MOVESTICKSPOTS[] PROGMEM = TR_MOVESTICKSPOTS; -const pm_char STR_RXBATT[] PROGMEM = TR_RXBATT; -const pm_char STR_TX[] PROGMEM = TR_TXnRX; -const pm_char STR_ACCEL[] PROGMEM = TR_ACCEL; -const pm_char STR_NODATA[] PROGMEM = TR_NODATA; -const pm_char STR_TM1TM2[] PROGMEM = TR_TM1TM2; -const pm_char STR_THRTHP[] PROGMEM = TR_THRTHP; -const pm_char STR_TOT[] PROGMEM = TR_TOT; -const pm_char STR_TMR1LATMAXUS[] PROGMEM = TR_TMR1LATMAXUS; -const pm_char STR_TMR1LATMINUS[] PROGMEM = TR_TMR1LATMINUS; -const pm_char STR_TMR1JITTERUS[] PROGMEM = TR_TMR1JITTERUS; -const pm_char STR_TMIXMAXMS[] PROGMEM = TR_TMIXMAXMS; -const pm_char STR_FREESTACKMINB[] PROGMEM = TR_FREESTACKMINB; -const pm_char STR_MENUTORESET[] PROGMEM = TR_MENUTORESET; -const pm_char STR_PPM[] PROGMEM = TR_PPM; -const pm_char STR_CH[] PROGMEM = TR_CH; -const pm_char STR_MODEL[] PROGMEM = TR_MODEL; -const pm_char STR_FP[] PROGMEM = TR_FP; -const pm_char STR_MIX[] PROGMEM = TR_MIX; -const pm_char STR_EEPROMLOWMEM[] PROGMEM = TR_EEPROMLOWMEM; -const pm_char STR_ALERT[] PROGMEM = TR_ALERT; -const pm_char STR_PRESSANYKEYTOSKIP[] PROGMEM = TR_PRESSANYKEYTOSKIP; -const pm_char STR_THROTTLENOTIDLE[] PROGMEM = TR_THROTTLENOTIDLE; -const pm_char STR_ALARMSDISABLED[] PROGMEM = TR_ALARMSDISABLED; -const pm_char STR_PRESSANYKEY[] PROGMEM = TR_PRESSANYKEY; -const pm_char STR_BADEEPROMDATA[] PROGMEM = TR_BADEEPROMDATA; -const pm_char STR_EEPROMFORMATTING[] PROGMEM = TR_EEPROMFORMATTING; -const pm_char STR_EEPROMOVERFLOW[] PROGMEM = TR_EEPROMOVERFLOW; -const pm_char STR_TRIMS2OFFSETS[] PROGMEM = TR_TRIMS2OFFSETS; -const pm_char STR_MENURADIOSETUP[] PROGMEM = TR_MENURADIOSETUP; - -#if defined(CPUM2560) || defined(CPUARM) -const pm_char STR_MENUDATEANDTIME[] PROGMEM = TR_MENUDATEANDTIME; -#endif - -const pm_char STR_MENUTRAINER[] PROGMEM = TR_MENUTRAINER; -const pm_char STR_MENUVERSION[] PROGMEM = TR_MENUVERSION; -const pm_char STR_MENUDIAG[] PROGMEM = TR_MENUDIAG; -const pm_char STR_MENUANA[] PROGMEM = TR_MENUANA; -const pm_char STR_MENUCALIBRATION[] PROGMEM = TR_MENUCALIBRATION; - -const pm_char STR_MENUMODELSEL[] PROGMEM = TR_MENUMODELSEL; -const pm_char STR_MENUSETUP[] PROGMEM = TR_MENUSETUP; -const pm_char STR_MENUFLIGHTPHASE[] PROGMEM = TR_MENUFLIGHTPHASE; -const pm_char STR_MENUFLIGHTPHASES[] PROGMEM = TR_MENUFLIGHTPHASES; - -#ifdef HELI -const pm_char STR_MENUHELISETUP[] PROGMEM = TR_MENUHELISETUP; -#endif - -const pm_char STR_MENUINPUTS[] PROGMEM = TR_MENUINPUTS; -const pm_char STR_MENULIMITS[] PROGMEM = TR_MENULIMITS; -const pm_char STR_MENUCURVES[] PROGMEM = TR_MENUCURVES; -const pm_char STR_MENUCURVE[] PROGMEM = TR_MENUCURVE; -const pm_char STR_MENUCUSTOMSWITCH[] PROGMEM = TR_MENUCUSTOMSWITCH; -const pm_char STR_MENUCUSTOMSWITCHES[] PROGMEM = TR_MENUCUSTOMSWITCHES; -const pm_char STR_MENUCUSTOMFUNC[] PROGMEM = TR_MENUCUSTOMFUNC; - -#if defined(LUA) -const pm_char STR_MENUCUSTOMSCRIPTS[] PROGMEM = "CUSTOM SCRIPTS"; -const pm_char STR_MENUCUSTOMSCRIPT[] PROGMEM = "CUSTOM SCRIPT"; -#endif - -#if defined(FRSKY) -const pm_char STR_MENUTELEMETRY[] PROGMEM = TR_MENUTELEMETRY; -const pm_char STR_LIMIT[] PROGMEM = TR_LIMIT; -#endif - -#if defined(TEMPLATES) -const pm_char STR_MENUTEMPLATES[] PROGMEM = TR_MENUTEMPLATES; -#endif - -const pm_char STR_MENUSTAT[] PROGMEM = TR_MENUSTAT; -const pm_char STR_MENUDEBUG[] PROGMEM = TR_MENUDEBUG; -const pm_char STR_MENUGLOBALVARS[] PROGMEM = TR_MENUGLOBALVARS; - -#if defined(DSM2) || defined(PXX) -const pm_char STR_RXNUM[] PROGMEM = TR_RXNUM; -#endif - -#if defined(PXX) -const pm_char STR_SYNCMENU[] PROGMEM = TR_SYNCMENU; -const pm_char STR_INTERNALRF[] PROGMEM = TR_INTERNALRF; -const pm_char STR_EXTERNALRF[] PROGMEM = TR_EXTERNALRF; -const pm_char STR_COUNTRYCODE[] PROGMEM = TR_COUNTRYCODE; -const pm_char STR_FAILSAFE[] PROGMEM = TR_FAILSAFE; -const pm_char STR_FAILSAFESET[] PROGMEM = TR_FAILSAFESET; -#endif - -const pm_char STR_INVERT_THR[] PROGMEM = TR_INVERT_THR; -const pm_char STR_AND_SWITCH[] PROGMEM = TR_AND_SWITCH; -extern const pm_char STR_CF[] PROGMEM = TR_CF; - -#if defined(FRSKY_HUB) -const pm_char STR_MINRSSI[] PROGMEM = TR_MINRSSI; -const pm_char STR_LATITUDE[] PROGMEM = TR_LATITUDE; -const pm_char STR_LONGITUDE[] PROGMEM = TR_LONGITUDE; -#endif - -#if defined(CPUARM) || defined(CPUM2560) -const pm_char STR_SHUTDOWN[] PROGMEM = TR_SHUTDOWN; -#endif - -const pm_char STR_BATT_CALIB[] PROGMEM = TR_BATT_CALIB; - -#if defined(CPUARM) || defined(FRSKY) -const pm_char STR_VOLTAGE[] PROGMEM = TR_VOLTAGE; -const pm_char STR_CURRENT[] PROGMEM = TR_CURRENT; -#endif - -#if defined(CPUARM) -const pm_char STR_CURRENT_CALIB[] PROGMEM = TR_CURRENT_CALIB; -const pm_char STR_UNITSSYSTEM[] PROGMEM = TR_UNITSSYSTEM; -const pm_char STR_VOICELANG[] PROGMEM = TR_VOICELANG; -const pm_char STR_MODELIDUSED[] PROGMEM = TR_MODELIDUSED; -const pm_char STR_BEEP_VOLUME[] PROGMEM = INDENT TR_BEEP_VOLUME; -const pm_char STR_WAV_VOLUME[] PROGMEM = INDENT TR_WAV_VOLUME; -const pm_char STR_VARIO_VOLUME[] PROGMEM = INDENT TR_VARIO_VOLUME; -const pm_char STR_BG_VOLUME[] PROGMEM = INDENT TR_BG_VOLUME; -const pm_char STR_PERSISTENT_MAH[] PROGMEM = TR_PERSISTENT_MAH; -#endif - -#if defined(NAVIGATION_MENUS) -const pm_char STR_SELECT_MODEL[] PROGMEM = TR_SELECT_MODEL; -const pm_char STR_CREATE_MODEL[] PROGMEM = TR_CREATE_MODEL; -const pm_char STR_COPY_MODEL[] PROGMEM = TR_COPY_MODEL; -const pm_char STR_MOVE_MODEL[] PROGMEM = TR_MOVE_MODEL; -const pm_char STR_DELETE_MODEL[] PROGMEM = TR_DELETE_MODEL; -const pm_char STR_EDIT[] PROGMEM = TR_EDIT; -const pm_char STR_INSERT_BEFORE[] PROGMEM = TR_INSERT_BEFORE; -const pm_char STR_INSERT_AFTER[] PROGMEM = TR_INSERT_AFTER; -const pm_char STR_COPY[] PROGMEM = TR_COPY; -const pm_char STR_MOVE[] PROGMEM = TR_MOVE; -const pm_char STR_PASTE[] PROGMEM = TR_PASTE; -const pm_char STR_INSERT[] PROGMEM = TR_INSERT; -const pm_char STR_DELETE[] PROGMEM = TR_DELETE; -const pm_char STR_RESET_FLIGHT[] PROGMEM = TR_RESET_FLIGHT; -const pm_char STR_RESET_TIMER1[] PROGMEM = TR_RESET_TIMER1; -const pm_char STR_RESET_TIMER2[] PROGMEM = TR_RESET_TIMER2; -const pm_char STR_RESET_TELEMETRY[] PROGMEM = TR_RESET_TELEMETRY; -const pm_char STR_STATISTICS[] PROGMEM = TR_STATISTICS; -const pm_char STR_ABOUT_US[] PROGMEM = TR_ABOUT_US; -#endif - -const pm_char STR_RESET_BTN[] PROGMEM = TR_RESET_BTN; - -#if defined(SDCARD) -const pm_char STR_BACKUP_MODEL[] PROGMEM = TR_BACKUP_MODEL; -const pm_char STR_RESTORE_MODEL[] PROGMEM = TR_RESTORE_MODEL; -const pm_char STR_SDCARD_ERROR[] PROGMEM = TR_SDCARD_ERROR; -const pm_char STR_NO_SDCARD[] PROGMEM = TR_NO_SDCARD; -const pm_char STR_INCOMPATIBLE[] PROGMEM = TR_INCOMPATIBLE; -const pm_char STR_LOGS_PATH[] PROGMEM = LOGS_PATH; -const pm_char STR_LOGS_EXT[] PROGMEM = LOGS_EXT; -const pm_char STR_MODELS_PATH[] PROGMEM = MODELS_PATH; -const pm_char STR_MODELS_EXT[] PROGMEM = MODELS_EXT; -#endif - -const pm_char STR_WARNING[] PROGMEM = TR_WARNING; -const pm_char STR_EEPROMWARN[] PROGMEM = TR_EEPROMWARN; -const pm_char STR_THROTTLEWARN[] PROGMEM = TR_THROTTLEWARN; -const pm_char STR_ALARMSWARN[] PROGMEM = TR_ALARMSWARN; -const pm_char STR_SWITCHWARN[] PROGMEM = TR_SWITCHWARN; - -const pm_char STR_SPEAKER_VOLUME[] PROGMEM = TR_SPEAKER_VOLUME; -const pm_char STR_LCD[] PROGMEM = TR_LCD; -const pm_char STR_BRIGHTNESS[] PROGMEM = TR_BRIGHTNESS; -const pm_char STR_CPU_TEMP[] PROGMEM = TR_CPU_TEMP; -const pm_char STR_CPU_CURRENT[] PROGMEM = TR_CPU_CURRENT; -const pm_char STR_CPU_MAH[] PROGMEM = TR_CPU_MAH; -const pm_char STR_COPROC[] PROGMEM = TR_COPROC; -const pm_char STR_COPROC_TEMP[] PROGMEM = TR_COPROC_TEMP; -const pm_char STR_TEMPWARNING[] PROGMEM = TR_TEMPWARNING; -const pm_char STR_CAPAWARNING[] PROGMEM = TR_CAPAWARNING; -const pm_char STR_FUNC[] PROGMEM = TR_FUNC; -const pm_char STR_V1[] PROGMEM = TR_V1; -const pm_char STR_V2[] PROGMEM = TR_V2; -const pm_char STR_DURATION[] PROGMEM = TR_DURATION; -const pm_char STR_DELAY[] PROGMEM = TR_DELAY; -const pm_char STR_SD_CARD[] PROGMEM = TR_SD_CARD; -const pm_char STR_SDHC_CARD[] PROGMEM = TR_SDHC_CARD; -const pm_char STR_NO_SOUNDS_ON_SD[] PROGMEM = TR_NO_SOUNDS_ON_SD; -const pm_char STR_NO_MODELS_ON_SD[] PROGMEM = TR_NO_MODELS_ON_SD; -const pm_char STR_NO_BITMAPS_ON_SD[] PROGMEM = TR_NO_BITMAPS_ON_SD; -const pm_char STR_NO_SCRIPTS_ON_SD[] PROGMEM = "No Scripts on SD"; // TODO TR_NO_BITMAPS_ON_SD; -const pm_char STR_PLAY_FILE[] PROGMEM = TR_PLAY_FILE; -const pm_char STR_ASSIGN_BITMAP[] PROGMEM = TR_ASSIGN_BITMAP; -const pm_char STR_EXECUTE_FILE[] PROGMEM = "Execute"; -const pm_char STR_DELETE_FILE[] PROGMEM = TR_DELETE_FILE; -const pm_char STR_COPY_FILE[] PROGMEM = TR_COPY_FILE; -const pm_char STR_RENAME_FILE[] PROGMEM = TR_RENAME_FILE; -const pm_char STR_SD_INFO[] PROGMEM = TR_SD_INFO; -const pm_char STR_SD_FORMAT[] PROGMEM = TR_SD_FORMAT; -const pm_char STR_REMOVED[] PROGMEM = TR_REMOVED; -const pm_char STR_NA[] PROGMEM = TR_NA; -const pm_char STR_HARDWARE[] PROGMEM = TR_HARDWARE; -const pm_char STR_FORMATTING[] PROGMEM = TR_FORMATTING; -const pm_char STR_TEMP_CALIB[] PROGMEM = TR_TEMP_CALIB; -const pm_char STR_TIME[] PROGMEM = TR_TIME; -const pm_char STR_BAUDRATE[] PROGMEM = TR_BAUDRATE; -const pm_char STR_SD_INFO_TITLE[] PROGMEM = TR_SD_INFO_TITLE; -const pm_char STR_SD_TYPE[] PROGMEM = TR_SD_TYPE; -const pm_char STR_SD_SPEED[] PROGMEM = TR_SD_SPEED; -const pm_char STR_SD_SECTORS[] PROGMEM = TR_SD_SECTORS; -const pm_char STR_SD_SIZE[] PROGMEM = TR_SD_SIZE; -const pm_char STR_TYPE[] PROGMEM = TR_TYPE; -const pm_char STR_GLOBAL_VARS[] PROGMEM = TR_GLOBAL_VARS; -const pm_char STR_GLOBAL_VAR[] PROGMEM = TR_GLOBAL_VAR; -const pm_char STR_OWN[] PROGMEM = TR_OWN; -const pm_char STR_ROTARY_ENCODER[] PROGMEM = TR_ROTARY_ENCODER; -const pm_char STR_DATE[] PROGMEM = TR_DATE; -const pm_char STR_CHANNELS_MONITOR[] PROGMEM = TR_CHANNELS_MONITOR; -const pm_char STR_PATH_TOO_LONG[] PROGMEM = "Path too long"; -const pm_char STR_VIEW_TEXT[] PROGMEM = "View text"; - -#if LCD_W >= 212 - const pm_char STR_MODELNAME[] PROGMEM = TR_MODELNAME; - const pm_char STR_PHASENAME[] PROGMEM = TR_PHASENAME; - const pm_char STR_MIXNAME[] PROGMEM = TR_MIXNAME; - const pm_char STR_EXPONAME[] PROGMEM = TR_EXPONAME; -#endif - -#if LCD_W >= 212 - const char * STR_PHASES_HEADERS[] = TR_PHASES_HEADERS; - const char * STR_LIMITS_HEADERS[] = TR_LIMITS_HEADERS; - const char * STR_CSW_HEADERS[] = TR_CSW_HEADERS; -#endif - -#if defined(PCBTARANIS) - const pm_char STR_BYTES[] PROGMEM = TR_BYTES; - const pm_char STR_MODULE_BIND[] PROGMEM = TR_MODULE_BIND; - const pm_char STR_SET[] PROGMEM = TR_SET; - const pm_char STR_TRAINER[] PROGMEM = TR_TRAINER; - const pm_char STR_ANTENNAPROBLEM[] PROGMEM = TR_ANTENNAPROBLEM; - const pm_char STR_MODULE[] PROGMEM = TR_MODULE; - const pm_char STR_CHANNELRANGE[] PROGMEM = TR_CHANNELRANGE; - const pm_char STR_LOWALARM[] PROGMEM = TR_LOWALARM; - const pm_char STR_CRITICALALARM[] PROGMEM = TR_CRITICALALARM; - const pm_char STR_ENABLE_POPUP[] PROGMEM = "Enable Popup"; - const pm_char STR_DISABLE_POPUP[] PROGMEM = "Disable Popup"; - const pm_char STR_CURVE_PRESET[] PROGMEM = "Preset..."; - const pm_char STR_PRESET[] PROGMEM = "Preset"; - const pm_char STR_MIRROR[] PROGMEM = "Mirror"; - const pm_char STR_CLEAR[] PROGMEM = "Clear"; - const pm_char STR_RESET[] PROGMEM = "Reset"; - const pm_char STR_COPY_TRIMS_TO_OFFSET[] = "Copy Trims To Offset"; - const pm_char STR_TOP_BAR[] PROGMEM = "Top Bar"; - const pm_char STR_ALTITUDE[] PROGMEM = INDENT "Altitude"; - const pm_char STR_SCALE[] PROGMEM = "Scale"; - const pm_char STR_VIEW_CHANNELS[] PROGMEM = "View Channels"; - const pm_char STR_VIEW_NOTES[] PROGMEM = "View Notes"; -#endif - -#if MENUS_LOCK == 1 - const pm_char STR_UNLOCKED[] PROGMEM = TR_UNLOCKED; - const pm_char STR_MODS_FORBIDDEN[] PROGMEM = TR_MODS_FORBIDDEN; -#endif - -#if defined(PCBTARANIS) || defined(DSM2) - const pm_char STR_MODULE_RANGE[] PROGMEM = TR_MODULE_RANGE; -#endif - -#if defined(MAVLINK) - const pm_char STR_MAVLINK_RC_RSSI_SCALE_LABEL[] PROGMEM = TR_MAVLINK_RC_RSSI_SCALE_LABEL; - const pm_char STR_MAVLINK_PC_RSSI_EN_LABEL[] PROGMEM = TR_MAVLINK_PC_RSSI_EN_LABEL; - const pm_char STR_MAVMENUSETUP_TITLE[] PROGMEM = TR_MAVMENUSETUP_TITLE; - const pm_char STR_MAVLINK_BAUD_LABEL[] PROGMEM = TR_MAVLINK_BAUD_LABEL; - const pm_char STR_MAVLINK_INFOS[] PROGMEM = TR_MAVLINK_INFOS; - const pm_char STR_MAVLINK_MODE[] PROGMEM = TR_MAVLINK_MODE; - const pm_char STR_MAVLINK_CUR_MODE[] PROGMEM = TR_MAVLINK_CUR_MODE; - const pm_char STR_MAVLINK_ARMED[] PROGMEM = TR_MAVLINK_ARMED; - const pm_char STR_MAVLINK_BAT_MENU_TITLE[] PROGMEM = TR_MAVLINK_BAT_MENU_TITLE; - const pm_char STR_MAVLINK_BATTERY_LABEL[] PROGMEM = TR_MAVLINK_BATTERY_LABEL; - const pm_char STR_MAVLINK_RC_RSSI_LABEL[] PROGMEM = TR_MAVLINK_RC_RSSI_LABEL; - const pm_char STR_MAVLINK_PC_RSSI_LABEL[] PROGMEM = TR_MAVLINK_PC_RSSI_LABEL; - const pm_char STR_MAVLINK_NAV_MENU_TITLE[] PROGMEM = TR_MAVLINK_NAV_MENU_TITLE; - const pm_char STR_MAVLINK_COURSE[] PROGMEM = TR_MAVLINK_COURSE; - const pm_char STR_MAVLINK_HEADING[] PROGMEM = TR_MAVLINK_HEADING; - const pm_char STR_MAVLINK_BEARING[] PROGMEM = TR_MAVLINK_BEARING; - const pm_char STR_MAVLINK_ALTITUDE[] PROGMEM = TR_MAVLINK_ALTITUDE; - const pm_char STR_MAVLINK_GPS[] PROGMEM = TR_MAVLINK_GPS; - const pm_char STR_MAVLINK_NO_FIX[] PROGMEM = TR_MAVLINK_NO_FIX; - const pm_char STR_MAVLINK_SAT[] PROGMEM = TR_MAVLINK_SAT; - const pm_char STR_MAVLINK_HDOP[] PROGMEM = TR_MAVLINK_HDOP; - const pm_char STR_MAVLINK_LAT[] PROGMEM = TR_MAVLINK_LAT; - const pm_char STR_MAVLINK_LON[] PROGMEM = TR_MAVLINK_LON; -#endif - -#if !defined(CPUM64) - const pm_char STR_ABOUTUS[] PROGMEM = TR_ABOUTUS; - const pm_char STR_ABOUT_OPENTX_1[] PROGMEM = TR_ABOUT_OPENTX_1; - const pm_char STR_ABOUT_OPENTX_2[] PROGMEM = TR_ABOUT_OPENTX_2; - const pm_char STR_ABOUT_OPENTX_3[] PROGMEM = TR_ABOUT_OPENTX_3; - const pm_char STR_ABOUT_OPENTX_4[] PROGMEM = TR_ABOUT_OPENTX_4; - const pm_char STR_ABOUT_OPENTX_5[] PROGMEM = TR_ABOUT_OPENTX_5; - - const pm_char STR_ABOUT_BERTRAND_1[] PROGMEM = TR_ABOUT_BERTRAND_1; - const pm_char STR_ABOUT_BERTRAND_2[] PROGMEM = TR_ABOUT_BERTRAND_2; - const pm_char STR_ABOUT_BERTRAND_3[] PROGMEM = TR_ABOUT_BERTRAND_3; - - const pm_char STR_ABOUT_MIKE_1[] PROGMEM = TR_ABOUT_MIKE_1; - const pm_char STR_ABOUT_MIKE_2[] PROGMEM = TR_ABOUT_MIKE_2; - const pm_char STR_ABOUT_MIKE_3[] PROGMEM = TR_ABOUT_MIKE_3; - const pm_char STR_ABOUT_MIKE_4[] PROGMEM = TR_ABOUT_MIKE_4; - - const pm_char STR_ABOUT_ROMOLO_1[] PROGMEM = TR_ABOUT_ROMOLO_1; - const pm_char STR_ABOUT_ROMOLO_2[] PROGMEM = TR_ABOUT_ROMOLO_2; - const pm_char STR_ABOUT_ROMOLO_3[] PROGMEM = TR_ABOUT_ROMOLO_3; - - const pm_char STR_ABOUT_ANDRE_1[] PROGMEM = TR_ABOUT_ANDRE_1; - const pm_char STR_ABOUT_ANDRE_2[] PROGMEM = TR_ABOUT_ANDRE_2; - const pm_char STR_ABOUT_ANDRE_3[] PROGMEM = TR_ABOUT_ANDRE_3; - - const pm_char STR_ABOUT_ROB_1[] PROGMEM = TR_ABOUT_ROB_1; - const pm_char STR_ABOUT_ROB_2[] PROGMEM = TR_ABOUT_ROB_2; - - const pm_char STR_ABOUT_MARTIN_1[] PROGMEM = TR_ABOUT_MARTIN_1; - const pm_char STR_ABOUT_MARTIN_2[] PROGMEM = TR_ABOUT_MARTIN_2; - - const pm_char STR_ABOUT_HARDWARE_1[] PROGMEM = TR_ABOUT_HARDWARE_1; - const pm_char STR_ABOUT_HARDWARE_2[] PROGMEM = TR_ABOUT_HARDWARE_2; - const pm_char STR_ABOUT_HARDWARE_3[] PROGMEM = TR_ABOUT_HARDWARE_3; - - const pm_char STR_ABOUT_PARENTS_1[] PROGMEM = TR_ABOUT_PARENTS_1; - const pm_char STR_ABOUT_PARENTS_2[] PROGMEM = TR_ABOUT_PARENTS_2; - const pm_char STR_ABOUT_PARENTS_3[] PROGMEM = TR_ABOUT_PARENTS_3; - const pm_char STR_ABOUT_PARENTS_4[] PROGMEM = TR_ABOUT_PARENTS_4; -#endif - -const pm_uchar font_5x7[] PROGMEM = { -#include "font_05x07.lbm" -#if defined(TRANSLATIONS_DE) -#include "font_de_05x07.lbm" -#elif defined(TRANSLATIONS_CZ) -#include "font_cz_05x07.lbm" -#elif defined(TRANSLATIONS_ES) -#include "font_es_05x07.lbm" -#elif defined(TRANSLATIONS_FR) -#include "font_fr_05x07.lbm" -#elif defined(TRANSLATIONS_IT) -#include "font_it_05x07.lbm" -#elif defined(TRANSLATIONS_PL) -#include "font_pl_05x07.lbm" -#elif defined(TRANSLATIONS_PT) -#include "font_pt_05x07.lbm" -#elif defined(TRANSLATIONS_SE) -#include "font_se_05x07.lbm" -#endif -}; - -const pm_uchar font_10x14[] PROGMEM = { -#include "font_10x14_compressed.lbm" -#if defined(CPUARM) - #if defined(TRANSLATIONS_DE) - #include "font_de_10x14.lbm" - #elif defined(TRANSLATIONS_CZ) - #include "font_cz_10x14.lbm" - #elif defined(TRANSLATIONS_ES) - #include "font_es_10x14.lbm" - #elif defined(TRANSLATIONS_FR) - #include "font_fr_10x14.lbm" - #elif defined(TRANSLATIONS_IT) - #include "font_it_10x14.lbm" - #elif defined(TRANSLATIONS_PL) - #include "font_pl_10x14.lbm" - #elif defined(TRANSLATIONS_PT) - #include "font_pt_10x14.lbm" - #elif defined(TRANSLATIONS_SE) - #include "font_se_10x14.lbm" - #endif -#endif -}; - -#if defined(CPUARM) -const pm_uchar font_3x5[] PROGMEM = { -#include "font_03x05.lbm" -}; - -const pm_uchar font_4x6[] PROGMEM = { -#include "font_04x06.lbm" -#if defined(TRANSLATIONS_DE) -#include "font_de_04x06.lbm" -#elif defined(TRANSLATIONS_CZ) -#include "font_cz_04x06.lbm" -#elif defined(TRANSLATIONS_ES) -#include "font_es_04x06.lbm" -#elif defined(TRANSLATIONS_FR) -#include "font_fr_04x06.lbm" -#elif defined(TRANSLATIONS_IT) -#include "font_it_04x06.lbm" -#elif defined(TRANSLATIONS_PL) -#include "font_pl_04x06.lbm" -#elif defined(TRANSLATIONS_PT) -#include "font_pt_04x06.lbm" -#elif defined(TRANSLATIONS_SE) -#include "font_se_04x06.lbm" -#endif -}; - -const pm_uchar font_8x10[] PROGMEM = { -#include "font_08x10.lbm" -#if defined(TRANSLATIONS_DE) -#include "font_de_08x10.lbm" -#elif defined(TRANSLATIONS_CZ) -#include "font_cz_08x10.lbm" -#elif defined(TRANSLATIONS_ES) -#include "font_es_08x10.lbm" -#elif defined(TRANSLATIONS_FR) -#include "font_fr_08x10.lbm" -#elif defined(TRANSLATIONS_IT) -#include "font_it_08x10.lbm" -#elif defined(TRANSLATIONS_PL) -#include "font_pl_08x10.lbm" -#elif defined(TRANSLATIONS_PT) -#include "font_pt_08x10.lbm" -#elif defined(TRANSLATIONS_SE) -#include "font_se_08x10.lbm" -#endif -}; - -const pm_uchar font_4x6_extra[] PROGMEM = { -#include "font_04x06_extra.lbm" -}; - -const pm_uchar font_5x7_extra[] PROGMEM = { -#include "font_05x07_extra.lbm" -}; - -const pm_uchar font_10x14_extra[] PROGMEM = { -#include "font_10x14_extra.lbm" -}; - -#endif - From dda6069fef9b5cbafae52fd5b43df8f60565800b Mon Sep 17 00:00:00 2001 From: "Tim G. Foley" Date: Thu, 16 Jan 2014 20:27:36 -0500 Subject: [PATCH 153/308] Delete translations.h~ --- radio/src/translations.h~ | 754 -------------------------------------- 1 file changed, 754 deletions(-) delete mode 100644 radio/src/translations.h~ diff --git a/radio/src/translations.h~ b/radio/src/translations.h~ deleted file mode 100644 index 4a3e0600a..000000000 --- a/radio/src/translations.h~ +++ /dev/null @@ -1,754 +0,0 @@ -/* - * Authors (alphabetical order) - * - Andre Bernet - * - Andreas Weitl - * - Bertrand Songis - * - Bryan J. Rentoul (Gruvin) - * - Cameron Weeks - * - Erez Raviv - * - Gabriel Birkus - * - Jean-Pierre Parisy - * - Karl Szmutny - * - Michael Blandford - * - Michal Hlavinka - * - Pat Mackenzie - * - Philip Moss - * - Rob Thomson - * - Romolo Manfredini - * - Thomas Husterer - * - * opentx is based on code named - * gruvin9x by Bryan J. Rentoul: http://code.google.com/p/gruvin9x/, - * er9x by Erez Raviv: http://code.google.com/p/er9x/, - * and the original (and ongoing) project by - * Thomas Husterer, th9x: http://code.google.com/p/th9x/ - * - * This program 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. - * - * This program 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. See the - * GNU General Public License for more details. - * - */ - -#ifndef translations_h -#define translations_h - -#if defined(TRANSLATIONS_FR) -#include "translations/fr.h" -#define LEN_SPECIAL_CHARS 3 -#elif defined(TRANSLATIONS_IT) -#include "translations/it.h" -#define LEN_SPECIAL_CHARS 1 -#elif defined(TRANSLATIONS_SE) -#include "translations/se.h" -#define LEN_SPECIAL_CHARS 6 -#elif defined(TRANSLATIONS_DE) -#include "translations/de.h" -#define LEN_SPECIAL_CHARS 6 -#elif defined(TRANSLATIONS_CZ) -#include "translations/cz.h" -#define LEN_SPECIAL_CHARS 0 -#elif defined(TRANSLATIONS_ES) -#include "translations/es.h" -#define LEN_SPECIAL_CHARS 0 -#elif defined(TRANSLATIONS_PL) -#include "translations/pl.h" -#define LEN_SPECIAL_CHARS 0 -#elif defined(TRANSLATIONS_PT) -#include "translations/pt.h" -#define LEN_SPECIAL_CHARS 0 -#else -#include "translations/en.h" -#define LEN_SPECIAL_CHARS 0 -#endif - -#define PSIZE(x) ( sizeof(x) - 1 ) -#define EOFS(x) ( OFS_##x + sizeof(TR_##x) ) - -#if LCD_W >= 212 - #define TR(x,y) y -#else - #define TR(x,y) x -#endif - -// The non-0-terminated-strings - -extern const pm_char STR_OPEN9X[]; - -#define OFS_OFFON 0 -#define OFS_MMMINV (OFS_OFFON + sizeof(TR_OFFON)) -#define OFS_NCHANNELS (OFS_MMMINV + sizeof(TR_MMMINV)) -#if defined(GRAPHICS) -#define OFS_VBEEPMODE (OFS_NCHANNELS + sizeof(TR_NCHANNELS)) -#else -#define OFS_VBEEPLEN (OFS_NCHANNELS + sizeof(TR_NCHANNELS)) -#define OFS_VBEEPMODE (OFS_VBEEPLEN + sizeof(TR_VBEEPLEN)) -#endif -#if defined(ROTARY_ENCODERS) -#define OFS_VRENAVIG (OFS_VBEEPMODE + sizeof(TR_VBEEPMODE)) -#define OFS_VRENCODERS (OFS_VRENAVIG + sizeof(TR_VRENAVIG)) -#define OFS_TRNMODE (OFS_VRENCODERS + sizeof(TR_VRENCODERS)) -#elif defined(ROTARY_ENCODER_NAVIGATION) -#define OFS_VRENCODERS (OFS_VBEEPMODE + sizeof(TR_VBEEPMODE)) -#define OFS_TRNMODE (OFS_VRENCODERS + sizeof(TR_VRENCODERS)) -#else -#define OFS_TRNMODE (OFS_VBEEPMODE + sizeof(TR_VBEEPMODE)) -#endif -#define OFS_TRNCHN (OFS_TRNMODE + sizeof(TR_TRNMODE)) -#define OFS_VTRIMINC (OFS_TRNCHN + sizeof(TR_TRNCHN)) -#define OFS_RETA123 (OFS_VTRIMINC + sizeof(TR_VTRIMINC)) -#define OFS_VPROTOS (OFS_RETA123 + sizeof(TR_RETA123)) -#define OFS_POSNEG (OFS_VPROTOS + sizeof(TR_VPROTOS)) -#define OFS_VBLMODE (OFS_POSNEG + sizeof(TR_POSNEG)) -#define OFS_VCURVEFUNC (OFS_VBLMODE + sizeof(TR_VBLMODE)) -#define OFS_VMLTPX (OFS_VCURVEFUNC + sizeof(TR_VCURVEFUNC)) -#define OFS_VMLTPX2 (OFS_VMLTPX + sizeof(TR_VMLTPX)) -#define OFS_VMIXTRIMS (OFS_VMLTPX2 + sizeof(TR_VMLTPX2)) -#define OFS_VCSWFUNC (OFS_VMIXTRIMS + sizeof(TR_VMIXTRIMS)) -#define OFS_VFSWFUNC (OFS_VCSWFUNC + sizeof(TR_VCSWFUNC)) -#define OFS_VFSWRESET (OFS_VFSWFUNC + sizeof(TR_VFSWFUNC)) -#define OFS_FUNCSOUNDS (OFS_VFSWRESET + sizeof(TR_VFSWRESET)) -#define OFS_VTELEMCHNS (OFS_FUNCSOUNDS + sizeof(TR_FUNCSOUNDS)) -#if defined(FRSKY) || defined(CPUARM) - #if defined(CPUARM) - #define OFS_VTELEMUNIT_IMP (OFS_VTELEMCHNS + sizeof(TR_VTELEMCHNS)) - #define OFS_VTELEMUNIT_NORM (OFS_VTELEMUNIT_IMP + sizeof(TR_VTELEMUNIT_IMP)) - #define OFS_VALARM (OFS_VTELEMUNIT_NORM + sizeof(TR_VTELEMUNIT_NORM)) - #else - #define OFS_VTELEMUNIT (OFS_VTELEMCHNS + sizeof(TR_VTELEMCHNS)) - #define OFS_VALARM (OFS_VTELEMUNIT + sizeof(TR_VTELEMUNIT)) - #endif - #define OFS_VALARMFN (OFS_VALARM + sizeof(TR_VALARM)) - #define OFS_VTELPROTO (OFS_VALARMFN + sizeof(TR_VALARMFN)) - #define OFS_GPSFORMAT (OFS_VTELPROTO + sizeof(TR_VTELPROTO)) - #define OFS_VOLTSRC (OFS_GPSFORMAT + sizeof(TR_GPSFORMAT)) - #define OFS_VARIOSRC (OFS_VOLTSRC + sizeof(TR_VOLTSRC)) - #define OFS_VSCREEN (OFS_VARIOSRC + sizeof(TR_VARIOSRC)) - #define OFS_VTEMPLATES (OFS_VSCREEN + sizeof(TR_VSCREEN)) -#else - #define OFS_VTEMPLATES (OFS_VTELEMCHNS + sizeof(TR_VTELEMCHNS)) -#endif -#if defined(TEMPLATES) - #define OFS_VSWASHTYPE (OFS_VTEMPLATES + sizeof(TR_VTEMPLATES)) -#else - #define OFS_VSWASHTYPE (OFS_VTEMPLATES) -#endif -#if defined(HELI) - #define OFS_VKEYS (OFS_VSWASHTYPE + sizeof(TR_VSWASHTYPE)) -#else - #define OFS_VKEYS (OFS_VSWASHTYPE) -#endif -#define OFS_VSWITCHES (OFS_VKEYS + sizeof(TR_VKEYS)) -#define OFS_VSRCRAW (OFS_VSWITCHES + sizeof(TR_VSWITCHES)) -#define OFS_VTMRMODES (OFS_VSRCRAW + sizeof(TR_VSRCRAW)) -#define OFS_DATETIME (OFS_VTMRMODES + sizeof(TR_VTMRMODES)) -#if defined(CPUM2560) || defined(CPUARM) - #define OFS_VLCD (OFS_DATETIME + sizeof(TR_DATETIME)) -#else - #define OFS_VLCD (OFS_DATETIME) -#endif -#if defined(CPUARM) - #define OFS_VUNITSSYSTEM (OFS_VLCD + sizeof(TR_VLCD)) - #define OFS_VBEEPCOUNTDOWN (OFS_VUNITSSYSTEM + sizeof(TR_VUNITSSYSTEM)) - #define OFS_COUNTRYCODES (OFS_VBEEPCOUNTDOWN + sizeof(TR_VBEEPCOUNTDOWN)) -#else - #define OFS_COUNTRYCODES (OFS_VLCD) -#endif -#if defined(PXX) - #define OFS_VFAILSAFE (OFS_COUNTRYCODES + sizeof(TR_COUNTRYCODES)) -#else - #define OFS_VFAILSAFE (OFS_COUNTRYCODES) -#endif -#if defined(PXX) - #define OFS_VTRAINERMODES (OFS_VFAILSAFE + sizeof(TR_VFAILSAFE)) -#else - #define OFS_VTRAINERMODES (OFS_VFAILSAFE) -#endif -#if defined(PCBTARANIS) - #define OFS_MAVLINK_BAUDS (OFS_VTRAINERMODES + sizeof(TR_VTRAINERMODES)) -#else - #define OFS_MAVLINK_BAUDS (OFS_VTRAINERMODES) -#endif -#if defined(MAVLINK) - #define OFS_MAVLINK_AC_MODES (OFS_MAVLINK_BAUDS + sizeof(TR_MAVLINK_BAUDS)) - #define OFS_MAVLINK_AP_MODES (OFS_MAVLINK_AC_MODES + sizeof(TR_MAVLINK_AC_MODES)) - #define OFS_SPARE (OFS_MAVLINK_AP_MODES + sizeof(TR_MAVLINK_AP_MODES)) -#else - #define OFS_SPARE (OFS_MAVLINK_BAUDS) -#endif - -#define STR_OFFON (STR_OPEN9X + OFS_OFFON) -#define STR_MMMINV (STR_OPEN9X + OFS_MMMINV) -#define STR_NCHANNELS (STR_OPEN9X + OFS_NCHANNELS) -#if !defined(GRAPHICS) -#define STR_VBEEPLEN (STR_OPEN9X + OFS_VBEEPLEN) -#endif -#define STR_VBEEPMODE (STR_OPEN9X + OFS_VBEEPMODE) -#define STR_TRNMODE (STR_OPEN9X + OFS_TRNMODE) -#define STR_TRNCHN (STR_OPEN9X + OFS_TRNCHN) -#define STR_VTRIMINC (STR_OPEN9X + OFS_VTRIMINC) -#define STR_RETA123 (STR_OPEN9X + OFS_RETA123) -#define STR_VPROTOS (STR_OPEN9X + OFS_VPROTOS) -#define STR_POSNEG (STR_OPEN9X + OFS_POSNEG) -#define STR_VBLMODE (STR_OPEN9X + OFS_VBLMODE) -#define STR_VCURVEFUNC (STR_OPEN9X + OFS_VCURVEFUNC) -#define STR_VSIDE STR_VCURVEFUNC -#define LEN_VSIDE LEN_VCURVEFUNC -#define STR_VMLTPX (STR_OPEN9X + OFS_VMLTPX) -#define STR_VMLTPX2 (STR_OPEN9X + OFS_VMLTPX2) -#define STR_VMIXTRIMS (STR_OPEN9X + OFS_VMIXTRIMS) -#define STR_VCSWFUNC (STR_OPEN9X + OFS_VCSWFUNC) -#define STR_VFSWFUNC (STR_OPEN9X + OFS_VFSWFUNC) -#define STR_VFSWRESET (STR_OPEN9X + OFS_VFSWRESET) -#define STR_FUNCSOUNDS (STR_OPEN9X + OFS_FUNCSOUNDS) -#define STR_VTELEMCHNS (STR_OPEN9X + OFS_VTELEMCHNS) - -#if defined(FRSKY) || defined(CPUARM) - #if defined(CPUARM) - #define STR_VTELEMUNIT (STR_OPEN9X + (g_eeGeneral.imperial ? OFS_VTELEMUNIT_IMP : OFS_VTELEMUNIT_NORM)) - #else - #define STR_VTELEMUNIT (STR_OPEN9X + OFS_VTELEMUNIT) - #endif -#define STR_VALARM (STR_OPEN9X + OFS_VALARM) -#define STR_VALARMFN (STR_OPEN9X + OFS_VALARMFN) -#define STR_VTELPROTO (STR_OPEN9X + OFS_VTELPROTO) -#define STR_GPSFORMAT (STR_OPEN9X + OFS_GPSFORMAT) -#define STR_VOLTSRC (STR_OPEN9X + OFS_VOLTSRC) -#define STR_VARIOSRC (STR_OPEN9X + OFS_VARIOSRC) -#define STR_VSCREEN (STR_OPEN9X + OFS_VSCREEN) -#define STR_TELEMCHNS (STR_OPEN9X + OFS_TELEMCHNS) -#endif - -#ifdef TEMPLATES -#define STR_VTEMPLATES (STR_OPEN9X + OFS_VTEMPLATES) -#endif - -#ifdef HELI -#define STR_VSWASHTYPE (STR_OPEN9X + OFS_VSWASHTYPE) -#endif - -#define STR_VKEYS (STR_OPEN9X + OFS_VKEYS) -#define STR_VSWITCHES (STR_OPEN9X + OFS_VSWITCHES) -#define STR_VSRCRAW (STR_OPEN9X + OFS_VSRCRAW) -#define STR_VTMRMODES (STR_OPEN9X + OFS_VTMRMODES) - -#if defined(ROTARY_ENCODERS) - #define STR_VRENAVIG (STR_OPEN9X + OFS_VRENAVIG) -#endif - -#if defined(ROTARY_ENCODER_NAVIGATION) - #define STR_VRENCODERS (STR_OPEN9X + OFS_VRENCODERS) -#endif - -#if defined(CPUM2560) || defined(CPUARM) -#define STR_DATETIME (STR_OPEN9X + OFS_DATETIME) -#endif - -#if defined(CPUARM) - #define STR_VLCD (STR_OPEN9X + OFS_VLCD) - #define STR_VUNITSSYSTEM (STR_OPEN9X + OFS_VUNITSSYSTEM) - #define STR_VBEEPCOUNTDOWN (STR_OPEN9X + OFS_VBEEPCOUNTDOWN) -#endif - -#if defined(PXX) - #define STR_COUNTRYCODES (STR_OPEN9X + OFS_COUNTRYCODES) - #define STR_VFAILSAFE (STR_OPEN9X + OFS_VFAILSAFE) -#endif - -#if defined(PCBTARANIS) - #define STR_VTRAINERMODES (STR_OPEN9X + OFS_VTRAINERMODES) -#endif - -#if defined(MAVLINK) - #define STR_MAVLINK_BAUDS (STR_OPEN9X + OFS_MAVLINK_BAUDS) - #define STR_MAVLINK_AC_MODES (STR_OPEN9X + OFS_MAVLINK_AC_MODES) - #define STR_MAVLINK_AP_MODES (STR_OPEN9X + OFS_MAVLINK_AP_MODES) -#endif - -// The 0-terminated-strings -#define NO_INDENT(x) (x)+LEN_INDENT - -extern const pm_char STR_POPUPS[]; -#define STR_EXIT (STR_POPUPS + OFS_EXIT) -extern const pm_char STR_MENUWHENDONE[]; -extern const pm_char STR_FREE[]; -#define LEN_FREE PSIZE(TR_FREE) -extern const pm_char STR_DELETEMODEL[]; -extern const pm_char STR_COPYINGMODEL[]; -extern const pm_char STR_MOVINGMODEL[]; -extern const pm_char STR_LOADINGMODEL[]; -extern const pm_char STR_NAME[]; -extern const pm_char STR_BITMAP[]; -extern const pm_char STR_TIMER[]; -extern const pm_char STR_ELIMITS[]; -extern const pm_char STR_ETRIMS[]; -extern const pm_char STR_TRIMINC[]; -extern const pm_char STR_TTRACE[]; -extern const pm_char STR_TTRIM[]; -extern const pm_char STR_BEEPCTR[]; -extern const pm_char STR_PROTO[]; -extern const pm_char STR_PPMFRAME[]; -extern const pm_char STR_MS[]; -extern const pm_char STR_SWITCH[]; -extern const pm_char STR_TRIMS[]; -extern const pm_char STR_FADEIN[]; -extern const pm_char STR_FADEOUT[]; -extern const pm_char STR_DEFAULT[]; -extern const pm_char STR_CHECKTRIMS[]; -extern const pm_char STR_SWASHTYPE[]; -extern const pm_char STR_COLLECTIVE[]; -extern const pm_char STR_SWASHRING[]; -extern const pm_char STR_ELEDIRECTION[]; -extern const pm_char STR_AILDIRECTION[]; -extern const pm_char STR_COLDIRECTION[]; -extern const pm_char STR_MODE[]; -#if defined(AUDIO) && defined(BUZZER) -extern const pm_char STR_SPEAKER[]; -extern const pm_char STR_BUZZER[]; -#else -#define STR_SPEAKER STR_MODE -#define STR_BUZZER STR_MODE -#endif -extern const pm_char STR_NOFREEEXPO[]; -extern const pm_char STR_NOFREEMIXER[]; -extern const pm_char STR_INSERTMIX[]; -extern const pm_char STR_EDITMIX[]; -extern const pm_char STR_SOURCE[]; -extern const pm_char STR_WEIGHT[]; -extern const pm_char STR_EXPO[]; -extern const pm_char STR_SIDE[]; -extern const pm_char STR_DIFFERENTIAL[]; -extern const pm_char STR_OFFSET[]; -extern const pm_char STR_TRIM[]; -extern const pm_char STR_DREX[]; -extern const pm_char STR_CURVE[]; -extern const pm_char STR_FLMODE[]; -extern const pm_char STR_MIXWARNING[]; -extern const pm_char STR_OFF[]; -extern const pm_char STR_MULTPX[]; -extern const pm_char STR_DELAYDOWN[]; -extern const pm_char STR_DELAYUP[]; -extern const pm_char STR_SLOWDOWN[]; -extern const pm_char STR_SLOWUP[]; -extern const pm_char STR_MIXER[]; -extern const pm_char STR_CV[]; -extern const pm_char STR_GV[]; -extern const pm_char STR_ACHANNEL[]; -extern const pm_char STR_RANGE[]; -extern const pm_char STR_BAR[]; -extern const pm_char STR_ALARM[]; -extern const pm_char STR_USRDATA[]; -extern const pm_char STR_BLADES[]; -extern const pm_char STR_SCREEN[]; -extern const pm_char STR_SOUND_LABEL[]; -extern const pm_char STR_LENGTH[]; -extern const pm_char STR_SPKRPITCH[]; -extern const pm_char STR_HAPTIC_LABEL[]; -extern const pm_char STR_HAPTICSTRENGTH[]; -extern const pm_char STR_CONTRAST[]; -extern const pm_char STR_ALARMS_LABEL[]; -#if defined(BATTGRAPH) || defined(PCBTARANIS) -extern const pm_char STR_BATTERY_RANGE[]; -#endif -extern const pm_char STR_BATTERYWARNING[]; -extern const pm_char STR_INACTIVITYALARM[]; -extern const pm_char STR_MEMORYWARNING[]; -extern const pm_char STR_ALARMWARNING[]; -extern const pm_char STR_RENAVIG[]; -extern const pm_char STR_THROTTLEREVERSE[]; -extern const pm_char STR_MINUTEBEEP[]; -extern const pm_char STR_BEEPCOUNTDOWN[]; -extern const pm_char STR_PERSISTENT[]; -extern const pm_char STR_BACKLIGHT_LABEL[]; -extern const pm_char STR_BLDELAY[]; -#if defined(PWM_BACKLIGHT) -extern const pm_char STR_BLONBRIGHTNESS[]; -extern const pm_char STR_BLOFFBRIGHTNESS[]; -#endif -extern const pm_char STR_SPLASHSCREEN[]; -extern const pm_char STR_THROTTLEWARNING[]; -extern const pm_char STR_SWITCHWARNING[]; -extern const pm_char STR_TIMEZONE[]; -extern const pm_char STR_GPSCOORD[]; -extern const pm_char STR_VARIO[]; -extern const pm_char STR_RXCHANNELORD[]; -extern const pm_char STR_SLAVE[]; -extern const pm_char STR_MODESRC[]; -extern const pm_char STR_MULTIPLIER[]; -#define LEN_MULTIPLIER PSIZE(TR_MULTIPLIER) -extern const pm_char STR_CAL[]; -extern const pm_char STR_VTRIM[]; -extern const pm_char STR_BG[]; -extern const pm_char STR_MENUTOSTART[]; -extern const pm_char STR_SETMIDPOINT[]; -extern const pm_char STR_MOVESTICKSPOTS[]; -extern const pm_char STR_RXBATT[]; -extern const pm_char STR_TX[]; -#define STR_RX (STR_TX+OFS_RX) -extern const pm_char STR_ACCEL[]; -extern const pm_char STR_NODATA[]; -extern const pm_char STR_TM1TM2[]; -extern const pm_char STR_THRTHP[]; -extern const pm_char STR_TOT[]; -extern const pm_char STR_TMR1LATMAXUS[]; -extern const pm_char STR_TMR1LATMINUS[]; -extern const pm_char STR_TMR1JITTERUS[]; -extern const pm_char STR_TMIXMAXMS[]; -extern const pm_char STR_FREESTACKMINB[]; -extern const pm_char STR_MENUTORESET[]; -extern const pm_char STR_PPM[]; -extern const pm_char STR_CH[]; -extern const pm_char STR_MODEL[]; -extern const pm_char STR_FP[]; -#if defined(CPUARM) -extern const pm_char STR_MIX[]; -#endif -extern const pm_char STR_EEPROMLOWMEM[]; -extern const pm_char STR_ALERT[]; -extern const pm_char STR_PRESSANYKEYTOSKIP[]; -extern const pm_char STR_THROTTLENOTIDLE[]; -extern const pm_char STR_ALARMSDISABLED[]; -extern const pm_char STR_PRESSANYKEY[]; -#define LEN_PRESSANYKEY PSIZE(TR_PRESSANYKEY) -extern const pm_char STR_BADEEPROMDATA[]; -extern const pm_char STR_EEPROMFORMATTING[]; -extern const pm_char STR_EEPROMOVERFLOW[]; -extern const pm_char STR_TRIMS2OFFSETS[]; -extern const pm_char STR_MENURADIOSETUP[]; -extern const pm_char STR_MENUDATEANDTIME[]; -extern const pm_char STR_MENUTRAINER[]; -extern const pm_char STR_MENUVERSION[]; -extern const pm_char STR_MENUDIAG[]; -extern const pm_char STR_MENUANA[]; -extern const pm_char STR_MENUCALIBRATION[]; -extern const pm_char STR_MENUMODELSEL[]; -extern const pm_char STR_MENUSETUP[]; -extern const pm_char STR_MENUFLIGHTPHASE[]; -extern const pm_char STR_MENUFLIGHTPHASES[]; -extern const pm_char STR_MENUHELISETUP[]; -extern const pm_char STR_MENUINPUTS[]; -extern const pm_char STR_MENULIMITS[]; -extern const pm_char STR_MENUCURVES[]; -extern const pm_char STR_MENUCURVE[]; -extern const pm_char STR_MENUCUSTOMSWITCH[]; -extern const pm_char STR_MENUCUSTOMSWITCHES[]; -extern const pm_char STR_MENUCUSTOMFUNC[]; -extern const pm_char STR_MENUCUSTOMSCRIPTS[]; -extern const pm_char STR_MENUCUSTOMSCRIPT[]; -extern const pm_char STR_MENUTELEMETRY[]; -extern const pm_char STR_MENUTEMPLATES[]; -extern const pm_char STR_MENUSTAT[]; -extern const pm_char STR_MENUDEBUG[]; -extern const pm_char STR_MENUGLOBALVARS[]; -extern const pm_char STR_INVERT_THR[]; -extern const pm_char STR_AND_SWITCH[]; -extern const pm_char STR_CF[]; - -#if defined(DSM2) || defined(PXX) -extern const pm_char STR_RXNUM[]; -#endif - -#if defined(PXX) -extern const pm_char STR_SYNCMENU[]; -extern const pm_char STR_INTERNALRF[]; -extern const pm_char STR_EXTERNALRF[]; -extern const pm_char STR_FAILSAFE[]; -extern const pm_char STR_FAILSAFESET[]; -extern const pm_char STR_COUNTRYCODE[]; -#endif - -#if defined(FRSKY) -extern const pm_char STR_LIMIT[]; -#endif - -#ifdef FRSKY_HUB -extern const pm_char STR_MINRSSI[]; -extern const pm_char STR_LATITUDE[]; -extern const pm_char STR_LONGITUDE[]; -#endif - -#if defined(CPUARM) || defined(CPUM2560) -extern const pm_char STR_SHUTDOWN[]; -#endif - -extern const pm_char STR_BATT_CALIB[]; - -#if defined(CPUARM) || defined(FRSKY) -extern const pm_char STR_VOLTAGE[]; -extern const pm_char STR_CURRENT[]; -#endif - -#if defined(CPUARM) - extern const pm_char STR_CURRENT_CALIB[]; - #define LEN_CALIB_FIELDS (PSIZE(TR_BATT_CALIB) > PSIZE(TR_CURRENT_CALIB) ? PSIZE(TR_BATT_CALIB) : PSIZE(TR_CURRENT_CALIB)) - extern const pm_char STR_UNITSSYSTEM[]; - extern const pm_char STR_VOICELANG[]; - extern const pm_char STR_MODELIDUSED[]; - extern const pm_char STR_BEEP_VOLUME[]; - extern const pm_char STR_WAV_VOLUME[]; - extern const pm_char STR_VARIO_VOLUME[]; - extern const pm_char STR_BG_VOLUME[]; - extern const pm_char STR_PERSISTENT_MAH[]; -#else - #define LEN_CALIB_FIELDS PSIZE(TR_BATT_CALIB) -#endif - -#if defined(NAVIGATION_MENUS) - extern const pm_char STR_SELECT_MODEL[]; - extern const pm_char STR_CREATE_MODEL[]; - extern const pm_char STR_COPY_MODEL[]; - extern const pm_char STR_MOVE_MODEL[]; - extern const pm_char STR_DELETE_MODEL[]; - extern const pm_char STR_EDIT[]; - extern const pm_char STR_INSERT_BEFORE[]; - extern const pm_char STR_INSERT_AFTER[]; - extern const pm_char STR_COPY[]; - extern const pm_char STR_MOVE[]; - extern const pm_char STR_PASTE[]; - extern const pm_char STR_INSERT[]; - extern const pm_char STR_DELETE[]; - extern const pm_char STR_RESET_FLIGHT[]; - extern const pm_char STR_RESET_TIMER1[]; - extern const pm_char STR_RESET_TIMER2[]; - extern const pm_char STR_RESET_TELEMETRY[]; - extern const pm_char STR_STATISTICS[]; - extern const pm_char STR_ABOUT_US[]; -#endif - -extern const pm_char STR_RESET_BTN[]; - -#if defined(SDCARD) - extern const pm_char STR_BACKUP_MODEL[]; - extern const pm_char STR_RESTORE_MODEL[]; - extern const pm_char STR_SDCARD_ERROR[]; - extern const pm_char STR_NO_SDCARD[]; - extern const pm_char STR_INCOMPATIBLE[]; - extern const pm_char STR_LOGS_PATH[]; - extern const pm_char STR_LOGS_EXT[]; - extern const pm_char STR_MODELS_PATH[]; - extern const pm_char STR_MODELS_EXT[]; - #define STR_UPDATE_LIST STR_DELAYDOWN -#endif - -extern const pm_uchar font_5x7[]; -extern const pm_uchar font_10x14[]; - -#if defined(CPUARM) -extern const pm_uchar font_3x5[]; -extern const pm_uchar font_4x6[]; -extern const pm_uchar font_8x10[]; -extern const pm_uchar font_5x7_extra[]; -extern const pm_uchar font_10x14_extra[]; -extern const pm_uchar font_4x6_extra[]; -#endif - -extern const pm_char STR_WARNING[]; -extern const pm_char STR_EEPROMWARN[]; -extern const pm_char STR_THROTTLEWARN[]; -extern const pm_char STR_ALARMSWARN[]; -extern const pm_char STR_SWITCHWARN[]; - -extern const pm_char STR_SPEAKER_VOLUME[]; -extern const pm_char STR_LCD[]; -extern const pm_char STR_BRIGHTNESS[]; -extern const pm_char STR_CPU_TEMP[]; -extern const pm_char STR_CPU_CURRENT[]; -extern const pm_char STR_CPU_MAH[]; -extern const pm_char STR_COPROC[]; -extern const pm_char STR_COPROC_TEMP[]; -extern const pm_char STR_CAPAWARNING[]; -extern const pm_char STR_TEMPWARNING[]; -extern const pm_char STR_FUNC[]; -extern const pm_char STR_V1[]; -extern const pm_char STR_V2[]; -extern const pm_char STR_DURATION[]; -extern const pm_char STR_DELAY[]; -extern const pm_char STR_SD_CARD[]; -extern const pm_char STR_SDHC_CARD[]; -extern const pm_char STR_NO_SOUNDS_ON_SD[]; -extern const pm_char STR_NO_MODELS_ON_SD[]; -extern const pm_char STR_NO_BITMAPS_ON_SD[]; -extern const pm_char STR_NO_SCRIPTS_ON_SD[]; -extern const pm_char STR_PLAY_FILE[]; -extern const pm_char STR_ASSIGN_BITMAP[]; -extern const pm_char STR_EXECUTE_FILE[]; -extern const pm_char STR_DELETE_FILE[]; -extern const pm_char STR_COPY_FILE[]; -extern const pm_char STR_RENAME_FILE[]; -extern const pm_char STR_REMOVED[]; -extern const pm_char STR_SD_INFO[]; -extern const pm_char STR_SD_FORMAT[]; -extern const pm_char STR_NA[]; -extern const pm_char STR_HARDWARE[]; -extern const pm_char STR_FORMATTING[]; -extern const pm_char STR_TEMP_CALIB[]; -extern const pm_char STR_TIME[]; -extern const pm_char STR_BAUDRATE[]; -extern const pm_char STR_SD_INFO_TITLE[]; -extern const pm_char STR_SD_TYPE[]; -extern const pm_char STR_SD_SPEED[]; -extern const pm_char STR_SD_SECTORS[]; -extern const pm_char STR_SD_SIZE[]; -extern const pm_char STR_TYPE[]; -extern const pm_char STR_GLOBAL_VARS[]; -extern const pm_char STR_GLOBAL_VAR[]; -extern const pm_char STR_OWN[]; -extern const pm_char STR_ROTARY_ENCODER[]; -extern const pm_char STR_DATE[]; -extern const pm_char STR_CHANNELS_MONITOR[]; -extern const pm_char STR_PATH_TOO_LONG[]; -extern const pm_char STR_VIEW_TEXT[]; - -#if defined(VOICE) && defined(CPUARM) - struct LanguagePack { - const char *id; - const char *name; - void (*playNumber)(getvalue_t number, uint8_t unit, uint8_t att, uint8_t id); - void (*playDuration)(int16_t seconds, uint8_t id); - }; - extern LanguagePack * languagePacks[]; - extern LanguagePack * currentLanguagePack; - extern uint8_t currentLanguagePackIdx; - #define LANGUAGE_PACK_DECLARE(lng, name) LanguagePack lng ## LanguagePack = { #lng, name, lng ## _ ## playNumber, lng ## _ ## playDuration } - #define LANGUAGE_PACK_DECLARE_DEFAULT(lng, name) LANGUAGE_PACK_DECLARE(lng, name); LanguagePack * currentLanguagePack = & lng ## LanguagePack; uint8_t currentLanguagePackIdx - inline PLAY_FUNCTION(playNumber, getvalue_t number, uint8_t unit, uint8_t att) { currentLanguagePack->playNumber(number, unit, att, id); } - inline PLAY_FUNCTION(playDuration, int16_t seconds) { currentLanguagePack->playDuration(seconds, id); } -#elif defined(VOICE) - PLAY_FUNCTION(playNumber, getvalue_t number, uint8_t unit, uint8_t att); - PLAY_FUNCTION(playDuration, int16_t seconds); - #define LANGUAGE_PACK_DECLARE(lng, name) - #define LANGUAGE_PACK_DECLARE_DEFAULT(lng, name) -#else - #define LANGUAGE_PACK_DECLARE(lng, name) - #define LANGUAGE_PACK_DECLARE_DEFAULT(lng, name) -#endif - -#if LCD_W >= 212 - extern const pm_char STR_MODELNAME[]; - extern const pm_char STR_PHASENAME[]; - extern const pm_char STR_MIXNAME[]; - extern const pm_char STR_EXPONAME[]; -#else - #define STR_MODELNAME STR_NAME - #define STR_PHASENAME STR_NAME - #define STR_MIXNAME STR_NAME - #define STR_EXPONAME STR_NAME -#endif - -#if LCD_W >= 212 - extern const char * STR_PHASES_HEADERS[]; - extern const char * STR_LIMITS_HEADERS[]; - extern const char * STR_CSW_HEADERS[]; -#endif - -#if defined(PCBTARANIS) - extern const pm_char STR_BYTES[]; - extern const pm_char STR_MODULE_BIND[]; - extern const pm_char STR_SET[]; - extern const pm_char STR_TRAINER[]; - extern const pm_char STR_ANTENNAPROBLEM[]; - extern const pm_char STR_MODULE[]; - extern const pm_char STR_CHANNELRANGE[]; - extern const pm_char STR_LOWALARM[]; - extern const pm_char STR_CRITICALALARM[]; - extern const pm_char STR_ENABLE_POPUP[]; - extern const pm_char STR_DISABLE_POPUP[]; - extern const pm_char STR_CURVE_PRESET[]; - extern const pm_char STR_PRESET[]; - extern const pm_char STR_MIRROR[]; - extern const pm_char STR_CLEAR[]; - extern const pm_char STR_RESET[]; - extern const pm_char STR_COPY_TRIMS_TO_OFFSET[]; - extern const pm_char STR_TOP_BAR[]; - extern const pm_char STR_ALTITUDE[]; - extern const pm_char STR_SCALE[]; - extern const pm_char STR_VIEW_CHANNELS[]; - extern const pm_char STR_VIEW_NOTES[]; -#endif - -#if MENUS_LOCK == 1 - extern const pm_char STR_UNLOCKED[]; - extern const pm_char STR_MODS_FORBIDDEN[]; -#endif - -#if defined(PCBTARANIS) || defined(DSM2) - extern const pm_char STR_MODULE_RANGE[]; -#endif - -#if defined(MAVLINK) - extern const pm_char STR_MAVLINK_RC_RSSI_SCALE_LABEL[]; - extern const pm_char STR_MAVLINK_PC_RSSI_EN_LABEL[]; - extern const pm_char STR_MAVMENUSETUP_TITLE[]; - extern const pm_char STR_MAVLINK_BAUD_LABEL[]; - extern const pm_char STR_MAVLINK_INFOS[]; - extern const pm_char STR_MAVLINK_MODE[]; - extern const pm_char STR_MAVLINK_CUR_MODE[]; - extern const pm_char STR_MAVLINK_ARMED[]; - extern const pm_char STR_MAVLINK_BAT_MENU_TITLE[]; - extern const pm_char STR_MAVLINK_BATTERY_LABEL[]; - extern const pm_char STR_MAVLINK_RC_RSSI_LABEL[]; - extern const pm_char STR_MAVLINK_PC_RSSI_LABEL[]; - extern const pm_char STR_MAVLINK_NAV_MENU_TITLE[]; - extern const pm_char STR_MAVLINK_COURSE[]; - extern const pm_char STR_MAVLINK_HEADING[]; - extern const pm_char STR_MAVLINK_BEARING[]; - extern const pm_char STR_MAVLINK_ALTITUDE[]; - extern const pm_char STR_MAVLINK_GPS[]; - extern const pm_char STR_MAVLINK_NO_FIX[]; - extern const pm_char STR_MAVLINK_SAT[]; - extern const pm_char STR_MAVLINK_HDOP[]; - extern const pm_char STR_MAVLINK_LAT[]; - extern const pm_char STR_MAVLINK_LON[]; -#endif - -#if !defined(CPUM64) - extern const pm_char STR_ABOUTUS[]; - extern const pm_char STR_ABOUT_OPENTX_1[]; - extern const pm_char STR_ABOUT_OPENTX_2[]; - extern const pm_char STR_ABOUT_OPENTX_3[]; - extern const pm_char STR_ABOUT_OPENTX_4[]; - extern const pm_char STR_ABOUT_OPENTX_5[]; - - extern const pm_char STR_ABOUT_BERTRAND_1[]; - extern const pm_char STR_ABOUT_BERTRAND_2[]; - extern const pm_char STR_ABOUT_BERTRAND_3[]; - - extern const pm_char STR_ABOUT_MIKE_1[]; - extern const pm_char STR_ABOUT_MIKE_2[]; - extern const pm_char STR_ABOUT_MIKE_3[]; - extern const pm_char STR_ABOUT_MIKE_4[]; - - extern const pm_char STR_ABOUT_ROMOLO_1[]; - extern const pm_char STR_ABOUT_ROMOLO_2[]; - extern const pm_char STR_ABOUT_ROMOLO_3[]; - - extern const pm_char STR_ABOUT_ANDRE_1[]; - extern const pm_char STR_ABOUT_ANDRE_2[]; - extern const pm_char STR_ABOUT_ANDRE_3[]; - - extern const pm_char STR_ABOUT_ROB_1[]; - extern const pm_char STR_ABOUT_ROB_2[]; - - extern const pm_char STR_ABOUT_MARTIN_1[]; - extern const pm_char STR_ABOUT_MARTIN_2[]; - - extern const pm_char STR_ABOUT_HARDWARE_1[]; - extern const pm_char STR_ABOUT_HARDWARE_2[]; - extern const pm_char STR_ABOUT_HARDWARE_3[]; - - extern const pm_char STR_ABOUT_PARENTS_1[]; - extern const pm_char STR_ABOUT_PARENTS_2[]; - extern const pm_char STR_ABOUT_PARENTS_3[]; - extern const pm_char STR_ABOUT_PARENTS_4[]; -#endif - -#define CHR_SHORT TR_CHR_SHORT -#define CHR_LONG TR_CHR_LONG -#define CHR_TOGGLE TR_CHR_TOGGLE -#define CHR_HOUR TR_CHR_HOUR - -#endif From 8cdfe1040da261432975dfec5b98dc9c3af22a5d Mon Sep 17 00:00:00 2001 From: "Tim G. Foley" Date: Thu, 16 Jan 2014 20:27:45 -0500 Subject: [PATCH 154/308] Delete myeeprom.h~ --- radio/src/myeeprom.h~ | 1469 ----------------------------------------- 1 file changed, 1469 deletions(-) delete mode 100644 radio/src/myeeprom.h~ diff --git a/radio/src/myeeprom.h~ b/radio/src/myeeprom.h~ deleted file mode 100644 index bbf184de6..000000000 --- a/radio/src/myeeprom.h~ +++ /dev/null @@ -1,1469 +0,0 @@ -/* - * Authors (alphabetical order) - * - Andre Bernet - * - Andreas Weitl - * - Bertrand Songis - * - Bryan J. Rentoul (Gruvin) - * - Cameron Weeks - * - Erez Raviv - * - Gabriel Birkus - * - Jean-Pierre Parisy - * - Karl Szmutny - * - Michael Blandford - * - Michal Hlavinka - * - Pat Mackenzie - * - Philip Moss - * - Rob Thomson - * - Romolo Manfredini - * - Thomas Husterer - * - * opentx is based on code named - * gruvin9x by Bryan J. Rentoul: http://code.google.com/p/gruvin9x/, - * er9x by Erez Raviv: http://code.google.com/p/er9x/, - * and the original (and ongoing) project by - * Thomas Husterer, th9x: http://code.google.com/p/th9x/ - * - * This program 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. - * - * This program 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. See the - * GNU General Public License for more details. - * - */ - -#ifndef myeeprom_h -#define myeeprom_h - -#include - -#define WARN_THR_BIT 0x01 -#define WARN_BEP_BIT 0x80 -#define WARN_SW_BIT 0x02 -#define WARN_MEM_BIT 0x04 -#define WARN_BVAL_BIT 0x38 - -#define WARN_THR (!(g_eeGeneral.warnOpts & WARN_THR_BIT)) -#define WARN_BEP (!(g_eeGeneral.warnOpts & WARN_BEP_BIT)) -#define WARN_SW (!(g_eeGeneral.warnOpts & WARN_SW_BIT)) -#define WARN_MEM (!(g_eeGeneral.warnOpts & WARN_MEM_BIT)) -#define BEEP_VAL ( (g_eeGeneral.warnOpts & WARN_BVAL_BIT) >>3 ) - -#if defined(PCBTARANIS) - #define EEPROM_VER 216 -#elif defined(PCBSKY9X) - #define EEPROM_VER 216 -#elif defined(CPUM2560) || defined(CPUM2561) - #define EEPROM_VER 216 -#elif defined(CPUM128) - #define EEPROM_VER 216 -#else - #define EEPROM_VER 216 -#endif - -#ifndef PACK -#define PACK( __Declaration__ ) __Declaration__ __attribute__((__packed__)) -#endif - -#if defined(PCBTARANIS) - #define MAX_MODELS 60 - #define NUM_CHNOUT 32 // number of real output channels CH1-CH32 - #define MAX_PHASES 9 - #define MAX_MIXERS 64 - #define MAX_EXPOS 64 - #define NUM_CSW 32 // number of custom switches - #define NUM_CFN 32 // number of functions assigned to switches - #define MAX_SCRIPTS 3 - #define MAX_INPUTS 32 -#elif defined(CPUARM) - #define MAX_MODELS 60 - #define NUM_CHNOUT 32 // number of real output channels CH1-CH32 - #define MAX_PHASES 9 - #define MAX_MIXERS 64 - #define MAX_EXPOS 32 - #define NUM_CSW 32 // number of custom switches - #define NUM_CFN 32 // number of functions assigned to switches -#elif defined(CPUM2560) || defined(CPUM2561) - #define MAX_MODELS 30 - #define NUM_CHNOUT 16 // number of real output channels CH1-CH16 - #define MAX_PHASES 6 - #define MAX_MIXERS 32 - #define MAX_EXPOS 16 - #define NUM_CSW 15 // number of custom switches - #define NUM_CFN 24 // number of functions assigned to switches -#elif defined(CPUM128) - #define MAX_MODELS 30 - #define NUM_CHNOUT 16 // number of real output channels CH1-CH16 - #define MAX_PHASES 5 - #define MAX_MIXERS 32 - #define MAX_EXPOS 14 - #define NUM_CSW 15 // number of custom switches - #define NUM_CFN 24 // number of functions assigned to switches -#else - #define MAX_MODELS 16 - #define NUM_CHNOUT 16 // number of real output channels CH1-CH16 - #define MAX_PHASES 5 - #define MAX_MIXERS 32 - #define MAX_EXPOS 14 - #define NUM_CSW 12 // number of custom switches - #define NUM_CFN 16 // number of functions assigned to switches -#endif - -#define MAX_TIMERS 2 - -#if defined(PCBTARANIS) - enum CurveType { - CURVE_TYPE_STANDARD, - CURVE_TYPE_CUSTOM, - CURVE_TYPE_LAST = CURVE_TYPE_CUSTOM - }; -PACK(typedef struct t_CurveInfo { - uint8_t type:3; - uint8_t smooth:1; - uint8_t spare:4; - int8_t points; -}) CurveInfo; - #define MAX_CURVES 32 - #define NUM_POINTS 512 - #define CURVDATA CurveInfo -#elif defined(CPUARM) - #define MAX_CURVES 16 - #define NUM_POINTS 512 - #define CURVDATA int16_t -#else - #define MAX_CURVES 8 - #define NUM_POINTS (112-MAX_CURVES) - #define CURVDATA int8_t -#endif - -#if defined(PCBTARANIS) || defined(PCBSKY9X) - #define NUM_MODULES 2 -#else - #define NUM_MODULES 1 -#endif - -typedef int16_t gvar_t; - -#if !defined(PCBSTD) - #define LEN_GVAR_NAME 6 - #define GVAR_MAX 1024 - #define GVAR_LIMIT 500 - PACK(typedef struct { - char name[LEN_GVAR_NAME]; - uint8_t popup:1; - uint8_t spare:7; - }) global_gvar_t; -#endif - -#define RESERVE_RANGE_FOR_GVARS 10 -// even we do not spend space in EEPROM for 10 GVARS, we reserve the space inside the range of values, like offset, weight, etc. - -#if defined(PCBSTD) && defined(GVARS) - #define MAX_GVARS 5 - #define MODEL_GVARS_DATA gvar_t gvars[MAX_GVARS]; - #define PHASE_GVARS_DATA - #define GVAR_VALUE(x, p) g_model.gvars[x] -#elif defined(PCBSTD) - #define MAX_GVARS 0 - #define MODEL_GVARS_DATA - #define PHASE_GVARS_DATA -#else - #if defined(CPUARM) - #define MAX_GVARS 9 - #else - #define MAX_GVARS 5 - #endif - #define MODEL_GVARS_DATA global_gvar_t gvars[MAX_GVARS]; - #define PHASE_GVARS_DATA gvar_t gvars[MAX_GVARS] - #define GVAR_VALUE(x, p) g_model.phaseData[p].gvars[x] -#endif - -PACK(typedef struct t_TrainerMix { - uint8_t srcChn:6; // 0-7 = ch1-8 - uint8_t mode:2; // off,add-mode,subst-mode - int8_t studWeight; -}) TrainerMix; - -PACK(typedef struct t_TrainerData { - int16_t calib[4]; - TrainerMix mix[4]; -}) TrainerData; - -PACK(typedef struct t_FrSkyRSSIAlarm { - int8_t level:2; - int8_t value:6; -}) FrSkyRSSIAlarm; - -#if defined(PCBTARANIS) -enum MainViews { - VIEW_TIMERS, - VIEW_INPUTS, - VIEW_SWITCHES, - VIEW_COUNT -}; -#else -enum MainViews { - VIEW_OUTPUTS_VALUES, - VIEW_OUTPUTS_BARS, - VIEW_INPUTS, - VIEW_TIMER2, - VIEW_COUNT -}; -#endif - -enum BeeperMode { - e_mode_quiet = -2, - e_mode_alarms, - e_mode_nokeys, - e_mode_all -}; - -#if defined(CPUARM) - #define EXTRA_GENERAL_FIELDS \ - uint8_t backlightBright; \ - int8_t currentCalib; \ - int8_t temperatureWarn; \ - uint8_t mAhWarn; \ - uint16_t mAhUsed; \ - uint32_t globalTimer; \ - int8_t temperatureCalib; \ - uint8_t btBaudrate; \ - uint8_t optrexDisplay; \ - uint8_t sticksGain; \ - uint8_t rotarySteps; \ - uint8_t countryCode; \ - uint8_t imperial; \ - char ttsLanguage[2]; \ - int8_t beepVolume; \ - int8_t wavVolume; \ - int8_t varioVolume; \ - int8_t backgroundVolume; -#elif defined(PXX) - #define EXTRA_GENERAL_FIELDS uint8_t countryCode; -#else - #define EXTRA_GENERAL_FIELDS -#endif - -PACK(typedef struct t_ModuleData { - int8_t rfProtocol; - uint8_t channelsStart; - int8_t channelsCount; // 0=8 channels - uint8_t failsafeMode; - int16_t failsafeChannels[NUM_CHNOUT]; - int8_t ppmDelay; - int8_t ppmFrameLength; - uint8_t ppmPulsePol; -}) ModuleData; - -#define SET_DEFAULT_PPM_FRAME_LENGTH(idx) g_model.moduleData[idx].ppmFrameLength = 4 * max((int8_t)0, g_model.moduleData[idx].channelsCount) - -#define MAX_SCRIPT_INPUTS 10 -#define MAX_SCRIPT_OUTPUTS 6 -PACK(typedef struct t_ScriptData { - char file[10]; - char name[10]; - int8_t inputs[MAX_SCRIPT_INPUTS]; -}) ScriptData; - -#if defined(PCBTARANIS) - enum ModuleIndex { - INTERNAL_MODULE, - EXTERNAL_MODULE, - TRAINER_MODULE - }; - #define MODELDATA_BITMAP char bitmap[LEN_BITMAP_NAME]; - #define MODELDATA_EXTRA uint8_t externalModule; uint8_t trainerMode; ModuleData moduleData[NUM_MODULES+1]; char curveNames[MAX_CURVES][6]; ScriptData scriptsData[MAX_SCRIPTS]; char inputNames[MAX_INPUTS][4]; - #define LIMITDATA_EXTRA char name[LEN_CHANNEL_NAME]; int8_t curve; - #define swstate_t uint16_t -#elif defined(PCBSKY9X) - #define MODELDATA_BITMAP - #define MODELDATA_EXTRA ModuleData moduleData[NUM_MODULES]; - #define LIMITDATA_EXTRA - #define swstate_t uint8_t -#else - #define MODELDATA_BITMAP - #define MODELDATA_EXTRA - #define LIMITDATA_EXTRA - #define swstate_t uint8_t -#endif - -enum BacklightMode { - e_backlight_mode_off = 0, - e_backlight_mode_keys = 1, - e_backlight_mode_sticks = 2, - e_backlight_mode_all = e_backlight_mode_keys+e_backlight_mode_sticks, - e_backlight_mode_on -}; - -#if defined(FSPLASH) || defined(XSPLASH) - #define SPLASH_MODE uint8_t splashMode:3 -#else - #define SPLASH_MODE uint8_t splashMode:1; uint8_t spare4:2 -#endif - -#define ALTERNATE_VIEW 0x10 -PACK(typedef struct t_EEGeneral { - uint8_t version; - uint16_t variant; - int16_t calibMid[NUM_STICKS+NUM_POTS]; - int16_t calibSpanNeg[NUM_STICKS+NUM_POTS]; - int16_t calibSpanPos[NUM_STICKS+NUM_POTS]; - uint16_t chkSum; - int8_t currModel; - uint8_t contrast; - uint8_t vBatWarn; - int8_t vBatCalib; - int8_t backlightMode; - TrainerData trainer; - uint8_t view; // index of view in main screen - int8_t buzzerMode:2; // -2=quiet, -1=only alarms, 0=no keys, 1=all - uint8_t fai:1; - int8_t beepMode:2; // -2=quiet, -1=only alarms, 0=no keys, 1=all - uint8_t alarmsFlash:1; - uint8_t disableMemoryWarning:1; - uint8_t disableAlarmWarning:1; - uint8_t stickMode:2; - int8_t timezone:5; - uint8_t spare1:1; - uint8_t inactivityTimer; - uint8_t mavbaud:3; - SPLASH_MODE; /* 3bits */ - int8_t hapticMode:2; // -2=quiet, -1=only alarms, 0=no keys, 1=all - uint8_t blOffBright:4; - uint8_t blOnBright:4; - uint8_t lightAutoOff; - uint8_t templateSetup; // RETA order for receiver channels - int8_t PPM_Multiplier; - int8_t hapticLength; - uint8_t reNavigation; // not used on STOCK board - int8_t beepLength:3; - uint8_t hapticStrength:3; - uint8_t gpsFormat:1; - uint8_t unexpectedShutdown:1; - uint8_t speakerPitch; - int8_t speakerVolume; - int8_t vBatMin; - int8_t vBatMax; - - EXTRA_GENERAL_FIELDS - - swstate_t switchUnlockStates; - -}) EEGeneral; - -#if defined(PCBTARANIS) - #define LEN_MODEL_NAME 12 - #define LEN_BITMAP_NAME 10 - #define LEN_EXPOMIX_NAME 8 - #define LEN_FP_NAME 10 - #define LEN_CHANNEL_NAME 6 -#elif defined(PCBSKY9X) - #define LEN_MODEL_NAME 10 - #define LEN_EXPOMIX_NAME 6 - #define LEN_FP_NAME 6 -#else - #define LEN_MODEL_NAME 10 - #define LEN_FP_NAME 6 -#endif - -#if defined(PCBTARANIS) -enum CurveRefType { - CURVE_REF_DIFF, - CURVE_REF_EXPO, - CURVE_REF_FUNC, - CURVE_REF_CUSTOM -}; -PACK(typedef struct t_CurveRef { - uint8_t type; - int8_t value; -}) CurveRef; -#else - #define MODE_DIFFERENTIAL 0 - #define MODE_EXPO 0 - #define MODE_CURVE 1 -#endif - -#if defined(PCBTARANIS) -PACK(typedef struct t_ExpoData { - uint8_t srcRaw; - uint16_t scale; - uint8_t chn; - int8_t swtch; - uint16_t phases; - int8_t weight; - int8_t carryTrim; - char name[LEN_EXPOMIX_NAME]; - int8_t offset; - CurveRef curve; - uint8_t spare; -}) ExpoData; -#define MIN_EXPO_WEIGHT -100 -#define EXPO_VALID(ed) ((ed)->srcRaw) -#define EXPO_MODE_ENABLE(ed, v) (true) -#elif defined(CPUARM) -PACK(typedef struct t_ExpoData { - uint8_t mode; // 0=end, 1=pos, 2=neg, 3=both - uint8_t chn; - int8_t swtch; - uint16_t phases; - int8_t weight; - uint8_t curveMode; - char name[LEN_EXPOMIX_NAME]; - int8_t curveParam; -}) ExpoData; -#define MIN_EXPO_WEIGHT 0 -#define EXPO_VALID(ed) ((ed)->mode) -#define EXPO_MODE_ENABLE(ed, v) ((v<0 && (ed->mode&1)) || (v>=0 && (ed->mode&2))) -#elif defined(CPUM2560) || defined(CPUM2561) -PACK(typedef struct t_ExpoData { - uint8_t mode:2; // 0=end, 1=pos, 2=neg, 3=both - uint8_t chn:2; - uint8_t curveMode:1; - uint8_t spare:3; - uint8_t phases; - int8_t swtch; - uint8_t weight; - int8_t curveParam; -}) ExpoData; -#define MIN_EXPO_WEIGHT 0 -#define EXPO_VALID(ed) ((ed)->mode) -#define EXPO_MODE_ENABLE(ed, v) ((v<0 && (ed->mode&1)) || (v>=0 && (ed->mode&2))) -#else -PACK(typedef struct t_ExpoData { - uint8_t mode:2; // 0=end, 1=pos, 2=neg, 3=both - int8_t swtch:6; - uint8_t chn:2; - uint8_t phases:5; - uint8_t curveMode:1; - uint8_t weight; // One spare bit here (used for GVARS) - int8_t curveParam; -}) ExpoData; -#define MIN_EXPO_WEIGHT 0 -#define EXPO_VALID(ed) ((ed)->mode) -#define EXPO_MODE_ENABLE(ed, v) ((v<0 && (ed->mode&1)) || (v>=0 && (ed->mode&2))) -#endif - -#if defined(CPUARM) - #define limit_min_max_t int16_t - #define LIMIT_MAX(lim) (GV_IS_GV_VALUE(lim->max+1000, 0, 1250) ? GET_GVAR(lim->max+1000, 0, 125, s_perout_flight_phase)*10 : lim->max+1000) - #define LIMIT_MIN(lim) (GV_IS_GV_VALUE(lim->min-1000, -1250, 0) ? GET_GVAR(lim->min-1000, -125, 0, s_perout_flight_phase)*10 : lim->min-1000) - #define LIMIT_OFS(lim) (GV_IS_GV_VALUE(lim->offset, -1000, 1000) ? GET_GVAR(lim->offset, -100, 100, s_perout_flight_phase)*10 : lim->offset) - #define LIMIT_MAX_RESX(lim) calc1000toRESX(LIMIT_MAX(lim)) - #define LIMIT_MIN_RESX(lim) calc1000toRESX(LIMIT_MIN(lim)) - #define LIMIT_OFS_RESX(lim) calc1000toRESX(LIMIT_OFS(lim)) -#else - #define limit_min_max_t int8_t - #define LIMIT_MAX(lim) (lim->max+100) - #define LIMIT_MIN(lim) (lim->min-100) - #define LIMIT_OFS(lim) (lim->offset) - #define LIMIT_MAX_RESX(lim) calc100toRESX(LIMIT_MAX(lim)) - #define LIMIT_MIN_RESX(lim) calc100toRESX(LIMIT_MIN(lim)) - #define LIMIT_OFS_RESX(lim) calc1000toRESX(LIMIT_OFS(lim)) -#endif - -PACK(typedef struct t_LimitData { - limit_min_max_t min; - limit_min_max_t max; - int8_t ppmCenter; - int16_t offset:14; - uint16_t symetrical:1; - uint16_t revert:1; - - LIMITDATA_EXTRA - -}) LimitData; - -#define TRIM_OFF (1) -#define TRIM_ON (0) -#define TRIM_RUD (-1) -#define TRIM_ELE (-2) -#define TRIM_THR (-3) -#define TRIM_AIL (-4) - -#define MLTPX_ADD 0 -#define MLTPX_MUL 1 -#define MLTPX_REP 2 - -#if defined(CPUARM) -#define DELAY_STEP 10 -#define SLOW_STEP 10 -#define DELAY_MAX (25*DELAY_STEP) /* 25 seconds */ -#define SLOW_MAX (25*SLOW_STEP) /* 25 seconds */ -#if defined(PCBTARANIS) -PACK(typedef struct t_MixData { - uint8_t destCh; - uint16_t phases; - uint8_t mltpx; // multiplex method: 0 means +=, 1 means *=, 2 means := - int16_t weight; - int8_t swtch; - CurveRef curve; - uint8_t mixWarn:4; // mixer warning - uint8_t srcVariant:4; - uint8_t delayUp; - uint8_t delayDown; - uint8_t speedUp; - uint8_t speedDown; - uint8_t srcRaw; - int16_t offset; - char name[LEN_EXPOMIX_NAME]; - uint8_t spare; -}) MixData; -#else -PACK(typedef struct t_MixData { - uint8_t destCh; - uint16_t phases; - uint8_t curveMode:1; - uint8_t noExpo:1; - int8_t carryTrim:3; - uint8_t mltpx:2; // multiplex method: 0 means +=, 1 means *=, 2 means := - uint8_t spare:1; - int16_t weight; - int8_t swtch; - int8_t curveParam; - uint8_t mixWarn:4; // mixer warning - uint8_t srcVariant:4; - uint8_t delayUp; - uint8_t delayDown; - uint8_t speedUp; - uint8_t speedDown; - uint8_t srcRaw; - int16_t offset; - char name[LEN_EXPOMIX_NAME]; -}) MixData; -#endif -#define MD_WEIGHT(md) (md->weight) -#define MD_WEIGHT_TO_UNION(md, var) var.word = md->weight -#define MD_UNION_TO_WEIGHT(var, md) md->weight = var.word -// #define MD_SETWEIGHT(md, val) md->weight = val - -PACK( union u_int8int16_t { - struct { - int8_t lo; - uint8_t hi; - } bytes_t; - int16_t word; -}); - -#define MD_OFFSET(md) (md->offset) -#define MD_OFFSET_TO_UNION(md, var) var.word = md->offset -#define MD_UNION_TO_OFFSET(var, md) md->offset = var.word -// #define MD_SETOFFSET(md, val) md->offset = val - -#else -#define DELAY_STEP 2 -#define SLOW_STEP 2 -#define DELAY_MAX 15 /* 7.5 seconds */ -#define SLOW_MAX 15 /* 7.5 seconds */ - -#if defined(CPUM2560) || defined(CPUM2561) -PACK(typedef struct t_MixData { - uint8_t destCh:4; // 0, 1..NUM_CHNOUT - uint8_t curveMode:1; // O=curve, 1=differential - uint8_t noExpo:1; - uint8_t weightMode:1; - uint8_t offsetMode:1; - uint8_t srcRaw; - int8_t weight; - int8_t swtch; - uint8_t phases; - uint8_t mltpx:2; // multiplex method: 0 means +=, 1 means *=, 2 means := - int8_t carryTrim:3; - uint8_t mixWarn:2; // mixer warning - uint8_t spare:1; - uint8_t delayUp:4; - uint8_t delayDown:4; - uint8_t speedUp:4; - uint8_t speedDown:4; - int8_t curveParam; - int8_t offset; -}) MixData; -#else -PACK(typedef struct t_MixData { - uint8_t destCh:4; // 0, 1..NUM_CHNOUT - uint8_t curveMode:1; // O=curve, 1=differential - uint8_t noExpo:1; - uint8_t weightMode:1; - uint8_t offsetMode:1; - int8_t weight; - int8_t swtch:6; - uint8_t mltpx:2; // multiplex method: 0 means +=, 1 means *=, 2 means := - uint8_t phases:5; - int8_t carryTrim:3; - uint8_t srcRaw:6; - uint8_t mixWarn:2; // mixer warning - uint8_t delayUp:4; - uint8_t delayDown:4; - uint8_t speedUp:4; - uint8_t speedDown:4; - int8_t curveParam; - int8_t offset; -}) MixData; -#endif -PACK( union u_gvarint_t { - struct { - int8_t lo; - uint8_t hi; - } bytes_t; - int16_t word; - - u_gvarint_t(int8_t l, uint8_t h) {bytes_t.lo=l; bytes_t.hi=h?255:0;} // hi bit is negativ sign - -private: - // prevent unwanted constructors, also saves program - u_gvarint_t() {} - u_gvarint_t(const u_gvarint_t&) {} -}); -#define MD_WEIGHT(md) (u_gvarint_t(md->weight,md->weightMode).word) - -PACK( union u_int8int16_t { - struct { - int8_t lo; - uint8_t hi; - } bytes_t; - int16_t word; -}); - -#define MD_WEIGHT_TO_UNION(md, var) var.bytes_t.lo=md->weight; var.bytes_t.hi=md->weightMode?255:0 -#define MD_UNION_TO_WEIGHT(var, md) md->weight=var.bytes_t.lo; if (var.word<0) md->weightMode=1; else md->weightMode=0 -// #define MD_SETWEIGHT(md, val) md->weight=val; if (val<0) md->weightMode=1; else md->weightMode=0 - -#define MD_OFFSET(md) (u_gvarint_t(md->offset,md->offsetMode).word) -#define MD_OFFSET_TO_UNION(md, var) var.bytes_t.lo=md->offset; var.bytes_t.hi=md->offsetMode?255:0 -#define MD_UNION_TO_OFFSET(var, md) md->offset=var.bytes_t.lo; if (var.word<0) md->offsetMode=1; else md->offsetMode=0 /* set negative sign */ -// #define MD_SETOFFSET(md, val) md->offset=val; if (val<0) md->offsetMode=1; else md->offsetMode=0 - -#endif - -#if defined(CPUARM) -#define MAX_CSW_DURATION 120 /*60s*/ -#define MAX_CSW_DELAY 120 /*60s*/ -#define MAX_CSW_ANDSW MAX_SWITCH -typedef int16_t csw_telemetry_value_t; -PACK(typedef struct t_CustomSwData { // Custom Switches data - int16_t v1; - int16_t v2; - uint8_t func; - uint8_t delay; - uint8_t duration; - int8_t andsw; -}) CustomSwData; -#else -typedef uint8_t csw_telemetry_value_t; -#define MAX_CSW_ANDSW 15 -PACK(typedef struct t_CustomSwData { // Custom Switches data - int8_t v1; //input - int8_t v2; //offset - uint8_t func:4; - uint8_t andsw:4; -}) CustomSwData; -#endif - -enum Functions { -#if defined(CPUARM) - FUNC_SAFETY_CH1, - FUNC_SAFETY_CH16=FUNC_SAFETY_CH1+15, -#else - FUNC_SAFETY_GROUP1, - FUNC_SAFETY_GROUP2, - FUNC_SAFETY_GROUP3, - FUNC_SAFETY_GROUP4, -#endif - FUNC_TRAINER, - FUNC_TRAINER_RUD, - FUNC_TRAINER_ELE, - FUNC_TRAINER_THR, - FUNC_TRAINER_AIL, - FUNC_INSTANT_TRIM, - FUNC_PLAY_SOUND, -#if !defined(PCBTARANIS) - FUNC_HAPTIC, -#endif - FUNC_RESET, - FUNC_VARIO, - FUNC_PLAY_TRACK, -#if !defined(CPUARM) - FUNC_PLAY_BOTH, -#endif - FUNC_PLAY_VALUE, -#if !defined(PCBSTD) - FUNC_LOGS, -#endif -#if defined(CPUARM) - FUNC_VOLUME, -#endif - FUNC_BACKLIGHT, -#if defined(CPUARM) - FUNC_BACKGND_MUSIC, - FUNC_BACKGND_MUSIC_PAUSE, -#endif -#if defined(GVARS) - FUNC_ADJUST_GV1, - FUNC_ADJUST_GVLAST = (FUNC_ADJUST_GV1 + (MAX_GVARS-1)), -#endif -#if defined(DEBUG) - FUNC_TEST, // should remain the last before MAX as not added in companion9x -#endif - FUNC_MAX -}; - -#if defined(GVARS) - #define IS_ADJUST_GV_FUNCTION(sd) (CFN_FUNC(sd) >= FUNC_ADJUST_GV1 && CFN_FUNC(sd) <= FUNC_ADJUST_GVLAST) -#else - #define IS_ADJUST_GV_FUNCTION(sd) (0) -#endif - -#if defined(VOICE) - #define HAS_REPEAT_PARAM(sd) (CFN_FUNC(sd) == FUNC_PLAY_SOUND || (CFN_FUNC(sd) >= FUNC_PLAY_TRACK && CFN_FUNC(sd) <= FUNC_PLAY_VALUE)) -#else - #define HAS_REPEAT_PARAM(sd) (CFN_FUNC(sd) == FUNC_PLAY_SOUND) -#endif - -enum ResetFunctionParam { - FUNC_RESET_TIMER1, - FUNC_RESET_TIMER2, - FUNC_RESET_ALL, -#if defined(FRSKY) - FUNC_RESET_TELEMETRY, -#endif -#if ROTARY_ENCODERS > 0 - FUNC_RESET_ROTENC1, -#endif -#if ROTARY_ENCODERS > 1 - FUNC_RESET_ROTENC2, -#endif - FUNC_RESET_PARAMS_COUNT, - FUNC_RESET_PARAM_LAST = FUNC_RESET_PARAMS_COUNT-1 -}; - -enum AdjustGvarFunctionParam { - FUNC_ADJUST_GVAR_CONSTANT, - FUNC_ADJUST_GVAR_SOURCE, - FUNC_ADJUST_GVAR_GVAR, - FUNC_ADJUST_GVAR_INC, -}; - -#if defined(CPUARM) -#if defined(PCBTARANIS) - #define LEN_CFN_NAME 10 -#else - #define LEN_CFN_NAME 6 -#endif -PACK(typedef struct t_CustomFnData { // Function Switches data - int8_t swtch; - uint8_t func; - PACK(union { - char name[LEN_CFN_NAME]; - struct { - int16_t val; - int16_t ext1; - int16_t ext2; - } composite; - }) param; - uint8_t mode:2; - uint8_t active:6; -}) CustomFnData; -#define CFN_EMPTY(p) (!(p)->swtch) -#define CFN_FUNC(p) ((p)->func) -#define CFN_ACTIVE(p) ((p)->active) -#define CFN_CH_NUMBER(p) (CFN_FUNC(p)) -#define CFN_PLAY_REPEAT(p) ((p)->active) -#define CFN_PLAY_REPEAT_MUL 1 -#define CFN_PLAY_REPEAT_NOSTART 0x3F -#define CFN_GVAR_MODE(p) ((p)->mode) -#define CFN_PARAM(p) ((p)->param.composite.val) -#define CFN_RESET(p) (p->active = 0, memset(&(p)->param, 0, sizeof((p)->param))) -#else -PACK(typedef struct t_CustomFnData { - int8_t swtch; // input - union { - struct { - uint8_t param:3; - uint8_t func:5; - } func_param; - - struct { - uint8_t active:1; - uint8_t param:2; - uint8_t func:5; - } func_param_enable; - - struct { - uint8_t active:1; - uint8_t func:7; - } func_safety; - } internal; - uint8_t param; -}) CustomFnData; -#define CFN_FUNC(p) ((p)->internal.func_param.func) -#define CFN_ACTIVE(p) ((p)->internal.func_param_enable.active) -#define CFN_CH_NUMBER(p) ((p)->internal.func_safety.func) -#define CFN_PLAY_REPEAT(p) ((p)->internal.func_param.param) -#define CFN_PLAY_REPEAT_MUL 10 -#define CFN_GVAR_MODE(p) ((p)->internal.func_param_enable.param) -#define CFN_PARAM(p) ((p)->param) -#define CFN_RESET(p) ((p)->internal.func_param_enable.active = 0, CFN_PARAM(p) = 0) -#endif - -enum TelemetryUnit { - UNIT_VOLTS, - UNIT_AMPS, - UNIT_METERS_PER_SECOND, - UNIT_RAW, - UNIT_KMH, - UNIT_METERS, - UNIT_DEGREES, - UNIT_PERCENT, - UNIT_MILLIAMPS, - UNIT_A1A2_MAX = UNIT_MILLIAMPS, - UNIT_MAH, - UNIT_WATTS, - UNIT_DBM, - UNIT_FEET, - UNIT_KTS, - UNIT_HOURS, - UNIT_MINUTES, - UNIT_SECONDS, - UNIT_RPMS, - UNIT_G, -}; - -#if defined(CPUARM) -PACK(typedef struct t_FrSkyChannelData { - uint8_t ratio; // 0.0 means not used, 0.1V steps EG. 6.6 Volts = 66. 25.1V = 251, etc. - int16_t offset:12; - uint16_t type:4; // channel unit (0=volts, ...) - uint8_t alarms_value[2]; // 0.1V steps EG. 6.6 Volts = 66. 25.1V = 251, etc. - uint8_t alarms_level:4; - uint8_t alarms_greater:2; // 0=LT(<), 1=GT(>) - uint8_t spare:2; - uint8_t multiplier; // 0=no multiplier, 1=*2 multiplier -}) FrSkyChannelData; -#else -PACK(typedef struct t_FrSkyChannelData { - uint8_t ratio; // 0.0 means not used, 0.1V steps EG. 6.6 Volts = 66. 25.1V = 251, etc. - int16_t offset:12; - uint16_t type:4; // channel unit (0=volts, ...) - uint8_t alarms_value[2]; // 0.1V steps EG. 6.6 Volts = 66. 25.1V = 251, etc. - uint8_t alarms_level:4; - uint8_t alarms_greater:2; // 0=LT(<), 1=GT(>) - uint8_t multiplier:2; // 0=no multiplier, 1=*2 multiplier -}) FrSkyChannelData; -#endif - -enum TelemetrySource { - TELEM_NONE, - TELEM_TX_VOLTAGE, - TELEM_TM1, - TELEM_TM2, - TELEM_RSSI_TX, - TELEM_RSSI_RX, - TELEM_A1, - TELEM_A2, - TELEM_ALT, - TELEM_RPM, - TELEM_FUEL, - TELEM_T1, - TELEM_T2, - TELEM_SPEED, - TELEM_DIST, - TELEM_GPSALT, - TELEM_CELL, - TELEM_CELLS_SUM, - TELEM_VFAS, - TELEM_CURRENT, - TELEM_CONSUMPTION, - TELEM_POWER, - TELEM_ACCx, - TELEM_ACCy, - TELEM_ACCz, - TELEM_HDG, - TELEM_VSPD, - TELEM_MIN_A1, - TELEM_MIN_A2, - TELEM_MIN_ALT, - TELEM_MAX_ALT, - TELEM_MAX_RPM, - TELEM_MAX_T1, - TELEM_MAX_T2, - TELEM_MAX_SPEED, - TELEM_MAX_DIST, - // TODO TELEM_MIN_CELL, - // TODO TELEM_MIN_VFAS, - TELEM_MAX_CURRENT, - TELEM_MAX_POWER, - TELEM_ACC, - TELEM_GPS_TIME, - TELEM_CSW_MAX = TELEM_POWER, - TELEM_NOUSR_MAX = TELEM_A2, -#if defined(FRSKY) - TELEM_DISPLAY_MAX = TELEM_MAX_POWER, -#else - TELEM_DISPLAY_MAX = TELEM_TM2, // because used also in PlayValue -#endif - TELEM_STATUS_MAX = TELEM_GPS_TIME, -#if defined(FRSKY_SPORT) - TELEM_SWR = TELEM_RSSI_TX, - TELEM_FIRST_STREAMED_VALUE = TELEM_RSSI_RX, -#else - TELEM_FIRST_STREAMED_VALUE = TELEM_RSSI_TX, -#endif -}; - -enum VarioSource { -#if !defined(FRSKY_SPORT) - VARIO_SOURCE_ALTI, - VARIO_SOURCE_ALTI_PLUS, -#endif - VARIO_SOURCE_VARIO, - VARIO_SOURCE_A1, - VARIO_SOURCE_A2, - VARIO_SOURCE_LAST = VARIO_SOURCE_A2 -}; - -#if defined(FRSKY_HUB) - #define NUM_TELEMETRY TELEM_CSW_MAX -#elif defined(WS_HOW_HIGH) - #define NUM_TELEMETRY TELEM_ALT -#elif defined(FRSKY) - #define NUM_TELEMETRY TELEM_A2 -#elif defined(MAVLINK) - #define NUM_TELEMETRY 4 -#else - #define NUM_TELEMETRY TELEM_TM2 -#endif - -PACK(typedef struct t_FrSkyBarData { - uint8_t source; - uint8_t barMin; // minimum for bar display - uint8_t barMax; // ditto for max display (would usually = ratio) -}) FrSkyBarData; - -#if defined(PCBTARANIS) - #define NUM_LINE_ITEMS 3 -#else - #define NUM_LINE_ITEMS 2 -#endif -PACK(typedef struct t_FrSkyLineData { - uint8_t sources[NUM_LINE_ITEMS]; -}) FrSkyLineData; - -typedef union t_FrSkyScreenData { - FrSkyBarData bars[4]; - FrSkyLineData lines[4]; -} FrSkyScreenData; - -enum FrskyUsrProtocols { - USR_PROTO_NONE, - USR_PROTO_FRSKY, - USR_PROTO_WS_HOW_HIGH, - USR_PROTO_LAST = USR_PROTO_WS_HOW_HIGH, -}; - -enum FrskySource { - FRSKY_SOURCE_NONE, - FRSKY_SOURCE_A1, - FRSKY_SOURCE_A2, - FRSKY_SOURCE_FAS, - FRSKY_SOURCE_CELLS, -}; - -#if defined(CPUARM) -#define MAX_FRSKY_SCREENS 3 -PACK(typedef struct t_FrSkyData { - FrSkyChannelData channels[2]; - uint8_t usrProto; // Protocol in FrSky user data, 0=None, 1=FrSky hub, 2=WS HowHigh, 3=Halcyon - uint8_t voltsSource:7; - uint8_t altitudeDisplayed:1; - uint8_t blades; // How many blades for RPMs, 0=2 blades, 1=3 blades - uint8_t currentSource; - uint8_t screensType; - FrSkyScreenData screens[MAX_FRSKY_SCREENS]; - uint8_t varioSource; - int8_t varioCenterMax; - int8_t varioCenterMin; - int8_t varioMin; - int8_t varioMax; - FrSkyRSSIAlarm rssiAlarms[2]; - uint16_t mAhPersistent:1; - uint16_t storedMah:15; - int8_t fasOffset; -}) FrSkyData; -#else -#define MAX_FRSKY_SCREENS 2 -PACK(typedef struct t_FrSkyData { - FrSkyChannelData channels[2]; - uint8_t usrProto:2; // Protocol in FrSky user data, 0=None, 1=FrSky hub, 2=WS HowHigh, 3=Halcyon - uint8_t blades:2; // How many blades for RPMs, 0=2 blades, 1=3 blades - uint8_t screensType:2; - uint8_t voltsSource:2; - int8_t varioMin:4; - int8_t varioMax:4; - FrSkyRSSIAlarm rssiAlarms[2]; - FrSkyScreenData screens[MAX_FRSKY_SCREENS]; - uint8_t varioSource:3; - int8_t varioCenterMin:5; - uint8_t currentSource:3; - int8_t varioCenterMax:5; - int8_t fasOffset; -}) FrSkyData; -#endif - -#if defined(MAVLINK) -PACK(typedef struct t_MavlinkData { - uint8_t rc_rssi_scale:4; - uint8_t pc_rssi_en:1; - uint8_t spare1:3; - uint8_t spare2[3]; -}) MavlinkData; -#endif - -PACK(typedef struct t_SwashRingData { // Swash Ring data - uint8_t invertELE:1; - uint8_t invertAIL:1; - uint8_t invertCOL:1; - uint8_t type:5; - uint8_t collectiveSource; - uint8_t value; -}) SwashRingData; - -#define TRIM_EXTENDED_MAX 500 -#define TRIM_EXTENDED_MIN (-TRIM_EXTENDED_MAX) -#define TRIM_MAX 125 -#define TRIM_MIN (-TRIM_MAX) - -#define ROTARY_ENCODER_MAX 1024 - -#if defined(PCBTARANIS) -#define NUM_ROTARY_ENCODERS 0 -#define NUM_ROTARY_ENCODERS_EXTRA 0 -#define ROTARY_ENCODER_ARRAY_EXTRA -#define ROTARY_ENCODER_ARRAY int16_t rotaryEncoders[1]; -#elif defined(PCBSKY9X) -#define NUM_ROTARY_ENCODERS_EXTRA 0 -#define NUM_ROTARY_ENCODERS 1 -#define ROTARY_ENCODER_ARRAY int16_t rotaryEncoders[1]; -#define ROTARY_ENCODER_ARRAY_EXTRA -#elif defined(PCBGRUVIN9X) && ROTARY_ENCODERS > 2 -#define NUM_ROTARY_ENCODERS_EXTRA 2 -#define NUM_ROTARY_ENCODERS (2+NUM_ROTARY_ENCODERS_EXTRA) -#define ROTARY_ENCODER_ARRAY int16_t rotaryEncoders[2]; -#define ROTARY_ENCODER_ARRAY_EXTRA int16_t rotaryEncodersExtra[MAX_PHASES][NUM_ROTARY_ENCODERS_EXTRA]; -#elif defined(CPUM2560) && ROTARY_ENCODERS <= 2 -#define NUM_ROTARY_ENCODERS_EXTRA 0 -#define NUM_ROTARY_ENCODERS 2 -#define ROTARY_ENCODER_ARRAY int16_t rotaryEncoders[2]; -#define ROTARY_ENCODER_ARRAY_EXTRA -#else -#define NUM_ROTARY_ENCODERS_EXTRA 0 -#define NUM_ROTARY_ENCODERS 0 -#define ROTARY_ENCODER_ARRAY -#define ROTARY_ENCODER_ARRAY_EXTRA -#endif - -#if defined(PCBSTD) - #define TRIMS_ARRAY int8_t trim[4]; int8_t trim_ext:8 - #define TRIMS_ARRAY_SIZE 5 -#else - #define TRIMS_ARRAY int16_t trim[4] - #define TRIMS_ARRAY_SIZE 8 -#endif - -#if defined(CPUARM) -PACK(typedef struct t_PhaseData { - TRIMS_ARRAY; - int8_t swtch; // swtch of phase[0] is not used - char name[LEN_FP_NAME]; - uint8_t fadeIn; - uint8_t fadeOut; - ROTARY_ENCODER_ARRAY; - PHASE_GVARS_DATA; -}) PhaseData; -#else -PACK(typedef struct t_PhaseData { - TRIMS_ARRAY; - int8_t swtch; // swtch of phase[0] is not used - char name[LEN_FP_NAME]; - uint8_t fadeIn:4; - uint8_t fadeOut:4; - ROTARY_ENCODER_ARRAY; - PHASE_GVARS_DATA; -}) PhaseData; -#endif - -enum SwitchSources { - SWSRC_NONE = 0, - - SWSRC_FIRST_SWITCH, - -#if defined(PCBTARANIS) - SWSRC_SA0 = SWSRC_FIRST_SWITCH, - SWSRC_SA1, - SWSRC_SA2, - SWSRC_SB0, - SWSRC_SB1, - SWSRC_SB2, - SWSRC_SC0, - SWSRC_SC1, - SWSRC_SC2, - SWSRC_SD0, - SWSRC_SD1, - SWSRC_SD2, - SWSRC_SE0, - SWSRC_SE1, - SWSRC_SE2, - SWSRC_SF0, - SWSRC_SF2, - SWSRC_SG0, - SWSRC_SG1, - SWSRC_SG2, - SWSRC_SH0, - SWSRC_SH2, -#else - SWSRC_ID0 = SWSRC_FIRST_SWITCH, - SWSRC_ID1, - SWSRC_ID2, -#if defined(EXTRA_3POS) - SWSRC_ID3, - SWSRC_ID4, - SWSRC_ID5, -#endif - SWSRC_THR, - SWSRC_RUD, - SWSRC_ELE, - SWSRC_AIL, - SWSRC_GEA, - SWSRC_TRN, -#endif - - SWSRC_FIRST_CSW, - SWSRC_SW1 = SWSRC_FIRST_CSW, - SWSRC_SW2, - SWSRC_SW3, - SWSRC_SW4, - SWSRC_SW5, - SWSRC_SW6, - SWSRC_SW7, - SWSRC_SW8, - SWSRC_SW9, - SWSRC_SWA, - SWSRC_SWB, - SWSRC_SWC, - SWSRC_LAST_CSW = SWSRC_SW1+NUM_CSW-1, - - SWSRC_ON, - - SWSRC_FIRST_MOMENT_SWITCH, - SWSRC_LAST_MOMENT_SWITCH = SWSRC_FIRST_MOMENT_SWITCH+SWSRC_ON-1, - -#if !defined(PCBSTD) - SWSRC_TRAINER_SHORT, - SWSRC_TRAINER_LONG, -#endif - -#if ROTARY_ENCODERS > 0 - SWSRC_FIRST_ROTENC_SWITCH, - SWSRC_LAST_ROTENC_SWITCH = SWSRC_FIRST_ROTENC_SWITCH+(2*ROTARY_ENCODERS)-1, -#endif - - SWSRC_COUNT, - SWSRC_FIRST = -SWSRC_LAST_MOMENT_SWITCH, - SWSRC_LAST = SWSRC_COUNT-1, - - SWSRC_OFF = -SWSRC_ON, - SWSRC_TRAINER = SWSRC_SW1-1, -}; - -enum MixSources { - MIXSRC_NONE, - -#if defined(PCBTARANIS) - MIXSRC_FIRST_INPUT, - MIXSRC_LAST_INPUT = MIXSRC_FIRST_INPUT+MAX_INPUTS-1, - - MIXSRC_FIRST_LUA, - MIXSRC_LAST_LUA = MIXSRC_FIRST_LUA+(MAX_SCRIPTS*MAX_SCRIPT_OUTPUTS)-1, -#endif - - MIXSRC_Rud, - MIXSRC_Ele, - MIXSRC_Thr, - MIXSRC_Ail, - - MIXSRC_FIRST_POT, -#if defined(PCBTARANIS) - MIXSRC_S1 = MIXSRC_FIRST_POT, - MIXSRC_S2, - MIXSRC_S3, - MIXSRC_S4, - MIXSRC_LAST_POT = MIXSRC_S4, -#else - MIXSRC_P1 = MIXSRC_FIRST_POT, - MIXSRC_P2, - #if defined(EXTRA_3POS) - MIXSRC_LAST_POT = MIXSRC_P2, - #else - MIXSRC_P3, - MIXSRC_LAST_POT = MIXSRC_P3, - #endif -#endif - -#if defined(PCBSKY9X) - MIXSRC_REa, - MIXSRC_LAST_ROTARY_ENCODER = MIXSRC_REa, -#elif defined(PCBGRUVIN9X) || defined(PCBMEGA2560) - MIXSRC_REa, - MIXSRC_REb, - #if ROTARY_ENCODERS > 2 - MIXSRC_REc, - MIXSRC_REd, - MIXSRC_LAST_ROTARY_ENCODER = MIXSRC_REd, - #else - MIXSRC_LAST_ROTARY_ENCODER = MIXSRC_REb, - #endif -#endif - - MIXSRC_MAX, - - MIXSRC_CYC1, - MIXSRC_CYC2, - MIXSRC_CYC3, - - MIXSRC_TrimRud, - MIXSRC_TrimEle, - MIXSRC_TrimThr, - MIXSRC_TrimAil, - - MIXSRC_FIRST_SWITCH, - -#if defined(PCBTARANIS) - MIXSRC_SA = MIXSRC_FIRST_SWITCH, - MIXSRC_SB, - MIXSRC_SC, - MIXSRC_SD, - MIXSRC_SE, - MIXSRC_SF, - MIXSRC_SG, - MIXSRC_SH, -#else - MIXSRC_3POS = MIXSRC_FIRST_SWITCH, - #if defined(EXTRA_3POS) - MIXSRC_3POS2, - #endif - MIXSRC_THR, - MIXSRC_RUD, - MIXSRC_ELE, - MIXSRC_AIL, - MIXSRC_GEA, - MIXSRC_TRN, -#endif - MIXSRC_FIRST_CSW, - MIXSRC_SW1 = MIXSRC_FIRST_CSW, - MIXSRC_SW9 = MIXSRC_SW1 + 8, - MIXSRC_SWA, - MIXSRC_SWB, - MIXSRC_SWC, - MIXSRC_LAST_CSW = MIXSRC_FIRST_CSW+NUM_CSW-1, - - MIXSRC_FIRST_PPM, - MIXSRC_LAST_PPM = MIXSRC_FIRST_PPM + 7, - - MIXSRC_FIRST_CH, - MIXSRC_CH1 = MIXSRC_FIRST_CH, - MIXSRC_CH2, - MIXSRC_CH3, - MIXSRC_CH4, - MIXSRC_CH5, - MIXSRC_CH6, - MIXSRC_CH7, - MIXSRC_CH8, - MIXSRC_CH9, - MIXSRC_CH10, - MIXSRC_CH11, - MIXSRC_CH12, - MIXSRC_CH13, - MIXSRC_CH14, - MIXSRC_CH15, - MIXSRC_CH16, - MIXSRC_LAST_CH = MIXSRC_CH1+NUM_CHNOUT-1, - - MIXSRC_GVAR1, - MIXSRC_LAST_GVAR = MIXSRC_GVAR1+MAX_GVARS-1, - - MIXSRC_FIRST_TELEM, - MIXSRC_LAST_TELEM = MIXSRC_FIRST_TELEM+NUM_TELEMETRY-1 -}; - -#define MIXSRC_FIRST (MIXSRC_NONE+1) -#define MIXSRC_LAST MIXSRC_LAST_CH -#define INPUTSRC_FIRST MIXSRC_Rud -#define INPUTSRC_LAST MIXSRC_LAST_TELEM - -#define MIN_POINTS 3 -#define MAX_POINTS 17 - -#define TMRMODE_NONE 0 -#define TMRMODE_ABS 1 -#define TMRMODE_THR 2 -#define TMRMODE_THR_REL 3 -#define TMRMODE_THR_TRG 4 - -#define COUNTDOWN_SILENT 0 -#define COUNTDOWN_BEEPS 1 -#define COUNTDOWN_VOICE 2 - -#if defined(CPUARM) || defined(CPUM2560) -PACK(typedef struct t_TimerData { - int8_t mode; // timer trigger source -> off, abs, stk, stk%, sw/!sw, !m_sw/!m_sw - uint16_t start; - uint8_t countdownBeep:2; - uint8_t minuteBeep:1; - uint8_t persistent:1; - uint8_t spare:4; - uint16_t value; -}) TimerData; -#else -PACK(typedef struct t_TimerData { - int8_t mode; // timer trigger source -> off, abs, stk, stk%, sw/!sw, !m_sw/!m_sw - uint16_t start:12; - uint16_t countdownBeep:1; - uint16_t minuteBeep:1; - uint16_t spare:2; -}) TimerData; -#endif - -enum Protocols { - PROTO_PPM, -#if !defined(CPUARM) - PROTO_PPM16, - PROTO_PPMSIM, -#endif -#if defined(PXX) || defined(DSM2) || defined(IRPROTOS) - PROTO_PXX, -#endif -#if defined(DSM2) || defined(IRPROTOS) - PROTO_DSM2_LP45, - PROTO_DSM2_DSM2, - PROTO_DSM2_DSMX, -#endif -#if defined(IRPROTOS) - // we will need 4 bytes for proto :( - PROTO_SILV, - PROTO_TRAC09, - PROTO_PICZ, - PROTO_SWIFT, -#endif - PROTO_MAX, - PROTO_NONE -}; - -enum RFProtocols { - RF_PROTO_OFF = -1, - RF_PROTO_X16, - RF_PROTO_D8, - RF_PROTO_LR12, - RF_PROTO_LAST = RF_PROTO_LR12 -}; - -enum DSM2Protocols { - DSM2_PROTO_LP45, - DSM2_PROTO_DSM2, - DSM2_PROTO_DSMX, -}; - -enum ModuleTypes { - MODULE_TYPE_NONE = 0, - MODULE_TYPE_PPM, - MODULE_TYPE_XJT, -#if defined(DSM2) - MODULE_TYPE_DSM2, -#endif - MODULE_TYPE_COUNT -}; - -enum FailsafeModes { - FAILSAFE_HOLD, - FAILSAFE_CUSTOM, - FAILSAFE_NOPULSES, - FAILSAFE_LAST = FAILSAFE_NOPULSES -}; - -#if defined(FRSKY) || !defined(PCBSTD) - #define TELEMETRY_DATA FrSkyData frsky; -#elif defined(MAVLINK) - #define TELEMETRY_DATA MavlinkData mavlink; -#else - #define TELEMETRY_DATA -#endif - -#if defined(CPUARM) || defined(PCBGRUVIN9X) || defined(PCBMEGA2560) - #define BeepANACenter uint16_t -#else - #define BeepANACenter uint8_t -#endif - -PACK(typedef struct t_ModelHeader { - char name[LEN_MODEL_NAME]; // must be first for eeLoadModelName - uint8_t modelId; - MODELDATA_BITMAP -}) ModelHeader; - -#if defined (CPUARM) - #define ARM_FIELD(x) x; - #define AVR_FIELD(x) -#else - #define ARM_FIELD(x) - #define AVR_FIELD(x) x; -#endif - -PACK(typedef struct t_ModelData { - ModelHeader header; - TimerData timers[MAX_TIMERS]; - uint8_t protocol:3; // not used on Taranis - uint8_t thrTrim:1; // Enable Throttle Trim - AVR_FIELD(int8_t ppmNCH:4) - ARM_FIELD(int8_t spare2:4) - uint8_t trimInc:3; // Trim Increments - uint8_t disableThrottleWarning:1; - ARM_FIELD(uint8_t displayText:1) - AVR_FIELD(uint8_t pulsePol:1) - uint8_t extendedLimits:1; - uint8_t extendedTrims:1; - uint8_t throttleReversed:1; - AVR_FIELD(int8_t ppmDelay) - BeepANACenter beepANACenter; // 1<<0->A1.. 1<<6->A7 - MixData mixData[MAX_MIXERS]; - LimitData limitData[NUM_CHNOUT]; - ExpoData expoData[MAX_EXPOS]; - - CURVDATA curves[MAX_CURVES]; - int8_t points[NUM_POINTS]; - - CustomSwData customSw[NUM_CSW]; - CustomFnData funcSw[NUM_CFN]; - SwashRingData swashR; - PhaseData phaseData[MAX_PHASES]; - - AVR_FIELD(int8_t ppmFrameLength) // 0=22.5ms (10ms-30ms) 0.5ms increments - uint8_t thrTraceSrc; - - swstate_t switchWarningStates; - - MODEL_GVARS_DATA - - TELEMETRY_DATA - - ROTARY_ENCODER_ARRAY_EXTRA - - MODELDATA_EXTRA - -}) ModelData; - -extern EEGeneral g_eeGeneral; -extern ModelData g_model; - -#define TOTAL_EEPROM_USAGE (sizeof(ModelData)*MAX_MODELS + sizeof(EEGeneral)) - -#endif -/*eof*/ From 57ea7937d8c5083c92999c9bde379c6d197aa92b Mon Sep 17 00:00:00 2001 From: "Tim G. Foley" Date: Thu, 16 Jan 2014 20:27:54 -0500 Subject: [PATCH 155/308] Delete simu.cpp~ --- radio/src/simu.cpp~ | 425 -------------------------------------------- 1 file changed, 425 deletions(-) delete mode 100644 radio/src/simu.cpp~ diff --git a/radio/src/simu.cpp~ b/radio/src/simu.cpp~ deleted file mode 100644 index 37aad7040..000000000 --- a/radio/src/simu.cpp~ +++ /dev/null @@ -1,425 +0,0 @@ -/* - * Authors (alphabetical order) - * - Andre Bernet - * - Andreas Weitl - * - Bertrand Songis - * - Bryan J. Rentoul (Gruvin) - * - Cameron Weeks - * - Erez Raviv - * - Gabriel Birkus - * - Jean-Pierre Parisy - * - Karl Szmutny - * - Michael Blandford - * - Michal Hlavinka - * - Pat Mackenzie - * - Philip Moss - * - Rob Thomson - * - Romolo Manfredini - * - Thomas Husterer - * - * opentx is based on code named - * gruvin9x by Bryan J. Rentoul: http://code.google.com/p/gruvin9x/, - * er9x by Erez Raviv: http://code.google.com/p/er9x/, - * and the original (and ongoing) project by - * Thomas Husterer, th9x: http://code.google.com/p/th9x/ - * - * This program 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. - * - * This program 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. See the - * GNU General Public License for more details. - * - */ - -#include "fx.h" -#include "FXExpression.h" -#include "FXPNGImage.h" -#include -#include "fxkeys.h" -#include "opentx.h" -#include -#include - -#define W2 LCD_W*2 -#define H2 LCD_H*2 - -int g_snapshot_idx = 0; - -class Open9xSim: public FXMainWindow -{ - FXDECLARE(Open9xSim) -public: - Open9xSim(){}; - Open9xSim(FXApp* a); - long onKeypress(FXObject*,FXSelector,void*); - long onTimeout(FXObject*,FXSelector,void*); - void makeSnapshot(const FXDrawable* drawable); - void doEvents(); - void refreshDiplay(); - -private: - FXImage *bmp; - FXImageFrame *bmf; - bool firstTime; - -public: - FXSlider *sliders[8]; - FXKnob *knobs[NUM_POTS]; -}; -// Message Map -FXDEFMAP(Open9xSim) Open9xSimMap[]={ - - //________Message_Type_________ID_____________________Message_Handler_______ - FXMAPFUNC(SEL_TIMEOUT, 2, Open9xSim::onTimeout), - FXMAPFUNC(SEL_KEYPRESS, 0, Open9xSim::onKeypress), - }; - -FXIMPLEMENT(Open9xSim,FXMainWindow,Open9xSimMap,ARRAYNUMBER(Open9xSimMap)) - -Open9xSim::Open9xSim(FXApp* a) -:FXMainWindow(a,"OpenTXSimu",NULL,NULL,DECOR_ALL,20,90,0,0) -{ - firstTime=true; - for(int i=0; i<(LCD_W*LCD_H/8); i++) displayBuf[i]=0;//rand(); - bmp = new FXPPMImage(getApp(),NULL,IMAGE_OWNED|IMAGE_KEEP|IMAGE_SHMI|IMAGE_SHMP, W2, H2); - - FXHorizontalFrame *hf11=new FXHorizontalFrame(this,LAYOUT_CENTER_X); - FXHorizontalFrame *hf1=new FXHorizontalFrame(this,LAYOUT_FILL_X); - - //rh lv rv lh - for(int i=0; i<4; i++){ - switch(i) - { -#define L LAYOUT_FIX_WIDTH|LAYOUT_FIX_HEIGHT|LAYOUT_FIX_X|LAYOUT_FIX_Y -#undef X0 -#define X0 10 -#define Y0 10 - case 0: - sliders[i]=new FXSlider(hf1,NULL,0,L|SLIDER_HORIZONTAL,X0+0,Y0+100,100,20); - break; - case 1: - sliders[i]=new FXSlider(hf1,NULL,0,L|SLIDER_VERTICAL,X0+100,Y0+0,20,100); - break; - case 2: - sliders[i]=new FXSlider(hf1,NULL,0,L|SLIDER_VERTICAL,X0+120,Y0+0,20,100); - break; - case 3: - sliders[i]=new FXSlider(hf1,NULL,0,L|SLIDER_HORIZONTAL,X0+140,Y0+100,100,20); - break; - default:; - } - sliders[i]->setRange(-1024, 1024); - sliders[i]->setTickDelta(7); - sliders[i]->setValue(0); - } - - for(int i=0; isetRange(-1024, 1024); - knobs[i]->setValue(0); - } - - bmf = new FXImageFrame(this,bmp); - - getApp()->addTimeout(this,2,100); -} - -void Open9xSim::makeSnapshot(const FXDrawable* drawable) -{ - // Construct and create an FXImage object - FXPNGImage snapshot(getApp(), NULL, 0, drawable->getWidth(), drawable->getHeight()); - snapshot.create(); - - // Create a window device context and lock it onto the image - FXDCWindow dc(&snapshot); - - // Draw from the widget to this - dc.drawArea(drawable, 0, 0, drawable->getWidth(), drawable->getHeight(), 0, 0); - - // Release lock - dc.end(); - - // Grab pixels from server side back to client side - snapshot.restore(); - - // Save recovered pixels to a file - FXFileStream stream; - char buf[100]; - - do { - stream.close(); - sprintf(buf,"snapshot_%02d.png", ++g_snapshot_idx); - } while (stream.open(buf, FXStreamLoad)); - - if (stream.open(buf, FXStreamSave)) { - snapshot.savePixels(stream); - stream.close(); - printf("Snapshot written: %s\n", buf); - } - else { - printf("Cannot create snapshot %s\n", buf); - } -} -void Open9xSim::doEvents() -{ - getApp()->runOneEvent(false); -} - -long Open9xSim::onKeypress(FXObject*,FXSelector,void*v) -{ - FXEvent *evt=(FXEvent*)v; - // printf("keypress %x\n", evt->code); - if (evt->code=='s'){ - makeSnapshot(bmf); - } - return 0; -} - -long Open9xSim::onTimeout(FXObject*,FXSelector,void*) -{ - if(hasFocus()) { - static int keys1[]={ -#if defined(PCBTARANIS) - KEY_Page_Up, KEY_MENU, - KEY_Page_Down, KEY_PAGE, - KEY_Return, KEY_ENTER, - KEY_BackSpace, KEY_EXIT, - KEY_Up, KEY_PLUS, - KEY_Down, KEY_MINUS, -#else - KEY_Return, KEY_MENU, - KEY_BackSpace, KEY_EXIT, - KEY_Right, KEY_RIGHT, - KEY_Left, KEY_LEFT, - KEY_Up, KEY_UP, - KEY_Down, KEY_DOWN, -#endif -#if defined(ROTARY_ENCODER_NAVIGATION) - KEY_F, BTN_REa, -#endif - }; - -#if defined(PCBSKY9X) - Coproc_temp = 23; - Coproc_maxtemp = 28; -#endif - -#if defined(PCBSKY9X) - temperature = 31; - maxTemperature = 42; -#endif - - for (unsigned int i=0; igetKeyState(keys1[i])); - } - -#ifdef __APPLE__ - // gruvin: Can't use Function keys on the Mac -- too many other app conflicts. - // The ordering of these keys, Q/W,E/R,T/Y,U/I matches the on screen - // order of trim sliders - static FXuint trimKeys[] = { KEY_E, KEY_R, KEY_U, KEY_I, KEY_R, KEY_E, KEY_Y, KEY_T, KEY_Q, KEY_W }; -#else - static FXuint trimKeys[] = { KEY_F1, KEY_F2, KEY_F3, KEY_F4, KEY_F5, KEY_F6, KEY_F7, KEY_F8 }; -#endif - - for (unsigned i=0; igetKeyState(trimKeys[i])); - } - -#if defined(ROTARY_ENCODER_NAVIGATION) - static bool rotencAction = false; - if (getApp()->getKeyState(KEY_G)) { - if (!rotencAction) g_rotenc[0] += ROTARY_ENCODER_GRANULARITY; - rotencAction = true; - } - else if (getApp()->getKeyState(KEY_D)) { - if (!rotencAction) g_rotenc[0] -= ROTARY_ENCODER_GRANULARITY; - rotencAction = true; - } - else { - rotencAction = false; - } -#endif - -#define SWITCH_KEY(key, swtch, states) \ - static bool state##key = 0; \ - static int8_t state_##swtch = 2; \ - static int8_t inc_##swtch = 1; \ - if (getApp()->getKeyState(KEY_##key)) { \ - if (!state##key) { \ - state_##swtch = (state_##swtch+inc_##swtch); \ - if (state_##swtch == 1+states) inc_##swtch = -1; \ - else if (state_##swtch == 2) inc_##swtch = 1; \ - state##key = true; \ - } \ - } \ - else { \ - state##key = false; \ - } \ - simuSetSwitch(swtch, state_##swtch-states); - -#if defined(PCBTARANIS) - SWITCH_KEY(A, 0, 3); - SWITCH_KEY(B, 1, 3); - SWITCH_KEY(C, 2, 3); - SWITCH_KEY(D, 3, 3); - SWITCH_KEY(E, 4, 3); - SWITCH_KEY(F, 5, 2); - SWITCH_KEY(G, 6, 3); - SWITCH_KEY(H, 7, 2); -#else - SWITCH_KEY(1, 0, 2); - SWITCH_KEY(2, 1, 2); - SWITCH_KEY(3, 2, 2); - SWITCH_KEY(4, 3, 3); - SWITCH_KEY(5, 4, 2); - SWITCH_KEY(6, 5, 2); - SWITCH_KEY(7, 6, 2); -#endif - } - - per10ms(); - refreshDiplay(); - getApp()->addTimeout(this,2,5); - return 0; -} - -#if defined(PCBTARANIS) -#define BL_COLOR FXRGB(47,123,227) -#else -#define BL_COLOR FXRGB(150,200,152) -#endif - -void Open9xSim::refreshDiplay() -{ - if (lcd_refresh) { - lcd_refresh = false; - FXColor offColor = IS_BACKLIGHT_ON() ? BL_COLOR : FXRGB(200,200,200); -#if !defined(PCBTARANIS) - FXColor onColor = FXRGB(0,0,0); -#endif - for (int x=0;xsetPixel(2*x, 2*y, color); - bmp->setPixel(2*x+1, 2*y, color); - bmp->setPixel(2*x, 2*y+1, color); - bmp->setPixel(2*x+1, 2*y+1, color); - } -#else - if (lcd_buf[x+(y/8)*LCD_W] & (1<<(y%8))) { - bmp->setPixel(2*x, 2*y, onColor); - bmp->setPixel(2*x+1, 2*y, onColor); - bmp->setPixel(2*x, 2*y+1, onColor); - bmp->setPixel(2*x+1, 2*y+1, onColor); - } -#endif - else { - bmp->setPixel(2*x, 2*y, offColor); - bmp->setPixel(2*x+1, 2*y, offColor); - bmp->setPixel(2*x, 2*y+1, offColor); - bmp->setPixel(2*x+1, 2*y+1, offColor); - } - } - } - - bmp->render(); - bmf->setImage(bmp); - } -} - -Open9xSim *th9xSim; -void doFxEvents() -{ - //puts("doFxEvents"); - th9xSim->getApp()->runOneEvent(false); - th9xSim->refreshDiplay(); -} - -int main(int argc,char **argv) -{ - // Each FOX GUI program needs one, and only one, application object. - // The application objects coordinates some common stuff shared between - // all the widgets; for example, it dispatches events, keeps track of - // all the windows, and so on. - // We pass the "name" of the application, and its "vendor", the name - // and vendor are used to search the registry database (which stores - // persistent information e.g. fonts and colors). - FXApp application("Open9xSim", "thus"); - - // Here we initialize the application. We pass the command line arguments - // because FOX may sometimes need to filter out some of the arguments. - // This opens up the display as well, and reads the registry database - // so that persistent settings are now available. - application.init(argc,argv); - - // This creates the main window. We pass in the title to be displayed - // above the window, and possibly some icons for when its iconified. - // The decorations determine stuff like the borders, close buttons, - // drag handles, and so on the Window Manager is supposed to give this - // window. - //FXMainWindow *main=new FXMainWindow(&application,"Hello",NULL,NULL,DECOR_ALL); - th9xSim = new Open9xSim(&application); - application.create(); - - // Pretty self-explanatory:- this shows the window, and places it in the - // middle of the screen. -#ifndef __APPLE__ - th9xSim->show(PLACEMENT_SCREEN); -#else - th9xSim->show(); // Otherwise the main window gets centred across my two monitors, split down the middle. -#endif - -#if defined(FRSKY) && !defined(FRSKY_SPORT) - frskyStreaming = 1; -#endif - - printf("Model size = %d\n", (int)sizeof(g_model)); - - StartEepromThread(argc >= 2 ? argv[1] : "eeprom.bin"); - StartMainThread(); - -#if defined(PCBTARANIS) - simuSetSwitch(0, 0); - simuSetSwitch(1, 0); -#endif - - return application.run(); -} - -uint16_t anaIn(uint8_t chan) -{ - if (chansliders[chan]->getValue(); - else if (chanknobs[chan-NUM_STICKS]->getValue(); -#if defined(PCBTARANIS) - else if (chan == 8) - return 1000; -#elif defined(PCBSKY9X) - else if (chan == 7) - return 1500; - else if (chan == 8) - return 100; -#elif defined(PCBGRUVIN9X) - else if (chan == 7) - return 150; -#else - else if (chan == 7) - return 1500; -#endif - else - return 0; -} From ce6e9aefc99aa025bc6ac4f66a276a87ff949a7b Mon Sep 17 00:00:00 2001 From: "Tim G. Foley" Date: Thu, 16 Jan 2014 20:28:49 -0500 Subject: [PATCH 156/308] Delete en.h~ --- radio/src/translations/en.h~ | 765 ----------------------------------- 1 file changed, 765 deletions(-) delete mode 100644 radio/src/translations/en.h~ diff --git a/radio/src/translations/en.h~ b/radio/src/translations/en.h~ deleted file mode 100644 index 62876daf9..000000000 --- a/radio/src/translations/en.h~ +++ /dev/null @@ -1,765 +0,0 @@ -/* - * Authors (alphabetical order) - * - Andre Bernet - * - Andreas Weitl - * - Bertrand Songis - * - Bryan J. Rentoul (Gruvin) - * - Cameron Weeks - * - Erez Raviv - * - Gabriel Birkus - * - Jean-Pierre Parisy - * - Karl Szmutny - * - Michael Blandford - * - Michal Hlavinka - * - Pat Mackenzie - * - Philip Moss - * - Rob Thomson - * - Romolo Manfredini - * - Thomas Husterer - * - * opentx is based on code named - * gruvin9x by Bryan J. Rentoul: http://code.google.com/p/gruvin9x/, - * er9x by Erez Raviv: http://code.google.com/p/er9x/, - * and the original (and ongoing) project by - * Thomas Husterer, th9x: http://code.google.com/p/th9x/ - * - * This program 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. - * - * This program 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. See the - * GNU General Public License for more details. - * - */ - -// NON ZERO TERMINATED STRINGS -#define LEN_OFFON "\003" -#define TR_OFFON "OFF""ON\0" - -#define LEN_MMMINV "\003" -#define TR_MMMINV "---""INV" - -#define LEN_NCHANNELS "\004" -#define TR_NCHANNELS "\0014CH\0016CH\0018CH10CH12CH14CH16CH" - -#define LEN_VBEEPMODE "\005" -#define TR_VBEEPMODE "Quiet""Alarm""NoKey""All " - -#define LEN_VBEEPLEN "\005" -#define TR_VBEEPLEN "0====""=0===""==0==""===0=""====0" - -#define LEN_VRENAVIG "\003" -#define TR_VRENAVIG "No REaREb" - -#define LEN_VBLMODE TR("\004", "\010") -#define TR_VBLMODE TR("OFF\0""Keys""Ctrl""Both""ON\0 ", "OFF\0 ""Keys\0 ""Controls""Both\0 ""ON\0 ") - -#define LEN_TRNMODE "\003" -#define TR_TRNMODE "OFF"" +="" :=" - -#define LEN_TRNCHN "\003" -#define TR_TRNCHN "CH1CH2CH3CH4" - -#define LEN_DATETIME "\005" -#define TR_DATETIME "DATE:""TIME:" - -#define LEN_VLCD "\006" -#define TR_VLCD "NormalOptrex" - -#define LEN_COUNTRYCODES TR("\002", "\007") -#define TR_COUNTRYCODES TR("US""JP""EU", "America""Japan\0 ""Europe\0") - -#define LEN_VTRIMINC TR("\006","\013") -#define TR_VTRIMINC TR("Expo ""ExFine""Fine ""Medium""Coarse","Exponential""Extra Fine ""Fine ""Medium ""Coarse ") - -#define LEN_VBEEPCOUNTDOWN "\006" -#define TR_VBEEPCOUNTDOWN "SilentBeeps\0Voice\0" - -#define LEN_RETA123 "\001" - -#if defined(PCBGRUVIN9X) - #if ROTARY_ENCODERS > 2 - #define TR_RETA123 "RETA123abcd" - #else - #define TR_RETA123 "RETA123ab" - #endif -#elif defined(PCBTARANIS) - #define TR_RETA123 "RETA12LR" -#else - #define TR_RETA123 "RETA123" -#endif - -#define LEN_VPROTOS "\006" - -#if defined(PXX) - #define TR_PXX "PXX\0 " -#elif defined(DSM2) || defined(IRPROTOS) - #define TR_PXX "[PXX]\0" -#else - #define TR_PXX -#endif - -#if defined(DSM2) - #define TR_DSM2 "LP45\0 ""DSM2\0 ""DSMX\0 " -#elif defined(IRPROTOS) - #define TR_DSM2 "[LP45]""[DSM2]""[DSMX]" -#else - #define TR_DSM2 -#endif - -#if defined(IRPROTOS) - #define TR_IRPROTOS "SILV TRAC09PICZ SWIFT\0" -#else - #define TR_IRPROTOS -#endif - -#if defined(CPUARM) - #define TR_XPPM -#else - #define TR_XPPM "PPM16\0""PPMsim" -#endif - -#define TR_VPROTOS "PPM\0 " TR_XPPM TR_PXX TR_DSM2 TR_IRPROTOS - -#define LEN_POSNEG "\003" -#define TR_POSNEG "POS""NEG" - -#define LEN_VCURVEFUNC "\003" -#define TR_VCURVEFUNC "---""x>0""x<0""|x|""f>0""f<0""|f|" - -#define LEN_VMLTPX "\010" -#define TR_VMLTPX "Add\0 ""Multiply""Replace\0" - -#define LEN_VMLTPX2 "\002" -#define TR_VMLTPX2 "+=""*="":=" - -#define LEN_VMIXTRIMS "\003" -#define TR_VMIXTRIMS "OFF""ON\0""Rud""Ele""Thr""Ail" - -#define LEN_VCSWFUNC "\005" -#define TR_VCSWFUNC "---\0 ""a{x\0 ""a>x\0 ""ax""|a|b\0 ""a" - -#define LEN_VTELPROTO "\007" -#define TR_VTELPROTO "None\0 ""Hub\0 ""WSHHigh" - -#define LEN_VOLTSRC "\003" -#define TR_VOLTSRC "---""A1\0""A2\0""FAS""Cel" - -#define LEN_VARIOSRC "\005" -#if defined(FRSKY_SPORT) - #define TR_VARIOSRC "Vario""A1\0 ""A2\0" -#else - #define TR_VARIOSRC "Alti\0""Alti+""Vario""A1\0 ""A2\0" -#endif - -#define LEN_VSCREEN "\004" -#define TR_VSCREEN "Nums""Bars" - -#define LEN_GPSFORMAT "\004" -#define TR_GPSFORMAT "HMS NMEA" - -#define LEN2_VTEMPLATES 13 -#define LEN_VTEMPLATES "\015" -#define TR_VTEMPLATES "Clear Mixes\0\0""Simple 4-CH \0""Sticky-T-Cut\0""V-Tail \0""Elevon\\Delta\0""eCCPM \0""Heli Setup \0""Servo Test \0" - -#define LEN_VSWASHTYPE "\004" -#define TR_VSWASHTYPE "---\0""120\0""120X""140\0""90\0" - -#define LEN_VKEYS "\005" -#define TR_VKEYS TR(" Menu"" Exit"" Down"" Up""Right"" Left", " Menu"" Exit""Enter"" Page"" Plus""Minus") - -#define LEN_VRENCODERS "\003" -#define TR_VRENCODERS "REa""REb" - -#define LEN_VSWITCHES "\003" -#define LEN_VSRCRAW "\004" - -#if defined(PCBTARANIS) - #define TR_POTS_VSRCRAW "S1\0 ""S2\0 ""LS\0 ""RS\0 " - #define TR_SW_VSRCRAW "SA\0 ""SB\0 ""SC\0 ""SD\0 ""SE\0 ""SF\0 ""SG\0 ""SH\0 " -#elif defined(EXTRA_3POS) - #define TR_POTS_VSRCRAW "P1\0 ""P2\0 " - #define TR_SW_VSRCRAW "3P1\0""3P2\0" - #define TR_9X_3POS_SWITCHES "ID0""ID1""ID2""ID3""ID4""ID5" -#else - #define TR_POTS_VSRCRAW "P1\0 ""P2\0 ""P3\0 " - #define TR_SW_VSRCRAW "3POS" - #define TR_9X_3POS_SWITCHES "ID0""ID1""ID2" -#endif - -#if defined(CPUARM) - #define TR_CUSTOMSW "CS1""CS2""CS3""CS4""CS5""CS6""CS7""CS8""CS9""CSA""CSB""CSC""CSD""CSE""CSF""CSG""CSH""CSI""CSJ""CSK""CSL""CSM""CSN""CSO""CSP""CSQ""CSR""CSS""CST""CSU""CSV""CSW" -#elif defined(PCBGRUVIN9X) || defined(CPUM2561) || defined(CPUM128) - #define TR_CUSTOMSW "CS1""CS2""CS3""CS4""CS5""CS6""CS7""CS8""CS9""CSA""CSB""CSC""CSD""CSE""CSF" -#else - #define TR_CUSTOMSW "CS1""CS2""CS3""CS4""CS5""CS6""CS7""CS8""CS9""CSA""CSB""CSC" -#endif - -#if defined(PCBTARANIS) - #define TR_VSWITCHES "SA\300""SA-""SA\301""SB\300""SB-""SB\301""SC\300""SC-""SC\301""SD\300""SD-""SD\301""SE\300""SE-""SE\301""SF\300""SF\301""SG\300""SG-""SG\301""SH\300""SH\301" TR_CUSTOMSW "One" -#else - #define TR_VSWITCHES TR_9X_3POS_SWITCHES "THR""RUD""ELE""AIL""GEA""TRN" TR_CUSTOMSW "One" -#endif - -#if defined(PCBSKY9X) - #define TR_ROTARY_ENCODERS_VSRCRAW "REnc" -#elif defined(PCBGRUVIN9X) && ROTARY_ENCODERS > 2 - #define TR_ROTARY_ENCODERS_VSRCRAW "REa ""REb ""REc ""REd " -#elif defined(PCBGRUVIN9X) && ROTARY_ENCODERS <= 2 - #define TR_ROTARY_ENCODERS_VSRCRAW "REa ""REb " -#else - #define TR_ROTARY_ENCODERS_VSRCRAW -#endif - -#if defined(HELI) - #define TR_CYC_VSRCRAW "CYC1""CYC2""CYC3" -#else - #define TR_CYC_VSRCRAW "[C1]""[C2]""[C3]" -#endif - -#define TR_VSRCRAW "---\0""Rud\0""Ele\0""Thr\0""Ail\0" TR_POTS_VSRCRAW TR_ROTARY_ENCODERS_VSRCRAW "MAX\0" TR_CYC_VSRCRAW "TrmR" "TrmE" "TrmT" "TrmA" TR_SW_VSRCRAW - -#define LEN_VTMRMODES "\003" -#define TR_VTMRMODES "OFF""ABS""THs""TH%""THt" - -#define LEN_VTRAINERMODES "\006" -#define TR_VTRAINERMODES "Master""Slave\0" - -#define LEN_VFAILSAFE "\011" -#define TR_VFAILSAFE "Hold\0 ""Custom\0 ""No pulses" - -#if defined(MAVLINK) - #define LEN_MAVLINK_BAUDS "\006" - #define TR_MAVLINK_BAUDS "4800 ""9600 ""14400 ""19200 ""38400 ""57600 ""76800 ""115200" - #define LEN_MAVLINK_AC_MODES "\011" - #define TR_MAVLINK_AC_MODES "Stabilize""Acro ""Alt Hold ""Auto ""Guided ""Loiter ""RTL ""Circle ""Pos Hold ""Land ""OF Loiter""Toy A ""Toy M ""INVALID " - #define LEN_MAVLINK_AP_MODES "\015" - #define TR_MAVLINK_AP_MODES "Manual ""Circle ""Stabilize ""Training ""Fly by Wire A""Fly by Wire A""Auto ""RTL ""Loiter ""Guided ""Initialising ""INVALID " -#endif - -// ZERO TERMINATED STRINGS -#define INDENT "\001" -#define LEN_INDENT 1 -#define INDENT_WIDTH (FW/2) - -#if defined(PCBTARANIS) - #define TR_ENTER "[ENTER]" -#else - #define TR_ENTER "[MENU]" -#endif - -#define TR_POPUPS TR_ENTER "\010[EXIT]" -#define OFS_EXIT sizeof(TR_ENTER) - -#define TR_MENUWHENDONE CENTER "\006" TR_ENTER " WHEN DONE" -#define TR_FREE "free" -#define TR_DELETEMODEL "DELETE MODEL" -#define TR_COPYINGMODEL "Copying model..." -#define TR_MOVINGMODEL "Moving model..." -#define TR_LOADINGMODEL "Loading model..." -#define TR_NAME "Name" -#define TR_MODELNAME "Model Name" -#define TR_PHASENAME "Mode Name" -#define TR_MIXNAME "Mix Name" -#if defined(PCBTARANIS) - #define TR_EXPONAME "Line Name" -#else - #define TR_EXPONAME "Expo Name" -#endif -#define TR_BITMAP "Model Image" -#define TR_TIMER TR("Timer","Timer ") -#define TR_ELIMITS TR("E.Limits","Extended Limits") -#define TR_ETRIMS TR("E.Trims","Extended Trims") -#define TR_TRIMINC "Trim Step" -#define TR_TTRACE TR("T-Source","Throttle Source") -#define TR_TTRIM TR("T-Trim","Throttle Trim") -#define TR_BEEPCTR TR("Ctr Beep","Center Beep") -#define TR_PROTO TR(INDENT "Proto", INDENT "Protocol") -#define TR_PPMFRAME TR("PPM frame", INDENT "PPM frame") -#define TR_MS "ms" -#define TR_SWITCH "Switch" -#define TR_TRIMS "Trims" -#define TR_FADEIN "Fade In" -#define TR_FADEOUT "Fade Out" -#define TR_DEFAULT "(default)" -#define TR_CHECKTRIMS CENTER "\006Check\012Trims" -#define OFS_CHECKTRIMS CENTER_OFS+(9*FW) -#define TR_SWASHTYPE "Swash Type" -#define TR_COLLECTIVE TR("Collective","Collective source") -#define TR_SWASHRING "Swash Ring" -#define TR_ELEDIRECTION TR("ELE Direction","Long. cyc. direction") -#define TR_AILDIRECTION TR("AIL Direction","Lateral cyc. direction") -#define TR_COLDIRECTION TR("PIT Direction","Coll. pitch direction") -#define TR_MODE INDENT"Mode" -#define TR_NOFREEEXPO "No free expo!" -#define TR_NOFREEMIXER "No free mixer!" -#define TR_INSERTMIX "INSERT MIX " -#define TR_EDITMIX "EDIT MIX " -#define TR_SOURCE INDENT"Source" -#define TR_WEIGHT "Weight" -#define TR_EXPO TR("Expo","Exponential") -#define TR_SIDE "Side" -#define TR_DIFFERENTIAL "Differ" -#define TR_OFFSET INDENT"Offset" -#define TR_TRIM "Trim" -#define TR_DREX "DRex" -#define TR_CURVE "Curve" -#define TR_FLMODE TR("Mode","Modes") -#define TR_MIXWARNING "Warning" -#define TR_OFF "OFF" -#define TR_MULTPX "Multpx" -#define TR_DELAYDOWN "Delay Dn" -#define TR_DELAYUP "Delay Up" -#define TR_SLOWDOWN "Slow Dn" -#define TR_SLOWUP "Slow Up" -#define TR_MIXER "MIXER" -#define TR_CV "CV" -#define TR_GV "GV" -#define TR_ACHANNEL "A\004channel" -#define TR_RANGE INDENT"Range" -#define TR_BAR "Bar" -#define TR_ALARM INDENT"Alarm" -#define TR_USRDATA "UsrData" -#define TR_BLADES INDENT"Blades" -#define TR_SCREEN "Screen " -#define TR_SOUND_LABEL "Sound" -#define TR_LENGTH INDENT"Length" -#define TR_SPKRPITCH INDENT"Pitch" -#define TR_HAPTIC_LABEL "Haptic" -#define TR_HAPTICSTRENGTH INDENT"Strength" -#define TR_CONTRAST "Contrast" -#define TR_ALARMS_LABEL "Alarms" -#define TR_BATTERY_RANGE TR("Battery range","Battery meter range") -#define TR_BATTERYWARNING INDENT"Battery Low" -#define TR_INACTIVITYALARM INDENT"Inactivity" -#define TR_MEMORYWARNING INDENT"Memory Low" -#define TR_ALARMWARNING INDENT"Sound Off" -#define TR_RENAVIG "RotEnc Navig" -#define TR_THROTTLEREVERSE TR("T-Reverse", "Throttle reverse") -#define TR_MINUTEBEEP TR(INDENT"Minute",INDENT"Minute call") -#define TR_BEEPCOUNTDOWN INDENT"Countdown" -#define TR_PERSISTENT TR(INDENT"Persist.",INDENT"Persistent") -#define TR_BACKLIGHT_LABEL "Backlight" -#define TR_BLDELAY INDENT"Duration" -#define TR_BLONBRIGHTNESS INDENT"ON Brightness" -#define TR_BLOFFBRIGHTNESS INDENT"OFF Brightness" -#define TR_SPLASHSCREEN "Splash screen" -#define TR_THROTTLEWARNING TR("T-Warning","Throttle Warning") -#define TR_SWITCHWARNING TR("S-Warning","Switch Warning") -#define TR_TIMEZONE TR("Time Zone","GPS Time zone") -#define TR_RXCHANNELORD TR("Rx Channel Ord","Default channel order") -#define TR_SLAVE "Slave" -#define TR_MODESRC "Mode\006% Source" -#define TR_MULTIPLIER "Multiplier" -#define TR_CAL "Cal" -#define TR_VTRIM "Trim- +" -#define TR_BG "BG:" -#define TR_MENUTOSTART CENTER "\006" TR_ENTER " TO START" -#define TR_SETMIDPOINT TR(CENTER "\003SET STICKS MIDPOINT",CENTER "\003CENTER STICKS/SLIDERS") -#define TR_MOVESTICKSPOTS CENTER "\006MOVE STICKS/POTS" -#define TR_RXBATT "Rx Batt:" -#define TR_TXnRX "Tx:\0Rx:" -#define OFS_RX 4 -#define TR_ACCEL "Acc:" -#define TR_NODATA CENTER "NO DATA" -#define TR_TM1TM2 "TM1\032TM2" -#define TR_THRTHP "THR\032TH%" -#define TR_TOT "TOT" -#define TR_TMR1LATMAXUS "Tmr1Lat max\006us" -#define STR_US (STR_TMR1LATMAXUS+12) -#define TR_TMR1LATMINUS "Tmr1Lat min\006us" -#define TR_TMR1JITTERUS "Tmr1 Jitter\006us" - -#if defined(CPUARM) - #define TR_TMIXMAXMS "Tmix max" - #define TR_FREESTACKMINB "Free Stack" -#else - #define TR_TMIXMAXMS "Tmix max\014ms" - #define TR_FREESTACKMINB "Free Stack\010b" -#endif - -#define TR_MENUTORESET CENTER TR_ENTER " to reset" -#define TR_PPM "PPM" -#define TR_CH "CH" -#define TR_MODEL "MODEL" -#define TR_FP "FM" -#define TR_MIX "MIX" -#define TR_EEPROMLOWMEM "EEPROM low mem" -#define TR_ALERT "\016ALERT" -#define TR_PRESSANYKEYTOSKIP "Press any key to skip" -#define TR_THROTTLENOTIDLE "Throttle not idle" -#define TR_ALARMSDISABLED "Alarms Disabled" -#define TR_PRESSANYKEY TR("\010Press any Key", "Press any Key") -#define TR_BADEEPROMDATA "Bad EEprom Data" -#define TR_EEPROMFORMATTING "Formatting EEPROM" -#define TR_EEPROMOVERFLOW "EEPROM overflow" -#define TR_MENURADIOSETUP "RADIO SETUP" -#define TR_MENUDATEANDTIME "DATE AND TIME" -#define TR_MENUTRAINER "TRAINER" -#define TR_MENUVERSION "VERSION" -#define TR_MENUDIAG TR("SWITCHES","SWITCH TEST") -#define TR_MENUANA TR("ANAS","ANALOG INPUTS") -#define TR_MENUCALIBRATION "CALIBRATION" -#define TR_TRIMS2OFFSETS "\006Trims => Offsets" -#define TR_MENUMODELSEL TR("MODELSEL","MODEL SELECTION") -#define TR_MENUSETUP TR("SETUP","MODEL SETUP") -#define TR_MENUFLIGHTPHASE "FLIGHT MODE" -#define TR_MENUFLIGHTPHASES "FLIGHT MODES" -#define TR_MENUHELISETUP "HELI SETUP" - -#if defined(PCBTARANIS) - #define TR_MENUINPUTS "INPUTS" - #define TR_MENULIMITS "SERVOS" -#elif defined(PPM_CENTER_ADJUSTABLE) || defined(PPM_LIMITS_SYMETRICAL) // The right menu titles for the gurus ... - #define TR_MENUINPUTS "STICKS" - #define TR_MENULIMITS "SERVOS" -#else - #define TR_MENUINPUTS "DR/EXPO" - #define TR_MENULIMITS "LIMITS" -#endif - -#define TR_MENUCURVES "CURVES" -#define TR_MENUCURVE "CURVE" -#define TR_MENUCUSTOMSWITCH "CUSTOM SWITCH" -#define TR_MENUCUSTOMSWITCHES "CUSTOM SWITCHES" -#define TR_MENUCUSTOMFUNC "CUSTOM FUNCTIONS" -#define TR_MENUTELEMETRY "TELEMETRY" -#define TR_MENUTEMPLATES "TEMPLATES" -#define TR_MENUSTAT "STATS" -#define TR_MENUDEBUG "DEBUG" -#define TR_RXNUM TR("RxNum", INDENT"Receiver No.") -#define TR_SYNCMENU "[Sync]" -#define TR_LIMIT INDENT"Limit" -#define TR_MINRSSI "Min Rssi" -#define TR_LATITUDE "Latitude" -#define TR_LONGITUDE "Longitude" -#define TR_GPSCOORD TR("GPS Coords", "GPS coordinate format") -#define TR_VARIO TR("Vario", "Variometer") -#define TR_SHUTDOWN "SHUTTING DOWN" -#define TR_BATT_CALIB "Battery Calib" -#define TR_CURRENT_CALIB "Current Calib" -#define TR_VOLTAGE INDENT"Voltage" -#define TR_CURRENT INDENT"Current" -#define TR_SELECT_MODEL "Select Model" -#define TR_CREATE_MODEL "Create Model" -#define TR_COPY_MODEL "Copy Model" -#define TR_MOVE_MODEL "Move Model" -#define TR_BACKUP_MODEL "Backup Model" -#define TR_DELETE_MODEL "Delete Model" -#define TR_RESTORE_MODEL "Restore Model" -#define TR_SDCARD_ERROR "SDCARD Error" -#define TR_NO_SDCARD "No SDCARD" -#define TR_INCOMPATIBLE "Incompatible" -#define TR_WARNING "WARNING" -#define TR_EEPROMWARN "EEPROM" -#define TR_THROTTLEWARN "THROTTLE" -#define TR_ALARMSWARN "ALARMS" -#define TR_SWITCHWARN "SWITCH" -#define TR_INVERT_THR TR("Invert Thr?","Invert Throttle?") -#define TR_SPEAKER_VOLUME INDENT "Volume" -#define TR_LCD "LCD" -#define TR_BRIGHTNESS INDENT "Brightness" -#define TR_CPU_TEMP "CPU Temp.\016>" -#define TR_CPU_CURRENT "Current\022>" -#define TR_CPU_MAH "Consumpt." -#define TR_COPROC "CoProc." -#define TR_COPROC_TEMP "MB Temp. \016>" -#define TR_CAPAWARNING INDENT "Capacity Low" -#define TR_TEMPWARNING INDENT "Overheat" -#define TR_FUNC "Func" -#define TR_V1 "V1" -#define TR_V2 "V2" -#define TR_DURATION "Duration" -#define TR_DELAY "Delay" -#define TR_SD_CARD "SD CARD" -#define TR_SDHC_CARD "SD-HC CARD" -#define TR_NO_SOUNDS_ON_SD "No Sounds on SD" -#define TR_NO_MODELS_ON_SD "No Models on SD" -#define TR_NO_BITMAPS_ON_SD "No Bitmaps on SD" -#define TR_PLAY_FILE "Play" -#define TR_DELETE_FILE "Delete" -#define TR_COPY_FILE "Copy" -#define TR_RENAME_FILE "Rename" -#define TR_ASSIGN_BITMAP "Assign Bitmap" -#define TR_REMOVED " removed" -#define TR_SD_INFO "Information" -#define TR_SD_FORMAT "Format" -#define TR_NA "N/A" -#define TR_HARDWARE "HARDWARE" -#define TR_FORMATTING "Formatting..." -#define TR_TEMP_CALIB "Temp. Calib" -#define TR_TIME "Time" -#define TR_BAUDRATE "BT Baudrate" -#define TR_SD_INFO_TITLE "SD INFO" -#define TR_SD_TYPE "Type:" -#define TR_SD_SPEED "Speed:" -#define TR_SD_SECTORS "Sectors:" -#define TR_SD_SIZE "Size:" -#define TR_TYPE "Type" -#define TR_GLOBAL_VARS "Global Variables" -#define TR_GLOBAL_VAR "Global Variable" -#define TR_MENUGLOBALVARS "GLOBAL VARIABLES" -#define TR_OWN "Own" -#define TR_DATE "Date" -#define TR_ROTARY_ENCODER "R.Encs" -#define TR_CHANNELS_MONITOR "CHANNEL MONITOR" -#define TR_INTERNALRF "Internal RF" -#define TR_EXTERNALRF "External RF" -#define TR_FAILSAFE INDENT "Failsafe mode" -#define TR_FAILSAFESET "FAILSAFE SETTINGS" -#define TR_COUNTRYCODE "Country Code" -#define TR_VOICELANG "Voice Language" -#define TR_UNITSSYSTEM "Units" -#define TR_EDIT "Edit" -#define TR_INSERT_BEFORE "Insert Before" -#define TR_INSERT_AFTER "Insert After" -#define TR_COPY "Copy" -#define TR_MOVE "Move" -#define TR_PASTE "Paste" -#define TR_DELETE "Delete" -#define TR_INSERT "Insert" -#define TR_RESET_FLIGHT "Reset Flight" -#define TR_RESET_TIMER1 "Reset Timer1" -#define TR_RESET_TIMER2 "Reset Timer2" -#define TR_RESET_TELEMETRY "Reset Telemetry" -#define TR_STATISTICS "Statistics" -#define TR_ABOUT_US "About" -#define TR_AND_SWITCH "AND Switch" -#define TR_CF "CF" -#define TR_SPEAKER INDENT"Speaker" -#define TR_BUZZER INDENT"Buzzer" -#define TR_BYTES "bytes" -#define TR_MODULE_BIND "[Bind]" -#define TR_MODULE_RANGE "[Range]" -#define TR_RESET_BTN "[Reset]" -#define TR_SET "[Set]" -#define TR_TRAINER "Trainer" -#define TR_ANTENNAPROBLEM CENTER "TX Antenna problem!" -#define TR_MODELIDUSED TR("ID already used","Model ID already used") -#define TR_MODULE INDENT "Module" -#define TR_CHANNELRANGE INDENT "Channel Range" -#define TR_LOWALARM INDENT "Low Alarm" -#define TR_CRITICALALARM INDENT "Critical Alarm" -#define TR_PERSISTENT_MAH INDENT "Store mAh" - -#if defined(MAVLINK) - #define TR_MAVLINK_RC_RSSI_SCALE_LABEL "Max RSSI" - #define TR_MAVLINK_PC_RSSI_EN_LABEL "PC RSSI EN" - #define TR_MAVMENUSETUP_TITLE "Mavlink Setup" - #define TR_MAVLINK_BAUD_LABEL "Baudrate" - #define TR_MAVLINK_INFOS "INFOS" - #define TR_MAVLINK_MODE "MODE" - #define TR_MAVLINK_CUR_MODE "Current Mode" - #define TR_MAVLINK_ARMED "Armed" - #define TR_MAVLINK_BAT_MENU_TITLE "BAT RSSI" - #define TR_MAVLINK_BATTERY_LABEL "Flight Battery status" - #define TR_MAVLINK_RC_RSSI_LABEL "RC RSSI" - #define TR_MAVLINK_PC_RSSI_LABEL "PC RSSI" - #define TR_MAVLINK_NAV_MENU_TITLE "NAV" - #define TR_MAVLINK_COURSE "Course" - #define TR_MAVLINK_HEADING "Heading" - #define TR_MAVLINK_BEARING "Bearing" - #define TR_MAVLINK_ALTITUDE "Altitude" - #define TR_MAVLINK_GPS "GPS" - #define TR_MAVLINK_NO_FIX "NO Fix" - #define TR_MAVLINK_SAT "SAT" - #define TR_MAVLINK_HDOP "HDOP" - #define TR_MAVLINK_LAT "LAT" - #define TR_MAVLINK_LON "LON" -#endif - - - -// Taranis column headers -#define TR_PHASES_HEADERS { " Name ", " Switch ", " Trims ", " Fade In ", " Fade Out " } -#define TR_LIMITS_HEADERS { " Name ", " Subtrim ", " Min ", " Max ", " Direction ", " Curve ", " PPM Center ", " Subtrim mode " } -#define TR_CSW_HEADERS { " Function ", " V1 ", " V2 ", " AND Switch ", " Duration ", " Delay " } - -// About screen -#define TR_ABOUTUS TR(" ABOUT ", "ABOUT") - -#define TR_ABOUT_OPENTX_1 TR("OpenTX\001is\001open\001source,\001non", "OpenTX is open source, non-") -#define TR_ABOUT_OPENTX_2 TR("commercial,\001wo\001warranties.", "commercial and comes with no") -#define TR_ABOUT_OPENTX_3 TR("It\001was\001developed\001for\001free.", "warranties. It was developed") -#define TR_ABOUT_OPENTX_4 TR("Support through donations", "for free. Support through") -#define TR_ABOUT_OPENTX_5 TR("is welcome!", "donations is welcome!") - -#define TR_ABOUT_BERTRAND_1 "Bertrand Songis" -#define TR_ABOUT_BERTRAND_2 "OpenTX main author" -#define TR_ABOUT_BERTRAND_3 "Companion9x co-author" - -#define TR_ABOUT_MIKE_1 "Mike Blandford" -#define TR_ABOUT_MIKE_2 "Code and drivers guru" -#define TR_ABOUT_MIKE_3 TR("Arguably,\001one\001of\001the\001best", "Arguably, one of the best") -#define TR_ABOUT_MIKE_4 "Inspirational" - -#define TR_ABOUT_ROMOLO_1 "Romolo Manfredini" -#define TR_ABOUT_ROMOLO_2 "Companion9x co-author" -#define TR_ABOUT_ROMOLO_3 "" - -#define TR_ABOUT_ANDRE_1 "Andre Bernet" -#define TR_ABOUT_ANDRE_2 "Functionality, usability," -#define TR_ABOUT_ANDRE_3 "debugging, documentation" - -#define TR_ABOUT_ROB_1 "Rob Thomson" -#define TR_ABOUT_ROB_2 "openrcforums webmaster" - -#define TR_ABOUT_MARTIN_1 "Martin Hotar" -#define TR_ABOUT_MARTIN_2 "Graphics designer" - -#if defined(PCBTARANIS) - #define TR_ABOUT_HARDWARE_1 "FrSky" - #define TR_ABOUT_HARDWARE_2 "Hardware designer/producer" - #define TR_ABOUT_HARDWARE_3 "Firmware contributor" -#else - #define TR_ABOUT_HARDWARE_1 "Brent Nelson" - #define TR_ABOUT_HARDWARE_2 "Sky9x designer/producer" - #define TR_ABOUT_HARDWARE_3 "" -#endif - -#define TR_ABOUT_PARENTS_1 "Parent projects" -#define TR_ABOUT_PARENTS_2 TR("Ersky9x (Mike Blandford)", "Ersky9x (Mike Blandford)") -#define TR_ABOUT_PARENTS_3 "ER9X (Erez Raviv)" -#define TR_ABOUT_PARENTS_4 "TH9X (Thomas Husterer)" - -#define TR_CHR_SHORT 's' -#define TR_CHR_LONG 'l' -#define TR_CHR_TOGGLE 't' -#define TR_CHR_HOUR 'h' - -#define TR_BEEP_VOLUME "Beep Volume" -#define TR_WAV_VOLUME "Wav Volume" -#define TR_VARIO_VOLUME "Vario Volume" -#define TR_BG_VOLUME "Bg Volume" - -#define TR_TOP_BAR "Top Bar" -#define TR_ALTITUDE INDENT "Altitude" -#define TR_MODS_FORBIDDEN "Modifications forbidden!" -#define TR_UNLOCKED "Unlocked" - From f49d2813306926978fab1f31512cd4aeed8f0847 Mon Sep 17 00:00:00 2001 From: "Tim G. Foley" Date: Thu, 16 Jan 2014 20:31:02 -0500 Subject: [PATCH 157/308] Added Spur and Pinion Gear Strings (English) --- radio/src/translations/es.h.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/radio/src/translations/es.h.txt b/radio/src/translations/es.h.txt index 11f626168..25cd5565f 100644 --- a/radio/src/translations/es.h.txt +++ b/radio/src/translations/es.h.txt @@ -443,6 +443,8 @@ #define TR_ALARM INDENT"Alarma" #define TR_USRDATA "UsrData" #define TR_BLADES INDENT"Palas" +#define TR_SPURGEAR INDENT"Spur Gear" +#define TR_PINIONGEAR INDENT"Pinion Gear" #define TR_SCREEN "Pantalla" #define TR_SOUND_LABEL "Sonido" #define TR_LENGTH INDENT"Longitud" From ea4abdf9bf22b54525058cdb1ecdac22b75a391b Mon Sep 17 00:00:00 2001 From: "Tim G. Foley" Date: Thu, 16 Jan 2014 20:44:49 -0500 Subject: [PATCH 158/308] Added Spur and Pinion Gear Strings (English) --- radio/src/translations/cz.h.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/radio/src/translations/cz.h.txt b/radio/src/translations/cz.h.txt index 145783ff3..9c84a4119 100644 --- a/radio/src/translations/cz.h.txt +++ b/radio/src/translations/cz.h.txt @@ -443,6 +443,8 @@ #define TR_ALARM INDENT"Alarm" #define TR_USRDATA TR("UživData", "Uživ. data") #define TR_BLADES TR(INDENT"ListyVrt", INDENT"Listy vrtule") +#define TR_SPURGEAR INDENT"Spur Gear" // T.Foley +#define TR_PINIONGEAR INDENT"Pinion Gear" // T.Foley #define TR_SCREEN "Panel " #define TR_SOUND_LABEL "Zvuk" #define TR_LENGTH INDENT"Délka" From 933e2c4001122507fba22df76a6a9445da1b266c Mon Sep 17 00:00:00 2001 From: "Tim G. Foley" Date: Thu, 16 Jan 2014 20:45:29 -0500 Subject: [PATCH 159/308] Added Spur and Pinion Gear Strings (English) --- radio/src/translations/de.h.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/radio/src/translations/de.h.txt b/radio/src/translations/de.h.txt index 8023eaf06..694f8ce18 100644 --- a/radio/src/translations/de.h.txt +++ b/radio/src/translations/de.h.txt @@ -443,6 +443,8 @@ #define TR_ALARM INDENT"Alarm" #define TR_USRDATA "Daten" #define TR_BLADES INDENT"Bl\201tter" +#define TR_SPURGEAR INDENT"Spur Gear" // T.Foley +#define TR_PINIONGEAR INDENT"Pinion Gear" // T.Foley #define TR_SCREEN "Bild " #define TR_SOUND_LABEL "T\203ne" #define TR_LENGTH INDENT"Dauer" From 4d3747e5b68f70be022e9fff4fd6ca096a8b4f46 Mon Sep 17 00:00:00 2001 From: "Tim G. Foley" Date: Thu, 16 Jan 2014 20:45:59 -0500 Subject: [PATCH 160/308] Added Spur and Pinion Gear Strings (English) --- radio/src/translations/fr.h.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/radio/src/translations/fr.h.txt b/radio/src/translations/fr.h.txt index 652776e6e..0e363f3f4 100644 --- a/radio/src/translations/fr.h.txt +++ b/radio/src/translations/fr.h.txt @@ -443,6 +443,8 @@ #define TR_ALARM INDENT"Alarme" #define TR_USRDATA "Données" #define TR_BLADES INDENT"Pales" +#define TR_SPURGEAR INDENT"Spur Gear" // T.Foley +#define TR_PINIONGEAR INDENT"Pinion Gear" // T.Foley #define TR_SCREEN "Ecran " #define TR_SOUND_LABEL "Son" #define TR_LENGTH INDENT"Durée" From 9f4fe675089a6cad5ef7771250d05ccce861909f Mon Sep 17 00:00:00 2001 From: "Tim G. Foley" Date: Thu, 16 Jan 2014 20:46:20 -0500 Subject: [PATCH 161/308] Added Spur and Pinion Gear Strings (English) --- radio/src/translations/it.h.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/radio/src/translations/it.h.txt b/radio/src/translations/it.h.txt index 3a2c62fca..2f06e0524 100644 --- a/radio/src/translations/it.h.txt +++ b/radio/src/translations/it.h.txt @@ -443,6 +443,8 @@ #define TR_ALARM INDENT"Allarme" #define TR_USRDATA "Dati" #define TR_BLADES INDENT"Pale" +#define TR_SPURGEAR INDENT"Spur Gear" // T.Foley +#define TR_PINIONGEAR INDENT"Pinion Gear" // T.Foley #define TR_SCREEN "Schermo " #define TR_SOUND_LABEL "Suono" #define TR_LENGTH INDENT"Durata" From 2398f5d59c22d4117999b01f88ade72830363b5e Mon Sep 17 00:00:00 2001 From: "Tim G. Foley" Date: Thu, 16 Jan 2014 20:47:06 -0500 Subject: [PATCH 162/308] Added Spur and Pinion Gear Strings (English) --- radio/src/translations/pl.h.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/radio/src/translations/pl.h.txt b/radio/src/translations/pl.h.txt index 5525754ed..c9b533b7b 100644 --- a/radio/src/translations/pl.h.txt +++ b/radio/src/translations/pl.h.txt @@ -444,6 +444,8 @@ #define TR_ALARM INDENT"Alarm" #define TR_USRDATA TR("Dane Użytk.", "Dane użytkownika") #define TR_BLADES TR(INDENT"Łopaty śmigla", INDENT"Łopaty śmigła") +#define TR_SPURGEAR INDENT"Spur Gear" // T.Foley +#define TR_PINIONGEAR INDENT"Pinion Gear" // T.Foley #define TR_SCREEN "Ekran " #define TR_SOUND_LABEL "Dźwięk" #define TR_LENGTH INDENT"Długość" From f48ed4b0d5daa8a8bccb5d44f787f729fd69b5d6 Mon Sep 17 00:00:00 2001 From: "Tim G. Foley" Date: Thu, 16 Jan 2014 20:47:52 -0500 Subject: [PATCH 163/308] Added Spur and Pinion Gear Strings (English) --- radio/src/translations/pt.h.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/radio/src/translations/pt.h.txt b/radio/src/translations/pt.h.txt index 691c840af..fa8c8b1dd 100644 --- a/radio/src/translations/pt.h.txt +++ b/radio/src/translations/pt.h.txt @@ -443,6 +443,8 @@ #define TR_ALARM INDENT"Alarme" #define TR_USRDATA "UsrData" #define TR_BLADES INDENT"Helice" +#define TR_SPURGEAR INDENT"Spur Gear" // T.Foley +#define TR_PINIONGEAR INDENT"Pinion Gear" // T.Foley #define TR_SCREEN "Tela" #define TR_SOUND_LABEL "Som" #define TR_LENGTH INDENT"Comprimento" From 6158f80c0677897648d0f29385be9ac17c7e2ee1 Mon Sep 17 00:00:00 2001 From: "Tim G. Foley" Date: Thu, 16 Jan 2014 20:48:12 -0500 Subject: [PATCH 164/308] Added Spur and Pinion Gear Strings (English) --- radio/src/translations/se.h.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/radio/src/translations/se.h.txt b/radio/src/translations/se.h.txt index 68de29549..796c10fa4 100644 --- a/radio/src/translations/se.h.txt +++ b/radio/src/translations/se.h.txt @@ -443,6 +443,8 @@ #define TR_ALARM INDENT"Alarm" #define TR_USRDATA "Användardata" #define TR_BLADES INDENT"Blad" +#define TR_SPURGEAR INDENT"Spur Gear" // T.Foley +#define TR_PINIONGEAR INDENT"Pinion Gear" // T.Foley #define TR_SCREEN "Skärm" #define TR_SOUND_LABEL "Ljud " #define TR_LENGTH INDENT"Tid" From 1589f33443ebfd28b2983fbe604f223888bc3e70 Mon Sep 17 00:00:00 2001 From: "Tim G. Foley" Date: Thu, 16 Jan 2014 20:49:00 -0500 Subject: [PATCH 165/308] Update README.txt --- README.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/README.txt b/README.txt index 70103f756..4e524cfd6 100644 --- a/README.txt +++ b/README.txt @@ -3,6 +3,7 @@ Add Gear Ratio to RPM Telemetry Calculation and allow for Blades to equal 1 Jan 16 2014 - Switched to 'next' branch - Need to solve issue with frsky_sport.cpp and calc compile error +- Need to translate "Spur" and "Gear" to other languages, using English as placeholder for now. Jan 15 2014 From 924435073735ad2c7f79165e4e25fbe0a33d1ee3 Mon Sep 17 00:00:00 2001 From: "Tim G. Foley" Date: Thu, 16 Jan 2014 20:50:57 -0500 Subject: [PATCH 166/308] Update README.txt --- README.txt | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/README.txt b/README.txt index 4e524cfd6..6dcc5a26f 100644 --- a/README.txt +++ b/README.txt @@ -7,24 +7,25 @@ Jan 16 2014 Jan 15 2014 -•Fully working in Simulator now, new options for Spur and Pinion are in Telemetry setup screen for the model. Pinion is forced to stay equal to or smaller than spur (to prevent divide by zero). -•Tested on Taranis Rev A (eeprom is modified so backup everything before experimenting). +- Fully working in Simulator now, new options for Spur and Pinion are in Telemetry setup screen for the model. Pinion is forced to stay equal to or smaller than spur (to prevent divide by zero). +- Tested on Taranis Rev A (eeprom is modified so backup everything before experimenting). Jan 14 2014 -•The current implementation of OpenTX has a few limitations with regards to RPM sensors on Nitro Helicopters and this patch is to resolve and improve that. +- The current implementation of OpenTX has a few limitations with regards to RPM sensors on Nitro Helicopters and this patch is to resolve and improve that. -•Initial changes to make: -◦Change Minimum Blades to 1 (currently hardcoded to 2) to allow for Fan RPM Sensors (single magnet) and crank sensors. -◦Change Maximum Blades to 255 (currently limited to 5) to allow for any number of divider for both nitro or electric. -◦Add Spur Gear USRDATA option to assist with calculating head speed -◦Add Pinion Gear USRDATA option to assist with calculating head speed -◦Change RPM telemetry calculation to take into account gear ratio based upon Spur and Pinion size +- Initial changes to make: +- Change Minimum Blades to 1 (currently hardcoded to 2) to allow for Fan RPM Sensors (single magnet) and crank sensors. +- Change Maximum Blades to 255 (currently limited to 5) to allow for any number of divider for both nitro or electric. +- Add Spur Gear USRDATA option to assist with calculating head speed +- Add Pinion Gear USRDATA option to assist with calculating head speed +- Change RPM telemetry calculation to take into account gear ratio based upon Spur and Pinion size -•Future: -◦Add new telemtry calculated value "HDSP" for Headspeed to allow user to see engine RPM and calculated headspeed -◦Add more options for electric setups +- Future: +- Add gear ratio calc displayed in userdata but not editable. +- Add new telemtry calculated value "HDSP" for Headspeed to allow user to see engine RPM and calculated headspeed +- Add more options for electric setups Author - Tim Foley From acd974403b6724c06e810b66b2eccc645dceea40 Mon Sep 17 00:00:00 2001 From: "Tim G. Foley" Date: Thu, 16 Jan 2014 18:06:34 -0800 Subject: [PATCH 167/308] Fixed cross initialization error --- .gitignore | 7 + radio/src/gui/menu_model.cpp~ | 5643 --------------------------- radio/src/telemetry/frsky.cpp | 3 +- radio/src/telemetry/frsky.cpp~ | 926 ----- radio/src/telemetry/frsky_sport.cpp | 12 +- 5 files changed, 20 insertions(+), 6571 deletions(-) create mode 100644 .gitignore delete mode 100644 radio/src/gui/menu_model.cpp~ delete mode 100644 radio/src/telemetry/frsky.cpp~ diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000..4b4d86a64 --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +*.[oa] +*~ +opentx.bin +opentx.elf +opentx.lst +opentx.map + diff --git a/radio/src/gui/menu_model.cpp~ b/radio/src/gui/menu_model.cpp~ deleted file mode 100644 index d1f9889fb..000000000 --- a/radio/src/gui/menu_model.cpp~ +++ /dev/null @@ -1,5643 +0,0 @@ -/* - * Authors (alphabetical order) - * - Andre Bernet - * - Andreas Weitl - * - Bertrand Songis - * - Bryan J. Rentoul (Gruvin) - * - Cameron Weeks - * - Erez Raviv - * - Gabriel Birkus - * - Jean-Pierre Parisy - * - Karl Szmutny - * - Michael Blandford - * - Michal Hlavinka - * - Pat Mackenzie - * - Philip Moss - * - Rob Thomson - * - Romolo Manfredini - * - Thomas Husterer - * - * opentx is based on code named - * gruvin9x by Bryan J. Rentoul: http://code.google.com/p/gruvin9x/, - * er9x by Erez Raviv: http://code.google.com/p/er9x/, - * and the original (and ongoing) project by - * Thomas Husterer, th9x: http://code.google.com/p/th9x/ - * - * This program 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. - * - * This program 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. See the - * GNU General Public License for more details. - * - */ - -#include "../opentx.h" -#ifdef MAVLINK -#include "gui/view_mavlink.h" -#endif - -#define WCHART 32 -#define X0 (LCD_W-WCHART-2) -#define Y0 32 - -enum EnumTabModel { - e_ModelSelect, - e_ModelSetup, - IF_HELI(e_Heli) - IF_FLIGHT_MODES(e_FlightModesAll) - e_InputsAll, - e_MixAll, - e_Limits, - IF_CURVES(e_CurvesAll) -#if LCD_W >= 212 - IF_GVARS(e_GVars) -#endif - e_CustomSwitches, - e_CustomFunctions, -#if defined(LUA_MODEL_SCRIPTS) - e_CustomScripts, -#endif - IF_FRSKY(e_Telemetry) - IF_MAVLINK(e_MavSetup) - IF_TEMPLATES(e_Templates) -}; - -void menuModelSelect(uint8_t event); -void menuModelSetup(uint8_t event); -void menuModelHeli(uint8_t event); -void menuModelFlightModesAll(uint8_t event); -void menuModelExposAll(uint8_t event); -void menuModelMixAll(uint8_t event); -void menuModelLimits(uint8_t event); -void menuModelCurvesAll(uint8_t event); -void menuModelGVars(uint8_t event); -void menuModelCustomSwitches(uint8_t event); -void menuModelCustomFunctions(uint8_t event); -void menuModelCustomScripts(uint8_t event); -void menuModelTelemetry(uint8_t event); -void menuModelTemplates(uint8_t event); -void menuModelExpoOne(uint8_t event); - -const MenuFuncP_PROGMEM menuTabModel[] PROGMEM = { - menuModelSelect, - menuModelSetup, - IF_HELI(menuModelHeli) - IF_FLIGHT_MODES(menuModelFlightModesAll) - menuModelExposAll, - menuModelMixAll, - menuModelLimits, - IF_CURVES(menuModelCurvesAll) -#if LCD_W >= 212 && defined(GVARS) && defined(FLIGHT_MODES) - IF_GVARS(menuModelGVars) -#endif - menuModelCustomSwitches, - menuModelCustomFunctions, -#if defined(LUA_MODEL_SCRIPTS) - menuModelCustomScripts, -#endif - IF_FRSKY(menuModelTelemetry) - IF_MAVLINK(menuTelemetryMavlinkSetup) - IF_TEMPLATES(menuModelTemplates) -}; - -#define COPY_MODE 1 -#define MOVE_MODE 2 -static uint8_t s_copyMode = 0; -static int8_t s_copySrcRow; -static int8_t s_copyTgtOfs; - -uint8_t eeFindEmptyModel(uint8_t id, bool down) -{ - uint8_t i = id; - for (;;) { - i = (MAX_MODELS + (down ? i+1 : i-1)) % MAX_MODELS; - if (!eeModelExists(i)) break; - if (i == id) return 0xff; // no free space in directory left - } - return i; -} - -void selectModel(uint8_t sub) -{ - displayPopup(STR_LOADINGMODEL); - saveTimers(); - eeCheck(true); // force writing of current model data before this is changed - g_eeGeneral.currModel = sub; - eeDirty(EE_GENERAL); - eeLoadModel(sub); -} - -#if defined(SDCARD) -#define LIST_NONE_SD_FILE 1 -bool listSdFiles(const char *path, const char *extension, const uint8_t maxlen, const char *selection, uint8_t flags=0) -{ - FILINFO fno; - DIR dir; - char *fn; /* This function is assuming non-Unicode cfg. */ -#if _USE_LFN - TCHAR lfn[_MAX_LFN + 1]; - fno.lfname = lfn; - fno.lfsize = sizeof(lfn); -#endif - - static uint16_t s_last_menu_offset = 0; - -#if defined(CPUARM) - static uint8_t s_last_flags; - - if (selection) { - s_last_flags = flags; - memset(reusableBuffer.modelsel.menu_bss, 0, sizeof(reusableBuffer.modelsel.menu_bss)); - strcpy(reusableBuffer.modelsel.menu_bss[0], path); - strcat(reusableBuffer.modelsel.menu_bss[0], "/"); - strncat(reusableBuffer.modelsel.menu_bss[0], selection, maxlen); - strcat(reusableBuffer.modelsel.menu_bss[0], extension); - if (f_stat(reusableBuffer.modelsel.menu_bss[0], &fno) != FR_OK) { - selection = NULL; - } - } - else { - flags = s_last_flags; - } -#endif - - if (s_menu_offset == 0) { - s_last_menu_offset = 0; - memset(reusableBuffer.modelsel.menu_bss, 0, sizeof(reusableBuffer.modelsel.menu_bss)); - } - else if (s_menu_offset == s_menu_count - MENU_MAX_LINES) { - s_last_menu_offset = 0xffff; - memset(reusableBuffer.modelsel.menu_bss, 0, sizeof(reusableBuffer.modelsel.menu_bss)); - } - else if (s_menu_offset == s_last_menu_offset) { - // should not happen, only there because of Murphy's law - return true; - } - else if (s_menu_offset > s_last_menu_offset) { - memmove(reusableBuffer.modelsel.menu_bss[0], reusableBuffer.modelsel.menu_bss[1], (MENU_MAX_LINES-1)*MENU_LINE_LENGTH); - memset(reusableBuffer.modelsel.menu_bss[MENU_MAX_LINES-1], 0xff, MENU_LINE_LENGTH); - } - else { - memmove(reusableBuffer.modelsel.menu_bss[1], reusableBuffer.modelsel.menu_bss[0], (MENU_MAX_LINES-1)*MENU_LINE_LENGTH); - memset(reusableBuffer.modelsel.menu_bss[0], 0, MENU_LINE_LENGTH); - } - - s_menu_count = 0; - s_menu_flags = BSS; - - FRESULT res = f_opendir(&dir, path); /* Open the directory */ - if (res == FR_OK) { - - if (flags & LIST_NONE_SD_FILE) { - s_menu_count++; - if (selection) { - s_last_menu_offset++; - } - else if (s_menu_offset==0 || s_menu_offset < s_last_menu_offset) { - char *line = reusableBuffer.modelsel.menu_bss[0]; - memset(line, 0, MENU_LINE_LENGTH); - strcpy(line, "---"); - s_menu[0] = line; - } - } - - for (;;) { - res = f_readdir(&dir, &fno); /* Read a directory item */ - if (res != FR_OK || fno.fname[0] == 0) break; /* Break on error or end of dir */ - -#if _USE_LFN - fn = *fno.lfname ? fno.lfname : fno.fname; -#else - fn = fno.fname; -#endif - - uint8_t len = strlen(fn); - if (len < 5 || len > maxlen+4 || strcasecmp(fn+len-4, extension) || (fno.fattrib & AM_DIR)) continue; - - s_menu_count++; - fn[len-4] = '\0'; - - if (s_menu_offset == 0) { - if (selection && strncasecmp(fn, selection, maxlen) < 0) { - s_last_menu_offset++; - } - else { - for (uint8_t i=0; i=0; i--) { - char *line = reusableBuffer.modelsel.menu_bss[i]; - if (line[0] == '\0' || strcasecmp(fn, line) > 0) { - if (i > 0) memmove(reusableBuffer.modelsel.menu_bss[0], reusableBuffer.modelsel.menu_bss[1], sizeof(reusableBuffer.modelsel.menu_bss[i]) * i); - memset(line, 0, MENU_LINE_LENGTH); - strcpy(line, fn); - break; - } - } - for (uint8_t i=0; i s_last_menu_offset) { - if (strcasecmp(fn, reusableBuffer.modelsel.menu_bss[MENU_MAX_LINES-2]) > 0 && strcasecmp(fn, reusableBuffer.modelsel.menu_bss[MENU_MAX_LINES-1]) < 0) { - memset(reusableBuffer.modelsel.menu_bss[MENU_MAX_LINES-1], 0, MENU_LINE_LENGTH); - strcpy(reusableBuffer.modelsel.menu_bss[MENU_MAX_LINES-1], fn); - } - } - else { - if (strcasecmp(fn, reusableBuffer.modelsel.menu_bss[1]) < 0 && strcasecmp(fn, reusableBuffer.modelsel.menu_bss[0]) > 0) { - memset(reusableBuffer.modelsel.menu_bss[0], 0, MENU_LINE_LENGTH); - strcpy(reusableBuffer.modelsel.menu_bss[0], fn); - } - } - } - } - - if (s_menu_offset > 0) - s_last_menu_offset = s_menu_offset; - else - s_menu_offset = s_last_menu_offset; - - return s_menu_count; -} -#endif - -#if defined(PCBTARANIS) - static int8_t modelselBitmapIdx; - static uint8_t modelselBitmap[MODEL_BITMAP_SIZE]; - #define MODELSEL_W 133 - #define BMP_DIRTY() modelselBitmapIdx = -1 -#else - #define MODELSEL_W LCD_W - #define BMP_DIRTY() -#endif - -#if defined(NAVIGATION_MENUS) -void onModelSelectMenu(const char *result) -{ - int8_t sub = m_posVert; - - if (result == STR_SELECT_MODEL || result == STR_CREATE_MODEL) { - selectModel(sub); - } - else if (result == STR_COPY_MODEL) { - s_copyMode = COPY_MODE; - s_copyTgtOfs = 0; - s_copySrcRow = -1; - } - else if (result == STR_MOVE_MODEL) { - s_copyMode = MOVE_MODE; - s_copyTgtOfs = 0; - s_copySrcRow = -1; - } -#if defined(SDCARD) - else if (result == STR_BACKUP_MODEL) { - eeCheck(true); // force writing of current model data before this is changed - POPUP_WARNING(eeBackupModel(sub)); - } - else if (result == STR_RESTORE_MODEL || result == STR_UPDATE_LIST) { - if (!listSdFiles(MODELS_PATH, MODELS_EXT, sizeof(g_model.header.name), NULL)) { - POPUP_WARNING(STR_NO_MODELS_ON_SD); - s_menu_flags = 0; - } - } -#endif - else if (result == STR_DELETE_MODEL) { - POPUP_CONFIRMATION(STR_DELETEMODEL); -#if defined(CPUARM) - s_warning_info = modelHeaders[sub].name; -#else - char * name = reusableBuffer.modelsel.mainname; - eeLoadModelName(sub, name); - s_warning_info = name; -#endif - s_warning_info_len = sizeof(g_model.header.name); - } -#if defined(SDCARD) - else { - // The user choosed a file on SD to restore - POPUP_WARNING(eeRestoreModel(sub, (char *)result)); - BMP_DIRTY(); - if (!s_warning && g_eeGeneral.currModel == sub) - eeLoadModel(sub); - } -#endif -} -#endif - -void menuModelSelect(uint8_t event) -{ - if (s_warning_result) { - s_warning_result = 0; - eeDeleteModel(m_posVert); // delete file - s_copyMode = 0; - event = EVT_ENTRY_UP; - BMP_DIRTY(); - } - - uint8_t _event_ = (IS_ROTARY_BREAK(event) || IS_ROTARY_LONG(event) ? 0 : event); - -#if defined(PCBTARANIS) - if ((s_copyMode && EVT_KEY_MASK(event) == KEY_EXIT) || event == EVT_KEY_BREAK(KEY_EXIT)) - _event_ -= KEY_EXIT; -#else - if (s_copyMode && EVT_KEY_MASK(event) == KEY_EXIT) - _event_ -= KEY_EXIT; -#endif - - int8_t oldSub = m_posVert; - - if (!check_submenu_simple(_event_, MAX_MODELS-1)) return; - -#if defined(NAVIGATION_POT2) - if (event==0 && p2valdiff<0) { - event = EVT_KEY_FIRST(KEY_RIGHT); - } -#endif - - if (s_editMode > 0) s_editMode = 0; - -#if !defined(CPUARM) - if (event) { - eeFlush(); // flush eeprom write - } -#endif - - int8_t sub = m_posVert; - - switch (event) - { - case EVT_ENTRY: - m_posVert = sub = g_eeGeneral.currModel; - if (sub >= LCD_LINES-1) s_pgOfs = sub-LCD_LINES+2; - s_copyMode = 0; - s_editMode = EDIT_MODE_INIT; - BMP_DIRTY(); - eeCheck(true); - break; - case EVT_KEY_LONG(KEY_EXIT): - if (s_copyMode && s_copyTgtOfs == 0 && g_eeGeneral.currModel != sub && eeModelExists(sub)) { - POPUP_CONFIRMATION(STR_DELETEMODEL); -#if defined(CPUARM) - s_warning_info = modelHeaders[sub].name; -#else - char * name = reusableBuffer.modelsel.mainname; - eeLoadModelName(sub, name); - s_warning_info = name; -#endif - s_warning_info_len = sizeof(g_model.header.name); - killEvents(event); - break; - } - // no break -#if defined(ROTARY_ENCODER_NAVIGATION) - case EVT_ROTARY_LONG: - killEvents(event); - if (s_editMode < 0) { - popMenu(); - return; - } - else if (!s_copyMode) { - m_posVert = sub = g_eeGeneral.currModel; - s_copyMode = 0; - s_editMode = EDIT_MODE_INIT; - } - // no break -#endif - case EVT_KEY_BREAK(KEY_EXIT): - if (s_copyMode) { - sub = m_posVert = (s_copyMode == MOVE_MODE || s_copySrcRow<0) ? (MAX_MODELS+sub+s_copyTgtOfs) % MAX_MODELS : s_copySrcRow; - s_copyMode = 0; - } -#if defined(PCBTARANIS) - else { - if (m_posVert != g_eeGeneral.currModel) { - m_posVert = g_eeGeneral.currModel; - s_pgOfs = 0; - } - else { - popMenu(); - return; - } - } -#endif - break; -#if defined(ROTARY_ENCODER_NAVIGATION) - case EVT_ROTARY_BREAK: - if (s_editMode == -1) { - s_editMode = 0; - break; - } - // no break; -#endif - case EVT_KEY_LONG(KEY_ENTER): - case EVT_KEY_BREAK(KEY_ENTER): - s_editMode = 0; - if (READ_ONLY()) { - if (g_eeGeneral.currModel != sub && eeModelExists(sub)) { - selectModel(sub); - } - } - else if (s_copyMode && (s_copyTgtOfs || s_copySrcRow>=0)) { - displayPopup(s_copyMode==COPY_MODE ? STR_COPYINGMODEL : STR_MOVINGMODEL); - eeCheck(true); // force writing of current model data before this is changed - - uint8_t cur = (MAX_MODELS + sub + s_copyTgtOfs) % MAX_MODELS; - - if (s_copyMode == COPY_MODE) { - if (eeCopyModel(cur, s_copySrcRow)) - BMP_DIRTY(); - else - cur = sub; - } - - s_copySrcRow = g_eeGeneral.currModel; // to update the currModel value - while (sub != cur) { - uint8_t src = cur; - cur = (s_copyTgtOfs > 0 ? cur+MAX_MODELS-1 : cur+1) % MAX_MODELS; - eeSwapModels(src, cur); - BMP_DIRTY(); - if (src == s_copySrcRow) - s_copySrcRow = cur; - else if (cur == s_copySrcRow) - s_copySrcRow = src; - } - - if (s_copySrcRow != g_eeGeneral.currModel) { - g_eeGeneral.currModel = s_copySrcRow; - eeDirty(EE_GENERAL); - } - - s_copyMode = 0; - event = EVT_ENTRY_UP; - } - else if (event == EVT_KEY_LONG(KEY_ENTER) -#if !defined(PCBTARANIS) - || IS_ROTARY_BREAK(event) -#endif - ) { - s_copyMode = 0; - killEvents(event); -#if defined(NAVIGATION_MENUS) - if (g_eeGeneral.currModel != sub) { - if (eeModelExists(sub)) { - MENU_ADD_ITEM(STR_SELECT_MODEL); - MENU_ADD_SD_ITEM(STR_BACKUP_MODEL); - MENU_ADD_ITEM(STR_COPY_MODEL); - MENU_ADD_ITEM(STR_MOVE_MODEL); - MENU_ADD_ITEM(STR_DELETE_MODEL); - } - else { -#if defined(SDCARD) - MENU_ADD_ITEM(STR_CREATE_MODEL); - MENU_ADD_ITEM(STR_RESTORE_MODEL); -#else - selectModel(sub); -#endif - } - } - else { - MENU_ADD_SD_ITEM(STR_BACKUP_MODEL); - MENU_ADD_ITEM(STR_COPY_MODEL); - MENU_ADD_ITEM(STR_MOVE_MODEL); - } - menuHandler = onModelSelectMenu; -#else - if (g_eeGeneral.currModel != sub) { - selectModel(sub); - } -#endif - } - else if (eeModelExists(sub)) { - s_copyMode = (s_copyMode == COPY_MODE ? MOVE_MODE : COPY_MODE); - s_copyTgtOfs = 0; - s_copySrcRow = -1; - } - break; - -#if defined(PCBTARANIS) - case EVT_KEY_BREAK(KEY_PAGE): - case EVT_KEY_LONG(KEY_PAGE): - chainMenu(event == EVT_KEY_BREAK(KEY_PAGE) ? menuModelSetup : menuTabModel[DIM(menuTabModel)-1]); - killEvents(event); - return; -#else -#if defined(ROTARY_ENCODER_NAVIGATION) - case EVT_ROTARY_LEFT: - case EVT_ROTARY_RIGHT: -#endif - case EVT_KEY_FIRST(KEY_LEFT): - case EVT_KEY_FIRST(KEY_RIGHT): -#if defined(ROTARY_ENCODER_NAVIGATION) - if ((!IS_ROTARY_RIGHT(event) && !IS_ROTARY_LEFT(event)) || s_editMode < 0) { -#endif - if (sub == g_eeGeneral.currModel) { - chainMenu((IS_ROTARY_RIGHT(event) || event == EVT_KEY_FIRST(KEY_RIGHT)) ? menuModelSetup : menuTabModel[DIM(menuTabModel)-1]); - return; - } - AUDIO_WARNING2(); - break; -#if defined(ROTARY_ENCODER_NAVIGATION) - } - // no break -#endif -#endif - - case EVT_KEY_FIRST(KEY_MOVE_UP): - case EVT_KEY_REPT(KEY_MOVE_UP): - case EVT_KEY_FIRST(KEY_MOVE_DOWN): - case EVT_KEY_REPT(KEY_MOVE_DOWN): - if (s_copyMode) { - int8_t next_ofs = s_copyTgtOfs + oldSub - m_posVert; - if (next_ofs == MAX_MODELS || next_ofs == -MAX_MODELS) - next_ofs = 0; - - if (s_copySrcRow < 0 && s_copyMode==COPY_MODE) { - s_copySrcRow = oldSub; - // find a hole (in the first empty slot above / below) - sub = eeFindEmptyModel(s_copySrcRow, IS_ROTARY_DOWN(event) || event==EVT_KEY_FIRST(KEY_MOVE_DOWN)); - if (sub < 0) { - // no free room for duplicating the model - AUDIO_ERROR(); - sub = oldSub; - s_copyMode = 0; - } - next_ofs = 0; - m_posVert = sub; - } - s_copyTgtOfs = next_ofs; - } - break; - } - -#if defined(PCBTARANIS) - lcd_puts(27*FW-(LEN_FREE-4)*FW, 0, STR_FREE); - if (event) reusableBuffer.modelsel.eepromfree = EeFsGetFree(); - lcd_outdezAtt(20*FW, 0, reusableBuffer.modelsel.eepromfree, 0); - lcd_puts(21*FW, 0, STR_BYTES); -#elif !defined(PCBSKY9X) - lcd_puts(9*FW-(LEN_FREE-4)*FW, 0, STR_FREE); - if (event) reusableBuffer.modelsel.eepromfree = EeFsGetFree(); - lcd_outdezAtt(17*FW, 0, reusableBuffer.modelsel.eepromfree, 0); -#endif - -#if defined(ROTARY_ENCODER_NAVIGATION) - displayScreenIndex(e_ModelSelect, DIM(menuTabModel), (sub == g_eeGeneral.currModel) ? ((IS_RE_NAVIGATION_ENABLE() && s_editMode < 0) ? INVERS|BLINK : INVERS) : 0); -#elif defined(PCBTARANIS) - displayScreenIndex(e_ModelSelect, DIM(menuTabModel), 0); - lcd_filled_rect(0, 0, LCD_W, FH, SOLID, FILL_WHITE|GREY_DEFAULT); -#else - displayScreenIndex(e_ModelSelect, DIM(menuTabModel), (sub == g_eeGeneral.currModel) ? INVERS : 0); -#endif - - TITLE(STR_MENUMODELSEL); - - for (uint8_t i=0; i= 0)) { - if (k == sub) { - if (s_copyMode == COPY_MODE) { - k = s_copySrcRow; - lcd_putc(MODELSEL_W-FW, y, '+'); - } - else { - k = sub + s_copyTgtOfs; - } - } - else if (s_copyTgtOfs < 0 && ((k < sub && k >= sub+s_copyTgtOfs) || (k-MAX_MODELS < sub && k-MAX_MODELS >= sub+s_copyTgtOfs))) - k += 1; - else if (s_copyTgtOfs > 0 && ((k > sub && k <= sub+s_copyTgtOfs) || (k+MAX_MODELS > sub && k+MAX_MODELS <= sub+s_copyTgtOfs))) - k += MAX_MODELS-1; - } - - k %= MAX_MODELS; - - if (eeModelExists(k)) { -#if defined(PCBSKY9X) - putsModelName(4*FW, y, modelHeaders[k].name, k, 0); -#elif defined(CPUARM) - putsModelName(4*FW, y, modelHeaders[k].name, k, 0); - lcd_outdezAtt(20*FW, y, eeModelSize(k), 0); -#else - char * name = reusableBuffer.modelsel.listnames[i]; - if (event) eeLoadModelName(k, name); - putsModelName(4*FW, y, name, k, 0); - lcd_outdezAtt(20*FW, y, eeModelSize(k), 0); -#endif - if (k==g_eeGeneral.currModel && (s_copyMode!=COPY_MODE || s_copySrcRow<0 || i+s_pgOfs!=(vertpos_t)sub)) lcd_putc(1, y, '*'); - } - - if (s_copyMode && (vertpos_t)sub==i+s_pgOfs) { - lcd_filled_rect(9, y, MODELSEL_W-1-9, 7); - lcd_rect(8, y-1, MODELSEL_W-1-7, 9, s_copyMode == COPY_MODE ? SOLID : DOTTED); - } - } - -#if defined(PCBTARANIS) - if (modelselBitmapIdx != m_posVert) { - modelselBitmapIdx = m_posVert; - if (modelselBitmapIdx == g_eeGeneral.currModel) - memcpy(modelselBitmap, modelBitmap, MODEL_BITMAP_SIZE); - else - loadModelBitmap(modelHeaders[sub].bitmap, modelselBitmap); - } - lcd_bmp(22*FW+2, 2*FH+FH/2, modelselBitmap); -#endif -} - -#if defined(PCBTARANIS) -uint8_t g_moduleIdx; -void menuModelFailsafe(uint8_t event) -{ - static bool longNames = false; - bool newLongNames = false; - uint8_t ch; - - if (event == EVT_KEY_BREAK(KEY_ENTER) && s_editMode) { - g_model.moduleData[g_moduleIdx].failsafeChannels[m_posVert] = channelOutputs[m_posVert]; - eeDirty(EE_MODEL); - AUDIO_WARNING1(); - SEND_FAILSAFE_NOW(g_moduleIdx); - } - - SIMPLE_SUBMENU_NOTITLE(32); - - SET_SCROLLBAR_X(0); - - if (m_posVert >= 16) - ch = 16; - else - ch = 0; - - lcd_putsCenter(0*FH, FAILSAFESET); - lcd_invert_line(0); - - // Column separator - lcd_vline(LCD_W/2, FH, LCD_H-FH); - - for (uint8_t col=0; col<2; col++) { - - uint8_t x = col*LCD_W/2+1; - - // Channels - for (uint8_t line=0; line<8; line++) { - uint8_t y = 9+line*7; - int32_t val; - uint8_t ofs = (col ? 0 : 1); - - if (ch < g_model.moduleData[g_moduleIdx].channelsStart || ch >= NUM_CHANNELS(g_moduleIdx) + g_model.moduleData[g_moduleIdx].channelsStart) - val = 0; - else if (s_editMode && m_posVert == ch) - val = channelOutputs[ch]; - else - val = g_model.moduleData[g_moduleIdx].failsafeChannels[8*col+line]; - - // Channel name if present, number if not - uint8_t lenLabel = ZLEN(g_model.limitData[ch].name); - if (lenLabel > 4) { - newLongNames = longNames = true; - } - - if (lenLabel > 0) - lcd_putsnAtt(x+1-ofs, y, g_model.limitData[ch].name, sizeof(g_model.limitData[ch].name), ZCHAR | SMLSIZE); - else - putsChn(x+1-ofs, y, ch+1, SMLSIZE); - - // Value - LcdFlags flags = TINSIZE; - if (m_posVert == ch) { - flags |= INVERS; - if (s_editMode) - flags |= BLINK; - } -#if defined(PPM_UNIT_US) - uint8_t wbar = (longNames ? 54 : 64); - lcd_outdezAtt(x+LCD_W/2-4-wbar-ofs, y, PPM_CH_CENTER(ch)+val/2, flags); -#elif defined(PPM_UNIT_PERCENT_PREC1) - uint8_t wbar = (longNames ? 48 : 58); - lcd_outdezAtt(x+LCD_W/2-4-wbar-ofs, y, calcRESXto1000(val), PREC1|flags); -#else - uint8_t wbar = (longNames ? 54 : 64); - lcd_outdezAtt(x+LCD_W/2-4-wbar-ofs, y, calcRESXto1000(val)/10, flags); -#endif - - // Gauge - lcd_rect(x+LCD_W/2-3-wbar-ofs, y, wbar+1, 6); - uint16_t lim = g_model.extendedLimits ? 640*2 : 512*2; - uint8_t len = limit((uint8_t)1, uint8_t((abs(val) * wbar/2 + lim/2) / lim), uint8_t(wbar/2)); - uint8_t x0 = (val>0) ? x+LCD_W/2-ofs-3-wbar/2 : x+LCD_W/2-ofs-2-wbar/2-len; - lcd_hline(x0, y+1, len); - lcd_hline(x0, y+2, len); - lcd_hline(x0, y+3, len); - lcd_hline(x0, y+4, len); - - ch++; - } - } - - longNames = newLongNames; -} -#endif - -#if defined(CPUM64) - #define editNameCursorPos m_posHorz -#else - static uint8_t editNameCursorPos = 0; -#endif - -void editName(uint8_t x, uint8_t y, char *name, uint8_t size, uint8_t event, uint8_t active) -{ -#if defined(CPUM64) - // in order to save flash - lcd_putsLeft(y, STR_NAME); -#endif - - lcd_putsnAtt(x, y, name, size, ZCHAR | ((active && s_editMode <= 0) ? INVERS : 0)); - - if (active) { - uint8_t cur = editNameCursorPos; - if (s_editMode > 0) { - int8_t c = name[cur]; - int8_t v = c; - - if (p1valdiff || IS_ROTARY_RIGHT(event) || IS_ROTARY_LEFT(event) || event==EVT_KEY_FIRST(KEY_DOWN) || event==EVT_KEY_FIRST(KEY_UP) - || event==EVT_KEY_REPT(KEY_DOWN) || event==EVT_KEY_REPT(KEY_UP)) { - v = checkIncDec(event, abs(v), 0, LEN_STD_CHARS, 0); - if (c <= 0) v = -v; - } - - switch (event) { -#if defined(ROTARY_ENCODER_NAVIGATION) || defined(PCBTARANIS) - case EVT_ROTARY_BREAK: - if (s_editMode == EDIT_MODIFY_FIELD) { - s_editMode = EDIT_MODIFY_STRING; - cur = 0; - } - else if (cur0) cur--; - break; - case EVT_KEY_BREAK(KEY_RIGHT): - if (cur=-26 && v<=26) { - v = -v; // toggle case - if (event==EVT_KEY_LONG(KEY_LEFT)) - killEvents(KEY_LEFT); - } - break; - } - - if (c != v) { - name[cur] = v; - eeDirty(EE_MODEL); - } - lcd_putcAtt(x+editNameCursorPos*FW, y, idx2char(v), INVERS); - } - else { - cur = 0; - } - editNameCursorPos = cur; - } -} - -#if defined(CPUM64) -#define editSingleName(x, y, label, name, size, event, active) editName(x, y, name, size, event, active) -#else -void editSingleName(uint8_t x, uint8_t y, const pm_char *label, char *name, uint8_t size, uint8_t event, uint8_t active) -{ - lcd_putsLeft(y, label); - editName(x, y, name, size, event, active); -} -#endif - -enum menuModelSetupItems { - ITEM_MODEL_NAME, - CASE_PCBTARANIS(ITEM_MODEL_BITMAP) - ITEM_MODEL_TIMER1, - IF_PERSISTENT_TIMERS(ITEM_MODEL_TIMER1_PERSISTENT) - ITEM_MODEL_TIMER1_MINUTE_BEEP, - ITEM_MODEL_TIMER1_COUNTDOWN_BEEP, - ITEM_MODEL_TIMER2, - IF_PERSISTENT_TIMERS(ITEM_MODEL_TIMER2_PERSISTENT) - ITEM_MODEL_TIMER2_MINUTE_BEEP, - ITEM_MODEL_TIMER2_COUNTDOWN_BEEP, - ITEM_MODEL_EXTENDED_LIMITS, - ITEM_MODEL_EXTENDED_TRIMS, - ITEM_MODEL_TRIM_INC, - ITEM_MODEL_THROTTLE_REVERSED, - ITEM_MODEL_THROTTLE_TRACE, - ITEM_MODEL_THROTTLE_TRIM, - ITEM_MODEL_THROTTLE_WARNING, - ITEM_MODEL_SWITCHES_WARNING, - ITEM_MODEL_BEEP_CENTER, -#if defined(PCBTARANIS) - ITEM_MODEL_INTERNAL_MODULE_LABEL, - ITEM_MODEL_INTERNAL_MODULE_MODE, - ITEM_MODEL_INTERNAL_MODULE_CHANNELS, - ITEM_MODEL_INTERNAL_MODULE_BIND, - ITEM_MODEL_INTERNAL_MODULE_FAILSAFE, - ITEM_MODEL_EXTERNAL_MODULE_LABEL, - ITEM_MODEL_EXTERNAL_MODULE_MODE, - ITEM_MODEL_EXTERNAL_MODULE_CHANNELS, - ITEM_MODEL_EXTERNAL_MODULE_BIND, - ITEM_MODEL_EXTERNAL_MODULE_FAILSAFE, - ITEM_MODEL_TRAINER_LABEL, - ITEM_MODEL_TRAINER_MODE, - ITEM_MODEL_TRAINER_CHANNELS, - ITEM_MODEL_TRAINER_SETTINGS, -#elif defined(PCBSKY9X) - ITEM_MODEL_PPM1_PROTOCOL, - ITEM_MODEL_PPM1_PARAMS, - ITEM_MODEL_PPM2_PROTOCOL, - ITEM_MODEL_PPM2_PARAMS, -#else - ITEM_MODEL_PPM1_PROTOCOL, - ITEM_MODEL_PPM1_PARAMS, -#endif - ITEM_MODEL_SETUP_MAX -}; - -#if defined(PCBSKY9X) - #define FIELD_PROTOCOL_MAX 2 -#else - #define FIELD_PROTOCOL_MAX 1 -#endif - -#if LCD_W >= 212 -#define MODEL_SETUP_2ND_COLUMN (LCD_W-17*FW-MENUS_SCROLLBAR_WIDTH) -#else -#define MODEL_SETUP_2ND_COLUMN (LCD_W-11*FW-MENUS_SCROLLBAR_WIDTH) -#endif - -#if defined(PCBTARANIS) && defined(SDCARD) -void copySelection(char *dst, const char *src, uint8_t size) -{ - if (memcmp(src, "---", 3) == 0) - memset(dst, 0, size); - else - memcpy(dst, src, size); -} - -void onModelSetupBitmapMenu(const char *result) -{ - if (result == STR_UPDATE_LIST) { - if (!listSdFiles(BITMAPS_PATH, BITMAPS_EXT, sizeof(g_model.header.bitmap), NULL)) { - POPUP_WARNING(STR_NO_BITMAPS_ON_SD); - s_menu_flags = 0; - } - } - else { - // The user choosed a bmp file in the list - copySelection(g_model.header.bitmap, result, sizeof(g_model.header.bitmap)); - LOAD_MODEL_BITMAP(); - memcpy(modelHeaders[g_eeGeneral.currModel].bitmap, g_model.header.bitmap, sizeof(g_model.header.bitmap)); - eeDirty(EE_MODEL); - } -} -#endif - -void menuModelSetup(uint8_t event) -{ -#if defined(PCBTARANIS) - #define IF_PORT1_ON(x) (g_model.moduleData[0].rfProtocol == RF_PROTO_OFF ? HIDDEN_ROW : (uint8_t)(x)) - #define IF_PORT2_ON(x) (g_model.externalModule == MODULE_TYPE_NONE ? HIDDEN_ROW : (uint8_t)(x)) - #define IF_TRAINER_ON(x) (g_model.trainerMode ? (uint8_t)(x) : HIDDEN_ROW) - #define IF_PORT_ON(idx, x) (idx==0 ? IS_PORT1_ON(x) : (idx==1 ? IS_PORT2_ON(x) : IS_TRAINER_ON())) - #define IF_PORT2_XJT(x) (IS_MODULE_XJT(1) ? (uint8_t)x : HIDDEN_ROW) - #define IS_D8_RX(x) (g_model.moduleData[x].rfProtocol == RF_PROTO_D8) - #define PORT1_CHANNELS_ROWS() IF_PORT1_ON(1) - #define PORT2_CHANNELS_ROWS() IF_PORT2_ON(IS_MODULE_DSM2(1) ? (uint8_t)0 : (uint8_t)1) - #define TRAINER_CHANNELS_ROWS() IF_TRAINER_ON(1) - #define PORT_CHANNELS_ROWS(x) (x==0 ? PORT1_CHANNELS_ROWS() : (x==1 ? PORT2_CHANNELS_ROWS() : TRAINER_CHANNELS_ROWS())) - #define FAILSAFE_ROWS(x) ((g_model.moduleData[x].rfProtocol==RF_PROTO_X16 || g_model.moduleData[x].rfProtocol==RF_PROTO_LR12) ? (g_model.moduleData[x].failsafeMode==FAILSAFE_CUSTOM ? (uint8_t)1 : (uint8_t)0) : HIDDEN_ROW) - #define MODEL_SETUP_MAX_LINES (1+ITEM_MODEL_SETUP_MAX) - - bool CURSOR_ON_CELL = (m_posHorz >= 0); - MENU_TAB({ 0, 0, CASE_PCBTARANIS(0) 2, IF_PERSISTENT_TIMERS(0) 0, 0, 2, IF_PERSISTENT_TIMERS(0) 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, NAVIGATION_LINE_BY_LINE|(NUM_STICKS+NUM_POTS+NUM_ROTARY_ENCODERS-1), LABEL(InternalModule), 0, IF_PORT1_ON(1), IF_PORT1_ON(IS_D8_RX(0) ? (uint8_t)1 : (uint8_t)2), IF_PORT1_ON(FAILSAFE_ROWS(0)), LABEL(ExternalModule), (g_model.externalModule==MODULE_TYPE_XJT || IS_MODULE_DSM2(EXTERNAL_MODULE)) ? (uint8_t)1 : (uint8_t)0, PORT2_CHANNELS_ROWS(), (IS_MODULE_XJT(1) && IS_D8_RX(1)) ? (uint8_t)1 : (IS_MODULE_PPM(1) || IS_MODULE_XJT(1) || IS_MODULE_DSM2(1)) ? (uint8_t)2 : HIDDEN_ROW, IF_PORT2_XJT(FAILSAFE_ROWS(1)), LABEL(Trainer), 0, TRAINER_CHANNELS_ROWS(), IF_TRAINER_ON(2)}); -#elif defined(CPUM64) - #define CURSOR_ON_CELL (true) - #define MODEL_SETUP_MAX_LINES ((IS_PPM_PROTOCOL(protocol)||IS_DSM2_PROTOCOL(protocol)||IS_PXX_PROTOCOL(protocol)) ? 1+ITEM_MODEL_SETUP_MAX : ITEM_MODEL_SETUP_MAX) - - uint8_t protocol = g_model.protocol; - MENU_TAB({ 0, 0, CASE_PCBTARANIS(0) 2, IF_PERSISTENT_TIMERS(0) 0, 0, 2, IF_PERSISTENT_TIMERS(0) 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NUM_STICKS+NUM_POTS+NUM_ROTARY_ENCODERS-1, FIELD_PROTOCOL_MAX, 2 }); -#else - #define CURSOR_ON_CELL (true) - #define MODEL_SETUP_MAX_LINES ((IS_PPM_PROTOCOL(protocol)||IS_DSM2_PROTOCOL(protocol)||IS_PXX_PROTOCOL(protocol)) ? 1+ITEM_MODEL_SETUP_MAX : ITEM_MODEL_SETUP_MAX) - - uint8_t protocol = g_model.protocol; - MENU_TAB({ 0, 0, CASE_PCBTARANIS(0) 2, IF_PERSISTENT_TIMERS(0) 0, 0, 2, IF_PERSISTENT_TIMERS(0) 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, NUM_STICKS+NUM_POTS+NUM_ROTARY_ENCODERS-1, FIELD_PROTOCOL_MAX, 2, IF_PCBSKY9X(1) IF_PCBSKY9X(2) }); -#endif - - if (!MENU_CHECK(menuTabModel, e_ModelSetup, MODEL_SETUP_MAX_LINES)) { -#if defined(DSM2) - dsm2Flag = 0; -#endif -#if defined(PCBTARANIS) - pxxFlag[INTERNAL_MODULE] = 0; - pxxFlag[EXTERNAL_MODULE] = 0; -#endif - return; - } - - TITLE(STR_MENUSETUP); - - uint8_t sub = m_posVert - 1; - int8_t editMode = s_editMode; - - for (uint8_t i=0; i0) ? BLINK|INVERS : INVERS); - uint8_t attr = (sub == k ? blink : 0); - - switch(k) { - case ITEM_MODEL_NAME: - editSingleName(MODEL_SETUP_2ND_COLUMN, y, STR_MODELNAME, g_model.header.name, sizeof(g_model.header.name), event, attr); -#if defined(CPUARM) - memcpy(modelHeaders[g_eeGeneral.currModel].name, g_model.header.name, sizeof(g_model.header.name)); -#endif - break; - -#if defined(PCBTARANIS) && defined(SDCARD) - case ITEM_MODEL_BITMAP: - lcd_putsLeft(y, STR_BITMAP); - if (ZEXIST(g_model.header.bitmap)) - lcd_putsnAtt(MODEL_SETUP_2ND_COLUMN, y, g_model.header.bitmap, sizeof(g_model.header.bitmap), attr); - else - lcd_putsiAtt(MODEL_SETUP_2ND_COLUMN, y, STR_VCSWFUNC, 0, attr); - if (attr && event==EVT_KEY_BREAK(KEY_ENTER) && READ_ONLY_UNLOCKED()) { - s_editMode = 0; - if (listSdFiles(BITMAPS_PATH, BITMAPS_EXT, sizeof(g_model.header.bitmap), g_model.header.bitmap, LIST_NONE_SD_FILE)) { - menuHandler = onModelSetupBitmapMenu; - } - else { - POPUP_WARNING(STR_NO_BITMAPS_ON_SD); - s_menu_flags = 0; - } - } - break; -#endif - - case ITEM_MODEL_TIMER1: - case ITEM_MODEL_TIMER2: - case ITEM_MODEL_TIMER1_MINUTE_BEEP: - case ITEM_MODEL_TIMER2_MINUTE_BEEP: - case ITEM_MODEL_TIMER1_COUNTDOWN_BEEP: - case ITEM_MODEL_TIMER2_COUNTDOWN_BEEP: - { - TimerData *timer = &g_model.timers[k>=ITEM_MODEL_TIMER2 ? 1 : 0]; - if (k==ITEM_MODEL_TIMER1_MINUTE_BEEP || k==ITEM_MODEL_TIMER2_MINUTE_BEEP) { - timer->minuteBeep = onoffMenuItem(timer->minuteBeep, MODEL_SETUP_2ND_COLUMN, y, STR_MINUTEBEEP, attr, event); - } - else if (k==ITEM_MODEL_TIMER1_COUNTDOWN_BEEP || k==ITEM_MODEL_TIMER2_COUNTDOWN_BEEP) { -#if defined(CPUARM) - timer->countdownBeep = selectMenuItem(MODEL_SETUP_2ND_COLUMN, y, STR_BEEPCOUNTDOWN, STR_VBEEPCOUNTDOWN, timer->countdownBeep, 0, 2, attr, event); -#else - timer->countdownBeep = onoffMenuItem(timer->countdownBeep, MODEL_SETUP_2ND_COLUMN, y, STR_BEEPCOUNTDOWN, attr, event); -#endif - } - else { - putsStrIdx(0*FW, y, STR_TIMER, k>=ITEM_MODEL_TIMER2 ? 2 : 1); - putsTmrMode(MODEL_SETUP_2ND_COLUMN, y, timer->mode, m_posHorz==0 ? attr : 0); - putsTime(MODEL_SETUP_2ND_COLUMN+5*FW-2+5*FWNUM+1, y, timer->start, m_posHorz==1 ? attr : 0, m_posHorz==2 ? attr : 0); -#if defined(PCBTARANIS) - if (attr && m_posHorz < 0) lcd_filled_rect(MODEL_SETUP_2ND_COLUMN, y, LCD_W-MODEL_SETUP_2ND_COLUMN-MENUS_SCROLLBAR_WIDTH, 8); -#endif - if (attr && (editMode>0 || p1valdiff)) { - div_t qr = div(timer->start, 60); - switch (m_posHorz) { - case 0: - CHECK_INCDEC_MODELVAR(event, timer->mode, -2*(MAX_PSWITCH+NUM_CSW), TMR_VAROFS-1+2*(MAX_PSWITCH+NUM_CSW)); - break; - case 1: - CHECK_INCDEC_MODELVAR_ZERO(event, qr.quot, 59); - timer->start = qr.rem + qr.quot*60; - break; - case 2: - qr.rem -= checkIncDecModel(event, qr.rem+2, 1, 62)-2; - timer->start -= qr.rem ; - if ((int16_t)timer->start < 0) timer->start=0; - break; - } - } - } - break; - } - -#if defined(CPUARM) || defined(PCBGRUVIN9X) - case ITEM_MODEL_TIMER1_PERSISTENT: - case ITEM_MODEL_TIMER2_PERSISTENT: - { - TimerData &timer = g_model.timers[k==ITEM_MODEL_TIMER2_PERSISTENT]; - timer.persistent = onoffMenuItem(timer.persistent, MODEL_SETUP_2ND_COLUMN, y, STR_PERSISTENT, attr, event); - break; - } -#endif - - case ITEM_MODEL_EXTENDED_LIMITS: - g_model.extendedLimits = onoffMenuItem(g_model.extendedLimits, MODEL_SETUP_2ND_COLUMN, y, STR_ELIMITS, attr, event); - break; - - case ITEM_MODEL_EXTENDED_TRIMS: -#if defined(CPUM64) - g_model.extendedTrims = onoffMenuItem(g_model.extendedTrims, MODEL_SETUP_2ND_COLUMN, y, STR_ETRIMS, attr, event); -#else - g_model.extendedTrims = onoffMenuItem(g_model.extendedTrims, MODEL_SETUP_2ND_COLUMN, y, STR_ETRIMS, m_posHorz<=0 ? attr : 0, event==EVT_KEY_BREAK(KEY_ENTER) ? event : 0); - lcd_putsAtt(MODEL_SETUP_2ND_COLUMN+3*FW, y, STR_RESET_BTN, m_posHorz>0 ? attr : 0); - if (attr && m_posHorz>0) { - s_editMode = 0; - if (event==EVT_KEY_LONG(KEY_ENTER)) { - for (uint8_t i=0; i MIXSRC_Thr) - idx += 1; - if (idx >= MIXSRC_FIRST_POT+NUM_POTS) - idx += MIXSRC_CH1 - MIXSRC_FIRST_POT - NUM_POTS; - putsMixerSource(MODEL_SETUP_2ND_COLUMN, y, idx, attr); - break; - } - - case ITEM_MODEL_THROTTLE_TRIM: - g_model.thrTrim = onoffMenuItem(g_model.thrTrim, MODEL_SETUP_2ND_COLUMN, y, STR_TTRIM, attr, event); - break; - - case ITEM_MODEL_THROTTLE_WARNING: - g_model.disableThrottleWarning = !onoffMenuItem(!g_model.disableThrottleWarning, MODEL_SETUP_2ND_COLUMN, y, STR_THROTTLEWARNING, attr, event); - break; - - case ITEM_MODEL_SWITCHES_WARNING: - { - lcd_putsLeft(y, STR_SWITCHWARNING); - swstate_t states = g_model.switchWarningStates; - char c = !(states & 1); - menu_lcd_onoff(MODEL_SETUP_2ND_COLUMN, y, c, attr); - if (attr) { - s_editMode = 0; - switch(event) { - case EVT_KEY_LONG(KEY_ENTER): - if (!READ_ONLY()) { - killEvents(event); - getMovedSwitch(); - g_model.switchWarningStates = 0x01 + (switches_states << 1); - } - // no break - CASE_EVT_ROTARY_BREAK - case EVT_KEY_BREAK(KEY_ENTER): -#if !defined(PCBTARANIS) - case EVT_KEY_BREAK(KEY_LEFT): - case EVT_KEY_BREAK(KEY_RIGHT): -#endif - if (!READ_ONLY()) { - g_model.switchWarningStates ^= 0x01; - eeDirty(EE_MODEL); - } - break; - } - } - if (c) { - states >>= 1; - for (uint8_t i=1; i>= 2; -#else - attr = 0; - if (IS_3POS(i-1)) { - c = '0'+(states & 0x03); - states >>= 2; - } - else { - if (states & 0x01) - attr = INVERS; - c = pgm_read_byte(STR_VSWITCHES - 2 + 6 + (3*i)); - states >>= 1; - } - lcd_putcAtt(MODEL_SETUP_2ND_COLUMN+2*FW+i*FW, y, c, attr); -#endif - } - } - break; - } - - case ITEM_MODEL_BEEP_CENTER: - lcd_putsLeft(y, STR_BEEPCTR); - for (uint8_t i=0; i0 || p1valdiff)) { - switch (m_posHorz) { - case 0: - CHECK_INCDEC_MODELVAR(event, g_model.externalModule, MODULE_TYPE_NONE, MODULE_TYPE_COUNT-1); - if (checkIncDec_Ret) { - g_model.moduleData[EXTERNAL_MODULE].channelsStart = 0; - if (g_model.externalModule == MODULE_TYPE_PPM) - g_model.moduleData[EXTERNAL_MODULE].channelsCount = 0; - else - g_model.moduleData[EXTERNAL_MODULE].channelsCount = MAX_PORT2_CHANNELS(); - } - break; - case 1: - if (IS_MODULE_DSM2(EXTERNAL_MODULE)) - CHECK_INCDEC_MODELVAR(event, g_model.moduleData[EXTERNAL_MODULE].rfProtocol, DSM2_PROTO_LP45, DSM2_PROTO_DSMX); - else - CHECK_INCDEC_MODELVAR(event, g_model.moduleData[EXTERNAL_MODULE].rfProtocol, RF_PROTO_X16, RF_PROTO_LAST); - if (checkIncDec_Ret) { - g_model.moduleData[EXTERNAL_MODULE].channelsStart = 0; - g_model.moduleData[EXTERNAL_MODULE].channelsCount = MAX_PORT2_CHANNELS(); - } - } - } - break; - - case ITEM_MODEL_INTERNAL_MODULE_CHANNELS: - case ITEM_MODEL_EXTERNAL_MODULE_CHANNELS: - case ITEM_MODEL_TRAINER_CHANNELS: - { - uint8_t moduleIdx = (k>=ITEM_MODEL_TRAINER_LABEL ? 2 : (k>=ITEM_MODEL_EXTERNAL_MODULE_LABEL ? 1 : 0)); - ModuleData & moduleData = g_model.moduleData[moduleIdx]; - lcd_putsLeft(y, STR_CHANNELRANGE); - if ((int8_t)PORT_CHANNELS_ROWS(moduleIdx) >= 0) { - lcd_putsAtt(MODEL_SETUP_2ND_COLUMN, y, STR_CH, m_posHorz==0 ? attr : 0); - lcd_outdezAtt(lcdLastPos, y, moduleData.channelsStart+1, LEFT | (m_posHorz==0 ? attr : 0)); - lcd_putc(lcdLastPos, y, '-'); - lcd_outdezAtt(lcdLastPos + FW+1, y, moduleData.channelsStart+NUM_CHANNELS(moduleIdx), LEFT | (m_posHorz==1 ? attr : 0)); - if (attr && (editMode>0 || p1valdiff)) { - switch (m_posHorz) { - case 0: - CHECK_INCDEC_MODELVAR_ZERO(event, moduleData.channelsStart, 32-8-moduleData.channelsCount); - break; - case 1: - CHECK_INCDEC_MODELVAR(event, moduleData.channelsCount, -4, min(MAX_CHANNELS(moduleIdx), 32-8-moduleData.channelsStart)); - if ((k == ITEM_MODEL_EXTERNAL_MODULE_CHANNELS && g_model.externalModule == MODULE_TYPE_PPM) || (k == ITEM_MODEL_TRAINER_CHANNELS)) - SET_DEFAULT_PPM_FRAME_LENGTH(moduleIdx); - break; - } - } - } - break; - } - - case ITEM_MODEL_INTERNAL_MODULE_BIND: - case ITEM_MODEL_EXTERNAL_MODULE_BIND: - case ITEM_MODEL_TRAINER_SETTINGS: - { - uint8_t moduleIdx = (k>=ITEM_MODEL_TRAINER_LABEL ? 2 : (k>=ITEM_MODEL_EXTERNAL_MODULE_LABEL ? 1 : 0)); - ModuleData & moduleData = g_model.moduleData[moduleIdx]; - if (IS_MODULE_PPM(moduleIdx)) { - lcd_putsLeft(y, STR_PPMFRAME); - lcd_puts(MODEL_SETUP_2ND_COLUMN+3*FW, y, STR_MS); - lcd_outdezAtt(MODEL_SETUP_2ND_COLUMN, y, (int16_t)moduleData.ppmFrameLength*5 + 225, (m_posHorz<=0 ? attr : 0) | PREC1|LEFT); - lcd_putc(MODEL_SETUP_2ND_COLUMN+8*FW+2, y, 'u'); - lcd_outdezAtt(MODEL_SETUP_2ND_COLUMN+8*FW+2, y, (moduleData.ppmDelay*50)+300, (m_posHorz < 0 || m_posHorz==1) ? attr : 0); - lcd_putcAtt(MODEL_SETUP_2ND_COLUMN+10*FW, y, moduleData.ppmPulsePol ? '+' : '-', (m_posHorz < 0 || m_posHorz==2) ? attr : 0); - - if (attr && (editMode>0 || p1valdiff)) { - switch (m_posHorz) { - case 0: - CHECK_INCDEC_MODELVAR(event, moduleData.ppmFrameLength, -20, 35); - break; - case 1: - CHECK_INCDEC_MODELVAR(event, moduleData.ppmDelay, -4, 10); - break; - case 2: - CHECK_INCDEC_MODELVAR_ZERO(event, moduleData.ppmPulsePol, 1); - break; - } - } - } - else { - horzpos_t l_posHorz = m_posHorz; - uint8_t xOffsetBind = 3*FW; - if (IS_MODULE_XJT(moduleIdx) && IS_D8_RX(moduleIdx)) { - xOffsetBind = 0; - lcd_putsLeft(y, INDENT "Receiver"); - if (attr) l_posHorz += 1; - } - else { - lcd_putsLeft(y, STR_RXNUM); - } - if (IS_MODULE_XJT(moduleIdx) || IS_MODULE_DSM2(moduleIdx)) { - if (xOffsetBind) lcd_outdezNAtt(MODEL_SETUP_2ND_COLUMN, y, g_model.header.modelId, (l_posHorz==0 ? attr : 0) | LEADING0|LEFT, 2); - if (attr && l_posHorz==0) { - if (editMode>0 || p1valdiff) { - CHECK_INCDEC_MODELVAR_ZERO(event, g_model.header.modelId, IS_MODULE_DSM2(moduleIdx) ? 20 : 63); - if (checkIncDec_Ret) { - modelHeaders[g_eeGeneral.currModel].modelId = g_model.header.modelId; - } - } - if (editMode==0 && event==EVT_KEY_BREAK(KEY_ENTER)) { - checkModelIdUnique(g_eeGeneral.currModel); - } - } - lcd_putsAtt(MODEL_SETUP_2ND_COLUMN+xOffsetBind, y, STR_MODULE_BIND, l_posHorz==1 ? attr : 0); - lcd_putsAtt(MODEL_SETUP_2ND_COLUMN+7*FW+xOffsetBind, y, STR_MODULE_RANGE, l_posHorz==2 ? attr : 0); - if (IS_MODULE_XJT(moduleIdx)) { - uint8_t newFlag = 0; - if (attr && l_posHorz>0 && s_editMode>0) { - if (l_posHorz == 1) - newFlag = PXX_SEND_RXNUM; - else if (l_posHorz == 2) { - newFlag = PXX_SEND_RANGECHECK; - } - } - pxxFlag[moduleIdx] = newFlag; - } -#if defined(DSM2) - else { - uint8_t newFlag = 0; - if (attr && l_posHorz>0 && s_editMode>0) { - if (l_posHorz == 1) - newFlag = DSM2_BIND_FLAG; - else if (l_posHorz == 2) { - newFlag = DSM2_RANGECHECK_FLAG; - } - } - dsm2Flag = newFlag; - } -#endif - } - } - break; - } - - case ITEM_MODEL_INTERNAL_MODULE_FAILSAFE: - case ITEM_MODEL_EXTERNAL_MODULE_FAILSAFE: - { - uint8_t moduleIdx = (k>=ITEM_MODEL_EXTERNAL_MODULE_LABEL ? 1 : 0); - ModuleData & moduleData = g_model.moduleData[moduleIdx]; - lcd_putsLeft(y, TR_FAILSAFE); - if (IS_MODULE_XJT(moduleIdx)) { - lcd_putsiAtt(MODEL_SETUP_2ND_COLUMN, y, STR_VFAILSAFE, moduleData.failsafeMode, m_posHorz==0 ? attr : 0); - if (moduleData.failsafeMode == FAILSAFE_CUSTOM) lcd_putsAtt(MODEL_SETUP_2ND_COLUMN + 10*FW, y, STR_SET, m_posHorz==1 ? attr : 0); - if (attr) { - if (moduleData.failsafeMode != FAILSAFE_CUSTOM) - m_posHorz = 0; - if (m_posHorz==0) { - if (editMode>0 || p1valdiff) { - CHECK_INCDEC_MODELVAR_ZERO(event, moduleData.failsafeMode, FAILSAFE_LAST); - if (checkIncDec_Ret) SEND_FAILSAFE_NOW(moduleIdx); - } - } - else if (m_posHorz==1) { - s_editMode = 0; - if (moduleData.failsafeMode==FAILSAFE_CUSTOM && event==EVT_KEY_FIRST(KEY_ENTER)) { - g_moduleIdx = moduleIdx; - pushMenu(menuModelFailsafe); - } - } - else { - lcd_filled_rect(MODEL_SETUP_2ND_COLUMN, y, LCD_W-MODEL_SETUP_2ND_COLUMN-MENUS_SCROLLBAR_WIDTH, 8); - } - } - } - break; - } - - case ITEM_MODEL_TRAINER_LABEL: - lcd_putsLeft(y, STR_TRAINER); - break; - - case ITEM_MODEL_TRAINER_MODE: - g_model.trainerMode = selectMenuItem(MODEL_SETUP_2ND_COLUMN, y, STR_MODE, STR_VTRAINERMODES, g_model.trainerMode, 0, 1, attr, event); - break; - -#else - - case ITEM_MODEL_PPM1_PROTOCOL: -#if defined(PCBSKY9X) - lcd_putsLeft(y, PSTR("Port1")); -#else - lcd_putsLeft(y, NO_INDENT(STR_PROTO)); -#endif - - lcd_putsiAtt(MODEL_SETUP_2ND_COLUMN, y, STR_VPROTOS, protocol, m_posHorz<=0 ? attr : 0); - -#if defined(PCBSKY9X) - lcd_putsAtt(MODEL_SETUP_2ND_COLUMN+4*FW+3, y, STR_CH, m_posHorz==1 ? attr : 0); - lcd_outdezAtt(lcdLastPos, y, g_model.moduleData[0].channelsStart+1, LEFT | (m_posHorz==1 ? attr : 0)); - lcd_putc(lcdLastPos, y, '-'); - lcd_outdezAtt(lcdLastPos + FW+1, y, g_model.moduleData[0].channelsStart+NUM_PORT1_CHANNELS(), LEFT | (m_posHorz==2 ? attr : 0)); -#else - if (IS_PPM_PROTOCOL(protocol)) { - lcd_putsiAtt(MODEL_SETUP_2ND_COLUMN+7*FW, y, STR_NCHANNELS, g_model.ppmNCH+2, m_posHorz!=0 ? attr : 0); - } - else if (attr) { - MOVE_CURSOR_FROM_HERE(); - } -#endif - - if (attr && (editMode>0 || p1valdiff -#if !defined(PCBSKY9X) - || (!IS_PPM_PROTOCOL(protocol) && !IS_DSM2_PROTOCOL(protocol)) -#endif - )) { - switch (m_posHorz) { - case 0: - CHECK_INCDEC_MODELVAR_ZERO(event, g_model.protocol, PROTO_MAX-1); - break; - case 1: -#if defined(PCBSKY9X) - CHECK_INCDEC_MODELVAR_ZERO(event, g_model.moduleData[0].channelsStart, 32-8-g_model.moduleData[0].channelsCount); - g_model.moduleData[0].ppmFrameLength = max((int8_t)0, g_model.moduleData[0].channelsCount) * 4; - SET_DEFAULT_PPM_FRAME_LENGTH(0); -#else - CHECK_INCDEC_MODELVAR(event, g_model.ppmNCH, -2, 4); - g_model.ppmFrameLength = g_model.ppmNCH * 8; -#endif - break; -#if defined(PCBSKY9X) - case 2: - if (IS_PPM_PROTOCOL(protocol)) { - CHECK_INCDEC_MODELVAR(event, g_model.moduleData[0].channelsCount, -4, min(8, 32-8-g_model.moduleData[0].channelsStart)); - SET_DEFAULT_PPM_FRAME_LENGTH(0); - } - else - REPEAT_LAST_CURSOR_MOVE(); - break; -#endif - } - } - break; - -#if defined(PCBSKY9X) - case ITEM_MODEL_PPM2_PROTOCOL: - lcd_putsLeft(y, PSTR("Port2")); - lcd_putsiAtt(MODEL_SETUP_2ND_COLUMN, y, STR_VPROTOS, 0, 0); - lcd_putsAtt(MODEL_SETUP_2ND_COLUMN+4*FW+3, y, STR_CH, m_posHorz<=0 ? attr : 0); - lcd_outdezAtt(lcdLastPos, y, g_model.moduleData[1].channelsStart+1, LEFT | (m_posHorz<=0 ? attr : 0)); - lcd_putc(lcdLastPos, y, '-'); - lcd_outdezAtt(lcdLastPos + FW+1, y, g_model.moduleData[1].channelsStart+8+g_model.moduleData[1].channelsCount, LEFT | (m_posHorz!=0 ? attr : 0)); - if (attr && (editMode>0 || p1valdiff)) { - switch (m_posHorz) { - case 0: - CHECK_INCDEC_MODELVAR_ZERO(event, g_model.moduleData[1].channelsStart, 32-8-g_model.moduleData[1].channelsCount); - SET_DEFAULT_PPM_FRAME_LENGTH(1); - break; - case 1: - CHECK_INCDEC_MODELVAR(event, g_model.moduleData[1].channelsCount, -4, min(8, 32-8-g_model.moduleData[1].channelsStart)); - SET_DEFAULT_PPM_FRAME_LENGTH(1); - break; - } - } - break; - - case ITEM_MODEL_PPM2_PARAMS: - lcd_putsLeft(y, STR_PPMFRAME); - lcd_puts(MODEL_SETUP_2ND_COLUMN+3*FW, y, STR_MS); - lcd_outdezAtt(MODEL_SETUP_2ND_COLUMN, y, (int16_t)g_model.moduleData[1].ppmFrameLength*5 + 225, (m_posHorz<=0 ? attr : 0) | PREC1|LEFT); - lcd_putc(MODEL_SETUP_2ND_COLUMN+8*FW+2, y, 'u'); - lcd_outdezAtt(MODEL_SETUP_2ND_COLUMN+8*FW+2, y, (g_model.moduleData[1].ppmDelay*50)+300, (m_posHorz < 0 || m_posHorz==1) ? attr : 0); - lcd_putcAtt(MODEL_SETUP_2ND_COLUMN+10*FW, y, g_model.moduleData[1].ppmPulsePol ? '+' : '-', (m_posHorz < 0 || m_posHorz==2) ? attr : 0); - if (attr && (editMode>0 || p1valdiff)) { - switch (m_posHorz) { - case 0: - CHECK_INCDEC_MODELVAR(event, g_model.moduleData[1].ppmFrameLength, -20, 35); - break; - case 1: - CHECK_INCDEC_MODELVAR(event, g_model.moduleData[1].ppmDelay, -4, 10); - break; - case 2: - CHECK_INCDEC_MODELVAR_ZERO(event, g_model.moduleData[1].ppmPulsePol, 1); - break; - } - } - break; -#endif - - case ITEM_MODEL_PPM1_PARAMS: -#if defined(PCBSKY9X) - if (IS_PPM_PROTOCOL(protocol)) { - lcd_putsLeft(y, STR_PPMFRAME); - lcd_puts(MODEL_SETUP_2ND_COLUMN+3*FW, y, STR_MS); - lcd_outdezAtt(MODEL_SETUP_2ND_COLUMN, y, (int16_t)g_model.moduleData[0].ppmFrameLength*5 + 225, (m_posHorz<=0 ? attr : 0) | PREC1|LEFT); - lcd_putc(MODEL_SETUP_2ND_COLUMN+8*FW+2, y, 'u'); - lcd_outdezAtt(MODEL_SETUP_2ND_COLUMN+8*FW+2, y, (g_model.moduleData[0].ppmDelay*50)+300, (m_posHorz < 0 || m_posHorz==1) ? attr : 0); - lcd_putcAtt(MODEL_SETUP_2ND_COLUMN+10*FW, y, g_model.moduleData[0].ppmPulsePol ? '+' : '-', (m_posHorz < 0 || m_posHorz==2) ? attr : 0); - if (attr && (editMode>0 || p1valdiff)) { - switch (m_posHorz) { - case 0: - CHECK_INCDEC_MODELVAR(event, g_model.moduleData[0].ppmFrameLength, -20, 35); - break; - case 1: - CHECK_INCDEC_MODELVAR(event, g_model.moduleData[0].ppmDelay, -4, 10); - break; - case 2: - CHECK_INCDEC_MODELVAR_ZERO(event, g_model.moduleData[0].ppmPulsePol, 1); - break; - } - } - } -#else - if (IS_PPM_PROTOCOL(protocol)) { - lcd_putsLeft(y, STR_PPMFRAME); - lcd_puts(MODEL_SETUP_2ND_COLUMN+3*FW, y, STR_MS); - lcd_outdezAtt(MODEL_SETUP_2ND_COLUMN, y, (int16_t)g_model.ppmFrameLength*5 + 225, (m_posHorz<=0 ? attr : 0) | PREC1|LEFT); - lcd_putc(MODEL_SETUP_2ND_COLUMN+8*FW+2, y, 'u'); - lcd_outdezAtt(MODEL_SETUP_2ND_COLUMN+8*FW+2, y, (g_model.ppmDelay*50)+300, (m_posHorz < 0 || m_posHorz==1) ? attr : 0); - lcd_putcAtt(MODEL_SETUP_2ND_COLUMN+10*FW, y, g_model.pulsePol ? '+' : '-', (m_posHorz < 0 || m_posHorz==2) ? attr : 0); - if (attr && (editMode>0 || p1valdiff)) { - switch (m_posHorz) { - case 0: - CHECK_INCDEC_MODELVAR(event, g_model.ppmFrameLength, -20, 35); - break; - case 1: - CHECK_INCDEC_MODELVAR(event, g_model.ppmDelay, -4, 10); - break; - case 2: - CHECK_INCDEC_MODELVAR_ZERO(event, g_model.pulsePol, 1); - break; - } - } - } -#endif -#if defined(DSM2) || defined(PXX) - else if (IS_DSM2_PROTOCOL(protocol) || IS_PXX_PROTOCOL(protocol)) { - if (attr && m_posHorz > 1) { - REPEAT_LAST_CURSOR_MOVE(); // limit 3 column row to 2 colums (Rx_Num and RANGE fields) - } - - lcd_putsLeft(y, STR_RXNUM); - lcd_outdezNAtt(MODEL_SETUP_2ND_COLUMN, y, g_model.header.modelId, (m_posHorz<=0 ? attr : 0) | LEADING0|LEFT, 2); - if (attr && (m_posHorz==0 && (editMode>0 || p1valdiff))) { - CHECK_INCDEC_MODELVAR_ZERO(event, g_model.header.modelId, 99); -#if defined(CPUARM) - if (checkIncDec_Ret) - modelHeaders[g_eeGeneral.currModel].modelId = g_model.header.modelId; -#endif - } - -#if defined(PXX) - if (protocol == PROTO_PXX) { -#if defined(CPUARM) - if (attr && m_posHorz==0 && editMode==0 && event==EVT_KEY_BREAK(KEY_ENTER)) - checkModelIdUnique(g_eeGeneral.currModel); -#endif - - lcd_putsAtt(MODEL_SETUP_2ND_COLUMN+4*FW, y, STR_SYNCMENU, m_posHorz!=0 ? attr : 0); - if (attr && m_posHorz>0 && editMode>0) { - // send reset code - pxxFlag[0] = PXX_SEND_RXNUM; - } - } -#endif - -#if defined(DSM2) - if (IS_DSM2_PROTOCOL(protocol)) { - lcd_putsAtt(MODEL_SETUP_2ND_COLUMN+4*FW, y, STR_MODULE_RANGE, m_posHorz!=0 ? attr : 0); - dsm2Flag = (attr && m_posHorz>0 && editMode>0) ? DSM2_RANGECHECK_FLAG : 0; // [MENU] key toggles range check mode - } -#endif - } -#endif - break; -#endif // defined(PCBTARANIS) - } - } - -#if defined(PCBTARANIS) - if (pxxFlag[INTERNAL_MODULE] == PXX_SEND_RANGECHECK || pxxFlag[EXTERNAL_MODULE] == PXX_SEND_RANGECHECK) { - displayPopup("RSSI: "); - lcd_outdezAtt(16+4*FW, 5*FH, frskyData.rssi[0].value, BOLD); - } -#endif -} - -static uint8_t s_currIdx; - -#if MENU_COLUMNS < 2 - #if LCD_W >= 212 - #define MIXES_2ND_COLUMN (18*FW) - #else - #define MIXES_2ND_COLUMN (12*FW) - #endif -#else - #define MIXES_2ND_COLUMN (9*FW) -#endif - -#if LCD_W >= 212 - #define EXPO_ONE_2ND_COLUMN (LCD_W-8*FW-90) - #define EXPO_ONE_FP_WIDTH (9*FW) -#else - #define EXPO_ONE_2ND_COLUMN (7*FW+3*FW+2) - #define EXPO_ONE_FP_WIDTH (5*FW) -#endif - -#if MENU_COLUMNS > 1 -uint8_t editDelay(const xcoord_t x, const uint8_t y, const uint8_t event, const uint8_t attr, const pm_char *str, uint8_t delay) -{ - lcd_puts(x, y, str); - lcd_outdezAtt(x+MIXES_2ND_COLUMN, y, (10/DELAY_STEP)*delay, attr|PREC1|LEFT); - if (attr) CHECK_INCDEC_MODELVAR_ZERO(event, delay, DELAY_MAX); - return delay; -} -#define EDIT_DELAY(x, y, event, attr, str, delay) editDelay(x, y, event, attr, str, delay) -#else -uint8_t editDelay(const uint8_t y, const uint8_t event, const uint8_t attr, const pm_char *str, uint8_t delay) -{ - lcd_putsLeft(y, str); - lcd_outdezAtt(MIXES_2ND_COLUMN, y, (10/DELAY_STEP)*delay, attr|PREC1|LEFT); - if (attr) CHECK_INCDEC_MODELVAR_ZERO(event, delay, DELAY_MAX); - return delay; -} -#define EDIT_DELAY(x, y, event, attr, str, delay) editDelay(y, event, attr, str, delay) -#endif - -#if defined(FLIGHT_MODES) - -#if defined(CPUARM) - #define FlightModesType uint16_t -#else - #define FlightModesType uint8_t -#endif - -void displayFlightModes(uint8_t x, uint8_t y, FlightModesType value) -{ - uint8_t p = MAX_PHASES; - do { - --p; - if (!(value & (1< EXPO_ONE_2ND_COLUMN-FW))) - continue; -#endif -#if defined(PCBTARANIS) - LcdFlags flags = 0; - if (attr) { - flags |= INVERS; - if (posHorz==p) flags |= BLINK; - } - if (value & (1<= 212 - -enum FlightModesItems { - ITEM_PHASES_NAME, - ITEM_PHASES_SWITCH, - ITEM_PHASES_TRIMS, - ITEM_PHASES_FADE_IN, - ITEM_PHASES_FADE_OUT, - ITEM_PHASES_COUNT, - ITEM_PHASES_LAST = ITEM_PHASES_COUNT-1 -}; - -void editPhaseTrims(uint8_t x, uint8_t y, uint8_t phase, uint8_t event, uint8_t active) -{ - static uint8_t cursorPos = 0; - - for (uint8_t t=0; t 0) { - if (p1valdiff || IS_ROTARY_RIGHT(event) || IS_ROTARY_LEFT(event) || event==EVT_KEY_FIRST(KEY_DOWN) || event==EVT_KEY_FIRST(KEY_UP) - || event==EVT_KEY_REPT(KEY_DOWN) || event==EVT_KEY_REPT(KEY_UP)) { - int16_t v = getRawTrimValue(phase, cur); - if (v < TRIM_EXTENDED_MAX) v = TRIM_EXTENDED_MAX; - v = checkIncDec(event, v, TRIM_EXTENDED_MAX, TRIM_EXTENDED_MAX+MAX_PHASES-1, EE_MODEL); - if (checkIncDec_Ret) { - if (v == TRIM_EXTENDED_MAX) v = 0; - setTrimValue(phase, cur, v); - } - } - - switch (event) { -#if defined(ROTARY_ENCODER_NAVIGATION) || defined(PCBTARANIS) - case EVT_ROTARY_BREAK: - if (s_editMode == EDIT_MODIFY_FIELD) { - s_editMode = EDIT_MODIFY_STRING; - cur = 0; - } - else if (cur0) cur--; - break; - case EVT_KEY_BREAK(KEY_RIGHT): - if (cur 0) { posHorz += 2; } - - if (sub=0) { - displayColumnHeader(STR_PHASES_HEADERS, posHorz); - } - - for (uint8_t i=0; i0) ? BLINK|INVERS : INVERS) : 0); - uint8_t active = (attr && (s_editMode>0 || p1valdiff)) ; - switch(j) - { - case ITEM_PHASES_NAME: - editName(4*FW, y, p->name, sizeof(p->name), event, attr); - break; - - case ITEM_PHASES_SWITCH: - if (k == 0) { - lcd_puts((5+LEN_FP_NAME)*FW+FW/2, y, STR_DEFAULT); - } - else { - putsSwitches((5+LEN_FP_NAME)*FW+FW/2, y, p->swtch, attr); - if (active) CHECK_INCDEC_MODELSWITCH(event, p->swtch, -MAX_SWITCH, MAX_SWITCH); - } - break; - - case ITEM_PHASES_TRIMS: - if (k != 0) { - editPhaseTrims((10+LEN_FP_NAME)*FW+FW/2, y, k, event, attr); - } - break; - - case ITEM_PHASES_FADE_IN: - lcd_outdezAtt(29*FW, y, (10/DELAY_STEP)*p->fadeIn, attr|PREC1); - if (active) p->fadeIn = checkIncDec(event, p->fadeIn, 0, DELAY_MAX, EE_MODEL|NO_INCDEC_MARKS); - break; - - case ITEM_PHASES_FADE_OUT: - lcd_outdezAtt(34*FW, y, (10/DELAY_STEP)*p->fadeOut, attr|PREC1); - if (active) p->fadeOut = checkIncDec(event, p->fadeOut, 0, DELAY_MAX, EE_MODEL|NO_INCDEC_MARKS); - break; - - } - } - } -} - -#else // LCD_W >= 212 - -enum menuModelPhaseItems { - ITEM_MODEL_PHASE_NAME, - ITEM_MODEL_PHASE_SWITCH, - ITEM_MODEL_PHASE_TRIMS, - IF_ROTARY_ENCODERS(ITEM_MODEL_PHASE_ROTARY_ENCODERS) - ITEM_MODEL_PHASE_FADE_IN, - ITEM_MODEL_PHASE_FADE_OUT, -#if defined(GVARS) && !defined(PCBSTD) - ITEM_MODEL_PHASE_GVARS_LABEL, - ITEM_MODEL_PHASE_GV1, - ITEM_MODEL_PHASE_GV2, - ITEM_MODEL_PHASE_GV3, - ITEM_MODEL_PHASE_GV4, - ITEM_MODEL_PHASE_GV5, -#endif - ITEM_MODEL_PHASE_MAX -}; - -void menuModelPhaseOne(uint8_t event) -{ - PhaseData *phase = phaseAddress(s_currIdx); - putsFlightPhase(13*FW, 0, s_currIdx+1, (getFlightPhase()==s_currIdx ? BOLD : 0)); - -#if defined(GVARS) && !defined(PCBSTD) - static const pm_uint8_t mstate_tab_phase1[] PROGMEM = {0, 0, 0, (uint8_t)-1, 1, 1, 1, 1, 1}; - static const pm_uint8_t mstate_tab_others[] PROGMEM = {0, 0, 3, IF_ROTARY_ENCODERS(NUM_ROTARY_ENCODERS-1) 0, 0, (uint8_t)-1, 2, 2, 2, 2, 2}; - - if (!check(event, 0, NULL, 0, (s_currIdx == 0) ? mstate_tab_phase1 : mstate_tab_others, DIM(mstate_tab_others)-1, ITEM_MODEL_PHASE_MAX - 1 - (s_currIdx==0 ? (ITEM_MODEL_PHASE_FADE_IN-ITEM_MODEL_PHASE_SWITCH) : 0))) return; - - TITLE(STR_MENUFLIGHTPHASE); - - #define PHASE_ONE_FIRST_LINE (1+1*FH) -#else - SUBMENU(STR_MENUFLIGHTPHASE, 3 + (s_currIdx==0 ? 0 : 2 + (bool)NUM_ROTARY_ENCODERS), {0, 0, 3, IF_ROTARY_ENCODERS(NUM_ROTARY_ENCODERS-1) 0/*, 0*/}); - #define PHASE_ONE_FIRST_LINE (1+1*FH) -#endif - - int8_t sub = m_posVert; - int8_t editMode = s_editMode; - -#if defined(GVARS) && !defined(PCBSTD) - if (s_currIdx == 0 && sub>=ITEM_MODEL_PHASE_SWITCH) sub += ITEM_MODEL_PHASE_FADE_IN-ITEM_MODEL_PHASE_SWITCH; - - for (uint8_t k=0; k=ITEM_MODEL_PHASE_SWITCH) i += ITEM_MODEL_PHASE_FADE_IN-ITEM_MODEL_PHASE_SWITCH; - uint8_t attr = (sub==i ? (editMode>0 ? BLINK|INVERS : INVERS) : 0); -#else - for (uint8_t i=0, k=0, y=PHASE_ONE_FIRST_LINE; i0 ? BLINK|INVERS : INVERS) : 0); -#endif - switch(i) { - case ITEM_MODEL_PHASE_NAME: - editSingleName(MIXES_2ND_COLUMN, y, STR_PHASENAME, phase->name, sizeof(phase->name), event, attr); - break; - case ITEM_MODEL_PHASE_SWITCH: - phase->swtch = switchMenuItem(MIXES_2ND_COLUMN, y, phase->swtch, attr, event); - break; - case ITEM_MODEL_PHASE_TRIMS: - lcd_putsLeft(y, STR_TRIMS); - for (uint8_t t=0; t0) || p1valdiff)) { - int16_t v = getRawTrimValue(s_currIdx, t); - if (v < TRIM_EXTENDED_MAX) v = TRIM_EXTENDED_MAX; - v = checkIncDec(event, v, TRIM_EXTENDED_MAX, TRIM_EXTENDED_MAX+MAX_PHASES-1, EE_MODEL); - if (checkIncDec_Ret) { - if (v == TRIM_EXTENDED_MAX) v = 0; - setTrimValue(s_currIdx, t, v); - } - } - } - break; - -#if ROTARY_ENCODERS > 0 - case ITEM_MODEL_PHASE_ROTARY_ENCODERS: - lcd_putsLeft(y, STR_ROTARY_ENCODER); - for (uint8_t t=0; t0) || p1valdiff)) { -#if ROTARY_ENCODERS > 2 - int16_t v; - if(t < (NUM_ROTARY_ENCODERS - NUM_ROTARY_ENCODERS_EXTRA)) - v = phaseAddress(s_currIdx)->rotaryEncoders[t]; - else - v = g_model.rotaryEncodersExtra[s_currIdx][t-(NUM_ROTARY_ENCODERS - NUM_ROTARY_ENCODERS_EXTRA)]; -#else - int16_t v = phaseAddress(s_currIdx)->rotaryEncoders[t]; -#endif - if (v < ROTARY_ENCODER_MAX) v = ROTARY_ENCODER_MAX; - v = checkIncDec(event, v, ROTARY_ENCODER_MAX, ROTARY_ENCODER_MAX+MAX_PHASES-1, EE_MODEL); - if (checkIncDec_Ret) { - if (v == ROTARY_ENCODER_MAX) v = 0; -#if ROTARY_ENCODERS > 2 - if (t < (NUM_ROTARY_ENCODERS - NUM_ROTARY_ENCODERS_EXTRA)) - phaseAddress(s_currIdx)->rotaryEncoders[t] = v; - else - g_model.rotaryEncodersExtra[s_currIdx][t-(NUM_ROTARY_ENCODERS - NUM_ROTARY_ENCODERS_EXTRA)] = v; -#else - phaseAddress(s_currIdx)->rotaryEncoders[t] = v; -#endif - } - } - } - break; -#endif - - case ITEM_MODEL_PHASE_FADE_IN: - phase->fadeIn = EDIT_DELAY(0, y, event, attr, STR_FADEIN, phase->fadeIn); - break; - - case ITEM_MODEL_PHASE_FADE_OUT: - phase->fadeOut = EDIT_DELAY(0, y, event, attr, STR_FADEOUT, phase->fadeOut); - break; - -#if defined(GVARS) && !defined(PCBSTD) - case ITEM_MODEL_PHASE_GVARS_LABEL: - lcd_putsLeft(y, STR_GLOBAL_VARS); - break; - - default: - { - uint8_t idx = i-ITEM_MODEL_PHASE_GV1; - uint8_t posHorz = m_posHorz; - if (attr && posHorz > 0 && s_currIdx==0) posHorz++; - - putsStrIdx(INDENT_WIDTH, y, STR_GV, idx+1); - - editName(4*FW, y, g_model.gvars[idx].name, LEN_GVAR_NAME, event, posHorz==0 ? attr : 0); - - int16_t v = phase->gvars[idx]; - if (v > GVAR_MAX) { - uint8_t p = v - GVAR_MAX - 1; - if (p >= s_currIdx) p++; - putsFlightPhase(11*FW, y, p+1, posHorz==1 ? attr : 0); - } - else { - lcd_putsAtt(11*FW, y, STR_OWN, posHorz==1 ? attr : 0); - } - if (attr && s_currIdx>0 && posHorz==1 && (editMode>0 || p1valdiff)) { - if (v < GVAR_MAX) v = GVAR_MAX; - v = checkIncDec(event, v, GVAR_MAX, GVAR_MAX+MAX_PHASES-1, EE_MODEL); - if (checkIncDec_Ret) { - if (v == GVAR_MAX) v = 0; - phase->gvars[idx] = v; - } - } - - uint8_t p = getGVarFlightPhase(s_currIdx, idx); - lcd_outdezAtt(21*FW, y, GVAR_VALUE(idx, p), posHorz==2 ? attr : 0); - if (attr && posHorz==2 && ((editMode>0) || p1valdiff)) { - GVAR_VALUE(idx, p) = checkIncDec(event, GVAR_VALUE(idx, p), -GVAR_LIMIT, GVAR_LIMIT, EE_MODEL); - } - - break; - } -#endif - } - } -} - -#if defined(ROTARY_ENCODERS) - #if ROTARY_ENCODERS > 2 - #define NAME_OFS (-4-12) - #define SWITCH_OFS (-FW/2-2-13) - #define TRIMS_OFS (-FW/2-4-15) - #define ROTARY_ENC_OFS (0) - #else - #define NAME_OFS (-4) - #define SWITCH_OFS (-FW/2-2) - #define TRIMS_OFS (-FW/2-4) - #define ROTARY_ENC_OFS (2) - #endif -#else - #define NAME_OFS 0 - #define SWITCH_OFS (FW/2) - #define TRIMS_OFS (FW/2) -#endif - -void menuModelFlightModesAll(uint8_t event) -{ - SIMPLE_MENU(STR_MENUFLIGHTPHASES, menuTabModel, e_FlightModesAll, 1+MAX_PHASES+1); - - int8_t sub = m_posVert - 1; - - switch (event) { - CASE_EVT_ROTARY_BREAK - case EVT_KEY_FIRST(KEY_ENTER): - if (sub == MAX_PHASES) { - s_editMode = 0; - trimsCheckTimer = 200; // 2 seconds - } - // no break - case EVT_KEY_FIRST(KEY_RIGHT): - if (sub >= 0 && sub < MAX_PHASES) { - s_currIdx = sub; - pushMenu(menuModelPhaseOne); - } - break; - } - - uint8_t att; - for (uint8_t i=0; i(LCD_LINES-1)*FH+1) continue; -#else - uint8_t y = 1 + (i+1)*FH; -#endif - att = (i==sub ? INVERS : 0); - PhaseData *p = phaseAddress(i); -#if ROTARY_ENCODERS > 2 - putsFlightPhase(0, y, i+1, att|CONDENSED|(getFlightPhase()==i ? BOLD : 0)); -#else - putsFlightPhase(0, y, i+1, att|(getFlightPhase()==i ? BOLD : 0)); -#endif - - lcd_putsnAtt(4*FW+NAME_OFS, y, p->name, sizeof(p->name), ZCHAR); - if (i == 0) { - lcd_puts((5+LEN_FP_NAME)*FW+SWITCH_OFS, y, STR_DEFAULT); - } - else { - putsSwitches((5+LEN_FP_NAME)*FW+SWITCH_OFS, y, p->swtch, 0); - for (uint8_t t=0; tfadeIn || p->fadeOut) - lcd_putc(LCD_W-FW-MENUS_SCROLLBAR_WIDTH, y, (p->fadeIn && p->fadeOut) ? '*' : (p->fadeIn ? 'I' : 'O')); - - } - -#if defined(CPUARM) - if (s_pgOfs != MAX_PHASES-(LCD_LINES-2)) return; -#endif - - lcd_putsLeft((LCD_LINES-1)*FH+1, STR_CHECKTRIMS); - putsFlightPhase(OFS_CHECKTRIMS, (LCD_LINES-1)*FH+1, s_perout_flight_phase+1); - if (sub==MAX_PHASES && !trimsCheckTimer) { - lcd_status_line(); - } -} - -#endif // defined(PCBTARANIS) - -#else // defined(FLIGHT_MODES) - -#define displayFlightModes(...) - -#endif - -#if defined(HELI) - -enum menuModelHeliItems { - ITEM_HELI_SWASHTYPE, - ITEM_HELI_COLLECTIVE, - ITEM_HELI_SWASHRING, - ITEM_HELI_ELEDIRECTION, - ITEM_HELI_AILDIRECTION, - ITEM_HELI_COLDIRECTION -}; - -#if LCD_W >= 212 - #define HELI_PARAM_OFS (23*FW) -#else - #define HELI_PARAM_OFS (14*FW) -#endif - -void menuModelHeli(uint8_t event) -{ - SIMPLE_MENU(STR_MENUHELISETUP, menuTabModel, e_Heli, 7); - - uint8_t sub = m_posVert - 1; - - for (uint8_t i=0; i<6; i++) { - uint8_t y = 1 + 1*FH + i*FH; - uint8_t attr = (sub == i ? ((s_editMode>0) ? BLINK|INVERS : INVERS) : 0); - switch(i) { - case ITEM_HELI_SWASHTYPE: - g_model.swashR.type = selectMenuItem(HELI_PARAM_OFS, y, STR_SWASHTYPE, STR_VSWASHTYPE, g_model.swashR.type, 0, SWASH_TYPE_NUM, attr, event); - break; - - case ITEM_HELI_COLLECTIVE: -#if defined(PCBTARANIS) - lcd_putsLeft(y, STR_COLLECTIVE); - if (attr) CHECK_INCDEC_MODELSOURCE(event, g_model.swashR.collectiveSource, 0, MIXSRC_LAST_CH); -#else - g_model.swashR.collectiveSource = selectMenuItem(HELI_PARAM_OFS, y, STR_COLLECTIVE, NULL, g_model.swashR.collectiveSource, 0, MIXSRC_LAST_CH, attr, event); -#endif - putsMixerSource(HELI_PARAM_OFS, y, g_model.swashR.collectiveSource, attr); - break; - - case ITEM_HELI_SWASHRING: - lcd_putsLeft(y, STR_SWASHRING); - lcd_outdezAtt(HELI_PARAM_OFS, y, g_model.swashR.value, LEFT|attr); - if (attr) CHECK_INCDEC_MODELVAR_ZERO(event, g_model.swashR.value, 100); - break; - - case ITEM_HELI_ELEDIRECTION: - g_model.swashR.invertELE = selectMenuItem(HELI_PARAM_OFS, y, STR_ELEDIRECTION, STR_MMMINV, g_model.swashR.invertELE, 0, 1, attr, event); - break; - - case ITEM_HELI_AILDIRECTION: - g_model.swashR.invertAIL = selectMenuItem(HELI_PARAM_OFS, y, STR_AILDIRECTION, STR_MMMINV, g_model.swashR.invertAIL, 0, 1, attr, event); - break; - - case ITEM_HELI_COLDIRECTION: - g_model.swashR.invertCOL = selectMenuItem(HELI_PARAM_OFS, y, STR_COLDIRECTION, STR_MMMINV, g_model.swashR.invertCOL, 0, 1, attr, event); - break; - } - } -} -#endif - -typedef int16_t (*FnFuncP) (int16_t x); - -int16_t expoFn(int16_t x) -{ - ExpoData *ed = expoAddress(s_currIdx); - int16_t anas[NUM_INPUTS] = {0}; -#if defined(PCBTARANIS) - applyExpos(anas, e_perout_mode_inactive_phase, ed->srcRaw, x); -#else - anas[ed->chn] = x; - applyExpos(anas, e_perout_mode_inactive_phase); -#endif - return anas[ed->chn]; -} - -void DrawFunction(FnFuncP fn, uint8_t offset=0) -{ - lcd_vlineStip(X0-offset, 0, LCD_H, 0xee); - lcd_hlineStip(X0-WCHART-offset, Y0, WCHART*2, 0xee); - - uint8_t prev_yv = 255; - - for (int8_t xv=-WCHART; xv<=WCHART; xv++) { - uint8_t yv = (LCD_H-1) - (((uint16_t)RESX + fn(xv * (RESX/WCHART))) / 2 * (LCD_H-1) / RESX); - if (prev_yv != 255) { - if (abs((int8_t)yv-prev_yv) <= 1) { - lcd_plot(X0+xv-offset-1, prev_yv, FORCE); - } - else { - uint8_t tmp = (prev_yv < yv ? 0 : 1); - lcd_vline(X0+xv-offset-1, yv+tmp, prev_yv-yv); - } - } - prev_yv = yv; - } -} - -#if defined(CURVES) -static uint8_t s_curveChan; -int16_t curveFn(int16_t x) -{ - return applyCustomCurve(x, s_curveChan); -} - -struct point_t { - uint8_t x; - uint8_t y; -}; - -point_t getPoint(uint8_t i) -{ - point_t result = {0, 0}; -#if defined(PCBTARANIS) - CurveInfo &crv = g_model.curves[s_curveChan]; - int8_t *points = curveAddress(s_curveChan); - bool custom = (crv.type == CURVE_TYPE_CUSTOM); - uint8_t count = 5+crv.points; -#else - CurveInfo crv = curveInfo(s_curveChan); - int8_t *points = crv.crv; - bool custom = crv.custom; - uint8_t count = crv.points; -#endif - if (i < count) { -#if defined(PCBTARANIS) - result.x = X0-1-WCHART+i*WCHART*2/(count-1); -#else - result.x = X0-1-WCHART+i*WCHART/(count/2); -#endif - result.y = (LCD_H-1) - (100 + points[i]) * (LCD_H-1) / 200; - if (custom && i>0 && i g_model.points + sizeof(g_model.points)) { - AUDIO_WARNING2(); - return false; - } - - int8_t *nextCrv = curveAddress(index+1); - memmove(nextCrv+shift, nextCrv, 5*(MAX_CURVES-index-1)+curveEnd[MAX_CURVES-1]-curveEnd[index]); - if (shift < 0) memclear(&g_model.points[NUM_POINTS-1] + shift, -shift); - while (index NUM_POINTS-5*MAX_CURVES) { - AUDIO_WARNING2(); - return false; - } - - int8_t *crv = curveAddress(index); - if (shift < 0) { - for (uint8_t i=0; i0 ? INVERS|BLINK : INVERS) : 0); - lcd_putsLeft(3*FH+1, STR_TYPE); - lcd_putsiAtt(INDENT_WIDTH, 4*FH+1, "\010StandardCustom\0", crv.type, attr); - if (attr) { - uint8_t newType = checkIncDecModelZero(event, crv.type, CURVE_TYPE_LAST); - if (newType != crv.type) { - for (int i=1; i<4+crv.points; i++) - points[i] = calcRESXto100(applyCustomCurve(calc100toRESX(-100 + i*200/(4+crv.points)), s_curveChan)); - moveCurve(s_curveChan, checkIncDec_Ret > 0 ? 3+crv.points : -3-crv.points); - if (newType == CURVE_TYPE_CUSTOM) { - for (int i=0; i<3+crv.points; i++) - points[5+crv.points+i] = -100 + ((i+1)*200) / (4+crv.points); - } - crv.type = newType; - } - } - - attr = (m_posVert==2 ? (s_editMode>0 ? INVERS|BLINK : INVERS) : 0); - lcd_putsLeft(5*FH+1, "Count"); - lcd_outdezAtt(INDENT_WIDTH, 6*FH+1, 5+crv.points, LEFT|attr); - lcd_putsAtt(lcdLastPos, 6*FH+1, PSTR("pts"), attr); - if (attr) { - int8_t count = checkIncDecModel(event, crv.points, -3, 12); // 2pts - 17pts - if (checkIncDec_Ret) { - int8_t newPoints[MAX_POINTS]; - newPoints[0] = points[0]; - newPoints[4+count] = points[4+crv.points]; - for (int i=1; i<4+count; i++) - newPoints[i] = calcRESXto100(applyCustomCurve(calc100toRESX(-100 + (i*200) / (4+count)), s_curveChan)); - moveCurve(s_curveChan, checkIncDec_Ret*(crv.type==CURVE_TYPE_CUSTOM?2:1)); - for (int i=0; i<5+count; i++) { - points[i] = newPoints[i]; - if (crv.type == CURVE_TYPE_CUSTOM && i!=0 && i!=4+count) - points[5+count+i-1] = -100 + (i*200) / (4+count); - } - crv.points = count; - } - } - - lcd_putsLeft(7*FH+1, PSTR("Smooth")); - menu_lcd_onoff(7*FW, 7*FH+1, crv.smooth, m_posVert==3 ? INVERS : 0); - if (m_posVert==3) crv.smooth = checkIncDecModel(event, crv.smooth, 0, 1); - - switch(event) { - case EVT_ENTRY: - pointsOfs = 0; - SET_SCROLLBAR_X(0); - break; - case EVT_KEY_LONG(KEY_ENTER): - if (m_posVert > 1) { - killEvents(event); - MENU_ADD_ITEM(STR_CURVE_PRESET); - MENU_ADD_ITEM(STR_MIRROR); - MENU_ADD_ITEM(STR_CLEAR); - menuHandler = onCurveOneMenu; - } - break; - case EVT_KEY_LONG(KEY_MENU): - pushMenu(menuChannelsView); - killEvents(event); - return; - } - - DrawCurve(FW); - - uint8_t posY = FH+1; - attr = (s_editMode > 0 ? INVERS|BLINK : INVERS); - for (uint8_t i=0; i<5+crv.points; i++) { - point_t point = getPoint(i); - uint8_t selectionMode = 0; - if (crv.type==CURVE_TYPE_CUSTOM) { - if (m_posVert==4+2*i || (i==5+crv.points-1 && m_posVert==4+5+crv.points+5+crv.points-2-1)) - selectionMode = 2; - else if (i>0 && m_posVert==3+2*i) - selectionMode = 1; - } - else if (m_posVert == 4+i) { - selectionMode = 2; - } - - if (i>=pointsOfs && i0 && i<5+crv.points-1) x = points[5+crv.points+i-1]; - lcd_outdezAtt(6+8*FW, posY, i+1, LEFT); - lcd_outdezAtt(3+12*FW, posY, x, LEFT|(selectionMode==1?attr:0)); - lcd_outdezAtt(3+16*FW, posY, points[i], LEFT|(selectionMode==2?attr:0)); - posY += FH; - } - - if (selectionMode > 0) { - // do selection square - lcd_filled_rect(point.x-FW-1, point.y-2, 5, 5, SOLID, FORCE); - lcd_filled_rect(point.x-FW, point.y-1, 3, 3, SOLID); - if (s_editMode > 0) { - if (selectionMode == 1) - CHECK_INCDEC_MODELVAR(event, points[5+crv.points+i-1], i==1 ? -100 : points[5+crv.points+i-2], i==5+crv.points-2 ? 100 : points[5+crv.points+i]); // edit X - else if (selectionMode == 2) - CHECK_INCDEC_MODELVAR(event, points[i], -100, 100); - } - if (i < pointsOfs) - pointsOfs = i; - else if (i > pointsOfs+6) - pointsOfs = i-6; - } - } -} -#else -void menuModelCurveOne(uint8_t event) -{ - TITLE(STR_MENUCURVE); - lcd_outdezAtt(PSIZE(TR_MENUCURVE)*FW+1, 0, s_curveChan+1, INVERS|LEFT); - DISPLAY_PROGRESS_BAR(20*FW+1); - - CurveInfo crv = curveInfo(s_curveChan); - - switch(event) { - case EVT_ENTRY: - s_editMode = 1; - break; - CASE_EVT_ROTARY_BREAK - case EVT_KEY_BREAK(KEY_ENTER): - if (s_editMode <= 0) - m_posHorz = 0; - if (s_editMode == 1 && crv.custom) - s_editMode = 2; - else - s_editMode = 1; - break; - case EVT_KEY_LONG(KEY_ENTER): - if (s_editMode <= 0) { - if (int8_t(++m_posHorz) > 4) - m_posHorz = -4; - for (uint8_t i=0; i 0) { - if (--s_editMode == 0) - m_posHorz = 0; - } - else { - popMenu(); - } - break; - - /* CASE_EVT_ROTARY_LEFT */ - case EVT_KEY_REPT(KEY_LEFT): - case EVT_KEY_FIRST(KEY_LEFT): - if (s_editMode==1 && m_posHorz>0) m_posHorz--; - if (s_editMode <= 0) { - if (crv.custom) { - moveCurve(s_curveChan, -crv.points+2); - } - else if (crv.points > MIN_POINTS) { - moveCurve(s_curveChan, -1, (crv.points+1)/2); - } - else { - AUDIO_WARNING2(); - } - return; - } - break; - - /* CASE_EVT_ROTARY_RIGHT */ - case EVT_KEY_REPT(KEY_RIGHT): - case EVT_KEY_FIRST(KEY_RIGHT): - if (s_editMode==1 && m_posHorz<(crv.points-1)) m_posHorz++; - if (s_editMode <= 0) { - if (!crv.custom) { - moveCurve(s_curveChan, crv.points-2, crv.points); - } - else if (crv.points < MAX_POINTS) { - if (moveCurve(s_curveChan, 1)) { - for (int8_t i=crv.points+crv.points-2; i>=0; i--) { - if (i%2) - crv.crv[i] = (crv.crv[i/2] + crv.crv[1+i/2]) / 2; - else - crv.crv[i] = crv.crv[i/2]; - } - } - } - else { - AUDIO_WARNING2(); - } - } - break; - } - - lcd_putsLeft(7*FH, STR_TYPE); - uint8_t attr = (s_editMode <= 0 ? INVERS : 0); - lcd_outdezAtt(5*FW-2, 7*FH, crv.points, LEFT|attr); - lcd_putsAtt(lcdLastPos, 7*FH, crv.custom ? PSTR("pt'") : PSTR("pt"), attr); - - DrawCurve(); - - if (s_editMode>0) { - uint8_t i = m_posHorz; - point_t point = getPoint(i); - - if (s_editMode==1 || !BLINK_ON_PHASE) { - // do selection square - lcd_filled_rect(point.x-1, point.y-2, 5, 5, SOLID, FORCE); - lcd_filled_rect(point.x, point.y-1, 3, 3, SOLID); - } - - int8_t x = -100 + 200*i/(crv.points-1); - if (crv.custom && i>0 && i=0; i--) { - ch = (expo ? EXPO_VALID(expoAddress(i)) : mixAddress(i)->srcRaw); - if (ch != 0) { - count++; - } - } - return count; -} - -bool reachExpoMixCountLimit(uint8_t expo) -{ - // check mixers count limit - if (getExpoMixCount(expo) >= (expo ? MAX_EXPOS : MAX_MIXERS)) { - POPUP_WARNING(expo ? STR_NOFREEEXPO : STR_NOFREEMIXER); - return true; - } - return false; -} - -void deleteExpoMix(uint8_t expo, uint8_t idx) -{ - pauseMixerCalculations(); - if (expo) { - ExpoData *expo = expoAddress(idx); - memmove(expo, expo+1, (MAX_EXPOS-(idx+1))*sizeof(ExpoData)); - memclear(&g_model.expoData[MAX_EXPOS-1], sizeof(ExpoData)); - } - else { - MixData *mix = mixAddress(idx); - memmove(mix, mix+1, (MAX_MIXERS-(idx+1))*sizeof(MixData)); - memclear(&g_model.mixData[MAX_MIXERS-1], sizeof(MixData)); - } - resumeMixerCalculations(); - eeDirty(EE_MODEL); -} - -// TODO avoid this global s_currCh on ARM boards ... -int8_t s_currCh; -void insertExpoMix(uint8_t expo, uint8_t idx) -{ - pauseMixerCalculations(); - if (expo) { - ExpoData *expo = expoAddress(idx); - memmove(expo+1, expo, (MAX_EXPOS-(idx+1))*sizeof(ExpoData)); - memclear(expo, sizeof(ExpoData)); -#if defined(PCBTARANIS) - expo->srcRaw = (s_currCh > 4 ? MIXSRC_Rud - 1 + s_currCh : MIXSRC_Rud - 1 + channel_order(s_currCh)); - expo->curve.type = CURVE_REF_EXPO; -#else - expo->mode = 3; // pos&neg -#endif - expo->chn = s_currCh - 1; - expo->weight = 100; - } - else { - MixData *mix = mixAddress(idx); - memmove(mix+1, mix, (MAX_MIXERS-(idx+1))*sizeof(MixData)); - memclear(mix, sizeof(MixData)); - mix->destCh = s_currCh-1; -#if defined(PCBTARANIS) - mix->srcRaw = s_currCh; - if (!isSourceAvailable(mix->srcRaw)) - mix->srcRaw = (s_currCh > 4 ? MIXSRC_Rud - 1 + s_currCh : MIXSRC_Rud - 1 + channel_order(s_currCh)); -#else - mix->srcRaw = (s_currCh > 4 ? MIXSRC_Rud - 1 + s_currCh : MIXSRC_Rud - 1 + channel_order(s_currCh)); -#endif - mix->weight = 100; - } - resumeMixerCalculations(); - eeDirty(EE_MODEL); -} - -void copyExpoMix(uint8_t expo, uint8_t idx) -{ - pauseMixerCalculations(); - if (expo) { - ExpoData *expo = expoAddress(idx); - memmove(expo+1, expo, (MAX_EXPOS-(idx+1))*sizeof(ExpoData)); - } - else { - MixData *mix = mixAddress(idx); - memmove(mix+1, mix, (MAX_MIXERS-(idx+1))*sizeof(MixData)); - } - resumeMixerCalculations(); - eeDirty(EE_MODEL); -} - -void memswap(void *a, void *b, uint8_t size) -{ - uint8_t *x = (uint8_t*)a; - uint8_t *y = (uint8_t*)b; - uint8_t temp ; - - while (size--) { - temp = *x; - *x++ = *y; - *y++ = temp; - } -} - -bool swapExpoMix(uint8_t expo, uint8_t &idx, uint8_t up) -{ - void *x, *y; - uint8_t size; - int8_t tgt_idx = (up ? idx-1 : idx+1); - - if (expo) { - x = (ExpoData *)expoAddress(idx); - - if (tgt_idx < 0) { - if (((ExpoData *)x)->chn == 0) - return false; - ((ExpoData *)x)->chn--; - return true; - } - - if (tgt_idx == MAX_EXPOS) { - if (((ExpoData *)x)->chn == NUM_STICKS-1) - return false; - ((ExpoData *)x)->chn++; - return true; - } - - y = (ExpoData *)expoAddress(tgt_idx); - if(((ExpoData *)x)->chn != ((ExpoData *)y)->chn || !EXPO_VALID((ExpoData *)y)) { - if (up) { - if (((ExpoData *)x)->chn>0) ((ExpoData *)x)->chn--; - else return false; - } - else { - if (((ExpoData *)x)->chnchn++; - else return false; - } - return true; - } - - size = sizeof(ExpoData); - } - else { - x = (MixData *)mixAddress(idx); - - if (tgt_idx < 0) { - if (((MixData *)x)->destCh == 0) - return false; - ((MixData *)x)->destCh--; - return true; - } - - if (tgt_idx == MAX_MIXERS) { - if (((MixData *)x)->destCh == NUM_CHNOUT-1) - return false; - ((MixData *)x)->destCh++; - return true; - } - - y = (MixData *)mixAddress(tgt_idx); - uint8_t destCh = ((MixData *)x)->destCh; - if(!((MixData *)y)->srcRaw || destCh != ((MixData *)y)->destCh) { - if (up) { - if (destCh>0) ((MixData *)x)->destCh--; - else return false; - } - else { - if (destChdestCh++; - else return false; - } - return true; - } - - size = sizeof(MixData); - } - - pauseMixerCalculations(); - memswap(x, y, size); - resumeMixerCalculations(); - - idx = tgt_idx; - return true; -} - -enum ExposFields { - CASE_PCBTARANIS(EXPO_FIELD_INPUT_NAME) - IF_CPUARM(EXPO_FIELD_NAME) - CASE_PCBTARANIS(EXPO_FIELD_SOURCE) - CASE_PCBTARANIS(EXPO_FIELD_SCALE) - EXPO_FIELD_WEIGHT, - CASE_PCBTARANIS(EXPO_FIELD_OFFSET) - CASE_9X(EXPO_FIELD_EXPO) - IF_CURVES(EXPO_FIELD_CURVE) - IF_FLIGHT_MODES(EXPO_FIELD_FLIGHT_PHASE) - EXPO_FIELD_SWITCH, - CASE_9X(EXPO_FIELD_SIDE) - CASE_PCBTARANIS(EXPO_FIELD_TRIM) - EXPO_FIELD_MAX -}; - -#if defined(PCBTARANIS) - #define CURVE_ROWS 1 -#else - #define CURVE_ROWS 0 -#endif - -void menuModelExpoOne(uint8_t event) -{ -#if defined(PCBTARANIS) - if (event == EVT_KEY_LONG(KEY_MENU)) { - pushMenu(menuChannelsView); - killEvents(event); - return; - } -#endif - - ExpoData *ed = expoAddress(s_currIdx); -#if defined(PCBTARANIS) - putsMixerSource(7*FW+FW/2, 0, MIXSRC_FIRST_INPUT+ed->chn, 0); -#else - putsMixerSource(7*FW+FW/2, 0, MIXSRC_Rud+ed->chn, 0); -#endif - - SUBMENU(STR_MENUINPUTS, EXPO_FIELD_MAX, {CASE_PCBTARANIS(0) IF_CPUARM(0) CASE_PCBTARANIS(0) CASE_PCBTARANIS((ed->srcRaw >= MIXSRC_FIRST_TELEM ? (uint8_t)0 : (uint8_t)HIDDEN_ROW)) 0, CASE_PCBTARANIS(0) CASE_9X(0) IF_CURVES(CURVE_ROWS) IF_FLIGHT_MODES((MAX_PHASES-1) | NAVIGATION_LINE_BY_LINE) 0 /*, ...*/}); - - SET_SCROLLBAR_X(EXPO_ONE_2ND_COLUMN+10*FW); - - int8_t sub = m_posVert; - - uint8_t y = FH+1; - -#if defined(PCBTARANIS) - for (uint8_t k=0; k0 ? BLINK|INVERS : INVERS) : 0); - switch(i) - { -#if defined(PCBTARANIS) - case EXPO_FIELD_INPUT_NAME: - editSingleName(EXPO_ONE_2ND_COLUMN, y, "Input Name", g_model.inputNames[ed->chn], sizeof(g_model.inputNames[ed->chn]), event, attr); - break; -#endif - -#if defined(CPUARM) - case EXPO_FIELD_NAME: - editSingleName(EXPO_ONE_2ND_COLUMN-IF_9X(sizeof(ed->name)*FW), y, STR_EXPONAME, ed->name, sizeof(ed->name), event, attr); - break; -#endif - -#if defined(PCBTARANIS) - case EXPO_FIELD_SOURCE: - lcd_putsLeft(y, NO_INDENT(STR_SOURCE)); - putsMixerSource(EXPO_ONE_2ND_COLUMN, y, ed->srcRaw, STREXPANDED|attr); - if (attr) ed->srcRaw = checkIncDec(event, ed->srcRaw, INPUTSRC_FIRST, INPUTSRC_LAST, EE_MODEL|INCDEC_SOURCE|NO_INCDEC_MARKS, isInputSourceAvailable); - break; - - case EXPO_FIELD_SCALE: - lcd_putsLeft(y, STR_SCALE); - putsTelemetryChannel(EXPO_ONE_2ND_COLUMN, y, ed->srcRaw - MIXSRC_FIRST_TELEM, convertTelemValue(ed->srcRaw - MIXSRC_FIRST_TELEM + 1, ed->scale), LEFT|attr); - if (attr) ed->scale = checkIncDec(event, ed->scale, 0, maxTelemValue(ed->srcRaw - MIXSRC_FIRST_TELEM + 1), EE_MODEL, NULL); - break; -#endif - - case EXPO_FIELD_WEIGHT: - lcd_putsLeft(y, STR_WEIGHT); - ed->weight = GVAR_MENU_ITEM(EXPO_ONE_2ND_COLUMN, y, ed->weight, MIN_EXPO_WEIGHT, 100, IF_PCBTARANIS(LEFT)|attr, 0, event); - break; - -#if defined(PCBTARANIS) - case EXPO_FIELD_OFFSET: - lcd_putsLeft(y, NO_INDENT(STR_OFFSET)); - ed->offset = GVAR_MENU_ITEM(EXPO_ONE_2ND_COLUMN, y, ed->offset, -100, 100, LEFT|attr, 0, event); - break; -#endif - -#if !defined(PCBTARANIS) - case EXPO_FIELD_EXPO: - lcd_putsLeft(y, STR_EXPO); - if (ed->curveMode==MODE_EXPO || ed->curveParam==0) { - ed->curveMode = MODE_EXPO; - ed->curveParam = GVAR_MENU_ITEM(EXPO_ONE_2ND_COLUMN, y, ed->curveParam, -100, 100, attr, 0, event); - } - else { - lcd_putsAtt(EXPO_ONE_2ND_COLUMN-3*FW, y, STR_NA, attr); - } - break; -#endif - -#if defined(CURVES) - case EXPO_FIELD_CURVE: - lcd_putsLeft(y, STR_CURVE); -#if defined(PCBTARANIS) - editCurveRef(EXPO_ONE_2ND_COLUMN, y, ed->curve, event, attr); -#else - if (ed->curveMode!=MODE_EXPO || ed->curveParam==0) { - putsCurve(EXPO_ONE_2ND_COLUMN-3*FW, y, ed->curveParam, attr); - if (attr) { - CHECK_INCDEC_MODELVAR_ZERO(event, ed->curveParam, CURVE_BASE+MAX_CURVES-1); - if (ed->curveParam) ed->curveMode = MODE_CURVE; - if (ed->curveParam>=CURVE_BASE && event==EVT_KEY_LONG(KEY_ENTER)) { - s_curveChan = ed->curveParam - CURVE_BASE; - pushMenu(menuModelCurveOne); - } - } - } - else { - lcd_putsAtt(EXPO_ONE_2ND_COLUMN-3*FW, y, STR_NA, attr); - } -#endif - break; -#endif - -#if defined(FLIGHT_MODES) - case EXPO_FIELD_FLIGHT_PHASE: - ed->phases = editFlightModes(EXPO_ONE_2ND_COLUMN-IF_9X(EXPO_ONE_FP_WIDTH), y, event, ed->phases, attr); - break; -#endif - - case EXPO_FIELD_SWITCH: - ed->swtch = switchMenuItem(EXPO_ONE_2ND_COLUMN-IF_9X(3*FW), y, ed->swtch, attr, event); - break; - -#if !defined(PCBTARANIS) - case EXPO_FIELD_SIDE: - ed->mode = 4 - selectMenuItem(EXPO_ONE_2ND_COLUMN-3*FW, y, STR_SIDE, STR_VSIDE, 4-ed->mode, 1, 3, attr, event); - break; -#endif - -#if defined(PCBTARANIS) - case EXPO_FIELD_TRIM: - uint8_t not_stick = (ed->srcRaw > MIXSRC_Ail); - int8_t carryTrim = -ed->carryTrim; - lcd_putsLeft(y, STR_TRIM); - lcd_putsiAtt(EXPO_ONE_2ND_COLUMN, y, STR_VMIXTRIMS, (not_stick && carryTrim == 0) ? 0 : carryTrim+1, m_posHorz==0 ? attr : 0); - if (attr) ed->carryTrim = -checkIncDecModel(event, carryTrim, not_stick ? TRIM_ON : -TRIM_OFF, -TRIM_AIL); - break; -#endif - } - y += FH; - } - - DrawFunction(expoFn); - -#if defined(PCBTARANIS) - int x512 = getValue(ed->srcRaw); - if (ed->srcRaw >= MIXSRC_FIRST_TELEM) { - putsTelemetryChannel(LCD_W-8, 6*FH, ed->srcRaw - MIXSRC_FIRST_TELEM, x512, 0); - if (ed->scale > 0) x512 = (x512 * 1024) / convertTelemValue(ed->srcRaw - MIXSRC_FIRST_TELEM + 1, ed->scale); - x512 = limit(-1024, x512, 1024); - } - else { - lcd_outdezAtt(LCD_W-8, 6*FH, calcRESXto1000(x512), PREC1); - } - int y512 = expoFn(x512); - lcd_outdezAtt(LCD_W-8-6*FW, 1*FH, calcRESXto1000(y512), PREC1); -#else - int16_t x512 = calibratedStick[ed->chn]; - lcd_outdezAtt(LCD_W-8, 6*FH, calcRESXto100(x512), 0); - int16_t y512 = expoFn(x512); - lcd_outdezAtt(LCD_W-8-6*FW, 1*FH, calcRESXto100(y512), 0); -#endif - - x512 = X0+x512/(RESXu/WCHART); -#if defined(CPUARM) - y512 = (LCD_H-1) - ((y512+RESX)/2) * (LCD_H-1) / RESX; -#else - y512 = (LCD_H-1) - (uint16_t)((y512+RESX)/2) * (LCD_H-1) / RESX; -#endif - - lcd_vline(x512, y512-3, 3*2+1); - lcd_hline(x512-3, y512, 3*2+1); -} - -enum MixFields { - IF_CPUARM(MIX_FIELD_NAME) - MIX_FIELD_SOURCE, - MIX_FIELD_WEIGHT, - MIX_FIELD_OFFSET, - CASE_9X(MIX_FIELD_TRIM) - IF_CURVES(MIX_FIELD_CURVE) - IF_FLIGHT_MODES(MIX_FIELD_FLIGHT_PHASE) - MIX_FIELD_SWITCH, - MIX_FIELD_WARNING, - MIX_FIELD_MLTPX, - MIX_FIELD_DELAY_UP, - MIX_FIELD_DELAY_DOWN, - MIX_FIELD_SLOW_UP, - MIX_FIELD_SLOW_DOWN, - MIX_FIELD_COUNT -}; - -void gvarWeightItem(xcoord_t x, uint8_t y, MixData *md, uint8_t attr, uint8_t event) -{ - u_int8int16_t weight; - MD_WEIGHT_TO_UNION(md, weight); - weight.word = GVAR_MENU_ITEM(x, y, weight.word, -500, 500, attr, 0, event); - MD_UNION_TO_WEIGHT(weight, md); -} - -void menuModelMixOne(uint8_t event) -{ -#if defined(PCBTARANIS) - if (event == EVT_KEY_LONG(KEY_MENU)) { - pushMenu(menuChannelsView); - killEvents(event); - return; - } -#endif - - TITLE(s_currCh ? STR_INSERTMIX : STR_EDITMIX); - MixData *md2 = mixAddress(s_currIdx) ; - putsChn(lcdLastPos+1*FW, 0, md2->destCh+1,0); - -#if defined(ROTARY_ENCODERS) -#if defined(CURVES) - if ((m_posVert == MIX_FIELD_TRIM && md2->srcRaw > NUM_STICKS) || (m_posVert == MIX_FIELD_CURVE && md2->curveMode == MODE_CURVE)) -#else - if (m_posVert == MIX_FIELD_TRIM && md2->srcRaw > NUM_STICKS) -#endif - SUBMENU_NOTITLE(MIX_FIELD_COUNT, {IF_CPUARM(0) 0, 0, 0, CASE_9X(0) IF_CURVES(0) IF_FLIGHT_MODES((MAX_PHASES-1) | NAVIGATION_LINE_BY_LINE) 0, 0 /*, ...*/}) - else - SUBMENU_NOTITLE(MIX_FIELD_COUNT, {IF_CPUARM(0) 0, 0, 0, CASE_9X(1) IF_CURVES(1) IF_FLIGHT_MODES((MAX_PHASES-1) | NAVIGATION_LINE_BY_LINE) 0, 0 /*, ...*/}); -#else - SUBMENU_NOTITLE(MIX_FIELD_COUNT, {IF_CPUARM(0) 0, 0, 0, CASE_9X(1) IF_CURVES(1) IF_FLIGHT_MODES((MAX_PHASES-1) | NAVIGATION_LINE_BY_LINE) 0, 0 /*, ...*/}); -#endif - -#if MENU_COLUMNS > 1 - lcd_vline(MENU_COLUMN2_X-4, FH+1, LCD_H-FH-1); -#endif - - int8_t sub = m_posVert; - int8_t editMode = s_editMode; - - for (uint8_t k=0; k 1 - uint8_t y; - uint8_t COLUMN_X; - if (k >= LCD_LINES-1) { - y = 1 + (k-LCD_LINES+2)*FH; - COLUMN_X = MENU_COLUMN2_X; - } - else { - y = 1 + (k+1)*FH; - COLUMN_X = 0; - } - int8_t i = k; -#else - uint8_t y = 1 + (k+1)*FH; - int8_t i = k + s_pgOfs; -#endif - - uint8_t attr = (sub==i ? (editMode>0 ? BLINK|INVERS : INVERS) : 0); - switch(i) { -#if defined(CPUARM) - case MIX_FIELD_NAME: - editSingleName(COLUMN_X+MIXES_2ND_COLUMN, y, STR_MIXNAME, md2->name, sizeof(md2->name), event, attr); - break; -#endif - case MIX_FIELD_SOURCE: - lcd_putsColumnLeft(COLUMN_X, y, NO_INDENT(STR_SOURCE)); - putsMixerSource(COLUMN_X+MIXES_2ND_COLUMN, y, md2->srcRaw, STREXPANDED|attr); - if (attr) CHECK_INCDEC_MODELSOURCE(event, md2->srcRaw, 1, MIXSRC_LAST); - break; - case MIX_FIELD_WEIGHT: - lcd_putsColumnLeft(COLUMN_X, y, STR_WEIGHT); - gvarWeightItem(COLUMN_X+MIXES_2ND_COLUMN, y, md2, attr|LEFT, event); - break; - case MIX_FIELD_OFFSET: - { - lcd_putsColumnLeft(COLUMN_X, y, NO_INDENT(STR_OFFSET)); - u_int8int16_t offset; - MD_OFFSET_TO_UNION(md2, offset); - offset.word = GVAR_MENU_ITEM(COLUMN_X+MIXES_2ND_COLUMN, y, offset.word, GV_RANGELARGE_NEG, GV_RANGELARGE, attr|LEFT, 0, event); - MD_UNION_TO_OFFSET(offset, md2); - break; - } - -#if !defined(PCBTARANIS) - case MIX_FIELD_TRIM: - { - uint8_t not_stick = (md2->srcRaw > NUM_STICKS); - int8_t carryTrim = -md2->carryTrim; - lcd_putsColumnLeft(COLUMN_X, y, STR_TRIM); -#if LCD_W >= 212 && defined(TRANSLATIONS_FR) - lcd_putsiAtt((not_stick ? COLUMN_X+MIXES_2ND_COLUMN : COLUMN_X+11*FW-3), y, STR_VMIXTRIMS, (not_stick && carryTrim == 0) ? 0 : carryTrim+1, m_posHorz==0 ? attr : 0); -#else - lcd_putsiAtt((not_stick ? COLUMN_X+MIXES_2ND_COLUMN : COLUMN_X+6*FW-3), y, STR_VMIXTRIMS, (not_stick && carryTrim == 0) ? 0 : carryTrim+1, m_posHorz==0 ? attr : 0); -#endif - if (attr && m_posHorz==0 && (not_stick || editMode>0)) md2->carryTrim = -checkIncDecModel(event, carryTrim, not_stick ? TRIM_ON : -TRIM_OFF, -TRIM_AIL); - if (!not_stick) { - lcd_puts(COLUMN_X+MIXES_2ND_COLUMN, y, STR_DREX); - menu_lcd_onoff(COLUMN_X+MIXES_2ND_COLUMN+5*FW, y, !md2->noExpo, m_posHorz==1 ? attr : 0); - if (attr && m_posHorz==1 && editMode>0) md2->noExpo = !checkIncDecModel(event, !md2->noExpo, 0, 1); - } - else if (attr) { - REPEAT_LAST_CURSOR_MOVE(); - } - break; - } -#endif - -#if defined(CURVES) - case MIX_FIELD_CURVE: - { - lcd_putsColumnLeft(COLUMN_X, y, STR_CURVE); -#if defined(PCBTARANIS) - editCurveRef(COLUMN_X+MIXES_2ND_COLUMN, y, md2->curve, event, attr); -#else - int8_t curveParam = md2->curveParam; - if (md2->curveMode == MODE_CURVE) { - putsCurve(COLUMN_X+MIXES_2ND_COLUMN, y, curveParam, attr); - if (attr) { - if (event==EVT_KEY_LONG(KEY_ENTER) && (curveParam<0 || curveParam>=CURVE_BASE)){ - s_curveChan = (curveParam<0 ? -curveParam-1 : curveParam-CURVE_BASE); - pushMenu(menuModelCurveOne); - } - else { - CHECK_INCDEC_MODELVAR(event, md2->curveParam, -MAX_CURVES, CURVE_BASE+MAX_CURVES-1); - if (md2->curveParam == 0) - md2->curveMode = MODE_DIFFERENTIAL; -#if defined(ROTARY_ENCODER_NAVIGATION) || defined(PCBTARANIS) - MOVE_CURSOR_FROM_HERE(); -#else - m_posHorz = 0; -#endif - } - } - } - else { - lcd_putsAtt(COLUMN_X+MIXES_2ND_COLUMN, y, PSTR("Diff"), m_posHorz==0 ? attr : 0); - md2->curveParam = GVAR_MENU_ITEM(COLUMN_X+MIXES_2ND_COLUMN+5*FW, y, curveParam, -100, 100, LEFT|(m_posHorz==1 ? attr : 0), 0, editMode>0 ? event : 0); - if (attr && editMode>0 && m_posHorz==0) { - int8_t tmp = 0; - CHECK_INCDEC_MODELVAR(event, tmp, -1, 1); - if (tmp != 0) { - md2->curveMode = MODE_CURVE; - md2->curveParam = tmp; - } - } - } -#endif - break; - } -#endif -#if defined(FLIGHT_MODES) - case MIX_FIELD_FLIGHT_PHASE: - md2->phases = editFlightModes(COLUMN_X+MIXES_2ND_COLUMN, y, event, md2->phases, attr); - break; -#endif - case MIX_FIELD_SWITCH: - md2->swtch = switchMenuItem(COLUMN_X+MIXES_2ND_COLUMN, y, md2->swtch, attr, event); - break; - case MIX_FIELD_WARNING: - lcd_putsColumnLeft(COLUMN_X+MIXES_2ND_COLUMN, y, STR_MIXWARNING); - if (md2->mixWarn) - lcd_outdezAtt(COLUMN_X+MIXES_2ND_COLUMN, y, md2->mixWarn, attr|LEFT); - else - lcd_putsAtt(COLUMN_X+MIXES_2ND_COLUMN, y, STR_OFF, attr); - if (attr) CHECK_INCDEC_MODELVAR_ZERO(event, md2->mixWarn, 3); - break; - case MIX_FIELD_MLTPX: - md2->mltpx = selectMenuItem(COLUMN_X+MIXES_2ND_COLUMN, y, STR_MULTPX, STR_VMLTPX, md2->mltpx, 0, 2, attr, event); - break; - case MIX_FIELD_DELAY_UP: - md2->delayUp = EDIT_DELAY(COLUMN_X, y, event, attr, STR_DELAYUP, md2->delayUp); - break; - case MIX_FIELD_DELAY_DOWN: - md2->delayDown = EDIT_DELAY(COLUMN_X, y, event, attr, STR_DELAYDOWN, md2->delayDown); - break; - case MIX_FIELD_SLOW_UP: - md2->speedUp = EDIT_DELAY(COLUMN_X, y, event, attr, STR_SLOWUP, md2->speedUp); - break; - case MIX_FIELD_SLOW_DOWN: - md2->speedDown = EDIT_DELAY(COLUMN_X, y, event, attr, STR_SLOWDOWN, md2->speedDown); - break; - } - } -} - -static uint8_t s_maxLines = 8; -static uint8_t s_copySrcIdx; -static uint8_t s_copySrcCh; - -#define _STR_MAX(x) PSTR("/" #x) -#define STR_MAX(x) _STR_MAX(x) - -#define MIX_LINE_SRC_POS 4*FW-1 - -#if LCD_W >= 212 - #define EXPO_LINE_WEIGHT_POS 8*FW+1 - #define EXPO_LINE_SRC_POS 9*FW-2 - #define EXPO_LINE_CURVE_POS 12*FW+4 - #define EXPO_LINE_SWITCH_POS 17*FW-1 - #define EXPO_LINE_SELECT_POS 5*FW+2 - #define EXPO_LINE_FM_POS LCD_W-LEN_EXPOMIX_NAME*FW-MENUS_SCROLLBAR_WIDTH-FW-1 - #define EXPO_LINE_NAME_POS LCD_W-LEN_EXPOMIX_NAME*FW-MENUS_SCROLLBAR_WIDTH - #define MIX_LINE_WEIGHT_POS 11*FW+5 - #define MIX_LINE_CURVE_POS 12*FW+4 - #define MIX_LINE_SWITCH_POS 16*FW+1 - #define MIX_LINE_DELAY_POS 19*FW+2 -#elif defined(CPUARM) - #define EXPO_LINE_WEIGHT_POS 7*FW-1 - #define EXPO_LINE_EXPO_POS 10*FW+5 - #define EXPO_LINE_SWITCH_POS 11*FW+2 - #define EXPO_LINE_SIDE_POS 14*FW+2 - #define EXPO_LINE_SELECT_POS 24 - #define EXPO_LINE_FM_POS - #define EXPO_LINE_NAME_POS LCD_W-sizeof(ed->name)*FW-MENUS_SCROLLBAR_WIDTH - #define MIX_LINE_WEIGHT_POS 11*FW+3 - #define MIX_LINE_CURVE_POS 12*FW+2 - #define MIX_LINE_SWITCH_POS 16*FW - #define MIX_LINE_DELAY_POS 19*FW+7 -#else - #define EXPO_LINE_WEIGHT_POS 7*FW-1 - #define EXPO_LINE_EXPO_POS 11*FW - #define EXPO_LINE_SWITCH_POS 11*FW+4 - #if MAX_PHASES == 6 - #define EXPO_LINE_SIDE_POS 15*FW - #else - #define EXPO_LINE_SIDE_POS 15*FW+2 - #endif - #define EXPO_LINE_FM_POS LCD_W-FW-MENUS_SCROLLBAR_WIDTH - #define EXPO_LINE_SELECT_POS 24 - #define MIX_LINE_WEIGHT_POS 11*FW+3 - #define MIX_LINE_CURVE_POS 12*FW+2 - #define MIX_LINE_SWITCH_POS 16*FW - #define MIX_LINE_DELAY_POS 19*FW+7 -#endif - -#if defined(NAVIGATION_MENUS) -void onExpoMixMenu(const char *result) -{ - bool expo = (g_menuStack[g_menuStackPtr] == menuModelExposAll); - uint8_t chn = (expo ? expoAddress(s_currIdx)->chn+1 : mixAddress(s_currIdx)->destCh+1); - - if (result == STR_EDIT) { - pushMenu(expo ? menuModelExpoOne : menuModelMixOne); - } - else if (result == STR_INSERT_BEFORE || result == STR_INSERT_AFTER) { - if (!reachExpoMixCountLimit(expo)) { - s_currCh = chn; - if (result == STR_INSERT_AFTER) { s_currIdx++; m_posVert++; } - insertExpoMix(expo, s_currIdx); - pushMenu(expo ? menuModelExpoOne : menuModelMixOne); - } - } - else if (result == STR_COPY || result == STR_MOVE) { - s_copyMode = (result == STR_COPY ? COPY_MODE : MOVE_MODE); - s_copySrcIdx = s_currIdx; - s_copySrcCh = chn; - s_copySrcRow = m_posVert; - } - else if (result == STR_DELETE) { - deleteExpoMix(expo, s_currIdx); - } -} -#endif - -#if LCD_W >= 212 -void displayHeaderChannelName(uint8_t ch) -{ - uint8_t len = zlen(g_model.limitData[ch-1].name, sizeof(g_model.limitData[ch-1].name)); - if (len) { - lcd_putc(17*FW, 0, ' '); - lcd_putsnAtt(18*FW, 0, g_model.limitData[ch-1].name, len, ZCHAR); - lcd_putc(18*FW+len*FW, 0, ' '); - } -} -#endif - -void menuModelExpoMix(uint8_t expo, uint8_t event) -{ - uint8_t sub = m_posVert; - - if (s_editMode > 0) - s_editMode = 0; - - uint8_t chn = (expo ? expoAddress(s_currIdx)->chn+1 : mixAddress(s_currIdx)->destCh+1); - - switch (event) - { - case EVT_ENTRY: - case EVT_ENTRY_UP: - s_copyMode = 0; - s_copyTgtOfs = 0; - break; - case EVT_KEY_LONG(KEY_EXIT): - if (s_copyMode && s_copyTgtOfs == 0) { - deleteExpoMix(expo, s_currIdx); - killEvents(event); - event = 0; - } - // no break -#if defined(ROTARY_ENCODER_NAVIGATION) - case EVT_ROTARY_LONG: - if (s_copyMode) { - killEvents(event); - } -#endif - case EVT_KEY_BREAK(KEY_EXIT): - if (s_copyMode) { - if (s_copyTgtOfs) { - // cancel the current copy / move operation - if (s_copyMode == COPY_MODE) { - deleteExpoMix(expo, s_currIdx); - } - else { - do { - swapExpoMix(expo, s_currIdx, s_copyTgtOfs > 0); - s_copyTgtOfs += (s_copyTgtOfs < 0 ? +1 : -1); - } while (s_copyTgtOfs != 0); - eeDirty(EE_MODEL); - } - m_posVert = s_copySrcRow; - s_copyTgtOfs = 0; - } - s_copyMode = 0; - event = 0; - } - break; - case EVT_KEY_BREAK(KEY_ENTER): - if (sub != 0 && (!s_currCh || (s_copyMode && !s_copyTgtOfs)) && !READ_ONLY()) { - s_copyMode = (s_copyMode == COPY_MODE ? MOVE_MODE : COPY_MODE); - s_copySrcIdx = s_currIdx; - s_copySrcCh = chn; - s_copySrcRow = sub; - break; - } - // no break - - CASE_EVT_ROTARY_BREAK - case EVT_KEY_LONG(KEY_ENTER): - killEvents(event); - if (s_copyTgtOfs) { - s_copyMode = 0; - s_copyTgtOfs = 0; - } - else if (sub != 0) { - if (READ_ONLY()) { - if (!s_currCh) { - pushMenu(expo ? menuModelExpoOne : menuModelMixOne); - return; - } - } - else { - if (s_copyMode) s_currCh = 0; -#if defined(NAVIGATION_MENUS) - if (s_currCh) { - if (reachExpoMixCountLimit(expo)) break; - insertExpoMix(expo, s_currIdx); - pushMenu(expo ? menuModelExpoOne : menuModelMixOne); - s_copyMode = 0; - return; - } - else { - event = 0; - s_copyMode = 0; - MENU_ADD_ITEM(STR_EDIT); - MENU_ADD_ITEM(STR_INSERT_BEFORE); - MENU_ADD_ITEM(STR_INSERT_AFTER); - MENU_ADD_ITEM(STR_COPY); - MENU_ADD_ITEM(STR_MOVE); - MENU_ADD_ITEM(STR_DELETE); - menuHandler = onExpoMixMenu; - } -#else - if (s_currCh) { - if (reachExpoMixCountLimit(expo)) break; - insertExpoMix(expo, s_currIdx); - } - pushMenu(expo ? menuModelExpoOne : menuModelMixOne); - s_copyMode = 0; - return; -#endif - } - } - break; - case EVT_KEY_LONG(KEY_LEFT): - case EVT_KEY_LONG(KEY_RIGHT): - if (s_copyMode && !s_copyTgtOfs) { - if (reachExpoMixCountLimit(expo)) break; - s_currCh = chn; - if (event == EVT_KEY_LONG(KEY_RIGHT)) { s_currIdx++; m_posVert++; } - insertExpoMix(expo, s_currIdx); - pushMenu(expo ? menuModelExpoOne : menuModelMixOne); - s_copyMode = 0; - killEvents(event); - return; - } - break; -#if defined(ROTARY_ENCODER_NAVIGATION) - case EVT_ROTARY_LEFT: - case EVT_ROTARY_RIGHT: -#endif - case EVT_KEY_FIRST(KEY_MOVE_UP): - case EVT_KEY_REPT(KEY_MOVE_UP): - case EVT_KEY_FIRST(KEY_MOVE_DOWN): - case EVT_KEY_REPT(KEY_MOVE_DOWN): - if (s_copyMode) { - uint8_t key = (event & 0x1f); - uint8_t next_ofs = ((IS_ROTARY_UP(event) || key==KEY_MOVE_UP) ? s_copyTgtOfs - 1 : s_copyTgtOfs + 1); - - if (s_copyTgtOfs==0 && s_copyMode==COPY_MODE) { - // insert a mix on the same channel (just above / just below) - if (reachExpoMixCountLimit(expo)) break; - copyExpoMix(expo, s_currIdx); - if (IS_ROTARY_DOWN(event) || key==KEY_MOVE_DOWN) s_currIdx++; - else if (sub-s_pgOfs >= 6) s_pgOfs++; - } - else if (next_ofs==0 && s_copyMode==COPY_MODE) { - // delete the mix - deleteExpoMix(expo, s_currIdx); - if (IS_ROTARY_UP(event) || key==KEY_MOVE_UP) s_currIdx--; - } - else { - // only swap the mix with its neighbor - if (!swapExpoMix(expo, s_currIdx, IS_ROTARY_UP(event) || key==KEY_MOVE_UP)) break; - eeDirty(EE_MODEL); - } - - s_copyTgtOfs = next_ofs; - } - break; - } - - lcd_outdezAtt(FW*max(sizeof(TR_MENUINPUTS), sizeof(TR_MIXER))+FW+FW/2, 0, getExpoMixCount(expo)); - lcd_puts(FW*max(sizeof(TR_MENUINPUTS), sizeof(TR_MIXER))+FW+FW/2, 0, expo ? STR_MAX(MAX_EXPOS) : STR_MAX(MAX_MIXERS)); - SIMPLE_MENU(expo ? STR_MENUINPUTS : STR_MIXER, menuTabModel, expo ? e_InputsAll : e_MixAll, s_maxLines); - - sub = m_posVert; - s_currCh = 0; - uint8_t cur = 1; - uint8_t i = 0; - - for (uint8_t ch=1; ch<=(expo ? NUM_INPUTS : NUM_CHNOUT); ch++) { - void *pointer = NULL; MixData * &md = (MixData * &)pointer; ExpoData * &ed = (ExpoData * &)pointer; - uint8_t y = 1+(cur-s_pgOfs)*FH; - if (expo ? (ichn+1 == ch && EXPO_VALID(ed)) : (isrcRaw && md->destCh+1 == ch)) { - if (s_pgOfs < cur && cur-s_pgOfs < LCD_LINES) { - if (expo) { -#if defined(PCBTARANIS) - putsMixerSource(0, y, ch, 0); -#else - putsMixerSource(0, y, MIXSRC_Rud+ch-1, 0); -#endif - } - else { - putsChn(0, y, ch, 0); // show CHx - } - } - uint8_t mixCnt = 0; - do { - if (s_copyMode) { - if (s_copyMode == MOVE_MODE && s_pgOfs < cur && cur-s_pgOfs < 8 && s_copySrcCh == ch && s_copyTgtOfs != 0 && i == (s_copySrcIdx + (s_copyTgtOfs<0))) { - lcd_rect(expo ? 18 : 22, y-1, expo ? LCD_W-18 : LCD_W-22, 9, DOTTED); - cur++; y+=FH; - } - if (s_currIdx == i) { - sub = m_posVert = cur; - s_currCh = ch; - } - } - else if (sub == cur) { - s_currIdx = i; - } - if (s_pgOfs < cur && cur-s_pgOfs < 8) { - uint8_t attr = ((s_copyMode || sub != cur) ? 0 : INVERS); - if (expo) { - ed->weight = GVAR_MENU_ITEM(EXPO_LINE_WEIGHT_POS, y, ed->weight, MIN_EXPO_WEIGHT, 100, attr | (isExpoActive(i) ? BOLD : 0), 0, event); - -#if defined(PCBTARANIS) - putsMixerSource(EXPO_LINE_SRC_POS, y, ed->srcRaw, 0); -#endif - -#if defined(PCBTARANIS) - putsCurveRef(EXPO_LINE_CURVE_POS, y, ed->curve, 0); -#else - if (ed->curveMode == MODE_CURVE) - putsCurve(EXPO_LINE_EXPO_POS-3*FW, y, ed->curveParam); - else - displayGVar(EXPO_LINE_EXPO_POS, y, ed->curveParam, -100, 100); -#endif - - putsSwitches(EXPO_LINE_SWITCH_POS, y, ed->swtch, 0); - -#if !defined(PCBTARANIS) - if (ed->mode!=3) lcd_putc(EXPO_LINE_SIDE_POS, y, ed->mode == 2 ? 126 : 127); -#endif - -#if defined(CPUARM) && LCD_W >= 212 - displayFlightModes(EXPO_LINE_FM_POS, y, ed->phases); - if (ed->name[0]) lcd_putsnAtt(EXPO_LINE_NAME_POS, y, ed->name, sizeof(ed->name), ZCHAR | (isExpoActive(i) ? BOLD : 0)); -#elif defined(CPUARM) - if (ed->name[0]) lcd_putsnAtt(EXPO_LINE_NAME_POS, y, ed->name, sizeof(ed->name), ZCHAR | (isExpoActive(i) ? BOLD : 0)); -#else - displayFlightModes(EXPO_LINE_FM_POS, y, ed->phases); -#endif - } - else { -#if LCD_W >= 212 - if (attr) { - displayHeaderChannelName(ch); - } -#endif - - if (mixCnt > 0) lcd_putsiAtt(FW, y, STR_VMLTPX2, md->mltpx, 0); - - putsMixerSource(MIX_LINE_SRC_POS, y, md->srcRaw, isMixActive(i) ? BOLD : 0); - - gvarWeightItem(MIX_LINE_WEIGHT_POS, y, md, attr, event); - -#if LCD_W >= 212 - displayFlightModes(EXPO_LINE_FM_POS, y, md->phases); -#endif - -#if defined(CPUARM) - if (md->name[0]) { - lcd_putsnAtt(EXPO_LINE_NAME_POS, y, md->name, sizeof(md->name), ZCHAR | (isMixActive(i) ? BOLD : 0)); - } -#if LCD_W < 212 - else -#endif -#endif - { -#if defined(PCBTARANIS) -#else - if (md->curveParam) { - if (md->curveMode == MODE_CURVE) - putsCurve(MIX_LINE_CURVE_POS, y, md->curveParam); - else - displayGVar(MIX_LINE_CURVE_POS+3*FW, y, md->curveParam, -100, 100); - } -#endif - if (md->swtch) putsSwitches(MIX_LINE_SWITCH_POS, y, md->swtch); - - char cs = ' '; - if (md->speedDown || md->speedUp) - cs = 'S'; - if ((md->delayUp || md->delayDown)) - cs = (cs =='S' ? '*' : 'D'); - lcd_putc(MIX_LINE_DELAY_POS, y, cs); - } - } - if (s_copyMode) { - if ((s_copyMode==COPY_MODE || s_copyTgtOfs == 0) && s_copySrcCh == ch && i == (s_copySrcIdx + (s_copyTgtOfs<0))) { - /* draw a border around the raw on selection mode (copy/move) */ - lcd_rect(expo ? EXPO_LINE_SELECT_POS : 22, y-1, expo ? (LCD_W-EXPO_LINE_SELECT_POS) : (LCD_W-22), 9, s_copyMode == COPY_MODE ? SOLID : DOTTED); - } - if (cur == sub) { - /* invert the raw when it's the current one */ - lcd_filled_rect(expo ? EXPO_LINE_SELECT_POS+1 : 23, y, expo ? (LCD_W-EXPO_LINE_SELECT_POS-2) : (LCD_W-24), 7); - } - } - } - cur++; y+=FH; mixCnt++; i++; if (expo) ed++; else md++; - } while (expo ? (ichn+1 == ch && EXPO_VALID(ed)) : (isrcRaw && md->destCh+1 == ch)); - if (s_copyMode == MOVE_MODE && s_pgOfs < cur && cur-s_pgOfs < LCD_LINES && s_copySrcCh == ch && i == (s_copySrcIdx + (s_copyTgtOfs<0))) { - lcd_rect(expo ? EXPO_LINE_SELECT_POS : 22, y-1, expo ? LCD_W-EXPO_LINE_SELECT_POS : LCD_W-22, 9, DOTTED); - cur++; y+=FH; - } - } - else { - uint8_t attr = 0; - if (sub == cur) { - s_currIdx = i; - s_currCh = ch; - if (!s_copyMode) { - attr = INVERS; - } - } - if (s_pgOfs < cur && cur-s_pgOfs < LCD_LINES) { - if (expo) { -#if defined(PCBTARANIS) - putsMixerSource(0, y, ch, attr); -#else - putsMixerSource(0, y, MIXSRC_Rud+ch-1, attr); -#endif - } - else { - putsChn(0, y, ch, attr); // show CHx -#if LCD_W >= 212 - if (attr) { - displayHeaderChannelName(ch); - } -#endif - } - if (s_copyMode == MOVE_MODE && s_copySrcCh == ch) { - lcd_rect(expo ? EXPO_LINE_SELECT_POS : 22, y-1, expo ? (LCD_W-EXPO_LINE_SELECT_POS) : (LCD_W-22), 9, DOTTED); - } - } - cur++; y+=FH; - } - } - s_maxLines = cur; - if (sub >= s_maxLines-1) m_posVert = s_maxLines-1; -} - -void menuModelExposAll(uint8_t event) -{ - return menuModelExpoMix(1, event); -} - -void menuModelMixAll(uint8_t event) -{ - return menuModelExpoMix(0, event); -} - -bool thrOutput(uint8_t ch) -{ - for (uint8_t i=0; idestCh==ch && mix->srcRaw==MIXSRC_Thr) - return true; - } - return false; -} - -enum LimitsItems { -#if defined(PCBTARANIS) - ITEM_LIMITS_CH_NAME, -#endif - ITEM_LIMITS_OFFSET, - ITEM_LIMITS_MIN, - ITEM_LIMITS_MAX, - ITEM_LIMITS_DIRECTION, -#if defined(PCBTARANIS) && defined(CURVES) - ITEM_LIMITS_CURVE, -#endif -#if defined(PPM_CENTER_ADJUSTABLE) - ITEM_LIMITS_PPM_CENTER, -#endif -#if defined(PPM_LIMITS_SYMETRICAL) - ITEM_LIMITS_SYMETRICAL, -#endif - ITEM_LIMITS_COUNT, - ITEM_LIMITS_MAXROW = ITEM_LIMITS_COUNT-1 -}; - -#if defined(PCBTARANIS) - #define LIMITS_NAME_POS 4*FW - #define LIMITS_OFFSET_POS 14*FW+4 - #define LIMITS_MIN_POS 20*FW-3 - #if defined(PPM_CENTER_ADJUSTABLE) - #define LIMITS_DIRECTION_POS 20*FW-3 - #define LIMITS_MAX_POS 24*FW+2 - #define LIMITS_REVERT_POS 25*FW-1 - #define LIMITS_CURVE_POS 27*FW-1 - #define LIMITS_PPM_CENTER_POS 34*FW - #else - #define LIMITS_DIRECTION_POS 21*FW - #define LIMITS_MAX_POS 26*FW - #define LIMITS_REVERT_POS 27*FW - #define LIMITS_CURVE_POS 32*FW - #endif -#else - #if defined(PPM_UNIT_US) - #define LIMITS_MIN_POS 12*FW+1 - #else - #define LIMITS_MIN_POS 12*FW - #endif - #define LIMITS_OFFSET_POS 8*FW - #if defined(PPM_LIMITS_SYMETRICAL) - #if defined(PPM_CENTER_ADJUSTABLE) - #define LIMITS_MAX_POS 15*FW - #define LIMITS_REVERT_POS 16*FW-3 - #define LIMITS_PPM_CENTER_POS 20*FW+1 - #else - #define LIMITS_DIRECTION_POS 12*FW+4 - #define LIMITS_MAX_POS 16*FW+4 - #define LIMITS_REVERT_POS 17*FW - #endif - #else - #if defined(PPM_CENTER_ADJUSTABLE) - #define LIMITS_MAX_POS 16*FW - #define LIMITS_REVERT_POS 17*FW-2 - #define LIMITS_PPM_CENTER_POS 21*FW+2 - #else - #define LIMITS_MAX_POS 17*FW - #define LIMITS_REVERT_POS 18*FW - #define LIMITS_DIRECTION_POS 12*FW+5 - #endif - #endif -#endif - -#if defined(CPUARM) - #define LIMITS_MIN_MAX_OFFSET 1000 - #define CONVERT_US_MIN_MAX(x) (((x)*128)/250) - #define MIN_MAX_LIMIT (10*limit) - #define MIN_MAX_ATTR attr|PREC1 -#else - #define LIMITS_MIN_MAX_OFFSET 100 - #define CONVERT_US_MIN_MAX(x) ((int16_t(x)*128)/25) - #define MIN_MAX_LIMIT (limit) - #define MIN_MAX_ATTR attr -#endif - -#if defined(PPM_UNIT_US) - #define MIN_MAX_DISPLAY(x) CONVERT_US_MIN_MAX(x) - #undef MIN_MAX_ATTR - #define MIN_MAX_ATTR attr -#else - #define MIN_MAX_DISPLAY(x) (x) -#endif - -#if defined(PCBTARANIS) -void onLimitsMenu(const char *result) -{ - uint8_t ch = m_posVert - 1; - - if (result == STR_RESET) { - LimitData *ld = limitAddress(ch); - ld->min = 0; - ld->max = 0; - ld->offset = 0; - ld->ppmCenter = 0; - ld->revert = false; - ld->curve = 0; - } - else if (result == STR_COPY_TRIMS_TO_OFFSET) { - copyTrimsToOffset(ch); - } -} -#endif - -void menuModelLimits(uint8_t event) -{ - uint8_t sub = m_posVert - 1; - - if (sub < NUM_CHNOUT) { -#if defined(PPM_CENTER_ADJUSTABLE) || defined(PPM_UNIT_US) - lcd_outdezAtt(13*FW, 0, PPM_CH_CENTER(sub)+channelOutputs[sub]/2, 0); - lcd_puts(13*FW, 0, STR_US); -#else - lcd_outdezAtt(13*FW, 0, calcRESXto1000(channelOutputs[sub]), PREC1); -#endif - } - -#if defined(CPUARM) - MENU(STR_MENULIMITS, menuTabModel, e_Limits, 1+NUM_CHNOUT+1, {0, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, 0}); -#else - MENU(STR_MENULIMITS, menuTabModel, e_Limits, 1+NUM_CHNOUT+1, {0, ITEM_LIMITS_MAXROW, ITEM_LIMITS_MAXROW, ITEM_LIMITS_MAXROW, ITEM_LIMITS_MAXROW, ITEM_LIMITS_MAXROW, ITEM_LIMITS_MAXROW, ITEM_LIMITS_MAXROW, ITEM_LIMITS_MAXROW, ITEM_LIMITS_MAXROW, ITEM_LIMITS_MAXROW, ITEM_LIMITS_MAXROW, ITEM_LIMITS_MAXROW, ITEM_LIMITS_MAXROW, ITEM_LIMITS_MAXROW, ITEM_LIMITS_MAXROW, ITEM_LIMITS_MAXROW, 0}); -#endif - -#if LCD_W >= 212 - if (sub=0) { - displayColumnHeader(STR_LIMITS_HEADERS, m_posHorz); - } -#endif - - if (s_warning_result) { - s_warning_result = 0; - LimitData *ld = limitAddress(sub); - ld->revert = !ld->revert; - eeDirty(EE_MODEL); - } - - for (uint8_t i=0; i= 212 || !defined(PPM_CENTER_ADJUSTABLE) - int16_t v = (ld->revert) ? -ld->offset : ld->offset; - char swVal = '-'; // '-', '<', '>' - if((channelOutputs[k] - v) > 50) swVal = (ld->revert ? 127 : 126); // Switch to raw inputs? - remove trim! - if((channelOutputs[k] - v) < -50) swVal = (ld->revert ? 126 : 127); - putsChn(0, y, k+1, 0); - lcd_putc(LIMITS_DIRECTION_POS, y, swVal); -#endif - -#if defined(PPM_CENTER_ADJUSTABLE) - int8_t limit = ((g_model.extendedLimits && !limitAddress(k)->ppmCenter) ? 125 : 100); -#else - int8_t limit = (g_model.extendedLimits ? 125 : 100); -#endif - -#if defined(PCBTARANIS) - putsChn(0, y, k+1, (sub==k && m_posHorz < 0) ? INVERS : 0); - if (sub==k && m_posHorz < 0 && event==EVT_KEY_LONG(KEY_ENTER)) { - killEvents(event); - MENU_ADD_ITEM(STR_RESET); - MENU_ADD_ITEM(STR_COPY_TRIMS_TO_OFFSET); - menuHandler = onLimitsMenu; - } -#else - putsChn(0, y, k+1, 0); -#endif - - for (uint8_t j=0; j0) ? BLINK|INVERS : INVERS) : 0); - uint8_t active = (attr && (s_editMode>0 || p1valdiff)) ; - if (active) STICK_SCROLL_DISABLE(); - switch(j) - { -#if defined(PCBTARANIS) - case ITEM_LIMITS_CH_NAME: - editName(LIMITS_NAME_POS, y, ld->name, sizeof(ld->name), event, attr); - break; -#endif - - case ITEM_LIMITS_OFFSET: -#if defined(PCBTARANIS) - ld->offset = GVAR_MENU_ITEM(LIMITS_OFFSET_POS, y, MIN_MAX_DISPLAY(ld->offset), -1000, 1000, attr|PREC1, 0, event); -#else - #if defined(PPM_UNIT_US) - lcd_outdezAtt(LIMITS_OFFSET_POS, y, ((int32_t)ld->offset*128) / 25, attr|PREC1); - #else - lcd_outdezAtt(LIMITS_OFFSET_POS, y, ld->offset, attr|PREC1); - #endif - if (active) { - ld->offset = checkIncDec(event, ld->offset, -1000, 1000, EE_MODEL|NO_INCDEC_MARKS); - } - else if (attr && event==EVT_KEY_LONG(KEY_MENU)) { - copyTrimsToOffset(k); - s_editMode = 0; - } -#endif - break; - - case ITEM_LIMITS_MIN: -#if defined(CPUARM) - ld->min = LIMITS_MIN_MAX_OFFSET + GVAR_MENU_ITEM(LIMITS_MIN_POS, y, MIN_MAX_DISPLAY(ld->min-LIMITS_MIN_MAX_OFFSET), -MIN_MAX_LIMIT, 0, MIN_MAX_ATTR, DBLKEYS_1000, event); -#else - lcd_outdezAtt(LIMITS_MIN_POS, y, MIN_MAX_DISPLAY(ld->min-LIMITS_MIN_MAX_OFFSET), MIN_MAX_ATTR); - if (active) ld->min = LIMITS_MIN_MAX_OFFSET + checkIncDecModel(event, ld->min-LIMITS_MIN_MAX_OFFSET, -MIN_MAX_LIMIT, 0); -#endif - break; - - case ITEM_LIMITS_MAX: -#if defined(CPUARM) - ld->max = -LIMITS_MIN_MAX_OFFSET + GVAR_MENU_ITEM(LIMITS_MAX_POS, y, MIN_MAX_DISPLAY(ld->max+LIMITS_MIN_MAX_OFFSET), 0, MIN_MAX_LIMIT, MIN_MAX_ATTR, DBLKEYS_1000, event); -#else - lcd_outdezAtt(LIMITS_MAX_POS, y, MIN_MAX_DISPLAY(ld->max+LIMITS_MIN_MAX_OFFSET), MIN_MAX_ATTR); - if (active) ld->max = -LIMITS_MIN_MAX_OFFSET + checkIncDecModelZero(event, ld->max+LIMITS_MIN_MAX_OFFSET, +MIN_MAX_LIMIT); -#endif - break; - - case ITEM_LIMITS_DIRECTION: - { - uint8_t revert = ld->revert; -#if defined(PPM_CENTER_ADJUSTABLE) - lcd_putcAtt(LIMITS_REVERT_POS, y, revert ? 127 : 126, attr); -#else - lcd_putsiAtt(LIMITS_REVERT_POS, y, STR_MMMINV, revert, attr); -#endif - if (active) { - uint8_t revert_new = checkIncDecModel(event, revert, 0, 1); - if (checkIncDec_Ret && thrOutput(k)) { - POPUP_CONFIRMATION(STR_INVERT_THR); - } - else { - ld->revert = revert_new; - } - } - break; - } - -#if defined(PCBTARANIS) && defined(CURVES) - case ITEM_LIMITS_CURVE: - putsCurve(LIMITS_CURVE_POS, y, ld->curve, attr); - if (attr && event==EVT_KEY_LONG(KEY_ENTER) && ld->curve>0) { - s_curveChan = (ld->curve<0 ? -ld->curve-1 : ld->curve-1); - pushMenu(menuModelCurveOne); - } - if (active) { - CHECK_INCDEC_MODELVAR(event, ld->curve, -MAX_CURVES, +MAX_CURVES); - } - break; -#endif - -#if defined(PPM_CENTER_ADJUSTABLE) - case ITEM_LIMITS_PPM_CENTER: - lcd_outdezAtt(LIMITS_PPM_CENTER_POS, y, PPM_CENTER+ld->ppmCenter, attr); -#pragma message("could be less restrictive!") - if (active && ld->max <= 0 && ld->min >= 0) { - CHECK_INCDEC_MODELVAR(event, ld->ppmCenter, -125, +125); - } - break; -#endif - -#if defined(PPM_LIMITS_SYMETRICAL) - case ITEM_LIMITS_SYMETRICAL: - lcd_putcAtt(LCD_W-FW-MENUS_SCROLLBAR_WIDTH, y, ld->symetrical ? '=' : '^', attr); - if (active) { - CHECK_INCDEC_MODELVAR_ZERO(event, ld->symetrical, 1); - } - break; -#endif - } - } - } -} - -#if defined(CURVES) - -#if defined(GVARS) - #define CURVE_SELECTED() (sub >= 0 && sub < MAX_CURVES) - #define GVAR_SELECTED() (sub >= MAX_CURVES) -#else - #define CURVE_SELECTED() (sub >= 0) -#endif - -void menuModelCurvesAll(uint8_t event) -{ -#if defined(GVARS) && defined(PCBSTD) - SIMPLE_MENU(STR_MENUCURVES, menuTabModel, e_CurvesAll, 1+MAX_CURVES+MAX_GVARS); -#else - SIMPLE_MENU(STR_MENUCURVES, menuTabModel, e_CurvesAll, 1+MAX_CURVES); -#endif - - int8_t sub = m_posVert - 1; - - switch (event) { -#if defined(ROTARY_ENCODER_NAVIGATION) - case EVT_ROTARY_BREAK: -#endif -#if defined(PCBTARANIS) - case EVT_KEY_BREAK(KEY_ENTER): -#else - case EVT_KEY_FIRST(KEY_RIGHT): - case EVT_KEY_FIRST(KEY_ENTER): -#endif - if (CURVE_SELECTED() && !READ_ONLY()) { - s_curveChan = sub; - pushMenu(menuModelCurveOne); - } - break; - } - - for (uint8_t i=0; i= MAX_CURVES) { - putsStrIdx(0, y, STR_GV, k-MAX_CURVES+1); - if (GVAR_SELECTED()) { - if (attr && s_editMode>0) attr |= BLINK; - lcd_outdezAtt(10*FW, y, GVAR_VALUE(k-MAX_CURVES, -1), attr); - if (attr) g_model.gvars[k-MAX_CURVES] = checkIncDec(event, g_model.gvars[k-MAX_CURVES], -1000, 1000, EE_MODEL); - } - } - else -#endif - { - putsStrIdx(0, y, STR_CV, k+1, attr); -#if defined(PCBTARANIS) - editName(4*FW, y, g_model.curveNames[k], sizeof(g_model.curveNames[k]), 0, 0); - CurveInfo & crv = g_model.curves[k]; - lcd_outdezAtt(11*FW, y, 5+crv.points, LEFT); - lcd_putsAtt(lcdLastPos, y, PSTR("pts"), 0); -#endif - } - } - - if (CURVE_SELECTED()) { - s_curveChan = sub; - DrawCurve(23); - } -} -#endif - -#if LCD_W >= 212 && defined(GVARS) && defined(FLIGHT_MODES) - -void onGVARSMenu(const char *result) -{ - int8_t sub = m_posVert - 1; - - if (result == STR_ENABLE_POPUP) { - g_model.gvars[sub].popup = true; - eeDirty(EE_MODEL); - } - else if (result == STR_DISABLE_POPUP) { - g_model.gvars[sub].popup = false; - eeDirty(EE_MODEL); - } - else if (result == STR_CLEAR) { - for (int i=0; i 6 - for (uint8_t l=0; l0) ? BLINK|INVERS : INVERS) : 0); - xcoord_t x = 12*FW + FWNUM + (j-1)*(2+3*FWNUM) - 3; - -#if MAX_GVARS == 6 - if (i==0 && j!=9) putsStrIdx(x+2, FH+1, STR_FP, j, SMLSIZE); -#elif MAX_GVARS <= 5 - if (i==0 && j!=9) putsStrIdx(x+2, 2*FH, STR_FP, j, SMLSIZE); -#endif - - switch(j) - { - case 0: - editName(4*FW-3, y, g_model.gvars[i].name, LEN_GVAR_NAME, event, attr); - break; - - default: - { - PhaseData *phase = &g_model.phaseData[j-1]; - int16_t & v = phase->gvars[i]; - int16_t vmin, vmax; - if (v > GVAR_MAX) { - uint8_t p = v - GVAR_MAX - 1; - if (p >= j-1) p++; - putsFlightPhase(x-15, y, p+1, attr|SMLSIZE); - vmin = GVAR_MAX+1; vmax = GVAR_MAX+MAX_PHASES-1; - } - else { - if (abs(v) >= 100) - lcd_outdezAtt(x, y+1, v, attr | TINSIZE); - else - lcd_outdezAtt(x, y, v, attr); - vmin = -GVAR_MAX; vmax = GVAR_MAX; - } - if (attr) { - if (event == EVT_KEY_LONG(KEY_ENTER)) { - s_editMode = 2; // TODO constant for that ... - v = (v > GVAR_MAX ? 0 : GVAR_MAX+1); - eeDirty(EE_MODEL); - } - else if (s_editMode>0 || p1valdiff) { - v = checkIncDec(event, v, vmin, vmax, EE_MODEL); - } - } - break; - } - } - } - } - -#if defined(CPUARM) - #define INCDEC_DECLARE_VARS() uint8_t incdecFlag = EE_MODEL; IsValueAvailable isValueAvailable = NULL - #define INCDEC_SET_FLAG(f) incdecFlag = (EE_MODEL|(f)) - #define INCDEC_ENABLE_CHECK(fn) isValueAvailable = fn - #define CHECK_INCDEC_PARAM(event, var, min, max) checkIncDec(event, var, min, max, incdecFlag, isValueAvailable) -#elif defined(CPUM64) - #define INCDEC_DECLARE_VARS() - #define INCDEC_SET_FLAG(f) - #define INCDEC_ENABLE_CHECK(fn) - #define CHECK_INCDEC_PARAM(event, var, min, max) checkIncDec(event, var, min, max, EE_MODEL) -#else - #define INCDEC_DECLARE_VARS() uint8_t incdecFlag = EE_MODEL - #define INCDEC_SET_FLAG(f) incdecFlag = (EE_MODEL|(f)) - #define INCDEC_ENABLE_CHECK(fn) - #define CHECK_INCDEC_PARAM(event, var, min, max) checkIncDec(event, var, min, max, incdecFlag) -#endif - - if (m_posVert > 0 && m_posHorz < 0 && event==EVT_KEY_LONG(KEY_ENTER)) { - killEvents(event); - if (g_model.gvars[sub].popup) - MENU_ADD_ITEM(STR_DISABLE_POPUP); - else - MENU_ADD_ITEM(STR_ENABLE_POPUP); - MENU_ADD_ITEM(STR_CLEAR); - menuHandler = onGVARSMenu; - } -} -#endif - -#if defined(CPUARM) - #define INCDEC_DECLARE_VARS() uint8_t incdecFlag = EE_MODEL; IsValueAvailable isValueAvailable = NULL - #define INCDEC_SET_FLAG(f) incdecFlag = (EE_MODEL|(f)) - #define INCDEC_ENABLE_CHECK(fn) isValueAvailable = fn - #define CHECK_INCDEC_PARAM(event, var, min, max) checkIncDec(event, var, min, max, incdecFlag, isValueAvailable) -#elif defined(CPUM64) - #define INCDEC_DECLARE_VARS() - #define INCDEC_SET_FLAG(f) - #define INCDEC_ENABLE_CHECK(fn) - #define CHECK_INCDEC_PARAM(event, var, min, max) checkIncDec(event, var, min, max, EE_MODEL) -#else - #define INCDEC_DECLARE_VARS() uint8_t incdecFlag = EE_MODEL - #define INCDEC_SET_FLAG(f) incdecFlag = (EE_MODEL|(f)) - #define INCDEC_ENABLE_CHECK(fn) - #define CHECK_INCDEC_PARAM(event, var, min, max) checkIncDec(event, var, min, max, incdecFlag) -#endif - -enum CustomSwitchFields { - CSW_FIELD_FUNCTION, - CSW_FIELD_V1, - CSW_FIELD_V2, - CSW_FIELD_ANDSW, -#if defined(CPUARM) - CSW_FIELD_DURATION, - CSW_FIELD_DELAY, -#endif - CSW_FIELD_COUNT, - CSW_FIELD_LAST = CSW_FIELD_COUNT-1 -}; - -#if LCD_W >= 212 - #define CSW_1ST_COLUMN (4*FW-3) - #define CSW_2ND_COLUMN (8*FW+1) - #define CSW_3RD_COLUMN (14*FW) - #define CSW_4TH_COLUMN (21*FW+1) - #define CSW_5TH_COLUMN (26*FW+1) - #define CSW_6TH_COLUMN (31*FW+1) -#else - #define CSW_1ST_COLUMN (4*FW-3) - #define CSW_2ND_COLUMN (8*FW-3) - #define CSW_3RD_COLUMN (13*FW-6) - #define CSW_4TH_COLUMN (18*FW+2) -#endif - -#if defined(CPUARM) && LCD_W < 212 - -#define CSWONE_2ND_COLUMN (11*FW) - -void menuModelCustomSwitchOne(uint8_t event) -{ - TITLE(STR_MENUCUSTOMSWITCH); - - CustomSwData * cs = cswAddress(s_currIdx); - uint8_t sw = SWSRC_SW1+s_currIdx; - putsSwitches(14*FW, 0, sw, (getSwitch(sw) ? BOLD : 0)); - SIMPLE_SUBMENU_NOTITLE(CSW_FIELD_COUNT); - - int8_t sub = m_posVert; - - for (uint8_t k=0; k0 ? BLINK|INVERS : INVERS) : 0); - uint8_t cstate = cswFamily(cs->func); - switch(i) { - case CSW_FIELD_FUNCTION: - lcd_putsLeft(y, STR_FUNC); - lcd_putsiAtt(CSWONE_2ND_COLUMN, y, STR_VCSWFUNC, cs->func, attr); - if (attr) { - CHECK_INCDEC_MODELVAR_ZERO(event, cs->func, CS_MAXF); - if (cstate != cswFamily(cs->func)) { - cs->v1 = 0; - cs->v2 = 0; - } - } - break; - case CSW_FIELD_V1: - { - lcd_putsLeft(y, STR_V1); - int8_t v1_min=0, v1_max=MIXSRC_LAST_TELEM; - if (cstate == CS_VBOOL) { - putsSwitches(CSWONE_2ND_COLUMN, y, cs->v1, attr); - v1_min = SWSRC_OFF+1; v1_max = SWSRC_ON-1; - } - else if (cstate == CS_VTIMER) { - lcd_outdezAtt(CSWONE_2ND_COLUMN, y, cs->v1+1, LEFT|attr); - v1_max = 99; - } - else { - putsMixerSource(CSWONE_2ND_COLUMN, y, cs->v1, attr); - } - if (attr) { - CHECK_INCDEC_MODELVAR(event, cs->v1, v1_min, v1_max); - } - break; - } - case CSW_FIELD_V2: - { - lcd_putsLeft(y, STR_V2); - int8_t v2_min=0, v2_max=MIXSRC_LAST_TELEM; - if (cstate == CS_VBOOL) { - putsSwitches(CSWONE_2ND_COLUMN, y, cs->v2, attr); - v2_min = SWSRC_OFF+1; v2_max = SWSRC_ON-1; - } - else if (cstate == CS_VTIMER) { - lcd_outdezAtt(CSWONE_2ND_COLUMN, y, cs->v2+1, LEFT|attr); - v2_max = 99; - } - else if (cstate == CS_VCOMP) { - putsMixerSource(CSWONE_2ND_COLUMN, y, cs->v2, attr); - } - else { -#if defined(FRSKY) - if (cs->v1 >= MIXSRC_FIRST_TELEM) { - putsTelemetryChannel(CSWONE_2ND_COLUMN, y, cs->v1 - MIXSRC_FIRST_TELEM, convertCswTelemValue(cs), attr|LEFT); - v2_max = maxTelemValue(cs->v1 - MIXSRC_FIRST_TELEM + 1); - if (cstate == CS_VOFS) { - v2_min = -128; - v2_max -= 128; - } - else { - v2_max = min((uint8_t)127, (uint8_t)v2_max); - v2_min = -v2_max; - } - if (cs->v2 > v2_max) { - cs->v2 = v2_max; - eeDirty(EE_MODEL); - } - } - else -#endif - { - v2_min = -125; v2_max = 125; - lcd_outdezAtt(CSWONE_2ND_COLUMN, y, cs->v2, LEFT|attr); - } - } - - if (attr) { - CHECK_INCDEC_MODELVAR(event, cs->v2, v2_min, v2_max); - } - break; - } - case CSW_FIELD_ANDSW: - lcd_putsLeft(y, STR_AND_SWITCH); - putsSwitches(CSWONE_2ND_COLUMN, y, cs->andsw, attr); - if (attr) CHECK_INCDEC_MODELVAR(event, cs->andsw, -MAX_SWITCH, MAX_SWITCH); - break; - case CSW_FIELD_DURATION: - lcd_putsLeft(y, STR_DURATION); - if (cs->duration > 0) - lcd_outdezAtt(CSWONE_2ND_COLUMN, y, 5*cs->duration, attr|PREC1|LEFT); - else - lcd_putsiAtt(CSWONE_2ND_COLUMN, y, STR_MMMINV, 0, attr); - if (attr) CHECK_INCDEC_MODELVAR_ZERO(event, cs->duration, MAX_CSW_DURATION); - break; - case CSW_FIELD_DELAY: - lcd_putsLeft(y, STR_DELAY); - if (cs->delay > 0) - lcd_outdezAtt(CSWONE_2ND_COLUMN, y, 5*cs->delay, attr|PREC1|LEFT); - else - lcd_putsiAtt(CSWONE_2ND_COLUMN, y, STR_MMMINV, 0, attr); - if (attr) CHECK_INCDEC_MODELVAR_ZERO(event, cs->delay, MAX_CSW_DELAY); - break; - } - } -} - -void menuModelCustomSwitches(uint8_t event) -{ - SIMPLE_MENU(STR_MENUCUSTOMSWITCHES, menuTabModel, e_CustomSwitches, NUM_CSW+1); - - uint8_t y = 0; - uint8_t k = 0; - int8_t sub = m_posVert - 1; - - switch (event) { -#if defined(ROTARY_ENCODER_NAVIGATION) - case EVT_ROTARY_BREAK: -#endif - case EVT_KEY_FIRST(KEY_RIGHT): - case EVT_KEY_FIRST(KEY_ENTER): - if (sub >= 0) { - s_currIdx = sub; - pushMenu(menuModelCustomSwitchOne); - } - break; - } - - for (uint8_t i=0; ifunc > 0) { - // CSW func - lcd_putsiAtt(CSW_1ST_COLUMN, y, STR_VCSWFUNC, cs->func, 0); - - // CSW params - uint8_t cstate = cswFamily(cs->func); - - if (cstate == CS_VBOOL) { - putsSwitches(CSW_2ND_COLUMN, y, cs->v1, 0); - putsSwitches(CSW_3RD_COLUMN, y, cs->v2, 0); - } - else if (cstate == CS_VCOMP) { - putsMixerSource(CSW_2ND_COLUMN, y, cs->v1, 0); - putsMixerSource(CSW_3RD_COLUMN, y, cs->v2, 0); - } - else if (cstate == CS_VTIMER) { - lcd_outdezAtt(CSW_2ND_COLUMN, y, cs->v1+1, LEFT); - lcd_outdezAtt(CSW_3RD_COLUMN, y, cs->v2+1, LEFT); - } - else { - putsMixerSource(CSW_2ND_COLUMN, y, cs->v1, 0); - if (cs->v1 >= MIXSRC_FIRST_TELEM) { - putsTelemetryChannel(CSW_3RD_COLUMN, y, cs->v1 - MIXSRC_FIRST_TELEM, convertCswTelemValue(cs), LEFT); - } - else { - lcd_outdezAtt(CSW_3RD_COLUMN, y, cs->v2, LEFT); - } - } - - // CSW and switch - putsSwitches(CSW_4TH_COLUMN, y, cs->andsw, 0); - } - } -} - -#else - -#if defined(PCBTARANIS) -enum ClipboardType { - CLIPBOARD_TYPE_NONE, - CLIPBOARD_TYPE_CUSTOM_SWITCH, - CLIPBOARD_TYPE_CUSTOM_FUNCTION, -}; - -struct Clipboard { - ClipboardType type; - union { - CustomSwData csw; - CustomFnData cfn; - } data; -}; - -Clipboard clipboard; - -void onCustomSwitchesMenu(const char *result) -{ - int8_t sub = m_posVert-1; - CustomSwData * cs = cswAddress(sub); - - if (result == STR_COPY) { - clipboard.type = CLIPBOARD_TYPE_CUSTOM_SWITCH; - clipboard.data.csw = *cs; - } - else if (result == STR_PASTE) { - *cs = clipboard.data.csw; - eeDirty(EE_MODEL); - } - else if (result == STR_DELETE) { - memset(cs, 0, sizeof(CustomSwData)); - eeDirty(EE_MODEL); - } -} -#endif - -void menuModelCustomSwitches(uint8_t event) -{ - INCDEC_DECLARE_VARS(); - - MENU(STR_MENUCUSTOMSWITCHES, menuTabModel, e_CustomSwitches, NUM_CSW+1, {0, NAVIGATION_LINE_BY_LINE|CSW_FIELD_LAST/*repeated...*/}); - - uint8_t y = 0; - uint8_t k = 0; - int8_t sub = m_posVert - 1; - horzpos_t horz = m_posHorz; - -#if LCD_W >= 212 - if (horz>=0) { - displayColumnHeader(STR_CSW_HEADERS, horz); - } -#endif - -#if defined(PCBTARANIS) - if (sub>=0 && horz<0 && event==EVT_KEY_LONG(KEY_ENTER) && !READ_ONLY()) { - killEvents(event); - CustomSwData * cs = cswAddress(sub); - if (cs->func) MENU_ADD_ITEM(STR_COPY); - if (clipboard.type == CLIPBOARD_TYPE_CUSTOM_SWITCH) - MENU_ADD_ITEM(STR_PASTE); - if (cs->func || cs->v1 || cs->v2 || cs->delay || cs->duration || cs->andsw) MENU_ADD_ITEM(STR_DELETE); - menuHandler = onCustomSwitchesMenu; - } -#endif - - for (uint8_t i=0; i0) ? BLINK|INVERS : INVERS) : 0); - uint8_t attr1 = (horz==1 ? attr : 0); - uint8_t attr2 = (horz==2 ? attr : 0); - CustomSwData * cs = cswAddress(k); - - // CSW name - uint8_t sw = SWSRC_SW1+k; - putsSwitches(0, y, sw, (getSwitch(sw) ? BOLD : 0) | ((sub==k && horz<0) ? INVERS : 0)); - - // CSW func - lcd_putsiAtt(CSW_1ST_COLUMN, y, STR_VCSWFUNC, cs->func, horz==0 ? attr : 0); - - // CSW params - uint8_t cstate = cswFamily(cs->func); -#if defined(CPUARM) - int16_t v1_min=0, v1_max=MIXSRC_LAST_TELEM, v2_min=0, v2_max=MIXSRC_LAST_TELEM; -#else - int8_t v1_min=0, v1_max=MIXSRC_LAST_TELEM, v2_min=0, v2_max=MIXSRC_LAST_TELEM; -#endif - - if (cstate == CS_VBOOL) { - putsSwitches(CSW_2ND_COLUMN, y, cs->v1, attr1); - putsSwitches(CSW_3RD_COLUMN, y, cs->v2, attr2); - v1_min = SWSRC_OFF+1; v1_max = SWSRC_ON-1; - v2_min = SWSRC_OFF+1; v2_max = SWSRC_ON-1; - INCDEC_SET_FLAG(INCDEC_SWITCH); - INCDEC_ENABLE_CHECK(NULL); - } - else if (cstate == CS_VCOMP) { - putsMixerSource(CSW_2ND_COLUMN, y, cs->v1, attr1); - putsMixerSource(CSW_3RD_COLUMN, y, cs->v2, attr2); - INCDEC_SET_FLAG(INCDEC_SOURCE); - INCDEC_ENABLE_CHECK(isSourceAvailable); - } - else if (cstate == CS_VTIMER) { - lcd_outdezAtt(CSW_2ND_COLUMN, y, cswTimerValue(cs->v1), LEFT|PREC1|attr1); - lcd_outdezAtt(CSW_3RD_COLUMN, y, cswTimerValue(cs->v2), LEFT|PREC1|attr2); - v1_min = v2_min = -128; - v1_max = v2_max = 122; - INCDEC_SET_FLAG(0); - INCDEC_ENABLE_CHECK(NULL); - } - else { - putsMixerSource(CSW_2ND_COLUMN, y, cs->v1, attr1); - if (horz == 1) { - INCDEC_SET_FLAG(INCDEC_SOURCE); - INCDEC_ENABLE_CHECK(isSourceAvailable); - } - else { - INCDEC_SET_FLAG(0); - INCDEC_ENABLE_CHECK(NULL); - } -#if defined(FRSKY) - if (cs->v1 >= MIXSRC_FIRST_TELEM) { - putsTelemetryChannel(CSW_3RD_COLUMN, y, cs->v1 - MIXSRC_FIRST_TELEM, convertCswTelemValue(cs), LEFT|attr2); - v2_max = maxTelemValue(cs->v1 - MIXSRC_FIRST_TELEM + 1); -#if defined(CPUARM) - v2_min = minTelemValue(cs->v1 - MIXSRC_FIRST_TELEM + 1); - if (cs->v2 < v2_min || cs->v2 > v2_max) { - cs->v2 = 0; - eeDirty(EE_MODEL); - } -#else - if (cstate == CS_VOFS) { - v2_min = -128; - v2_max -= 128; - } - else { - v2_max = min((uint8_t)127, (uint8_t)v2_max); - v2_min = -v2_max; - } - if (cs->v2 > v2_max) { - cs->v2 = v2_max; - eeDirty(EE_MODEL); - } -#endif - } - else { - lcd_outdezAtt(CSW_3RD_COLUMN, y, cs->v2, LEFT|attr2); - v2_min = -125; v2_max = 125; - } -#else - if (cs->v1 >= MIXSRC_FIRST_TELEM) { - putsTelemetryChannel(CSW_3RD_COLUMN, y, cs->v1 - MIXSRC_FIRST_TELEM, convertCswTelemValue(cs), LEFT|attr2); - v2_min = -128; v2_max = 127; - } - else { - lcd_outdezAtt(CSW_3RD_COLUMN, y, cs->v2, LEFT|attr2); - v2_min = -125; v2_max = 125; - } -#endif - } - - // CSW and switch - putsSwitches(CSW_4TH_COLUMN, y, cs->andsw, horz==3 ? attr : 0); - -#if defined(CPUARM) - // CSW duration - if (cs->duration > 0) - lcd_outdezAtt(CSW_5TH_COLUMN, y, 5*cs->duration, (horz==4 ? attr : 0)|PREC1|LEFT); - else - lcd_putsiAtt(CSW_5TH_COLUMN, y, STR_MMMINV, 0, horz==4 ? attr : 0); - - // CSW delay - if (cs->delay > 0) - lcd_outdezAtt(CSW_6TH_COLUMN, y, 5*cs->delay, (horz==5 ? attr : 0)|PREC1|LEFT); - else - lcd_putsiAtt(CSW_6TH_COLUMN, y, STR_MMMINV, 0, horz==5 ? attr : 0); -#endif - - if ((s_editMode>0 || p1valdiff) && attr) { - switch (horz) { - case CSW_FIELD_FUNCTION: - { - CHECK_INCDEC_MODELVAR_ZERO(event, cs->func, CS_MAXF); - uint8_t new_cstate = cswFamily(cs->func); - if (cstate != new_cstate) - cs->v1 = cs->v2 = (new_cstate==CS_VTIMER ? -119/*1.0*/ : 0); - break; - } - case CSW_FIELD_V1: - cs->v1 = CHECK_INCDEC_PARAM(event, cs->v1, v1_min, v1_max); - break; - case CSW_FIELD_V2: - cs->v2 = CHECK_INCDEC_PARAM(event, cs->v2, v2_min, v2_max); -#if defined(PCBTARANIS) - if (cstate==CS_VOFS && cs->v1!=0 && event==EVT_KEY_LONG(KEY_ENTER)) { - killEvents(event); - getvalue_t x = getValue(cs->v1); - TRACE("AUTO x=%d", x); - if (cs->v1 < MIXSRC_GVAR1) - cs->v2 = calcRESXto100(x); - else if (cs->v1 - MIXSRC_FIRST_TELEM + 1 == TELEM_ALT) - cs->v2 *= 100; - eeDirty(EE_MODEL); - } -#endif - break; - case CSW_FIELD_ANDSW: -#if defined(CPUARM) - CHECK_INCDEC_MODELSWITCH(event, cs->andsw, -MAX_CSW_ANDSW, MAX_CSW_ANDSW); -#else - CHECK_INCDEC_MODELVAR_ZERO(event, cs->andsw, MAX_CSW_ANDSW); -#endif - break; -#if defined(CPUARM) - case CSW_FIELD_DURATION: - CHECK_INCDEC_MODELVAR_ZERO(event, cs->duration, MAX_CSW_DURATION); - break; - case CSW_FIELD_DELAY: - CHECK_INCDEC_MODELVAR_ZERO(event, cs->delay, MAX_CSW_DELAY); - break; -#endif - } - } - } -} -#endif - -#if LCD_W >= 212 - #define MODEL_CUSTOM_FUNC_1ST_COLUMN (5+4*FW) - #define MODEL_CUSTOM_FUNC_2ND_COLUMN (9*FW) - #define MODEL_CUSTOM_FUNC_3RD_COLUMN (21*FW) - #define MODEL_CUSTOM_FUNC_4TH_COLUMN (33*FW-3) - #define MODEL_CUSTOM_FUNC_4TH_COLUMN_ONOFF (34*FW-3) -#else - #define MODEL_CUSTOM_FUNC_1ST_COLUMN (3) - #define MODEL_CUSTOM_FUNC_2ND_COLUMN (5*FW-2) - #define MODEL_CUSTOM_FUNC_3RD_COLUMN (15*FW+2) - #define MODEL_CUSTOM_FUNC_4TH_COLUMN (20*FW) - #if defined(GRAPHICS) - #define MODEL_CUSTOM_FUNC_4TH_COLUMN_ONOFF (20*FW) - #else - #define MODEL_CUSTOM_FUNC_4TH_COLUMN_ONOFF (18*FW+2) - #endif -#endif - -#if defined(CPUARM) && defined(SDCARD) -void onCustomFunctionsFileSelectionMenu(const char *result) -{ - int8_t sub = m_posVert - 1; - - if (result == STR_UPDATE_LIST) { - char directory[] = SOUNDS_PATH; - strncpy(directory+SOUNDS_PATH_LNG_OFS, currentLanguagePack->id, 2); - if (!listSdFiles(directory, SOUNDS_EXT, sizeof(g_model.funcSw[sub].param), NULL)) { - POPUP_WARNING(STR_NO_SOUNDS_ON_SD); - s_menu_flags = 0; - } - } - else { - // The user choosed a wav file in the list - memcpy(g_model.funcSw[sub].param.name, result, sizeof(g_model.funcSw[sub].param.name)); - eeDirty(EE_MODEL); - } -} -#endif - -#if defined(PCBTARANIS) -void onCustomFunctionsMenu(const char *result) -{ - int8_t sub = m_posVert-1; - CustomFnData * cfn = &g_model.funcSw[sub]; - - if (result == STR_COPY) { - clipboard.type = CLIPBOARD_TYPE_CUSTOM_FUNCTION; - clipboard.data.cfn = *cfn; - } - else if (result == STR_PASTE) { - *cfn = clipboard.data.cfn; - eeDirty(EE_MODEL); - } - else if (result == STR_CLEAR) { - memset(cfn, 0, sizeof(CustomFnData)); - eeDirty(EE_MODEL); - } - else if (result == STR_INSERT) { - memmove(cfn+1, cfn, (NUM_CFN-sub-1)*sizeof(CustomFnData)); - memset(cfn, 0, sizeof(CustomFnData)); - eeDirty(EE_MODEL); - } - else if (result == STR_DELETE) { - memmove(cfn, cfn+1, (NUM_CFN-sub-1)*sizeof(CustomFnData)); - memset(&g_model.funcSw[NUM_CFN-1], 0, sizeof(CustomFnData)); - eeDirty(EE_MODEL); - } -} - -#endif - -void menuModelCustomFunctions(uint8_t event) -{ - MENU(STR_MENUCUSTOMFUNC, menuTabModel, e_CustomFunctions, NUM_CFN+1, {0, NAVIGATION_LINE_BY_LINE|3/*repeated*/}); - - uint8_t y; - uint8_t k = 0; - int8_t sub = m_posVert - 1; - -#if defined(PCBTARANIS) - if (sub>=0 && m_posHorz<0 && event==EVT_KEY_LONG(KEY_ENTER) && !READ_ONLY()) { - killEvents(event); - CustomFnData *sd = &g_model.funcSw[sub]; - if (!CFN_EMPTY(sd)) - MENU_ADD_ITEM(STR_COPY); - if (clipboard.type == CLIPBOARD_TYPE_CUSTOM_FUNCTION) - MENU_ADD_ITEM(STR_PASTE); - if (!CFN_EMPTY(sd) && CFN_EMPTY(&g_model.funcSw[NUM_CFN-1])) - MENU_ADD_ITEM(STR_INSERT); - if (CFN_EMPTY(sd)) - MENU_ADD_ITEM(STR_DELETE); - else - MENU_ADD_ITEM(STR_CLEAR); - menuHandler = onCustomFunctionsMenu; - } -#endif - - for (uint8_t i=0; i= 212 - putsStrIdx(0, y, STR_CF, k+1, (sub==k && m_posHorz<0) ? INVERS : 0); -#endif - - CustomFnData *sd = &g_model.funcSw[k]; - for (uint8_t j=0; j<4; j++) { - uint8_t attr = ((sub==k && m_posHorz==j) ? ((s_editMode>0) ? BLINK|INVERS : INVERS) : 0); - uint8_t active = (attr && (s_editMode>0 || p1valdiff)); - switch (j) { - case 0: - putsSwitches(MODEL_CUSTOM_FUNC_1ST_COLUMN, y, sd->swtch, attr | ((activeFnSwitches & ((MASK_CFN_TYPE)1 << k)) ? BOLD : 0)); - if (active || AUTOSWITCH_ENTER_LONG()) CHECK_INCDEC_MODELSWITCH(event, sd->swtch, SWSRC_FIRST, SWSRC_LAST); - break; - - case 1: - if (sd->swtch) { - uint8_t func_displayed; - if (CFN_FUNC(sd) < FUNC_TRAINER) { - func_displayed = 0; - putsChn(MODEL_CUSTOM_FUNC_2ND_COLUMN+6*FW, y, CFN_CH_NUMBER(sd)+1, attr); - } - else if (CFN_FUNC(sd) <= FUNC_TRAINER + NUM_STICKS) { - func_displayed = 1; - if (CFN_FUNC(sd) != FUNC_TRAINER) - putsMixerSource(MODEL_CUSTOM_FUNC_2ND_COLUMN+7*FW, y, MIXSRC_Rud+CFN_FUNC(sd)-FUNC_TRAINER-1, attr); - } -#if defined(DEBUG) - else if (CFN_FUNC(sd) == FUNC_TEST) { -#if defined(GVARS) - func_displayed = FUNC_TEST - FUNC_TRAINER - NUM_STICKS - MAX_GVARS + 2; -#else - func_displayed = FUNC_TEST - FUNC_TRAINER - NUM_STICKS + 1; -#endif - } -#endif -#if defined(GVARS) - else if (CFN_FUNC(sd) >= FUNC_ADJUST_GV1) { - func_displayed = FUNC_ADJUST_GV1 - FUNC_TRAINER - NUM_STICKS + 1; - putsStrIdx(MODEL_CUSTOM_FUNC_2ND_COLUMN+7*FW, y, STR_GV, CFN_FUNC(sd)-FUNC_ADJUST_GV1+1, attr); - } -#endif - else { - func_displayed = 2 + CFN_FUNC(sd) - FUNC_TRAINER - NUM_STICKS - 1; - } - lcd_putsiAtt(MODEL_CUSTOM_FUNC_2ND_COLUMN, y, STR_VFSWFUNC, func_displayed, attr); - if (active) { -#if defined(CPUARM) - CHECK_INCDEC_MODELVAR_ZERO(event, CFN_FUNC(sd), FUNC_MAX-1); -#else - if (CFN_FUNC(sd) < FUNC_TRAINER) { - CHECK_INCDEC_MODELVAR_ZERO(event, sd->internal.func_safety.func, 16); - } - else { - CHECK_INCDEC_MODELVAR_ZERO(event, CFN_FUNC(sd), FUNC_MAX-1); - if (CFN_FUNC(sd) < FUNC_TRAINER) - sd->internal.func_safety.func = 15; - } -#endif - if (checkIncDec_Ret) CFN_RESET(sd); - } - } - else if (attr) { - REPEAT_LAST_CURSOR_MOVE(); - } - break; - - case 2: - if (sd->swtch) { - INCDEC_DECLARE_VARS(); - int16_t val_displayed = CFN_PARAM(sd); - int8_t val_min = 0; - uint8_t val_max = 255; - if (CFN_FUNC(sd) == FUNC_PLAY_SOUND) { -#if defined(AUDIO) - val_max = AU_FRSKY_LAST-AU_FRSKY_FIRST-1; - lcd_putsiAtt(MODEL_CUSTOM_FUNC_3RD_COLUMN, y, STR_FUNCSOUNDS, val_displayed, attr); -#else - break; -#endif - } -#if defined(HAPTIC) - else if (CFN_FUNC(sd) == FUNC_HAPTIC) { - val_max = 3; - lcd_outdezAtt(MODEL_CUSTOM_FUNC_3RD_COLUMN, y, val_displayed, attr|LEFT); - } -#endif -#if defined(CPUARM) && defined(SDCARD) - else if (CFN_FUNC(sd) == FUNC_PLAY_TRACK || CFN_FUNC(sd) == FUNC_BACKGND_MUSIC) { -#if LCD_W >= 212 - xcoord_t x = MODEL_CUSTOM_FUNC_3RD_COLUMN; -#else - xcoord_t x = (CFN_FUNC(sd) == FUNC_PLAY_TRACK ? MODEL_CUSTOM_FUNC_2ND_COLUMN + FW + FW*strlen(TR_PLAY_TRACK) : MODEL_CUSTOM_FUNC_3RD_COLUMN); -#endif - if (ZEXIST(sd->param.name)) - lcd_putsnAtt(x, y, sd->param.name, sizeof(sd->param.name), attr); - else - lcd_putsiAtt(x, y, STR_VCSWFUNC, 0, attr); - if (active && event==EVT_KEY_BREAK(KEY_ENTER)) { - s_editMode = 0; - char directory[] = SOUNDS_PATH; - strncpy(directory+SOUNDS_PATH_LNG_OFS, currentLanguagePack->id, 2); - if (listSdFiles(directory, SOUNDS_EXT, sizeof(sd->param.name), sd->param.name)) { - menuHandler = onCustomFunctionsFileSelectionMenu; - } - else { - POPUP_WARNING(STR_NO_SOUNDS_ON_SD); - s_menu_flags = 0; - } - } - break; - } - else if (CFN_FUNC(sd) == FUNC_PLAY_VALUE) { - val_max = MIXSRC_FIRST_TELEM + TELEM_DISPLAY_MAX - 1; - putsMixerSource(MODEL_CUSTOM_FUNC_3RD_COLUMN, y, val_displayed, attr); - INCDEC_ENABLE_CHECK(isSourceAvailable); - } -#endif -#if defined(CPUARM) - else if (CFN_FUNC(sd) == FUNC_VOLUME) { - val_max = MIXSRC_LAST_CH; - putsMixerSource(MODEL_CUSTOM_FUNC_3RD_COLUMN, y, val_displayed, attr); - INCDEC_ENABLE_CHECK(isSourceAvailable); - } -#elif defined(VOICE) - else if (CFN_FUNC(sd) == FUNC_PLAY_TRACK) { -#if defined(GVARS) - if (attr && event==EVT_KEY_LONG(KEY_ENTER)) { - killEvents(event); - s_editMode = !s_editMode; - active = true; - val_displayed = (val_displayed > 250 ? 0 : 251); - } - if (val_displayed > 250) { - putsStrIdx(MODEL_CUSTOM_FUNC_3RD_COLUMN, y, STR_GV, val_displayed-250, attr); - } - else { - lcd_outdezAtt(MODEL_CUSTOM_FUNC_3RD_COLUMN, y, val_displayed+PROMPT_CUSTOM_BASE, attr|LEFT); - } -#else - lcd_outdezAtt(MODEL_CUSTOM_FUNC_3RD_COLUMN, y, val_displayed+PROMPT_CUSTOM_BASE, attr|LEFT); -#endif - } - else if (CFN_FUNC(sd) == FUNC_PLAY_BOTH) { - lcd_putcAtt(MODEL_CUSTOM_FUNC_3RD_COLUMN+3*FWNUM, y, '|', attr); - lcd_outdezAtt(MODEL_CUSTOM_FUNC_3RD_COLUMN+3*FWNUM, y, val_displayed+PROMPT_CUSTOM_BASE, attr); - lcd_outdezAtt(MODEL_CUSTOM_FUNC_3RD_COLUMN+2+3*FWNUM, y, (val_displayed+PROMPT_CUSTOM_BASE+1)%10, attr|LEFT); - } - else if (CFN_FUNC(sd) == FUNC_PLAY_VALUE) { - val_max = MIXSRC_FIRST_TELEM + TELEM_DISPLAY_MAX - 1; - putsMixerSource(MODEL_CUSTOM_FUNC_3RD_COLUMN, y, val_displayed, attr); - INCDEC_ENABLE_CHECK(isSourceAvailable); - } -#endif -#if defined(SDCARD) - else if (CFN_FUNC(sd) == FUNC_LOGS) { - if (val_displayed) { - lcd_outdezAtt(MODEL_CUSTOM_FUNC_3RD_COLUMN, y, val_displayed, attr|PREC1|LEFT); - lcd_putc(lcdLastPos, y, 's'); - } - else { - lcd_putsiAtt(MODEL_CUSTOM_FUNC_3RD_COLUMN, y, STR_MMMINV, 0, attr); - } - } -#endif - else if (CFN_FUNC(sd) == FUNC_RESET) { - val_max = FUNC_RESET_PARAM_LAST; - lcd_putsiAtt(MODEL_CUSTOM_FUNC_3RD_COLUMN, y, STR_VFSWRESET, CFN_PARAM(sd), attr); - } - else if (CFN_FUNC(sd) < FUNC_TRAINER) { - val_displayed = (int8_t)CFN_PARAM(sd); - val_min = -125; val_max = 125; - lcd_outdezAtt(MODEL_CUSTOM_FUNC_3RD_COLUMN, y, val_displayed, attr|LEFT); - } -#if defined(GVARS) - else if (CFN_FUNC(sd) >= FUNC_ADJUST_GV1 -#if defined(DEBUG) - && CFN_FUNC(sd) <= FUNC_ADJUST_GVLAST -#endif - ) { - switch (CFN_GVAR_MODE(sd)) { - case FUNC_ADJUST_GVAR_CONSTANT: - val_displayed = (int8_t)CFN_PARAM(sd); - val_min = -125; val_max = 125; - lcd_outdezAtt(MODEL_CUSTOM_FUNC_3RD_COLUMN, y, val_displayed, attr|LEFT); - break; - case FUNC_ADJUST_GVAR_SOURCE: - val_max = MIXSRC_LAST_CH; - putsMixerSource(MODEL_CUSTOM_FUNC_3RD_COLUMN, y, val_displayed, attr); - INCDEC_ENABLE_CHECK(isSourceAvailable); - break; - case FUNC_ADJUST_GVAR_GVAR: - val_max = MAX_GVARS-1; - putsStrIdx(MODEL_CUSTOM_FUNC_3RD_COLUMN, y, STR_GV, val_displayed+1, attr); - break; - default: // FUNC_ADJUST_GVAR_INC - val_max = 1; - lcd_putsiAtt(MODEL_CUSTOM_FUNC_3RD_COLUMN, y, PSTR("\002-1+1"), val_displayed, attr); - break; - } - - if (attr && event==EVT_KEY_LONG(KEY_ENTER)) { - killEvents(event); - s_editMode = !s_editMode; - active = true; - CFN_GVAR_MODE(sd) += 1; - val_displayed = 0; - } - } -#endif - else { - if (attr) m_posHorz = (CURSOR_MOVED_LEFT(event) ? 1 : 3); - break; - } - - if (active) { - CFN_PARAM(sd) = CHECK_INCDEC_PARAM(event, val_displayed, val_min, val_max); - } - } - else if (attr) { - REPEAT_LAST_CURSOR_MOVE(); - } - break; - - case 3: - if (sd->swtch && (CFN_FUNC(sd) <= FUNC_INSTANT_TRIM -#if defined(GVARS) - || CFN_FUNC(sd) >= FUNC_ADJUST_GV1 -#endif -#if defined(CPUARM) - || CFN_FUNC(sd) == FUNC_VOLUME -#endif - )) { - menu_lcd_onoff(MODEL_CUSTOM_FUNC_4TH_COLUMN_ONOFF, y, CFN_ACTIVE(sd), attr); - if (active) CHECK_INCDEC_MODELVAR_ZERO(event, CFN_ACTIVE(sd), 1); - } - else if (sd->swtch && HAS_REPEAT_PARAM(sd)) { - if (CFN_PLAY_REPEAT(sd) == 0) { -#if LCD_W >= 212 - lcd_putsAtt(MODEL_CUSTOM_FUNC_4TH_COLUMN+2, y, "1x", attr); -#else - lcd_putcAtt(MODEL_CUSTOM_FUNC_4TH_COLUMN_ONOFF+1, y, '-', attr); -#endif - } -#if defined(CPUARM) - else if (CFN_PLAY_REPEAT(sd) == CFN_PLAY_REPEAT_NOSTART) { -#if LCD_W >= 212 - lcd_putcAtt(MODEL_CUSTOM_FUNC_4TH_COLUMN-2, y, '!', attr); - lcd_putsAtt(MODEL_CUSTOM_FUNC_4TH_COLUMN+2, y, "1x", attr); -#else - lcd_putcAtt(MODEL_CUSTOM_FUNC_4TH_COLUMN_ONOFF+1, y, '!', attr); -#endif - } -#endif - else { - lcd_outdezAtt(MODEL_CUSTOM_FUNC_4TH_COLUMN+2+FW, y, CFN_PLAY_REPEAT(sd)*CFN_PLAY_REPEAT_MUL, attr); -#if LCD_W >= 212 - lcd_putcAtt(MODEL_CUSTOM_FUNC_4TH_COLUMN+2+FW, y, 's', attr); -#endif - } -#if defined(CPUARM) - if (active) CFN_PLAY_REPEAT(sd) = checkIncDecModel(event, CFN_PLAY_REPEAT(sd)==CFN_PLAY_REPEAT_NOSTART?-1:CFN_PLAY_REPEAT(sd), -1, 60/CFN_PLAY_REPEAT_MUL); -#else - if (active) CHECK_INCDEC_MODELVAR_ZERO(event, CFN_PLAY_REPEAT(sd), 60/CFN_PLAY_REPEAT_MUL); -#endif - } - else if (attr) { - REPEAT_LAST_CURSOR_MOVE(); - } - break; - } - } - } -} - -#if defined(LUA_MODEL_SCRIPTS) -void onModelCustomScriptMenu(const char *result) -{ - ScriptData &sd = g_model.scriptsData[s_currIdx]; - - if (result == STR_UPDATE_LIST) { - if (!listSdFiles(SCRIPTS_PATH, MIXES_EXT, sizeof(sd.file), NULL)) { - POPUP_WARNING(STR_NO_BITMAPS_ON_SD); - s_menu_flags = 0; - } - } - else { - // The user choosed a lua file in the list - copySelection(sd.file, result, sizeof(sd.file)); - memset(sd.inputs, 0, sizeof(sd.inputs)); - eeDirty(EE_MODEL); - LUA_LOAD_MODEL_SCRIPT(s_currIdx); - } -} - -enum menuModelCustomScriptItems { - ITEM_MODEL_CUSTOMSCRIPT_FILE, - ITEM_MODEL_CUSTOMSCRIPT_NAME, - ITEM_MODEL_CUSTOMSCRIPT_PARAMS_LABEL, -}; - -#define SCRIPT_ONE_2ND_COLUMN_POS (12*FW) -#define SCRIPT_ONE_3RD_COLUMN_POS (23*FW) - -void menuModelCustomScriptOne(uint8_t event) -{ - TITLE(STR_MENUCUSTOMSCRIPT); - - ScriptData &sd = g_model.scriptsData[s_currIdx]; - - putsStrIdx(lcdLastPos+FW, 0, "LUA", s_currIdx+1, 0); - - SUBMENU_NOTITLE(3+scriptInternalData[s_currIdx].inputsCount, { 0, 0, LABEL(inputs), 0/*repeated*/ }); - - int8_t sub = m_posVert; - - for (uint8_t k=0; k0 ? BLINK|INVERS : INVERS) : 0); - - if (i == ITEM_MODEL_CUSTOMSCRIPT_FILE) { - lcd_putsLeft(y, "Script"); - if (ZEXIST(sd.file) > 0) - lcd_putsnAtt(SCRIPT_ONE_2ND_COLUMN_POS, y, sd.file, sizeof(sd.file), attr); - else - lcd_putsiAtt(SCRIPT_ONE_2ND_COLUMN_POS, y, STR_VCSWFUNC, 0, attr); - if (attr && event==EVT_KEY_BREAK(KEY_ENTER) && !READ_ONLY()) { - s_editMode = 0; - if (listSdFiles(SCRIPTS_PATH, MIXES_EXT, sizeof(sd.file), sd.file, LIST_NONE_SD_FILE)) { - menuHandler = onModelCustomScriptMenu; - } - else { - POPUP_WARNING(STR_NO_SCRIPTS_ON_SD); - s_menu_flags = 0; - } - } - } - else if (i == ITEM_MODEL_CUSTOMSCRIPT_NAME) { - lcd_putsLeft(y, "Name"); - editName(SCRIPT_ONE_2ND_COLUMN_POS, y, sd.name, sizeof(sd.name), event, attr); - } - else if (i == ITEM_MODEL_CUSTOMSCRIPT_PARAMS_LABEL) { - lcd_putsLeft(y, "Inputs"); - } - else if (i <= ITEM_MODEL_CUSTOMSCRIPT_PARAMS_LABEL+scriptInternalData[s_currIdx].inputsCount) { - int inputIdx = i-ITEM_MODEL_CUSTOMSCRIPT_PARAMS_LABEL-1; - lcd_putsnAtt(INDENT_WIDTH, y, scriptInternalData[s_currIdx].inputs[inputIdx].name, 10, 0); - if (scriptInternalData[s_currIdx].inputs[inputIdx].type == 0) { - lcd_outdezAtt(SCRIPT_ONE_2ND_COLUMN_POS, y, g_model.scriptsData[s_currIdx].inputs[inputIdx]+scriptInternalData[s_currIdx].inputs[inputIdx].def, attr|LEFT); - if (attr) { - CHECK_INCDEC_MODELVAR(event, g_model.scriptsData[s_currIdx].inputs[inputIdx], scriptInternalData[s_currIdx].inputs[inputIdx].min-scriptInternalData[s_currIdx].inputs[inputIdx].def, scriptInternalData[s_currIdx].inputs[inputIdx].max-scriptInternalData[s_currIdx].inputs[inputIdx].def); - } - } - else { - putsMixerSource(SCRIPT_ONE_2ND_COLUMN_POS, y, g_model.scriptsData[s_currIdx].inputs[inputIdx]+scriptInternalData[s_currIdx].inputs[inputIdx].def, attr); - if (attr) { - uint8_t *source = (uint8_t *)&g_model.scriptsData[s_currIdx].inputs[inputIdx]; - CHECK_INCDEC_MODELSOURCE(event, *source, scriptInternalData[s_currIdx].inputs[inputIdx].min-scriptInternalData[s_currIdx].inputs[inputIdx].def, scriptInternalData[s_currIdx].inputs[inputIdx].max-scriptInternalData[s_currIdx].inputs[inputIdx].def); - } - } - } - } - - if (scriptInternalData[s_currIdx].outputsCount > 0) { - lcd_vline(SCRIPT_ONE_3RD_COLUMN_POS-4, FH+1, LCD_H-FH-1); - lcd_puts(SCRIPT_ONE_3RD_COLUMN_POS, FH+1, "Outputs"); - - for (int i=0; i= 0) { - s_currIdx = sub; - pushMenu(menuModelCustomScriptOne); - } - break; - } - - for (int i=0; i= 212 - #define TELEM_COL1 (1*FW) - #define TELEM_COL2 (16*FW) - #define TELEM_COL3 (28*FW) - #define TELEM_BARS_COLMIN (3*FW+56) - #define TELEM_BARS_COLMAX (20*FW-3) - #define TELEM_SCRTYPE_COL (10*FW) -#else - #define TELEM_COL1 INDENT_WIDTH - #if defined(TRANSLATIONS_FR) || defined(TRANSLATIONS_CZ) - #define TELEM_COL2 (9*FW) - #else - #define TELEM_COL2 (8*FW) - #endif - #define TELEM_BARS_COLMIN (56-3*FW) - #define TELEM_BARS_COLMAX (14*FW-3) - #define TELEM_SCRTYPE_COL (10*FW) -#endif - -#if defined(PCBTARANIS) - #define CHANNEL_ROWS (uint8_t)-1, 1, 0, 0, 0, - #define RSSI_ROWS (uint8_t)-1, 0, 0, -#else - #define CHANNEL_ROWS (uint8_t)-1, 1, 0, 2, 2, - #define RSSI_ROWS (uint8_t)-1, 1, 1, -#endif - -#if defined(GAUGES) - #define SCREEN_TYPE_ROWS 0 -#else - #define SCREEN_TYPE_ROWS (uint8_t)-1 -#endif - -#if defined(PCBSTD) - #define VARIO_RANGE_ROWS 1 -#else - #define VARIO_RANGE_ROWS 3 -#endif - -void menuModelTelemetry(uint8_t event) -{ - MENU(STR_MENUTELEMETRY, menuTabModel, e_Telemetry, ITEM_TELEMETRY_MAX+1, {0, CHANNEL_ROWS CHANNEL_ROWS RSSI_ROWS USRDATA_LINES 0, 0, IF_CPUARM(0) IF_VARIO(LABEL(Vario)) IF_VARIO(0) IF_VARIO(VARIO_RANGE_ROWS) CASE_PCBTARANIS(LABEL(TopBar)) CASE_PCBTARANIS(0) SCREEN_TYPE_ROWS, 2, 2, 2, 2, SCREEN_TYPE_ROWS, 2, 2, 2, 2, IF_CPUARM(SCREEN_TYPE_ROWS) IF_CPUARM(2) IF_CPUARM(2) IF_CPUARM(2) IF_CPUARM(2) }); - - uint8_t sub = m_posVert - 1; - -#if !defined(PCBTARANIS) - switch (event) { - case EVT_KEY_BREAK(KEY_DOWN): - case EVT_KEY_BREAK(KEY_UP): - case EVT_KEY_BREAK(KEY_LEFT): - case EVT_KEY_BREAK(KEY_RIGHT): - if (s_editMode>0 && sub<=ITEM_TELEMETRY_RSSI_ALARM2) - frskySendAlarms(); // update FrSky module when edit mode exited - break; - } -#endif - - for (uint8_t i=0; i0) ? BLINK|INVERS : INVERS); - uint8_t attr = (sub == k ? blink : 0); - uint8_t ch = (k >= ITEM_TELEMETRY_A2_LABEL) ? 1 : 0; - FrSkyChannelData & channel = g_model.frsky.channels[ch]; - uint8_t dest=TELEM_A1-1+ch; - switch(k) { - case ITEM_TELEMETRY_A1_LABEL: - case ITEM_TELEMETRY_A2_LABEL: - lcd_putsLeft(y, STR_ACHANNEL); - lcd_outdezAtt(2*FW, y, ch+1, 0); - putsTelemetryChannel(TELEM_COL2+6*FW, y, dest, frskyData.analog[ch].value, LEFT); - break; - - case ITEM_TELEMETRY_A1_RANGE: - case ITEM_TELEMETRY_A2_RANGE: - lcd_putsLeft(y, STR_RANGE); - putsTelemetryChannel(TELEM_COL2, y, dest, 255-channel.offset, (m_posHorz<=0 ? attr : 0)|NO_UNIT|LEFT); - lcd_putsiAtt(lcdLastPos, y, STR_VTELEMUNIT, channel.type, m_posHorz!=0 ? attr : 0); - if (attr && (s_editMode>0 || p1valdiff)) { - if (m_posHorz == 0) { - uint16_t ratio = checkIncDec(event, channel.ratio, 0, 256, EE_MODEL); - if (checkIncDec_Ret) { - if (ratio == 127 && channel.multiplier > 0) { - channel.multiplier--; channel.ratio = 255; - } - else if (ratio == 256) { - if (channel.multiplier < FRSKY_MULTIPLIER_MAX) { channel.multiplier++; channel.ratio = 128; } - } - else { - channel.ratio = ratio; - } - } - } - else { - CHECK_INCDEC_MODELVAR_ZERO(event, channel.type, UNIT_A1A2_MAX); - } - } - break; - - case ITEM_TELEMETRY_A1_OFFSET: - case ITEM_TELEMETRY_A2_OFFSET: - lcd_putsLeft(y, STR_OFFSET); - putsTelemetryChannel(TELEM_COL2, y, dest, 0, LEFT|attr); - if (attr) channel.offset = checkIncDec(event, channel.offset, -256, 256, EE_MODEL); - break; - - case ITEM_TELEMETRY_A1_ALARM1: - case ITEM_TELEMETRY_A1_ALARM2: - case ITEM_TELEMETRY_A2_ALARM1: - case ITEM_TELEMETRY_A2_ALARM2: - { - uint8_t j = ((k==ITEM_TELEMETRY_A1_ALARM1 || k==ITEM_TELEMETRY_A2_ALARM1) ? 0 : 1); -#if defined(PCBTARANIS) - lcd_putsLeft(y, (j==0 ? STR_LOWALARM : STR_CRITICALALARM)); - putsTelemetryChannel(TELEM_COL2, y, dest, channel.alarms_value[j], LEFT|attr); - if (attr && (s_editMode>0 || p1valdiff)) { - channel.alarms_value[j] = checkIncDec(event, channel.alarms_value[j], 0, 255, EE_MODEL); - } -#else - lcd_putsLeft(y, STR_ALARM); - lcd_putsiAtt(TELEM_COL2, y, STR_VALARM, ALARM_LEVEL(ch, j), m_posHorz<=0 ? attr : 0); - lcd_putsiAtt(TELEM_COL2+4*FW, y, STR_VALARMFN, ALARM_GREATER(ch, j), (m_posHorz<0 || m_posHorz==1) ? attr : 0); - putsTelemetryChannel(TELEM_COL2+6*FW, y, dest, channel.alarms_value[j], ((m_posHorz<0 || m_posHorz==2) ? attr : 0) | LEFT); - - if (attr && (s_editMode>0 || p1valdiff)) { - uint8_t t; - switch (m_posHorz) { - case 0: - t = ALARM_LEVEL(ch, j); - channel.alarms_level = (channel.alarms_level & ~(3<<(2*j))) + (checkIncDecModel(event, t, 0, 3) << (2*j)); - break; - case 1: - t = ALARM_GREATER(ch, j); - if (t != checkIncDecModel(event, t, 0, 1)) { - channel.alarms_greater ^= (1 << j); - frskySendAlarms(); - } - break; - case 2: - channel.alarms_value[j] = checkIncDec(event, channel.alarms_value[j], 0, 255, EE_MODEL); - break; - } - } -#endif - break; - } - - case ITEM_TELEMETRY_RSSI_LABEL: - lcd_putsLeft(y, PSTR("RSSI")); - break; - - case ITEM_TELEMETRY_RSSI_ALARM1: - case ITEM_TELEMETRY_RSSI_ALARM2: { - uint8_t j = k-ITEM_TELEMETRY_RSSI_ALARM1; -#if defined(PCBTARANIS) - lcd_putsLeft(y, (j==0 ? STR_LOWALARM : STR_CRITICALALARM)); - lcd_outdezNAtt(TELEM_COL2, y, getRssiAlarmValue(j), LEFT|attr, 3); - if (attr && (s_editMode>0 || p1valdiff)) { - CHECK_INCDEC_MODELVAR(event, g_model.frsky.rssiAlarms[j].value, -30, 30); - } -#else - lcd_putsLeft(y, STR_ALARM); - lcd_putsiAtt(TELEM_COL2, y, STR_VALARM, ((2+j+g_model.frsky.rssiAlarms[j].level)%4), m_posHorz<=0 ? attr : 0); - lcd_putc(TELEM_COL2+4*FW, y, '<'); - lcd_outdezNAtt(TELEM_COL2+6*FW, y, getRssiAlarmValue(j), LEFT|(m_posHorz!=0 ? attr : 0), 3); - - if (attr && (s_editMode>0 || p1valdiff)) { - switch (m_posHorz) { - case 0: - CHECK_INCDEC_MODELVAR(event, g_model.frsky.rssiAlarms[j].level, -3, 2); // circular (saves flash) - break; - case 1: - CHECK_INCDEC_MODELVAR(event, g_model.frsky.rssiAlarms[j].value, -30, 30); - break; - } - } -#endif - break; - } - -#if defined(FRSKY_HUB) || defined(WS_HOW_HIGH) - case ITEM_TELEMETRY_USR_LABEL: - lcd_putsLeft(y, STR_USRDATA); - break; - -#if !defined(PCBTARANIS) - case ITEM_TELEMETRY_USR_PROTO: - lcd_putsLeft(y, STR_PROTO); - lcd_putsiAtt(TELEM_COL2, y, STR_VTELPROTO, g_model.frsky.usrProto, attr); - if (attr) CHECK_INCDEC_MODELVAR_ZERO(event, g_model.frsky.usrProto, USR_PROTO_LAST); - break; -#endif - - case ITEM_TELEMETRY_USR_BLADES: - lcd_putsLeft(y, STR_BLADES); - lcd_outdezAtt(TELEM_COL2+FWNUM, y, 2+g_model.frsky.blades, attr); - if (attr) CHECK_INCDEC_MODELVAR_ZERO(event, g_model.frsky.blades, 3); - break; -#endif - - case ITEM_TELEMETRY_USR_VOLTAGE_SOURCE: - lcd_putsLeft(y, STR_VOLTAGE); - lcd_putsiAtt(TELEM_COL2, y, STR_VOLTSRC, g_model.frsky.voltsSource+1, attr); - if (attr) CHECK_INCDEC_MODELVAR_ZERO(event, g_model.frsky.voltsSource, 3); - break; - - case ITEM_TELEMETRY_USR_CURRENT_SOURCE: - lcd_putsLeft(y, STR_CURRENT); - lcd_putsiAtt(TELEM_COL2, y, STR_VOLTSRC, g_model.frsky.currentSource, attr); - if (attr) CHECK_INCDEC_MODELVAR_ZERO(event, g_model.frsky.currentSource, 3); - break; - -#if defined(CPUARM) - case ITEM_TELEMTETRY_PERSISTENT_MAH: - g_model.frsky.mAhPersistent = onoffMenuItem(g_model.frsky.mAhPersistent, TELEM_COL2, y, STR_PERSISTENT_MAH, attr, event); - break; -#endif - -#if defined(VARIO) - case ITEM_TELEMETRY_VARIO_LABEL: - lcd_putsLeft(y, STR_VARIO); - break; - - case ITEM_TELEMETRY_VARIO_SOURCE: - lcd_putsLeft(y, STR_SOURCE); - lcd_putsiAtt(TELEM_COL2, y, STR_VARIOSRC, g_model.frsky.varioSource, attr); - if (attr) CHECK_INCDEC_MODELVAR(event, g_model.frsky.varioSource, 0, VARIO_SOURCE_LAST); - break; - - case ITEM_TELEMETRY_VARIO_RANGE: - lcd_putsLeft(y, STR_LIMIT); -#if defined(PCBSTD) - lcd_outdezAtt(TELEM_COL2, y, 5+g_model.frsky.varioCenterMax, (m_posHorz==0 ? attr : 0)|PREC1|LEFT); - lcd_outdezAtt(TELEM_COL2+8*FW, y, 10+g_model.frsky.varioMax, (m_posHorz==1 ? attr : 0)); - if (attr && (s_editMode>0 || p1valdiff)) { - switch (m_posHorz) { - case 0: - CHECK_INCDEC_MODELVAR(event, g_model.frsky.varioCenterMax, -15, +15); - break; - case 1: - CHECK_INCDEC_MODELVAR(event, g_model.frsky.varioMax, -7, 7); - break; - } - } -#else - lcd_outdezAtt(TELEM_COL2, y, -10+g_model.frsky.varioMin, (m_posHorz<=0 ? attr : 0)|LEFT); - if (g_model.frsky.varioCenterMin == -16) - lcd_putsAtt(TELEM_COL2+4*FW-2, y, STR_OFF, m_posHorz==1 ? attr : 0); - else - lcd_outdezAtt(TELEM_COL2+7*FW-2, y, -5+g_model.frsky.varioCenterMin, ((m_posHorz<0 || m_posHorz==1) ? attr : 0)|PREC1); - lcd_outdezAtt(TELEM_COL2+10*FW, y, 5+g_model.frsky.varioCenterMax, ((m_posHorz<0 || m_posHorz==2) ? attr : 0)|PREC1); - lcd_outdezAtt(TELEM_COL2+13*FW+2, y, 10+g_model.frsky.varioMax, ((m_posHorz<0 || m_posHorz==3) ? attr : 0)); - if (attr && (s_editMode>0 || p1valdiff)) { - switch (m_posHorz) { - case 0: - CHECK_INCDEC_MODELVAR(event, g_model.frsky.varioMin, -7, 7); - break; - case 1: - CHECK_INCDEC_MODELVAR(event, g_model.frsky.varioCenterMin, -16, 5+min(10, g_model.frsky.varioCenterMax+5)); - break; - case 2: - CHECK_INCDEC_MODELVAR(event, g_model.frsky.varioCenterMax, -5+max(-10, g_model.frsky.varioCenterMin-5), +15); - break; - case 3: - CHECK_INCDEC_MODELVAR(event, g_model.frsky.varioMax, -7, 7); - break; - } - } -#endif - break; -#endif - -#if defined(PCBTARANIS) - case ITEM_TELEMETRY_TOP_BAR_LABEL: - lcd_putsLeft(y, STR_TOP_BAR); - break; - - case ITEM_TELEMETRY_TOP_BAR_ALTITUDE: - g_model.frsky.altitudeDisplayed = onoffMenuItem(g_model.frsky.altitudeDisplayed, TELEM_COL2, y, STR_ALTITUDE, attr, event); - break; -#endif - - case ITEM_TELEMETRY_SCREEN_LABEL1: - case ITEM_TELEMETRY_SCREEN_LABEL2: -#if defined(CPUARM) - case ITEM_TELEMETRY_SCREEN_LABEL3: - { - uint8_t screenIndex = (k < ITEM_TELEMETRY_SCREEN_LABEL2 ? 0 : (k < ITEM_TELEMETRY_SCREEN_LABEL3 ? 1 : 2)); - putsStrIdx(0*FW, y, STR_SCREEN, screenIndex+1); -#if defined(GAUGES) - bool screenType = IS_BARS_SCREEN(screenIndex); - if (screenType != selectMenuItem(TELEM_SCRTYPE_COL, y, PSTR(""), STR_VSCREEN, screenType, 0, 1, attr, event)) - g_model.frsky.screensType ^= (1 << screenIndex); -#endif - break; - } -#else - { - uint8_t screenIndex = (k < ITEM_TELEMETRY_SCREEN_LABEL2 ? 1 : 2); - putsStrIdx(0*FW, y, STR_SCREEN, screenIndex); -#if defined(GAUGES) - bool screenType = g_model.frsky.screensType & screenIndex; - if (screenType != selectMenuItem(TELEM_SCRTYPE_COL, y, PSTR(""), STR_VSCREEN, screenType, 0, 1, attr, event)) - g_model.frsky.screensType ^= screenIndex; -#endif - break; - } -#endif - - case ITEM_TELEMETRY_SCREEN_LINE1: - case ITEM_TELEMETRY_SCREEN_LINE2: - case ITEM_TELEMETRY_SCREEN_LINE3: - case ITEM_TELEMETRY_SCREEN_LINE4: - case ITEM_TELEMETRY_SCREEN_LINE5: - case ITEM_TELEMETRY_SCREEN_LINE6: - case ITEM_TELEMETRY_SCREEN_LINE7: - case ITEM_TELEMETRY_SCREEN_LINE8: - -#if defined(CPUARM) - case ITEM_TELEMETRY_SCREEN_LINE9: - case ITEM_TELEMETRY_SCREEN_LINE10: - case ITEM_TELEMETRY_SCREEN_LINE11: - case ITEM_TELEMETRY_SCREEN_LINE12: -#endif - - { - uint8_t screenIndex, lineIndex; - if (k < ITEM_TELEMETRY_SCREEN_LABEL2) { - screenIndex = 0; - lineIndex = k-ITEM_TELEMETRY_SCREEN_LINE1; - } -#if defined(CPUARM) - else if (k >= ITEM_TELEMETRY_SCREEN_LABEL3) { - screenIndex = 2; - lineIndex = k-ITEM_TELEMETRY_SCREEN_LINE9; - } -#endif - else { - screenIndex = 1; - lineIndex = k-ITEM_TELEMETRY_SCREEN_LINE5; - } - -#if 0 - putsStrIdx(0, y, PSTR(INDENT"Line"), lineIndex+1, m_posHorz<0 ? attr : 0); -#endif - -#if defined(GAUGES) - if (IS_BARS_SCREEN(screenIndex)) { - FrSkyBarData & bar = g_model.frsky.screens[screenIndex].bars[lineIndex]; - uint8_t barSource = bar.source; - lcd_putsiAtt(TELEM_COL1, y, STR_VTELEMCHNS, barSource, m_posHorz==0 ? attr : 0); - if (barSource) { - putsTelemetryChannel(TELEM_BARS_COLMIN, y, barSource-1, convertTelemValue(barSource, bar.barMin), (m_posHorz==1 ? attr : 0) | LEFT); - putsTelemetryChannel(TELEM_BARS_COLMAX, y, barSource-1, convertTelemValue(barSource, 255-bar.barMax), (m_posHorz==2 ? attr : 0) | LEFT); - } - else if (attr) { - MOVE_CURSOR_FROM_HERE(); - } - if (attr && (s_editMode>0 || p1valdiff)) { - switch (m_posHorz) { - case 0: - bar.source = checkIncDecModel(event, barSource, 0, TELEM_DISPLAY_MAX); - if (checkIncDec_Ret) { - bar.barMin = 0; - bar.barMax = 255-maxTelemValue(bar.source); - } - break; - case 1: - bar.barMin = checkIncDec(event, bar.barMin, 0, 254-bar.barMax, EE_MODEL|NO_INCDEC_MARKS); - break; - case 2: - bar.barMax = 255 - checkIncDec(event, 255-bar.barMax, bar.barMin+1, maxTelemValue(barSource), EE_MODEL|NO_INCDEC_MARKS); - break; - } - } - } - else -#endif - { - for (uint8_t c=0; c0 || p1valdiff)) { - CHECK_INCDEC_MODELVAR_ZERO(event, value, (lineIndex==3 && c==0) ? TELEM_STATUS_MAX : TELEM_DISPLAY_MAX); - } - } - if (attr && m_posHorz == NUM_LINE_ITEMS) { - REPEAT_LAST_CURSOR_MOVE(); - } - } - break; - } - } - } -} -#endif - -#if defined(TEMPLATES) -void menuModelTemplates(uint8_t event) -{ - SIMPLE_MENU(STR_MENUTEMPLATES, menuTabModel, e_Templates, 1+TMPL_COUNT); - - uint8_t sub = m_posVert - 1; - - if (sub < TMPL_COUNT) { - if (s_warning_result) { - s_warning_result = 0; - applyTemplate(sub); - AUDIO_WARNING2(); - } - if (event==EVT_KEY_BREAK(KEY_ENTER)) { - POPUP_CONFIRMATION(STR_VTEMPLATES+1 + (sub * LEN2_VTEMPLATES)); - s_editMode = 0; - } - } - - uint8_t y = 1 + 1*FH; - uint8_t k = 0; - for (uint8_t i=0; i frskyData.hub.maxRpm) diff --git a/radio/src/telemetry/frsky.cpp~ b/radio/src/telemetry/frsky.cpp~ deleted file mode 100644 index 35d3bf5cc..000000000 --- a/radio/src/telemetry/frsky.cpp~ +++ /dev/null @@ -1,926 +0,0 @@ -/* - * Authors (alphabetical order) - * - Andre Bernet - * - Andreas Weitl - * - Bertrand Songis - * - Bryan J. Rentoul (Gruvin) - * - Cameron Weeks - * - Erez Raviv - * - Gabriel Birkus - * - Jean-Pierre Parisy - * - Karl Szmutny - * - Michael Blandford - * - Michal Hlavinka - * - Pat Mackenzie - * - Philip Moss - * - Rob Thomson - * - Romolo Manfredini - * - Thomas Husterer - * - * opentx is based on code named - * gruvin9x by Bryan J. Rentoul: http://code.google.com/p/gruvin9x/, - * er9x by Erez Raviv: http://code.google.com/p/er9x/, - * and the original (and ongoing) project by - * Thomas Husterer, th9x: http://code.google.com/p/th9x/ - * - * This program 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. - * - * This program 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. See the - * GNU General Public License for more details. - * - */ - -#include "../opentx.h" - -// Enumerate FrSky packet codes -#define LINKPKT 0xfe -#define USRPKT 0xfd -#define A11PKT 0xfc -#define A12PKT 0xfb -#define A21PKT 0xfa -#define A22PKT 0xf9 -#define ALRM_REQUEST 0xf8 -#define RSSI1PKT 0xf7 -#define RSSI2PKT 0xf6 -#define RSSI_REQUEST 0xf1 - -#define START_STOP 0x7e -#define BYTESTUFF 0x7d -#define STUFF_MASK 0x20 - -#if defined(TELEMETREZ) -#define PRIVATE 0x1B -#endif - -uint8_t frskyRxBuffer[FRSKY_RX_PACKET_SIZE]; // Receive buffer. 9 bytes (full packet), worst case 18 bytes with byte-stuffing (+1) -uint8_t frskyTxBuffer[FRSKY_TX_PACKET_SIZE]; // Ditto for transmit buffer -#if !defined(CPUARM) -uint8_t frskyTxBufferCount = 0; -#endif -uint8_t frskyStreaming = 0; -#if defined(WS_HOW_HIGH) -uint8_t frskyUsrStreaming = 0; -#endif -uint8_t link_counter = 0; -FrskyData frskyData; - -#if defined(FRSKY_HUB) || defined(WS_HOW_HIGH) -void checkMinMaxAltitude() -{ - if (TELEMETRY_ALT_BP > frskyData.hub.maxAltitude) - frskyData.hub.maxAltitude = TELEMETRY_ALT_BP; - if (TELEMETRY_ALT_BP < frskyData.hub.minAltitude) - frskyData.hub.minAltitude = TELEMETRY_ALT_BP; -} -#endif - -#if defined(VARIO) && !defined(FRSKY_SPORT) && (defined(FRSKY_HUB) || defined(WS_HOW_HIGH)) -void evalVario(int16_t altitude_bp, uint16_t altitude_ap) -{ - int32_t varioAltitude_cm = (int32_t)altitude_bp * 100 + (altitude_bp > 0 ? altitude_ap : -altitude_ap); - uint8_t varioAltitudeQueuePointer = frskyData.hub.varioAltitudeQueuePointer + 1; - if (varioAltitudeQueuePointer >= VARIO_QUEUE_LENGTH) - varioAltitudeQueuePointer = 0; - frskyData.hub.varioAltitudeQueuePointer = varioAltitudeQueuePointer; - frskyData.hub.varioSpeed -= frskyData.hub.varioAltitudeQueue[varioAltitudeQueuePointer] ; - frskyData.hub.varioAltitudeQueue[varioAltitudeQueuePointer] = varioAltitude_cm - frskyData.hub.varioAltitude_cm; - frskyData.hub.varioAltitude_cm = varioAltitude_cm; - frskyData.hub.varioSpeed += frskyData.hub.varioAltitudeQueue[varioAltitudeQueuePointer] ; -} -#else -#define evalVario(...) -#endif - -#if defined(FRSKY_HUB) -typedef enum { - TS_IDLE = 0, // waiting for 0x5e frame marker - TS_DATA_ID, // waiting for dataID - TS_DATA_LOW, // waiting for data low byte - TS_DATA_HIGH, // waiting for data high byte - TS_XOR = 0x80 // decode stuffed byte -} TS_STATE; - -void parseTelemHubByte(uint8_t byte) -{ - static int8_t structPos; - static uint8_t lowByte; - static TS_STATE state = TS_IDLE; - - if (byte == 0x5e) { - state = TS_DATA_ID; - return; - } - if (state == TS_IDLE) { - return; - } - if (state & TS_XOR) { - byte = byte ^ 0x60; - state = (TS_STATE)(state - TS_XOR); - } - if (byte == 0x5d) { - state = (TS_STATE)(state | TS_XOR); - return; - } - if (state == TS_DATA_ID) { - if (byte > 0x3f) { - state = TS_IDLE; - } - else { - structPos = byte*2; - state = TS_DATA_LOW; - } - return; - } - if (state == TS_DATA_LOW) { - lowByte = byte; - state = TS_DATA_HIGH; - return; - } - - state = TS_IDLE; - -#if defined(GPS) - if ((uint8_t)structPos == offsetof(FrskySerialData, gpsLatitude_bp)) { - if (lowByte || byte) - frskyData.hub.gpsFix = 1; - else if (frskyData.hub.gpsFix > 0 && frskyData.hub.gpsLatitude_bp > 1) - frskyData.hub.gpsFix = 0; - } - else if ((uint8_t)structPos == offsetof(FrskySerialData, gpsLongitude_bp)) { - if (lowByte || byte) - frskyData.hub.gpsFix = 1; - else if (frskyData.hub.gpsFix > 0 && frskyData.hub.gpsLongitude_bp > 1) - frskyData.hub.gpsFix = 0; - } - - if ((uint8_t)structPos == offsetof(FrskySerialData, gpsAltitude_bp) || - ((uint8_t)structPos >= offsetof(FrskySerialData, gpsAltitude_ap) && (uint8_t)structPos <= offsetof(FrskySerialData, gpsLatitudeNS) && (uint8_t)structPos != offsetof(FrskySerialData, baroAltitude_bp) && (uint8_t)structPos != offsetof(FrskySerialData, baroAltitude_ap))) { - // If we don't have a fix, we may discard the value - if (frskyData.hub.gpsFix <= 0) - return; - } -#endif - -#if 0 - uint16_t previousValue = *((uint16_t *)(((uint8_t*)&frskyData.hub) + structPos)); -#endif - - ((uint8_t*)&frskyData.hub)[structPos] = lowByte; - ((uint8_t*)&frskyData.hub)[structPos+1] = byte; - - switch ((uint8_t)structPos) { - - case offsetof(FrskySerialData, rpm): - //frskyData.hub.rpm *= (uint8_t)60/(g_model.frsky.blades+2); - // Change minimum Blades to 1 to allow for single sensors/raw data - T.Foley - // Added Spur and Pinion Ratio Calculation to provide final head/drive RPM after gearing - // - frskyData.hub.rpm *= (uint8_t)60; - frskyData.hub.rpm /= (g_model.frsky.blades+1); - float gear_ratio = (((float)g_model.frsky.spur_gear+1) / ((float)g_model.frsky.pinion_gear+1)); - frskyData.hub.rpm = (float)(frskyData.hub.rpm / gear_ratio); - if (frskyData.hub.rpm > frskyData.hub.maxRpm) - frskyData.hub.maxRpm = frskyData.hub.rpm; - break; - - case offsetof(FrskySerialData, temperature1): - if (frskyData.hub.temperature1 > frskyData.hub.maxTemperature1) - frskyData.hub.maxTemperature1 = frskyData.hub.temperature1; - break; - - case offsetof(FrskySerialData, temperature2): - if (frskyData.hub.temperature2 > frskyData.hub.maxTemperature2) - frskyData.hub.maxTemperature2 = frskyData.hub.temperature2; - break; - - case offsetof(FrskySerialData, current): - if (frskyData.hub.current > frskyData.hub.maxCurrent) - frskyData.hub.maxCurrent = frskyData.hub.current; - break; - - case offsetof(FrskySerialData, currentConsumption): - // we receive data from openXsensor. stops the calculation of consumption and power - frskyData.hub.openXsensor = 1; - break; - - case offsetof(FrskySerialData, volts_ap): -#if defined(FAS_BSS) - frskyData.hub.vfas = (frskyData.hub.volts_bp * 10 + frskyData.hub.volts_ap); -#else - frskyData.hub.vfas = ((frskyData.hub.volts_bp * 100 + frskyData.hub.volts_ap * 10) * 21) / 110; -#endif - /* TODO later if (!frskyData.hub.minVfas || frskyData.hub.minVfas > frskyData.hub.vfas) - frskyData.hub.minVfas = frskyData.hub.vfas; */ - break; - - case offsetof(FrskySerialData, baroAltitude_bp): - // First received barometer altitude => Altitude offset - if (!frskyData.hub.baroAltitudeOffset) - frskyData.hub.baroAltitudeOffset = -frskyData.hub.baroAltitude_bp; - if (g_model.frsky.varioSource == VARIO_SOURCE_ALTI) { - evalVario(frskyData.hub.baroAltitude_bp, 0); - } - frskyData.hub.baroAltitude_bp += frskyData.hub.baroAltitudeOffset; - checkMinMaxAltitude(); - break; - - case offsetof(FrskySerialData, baroAltitude_ap): - if (g_model.frsky.varioSource == VARIO_SOURCE_ALTI_PLUS) { - evalVario(frskyData.hub.baroAltitude_bp-frskyData.hub.baroAltitudeOffset, frskyData.hub.baroAltitude_ap); - } - break; - -#if defined(GPS) - case offsetof(FrskySerialData, gpsAltitude_ap): - if (!frskyData.hub.gpsAltitudeOffset) - frskyData.hub.gpsAltitudeOffset = -frskyData.hub.gpsAltitude_bp; - frskyData.hub.gpsAltitude_bp += frskyData.hub.gpsAltitudeOffset; - if (!frskyData.hub.baroAltitudeOffset) { - if (frskyData.hub.gpsAltitude_bp > frskyData.hub.maxAltitude) - frskyData.hub.maxAltitude = frskyData.hub.gpsAltitude_bp; - if (frskyData.hub.gpsAltitude_bp < frskyData.hub.minAltitude) - frskyData.hub.minAltitude = frskyData.hub.gpsAltitude_bp; - } - if (!frskyData.hub.pilotLatitude && !frskyData.hub.pilotLongitude) { - // First received GPS position => Pilot GPS position - getGpsPilotPosition(); - } - else if (frskyData.hub.gpsDistNeeded || g_menuStack[g_menuStackPtr] == menuTelemetryFrsky) { - getGpsDistance(); - } - break; - - case offsetof(FrskySerialData, gpsSpeed_bp): - // Speed => Max speed - if (frskyData.hub.gpsSpeed_bp > frskyData.hub.maxGpsSpeed) - frskyData.hub.maxGpsSpeed = frskyData.hub.gpsSpeed_bp; - break; -#endif - - case offsetof(FrskySerialData, volts): - // Voltage => Cell number + Cell voltage - { - uint8_t battnumber = ((frskyData.hub.volts & 0x00F0) >> 4); - if (battnumber < 12) { - if (frskyData.hub.cellsCount < battnumber+1) { - frskyData.hub.cellsCount = battnumber+1; - } - uint8_t cellVolts = (uint8_t)(((((frskyData.hub.volts & 0xFF00) >> 8) + ((frskyData.hub.volts & 0x000F) << 8)))/10); - frskyData.hub.cellVolts[battnumber] = cellVolts; - if (!frskyData.hub.minCellVolts || cellVolts < frskyData.hub.minCellVolts || battnumber==frskyData.hub.minCellIdx) { - frskyData.hub.minCellIdx = battnumber; - frskyData.hub.minCellVolts = cellVolts; - } - } - break; - } - -#if defined(GPS) - case offsetof(FrskySerialData, hour): - frskyData.hub.hour = ((uint8_t)(frskyData.hub.hour + g_eeGeneral.timezone + 24)) % 24; - break; -#endif - - case offsetof(FrskySerialData, accelX): - case offsetof(FrskySerialData, accelY): - case offsetof(FrskySerialData, accelZ): - *(int16_t*)(&((uint8_t*)&frskyData.hub)[structPos]) /= 10; - break; - -#if 0 - case offsetof(FrskySerialData, gpsAltitude_bp): - case offsetof(FrskySerialData, fuelLevel): - case offsetof(FrskySerialData, gpsLongitude_bp): - case offsetof(FrskySerialData, gpsLatitude_bp): - case offsetof(FrskySerialData, gpsCourse_bp): - case offsetof(FrskySerialData, day): - case offsetof(FrskySerialData, year): - case offsetof(FrskySerialData, sec): - case offsetof(FrskySerialData, gpsSpeed_ap): - case offsetof(FrskySerialData, gpsLongitude_ap): - case offsetof(FrskySerialData, gpsLatitude_ap): - case offsetof(FrskySerialData, gpsCourse_ap): - case offsetof(FrskySerialData, gpsLongitudeEW): - case offsetof(FrskySerialData, gpsLatitudeNS): - case offsetof(FrskySerialData, varioSpeed): - case offsetof(FrskySerialData, power): /* because sent by openXsensor */ - case offsetof(FrskySerialData, vfas): - case offsetof(FrskySerialData, volts_bp): - break; - - default: - *((uint16_t *)(((uint8_t*)&frskyData.hub) + structPos)) = previousValue; - break; -#endif - } -} -#endif - -#if defined(WS_HOW_HIGH) -void parseTelemWSHowHighByte(uint8_t byte) -{ - if (frskyUsrStreaming < (FRSKY_TIMEOUT10ms*3 - 10)) { - ((uint8_t*)&frskyData.hub)[offsetof(FrskySerialData, baroAltitude_bp)] = byte; - checkMinMaxAltitude(); - if (g_model.frsky.varioSource == VARIO_SOURCE_ALTI) { - evalVario(frskyData.hub.baroAltitude_bp, 0); - } - } - else { - // At least 100mS passed since last data received - ((uint8_t*)&frskyData.hub)[offsetof(FrskySerialData, baroAltitude_bp)+1] = byte; - } - // baroAltitude_bp unit here is feet! - frskyUsrStreaming = FRSKY_TIMEOUT10ms*3; // reset counter -} -#endif - -void processFrskyPacket(uint8_t *packet) -{ - // What type of packet? - switch (packet[0]) - { - case LINKPKT: // A1/A2/RSSI values - { - link_counter += 32; - frskyData.analog[0].set(packet[1], g_model.frsky.channels[0].type); - frskyData.analog[1].set(packet[2], g_model.frsky.channels[1].type); - frskyData.rssi[0].set(packet[3]); - frskyData.rssi[1].set(packet[4] / 2); - frskyStreaming = FRSKY_TIMEOUT10ms; // reset counter only if valid frsky packets are being detected -#if defined(VARIO) - uint8_t varioSource = g_model.frsky.varioSource - VARIO_SOURCE_A1; - if (varioSource < 2) - frskyData.hub.varioSpeed = applyChannelRatio(varioSource, frskyData.analog[varioSource].value); -#endif - break; - } -#if defined(FRSKY_HUB) || defined (WS_HOW_HIGH) - case USRPKT: // User Data packet - uint8_t numBytes = 3 + (packet[1] & 0x07); // sanitize in case of data corruption leading to buffer overflow - for (uint8_t i=3; i>1) * (voltage>>1)) / 25; -#endif - - frskyData.hub.currentPrescale += current; - if (frskyData.hub.currentPrescale >= 3600) { - frskyData.hub.currentConsumption += 1; - frskyData.hub.currentPrescale -= 3600; - } - } - - if (frskyData.hub.power > frskyData.hub.maxPower) - frskyData.hub.maxPower = frskyData.hub.power; - } -} - -void telemetryWakeup() -{ -#if defined(PCBSKY9X) - rxPdcUsart(processSerialData); // Receive serial data here -#endif - - // Attempt to transmit any waiting Fr-Sky alarm set packets every 50ms (subject to packet buffer availability) - static uint8_t frskyTxDelay = 5; - if (frskyAlarmsSendState && (--frskyTxDelay == 0)) { - frskyTxDelay = 5; // 50ms - frskySendNextAlarm(); - } - -#ifndef SIMU -#if defined(WS_HOW_HIGH) - if (frskyUsrStreaming > 0) { - frskyUsrStreaming--; - } -#endif - - if (frskyStreaming > 0) { - frskyStreaming--; - } - else { - frskyData.rssi[0].set(0); - frskyData.rssi[1].set(0); - } -#endif - -#if defined(VARIO) - if (TELEMETRY_STREAMING() && !IS_FAI_ENABLED()) - varioWakeup(); -#endif -} - -#if 0 -// not used any more -bool FRSKY_alarmRaised(uint8_t idx) -{ - for (int i=0; i<2; i++) { - if (ALARM_LEVEL(idx, i) != alarm_off) { - if (ALARM_GREATER(idx, i)) { - if (frskyData.analog[idx].value > g_model.frsky.channels[idx].alarms_value[i]) - return true; - } - else { - if (frskyData.analog[idx].value < g_model.frsky.channels[idx].alarms_value[i]) - return true; - } - } - } - return false; -} -#endif - -#if !defined(CPUARM) -inline void FRSKY_EnableTXD(void) -{ - frskyTxBufferCount = 0; - UCSR0B |= (1 << TXEN0); // enable TX -} - -inline void FRSKY_EnableRXD(void) -{ - UCSR0B |= (1 << RXEN0); // enable RX - UCSR0B |= (1 << RXCIE0); // enable Interrupt -} -#endif - -void FRSKY_Init(void) -{ - // clear frsky variables - resetTelemetry(); - -#if defined(PCBTARANIS) - // TODO -#elif defined(PCBSKY9X) - startPdcUsartReceive() ; -#elif !defined(SIMU) - - DDRE &= ~(1 << DDE0); // set RXD0 pin as input - PORTE &= ~(1 << PORTE0); // disable pullup on RXD0 pin - -#undef BAUD -#define BAUD 9600 -#include - - UBRR0H = UBRRH_VALUE; - UBRR0L = UBRRL_VALUE; - UCSR0A &= ~(1 << U2X0); // disable double speed operation. - - // set 8N1 - UCSR0B = 0 | (0 << RXCIE0) | (0 << TXCIE0) | (0 << UDRIE0) | (0 << RXEN0) | (0 << TXEN0) | (0 << UCSZ02); - UCSR0C = 0 | (1 << UCSZ01) | (1 << UCSZ00); - - - while (UCSR0A & (1 << RXC0)) UDR0; // flush receive buffer - - // These should be running right from power up on a FrSky enabled '9X. - FRSKY_EnableTXD(); // enable FrSky-Telemetry reception - FRSKY_EnableRXD(); // enable FrSky-Telemetry reception -#endif -} - -void FrskyValueWithMin::set(uint8_t value) -{ - if (this->value == 0) { - this->value = value; - } - else { - sum += value; - if (link_counter == 0) { - this->value = sum / 8; - sum = 0; - } - } - - if (value && (!min || value < min)) - min = value; -} - -void FrskyValueWithMinMax::set(uint8_t value, uint8_t unit) -{ - FrskyValueWithMin::set(value); - if (unit != UNIT_VOLTS) { - this->value = value; - } - if (!max || value > max) - max = value; -} - -void resetTelemetry() -{ - memclear(&frskyData, sizeof(frskyData)); - -#if defined(FRSKY_HUB) - frskyData.hub.gpsLatitude_bp = 2; - frskyData.hub.gpsLongitude_bp = 2; - frskyData.hub.gpsFix = -1; -#endif - -#ifdef SIMU - frskyData.analog[0].set(120, UNIT_VOLTS); - frskyData.analog[1].set(240, UNIT_VOLTS); - frskyData.rssi[0].value = 75; - frskyData.rssi[1].value = 75; - frskyData.hub.fuelLevel = 75; - frskyData.hub.rpm = 12000; - -#if defined(GPS) - frskyData.hub.gpsFix = 1; - frskyData.hub.gpsLatitude_bp = 4401; - frskyData.hub.gpsLatitude_ap = 7710; - frskyData.hub.gpsLongitude_bp = 1006; - frskyData.hub.gpsLongitude_ap = 8872; - frskyData.hub.gpsSpeed_bp = (100 * 250) / 463; - getGpsPilotPosition(); - - frskyData.hub.gpsLatitude_bp = 4401; - frskyData.hub.gpsLatitude_ap = 7455; - frskyData.hub.gpsLongitude_bp = 1006; - frskyData.hub.gpsLongitude_ap = 9533; - getGpsDistance(); -#endif - - frskyData.hub.cellsCount = 6; - - frskyData.hub.gpsAltitude_bp = 50; - frskyData.hub.baroAltitude_bp = 50; - frskyData.hub.minAltitude = 10; - frskyData.hub.maxAltitude = 500; - - frskyData.hub.accelY = 100; - frskyData.hub.temperature1 = -30; - frskyData.hub.maxTemperature1 = 100; - - frskyData.hub.current = 5; - frskyData.hub.maxCurrent = 56; -#endif -} diff --git a/radio/src/telemetry/frsky_sport.cpp b/radio/src/telemetry/frsky_sport.cpp index 8499cb5f8..cf34b6198 100644 --- a/radio/src/telemetry/frsky_sport.cpp +++ b/radio/src/telemetry/frsky_sport.cpp @@ -179,11 +179,21 @@ void processHubPacket(uint8_t id, uint16_t value) } ((uint16_t*)&frskyData.hub)[id] = value; + float gear_ratio = 1; switch (id) { case RPM_ID: - frskyData.hub.rpm *= (uint8_t)60/(g_model.frsky.blades+2); + //frskyData.hub.rpm *= (uint8_t)60/(g_model.frsky.blades+2); + + // Change minimum Blades to 1 to allow for single sensors/raw data - T.Foley + // Added Spur and Pinion Ratio Calculation to provide final head/drive RPM after gearing + // + frskyData.hub.rpm *= (uint8_t)60; + frskyData.hub.rpm /= (g_model.frsky.blades+1); + gear_ratio = (((float)g_model.frsky.spur_gear+1) / ((float)g_model.frsky.pinion_gear+1)); + frskyData.hub.rpm = (float)(frskyData.hub.rpm / gear_ratio); + if (frskyData.hub.rpm > frskyData.hub.maxRpm) frskyData.hub.maxRpm = frskyData.hub.rpm; break; From 8b739815e3ac45175a4b5eab2728583b9c6c05da Mon Sep 17 00:00:00 2001 From: "Tim G. Foley" Date: Thu, 16 Jan 2014 21:08:27 -0500 Subject: [PATCH 168/308] Update README.txt --- README.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/README.txt b/README.txt index 6dcc5a26f..e6280ca4d 100644 --- a/README.txt +++ b/README.txt @@ -2,7 +2,6 @@ Add Gear Ratio to RPM Telemetry Calculation and allow for Blades to equal 1 Jan 16 2014 - Switched to 'next' branch -- Need to solve issue with frsky_sport.cpp and calc compile error - Need to translate "Spur" and "Gear" to other languages, using English as placeholder for now. From 753c5e3119959e5d5db2ba7ffd81bc481e2b483d Mon Sep 17 00:00:00 2001 From: "Tim G. Foley" Date: Thu, 16 Jan 2014 21:54:21 -0500 Subject: [PATCH 169/308] Remove accidental file --- .gitignore | 7 ------- 1 file changed, 7 deletions(-) delete mode 100644 .gitignore diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 4b4d86a64..000000000 --- a/.gitignore +++ /dev/null @@ -1,7 +0,0 @@ -*.[oa] -*~ -opentx.bin -opentx.elf -opentx.lst -opentx.map - From f2bc9e2fe1547a51593f9f38985c1462c562aea6 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Fri, 17 Jan 2014 07:04:17 +0100 Subject: [PATCH 170/308] Update DONATIONS.txt --- DONATIONS.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DONATIONS.txt b/DONATIONS.txt index 0675f37c6..35388b626 100644 --- a/DONATIONS.txt +++ b/DONATIONS.txt @@ -290,4 +290,4 @@ Peter Mauro Mitchell Brenner Ulach Green Lluis Bullich Rañe - +Steffen Rohr From 88602a88c7139bdbb6574abea5d61488fa28ac98 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Fri, 17 Jan 2014 07:05:33 +0100 Subject: [PATCH 171/308] Update DONATIONS.txt --- DONATIONS.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/DONATIONS.txt b/DONATIONS.txt index 35388b626..4dca79d41 100644 --- a/DONATIONS.txt +++ b/DONATIONS.txt @@ -291,3 +291,4 @@ Mitchell Brenner Ulach Green Lluis Bullich Rañe Steffen Rohr +Eric Jacquin From 3326d6ac6b1736ba9a8af17c6623e44df301e1fa Mon Sep 17 00:00:00 2001 From: Kjell Kernen Date: Fri, 17 Jan 2014 14:40:18 +0100 Subject: [PATCH 172/308] New icons from Martin Hotar --- .../mhotar icons/read_eeprom_file_v2.png | Bin 0 -> 862 bytes .../read_eeprom_file_v2_64(mhotar).png | Bin 0 -> 1553 bytes .../originals/mhotar icons/read_eeprom_v2.png | Bin 0 -> 938 bytes .../mhotar icons/read_eeprom_v2_64(mhotar).png | Bin 0 -> 1627 bytes .../originals/mhotar icons/read_flash_v2.png | Bin 0 -> 951 bytes .../mhotar icons/read_flash_v2_64(mhotar).png | Bin 0 -> 1927 bytes .../mhotar icons/write_eeprom_file_v2.png | Bin 0 -> 886 bytes .../write_eeprom_file_v2_64(mhotar).png | Bin 0 -> 1611 bytes .../originals/mhotar icons/write_eeprom_v2.png | Bin 0 -> 928 bytes .../write_eeprom_v2_64(mhotar).png | Bin 0 -> 1665 bytes .../originals/mhotar icons/write_flash_v2.png | Bin 0 -> 973 bytes .../mhotar icons/write_flash_v2_64(mhotar).png | Bin 0 -> 1963 bytes companion/src/images/read_eeprom.png | Bin 1358 -> 938 bytes companion/src/images/read_eeprom_file.png | Bin 1374 -> 862 bytes companion/src/images/read_flash.png | Bin 1247 -> 951 bytes companion/src/images/write_eeprom.png | Bin 1412 -> 928 bytes companion/src/images/write_eeprom_file.png | Bin 1398 -> 886 bytes companion/src/images/write_flash.png | Bin 1279 -> 973 bytes 18 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 companion/src/images/originals/mhotar icons/read_eeprom_file_v2.png create mode 100644 companion/src/images/originals/mhotar icons/read_eeprom_file_v2_64(mhotar).png create mode 100644 companion/src/images/originals/mhotar icons/read_eeprom_v2.png create mode 100644 companion/src/images/originals/mhotar icons/read_eeprom_v2_64(mhotar).png create mode 100644 companion/src/images/originals/mhotar icons/read_flash_v2.png create mode 100644 companion/src/images/originals/mhotar icons/read_flash_v2_64(mhotar).png create mode 100644 companion/src/images/originals/mhotar icons/write_eeprom_file_v2.png create mode 100644 companion/src/images/originals/mhotar icons/write_eeprom_file_v2_64(mhotar).png create mode 100644 companion/src/images/originals/mhotar icons/write_eeprom_v2.png create mode 100644 companion/src/images/originals/mhotar icons/write_eeprom_v2_64(mhotar).png create mode 100644 companion/src/images/originals/mhotar icons/write_flash_v2.png create mode 100644 companion/src/images/originals/mhotar icons/write_flash_v2_64(mhotar).png diff --git a/companion/src/images/originals/mhotar icons/read_eeprom_file_v2.png b/companion/src/images/originals/mhotar icons/read_eeprom_file_v2.png new file mode 100644 index 0000000000000000000000000000000000000000..57a21dda1a12da36d21a1cfc1c2270949873b652 GIT binary patch literal 862 zcmV-k1EKthP)^tJ#>L^pu~`nq66s!d@F+UeVEdCn!3v~Luuw9ci15H4?&tmPsHJ}F=0FKLlBw+Eh-ua_vXAppt z#!Wr|$`!u^eAV}3iZy!7`$n;0pgsshSOArZUoijxZY#b@<9y(qd_%xY`DYstT|gpl zoDys;Fem_bff2K)wYNahIua2V8qjmZBQ~U+MY1RWGQfL1H^pFSpO@3`2%Z54bL{9> zgvHMTn}PMf+%Q!T$A0)|!qu!qPKRM&s+1f!3@XNC7*1=D7*f>3bt^K$VmR zs)873(D;nT)xf+Q415GmoAE=l>y`4A8(%Mw?-&3l#mE|953mq;sT$u3JOOr#fuwf5 zRCNvTQ@<}za=Z0DDt}Tt|7?;!kpveqe9bj!R?Q8yj*}K|Zikf^ihM zp`A91;u3*LnzDMXvkofh1;9FOiZE3$OXJG{lTM3p8@f5wkc)v~J-c-rjFS$y_S+AD zOJA>#_)Hcn-O_yfn=tb0Qh!!gxNC>=%xzW^FhQa6V+t@qARMt!7y>|%(T)P;&_rNT z6#B|MnveRJozoooS`#tO(aQC8G2s9km9(YCXFrF;^m02#+!9)&;~5i-EeEH0BV6#X8b@RGpK&CSQ_HmeV{`?&KYTr4IpElJ-`a!DewXKWEvOO z>U2DJfcd~`U`w2iDBB#M1(*Rm62<+d?aBa;CGGdr3lv#B7>}N?1*q^~#|2oD#n`v8 z^n_kk5h3n`ZOL+}T9-=7>vDM|N$)VKX|3M^i36ZUXZ*z{UJWeK{{p}Jq%95r_qZy} oAC$3L%8BrD5||#R_YbhXe{NLsQU__Cq5uE@07*qoM6N<$g4{oT8UO$Q literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/mhotar icons/read_eeprom_file_v2_64(mhotar).png b/companion/src/images/originals/mhotar icons/read_eeprom_file_v2_64(mhotar).png new file mode 100644 index 0000000000000000000000000000000000000000..4a9ddb6e0db142ced2c7bc18c471c18559a58248 GIT binary patch literal 1553 zcmV+s2JZQZP)V1)fPn zK~#9!?V5XtR8<_uKijT3qr0iSU@dEVuj$IRZHp~PnrLbCf=WwD=pPp%gpkybiXi+W zdK)eTT1r@wDQJ*ou3?$l!$-EP5urucV>R2Sy08AY-(k-l?!7a2=FZG*cYko0JNG;| zzwiCM&w*hYrol$#z)h(RE^v8wJ}@dro9zPHLtJkXup1}@W&qy@U0@+_8tBVW>j6Fh z;vq0!p}qI2{R>nDUF1LxnK#=upeO_8E5&fHwQgV#nvBUULey-%Au-(LB5CVAR5BUe zti5{eEf5GM0OcD9h9v}{s0N)CbKp^A;0Duv|cFQ|F z=&{G?E+XCzGyo%waib*-HVAEgAmj@GfMQ_3wb5c1Ykw4Iw%S(3FE+)2&-CTZ)&yKj zhOQ@UY6Ip1hk;Uk!AZbAW6VL|h5&1J0<-)EoENb$wi);}Nu(MoMGb(Q(=Y&8T>BL( zirkh%p017p0C8Z9(MIQp`3*9pRYOe$3V}_)T>`s7d4ewmb%R%iWSP4|X1)m6qF5s# zX%_%Hf!l%a!b*m6L3@ooOif|@2;dV%gI?KS^1jGzZAH~>iZBlsppNr^?IK3e+eW~ z0pNFuYl(cdIp;+gD}Z+l01{Lo9W-gRM>VJ?1b&K@6NCytf?DN%YCZaw0MG0BPa^;+ zOCkE4CHI#p?E-Gg761UB`v8zAP@1$yZO{}%b_}+PP*4fj!@#rmqeBgVZo}vedI?x1 z>l~CGQbMxaXUxSp;BAUhWk0&x2EcShGc&L&rNA9|_@HLBYFr9?D71~>raVdFWg)FI zIa3vQPDO@GGT20y%ezBLOl+E{ip|-O0B8p;1diZ-_h>vY!AoSqr1?1IX_L_=pTMO# zq)2ca&LL@)k*Jxp3|MLWk4NQjG;E{Tmn}CKHqG`3#>OZ--l_Z}D4oSA;a`qZI?FlD zw<<@eme?;}(Fv>xXe4WKj^TQ=#*aqrVVSkBSk%hmOK@(6EEUsF;hgj=58wvZ z$qhfOc;v7^t&V~Uylq=yE6SV-ybio&q|R|=na=73_({ME8q+8#SR|?0qW%gu35W^+i2`XH zcv6j&_W`D zNQ#!3N)LN4qG;8V%CgcP5JC?GADLSDO$+}6*ZF4V8%Lo7!@Zoj_n!Zp^FQa@f&VO) zF}ngx4!N%ln^K^62(~T)8~gyIW6_IE3-Hx=ZzlkSzd#A_378tv_&Z=a&;-o%S`fp+ z#$vlmUkPmUSlKn>@$qIpSZ?Z1^|FM zfjAr`3r0oA7#qk@7@B~5X^&trKWaKU9;gJefh>XR69-bH%hud2W3|65z{c_99vC>J z9q5qDov-efu3dAtWF;i)V7UzJmB&Jdpbn@8>Va#+D0Vl1QiZP24I&7@Iv^d$09Hjb zeivAw`EGe{5Qx-(&E*P%0%=;)ZKQCfy#3Tw>aEma#5NbWI>bHYz$LTScmenU+zWA7zQ%{@bU}Pt z2y8S$N)QK%fE^y`7E_&Y%PZhi60ki2Ko|gxz^)J;=#CJ!o-hE$024jBVod4N<58NE ziL<6g4a$+DUI4}ei(ChHs(Z!MQac5}R;@@T83OL?O9RFMqusq=TfiX&GI+w!Z3*a} z?&q|zZ=Q4qQU|%yVn49e!+07{C7+}j`g3{!b^?oaQTgU^#sc6baK@|!4uC#v>amy< zl1wvzVk1n&z%yWzNIVPJY{a`m&8S2?Xz(IoSrR%G81tpNAvtmzI3z&dfeFBQS3|m^ z)UFYbq`koFj^}2z4ZKm~x-XJ7iKwQmRk3Q2ch)OpL%I?9^@M{8$qQxAPXnwCT-W#r zn5|5TNAZB4Q~`N1V!6t#C2*!kzC^tf`bnP0&xy zXMl|YV7YF^ai8~VM7k~?uZ#tbMFHR(R;XtrBxViqA0lUj|IWMr0c*715<6jEJOBUy M07*qoM6N<$f-IPqG5`Po literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/mhotar icons/read_eeprom_v2_64(mhotar).png b/companion/src/images/originals/mhotar icons/read_eeprom_v2_64(mhotar).png new file mode 100644 index 0000000000000000000000000000000000000000..cf7285047196744df83b85be74453ec8d32793d2 GIT binary patch literal 1627 zcmV-h2Bi6kP)Nav0l)7+kxYDD^;r&utBoqy^X)uuSuSL13?!mkWu|MFb_Fk_74k z6uuhhmNMH*1r>n_&(QY);I06Kzf}ZRq;vzb+)jZCA{>zK|Df=ej~#p-D3TU?P*?!$ z@u}{Gz$ZYF?s^Qk4fxKB1{`$o{8XUCVclO2jgDIX3E(OpgufFwtr>ZJ`45;G1Oe-S zB#;2!aZvYm;Do%BYNHdlI1Sm0k%b5M#4Sj7maN z@gVR8@QN6nLW8=u=zM@C9SN;Ko&(_@00s<%U#m0f`O+t&DN^Z_fJwkgUxp?g(yuX&RGhxfFFQAbmd)>_r^=Rf9c8|V1^R{=C}~rtgMu} zTYz5-+HBL2@Mb1m;b;ciN}9Ac8|XlhUkWRL6`AT(UIqzB02cr+8{FFnG@>w$2oT{7 z6!y!?F=_}?81^Bd=j$9bi= zzNvL&K)gUL2@8#E!br9OlO^iY3*QAC0OC$GVWbi;MMkqsC;Ukfa-PH;wj_9&0>EIi%UL~A+kz}9zq!kWy6ATz&QrjQ$(1(bFRVlexS$c6nIpOjUV_CI0if( zFj@P6H8SF-!VnB;Q3fo@z!JH}uV`?c&z-9c%bdy!Nk9G;=OtZSXksHmPrw4P?ta*p z>w_Sm+GLrr%Koe!2_BVG0F^-^&;3D7!i~A)RknLuy({z16 zwNnD-N)Td)PVvB|xU?C5y2>d`vgt#g8x6P}n@vT*PQ0A~n(oswSQgY2cs0$A?c&TV zatb#}pwjD;26RiPz8iHDRF85ylKcvXmvZL*;AIw$OKLMU?n6mReP&VYDovl_Veka| zQghKK^y@y;ngXRn4fpY^5uuHQwZB^=#P0d*JH2%BWdGeR8otU#lTI;eXPm&&zg#fq=C zX#FVaMoB$to)BO;Fdul#WMv2hW>er#%ukZE%ICGZx^9x|Gi6k*PNQsP_#l=RZ;PK{ zI|Z_d7l9+F`A01pfI}vNY0)m)QKeJ&@xX%`tqP?E?A6$Sl;L{>_4sQ7cuMYDX}}Yx zS?&(tci?H@VTlI@QTGwf(txlKuvG3BpdPenlk2~t9?2`QAt1)^eq}l8$<=NV{ChEs zp>%{m-Ok#eF@#&hh?X*Zme|g-Xhz)=1o#d30ChL$A&Fs*WI7yngC-GtfmrMsTqZUp zSu+7O+q@hX{}l)W0mU+EUN>HjiJ`3H>}~rILBO&!-=8i9Fqaa`5s)LmJu+oE-&r zJI`LpfCp3qJO4!JvVhOV(MmmErFjF;se^TAxSj7Zj*HCr6wt15s@8hIg(&SFi55V* z44=_F+ko(ZGCiNGd8v7KKCmLd=DAo8-zUA`%MxIY4wpTQKB${Oo5o#^tqNxY^+68f zo%vfW&KLq{D$r_-zfgZn`m08F5a^8rqD+cj;HSnFMxP8EP`*oaNUdx!<4(PQ%Q)ZU zq|MVN6GBq70Am%#RN$#jJmP$9!0wCX#7YXVURD9F{THB66|_Rp93ZP@utOa8 zLtf+1?z9})@Kym+weGg6s@2~Ij!VB8IP0e%Yydpcjo0K*txw}n00lkZwTf7sO7Dk& z8!<=exdAK&w)$UMZuM#kxFNgEo#0AHpKa5%fh>hP-TWxg@Ex+#M&bjB3D{~ZNL?=AU?vnv>|FhngeLSWfVz%ie{DOlR8_4sZo>) zx?G;=Kj5y)yenTUkZ=rjyhr^SMWZdkx=b;uIcUd{!ruYlr)z=Qa7bb(hQ;yXy2tQI Z=PwiQ4s-8>X{7)F002ovPDHLkV1nF3t&acz literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/mhotar icons/read_flash_v2_64(mhotar).png b/companion/src/images/originals/mhotar icons/read_flash_v2_64(mhotar).png new file mode 100644 index 0000000000000000000000000000000000000000..afaeb0a727a729a8c9b7b2b478afd320e15b7d9d GIT binary patch literal 1927 zcmV;22YC32P)=L`5(b0WBaE0R@Z_1s`Bls2EU0sR6}k3}6%yg9=0q zRw;@B{3OOGMnUljh(txeV4#4YfDgb@UhQowrL=z7b7dT6_U>*Mxb5YiOxnBi*g5|> zbLN~g3ukc_bqyIn_e2%G3vduP0`y2U;kyBcfhs8pMM9^*1B$frF_3C#-w60ZR$eVzflgrvb}evEj5cEpmU%mn58Mu% zTN~A|1Mr>*a|{@0X_q8ySG$zsz{9mg@W#ONhCR3+xY*GC))>M^%lO(L{LR2l7a@KF z+9~amfuEK7BH%$_F;J-W9Ukw(&#?%7So>W7^aDBrd0O4G%6OM(bvJ}K*JO(}21W{S z$Y8{>ffm3n4=P>)v{c3%sMTK?qVVsYilgpLWwKR38|`R{#2{d@HeQZa-!+6e)&rI( zb2%b$LMZ5`O*mJp9|Tlbgx{e#D2Odk+YB+h^D1DjXj{4mEnR9@h|ow#0{&74{?^cD zC@>p%1Q-VN5=}`mw0%sQXrXAy5a2anw^pC$GPnA`a`6Uj(O@WBY`!*d#~O^)9QexP z5m^mXTDD088AliXnD)Ck3=*bmgH8*Sqd#POosAa*^`x8p9-1G zD2q|_dIVR?qC}G)(Nb)&_6;RRP$q(x$lU(33F>5C^$?WokqGct?Ri^Zkw=g2N8oNb z9%JD;i4*E6j?OwEMMbFyXF{sXPe&P0s1mRR=TZS#cLYRH4!j7wp*(9P z{(y>InlF&y@tx_G_nr}?xYR9|xLwtPpOoKUYwfdv8S;OB(IOjKoCeu0_h6T9ajSer zv($GQ+HBWi@WJwYgwHcOtW#i>&-XU8`Ob?BjdKlchZv5|8v_uK9TEWt{1TvVfu_Jm zqQWX>Xf`2=Wx)H208M~TB`Q?0QNmgso#mZJLn5G5Y|JLjh^w}$y{&UAU;`)Lx9529 zzCJNHMe6U27>>(+U|$F&8gJOX5}WL%0W-CZf6Dp4E(QS+$tC3B-2MhR;=(qH)j>L4 zrX>^Kv9xRBB4k@&f@}dV8jvc6NH48%Zk^j&>SL883CjA$(g1xzYLc=F=ROde@9!R! z>`Ik*j&9f5BRmpd+J^a@$nTen>)g)ALiUmQ9akdMT(1PA<9ukSCK2~pEa*<)ijWDI zg>#8IURM7hiAcRBHj*R}vR;xmy+xCw*KdQ2oDY)Jv{P( zFTTh$sdv+W>C&b^v|yZQ&4*Io&5IHAid1bNJ)J(f(DNI2{UJx|zN_F6UY6!49Yu@>WeYLh8yJJRLkv0IV^qWDO)9!goqnVH^}D`>}#)@ej?Y58eG)}O-*eO#&=T75mW=V zikliWdV|DI=+FPZ2CK6KsMsN8t`b%DNF)Mu6i7nSw%^kNjCn}OMCSzPUwAqRFd;*{ zt^-p1qO-RBf*=#;y8nz2uq0l$Kr#uAgeTxsZGqL8FI3|V6^X6@{0p@>X4jJ31cm?r N002ovPDHLkV1j!HX{P`H literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/mhotar icons/write_eeprom_file_v2.png b/companion/src/images/originals/mhotar icons/write_eeprom_file_v2.png new file mode 100644 index 0000000000000000000000000000000000000000..b66be1dafeb58f723763a2b34b5a5470ad60f89b GIT binary patch literal 886 zcmV-+1Bv{JP)n`@h%v zuXXvKt@9u4JBkl+3`cQi#uwm?yhpLFTCf_umd`6SAjWYdb9Q49_U8L9oL^49FOJRF zgdH{iYzN-NBo5+*j6Yig;zCUK?J30Hdz{S{^l!rCRh=Ezq z#{L|j31tS9&#I;?I5TOsy^p@dnCOdvG2A~S_?F|_Fag(LR}+9W#pbXAU3`NFhFr;! z0ps5%4JUC8J|7l@$8mddyN4_BDDJ^$8K1yNPQ5B?;Fj#SvIgL_k>Y_?#Xu*tPvIZ@ zj<4_p9_w4Pq($Aht0@f^hT`3L4sYkAo1jU*YFOEmye`+wM1CvkUrGtD?3oI{ zdqbjEq;nxo!-)aW2@8v60N{*5J5EXros3gvL*Mv-=3{-!&S`nZCfbzaQm)?$6CK>0 zpj}domCw^*`o?mP(U!VDj;o9NzbevwZ_@J8q}|`~cd-@M<8{0{R{*Q=V)6Y+MCNcL zcX2eNvX4^qz>}LN!b4 zmO$D7SeZNirN+M^UC-Vj^<--s0M&I}l4m|_Y&O4+NAlyMXZ~#JUz)_|q0`>NApigX M07*qoM6N<$f|}{AZU6uP literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/mhotar icons/write_eeprom_file_v2_64(mhotar).png b/companion/src/images/originals/mhotar icons/write_eeprom_file_v2_64(mhotar).png new file mode 100644 index 0000000000000000000000000000000000000000..f43584b91b6ff75835af71b6b1e83d17f795766f GIT binary patch literal 1611 zcmV-R2DJH!P)mo88_^h)&7wvTSzJnKWJ-n3w0^i}!s+9!GjC>|ou1@nX70P^ z&b$A2?pgl#!hqzr6#UPgcQkOLP5ZaNZU>!-z*RQwJAhy904M>jR)DAPAq>fDi+w19KfFztL^-0If>lAF&2~^@KFxZW~K` zJ)lo22DUqZ&}q~57EtIls0N_g=6;an@sg~|TvbnrQcG6_Ig zz#_+wbV;H#Pl}%&Wy!OE78}5tfh$zsa?zaz9Li)K;C3~+O!6z$Z<0s6w`P4)RKKCZ z5&WzA^vE2pN!2Vb4T(gFr>R>DYyoan+{Iu4rd9}&7FjMOa=%9kyjy@hsb+%N5HAbR zFYhCVviAUR+LBow1IF~HD3G*-W+{oa(;Fe_b@I(07chTFHws(^Y*N1$0Q+6~mjc6l zj@>SAEocfoM+lXh)p96QNm08@{+BSq;BDH0`0(;G15{*lZM?W&5bglB0yilT5)vLK z0l$S+4K`TT+k_nY05^uH8#p3MA=E@@ip#w^&QR8?fPESJDw^O~T-BP-iTAb#c z7M(4?GgXHSS{W;sN5|n@p6|w=VxJVS7Wxz++>aw03C{^rQug9r4r1xXtrv&k7pQUb%O8a z$PzCOX`FHCE`i4}o0J!%S&&%edki^gl`+6Mz^RY`=mgHiaDH}Yk1n#7$eB7Nwh*)B zttZ;*lDM>mlnD;Ukf0M)p{8XSuu>B`QP~^~+bQ;DDh!4#GaQn!p^_edCiO>9IfbF{ zFX8N?b6Jsv^rg=HQtTH>u@n=%F3b^^AWm{Jh9phM7<(1>u*~vYrBS2BmtanYER{(= zjG?)f2MB`=5{B=Qd}Nn^dR-Kjz&f0X$~cC{dl7h9mCj{SWj+d=2R!dGemjP3ss?_P zwjGkbFA|n0r%Rv}=l#O%@@aijW2JothJ|+9bKIsTuH_lvXw;X$O3dcPeU|nGz#qWp z9{NXtXMro}OV<|wchPr4Cvp~$q|ld&2Vak2ch_JD*Cf&6W&ux1pM7El^z0vXru=KaphaaVNRHJ$-O<81KGAwAPR}lNeuCdJoE-hn-|Oa zAA$Ft;Z_VYjZFA4%(mDAGDcfe6Cp5%m^c0N6C(0|o%dFDKY6C1}*;biNw^{{ccuWMGo5URMAB002ov JPDHLkV1gt>&ustz literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/mhotar icons/write_eeprom_v2.png b/companion/src/images/originals/mhotar icons/write_eeprom_v2.png new file mode 100644 index 0000000000000000000000000000000000000000..1653ce0f02d3856ddc8801190b7fb5af98bc05b6 GIT binary patch literal 928 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 literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/mhotar icons/write_flash_v2_64(mhotar).png b/companion/src/images/originals/mhotar icons/write_flash_v2_64(mhotar).png new file mode 100644 index 0000000000000000000000000000000000000000..b98ea4d199c83f750193d3b648164a199f85ccd8 GIT binary patch literal 1963 zcmV;c2UPfpP)Eh=fAL6eYS9Mng$xC_Sb@QxD@44DDSw}^K$#+e9yG3*4}6DeGi>;`OU1k`|S1neb;aOUTa@CL#Hw zP`s!q@eE*|gJGNb_tH?|hXP@)2MD>qq@v7xoJu-C$OYayoqU>-z-)n#3yeu6M`$Qe z9atg7wc#X!Fa!7nc$;ppB1&t@Y8+ z1;8=j;dD7?X9F(+hb$&`0JRja7e5h_y^rpMBbZy?So$0oV^#M3^sr8ikR73C3cN1J#VWEKT4Cz+h{< zZdQGRi1yz0`dS(7&Qp%ykhS)`z|~=oKuc?~epY=u;D`tF>w(f%`#x5i4vsmm1;$F+ zDmXxx;}P-Q1eDitJZxE;Jt4t9!JKU|2K&mRRXbO7D} zHd*y!JS4#jgpJmQ90PVqH$|q2)%C|)D5_%8-b6A zrLp5BQJ9+{2Q9F9i_;pph-jB{fD3?f+VO+HJ;1LH=9gK{Q4q%NILYq&dYRNfbfL9N z-9zN#mN+!;$5L3Wfu6vtmLBODLil}5ta##vW=SIy4E%rz$zX(+I=+n?@-z(r;{Tvd| zEJ^2nQCJCx-;|6}$ZFC#z!2@|lODl}Npk}(a+0F5l%O~OGvzc4k^^B}`njV=S08ygLlmj462Z5J4@m8gZ`~j0TTE0MLz&R_BLYI^! zed^{aZa1Z1h4K4yt9>@`f}UGRioB@ODd6p@0D9?mzshGVO?|hc%{rt0D6uax0J?^> z*~zj3i$l(PmTQnwz&nn{{TyvOI85g)5dg?e5&*lx0$?A3a=<56auJEP>!x**|t^zE#5IUd?ZX)k%w!{6B3t#fsc`b4Feg0dEgB*0#fnWQ{U>^=~nKJX~;rQXlP|603iKmc6F za2)?$v>cS{TqDFrHrM)&84+r~pa4_=b{h@$>1??)=mxxRSfT>kq3 zuFo?VH))iz-2ah);vPF;y1+Yi4%-Ob#=t@=E!HFnn)@YU_W^b~u8WT0!UX-d0k06d z0m`zDMQ31I*aZzBmeVic5eb?|+J1kxkP?ui`a!bgljK&9lP@w%^?njCTy1hB1$`wo z(^Y?E5G5FtN?8Nh-}v+l3BW+rm(f_O^?oz(jgq#00OT9Gr2#Nm7NkI4;Rit+p)h1$ zS06B*>xRtB9RS`nLh;FRn+NLr*OH#`qglZ3M(%N_yvrUMV`r3b*pKWyVMU#_0^n)j zix6W?A@Z7KnmJ9K;`=6U+Nx)jUsd1&(PJTiwPW&3I$O2%} zdX=$8RN3fs0>GvmB_zGhd)WwM?lCga-6HhgekuWQQKr1ET`FOzo^|}9P!_T4{{IDl xX{mYyirjxuodF;Plpso!bWQ{QkDTrTz(1=hblT@2K0yEg002ovPDHLkV1mnPsNetq literal 0 HcmV?d00001 diff --git a/companion/src/images/read_eeprom.png b/companion/src/images/read_eeprom.png index 01b3402741fa1877d8dd904017de627e08011b9a..bfd9f256a5867ea05516652cfa94e3ebf3e133d0 100644 GIT binary patch delta 868 zcmV-q1DpKL3aST?Q-2W+88Cz-#8LnN12;)TK~z}7#g|J+7Eu((f0OzdCMi}VwJj&_W`DNQ#!3N)LN4qG;8V%CgcP5JC?GADLSD zO$+}6*ZF4V8%Lo7!@Zoj_n!Zp^FQa@f&VO)F}ngx4!N%ln}1TEcL=sF0vr4Qq+`*G zO$+eVcyA{Fg}*=v@Cle2()c@II?x2n^jZ+Z!p35|OJ50W^H|>s*jPLX;o%m2NWaF{ zK>#XT`rkmi$NENKk3d}aF`fc^l+i9=CGf`&!~g)O0G0tKfzMiO1Mj6U@<>x zIyxSx1hRoFf$I|oQl!h)+%03ZzbwGU@#G#DIHVoukjtH~?w77zbGKwABqxllx0dNaw7Km10ie-?n52(bZ7AP{xu%E$ZV6MI@E{VL7A6p~CcfMO#|#lSOQlSn)Z*lfhR zL(Ql}JZSJDVObJ76&UlSx*<7o8#p9D-+>9hc~?Waqtvbukfgo9>yGDUwGF&cBNAW;hOuyh$1s|(S*XmB0_*-XyjRIh~ZpCq*_iIGDE+4Oq u1&&1l;2c({XCx$M4e=i$XN3RGyZ-@ewBHgtVP8A|0000`-zSK delta 1292 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 diff --git a/companion/src/images/write_eeprom.png b/companion/src/images/write_eeprom.png index 194e00bde1b46965cffc1dfe51d32e34bb80279e..1653ce0f02d3856ddc8801190b7fb5af98bc05b6 100644 GIT binary patch delta 858 zcmV-g1Eu_g3!n#(Q-2W+9~XCY*1rG%11(8JK~z}7t(Q$mR8bVie|H>b#E{C6$}$WR zjZ7&ah$4b&(ISvqL?4R^l59~ywuo@mLP(M_sEFFN2%@5*AP5o?E2xB!P%xGopZ)u!>|;?GQz-O6n~2mAB{Oc4Uhu91E1Bq zKLo`dvykpxn1wWEIM_KXC+>8^(YM@Az7WnUQw;;7m3+$0V z@j?;s2xyZ)4TB<}6L=LS6NW*xBUuFv3$nhFf_-dT?~3f>H(J6bB7ikgsge$PTwLQ9 zD`Da(kbgiwus_76$vmu<3PWHKu+|ZT3E+$5`;_BWRt^@pqx22X?nYq3rO8MGl`%dnPFQvd<_5P}~=ZIcqK8eV9RLnk!ola?1AIeQN zT7fCx6L3Jf<-lSTmQ=g+{YxZJOV!0J;Fk1}4e}e&pLn4J0B!^2a+q<%kO8*J?QQ&+ z?NfSR9*}M;a%oD#AT6zXhsPJwBmLebk5WCU$>u|#StTVmGyo@jYK2k%6>}nBR3A{y k>>y@xP>ulenO!9Q0llR65?O(v&;S4c07*qoM6N<$g3z~$KmY&$ delta 1346 zcmV-I1-<&92ZRfdQ-2T?5;eT>7K{J@1rbR^K~z}7?U!9llUEqWf9EX(hQ(nm7zS*C z>VVNG1J|s(@FVdfn&`#QEiOv9(TmNIpbH^kcVt_#EMiEeX~KoD5MgY?z=(<|ek9#>~@7}#7F}K@IcX#(Z4S0x#^&tebfDQNsc(^G32p9(@0bL{oP6Ki=u3o(=0a;U1 zvm`z+Fd%pB+J6;P!UZIUWXl7d2Gkk~3<=Bvxl8vl3NBy1jKyLBz-qP9*4Bp0<(lUz z1jWV0+_-TABx@1;95Q_rcn$CZ#=!6Z`M_8-51a<%xpU{1-TT7ALiymq16fs7C8d<#7_~j8UiF{fR`e>IRwE~M#GaQPta&I+`W63#(%~}W@l$Hzhwr=W(1ufuiJo9 zpa}RqQoe-Hz>Xa|sH>}+pKY^o;lc&BZ{N=D-Mf)eqSb22%F5!zi4zDhZ}Q3yD@oO+ z(sQlnK!k4$#ao79ChY0yk$|kNt(CEG>eQ+E(ws+91Y-hd0;(s)G@;#Yr@z0ShK2@) zhlja;|9^hG9VHu31CD>RD1Hg>0dv6NmJr z_b=;#ATl#EDJdzTxw#pm(TLG#TuEOImf=XifJK4$9^hKs9#{!N6o}N2cE(i&01XWd zjE;`RT&9$gva&L^ZQHh-5?ccO|9ad6Dl03W=YNU&Fyu^#O`x~87l*?U-qs8TOeRz0 z^I4;;id{qkn>KACD=RB3o|cxj@ZA1QJ65X|huwh?g2AD|;0f6pC9faBFba*#@i_cK zA~=oY3n^tx*2S+EGd@0!$z(#S)iO0Th0SKe=ksBH)BG%@5C}yuJw469j{~e(vj)c> z4u1sVT`A?)Q5C4KuV-RnBBI%PNx%##nJ{?0q2SpNY6;;P}w1LIvt;X_9+PxERBs^ z>h2~tHy5YVNk&Enc88sd&0paM>d&4fA%8KEuC6XhN=oSZzKh|Z;rFGK=ff0eYHGqS z{SiN&l9IyIpHt}ddYpebQ6#KQNx@_`(|79@U!FNb`SIfbOioOa1iXFtFs7|rsjaT& zhdXyDEiFaAUXPS=W9SwQ=h7B9|sJe!U$qAB@lJI)HOZrECem;hc22@og z|J8iFUT=JTAm-IUh(*Fl91aJ^%72gH_eb_lM@I*$s-h@L*gwf?2)JA>S6Xs%@0-b&RedT-i?8WEvA%tLTY>dvX&Zr6u z4h>?+Gb|7u8XQ6*J3@cW;)Moq78Dk|xMlMeQd3izo}NZk)#&{`ApxCEhdbSF$J%Q} zeX4$ppHEgxAh?5dNOl4lanA4qgNjBu@1OHu=YIt7FC(tIpxn$}djJ3c07*qoM6N<$ Ef+5?2ng9R* diff --git a/companion/src/images/write_eeprom_file.png b/companion/src/images/write_eeprom_file.png index dcdcc3577f5c920e2194108053839dc15d5797c4..b66be1dafeb58f723763a2b34b5a5470ad60f89b 100644 GIT binary patch delta 816 zcmV-01JC^S3ibw&Q-2W+9x1O5`c(h`0|QA!K~z}7#n)YkRaF!R@ZWXDsiaRS$|7n& zN-KzZD98vjLa7LetOThiqc4J9vLqpx5R#xTq=$ki`l8P_F@hcvs)wS7UNV$PqOcFE zxtNZc-Cq6&HkW(unK?7jg2S1!*WP>n`@h%vuXXvKt@9u4JAaA~aSTUsXT}%cjl4&( zu3E4fy_U}_H6X@uBy)CS5%%W$FPvXazAui=*n}N5|7-`|#3T;lg^WL21L8tV_w6x- zbNeS&0LJpYsRqDB@xO{+^Y`=dJyHYW0vyhqKX7*GT+rff``0~$_wf|g4p_4f%kUGH z;^(;lsI%Kb^?%wL|2~|D1O1NK0yvoWu>rm+;95~S6YJ$9mHpN*e>;xnkPjB)PbMQy z$HR31zQDGI6CG**ur29#0&c*?*qM}vHOYv9S@k;(=DhKqs_M;UD~tukZvO>szy=McufoDGe8f;@x-- zZ|9_&qhx0V%m^OOnlJHAgQi@8J94O@3{-c%G~cfc+4P)-YFOHa%-zt$z|p+-%%E2| z)FM@jU*YFOEmye`+wM1CvkUrGtD?3oI{dqbjEq;nxo!-)aW2@8v60N{*5 zJ5EXros3gvL*Mv-=3{-!&S`nZCfbzaQm)?$6CK>0pj}domCw^*`o?mP(U!VDj;o9N zzbevwZ_@J8q}|`~cd-@M<8{0{R{*Q=V)6Y+M1SURBzJK%q_U4w3A=b1H_sJ7uXs=5 zrfB?+*k3d*m95M5e1OYwD>lwYOV+`bwAi19;%=h60=O&E{t+%qMoiC@fzr05+8Lk= zoyd2|*n#y|*;09ctj{-wshB3;kkA@yWy u8z}(QbzPEYK5T3@zm7-p21p`S$K~z}7?U!v#Q&$+rf9F!yVtEO(a{W_}~&u<^W|;jKeLV zZUTEzRxxw9L3oh}Q)*eut+!_%yfk;EAk=-^p5!Laeg5~H^MCLEJm)-5;lFOe;I9Uf zb>9S7<}rQ}@B*44mJKNS(;xGFHV^?MaMuXDr3Vvv#(_nKxrz+fO+);)A?}R*C0hX5 z($XTky1Ha_b#>gu_U_#)>+9>K+wGQs?C9v2#`gEhVhfY3$Y6;Pn$$8my4#RCV*Fg zV+QC~pg>n5pc5MS*9icWm6hReH~?10K(}>bg}`vUv8IJA)ZgDvZ*MQ-0Hi+>0q64? z0njijfvl`76h*;oHj|N&u}}iH^n|;q@BIxuHof>eK>uq=feN_GnyH zRrc)JgV}73#=_w+2M-=3PVyD#B%FqeXA{umPE=@I}|s}+C~Cr%)x#N+W$S64S* zC5$9Yz<--S`(;GfaBz^FJ9n~c*RFpkpsFghwY77R zDAH>{`x8%rrfE2xPO`JJ85$ZQJw2V`;$nJwdQeprA;dxyz>tW(c^yM3C1qu0q@<+a zcDpGkDB#GEBV4_DHJTe$RaH?16h%SPG-_*Wr+-h3Otc(t0h;^z`pC=610XFejm?`k zbNck@xC5J-o49i23Zr*NQIZr|TU!Y{42fu@&<(=I7VD)>lYf2q6TDqA=l~pz~TMX=!N{ zBYz_!hlLRDN-3L+wcwEu0=wOg#bUu?u^@y%2oZgse#~Yw5B(3>{o!tG&)GQN+{ACU zdTDHIq`SMD$-gGC+wBw<7UK6$(A?b2&p-S~AP`{3jvaVB9;B3C0_jEtzLHW_#xxf3 zECd{LyWPoBO3pSmVge2wI?U0dN6E>_Wq;YSWdIBf57Y6@w#Ym8p6iF3hTc@1~F3oZKkk>({R%ku9yxln5CY9x(fvdowek~Fd`#0|M{<7Gp6nP}O6ZTxNQ@8_^M5gW&#s|e%@tt!ma~f zG;WT80NWP%3RArKdu_~15Uwns-UxoK{y>~uFh5ApX)%8(eMW%_!%qkHDBdNyq?T5i zaaiY5JtOR8?obOp0Yl`*Ea0iJG#_{vVDwSohPRdhEPvI9JQnsHwF0lD<1fmTb>{+< zWEj`&0tNxoCA=~qwu##2psKZ04_3R?uLUk?+$dKb()@{d$#L$=EXimOVy5fs zot5tl@1BPSzuHBCvQFfdjoQ1>XCwjUzPLjU*QdGQd#_@JQof>Z{f7 zR0(Yq?0@QY4?1gzbA72fUk~iH29ya-&4MDrbGx9oR+n-xkfzXm*Fz%_4K^~<e0s_jslpO^Mod@o!zaUGO0Q*e&O;cg`%6e)vN$eSH# zfdn=RJlkP>5GPJ$ee6Yozfo(I|lvr5e;>v`4= zyb`2>ipw*V-YTVepPH;8p)Ta{R`m delta 1212 zcmV;t1Vj7H2mc9>Q-2T?5j5c2b=d#_1dK^UK~z}7<(FMdTvZUqfBON*mn{peK_H=D zyUPkReX&>`loTSysL^U$u}X_3_~wgk>Q_i=jMYS;SdFC*h^AVzp(UWP#_B_3p|OoM zz!r@yB8`Or-O@!;*vszmfw}as>{4oqnmEbHy=TrjGyj=8AAje<|D7z0Aaf;P2W-I4 zfD*n{*1~`RTwE-p){0UEoD-f6xS;W!i|tt_FeS>)YMvMavKGnnQ9&4*)uX^2|CDl* z)(8kcka4S&?*a}24=qq&;or6V5g-5@(0HkuOU?22t#;co;8cW?U9xsa=DUH9VgN`2 z5`f#H$hJv3CV$Ka-~$nS3|Ik7M1bj&eH%0|I^Cu1?a}zhH2xDe`eq7f)C$WrNu{rW zb;92y`#zO%FVGGK>n z9tRQ^0QN92Db~LsXWxrb3pUIr5^eoEO=t&jMc#veL)(|7tsT0VwA&(w_C#5$l(iEP{FjCQy~g`dczbWQ9q-g~ z`74?GWPS=*AJx?sE}_T-yt00ec%cOd#n9%%%7=s)h`bLx0PK^<^#S?99}>5^B1HKz z@67b%=YQvuoSe+?@G$3pJx@3srntBmrKS_eVzq#RtAVSWIemtdloSRA2e4q-q?9^h zUJ^{pouY8HrsztP-o4-Dc6q9HRIzl)QreETaG|G%*49=!Iyx91AIIr*l9!jq(9jSq zEiH7O{fR&zKt)9b)z#G~rJ8};bpS{}nPt+drGFT}$J)Mar5j5Lhr=B4da(m$p2Fd{9pMy^fB`z7FM zx!t@AEJ;gC!|(TF101QT++9>eB5ZT;(=_Ji%=*uE2K>iRLS#U;5pzMsr@MeVv9V@fngYIezF3?Zo>i?adtL8 zRe@m`0IbMe!MdXLToc6cX-m1kyqs`2Jbx>oOb;9dI)P_om^32I=UlX`%FN7U=kAy2 z`@N62xHy8rAOiyf*Y9LbC#zPjVlo)S?Q#(e2It7IYwug7YaNu9ybahdaj-@9)Xk~8 zN-;7r!uHDTbF4GT>-ElfX8OBYW=en#phsG-NzDS_ip*aHUH}M;1xSd$ey7OI&3~ml zihE7!?(UueV6|Gg?7xh~YWYot)hqy!lr2xU6rw%S*}iCRZ-2C`w2Y~#DFAwVdueNH zBdlTo@O9&Mxlu}C7zRF{4~1&I(VtO?G@{50X)WOQcs!|vg@q&~CowuY%H+gkOhNWI zJB~C5gM)({|MobBVZ4aqorV6IJv9iF%UGj*$k$Pn0BH;CI|}Hu*=_HKra~wGOaGGp aF8u|`+nn6Vm6L1$0000 Date: Fri, 17 Jan 2014 15:46:19 +0100 Subject: [PATCH 173/308] Support of inputs / mixes from 'next' continued. More duplicated code removed. --- companion/src/comparedialog.cpp | 6 +- companion/src/eeprominterface.h | 5 +- .../src/firmwares/opentx/opentxeeprom.cpp | 4 +- .../src/firmwares/opentx/opentxinterface.cpp | 3 +- .../src/firmwares/opentx/stamp-opentx.h.in | 2 +- companion/src/helpers.cpp | 90 ++++++- companion/src/helpers.h | 22 +- companion/src/modeledit/customswitches.cpp | 6 +- companion/src/modeledit/expodialog.cpp | 230 +++++++----------- companion/src/modeledit/expodialog.h | 23 +- companion/src/modeledit/expodialog.ui | 80 +++--- companion/src/modeledit/inputs.cpp | 46 ++-- companion/src/modeledit/mixerdialog.cpp | 140 ++--------- companion/src/modeledit/mixerdialog.h | 18 +- companion/src/printdialog.cpp | 4 +- 15 files changed, 332 insertions(+), 347 deletions(-) diff --git a/companion/src/comparedialog.cpp b/companion/src/comparedialog.cpp index 48ed3f9f5..f12c182b2 100644 --- a/companion/src/comparedialog.cpp +++ b/companion/src/comparedialog.cpp @@ -305,7 +305,7 @@ void compareDialog::printPhases() str.append(""+tr("Switch")+""+tr("Flight mode name")); str.append(""+tr("IN")+""+tr("OUT")+""); for (i=0; i<4; i++) { - str.append(QString("%1").arg(getStickStr(i))); + str.append(QString("%1").arg(getInputStr(*g_model1, i))); } str.append(""); for (i=0; igetCapability(FlightPhases); i++) { @@ -406,7 +406,7 @@ void compareDialog::printPhases() str.append(""+tr("Switch")+""+tr("Flight mode name")); str.append(""+tr("IN")+""+tr("OUT")+""); for (i=0; i<4; i++) { - str.append(QString("%1").arg(getStickStr(i))); + str.append(QString("%1").arg(getInputStr(*g_model1, i))); } str.append(""); for (i=0; igetCapability(FlightPhases); i++) { @@ -694,7 +694,7 @@ void compareDialog::printExpos() } } str.append(""); - str.append(""+getStickStr(i)+""); + str.append(""+getInputStr(*g_model2, i)+""); str.append(""); str.append(""); for (int j=0; j= 216) { // TODO ScriptData scriptsData[MAX_SCRIPTS]; internalField.Append(new SpareBitsField<720>()); - // TODO char inputNames[MAX_INPUTS][4]; - internalField.Append(new SpareBitsField<1024>()); + for (int i=0; i<32; i++) + internalField.Append(new ZCharField<4>(modelData.inputNames[i])); } } diff --git a/companion/src/firmwares/opentx/opentxinterface.cpp b/companion/src/firmwares/opentx/opentxinterface.cpp index 73738e0b4..a0917d9b6 100644 --- a/companion/src/firmwares/opentx/opentxinterface.cpp +++ b/companion/src/firmwares/opentx/opentxinterface.cpp @@ -598,8 +598,6 @@ int Open9xInterface::getCapability(const Capability capability) return 1; case ExtendedTrims: return 500; - case ExtraTrims: - return 1; case Simulation: return 1; case DSM2Indexes: @@ -696,6 +694,7 @@ int Open9xInterface::getCapability(const Capability capability) case GetThrSwitch: return (IS_TARANIS(board) ? DSW_SF1 : DSW_THR) ; case VirtualInputs: + return IS_TARANIS(board) ? 32 : 0; case LuaInputs: case LimitsPer1000: case EnhancedCurves: diff --git a/companion/src/firmwares/opentx/stamp-opentx.h.in b/companion/src/firmwares/opentx/stamp-opentx.h.in index ad88df035..246c69b5d 100644 --- a/companion/src/firmwares/opentx/stamp-opentx.h.in +++ b/companion/src/firmwares/opentx/stamp-opentx.h.in @@ -2,5 +2,5 @@ #define DATE_STR "@DATE@" #define TIME_STR "@TIME@" #define VERS_STR "c9x" -#define SVN_STR "@FIRMWARE@-r@G9X_WC_REVISION@" +#define VERS_STR "@FIRMWARE@-r@G9X_WC_REVISION@" #define MOD_STR "FH" diff --git a/companion/src/helpers.cpp b/companion/src/helpers.cpp index 7c5046b31..d89deaa6f 100644 --- a/companion/src/helpers.cpp +++ b/companion/src/helpers.cpp @@ -18,9 +18,21 @@ QString getPhaseName(int val, char * phasename) } } -QString getStickStr(int index) +QString getInputStr(ModelData & model, int index) { - return RawSource(SOURCE_TYPE_STICK, index).toString(); + QString result; + + if (GetEepromInterface()->getCapability(VirtualInputs)) { + result = model.inputNames[index]; + if (result.isEmpty()) { + result = QObject::tr("Input%1").arg(index+1, 2, 10, QChar('0')); + } + } + else { + result = RawSource(SOURCE_TYPE_STICK, index).toString(); + } + + return result; } void populateGvSourceCB(QComboBox *b, int value) @@ -63,7 +75,7 @@ void populateTTraceCB(QComboBox *b, int value) } int channels=(IS_ARM(GetEepromInterface()->getBoard()) ? 32 : 16); for (int i=1; i<= channels; i++) { - b->addItem(QObject::tr("CH")+QString("%1").arg(i,2,10,QChar('0'))); + b->addItem(QObject::tr("CH%1").arg(i, 2, 10, QChar('0'))); } b->setCurrentIndex(value); } @@ -471,6 +483,78 @@ void populatePhasesCB(QComboBox *b, int value) b->setCurrentIndex(value + GetEepromInterface()->getCapability(FlightPhases)); } +bool gvarsEnabled() +{ + int gvars=0; + if (GetEepromInterface()->getCapability(HasVariants)) { + if ((GetCurrentFirmwareVariant() & GVARS_VARIANT)) { + gvars=1; + } + } + else { + gvars=1; + } + return gvars; +} + +GVarGroup::GVarGroup(QCheckBox *weightGV, QSpinBox *weightSB, QComboBox *weightCB, int & weight, const int deflt, const int mini, const int maxi, const unsigned int flags): + QObject(), + weightGV(weightGV), + weightSB(weightSB), + weightCB(weightCB), + weight(weight), + flags(flags), + lock(false) +{ + lock = true; + + if (gvarsEnabled()) { + populateGVCB(weightCB, weight); + connect(weightGV, SIGNAL(stateChanged(int)), this, SLOT(gvarCBChanged(int))); + connect(weightCB, SIGNAL(currentIndexChanged(int)), this, SLOT(valuesChanged())); + } + else { + weightGV->hide(); + if (weight > maxi || weight < -mini) { + weight = deflt; + } + } + + weightSB->setMinimum(mini); + weightSB->setMaximum(maxi); + + if (weight>maxi || weightsetChecked(true); + weightSB->hide(); + weightCB->show(); + } + else { + weightGV->setChecked(false); + weightSB->setValue(weight); + weightSB->show(); + weightCB->hide(); + } + + connect(weightSB, SIGNAL(editingFinished()), this, SLOT(valuesChanged())); + + lock = false; +} + +void GVarGroup::gvarCBChanged(int state) +{ + weightCB->setVisible(state); + weightSB->setVisible(!state); + valuesChanged(); +} + +void GVarGroup::valuesChanged() +{ + if (weightGV->isChecked()) + weight = weightCB->itemData(weightCB->currentIndex()).toInt(); + else + weight = weightSB->value(); +} + CurveGroup::CurveGroup(QComboBox *curveTypeCB, QCheckBox *curveGVarCB, QComboBox *curveValueCB, QSpinBox *curveValueSB, CurveReference & curve, unsigned int flags): QObject(), curveTypeCB(curveTypeCB), diff --git a/companion/src/helpers.h b/companion/src/helpers.h index bc61e2894..6f104480c 100644 --- a/companion/src/helpers.h +++ b/companion/src/helpers.h @@ -29,6 +29,26 @@ void populateTTraceCB(QComboBox *b, int value); void populateRotEncCB(QComboBox *b, int value, int renumber); void populateBacklightCB(QComboBox *b, const uint8_t value); +class GVarGroup : public QObject { + + Q_OBJECT + + public: + GVarGroup(QCheckBox *weightGV, QSpinBox *weightSB, QComboBox *weightCB, int & weight, const int deflt, const int mini, const int maxi, const unsigned int flags=0); + + protected slots: + void gvarCBChanged(int); + void valuesChanged(); + + protected: + QCheckBox *weightGV; + QSpinBox *weightSB; + QComboBox *weightCB; + int & weight; + const unsigned int flags; + bool lock; +}; + class CurveGroup : public QObject { Q_OBJECT @@ -88,7 +108,7 @@ void populateCSWCB(QComboBox *b, int value); QString getTimerMode(int tm); QString getTimerModeB(int tm); QString getPhaseName(int val, char * phasename=NULL); -QString getStickStr(int index); +QString getInputStr(ModelData & model, int index); QString getCSWFunc(int val); QString getFuncName(unsigned int val); QString getRepeatString(unsigned int val); diff --git a/companion/src/modeledit/customswitches.cpp b/companion/src/modeledit/customswitches.cpp index b20cd1f68..8270689b6 100644 --- a/companion/src/modeledit/customswitches.cpp +++ b/companion/src/modeledit/customswitches.cpp @@ -254,7 +254,7 @@ void CustomSwitchesPanel::setSwitchWidgetVisibility(int i) cswitchSource2[i]->setVisible(false); cswitchValue[i]->setVisible(false); cswitchOffset[i]->setVisible(true); - populateSourceCB(cswitchSource1[i], source, POPULATE_SOURCES | (GetEepromInterface()->getCapability(ExtraTrims) ? POPULATE_TRIMS : 0) | POPULATE_SWITCHES | POPULATE_TELEMETRY | (GetEepromInterface()->getCapability(GvarsInCS) ? POPULATE_GVARS : 0)); + populateSourceCB(cswitchSource1[i], source, POPULATE_SOURCES | POPULATE_TRIMS | POPULATE_SWITCHES | POPULATE_TELEMETRY | (GetEepromInterface()->getCapability(GvarsInCS) ? POPULATE_GVARS : 0)); cswitchOffset[i]->setDecimals(source.getDecimals(model)); cswitchOffset[i]->setSingleStep(source.getStep(model)); if (model.customSw[i].func>CS_FN_ELESS && model.customSw[i].funcsetVisible(true); cswitchValue[i]->setVisible(false); cswitchOffset[i]->setVisible(false); - populateSourceCB(cswitchSource1[i], RawSource(model.customSw[i].val1), POPULATE_SOURCES | (GetEepromInterface()->getCapability(ExtraTrims) ? POPULATE_TRIMS : 0) | POPULATE_SWITCHES | POPULATE_TELEMETRY | (GetEepromInterface()->getCapability(GvarsInCS) ? POPULATE_GVARS : 0)); - populateSourceCB(cswitchSource2[i], RawSource(model.customSw[i].val2), POPULATE_SOURCES | (GetEepromInterface()->getCapability(ExtraTrims) ? POPULATE_TRIMS : 0) | POPULATE_SWITCHES | POPULATE_TELEMETRY | (GetEepromInterface()->getCapability(GvarsInCS) ? POPULATE_GVARS : 0)); + populateSourceCB(cswitchSource1[i], RawSource(model.customSw[i].val1), POPULATE_SOURCES | POPULATE_TRIMS | POPULATE_SWITCHES | POPULATE_TELEMETRY | (GetEepromInterface()->getCapability(GvarsInCS) ? POPULATE_GVARS : 0)); + populateSourceCB(cswitchSource2[i], RawSource(model.customSw[i].val2), POPULATE_SOURCES | POPULATE_TRIMS | POPULATE_SWITCHES | POPULATE_TELEMETRY | (GetEepromInterface()->getCapability(GvarsInCS) ? POPULATE_GVARS : 0)); break; case CS_FAMILY_TIMERS: cswitchSource1[i]->setVisible(false); diff --git a/companion/src/modeledit/expodialog.cpp b/companion/src/modeledit/expodialog.cpp index bb2df0c65..d632777df 100644 --- a/companion/src/modeledit/expodialog.cpp +++ b/companion/src/modeledit/expodialog.cpp @@ -3,126 +3,97 @@ #include "eeprominterface.h" #include "helpers.h" -ExpoDialog::ExpoDialog(QWidget *parent, ExpoData *expoData, int stickMode) : +ExpoDialog::ExpoDialog(QWidget *parent, ModelData & model, ExpoData *expoData, int stickMode) : QDialog(parent), ui(new Ui::ExpoDialog), + model(model), ed(expoData) { - ui->setupUi(this); - QLabel * lb_fp[] = {ui->lb_FP0,ui->lb_FP1,ui->lb_FP2,ui->lb_FP3,ui->lb_FP4,ui->lb_FP5,ui->lb_FP6,ui->lb_FP7,ui->lb_FP8 }; - QCheckBox * cb_fp[] = {ui->cb_FP0,ui->cb_FP1,ui->cb_FP2,ui->cb_FP3,ui->cb_FP4,ui->cb_FP5,ui->cb_FP6,ui->cb_FP7,ui->cb_FP8 }; + ui->setupUi(this); + QLabel * lb_fp[] = {ui->lb_FP0,ui->lb_FP1,ui->lb_FP2,ui->lb_FP3,ui->lb_FP4,ui->lb_FP5,ui->lb_FP6,ui->lb_FP7,ui->lb_FP8 }; + QCheckBox * cb_fp[] = {ui->cb_FP0,ui->cb_FP1,ui->cb_FP2,ui->cb_FP3,ui->cb_FP4,ui->cb_FP5,ui->cb_FP6,ui->cb_FP7,ui->cb_FP8 }; - setWindowTitle(tr("DEST -> %1").arg(getStickStr(ed->chn))); - QRegExp rx(CHAR_FOR_NAMES_REGEX); - - int gvars=0; - if (GetEepromInterface()->getCapability(HasVariants)) { - if ((GetCurrentFirmwareVariant() & GVARS_VARIANT)) { - gvars=1; - } - } else { - gvars=1; - } + setWindowTitle(tr("Edit %1").arg(getInputStr(model, ed->chn))); + QRegExp rx(CHAR_FOR_NAMES_REGEX); - if (gvars==0) { - ui->weightGV->setDisabled(true); - ui->curveGVarCB->hide(); - if ((ed->curve.type == CurveReference::CURVE_REF_EXPO || ed->curve.type == CurveReference::CURVE_REF_DIFF) && ed->curve.value > 100) { - ed->curve.value = 0; - } - if (ed->weight>100 || ed->weight<-100) { - ed->weight = 100; - } - } + gvGroup = new GVarGroup(ui->weightGV, ui->weightSB, ui->weightCB, ed->weight, 100, 0, 100); + curveGroup = new CurveGroup(ui->curveTypeCB, ui->curveGVarCB, ui->curveValueCB, ui->curveValueSB, ed->curve); - populateGVCB(ui->weightCB, ed->weight); + populateSwitchCB(ui->switchesCB,ed->swtch); - ui->weightSB->setMinimum(0); - ui->weightSB->setMaximum(100); - if (ed->weight>100 || ed->weight<0) { - ui->weightGV->setChecked(true); - ui->weightSB->hide(); - ui->weightCB->show(); - } else { - ui->weightGV->setChecked(false); - ui->weightSB->setValue(ed->weight); - ui->weightSB->show(); - ui->weightCB->hide(); - } + ui->sideCB->setCurrentIndex(ed->mode-1); - populateSwitchCB(ui->switchesCB,ed->swtch); - - // TODO keep this group, same in MixerDialog - CurveGroup * curveGroup = new CurveGroup(ui->curveTypeCB, ui->curveGVarCB, ui->curveValueCB, ui->curveValueSB, ed->curve); - - ui->sideCB->setCurrentIndex(ed->mode-1); - - if (!GetEepromInterface()->getCapability(FlightPhases)) { - ui->label_phases->hide(); - for (int i=0; i<9; i++) { - lb_fp[i]->hide(); - cb_fp[i]->hide(); - } - } else { - int mask=1; - for (int i=0; i<9 ; i++) { - if ((ed->phases & mask)==0) { - cb_fp[i]->setChecked(true); - } - mask <<= 1; - } - for (int i=GetEepromInterface()->getCapability(FlightPhases); i<9;i++) { - lb_fp[i]->hide(); - cb_fp[i]->hide(); - } - } - - if (GetEepromInterface()->getCapability(VirtualInputs)) { - ui->sideLabel->hide(); - ui->sideCB->hide(); - } - else { - ui->sourceLabel->hide(); - ui->sourceCB->hide(); - ui->scaleLabel->hide(); - ui->scaleSB->hide(); - ui->trimLabel->hide(); - ui->trimCB->hide(); - } - - int expolength=GetEepromInterface()->getCapability(HasExpoNames); - if (!expolength) { - ui->label_name->hide(); - ui->expoName->hide(); - } else { - ui->expoName->setMaxLength(expolength); - } - - ui->expoName->setValidator(new QRegExpValidator(rx, this)); - ui->expoName->setText(ed->name); - valuesChanged(); - - connect(ui->expoName,SIGNAL(editingFinished()),this,SLOT(valuesChanged())); - - connect(ui->curveTypeCB,SIGNAL(currentIndexChanged(int)),this,SLOT(valuesChanged())); - connect(ui->curveGVarCB,SIGNAL(stateChanged(int)),this,SLOT(valuesChanged())); - connect(ui->curveValueCB,SIGNAL(currentIndexChanged(int)),this,SLOT(valuesChanged())); - connect(ui->curveValueSB,SIGNAL(editingFinished()),this,SLOT(valuesChanged())); - - connect(ui->weightCB,SIGNAL(currentIndexChanged(int)),this,SLOT(valuesChanged())); - connect(ui->weightSB,SIGNAL(editingFinished()),this,SLOT(valuesChanged())); - connect(ui->switchesCB,SIGNAL(currentIndexChanged(int)),this,SLOT(valuesChanged())); - connect(ui->sideCB,SIGNAL(currentIndexChanged(int)),this,SLOT(valuesChanged())); - connect(ui->weightGV,SIGNAL(stateChanged(int)),this,SLOT(widgetChanged())); + if (!GetEepromInterface()->getCapability(FlightPhases)) { + ui->label_phases->hide(); for (int i=0; i<9; i++) { - connect(cb_fp[i],SIGNAL(toggled(bool)),this,SLOT(valuesChanged())); + lb_fp[i]->hide(); + cb_fp[i]->hide(); } - QTimer::singleShot(0, this, SLOT(shrink())); + } + else { + int mask=1; + for (int i=0; i<9 ; i++) { + if ((ed->phases & mask)==0) { + cb_fp[i]->setChecked(true); + } + mask <<= 1; + } + for (int i=GetEepromInterface()->getCapability(FlightPhases); i<9;i++) { + lb_fp[i]->hide(); + cb_fp[i]->hide(); + } + } + + if (GetEepromInterface()->getCapability(VirtualInputs)) { + ui->sideLabel->hide(); + ui->sideCB->hide(); + ui->inputName->setMaxLength(4); + populateSourceCB(ui->sourceCB, ed->srcRaw, POPULATE_SOURCES | POPULATE_SWITCHES | POPULATE_TRIMS | (GetEepromInterface()->getCapability(GvarsAsSources) ? POPULATE_GVARS : 0)); + ui->sourceCB->removeItem(0); + } + else { + ui->inputNameLabel->hide(); + ui->inputName->hide(); + ui->sourceLabel->hide(); + ui->sourceCB->hide(); + ui->scaleLabel->hide(); + ui->scaleSB->hide(); + ui->trimLabel->hide(); + ui->trimCB->hide(); + } + + int expolength = GetEepromInterface()->getCapability(HasExpoNames); + if (!expolength) { + ui->lineNameLabel->hide(); + ui->lineName->hide(); + } + else { + ui->lineName->setMaxLength(expolength); + } + + ui->inputName->setValidator(new QRegExpValidator(rx, this)); + ui->inputName->setText(model.inputNames[ed->chn]); + + ui->lineName->setValidator(new QRegExpValidator(rx, this)); + ui->lineName->setText(ed->name); + + valuesChanged(); + + connect(ui->lineName,SIGNAL(editingFinished()),this,SLOT(valuesChanged())); + connect(ui->sourceCB,SIGNAL(currentIndexChanged(int)),this,SLOT(valuesChanged())); + connect(ui->switchesCB,SIGNAL(currentIndexChanged(int)),this,SLOT(valuesChanged())); + connect(ui->sideCB,SIGNAL(currentIndexChanged(int)),this,SLOT(valuesChanged())); + for (int i=0; i<9; i++) { + connect(cb_fp[i],SIGNAL(toggled(bool)),this,SLOT(valuesChanged())); + } + QTimer::singleShot(0, this, SLOT(shrink())); } ExpoDialog::~ExpoDialog() { - delete ui; + delete gvGroup; + delete curveGroup; + delete ui; } void ExpoDialog::changeEvent(QEvent *e) @@ -137,54 +108,17 @@ void ExpoDialog::changeEvent(QEvent *e) } } -void ExpoDialog::widgetChanged() -{ - // TODO so many times duplicated :( - int gvars=0; - if (GetEepromInterface()->getCapability(HasVariants)) { - if ((GetCurrentFirmwareVariant() & GVARS_VARIANT)) { - gvars=1; - } - } else { - gvars=1; - } - - /* TODO if (gvars==1) { - if (ui->expoCurveGV->isChecked()) { - ui->expoCurveCB->show(); - ui->expoCurveSB->hide(); - } else { - ui->expoCurveCB->hide(); - ui->expoCurveSB->show(); - } - if (ui->weightGV->isChecked()) { - ui->weightCB->show(); - ui->weightSB->hide(); - } else { - ui->weightCB->hide(); - ui->weightSB->show(); - } - } */ - valuesChanged(); - QTimer::singleShot(0, this, SLOT(shrink())); -} - void ExpoDialog::valuesChanged() { QCheckBox * cb_fp[] = {ui->cb_FP0,ui->cb_FP1,ui->cb_FP2,ui->cb_FP3,ui->cb_FP4,ui->cb_FP5,ui->cb_FP6,ui->cb_FP7,ui->cb_FP8 }; - if (ui->weightGV->isChecked()) { - ed->weight = ui->weightCB->itemData(ui->weightCB->currentIndex()).toInt(); - } else { - ed->weight = ui->weightSB->value(); - } + ed->srcRaw = RawSource(ui->sourceCB->itemData(ui->sourceCB->currentIndex()).toInt()); ed->swtch = RawSwitch(ui->switchesCB->itemData(ui->switchesCB->currentIndex()).toInt()); ed->mode = ui->sideCB->currentIndex() + 1; - int i=0; - for (i=0; iexpoName->text().toAscii().length(); i++) { - ed->name[i]=ui->expoName->text().toAscii().at(i); - } - ed->name[i]=0; + + strcpy(ed->name, ui->lineName->text().toAscii().data()); + strcpy(model.inputNames[ed->chn], ui->inputName->text().toAscii().data()); + ed->phases=0; for (int i=8; i>=0 ; i--) { if (!cb_fp[i]->checkState()) { @@ -231,5 +165,5 @@ void ExpoDialog::valuesChanged() void ExpoDialog::shrink() { - resize(0,0); + resize(0,0); } diff --git a/companion/src/modeledit/expodialog.h b/companion/src/modeledit/expodialog.h index a7630cc87..5281e4c29 100644 --- a/companion/src/modeledit/expodialog.h +++ b/companion/src/modeledit/expodialog.h @@ -4,27 +4,32 @@ #include #include "eeprominterface.h" +class GVarGroup; +class CurveGroup; + namespace Ui { - class ExpoDialog; + class ExpoDialog; } class ExpoDialog : public QDialog { Q_OBJECT -public: - ExpoDialog(QWidget *parent, ExpoData *mixdata, int stickMode); + public: + ExpoDialog(QWidget *parent, ModelData & model, ExpoData *expodata, int stickMode); ~ExpoDialog(); -protected: + protected: void changeEvent(QEvent *e); -private slots: + private slots: void valuesChanged(); - void widgetChanged(); void shrink(); -private: - Ui::ExpoDialog *ui; - ExpoData *ed; + private: + Ui::ExpoDialog * ui; + ModelData & model; + ExpoData * ed; + GVarGroup * gvGroup; + CurveGroup * curveGroup; }; #endif // EXPODIALOG_H diff --git a/companion/src/modeledit/expodialog.ui b/companion/src/modeledit/expodialog.ui index baf7c6b14..bfe43b1ec 100644 --- a/companion/src/modeledit/expodialog.ui +++ b/companion/src/modeledit/expodialog.ui @@ -30,28 +30,35 @@ :/icon.png:/icon.png + + + + The source for the mixer + + + - + - Name + Input name - + 6 - + Weight - + @@ -85,14 +92,14 @@ - + Flight modes - + @@ -249,14 +256,14 @@ - + Switch - + Switch used by the expo. @@ -264,14 +271,14 @@ If blank then the expo is considered to be "ON" all the time. - + Stick Side - + @@ -290,7 +297,7 @@ If blank then the expo is considered to be "ON" all the time. - + @@ -309,7 +316,7 @@ If blank then the expo is considered to be "ON" all the time. - + Qt::Vertical @@ -322,14 +329,7 @@ If blank then the expo is considered to be "ON" all the time. - - - - The source for the mixer - - - - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> @@ -352,28 +352,21 @@ p, li { white-space: pre-wrap; } - + Scale - + Include Trim - - - - Source - - - - + @@ -387,14 +380,14 @@ p, li { white-space: pre-wrap; } - + Curve - + @@ -425,6 +418,27 @@ p, li { white-space: pre-wrap; } + + + + Source + + + + + + + Line name + + + + + + + 6 + + + diff --git a/companion/src/modeledit/inputs.cpp b/companion/src/modeledit/inputs.cpp index d8882f01b..015080f76 100644 --- a/companion/src/modeledit/inputs.cpp +++ b/companion/src/modeledit/inputs.cpp @@ -48,6 +48,10 @@ void InputsPanel::update() { lock = true; + int inputsCount = GetEepromInterface()->getCapability(VirtualInputs); + if (inputsCount == 0) + inputsCount = NUM_STICKS; + // curDest -> destination channel // i -> mixer number QByteArray qba; @@ -58,10 +62,12 @@ void InputsPanel::update() ExpoData *md = &model.expoData[i]; if (md->mode==0) break; - QString str = ""; - while(curDest<(int)md->chn-1) { + + QString str; + + while (curDest<(int)md->chn-1) { curDest++; - str = getStickStr(curDest); + str = getInputStr(model, curDest); qba.clear(); qba.append((quint8)-curDest-1); QListWidgetItem *itm = new QListWidgetItem(str); @@ -69,14 +75,21 @@ void InputsPanel::update() ExposlistWidget->addItem(itm); } - if(curDest!=(int)md->chn) { - str = getStickStr(md->chn); + if (curDest!=(int)md->chn) { + if (GetEepromInterface()->getCapability(VirtualInputs)) + str = QString("%1").arg(getInputStr(model, md->chn), -8, ' '); + else + str = getInputStr(model, md->chn); curDest = md->chn; - } else { + } + else { str = " "; } - if (!GetEepromInterface()->getCapability(VirtualInputs)) { + if (GetEepromInterface()->getCapability(VirtualInputs)) { + str += " " + tr("Source(%1)").arg(md->srcRaw.toString()); + } + else { switch (md->mode) { case (1): str += " <-"; break; case (2): str += " ->"; break; @@ -94,12 +107,10 @@ void InputsPanel::update() if (md->swtch.type != SWITCH_TYPE_NONE) str += " " + tr("Switch(%1)").arg(md->swtch.toString()); if (GetEepromInterface()->getCapability(HasExpoNames)) { - QString ExpoName; - ExpoName.append(md->name); - if (!ExpoName.isEmpty()) { - str+=QString("(%1)").arg(ExpoName); - } + QString expoName = md->name; + if (!expoName.isEmpty()) str += QString(" [%1]").arg(expoName); } + qba.clear(); qba.append((quint8)i); qba.append((const char*)md, sizeof(ExpoData)); @@ -108,9 +119,9 @@ void InputsPanel::update() ExposlistWidget->addItem(itm); //(str); } - while(curDestexec()) { + ExpoDialog *g = new ExpoDialog(this, model, &mixd, generalSettings.stickMode); + if (g->exec()) { model.expoData[index] = mixd; emit modified(); update(); - } else { + } + else { if (expoInserted) { gm_deleteExpo(index); } diff --git a/companion/src/modeledit/mixerdialog.cpp b/companion/src/modeledit/mixerdialog.cpp index d0d4c3560..6d527b6d6 100644 --- a/companion/src/modeledit/mixerdialog.cpp +++ b/companion/src/modeledit/mixerdialog.cpp @@ -19,76 +19,32 @@ MixerDialog::MixerDialog(QWidget *parent, MixData *mixdata, int stickMode) : else this->setWindowTitle(tr("DEST -> CH%1%2").arg(md->destCh/10).arg(md->destCh%10)); - populateSourceCB(ui->sourceCB, md->srcRaw, POPULATE_SOURCES | POPULATE_SWITCHES | (GetEepromInterface()->getCapability(ExtraTrims) ? POPULATE_TRIMS : 0) | (GetEepromInterface()->getCapability(GvarsAsSources) ? POPULATE_GVARS : 0)); - + populateSourceCB(ui->sourceCB, md->srcRaw, POPULATE_SOURCES | POPULATE_SWITCHES | POPULATE_TRIMS | (GetEepromInterface()->getCapability(GvarsAsSources) ? POPULATE_GVARS : 0)); ui->sourceCB->removeItem(0); - int limit=GetEepromInterface()->getCapability(OffsetWeight); - int gvars=0; - if (GetEepromInterface()->getCapability(HasVariants)) { - if ((GetCurrentFirmwareVariant() & GVARS_VARIANT)) { - gvars=1; - } - } else { - gvars=1; - } - if (gvars==0) { - ui->offsetGV->setDisabled(true); - ui->weightGV->setDisabled(true); - if (md->weight>limit || md->weight<-limit) { - md->weight=100; - } - if (md->sOffset>limit || md->sOffset<-limit) { - md->sOffset=0; - } - } - populateGVCB(ui->offsetCB,md->sOffset); - populateGVCB(ui->weightCB,md->weight); - ui->weightSB->setMinimum(-limit); - ui->weightSB->setMaximum(limit); - if (md->weight>limit || md->weight<-limit) { - ui->weightGV->setChecked(true); - ui->weightSB->hide(); - ui->weightCB->show(); - } - else { - ui->weightGV->setChecked(false); - ui->weightSB->setValue(md->weight); - ui->weightSB->show(); - ui->weightCB->hide(); - } - ui->offsetSB->setMinimum(-limit); - ui->offsetSB->setMaximum(limit); - if (md->sOffset>limit || md->sOffset<-limit) { - ui->offsetGV->setChecked(true); - ui->offsetSB->hide(); - ui->offsetCB->show(); - } - else { - ui->offsetGV->setChecked(false); - ui->offsetSB->setValue(md->sOffset); - ui->offsetSB->show(); - ui->offsetCB->hide(); - } + int limit = GetEepromInterface()->getCapability(OffsetWeight); + + gvWeightGroup = new GVarGroup(ui->weightGV, ui->weightSB, ui->weightCB, md->weight, 100, -limit, limit); + gvOffsetGroup = new GVarGroup(ui->offsetGV, ui->offsetSB, ui->offsetCB, md->sOffset, 0, -limit, limit); if (GetEepromInterface()->getCapability(VirtualInputs)) { ui->trimLabel->hide(); ui->trimCB->hide(); } - CurveGroup * curveGroup = new CurveGroup(ui->curveTypeCB, ui->curveGVarCB, ui->curveValueCB, ui->curveValueSB, md->curve); + curveGroup = new CurveGroup(ui->curveTypeCB, ui->curveGVarCB, ui->curveValueCB, ui->curveValueSB, md->curve); ui->MixDR_CB->setChecked(md->noExpo==0); if (!GetEepromInterface()->getCapability(MixesWithoutExpo)) { ui->MixDR_CB->hide(); ui->label_MixDR->hide(); } - if (GetEepromInterface()->getCapability(ExtraTrims)) { - ui->trimCB->addItem(tr("Rud"),1); - ui->trimCB->addItem(tr("Ele"),2); - ui->trimCB->addItem(tr("Thr"),3); - ui->trimCB->addItem(tr("Ail"),4); - } + + ui->trimCB->addItem(tr("Rud"), 1); + ui->trimCB->addItem(tr("Ele"), 2); + ui->trimCB->addItem(tr("Thr"), 3); + ui->trimCB->addItem(tr("Ail"), 4); + ui->trimCB->setCurrentIndex((-md->carryTrim)+1); int namelength=GetEepromInterface()->getCapability(HasMixerNames); if (!namelength) { @@ -147,12 +103,6 @@ MixerDialog::MixerDialog(QWidget *parent, MixData *mixdata, int stickMode) : valuesChanged(); connect(ui->mixerName,SIGNAL(editingFinished()),this,SLOT(valuesChanged())); connect(ui->sourceCB,SIGNAL(currentIndexChanged(int)),this,SLOT(valuesChanged())); - connect(ui->weightCB,SIGNAL(currentIndexChanged(int)),this,SLOT(valuesChanged())); - connect(ui->offsetCB,SIGNAL(currentIndexChanged(int)),this,SLOT(valuesChanged())); - connect(ui->weightSB,SIGNAL(editingFinished()),this,SLOT(valuesChanged())); - connect(ui->offsetSB,SIGNAL(editingFinished()),this,SLOT(valuesChanged())); - connect(ui->weightGV,SIGNAL(stateChanged(int)),this,SLOT(widgetChanged())); // TODO why the same slot? - connect(ui->offsetGV,SIGNAL(stateChanged(int)),this,SLOT(widgetChanged())); connect(ui->trimCB,SIGNAL(currentIndexChanged(int)),this,SLOT(valuesChanged())); connect(ui->MixDR_CB,SIGNAL(toggled(bool)),this,SLOT(valuesChanged())); connect(ui->switchesCB,SIGNAL(currentIndexChanged(int)),this,SLOT(valuesChanged())); @@ -169,54 +119,23 @@ MixerDialog::MixerDialog(QWidget *parent, MixData *mixdata, int stickMode) : MixerDialog::~MixerDialog() { - delete ui; + delete gvWeightGroup; + delete gvOffsetGroup; + delete curveGroup; + delete ui; } void MixerDialog::changeEvent(QEvent *e) { - QDialog::changeEvent(e); - switch (e->type()) { + QDialog::changeEvent(e); + + switch (e->type()) { case QEvent::LanguageChange: - ui->retranslateUi(this); - break; + ui->retranslateUi(this); + break; default: - break; - } -} - -void MixerDialog::widgetChanged() -{ - int gvars = 0; - if (GetEepromInterface()->getCapability(HasVariants)) { - if ((GetCurrentFirmwareVariant() & GVARS_VARIANT)) { - gvars = 1; - } + break; } - else { - gvars = 1; - } - - if (gvars == 1) { - if (ui->weightGV->isChecked()) { - ui->weightCB->show(); - ui->weightSB->hide(); - } - else { - ui->weightCB->hide(); - ui->weightSB->show(); - } - if (ui->offsetGV->isChecked()) { - ui->offsetCB->show(); - ui->offsetSB->hide(); - } - else { - ui->offsetCB->hide(); - ui->offsetSB->show(); - } - } - - valuesChanged(); - QTimer::singleShot(0, this, SLOT(shrink())); } void MixerDialog::valuesChanged() @@ -237,16 +156,6 @@ void MixerDialog::valuesChanged() ui->MixDR_CB->setHidden(true); ui->label_MixDR->setHidden(true); } - if (ui->weightGV->isChecked()) { - md->weight = ui->weightCB->itemData(ui->weightCB->currentIndex()).toInt(); - } else { - md->weight = ui->weightSB->value(); - } - if (ui->offsetGV->isChecked()) { - md->sOffset = ui->offsetCB->itemData(ui->offsetCB->currentIndex()).toInt(); - } else { - md->sOffset = ui->offsetSB->value(); - } md->carryTrim = -(ui->trimCB->currentIndex()-1); md->noExpo = ui->MixDR_CB->checkState() ? 0 : 1; md->swtch = RawSwitch(ui->switchesCB->itemData(ui->switchesCB->currentIndex()).toInt()); @@ -276,6 +185,7 @@ void MixerDialog::valuesChanged() } } -void MixerDialog::shrink() { - resize(0,0); +void MixerDialog::shrink() +{ + resize(0, 0); } diff --git a/companion/src/modeledit/mixerdialog.h b/companion/src/modeledit/mixerdialog.h index 9435e1892..df2046e0f 100644 --- a/companion/src/modeledit/mixerdialog.h +++ b/companion/src/modeledit/mixerdialog.h @@ -4,29 +4,33 @@ #include #include "eeprominterface.h" +class GVarGroup; +class CurveGroup; + namespace Ui { - class MixerDialog; + class MixerDialog; } class MixerDialog : public QDialog { Q_OBJECT -public: + public: MixerDialog(QWidget *parent, MixData *mixdata, int stickMode); ~MixerDialog(); -protected: + protected: void changeEvent(QEvent *e); -private slots: - void widgetChanged(); + private slots: void valuesChanged(); void shrink(); - -private: + private: Ui::MixerDialog *ui; MixData *md; bool lock; + GVarGroup * gvWeightGroup; + GVarGroup * gvOffsetGroup; + CurveGroup * curveGroup; }; #endif // MIXERDIALOG_H diff --git a/companion/src/printdialog.cpp b/companion/src/printdialog.cpp index ac1cc9feb..e952e3ee3 100644 --- a/companion/src/printdialog.cpp +++ b/companion/src/printdialog.cpp @@ -176,7 +176,7 @@ QString printDialog::printPhases() str.append(""); for (int i=0; i<4; i++) { - str.append(QString("").arg(getStickStr(i))); + str.append(QString("").arg(getInputStr(*g_model, i))); } if (gvars==1) { for (int i=0; i"); str.append("
"+tr("Switch")+"
"+tr("Flight mode name")); str.append(""+tr("IN")+""+tr("OUT")+"%1%1"); if(lastCHN!=ed->chn) { lastCHN=ed->chn; - str.append(""+getStickStr(ed->chn)+""); + str.append(""+getInputStr(*g_model, ed->chn)+""); } else str.append(" "); From d134c063e56d601191b60e9ac81c73dd5cd4f224 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Fri, 17 Jan 2014 16:43:36 +0100 Subject: [PATCH 174/308] ModelEdit channels 'next' support --- companion/src/eeprominterface.h | 2 +- companion/src/modeledit/channels.cpp | 23 +++++++++++------------ 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/companion/src/eeprominterface.h b/companion/src/eeprominterface.h index b992bbf77..3ae13a13b 100644 --- a/companion/src/eeprominterface.h +++ b/companion/src/eeprominterface.h @@ -553,7 +553,7 @@ class LimitData { bool symetrical; char name[6+1]; CurveReference curve; - void clear() { memset(this, 0, sizeof(LimitData)); min = -100; max = +100; } + void clear() { memset(this, 0, sizeof(LimitData)); min = -1000; max = +1000; } }; enum MltpxValue { diff --git a/companion/src/modeledit/channels.cpp b/companion/src/modeledit/channels.cpp index 09b6a367b..070a0fcdc 100644 --- a/companion/src/modeledit/channels.cpp +++ b/companion/src/modeledit/channels.cpp @@ -57,24 +57,26 @@ Channels::Channels(QWidget * parent, ModelData & model): gridLayout->addWidget(offset, i+1, col++, 1, 1); // Channel min - QSpinBox * minSB = new QSpinBox(this); + QDoubleSpinBox * minSB = new QDoubleSpinBox(this); minSB->setProperty("index", i); minSB->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter); minSB->setAccelerated(true); + minSB->setDecimals(1); minSB->setMinimum(model.extendedLimits ? -125 : -100); minSB->setMaximum(0); - minSB->setValue(model.limitData[i].min); + minSB->setValue(float(model.limitData[i].min) / 10); connect(minSB, SIGNAL(editingFinished()), this, SLOT(minEdited())); gridLayout->addWidget(minSB, i+1, col++, 1, 1); // Channel max - QSpinBox * maxSB = new QSpinBox(this); + QDoubleSpinBox * maxSB = new QDoubleSpinBox(this); maxSB->setProperty("index", i); maxSB->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter); maxSB->setAccelerated(true); + maxSB->setDecimals(1); maxSB->setMinimum(0); maxSB->setMaximum(model.extendedLimits ? 125 : 100); - maxSB->setValue(model.limitData[i].max); + maxSB->setValue(float(model.limitData[i].max) / 10); connect(maxSB, SIGNAL(editingFinished()), this, SLOT(maxEdited())); gridLayout->addWidget(maxSB, i+1, col++, 1, 1); @@ -108,9 +110,6 @@ Channels::Channels(QWidget * parent, ModelData & model): gridLayout->addWidget(symlimits, i+1, col++, 1, 1); } } - - // setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - // setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded); } Channels::~Channels() @@ -141,23 +140,23 @@ void Channels::offsetEdited() { QDoubleSpinBox *dsb = qobject_cast(sender()); int index = dsb->property("index").toInt(); - model.limitData[index].offset = round(dsb->value()*10); + model.limitData[index].offset = round(dsb->value() * 10); emit modified(); } void Channels::minEdited() { - QSpinBox *sb = qobject_cast(sender()); + QDoubleSpinBox *sb = qobject_cast(sender()); int index = sb->property("index").toInt(); - model.limitData[index].min = sb->value(); + model.limitData[index].min = round(sb->value() * 10); emit modified(); } void Channels::maxEdited() { - QSpinBox *sb = qobject_cast(sender()); + QDoubleSpinBox *sb = qobject_cast(sender()); int index = sb->property("index").toInt(); - model.limitData[index].max = sb->value(); + model.limitData[index].max = round(sb->value() * 10); emit modified(); } From 988103d78519f0b533511a1321ddef9eee10361b Mon Sep 17 00:00:00 2001 From: mhotar Date: Fri, 17 Jan 2014 16:53:37 +0100 Subject: [PATCH 175/308] TX action icons v2 --- .../mhotar icons/read_eeprom_file_v2.png | Bin 862 -> 669 bytes .../originals/mhotar icons/read_eeprom_v2.png | Bin 938 -> 699 bytes .../originals/mhotar icons/read_flash_v2.png | Bin 951 -> 812 bytes .../originals/mhotar icons/txactionico.svg | 816 ++++++++++++++++++ .../mhotar icons/write_eeprom_file_v2.png | Bin 886 -> 682 bytes .../mhotar icons/write_eeprom_v2.png | Bin 928 -> 713 bytes .../originals/mhotar icons/write_flash_v2.png | Bin 973 -> 815 bytes companion/src/images/read_eeprom.png | Bin 938 -> 699 bytes companion/src/images/read_eeprom_file.png | Bin 862 -> 669 bytes companion/src/images/read_flash.png | Bin 951 -> 812 bytes companion/src/images/write_eeprom.png | Bin 928 -> 713 bytes companion/src/images/write_eeprom_file.png | Bin 886 -> 682 bytes companion/src/images/write_flash.png | Bin 973 -> 815 bytes 13 files changed, 816 insertions(+) create mode 100644 companion/src/images/originals/mhotar icons/txactionico.svg diff --git a/companion/src/images/originals/mhotar icons/read_eeprom_file_v2.png b/companion/src/images/originals/mhotar icons/read_eeprom_file_v2.png index 57a21dda1a12da36d21a1cfc1c2270949873b652..5d48a1c34da3e5dfd9ef1774ef52aa9503a87a09 100644 GIT binary patch delta 596 zcmV-a0;~Pr2Au_vRDTaEE8w+_p#T5^DoI2^R9M61m%mRGK@`V7yK*QPIlwcDjSYdq zf&@ZBNK6QSft>}7C55$>{tr~}A5c(OX{0gsl8}(lQ;^W{L*%%VA3HQ}lIQbg_h$D9 z1uxlT=DjyF@8@@B;U1Ce#7y#p5tKw6{*P{2;m~H0cLABpGk@S=fj5toyk&G!_fK;cIbg!@N0m%}u>j;k2lktJ&CK)Y!02cL>k4Nyzh+Z# zZSr*?;}0qVhkr7D0AyB!KsGqJYc^Oy- zo(JT!z<1y+Fz5H`D~a!~fJJ4@Jg^Nc0lUC!;5~39^54KmU;)?wzE-(dTnDJ#RG$Ad zc;SF=z-N)a1J-(x0w+keD>>Z)egLb|G0x!07x8=#nDMeIuVUXBpMXhV2Y3UV$vuJc z-T}XWDNO;ptmr)uLn~4f&fvT^a8h1U8f$v;U!V&z517V#{d?uqrBjxs{a#541A0m+ icTCAG?%mC+xp@O}a<=fWt3~|)0000OdbRDTT}Cu5t0kpKV!>q$gGR9M61ms?0wQ51&1GowRF7nFn~dXU0Q ziwL3~gur?bs)wkg1StxNZuAsNk`M?65p<&qUFb?hMf4;_P*6}kbb)Z7#E_7p3q_h_ zUTS*z4=jdr&YW}ftp&rGz1Eq%|NZZ^{=EkNBfA(BtOYVLKYtfOEdCn!3v~Luuw9ci z15H4?&tmPsHJ}F=0FKLlBw+Eh-ua_vXAppt#!Wr|$`!u^eAV}3iZy!7`$n;0pgssh zSOArZUoijxZY#b@<9y(qd_%xY`DYstT|gploDys;Fem_bff2K)wYNahIua2V8qjmZ zBQ~U+MY1RWGJn8(JvYT*X`h$V?+Bg&2XpM`SA@mS1Dk>Mz}zrZ5XXM_Xu{R3L{5ic zV5+kG1hC8ai-Fdx97q8>eCD|c)aiR8a6pxm2C9M>XwdkK#?`>Q91MH}PMh&Vv+I@e zl^b6#knb1(C&kDbU=Oemc&QrS3OoUJi-Dwey;OA#@PAXkFHmy3^*$U2DJfcd~`U`w2iDBB#M1(*Rm z62<+d?aBa;CGGdr3lv#B7>}N?1*q^~#|2oD#n`v8^n_kk5h3n`ZOL+}T9-=7>vDM| zN$)VKX|3M^i36ZUXZ*z{UJWeK{{p}Jq%95r_qZy}AC$3L%8BrD5||#R_YbhXe{NLs VQV<7eo}vH%002ovPDHLkV1j0la25an diff --git a/companion/src/images/originals/mhotar icons/read_eeprom_v2.png b/companion/src/images/originals/mhotar icons/read_eeprom_v2.png index bfd9f256a5867ea05516652cfa94e3ebf3e133d0..bf308e36eff416eb6cbc460c8f0bd37b96bb89d3 100644 GIT binary patch delta 626 zcmV-&0*(Eu2fGE3RDTZ#JH#{gYXATONJ&INR9M5smoaNqF%-vtxxGH^t0={`X>p31@lJR~h5@z6L zAY@v+(c*~?IFQ|{0>&SDcwj7=TmUY?hQKueb_|?Kp9QW8hzSo@w9u^woaCfo?cwaP z$Lk?*loTV~nSX|=E5+H{2$ynMNA(}7tQlU}w0%B!5 zsI?o=P2g2Y6;xKu5p^ z@DSJm-cT&L=U+C{-&>x41m>Ojx4@RnKaoeSsEBa^wBm6CdQQ5c$ld})thF+XZL zIv%J5vVkmt>k|i3q|4UaEn~I6EWpO`tMMI?3Kqt zhoBCq2I_%p!zgw)fKr97&qd2bMi)PT+93WMXqFa$OE z@f?_=`4Zp(a0_S_h*n^VWstBBsKllgC^E{hpTTBeuD&WRj${I9TGMT$aHhQd)K%)O z)M3On7q~jaJ>|e9v)6b5_yODtaag{_hw5}ed|C)>G(t)c2a13l9_bcSop8%5;8YT@ zJpw=&0Dq0Zt`HvRju5t$Ipu?(}Fff@jzTmzu;2^AFE8)>Q0&XTW5fc0${mr#c`kaYec#(AFqrB tjzt0B99F1jBqU}H@gE{*g#XUF{{d^X-x51vUpxQ+002ovPDHLkV1h=8iDdu) diff --git a/companion/src/images/originals/mhotar icons/read_flash_v2.png b/companion/src/images/originals/mhotar icons/read_flash_v2.png index bb0bf70d66e7a3e05e63730f8b1eea0e3b2e1e41..5464008940b07cc210703584043ba3458757d511 100644 GIT binary patch delta 740 zcmVibQTOhLg;EB84h#V=OA-7PkbiZ)e@5*l=%lEUs0Qlu z=!|xPjWIIIkLL?^0NCO1-WmsKVEf;IZWYjF0<93gLF;y)M}>7a>flW#@G&z#1$1hj zFmPTh&~L%}UMuA@T5oXnEhYW}tSr{>K@UIFaWexFv6T3T=BA7y{r1gny4 zf|EoJ(GFk$cn^FB9vO%A0Wh8jK;<}aB|tVsV_e@TkC_E7`xsQ2fV+W-z+&Jja5W&Y zeBUtIBEeT+n1(tZeVonFE zag5r4Wq(qx6m$SFpwT2#r~BiiP^<+usj~v~0!P(Bn}y~jH^Y^3*sU|}LGE?Man1|J zLfZ<=klr1q>a)Oo;IQQDfU`kp&hu#=X`g3SLgNtdMtj<(;3=ToNuUb21>BT=ZVTKu z*=wI0azJCF&%Va=Y?}o<6vVy8)pP zW{s>fs1do;0c-}Y31a(Z_+sYCJUt-kBs5|wi};VluwxkM!?I9{Q(`I>f%1ss5B>%S W&l==uz_*A10000(^eL`g(JR9M61ms?0xK@^6+qesyw>|*yKDk{t9 zLSTgyghX_qFc2{;dngE^r!Ei_1d&e$5)zb#T_mF-A|fi1Bqd*ppb|v1f=bJfG_1_j z-OImWG47-1gw;a}hMC!G_FDg}HUFBu;Xjh||I+z$pdWboFMpiZ10K+){;z^)kkcL@ zZ@55A1Tu$MlK?c!*$-g0p3gHN8iBZ>oE-&rJI`LpfCp3qJO4!JvVhOV(MmmErFjF; zse^TAxSj7Zj*HCr6wt15s@8hIg(&SFi55V*44=_F+ko(ZGCiNGd8v7KKCmLd=DAo8 z-zUA`%MxIY4u6+Dj6SHFK%2&0j;#u31NA`;3Xf6F-E`PCVj#ZNTn} z<-|$~uwGoR1>S2@VMVzf_-Oba2QW^EE(JJAF^Km8qkn-#Kpjx&T{J(fDYA#6PiDfZm_DhR5tp9l*!t?kMfPtJ#^S$Wu|oHQLrjsYx7-29Pl03 z4vZB2W*B|qAV$64D01CF0DSohJl1%E`YQE%fhh`qt6E(QK>W~`n)h3QLl!`}=+q@D zB0l$vdVje(lw*J-rS2OrA_@RwjLl?4dlE3pUvN`9dE!(%fLRLNHLWQ&y1W<|Q0|m$ z4>;~e;DP$fLb?_>Y_8uVT}JM?s02c41;9mMvUz4(5pW&YU~Poem&oBsHD7XoWkUPT zVZd^e{|p`AJ&IzwQr0W|7oboTv_jDwAgg7tLw_9iLtf+1?z9})@Kym+weGg6s@2~I zj!VB8IP0e%Yydpcjo0K*txw}n00lkZwTf7sO7Dk&8!<=exdAK&w)$UMZuM#kxFNgE zo#0AHpKa5%fh>hP-TWxg@Ex+#M&bjB3D{~ zZE3(2u^>Ley0jr`K$-(+z-1Ikeu`$5=94;Gg{e`L3c6gL=|AAE%DgLIERb*vb-YLY z8bzZm!n#Z`syS%KlEU8s;HPVW+Hgo>D2B!H;=0H1N#`#U?+$bCglVM!0000 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/companion/src/images/originals/mhotar icons/write_eeprom_file_v2.png b/companion/src/images/originals/mhotar icons/write_eeprom_file_v2.png index b66be1dafeb58f723763a2b34b5a5470ad60f89b..98dd27f06b1b74acda0a150a9f97e6abbed00bca 100644 GIT binary patch delta 609 zcmV-n0-pW$2C4;+RDTZ!H`Jbs0RR93H%UZ6R9M5^m%nQiK@`V7v&o)bqDeFtjW#yH z6e$EHAc7$N1?eo(SXx+H>HlD*|AB>tl|dV^R}cbetSka{#!E=l+?m@nZ{YEmncdk- z5d6Y&^W*K?@65dSopGluZ=1DP-#NyEjMYIRKiy0N>M5Tbr0 z73YlYrIc)10)M6Hr|>;t<4G*k1>uo$QUL>LKUO>NL)sI-NWFViwa=R~9{@8VUOM{< zOTata6DL1`3u=Bx1>+T2buOIx&ZzDPoary9cF)*#6tSLMKA~f#O$>yv*f2J1HY8(U z5Xt!ver0TXx2Y0tM^-c=k$k8E$z>2YQc~X6V&oE6X@4kqDsi$W{jMll(;e%JZ7E9G zy3F!eYFRl=WyDY8NPYyo0xn19SAloH8gSeDnxq}B0rwS|JHQuU9oPa^fQRb--vyok z_kh>H+i@#hTSvZEEB|Qpq5?L6XEOf)czF^>P>GUl$(eozJ^(KQ7f=bjk(GY~Zuz-_ z@!)``z*;h}3EY)JbV8Bbkl#7*XYs{njvlJC5g&4;JH3CL>PA z!*u|@z_x}H9clouE$MdxZotLZnUse$$%uhj(8m58pb2FLl+UWBD>yT0w!M$O#hB=e zfic`aB>0x&+b{vwVOJA?HO1zz0$qHA2Zmh9kpbi1Cw~nmaSc8n7KF!fdvd#nEAc4q z!Dkttz(`KLDr?}D?67;2p-RxFY!);rd)wLa;TvURCm5K->(hX^qhujSlWin-O$9q(Y*J}pjSB5 zB2}lGihs)wHR5w>SlN@jF4xRNek0G3yWp|;EX~$ zPD%`&j8kSq-}r#$V|~lcX?eyb+LYr`uHOn19o(IuT~dsd&(mT0#&VC*mbyQVtBd=; zD$;##((=-z-QV$du@%?jb-X)Q0ITt0@%>3e=6`S`cX2eNvX4^qz>}LN!b4mO$D7SeZNirN+M^UC-Vj^<--s t04UXUU6N-$Y-~2ajz{w2qG$eW>R+0~=%Lfz!XW?v002ovPDHLkV1ma0pQiu- diff --git a/companion/src/images/originals/mhotar icons/write_eeprom_v2.png b/companion/src/images/originals/mhotar icons/write_eeprom_v2.png index 1653ce0f02d3856ddc8801190b7fb5af98bc05b6..deeec3b488fb755145a381e4e7fa9cb898b5aef7 100644 GIT binary patch delta 640 zcmV-`0)PFW2gwDHRDTZ#AvsYG5dZ)JR!KxbR9M5smc4G&KoG}&<2VO6obn+~Aq^Bn zNn`s|sFs^e;+j~3se1%Jx>zfbr+ustORmv1}t z-*{6_Tw_z-A~*%a1b^l*yU{%W4g-Q$Yf7>p0BQNIpr$Uf9$_(|@KT<@Yg{)BS|k)y?CDpbJjWVJJM8oNe&kv(0Qy=snO4FOnA5!_ zeV_E8oOs8Ve1E1N44TVO7NwLM=B99zu&27#lFwJ$!ebO}M8 z*nqsez7SlBy!o;OutglY^dyY+z)FZWPgJ-M{AntumVXKuIgM@6b>nwnEijyzTP_Fo zbnQk0_@Tgm>hs8&l4`DOidEm^#`TUPT;cAu|17OBzYjcf`h!i^f!Dxo;D(WvckFx@ zfh`NnP2dx77uW$V1NW@!b{BX6Yy!`LmvnBq|CHJudShAs&U5X)0v_r49lhi_4KXf& zQY|ik4|%{_;E6RgnKci*P|Lpp*UVYQbR@t-U<3FJ+yZ`ELyNJ#0^S2xw35nTAE>Ho zK}1FgARcQ@n3Xn4bH-r9uoS~G!oXq_i+>RxjX6LKkOIB~pVhnN zKnYL`3}$Z|W|*1zz5tq!)w&%bYf-WrnR{mt!!V6S7jR!~@<){8N|pfnv54b;o;dvQTr0&@W9QS06SO&E4!aaVLpgjh<}pxkR)D;X4o z)4*hii&V+_T}n2f+_zd}70R_gaRind#()X(Lp|_X=6~;ijlj6tw=9T&1v~}b$~+&e zll7>4F$yf!{_sPD!qFra`0sGHAk;8wzB}NMB=AeJq#GK67r=V2Lo%rtj$+XZ?2$n6 zLJ{x?Xp=wSp^LXvc8gneQaCritOVzTEZqGfHhL7k`8%XT;mrj zVd5!}Kz~25Kg6cVJgk-qLtqiG))9mW;EUw@l;c)b4i>nh^bOGNMqt9F$w&j0G9L#< zWP^o{X2rYMWwPI}tSgiBY@F5bu+Jtdg#862YYE-T!DY2>gUHTAvP@*Sh+)cQBrt4o z38-uGY=B;=qT7{Bk722b-MTtPXR4k>8-|r0K7Wmh32kfx4l3PR;1uvoa{m+Hrb<$i zzyfi_SzxnU5S|YRC*AwiIzGwkz*iM7rNCbG{;IU+h+btriO6_V%sz>oPH9#j%1t#| zfhphJMJB)ZqIYhdCtfCKhMXx@SiDBLf>9UoWJCW5`UnZM1M|Fi7`Ogi$XpzMy2+O zS@wFMIcCkcJduc{c3_tydo5=kkOp>^0tjXY( z{x#x@LxYz){C_(wY>G*=7RVUK&ov$@6!w&qKY;I=cNl#Ya6t7wqfKgQqnW=C2^0zY z2VfX@3w#3}8eMY;j3+~UodB+c=%#5b)33r8dcfrXgBlZXFEANc0z3h(h9nmE%b{&j zd;xYiy2H|K4zN3#?~Zo%K@L^v>-`09jP8C!fVl-EFn=|lwUf+I^6628(VSu=P-f;s zz+=s)YwXgv8)z_2GTH})QlD%y=J;mmf&_!W6qDdj$@iHAdgW{=PXy|K5o0&#BGM`5 zX~0uDPe=560F2e6JOLA2*&Z?b#jgbpI*GKz)O@=xsu>Y)%ne{Yu+;aJaBi>$$EX`v zp~cmL&VTP}T1_%ddOuDH#YSL@ZdQN+;FxaE4xxF;&2Y6G_UVlKko&jdM1#P12ih)R zrqC&&-4SH8j@G4X}5x>fJ!HU8sHXiQ|q%OD02e7 z40s`jHMWLyx9z}e;DI0>Ft$E|{lHydu}+xp^I*?o5JIywu2X%}5q)Daq64mT8j_x{ zizw)Y+zMP1#I|SnZ05c$0x7HDKQG8qEbZ({|!BJ_~pg;cU<`o35^5^ Ze*+w04*qURA143+002ovPDHLkV1gx8U4Z}q delta 902 zcmV;119|+f2F(YMRDTU12QnS(=Kuf$T1iAfR9M5smtAPjVHC$d+y2%j8aC!NFNHCA zNewLuX`zUcm%Lq2O0Gz`P-^UIB#mOS%$N|8G_owj4Y_dRWkY$HXxV>l{B7*-=KIv~ z?Dzlwx7p^@)AMqk=bZC9=lP!V{NO)RQZLC30oQ;wpcPoB^?zjGy!sHZrZ+!sJn$2U z0xyC7K%M3-z?i=9@HikMrLKj6k$oBFvA_>0{|03LtH5j^zZ*t;1Twp-Y(KEwTYF>N zSp#hC4Yw_pyPTqVTA#1^3&pY>xYg6jw;9F7W_%22&^Swbqrll1a*pdviMM_bI0Bpj zGJ+1~O7Ka|SATi8__Wq1XQ@r_mZOls$t}LM52!5{qK%87KKSu z7}xCr1_9G0yfPrRiQ49%sVI_)I%|k?eW^KL5A3xDlnGAFf+E6myP&sLmvS(WrqF%YLn9FlHZs%Y?cu;c zx8b_J)vW$l=j_JR<-;)K%w|6fKx66A!ERORlHgcYQF=X@KMvhRT6Wl z_p?_KohQqItH2CkwR>s#*{e37LPktY2&yIf^~Am}7dM%+&Vym#HZVFPh(@a~ zP=9=D;=CJkVkD>}V5sM@hFFQnr%%8J;G$5F5@TOZf*g<&?@uhA2igR)O3f$hdDafR z5~PBP%QKbUDy4a!nyewAF68l6^$X>VFERGz3sH4({ymGjV}J|SRJER<)UNy;rwHp& cdXB<>06kd^zzPa{vGU diff --git a/companion/src/images/read_eeprom.png b/companion/src/images/read_eeprom.png index bfd9f256a5867ea05516652cfa94e3ebf3e133d0..bf308e36eff416eb6cbc460c8f0bd37b96bb89d3 100644 GIT binary patch delta 626 zcmV-&0*(Eu2fGE3RDTZ#JH#{gYXATONJ&INR9M5smoaNqF%-vtxxGH^t0={`X>p31@lJR~h5@z6L zAY@v+(c*~?IFQ|{0>&SDcwj7=TmUY?hQKueb_|?Kp9QW8hzSo@w9u^woaCfo?cwaP z$Lk?*loTV~nSX|=E5+H{2$ynMNA(}7tQlU}w0%B!5 zsI?o=P2g2Y6;xKu5p^ z@DSJm-cT&L=U+C{-&>x41m>Ojx4@RnKaoeSsEBa^wBm6CdQQ5c$ld})thF+XZL zIv%J5vVkmt>k|i3q|4UaEn~I6EWpO`tMMI?3Kqt zhoBCq2I_%p!zgw)fKr97&qd2bMi)PT+93WMXqFa$OE z@f?_=`4Zp(a0_S_h*n^VWstBBsKllgC^E{hpTTBeuD&WRj${I9TGMT$aHhQd)K%)O z)M3On7q~jaJ>|e9v)6b5_yODtaag{_hw5}ed|C)>G(t)c2a13l9_bcSop8%5;8YT@ zJpw=&0Dq0Zt`HvRju5t$Ipu?(}Fff@jzTmzu;2^AFE8)>Q0&XTW5fc0${mr#c`kaYec#(AFqrB tjzt0B99F1jBqU}H@gE{*g#XUF{{d^X-x51vUpxQ+002ovPDHLkV1h=8iDdu) diff --git a/companion/src/images/read_eeprom_file.png b/companion/src/images/read_eeprom_file.png index 57a21dda1a12da36d21a1cfc1c2270949873b652..5d48a1c34da3e5dfd9ef1774ef52aa9503a87a09 100644 GIT binary patch delta 596 zcmV-a0;~Pr2Au_vRDTaEE8w+_p#T5^DoI2^R9M61m%mRGK@`V7yK*QPIlwcDjSYdq zf&@ZBNK6QSft>}7C55$>{tr~}A5c(OX{0gsl8}(lQ;^W{L*%%VA3HQ}lIQbg_h$D9 z1uxlT=DjyF@8@@B;U1Ce#7y#p5tKw6{*P{2;m~H0cLABpGk@S=fj5toyk&G!_fK;cIbg!@N0m%}u>j;k2lktJ&CK)Y!02cL>k4Nyzh+Z# zZSr*?;}0qVhkr7D0AyB!KsGqJYc^Oy- zo(JT!z<1y+Fz5H`D~a!~fJJ4@Jg^Nc0lUC!;5~39^54KmU;)?wzE-(dTnDJ#RG$Ad zc;SF=z-N)a1J-(x0w+keD>>Z)egLb|G0x!07x8=#nDMeIuVUXBpMXhV2Y3UV$vuJc z-T}XWDNO;ptmr)uLn~4f&fvT^a8h1U8f$v;U!V&z517V#{d?uqrBjxs{a#541A0m+ icTCAG?%mC+xp@O}a<=fWt3~|)0000OdbRDTT}Cu5t0kpKV!>q$gGR9M61ms?0wQ51&1GowRF7nFn~dXU0Q ziwL3~gur?bs)wkg1StxNZuAsNk`M?65p<&qUFb?hMf4;_P*6}kbb)Z7#E_7p3q_h_ zUTS*z4=jdr&YW}ftp&rGz1Eq%|NZZ^{=EkNBfA(BtOYVLKYtfOEdCn!3v~Luuw9ci z15H4?&tmPsHJ}F=0FKLlBw+Eh-ua_vXAppt#!Wr|$`!u^eAV}3iZy!7`$n;0pgssh zSOArZUoijxZY#b@<9y(qd_%xY`DYstT|gploDys;Fem_bff2K)wYNahIua2V8qjmZ zBQ~U+MY1RWGJn8(JvYT*X`h$V?+Bg&2XpM`SA@mS1Dk>Mz}zrZ5XXM_Xu{R3L{5ic zV5+kG1hC8ai-Fdx97q8>eCD|c)aiR8a6pxm2C9M>XwdkK#?`>Q91MH}PMh&Vv+I@e zl^b6#knb1(C&kDbU=Oemc&QrS3OoUJi-Dwey;OA#@PAXkFHmy3^*$U2DJfcd~`U`w2iDBB#M1(*Rm z62<+d?aBa;CGGdr3lv#B7>}N?1*q^~#|2oD#n`v8^n_kk5h3n`ZOL+}T9-=7>vDM| zN$)VKX|3M^i36ZUXZ*z{UJWeK{{p}Jq%95r_qZy}AC$3L%8BrD5||#R_YbhXe{NLs VQV<7eo}vH%002ovPDHLkV1j0la25an diff --git a/companion/src/images/read_flash.png b/companion/src/images/read_flash.png index bb0bf70d66e7a3e05e63730f8b1eea0e3b2e1e41..5464008940b07cc210703584043ba3458757d511 100644 GIT binary patch delta 740 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 diff --git a/companion/src/images/write_flash.png b/companion/src/images/write_flash.png index a4c3fec60e64085aa032731aabf8d7de5724ac8b..e5943a5092844733c33283a3b8ac69e1ea7902a0 100644 GIT binary patch delta 743 zcmVJMJB)ZqIYhdCtfCKhMXx@SiDBLf>9UoWJCW5`UnZM1M|Fi7`Ogi$XpzMy2+O zS@wFMIcCkcJduc{c3_tydo5=kkOp>^0tjXY( z{x#x@LxYz){C_(wY>G*=7RVUK&ov$@6!w&qKY;I=cNl#Ya6t7wqfKgQqnW=C2^0zY z2VfX@3w#3}8eMY;j3+~UodB+c=%#5b)33r8dcfrXgBlZXFEANc0z3h(h9nmE%b{&j zd;xYiy2H|K4zN3#?~Zo%K@L^v>-`09jP8C!fVl-EFn=|lwUf+I^6628(VSu=P-f;s zz+=s)YwXgv8)z_2GTH})QlD%y=J;mmf&_!W6qDdj$@iHAdgW{=PXy|K5o0&#BGM`5 zX~0uDPe=560F2e6JOLA2*&Z?b#jgbpI*GKz)O@=xsu>Y)%ne{Yu+;aJaBi>$$EX`v zp~cmL&VTP}T1_%ddOuDH#YSL@ZdQN+;FxaE4xxF;&2Y6G_UVlKko&jdM1#P12ih)R zrqC&&-4SH8j@G4X}5x>fJ!HU8sHXiQ|q%OD02e7 z40s`jHMWLyx9z}e;DI0>Ft$E|{lHydu}+xp^I*?o5JIywu2X%}5q)Daq64mT8j_x{ zizw)Y+zMP1#I|SnZ05c$0x7HDKQG8qEbZ({|!BJ_~pg;cU<`o35^5^ Ze*+w04*qURA143+002ovPDHLkV1gx8U4Z}q delta 902 zcmV;119|+f2F(YMRDTU12QnS(=Kuf$T1iAfR9M5smtAPjVHC$d+y2%j8aC!NFNHCA zNewLuX`zUcm%Lq2O0Gz`P-^UIB#mOS%$N|8G_owj4Y_dRWkY$HXxV>l{B7*-=KIv~ z?Dzlwx7p^@)AMqk=bZC9=lP!V{NO)RQZLC30oQ;wpcPoB^?zjGy!sHZrZ+!sJn$2U z0xyC7K%M3-z?i=9@HikMrLKj6k$oBFvA_>0{|03LtH5j^zZ*t;1Twp-Y(KEwTYF>N zSp#hC4Yw_pyPTqVTA#1^3&pY>xYg6jw;9F7W_%22&^Swbqrll1a*pdviMM_bI0Bpj zGJ+1~O7Ka|SATi8__Wq1XQ@r_mZOls$t}LM52!5{qK%87KKSu z7}xCr1_9G0yfPrRiQ49%sVI_)I%|k?eW^KL5A3xDlnGAFf+E6myP&sLmvS(WrqF%YLn9FlHZs%Y?cu;c zx8b_J)vW$l=j_JR<-;)K%w|6fKx66A!ERORlHgcYQF=X@KMvhRT6Wl z_p?_KohQqItH2CkwR>s#*{e37LPktY2&yIf^~Am}7dM%+&Vym#HZVFPh(@a~ zP=9=D;=CJkVkD>}V5sM@hFFQnr%%8J;G$5F5@TOZf*g<&?@uhA2igR)O3f$hdDafR z5~PBP%QKbUDy4a!nyewAF68l6^$X>VFERGz3sH4({ymGjV}J|SRJER<)UNy;rwHp& cdXB<>06kd^zzPa{vGU From b30fdf841d9ab82813e5d9810334fe1dcdb4c844 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Fri, 17 Jan 2014 18:24:54 +0100 Subject: [PATCH 176/308] Update DONATIONS.txt --- DONATIONS.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/DONATIONS.txt b/DONATIONS.txt index 4dca79d41..4c94a27e6 100644 --- a/DONATIONS.txt +++ b/DONATIONS.txt @@ -292,3 +292,4 @@ Ulach Green Lluis Bullich Rañe Steffen Rohr Eric Jacquin +Harvest Lane From 9ce093dfd0314f6562d5f8f98b47e255f5c010bd Mon Sep 17 00:00:00 2001 From: Kjell Kernen Date: Fri, 17 Jan 2014 18:53:20 +0100 Subject: [PATCH 177/308] Fixes #532 --- .../mhotar icons/read_eeprom_file_v2.png | Bin 669 -> 670 bytes .../originals/mhotar icons/read_eeprom_v2.png | Bin 699 -> 699 bytes .../mhotar icons/write_eeprom_file_v2.png | Bin 682 -> 676 bytes companion/src/images/read_eeprom.png | Bin 699 -> 699 bytes companion/src/images/read_eeprom_file.png | Bin 669 -> 670 bytes companion/src/images/write_eeprom_file.png | Bin 682 -> 676 bytes 6 files changed, 0 insertions(+), 0 deletions(-) diff --git a/companion/src/images/originals/mhotar icons/read_eeprom_file_v2.png b/companion/src/images/originals/mhotar icons/read_eeprom_file_v2.png index 5d48a1c34da3e5dfd9ef1774ef52aa9503a87a09..fd6479993a2015c399c30438e8e2217f4cbb443c 100644 GIT binary patch delta 597 zcmV-b0;>I;1)c?vRDTgEBvgca$N&HWD@jB_R9M61mpe;bQ4q&}cimmHE77>F#Msy@ zu}Bdx2qFl3o-=djJ^ynq{72;CHls9V07U`D@5z=580}<5C&pY_CV#90!x_;$Qv6FJYYhzn zJ+*!U+*sMr3|wWT-z%;vV}9KR8df&cfw7cS|559%?D^+f_Rr0JumhdI>||0YaEz`C zOpGh)fNjoZ4&x7;DCeB(B9S|-zm)Qk1D>1xhT`d`ALF&Oa(G2mv#ywR8vQadaSjff z{faHYt*KX6-hbbz3>+l@&9r)d42&vWb&>br3MYaM=}7C55$>{tr~}A5c(OX{0gsl8}(lQ;^W{L*%%VA3HQ}lIQbg_h$D9 z1uxlT=DjyF@8@@B;U1Ce#7y#p5tKw6{*P{2;m~H0cLABpGk@S=fj5toyk&G!_fK;cIbg!@N0m%}u>j;k2lktJ&CK)Y!02cL>k4Nyzh+Z# zZSr*?;}0qVhkr7D0AyB!KsGqJYc^Oy- zo(JT!z<1y+Fz5H`D~a!~fJJ4@Jg^Nc0lUC!;5~39^54KmU;)?wzE-(dTnDJ#RG$Ad zc;SF=z-N)a1J-(x0w+keD>>Z)egLb|G0x!07x8=#nDMeIuVUXBpMXhV2Y3UV$vuJc z-T}XWDNO;ptmr)uLn~4f&fvT^a8h1U8f$v;U!V&z517V#{d?uqrBjxs{a#541A0m+ icTCAG?%mC+xp@O}a<=fWt3~|)0000?q diff --git a/companion/src/images/originals/mhotar icons/write_eeprom_file_v2.png b/companion/src/images/originals/mhotar icons/write_eeprom_file_v2.png index 98dd27f06b1b74acda0a150a9f97e6abbed00bca..925fecf47f49840b4a4701dac6c0116c17f64e59 100644 GIT binary patch delta 603 zcmV-h0;K(_1*8R#RDTgECc26pBk?t8Pd|2OYHGw2QvG)93W zC#+*?{=(S$NSt~6wShs1KoS0U#(X520h=c98zYJsOa;ah<9HCT`D+Jb37khprx1HU(+bu|eD>Xh669FrxZh`%%A=5D*p8$q74O=w|Pv4UX(P?N2Etv6p5rwE!8ipcZ znHGHr;4mi*oqvx;kqEDplMJ|&`*jt8BPSrehrmNqu*Q_HAu#F5zSI(M4o`tQz)xUW z%^$0f&dI7{k*Mzsi?$#!&kxjn*Vwfbv974zx6Qet3u(ZI*^=5oI-l3pZoy?B=Y9AU z5%zZ3N_Y@h(IjwJ%I!r2NiA+y%KN&vBss0rC!S24oPWx5TN+f^i1o#`3EZ!9%yO8o zcyj7Q=%=)j-vA$gnZW!C@CA4QtU6x}s^JmvT#;D=_JCJF4|oi`R{j43*Z`gZAA!$x zPrCLTxuaJ8&D4tw*ao&_{w47KI<_E_O4gG--37h^?<8Yv_xmI({{bw!xs-ZHfK6Z# z*ax0U2UHwUB)8@FJFq0hZdm0+6vA84L}u!|Be-bV??Ih2VMvg9g=zjK{%*OZQx#8~ pucQKjYemW}Be_A}-4ZtE{{YN?-{K;dblU&`002ovPDHLkV1gq98d?AV delta 609 zcmV-n0-pV(1*!#*RDTZ!H`Jbs0RR93H%UZ6R9M5^m%nQiK@`V7v&o)bqDeFtjW#yH z6e$EHAc7$N1?eo(SXx+H>HlD*|AB>tl|dV^R}cbetSka{#!E=l+?m@nZ{YEmncdk- z5d6Y&^W*K?@65dSopGluZ=1DP-#NyEjMYIRKiy0N>M5Tbr0 z73YlYrIc)10)M6Hr|>;t<4G*k1>uo$QUL>LKUO>NL)sI-NWFViwa=R~9{@8VUOM{< zOTata6DL1`3u=Bx1>+T2buOIx&ZzDPoary9cF)*#6tSLMKA~f#O$>yv*f2J1HY8(U z5Xt!ver0TXx2Y0tM^-c=k$k8E$z>2YQc~X6V&oE6X@4kqDsi$W{jMll(;e%JZ7E9G zy3F!eYFRl=WyDY8NPYyo0xn19SAloH8gSeDnxq}B0rwS|JHQuU9oPa^fQRb--vyok z_kh>H+i@#hTSvZEEB|Qpq5?L6XEOf)czF^>P>GUl$(eozJ^(KQ7f=bjk(GY~Zuz-_ z@!)``z*;h}3EY)JbV8Bbkl#7?q diff --git a/companion/src/images/read_eeprom_file.png b/companion/src/images/read_eeprom_file.png index 5d48a1c34da3e5dfd9ef1774ef52aa9503a87a09..fd6479993a2015c399c30438e8e2217f4cbb443c 100644 GIT binary patch delta 597 zcmV-b0;>I;1)c?vRDTgEBvgca$N&HWD@jB_R9M61mpe;bQ4q&}cimmHE77>F#Msy@ zu}Bdx2qFl3o-=djJ^ynq{72;CHls9V07U`D@5z=580}<5C&pY_CV#90!x_;$Qv6FJYYhzn zJ+*!U+*sMr3|wWT-z%;vV}9KR8df&cfw7cS|559%?D^+f_Rr0JumhdI>||0YaEz`C zOpGh)fNjoZ4&x7;DCeB(B9S|-zm)Qk1D>1xhT`d`ALF&Oa(G2mv#ywR8vQadaSjff z{faHYt*KX6-hbbz3>+l@&9r)d42&vWb&>br3MYaM=}7C55$>{tr~}A5c(OX{0gsl8}(lQ;^W{L*%%VA3HQ}lIQbg_h$D9 z1uxlT=DjyF@8@@B;U1Ce#7y#p5tKw6{*P{2;m~H0cLABpGk@S=fj5toyk&G!_fK;cIbg!@N0m%}u>j;k2lktJ&CK)Y!02cL>k4Nyzh+Z# zZSr*?;}0qVhkr7D0AyB!KsGqJYc^Oy- zo(JT!z<1y+Fz5H`D~a!~fJJ4@Jg^Nc0lUC!;5~39^54KmU;)?wzE-(dTnDJ#RG$Ad zc;SF=z-N)a1J-(x0w+keD>>Z)egLb|G0x!07x8=#nDMeIuVUXBpMXhV2Y3UV$vuJc z-T}XWDNO;ptmr)uLn~4f&fvT^a8h1U8f$v;U!V&z517V#{d?uqrBjxs{a#541A0m+ icTCAG?%mC+xp@O}a<=fWt3~|)0000Bk?t8Pd|2OYHGw2QvG)93W zC#+*?{=(S$NSt~6wShs1KoS0U#(X520h=c98zYJsOa;ah<9HCT`D+Jb37khprx1HU(+bu|eD>Xh669FrxZh`%%A=5D*p8$q74O=w|Pv4UX(P?N2Etv6p5rwE!8ipcZ znHGHr;4mi*oqvx;kqEDplMJ|&`*jt8BPSrehrmNqu*Q_HAu#F5zSI(M4o`tQz)xUW z%^$0f&dI7{k*Mzsi?$#!&kxjn*Vwfbv974zx6Qet3u(ZI*^=5oI-l3pZoy?B=Y9AU z5%zZ3N_Y@h(IjwJ%I!r2NiA+y%KN&vBss0rC!S24oPWx5TN+f^i1o#`3EZ!9%yO8o zcyj7Q=%=)j-vA$gnZW!C@CA4QtU6x}s^JmvT#;D=_JCJF4|oi`R{j43*Z`gZAA!$x zPrCLTxuaJ8&D4tw*ao&_{w47KI<_E_O4gG--37h^?<8Yv_xmI({{bw!xs-ZHfK6Z# z*ax0U2UHwUB)8@FJFq0hZdm0+6vA84L}u!|Be-bV??Ih2VMvg9g=zjK{%*OZQx#8~ pucQKjYemW}Be_A}-4ZtE{{YN?-{K;dblU&`002ovPDHLkV1gq98d?AV delta 609 zcmV-n0-pV(1*!#*RDTZ!H`Jbs0RR93H%UZ6R9M5^m%nQiK@`V7v&o)bqDeFtjW#yH z6e$EHAc7$N1?eo(SXx+H>HlD*|AB>tl|dV^R}cbetSka{#!E=l+?m@nZ{YEmncdk- z5d6Y&^W*K?@65dSopGluZ=1DP-#NyEjMYIRKiy0N>M5Tbr0 z73YlYrIc)10)M6Hr|>;t<4G*k1>uo$QUL>LKUO>NL)sI-NWFViwa=R~9{@8VUOM{< zOTata6DL1`3u=Bx1>+T2buOIx&ZzDPoary9cF)*#6tSLMKA~f#O$>yv*f2J1HY8(U z5Xt!ver0TXx2Y0tM^-c=k$k8E$z>2YQc~X6V&oE6X@4kqDsi$W{jMll(;e%JZ7E9G zy3F!eYFRl=WyDY8NPYyo0xn19SAloH8gSeDnxq}B0rwS|JHQuU9oPa^fQRb--vyok z_kh>H+i@#hTSvZEEB|Qpq5?L6XEOf)czF^>P>GUl$(eozJ^(KQ7f=bjk(GY~Zuz-_ z@!)``z*;h}3EY)JbV8Bbkl#7 Date: Sat, 18 Jan 2014 07:49:05 +0100 Subject: [PATCH 178/308] Issue #555 fixed (core in customizetxdialog) --- companion/src/customizesplashdialog.cpp | 69 +++++++++++++------------ 1 file changed, 35 insertions(+), 34 deletions(-) diff --git a/companion/src/customizesplashdialog.cpp b/companion/src/customizesplashdialog.cpp index 01ef16b8f..7912b3ec5 100644 --- a/companion/src/customizesplashdialog.cpp +++ b/companion/src/customizesplashdialog.cpp @@ -21,43 +21,44 @@ customizeSplashDialog::~customizeSplashDialog() { void customizeSplashDialog::on_FlashLoadButton_clicked() { - QString fileName; QSettings settings("companion", "companion"); - ui->ImageLoadButton->setDisabled(true); - ui->libraryButton->setDisabled(true); - ui->SaveFlashButton->setDisabled(true); - ui->SaveImageButton->setDisabled(true); - ui->ImageFileName->clear(); - ui->imageLabel->clear(); - ui->HowToLabel->clear(); - ui->HowToLabel->setStyleSheet("background:rgb(255, 255, 0)"); - fileName = QFileDialog::getOpenFileName(this, tr("Open"), settings.value("lastFlashDir").toString(), FLASH_FILES_FILTER); - QFile file(fileName); - if (!file.exists()) { - ui->FWFileName->clear(); - ui->HowToLabel->append("
" + tr("Select an original firmware file") + "
"); - return; - } - if (fileName.isEmpty()) { - ui->FWFileName->clear(); - ui->HowToLabel->append("
" + tr("Select an original firmware file") + "
"); - return; - } + QString fileName = QFileDialog::getOpenFileName(this, tr("Open"), settings.value("lastFlashDir").toString(), FLASH_FILES_FILTER); + if (!fileName.isEmpty()) { + ui->ImageLoadButton->setDisabled(true); + ui->libraryButton->setDisabled(true); + ui->SaveFlashButton->setDisabled(true); + ui->SaveImageButton->setDisabled(true); + ui->ImageFileName->clear(); + ui->imageLabel->clear(); + ui->HowToLabel->clear(); + ui->HowToLabel->setStyleSheet("background:rgb(255, 255, 0)"); + QFile file(fileName); + if (!file.exists()) { + ui->FWFileName->clear(); + ui->HowToLabel->append("
" + tr("Select an original firmware file") + "
"); + return; + } + if (fileName.isEmpty()) { + ui->FWFileName->clear(); + ui->HowToLabel->append("
" + tr("Select an original firmware file") + "
"); + return; + } - ui->FWFileName->setText(fileName); - FlashInterface flash(fileName); - if (flash.hasSplash()) { - ui->HowToLabel->append("
" + tr("Select an image to customize your splash
or save actual firmware splash") + "
"); - ui->ImageLoadButton->setEnabled(true); - ui->libraryButton->setEnabled(true); - ui->SaveImageButton->setEnabled(true); - ui->imageLabel->setPixmap(QPixmap::fromImage(flash.getSplash())); - ui->imageLabel->setFixedSize(flash.getSplashWidth()*2,flash.getSplashHeight()*2); - } else { - QMessageBox::information(this, tr("Error"), tr("Could not find bitmap to replace in file")); - return; + ui->FWFileName->setText(fileName); + FlashInterface flash(fileName); + if (flash.hasSplash()) { + ui->HowToLabel->append("
" + tr("Select an image to customize your splash
or save actual firmware splash") + "
"); + ui->ImageLoadButton->setEnabled(true); + ui->libraryButton->setEnabled(true); + ui->SaveImageButton->setEnabled(true); + ui->imageLabel->setPixmap(QPixmap::fromImage(flash.getSplash())); + ui->imageLabel->setFixedSize(flash.getSplashWidth()*2,flash.getSplashHeight()*2); + } else { + QMessageBox::information(this, tr("Error"), tr("Could not find bitmap to replace in file")); + return; + } + settings.setValue("lastFlashDir", QFileInfo(fileName).dir().absolutePath()); } - settings.setValue("lastFlashDir", QFileInfo(fileName).dir().absolutePath()); } void customizeSplashDialog::on_ImageLoadButton_clicked() { From 0c0662711e7cd8443d3802edd022a7025468b73b Mon Sep 17 00:00:00 2001 From: Romolo Manfredini Date: Sun, 19 Jan 2014 08:10:28 +0100 Subject: [PATCH 179/308] Revert to old renderer --- companion/src/CMakeLists.txt | 1 - companion/src/contributorsdialog.cpp | 12 ++++++------ companion/src/contributorsdialog.ui | 19 +++---------------- 3 files changed, 9 insertions(+), 23 deletions(-) diff --git a/companion/src/CMakeLists.txt b/companion/src/CMakeLists.txt index 593443103..6769e9337 100644 --- a/companion/src/CMakeLists.txt +++ b/companion/src/CMakeLists.txt @@ -39,7 +39,6 @@ ENDIF() FIND_PACKAGE( Qt4 REQUIRED ) SET( QT_USE_QTNETWORK True ) SET( QT_USE_QTXML True ) -SET( QT_USE_QTWEBKIT True ) INCLUDE( ${QT_USE_FILE} ) IF ( APPLE ) diff --git a/companion/src/contributorsdialog.cpp b/companion/src/contributorsdialog.cpp index 5a1cb0e1e..598076771 100644 --- a/companion/src/contributorsdialog.cpp +++ b/companion/src/contributorsdialog.cpp @@ -70,8 +70,8 @@ contributorsDialog::contributorsDialog(QWidget *parent, int contest, QString rnu str.append("
"+tr("Thank you all !!!")+"
"); str.append(""); - ui->webBrowser->setHtml(str,QUrl("")); - ui->webBrowser->scroll(0,0); + ui->textEditor->setHtml(str); + ui->textEditor->scroll(0,0); this->setWindowTitle(tr("Contributors")); } break; @@ -79,9 +79,9 @@ contributorsDialog::contributorsDialog(QWidget *parent, int contest, QString rnu case 1:{ QFile file(":/releasenotes.txt"); if(file.open( QIODevice::ReadOnly | QIODevice::Text ) ) { - ui->webBrowser->setHtml(file.readAll(),QUrl("")); + ui->textEditor->setHtml(file.readAll()); } - ui->webBrowser->scroll(0,0); + ui->textEditor->scroll(0,0); this->setWindowTitle(tr("Companion9x Release Notes")); } break; @@ -104,7 +104,7 @@ contributorsDialog::contributorsDialog(QWidget *parent, int contest, QString rnu void contributorsDialog::showEvent ( QShowEvent * ) { - ui->webBrowser->scroll(0,0); + ui->textEditor->scroll(0,0); } contributorsDialog::~contributorsDialog() @@ -114,7 +114,7 @@ contributorsDialog::~contributorsDialog() void contributorsDialog::replyFinished(QNetworkReply * reply) { - ui->webBrowser->setHtml(reply->readAll(),QUrl("")); + ui->textEditor->setHtml(reply->readAll()); } void contributorsDialog::forceClose() { diff --git a/companion/src/contributorsdialog.ui b/companion/src/contributorsdialog.ui index 28fc29060..f50e0fe0d 100644 --- a/companion/src/contributorsdialog.ui +++ b/companion/src/contributorsdialog.ui @@ -6,8 +6,8 @@ 0 0 - 926 - 333 + 788 + 528 @@ -19,23 +19,10 @@ - - - - about:blank - - - + - - - QWebView - QWidget -
QtWebKit/QWebView
-
-
From f0e7accae8e48abd52758dad74a1760a373ae1d3 Mon Sep 17 00:00:00 2001 From: Romolo Manfredini Date: Sun, 19 Jan 2014 10:01:48 +0100 Subject: [PATCH 180/308] Properly reset windows geometry and state --- companion/src/mainwindow.cpp | 33 ++++++++------------------- companion/src/mainwindow.h | 1 - companion/src/modeledit/modeledit.cpp | 8 +++++++ companion/src/modeledit/modeledit.h | 3 +++ 4 files changed, 21 insertions(+), 24 deletions(-) diff --git a/companion/src/mainwindow.cpp b/companion/src/mainwindow.cpp index 6dccb36f8..948e2a8e7 100644 --- a/companion/src/mainwindow.cpp +++ b/companion/src/mainwindow.cpp @@ -94,6 +94,8 @@ downloadDialog_forWait(NULL) this, SLOT(setActiveSubWindow(QWidget*))); MaxRecentFiles=MAX_RECENT; + QSettings settings("companion", "companion"); + restoreGeometry(settings.value("mainWindowGeometry").toByteArray()); createActions(); createMenus(); createToolBars(); @@ -115,7 +117,6 @@ downloadDialog_forWait(NULL) // give time to the splash to disappear and main window to open before starting updates int updateDelay = 1000; - QSettings settings("companion", "companion"); bool showSplash = settings.value("show_splash", true).toBool(); if (showSplash) updateDelay += (SPLASH_TIME*1000); @@ -609,11 +610,13 @@ void MainWindow::reply1Finished(QNetworkReply * reply) void MainWindow::closeEvent(QCloseEvent *event) { + QSettings settings("companion", "companion"); + settings.setValue("mainWindowGeometry", saveGeometry()); + settings.setValue("mainWindowState", saveState()); mdiArea->closeAllSubWindows(); if (mdiArea->currentSubWindow()) { event->ignore(); } else { - writeSettings(); event->accept(); } } @@ -1876,6 +1879,7 @@ QMenu *MainWindow::createProfilesMenu() void MainWindow::createToolBars() { fileToolBar = addToolBar(tr("File")); + fileToolBar->setObjectName("File"); fileToolBar->addAction(newAct); fileToolBar->addAction(openAct); QToolButton * recentToolButton = new QToolButton; @@ -1913,6 +1917,7 @@ void MainWindow::createToolBars() fileToolBar->addAction(compareAct); editToolBar = addToolBar(tr("Edit")); + editToolBar->setObjectName("Edit"); editToolBar->addAction(cutAct); editToolBar->addAction(copyAct); editToolBar->addAction(pasteAct); @@ -1920,6 +1925,7 @@ void MainWindow::createToolBars() burnToolBar = new QToolBar(tr("Write")); addToolBar( Qt::LeftToolBarArea, burnToolBar ); + burnToolBar->setObjectName("Write"); burnToolBar->addAction(burnToAct); burnToolBar->addAction(burnFromAct); burnToolBar->addSeparator(); @@ -1932,6 +1938,7 @@ void MainWindow::createToolBars() burnToolBar->addAction(burnConfigAct); helpToolBar = addToolBar(tr("Help")); + helpToolBar->setObjectName("Help"); helpToolBar->addAction(checkForUpdatesAct); helpToolBar->addAction(aboutAct); } @@ -1944,10 +1951,7 @@ void MainWindow::createStatusBar() void MainWindow::readSettings() { QSettings settings("companion", "companion"); - bool maximized = settings.value("maximized", false).toBool(); - QPoint pos = settings.value("pos", QPoint(200, 200)).toPoint(); - QSize size = settings.value("size", QSize(400, 400)).toSize(); - + restoreState(settings.value("mainWindowState").toByteArray()); checkCompanion9x = settings.value("startup_check_companion9x", true).toBool(); checkFW = settings.value("startup_check_fw", true).toBool(); MaxRecentFiles =settings.value("history_size",10).toInt(); @@ -1960,23 +1964,6 @@ void MainWindow::readSettings() settings.endGroup(); settings.endGroup(); } - if (maximized) { - setWindowState(Qt::WindowMaximized); - } else { - move(pos); - resize(size); - } -} - -void MainWindow::writeSettings() -{ - QSettings settings("companion", "companion"); - - settings.setValue("maximized", isMaximized()); - if(!isMaximized()) { - settings.setValue("pos", pos()); - settings.setValue("size", size()); - } } MdiChild *MainWindow::activeMdiChild() diff --git a/companion/src/mainwindow.h b/companion/src/mainwindow.h index 6d203bf1e..300bac507 100644 --- a/companion/src/mainwindow.h +++ b/companion/src/mainwindow.h @@ -134,7 +134,6 @@ private: void createToolBars(); void createStatusBar(); void readSettings(); - void writeSettings(); void updateRecentFileActions(); void updateProfilesActions(); int getFileType(const QString &fullFileName); diff --git a/companion/src/modeledit/modeledit.cpp b/companion/src/modeledit/modeledit.cpp index fcdc68108..d5417e8ea 100644 --- a/companion/src/modeledit/modeledit.cpp +++ b/companion/src/modeledit/modeledit.cpp @@ -20,6 +20,8 @@ ModelEdit::ModelEdit(RadioData & radioData, int modelId, bool openWizard, bool i generalSettings(generalSettings) { ui->setupUi(this); + QSettings settings("companion", "companion"); + restoreGeometry(settings.value("modelEditGeometry").toByteArray()); addTab(new Setup(this, model), tr("Setup")); addTab(new HeliPanel(this, model), tr("Heli")); addTab(new FlightModes(this, model, radioData.generalSettings), tr("Flight Modes")); @@ -40,6 +42,12 @@ ModelEdit::~ModelEdit() delete ui; } +void ModelEdit::closeEvent(QCloseEvent *event) +{ + QSettings settings("companion", "companion"); + settings.setValue("modelEditGeometry", saveGeometry()); +} + class VerticalScrollArea : public QScrollArea { public: diff --git a/companion/src/modeledit/modeledit.h b/companion/src/modeledit/modeledit.h index 4208a7190..9450d90d4 100644 --- a/companion/src/modeledit/modeledit.h +++ b/companion/src/modeledit/modeledit.h @@ -15,6 +15,9 @@ class ModelEdit : public QDialog public: explicit ModelEdit(RadioData & radioData, int modelId , bool openWizard =false, bool inNew =false, QWidget *parent = 0); ~ModelEdit(); + + protected: + void closeEvent(QCloseEvent *event); signals: void modified(); From 57d3fe53bc0ef3e80454e1550db120253b716cab Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Sun, 19 Jan 2014 15:08:36 +0100 Subject: [PATCH 181/308] Update DONATIONS.txt --- DONATIONS.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/DONATIONS.txt b/DONATIONS.txt index 4c94a27e6..de02241b1 100644 --- a/DONATIONS.txt +++ b/DONATIONS.txt @@ -293,3 +293,5 @@ Lluis Bullich Rañe Steffen Rohr Eric Jacquin Harvest Lane +Ville Kuvaja +DK-System From 0326a3d27f9cc193aab81e02d71f8e09367f72aa Mon Sep 17 00:00:00 2001 From: Dvogonen Date: Sun, 19 Jan 2014 15:18:08 +0100 Subject: [PATCH 182/308] Creating logo folder and a proposed new logo. Only storage for the time beeing. Not used in build. --- ...panion9x-title.xcf => companion-title.xcf} | Bin .../old_opentx_companion_logo.odg} | Bin .../logotypes/open_companion_logo.png | Bin 0 -> 73403 bytes .../originals/logotypes/opentx_2_logo.png | Bin 0 -> 25249 bytes .../originals/logotypes/opentx_2_logo.svg | 228 ++++++++++++++ .../originals/logotypes/opentx_2_logo_v2.png | Bin 0 -> 8214 bytes .../originals/logotypes/opentx_2_logo_v2.svg | 66 +++++ .../logotypes/opentx_companion_logo.svg | 280 ++++++++++++++++++ .../originals/logotypes/opentx_logo.png | Bin 0 -> 6479 bytes .../originals/logotypes/opentx_logo.svg | 239 +++++++++++++++ .../src/images/originals/vector-logo.svg | 104 ------- 11 files changed, 813 insertions(+), 104 deletions(-) rename companion/src/images/originals/{companion9x-title.xcf => companion-title.xcf} (100%) rename companion/src/images/originals/{vector-logo.odg => logotypes/old_opentx_companion_logo.odg} (100%) create mode 100644 companion/src/images/originals/logotypes/open_companion_logo.png create mode 100644 companion/src/images/originals/logotypes/opentx_2_logo.png create mode 100644 companion/src/images/originals/logotypes/opentx_2_logo.svg create mode 100644 companion/src/images/originals/logotypes/opentx_2_logo_v2.png create mode 100644 companion/src/images/originals/logotypes/opentx_2_logo_v2.svg create mode 100644 companion/src/images/originals/logotypes/opentx_companion_logo.svg create mode 100644 companion/src/images/originals/logotypes/opentx_logo.png create mode 100644 companion/src/images/originals/logotypes/opentx_logo.svg delete mode 100644 companion/src/images/originals/vector-logo.svg diff --git a/companion/src/images/originals/companion9x-title.xcf b/companion/src/images/originals/companion-title.xcf similarity index 100% rename from companion/src/images/originals/companion9x-title.xcf rename to companion/src/images/originals/companion-title.xcf diff --git a/companion/src/images/originals/vector-logo.odg b/companion/src/images/originals/logotypes/old_opentx_companion_logo.odg similarity index 100% rename from companion/src/images/originals/vector-logo.odg rename to companion/src/images/originals/logotypes/old_opentx_companion_logo.odg diff --git a/companion/src/images/originals/logotypes/open_companion_logo.png b/companion/src/images/originals/logotypes/open_companion_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..2080d783d7c56f247b28d81565ce7d81ef629ede GIT binary patch literal 73403 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

*h0T$%Y7FFOGj|5K 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 DP*&js literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/paste.png b/companion/src/themes/classic/paste.png new file mode 100644 index 0000000000000000000000000000000000000000..c14425cad1ff1b2c5628be5769c9e9e52b78635f GIT binary patch literal 1645 zcmV-z29o)SP)3Gx zefpoBhy8x@pP6$JN-2UQgm?vbp2urQDfM^OC?_DeL%RWJmr}mQV`N#@2O9RfK(_`t z{}ccw{I~7(;$U4wL~hQBiYr&HP+e1vKmedn2xTZiDQ44YUa1!^ytGbiJMka6M}vG@ zLrgqP2loG9i`^_G_)0Q7JWOR}B`e8wT^_)0sjwm&qAGGfr|N;V0|+ezNTCh%UA#yx zm%}d>QA&}|=UH4_q);eO)MK@^wUhx^fcS#;fB^tDLmDAYR7=GY}hKA6kOPAcP zuC561)~X!<6GT-k!gJLz@}5tjD3MBG2|?Jgh=y$Das?8ijz6FOD-BH>0V2R=mW1#7 zc%Dafb+w*QOZ4j1tA~UTD5c(75x}xR0JbfV+O`xp2&58N!i*b_Ou6iP^*huzHW7R; z!Gvcr8OqDc&1OD!?ARu~e-17|ECJBj*{Kd4I;3nN2w4!eEgZ+jLQu5L8XEw|vWPgA zt^#0Lco4wc+#EGEH3lFWjdJA3kD9q>HlpG95}EZ=m1y-ptN)rjt$|Ez*CB`q|1$rgVVB? zrhTuowc{78+xt2VFSK*}&LsW){Unn~lv3vU`0?ZDx~wzj&Yk1v(W4wbe3;(eUJ{9f z1T3Ky+yU+X&gS^%luv8N&-msq-zN6;H<^5HH8r836d;2i zMi$(072p5qZ>Vh8NaE}}Opji}iIlOmc?X+Yw)07OC1VMf&t~%6oz60$?T8IbC+FC= zE6VyM05f|%YwGIi0L*nNl`;TID-fW$T5#c=V<;@j=Em6&k5ZJ9d&7MsWd+;Xe@so= z%X~bXX3}54&3G)#YcF^p0JU^FLZOfeE#2xLjsYt8K48JdxS&uRBOHrUx22Yncy@gS z>8!_S|DTwyyiCjXgSZP}yn>`ylz7@9$3iWtfa7VPmemyj0M^GtgvulQziMM4o~aCT z;opPo+4&R7qYk+;M*}DWVQT;uOChBkB`_)#q+A6+Sfwh=^&|RlY=-e!kMI5ZkKD@C z;6z-a5gX5w6g>yi0i}>q@=$770agVN2uuwG7@cUt@bD?; zK3j0A)Rg|7%OH8oYxFCwW^r%olu$Hy-NXMuhl?5?;8OW$_d zPbP%{KnOr#TKwMNV7j}zJEh->%p}lW?Q_jx?V5KpZV_N`@cndOUtjvnnKP!vrO=Of r0*SSrV$g&__6vQz4|I&^4Jxf00000NkvXXu0mjfT=)$w literal 0 HcmV?d00001 diff --git a/companion/src/images/play.png b/companion/src/themes/classic/play.png similarity index 100% rename from companion/src/images/play.png rename to companion/src/themes/classic/play.png diff --git a/companion/src/themes/classic/preferences.png b/companion/src/themes/classic/preferences.png new file mode 100644 index 0000000000000000000000000000000000000000..1f6613e4061cb2e049cff729bdc56cbc24e74f2e GIT binary patch literal 11170 zcmV;TD_zuyP)A{#KF@QWYhB6ro^!t6^V`k_(`h9Kd7≧&-9D+oAm>7u|ga;v+gkV6qpM;?}Z^mPsjwaYY5Mkd9|H>AH42c|4 zW10XHP`(VnS9-b1Y2jw0kq;RJ=7=IlW{^zsRW!-~Pgqi*4EiA&fzTj?24J9H{w^Bl z%}9)G!7%kVJjE6ut|KL;2{1;`4gdSs%=64(z17T}CXtH_q71Of0%nWc)5laJVU+MB zvpNN|HgCV&yOZhG#y9`^rVEw_A8n z61hl}z-pI4H=1&kTmTFfFwX?bOc0g74c6hm3r&NkKOE(E{s_NW_YA*QBtv4V*$u)J>h0n?k8<(MQod+2@o9qr%ywCSi^d$by?G|s zykMIr|1G(4zscwVsd(fPMLHl6&i#G39YUvMG7O%QiJ?P?zAl*zyRK*U_dx19WaI%pORkcvvQZzX3wcS!4+G z%0%e*L1>7dAMW5=51wZt2>A(&z_ApZbzt@8E}>B1Tj%_htoz5BdN+e_^XR+-z5D)s zvPwzW3(9x?9yoCT27~nb!+dw$b36gWRIX(5{Y-#VuNML1sUPuBv6a7(OcYy+bgX$t z9k@S~ZODy<0IBcie`|a-2%UnqpNL&0sE9$WQ{d`CwZJf)V1q zg#nyrjBl{J6UnoFd^L*oLST2{gc}uUMX=5Wdo@IT5c7i|yTD~02n8rF7P;%D8cw}( zh+|V-0;EO$H$Or7gEz9tEODW^2t>86mz*%;Cb{A%H?8~@a9)!6v_uHH{|o%P3vX=A zegE0BIInzZoD$#!v^`aLkJr1OEb#l@x1jH>3}Jurfb2HMygwNy0emt63L&5Rvw0R&-Up70!RQ!%o~az1D?zkE zurd2Nq78}`%hAP{tOko*P*MSXZCp6t#fOU|Ufq3;@Klfh2Ic=v2mXoMm(1ZmOjev` z2MB2g&qE@lsSJ~uM>S`rK%DBK1RAmsC7oj*|oC_w!Ps`}0P3%Sg>l4Y*^ z{lJ0j=Lw?RUdaeV+Ch*9!Q2(#Yo)x}#SK=8jqkQi3<<<>fNuayZ-1NX7SHCFMl)uU zUDXhh6UsjZ=E~t7VwnZAznH&qa*@D(5e&Qw$!Km#pz4jGzJ9FpJ~2)L^gwV&?)PZR zVO;<-zmPpfk(1aZFtA@=npo$8(FviGvhc8gyApzZl+U+wLtJFzfp$XUC4o2&v2Xgr z-?Q?PYF?JK;G1Va#cd!tRN#AH_Ctj=j&4bvV5^1TZkYrl*#NzMtn)rO0TSSy+%|yv z-Hz2zaldT86inUWp;B-SzE9FbvT%U-t@j&U8@SmB6yAz-nR1oy&OgFW*e%-Bep}7idOTe}ispP`(y~|(&sRE=@xo5|E zvUPshJ>VK=-HcAK&IAA3*>;8iNHb((GTfY22cnh;{ObJp?GC(wklb& znD8Cm!k!=8N;KFvjkHec*!3#@<^~0Do%U2q1%sqSR%IM4MKHe(N^N}hAFknAz*MLd z7)b(%fa#^bVpU}cpEYPjzw0t(5?_vjDp&WsigYD+K6dpq2{g&y+`xe!-#2XSCZY0^d=mOt(tp)cvW?-pdzd zRCbyKnLR(%9+Jg`dtO=Y_SD{YTm(jY8k2=9!7Nex)0_EXp;AE1LkuHe-TobJTTscL z8?36{Z?r@4rOFHsvZrrru2#1lTZx^H#ufk~eeHDb`ya}d-H2p&ePF?Ft$&_|Cq6|Y zDz8JBv#Of1g){XXbwS5*7Ytx5k!LOeW-Ek)kPL8fSAZ8!^fNe8RLn4f&u>}kleW-PrCv#at01AgYP=~s?UFjo&UC#>Q6t1)4Oca8ax{8qjUGG z^c<=uaJnI<%8~3Y9CMdZy5uU{i`U{_eAT2Fe697*r$2kIsHXO#OXbZ61f`D_dPQ^3 zwje!LV0A$G92kspFYq%}h&U@sDCmH12An6K=KFIixXa*FTmH-C$qahn7J5&8b$vq4 zlN3~G+44e0gO4Uz%e+)wbuV*odT2ro)jdDBm5yDnQuimz@vNAedm|e4wb1YSw!u(0 zB%!kz_P!3kJI4Bdd6(_L0P>u|L@pa374)$JMc@AnPl#4bY4LB6plGRVc?u)w{6g#k zlNZXqJn`Ywu4eZ9;8vPm*+Ag**bU6sU?0B2TR8jr(+k##$s z6_xq*yrA>_c5E;x4#%n;vrj5o+!W1y=7(o?#B@l~#rj1*;ve^aI6_9gWF zhFtfA9KUgYZc>b^rdKv(#TcAbPTbX{IID`Wx@|Z-P9)p#z>&YDpI9h{zoj2vQxCr5 zJw!v%vxtCJhQm-eZx zZY%Synor%`OPPOtHD!y-aaK98mRb>|OxxG&G-EBb;+j{&%oVeke||Vjw+F!XQFN6Ap*O*4^!#BXiwhmIM$} z5}?e%O4K8(f&^0eaPJo=yx@8Tb$x2W!B6RW$tqEMTP>c|RjP7~ein5_T{#tX<P&bG{8~VNRBFdaLY6SIolBp!GYd6wZK*nz^OTbt$p<+J;ennk5Yd2hpXZ5W7 zft0*c$ui4tbz7*r>mpYFX=bQ1QC!vaSa#AT}ed%qcYZ?Yw43zA=?OrxQ5R469#^$t2ymc*Q{GW^|}Sh zdq&aYN0L@b&vGwxvF2|sW6v`U_*-O2u=>%>WWpAT?JYG;bV6!7O$y>6a9 z@MBs0mel$GBv?z$ta@k#^^d%X@9-9UhqsI`Uf{S@&SOb~`=I;($=9stjw?+7_bf0P zDEjDpyuUq3zg7Ymv=X4q#lj3)2*}2t*7cbE11P=wyn!DL_R(7ZJnotjsy{L>bLzIB zABr9^7w}ujCbInVb&C3V;{1g&ZA)R!51{z^Y+mN(p5;9{kMv3i|$mIN@C6j7bo`z;v_5e*L!HC=n&>mBMkO~uj~ zSW8XW;2A~$dL+Xz*K<_A^wBtTZ+CZ+$9vVLjZ+dd^KE!kbT7dpwiX3tQd?iUL9Kb`kDX4{!6siUzwvkgS^ za3r)$HUw4R8?-inknx3@0LiF47hPe#zdbl5D(v(w!`~Vhowy%s&nJgkAc@iDniB2d zZyy*gYqVXCGOFwVm8Yln?=WhDwT2A$M*w1Nkm!!c24kID|{3q!O6hFTyV(W|$h>F^mUAhW5m;`uR%cR^_Hlp#RH%Juk; zC*(n!kqkgak@FdXs=q@$Asq8=nlkM{!Vg0yjrP!$ z_aIeW{Y6f{(UyNEk{+PiT!=c*JoET(TdBF@(W%uSLJl;A+_KQ1D=3Aj3%WYZz3Cx3 z_F3__1V=XH40((~Lyq6)FcN)7{Yb96u$FnJCIND*zbsS@qhgaV9D|=KoVj{nX<_3e*N-JYSv%$~a!>l46k$SYD>>tC2Mb#*Vk3h&KN zvh(}Li4I0b7Zl2;B6P^)KO1Dvzjjgg;44#VJwwZu=W};hf$W)|BN9Lq^4b8+n;xH1 z^Z7k%@5TGkC)x9(9zwoIelc#ykw=IPbnNY;@s|!(e`EKQ68()YJUlFsbE)qB(Mo`r zp#LCYcpzryV^`}=zdD~JsJ(9!`=7Pb{90FG#$5r{f2b$So_}e^cj8u-f93Tl1Ac1m zWAmoRWp!xDf!7E&oW5{~2=Xj49Y%SULhHWaxpK!}{>G?>M7`@C8vl%%9KoU0kM5>< z)8lOa`)}jDL85$x1Ia$hy|9wtYYfuzW9&Hs92OEh-DLr zwnaxtfWZWmNf3-?5ka!Ts{5d63$*TqXn5=mFxi&0XYIXs*4|4rC{OYB9oxt8U&~~T z4fYZ0YQ`~Fj^tU(yx7XUR9!PUi$c`t_{$RmzSRXaS1G+;Z~tKdh#5w77)(GBPzqEg zH?lR^55o0!=nU!{%$oVx*G%piz&iJQO>q3bWfyME_x4UbUwV?0@9-9OY`7YL<@d`S z3eD91tR;Xt_pC0k7HjS&bpF?Df%KK6? zS~t)H^d!NU+ZHG^Xr%YMy1V6%{^o`c)ZRhqjUcR0dk6V__d?ouBy3z}{KsNrAb


P^cj$B1pqIM5%~1(ZFYQzhsHnv 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 B(_#Ps literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/read_flash.png b/companion/src/themes/classic/read_flash.png new file mode 100644 index 0000000000000000000000000000000000000000..c9065819b9c44f86bca1d09150e3ef544b7288ef GIT binary patch literal 25584 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 Ef^3By2LJ#7 literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/save.png b/companion/src/themes/classic/save.png new file mode 100644 index 0000000000000000000000000000000000000000..651b2a41fc302ca57261118f3f256d469e373ca9 GIT binary patch literal 5753 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 literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/simulate.png b/companion/src/themes/classic/simulate.png new file mode 100644 index 0000000000000000000000000000000000000000..429e12b9a17b1a1c601551414a3420295f1d949a GIT binary patch literal 10065 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 literal 0 HcmV?d00001 diff --git a/companion/src/images/stop.png b/companion/src/themes/classic/stop.png similarity index 100% rename from companion/src/images/stop.png rename to companion/src/themes/classic/stop.png diff --git a/companion/src/themes/classic/switch_dir.png b/companion/src/themes/classic/switch_dir.png new file mode 100644 index 0000000000000000000000000000000000000000..a9ba5f47a42098c063a49614cb3327def1c10f94 GIT binary patch literal 6210 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 literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/write_eeprom.png b/companion/src/themes/classic/write_eeprom.png new file mode 100644 index 0000000000000000000000000000000000000000..15e58d0a3290aad872140199b7b8ae9c50fae954 GIT binary patch literal 17348 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 WRR?sFvIGAHgP}BIT;pwyl4D?>X;@zbDB_KDf_) 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

*h0T$%Y7FFOGj|5K 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 DP*&js literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/classical icons/paste.png b/companion/src/images/originals/classical icons/paste.png new file mode 100644 index 0000000000000000000000000000000000000000..c14425cad1ff1b2c5628be5769c9e9e52b78635f GIT binary patch literal 1645 zcmV-z29o)SP)3Gx zefpoBhy8x@pP6$JN-2UQgm?vbp2urQDfM^OC?_DeL%RWJmr}mQV`N#@2O9RfK(_`t z{}ccw{I~7(;$U4wL~hQBiYr&HP+e1vKmedn2xTZiDQ44YUa1!^ytGbiJMka6M}vG@ zLrgqP2loG9i`^_G_)0Q7JWOR}B`e8wT^_)0sjwm&qAGGfr|N;V0|+ezNTCh%UA#yx zm%}d>QA&}|=UH4_q);eO)MK@^wUhx^fcS#;fB^tDLmDAYR7=GY}hKA6kOPAcP zuC561)~X!<6GT-k!gJLz@}5tjD3MBG2|?Jgh=y$Das?8ijz6FOD-BH>0V2R=mW1#7 zc%Dafb+w*QOZ4j1tA~UTD5c(75x}xR0JbfV+O`xp2&58N!i*b_Ou6iP^*huzHW7R; z!Gvcr8OqDc&1OD!?ARu~e-17|ECJBj*{Kd4I;3nN2w4!eEgZ+jLQu5L8XEw|vWPgA zt^#0Lco4wc+#EGEH3lFWjdJA3kD9q>HlpG95}EZ=m1y-ptN)rjt$|Ez*CB`q|1$rgVVB? zrhTuowc{78+xt2VFSK*}&LsW){Unn~lv3vU`0?ZDx~wzj&Yk1v(W4wbe3;(eUJ{9f z1T3Ky+yU+X&gS^%luv8N&-msq-zN6;H<^5HH8r836d;2i zMi$(072p5qZ>Vh8NaE}}Opji}iIlOmc?X+Yw)07OC1VMf&t~%6oz60$?T8IbC+FC= zE6VyM05f|%YwGIi0L*nNl`;TID-fW$T5#c=V<;@j=Em6&k5ZJ9d&7MsWd+;Xe@so= z%X~bXX3}54&3G)#YcF^p0JU^FLZOfeE#2xLjsYt8K48JdxS&uRBOHrUx22Yncy@gS z>8!_S|DTwyyiCjXgSZP}yn>`ylz7@9$3iWtfa7VPmemyj0M^GtgvulQziMM4o~aCT z;opPo+4&R7qYk+;M*}DWVQT;uOChBkB`_)#q+A6+Sfwh=^&|RlY=-e!kMI5ZkKD@C z;6z-a5gX5w6g>yi0i}>q@=$770agVN2uuwG7@cUt@bD?; zK3j0A)Rg|7%OH8oYxFCwW^r%olu$Hy-NXMuhl?5?;8OW$_d zPbP%{KnOr#TKwMNV7j}zJEh->%p}lW?Q_jx?V5KpZV_N`@cndOUtjvnnKP!vrO=Of r0*SSrV$g&__6vQz4|I&^4Jxf00000NkvXXu0mjfT=)$w literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/classical icons/play.png b/companion/src/images/originals/classical icons/play.png new file mode 100644 index 0000000000000000000000000000000000000000..8501a8b58649150bf75ce22871727e5111027c85 GIT binary patch literal 534 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7uRSk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+7m&H)T;i5Q?0wbq~1C!8%1{M`4GmJ^7 zti46;ui^pqozGQF4R$74)!sH>23mmt^<`Gq<{rOL`Y$T~_^yu@yBODeEm@P@zf}6b z^IsO%n%yt+Caf+0-CV|yz4w;<7UqcctiPKJ7_#TS;lIWBW`6HC_J<7Dsy;?#uy1(J z-@yhX-q~KtWBC2=!L`M2**09;{MXUCVXJ+`ml?Ym-~48t-}{h3Mw|Pgf}`2$4`Mpdp2%nIJR*UL){JeA2~eiAQ_-qi!iYR64u-aK(z)S z?b~Ovfao9m$4`a-Ivmfio`LZO3)g}41q?DQoCg9oFdQ@RU`UqHY53SIz}Pdtg)`xg zMhL^>^oKtgVt6{)9%MzBFidw|%(z2Nj_<$>GpUBhw=)=yZF$JB=lNnriOX)x1vS#V zKna-!!(0=F~6@vd$@?2>^$4&Mp7| literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/classical icons/preferences.png b/companion/src/images/originals/classical icons/preferences.png new file mode 100644 index 0000000000000000000000000000000000000000..1f6613e4061cb2e049cff729bdc56cbc24e74f2e GIT binary patch literal 11170 zcmV;TD_zuyP)A{#KF@QWYhB6ro^!t6^V`k_(`h9Kd7≧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


P^cj$B1pqIM5%~1(ZFYQzhsHnv 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 B(_#Ps literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/classical icons/read_flash.png b/companion/src/images/originals/classical icons/read_flash.png new file mode 100644 index 0000000000000000000000000000000000000000..c9065819b9c44f86bca1d09150e3ef544b7288ef GIT binary patch literal 25584 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 Ef^3By2LJ#7 literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/classical icons/save.png b/companion/src/images/originals/classical icons/save.png new file mode 100644 index 0000000000000000000000000000000000000000..651b2a41fc302ca57261118f3f256d469e373ca9 GIT binary patch literal 5753 zcmV-<7KZ7GP)Yit|WmB;^ghBG8ZQlj3ns0Zbz9Lu)apqp%qwsxE}kG6@8 zY&LOsv3AkjwkZlY39vv5bdh@ZL(vb5rrq75X?NF7nl??+Bu<=-<2)=m@gsi7l4?C| z*`h?svP4qiTYS%cps7$4Mb3~jDSi00$1>IB*;Xjst+teh){(JI|dv*InT5^FmSR4#<&H{bTznkVgnbb|+rn_0Yq( z^y#UL@25EGSpeMwE~>#9qlBvVjqd!bYrSAG)+OpGSI4(plJ#Ze)AFZ^<2zYH^q^nP=VV{0lIpJ zjY^8y9iP`zm7xfMTE(JF#ez{RUnl?U;J;vaa3HM$030Hr=+1LJ@>YS{LIJvZd-V*Z z+ns7&k3$gxm6CyqWuQ_rY3tkb*yFJQkO4w-vR8pstpI%H^~9S_5&r*AywUuG`IvcCYZNAwPeK+!2crg>e+VonUcx9?l@}yS7SyfTk#8 z^53O)$I6Z2fy?;UpZpk^6aXBDU?g1G-{0>jWPh_#fPMS+=~WutZUXGPc=E)KFYI^- z!B7}#B@3Xq7jwC?xnnEt=-7&(fxl!ds{r*BfS*dufG2susWPw=+Wnm+@~u`B6p%h(@E1Fc)nrqzYtIfFB$<&`EJ*AGqj# z5K12pgGyv_v>#u-_d#gYO0bNqoQnnFj*hLUt*giE%+0jr2qAikE368vI4S?|z%#q= zzU%H|6h-|Az}*BywNhEH$AwK>Izec9aT>VYDbr|h@!Z+W1*7P!Yp8#IW@g4OeXo|Y z(o+1;^bO0KgkHX=OGPjcz}V;@{DBZ6k*IjRD`LKS&%LOvtIt@DP()7y`=#$uYElh= zrvU699vl=@(Qtnc0Kl^l$h}vqgumJQcl-)+gd)c6Tet6*zDLVR9sr#Hi~tY_1TZutOa+Gedl2O~ z_yZwvdROF>X*77~;gsI*Wl)5BR^slYZa3-m5|?dX?eSxq_WY@=nnT1q@A1yekd{0%+UN z4w|NJi)~;&Xf#@MfA~Sha)iKGU0ZX~YPFiA?$b)H;BEkYi5EtOhXhqTas4VhE+@RD z#o!`awr+z)o7p4;02*YU#N7d~@&EvUC5PTzE*D0Igbjj$zKaNjBPEkC0b|=bUgZcO z`!{XcWR$iy=?B1JB$o-#b6xc+O@pPDk(CZRtNg445r58pqISATy9moHt&svbt6 z2v}{lZgG1TgKto17l0k{7fPiP-}%SyE(V3hV+7-YkFlV~&t3x@9{=_aP*qih+De_s zA3=Wj{6Wmx=Fs1B9`C*NXUy5GDT6{YC76nrjYgvmx6j))F)<-}@F?G}BLT3ur4@-p zperv&O-(KDhLlPr>KmJ(WEHFOP)L;H;8_UZ+Vu&%|L#$|_?us$_xxG-eLgX&S22t< zDj*~*d>preMF60trUs8azL&QGFsu^$o_q#nDi(TOnW!J4kVGO;xP5+1P2IrzN8iAO zGoSD}8YV;mxLYCQo&}%iDj;M+u0+B#;Pd%lFf>7@<0t8na0I&Y3Y1sYpiISrqKf-G zU@#Ph)4PD)OTGBR|NI7TzxD^*Fi%L?q>5E2W~?@wsHy0M41hkw7K2N|!`s^UJ2u=- zC+^txc~BIAvPjPl`20aQ+&-K<@evOF`Z=6BaU64YTfUlax7utx(vtB<$N=yIXh$q= z5CCAe*|4d7Gn6d9vj9G?2aU}wP;1MfRV#({w17l84nBVn(=#@_ck~EedEs~H`Si3{ z^E+<{A^Mu?stK#z-j}&FKZM$3{fLE)f7U4g%`Gj0DrsH2u_#Q!`222~Fyr-?e~&j_ zei2uPFJr;CP_RC6QFL1E;;DepJK#WU9bjC%;Ba8e9a}&v_({6mI)jZ{wu5DrvOPl> z3P<4f`qA6lhvP@z#Op5|!nDPVa7YHx&IJ0}%IXR0oH#0w%~#L~;EDK)NF)M%WhH8A zYIs+mR4P%|*bJ4D0ZqxrB#b+5PIh(S?blvL*Ri9Ro-!A@TPcWkTJ3gGR3MuHFoIaH z$fA4FZnI(Aw(Yztu+7fkbARJ$eIeVeIwIT#W zUsGMxZ?oG+a;+=dNtgh5ApRm445G2oAiyLHLszaxMO6(nWlE3&q=<<-ZpKZM=>G6H zUVZVuG0=Mvet&)!cG<#lT!U@S{zB%G>B)8gj3CJ*3PvT@-AR}!h)lJeg#MV^dd~xt{_}|K`X{8z5b+qe%_QzCE5Px1-984+%Qj|+1LhM*@`F6MI#sr!?O^;=3PqW{LHgir^N zg9_yOwVOdg_;@4|fx4^=b@iDOBg9cC6sR|}h+-1P9XFF^3*LG2H5@zgDz0A{f!|*^ z$4wq+uhwZ_usfYuZ4%`=08B_S37rlHI<{`(U4hH#z_vT@0+78)7ezbRV z@-_*5{vf7j?YMOD0$%^)VGQynil(u~V89xK z0g8lOQ;)}uD?>x@xZS*-HUc2wbHy^XF1`j3jYb{8NLWzVn3&#|B`1m_kqBr7jWuf; zc~{``creg=0XJ`0Fl{m80I2?w{=@h4N4xPG+^5>mSC$Ghk*#6f5l1xIKPKWC1YLT0f zC$vI=H3kFLZ`_EA%F47iK9Mqw22+!hqV$0PDnbyL=cxi>M`IjDY@=wAt5>dw+=Tp4 zC}=b`HDmkdJ`Y24Gw-TzB=oq^+G>Pay?V|9#Gz># z4ULUhyI~_L^m^Xk_*7_hI#@(f0RVb^Mft?M)0r`BOo{aw_0@69>aAXV{lVSik5DOYz3?HAHvtvs~2WVQ} zQNWpCl}Z>|n$g;}78zS=dMt+ zt>c$T3;=u!3z(d;U}}0Aq2>D{rcCdbdR4aMMDfDH0@gIF;T<@dFBpbJ{hBo}G&e(~ zRu{TEP^r~$%+IA&0e>KXshiWV+3g60SBz+W8cF#claYD=^a1!$^2L@M=Q*)ZsZ^+I zXh36AlPqq0B5JiddjRmt zBajcneA$U&mSqcK5~|BIXlQIib#3jfZEAU=QmbK^oP^b8gL%pVU;2gNVUFYWa2)pv zVqZL7x7tWtw@xdGv zMLAR|)z9ne>-Wxzm?$cr3ZO?!1r`qsG`F;1=gxaXR{&i_1*!!ktSA)L*;#aVpMb@j zHVK6Zz`;$MHg%7Vj+(^oLq1b=IS@NbxIccuJUI!E#{-Q_yUZj6fJOm%hxx#;jO-jcK-Zm27aKmdJYs5?al=MR3KgTZ>_l-@RTaw1D@1D`5C}l0D+iV5Ftnk; z0lfXz5ey9ur2E!)Bj&j~2;gSE`j(19DZnz5u)e+l_ucn3(G-B=IOufcs1=Z`A{Q)X zGtQnp&BvsB8Zm1~78ELD^RgsUGcz~g^?GWRg0zq**I}TX;>l(9jL!7$&^Z^7W60@K14-Ofj}UDixm(Zc{9L>`O(HgqE@oS z&peixg!S09>%N@Lz~l@et!vkT;h_QooHz%OW2)9dBL@Wll1>zRyn-Fv2{1`aozf5Dp2gU zd@jgE0hXO8o}ZsbdwaX+CyJxd$f63Y7F#|S!B=(cs~S9}#T|2nItKAHR-q(|Ed5H9!IOUXwdkI#nHTm>xB8L%^`WH|HP8>0in*snyu>y5<^|`Mt>(_4-PDuCo(0wRMZ%dau`u zp`k%cOr(8uy8|(qe@>$QmXLrhAeIn2`A4JCaJ98{oJONb`S*mMc>q5}!ahTZ;$c71 z-`q?;zd-567dd30OXo!>tXAQlpY1d`$+QY4{$-z>>%WK(t)$4P9t&SYeF zT4|Cvu`_8TrKhK7+B6#Vk52tZYrC^JanGsf6Hn7*GGjU8#EWc^k}b&+#eEkk5!@+K zT)_noAn^LfBPbBW@*V(^pp4HsJQ5!6d-sy}-tWD?-~HYDAVGoz2@)hokRZVq4q>Sa zupD{pkw=OoL3>m}IxK)il0cF?Hn-$CdF9HLvrAn*HE5T*0Lz7v%0_E@WBn;>VZkp1 zP0|Sj_6T6~elG}E1cW2Gd3mEa$?_8)#q zhwWBK1&|~Ok3(8}wfd?p7QfFzaL*}#l5t&^q{WnMP+jT1eC-?G{6L#x%qB;TL@=m!k+-wvq&NZ=8t)?Tfyw#6jV7_)2@ zK*_l7oxum2%tgzy-#NmYfBSm)gnIp}z_T$gKnz%R3J`8wS2LN51wTCc0u$pCgi-(r z3732NP4FzXCCfqql#J^}gN_t~eo-pjmnXmRH2?IQUx!Vn72?x77`FaO1kaJ2u{!oS5JT|MvN?3Lvi$c;ZS0mP`S{jqBdYoGIC`AT#(_ zl43G(u;>XcmV6vGt>6)k5=Sbqs0t8nTwm-Nd@LF0@8`rz-wUe%NFYu-*H*`gUtqx% zK*_issXI2F$jr*((L+yg;ru6I)9N%yQF#ZYHz-2GabWJ>Q^JPCS>ScyWo$~GwP1hk zaO1jnGM8-BFWXA@XQ02I<3IdfSOt)fa8A1-QUU1~oFQY^F$$i7=_zP>Q~uW<53k|i zv~ZG6#|lpa+)sWG-5^?%2t;9Xn~Ls|lMn3C#)MuM|Dl$O$YPEv(!K zoqtqT`2YfYq+f7Cc!}2neXUA|U;gor55N2uKRJ_XUOB84gfoI56b<$FGBq*I#H5JP zpu=KLA!pS}EasFiT;+Rt?#K(u5(*sOy?b}SI0av%SFs>)ocx(_zo$fPk&XxZBCG=Z z==kwH8c8^c>fs`3J6kY6_DP*ihw-p7l)ufwtG&3HGng{Jzehz+WC{ZKsZH_*5-N~q6@d% z6T8waV;+0_%VcI{hfODF1dA4q1y8^!vK|COI&}Ooh9#5<)BsKZ#~SPFRXwP&x*Q;( z0zQ2E`G2h}p(F$xqop?}LYI7uwa>w5OXR)Z6L*DRK`%QnEbrj|7Pk9GnjJwSNQH1M-AH z6h#^u)Tuy2bvYhM!XdiU7W1AY#bn~CrvrMw=b;g#Q@)>PdVdkC56QiMv?a1aNW31( z5#-+h=1fMaDl1gw)zQ|hn1;-pqZ-z0t?H}JnO5=al1V@UDK-WyH_!(Pyqp11*A7PhB0FgSr0(}Rha0C zEORORT0o!%VDr78Rs~uc>u`!3U2oK z6U-C%mj8vSs!CO5sIR(?N0OLyBviml(Gy<{`kmR}=7n7Yu=Y9Gu3I!*%_TVrs-(Z9b2$?e%=KyIZ+a!YPWh-@3u1 z!i9yNgsy2fBlb!D$18u$ z!0o#YU|+7CeQWh{?;om(X2B<{%QqNG!gSk#mwYc63 zu*)|XN+USm!lwaP7S;l=29%Rztyr&v~ z+wH+V>7cv2hmZc{pDDZi>Fn09V0?4a9agU?WH!b>^4_o7?DI!WO}vHN2mrWq=MFvH z-Q?!xD!SPziri?ZVbiuQNg$$TKpdN(ib>xKN6 zqFwM&DV8E%QqNm2jkQD z#jw{_SMl&8UsC*l=K2~|uPJ2G;f#BW!0q-hJ|)uA)62(yI7@wXC61{Hwe>#Bk)3^* z*Bp>tzAbM@^bETwc+74oCcPijHvk)cCSh}P6Z`icKyNT8dcci_8umT(C8=E(8QT%`#_0^akdKA~RJFXl<4$&o#@0UKM^4ewETAJmp+%e$$d%IXld;aQFk#B69AlexJS1x2@7qtk2#=3RWCS{?iqzyKIU>gExaschq4L@lu3S8iV{$TPJ>Hj}J$eiBpNeY1 zr)NyZyA2j*{R?VJ@4nSz+-KFv^51_oir$|y=d&OPMVr^JFKWJdvoxCWMcM$otAr=K z7i?{9*zI;w6`F*1`ftfs5zf$9A(Ns!5$vzPq;z3Z9WaL}>Pv zb(uJS(>(9GpwUKs@@Of}lB06eVNQK(aC9`HfRJdHmtg>CP$m?w-!57kqx-m`2Z-o=_``08)}J;*&>XG4PJ!GYmMLPBJo9 zVX=fg{0ab3bYNa#VP$$IrW6B$3X{+qadY|7XMFfC?{KN)Bl>%LRR038=6icPd366K zdFFrfH(=T%+@w&PitX8Yy2Q=4J zv1P|@#U|mT!^xeY5t{33xms!_EB4Tor=#d;c!eYrOF57 zJKK6lwH}Oe!AHwKRIO5Vk01!g3JVKQx3{<3)Z7;<+slTZN$7MsDO8~XcW(EwVe1ZD z(-KKqElD$tz#~bFPl?z%x;XdVyL|BOKhkMy!#y2;$I#@Yiu~uIZuHx~FUx*}Cwu(2 z3u~z9Q$HWlAdC);44108Csqw$1bHGj`wjrR-Oko++t6y2WidH1PDfj-+z8wflcEz* zbkTbA7VrM{|8n7@KQM5+H%7%>7=Ci#7Tfne1Zmr#^=)|wP)X02o>QOXN0h&Ww8y++ z#V@ zO;nX#iTfV!%fCC&23Zfv3qBE!{nxuwDY>;W%904j3kwUCnP9}W0f66*V!Pc=OH1sQ zRpXVtIinoRAC%+##G#0zeBUg~37;qof*@FuG@29PQ_94;0TjdBElQE7z;ff@{z6#) z46Hr~?ny{iH-iVb(woioZe>a^UsxDbnaAvQY@HnpjSSV zYj3A-pdZ(?@b9NLD4Gq%Q+e>y%^bU_$qSNVF zm6e4hElu^kd8>?|Ro45x44LnzxIehN*OH!2T6#LegTdDl9HL0yKtGd{lcBN-yM=6_ z1M)4vuvz^a=w<7lPyz6FGUgWM*e$ zG)5khJ~cJP__&?@`}gzdrE63)^l-JdkAwH+q1Vm*(+=5PoO!>SEA=BxyTb=D7?YD3 z9vZ?iCC4**JRW*_d+F}&!4c%#W{pOJMx%L6lB8z=MUg0raZ1BH8Ct5zU~-Cy{K7)= z3kyj}3I7(4aEPM3>Z;f4vD@tcv~`d2v%kGGCtX?7DF5>}Hg0x@lRD)x9hYu#@5Nl<=b*kbI=96@#sTfG;ChKAU=bJrqdEt8y_LUzt-GFGiZ zr;FX&OoxXC$;!$^uh(O<*=Dbg*hR9^Q^;AB%G>99IbSiTsMq^bT~$eSO*QuM@t`5? zdY!J+VmANzlqkNAii-ELScmn@*-`9tI%#cfVZ-_j3z}(?PDf^T4#~;M3-WyLtb2TX zeBO8e@0^YEHDcJYJ`fG{bzHf8nX$3p`0K7Yjt=6w@vjJv}{S_&A9)8Vy<5t1+dfs;>N-tu2(6l!UB!qrotu z(`rxJCnt*|Ew?X=xjA0|p7efjI-TU?tX3R2ss@cl!7{(e9nYI5_| zU{t9%U7ekL_~HAMUAq?a#T*)qX2fVTzLK4t{e1tOJ288I>|*ZAwg7GTgpcPJ6maO! z<1se_%_~=uu}b}#yjuEi_hBC!MWfM>p0SFR7Il7vf&P9OC4LH4d^XAg# z=4M;ur47ttZ_Gb~-x)*y>bY-YGNs0}0c7RmD0)}lQZY6*%9YEPX$b8Z^@iKOMg)^P zr7ZUOEY22E7z#ww}h%B<$?$ zV0{dOAtom#n4Wf#loY#06$vUU{xk{}Z(_~jAI>AwhL1^@nwrY9&psE^wSZK!nanKZ z+tg!?5?dZw4Nu}1PQREe)fsK`b`+v|oeJS!r&eK5OVwEirOQitwOv3E!9KQ0Euf}vW&}?2ori#NVqM@s^lPgy)DKY6z z5`)vdV#QLO+dl7*soS^vn3x!ksrhCf8zn70oun8}F#S z+<&`@iGK>sl-PGOePagKmAP1h5)D2MO)h~+H7sOTp>^GC}xq@<(GbMjD;O9Uz~k`*OInO9^>48ZoH(%{-V^}*Vg<6YvU&XRCn8pWj*bqR zZ#0M7L|MubugfnL@umO(Y519hX=xVB<`t?Q($UeuwX$n;c6Nr6`%>a$U4E&EM+KO- zqu69J@wKl#iB6{rs{jK71Ju^mFdBNdj19TsOBd*OST@9?0?gY{>~gv2?d_wWpfKoL z$L|abP+ne6Q&VF&C(cRa%D2U^%*&Q|Q~;1GztaDr#gfL}J$qP{nKj$%CnhFnXsD;X zy*w2xg1d;#%002ovPDHLkV1gyGQj7oq literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/classical icons/simulate.png b/companion/src/images/originals/classical icons/simulate.png new file mode 100644 index 0000000000000000000000000000000000000000..429e12b9a17b1a1c601551414a3420295f1d949a GIT binary patch literal 10065 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 literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/classical icons/stop.png b/companion/src/images/originals/classical icons/stop.png new file mode 100644 index 0000000000000000000000000000000000000000..3bf2af6e958f4cb76597b5817813e8a2e2b9e271 GIT binary patch literal 312 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 literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/classical icons/write_eeprom.png b/companion/src/images/originals/classical icons/write_eeprom.png new file mode 100644 index 0000000000000000000000000000000000000000..15e58d0a3290aad872140199b7b8ae9c50fae954 GIT binary patch literal 17348 zcmbSz1y@^57jDo3#ag^L#e!3UTM1TNN^y7RrMSDh7cUYhP~4s36o;b0El?ba+dbd9 z>;8cYgg{7g&dlDk_ak$NQdO44!Fq=U0)cSkK1rzq_ksVrVW0!w`@~E}fjcA@by+B= zYJ%bb_yyfmK~@U%^1sjTouw(jBbfhv(s2QSUK9N9h6KvWAq5_M!!0?~lvq$D&vmybFl3Sgi>HzkLxnJ;5-~pfLbs&i$#WuA zs1& zWW?c|4LSJ;6J+yo)nNs`j2@+Ds4W}NE}nbUS`0;g>%OGD`~3yEX(EQwUlZ4Z6y8aR6 zx4J6+#_PJ571j;nDmvq=$O~~RA#F6^?`au}pLgL;NGus)LF>-#p~uY8J9RZQl3ozcuG}xF3w9d50ao)FPV?u$Q4g!CSEWMLKv8HVq z@s!G8u-wQ;{=e^}^`b9y&F#`z8CHY;G6mi%1Az#G_0E!VX!{?OC2Ft&Pira5|+^T8MS|Ey3b-`~CoKl9R$3_V3ftpMFp!GmbyC@(Y*IZW70x*8?NqGhZ3 zzCq92-AT7s7^Q&tP(vPOs6Q!)^jBCA(0a=6lb=Hhy5C}>7YF$S;$5(q<>389-gq^J zZZxX*v-`vFmiT`!DU=SLSrNl|1{*~^{C5^+IV9D zrv`Z#Ywx)e2!&bc{qJpj%#9v=M%Jm*7h*W;UXxF|w4pbQP(ei)aK2f2?})2Hg85B0 z&*%Q%lli+fP##NeAtn6Dv#g7TH)O^Zn>QNK+L>62*OG|1jlPZ^Qbg|Lo=fBxEs>k+ zfG+x4usbekcv4i3zwG@a~>N`3=!3l!Vt19=?Q)?Z>qD6 zA1j}>Mc`>r=UxP)N4CF`w8M}lTP($nLrkiAmuGScS1bzWDX=tTa-HHNfEjmzpRjZ zSx`iVuB*ca*)G9iX}kXQGY5hw%qfE6Xs)l``%_#0S4(n4gr#DE+8K(wEQ1f|m9Cw39^7_>ai9flT$LlSJq$82YsTNvD%h;G6^?KZsw5yprjE z?;E#Z%3OJtjjsYm&A(_IJY!D4Ofu~J4O)NyFhz~IcJ3a+y+SJ%&F$}0?vwN!_eN)@ z+H;@phn}@JRFp2PEu=!Q#{nbjr!n#+#9=c!761J$g%+8a(VZ(Bkf(?q|Gm|4ya4E9 z+Z`!9?swVxzaKBA6AOdiV_UUR>_g1?^E*h7{!&%#ggvqcr*rugY-F|}4}1T{LpqC5 zX;y5@Lhc&9&hBQd@w@gM@?yJn2{~2h=oq?@o$r09YwPwxU?jM@jvpKP<&2hEwYW)x|@KHXRl9rzwvpT*~Fe-_>1GI zHWr?qPW#IbA`9^`KD}WaM82X&AQaDd9rq}GK@ze*NlD4_(utybN&`vG2Z6xoBX4M7 zci&5#NBCxOo6*L;5xmM~67E`fPGY~eHv8l#ReU)9D*vD{O!cL&BTjrP{ZTp(!V6Jx ze2wJT2YQ*b#qx|lLaZ|-;tF@V$EwXuY87OoG6FTXe$%A3CV5yH13Ik$EWjOIK^K+omvH)-uUO|KeXmQSv`rI zdN=ogFV$}hPtK@8lYg)7bv73g9@9j-$MS`ZU$}4en4^(|v*hx6TT#-EaNPt0&-l--{WLhJMH1~MRLh&@7eFZ2Zrb#gxx$I`E12}zvTkXvOVwovU59^ zM&I3wso(jO##32rEsZ3f(&WF9A|nino^)dmt_fMy5CzZ8#(nbZLn}W6;@B(rmgRGd zh)O`aIRl9ByJRHZ*U3Tlzdd*qpzBld9?=^L)6?h9Jg$pU7{j`moL$JVK#4v_Oi&P# z@4BpA96mCbK|S&rnwA($GaUE^6)id}P`x#lfuYI448K?|I5n9$9v>rBUM?+Ke@M_0 zI{{pTTR|_n|M2V1qwA9Lb?4;ubb@~>@blL5fbe?XX-oc_Q#U=85?}roAs@b$PZXI% z{_#i%nVR)cl}^*@=ahi4#!RDzPlSiJShHJxG>=3BbUKG+u{1W&M=u_?yEyM{JZzBn z-P66_!%*=?H&(x}{Se1(ms9jWAv0k#YEXhhJ4VuUdn$3dg+WfvyD42WxI3Ts+`CHN zE<^!0VF>bodJ+_0m5idliA{e24aFwQROc-WA`g>t4n=sk!Es6{hQ#9VZ;Iu_IKXD`rjKq7?JAUc`8J~7NWnliQ#ssf#EaG;ZW~!I5MGw%WJDBLX6CbP7 zg?9tuvfb;{-ip#$7{LC@j zqaJ^2ft~iIHBSK_6-bWPlX#&H!b@3%A|rQDjA9EDxchbEFul4NB(XL)vGAoc-NM8s z%wY*5vr#$Sp`d|I&NP|cvP>7ITXD5MRL3S09`Q!~gKE{rJyjlJ^Fd7h(Ae3=G9hb- zG)f!%Pg`IA44*E5FOd{wA*e;hcO$NPuC#mB&SU3Cas61vz|~`U9_W4jzDnSqkLEOx zaQEX8ajO9F=??Y5wRWeMZW8Dt|7cxPYn2_a>|pAc;uxV0I@V_Rt=mCkWyn&v$g;YN zO<}3Tx@C%g7AQ)hvPilIQWrmquQDt3bixGyEx_2}59 z9A9(0+hGzP$zJT4maEQ1vPbl5L#{Nf#Py>y-puRL&?0^w`vO;4(HLX0{|ml+H;n;SpCWb;z0XSNH*ciS+jM8=gJonJG#wLs zRX{a2J^m-cu6WDe93HNzZ@+-=xJSRTiJvL8YA`YrhHeWCcVzJgI_M+{>tJC9V}sJe z7%Z+mpx+yMo9ZRs$k-)A&`@Q_HOl`JB?*!`Wc$qyyT>*LCLvCKF8W=sF&tMOW?giT zR^VVYMhhAur5KX13*o~`vn1g|Ge7aQ;kZV~aSojF{OsH-m4?-kDext!FZVdY{x}kZ ziyu88ftuI6?Y_u+eYLSU=$b8^q_`i+e;i?2dsw>>Yw>$<2d&-DH-9~>Y(}1{{id3} zlw~VnO7kJh(LcVy20Jd&Wt{+BJ99nk&B7@>V57O1kY7+aeLZI2ZJ4P95U4WELGy_w zHZI1Pm6bbndHbP>?h_?Rw3*~j3Ur}Tc1l?#pTKAOcxH9roME`+usSrkUpqZ671<11 z-i8f6ID$mOrJXKK8iqkz-kNfx9*? z8i8Bq^zzJ)MH?U|?-jN!fEpI~wN(+HP^!8RJtS3AJUDKi3`0uhDU-l{CwjHiu$D>c zI)F#ka@rA&E0>%|?|i*1XdOF3!3yi2$WIZFP>4f#eF8t=#;1JixsjV8r0u!!i`Drh zpDz8DNjp94FkRK%@GLV%I=^R197G)A6;fc{NeNdElq3xw8y~Oh=m3U_A14#S75gdq zn`M2Jg-)@&8XNH&61^pd9=^(}?!T_fk6W+A!sPL${@mcdmMAW;!*;-7$7!T1G(=P( zP(huMDh=Qx;r}*D(JriDgm$9q`~%P+)3VUh2OVAx3(b`)$0!qQs5~3|gv1J}|Ff5e zFHwh=9gXgl%xUi@Fs5$;S9H|2J0osVjN}KDXhIUC#BxGC^W2cb7Qz^5p<_N!)!|hm z8hnpVL7N5^(?G8aW*Z&EL&kb0WdRvXMt7}w;Y97PpGy+r{Q9!6-FjGKP`d7D`ID(k zv!X$leUF4#!0j(#qivdUa|}27f-^WnAvQLa>%)iM{e9-D?HZQ_$3dAP!GJ0`o}l4i zRmmaq2`ASgr$3(}En zSknIK1*amk_2T3qH9uGG$U0+)T=N?PH4O>$QA6>A>E&wt@|m&g8)(cmKh{BMA$9A^ zu(DofeXKALEko7zTR68|*7wxkS7C$>it~b>qQ>;(!Kmqnn{Bu=b);m=GV17dSfQO; zVk&fIpdy_6uZ#NLMDgs-_Ss)sWATHTqkqiVDk>X(pR?r=@9x>^MV3qc-Y5eD%Tdfa zHh;^{A9AK>I$e|~)7T4&pxWBy3?RytiSag#4E!Buo%4p)(EUWu%L&^Odak%kmGq)p`fSEYpYw5>5#|%NhAqo-Tf&L z?`)7Uon%5xOguekj1Xr^qB$r9Wy)q-==^{TT(-7MfV zpvsWkUVMJKQbFzsBI!t!^soY3oIXEQ6G9);Q|B-Bhko6l$nUoY{%J)?JN4kXM zQ>JwIu*b4@=}uT6b9AkPaC=Wv8lrQpvmRCGOJs+(i#<8~ccGVwbCl!aI4NC%ztkXz z&MK4&R6JbR%7kuH8Mz&5S{s=fEb!a*)o9&)qeK=<^Z;~TewoiO?|0puMDM)lD}lSX zY76-(tiX4?f5jOU%d6`M)2&ru-HUvZpUCr)daHnykT zn`llX&<+)hS{UaFp~7uYKEi3b)ZXD=%84&Su>@%nXXQ?qem4G`BAHU8(cK?)prto@H zlTVAhCu|tWSyRtMW`=~TEhmT!JG{`Ndrm7D{?0Xe@hML2jPV=l_$XL*_%!|yjgrAxr7#Pa3E&HK18 z@hyae461MbHdDBTi4uW7Oxm0LDL3f57J)G~kdeQBN$6JcL374qQp!y)*Uo z6|sA{urY1bFIjcu5fK?%<~?LSCZoyv8B%Ymq!O5Jtb?}2y!Uu_Ng?VTyOc@R%T>I3 zkXT|95Ss1BSW`THoh!W9U_$_aum$JHl+@N%K`Q@!3F19OQhFGP)E{LDey4|-HBoeV z4CFj_%HQ5iZvr+S1^Jwo+I&XmE2)#!{d+Gv$VYdhg+F|t3zwCVhJ6U!7Vt`Azt`>H zV;qIc6s1nMd4(|4=h*C~v>Re2nuclSBUTJ;wad^F69nr|>mPWfPnViF{fRSYJv6mi zw0nDvnNiV_A%oVE_^6*068phT+o~)XK!BMmfg%6q=r~m8$RHylD^M?^ffd7#--goy z0e5d#>NG5!v)xR4P0@PFVLqIq;$l<7QT_eOl0(0x=g$uPxMd1+^t~htn4JPXSjRRv z|8vuV)5mMx-+O6ZL{dY{`EPr1FqgFd<}{P43IcA0+LO+%w;w*e&j4>?i;b(a7@cRA za)##6)6nN3ETErG{>7xSYBtzp(plNhI+-=hTc^B)G)f@6x^7&WEKHU(OPUe3`S{3b zF;LcDjOO!1i3=#u#0u}aZo;iaTy)7~#>KmV@um`swTaz{$=OguE6_1_D8nSVF-R%i z_3nIEn1#%uh0>^DrImN2@oL!d`cA&bes9|-RPF!7d3Ip-LgXY=%*<@X^>RE%Fa>F6EE9A27}shtZ?m`c@=4Qk*R44R^~-|FDjJWy z>Gkxh+hcaUrbuW(&)#@;>rvh4m_zgG;7AHnz8Kn1o%-~H1MuLW%=)aOhvS8Be$up> zq3?FwitnYuQnv>ua2(fV%6D<-tByBYpRUT_6|93lI+-W;mwrR;bEq5ntSePn802O} zW=v=3k2zhmS!Ftxetx{34Ro;bYZ*q`ZgbT15YU;nZlGmG6^Ng;N`@AE%qb?V#EeEt zPg6VC*r34xdTOCI%NtarF2vQkaJ-qwI+N1pWcqQ74GehQfvb?tn^NBQlG&MY3H6@# zSVfvSuORrEA~XG?sKvg;9d|4EIufKYG>k`Hclv)Me z-3iWD>UnfqEG-aY1ufP3wJ$b3*($5>3h>@>o$v!%&TyiuK>}<0nSmNS^0HqM~-nq z(YT$8pj3rh(5ry@BPcHeX>g=5y0(@V@(yq6q$=_mOWW)uBH)5a%>5rv{+)K2K1ap$ zw3-1++P|HhVk#;s&5)3g$;a$hp{Wav%MSCg)w>p)0fLi0YghW;av0{Q3{4_;ZPQ+p zC|``Xiz(G69xorSHO6E+d1LC5PvnYEo^LaK%gg*#cjW)dI95lEGjaA>I(=9@M8+mg zlO;e|PCcw=>csWF{?V{tM+i6Xbi0kC$!U9Mwr7nvLH-Mspr-h`(4AFsZ*THD6FtxP z5DT=H_!JeC`Vf6`K6`UZ%PggAKDCNDQc}|I@Z+rqF%!})0o+_=05(`R!=Ho-Rvotm zI9~4Kx<{DG#baCui*cY5BHZJR)$6^(`$E^J@S$@8rrSM(b#q5YDq7TI$Kmr=CzJf? z9B&&fbbzGj;s8=is#V|ge#f^&_*2i|{(?!a~M`#3{tm+a++#Tm_3Q<*B!rO41rO zt(znTHX((oOph{oRvli0=T7fYB|dJv@*7{TW6Q}QGUqsuht-7kT#4upjqpXxhHA2! z82^{Zj1^TFDG+}-i7kP@^AJqjbvkPeS*$TZAs`@tyu(3%^{Q;{5R$DV592m;9aZ^H z_9kFM(flnp!BkX&^HUSaS>~jFdJ2Kyu*Yw2EE30WZ?$rSL6OAIF2$Ayoa_IX=@Iw3-Agis4wodhI-0=wOi1Zq zVd~Mkm4j1LT)^l6Ry6~GOSfyDpHaTgf-e9r$fbKpVvj^xeJgaiPU;@HI z_BSzcI@vp_-KzFeOKZ3hIzb+;Np}M%Z01{yqBdSD` z2}DRpzGAL$&enNn_zjydD=OuX1T6Yj5E7rm8i4HVT7J3<8eeul?`N1G_oI&CQCS|Q z>j^kNGAqQyJVEQV_$ytzEG%g38+BdV4I1XJ=yBI6t)Jvlf?Z&&Yj-E>Pa%%7Z0u}o zk%~&85T!8uULZcR_Iy_}GwRq<(8#H0VoA!L#D2`n%NQLgL5?`h;mtlgfY_0elfzaI zW~>{?-hE97r7do19u_C9O3`f5P<;yw?nm;t4~(wQciOf9tGZqdY#wxv&S8nYqXCdbvRV={Won-v#M#6&(~fBQ4`&vk`yVeC@u%~l2~ z-L_l^cuGs{Vd2GeTAw8?a{HTOvt1$cTbnHZ4$X>}`>N3~@^7y=iW*M`o73G-{r#Ud zBdG9K9km$cX2$ww+5X>NfDDyT{7{o`$|@?dYJ_1QZ`sLcD(q?FC3TOLyDaAz<)lK{PPP%$Taqv!eQXst8*F#p9jRXx-syLCw}xTkbq+xL1> ze7M5U?e+WjX7+1c`FFeMLz8pX%@r-0NhDoo46(RYXbT6krGoeU1Z-oR|K@&)IlQ2p z?UCSO-mR?7XHFHy(#c)i(`IC_jrLyYM~5K~m?jncG67HwDHWNCr}Z~^SnTNoHXfdp z5JqA#=CNkX5S34?Wl<8f2w1gD!mj_yPuaSS zS02Wepe4sZ=cN2W4S1Vy;GfHS0=8H+no&} zaLD;w+_xaGub5zftTKD3%nehJORHD)G621rtZ z$OUuWsq@7@RJ|rgis$r7D-_;|L6=&J9=0*FJsgWquC`xX}@c* zsFh)JiHP)X^w6M$py+=cVNgLftTu}*j2v(0t99O%VPsol+^sfNQiwk$JF%mLV5{S_8ACKoD52?4ht+cu*W{l+UcpeL(Ygb7;Rd)vn+fWtw-%m9!)AohXjoyUd_7S( z{wAPUy4d%HTssrOr-k}uHO_tB?)K{vKvmMM+)b-eqCLCof4Oxtyj)&T1!pV)W)DOt z{Bue@gxo>CFWd8~g44qIyHt_p?pQxrJeBC+*ce-x{JH20JkL7``knoCd#T(GrA$`I zA6vKbxpz>-%{Coc9kL()Jw`EU^LNGnDv+QUGI_ecvR|wTqQUr~!6M?ngK@JSATF0v z)6z2hOY+sZNJ69CpfgGWQ#{p(-r&!1#X_W+AHm0el0FQQmUjOE`l=e?^s)P-l*vCA z$v(4yT_5)c94F6^tFyj@Z((5(9Ya(+%@_p^Hneekf5_wR9Gev?H9y;AF+w9b@P*1}U^Kk~YCc2@P6U0cb`pasOEH#PTTbF8zbhtisp7#TI==e%w9!MdnVddwdOgNhHaZW z2WZ?Y@uo#8(YJ31W+56 z8@IJl@Ols0gOntW=8!!)Y_VBZ5wzh1M0 z1$^E?qvDJE$#NJ%fI`GGlE+H9=zrc3O?^FZ{t?$&<&)6gQs8gWK~E3~BPxczAe+0`d8)Y&};iWv>yF0k+An^OxJ)9v;4AJcg-EU?z=Ag9>fIn<+0`u;c$9lR$AuD6iwXT3g}uCDzvXkl-W;CHaRdd zGS=9~030c+WKkIj&MT$%sbaQRgZV#1u18V{H%vW>+_5FdanZuWBu}|C#6eGkh3NT$ z;3XGj;nZY&x$$VxkG-~xt5KCfz0ZEdaPOibPvuuV;A(CBE1S&`@k$OGK(in9pYhAc zKap8sRUwvJkY_=;`=mth}DTR(TEesfT@~x`gj!3MwyB0DzghD%10F)e z7t_aET?m%ex*XoKkL>(`r2Pg}nZ0+&r;h^~q-01puj* zwsrIq48?!FUJ=|wkle@6cfvvi;+OnK_<;I1fDnK2>g6)`UG)x^krD844-RW>{ohK> z{lv&ydgm2}3e!lYA93P;7dMGPt3P@9Gb!l}Iy!o2>I`X0WdfO5sD%z=MvxMrbQCuu zA=EXNd-EWLX^r3OnN7>Utx?SPmdoe*X!8+^@g*LKh9LzuLlY80^gxY`UDu(*n#Kx1 zs-~;{+V`J(rY6r17ylcl9hKDpT}flUAQLI5+5JHvim zx!0oz+e@M*= znfW5{sL?loQu)%<<);b44|mKeK@D;eckqc5toQF@L}!7uuiX}jvvfHlau1G? zQo{aqaEH4c@<(1G7@s}f4n(L=`UE*FJ%keK0VjNNyPOesEI@aLqMYj){9P6FU7Ky% z{tr0g)x~+GsqNQf$L6rZ7J9icKmv=28O6wScqQzZ#A8K;SgbW08=pLvZ0^XSgf|nQ zQo+>Uz#xE3w&I20Uutt>MNH%((yD#YviTo=8Z=YFD2R#SV{8y>Hz7quG31%89vpsr z_jcbCmwahh^c6Wjpim12oUk?8UfH-jHAmhvM;977HtHIU?s)6r;^1VO)>@~@Gkh-7 zP|PZ!qegiROO;EO(yEx#1{1Yb!R2Qg%wjQTA#+fSIXKS#F_9R#k0xk}Yr&SczTNUs z@(Weax8cdgFCIp1?ejR253h}GgHbTdVwF>Ng54?HPrHD^5x+vjbUv~RgKhW7!cupy z$oZb6vP!Bm^RpS0-db8&orMHuX4=@pE!{2SNjlD8_RAeHNWHg5)-JLfs% z-lmk4sml9x8de8sHY)hj_ROdrpFI5L;HrfphEH~DF z=w^iw4l3up9zmY^L-HIFYAcFv&@BOoLC!7rNn&No|BGcYD zFImqs>$|HEVCU#RP|<&Tiylwu6DxpK_NC(1|0BRh6uaZ|%Qc~aj zz=B@h<>V;yIkPh@KEU?R4V_rRy(4LO_ljflDXKmgMnORV0T2}cXL$Jd7~M}+Z20UK zY2e3AHhkF^fXP!nXImyyG%c50T$cLRGjG9-LYBBETPe=lb9ovYs)5} zj9s0)KD8JVilKtVt;&)nLMz1543Lw564>7fDK8IwWGjWsiJ08WD1B9wOGbcxJ`Pf|xJO|Rf zJEm6$!wmKHA$@&I%Dv)qM^>i+Jg@9Qw_7CL%xf3v&7bP@)^S4BNJ%S!ftA3I8-lJE z7qvyB3zh4a6dTpPRJyL#!M?B&k3u820D*TLkd%a@3)|+~GK(>biuz*OIXhi#t*w9j z1GXAABzJcy&K8$7S|X}Or7GM06TmJ~2{rkLNh_twMp*4E>Xbi!Z;>GONVC07KDOBx z(cjw}Y}2IMd*fHGFlxW*4hFzO7h=Y?`CFdQWKYjWqm#;ozjqh1V_zGU8|OD}31lxt zF=q2WWR>pxO7rvM{JSl{2e26W5d3*1yKBE*8^cqoGGog}Mn!dUO4HO% zDYC$%{Pu|1#N9o5Ak1q%J^{glqnYF6`}NO_wz+gwzFjl?6tC~hlaI@ll!D?<7*rx% zo}nJtSLJftxbQoUoIiSV)5Ps)k^7|U;p876xZ9A18^APXNoTnRU4yhS3gWmekCz*L zg-sCc8OU5#Ma*5-?*Wq}p1Xt|MuCcs#1vfwW5zP0g}oehpOeP`ySV@%7;`z@g6MVF zcbZU)g-ShPQ+N|G^bbetPIA_KoAdS25};_L&&!aR*{@&87fRKb^r73Cn9xRVw~)EF zyRdvom1k&jT=KnMe`*g{xE+=iQ>S}a)karEPKmG7IRvbTUE9X{n80nXHR6SV>U8njF9y{MFIrVeEnW&tB9keA$ph>HA)*lY?;}uZQeZF!zlY=I7+ESWdL2W< z_!RmBX}>;F0;Dp0=;YX#?}FpT`A;Nc9Zf$Ilc2AyB7k=vjui&Av9XauuB4C8$d2>= z+v<etqzW?goRx*saoY*jk-?tU&mOp@s^h>kR!L_^z(!XZJ*Oq2dZ14Wm+un9 zuYa703fAdY5~r%8|3LX-Y~$`;@|lhJp}VYP$zC%Y_y|&`7_!MKF@Qk;8|HGsz{5bl zOk>8olOqg2FSRfhe-$DJSon^>Dsx(HD6`bjtem!n1gU;pCH+kLL*sX^b)y5E&+B4m z1QK2N$*wb$8=(N(y8jh)A?f6QncW_6mk}^BGn1UbDbFNx_(PrS>~&Bz0GRyIYZ|$= zgqu25Fq|FQ=iZ6A-tfm#6ZT)s(5X;}XRWF%k^$Gn z_Bau2^_Z;dU4Hgu&PD7_X5XR+k8pGt}>{DQ=3gzyleaFFCdDJ z%@u(4VH>|ap`xO4{?PsMP+1-Dba(;GzGmqxW}w87^KbdGEDJqyd$>((Lc*j2Fhxxb z4S%jgIF)7zN1I6A#Vxme9Wf#aFEDI&qy*fFD_fu@ZhQXf>0m(H-nPpbN`d^Kr>DxwnIpVsRVGDp5(_rkJoz*OL`L(y+|E(BzTQFdX z8KCo6_iJuD?Rxn4=T9nDUrlC-&1X9U-ob`T1|HOR%o?JVTAvl)@W z@1RTV(Y}g{zdOqunp#P(d<<01B+Uw5{fapXum$OmvzeEdmyNIQ)A{F8M#m9c``hd3 zBH7m_r177?uPBF{*+z9aP{rc6#{}a$K~nMCz$=b`N=O{sVc|_v-866eLC#cuU}j@~pA-llp=<)xoLqAM;I}Mw+b&hMSUemYvByFF=j{E< z{Fe@U$U9}jf{ccF1zkG;icW^P5E#j&{9}zjK6(RPp$S_oNyX9~CqCAMYp26f)tmX= z#dR~bA69%}NdtD6mZ+CSj%V|`9KbTZ0!2C+P!$LDTmB2`zRT{OE>+I`FlWmPun5_k ztBy{E;?%!8BPo-2><@Xopm-{;qnFr(>UR2Qp<`f^n?vm#6yl<^X@U=UIc@^J}sBFAUK{kn&rb^CQOu1QL8r6h=R z63CgHw3c#F)qwnqnGW7x6Ft1-w{l666NeLHey#-t+x^`49}^e3yN~UMeJ1^KU7lTv zi)?jeF_0`7w=syPwVf-<%d_U)L`&`7DP)5|ACYK_xp{dT`MJ1^^Th+ihRr`9BWV~+ zq9_vPy5tGF?&I?*&DJ}#6G^L~d~~!ezqc<)EFFrctVoEBC3ISCvltW(-HH7Y`rE|y zh&i?SbW9%1FFFZF4(z50Rs8ZLBC0$O35+Kgf2l_+MGk_*a+`l3D=se|LtI*$nnD3g zKTKliiF9>y)5nzWi>y_pZ{iFZB7!yuA~YYHNOpXhSM0(f; zmnz#wF{|fGU?<$~l@$skkbyi|m`Mv&_@=G>KP)JQNvs-UN|5;nFdl^fXj1$|#QS`J zWE!xgEL!!$o7erbIoa6G+}kNX3<^ObHIFDwv4rbuB@7^^cu)|r_bcSp5`g5bTwLns9GkPV%Im69S+hsH*{~X==#mOkFBSt-wq0$% zEV#{aVXrJKM3k16o&##?2GGa>_jPlee?4?}*J4jV8Nb?FL4GOtX+{(YbQTtd_AM(b zST?A-U2&zeW(R?r`jlIwq1z$w;e)rO-Q|7s@uFJJAmIQqS|Y~$=q}5Oq0uN0@rZ6^ z$#T=Nl$yDkd}WvE3qWQ;O0y4O*ga6~#?#W$3d_sA3>MtvZHPWXg>w098&^9E3TOdO z5qA23X|TYPRdQ&_f@wmysll=v7Z>LRpn&s((tP(Sz{~uBni6@APdh~jTqI~V4pCAD zyKSc(f&zO;?LrgHKV&Kr}x)S*V%e<{gFh2#ez+GKSQ2@sf%j~ zdiIgQoEHO1!$K>uVZqPGcaK0Icra*TOZK`L1(ucbpamD6>dtEy_v2;Wi)mSEvYbmc zv!6c>y+2)Fd7ID`EaZ9ZWll^@B??0zgpN*5MKVR35%aLtm4w3-k`0V7DD7Au0Co&8r7 z0n>)sHaROXC3&dlBDsfKt8z5>k(a?J{E zAoSy3TgQOo0x|>8l7WMuyAQnqfq=%tD=eH1ARoW@?P5WMkFzM!Z$Y?8taKJ>gJ zE+U5|ddn=9GPX7XKN>*1Cr_IL0|QJ8pl6r00_2Jc*6u#i?Zu%rhnCt?ccPBZEbP7Q zrybSpjs%kv6W)Mjp#D2Obp{2bQt)OJOXB=;57+{b$fez34UQDxANDCC4ZTkctM2lf$K5=)F5k>koB8cAi2cdzcLh4 zlXoCMAQZO${a=98F8sniK_{e-?d{7*fta+5fB&*5Dk}O`WONJ-g8Kb~#LH~5FoHLN zPSfI!Ckm2E{atqd?#>A}YaK!(nZ@*MMD{@-<;J!c${}{|Jfj*m1vF5Ex~=nsFfjSB zsuL}|rPbBBb)VBtw!xM~d%k)Jd>W-$J1`G#syys}q8KSPHJ+BHCJn9vLIClUI%7|l zG=&c}q-a?}3B(=zMi(jo`V@QKDHo8+^pf-;kYhF34)0NwGG;DqrrIpPrx|UMBu6bu zs_;Hy{Y7naMPa$=J-|#cXxRs~nXo0T%(ii7-wy7Na^^|^{A~|`cu<;!++1I$GDk1p zLD!Gr&8InlwsoEKUUq*VhJ+hL52C>XJz*4JLoqOE?FY44^L+Wms`~Hmg(!sGkCO8L z$u5Ja!VlY=Mg7?eQ~fQFDbz+D_#O2ho-Zz-qg>b#+-4gwmR%;cjU^gtN2txITOhWyquZ=8{Jj`j30?0+c9&;XL?_Qd;dZhKXCf zD?apwquzi>c@orR**3>P)g(!uBB$NL`vSCMT6#G!5e6+|=*BAM48i^X33maA{@%Oq z{#l7aJL~%aaa}i1Rkb68*aHAZ*Y(YvogJ7u@ig%~o(aRSD1^xCx}FI3&n1g<-i+h* zAwq~hPOJT~Hh}-;=;$hMKh6Vnw~ewnjB`Z4U5 zcYb17&6fd?U9Z+ao6*xK5DdTD9NY&04G039jij;3ilaiVLu zxVR`d=MY~IA8QaiA>5zFjWJeYo%|P^5>r#tKVXbqm_GTv*EjE$W|xoX@wA5i>d>Mcbhrz%+yaCrE7#I(37?{7NFfgLoFfhc^4n-9AItltq=TY4K%cP{L4@(xpkOjZ@HzaR^~+9^GJ&5o(gq zR^#B&u)eg*A;^cJ@G7HN{1Jy9o!xwN%YVr8TK0Q;^^OvqJ4*hpwtl<= zVeEI>)Op<2sk-Vq$^k=SQLfE;<11mfU}BpSi){`W}F^wLz;Gizx=^uD z4(}D-1-Wjwfy?311#Jai`Y%L^!iiX&PY&wPL}JUb&aA@Diio@}|sf_Yha|^-|-) zuj|ckpeCsAznktJ_9>n{Xu#hy8ntBQakQgyeS!g!KgLR}J3W@Po+R zMmj%vui2Z7)>#a-{B^Eo4P3R9iB=?ezZDS+eVc)y+}JjO@jspF>s$W@3WL6sno&Z?-Td)|V#V z&i!HhH-_rj*Y7&-Ks|`WlTOVQ+N>vwb?`$Vl+f?)xAJmSk!GzQ6L-={2VzJS>RK`_ zH7n;97Z<-TIi&tz(IlV=H?^}vTkrr@iC>*(5coya$5+n>COsw{Z!fEU=N$t{FKM6d z3jbw1op+qOn89d`jMc85c$9#y3Mn^_*QgQ_D`Qa2`7FclL1W-i&eYK=pRqxKz;|0p`bxEt8}LH z`FMDG?$2%mf>beRO4%_-uEmR)x1nz*(1#wX$DVB_sh~H~vbR4kck5nrK}aDc2Y51* zj$SAbM9W&l_LiH{pev@6^^R}UC@nw$lrJ3Tc`n;pnhKF6j0_OVq-%C+{SlzskT#Eyl zU?`Cy3x=p0zwllTNI$NwslthR`ueo7wE9&1h%zdbxo^UzFYp zah&F7NZi3gP?;epB~W1jeoNn0?HIyfiu8iVXyIq^nrI&2y_dj3;Y88|h4#N)FU^-y z=k*3oTTyI;-i>1An@}C^x%5#g(j>R>w>ZV%1HV^5U*LvR7c&0xO*zk*UHoD#8;`2WmZFwx=Ztir#a0Z`#qHU)K>JaG^KLHGq%YuZ?aMPu(90I~Ww^;RA?N}ZX|vwTH-Dts zqvxNLnb}X;*Fj&pGWf3BH*F&Bv);JM#SHlo0RaJd@DvbOv35=RMBqW#Oxg`9tSFnR zn4Okq{Sfqc3xw*O;8PrVTo8Gdq71HT-hD3G4k?s*kS~7Q%h+S?vmuZ!F`{IHMK7Mv z8=faK2Z*V~|3SlL#=e*iqWlOX);zt|35=Mjy(j&C=ZHSom4Gguq&qPUhGzlDeg3Z5RBf%?xr!vXAlva?!VBfua2SiRo zW20KxnzV{?l};as*FqSVgWTj9Uy7)@3xzsv;q~>dE9kjG>fX(nw`)EdCw}8oh_Dv~ zJx!2by!=b|tHox*GfBWJ?BZom74rT1fuuE!#zO(7q3`zH(~IOwU>AZ_?l|L14-C{} zl)|WGt+!(ZlCUGpPnMvVcUQWyfR^!d`UP82Rx4xsH)p1$L~ldk4)MfoAjdjST|`pNXa`qdNn&&X?inCW%TBv$Hln##YZbH7lE zv(OA~zw#Y4nV%Z^kDtoY@yMlMVN)^kudL(;#N z4c}t}Jw4+d)B9JpPAP*%Z60zAO$J3@Z zdRwhQoSlPz!rh;07A^y*hCm~Y6COrD9R#Yvdber!VU=wwkGmfQBO~KSm8m1oNfnDx zn#5yXatxmXvGrlM!Y9M^`yWDtU9U%9#7*8ttZT9szF_mbvkBqqVIk_eUsB)n++-3? zxVwO!>_l{PywPB6URjH;Ar++VJRFGIp&j}>CpEtbg7B^zM+`+a0b#eO0UzC{Qw$4PJNTW8-%lfQN3>tc8@11wCWt}fnlBS96 z|D;2lE#sW?PcVPNW5d+&wLN?S3HUw0ZbHuW;l0n?3jG2*4>d$=OLEE_uHCMmC(fU- z^jRjv&c%V8)whLXfiW{Pqo$_jayUt2xG+ExcK+lpn$O|ltjWZTVJa?s?AfNxO8EEI z*JnQI3j%t!E{ZgPyyfGf4L?dK%*LIbfdQTROg+v3_~U#@I!08^<@m$|fHejYhd_EJ zCeTE%@P1i!dn)wx*!tm6Q3|a)XJv6OP{p(@=a`rY{z=UV0Xc+iX}r)?pv{NVWy322 z_P-1PrKPif-lvOiF&=W0Xq@st0l)Q6Pvcb|yKZ*FHqHY;#6_6h$9r^i)IbYDuS}Al zU|_m>+1`P2F?ep?gU(r$o~lx+MH>p9Di4o}bFbOthnuw%0K&AxIEi1~EqgJKAf?H% z?MA2b-1?|8lDa%y;Zzvw*xug%UY5#ggXQUcwM#)2NZ%A$4~_8yF)IoKRsjP{XZ#mz+!LyUc&mRQ&|eiI}Ajht#Rp-pVZO5i061 zZ7+~WAu(tYxM`_obbY5wR`M(=(n89HIE%T;uz4WTO?4$rW(eEZ<%r}mB~Pqgr#z|; zGa01Bc3*U|j(@DkBNCoil;2;vPE3K^}K;Y(oh|=$vnBj!G?Lx@(OC1nm0wE97 zRKc1c1%|0U1gwYccELRwSiv0Rdl@GqgTBCRpr42@?LeG2Cin_2F&gLppOa>H34lYb zUHO@Plve$d&X+GS#VFA0MTq0OOiNsO+_<#G5sc#t7t+ zgcF;^e`r8lAy+$4zx5M_&S3~~2+*={M=wg;~E zl&4^mw;%7ifrE27E$-NMcr0Mb9ZSBXJQ`!#} zX`D@AEalYNmKG(FNFZf|QUkU4FK&OFQ?o&)M;NuKFu5cxiaU7}H%4=^bS$(C*v96S ze$W_z@c}Sr$<+%)5wVfGW{v;>j*})5XMM!Bm*6*b@eK+ty)4)&OFe!vOhG}xkpg5W zI`{IVgJ4cU0q0J}mQBCH9ohX2l2(i&Qee{W3#R8Tq;}#(XpJkPP|t9j`bI5mUeN19 z)`8};UedpAudb&x6dIJ!U^l1)@y1=ww{HMzHC!m&I0Z@zP&yb?4ur7)^wne9ZOYB; zHCb)crjiZ?<<%P+v>e(sskE(eev=y9nukLauloo*_qY}Q#@*4a@2~1=^Z2d%%bmSY z=Z((%+glHS+?3_HqG^p>H4%1!|Gf2a!{?LDf+P-b6*WmBEtf>aQVBAssZm&G?V7GU z?5bjlY3%P_sroUgpUL$IafX!E&gP6*ocV(VI4J<02M|Z5<&=ZqQk@0z zO0zT6(BAkSAlo-jFR3ZOQvipOxfFQ%y~KA?L2+xwEqkC>qf~kzGbNIXgq}ZXvu337 zFQ0n)T=XEf9u~(fcK8XcIb{I|7UMVf7$JOzYN$((@Z$3(v?a7~OJx)LZQSxn zMZuPY@8i=`+s=N+0o1+@;CR43o_apv%3(sUN5Ey#H&J~weOt+H6Cyxd`P^?sjRsGU z^er#z`v_`$_>gJ*lRDI?DBjknI7uee;>BRi4VLuIx8wQQOF2WjepoHwx797kteAx8m6y@5ntFjTyE$81`oB{(|_`XTYM-I&jW6^Uz67#FV(y3)g>A8g% z7O2^v;L_f{5-2CX*RWtZ55Ng#{N&u^H`1lT5cxbgo2q0PtMjIL<|^FG_a9*tzsb!9 zat+@3ldE#0MfGo?3|)iBiAym$jHy;UQC2H)sXlGSpFWF6z3XB~g6v$^9O2g^jds89 zKIa=Ryc8r4yw|)8AF_avdYO?*(26}>X$GgW8r}3oVK;a`3#X-}1)KW#kS=(T+&rqO zYtWQNd>|C{$|=Zd?FKj-1`?o$P1!X??~n|E$`{@V6Hyb`k{4ktCaMFRKHk0KGF~!WPIbSErGw^cG z14{{{aniYMLHW;+49v2>>9!Y0k>&$;9NF?^P7FGeL6rbHY^XYkM^pbtjFa z4VeFc==xP=GdBrFxlSdygm3y&mX=cOomT`^RaLbs=TZq}jemGJeB0Zz z1ki|2BGGt`yyhUt5D$J?sc{O$Vp4xo_dEKtgfi%(To`926%Bh#%ELq>`*KI}zrpC& z_p~wfpT2yafp-%Zcpwt1eJ3)}G=L3w_CA^CgP z7lno2IOG{L!7v%^ddK!&A^9xqm`fn9Rh9eF%JeJsy{N)RfA0E8_7WD@6dPgfwIlSLli4&$8S+ou4C2qlQ^M|7BJeBd*W0=2vqmf7h3E6^lvu_-Tj`WS}ddjx4sk>7yzjJ zPv%imvx-|ka@RF78h<=sVp0`{p{XtDhspPR$HD+{{8Txo5^9zE!{B4vmP__$nRta` zc268ud6IV(wCs*sXzD*LiUZ%-uPf*Zn*BQTRA8^cCK*IBL;PsVtA&e10}P2B7~BKAev;fBtBf8 zo`WAPjWvB(+@Typ6vZVh7~Z-dak}>4*BZiyF$$^xx~ubEj1$}>_m_c*=Bt_tG;)#8 zu1}7!JuvH+?AJ_EZ&BM!54JO={d5vNG15iwB*SkKXP~dJ5%!!!_CR@E z1r1UBr{)H9ow#tsvP7g1G`Z3+Xhqk<>9{Wd&>6rw0Q_e^Ay{m!Wslb+sp3(f(^mOO zs9#DC%G*0khF4n>Yw4WdUYsUl;Y{2p5hJfJYQF#u{XkmJt=wUqVu9 z>-9UnINPpi;_KYb{aTme4YANR7rNT*E^gQ0_bZF{k<^7ScQFANNP4Yr#DUUMdj|=( zXzSz1_oQ|P=AnvlXO5e6O2!kFAXoU!x^J46DK$hQ9Vah1LB}rI&jj0e2A*D-idChl`_8DnMfcwl z4ht6Gl`bb9onwSGD*1}3a)O*0Y61fygrkn)nA;roLwWTD{8AwwwxuTI{jd@?0`r9zgL?WYZaPR=aUqRzp)3%kH?2#EAn z_LM%`r*K|yLKn~NcB~ko`mmJ)4MMvX^Zd?$QB1>{$nzEP`TI7_6scZ=u|+^fLM_Go3We6_ z;J*MZi;t|=r4RxX{zLX3nhGI;y1kpZ@kE&vdUzK6kdzW|wzT+Hr@+Xc0=xgZ0wnee zE#fm;4|-1vZ4fG8Vx)h-i6Bm38!8oZZXp{#!@V9+N$TU3hji@^u-Ept`G|cSJ%-)Z zY=Nh_K(%TOKY)GnOBTn%{^)XoMj42MfFS)IJhgd$IlzHq+Y>P=>R10(+3vY<{-3e{ zkmno#aRZd))YA`NYdk53J{EUchGm?Ye9E?&6!Wpa)okt^=C&N}5Gq*M(osS|U%k_R z&C&np_qP-Xbf(}zt>E>d1B3< z?I?~~N|uv%6_Yp^^h-&qCPn3s5K0L})pUX3I#d^okyi!Lt0b4F15aYgGXh=X8a(R znU^QTz1s?7rtdRmkSL^1w5Mu;0U%a};7=vKJ4i5kS&q27gdSH*OL|t;)~e2$17N zji{Uy-O`YNQej2OBBZXiF~PEX8V@hbx)q^%e6R>w_qZk1zlu1>;n~4LY?9RWDz2#^ zP=eK1_+{s>y{B7=#eHYiGs=qB8Rz=?noRlH!{cjgAiBw}yQ%JpZ^Mys>BdNdNmDq7k5~Yvh6##e`~^J#$1k0CC+t} z3=`A~vu)BUTGQWI^yms{6?A*CoOKpF=V4O@UQ1=a2c*XaP_+<%Fd_jR0rVG_ZtG=TgmaT58 z^o8%_0D?NQV8dVQ_>DOhpyzuQLvd`oP5 z^j3MMF5kKPaEv>yhEUApU5LV0&XsI`8n+Ev#QYC&XGZ5ktBA`>hBxC4Qc_5<(OoWY zvPxXxE1q4^r4!`6mE3$?X~fybDx^{BWEw9cD~dRh~Th9WAytT zQ|NK~;vgAKh^7bx)EjgH?PPikSwLq6niQ7H2fNyTJN)kI8ymIJnBp6(Vqt1b536fx z8h-!Q53CAKLMNzg+0n*jBK?^?h-;f#3xUXhd3v_5Sl=EWxZE~FnXXoeJ4y6ZV|HPl z)0MD~66zZhaM{$&PKsBdP3OB`xx>;%Fy}!cL+hn?49CP^LW4C%rTx}x# zSLUFU&)?}m5hX&=o*5+rx(bRBf6Lekz{{s>K2~V|Ck#}4jKC!r&mGLJ zS1$gz&Mf>&%D~Es${?e!){3NviQ0$I#-q4khd1x#_SN+M{-9>3J&to5apMldU!vrv z1e{~vAJbC7#2apfRFW{kNM=$~_dn&$AxBvo zAegfJMGQ)Yaes*7OBjh_wfk*wLr7@)aSVd19HTKA)o_)q*e{vQy`S~RWYOrB@GcxH zZb;Kk1Nk6Ng{aN^#vw-n$(rHEx)@Dn64TnACuNq-2Y$wnk(VBiTr+8Zhl+9KLMw|8 za1>d>MNPareC|Swv41P(1g)NKEf{$jDZ8BlcO)JWC_+h>_F(FJJ2kDU_bu@8_$WL5X`Cp0Vg^p`&o3rv@Awg^XX>;Z2} zt3fwD_sX%(A|wc?sY<^6o|x9=LJfYp|ic2cdW@*mmxcfQdTQKA>k zR>=IFdt&}pyyk{r%_&LK;R23WbrB;ioq5hM=o)iuT2 z`#ammYg!63@T2+@6aVi5t!bGe(!kY2#N|jnGsJ^H7 zO3?6eD}W<`v^>)WyWEc8tsXvu(#92R8Xg*39;B`7Ep2TjEphim0Bf4FedFefoc#`g{>B?_Lm z0q5ivnEP6hL9gAy5ONGua~b4P$@tVTm6JB>b~29{e3_I{m;xKBBBQ;GZ0EJPQ>(Sp_aWeJURd>KPqbW6SbWco7`w? zamu3oP@e1i(yyWfX?a{_^CI=!ouh$b`#}%lI9FFYe$g818wJ!Vr=%@r+E}g7*ob3M zCCBJq++37N;WaEsGC~M+c9uUa4WH={-MWjb2|<={=Gaqj!=_=GlouuH@D=19)KE(| zL}a}0QbRpT9mD6|`SNn$8g!tD^MgA3E8;sk-t%Y}4u?Fu1TdQ;_cEb0HpiZaR|5Gr>5JL+hOl(YR1qfrIq5Ody2 zy-0iIO>0VbwHrWg(_0_o$_lYuQW}*(i#ZT(fkbe#FebP}SgoAU6Bl?9Y4~i5oGkHR z+xFMCP1Lsa)UJ$3K}Z`HYCr!eaOBJL+7Fyq?}`c#BT_9)(nXPUBR6Mw0LDgI82ko0yS*V)Ie~A-a@2p@dn94B2^|&2bS?Vbug(vz*r)UU^>YK6mg>3kwSm5hnMD>v!vSpp$!^Q0h-J<=XX-12_^p!Eb;ipq|vC zy`sS;KUHhnhZ1P@aARCsq4o64VP*KH9ZNm=6x^h%F4YByE!z~+!xl}6%3IWybTj7* zeB2f8AhpL}VNKW9^v%;G;UP(kZZzX2(aibtI|4Zj_If5Q58{kWxBzIpQ6m2LE<_vr zWMj^SY+Dzvrojh3OK-|Ycgssq3QQ5-jetKRyqW0+D3tQuS-Eus8XH3+txUF^xn`%Mc+-qTIEG`kmvX@;vR5@8*%U`tqL=qwZn4Mf^p_d74usj2IPOguh{0tY``i{tSYFh*tPw^*#O(K@96sDClr?>xHGT=E1Kjpb;s?dEMd?cKvb{&(LV?8e>#ZDI#3(+q4k!Ve> z*Q!5hYi(zq**H~UZsnRf^Y3)9nF0AcD7dAoXSJ6dA3qI2`Xf=tBUtj?DW>>Bp9jUy zfLzKySYMj?xa{`KkIhJQh`ftZ7T#_8BC@~tDQ_{x{E z$GAu^w3OrqiD}g_RUY}RA)w*A_Ut|Io!f>{GoC_p0q;^PSA9c}DKET@Sfmcu^M z!uwdsU+$fo?>3{xPdvG9HOX|fhrc`bojaHN?M$J^S1~^XN%l~^!?rMu z^0c81Yww}|-Cj+XRz*<)b?hh6Q_dk`;)V|l;HBnsakakn+^d|b9+P^FS~IC*&3Hi} zQaXsv%?DRSWu3gA+V9#oyPn;3c+`sCNiV!N=!q0;B=|*YvqX-qxH@@?>HW(fkr>IT z^I^X-c!9|IqOkK$qxB_mMbFUiYn~`$=~uvmX3TYr!b#AM{*WP)S_<&e=X=1Mp`j9^ z@+otEh2MHV+j#MVxx2Cxp}v`1rY@B6R4O!5V=$P^%N5m_-# zR#-Xur2KIHge~5fTEgC&w~mRP7xVj zo0VwPj3Q%H16&Ja6*Fs3*;`H&CZ{4HJdFas$|jqnpZuk}2fsH@Sgd*a!Z{v3)&!h( zX!uX36`((xDtvsFm-M}z1H2*iq9h2gK*t{Nk&cY0uyp8Lpa}^I{$~fUHIMK||Jp~Q zqmxwUwZTGaz2T|6gJZkr;bjJC@kmi^O0b4CVD+&;!b|ME`jcBwFysc$n!#GYMdG38 zov04hp(9H~d1h25ph+2nj!i8uQj;a>N_Hw)gFg>ahV?{)hq83Dzk#*vr_Vf5#FMN7 z#M&mr3!8!@!v9()DDLltcs*)Tcu3umq37*{b2++hqfwYLo|3pl*0ON%v z6ImDfA^r5?$|q3J$wd0+j)eIQ6$gt-x+lo*@)M;PQZzVCD=O$WHw*$fz*kCQ2vcp? z*w{*8)jp_wL}k^@R4<#c0`Y)TIoR3L)mEagsbp;BC0s;08^=Czc3@c2!^!3`A{b{d zt6vGJWLbW$H1y{i3|e%5l9x>22?x`31ZJr;P29}V_aXdE5EV=wWa+fnG62pHQ7`d# zO#C?{Ru!9?CM88w)s6uzx<3%d_?;`mD)cSX z#aJznO8?PAV5)@PB5CWV7D>!%-I36g>2O4Mm{3S&&?YfxT@15wcV-;;eU|yStdC~y zc(u3*a$x1;!?qBRdHnHANhA|}V3{g$gC62c^jZ5+6~Va94^1ZEm2;54Ew1`tbWUC_ zt%|wbt>{n|k+PcFPddXPOH11XY3KK4O%va{dKCN!EtGo~izQs5O9y5lK5z@~r+YGD znJJUel*1Jr$kRt;_H=bibV<958z@SeXw(Hzu<87fQoiG>VmV`wim0<*`=Oq~L=^os z$fobD!>dJ56oWreNYjpRaGyWAF=!NhXH&EYaVu~XBQ6(&+lP$T+n;0oV1k1aqoMRb z>4Vi@CO5JN9rS?J#tVjKMf@~9KU|t$e}J*{m)Wxl!WSIb)%Go|oxx#BNM;?JCMz0Z zvHhN*P#GVjn=oIVO_^yyXMfFJeREhXJ@j=`!)CB#kM-G^KYwVAgqAWOb}pm)044}z zTNmyIw1TS-G^;+7Ch{_VEL$mBIj8=G#F!C}M5mos+wL7cD~B@FcY91%L40qDvr z4I#f?RCGg`V|YB@+tE|ksS$lH8*rcoHd6H5H94K6AaO- z?D*&%d@2=lS0iNuGu|NF*nr+`KZQB|dN z7D*$jrNze4;#ct5AkXi$c!Xc*EqcKP#T;7!8z1enkK34D1`~wV?&sn-+iegRjmiPn z_rUTp8DMTuRMJyv<^QIhNkq(ti*%}4xsaW0ll(&<8R6|gYc9iz=0gvID*M^am1Z0QKF^iiVSCK^q%}{aL;R820md`e#RQDIISDfQF z*XVY94!&RcJsRt?EBXbzz*Q=~7u)$yrzk0=-U8$~H(WR7t$bfCx=>afl z0LbB-HH5Le`gNbySo9H16-ExJWu`D|;mlHK##XgZj>_gky zh%|eWU1{$>ij~m{`htUucEC~vIm96x=dM1;CYg<-J zA*LcsTSQUoi47kglmtOz@RbMo@_PRu=ZD4XWD2&uxeB^0hBv7lZ(}=mWK;|}!X#b3 z+&S>tKegXhIgc9#mVILNXsM19%+>EOc112Lvp#eeB^UQj7CUbb3q!^RWH(S=Jik`O z>{VVDa|{uMg75V_9vD%9Z*Y^)a*1D6b$s!IM>)TBT{~G!9ZzNw9+uO`(zRpocJ#1s zzTGBu0%M|(A0gm#+vp4!8z1N4&wF|GhsZ+JcM&CG@hEocsRTL;g0<}5>^_z*9A~;#MqhY7-LPg3R({XvCj_h$xO%M=T>t4|qawc)!Woh?VFn)r>Inkc&WM+N63t z*&6jJexG8^QGYkC;uezn6022HRRsbpcbU5jp)>?TJc>z_J0Zwa=C(dL+6=-vo zJpM__g;_2mpZ}R4&2LIP?|OzSxI6h$Yk%+|@F6S6*55Jc7_ba&yk#SOj1~&$c=~-@ z?f32iI*@kO`E;fgSCecbG?@Nyy}eC49>Z9DV75Y(>1Y<$L=C<)}a|WCf(Y@nE30i+vV;g?vs}Lw_VYt+OK)GQyYG+{!aR9wo666=g zkwV`W$5RW`)Te# zO+b_XVP_l}UwWmF^Dc|al>R!=WG3?nPKfGCPe^m65#}CNeLaTqPUX?4^DY~AE$j#d zT?+vNZaenRQeD-s1kasAziWVnHVD~?;Osj74Jc(CJM#_Znjh^Dtm!^q@jE)yMfODt ze;7_*jLU3rP;};O86!4wQhpo6l&@5We)kCNEnbTghD=+QJ8G5ngvC*uNjA!y2u__L ztbCA&x-}jfRM7b=ILHkQ&;gC+Y{1)gzTQ##=XxT)ZK>IrD?tHMRf#(jxxrTw)W#I;W~rp%vQF40C{rd5CHd6vgBn4up15`#q8@~I_&rZ#i-Pbr;7CsN-n7aDk`Kd*1pZbwL7xZjUaaKJ-?p=)Bobxs?{ zQeuuiE}PGnSj;^(G(u*`)qM${`-$(D<4wzTXB0{rfvl(d97H1Qp{$Gasoe)-vg>vf zBeUziydyfonzV>gWRkJelhoeAU7%>`7?bbrj`J5OEPO=l*9n`PQBeKE2G@7qcf ziPy}x^nA8#$?aF9&jTuko7O@9tpC#{Sda}Wbdn+Jsq{Yf*~}sl@=jbO-4F`VQzGS5 z^F|tFLKNknH;db`{vb@U3}ka z^aNN=j-ie#`=hS|+rlh2Z+;!dOJl&4h|)|pwF@6wUb?R5`%wCF4L665A!Nx%QqkYB z?)En9-7;j#9)JBk#cv(83tf3oblV;@K5mi8IEP9Y1b=^aQ=TtG`FQE?z#`&%J~w-J zzH?&zMpWHF4Cb%UY^jzVsM*xVs+dAaA(iFP6X-Jbe`e`pG^iQzx5Trtzt?`S~Am$J6E5e{)h*h%Zt0W_fZK{U>a%U6+ zU~-kj$HzBx9cE~My{*|uB|KT}IDTOA)p^kM_;>mA;~j zmp0BXpt61@fU|hoL|P0abilS)Vdtp11jeEKoLY{M=D%cKI1GOUD-7J#hIiv_wqjN9 zP`kNLT^q6&0li;uBEk(BlJTYmF0ob9zRIgi9l00np2S$FLCXfh7(2TlJKp$Kmv9b3S@54#ge>g$v?OJNcjpBpY zDgW<$O8d%V?*dhF#l{tmeWLxN+bA2$mV?BV`>Zq4S@^g@?i4!OvdQfde6@ZHWREVuK^coe)cq_BLSEc)Jz(69XcDct1Y zv+e2m_&f)Bew5aQAf$#*umxZgKNeQXqGB4sO+U^$jOd62>H7LqmxHyt>&+fI@%sx< zB&s$UU%!f}kED*B3QSZTEp$GSB_+UM--HjY7FQH`GeJ5IA#LzJWVE8}%z|4uHX@15 zPTc(*-kZ7Lre7H{PCxrI$JDDyM-eS)ZVwYE8@}Ka%=HhSjPJLJr;ambY`R=`FZ!|y zl+fQ4YS==$kXz0>pIi*1=rwPCzo_YsWR{2yc#`9!(ofLq_6nD1HXT)|Xy?|pESejr zYh6mDJMO{7;^{^6X8(GSjn5hyfm1=kQlJhsXW9WXy1J{MI z7M+1?Ji?GA12}-DdBVx6;CQcg+VzBJSghrRqjKt3y4}ntPUI|eN>TS{x}h(m7!3+o z40eCI>9hnh_e>ij_!L%{iABgcYjP>}WFw&07i2v&Ejj%dClxd=df!F2cKEUtTb|yr%K#vBM#GI)of z#fU=J0Os?UiYb~d=dNHJEiw@EJbAA&?EL&#bDe4O)U>_OrNnaEoK!|~(}E^n_%LP- zbbrA>d++j%uh@o0PA^*VUiy7sbNK^jR1&!*s44-%d&yWqm>HWQIvz(|zbd(p@Kc+V zo~#dWhWF*U>dc};#)uc|k9l{Lnj+j;y)%%EJ>Z6%wQR>|*N}K5D?SfYLASMYQC7yC zMiI@xEWUJZrTi9yq5+i3FcKB8+2%^of8eciMz56Zn$Ym^G0B2KtAi zV}{9OSf}|%{vyb1D-kb@DC{@@(+0q(B{0p4|0(Tctu0HTqpoz#|D5G1&<6yqB2;;@*S81C23~P)FDXDTfdAfUD-mj){JS^U<93Fj%>5I-p#Ls=8JA_h?v6opFD_P>V)5NcSLql(lM_8}B68^8t_Q3os22z--t~Sqp zlg+A2M{w(JdQwjp|Ew^@ERoLT0axA}?+UGtWTgysDLH2wi@#uuCM!z&FU3V)C^g9} zM6eY0W?8G;K5OI)*~F569?Rtl*B1T|-zXDKNMjl9LhAsfmI!mvDydBFr2bz;XTcUl z8--!IL1KXgmTsj%>F!iQy1N^sJEWHG`e>2vknRu=P#PCl0qHKOZ}aDN(w4>HXOkvbu06T2mlBy?%46KEW+XTX3qa#`+kFb8H@@*X z0MWJAt?9GFWogX@(orQCs|!B0MYFDMl#wUxOLPZnigc<1v7d|EFMCkO%jWl9dcrqB zm-48~JKdBC%qYfkw*f@7l9x zAxho-bN`aip=|UKaX-lAhjrz)S45^U_vQ7pv&zZsR&Ud>){S4uFkzaQ9?BA-$)?vF z4on6?t;itnOQw4QtZkB|h zkp@S{O)lu4N#FF4c?phsWPL8h;z`LClKq+nG z?*NGmdkm|KFw?KrO&*N{=1XSI?y&~W?J@ZYAs!^;U|I!p)mW(*K6>dfww0OAK-3jN z2DAYdD=u*%WpZ27QY>&{wcK zYdLWFPdpwh$BiMZgUFqW(juZeA(4XfF+LTAmI0c2M!+`tI#DLF@=yq4Y_a=N=B_Vb zLI?+5`0@4vRtIHdpB+Db{|9FjUGJA$>bK`YlB1mFOB{y(s(+{ z+`Os|C8HH}-%`g6{!0~5u(M$;0_p0G>t%PLN4cH z_>-ycg+$f)`&%6!B({X`eMqMKBpB-nq>4Oa8Bt0kzwawy7da^`)Y~=r%SY~EhSJj+ zvd&gY*u^P*KsRWbH7RMCH3zgJTsVS34+1x^;9$Xx&a8VbzFIOxdxp`#r(c~MkeF=$3WtzNtTq3+xT4 zb1tgZ*8ycnVl_))^&l_do*Piee{1<#6*PkJMibm7if*9GQu9HBzHH!&>PmA8dHz>N zB=EbDrMu2bNB$*s&9@);fkfgHNkW1)11J``cnZT5VA} zUUM#mr4A2ffM-DoElqm~c;pLz%81|Pf&^-cBDAe}UcBui@9URFzx&nJMK*Ks_sS25 zMZ2G}1F8qV*n|bNtJptlkN$453*pfQHts>M7S}z|Z`Qo{XaAEgo?H9MI|)riDdW+0 z$&&F!wh&YSt*gR7@%%6I^yLB869b8b7#gH@ocys?GABTz3qu>Mo}arkf$$ZVThMnSXk6E z&_hKj*i9Y6{N}B~EzBQ!V$}=#)GZQzDxuqf7(t`DhY0X~=y;G9)RXZs5U4K2#*rhb zQ~WobgtuIMq&=qq9AI+-A2mL+@cg!(;-83S#Rp~Fb7pG{UL?zFtQvg#3a8$hq@J9r z6|>_gBiA-|K1=+_aE?JzpU{Fq3AvSlmQkIRTs0@lktM?WgV2J^h+rv z2R5^@O^#&Yr`wk@x*Cm}{-{{po3q2McfwYT3=)@9N)-J@@?`->GHJt~te%OTG+#ga z{EM18ldOK);I~)QVupU}K#p@@K+5hj8MaXP)G#~$`h#jq$OUKDMrO#f`onX6?=xP( zZ7DO4F#o74*BD54F2WKtcW|@Rbfbk9GdwE(Npw0maqMX!zi*GZYtPq=1ggP~% z6gXDd`_2NOPM!ko?UGw)rN*KZcLmqnQt{mJ>{~3kI;H87WoTty95cyhr}KOiMkR6D zHF@0zLzEdA3QnR(n-`*m?0Y@j8~@7mBS2&kR%G?;F(9o`amxxf^_KxeWo`o|}#%XkfAe~L~ zZ)+uAxzBYO=@~!uBb#C|K|hk`12IVpZqote@yQe_}!GDYy(@{p2KRsI_KlAh~Wn?S|gb?9K=${k(HO^_d zvSzIw)6iu_fjZF7X8((sCYc(Gn6(|NC*{QuMWc+-NXa4naX=+IX94?dS6;ye5$-4C z(V=8tJmaMS!nL7u?TO zMd3BDf0eP!7jow5sbW~w#g<_(g-q9cv4eU zHPa(818<=|@rzu9uy_ zlc#x;)4Q6_{}|DvBMnUYHa-;M{*9)mGLEyu&2)<#;lam#AxgiVk# zzQIbPeD52r)(|J#QNka6mfaZd7;F4X{=1bx^3G;a16OwRc(}5K%mRKfs#_ixBp!@+ z4}OcRWKK|AOdxbbqY`(7&0%v~XzE8-wiC@4pa|08xfKY0g#S1fxH09!TGn;Rl-Ey= z!Jt*jm#3AfymgLW*226eF+4#uM(0am*t}kKu>oRaz8|&-p>izgfdw)I>Pv&l_A1&& zY?C|LnFW(x{J*ESCM3x_xv(2OSub>{ z$s!m}Ya$-~cfQ<{p2l#BexI07@0!pmCtyHn`NtroFegwdzMq=3A%r(Ei7u`jijNf` zS!SQ=X@*_;lNlVcMrY^0rDsCk7xS@)Xy?vaidfHyR*`T{CYdQ|D5w9wL{E{@?_YD3 z!l82Q8HxC;8Ts}8{;7ff%vrVy_EadwxWsr(ihsQ8%lfpyQjpPYXDD1?@V*4J=+&_i zhOKLC%we`+-K00|$FU?elI5a@FYsIbR3ilTxDMO)o$-G`-}+4zK2&m(<0{UB7O%hw zQk@hIhs&R^!m`xUxM0n`%e-p4ofIb<{qRvRlW0yqNOYSnK3u1YPBYQ=hYc5o+Z?T3 zEtkEpY@0@dKI`l0mHmklQ_Wewi$P30ZigLEqVCmq(^kJYUF^A^__D)%3-S4-Ws&SC zx;)YxZ*PO*f`aqM%SS_bz3VM%p(hL~x5P+`{XYLNNcm~280=dfgY06Qyy6Sq1QM|7`s&8Gnj>OivwzeMU9dm2l=Z#)@z-H0awNYUX zVFxxIPg+W*maKHd%-n8i8y(KS*`+J_>=hFrB{_lJ%3!xSy>8h*Mqe|r6+pJBgk_i+ z_&}%WDltrJM`-RD0T&XO+q`T7ZV$onwbJk(w4uxxj-;y?j#W~z67X5_2wTqZPXGj| z4g!34W?56lU5Aa6z@mH2Ytabc733VkSz=$}2Eq}sZ2t)$VVU8qwmwfapSnayKJ)|Q zH(dlB#D^=B=eOc#In>NJyt3Sj(=zm>6Cv^56_da-dZkZ^a(Pdi%Ig)?V3sv7ynAG0 zT|2zFO(jpVxECF(sT-Id$cgad)w)=As6IZB+Q z0mcR3G>3zofWG)}x#?xuJiq6u#Ew?;)(qU(2n4T7G_BEPM~Q%jQqr6_Y}NT2uE8)S zZ2zE>GkDvjAYhMC{NrDIlfWx^-%V^|1rTF9RGEQTz4*+L)CwhEEzz$fO5#I)-uIQl zIokP;lJlhBe^xBL)!gpM+4-?0bdWFmFIl?#T_LAREWx`1my(2hFYs=AV7X}N?CT&I zo==VOV_B)A3Xx)xzEK$AQ2K~80jVOg?ZWSF%3g-*;+iuwb;^JP)cl!lexPYB~+v z9uokMo!!3#GG7t5%Yyr;DxDm!V^0S@$HKYvR;R8z(4rIB8kVRU*C>-lFu|b*T9sP% zGDT7ep%RhI0(a)Qsb~CxcbQi^Hx~jl&}a%YTh_K{A zmQoFrkYBG;^_5J(_nzBv} za`}96&v^d@;~_RX0aen9aR&d;WpUr+CcV!1>W^~4IlQk4A!vK5cK{Z!Aq`GW7I&P) zXXH+|PnT>P9g)k`Z;{#(Xb+7{hvK`vf+;nKBzWWg>Z>4B;Wc`ti~UyqTWWPJTT@rF z8tC-^3zI6MlataEiEbiW`VXo%SYZF3J2q}9Y4YLIXUG(iEnB>zzf8Tq4y;8;v;W|$ zit1DT(#e{FQbL4QLTmThEuxQvq=dzs>o1W!ZP4&`bJI0kOSH%Pg03f1vJLpn80-fA z3|T6+z3HQ5WgIk<8+3S=%jo>!FMr~UkGD}K>@FY18o#+}jf_x-;*87$AkuD-P)0tb zNWER?2i=ep|M-EVmIS=jPd{VeESl0)YJ|I$uSRH6()5Q18c=yFt#zD+Oebj9c&GOL zus7S+JWi0C@97Cq2fVokr1pgB(aX%!l+=|c41t7HHeQmK?cN#5aZDzjI5|s6_d~CyUtaIdplg2dI7kIe-}x zGYJ>i-aV(^R0d?TBvmu_AK}lXCVx)5uey51jL@doLPjU+9j3n{wY z4;#us7_=yWT__t7bWRV09<&-bi~9Y(d(UD+_Le*$MUWv<;*X|s+$JczAE72CU|%OE zTu@EWcvy~xJ;up~-l5nyu21_GH`>n&s@18&hfK%#_fo#Pwry$2mKSU{R~`S)6WJPuZ1e2pX6dhQ?Fa>L$+7=h6!tHFwgHkkAQ4Vi=LbIG})3r zzEPdt%*-gw{-i^yH|Z)++%!A>p9$@9la0$=0Xt{ip9``BKyPFghSiz@? z8HS_axBbRsd~R+oCScg53Z12|$VT#A>IT3{NmWYO>uEE|=JMJD?!9i~LK+OE4nH8q z-O;Df*#QbHFRM@_!<8RW4BLJCK`JCZt3JTGyz2YR$JsrOw3t1d%vq&OUc6>*oPUq< zR0u+SWl|gdTJ}`GViR|DeR{&x=y3=#h%NNOq6|2tztR;XohOTip(WixhKpkcy^P8$ z%3Jf6r7+5E%Jp=0fr0^KYJfWt@a(uJ=`<~~+;a}}hp5#Vq`ViMfggW60b2XhyP4nu zbm{=t2P+6-(4Ij8O2OejDKiA|yUs=Td0hUCa0aaUVqIH6aBy${O#8d5BZvhL1=fY; zX~H7+Atjqh2?_5qoKnfB2G&4|#b6xzhz9&6j7jsaf+pV7q~>_=jz=cE4VsqRSJ9I~ z>8NO|=B|wsg;sIZE15c=xZyX(u<k&)Ja1a`TZ?{I7kkiRz9|f&f)XN)4g)!g zpGiZ~5z|cJW#c^o8@AC=)GlNyPx^r8h=u|$qz6)$nB6ZpwKNyQBY0Y=OwzuB2_`g+1Fqc zWtaEriO{N{{8m`)5^3TydrLrw=6g|Mz%G$UJ(DBlPMDCE;@1r=tO_2wa~!Hc(WS6c zTw6mHInbNg8cTNnbLiAJ8k!h%w!#@uW?YwfQe^Ze3bs>~R9puU59(^(;KG>{FaOKr zZPcc9@EQZZ_Q1Kwm6+~*M*iERTVrC8{HvQ$*0HpwdU=7rp=w`HiQ_d#v%1p0Hl82F zoJ1l@WA4(Qpfycl^UqI@Xcfk+^DnP=IDs^v2oK)avq_qLQ=fA-5NHA1 z2W}8xl=RC!9RPCx+nr(o6n^^D8zjC6a~-q}HkY$!X?SWFP7KY21zb$s$f&1nGQe|p zr&mvI)xZb<Xq5SaetLX*yq}!)3=e26bXo=AnnQ4X zV9pepBlAszPY^&}cphUvgdUGYe=KC6L#2UUj28*E8u>(; zM}vk&_V)G~N1gb{UqE{{YX!{+VxaHz_C7Z3J3D0i*i4yXs{pCc%}7nhitNAO+55+! zici?pH)S@@*2IOB6xII)ea?D`not(AMIU#xHAaqh!d4^QG@dSAzPzR1Ddv1Xev|Rf#E^T0+#;UCbM+A*v7`|Muv}McJtn?T!FIvOd}<*1YHB8!Nw*u zD1(M$vwk%jC*b15jHZo~PizP@qY(NfFeg>i5ZO0Ax=Zq{on;V;txiIXjo@rZ&A!ihT(t{{~2}GR)R9hQ@`HdZs;k{c$!5z8xD2T~s6Y>Xk;G z1S|>*TEWBsy<*rLs=lC*Zqf@zlbxS0i_s4}Cd^rfYb~k6Wzlv{j`+94fL|yeO%aTT zuA4D*?j#ouvcm~;v@W!=qEV?^ELl9EA6sjnp@ED*gf8(1T@%*tNxtaVi)_cdx1KpR zGW3|*P2!QJ>o*l931zOYo?3T~XBCxbIL&nnVd>7Y(tFWJ2V9$oPad_wrq^%QE^J*E z2~ROML`}M`u@{4zCT?MNulhtktv^z{_-m0iP!W3nW$<6{Q@6*)#Kfd@WtH2JffD5C zfitw{#A5YbMS-9F^5NeO0K1eFz#_u|w5E#1^0sF5Mxj+Q?}|wxEyxzM7yo)UAsRpr z=ps$;e9$^UNtfI2JMy~y-@|_cN8R4{rXbJH#5xUISWu_rA?{kIRF?3_{K=IVcKN>B zI}`WM>}_n{AO5*Kpeau(GnZ*19Ia{g?8YqynUx`g_vmFl`WOwj-Tvd=&^CQvF;Ay2rAWn(80-3h!X{3 zmUK<5miD%m@Iq~D4vW+aqZ38GPn=_s8U+y86!~d_R>i47KlQS%_=ewEIFU^oO6h~S<(EKEDqjX$M3t!CH zWN@gyKOADtFgLtkT!M)g+gNiR|v z5Mn+lWnHa!+D_F$mF#PKBhXgnbY|qF88G^Rz4}mD45M~ETyp#Oh**$`+eC$fwia-~&M3t%-rL6ukQ9!u^}ng+d{sHd zlLS5scBE0Gouu(!^8`W#QLztTiMe~477FDrxu=(hn(C1R|EmaAs`8rq5Id`UmT+4Sx`To*@0kTMIaPTi9#hF!c#3{jruigq!n} zFa+S#Q(?iQ!nezXPuY$4R)%gReM51wYAL0q63gE23Tln(ntFPsO}REU`omwyY-Dsi zz$y@e!~^E_pLem!_EqiBVkF&pO+DGucy#Wy0VY7p83mhaFfxJ_Bm_ z&{qK=y-x?d)?Qv$mchGqfqU2{4>fcchlQm$k50S@HJ6{J_F;aLHP8PdE(%XyZ*U?$ z?R>4ez2kp`D5j*Hx^l;Kfi*s=JT;EwFbBdo&3>k*r@M1V5D2^kL{TLBTm?#3kIeN* zfYFzIODtTV>oNGjn}dhd=lVt@&PdpM>s~A<2{-Bc4rryL+2PuseRAvhVd^79&=17Q z_yQ7AZT^Y1eNtWwIKDo~xLNZ)JmFw=U8MZ*pb@+kv_Wwsr~r*B42PxQev@?z)7=T`xH$|ir} z=Vvx*Tml_-j%!qUPe?BaoZvQ(IslJr89XQ5H?!^oPtZ|jCG%W?eLQJ<^s!%n(MFu| zgtR>^xSTydZgFOOUXH0WGsBR*s{dQSN_F6Cyo|HyYb?mz{^Kw^FYk}TVsL^<;6<*w zQbSi)*LGxeb?w~I)%h8BV9<4fi-d!!`fxz}L1HaXY6|b1$C{r?h7jNleO3t6538@- z@8%0ehDl8f7cgVt|6#OZS*y@0W9xk-l~vd7a)YEWmVTtwGj5E=~OZAICP_=9l?e!T1_$xOa%Ft)NkWo4Gx|bs+6G7kLcYZ zZ&bonN*f#qZhcLy);!i-2XW2RVb9(bp3nTg2q7kjwFuWpUDp$fXGOh_A3DZl+mvUi zj4HJzv>GJVu$;{*=8J$AmD%8b%)g&jU8t!G-RTbf7+nvp76aLVzcEne^xseK;P=~K zf;*%Aez*gi%A;{UB^XFVHMfc0fs5oXC(XJja24V>0jPj@H@U6*$O&Mu9`!kd^80Is zm&F0n%*GLR^SFH9`g0L>-*c0H>+nS8!+g4(>(a$)2tZl0OOWc*ZO)**Ygd7;L%o?h zV?-^)i(!XeE|yM@XP5S#Tu}sI{d%J_BXZEE9MT(JZ5gm)S8;Zp*tfSGDhh&oxKD^UuzBJ5M#456;1%pJ2X=FyvmN zs9!){R^+q~S=aZdTVXez8}PatKf>#F3IS_EUEA$5hR7y#)%h9x>>GGPfzX%V20N>Y zSLF-_IyBvh5)fH`GQGUd@r`IAg>%>0P(?4Lk3o?532-R*o>8`~*FJgdH61)tBe(@r WRR?sFvIGAHgP}BIT;pwyl4D?>X;@zbDB_KDf_) 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

YuqK%^lpKXc*OM_yCc1@716k=seveCb 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 literal 0 HcmV?d00001 From 540ca146b8f0fd9ec2e65296907dc528ee774d3b Mon Sep 17 00:00:00 2001 From: Dvogonen Date: Sun, 19 Jan 2014 17:31:44 +0100 Subject: [PATCH 188/308] Added paintbrush icons to be used for customize TX action --- .../originals/classical icons/paintbrush.png | Bin 0 -> 9629 bytes .../originals/monochrome icons/paintbrush.png | Bin 0 -> 952 bytes companion/src/themes/classic/16/paintbrush.png | Bin 0 -> 660 bytes companion/src/themes/classic/24/paintbrush.png | Bin 0 -> 1188 bytes companion/src/themes/classic/32/paintbrush.png | Bin 0 -> 1504 bytes companion/src/themes/classic/48/paintbrush.png | Bin 0 -> 2704 bytes companion/src/themes/classic/paintbrush.png | Bin 0 -> 9629 bytes .../src/themes/monochrome/16/paintbrush.png | Bin 0 -> 300 bytes .../src/themes/monochrome/24/paintbrush.png | Bin 0 -> 470 bytes .../src/themes/monochrome/32/paintbrush.png | Bin 0 -> 462 bytes .../src/themes/monochrome/48/paintbrush.png | Bin 0 -> 836 bytes companion/src/themes/monochrome/paintbrush.png | Bin 0 -> 462 bytes 12 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 companion/src/images/originals/classical icons/paintbrush.png create mode 100644 companion/src/images/originals/monochrome icons/paintbrush.png create mode 100644 companion/src/themes/classic/16/paintbrush.png create mode 100644 companion/src/themes/classic/24/paintbrush.png create mode 100644 companion/src/themes/classic/32/paintbrush.png create mode 100644 companion/src/themes/classic/48/paintbrush.png create mode 100644 companion/src/themes/classic/paintbrush.png create mode 100644 companion/src/themes/monochrome/16/paintbrush.png create mode 100644 companion/src/themes/monochrome/24/paintbrush.png create mode 100644 companion/src/themes/monochrome/32/paintbrush.png create mode 100644 companion/src/themes/monochrome/48/paintbrush.png create mode 100644 companion/src/themes/monochrome/paintbrush.png diff --git a/companion/src/images/originals/classical icons/paintbrush.png b/companion/src/images/originals/classical icons/paintbrush.png new file mode 100644 index 0000000000000000000000000000000000000000..814fdb47e719af3a7bca602dd6903b995d4d5b5f GIT binary patch literal 9629 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 Tq17eL00000NkvXXu0mjfSUGd+ literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/monochrome icons/paintbrush.png b/companion/src/images/originals/monochrome icons/paintbrush.png new file mode 100644 index 0000000000000000000000000000000000000000..437655aee2b62f6dc1aa336e519b2f57dfe71ec6 GIT binary patch literal 952 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 KMNUMnLSTYkvp7@$ literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/paintbrush.png b/companion/src/themes/classic/paintbrush.png new file mode 100644 index 0000000000000000000000000000000000000000..814fdb47e719af3a7bca602dd6903b995d4d5b5f GIT binary patch literal 9629 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 Tq17eL00000NkvXXu0mjfSUGd+ literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/16/paintbrush.png b/companion/src/themes/monochrome/16/paintbrush.png new file mode 100644 index 0000000000000000000000000000000000000000..b95ec57aaf188b3c724ecfe6e1e84b439a42a7f3 GIT binary patch literal 300 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=DjSL74G){)!Z!AbW|YuPggKMqvRd>o%Qj8-YSQJzX3_EKZ-jWShmrDA4vWy|;qF z*I|;~+!Yl9o(~=OOcLviWwHLqv8ZXSZ%`C_(8{wMrw_eaXU6Aae8&3oS^lSMU-GSf zD1JKnfnlG;1OE4}3w#-l_v}~L$>v}DV13D@U_P7Uc4>9zO0u7p`Xn9B-s6_j@qfys z!>T*lJ+;Cd?Q5hzJiBye_Y0=xfWTfsw;7_96W%P6T9F+1B!zQV-~-|NKMt&VbGRhP qE3860`aw;v{FZK;Gh37R^VFYK=u}^pTechM2?kGBKbLh*2~7Zgcy=oQ literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/24/paintbrush.png b/companion/src/themes/monochrome/24/paintbrush.png new file mode 100644 index 0000000000000000000000000000000000000000..98ae20c4a421feb95481aead5a74a43cdb7323af GIT binary patch literal 470 zcmV;{0V)28P)VGd000McNliru-T@O390HGXnLhvk0b@x- zK~zY`?bW|aTtN^A@Q$1*$LneXhpS?+NgZ?W7AqBi6c z`#hfG3jeTKF|=eL@4{O69tP4OOeD_y!3ch2$$md%S#OnO%shttWft;we2gIf84|fc zYh-{D#v{(1hCtD1#XFo~1)mxyI6xuYZnf|TAMiIQIL0fSV5Wx8<5c_B#3;&`PdIer zDYmeH>naM?k*i0X!yL{rR>l4XJ($8?ihMUF^CB+s74K6e><%4L!~kC7dm!J4z0?-0 z2B$K5@dBMGm0g&|Zw$xQy@C#WOUWM$wo0HUp|kq44zprH{skUl7E8hY1(SE3n8_fO zA7~bf*lyG_VyAOZvj6}9 M07*qoM6N<$f>PhbrT_o{ literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/32/paintbrush.png b/companion/src/themes/monochrome/32/paintbrush.png new file mode 100644 index 0000000000000000000000000000000000000000..34e25a170c27d0eaa1c3bda0a39bb23317af5cc0 GIT binary patch literal 462 zcmV;<0WtoGP)VGd000McNliru-T@O38W1XwPw@Z%0b5B# zK~z}7?U&ChML`tDKVC{tEQw-aZDrv{d8{ndU0B#XWuq*RjX%NC!VakyB{rzH^(XiX zWW_>4SW%v0Y`(9iamlT7?=9VLo#xD(X})L9nR9Lz3S@`XJjrJP2Q=~^UlMs!-m@a! z0PX_vrW{z4xdgJEC;7LVw-}KB6(2xrxLC@F9AMuv?3)Qg?<~pdI&jy*fut#T07if* z&7-Vpx~f|oYu>JL9au{{1xGqyE?6%Ei@*v{OUr>9g}pz<)(Z^iK>{pWlRMz>7kkP3 z!bRE}S&=t@Ti_hH2l`_63~3w$CZ(SOTNZgA3vSU3R3uJgh*4ld_8p6tzxP8vL-LB( z)~|sx%ksO3abViB_jq~@c(ktnGVla^iu}s6op^bkv2M3MI)P`;iA&&B`aIAjeIdshqpwwO2Zl1AQ>R!1%v2HuKaodW*?U(H;o)pz7!(*OVf07*qoM6N<$ Eg7_W8FaQ7m literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/48/paintbrush.png b/companion/src/themes/monochrome/48/paintbrush.png new file mode 100644 index 0000000000000000000000000000000000000000..cc15507e67a2f9b36e42a97df4d5adb819c95b7d GIT binary patch literal 836 zcmV-K1H1f*P)VGd000McNliru-T@O36)PMAx*7lg0?|oC zK~!ko?buz2RaF!R@Lx_2>XlHVv=qz~M109lQbfx zv)F5$MH_8A&=?i-BUuI=O-z0QPGJCNTW#kb!#616Kdfmb^270UkWY`bmBOhRFb(Gi zA)kz;jUx6qK0rVAVHIXze2j(IUxs)xZeVh~$v+jui&c(4u&fc}FXll0a)ei1F&2F} zkpBzMH)7}WAYa7#Rt=jXE;J%+`g0;*L{Gg1yqqKXBBoS&;E)<5qCD|WJ!_YPv1`|G zCZ{(rwI1Z>rwI4sb^L;p__s;{uhyFUX55a4?Z!lWgxOKcAE;8mC$;?0_&6RikUFcM zDXHgw$FV8|d{+zd^HNEw4+}Evc48$aRUu$c-sIOsYEPVx&aj(-jTnkcA!f@xlJCP4 zc@ZChcf;{*^j5HcG3MQPFSUO7F3DevjGhZ-#5p2;b3d>HTJ1dikBGWQJ);Rz<=vy}KQoWswx z44VYq89TMCg75^x@Lb7%-(oSY)GBP!=!}>x6)^oi{k;`$?}za74qm~yT4vi>QQxEm ze2693il6WW3Kjf}iFteYI9|^(xx2!#_gktBSPm<~{?{@&q-NNVLH-Ul4Pw7&kmLAT zl*kJj(c5_xdj}D46ECFf3en@ao?07;@56puBRgjW97^>p6A{NSH#%oYX?-en->z8O z+YIf$tT!VGd000McNliru-T@O38W1XwPw@Z%0b5B# zK~z}7?U&ChML`tDKVC{tEQw-aZDrv{d8{ndU0B#XWuq*RjX%NC!VakyB{rzH^(XiX zWW_>4SW%v0Y`(9iamlT7?=9VLo#xD(X})L9nR9Lz3S@`XJjrJP2Q=~^UlMs!-m@a! z0PX_vrW{z4xdgJEC;7LVw-}KB6(2xrxLC@F9AMuv?3)Qg?<~pdI&jy*fut#T07if* z&7-Vpx~f|oYu>JL9au{{1xGqyE?6%Ei@*v{OUr>9g}pz<)(Z^iK>{pWlRMz>7kkP3 z!bRE}S&=t@Ti_hH2l`_63~3w$CZ(SOTNZgA3vSU3R3uJgh*4ld_8p6tzxP8vL-LB( z)~|sx%ksO3abViB_jq~@c(ktnGVla^iu}s6op^bkv2M3MI)P`;iA&&B`aIAjeIdshqpwwO2Zl1AQ>R!1%v2HuKaodW*?U(H;o)pz7!(*OVf07*qoM6N<$ Eg7_W8FaQ7m literal 0 HcmV?d00001 From 95163bde66e99ab6910edf3de115a015a8f4a5d4 Mon Sep 17 00:00:00 2001 From: Dvogonen Date: Sun, 19 Jan 2014 19:27:11 +0100 Subject: [PATCH 189/308] Some pixel optimizaion --- companion/src/themes/classic/24/copy.png | Bin 1508 -> 1167 bytes companion/src/themes/classic/24/new.png | Bin 1129 -> 684 bytes companion/src/themes/classic/24/paste.png | Bin 1472 -> 998 bytes companion/src/themes/classic/24/profiles.png | Bin 917 -> 661 bytes .../src/themes/classic/24/recentdocument.png | Bin 1196 -> 865 bytes 5 files changed, 0 insertions(+), 0 deletions(-) diff --git a/companion/src/themes/classic/24/copy.png b/companion/src/themes/classic/24/copy.png index 1b62ed40bd36653a92677ad71187b7a6f5e9fbf3..714a0d590d7d960636e8dbf1c50058036fd386d5 100644 GIT binary patch delta 457 zcmV;)0XF{R3y%qqBL)JpP)t-sv30Tne*mAn&;S4c0d!JMQvg8b*k%9#00Cl4M??UK z1szBL000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^e_5)1`cQOctL00CA>L_t(2 z&tqVK0Y)fbV?YCpTt&sjC8agoJm?bT6_r(`)jhQWf-oU*5Rj0pt8Zv*YF^zce<57f6DLfXJZ0Ln)vMJ}C1$MZpEY~V+Xlb?3puM}Gdu5`jUFAK$z6H{|Jq;E+(1 zNR5cR^B^iZCN>T|86+jAq^6}aV1mG$Tuea#f$Og+I~x7y00000NkvXXu0mjf7)Z;W delta 800 zcmeC@e8N3JIf#KJ-O<;Pf#KSXEB+Bi3=9m6#X;^)4C~IxyaaL-l0AZa85pY67#JE_ z7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#N0|V360G|+7pn{E>o0#gY#Md;OkH}&m?E%JaC$sH<3MxHa978nDCnq#8xv8az zg@uKgnU(Rei5xh2G&UwEC@SpS;nVF(2lWF2BST}uf}_XlbtAQeIM4`n~?kx38;LIjX8mQENDG#8X(^f2LLLFP>7~kj|N# z)y~W_F2DDObyie{m6%@Co|KoHo@#F?4NwhR7qvI-?XIudW-neX^zxapxA5{a-RSMP z*UcR!&)AUs^vK-ZW$z75oF?DcSpMxy?Qeb=6EnxD3|;b8HBVk_e7r1eg-~_6zfH}f zC-o~Yr=QUcP$_#exANPa&d=g{ahtX{O}eo$`RN(q=VtSE*F1e?nl0VJa^X+s_49Wv z%HJ(pJ9lrhvd^K+_ot?A&%3*$@b|gcbn$TWa{d)9%dej~oc{jq{=W%VSB2iQ^C*1s zy8Oqzxz*d>+tqxzVXq+Isig7a_HP)*LN|t_4Eb+;Ssc}jY@+whZ zzGT_b^pvzz;{}a#?(F%~bVw=0k)dMqwpW&{u?K+>qFUk_QIe8al4_M)lnSI6j0_A- zbPWu34J|_q&8&{1L_|8B6WQF{lq5Noot>TirKP1hP#)$-=Yfa}nscC( zCP_}Q)=;Tb%72YUWBuy#^390>M8E~7Sp$tR7UzW7*;&1^QeC`QF4umW=6x}7Qm>%3|0fwTfA z3ON&Ku~>9}iatLB@h7Z+gyS}3C8CI<7~?>6emmt-WPhCpN?o5|t-_l1U|QvudoD$( z9TeFLNO0KG#>x1=iht6Yuy(;B3}cYcg>1;&ZRd``~6`;YpH3gNbtO81@Apk zUJqkO-+#)vmtAV$r|I+TB#Yj4N8j7sjXUcsER+_f%0MfKBOhrLK_P~tgD>3&_csb5 zxWe;iySMk-?bj0nsKD<`46*9EcdZx4Pn!?tfx_EX>(-}_ANGBIo1$?@Tv zm%9f~9zVJeqMdJUZ(RXC|CPUi)!Leb@A5U^92o!W_yusiJRX>O#_j+B002ovPDHLk FV1g2XD|r9_ literal 1129 zcmZuwdraF^6uv~98wn9ujBKEi@d%HVwcA)m<<(O9;Kx{7ieZZnUS%Lcx54HxEDkhA zKLXRuAquuI9p12fWqcMLiAMw1F$v0J z^UomkNf<&mK1axbTQ}Aax0NvK!t64~OzCxg_ucsi4i$`-zBesI0|%k%HO9}pOby{Z+vxTpU^ z(Un9xgA{$t%WH2I)VPGM?#C6^s{-G66Vv~M+YLB&cU^kD-e%i&xxnGrouAiOEEeZ3 zIGtd(?@p`dOeVA2?RGd}#{o9GOFgsj>!aV=+B<&k?zQiAV0#Bw_lChb`b_cU_rcL| z`Ia5bHn7^kx(z0q+hB1T%?`_!)3}8xn6|)R1@kuOETFf*h8Z@uKxc+^6RdB7)&zPh zEE{0e2y2_LqzA1T)=aRdg9RNd>OrG}6(h`QVNMGR8?a;mjUJ}gK(z)lTA0_t)Cwq9 zL9q;~Ranr&oDL?JLB0f2tDs(ozcnzi1hPetF9WyeQWPEvt(>2pf%Y9bk(|bUP1H3g zQ>$(sRxV%jcPUDhuHjh^<+Sp7xa@`pO1p02esQd8bG|*7^75co@=f+z%y&HqS${tIV4BcVXa3zu< z>4q5vDJSJKs!7@G*OB+s3Z*>pUYVvzd{uCuu3MTB zmZsMUGBXrOHRE?D5-ZMsd#C%B`1^$RTQ<(VFPMX2KlT^2QVL6Rii9Pfg;J(e%D2fr zub`_5>D|TSU7zBig_fsemFMS_3#oaRg&5FrGUX(ROd(NX1(Z|N6S4S2kttL%nai6? ze8Es6$}cLYc)<`uJsCqK$2>Qz7;Y=D;n3a>8KQ#nk8>^y5iMVoD-7b4B@M=4MWv|-B@Zs@gU|;>1Rq3#_>yY(p@=Vn z#E1CcOKM*umsWB^FQ~0&fGhKusi}hJuoovdS_>62Tf#jbaVpv6<7p39zae28qimM$ZqEIdA(B? z7Z-KSro-aIL4ukM^IPXn8t%*%#y`0~;?lBr89R={d&guT1oyt03T^@7K>#@1Cfe>R z%}+mG;nL*KXx~REe}z|a@jOL57Uft(NMB=AU6R0hOMtPlG1BQYTEL<9D3Sa$#ZrJk zV*_1LgNP~la$>sX*I6Cc_J}K*?f@W}h;uS=n1TnM9{|waW+4T@G;?!v%_9myHk)N> zY3Z-w;bC0^2?0nGq$RLo7DfYrZ5k|XxchRgwFY2lXy~}(e>l03kr53aar+l_Jg;q&$R^L;}lQ|(NhCz*i9Iq-G=H%5NHQ-=jhp z0wD#`0AYj;GwY|}7wWV$%7Fo-QBfg5>^R1jXKu9o$XWx)s)`DT)&YL0h*#X;)5pg- zb76tm+1Zu=q9MB-00My~@Lbf!8oslRuUxb$qYA1e9rbQBj6G@~K^0a|g_UY%;3)0g zD^NO{e=Wyb(b0^(T@(Sh9>ML^pzuMqoTw&Y0v`kCS^+4fbZ>8Ojib#F!0micct2B) z0}@C)6cw-BFY3AK{ksL6+lwOCb%VaXJ_(5a{{GMB=jXp!SXfvIoki6#1^nK$A3;w| zP1S0lS65e6DwT>fynh>*1eW=aqI0>NpUGU@FsxnvJv}`i0xtqF{s*c5RdjWAy#^cw cBKtY~3qyK&f_PNyZ`_I delta 1429 zcmV;G1#0@{2fz!EBt`^hK}|sb0I`n?{9y$E0004VQb$4nuFf3k0000WV@Og>004R> z004l5008;`004mK004C`008P>0026e000+ooVrmwks%y^07w7;07w8v$!k6U00gy3 zL_t(Y$CZ`eZ&XDT$3HXo?%v(IyZyCvSr7vlNUH=Y8cdAw2M;9vs0lB`U?4Fh*!~43 z_(FU(@rf6VFTB}EqA>wYMM2PrO^{z}g|rJ@=x&#`+lBpc@7=vW#)r00x-H^2ImzT? z&V1&anKL7QcwF5;&;I@U`;*CJ8!PD8v14a}KY$|O@jtZvl{Mna7uv;7!#|v=&dtrK zoR1tOtvhGT}iP;2s$P$^=-xF z`cngh5S?8S5h=Th^FI&sqMolYeZ ziH^?B&NWJ@`svfBhccPWS1XlB0JJA!yqxHw?t$kA0K_99q=3t_iVr{e9J8&{j3wIM zHX@OKJ<(`X>bfo?k%%-5L&f9qb(u_N0ywiAprj5mBnX)yv?TyT*SJ@4*u3La-q`cb z;%35&fz4)eBik&?`eJBk=(F3mZ+|ZV1_lNI2uXpVOJZS-grO7CCB9PF zu20kVaeW`9REv3@N2OB1^E`B2=g^@;y}NgR?>-2mA7-GGQo06uNFX%9y^2dSzK-^d zo6)1~gzrr;Rdcy<;|7~HZDMkAlCiNdcJACsB9Wj}DltAjj&0i{lS!%TdK!o=EfJay zWf$)28`yf_V`{N2^Cgir?Y!2xm=FEzCKLTWNK;(+qQ9k z90$+y#PTzs5eVG1+j#AxPbn5lICn;9lO0%QirKQy#H`J&e3Z2b$%9J3=5_aZvri$V zq`SKt!!Yo?`R0y9A_1UUGVmK!M$ZfpOkN`*J-i@HtgV+9pL>^UnB2NkXf`<@I(-xZ+K(&-eN-zwGX@-#Uk-ygP5YZH2GlpsE*tU-A`e?dDDMb(jk3A2I z&=!Eu1VRd=210w}pOPtFKX{bMdK=L$hgz*kz2>oXLj$Gk7Qo{5ZOuTNHz8qvKFfKv zH}jl4x|dmFBX7O8k2U}kq!rod6ZnT3g9xyqZZ)3{m; zYI;hGDW&571z0%b);?IgIgUqvkSzuEY*|%`RW+8m7hK3p2erd5#SbW@p7@iwuB%2z zN9(yn{3+jJQtLo)KFj=zIseDEKTDH|)=KtTGa5%howGugw6O4?EJQyAx zE@!jZllgpp2$)$4_~!6;%`))Uf;FC0+aL&3sZ??cg+l$(rArehPMjEjDHIC70Ox?| zm2T0^1zSyi({1{W;{@64xRtq{sb9}z&R@KE@%LOVcWGf$*76|1(<{-_(=(V(r$4YP z>uf%sKU*jit^zYabG4v<0Y+4L`!)|e<^TWyC3HntbYx+4WjbSWWnpw>05UK!G%YYO zEipM%F*Z6gIXW{rD=;xcIxsL$QQtoR001R)MObuXVRU6WZEs|0W_bWIFflYOFflDL jIaDzPo6fIf^(oOHx1o5Tt z&T3>Dm1Z%*y!}__@SOAfc>d>q7A(uMn4<)9*4zQ|_nYJ6i9iYzuza3NDvBzCIQpra5(66I#enZ zbX~_ZO;lB7bANM_lamwn_xE{vdg9{Zg0;0Z+-^7Rc6<5+(`;(BT6DWz!r?F;kB7y@ zMH~(Xyq9`maEio7ju-R+~Ay8FyHei~ruC6#dJmmEBlz(!$jMM2vRaG=iLzZPEN#f<@ zh2`aCg25n}OlCG2$_lkw4S>;Tgs$s2olb-h92^`V%ks}#BuNsnSPa83$mjEvN+kk;0K2=p z+}_@j&1Q*4qg-BIlF#SI%_kmt)<-7R)nkKMOy5-(&fg1AYJi002ovPDHLkU;%=JPAXjh literal 917 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM3?#3wJbMaAv7|ftIx;Y9?C1WI$O_~$76-XI zF|0c$^AgBWNcITwWnidMV_;}#VPNv#5ksa!l7oL=% zs-dkXA?GP2%*(@-IH|3$B1;b)vjkYOXRD%$L_} z?=317)n#TB6j~+e6a}=8G0EHACFRhq9h^W8XMsm#F#`j)FbFd;%$fsAB2PSB978nD zCnqe>N=QjcN;;-?@W`PvXHFeBcJAQGqh}AFK7L+LL4#!?gO+%jfS_2axbXA|Q-mf= zn>f{Z(uD8{&xON6ghIjsMMHwwy$v>Vac`dRM2punG0|?#I;PtTPp(_KcJb=v`3I6S zT9gvcEXYdI%1YDIN?yn`c|v+pQ1XV9?VGl34BfKf;pWZlUKR$%#>Pz&eMfe6o%FnM z^XS#HcbShoOuXdgQBhU-+u+A9&EMMW9i2Z{vb&f{rNxUD zTFE3QwZ4^n^r*R{gon3ONNDn;mC|dMFf+V)Dph@a`fZ@+8B|MLBT7;dOH!?pi&B9U zgOP!uiLQa6uAya!p_!GjB@k&F7+M(^1O(o8iBL)H@P)t-sv3nu{9-MP?+5i9m0d!JMQvg8b*k%9#00Cl4M??UK z1szC}{Q?(%00(qQO+^RZ0TU7p62h5&B>(^bxJg7oR4C75U|?WD1q^V&;(!EL*jaE$ zaB{KW(812jf>i>^8WahzBsC-=BJx21Ln31F;>0BVlvF8niL~^L%q;z!Tp3wZiTwP6 z!lGjR(lU94d{l|bs_L3r{rU!F6*P&a=9X6dc71(feN8lpo|N9ce*KA)bac@qVyE^^ zn?7UaEJGty35VHp`sU7?zhI%M8Jcq!FJ7{A+42=DBO=g!zIgSTwd>Yzh`(!~OK~a)i$5<=O11G2pB# zS9$R8rK&=Q@1fhr!#yHcx?ASgJ1kfs;o@{hR+NR++d)Oed4fYmM1{)|5f`Uh{CtZR zB_}<8B%E?VRcP|0;GoNwj8mRoP%+xPskrF#C+;VrA_s+90|dfCVuGT=;_3reE?L7g zDPV0=)2msxcKvEQwk*xGl-GAbimN0>c8lq6+^~ho+vVVaOR1;B z*TihC>fOq#9Fe3e)3P>tf8yh1XSWH=uUGb56T3V0^|rUxZ#H-|FoqnOm%_>JUh;rN zgq0zje_Orh2b(XzFjOsZjVMV;EJ?LWE=mPb3`PcqCb|ZOx`vh^hGtgAmO!L!U}$Av v5D<9Z9z{cLeoAIqC5i@9D-%;I15=;|VW5s@?R|A6^>bP0l+XkK#3%5B From 261cdd4cca7dec861f47995e4ee1ba40f49298c1 Mon Sep 17 00:00:00 2001 From: Geoff Stearns Date: Sat, 18 Jan 2014 22:26:27 -0500 Subject: [PATCH 190/308] Fix missing curly braces and adjust some formatting. --- radio/src/telemetry/mavlink.cpp | 105 ++++++++++++++++---------------- 1 file changed, 52 insertions(+), 53 deletions(-) diff --git a/radio/src/telemetry/mavlink.cpp b/radio/src/telemetry/mavlink.cpp index eb7166dbc..094c94ec3 100644 --- a/radio/src/telemetry/mavlink.cpp +++ b/radio/src/telemetry/mavlink.cpp @@ -113,7 +113,7 @@ void MAVLINK_reset(uint8_t warm_reset) { memset(&telemetry_data, 0, sizeof(telemetry_data)); telemetry_data.rcv_control_mode = ERROR_NUM_MODES; telemetry_data.req_mode = ERROR_NUM_MODES; - + telemetry_data.type = MAV_TYPE_ENUM_END; telemetry_data.autopilot = MAV_AUTOPILOT_ENUM_END; telemetry_data.type_autopilot = MAVLINK_INVALID_TYPE; @@ -139,7 +139,7 @@ void MAVLINK_Init(void) { * characters are used. To get the full message you can use the commented * funtion below. */ - + static inline void REC_MAVLINK_MSG_ID_STATUSTEXT(const mavlink_message_t* msg) { _MAV_RETURN_char_array(msg, mav_statustext, LEN_STATUSTEXT, 1); } @@ -152,7 +152,7 @@ static inline void REC_MAVLINK_MSG_ID_STATUSTEXT(const mavlink_message_t* msg) { * \todo Add battery remaining variable in telemetry_data struct for estimated * remaining battery. Decoding funtion allready in place. */ - + static inline void REC_MAVLINK_MSG_ID_SYS_STATUS(const mavlink_message_t* msg) { telemetry_data.vbat = mavlink_msg_sys_status_get_voltage_battery(msg) / 100; // Voltage * 10 telemetry_data.ibat = mavlink_msg_sys_status_get_current_battery(msg) / 10; @@ -204,48 +204,48 @@ static inline void REC_MAVLINK_MSG_ID_VFR_HUD(const mavlink_message_t* msg) { /*! \brief Heartbeat message * \details Heartbeat message is used for the following information: - * type and autopilot is used to determain if the UAV is a ArduPlane or Arducopter + * type and autopilot is used to determine if the UAV is an ArduPlane or Arducopter */ -static inline void REC_MAVLINK_MSG_ID_HEARTBEAT(const mavlink_message_t* msg) { +static inline void REC_MAVLINK_MSG_ID_HEARTBEAT(const mavlink_message_t* msg) { telemetry_data.mode = mavlink_msg_heartbeat_get_base_mode(msg); - telemetry_data.custom_mode = mavlink_msg_heartbeat_get_custom_mode(msg); + telemetry_data.custom_mode = mavlink_msg_heartbeat_get_custom_mode(msg); telemetry_data.status = mavlink_msg_heartbeat_get_system_status(msg); telemetry_data.mav_sysid = msg->sysid; telemetry_data.mav_compid = msg->compid; uint8_t type = mavlink_msg_heartbeat_get_type(msg); uint8_t autopilot = mavlink_msg_heartbeat_get_autopilot(msg); - if ((type != telemetry_data.type) || (autopilot != telemetry_data.autopilot)) - { + if (type != telemetry_data.type || autopilot != telemetry_data.autopilot) { telemetry_data.type = mavlink_msg_heartbeat_get_type(msg); telemetry_data.autopilot = mavlink_msg_heartbeat_get_autopilot(msg); - if (autopilot == MAV_AUTOPILOT_ARDUPILOTMEGA) - { - if ((type == MAV_TYPE_QUADROTOR) || - (type == MAV_TYPE_COAXIAL) || - (type == MAV_TYPE_HELICOPTER) || - (type == MAV_TYPE_HEXAROTOR) || - (type == MAV_TYPE_OCTOROTOR) || - (type == MAV_TYPE_TRICOPTER)) - { - telemetry_data.type_autopilot = MAVLINK_ARDUCOPTER; - } - else if (type == MAV_TYPE_FIXED_WING) - { - telemetry_data.type_autopilot = MAVLINK_ARDUPLANE; - } - else + if (autopilot == MAV_AUTOPILOT_ARDUPILOTMEGA) { + if (type == MAV_TYPE_QUADROTOR || + type == MAV_TYPE_COAXIAL || + type == MAV_TYPE_HELICOPTER || + type == MAV_TYPE_HEXAROTOR || + type == MAV_TYPE_OCTOROTOR || + type == MAV_TYPE_TRICOPTER) { + telemetry_data.type_autopilot = MAVLINK_ARDUCOPTER; + } + else if (type == MAV_TYPE_FIXED_WING) { + telemetry_data.type_autopilot = MAVLINK_ARDUPLANE; + } + else { telemetry_data.type_autopilot = MAVLINK_INVALID_TYPE; + } } - else + else { telemetry_data.type_autopilot = MAVLINK_INVALID_TYPE; + } } - telemetry_data.active = (telemetry_data.mode & MAV_MODE_FLAG_SAFETY_ARMED) ? true : false; + telemetry_data.active = (telemetry_data.mode & MAV_MODE_FLAG_SAFETY_ARMED) ? true : false; mav_heartbeat = 3; // 450ms display '*' mav_heartbeat_recv = 1; } + static inline void REC_MAVLINK_MSG_ID_HIL_CONTROLS(const mavlink_message_t* msg) { telemetry_data.nav_mode = mavlink_msg_hil_controls_get_mode(msg); } + /*! \brief Process GPS raw intger message * \details This message contains the following data: * - fix type: 0-1: no fix, 2: 2D fix, 3: 3D fix. @@ -257,7 +257,7 @@ static inline void REC_MAVLINK_MSG_ID_HIL_CONTROLS(const mavlink_message_t* msg) */ static inline void REC_MAVLINK_MSG_ID_GPS_RAW_INT(const mavlink_message_t* msg) { telemetry_data.fix_type = mavlink_msg_gps_raw_int_get_fix_type(msg); - telemetry_data.loc_current.lat = mavlink_msg_gps_raw_int_get_lat(msg) / 1E7; + telemetry_data.loc_current.lat = mavlink_msg_gps_raw_int_get_lat(msg) / 1E7; telemetry_data.loc_current.lon = mavlink_msg_gps_raw_int_get_lon(msg) / 1E7; telemetry_data.loc_current.gps_alt = mavlink_msg_gps_raw_int_get_alt(msg) / 1E3; telemetry_data.eph = mavlink_msg_gps_raw_int_get_eph(msg) / 100.0; @@ -266,26 +266,25 @@ static inline void REC_MAVLINK_MSG_ID_GPS_RAW_INT(const mavlink_message_t* msg) telemetry_data.satellites_visible = mavlink_msg_gps_raw_int_get_satellites_visible(msg); } - #ifdef MAVLINK_PARAMS -const pm_char * getParamId(uint8_t idx) { - const pm_char *mav_params_id [((NB_PID_PARAMS / 2) + 4)] = { // - // - PSTR("RATE_YAW"), // Rate Yaw - PSTR("STB_YAW"), // Stabilize Yaw - PSTR("RATE_PIT"), // Rate Pitch - PSTR("STB_PIT"), // Stabilize Pitch - PSTR("RATE_RLL"), // Rate Roll - PSTR("STB_RLL"), // Stabilize Roll - PSTR("THR_ALT"), // PSTR("THR_BAR"), // Altitude Hold - PSTR("HLD_LON"), // Loiter - PSTR("HLD_LAT"), // Loiter - PSTR("NAV_LON"), // Nav WP - PSTR("NAV_LAT"), // Nav WP - PSTR("LOW_VOLT"), // Battery low voltage - PSTR("VOLT_DIVIDER"), // - PSTR("BATT_MONITOR"), // - PSTR("BATT_CAPACITY") }; +const pm_char *getParamId(uint8_t idx) { + const pm_char *mav_params_id [((NB_PID_PARAMS / 2) + 4)] = { + PSTR("RATE_YAW"), // Rate Yaw + PSTR("STB_YAW"), // Stabilize Yaw + PSTR("RATE_PIT"), // Rate Pitch + PSTR("STB_PIT"), // Stabilize Pitch + PSTR("RATE_RLL"), // Rate Roll + PSTR("STB_RLL"), // Stabilize Roll + PSTR("THR_ALT"), // PSTR("THR_BAR"), // Altitude Hold + PSTR("HLD_LON"), // Loiter + PSTR("HLD_LAT"), // Loiter + PSTR("NAV_LON"), // Nav WP + PSTR("NAV_LAT"), // Nav WP + PSTR("LOW_VOLT"), // Battery low voltage + PSTR("VOLT_DIVIDER"), // + PSTR("BATT_MONITOR"), // + PSTR("BATT_CAPACITY") + }; uint8_t i; if (idx < NB_PID_PARAMS) { i = idx / 2; @@ -433,7 +432,7 @@ static inline void handleMessage(mavlink_message_t* p_rxmsg) { break; case MAVLINK_MSG_ID_VFR_HUD: REC_MAVLINK_MSG_ID_VFR_HUD(p_rxmsg); - break; + break; case MAVLINK_MSG_ID_HIL_CONTROLS: REC_MAVLINK_MSG_ID_HIL_CONTROLS(p_rxmsg); break; @@ -453,8 +452,8 @@ static inline void handleMessage(mavlink_message_t* p_rxmsg) { /*! \brief Mavlink message parser * \details Parses the characters in to a mavlink message. - * Case statement parses each character as it is recieved. - * \attention One big change form the 0.9 to 1.0 version is the + * Case statement parses each character as it is recieved. + * \attention One big change form the 0.9 to 1.0 version is the * MAVLINK_CRC_EXTRA. This requires the mavlink_message_crcs array of 256 bytes. * \todo create dot for the statemachine */ @@ -464,9 +463,9 @@ static void MAVLINK_parse_char(uint8_t c) { //! The currently decoded message static mavlink_message_t* p_rxmsg = &m_mavlink_message; //! The current decode status - mavlink_status_t* p_status = mavlink_get_channel_status(MAVLINK_COMM_0); - - + mavlink_status_t* p_status = mavlink_get_channel_status(MAVLINK_COMM_0); + + #if MAVLINK_CRC_EXTRA static const uint8_t mavlink_message_crcs[256] PROGMEM = MAVLINK_MESSAGE_CRCS; #define MAVLINK_MESSAGE_CRC(msgid) mavlink_message_crcs[msgid] @@ -715,7 +714,7 @@ static inline void MAVLINK_msg_set_mode_send(uint8_t mode) { #endif /*! \brief Telemetry monitoring, calls \link MAVLINK10mspoll. * \todo Reimplemnt \link MAVLINK10mspoll - * + * */ void telemetryWakeup() { uint16_t tmr10ms = get_tmr10ms(); From a3a698181e86e18e747183963a80e17a0caf0633 Mon Sep 17 00:00:00 2001 From: Romolo Manfredini Date: Sun, 19 Jan 2014 22:49:26 +0100 Subject: [PATCH 191/308] Further work in themes for the ui and some further bug fix. --- companion/src/companion.qrc | 430 ++++++++++++++---- companion/src/comparedialog.ui | 2 +- .../src/firmwares/er9x/er9xinterface.cpp | 2 +- .../firmwares/gruvin9x/gruvin9xinterface.cpp | 2 +- .../firmwares/opentx/opentxSky9xsimulator.cpp | 2 +- .../opentx/opentxTaranisSimulator.cpp | 2 +- .../src/firmwares/th9x/th9xinterface.cpp | 2 +- companion/src/helpers.cpp | 7 + companion/src/helpers.h | 1 + companion/src/mainwindow.cpp | 222 ++++++--- companion/src/mainwindow.h | 1 + companion/src/mdichild.cpp | 16 +- companion/src/mdichild.ui | 8 +- companion/src/modeledit/curves.cpp | 18 +- companion/src/modeledit/customfunctions.cpp | 83 +++- companion/src/modeledit/customswitches.cpp | 27 +- companion/src/modeledit/inputs.cpp | 72 ++- companion/src/modeledit/mixes.cpp | 70 ++- companion/src/modeledit/modeledit.cpp | 14 + companion/src/modeledit/modeledit.ui | 8 +- companion/src/modeledit/setup.cpp | 4 +- companion/src/modeledit/telemetry.cpp | 2 +- companion/src/modelslist.cpp | 58 ++- companion/src/preferencesdialog.cpp | 8 +- companion/src/preferencesdialog.ui | 8 - companion/src/printdialog.ui | 2 +- .../src/themes/monochrome/16/customize.png | Bin 0 -> 381 bytes companion/src/themes/monochrome/16/play.png | Bin 0 -> 534 bytes companion/src/themes/monochrome/16/stop.png | Bin 0 -> 312 bytes .../src/themes/monochrome/24/customize.png | Bin 0 -> 381 bytes companion/src/themes/monochrome/24/play.png | Bin 0 -> 534 bytes companion/src/themes/monochrome/24/stop.png | Bin 0 -> 312 bytes .../src/themes/monochrome/32/customize.png | Bin 0 -> 381 bytes companion/src/themes/monochrome/32/play.png | Bin 0 -> 534 bytes companion/src/themes/monochrome/32/stop.png | Bin 0 -> 312 bytes .../src/themes/monochrome/48/customize.png | Bin 0 -> 381 bytes companion/src/themes/monochrome/48/play.png | Bin 0 -> 534 bytes companion/src/themes/monochrome/48/stop.png | Bin 0 -> 312 bytes 38 files changed, 849 insertions(+), 222 deletions(-) create mode 100644 companion/src/themes/monochrome/16/customize.png create mode 100644 companion/src/themes/monochrome/16/play.png create mode 100644 companion/src/themes/monochrome/16/stop.png create mode 100644 companion/src/themes/monochrome/24/customize.png create mode 100644 companion/src/themes/monochrome/24/play.png create mode 100644 companion/src/themes/monochrome/24/stop.png create mode 100644 companion/src/themes/monochrome/32/customize.png create mode 100644 companion/src/themes/monochrome/32/play.png create mode 100644 companion/src/themes/monochrome/32/stop.png create mode 100644 companion/src/themes/monochrome/48/customize.png create mode 100644 companion/src/themes/monochrome/48/play.png create mode 100644 companion/src/themes/monochrome/48/stop.png diff --git a/companion/src/companion.qrc b/companion/src/companion.qrc index f56405744..5212a3809 100644 --- a/companion/src/companion.qrc +++ b/companion/src/companion.qrc @@ -292,91 +292,349 @@ images/library/30002.png images/library/30003.png images/library/30004.png - themes/monochrome/open.png - themes/monochrome/edit.png - themes/monochrome/information.png - themes/monochrome/configure.png - themes/monochrome/switch_dir.png - themes/monochrome/list.png - themes/monochrome/wizard.png - themes/monochrome/logs.png - themes/monochrome/new.png - themes/monochrome/save.png - themes/monochrome/recentdocument.png - themes/monochrome/simulate.png - themes/monochrome/changelog.png - themes/monochrome/copy.png - themes/monochrome/write_flash.png - themes/monochrome/read_eeprom_file.png - themes/monochrome/clear.png - themes/monochrome/play.png - themes/monochrome/fuses.png - themes/monochrome/arrow-right.png - themes/monochrome/exit.png - themes/monochrome/moveup.png - themes/monochrome/read_eeprom.png - themes/monochrome/cut.png - themes/monochrome/arrow-left.png - themes/monochrome/write_eeprom_file.png - themes/monochrome/library.png - themes/monochrome/profiles.png - themes/monochrome/paste.png - themes/monochrome/print.png - themes/monochrome/compare.png - themes/monochrome/customize.png - themes/monochrome/saveas.png - themes/monochrome/preferences.png - themes/monochrome/movedown.png - themes/monochrome/currentmodel.png - themes/monochrome/read_flash.png - themes/monochrome/duplicate.png - themes/monochrome/add.png - themes/monochrome/update.png - themes/monochrome/contributors.png - themes/monochrome/stop.png - themes/monochrome/write_eeprom.png - themes/classic/open.png - themes/classic/edit.png - themes/classic/information.png - themes/classic/configure.png - themes/classic/switch_dir.png - themes/classic/list.png - themes/classic/wizard.png - themes/classic/logs.png - themes/classic/new.png - themes/classic/save.png - themes/classic/recentdocument.png - themes/classic/simulate.png - themes/classic/changelog.png - themes/classic/copy.png - themes/classic/write_flash.png - themes/classic/read_eeprom_file.png - themes/classic/clear.png - themes/classic/play.png - themes/classic/fuses.png - themes/classic/arrow-right.png - themes/classic/exit.png - themes/classic/moveup.png - themes/classic/read_eeprom.png - themes/classic/cut.png - themes/classic/arrow-left.png - themes/classic/write_eeprom_file.png - themes/classic/library.png - themes/classic/profiles.png - themes/classic/paste.png - themes/classic/print.png - themes/classic/compare.png - themes/classic/customize.png - themes/classic/saveas.png - themes/classic/preferences.png - themes/classic/movedown.png - themes/classic/currentmodel.png - themes/classic/read_flash.png - themes/classic/duplicate.png - themes/classic/add.png - themes/classic/update.png - themes/classic/contributors.png - themes/classic/stop.png - themes/classic/write_eeprom.png + themes/monochrome/16/open.png + themes/monochrome/16/edit.png + themes/monochrome/16/information.png + themes/monochrome/16/configure.png + themes/monochrome/16/switch_dir.png + themes/monochrome/16/list.png + themes/monochrome/16/wizard.png + themes/monochrome/16/logs.png + themes/monochrome/16/new.png + themes/monochrome/16/save.png + themes/monochrome/16/recentdocument.png + themes/monochrome/16/simulate.png + themes/monochrome/16/changelog.png + themes/monochrome/16/copy.png + themes/monochrome/16/write_flash.png + themes/monochrome/16/read_eeprom_file.png + themes/monochrome/16/clear.png + themes/monochrome/16/play.png + themes/monochrome/16/fuses.png + themes/monochrome/16/arrow-right.png + themes/monochrome/16/exit.png + themes/monochrome/16/moveup.png + themes/monochrome/16/read_eeprom.png + themes/monochrome/16/cut.png + themes/monochrome/16/arrow-left.png + themes/monochrome/16/write_eeprom_file.png + themes/monochrome/16/library.png + themes/monochrome/16/profiles.png + themes/monochrome/16/paste.png + themes/monochrome/16/print.png + themes/monochrome/16/compare.png + themes/monochrome/16/customize.png + themes/monochrome/16/saveas.png + themes/monochrome/16/preferences.png + themes/monochrome/16/movedown.png + themes/monochrome/16/currentmodel.png + themes/monochrome/16/read_flash.png + themes/monochrome/16/duplicate.png + themes/monochrome/16/add.png + themes/monochrome/16/update.png + themes/monochrome/16/contributors.png + themes/monochrome/16/stop.png + themes/monochrome/16/write_eeprom.png + themes/monochrome/24/open.png + themes/monochrome/24/edit.png + themes/monochrome/24/information.png + themes/monochrome/24/configure.png + themes/monochrome/24/switch_dir.png + themes/monochrome/24/list.png + themes/monochrome/24/wizard.png + themes/monochrome/24/logs.png + themes/monochrome/24/new.png + themes/monochrome/24/save.png + themes/monochrome/24/recentdocument.png + themes/monochrome/24/simulate.png + themes/monochrome/24/changelog.png + themes/monochrome/24/copy.png + themes/monochrome/24/write_flash.png + themes/monochrome/24/read_eeprom_file.png + themes/monochrome/24/clear.png + themes/monochrome/24/play.png + themes/monochrome/24/fuses.png + themes/monochrome/24/arrow-right.png + themes/monochrome/24/exit.png + themes/monochrome/24/moveup.png + themes/monochrome/24/read_eeprom.png + themes/monochrome/24/cut.png + themes/monochrome/24/arrow-left.png + themes/monochrome/24/write_eeprom_file.png + themes/monochrome/24/library.png + themes/monochrome/24/profiles.png + themes/monochrome/24/paste.png + themes/monochrome/24/print.png + themes/monochrome/24/compare.png + themes/monochrome/24/customize.png + themes/monochrome/24/saveas.png + themes/monochrome/24/preferences.png + themes/monochrome/24/movedown.png + themes/monochrome/24/currentmodel.png + themes/monochrome/24/read_flash.png + themes/monochrome/24/duplicate.png + themes/monochrome/24/add.png + themes/monochrome/24/update.png + themes/monochrome/24/contributors.png + themes/monochrome/24/stop.png + themes/monochrome/24/write_eeprom.png + themes/monochrome/32/open.png + themes/monochrome/32/edit.png + themes/monochrome/32/information.png + themes/monochrome/32/configure.png + themes/monochrome/32/switch_dir.png + themes/monochrome/32/list.png + themes/monochrome/32/wizard.png + themes/monochrome/32/logs.png + themes/monochrome/32/new.png + themes/monochrome/32/save.png + themes/monochrome/32/recentdocument.png + themes/monochrome/32/simulate.png + themes/monochrome/32/changelog.png + themes/monochrome/32/copy.png + themes/monochrome/32/write_flash.png + themes/monochrome/32/read_eeprom_file.png + themes/monochrome/32/clear.png + themes/monochrome/32/play.png + themes/monochrome/32/fuses.png + themes/monochrome/32/arrow-right.png + themes/monochrome/32/exit.png + themes/monochrome/32/moveup.png + themes/monochrome/32/read_eeprom.png + themes/monochrome/32/cut.png + themes/monochrome/32/arrow-left.png + themes/monochrome/32/write_eeprom_file.png + themes/monochrome/32/library.png + themes/monochrome/32/profiles.png + themes/monochrome/32/paste.png + themes/monochrome/32/print.png + themes/monochrome/32/compare.png + themes/monochrome/32/customize.png + themes/monochrome/32/saveas.png + themes/monochrome/32/preferences.png + themes/monochrome/32/movedown.png + themes/monochrome/32/currentmodel.png + themes/monochrome/32/read_flash.png + themes/monochrome/32/duplicate.png + themes/monochrome/32/add.png + themes/monochrome/32/update.png + themes/monochrome/32/contributors.png + themes/monochrome/32/stop.png + themes/monochrome/32/write_eeprom.png + themes/monochrome/48/open.png + themes/monochrome/48/edit.png + themes/monochrome/48/information.png + themes/monochrome/48/configure.png + themes/monochrome/48/switch_dir.png + themes/monochrome/48/list.png + themes/monochrome/48/wizard.png + themes/monochrome/48/logs.png + themes/monochrome/48/new.png + themes/monochrome/48/save.png + themes/monochrome/48/recentdocument.png + themes/monochrome/48/simulate.png + themes/monochrome/48/changelog.png + themes/monochrome/48/copy.png + themes/monochrome/48/write_flash.png + themes/monochrome/48/read_eeprom_file.png + themes/monochrome/48/clear.png + themes/monochrome/48/play.png + themes/monochrome/48/fuses.png + themes/monochrome/48/arrow-right.png + themes/monochrome/48/exit.png + themes/monochrome/48/moveup.png + themes/monochrome/48/read_eeprom.png + themes/monochrome/48/cut.png + themes/monochrome/48/arrow-left.png + themes/monochrome/48/write_eeprom_file.png + themes/monochrome/48/library.png + themes/monochrome/48/profiles.png + themes/monochrome/48/paste.png + themes/monochrome/48/print.png + themes/monochrome/48/compare.png + themes/monochrome/48/customize.png + themes/monochrome/48/saveas.png + themes/monochrome/48/preferences.png + themes/monochrome/48/movedown.png + themes/monochrome/48/currentmodel.png + themes/monochrome/48/read_flash.png + themes/monochrome/48/duplicate.png + themes/monochrome/48/add.png + themes/monochrome/48/update.png + themes/monochrome/48/contributors.png + themes/monochrome/48/stop.png + themes/monochrome/48/write_eeprom.png + themes/classic/16/open.png + themes/classic/16/edit.png + themes/classic/16/information.png + themes/classic/16/configure.png + themes/classic/16/switch_dir.png + themes/classic/16/list.png + themes/classic/16/wizard.png + themes/classic/16/logs.png + themes/classic/16/new.png + themes/classic/16/save.png + themes/classic/16/recentdocument.png + themes/classic/16/simulate.png + themes/classic/16/changelog.png + themes/classic/16/copy.png + themes/classic/16/write_flash.png + themes/classic/16/read_eeprom_file.png + themes/classic/16/clear.png + themes/classic/16/play.png + themes/classic/16/fuses.png + themes/classic/16/arrow-right.png + themes/classic/16/exit.png + themes/classic/16/moveup.png + themes/classic/16/read_eeprom.png + themes/classic/16/cut.png + themes/classic/16/arrow-left.png + themes/classic/16/write_eeprom_file.png + themes/classic/16/library.png + themes/classic/16/profiles.png + themes/classic/16/paste.png + themes/classic/16/print.png + themes/classic/16/compare.png + themes/classic/16/customize.png + themes/classic/16/saveas.png + themes/classic/16/preferences.png + themes/classic/16/movedown.png + themes/classic/16/currentmodel.png + themes/classic/16/read_flash.png + themes/classic/16/duplicate.png + themes/classic/16/add.png + themes/classic/16/update.png + themes/classic/16/contributors.png + themes/classic/16/stop.png + themes/classic/16/write_eeprom.png + themes/classic/24/open.png + themes/classic/24/edit.png + themes/classic/24/information.png + themes/classic/24/configure.png + themes/classic/24/switch_dir.png + themes/classic/24/list.png + themes/classic/24/wizard.png + themes/classic/24/logs.png + themes/classic/24/new.png + themes/classic/24/save.png + themes/classic/24/recentdocument.png + themes/classic/24/simulate.png + themes/classic/24/changelog.png + themes/classic/24/copy.png + themes/classic/24/write_flash.png + themes/classic/24/read_eeprom_file.png + themes/classic/24/clear.png + themes/classic/24/play.png + themes/classic/24/fuses.png + themes/classic/24/arrow-right.png + themes/classic/24/exit.png + themes/classic/24/moveup.png + themes/classic/24/read_eeprom.png + themes/classic/24/cut.png + themes/classic/24/arrow-left.png + themes/classic/24/write_eeprom_file.png + themes/classic/24/library.png + themes/classic/24/profiles.png + themes/classic/24/paste.png + themes/classic/24/print.png + themes/classic/24/compare.png + themes/classic/24/customize.png + themes/classic/24/saveas.png + themes/classic/24/preferences.png + themes/classic/24/movedown.png + themes/classic/24/currentmodel.png + themes/classic/24/read_flash.png + themes/classic/24/duplicate.png + themes/classic/24/add.png + themes/classic/24/update.png + themes/classic/24/contributors.png + themes/classic/24/stop.png + themes/classic/24/write_eeprom.png + themes/classic/32/open.png + themes/classic/32/edit.png + themes/classic/32/information.png + themes/classic/32/configure.png + themes/classic/32/switch_dir.png + themes/classic/32/list.png + themes/classic/32/wizard.png + themes/classic/32/logs.png + themes/classic/32/new.png + themes/classic/32/save.png + themes/classic/32/recentdocument.png + themes/classic/32/simulate.png + themes/classic/32/changelog.png + themes/classic/32/copy.png + themes/classic/32/write_flash.png + themes/classic/32/read_eeprom_file.png + themes/classic/32/clear.png + themes/classic/32/play.png + themes/classic/32/fuses.png + themes/classic/32/arrow-right.png + themes/classic/32/exit.png + themes/classic/32/moveup.png + themes/classic/32/read_eeprom.png + themes/classic/32/cut.png + themes/classic/32/arrow-left.png + themes/classic/32/write_eeprom_file.png + themes/classic/32/library.png + themes/classic/32/profiles.png + themes/classic/32/paste.png + themes/classic/32/print.png + themes/classic/32/compare.png + themes/classic/32/customize.png + themes/classic/32/saveas.png + themes/classic/32/preferences.png + themes/classic/32/movedown.png + themes/classic/32/currentmodel.png + themes/classic/32/read_flash.png + themes/classic/32/duplicate.png + themes/classic/32/add.png + themes/classic/32/update.png + themes/classic/32/contributors.png + themes/classic/32/stop.png + themes/classic/32/write_eeprom.png + themes/classic/48/open.png + themes/classic/48/edit.png + themes/classic/48/information.png + themes/classic/48/configure.png + themes/classic/48/switch_dir.png + themes/classic/48/list.png + themes/classic/48/wizard.png + themes/classic/48/logs.png + themes/classic/48/new.png + themes/classic/48/save.png + themes/classic/48/recentdocument.png + themes/classic/48/simulate.png + themes/classic/48/changelog.png + themes/classic/48/copy.png + themes/classic/48/write_flash.png + themes/classic/48/read_eeprom_file.png + themes/classic/48/clear.png + themes/classic/48/play.png + themes/classic/48/fuses.png + themes/classic/48/arrow-right.png + themes/classic/48/exit.png + themes/classic/48/moveup.png + themes/classic/48/read_eeprom.png + themes/classic/48/cut.png + themes/classic/48/arrow-left.png + themes/classic/48/write_eeprom_file.png + themes/classic/48/library.png + themes/classic/48/profiles.png + themes/classic/48/paste.png + themes/classic/48/print.png + themes/classic/48/compare.png + themes/classic/48/customize.png + themes/classic/48/saveas.png + themes/classic/48/preferences.png + themes/classic/48/movedown.png + themes/classic/48/currentmodel.png + themes/classic/48/read_flash.png + themes/classic/48/duplicate.png + themes/classic/48/add.png + themes/classic/48/update.png + themes/classic/48/contributors.png + themes/classic/48/stop.png + themes/classic/48/write_eeprom.png diff --git a/companion/src/comparedialog.ui b/companion/src/comparedialog.ui index 7667ad3ce..6f11bf138 100644 --- a/companion/src/comparedialog.ui +++ b/companion/src/comparedialog.ui @@ -30,7 +30,7 @@ - :/images/print.png:/images/print.png + :/icon.png:/icon.png diff --git a/companion/src/firmwares/er9x/er9xinterface.cpp b/companion/src/firmwares/er9x/er9xinterface.cpp index f2eed4608..9d413654d 100644 --- a/companion/src/firmwares/er9x/er9xinterface.cpp +++ b/companion/src/firmwares/er9x/er9xinterface.cpp @@ -44,7 +44,7 @@ const char * Er9xInterface::getName() const int Er9xInterface::getEEpromSize() { - QSettings settings("companion9x", "companion9x"); + QSettings settings("companion", "companion"); QString avrMCU = settings.value("mcu", QString("m64")).toString(); if (avrMCU==QString("m128")) { return 2*EESIZE_STOCK; diff --git a/companion/src/firmwares/gruvin9x/gruvin9xinterface.cpp b/companion/src/firmwares/gruvin9x/gruvin9xinterface.cpp index cdb6d4124..1115f46f1 100644 --- a/companion/src/firmwares/gruvin9x/gruvin9xinterface.cpp +++ b/companion/src/firmwares/gruvin9x/gruvin9xinterface.cpp @@ -47,7 +47,7 @@ const char * Gruvin9xInterface::getName() const int Gruvin9xInterface::getEEpromSize() { if (board == BOARD_STOCK) { - QSettings settings("companion9x", "companion9x"); + QSettings settings("companion", "companion"); QString avrMCU = settings.value("mcu", QString("m64")).toString(); if (avrMCU==QString("m128")) { return EESIZE_STOCK*2; diff --git a/companion/src/firmwares/opentx/opentxSky9xsimulator.cpp b/companion/src/firmwares/opentx/opentxSky9xsimulator.cpp index 9f444c808..393eff229 100644 --- a/companion/src/firmwares/opentx/opentxSky9xsimulator.cpp +++ b/companion/src/firmwares/opentx/opentxSky9xsimulator.cpp @@ -135,7 +135,7 @@ using namespace Open9xSky9x; Open9xSky9xSimulator::Open9xSky9xSimulator(Open9xInterface * open9xInterface): open9xInterface(open9xInterface) { - QSettings settings("companion9x", "companion9x"); + QSettings settings("companion", "companion"); QString path=settings.value("sdPath", ".").toString()+"/"; int i=0; for (i=0; i< std::min(path.length(),1022); i++) { diff --git a/companion/src/firmwares/opentx/opentxTaranisSimulator.cpp b/companion/src/firmwares/opentx/opentxTaranisSimulator.cpp index ae4424797..3af9d4a86 100644 --- a/companion/src/firmwares/opentx/opentxTaranisSimulator.cpp +++ b/companion/src/firmwares/opentx/opentxTaranisSimulator.cpp @@ -145,7 +145,7 @@ OpentxTaranisSimulator::OpentxTaranisSimulator(Open9xInterface * open9xInterface open9xInterface(open9xInterface) { taranisSimulatorBoard = GetEepromInterface()->getBoard(); - QSettings settings("companion9x", "companion9x"); + QSettings settings("companion", "companion"); QString path=settings.value("sdPath", ".").toString()+"/"; int i=0; for (i=0; i< std::min(path.length(),1022); i++) { diff --git a/companion/src/firmwares/th9x/th9xinterface.cpp b/companion/src/firmwares/th9x/th9xinterface.cpp index d86065ddb..bf49284ce 100644 --- a/companion/src/firmwares/th9x/th9xinterface.cpp +++ b/companion/src/firmwares/th9x/th9xinterface.cpp @@ -44,7 +44,7 @@ const char * Th9xInterface::getName() const int Th9xInterface::getEEpromSize() { - QSettings settings("companion9x", "companion9x"); + QSettings settings("companion", "companion"); QString avrMCU = settings.value("mcu", QString("m64")).toString(); if (avrMCU==QString("m128")) { return 2*EESIZE_STOCK; diff --git a/companion/src/helpers.cpp b/companion/src/helpers.cpp index d89deaa6f..8c70f8805 100644 --- a/companion/src/helpers.cpp +++ b/companion/src/helpers.cpp @@ -1484,3 +1484,10 @@ QString getCenterBeep(ModelData * g_model) if(g_model->beepANACenter & 0x80) strl << "LS"; return strl.join(", "); } + +void populate_icon(QIcon *Icon, QString usedtheme, QString baseimage) { + Icon->addFile(":/themes/"+usedtheme+"/16/"+baseimage,QSize(16,16)); + Icon->addFile(":/themes/"+usedtheme+"/24/"+baseimage,QSize(24,24)); + Icon->addFile(":/themes/"+usedtheme+"/32/"+baseimage,QSize(32,32)); + Icon->addFile(":/themes/"+usedtheme+"/48/"+baseimage,QSize(48,48)); +} diff --git a/companion/src/helpers.h b/companion/src/helpers.h index 6f104480c..1cb564340 100644 --- a/companion/src/helpers.h +++ b/companion/src/helpers.h @@ -28,6 +28,7 @@ void populateVoiceLangCB(QComboBox *b, QString language); void populateTTraceCB(QComboBox *b, int value); void populateRotEncCB(QComboBox *b, int value, int renumber); void populateBacklightCB(QComboBox *b, const uint8_t value); +void populate_icon(QIcon *Icon, QString usedtheme, QString baseimage); class GVarGroup : public QObject { diff --git a/companion/src/mainwindow.cpp b/companion/src/mainwindow.cpp index eee308d16..4f0cad108 100644 --- a/companion/src/mainwindow.cpp +++ b/companion/src/mainwindow.cpp @@ -59,6 +59,7 @@ #include "burndialog.h" #include "hexinterface.h" #include "warnings.h" +#include "helpers.h" #include "firmwares/opentx/opentxinterface.h" // TODO get rid of this include #define DONATE_STR "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=QUZ48K4SEXDP2" @@ -80,6 +81,7 @@ #include "mountlist.h" #endif + MainWindow::MainWindow(): downloadDialog_forWait(NULL) { @@ -104,6 +106,24 @@ downloadDialog_forWait(NULL) Theme="monochrome"; break; } + int icon_size=settings.value("icon_size", 1).toInt(); + switch (icon_size) { + case 0: + ISize="16"; + break; + case 1: + ISize="24"; + break; + case 2: + ISize="32"; + break; + case 3: + ISize="48"; + break; + default: + ISize="24"; + break; + } restoreGeometry(settings.value("mainWindowGeometry").toByteArray()); createActions(); createMenus(); @@ -1069,14 +1089,18 @@ void MainWindow::burnFrom() QStringList str; str << path << tempFile; avrOutputDialog *ad = new avrOutputDialog(this,"", str, tr("Read Models and Settings From Tx")); //, AVR_DIALOG_KEEP_OPEN); - ad->setWindowIcon(QIcon(":/themes/"+Theme+"/read_eeprom.png")); + QIcon icon; + populate_icon(&icon,Theme,"read_eeprom.png"); + ad->setWindowIcon(icon); res = ad->exec(); sleep(1); } } else { QStringList str = GetReceiveEEpromCommand(tempFile); avrOutputDialog *ad = new avrOutputDialog(this, GetAvrdudeLocation(), str, tr("Read Models and Settings From Tx")); //, AVR_DIALOG_KEEP_OPEN); - ad->setWindowIcon(QIcon(":/themes/"+Theme+"/read_eeprom.png")); + QIcon icon; + populate_icon(&icon,Theme,"read_eeprom.png"); + ad->setWindowIcon(icon); res = ad->exec(); } if(QFileInfo(tempFile).exists() && res) { @@ -1126,14 +1150,18 @@ void MainWindow::burnExtenalToEEPROM() QStringList str; str << path << backupFile; avrOutputDialog *ad = new avrOutputDialog(this,"", str, tr("Backup Models and Settings From Tx")); //, AVR_DIALOG_KEEP_OPEN); - ad->setWindowIcon(QIcon(":/themes/"+Theme+"/read_eeprom.png")); + QIcon icon; + populate_icon(&icon,Theme,"read_eeprom.png"); + ad->setWindowIcon(icon); ad->exec(); sleep(1); } } else { QStringList str = GetReceiveEEpromCommand(backupFile); avrOutputDialog *ad = new avrOutputDialog(this, GetAvrdudeLocation(), str, tr("Backup Models and Settings From Tx")); - ad->setWindowIcon(QIcon(":/themes/"+Theme+"/read_eeprom.png")); + QIcon icon; + populate_icon(&icon,Theme,"read_eeprom.png"); + ad->setWindowIcon(icon); ad->exec(); sleep(1); } @@ -1143,7 +1171,9 @@ void MainWindow::burnExtenalToEEPROM() QString tempFlash = tempDir + "/flash.bin"; QStringList str = GetReceiveFlashCommand(tempFlash); avrOutputDialog *ad = new avrOutputDialog(this, GetAvrdudeLocation(), str, "Read Firmware From Tx"); - ad->setWindowIcon(QIcon(":/themes/"+Theme+"/read_flash.png")); + QIcon icon; + populate_icon(&icon,Theme,"read_flash.png"); + ad->setWindowIcon(icon); ad->exec(); sleep(1); QString restoreFile = tempDir + "/compat.bin"; @@ -1176,14 +1206,18 @@ void MainWindow::burnExtenalToEEPROM() QStringList str; str << path << backupFile; avrOutputDialog *ad = new avrOutputDialog(this,"", str, tr("Backup Models and Settings From Tx")); //, AVR_DIALOG_KEEP_OPEN); - ad->setWindowIcon(QIcon(":/themes/"+Theme+"/read_eeprom.png")); + QIcon icon; + populate_icon(&icon,Theme,"read_eeprom.png"); + ad->setWindowIcon(icon); ad->exec(); sleep(1); } } else { QStringList str = ((MainWindow *)this->parent())->GetReceiveEEpromCommand(backupFile); avrOutputDialog *ad = new avrOutputDialog(this, ((MainWindow *)this->parent())->GetAvrdudeLocation(), str, tr("Backup Models and Settings From Tx")); - ad->setWindowIcon(QIcon(":/themes/"+Theme+"/read_eeprom.png")); + QIcon icon; + populate_icon(&icon,Theme,"read_eeprom.png"); + ad->setWindowIcon(icon); ad->exec(); sleep(1); } @@ -1198,14 +1232,18 @@ void MainWindow::burnExtenalToEEPROM() QStringList str; str << fileName << path; avrOutputDialog *ad = new avrOutputDialog(this,"", str, tr("Write Models and Settings To Tx")); //, AVR_DIALOG_KEEP_OPEN); - ad->setWindowIcon(QIcon(":/themes/"+Theme+"/read_eeprom.png")); + QIcon icon; + populate_icon(&icon,Theme,"read_eeprom.png"); + ad->setWindowIcon(icon); ad->exec(); sleep(1); } } else { QStringList str = GetSendEEpromCommand(fileName); avrOutputDialog *ad = new avrOutputDialog(this, GetAvrdudeLocation(), str, "Write Models and Settings To Tx", AVR_DIALOG_SHOW_DONE); - ad->setWindowIcon(QIcon(":/themes/"+Theme+"/write_eeprom.png")); + QIcon icon; + populate_icon(&icon,Theme,"write_eeprom.png"); + ad->setWindowIcon(icon); ad->exec(); } } @@ -1370,13 +1408,17 @@ void MainWindow::burnToFlash(QString fileToFlash) } QStringList str = GetReceiveEEpromCommand(backupFile); avrOutputDialog *ad = new avrOutputDialog(this, GetAvrdudeLocation(), str, tr("Backup Models and Settings From Tx"), AVR_DIALOG_CLOSE_IF_SUCCESSFUL); - ad->setWindowIcon(QIcon(":/themes/"+Theme+"/read_eeprom.png")); + QIcon icon; + populate_icon(&icon,Theme,"read_eeprom.png"); + ad->setWindowIcon(icon); int res = ad->exec(); if (QFileInfo(backupFile).exists() && res) { sleep(1); QStringList str = GetSendFlashCommand(fileName); avrOutputDialog *ad = new avrOutputDialog(this, GetAvrdudeLocation(), str, tr("Write Firmware To Tx"), AVR_DIALOG_CLOSE_IF_SUCCESSFUL); - ad->setWindowIcon(QIcon(":/themes/"+Theme+"/write_flash.png")); + QIcon iconw; + populate_icon(&iconw,Theme,"write_eeprom.png"); + ad->setWindowIcon(iconw); int res = ad->exec(); if (res) { QString restoreFile = tempDir + "/restore.bin"; @@ -1387,7 +1429,7 @@ void MainWindow::burnToFlash(QString fileToFlash) sleep(1); QStringList str = GetSendEEpromCommand(restoreFile); avrOutputDialog *ad = new avrOutputDialog(this, GetAvrdudeLocation(), str, tr("Restore Models and Settings To Tx"), AVR_DIALOG_CLOSE_IF_SUCCESSFUL); - ad->setWindowIcon(QIcon(":/themes/"+Theme+"/write_eeprom.png")); + ad->setWindowIcon(iconw); res=ad->exec(); if (!res) { QMessageBox::warning(this, tr("Restore failed"), tr("Could not restore Models and Settings to TX. The models and settings data file can be found at: %1").arg(backupFile)); @@ -1412,14 +1454,18 @@ void MainWindow::burnToFlash(QString fileToFlash) QString backupFile=backupPath+"/backup-"+QDateTime().currentDateTime().toString("yyyy-MM-dd-hhmmss")+".bin"; QStringList str = GetReceiveEEpromCommand(backupFile); avrOutputDialog *ad = new avrOutputDialog(this, GetAvrdudeLocation(), str, tr("Backup Models and Settings From Tx")); - ad->setWindowIcon(QIcon(":/themes/"+Theme+"/read_eeprom.png")); + QIcon icon; + populate_icon(&icon,Theme,"read_eeprom.png"); + ad->setWindowIcon(icon); ad->exec(); sleep(1); } QStringList str = GetSendFlashCommand(fileName); avrOutputDialog *ad = new avrOutputDialog(this, GetAvrdudeLocation(), str, tr("Write Firmware To Tx"), AVR_DIALOG_SHOW_DONE); - ad->setWindowIcon(QIcon(":/themes/"+Theme+"/write_flash.png")); + QIcon iconw; + populate_icon(&iconw,Theme,"read_eeprom.png"); + ad->setWindowIcon(iconw); ad->exec(); } } @@ -1440,14 +1486,18 @@ void MainWindow::burnExtenalFromEEPROM() QStringList str; str << path << fileName; avrOutputDialog *ad = new avrOutputDialog(this,"", str, tr("Read Models and Settings From Tx")); //, AVR_DIALOG_KEEP_OPEN); - ad->setWindowIcon(QIcon(":/themes/"+Theme+"/read_eeprom.png")); + QIcon icon; + populate_icon(&icon,Theme,"read_eeprom.png"); + ad->setWindowIcon(icon); ad->exec(); } } else { settings.setValue("lastDir", QFileInfo(fileName).dir().absolutePath()); QStringList str = GetReceiveEEpromCommand(fileName); avrOutputDialog *ad = new avrOutputDialog(this, GetAvrdudeLocation(), str, tr("Read Models and Settings From Tx")); - ad->setWindowIcon(QIcon(":/themes/"+Theme+"/read_eeprom.png")); + QIcon icon; + populate_icon(&icon,Theme,"read_eeprom.png"); + ad->setWindowIcon(icon); ad->exec(); } } @@ -1465,7 +1515,9 @@ void MainWindow::burnFromFlash() settings.setValue("lastFlashDir",QFileInfo(fileName).dir().absolutePath()); QStringList str = GetReceiveFlashCommand(fileName); avrOutputDialog *ad = new avrOutputDialog(this, GetAvrdudeLocation(), str, "Read Firmware From Tx"); - ad->setWindowIcon(QIcon(":/themes/"+Theme+"/read_flash.png")); + QIcon icon; + populate_icon(&icon,Theme,"read_flash.png"); + ad->setWindowIcon(icon); ad->exec(); } @@ -1605,137 +1657,191 @@ MdiChild *MainWindow::createMdiChild() void MainWindow::createActions() { - newAct = new QAction(QIcon(":/themes/"+Theme+"/new.png"), tr("&New"), this); + QIcon newActIcon; + populate_icon(&newActIcon,Theme,"new.png"); + + newAct = new QAction(newActIcon, tr("&New"), this); newAct->setShortcuts(QKeySequence::New); newAct->setStatusTip(tr("Create a new file")); connect(newAct, SIGNAL(triggered()), this, SLOT(newFile())); - openAct = new QAction(QIcon(":/themes/"+Theme+"/open.png"), tr("&Open..."), this); + QIcon openActIcon; + populate_icon(&openActIcon,Theme,"open.png"); + openAct = new QAction(openActIcon, tr("&Open..."), this); openAct->setShortcuts(QKeySequence::Open); openAct->setStatusTip(tr("Open an existing file")); connect(openAct, SIGNAL(triggered()), this, SLOT(openFile())); - loadbackupAct = new QAction(QIcon(":/themes/"+Theme+"/open.png"), tr("&loadBackup..."), this); + loadbackupAct = new QAction(openActIcon, tr("&loadBackup..."), this); loadbackupAct->setStatusTip(tr("Load backup from file")); connect(loadbackupAct, SIGNAL(triggered()), this, SLOT(loadBackup())); - saveAct = new QAction(QIcon(":/themes/"+Theme+"/save.png"), tr("&Save"), this); + QIcon saveActIcon; + populate_icon(&saveActIcon,Theme,"save.png"); + saveAct = new QAction(saveActIcon, tr("&Save"), this); saveAct->setShortcuts(QKeySequence::Save); saveAct->setStatusTip(tr("Save the document to disk")); connect(saveAct, SIGNAL(triggered()), this, SLOT(save())); - saveAsAct = new QAction(QIcon(":/themes/"+Theme+"/saveas.png"), tr("Save &As..."), this); + QIcon saveAsActIcon; + populate_icon(&saveAsActIcon,Theme,"saveas.png"); + saveAsAct = new QAction(saveAsActIcon, tr("Save &As..."), this); saveAsAct->setShortcuts(QKeySequence::SaveAs); saveAsAct->setStatusTip(tr("Save the document under a new name")); connect(saveAsAct, SIGNAL(triggered()), this, SLOT(saveAs())); - logsAct = new QAction(QIcon(":/themes/"+Theme+"/logs.png"), tr("Lo&gs"), this); + QIcon logsActIcon; + populate_icon(&logsActIcon,Theme,"logs.png"); + logsAct = new QAction(logsActIcon, tr("Lo&gs"), this); logsAct->setShortcut(tr("Ctrl+G")); logsAct->setStatusTip(tr("Open log file")); connect(logsAct, SIGNAL(triggered()), this, SLOT(logFile())); - preferencesAct = new QAction(QIcon(":/themes/"+Theme+"/preferences.png"), tr("&Preferences..."), this); + QIcon preferencesActIcon; + populate_icon(&preferencesActIcon,Theme,"preferences.png"); + preferencesAct = new QAction(preferencesActIcon, tr("&Preferences..."), this); preferencesAct->setStatusTip(tr("Edit general preferences")); connect(preferencesAct, SIGNAL(triggered()), this, SLOT(preferences())); - checkForUpdatesAct = new QAction(QIcon(":/themes/"+Theme+"/update.png"), tr("&Check for updates..."), this); + QIcon checkForUpdatesActIcon; + populate_icon(&checkForUpdatesActIcon,Theme,"update.png"); + checkForUpdatesAct = new QAction(checkForUpdatesActIcon, tr("&Check for updates..."), this); checkForUpdatesAct->setStatusTip(tr("Check for new version of Companion")); connect(checkForUpdatesAct, SIGNAL(triggered()), this, SLOT(doUpdates())); - contributorsAct = new QAction(QIcon(":/themes/"+Theme+"/contributors.png"), tr("Contributors &List..."), this); + QIcon contributorsActIcon; + populate_icon(&contributorsActIcon,Theme,"contributors.png"); + contributorsAct = new QAction(contributorsActIcon, tr("Contributors &List..."), this); contributorsAct->setStatusTip(tr("Show Companion contributors list")); connect(contributorsAct, SIGNAL(triggered()), this, SLOT(contributors())); - changelogAct = new QAction(QIcon(":/themes/"+Theme+"/changelog.png"), tr("ChangeLog..."), this); + QIcon changelogActIcon; + populate_icon(&changelogActIcon,Theme,"changelog.png"); + changelogAct = new QAction(changelogActIcon, tr("ChangeLog..."), this); changelogAct->setStatusTip(tr("Show Companion changelog")); connect(changelogAct, SIGNAL(triggered()), this, SLOT(changelog())); - fwchangelogAct = new QAction(QIcon(":/themes/"+Theme+"/changelog.png"), tr("Firmware ChangeLog..."), this); + QIcon fwchangelogActIcon; + populate_icon(&fwchangelogActIcon,Theme,"changelog.png"); + fwchangelogAct = new QAction(fwchangelogActIcon, tr("Firmware ChangeLog..."), this); fwchangelogAct->setStatusTip(tr("Show firmware changelog")); connect(fwchangelogAct, SIGNAL(triggered()), this, SLOT(fwchangelog())); - compareAct = new QAction(QIcon(":/themes/"+Theme+"/compare.png"), tr("Compare..."), this); + QIcon compareActIcon; + populate_icon(&compareActIcon,Theme,"compare.png"); + compareAct = new QAction(compareActIcon, tr("Compare..."), this); compareAct->setStatusTip(tr("Compare models")); compareAct->setEnabled(false); connect(compareAct, SIGNAL(triggered()), this, SLOT(compare())); - customizeSplashAct = new QAction(QIcon(":/themes/"+Theme+"/customize.png"), tr("Customize your &TX..."), this); + QIcon customizeSplashActIcon; + populate_icon(&customizeSplashActIcon,Theme,"customize.png"); + customizeSplashAct = new QAction(customizeSplashActIcon, tr("Customize your &TX..."), this); customizeSplashAct->setStatusTip(tr("Customize the splash screen of your TX")); connect(customizeSplashAct, SIGNAL(triggered()), this, SLOT(customizeSplash())); //! [0] - exitAct = new QAction(QIcon(":/themes/"+Theme+"/exit.png"), tr("E&xit"), this); + QIcon exitActIcon; + populate_icon(&exitActIcon,Theme,"exit.png"); + exitAct = new QAction(exitActIcon, tr("E&xit"), this); exitAct->setShortcuts(QKeySequence::Quit); exitAct->setStatusTip(tr("Exit the application")); connect(exitAct, SIGNAL(triggered()), qApp, SLOT(closeAllWindows())); //! [0] - cutAct = new QAction(QIcon(":/themes/"+Theme+"/cut.png"), tr("Cu&t"), this); + QIcon cutActIcon; + populate_icon(&cutActIcon,Theme,"cut.png"); + cutAct = new QAction(cutActIcon, tr("Cu&t"), this); cutAct->setShortcuts(QKeySequence::Cut); cutAct->setStatusTip(tr("Cut the current selection's contents to the " "clipboard")); connect(cutAct, SIGNAL(triggered()), this, SLOT(cut())); - copyAct = new QAction(QIcon(":/themes/"+Theme+"/copy.png"), tr("&Copy"), this); + QIcon copyActIcon; + populate_icon(©ActIcon,Theme,"copy.png"); + copyAct = new QAction(copyActIcon, tr("&Copy"), this); copyAct->setShortcuts(QKeySequence::Copy); copyAct->setStatusTip(tr("Copy the current selection's contents to the " "clipboard")); connect(copyAct, SIGNAL(triggered()), this, SLOT(copy())); - pasteAct = new QAction(QIcon(":/themes/"+Theme+"/paste.png"), tr("&Paste"), this); + QIcon pasteActIcon; + populate_icon(&pasteActIcon,Theme,"paste.png"); + pasteAct = new QAction(pasteActIcon, tr("&Paste"), this); pasteAct->setShortcuts(QKeySequence::Paste); pasteAct->setStatusTip(tr("Paste the clipboard's contents into the current " "selection")); connect(pasteAct, SIGNAL(triggered()), this, SLOT(paste())); - - burnToAct = new QAction(QIcon(":/themes/"+Theme+"/write_eeprom.png"), tr("&Write Models and Settings To Tx"), this); + QIcon burnToActIcon; + populate_icon(&burnToActIcon,Theme,"write_eeprom.png"); + burnToAct = new QAction(burnToActIcon, tr("&Write Models and Settings To Tx"), this); burnToAct->setShortcut(tr("Ctrl+Alt+W")); burnToAct->setStatusTip(tr("Write Models and Settings to transmitter")); connect(burnToAct,SIGNAL(triggered()),this,SLOT(burnTo())); - burnFromAct = new QAction(QIcon(":/themes/"+Theme+"/read_eeprom.png"), tr("&Read Models and Settings From Tx"), this); + QIcon burnFromActIcon; + populate_icon(&burnFromActIcon,Theme,"read_eeprom.png"); + burnFromAct = new QAction(burnFromActIcon, tr("&Read Models and Settings From Tx"), this); burnFromAct->setShortcut(tr("Ctrl+Alt+R")); burnFromAct->setStatusTip(tr("Read Models and Settings from transmitter")); connect(burnFromAct,SIGNAL(triggered()),this,SLOT(burnFrom())); - burnToFlashAct = new QAction(QIcon(":/themes/"+Theme+"/write_flash.png"), tr("Write Firmware"), this); + QIcon burnToFlashActIcon; + populate_icon(&burnToFlashActIcon,Theme,"write_flash.png"); + burnToFlashAct = new QAction(burnToFlashActIcon, tr("Write Firmware"), this); burnToFlashAct->setStatusTip(tr("Write firmware to transmitter")); connect(burnToFlashAct,SIGNAL(triggered()),this,SLOT(burnToFlash())); - burnExtenalToEEPROMAct = new QAction(QIcon(":/themes/"+Theme+"/write_eeprom_file.png"), tr("Write Models and Settings from file to Tx"), this); + QIcon burnExtenalToEEPROMActIcon; + populate_icon(&burnExtenalToEEPROMActIcon,Theme,"write_eeprom_file.png"); + burnExtenalToEEPROMAct = new QAction(burnExtenalToEEPROMActIcon, tr("Write Models and Settings from file to Tx"), this); burnExtenalToEEPROMAct->setStatusTip(tr("Write Models and Settings from file to transmitter")); connect(burnExtenalToEEPROMAct,SIGNAL(triggered()),this,SLOT(burnExtenalToEEPROM())); - burnExtenalFromEEPROMAct = new QAction(QIcon(":/themes/"+Theme+"/read_eeprom_file.png"), tr("Save transmitter Models and Settings to file"), this); + QIcon burnExtenalFromEEPROMActIcon; + populate_icon(&burnExtenalFromEEPROMActIcon,Theme,"read_eeprom_file.png"); + burnExtenalFromEEPROMAct = new QAction(burnExtenalFromEEPROMActIcon, tr("Save transmitter Models and Settings to file"), this); burnExtenalFromEEPROMAct->setStatusTip(tr("Save the Models and Settings from the transmitter to a file")); connect(burnExtenalFromEEPROMAct,SIGNAL(triggered()),this,SLOT(burnExtenalFromEEPROM())); - burnFromFlashAct = new QAction(QIcon(":/themes/"+Theme+"/read_flash.png"), tr("Read Firmware"), this); + QIcon burnFromFlashActIcon; + populate_icon(&burnFromFlashActIcon,Theme,"read_flash.png"); + burnFromFlashAct = new QAction(burnFromFlashActIcon, tr("Read Firmware"), this); burnFromFlashAct->setStatusTip(tr("Read firmware from transmitter")); connect(burnFromFlashAct,SIGNAL(triggered()),this,SLOT(burnFromFlash())); - burnConfigAct = new QAction(QIcon(":/themes/"+Theme+"/configure.png"), tr("&Configure..."), this); + QIcon burnConfigActIcon; + populate_icon(&burnConfigActIcon,Theme,"configure.png"); + burnConfigAct = new QAction(burnConfigActIcon, tr("&Configure..."), this); burnConfigAct->setStatusTip(tr("Configure software for reading from and writing to the transmitter")); connect(burnConfigAct,SIGNAL(triggered()),this,SLOT(burnConfig())); EEPROMInterface *eepromInterface = GetEepromInterface(); if (!IS_ARM(eepromInterface->getBoard())) { - burnListAct = new QAction(QIcon(":/themes/"+Theme+"/list.png"), tr("&List programmers"), this); + QIcon burnListActIcon; + populate_icon(&burnListActIcon,Theme,"list.png"); + burnListAct = new QAction(burnListActIcon, tr("&List programmers"), this); burnListAct->setStatusTip(tr("List available programmers")); connect(burnListAct,SIGNAL(triggered()),this,SLOT(burnList())); - burnFusesAct = new QAction(QIcon(":/themes/"+Theme+"/fuses.png"), tr("&Fuses..."), this); + QIcon burnFusesActIcon; + populate_icon(&burnFusesActIcon,Theme,"fuses.png"); + burnFusesAct = new QAction(burnFusesActIcon, tr("&Fuses..."), this); burnFusesAct->setStatusTip(tr("Show fuses dialog")); connect(burnFusesAct,SIGNAL(triggered()),this,SLOT(burnFuses())); } - simulateAct = new QAction(QIcon(":/themes/"+Theme+"/simulate.png"), tr("&Simulate"), this); + QIcon simulateActIcon; + populate_icon(&simulateActIcon,Theme,"simulate.png"); + simulateAct = new QAction(simulateActIcon, tr("&Simulate"), this); simulateAct->setShortcut(tr("Alt+S")); simulateAct->setStatusTip(tr("Simulate selected model.")); simulateAct->setEnabled(false); connect(simulateAct,SIGNAL(triggered()),this,SLOT(simulate())); - printAct = new QAction(QIcon(":/themes/"+Theme+"/print.png"), tr("&Print"), this); + QIcon printActIcon; + populate_icon(&printActIcon,Theme,"print.png"); + printAct = new QAction(printActIcon, tr("&Print"), this); printAct->setShortcut(tr("Ctrl+P")); printAct->setStatusTip(tr("Print current model.")); printAct->setEnabled(false); @@ -1775,11 +1881,15 @@ void MainWindow::createActions() separatorAct = new QAction(this); separatorAct->setSeparator(true); - aboutAct = new QAction(QIcon(":/themes/"+Theme+"/information.png"), tr("&About"), this); + QIcon aboutActIcon; + populate_icon(&aboutActIcon,Theme,"information.png"); + aboutAct = new QAction(aboutActIcon, tr("&About"), this); aboutAct->setStatusTip(tr("Show the application's About box")); connect(aboutAct, SIGNAL(triggered()), this, SLOT(about())); - switchLayoutDirectionAct = new QAction(QIcon(":/themes/"+Theme+"/switch_dir.png"), tr("Switch layout direction"), this); + QIcon switchLayoutDirectionActIcon; + populate_icon(&switchLayoutDirectionActIcon,Theme,"switch_dir.png"); + switchLayoutDirectionAct = new QAction(switchLayoutDirectionActIcon, tr("Switch layout direction"), this); switchLayoutDirectionAct->setStatusTip(tr("Switch layout Left/Right")); connect(switchLayoutDirectionAct, SIGNAL(triggered()), this, SLOT(switchLayoutDirection())); for (int i = 0; i < MaxRecentFiles; ++i) { @@ -1809,7 +1919,9 @@ void MainWindow::createMenus() fileMenu->addAction(saveAct); fileMenu->addAction(saveAsAct); fileMenu->addMenu(recentFileMenu); - recentFileMenu->setIcon(QIcon(":/themes/"+Theme+"/recentdocument.png")); + QIcon recentFileMenuIcon; + populate_icon(&recentFileMenuIcon,Theme,"recentdocument.png"); + recentFileMenu->setIcon(recentFileMenuIcon); for ( int i = 0; i < MaxRecentFiles; ++i) recentFileMenu->addAction(recentFileActs[i]); fileMenu->addSeparator(); @@ -1822,7 +1934,9 @@ void MainWindow::createMenus() fileMenu->addAction(preferencesAct); fileMenu->addMenu(profilesMenu); - profilesMenu->setIcon(QIcon(":/themes/"+Theme+"/profiles.png")); + QIcon profilesMenuIcon; + populate_icon(&profilesMenuIcon,Theme,"profiles.png"); + profilesMenu->setIcon(profilesMenuIcon); for ( int i = 0; i < MAX_PROFILES; ++i) profilesMenu->addAction(profileActs[i]); fileMenu->addAction(switchLayoutDirectionAct); @@ -1912,7 +2026,9 @@ void MainWindow::createToolBars() QToolButton * recentToolButton = new QToolButton; recentToolButton->setPopupMode(QToolButton::InstantPopup); recentToolButton->setMenu(createRecentFileMenu()); - recentToolButton->setIcon(QIcon(":/themes/"+Theme+"/recentdocument.png")); + QIcon recentToolButtonIcon; + populate_icon(&recentToolButtonIcon,Theme,"recentdocument.png"); + recentToolButton->setIcon(recentToolButtonIcon); recentToolButton->setToolTip(tr("Recent Files")); fileToolBar->addWidget(recentToolButton); fileToolBar->addAction(saveAct); @@ -1922,7 +2038,9 @@ void MainWindow::createToolBars() profileButton = new QToolButton; profileButton->setPopupMode(QToolButton::InstantPopup); profileButton->setMenu(createProfilesMenu()); - profileButton->setIcon(QIcon(":/themes/"+Theme+"/profiles.png")); + QIcon profileButtonIcon; + populate_icon(&profileButtonIcon,Theme,"profiles.png"); + profileButton->setIcon(profileButtonIcon); profileButton->setToolTip(tr("Firmware Profiles")); fileToolBar->addWidget(profileButton); bool notfound=true; diff --git a/companion/src/mainwindow.h b/companion/src/mainwindow.h index d26667f75..de5b1083f 100644 --- a/companion/src/mainwindow.h +++ b/companion/src/mainwindow.h @@ -139,6 +139,7 @@ private: int getFileType(const QString &fullFileName); QString FindTaranisPath(); QString Theme; + QString ISize; QString strippedName(const QString &fullFileName); MdiChild *activeMdiChild(); diff --git a/companion/src/mdichild.cpp b/companion/src/mdichild.cpp index e9049bd1f..ed908c9b0 100644 --- a/companion/src/mdichild.cpp +++ b/companion/src/mdichild.cpp @@ -68,8 +68,22 @@ MdiChild::MdiChild(): isUntitled(true), fileChanged(false) { - ui->setupUi(this); + QSettings settings("companion", "companion"); + int theme_set=settings.value("theme", 1).toInt(); + QString Theme; + switch(theme_set) { + case 0: + Theme="classic"; + break; + default: + Theme="monochrome"; + break; + } + QIcon SimulateIcon; + populate_icon(&SimulateIcon,Theme,"simulate.png"); + ui->setupUi(this); + ui->SimulateTxButton->setIcon(SimulateIcon); setAttribute(Qt::WA_DeleteOnClose); eepromInterfaceChanged(); diff --git a/companion/src/mdichild.ui b/companion/src/mdichild.ui index d32b3cffb..b2fb21e2f 100644 --- a/companion/src/mdichild.ui +++ b/companion/src/mdichild.ui @@ -13,6 +13,10 @@ + + + :/icon.png:/icon.png + @@ -22,10 +26,6 @@ Simulate Tx - - - :/images/simulate.png:/images/simulate.png - diff --git a/companion/src/modeledit/curves.cpp b/companion/src/modeledit/curves.cpp index 2e52c54ea..21c3fec32 100644 --- a/companion/src/modeledit/curves.cpp +++ b/companion/src/modeledit/curves.cpp @@ -2,6 +2,7 @@ #include "ui_curves.h" #include "node.h" #include "edge.h" +#include "helpers.h" #include #include #include @@ -83,9 +84,20 @@ Curves::Curves(QWidget * parent, ModelData & model): QGraphicsScene *scene = new QGraphicsScene(ui->curvePreview); scene->setItemIndexMethod(QGraphicsScene::NoIndex); ui->curvePreview->setScene(scene); + QSettings settings("companion", "companion"); + int theme_set=settings.value("theme", 1).toInt(); + QString Theme; + switch(theme_set) { + case 0: + Theme="classic"; + break; + default: + Theme="monochrome"; + break; + } - QIcon clearIcon; - clearIcon.addFile(":/images/clear.png", QSize(), QIcon::Normal, QIcon::Off); + QIcon ClearIcon; + populate_icon(&ClearIcon,Theme,"clear.png"); for (int i=0; igetCapability(NumCurves); i++) { visibleCurves[i] = false; @@ -94,7 +106,7 @@ Curves::Curves(QWidget * parent, ModelData & model): QPushButton * reset = new QPushButton(this); reset->setProperty("index", i); reset->setMinimumSize(QSize(0, 0)); - reset->setIcon(clearIcon); + reset->setIcon(ClearIcon); reset->setIconSize(QSize(14, 14)); connect(reset, SIGNAL(clicked()), this, SLOT(resetCurve())); ui->curvesLayout->addWidget(reset, i, 0, 1, 1); diff --git a/companion/src/modeledit/customfunctions.cpp b/companion/src/modeledit/customfunctions.cpp index e6c883ee6..7bb1a2b76 100644 --- a/companion/src/modeledit/customfunctions.cpp +++ b/companion/src/modeledit/customfunctions.cpp @@ -36,7 +36,7 @@ CustomFunctionsPanel::CustomFunctionsPanel(QWidget * parent, ModelData & model, } } - QSettings settings("companion9x", "companion9x"); + QSettings settings("companion", "companion"); QString path = settings.value("sdPath", ".").toString(); path.append("/SOUNDS/"); QString lang = generalSettings.ttsLanguage; @@ -123,9 +123,22 @@ CustomFunctionsPanel::CustomFunctionsPanel(QWidget * parent, ModelData & model, connect(fswtchParamArmT[i], SIGNAL(editTextChanged ( const QString)), this, SLOT(customFunctionEdited())); #ifdef PHONON + QSettings settings("companion", "companion"); + int theme_set=settings.value("theme", 1).toInt(); + QString Theme; + switch(theme_set) { + case 0: + Theme="classic"; + break; + default: + Theme="monochrome"; + break; + } + QIcon PlayIcon; + populate_icon(&PlayIcon,Theme,"play.png"); playBT[i] = new QPushButton(this); playBT[i]->setObjectName(QString("play_%1").arg(i)); - playBT[i]->setIcon(QIcon(":/images/play.png")); + playBT[i]->setIcon(PlayIcon); paramLayout->addWidget(playBT[i]); connect(playBT[i], SIGNAL(pressed()), this, SLOT(playMusic())); #endif @@ -160,6 +173,20 @@ void CustomFunctionsPanel::mediaPlayer_state(Phonon::State newState, Phonon::Sta { if (phononLock) return; + QSettings settings("companion", "companion"); + int theme_set=settings.value("theme", 1).toInt(); + QString Theme; + switch(theme_set) { + case 0: + Theme="classic"; + break; + default: + Theme="monochrome"; + break; + } + QIcon PlayIcon; + populate_icon(&PlayIcon,Theme,"play.png"); + phononLock=true; if ((newState==Phonon::StoppedState || newState==Phonon::PausedState) && oldState==Phonon::PlayingState) { clickObject->stop(); @@ -167,7 +194,7 @@ void CustomFunctionsPanel::mediaPlayer_state(Phonon::State newState, Phonon::Sta clickObject->clear(); for (int i=0; igetCapability(CustomFunctions); i++) { playBT[i]->setObjectName(QString("play_%1").arg(i)); - playBT[i]->setIcon(QIcon(":/images/play.png")); + playBT[i]->setIcon(PlayIcon); } } if (newState==Phonon::ErrorState) { @@ -176,7 +203,7 @@ void CustomFunctionsPanel::mediaPlayer_state(Phonon::State newState, Phonon::Sta clickObject->clear(); for (int i=0; igetCapability(CustomFunctions); i++) { playBT[i]->setObjectName(QString("play_%1").arg(i)); - playBT[i]->setIcon(QIcon(":/images/play.png")); + playBT[i]->setIcon(PlayIcon); } } @@ -189,7 +216,22 @@ void CustomFunctionsPanel::playMusic() QPushButton *playButton = qobject_cast(sender()); int index=playButton->objectName().mid(5,2).toInt(); QString function=playButton->objectName().left(4); - QSettings settings("companion9x", "companion9x"); + QSettings settings("companion", "companion"); + int theme_set=settings.value("theme", 1).toInt(); + QString Theme; + switch(theme_set) { + case 0: + Theme="classic"; + break; + default: + Theme="monochrome"; + break; + } + QIcon PlayIcon; + populate_icon(&PlayIcon,Theme,"play.png"); + QIcon StopIcon; + populate_icon(&StopIcon,Theme,"stop.png"); + QString path=settings.value("sdPath", ".").toString(); QDir qd(path); QString track; @@ -217,12 +259,12 @@ void CustomFunctionsPanel::playMusic() clickObject->setCurrentSource(Phonon::MediaSource(track)); clickObject->play(); playBT[index]->setObjectName(QString("stop_%1").arg(index)); - playBT[index]->setIcon(QIcon(":/images/stop.png")); + playBT[index]->setIcon(StopIcon); } else { clickObject->stop(); clickObject->clear(); playBT[index]->setObjectName(QString("play_%1").arg(index)); - playBT[index]->setIcon(QIcon(":/images/play.png")); + playBT[index]->setIcon(PlayIcon); } #endif } @@ -457,6 +499,25 @@ void CustomFunctionsPanel::fsw_customContextMenuRequested(QPoint pos) { QLabel *label = (QLabel *)sender(); selectedFunction = label->property("index").toInt(); + QSettings settings("companion", "companion"); + int theme_set=settings.value("theme", 1).toInt(); + QString Theme; + switch(theme_set) { + case 0: + Theme="classic"; + break; + default: + Theme="monochrome"; + break; + } + QIcon ClearIcon; + populate_icon(&ClearIcon,Theme,"clear.png"); + QIcon CopyIcon; + populate_icon(&CopyIcon,Theme,"copy.png"); + QIcon CutIcon; + populate_icon(&CutIcon,Theme,"cut.png"); + QIcon PasteIcon; + populate_icon(&PasteIcon,Theme,"paste.png"); QPoint globalPos = label->mapToGlobal(pos); @@ -465,10 +526,10 @@ void CustomFunctionsPanel::fsw_customContextMenuRequested(QPoint pos) bool hasData = mimeData->hasFormat("application/x-companion9x-fsw"); QMenu contextMenu; - contextMenu.addAction(QIcon(":/images/clear.png"), tr("&Delete"),this,SLOT(fswDelete()),tr("Delete")); - contextMenu.addAction(QIcon(":/images/copy.png"), tr("&Copy"),this,SLOT(fswCopy()),tr("Ctrl+C")); - contextMenu.addAction(QIcon(":/images/cut.png"), tr("&Cut"),this,SLOT(fswCut()),tr("Ctrl+X")); - contextMenu.addAction(QIcon(":/images/paste.png"), tr("&Paste"),this,SLOT(fswPaste()),tr("Ctrl+V"))->setEnabled(hasData); + contextMenu.addAction(ClearIcon, tr("&Delete"),this,SLOT(fswDelete()),tr("Delete")); + contextMenu.addAction(CopyIcon, tr("&Copy"),this,SLOT(fswCopy()),tr("Ctrl+C")); + contextMenu.addAction(CutIcon, tr("&Cut"),this,SLOT(fswCut()),tr("Ctrl+X")); + contextMenu.addAction(PasteIcon, tr("&Paste"),this,SLOT(fswPaste()),tr("Ctrl+V"))->setEnabled(hasData); contextMenu.exec(globalPos); } diff --git a/companion/src/modeledit/customswitches.cpp b/companion/src/modeledit/customswitches.cpp index 8270689b6..487cd68cc 100644 --- a/companion/src/modeledit/customswitches.cpp +++ b/companion/src/modeledit/customswitches.cpp @@ -382,6 +382,25 @@ void CustomSwitchesPanel::csw_customContextMenuRequested(QPoint pos) { QLabel *label = (QLabel *)sender(); selectedSwitch = label->property("index").toInt(); + QSettings settings("companion", "companion"); + int theme_set=settings.value("theme", 1).toInt(); + QString Theme; + switch(theme_set) { + case 0: + Theme="classic"; + break; + default: + Theme="monochrome"; + break; + } + QIcon ClearIcon; + populate_icon(&ClearIcon,Theme,"clear.png"); + QIcon CopyIcon; + populate_icon(&CopyIcon,Theme,"copy.png"); + QIcon CutIcon; + populate_icon(&CutIcon,Theme,"cut.png"); + QIcon PasteIcon; + populate_icon(&PasteIcon,Theme,"paste.png"); QPoint globalPos = label->mapToGlobal(pos); @@ -390,10 +409,10 @@ void CustomSwitchesPanel::csw_customContextMenuRequested(QPoint pos) bool hasData = mimeData->hasFormat("application/x-companion9x-csw"); QMenu contextMenu; - contextMenu.addAction(QIcon(":/images/clear.png"), tr("&Delete"),this,SLOT(cswDelete()),tr("Delete")); - contextMenu.addAction(QIcon(":/images/copy.png"), tr("&Copy"),this,SLOT(cswCopy()),tr("Ctrl+C")); - contextMenu.addAction(QIcon(":/images/cut.png"), tr("&Cut"),this,SLOT(cswCut()),tr("Ctrl+X")); - contextMenu.addAction(QIcon(":/images/paste.png"), tr("&Paste"),this,SLOT(cswPaste()),tr("Ctrl+V"))->setEnabled(hasData); + contextMenu.addAction(ClearIcon, tr("&Delete"),this,SLOT(cswDelete()),tr("Delete")); + contextMenu.addAction(CopyIcon, tr("&Copy"),this,SLOT(cswCopy()),tr("Ctrl+C")); + contextMenu.addAction(CutIcon, tr("&Cut"),this,SLOT(cswCut()),tr("Ctrl+X")); + contextMenu.addAction(PasteIcon, tr("&Paste"),this,SLOT(cswPaste()),tr("Ctrl+V"))->setEnabled(hasData); contextMenu.exec(globalPos); } diff --git a/companion/src/modeledit/inputs.cpp b/companion/src/modeledit/inputs.cpp index 015080f76..fce9166e2 100644 --- a/companion/src/modeledit/inputs.cpp +++ b/companion/src/modeledit/inputs.cpp @@ -8,21 +8,38 @@ InputsPanel::InputsPanel(QWidget *parent, ModelData & model, GeneralSettings & g generalSettings(generalSettings), expoInserted(false) { + QSettings settings("companion", "companion"); + int theme_set=settings.value("theme", 1).toInt(); + QString Theme; + switch(theme_set) { + case 0: + Theme="classic"; + break; + default: + Theme="monochrome"; + break; + } + QGridLayout * exposLayout = new QGridLayout(this); ExposlistWidget = new MixersList(this, true); QPushButton * qbUp = new QPushButton(this); QPushButton * qbDown = new QPushButton(this); QPushButton * qbClear = new QPushButton(this); - + QIcon qbUpIcon; + populate_icon(&qbUpIcon,Theme,"moveup.png"); qbUp->setText(tr("Move Up")); - qbUp->setIcon(QIcon(":/images/moveup.png")); + qbUp->setIcon(qbUpIcon); qbUp->setShortcut(QKeySequence(tr("Ctrl+Up"))); + QIcon qbDownIcon; + populate_icon(&qbDownIcon,Theme,"movedown.png"); qbDown->setText(tr("Move Down")); - qbDown->setIcon(QIcon(":/images/movedown.png")); + qbDown->setIcon(qbDownIcon); qbDown->setShortcut(QKeySequence(tr("Ctrl+Down"))); + QIcon qbClearIcon; + populate_icon(&qbClearIcon,Theme,"clear.png"); qbClear->setText(tr("Clear Expo Settings")); - qbClear->setIcon(QIcon(":/images/clear.png")); + qbClear->setIcon(qbClearIcon); exposLayout->addWidget(ExposlistWidget,1,1,1,3); exposLayout->addWidget(qbUp,2,1); @@ -341,6 +358,35 @@ void InputsPanel::expoAdd() void InputsPanel::expolistWidget_customContextMenuRequested(QPoint pos) { + QSettings settings("companion", "companion"); + int theme_set=settings.value("theme", 1).toInt(); + QString Theme; + switch(theme_set) { + case 0: + Theme="classic"; + break; + default: + Theme="monochrome"; + break; + } + QIcon AddIcon; + populate_icon(&AddIcon,Theme,"add.png"); + QIcon EditIcon; + populate_icon(&EditIcon,Theme,"edit.png"); + QIcon ClearIcon; + populate_icon(&ClearIcon,Theme,"clear.png"); + QIcon CopyIcon; + populate_icon(&CopyIcon,Theme,"copy.png"); + QIcon CutIcon; + populate_icon(&CutIcon,Theme,"cut.png"); + QIcon PasteIcon; + populate_icon(&PasteIcon,Theme,"paste.png"); + QIcon DuplicateIcon; + populate_icon(&DuplicateIcon,Theme,"duplicate.png"); + QIcon MoveUpIcon; + populate_icon(&MoveUpIcon,Theme,"moveup.png"); + QIcon MoveDownIcon; + populate_icon(&MoveDownIcon,Theme,"movedown.png"); QPoint globalPos = ExposlistWidget->mapToGlobal(pos); const QClipboard *clipboard = QApplication::clipboard(); @@ -348,17 +394,17 @@ void InputsPanel::expolistWidget_customContextMenuRequested(QPoint pos) bool hasData = mimeData->hasFormat("application/x-companion9x-expo"); QMenu contextMenu; - contextMenu.addAction(QIcon(":/images/add.png"), tr("&Add"),this,SLOT(expoAdd()),tr("Ctrl+A")); - contextMenu.addAction(QIcon(":/images/edit.png"), tr("&Edit"),this,SLOT(expoOpen()),tr("Enter")); + contextMenu.addAction(AddIcon, tr("&Add"),this,SLOT(expoAdd()),tr("Ctrl+A")); + contextMenu.addAction(EditIcon, tr("&Edit"),this,SLOT(expoOpen()),tr("Enter")); contextMenu.addSeparator(); - contextMenu.addAction(QIcon(":/images/clear.png"), tr("&Delete"),this,SLOT(exposDelete()),tr("Delete")); - contextMenu.addAction(QIcon(":/images/copy.png"), tr("&Copy"),this,SLOT(exposCopy()),tr("Ctrl+C")); - contextMenu.addAction(QIcon(":/images/cut.png"), tr("&Cut"),this,SLOT(exposCut()),tr("Ctrl+X")); - contextMenu.addAction(QIcon(":/images/paste.png"), tr("&Paste"),this,SLOT(exposPaste()),tr("Ctrl+V"))->setEnabled(hasData); - contextMenu.addAction(QIcon(":/images/duplicate.png"), tr("Du&plicate"),this,SLOT(exposDuplicate()),tr("Ctrl+U")); + contextMenu.addAction(ClearIcon, tr("&Delete"),this,SLOT(exposDelete()),tr("Delete")); + contextMenu.addAction(CopyIcon, tr("&Copy"),this,SLOT(exposCopy()),tr("Ctrl+C")); + contextMenu.addAction(CutIcon, tr("&Cut"),this,SLOT(exposCut()),tr("Ctrl+X")); + contextMenu.addAction(PasteIcon, tr("&Paste"),this,SLOT(exposPaste()),tr("Ctrl+V"))->setEnabled(hasData); + contextMenu.addAction(DuplicateIcon, tr("Du&plicate"),this,SLOT(exposDuplicate()),tr("Ctrl+U")); contextMenu.addSeparator(); - contextMenu.addAction(QIcon(":/images/moveup.png"), tr("Move Up"),this,SLOT(moveExpoUp()),tr("Ctrl+Up")); - contextMenu.addAction(QIcon(":/images/movedown.png"), tr("Move Down"),this,SLOT(moveExpoDown()),tr("Ctrl+Down")); + contextMenu.addAction(MoveUpIcon, tr("Move Up"),this,SLOT(moveExpoUp()),tr("Ctrl+Up")); + contextMenu.addAction(MoveDownIcon, tr("Move Down"),this,SLOT(moveExpoDown()),tr("Ctrl+Down")); contextMenu.exec(globalPos); } diff --git a/companion/src/modeledit/mixes.cpp b/companion/src/modeledit/mixes.cpp index 63a4bcb9c..132cfc00e 100644 --- a/companion/src/modeledit/mixes.cpp +++ b/companion/src/modeledit/mixes.cpp @@ -8,6 +8,17 @@ MixesPanel::MixesPanel(QWidget *parent, ModelData & model, GeneralSettings & gen generalSettings(generalSettings), mixInserted(false) { + QSettings settings("companion", "companion"); + int theme_set=settings.value("theme", 1).toInt(); + QString Theme; + switch(theme_set) { + case 0: + Theme="classic"; + break; + default: + Theme="monochrome"; + break; + } QGridLayout * mixesLayout = new QGridLayout(this); MixerlistWidget = new MixersList(this, false); // TODO enum @@ -15,14 +26,20 @@ MixesPanel::MixesPanel(QWidget *parent, ModelData & model, GeneralSettings & gen QPushButton * qbDown = new QPushButton(this); QPushButton * qbClear = new QPushButton(this); + QIcon qbUpIcon; + populate_icon(&qbUpIcon,Theme,"moveup.png"); qbUp->setText(tr("Move Up")); - qbUp->setIcon(QIcon(":/images/moveup.png")); + qbUp->setIcon(qbUpIcon); qbUp->setShortcut(QKeySequence(tr("Ctrl+Up"))); + QIcon qbDownIcon; + populate_icon(&qbDownIcon,Theme,"movedown.png"); qbDown->setText(tr("Move Down")); - qbDown->setIcon(QIcon(":/images/movedown.png")); + qbDown->setIcon(qbDownIcon); qbDown->setShortcut(QKeySequence(tr("Ctrl+Down"))); + QIcon qbClearIcon; + populate_icon(&qbClearIcon,Theme,"clear.png"); qbClear->setText(tr("Clear Mixes")); - qbClear->setIcon(QIcon(":/images/clear.png")); + qbClear->setIcon(qbClearIcon); mixesLayout->addWidget(MixerlistWidget,1,1,1,3); mixesLayout->addWidget(qbUp,2,1); @@ -406,6 +423,35 @@ void MixesPanel::mixerAdd() void MixesPanel::mixerlistWidget_customContextMenuRequested(QPoint pos) { + QSettings settings("companion", "companion"); + int theme_set=settings.value("theme", 1).toInt(); + QString Theme; + switch(theme_set) { + case 0: + Theme="classic"; + break; + default: + Theme="monochrome"; + break; + } + QIcon AddIcon; + populate_icon(&AddIcon,Theme,"add.png"); + QIcon EditIcon; + populate_icon(&EditIcon,Theme,"edit.png"); + QIcon ClearIcon; + populate_icon(&ClearIcon,Theme,"clear.png"); + QIcon CopyIcon; + populate_icon(&CopyIcon,Theme,"copy.png"); + QIcon CutIcon; + populate_icon(&CutIcon,Theme,"cut.png"); + QIcon PasteIcon; + populate_icon(&PasteIcon,Theme,"paste.png"); + QIcon DuplicateIcon; + populate_icon(&DuplicateIcon,Theme,"duplicate.png"); + QIcon MoveUpIcon; + populate_icon(&MoveUpIcon,Theme,"moveup.png"); + QIcon MoveDownIcon; + populate_icon(&MoveDownIcon,Theme,"movedown.png"); QPoint globalPos = MixerlistWidget->mapToGlobal(pos); const QClipboard *clipboard = QApplication::clipboard(); @@ -413,17 +459,17 @@ void MixesPanel::mixerlistWidget_customContextMenuRequested(QPoint pos) bool hasData = mimeData->hasFormat("application/x-companion9x-mix"); QMenu contextMenu; - contextMenu.addAction(QIcon(":/images/add.png"), tr("&Add"),this,SLOT(mixerAdd()),tr("Ctrl+A")); - contextMenu.addAction(QIcon(":/images/edit.png"), tr("&Edit"),this,SLOT(mixerOpen()),tr("Enter")); + contextMenu.addAction(AddIcon, tr("&Add"),this,SLOT(mixerAdd()),tr("Ctrl+A")); + contextMenu.addAction(EditIcon, tr("&Edit"),this,SLOT(mixerOpen()),tr("Enter")); contextMenu.addSeparator(); - contextMenu.addAction(QIcon(":/images/clear.png"), tr("&Delete"),this,SLOT(mixersDelete()),tr("Delete")); - contextMenu.addAction(QIcon(":/images/copy.png"), tr("&Copy"),this,SLOT(mixersCopy()),tr("Ctrl+C")); - contextMenu.addAction(QIcon(":/images/cut.png"), tr("&Cut"),this,SLOT(mixersCut()),tr("Ctrl+X")); - contextMenu.addAction(QIcon(":/images/paste.png"), tr("&Paste"),this,SLOT(mixersPaste()),tr("Ctrl+V"))->setEnabled(hasData); - contextMenu.addAction(QIcon(":/images/duplicate.png"), tr("Du&plicate"),this,SLOT(mixersDuplicate()),tr("Ctrl+U")); + contextMenu.addAction(ClearIcon, tr("&Delete"),this,SLOT(mixersDelete()),tr("Delete")); + contextMenu.addAction(CopyIcon, tr("&Copy"),this,SLOT(mixersCopy()),tr("Ctrl+C")); + contextMenu.addAction(CutIcon, tr("&Cut"),this,SLOT(mixersCut()),tr("Ctrl+X")); + contextMenu.addAction(PasteIcon, tr("&Paste"),this,SLOT(mixersPaste()),tr("Ctrl+V"))->setEnabled(hasData); + contextMenu.addAction(DuplicateIcon, tr("Du&plicate"),this,SLOT(mixersDuplicate()),tr("Ctrl+U")); contextMenu.addSeparator(); - contextMenu.addAction(QIcon(":/images/moveup.png"), tr("Move Up"),this,SLOT(moveMixUp()),tr("Ctrl+Up")); - contextMenu.addAction(QIcon(":/images/movedown.png"), tr("Move Down"),this,SLOT(moveMixDown()),tr("Ctrl+Down")); + contextMenu.addAction(MoveUpIcon, tr("Move Up"),this,SLOT(moveMixUp()),tr("Ctrl+Up")); + contextMenu.addAction(MoveDownIcon, tr("Move Down"),this,SLOT(moveMixDown()),tr("Ctrl+Down")); contextMenu.exec(globalPos); } diff --git a/companion/src/modeledit/modeledit.cpp b/companion/src/modeledit/modeledit.cpp index d5417e8ea..8cf90bece 100644 --- a/companion/src/modeledit/modeledit.cpp +++ b/companion/src/modeledit/modeledit.cpp @@ -7,6 +7,7 @@ #include "mixes.h" #include "channels.h" #include "curves.h" +#include "../helpers.h" #include "customswitches.h" #include "customfunctions.h" #include "telemetry.h" @@ -22,6 +23,19 @@ ModelEdit::ModelEdit(RadioData & radioData, int modelId, bool openWizard, bool i ui->setupUi(this); QSettings settings("companion", "companion"); restoreGeometry(settings.value("modelEditGeometry").toByteArray()); + int theme_set=settings.value("theme", 1).toInt(); + QString Theme; + switch(theme_set) { + case 0: + Theme="classic"; + break; + default: + Theme="monochrome"; + break; + } + QIcon SimulateIcon; + populate_icon(&SimulateIcon,Theme,"simulate.png"); + ui->pushButton->setIcon(SimulateIcon); addTab(new Setup(this, model), tr("Setup")); addTab(new HeliPanel(this, model), tr("Heli")); addTab(new FlightModes(this, model, radioData.generalSettings), tr("Flight Modes")); diff --git a/companion/src/modeledit/modeledit.ui b/companion/src/modeledit/modeledit.ui index a4ac2fa1e..9002e383b 100644 --- a/companion/src/modeledit/modeledit.ui +++ b/companion/src/modeledit/modeledit.ui @@ -20,7 +20,7 @@ Dialog - + :/icon.png:/icon.png @@ -50,10 +50,6 @@ Simulate - - - :/images/simulate.png:/images/simulate.png - @@ -61,7 +57,7 @@ - + diff --git a/companion/src/modeledit/setup.cpp b/companion/src/modeledit/setup.cpp index 0302d367e..1d67137d1 100644 --- a/companion/src/modeledit/setup.cpp +++ b/companion/src/modeledit/setup.cpp @@ -353,7 +353,7 @@ Setup::Setup(QWidget *parent, ModelData & model): if (GetEepromInterface()->getCapability(ModelImage)) { QStringList items; items.append(""); - QSettings settings("companion9x", "companion9x"); + QSettings settings("companion", "companion"); QString path = settings.value("sdPath", ".").toString(); path.append("/BMP/"); QDir qd(path); @@ -497,7 +497,7 @@ void Setup::on_image_currentIndexChanged(int index) { if (!lock) { strncpy(model.bitmap, ui->image->currentText().toAscii(), GetEepromInterface()->getCapability(VoicesMaxLength)); - QSettings settings("companion9x", "companion9x"); + QSettings settings("companion", "companion"); QString path=settings.value("sdPath", ".").toString(); path.append("/BMP/"); QDir qd(path); diff --git a/companion/src/modeledit/telemetry.cpp b/companion/src/modeledit/telemetry.cpp index 22db68ae4..e0637f4df 100644 --- a/companion/src/modeledit/telemetry.cpp +++ b/companion/src/modeledit/telemetry.cpp @@ -342,7 +342,7 @@ TelemetryPanel::~TelemetryPanel() void TelemetryPanel::setup() { - QSettings settings("companion9x", "companion9x"); + QSettings settings("companion", "companion"); QString firmware_id = settings.value("firmware", default_firmware_variant.id).toString(); lock=true; diff --git a/companion/src/modelslist.cpp b/companion/src/modelslist.cpp index 4f3b3eb02..a2984c02c 100644 --- a/companion/src/modelslist.cpp +++ b/companion/src/modelslist.cpp @@ -41,6 +41,7 @@ #include "modelslist.h" #include "mdichild.h" +#include "helpers.h" class DragDropHeader { public: @@ -82,23 +83,58 @@ void ModelsListWidget::ShowContextMenu(const QPoint& pos) const QClipboard *clipboard = QApplication::clipboard(); const QMimeData *mimeData = clipboard->mimeData(); bool hasData = mimeData->hasFormat("application/x-companion9x"); + QSettings settings("companion", "companion"); + int theme_set=settings.value("theme", 1).toInt(); + QString Theme; + switch(theme_set) { + case 0: + Theme="classic"; + break; + default: + Theme="monochrome"; + break; + } + QIcon AddIcon; + populate_icon(&AddIcon,Theme,"add.png"); + QIcon EditIcon; + populate_icon(&EditIcon,Theme,"edit.png"); + QIcon OpenIcon; + populate_icon(&OpenIcon,Theme,"open.png"); + QIcon WizardIcon; + populate_icon(&WizardIcon,Theme,"wizard.png"); + QIcon ClearIcon; + populate_icon(&ClearIcon,Theme,"clear.png"); + QIcon CopyIcon; + populate_icon(&CopyIcon,Theme,"copy.png"); + QIcon CutIcon; + populate_icon(&CutIcon,Theme,"cut.png"); + QIcon PasteIcon; + populate_icon(&PasteIcon,Theme,"paste.png"); + QIcon DuplicateIcon; + populate_icon(&DuplicateIcon,Theme,"duplicate.png"); + QIcon CurrentModelIcon; + populate_icon(&CurrentModelIcon,Theme,"currentmodel.png"); + QIcon PrintIcon; + populate_icon(&PrintIcon,Theme,"print.png"); + QIcon SimulateIcon; + populate_icon(&SimulateIcon,Theme,"simulate.png"); QMenu contextMenu; - contextMenu.addAction(QIcon(":/images/edit.png"), tr("&Edit"),this,SLOT(OpenEditWindow())); - contextMenu.addAction(QIcon(":/images/open.png"), tr("&Restore from backup"),this,SLOT(LoadBackup())); - contextMenu.addAction(QIcon(":/images/wizard.png"), tr("&Model Wizard"),this,SLOT(OpenWizard())); + contextMenu.addAction(EditIcon, tr("&Edit"),this,SLOT(OpenEditWindow())); + contextMenu.addAction(OpenIcon, tr("&Restore from backup"),this,SLOT(LoadBackup())); + contextMenu.addAction(WizardIcon, tr("&Model Wizard"),this,SLOT(OpenWizard())); contextMenu.addSeparator(); - contextMenu.addAction(QIcon(":/images/clear.png"), tr("&Delete"),this,SLOT(confirmDelete()),tr("Delete")); - contextMenu.addAction(QIcon(":/images/copy.png"), tr("&Copy"),this,SLOT(copy()),tr("Ctrl+C")); - contextMenu.addAction(QIcon(":/images/cut.png"), tr("&Cut"),this,SLOT(cut()),tr("Ctrl+X")); - contextMenu.addAction(QIcon(":/images/paste.png"), tr("&Paste"),this,SLOT(paste()),tr("Ctrl+V"))->setEnabled(hasData); - contextMenu.addAction(QIcon(":/images/duplicate.png"), tr("D&uplicate"),this,SLOT(duplicate()),tr("Ctrl+U")); + contextMenu.addAction(ClearIcon, tr("&Delete"),this,SLOT(confirmDelete()),tr("Delete")); + contextMenu.addAction(CopyIcon, tr("&Copy"),this,SLOT(copy()),tr("Ctrl+C")); + contextMenu.addAction(CutIcon, tr("&Cut"),this,SLOT(cut()),tr("Ctrl+X")); + contextMenu.addAction(PasteIcon, tr("&Paste"),this,SLOT(paste()),tr("Ctrl+V"))->setEnabled(hasData); + contextMenu.addAction(DuplicateIcon, tr("D&uplicate"),this,SLOT(duplicate()),tr("Ctrl+U")); contextMenu.addSeparator(); - contextMenu.addAction(QIcon(":/images/currentmodel.png"), tr("&Use as default"),this,SLOT(setdefault())); + contextMenu.addAction(CurrentModelIcon, tr("&Use as default"),this,SLOT(setdefault())); contextMenu.addSeparator(); - contextMenu.addAction(QIcon(":/images/print.png"), tr("P&rint model"),this, SLOT(print()),tr("Alt+R")); + contextMenu.addAction(PrintIcon, tr("P&rint model"),this, SLOT(print()),tr("Alt+R")); contextMenu.addSeparator(); - contextMenu.addAction(QIcon(":/images/simulate.png"), tr("&Simulate model"),this, SLOT(simulate()),tr("Alt+S")); + contextMenu.addAction(SimulateIcon, tr("&Simulate model"),this, SLOT(simulate()),tr("Alt+S")); contextMenu.exec(globalPos); } diff --git a/companion/src/preferencesdialog.cpp b/companion/src/preferencesdialog.cpp index bcb152962..839c554a3 100644 --- a/companion/src/preferencesdialog.cpp +++ b/companion/src/preferencesdialog.cpp @@ -30,8 +30,14 @@ preferencesDialog::preferencesDialog(QWidget *parent) : Theme="monochrome"; break; } - Icon.addPixmap(":/themes/"+Theme+"/preferences.png"); + populate_icon(&Icon, Theme, "preferences.png"); this->setWindowIcon(Icon); + QIcon LibraryIcon; + populate_icon(&LibraryIcon, Theme, "library.png"); + ui->splashLibraryButton->setIcon(LibraryIcon); + QIcon ClearIcon; + populate_icon(&ClearIcon, Theme, "clear.png"); + ui->clearImageButton->setIcon(ClearIcon); QCheckBox * OptionCheckBox[]= { ui->optionCheckBox_1, ui->optionCheckBox_2, ui->optionCheckBox_3, ui->optionCheckBox_4, ui->optionCheckBox_5, ui->optionCheckBox_6, ui->optionCheckBox_7, diff --git a/companion/src/preferencesdialog.ui b/companion/src/preferencesdialog.ui index e2a16d63d..c05efb26a 100644 --- a/companion/src/preferencesdialog.ui +++ b/companion/src/preferencesdialog.ui @@ -176,10 +176,6 @@ ... - - - :/images/clear.png:/images/clear.png - @@ -243,10 +239,6 @@ ... - - - :/images/library.png:/images/library.png - diff --git a/companion/src/printdialog.ui b/companion/src/printdialog.ui index 5e45d5a2c..169c33103 100644 --- a/companion/src/printdialog.ui +++ b/companion/src/printdialog.ui @@ -27,7 +27,7 @@ - :/images/print.png:/images/print.png + :/icon.png:/icon.png diff --git a/companion/src/themes/monochrome/16/customize.png b/companion/src/themes/monochrome/16/customize.png new file mode 100644 index 0000000000000000000000000000000000000000..078d0af75638cd472e47a5ff15d3e72407d5f23b GIT binary patch literal 381 zcmV-@0fPRCP)m&H)T;i5Q?0wbq~1C!8%1{M`4GmJ^7 zti46;ui^pqozGQF4R$74)!sH>23mmt^<`Gq<{rOL`Y$T~_^yu@yBODeEm@P@zf}6b z^IsO%n%yt+Caf+0-CV|yz4w;<7UqcctiPKJ7_#TS;lIWBW`6HC_J<7Dsy;?#uy1(J z-@yhX-q~KtWBC2=!L`M2**09;{MXUCVXJ+`ml?Ym-~48t-}{h3Mw|Pgf}`2$4`Mpdp2%nIJR*UL){JeA2~eiAQ_-qi!iYR64u-aK(z)S z?b~Ovfao9m$4`a-Ivmfio`LZO3)g}41q?DQoCg9oFdQ@RU`UqHY53SIz}Pdtg)`xg zMhL^>^oKtgVt6{)9%MzBFidw|%(z2Nj_<$>GpUBhw=)=yZF$JB=lNnriOX)x1vS#V zKna-!!(0=F~6@vd$@?2>^$4&Mp7| literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/16/stop.png b/companion/src/themes/monochrome/16/stop.png new file mode 100644 index 0000000000000000000000000000000000000000..3bf2af6e958f4cb76597b5817813e8a2e2b9e271 GIT binary patch literal 312 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7uRSjKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cj&(|3p^r=85p>QL70(Y)*K0-AbW|YuPgf<9v*Q4{-;v&Du6;eJY5_^DsH{K z#K_BFz`m&H)T;i5Q?0wbq~1C!8%1{M`4GmJ^7 zti46;ui^pqozGQF4R$74)!sH>23mmt^<`Gq<{rOL`Y$T~_^yu@yBODeEm@P@zf}6b z^IsO%n%yt+Caf+0-CV|yz4w;<7UqcctiPKJ7_#TS;lIWBW`6HC_J<7Dsy;?#uy1(J z-@yhX-q~KtWBC2=!L`M2**09;{MXUCVXJ+`ml?Ym-~48t-}{h3Mw|Pgf}`2$4`Mpdp2%nIJR*UL){JeA2~eiAQ_-qi!iYR64u-aK(z)S z?b~Ovfao9m$4`a-Ivmfio`LZO3)g}41q?DQoCg9oFdQ@RU`UqHY53SIz}Pdtg)`xg zMhL^>^oKtgVt6{)9%MzBFidw|%(z2Nj_<$>GpUBhw=)=yZF$JB=lNnriOX)x1vS#V zKna-!!(0=F~6@vd$@?2>^$4&Mp7| literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/24/stop.png b/companion/src/themes/monochrome/24/stop.png new file mode 100644 index 0000000000000000000000000000000000000000..3bf2af6e958f4cb76597b5817813e8a2e2b9e271 GIT binary patch literal 312 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7uRSjKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cj&(|3p^r=85p>QL70(Y)*K0-AbW|YuPgf<9v*Q4{-;v&Du6;eJY5_^DsH{K z#K_BFz`m&H)T;i5Q?0wbq~1C!8%1{M`4GmJ^7 zti46;ui^pqozGQF4R$74)!sH>23mmt^<`Gq<{rOL`Y$T~_^yu@yBODeEm@P@zf}6b z^IsO%n%yt+Caf+0-CV|yz4w;<7UqcctiPKJ7_#TS;lIWBW`6HC_J<7Dsy;?#uy1(J z-@yhX-q~KtWBC2=!L`M2**09;{MXUCVXJ+`ml?Ym-~48t-}{h3Mw|Pgf}`2$4`Mpdp2%nIJR*UL){JeA2~eiAQ_-qi!iYR64u-aK(z)S z?b~Ovfao9m$4`a-Ivmfio`LZO3)g}41q?DQoCg9oFdQ@RU`UqHY53SIz}Pdtg)`xg zMhL^>^oKtgVt6{)9%MzBFidw|%(z2Nj_<$>GpUBhw=)=yZF$JB=lNnriOX)x1vS#V zKna-!!(0=F~6@vd$@?2>^$4&Mp7| literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/32/stop.png b/companion/src/themes/monochrome/32/stop.png new file mode 100644 index 0000000000000000000000000000000000000000..3bf2af6e958f4cb76597b5817813e8a2e2b9e271 GIT binary patch literal 312 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7uRSjKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cj&(|3p^r=85p>QL70(Y)*K0-AbW|YuPgf<9v*Q4{-;v&Du6;eJY5_^DsH{K z#K_BFz`m&H)T;i5Q?0wbq~1C!8%1{M`4GmJ^7 zti46;ui^pqozGQF4R$74)!sH>23mmt^<`Gq<{rOL`Y$T~_^yu@yBODeEm@P@zf}6b z^IsO%n%yt+Caf+0-CV|yz4w;<7UqcctiPKJ7_#TS;lIWBW`6HC_J<7Dsy;?#uy1(J z-@yhX-q~KtWBC2=!L`M2**09;{MXUCVXJ+`ml?Ym-~48t-}{h3Mw|Pgf}`2$4`Mpdp2%nIJR*UL){JeA2~eiAQ_-qi!iYR64u-aK(z)S z?b~Ovfao9m$4`a-Ivmfio`LZO3)g}41q?DQoCg9oFdQ@RU`UqHY53SIz}Pdtg)`xg zMhL^>^oKtgVt6{)9%MzBFidw|%(z2Nj_<$>GpUBhw=)=yZF$JB=lNnriOX)x1vS#V zKna-!!(0=F~6@vd$@?2>^$4&Mp7| literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/48/stop.png b/companion/src/themes/monochrome/48/stop.png new file mode 100644 index 0000000000000000000000000000000000000000..3bf2af6e958f4cb76597b5817813e8a2e2b9e271 GIT binary patch literal 312 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7uRSjKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cj&(|3p^r=85p>QL70(Y)*K0-AbW|YuPgf<9v*Q4{-;v&Du6;eJY5_^DsH{K z#K_BFz` Date: Mon, 20 Jan 2014 00:05:16 +0100 Subject: [PATCH 192/308] Companion now should fully support themes --- companion/src/burnconfigdialog.cpp | 76 ++++++++++++++++-- companion/src/burnconfigdialog.ui | 2 +- companion/src/burndialog.cpp | 14 ++++ companion/src/burndialog.ui | 8 +- companion/src/companion.qrc | 1 + companion/src/customizesplashdialog.cpp | 14 ++++ companion/src/customizesplashdialog.ui | 8 +- companion/src/fusesdialog.ui | 2 +- .../monochrome => images}/customize.png | Bin companion/src/mdichild.cpp | 34 ++++++-- companion/src/modelconfigdialog.ui | 2 +- companion/src/simulatordialog.ui | 7 +- companion/src/splashlibrary.cpp | 17 ++++ companion/src/splashlibrary.ui | 12 +-- companion/src/themes/classic/customize.png | Bin 864 -> 0 bytes companion/src/xsimulatordialog.ui | 4 +- 16 files changed, 158 insertions(+), 43 deletions(-) rename companion/src/{themes/monochrome => images}/customize.png (100%) delete mode 100644 companion/src/themes/classic/customize.png diff --git a/companion/src/burnconfigdialog.cpp b/companion/src/burnconfigdialog.cpp index 9e08d860f..61c0df423 100644 --- a/companion/src/burnconfigdialog.cpp +++ b/companion/src/burnconfigdialog.cpp @@ -2,6 +2,7 @@ #include "ui_burnconfigdialog.h" #include "avroutputdialog.h" #include "eeprominterface.h" +#include "helpers.h" #include #if !defined WIN32 && defined __GNUC__ @@ -278,7 +279,20 @@ void burnConfigDialog::listProgrammers() QStringList arguments; arguments << "-c?"; avrOutputDialog *ad = new avrOutputDialog(this, ui->avrdude_location->text(), arguments, "List available programmers", AVR_DIALOG_KEEP_OPEN, TRUE); - ad->setWindowIcon(QIcon(":/images/list.png")); + QSettings settings("companion", "companion"); + int theme_set=settings.value("theme", 1).toInt(); + QString Theme; + switch(theme_set) { + case 0: + Theme="classic"; + break; + default: + Theme="monochrome"; + break; + } + QIcon Icon; + populate_icon(&Icon,Theme,"list.png"); + ad->setWindowIcon(Icon); ad->show(); } @@ -295,7 +309,20 @@ void burnConfigDialog::on_pushButton_4_clicked() arguments << "-?"; avrOutputDialog *ad = new avrOutputDialog(this, ui->avrdude_location->text(), arguments, "Show help", AVR_DIALOG_KEEP_OPEN,TRUE); - ad->setWindowIcon(QIcon(":/images/configure.png")); + QSettings settings("companion", "companion"); + int theme_set=settings.value("theme", 1).toInt(); + QString Theme; + switch(theme_set) { + case 0: + Theme="classic"; + break; + default: + Theme="monochrome"; + break; + } + QIcon Icon; + populate_icon(&Icon,Theme,"configure.png"); + ad->setWindowIcon(Icon); ad->show(); } @@ -312,7 +339,20 @@ void burnConfigDialog::readFuses() arguments << "-c" << avrProgrammer << "-p" << avrMCU << args << str; avrOutputDialog *ad = new avrOutputDialog(this, avrLoc, arguments, "Read Fuses",AVR_DIALOG_KEEP_OPEN,TRUE); - ad->setWindowIcon(QIcon(":/images/fuses.png")); + QSettings settings("companion", "companion"); + int theme_set=settings.value("theme", 1).toInt(); + QString Theme; + switch(theme_set) { + case 0: + Theme="classic"; + break; + default: + Theme="monochrome"; + break; + } + QIcon Icon; + populate_icon(&Icon,Theme,"fuses.png"); + ad->setWindowIcon(Icon); ad->show(); } @@ -346,7 +386,20 @@ void burnConfigDialog::restFuses(bool eeProtect) QStringList argread; argread << "-c" << avrProgrammer << "-p" << avrMCU << args <<"-U" << "lfuse:r:"+tempFile+":r" ; avrOutputDialog *ad = new avrOutputDialog(this, avrLoc, argread, "Reset Fuses",AVR_DIALOG_CLOSE_IF_SUCCESSFUL,FALSE); - ad->setWindowIcon(QIcon(":/images/fuses.png")); + QSettings settings("companion", "companion"); + int theme_set=settings.value("theme", 1).toInt(); + QString Theme; + switch(theme_set) { + case 0: + Theme="classic"; + break; + default: + Theme="monochrome"; + break; + } + QIcon Icon; + populate_icon(&Icon,Theme,"fuses.png"); + ad->setWindowIcon(Icon); ad->exec(); QFile file(tempFile); if (file.exists() && file.size()==1) { @@ -375,7 +428,20 @@ void burnConfigDialog::restFuses(bool eeProtect) arguments << "-c" << avrProgrammer << "-p" << avrMCU << args << "-B" << "100" << "-u" << str; } avrOutputDialog *ad = new avrOutputDialog(this, avrLoc, arguments, "Reset Fuses",AVR_DIALOG_KEEP_OPEN,TRUE); - ad->setWindowIcon(QIcon(":/images/fuses.png")); + QSettings settings("companion", "companion"); + int theme_set=settings.value("theme", 1).toInt(); + QString Theme; + switch(theme_set) { + case 0: + Theme="classic"; + break; + default: + Theme="monochrome"; + break; + } + QIcon Icon; + populate_icon(&Icon,Theme,"fuses.png"); + ad->setWindowIcon(Icon); ad->show(); } diff --git a/companion/src/burnconfigdialog.ui b/companion/src/burnconfigdialog.ui index bb85de6f5..b5419d37f 100644 --- a/companion/src/burnconfigdialog.ui +++ b/companion/src/burnconfigdialog.ui @@ -27,7 +27,7 @@ - :/images/configure.png:/images/configure.png + :/icon.png:/icon.png diff --git a/companion/src/burndialog.cpp b/companion/src/burndialog.cpp index 1851310d6..df87455e9 100644 --- a/companion/src/burndialog.cpp +++ b/companion/src/burndialog.cpp @@ -16,6 +16,20 @@ burnDialog::burnDialog(QWidget *parent, int Type, QString * fileName, bool * bac hexType(Type) { ui->setupUi(this); + QSettings settings("companion", "companion"); + int theme_set=settings.value("theme", 1).toInt(); + QString Theme; + switch(theme_set) { + case 0: + Theme="classic"; + break; + default: + Theme="monochrome"; + break; + } + QIcon LibraryIcon; + populate_icon(&LibraryIcon,Theme,"library.png"); + ui->libraryButton->setIcon(LibraryIcon); ui->SplashFrame->hide(); ui->FramFWInfo->hide(); ui->EEbackupCB->hide(); diff --git a/companion/src/burndialog.ui b/companion/src/burndialog.ui index a15ae25a1..e86634e9a 100644 --- a/companion/src/burndialog.ui +++ b/companion/src/burndialog.ui @@ -26,8 +26,8 @@ Customize Splash - - :/images/c_home.png:/images/c_home.png + + :/icon.png:/icon.png @@ -455,10 +455,6 @@ ... - - - :/images/library.png:/images/library.png - 16 diff --git a/companion/src/companion.qrc b/companion/src/companion.qrc index 5212a3809..5a86ebc50 100644 --- a/companion/src/companion.qrc +++ b/companion/src/companion.qrc @@ -1,5 +1,6 @@ + images/customize.png icon.png ../../CREDITS.txt ../../DONATIONS.txt diff --git a/companion/src/customizesplashdialog.cpp b/companion/src/customizesplashdialog.cpp index 7912b3ec5..88c338859 100644 --- a/companion/src/customizesplashdialog.cpp +++ b/companion/src/customizesplashdialog.cpp @@ -11,6 +11,20 @@ customizeSplashDialog::customizeSplashDialog(QWidget *parent) : QDialog(parent), ui(new Ui::customizeSplashDialog) { ui->setupUi(this); + QSettings settings("companion", "companion"); + int theme_set=settings.value("theme", 1).toInt(); + QString Theme; + switch(theme_set) { + case 0: + Theme="classic"; + break; + default: + Theme="monochrome"; + break; + } + QIcon LibraryIcon; + populate_icon(&LibraryIcon,Theme,"library.png"); + ui->libraryButton->setIcon(LibraryIcon); ui->HowToLabel->clear(); ui->HowToLabel->append("

" + tr("Select an original firmware file") + "
"); } diff --git a/companion/src/customizesplashdialog.ui b/companion/src/customizesplashdialog.ui index b7d0285aa..15a803656 100644 --- a/companion/src/customizesplashdialog.ui +++ b/companion/src/customizesplashdialog.ui @@ -20,8 +20,8 @@ Customize Splash - - :/images/c_home.png:/images/c_home.png + + :/icon.png:/icon.png @@ -211,10 +211,6 @@ p, li { white-space: pre-wrap; } ... - - - :/images/library.png:/images/library.png - 16 diff --git a/companion/src/fusesdialog.ui b/companion/src/fusesdialog.ui index e7e6bbe9d..1a32ff96c 100644 --- a/companion/src/fusesdialog.ui +++ b/companion/src/fusesdialog.ui @@ -15,7 +15,7 @@ - :/images/fuses.png:/images/fuses.png + :/icon.png:/icon.png diff --git a/companion/src/themes/monochrome/customize.png b/companion/src/images/customize.png similarity index 100% rename from companion/src/themes/monochrome/customize.png rename to companion/src/images/customize.png diff --git a/companion/src/mdichild.cpp b/companion/src/mdichild.cpp index ed908c9b0..e17594540 100644 --- a/companion/src/mdichild.cpp +++ b/companion/src/mdichild.cpp @@ -523,6 +523,16 @@ QString MdiChild::strippedName(const QString &fullFileName) void MdiChild::burnTo() // write to Tx { QSettings settings("companion", "companion"); + int theme_set=settings.value("theme", 1).toInt(); + QString Theme; + switch(theme_set) { + case 0: + Theme="classic"; + break; + default: + Theme="monochrome"; + break; + } bool backupEnable=settings.value("backupEnable", true).toBool(); QString backupPath=settings.value("backupPath", "").toString(); if (!backupPath.isEmpty()) { @@ -567,14 +577,18 @@ void MdiChild::burnTo() // write to Tx QStringList str; str << path << backupFile; avrOutputDialog *ad = new avrOutputDialog(this,"", str, tr("Backup EEPROM From Tx")); //, AVR_DIALOG_KEEP_OPEN); - ad->setWindowIcon(QIcon(":/images/read_eeprom.png")); + QIcon Icon; + populate_icon(&Icon,Theme,"read_eeprom.png"); + ad->setWindowIcon(Icon); ad->exec(); sleep(1); } } else { QStringList str = ((MainWindow *)this->parent())->GetReceiveEEpromCommand(backupFile); avrOutputDialog *ad = new avrOutputDialog(this, ((MainWindow *)this->parent())->GetAvrdudeLocation(), str, tr("Backup EEPROM From Tx")); - ad->setWindowIcon(QIcon(":/images/read_eeprom.png")); + QIcon Icon; + populate_icon(&Icon,Theme,"read_eeprom.png"); + ad->setWindowIcon(Icon); ad->exec(); sleep(1); } @@ -583,7 +597,9 @@ void MdiChild::burnTo() // write to Tx QString tempFlash=tempDir + "/flash.bin"; QStringList str = ((MainWindow *)this->parent())->GetReceiveFlashCommand(tempFlash); avrOutputDialog *ad = new avrOutputDialog(this, ((MainWindow *)this->parent())->GetAvrdudeLocation(), str, "Read Flash From Tx"); - ad->setWindowIcon(QIcon(":/images/read_flash.png")); + QIcon Icon; + populate_icon(&Icon,Theme,"read_flash.png"); + ad->setWindowIcon(Icon); ad->exec(); sleep(1); QString restoreFile = tempDir + "/compat.bin"; @@ -619,7 +635,9 @@ void MdiChild::burnTo() // write to Tx } else { QStringList str = ((MainWindow *)this->parent())->GetReceiveEEpromCommand(backupFile); avrOutputDialog *ad = new avrOutputDialog(this, ((MainWindow *)this->parent())->GetAvrdudeLocation(), str, tr("Backup EEPROM From Tx")); - ad->setWindowIcon(QIcon(":/images/read_eeprom.png")); + QIcon Icon; + populate_icon(&Icon,Theme,"read_eeprom.png"); + ad->setWindowIcon(Icon); ad->exec(); sleep(1); } @@ -634,14 +652,18 @@ void MdiChild::burnTo() // write to Tx QStringList str; str << tempFile << path; avrOutputDialog *ad = new avrOutputDialog(this,"", str, tr("Write EEPROM To Tx"), AVR_DIALOG_SHOW_DONE); //, AVR_DIALOG_KEEP_OPEN); - ad->setWindowIcon(QIcon(":/images/read_eeprom.png")); + QIcon Icon; + populate_icon(&Icon,Theme,"read_eeprom.png"); + ad->setWindowIcon(Icon); ad->show(); sleep(1); } } else { QStringList str = ((MainWindow *)this->parent())->GetSendEEpromCommand(tempFile); avrOutputDialog *ad = new avrOutputDialog(this, ((MainWindow *)this->parent())->GetAvrdudeLocation(), str, "Write EEPROM To Tx", AVR_DIALOG_SHOW_DONE); - ad->setWindowIcon(QIcon(":/images/write_eeprom.png")); + QIcon Icon; + populate_icon(&Icon,Theme,"write_eeprom.png"); + ad->setWindowIcon(Icon); ad->show(); } } diff --git a/companion/src/modelconfigdialog.ui b/companion/src/modelconfigdialog.ui index ea119cabc..f9c7abba6 100644 --- a/companion/src/modelconfigdialog.ui +++ b/companion/src/modelconfigdialog.ui @@ -27,7 +27,7 @@ - :/images/configure.png:/images/configure.png + :/icon.png:/icon.png diff --git a/companion/src/simulatordialog.ui b/companion/src/simulatordialog.ui index a739492ac..de9a3a43a 100644 --- a/companion/src/simulatordialog.ui +++ b/companion/src/simulatordialog.ui @@ -27,7 +27,7 @@ - :/images/simulate.png:/images/simulate.png + :/icon.png:/icon.png @@ -1092,8 +1092,6 @@ QPushButton:checked { - - @@ -1812,8 +1810,6 @@ QPushButton:checked { QFrame::Raised - - 2 @@ -2298,7 +2294,6 @@ border-radius: 4px; - 0 diff --git a/companion/src/splashlibrary.cpp b/companion/src/splashlibrary.cpp index 9e5a7cc82..8749f7587 100644 --- a/companion/src/splashlibrary.cpp +++ b/companion/src/splashlibrary.cpp @@ -9,6 +9,23 @@ splashLibrary::splashLibrary(QWidget *parent, QString * fileName) : QDialog(parent), ui(new Ui::splashLibrary) { splashFileName = fileName; ui->setupUi(this); + QSettings settings("companion", "companion"); + int theme_set=settings.value("theme", 1).toInt(); + QString Theme; + switch(theme_set) { + case 0: + Theme="classic"; + break; + default: + Theme="monochrome"; + break; + } + QIcon NextIcon; + populate_icon(&NextIcon,Theme,"arrow-right.png"); + QIcon PrevIcon; + populate_icon(&PrevIcon,Theme,"arrow-left.png"); + ui->nextPage->setIcon(NextIcon); + ui->prevPage->setIcon(PrevIcon); page = 0; getFileList(); if (imageList.size() > 20) { diff --git a/companion/src/splashlibrary.ui b/companion/src/splashlibrary.ui index 8c5bcaf1d..9507a2d08 100644 --- a/companion/src/splashlibrary.ui +++ b/companion/src/splashlibrary.ui @@ -25,6 +25,10 @@ + + + :/icon.png:/icon.png + @@ -46,10 +50,6 @@ ... - - - :/images/arrow-left.png:/images/arrow-left.png - 50 @@ -945,10 +945,6 @@ ... - - - :/images/arrow-right.png:/images/arrow-right.png - 50 diff --git a/companion/src/themes/classic/customize.png b/companion/src/themes/classic/customize.png deleted file mode 100644 index 96259b922d51feef16b54c1f15a838fe4af069e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 864 zcmV-m1E2hfP)Px#22e~?MgRZ*00010!qa{L0004EOGiWihy@);00009a7bBm000ie000ie0hKEb z8vpWKWGzC7y$6^e9}WXbG0g_^vJc4 z!L8?(K+F{!>fqYJK{!#`!Kw!xlF*o3o1u$fCaI)UaB%Jdt_xtVFxF)(x6fm)ZBc;S zZtAp~V7Y_#x|>P*0JLtLc1QPe2c>oQsp%mY+F2{P`nt08!O7?t)Q@Usb0@1WDoVvE zMkE+Vb4}w_g;b~=L)hLMJ?yAqdy^!oY9pK+=K8Rkq%RjRXz}gwS|_5_zVz-GP&dG=2~U}VLmIMiBMT<3dp;5 zVP~hhcziY%t;71!5QvDTImH5Dpm}jyA%d72XtOBaT8{12_-Lq>U@cI#qnffMB{?7PSNM5xgM? zrr@?GkBd{{<1Db*B*!O=eG17E{=p!3D9%6`DaOe%h@w&{0ptceQ~U50?*PTD#keY( zp!&N3C_NYwD^ywIFA6H>y_k`@D%(VA6tqRo^%)kCr=XW8L?=BGd7RKB6x9GM8fazWo - :/images/simulate.png:/images/simulate.png + :/icon.png:/icon.png @@ -2053,8 +2053,6 @@ border-radius: 4px; 16777215 18 - - QSlider::sub-page:horizontal:disabled { From fad6211789c538f0ef55025bc64a560ca504ff0c Mon Sep 17 00:00:00 2001 From: Romolo Manfredini Date: Mon, 20 Jan 2014 00:56:14 +0100 Subject: [PATCH 193/308] Remove duplicated code --- companion/src/burnconfigdialog.cpp | 59 ++------------------- companion/src/burndialog.cpp | 12 +---- companion/src/customizesplashdialog.cpp | 12 +---- companion/src/helpers.cpp | 19 ++++++- companion/src/helpers.h | 1 + companion/src/mainwindow.cpp | 10 +--- companion/src/mdichild.cpp | 23 +------- companion/src/modeledit/curves.cpp | 13 +---- companion/src/modeledit/customfunctions.cpp | 47 ++-------------- companion/src/modeledit/customswitches.cpp | 12 +---- companion/src/modeledit/inputs.cpp | 24 +-------- companion/src/modeledit/mixes.cpp | 24 +-------- companion/src/modeledit/modeledit.cpp | 11 +--- companion/src/modelslist.cpp | 12 +---- companion/src/preferencesdialog.cpp | 13 +---- companion/src/splashlibrary.cpp | 12 +---- 16 files changed, 42 insertions(+), 262 deletions(-) diff --git a/companion/src/burnconfigdialog.cpp b/companion/src/burnconfigdialog.cpp index 61c0df423..b09a7318a 100644 --- a/companion/src/burnconfigdialog.cpp +++ b/companion/src/burnconfigdialog.cpp @@ -279,17 +279,7 @@ void burnConfigDialog::listProgrammers() QStringList arguments; arguments << "-c?"; avrOutputDialog *ad = new avrOutputDialog(this, ui->avrdude_location->text(), arguments, "List available programmers", AVR_DIALOG_KEEP_OPEN, TRUE); - QSettings settings("companion", "companion"); - int theme_set=settings.value("theme", 1).toInt(); - QString Theme; - switch(theme_set) { - case 0: - Theme="classic"; - break; - default: - Theme="monochrome"; - break; - } + QString Theme=getTheme(); QIcon Icon; populate_icon(&Icon,Theme,"list.png"); ad->setWindowIcon(Icon); @@ -309,17 +299,7 @@ void burnConfigDialog::on_pushButton_4_clicked() arguments << "-?"; avrOutputDialog *ad = new avrOutputDialog(this, ui->avrdude_location->text(), arguments, "Show help", AVR_DIALOG_KEEP_OPEN,TRUE); - QSettings settings("companion", "companion"); - int theme_set=settings.value("theme", 1).toInt(); - QString Theme; - switch(theme_set) { - case 0: - Theme="classic"; - break; - default: - Theme="monochrome"; - break; - } + QString Theme=getTheme(); QIcon Icon; populate_icon(&Icon,Theme,"configure.png"); ad->setWindowIcon(Icon); @@ -339,17 +319,7 @@ void burnConfigDialog::readFuses() arguments << "-c" << avrProgrammer << "-p" << avrMCU << args << str; avrOutputDialog *ad = new avrOutputDialog(this, avrLoc, arguments, "Read Fuses",AVR_DIALOG_KEEP_OPEN,TRUE); - QSettings settings("companion", "companion"); - int theme_set=settings.value("theme", 1).toInt(); - QString Theme; - switch(theme_set) { - case 0: - Theme="classic"; - break; - default: - Theme="monochrome"; - break; - } + QString Theme=getTheme(); QIcon Icon; populate_icon(&Icon,Theme,"fuses.png"); ad->setWindowIcon(Icon); @@ -364,6 +334,7 @@ void burnConfigDialog::restFuses(bool eeProtect) //avrdude -c usbasp -p m64 -U efuse:w:<0xFF>:m QMessageBox::StandardButton ret = QMessageBox::No; + QString Theme=getTheme(); ret = QMessageBox::warning(this, tr("Companion"), tr("WARNING!
This will reset the fuses of %1 to the factory settings.
Writing fuses can mess up your radio.
Do this only if you are sure they are wrong!
Are you sure you want to continue?").arg(avrMCU), @@ -386,17 +357,6 @@ void burnConfigDialog::restFuses(bool eeProtect) QStringList argread; argread << "-c" << avrProgrammer << "-p" << avrMCU << args <<"-U" << "lfuse:r:"+tempFile+":r" ; avrOutputDialog *ad = new avrOutputDialog(this, avrLoc, argread, "Reset Fuses",AVR_DIALOG_CLOSE_IF_SUCCESSFUL,FALSE); - QSettings settings("companion", "companion"); - int theme_set=settings.value("theme", 1).toInt(); - QString Theme; - switch(theme_set) { - case 0: - Theme="classic"; - break; - default: - Theme="monochrome"; - break; - } QIcon Icon; populate_icon(&Icon,Theme,"fuses.png"); ad->setWindowIcon(Icon); @@ -428,17 +388,6 @@ void burnConfigDialog::restFuses(bool eeProtect) arguments << "-c" << avrProgrammer << "-p" << avrMCU << args << "-B" << "100" << "-u" << str; } avrOutputDialog *ad = new avrOutputDialog(this, avrLoc, arguments, "Reset Fuses",AVR_DIALOG_KEEP_OPEN,TRUE); - QSettings settings("companion", "companion"); - int theme_set=settings.value("theme", 1).toInt(); - QString Theme; - switch(theme_set) { - case 0: - Theme="classic"; - break; - default: - Theme="monochrome"; - break; - } QIcon Icon; populate_icon(&Icon,Theme,"fuses.png"); ad->setWindowIcon(Icon); diff --git a/companion/src/burndialog.cpp b/companion/src/burndialog.cpp index df87455e9..7da0896ed 100644 --- a/companion/src/burndialog.cpp +++ b/companion/src/burndialog.cpp @@ -16,17 +16,7 @@ burnDialog::burnDialog(QWidget *parent, int Type, QString * fileName, bool * bac hexType(Type) { ui->setupUi(this); - QSettings settings("companion", "companion"); - int theme_set=settings.value("theme", 1).toInt(); - QString Theme; - switch(theme_set) { - case 0: - Theme="classic"; - break; - default: - Theme="monochrome"; - break; - } + QString Theme=getTheme(); QIcon LibraryIcon; populate_icon(&LibraryIcon,Theme,"library.png"); ui->libraryButton->setIcon(LibraryIcon); diff --git a/companion/src/customizesplashdialog.cpp b/companion/src/customizesplashdialog.cpp index 88c338859..92c3a54e1 100644 --- a/companion/src/customizesplashdialog.cpp +++ b/companion/src/customizesplashdialog.cpp @@ -11,17 +11,7 @@ customizeSplashDialog::customizeSplashDialog(QWidget *parent) : QDialog(parent), ui(new Ui::customizeSplashDialog) { ui->setupUi(this); - QSettings settings("companion", "companion"); - int theme_set=settings.value("theme", 1).toInt(); - QString Theme; - switch(theme_set) { - case 0: - Theme="classic"; - break; - default: - Theme="monochrome"; - break; - } + QString Theme=getTheme(); QIcon LibraryIcon; populate_icon(&LibraryIcon,Theme,"library.png"); ui->libraryButton->setIcon(LibraryIcon); diff --git a/companion/src/helpers.cpp b/companion/src/helpers.cpp index 8c70f8805..f5a509359 100644 --- a/companion/src/helpers.cpp +++ b/companion/src/helpers.cpp @@ -1485,9 +1485,26 @@ QString getCenterBeep(ModelData * g_model) return strl.join(", "); } -void populate_icon(QIcon *Icon, QString usedtheme, QString baseimage) { +void populate_icon(QIcon *Icon, QString usedtheme, QString baseimage) +{ Icon->addFile(":/themes/"+usedtheme+"/16/"+baseimage,QSize(16,16)); Icon->addFile(":/themes/"+usedtheme+"/24/"+baseimage,QSize(24,24)); Icon->addFile(":/themes/"+usedtheme+"/32/"+baseimage,QSize(32,32)); Icon->addFile(":/themes/"+usedtheme+"/48/"+baseimage,QSize(48,48)); } + +QString getTheme() +{ + QSettings settings("companion", "companion"); + int theme_set=settings.value("theme", 1).toInt(); + QString Theme; + switch(theme_set) { + case 0: + Theme="classic"; + break; + default: + Theme="monochrome"; + break; + } + return Theme; +} \ No newline at end of file diff --git a/companion/src/helpers.h b/companion/src/helpers.h index 1cb564340..4e720e629 100644 --- a/companion/src/helpers.h +++ b/companion/src/helpers.h @@ -29,6 +29,7 @@ void populateTTraceCB(QComboBox *b, int value); void populateRotEncCB(QComboBox *b, int value, int renumber); void populateBacklightCB(QComboBox *b, const uint8_t value); void populate_icon(QIcon *Icon, QString usedtheme, QString baseimage); +QString getTheme(); class GVarGroup : public QObject { diff --git a/companion/src/mainwindow.cpp b/companion/src/mainwindow.cpp index 4f0cad108..5d8bdf237 100644 --- a/companion/src/mainwindow.cpp +++ b/companion/src/mainwindow.cpp @@ -96,16 +96,8 @@ downloadDialog_forWait(NULL) this, SLOT(setActiveSubWindow(QWidget*))); MaxRecentFiles=MAX_RECENT; + Theme=getTheme(); QSettings settings("companion", "companion"); - int theme_set=settings.value("theme", 1).toInt(); - switch(theme_set) { - case 0: - Theme="classic"; - break; - default: - Theme="monochrome"; - break; - } int icon_size=settings.value("icon_size", 1).toInt(); switch (icon_size) { case 0: diff --git a/companion/src/mdichild.cpp b/companion/src/mdichild.cpp index e17594540..b3ecb4a72 100644 --- a/companion/src/mdichild.cpp +++ b/companion/src/mdichild.cpp @@ -68,17 +68,7 @@ MdiChild::MdiChild(): isUntitled(true), fileChanged(false) { - QSettings settings("companion", "companion"); - int theme_set=settings.value("theme", 1).toInt(); - QString Theme; - switch(theme_set) { - case 0: - Theme="classic"; - break; - default: - Theme="monochrome"; - break; - } + QString Theme=getTheme(); QIcon SimulateIcon; populate_icon(&SimulateIcon,Theme,"simulate.png"); @@ -522,17 +512,8 @@ QString MdiChild::strippedName(const QString &fullFileName) void MdiChild::burnTo() // write to Tx { + QString Theme=getTheme(); QSettings settings("companion", "companion"); - int theme_set=settings.value("theme", 1).toInt(); - QString Theme; - switch(theme_set) { - case 0: - Theme="classic"; - break; - default: - Theme="monochrome"; - break; - } bool backupEnable=settings.value("backupEnable", true).toBool(); QString backupPath=settings.value("backupPath", "").toString(); if (!backupPath.isEmpty()) { diff --git a/companion/src/modeledit/curves.cpp b/companion/src/modeledit/curves.cpp index 21c3fec32..b997a964c 100644 --- a/companion/src/modeledit/curves.cpp +++ b/companion/src/modeledit/curves.cpp @@ -84,18 +84,7 @@ Curves::Curves(QWidget * parent, ModelData & model): QGraphicsScene *scene = new QGraphicsScene(ui->curvePreview); scene->setItemIndexMethod(QGraphicsScene::NoIndex); ui->curvePreview->setScene(scene); - QSettings settings("companion", "companion"); - int theme_set=settings.value("theme", 1).toInt(); - QString Theme; - switch(theme_set) { - case 0: - Theme="classic"; - break; - default: - Theme="monochrome"; - break; - } - + QString Theme=getTheme(); QIcon ClearIcon; populate_icon(&ClearIcon,Theme,"clear.png"); diff --git a/companion/src/modeledit/customfunctions.cpp b/companion/src/modeledit/customfunctions.cpp index 7bb1a2b76..ebccf06c8 100644 --- a/companion/src/modeledit/customfunctions.cpp +++ b/companion/src/modeledit/customfunctions.cpp @@ -123,17 +123,7 @@ CustomFunctionsPanel::CustomFunctionsPanel(QWidget * parent, ModelData & model, connect(fswtchParamArmT[i], SIGNAL(editTextChanged ( const QString)), this, SLOT(customFunctionEdited())); #ifdef PHONON - QSettings settings("companion", "companion"); - int theme_set=settings.value("theme", 1).toInt(); - QString Theme; - switch(theme_set) { - case 0: - Theme="classic"; - break; - default: - Theme="monochrome"; - break; - } + QString Theme=getTheme(); QIcon PlayIcon; populate_icon(&PlayIcon,Theme,"play.png"); playBT[i] = new QPushButton(this); @@ -173,17 +163,7 @@ void CustomFunctionsPanel::mediaPlayer_state(Phonon::State newState, Phonon::Sta { if (phononLock) return; - QSettings settings("companion", "companion"); - int theme_set=settings.value("theme", 1).toInt(); - QString Theme; - switch(theme_set) { - case 0: - Theme="classic"; - break; - default: - Theme="monochrome"; - break; - } + QString Theme=getTheme(); QIcon PlayIcon; populate_icon(&PlayIcon,Theme,"play.png"); @@ -216,17 +196,8 @@ void CustomFunctionsPanel::playMusic() QPushButton *playButton = qobject_cast(sender()); int index=playButton->objectName().mid(5,2).toInt(); QString function=playButton->objectName().left(4); + QString Theme=getTheme(); QSettings settings("companion", "companion"); - int theme_set=settings.value("theme", 1).toInt(); - QString Theme; - switch(theme_set) { - case 0: - Theme="classic"; - break; - default: - Theme="monochrome"; - break; - } QIcon PlayIcon; populate_icon(&PlayIcon,Theme,"play.png"); QIcon StopIcon; @@ -499,17 +470,7 @@ void CustomFunctionsPanel::fsw_customContextMenuRequested(QPoint pos) { QLabel *label = (QLabel *)sender(); selectedFunction = label->property("index").toInt(); - QSettings settings("companion", "companion"); - int theme_set=settings.value("theme", 1).toInt(); - QString Theme; - switch(theme_set) { - case 0: - Theme="classic"; - break; - default: - Theme="monochrome"; - break; - } + QString Theme=getTheme(); QIcon ClearIcon; populate_icon(&ClearIcon,Theme,"clear.png"); QIcon CopyIcon; diff --git a/companion/src/modeledit/customswitches.cpp b/companion/src/modeledit/customswitches.cpp index 487cd68cc..8c2adf2c5 100644 --- a/companion/src/modeledit/customswitches.cpp +++ b/companion/src/modeledit/customswitches.cpp @@ -382,17 +382,7 @@ void CustomSwitchesPanel::csw_customContextMenuRequested(QPoint pos) { QLabel *label = (QLabel *)sender(); selectedSwitch = label->property("index").toInt(); - QSettings settings("companion", "companion"); - int theme_set=settings.value("theme", 1).toInt(); - QString Theme; - switch(theme_set) { - case 0: - Theme="classic"; - break; - default: - Theme="monochrome"; - break; - } + QString Theme=getTheme(); QIcon ClearIcon; populate_icon(&ClearIcon,Theme,"clear.png"); QIcon CopyIcon; diff --git a/companion/src/modeledit/inputs.cpp b/companion/src/modeledit/inputs.cpp index fce9166e2..c8ac71c59 100644 --- a/companion/src/modeledit/inputs.cpp +++ b/companion/src/modeledit/inputs.cpp @@ -8,17 +8,7 @@ InputsPanel::InputsPanel(QWidget *parent, ModelData & model, GeneralSettings & g generalSettings(generalSettings), expoInserted(false) { - QSettings settings("companion", "companion"); - int theme_set=settings.value("theme", 1).toInt(); - QString Theme; - switch(theme_set) { - case 0: - Theme="classic"; - break; - default: - Theme="monochrome"; - break; - } + QString Theme=getTheme(); QGridLayout * exposLayout = new QGridLayout(this); @@ -358,17 +348,7 @@ void InputsPanel::expoAdd() void InputsPanel::expolistWidget_customContextMenuRequested(QPoint pos) { - QSettings settings("companion", "companion"); - int theme_set=settings.value("theme", 1).toInt(); - QString Theme; - switch(theme_set) { - case 0: - Theme="classic"; - break; - default: - Theme="monochrome"; - break; - } + QString Theme=getTheme(); QIcon AddIcon; populate_icon(&AddIcon,Theme,"add.png"); QIcon EditIcon; diff --git a/companion/src/modeledit/mixes.cpp b/companion/src/modeledit/mixes.cpp index 132cfc00e..5f6cc74a6 100644 --- a/companion/src/modeledit/mixes.cpp +++ b/companion/src/modeledit/mixes.cpp @@ -8,17 +8,6 @@ MixesPanel::MixesPanel(QWidget *parent, ModelData & model, GeneralSettings & gen generalSettings(generalSettings), mixInserted(false) { - QSettings settings("companion", "companion"); - int theme_set=settings.value("theme", 1).toInt(); - QString Theme; - switch(theme_set) { - case 0: - Theme="classic"; - break; - default: - Theme="monochrome"; - break; - } QGridLayout * mixesLayout = new QGridLayout(this); MixerlistWidget = new MixersList(this, false); // TODO enum @@ -26,6 +15,7 @@ MixesPanel::MixesPanel(QWidget *parent, ModelData & model, GeneralSettings & gen QPushButton * qbDown = new QPushButton(this); QPushButton * qbClear = new QPushButton(this); + QString Theme=getTheme(); QIcon qbUpIcon; populate_icon(&qbUpIcon,Theme,"moveup.png"); qbUp->setText(tr("Move Up")); @@ -423,17 +413,7 @@ void MixesPanel::mixerAdd() void MixesPanel::mixerlistWidget_customContextMenuRequested(QPoint pos) { - QSettings settings("companion", "companion"); - int theme_set=settings.value("theme", 1).toInt(); - QString Theme; - switch(theme_set) { - case 0: - Theme="classic"; - break; - default: - Theme="monochrome"; - break; - } + QString Theme=getTheme(); QIcon AddIcon; populate_icon(&AddIcon,Theme,"add.png"); QIcon EditIcon; diff --git a/companion/src/modeledit/modeledit.cpp b/companion/src/modeledit/modeledit.cpp index 8cf90bece..ec6d76ab8 100644 --- a/companion/src/modeledit/modeledit.cpp +++ b/companion/src/modeledit/modeledit.cpp @@ -21,18 +21,9 @@ ModelEdit::ModelEdit(RadioData & radioData, int modelId, bool openWizard, bool i generalSettings(generalSettings) { ui->setupUi(this); + QString Theme=getTheme(); QSettings settings("companion", "companion"); restoreGeometry(settings.value("modelEditGeometry").toByteArray()); - int theme_set=settings.value("theme", 1).toInt(); - QString Theme; - switch(theme_set) { - case 0: - Theme="classic"; - break; - default: - Theme="monochrome"; - break; - } QIcon SimulateIcon; populate_icon(&SimulateIcon,Theme,"simulate.png"); ui->pushButton->setIcon(SimulateIcon); diff --git a/companion/src/modelslist.cpp b/companion/src/modelslist.cpp index a2984c02c..b96925020 100644 --- a/companion/src/modelslist.cpp +++ b/companion/src/modelslist.cpp @@ -83,17 +83,7 @@ void ModelsListWidget::ShowContextMenu(const QPoint& pos) const QClipboard *clipboard = QApplication::clipboard(); const QMimeData *mimeData = clipboard->mimeData(); bool hasData = mimeData->hasFormat("application/x-companion9x"); - QSettings settings("companion", "companion"); - int theme_set=settings.value("theme", 1).toInt(); - QString Theme; - switch(theme_set) { - case 0: - Theme="classic"; - break; - default: - Theme="monochrome"; - break; - } + QString Theme=getTheme(); QIcon AddIcon; populate_icon(&AddIcon,Theme,"add.png"); QIcon EditIcon; diff --git a/companion/src/preferencesdialog.cpp b/companion/src/preferencesdialog.cpp index 839c554a3..625934292 100644 --- a/companion/src/preferencesdialog.cpp +++ b/companion/src/preferencesdialog.cpp @@ -17,19 +17,8 @@ preferencesDialog::preferencesDialog(QWidget *parent) : updateLock(false) { ui->setupUi(this); - QSettings settings("companion", "companion"); - int theme_set=settings.value("theme", 1).toInt(); + QString Theme=getTheme(); QIcon Icon; - - QString Theme; - switch(theme_set) { - case 0: - Theme="classic"; - break; - default: - Theme="monochrome"; - break; - } populate_icon(&Icon, Theme, "preferences.png"); this->setWindowIcon(Icon); QIcon LibraryIcon; diff --git a/companion/src/splashlibrary.cpp b/companion/src/splashlibrary.cpp index 8749f7587..4d0c0b111 100644 --- a/companion/src/splashlibrary.cpp +++ b/companion/src/splashlibrary.cpp @@ -9,17 +9,7 @@ splashLibrary::splashLibrary(QWidget *parent, QString * fileName) : QDialog(parent), ui(new Ui::splashLibrary) { splashFileName = fileName; ui->setupUi(this); - QSettings settings("companion", "companion"); - int theme_set=settings.value("theme", 1).toInt(); - QString Theme; - switch(theme_set) { - case 0: - Theme="classic"; - break; - default: - Theme="monochrome"; - break; - } + QString Theme=getTheme(); QIcon NextIcon; populate_icon(&NextIcon,Theme,"arrow-right.png"); QIcon PrevIcon; From 97de97c84ef87e0ef3afaf68b4664fc3382db975 Mon Sep 17 00:00:00 2001 From: Romolo Manfredini Date: Mon, 20 Jan 2014 12:26:50 +0100 Subject: [PATCH 194/308] Small code cleanup --- companion/src/burnconfigdialog.cpp | 15 +- companion/src/burndialog.cpp | 3 +- companion/src/customizesplashdialog.cpp | 3 +- companion/src/helpers.cpp | 3 +- companion/src/helpers.h | 2 +- companion/src/mainwindow.cpp | 101 +++--- companion/src/mdichild.cpp | 16 +- companion/src/modeledit/curves.cpp | 3 +- companion/src/modeledit/customfunctions.cpp | 20 +- companion/src/modeledit/customswitches.cpp | 9 +- companion/src/modeledit/inputs.cpp | 25 +- companion/src/modeledit/mixes.cpp | 27 +- companion/src/modeledit/modeledit.cpp | 3 +- companion/src/modelslist.cpp | 25 +- companion/src/preferencesdialog.cpp | 7 +- companion/src/preferencesdialog.ui | 376 +++++++++++--------- companion/src/splashlibrary.cpp | 5 +- 17 files changed, 322 insertions(+), 321 deletions(-) diff --git a/companion/src/burnconfigdialog.cpp b/companion/src/burnconfigdialog.cpp index b09a7318a..d7ce28e6d 100644 --- a/companion/src/burnconfigdialog.cpp +++ b/companion/src/burnconfigdialog.cpp @@ -279,9 +279,8 @@ void burnConfigDialog::listProgrammers() QStringList arguments; arguments << "-c?"; avrOutputDialog *ad = new avrOutputDialog(this, ui->avrdude_location->text(), arguments, "List available programmers", AVR_DIALOG_KEEP_OPEN, TRUE); - QString Theme=getTheme(); QIcon Icon; - populate_icon(&Icon,Theme,"list.png"); + populate_icon(&Icon,"list.png"); ad->setWindowIcon(Icon); ad->show(); } @@ -299,9 +298,8 @@ void burnConfigDialog::on_pushButton_4_clicked() arguments << "-?"; avrOutputDialog *ad = new avrOutputDialog(this, ui->avrdude_location->text(), arguments, "Show help", AVR_DIALOG_KEEP_OPEN,TRUE); - QString Theme=getTheme(); QIcon Icon; - populate_icon(&Icon,Theme,"configure.png"); + populate_icon(&Icon,"configure.png"); ad->setWindowIcon(Icon); ad->show(); } @@ -319,9 +317,8 @@ void burnConfigDialog::readFuses() arguments << "-c" << avrProgrammer << "-p" << avrMCU << args << str; avrOutputDialog *ad = new avrOutputDialog(this, avrLoc, arguments, "Read Fuses",AVR_DIALOG_KEEP_OPEN,TRUE); - QString Theme=getTheme(); QIcon Icon; - populate_icon(&Icon,Theme,"fuses.png"); + populate_icon(&Icon,"fuses.png"); ad->setWindowIcon(Icon); ad->show(); } @@ -334,8 +331,6 @@ void burnConfigDialog::restFuses(bool eeProtect) //avrdude -c usbasp -p m64 -U efuse:w:<0xFF>:m QMessageBox::StandardButton ret = QMessageBox::No; - QString Theme=getTheme(); - ret = QMessageBox::warning(this, tr("Companion"), tr("WARNING!
This will reset the fuses of %1 to the factory settings.
Writing fuses can mess up your radio.
Do this only if you are sure they are wrong!
Are you sure you want to continue?").arg(avrMCU), QMessageBox::Yes | QMessageBox::No); @@ -358,7 +353,7 @@ void burnConfigDialog::restFuses(bool eeProtect) argread << "-c" << avrProgrammer << "-p" << avrMCU << args <<"-U" << "lfuse:r:"+tempFile+":r" ; avrOutputDialog *ad = new avrOutputDialog(this, avrLoc, argread, "Reset Fuses",AVR_DIALOG_CLOSE_IF_SUCCESSFUL,FALSE); QIcon Icon; - populate_icon(&Icon,Theme,"fuses.png"); + populate_icon(&Icon,"fuses.png"); ad->setWindowIcon(Icon); ad->exec(); QFile file(tempFile); @@ -389,7 +384,7 @@ void burnConfigDialog::restFuses(bool eeProtect) } avrOutputDialog *ad = new avrOutputDialog(this, avrLoc, arguments, "Reset Fuses",AVR_DIALOG_KEEP_OPEN,TRUE); QIcon Icon; - populate_icon(&Icon,Theme,"fuses.png"); + populate_icon(&Icon,"fuses.png"); ad->setWindowIcon(Icon); ad->show(); } diff --git a/companion/src/burndialog.cpp b/companion/src/burndialog.cpp index 7da0896ed..167bba702 100644 --- a/companion/src/burndialog.cpp +++ b/companion/src/burndialog.cpp @@ -16,9 +16,8 @@ burnDialog::burnDialog(QWidget *parent, int Type, QString * fileName, bool * bac hexType(Type) { ui->setupUi(this); - QString Theme=getTheme(); QIcon LibraryIcon; - populate_icon(&LibraryIcon,Theme,"library.png"); + populate_icon(&LibraryIcon,"library.png"); ui->libraryButton->setIcon(LibraryIcon); ui->SplashFrame->hide(); ui->FramFWInfo->hide(); diff --git a/companion/src/customizesplashdialog.cpp b/companion/src/customizesplashdialog.cpp index 92c3a54e1..5fa478291 100644 --- a/companion/src/customizesplashdialog.cpp +++ b/companion/src/customizesplashdialog.cpp @@ -11,9 +11,8 @@ customizeSplashDialog::customizeSplashDialog(QWidget *parent) : QDialog(parent), ui(new Ui::customizeSplashDialog) { ui->setupUi(this); - QString Theme=getTheme(); QIcon LibraryIcon; - populate_icon(&LibraryIcon,Theme,"library.png"); + populate_icon(&LibraryIcon,"library.png"); ui->libraryButton->setIcon(LibraryIcon); ui->HowToLabel->clear(); ui->HowToLabel->append("
" + tr("Select an original firmware file") + "
"); diff --git a/companion/src/helpers.cpp b/companion/src/helpers.cpp index f5a509359..739353e63 100644 --- a/companion/src/helpers.cpp +++ b/companion/src/helpers.cpp @@ -1485,8 +1485,9 @@ QString getCenterBeep(ModelData * g_model) return strl.join(", "); } -void populate_icon(QIcon *Icon, QString usedtheme, QString baseimage) +void populate_icon(QIcon *Icon, QString baseimage) { + static QString usedtheme=getTheme(); Icon->addFile(":/themes/"+usedtheme+"/16/"+baseimage,QSize(16,16)); Icon->addFile(":/themes/"+usedtheme+"/24/"+baseimage,QSize(24,24)); Icon->addFile(":/themes/"+usedtheme+"/32/"+baseimage,QSize(32,32)); diff --git a/companion/src/helpers.h b/companion/src/helpers.h index 4e720e629..f2dcbc51e 100644 --- a/companion/src/helpers.h +++ b/companion/src/helpers.h @@ -28,7 +28,7 @@ void populateVoiceLangCB(QComboBox *b, QString language); void populateTTraceCB(QComboBox *b, int value); void populateRotEncCB(QComboBox *b, int value, int renumber); void populateBacklightCB(QComboBox *b, const uint8_t value); -void populate_icon(QIcon *Icon, QString usedtheme, QString baseimage); +void populate_icon(QIcon *Icon, QString baseimage); QString getTheme(); class GVarGroup : public QObject { diff --git a/companion/src/mainwindow.cpp b/companion/src/mainwindow.cpp index 5d8bdf237..4a5e0aa97 100644 --- a/companion/src/mainwindow.cpp +++ b/companion/src/mainwindow.cpp @@ -96,7 +96,6 @@ downloadDialog_forWait(NULL) this, SLOT(setActiveSubWindow(QWidget*))); MaxRecentFiles=MAX_RECENT; - Theme=getTheme(); QSettings settings("companion", "companion"); int icon_size=settings.value("icon_size", 1).toInt(); switch (icon_size) { @@ -1082,7 +1081,7 @@ void MainWindow::burnFrom() str << path << tempFile; avrOutputDialog *ad = new avrOutputDialog(this,"", str, tr("Read Models and Settings From Tx")); //, AVR_DIALOG_KEEP_OPEN); QIcon icon; - populate_icon(&icon,Theme,"read_eeprom.png"); + populate_icon(&icon,"read_eeprom.png"); ad->setWindowIcon(icon); res = ad->exec(); sleep(1); @@ -1091,7 +1090,7 @@ void MainWindow::burnFrom() QStringList str = GetReceiveEEpromCommand(tempFile); avrOutputDialog *ad = new avrOutputDialog(this, GetAvrdudeLocation(), str, tr("Read Models and Settings From Tx")); //, AVR_DIALOG_KEEP_OPEN); QIcon icon; - populate_icon(&icon,Theme,"read_eeprom.png"); + populate_icon(&icon,"read_eeprom.png"); ad->setWindowIcon(icon); res = ad->exec(); } @@ -1143,7 +1142,7 @@ void MainWindow::burnExtenalToEEPROM() str << path << backupFile; avrOutputDialog *ad = new avrOutputDialog(this,"", str, tr("Backup Models and Settings From Tx")); //, AVR_DIALOG_KEEP_OPEN); QIcon icon; - populate_icon(&icon,Theme,"read_eeprom.png"); + populate_icon(&icon,"read_eeprom.png"); ad->setWindowIcon(icon); ad->exec(); sleep(1); @@ -1152,7 +1151,7 @@ void MainWindow::burnExtenalToEEPROM() QStringList str = GetReceiveEEpromCommand(backupFile); avrOutputDialog *ad = new avrOutputDialog(this, GetAvrdudeLocation(), str, tr("Backup Models and Settings From Tx")); QIcon icon; - populate_icon(&icon,Theme,"read_eeprom.png"); + populate_icon(&icon,"read_eeprom.png"); ad->setWindowIcon(icon); ad->exec(); sleep(1); @@ -1164,7 +1163,7 @@ void MainWindow::burnExtenalToEEPROM() QStringList str = GetReceiveFlashCommand(tempFlash); avrOutputDialog *ad = new avrOutputDialog(this, GetAvrdudeLocation(), str, "Read Firmware From Tx"); QIcon icon; - populate_icon(&icon,Theme,"read_flash.png"); + populate_icon(&icon,"read_flash.png"); ad->setWindowIcon(icon); ad->exec(); sleep(1); @@ -1199,7 +1198,7 @@ void MainWindow::burnExtenalToEEPROM() str << path << backupFile; avrOutputDialog *ad = new avrOutputDialog(this,"", str, tr("Backup Models and Settings From Tx")); //, AVR_DIALOG_KEEP_OPEN); QIcon icon; - populate_icon(&icon,Theme,"read_eeprom.png"); + populate_icon(&icon,"read_eeprom.png"); ad->setWindowIcon(icon); ad->exec(); sleep(1); @@ -1208,7 +1207,7 @@ void MainWindow::burnExtenalToEEPROM() QStringList str = ((MainWindow *)this->parent())->GetReceiveEEpromCommand(backupFile); avrOutputDialog *ad = new avrOutputDialog(this, ((MainWindow *)this->parent())->GetAvrdudeLocation(), str, tr("Backup Models and Settings From Tx")); QIcon icon; - populate_icon(&icon,Theme,"read_eeprom.png"); + populate_icon(&icon,"read_eeprom.png"); ad->setWindowIcon(icon); ad->exec(); sleep(1); @@ -1225,7 +1224,7 @@ void MainWindow::burnExtenalToEEPROM() str << fileName << path; avrOutputDialog *ad = new avrOutputDialog(this,"", str, tr("Write Models and Settings To Tx")); //, AVR_DIALOG_KEEP_OPEN); QIcon icon; - populate_icon(&icon,Theme,"read_eeprom.png"); + populate_icon(&icon,"read_eeprom.png"); ad->setWindowIcon(icon); ad->exec(); sleep(1); @@ -1234,7 +1233,7 @@ void MainWindow::burnExtenalToEEPROM() QStringList str = GetSendEEpromCommand(fileName); avrOutputDialog *ad = new avrOutputDialog(this, GetAvrdudeLocation(), str, "Write Models and Settings To Tx", AVR_DIALOG_SHOW_DONE); QIcon icon; - populate_icon(&icon,Theme,"write_eeprom.png"); + populate_icon(&icon,"write_eeprom.png"); ad->setWindowIcon(icon); ad->exec(); } @@ -1401,7 +1400,7 @@ void MainWindow::burnToFlash(QString fileToFlash) QStringList str = GetReceiveEEpromCommand(backupFile); avrOutputDialog *ad = new avrOutputDialog(this, GetAvrdudeLocation(), str, tr("Backup Models and Settings From Tx"), AVR_DIALOG_CLOSE_IF_SUCCESSFUL); QIcon icon; - populate_icon(&icon,Theme,"read_eeprom.png"); + populate_icon(&icon,"read_eeprom.png"); ad->setWindowIcon(icon); int res = ad->exec(); if (QFileInfo(backupFile).exists() && res) { @@ -1409,7 +1408,7 @@ void MainWindow::burnToFlash(QString fileToFlash) QStringList str = GetSendFlashCommand(fileName); avrOutputDialog *ad = new avrOutputDialog(this, GetAvrdudeLocation(), str, tr("Write Firmware To Tx"), AVR_DIALOG_CLOSE_IF_SUCCESSFUL); QIcon iconw; - populate_icon(&iconw,Theme,"write_eeprom.png"); + populate_icon(&iconw,"write_eeprom.png"); ad->setWindowIcon(iconw); int res = ad->exec(); if (res) { @@ -1447,7 +1446,7 @@ void MainWindow::burnToFlash(QString fileToFlash) QStringList str = GetReceiveEEpromCommand(backupFile); avrOutputDialog *ad = new avrOutputDialog(this, GetAvrdudeLocation(), str, tr("Backup Models and Settings From Tx")); QIcon icon; - populate_icon(&icon,Theme,"read_eeprom.png"); + populate_icon(&icon,"read_eeprom.png"); ad->setWindowIcon(icon); ad->exec(); sleep(1); @@ -1456,7 +1455,7 @@ void MainWindow::burnToFlash(QString fileToFlash) QStringList str = GetSendFlashCommand(fileName); avrOutputDialog *ad = new avrOutputDialog(this, GetAvrdudeLocation(), str, tr("Write Firmware To Tx"), AVR_DIALOG_SHOW_DONE); QIcon iconw; - populate_icon(&iconw,Theme,"read_eeprom.png"); + populate_icon(&iconw,"write_flash.png"); ad->setWindowIcon(iconw); ad->exec(); } @@ -1479,7 +1478,7 @@ void MainWindow::burnExtenalFromEEPROM() str << path << fileName; avrOutputDialog *ad = new avrOutputDialog(this,"", str, tr("Read Models and Settings From Tx")); //, AVR_DIALOG_KEEP_OPEN); QIcon icon; - populate_icon(&icon,Theme,"read_eeprom.png"); + populate_icon(&icon,"read_eeprom.png"); ad->setWindowIcon(icon); ad->exec(); } @@ -1488,7 +1487,7 @@ void MainWindow::burnExtenalFromEEPROM() QStringList str = GetReceiveEEpromCommand(fileName); avrOutputDialog *ad = new avrOutputDialog(this, GetAvrdudeLocation(), str, tr("Read Models and Settings From Tx")); QIcon icon; - populate_icon(&icon,Theme,"read_eeprom.png"); + populate_icon(&icon,"read_eeprom.png"); ad->setWindowIcon(icon); ad->exec(); } @@ -1508,7 +1507,7 @@ void MainWindow::burnFromFlash() QStringList str = GetReceiveFlashCommand(fileName); avrOutputDialog *ad = new avrOutputDialog(this, GetAvrdudeLocation(), str, "Read Firmware From Tx"); QIcon icon; - populate_icon(&icon,Theme,"read_flash.png"); + populate_icon(&icon,"read_flash.png"); ad->setWindowIcon(icon); ad->exec(); } @@ -1650,7 +1649,7 @@ MdiChild *MainWindow::createMdiChild() void MainWindow::createActions() { QIcon newActIcon; - populate_icon(&newActIcon,Theme,"new.png"); + populate_icon(&newActIcon,"new.png"); newAct = new QAction(newActIcon, tr("&New"), this); newAct->setShortcuts(QKeySequence::New); @@ -1658,7 +1657,7 @@ void MainWindow::createActions() connect(newAct, SIGNAL(triggered()), this, SLOT(newFile())); QIcon openActIcon; - populate_icon(&openActIcon,Theme,"open.png"); + populate_icon(&openActIcon,"open.png"); openAct = new QAction(openActIcon, tr("&Open..."), this); openAct->setShortcuts(QKeySequence::Open); openAct->setStatusTip(tr("Open an existing file")); @@ -1669,65 +1668,65 @@ void MainWindow::createActions() connect(loadbackupAct, SIGNAL(triggered()), this, SLOT(loadBackup())); QIcon saveActIcon; - populate_icon(&saveActIcon,Theme,"save.png"); + populate_icon(&saveActIcon,"save.png"); saveAct = new QAction(saveActIcon, tr("&Save"), this); saveAct->setShortcuts(QKeySequence::Save); saveAct->setStatusTip(tr("Save the document to disk")); connect(saveAct, SIGNAL(triggered()), this, SLOT(save())); QIcon saveAsActIcon; - populate_icon(&saveAsActIcon,Theme,"saveas.png"); + populate_icon(&saveAsActIcon,"saveas.png"); saveAsAct = new QAction(saveAsActIcon, tr("Save &As..."), this); saveAsAct->setShortcuts(QKeySequence::SaveAs); saveAsAct->setStatusTip(tr("Save the document under a new name")); connect(saveAsAct, SIGNAL(triggered()), this, SLOT(saveAs())); QIcon logsActIcon; - populate_icon(&logsActIcon,Theme,"logs.png"); + populate_icon(&logsActIcon,"logs.png"); logsAct = new QAction(logsActIcon, tr("Lo&gs"), this); logsAct->setShortcut(tr("Ctrl+G")); logsAct->setStatusTip(tr("Open log file")); connect(logsAct, SIGNAL(triggered()), this, SLOT(logFile())); QIcon preferencesActIcon; - populate_icon(&preferencesActIcon,Theme,"preferences.png"); + populate_icon(&preferencesActIcon,"preferences.png"); preferencesAct = new QAction(preferencesActIcon, tr("&Preferences..."), this); preferencesAct->setStatusTip(tr("Edit general preferences")); connect(preferencesAct, SIGNAL(triggered()), this, SLOT(preferences())); QIcon checkForUpdatesActIcon; - populate_icon(&checkForUpdatesActIcon,Theme,"update.png"); + populate_icon(&checkForUpdatesActIcon,"update.png"); checkForUpdatesAct = new QAction(checkForUpdatesActIcon, tr("&Check for updates..."), this); checkForUpdatesAct->setStatusTip(tr("Check for new version of Companion")); connect(checkForUpdatesAct, SIGNAL(triggered()), this, SLOT(doUpdates())); QIcon contributorsActIcon; - populate_icon(&contributorsActIcon,Theme,"contributors.png"); + populate_icon(&contributorsActIcon,"contributors.png"); contributorsAct = new QAction(contributorsActIcon, tr("Contributors &List..."), this); contributorsAct->setStatusTip(tr("Show Companion contributors list")); connect(contributorsAct, SIGNAL(triggered()), this, SLOT(contributors())); QIcon changelogActIcon; - populate_icon(&changelogActIcon,Theme,"changelog.png"); + populate_icon(&changelogActIcon,"changelog.png"); changelogAct = new QAction(changelogActIcon, tr("ChangeLog..."), this); changelogAct->setStatusTip(tr("Show Companion changelog")); connect(changelogAct, SIGNAL(triggered()), this, SLOT(changelog())); QIcon fwchangelogActIcon; - populate_icon(&fwchangelogActIcon,Theme,"changelog.png"); + populate_icon(&fwchangelogActIcon,"changelog.png"); fwchangelogAct = new QAction(fwchangelogActIcon, tr("Firmware ChangeLog..."), this); fwchangelogAct->setStatusTip(tr("Show firmware changelog")); connect(fwchangelogAct, SIGNAL(triggered()), this, SLOT(fwchangelog())); QIcon compareActIcon; - populate_icon(&compareActIcon,Theme,"compare.png"); + populate_icon(&compareActIcon,"compare.png"); compareAct = new QAction(compareActIcon, tr("Compare..."), this); compareAct->setStatusTip(tr("Compare models")); compareAct->setEnabled(false); connect(compareAct, SIGNAL(triggered()), this, SLOT(compare())); QIcon customizeSplashActIcon; - populate_icon(&customizeSplashActIcon,Theme,"customize.png"); + populate_icon(&customizeSplashActIcon,"customize.png"); customizeSplashAct = new QAction(customizeSplashActIcon, tr("Customize your &TX..."), this); customizeSplashAct->setStatusTip(tr("Customize the splash screen of your TX")); connect(customizeSplashAct, SIGNAL(triggered()), this, SLOT(customizeSplash())); @@ -1735,7 +1734,7 @@ void MainWindow::createActions() //! [0] QIcon exitActIcon; - populate_icon(&exitActIcon,Theme,"exit.png"); + populate_icon(&exitActIcon,"exit.png"); exitAct = new QAction(exitActIcon, tr("E&xit"), this); exitAct->setShortcuts(QKeySequence::Quit); exitAct->setStatusTip(tr("Exit the application")); @@ -1743,7 +1742,7 @@ void MainWindow::createActions() //! [0] QIcon cutActIcon; - populate_icon(&cutActIcon,Theme,"cut.png"); + populate_icon(&cutActIcon,"cut.png"); cutAct = new QAction(cutActIcon, tr("Cu&t"), this); cutAct->setShortcuts(QKeySequence::Cut); cutAct->setStatusTip(tr("Cut the current selection's contents to the " @@ -1751,7 +1750,7 @@ void MainWindow::createActions() connect(cutAct, SIGNAL(triggered()), this, SLOT(cut())); QIcon copyActIcon; - populate_icon(©ActIcon,Theme,"copy.png"); + populate_icon(©ActIcon,"copy.png"); copyAct = new QAction(copyActIcon, tr("&Copy"), this); copyAct->setShortcuts(QKeySequence::Copy); copyAct->setStatusTip(tr("Copy the current selection's contents to the " @@ -1759,7 +1758,7 @@ void MainWindow::createActions() connect(copyAct, SIGNAL(triggered()), this, SLOT(copy())); QIcon pasteActIcon; - populate_icon(&pasteActIcon,Theme,"paste.png"); + populate_icon(&pasteActIcon,"paste.png"); pasteAct = new QAction(pasteActIcon, tr("&Paste"), this); pasteAct->setShortcuts(QKeySequence::Paste); pasteAct->setStatusTip(tr("Paste the clipboard's contents into the current " @@ -1767,64 +1766,64 @@ void MainWindow::createActions() connect(pasteAct, SIGNAL(triggered()), this, SLOT(paste())); QIcon burnToActIcon; - populate_icon(&burnToActIcon,Theme,"write_eeprom.png"); + populate_icon(&burnToActIcon,"write_eeprom.png"); burnToAct = new QAction(burnToActIcon, tr("&Write Models and Settings To Tx"), this); burnToAct->setShortcut(tr("Ctrl+Alt+W")); burnToAct->setStatusTip(tr("Write Models and Settings to transmitter")); connect(burnToAct,SIGNAL(triggered()),this,SLOT(burnTo())); QIcon burnFromActIcon; - populate_icon(&burnFromActIcon,Theme,"read_eeprom.png"); + populate_icon(&burnFromActIcon,"read_eeprom.png"); burnFromAct = new QAction(burnFromActIcon, tr("&Read Models and Settings From Tx"), this); burnFromAct->setShortcut(tr("Ctrl+Alt+R")); burnFromAct->setStatusTip(tr("Read Models and Settings from transmitter")); connect(burnFromAct,SIGNAL(triggered()),this,SLOT(burnFrom())); QIcon burnToFlashActIcon; - populate_icon(&burnToFlashActIcon,Theme,"write_flash.png"); + populate_icon(&burnToFlashActIcon,"write_flash.png"); burnToFlashAct = new QAction(burnToFlashActIcon, tr("Write Firmware"), this); burnToFlashAct->setStatusTip(tr("Write firmware to transmitter")); connect(burnToFlashAct,SIGNAL(triggered()),this,SLOT(burnToFlash())); QIcon burnExtenalToEEPROMActIcon; - populate_icon(&burnExtenalToEEPROMActIcon,Theme,"write_eeprom_file.png"); + populate_icon(&burnExtenalToEEPROMActIcon,"write_eeprom_file.png"); burnExtenalToEEPROMAct = new QAction(burnExtenalToEEPROMActIcon, tr("Write Models and Settings from file to Tx"), this); burnExtenalToEEPROMAct->setStatusTip(tr("Write Models and Settings from file to transmitter")); connect(burnExtenalToEEPROMAct,SIGNAL(triggered()),this,SLOT(burnExtenalToEEPROM())); QIcon burnExtenalFromEEPROMActIcon; - populate_icon(&burnExtenalFromEEPROMActIcon,Theme,"read_eeprom_file.png"); + populate_icon(&burnExtenalFromEEPROMActIcon,"read_eeprom_file.png"); burnExtenalFromEEPROMAct = new QAction(burnExtenalFromEEPROMActIcon, tr("Save transmitter Models and Settings to file"), this); burnExtenalFromEEPROMAct->setStatusTip(tr("Save the Models and Settings from the transmitter to a file")); connect(burnExtenalFromEEPROMAct,SIGNAL(triggered()),this,SLOT(burnExtenalFromEEPROM())); QIcon burnFromFlashActIcon; - populate_icon(&burnFromFlashActIcon,Theme,"read_flash.png"); + populate_icon(&burnFromFlashActIcon,"read_flash.png"); burnFromFlashAct = new QAction(burnFromFlashActIcon, tr("Read Firmware"), this); burnFromFlashAct->setStatusTip(tr("Read firmware from transmitter")); connect(burnFromFlashAct,SIGNAL(triggered()),this,SLOT(burnFromFlash())); QIcon burnConfigActIcon; - populate_icon(&burnConfigActIcon,Theme,"configure.png"); + populate_icon(&burnConfigActIcon,"configure.png"); burnConfigAct = new QAction(burnConfigActIcon, tr("&Configure..."), this); burnConfigAct->setStatusTip(tr("Configure software for reading from and writing to the transmitter")); connect(burnConfigAct,SIGNAL(triggered()),this,SLOT(burnConfig())); EEPROMInterface *eepromInterface = GetEepromInterface(); if (!IS_ARM(eepromInterface->getBoard())) { QIcon burnListActIcon; - populate_icon(&burnListActIcon,Theme,"list.png"); + populate_icon(&burnListActIcon,"list.png"); burnListAct = new QAction(burnListActIcon, tr("&List programmers"), this); burnListAct->setStatusTip(tr("List available programmers")); connect(burnListAct,SIGNAL(triggered()),this,SLOT(burnList())); QIcon burnFusesActIcon; - populate_icon(&burnFusesActIcon,Theme,"fuses.png"); + populate_icon(&burnFusesActIcon,"fuses.png"); burnFusesAct = new QAction(burnFusesActIcon, tr("&Fuses..."), this); burnFusesAct->setStatusTip(tr("Show fuses dialog")); connect(burnFusesAct,SIGNAL(triggered()),this,SLOT(burnFuses())); } QIcon simulateActIcon; - populate_icon(&simulateActIcon,Theme,"simulate.png"); + populate_icon(&simulateActIcon,"simulate.png"); simulateAct = new QAction(simulateActIcon, tr("&Simulate"), this); simulateAct->setShortcut(tr("Alt+S")); simulateAct->setStatusTip(tr("Simulate selected model.")); @@ -1832,7 +1831,7 @@ void MainWindow::createActions() connect(simulateAct,SIGNAL(triggered()),this,SLOT(simulate())); QIcon printActIcon; - populate_icon(&printActIcon,Theme,"print.png"); + populate_icon(&printActIcon,"print.png"); printAct = new QAction(printActIcon, tr("&Print"), this); printAct->setShortcut(tr("Ctrl+P")); printAct->setStatusTip(tr("Print current model.")); @@ -1874,13 +1873,13 @@ void MainWindow::createActions() separatorAct->setSeparator(true); QIcon aboutActIcon; - populate_icon(&aboutActIcon,Theme,"information.png"); + populate_icon(&aboutActIcon,"information.png"); aboutAct = new QAction(aboutActIcon, tr("&About"), this); aboutAct->setStatusTip(tr("Show the application's About box")); connect(aboutAct, SIGNAL(triggered()), this, SLOT(about())); QIcon switchLayoutDirectionActIcon; - populate_icon(&switchLayoutDirectionActIcon,Theme,"switch_dir.png"); + populate_icon(&switchLayoutDirectionActIcon,"switch_dir.png"); switchLayoutDirectionAct = new QAction(switchLayoutDirectionActIcon, tr("Switch layout direction"), this); switchLayoutDirectionAct->setStatusTip(tr("Switch layout Left/Right")); connect(switchLayoutDirectionAct, SIGNAL(triggered()), this, SLOT(switchLayoutDirection())); @@ -1912,7 +1911,7 @@ void MainWindow::createMenus() fileMenu->addAction(saveAsAct); fileMenu->addMenu(recentFileMenu); QIcon recentFileMenuIcon; - populate_icon(&recentFileMenuIcon,Theme,"recentdocument.png"); + populate_icon(&recentFileMenuIcon,"recentdocument.png"); recentFileMenu->setIcon(recentFileMenuIcon); for ( int i = 0; i < MaxRecentFiles; ++i) recentFileMenu->addAction(recentFileActs[i]); @@ -1927,7 +1926,7 @@ void MainWindow::createMenus() fileMenu->addMenu(profilesMenu); QIcon profilesMenuIcon; - populate_icon(&profilesMenuIcon,Theme,"profiles.png"); + populate_icon(&profilesMenuIcon,"profiles.png"); profilesMenu->setIcon(profilesMenuIcon); for ( int i = 0; i < MAX_PROFILES; ++i) profilesMenu->addAction(profileActs[i]); @@ -1994,7 +1993,7 @@ QMenu *MainWindow::createProfilesMenu() void MainWindow::createToolBars() { QSettings settings("companion", "companion"); - int icon_size=settings.value("icon_size",1 ).toInt(); + int icon_size=settings.value("icon_size",2 ).toInt(); QSize size; switch(icon_size) { case 0: @@ -2019,7 +2018,7 @@ void MainWindow::createToolBars() recentToolButton->setPopupMode(QToolButton::InstantPopup); recentToolButton->setMenu(createRecentFileMenu()); QIcon recentToolButtonIcon; - populate_icon(&recentToolButtonIcon,Theme,"recentdocument.png"); + populate_icon(&recentToolButtonIcon,"recentdocument.png"); recentToolButton->setIcon(recentToolButtonIcon); recentToolButton->setToolTip(tr("Recent Files")); fileToolBar->addWidget(recentToolButton); @@ -2031,7 +2030,7 @@ void MainWindow::createToolBars() profileButton->setPopupMode(QToolButton::InstantPopup); profileButton->setMenu(createProfilesMenu()); QIcon profileButtonIcon; - populate_icon(&profileButtonIcon,Theme,"profiles.png"); + populate_icon(&profileButtonIcon,"profiles.png"); profileButton->setIcon(profileButtonIcon); profileButton->setToolTip(tr("Firmware Profiles")); fileToolBar->addWidget(profileButton); diff --git a/companion/src/mdichild.cpp b/companion/src/mdichild.cpp index b3ecb4a72..c3b5b2468 100644 --- a/companion/src/mdichild.cpp +++ b/companion/src/mdichild.cpp @@ -68,9 +68,8 @@ MdiChild::MdiChild(): isUntitled(true), fileChanged(false) { - QString Theme=getTheme(); QIcon SimulateIcon; - populate_icon(&SimulateIcon,Theme,"simulate.png"); + populate_icon(&SimulateIcon,"simulate.png"); ui->setupUi(this); ui->SimulateTxButton->setIcon(SimulateIcon); @@ -512,7 +511,6 @@ QString MdiChild::strippedName(const QString &fullFileName) void MdiChild::burnTo() // write to Tx { - QString Theme=getTheme(); QSettings settings("companion", "companion"); bool backupEnable=settings.value("backupEnable", true).toBool(); QString backupPath=settings.value("backupPath", "").toString(); @@ -559,7 +557,7 @@ void MdiChild::burnTo() // write to Tx str << path << backupFile; avrOutputDialog *ad = new avrOutputDialog(this,"", str, tr("Backup EEPROM From Tx")); //, AVR_DIALOG_KEEP_OPEN); QIcon Icon; - populate_icon(&Icon,Theme,"read_eeprom.png"); + populate_icon(&Icon,"read_eeprom.png"); ad->setWindowIcon(Icon); ad->exec(); sleep(1); @@ -568,7 +566,7 @@ void MdiChild::burnTo() // write to Tx QStringList str = ((MainWindow *)this->parent())->GetReceiveEEpromCommand(backupFile); avrOutputDialog *ad = new avrOutputDialog(this, ((MainWindow *)this->parent())->GetAvrdudeLocation(), str, tr("Backup EEPROM From Tx")); QIcon Icon; - populate_icon(&Icon,Theme,"read_eeprom.png"); + populate_icon(&Icon,"read_eeprom.png"); ad->setWindowIcon(Icon); ad->exec(); sleep(1); @@ -579,7 +577,7 @@ void MdiChild::burnTo() // write to Tx QStringList str = ((MainWindow *)this->parent())->GetReceiveFlashCommand(tempFlash); avrOutputDialog *ad = new avrOutputDialog(this, ((MainWindow *)this->parent())->GetAvrdudeLocation(), str, "Read Flash From Tx"); QIcon Icon; - populate_icon(&Icon,Theme,"read_flash.png"); + populate_icon(&Icon,"read_flash.png"); ad->setWindowIcon(Icon); ad->exec(); sleep(1); @@ -617,7 +615,7 @@ void MdiChild::burnTo() // write to Tx QStringList str = ((MainWindow *)this->parent())->GetReceiveEEpromCommand(backupFile); avrOutputDialog *ad = new avrOutputDialog(this, ((MainWindow *)this->parent())->GetAvrdudeLocation(), str, tr("Backup EEPROM From Tx")); QIcon Icon; - populate_icon(&Icon,Theme,"read_eeprom.png"); + populate_icon(&Icon,"read_eeprom.png"); ad->setWindowIcon(Icon); ad->exec(); sleep(1); @@ -634,7 +632,7 @@ void MdiChild::burnTo() // write to Tx str << tempFile << path; avrOutputDialog *ad = new avrOutputDialog(this,"", str, tr("Write EEPROM To Tx"), AVR_DIALOG_SHOW_DONE); //, AVR_DIALOG_KEEP_OPEN); QIcon Icon; - populate_icon(&Icon,Theme,"read_eeprom.png"); + populate_icon(&Icon,"read_eeprom.png"); ad->setWindowIcon(Icon); ad->show(); sleep(1); @@ -643,7 +641,7 @@ void MdiChild::burnTo() // write to Tx QStringList str = ((MainWindow *)this->parent())->GetSendEEpromCommand(tempFile); avrOutputDialog *ad = new avrOutputDialog(this, ((MainWindow *)this->parent())->GetAvrdudeLocation(), str, "Write EEPROM To Tx", AVR_DIALOG_SHOW_DONE); QIcon Icon; - populate_icon(&Icon,Theme,"write_eeprom.png"); + populate_icon(&Icon,"write_eeprom.png"); ad->setWindowIcon(Icon); ad->show(); } diff --git a/companion/src/modeledit/curves.cpp b/companion/src/modeledit/curves.cpp index b997a964c..428435928 100644 --- a/companion/src/modeledit/curves.cpp +++ b/companion/src/modeledit/curves.cpp @@ -84,9 +84,8 @@ Curves::Curves(QWidget * parent, ModelData & model): QGraphicsScene *scene = new QGraphicsScene(ui->curvePreview); scene->setItemIndexMethod(QGraphicsScene::NoIndex); ui->curvePreview->setScene(scene); - QString Theme=getTheme(); QIcon ClearIcon; - populate_icon(&ClearIcon,Theme,"clear.png"); + populate_icon(&ClearIcon,"clear.png"); for (int i=0; igetCapability(NumCurves); i++) { visibleCurves[i] = false; diff --git a/companion/src/modeledit/customfunctions.cpp b/companion/src/modeledit/customfunctions.cpp index ebccf06c8..23e6a1e28 100644 --- a/companion/src/modeledit/customfunctions.cpp +++ b/companion/src/modeledit/customfunctions.cpp @@ -123,9 +123,8 @@ CustomFunctionsPanel::CustomFunctionsPanel(QWidget * parent, ModelData & model, connect(fswtchParamArmT[i], SIGNAL(editTextChanged ( const QString)), this, SLOT(customFunctionEdited())); #ifdef PHONON - QString Theme=getTheme(); QIcon PlayIcon; - populate_icon(&PlayIcon,Theme,"play.png"); + populate_icon(&PlayIcon,"play.png"); playBT[i] = new QPushButton(this); playBT[i]->setObjectName(QString("play_%1").arg(i)); playBT[i]->setIcon(PlayIcon); @@ -163,9 +162,8 @@ void CustomFunctionsPanel::mediaPlayer_state(Phonon::State newState, Phonon::Sta { if (phononLock) return; - QString Theme=getTheme(); QIcon PlayIcon; - populate_icon(&PlayIcon,Theme,"play.png"); + populate_icon(&PlayIcon,"play.png"); phononLock=true; if ((newState==Phonon::StoppedState || newState==Phonon::PausedState) && oldState==Phonon::PlayingState) { @@ -196,12 +194,11 @@ void CustomFunctionsPanel::playMusic() QPushButton *playButton = qobject_cast(sender()); int index=playButton->objectName().mid(5,2).toInt(); QString function=playButton->objectName().left(4); - QString Theme=getTheme(); QSettings settings("companion", "companion"); QIcon PlayIcon; - populate_icon(&PlayIcon,Theme,"play.png"); + populate_icon(&PlayIcon,"play.png"); QIcon StopIcon; - populate_icon(&StopIcon,Theme,"stop.png"); + populate_icon(&StopIcon,"stop.png"); QString path=settings.value("sdPath", ".").toString(); QDir qd(path); @@ -470,15 +467,14 @@ void CustomFunctionsPanel::fsw_customContextMenuRequested(QPoint pos) { QLabel *label = (QLabel *)sender(); selectedFunction = label->property("index").toInt(); - QString Theme=getTheme(); QIcon ClearIcon; - populate_icon(&ClearIcon,Theme,"clear.png"); + populate_icon(&ClearIcon,"clear.png"); QIcon CopyIcon; - populate_icon(&CopyIcon,Theme,"copy.png"); + populate_icon(&CopyIcon,"copy.png"); QIcon CutIcon; - populate_icon(&CutIcon,Theme,"cut.png"); + populate_icon(&CutIcon,"cut.png"); QIcon PasteIcon; - populate_icon(&PasteIcon,Theme,"paste.png"); + populate_icon(&PasteIcon,"paste.png"); QPoint globalPos = label->mapToGlobal(pos); diff --git a/companion/src/modeledit/customswitches.cpp b/companion/src/modeledit/customswitches.cpp index 8c2adf2c5..852ae8410 100644 --- a/companion/src/modeledit/customswitches.cpp +++ b/companion/src/modeledit/customswitches.cpp @@ -382,15 +382,14 @@ void CustomSwitchesPanel::csw_customContextMenuRequested(QPoint pos) { QLabel *label = (QLabel *)sender(); selectedSwitch = label->property("index").toInt(); - QString Theme=getTheme(); QIcon ClearIcon; - populate_icon(&ClearIcon,Theme,"clear.png"); + populate_icon(&ClearIcon,"clear.png"); QIcon CopyIcon; - populate_icon(&CopyIcon,Theme,"copy.png"); + populate_icon(&CopyIcon,"copy.png"); QIcon CutIcon; - populate_icon(&CutIcon,Theme,"cut.png"); + populate_icon(&CutIcon,"cut.png"); QIcon PasteIcon; - populate_icon(&PasteIcon,Theme,"paste.png"); + populate_icon(&PasteIcon,"paste.png"); QPoint globalPos = label->mapToGlobal(pos); diff --git a/companion/src/modeledit/inputs.cpp b/companion/src/modeledit/inputs.cpp index c8ac71c59..efab606b9 100644 --- a/companion/src/modeledit/inputs.cpp +++ b/companion/src/modeledit/inputs.cpp @@ -17,17 +17,17 @@ InputsPanel::InputsPanel(QWidget *parent, ModelData & model, GeneralSettings & g QPushButton * qbDown = new QPushButton(this); QPushButton * qbClear = new QPushButton(this); QIcon qbUpIcon; - populate_icon(&qbUpIcon,Theme,"moveup.png"); + populate_icon(&qbUpIcon,"moveup.png"); qbUp->setText(tr("Move Up")); qbUp->setIcon(qbUpIcon); qbUp->setShortcut(QKeySequence(tr("Ctrl+Up"))); QIcon qbDownIcon; - populate_icon(&qbDownIcon,Theme,"movedown.png"); + populate_icon(&qbDownIcon,"movedown.png"); qbDown->setText(tr("Move Down")); qbDown->setIcon(qbDownIcon); qbDown->setShortcut(QKeySequence(tr("Ctrl+Down"))); QIcon qbClearIcon; - populate_icon(&qbClearIcon,Theme,"clear.png"); + populate_icon(&qbClearIcon,"clear.png"); qbClear->setText(tr("Clear Expo Settings")); qbClear->setIcon(qbClearIcon); @@ -348,25 +348,24 @@ void InputsPanel::expoAdd() void InputsPanel::expolistWidget_customContextMenuRequested(QPoint pos) { - QString Theme=getTheme(); QIcon AddIcon; - populate_icon(&AddIcon,Theme,"add.png"); + populate_icon(&AddIcon,"add.png"); QIcon EditIcon; - populate_icon(&EditIcon,Theme,"edit.png"); + populate_icon(&EditIcon,"edit.png"); QIcon ClearIcon; - populate_icon(&ClearIcon,Theme,"clear.png"); + populate_icon(&ClearIcon,"clear.png"); QIcon CopyIcon; - populate_icon(&CopyIcon,Theme,"copy.png"); + populate_icon(&CopyIcon,"copy.png"); QIcon CutIcon; - populate_icon(&CutIcon,Theme,"cut.png"); + populate_icon(&CutIcon,"cut.png"); QIcon PasteIcon; - populate_icon(&PasteIcon,Theme,"paste.png"); + populate_icon(&PasteIcon,"paste.png"); QIcon DuplicateIcon; - populate_icon(&DuplicateIcon,Theme,"duplicate.png"); + populate_icon(&DuplicateIcon,"duplicate.png"); QIcon MoveUpIcon; - populate_icon(&MoveUpIcon,Theme,"moveup.png"); + populate_icon(&MoveUpIcon,"moveup.png"); QIcon MoveDownIcon; - populate_icon(&MoveDownIcon,Theme,"movedown.png"); + populate_icon(&MoveDownIcon,"movedown.png"); QPoint globalPos = ExposlistWidget->mapToGlobal(pos); const QClipboard *clipboard = QApplication::clipboard(); diff --git a/companion/src/modeledit/mixes.cpp b/companion/src/modeledit/mixes.cpp index 5f6cc74a6..4defde10f 100644 --- a/companion/src/modeledit/mixes.cpp +++ b/companion/src/modeledit/mixes.cpp @@ -14,20 +14,18 @@ MixesPanel::MixesPanel(QWidget *parent, ModelData & model, GeneralSettings & gen QPushButton * qbUp = new QPushButton(this); QPushButton * qbDown = new QPushButton(this); QPushButton * qbClear = new QPushButton(this); - - QString Theme=getTheme(); QIcon qbUpIcon; - populate_icon(&qbUpIcon,Theme,"moveup.png"); + populate_icon(&qbUpIcon,"moveup.png"); qbUp->setText(tr("Move Up")); qbUp->setIcon(qbUpIcon); qbUp->setShortcut(QKeySequence(tr("Ctrl+Up"))); QIcon qbDownIcon; - populate_icon(&qbDownIcon,Theme,"movedown.png"); + populate_icon(&qbDownIcon,"movedown.png"); qbDown->setText(tr("Move Down")); qbDown->setIcon(qbDownIcon); qbDown->setShortcut(QKeySequence(tr("Ctrl+Down"))); QIcon qbClearIcon; - populate_icon(&qbClearIcon,Theme,"clear.png"); + populate_icon(&qbClearIcon,"clear.png"); qbClear->setText(tr("Clear Mixes")); qbClear->setIcon(qbClearIcon); @@ -413,25 +411,24 @@ void MixesPanel::mixerAdd() void MixesPanel::mixerlistWidget_customContextMenuRequested(QPoint pos) { - QString Theme=getTheme(); QIcon AddIcon; - populate_icon(&AddIcon,Theme,"add.png"); + populate_icon(&AddIcon,"add.png"); QIcon EditIcon; - populate_icon(&EditIcon,Theme,"edit.png"); + populate_icon(&EditIcon,"edit.png"); QIcon ClearIcon; - populate_icon(&ClearIcon,Theme,"clear.png"); + populate_icon(&ClearIcon,"clear.png"); QIcon CopyIcon; - populate_icon(&CopyIcon,Theme,"copy.png"); + populate_icon(&CopyIcon,"copy.png"); QIcon CutIcon; - populate_icon(&CutIcon,Theme,"cut.png"); + populate_icon(&CutIcon,"cut.png"); QIcon PasteIcon; - populate_icon(&PasteIcon,Theme,"paste.png"); + populate_icon(&PasteIcon,"paste.png"); QIcon DuplicateIcon; - populate_icon(&DuplicateIcon,Theme,"duplicate.png"); + populate_icon(&DuplicateIcon,"duplicate.png"); QIcon MoveUpIcon; - populate_icon(&MoveUpIcon,Theme,"moveup.png"); + populate_icon(&MoveUpIcon,"moveup.png"); QIcon MoveDownIcon; - populate_icon(&MoveDownIcon,Theme,"movedown.png"); + populate_icon(&MoveDownIcon,"movedown.png"); QPoint globalPos = MixerlistWidget->mapToGlobal(pos); const QClipboard *clipboard = QApplication::clipboard(); diff --git a/companion/src/modeledit/modeledit.cpp b/companion/src/modeledit/modeledit.cpp index ec6d76ab8..6b7d42004 100644 --- a/companion/src/modeledit/modeledit.cpp +++ b/companion/src/modeledit/modeledit.cpp @@ -21,11 +21,10 @@ ModelEdit::ModelEdit(RadioData & radioData, int modelId, bool openWizard, bool i generalSettings(generalSettings) { ui->setupUi(this); - QString Theme=getTheme(); QSettings settings("companion", "companion"); restoreGeometry(settings.value("modelEditGeometry").toByteArray()); QIcon SimulateIcon; - populate_icon(&SimulateIcon,Theme,"simulate.png"); + populate_icon(&SimulateIcon,"simulate.png"); ui->pushButton->setIcon(SimulateIcon); addTab(new Setup(this, model), tr("Setup")); addTab(new HeliPanel(this, model), tr("Heli")); diff --git a/companion/src/modelslist.cpp b/companion/src/modelslist.cpp index b96925020..9b19c5ccc 100644 --- a/companion/src/modelslist.cpp +++ b/companion/src/modelslist.cpp @@ -83,31 +83,30 @@ void ModelsListWidget::ShowContextMenu(const QPoint& pos) const QClipboard *clipboard = QApplication::clipboard(); const QMimeData *mimeData = clipboard->mimeData(); bool hasData = mimeData->hasFormat("application/x-companion9x"); - QString Theme=getTheme(); QIcon AddIcon; - populate_icon(&AddIcon,Theme,"add.png"); + populate_icon(&AddIcon,"add.png"); QIcon EditIcon; - populate_icon(&EditIcon,Theme,"edit.png"); + populate_icon(&EditIcon,"edit.png"); QIcon OpenIcon; - populate_icon(&OpenIcon,Theme,"open.png"); + populate_icon(&OpenIcon,"open.png"); QIcon WizardIcon; - populate_icon(&WizardIcon,Theme,"wizard.png"); + populate_icon(&WizardIcon,"wizard.png"); QIcon ClearIcon; - populate_icon(&ClearIcon,Theme,"clear.png"); + populate_icon(&ClearIcon,"clear.png"); QIcon CopyIcon; - populate_icon(&CopyIcon,Theme,"copy.png"); + populate_icon(&CopyIcon,"copy.png"); QIcon CutIcon; - populate_icon(&CutIcon,Theme,"cut.png"); + populate_icon(&CutIcon,"cut.png"); QIcon PasteIcon; - populate_icon(&PasteIcon,Theme,"paste.png"); + populate_icon(&PasteIcon,"paste.png"); QIcon DuplicateIcon; - populate_icon(&DuplicateIcon,Theme,"duplicate.png"); + populate_icon(&DuplicateIcon,"duplicate.png"); QIcon CurrentModelIcon; - populate_icon(&CurrentModelIcon,Theme,"currentmodel.png"); + populate_icon(&CurrentModelIcon,"currentmodel.png"); QIcon PrintIcon; - populate_icon(&PrintIcon,Theme,"print.png"); + populate_icon(&PrintIcon,"print.png"); QIcon SimulateIcon; - populate_icon(&SimulateIcon,Theme,"simulate.png"); + populate_icon(&SimulateIcon,"simulate.png"); QMenu contextMenu; contextMenu.addAction(EditIcon, tr("&Edit"),this,SLOT(OpenEditWindow())); diff --git a/companion/src/preferencesdialog.cpp b/companion/src/preferencesdialog.cpp index 625934292..73b6d3d8a 100644 --- a/companion/src/preferencesdialog.cpp +++ b/companion/src/preferencesdialog.cpp @@ -17,15 +17,14 @@ preferencesDialog::preferencesDialog(QWidget *parent) : updateLock(false) { ui->setupUi(this); - QString Theme=getTheme(); QIcon Icon; - populate_icon(&Icon, Theme, "preferences.png"); + populate_icon(&Icon,"preferences.png"); this->setWindowIcon(Icon); QIcon LibraryIcon; - populate_icon(&LibraryIcon, Theme, "library.png"); + populate_icon(&LibraryIcon,"library.png"); ui->splashLibraryButton->setIcon(LibraryIcon); QIcon ClearIcon; - populate_icon(&ClearIcon, Theme, "clear.png"); + populate_icon(&ClearIcon,"clear.png"); ui->clearImageButton->setIcon(ClearIcon); QCheckBox * OptionCheckBox[]= { diff --git a/companion/src/preferencesdialog.ui b/companion/src/preferencesdialog.ui index c05efb26a..7160c715b 100644 --- a/companion/src/preferencesdialog.ui +++ b/companion/src/preferencesdialog.ui @@ -7,7 +7,7 @@ 0 0 685 - 766 + 764
@@ -35,6 +35,79 @@ 4 + + + + + + true + + + + + + + Open Folder + + + + + + + auto backup before write + + + + + + + + + + 0 + 0 + + + + Show Splash At Start + + + + + + + + + Enable + + + + + + + + 0 + 0 + + + + + + + + Calibrate + + + + + + + + + Automatic Backup Folder + + + @@ -78,14 +151,14 @@ - + Qt::Horizontal - + @@ -101,31 +174,7 @@ - - - - - - Check for updates on startup - - - true - - - - - - - Check for selected Fw updates - - - true - - - - - - + @@ -180,17 +229,14 @@ - - - - + Remember switches in simulator - + @@ -219,7 +265,7 @@ - + 6 @@ -256,7 +302,7 @@
- + Simulator capture folder @@ -276,7 +322,7 @@ - + @@ -420,7 +466,7 @@ This is used by the templated to determine which channel goes to what number out - + @@ -433,35 +479,7 @@ This is used by the templated to determine which channel goes to what number out - - - - - - Enable - - - - - - - - 0 - 0 - - - - - - - - Calibrate - - - - - - + 1 @@ -485,7 +503,7 @@ This is used by the templated to determine which channel goes to what number out
- + @@ -509,7 +527,7 @@ This is used by the templated to determine which channel goes to what number out - + @@ -522,7 +540,7 @@ This is used by the templated to determine which channel goes to what number out - + @@ -565,7 +583,7 @@ This is used by the templated to determine which channel goes to what number out - + @@ -592,7 +610,7 @@ This is used by the templated to determine which channel goes to what number out - + @@ -640,7 +658,7 @@ This is used by the templated to determine which channel goes to what number out - + 1 @@ -671,7 +689,7 @@ This is used by the templated to determine which channel goes to what number out
- + @@ -684,7 +702,7 @@ This is used by the templated to determine which channel goes to what number out - + @@ -700,7 +718,7 @@ This is used by the templated to determine which channel goes to what number out - + Mode selection: @@ -749,58 +767,13 @@ Mode 4: - - - - 0 - 0 - - - - Joystick - - - - Profile slot - - - - Automatic Backup Folder - - - - - - - - - true - - - - - - - Open Folder - - - - - - - auto backup before write - - - - - - + Qt::Vertical @@ -816,7 +789,7 @@ Mode 4: - + @@ -843,7 +816,7 @@ Mode 4: - + QLayout::SetMaximumSize @@ -934,7 +907,7 @@ May be different from firmware language
- + @@ -987,14 +960,14 @@ May be different from firmware language - + Qt::Horizontal - + QLayout::SetMaximumSize @@ -1547,45 +1520,7 @@ May be different from firmware language - - - - - - true - - - - - - - Find Executable - - - - - - - - - Google Earth Executable - - - - - - - - 0 - 0 - - - - Show Splash At Start - - - - + @@ -1598,7 +1533,7 @@ May be different from firmware language - + @@ -1618,17 +1553,10 @@ May be different from firmware language - + - - - - - - true - - + @@ -1645,6 +1573,9 @@ May be different from firmware language + + + Theme @@ -1652,6 +1583,9 @@ May be different from firmware language + + Requires restart + Classic @@ -1682,6 +1616,9 @@ May be different from firmware language + + + Icon size @@ -1689,6 +1626,9 @@ May be different from firmware language + + Requires restart + Small @@ -1713,10 +1653,94 @@ May be different from firmware language + + + + + + + + + true + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Check for updates on startup + + + true + + + + + + + Check for selected Fw updates + + + true + + + + + + + + + + 0 + 0 + + + + Joystick + + + + + + + Google Earth Executable + + + + + + + + + true + + + + + + + Find Executable + + + + + - locale_QB InvertPixels clearImageButton SplashFileName diff --git a/companion/src/splashlibrary.cpp b/companion/src/splashlibrary.cpp index 4d0c0b111..e8a1a4090 100644 --- a/companion/src/splashlibrary.cpp +++ b/companion/src/splashlibrary.cpp @@ -9,11 +9,10 @@ splashLibrary::splashLibrary(QWidget *parent, QString * fileName) : QDialog(parent), ui(new Ui::splashLibrary) { splashFileName = fileName; ui->setupUi(this); - QString Theme=getTheme(); QIcon NextIcon; - populate_icon(&NextIcon,Theme,"arrow-right.png"); + populate_icon(&NextIcon,"arrow-right.png"); QIcon PrevIcon; - populate_icon(&PrevIcon,Theme,"arrow-left.png"); + populate_icon(&PrevIcon,"arrow-left.png"); ui->nextPage->setIcon(NextIcon); ui->prevPage->setIcon(PrevIcon); page = 0; From a3e459114448f823f31bd947f390945c20ecbfce Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Mon, 20 Jan 2014 12:58:28 +0100 Subject: [PATCH 195/308] Fixes #567 --- companion/src/modeledit/modeledit.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/companion/src/modeledit/modeledit.cpp b/companion/src/modeledit/modeledit.cpp index d5417e8ea..169b32378 100644 --- a/companion/src/modeledit/modeledit.cpp +++ b/companion/src/modeledit/modeledit.cpp @@ -17,7 +17,7 @@ ModelEdit::ModelEdit(RadioData & radioData, int modelId, bool openWizard, bool i ui(new Ui::ModelEdit), modelId(modelId), model(radioData.models[modelId]), - generalSettings(generalSettings) + generalSettings(radioData.generalSettings) { ui->setupUi(this); QSettings settings("companion", "companion"); @@ -32,7 +32,6 @@ ModelEdit::ModelEdit(RadioData & radioData, int modelId, bool openWizard, bool i if (GetEepromInterface()->getCapability(CustomFunctions)) addTab(new CustomFunctionsPanel(this, model, radioData.generalSettings), tr("Assignable Functions")); addTab(new Curves(this, model), tr("Curves")); - // TODO remove this capability if (!GetEepromInterface()->getCapability(FSSwitch)) if (GetEepromInterface()->getCapability(Telemetry) & TM_HASTELEMETRY) addTab(new TelemetryPanel(this, model), tr("Telemetry")); } @@ -44,8 +43,8 @@ ModelEdit::~ModelEdit() void ModelEdit::closeEvent(QCloseEvent *event) { - QSettings settings("companion", "companion"); - settings.setValue("modelEditGeometry", saveGeometry()); + QSettings settings("companion", "companion"); + settings.setValue("modelEditGeometry", saveGeometry()); } class VerticalScrollArea : public QScrollArea From 1a00145b1d1e72123248d887e555f25fc01d1671 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Mon, 20 Jan 2014 13:47:42 +0100 Subject: [PATCH 196/308] A couple of other fixes --- companion/src/eeprominterface.h | 1 - companion/src/firmwares/opentx/opentxinterface.cpp | 2 -- companion/src/modeledit/expodialog.cpp | 2 ++ companion/src/modeledit/mixerdialog.cpp | 14 ++++++++------ 4 files changed, 10 insertions(+), 9 deletions(-) diff --git a/companion/src/eeprominterface.h b/companion/src/eeprominterface.h index 3ae13a13b..e01e89bd9 100644 --- a/companion/src/eeprominterface.h +++ b/companion/src/eeprominterface.h @@ -996,7 +996,6 @@ enum Capability { HasStickScroll, HasSoundMixer, NumModules, - FSSwitch, PPMCenter, SYMLimits, HasCurrentCalibration, diff --git a/companion/src/firmwares/opentx/opentxinterface.cpp b/companion/src/firmwares/opentx/opentxinterface.cpp index a0917d9b6..4cb383458 100644 --- a/companion/src/firmwares/opentx/opentxinterface.cpp +++ b/companion/src/firmwares/opentx/opentxinterface.cpp @@ -602,8 +602,6 @@ int Open9xInterface::getCapability(const Capability capability) return 1; case DSM2Indexes: return 1; - case FSSwitch: - return 1; case MixesWithoutExpo: return 1; case NumCurves: diff --git a/companion/src/modeledit/expodialog.cpp b/companion/src/modeledit/expodialog.cpp index d632777df..2dc60593b 100644 --- a/companion/src/modeledit/expodialog.cpp +++ b/companion/src/modeledit/expodialog.cpp @@ -62,6 +62,8 @@ ExpoDialog::ExpoDialog(QWidget *parent, ModelData & model, ExpoData *expoData, i ui->trimCB->hide(); } + ui->trimCB->setCurrentIndex(1 - ed->carryTrim); + int expolength = GetEepromInterface()->getCapability(HasExpoNames); if (!expolength) { ui->lineNameLabel->hide(); diff --git a/companion/src/modeledit/mixerdialog.cpp b/companion/src/modeledit/mixerdialog.cpp index 6d527b6d6..5b34c7406 100644 --- a/companion/src/modeledit/mixerdialog.cpp +++ b/companion/src/modeledit/mixerdialog.cpp @@ -45,14 +45,19 @@ MixerDialog::MixerDialog(QWidget *parent, MixData *mixdata, int stickMode) : ui->trimCB->addItem(tr("Thr"), 3); ui->trimCB->addItem(tr("Ail"), 4); - ui->trimCB->setCurrentIndex((-md->carryTrim)+1); - int namelength=GetEepromInterface()->getCapability(HasMixerNames); + ui->trimCB->setCurrentIndex(1 - md->carryTrim); + + int namelength = GetEepromInterface()->getCapability(HasMixerNames); if (!namelength) { ui->label_name->hide(); ui->mixerName->hide(); - } else { + } + else { ui->mixerName->setMaxLength(namelength); } + ui->mixerName->setValidator(new QRegExpValidator(rx, this)); + ui->mixerName->setText(md->name); + if (!GetEepromInterface()->getCapability(FlightPhases)) { ui->label_phases->hide(); for (int i=0; i<9; i++) { @@ -74,9 +79,6 @@ MixerDialog::MixerDialog(QWidget *parent, MixData *mixdata, int stickMode) : } } - ui->mixerName->setValidator(new QRegExpValidator(rx, this)); - ui->mixerName->setText(md->name); - populateSwitchCB(ui->switchesCB,md->swtch); ui->warningCB->setCurrentIndex(md->mixWarn); ui->mltpxCB->setCurrentIndex(md->mltpx); From 0d394ca7c6bb492e5540352564c3088db9c9533e Mon Sep 17 00:00:00 2001 From: Romolo Manfredini Date: Mon, 20 Jan 2014 14:42:22 +0100 Subject: [PATCH 197/308] References to companion9x were still present --- companion/src/comparedialog.cpp | 12 +++++----- companion/src/contributorsdialog.cpp | 2 +- .../src/firmwares/opentx/opentxinterface.cpp | 10 ++++----- companion/src/mainwindow.cpp | 2 +- companion/src/modeledit/curves.cpp | 4 ++-- companion/src/modeledit/customfunctions.cpp | 8 +++---- companion/src/modeledit/customswitches.cpp | 8 +++---- companion/src/modeledit/expodialog.ui | 6 ++--- companion/src/modeledit/inputs.cpp | 12 +++++----- companion/src/modeledit/mixerdialog.ui | 6 ++--- companion/src/modeledit/mixerslist.cpp | 4 ++-- companion/src/modeledit/mixes.cpp | 12 +++++----- companion/src/modelslist.cpp | 22 +++++++++---------- companion/src/preferencesdialog.cpp | 4 ++-- 14 files changed, 56 insertions(+), 56 deletions(-) diff --git a/companion/src/comparedialog.cpp b/companion/src/comparedialog.cpp index f12c182b2..7c7436e99 100644 --- a/companion/src/comparedialog.cpp +++ b/companion/src/comparedialog.cpp @@ -48,7 +48,7 @@ compareDialog::compareDialog(QWidget *parent, GeneralSettings *gg) : void compareDialog::dragMoveEvent(QDragMoveEvent *event) { - if (event->mimeData()->hasFormat("application/x-companion9x")) { + if (event->mimeData()->hasFormat("application/x-companion")) { event->acceptProposedAction(); } else { event->ignore(); @@ -58,7 +58,7 @@ void compareDialog::dragMoveEvent(QDragMoveEvent *event) void compareDialog::dragEnterEvent(QDragEnterEvent *event) { // accept just text/uri-list mime format - if (event->mimeData()->hasFormat("application/x-companion9x")) { + if (event->mimeData()->hasFormat("application/x-companion")) { event->acceptProposedAction(); } else { event->ignore(); @@ -95,8 +95,8 @@ void compareDialog::dropEvent(QDropEvent *event) const QMimeData *mimeData = event->mimeData(); if (child) { if (child->objectName().contains("label_1")) { - if(mimeData->hasFormat("application/x-companion9x")) { - QByteArray gmData = mimeData->data("application/x-companion9x"); + if(mimeData->hasFormat("application/x-companion")) { + QByteArray gmData = mimeData->data("application/x-companion"); DragDropHeader *header = (DragDropHeader *)gmData.data(); if (!header->general_settings) { char *gData = gmData.data()+sizeof(DragDropHeader);//new char[gmData.size() + 1]; @@ -120,8 +120,8 @@ void compareDialog::dropEvent(QDropEvent *event) } } else if (child->objectName().contains("label_2")) { - if(mimeData->hasFormat("application/x-companion9x")) { - QByteArray gmData = mimeData->data("application/x-companion9x"); + if(mimeData->hasFormat("application/x-companion")) { + QByteArray gmData = mimeData->data("application/x-companion"); DragDropHeader *header = (DragDropHeader *)gmData.data(); if (!header->general_settings) { char *gData = gmData.data()+sizeof(DragDropHeader);//new char[gmData.size() + 1]; diff --git a/companion/src/contributorsdialog.cpp b/companion/src/contributorsdialog.cpp index 598076771..a13e15b45 100644 --- a/companion/src/contributorsdialog.cpp +++ b/companion/src/contributorsdialog.cpp @@ -82,7 +82,7 @@ contributorsDialog::contributorsDialog(QWidget *parent, int contest, QString rnu ui->textEditor->setHtml(file.readAll()); } ui->textEditor->scroll(0,0); - this->setWindowTitle(tr("Companion9x Release Notes")); + this->setWindowTitle(tr("Companion Release Notes")); } break; case 2:{ diff --git a/companion/src/firmwares/opentx/opentxinterface.cpp b/companion/src/firmwares/opentx/opentxinterface.cpp index 4cb383458..b4a0294f3 100644 --- a/companion/src/firmwares/opentx/opentxinterface.cpp +++ b/companion/src/firmwares/opentx/opentxinterface.cpp @@ -309,7 +309,7 @@ bool Open9xInterface::load(RadioData &radioData, uint8_t *eeprom, int size) std::cout << " wrong size (" << size << ")\n"; return false; } else { - QMessageBox::warning(NULL,"companion9x", QObject::tr("Your radio probably uses a wrong firmware,\n eeprom size is 4096 but only the first 2048 are used")); + QMessageBox::warning(NULL,"companion", QObject::tr("Your radio probably uses a wrong firmware,\n eeprom size is 4096 but only the first 2048 are used")); size=2048; } } else { @@ -945,7 +945,7 @@ bool Open9xInterface::loadBackup(RadioData &radioData, uint8_t *eeprom, int esiz QString geturl( int board) { QString url="http://"; - QSettings settings("companion9x", "companion9x"); + QSettings settings("companion", "companion"); int server = settings.value("fwserver", 0).toInt(); if (server >= o9xservers.count()) { server = 0; @@ -973,7 +973,7 @@ QString geturl( int board) QString getstamp( int board) { QString url="http://"; - QSettings settings("companion9x", "companion9x"); + QSettings settings("companion", "companion"); int server = settings.value("fwserver",0).toInt(); if (server >=o9xservers.count()) { server=0; @@ -1008,7 +1008,7 @@ QString getstamp( int board) QString getrnurl( int board) { QString url="http://"; - QSettings settings("companion9x", "companion9x"); + QSettings settings("companion", "companion"); int server = settings.value("fwserver",0).toInt(); if (server >=o9xservers.count()) { server=0; @@ -1239,7 +1239,7 @@ void RegisterOpen9xFirmwares() open9x->addOptions(fai_options); firmwares.push_back(open9x); - QSettings settings("companion9x", "companion9x"); + QSettings settings("companion", "companion"); int rev4a = settings.value("rev4asupport",0).toInt(); if (rev4a) { open9x = new Open9xFirmware("opentx-taranisrev4a", QObject::tr("openTx for FrSky Taranis Rev4a"), new Open9xInterface(BOARD_TARANIS_REV4a), geturl(BOARD_TARANIS_REV4a), getstamp(BOARD_TARANIS_REV4a),getrnurl(BOARD_TARANIS), true); diff --git a/companion/src/mainwindow.cpp b/companion/src/mainwindow.cpp index 4a5e0aa97..1268265f1 100644 --- a/companion/src/mainwindow.cpp +++ b/companion/src/mainwindow.cpp @@ -2090,7 +2090,7 @@ void MainWindow::readSettings() { QSettings settings("companion", "companion"); restoreState(settings.value("mainWindowState").toByteArray()); - checkCompanion9x = settings.value("startup_check_companion9x", true).toBool(); + checkCompanion9x = settings.value("startup_check_companion", true).toBool(); checkFW = settings.value("startup_check_fw", true).toBool(); MaxRecentFiles =settings.value("history_size",10).toInt(); ActiveProfile=settings.value("activeprofile",0).toInt(); diff --git a/companion/src/modeledit/curves.cpp b/companion/src/modeledit/curves.cpp index 428435928..5f90ebfdb 100644 --- a/companion/src/modeledit/curves.cpp +++ b/companion/src/modeledit/curves.cpp @@ -154,7 +154,7 @@ void Curves::resetCurve() { QPushButton *button = (QPushButton *)sender(); int index = button->property("index").toInt(); - int res = QMessageBox::question(this, "companion9x", tr("Are you sure you want to reset curve %1 ?").arg(index+1), QMessageBox::Yes | QMessageBox::No); + int res = QMessageBox::question(this, "companion", tr("Are you sure you want to reset curve %1 ?").arg(index+1), QMessageBox::Yes | QMessageBox::No); if (res == QMessageBox::Yes) { model.curves[index].clear(5); update(); @@ -364,7 +364,7 @@ void Curves::on_curvetype_CB_currentIndexChanged(int index) int fwpoints = GetEepromInterface()->getCapability(NumCurvePoints); if (fwpoints!=0) { if (fwpoints < totalpoints) { - QMessageBox::warning(this, "companion9x", tr("Not enough free points in EEPROM to store the curve.")); + QMessageBox::warning(this, "companion", tr("Not enough free points in EEPROM to store the curve.")); updateCurveType(); lock = false; return; diff --git a/companion/src/modeledit/customfunctions.cpp b/companion/src/modeledit/customfunctions.cpp index 23e6a1e28..8345f4306 100644 --- a/companion/src/modeledit/customfunctions.cpp +++ b/companion/src/modeledit/customfunctions.cpp @@ -425,8 +425,8 @@ void CustomFunctionsPanel::fswPaste() { const QClipboard *clipboard = QApplication::clipboard(); const QMimeData *mimeData = clipboard->mimeData(); - if (mimeData->hasFormat("application/x-companion9x-fsw")) { - QByteArray fswData = mimeData->data("application/x-companion9x-fsw"); + if (mimeData->hasFormat("application/x-companion-fsw")) { + QByteArray fswData = mimeData->data("application/x-companion-fsw"); FuncSwData *fsw = &model.funcSw[selectedFunction]; memcpy(fsw, fswData.mid(0, sizeof(FuncSwData)).constData(), sizeof(FuncSwData)); @@ -453,7 +453,7 @@ void CustomFunctionsPanel::fswCopy() QByteArray fswData; fswData.append((char*)&model.funcSw[selectedFunction],sizeof(FuncSwData)); QMimeData *mimeData = new QMimeData; - mimeData->setData("application/x-companion9x-fsw", fswData); + mimeData->setData("application/x-companion-fsw", fswData); QApplication::clipboard()->setMimeData(mimeData,QClipboard::Clipboard); } @@ -480,7 +480,7 @@ void CustomFunctionsPanel::fsw_customContextMenuRequested(QPoint pos) const QClipboard *clipboard = QApplication::clipboard(); const QMimeData *mimeData = clipboard->mimeData(); - bool hasData = mimeData->hasFormat("application/x-companion9x-fsw"); + bool hasData = mimeData->hasFormat("application/x-companion-fsw"); QMenu contextMenu; contextMenu.addAction(ClearIcon, tr("&Delete"),this,SLOT(fswDelete()),tr("Delete")); diff --git a/companion/src/modeledit/customswitches.cpp b/companion/src/modeledit/customswitches.cpp index 852ae8410..883b9f60d 100644 --- a/companion/src/modeledit/customswitches.cpp +++ b/companion/src/modeledit/customswitches.cpp @@ -337,8 +337,8 @@ void CustomSwitchesPanel::cswPaste() { const QClipboard *clipboard = QApplication::clipboard(); const QMimeData *mimeData = clipboard->mimeData(); - if (mimeData->hasFormat("application/x-companion9x-csw")) { - QByteArray cswData = mimeData->data("application/x-companion9x-csw"); + if (mimeData->hasFormat("application/x-companion-csw")) { + QByteArray cswData = mimeData->data("application/x-companion-csw"); CustomSwData *csw = &model.customSw[selectedSwitch]; memcpy(csw, cswData.mid(0, sizeof(CustomSwData)).constData(), sizeof(CustomSwData)); @@ -359,7 +359,7 @@ void CustomSwitchesPanel::cswCopy() QByteArray cswData; cswData.append((char*)&model.customSw[selectedSwitch],sizeof(CustomSwData)); QMimeData *mimeData = new QMimeData; - mimeData->setData("application/x-companion9x-csw", cswData); + mimeData->setData("application/x-companion-csw", cswData); QApplication::clipboard()->setMimeData(mimeData,QClipboard::Clipboard); } @@ -395,7 +395,7 @@ void CustomSwitchesPanel::csw_customContextMenuRequested(QPoint pos) const QClipboard *clipboard = QApplication::clipboard(); const QMimeData *mimeData = clipboard->mimeData(); - bool hasData = mimeData->hasFormat("application/x-companion9x-csw"); + bool hasData = mimeData->hasFormat("application/x-companion-csw"); QMenu contextMenu; contextMenu.addAction(ClearIcon, tr("&Delete"),this,SLOT(cswDelete()),tr("Delete")); diff --git a/companion/src/modeledit/expodialog.ui b/companion/src/modeledit/expodialog.ui index bfe43b1ec..67f8f92ce 100644 --- a/companion/src/modeledit/expodialog.ui +++ b/companion/src/modeledit/expodialog.ui @@ -7,7 +7,7 @@ 0 0 370 - 331 + 356 @@ -26,7 +26,7 @@ - + :/icon.png:/icon.png @@ -442,7 +442,7 @@ p, li { white-space: pre-wrap; } - + diff --git a/companion/src/modeledit/inputs.cpp b/companion/src/modeledit/inputs.cpp index efab606b9..74e5f9745 100644 --- a/companion/src/modeledit/inputs.cpp +++ b/companion/src/modeledit/inputs.cpp @@ -143,7 +143,7 @@ void InputsPanel::update() bool InputsPanel::gm_insertExpo(int idx) { if (idx<0 || idx>=C9X_MAX_EXPOS || model.expoData[C9X_MAX_EXPOS-1].mode > 0) { - QMessageBox::information(this, "companion9x", tr("Not enough available expos!")); + QMessageBox::information(this, "companion", tr("Not enough available expos!")); return false; } @@ -222,7 +222,7 @@ void InputsPanel::exposDelete(bool ask) QMessageBox::StandardButton ret = QMessageBox::No; if(ask) - ret = QMessageBox::warning(this, "companion9x", + ret = QMessageBox::warning(this, "companion", tr("Delete Selected Expos?"), QMessageBox::Yes | QMessageBox::No); @@ -250,7 +250,7 @@ void InputsPanel::exposCopy() } QMimeData *mimeData = new QMimeData; - mimeData->setData("application/x-companion9x-expo", mxData); + mimeData->setData("application/x-companion-expo", mxData); QApplication::clipboard()->setMimeData(mimeData,QClipboard::Clipboard); } @@ -264,7 +264,7 @@ void InputsPanel::mimeExpoDropped(int index, const QMimeData *data, Qt::DropActi #include void InputsPanel::pasteExpoMimeData(const QMimeData * mimeData, int destIdx) { - if (mimeData->hasFormat("application/x-companion9x-expo")) { + if (mimeData->hasFormat("application/x-companion-expo")) { int idx; // mixer index int dch; @@ -276,7 +276,7 @@ void InputsPanel::pasteExpoMimeData(const QMimeData * mimeData, int destIdx) dch = model.expoData[idx].chn; } - QByteArray mxData = mimeData->data("application/x-companion9x-expo"); + QByteArray mxData = mimeData->data("application/x-companion-expo"); int i = 0; while (i < mxData.size()) { @@ -370,7 +370,7 @@ void InputsPanel::expolistWidget_customContextMenuRequested(QPoint pos) const QClipboard *clipboard = QApplication::clipboard(); const QMimeData *mimeData = clipboard->mimeData(); - bool hasData = mimeData->hasFormat("application/x-companion9x-expo"); + bool hasData = mimeData->hasFormat("application/x-companion-expo"); QMenu contextMenu; contextMenu.addAction(AddIcon, tr("&Add"),this,SLOT(expoAdd()),tr("Ctrl+A")); diff --git a/companion/src/modeledit/mixerdialog.ui b/companion/src/modeledit/mixerdialog.ui index ed14a05b9..04d876b80 100644 --- a/companion/src/modeledit/mixerdialog.ui +++ b/companion/src/modeledit/mixerdialog.ui @@ -6,7 +6,7 @@ 0 0 - 342 + 364 434 @@ -20,7 +20,7 @@ Dialog - + :/icon.png:/icon.png @@ -612,7 +612,7 @@ If blank then the mix is considered to be "ON" all the time. - + diff --git a/companion/src/modeledit/mixerslist.cpp b/companion/src/modeledit/mixerslist.cpp index 4d2f90320..06d8cd3f5 100644 --- a/companion/src/modeledit/mixerslist.cpp +++ b/companion/src/modeledit/mixerslist.cpp @@ -40,9 +40,9 @@ bool MixersList::dropMimeData( int index, const QMimeData * data, Qt::DropAction { QMimeData *mimeData = new QMimeData; if (expo) - mimeData->setData("application/x-companion9x-expo", qba); + mimeData->setData("application/x-companion-expo", qba); else - mimeData->setData("application/x-companion9x-mix", qba); + mimeData->setData("application/x-companion-mix", qba); emit mimeDropped(index, mimeData, action); } diff --git a/companion/src/modeledit/mixes.cpp b/companion/src/modeledit/mixes.cpp index 4defde10f..1b18cc50d 100644 --- a/companion/src/modeledit/mixes.cpp +++ b/companion/src/modeledit/mixes.cpp @@ -181,7 +181,7 @@ void MixesPanel::update() bool MixesPanel::gm_insertMix(int idx) { if (idx<0 || idx>=GetEepromInterface()->getCapability(Mixes) || model.mixData[GetEepromInterface()->getCapability(Mixes)-1].destCh > 0) { - QMessageBox::information(this, "companion9x", tr("Not enough available mixers!")); + QMessageBox::information(this, "companion", tr("Not enough available mixers!")); return false; } @@ -286,7 +286,7 @@ void MixesPanel::mixersDelete(bool ask) QMessageBox::StandardButton ret = QMessageBox::No; if(ask) - ret = QMessageBox::warning(this, "companion9x", + ret = QMessageBox::warning(this, "companion", tr("Delete Selected Mixes?"), QMessageBox::Yes | QMessageBox::No); @@ -315,13 +315,13 @@ void MixesPanel::mixersCopy() } QMimeData *mimeData = new QMimeData; - mimeData->setData("application/x-companion9x-mix", mxData); + mimeData->setData("application/x-companion-mix", mxData); QApplication::clipboard()->setMimeData(mimeData,QClipboard::Clipboard); } void MixesPanel::pasteMixerMimeData(const QMimeData * mimeData, int destIdx) { - if(mimeData->hasFormat("application/x-companion9x-mix")) { + if(mimeData->hasFormat("application/x-companion-mix")) { int idx; // mixer index int dch; @@ -333,7 +333,7 @@ void MixesPanel::pasteMixerMimeData(const QMimeData * mimeData, int destIdx) dch = model.mixData[idx].destCh; } - QByteArray mxData = mimeData->data("application/x-companion9x-mix"); + QByteArray mxData = mimeData->data("application/x-companion-mix"); int i = 0; while(imimeData(); - bool hasData = mimeData->hasFormat("application/x-companion9x-mix"); + bool hasData = mimeData->hasFormat("application/x-companion-mix"); QMenu contextMenu; contextMenu.addAction(AddIcon, tr("&Add"),this,SLOT(mixerAdd()),tr("Ctrl+A")); diff --git a/companion/src/modelslist.cpp b/companion/src/modelslist.cpp index 9b19c5ccc..f2cb682f4 100644 --- a/companion/src/modelslist.cpp +++ b/companion/src/modelslist.cpp @@ -82,7 +82,7 @@ void ModelsListWidget::ShowContextMenu(const QPoint& pos) const QClipboard *clipboard = QApplication::clipboard(); const QMimeData *mimeData = clipboard->mimeData(); - bool hasData = mimeData->hasFormat("application/x-companion9x"); + bool hasData = mimeData->hasFormat("application/x-companion"); QIcon AddIcon; populate_icon(&AddIcon,"add.png"); QIcon EditIcon; @@ -186,7 +186,7 @@ void ModelsListWidget::mouseMoveEvent(QMouseEvent *event) doCopy(&gmData); QMimeData *mimeData = new QMimeData; - mimeData->setData("application/x-companion9x", gmData); + mimeData->setData("application/x-companion", gmData); drag->setMimeData(mimeData); @@ -214,7 +214,7 @@ void ModelsListWidget::restoreSelection() void ModelsListWidget::dragEnterEvent(QDragEnterEvent *event) { - if (event->mimeData()->hasFormat("application/x-companion9x")) + if (event->mimeData()->hasFormat("application/x-companion")) { event->acceptProposedAction(); saveSelection(); @@ -230,9 +230,9 @@ void ModelsListWidget::dragMoveEvent(QDragMoveEvent *event) { int row=this->indexAt(event->pos()).row(); const QMimeData *mimeData = event->mimeData(); - if (mimeData->hasFormat("application/x-companion9x")) + if (mimeData->hasFormat("application/x-companion")) { - QByteArray gmData = mimeData->data("application/x-companion9x"); + QByteArray gmData = mimeData->data("application/x-companion"); event->acceptProposedAction(); clearSelection(); DragDropHeader *header = (DragDropHeader *)gmData.data(); @@ -253,9 +253,9 @@ void ModelsListWidget::dropEvent(QDropEvent *event) // QMessageBox::warning(this, tr("Companion"),tr("Index :%1").arg(row)); const QMimeData *mimeData = event->mimeData(); - if(mimeData->hasFormat("application/x-companion9x")) + if(mimeData->hasFormat("application/x-companion")) { - QByteArray gmData = mimeData->data("application/x-companion9x"); + QByteArray gmData = mimeData->data("application/x-companion"); if (event->source() && event->dropAction() == Qt::MoveAction) ((ModelsListWidget*)event->source())->doCut(&gmData); doPaste(&gmData, row); @@ -450,7 +450,7 @@ void ModelsListWidget::copy() doCopy(&gmData); QMimeData *mimeData = new QMimeData; - mimeData->setData("application/x-companion9x", gmData); + mimeData->setData("application/x-companion", gmData); QClipboard *clipboard = QApplication::clipboard(); clipboard->setMimeData(mimeData,QClipboard::Clipboard); @@ -458,7 +458,7 @@ void ModelsListWidget::copy() void ModelsListWidget::doPaste(QByteArray *gmData, int index) { - //QByteArray gmData = mimeD->data("application/x-companion9x"); + //QByteArray gmData = mimeD->data("application/x-companion"); char *gData = gmData->data()+sizeof(DragDropHeader);//new char[gmData.size() + 1]; int i = sizeof(DragDropHeader); int id = index; @@ -515,7 +515,7 @@ bool ModelsListWidget::hasPasteData() const QClipboard *clipboard = QApplication::clipboard(); const QMimeData *mimeData = clipboard->mimeData(); - return mimeData->hasFormat("application/x-companion9x"); + return mimeData->hasFormat("application/x-companion"); } void ModelsListWidget::paste() @@ -524,7 +524,7 @@ void ModelsListWidget::paste() const QClipboard *clipboard = QApplication::clipboard(); const QMimeData *mimeData = clipboard->mimeData(); - QByteArray gmData = mimeData->data("application/x-companion9x"); + QByteArray gmData = mimeData->data("application/x-companion"); doPaste(&gmData,this->currentRow()); } } diff --git a/companion/src/preferencesdialog.cpp b/companion/src/preferencesdialog.cpp index 73b6d3d8a..82ee49b40 100644 --- a/companion/src/preferencesdialog.cpp +++ b/companion/src/preferencesdialog.cpp @@ -268,7 +268,7 @@ void preferencesDialog::writeValues() settings.setValue("default_channel_order", ui->channelorderCB->currentIndex()); settings.setValue("default_mode", ui->stickmodeCB->currentIndex()); settings.setValue("cpu_id", ui->CPU_ID_LE->text()); - settings.setValue("startup_check_companion9x", ui->startupCheck_companion9x->isChecked()); + settings.setValue("startup_check_companion", ui->startupCheck_companion9x->isChecked()); settings.setValue("startup_check_fw", ui->startupCheck_fw->isChecked()); settings.setValue("rename_firmware_files", ui->renameFirmware->isChecked()); settings.setValue("wizardEnable", ui->wizardEnable_ChkB->isChecked()); @@ -410,7 +410,7 @@ void preferencesDialog::initSettings() } ui->channelorderCB->setCurrentIndex(settings.value("default_channel_order", 0).toInt()); ui->stickmodeCB->setCurrentIndex(settings.value("default_mode", 1).toInt()); - ui->startupCheck_companion9x->setChecked(settings.value("startup_check_companion9x", true).toBool()); + ui->startupCheck_companion9x->setChecked(settings.value("startup_check_companion", true).toBool()); ui->renameFirmware->setChecked(settings.value("rename_firmware_files", false).toBool()); ui->wizardEnable_ChkB->setChecked(settings.value("wizardEnable", true).toBool()); ui->showSplash->setChecked(settings.value("show_splash", true).toBool()); From 3acb7e5eff07aaad54a4bae5f3a01b1a550ed746 Mon Sep 17 00:00:00 2001 From: Dvogonen Date: Mon, 20 Jan 2014 15:16:42 +0100 Subject: [PATCH 198/308] All the icons and a script conversion file added. --- .../src/images/originals/scripts/makeblue.sh | 3 +++ companion/src/themes/monoblue/16/add.png | Bin 0 -> 338 bytes companion/src/themes/monoblue/16/arrow-left.png | Bin 0 -> 348 bytes companion/src/themes/monoblue/16/arrow-right.png | Bin 0 -> 350 bytes companion/src/themes/monoblue/16/changelog.png | Bin 0 -> 374 bytes companion/src/themes/monoblue/16/clear.png | Bin 0 -> 371 bytes companion/src/themes/monoblue/16/compare.png | Bin 0 -> 433 bytes companion/src/themes/monoblue/16/configure.png | Bin 0 -> 465 bytes .../src/themes/monoblue/16/contributors.png | Bin 0 -> 670 bytes companion/src/themes/monoblue/16/copy.png | Bin 0 -> 386 bytes .../src/themes/monoblue/16/currentmodel.png | Bin 0 -> 499 bytes companion/src/themes/monoblue/16/customize.png | Bin 0 -> 556 bytes companion/src/themes/monoblue/16/cut.png | Bin 0 -> 611 bytes companion/src/themes/monoblue/16/duplicate.png | Bin 0 -> 449 bytes companion/src/themes/monoblue/16/edit.png | Bin 0 -> 537 bytes companion/src/themes/monoblue/16/exit.png | Bin 0 -> 482 bytes companion/src/themes/monoblue/16/fuses.png | Bin 0 -> 586 bytes companion/src/themes/monoblue/16/information.png | Bin 0 -> 384 bytes companion/src/themes/monoblue/16/library.png | Bin 0 -> 351 bytes companion/src/themes/monoblue/16/list.png | Bin 0 -> 549 bytes companion/src/themes/monoblue/16/logs.png | Bin 0 -> 474 bytes companion/src/themes/monoblue/16/movedown.png | Bin 0 -> 461 bytes companion/src/themes/monoblue/16/moveup.png | Bin 0 -> 468 bytes companion/src/themes/monoblue/16/new.png | Bin 0 -> 396 bytes companion/src/themes/monoblue/16/open.png | Bin 0 -> 425 bytes companion/src/themes/monoblue/16/paintbrush.png | Bin 0 -> 585 bytes companion/src/themes/monoblue/16/paste.png | Bin 0 -> 456 bytes companion/src/themes/monoblue/16/play.png | Bin 0 -> 722 bytes companion/src/themes/monoblue/16/preferences.png | Bin 0 -> 548 bytes companion/src/themes/monoblue/16/print.png | Bin 0 -> 392 bytes companion/src/themes/monoblue/16/profiles.png | Bin 0 -> 317 bytes companion/src/themes/monoblue/16/read_eeprom.png | Bin 0 -> 712 bytes .../src/themes/monoblue/16/read_eeprom_file.png | Bin 0 -> 713 bytes companion/src/themes/monoblue/16/read_flash.png | Bin 0 -> 892 bytes .../src/themes/monoblue/16/recentdocument.png | Bin 0 -> 660 bytes companion/src/themes/monoblue/16/save.png | Bin 0 -> 356 bytes companion/src/themes/monoblue/16/saveas.png | Bin 0 -> 377 bytes companion/src/themes/monoblue/16/simulate.png | Bin 0 -> 407 bytes companion/src/themes/monoblue/16/stop.png | Bin 0 -> 337 bytes companion/src/themes/monoblue/16/switch_dir.png | Bin 0 -> 534 bytes companion/src/themes/monoblue/16/update.png | Bin 0 -> 517 bytes companion/src/themes/monoblue/16/wizard.png | Bin 0 -> 706 bytes .../src/themes/monoblue/16/write_eeprom.png | Bin 0 -> 751 bytes .../src/themes/monoblue/16/write_eeprom_file.png | Bin 0 -> 724 bytes companion/src/themes/monoblue/16/write_flash.png | Bin 0 -> 876 bytes companion/src/themes/monoblue/24/add.png | Bin 0 -> 352 bytes companion/src/themes/monoblue/24/arrow-left.png | Bin 0 -> 596 bytes companion/src/themes/monoblue/24/arrow-right.png | Bin 0 -> 606 bytes companion/src/themes/monoblue/24/changelog.png | Bin 0 -> 528 bytes companion/src/themes/monoblue/24/clear.png | Bin 0 -> 602 bytes companion/src/themes/monoblue/24/compare.png | Bin 0 -> 923 bytes companion/src/themes/monoblue/24/configure.png | Bin 0 -> 620 bytes .../src/themes/monoblue/24/contributors.png | Bin 0 -> 850 bytes companion/src/themes/monoblue/24/copy.png | Bin 0 -> 554 bytes .../src/themes/monoblue/24/currentmodel.png | Bin 0 -> 645 bytes companion/src/themes/monoblue/24/customize.png | Bin 0 -> 556 bytes companion/src/themes/monoblue/24/cut.png | Bin 0 -> 917 bytes companion/src/themes/monoblue/24/duplicate.png | Bin 0 -> 653 bytes companion/src/themes/monoblue/24/edit.png | Bin 0 -> 699 bytes companion/src/themes/monoblue/24/exit.png | Bin 0 -> 803 bytes companion/src/themes/monoblue/24/fuses.png | Bin 0 -> 823 bytes companion/src/themes/monoblue/24/information.png | Bin 0 -> 460 bytes companion/src/themes/monoblue/24/library.png | Bin 0 -> 467 bytes companion/src/themes/monoblue/24/list.png | Bin 0 -> 750 bytes companion/src/themes/monoblue/24/logs.png | Bin 0 -> 605 bytes companion/src/themes/monoblue/24/movedown.png | Bin 0 -> 568 bytes companion/src/themes/monoblue/24/moveup.png | Bin 0 -> 593 bytes companion/src/themes/monoblue/24/new.png | Bin 0 -> 538 bytes companion/src/themes/monoblue/24/open.png | Bin 0 -> 544 bytes companion/src/themes/monoblue/24/paintbrush.png | Bin 0 -> 892 bytes companion/src/themes/monoblue/24/paste.png | Bin 0 -> 632 bytes companion/src/themes/monoblue/24/play.png | Bin 0 -> 722 bytes companion/src/themes/monoblue/24/preferences.png | Bin 0 -> 804 bytes companion/src/themes/monoblue/24/print.png | Bin 0 -> 512 bytes companion/src/themes/monoblue/24/profiles.png | Bin 0 -> 442 bytes companion/src/themes/monoblue/24/read_eeprom.png | Bin 0 -> 1258 bytes .../src/themes/monoblue/24/read_eeprom_file.png | Bin 0 -> 1253 bytes companion/src/themes/monoblue/24/read_flash.png | Bin 0 -> 1377 bytes .../src/themes/monoblue/24/recentdocument.png | Bin 0 -> 955 bytes companion/src/themes/monoblue/24/save.png | Bin 0 -> 444 bytes companion/src/themes/monoblue/24/saveas.png | Bin 0 -> 571 bytes companion/src/themes/monoblue/24/simulate.png | Bin 0 -> 489 bytes companion/src/themes/monoblue/24/stop.png | Bin 0 -> 337 bytes companion/src/themes/monoblue/24/switch_dir.png | Bin 0 -> 770 bytes companion/src/themes/monoblue/24/update.png | Bin 0 -> 689 bytes companion/src/themes/monoblue/24/wizard.png | Bin 0 -> 995 bytes .../src/themes/monoblue/24/write_eeprom.png | Bin 0 -> 1332 bytes .../src/themes/monoblue/24/write_eeprom_file.png | Bin 0 -> 1230 bytes companion/src/themes/monoblue/24/write_flash.png | Bin 0 -> 1394 bytes companion/src/themes/monoblue/32/add.png | Bin 0 -> 354 bytes companion/src/themes/monoblue/32/arrow-left.png | Bin 0 -> 361 bytes companion/src/themes/monoblue/32/arrow-right.png | Bin 0 -> 363 bytes companion/src/themes/monoblue/32/changelog.png | Bin 0 -> 407 bytes companion/src/themes/monoblue/32/clear.png | Bin 0 -> 371 bytes companion/src/themes/monoblue/32/compare.png | Bin 0 -> 516 bytes companion/src/themes/monoblue/32/configure.png | Bin 0 -> 603 bytes .../src/themes/monoblue/32/contributors.png | Bin 0 -> 971 bytes companion/src/themes/monoblue/32/copy.png | Bin 0 -> 401 bytes .../src/themes/monoblue/32/currentmodel.png | Bin 0 -> 640 bytes companion/src/themes/monoblue/32/customize.png | Bin 0 -> 556 bytes companion/src/themes/monoblue/32/cut.png | Bin 0 -> 907 bytes companion/src/themes/monoblue/32/duplicate.png | Bin 0 -> 507 bytes companion/src/themes/monoblue/32/edit.png | Bin 0 -> 651 bytes companion/src/themes/monoblue/32/exit.png | Bin 0 -> 615 bytes companion/src/themes/monoblue/32/fuses.png | Bin 0 -> 778 bytes companion/src/themes/monoblue/32/information.png | Bin 0 -> 399 bytes companion/src/themes/monoblue/32/library.png | Bin 0 -> 360 bytes companion/src/themes/monoblue/32/list.png | Bin 0 -> 604 bytes companion/src/themes/monoblue/32/logs.png | Bin 0 -> 636 bytes companion/src/themes/monoblue/32/movedown.png | Bin 0 -> 569 bytes companion/src/themes/monoblue/32/moveup.png | Bin 0 -> 578 bytes companion/src/themes/monoblue/32/new.png | Bin 0 -> 416 bytes companion/src/themes/monoblue/32/open.png | Bin 0 -> 515 bytes companion/src/themes/monoblue/32/paintbrush.png | Bin 0 -> 828 bytes companion/src/themes/monoblue/32/paste.png | Bin 0 -> 462 bytes companion/src/themes/monoblue/32/play.png | Bin 0 -> 722 bytes companion/src/themes/monoblue/32/preferences.png | Bin 0 -> 723 bytes companion/src/themes/monoblue/32/print.png | Bin 0 -> 411 bytes companion/src/themes/monoblue/32/profiles.png | Bin 0 -> 362 bytes companion/src/themes/monoblue/32/read_eeprom.png | Bin 0 -> 985 bytes .../src/themes/monoblue/32/read_eeprom_file.png | Bin 0 -> 955 bytes companion/src/themes/monoblue/32/read_flash.png | Bin 0 -> 1361 bytes .../src/themes/monoblue/32/recentdocument.png | Bin 0 -> 894 bytes companion/src/themes/monoblue/32/save.png | Bin 0 -> 355 bytes companion/src/themes/monoblue/32/saveas.png | Bin 0 -> 412 bytes companion/src/themes/monoblue/32/simulate.png | Bin 0 -> 455 bytes companion/src/themes/monoblue/32/stop.png | Bin 0 -> 337 bytes companion/src/themes/monoblue/32/switch_dir.png | Bin 0 -> 775 bytes companion/src/themes/monoblue/32/update.png | Bin 0 -> 693 bytes companion/src/themes/monoblue/32/wizard.png | Bin 0 -> 973 bytes .../src/themes/monoblue/32/write_eeprom.png | Bin 0 -> 988 bytes .../src/themes/monoblue/32/write_eeprom_file.png | Bin 0 -> 951 bytes companion/src/themes/monoblue/32/write_flash.png | Bin 0 -> 1337 bytes companion/src/themes/monoblue/48/add.png | Bin 0 -> 363 bytes companion/src/themes/monoblue/48/arrow-left.png | Bin 0 -> 922 bytes companion/src/themes/monoblue/48/arrow-right.png | Bin 0 -> 900 bytes companion/src/themes/monoblue/48/changelog.png | Bin 0 -> 580 bytes companion/src/themes/monoblue/48/clear.png | Bin 0 -> 916 bytes companion/src/themes/monoblue/48/compare.png | Bin 0 -> 1337 bytes companion/src/themes/monoblue/48/configure.png | Bin 0 -> 929 bytes .../src/themes/monoblue/48/contributors.png | Bin 0 -> 1486 bytes companion/src/themes/monoblue/48/copy.png | Bin 0 -> 626 bytes .../src/themes/monoblue/48/currentmodel.png | Bin 0 -> 1031 bytes companion/src/themes/monoblue/48/customize.png | Bin 0 -> 556 bytes companion/src/themes/monoblue/48/cut.png | Bin 0 -> 1668 bytes companion/src/themes/monoblue/48/duplicate.png | Bin 0 -> 871 bytes companion/src/themes/monoblue/48/edit.png | Bin 0 -> 985 bytes companion/src/themes/monoblue/48/exit.png | Bin 0 -> 1348 bytes companion/src/themes/monoblue/48/fuses.png | Bin 0 -> 1452 bytes companion/src/themes/monoblue/48/information.png | Bin 0 -> 555 bytes companion/src/themes/monoblue/48/library.png | Bin 0 -> 529 bytes companion/src/themes/monoblue/48/list.png | Bin 0 -> 1018 bytes companion/src/themes/monoblue/48/logs.png | Bin 0 -> 987 bytes companion/src/themes/monoblue/48/movedown.png | Bin 0 -> 923 bytes companion/src/themes/monoblue/48/moveup.png | Bin 0 -> 897 bytes companion/src/themes/monoblue/48/new.png | Bin 0 -> 578 bytes companion/src/themes/monoblue/48/open.png | Bin 0 -> 740 bytes companion/src/themes/monoblue/48/paintbrush.png | Bin 0 -> 1422 bytes companion/src/themes/monoblue/48/paste.png | Bin 0 -> 866 bytes companion/src/themes/monoblue/48/play.png | Bin 0 -> 722 bytes companion/src/themes/monoblue/48/preferences.png | Bin 0 -> 1243 bytes companion/src/themes/monoblue/48/print.png | Bin 0 -> 541 bytes companion/src/themes/monoblue/48/profiles.png | Bin 0 -> 417 bytes companion/src/themes/monoblue/48/read_eeprom.png | Bin 0 -> 2003 bytes .../src/themes/monoblue/48/read_eeprom_file.png | Bin 0 -> 1970 bytes companion/src/themes/monoblue/48/read_flash.png | Bin 0 -> 2321 bytes .../src/themes/monoblue/48/recentdocument.png | Bin 0 -> 1560 bytes companion/src/themes/monoblue/48/save.png | Bin 0 -> 492 bytes companion/src/themes/monoblue/48/saveas.png | Bin 0 -> 652 bytes companion/src/themes/monoblue/48/simulate.png | Bin 0 -> 709 bytes companion/src/themes/monoblue/48/stop.png | Bin 0 -> 337 bytes companion/src/themes/monoblue/48/switch_dir.png | Bin 0 -> 1255 bytes companion/src/themes/monoblue/48/update.png | Bin 0 -> 1098 bytes companion/src/themes/monoblue/48/wizard.png | Bin 0 -> 1884 bytes .../src/themes/monoblue/48/write_eeprom.png | Bin 0 -> 2081 bytes .../src/themes/monoblue/48/write_eeprom_file.png | Bin 0 -> 2008 bytes companion/src/themes/monoblue/48/write_flash.png | Bin 0 -> 2358 bytes companion/src/themes/monoblue/add.png | Bin 0 -> 354 bytes companion/src/themes/monoblue/arrow-left.png | Bin 0 -> 361 bytes companion/src/themes/monoblue/arrow-right.png | Bin 0 -> 363 bytes companion/src/themes/monoblue/changelog.png | Bin 0 -> 407 bytes companion/src/themes/monoblue/clear.png | Bin 0 -> 371 bytes companion/src/themes/monoblue/compare.png | Bin 0 -> 516 bytes companion/src/themes/monoblue/configure.png | Bin 0 -> 603 bytes companion/src/themes/monoblue/contributors.png | Bin 0 -> 971 bytes companion/src/themes/monoblue/copy.png | Bin 0 -> 401 bytes companion/src/themes/monoblue/currentmodel.png | Bin 0 -> 640 bytes companion/src/themes/monoblue/cut.png | Bin 0 -> 907 bytes companion/src/themes/monoblue/duplicate.png | Bin 0 -> 507 bytes companion/src/themes/monoblue/edit.png | Bin 0 -> 651 bytes companion/src/themes/monoblue/exit.png | Bin 0 -> 615 bytes companion/src/themes/monoblue/fuses.png | Bin 0 -> 778 bytes companion/src/themes/monoblue/information.png | Bin 0 -> 399 bytes companion/src/themes/monoblue/library.png | Bin 0 -> 360 bytes companion/src/themes/monoblue/list.png | Bin 0 -> 604 bytes companion/src/themes/monoblue/logs.png | Bin 0 -> 636 bytes companion/src/themes/monoblue/movedown.png | Bin 0 -> 569 bytes companion/src/themes/monoblue/moveup.png | Bin 0 -> 578 bytes companion/src/themes/monoblue/new.png | Bin 0 -> 416 bytes companion/src/themes/monoblue/open.png | Bin 0 -> 515 bytes companion/src/themes/monoblue/paintbrush.png | Bin 0 -> 828 bytes companion/src/themes/monoblue/paste.png | Bin 0 -> 462 bytes companion/src/themes/monoblue/play.png | Bin 0 -> 722 bytes companion/src/themes/monoblue/preferences.png | Bin 0 -> 723 bytes companion/src/themes/monoblue/print.png | Bin 0 -> 411 bytes companion/src/themes/monoblue/profiles.png | Bin 0 -> 362 bytes companion/src/themes/monoblue/read_eeprom.png | Bin 0 -> 985 bytes .../src/themes/monoblue/read_eeprom_file.png | Bin 0 -> 955 bytes companion/src/themes/monoblue/read_flash.png | Bin 0 -> 1361 bytes companion/src/themes/monoblue/recentdocument.png | Bin 0 -> 894 bytes companion/src/themes/monoblue/save.png | Bin 0 -> 355 bytes companion/src/themes/monoblue/saveas.png | Bin 0 -> 412 bytes companion/src/themes/monoblue/simulate.png | Bin 0 -> 455 bytes companion/src/themes/monoblue/stop.png | Bin 0 -> 337 bytes companion/src/themes/monoblue/switch_dir.png | Bin 0 -> 775 bytes companion/src/themes/monoblue/update.png | Bin 0 -> 693 bytes companion/src/themes/monoblue/wizard.png | Bin 0 -> 973 bytes companion/src/themes/monoblue/write_eeprom.png | Bin 0 -> 988 bytes .../src/themes/monoblue/write_eeprom_file.png | Bin 0 -> 951 bytes companion/src/themes/monoblue/write_flash.png | Bin 0 -> 1337 bytes 220 files changed, 3 insertions(+) create mode 100755 companion/src/images/originals/scripts/makeblue.sh create mode 100644 companion/src/themes/monoblue/16/add.png create mode 100644 companion/src/themes/monoblue/16/arrow-left.png create mode 100644 companion/src/themes/monoblue/16/arrow-right.png create mode 100644 companion/src/themes/monoblue/16/changelog.png create mode 100644 companion/src/themes/monoblue/16/clear.png create mode 100644 companion/src/themes/monoblue/16/compare.png create mode 100644 companion/src/themes/monoblue/16/configure.png create mode 100644 companion/src/themes/monoblue/16/contributors.png create mode 100644 companion/src/themes/monoblue/16/copy.png create mode 100644 companion/src/themes/monoblue/16/currentmodel.png create mode 100644 companion/src/themes/monoblue/16/customize.png create mode 100644 companion/src/themes/monoblue/16/cut.png create mode 100644 companion/src/themes/monoblue/16/duplicate.png create mode 100644 companion/src/themes/monoblue/16/edit.png create mode 100644 companion/src/themes/monoblue/16/exit.png create mode 100644 companion/src/themes/monoblue/16/fuses.png create mode 100644 companion/src/themes/monoblue/16/information.png create mode 100644 companion/src/themes/monoblue/16/library.png create mode 100644 companion/src/themes/monoblue/16/list.png create mode 100644 companion/src/themes/monoblue/16/logs.png create mode 100644 companion/src/themes/monoblue/16/movedown.png create mode 100644 companion/src/themes/monoblue/16/moveup.png create mode 100644 companion/src/themes/monoblue/16/new.png create mode 100644 companion/src/themes/monoblue/16/open.png create mode 100644 companion/src/themes/monoblue/16/paintbrush.png create mode 100644 companion/src/themes/monoblue/16/paste.png create mode 100644 companion/src/themes/monoblue/16/play.png create mode 100644 companion/src/themes/monoblue/16/preferences.png create mode 100644 companion/src/themes/monoblue/16/print.png create mode 100644 companion/src/themes/monoblue/16/profiles.png create mode 100644 companion/src/themes/monoblue/16/read_eeprom.png create mode 100644 companion/src/themes/monoblue/16/read_eeprom_file.png create mode 100644 companion/src/themes/monoblue/16/read_flash.png create mode 100644 companion/src/themes/monoblue/16/recentdocument.png create mode 100644 companion/src/themes/monoblue/16/save.png create mode 100644 companion/src/themes/monoblue/16/saveas.png create mode 100644 companion/src/themes/monoblue/16/simulate.png create mode 100644 companion/src/themes/monoblue/16/stop.png create mode 100644 companion/src/themes/monoblue/16/switch_dir.png create mode 100644 companion/src/themes/monoblue/16/update.png create mode 100644 companion/src/themes/monoblue/16/wizard.png create mode 100644 companion/src/themes/monoblue/16/write_eeprom.png create mode 100644 companion/src/themes/monoblue/16/write_eeprom_file.png create mode 100644 companion/src/themes/monoblue/16/write_flash.png create mode 100644 companion/src/themes/monoblue/24/add.png create mode 100644 companion/src/themes/monoblue/24/arrow-left.png create mode 100644 companion/src/themes/monoblue/24/arrow-right.png create mode 100644 companion/src/themes/monoblue/24/changelog.png create mode 100644 companion/src/themes/monoblue/24/clear.png create mode 100644 companion/src/themes/monoblue/24/compare.png create mode 100644 companion/src/themes/monoblue/24/configure.png create mode 100644 companion/src/themes/monoblue/24/contributors.png create mode 100644 companion/src/themes/monoblue/24/copy.png create mode 100644 companion/src/themes/monoblue/24/currentmodel.png create mode 100644 companion/src/themes/monoblue/24/customize.png create mode 100644 companion/src/themes/monoblue/24/cut.png create mode 100644 companion/src/themes/monoblue/24/duplicate.png create mode 100644 companion/src/themes/monoblue/24/edit.png create mode 100644 companion/src/themes/monoblue/24/exit.png create mode 100644 companion/src/themes/monoblue/24/fuses.png create mode 100644 companion/src/themes/monoblue/24/information.png create mode 100644 companion/src/themes/monoblue/24/library.png create mode 100644 companion/src/themes/monoblue/24/list.png create mode 100644 companion/src/themes/monoblue/24/logs.png create mode 100644 companion/src/themes/monoblue/24/movedown.png create mode 100644 companion/src/themes/monoblue/24/moveup.png create mode 100644 companion/src/themes/monoblue/24/new.png create mode 100644 companion/src/themes/monoblue/24/open.png create mode 100644 companion/src/themes/monoblue/24/paintbrush.png create mode 100644 companion/src/themes/monoblue/24/paste.png create mode 100644 companion/src/themes/monoblue/24/play.png create mode 100644 companion/src/themes/monoblue/24/preferences.png create mode 100644 companion/src/themes/monoblue/24/print.png create mode 100644 companion/src/themes/monoblue/24/profiles.png create mode 100644 companion/src/themes/monoblue/24/read_eeprom.png create mode 100644 companion/src/themes/monoblue/24/read_eeprom_file.png create mode 100644 companion/src/themes/monoblue/24/read_flash.png create mode 100644 companion/src/themes/monoblue/24/recentdocument.png create mode 100644 companion/src/themes/monoblue/24/save.png create mode 100644 companion/src/themes/monoblue/24/saveas.png create mode 100644 companion/src/themes/monoblue/24/simulate.png create mode 100644 companion/src/themes/monoblue/24/stop.png create mode 100644 companion/src/themes/monoblue/24/switch_dir.png create mode 100644 companion/src/themes/monoblue/24/update.png create mode 100644 companion/src/themes/monoblue/24/wizard.png create mode 100644 companion/src/themes/monoblue/24/write_eeprom.png create mode 100644 companion/src/themes/monoblue/24/write_eeprom_file.png create mode 100644 companion/src/themes/monoblue/24/write_flash.png create mode 100644 companion/src/themes/monoblue/32/add.png create mode 100644 companion/src/themes/monoblue/32/arrow-left.png create mode 100644 companion/src/themes/monoblue/32/arrow-right.png create mode 100644 companion/src/themes/monoblue/32/changelog.png create mode 100644 companion/src/themes/monoblue/32/clear.png create mode 100644 companion/src/themes/monoblue/32/compare.png create mode 100644 companion/src/themes/monoblue/32/configure.png create mode 100644 companion/src/themes/monoblue/32/contributors.png create mode 100644 companion/src/themes/monoblue/32/copy.png create mode 100644 companion/src/themes/monoblue/32/currentmodel.png create mode 100644 companion/src/themes/monoblue/32/customize.png create mode 100644 companion/src/themes/monoblue/32/cut.png create mode 100644 companion/src/themes/monoblue/32/duplicate.png create mode 100644 companion/src/themes/monoblue/32/edit.png create mode 100644 companion/src/themes/monoblue/32/exit.png create mode 100644 companion/src/themes/monoblue/32/fuses.png create mode 100644 companion/src/themes/monoblue/32/information.png create mode 100644 companion/src/themes/monoblue/32/library.png create mode 100644 companion/src/themes/monoblue/32/list.png create mode 100644 companion/src/themes/monoblue/32/logs.png create mode 100644 companion/src/themes/monoblue/32/movedown.png create mode 100644 companion/src/themes/monoblue/32/moveup.png create mode 100644 companion/src/themes/monoblue/32/new.png create mode 100644 companion/src/themes/monoblue/32/open.png create mode 100644 companion/src/themes/monoblue/32/paintbrush.png create mode 100644 companion/src/themes/monoblue/32/paste.png create mode 100644 companion/src/themes/monoblue/32/play.png create mode 100644 companion/src/themes/monoblue/32/preferences.png create mode 100644 companion/src/themes/monoblue/32/print.png create mode 100644 companion/src/themes/monoblue/32/profiles.png create mode 100644 companion/src/themes/monoblue/32/read_eeprom.png create mode 100644 companion/src/themes/monoblue/32/read_eeprom_file.png create mode 100644 companion/src/themes/monoblue/32/read_flash.png create mode 100644 companion/src/themes/monoblue/32/recentdocument.png create mode 100644 companion/src/themes/monoblue/32/save.png create mode 100644 companion/src/themes/monoblue/32/saveas.png create mode 100644 companion/src/themes/monoblue/32/simulate.png create mode 100644 companion/src/themes/monoblue/32/stop.png create mode 100644 companion/src/themes/monoblue/32/switch_dir.png create mode 100644 companion/src/themes/monoblue/32/update.png create mode 100644 companion/src/themes/monoblue/32/wizard.png create mode 100644 companion/src/themes/monoblue/32/write_eeprom.png create mode 100644 companion/src/themes/monoblue/32/write_eeprom_file.png create mode 100644 companion/src/themes/monoblue/32/write_flash.png create mode 100644 companion/src/themes/monoblue/48/add.png create mode 100644 companion/src/themes/monoblue/48/arrow-left.png create mode 100644 companion/src/themes/monoblue/48/arrow-right.png create mode 100644 companion/src/themes/monoblue/48/changelog.png create mode 100644 companion/src/themes/monoblue/48/clear.png create mode 100644 companion/src/themes/monoblue/48/compare.png create mode 100644 companion/src/themes/monoblue/48/configure.png create mode 100644 companion/src/themes/monoblue/48/contributors.png create mode 100644 companion/src/themes/monoblue/48/copy.png create mode 100644 companion/src/themes/monoblue/48/currentmodel.png create mode 100644 companion/src/themes/monoblue/48/customize.png create mode 100644 companion/src/themes/monoblue/48/cut.png create mode 100644 companion/src/themes/monoblue/48/duplicate.png create mode 100644 companion/src/themes/monoblue/48/edit.png create mode 100644 companion/src/themes/monoblue/48/exit.png create mode 100644 companion/src/themes/monoblue/48/fuses.png create mode 100644 companion/src/themes/monoblue/48/information.png create mode 100644 companion/src/themes/monoblue/48/library.png create mode 100644 companion/src/themes/monoblue/48/list.png create mode 100644 companion/src/themes/monoblue/48/logs.png create mode 100644 companion/src/themes/monoblue/48/movedown.png create mode 100644 companion/src/themes/monoblue/48/moveup.png create mode 100644 companion/src/themes/monoblue/48/new.png create mode 100644 companion/src/themes/monoblue/48/open.png create mode 100644 companion/src/themes/monoblue/48/paintbrush.png create mode 100644 companion/src/themes/monoblue/48/paste.png create mode 100644 companion/src/themes/monoblue/48/play.png create mode 100644 companion/src/themes/monoblue/48/preferences.png create mode 100644 companion/src/themes/monoblue/48/print.png create mode 100644 companion/src/themes/monoblue/48/profiles.png create mode 100644 companion/src/themes/monoblue/48/read_eeprom.png create mode 100644 companion/src/themes/monoblue/48/read_eeprom_file.png create mode 100644 companion/src/themes/monoblue/48/read_flash.png create mode 100644 companion/src/themes/monoblue/48/recentdocument.png create mode 100644 companion/src/themes/monoblue/48/save.png create mode 100644 companion/src/themes/monoblue/48/saveas.png create mode 100644 companion/src/themes/monoblue/48/simulate.png create mode 100644 companion/src/themes/monoblue/48/stop.png create mode 100644 companion/src/themes/monoblue/48/switch_dir.png create mode 100644 companion/src/themes/monoblue/48/update.png create mode 100644 companion/src/themes/monoblue/48/wizard.png create mode 100644 companion/src/themes/monoblue/48/write_eeprom.png create mode 100644 companion/src/themes/monoblue/48/write_eeprom_file.png create mode 100644 companion/src/themes/monoblue/48/write_flash.png create mode 100644 companion/src/themes/monoblue/add.png create mode 100644 companion/src/themes/monoblue/arrow-left.png create mode 100644 companion/src/themes/monoblue/arrow-right.png create mode 100644 companion/src/themes/monoblue/changelog.png create mode 100644 companion/src/themes/monoblue/clear.png create mode 100644 companion/src/themes/monoblue/compare.png create mode 100644 companion/src/themes/monoblue/configure.png create mode 100644 companion/src/themes/monoblue/contributors.png create mode 100644 companion/src/themes/monoblue/copy.png create mode 100644 companion/src/themes/monoblue/currentmodel.png create mode 100644 companion/src/themes/monoblue/cut.png create mode 100644 companion/src/themes/monoblue/duplicate.png create mode 100644 companion/src/themes/monoblue/edit.png create mode 100644 companion/src/themes/monoblue/exit.png create mode 100644 companion/src/themes/monoblue/fuses.png create mode 100644 companion/src/themes/monoblue/information.png create mode 100644 companion/src/themes/monoblue/library.png create mode 100644 companion/src/themes/monoblue/list.png create mode 100644 companion/src/themes/monoblue/logs.png create mode 100644 companion/src/themes/monoblue/movedown.png create mode 100644 companion/src/themes/monoblue/moveup.png create mode 100644 companion/src/themes/monoblue/new.png create mode 100644 companion/src/themes/monoblue/open.png create mode 100644 companion/src/themes/monoblue/paintbrush.png create mode 100644 companion/src/themes/monoblue/paste.png create mode 100644 companion/src/themes/monoblue/play.png create mode 100644 companion/src/themes/monoblue/preferences.png create mode 100644 companion/src/themes/monoblue/print.png create mode 100644 companion/src/themes/monoblue/profiles.png create mode 100644 companion/src/themes/monoblue/read_eeprom.png create mode 100644 companion/src/themes/monoblue/read_eeprom_file.png create mode 100644 companion/src/themes/monoblue/read_flash.png create mode 100644 companion/src/themes/monoblue/recentdocument.png create mode 100644 companion/src/themes/monoblue/save.png create mode 100644 companion/src/themes/monoblue/saveas.png create mode 100644 companion/src/themes/monoblue/simulate.png create mode 100644 companion/src/themes/monoblue/stop.png create mode 100644 companion/src/themes/monoblue/switch_dir.png create mode 100644 companion/src/themes/monoblue/update.png create mode 100644 companion/src/themes/monoblue/wizard.png create mode 100644 companion/src/themes/monoblue/write_eeprom.png create mode 100644 companion/src/themes/monoblue/write_eeprom_file.png create mode 100644 companion/src/themes/monoblue/write_flash.png diff --git a/companion/src/images/originals/scripts/makeblue.sh b/companion/src/images/originals/scripts/makeblue.sh new file mode 100755 index 000000000..ab0c418fc --- /dev/null +++ b/companion/src/images/originals/scripts/makeblue.sh @@ -0,0 +1,3 @@ +#!/bin/bash +mogrify -modulate 100,100,70 *.png +mogrify +level-colors "#000066","#0000cc" *.png diff --git a/companion/src/themes/monoblue/16/add.png b/companion/src/themes/monoblue/16/add.png new file mode 100644 index 0000000000000000000000000000000000000000..e32bf3125cf0d03cf41d38f75c58262f2f801804 GIT binary patch literal 338 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPF=ES4z)+>ez|hdb!0-zw)bN6Vq11qZ;Z*_ygVhWM2JwP9y8>;168r%^ zA+8JzX>j!a|Nqk^iP}IZmXaX9V1^0%-^*r9{sQDPCV9KNu=Ho#3G_f)^wK6c*HZZg@FsMpcEQg{YH$Npa XtrE8eZd>U^Kn)C@u6{1-oD!M=ES4z)+>ez|hdb!0-zw)bN6Vq11qZ;Z*_ygVhWM2JwP9y8>;15)uJE zA+8JzX_)B$|NnJwSzLf>*h+%@f*JPj+4p;|+F4(1pa^45y^ErKC}X%|vpC$fOCL429Pi7*+@}HSnJ> z3IwWEEpd$~Nl7e8wMs5Z1yT$~28JfO28Oyu1|fzfR>r1Q2IkrZhE@g!RSApbP&DM` ar(~v8;?}@zE4>J)fx*+&&t;ucLK6UnL0I=ES4z)+>ez|hdb!0-zw)bN6Vq11qZ;Z*_ygVhWM2JwP9y8>;15)uJE zA+8JzX_)B$|NnJwSzLf>*h+%@f*JPj+53Cn-ljz-fFg`Z-tI2!Vu>BEfgH{PkH}&M z2EM}}%y>M1MG8<*$!C8<`)MX5lF!N|bSMAyJj*T^8m(8S8v)XKnI+rZGuz@RE&u^ftq c-29Zxv`X9>xNW5u0W~mqy85}Sb4q9e08n^aD*ylh literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/16/changelog.png b/companion/src/themes/monoblue/16/changelog.png new file mode 100644 index 0000000000000000000000000000000000000000..365ffefc90c7dc5b293bc55fd84d3b5b61c64602 GIT binary patch literal 374 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPF=ES4z)+>ez|hdb!0-zw)bN6Vq11qZ;Z*_ygVhWM2JwP9y8>;164C)a zA+8JzX)u(*z)%EZr~m)|-{7*GKTsK4NswPKgG2p(hy4j_wyOh07?Zr+T{znAO|1fQ zI14-?iy0XB4ude`@%$AjKtXd)7sn8e>&XcRSaLEmI|bO7n`bdhSs25Swn0^MCzr$0 zOF{}tJUpBNf*Q;#>>DR|NC~JUY?Nj=wVj(kzq;x>&=ES4z)+>ez|hdb!0-zw)bN6Vq11qZ;Z*_ygVhWM2JwP9y8>;15<&q! zA+8JzX~^jR|NnfA)#*T4mXaX9UyP}G$AKKq0*}aI1_r*v zAk26?e?4<27D)*a2b0C!44aKx9%eA58FcK}Az|RqqQJy+Mo*6^ zp{;Xsw{k~Xk)c2#W4DB{ft8T}E5q(m)*q}B*Tn;kQY~?fC`m~yNwrEYN(E93Mh1o^ zx(0^2Mg}245bDP46hOx7_4S6Fo+k-*%fF5lrRqP z32|j$NMm5g1Cu~T1_MJTP&b%c1k}pFu!n&m9gKjoKt{&@|Nq5BL=1u2c}s%)f*Bm@ z_wRRbaM)ijxxZffNYZkk1Y?r7yNkfoO}sil4rhT!WHAE+-(e7DJf6QI1t=Ko>Eak7 zak=-*L#_q`4wi)SZEL2z{d?amRd-9gEXOBVuP^$qc6u>Lf6!hWA5h)7SDPtfzf#k8 zK^-N|tn0dr8?x;zcN8{l7JR~3ZC@_+obU5NbMqQDrrANVtET~tS1oakC`m~yNwrEY zN(E93Mh1o^x(0^2Mg}245bDP46hOx7_4S6Fo+k-*%fF5l!yxO z32|j$NTUV%|Ns9TtJU{_w#bwO`2{m%Oykv)T)F+G;H^22I_mdNVQqUl)q3?qA+Fg6 zFMi6_1FB<8@^*KTea&1r5y;^z@Q5sCVBk9p!i>lBSEK+1Z9QEaLnJOICoE7+NO9UQ zGg2br<_${;i$tavqdPWxYHDi!Ff|o0Dke^7=un8^ZeB5CM-NNa!bw4wwiFvOsB|y| zo{BQK0yIdq#5JNMC9x#cD!C{XNHG{07@FuB80s1sgczDw8Jk)em}?stS{WErB`lUh d(U6;;l9^VCTLZVP^dg`J22WQ%mvv4FO#oJtdh7rI literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/16/contributors.png b/companion/src/themes/monoblue/16/contributors.png new file mode 100644 index 0000000000000000000000000000000000000000..ad4b1de94501adb5441a08a96f987328b451d8c6 GIT binary patch literal 670 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstUx|vage(c z!@6@aFM%9|WRD45bDP46hOx7_4S6Fo+k-*%fF5l-L#E z6XMFikTw+2|NsAQG&&msePL4)mqWoV_XoX3y!s>P6v&`-$*QUg5 z`8A`y>Gz)aneS{IUSD79VYSlQjlKKv%MNb6v*-RQDm_22(*$S^W0JSKi|vKnz(^p6 zv%n*=n1O-sFbFdq&tH)O6zuYJaSV~T+-wBLFjquvUR#ZSE-h`MwFx^mZVxG7o`Fz1|tJQ6I}yCT_b}KLlY}wQ!4{= oZ39Cq1B0rB#d0Vba`RI%(<*Um;I@@s1k}Lb>FVdQ&MBb@01uJAlK=n! literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/16/copy.png b/companion/src/themes/monoblue/16/copy.png new file mode 100644 index 0000000000000000000000000000000000000000..645f0db88ef6980f8e4f87644a199be96551207d GIT binary patch literal 386 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPF=ES4z)+>ez|hdb!0-zw)bN6Vq11qZ;Z*_ygVhWM2JwP9y8>;15^@1P zA+8JzX<(EECes-h@?j$B|NsBL`Zd=SsFJ-T$S;_oe!l|{9yUAG2oz#W@^*LO{CIQe z8z6_Xz$3Dlfr0NZ2s0kfUy%Y7wD)vz4B@z*oN$1p=jl@}fwm0^o(wY-XK38xO61rO z&Eg=L#4EtIIDxU{;DLtbK)zH112wKDQDXycuBH@228MO-I9a-8|62t#O0~o_q9i4; zB-JXpC>2OC7#SFv=o%R68X1Hbnphc|S{ayY8yH#{7*r)JmP65yo1c=IR*72!x2^Od Ppaup{S3j3^P645bDP46hOx7_4S6Fo+k-*%fF5lt>Qn z32|j$NTVtG|Np-;@6$}6b@C-ae!&d7ozGLty3!dX_U)G{{qwJc`?q@3wX+izbucI2 zW#JEM(me%K%9!Ns?xL_c+qMD7;VkfoEM{QfI}E~%$MaXD00o0RT^vIsF3&yf&eveT z;}WQT@XCeixxeoViKuMYbmsogOdpXsL2?;y8x0?I%t%&9^SdOzNoL)ly4jnUUb)$9 zy=(k}l}AGT4AZpI#eXg83tpcNiZI`QgZVCpah^WVc-0cuh?11Vl2ohYqEsNoU}Ruu zqHAENYh(~&Xkuk-YGq)qZD43+U{IB?SPn%)ZhlH;S|x4`+_ut-fEpM)UHx3vIVCg! E01rlq1ONa4 literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/16/customize.png b/companion/src/themes/monoblue/16/customize.png new file mode 100644 index 0000000000000000000000000000000000000000..c50af24f19d7f28a56f353d1137498039f3b3482 GIT binary patch literal 556 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`#0(_Y@0k7uNU@|l`Z_W&Z0zU$lgJ9>GZqKA zJ29*~C-V}>QAqX(@?~JCQUhviVPNpWX6wC`%1Suuy#O zaWnT)R@cjKB%?NSCrplFQ%E^^@r36J!8G%R7%6s!Tg+b=@3_v9TRfNXjc*0V@>~X+ zH+2))7VrmsuXw+~JaZQ72gZckl?CsnwR~JYceaj0zQjwJfW_@ARdN}8n11lwuF9M<;#wMlli5&SA(vc=n2}sqWg)s1H-Iv4K9a+*VF{KPcT3D@qqP?_yWcS zLct71!3WOd$a6o4afrHlf+wx!T|>(nU4|46{|4?2$_@LH3M(6)Z$H^3kW$Ssb7is} zW9)JVkAU7PrIiI2e3zY6FL-$={+0M&0f%2sHQpw`5K}F2jVMV;EJ?LWE=mPb3`Pcq zCb|ZOx<&>eh9*|Vrd9^#+6IPJ1_o6Li{(%>45bDP46hOx7_4S6Fo+k-*%fF5l$a3U z6XMFikjB7}iG(s381SHU1_n3+YJ{^P44??v2xw{g|NsAwEic{!benETkY6wZw};Gc zGxo2qdxhfmD++!y_r>y!oWZWqNRyF#4O9Nd8#8I!!- zUG$Z&C
" + tr("Select an original firmware file") + "
"); } -customizeSplashDialog::~customizeSplashDialog() { +customizeSplashDialog::~customizeSplashDialog() +{ delete ui; } void customizeSplashDialog::on_FlashLoadButton_clicked() { - QSettings settings("companion", "companion"); + QSettings settings; QString fileName = QFileDialog::getOpenFileName(this, tr("Open"), settings.value("lastFlashDir").toString(), FLASH_FILES_FILTER); if (!fileName.isEmpty()) { ui->ImageLoadButton->setDisabled(true); @@ -70,7 +70,7 @@ void customizeSplashDialog::on_ImageLoadButton_clicked() { supportedImageFormats += QLatin1String(" *.") + QImageReader::supportedImageFormats()[formatIndex]; } - QSettings settings("companion", "companion"); + QSettings settings; QString fileName = QFileDialog::getOpenFileName(this, tr("Open Image to load"), settings.value("lastImagesDir").toString(), tr("Images (%1)").arg(supportedImageFormats)); @@ -147,7 +147,7 @@ void customizeSplashDialog::on_libraryButton_clicked() { void customizeSplashDialog::on_SaveFlashButton_clicked() { QString fileName; - QSettings settings("companion", "companion"); + QSettings settings; ui->HowToLabel->clear(); fileName = QFileDialog::getSaveFileName(this, tr("Write to file"), settings.value("lastFlashDir").toString(), FLASH_FILES_FILTER, 0, QFileDialog::DontConfirmOverwrite); if (fileName.isEmpty()) { @@ -180,7 +180,7 @@ void customizeSplashDialog::on_InvertColorButton_clicked() void customizeSplashDialog::on_SaveImageButton_clicked() { QString fileName; - QSettings settings("companion", "companion"); + QSettings settings; fileName = QFileDialog::getSaveFileName(this, tr("Write to file"), settings.value("lastImagesDir").toString(), tr("PNG images (*.png);;"), 0, QFileDialog::DontConfirmOverwrite); if (!fileName.isEmpty()) { diff --git a/companion/src/eeprominterface.cpp b/companion/src/eeprominterface.cpp index 5aeee8220..5ff32e0da 100644 --- a/companion/src/eeprominterface.cpp +++ b/companion/src/eeprominterface.cpp @@ -438,7 +438,7 @@ GeneralSettings::GeneralSettings() calibSpanNeg[i] = 0x180; calibSpanPos[i] = 0x180; } - QSettings settings("companion", "companion"); + QSettings settings; templateSetup = settings.value("default_channel_order", 0).toInt(); stickMode = settings.value("default_mode", 1).toInt(); int profile_id = settings.value("ActiveProfile", 0).toInt(); @@ -659,7 +659,7 @@ ModelData ModelData::removeGlobalVars() QList eepromInterfaces; void RegisterEepromInterfaces() { - QSettings settings("companion", "companion"); + QSettings settings; int rev4a = settings.value("rev4asupport",0).toInt(); eepromInterfaces.push_back(new Open9xInterface(BOARD_STOCK)); eepromInterfaces.push_back(new Open9xInterface(BOARD_M128)); diff --git a/companion/src/firmwares/er9x/er9xinterface.cpp b/companion/src/firmwares/er9x/er9xinterface.cpp index 9d413654d..72b5acab9 100644 --- a/companion/src/firmwares/er9x/er9xinterface.cpp +++ b/companion/src/firmwares/er9x/er9xinterface.cpp @@ -44,7 +44,7 @@ const char * Er9xInterface::getName() const int Er9xInterface::getEEpromSize() { - QSettings settings("companion", "companion"); + QSettings settings; QString avrMCU = settings.value("mcu", QString("m64")).toString(); if (avrMCU==QString("m128")) { return 2*EESIZE_STOCK; diff --git a/companion/src/firmwares/gruvin9x/gruvin9xinterface.cpp b/companion/src/firmwares/gruvin9x/gruvin9xinterface.cpp index 1115f46f1..3e60d61be 100644 --- a/companion/src/firmwares/gruvin9x/gruvin9xinterface.cpp +++ b/companion/src/firmwares/gruvin9x/gruvin9xinterface.cpp @@ -47,7 +47,7 @@ const char * Gruvin9xInterface::getName() const int Gruvin9xInterface::getEEpromSize() { if (board == BOARD_STOCK) { - QSettings settings("companion", "companion"); + QSettings settings; QString avrMCU = settings.value("mcu", QString("m64")).toString(); if (avrMCU==QString("m128")) { return EESIZE_STOCK*2; diff --git a/companion/src/firmwares/opentx/open9xStockeeprom.cpp b/companion/src/firmwares/opentx/open9xStockeeprom.cpp index 0fc602e04..8529f78f8 100644 --- a/companion/src/firmwares/opentx/open9xStockeeprom.cpp +++ b/companion/src/firmwares/opentx/open9xStockeeprom.cpp @@ -593,7 +593,7 @@ enum Functions { #endif FUNC_BACKLIGHT, #if defined(DEBUG) - FUNC_TEST, // should remain the last before MAX as not added in companion9x + FUNC_TEST, // should remain the last before MAX as not added in companion #endif FUNC_MAX }; diff --git a/companion/src/firmwares/opentx/opentxSky9xsimulator.cpp b/companion/src/firmwares/opentx/opentxSky9xsimulator.cpp index 393eff229..b9f5f294e 100644 --- a/companion/src/firmwares/opentx/opentxSky9xsimulator.cpp +++ b/companion/src/firmwares/opentx/opentxSky9xsimulator.cpp @@ -135,7 +135,7 @@ using namespace Open9xSky9x; Open9xSky9xSimulator::Open9xSky9xSimulator(Open9xInterface * open9xInterface): open9xInterface(open9xInterface) { - QSettings settings("companion", "companion"); + QSettings settings; QString path=settings.value("sdPath", ".").toString()+"/"; int i=0; for (i=0; i< std::min(path.length(),1022); i++) { diff --git a/companion/src/firmwares/opentx/opentxTaranisSimulator.cpp b/companion/src/firmwares/opentx/opentxTaranisSimulator.cpp index 3af9d4a86..f278cbd5b 100644 --- a/companion/src/firmwares/opentx/opentxTaranisSimulator.cpp +++ b/companion/src/firmwares/opentx/opentxTaranisSimulator.cpp @@ -145,7 +145,7 @@ OpentxTaranisSimulator::OpentxTaranisSimulator(Open9xInterface * open9xInterface open9xInterface(open9xInterface) { taranisSimulatorBoard = GetEepromInterface()->getBoard(); - QSettings settings("companion", "companion"); + QSettings settings; QString path=settings.value("sdPath", ".").toString()+"/"; int i=0; for (i=0; i< std::min(path.length(),1022); i++) { diff --git a/companion/src/firmwares/opentx/opentxinterface.cpp b/companion/src/firmwares/opentx/opentxinterface.cpp index b4a0294f3..a2bcc4df4 100644 --- a/companion/src/firmwares/opentx/opentxinterface.cpp +++ b/companion/src/firmwares/opentx/opentxinterface.cpp @@ -42,14 +42,10 @@ size_t SizeOfArray( T(&)[ N ] ) return N; } -QStringList o9xservers; - Open9xInterface::Open9xInterface(BoardEnum board): EEPROMInterface(board), efile(new EFile()) { - o9xservers.clear(); - o9xservers << "93.51.182.154" << "open9x.9xforums.com"; } Open9xInterface::~Open9xInterface() @@ -309,7 +305,7 @@ bool Open9xInterface::load(RadioData &radioData, uint8_t *eeprom, int size) std::cout << " wrong size (" << size << ")\n"; return false; } else { - QMessageBox::warning(NULL,"companion", QObject::tr("Your radio probably uses a wrong firmware,\n eeprom size is 4096 but only the first 2048 are used")); + QMessageBox::warning(NULL, "companion", QObject::tr("Your radio probably uses a wrong firmware,\n eeprom size is 4096 but only the first 2048 are used")); size=2048; } } else { @@ -944,14 +940,9 @@ bool Open9xInterface::loadBackup(RadioData &radioData, uint8_t *eeprom, int esiz QString geturl( int board) { - QString url="http://"; - QSettings settings("companion", "companion"); - int server = settings.value("fwserver", 0).toInt(); - if (server >= o9xservers.count()) { - server = 0; - settings.setValue("fwserver",server); - } - url.append(o9xservers.at(server)); + QSettings settings; + QString url = settings.value("compilation-server", OPENTX_FIRMWARE_DOWNLOADS).toString(); + switch(board) { case BOARD_STOCK: case BOARD_M128: @@ -972,27 +963,21 @@ QString geturl( int board) QString getstamp( int board) { - QString url="http://"; - QSettings settings("companion", "companion"); - int server = settings.value("fwserver",0).toInt(); - if (server >=o9xservers.count()) { - server=0; - settings.setValue("fwserver",server); - } - url.append(o9xservers.at(server)); - url.append("/binaries/stamp-opentx-"); + QSettings settings; + QString url = settings.value("compilation-server", OPENTX_FIRMWARE_DOWNLOADS).toString(); + url.append("/stamp-opentx-"); switch(board) { case BOARD_STOCK: - url.append("stock.txt"); + url.append("9x.txt"); break; case BOARD_M128: - url.append("stock128.txt"); + url.append("9x128.txt"); break; case BOARD_GRUVIN9X: - url.append("v4.txt"); + url.append("gruvin9x.txt"); break; case BOARD_SKY9X: - url.append("arm.txt"); + url.append("sky9x.txt"); break; case BOARD_TARANIS: case BOARD_TARANIS_REV4a: @@ -1007,16 +992,10 @@ QString getstamp( int board) QString getrnurl( int board) { - QString url="http://"; - QSettings settings("companion", "companion"); - int server = settings.value("fwserver",0).toInt(); - if (server >=o9xservers.count()) { - server=0; - settings.setValue("fwserver",server); - } - url.append(o9xservers.at(server)); - url.append("/docs/releasenotes-"); - switch(board) { + QSettings settings; + QString url = settings.value("compilation-server", OPENTX_FIRMWARE_DOWNLOADS).toString(); + url.append("/releasenotes-"); + switch(board) { case BOARD_STOCK: case BOARD_M128: case BOARD_GRUVIN9X: @@ -1043,7 +1022,7 @@ void RegisterOpen9xFirmwares() Option extr_options[] = { { "frsky", QObject::tr("Support for frsky telemetry mod"), FRSKY_VARIANT }, { "jeti", QObject::tr("Support for jeti telemetry mod"), 0 }, { "ardupilot", QObject::tr("Support for receiving ardupilot data"), 0 }, { "nmea", QObject::tr("Support for receiving NMEA data"), 0 }, { "mavlink", QObject::tr("Support for MAVLINK devices"), MAVLINK_VARIANT }, { NULL } }; Option fai_options[] = { { "faichoice", QObject::tr("Possibility to enable FAI MODE at field") }, { "faimode", QObject::tr("FAI MODE always enabled") }, { NULL } }; /* 9x board */ - open9x = new Open9xFirmware("opentx-stock", QObject::tr("openTx for 9X board"), new Open9xInterface(BOARD_STOCK), geturl(BOARD_STOCK), getstamp(BOARD_STOCK), getrnurl(BOARD_STOCK), false); + open9x = new Open9xFirmware("opentx-9x", QObject::tr("openTx for 9X board"), new Open9xInterface(BOARD_STOCK), geturl(BOARD_STOCK), getstamp(BOARD_STOCK), getrnurl(BOARD_STOCK), false); open9x->addOptions(ext_options); open9x->addOption("heli", QObject::tr("Enable heli menu and cyclic mix support")); open9x->addOption("templates", QObject::tr("Enable TEMPLATES menu")); @@ -1079,7 +1058,7 @@ void RegisterOpen9xFirmwares() firmwares.push_back(open9x); /* 9x board with M128 chip */ - open9x = new Open9xFirmware("opentx-stock128", QObject::tr("openTx for M128 / 9X board"), new Open9xInterface(BOARD_M128), geturl(BOARD_M128), getstamp(BOARD_M128),getrnurl(BOARD_M128), false); + open9x = new Open9xFirmware("opentx-9x128", QObject::tr("openTx for M128 / 9X board"), new Open9xInterface(BOARD_M128), geturl(BOARD_M128), getstamp(BOARD_M128),getrnurl(BOARD_M128), false); open9x->addOptions(ext_options); open9x->addOption("heli", QObject::tr("Enable heli menu and cyclic mix support")); open9x->addOption("templates", QObject::tr("Enable TEMPLATES menu")); @@ -1175,7 +1154,7 @@ void RegisterOpen9xFirmwares() firmwares.push_back(open9x); /* Gruvin9x board */ - open9x = new Open9xFirmware("opentx-v4", QObject::tr("openTx for Gruvin9x board / 9X"), new Open9xInterface(BOARD_GRUVIN9X), geturl(BOARD_GRUVIN9X), getstamp(BOARD_GRUVIN9X),getrnurl(BOARD_GRUVIN9X), false); + open9x = new Open9xFirmware("opentx-gruvin9x", QObject::tr("openTx for Gruvin9x board / 9X"), new Open9xInterface(BOARD_GRUVIN9X), geturl(BOARD_GRUVIN9X), getstamp(BOARD_GRUVIN9X),getrnurl(BOARD_GRUVIN9X), false); open9x->setVariantBase(FRSKY_VARIANT); open9x->addOption("heli", QObject::tr("Enable heli menu and cyclic mix support")); open9x->addOption("templates", QObject::tr("Enable TEMPLATES menu")); @@ -1239,7 +1218,7 @@ void RegisterOpen9xFirmwares() open9x->addOptions(fai_options); firmwares.push_back(open9x); - QSettings settings("companion", "companion"); + QSettings settings; int rev4a = settings.value("rev4asupport",0).toInt(); if (rev4a) { open9x = new Open9xFirmware("opentx-taranisrev4a", QObject::tr("openTx for FrSky Taranis Rev4a"), new Open9xInterface(BOARD_TARANIS_REV4a), geturl(BOARD_TARANIS_REV4a), getstamp(BOARD_TARANIS_REV4a),getrnurl(BOARD_TARANIS), true); diff --git a/companion/src/firmwares/opentx/opentxinterface.h b/companion/src/firmwares/opentx/opentxinterface.h index 82e8c7671..fb7f3df5c 100644 --- a/companion/src/firmwares/opentx/opentxinterface.h +++ b/companion/src/firmwares/opentx/opentxinterface.h @@ -18,6 +18,9 @@ #include "eeprominterface.h" +#define OPENTX_COMPANION_DOWNLOADS "http://downloads.open-tx.org/companion" +#define OPENTX_FIRMWARE_DOWNLOADS "http://downloads.open-tx.org/firmware" + class EFile; class Open9xInterface : public EEPROMInterface @@ -91,6 +94,7 @@ class Open9xFirmware: public FirmwareInfo { addLanguage("se"); addLanguage("cz"); addLanguage("es"); + addLanguage("pl"); addLanguage("pt"); addTTSLanguage("en"); @@ -100,6 +104,7 @@ class Open9xFirmware: public FirmwareInfo { addTTSLanguage("se"); addTTSLanguage("cz"); addTTSLanguage("sk"); + addTTSLanguage("pl"); addTTSLanguage("pt"); addTTSLanguage("es"); } diff --git a/companion/src/firmwares/th9x/th9xinterface.cpp b/companion/src/firmwares/th9x/th9xinterface.cpp index bf49284ce..9bd0cbc4a 100644 --- a/companion/src/firmwares/th9x/th9xinterface.cpp +++ b/companion/src/firmwares/th9x/th9xinterface.cpp @@ -44,7 +44,7 @@ const char * Th9xInterface::getName() const int Th9xInterface::getEEpromSize() { - QSettings settings("companion", "companion"); + QSettings settings; QString avrMCU = settings.value("mcu", QString("m64")).toString(); if (avrMCU==QString("m128")) { return 2*EESIZE_STOCK; diff --git a/companion/src/generaledit.cpp b/companion/src/generaledit.cpp index 250fc6b0e..fdff37ae9 100644 --- a/companion/src/generaledit.cpp +++ b/companion/src/generaledit.cpp @@ -20,7 +20,7 @@ GeneralEdit::GeneralEdit(RadioData &radioData, QWidget *parent) : ui->setupUi(this); this->setWindowIcon(QIcon(":/icon.png")); - QSettings settings("companion", "companion"); + QSettings settings; QString firmware_id = settings.value("firmware", default_firmware_variant.id).toString(); ui->tabWidget->setCurrentIndex(settings.value("generalEditTab", 0).toInt()); int profile_id=settings.value("profileId", 0).toInt(); @@ -946,7 +946,7 @@ void GeneralEdit::on_PPM4_editingFinished() void GeneralEdit::on_tabWidget_currentChanged(int index) { // TODO why er9x here - QSettings settings("companion", "companion"); + QSettings settings; settings.setValue("generalEditTab",index);//ui->tabWidget->currentIndex()); } @@ -1195,7 +1195,7 @@ void GeneralEdit::on_swGEAChkB_stateChanged(int ) void GeneralEdit::on_calretrieve_PB_clicked() { - QSettings settings("companion", "companion"); + QSettings settings; int profile_id=ui->profile_CB->itemData(ui->profile_CB->currentIndex()).toInt(); settings.beginGroup("Profiles"); QString profile=QString("profile%1").arg(profile_id); @@ -1312,7 +1312,7 @@ void GeneralEdit::on_calretrieve_PB_clicked() void GeneralEdit::on_calstore_PB_clicked() { - QSettings settings("companion", "companion"); + QSettings settings; int profile_id=ui->profile_CB->itemData(ui->profile_CB->currentIndex()).toInt(); settings.beginGroup("Profiles"); QString profile=QString("profile%1").arg(profile_id); diff --git a/companion/src/helpers.cpp b/companion/src/helpers.cpp index 739353e63..a45c6f27c 100644 --- a/companion/src/helpers.cpp +++ b/companion/src/helpers.cpp @@ -1485,19 +1485,10 @@ QString getCenterBeep(ModelData * g_model) return strl.join(", "); } -void populate_icon(QIcon *Icon, QString baseimage) -{ - static QString usedtheme=getTheme(); - Icon->addFile(":/themes/"+usedtheme+"/16/"+baseimage,QSize(16,16)); - Icon->addFile(":/themes/"+usedtheme+"/24/"+baseimage,QSize(24,24)); - Icon->addFile(":/themes/"+usedtheme+"/32/"+baseimage,QSize(32,32)); - Icon->addFile(":/themes/"+usedtheme+"/48/"+baseimage,QSize(48,48)); -} - QString getTheme() { - QSettings settings("companion", "companion"); - int theme_set=settings.value("theme", 1).toInt(); + QSettings settings; + int theme_set = settings.value("theme", 1).toInt(); QString Theme; switch(theme_set) { case 0: @@ -1508,4 +1499,14 @@ QString getTheme() break; } return Theme; -} \ No newline at end of file +} + +CompanionIcon::CompanionIcon(QString baseimage) +{ + static QString theme = getTheme(); + addFile(":/themes/"+theme+"/16/"+baseimage, QSize(16,16)); + addFile(":/themes/"+theme+"/24/"+baseimage, QSize(24,24)); + addFile(":/themes/"+theme+"/32/"+baseimage, QSize(32,32)); + addFile(":/themes/"+theme+"/48/"+baseimage, QSize(48,48)); +} + diff --git a/companion/src/helpers.h b/companion/src/helpers.h index f2dcbc51e..99669e64c 100644 --- a/companion/src/helpers.h +++ b/companion/src/helpers.h @@ -28,9 +28,14 @@ void populateVoiceLangCB(QComboBox *b, QString language); void populateTTraceCB(QComboBox *b, int value); void populateRotEncCB(QComboBox *b, int value, int renumber); void populateBacklightCB(QComboBox *b, const uint8_t value); -void populate_icon(QIcon *Icon, QString baseimage); + QString getTheme(); +class CompanionIcon: public QIcon { + public: + CompanionIcon(QString baseimage); +}; + class GVarGroup : public QObject { Q_OBJECT diff --git a/companion/src/joystickdialog.cpp b/companion/src/joystickdialog.cpp index efec50a56..2c77359a8 100644 --- a/companion/src/joystickdialog.cpp +++ b/companion/src/joystickdialog.cpp @@ -130,7 +130,7 @@ void joystickDialog::on_okButton_clicked() { return; } joystick->close(); - QSettings settings("companion", "companion"); + QSettings settings; settings.beginGroup("JsCalibration"); for (int i=0; i<8;i++) { settings.remove(QString("stick%1_axe").arg(i)); diff --git a/companion/src/lcdwidget.h b/companion/src/lcdwidget.h index 073ba8726..9f01a0b17 100644 --- a/companion/src/lcdwidget.h +++ b/companion/src/lcdwidget.h @@ -58,7 +58,7 @@ class lcdWidget : public QWidget { QPixmap buffer(2*lcdWidth, 2*lcdHeight); QPainter p(&buffer); doPaint(p); - QSettings settings("companion", "companion"); + QSettings settings; bool toclipboard=settings.value("snapshot_to_clipboard", false).toBool(); QApplication::clipboard()->setPixmap( buffer ); if (!toclipboard) { diff --git a/companion/src/logsdialog.cpp b/companion/src/logsdialog.cpp index d86b2efb3..d32b4d6e4 100644 --- a/companion/src/logsdialog.cpp +++ b/companion/src/logsdialog.cpp @@ -38,7 +38,7 @@ logsDialog::logsDialog(QWidget *parent) : ui->customPlot->legend->setSelectedFont(legendFont); ui->customPlot->legend->setSelectable(QCPLegend::spItems); // legend box shall not be selectable, only legend items ui->customPlot->legend->setVisible(false); - QSettings settings("companion", "companion"); + QSettings settings; QString Path=settings.value("gePath", "").toString(); if (Path.isEmpty() || !QFile(Path).exists()) { ui->mapsButton->hide(); @@ -202,7 +202,7 @@ void logsDialog::on_mapsButton_clicked() { ,F_F,F_F,F_F,F_F,I_F,I_F,I_F,I_F\ ,I_F,I_F,I_F,I_F,I_F,I_F,I_F,I_F,I_F,I_F,I_F,I_F}; - QSettings settings("companion", "companion"); + QSettings settings; QString gePath=settings.value("gePath", "").toString(); if (gePath.isEmpty() || !QFile(gePath).exists()) { ui->FieldsTW->setDisabled(false); @@ -578,7 +578,7 @@ void logsDialog::moveLegend() void logsDialog::on_fileOpen_BT_clicked() { - QSettings settings("companion", "companion"); + QSettings settings; QString fileName = QFileDialog::getOpenFileName(this,tr("Select your log file"), settings.value("lastLogDir").toString()); if (!fileName.isEmpty()) { settings.setValue("lastLogDir", fileName); diff --git a/companion/src/main.cpp b/companion/src/main.cpp index 08d738c80..ab2ac2429 100644 --- a/companion/src/main.cpp +++ b/companion/src/main.cpp @@ -76,66 +76,69 @@ class MyProxyStyle : public QProxyStyle int main(int argc, char *argv[]) { - // Start by borrowing any left over settings from companion9x - QSettings c9x_settings("companion9x", "companion9x"); - QSettings com_settings("companion", "companion"); - if (!com_settings.contains("pos")) { - QStringList keys = c9x_settings.allKeys(); - for( QStringList::iterator i = keys.begin(); i != keys.end(); i++ ) - { - com_settings.setValue( *i, c9x_settings.value( *i ) ); - } - } + QCoreApplication::setOrganizationName("OpenTX"); + QCoreApplication::setOrganizationDomain("open-tx.org"); + QCoreApplication::setApplicationName("Companion"); - Q_INIT_RESOURCE(companion); - QApplication app(argc, argv); - app.setApplicationName("OpenTX Companion"); + // Start by borrowing any left over settings from companion9x + QSettings c9x_settings("companion9x", "companion9x"); + QSettings settings; + + if (!settings.contains("pos")) { + QStringList keys = c9x_settings.allKeys(); + for (QStringList::iterator i=keys.begin(); i!=keys.end(); i++) { + settings.setValue(*i, c9x_settings.value(*i)); + } + } + + Q_INIT_RESOURCE(companion); + QApplication app(argc, argv); + app.setApplicationName("OpenTX Companion"); #ifdef __APPLE__ - app.setStyle(new MyProxyStyle); + app.setStyle(new MyProxyStyle); #endif - QString dir; - if(argc) dir = QFileInfo(argv[0]).canonicalPath() + "/lang"; - QSettings settings("companion", "companion"); - QString locale = settings.value("locale",QLocale::system().name()).toString(); - bool showSplash = settings.value("show_splash", true).toBool(); + QString dir; + if (argc) dir = QFileInfo(argv[0]).canonicalPath() + "/lang"; - QTranslator companionTranslator; - companionTranslator.load(":/companion_" + locale); - QTranslator qtTranslator; - qtTranslator.load((QString)"qt_" + locale.left(2), QLibraryInfo::location(QLibraryInfo::TranslationsPath)); -// qDebug() << locale; -// qtTranslator.load("qt_" + QLocale::system().name(), QLibraryInfo::location(QLibraryInfo::TranslationsPath)); - app.installTranslator(&companionTranslator); - app.installTranslator(&qtTranslator); + QString locale = settings.value("locale",QLocale::system().name()).toString(); + bool showSplash = settings.value("show_splash", true).toBool(); - QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8")); + QTranslator companionTranslator; + companionTranslator.load(":/companion_" + locale); + QTranslator qtTranslator; + qtTranslator.load((QString)"qt_" + locale.left(2), QLibraryInfo::location(QLibraryInfo::TranslationsPath)); + app.installTranslator(&companionTranslator); + app.installTranslator(&qtTranslator); - QString firmware_id = settings.value("firmware", default_firmware_variant.id).toString(); - firmware_id.replace("open9x", "opentx"); - firmware_id.replace("x9da", "taranis"); - QPixmap pixmap; - if (firmware_id.contains("taranis")) - pixmap = QPixmap(":/images/splasht.png"); - else - pixmap = QPixmap(":/images/splash.png"); - QSplashScreen *splash = new QSplashScreen(pixmap); + QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8")); - RegisterFirmwares(); + QString firmware_id = settings.value("firmware", default_firmware_variant.id).toString(); + firmware_id.replace("open9x", "opentx"); + firmware_id.replace("x9da", "taranis"); - settings.setValue("firmware", firmware_id); - current_firmware_variant = GetFirmwareVariant(firmware_id); - // qDebug() << current_firmware_variant; + QPixmap pixmap = QPixmap(firmware_id.contains("taranis") ? ":/images/splasht.png" : ":/images/splash.png"); + QSplashScreen *splash = new QSplashScreen(pixmap); - MainWindow mainWin; - - if (showSplash) { - splash->show(); - QTimer::singleShot(1000*SPLASH_TIME, splash, SLOT(close())); - QTimer::singleShot(1000*SPLASH_TIME, &mainWin, SLOT(show())); - } - else { - mainWin.show(); - } - return app.exec(); + RegisterFirmwares(); + + settings.setValue("firmware", firmware_id); + current_firmware_variant = GetFirmwareVariant(firmware_id); + + MainWindow *mainWin = new MainWindow(); + if (showSplash) { + splash->show(); + QTimer::singleShot(1000*SPLASH_TIME, splash, SLOT(close())); + QTimer::singleShot(1000*SPLASH_TIME, mainWin, SLOT(show())); + } + else { + mainWin->show(); + } + + int result = app.exec(); + + delete splash; + delete mainWin; + + return result; } diff --git a/companion/src/mainwindow.cpp b/companion/src/mainwindow.cpp index 1268265f1..8e1e05cc2 100644 --- a/companion/src/mainwindow.cpp +++ b/companion/src/mainwindow.cpp @@ -62,28 +62,26 @@ #include "helpers.h" #include "firmwares/opentx/opentxinterface.h" // TODO get rid of this include -#define DONATE_STR "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=QUZ48K4SEXDP2" +#define DONATE_STR "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=QUZ48K4SEXDP2" + #ifdef __APPLE__ -#define C9X_STAMP "http://companion9x.googlecode.com/svn/trunk/companion9x-macosx.stamp" -#define C9X_INSTALLER "/Companion9xMacUpdate.%1.pkg.zip" -#define C9X_URL "http://companion9x.googlecode.com/files/Companion9xMacUpdate.%1.pkg.zip" + #define C9X_STAMP OPENTX_COMPANION_DOWNLOADS "/companion-macosx.stamp" + #define C9X_INSTALLER "/CompanionMacUpdate.%1.pkg.zip" #else -#define C9X_STAMP "http://companion9x.googlecode.com/svn/trunk/companion9x.stamp" -#define C9X_INSTALLER "/companion9xInstall_v%1.exe" -#define C9X_URL "http://companion9x.googlecode.com/files/companion9xInstall_v%1.exe" + #define C9X_STAMP OPENTX_COMPANION_DOWNLOADS "/companion-windows.stamp" + #define C9X_INSTALLER "/companionInstall_%1.exe" #endif #if defined WIN32 || !defined __GNUC__ -#include -#define sleep(x) Sleep(x*1000) + #include + #define sleep(x) Sleep(x*1000) #else -#include -#include "mountlist.h" + #include + #include "mountlist.h" #endif - MainWindow::MainWindow(): -downloadDialog_forWait(NULL) + downloadDialog_forWait(NULL) { mdiArea = new QMdiArea; mdiArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAsNeeded); @@ -96,7 +94,7 @@ downloadDialog_forWait(NULL) this, SLOT(setActiveSubWindow(QWidget*))); MaxRecentFiles=MAX_RECENT; - QSettings settings("companion", "companion"); + QSettings settings; int icon_size=settings.value("icon_size", 1).toInt(); switch (icon_size) { case 0: @@ -138,8 +136,9 @@ downloadDialog_forWait(NULL) // give time to the splash to disappear and main window to open before starting updates int updateDelay = 1000; bool showSplash = settings.value("show_splash", true).toBool(); - if (showSplash) - updateDelay += (SPLASH_TIME*1000); + if (showSplash) { + updateDelay += (SPLASH_TIME*1000); + } QTimer::singleShot(updateDelay, this, SLOT(doAutoUpdates())); QTimer::singleShot(updateDelay, this, SLOT(displayWarnings())); @@ -189,7 +188,7 @@ downloadDialog_forWait(NULL) void MainWindow::displayWarnings() { - QSettings settings("companion", "companion"); + QSettings settings; int warnId=settings.value("warningId", 0 ).toInt(); if (warnIdstamp; @@ -289,7 +288,7 @@ void MainWindow::checkForUpdateFinished(QNetworkReply * reply) "Would you like to download it?").arg(version) , QMessageBox::Yes | QMessageBox::No); - QSettings settings("companion", "companion"); + QSettings settings; if (ret == QMessageBox::Yes) { #if defined __APPLE__ @@ -299,14 +298,14 @@ void MainWindow::checkForUpdateFinished(QNetworkReply * reply) #endif if (!fileName.isEmpty()) { settings.setValue("lastUpdatesDir", QFileInfo(fileName).dir().absolutePath()); - downloadDialog * dd = new downloadDialog(this, QString(C9X_URL).arg(version), fileName); + downloadDialog * dd = new downloadDialog(this, QString(OPENTX_COMPANION_DOWNLOADS C9X_INSTALLER).arg(version), fileName); installer_fileName = fileName; connect(dd, SIGNAL(accepted()), this, SLOT(updateDownloaded())); dd->show(); } } #else - QMessageBox::warning(this, tr("New release available"), tr("A new release of Companion is available please check the repository")); + QMessageBox::warning(this, tr("New release available"), tr("A new release of Companion is available please check the OpenTX website!")); #endif } else { if (showcheckForUpdatesResult && check1done && check2done) @@ -331,7 +330,7 @@ void MainWindow::updateDownloaded() void MainWindow::downloadLatestFW(FirmwareInfo * firmware, const QString & firmwareId) { QString url, ext, cpuid; - QSettings settings("companion", "companion"); + QSettings settings; url = firmware->getUrl(firmwareId); cpuid=settings.value("cpuid","").toString(); ext = url.mid(url.lastIndexOf(".")); @@ -354,7 +353,7 @@ void MainWindow::downloadLatestFW(FirmwareInfo * firmware, const QString & firmw void MainWindow::reply1Accepted() { QString errormsg; - QSettings settings("companion", "companion"); + QSettings settings; bool autoflash=settings.value("burnFirmware", true).toBool(); bool addversion=settings.value("rename_firmware_files", false).toBool(); settings.beginGroup("FwRevisions"); @@ -478,7 +477,7 @@ void MainWindow::reply1Finished(QNetworkReply * reply) // TODO delete downloadDialog_forWait? } - QSettings settings("companion", "companion"); + QSettings settings; cpuid=settings.value("cpuid","").toString(); QByteArray qba = reply->readAll(); int i = qba.indexOf("SVN_VERS"); @@ -630,13 +629,14 @@ void MainWindow::reply1Finished(QNetworkReply * reply) void MainWindow::closeEvent(QCloseEvent *event) { - QSettings settings("companion", "companion"); + QSettings settings; settings.setValue("mainWindowGeometry", saveGeometry()); settings.setValue("mainWindowState", saveState()); mdiArea->closeAllSubWindows(); if (mdiArea->currentSubWindow()) { event->ignore(); - } else { + } + else { event->accept(); } } @@ -650,7 +650,7 @@ void MainWindow::newFile() void MainWindow::openFile() { - QSettings settings("companion", "companion"); + QSettings settings; QString fileName = QFileDialog::getOpenFileName(this, tr("Open"), settings.value("lastDir").toString(),tr(EEPROM_FILES_FILTER)); if (!fileName.isEmpty()) { settings.setValue("lastDir", QFileInfo(fileName).dir().absolutePath()); @@ -683,7 +683,7 @@ void MainWindow::saveAs() void MainWindow::openRecentFile() { - QSettings settings("companion", "companion"); + QSettings settings; QAction *action = qobject_cast(sender()); if (action) { QString fileName=action->data().toString(); @@ -705,14 +705,14 @@ void MainWindow::openRecentFile() void MainWindow::loadProfile() { - QSettings settings("companion", "companion"); + QSettings settings; QAction *action = qobject_cast(sender()); int chord,defmod, burnfw; bool renfw; if (action) { int profnum=action->data().toInt(); - QSettings settings("companion", "companion"); + QSettings settings; settings.setValue("ActiveProfile",profnum); settings.beginGroup("Profiles"); QString profile=QString("profile%1").arg(profnum); @@ -757,8 +757,8 @@ void MainWindow::unloadProfile() { ActiveProfile=0; ActiveProfileName=""; - QSettings settings("companion", "companion"); - settings.setValue("ActiveProfile",0); + QSettings settings; + settings.setValue("ActiveProfile", 0); FirmwareInfo *firmware = GetCurrentFirmware(); setWindowTitle(tr("Companion - Models and Settings Editor - %1").arg(firmware->name)); } @@ -770,7 +770,8 @@ void MainWindow::preferences() FirmwareInfo *firmware = GetCurrentFirmware(); if (ActiveProfile) { setWindowTitle(tr("Companion - Models and Settings Editor - %1 - profile %2").arg(firmware->name).arg(ActiveProfileName)); - } else { + } + else { setWindowTitle(tr("Companion - Models and Settings Editor - %1").arg(firmware->name)); } @@ -1080,21 +1081,17 @@ void MainWindow::burnFrom() QStringList str; str << path << tempFile; avrOutputDialog *ad = new avrOutputDialog(this,"", str, tr("Read Models and Settings From Tx")); //, AVR_DIALOG_KEEP_OPEN); - QIcon icon; - populate_icon(&icon,"read_eeprom.png"); - ad->setWindowIcon(icon); + ad->setWindowIcon(CompanionIcon("read_eeprom.png")); res = ad->exec(); sleep(1); } } else { QStringList str = GetReceiveEEpromCommand(tempFile); avrOutputDialog *ad = new avrOutputDialog(this, GetAvrdudeLocation(), str, tr("Read Models and Settings From Tx")); //, AVR_DIALOG_KEEP_OPEN); - QIcon icon; - populate_icon(&icon,"read_eeprom.png"); - ad->setWindowIcon(icon); + ad->setWindowIcon(CompanionIcon("read_eeprom.png")); res = ad->exec(); } - if(QFileInfo(tempFile).exists() && res) { + if (QFileInfo(tempFile).exists() && res) { MdiChild *child = createMdiChild(); child->newFile(); child->loadFile(tempFile, false); @@ -1104,7 +1101,7 @@ void MainWindow::burnFrom() void MainWindow::burnExtenalToEEPROM() { - QSettings settings("companion", "companion"); + QSettings settings; QString fileName; bool backup = false; burnDialog *cd = new burnDialog(this, 1, &fileName, &backup); @@ -1141,18 +1138,14 @@ void MainWindow::burnExtenalToEEPROM() QStringList str; str << path << backupFile; avrOutputDialog *ad = new avrOutputDialog(this,"", str, tr("Backup Models and Settings From Tx")); //, AVR_DIALOG_KEEP_OPEN); - QIcon icon; - populate_icon(&icon,"read_eeprom.png"); - ad->setWindowIcon(icon); + ad->setWindowIcon(CompanionIcon("read_eeprom.png")); ad->exec(); sleep(1); } } else { QStringList str = GetReceiveEEpromCommand(backupFile); avrOutputDialog *ad = new avrOutputDialog(this, GetAvrdudeLocation(), str, tr("Backup Models and Settings From Tx")); - QIcon icon; - populate_icon(&icon,"read_eeprom.png"); - ad->setWindowIcon(icon); + ad->setWindowIcon(CompanionIcon("read_eeprom.png")); ad->exec(); sleep(1); } @@ -1162,9 +1155,7 @@ void MainWindow::burnExtenalToEEPROM() QString tempFlash = tempDir + "/flash.bin"; QStringList str = GetReceiveFlashCommand(tempFlash); avrOutputDialog *ad = new avrOutputDialog(this, GetAvrdudeLocation(), str, "Read Firmware From Tx"); - QIcon icon; - populate_icon(&icon,"read_flash.png"); - ad->setWindowIcon(icon); + ad->setWindowIcon(CompanionIcon("read_flash.png")); ad->exec(); sleep(1); QString restoreFile = tempDir + "/compat.bin"; @@ -1177,7 +1168,8 @@ void MainWindow::burnExtenalToEEPROM() int rev = getEpromVersion(restoreFile); if ((rev / 100) != (oldrev / 100)) { QMessageBox::warning(this, tr("Warning"), tr("The transmitter firmware belongs to another product family, check file and preferences!")); - } else if (rev < oldrev) { + } + else if (rev < oldrev) { QMessageBox::warning(this, tr("Warning"), tr("The transmitter firmware is outdated, please upgrade!")); } fileName = restoreFile; @@ -1197,19 +1189,18 @@ void MainWindow::burnExtenalToEEPROM() QStringList str; str << path << backupFile; avrOutputDialog *ad = new avrOutputDialog(this,"", str, tr("Backup Models and Settings From Tx")); //, AVR_DIALOG_KEEP_OPEN); - QIcon icon; - populate_icon(&icon,"read_eeprom.png"); - ad->setWindowIcon(icon); + ad->setWindowIcon(CompanionIcon("read_eeprom.png")); ad->exec(); + delete ad; sleep(1); } - } else { + } + else { QStringList str = ((MainWindow *)this->parent())->GetReceiveEEpromCommand(backupFile); avrOutputDialog *ad = new avrOutputDialog(this, ((MainWindow *)this->parent())->GetAvrdudeLocation(), str, tr("Backup Models and Settings From Tx")); - QIcon icon; - populate_icon(&icon,"read_eeprom.png"); - ad->setWindowIcon(icon); + ad->setWindowIcon(CompanionIcon("read_eeprom.png")); ad->exec(); + delete ad; sleep(1); } } @@ -1219,23 +1210,23 @@ void MainWindow::burnExtenalToEEPROM() if (path.isEmpty()) { QMessageBox::warning(this, tr("Taranis radio not found"), tr("Impossible to identify the radio on your system, please verify the eeprom disk is connected.")); return; - } else { + } + else { QStringList str; str << fileName << path; avrOutputDialog *ad = new avrOutputDialog(this,"", str, tr("Write Models and Settings To Tx")); //, AVR_DIALOG_KEEP_OPEN); - QIcon icon; - populate_icon(&icon,"read_eeprom.png"); - ad->setWindowIcon(icon); + ad->setWindowIcon(CompanionIcon("read_eeprom.png")); ad->exec(); + delete ad; sleep(1); } - } else { + } + else { QStringList str = GetSendEEpromCommand(fileName); avrOutputDialog *ad = new avrOutputDialog(this, GetAvrdudeLocation(), str, "Write Models and Settings To Tx", AVR_DIALOG_SHOW_DONE); - QIcon icon; - populate_icon(&icon,"write_eeprom.png"); - ad->setWindowIcon(icon); + ad->setWindowIcon(CompanionIcon("write_eeprom.png")); ad->exec(); + delete ad; } } } @@ -1327,7 +1318,8 @@ bool MainWindow::convertEEPROM(QString backupFile, QString restoreFile, QString } else { version = fwBuild.toInt(); // TODO changer le nom de la variable } - } else { + } + else { version = ((Open9xFirmware *)firmware)->getEepromVersion(revision); } } @@ -1344,11 +1336,8 @@ bool MainWindow::convertEEPROM(QString backupFile, QString restoreFile, QString long result = file.read((char*)eeprom, eeprom_size); file.close(); - RadioData radioData; - if (!LoadEeprom(radioData, eeprom, eeprom_size)) - return false; - - if (!firmware->saveEEPROM(eeprom, radioData, variant, version)) + QSharedPointer radioData = QSharedPointer(new RadioData()); + if (!LoadEeprom(*radioData, eeprom, eeprom_size) || !firmware->saveEEPROM(eeprom, *radioData, variant, version)) return false; QFile file2(restoreFile); @@ -1366,7 +1355,7 @@ bool MainWindow::convertEEPROM(QString backupFile, QString restoreFile, QString void MainWindow::burnToFlash(QString fileToFlash) { - QSettings settings("companion", "companion"); + QSettings settings; QString fileName; bool backup = settings.value("backupOnFlash", false).toBool(); if(!fileToFlash.isEmpty()) @@ -1399,18 +1388,17 @@ void MainWindow::burnToFlash(QString fileToFlash) } QStringList str = GetReceiveEEpromCommand(backupFile); avrOutputDialog *ad = new avrOutputDialog(this, GetAvrdudeLocation(), str, tr("Backup Models and Settings From Tx"), AVR_DIALOG_CLOSE_IF_SUCCESSFUL); - QIcon icon; - populate_icon(&icon,"read_eeprom.png"); - ad->setWindowIcon(icon); + ad->setWindowIcon(CompanionIcon("read_eeprom.png")); int res = ad->exec(); + delete ad; if (QFileInfo(backupFile).exists() && res) { sleep(1); QStringList str = GetSendFlashCommand(fileName); avrOutputDialog *ad = new avrOutputDialog(this, GetAvrdudeLocation(), str, tr("Write Firmware To Tx"), AVR_DIALOG_CLOSE_IF_SUCCESSFUL); - QIcon iconw; - populate_icon(&iconw,"write_eeprom.png"); + CompanionIcon iconw("write_eeprom.png"); ad->setWindowIcon(iconw); int res = ad->exec(); + delete ad; if (res) { QString restoreFile = tempDir + "/restore.bin"; if (!convertEEPROM(backupFile, restoreFile, fileName)) { @@ -1421,17 +1409,21 @@ void MainWindow::burnToFlash(QString fileToFlash) QStringList str = GetSendEEpromCommand(restoreFile); avrOutputDialog *ad = new avrOutputDialog(this, GetAvrdudeLocation(), str, tr("Restore Models and Settings To Tx"), AVR_DIALOG_CLOSE_IF_SUCCESSFUL); ad->setWindowIcon(iconw); - res=ad->exec(); + res = ad->exec(); + delete ad; if (!res) { QMessageBox::warning(this, tr("Restore failed"), tr("Could not restore Models and Settings to TX. The models and settings data file can be found at: %1").arg(backupFile)); } - } else { + } + else { QMessageBox::warning(this, tr("Firmware write failed"), tr("Could not write firmware to to transmitter. The models and settings data file can be found at: %1").arg(backupFile)); } - } else { + } + else { QMessageBox::warning(this, tr("Backup failed"), tr("Cannot backup existing Models and Settings from TX. Firmware write process aborted")); } - } else { + } + else { bool backupEnable=settings.value("backupEnable", true).toBool(); QString backupPath=settings.value("backupPath", "").toString(); if (!QDir(backupPath).exists()) { @@ -1445,26 +1437,24 @@ void MainWindow::burnToFlash(QString fileToFlash) QString backupFile=backupPath+"/backup-"+QDateTime().currentDateTime().toString("yyyy-MM-dd-hhmmss")+".bin"; QStringList str = GetReceiveEEpromCommand(backupFile); avrOutputDialog *ad = new avrOutputDialog(this, GetAvrdudeLocation(), str, tr("Backup Models and Settings From Tx")); - QIcon icon; - populate_icon(&icon,"read_eeprom.png"); - ad->setWindowIcon(icon); + ad->setWindowIcon(CompanionIcon("read_eeprom.png")); ad->exec(); + delete ad; sleep(1); } QStringList str = GetSendFlashCommand(fileName); avrOutputDialog *ad = new avrOutputDialog(this, GetAvrdudeLocation(), str, tr("Write Firmware To Tx"), AVR_DIALOG_SHOW_DONE); - QIcon iconw; - populate_icon(&iconw,"write_flash.png"); - ad->setWindowIcon(iconw); + ad->setWindowIcon(CompanionIcon("write_flash.png")); ad->exec(); + delete ad; } } } void MainWindow::burnExtenalFromEEPROM() { - QSettings settings("companion", "companion"); + QSettings settings; QString fileName = QFileDialog::getSaveFileName(this, tr("Save transmitter Models and Settings to File"), settings.value("lastDir").toString(), tr(EXTERNAL_EEPROM_FILES_FILTER)); if (!fileName.isEmpty()) { EEPROMInterface *eepromInterface = GetEepromInterface(); @@ -1473,30 +1463,30 @@ void MainWindow::burnExtenalFromEEPROM() if (path.isEmpty()) { QMessageBox::warning(this, tr("Taranis radio not found"), tr("Impossible to identify the radio on your system, please verify that the eeprom disk is connected.")); return; - } else { + } + else { QStringList str; str << path << fileName; avrOutputDialog *ad = new avrOutputDialog(this,"", str, tr("Read Models and Settings From Tx")); //, AVR_DIALOG_KEEP_OPEN); - QIcon icon; - populate_icon(&icon,"read_eeprom.png"); - ad->setWindowIcon(icon); + ad->setWindowIcon(CompanionIcon("read_eeprom.png")); ad->exec(); + delete ad; } - } else { + } + else { settings.setValue("lastDir", QFileInfo(fileName).dir().absolutePath()); QStringList str = GetReceiveEEpromCommand(fileName); avrOutputDialog *ad = new avrOutputDialog(this, GetAvrdudeLocation(), str, tr("Read Models and Settings From Tx")); - QIcon icon; - populate_icon(&icon,"read_eeprom.png"); - ad->setWindowIcon(icon); + ad->setWindowIcon(CompanionIcon("read_eeprom.png")); ad->exec(); + delete ad; } } } void MainWindow::burnFromFlash() { - QSettings settings("companion", "companion"); + QSettings settings; QString fileName = QFileDialog::getSaveFileName(this,tr("Read Tx Firmware to File"), settings.value("lastFlashDir").toString(),tr(FLASH_FILES_FILTER)); if (!fileName.isEmpty()) { QFile file(fileName); @@ -1506,12 +1496,10 @@ void MainWindow::burnFromFlash() settings.setValue("lastFlashDir",QFileInfo(fileName).dir().absolutePath()); QStringList str = GetReceiveFlashCommand(fileName); avrOutputDialog *ad = new avrOutputDialog(this, GetAvrdudeLocation(), str, "Read Firmware From Tx"); - QIcon icon; - populate_icon(&icon,"read_flash.png"); - ad->setWindowIcon(icon); + ad->setWindowIcon(CompanionIcon("read_flash.png")); ad->exec(); + delete ad; } - } void MainWindow::burnConfig() @@ -1547,7 +1535,7 @@ void MainWindow::logFile() void MainWindow::about() { QString aboutStr = "

"; - aboutStr.append("OpenTX Home Page:
http://open-tx.org

"); + aboutStr.append("OpenTX Home Page: http://www.open-tx.org

"); aboutStr.append(tr("The Companion project was originally forked from eePe")+QString(" http://code.google.com/p/eepe

")); aboutStr.append(tr("If you've found this program useful, please support by")); aboutStr.append(" "); @@ -1584,7 +1572,7 @@ void MainWindow::updateMenus() updateRecentFileActions(); updateProfilesActions(); bool notfound=true; - QSettings settings("companion", "companion"); + QSettings settings; settings.beginGroup("Profiles"); for (int i=0; isetShortcuts(QKeySequence::New); newAct->setStatusTip(tr("Create a new file")); connect(newAct, SIGNAL(triggered()), this, SLOT(newFile())); - QIcon openActIcon; - populate_icon(&openActIcon,"open.png"); - openAct = new QAction(openActIcon, tr("&Open..."), this); + openAct = new QAction(CompanionIcon("open.png"), tr("&Open..."), this); openAct->setShortcuts(QKeySequence::Open); openAct->setStatusTip(tr("Open an existing file")); connect(openAct, SIGNAL(triggered()), this, SLOT(openFile())); - loadbackupAct = new QAction(openActIcon, tr("&loadBackup..."), this); + loadbackupAct = new QAction(CompanionIcon("open.png"), tr("&loadBackup..."), this); loadbackupAct->setStatusTip(tr("Load backup from file")); connect(loadbackupAct, SIGNAL(triggered()), this, SLOT(loadBackup())); - QIcon saveActIcon; - populate_icon(&saveActIcon,"save.png"); - saveAct = new QAction(saveActIcon, tr("&Save"), this); + saveAct = new QAction(CompanionIcon("save.png"), tr("&Save"), this); saveAct->setShortcuts(QKeySequence::Save); saveAct->setStatusTip(tr("Save the document to disk")); connect(saveAct, SIGNAL(triggered()), this, SLOT(save())); - QIcon saveAsActIcon; - populate_icon(&saveAsActIcon,"saveas.png"); - saveAsAct = new QAction(saveAsActIcon, tr("Save &As..."), this); + saveAsAct = new QAction(CompanionIcon("saveas.png"), tr("Save &As..."), this); saveAsAct->setShortcuts(QKeySequence::SaveAs); saveAsAct->setStatusTip(tr("Save the document under a new name")); connect(saveAsAct, SIGNAL(triggered()), this, SLOT(saveAs())); - QIcon logsActIcon; - populate_icon(&logsActIcon,"logs.png"); - logsAct = new QAction(logsActIcon, tr("Lo&gs"), this); + logsAct = new QAction(CompanionIcon("logs.png"), tr("Lo&gs"), this); logsAct->setShortcut(tr("Ctrl+G")); logsAct->setStatusTip(tr("Open log file")); connect(logsAct, SIGNAL(triggered()), this, SLOT(logFile())); - QIcon preferencesActIcon; - populate_icon(&preferencesActIcon,"preferences.png"); - preferencesAct = new QAction(preferencesActIcon, tr("&Preferences..."), this); + preferencesAct = new QAction(CompanionIcon("preferences.png"), tr("&Preferences..."), this); preferencesAct->setStatusTip(tr("Edit general preferences")); connect(preferencesAct, SIGNAL(triggered()), this, SLOT(preferences())); - QIcon checkForUpdatesActIcon; - populate_icon(&checkForUpdatesActIcon,"update.png"); - checkForUpdatesAct = new QAction(checkForUpdatesActIcon, tr("&Check for updates..."), this); + checkForUpdatesAct = new QAction(CompanionIcon("update.png"), tr("&Check for updates..."), this); checkForUpdatesAct->setStatusTip(tr("Check for new version of Companion")); connect(checkForUpdatesAct, SIGNAL(triggered()), this, SLOT(doUpdates())); - QIcon contributorsActIcon; - populate_icon(&contributorsActIcon,"contributors.png"); - contributorsAct = new QAction(contributorsActIcon, tr("Contributors &List..."), this); + contributorsAct = new QAction(CompanionIcon("contributors.png"), tr("Contributors &List..."), this); contributorsAct->setStatusTip(tr("Show Companion contributors list")); connect(contributorsAct, SIGNAL(triggered()), this, SLOT(contributors())); - QIcon changelogActIcon; - populate_icon(&changelogActIcon,"changelog.png"); - changelogAct = new QAction(changelogActIcon, tr("ChangeLog..."), this); + changelogAct = new QAction(CompanionIcon("changelog.png"), tr("ChangeLog..."), this); changelogAct->setStatusTip(tr("Show Companion changelog")); connect(changelogAct, SIGNAL(triggered()), this, SLOT(changelog())); - QIcon fwchangelogActIcon; - populate_icon(&fwchangelogActIcon,"changelog.png"); - fwchangelogAct = new QAction(fwchangelogActIcon, tr("Firmware ChangeLog..."), this); + fwchangelogAct = new QAction(CompanionIcon("changelog.png"), tr("Firmware ChangeLog..."), this); fwchangelogAct->setStatusTip(tr("Show firmware changelog")); connect(fwchangelogAct, SIGNAL(triggered()), this, SLOT(fwchangelog())); - QIcon compareActIcon; - populate_icon(&compareActIcon,"compare.png"); - compareAct = new QAction(compareActIcon, tr("Compare..."), this); + compareAct = new QAction(CompanionIcon("customize.png"), tr("Compare..."), this); compareAct->setStatusTip(tr("Compare models")); compareAct->setEnabled(false); connect(compareAct, SIGNAL(triggered()), this, SLOT(compare())); - QIcon customizeSplashActIcon; - populate_icon(&customizeSplashActIcon,"customize.png"); - customizeSplashAct = new QAction(customizeSplashActIcon, tr("Customize your &TX..."), this); + customizeSplashAct = new QAction(CompanionIcon("customize.png"), tr("Customize your &TX..."), this); customizeSplashAct->setStatusTip(tr("Customize the splash screen of your TX")); connect(customizeSplashAct, SIGNAL(triggered()), this, SLOT(customizeSplash())); - -//! [0] - QIcon exitActIcon; - populate_icon(&exitActIcon,"exit.png"); - exitAct = new QAction(exitActIcon, tr("E&xit"), this); + exitAct = new QAction(CompanionIcon("exit.png"), tr("E&xit"), this); exitAct->setShortcuts(QKeySequence::Quit); exitAct->setStatusTip(tr("Exit the application")); connect(exitAct, SIGNAL(triggered()), qApp, SLOT(closeAllWindows())); -//! [0] - QIcon cutActIcon; - populate_icon(&cutActIcon,"cut.png"); - cutAct = new QAction(cutActIcon, tr("Cu&t"), this); + cutAct = new QAction(CompanionIcon("cut.png"), tr("Cu&t"), this); cutAct->setShortcuts(QKeySequence::Cut); cutAct->setStatusTip(tr("Cut the current selection's contents to the " "clipboard")); connect(cutAct, SIGNAL(triggered()), this, SLOT(cut())); - QIcon copyActIcon; - populate_icon(©ActIcon,"copy.png"); - copyAct = new QAction(copyActIcon, tr("&Copy"), this); + copyAct = new QAction(CompanionIcon("copy.png"), tr("&Copy"), this); copyAct->setShortcuts(QKeySequence::Copy); copyAct->setStatusTip(tr("Copy the current selection's contents to the " "clipboard")); connect(copyAct, SIGNAL(triggered()), this, SLOT(copy())); - QIcon pasteActIcon; - populate_icon(&pasteActIcon,"paste.png"); - pasteAct = new QAction(pasteActIcon, tr("&Paste"), this); + pasteAct = new QAction(CompanionIcon("paste.png"), tr("&Paste"), this); pasteAct->setShortcuts(QKeySequence::Paste); pasteAct->setStatusTip(tr("Paste the clipboard's contents into the current " "selection")); connect(pasteAct, SIGNAL(triggered()), this, SLOT(paste())); - QIcon burnToActIcon; - populate_icon(&burnToActIcon,"write_eeprom.png"); - burnToAct = new QAction(burnToActIcon, tr("&Write Models and Settings To Tx"), this); + burnToAct = new QAction(CompanionIcon("write_eeprom.png"), tr("&Write Models and Settings To Tx"), this); burnToAct->setShortcut(tr("Ctrl+Alt+W")); burnToAct->setStatusTip(tr("Write Models and Settings to transmitter")); connect(burnToAct,SIGNAL(triggered()),this,SLOT(burnTo())); - QIcon burnFromActIcon; - populate_icon(&burnFromActIcon,"read_eeprom.png"); - burnFromAct = new QAction(burnFromActIcon, tr("&Read Models and Settings From Tx"), this); + burnFromAct = new QAction(CompanionIcon("read_eeprom.png"), tr("&Read Models and Settings From Tx"), this); burnFromAct->setShortcut(tr("Ctrl+Alt+R")); burnFromAct->setStatusTip(tr("Read Models and Settings from transmitter")); connect(burnFromAct,SIGNAL(triggered()),this,SLOT(burnFrom())); - QIcon burnToFlashActIcon; - populate_icon(&burnToFlashActIcon,"write_flash.png"); - burnToFlashAct = new QAction(burnToFlashActIcon, tr("Write Firmware"), this); + burnToFlashAct = new QAction(CompanionIcon("write_flash.png"), tr("Write Firmware"), this); burnToFlashAct->setStatusTip(tr("Write firmware to transmitter")); connect(burnToFlashAct,SIGNAL(triggered()),this,SLOT(burnToFlash())); - QIcon burnExtenalToEEPROMActIcon; - populate_icon(&burnExtenalToEEPROMActIcon,"write_eeprom_file.png"); - burnExtenalToEEPROMAct = new QAction(burnExtenalToEEPROMActIcon, tr("Write Models and Settings from file to Tx"), this); + burnExtenalToEEPROMAct = new QAction(CompanionIcon("write_eeprom_file.png"), tr("Write Models and Settings from file to Tx"), this); burnExtenalToEEPROMAct->setStatusTip(tr("Write Models and Settings from file to transmitter")); connect(burnExtenalToEEPROMAct,SIGNAL(triggered()),this,SLOT(burnExtenalToEEPROM())); - QIcon burnExtenalFromEEPROMActIcon; - populate_icon(&burnExtenalFromEEPROMActIcon,"read_eeprom_file.png"); - burnExtenalFromEEPROMAct = new QAction(burnExtenalFromEEPROMActIcon, tr("Save transmitter Models and Settings to file"), this); + burnExtenalFromEEPROMAct = new QAction(CompanionIcon("read_eeprom_file.png"), tr("Save transmitter Models and Settings to file"), this); burnExtenalFromEEPROMAct->setStatusTip(tr("Save the Models and Settings from the transmitter to a file")); connect(burnExtenalFromEEPROMAct,SIGNAL(triggered()),this,SLOT(burnExtenalFromEEPROM())); - QIcon burnFromFlashActIcon; - populate_icon(&burnFromFlashActIcon,"read_flash.png"); - burnFromFlashAct = new QAction(burnFromFlashActIcon, tr("Read Firmware"), this); + burnFromFlashAct = new QAction(CompanionIcon("read_flash.png"), tr("Read Firmware"), this); burnFromFlashAct->setStatusTip(tr("Read firmware from transmitter")); connect(burnFromFlashAct,SIGNAL(triggered()),this,SLOT(burnFromFlash())); - QIcon burnConfigActIcon; - populate_icon(&burnConfigActIcon,"configure.png"); - burnConfigAct = new QAction(burnConfigActIcon, tr("&Configure..."), this); + burnConfigAct = new QAction(CompanionIcon("configure.png"), tr("&Configure..."), this); burnConfigAct->setStatusTip(tr("Configure software for reading from and writing to the transmitter")); connect(burnConfigAct,SIGNAL(triggered()),this,SLOT(burnConfig())); EEPROMInterface *eepromInterface = GetEepromInterface(); if (!IS_ARM(eepromInterface->getBoard())) { - QIcon burnListActIcon; - populate_icon(&burnListActIcon,"list.png"); - burnListAct = new QAction(burnListActIcon, tr("&List programmers"), this); + burnListAct = new QAction(CompanionIcon("list.png"), tr("&List programmers"), this); burnListAct->setStatusTip(tr("List available programmers")); connect(burnListAct,SIGNAL(triggered()),this,SLOT(burnList())); - QIcon burnFusesActIcon; - populate_icon(&burnFusesActIcon,"fuses.png"); - burnFusesAct = new QAction(burnFusesActIcon, tr("&Fuses..."), this); + burnFusesAct = new QAction(CompanionIcon("fuses.png"), tr("&Fuses..."), this); burnFusesAct->setStatusTip(tr("Show fuses dialog")); connect(burnFusesAct,SIGNAL(triggered()),this,SLOT(burnFuses())); } - QIcon simulateActIcon; - populate_icon(&simulateActIcon,"simulate.png"); - simulateAct = new QAction(simulateActIcon, tr("&Simulate"), this); + + simulateAct = new QAction(CompanionIcon("simulate.png"), tr("&Simulate"), this); simulateAct->setShortcut(tr("Alt+S")); simulateAct->setStatusTip(tr("Simulate selected model.")); simulateAct->setEnabled(false); connect(simulateAct,SIGNAL(triggered()),this,SLOT(simulate())); - QIcon printActIcon; - populate_icon(&printActIcon,"print.png"); - printAct = new QAction(printActIcon, tr("&Print"), this); + printAct = new QAction(CompanionIcon("print.png"), tr("&Print"), this); printAct->setShortcut(tr("Ctrl+P")); printAct->setStatusTip(tr("Print current model.")); printAct->setEnabled(false); @@ -1872,15 +1803,11 @@ void MainWindow::createActions() separatorAct = new QAction(this); separatorAct->setSeparator(true); - QIcon aboutActIcon; - populate_icon(&aboutActIcon,"information.png"); - aboutAct = new QAction(aboutActIcon, tr("&About"), this); + aboutAct = new QAction(CompanionIcon("information.png"), tr("&About"), this); aboutAct->setStatusTip(tr("Show the application's About box")); connect(aboutAct, SIGNAL(triggered()), this, SLOT(about())); - QIcon switchLayoutDirectionActIcon; - populate_icon(&switchLayoutDirectionActIcon,"switch_dir.png"); - switchLayoutDirectionAct = new QAction(switchLayoutDirectionActIcon, tr("Switch layout direction"), this); + switchLayoutDirectionAct = new QAction(CompanionIcon("switch_dir.png"), tr("Switch layout direction"), this); switchLayoutDirectionAct->setStatusTip(tr("Switch layout Left/Right")); connect(switchLayoutDirectionAct, SIGNAL(triggered()), this, SLOT(switchLayoutDirection())); for (int i = 0; i < MaxRecentFiles; ++i) { @@ -1910,10 +1837,8 @@ void MainWindow::createMenus() fileMenu->addAction(saveAct); fileMenu->addAction(saveAsAct); fileMenu->addMenu(recentFileMenu); - QIcon recentFileMenuIcon; - populate_icon(&recentFileMenuIcon,"recentdocument.png"); - recentFileMenu->setIcon(recentFileMenuIcon); - for ( int i = 0; i < MaxRecentFiles; ++i) + recentFileMenu->setIcon(CompanionIcon("recentdocument.png")); + for (int i=0; iaddAction(recentFileActs[i]); fileMenu->addSeparator(); fileMenu->addAction(logsAct); @@ -1925,10 +1850,8 @@ void MainWindow::createMenus() fileMenu->addAction(preferencesAct); fileMenu->addMenu(profilesMenu); - QIcon profilesMenuIcon; - populate_icon(&profilesMenuIcon,"profiles.png"); - profilesMenu->setIcon(profilesMenuIcon); - for ( int i = 0; i < MAX_PROFILES; ++i) + profilesMenu->setIcon(CompanionIcon("profiles.png")); + for (int i=0; iaddAction(profileActs[i]); fileMenu->addAction(switchLayoutDirectionAct); fileMenu->addAction(exitAct); @@ -1992,7 +1915,7 @@ QMenu *MainWindow::createProfilesMenu() void MainWindow::createToolBars() { - QSettings settings("companion", "companion"); + QSettings settings; int icon_size=settings.value("icon_size",2 ).toInt(); QSize size; switch(icon_size) { @@ -2017,9 +1940,7 @@ void MainWindow::createToolBars() QToolButton * recentToolButton = new QToolButton; recentToolButton->setPopupMode(QToolButton::InstantPopup); recentToolButton->setMenu(createRecentFileMenu()); - QIcon recentToolButtonIcon; - populate_icon(&recentToolButtonIcon,"recentdocument.png"); - recentToolButton->setIcon(recentToolButtonIcon); + recentToolButton->setIcon(CompanionIcon("recentdocument.png")); recentToolButton->setToolTip(tr("Recent Files")); fileToolBar->addWidget(recentToolButton); fileToolBar->addAction(saveAct); @@ -2029,9 +1950,7 @@ void MainWindow::createToolBars() profileButton = new QToolButton; profileButton->setPopupMode(QToolButton::InstantPopup); profileButton->setMenu(createProfilesMenu()); - QIcon profileButtonIcon; - populate_icon(&profileButtonIcon,"profiles.png"); - profileButton->setIcon(profileButtonIcon); + profileButton->setIcon(CompanionIcon("profiles.png")); profileButton->setToolTip(tr("Firmware Profiles")); fileToolBar->addWidget(profileButton); bool notfound=true; @@ -2088,7 +2007,7 @@ void MainWindow::createStatusBar() void MainWindow::readSettings() { - QSettings settings("companion", "companion"); + QSettings settings; restoreState(settings.value("mainWindowState").toByteArray()); checkCompanion9x = settings.value("startup_check_companion", true).toBool(); checkFW = settings.value("startup_check_fw", true).toBool(); @@ -2141,7 +2060,7 @@ void MainWindow::setActiveSubWindow(QWidget *window) void MainWindow::updateRecentFileActions() { int i,j, numRecentFiles; - QSettings settings("companion", "companion"); + QSettings settings; QStringList files = settings.value("recentFileList").toStringList(); numRecentFiles = qMin(files.size(), (int)MaxRecentFiles); @@ -2161,7 +2080,7 @@ void MainWindow::updateRecentFileActions() void MainWindow::updateProfilesActions() { int i; - QSettings settings("companion", "companion"); + QSettings settings; settings.beginGroup("Profiles"); for (i=0; isetupUi(this); - ui->SimulateTxButton->setIcon(SimulateIcon); + ui->SimulateTxButton->setIcon(CompanionIcon("simulate.png")); setAttribute(Qt::WA_DeleteOnClose); eepromInterfaceChanged(); @@ -182,7 +179,7 @@ void MdiChild::OpenEditWindow(bool wizard=false) } if (isNew && !wizard) { int ret; - QSettings settings("companion", "companion"); + QSettings settings; bool wizardEnable=settings.value("wizardEnable", true).toBool(); if (wizardEnable) { ret = QMessageBox::question(this, tr("Companion"), tr("Do you want to use model wizard? "), QMessageBox::Yes | QMessageBox::No); @@ -349,7 +346,7 @@ bool MdiChild::save() bool MdiChild::saveAs(bool isNew) { - QSettings settings("companion", "companion"); + QSettings settings; QString fileName; if (GetEepromInterface()->getBoard() == BOARD_SKY9X) { curFile.replace(".eepe", ".bin"); @@ -493,7 +490,7 @@ void MdiChild::setCurrentFile(const QString &fileName) fileChanged = false; setWindowModified(false); updateTitle(); - QSettings settings("companion", "companion"); + QSettings settings; int MaxRecentFiles =settings.value("history_size",10).toInt(); QStringList files = settings.value("recentFileList").toStringList(); files.removeAll(fileName); @@ -511,7 +508,7 @@ QString MdiChild::strippedName(const QString &fullFileName) void MdiChild::burnTo() // write to Tx { - QSettings settings("companion", "companion"); + QSettings settings; bool backupEnable=settings.value("backupEnable", true).toBool(); QString backupPath=settings.value("backupPath", "").toString(); if (!backupPath.isEmpty()) { @@ -556,19 +553,17 @@ void MdiChild::burnTo() // write to Tx QStringList str; str << path << backupFile; avrOutputDialog *ad = new avrOutputDialog(this,"", str, tr("Backup EEPROM From Tx")); //, AVR_DIALOG_KEEP_OPEN); - QIcon Icon; - populate_icon(&Icon,"read_eeprom.png"); - ad->setWindowIcon(Icon); + ad->setWindowIcon(CompanionIcon("read_eeprom.png")); ad->exec(); sleep(1); } - } else { + } + else { QStringList str = ((MainWindow *)this->parent())->GetReceiveEEpromCommand(backupFile); avrOutputDialog *ad = new avrOutputDialog(this, ((MainWindow *)this->parent())->GetAvrdudeLocation(), str, tr("Backup EEPROM From Tx")); - QIcon Icon; - populate_icon(&Icon,"read_eeprom.png"); - ad->setWindowIcon(Icon); + ad->setWindowIcon(CompanionIcon("read_eeprom.png")); ad->exec(); + delete ad; sleep(1); } } @@ -576,10 +571,9 @@ void MdiChild::burnTo() // write to Tx QString tempFlash=tempDir + "/flash.bin"; QStringList str = ((MainWindow *)this->parent())->GetReceiveFlashCommand(tempFlash); avrOutputDialog *ad = new avrOutputDialog(this, ((MainWindow *)this->parent())->GetAvrdudeLocation(), str, "Read Flash From Tx"); - QIcon Icon; - populate_icon(&Icon,"read_flash.png"); - ad->setWindowIcon(Icon); + ad->setWindowIcon(CompanionIcon("read_flash.png")); ad->exec(); + delete ad; sleep(1); QString restoreFile = tempDir + "/compat.bin"; if (!((MainWindow *)this->parent())->convertEEPROM(tempFile, restoreFile, tempFlash)) { @@ -587,7 +581,8 @@ void MdiChild::burnTo() // write to Tx QMessageBox::Yes | QMessageBox::No); if (ret==QMessageBox::No) return; - } else { + } + else { int rev=((MainWindow *)this->parent())->getEpromVersion(restoreFile); if ((rev/100)!=(oldrev/100)) { QMessageBox::warning(this,tr("Warning"), tr("Firmware in radio is of a different family of eeprom written, check file and preferences!")); @@ -600,7 +595,8 @@ void MdiChild::burnTo() // write to Tx QByteArray ba = tempFlash.toLatin1(); char *name = ba.data(); unlink(name); - } else { + } + else { if (backupEnable) { QString backupFile=backupPath+"/backup-"+QDateTime().currentDateTime().toString("yyyy-MM-dd-hhmmss")+".bin"; if (IS_TARANIS(eepromInterface->getBoard())) { @@ -608,16 +604,17 @@ void MdiChild::burnTo() // write to Tx if (path.isEmpty()) { QMessageBox::warning(this, tr("Taranis radio not found"), tr("Impossible to identify the radio on your system, please verify the eeprom disk is connected.")); return; - } else { + } + else { QFile::copy(path,backupFile); } - } else { + } + else { QStringList str = ((MainWindow *)this->parent())->GetReceiveEEpromCommand(backupFile); avrOutputDialog *ad = new avrOutputDialog(this, ((MainWindow *)this->parent())->GetAvrdudeLocation(), str, tr("Backup EEPROM From Tx")); - QIcon Icon; - populate_icon(&Icon,"read_eeprom.png"); - ad->setWindowIcon(Icon); + ad->setWindowIcon(CompanionIcon("read_eeprom.png")); ad->exec(); + delete ad; sleep(1); } } @@ -627,23 +624,23 @@ void MdiChild::burnTo() // write to Tx if (path.isEmpty()) { QMessageBox::warning(this, tr("Taranis radio not found"), tr("Impossible to identify the radio on your system, please verify the eeprom disk is connected.")); return; - } else { + } + else { QStringList str; str << tempFile << path; avrOutputDialog *ad = new avrOutputDialog(this,"", str, tr("Write EEPROM To Tx"), AVR_DIALOG_SHOW_DONE); //, AVR_DIALOG_KEEP_OPEN); - QIcon Icon; - populate_icon(&Icon,"read_eeprom.png"); - ad->setWindowIcon(Icon); + ad->setWindowIcon(CompanionIcon("read_eeprom.png")); ad->show(); + delete ad; sleep(1); } - } else { + } + else { QStringList str = ((MainWindow *)this->parent())->GetSendEEpromCommand(tempFile); avrOutputDialog *ad = new avrOutputDialog(this, ((MainWindow *)this->parent())->GetAvrdudeLocation(), str, "Write EEPROM To Tx", AVR_DIALOG_SHOW_DONE); - QIcon Icon; - populate_icon(&Icon,"write_eeprom.png"); - ad->setWindowIcon(Icon); + ad->setWindowIcon(CompanionIcon("write_eeprom.png")); ad->show(); + delete ad; } } } @@ -693,7 +690,7 @@ void MdiChild::setEEpromAvail(int eavail) bool MdiChild::loadBackup() { - QSettings settings("companion", "companion"); + QSettings settings; QString fileName = QFileDialog::getOpenFileName(this, tr("Open"), settings.value("lastDir").toString(),tr(EEPROM_FILES_FILTER)); if (fileName.isEmpty()) return false; diff --git a/companion/src/modeledit/curves.cpp b/companion/src/modeledit/curves.cpp index 5f90ebfdb..612ca60d9 100644 --- a/companion/src/modeledit/curves.cpp +++ b/companion/src/modeledit/curves.cpp @@ -84,8 +84,6 @@ Curves::Curves(QWidget * parent, ModelData & model): QGraphicsScene *scene = new QGraphicsScene(ui->curvePreview); scene->setItemIndexMethod(QGraphicsScene::NoIndex); ui->curvePreview->setScene(scene); - QIcon ClearIcon; - populate_icon(&ClearIcon,"clear.png"); for (int i=0; igetCapability(NumCurves); i++) { visibleCurves[i] = false; @@ -94,7 +92,7 @@ Curves::Curves(QWidget * parent, ModelData & model): QPushButton * reset = new QPushButton(this); reset->setProperty("index", i); reset->setMinimumSize(QSize(0, 0)); - reset->setIcon(ClearIcon); + reset->setIcon(CompanionIcon("clear.png")); reset->setIconSize(QSize(14, 14)); connect(reset, SIGNAL(clicked()), this, SLOT(resetCurve())); ui->curvesLayout->addWidget(reset, i, 0, 1, 1); @@ -600,9 +598,9 @@ void ModelEdit::on_ca_apply_PB_clicked() void ModelEdit::clearCurves(bool ask) { - if(ask) { - int res = QMessageBox::question(this,tr("Clear Curves?"),tr("Really clear all the curves?"),QMessageBox::Yes | QMessageBox::No); - if(res!=QMessageBox::Yes) return; + if (ask) { + int res = QMessageBox::question(this, tr("Clear Curves?"), tr("Really clear all the curves?"), QMessageBox::Yes | QMessageBox::No); + if (res!=QMessageBox::Yes) return; } curvesLock=true; for (int j=0; j<16; j++) { diff --git a/companion/src/modeledit/customfunctions.cpp b/companion/src/modeledit/customfunctions.cpp index 8345f4306..3c0c3a1f7 100644 --- a/companion/src/modeledit/customfunctions.cpp +++ b/companion/src/modeledit/customfunctions.cpp @@ -36,7 +36,7 @@ CustomFunctionsPanel::CustomFunctionsPanel(QWidget * parent, ModelData & model, } } - QSettings settings("companion", "companion"); + QSettings settings; QString path = settings.value("sdPath", ".").toString(); path.append("/SOUNDS/"); QString lang = generalSettings.ttsLanguage; @@ -123,11 +123,9 @@ CustomFunctionsPanel::CustomFunctionsPanel(QWidget * parent, ModelData & model, connect(fswtchParamArmT[i], SIGNAL(editTextChanged ( const QString)), this, SLOT(customFunctionEdited())); #ifdef PHONON - QIcon PlayIcon; - populate_icon(&PlayIcon,"play.png"); playBT[i] = new QPushButton(this); playBT[i]->setObjectName(QString("play_%1").arg(i)); - playBT[i]->setIcon(PlayIcon); + playBT[i]->setIcon(CompanionIcon("play.png")); paramLayout->addWidget(playBT[i]); connect(playBT[i], SIGNAL(pressed()), this, SLOT(playMusic())); #endif @@ -162,8 +160,6 @@ void CustomFunctionsPanel::mediaPlayer_state(Phonon::State newState, Phonon::Sta { if (phononLock) return; - QIcon PlayIcon; - populate_icon(&PlayIcon,"play.png"); phononLock=true; if ((newState==Phonon::StoppedState || newState==Phonon::PausedState) && oldState==Phonon::PlayingState) { @@ -172,7 +168,7 @@ void CustomFunctionsPanel::mediaPlayer_state(Phonon::State newState, Phonon::Sta clickObject->clear(); for (int i=0; igetCapability(CustomFunctions); i++) { playBT[i]->setObjectName(QString("play_%1").arg(i)); - playBT[i]->setIcon(PlayIcon); + playBT[i]->setIcon(CompanionIcon("play.png")); } } if (newState==Phonon::ErrorState) { @@ -181,7 +177,7 @@ void CustomFunctionsPanel::mediaPlayer_state(Phonon::State newState, Phonon::Sta clickObject->clear(); for (int i=0; igetCapability(CustomFunctions); i++) { playBT[i]->setObjectName(QString("play_%1").arg(i)); - playBT[i]->setIcon(PlayIcon); + playBT[i]->setIcon(CompanionIcon("play.png")); } } @@ -194,19 +190,15 @@ void CustomFunctionsPanel::playMusic() QPushButton *playButton = qobject_cast(sender()); int index=playButton->objectName().mid(5,2).toInt(); QString function=playButton->objectName().left(4); - QSettings settings("companion", "companion"); - QIcon PlayIcon; - populate_icon(&PlayIcon,"play.png"); - QIcon StopIcon; - populate_icon(&StopIcon,"stop.png"); - - QString path=settings.value("sdPath", ".").toString(); + QSettings settings; + QString path = settings.value("sdPath", ".").toString(); QDir qd(path); QString track; if (qd.exists()) { if (GetEepromInterface()->getCapability(VoicesAsNumbers)) { track=path+QString("/%1.wav").arg(int(fswtchParam[index]->value()),4,10,(const QChar)'0'); - } else { + } + else { path.append("/SOUNDS/"); QString lang = generalSettings.ttsLanguage; if (lang.isEmpty()) @@ -227,12 +219,12 @@ void CustomFunctionsPanel::playMusic() clickObject->setCurrentSource(Phonon::MediaSource(track)); clickObject->play(); playBT[index]->setObjectName(QString("stop_%1").arg(index)); - playBT[index]->setIcon(StopIcon); + playBT[index]->setIcon(CompanionIcon("stop.png")); } else { clickObject->stop(); clickObject->clear(); playBT[index]->setObjectName(QString("play_%1").arg(index)); - playBT[index]->setIcon(PlayIcon); + playBT[index]->setIcon(CompanionIcon("play.png")); } #endif } @@ -467,14 +459,6 @@ void CustomFunctionsPanel::fsw_customContextMenuRequested(QPoint pos) { QLabel *label = (QLabel *)sender(); selectedFunction = label->property("index").toInt(); - QIcon ClearIcon; - populate_icon(&ClearIcon,"clear.png"); - QIcon CopyIcon; - populate_icon(&CopyIcon,"copy.png"); - QIcon CutIcon; - populate_icon(&CutIcon,"cut.png"); - QIcon PasteIcon; - populate_icon(&PasteIcon,"paste.png"); QPoint globalPos = label->mapToGlobal(pos); @@ -483,10 +467,10 @@ void CustomFunctionsPanel::fsw_customContextMenuRequested(QPoint pos) bool hasData = mimeData->hasFormat("application/x-companion-fsw"); QMenu contextMenu; - contextMenu.addAction(ClearIcon, tr("&Delete"),this,SLOT(fswDelete()),tr("Delete")); - contextMenu.addAction(CopyIcon, tr("&Copy"),this,SLOT(fswCopy()),tr("Ctrl+C")); - contextMenu.addAction(CutIcon, tr("&Cut"),this,SLOT(fswCut()),tr("Ctrl+X")); - contextMenu.addAction(PasteIcon, tr("&Paste"),this,SLOT(fswPaste()),tr("Ctrl+V"))->setEnabled(hasData); + contextMenu.addAction(CompanionIcon("clear.png"), tr("&Delete"),this,SLOT(fswDelete()),tr("Delete")); + contextMenu.addAction(CompanionIcon("copy.png"), tr("&Copy"),this,SLOT(fswCopy()),tr("Ctrl+C")); + contextMenu.addAction(CompanionIcon("cut.png"), tr("&Cut"),this,SLOT(fswCut()),tr("Ctrl+X")); + contextMenu.addAction(CompanionIcon("paste.png"), tr("&Paste"),this,SLOT(fswPaste()),tr("Ctrl+V"))->setEnabled(hasData); contextMenu.exec(globalPos); } diff --git a/companion/src/modeledit/customswitches.cpp b/companion/src/modeledit/customswitches.cpp index 883b9f60d..e666764cf 100644 --- a/companion/src/modeledit/customswitches.cpp +++ b/companion/src/modeledit/customswitches.cpp @@ -382,14 +382,6 @@ void CustomSwitchesPanel::csw_customContextMenuRequested(QPoint pos) { QLabel *label = (QLabel *)sender(); selectedSwitch = label->property("index").toInt(); - QIcon ClearIcon; - populate_icon(&ClearIcon,"clear.png"); - QIcon CopyIcon; - populate_icon(&CopyIcon,"copy.png"); - QIcon CutIcon; - populate_icon(&CutIcon,"cut.png"); - QIcon PasteIcon; - populate_icon(&PasteIcon,"paste.png"); QPoint globalPos = label->mapToGlobal(pos); @@ -398,10 +390,10 @@ void CustomSwitchesPanel::csw_customContextMenuRequested(QPoint pos) bool hasData = mimeData->hasFormat("application/x-companion-csw"); QMenu contextMenu; - contextMenu.addAction(ClearIcon, tr("&Delete"),this,SLOT(cswDelete()),tr("Delete")); - contextMenu.addAction(CopyIcon, tr("&Copy"),this,SLOT(cswCopy()),tr("Ctrl+C")); - contextMenu.addAction(CutIcon, tr("&Cut"),this,SLOT(cswCut()),tr("Ctrl+X")); - contextMenu.addAction(PasteIcon, tr("&Paste"),this,SLOT(cswPaste()),tr("Ctrl+V"))->setEnabled(hasData); + contextMenu.addAction(CompanionIcon("clear.png"), tr("&Delete"),this,SLOT(cswDelete()),tr("Delete")); + contextMenu.addAction(CompanionIcon("copy.png"), tr("&Copy"),this,SLOT(cswCopy()),tr("Ctrl+C")); + contextMenu.addAction(CompanionIcon("cut.png"), tr("&Cut"),this,SLOT(cswCut()),tr("Ctrl+X")); + contextMenu.addAction(CompanionIcon("paste.png"), tr("&Paste"),this,SLOT(cswPaste()),tr("Ctrl+V"))->setEnabled(hasData); contextMenu.exec(globalPos); } diff --git a/companion/src/modeledit/inputs.cpp b/companion/src/modeledit/inputs.cpp index 74e5f9745..2ffbcdd66 100644 --- a/companion/src/modeledit/inputs.cpp +++ b/companion/src/modeledit/inputs.cpp @@ -8,28 +8,21 @@ InputsPanel::InputsPanel(QWidget *parent, ModelData & model, GeneralSettings & g generalSettings(generalSettings), expoInserted(false) { - QString Theme=getTheme(); - QGridLayout * exposLayout = new QGridLayout(this); ExposlistWidget = new MixersList(this, true); QPushButton * qbUp = new QPushButton(this); QPushButton * qbDown = new QPushButton(this); QPushButton * qbClear = new QPushButton(this); - QIcon qbUpIcon; - populate_icon(&qbUpIcon,"moveup.png"); + qbUp->setText(tr("Move Up")); - qbUp->setIcon(qbUpIcon); + qbUp->setIcon(CompanionIcon("moveup.png")); qbUp->setShortcut(QKeySequence(tr("Ctrl+Up"))); - QIcon qbDownIcon; - populate_icon(&qbDownIcon,"movedown.png"); qbDown->setText(tr("Move Down")); - qbDown->setIcon(qbDownIcon); + qbDown->setIcon(CompanionIcon("movedown.png")); qbDown->setShortcut(QKeySequence(tr("Ctrl+Down"))); - QIcon qbClearIcon; - populate_icon(&qbClearIcon,"clear.png"); qbClear->setText(tr("Clear Expo Settings")); - qbClear->setIcon(qbClearIcon); + qbClear->setIcon(CompanionIcon("clear.png")); exposLayout->addWidget(ExposlistWidget,1,1,1,3); exposLayout->addWidget(qbUp,2,1); @@ -348,24 +341,6 @@ void InputsPanel::expoAdd() void InputsPanel::expolistWidget_customContextMenuRequested(QPoint pos) { - QIcon AddIcon; - populate_icon(&AddIcon,"add.png"); - QIcon EditIcon; - populate_icon(&EditIcon,"edit.png"); - QIcon ClearIcon; - populate_icon(&ClearIcon,"clear.png"); - QIcon CopyIcon; - populate_icon(&CopyIcon,"copy.png"); - QIcon CutIcon; - populate_icon(&CutIcon,"cut.png"); - QIcon PasteIcon; - populate_icon(&PasteIcon,"paste.png"); - QIcon DuplicateIcon; - populate_icon(&DuplicateIcon,"duplicate.png"); - QIcon MoveUpIcon; - populate_icon(&MoveUpIcon,"moveup.png"); - QIcon MoveDownIcon; - populate_icon(&MoveDownIcon,"movedown.png"); QPoint globalPos = ExposlistWidget->mapToGlobal(pos); const QClipboard *clipboard = QApplication::clipboard(); @@ -373,17 +348,17 @@ void InputsPanel::expolistWidget_customContextMenuRequested(QPoint pos) bool hasData = mimeData->hasFormat("application/x-companion-expo"); QMenu contextMenu; - contextMenu.addAction(AddIcon, tr("&Add"),this,SLOT(expoAdd()),tr("Ctrl+A")); - contextMenu.addAction(EditIcon, tr("&Edit"),this,SLOT(expoOpen()),tr("Enter")); + contextMenu.addAction(CompanionIcon("add.png"), tr("&Add"),this,SLOT(expoAdd()),tr("Ctrl+A")); + contextMenu.addAction(CompanionIcon("edit.png"), tr("&Edit"),this,SLOT(expoOpen()),tr("Enter")); contextMenu.addSeparator(); - contextMenu.addAction(ClearIcon, tr("&Delete"),this,SLOT(exposDelete()),tr("Delete")); - contextMenu.addAction(CopyIcon, tr("&Copy"),this,SLOT(exposCopy()),tr("Ctrl+C")); - contextMenu.addAction(CutIcon, tr("&Cut"),this,SLOT(exposCut()),tr("Ctrl+X")); - contextMenu.addAction(PasteIcon, tr("&Paste"),this,SLOT(exposPaste()),tr("Ctrl+V"))->setEnabled(hasData); - contextMenu.addAction(DuplicateIcon, tr("Du&plicate"),this,SLOT(exposDuplicate()),tr("Ctrl+U")); + contextMenu.addAction(CompanionIcon("clear.png"), tr("&Delete"),this,SLOT(exposDelete()),tr("Delete")); + contextMenu.addAction(CompanionIcon("copy.png"), tr("&Copy"),this,SLOT(exposCopy()),tr("Ctrl+C")); + contextMenu.addAction(CompanionIcon("cut.png"), tr("&Cut"),this,SLOT(exposCut()),tr("Ctrl+X")); + contextMenu.addAction(CompanionIcon("paste.png"), tr("&Paste"),this,SLOT(exposPaste()),tr("Ctrl+V"))->setEnabled(hasData); + contextMenu.addAction(CompanionIcon("duplicate.png"), tr("Du&plicate"),this,SLOT(exposDuplicate()),tr("Ctrl+U")); contextMenu.addSeparator(); - contextMenu.addAction(MoveUpIcon, tr("Move Up"),this,SLOT(moveExpoUp()),tr("Ctrl+Up")); - contextMenu.addAction(MoveDownIcon, tr("Move Down"),this,SLOT(moveExpoDown()),tr("Ctrl+Down")); + contextMenu.addAction(CompanionIcon("moveup.png"), tr("Move Up"),this,SLOT(moveExpoUp()),tr("Ctrl+Up")); + contextMenu.addAction(CompanionIcon("movedown.png"), tr("Move Down"),this,SLOT(moveExpoDown()),tr("Ctrl+Down")); contextMenu.exec(globalPos); } diff --git a/companion/src/modeledit/mixes.cpp b/companion/src/modeledit/mixes.cpp index 1b18cc50d..7edb50351 100644 --- a/companion/src/modeledit/mixes.cpp +++ b/companion/src/modeledit/mixes.cpp @@ -14,20 +14,14 @@ MixesPanel::MixesPanel(QWidget *parent, ModelData & model, GeneralSettings & gen QPushButton * qbUp = new QPushButton(this); QPushButton * qbDown = new QPushButton(this); QPushButton * qbClear = new QPushButton(this); - QIcon qbUpIcon; - populate_icon(&qbUpIcon,"moveup.png"); qbUp->setText(tr("Move Up")); - qbUp->setIcon(qbUpIcon); + qbUp->setIcon(CompanionIcon("moveup.png")); qbUp->setShortcut(QKeySequence(tr("Ctrl+Up"))); - QIcon qbDownIcon; - populate_icon(&qbDownIcon,"movedown.png"); qbDown->setText(tr("Move Down")); - qbDown->setIcon(qbDownIcon); + qbDown->setIcon(CompanionIcon("movedown.png")); qbDown->setShortcut(QKeySequence(tr("Ctrl+Down"))); - QIcon qbClearIcon; - populate_icon(&qbClearIcon,"clear.png"); qbClear->setText(tr("Clear Mixes")); - qbClear->setIcon(qbClearIcon); + qbClear->setIcon(CompanionIcon("clear.png")); mixesLayout->addWidget(MixerlistWidget,1,1,1,3); mixesLayout->addWidget(qbUp,2,1); @@ -411,24 +405,6 @@ void MixesPanel::mixerAdd() void MixesPanel::mixerlistWidget_customContextMenuRequested(QPoint pos) { - QIcon AddIcon; - populate_icon(&AddIcon,"add.png"); - QIcon EditIcon; - populate_icon(&EditIcon,"edit.png"); - QIcon ClearIcon; - populate_icon(&ClearIcon,"clear.png"); - QIcon CopyIcon; - populate_icon(&CopyIcon,"copy.png"); - QIcon CutIcon; - populate_icon(&CutIcon,"cut.png"); - QIcon PasteIcon; - populate_icon(&PasteIcon,"paste.png"); - QIcon DuplicateIcon; - populate_icon(&DuplicateIcon,"duplicate.png"); - QIcon MoveUpIcon; - populate_icon(&MoveUpIcon,"moveup.png"); - QIcon MoveDownIcon; - populate_icon(&MoveDownIcon,"movedown.png"); QPoint globalPos = MixerlistWidget->mapToGlobal(pos); const QClipboard *clipboard = QApplication::clipboard(); @@ -436,17 +412,17 @@ void MixesPanel::mixerlistWidget_customContextMenuRequested(QPoint pos) bool hasData = mimeData->hasFormat("application/x-companion-mix"); QMenu contextMenu; - contextMenu.addAction(AddIcon, tr("&Add"),this,SLOT(mixerAdd()),tr("Ctrl+A")); - contextMenu.addAction(EditIcon, tr("&Edit"),this,SLOT(mixerOpen()),tr("Enter")); + contextMenu.addAction(CompanionIcon("add.png"), tr("&Add"),this,SLOT(mixerAdd()),tr("Ctrl+A")); + contextMenu.addAction(CompanionIcon("edit.png"), tr("&Edit"),this,SLOT(mixerOpen()),tr("Enter")); contextMenu.addSeparator(); - contextMenu.addAction(ClearIcon, tr("&Delete"),this,SLOT(mixersDelete()),tr("Delete")); - contextMenu.addAction(CopyIcon, tr("&Copy"),this,SLOT(mixersCopy()),tr("Ctrl+C")); - contextMenu.addAction(CutIcon, tr("&Cut"),this,SLOT(mixersCut()),tr("Ctrl+X")); - contextMenu.addAction(PasteIcon, tr("&Paste"),this,SLOT(mixersPaste()),tr("Ctrl+V"))->setEnabled(hasData); - contextMenu.addAction(DuplicateIcon, tr("Du&plicate"),this,SLOT(mixersDuplicate()),tr("Ctrl+U")); + contextMenu.addAction(CompanionIcon("clear.png"), tr("&Delete"),this,SLOT(mixersDelete()),tr("Delete")); + contextMenu.addAction(CompanionIcon("copy.png"), tr("&Copy"),this,SLOT(mixersCopy()),tr("Ctrl+C")); + contextMenu.addAction(CompanionIcon("cut.png"), tr("&Cut"),this,SLOT(mixersCut()),tr("Ctrl+X")); + contextMenu.addAction(CompanionIcon("paste.png"), tr("&Paste"),this,SLOT(mixersPaste()),tr("Ctrl+V"))->setEnabled(hasData); + contextMenu.addAction(CompanionIcon("duplicate.png"), tr("Du&plicate"),this,SLOT(mixersDuplicate()),tr("Ctrl+U")); contextMenu.addSeparator(); - contextMenu.addAction(MoveUpIcon, tr("Move Up"),this,SLOT(moveMixUp()),tr("Ctrl+Up")); - contextMenu.addAction(MoveDownIcon, tr("Move Down"),this,SLOT(moveMixDown()),tr("Ctrl+Down")); + contextMenu.addAction(CompanionIcon("moveup.png"), tr("Move Up"),this,SLOT(moveMixUp()),tr("Ctrl+Up")); + contextMenu.addAction(CompanionIcon("movedown.png"), tr("Move Down"),this,SLOT(moveMixDown()),tr("Ctrl+Down")); contextMenu.exec(globalPos); } diff --git a/companion/src/modeledit/modeledit.cpp b/companion/src/modeledit/modeledit.cpp index 34016edf3..8a22cbc54 100644 --- a/companion/src/modeledit/modeledit.cpp +++ b/companion/src/modeledit/modeledit.cpp @@ -21,11 +21,9 @@ ModelEdit::ModelEdit(RadioData & radioData, int modelId, bool openWizard, bool i generalSettings(radioData.generalSettings) { ui->setupUi(this); - QSettings settings("companion", "companion"); + QSettings settings; restoreGeometry(settings.value("modelEditGeometry").toByteArray()); - QIcon SimulateIcon; - populate_icon(&SimulateIcon,"simulate.png"); - ui->pushButton->setIcon(SimulateIcon); + ui->pushButton->setIcon(CompanionIcon("simulate.png")); addTab(new Setup(this, model), tr("Setup")); addTab(new HeliPanel(this, model), tr("Heli")); addTab(new FlightModes(this, model, radioData.generalSettings), tr("Flight Modes")); @@ -47,7 +45,7 @@ ModelEdit::~ModelEdit() void ModelEdit::closeEvent(QCloseEvent *event) { - QSettings settings("companion", "companion"); + QSettings settings; settings.setValue("modelEditGeometry", saveGeometry()); } diff --git a/companion/src/modeledit/setup.cpp b/companion/src/modeledit/setup.cpp index 1d67137d1..b663f577a 100644 --- a/companion/src/modeledit/setup.cpp +++ b/companion/src/modeledit/setup.cpp @@ -353,7 +353,7 @@ Setup::Setup(QWidget *parent, ModelData & model): if (GetEepromInterface()->getCapability(ModelImage)) { QStringList items; items.append(""); - QSettings settings("companion", "companion"); + QSettings settings; QString path = settings.value("sdPath", ".").toString(); path.append("/BMP/"); QDir qd(path); @@ -497,7 +497,7 @@ void Setup::on_image_currentIndexChanged(int index) { if (!lock) { strncpy(model.bitmap, ui->image->currentText().toAscii(), GetEepromInterface()->getCapability(VoicesMaxLength)); - QSettings settings("companion", "companion"); + QSettings settings; QString path=settings.value("sdPath", ".").toString(); path.append("/BMP/"); QDir qd(path); diff --git a/companion/src/modeledit/telemetry.cpp b/companion/src/modeledit/telemetry.cpp index e0637f4df..3a2c63660 100644 --- a/companion/src/modeledit/telemetry.cpp +++ b/companion/src/modeledit/telemetry.cpp @@ -342,7 +342,7 @@ TelemetryPanel::~TelemetryPanel() void TelemetryPanel::setup() { - QSettings settings("companion", "companion"); + QSettings settings; QString firmware_id = settings.value("firmware", default_firmware_variant.id).toString(); lock=true; diff --git a/companion/src/modelslist.cpp b/companion/src/modelslist.cpp index f2cb682f4..088945f12 100644 --- a/companion/src/modelslist.cpp +++ b/companion/src/modelslist.cpp @@ -83,47 +83,23 @@ void ModelsListWidget::ShowContextMenu(const QPoint& pos) const QClipboard *clipboard = QApplication::clipboard(); const QMimeData *mimeData = clipboard->mimeData(); bool hasData = mimeData->hasFormat("application/x-companion"); - QIcon AddIcon; - populate_icon(&AddIcon,"add.png"); - QIcon EditIcon; - populate_icon(&EditIcon,"edit.png"); - QIcon OpenIcon; - populate_icon(&OpenIcon,"open.png"); - QIcon WizardIcon; - populate_icon(&WizardIcon,"wizard.png"); - QIcon ClearIcon; - populate_icon(&ClearIcon,"clear.png"); - QIcon CopyIcon; - populate_icon(&CopyIcon,"copy.png"); - QIcon CutIcon; - populate_icon(&CutIcon,"cut.png"); - QIcon PasteIcon; - populate_icon(&PasteIcon,"paste.png"); - QIcon DuplicateIcon; - populate_icon(&DuplicateIcon,"duplicate.png"); - QIcon CurrentModelIcon; - populate_icon(&CurrentModelIcon,"currentmodel.png"); - QIcon PrintIcon; - populate_icon(&PrintIcon,"print.png"); - QIcon SimulateIcon; - populate_icon(&SimulateIcon,"simulate.png"); QMenu contextMenu; - contextMenu.addAction(EditIcon, tr("&Edit"),this,SLOT(OpenEditWindow())); - contextMenu.addAction(OpenIcon, tr("&Restore from backup"),this,SLOT(LoadBackup())); - contextMenu.addAction(WizardIcon, tr("&Model Wizard"),this,SLOT(OpenWizard())); + contextMenu.addAction(CompanionIcon("edit.png"), tr("&Edit"),this,SLOT(OpenEditWindow())); + contextMenu.addAction(CompanionIcon("open.png"), tr("&Restore from backup"),this,SLOT(LoadBackup())); + contextMenu.addAction(CompanionIcon("wizard.png"), tr("&Model Wizard"),this,SLOT(OpenWizard())); contextMenu.addSeparator(); - contextMenu.addAction(ClearIcon, tr("&Delete"),this,SLOT(confirmDelete()),tr("Delete")); - contextMenu.addAction(CopyIcon, tr("&Copy"),this,SLOT(copy()),tr("Ctrl+C")); - contextMenu.addAction(CutIcon, tr("&Cut"),this,SLOT(cut()),tr("Ctrl+X")); - contextMenu.addAction(PasteIcon, tr("&Paste"),this,SLOT(paste()),tr("Ctrl+V"))->setEnabled(hasData); - contextMenu.addAction(DuplicateIcon, tr("D&uplicate"),this,SLOT(duplicate()),tr("Ctrl+U")); + contextMenu.addAction(CompanionIcon("clear.png"), tr("&Delete"),this,SLOT(confirmDelete()),tr("Delete")); + contextMenu.addAction(CompanionIcon("copy.png"), tr("&Copy"),this,SLOT(copy()),tr("Ctrl+C")); + contextMenu.addAction(CompanionIcon("cut.png"), tr("&Cut"),this,SLOT(cut()),tr("Ctrl+X")); + contextMenu.addAction(CompanionIcon("paste.png"), tr("&Paste"),this,SLOT(paste()),tr("Ctrl+V"))->setEnabled(hasData); + contextMenu.addAction(CompanionIcon("duplicate.png"), tr("D&uplicate"),this,SLOT(duplicate()),tr("Ctrl+U")); contextMenu.addSeparator(); - contextMenu.addAction(CurrentModelIcon, tr("&Use as default"),this,SLOT(setdefault())); + contextMenu.addAction(CompanionIcon("currentmodel.png"), tr("&Use as default"),this,SLOT(setdefault())); contextMenu.addSeparator(); - contextMenu.addAction(PrintIcon, tr("P&rint model"),this, SLOT(print()),tr("Alt+R")); + contextMenu.addAction(CompanionIcon("print.png"), tr("P&rint model"),this, SLOT(print()),tr("Alt+R")); contextMenu.addSeparator(); - contextMenu.addAction(SimulateIcon, tr("&Simulate model"),this, SLOT(simulate()),tr("Alt+S")); + contextMenu.addAction(CompanionIcon("simulate.png"), tr("&Simulate model"),this, SLOT(simulate()),tr("Alt+S")); contextMenu.exec(globalPos); } diff --git a/companion/src/preferencesdialog.cpp b/companion/src/preferencesdialog.cpp index 82ee49b40..a8c50452c 100644 --- a/companion/src/preferencesdialog.cpp +++ b/companion/src/preferencesdialog.cpp @@ -17,15 +17,9 @@ preferencesDialog::preferencesDialog(QWidget *parent) : updateLock(false) { ui->setupUi(this); - QIcon Icon; - populate_icon(&Icon,"preferences.png"); - this->setWindowIcon(Icon); - QIcon LibraryIcon; - populate_icon(&LibraryIcon,"library.png"); - ui->splashLibraryButton->setIcon(LibraryIcon); - QIcon ClearIcon; - populate_icon(&ClearIcon,"clear.png"); - ui->clearImageButton->setIcon(ClearIcon); + setWindowIcon(CompanionIcon("preferences.png")); + ui->splashLibraryButton->setIcon(CompanionIcon("library.png")); + ui->clearImageButton->setIcon(CompanionIcon("clear.png")); QCheckBox * OptionCheckBox[]= { ui->optionCheckBox_1, ui->optionCheckBox_2, ui->optionCheckBox_3, ui->optionCheckBox_4, ui->optionCheckBox_5, ui->optionCheckBox_6, ui->optionCheckBox_7, @@ -233,7 +227,7 @@ void preferencesDialog::firmwareChanged() ui->CPU_ID_LE->hide(); ui->CPU_ID_LABEL->hide(); } - QSettings settings("companion", "companion"); + QSettings settings; settings.beginGroup("FwRevisions"); int fwrev = settings.value(variant.id, -1).toInt(); settings.endGroup(); @@ -259,7 +253,7 @@ void preferencesDialog::firmwareChanged() void preferencesDialog::writeValues() { - QSettings settings("companion", "companion"); + QSettings settings; if (ui->locale_QB->currentIndex() > 0) settings.setValue("locale", ui->locale_QB->itemData(ui->locale_QB->currentIndex())); else @@ -392,7 +386,7 @@ void preferencesDialog::populateFirmwareOptions(const FirmwareInfo * firmware) void preferencesDialog::initSettings() { - QSettings settings("companion", "companion"); + QSettings settings; int i = ui->locale_QB->findData(settings.value("locale")); if (i < 0) i = 0; ui->locale_QB->setCurrentIndex(i); @@ -533,7 +527,7 @@ void preferencesDialog::on_fw_dnld_clicked() writeValues(); if (!variant.firmware->getUrl(variant.id).isNull()) { if (ui->burnFirmware->isChecked()) { - QSettings settings("companion", "companion"); + QSettings settings; current_firmware_variant = getFirmwareVariant(); settings.setValue("firmware", current_firmware_variant.id); } @@ -554,7 +548,7 @@ void preferencesDialog::on_voice_dnld_clicked() void preferencesDialog::on_libraryPathButton_clicked() { ui->ProfSave_PB->setEnabled(true); - QSettings settings("companion", "companion"); + QSettings settings; QString fileName = QFileDialog::getExistingDirectory(this,tr("Select your library folder"), settings.value("libraryPath").toString()); if (!fileName.isEmpty()) { settings.setValue("libraryPath", fileName); @@ -564,7 +558,7 @@ void preferencesDialog::on_libraryPathButton_clicked() void preferencesDialog::on_snapshotPathButton_clicked() { - QSettings settings("companion", "companion"); + QSettings settings; QString fileName = QFileDialog::getExistingDirectory(this,tr("Select your snapshot folder"), settings.value("snapshotPath").toString()); if (!fileName.isEmpty()) { settings.setValue("snapshotpath", fileName); @@ -575,7 +569,7 @@ void preferencesDialog::on_snapshotPathButton_clicked() void preferencesDialog::on_snapshotClipboardCKB_clicked() { - QSettings settings("companion", "companion"); + QSettings settings; if (ui->snapshotClipboardCKB->isChecked()) { ui->snapshotPath->setDisabled(true); ui->snapshotPathButton->setDisabled(true); @@ -591,7 +585,7 @@ void preferencesDialog::on_snapshotClipboardCKB_clicked() void preferencesDialog::on_backupPathButton_clicked() { - QSettings settings("companion", "companion"); + QSettings settings; QString fileName = QFileDialog::getExistingDirectory(this,tr("Select your Models and Settings backup folder"), settings.value("backupPath").toString()); if (!fileName.isEmpty()) { settings.setValue("backupPath", fileName); @@ -602,7 +596,7 @@ void preferencesDialog::on_backupPathButton_clicked() void preferencesDialog::on_ge_pathButton_clicked() { - QSettings settings("companion", "companion"); + QSettings settings; QString fileName = QFileDialog::getOpenFileName(this, tr("Select Google Earth executable"),ui->ge_lineedit->text()); if (!fileName.isEmpty()) { ui->ge_lineedit->setText(fileName); @@ -628,7 +622,7 @@ void preferencesDialog::on_splashLibraryButton_clicked() void preferencesDialog::on_sdPathButton_clicked() { - QSettings settings("companion", "companion"); + QSettings settings; QString fileName = QFileDialog::getExistingDirectory(this,tr("Select the folder replicating your SD structure"), settings.value("sdPath").toString()); if (!fileName.isEmpty()) { ui->sdPath->setText(fileName); @@ -638,7 +632,7 @@ void preferencesDialog::on_sdPathButton_clicked() void preferencesDialog::on_ProfSlot_SB_valueChanged() { - QSettings settings("companion", "companion"); + QSettings settings; settings.beginGroup("Profiles"); QString profile=QString("profile%1").arg(ui->ProfSlot_SB->value()); settings.beginGroup(profile); @@ -667,7 +661,7 @@ void preferencesDialog::on_ProfSlot_SB_valueChanged() void preferencesDialog::on_ProfSave_PB_clicked() { - QSettings settings("companion", "companion"); + QSettings settings; settings.beginGroup("Profiles"); QString profile=QString("profile%1").arg(ui->ProfSlot_SB->value()); QString name=ui->ProfName_LE->text(); @@ -706,7 +700,7 @@ void preferencesDialog::on_ProfSave_PB_clicked() void preferencesDialog::on_export_PB_clicked() { - QSettings settings("companion", "companion"); + QSettings settings; QString profile=QString("profile%1").arg(ui->ProfSlot_SB->value()); QString name=ui->ProfName_LE->text(); if (!name.isEmpty()) { @@ -727,7 +721,7 @@ void preferencesDialog::on_export_PB_clicked() void preferencesDialog::on_import_PB_clicked() { - QSettings settings("companion", "companion"); + QSettings settings; QString profile=QString("profile%1").arg(ui->ProfSlot_SB->value()); QString name=ui->ProfName_LE->text(); if (!name.isEmpty()) { @@ -760,7 +754,7 @@ void preferencesDialog::on_SplashSelect_clicked() supportedImageFormats += QLatin1String(" *.") + QImageReader::supportedImageFormats()[formatIndex]; } - QSettings settings("companion", "companion"); + QSettings settings; QString fileName = QFileDialog::getOpenFileName(this, tr("Open Image to load"), settings.value("lastImagesDir").toString(), tr("Images (%1)").arg(supportedImageFormats)); @@ -837,7 +831,7 @@ void preferencesDialog::on_joystickChkB_clicked() { } void preferencesDialog::on_joystickcalButton_clicked() { - //QSettings settings("companion", "companion"); + //QSettings settings; //settings.setValue("joystick-name",ui->joystickCB->currentText()); joystickDialog * jd=new joystickDialog(this, ui->joystickCB->currentIndex()); jd->exec(); @@ -849,7 +843,7 @@ void preferencesDialog::on_checkFWUpdates_clicked() { FirmwareVariant variant = getFirmwareVariant(); if (ui->burnFirmware->isChecked()) { - QSettings settings("companion", "companion"); + QSettings settings; current_firmware_variant = variant; settings.setValue("firmware", variant.id); } diff --git a/companion/src/simulatordialog.cpp b/companion/src/simulatordialog.cpp index 4d913c4f7..1bbddf4ef 100644 --- a/companion/src/simulatordialog.cpp +++ b/companion/src/simulatordialog.cpp @@ -32,7 +32,7 @@ simulatorDialog::simulatorDialog(QWidget *parent) : beepVal = 0; beepShow = 0; - QSettings settings("companion", "companion"); + QSettings settings; backLight = settings.value("backLight",0).toInt(); bool simuSW=settings.value("simuSW",false).toBool(); switch (backLight) { @@ -211,7 +211,7 @@ void simulatorDialog::setupTimer() void simulatorDialog::onButtonPressed(int value) { if (value==Qt::Key_Print) { - QSettings settings("companion", "companion"); + QSettings settings; bool toclipboard=settings.value("snapshot_to_clipboard", false).toBool(); QString fileName =""; if (!toclipboard) { diff --git a/companion/src/splashlibrary.cpp b/companion/src/splashlibrary.cpp index e8a1a4090..49aef10e4 100644 --- a/companion/src/splashlibrary.cpp +++ b/companion/src/splashlibrary.cpp @@ -9,12 +9,8 @@ splashLibrary::splashLibrary(QWidget *parent, QString * fileName) : QDialog(parent), ui(new Ui::splashLibrary) { splashFileName = fileName; ui->setupUi(this); - QIcon NextIcon; - populate_icon(&NextIcon,"arrow-right.png"); - QIcon PrevIcon; - populate_icon(&PrevIcon,"arrow-left.png"); - ui->nextPage->setIcon(NextIcon); - ui->prevPage->setIcon(PrevIcon); + ui->nextPage->setIcon(CompanionIcon("arrow-right.png")); + ui->prevPage->setIcon(CompanionIcon("arrow-left.png")); page = 0; getFileList(); if (imageList.size() > 20) { @@ -65,7 +61,7 @@ void splashLibrary::setupPage(int page) { } void splashLibrary::getFileList() { - QSettings settings("companion", "companion"); + QSettings settings; imageList.clear(); if (settings.value("embedded_splashes", 0).toInt() == 0) { QDir myRes(":/images/library"); diff --git a/companion/src/xsimulatordialog.cpp b/companion/src/xsimulatordialog.cpp index be071b6af..488439715 100644 --- a/companion/src/xsimulatordialog.cpp +++ b/companion/src/xsimulatordialog.cpp @@ -30,7 +30,7 @@ xsimulatorDialog::xsimulatorDialog(QWidget *parent) : ui->setupUi(this); ui->lcd->setFocus(); - QSettings settings("companion", "companion"); + QSettings settings; ui->lcd->setBackgroundColor(47, 123, 227); setupSticks(); resize(0, 0); // to force min height, min width @@ -179,7 +179,7 @@ void xsimulatorDialog::setupTimer() void xsimulatorDialog::onButtonPressed(int value) { if (value==Qt::Key_Print) { - QSettings settings("companion", "companion"); + QSettings settings; bool toclipboard=settings.value("snapshot_to_clipboard", false).toBool(); QString fileName =""; if (!toclipboard) { From efa484a7103c409b6a3f9e7306cb7f1edd15e2c9 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Mon, 20 Jan 2014 17:45:13 +0100 Subject: [PATCH 202/308] About dialog fixed --- companion/src/mainwindow.cpp | 21 +++++++++++---------- companion/src/version.h.in | 1 - 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/companion/src/mainwindow.cpp b/companion/src/mainwindow.cpp index 8e1e05cc2..653e86433 100644 --- a/companion/src/mainwindow.cpp +++ b/companion/src/mainwindow.cpp @@ -1534,16 +1534,17 @@ void MainWindow::logFile() void MainWindow::about() { - QString aboutStr = "

"; - aboutStr.append("OpenTX Home Page:
http://www.open-tx.org

"); - aboutStr.append(tr("The Companion project was originally forked from eePe")+QString(" http://code.google.com/p/eepe

")); - aboutStr.append(tr("If you've found this program useful, please support by")); - aboutStr.append(" "); - aboutStr.append(tr("donating") + "

"); - aboutStr.append(tr("Version %1 (revision %2), %3").arg(C9X_VERSION).arg(C9X_REVISION).arg(__DATE__)+QString("

")); - aboutStr.append(tr("Copyright") +" Bertrand Songis & Romolo Manfredini © 2011- 2014
"); - - QMessageBox::about(this, tr("About Companion"),aboutStr); + QString aboutStr = "

"; + aboutStr.append(tr("OpenTX Home Page: %1").arg("http://www.open-tx.org")); + aboutStr.append("

"); + aboutStr.append(tr("The OpenTX Companion project was originally forked from companion9x and eePe").arg("http://code.google.com/p/companion9x").arg("http://code.google.com/p/eepe")); + aboutStr.append("

"); + aboutStr.append(tr("If you've found this program useful, please support by donating").arg(DONATE_STR)); + aboutStr.append("

"); + aboutStr.append(tr("Version %1, %3").arg(C9X_VERSION).arg(__DATE__)); + aboutStr.append("

"); + aboutStr.append(tr("Copyright") + " Bertrand Songis & Romolo Manfredini
© 2011-2014
"); + QMessageBox::about(this, tr("About Companion"), aboutStr); } void MainWindow::updateMenus() diff --git a/companion/src/version.h.in b/companion/src/version.h.in index cbd6b87f2..e0770040e 100644 --- a/companion/src/version.h.in +++ b/companion/src/version.h.in @@ -1,3 +1,2 @@ #define C9X_VERSION "@C9X_VERSION@" -#define C9X_REVISION @C9X_WC_REVISION@ From 125650d230850412f5eb9ade6f43b28acadd6204 Mon Sep 17 00:00:00 2001 From: Romolo Manfredini Date: Mon, 20 Jan 2014 20:49:13 +0100 Subject: [PATCH 203/308] Google Earth export fixes and proper process startup implementation on MACOS --- companion/src/logsdialog.cpp | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/companion/src/logsdialog.cpp b/companion/src/logsdialog.cpp index d32b4d6e4..0c9702239 100644 --- a/companion/src/logsdialog.cpp +++ b/companion/src/logsdialog.cpp @@ -262,8 +262,8 @@ void logsDialog::on_mapsButton_clicked() { QTextStream outputStream(&geFile); outputStream << "\n\n"; outputStream << "\t\n\t\t" << logFilename << "\n"; - outputStream << "\t\t\n"; - outputStream << "\t\t\n"; + outputStream << "\t\t\n"; + outputStream << "\t\t\n"; outputStream << "\t\t\n\t\t\t\n\t\t\t\tnormal\n\t\t\t\t#multiTrack_n\n\t\t\t\n\t\t\t\n\t\t\t\thighlight\n\t\t\t\t#multiTrack_h\n\t\t\t\n\t\t\n"; outputStream << "\t\t\n"; outputStream << "\t\t\n"; @@ -295,10 +295,13 @@ void logsDialog::on_mapsButton_clicked() { } else { planeName=logFilename; } - outputStream << "\t\t\n\t\t\tLog Data\n\t\t\t\n\t\t\t\t" << planeName << "\n\t\t\t\t#multiTrack\n\t\t\t\t\n"; + outputStream << "\t\t\n\t\t\tLog Data\n\t\t\t\n\t\t\t\t" << planeName << ""; + outputStream << "\n\t\t\t\t#multiTrack"; + outputStream << "\n\t\t\t\t\n"; + outputStream << "\n\t\t\t\t\tabsolute\n"; for (int i=1; ilogTable->item(i-1,1)->isSelected() &&rangeSelected) || !rangeSelected) { - QString tstamp=csvlog.at(i).at(0)+QString("T")+csvlog.at(i).at(1); + QString tstamp=csvlog.at(i).at(0)+QString("T")+csvlog.at(i).at(1)+QString("Z"); outputStream << "\t\t\t\t\t"<< tstamp <<"\n"; } } @@ -319,7 +322,7 @@ void logsDialog::on_mapsButton_clicked() { } latitude.sprintf("%3.8f", flatitude); longitude.sprintf("%3.8f", flongitude); - outputStream << "\t\t\t\t\t" << longitude << " " << latitude << " " << csvlog.at(i).at(altcol) << "\n" ; + outputStream << "\t\t\t\t\t" << longitude << " " << latitude << " " << csvlog.at(i).at(altcol).toFloat() << " \n" ; } } outputStream << "\t\t\t\t\t\n\t\t\t\t\t\t\n"; @@ -341,10 +344,14 @@ void logsDialog::on_mapsButton_clicked() { outputStream << "\t\t\t\t\t\t\t\n"; } } - outputStream << "\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t\n"; + outputStream << "\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t\n"; geFile.close(); - - QStringList parameters; + QStringList parameters; +#ifdef __APPLE__ + gePath = "/usr/bin/open"; + parameters << "-a"; + parameters << "Google\ Earth"; +#endif parameters << geFilename; QProcess *process = new QProcess(this); process->start(gePath, parameters); From 6bba2b14ca3d1c2c1c85ba771c14c1be04696f5e Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Mon, 20 Jan 2014 21:54:38 +0100 Subject: [PATCH 204/308] Virtual Inputs added inside Companion --- companion/src/contributorsdialog.cpp | 34 ++++++++++-------- companion/src/eeprominterface.cpp | 7 +++- companion/src/eeprominterface.h | 14 +++++--- companion/src/helpers.cpp | 24 +++++++++---- companion/src/helpers.h | 17 ++++----- companion/src/mainwindow.cpp | 2 +- companion/src/modeledit/customfunctions.cpp | 39 ++++++++++++--------- companion/src/modeledit/customswitches.cpp | 6 ++-- companion/src/modeledit/expodialog.cpp | 2 +- companion/src/modeledit/heli.cpp | 2 +- companion/src/modeledit/mixerdialog.cpp | 13 ++++--- companion/src/modeledit/mixerdialog.h | 3 +- companion/src/modeledit/mixes.cpp | 2 +- 13 files changed, 101 insertions(+), 64 deletions(-) diff --git a/companion/src/contributorsdialog.cpp b/companion/src/contributorsdialog.cpp index 8f3066b79..54d32f9f7 100644 --- a/companion/src/contributorsdialog.cpp +++ b/companion/src/contributorsdialog.cpp @@ -8,7 +8,8 @@ contributorsDialog::contributorsDialog(QWidget *parent, int contest, QString rnu { ui->setupUi(this); switch (contest) { - case 0: { + case 0: + { QFile file(":/DONATIONS.txt"); QString str; str.append(""); @@ -20,7 +21,7 @@ contributorsDialog::contributorsDialog(QWidget *parent, int contest, QString rnu str.append(""+tr("People who have contributed to this project")+""); str.append(""); str.append(""); - if(file.open( QIODevice::ReadOnly | QIODevice::Text ) ) { + if (file.open(QIODevice::ReadOnly | QIODevice::Text)) { int columns=6; float cwidth=100.0/columns; while (!file.atEnd()) { @@ -66,26 +67,29 @@ contributorsDialog::contributorsDialog(QWidget *parent, int contest, QString rnu } } str.append(""); - str.append(""); - str.append(""); + str.append(""); + str.append(""); str.append("
 
"+tr("Honors go to Rafal Tomczak (RadioClone) and Thomas Husterer (th9x) \nof course. Also to Erez Raviv (er9x) and it's fantastic eePe, from which\nOpenTX Companion was forked out.")+"
"+tr("Thank you all !!!")+"
" + tr("Honors go to Rafal Tomczak (RadioClone), Thomas Husterer (th9x) and Erez Raviv (er9x and eePe)") + "
" + tr("Thank you all !!!") + "
"); str.append(""); ui->textEditor->setHtml(str); - ui->textEditor->scroll(0,0); - this->setWindowTitle(tr("Contributors")); - } + ui->textEditor->scroll(0, 0); + setWindowTitle(tr("Contributors")); break; + } - case 1:{ + case 1: + { QFile file(":/releasenotes.txt"); if(file.open( QIODevice::ReadOnly | QIODevice::Text ) ) { ui->textEditor->setHtml(file.readAll()); } ui->textEditor->scroll(0,0); - this->setWindowTitle(tr("Companion Release Notes")); - } + setWindowTitle(tr("Companion Release Notes")); break; - case 2:{ + } + + case 2: + { if (!rnurl.isEmpty()) { this->setWindowTitle(tr("OpenTX Release Notes")); manager = new QNetworkAccessManager(this); @@ -94,7 +98,8 @@ contributorsDialog::contributorsDialog(QWidget *parent, int contest, QString rnu QNetworkRequest request(url); request.setAttribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::AlwaysNetwork); manager->get(request); - } else { + } + else { QTimer::singleShot(0, this, SLOT(forceClose())); } break; @@ -104,7 +109,7 @@ contributorsDialog::contributorsDialog(QWidget *parent, int contest, QString rnu void contributorsDialog::showEvent ( QShowEvent * ) { - ui->textEditor->scroll(0,0); + ui->textEditor->scroll(0, 0); } contributorsDialog::~contributorsDialog() @@ -117,6 +122,7 @@ void contributorsDialog::replyFinished(QNetworkReply * reply) ui->textEditor->setHtml(reply->readAll()); } -void contributorsDialog::forceClose() { +void contributorsDialog::forceClose() +{ accept();; } diff --git a/companion/src/eeprominterface.cpp b/companion/src/eeprominterface.cpp index 5ff32e0da..c52b8f058 100644 --- a/companion/src/eeprominterface.cpp +++ b/companion/src/eeprominterface.cpp @@ -287,7 +287,12 @@ QString RawSource::toString() if (index<0) { return QObject::tr("----"); } - switch(type) { + switch (type) { + case SOURCE_TYPE_VIRTUAL_INPUT: + if (model && strlen(model->inputNames[index]) > 0) + return QString(model->inputNames[index]); + else + return QObject::tr("Virtual Input %1").arg(index+1); case SOURCE_TYPE_STICK: return AnalogString(index); case SOURCE_TYPE_TRIM: diff --git a/companion/src/eeprominterface.h b/companion/src/eeprominterface.h index e01e89bd9..1b8ec876f 100644 --- a/companion/src/eeprominterface.h +++ b/companion/src/eeprominterface.h @@ -286,19 +286,22 @@ class RawSource { public: RawSource(): type(SOURCE_TYPE_NONE), - index(0) + index(0), + model(NULL) { } - RawSource(int value): + RawSource(int value, const ModelData * model=NULL): type(RawSourceType(abs(value)/65536)), - index(value >= 0 ? abs(value)%65536 : -(abs(value)%65536)) + index(value >= 0 ? abs(value)%65536 : -(abs(value)%65536)), + model(model) { } - RawSource(RawSourceType type, int index=0): + RawSource(RawSourceType type, int index=0, const ModelData * model=NULL): type(type), - index(index) + index(index), + model(model) { } @@ -322,6 +325,7 @@ class RawSource { RawSourceType type; int index; + const ModelData * model; }; enum RawSwitchType { diff --git a/companion/src/helpers.cpp b/companion/src/helpers.cpp index a45c6f27c..1ac6c4dea 100644 --- a/companion/src/helpers.cpp +++ b/companion/src/helpers.cpp @@ -399,7 +399,7 @@ void populateFuncParamArmTCB(QComboBox *b, ModelData * g_model, char * value, QS } } -void populateFuncParamCB(QComboBox *b, uint function, unsigned int value, unsigned int adjustmode) +void populateFuncParamCB(QComboBox *b, const ModelData & model, uint function, unsigned int value, unsigned int adjustmode) { QStringList qs; b->clear(); @@ -423,18 +423,18 @@ void populateFuncParamCB(QComboBox *b, uint function, unsigned int value, unsign b->setCurrentIndex(value); } else if (function==FuncVolume) { - populateSourceCB(b, RawSource(value), POPULATE_SOURCES|POPULATE_TRIMS); + populateSourceCB(b, RawSource(value), model, POPULATE_SOURCES|POPULATE_TRIMS); } else if (function==FuncPlayValue) { - populateSourceCB(b, RawSource(value), POPULATE_SOURCES|POPULATE_SWITCHES|POPULATE_GVARS|POPULATE_TRIMS|POPULATE_TELEMETRYEXT); + populateSourceCB(b, RawSource(value), model, POPULATE_SOURCES|POPULATE_VIRTUAL_INPUTS|POPULATE_SWITCHES|POPULATE_GVARS|POPULATE_TRIMS|POPULATE_TELEMETRYEXT); } else if (function>=FuncAdjustGV1 && function<=FuncAdjustGVLast) { switch (adjustmode) { case 1: - populateSourceCB(b, RawSource(value), POPULATE_SOURCES|POPULATE_TRIMS|POPULATE_SWITCHES); + populateSourceCB(b, RawSource(value), model, POPULATE_SOURCES|POPULATE_TRIMS|POPULATE_SWITCHES); break; case 2: - populateSourceCB(b, RawSource(value), POPULATE_GVARS); + populateSourceCB(b, RawSource(value), model, POPULATE_GVARS); break; case 3: b->clear(); @@ -998,8 +998,7 @@ void populateGVCB(QComboBox *b, int value) b->setCurrentIndex(nullitem); } - -void populateSourceCB(QComboBox *b, const RawSource &source, unsigned int flags) +void populateSourceCB(QComboBox *b, const RawSource & source, const ModelData & model, unsigned int flags) { RawSource item; @@ -1009,7 +1008,18 @@ void populateSourceCB(QComboBox *b, const RawSource &source, unsigned int flags) item = RawSource(SOURCE_TYPE_NONE); b->addItem(item.toString(), item.toValue()); if (item == source) b->setCurrentIndex(b->count()-1); + } + if (flags & POPULATE_VIRTUAL_INPUTS) { + int virtualInputs = GetEepromInterface()->getCapability(VirtualInputs); + for (int i=0; iaddItem(item.toString(), item.toValue()); + if (item == source) b->setCurrentIndex(b->count()-1); + } + } + + if (flags & POPULATE_SOURCES) { for (int i=0; i<4+GetEepromInterface()->getCapability(Pots); i++) { item = RawSource(SOURCE_TYPE_STICK, i); b->addItem(item.toString(), item.toValue()); diff --git a/companion/src/helpers.h b/companion/src/helpers.h index 99669e64c..f62e9b39e 100644 --- a/companion/src/helpers.h +++ b/companion/src/helpers.h @@ -87,7 +87,7 @@ void populateFuncCB(QComboBox *b, unsigned int value); void populateRepeatCB(QComboBox *b, unsigned int value); void populateGVmodeCB(QComboBox *b, unsigned int value); QString FuncParam(uint function, int value, QString paramT="",unsigned int adjustmode=0); -void populateFuncParamCB(QComboBox *b, uint function, unsigned int value, unsigned int adjustmode=0); +void populateFuncParamCB(QComboBox *b, const ModelData & model, uint function, unsigned int value, unsigned int adjustmode=0); void populateFuncParamArmTCB(QComboBox *b, ModelData * g_model, char * value, QStringList & paramsList); void populatePhasesCB(QComboBox *b, int value); void populateTrimUseCB(QComboBox *b, unsigned int phase); @@ -98,19 +98,20 @@ QString getCustomSwitchStr(CustomSwData * customSw, const ModelData & model); QString getProtocolStr(const int proto); QString getPhasesStr(unsigned int phases, ModelData & model); -#define POPULATE_SOURCES 1 -#define POPULATE_TRIMS 2 -#define POPULATE_SWITCHES 4 -#define POPULATE_GVARS 8 -#define POPULATE_TELEMETRY 16 -#define POPULATE_TELEMETRYEXT 32 +#define POPULATE_SOURCES 1 +#define POPULATE_TRIMS 2 +#define POPULATE_SWITCHES 4 +#define POPULATE_GVARS 8 +#define POPULATE_TELEMETRY 16 +#define POPULATE_TELEMETRYEXT 32 +#define POPULATE_VIRTUAL_INPUTS 64 #define GVARS_VARIANT 0x0001 #define FRSKY_VARIANT 0x0002 // void populateGVarCB(QComboBox *b, int value, int min, int max,int pgvars=5); //TODO: Clean Up void populateGVCB(QComboBox *b, int value); -void populateSourceCB(QComboBox *b, const RawSource &source, unsigned int flags); +void populateSourceCB(QComboBox *b, const RawSource &source, const ModelData & model, unsigned int flags); void populateCSWCB(QComboBox *b, int value); QString getTimerMode(int tm); QString getTimerModeB(int tm); diff --git a/companion/src/mainwindow.cpp b/companion/src/mainwindow.cpp index 653e86433..b26829384 100644 --- a/companion/src/mainwindow.cpp +++ b/companion/src/mainwindow.cpp @@ -1537,7 +1537,7 @@ void MainWindow::about() QString aboutStr = "

"; aboutStr.append(tr("OpenTX Home Page: %1").arg("http://www.open-tx.org")); aboutStr.append("

"); - aboutStr.append(tr("The OpenTX Companion project was originally forked from companion9x and eePe").arg("http://code.google.com/p/companion9x").arg("http://code.google.com/p/eepe")); + aboutStr.append(tr("The OpenTX Companion project was originally forked from eePe").arg("http://code.google.com/p/eepe")); aboutStr.append("

"); aboutStr.append(tr("If you've found this program useful, please support by donating").arg(DONATE_STR)); aboutStr.append("

"); diff --git a/companion/src/modeledit/customfunctions.cpp b/companion/src/modeledit/customfunctions.cpp index 3c0c3a1f7..e6b1908bf 100644 --- a/companion/src/modeledit/customfunctions.cpp +++ b/companion/src/modeledit/customfunctions.cpp @@ -110,7 +110,7 @@ CustomFunctionsPanel::CustomFunctionsPanel(QWidget * parent, ModelData & model, fswtchParamT[i] = new QComboBox(this); fswtchParamT[i]->setProperty("index", i); paramLayout->addWidget(fswtchParamT[i]); - populateFuncParamCB(fswtchParamT[i], func, model.funcSw[i].param, model.funcSw[i].adjustMode); + populateFuncParamCB(fswtchParamT[i], model, func, model.funcSw[i].param, model.funcSw[i].adjustMode); connect(fswtchParamT[i], SIGNAL(currentIndexChanged(int)), this, SLOT(customFunctionEdited())); fswtchParamArmT[i] = new QComboBox(this); @@ -295,20 +295,24 @@ void CustomFunctionsPanel::refreshCustomFunction(int i, bool modified) fswtchParam[i]->setMaximum(125); fswtchParam[i]->setValue(model.funcSw[i].param); widgetsMask |= CUSTOM_FUNCTION_NUMERIC_PARAM; - } else { + } + else { if (modified) model.funcSw[i].param = fswtchParamT[i]->itemData(fswtchParamT[i]->currentIndex()).toInt(); - populateFuncParamCB(fswtchParamT[i], index, model.funcSw[i].param, model.funcSw[i].adjustMode); + populateFuncParamCB(fswtchParamT[i], model, index, model.funcSw[i].param, model.funcSw[i].adjustMode); widgetsMask |= CUSTOM_FUNCTION_SOURCE_PARAM; } - } else if (index==FuncReset) { + } + else if (index==FuncReset) { if (modified) model.funcSw[i].param = (uint8_t)fswtchParamT[i]->currentIndex(); - populateFuncParamCB(fswtchParamT[i], index, model.funcSw[i].param); + populateFuncParamCB(fswtchParamT[i], model, index, model.funcSw[i].param); widgetsMask |= CUSTOM_FUNCTION_SOURCE_PARAM; - } else if (index==FuncVolume) { + } + else if (index==FuncVolume) { if (modified) model.funcSw[i].param = fswtchParamT[i]->itemData(fswtchParamT[i]->currentIndex()).toInt(); - populateFuncParamCB(fswtchParamT[i], index, model.funcSw[i].param); + populateFuncParamCB(fswtchParamT[i], model, index, model.funcSw[i].param); widgetsMask |= CUSTOM_FUNCTION_SOURCE_PARAM + CUSTOM_FUNCTION_ENABLE; - } else if (index==FuncPlaySound || index==FuncPlayHaptic || index==FuncPlayValue || index==FuncPlayPrompt || index==FuncPlayBoth || index==FuncBackgroundMusic) { + } + else if (index==FuncPlaySound || index==FuncPlayHaptic || index==FuncPlayValue || index==FuncPlayPrompt || index==FuncPlayBoth || index==FuncBackgroundMusic) { if (modified) model.funcSw[i].repeatParam = fswtchRepeat[i]->itemData(fswtchRepeat[i]->currentIndex()).toInt(); if (index != FuncBackgroundMusic) { if (GetEepromInterface()->getCapability(HasFuncRepeat)) { @@ -317,7 +321,7 @@ void CustomFunctionsPanel::refreshCustomFunction(int i, bool modified) } if (index==FuncPlayValue) { if (modified) model.funcSw[i].param = fswtchParamT[i]->itemData(fswtchParamT[i]->currentIndex()).toInt(); - populateFuncParamCB(fswtchParamT[i], index, model.funcSw[i].param); + populateFuncParamCB(fswtchParamT[i], model, index, model.funcSw[i].param); widgetsMask |= CUSTOM_FUNCTION_SOURCE_PARAM + CUSTOM_FUNCTION_REPEAT; } else if (index==FuncPlayPrompt || index==FuncPlayBoth) { if (GetEepromInterface()->getCapability(VoicesAsNumbers)) { @@ -374,16 +378,19 @@ void CustomFunctionsPanel::refreshCustomFunction(int i, bool modified) } } } - } else if (index==FuncPlaySound) { + } + else if (index==FuncPlaySound) { if (modified) model.funcSw[i].param = (uint8_t)fswtchParamT[i]->currentIndex(); - populateFuncParamCB(fswtchParamT[i], index, model.funcSw[i].param); - widgetsMask |= CUSTOM_FUNCTION_SOURCE_PARAM; - } else if (index==FuncPlayHaptic) { - if (modified) model.funcSw[i].param = (uint8_t)fswtchParamT[i]->currentIndex(); - populateFuncParamCB(fswtchParamT[i], index, model.funcSw[i].param); + populateFuncParamCB(fswtchParamT[i], model, index, model.funcSw[i].param); widgetsMask |= CUSTOM_FUNCTION_SOURCE_PARAM; } - } else if (model.funcSw[i].swtch.type!=SWITCH_TYPE_NONE) { + else if (index==FuncPlayHaptic) { + if (modified) model.funcSw[i].param = (uint8_t)fswtchParamT[i]->currentIndex(); + populateFuncParamCB(fswtchParamT[i], model, index, model.funcSw[i].param); + widgetsMask |= CUSTOM_FUNCTION_SOURCE_PARAM; + } + } + else if (model.funcSw[i].swtch.type!=SWITCH_TYPE_NONE) { if (modified) model.funcSw[i].param = fswtchParam[i]->value(); fswtchParam[i]->setDecimals(0); fswtchParam[i]->setSingleStep(1); diff --git a/companion/src/modeledit/customswitches.cpp b/companion/src/modeledit/customswitches.cpp index e666764cf..008f5cfe8 100644 --- a/companion/src/modeledit/customswitches.cpp +++ b/companion/src/modeledit/customswitches.cpp @@ -254,7 +254,7 @@ void CustomSwitchesPanel::setSwitchWidgetVisibility(int i) cswitchSource2[i]->setVisible(false); cswitchValue[i]->setVisible(false); cswitchOffset[i]->setVisible(true); - populateSourceCB(cswitchSource1[i], source, POPULATE_SOURCES | POPULATE_TRIMS | POPULATE_SWITCHES | POPULATE_TELEMETRY | (GetEepromInterface()->getCapability(GvarsInCS) ? POPULATE_GVARS : 0)); + populateSourceCB(cswitchSource1[i], source, model, POPULATE_SOURCES | POPULATE_VIRTUAL_INPUTS | POPULATE_TRIMS | POPULATE_SWITCHES | POPULATE_TELEMETRY | (GetEepromInterface()->getCapability(GvarsInCS) ? POPULATE_GVARS : 0)); cswitchOffset[i]->setDecimals(source.getDecimals(model)); cswitchOffset[i]->setSingleStep(source.getStep(model)); if (model.customSw[i].func>CS_FN_ELESS && model.customSw[i].funcsetVisible(true); cswitchValue[i]->setVisible(false); cswitchOffset[i]->setVisible(false); - populateSourceCB(cswitchSource1[i], RawSource(model.customSw[i].val1), POPULATE_SOURCES | POPULATE_TRIMS | POPULATE_SWITCHES | POPULATE_TELEMETRY | (GetEepromInterface()->getCapability(GvarsInCS) ? POPULATE_GVARS : 0)); - populateSourceCB(cswitchSource2[i], RawSource(model.customSw[i].val2), POPULATE_SOURCES | POPULATE_TRIMS | POPULATE_SWITCHES | POPULATE_TELEMETRY | (GetEepromInterface()->getCapability(GvarsInCS) ? POPULATE_GVARS : 0)); + populateSourceCB(cswitchSource1[i], RawSource(model.customSw[i].val1), model, POPULATE_SOURCES | POPULATE_VIRTUAL_INPUTS | POPULATE_TRIMS | POPULATE_SWITCHES | POPULATE_TELEMETRY | (GetEepromInterface()->getCapability(GvarsInCS) ? POPULATE_GVARS : 0)); + populateSourceCB(cswitchSource2[i], RawSource(model.customSw[i].val2), model, POPULATE_SOURCES | POPULATE_TRIMS | POPULATE_VIRTUAL_INPUTS | POPULATE_SWITCHES | POPULATE_TELEMETRY | (GetEepromInterface()->getCapability(GvarsInCS) ? POPULATE_GVARS : 0)); break; case CS_FAMILY_TIMERS: cswitchSource1[i]->setVisible(false); diff --git a/companion/src/modeledit/expodialog.cpp b/companion/src/modeledit/expodialog.cpp index 2dc60593b..00387720a 100644 --- a/companion/src/modeledit/expodialog.cpp +++ b/companion/src/modeledit/expodialog.cpp @@ -48,7 +48,7 @@ ExpoDialog::ExpoDialog(QWidget *parent, ModelData & model, ExpoData *expoData, i ui->sideLabel->hide(); ui->sideCB->hide(); ui->inputName->setMaxLength(4); - populateSourceCB(ui->sourceCB, ed->srcRaw, POPULATE_SOURCES | POPULATE_SWITCHES | POPULATE_TRIMS | (GetEepromInterface()->getCapability(GvarsAsSources) ? POPULATE_GVARS : 0)); + populateSourceCB(ui->sourceCB, ed->srcRaw, model, POPULATE_SOURCES | POPULATE_SWITCHES | POPULATE_TRIMS | (GetEepromInterface()->getCapability(GvarsAsSources) ? POPULATE_GVARS : 0)); ui->sourceCB->removeItem(0); } else { diff --git a/companion/src/modeledit/heli.cpp b/companion/src/modeledit/heli.cpp index 6c584658a..a6a97a1b9 100644 --- a/companion/src/modeledit/heli.cpp +++ b/companion/src/modeledit/heli.cpp @@ -26,7 +26,7 @@ void HeliPanel::update() lock = true; ui->swashTypeCB->setCurrentIndex(model.swashRingData.type); - populateSourceCB(ui->swashCollectiveCB, model.swashRingData.collectiveSource, POPULATE_SOURCES | POPULATE_SWITCHES | POPULATE_TRIMS); + populateSourceCB(ui->swashCollectiveCB, model.swashRingData.collectiveSource, model, POPULATE_SOURCES | POPULATE_SWITCHES | POPULATE_TRIMS); ui->swashRingValSB->setValue(model.swashRingData.value); ui->swashInvertELE->setChecked(model.swashRingData.invertELE); ui->swashInvertAIL->setChecked(model.swashRingData.invertAIL); diff --git a/companion/src/modeledit/mixerdialog.cpp b/companion/src/modeledit/mixerdialog.cpp index 5b34c7406..85a9c4a90 100644 --- a/companion/src/modeledit/mixerdialog.cpp +++ b/companion/src/modeledit/mixerdialog.cpp @@ -3,9 +3,10 @@ #include "eeprominterface.h" #include "helpers.h" -MixerDialog::MixerDialog(QWidget *parent, MixData *mixdata, int stickMode) : +MixerDialog::MixerDialog(QWidget *parent, ModelData & model, MixData *mixdata, int stickMode) : QDialog(parent), ui(new Ui::MixerDialog), + model(model), md(mixdata), lock(false) { @@ -19,7 +20,7 @@ MixerDialog::MixerDialog(QWidget *parent, MixData *mixdata, int stickMode) : else this->setWindowTitle(tr("DEST -> CH%1%2").arg(md->destCh/10).arg(md->destCh%10)); - populateSourceCB(ui->sourceCB, md->srcRaw, POPULATE_SOURCES | POPULATE_SWITCHES | POPULATE_TRIMS | (GetEepromInterface()->getCapability(GvarsAsSources) ? POPULATE_GVARS : 0)); + populateSourceCB(ui->sourceCB, md->srcRaw, model, POPULATE_SOURCES | POPULATE_VIRTUAL_INPUTS | POPULATE_SWITCHES | POPULATE_TRIMS | (GetEepromInterface()->getCapability(GvarsAsSources) ? POPULATE_GVARS : 0)); ui->sourceCB->removeItem(0); int limit = GetEepromInterface()->getCapability(OffsetWeight); @@ -145,16 +146,18 @@ void MixerDialog::valuesChanged() if (!lock) { lock = true; QCheckBox * cb_fp[] = {ui->cb_FP0,ui->cb_FP1,ui->cb_FP2,ui->cb_FP3,ui->cb_FP4,ui->cb_FP5,ui->cb_FP6,ui->cb_FP7,ui->cb_FP8 }; - md->srcRaw = RawSource(ui->sourceCB->itemData(ui->sourceCB->currentIndex()).toInt()); + md->srcRaw = RawSource(ui->sourceCB->itemData(ui->sourceCB->currentIndex()).toInt(), &model); if ((ui->sourceCB->itemData(ui->sourceCB->currentIndex()).toInt()-65536)<4) { if (!GetEepromInterface()->getCapability(MixesWithoutExpo)) { ui->MixDR_CB->hide(); ui->label_MixDR->hide(); - } else { + } + else { ui->MixDR_CB->setVisible(true); ui->label_MixDR->setVisible(true); } - } else { + } + else { ui->MixDR_CB->setHidden(true); ui->label_MixDR->setHidden(true); } diff --git a/companion/src/modeledit/mixerdialog.h b/companion/src/modeledit/mixerdialog.h index df2046e0f..437d9ca21 100644 --- a/companion/src/modeledit/mixerdialog.h +++ b/companion/src/modeledit/mixerdialog.h @@ -14,7 +14,7 @@ namespace Ui { class MixerDialog : public QDialog { Q_OBJECT public: - MixerDialog(QWidget *parent, MixData *mixdata, int stickMode); + MixerDialog(QWidget *parent, ModelData & model, MixData *mixdata, int stickMode); ~MixerDialog(); protected: @@ -26,6 +26,7 @@ class MixerDialog : public QDialog { private: Ui::MixerDialog *ui; + ModelData & model; MixData *md; bool lock; GVarGroup * gvWeightGroup; diff --git a/companion/src/modeledit/mixes.cpp b/companion/src/modeledit/mixes.cpp index 7edb50351..5e1fb7769 100644 --- a/companion/src/modeledit/mixes.cpp +++ b/companion/src/modeledit/mixes.cpp @@ -204,7 +204,7 @@ void MixesPanel::gm_openMix(int index) emit modified(); update(); - MixerDialog *g = new MixerDialog(this, &mixd, generalSettings.stickMode); + MixerDialog *g = new MixerDialog(this, model, &mixd, generalSettings.stickMode); if(g->exec()) { model.mixData[index] = mixd; emit modified(); From 6fc35b523fb6e99d7985eec4fbb10fa01f7ffcc0 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Mon, 20 Jan 2014 22:12:17 +0100 Subject: [PATCH 205/308] Inside Companion, Custom Functions TrainerXXX didn't have the ON/OFF Checkbox when no switch selected --- companion/src/modeledit/customfunctions.cpp | 29 +++++++++++++-------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/companion/src/modeledit/customfunctions.cpp b/companion/src/modeledit/customfunctions.cpp index e6b1908bf..13827c0f0 100644 --- a/companion/src/modeledit/customfunctions.cpp +++ b/companion/src/modeledit/customfunctions.cpp @@ -258,7 +258,7 @@ void CustomFunctionsPanel::refreshCustomFunction(int i, bool modified) if (modified) { model.funcSw[i].swtch = RawSwitch(fswtchSwtch[i]->itemData(fswtchSwtch[i]->currentIndex()).toInt()); model.funcSw[i].func = (AssignFunc)fswtchFunc[i]->currentIndex(); - model.funcSw[i].enabled =fswtchEnable[i]->isChecked(); + model.funcSw[i].enabled = fswtchEnable[i]->isChecked(); model.funcSw[i].repeatParam = (AssignFunc)fswtchRepeat[i]->currentIndex(); model.funcSw[i].adjustMode = (AssignFunc)fswtchGVmode[i]->currentIndex(); } @@ -275,7 +275,8 @@ void CustomFunctionsPanel::refreshCustomFunction(int i, bool modified) } fswtchParam[i]->setValue(model.funcSw[i].param); widgetsMask |= CUSTOM_FUNCTION_NUMERIC_PARAM + CUSTOM_FUNCTION_ENABLE; - } else if (index==FuncLogs) { + } + else if (index==FuncLogs) { fswtchParam[i]->setDecimals(1); fswtchParam[i]->setMinimum(0); fswtchParam[i]->setMaximum(25.5); @@ -323,14 +324,16 @@ void CustomFunctionsPanel::refreshCustomFunction(int i, bool modified) if (modified) model.funcSw[i].param = fswtchParamT[i]->itemData(fswtchParamT[i]->currentIndex()).toInt(); populateFuncParamCB(fswtchParamT[i], model, index, model.funcSw[i].param); widgetsMask |= CUSTOM_FUNCTION_SOURCE_PARAM + CUSTOM_FUNCTION_REPEAT; - } else if (index==FuncPlayPrompt || index==FuncPlayBoth) { + } + else if (index==FuncPlayPrompt || index==FuncPlayBoth) { if (GetEepromInterface()->getCapability(VoicesAsNumbers)) { fswtchParam[i]->setDecimals(0); fswtchParam[i]->setSingleStep(1); fswtchParam[i]->setMinimum(0); if (index==FuncPlayPrompt) { widgetsMask |= CUSTOM_FUNCTION_NUMERIC_PARAM + CUSTOM_FUNCTION_REPEAT + CUSTOM_FUNCTION_GV_TOOGLE; - } else { + } + else { widgetsMask |= CUSTOM_FUNCTION_NUMERIC_PARAM + CUSTOM_FUNCTION_REPEAT; fswtchParamGV[i]->setChecked(false); } @@ -339,7 +342,8 @@ void CustomFunctionsPanel::refreshCustomFunction(int i, bool modified) if (fswtchParamGV[i]->isChecked()) { fswtchParam[i]->setMinimum(1); model.funcSw[i].param = std::min(fswtchParam[i]->value(),5.0)+(fswtchParamGV[i]->isChecked() ? 250 : 0); - } else { + } + else { model.funcSw[i].param = fswtchParam[i]->value(); } } @@ -347,13 +351,15 @@ void CustomFunctionsPanel::refreshCustomFunction(int i, bool modified) fswtchParamGV[i]->setChecked(true); fswtchParam[i]->setValue(model.funcSw[i].param-250); fswtchParam[i]->setMaximum(5); - } else { + } + else { fswtchParamGV[i]->setChecked(false); fswtchParam[i]->setValue(model.funcSw[i].param); } if (model.funcSw[i].param < 251) widgetsMask |= CUSTOM_FUNCTION_PLAY; - } else { + } + else { widgetsMask |= CUSTOM_FUNCTION_FILE_PARAM; if (modified) { memset(model.funcSw[i].paramarm, 0, sizeof(model.funcSw[i].paramarm)); @@ -366,7 +372,8 @@ void CustomFunctionsPanel::refreshCustomFunction(int i, bool modified) } } } - } else if (index==FuncBackgroundMusic) { + } + else if (index==FuncBackgroundMusic) { widgetsMask |= CUSTOM_FUNCTION_FILE_PARAM; if (modified) { memset(model.funcSw[i].paramarm, 0, sizeof(model.funcSw[i].paramarm)); @@ -389,13 +396,13 @@ void CustomFunctionsPanel::refreshCustomFunction(int i, bool modified) populateFuncParamCB(fswtchParamT[i], model, index, model.funcSw[i].param); widgetsMask |= CUSTOM_FUNCTION_SOURCE_PARAM; } - } - else if (model.funcSw[i].swtch.type!=SWITCH_TYPE_NONE) { + } + else { if (modified) model.funcSw[i].param = fswtchParam[i]->value(); fswtchParam[i]->setDecimals(0); fswtchParam[i]->setSingleStep(1); fswtchParam[i]->setValue(model.funcSw[i].param); - if (index<=FuncInstantTrim) { + if (index <= FuncInstantTrim) { widgetsMask |= CUSTOM_FUNCTION_ENABLE; } } From 676491412d584c410e87bba7f63d6d5e12ae1ffc Mon Sep 17 00:00:00 2001 From: mhotar Date: Mon, 20 Jan 2014 22:12:32 +0100 Subject: [PATCH 206/308] lbm files back to git repo --- radio/src/Makefile | 1 - radio/src/fonts/sqt5/.gitignore | 1 - radio/src/fonts/sqt5/font_04x06.lbm | 6 ++++++ radio/src/fonts/sqt5/font_05x07.lbm | 6 ++++++ radio/src/fonts/sqt5/font_05x07_B_compressed.lbm | 1 + radio/src/fonts/sqt5/font_08x10.lbm | 6 ++++++ radio/src/fonts/sqt5/font_10x14.lbm | 6 ++++++ radio/src/fonts/sqt5/font_10x14_compressed.lbm | 1 + radio/src/fonts/sqt5/font_cz_04x06.lbm | 1 + radio/src/fonts/sqt5/font_cz_05x07.lbm | 1 + radio/src/fonts/sqt5/font_cz_08x10.lbm | 1 + radio/src/fonts/sqt5/font_cz_10x14.lbm | 1 + radio/src/fonts/sqt5/font_de_04x06.lbm | 1 + radio/src/fonts/sqt5/font_de_05x07.lbm | 1 + radio/src/fonts/sqt5/font_de_08x10.lbm | 1 + radio/src/fonts/sqt5/font_de_10x14.lbm | 1 + radio/src/fonts/sqt5/font_es_04x06.lbm | 1 + radio/src/fonts/sqt5/font_es_05x07.lbm | 1 + radio/src/fonts/sqt5/font_es_08x10.lbm | 1 + radio/src/fonts/sqt5/font_es_10x14.lbm | 1 + radio/src/fonts/sqt5/font_fr_04x06.lbm | 1 + radio/src/fonts/sqt5/font_fr_05x07.lbm | 1 + radio/src/fonts/sqt5/font_fr_08x10.lbm | 1 + radio/src/fonts/sqt5/font_fr_10x14.lbm | 1 + radio/src/fonts/sqt5/font_it_04x06.lbm | 1 + radio/src/fonts/sqt5/font_it_05x07.lbm | 1 + radio/src/fonts/sqt5/font_it_08x10.lbm | 1 + radio/src/fonts/sqt5/font_it_10x14.lbm | 1 + radio/src/fonts/sqt5/font_pl_04x06.lbm | 1 + radio/src/fonts/sqt5/font_pl_05x07.lbm | 1 + radio/src/fonts/sqt5/font_pl_08x10.lbm | 1 + radio/src/fonts/sqt5/font_pl_10x14.lbm | 1 + radio/src/fonts/sqt5/font_pt_04x06.lbm | 1 + radio/src/fonts/sqt5/font_pt_05x07.lbm | 1 + radio/src/fonts/sqt5/font_pt_08x10.lbm | 1 + radio/src/fonts/sqt5/font_pt_10x14.lbm | 1 + radio/src/fonts/sqt5/font_se_04x06.lbm | 1 + radio/src/fonts/sqt5/font_se_05x07.lbm | 1 + radio/src/fonts/sqt5/font_se_08x10.lbm | 1 + radio/src/fonts/sqt5/font_se_10x14.lbm | 1 + radio/src/fonts/std/.gitignore | 1 - radio/src/fonts/std/font_03x05.lbm | 1 + radio/src/fonts/std/font_04x06.lbm | 6 ++++++ radio/src/fonts/std/font_04x06_extra.lbm | 1 + radio/src/fonts/std/font_05x07.lbm | 6 ++++++ radio/src/fonts/std/font_05x07_B_compressed.lbm | 1 + radio/src/fonts/std/font_05x07_extra.lbm | 1 + radio/src/fonts/std/font_08x10.lbm | 6 ++++++ radio/src/fonts/std/font_10x14.lbm | 6 ++++++ radio/src/fonts/std/font_10x14_compressed.lbm | 1 + radio/src/fonts/std/font_10x14_extra.lbm | 1 + radio/src/fonts/std/font_cz_04x06.lbm | 1 + radio/src/fonts/std/font_cz_05x07.lbm | 1 + radio/src/fonts/std/font_cz_08x10.lbm | 1 + radio/src/fonts/std/font_cz_10x14.lbm | 1 + radio/src/fonts/std/font_de_04x06.lbm | 1 + radio/src/fonts/std/font_de_05x07.lbm | 1 + radio/src/fonts/std/font_de_08x10.lbm | 1 + radio/src/fonts/std/font_de_10x14.lbm | 1 + radio/src/fonts/std/font_es_04x06.lbm | 1 + radio/src/fonts/std/font_es_05x07.lbm | 1 + radio/src/fonts/std/font_es_08x10.lbm | 1 + radio/src/fonts/std/font_es_10x14.lbm | 1 + radio/src/fonts/std/font_fr_04x06.lbm | 1 + radio/src/fonts/std/font_fr_05x07.lbm | 1 + radio/src/fonts/std/font_fr_08x10.lbm | 1 + radio/src/fonts/std/font_fr_10x14.lbm | 1 + radio/src/fonts/std/font_it_04x06.lbm | 1 + radio/src/fonts/std/font_it_05x07.lbm | 1 + radio/src/fonts/std/font_it_08x10.lbm | 1 + radio/src/fonts/std/font_it_10x14.lbm | 1 + radio/src/fonts/std/font_pl_04x06.lbm | 1 + radio/src/fonts/std/font_pl_05x07.lbm | 1 + radio/src/fonts/std/font_pl_08x10.lbm | 1 + radio/src/fonts/std/font_pl_10x14.lbm | 1 + radio/src/fonts/std/font_pt_04x06.lbm | 1 + radio/src/fonts/std/font_pt_05x07.lbm | 1 + radio/src/fonts/std/font_pt_08x10.lbm | 1 + radio/src/fonts/std/font_pt_10x14.lbm | 1 + radio/src/fonts/std/font_se_04x06.lbm | 1 + radio/src/fonts/std/font_se_05x07.lbm | 1 + radio/src/fonts/std/font_se_08x10.lbm | 1 + radio/src/fonts/std/font_se_10x14.lbm | 1 + 83 files changed, 120 insertions(+), 3 deletions(-) delete mode 100644 radio/src/fonts/sqt5/.gitignore create mode 100644 radio/src/fonts/sqt5/font_04x06.lbm create mode 100644 radio/src/fonts/sqt5/font_05x07.lbm create mode 100644 radio/src/fonts/sqt5/font_05x07_B_compressed.lbm create mode 100644 radio/src/fonts/sqt5/font_08x10.lbm create mode 100644 radio/src/fonts/sqt5/font_10x14.lbm create mode 100644 radio/src/fonts/sqt5/font_10x14_compressed.lbm create mode 100644 radio/src/fonts/sqt5/font_cz_04x06.lbm create mode 100644 radio/src/fonts/sqt5/font_cz_05x07.lbm create mode 100644 radio/src/fonts/sqt5/font_cz_08x10.lbm create mode 100644 radio/src/fonts/sqt5/font_cz_10x14.lbm create mode 100644 radio/src/fonts/sqt5/font_de_04x06.lbm create mode 100644 radio/src/fonts/sqt5/font_de_05x07.lbm create mode 100644 radio/src/fonts/sqt5/font_de_08x10.lbm create mode 100644 radio/src/fonts/sqt5/font_de_10x14.lbm create mode 100644 radio/src/fonts/sqt5/font_es_04x06.lbm create mode 100644 radio/src/fonts/sqt5/font_es_05x07.lbm create mode 100644 radio/src/fonts/sqt5/font_es_08x10.lbm create mode 100644 radio/src/fonts/sqt5/font_es_10x14.lbm create mode 100644 radio/src/fonts/sqt5/font_fr_04x06.lbm create mode 100644 radio/src/fonts/sqt5/font_fr_05x07.lbm create mode 100644 radio/src/fonts/sqt5/font_fr_08x10.lbm create mode 100644 radio/src/fonts/sqt5/font_fr_10x14.lbm create mode 100644 radio/src/fonts/sqt5/font_it_04x06.lbm create mode 100644 radio/src/fonts/sqt5/font_it_05x07.lbm create mode 100644 radio/src/fonts/sqt5/font_it_08x10.lbm create mode 100644 radio/src/fonts/sqt5/font_it_10x14.lbm create mode 100644 radio/src/fonts/sqt5/font_pl_04x06.lbm create mode 100644 radio/src/fonts/sqt5/font_pl_05x07.lbm create mode 100644 radio/src/fonts/sqt5/font_pl_08x10.lbm create mode 100644 radio/src/fonts/sqt5/font_pl_10x14.lbm create mode 100644 radio/src/fonts/sqt5/font_pt_04x06.lbm create mode 100644 radio/src/fonts/sqt5/font_pt_05x07.lbm create mode 100644 radio/src/fonts/sqt5/font_pt_08x10.lbm create mode 100644 radio/src/fonts/sqt5/font_pt_10x14.lbm create mode 100644 radio/src/fonts/sqt5/font_se_04x06.lbm create mode 100644 radio/src/fonts/sqt5/font_se_05x07.lbm create mode 100644 radio/src/fonts/sqt5/font_se_08x10.lbm create mode 100644 radio/src/fonts/sqt5/font_se_10x14.lbm delete mode 100644 radio/src/fonts/std/.gitignore create mode 100644 radio/src/fonts/std/font_03x05.lbm create mode 100644 radio/src/fonts/std/font_04x06.lbm create mode 100644 radio/src/fonts/std/font_04x06_extra.lbm create mode 100644 radio/src/fonts/std/font_05x07.lbm create mode 100644 radio/src/fonts/std/font_05x07_B_compressed.lbm create mode 100644 radio/src/fonts/std/font_05x07_extra.lbm create mode 100644 radio/src/fonts/std/font_08x10.lbm create mode 100644 radio/src/fonts/std/font_10x14.lbm create mode 100644 radio/src/fonts/std/font_10x14_compressed.lbm create mode 100644 radio/src/fonts/std/font_10x14_extra.lbm create mode 100644 radio/src/fonts/std/font_cz_04x06.lbm create mode 100644 radio/src/fonts/std/font_cz_05x07.lbm create mode 100644 radio/src/fonts/std/font_cz_08x10.lbm create mode 100644 radio/src/fonts/std/font_cz_10x14.lbm create mode 100644 radio/src/fonts/std/font_de_04x06.lbm create mode 100644 radio/src/fonts/std/font_de_05x07.lbm create mode 100644 radio/src/fonts/std/font_de_08x10.lbm create mode 100644 radio/src/fonts/std/font_de_10x14.lbm create mode 100644 radio/src/fonts/std/font_es_04x06.lbm create mode 100644 radio/src/fonts/std/font_es_05x07.lbm create mode 100644 radio/src/fonts/std/font_es_08x10.lbm create mode 100644 radio/src/fonts/std/font_es_10x14.lbm create mode 100644 radio/src/fonts/std/font_fr_04x06.lbm create mode 100644 radio/src/fonts/std/font_fr_05x07.lbm create mode 100644 radio/src/fonts/std/font_fr_08x10.lbm create mode 100644 radio/src/fonts/std/font_fr_10x14.lbm create mode 100644 radio/src/fonts/std/font_it_04x06.lbm create mode 100644 radio/src/fonts/std/font_it_05x07.lbm create mode 100644 radio/src/fonts/std/font_it_08x10.lbm create mode 100644 radio/src/fonts/std/font_it_10x14.lbm create mode 100644 radio/src/fonts/std/font_pl_04x06.lbm create mode 100644 radio/src/fonts/std/font_pl_05x07.lbm create mode 100644 radio/src/fonts/std/font_pl_08x10.lbm create mode 100644 radio/src/fonts/std/font_pl_10x14.lbm create mode 100644 radio/src/fonts/std/font_pt_04x06.lbm create mode 100644 radio/src/fonts/std/font_pt_05x07.lbm create mode 100644 radio/src/fonts/std/font_pt_08x10.lbm create mode 100644 radio/src/fonts/std/font_pt_10x14.lbm create mode 100644 radio/src/fonts/std/font_se_04x06.lbm create mode 100644 radio/src/fonts/std/font_se_05x07.lbm create mode 100644 radio/src/fonts/std/font_se_08x10.lbm create mode 100644 radio/src/fonts/std/font_se_10x14.lbm diff --git a/radio/src/Makefile b/radio/src/Makefile index 17341a643..81f99085b 100644 --- a/radio/src/Makefile +++ b/radio/src/Makefile @@ -1307,7 +1307,6 @@ clean_list : $(REMOVE) *.lst $(REMOVE) allsrc.cpp $(REMOVE) stamp-opentx.h - $(REMOVE) fonts/*/*.lbm #### Install diff --git a/radio/src/fonts/sqt5/.gitignore b/radio/src/fonts/sqt5/.gitignore deleted file mode 100644 index 82b82bcbf..000000000 --- a/radio/src/fonts/sqt5/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/*.lbm diff --git a/radio/src/fonts/sqt5/font_04x06.lbm b/radio/src/fonts/sqt5/font_04x06.lbm new file mode 100644 index 000000000..2f07b5864 --- /dev/null +++ b/radio/src/fonts/sqt5/font_04x06.lbm @@ -0,0 +1,6 @@ +0x00,0x00,0x7f,0x7f,0x7f,0x7f,0x7f,0x2f,0x7f,0x7f,0x7f,0x07,0x00,0x07,0x7f,0x14,0x3e,0x14,0x3e,0x14,0x04,0x2a,0x3e,0x2a,0x10,0x13,0x08,0x04,0x32,0x7f,0x14,0x2a,0x14,0x20,0x7f,0x7f,0x7f,0x07,0x7f,0x7f,0x7f,0x1e,0x21,0x7f,0x7f,0x7f,0x21,0x1e,0x7f,0x7f,0x7f,0x2a,0x1c,0x2a,0x7f,0x08,0x08,0x3e,0x08,0x08,0x7f,0x40,0x30,0x10,0x7f,0x08,0x08,0x08,0x08,0x7f,0x00,0x30,0x30,0x7f,0x7f,0x10,0x08,0x04,0x02,0x7f, +0x1e,0x21,0x21,0x1e,0x7f,0x00,0x22,0x3f,0x20,0x7f,0x22,0x31,0x29,0x26,0x7f,0x21,0x25,0x25,0x1a,0x7f,0x0c,0x0a,0x3f,0x08,0x7f,0x17,0x25,0x25,0x19,0x7f,0x1e,0x25,0x25,0x18,0x7f,0x01,0x31,0x0d,0x03,0x7f,0x1a,0x25,0x25,0x1a,0x7f,0x06,0x29,0x29,0x1e,0x7f,0x7f,0x36,0x36,0x00,0x7f,0x7f,0x36,0x16,0x00,0x7f,0x7f,0x08,0x14,0x22,0x7f,0x14,0x14,0x14,0x14,0x7f,0x7f,0x22,0x14,0x08,0x7f,0x7f,0x02,0x29,0x06,0x7f, +0x7f,0x02,0x05,0x02,0x7f,0x3e,0x09,0x09,0x3e,0x7f,0x3f,0x25,0x27,0x3c,0x7f,0x1e,0x21,0x21,0x21,0x7f,0x3f,0x21,0x21,0x1e,0x7f,0x3f,0x25,0x25,0x21,0x7f,0x3f,0x05,0x05,0x01,0x7f,0x1e,0x21,0x29,0x39,0x7f,0x3f,0x04,0x04,0x3f,0x7f,0x7f,0x21,0x3f,0x21,0x7f,0x10,0x20,0x21,0x1f,0x7f,0x3f,0x0c,0x12,0x21,0x7f,0x3f,0x20,0x20,0x20,0x7f,0x3f,0x01,0x07,0x01,0x3f,0x3f,0x01,0x01,0x3e,0x7f,0x1e,0x21,0x21,0x1e,0x7f, +0x3f,0x09,0x09,0x0f,0x7f,0x3f,0x21,0x31,0x3f,0x7f,0x3f,0x09,0x0f,0x38,0x7f,0x22,0x25,0x25,0x19,0x7f,0x7f,0x01,0x3f,0x01,0x7f,0x1f,0x20,0x20,0x1f,0x7f,0x3f,0x20,0x10,0x0f,0x7f,0x3f,0x20,0x18,0x20,0x3f,0x37,0x08,0x08,0x37,0x7f,0x7f,0x07,0x38,0x07,0x7f,0x31,0x29,0x25,0x23,0x7f,0x7f,0x3f,0x21,0x21,0x7f,0x02,0x04,0x08,0x10,0x7f,0x7f,0x21,0x21,0x3f,0x7f,0x7f,0x02,0x01,0x02,0x7f,0x20,0x20,0x20,0x20,0x7f, +0x7f,0x01,0x02,0x7f,0x7f,0x3a,0x2a,0x2a,0x3e,0x7f,0x3f,0x22,0x22,0x3e,0x7f,0x3e,0x22,0x22,0x22,0x7f,0x3e,0x22,0x22,0x3f,0x7f,0x3e,0x2a,0x2a,0x2e,0x7f,0x28,0x3f,0x29,0x01,0x7f,0x2e,0x2a,0x2a,0x3e,0x7f,0x3f,0x02,0x02,0x3e,0x7f,0x7f,0x24,0x3d,0x20,0x7f,0x40,0x44,0x3d,0x7f,0x7f,0x3f,0x08,0x14,0x22,0x7f,0x7f,0x21,0x3f,0x20,0x7f,0x3e,0x02,0x3e,0x02,0x3c,0x3e,0x02,0x02,0x3c,0x7f,0x1c,0x22,0x22,0x1c,0x7f, +0x3e,0x12,0x12,0x1e,0x7f,0x1e,0x12,0x12,0x3e,0x7f,0x3e,0x02,0x02,0x04,0x7f,0x2e,0x2a,0x2a,0x3a,0x7f,0x1f,0x24,0x20,0x7f,0x7f,0x3e,0x20,0x20,0x3e,0x7f,0x3e,0x20,0x10,0x0e,0x7f,0x3e,0x20,0x10,0x20,0x3e,0x36,0x08,0x08,0x36,0x7f,0x2e,0x28,0x28,0x3e,0x7f,0x22,0x32,0x2a,0x26,0x7f,0x7f,0x04,0x1e,0x21,0x7f,0x7f,0x7f,0x3f,0x7f,0x7f,0x7f,0x21,0x1e,0x04,0x7f,0x08,0x2a,0x1c,0x08,0x7f,0x7f,0x08,0x1c,0x2a,0x08, diff --git a/radio/src/fonts/sqt5/font_05x07.lbm b/radio/src/fonts/sqt5/font_05x07.lbm new file mode 100644 index 000000000..78588b8da --- /dev/null +++ b/radio/src/fonts/sqt5/font_05x07.lbm @@ -0,0 +1,6 @@ +0x00,0x00,0xff,0xff,0xff,0xff,0xff,0x6f,0xff,0xff,0xff,0x07,0x00,0x07,0xff,0x18,0x30,0x18,0x0c,0x06,0x3e,0x7f,0x7b,0x7f,0x3e,0x23,0x13,0x08,0x64,0x62,0x36,0x49,0x55,0x22,0x50,0xff,0x05,0x03,0xff,0xff,0xff,0x1c,0x22,0x41,0xff,0xff,0x41,0x22,0x1c,0xff,0x14,0x08,0x3e,0x08,0x14,0x08,0x08,0x3e,0x08,0x08,0xff,0x50,0x30,0xff,0xff,0x00,0x08,0x08,0x08,0xff,0xff,0xff,0x40,0xff,0xff,0x20,0x10,0x08,0x04,0x02, +0x3e,0x41,0x41,0x3e,0xff,0x00,0x42,0x7f,0x40,0xff,0x62,0x51,0x49,0x46,0xff,0x41,0x49,0x49,0x36,0xff,0x18,0x14,0x12,0x7f,0xff,0x27,0x45,0x45,0x39,0xff,0x3e,0x49,0x49,0x32,0xff,0x01,0x79,0x05,0x03,0xff,0x36,0x49,0x49,0x36,0xff,0x06,0x49,0x29,0x1e,0xff,0xff,0x36,0x36,0xff,0xff,0xff,0x56,0x36,0xff,0xff,0xff,0x08,0x14,0x22,0x41,0x14,0x14,0x14,0x14,0x14,0x41,0x22,0x14,0x08,0xff,0x03,0x01,0x51,0x09,0x07, +0x06,0x09,0x09,0x06,0xff,0x7e,0x09,0x09,0x09,0x7e,0x7f,0x49,0x49,0x4f,0x78,0x3e,0x41,0x41,0x41,0x41,0x7f,0x41,0x41,0x41,0x3e,0x7f,0x49,0x49,0x49,0x41,0x7f,0x09,0x09,0x09,0x01,0x3e,0x41,0x49,0x49,0x79,0x7f,0x08,0x08,0x08,0x7f,0xff,0x41,0x7f,0x41,0xff,0x40,0x41,0x3f,0x01,0xff,0x7f,0x08,0x14,0x22,0x41,0x7f,0x40,0x40,0x40,0x40,0x7f,0x01,0x0f,0x01,0x7f,0x7f,0x01,0x01,0x01,0x7e,0x3e,0x41,0x41,0x41,0x3e, +0x7f,0x09,0x09,0x09,0x06,0x3e,0x41,0x51,0x21,0x5e,0x7f,0x09,0x09,0x0f,0x78,0x46,0x49,0x49,0x49,0x31,0x01,0x01,0x7f,0x01,0x01,0x3f,0x40,0x40,0x40,0x3f,0x7f,0x40,0x20,0x10,0x0f,0x7f,0x40,0x30,0x40,0x7f,0x63,0x14,0x08,0x14,0x63,0x0f,0x08,0x78,0x08,0x0f,0x61,0x51,0x49,0x45,0x43,0xff,0x7f,0x41,0x41,0x00,0x02,0x04,0x08,0x10,0x20,0x00,0x41,0x41,0x7f,0xff,0x04,0x02,0x01,0x02,0x04,0x40,0x40,0x40,0x40,0xff, +0xff,0x01,0x02,0x04,0xff,0x74,0x54,0x54,0x54,0x7c,0x7f,0x44,0x44,0x44,0x7c,0x7c,0x44,0x44,0x44,0x44,0x7c,0x44,0x44,0x44,0x7f,0x7c,0x54,0x54,0x54,0x5c,0x44,0x7f,0x45,0x01,0xff,0x5c,0x54,0x54,0x54,0x7c,0x7f,0x04,0x04,0x04,0x7c,0xff,0x44,0x7d,0x40,0xff,0xff,0x40,0x44,0x3d,0xff,0x7f,0x10,0x28,0x44,0xff,0xff,0x41,0x7f,0x40,0xff,0x7c,0x04,0x1c,0x04,0x7c,0x7c,0x04,0x04,0x04,0x78,0x38,0x44,0x44,0x44,0x38, +0x7c,0x14,0x14,0x14,0x1c,0x1c,0x14,0x14,0x14,0x7c,0x7c,0x04,0x04,0x04,0x0c,0x5c,0x54,0x54,0x54,0x74,0xff,0x3f,0x44,0x40,0xff,0x7c,0x40,0x40,0x40,0x7c,0x7c,0x40,0x20,0x10,0x0c,0x7c,0x40,0x20,0x40,0x7c,0x44,0x28,0x10,0x28,0x44,0x5c,0x50,0x50,0x50,0x7c,0x44,0x64,0x54,0x4c,0x44,0x10,0x08,0x10,0x08,0xff,0xff,0xff,0x7f,0xff,0xff,0x41,0x22,0x54,0x28,0xff,0x08,0x08,0x22,0x1c,0x08,0x08,0x1c,0x22,0x08,0x08, diff --git a/radio/src/fonts/sqt5/font_05x07_B_compressed.lbm b/radio/src/fonts/sqt5/font_05x07_B_compressed.lbm new file mode 100644 index 000000000..5f41903fc --- /dev/null +++ b/radio/src/fonts/sqt5/font_05x07_B_compressed.lbm @@ -0,0 +1 @@ +0x00,0x00,0x00,0xff,0xff,0xff,0x80,0xe0,0x60,0xff,0x00,0x18,0x18,0x18,0xff,0xff,0x60,0x60,0xff,0xff,0x60,0x60,0x60,0x60,0xff,0x3e,0x7f,0x41,0x7f,0x3e,0x00,0x42,0x7f,0x7f,0x40,0x62,0x73,0x59,0x4f,0x46,0x41,0x49,0x7f,0x7f,0x36,0x18,0x1c,0x12,0x7f,0x7f,0x27,0x67,0x45,0x7d,0x39,0x3e,0x7f,0x49,0x7b,0x32,0x01,0x79,0x7d,0x07,0x03,0x36,0x7f,0x49,0x7f,0x36,0x06,0x4f,0x69,0x3f,0x1e,0xff,0x36,0x36,0xff,0xff,0x7e,0x7f,0x09,0x7f,0x7e,0x7f,0x7f,0x49,0x7f,0x78,0x3e,0x7f,0x7f,0x41,0x41,0x7f,0x7f,0x41,0x7f,0x3e,0x7f,0x7f,0x49,0x49,0x41,0x7f,0x7f,0x09,0x09,0x01,0x3e,0x7f,0x41,0x59,0x79,0x7f,0x7f,0x08,0x7f,0x7f,0x41,0x7f,0x7f,0x41,0xff,0x30,0x70,0x41,0x7f,0x3f,0x7f,0x7f,0x14,0x63,0x41,0x7f,0x7f,0x40,0x40,0xff,0x7f,0x07,0x1f,0x07,0x7f,0x7f,0x7f,0x01,0x7f,0x7e,0x3e,0x7f,0x41,0x7f,0x3e,0x7f,0x7f,0x09,0x0f,0x06,0x3e,0x7f,0x41,0x2f,0x5e,0x7f,0x7f,0x19,0x7f,0x78,0x46,0x4f,0x5d,0x79,0x31,0x01,0x7f,0x7f,0x01,0xff,0x3f,0x7f,0x40,0x7f,0x3f,0x7f,0x7f,0x60,0x3f,0x1f,0x3f,0x70,0x38,0x70,0x3f,0x63,0x77,0x1c,0x77,0x63,0x07,0x0f,0x78,0x0f,0x07,0x71,0x79,0x5d,0x4f,0x47,0x74,0x74,0x54,0x7c,0x7c,0x7f,0x7f,0x44,0x7c,0x7c,0x7c,0x7c,0x44,0x44,0x44,0x7c,0x7c,0x44,0x7f,0x7f,0x7c,0x7c,0x54,0x5c,0x5c,0x08,0x7f,0x7f,0x09,0xff,0x5c,0x5c,0x54,0x7c,0x7c,0x7f,0x7f,0x04,0x7c,0x7c,0x44,0x7d,0x7d,0x40,0xff,0x40,0x44,0x7d,0x3d,0xff,0x7f,0x7f,0x28,0x44,0xff,0x41,0x7f,0x7f,0x40,0xff,0x7c,0x0c,0x3c,0x0c,0x7c,0x7c,0x7c,0x0c,0x7c,0x78,0x38,0x7c,0x44,0x7c,0x38,0x7c,0x7c,0x24,0x3c,0x3c,0x3c,0x3c,0x24,0x7c,0x7c,0x7c,0x7c,0x0c,0x1c,0x18,0x5c,0x5c,0x7c,0x74,0x74,0x3f,0x7f,0x44,0x40,0xff,0x7c,0x7c,0x60,0x7c,0x7c,0x7c,0x7c,0x60,0x3c,0x1c,0x3c,0x70,0x38,0x70,0x3c,0x44,0x6c,0x38,0x6c,0x44,0x5c,0x5c,0x50,0x7c,0x7c,0x44,0x64,0x74,0x5c,0x4c, diff --git a/radio/src/fonts/sqt5/font_08x10.lbm b/radio/src/fonts/sqt5/font_08x10.lbm new file mode 100644 index 000000000..e2af644f5 --- /dev/null +++ b/radio/src/fonts/sqt5/font_08x10.lbm @@ -0,0 +1,6 @@ +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x0f,0xff,0x0f,0xff,0x0f,0xff,0x0f,0xff,0x0f,0xff,0x0f,0xff,0x0f,0xfe,0x05,0xfe,0x05,0xff,0x0f,0xff,0x0f,0xff,0x0f,0xff,0x0f,0x0e,0x00,0x0e,0x00,0x00,0x00,0x0e,0x00,0x0e,0x00,0xff,0x0f,0xff,0x0f,0x90,0x00,0xfc,0x03,0xfc,0x03,0x90,0x00,0xfc,0x03,0xfc,0x03,0x90,0x00,0xff,0x0f,0x38,0x02,0x7c,0x06,0x64,0x04,0xfe,0x0f,0xc4,0x04,0xcc,0x07,0x88,0x03,0xff,0x0f,0x1c,0x02,0x14,0x03,0x9c,0x01,0xc0,0x00,0x60,0x00,0xb0,0x03,0x98,0x02,0x88,0x03,0x80,0x03,0xdc,0x07,0x7e,0x04,0x72,0x04,0xde,0x06,0x8c,0x03,0x80,0x07,0xc0,0x04,0xff,0x0f,0xff,0x0f,0xff,0x0f,0x1e,0x00,0x1e,0x00,0xff,0x0f,0xff,0x0f,0xff,0x0f,0xff,0x0f,0xf0,0x00,0xfc,0x03,0x0e,0x07,0x03,0x0c,0x01,0x08,0xff,0x0f,0xff,0x0f,0xff,0x0f,0xff,0x0f,0x01,0x08,0x03,0x0c,0x0e,0x07,0xfc,0x03,0xf0,0x00,0xff,0x0f,0x40,0x00,0x50,0x01,0xf0,0x01,0xe0,0x00,0xf0,0x01,0x50,0x01,0x40,0x00,0xff,0x0f,0xff,0x0f,0x40,0x00,0x40,0x00,0xf0,0x01,0x40,0x00,0x40,0x00,0xff,0x0f,0xff,0x0f,0xff,0x0f,0xff,0x0f,0x80,0x09,0x80,0x0f,0x80,0x07,0xff,0x0f,0xff,0x0f,0xff,0x0f,0xff,0x0f,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0xff,0x0f,0xff,0x0f,0xff,0x0f,0xff,0x0f,0x00,0x04,0x00,0x0e,0x00,0x0e,0x00,0x04,0xff,0x0f,0xff,0x0f,0x00,0x02,0x00,0x03,0x80,0x01,0xc0,0x00,0x60,0x00,0x30,0x00,0x18,0x00,0x08,0x00, +0xff,0x0f,0xfc,0x03,0xfe,0x07,0x02,0x04,0x02,0x04,0xfe,0x07,0xfc,0x03,0xff,0x0f,0xff,0x0f,0x00,0x00,0x00,0x00,0xfe,0x07,0xfe,0x07,0x00,0x00,0x00,0x00,0xff,0x0f,0xff,0x0f,0x8c,0x07,0xce,0x07,0x62,0x04,0x22,0x04,0x3e,0x04,0x1c,0x04,0xff,0x0f,0xff,0x0f,0x02,0x04,0x02,0x04,0x22,0x04,0x22,0x04,0xfe,0x07,0xdc,0x03,0xff,0x0f,0xff,0x0f,0x1e,0x00,0x3e,0x00,0x20,0x00,0x20,0x00,0xfe,0x07,0xfe,0x07,0xff,0x0f,0xff,0x0f,0x1e,0x03,0x3e,0x07,0x22,0x04,0x22,0x04,0xe2,0x07,0xc2,0x03,0xff,0x0f,0xff,0x0f,0xfc,0x03,0xfe,0x07,0x22,0x04,0x22,0x04,0xee,0x07,0xcc,0x03,0xff,0x0f,0xff,0x0f,0x02,0x00,0x02,0x00,0xc2,0x07,0xe2,0x07,0x3e,0x00,0x1e,0x00,0xff,0x0f,0xff,0x0f,0xdc,0x03,0xfe,0x07,0x22,0x04,0x22,0x04,0xfe,0x07,0xdc,0x03,0xff,0x0f,0xff,0x0f,0x3c,0x03,0x7e,0x07,0x42,0x04,0x42,0x04,0xfe,0x07,0xfc,0x03,0xff,0x0f,0xff,0x0f,0xff,0x0f,0x18,0x03,0x18,0x03,0xff,0x0f,0xff,0x0f,0xff,0x0f,0xff,0x0f,0xff,0x0f,0x08,0x00,0x9c,0x09,0x9c,0x0f,0x88,0x07,0xff,0x0f,0xff,0x0f,0xff,0x0f,0xff,0x0f,0x60,0x00,0xf0,0x00,0x98,0x01,0x0c,0x03,0x06,0x06,0x02,0x04,0xff,0x0f,0xff,0x0f,0x20,0x01,0x20,0x01,0x20,0x01,0x20,0x01,0x20,0x01,0x20,0x01,0xff,0x0f,0xff,0x0f,0x02,0x04,0x06,0x06,0x0c,0x03,0x98,0x01,0xf0,0x00,0x60,0x00,0xff,0x0f,0x0c,0x00,0x0e,0x00,0x82,0x06,0xc2,0x06,0x62,0x00,0x3e,0x00,0x1c,0x00,0xff,0x0f, +0xff,0x0f,0x0c,0x00,0x1e,0x00,0x12,0x00,0x12,0x00,0x1e,0x00,0x0c,0x00,0xff,0x0f,0xfc,0x07,0xfe,0x07,0x86,0x00,0x86,0x00,0x86,0x00,0x86,0x00,0xfe,0x07,0xfc,0x07,0xfe,0x07,0xfe,0x07,0x22,0x04,0x22,0x04,0x22,0x04,0x3e,0x04,0xfc,0x07,0xc0,0x03,0xfc,0x03,0xfe,0x07,0x02,0x04,0x02,0x04,0x02,0x04,0x02,0x04,0x02,0x04,0x02,0x04,0xfe,0x07,0xfe,0x07,0x02,0x04,0x02,0x04,0x02,0x04,0x06,0x06,0xfe,0x07,0xfc,0x03,0xfe,0x07,0xfe,0x07,0x22,0x04,0x22,0x04,0x22,0x04,0x22,0x04,0x02,0x04,0x02,0x04,0xfe,0x07,0xfe,0x07,0x22,0x00,0x22,0x00,0x22,0x00,0x22,0x00,0x02,0x00,0x02,0x00,0xfc,0x03,0xfe,0x07,0x02,0x04,0x02,0x04,0x42,0x04,0x42,0x04,0xc2,0x07,0xc2,0x03,0xfe,0x07,0xfe,0x07,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0xfe,0x07,0xfe,0x07,0xff,0x0f,0x02,0x04,0x02,0x04,0xfe,0x07,0xfe,0x07,0x02,0x04,0x02,0x04,0xff,0x0f,0x00,0x03,0x00,0x07,0x02,0x04,0x02,0x04,0xfe,0x07,0xfe,0x03,0x02,0x00,0xff,0x0f,0xfe,0x07,0xfe,0x07,0x60,0x00,0xf0,0x00,0x98,0x01,0x0c,0x03,0x06,0x06,0x02,0x04,0xfe,0x07,0xfe,0x07,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0xff,0x0f,0xfc,0x07,0xfe,0x07,0x02,0x00,0x7e,0x00,0x7e,0x00,0x02,0x00,0xfe,0x07,0xfc,0x07,0xfe,0x07,0xfe,0x07,0x02,0x00,0x02,0x00,0x02,0x00,0x06,0x00,0xfc,0x07,0xf8,0x07,0xfc,0x03,0xfe,0x07,0x02,0x04,0x02,0x04,0x02,0x04,0x02,0x04,0xfe,0x07,0xfc,0x03, +0xfe,0x07,0xfe,0x07,0x22,0x00,0x22,0x00,0x22,0x00,0x22,0x00,0x3e,0x00,0x1c,0x00,0xfc,0x03,0xfe,0x07,0x02,0x04,0x82,0x04,0x82,0x05,0x02,0x03,0xfe,0x06,0xfc,0x05,0xfe,0x07,0xfe,0x07,0x22,0x00,0x22,0x00,0x22,0x00,0x3e,0x00,0xfc,0x07,0xc0,0x07,0x1c,0x02,0x3e,0x06,0x22,0x04,0x22,0x04,0x22,0x04,0x22,0x04,0xe6,0x07,0xc4,0x03,0x02,0x00,0x02,0x00,0x02,0x00,0xfe,0x07,0xfe,0x07,0x02,0x00,0x02,0x00,0x02,0x00,0xfe,0x03,0xfe,0x07,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0xfe,0x07,0xfe,0x03,0xfe,0x07,0xfe,0x07,0x00,0x06,0x00,0x03,0x80,0x01,0xc0,0x00,0x7e,0x00,0x3e,0x00,0xfe,0x07,0xfe,0x07,0x00,0x06,0xe0,0x03,0xe0,0x03,0x00,0x06,0xfe,0x07,0xfe,0x07,0x06,0x06,0x0e,0x07,0x98,0x01,0xf0,0x00,0xf0,0x00,0x98,0x01,0x0e,0x07,0x06,0x06,0x3e,0x00,0x3e,0x00,0x20,0x00,0xe0,0x07,0xe0,0x07,0x20,0x00,0x3e,0x00,0x3e,0x00,0x02,0x07,0x82,0x07,0xc2,0x04,0x62,0x04,0x32,0x04,0x1a,0x04,0x0e,0x04,0xff,0x0f,0xff,0x0f,0xfe,0x07,0xfe,0x07,0x02,0x04,0x02,0x04,0x02,0x04,0xff,0x0f,0xff,0x0f,0x0c,0x00,0x1c,0x00,0x38,0x00,0x70,0x00,0xe0,0x00,0xc0,0x01,0x80,0x03,0x00,0x03,0xff,0x0f,0xff,0x0f,0x02,0x04,0x02,0x04,0x02,0x04,0xfe,0x07,0xfe,0x07,0xff,0x0f,0xff,0x0f,0x18,0x00,0x0c,0x00,0x06,0x00,0x06,0x00,0x0c,0x00,0x18,0x00,0xff,0x0f,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08, +0xff,0x0f,0xff,0x0f,0x01,0x00,0x03,0x00,0x06,0x00,0x04,0x00,0xff,0x0f,0xff,0x0f,0x90,0x07,0x90,0x07,0x90,0x04,0x90,0x04,0x90,0x04,0xf0,0x07,0xf0,0x07,0xff,0x0f,0xfe,0x07,0xfe,0x07,0x10,0x04,0x10,0x04,0x10,0x04,0xf0,0x07,0xf0,0x07,0xff,0x0f,0xf0,0x07,0xf0,0x07,0x10,0x04,0x10,0x04,0x10,0x04,0x10,0x04,0x10,0x04,0xff,0x0f,0xf0,0x07,0xf0,0x07,0x10,0x04,0x10,0x04,0x10,0x04,0xfe,0x07,0xfe,0x07,0xff,0x0f,0xf0,0x07,0xf0,0x07,0x90,0x04,0x90,0x04,0x90,0x04,0xf0,0x04,0xf0,0x04,0xff,0x0f,0x40,0x00,0x40,0x04,0xfe,0x07,0xfe,0x07,0x42,0x04,0x06,0x04,0x06,0x00,0xff,0x0f,0xf0,0x09,0xf0,0x09,0x10,0x09,0x10,0x09,0x10,0x09,0xf0,0x0f,0xf0,0x0f,0xff,0x0f,0xfe,0x07,0xfe,0x07,0x10,0x00,0x10,0x00,0x10,0x00,0xf0,0x07,0xf0,0x07,0xff,0x0f,0x10,0x04,0x10,0x04,0xf6,0x07,0xf6,0x07,0x00,0x04,0x00,0x04,0xff,0x0f,0xff,0x0f,0xff,0x0f,0x00,0x0c,0x00,0x0c,0x00,0x08,0x10,0x08,0xf6,0x0f,0xf6,0x0f,0xff,0x0f,0xfe,0x07,0xfe,0x07,0xc0,0x00,0xe0,0x01,0x30,0x03,0x18,0x06,0x08,0x04,0xff,0x0f,0xff,0x0f,0x00,0x04,0x02,0x04,0xfe,0x07,0xfe,0x07,0x00,0x04,0x00,0x04,0xff,0x0f,0xf0,0x07,0xf0,0x07,0x10,0x00,0xf0,0x07,0x10,0x00,0xf0,0x07,0xf0,0x07,0xff,0x0f,0xf0,0x07,0xf0,0x07,0x10,0x00,0x10,0x00,0x10,0x00,0xf0,0x07,0xe0,0x07,0xff,0x0f,0xe0,0x03,0xf0,0x07,0x10,0x04,0x10,0x04,0x10,0x04,0xf0,0x07,0xe0,0x03,0xff,0x0f, +0xf0,0x0f,0xf0,0x0f,0x10,0x01,0x10,0x01,0x10,0x01,0xf0,0x01,0xf0,0x01,0xff,0x0f,0xf0,0x01,0xf0,0x01,0x10,0x01,0x10,0x01,0x10,0x01,0xf0,0x0f,0xf0,0x0f,0xff,0x0f,0xf0,0x07,0xf0,0x07,0x10,0x00,0x10,0x00,0x10,0x00,0x30,0x00,0x30,0x00,0xff,0x0f,0xf0,0x04,0xf0,0x04,0x90,0x04,0x90,0x04,0x90,0x04,0x90,0x07,0x90,0x07,0xff,0x0f,0x10,0x00,0xfc,0x07,0xfc,0x07,0x10,0x04,0x00,0x04,0x00,0x06,0x00,0x06,0xff,0x0f,0xf0,0x07,0xf0,0x07,0x00,0x04,0x00,0x04,0x00,0x04,0xf0,0x07,0xf0,0x07,0xff,0x0f,0xf0,0x07,0xf0,0x07,0x00,0x06,0x00,0x03,0x80,0x01,0xf0,0x00,0x70,0x00,0xff,0x0f,0xf0,0x07,0xf0,0x07,0x00,0x06,0x80,0x03,0x00,0x06,0xf0,0x07,0xf0,0x07,0xff,0x0f,0x10,0x04,0x30,0x06,0xe0,0x03,0xc0,0x01,0xe0,0x03,0x30,0x06,0x10,0x04,0xff,0x0f,0xf0,0x09,0xf0,0x09,0x00,0x09,0x00,0x09,0x00,0x09,0xf0,0x0f,0xf0,0x0f,0xff,0x0f,0x10,0x06,0x10,0x07,0x90,0x05,0xd0,0x04,0x70,0x04,0x30,0x04,0xff,0x0f,0xff,0x0f,0xff,0x0f,0x60,0x00,0xfe,0x07,0x9f,0x0f,0x01,0x08,0x01,0x08,0xff,0x0f,0xff,0x0f,0xff,0x0f,0xff,0x0f,0xff,0x0f,0xfe,0x07,0xfe,0x07,0xff,0x0f,0xff,0x0f,0xff,0x0f,0xff,0x0f,0xff,0x0f,0x01,0x08,0x01,0x08,0x9f,0x0f,0xfe,0x07,0x60,0x00,0xff,0x0f,0x60,0x00,0x60,0x00,0x60,0x00,0x64,0x02,0x08,0x01,0xf0,0x00,0x60,0x00,0xff,0x0f,0x60,0x00,0xf0,0x00,0x08,0x01,0x64,0x02,0x60,0x00,0x60,0x00,0x60,0x00,0xff,0x0f, diff --git a/radio/src/fonts/sqt5/font_10x14.lbm b/radio/src/fonts/sqt5/font_10x14.lbm new file mode 100644 index 000000000..a53a3e8f0 --- /dev/null +++ b/radio/src/fonts/sqt5/font_10x14.lbm @@ -0,0 +1,6 @@ +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x71,0xfe,0x71,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x7e,0x00,0x00,0x00,0x00,0x00,0x7e,0x00,0x3e,0x00,0x00,0x00,0x00,0x00,0x60,0x06,0x60,0x06,0xfe,0x7f,0xfe,0x7f,0x60,0x06,0x60,0x06,0xfe,0x7f,0xfe,0x7f,0x60,0x06,0x60,0x06,0x60,0x18,0xf0,0x18,0x98,0x19,0x98,0x19,0xfe,0x7f,0xfe,0x7f,0x98,0x19,0x98,0x19,0x18,0x0f,0x18,0x06,0x0c,0x18,0x1e,0x1c,0x1e,0x0e,0x0c,0x07,0x80,0x03,0xc0,0x01,0xe0,0x30,0x70,0x78,0x38,0x78,0x18,0x30,0x78,0x1e,0xfc,0x3f,0x8e,0x71,0xc6,0x63,0xe6,0x67,0x76,0x66,0x3c,0x3c,0x18,0x3c,0x00,0x66,0x00,0x66,0x00,0x00,0x00,0x00,0x66,0x00,0x76,0x00,0x3e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x07,0xf0,0x0f,0x38,0x1c,0x1c,0x38,0x0e,0x70,0x06,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x60,0x0e,0x70,0x1c,0x38,0x38,0x1c,0xf0,0x0f,0xe0,0x07,0x00,0x00,0x00,0x00,0x60,0x06,0x60,0x06,0xc0,0x03,0x80,0x01,0xf8,0x1f,0xf8,0x1f,0x80,0x01,0xc0,0x03,0x60,0x06,0x60,0x06,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xf8,0x1f,0xf8,0x1f,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x66,0x00,0x76,0x00,0x3e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x78,0x00,0x78,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x1c,0x00,0x0e,0x00,0x07,0x80,0x03,0xc0,0x01,0xe0,0x00,0x70,0x00,0x38,0x00,0x18,0x00, +0x00,0x00,0x00,0x00,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x7e,0x0e,0x7f,0x8e,0x7f,0x86,0x63,0x86,0x61,0xfe,0x61,0xfe,0x61,0xfc,0x60,0x00,0x00,0x00,0x00,0x06,0x60,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f,0x00,0x00,0x00,0x00,0xfe,0x00,0xfe,0x01,0xfe,0x01,0x80,0x01,0x80,0x01,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x00,0x00,0x00,0xfe,0x30,0xfe,0x71,0xfe,0x71,0x86,0x61,0x86,0x61,0x86,0x7f,0x86,0x7f,0x06,0x3f,0x00,0x00,0x00,0x00,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x8e,0x7f,0x8e,0x7f,0x0c,0x3f,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x86,0x7f,0xc6,0x7f,0xfe,0x7f,0x7e,0x00,0x3e,0x00,0x00,0x00,0x00,0x00,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f,0x00,0x00,0x00,0x00,0x7c,0x30,0xfe,0x71,0xfe,0x71,0x86,0x61,0x86,0x61,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f,0x00,0x00,0x00,0x00,0x78,0x1e,0x78,0x1e,0x78,0x1e,0x78,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x66,0x78,0x76,0x78,0x3e,0x30,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0xc0,0x03,0xe0,0x07,0x70,0x0e,0x38,0x1c,0x1c,0x38,0x0e,0x70,0x06,0x60,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x06,0x60,0x0e,0x70,0x1c,0x38,0x38,0x1c,0x70,0x0e,0xe0,0x07,0xc0,0x03,0x80,0x01,0x00,0x00,0x00,0x00,0x18,0x00,0x1c,0x00,0x0e,0x00,0x06,0x00,0x06,0x66,0x06,0x67,0x86,0x03,0xce,0x01,0xfc,0x00,0x78,0x00, +0x78,0x00,0xfc,0x00,0xce,0x01,0x86,0x01,0x86,0x01,0xce,0x01,0xfc,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0xfc,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0xfe,0x7f,0xfe,0x7f,0xfc,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0xfe,0x61,0xfe,0x7f,0xfc,0x7f,0x00,0x3f,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x06,0x60,0x0e,0x70,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x06,0x00,0x06,0x00,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x7f,0x86,0x7f,0x80,0x3f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x00,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x78,0x00,0x78,0x00,0x60,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x3f,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0xc0,0x03,0xe0,0x07,0xf0,0x0f,0x78,0x1e,0x3c,0x3c,0x1e,0x78,0x0e,0x70,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0xfc,0x7f,0xfe,0x7f,0xfe,0x7f,0x06,0x00,0xfe,0x01,0xfe,0x01,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0xfc,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x06,0x00,0x06,0x00,0x06,0x00,0x0e,0x00,0xfc,0x7f,0xf8,0x7f,0xf0,0x7f,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f, +0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0xfe,0x01,0xfe,0x01,0xfc,0x00,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x66,0x06,0x6e,0x06,0x1c,0xfe,0x39,0xfe,0x73,0xfc,0x67,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0xfe,0x01,0xfe,0x7f,0xfc,0x7f,0x00,0x7f,0xfc,0x38,0xfe,0x79,0xfe,0x79,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x9e,0x7f,0x9e,0x7f,0x1c,0x3f,0x06,0x00,0x06,0x00,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0xfe,0x3f,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x3f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x70,0x00,0x38,0x00,0x1c,0x00,0x0e,0x00,0x07,0xfe,0x03,0xfe,0x01,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x70,0x00,0x3e,0x00,0x3e,0x00,0x70,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x1e,0x78,0x3e,0x7c,0x7e,0x7e,0xe0,0x07,0xc0,0x03,0xc0,0x03,0xe0,0x07,0x7e,0x7e,0x3e,0x7c,0x1e,0x78,0xfe,0x00,0xfe,0x01,0xfe,0x03,0x00,0x7f,0x00,0x7e,0x00,0x7e,0x00,0x7f,0xfe,0x03,0xfe,0x01,0xfe,0x00,0x06,0x78,0x06,0x7c,0x06,0x7e,0x06,0x67,0x86,0x63,0xc6,0x61,0xe6,0x60,0x7e,0x60,0x3e,0x60,0x1e,0x60,0x00,0x00,0x00,0x00,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x00,0x00,0x00,0x00,0x18,0x00,0x38,0x00,0x70,0x00,0xe0,0x00,0xc0,0x01,0x80,0x03,0x00,0x07,0x00,0x0e,0x00,0x1c,0x00,0x18,0x00,0x00,0x00,0x00,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x00,0x00,0x00,0x00,0x60,0x00,0x70,0x00,0x38,0x00,0x1c,0x00,0x0e,0x00,0x0e,0x00,0x1c,0x00,0x38,0x00,0x70,0x00,0x60,0x00,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60, +0x00,0x00,0x00,0x00,0x06,0x00,0x0e,0x00,0x1c,0x00,0x38,0x00,0x70,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x60,0x7e,0x60,0x7e,0x60,0x7e,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0x67,0xe0,0x67,0xe0,0x67,0x80,0x01,0x80,0x61,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x06,0x60,0x06,0x00,0x1e,0x00,0x1e,0x00,0xe0,0xcf,0xe0,0xcf,0xe0,0xcf,0x60,0xcc,0x60,0xcc,0x60,0xcc,0x60,0xcc,0xe0,0xff,0xe0,0xff,0xe0,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x00,0x00,0x00,0x00,0x60,0x60,0x60,0x60,0xe6,0x7f,0xe6,0x7f,0xe0,0x7f,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0xf0,0x00,0xf0,0x00,0xf0,0x00,0xc0,0x60,0xc0,0x60,0xc0,0xe6,0xff,0xe6,0xff,0xe0,0x7f,0x00,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x0f,0x80,0x1f,0xc0,0x39,0xe0,0x70,0x70,0x60,0x30,0x60,0x00,0x00,0x00,0x00,0x00,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0x00,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x00,0xe0,0x07,0xe0,0x07,0xe0,0x00,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0xe0,0x7f,0xe0,0x7f,0xc0,0x7f,0xc0,0x3f,0xe0,0x7f,0xe0,0x7f,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xe0,0x7f,0xe0,0x7f,0xc0,0x3f, +0xe0,0xff,0xe0,0xff,0xe0,0xff,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0xe0,0x07,0xe0,0x07,0xe0,0x07,0xe0,0x07,0xe0,0x07,0xe0,0x07,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0xe0,0xff,0xe0,0xff,0xe0,0xff,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xc0,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0xe0,0x01,0xe0,0x01,0xe0,0x01,0xe0,0x67,0xe0,0x67,0xe0,0x67,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x7e,0x60,0x7e,0x60,0x7e,0x60,0x00,0x60,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x60,0x60,0x00,0x60,0x00,0x78,0x00,0x78,0x00,0x78,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x00,0x70,0x00,0x38,0x00,0x1c,0x00,0x0e,0x00,0x07,0xe0,0x03,0xe0,0x01,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x00,0x70,0x00,0x3c,0x00,0x3c,0x00,0x70,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x60,0xe0,0x70,0xe0,0x79,0xc0,0x3f,0x80,0x1f,0x80,0x1f,0xc0,0x3f,0xe0,0x79,0xe0,0x70,0x60,0x60,0xe0,0xcf,0xe0,0xcf,0xe0,0xcf,0x00,0xcc,0x00,0xcc,0x00,0xcc,0x00,0xcc,0xe0,0xff,0xe0,0xff,0xe0,0x7f,0x60,0x60,0x60,0x70,0x60,0x78,0x60,0x7c,0x60,0x7e,0x60,0x6f,0xe0,0x67,0xe0,0x63,0xe0,0x61,0xe0,0x60,0x00,0x00,0x00,0x00,0x80,0x01,0xc0,0x03,0x78,0x1e,0x7c,0x3e,0x0e,0x70,0x06,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x7f,0xfe,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x60,0x0e,0x70,0x7c,0x3e,0x78,0x1e,0xc0,0x03,0x80,0x01,0x00,0x00,0x00,0x00,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x18,0x18,0x38,0x1c,0xf0,0x0f,0xe0,0x07,0xc0,0x03,0x80,0x01,0x80,0x01,0xc0,0x03,0xe0,0x07,0xf0,0x0f,0x38,0x1c,0x18,0x18,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01, diff --git a/radio/src/fonts/sqt5/font_10x14_compressed.lbm b/radio/src/fonts/sqt5/font_10x14_compressed.lbm new file mode 100644 index 000000000..6c6214b44 --- /dev/null +++ b/radio/src/fonts/sqt5/font_10x14_compressed.lbm @@ -0,0 +1 @@ +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x66,0x00,0x76,0x00,0x3e,0x00,0x1e,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x30,0x00,0x78,0x00,0x78,0x00,0x30,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0x0c,0x7e,0x0e,0x7f,0x8e,0x7f,0x86,0x63,0x86,0x61,0xfe,0x61,0xfe,0x61,0xfc,0x60,0xff,0xff,0xff,0xff,0x06,0x60,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f,0xff,0xff,0xff,0xff,0xfe,0x00,0xfe,0x01,0xfe,0x01,0x80,0x01,0x80,0x01,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0xff,0xff,0xff,0xff,0xfe,0x30,0xfe,0x71,0xfe,0x71,0x86,0x61,0x86,0x61,0x86,0x7f,0x86,0x7f,0x06,0x3f,0xff,0xff,0xff,0xff,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x8e,0x7f,0x8e,0x7f,0x0c,0x3f,0xff,0xff,0xff,0xff,0x06,0x00,0x06,0x00,0x06,0x00,0x86,0x7f,0xc6,0x7f,0xfe,0x7f,0x7e,0x00,0x3e,0x00,0xff,0xff,0xff,0xff,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f,0xff,0xff,0xff,0xff,0x7c,0x30,0xfe,0x71,0xfe,0x71,0x86,0x61,0x86,0x61,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f,0xff,0xff,0xff,0xff,0x00,0x00,0x78,0x1e,0x78,0x1e,0x78,0x1e,0x78,0x1e,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0xfe,0x7f,0xfe,0x7f,0xfc,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0xfe,0x61,0xfe,0x7f,0xfc,0x7f,0x00,0x3f,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x06,0x60,0x0e,0x70,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x06,0x00,0x06,0x00,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x7f,0x86,0x7f,0x80,0x3f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0xff,0xff,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0xff,0xff,0xff,0xff,0x00,0x38,0x00,0x78,0x00,0x78,0x00,0x60,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x3f,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0xc0,0x03,0xe0,0x07,0xf0,0x0f,0x78,0x1e,0x3c,0x3c,0x1e,0x78,0x0e,0x70,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0xfc,0x7f,0xfe,0x7f,0xfe,0x7f,0x06,0x00,0xfe,0x01,0xfe,0x01,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0xfc,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x06,0x00,0x06,0x00,0x06,0x00,0x0e,0x00,0xfc,0x7f,0xf8,0x7f,0xf0,0x7f,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0xfe,0x01,0xfe,0x01,0xfc,0x00,0xfc,0x3f,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x66,0x06,0x6e,0x06,0x1c,0xfe,0x39,0xfe,0x73,0xfc,0x67,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0xfe,0x01,0xfe,0x7f,0xfc,0x7f,0x00,0x7f,0xfc,0x38,0xfe,0x79,0xfe,0x79,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x9e,0x7f,0x9e,0x7f,0x1c,0x3f,0x06,0x00,0x06,0x00,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0xfe,0x3f,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x3f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x70,0x00,0x38,0x00,0x1c,0x00,0x0e,0x00,0x07,0xfe,0x03,0xfe,0x01,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x70,0x00,0x3e,0x00,0x3e,0x00,0x70,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x1e,0x78,0x3e,0x7c,0x7e,0x7e,0xe0,0x07,0xc0,0x03,0xc0,0x03,0xe0,0x07,0x7e,0x7e,0x3e,0x7c,0x1e,0x78,0xfe,0x00,0xfe,0x01,0xfe,0x03,0x00,0x7f,0x00,0x7e,0x00,0x7e,0x00,0x7f,0xfe,0x03,0xfe,0x01,0xfe,0x00,0x06,0x78,0x06,0x7c,0x06,0x7e,0x06,0x67,0x86,0x63,0xc6,0x61,0xe6,0x60,0x7e,0x60,0x3e,0x60,0x1e,0x60,0x60,0x7e,0x60,0x7e,0x60,0x7e,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0x67,0xe0,0x67,0xe0,0x67,0x80,0x01,0x80,0x61,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x06,0x60,0x06,0x00,0x1e,0x00,0x1e,0x00,0xe0,0xcf,0xe0,0xcf,0xe0,0xcf,0x60,0xcc,0x60,0xcc,0x60,0xcc,0x60,0xcc,0xe0,0xff,0xe0,0xff,0xe0,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xff,0xff,0x60,0x60,0x60,0x60,0xe6,0x7f,0xe6,0x7f,0xe0,0x7f,0x00,0x60,0x00,0x60,0xff,0xff,0xff,0xff,0x00,0xf0,0x00,0xf0,0x00,0xf0,0x00,0xc0,0x60,0xc0,0x60,0xc0,0xe6,0xff,0xe6,0xff,0xe0,0x7f,0xff,0xff,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x0f,0x80,0x1f,0xc0,0x39,0xe0,0x70,0x70,0x60,0x30,0x60,0xff,0xff,0xff,0xff,0x00,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0xff,0xff,0xff,0xff,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x00,0xe0,0x07,0xe0,0x07,0xe0,0x00,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0xe0,0x7f,0xe0,0x7f,0xc0,0x7f,0xc0,0x3f,0xe0,0x7f,0xe0,0x7f,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xe0,0x7f,0xe0,0x7f,0xc0,0x3f,0xe0,0xff,0xe0,0xff,0xe0,0xff,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0xe0,0x07,0xe0,0x07,0xe0,0x07,0xe0,0x07,0xe0,0x07,0xe0,0x07,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0xe0,0xff,0xe0,0xff,0xe0,0xff,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xc0,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0xe0,0x01,0xe0,0x01,0xe0,0x01,0xe0,0x67,0xe0,0x67,0xe0,0x67,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x7e,0x60,0x7e,0x60,0x7e,0x60,0x00,0x60,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x60,0x60,0x00,0x60,0x00,0x78,0x00,0x78,0x00,0x78,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x00,0x70,0x00,0x38,0x00,0x1c,0x00,0x0e,0x00,0x07,0xe0,0x03,0xe0,0x01,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x00,0x70,0x00,0x3c,0x00,0x3c,0x00,0x70,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x60,0xe0,0x70,0xe0,0x79,0xc0,0x3f,0x80,0x1f,0x80,0x1f,0xc0,0x3f,0xe0,0x79,0xe0,0x70,0x60,0x60,0xe0,0xcf,0xe0,0xcf,0xe0,0xcf,0x00,0xcc,0x00,0xcc,0x00,0xcc,0x00,0xcc,0xe0,0xff,0xe0,0xff,0xe0,0x7f,0x60,0x60,0x60,0x70,0x60,0x78,0x60,0x7c,0x60,0x7e,0x60,0x6f,0xe0,0x67,0xe0,0x63,0xe0,0x61,0xe0,0x60, diff --git a/radio/src/fonts/sqt5/font_cz_04x06.lbm b/radio/src/fonts/sqt5/font_cz_04x06.lbm new file mode 100644 index 000000000..fa9c3a08a --- /dev/null +++ b/radio/src/fonts/sqt5/font_cz_04x06.lbm @@ -0,0 +1 @@ +0x3a,0x2a,0x2a,0x3e,0x01,0x3e,0x23,0x22,0x23,0x7f,0x3e,0x2a,0x2a,0x2e,0x01,0x3e,0x2b,0x2a,0x2f,0x7f,0x24,0x3c,0x22,0x01,0x7f,0x1c,0x22,0x22,0x1d,0x7f,0x3e,0x03,0x02,0x05,0x7f,0x2e,0x2b,0x2a,0x3b,0x7f,0x3e,0x20,0x20,0x3e,0x01,0x3c,0x23,0x23,0x3c,0x7f,0x2e,0x28,0x28,0x3e,0x01,0x3c,0x12,0x12,0x3d,0x7f,0x22,0x3e,0x22,0x01,0x7f,0x3e,0x13,0x1e,0x31,0x7f,0x0e,0x30,0x0e,0x01,0x7f,0x22,0x33,0x2a,0x27,0x7f,0x3e,0x2a,0x2a,0x22,0x01, diff --git a/radio/src/fonts/sqt5/font_cz_05x07.lbm b/radio/src/fonts/sqt5/font_cz_05x07.lbm new file mode 100644 index 000000000..1ab57a43a --- /dev/null +++ b/radio/src/fonts/sqt5/font_cz_05x07.lbm @@ -0,0 +1 @@ +0x74,0x54,0x56,0x55,0x7c,0x7c,0x45,0x46,0x46,0x45,0x7c,0x54,0x56,0x55,0x5c,0x7c,0x55,0x56,0x56,0x5d,0xff,0x44,0x7e,0x41,0xff,0x38,0x44,0x46,0x45,0x38,0x7c,0x05,0x06,0x06,0x0d,0x5c,0x55,0x56,0x56,0x75,0x7c,0x40,0x42,0x41,0x7c,0x7c,0x40,0x43,0x43,0x7c,0x5c,0x50,0x52,0x51,0x7c,0x78,0x14,0x16,0x15,0x78,0xff,0x44,0x7e,0x45,0xff,0x7c,0x15,0x16,0x1e,0x71,0x1c,0x10,0x72,0x11,0x1c,0x44,0x65,0x56,0x4e,0x45,0x7c,0x54,0x56,0x55,0x44,0x1c,0x1c,0x3e,0x7f,0xff,0x22,0x1c,0x41,0x3e,0x00, diff --git a/radio/src/fonts/sqt5/font_cz_08x10.lbm b/radio/src/fonts/sqt5/font_cz_08x10.lbm new file mode 100644 index 000000000..a8dfa45e2 --- /dev/null +++ b/radio/src/fonts/sqt5/font_cz_08x10.lbm @@ -0,0 +1 @@ +0x90,0x07,0x90,0x07,0x90,0x04,0x94,0x04,0x93,0x04,0xf1,0x07,0xf0,0x07,0xff,0x0f,0xf0,0x07,0xf1,0x07,0x13,0x04,0x16,0x04,0x13,0x04,0x11,0x04,0x10,0x04,0xff,0x0f,0xf0,0x07,0xf0,0x07,0x90,0x04,0x94,0x04,0x93,0x04,0xf1,0x04,0xf0,0x04,0xff,0x0f,0xf0,0x07,0xf1,0x07,0x93,0x04,0x96,0x04,0x93,0x04,0xf1,0x04,0xf0,0x04,0xff,0x0f,0xff,0x0f,0x10,0x04,0x10,0x04,0xf4,0x07,0xf3,0x07,0x01,0x04,0x00,0x04,0xff,0x0f,0xe0,0x03,0xf0,0x07,0x10,0x04,0x14,0x04,0x13,0x04,0xf1,0x07,0xe0,0x03,0xff,0x0f,0xf1,0x07,0xf3,0x07,0x16,0x00,0x13,0x00,0x11,0x00,0x30,0x00,0x30,0x00,0xff,0x0f,0xf0,0x04,0xf1,0x04,0x93,0x04,0x96,0x04,0x93,0x04,0x91,0x07,0x90,0x07,0xff,0x0f,0xf0,0x07,0xf0,0x07,0x00,0x04,0x04,0x04,0x03,0x04,0xf1,0x07,0xf0,0x07,0xff,0x0f,0xf0,0x07,0xf0,0x07,0x02,0x04,0x05,0x04,0x05,0x04,0xf2,0x07,0xf0,0x07,0xff,0x0f,0xf0,0x09,0xf0,0x09,0x00,0x09,0x04,0x09,0x03,0x09,0xf1,0x0f,0xf0,0x0f,0xff,0x0f,0xf0,0x07,0xf8,0x07,0x98,0x00,0x9c,0x00,0x9b,0x00,0x99,0x00,0xf8,0x07,0xf0,0x07,0xff,0x0f,0x08,0x04,0x08,0x04,0xfc,0x07,0xfb,0x07,0x09,0x04,0x08,0x04,0xff,0x0f,0xf8,0x07,0xf9,0x07,0x8b,0x00,0x8e,0x00,0x8b,0x00,0xf9,0x00,0xf0,0x07,0x00,0x07,0xf8,0x00,0xf8,0x00,0x80,0x00,0x84,0x07,0x83,0x07,0x81,0x00,0xf8,0x00,0xf8,0x00,0x08,0x07,0x89,0x07,0xcb,0x05,0xee,0x04,0x7b,0x04,0x39,0x04,0x18,0x04,0xff,0x0f,0xf8,0x07,0xf8,0x07,0x48,0x04,0x4c,0x04,0x4b,0x04,0x49,0x04,0x08,0x04,0x08,0x04, diff --git a/radio/src/fonts/sqt5/font_cz_10x14.lbm b/radio/src/fonts/sqt5/font_cz_10x14.lbm new file mode 100644 index 000000000..e2e3b8430 --- /dev/null +++ b/radio/src/fonts/sqt5/font_cz_10x14.lbm @@ -0,0 +1 @@ +0x60,0x7e,0x60,0x7e,0x60,0x7e,0x60,0x66,0x68,0x66,0x6c,0x66,0x67,0x66,0xe3,0x7f,0xe1,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x67,0x60,0x6f,0x60,0x6c,0x60,0x66,0x60,0x63,0x60,0x61,0x60,0x60,0x60,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x66,0x68,0x66,0x6c,0x66,0x67,0x66,0xe3,0x67,0xe1,0x67,0xe0,0x67,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x67,0x66,0x6f,0x66,0x6c,0x66,0x66,0x66,0xe3,0x67,0xe1,0x67,0xe0,0x67,0xff,0xff,0x60,0x60,0x60,0x60,0xe8,0x7f,0xec,0x7f,0xe7,0x7f,0x03,0x60,0x01,0x60,0xff,0xff,0xff,0xff,0xc0,0x3f,0xe0,0x7f,0xe0,0x7f,0x60,0x60,0x68,0x60,0x6c,0x60,0x67,0x60,0xe3,0x7f,0xe1,0x7f,0xc0,0x3f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xc7,0x00,0x6f,0x00,0x6c,0x00,0x66,0x00,0xe3,0x01,0xe1,0x01,0xe0,0x01,0xe0,0x67,0xe0,0x67,0xe0,0x67,0x67,0x66,0x6f,0x66,0x6c,0x66,0x66,0x66,0x63,0x7e,0x61,0x7e,0x60,0x7e,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x00,0x60,0x08,0x60,0x0c,0x60,0x07,0x60,0xe3,0x7f,0xe1,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x06,0x60,0x09,0x60,0x09,0x60,0x0f,0x60,0xe6,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0xcf,0xe0,0xcf,0xe0,0xcf,0x00,0xcc,0x08,0xcc,0x0c,0xcc,0x07,0xcc,0xe3,0xff,0xe1,0xff,0xe0,0x7f,0xf0,0x7f,0xf8,0x7f,0xf8,0x7f,0x18,0x06,0x18,0x06,0x18,0x06,0x1c,0x06,0xff,0x7f,0xfb,0x7f,0xf1,0x7f,0xff,0xff,0x18,0x60,0x18,0x60,0xf8,0x7f,0xfc,0x7f,0xff,0x7f,0x1b,0x60,0x19,0x60,0xff,0xff,0xff,0xff,0xf8,0x7f,0xf8,0x7f,0xf8,0x7f,0x1f,0x06,0x1f,0x06,0x1c,0x06,0xfe,0x07,0xfb,0x7f,0xf1,0x7f,0x00,0x7c,0xf8,0x01,0xf8,0x03,0xf8,0x07,0x00,0x7e,0x00,0x7c,0x04,0x7c,0x07,0x7e,0xfb,0x07,0xf9,0x03,0xf8,0x01,0x18,0x70,0x18,0x78,0x18,0x7c,0x17,0x6e,0x0f,0x67,0x8c,0x63,0xd6,0x61,0xfb,0x60,0x79,0x60,0x38,0x60,0xf8,0x7f,0xf8,0x7f,0xf8,0x7f,0x18,0x63,0x1c,0x63,0x1f,0x63,0x1b,0x63,0x19,0x63,0x18,0x60,0x18,0x60, diff --git a/radio/src/fonts/sqt5/font_de_04x06.lbm b/radio/src/fonts/sqt5/font_de_04x06.lbm new file mode 100644 index 000000000..6e70f2f27 --- /dev/null +++ b/radio/src/fonts/sqt5/font_de_04x06.lbm @@ -0,0 +1 @@ +0x3d,0x0a,0x0a,0x3d,0x7f,0x3a,0x2b,0x2a,0x3f,0x7f,0x1d,0x22,0x22,0x1d,0x7f,0x18,0x25,0x24,0x19,0x7f,0x3d,0x20,0x20,0x3d,0x7f,0x3d,0x20,0x20,0x3d,0x7f,0x7e,0x05,0x25,0x1a,0x7f, diff --git a/radio/src/fonts/sqt5/font_de_05x07.lbm b/radio/src/fonts/sqt5/font_de_05x07.lbm new file mode 100644 index 000000000..363e4f48e --- /dev/null +++ b/radio/src/fonts/sqt5/font_de_05x07.lbm @@ -0,0 +1 @@ +0x7c,0x13,0x12,0x13,0x7c,0x74,0x55,0x54,0x55,0x7c,0x3c,0x43,0x42,0x43,0x3c,0x38,0x45,0x44,0x45,0x38,0x3e,0x41,0x40,0x41,0x3e,0x7c,0x41,0x40,0x41,0x7c,0x7e,0x01,0x49,0x56,0x20, diff --git a/radio/src/fonts/sqt5/font_de_08x10.lbm b/radio/src/fonts/sqt5/font_de_08x10.lbm new file mode 100644 index 000000000..7b030ad69 --- /dev/null +++ b/radio/src/fonts/sqt5/font_de_08x10.lbm @@ -0,0 +1 @@ +0xf0,0x07,0xfb,0x07,0x9b,0x00,0x98,0x00,0x98,0x00,0x9b,0x00,0xfb,0x07,0xf0,0x07,0x90,0x07,0x96,0x07,0x96,0x04,0x90,0x04,0x96,0x04,0xf6,0x07,0xf0,0x07,0xff,0x0f,0xf0,0x03,0xfb,0x07,0x0b,0x04,0x08,0x04,0x08,0x04,0x0b,0x04,0xfb,0x07,0xf0,0x03,0xe0,0x03,0xf6,0x07,0x16,0x04,0x10,0x04,0x16,0x04,0xf6,0x07,0xe0,0x03,0xff,0x0f,0xf8,0x03,0xfb,0x07,0x03,0x04,0x00,0x04,0x03,0x04,0x03,0x04,0xf8,0x07,0xf8,0x03,0xf0,0x07,0xf6,0x07,0x06,0x04,0x00,0x04,0x06,0x04,0xf6,0x07,0xf0,0x07,0xff,0x0f,0xfc,0x07,0xfe,0x07,0x86,0x00,0x86,0x00,0x86,0x00,0x86,0x00,0xfe,0x07,0xfc,0x07, diff --git a/radio/src/fonts/sqt5/font_de_10x14.lbm b/radio/src/fonts/sqt5/font_de_10x14.lbm new file mode 100644 index 000000000..57284df25 --- /dev/null +++ b/radio/src/fonts/sqt5/font_de_10x14.lbm @@ -0,0 +1 @@ +0xf0,0x7f,0xfa,0x7f,0xfa,0x7f,0x18,0x06,0x18,0x06,0x18,0x06,0x18,0x06,0xfa,0x7f,0xfa,0x7f,0xf0,0x7f,0x60,0x7e,0x66,0x7e,0x66,0x7e,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe6,0x7f,0xe6,0x7f,0xe0,0x7f,0xf0,0x3f,0xfa,0x7f,0xfa,0x7f,0x18,0x60,0x18,0x60,0x18,0x60,0x18,0x60,0xfa,0x7f,0xfa,0x7f,0xf0,0x3f,0xc0,0x3f,0xe6,0x7f,0xe6,0x7f,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xe6,0x7f,0xe6,0x7f,0xc0,0x3f,0xf8,0x3f,0xfa,0x7f,0xfa,0x7f,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0xfa,0x7f,0xfa,0x7f,0xf8,0x3f,0xe0,0x7f,0xe6,0x7f,0xe6,0x7f,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0xe6,0x7f,0xe6,0x7f,0xe0,0x7f,0xf8,0x7f,0xfc,0x7f,0x0e,0x00,0x06,0x00,0x66,0x30,0x6e,0x30,0xfc,0x38,0xd8,0x1f,0x00,0x0f,0xff,0xff, diff --git a/radio/src/fonts/sqt5/font_es_04x06.lbm b/radio/src/fonts/sqt5/font_es_04x06.lbm new file mode 100644 index 000000000..eb50e6735 --- /dev/null +++ b/radio/src/fonts/sqt5/font_es_04x06.lbm @@ -0,0 +1 @@ +0x3c,0x05,0x06,0x39,0x7f,0x3a,0x09,0x0a,0x31,0x7f, diff --git a/radio/src/fonts/sqt5/font_es_05x07.lbm b/radio/src/fonts/sqt5/font_es_05x07.lbm new file mode 100644 index 000000000..ade3235f7 --- /dev/null +++ b/radio/src/fonts/sqt5/font_es_05x07.lbm @@ -0,0 +1 @@ +0x7c,0x06,0x05,0x06,0x79,0x78,0x0a,0x09,0x0a,0x71, diff --git a/radio/src/fonts/sqt5/font_es_08x10.lbm b/radio/src/fonts/sqt5/font_es_08x10.lbm new file mode 100644 index 000000000..80e23388e --- /dev/null +++ b/radio/src/fonts/sqt5/font_es_08x10.lbm @@ -0,0 +1 @@ +0xf8,0x07,0xfa,0x07,0x0b,0x00,0x09,0x00,0x0b,0x00,0x1a,0x00,0xf3,0x07,0xe1,0x07,0xf0,0x07,0xf4,0x07,0x16,0x00,0x12,0x00,0x16,0x00,0x34,0x00,0xe6,0x07,0xc2,0x07, diff --git a/radio/src/fonts/sqt5/font_es_10x14.lbm b/radio/src/fonts/sqt5/font_es_10x14.lbm new file mode 100644 index 000000000..19065f688 --- /dev/null +++ b/radio/src/fonts/sqt5/font_es_10x14.lbm @@ -0,0 +1 @@ +0xf4,0x7f,0xf6,0x7f,0xf3,0x7f,0x31,0x00,0x32,0x00,0x34,0x00,0x76,0x00,0xe3,0x7f,0xc1,0x7f,0x80,0x7f,0xe0,0x7f,0xe8,0x7f,0xec,0x7f,0x66,0x00,0x62,0x00,0x64,0x00,0x68,0x00,0xec,0x7f,0xe6,0x7f,0xc2,0x7f, diff --git a/radio/src/fonts/sqt5/font_fr_04x06.lbm b/radio/src/fonts/sqt5/font_fr_04x06.lbm new file mode 100644 index 000000000..7a3c84d05 --- /dev/null +++ b/radio/src/fonts/sqt5/font_fr_04x06.lbm @@ -0,0 +1 @@ +0x3e,0x2a,0x2b,0x2e,0x7f,0x3e,0x2b,0x2a,0x2e,0x7f,0x3a,0x2b,0x2a,0x3e,0x7f,0x7f,0x26,0x3d,0x22,0x7f,0x1e,0x52,0x32,0x12,0x7f, diff --git a/radio/src/fonts/sqt5/font_fr_05x07.lbm b/radio/src/fonts/sqt5/font_fr_05x07.lbm new file mode 100644 index 000000000..a42b0e1fc --- /dev/null +++ b/radio/src/fonts/sqt5/font_fr_05x07.lbm @@ -0,0 +1 @@ +0x7c,0x54,0x56,0x55,0x5c,0x7c,0x55,0x56,0x54,0x5c,0x74,0x55,0x56,0x54,0x7c,0xff,0x4a,0x79,0x42,0xff,0x3c,0xa4,0x64,0x24,0x24, diff --git a/radio/src/fonts/sqt5/font_fr_08x10.lbm b/radio/src/fonts/sqt5/font_fr_08x10.lbm new file mode 100644 index 000000000..2065bbfe2 --- /dev/null +++ b/radio/src/fonts/sqt5/font_fr_08x10.lbm @@ -0,0 +1 @@ +0xf0,0x07,0xf0,0x07,0x94,0x04,0x96,0x04,0x93,0x04,0xf1,0x04,0xf0,0x04,0xff,0x0f,0xf0,0x07,0xf0,0x07,0x91,0x04,0x93,0x04,0x96,0x04,0xf4,0x04,0xf0,0x04,0xff,0x0f,0x90,0x07,0x90,0x07,0x91,0x04,0x93,0x04,0x96,0x04,0xf4,0x07,0xf0,0x07,0xff,0x0f,0xff,0x0f,0x14,0x04,0x16,0x04,0xf3,0x07,0xf6,0x07,0x04,0x04,0x00,0x04,0xff,0x0f,0xf0,0x03,0xf0,0x03,0x10,0x0a,0x10,0x0e,0x10,0x06,0x10,0x02,0x10,0x02,0xff,0x0f, diff --git a/radio/src/fonts/sqt5/font_fr_10x14.lbm b/radio/src/fonts/sqt5/font_fr_10x14.lbm new file mode 100644 index 000000000..94dd85a98 --- /dev/null +++ b/radio/src/fonts/sqt5/font_fr_10x14.lbm @@ -0,0 +1 @@ +0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x68,0x66,0x6c,0x66,0x66,0x66,0x62,0x66,0xe0,0x67,0xe0,0x67,0xe0,0x67,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x62,0x66,0x66,0x66,0x6c,0x66,0x68,0x66,0xe0,0x67,0xe0,0x67,0xe0,0x67,0x60,0x7e,0x60,0x7e,0x60,0x7e,0x62,0x66,0x66,0x66,0x6c,0x66,0x68,0x66,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xff,0xff,0x6c,0x60,0x6c,0x60,0xe3,0x7f,0xe3,0x7f,0xec,0x7f,0x0c,0x60,0x00,0x60,0xff,0xff,0xff,0xff,0xf0,0x3f,0xf0,0x3f,0xf0,0xbf,0x30,0xf0,0x30,0x70,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, diff --git a/radio/src/fonts/sqt5/font_it_04x06.lbm b/radio/src/fonts/sqt5/font_it_04x06.lbm new file mode 100644 index 000000000..83ad285ab --- /dev/null +++ b/radio/src/fonts/sqt5/font_it_04x06.lbm @@ -0,0 +1 @@ +0x3a,0x2b,0x2a,0x3e,0x7f,0x3c,0x21,0x22,0x3c,0x7f, diff --git a/radio/src/fonts/sqt5/font_it_05x07.lbm b/radio/src/fonts/sqt5/font_it_05x07.lbm new file mode 100644 index 000000000..7e4ed004e --- /dev/null +++ b/radio/src/fonts/sqt5/font_it_05x07.lbm @@ -0,0 +1 @@ +0x74,0x55,0x56,0x54,0x7c,0x7c,0x41,0x42,0x40,0x7c, diff --git a/radio/src/fonts/sqt5/font_it_08x10.lbm b/radio/src/fonts/sqt5/font_it_08x10.lbm new file mode 100644 index 000000000..d54356222 --- /dev/null +++ b/radio/src/fonts/sqt5/font_it_08x10.lbm @@ -0,0 +1 @@ +0x90,0x07,0x90,0x07,0x92,0x04,0x96,0x04,0x94,0x04,0xf0,0x07,0xf0,0x07,0xff,0x0f,0xf0,0x07,0xf0,0x07,0x02,0x04,0x06,0x04,0x04,0x04,0xf0,0x07,0xf0,0x07,0xff,0x0f, diff --git a/radio/src/fonts/sqt5/font_it_10x14.lbm b/radio/src/fonts/sqt5/font_it_10x14.lbm new file mode 100644 index 000000000..6f8fbcc11 --- /dev/null +++ b/radio/src/fonts/sqt5/font_it_10x14.lbm @@ -0,0 +1 @@ +0x60,0x7e,0x60,0x7e,0x60,0x7e,0x62,0x66,0x66,0x66,0x6c,0x66,0x68,0x66,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x02,0x60,0x06,0x60,0x0c,0x60,0x08,0x60,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f, diff --git a/radio/src/fonts/sqt5/font_pl_04x06.lbm b/radio/src/fonts/sqt5/font_pl_04x06.lbm new file mode 100644 index 000000000..da643057f --- /dev/null +++ b/radio/src/fonts/sqt5/font_pl_04x06.lbm @@ -0,0 +1 @@ +0x3a,0x2a,0x2a,0x7e,0x40,0x3e,0x22,0x22,0x22,0x01,0x3e,0x2a,0x2a,0x6e,0x40,0x7f,0x29,0x3f,0x24,0x7f,0x3e,0x02,0x03,0x3d,0x7f,0x1c,0x22,0x23,0x1d,0x7f,0x2e,0x2a,0x2a,0x3b,0x7f,0x24,0x35,0x2d,0x24,0x7f,0x24,0x34,0x2e,0x25,0x7f,0x3e,0x09,0x69,0x5e,0x7f,0x1c,0x22,0x22,0x23,0x7f,0x3f,0x25,0x65,0x41,0x7f,0x3f,0x28,0x24,0x24,0x7f,0x3e,0x02,0x03,0x3d,0x7f,0x1c,0x22,0x22,0x1d,0x7f,0x2e,0x2a,0x2b,0x3a,0x7f,0x22,0x33,0x2a,0x26,0x7f,0x22,0x32,0x2b,0x26,0x7f, diff --git a/radio/src/fonts/sqt5/font_pl_05x07.lbm b/radio/src/fonts/sqt5/font_pl_05x07.lbm new file mode 100644 index 000000000..32041ede4 --- /dev/null +++ b/radio/src/fonts/sqt5/font_pl_05x07.lbm @@ -0,0 +1 @@ +0x74,0x54,0x54,0xd4,0xbc,0x7c,0x44,0x46,0x45,0x44,0x7c,0x54,0x54,0xd4,0x9c,0xff,0x49,0x7f,0x44,0xff,0x7c,0x04,0x06,0x05,0x78,0x38,0x44,0x46,0x45,0x38,0x5c,0x54,0x56,0x55,0x74,0x44,0x65,0x55,0x4c,0x44,0x44,0x64,0x56,0x4d,0x44,0x7e,0x09,0x09,0xc9,0xbe,0x3c,0x42,0x42,0x43,0x42,0x7f,0x49,0x49,0xc9,0x81,0x08,0x7f,0x44,0x44,0x40,0x7e,0x02,0x02,0x03,0x7c,0x3c,0x42,0x42,0x43,0x3c,0x4c,0x52,0x52,0x53,0x24,0x62,0x52,0x4b,0x4a,0x46,0x62,0x52,0x4a,0x4b,0x46,0x1c,0x1c,0x3e,0x7f,0xff,0x22,0x1c,0x41,0x3e,0x00, diff --git a/radio/src/fonts/sqt5/font_pl_08x10.lbm b/radio/src/fonts/sqt5/font_pl_08x10.lbm new file mode 100644 index 000000000..a30019ba0 --- /dev/null +++ b/radio/src/fonts/sqt5/font_pl_08x10.lbm @@ -0,0 +1 @@ +0x90,0x07,0x90,0x07,0x90,0x04,0x90,0x04,0x90,0x04,0xf0,0x0f,0xf0,0x0b,0xff,0x0f,0xf0,0x07,0xf0,0x07,0x10,0x04,0x14,0x04,0x13,0x04,0x11,0x04,0x10,0x04,0xff,0x0f,0xf0,0x07,0xf0,0x07,0x90,0x04,0x90,0x04,0x90,0x04,0xf0,0x0c,0xf0,0x08,0xff,0x0f,0xff,0x0f,0x40,0x04,0x42,0x04,0xfe,0x07,0xfe,0x07,0x20,0x04,0x20,0x04,0xff,0x0f,0xf0,0x07,0xf0,0x07,0x10,0x00,0x14,0x00,0x13,0x00,0xf1,0x07,0xe0,0x07,0xff,0x0f,0xe0,0x03,0xf0,0x07,0x10,0x04,0x14,0x04,0x13,0x04,0xf1,0x07,0xe0,0x03,0xff,0x0f,0xf0,0x04,0xf0,0x04,0x90,0x04,0x94,0x04,0x93,0x04,0x91,0x07,0x90,0x07,0xff,0x0f,0x10,0x04,0x10,0x06,0x16,0x07,0x96,0x05,0xd0,0x04,0x70,0x04,0x30,0x04,0xff,0x0f,0x10,0x04,0x10,0x06,0x10,0x07,0x94,0x05,0xd3,0x04,0x71,0x04,0x30,0x04,0xff,0x0f,0xfc,0x07,0xfe,0x07,0x86,0x00,0x86,0x00,0x86,0x00,0x86,0x00,0xfe,0x0f,0xfc,0x0b,0xf8,0x03,0xfc,0x07,0x04,0x04,0x04,0x04,0x06,0x04,0x05,0x04,0x04,0x04,0xff,0x0f,0xfe,0x07,0xfe,0x07,0x22,0x04,0x22,0x04,0x22,0x04,0x22,0x0c,0x02,0x08,0xff,0x0f,0x80,0x00,0xfe,0x07,0xfe,0x07,0x40,0x04,0x40,0x04,0x20,0x04,0x20,0x04,0x00,0x04,0xfc,0x07,0xfc,0x07,0x04,0x00,0x04,0x00,0x07,0x00,0x0d,0x00,0xf8,0x07,0xf0,0x07,0xf8,0x03,0xfc,0x07,0x04,0x04,0x04,0x04,0x04,0x04,0x07,0x04,0xfd,0x07,0xf8,0x03,0x30,0x02,0x78,0x06,0x48,0x04,0x4c,0x04,0x4b,0x04,0x49,0x04,0xd8,0x07,0x90,0x03,0x04,0x06,0x04,0x07,0x84,0x05,0xc7,0x04,0x67,0x04,0x34,0x04,0x1c,0x04,0x0c,0x04,0x04,0x06,0x04,0x07,0x84,0x05,0xc4,0x04,0x64,0x04,0x37,0x04,0x1d,0x04,0x0c,0x04, diff --git a/radio/src/fonts/sqt5/font_pl_10x14.lbm b/radio/src/fonts/sqt5/font_pl_10x14.lbm new file mode 100644 index 000000000..a28d76f7a --- /dev/null +++ b/radio/src/fonts/sqt5/font_pl_10x14.lbm @@ -0,0 +1 @@ +0x60,0x7e,0x60,0x7e,0x60,0x7e,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0xff,0xe0,0xbf,0xe0,0xbf,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x60,0x68,0x60,0x6c,0x60,0x67,0x60,0x63,0x60,0x61,0x60,0x60,0x60,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0xe7,0xe0,0x87,0xe0,0x87,0xff,0xff,0x00,0x63,0x06,0x63,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0xc0,0x60,0xc0,0x60,0xff,0xff,0xff,0xff,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x00,0x68,0x00,0x6c,0x00,0x67,0x00,0xe3,0x7f,0xe1,0x7f,0xc0,0x7f,0xc0,0x3f,0xe0,0x7f,0xe0,0x7f,0x60,0x60,0x68,0x60,0x6c,0x60,0x67,0x60,0xe3,0x7f,0xe1,0x7f,0xc0,0x3f,0xe0,0x67,0xe0,0x67,0xe0,0x67,0x60,0x66,0x68,0x66,0x6c,0x66,0x67,0x66,0x63,0x7e,0x61,0x7e,0x60,0x7e,0x60,0x60,0x60,0x70,0x60,0x78,0x66,0x7c,0x66,0x6e,0x60,0x67,0xe0,0x63,0xe0,0x61,0xe0,0x60,0x60,0x60,0x60,0x60,0x60,0x70,0x60,0x78,0x60,0x7c,0x68,0x6e,0x6c,0x67,0xe7,0x63,0xe3,0x61,0xe1,0x60,0x60,0x60,0xfc,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0xfe,0x7f,0xfe,0xbf,0xfc,0xbf,0xf8,0x3f,0xfc,0x7f,0xfc,0x7f,0x0c,0x60,0x0c,0x60,0x0f,0x60,0x0f,0x60,0x0d,0x60,0x0c,0x60,0x0c,0x60,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x06,0xa0,0x06,0x80,0x00,0x06,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x80,0x61,0x80,0x61,0xc0,0x60,0xc0,0x60,0x60,0x60,0x60,0x60,0xf8,0x7f,0xf8,0x7f,0xf8,0x7f,0x18,0x00,0x18,0x00,0x1c,0x00,0x3f,0x00,0xf3,0x7f,0xe1,0x7f,0xc0,0x7f,0xf0,0x3f,0xf8,0x7f,0xf8,0x7f,0x18,0x60,0x1c,0x60,0x1f,0x60,0x1b,0x60,0xf9,0x7f,0xf8,0x7f,0xf0,0x3f,0xf0,0x39,0xf8,0x7b,0xf8,0x7b,0x18,0x63,0x1c,0x63,0x1f,0x63,0x1b,0x63,0x79,0x7f,0x78,0x7f,0x70,0x3e,0x18,0x70,0x18,0x78,0x18,0x7c,0x18,0x6e,0x1b,0x67,0x9b,0x63,0xd8,0x61,0xf8,0x60,0x78,0x60,0x38,0x60,0x18,0x70,0x18,0x78,0x18,0x7c,0x18,0x6e,0x18,0x67,0x9c,0x63,0xdf,0x61,0xfb,0x60,0x79,0x60,0x38,0x60, diff --git a/radio/src/fonts/sqt5/font_pt_04x06.lbm b/radio/src/fonts/sqt5/font_pt_04x06.lbm new file mode 100644 index 000000000..bb2db6d13 --- /dev/null +++ b/radio/src/fonts/sqt5/font_pt_04x06.lbm @@ -0,0 +1 @@ +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, diff --git a/radio/src/fonts/sqt5/font_pt_05x07.lbm b/radio/src/fonts/sqt5/font_pt_05x07.lbm new file mode 100644 index 000000000..29ed03b17 --- /dev/null +++ b/radio/src/fonts/sqt5/font_pt_05x07.lbm @@ -0,0 +1 @@ +0x78,0x14,0x16,0x15,0x78,0x74,0x54,0x56,0x55,0x7c,0x78,0x16,0x15,0x16,0x78,0x74,0x56,0x55,0x56,0x7c,0x7a,0x15,0x16,0x15,0x78,0x74,0x56,0x55,0x56,0x7d,0x78,0x15,0x16,0x14,0x78,0x74,0x55,0x56,0x54,0x7c,0x1c,0xa2,0x62,0x22,0x22,0x3c,0xa4,0x64,0x24,0x24,0x7c,0x54,0x56,0x55,0x44,0x7c,0x54,0x56,0x55,0x5c,0x7c,0x56,0x55,0x56,0x44,0x7c,0x56,0x55,0x56,0x5c,0xff,0x44,0x7e,0x45,0xff,0xff,0x48,0x7a,0x41,0xff,0x3c,0x42,0x42,0x43,0x3c,0x38,0x44,0x46,0x45,0x38,0x3c,0x42,0x43,0x42,0x3c,0x38,0x44,0x46,0x44,0x38,0x3c,0x43,0x42,0x43,0x3c,0x38,0x46,0x44,0x46,0x38,0x3c,0x40,0x42,0x41,0x3c,0x78,0x40,0x44,0x42,0x78, diff --git a/radio/src/fonts/sqt5/font_pt_08x10.lbm b/radio/src/fonts/sqt5/font_pt_08x10.lbm new file mode 100644 index 000000000..8d70591e3 --- /dev/null +++ b/radio/src/fonts/sqt5/font_pt_08x10.lbm @@ -0,0 +1 @@ +0xf0,0x07,0xf8,0x07,0x88,0x00,0x8c,0x00,0x8b,0x00,0x89,0x00,0xf8,0x07,0xf0,0x07,0x90,0x07,0x90,0x07,0x90,0x04,0x90,0x04,0x98,0x04,0xf6,0x07,0xf2,0x07,0xff,0x0f,0xf0,0x07,0xfa,0x07,0x8b,0x00,0x89,0x00,0x89,0x00,0x8b,0x00,0xfa,0x07,0xf0,0x07,0x90,0x07,0x94,0x07,0x96,0x04,0x93,0x04,0x96,0x04,0xf4,0x07,0xf0,0x07,0xff,0x0f,0xf0,0x07,0xfa,0x07,0x89,0x00,0x89,0x00,0x8b,0x00,0x8a,0x00,0xfa,0x07,0xf1,0x07,0x90,0x07,0x90,0x07,0x94,0x04,0x92,0x04,0x96,0x04,0xf4,0x07,0xf2,0x07,0xff,0x0f,0xf0,0x07,0xf8,0x07,0x89,0x00,0x8b,0x00,0x8c,0x00,0x88,0x00,0xf8,0x07,0xf0,0x07,0x90,0x07,0x90,0x07,0x92,0x04,0x96,0x04,0x98,0x04,0xf0,0x07,0xf0,0x07,0xff,0x0f,0xf8,0x01,0xfc,0x03,0x04,0x0a,0x04,0x0e,0x04,0x06,0x04,0x02,0x04,0x02,0x04,0x02,0xf8,0x03,0xf8,0x03,0x08,0x0a,0x08,0x0e,0x08,0x06,0x08,0x02,0x08,0x02,0xff,0x0f,0xf8,0x07,0xf8,0x07,0x48,0x04,0x4c,0x04,0x4b,0x04,0x49,0x04,0x08,0x04,0xff,0x0f,0xf0,0x07,0xf0,0x07,0x90,0x04,0x9c,0x04,0x96,0x04,0xf2,0x04,0xf0,0x04,0xff,0x0f,0xf8,0x07,0xfa,0x07,0x4b,0x04,0x49,0x04,0x49,0x04,0x4b,0x04,0x0a,0x04,0xff,0x0f,0xf0,0x07,0xf4,0x07,0x96,0x04,0x93,0x04,0x96,0x04,0xf4,0x04,0xf0,0x04,0xff,0x0f,0xff,0x0f,0x08,0x04,0x08,0x04,0xfc,0x07,0xfb,0x07,0x09,0x04,0x08,0x04,0xff,0x0f,0xff,0x0f,0x10,0x04,0x10,0x04,0xf4,0x07,0xf3,0x07,0x01,0x04,0x00,0x04,0xff,0x0f,0xf0,0x03,0xf8,0x07,0x08,0x04,0x08,0x04,0x0c,0x04,0x0b,0x04,0xf9,0x07,0xf0,0x03,0xe0,0x03,0xf0,0x07,0x10,0x04,0x18,0x04,0x16,0x04,0xf2,0x07,0xe0,0x03,0xff,0x0f,0xf0,0x03,0xfa,0x07,0x0b,0x04,0x09,0x04,0x09,0x04,0x0b,0x04,0xfa,0x07,0xf0,0x03,0xe0,0x03,0xf4,0x07,0x16,0x04,0x13,0x04,0x16,0x04,0xf4,0x07,0xe0,0x03,0xff,0x0f,0xf2,0x03,0xf9,0x07,0x09,0x04,0x0b,0x04,0x0a,0x04,0x0a,0x04,0xf9,0x07,0xf0,0x03,0xe0,0x03,0xf4,0x07,0x12,0x04,0x16,0x04,0x14,0x04,0xf2,0x07,0xe0,0x03,0xff,0x0f,0xf8,0x03,0xf8,0x07,0x00,0x04,0x04,0x04,0x03,0x04,0x01,0x04,0xf8,0x07,0xf8,0x03,0xf0,0x07,0xf0,0x07,0x00,0x04,0x04,0x04,0x03,0x04,0xf1,0x07,0xf0,0x07,0xff,0x0f, diff --git a/radio/src/fonts/sqt5/font_pt_10x14.lbm b/radio/src/fonts/sqt5/font_pt_10x14.lbm new file mode 100644 index 000000000..71bd2d7ee --- /dev/null +++ b/radio/src/fonts/sqt5/font_pt_10x14.lbm @@ -0,0 +1 @@ +0xf0,0x7f,0xf8,0x7f,0xf8,0x7f,0x18,0x06,0x18,0x06,0x18,0x06,0x1c,0x06,0xfe,0x7f,0xfb,0x7f,0xf1,0x7f,0x60,0x7e,0x60,0x7e,0x60,0x7e,0x60,0x66,0x60,0x66,0x68,0x66,0x6c,0x66,0xe6,0x7f,0xe2,0x7f,0xe0,0x7f,0xf0,0x7f,0xf8,0x7f,0xf8,0x7f,0x1a,0x06,0x19,0x06,0x19,0x06,0x1a,0x06,0xf8,0x7f,0xf8,0x7f,0xf0,0x7f,0x60,0x7e,0x60,0x7e,0x60,0x7e,0x68,0x66,0x6c,0x66,0x66,0x66,0x6c,0x66,0xe8,0x7f,0xe0,0x7f,0xe0,0x7f,0xf0,0x7f,0xfa,0x7f,0xf9,0x7f,0x19,0x06,0x1b,0x06,0x1a,0x06,0x1a,0x06,0xf9,0x7f,0xf8,0x7f,0xf0,0x7f,0x60,0x7e,0x60,0x7e,0x68,0x7e,0x64,0x66,0x64,0x66,0x6c,0x66,0x68,0x66,0xe8,0x7f,0xe4,0x7f,0xe0,0x7f,0xf1,0x7f,0xfb,0x7f,0xfe,0x7f,0x1c,0x06,0x18,0x06,0x18,0x06,0x18,0x06,0xf8,0x7f,0xf8,0x7f,0xf0,0x7f,0x60,0x7e,0x60,0x7e,0x60,0x7e,0x62,0x66,0x66,0x66,0x6c,0x66,0x68,0x66,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xf8,0x0f,0xfc,0x1f,0xfc,0x5f,0x0c,0x78,0x0c,0x38,0x0c,0x18,0x0c,0x18,0x0c,0x18,0x0c,0x18,0x0c,0x18,0xf8,0x1f,0xf8,0x1f,0xf8,0x5f,0x18,0x78,0x18,0x38,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0xf8,0x7f,0xf8,0x7f,0xf8,0x7f,0x18,0x63,0x1c,0x63,0x1e,0x63,0x1b,0x63,0x19,0x63,0x18,0x60,0x18,0x60,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x66,0x68,0x66,0x6c,0x66,0x66,0x66,0xe2,0x67,0xe0,0x67,0xe0,0x67,0xf0,0x7f,0xf4,0x7f,0xf6,0x7f,0x33,0x66,0x31,0x66,0x33,0x66,0x36,0x66,0x34,0x66,0x30,0x60,0x30,0x60,0xe0,0x7f,0xe0,0x7f,0xe8,0x7f,0x6c,0x66,0x66,0x66,0x6c,0x66,0x68,0x66,0xe0,0x67,0xe0,0x67,0xe0,0x67,0xff,0xff,0x30,0x60,0x30,0x60,0xf4,0x7f,0xf6,0x7f,0xf3,0x7f,0x31,0x60,0x30,0x60,0xff,0xff,0xff,0xff,0xff,0xff,0x60,0x60,0x60,0x60,0xe0,0x7f,0xe8,0x7f,0xec,0x7f,0x06,0x60,0x02,0x60,0xff,0xff,0xff,0xff,0xf0,0x3f,0xf8,0x7f,0xf8,0x7f,0x18,0x60,0x1c,0x60,0x1e,0x60,0x1b,0x60,0xf9,0x7f,0xf8,0x7f,0xf0,0x3f,0xc0,0x3f,0xe0,0x7f,0xe0,0x7f,0x60,0x60,0x68,0x60,0x6c,0x60,0x66,0x60,0xe2,0x7f,0xe0,0x7f,0xc0,0x3f,0xf0,0x3f,0xf8,0x7f,0xf8,0x7f,0x1a,0x60,0x19,0x60,0x19,0x60,0x1a,0x60,0xf8,0x7f,0xf8,0x7f,0xf0,0x3f,0xc0,0x3f,0xe0,0x7f,0xe8,0x7f,0x6c,0x60,0x66,0x60,0x6c,0x60,0x68,0x60,0xe0,0x7f,0xe0,0x7f,0xc0,0x3f,0xf0,0x3f,0xfa,0x7f,0xf9,0x7f,0x19,0x60,0x1b,0x60,0x1a,0x60,0x1a,0x60,0xf9,0x7f,0xf8,0x7f,0xf0,0x3f,0xc0,0x3f,0xe8,0x7f,0xe4,0x7f,0x64,0x60,0x6c,0x60,0x68,0x60,0x68,0x60,0xe4,0x7f,0xe0,0x7f,0xc0,0x3f,0xf8,0x3f,0xf8,0x7f,0xf8,0x7f,0x00,0x60,0x04,0x60,0x06,0x60,0x03,0x60,0xf9,0x7f,0xf8,0x7f,0xf8,0x3f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x00,0x60,0x10,0x60,0x18,0x60,0x0c,0x60,0xe4,0x7f,0xe0,0x7f,0xe0,0x7f, diff --git a/radio/src/fonts/sqt5/font_se_04x06.lbm b/radio/src/fonts/sqt5/font_se_04x06.lbm new file mode 100644 index 000000000..2eb67ea9e --- /dev/null +++ b/radio/src/fonts/sqt5/font_se_04x06.lbm @@ -0,0 +1 @@ +0x3a,0x2b,0x2b,0x3e,0x7f,0x3a,0x2b,0x2a,0x3f,0x7f,0x18,0x25,0x24,0x19,0x7f,0x3c,0x0b,0x0b,0x3c,0x7f,0x3d,0x0a,0x0a,0x3d,0x7f,0x1d,0x22,0x22,0x1d,0x7f, diff --git a/radio/src/fonts/sqt5/font_se_05x07.lbm b/radio/src/fonts/sqt5/font_se_05x07.lbm new file mode 100644 index 000000000..ef8fc9c71 --- /dev/null +++ b/radio/src/fonts/sqt5/font_se_05x07.lbm @@ -0,0 +1 @@ +0x74,0x57,0x55,0x57,0x7c,0x74,0x55,0x54,0x55,0x7c,0x38,0x45,0x44,0x45,0x38,0x78,0x17,0x15,0x17,0x78,0x78,0x15,0x14,0x15,0x78,0x38,0x45,0x44,0x45,0x38, diff --git a/radio/src/fonts/sqt5/font_se_08x10.lbm b/radio/src/fonts/sqt5/font_se_08x10.lbm new file mode 100644 index 000000000..104f312df --- /dev/null +++ b/radio/src/fonts/sqt5/font_se_08x10.lbm @@ -0,0 +1 @@ +0x90,0x07,0x90,0x07,0x92,0x04,0x95,0x04,0x95,0x04,0xf2,0x07,0xf0,0x07,0xff,0x0f,0x90,0x07,0x96,0x07,0x96,0x04,0x90,0x04,0x96,0x04,0xf6,0x07,0xf0,0x07,0xff,0x0f,0xe0,0x03,0xf6,0x07,0x16,0x04,0x10,0x04,0x16,0x04,0xf6,0x07,0xe0,0x03,0xff,0x0f,0xf0,0x07,0xf8,0x07,0x9a,0x00,0x9d,0x00,0x9d,0x00,0x9a,0x00,0xf8,0x07,0xf0,0x07,0xf0,0x07,0xfb,0x07,0x9b,0x00,0x98,0x00,0x98,0x00,0x9b,0x00,0xfb,0x07,0xf0,0x07,0xf0,0x03,0xfb,0x07,0x0b,0x04,0x08,0x04,0x08,0x04,0x0b,0x04,0xfb,0x07,0xf0,0x03, diff --git a/radio/src/fonts/sqt5/font_se_10x14.lbm b/radio/src/fonts/sqt5/font_se_10x14.lbm new file mode 100644 index 000000000..e1fa337cc --- /dev/null +++ b/radio/src/fonts/sqt5/font_se_10x14.lbm @@ -0,0 +1 @@ +0x60,0x7e,0x60,0x7e,0x60,0x7e,0x64,0x66,0x6a,0x66,0x6a,0x66,0x64,0x66,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x60,0x7e,0x60,0x7e,0x6c,0x7e,0x6c,0x66,0x60,0x66,0x60,0x66,0x6c,0x66,0xec,0x7f,0xe0,0x7f,0xe0,0x7f,0xc0,0x3f,0xe0,0x7f,0xec,0x7f,0x6c,0x60,0x60,0x60,0x60,0x60,0x6c,0x60,0xec,0x7f,0xe0,0x7f,0xc0,0x3f,0xf0,0x7f,0xf8,0x7f,0xf8,0x7f,0x1a,0x06,0x1d,0x06,0x1d,0x06,0x1a,0x06,0xf8,0x7f,0xf8,0x7f,0xf0,0x7f,0xf0,0x7f,0xfb,0x7f,0xfb,0x7f,0x18,0x06,0x18,0x06,0x18,0x06,0x18,0x06,0xfb,0x7f,0xfb,0x7f,0xf0,0x7f,0xf0,0x3f,0xfb,0x7f,0xfb,0x7f,0x18,0x60,0x18,0x60,0x18,0x60,0x18,0x60,0xfb,0x7f,0xfb,0x7f,0xf0,0x3f, diff --git a/radio/src/fonts/std/.gitignore b/radio/src/fonts/std/.gitignore deleted file mode 100644 index 82b82bcbf..000000000 --- a/radio/src/fonts/std/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/*.lbm diff --git a/radio/src/fonts/std/font_03x05.lbm b/radio/src/fonts/std/font_03x05.lbm new file mode 100644 index 000000000..1e163ee0d --- /dev/null +++ b/radio/src/fonts/std/font_03x05.lbm @@ -0,0 +1 @@ +0x04,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0x11,0x0e,0x12,0x1f,0x10,0x19,0x15,0x13,0x11,0x15,0x1f,0x07,0x04,0x1f,0x17,0x15,0x1d,0x1f,0x15,0x1d,0x01,0x1d,0x03,0x1f,0x15,0x1f,0x17,0x15,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x1f,0x11, diff --git a/radio/src/fonts/std/font_04x06.lbm b/radio/src/fonts/std/font_04x06.lbm new file mode 100644 index 000000000..852037f54 --- /dev/null +++ b/radio/src/fonts/std/font_04x06.lbm @@ -0,0 +1,6 @@ +0x00,0x00,0x7f,0x7f,0x7f,0x7f,0x7f,0x2f,0x7f,0x7f,0x7f,0x07,0x00,0x07,0x7f,0x14,0x3e,0x14,0x3e,0x14,0x04,0x2a,0x3e,0x2a,0x10,0x13,0x08,0x04,0x32,0x7f,0x14,0x2a,0x14,0x20,0x7f,0x7f,0x07,0x7f,0x7f,0x7f,0x7f,0x1e,0x21,0x7f,0x7f,0x7f,0x21,0x1e,0x7f,0x7f,0x7f,0x2a,0x1c,0x2a,0x7f,0x08,0x08,0x3e,0x08,0x08,0x7f,0x40,0x30,0x10,0x7f,0x08,0x08,0x08,0x08,0x7f,0x00,0x30,0x30,0x7f,0x7f,0x10,0x08,0x04,0x02,0x7f, +0x1e,0x21,0x21,0x1e,0x7f,0x00,0x22,0x3f,0x20,0x7f,0x22,0x31,0x29,0x26,0x7f,0x11,0x25,0x25,0x1b,0x7f,0x0c,0x0a,0x3f,0x08,0x7f,0x17,0x25,0x25,0x19,0x7f,0x1e,0x25,0x25,0x18,0x7f,0x01,0x31,0x0d,0x03,0x7f,0x1a,0x25,0x25,0x1a,0x7f,0x06,0x29,0x29,0x1e,0x7f,0x7f,0x36,0x36,0x00,0x7f,0x7f,0x76,0x16,0x00,0x7f,0x7f,0x08,0x14,0x22,0x7f,0x14,0x14,0x14,0x14,0x7f,0x7f,0x22,0x14,0x08,0x7f,0x7f,0x02,0x29,0x06,0x7f, +0x02,0x05,0x02,0x7f,0x7f,0x3e,0x09,0x09,0x3e,0x7f,0x3f,0x25,0x25,0x1a,0x7f,0x1e,0x21,0x21,0x12,0x7f,0x3f,0x21,0x21,0x1e,0x7f,0x3f,0x25,0x25,0x21,0x7f,0x3f,0x05,0x05,0x01,0x7f,0x1e,0x21,0x29,0x3a,0x7f,0x3f,0x04,0x04,0x3f,0x7f,0x21,0x3f,0x21,0x7f,0x7f,0x10,0x20,0x20,0x1f,0x7f,0x3f,0x0c,0x12,0x21,0x7f,0x3f,0x20,0x20,0x20,0x7f,0x3f,0x02,0x04,0x02,0x3f,0x3f,0x06,0x18,0x3f,0x7f,0x1e,0x21,0x21,0x1e,0x7f, +0x3f,0x09,0x09,0x06,0x7f,0x1e,0x31,0x21,0x5e,0x7f,0x3f,0x09,0x19,0x26,0x7f,0x12,0x25,0x29,0x12,0x7f,0x01,0x3f,0x01,0x7f,0x7f,0x1f,0x20,0x20,0x1f,0x7f,0x0f,0x30,0x30,0x0f,0x7f,0x3f,0x18,0x0c,0x18,0x3f,0x33,0x0c,0x0c,0x33,0x7f,0x07,0x38,0x07,0x7f,0x7f,0x31,0x29,0x25,0x23,0x7f,0x3f,0x21,0x21,0x7f,0x7f,0x02,0x04,0x08,0x10,0x7f,0x21,0x21,0x3f,0x7f,0x7f,0x02,0x01,0x02,0x7f,0x7f,0x20,0x20,0x20,0x20,0x7f, +0x01,0x02,0x7f,0x7f,0x7f,0x18,0x24,0x14,0x3c,0x7f,0x3f,0x24,0x24,0x18,0x7f,0x18,0x24,0x24,0x7f,0x7f,0x18,0x24,0x24,0x3f,0x7f,0x18,0x34,0x2c,0x08,0x7f,0x08,0x3e,0x09,0x02,0x7f,0x28,0x54,0x54,0x4c,0x7f,0x3f,0x04,0x04,0x38,0x7f,0x24,0x3d,0x20,0x7f,0x7f,0x20,0x40,0x3d,0x7f,0x7f,0x3f,0x08,0x14,0x20,0x7f,0x21,0x3f,0x20,0x7f,0x7f,0x3c,0x08,0x38,0x0c,0x38,0x3c,0x04,0x04,0x38,0x7f,0x18,0x24,0x24,0x18,0x7f, +0x7c,0x24,0x24,0x18,0x7f,0x18,0x24,0x24,0x7c,0x7f,0x3c,0x04,0x04,0x08,0x7f,0x28,0x2c,0x34,0x14,0x7f,0x04,0x1f,0x24,0x20,0x7f,0x1c,0x20,0x20,0x3c,0x7f,0x1c,0x20,0x1c,0x7f,0x7f,0x3c,0x30,0x18,0x30,0x3c,0x24,0x18,0x18,0x24,0x7f,0x0c,0x50,0x20,0x1c,0x7f,0x24,0x34,0x2c,0x24,0x7f,0x04,0x1e,0x21,0x7f,0x7f,0x7f,0x3f,0x7f,0x7f,0x7f,0x21,0x1e,0x04,0x7f,0x7f,0x08,0x2a,0x1c,0x08,0x7f,0x08,0x1c,0x2a,0x08,0x7f, diff --git a/radio/src/fonts/std/font_04x06_extra.lbm b/radio/src/fonts/std/font_04x06_extra.lbm new file mode 100644 index 000000000..cce1e9d68 --- /dev/null +++ b/radio/src/fonts/std/font_04x06_extra.lbm @@ -0,0 +1 @@ +0x04,0x02,0x3b,0x02,0x04,0x08,0x10,0x37,0x10,0x08,0x20,0x12,0x0a,0x02,0x1e,0x02,0x24,0x28,0x20,0x3c,0x3c,0x20,0x28,0x24,0x02,0x1e,0x02,0x0a,0x12,0x20, diff --git a/radio/src/fonts/std/font_05x07.lbm b/radio/src/fonts/std/font_05x07.lbm new file mode 100644 index 000000000..14c17d299 --- /dev/null +++ b/radio/src/fonts/std/font_05x07.lbm @@ -0,0 +1,6 @@ +0x00,0x00,0xff,0xff,0xff,0xff,0xff,0x6f,0xff,0xff,0xff,0x07,0x00,0x07,0xff,0x18,0x30,0x18,0x0c,0x06,0x08,0x7f,0x7f,0x7f,0x08,0x23,0x13,0x08,0x64,0x62,0x36,0x49,0x55,0x22,0x50,0xff,0x05,0x03,0xff,0xff,0xff,0x1c,0x22,0x41,0xff,0xff,0x41,0x22,0x1c,0xff,0x14,0x08,0x3e,0x08,0x14,0x08,0x08,0x3e,0x08,0x08,0xff,0x50,0x30,0xff,0xff,0x00,0x08,0x08,0x08,0xff,0xff,0xff,0x40,0xff,0xff,0x20,0x10,0x08,0x04,0x02, +0x3e,0x41,0x41,0x3e,0xff,0x00,0x42,0x7f,0x40,0xff,0x62,0x51,0x49,0x46,0xff,0x41,0x49,0x49,0x36,0xff,0x18,0x14,0x12,0x7f,0xff,0x27,0x45,0x45,0x39,0xff,0x3e,0x49,0x49,0x32,0xff,0x01,0x79,0x05,0x03,0xff,0x36,0x49,0x49,0x36,0xff,0x06,0x49,0x29,0x1e,0xff,0xff,0x36,0x36,0xff,0xff,0xff,0x56,0x36,0xff,0xff,0xff,0x08,0x14,0x22,0x41,0x14,0x14,0x14,0x14,0x14,0x41,0x22,0x14,0x08,0xff,0x02,0x01,0x51,0x09,0x06, +0x06,0x09,0x09,0x06,0xff,0x7e,0x09,0x09,0x09,0x7e,0x7f,0x49,0x49,0x49,0x36,0x3e,0x41,0x41,0x41,0x22,0x7f,0x41,0x41,0x22,0x1c,0x7f,0x49,0x49,0x49,0x41,0x7f,0x09,0x09,0x09,0x01,0x3e,0x41,0x49,0x49,0x7a,0x7f,0x08,0x08,0x08,0x7f,0xff,0x41,0x7f,0x41,0xff,0x20,0x40,0x41,0x3f,0x01,0x7f,0x08,0x14,0x22,0x41,0x7f,0x40,0x40,0x40,0xff,0x7f,0x02,0x0c,0x02,0x7f,0x7f,0x04,0x08,0x10,0x7f,0x3e,0x41,0x41,0x41,0x3e, +0x7f,0x09,0x09,0x09,0x06,0x3e,0x41,0x51,0x21,0x5e,0x7f,0x09,0x19,0x29,0x46,0x26,0x49,0x49,0x49,0x32,0x01,0x01,0x7f,0x01,0x01,0x3f,0x40,0x40,0x40,0x3f,0x1f,0x20,0x40,0x20,0x1f,0x3f,0x40,0x30,0x40,0x3f,0x63,0x14,0x08,0x14,0x63,0x07,0x08,0x70,0x08,0x07,0x61,0x51,0x49,0x45,0x43,0xff,0x7f,0x41,0x41,0x00,0x02,0x04,0x08,0x10,0x20,0x00,0x41,0x41,0x7f,0xff,0x04,0x02,0x01,0x02,0x04,0x40,0x40,0x40,0x40,0xff, +0xff,0x01,0x02,0x04,0xff,0x20,0x54,0x54,0x54,0x78,0x7f,0x48,0x44,0x44,0x38,0x38,0x44,0x44,0x44,0x20,0x38,0x44,0x44,0x48,0x7f,0x38,0x54,0x54,0x54,0x18,0x08,0x7e,0x09,0x01,0x02,0x0c,0x52,0x52,0x52,0x3e,0x7f,0x08,0x04,0x04,0x78,0xff,0x44,0x7d,0x40,0xff,0x20,0x40,0x44,0x3d,0xff,0x7f,0x10,0x28,0x44,0xff,0xff,0x41,0x7f,0x40,0xff,0x7c,0x04,0x18,0x04,0x78,0x7c,0x08,0x04,0x04,0x78,0x38,0x44,0x44,0x44,0x38, +0x7c,0x14,0x14,0x14,0x08,0x08,0x14,0x14,0x18,0x7c,0x7c,0x08,0x04,0x04,0x08,0x48,0x54,0x54,0x54,0x20,0x04,0x3f,0x44,0x40,0x20,0x3c,0x40,0x40,0x20,0x7c,0x1c,0x20,0x40,0x20,0x1c,0x3c,0x40,0x20,0x40,0x3c,0x44,0x28,0x10,0x28,0x44,0x0c,0x50,0x50,0x50,0x3c,0x44,0x64,0x54,0x4c,0x44,0x10,0x08,0x10,0x08,0xff,0xff,0xff,0x7f,0xff,0xff,0x41,0x22,0x54,0x28,0xff,0x08,0x08,0x22,0x1c,0x08,0x08,0x1c,0x22,0x08,0x08, diff --git a/radio/src/fonts/std/font_05x07_B_compressed.lbm b/radio/src/fonts/std/font_05x07_B_compressed.lbm new file mode 100644 index 000000000..261bfbeeb --- /dev/null +++ b/radio/src/fonts/std/font_05x07_B_compressed.lbm @@ -0,0 +1 @@ +0x00,0x00,0x00,0xff,0xff,0xff,0x80,0xe0,0x60,0xff,0x00,0x18,0x18,0x18,0xff,0xff,0x60,0x60,0xff,0xff,0x60,0x60,0x60,0x60,0xff,0x3e,0x7f,0x41,0x7f,0x3e,0x00,0x42,0x7f,0x7f,0x40,0x62,0x73,0x59,0x4f,0x46,0x41,0x49,0x7f,0x7f,0x36,0x18,0x1c,0x12,0x7f,0x7f,0x27,0x67,0x45,0x7d,0x39,0x3e,0x7f,0x49,0x7b,0x32,0x01,0x79,0x7d,0x07,0x03,0x36,0x7f,0x49,0x7f,0x36,0x06,0x4f,0x69,0x3f,0x1e,0xff,0x36,0x36,0xff,0xff,0x7e,0x7f,0x09,0x7f,0x7e,0x7f,0x7f,0x49,0x7f,0x36,0x3e,0x7f,0x41,0x77,0x36,0x7f,0x7f,0x41,0x3e,0x1c,0x7f,0x7f,0x49,0x49,0x41,0x7f,0x7f,0x09,0x09,0x01,0x3e,0x7f,0x41,0x59,0x7a,0x7f,0x7f,0x08,0x7f,0x7f,0x41,0x7f,0x7f,0x41,0xff,0x30,0x70,0x41,0x7f,0x3f,0x7f,0x7f,0x14,0x63,0x41,0x7f,0x7f,0x40,0x40,0xff,0x7f,0x07,0x1e,0x07,0x7f,0x7f,0x7f,0x0c,0x18,0x7f,0x3e,0x7f,0x41,0x7f,0x3e,0x7f,0x7f,0x09,0x0f,0x06,0x3e,0x7f,0x41,0x2f,0x5e,0x7f,0x7f,0x19,0x6f,0x46,0x26,0x4f,0x5d,0x79,0x32,0x01,0x7f,0x7f,0x01,0xff,0x3f,0x7f,0x60,0x7f,0x3f,0x1f,0x3f,0x60,0x3f,0x1f,0x3f,0x70,0x38,0x70,0x3f,0x63,0x77,0x1c,0x77,0x63,0x07,0x0f,0x78,0x0f,0x07,0x71,0x79,0x5d,0x4f,0x47,0x20,0x74,0x54,0x7c,0x78,0x7f,0x7f,0x44,0x7c,0x38,0x38,0x7c,0x44,0x44,0x20,0x38,0x7c,0x44,0x7f,0x7f,0x38,0x7c,0x54,0x5c,0x18,0x08,0x7e,0x7f,0x09,0x02,0x0c,0x5e,0x52,0x7e,0x3e,0x7f,0x7f,0x04,0x7c,0x78,0x44,0x7d,0x7d,0x40,0xff,0x30,0x70,0x44,0x7d,0x3d,0x7f,0x7f,0x28,0x44,0xff,0x41,0x7f,0x7f,0x40,0xff,0x7c,0x1c,0x38,0x1c,0x78,0x7c,0x78,0x0c,0x7c,0x78,0x38,0x7c,0x44,0x7c,0x38,0x7c,0x7c,0x24,0x3c,0x18,0x18,0x3c,0x24,0x7c,0x7c,0x7c,0x78,0x0c,0x1c,0x18,0x48,0x5c,0x7c,0x74,0x20,0x04,0x3f,0x7f,0x44,0x20,0x3c,0x7c,0x60,0x3c,0x7c,0x1c,0x3c,0x60,0x3c,0x1c,0x3c,0x70,0x38,0x70,0x3c,0x44,0x6c,0x38,0x6c,0x44,0x0c,0x5c,0x50,0x7c,0x3c,0x44,0x64,0x74,0x5c,0x4c, diff --git a/radio/src/fonts/std/font_05x07_extra.lbm b/radio/src/fonts/std/font_05x07_extra.lbm new file mode 100644 index 000000000..ea644215a --- /dev/null +++ b/radio/src/fonts/std/font_05x07_extra.lbm @@ -0,0 +1 @@ +0x04,0x02,0x7b,0x02,0x04,0x10,0x20,0x6f,0x20,0x10,0x20,0x12,0x0a,0x02,0x1e,0x02,0x24,0x28,0x20,0x3c,0x3c,0x20,0x28,0x24,0x02,0x1e,0x02,0x0a,0x12,0x20, diff --git a/radio/src/fonts/std/font_08x10.lbm b/radio/src/fonts/std/font_08x10.lbm new file mode 100644 index 000000000..875a1139d --- /dev/null +++ b/radio/src/fonts/std/font_08x10.lbm @@ -0,0 +1,6 @@ +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x0f,0xff,0x0f,0xff,0x0f,0xff,0x0f,0xff,0x0f,0xff,0x0f,0xfe,0x05,0xfe,0x05,0xff,0x0f,0xff,0x0f,0xff,0x0f,0xff,0x0f,0xff,0x0f,0x0e,0x00,0x0e,0x00,0x00,0x00,0x0e,0x00,0x0e,0x00,0xff,0x0f,0xff,0x0f,0x90,0x00,0xfc,0x03,0xfc,0x03,0x90,0x00,0xfc,0x03,0xfc,0x03,0x90,0x00,0xff,0x0f,0x38,0x02,0x7c,0x06,0x64,0x04,0xfe,0x0f,0xc4,0x04,0xcc,0x07,0x88,0x03,0xff,0x0f,0x0c,0x04,0x1e,0x07,0x8c,0x03,0xe0,0x00,0x70,0x00,0x1c,0x03,0x8e,0x07,0x02,0x03,0x80,0x03,0xdc,0x07,0x7e,0x04,0x72,0x04,0xde,0x06,0x8c,0x03,0x80,0x07,0xc0,0x04,0xff,0x0f,0xff,0x0f,0x1e,0x00,0x1e,0x00,0xff,0x0f,0xff,0x0f,0xff,0x0f,0xff,0x0f,0xff,0x0f,0xf0,0x00,0xfc,0x03,0x0e,0x07,0x03,0x0c,0x01,0x08,0xff,0x0f,0xff,0x0f,0xff,0x0f,0x01,0x08,0x03,0x0c,0x0e,0x07,0xfc,0x03,0xf0,0x00,0xff,0x0f,0xff,0x0f,0x40,0x00,0x50,0x01,0xf0,0x01,0xe0,0x00,0xf0,0x01,0x50,0x01,0x40,0x00,0xff,0x0f,0xff,0x0f,0x40,0x00,0x40,0x00,0xf0,0x01,0x40,0x00,0x40,0x00,0xff,0x0f,0xff,0x0f,0xff,0x0f,0xff,0x0f,0x80,0x09,0x80,0x0f,0x80,0x07,0xff,0x0f,0xff,0x0f,0xff,0x0f,0xff,0x0f,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0xff,0x0f,0xff,0x0f,0xff,0x0f,0xff,0x0f,0x00,0x04,0x00,0x0e,0x00,0x0e,0x00,0x04,0xff,0x0f,0xff,0x0f,0x00,0x04,0x00,0x07,0x80,0x03,0xe0,0x00,0x70,0x00,0x1c,0x00,0x0e,0x00,0x02,0x00, +0xff,0x0f,0xfc,0x03,0xfe,0x07,0x02,0x04,0x02,0x04,0xfe,0x07,0xfc,0x03,0xff,0x0f,0xff,0x0f,0x08,0x04,0x0c,0x04,0xfe,0x07,0xfe,0x07,0x00,0x04,0x00,0x04,0xff,0x0f,0xff,0x0f,0x0c,0x06,0x0e,0x07,0x82,0x05,0xe2,0x04,0x7e,0x04,0x1c,0x04,0xff,0x0f,0xff,0x0f,0x0c,0x03,0x0e,0x07,0x22,0x04,0x22,0x04,0xfe,0x07,0xdc,0x03,0xff,0x0f,0xff,0x0f,0xc0,0x01,0xe0,0x01,0x30,0x01,0xfc,0x07,0xfe,0x07,0x00,0x01,0xff,0x0f,0xff,0x0f,0x3e,0x03,0x3e,0x07,0x12,0x04,0x12,0x04,0xf2,0x07,0xe2,0x03,0xff,0x0f,0xff,0x0f,0xf8,0x03,0xfc,0x07,0x26,0x04,0x22,0x04,0xee,0x07,0xcc,0x03,0xff,0x0f,0xff,0x0f,0x0e,0x00,0x0e,0x00,0xe2,0x07,0xfa,0x07,0x1e,0x00,0x06,0x00,0xff,0x0f,0xff,0x0f,0x9c,0x03,0xfe,0x07,0x62,0x04,0x62,0x04,0xfe,0x07,0x9c,0x03,0xff,0x0f,0xff,0x0f,0x3c,0x03,0x7e,0x07,0x42,0x04,0x42,0x06,0xfe,0x03,0xfc,0x01,0xff,0x0f,0xff,0x0f,0xff,0x0f,0x18,0x03,0x18,0x03,0xff,0x0f,0xff,0x0f,0xff,0x0f,0xff,0x0f,0xff,0x0f,0x08,0x00,0x9c,0x09,0x9c,0x0f,0x88,0x07,0xff,0x0f,0xff,0x0f,0xff,0x0f,0xff,0x0f,0x60,0x00,0xf0,0x00,0x98,0x01,0x0c,0x03,0x06,0x06,0x02,0x04,0xff,0x0f,0xff,0x0f,0x20,0x01,0x20,0x01,0x20,0x01,0x20,0x01,0x20,0x01,0x20,0x01,0xff,0x0f,0xff,0x0f,0x02,0x04,0x06,0x06,0x0c,0x03,0x98,0x01,0xf0,0x00,0x60,0x00,0xff,0x0f,0x0c,0x00,0x0e,0x00,0x82,0x06,0xc2,0x06,0x62,0x00,0x3e,0x00,0x1c,0x00,0xff,0x0f, +0xff,0x0f,0x0c,0x00,0x1e,0x00,0x12,0x00,0x12,0x00,0x1e,0x00,0x0c,0x00,0xff,0x0f,0xf0,0x07,0xf8,0x07,0x8c,0x00,0x86,0x00,0x86,0x00,0x8c,0x00,0xf8,0x07,0xf0,0x07,0xfe,0x07,0xfe,0x07,0x22,0x04,0x22,0x04,0x22,0x04,0x76,0x06,0xdc,0x03,0x88,0x01,0xf8,0x01,0xfc,0x03,0x06,0x06,0x02,0x04,0x02,0x04,0x02,0x04,0x06,0x06,0x0c,0x03,0xfe,0x07,0xfe,0x07,0x02,0x04,0x02,0x04,0x02,0x04,0x06,0x06,0xfc,0x03,0xf8,0x01,0xfe,0x07,0xfe,0x07,0x22,0x04,0x22,0x04,0x22,0x04,0x22,0x04,0x02,0x04,0xff,0x0f,0xfe,0x07,0xfe,0x07,0x22,0x00,0x22,0x00,0x22,0x00,0x22,0x00,0x02,0x00,0x02,0x00,0xf8,0x01,0xfc,0x03,0x06,0x06,0x02,0x04,0x02,0x04,0x42,0x04,0xc6,0x07,0xc4,0x03,0xfe,0x07,0xfe,0x07,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0xfe,0x07,0xfe,0x07,0xff,0x0f,0x02,0x04,0x02,0x04,0xfe,0x07,0xfe,0x07,0x02,0x04,0x02,0x04,0xff,0x0f,0xff,0x0f,0x00,0x03,0x00,0x06,0x02,0x04,0x02,0x06,0xfe,0x03,0xfe,0x01,0xff,0x0f,0xfe,0x07,0xfe,0x07,0x60,0x00,0xf0,0x00,0x98,0x01,0x0c,0x03,0x06,0x06,0x02,0x04,0xfe,0x07,0xfe,0x07,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0xff,0x0f,0xfe,0x07,0xfe,0x07,0x0c,0x00,0x78,0x00,0x78,0x00,0x0c,0x00,0xfe,0x07,0xfe,0x07,0xfe,0x07,0xfe,0x07,0x1c,0x00,0x78,0x00,0xe0,0x00,0x80,0x03,0xfe,0x07,0xfe,0x07,0xf8,0x01,0xfc,0x03,0x06,0x06,0x02,0x04,0x02,0x04,0x06,0x06,0xfc,0x03,0xf8,0x01, +0xfe,0x07,0xfe,0x07,0x22,0x00,0x22,0x00,0x22,0x00,0x22,0x00,0x3e,0x00,0x1c,0x00,0xf8,0x01,0xfc,0x03,0x06,0x06,0x82,0x04,0x82,0x05,0x06,0x07,0xfc,0x03,0xf8,0x05,0xfe,0x07,0xfe,0x07,0x62,0x00,0x62,0x00,0xe2,0x00,0xa2,0x01,0x3e,0x07,0x1c,0x06,0x1c,0x02,0x3e,0x06,0x22,0x04,0x22,0x04,0x22,0x04,0x22,0x04,0xe6,0x07,0xc4,0x03,0x02,0x00,0x02,0x00,0x02,0x00,0xfe,0x07,0xfe,0x07,0x02,0x00,0x02,0x00,0x02,0x00,0xfe,0x01,0xfe,0x03,0x00,0x06,0x00,0x04,0x00,0x04,0x00,0x06,0xfe,0x03,0xfe,0x01,0x0e,0x00,0x7e,0x00,0xf0,0x01,0x80,0x07,0x80,0x07,0xf0,0x01,0x7e,0x00,0x0e,0x00,0xfe,0x07,0xfe,0x07,0x00,0x03,0xe0,0x01,0xe0,0x01,0x00,0x03,0xfe,0x07,0xfe,0x07,0x06,0x06,0x0e,0x07,0x98,0x01,0xf0,0x00,0xf0,0x00,0x98,0x01,0x0e,0x07,0x06,0x06,0x06,0x00,0x0e,0x00,0x18,0x00,0xf0,0x07,0xf0,0x07,0x18,0x00,0x0e,0x00,0x06,0x00,0x02,0x07,0x82,0x07,0xc2,0x04,0x62,0x04,0x32,0x04,0x1e,0x04,0x0e,0x04,0xff,0x0f,0xff,0x0f,0xfe,0x07,0xfe,0x07,0x02,0x04,0x02,0x04,0x02,0x04,0xff,0x0f,0xff,0x0f,0x02,0x00,0x0e,0x00,0x1c,0x00,0x70,0x00,0xe0,0x00,0x80,0x03,0x00,0x07,0x00,0x04,0xff,0x0f,0xff,0x0f,0x02,0x04,0x02,0x04,0x02,0x04,0xfe,0x07,0xfe,0x07,0xff,0x0f,0xff,0x0f,0x18,0x00,0x0c,0x00,0x06,0x00,0x06,0x00,0x0c,0x00,0x18,0x00,0xff,0x0f,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08, +0xff,0x0f,0xff,0x0f,0x01,0x00,0x03,0x00,0x06,0x00,0x04,0x00,0xff,0x0f,0xff,0x0f,0x00,0x03,0xa0,0x07,0xb0,0x04,0x90,0x04,0x90,0x02,0xf0,0x07,0xe0,0x07,0xff,0x0f,0xfe,0x07,0xfe,0x07,0x20,0x02,0x10,0x04,0x30,0x06,0xe0,0x03,0xc0,0x01,0xff,0x0f,0xc0,0x01,0xe0,0x03,0x30,0x06,0x10,0x04,0x10,0x04,0x30,0x06,0x20,0x02,0xff,0x0f,0xc0,0x01,0xe0,0x03,0x30,0x06,0x10,0x04,0x20,0x02,0xfe,0x07,0xfe,0x07,0xff,0x0f,0xc0,0x01,0xe0,0x03,0xb0,0x06,0x90,0x04,0xb0,0x04,0xe0,0x06,0xc0,0x02,0xff,0x0f,0x40,0x00,0x40,0x00,0xfc,0x07,0xfe,0x07,0x42,0x00,0x0e,0x00,0x0c,0x00,0xff,0x0f,0x60,0x05,0xf0,0x0f,0x90,0x0a,0x90,0x0a,0xf0,0x0a,0x60,0x0e,0x30,0x04,0xff,0x0f,0xfe,0x07,0xfe,0x07,0x20,0x00,0x10,0x00,0x30,0x00,0xe0,0x07,0xc0,0x07,0xff,0x0f,0x00,0x04,0x10,0x04,0xf6,0x07,0xf6,0x07,0x00,0x04,0x00,0x04,0xff,0x0f,0xff,0x0f,0x00,0x07,0x00,0x0f,0x00,0x08,0x10,0x08,0x10,0x08,0xf6,0x0f,0xf6,0x07,0xff,0x0f,0xfe,0x07,0xfe,0x07,0xc0,0x01,0x60,0x03,0x30,0x06,0x00,0x04,0xff,0x0f,0xff,0x0f,0x00,0x04,0x02,0x04,0xfe,0x07,0xfe,0x07,0x00,0x04,0x00,0x04,0xff,0x0f,0xff,0x0f,0xf0,0x07,0xe0,0x07,0x10,0x00,0xe0,0x07,0x10,0x00,0xf0,0x07,0xe0,0x07,0xff,0x0f,0xf0,0x07,0xf0,0x07,0x20,0x00,0x10,0x00,0x30,0x00,0xe0,0x07,0xc0,0x07,0xff,0x0f,0xc0,0x01,0xe0,0x03,0x30,0x06,0x10,0x04,0x30,0x06,0xe0,0x03,0xc0,0x01,0xff,0x0f, +0xf0,0x0f,0xf0,0x0f,0x10,0x01,0x10,0x01,0xb0,0x01,0xe0,0x00,0xc0,0x00,0xff,0x0f,0xc0,0x00,0xe0,0x00,0xb0,0x01,0x10,0x01,0x10,0x01,0xf0,0x0f,0xf0,0x0f,0xff,0x0f,0x10,0x00,0xf0,0x07,0xe0,0x07,0x30,0x00,0x10,0x00,0x30,0x00,0x20,0x00,0xff,0x0f,0x60,0x02,0xf0,0x06,0x90,0x04,0x90,0x04,0x90,0x04,0xb0,0x07,0x20,0x03,0xff,0x0f,0x10,0x00,0x10,0x00,0xfc,0x03,0xfc,0x07,0x10,0x04,0x10,0x06,0x00,0x02,0xff,0x0f,0xf0,0x01,0xf0,0x03,0x00,0x06,0x00,0x04,0x00,0x02,0xf0,0x07,0xf0,0x07,0xff,0x0f,0x30,0x00,0xf0,0x00,0xc0,0x03,0x00,0x07,0xc0,0x03,0xf0,0x00,0x30,0x00,0xff,0x0f,0xf0,0x03,0xf0,0x07,0x00,0x06,0xc0,0x03,0x00,0x06,0xf0,0x07,0xf0,0x03,0xff,0x0f,0x10,0x04,0x30,0x06,0x60,0x03,0xc0,0x01,0x60,0x03,0x30,0x06,0x10,0x04,0xff,0x0f,0xf0,0x04,0xf0,0x0c,0x00,0x09,0x00,0x09,0x80,0x0c,0xf0,0x07,0xf0,0x03,0xff,0x0f,0x10,0x06,0x10,0x07,0x90,0x05,0xd0,0x04,0x70,0x04,0x30,0x04,0xff,0x0f,0xff,0x0f,0xff,0x0f,0x60,0x00,0xfe,0x07,0x9f,0x0f,0x01,0x08,0x01,0x08,0xff,0x0f,0xff,0x0f,0xff,0x0f,0xff,0x0f,0xff,0x0f,0xfe,0x07,0xfe,0x07,0xff,0x0f,0xff,0x0f,0xff,0x0f,0xff,0x0f,0xff,0x0f,0x01,0x08,0x01,0x08,0x9f,0x0f,0xfe,0x07,0x60,0x00,0xff,0x0f,0x60,0x00,0x60,0x00,0x60,0x00,0x64,0x02,0x68,0x01,0xf0,0x00,0x60,0x00,0xff,0x0f,0x60,0x00,0xf0,0x00,0x68,0x01,0x64,0x02,0x60,0x00,0x60,0x00,0x60,0x00,0xff,0x0f, diff --git a/radio/src/fonts/std/font_10x14.lbm b/radio/src/fonts/std/font_10x14.lbm new file mode 100644 index 000000000..1adf78d9e --- /dev/null +++ b/radio/src/fonts/std/font_10x14.lbm @@ -0,0 +1,6 @@ +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x71,0xfe,0x71,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x7e,0x00,0x00,0x00,0x00,0x00,0x7e,0x00,0x3e,0x00,0x00,0x00,0x00,0x00,0x60,0x06,0x60,0x06,0xfe,0x7f,0xfe,0x7f,0x60,0x06,0x60,0x06,0xfe,0x7f,0xfe,0x7f,0x60,0x06,0x60,0x06,0x60,0x18,0xf0,0x18,0x98,0x19,0x98,0x19,0xfe,0x7f,0xfe,0x7f,0x98,0x19,0x98,0x19,0x18,0x0f,0x18,0x06,0x0c,0x18,0x1e,0x1c,0x1e,0x0e,0x0c,0x07,0x80,0x03,0xc0,0x01,0xe0,0x30,0x70,0x78,0x38,0x78,0x18,0x30,0x78,0x1e,0xfc,0x3f,0x8e,0x71,0xc6,0x63,0xe6,0x67,0x76,0x66,0x3c,0x3c,0x18,0x3c,0x00,0x66,0x00,0x66,0x00,0x00,0x00,0x00,0x66,0x00,0x76,0x00,0x3e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x07,0xf0,0x0f,0x38,0x1c,0x1c,0x38,0x0e,0x70,0x06,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x60,0x0e,0x70,0x1c,0x38,0x38,0x1c,0xf0,0x0f,0xe0,0x07,0x00,0x00,0x00,0x00,0x60,0x06,0x60,0x06,0xc0,0x03,0x80,0x01,0xf8,0x1f,0xf8,0x1f,0x80,0x01,0xc0,0x03,0x60,0x06,0x60,0x06,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xf8,0x1f,0xf8,0x1f,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x66,0x00,0x76,0x00,0x3e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x78,0x00,0x78,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x1c,0x00,0x0e,0x00,0x07,0x80,0x03,0xc0,0x01,0xe0,0x00,0x70,0x00,0x38,0x00,0x18,0x00, +0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x60,0x0e,0x70,0xfc,0x3f,0xf8,0x1f,0xff,0xff,0xff,0xff,0x00,0x00,0x18,0x60,0x1c,0x60,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x00,0xff,0xff,0xff,0xff,0x18,0x78,0x1c,0x7c,0x0e,0x6e,0x06,0x67,0x86,0x63,0xce,0x61,0xfc,0x60,0x78,0x60,0xff,0xff,0xff,0xff,0x06,0x60,0x06,0x60,0x86,0x61,0x86,0x61,0x86,0x61,0xce,0x73,0xfc,0x3f,0x78,0x1e,0xff,0xff,0xff,0xff,0x80,0x07,0xc0,0x07,0xe0,0x06,0x70,0x06,0x38,0x06,0x1c,0x06,0xfe,0x7f,0xfe,0x7f,0xff,0xff,0xff,0xff,0x7e,0x18,0x7e,0x38,0x66,0x70,0x66,0x60,0x66,0x60,0xe6,0x70,0xc6,0x3f,0x86,0x1f,0xff,0xff,0xff,0xff,0xf8,0x1f,0xfc,0x3f,0x8e,0x71,0x86,0x61,0x86,0x61,0x8e,0x73,0x1c,0x3f,0x18,0x1e,0xff,0xff,0xff,0xff,0x06,0x00,0x06,0x00,0x86,0x7f,0xc6,0x7f,0xe6,0x00,0x76,0x00,0x3e,0x00,0x1e,0x00,0xff,0xff,0xff,0xff,0x78,0x1e,0xfc,0x3f,0xce,0x73,0x86,0x61,0x86,0x61,0xce,0x73,0xfc,0x3f,0x78,0x1e,0xff,0xff,0xff,0xff,0x78,0x00,0xfc,0x00,0xce,0x61,0x86,0x71,0x86,0x39,0xce,0x1d,0xfc,0x0f,0xf8,0x07,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x30,0x0c,0x78,0x1e,0x78,0x1e,0x30,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x66,0x78,0x76,0x78,0x3e,0x30,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0xc0,0x03,0xe0,0x07,0x70,0x0e,0x38,0x1c,0x1c,0x38,0x0e,0x70,0x06,0x60,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x06,0x60,0x0e,0x70,0x1c,0x38,0x38,0x1c,0x70,0x0e,0xe0,0x07,0xc0,0x03,0x80,0x01,0x00,0x00,0x00,0x00,0x18,0x00,0x1c,0x00,0x0e,0x00,0x06,0x00,0x06,0x66,0x06,0x67,0x86,0x03,0xce,0x01,0xfc,0x00,0x78,0x00, +0x78,0x00,0xfc,0x00,0xce,0x01,0x86,0x01,0x86,0x01,0xce,0x01,0xfc,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0xe0,0x7f,0xf0,0x7f,0xb8,0x01,0x9c,0x01,0x8e,0x01,0x8e,0x01,0x9c,0x01,0xb8,0x01,0xf0,0x7f,0xe0,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0xce,0x73,0xfc,0x3f,0x78,0x1e,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x0e,0x70,0x1c,0x38,0x18,0x18,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x06,0x60,0x0e,0x70,0x1c,0x38,0x38,0x1c,0xf0,0x0f,0xe0,0x07,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x06,0x00,0x06,0x00,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x86,0x61,0x86,0x61,0x86,0x61,0x8e,0x71,0x9c,0x7f,0x98,0x3f,0xfe,0x7f,0xfe,0x7f,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x18,0x00,0x38,0x00,0x70,0x00,0x60,0x06,0x60,0x06,0x70,0xfe,0x3f,0xfe,0x1f,0x06,0x00,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0x80,0x01,0xc0,0x03,0xe0,0x07,0x70,0x0e,0x38,0x1c,0x1c,0x38,0x0e,0x70,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0xfe,0x7f,0xfe,0x7f,0x1c,0x00,0x38,0x00,0xf0,0x01,0xf0,0x01,0x38,0x00,0x1c,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x70,0x00,0xe0,0x00,0xc0,0x01,0x80,0x03,0x00,0x07,0x00,0x0e,0xfe,0x7f,0xfe,0x7f,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x0e,0x70,0xfc,0x3f,0xf8,0x1f, +0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0xce,0x01,0xfc,0x00,0x78,0x00,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x66,0x06,0x6e,0x06,0x3c,0x0e,0x38,0xfc,0x7f,0xf8,0x67,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x07,0x86,0x0f,0x86,0x1d,0xce,0x39,0xfc,0x70,0x78,0x60,0x78,0x18,0xfc,0x38,0xce,0x71,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x8e,0x73,0x1c,0x3f,0x18,0x1e,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0xfe,0x1f,0xfe,0x3f,0x00,0x70,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x70,0xfe,0x3f,0xfe,0x1f,0xfe,0x07,0xfe,0x0f,0x00,0x1c,0x00,0x38,0x00,0x70,0x00,0x70,0x00,0x38,0x00,0x1c,0xfe,0x0f,0xfe,0x07,0xfe,0x1f,0xfe,0x3f,0x00,0x70,0x00,0x70,0x00,0x3e,0x00,0x3e,0x00,0x70,0x00,0x70,0xfe,0x3f,0xfe,0x1f,0x1e,0x78,0x3e,0x7c,0x70,0x0e,0xe0,0x07,0xc0,0x03,0xc0,0x03,0xe0,0x07,0x70,0x0e,0x3e,0x7c,0x1e,0x78,0x7e,0x00,0xfe,0x00,0xc0,0x01,0x80,0x03,0x00,0x7f,0x00,0x7f,0x80,0x03,0xc0,0x01,0xfe,0x00,0x7e,0x00,0x06,0x78,0x06,0x7c,0x06,0x6e,0x06,0x67,0x86,0x63,0xc6,0x61,0xe6,0x60,0x76,0x60,0x3e,0x60,0x1e,0x60,0x00,0x00,0x00,0x00,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x00,0x00,0x00,0x00,0x18,0x00,0x38,0x00,0x70,0x00,0xe0,0x00,0xc0,0x01,0x80,0x03,0x00,0x07,0x00,0x0e,0x00,0x1c,0x00,0x18,0x00,0x00,0x00,0x00,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x00,0x00,0x00,0x00,0x60,0x00,0x70,0x00,0x38,0x00,0x1c,0x00,0x0e,0x00,0x0e,0x00,0x1c,0x00,0x38,0x00,0x70,0x00,0x60,0x00,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60, +0x00,0x00,0x00,0x00,0x06,0x00,0x0e,0x00,0x1c,0x00,0x38,0x00,0x70,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x3c,0x60,0x7e,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0x66,0xc0,0x7f,0x80,0x7f,0xfe,0x7f,0xfe,0x7f,0x80,0x61,0xc0,0x61,0xe0,0x60,0x60,0x60,0x60,0x60,0xe0,0x70,0xc0,0x3f,0x80,0x1f,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x70,0x00,0x38,0x00,0x18,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x60,0x60,0xe0,0x60,0xc0,0x61,0x80,0x61,0xfe,0x7f,0xfe,0x7f,0x80,0x1f,0xc0,0x3f,0xe0,0x76,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0x66,0xc0,0x07,0x80,0x07,0x80,0x01,0x80,0x01,0xf8,0x7f,0xfc,0x7f,0x8e,0x01,0x86,0x01,0x06,0x00,0x0e,0x00,0x1c,0x00,0x18,0x00,0xe0,0x01,0xf0,0x03,0x38,0x67,0x18,0x66,0x18,0x66,0x18,0x66,0x18,0x66,0x18,0x76,0xf8,0x3f,0xf8,0x1f,0xfe,0x7f,0xfe,0x7f,0x80,0x01,0xc0,0x01,0xe0,0x00,0x60,0x00,0x60,0x00,0xe0,0x00,0xc0,0x7f,0x80,0x7f,0x60,0x60,0x60,0x60,0xe6,0x7f,0xe6,0x7f,0x00,0x60,0x00,0x60,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x18,0x00,0x38,0x00,0x70,0x00,0x60,0x60,0x60,0x60,0x70,0xe6,0x3f,0xe6,0x1f,0xff,0xff,0xff,0xff,0xfe,0x7f,0xfe,0x7f,0x00,0x06,0x00,0x0f,0x80,0x1f,0xc0,0x39,0xe0,0x70,0x60,0x60,0xff,0xff,0xff,0xff,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0x7f,0xe0,0x7f,0x60,0x00,0xe0,0x00,0xc0,0x07,0xc0,0x07,0xe0,0x00,0xe0,0x00,0xc0,0x7f,0x80,0x7f,0xe0,0x7f,0xe0,0x7f,0x80,0x01,0xc0,0x01,0xe0,0x00,0x60,0x00,0x60,0x00,0xe0,0x00,0xc0,0x7f,0x80,0x7f,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xe0,0x70,0xc0,0x3f,0x80,0x1f, +0xe0,0x7f,0xe0,0x7f,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0xe0,0x07,0xc0,0x03,0x80,0x01,0x80,0x01,0xc0,0x03,0xe0,0x07,0x60,0x06,0x60,0x06,0x60,0x06,0xc0,0x07,0x80,0x07,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x80,0x01,0xc0,0x01,0xe0,0x00,0x60,0x00,0x60,0x00,0xe0,0x00,0xc0,0x01,0x80,0x01,0x80,0x61,0xc0,0x63,0xe0,0x67,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x7e,0x00,0x3c,0x00,0x18,0x60,0x00,0x60,0x00,0xfe,0x1f,0xfe,0x3f,0x60,0x70,0x60,0x60,0x00,0x60,0x00,0x70,0x00,0x38,0x00,0x18,0xe0,0x1f,0xe0,0x3f,0x00,0x70,0x00,0x60,0x00,0x60,0x00,0x70,0x00,0x38,0x00,0x18,0xe0,0x7f,0xe0,0x7f,0xe0,0x07,0xe0,0x0f,0x00,0x1c,0x00,0x38,0x00,0x70,0x00,0x70,0x00,0x38,0x00,0x1c,0xe0,0x0f,0xe0,0x07,0xe0,0x1f,0xe0,0x3f,0x00,0x70,0x00,0x70,0x00,0x38,0x00,0x38,0x00,0x70,0x00,0x70,0xe0,0x3f,0xe0,0x1f,0x60,0x60,0xe0,0x70,0xc0,0x39,0x80,0x1f,0x00,0x0f,0x00,0x0f,0x80,0x1f,0xc0,0x39,0xe0,0x70,0x60,0x60,0xe0,0x01,0xe0,0x03,0x00,0x67,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x76,0xe0,0x3f,0xe0,0x1f,0x60,0x60,0x60,0x70,0x60,0x78,0x60,0x7c,0x60,0x6e,0x60,0x67,0xe0,0x63,0xe0,0x61,0xe0,0x60,0x60,0x60,0x00,0x00,0x00,0x00,0x80,0x01,0xc0,0x03,0x78,0x1e,0x7c,0x3e,0x0e,0x70,0x06,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x7f,0xfe,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x60,0x0e,0x70,0x7c,0x3e,0x78,0x1e,0xc0,0x03,0x80,0x01,0x00,0x00,0x00,0x00,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x18,0x18,0x38,0x1c,0xf0,0x0f,0xe0,0x07,0xc0,0x03,0x80,0x01,0x80,0x01,0xc0,0x03,0xe0,0x07,0xf0,0x0f,0x38,0x1c,0x18,0x18,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01, diff --git a/radio/src/fonts/std/font_10x14_compressed.lbm b/radio/src/fonts/std/font_10x14_compressed.lbm new file mode 100644 index 000000000..54d25b09f --- /dev/null +++ b/radio/src/fonts/std/font_10x14_compressed.lbm @@ -0,0 +1 @@ +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x66,0x00,0x76,0x00,0x3e,0x00,0x1e,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x30,0x00,0x78,0x00,0x78,0x00,0x30,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0xff,0xff,0xff,0xff,0xff,0xff,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x60,0x0e,0x70,0xfc,0x3f,0xf8,0x1f,0xff,0xff,0xff,0xff,0x00,0x00,0x18,0x60,0x1c,0x60,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x00,0xff,0xff,0xff,0xff,0x18,0x78,0x1c,0x7c,0x0e,0x6e,0x06,0x67,0x86,0x63,0xce,0x61,0xfc,0x60,0x78,0x60,0xff,0xff,0xff,0xff,0x06,0x60,0x06,0x60,0x86,0x61,0x86,0x61,0x86,0x61,0xce,0x73,0xfc,0x3f,0x78,0x1e,0xff,0xff,0xff,0xff,0x80,0x07,0xc0,0x07,0xe0,0x06,0x70,0x06,0x38,0x06,0x1c,0x06,0xfe,0x7f,0xfe,0x7f,0xff,0xff,0xff,0xff,0x7e,0x18,0x7e,0x38,0x66,0x70,0x66,0x60,0x66,0x60,0xe6,0x70,0xc6,0x3f,0x86,0x1f,0xff,0xff,0xff,0xff,0xf8,0x1f,0xfc,0x3f,0x8e,0x71,0x86,0x61,0x86,0x61,0x8e,0x73,0x1c,0x3f,0x18,0x1e,0xff,0xff,0xff,0xff,0x06,0x00,0x06,0x00,0x86,0x7f,0xc6,0x7f,0xe6,0x00,0x76,0x00,0x3e,0x00,0x1e,0x00,0xff,0xff,0xff,0xff,0x78,0x1e,0xfc,0x3f,0xce,0x73,0x86,0x61,0x86,0x61,0xce,0x73,0xfc,0x3f,0x78,0x1e,0xff,0xff,0xff,0xff,0x78,0x00,0xfc,0x00,0xce,0x61,0x86,0x71,0x86,0x39,0xce,0x1d,0xfc,0x0f,0xf8,0x07,0xff,0xff,0xff,0xff,0x00,0x00,0x30,0x0c,0x78,0x1e,0x78,0x1e,0x30,0x0c,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0x7f,0xf0,0x7f,0xb8,0x01,0x9c,0x01,0x8e,0x01,0x8e,0x01,0x9c,0x01,0xb8,0x01,0xf0,0x7f,0xe0,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0xce,0x73,0xfc,0x3f,0x78,0x1e,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x0e,0x70,0x1c,0x38,0x18,0x18,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x06,0x60,0x0e,0x70,0x1c,0x38,0x38,0x1c,0xf0,0x0f,0xe0,0x07,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x06,0x00,0x06,0x00,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x86,0x61,0x86,0x61,0x86,0x61,0x8e,0x71,0x9c,0x7f,0x98,0x3f,0xfe,0x7f,0xfe,0x7f,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xfe,0x7f,0xfe,0x7f,0xff,0xff,0xff,0xff,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0xff,0xff,0xff,0xff,0x00,0x18,0x00,0x38,0x00,0x70,0x00,0x60,0x06,0x60,0x06,0x70,0xfe,0x3f,0xfe,0x1f,0x06,0x00,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0x80,0x01,0xc0,0x03,0xe0,0x07,0x70,0x0e,0x38,0x1c,0x1c,0x38,0x0e,0x70,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0xfe,0x7f,0xfe,0x7f,0x1c,0x00,0x38,0x00,0xf0,0x01,0xf0,0x01,0x38,0x00,0x1c,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x70,0x00,0xe0,0x00,0xc0,0x01,0x80,0x03,0x00,0x07,0x00,0x0e,0xfe,0x7f,0xfe,0x7f,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x0e,0x70,0xfc,0x3f,0xf8,0x1f,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0xce,0x01,0xfc,0x00,0x78,0x00,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x66,0x06,0x6e,0x06,0x3c,0x0e,0x38,0xfc,0x7f,0xf8,0x67,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x07,0x86,0x0f,0x86,0x1d,0xce,0x39,0xfc,0x70,0x78,0x60,0x78,0x18,0xfc,0x38,0xce,0x71,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x8e,0x73,0x1c,0x3f,0x18,0x1e,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0xfe,0x1f,0xfe,0x3f,0x00,0x70,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x70,0xfe,0x3f,0xfe,0x1f,0xfe,0x07,0xfe,0x0f,0x00,0x1c,0x00,0x38,0x00,0x70,0x00,0x70,0x00,0x38,0x00,0x1c,0xfe,0x0f,0xfe,0x07,0xfe,0x1f,0xfe,0x3f,0x00,0x70,0x00,0x70,0x00,0x3e,0x00,0x3e,0x00,0x70,0x00,0x70,0xfe,0x3f,0xfe,0x1f,0x1e,0x78,0x3e,0x7c,0x70,0x0e,0xe0,0x07,0xc0,0x03,0xc0,0x03,0xe0,0x07,0x70,0x0e,0x3e,0x7c,0x1e,0x78,0x7e,0x00,0xfe,0x00,0xc0,0x01,0x80,0x03,0x00,0x7f,0x00,0x7f,0x80,0x03,0xc0,0x01,0xfe,0x00,0x7e,0x00,0x06,0x78,0x06,0x7c,0x06,0x6e,0x06,0x67,0x86,0x63,0xc6,0x61,0xe6,0x60,0x76,0x60,0x3e,0x60,0x1e,0x60,0x00,0x18,0x00,0x3c,0x60,0x7e,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0x66,0xc0,0x7f,0x80,0x7f,0xfe,0x7f,0xfe,0x7f,0x80,0x61,0xc0,0x61,0xe0,0x60,0x60,0x60,0x60,0x60,0xe0,0x70,0xc0,0x3f,0x80,0x1f,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x70,0x00,0x38,0x00,0x18,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x60,0x60,0xe0,0x60,0xc0,0x61,0x80,0x61,0xfe,0x7f,0xfe,0x7f,0x80,0x1f,0xc0,0x3f,0xe0,0x76,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0x66,0xc0,0x07,0x80,0x07,0x80,0x01,0x80,0x01,0xf8,0x7f,0xfc,0x7f,0x8e,0x01,0x86,0x01,0x06,0x00,0x0e,0x00,0x1c,0x00,0x18,0x00,0xe0,0x01,0xf0,0x03,0x38,0x67,0x18,0x66,0x18,0x66,0x18,0x66,0x18,0x66,0x18,0x76,0xf8,0x3f,0xf8,0x1f,0xfe,0x7f,0xfe,0x7f,0x80,0x01,0xc0,0x01,0xe0,0x00,0x60,0x00,0x60,0x00,0xe0,0x00,0xc0,0x7f,0x80,0x7f,0xff,0xff,0xff,0xff,0x60,0x60,0x60,0x60,0xe6,0x7f,0xe6,0x7f,0x00,0x60,0x00,0x60,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x18,0x00,0x38,0x00,0x70,0x00,0x60,0x60,0x60,0x60,0x70,0xe6,0x3f,0xe6,0x1f,0xff,0xff,0xfe,0x7f,0xfe,0x7f,0x00,0x06,0x00,0x0f,0x80,0x1f,0xc0,0x39,0xe0,0x70,0x60,0x60,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0xff,0xff,0xff,0xff,0xe0,0x7f,0xe0,0x7f,0x60,0x00,0xe0,0x00,0xc0,0x07,0xc0,0x07,0xe0,0x00,0xe0,0x00,0xc0,0x7f,0x80,0x7f,0xe0,0x7f,0xe0,0x7f,0x80,0x01,0xc0,0x01,0xe0,0x00,0x60,0x00,0x60,0x00,0xe0,0x00,0xc0,0x7f,0x80,0x7f,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xe0,0x70,0xc0,0x3f,0x80,0x1f,0xe0,0x7f,0xe0,0x7f,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0xe0,0x07,0xc0,0x03,0x80,0x01,0x80,0x01,0xc0,0x03,0xe0,0x07,0x60,0x06,0x60,0x06,0x60,0x06,0xc0,0x07,0x80,0x07,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0xe0,0x7f,0x80,0x01,0xc0,0x01,0xe0,0x00,0x60,0x00,0x60,0x00,0xe0,0x00,0xc0,0x01,0x80,0x01,0x80,0x61,0xc0,0x63,0xe0,0x67,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x7e,0x00,0x3c,0x00,0x18,0x60,0x00,0x60,0x00,0xf8,0x1f,0xf8,0x3f,0x60,0x70,0x60,0x60,0x00,0x60,0x00,0x70,0x00,0x38,0x00,0x18,0xe0,0x1f,0xe0,0x3f,0x00,0x70,0x00,0x60,0x00,0x60,0x00,0x70,0x00,0x38,0x00,0x18,0xe0,0x7f,0xe0,0x7f,0xe0,0x07,0xe0,0x0f,0x00,0x1c,0x00,0x38,0x00,0x70,0x00,0x70,0x00,0x38,0x00,0x1c,0xe0,0x0f,0xe0,0x07,0xe0,0x1f,0xe0,0x3f,0x00,0x70,0x00,0x70,0x00,0x38,0x00,0x38,0x00,0x70,0x00,0x70,0xe0,0x3f,0xe0,0x1f,0x60,0x60,0xe0,0x70,0xc0,0x39,0x80,0x1f,0x00,0x0f,0x00,0x0f,0x80,0x1f,0xc0,0x39,0xe0,0x70,0x60,0x60,0xe0,0x01,0xe0,0x03,0x00,0x67,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x76,0xe0,0x3f,0xe0,0x1f,0x60,0x60,0x60,0x70,0x60,0x78,0x60,0x7c,0x60,0x6e,0x60,0x67,0xe0,0x63,0xe0,0x61,0xe0,0x60,0x60,0x60, diff --git a/radio/src/fonts/std/font_10x14_extra.lbm b/radio/src/fonts/std/font_10x14_extra.lbm new file mode 100644 index 000000000..c71947df1 --- /dev/null +++ b/radio/src/fonts/std/font_10x14_extra.lbm @@ -0,0 +1 @@ +0x60,0x00,0x70,0x00,0x38,0x00,0x1c,0x00,0xce,0x7f,0xce,0x7f,0x1c,0x00,0x38,0x00,0x70,0x00,0x60,0x00,0x00,0x06,0x00,0x0e,0x00,0x1c,0x00,0x38,0xfe,0x73,0xfe,0x73,0x00,0x38,0x00,0x1c,0x00,0x0e,0x00,0x06,0x00,0x18,0x00,0x1c,0x00,0x0e,0x18,0x07,0x98,0x03,0xd8,0x01,0xd8,0x00,0x18,0x00,0xf8,0x03,0xf8,0x03,0x18,0x00,0x38,0x00,0x70,0x00,0xe0,0x18,0xc0,0x19,0x80,0x1b,0x00,0x1b,0x00,0x18,0xc0,0x1f,0xc0,0x1f,0xc0,0x1f,0xc0,0x1f,0x00,0x18,0x00,0x1b,0x80,0x1b,0xc0,0x19,0xe0,0x18,0x70,0x00,0x38,0x00,0x18,0x00,0xf8,0x03,0xf8,0x03,0x18,0x00,0xd8,0x00,0xd8,0x01,0x98,0x03,0x18,0x07,0x00,0x0e,0x00,0x1c,0x00,0x18, diff --git a/radio/src/fonts/std/font_cz_04x06.lbm b/radio/src/fonts/std/font_cz_04x06.lbm new file mode 100644 index 000000000..1f8bc43dc --- /dev/null +++ b/radio/src/fonts/std/font_cz_04x06.lbm @@ -0,0 +1 @@ +0x18,0x24,0x16,0x3d,0x7f,0x18,0x24,0x25,0x02,0x01,0x18,0x34,0x2c,0x0a,0x01,0x18,0x34,0x2d,0x0a,0x01,0x24,0x3c,0x22,0x01,0x7f,0x18,0x24,0x24,0x1a,0x01,0x3c,0x04,0x05,0x0a,0x01,0x28,0x2d,0x36,0x15,0x7f,0x1c,0x20,0x22,0x3d,0x7f,0x1c,0x21,0x21,0x3c,0x7f,0x0c,0x50,0x22,0x1d,0x7f,0x38,0x14,0x14,0x3a,0x01,0x7f,0x24,0x3e,0x25,0x7f,0x3c,0x15,0x16,0x2d,0x7f,0x7f,0x0c,0x32,0x0d,0x7f,0x24,0x35,0x2e,0x25,0x7f,0x3e,0x2a,0x2a,0x22,0x01, diff --git a/radio/src/fonts/std/font_cz_05x07.lbm b/radio/src/fonts/std/font_cz_05x07.lbm new file mode 100644 index 000000000..1d275e5ce --- /dev/null +++ b/radio/src/fonts/std/font_cz_05x07.lbm @@ -0,0 +1 @@ +0x20,0x54,0x56,0x55,0x78,0x38,0x45,0x46,0x45,0x20,0x38,0x54,0x56,0x55,0x18,0x38,0x55,0x56,0x55,0x18,0xff,0x44,0x7e,0x41,0xff,0x38,0x44,0x46,0x45,0x38,0x7c,0x09,0x06,0x05,0x08,0x48,0x55,0x56,0x55,0x20,0x3c,0x40,0x42,0x21,0x7c,0x3c,0x40,0x43,0x23,0x7c,0x0c,0x50,0x52,0x51,0x3c,0x78,0x14,0x16,0x15,0x78,0xff,0x44,0x7e,0x45,0xff,0x7c,0x15,0x16,0x35,0x48,0x0c,0x10,0x62,0x11,0x0c,0x44,0x65,0x56,0x4d,0xff,0x7c,0x54,0x56,0x55,0x44,0x1c,0x1c,0x3e,0x7f,0xff,0x22,0x1c,0x41,0x3e,0x00, diff --git a/radio/src/fonts/std/font_cz_08x10.lbm b/radio/src/fonts/std/font_cz_08x10.lbm new file mode 100644 index 000000000..0d2947a6b --- /dev/null +++ b/radio/src/fonts/std/font_cz_08x10.lbm @@ -0,0 +1 @@ +0x00,0x03,0xa0,0x07,0xb0,0x04,0x94,0x04,0x93,0x02,0xf1,0x07,0xe0,0x07,0xff,0x0f,0xc0,0x01,0xe1,0x03,0x33,0x06,0x16,0x04,0x13,0x04,0x31,0x06,0x20,0x02,0xff,0x0f,0xc0,0x01,0xe0,0x03,0xb0,0x06,0x94,0x04,0xb3,0x04,0xe1,0x06,0xc0,0x02,0xff,0x0f,0xc0,0x01,0xe1,0x03,0xb3,0x06,0x96,0x04,0xb3,0x04,0xe1,0x06,0xc0,0x02,0xff,0x0f,0xff,0x0f,0x00,0x04,0x10,0x04,0xf4,0x07,0xf3,0x07,0x01,0x04,0x00,0x04,0xff,0x0f,0xc0,0x01,0xe0,0x03,0x30,0x06,0x14,0x04,0x33,0x06,0xe1,0x03,0xc0,0x01,0xff,0x0f,0x11,0x00,0xf3,0x07,0xe6,0x07,0x33,0x00,0x11,0x00,0x30,0x00,0x20,0x00,0xff,0x0f,0x60,0x02,0xf1,0x06,0x93,0x04,0x96,0x04,0x93,0x04,0xb1,0x07,0x20,0x03,0xff,0x0f,0xf0,0x01,0xf0,0x03,0x00,0x06,0x04,0x04,0x03,0x02,0xf1,0x07,0xf0,0x07,0xff,0x0f,0xf0,0x01,0xf0,0x03,0x02,0x06,0x05,0x04,0x05,0x02,0xf2,0x07,0xf0,0x07,0xff,0x0f,0xf0,0x04,0xf0,0x0c,0x00,0x09,0x04,0x09,0x83,0x0c,0xf1,0x07,0xf0,0x03,0xff,0x0f,0xf0,0x07,0xf8,0x07,0x88,0x00,0x8c,0x00,0x8b,0x00,0x89,0x00,0xf8,0x07,0xf0,0x07,0xff,0x0f,0x08,0x04,0x08,0x04,0xfc,0x07,0xfb,0x07,0x09,0x04,0x08,0x04,0xff,0x0f,0xf8,0x07,0xf9,0x07,0xcb,0x00,0xce,0x00,0xcb,0x01,0x49,0x03,0x78,0x06,0x30,0x04,0x18,0x00,0x18,0x00,0x30,0x00,0xe4,0x07,0xe3,0x07,0x31,0x00,0x18,0x00,0x18,0x00,0x08,0x06,0x09,0x07,0x8b,0x05,0xce,0x04,0x6b,0x04,0x39,0x04,0x18,0x04,0xff,0x0f,0xf8,0x07,0xf8,0x07,0x48,0x04,0x4c,0x04,0x4b,0x04,0x49,0x04,0x08,0x04,0xff,0x0f, diff --git a/radio/src/fonts/std/font_cz_10x14.lbm b/radio/src/fonts/std/font_cz_10x14.lbm new file mode 100644 index 000000000..00aaa41b3 --- /dev/null +++ b/radio/src/fonts/std/font_cz_10x14.lbm @@ -0,0 +1 @@ +0x00,0x18,0x00,0x3c,0x60,0x7e,0x60,0x66,0x68,0x66,0x6c,0x66,0x67,0x66,0xe3,0x66,0xc1,0x7f,0x80,0x7f,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x67,0x60,0x6f,0x60,0x6c,0x60,0x66,0x60,0x63,0x70,0x01,0x38,0x00,0x18,0x80,0x1f,0xc0,0x3f,0xe0,0x76,0x60,0x66,0x68,0x66,0x6c,0x66,0x67,0x66,0xe3,0x66,0xc1,0x07,0x80,0x07,0x80,0x1f,0xc0,0x3f,0xe0,0x76,0x67,0x66,0x6f,0x66,0x6c,0x66,0x66,0x66,0xe3,0x66,0xc1,0x07,0x80,0x07,0xff,0xff,0xff,0xff,0x60,0x60,0x60,0x60,0xe8,0x7f,0xec,0x7f,0x07,0x60,0x03,0x60,0x01,0x00,0xff,0xff,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x68,0x60,0x6c,0x60,0x67,0x60,0xe3,0x70,0xc1,0x3f,0x80,0x1f,0xe0,0x7f,0xe0,0x7f,0x80,0x01,0xc7,0x01,0xef,0x00,0x6c,0x00,0x66,0x00,0xe3,0x00,0xc1,0x01,0x80,0x01,0x80,0x61,0xc0,0x63,0xe0,0x67,0x67,0x66,0x6f,0x66,0x6c,0x66,0x66,0x66,0x63,0x7e,0x01,0x3c,0x00,0x18,0xe0,0x1f,0xe0,0x3f,0x00,0x70,0x00,0x60,0x08,0x60,0x0c,0x70,0x07,0x38,0x03,0x18,0xe1,0x7f,0xe0,0x7f,0xe0,0x1f,0xe0,0x3f,0x00,0x70,0x06,0x60,0x09,0x60,0x09,0x70,0x0f,0x38,0x06,0x18,0xe0,0x7f,0xe0,0x7f,0xe0,0x01,0xe0,0x03,0x00,0x67,0x00,0x66,0x08,0x66,0x0c,0x66,0x07,0x66,0x03,0x76,0xe1,0x3f,0xe0,0x1f,0x80,0x7f,0xc0,0x7f,0xe0,0x06,0x70,0x06,0x38,0x06,0x38,0x06,0x74,0x06,0xe7,0x06,0xc3,0x7f,0x81,0x7f,0xff,0xff,0xff,0xff,0x18,0x60,0x18,0x60,0xfc,0x7f,0xff,0x7f,0x1b,0x60,0x19,0x60,0xff,0xff,0xff,0xff,0xf8,0x7f,0xf8,0x7f,0x18,0x03,0x17,0x03,0x0f,0x07,0x0c,0x0f,0x16,0x1f,0xbb,0x3b,0xf1,0x71,0xe0,0x60,0xf8,0x00,0xf8,0x01,0x80,0x03,0x00,0x07,0x00,0x7e,0x04,0x7e,0x07,0x07,0x83,0x03,0xf9,0x01,0xf8,0x00,0x18,0x70,0x18,0x70,0x18,0x78,0x17,0x7c,0x0f,0x6e,0x0c,0x67,0x96,0x63,0xdb,0x61,0xf9,0x60,0x78,0x60,0xf8,0x7f,0xf8,0x7f,0x18,0x63,0x18,0x63,0x1c,0x63,0x1f,0x63,0x1b,0x63,0x19,0x63,0x18,0x60,0x18,0x60, diff --git a/radio/src/fonts/std/font_de_04x06.lbm b/radio/src/fonts/std/font_de_04x06.lbm new file mode 100644 index 000000000..1d500b394 --- /dev/null +++ b/radio/src/fonts/std/font_de_04x06.lbm @@ -0,0 +1 @@ +0x3d,0x0a,0x0a,0x3d,0x7f,0x18,0x25,0x14,0x3d,0x7f,0x1d,0x22,0x22,0x1d,0x7f,0x18,0x25,0x24,0x19,0x7f,0x1d,0x20,0x20,0x1d,0x7f,0x1a,0x20,0x10,0x3a,0x7f,0x7e,0x05,0x25,0x1a,0x7f, diff --git a/radio/src/fonts/std/font_de_05x07.lbm b/radio/src/fonts/std/font_de_05x07.lbm new file mode 100644 index 000000000..d6b5a02e6 --- /dev/null +++ b/radio/src/fonts/std/font_de_05x07.lbm @@ -0,0 +1 @@ +0x7c,0x13,0x12,0x13,0x7c,0x20,0x55,0x54,0x55,0x78,0x3c,0x43,0x42,0x43,0x3c,0x38,0x45,0x44,0x45,0x38,0x3e,0x41,0x40,0x41,0x3e,0x3c,0x41,0x40,0x21,0x7c,0x7e,0x01,0x49,0x56,0x20, diff --git a/radio/src/fonts/std/font_de_08x10.lbm b/radio/src/fonts/std/font_de_08x10.lbm new file mode 100644 index 000000000..9ad2bbb36 --- /dev/null +++ b/radio/src/fonts/std/font_de_08x10.lbm @@ -0,0 +1 @@ +0xe0,0x07,0xf6,0x07,0x96,0x00,0x88,0x00,0x88,0x00,0x96,0x00,0xf6,0x07,0xe0,0x07,0x00,0x03,0xa0,0x07,0xb6,0x04,0x96,0x04,0x90,0x02,0xf6,0x07,0xe6,0x07,0xff,0x0f,0xe0,0x01,0xf6,0x03,0x16,0x06,0x08,0x04,0x08,0x04,0x16,0x06,0xf6,0x03,0xe0,0x01,0xc0,0x01,0xe6,0x03,0x36,0x06,0x10,0x04,0x36,0x06,0xe6,0x03,0xc0,0x01,0xff,0x0f,0xf8,0x01,0xfb,0x03,0x03,0x06,0x00,0x04,0x03,0x04,0x03,0x06,0xf8,0x03,0xf8,0x01,0xf0,0x01,0xf6,0x03,0x06,0x06,0x00,0x04,0x06,0x02,0xf6,0x07,0xf0,0x07,0xff,0x0f,0xf0,0x07,0xf8,0x07,0x8c,0x00,0x86,0x00,0x86,0x00,0x8c,0x00,0xf8,0x07,0xf0,0x07, diff --git a/radio/src/fonts/std/font_de_10x14.lbm b/radio/src/fonts/std/font_de_10x14.lbm new file mode 100644 index 000000000..dd114326a --- /dev/null +++ b/radio/src/fonts/std/font_de_10x14.lbm @@ -0,0 +1 @@ +0x80,0x7f,0xc2,0x7f,0xe2,0x06,0x70,0x06,0x38,0x06,0x38,0x06,0x70,0x06,0xe2,0x06,0xc2,0x7f,0x80,0x7f,0x00,0x18,0x06,0x3c,0x66,0x7e,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe6,0x66,0xc6,0x7f,0x80,0x7f,0xe0,0x1f,0xf2,0x3f,0x3a,0x70,0x18,0x60,0x18,0x60,0x18,0x60,0x18,0x60,0x3a,0x70,0xf2,0x3f,0xe0,0x1f,0x80,0x1f,0xc6,0x3f,0xe6,0x70,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xe6,0x70,0xc6,0x3f,0x80,0x1f,0xf8,0x1f,0xfa,0x3f,0x02,0x70,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x02,0x70,0xfa,0x3f,0xf8,0x1f,0xe0,0x1f,0xe6,0x3f,0x06,0x70,0x00,0x60,0x00,0x60,0x00,0x70,0x00,0x38,0x06,0x18,0xe6,0x7f,0xe0,0x7f,0xf8,0x7f,0xfc,0x7f,0x0e,0x00,0x06,0x00,0x66,0x30,0x6e,0x30,0xfc,0x38,0xd8,0x1f,0x00,0x0f,0xff,0xff, diff --git a/radio/src/fonts/std/font_es_04x06.lbm b/radio/src/fonts/std/font_es_04x06.lbm new file mode 100644 index 000000000..dbf678113 --- /dev/null +++ b/radio/src/fonts/std/font_es_04x06.lbm @@ -0,0 +1 @@ +0x3e,0x09,0x12,0x3d,0x7f,0x3a,0x11,0x0a,0x39,0x7f, diff --git a/radio/src/fonts/std/font_es_05x07.lbm b/radio/src/fonts/std/font_es_05x07.lbm new file mode 100644 index 000000000..99f4cd1a2 --- /dev/null +++ b/radio/src/fonts/std/font_es_05x07.lbm @@ -0,0 +1 @@ +0x7c,0x0a,0x11,0x22,0x7d,0x78,0x12,0x09,0x0a,0x71, diff --git a/radio/src/fonts/std/font_es_08x10.lbm b/radio/src/fonts/std/font_es_08x10.lbm new file mode 100644 index 000000000..57a5a829c --- /dev/null +++ b/radio/src/fonts/std/font_es_08x10.lbm @@ -0,0 +1 @@ +0xf0,0x07,0xf4,0x07,0x66,0x00,0xc2,0x00,0x86,0x01,0x04,0x07,0xf6,0x07,0xf2,0x07,0xf4,0x07,0xf6,0x07,0x22,0x00,0x16,0x00,0x34,0x00,0xe6,0x07,0xc2,0x07,0xff,0x0f, diff --git a/radio/src/fonts/std/font_es_10x14.lbm b/radio/src/fonts/std/font_es_10x14.lbm new file mode 100644 index 000000000..92d200c51 --- /dev/null +++ b/radio/src/fonts/std/font_es_10x14.lbm @@ -0,0 +1 @@ +0xe8,0x7f,0xec,0x7f,0xc6,0x01,0x82,0x03,0x04,0x07,0x08,0x0e,0x0c,0x1c,0x06,0x38,0xe2,0x7f,0xe0,0x7f,0xe0,0x7f,0xe8,0x7f,0x8c,0x01,0xc6,0x01,0xe2,0x00,0x64,0x00,0x68,0x00,0xec,0x00,0xc6,0x7f,0x82,0x7f, diff --git a/radio/src/fonts/std/font_fr_04x06.lbm b/radio/src/fonts/std/font_fr_04x06.lbm new file mode 100644 index 000000000..93aa19910 --- /dev/null +++ b/radio/src/fonts/std/font_fr_04x06.lbm @@ -0,0 +1 @@ +0x18,0x36,0x2d,0x08,0x7f,0x18,0x35,0x2e,0x08,0x7f,0x18,0x25,0x16,0x3c,0x7f,0x7f,0x26,0x3d,0x22,0x7f,0x7f,0x4c,0x32,0x12,0x7f, diff --git a/radio/src/fonts/std/font_fr_05x07.lbm b/radio/src/fonts/std/font_fr_05x07.lbm new file mode 100644 index 000000000..87ec0ca86 --- /dev/null +++ b/radio/src/fonts/std/font_fr_05x07.lbm @@ -0,0 +1 @@ +0x38,0x54,0x56,0x55,0x18,0x38,0x55,0x56,0x54,0x18,0x20,0x55,0x56,0x54,0x78,0xff,0x4a,0x79,0x42,0xff,0x1c,0xa2,0x62,0x22,0x10, diff --git a/radio/src/fonts/std/font_fr_08x10.lbm b/radio/src/fonts/std/font_fr_08x10.lbm new file mode 100644 index 000000000..a64ffcd56 --- /dev/null +++ b/radio/src/fonts/std/font_fr_08x10.lbm @@ -0,0 +1 @@ +0xc0,0x01,0xe0,0x03,0xb4,0x06,0x96,0x04,0xb3,0x04,0xe1,0x06,0xc0,0x02,0xff,0x0f,0xc0,0x01,0xe0,0x03,0xb1,0x06,0x93,0x04,0xb6,0x04,0xe4,0x06,0xc0,0x02,0xff,0x0f,0x00,0x03,0xa0,0x07,0xb1,0x04,0x93,0x04,0x96,0x02,0xf4,0x07,0xe0,0x07,0xff,0x0f,0xff,0x0f,0x04,0x04,0x16,0x04,0xf3,0x07,0xf6,0x07,0x04,0x04,0x00,0x04,0xff,0x0f,0xe0,0x00,0xf0,0x01,0x18,0x0b,0x08,0x0e,0x08,0x06,0x18,0x03,0x10,0x01,0xff,0x0f, diff --git a/radio/src/fonts/std/font_fr_10x14.lbm b/radio/src/fonts/std/font_fr_10x14.lbm new file mode 100644 index 000000000..49e9c13cc --- /dev/null +++ b/radio/src/fonts/std/font_fr_10x14.lbm @@ -0,0 +1 @@ +0x80,0x1f,0xc0,0x3f,0xe0,0x76,0x68,0x66,0x6c,0x66,0x66,0x66,0x62,0x66,0xe0,0x66,0xc0,0x07,0x80,0x07,0x80,0x1f,0xc0,0x3f,0xe0,0x76,0x62,0x66,0x66,0x66,0x6c,0x66,0x68,0x66,0xe0,0x66,0xc0,0x07,0x80,0x07,0x00,0x18,0x00,0x3c,0x60,0x7e,0x62,0x66,0x66,0x66,0x6c,0x66,0x68,0x66,0xe0,0x66,0xc0,0x7f,0x80,0x7f,0xff,0xff,0xff,0xff,0x98,0x61,0x98,0x61,0x86,0x7f,0x86,0x7f,0x18,0x60,0x18,0x60,0xff,0xff,0xff,0xff,0xe0,0x07,0xf0,0x0f,0x38,0x9c,0x18,0xd8,0x18,0x78,0x18,0x38,0x18,0x18,0x18,0x1c,0x00,0x0e,0x00,0x06, diff --git a/radio/src/fonts/std/font_it_04x06.lbm b/radio/src/fonts/std/font_it_04x06.lbm new file mode 100644 index 000000000..dd424553b --- /dev/null +++ b/radio/src/fonts/std/font_it_04x06.lbm @@ -0,0 +1 @@ +0x18,0x25,0x16,0x3c,0x7f,0x1c,0x21,0x22,0x3c,0x7f, diff --git a/radio/src/fonts/std/font_it_05x07.lbm b/radio/src/fonts/std/font_it_05x07.lbm new file mode 100644 index 000000000..17d52fd9b --- /dev/null +++ b/radio/src/fonts/std/font_it_05x07.lbm @@ -0,0 +1 @@ +0x20,0x55,0x56,0x54,0x78,0x3c,0x41,0x42,0x20,0x7c, diff --git a/radio/src/fonts/std/font_it_08x10.lbm b/radio/src/fonts/std/font_it_08x10.lbm new file mode 100644 index 000000000..4572dc5dd --- /dev/null +++ b/radio/src/fonts/std/font_it_08x10.lbm @@ -0,0 +1 @@ +0x00,0x03,0xa0,0x07,0xb2,0x04,0x96,0x04,0x94,0x02,0xf0,0x07,0xe0,0x07,0xff,0x0f,0xf0,0x01,0xf0,0x03,0x02,0x06,0x06,0x04,0x04,0x02,0xf0,0x07,0xf0,0x07,0xff,0x0f, diff --git a/radio/src/fonts/std/font_it_10x14.lbm b/radio/src/fonts/std/font_it_10x14.lbm new file mode 100644 index 000000000..b25268b4e --- /dev/null +++ b/radio/src/fonts/std/font_it_10x14.lbm @@ -0,0 +1 @@ +0x00,0x18,0x00,0x3c,0x60,0x7e,0x62,0x66,0x66,0x66,0x6c,0x66,0x68,0x66,0xe0,0x66,0xc0,0x7f,0x80,0x7f,0xe0,0x1f,0xe0,0x3f,0x00,0x70,0x02,0x60,0x06,0x60,0x0c,0x60,0x08,0x60,0x00,0x30,0xe0,0x7f,0xe0,0x7f, diff --git a/radio/src/fonts/std/font_pl_04x06.lbm b/radio/src/fonts/std/font_pl_04x06.lbm new file mode 100644 index 000000000..65e843759 --- /dev/null +++ b/radio/src/fonts/std/font_pl_04x06.lbm @@ -0,0 +1 @@ +0x18,0x24,0x14,0x3c,0x40,0x18,0x24,0x24,0x02,0x01,0x18,0x34,0x2c,0x48,0x7f,0x00,0x29,0x3f,0x24,0x7f,0x3c,0x06,0x05,0x38,0x7f,0x18,0x26,0x25,0x18,0x7f,0x28,0x2c,0x36,0x15,0x7f,0x24,0x35,0x2d,0x24,0x7f,0x24,0x34,0x2e,0x25,0x7f,0x3e,0x09,0x69,0x5e,0x7f,0x1c,0x22,0x22,0x15,0x7f,0x3f,0x25,0x65,0x41,0x7f,0x3f,0x28,0x24,0x24,0x7f,0x3e,0x0c,0x11,0x3e,0x7f,0x1c,0x22,0x22,0x1d,0x7f,0x24,0x2a,0x2b,0x12,0x7f,0x22,0x33,0x2a,0x26,0x7f,0x22,0x32,0x2b,0x26,0x7f, diff --git a/radio/src/fonts/std/font_pl_05x07.lbm b/radio/src/fonts/std/font_pl_05x07.lbm new file mode 100644 index 000000000..afde4f063 --- /dev/null +++ b/radio/src/fonts/std/font_pl_05x07.lbm @@ -0,0 +1 @@ +0x20,0x54,0x54,0xd4,0xb8,0x38,0x44,0x46,0x45,0x28,0x38,0x54,0x54,0xd4,0x98,0xff,0x49,0x7f,0x44,0xff,0x7c,0x08,0x06,0x05,0x78,0x38,0x44,0x46,0x45,0x38,0x48,0x54,0x56,0x55,0x20,0x44,0x65,0x55,0x4c,0x44,0x44,0x64,0x56,0x4d,0x44,0x7e,0x09,0x09,0xc9,0xbe,0x3c,0x42,0x42,0x43,0x24,0x7f,0x49,0x49,0xc9,0x81,0x08,0x7f,0x44,0x44,0x40,0x7e,0x08,0x12,0x21,0x7e,0x3c,0x42,0x42,0x43,0x3c,0x4c,0x52,0x52,0x53,0x24,0x62,0x52,0x4b,0x4a,0x46,0x62,0x52,0x4a,0x4b,0x46,0x1c,0x1c,0x3e,0x7f,0xff,0x22,0x1c,0x41,0x3e,0x00, diff --git a/radio/src/fonts/std/font_pl_08x10.lbm b/radio/src/fonts/std/font_pl_08x10.lbm new file mode 100644 index 000000000..5d023a131 --- /dev/null +++ b/radio/src/fonts/std/font_pl_08x10.lbm @@ -0,0 +1 @@ +0x00,0x03,0xa0,0x07,0xb0,0x04,0x90,0x04,0x90,0x02,0xf0,0x0f,0xe0,0x0b,0xff,0x0f,0xc0,0x01,0xe0,0x03,0x30,0x06,0x14,0x04,0x13,0x04,0x31,0x06,0x20,0x02,0xff,0x0f,0xc0,0x01,0xe0,0x03,0xb0,0x06,0x90,0x04,0xb0,0x0c,0xe0,0x0a,0xc0,0x02,0xff,0x0f,0xff,0x0f,0x40,0x04,0x42,0x04,0xfe,0x07,0xfe,0x07,0x20,0x04,0x20,0x04,0xff,0x0f,0xf0,0x07,0xf0,0x07,0x20,0x00,0x14,0x00,0x33,0x00,0xe1,0x07,0xc0,0x07,0xff,0x0f,0xc0,0x01,0xe0,0x03,0x30,0x06,0x14,0x04,0x33,0x06,0xe1,0x03,0xc0,0x01,0xff,0x0f,0x60,0x02,0xf0,0x06,0x90,0x04,0x94,0x04,0x93,0x04,0xb1,0x07,0x20,0x03,0xff,0x0f,0xff,0x0f,0x10,0x06,0x10,0x07,0x96,0x05,0xd6,0x04,0x70,0x04,0x30,0x04,0xff,0x0f,0xff,0x0f,0x10,0x06,0x10,0x07,0x90,0x05,0xd4,0x04,0x73,0x04,0x31,0x04,0xff,0x0f,0xf0,0x07,0xf8,0x07,0x8c,0x00,0x86,0x00,0x86,0x00,0x8c,0x00,0xf8,0x0f,0xf0,0x0b,0xf0,0x01,0xf8,0x03,0x0c,0x06,0x04,0x04,0x06,0x04,0x05,0x04,0x0c,0x06,0x18,0x03,0xfe,0x07,0xfe,0x07,0x22,0x04,0x22,0x04,0x22,0x04,0x22,0x0c,0x02,0x08,0xff,0x0f,0x80,0x00,0xfe,0x07,0xfe,0x07,0x40,0x04,0x40,0x04,0x20,0x04,0x20,0x04,0x00,0x04,0xfc,0x07,0xfc,0x07,0x38,0x00,0x74,0x00,0xe3,0x00,0xc1,0x01,0xfc,0x07,0xfc,0x07,0xe0,0x01,0xf0,0x03,0x18,0x06,0x08,0x04,0x0c,0x04,0x1b,0x06,0xf1,0x03,0xe0,0x01,0x30,0x02,0x78,0x06,0x48,0x04,0x4c,0x04,0x4b,0x04,0x49,0x04,0xd8,0x07,0x90,0x03,0x08,0x06,0x08,0x07,0x8b,0x05,0xcb,0x04,0x68,0x04,0x38,0x04,0x18,0x04,0xff,0x0f,0x08,0x06,0x08,0x07,0x88,0x05,0xcc,0x04,0x6b,0x04,0x39,0x04,0x18,0x04,0xff,0x0f, diff --git a/radio/src/fonts/std/font_pl_10x14.lbm b/radio/src/fonts/std/font_pl_10x14.lbm new file mode 100644 index 000000000..fc7bd1e59 --- /dev/null +++ b/radio/src/fonts/std/font_pl_10x14.lbm @@ -0,0 +1 @@ +0x00,0x18,0x00,0x3c,0x60,0x7e,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0xe6,0xc0,0xbf,0x80,0xbf,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x68,0x60,0x6c,0x60,0x67,0x60,0x63,0x70,0x01,0x38,0x00,0x18,0x80,0x1f,0xc0,0x3f,0xe0,0x76,0x60,0x66,0x60,0x66,0x60,0x66,0x60,0x66,0xe0,0xe6,0xc0,0x87,0x80,0x87,0xff,0xff,0xff,0xff,0x06,0x61,0x06,0x61,0xfe,0x7f,0xfe,0x7f,0x80,0x60,0x80,0x60,0xff,0xff,0xff,0xff,0xe0,0x7f,0xe0,0x7f,0x80,0x01,0xc0,0x01,0xe8,0x00,0x6c,0x00,0x67,0x00,0xe3,0x00,0xc1,0x7f,0x80,0x7f,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x68,0x60,0x6c,0x60,0x67,0x60,0xe3,0x70,0xc1,0x3f,0x80,0x1f,0x80,0x61,0xc0,0x63,0xe0,0x67,0x60,0x66,0x68,0x66,0x6c,0x66,0x67,0x66,0x63,0x7e,0x01,0x3c,0x00,0x18,0x60,0x60,0x60,0x70,0x60,0x78,0x66,0x7c,0x66,0x6e,0x60,0x67,0xe0,0x63,0xe0,0x61,0xe0,0x60,0x60,0x60,0x60,0x60,0x60,0x70,0x60,0x78,0x60,0x7c,0x68,0x6e,0x6c,0x67,0xe7,0x63,0xe3,0x61,0xe1,0x60,0x60,0x60,0xe0,0x7f,0xf0,0x7f,0xb8,0x01,0x9c,0x01,0x8e,0x01,0x8e,0x01,0x9c,0x01,0xb8,0x61,0xf0,0xff,0xe0,0xbf,0xe0,0x1f,0xf0,0x3f,0x38,0x70,0x18,0x60,0x1c,0x60,0x1f,0x60,0x1b,0x60,0x39,0x70,0x70,0x38,0x60,0x18,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x06,0xa0,0x06,0x80,0x00,0x06,0xfe,0x7f,0xfe,0x7f,0x00,0x63,0x80,0x61,0x80,0x61,0xc0,0x60,0xc0,0x60,0x60,0x60,0x60,0x60,0xf8,0x7f,0xf8,0x7f,0xe0,0x00,0xc0,0x01,0x80,0x03,0x04,0x07,0x07,0x0e,0x03,0x1c,0xf9,0x7f,0xf8,0x7f,0xe0,0x1f,0xf0,0x3f,0x38,0x70,0x18,0x60,0x1c,0x60,0x1f,0x60,0x1b,0x60,0x39,0x70,0xf0,0x3f,0xe0,0x1f,0xe0,0x18,0xf0,0x39,0xb8,0x73,0x18,0x63,0x1c,0x63,0x1f,0x63,0x1b,0x63,0x39,0x77,0x70,0x3e,0x60,0x1c,0x18,0x70,0x18,0x78,0x18,0x7c,0x18,0x6e,0x1b,0x67,0x9b,0x63,0xd8,0x61,0xf8,0x60,0x78,0x60,0x38,0x60,0x18,0x70,0x18,0x78,0x18,0x7c,0x18,0x6e,0x18,0x67,0x9c,0x63,0xdf,0x61,0xfb,0x60,0x79,0x60,0x38,0x60, diff --git a/radio/src/fonts/std/font_pt_04x06.lbm b/radio/src/fonts/std/font_pt_04x06.lbm new file mode 100644 index 000000000..bb2db6d13 --- /dev/null +++ b/radio/src/fonts/std/font_pt_04x06.lbm @@ -0,0 +1 @@ +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, diff --git a/radio/src/fonts/std/font_pt_05x07.lbm b/radio/src/fonts/std/font_pt_05x07.lbm new file mode 100644 index 000000000..162b0e4b3 --- /dev/null +++ b/radio/src/fonts/std/font_pt_05x07.lbm @@ -0,0 +1 @@ +0x78,0x14,0x16,0x15,0x78,0x20,0x54,0x56,0x55,0x78,0x78,0x16,0x15,0x16,0x78,0x20,0x56,0x55,0x56,0x78,0x7a,0x15,0x16,0x15,0x78,0x20,0x56,0x55,0x56,0x79,0x78,0x15,0x16,0x14,0x78,0x20,0x55,0x56,0x54,0x78,0x1e,0xa1,0x61,0x21,0x12,0x1c,0xa2,0x62,0x22,0x10,0x7c,0x54,0x56,0x55,0x44,0x38,0x54,0x56,0x55,0x18,0x7c,0x56,0x55,0x56,0x44,0x38,0x56,0x55,0x56,0x18,0xff,0x44,0x7e,0x45,0xff,0xff,0x4c,0x7a,0x40,0xff,0x3c,0x42,0x42,0x43,0x3c,0x38,0x44,0x46,0x45,0x38,0x3c,0x42,0x43,0x42,0x3c,0x38,0x44,0x46,0x44,0x38,0x3c,0x43,0x42,0x43,0x3c,0x38,0x46,0x44,0x46,0x38,0x3c,0x40,0x42,0x41,0x3c,0x38,0x40,0x44,0x22,0x78, diff --git a/radio/src/fonts/std/font_pt_08x10.lbm b/radio/src/fonts/std/font_pt_08x10.lbm new file mode 100644 index 000000000..d7a8a8a35 --- /dev/null +++ b/radio/src/fonts/std/font_pt_08x10.lbm @@ -0,0 +1 @@ +0xf0,0x07,0xf8,0x07,0x88,0x00,0x8c,0x00,0x8b,0x00,0x89,0x00,0xf8,0x07,0xf0,0x07,0x00,0x03,0xa0,0x07,0xb0,0x04,0x90,0x04,0x98,0x02,0xf6,0x07,0xe2,0x07,0xff,0x0f,0xf0,0x07,0xfa,0x07,0x8b,0x00,0x89,0x00,0x89,0x00,0x8b,0x00,0xfa,0x07,0xf0,0x07,0x00,0x03,0xa4,0x07,0xb6,0x04,0x93,0x04,0x96,0x02,0xf4,0x07,0xe0,0x07,0xff,0x0f,0xf0,0x07,0xfa,0x07,0x89,0x00,0x89,0x00,0x8b,0x00,0x8a,0x00,0xfa,0x07,0xf1,0x07,0x00,0x03,0xa0,0x07,0xb4,0x04,0x92,0x04,0x96,0x02,0xf4,0x07,0xe2,0x07,0xff,0x0f,0xf0,0x07,0xf8,0x07,0x89,0x00,0x8b,0x00,0x8c,0x00,0x88,0x00,0xf8,0x07,0xf0,0x07,0x00,0x03,0xa0,0x07,0xb2,0x04,0x96,0x04,0x98,0x02,0xf0,0x07,0xe0,0x07,0xff,0x0f,0xf8,0x00,0xfc,0x01,0x8e,0x0b,0x06,0x0f,0x02,0x06,0x02,0x02,0x06,0x03,0x04,0x01,0xe0,0x00,0xf0,0x01,0x18,0x0b,0x08,0x0e,0x08,0x06,0x18,0x03,0x10,0x01,0xff,0x0f,0xf8,0x07,0xf8,0x07,0x48,0x04,0x4c,0x04,0x4b,0x04,0x49,0x04,0x08,0x04,0xff,0x0f,0xc0,0x01,0xe0,0x03,0xb0,0x06,0x9c,0x04,0xb6,0x04,0xe2,0x06,0xc0,0x02,0xff,0x0f,0xf8,0x07,0xfa,0x07,0x4b,0x04,0x49,0x04,0x49,0x04,0x4b,0x04,0x0a,0x04,0xff,0x0f,0xc0,0x01,0xe4,0x03,0xb6,0x06,0x93,0x04,0xb6,0x04,0xe4,0x06,0xc0,0x02,0xff,0x0f,0xff,0x0f,0x08,0x04,0x08,0x04,0xfc,0x07,0xfb,0x07,0x09,0x04,0x08,0x04,0xff,0x0f,0xff,0x0f,0x00,0x04,0x10,0x04,0xf4,0x07,0xf3,0x07,0x01,0x04,0x00,0x04,0xff,0x0f,0xe0,0x01,0xf0,0x03,0x18,0x06,0x08,0x04,0x0c,0x04,0x1b,0x06,0xf1,0x03,0xe0,0x01,0xc0,0x01,0xe0,0x03,0x30,0x06,0x18,0x04,0x36,0x06,0xe2,0x03,0xc0,0x01,0xff,0x0f,0xe0,0x01,0xf2,0x03,0x1b,0x06,0x09,0x04,0x09,0x04,0x1b,0x06,0xf2,0x03,0xe0,0x01,0xc0,0x01,0xe4,0x03,0x36,0x06,0x13,0x04,0x36,0x06,0xe4,0x03,0xc0,0x01,0xff,0x0f,0xe2,0x01,0xf1,0x03,0x19,0x06,0x0b,0x04,0x0a,0x04,0x1a,0x06,0xf1,0x03,0xe0,0x01,0xc0,0x01,0xe4,0x03,0x32,0x06,0x16,0x04,0x34,0x06,0xe2,0x03,0xc0,0x01,0xff,0x0f,0xfc,0x01,0xfc,0x03,0x00,0x06,0x04,0x04,0x03,0x04,0x01,0x06,0xfc,0x03,0xfc,0x01,0xf0,0x01,0xf0,0x03,0x00,0x06,0x04,0x04,0x03,0x02,0xf1,0x07,0xf0,0x07,0xff,0x0f, diff --git a/radio/src/fonts/std/font_pt_10x14.lbm b/radio/src/fonts/std/font_pt_10x14.lbm new file mode 100644 index 000000000..df7af948b --- /dev/null +++ b/radio/src/fonts/std/font_pt_10x14.lbm @@ -0,0 +1 @@ +0x80,0x7f,0xc0,0x7f,0xe0,0x06,0x70,0x06,0x38,0x06,0x38,0x06,0x74,0x06,0xe6,0x06,0xc3,0x7f,0x81,0x7f,0x00,0x18,0x00,0x3c,0x60,0x7e,0x60,0x66,0x60,0x66,0x68,0x66,0x6c,0x66,0xe6,0x66,0xc2,0x7f,0x80,0x7f,0x80,0x7f,0xc0,0x7f,0xe4,0x06,0x76,0x06,0x3b,0x06,0x3b,0x06,0x76,0x06,0xe4,0x06,0xc0,0x7f,0x80,0x7f,0x00,0x18,0x00,0x3c,0x60,0x7e,0x68,0x66,0x6c,0x66,0x66,0x66,0x6c,0x66,0xe8,0x66,0xc0,0x7f,0x80,0x7f,0x80,0x7f,0xc2,0x7f,0xe1,0x06,0x71,0x06,0x3b,0x06,0x3a,0x06,0x72,0x06,0xe1,0x06,0xc0,0x7f,0x80,0x7f,0x00,0x18,0x00,0x3c,0x68,0x7e,0x64,0x66,0x64,0x66,0x6c,0x66,0x68,0x66,0xe8,0x66,0xc4,0x7f,0x80,0x7f,0x81,0x7f,0xc3,0x7f,0xe6,0x06,0x74,0x06,0x38,0x06,0x38,0x06,0x70,0x06,0xe0,0x06,0xc0,0x7f,0x80,0x7f,0x00,0x18,0x00,0x3c,0x60,0x7e,0x62,0x66,0x66,0x66,0x6c,0x66,0x68,0x66,0xe0,0x66,0xc0,0x7f,0x80,0x7f,0xf8,0x03,0xfc,0x07,0x0e,0x4e,0x06,0x6c,0x06,0x3c,0x06,0x1c,0x06,0x0c,0x0e,0x0e,0x1c,0x07,0x18,0x03,0xf0,0x03,0xf8,0x07,0x1c,0x4e,0x0c,0x6c,0x0c,0x3c,0x0c,0x1c,0x0c,0x0c,0x0c,0x0e,0x00,0x07,0x00,0x03,0xf8,0x7f,0xf8,0x7f,0x18,0x63,0x18,0x63,0x1c,0x63,0x1e,0x63,0x1b,0x63,0x19,0x63,0x18,0x60,0x18,0x60,0x80,0x1f,0xc0,0x3f,0xe0,0x76,0x60,0x66,0x68,0x66,0x6c,0x66,0x66,0x66,0xe2,0x66,0xc0,0x07,0x80,0x07,0xf0,0x7f,0xf4,0x7f,0x36,0x66,0x33,0x66,0x31,0x66,0x33,0x66,0x36,0x66,0x34,0x66,0x30,0x60,0x30,0x60,0x80,0x1f,0xc0,0x3f,0xe8,0x76,0x6c,0x66,0x66,0x66,0x6c,0x66,0x68,0x66,0xe0,0x66,0xc0,0x07,0x80,0x07,0xff,0xff,0xff,0xff,0x30,0x60,0x30,0x60,0xf4,0x7f,0xf6,0x7f,0x33,0x60,0x31,0x60,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x60,0x60,0x60,0x60,0xe8,0x7f,0xec,0x7f,0x06,0x60,0x02,0x60,0xff,0xff,0xff,0xff,0xe0,0x1f,0xf0,0x3f,0x38,0x70,0x18,0x60,0x1c,0x60,0x1e,0x60,0x1b,0x60,0x39,0x70,0xf0,0x3f,0xe0,0x1f,0x80,0x1f,0xc0,0x3f,0xe0,0x70,0x60,0x60,0x68,0x60,0x6c,0x60,0x66,0x60,0xe2,0x70,0xc0,0x3f,0x80,0x1f,0xc0,0x1f,0xe0,0x3f,0x74,0x70,0x36,0x60,0x33,0x60,0x33,0x60,0x36,0x60,0x74,0x70,0xe0,0x3f,0xc0,0x1f,0x80,0x1f,0xc0,0x3f,0xe8,0x70,0x6c,0x60,0x66,0x60,0x6c,0x60,0x68,0x60,0xe0,0x70,0xc0,0x3f,0x80,0x1f,0xe0,0x1f,0xf2,0x3f,0x39,0x70,0x19,0x60,0x1b,0x60,0x1a,0x60,0x1a,0x60,0x39,0x70,0xf0,0x3f,0xe0,0x1f,0x80,0x1f,0xc8,0x3f,0xe4,0x70,0x64,0x60,0x6c,0x60,0x68,0x60,0x68,0x60,0xe4,0x70,0xc0,0x3f,0x80,0x1f,0xf8,0x1f,0xf8,0x3f,0x00,0x70,0x00,0x60,0x04,0x60,0x06,0x60,0x03,0x60,0x01,0x70,0xf8,0x3f,0xf8,0x1f,0xe0,0x1f,0xe0,0x3f,0x00,0x70,0x00,0x60,0x10,0x60,0x18,0x70,0x0c,0x38,0x04,0x18,0xe0,0x7f,0xe0,0x7f, diff --git a/radio/src/fonts/std/font_se_04x06.lbm b/radio/src/fonts/std/font_se_04x06.lbm new file mode 100644 index 000000000..2e6fe90c6 --- /dev/null +++ b/radio/src/fonts/std/font_se_04x06.lbm @@ -0,0 +1 @@ +0x18,0x25,0x15,0x3c,0x7f,0x18,0x25,0x14,0x3d,0x7f,0x18,0x25,0x24,0x19,0x7f,0x3c,0x0b,0x0b,0x3c,0x7f,0x3d,0x0a,0x0a,0x3d,0x7f,0x1d,0x22,0x22,0x1d,0x7f, diff --git a/radio/src/fonts/std/font_se_05x07.lbm b/radio/src/fonts/std/font_se_05x07.lbm new file mode 100644 index 000000000..8d767a82b --- /dev/null +++ b/radio/src/fonts/std/font_se_05x07.lbm @@ -0,0 +1 @@ +0x20,0x54,0x56,0x54,0x78,0x20,0x56,0x54,0x56,0x78,0x38,0x46,0x44,0x46,0x38,0x7c,0x13,0x13,0x12,0x7c,0x7c,0x13,0x12,0x13,0x7c,0x3c,0x43,0x42,0x43,0x3c, diff --git a/radio/src/fonts/std/font_se_08x10.lbm b/radio/src/fonts/std/font_se_08x10.lbm new file mode 100644 index 000000000..2fc6f89ee --- /dev/null +++ b/radio/src/fonts/std/font_se_08x10.lbm @@ -0,0 +1 @@ +0x00,0x03,0xa0,0x07,0xb4,0x04,0x9a,0x04,0x9a,0x02,0xf4,0x07,0xe0,0x07,0xff,0x0f,0x00,0x03,0xa0,0x07,0xb6,0x04,0x96,0x04,0x90,0x02,0xf6,0x07,0xe6,0x07,0xff,0x0f,0xc0,0x01,0xe6,0x03,0x36,0x06,0x10,0x04,0x36,0x06,0xe6,0x03,0xc0,0x01,0xff,0x0f,0xe0,0x07,0xf0,0x07,0x9c,0x00,0x9a,0x00,0x9a,0x00,0x9c,0x00,0xf0,0x07,0xe0,0x07,0xe0,0x07,0xf6,0x07,0x96,0x00,0x88,0x00,0x88,0x00,0x96,0x00,0xf6,0x07,0xe0,0x07,0xe0,0x01,0xf6,0x03,0x16,0x06,0x08,0x04,0x08,0x04,0x16,0x06,0xf6,0x03,0xe0,0x01, diff --git a/radio/src/fonts/std/font_se_10x14.lbm b/radio/src/fonts/std/font_se_10x14.lbm new file mode 100644 index 000000000..20ce6d8df --- /dev/null +++ b/radio/src/fonts/std/font_se_10x14.lbm @@ -0,0 +1 @@ +0x00,0x18,0x00,0x3c,0x60,0x7e,0x60,0x66,0x6e,0x66,0x6a,0x66,0x6e,0x66,0xe0,0x66,0xc0,0x7f,0x80,0x7f,0x00,0x18,0x00,0x3c,0x6c,0x7e,0x6c,0x66,0x60,0x66,0x60,0x66,0x6c,0x66,0xec,0x66,0xc0,0x7f,0x80,0x7f,0x80,0x1f,0xc0,0x3f,0xec,0x70,0x6c,0x60,0x60,0x60,0x60,0x60,0x6c,0x60,0xec,0x70,0xc0,0x3f,0x80,0x1f,0xe0,0x7f,0xf0,0x7f,0xb8,0x01,0x9e,0x01,0x9a,0x01,0x9a,0x01,0x9e,0x01,0xb8,0x01,0xf0,0x7f,0xe0,0x7f,0xe0,0x7f,0xf6,0x7f,0xba,0x01,0x9c,0x01,0x8e,0x01,0x8e,0x01,0x9c,0x01,0xba,0x01,0xf6,0x7f,0xe0,0x7f,0xe0,0x1f,0xf6,0x3f,0x36,0x70,0x18,0x60,0x18,0x60,0x18,0x60,0x18,0x60,0x36,0x70,0xf6,0x3f,0xe0,0x1f, From 34009091fd5884b81d5a725a60f6525836d94acc Mon Sep 17 00:00:00 2001 From: mhotar Date: Mon, 20 Jan 2014 22:24:26 +0100 Subject: [PATCH 207/308] comments removed --- radio/src/lcd.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/radio/src/lcd.cpp b/radio/src/lcd.cpp index 3d54cedc2..d103b786b 100644 --- a/radio/src/lcd.cpp +++ b/radio/src/lcd.cpp @@ -514,7 +514,6 @@ void lcd_outdezNAtt(xcoord_t x, uint8_t y, lcdint_t val, LcdFlags flags, uint8_t x += 2; } #if defined(BOLD_FONT) && !defined(CPUM64) || defined(EXTSTD) -/////////////////////////////////////////////////////////////////// if (flags & BOLD) fw += 1; #endif } @@ -575,7 +574,6 @@ void lcd_outdezNAtt(xcoord_t x, uint8_t y, lcdint_t val, LcdFlags flags, uint8_t val = qr.quot; x-=fw; #if defined(BOLD_FONT) && !defined(CPUM64) || defined(EXTSTD) -//////////////////////////////////////////////////////////// if (i==len && (flags & BOLD)) x += 1; #endif } From a545bae3a68b227b0c0eebabf8a3f93ec7e6d4b4 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Mon, 20 Jan 2014 22:50:22 +0100 Subject: [PATCH 208/308] Companion: no ON/OFF checkbox for Custom Function Start Logs --- companion/src/modeledit/customfunctions.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/companion/src/modeledit/customfunctions.cpp b/companion/src/modeledit/customfunctions.cpp index 13827c0f0..0dc818581 100644 --- a/companion/src/modeledit/customfunctions.cpp +++ b/companion/src/modeledit/customfunctions.cpp @@ -283,7 +283,7 @@ void CustomFunctionsPanel::refreshCustomFunction(int i, bool modified) fswtchParam[i]->setSingleStep(0.1); if (modified) model.funcSw[i].param = fswtchParam[i]->value()*10.0; fswtchParam[i]->setValue(model.funcSw[i].param/10.0); - widgetsMask |= CUSTOM_FUNCTION_NUMERIC_PARAM + CUSTOM_FUNCTION_ENABLE; + widgetsMask |= CUSTOM_FUNCTION_NUMERIC_PARAM; } else if (index>=FuncAdjustGV1 && index<=FuncAdjustGVLast) { if (modified) model.funcSw[i].adjustMode = fswtchGVmode[i]->currentIndex(); From 60c1282c15634b25d329d405ae3127e092166af6 Mon Sep 17 00:00:00 2001 From: Dvogonen Date: Mon, 20 Jan 2014 23:08:48 +0100 Subject: [PATCH 209/308] A bunch of red alternative icons for Bertrand. I have experimented with using reds mixed with yellow. More yellow and you get orange (which is horrible for onscreen use). Any lighter and the color turns pink. darker, and the color disappears in low resolutions. --- .../originals/logotypes/opentx_logo_red_1.svg | 239 ++++++++++++++++++ .../originals/logotypes/opentx_logo_red_2.svg | 239 ++++++++++++++++++ .../originals/logotypes/opentx_logo_red_3.svg | 239 ++++++++++++++++++ .../originals/logotypes/opentx_logo_red_4.svg | 239 ++++++++++++++++++ .../originals/logotypes/opentx_logo_red_5.svg | 239 ++++++++++++++++++ .../originals/logotypes/opentx_logo_red_6.svg | 239 ++++++++++++++++++ .../originals/logotypes/opentx_logo_red_7.svg | 239 ++++++++++++++++++ 7 files changed, 1673 insertions(+) create mode 100644 companion/src/images/originals/logotypes/opentx_logo_red_1.svg create mode 100644 companion/src/images/originals/logotypes/opentx_logo_red_2.svg create mode 100644 companion/src/images/originals/logotypes/opentx_logo_red_3.svg create mode 100644 companion/src/images/originals/logotypes/opentx_logo_red_4.svg create mode 100644 companion/src/images/originals/logotypes/opentx_logo_red_5.svg create mode 100644 companion/src/images/originals/logotypes/opentx_logo_red_6.svg create mode 100644 companion/src/images/originals/logotypes/opentx_logo_red_7.svg diff --git a/companion/src/images/originals/logotypes/opentx_logo_red_1.svg b/companion/src/images/originals/logotypes/opentx_logo_red_1.svg new file mode 100644 index 000000000..b2c2df8e4 --- /dev/null +++ b/companion/src/images/originals/logotypes/opentx_logo_red_1.svg @@ -0,0 +1,239 @@ + +image/svg+xml +O +P +E +N + \ No newline at end of file diff --git a/companion/src/images/originals/logotypes/opentx_logo_red_2.svg b/companion/src/images/originals/logotypes/opentx_logo_red_2.svg new file mode 100644 index 000000000..265bc774f --- /dev/null +++ b/companion/src/images/originals/logotypes/opentx_logo_red_2.svg @@ -0,0 +1,239 @@ + +image/svg+xml +O +P +E +N + \ No newline at end of file diff --git a/companion/src/images/originals/logotypes/opentx_logo_red_3.svg b/companion/src/images/originals/logotypes/opentx_logo_red_3.svg new file mode 100644 index 000000000..ee4af4951 --- /dev/null +++ b/companion/src/images/originals/logotypes/opentx_logo_red_3.svg @@ -0,0 +1,239 @@ + +image/svg+xml +O +P +E +N + \ No newline at end of file diff --git a/companion/src/images/originals/logotypes/opentx_logo_red_4.svg b/companion/src/images/originals/logotypes/opentx_logo_red_4.svg new file mode 100644 index 000000000..7f0fed3bb --- /dev/null +++ b/companion/src/images/originals/logotypes/opentx_logo_red_4.svg @@ -0,0 +1,239 @@ + +image/svg+xml +O +P +E +N + \ No newline at end of file diff --git a/companion/src/images/originals/logotypes/opentx_logo_red_5.svg b/companion/src/images/originals/logotypes/opentx_logo_red_5.svg new file mode 100644 index 000000000..e54248c71 --- /dev/null +++ b/companion/src/images/originals/logotypes/opentx_logo_red_5.svg @@ -0,0 +1,239 @@ + +image/svg+xml +O +P +E +N + \ No newline at end of file diff --git a/companion/src/images/originals/logotypes/opentx_logo_red_6.svg b/companion/src/images/originals/logotypes/opentx_logo_red_6.svg new file mode 100644 index 000000000..ba99f8839 --- /dev/null +++ b/companion/src/images/originals/logotypes/opentx_logo_red_6.svg @@ -0,0 +1,239 @@ + +image/svg+xml +O +P +E +N + \ No newline at end of file diff --git a/companion/src/images/originals/logotypes/opentx_logo_red_7.svg b/companion/src/images/originals/logotypes/opentx_logo_red_7.svg new file mode 100644 index 000000000..ff2880892 --- /dev/null +++ b/companion/src/images/originals/logotypes/opentx_logo_red_7.svg @@ -0,0 +1,239 @@ + +image/svg+xml +O +P +E +N + \ No newline at end of file From 28fad3a306a93353c7874b902e2a3a56b6be1c88 Mon Sep 17 00:00:00 2001 From: "Tim G. Foley" Date: Mon, 20 Jan 2014 19:58:18 -0500 Subject: [PATCH 210/308] Cleaned up comments --- radio/src/gui/menu_model.cpp | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/radio/src/gui/menu_model.cpp b/radio/src/gui/menu_model.cpp index 681aaa22f..4dad2c5c8 100644 --- a/radio/src/gui/menu_model.cpp +++ b/radio/src/gui/menu_model.cpp @@ -5164,8 +5164,8 @@ enum menuModelTelemetryItems { ITEM_TELEMETRY_USR_PROTO, #endif ITEM_TELEMETRY_USR_BLADES, - ITEM_TELEMETRY_USR_SPUR_GEAR, // T.Foley - ITEM_TELEMETRY_USR_PINION_GEAR, // T.Foley + ITEM_TELEMETRY_USR_SPUR_GEAR, + ITEM_TELEMETRY_USR_PINION_GEAR, #endif ITEM_TELEMETRY_USR_VOLTAGE_SOURCE, ITEM_TELEMETRY_USR_CURRENT_SOURCE, @@ -5202,8 +5202,7 @@ enum menuModelTelemetryItems { }; #if defined(PCBTARANIS) - //#define USRDATA_LINES (uint8_t)-1, 0, - #define USRDATA_LINES (uint8_t)-1, 0, 0, 0, // T.Foley - Add room for two new gearing options + #define USRDATA_LINES (uint8_t)-1, 0, 0, 0, #elif defined(FRSKY_HUB) || defined(WS_HOW_HIGH) #define USRDATA_LINES (uint8_t)-1, 0, 0, #else @@ -5406,20 +5405,18 @@ void menuModelTelemetry(uint8_t event) case ITEM_TELEMETRY_USR_BLADES: lcd_putsLeft(y, STR_BLADES); - //lcd_outdezAtt(TELEM_COL2+FWNUM, y, 2+g_model.frsky.blades, attr); - lcd_outdezAtt(TELEM_COL2, y, 1+g_model.frsky.blades, LEFT|attr); // T.Foley - //if (attr) CHECK_INCDEC_MODELVAR_ZERO(event, g_model.frsky.blades, 3); - if (attr) CHECK_INCDEC_MODELVAR_ZERO(event, g_model.frsky.blades, 254); // T.Foley + lcd_outdezAtt(TELEM_COL2, y, 1+g_model.frsky.blades, LEFT|attr); + if (attr) CHECK_INCDEC_MODELVAR_ZERO(event, g_model.frsky.blades, 254); break; - case ITEM_TELEMETRY_USR_SPUR_GEAR: // T.Foley + case ITEM_TELEMETRY_USR_SPUR_GEAR: lcd_putsLeft(y, STR_SPURGEAR); lcd_outdezAtt(TELEM_COL2, y, 1+g_model.frsky.spur_gear, LEFT|attr); // Spur gear must be greater than or equal to pinion to prevent floating point error if (attr) CHECK_INCDEC_MODELVAR(event, g_model.frsky.spur_gear, g_model.frsky.pinion_gear, 254); break; - case ITEM_TELEMETRY_USR_PINION_GEAR: // T.Foley + case ITEM_TELEMETRY_USR_PINION_GEAR: lcd_putsLeft(y, STR_PINIONGEAR); lcd_outdezAtt(TELEM_COL2, y, 1+g_model.frsky.pinion_gear, LEFT|attr); // Pinion gear ,ust be less than or equal to spur gear to prevent floating point error From 4dc9194a36a3359ca0633d27dbdafc80a71be224 Mon Sep 17 00:00:00 2001 From: "Tim G. Foley" Date: Mon, 20 Jan 2014 19:58:59 -0500 Subject: [PATCH 211/308] Cleaned up comments --- radio/src/myeeprom.h | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/radio/src/myeeprom.h b/radio/src/myeeprom.h index 04ad423fb..6f8671e71 100644 --- a/radio/src/myeeprom.h +++ b/radio/src/myeeprom.h @@ -976,7 +976,7 @@ PACK(typedef struct t_FrSkyData { uint8_t usrProto; // Protocol in FrSky user data, 0=None, 1=FrSky hub, 2=WS HowHigh, 3=Halcyon uint8_t voltsSource:7; uint8_t altitudeDisplayed:1; - uint8_t blades; // How many blades for RPMs, 0=1 blades, 1=2 blades // T.Foley + uint8_t blades; // How many blades for RPMs, 0=1 blades, 1=2 blades uint8_t currentSource; uint8_t screensType; FrSkyScreenData screens[MAX_FRSKY_SCREENS]; @@ -989,15 +989,15 @@ PACK(typedef struct t_FrSkyData { uint16_t mAhPersistent:1; uint16_t storedMah:15; int8_t fasOffset; - uint8_t spur_gear; // How many teeth on Spur Gear for Headspeed Calc. T.Foley - uint8_t pinion_gear; // How many teeth on Pinion Gear for Headspeed Calc. T.Foley + uint8_t spur_gear; + uint8_t pinion_gear; }) FrSkyData; #else #define MAX_FRSKY_SCREENS 2 PACK(typedef struct t_FrSkyData { FrSkyChannelData channels[2]; uint8_t usrProto:2; // Protocol in FrSky user data, 0=None, 1=FrSky hub, 2=WS HowHigh, 3=Halcyon - uint8_t blades:2; // How many blades for RPMs, 0=1 blades, 1=2 blades // T.Foley + uint8_t blades:2; // How many blades for RPMs, 0=1 blades, 1=2 blades uint8_t screensType:2; uint8_t voltsSource:2; int8_t varioMin:4; @@ -1009,8 +1009,8 @@ PACK(typedef struct t_FrSkyData { uint8_t currentSource:3; int8_t varioCenterMax:5; int8_t fasOffset; - uint8_t spur_gear; // How many teeth on Spur Gear for Headspeed Calc. T.Foley - uint8_t pinion_gear; // How many teeth on Pinion Gear for Headspeed Calc. T.Foley + uint8_t spur_gear; + uint8_t pinion_gear; }) FrSkyData; #endif From 1b46c806131f155dc8a37d79f2c07c9e2ffaa7c5 Mon Sep 17 00:00:00 2001 From: "Tim G. Foley" Date: Mon, 20 Jan 2014 19:59:30 -0500 Subject: [PATCH 212/308] Cleaned up comments --- radio/src/simu.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/radio/src/simu.cpp b/radio/src/simu.cpp index 8fabf48f8..51ef32b73 100644 --- a/radio/src/simu.cpp +++ b/radio/src/simu.cpp @@ -338,7 +338,7 @@ void Open9xSim::refreshDiplay() bmp->render(); bmf->setImage(bmp); - // Recalc RPM based on Blades setting during simulator - T.Foley + // Recalc RPM based on Blades setting during simulator // Final value will change as user adjusts blades, spur or gear live in simulator frskyData.hub.rpm = 303; frskyData.hub.rpm *= (uint8_t)60; From ff876880d5150be5fb039c6114929cbe572c1c3d Mon Sep 17 00:00:00 2001 From: "Tim G. Foley" Date: Mon, 20 Jan 2014 20:00:11 -0500 Subject: [PATCH 213/308] Cleaned up comments --- radio/src/telemetry/frsky.cpp | 4 ---- 1 file changed, 4 deletions(-) diff --git a/radio/src/telemetry/frsky.cpp b/radio/src/telemetry/frsky.cpp index 4147d1693..54768146f 100644 --- a/radio/src/telemetry/frsky.cpp +++ b/radio/src/telemetry/frsky.cpp @@ -176,10 +176,6 @@ void parseTelemHubByte(uint8_t byte) switch ((uint8_t)structPos) { case offsetof(FrskySerialData, rpm): - //frskyData.hub.rpm *= (uint8_t)60/(g_model.frsky.blades+2); - // Change minimum Blades to 1 to allow for single sensors/raw data - T.Foley - // Added Spur and Pinion Ratio Calculation to provide final head/drive RPM after gearing - // frskyData.hub.rpm *= (uint8_t)60; frskyData.hub.rpm /= (g_model.frsky.blades+1); gear_ratio = (((float)g_model.frsky.spur_gear+1) / ((float)g_model.frsky.pinion_gear+1)); From 30dd3cd41dea4279609aeea73a49f4af55d49f6b Mon Sep 17 00:00:00 2001 From: "Tim G. Foley" Date: Mon, 20 Jan 2014 20:00:39 -0500 Subject: [PATCH 214/308] Cleaned up comments --- radio/src/telemetry/frsky_sport.cpp | 6 ------ 1 file changed, 6 deletions(-) diff --git a/radio/src/telemetry/frsky_sport.cpp b/radio/src/telemetry/frsky_sport.cpp index cf34b6198..eed3c3951 100644 --- a/radio/src/telemetry/frsky_sport.cpp +++ b/radio/src/telemetry/frsky_sport.cpp @@ -184,16 +184,10 @@ void processHubPacket(uint8_t id, uint16_t value) switch (id) { case RPM_ID: - //frskyData.hub.rpm *= (uint8_t)60/(g_model.frsky.blades+2); - - // Change minimum Blades to 1 to allow for single sensors/raw data - T.Foley - // Added Spur and Pinion Ratio Calculation to provide final head/drive RPM after gearing - // frskyData.hub.rpm *= (uint8_t)60; frskyData.hub.rpm /= (g_model.frsky.blades+1); gear_ratio = (((float)g_model.frsky.spur_gear+1) / ((float)g_model.frsky.pinion_gear+1)); frskyData.hub.rpm = (float)(frskyData.hub.rpm / gear_ratio); - if (frskyData.hub.rpm > frskyData.hub.maxRpm) frskyData.hub.maxRpm = frskyData.hub.rpm; break; From 392169591c61c3d98d7a578fbd20fa2aa1d5ede1 Mon Sep 17 00:00:00 2001 From: "Tim G. Foley" Date: Mon, 20 Jan 2014 20:00:55 -0500 Subject: [PATCH 215/308] Cleaned up comments --- radio/src/translations.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/radio/src/translations.cpp b/radio/src/translations.cpp index 3e1ef09c7..cd553c1a7 100644 --- a/radio/src/translations.cpp +++ b/radio/src/translations.cpp @@ -185,8 +185,8 @@ const pm_char STR_BAR[] PROGMEM = TR_BAR; const pm_char STR_ALARM[] PROGMEM = TR_ALARM; const pm_char STR_USRDATA[] PROGMEM = TR_USRDATA; const pm_char STR_BLADES[] PROGMEM = TR_BLADES; -const pm_char STR_SPURGEAR[] PROGMEM = TR_SPURGEAR; // T.Foley -const pm_char STR_PINIONGEAR[] PROGMEM = TR_PINIONGEAR; // T.Foley +const pm_char STR_SPURGEAR[] PROGMEM = TR_SPURGEAR; +const pm_char STR_PINIONGEAR[] PROGMEM = TR_PINIONGEAR; const pm_char STR_SCREEN[] PROGMEM = TR_SCREEN; const pm_char STR_SOUND_LABEL[] PROGMEM = TR_SOUND_LABEL; const pm_char STR_LENGTH[] PROGMEM = TR_LENGTH; From 2107f25765a1e91645efbd639d78332b86bb4591 Mon Sep 17 00:00:00 2001 From: "Tim G. Foley" Date: Mon, 20 Jan 2014 20:01:04 -0500 Subject: [PATCH 216/308] Cleaned up comments --- radio/src/translations.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/radio/src/translations.h b/radio/src/translations.h index b49bb005d..d5abf15f7 100644 --- a/radio/src/translations.h +++ b/radio/src/translations.h @@ -343,8 +343,8 @@ extern const pm_char STR_BAR[]; extern const pm_char STR_ALARM[]; extern const pm_char STR_USRDATA[]; extern const pm_char STR_BLADES[]; -extern const pm_char STR_SPURGEAR[]; // T.Foley -extern const pm_char STR_PINIONGEAR[]; // T.Foley +extern const pm_char STR_SPURGEAR[]; +extern const pm_char STR_PINIONGEAR[]; extern const pm_char STR_SCREEN[]; extern const pm_char STR_SOUND_LABEL[]; extern const pm_char STR_LENGTH[]; From 770b95507e5749d2eb519b7bf0388b76e2002cde Mon Sep 17 00:00:00 2001 From: "Tim G. Foley" Date: Mon, 20 Jan 2014 20:01:23 -0500 Subject: [PATCH 217/308] Cleaned up comments --- radio/src/translations/cz.h.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/radio/src/translations/cz.h.txt b/radio/src/translations/cz.h.txt index 9c84a4119..529895d7a 100644 --- a/radio/src/translations/cz.h.txt +++ b/radio/src/translations/cz.h.txt @@ -443,8 +443,8 @@ #define TR_ALARM INDENT"Alarm" #define TR_USRDATA TR("UživData", "Uživ. data") #define TR_BLADES TR(INDENT"ListyVrt", INDENT"Listy vrtule") -#define TR_SPURGEAR INDENT"Spur Gear" // T.Foley -#define TR_PINIONGEAR INDENT"Pinion Gear" // T.Foley +#define TR_SPURGEAR INDENT"Spur Gear" +#define TR_PINIONGEAR INDENT"Pinion Gear" #define TR_SCREEN "Panel " #define TR_SOUND_LABEL "Zvuk" #define TR_LENGTH INDENT"Délka" From bbb9a4ceda0fae2da00f8832cd14feac5da8aa1e Mon Sep 17 00:00:00 2001 From: "Tim G. Foley" Date: Mon, 20 Jan 2014 20:01:34 -0500 Subject: [PATCH 218/308] Cleaned up comments --- radio/src/translations/de.h.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/radio/src/translations/de.h.txt b/radio/src/translations/de.h.txt index 694f8ce18..9df6b6953 100644 --- a/radio/src/translations/de.h.txt +++ b/radio/src/translations/de.h.txt @@ -443,8 +443,8 @@ #define TR_ALARM INDENT"Alarm" #define TR_USRDATA "Daten" #define TR_BLADES INDENT"Bl\201tter" -#define TR_SPURGEAR INDENT"Spur Gear" // T.Foley -#define TR_PINIONGEAR INDENT"Pinion Gear" // T.Foley +#define TR_SPURGEAR INDENT"Spur Gear" +#define TR_PINIONGEAR INDENT"Pinion Gear" #define TR_SCREEN "Bild " #define TR_SOUND_LABEL "T\203ne" #define TR_LENGTH INDENT"Dauer" From 7e164f4b8d1c8604c82ecbe88ff06acca1a08705 Mon Sep 17 00:00:00 2001 From: "Tim G. Foley" Date: Mon, 20 Jan 2014 20:01:46 -0500 Subject: [PATCH 219/308] Cleaned up comments --- radio/src/translations/en.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/radio/src/translations/en.h b/radio/src/translations/en.h index 86c4f48cf..bcc9c50d0 100644 --- a/radio/src/translations/en.h +++ b/radio/src/translations/en.h @@ -447,8 +447,8 @@ #define TR_ALARM INDENT"Alarm" #define TR_USRDATA "UsrData" #define TR_BLADES INDENT"Blades" -#define TR_SPURGEAR INDENT"Spur Gear" // T.Foley -#define TR_PINIONGEAR INDENT"Pinion Gear" // T.Foley +#define TR_SPURGEAR INDENT"Spur Gear" +#define TR_PINIONGEAR INDENT"Pinion Gear" #define TR_SCREEN "Screen " #define TR_SOUND_LABEL "Sound" #define TR_LENGTH INDENT"Length" From d790fa3d4b97cc4b9e4f01aef06b9a71858d5ad0 Mon Sep 17 00:00:00 2001 From: "Tim G. Foley" Date: Mon, 20 Jan 2014 20:01:59 -0500 Subject: [PATCH 220/308] Cleaned up comments --- radio/src/translations/fr.h.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/radio/src/translations/fr.h.txt b/radio/src/translations/fr.h.txt index 0e363f3f4..b0c3cc463 100644 --- a/radio/src/translations/fr.h.txt +++ b/radio/src/translations/fr.h.txt @@ -443,8 +443,8 @@ #define TR_ALARM INDENT"Alarme" #define TR_USRDATA "Données" #define TR_BLADES INDENT"Pales" -#define TR_SPURGEAR INDENT"Spur Gear" // T.Foley -#define TR_PINIONGEAR INDENT"Pinion Gear" // T.Foley +#define TR_SPURGEAR INDENT"Spur Gear" +#define TR_PINIONGEAR INDENT"Pinion Gear" #define TR_SCREEN "Ecran " #define TR_SOUND_LABEL "Son" #define TR_LENGTH INDENT"Durée" From c7d84f741dbd6e9c3c96627460df0e806b9495b0 Mon Sep 17 00:00:00 2001 From: "Tim G. Foley" Date: Mon, 20 Jan 2014 20:02:13 -0500 Subject: [PATCH 221/308] Cleaned up comments --- radio/src/translations/it.h.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/radio/src/translations/it.h.txt b/radio/src/translations/it.h.txt index 2f06e0524..7c607a1f7 100644 --- a/radio/src/translations/it.h.txt +++ b/radio/src/translations/it.h.txt @@ -443,8 +443,8 @@ #define TR_ALARM INDENT"Allarme" #define TR_USRDATA "Dati" #define TR_BLADES INDENT"Pale" -#define TR_SPURGEAR INDENT"Spur Gear" // T.Foley -#define TR_PINIONGEAR INDENT"Pinion Gear" // T.Foley +#define TR_SPURGEAR INDENT"Spur Gear" +#define TR_PINIONGEAR INDENT"Pinion Gear" #define TR_SCREEN "Schermo " #define TR_SOUND_LABEL "Suono" #define TR_LENGTH INDENT"Durata" From b44879a7e17c0b77864c855a1eee3c075b38767c Mon Sep 17 00:00:00 2001 From: "Tim G. Foley" Date: Mon, 20 Jan 2014 20:02:22 -0500 Subject: [PATCH 222/308] Cleaned up comments --- radio/src/translations/pl.h.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/radio/src/translations/pl.h.txt b/radio/src/translations/pl.h.txt index c9b533b7b..a91cc44a3 100644 --- a/radio/src/translations/pl.h.txt +++ b/radio/src/translations/pl.h.txt @@ -444,8 +444,8 @@ #define TR_ALARM INDENT"Alarm" #define TR_USRDATA TR("Dane Użytk.", "Dane użytkownika") #define TR_BLADES TR(INDENT"Łopaty śmigla", INDENT"Łopaty śmigła") -#define TR_SPURGEAR INDENT"Spur Gear" // T.Foley -#define TR_PINIONGEAR INDENT"Pinion Gear" // T.Foley +#define TR_SPURGEAR INDENT"Spur Gear" +#define TR_PINIONGEAR INDENT"Pinion Gear" #define TR_SCREEN "Ekran " #define TR_SOUND_LABEL "Dźwięk" #define TR_LENGTH INDENT"Długość" From 522e0cd1f6cd8833220efb34bf16ef7a499bfe2e Mon Sep 17 00:00:00 2001 From: "Tim G. Foley" Date: Mon, 20 Jan 2014 20:02:32 -0500 Subject: [PATCH 223/308] Cleaned up comments --- radio/src/translations/pt.h.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/radio/src/translations/pt.h.txt b/radio/src/translations/pt.h.txt index fa8c8b1dd..1a39216b0 100644 --- a/radio/src/translations/pt.h.txt +++ b/radio/src/translations/pt.h.txt @@ -443,8 +443,8 @@ #define TR_ALARM INDENT"Alarme" #define TR_USRDATA "UsrData" #define TR_BLADES INDENT"Helice" -#define TR_SPURGEAR INDENT"Spur Gear" // T.Foley -#define TR_PINIONGEAR INDENT"Pinion Gear" // T.Foley +#define TR_SPURGEAR INDENT"Spur Gear" +#define TR_PINIONGEAR INDENT"Pinion Gear" #define TR_SCREEN "Tela" #define TR_SOUND_LABEL "Som" #define TR_LENGTH INDENT"Comprimento" From dfad662f18f1deabcd96cd8d8bf89ce3e880714d Mon Sep 17 00:00:00 2001 From: "Tim G. Foley" Date: Mon, 20 Jan 2014 20:02:44 -0500 Subject: [PATCH 224/308] Cleaned up comments --- radio/src/translations/se.h.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/radio/src/translations/se.h.txt b/radio/src/translations/se.h.txt index 796c10fa4..d034d8b94 100644 --- a/radio/src/translations/se.h.txt +++ b/radio/src/translations/se.h.txt @@ -443,8 +443,8 @@ #define TR_ALARM INDENT"Alarm" #define TR_USRDATA "Användardata" #define TR_BLADES INDENT"Blad" -#define TR_SPURGEAR INDENT"Spur Gear" // T.Foley -#define TR_PINIONGEAR INDENT"Pinion Gear" // T.Foley +#define TR_SPURGEAR INDENT"Spur Gear" +#define TR_PINIONGEAR INDENT"Pinion Gear" #define TR_SCREEN "Skärm" #define TR_SOUND_LABEL "Ljud " #define TR_LENGTH INDENT"Tid" From 9d1d36cd3b03a5c1223c10cf7c00756a16b5b915 Mon Sep 17 00:00:00 2001 From: Dvogonen Date: Tue, 21 Jan 2014 09:21:17 +0100 Subject: [PATCH 225/308] Added white theme --- companion/src/companion.qrc | 171 ++++++++++++++++++ companion/src/helpers.cpp | 8 +- .../src/images/originals/scripts/makewhite.sh | 3 + companion/src/preferencesdialog.ui | 12 +- companion/src/themes/monowhite/16/add.png | Bin 0 -> 335 bytes .../src/themes/monowhite/16/arrow-left.png | Bin 0 -> 336 bytes .../src/themes/monowhite/16/arrow-right.png | Bin 0 -> 331 bytes .../src/themes/monowhite/16/changelog.png | Bin 0 -> 355 bytes companion/src/themes/monowhite/16/clear.png | Bin 0 -> 358 bytes companion/src/themes/monowhite/16/compare.png | Bin 0 -> 396 bytes .../src/themes/monowhite/16/configure.png | Bin 0 -> 384 bytes .../src/themes/monowhite/16/contributors.png | Bin 0 -> 484 bytes companion/src/themes/monowhite/16/copy.png | Bin 0 -> 367 bytes .../src/themes/monowhite/16/currentmodel.png | Bin 0 -> 414 bytes .../src/themes/monowhite/16/customize.png | Bin 0 -> 528 bytes companion/src/themes/monowhite/16/cut.png | Bin 0 -> 481 bytes .../src/themes/monowhite/16/duplicate.png | Bin 0 -> 402 bytes companion/src/themes/monowhite/16/edit.png | Bin 0 -> 444 bytes companion/src/themes/monowhite/16/exit.png | Bin 0 -> 427 bytes companion/src/themes/monowhite/16/fuses.png | Bin 0 -> 450 bytes .../src/themes/monowhite/16/information.png | Bin 0 -> 353 bytes companion/src/themes/monowhite/16/library.png | Bin 0 -> 341 bytes companion/src/themes/monowhite/16/list.png | Bin 0 -> 427 bytes companion/src/themes/monowhite/16/logs.png | Bin 0 -> 399 bytes .../src/themes/monowhite/16/movedown.png | Bin 0 -> 375 bytes companion/src/themes/monowhite/16/moveup.png | Bin 0 -> 383 bytes companion/src/themes/monowhite/16/new.png | Bin 0 -> 374 bytes companion/src/themes/monowhite/16/open.png | Bin 0 -> 365 bytes .../src/themes/monowhite/16/paintbrush.png | Bin 0 -> 452 bytes companion/src/themes/monowhite/16/paste.png | Bin 0 -> 407 bytes companion/src/themes/monowhite/16/play.png | Bin 0 -> 1005 bytes .../src/themes/monowhite/16/preferences.png | Bin 0 -> 454 bytes companion/src/themes/monowhite/16/print.png | Bin 0 -> 377 bytes .../src/themes/monowhite/16/profiles.png | Bin 0 -> 304 bytes .../src/themes/monowhite/16/read_eeprom.png | Bin 0 -> 541 bytes .../themes/monowhite/16/read_eeprom_file.png | Bin 0 -> 527 bytes .../src/themes/monowhite/16/read_flash.png | Bin 0 -> 562 bytes .../themes/monowhite/16/recentdocument.png | Bin 0 -> 476 bytes companion/src/themes/monowhite/16/save.png | Bin 0 -> 347 bytes companion/src/themes/monowhite/16/saveas.png | Bin 0 -> 369 bytes .../src/themes/monowhite/16/simulate.png | Bin 0 -> 346 bytes companion/src/themes/monowhite/16/stop.png | Bin 0 -> 558 bytes .../src/themes/monowhite/16/switch_dir.png | Bin 0 -> 410 bytes companion/src/themes/monowhite/16/update.png | Bin 0 -> 402 bytes companion/src/themes/monowhite/16/wizard.png | Bin 0 -> 476 bytes .../src/themes/monowhite/16/write_eeprom.png | Bin 0 -> 552 bytes .../themes/monowhite/16/write_eeprom_file.png | Bin 0 -> 536 bytes .../src/themes/monowhite/16/write_flash.png | Bin 0 -> 569 bytes companion/src/themes/monowhite/24/add.png | Bin 0 -> 360 bytes .../src/themes/monowhite/24/arrow-left.png | Bin 0 -> 457 bytes .../src/themes/monowhite/24/arrow-right.png | Bin 0 -> 448 bytes .../src/themes/monowhite/24/changelog.png | Bin 0 -> 490 bytes companion/src/themes/monowhite/24/clear.png | Bin 0 -> 471 bytes companion/src/themes/monowhite/24/compare.png | Bin 0 -> 654 bytes .../src/themes/monowhite/24/configure.png | Bin 0 -> 463 bytes .../src/themes/monowhite/24/contributors.png | Bin 0 -> 595 bytes companion/src/themes/monowhite/24/copy.png | Bin 0 -> 498 bytes .../src/themes/monowhite/24/currentmodel.png | Bin 0 -> 506 bytes .../src/themes/monowhite/24/customize.png | Bin 0 -> 528 bytes companion/src/themes/monowhite/24/cut.png | Bin 0 -> 651 bytes .../src/themes/monowhite/24/duplicate.png | Bin 0 -> 557 bytes companion/src/themes/monowhite/24/edit.png | Bin 0 -> 556 bytes companion/src/themes/monowhite/24/exit.png | Bin 0 -> 559 bytes companion/src/themes/monowhite/24/fuses.png | Bin 0 -> 581 bytes .../src/themes/monowhite/24/information.png | Bin 0 -> 395 bytes companion/src/themes/monowhite/24/library.png | Bin 0 -> 435 bytes companion/src/themes/monowhite/24/list.png | Bin 0 -> 531 bytes companion/src/themes/monowhite/24/logs.png | Bin 0 -> 479 bytes .../src/themes/monowhite/24/movedown.png | Bin 0 -> 439 bytes companion/src/themes/monowhite/24/moveup.png | Bin 0 -> 438 bytes companion/src/themes/monowhite/24/new.png | Bin 0 -> 488 bytes companion/src/themes/monowhite/24/open.png | Bin 0 -> 443 bytes .../src/themes/monowhite/24/paintbrush.png | Bin 0 -> 605 bytes companion/src/themes/monowhite/24/paste.png | Bin 0 -> 519 bytes companion/src/themes/monowhite/24/play.png | Bin 0 -> 1005 bytes .../src/themes/monowhite/24/preferences.png | Bin 0 -> 603 bytes companion/src/themes/monowhite/24/print.png | Bin 0 -> 511 bytes .../src/themes/monowhite/24/profiles.png | Bin 0 -> 430 bytes .../src/themes/monowhite/24/read_eeprom.png | Bin 0 -> 830 bytes .../themes/monowhite/24/read_eeprom_file.png | Bin 0 -> 783 bytes .../src/themes/monowhite/24/read_flash.png | Bin 0 -> 873 bytes .../themes/monowhite/24/recentdocument.png | Bin 0 -> 639 bytes companion/src/themes/monowhite/24/save.png | Bin 0 -> 418 bytes companion/src/themes/monowhite/24/saveas.png | Bin 0 -> 493 bytes .../src/themes/monowhite/24/simulate.png | Bin 0 -> 394 bytes companion/src/themes/monowhite/24/stop.png | Bin 0 -> 558 bytes .../src/themes/monowhite/24/switch_dir.png | Bin 0 -> 539 bytes companion/src/themes/monowhite/24/update.png | Bin 0 -> 501 bytes companion/src/themes/monowhite/24/wizard.png | Bin 0 -> 610 bytes .../src/themes/monowhite/24/write_eeprom.png | Bin 0 -> 842 bytes .../themes/monowhite/24/write_eeprom_file.png | Bin 0 -> 773 bytes .../src/themes/monowhite/24/write_flash.png | Bin 0 -> 891 bytes companion/src/themes/monowhite/32/add.png | Bin 0 -> 376 bytes .../src/themes/monowhite/32/arrow-left.png | Bin 0 -> 390 bytes .../src/themes/monowhite/32/arrow-right.png | Bin 0 -> 386 bytes .../src/themes/monowhite/32/changelog.png | Bin 0 -> 393 bytes companion/src/themes/monowhite/32/clear.png | Bin 0 -> 396 bytes companion/src/themes/monowhite/32/compare.png | Bin 0 -> 446 bytes .../src/themes/monowhite/32/configure.png | Bin 0 -> 468 bytes .../src/themes/monowhite/32/contributors.png | Bin 0 -> 702 bytes companion/src/themes/monowhite/32/copy.png | Bin 0 -> 388 bytes .../src/themes/monowhite/32/currentmodel.png | Bin 0 -> 516 bytes .../src/themes/monowhite/32/customize.png | Bin 0 -> 528 bytes companion/src/themes/monowhite/32/cut.png | Bin 0 -> 693 bytes .../src/themes/monowhite/32/duplicate.png | Bin 0 -> 466 bytes companion/src/themes/monowhite/32/edit.png | Bin 0 -> 543 bytes companion/src/themes/monowhite/32/exit.png | Bin 0 -> 569 bytes companion/src/themes/monowhite/32/fuses.png | Bin 0 -> 637 bytes .../src/themes/monowhite/32/information.png | Bin 0 -> 403 bytes companion/src/themes/monowhite/32/library.png | Bin 0 -> 378 bytes companion/src/themes/monowhite/32/list.png | Bin 0 -> 511 bytes companion/src/themes/monowhite/32/logs.png | Bin 0 -> 501 bytes .../src/themes/monowhite/32/movedown.png | Bin 0 -> 461 bytes companion/src/themes/monowhite/32/moveup.png | Bin 0 -> 444 bytes companion/src/themes/monowhite/32/new.png | Bin 0 -> 408 bytes companion/src/themes/monowhite/32/open.png | Bin 0 -> 449 bytes .../src/themes/monowhite/32/paintbrush.png | Bin 0 -> 614 bytes companion/src/themes/monowhite/32/paste.png | Bin 0 -> 467 bytes companion/src/themes/monowhite/32/play.png | Bin 0 -> 1005 bytes .../src/themes/monowhite/32/preferences.png | Bin 0 -> 580 bytes companion/src/themes/monowhite/32/print.png | Bin 0 -> 418 bytes .../src/themes/monowhite/32/profiles.png | Bin 0 -> 338 bytes .../src/themes/monowhite/32/read_eeprom.png | Bin 0 -> 795 bytes .../themes/monowhite/32/read_eeprom_file.png | Bin 0 -> 778 bytes .../src/themes/monowhite/32/read_flash.png | Bin 0 -> 902 bytes .../themes/monowhite/32/recentdocument.png | Bin 0 -> 661 bytes companion/src/themes/monowhite/32/save.png | Bin 0 -> 366 bytes companion/src/themes/monowhite/32/saveas.png | Bin 0 -> 418 bytes .../src/themes/monowhite/32/simulate.png | Bin 0 -> 396 bytes companion/src/themes/monowhite/32/stop.png | Bin 0 -> 558 bytes .../src/themes/monowhite/32/switch_dir.png | Bin 0 -> 564 bytes companion/src/themes/monowhite/32/update.png | Bin 0 -> 535 bytes companion/src/themes/monowhite/32/wizard.png | Bin 0 -> 701 bytes .../src/themes/monowhite/32/write_eeprom.png | Bin 0 -> 815 bytes .../themes/monowhite/32/write_eeprom_file.png | Bin 0 -> 791 bytes .../src/themes/monowhite/32/write_flash.png | Bin 0 -> 904 bytes companion/src/themes/monowhite/48/add.png | Bin 0 -> 395 bytes .../src/themes/monowhite/48/arrow-left.png | Bin 0 -> 640 bytes .../src/themes/monowhite/48/arrow-right.png | Bin 0 -> 637 bytes .../src/themes/monowhite/48/changelog.png | Bin 0 -> 625 bytes companion/src/themes/monowhite/48/clear.png | Bin 0 -> 717 bytes companion/src/themes/monowhite/48/compare.png | Bin 0 -> 1039 bytes .../src/themes/monowhite/48/configure.png | Bin 0 -> 649 bytes .../src/themes/monowhite/48/contributors.png | Bin 0 -> 1003 bytes companion/src/themes/monowhite/48/copy.png | Bin 0 -> 615 bytes .../src/themes/monowhite/48/currentmodel.png | Bin 0 -> 764 bytes .../src/themes/monowhite/48/customize.png | Bin 0 -> 528 bytes companion/src/themes/monowhite/48/cut.png | Bin 0 -> 1200 bytes .../src/themes/monowhite/48/duplicate.png | Bin 0 -> 781 bytes companion/src/themes/monowhite/48/edit.png | Bin 0 -> 840 bytes companion/src/themes/monowhite/48/exit.png | Bin 0 -> 971 bytes companion/src/themes/monowhite/48/fuses.png | Bin 0 -> 1056 bytes .../src/themes/monowhite/48/information.png | Bin 0 -> 482 bytes companion/src/themes/monowhite/48/library.png | Bin 0 -> 518 bytes companion/src/themes/monowhite/48/list.png | Bin 0 -> 784 bytes companion/src/themes/monowhite/48/logs.png | Bin 0 -> 730 bytes .../src/themes/monowhite/48/movedown.png | Bin 0 -> 662 bytes companion/src/themes/monowhite/48/moveup.png | Bin 0 -> 645 bytes companion/src/themes/monowhite/48/new.png | Bin 0 -> 602 bytes companion/src/themes/monowhite/48/open.png | Bin 0 -> 585 bytes .../src/themes/monowhite/48/paintbrush.png | Bin 0 -> 951 bytes companion/src/themes/monowhite/48/paste.png | Bin 0 -> 707 bytes companion/src/themes/monowhite/48/play.png | Bin 0 -> 1005 bytes .../src/themes/monowhite/48/preferences.png | Bin 0 -> 974 bytes companion/src/themes/monowhite/48/print.png | Bin 0 -> 596 bytes .../src/themes/monowhite/48/profiles.png | Bin 0 -> 467 bytes .../src/themes/monowhite/48/read_eeprom.png | Bin 0 -> 1519 bytes .../themes/monowhite/48/read_eeprom_file.png | Bin 0 -> 1474 bytes .../src/themes/monowhite/48/read_flash.png | Bin 0 -> 1805 bytes .../themes/monowhite/48/recentdocument.png | Bin 0 -> 1164 bytes companion/src/themes/monowhite/48/save.png | Bin 0 -> 492 bytes companion/src/themes/monowhite/48/saveas.png | Bin 0 -> 649 bytes .../src/themes/monowhite/48/simulate.png | Bin 0 -> 534 bytes companion/src/themes/monowhite/48/stop.png | Bin 0 -> 558 bytes .../src/themes/monowhite/48/switch_dir.png | Bin 0 -> 894 bytes companion/src/themes/monowhite/48/update.png | Bin 0 -> 759 bytes companion/src/themes/monowhite/48/wizard.png | Bin 0 -> 1160 bytes .../src/themes/monowhite/48/write_eeprom.png | Bin 0 -> 1563 bytes .../themes/monowhite/48/write_eeprom_file.png | Bin 0 -> 1473 bytes .../src/themes/monowhite/48/write_flash.png | Bin 0 -> 1828 bytes companion/src/themes/monowhite/add.png | Bin 0 -> 319 bytes companion/src/themes/monowhite/arrow-left.png | Bin 0 -> 333 bytes .../src/themes/monowhite/arrow-right.png | Bin 0 -> 329 bytes companion/src/themes/monowhite/changelog.png | Bin 0 -> 336 bytes companion/src/themes/monowhite/clear.png | Bin 0 -> 339 bytes companion/src/themes/monowhite/compare.png | Bin 0 -> 389 bytes companion/src/themes/monowhite/configure.png | Bin 0 -> 411 bytes .../src/themes/monowhite/contributors.png | Bin 0 -> 645 bytes companion/src/themes/monowhite/copy.png | Bin 0 -> 331 bytes .../src/themes/monowhite/currentmodel.png | Bin 0 -> 459 bytes companion/src/themes/monowhite/cut.png | Bin 0 -> 693 bytes companion/src/themes/monowhite/duplicate.png | Bin 0 -> 409 bytes companion/src/themes/monowhite/edit.png | Bin 0 -> 486 bytes companion/src/themes/monowhite/exit.png | Bin 0 -> 512 bytes companion/src/themes/monowhite/fuses.png | Bin 0 -> 580 bytes .../src/themes/monowhite/information.png | Bin 0 -> 346 bytes companion/src/themes/monowhite/library.png | Bin 0 -> 321 bytes companion/src/themes/monowhite/list.png | Bin 0 -> 454 bytes companion/src/themes/monowhite/logs.png | Bin 0 -> 444 bytes companion/src/themes/monowhite/movedown.png | Bin 0 -> 404 bytes companion/src/themes/monowhite/moveup.png | Bin 0 -> 387 bytes companion/src/themes/monowhite/new.png | Bin 0 -> 351 bytes companion/src/themes/monowhite/open.png | Bin 0 -> 392 bytes companion/src/themes/monowhite/paintbrush.png | Bin 0 -> 557 bytes companion/src/themes/monowhite/paste.png | Bin 0 -> 410 bytes companion/src/themes/monowhite/play.png | Bin 0 -> 948 bytes .../src/themes/monowhite/preferences.png | Bin 0 -> 523 bytes companion/src/themes/monowhite/print.png | Bin 0 -> 361 bytes companion/src/themes/monowhite/profiles.png | Bin 0 -> 281 bytes .../src/themes/monowhite/read_eeprom.png | Bin 0 -> 738 bytes .../src/themes/monowhite/read_eeprom_file.png | Bin 0 -> 721 bytes companion/src/themes/monowhite/read_flash.png | Bin 0 -> 845 bytes .../src/themes/monowhite/recentdocument.png | Bin 0 -> 604 bytes companion/src/themes/monowhite/save.png | Bin 0 -> 309 bytes companion/src/themes/monowhite/saveas.png | Bin 0 -> 361 bytes companion/src/themes/monowhite/simulate.png | Bin 0 -> 339 bytes companion/src/themes/monowhite/stop.png | Bin 0 -> 501 bytes companion/src/themes/monowhite/switch_dir.png | Bin 0 -> 507 bytes companion/src/themes/monowhite/update.png | Bin 0 -> 478 bytes companion/src/themes/monowhite/wizard.png | Bin 0 -> 644 bytes .../src/themes/monowhite/write_eeprom.png | Bin 0 -> 758 bytes .../themes/monowhite/write_eeprom_file.png | Bin 0 -> 734 bytes .../src/themes/monowhite/write_flash.png | Bin 0 -> 847 bytes 223 files changed, 192 insertions(+), 2 deletions(-) create mode 100755 companion/src/images/originals/scripts/makewhite.sh create mode 100644 companion/src/themes/monowhite/16/add.png create mode 100644 companion/src/themes/monowhite/16/arrow-left.png create mode 100644 companion/src/themes/monowhite/16/arrow-right.png create mode 100644 companion/src/themes/monowhite/16/changelog.png create mode 100644 companion/src/themes/monowhite/16/clear.png create mode 100644 companion/src/themes/monowhite/16/compare.png create mode 100644 companion/src/themes/monowhite/16/configure.png create mode 100644 companion/src/themes/monowhite/16/contributors.png create mode 100644 companion/src/themes/monowhite/16/copy.png create mode 100644 companion/src/themes/monowhite/16/currentmodel.png create mode 100644 companion/src/themes/monowhite/16/customize.png create mode 100644 companion/src/themes/monowhite/16/cut.png create mode 100644 companion/src/themes/monowhite/16/duplicate.png create mode 100644 companion/src/themes/monowhite/16/edit.png create mode 100644 companion/src/themes/monowhite/16/exit.png create mode 100644 companion/src/themes/monowhite/16/fuses.png create mode 100644 companion/src/themes/monowhite/16/information.png create mode 100644 companion/src/themes/monowhite/16/library.png create mode 100644 companion/src/themes/monowhite/16/list.png create mode 100644 companion/src/themes/monowhite/16/logs.png create mode 100644 companion/src/themes/monowhite/16/movedown.png create mode 100644 companion/src/themes/monowhite/16/moveup.png create mode 100644 companion/src/themes/monowhite/16/new.png create mode 100644 companion/src/themes/monowhite/16/open.png create mode 100644 companion/src/themes/monowhite/16/paintbrush.png create mode 100644 companion/src/themes/monowhite/16/paste.png create mode 100644 companion/src/themes/monowhite/16/play.png create mode 100644 companion/src/themes/monowhite/16/preferences.png create mode 100644 companion/src/themes/monowhite/16/print.png create mode 100644 companion/src/themes/monowhite/16/profiles.png create mode 100644 companion/src/themes/monowhite/16/read_eeprom.png create mode 100644 companion/src/themes/monowhite/16/read_eeprom_file.png create mode 100644 companion/src/themes/monowhite/16/read_flash.png create mode 100644 companion/src/themes/monowhite/16/recentdocument.png create mode 100644 companion/src/themes/monowhite/16/save.png create mode 100644 companion/src/themes/monowhite/16/saveas.png create mode 100644 companion/src/themes/monowhite/16/simulate.png create mode 100644 companion/src/themes/monowhite/16/stop.png create mode 100644 companion/src/themes/monowhite/16/switch_dir.png create mode 100644 companion/src/themes/monowhite/16/update.png create mode 100644 companion/src/themes/monowhite/16/wizard.png create mode 100644 companion/src/themes/monowhite/16/write_eeprom.png create mode 100644 companion/src/themes/monowhite/16/write_eeprom_file.png create mode 100644 companion/src/themes/monowhite/16/write_flash.png create mode 100644 companion/src/themes/monowhite/24/add.png create mode 100644 companion/src/themes/monowhite/24/arrow-left.png create mode 100644 companion/src/themes/monowhite/24/arrow-right.png create mode 100644 companion/src/themes/monowhite/24/changelog.png create mode 100644 companion/src/themes/monowhite/24/clear.png create mode 100644 companion/src/themes/monowhite/24/compare.png create mode 100644 companion/src/themes/monowhite/24/configure.png create mode 100644 companion/src/themes/monowhite/24/contributors.png create mode 100644 companion/src/themes/monowhite/24/copy.png create mode 100644 companion/src/themes/monowhite/24/currentmodel.png create mode 100644 companion/src/themes/monowhite/24/customize.png create mode 100644 companion/src/themes/monowhite/24/cut.png create mode 100644 companion/src/themes/monowhite/24/duplicate.png create mode 100644 companion/src/themes/monowhite/24/edit.png create mode 100644 companion/src/themes/monowhite/24/exit.png create mode 100644 companion/src/themes/monowhite/24/fuses.png create mode 100644 companion/src/themes/monowhite/24/information.png create mode 100644 companion/src/themes/monowhite/24/library.png create mode 100644 companion/src/themes/monowhite/24/list.png create mode 100644 companion/src/themes/monowhite/24/logs.png create mode 100644 companion/src/themes/monowhite/24/movedown.png create mode 100644 companion/src/themes/monowhite/24/moveup.png create mode 100644 companion/src/themes/monowhite/24/new.png create mode 100644 companion/src/themes/monowhite/24/open.png create mode 100644 companion/src/themes/monowhite/24/paintbrush.png create mode 100644 companion/src/themes/monowhite/24/paste.png create mode 100644 companion/src/themes/monowhite/24/play.png create mode 100644 companion/src/themes/monowhite/24/preferences.png create mode 100644 companion/src/themes/monowhite/24/print.png create mode 100644 companion/src/themes/monowhite/24/profiles.png create mode 100644 companion/src/themes/monowhite/24/read_eeprom.png create mode 100644 companion/src/themes/monowhite/24/read_eeprom_file.png create mode 100644 companion/src/themes/monowhite/24/read_flash.png create mode 100644 companion/src/themes/monowhite/24/recentdocument.png create mode 100644 companion/src/themes/monowhite/24/save.png create mode 100644 companion/src/themes/monowhite/24/saveas.png create mode 100644 companion/src/themes/monowhite/24/simulate.png create mode 100644 companion/src/themes/monowhite/24/stop.png create mode 100644 companion/src/themes/monowhite/24/switch_dir.png create mode 100644 companion/src/themes/monowhite/24/update.png create mode 100644 companion/src/themes/monowhite/24/wizard.png create mode 100644 companion/src/themes/monowhite/24/write_eeprom.png create mode 100644 companion/src/themes/monowhite/24/write_eeprom_file.png create mode 100644 companion/src/themes/monowhite/24/write_flash.png create mode 100644 companion/src/themes/monowhite/32/add.png create mode 100644 companion/src/themes/monowhite/32/arrow-left.png create mode 100644 companion/src/themes/monowhite/32/arrow-right.png create mode 100644 companion/src/themes/monowhite/32/changelog.png create mode 100644 companion/src/themes/monowhite/32/clear.png create mode 100644 companion/src/themes/monowhite/32/compare.png create mode 100644 companion/src/themes/monowhite/32/configure.png create mode 100644 companion/src/themes/monowhite/32/contributors.png create mode 100644 companion/src/themes/monowhite/32/copy.png create mode 100644 companion/src/themes/monowhite/32/currentmodel.png create mode 100644 companion/src/themes/monowhite/32/customize.png create mode 100644 companion/src/themes/monowhite/32/cut.png create mode 100644 companion/src/themes/monowhite/32/duplicate.png create mode 100644 companion/src/themes/monowhite/32/edit.png create mode 100644 companion/src/themes/monowhite/32/exit.png create mode 100644 companion/src/themes/monowhite/32/fuses.png create mode 100644 companion/src/themes/monowhite/32/information.png create mode 100644 companion/src/themes/monowhite/32/library.png create mode 100644 companion/src/themes/monowhite/32/list.png create mode 100644 companion/src/themes/monowhite/32/logs.png create mode 100644 companion/src/themes/monowhite/32/movedown.png create mode 100644 companion/src/themes/monowhite/32/moveup.png create mode 100644 companion/src/themes/monowhite/32/new.png create mode 100644 companion/src/themes/monowhite/32/open.png create mode 100644 companion/src/themes/monowhite/32/paintbrush.png create mode 100644 companion/src/themes/monowhite/32/paste.png create mode 100644 companion/src/themes/monowhite/32/play.png create mode 100644 companion/src/themes/monowhite/32/preferences.png create mode 100644 companion/src/themes/monowhite/32/print.png create mode 100644 companion/src/themes/monowhite/32/profiles.png create mode 100644 companion/src/themes/monowhite/32/read_eeprom.png create mode 100644 companion/src/themes/monowhite/32/read_eeprom_file.png create mode 100644 companion/src/themes/monowhite/32/read_flash.png create mode 100644 companion/src/themes/monowhite/32/recentdocument.png create mode 100644 companion/src/themes/monowhite/32/save.png create mode 100644 companion/src/themes/monowhite/32/saveas.png create mode 100644 companion/src/themes/monowhite/32/simulate.png create mode 100644 companion/src/themes/monowhite/32/stop.png create mode 100644 companion/src/themes/monowhite/32/switch_dir.png create mode 100644 companion/src/themes/monowhite/32/update.png create mode 100644 companion/src/themes/monowhite/32/wizard.png create mode 100644 companion/src/themes/monowhite/32/write_eeprom.png create mode 100644 companion/src/themes/monowhite/32/write_eeprom_file.png create mode 100644 companion/src/themes/monowhite/32/write_flash.png create mode 100644 companion/src/themes/monowhite/48/add.png create mode 100644 companion/src/themes/monowhite/48/arrow-left.png create mode 100644 companion/src/themes/monowhite/48/arrow-right.png create mode 100644 companion/src/themes/monowhite/48/changelog.png create mode 100644 companion/src/themes/monowhite/48/clear.png create mode 100644 companion/src/themes/monowhite/48/compare.png create mode 100644 companion/src/themes/monowhite/48/configure.png create mode 100644 companion/src/themes/monowhite/48/contributors.png create mode 100644 companion/src/themes/monowhite/48/copy.png create mode 100644 companion/src/themes/monowhite/48/currentmodel.png create mode 100644 companion/src/themes/monowhite/48/customize.png create mode 100644 companion/src/themes/monowhite/48/cut.png create mode 100644 companion/src/themes/monowhite/48/duplicate.png create mode 100644 companion/src/themes/monowhite/48/edit.png create mode 100644 companion/src/themes/monowhite/48/exit.png create mode 100644 companion/src/themes/monowhite/48/fuses.png create mode 100644 companion/src/themes/monowhite/48/information.png create mode 100644 companion/src/themes/monowhite/48/library.png create mode 100644 companion/src/themes/monowhite/48/list.png create mode 100644 companion/src/themes/monowhite/48/logs.png create mode 100644 companion/src/themes/monowhite/48/movedown.png create mode 100644 companion/src/themes/monowhite/48/moveup.png create mode 100644 companion/src/themes/monowhite/48/new.png create mode 100644 companion/src/themes/monowhite/48/open.png create mode 100644 companion/src/themes/monowhite/48/paintbrush.png create mode 100644 companion/src/themes/monowhite/48/paste.png create mode 100644 companion/src/themes/monowhite/48/play.png create mode 100644 companion/src/themes/monowhite/48/preferences.png create mode 100644 companion/src/themes/monowhite/48/print.png create mode 100644 companion/src/themes/monowhite/48/profiles.png create mode 100644 companion/src/themes/monowhite/48/read_eeprom.png create mode 100644 companion/src/themes/monowhite/48/read_eeprom_file.png create mode 100644 companion/src/themes/monowhite/48/read_flash.png create mode 100644 companion/src/themes/monowhite/48/recentdocument.png create mode 100644 companion/src/themes/monowhite/48/save.png create mode 100644 companion/src/themes/monowhite/48/saveas.png create mode 100644 companion/src/themes/monowhite/48/simulate.png create mode 100644 companion/src/themes/monowhite/48/stop.png create mode 100644 companion/src/themes/monowhite/48/switch_dir.png create mode 100644 companion/src/themes/monowhite/48/update.png create mode 100644 companion/src/themes/monowhite/48/wizard.png create mode 100644 companion/src/themes/monowhite/48/write_eeprom.png create mode 100644 companion/src/themes/monowhite/48/write_eeprom_file.png create mode 100644 companion/src/themes/monowhite/48/write_flash.png create mode 100644 companion/src/themes/monowhite/add.png create mode 100644 companion/src/themes/monowhite/arrow-left.png create mode 100644 companion/src/themes/monowhite/arrow-right.png create mode 100644 companion/src/themes/monowhite/changelog.png create mode 100644 companion/src/themes/monowhite/clear.png create mode 100644 companion/src/themes/monowhite/compare.png create mode 100644 companion/src/themes/monowhite/configure.png create mode 100644 companion/src/themes/monowhite/contributors.png create mode 100644 companion/src/themes/monowhite/copy.png create mode 100644 companion/src/themes/monowhite/currentmodel.png create mode 100644 companion/src/themes/monowhite/cut.png create mode 100644 companion/src/themes/monowhite/duplicate.png create mode 100644 companion/src/themes/monowhite/edit.png create mode 100644 companion/src/themes/monowhite/exit.png create mode 100644 companion/src/themes/monowhite/fuses.png create mode 100644 companion/src/themes/monowhite/information.png create mode 100644 companion/src/themes/monowhite/library.png create mode 100644 companion/src/themes/monowhite/list.png create mode 100644 companion/src/themes/monowhite/logs.png create mode 100644 companion/src/themes/monowhite/movedown.png create mode 100644 companion/src/themes/monowhite/moveup.png create mode 100644 companion/src/themes/monowhite/new.png create mode 100644 companion/src/themes/monowhite/open.png create mode 100644 companion/src/themes/monowhite/paintbrush.png create mode 100644 companion/src/themes/monowhite/paste.png create mode 100644 companion/src/themes/monowhite/play.png create mode 100644 companion/src/themes/monowhite/preferences.png create mode 100644 companion/src/themes/monowhite/print.png create mode 100644 companion/src/themes/monowhite/profiles.png create mode 100644 companion/src/themes/monowhite/read_eeprom.png create mode 100644 companion/src/themes/monowhite/read_eeprom_file.png create mode 100644 companion/src/themes/monowhite/read_flash.png create mode 100644 companion/src/themes/monowhite/recentdocument.png create mode 100644 companion/src/themes/monowhite/save.png create mode 100644 companion/src/themes/monowhite/saveas.png create mode 100644 companion/src/themes/monowhite/simulate.png create mode 100644 companion/src/themes/monowhite/stop.png create mode 100644 companion/src/themes/monowhite/switch_dir.png create mode 100644 companion/src/themes/monowhite/update.png create mode 100644 companion/src/themes/monowhite/wizard.png create mode 100644 companion/src/themes/monowhite/write_eeprom.png create mode 100644 companion/src/themes/monowhite/write_eeprom_file.png create mode 100644 companion/src/themes/monowhite/write_flash.png diff --git a/companion/src/companion.qrc b/companion/src/companion.qrc index f08f47b75..7ef4edb27 100644 --- a/companion/src/companion.qrc +++ b/companion/src/companion.qrc @@ -809,5 +809,176 @@ themes/monoblue/48/contributors.png themes/monoblue/48/stop.png themes/monoblue/48/write_eeprom.png + themes/monowhite/16/edit.png + themes/monowhite/16/information.png + themes/monowhite/16/configure.png + themes/monowhite/16/switch_dir.png + themes/monowhite/16/list.png + themes/monowhite/16/wizard.png + themes/monowhite/16/logs.png + themes/monowhite/16/new.png + themes/monowhite/16/save.png + themes/monowhite/16/recentdocument.png + themes/monowhite/16/simulate.png + themes/monowhite/16/changelog.png + themes/monowhite/16/copy.png + themes/monowhite/16/write_flash.png + themes/monowhite/16/read_eeprom_file.png + themes/monowhite/16/clear.png + themes/monowhite/16/play.png + themes/monowhite/16/fuses.png + themes/monowhite/16/arrow-right.png + themes/monowhite/16/exit.png + themes/monowhite/16/moveup.png + themes/monowhite/16/read_eeprom.png + themes/monowhite/16/cut.png + themes/monowhite/16/arrow-left.png + themes/monowhite/16/write_eeprom_file.png + themes/monowhite/16/library.png + themes/monowhite/16/profiles.png + themes/monowhite/16/paste.png + themes/monowhite/16/print.png + themes/monowhite/16/compare.png + themes/monowhite/16/customize.png + themes/monowhite/16/saveas.png + themes/monowhite/16/preferences.png + themes/monowhite/16/movedown.png + themes/monowhite/16/currentmodel.png + themes/monowhite/16/read_flash.png + themes/monowhite/16/duplicate.png + themes/monowhite/16/add.png + themes/monowhite/16/update.png + themes/monowhite/16/contributors.png + themes/monowhite/16/stop.png + themes/monowhite/16/write_eeprom.png + themes/monowhite/24/open.png + themes/monowhite/24/edit.png + themes/monowhite/24/information.png + themes/monowhite/24/configure.png + themes/monowhite/24/switch_dir.png + themes/monowhite/24/list.png + themes/monowhite/24/wizard.png + themes/monowhite/24/logs.png + themes/monowhite/24/new.png + themes/monowhite/24/save.png + themes/monowhite/24/recentdocument.png + themes/monowhite/24/simulate.png + themes/monowhite/24/changelog.png + themes/monowhite/24/copy.png + themes/monowhite/24/write_flash.png + themes/monowhite/24/read_eeprom_file.png + themes/monowhite/24/clear.png + themes/monowhite/24/play.png + themes/monowhite/24/fuses.png + themes/monowhite/24/arrow-right.png + themes/monowhite/24/exit.png + themes/monowhite/24/moveup.png + themes/monowhite/24/read_eeprom.png + themes/monowhite/24/cut.png + themes/monowhite/24/arrow-left.png + themes/monowhite/24/write_eeprom_file.png + themes/monowhite/24/library.png + themes/monowhite/24/profiles.png + themes/monowhite/24/paste.png + themes/monowhite/24/print.png + themes/monowhite/24/compare.png + themes/monowhite/24/customize.png + themes/monowhite/24/saveas.png + themes/monowhite/24/preferences.png + themes/monowhite/24/movedown.png + themes/monowhite/24/currentmodel.png + themes/monowhite/24/read_flash.png + themes/monowhite/24/duplicate.png + themes/monowhite/24/add.png + themes/monowhite/24/update.png + themes/monowhite/24/contributors.png + themes/monowhite/24/stop.png + themes/monowhite/24/write_eeprom.png + themes/monowhite/32/open.png + themes/monowhite/32/edit.png + themes/monowhite/32/information.png + themes/monowhite/32/configure.png + themes/monowhite/32/switch_dir.png + themes/monowhite/32/list.png + themes/monowhite/32/wizard.png + themes/monowhite/32/logs.png + themes/monowhite/32/new.png + themes/monowhite/32/save.png + themes/monowhite/32/recentdocument.png + themes/monowhite/32/simulate.png + themes/monowhite/32/changelog.png + themes/monowhite/32/copy.png + themes/monowhite/32/write_flash.png + themes/monowhite/32/read_eeprom_file.png + themes/monowhite/32/clear.png + themes/monowhite/32/play.png + themes/monowhite/32/fuses.png + themes/monowhite/32/arrow-right.png + themes/monowhite/32/exit.png + themes/monowhite/32/moveup.png + themes/monowhite/32/read_eeprom.png + themes/monowhite/32/cut.png + themes/monowhite/32/arrow-left.png + themes/monowhite/32/write_eeprom_file.png + themes/monowhite/32/library.png + themes/monowhite/32/profiles.png + themes/monowhite/32/paste.png + themes/monowhite/32/print.png + themes/monowhite/32/compare.png + themes/monowhite/32/customize.png + themes/monowhite/32/saveas.png + themes/monowhite/32/preferences.png + themes/monowhite/32/movedown.png + themes/monowhite/32/currentmodel.png + themes/monowhite/32/read_flash.png + themes/monowhite/32/duplicate.png + themes/monowhite/32/add.png + themes/monowhite/32/update.png + themes/monowhite/32/contributors.png + themes/monowhite/32/stop.png + themes/monowhite/32/write_eeprom.png + themes/monowhite/48/open.png + themes/monowhite/48/edit.png + themes/monowhite/48/information.png + themes/monowhite/48/configure.png + themes/monowhite/48/switch_dir.png + themes/monowhite/48/list.png + themes/monowhite/48/wizard.png + themes/monowhite/48/logs.png + themes/monowhite/48/new.png + themes/monowhite/48/save.png + themes/monowhite/48/recentdocument.png + themes/monowhite/48/simulate.png + themes/monowhite/48/changelog.png + themes/monowhite/48/copy.png + themes/monowhite/48/write_flash.png + themes/monowhite/48/read_eeprom_file.png + themes/monowhite/48/clear.png + themes/monowhite/48/play.png + themes/monowhite/48/fuses.png + themes/monowhite/48/arrow-right.png + themes/monowhite/48/exit.png + themes/monowhite/48/moveup.png + themes/monowhite/48/read_eeprom.png + themes/monowhite/48/cut.png + themes/monowhite/48/arrow-left.png + themes/monowhite/48/write_eeprom_file.png + themes/monowhite/48/library.png + themes/monowhite/48/profiles.png + themes/monowhite/48/paste.png + themes/monowhite/48/print.png + themes/monowhite/48/compare.png + themes/monowhite/48/customize.png + themes/monowhite/48/saveas.png + themes/monowhite/48/preferences.png + themes/monowhite/48/movedown.png + themes/monowhite/48/currentmodel.png + themes/monowhite/48/read_flash.png + themes/monowhite/48/duplicate.png + themes/monowhite/48/add.png + themes/monowhite/48/update.png + themes/monowhite/48/contributors.png + themes/monowhite/48/stop.png + themes/monowhite/48/write_eeprom.png diff --git a/companion/src/helpers.cpp b/companion/src/helpers.cpp index 739353e63..89eb9961f 100644 --- a/companion/src/helpers.cpp +++ b/companion/src/helpers.cpp @@ -1503,9 +1503,15 @@ QString getTheme() case 0: Theme="classic"; break; + case 2: + Theme="monowhite"; + break; + case 3: + Theme="monoblue"; + break; default: Theme="monochrome"; break; } return Theme; -} \ No newline at end of file +} diff --git a/companion/src/images/originals/scripts/makewhite.sh b/companion/src/images/originals/scripts/makewhite.sh new file mode 100755 index 000000000..7f274d057 --- /dev/null +++ b/companion/src/images/originals/scripts/makewhite.sh @@ -0,0 +1,3 @@ +#!/bin/bash +mogrify -negate -level 0,0,0 *.png + diff --git a/companion/src/preferencesdialog.ui b/companion/src/preferencesdialog.ui index 7160c715b..31acbd438 100644 --- a/companion/src/preferencesdialog.ui +++ b/companion/src/preferencesdialog.ui @@ -7,7 +7,7 @@ 0 0 685 - 764 + 838 @@ -1596,6 +1596,16 @@ May be different from firmware language Monochrome + + + MonoWhite + + + + + MonoBlue + + diff --git a/companion/src/themes/monowhite/16/add.png b/companion/src/themes/monowhite/16/add.png new file mode 100644 index 0000000000000000000000000000000000000000..c6d052b9cc335770de79ecb1e5c846db592764f8 GIT binary patch literal 335 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^xl_H+M9WCijWi-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+g3lfkC`r&aOZkpafHr zx4R3&|Mvbf`++>p0*}aI1_r*vAk26?e?|1`JV0Ae}mnMZPEq?1~CaBu;WC4!z50F4f7it4^G_G=fdCK-Ezlamne%U1B2#q zE?Xv%J?cO+RZCnWN>UO_QmvAUQh^kMk%6I!u7RPhkzt5|rImrXm9d4kfuWUw!Ry~e r8&Ndm=BH$)RU$MPgczDx8CzNz8bUPOQ?CX(pMk;C)z4*}Q$iB}<-K53 literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/16/arrow-left.png b/companion/src/themes/monowhite/16/arrow-left.png new file mode 100644 index 0000000000000000000000000000000000000000..fc59e09a6d102dd257099d87a2efdbb263d072dd GIT binary patch literal 336 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^xl_H+M9WCijWi-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+g3lfkC`r&aOZkpafHr zx4R3&|Mvbf`++>p0*}aI1_r*vAk26?e?O+Bn8NNCpeg{*AcJ1>68J@EEP>RoA`IfsuPn818_eh2>qrqcAhK3Lg_tdL_?gzTt)z4*}Q$iB}(B);u literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/16/arrow-right.png b/companion/src/themes/monowhite/16/arrow-right.png new file mode 100644 index 0000000000000000000000000000000000000000..9d65859514124bbdc80da006541c6bda7d7b8d04 GIT binary patch literal 331 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^xl_H+M9WCijWi-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+g3lfkC`r&aOZkpafHr zx4R3&|Mvbf`++>p0*}aI1_r*vAk26?e?R3<5l?7yEzT=dhh| z^hVGjzZdH&J=Fy-{B*TtRZHnkkYUcbWwAj~uES=ssnJ}ib?SN(Tiw3;K5X9qBI9)%Bi qQ8eV{r(~v8A~YC;7@AobTUr?!LNwe{uLe4ufx*+&&t;ucLK6U>vtil* literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/16/changelog.png b/companion/src/themes/monowhite/16/changelog.png new file mode 100644 index 0000000000000000000000000000000000000000..d9ecbad27acac73a66e0bbb93e46c5eefef9f377 GIT binary patch literal 355 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^xl_H+M9WCijWi-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+g3lfkC`r&aOZkpafHr zx4R3&|Mvbf`++>p0*}aI1_r*vAk26?e?6LeYawMRx_n*bk! z!L*4+kxO2jc~r*nAYL?Y-!!}W&kSa6zIS)OH#r8hN43N?q9i4;B-JXpC>2OC7#SFv z=o%R68X1NdSXvpFTNztu8yH#{7`*;nv=K!^ZhlH;S|vh*L5QK5m9eFjp&>-WJ@sm! Qmlzm4UHx3vIVCg!0JuPH+5i9m literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/16/clear.png b/companion/src/themes/monowhite/16/clear.png new file mode 100644 index 0000000000000000000000000000000000000000..db9f9592045f062f04b4844905655ef5ac918c2d GIT binary patch literal 358 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^xl_H+M9WCijWi-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+g3lfkC`r&aOZkpafHr zx4R3&|Mvbf`++>p0*}aI1_r*vAk26?e?UQwuuSp3KJ~=n4`F`^ieBSfj$)JzTL*BZ`LH{FKbJN`wZ35JNL7V@oSTLx_fZ T>eWDBF)(<#`njxgN@xNA(xY+- literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/16/compare.png b/companion/src/themes/monowhite/16/compare.png new file mode 100644 index 0000000000000000000000000000000000000000..8b6008c8d0113e27e664d240968af2188e94adb8 GIT binary patch literal 396 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^xl_H+M9WCijWi-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+g3lfkC`r&aOZkpafHr zx4R3&|Mvbf`++>p0*}aI1_r*vAk26?e?TL*BZ`LH{FKbJN`wZ35JNL7V@oSTLx_fZ>eWEMGcb6%`njxg HN@xNAL9l{t literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/16/configure.png b/companion/src/themes/monowhite/16/configure.png new file mode 100644 index 0000000000000000000000000000000000000000..ddbef9d854cbf169f821382f83a9936e674df419 GIT binary patch literal 384 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^xl_H+M9WCijWi-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+g3lfkC`r&aOZkpafHr zx4R3&|Mvbf`++>p0*}aI1_r*vAk26?e?)+{IX~H^zZub^B?9v-2e6e)&KJU{{N5X(BcbkXo&fr{@=difiYj}0yc)) zA4c9&Ra!3q9idv{8c~vxSdwa$T$Bo=7>o=IO>_+mb&U)|3@oh-%&m+qv<(cc3=CfX sF4~BqAvZrIGp!P#!63xY%*xo(%Fqy^;huUm(7y}}p00i_>zopr051T2+5i9m literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/16/contributors.png b/companion/src/themes/monowhite/16/contributors.png new file mode 100644 index 0000000000000000000000000000000000000000..f4aaa352e0db74519a933012e3b30732d7c8cbcf GIT binary patch literal 484 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^xl_H+M9WCijWi-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+g3lfkC`r&aOZkpafHr zx4R3&|Mvbf`++>p0*}aI1_r*vAk26?e?N>^c z?C8rX;*jXnRL9V2DD~e>p)EnX-k~RKS`Fi(vP(B3B!&Jv@E^T>SEtu7G45;Hv$K2O z-}CtA)>kj}DW=$4vcV|$*puX=1?NI#yDY-K>S%a6u}(;52;>7nXW;WYu@Osuw=F ztV;!cht+&Ir^@`GSJigfO*Q?BMNY>1WD5=na<7{tRL)j&JM`-f-!o@e3fI1BUcN|c z+uYT=_}cnvrN#Ds48E%GK5fnI?a9BmYYe-uxAb3%{qv^huldXr#idy;lFq;MZdK2Y z<~+NorA~QPH_)T1C9V-ADTyViR>?)FK#IZ0z|ch3z);u7FvP&p%D~*p*h1UD(8|Ez u_3xsMC>nC}Q!>*k5gH6a49%>JEv*ap0*}aI1_r*vAk26?e?!n0|9# z&o3hz4WW&O8P#)hmP>QJH#X#0Go|>mEXPu&4T6jZ1I}0rdNxcrp>qFVfJlVYBX74g zyDAzSif70==)dviXKuI>uz$tkHCLVpIO*@St$Qi-&-2~I7gE<%Z*ds`?NlvsjVMV; zEJ?LWE=mPb3`PcqCb|ZOx<-Z}29{O^=2pfQ+6IPJ1_rNx7i~n*kei>9nO2F=U=U(x cW@T(?WoQV|a8JD&=sgAoPgg&ebxsLQ05P(1R{#J2 literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/16/currentmodel.png b/companion/src/themes/monowhite/16/currentmodel.png new file mode 100644 index 0000000000000000000000000000000000000000..73fe5866507822c2e443d00c5fe19544ef4353db GIT binary patch literal 414 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^xl_H+M9WCijWi-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+g3lfkC`r&aOZkpafHr zx4R3&|Mvbf`++>p0*}aI1_r*vAk26?e?(=aA6pgF^TkC( z)+e`4xMnsDv;97Y2bX0s^=rs^_<&D?3;*Zg?ZB@Th`d!e;Ecud5;?78|~z42JI zkEdlJi5^-H&2o=IO>_+mb&U)|3@oh-%&m+qv<(cc3=CfXF4~BqAvZrIGp!P#!63xY%*xo( Z%Fqy^;huUmFfNn{1`8H%0JQ*x8eT9klo~KFyh>nTu$sZZAYL$MSD+10f+@+{ z-GzbiZkO;9Adj=aBeIx*f$sFMGaVsZNI1w-${4ian+y4l0qS4Xaw zu&F;(Zn2}|<{w!>$LoEvM>H7oFRf|h;rq+U`n;RH^yGeyD_bY2GOnzf9`fc@h`{}i z4}af#sQScy|Jn44@QD9~?^neheW=?M;F_pt+ri^<%7URfuJJx&&EYR8KmIUhtxNlK z(DBaxmhW2fQ@G1F>Ro-m^Lq0uhEsuFr#AOqDq6zty^V45LcX2N5{usQmPp-N54 z_ne);kWwvijVMV;EJ?LWE=mPb3`PcqCb|ZOx<-Z}29{O^=2pfQ+6IPJ1_rNx7i~n* okei>9nO2F=U=U(xW@T(?WoQV|a8JGZFi-=7r>mdKI;Vst053MZv;Y7A literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/16/cut.png b/companion/src/themes/monowhite/16/cut.png new file mode 100644 index 0000000000000000000000000000000000000000..771f589738ec6fafb0277a7ac05d05665125a69a GIT binary patch literal 481 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^xl_H+M9WCijWi-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+g3lfkC`r&aOZkpafHr zx4R3&|Mvbf`++>p0*}aI1_o|n5N2eUHAey{c+1npF+}71(usVy+0(Y<9dY%J6*d*dZ-4V0HaFJ% zx%bi^PK^sc3#>#K1UBZRIN#fqm=amT6qz5lX3v{0@%%LAhUBjaen;l8m&#ZtzVM6f z+7VLTDc3Noy!2Jb-ss;f8`6XJE;yDwZN|n2r#KoE!^O^MFfL)a@!{-5d80WER)V$r zW?b-kw?VY`frYG>%jnGfyn*Dz=V z9Enl6adIBem#QVM5hW>!C8<`)MX5lF!N|bSMAyJj*T^u$z|zXV+{)NO+rZGuz~J@o sqKzmTa`RI%(<%`f3_=Xetc)$K3=JU~?x|NF25MmNboFyt=akR{0AC}i#sB~S literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/16/duplicate.png b/companion/src/themes/monowhite/16/duplicate.png new file mode 100644 index 0000000000000000000000000000000000000000..613620f8a3383b8263a169e0477e199a742e5471 GIT binary patch literal 402 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^xl_H+M9WCijWi-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+g3lfkC`r&aOZkpafHr zx4R3&|Mvbf`++>p0*}aI1_r*vAk26?e?2rOr9oeHajZwzwUaLjF`IH&u zi=Q~y$_GyTa>Aq_#odlINArY5V#NKf|Hu3nJnnidG>h@V`fYo5_A@H8#@)#{R3Wi3 z{c!u7;}7%{pQxOy7I3=p>-;Y!-2>+Qj%i=#0-dE=;u=wsl30>zm0Xkxq!^403{7+m z40VkRLkujf49u;JEwl{`tqcra|1R2yq9HdwB{QuOp}`=;(9Fu%(#p^fqT!x;H82Di O7(8A5T-G@yGywqgX@$%H literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/16/edit.png b/companion/src/themes/monowhite/16/edit.png new file mode 100644 index 0000000000000000000000000000000000000000..0b37d95a1976cf851006c824a45b898125cde063 GIT binary patch literal 444 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^xl_H+M9WCijWi-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+g3lfkC`r&aOZkpafHr zx4R3&|Mvbf`++>p0*}aI1_r*vAk26?e?!(uGmo*y!KE9q5m#w=gRl#j?;zJ3u?JwuBz1RKz{P6+X>jL)| ze@O0^4CgD0c^{D`nlnct_Cj@NM$p4^ZGk3VXEJScSwH2E{Aa9o(;q zl&w2t!R^ZMN@Ie)_mZGYhOMG6R{gS`5OXofYo_T@8~F!L)7jWpRWhu(QG7bQLh5N9 z+qRkJJd8d2_y1%#ydt=KMO@7$pa)b-Tq8mAm4U(Q-$ffyH00)|WTsUjG#G>!npqiJS{WKbG~83K28I;_gQu&X%Q~lo FCIFCmmG%Gt literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/16/exit.png b/companion/src/themes/monowhite/16/exit.png new file mode 100644 index 0000000000000000000000000000000000000000..ce5012efbe16d76a4a7ea74d9e6a2003442a80d0 GIT binary patch literal 427 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^xl_H+M9WCijWi-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+g3lfkC`r&aOZkpafHr zx4R3&|Mvbf`++>p0*}aI1_r*vAk26?e?$1ZTn@jQl(Tpn~kovx4m)4|-f3yeVEZ%Lv^{;Us;yo8r|ao^8JL-7>6))> zJ_U5IYKdz^NlIc#s#S7PDv)9@GB7mJH89jQG7K@Wv@$TaGPck*Ftjo-c>TL*BZ`LH n{FKbJN`wZ35JNL7V@oSTLx_fZ>eaxYVPNod^>bP0l+XkKF1?O~ literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/16/fuses.png b/companion/src/themes/monowhite/16/fuses.png new file mode 100644 index 0000000000000000000000000000000000000000..014d208317a662089cf47f3305c6291504bd99bb GIT binary patch literal 450 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^xl_H+M9WCijWi-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+g3lfkC`r&aOZkpafHr zx4R3&|Mvbf`++>p0*}aI1_r*vAk26?e?Gq z{euv%X{li)gWM8+r$?G+OpZKZy>K<_%jP@D0awG6gud&UtE>Oa`(*jzcgUB;7xXU7 zl5$9nO2F=U=U(xW@T(?WoQV|a8JD&7-9?z Mp00i_>zopr08!MPE&u=k literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/16/information.png b/companion/src/themes/monowhite/16/information.png new file mode 100644 index 0000000000000000000000000000000000000000..abfa639637c2eec4b1367629f2c212e435cec447 GIT binary patch literal 353 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^xl_H+M9WCijWi-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+g3lfkC`r&aOZkpafHr zx4R3&|Mvbf`++>p0*}aI1_r*vAk26?e?u0qzfV`?&;u=wsl30>zm0Xkxq!^403{7+m40VkR zLkujf49u;JEwl{`tqcra|1R2yq9HdwB{QuOp}`=;(9Fu%(#p^fqT!x;HPAy044$rj JF6*2UngHCEX~+No literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/16/library.png b/companion/src/themes/monowhite/16/library.png new file mode 100644 index 0000000000000000000000000000000000000000..bdaf1e809cc3c7c99d92b0de05c4899af150afb2 GIT binary patch literal 341 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^xl_H+M9WCijWi-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+g3lfkC`r&aOZkpafHr zx4R3&|Mvbf`++>p0*}aI1_r*vAk26?e?s4Mb zh_`oH{BdXJ6OeRUq5OK|jC&^z9AF4o=IO>_+mb&U)|3@oh-%&m+q zv<(cc3=CfXF4~BqAvZrIGp!P#!63xY%*xo(%Fqy^;huUm&=U*{p00i_>zopr0K0u< A7ytkO literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/16/list.png b/companion/src/themes/monowhite/16/list.png new file mode 100644 index 0000000000000000000000000000000000000000..647d4b8eb0d8c2ba616481da74221d7b18e83ae2 GIT binary patch literal 427 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^xl_H+M9WCijWi-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+g3lfkC`r&aOZkpafHr zx4R3&|Mvbf`++>p0*}aI1_r*vAk26?e?8c)HE$OvvYZBKKz(z9@eB<+YQY zY2~Zc3p)AyrLM^_e`7epqd6~mh!(UMEti;lfY%+HvSHzD=wmJsjk+^g4|VngE; z=epg>T;sCPtLvU3bIr4u27&oiVozpDGKMZwiJY)~hI-%28GZWgMgQxsiSG8CBsxDV z@f^^-swJ)wB`Jv|saDBFsX&Us$iUD<*T7KM$S}mf(#pWx%Gg5Nz|hLT;PvmKjVKy& n^HVa@DiInCLJZBUj4iDU4IvutsaFGohJnG;)z4*}Q$iB}=24H3 literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/16/logs.png b/companion/src/themes/monowhite/16/logs.png new file mode 100644 index 0000000000000000000000000000000000000000..15a7ec01a6bdd4fb177655f53d024586c9754113 GIT binary patch literal 399 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^xl_H+M9WCijWi-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+g3lfkC`r&aOZkpafHr zx4R3&|Mvbf`++>p0*}aI1_r*vAk26?e?t&vhnG2Q**@BDB=rp6q#2|qB+NJxaO?xWQis98 zu7%x>Qyr%-oY~m>Q1Ni$3v_~A?nu0mSf|kAs=<*`!JR7WRCv9o=IO>_+mb&U)| z3@oh-%&m+qv<(cc3=CfXF4~BqAvZrIGp!P#!63xY%*xo(%Fqy^;huUm(EAJwp00i_ I>zopr06qME>i_@% literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/16/movedown.png b/companion/src/themes/monowhite/16/movedown.png new file mode 100644 index 0000000000000000000000000000000000000000..b6e046183c2106c69ee2d1f5b4fa8b63a30b503e GIT binary patch literal 375 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^xl_H+M9WCijWi-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+g3lfkC`r&aOZkpafHr zx4R3&|Mvbf`++>p0*}aI1_r*vAk26?e?J6skQ zFr`n}(J;$RGw*?()b)!QBDVq`{^wYF<9d$Ty z@(fya@yF3Z)(rxaHZcA?sPA~?z!|P7;-;(@nFD5?5j*0LE&Mz@*gl2*dr{D%KPx{x z1KO=x;u=wsl30>zm0Xkxq!^403{7+m40VkRLkujf49u;JEwl{`tqcra|1R2yq9Hdw lB{QuOp}`=;(9Fu%(#p^fqT!x;HPD+344$rjF6*2UngGkNdoln3 literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/16/moveup.png b/companion/src/themes/monowhite/16/moveup.png new file mode 100644 index 0000000000000000000000000000000000000000..22debbc1374f93183fc1fd0ae791c2691eb1ec16 GIT binary patch literal 383 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^xl_H+M9WCijWi-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+g3lfkC`r&aOZkpafHr zx4R3&|Mvbf`++>p0*}aI1_r*vAk26?e?DF+}5h@}Kh!@&<+%Vj0DmjqO-< zcy3EvTa@{;pJ)5O{~(}xBI(4X)j)Rrv;R|peE;Li7CZye>Hk0f75`oT7|2{{P}m}^ zBB^I=VO*0`arD8Vg87bImnW7>&XKe;00EoCg2W0=;WU{R$6iK;)iXU7?fg+W0q6$R z64!{5l*E!$tK_0oAjM#0U}&OiV5n)WngY)Y@uynXk}pV`ghSr6b-rgDVb@N i2n_}yhGtgAmR5#_5DoX#tAXBSVDNPHb6Mw<&;$S+VuQl~ literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/16/new.png b/companion/src/themes/monowhite/16/new.png new file mode 100644 index 0000000000000000000000000000000000000000..fad723600dbfcdad84ce8a1ad80a0f3386762eb7 GIT binary patch literal 374 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^xl_H+M9WCijWi-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+g3lfkC`r&aOZkpafHr zx4R3&|Mvbf`++>p0*}aI1_r*vAk26?e?3?QZ&F4;mwwq-x4K^!cAo5nH;))kXD^@u#1&t-V6U3{MLfn**&@ zEpd$~Nl7e8wMs5Z1yT$~28JfO28Oyuh9L%)RtDx)#unNJhE@g!uYVV9MA49&pOTqY iiO^sWVrXV%Y-wd^2+?p)y&C9C1_n=8KbLh*2~7ac0dX<_ literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/16/open.png b/companion/src/themes/monowhite/16/open.png new file mode 100644 index 0000000000000000000000000000000000000000..8ef3df8910321f231d8c0fb76c8930326f0289da GIT binary patch literal 365 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^xl_H+M9WCijWi-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+g3lfkC`r&aOZkpafHr zx4R3&|Mvbf`++>p0*}aI1_r*vAk26?e?d&(+or?jYjU%$&EG)#+yC`{|I418#Csy_PHI5X z1BZ)$=P#7FIZ;lcZw|}E#Ku+WsTmHN>y=h1vm5C#{5cgFx}c8pA<#zE64!{5l*E!$ ztK_0oAjM#0U}&OiV5n)WngY)Y@uynXk}pV`ghSr6b-rgDVb@N2n_}yhGtgA amR5#_5DoX#tAUp0*}aI1_r*vAk26?e?p0*}aI1_r*vAk26?e?%L)1@>snWnF_0=iAL#5JNMC9x#cD!C{XNHG{07@FuB z80s1sh8S2{8JJrcTWA{?S{WF;{#~>YMMG|WN@iLmLW4nwp_!GjrIn!}M8iGxYG5!h OFnGH9xvXNS%G}U;vjb? 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 literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/16/read_flash.png b/companion/src/themes/monowhite/16/read_flash.png new file mode 100644 index 0000000000000000000000000000000000000000..e9c446ca6078e519de7b43725cd64f9b3077de28 GIT binary patch literal 562 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^xl_H+M9WCijWi-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+g3lfkC`r&aOZkpafHr zx4R3&|Mvbf`++>p0*}aIptaXQn9)gNb_LLAZBG}+5RLPt6L#x27mBpazi)n#LvW24 zo6uHn!QJi+rsNJdV6Fn$dAGL7-VGD{;eypw5mRB^SMP`x$$^ZPF_y zf8S$i`CQ?D*z6Pk-^#}K)U!+3o9=kOac|b2#4Ed>Z7H?;nQ;HSry#>>8{^ZK+&PmJ z9CZbXSsEPY6yKB*e$=pC?2bWLu^gvg)R&WG?Pqr8ukKAc7g@c=D7Czx*G4kxW^zN? zG|fp*n?)F#WY-j(usyq^QIu;5p0*}aI1_r*vAk26?e?lHd`VaFd z`GO)vJ^M1ZnSUgFUb#&(j@;|U?Y7x*l8TPfUEcKNQ&bLnDmI^8a{P$w_q0zoub037 z{Kdxe$L?Ey#3RJ+|6OFRtvJ;~C8+$Iv`Y4o&Pki~C!J={oKZNJH!S4K>yWd4FNz-c z9-OMVSugtFM&Iqf*38p0*}aI1_r*vAk26?e?) zWngY)Y@uynXk}pV`ghSr6b-rgDVb@N2n_}yhGtgAmR5#_5DoX#tASo&VDNPHb6Mw< G&;$VT4QHAF literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/16/saveas.png b/companion/src/themes/monowhite/16/saveas.png new file mode 100644 index 0000000000000000000000000000000000000000..5ca5d76573b8794d77ece42f68bb630ea49b826f GIT binary patch literal 369 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^xl_H+M9WCijWi-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+g3lfkC`r&aOZkpafHr zx4R3&|Mvbf`++>p0*}aI1_r*vAk26?e?fq161Rn=A;5386}Ix{V-w;X-2@oBh;A;+|* zciy>(tYnQf+Tj1$-v!#LTH+c} zl9E`GYL#4+3Zxi}3=Bp0*}aI1_r*vAk26?e?eB|G)lUeb@|%GWRa!ovepj?Ei267+Lsvznz`C z-mmk0T7Ty^7783;Ww=sVl*g9&zaD73YKdz^NlIc#s#S7PDv)9@GB7mJH89jQG7K@W zv@$TaGPck*Ftjo-c>TL*BZ`LH{FKbJN`wZ35JNL7V@oSTLx_fZ>eWD>Ffe$!`njxg HN@xNA!F6&h literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/16/stop.png b/companion/src/themes/monowhite/16/stop.png new file mode 100644 index 0000000000000000000000000000000000000000..dd8e904509bb7e434639c3d0ee70a8e28ef09a87 GIT binary patch literal 558 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H0wgodS2_SGmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCjKus+S48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fg!Ib3f z?!xfDz5mR9Adj=aBeIx*fm;}a85w5HkpLR4?&;zfQgQ3;or9bQ40sM4SXT0X>TTIi zFIaW{@;d!U|4_C5=A9^qU#y?xE8RQuwG!A#gxJ5%ebXs83U&DV`iJ# z#p-cauARH^gI9xieFTi9T)Om;_X>N-{fwlUWNdeUea%JY|Gc)|y1;N$Epd$~Nl7e8 zwMs5Z1yT$~28JfO28Oyuh9L%)RtDx)#unNJhE@g!uYVV9MA49&pOTqYiO^sWVrXV% aY-wd^2+?p)z4|av1B0ilpUXO@geCwcBc#9p literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/16/switch_dir.png b/companion/src/themes/monowhite/16/switch_dir.png new file mode 100644 index 0000000000000000000000000000000000000000..803b3592732c33c401d0ede5afc1be399d09047b GIT binary patch literal 410 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^xl_H+M9WCijWi-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+g3lfkC`r&aOZkpafHr zx4R3&|Mvbf`++>p0*}aI1_r*vAk26?e?^{K zy+S;h9TA<{XV)AAN598)%2j=o@eCXqSu7rc*;igxs zEyFi3E}qcTHtUD&2G%~7Z@m1fJ@c!d|3CkVAyIAi9KT;oGl9-iEpd$~Nl7e8wMs5Z z1yT$~28JfO28Oyuh9L%)RtDx)#unNJhE@g!uYVV9MA49&pOTqYiO^sWVrXV%Y-wd^ W2+?p)y&4!23=E#GelF{r5}E+F%ZfPw literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/16/update.png b/companion/src/themes/monowhite/16/update.png new file mode 100644 index 0000000000000000000000000000000000000000..ea09cb966b78c433a2f3e8975430f55dcc4b4948 GIT binary patch literal 402 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^xl_H+M9WCijWi-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+g3lfkC`r&aOZkpafHr zx4R3&|Mvbf`++>p0*}aI1_r*vAk26?e?$9fX{#nnJxNz2ivmY2wRh>W3eYVB-zxu!Q zALl>Z|NQ^){~iIul+6AA|NpE1`~SuNoB#d)%|7T7xYYm8^FQnV-Tz`Q>?G}Ua6V8+ z@xOG3c8+ED>dSmy{^#l0(yzntZhd*Od}#MXptDpmAm4U(Q-$ffyH00)|WTsUjG#G>!npqiJS{WKbG~83K28I9w NgQu&X%Q~loCIA7kk&*xa literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/16/wizard.png b/companion/src/themes/monowhite/16/wizard.png new file mode 100644 index 0000000000000000000000000000000000000000..b47deb6153be2c03f584f4ff996297626549deb3 GIT binary patch literal 476 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^xl_H+M9WCijWi-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+g3lfkC`r&aOZkpafHr zx4R3&|Mvbf`++>p0*}aI1_o|n5N2eUHAey{c-7OzF+}5h?L=EI=0FiQf1^_>tv9qD zF*WtNY~<8Da>~u%f!Gm|gR(nX-zX$#-q2{CaOl*LW2r1kH(DJ!T4lO@>h8UGQfIT{ z{apTir+2eP#veVi*K11I>^V#if+n`B#qCzVR{P=bvPQ<+uWroR@z%k1dauHRsmx_R z8Qu1LII1qvr0DIl^HGa#o>+d{t}kIWpZ#p6z2OnBi!MLj_uH)I`-!5C(B=1}qYGEq zNu_SwC)s_&bmP{Z8IR+-Hkw#hRxAv?^S?X2ZF!ANf5o}O%j_iujepkP-TzhoIm=&W z*&?6^RZCnWN>UO_QmvAUQh^kMk%6I!u7RPhkzt5|rImrXm9d4kfuWUw!Ry~e8&Ndm n=BH$)RU$MPgczDx8CzNz8bUPOQ?EV@)WG2B>gTe~DWM4fiU6!9 literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/16/write_eeprom.png b/companion/src/themes/monowhite/16/write_eeprom.png new file mode 100644 index 0000000000000000000000000000000000000000..bfd1f398f45f5c4ea97ea40a00be5b1c1f0da941 GIT binary patch literal 552 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^xl_H+M9WCijWi-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+g3lfkC`r&aOZkpafHr zx4R3&|Mvbf`++>p0*}aIptaXQn9)gNb_LLAMNb#U5RLP(7dLhZGfEu!ct0Y-LASSFyu)MjDf0Eo$(Pm{o)cNIHS5Dg>-;wvOHXe8^2shgc^-q@`39d^=9F`&P7CX3d@r{q`p>t+=BJf_w9T6W$%@n<(E%{2Y;W?JKMzbThXlDp6{NQ_DvG%x_51N+>S+u zkH{{(k+V3^dh3lQ{i+?jJ-vU{UzL}4uR3!{wZ0P=f~qC15hW>!C8<`)MX5lF!N|bS zMAyJj*T^u$z|zXV+{)NO+rZGuz~J@oqKzmTa`RI%(<%`f3_=Xetc)$K3=JU~?x|NF Q25MmNboFyt=akR{047n{LjV8( literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/16/write_eeprom_file.png b/companion/src/themes/monowhite/16/write_eeprom_file.png new file mode 100644 index 0000000000000000000000000000000000000000..d2b0d1f505cde18b6dc503fa9489efebc749dda5 GIT binary patch literal 536 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^xl_H+M9WCijWi-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+g3lfkC`r&aOZkpafHr zx4R3&|Mvbf`++>p0*}aIptaXQn9)gNb_LLAK~ERQ5RLP>7tUq{7YeX`xNpC+am9}B zsxA}WRr@w~=Pk*;c)UQlB7Zk$uKc3YNy^xqG!naBzKFJ9Fla4HvY6 zF1?tkwJhQK&Rm0%g$llU#j`HYc^X^yEPU4M6|3evb^kZz&aR9N&wDq{yg#G*{p(e} zZG5)hPMQ1Le7bqMzWBi)XK#BpV@LXXy@h6lt;?f6Ot`9^{o4HZ z-`6+)vZlqixxeR~wgDJoswJ)wB`Jv|saDBFsX&Us$iUD<*T7KM$S}mf(#pWx%Gg5N zz|hLT;PvmKjVKy&^HVa@DiInCLJZBUj4iDU4IvutsaGEcYGCkm^>bP0l+XkKUS!TM literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/16/write_flash.png b/companion/src/themes/monowhite/16/write_flash.png new file mode 100644 index 0000000000000000000000000000000000000000..6b80a90bc1f42e160ca7a84d0c111d0acd7b9bb3 GIT binary patch literal 569 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^xl_H+M9WCijWi-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+g3lfkC`r&aOZkpafHr zx4R3&|Mvbf`++>p0*}aIptaXQn9)gNb_LLABTpB{5RLPt7dCodEfit>aQ?gbRp*`) zQn5uIOZG3kzgTI*$`wl&HnmCJieVPL7tk!QF048D!jlUEy!*GmnAGgOZmED!n&0^i zPfcw8P7HW{$aebShXwCN|F5}uO?wLly^iS4o&pZtYnjJoDW4H_uC#cm}oGoKdKrd1mdJXSHfZVv)Tk zwt8qrZd#gts4Mfa7|$18!{q@+sTbYv_s%}<{rlO$Om?oR=goRw?M}aWK>4^v-Oq;` zp0qt*CslZ|$JF-xm1}>FHJ0xSv9tK%d4FB$)a`1v8*@)p-hLOn@b#k9>2r%u$!f>l zEW94Ry>!d^x(RD@mQ7EY@Z_1`eh;r(YtQVwH19@Mz4WeKZ}&8Fe_)Saa_na0*EL^( zL8@Bf8c~vxSdwa$T$Bo=7>o=IO>_+mb&U)|3@oh-%&m+qv<(cc3=CfXF4~BqAvZrI kGp!P#!63xY%*xo(%Fqy^;huW+VW0*EPgg&ebxsLQ09p;{p8x;= literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/24/add.png b/companion/src/themes/monowhite/24/add.png new file mode 100644 index 0000000000000000000000000000000000000000..337a3d68b10eee0c4b255d74c17294f6852f7ad6 GIT binary patch literal 360 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_*1mUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE z?e47jVL9V-o{Xbi;l)5VGN_igMwFx^mZVxG7o`Fz1|tJQ z6I}yCT_eK~14}Cdb1P#DZ39Cq1B2JUi#DQY$jwj5Oshm_FbFX;vof}{GBku}xTjtX Q^cMqzr>mdKI;Vst0J)oQfB*mh literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/24/arrow-left.png b/companion/src/themes/monowhite/24/arrow-left.png new file mode 100644 index 0000000000000000000000000000000000000000..b8de8b3fda9c2eea6b3ffc0d01f33a5741b59556 GIT binary patch literal 457 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_*1mUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE z?e4YUUmDwQX;EYmJceIk43=E}{R9^PTEyK_4(b?Ha$`4PJ==3fe3`23Ri zv~{y@d$(!de-O4_Vq4)g&wGE}Ru$4mL1;k=9Y0 z%+2lJRvNU`?m}MQB$f4*KefaE%U@qu$5?lO+1~N~-*BLBR7+eVN>UO_QmvAUQh^kM zk%6I!u7RPhkzt5|rImrXm9d4kfuWUw!Ry~e8&Ndm=BH$)RU$MPgczDx8CzNz8bUPO TQ?CXF90P-=tDnm{r-UW|x_G3t literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/24/arrow-right.png b/companion/src/themes/monowhite/24/arrow-right.png new file mode 100644 index 0000000000000000000000000000000000000000..9b2064ed99caec31bcf0e9f7bf825427c111a15b GIT binary patch literal 448 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_*1mUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE z?e4N<#NzbZ%ZlF3i6U(epHDUv;622n ztrQUxc_C?5;$4LwzjK-@)h5>`99)>XL2XgthN+S3ST8>_uM9u>dCBK}&-tFW1)nV2 zy7}p!`3zFowf1{ej81%JJCqg0_TX^qm8Z`y?_>Y)auZKSYirn>D*2YrjVpZOw(}xx}SIJ(z z#W;7#RF`8juijqqPk-HlX?d?%V~)koiU)c^wZt`|BqgyV)hf9t6-Y4{85o-A8W`#t z8HN~GS{ayI8Cz%@7+M(^y#8IZ5k*68eoAIqB|?Kih@qL4v89!vAwvF)(<# L`njxgN@xNAI1Q$8 literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/24/changelog.png b/companion/src/themes/monowhite/24/changelog.png new file mode 100644 index 0000000000000000000000000000000000000000..e43e3843079e9a897a6237b713c5e1e713b8a17a GIT binary patch literal 490 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_*1mUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE z?e4kNCJ}&e&pQ5oLEP{Eq%-rdnsgFSH)Mn6o3{u@q0a z9_Pk?5B%*Jo-4S%Ilb0n9nia~C9V-ADTyViR>?)FK#IZ0z|ch3z);u7FvP&p%D~*p z*h1UD(8|Ez_3xsMC>nC}Q!>*k5gH6a49%>JEv*aNS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE z?e4x*_iE-;L*t{zz*0nBCjINoUjE zE#E%yxNZHukE>Yxu6|7A`DbynDo-pn|6VZftgU6XpVr_1JL0dXD?W>>e{?6r59l}5 z64!{5l*E!$tK_0oAjM#0U}&OiV5n)WngY)Y@uynXk}pV`ghSr6b-rgDVb@N i2n_}yhGtgAmR5#_5DoX#tAWADz~JfX=d#Wzp$P!>Sgi^G literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/24/compare.png b/companion/src/themes/monowhite/24/compare.png new file mode 100644 index 0000000000000000000000000000000000000000..dcb84085a60c63f598798c31c50ddf4b83dd84ff GIT binary patch literal 654 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_*1mUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE z?e4&-ZasiF67Iy;M!i>=cu!cIT###f#OJb}F4(f6(V~#Ekgq z=Be+>i{EcAepmZ_PVs!zQ_|~ve26X%t-Zhhgm+uQ#}kjo>S zGFw7e#rKe)@|<+etw(k&nrtz34f9#)A!lTatezkQ3=I`7R2 z39QY!ywqD6uCaUwQ_qg)C%!f0K=k3(rGWYVY$FB0eS2pIy>AIiT z+x|%S+|7lJa`)zNoLf9O>YLBgTe~DWM4frWgX& literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/24/configure.png b/companion/src/themes/monowhite/24/configure.png new file mode 100644 index 0000000000000000000000000000000000000000..53b1c72b24c5ba10e882c0b7743deef84b5ea5d9 GIT binary patch literal 463 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_*1mUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE z?e4Aa~+lKYk_7+6{vm|GcJXd4(>85q3&U9=HJLvDUbW?CgegF%R)nU%4n Zm7yU-!#(wCVDK?8c)I$ztaD0e0sx-hrlkM? literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/24/contributors.png b/companion/src/themes/monowhite/24/contributors.png new file mode 100644 index 0000000000000000000000000000000000000000..f795f2efa8274139f09d4a91455a069f2e09ef8f GIT binary patch literal 595 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_*1mUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE z?e4c?53;c z(a}+_@PNZkLRwHs<$?SL&ImW{TxPLboQw9}ii}*kVZ#O?mxCO3T$45598=?LJE+8* zcC+Vt^;5rz#}1XQ+WhTSf2rB>j=PEH^}hbMc{rnb+TBg^Z;B6ZYG0N$E9CrRm6LvA zN}DFk_nf32>bv)_WWWxdXKfdQ7rR*{2z^;=@o>rYZ3m_}pXF@j-LPcs>eb1dHS%v0 z^_o>aOR9KoD^@+J@OiOq&6Vv*$0Z~-zn!~}|EwIB@j6NKhe;=6j1uoG`Yd{P!_}L6 zPUhe7)c3q}`tGFa`P^40TE$s}U$b~8S&_Bt$*p;>|43$DyJ+;~YV_=c!`iD=>yPNX zSv&LJlYNKRWi{Wnt9~+jwqN)?y9<}3*1c$ybX|Kw{QB1eyT0!KzG0eLiTnG+AmOO1 z-gggsvr7xrh3Frx|FFECae2h9-9OI1eGUw4)e_f;l9a@fRIB8oR3OD*WMF8bYhb8r zWEf&#X=Pw;Wo)5sU}$Av@cMVrMidRX`6-!cl?V+6A%gTe~DWM4fmW1wg literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/24/copy.png b/companion/src/themes/monowhite/24/copy.png new file mode 100644 index 0000000000000000000000000000000000000000..de532c3207fc1f770f41364690fb5e1134207002 GIT binary patch literal 498 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_*1mUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE z?e4?%h-$}tzx~|^xVNq85viy~t55yZC52OC7#SFv=o%R6 z8X1NdSXvpFTNztu8yH#{7`*;nv=K!^ZhlH;S|vh*L5QK5m9eFjp&>-WJ@sl}2s1Ev My85}Sb4q9e098!CBme*a literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/24/currentmodel.png b/companion/src/themes/monowhite/24/currentmodel.png new file mode 100644 index 0000000000000000000000000000000000000000..f571c2ea809f80c82d9cfea0903b7431cb71d3b3 GIT binary patch literal 506 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_*1mUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE z?e4jtxxq7WB@v{}T*p=KFwM({jX|2j_wh@k9 zo%HD6!@mYoXYRYC99o&^>)~;Nui>uZZG%PM&UT-FZkXbF>zYkbVan3!Sq6R=j+;#G znQs+iX!xb$RpnGKt=T_<)_$J;?&Q=hS7IiabiB;4jp;Mrwx{?w?|GM&JM-=>JT^s< zwWVO^^U2FE^D;Uro&Ve*zTV>hkM4h2)t8t3Jzu=YWHZqFswJ)wB`Jv|saDBFsX&Us z$iUD<*T7KM$S}mf(#pWx%Gg5Nz|hLT;PvmKjVKy&^HVa@DiInCLJZBUj4iDU4Ivut TsaFF-nt{R7)z4*}Q$iB}MNz=f literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/24/customize.png b/companion/src/themes/monowhite/24/customize.png new file mode 100644 index 0000000000000000000000000000000000000000..1382ed16919a948586eedf797d97372a23d44d90 GIT binary patch literal 528 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`2qYMOt#!Htq*&4&eH|GXHuiJ>Nn{1`8H%0JQ*x8eT9klo~KFyh>nTu$sZZAYL$MSD+10f+@+{ z-GzbiZkO;9Adj=aBeIx*f$sFMGaVsZNI1w-${4ian+y4l0qS4Xaw zu&F;(Zn2}|<{w!>$LoEvM>H7oFRf|h;rq+U`n;RH^yGeyD_bY2GOnzf9`fc@h`{}i z4}af#sQScy|Jn44@QD9~?^neheW=?M;F_pt+ri^<%7URfuJJx&&EYR8KmIUhtxNlK z(DBaxmhW2fQ@G1F>Ro-m^Lq0uhEsuFr#AOqDq6zty^V45LcX2N5{usQmPp-N54 z_ne);kWwvijVMV;EJ?LWE=mPb3`PcqCb|ZOx<-Z}29{O^=2pfQ+6IPJ1_rNx7i~n* okei>9nO2F=U=U(xW@T(?WoQV|a8JGZFi-=7r>mdKI;Vst053MZv;Y7A literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/24/cut.png b/companion/src/themes/monowhite/24/cut.png new file mode 100644 index 0000000000000000000000000000000000000000..2fb90f4de4965f05e6662515f2f73ddd6136fd03 GIT binary patch literal 651 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_*1mUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE z?e4I|{Hq__u53CJgruxo3Yxqp{9Vei?@w9K z0+XAWWohSU&b({8yR+i9M78q2c#fqSe?&t&g7Vj8r}w2EmDhQFBl7y|@DnbUW=fJL z=N)mIqHG-XP~iMEw@>RUk0oAzuRmqWg)K9h^s^Q%HSzLz(`a41_r@IS4eFArEpx0a z%vD=7pD)n6?!NSQ><1RVCr{@#sB<^Zc&MA#w5_Yl?1qnW8>eMx^J1$T=L`}Lt=Y3^ z7vGB?i!}1D9nnzCKE2l6)O(q!!{IHeru})jrJ)y8-~7nBx+hnc{Z^k$ruBtQx%XD( zmtAUECaRb+=hY6QYwk5#WdR+LM!jeBHuOHi;-`2D4* zT^q7}G_r2g@4bFxU)v&swCk?BmZpARrKNYZ=li*on6pc}R#l(gpX~YGcYlA8$RauU z$HyCXs6Td|@+iHg>-_qx|Nre8cpt3+rp2r)FXGPblbG=yllr(S&+ PsDZ)L)z4*}Q$iB}6D$IU literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/24/duplicate.png b/companion/src/themes/monowhite/24/duplicate.png new file mode 100644 index 0000000000000000000000000000000000000000..cf25aaf82124b04d23bf6a50dbfce6a0e423a0ab GIT binary patch literal 557 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_*1mUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE z?e4~{D@$NT>Y2R!}s_ymGaeTlC;=bI7GsB$t~Y@w7=tXiO^!jq1U zV!oY>2~Dy0IwBrk+jmfWmB*)F=Axdrs{+jTrb@hY4|`eYxY*-XpIUdzmCQhSyAO`+ z;^G~W|8KUJuCrL+zBPWinfxV-t^Zzj&sW|5O%v0h6Fc?)!Tq8mAm4U(Q-$ffyH00)|WTsUjG#G>!npqiJS{WKbG~83K R21X78gQu&X%Q~loCIIi##+m>C literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/24/edit.png b/companion/src/themes/monowhite/24/edit.png new file mode 100644 index 0000000000000000000000000000000000000000..8e4790d9db0929a6b6437ef0248c568e6dc0a333 GIT binary patch literal 556 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_*1mUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE z?e4rZFWAnM|%) zKB=>}9GCP>n3Jux$+ovvFN4`~ndCX9o`3^Ok1;M^lfuZ9eEQ784KvtoWO~|JJezYd z=K#~vDZB3EACRt`7Q`TLe@14B`@#5JNMC9x#cD!C{XNHG{0 z7@FuB80s1sh8S2{8JJrcTWA{?S{WF;{#~>YMMG|WN@iLmLW4nwp_!GjrIn!}M8iGx SYGB+jFnGH9xvXNS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE z?e4a_7SH7sBKZ_zMJ;G%EcOi_PKb>1djyGk@BZFZmOLFIZmw z{d+I}oX>|iJ+rS~TlAm5(S)7npI8Tz^O;Nkq!rGYRfldpqSraUp^h&?J?yIBwHxUV ztQCCP0w3)8Rn*-xN%7Co)V0A`CwT?SuLv6Edd9BYnf0y1^6L=~S%HrcXC--=INx8r z>TjBPDo=3wRqMx&3(jw{QsuQ>yzf@@#jQ)dZJ2Ev9|${4+@9dYAH)2aF@bN#!-bJv zv$HN9-PI^o6S#fW(iYjcmHx}#{JL`5ZdIlAY-Woz$E$lHH^)VUar@PLHA$QFJt%6Xn+0|umOiEBhjN@7W>RdP`( zkYX@0Ff`FMFw`|N3^A~@GBCF?w$L^(v@$Sw{kv!*iiX_$l+3hBga(5ULo+L5ODjV| Wh=zOW)xhXsVDNPHb6Mw<&;$VV(9nwj literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/24/fuses.png b/companion/src/themes/monowhite/24/fuses.png new file mode 100644 index 0000000000000000000000000000000000000000..689f13d8065b0241014a807e307cb1666fcaec4f GIT binary patch literal 581 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_*1mUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE z?e4slwd z10qeq8g>ou4aAZ}T`#CD(BL^^9ii0`*2S{ygHhK5<|l$z_O#4(;}3lDXW54tlPma| zdRwziXXmfAude+aBw#0AJO9o9pajJ^?K?j#UT!6j_0U4+YsS4#4Eo=AN~bK!HJP$B zHugY|*$#s_8lt(rs*X34#9nNEY5Izd_28Bpi&sr*TdX6%W5K%7*`8Hc?!ybV>`DiN zC3(3k-rXA=}tA>u=vK(-e1e7S-oUk<(IQ$`>mb-^&Yq8e^~yX zIcfbdiL<^TmB8RtEpd$~Nl7e8wMs5Z1yT$~28JfO28Oyuh9L%)RtDx)#unNJhE@g! uuYVV9MA49&pOTqYiO^sWVrXV%Y-wd^2+?p)y&4#43=E#GelF{r5}E+IY2lUt literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/24/information.png b/companion/src/themes/monowhite/24/information.png new file mode 100644 index 0000000000000000000000000000000000000000..ced19f760b82a0d2f4dfae68193cde6b882f8d5d GIT binary patch literal 395 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_*1mUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE z?e4YMMG|WN@iLmLW4nwp_!GjrIn!}M8iGxYM|E{7(8A5T-G@yGywpW CiI89b literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/24/library.png b/companion/src/themes/monowhite/24/library.png new file mode 100644 index 0000000000000000000000000000000000000000..6df67c7fce8c2df5f30bd54fd1712cea951fa822 GIT binary patch literal 435 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_*1mUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE z?e4TH|6AmtZ$9Y)3gx96XamI4S z)QguFTU`>m33Rt=iEBhjN@7W>RdP`(kYX@0Ff`FMFw`|N3^A~@GBCF?w$L^(v@$Sw u{kv!*iiX_$l+3hBga(5ULo+L5ODjV|h=zOW)xaQPVDNPHb6Mw<&;$U?(37$N literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/24/list.png b/companion/src/themes/monowhite/24/list.png new file mode 100644 index 0000000000000000000000000000000000000000..db7a54b7be897ac26b0ccad1a243165e59fd720f GIT binary patch literal 531 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_*1mUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE z?e4 zn@V5AEjl?G7bG-)ShmFVWq(FN0SD9Fo`1rQ3msRuItnPwnbo9F5x^nz=;?KZN7X;q zE%AP^^S15%#^U|O>l$;~4@~>~U&BCkRbqs_;whfWWv3om{r-Ju$(b3daVrI`a{K5> zE-Y~VcxY<$6SJajzVF(_an6#r&e$w2mOJtCzQ8dh@9FsrXNS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE z?e4mPSh&1ax`!t*zj{V%YQJ8M|}8P+Q)QuEYh0rb%+TOk`yDTXW(FWA(Eo zO;cro=IO>_+mb&U)|3@oh-%&m+qv<(cc3=CfXF4~Bq pAvZrIGp!P#!63xY%*xo(%Fqy^;huUmFgO_)JYD@<);T3K0RVvyr{4eo literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/24/movedown.png b/companion/src/themes/monowhite/24/movedown.png new file mode 100644 index 0000000000000000000000000000000000000000..598a774b8c54b17d9ac844867355d0e197e47216 GIT binary patch literal 439 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_*1mUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE z?e4+Hk3q{=ae`E^s=<%Ga zGV#V4=8722$cepkSyK&FRn0biWs{LM+5a~A0-`*>Du>i1@k=*bmZB=_~5b2Wedli9mPvTr$=)BfADf)aZJKf z{xAFwd6}CRa;L{`1cncTYKdz^NlIc#s#S7PDv)9@GB7mJH89jQG7K@Wv@$TaGPck* zFtjo-c>TL*BZ`LH{FKbJN`wZ35JNL7V@oSTLx_fZ>eawtVqoxe^>bP0l+XkK$VZWj literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/24/moveup.png b/companion/src/themes/monowhite/24/moveup.png new file mode 100644 index 0000000000000000000000000000000000000000..63ca20521799ac5bf3723f342941115092e68d52 GIT binary patch literal 438 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_*1mUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE z?e4BMn8o(lcEj zF=}L3FidQV@bY9`_*5jMfJt@X2aak*=hZI4N}Q+N-8uBUHD1hEd2i3p*_AV0=7gK4 zzl(4D`_jN_;*+XRyV9SATc1B2{r(rT{XBo>PI2#)2i}iGE^Ki~OJaMLvE94#?#tXS0v2Z;+OloDw=#8)Thx@plYiH@*L>Kqe)4PP zSf(3HYIEK^`}E?)FK#IZ0z|ch3z);u7FvP&p%D~*p*h1UD y(8|Ez_3xsMC>nC}Q!>*k5gH6a49%>JEv*aNS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE z?e4B}1-hv4ZY>v#kmo60$V#z;y=FPs^&zoO! z%wPEJ;ZJ#in8WujZT+TqCQ|Wfix}^s-PaeNouus8r_?X%ol}v0anr=fJx2@|O>>gd zv?~=$Q2Vy)g-Cyg>fuLHp8~#D*EVGx>QmXgXOrGd4o>6M`EB#FI|M^2=f(S0eG)q? zHHSCUBp}#vazV8M`?&)RwBWCAtmjI^_%YQYZ@Z6SgybNEBLoy zj{T3z;iq=hFSqn;QvrHbwZt`|BqgyV)hf9t6-Y4{85o-A8W`#t8HN~GS{ayI8Cz%@ z7+M(^y#8IZ5k*68eoAIqB|?Kih@qL4v89!vAwNS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE z?e400 zvyvx|C&}W9n&BPy?TPx$EY1>qPqP=)wY1)=Z~b5Yul;ZRFL~=9AL7Lq@!h=qT4IgF zl7bob^B)>bVcqWdqW;4Fc#AXjf8v>z@hxop`hVB|9S(XiqCpxP4QCi_cvNtquxNS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE z?e4OTdTRWy7#4{v7C3c=7HG@;6x>FxaG;8bJZJE1l$Kva;0zV5^ zJU*klfL+kNNS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE z?e4n{v##VA{p6SU!!L3%Z6jCH$yYsX3)@7ykER6#oNh9{dEDX1!F8#dURTs^SA0}_ z_^IU_{pWLjD|514zR>XVKf@E5im>3~Tq|CWMGMu}%-WKEdi9ZgtEBz&c6VHeOjm3X zSa&PWc8e3oR|DxsGCMowGIeJu@N>PjeYG>1wRO$H;*}S1?ppjm7|< z&k_zSOzd>gRdP`(kYX@0Ff`FMFw`|N3^A~@GBCF?w$L^(v@$Sw{kv!*iiX_$l+3hB iga(5ULo+L5ODjV|h=zOW)xcn9VDNPHb6Mw<&;$V8hR0U` literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/24/play.png b/companion/src/themes/monowhite/24/play.png new file mode 100644 index 0000000000000000000000000000000000000000..2df15672fc5736fcb420838e703c1e1941cb8d6f GIT binary patch literal 1005 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H0wgodS2_SGmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCjKus+S48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fg!Ib3f z?!xfDz5mR9Adj=aBeEDsdw{Xq$!t5Iii4gmjv*Dd-p;<*dnJI!^}N!*n|vIi459`l z4xF1sC-9kt90)kbC%PfTU?EeQwnB-3Rzp8W>%<4mPkzQmf7Dgj)Sq+w``#z7)Nfx? zE@jA4WuSm)xa$Aon0Bd96a%lV`n*-b7a19D7#5rsE;aHl+4`%jqV9mlY4=j6|EniC zf0(5lzu33sQhuZOmzpjUL9cBG)=Xq(uUj$sG9!b;3nd?x-L5Mho;dm6Wy9)*`&O5# z^4NZdR-8Yu*6M8i>3vLUyjyC*)PI{_HFDvMOmR@?q!W(d{YvR`aQXlmlONXE&l?pRi`Fe3OwIJxKDoJR}{!rZdUS<^(fUf8IWaH;g9_3{n|hO(tP zB}c?&m=-;_yUX2WZ9`Jk8oq?qzLJ{zS`G8oorw|=Ja8<&S=RSt^5zK90{`9nUN2_4 zu|-lUvof>TN`&!1V;g@M|Mz=Lw!bgM%CjF>#_#HGHSg+=jzj6JA%C`AkZ&3nme2Ig#OpkDi_vYD@ScG@w{h`O!1 z>L%0F=`ryPcm5d#GdnbLuQ|bB_V;$o`9A6MFQda8Cd8-bGO+xryv5WoSv8#5AuIPP z!;@=eou~G)%0%2&)e2^O_T79Qqs69e-dp}@Z+!5nRDS}4kOPwk1E&I`N&^c%&YLgX zb1$q>F*i=t1*U4%64!{5l*E!$tK_0oAjM#0U}&OiV5n)WngY)Y@uynXk}pV z`ghSr6b-rgDVb@N2n_}yhGtgAmR5#_5DoX#s}BP;NP=t#&QB{TPb^Aha7@WhN>%X8 bO-xS>N=;0uEIgSC%61H%u6{1-oD!MNS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE z?e4b56^@1~dE-}_K9V}pd0!T)+j)&(al6dfY&Y-l*ZD)a5;6XAx`J=?sN z6}`K?G03a(^Ui5&ncu!}QJt#NT-Q8#TFUFNZA#niO$%oDNcc=^IWJg41 z#r={!dC#(C|2<#*lFPpt|0Qun1WxADk`MK%Kae)l_E28LD!2Csh?ZA8(Ko1c=IR*BGH5MpR%Wo&6>Xb918PrVu# Pl?)7?u6{1-oD!MNS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE z?e4*M32ATVKq2xH5?#0ip4=f7OPQ~ow~ z{Z^KvZYvl3=Vyq%Y#o!Uy6`7w!Ol(7OAd1=gmk+sc;Vo(%KfB;!?G7WE~Ojfz6T`# zQoXInZpq$$P5gl2V6)=w@%Y^D$Rp%0~49HMSs|Ty}ns&c@HR2QSG59GR%BDeJ^=jKzyVx!utC)R6<9 zYFkSaSkG+yc!MdxoFnm;L(GxvjJsKX@2eLuA5Tc)%BiQ8eV{r(~v8A~YC;7@AobTUr?! WLNwe{uLcG;1B0ilpUXO@geCy+t+V_9 literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/24/profiles.png b/companion/src/themes/monowhite/24/profiles.png new file mode 100644 index 0000000000000000000000000000000000000000..e647a08c6c7c43bae9cf54cad9dea528c11f47b8 GIT binary patch literal 430 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_*1mUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE z?e4apXH-$rAd1A-GgSlS&9{t*@x750`}Ci}?o&?XkgAK7&uYkhyuQaiQ5hwYQS z;*#3aD;O50oW4|`Dm3d@=!#XZd@s(uB{EUEP$iMMV!^WNS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE z?e4(^K?&;zfVsX0kN_@uDQVI4C=U-dizEiaL zseFkz`=QxBv*JoF3w+FKatxSZ7_H2qC}VYLb)%C~&$^VwQoAn%9`2l|JZZ&2y%bj# zwzxGsmX4Qad(JMNkvw_l&x*o(bN9~v_V=#MpL@@L|E}B5&z~<8k~!hTqji<515+;w zJt+)o-+AWv9(!4{$vanG&p#vSFYqYli@PG%MJe6D4kww8oj>$GDcYJE%6M-SnY&Rh z$jQH>O`><=4KdF>VzD2~=k%WvNDA&bQd4ql`$m!ZZhHJ#f8T_Dl?X1mwxhgfM$xTB zZ`;1^T6IdlXxkJKJy)^!NBb|zF5W1hn;QKzIA}*YH=E5j!L%A?y&DtT{AwOFzE70p z2wvqoBP99MqgfNx?5@3DWUhLeCFAOYRQXRnzXk7hsqt7TY-MS#o4R9i=H67UY8j&? zv1{$#c6k=~ox3h&yw><$kcRdYpLi1m!P8vkcTNbzT}ZtZ@$A`z`z;Y0x7>cW<=4sm z2_F7!AC8^6H>DuhaB5xjUN3!H;lHJCe`L@6;AQoBw%_fvu%%t0EnK@zZoLTV40yiq zwL*LFz6(!!{$~9RFDtlG8}2<#O?KOQ896iQ>&tvwIm53ctmos_@@V?HZQ9b}x(`dk ztbHWDb)FB&-uzo}FnY{Pd;1?mR6wJM8)Y zkLQEEG9E0ScjJdHFkPvZxJHzuB$lLFB^RXvDF!10Lla#CLtP`o5Ccmq19K~53vB~K xD+7bqzl%1aXvob^$xN$6XfOydG_x|cv@$e=Xt<|deHf^L!PC{xWt~$(697vbV%q=! literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/24/read_eeprom_file.png b/companion/src/themes/monowhite/24/read_eeprom_file.png new file mode 100644 index 0000000000000000000000000000000000000000..4f15861bb9f91f16731d211b480f7693c00ca956 GIT binary patch literal 783 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_*1mUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE z?e4(_V;pyTSVsX0nl6MDhfynWX=l6a#y0fg( zK+}n%RfGF{>!u4nS!NMEok4Njfo4aN_H0rx_3Ap?BE+U>q@>i!YuKyeBgZ|-gJ+iY z@kjS&?mV{l>Goe=?VsPaocmv2@SnG8)zXC$r_Y|aTy$%4UHrote!IUa9eJG5zxbo7 z(W{>5kG6U4;Xa&-M<(o$dFgTdnunWM2FFJm?ls+~DrAixJJ@u8R9y8a>ra<$q1~m6 zGOkBix8KX#lBVrjbi6S4)SBRwl*9+qcfa~@fce5>1(pAqHg6VB{J%$Uvr00XnoiiQ z_lIZizZGt&lDRWGiD5->rhL$}qabyIrW3k|c9YL_fB3sQ86 z&EYpx&pUEcLNIx;?XBdZ`z?=`Nxh#UzRKtOwW`MlL_KYTqPDJ_e&IHIj&b<(xnVCt zU$17}Ra`fV&7XY{WB%MJMdxj|XdSowUEJ`pR*hLF=<(c^t5!XMOI^M$*sOMD1Dk$V z;mMld&8^&K5{siV&rMu-hh=k!#bgPQ_la^=tB&SWFXjEJ{QKY8sQFuePPCUY-DQ#) z^03$J>5TO5Jk_6zCPuEg?EBbcc1Am&zsb#~%U?M;v}V11xBFSM(c!&U7F{)&&&4=1 zB5%uu{15lizP5QhZ_D3c_VmY6W;6MKS1qq2@4uWpZ_WD)4*NFuecF5AN>(~M^U+tK zT5H1V8QT9|c9|u#h8vhrR7+eVN>UO_QmvAUQh^kMk%6I!u7RPhkzt5|rImrXm9d4k zfuWUw!Ry~e8&Ndm=BH$)RU$MPgczDx8CzNz8bUPOQ?EV@)WG2B>gTe~DWM4f3~onR literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/24/read_flash.png b/companion/src/themes/monowhite/24/read_flash.png new file mode 100644 index 0000000000000000000000000000000000000000..5768a805ad974a1c5edd9ae05a28c6ff45bb2e36 GIT binary patch literal 873 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_*1mUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE z?e4(Eak-ak_Vkx5t!3k+%8uf6jh9w4`~3 z=(G@y+(~*tJ2iy4q?$NS`FaSZx(0BHitZFRS#a@KluKUF7fI&aO9Y%)N@ul( zrIdUOv-0)R`uqQOlH0|VCqCz%Yy58e{`l{??>+7%6b+i^F59)zOE!UO zR%*@}+ncyDyL&heYHsmbe9QXk`GAGLQdWjHp9<_e^eSk(+Y`aIJA00`I*QL0T$-bB zqIA}YL!S1sKRgp>II9G5%NT~V^n2yJ`_NkbcXzvCxE z$t1Zvvq^4BD-AEFOmNq{(0qZbbakYkZji@ykpK^7sf#luxn!lTG#tBc%k* zGuJt4v%RluXw%Y}#NjUL^yay=-Jv!fz2F1NTsu#>#_U-z&CQ3W?9n4&a5XZ8eV$y? z#COEf=!4LLSJ_$G&bn4?}PtK`557~q(&KLbEm~hz1N2Y<>{OgvF6V${e z`)QkAF+6wSN&jo+N1kc2>V}K9mle!7wBnKasSgj1bZNL8TGp3T_E9-Xes0>UzRZ8e zbQ(?Kidbi#$*7&rbIq;TK5pM}p-GiTncV(wzm0Xkxq!^403{7+m40VkRLkujf49u;JEwl{`tqcra|1R2yq9Hdw lB{QuOp}`=;(9Fu%(#p^fqT!x;^NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE z?e4Q@k}=5=GkXOHPk*>T;T? zmYp*}P?ftig2OdTi966NXF~53-I=_zZrqrqqtUIoeJd;XlK3Ls?`!@YOg2tFcK-dQ z!gJ5&e6BnH$ac9M`>$w=|3Ci8H{4iJ6)4xeYgydPZw}Lhw*0ymdSYqVLOX6J6=s%2 zR`P6DZ5}BbX8mezH{H70G4AO9dtWwLU0L#Ry=}zdwI4#e>zIF(%B;$Iv+axFv@NTv zp1zI?HmbW9q*csPdFaWsbibE;+VRYqYd##&$m4sls3$isQ{|l8i|13rj%6(46IYt+ zd(LAUvyjD+{uK}Uo=pgIn&7wl@Kep`=UP{%rEOhM=qXwBGU{kqyLZr>TP7;)ej=;I zEJGJ$rfU5CJWcO|p^u(Y#H%BqOncOqo@sV?s`udQ_MvrR= zM*fOPZC);x;cFgmVVC)mu<1C%a-T;>Q`oORKV0kb>c)dc@unCf&#;KXn$KsCoLDO} z)9O-b$`3Z%6#-sH*ur~&5u;k-8c~vxSdwa$T$Bo=7>o=IO>_+mb&U)|3@oh-%&m+q zv<(cc3=CfXF4~BqAvZrIGp!P#!63xY%*xo(%Fqy^;huUmFuEBSJYD@<);T3K0RVYy B_=o@i literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/24/save.png b/companion/src/themes/monowhite/24/save.png new file mode 100644 index 0000000000000000000000000000000000000000..d4e895d54acf3019f1ad1ef5381095a5ecdd3eb5 GIT binary patch literal 418 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_*1mUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE z?e4VSZ^+(ppg}gqVOpY0XQT+jhW(-U`6Cj6u4GUxag8WRNi0dV zN-jzTQVd20h9 ZX=P{#(Qr?_8WNS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE z?e4Po6C~=(v^FhGP@!^?~>o~^-2eO5dZ4Zll?1IcK-Z7 zXK91=YG0ehA)n=QC@{nU2@7SzYs{oifRk z+h?XyR9a9m|A4v1{|#mN_P^MHK2|MpjVMV;EJ?LWE=mPb3`PcqCb|ZOx<-Z}29{O^ z=2pfQ+6IPJ1_rNx7i~n*kei>9nO2F=U=U(xW@T(?WoQV|a8JD&7`O}!p00i_>zopr E0PEMcEdT%j literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/24/simulate.png b/companion/src/themes/monowhite/24/simulate.png new file mode 100644 index 0000000000000000000000000000000000000000..6eb9c6a63aa4aea65f871959729a5adddc9933ce GIT binary patch literal 394 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_*1mUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE z?e4-~T87|N1Yv!TF8UzyI~W?H}0-YXVvSf7d^&XACm=^Z)<*|1RdP`(kYX@0Ff`FMFw`|N3^A~@GBCF? zw$L^(v@$Sw{kv!*iiX_$l+3hBga(5ULo+L5ODjV|h=zOW)j*#!FnGH9xvXZ{c literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/24/stop.png b/companion/src/themes/monowhite/24/stop.png new file mode 100644 index 0000000000000000000000000000000000000000..dd8e904509bb7e434639c3d0ee70a8e28ef09a87 GIT binary patch literal 558 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H0wgodS2_SGmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCjKus+S48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fg!Ib3f z?!xfDz5mR9Adj=aBeIx*fm;}a85w5HkpLR4?&;zfQgQ3;or9bQ40sM4SXT0X>TTIi zFIaW{@;d!U|4_C5=A9^qU#y?xE8RQuwG!A#gxJ5%ebXs83U&DV`iJ# z#p-cauARH^gI9xieFTi9T)Om;_X>N-{fwlUWNdeUea%JY|Gc)|y1;N$Epd$~Nl7e8 zwMs5Z1yT$~28JfO28Oyuh9L%)RtDx)#unNJhE@g!uYVV9MA49&pOTqYiO^sWVrXV% aY-wd^2+?p)z4|av1B0ilpUXO@geCwcBc#9p literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/24/switch_dir.png b/companion/src/themes/monowhite/24/switch_dir.png new file mode 100644 index 0000000000000000000000000000000000000000..384ec69975e296fcbd1ffa94f17cffa3797f185c GIT binary patch literal 539 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_*1mUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE z?e4~cEy(9m(H%)hwxZJquoc4=Ux%p}VPGyf)CUzQ~KOj9_=euy& ziVI9xGMgS~`Elhg@S3;q$YZsfLk;q-H!t?MnXD`~{i5ip^}=g$RmgFM4iNBF{{LwYVf#f4|E=Iovmq`u@V?`@vlMn|SJ=!u#czSC1ZS$O641&+sm7R__I zz3nG^{V(aOALGlHPPTst3^dge*NBpo#FA92 zp>1GjWnl37chN=^4Y~O#nQ4^>4F(~GW>&_QR)&TU4foWmfl=*$ B$dLd5 literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/24/update.png b/companion/src/themes/monowhite/24/update.png new file mode 100644 index 0000000000000000000000000000000000000000..3d71395a3540352fbef8b99245c3b2332ef98138 GIT binary patch literal 501 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_*1mUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE z?e4qVz@mQ6Zz zONr5Oi^p^JC(@T#W*?Yzu4s43zov}UVwp}%Ws~#{DowBtSS_L?WT2rpPsD3R>2=22 zPxhwiy`MXCr?CyYtoXZ$f9oYal&&tXeI4v8`YlW4^77+d;!;~?8ZFETyWG$qS{l=$ zVf2XiIA4vyjjh~;%+Dk<<@CO+I=f!VYgxZZ!n!>R&#Bbj^xZxq@YY)YinLQJ&o-YI zHduJfGE^>7=tkVh<;*TUH;?sL?>X$y#-8BY;oX|O?!>$M3VOS9IyfFz%dy#rx!jq3 ze~OQ~S>g0kEA?LsSp6?_sb|>tf&0a;CC-n4K36SqjVMV;EJ?LWE=mPb3`PcqCb|ZO zx<-Z}29{O^=2pfQ+6IPJ1_rNx7i~n*kei>9nO2F=U=U(xW@T(?WoQV|a8JD&7|09^ Mp00i_>zopr01LIV_W%F@ literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/24/wizard.png b/companion/src/themes/monowhite/24/wizard.png new file mode 100644 index 0000000000000000000000000000000000000000..337dcef52e5f102d83e5bdcaf1e122838f17eff9 GIT binary patch literal 610 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_*1mUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE z?e4a z=2Y%Nw|UCbW;fa!2YlPNd5`(4e4bq6NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE z?e4(_#?CIhdVsX0kl5fV8aFJsl?_1BT30drz zoUwTA(j)#l9Sf913WX;w3h8JSis?|$(%2zrs@=R=Z`QG{T^dtFbWFNdL|km0vPH{j zabaq*rl6sa;}r?zx{02B-IeJ^y=RNf&Og2P-}d>u;>igcONAbDUB9EVE-d2NzSCN@ zYtJlI`QbNt|3n1?=jPsB!3*wro_@RelKCwekw?FOD7IvD?o~W;=|%UyA393{#qSzQ zEiTkJ-~MPJ_cdkLs+b>a?6vy4@~VW>mgAigT}^Gt!EbtQz398Yc-f4l zYNtNybsH=b@9z02-Yj+Ya&mL-EuYYrYoD)}_EjzZ(gahBTo>b_T@I~MI$t&)Nh`Io zxiH7G+AwKqdfcx=9RaJNzx}x4y1eJsLi^x55qZ=4*L>Nx%Vgz;J5k%0#x6RvzV5L1 zRf%A=$Ey-eAGE!ddyy;?kx+PYuKpYIdZ&4ZtGpU_%Pq@`I2V$;ZbwYfo~vK>XfhP* zdfhekKNxT2)o_>B`aQ$*%;($povE4wOk=7gt`Q|Ei6yC4$wjF^iowXh&_vh3P}j&X z#K6+Zz}(8%LfgR5%D~|D@1l(;8glbfGSey%8Vo`V&8&NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE z?e4&)upQnpsh{fsFOR*We1ro=(!9KuJJU1PQ^$Pm{O0Ah%%*+67RGI5JHJ-s zk!MV=@<&UftiIV7Ww$R<&2r+{s9?3&*6ML#NGnf(_@h*@2=SE_(w846?CIdFT%s&@ zXeHf-uN%ZHof;y0Y= z$SGT|_kM1pOu-ou;W=MUd2GG4CY)6-^)qMs|C%pmxpKF3A5OohbtZJ>-h{IOb1i4A zzVNK&;kzBpZci=VJ2X zdvVX=d8#&R;h~vF;vd_dsdYD*kvc!l`D@De-D|#{w6yj7yE3S|N;@Q@)Xy^Q_N&zg zkEXqBN;40+nL0^!mQ8SefBvPT4P2SwcZ-j*JNJBwYIX~*mC1&sFt`!l%yncpt3+rp2r)FXGPblbG=yllr(S&+sDZ)L)z4*}Q$iB}{kcT+ literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/24/write_flash.png b/companion/src/themes/monowhite/24/write_flash.png new file mode 100644 index 0000000000000000000000000000000000000000..762f956d9f85b2c9c8f69c3892b55770a308c896 GIT binary patch literal 891 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_*1mUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE z?e4(^4;_2cTVsW~6O1#I_bcy5k`!BCgHGWgV zk?Q81*kg2#7lW^4sE=pr^L3&tW20oOt8#QrCoe?rqQuoGt*pj5_3duE@Mqr zzIDjZP=DFcsQ+`edig((IA%Ft@0`Ek?SlKypH)`;+;{)^&wcv-3dIV3a+;GInkJ~6 z6MY)@%{=~V?)uxg5AU$td9}k_cKdmupY}lJiv3XTD-8jHm6_QH!{6phWfs=Q{R`jGOv~~d~EtYLP@UVlKMLn z0iTN7Q!@2;-C&abd(LmW@R9Tz0BrviF%}bKahd{4w1*YnR%eib-wHv_9hh)=;2uV)JFa zr;nP}2J6Ny>@z&YvGcUI%8f%pVnXx3vNC)9WRP&W^FaRFtmj;l<;pKCS!}oArDW^< zy^mM)+eq!0V%JvDEfTrP@<7qP2L|geJGF^>x^sEjJ&}uD!pyvH$)wF87d@p}{~QtQ z6BODond#r6?p6oY*)taOY?S!K*?PsuLtEaE^ME9bhb%=v)s%% zPJEHKD%-zTNL>AD>~q)f@cl^d1Wxk4UEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!DWW*}!=Dp>1GjWnl37chN=^4Y~O#nQ4^> h4F(~GW>&_QR)&TU4foWmf&OG*@O1TaS?83{1OO)NZIb{1 literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/32/arrow-left.png b/companion/src/themes/monowhite/32/arrow-left.png new file mode 100644 index 0000000000000000000000000000000000000000..48deb71822d506939fbb429aebdcd14b05510b44 GIT binary patch literal 390 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE0wix1Z>k4UEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!DEhmgTsGz-v$e-n>k04stu}C7Wib)>DB_}Yo4NCZd7whizDbK0Fc{?2GDxmsTJrVp zbhAeB24NvHDUB@e{s^E`R7+eVN>UO_QmvAUQh^kMk%6I!u7RPhkzt5|rImrXm9d4k zfuWUw!Ry~e8&Ndm=BH$)RU$MPgczDx8CzNz8bUPOQ?Ca4nt{R7)z4*}Q$iB}shWD3 literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/32/arrow-right.png b/companion/src/themes/monowhite/32/arrow-right.png new file mode 100644 index 0000000000000000000000000000000000000000..3e6566edb950d8032c9e6ddd7c4f7b143bc2c682 GIT binary patch literal 386 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE0wix1Z>k4UEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!DMWsLXmsO<)t0QJ|4e_F9vr@IE%VK%kvCwn@)W_3d|e$movJSHnqnIS z5=*>~2+nKftv2HbcQ7eneZ*lh**E(<TL*BZ`LH{FKbJN`wZ35JNL7V@oSTLx_fZ>eWCWGcb6%`njxgN@xNAf{}YK literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/32/changelog.png b/companion/src/themes/monowhite/32/changelog.png new file mode 100644 index 0000000000000000000000000000000000000000..397a99c2cc82f93793e45e0f7b24b9a6142d6789 GIT binary patch literal 393 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE0wix1Z>k4UEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!DMi za*90BwIk`mb@vjMyfv{C&iOuL4ocy&-DD!Myl~k>u`|1hbe!C0C^j`*k5@2hcp9bD z#Kywd%=klKlbKk{vaWBfZ>DH0=6z-J+Ma>W{m01#^DS3Cb6{V0b0=TePFWA;|Nobl zeLD6zuzB`fo8Sp5CX2ZnuL518TH+c}l9E`GYL#4+3Zxi}3=Bk4UEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!DbJm=l}~BKtWw_S_fT zY*LjMC!ZVMT?j`==O>oLKpcWkO#R z?_aTLZ|2uOV$`|CYJWq{?6%dt4xocnOI#yLQW8s2t&)pUffR$0fuV`6fuXLEVTggH zm4UgHv4ysQp_PHb>)%BiQ8eV{r(~v8A~YC;7@AobTUr?!LNwe{uLk;^fx*+&&t;uc GLK6UAGJ*U6 literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/32/compare.png b/companion/src/themes/monowhite/32/compare.png new file mode 100644 index 0000000000000000000000000000000000000000..415091a75d8bcee5775222208a5770b74465e25f GIT binary patch literal 446 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE0wix1Z>k4UEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!D zj8aNrqK=MF=9y`d_=KZ(qVFyLRv z{(bre2ZK1Ztt=Z#gT6OZwa86TRf?Nk4UEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!D7EC!Q#CekD!p1a9#{DJ20q6xD*LM~4__3xC}2k{1TGrg2o9{nO9zpIwGMwFx^ zmZVxG7o`Fz1|tJQ6I}yCT_eK~14}Cdb1P#DZ39Cq1B2JUi#DQY$jwj5Oshm_FbFX; cvof}{GBku}xTjtX3_}J6Pgg&ebxsLQ08G-J3IG5A literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/32/contributors.png b/companion/src/themes/monowhite/32/contributors.png new file mode 100644 index 0000000000000000000000000000000000000000..89fbf7950284a9b6a5f040055dfc55b02d3776dc GIT binary patch literal 702 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE0wix1Z>k4UEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!D=sHA!3OM5to8glB#45*rq7-L<}gANe_!gq&C^zGlsqj{=6VT^=5aVNOa)KNjx@ z&bQahGd8#0>{IO9wI_4m=V#XW>G$iN?-rEeYgPRIe=*bfuU>_G|D*JaBQ`BQl>e(@ z_QU&2-l#6VDZB0fTm8keA7l@&PcPrG{=*@cjcPtIp(neV z@~KDNAv=w;{hj6BEb%lwVi6h^x!A2|hJX02L}B@*nNB*h($5J7dObd#*!WMfilZ=@ zWu3;7_@wJ+zjJeX&R6jiJ>07m82EZp)kCLQPnFXTSWf1UUUX9bK@;!2r~3~Xb#7hw zkfUeAgqiDiF#S#`^f}TvQ#RF$#qA5#++b_k@}MbC`paP$k6Q z_orxFTQcjF`K9++KmRUhka#@B=8OG0<3C<&gb(%1maoj+JNx!Iw&^z`zj|8+a>Qx= zR`(ELW!ZB(_)Ab)^V)mX@n8O5H`{YSeu{IQkC!IPQ((NRmbgZgq$HN4S|t~y0x1R~ z149#C14CUS!w>^YD+6;YV+(BqLn{M=*T0K4qG-s?PsvQHL})MwF*LI>wzM)dglM>@ SUJXnw3=E#GelF{r5}E*qiyxr? literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/32/copy.png b/companion/src/themes/monowhite/32/copy.png new file mode 100644 index 0000000000000000000000000000000000000000..837b2365df00fe0e606bc6dba7e11810cdbadf02 GIT binary patch literal 388 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE0wix1Z>k4UEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!DBtee9~`NVFXqlL_|R=!@y<4mVbY&p9IOTYivJt`WH-F#{4B9nO2F=U=U(xW@T(?WoQV|a8JD&=w}87Pgg&ebxsLQ04KeAfdBvi literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/32/currentmodel.png b/companion/src/themes/monowhite/32/currentmodel.png new file mode 100644 index 0000000000000000000000000000000000000000..89af84e3747fc76a91fcee30278f05cff395778b GIT binary patch literal 516 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE0wix1Z>k4UEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!DZ9g#FxTsx_aIi^O_QH2t<-Lb$FL#7F`WjY6Hg-x% zS#*Ey5Sf(pyybARX(Q{b9lush*>t+xaDuEO!;HsPSN5dZt*B>fSg?A_ZmqRa3}HK_ zpAnyS_0$Kmstrpj*>?Niir~1>82BPK@Y$1>+%i{B860rC5w+%$@Z()}3f_}q3{{^c zPkIt0Z=iB>V%ViQled&IUOs;FpU%ebp3X=P{#(Qr?_8W`pb44$rjF6*2UngENhzqbGY literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/32/customize.png b/companion/src/themes/monowhite/32/customize.png new file mode 100644 index 0000000000000000000000000000000000000000..1382ed16919a948586eedf797d97372a23d44d90 GIT binary patch literal 528 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`2qYMOt#!Htq*&4&eH|GXHuiJ>Nn{1`8H%0JQ*x8eT9klo~KFyh>nTu$sZZAYL$MSD+10f+@+{ z-GzbiZkO;9Adj=aBeIx*f$sFMGaVsZNI1w-${4ian+y4l0qS4Xaw zu&F;(Zn2}|<{w!>$LoEvM>H7oFRf|h;rq+U`n;RH^yGeyD_bY2GOnzf9`fc@h`{}i z4}af#sQScy|Jn44@QD9~?^neheW=?M;F_pt+ri^<%7URfuJJx&&EYR8KmIUhtxNlK z(DBaxmhW2fQ@G1F>Ro-m^Lq0uhEsuFr#AOqDq6zty^V45LcX2N5{usQmPp-N54 z_ne);kWwvijVMV;EJ?LWE=mPb3`PcqCb|ZOx<-Z}29{O^=2pfQ+6IPJ1_rNx7i~n* okei>9nO2F=U=U(xW@T(?WoQV|a8JGZFi-=7r>mdKI;Vst053MZv;Y7A literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/32/cut.png b/companion/src/themes/monowhite/32/cut.png new file mode 100644 index 0000000000000000000000000000000000000000..c67cdbc059ab671ca0023a18769510e8939f23df GIT binary patch literal 693 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE0wix1Z>k4UEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!DD4;%Q`0&b zv5Bwbs0r2H7K^z*w5^$-79b8yk(Z##_N^v!b?-)}CEd;6WH)10XL z=QjO4Uz$Bh&3AQv?VSU^ZD)kNaP+SFw!m^?WOButpED01(BhpYuxR3>e1#)IykVbt zAFXJ)BJld!dgZK^eKU@JvifjoZ1+2MjUaPl>69?O=Zu+3c;fIz2|nsf8n! zD=o+Nky19p+9QR(^5b1QvXq4X-fVK5`$w)u?Ul!+ed|;`uiq-~=+9gyJ8z91!`&;n z<&90H{w15-Z?K%3;d5T9=>_FY+fudI#o+tBT7;dOH!?pi&B9UgOP!uiLQa6u90Dg zfu)s!xs|bnwt=CQfx+wFMH^8xFVdQ I&MBb@0K}peg8%>k literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/32/duplicate.png b/companion/src/themes/monowhite/32/duplicate.png new file mode 100644 index 0000000000000000000000000000000000000000..5bbda5fa968f703f288eb2fdab7c792dd38372ea GIT binary patch literal 466 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE0wix1Z>k4UEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!D- z(_bo~Fhg$Y*HwJ&vzctxe^|%+;gf)A!_xK@j2-P9H*8#+9zWiEYES08=FG(T|BNm7 z?G!!pRPThdSmc*}f%Ob)*moK2UQo)E5X|=@%%A^Ft;0<{7QvfWQx}x7Jcya?_(hyy z+gC-VGdmdl!&0tATAiw!ZrnLzr}i$RS?8T3@|W2&>|y-<^@a1?DFqjR-cl`bjVMV; zEJ?LWE=mPb3`PcqCb|ZOx<-Z}29{O^=2pfQ+6IPJ1_rNx7i~n*kei>9nO2F=U=U(x cW@T(?WoQV|a8JD&7=jE8p00i_>zopr0FsuYrT_o{ literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/32/edit.png b/companion/src/themes/monowhite/32/edit.png new file mode 100644 index 0000000000000000000000000000000000000000..8076a87944bf7f0799bd8bf22ba88cfb58fdc17f GIT binary patch literal 543 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE0wix1Z>k4UEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!D)eqy+Ay`$p!Z2dSvCw2v% z%|~8-F`kt&Q>gg)CL@=ksnaI7vpha|I#JP4?8QdqC8y-yXC?7}R_6M$@aY2A$?-ZD z!qX?@ywcke;XaXV-FD5r{x27@&F+xUoVkOcLpWLeA#2O6i8Cxaj2Ud?J6C$mVSUib zD|XtxH0wIE*usOebW5k{d^+PGFl$RBk4UEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!D>C0>-|EDIz5%9v&hh2PZoG4yt&3BQ0m~j?|bNn~nchZvB0| zY(=ci)+_c5)WngY)Y@uynXk}pV`ghSr6b-rgDVb@N i2n_}yhGtgAmR5#_5DoX#tAP>4z~JfX=d#Wzp$PzFtJ!k^ literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/32/fuses.png b/companion/src/themes/monowhite/32/fuses.png new file mode 100644 index 0000000000000000000000000000000000000000..9df1d5ff4cebc2fb6c1d2666842ada29ccbc8fea GIT binary patch literal 637 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE0wix1Z>k4UEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!DHRL}Lf%tp^jz2JT z`fK;{oRmKnS>fk6CoPw_?p`AQ>5a!bnPv3{)}5*f^j3d&d->gWhAtB>YtH(o8>N%W z^-k_X_^fE|{)h#S-|cz%W@pEfl!H@!Zq9vV!SQz6Q=0>A`ZJ7Vb<$Tp(Ay@m>STGr z;#uodJe7@%c6l$&c6ECZcC^YD+6;Y zV+(BqLn{M=*T0K4qG-s?PsvQHL})MwF*LI>wzM)dglM>@UJZk4UEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!D%e{Qxok!{J4H0(x6rlOzOu)LQm_nBOQkUtEGSLh)F@kq`Ze zOoz2E#UAju@v|kSLF;Ho?8O7iU25129u!C8<`)MX5lF!N|bSMAyJj z*T^u$z|zXV+{)NO+rZGuz~J@oqKzmTa`RI%(<%`f3_=Xetc)$K3=JU~?x|M;gMfj- M)78&qol`;+06STN00000 literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/32/library.png b/companion/src/themes/monowhite/32/library.png new file mode 100644 index 0000000000000000000000000000000000000000..a7b1a1e61fb0b59c4f6663c1d2a0e03fee156886 GIT binary patch literal 378 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE0wix1Z>k4UEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!DRXeKZQ=ZNDu}VC_aKMB?=Izrw9~JqrLK)xz2H(@ zmd+=~+nw=@hrE8@KeRt}$z)dHEwz)3K4~ubE__6L#$;c{B_5}D-0x&(xHH*X-1bg= z4bUwNswJ)wB`Jv|saDBFsX&Us$iUD<*T7KM$S}mf(#pWx%Gg5Nz|hLT;PvmKjVKy& n^HVa@DiInCLJZBUj4iDU4IvutsaFGi%D~|1>gTe~DWM4fG)a8+ literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/32/list.png b/companion/src/themes/monowhite/32/list.png new file mode 100644 index 0000000000000000000000000000000000000000..b88fb932239ee523fdaf6b2635bf2f3a3d12450f GIT binary patch literal 511 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE0wix1Z>k4UEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!D$aRlG;xmtyNX^OWc;f{<-hY=i+=>l{l58 zPxXzh3lvhF*k4UEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!D$Gvs1^`&-U$KFXYBM^8Y^U zXMDgY&uwp7gWa?u#?^e2zX-=Hxlq_3I=^B|ti{Fc(~Cl{Hn_^y-D%v%>sW9$ezn+! z2eQ^pzTY2Q(_FXe+ftqxpSzk5-TlO{ZRdP`(kYX@0Ff`FM zFw`|N3^A~@GBCF?w$L^(v@$Sw{kv!*iiX_$l+3hBga(5ULo+L5ODjV|h=zOW)xbbz OVDNPHb6Mw<&;$UWk4UEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!D1Scd2>}Iv$G1;)yce13@x9eNt?|+{(%WcJ- zBdWirK8R=4RrT8yxksBz%F6mxY3i3 z6PMYr;B56awcRsx92DHx?kgNQIj1_2$rKUyDYXl z==j#YSyscekuBj>@*k#+$?wz`y$WB)Vy{@i#CxwxEJWOS8qi0oC9V-ADTyViR>?)F zK#IZ0z|ch3z);u7FvP&p%D~*p*h1UD(8|Ez_3xsMC>nC}Q!>*k5gH6a49%>JEv*a< WAsX(fR|5l&fx*+&&t;ucLK6UMVVbD` literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/32/moveup.png b/companion/src/themes/monowhite/32/moveup.png new file mode 100644 index 0000000000000000000000000000000000000000..a241f0d7f12a2cdfe94b1fc217de4bce722317e5 GIT binary patch literal 444 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE0wix1Z>k4UEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!D;D&fV>#0b-Uq+`|NIXE_m$2weEXmO@BeRp#^;{q4KM!-@Aw9i zuyNy(;cP{1Y){>*0=rV`M>zVpO;4@7VwAXaf*94 zb_*sp@P({o?#i%R$ySlvaeYFP1IM)mx$5T_9{-k4UEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!DpMSKi(XNY;>@cP5B&V6#YIvinCn=615<5Lu6u?4-dw6s^}c|mkbgp(BJ<0JPWMBznIkR~7*|e;@JdPF$*l1? zK+)IwNB(86nz_w!pE=YM+4t<zm0Xkxq!^40 z3{7+m40VkRLkujf49u;JEwl{`tqcra|1R2yq9HdwB{QuOp}`=;(9Fu%(#p^fqT!x; SH830)7(8A5T-G@yGywpN@Pp(4 literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/32/open.png b/companion/src/themes/monowhite/32/open.png new file mode 100644 index 0000000000000000000000000000000000000000..36416d0170c004b7c9bf4f1de857bc4cc4c03b89 GIT binary patch literal 449 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE0wix1Z>k4UEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!D9Q75Rc=@f6hBdCM*j0zk>0LdBemK z=5Gdn+#6>+u(!+jD=%vBC;i9yjx;5%?SJjp>1GjWnl37chN=^4Y~O#nQ4^>4F(~GW>&_QR)&TU4foWmfdR(A;OXk; Jvd$@?2>=x_nKA$X literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/32/paintbrush.png b/companion/src/themes/monowhite/32/paintbrush.png new file mode 100644 index 0000000000000000000000000000000000000000..62cefc607ea34526b4d04bd34a8499c827d4e890 GIT binary patch literal 614 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE0wix1Z>k4UEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!Dc-OtjV-J3o0?#;a-uXtYa{mkV`nSIampAO^JwyAUW9TdNJTkyuidGaEUxMpk= z-_B&r)mw4Okp0<*_Fa#17yJITxM%ik!@`%^)_XZ*cChB?hM26Z^xRjh#k(`SA=rgK zY4+MBqH{DZteU2}S8MU6EGw^|gSw(_PT3uSMIFA;|E{^VC?qXEsZ_&MV{EGx@VL)g zPJ++&afjhEf#+{#y$Ec4`Cf*(qM||EZP^UgZ@#x>O+Wk2HG3hal_E28LD!2Csh?ZA8(Ko1c=IR*BGH5MpR% bWo&6>Xb918PrVu#s|*aDu6{1-oD!M<k4UEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!DWFXP9f6~GSk_JEa zvWxXQHa`(fn~<=)LeHt`pdgQ9&l7_Qxv|l^bQ)U-2XQTpJ^~Gf0h%;v?1|eV~g#E>iG*oewAG65}){BX%lBKL!QW& zzsd%im|IiqqLRP5Fc!_duXd32gv`F}t*@@AX0F)0ETT!XY=-a(T)%8P&L++tdl z=fZtfxA*&#-}js48E)vZJdyV~eb_WAi!pubd0Tq8mAm4U(Q-$ffyH00)|WTsUjG#G>! dnpqiJS{WKbG~83K1_mJmgQu&X%Q~loCIHF*rn~?E literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/32/play.png b/companion/src/themes/monowhite/32/play.png new file mode 100644 index 0000000000000000000000000000000000000000..2df15672fc5736fcb420838e703c1e1941cb8d6f GIT binary patch literal 1005 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H0wgodS2_SGmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCjKus+S48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fg!Ib3f z?!xfDz5mR9Adj=aBeEDsdw{Xq$!t5Iii4gmjv*Dd-p;<*dnJI!^}N!*n|vIi459`l z4xF1sC-9kt90)kbC%PfTU?EeQwnB-3Rzp8W>%<4mPkzQmf7Dgj)Sq+w``#z7)Nfx? zE@jA4WuSm)xa$Aon0Bd96a%lV`n*-b7a19D7#5rsE;aHl+4`%jqV9mlY4=j6|EniC zf0(5lzu33sQhuZOmzpjUL9cBG)=Xq(uUj$sG9!b;3nd?x-L5Mho;dm6Wy9)*`&O5# z^4NZdR-8Yu*6M8i>3vLUyjyC*)PI{_HFDvMOmR@?q!W(d{YvR`aQXlmlONXE&l?pRi`Fe3OwIJxKDoJR}{!rZdUS<^(fUf8IWaH;g9_3{n|hO(tP zB}c?&m=-;_yUX2WZ9`Jk8oq?qzLJ{zS`G8oorw|=Ja8<&S=RSt^5zK90{`9nUN2_4 zu|-lUvof>TN`&!1V;g@M|Mz=Lw!bgM%CjF>#_#HGHSg+=jzj6JA%C`AkZ&3nme2Ig#OpkDi_vYD@ScG@w{h`O!1 z>L%0F=`ryPcm5d#GdnbLuQ|bB_V;$o`9A6MFQda8Cd8-bGO+xryv5WoSv8#5AuIPP z!;@=eou~G)%0%2&)e2^O_T79Qqs69e-dp}@Z+!5nRDS}4kOPwk1E&I`N&^c%&YLgX zb1$q>F*i=t1*U4%64!{5l*E!$tK_0oAjM#0U}&OiV5n)WngY)Y@uynXk}pV z`ghSr6b-rgDVb@N2n_}yhGtgAmR5#_5DoX#s}BP;NP=t#&QB{TPb^Aha7@WhN>%X8 bO-xS>N=;0uEIgSC%61H%u6{1-oD!Mk4UEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!D?qRu{@8rIm2X@& zZrIF!LpLIdqwJT+wtWs}OHMN1;Bb;+7d>+5)S**OIxO-BoP;j1F*W^;e6!)jxjQp` zgE-EGRHvOcPk%34CX}-AV#J02`x!JgtLs`$diIC&*d}FW$&pB_~I_h~+)z-Q8E`E1sAl=wEuSF?#kI zmo2dk`A@_Wyi}bf#J*WIC^i24dgt?2Lla-t9p=&tvi$$DXX;hU2y8sg5LhiyAhG?p z(41p$6b~5vmG20t_Gg!2mhJZVI>qXNSc7m&?}c==S5K={&lf4a-?+c-)AQ}0&AC@h z^ESDBa|1ARRZCnWN>UO_QmvAUQh^kMk%6I!u7RPhkzt5|rImrXm9d4kfuWUw!Ry~e r8&Ndm=BH$)RU$MPgczDx8CzNz8bUPOQ?CZb83Ti-tDnm{r-UW|ki^s` literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/32/print.png b/companion/src/themes/monowhite/32/print.png new file mode 100644 index 0000000000000000000000000000000000000000..95a8e23bdf4f3deccc6f025b1eace40aa304a483 GIT binary patch literal 418 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE0wix1Z>k4UEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!D?-wV!Z literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/32/profiles.png b/companion/src/themes/monowhite/32/profiles.png new file mode 100644 index 0000000000000000000000000000000000000000..1a2317540eae8be0945d3d9fcba9017032166597 GIT binary patch literal 338 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE0wix1Z>k4UEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!DRV{IiC`m~yNwrEYN(E93Mh1o^x(0^2Mus5l_E28LD! v2Csh?ZA8(Ko1c=IR*BGH5MpR%Wo&6>Xb918PrVxG0|o|9S3j3^P6k4UEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!D8j<{vnB=-4Io4VTI{6x}~?=unn;?vXf0fgsLB3K|`*n_lPKusE4+ zXk7ko?wy$&^Gwpu?R>ub{?BuJ&E5XY-`ZfsBiys9!+g(?o{N_*1?&_y_p<->XVaWX zK^spW+VJ6~saJQ}pTcSUUOKZPEBjUYpEGbu9|*s7KwW7U!=IEBC!Aa)w|8)+&rMVD zeE#&7Q;@&Vsm~#QYXtAUJEmE+t$KT24@0rvZ+}Hh@x>qoQHJ(&I)5Z}ytnUEyEeZWS-n@8=o(DeK!B{xoY=B=M}T9 z7jCIk4UEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!D^jjlZqa&PDe zY7p*U!*0VA^(R4RPAS8*NJodcT(Lc@3nnqC9AG^C=aCG9y+6?2&FC%F%`U(Vm$bNE8lK_fY~lh>UX;*Fn1 zEj(!$dumD{(~&of7dYZI+Bz%`thmTwbo+3`6PuJTld>~snTeRSyqaY4+V4+OqRkW4 z)pZTLkJ<8foSvG)=XC8MA5-3^&fjkeX0r1%)XEjl4$rCVUDjf-W&19TFZZ@8=DuEe z!FKP76AMKYF800pwW7Rg-7;pKS6jDjS^fI+lLHlp)aLIzDzDXW!>#6l*2NEVLT09( zf1wa=Co%g=tmOe4{ov&aD|-KYDq(v)Q<%XuHEuSm!S&tMyN;WBznVYq`^jjlf7~^* z)D3o=*p&=SBdR5?5hW>!C8<`)MX5lF!N|bSMAyJj*T^u$z|zXV+{)NO+rZGuz~J@o sqKzmTa`RI%(<%`f3_=Xetc)$K3=JU~?x|NF25MmNboFyt=akR{03by;JOBUy literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/32/read_flash.png b/companion/src/themes/monowhite/32/read_flash.png new file mode 100644 index 0000000000000000000000000000000000000000..af4186962c7c722f4eee2958ab885ef3f5542b6d GIT binary patch literal 902 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE0wix1Z>k4UEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!Dk`3-4D3LpBy{tbwsrDPQuYYowHh|ElP&@83*GUrp(k=a_udS|x>UtRsOS19zm^-Wc~&uu$(YdddW z$$!VwxcJpFle-^ZTQ%L%d^*FkG}ReGy~lnYE$hlm=VM@%{Qp;C+1U#Y zFP~}}@K&(ANo7;=ocHud=|mMzBh^=vZY8gjD0i@3khMJaTbk#>JNL_OrTS}4wtn^b zLbb(tJL$`jV*NqQhpr^euL_8H{LmrD_|d1b8xOv8#6Q)&zB9yB?SOh(%blpmK9S4J zM{YD7;JRgbxOmkKANvbuIkR@UDTfC+mu|iFv{3r0SYgr(8|QB)W+nw|%(we8W5+%2 zz?q*f>t3287nk~KLB8&mt7@-xIapNhechJd9^|o?JDrfx#Y_< zL2TdWhNDw1u}_#DcsKGu)UC|EBd=EUn1uEeu`E%(efrDHwRe_GU}1=7WU9HL#T@9B zbS=;Kg1qgN%V%5-mhD%F=6bv#hKuW1hx`xjz=r8Oo?pM72c}Qe64!{5l*E!$tK_0o zAjM#0U}&OiV5n)WngY)Y@uynXk}pV`ghSr6b-rgDVb@N2n_}yhGtgAmR5#_ W5DoX#s}BP;FnGH9xvXk4UEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!DUd0ji%1kq)r9&dvNhS2Lyh+Kp%b{x=9UaOH;yRcWnW8|kOVJmu)MRRX1q z?W=*rN~bIANAmW6SY#dj;%#Qo68mj8cYTV!>UjVD?ZD(v{KlbjvXEQm-X_gJ2Az?vq*2Xr(4_W2g>I aX=P{#(Qr?_8kh(e7(8A5T-G@yGywqQg9>T@ literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/32/save.png b/companion/src/themes/monowhite/32/save.png new file mode 100644 index 0000000000000000000000000000000000000000..461af833def3242d26da0dc47fe5e5b5d53aecf4 GIT binary patch literal 366 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE0wix1Z>k4UEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!D-pE8_Z#nK<_$}s;c!+Pdf zYYi6nN|hMeGAl{^H{Zx$%o=IO>_+mb&U)|3@oh-%&m+qv<(cc3=CfXF4~BqAvZrIGp!P#!63xY%*xo( Y%Fqy^;huUm(02?Bp00i_>zopr010$%OaK4? literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/32/saveas.png b/companion/src/themes/monowhite/32/saveas.png new file mode 100644 index 0000000000000000000000000000000000000000..cf56da9b67cf13459e09daa6e308467135c7800f GIT binary patch literal 418 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE0wix1Z>k4UEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!D|>~0 z>6CrVv|;_%hJNN{8tPIg10O z!C%i@pU(UEwv?^Vw&*|m?&n?kvGwenol82y4jeqTzd7#!_sP=*haD=|wg8=}TH+c} zl9E`GYL#4+3Zxi}3=Bk4UEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!D~LBp#?f0mxP|%@nDL=SFb7juO{4K zpK&;er}(A5O2f?9`^h|<9jRq1KnJOoxJHzuB$lLFB^RXvDF!10Lla#CLtP`o5Ccmq z19K~53vB~KD+7bqzl%1aXvob^$xN$6XfOydG_x|cv@$e=Xt<|d4fHz$gQu&X%Q~lo FCIFA>e6Roj literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/32/stop.png b/companion/src/themes/monowhite/32/stop.png new file mode 100644 index 0000000000000000000000000000000000000000..dd8e904509bb7e434639c3d0ee70a8e28ef09a87 GIT binary patch literal 558 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H0wgodS2_SGmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCjKus+S48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fg!Ib3f z?!xfDz5mR9Adj=aBeIx*fm;}a85w5HkpLR4?&;zfQgQ3;or9bQ40sM4SXT0X>TTIi zFIaW{@;d!U|4_C5=A9^qU#y?xE8RQuwG!A#gxJ5%ebXs83U&DV`iJ# z#p-cauARH^gI9xieFTi9T)Om;_X>N-{fwlUWNdeUea%JY|Gc)|y1;N$Epd$~Nl7e8 zwMs5Z1yT$~28JfO28Oyuh9L%)RtDx)#unNJhE@g!uYVV9MA49&pOTqYiO^sWVrXV% aY-wd^2+?p)z4|av1B0ilpUXO@geCwcBc#9p literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/32/switch_dir.png b/companion/src/themes/monowhite/32/switch_dir.png new file mode 100644 index 0000000000000000000000000000000000000000..39cd0a7bfd240afdf4e610e2d9834819c8a379f2 GIT binary patch literal 564 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE0wix1Z>k4UEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!D^89;?O4(3@`v^4u{_;HE(<4es5(7WzmVZ+B319O^P+c1nMii)iNyx*W}KW+t$z7k zS9Rk3c`dQzK#@l<$N(e(1V6z_OzQP!u3XS5Agp#d_4d-5Lvtb#`2`u%!*|%mat`ZMmO6o>zd9l zkkp(0OlYQ{-_IU}P0TGX{MSz3smIpwbhCTLvXZS539Ztf|5=O0bV+2JXsI7y4gO}f zOw{F>a?Njr)XZu8+y34EzQ%sqs$G@0%N#oMllUJ<+&`R~)tKUCkqrz@)e_f;l9a@f zRIB8oR3OD*WMF8bYhb8rWEf&#X=Pw;Wo)5sU}$Av@cMVrMidRX`6-!cl?V+6A%gTe~DWM4fHP+I= literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/32/update.png b/companion/src/themes/monowhite/32/update.png new file mode 100644 index 0000000000000000000000000000000000000000..88e4c46388b8ee6f59b6d5615f8a61afd8fc9685 GIT binary patch literal 535 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE0wix1Z>k4UEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!D6toj4uw!})`t4vVxj_sL=w&SQGLt`3f7F7~rk-{rm2Q@$-xvTWAj zImX}5o!Kj=mA16$PkrN30gEepmpLWJW?Y@=IM05Ws*i^}LybN&6DP%q{FZO{% zMY?U<946=84)PhxH*ju97X86+O7jiZ3$=}JG^ePX4Z5*Z;!m@g~@+j+`C?Nah;zE@0AU?Ne6fuG!Ng9i`!Kc ztNvqM-1WuVN*9RsmaM+;P0VcZtANwB>N9<7eskVcWtd;K%X`5=$xvYlXUf9oH` z3;baE%6#Ge1wO&+zyMP%ag8WRNi0dVN-jzTQVd20h9X=P{#(Qr?_8W;@>44$rjF6*2UngDAD#aRFV literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/32/wizard.png b/companion/src/themes/monowhite/32/wizard.png new file mode 100644 index 0000000000000000000000000000000000000000..a9cfa82e9cbb42f511db858eae935f4865c61185 GIT binary patch literal 701 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE0wix1Z>k4UEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!D;wW-_f3fA20{5JZ zJ$IES2_!isIeI+EdGj(y*Cu1d8r?tYD;k@=RdN1rIL5Z9QO3<$xpRW{)pNK12E2K* zX}dl9JKv4Q`S-v7zIUc3{n&z+YYbKQOzp~mJY|>W zpeD1~dmhXDI9wff(X}Je?TDC>Lr6%$3@%xtc7ZnW&iCs5t2t-M+;~vT-G6J{*LALs zKe@`hKJrcPtNzpY>0d%GZT=N|)cWj6&&mwd|9WDPc3Hy3bGzAV9!3|2 z+%=P`dBFQ<#=}~UX^s2d$`?L#yWp`&pCP*Qzv+e+f%%zN!xKJmN_@P~_q(Be=7sdl za}GQZW>UOvorYaN@JN&tfkUy1qp2`?SRAVW+O$^7DHp^w|8J^?~J6 ziEh!aKhY&~E+2LOW`9y{Yp~shgK`Q!Wn5oBM9jZvUMw$Rqn10TIh;dtcZuJJ=%$*F zjodbB1{IPOGgh2yT(IItpR~=o2ghCh9Wec^dyprb)3xC}pa1(qOKok=9ev*a`D*Ml zIrGU?b8o+TwYzKn>$XFWW?%RDz2`nd{*8IN^_%7y0i#v5#5JNMC9x#cD!C{XNHG{0 z7@FuB80s1sh8S2{8JJrcTWA{?S{WF;{#~>YMMG|WN@iLmLW4nwp_!GjrIn!}M8iGx R>cc<{44$rjF6*2UngGv4CWHV0 literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/32/write_eeprom.png b/companion/src/themes/monowhite/32/write_eeprom.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc5c1f57c587b31cc099cb99dfb8a5a1a1f33b7 GIT binary patch literal 815 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE0wix1Z>k4UEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!D~LfZ^g44B(VyZKF}@|V)*vr!dZn^ z^RmyKdbLa9#XOIw(_hY~9g4o1v6JTl_X+hcjVy*~89T2xOk|cQZsT(2k=Sr9lgC@q zm$CGhL)JmIEjMPjosyJE-FRGPipeBLhxwt;{T!QaBuR>LnR8EMKfP*#dA3mLoGDW; znqFe9o9-rhVZ+Mec%wec=FJnOw&v;x@Aw`2K((-kF|4^+^XXwL)<*WwUM%RGA9;sO>8ZeB%~^so z>}+{Vubo_G$oXpfEZ+ym=B(B$t_*O$QeU!1bV7A(7d z>stBU2}`&>pZze!cV9ufy$)j%`^U!YE6asvJw32Squ0r1d9y*;0^Zr*?)?kQxF%Ho zLPRP{`Ods>)*WZoH!0j-r_W?@@&CI;DtacuyulCeaQ?kq@85so==>c?%Yg|=wZt`| zBqgyV)hf9t6-Y4{85o-A8W`#t8HN~GS{ayI8Cz%@7+M(^y#8IZ5k*68eoAIqB|?Ki eh@qL4v89!vAwk4UEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!D)LhysWD8plG44OhHc0tVaejucw79JLqZT70e>3_8@;}$KEqHZaxWYvs_!GsIwxS zjaPs5nfsq=_O#6U8Sp(^fcxtFN492WHi<_iES0F%hoWcJt=l($Pf}T#9}}DrT3hNP=DE?~vXqI$%~!G;k{b0-wIh`mVB`2N{yN> z&rzzf@|Dk@uEQT^Twn8G(sQx*JI-%i!)C{`qrKsF&gTiT>ppb^KQQ;-d0N`+?BYqP zJ|E(yx7tPJdqh|1eQ{WC^fq9I!lgc|Uu*cQR;qdnyjW|tb@lA@iw8dT@a`*UcYf7y z!>Q(x)!CDFnE|chJQGUoEX;EJ-}%~w-}h-=*%o!aUT=MZ?q=qMUB>w#suq{`THk;A zs&V$~s`uv&9@=M0*htF#xpW(tU{p(7BT7;dOH!?pi&B9UgOP!uiLQa6u90Dgfu)s! zxs|bnwt=CQfx+wFMH^8xFVdQ&MBb@ E0DX!;y8r+H literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/32/write_flash.png b/companion/src/themes/monowhite/32/write_flash.png new file mode 100644 index 0000000000000000000000000000000000000000..4d8d752ea554a994933379b433164116eee876ac GIT binary patch literal 904 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE0wix1Z>k4UEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!D(r(|9U$PvFE+utxb47fip=fqH4LB*wcvYsH@LkZ7dXG+!!nSdHOBYq^a(2J~ZhzUQQFd|GZgA zszYAp>)QKog*R$CeadM$ExFz`?eftjo~H|T-ICP1vZCsOrr!6?>%G$_9OV1jy_@-P zVQDr;xzVerk~xYFQ|GSQC-^bZ@jz1{<1*K^o^=~0XBnMgU!e5t=~1t5hP@voW^jIC z_&u}NW0v~H!saEOlg~}uwTRC;)aO^U?UGjw&3!$S5AoDnJy>vfr%&E$|K{E8+_GD( z&upq{GG1{;ll{u!M^*i73TIvI^QX(6>pCO7=cQZtiZt(A)oJWIziyUVnI_?Jq02#8 z^4!NMY}*XkYMzSdmRvl0HO4V=IbYSKysiFo*1THMkk?;)WcR_3FPZ&2X73SMx>IA1 z(%z(NiDAXZzU?(reHFun(6+ot?BSf;*s6y z8K*Qv%%|-pSJh>YD85}F(UU7F-`y_iBh6U_; zeB{TuFXwqzZ+Z4h=f}EJvmZ%>_;7qNUjL6Z;x5YMMG|WN@iLmLW4nwp_!GjrIn!} VM8iGx>cc<{44$rjF6*2UngEmpfLj0n literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/48/add.png b/companion/src/themes/monowhite/48/add.png new file mode 100644 index 0000000000000000000000000000000000000000..827d7b2444b701279020187951a9f0cca1d0d6b9 GIT binary patch literal 395 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}a}tmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)pVryh>nTu$sZZAYL$MSD+10f+@+{ z-G$+Qd;gjJKptm-M`SSr1K(i~W;~w1A_XYe;_2cT5^*^B&v}RF11`y*-E}3lCTK() zaB7NTWMkHN&2*T3QR!cGIjcYIjO>p}dH-4f<*zgaa&MUK+F`^lDv^-5kSQlsRdP`(kYX@0Ff`FMFw`|N3^A~@GBCF?w$L^( yv@$Sw{kv!*iiX_$l+3hBga(5ULo+L5ODjV|h=zOW)j+Q^FnGH9xvXNS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)pVryh>nTu$sZZAYL$MSD+10f+@+{ z-G$+Qd;gjJKptm-M`SSr1K(i~W;~w1A_Zu4rKgKyNW|f{*Z1nPI7%GO|wq zZ_b^FJA5u=_sr+tXU@EPHbr*HHr>F-ey25?y zCoo6yF|q8P_e`LFepurCeGj;1e^6nTX%^b=SsgKz*WiSpsQtfYS*t^<&pfWST=?pE z{U+b(o^vBBx^$kOdRDRKVvd=ial)Kn)qkx`nR_G+j!YH$?{+Wcy)WZ*&%7-^LSwqc zm03It{5@~a*%MnMVQ^-zP<(2450Lp_)9KYtQ%+3m5E8J`{IEta^3@_18Kay9+ms?_ zhtA+Bidep8ZPK9{(X_)+kr(B@>n>JV%+ewzwxxHMf_v?h28A;j^Y1Vho49bB7#>~f zWMkx;Jf-1*(Xri5F~-tvHyE1?oF=O8zrWE#D`U^!h5OZ0Uw-7T74#2sY~LsR-|46W z&yfT54Eq?^(o@8v6xg(ZF{4`I8c~vxSdwa$T$Bo=7>o=IO>_+mb&U)|3@oh-%&m+q zv<(cc3=CfXF4~BqAvZrIGp!P#!63xY%*xo(%Fqy^;huUmFuoZWJYD@<);T3K0RU@P B?!5p2 literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/48/arrow-right.png b/companion/src/themes/monowhite/48/arrow-right.png new file mode 100644 index 0000000000000000000000000000000000000000..52b41558c186e0b47a96d6c73f1b38ff1b00e0a5 GIT binary patch literal 637 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}a}tmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)pVryh>nTu$sZZAYL$MSD+10f+@+{ z-G$+Qd;gjJKptm-M`SSr1K(i~W;~w1A_Zu4nWu|mNW|f{)2%(29R(bo|8Z~O&Jg4< zo7E6{KtU`kS5a;4-dL%FcD=1l3F(=dN@hw)%f)6Xbu=k-H7Rs-NPJ+PrS$6VX6y3V zyJhmE_Rh?@akKL9n{ztZioH{pu^sPc5L96L!|BldewD80Q75fWDN-90G|v}3aS(fI zr@~l2_d%2V%1w^aj@2f-Ws;8sLbts*Zp10TW*Np{Y9?vGE#PJuBq0Cha;})dlA9N~ zLe;!Cdp1l+qF-5|VTfpc|R!4DA8l%&sP?@Cx;XRkLgcMY6JUh+2W6nf#p!Ae2 zkM}J-f8PGhhV1EcQbd1;UVHM)e6iDY3D#9!-_DD4&ejg>iIkiALC^Tcv%Em@&sU~= z;1}`v<~T=bzSj@yWiL(GH_UwODt$Y+?$T0Y-~ziEBhjN@7W>RdP`(kYX@0Ff`FMFw`|N3^A~@GBCF?w$L^(v@$Sw u{kv!*iiX_$l+3hBga(5ULo+L5ODjV|h=zOW)xgMRVDNPHb6Mw<&;$Tu-05fl literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/48/changelog.png b/companion/src/themes/monowhite/48/changelog.png new file mode 100644 index 0000000000000000000000000000000000000000..c9e897edb7bdc4c6d66b01b34f970abd31059628 GIT binary patch literal 625 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}a}tmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)pVryh>nTu$sZZAYL$MSD+10f+@+{ z-G$+Qd;gjJKptm-M`SSr1K(i~W;~w1A_Zu4mZytjNW|f{({=rs9YtKvPf+vt$Cwio z>Ap&90f!0KT~Q64A8!|}UM+AX`GZO>rw~tzmQUdywj-`vmMr;gc==}DwKuYt_sl&v zbNBnbGuH?{&07BCYqkULjV7s;7bnd7I{*G1gU_ro7fNr$%r;Jou-bY;JIiQE@5jOo z7i1S-spv2Gx%zN}w_OpZm-IvxO(Dr-otK{Zla}~zO)*M;X2sAUG;xL=qrtP8(cdzS zp3ItlCMH5gWouPd$-13Ou=t--Pzq?j*zrrZ1t{qGVEMFk+vly2|R= z`xnl@s8B6&jVMV;EJ?LWE=mPb3`PcqCb|ZOx<-Z}29{O^=2pfQ+6IPJ1_rNx7i~n* okei>9nO2F=U=U(xW@T(?WoQV|a8JD&7{Lq-p00i_>zopr0P}kDd;kCd literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/48/clear.png b/companion/src/themes/monowhite/48/clear.png new file mode 100644 index 0000000000000000000000000000000000000000..5ff3688e2a2b69c6270eef373a7cdb41d138d6cf GIT binary patch literal 717 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}a}tmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)pVryh>nTu$sZZAYL$MSD+10f+@+{ z-G$+Qd;gjJKptm-M`SSr1K(i~W;~w1A_ZvlF;5rAkch)?ryF`74iGrLeq)5eic(?r z(tv`1HwtBfGQTxtxVuE%+r_3odUh#)fxJ_}C9jEM?4<(k&zrirv^vh7SM;s)oc;Zh zSfPP_utm}S-PPs)l{uf3_kTV8FWG^ogR!39BBN>yaSvJ>hIe7u`%KiuB)Xr6n~U*?~ zRy%q5h_&vw-|QTlL##P=q%yD0m0Wxv{P-s)&T4^%2@kzaK5DzV?YHc_sV}^JGHWsz z#Uxd^+q1(YmoC`x|3QTKUd{(%tNgrAKJw5!C*AHNvCo{T#Wc%H?7mmwsU^Mf?hFw+ zg$rZ0i`UL9-27XE!7*adHO(o}zYl9%RCW>Bt-e#ly|R9~ab@R#3j{q#Ug4iB@(#2~I59;C=5& z-0JV|_N_3m%@FV1aB`j7dtD=$7mM5{xcuQ3WlnP7`N7{HpCtTn`tzsmxxi>vEpd$~ zNl7e8wMs5Z1yT$~28JfO28Oyuh9L%)RtDx)#unNJhE@g!uYVV9MA49&pOTqYiO^sW fVrXV%Y-wd^2+?p)y&9N!7#KWV{an^LB{Ts5eoqx` literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/48/compare.png b/companion/src/themes/monowhite/48/compare.png new file mode 100644 index 0000000000000000000000000000000000000000..87e99c8c5cebdacb98b3828a2f9523d0c714c7e9 GIT binary patch literal 1039 zcmV+q1n~QbP)Px#AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy0%A)?L;(MXkIcUS000SaNLh0L01m?d01m?e$8V@)0009BNklsV^*5Wj=br!n zd(Ziw|GAG?V09H=<@v7xN~}?(?F@DxZ#v(m}sNbVOX?+`XM9op7l;)i^8)Cms zmj-N>@}i$BOA%Z!=%*0-z23CJw6(V3Ilom3xMb9s5c@ip%o=j1r#+_Ku5iTFR?(zE zM`di5a@Una(56?*^3grG!EReuMD&G|D-bVWXVF9zta^8Fx@6s)2_9bZ{5#ka2n31X zP>>0)sIWE28g(JWUTdRuNE&w0d_kgG>R9=KJb#Bp6DuQUuI*eDff+kJT?%{yAxW%GlrX7^< zygF0fb1Lu5Lwc_aP)c)NHfd18gFf`}vc2PSK=?*mjJWgNNE-G)lw;*PdD=ny zElAoYS=_Ds6g}g~yvtjIoAdU56#(_>%W*FUFy$@B3vAtXR1Yxi*k!g}ceuV0WwZFD^uK|vNEmH}+O8Aly(W$Ki#b+$M{Crn9_Neg;HU`V*1J7&)E^d|^EFOJ zbyA2GyeD^iTUU`s$DIB#;FLNw$eI`VsvQ==8l5^L#{8~U;3oZUmGXUgDH=5tbqfbs z6B;~gKwN`<6XgKLmx`^F8vWNKvPyi5sI*MeMzmP(NdA*_m}1vHhLqC3QyxJD&V}Z* z0000bbVXQnWMOn=I%9HWVRU5xGB7bTEif@HGBH#zIXW;mIx{#cFflqXFzfqru>b%7 zC3HntbYx+4WjbwdWNBu305UK!G%YYOEiy1vF*Z6gIXW>hD=;xSFfiUHd&2+#002ov JPDHLkV1i<%%bWlJ literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/48/configure.png b/companion/src/themes/monowhite/48/configure.png new file mode 100644 index 0000000000000000000000000000000000000000..6ace3af1910d2c3d73448083aa20ed7f1005ae2f GIT binary patch literal 649 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}a}tmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)pVryh>nTu$sZZAYL$MSD+10f+@+{ z-G$+Qd;gjJKptm-M`SSr1K(i~W;~w1A_Zu4lc$SgNW|f{)A#B-2TB~9U&kY%qM{)- z_l!`tV~EPs4IW1lGI;(mAG&lfA$ha3$C2=Wl`avzmzEs5;%dIoV~UbT9b1v+ceU+j z-zuD|o;JDqTxH$P_rLe3fBzMbdN@9@mf3)T*`VP+BgeGDWnPI_wU-y~-F3rv<>IzN zzltX_9L;}wPt8~Jo7QjfNlHNJ9B+K#YuyD?L%C8S9=#FXkh+%j!&J76#3tJ?iB0pi zOn%T=x@*Pa`OcqIUTz3$f2qxS;pE1tZIP=u1yqkR8(*$i@6%lr3 zR(zK8cd5__OWjvD4|WNo5 z+PN>Hf&%Wo3XHpb%4%6g_-C)(o`HoE?YUkr?`59n8I&FU#C%!CChbj|eZP0-Xt^+R z-2OC7#SFv=o%R6 z8X1NdSXvpFTNztu8yH#{7`*;nv=K!^ZhlH;S|vh*L5QK5m9eFjp&>-WJ@sl}#4|8> My85}Sb4q9e07APx#AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy0%A)?L;(MXkIcUS000SaNLh0L01m?d01m?e$8V@)0008yNklSVMP5yUGI^-RcEv`H5pi;9p+#70<1NW{)YH$)=d(uf2R z7E~&_kcb6>h{vX7>Y28orVXW~+G%Hg7QJTfWA4?P5Sux7^WE?K=bU@Ld**+?8$kaS zBmS{|)*x%}7ZCJh$0(v=_35diO4zu7N)*v(b?T13dT8KwjG~Iy456P(lvvoQoTb-b zTd5}3O~>6}A&sOFr^dq8&~IX+Eb?!#hXiJPCO^gH(`n%n>~hm_f5;1L+(eb7#w%1{ zi^^R8Dav!q6s1N}99*t{gMN?NpAIhIH$}4;G_COf&)7&IWt3CFa>7*dkO5Ogl7;>r z@*KXJe*Th`EZ{1iNC4kxU@=R1VXFASe18T(cBXO;hX_+|$xQ=OIhZ=@Wj8^;F%3~i z(hyk27QWa*Tg}SU@?0n6Kc+EV(`RGcqEd~wu;UfhM`Qd&b&B~9FJ&`1J>6McH4Wy)ob_9nNcf>HEks8z~BZx_N5qE>J3Tc!isZ^y}Wn*(xp=m0S zB;{(lCcEln?4xDu=Pu1gLu+R}AF!j9HMAMM_AQU8rGhbkN>P9UHqqn|JIYqtEi*B; zbIeiK!ZwNsxEsvoEZ=Y<%4%*{X6lI$%~1KB%gl2#n9O}kmp5N;73G%p9HEL>#@YcM zG9{BiA-8cu2OE&-ybG~`4%hnIX^V7<3QX0)9amUK^xVWu(0g6f3SH4^t<@cMd0t|wK{r~~v5mciso)IF zu4~=O1=dl>4&GVj8=3Q4H<0>17^fu~XL9aPld82(Vb8ln?W)xY%}~fR+oQ+ovEPCH zDCV3?Xzhq|o?`#omXq`iOMb}Ww10y)!;Hw5BR?47oA_J!kK6YHwzsf1y4{FC z_B%OikTuXRXBDzgn|nZ60000bbVXQnWMOn=I%9HWVRU5xGB7bTEif@HGBH#zIXW;m zIx{#cFflqXFzfqru>b%7C3HntbYx+4WjbwdWNBu305UK!G%YYOEiy1vF*Z6gIXW>h ZD=;xSFfiUHd&2+#002ovPDHLkV1hG^x`F@z literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/48/copy.png b/companion/src/themes/monowhite/48/copy.png new file mode 100644 index 0000000000000000000000000000000000000000..dd08c322b83970d9ce236197943e60e29bdbdd36 GIT binary patch literal 615 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}a}tmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)pVryh>nTu$sZZAYL$MSD+10f+@+{ z-G$+Qd;gjJKptm-M`SSr1K(i~W;~w1A_Zu4f~SjPNW|f{)7SeSc93YBpC>G;;(TpF z30L!r`2lZE@SMCOq{7wekT*GnsXyw6bOQ^E^CN|nCKeAZ0gD2aKfeT~q;9!>daXT^ z_pf<7o@BqDckg%XzTHty8&`?g)N}q|ZXBMs#q)XYXUylXhzg(dRf&C*%8YHZ zK2HC0Vp*?m`*j_$T5W}nqdGRPwlwC-`Se_3Z2MAp^M~l_OAGk6Y}omvDcJ7P^99-+ z`c`*6ytRJGq}*P1`pxBw=M$$rX-HJL#9iGUJI}(;?3BobaHeBx9vCq6{RrVdn|9Gk zeb39@Q*1ku+c#fWVY=!kb4&I%31&X#S*vbt60?37mLDQ_wdB@{v@Z|eY|V&TykUC= z!-EYc6X!A5i$!W2Qd)ayU4p6D#~Y`G3-W$F`Xm2KbpeYA_Y1|zMP~E0Pq@B{x-$Qc zQjObzMT-pFpPpsv;P;!`ZEw#%?<}`5L-@sp(0}UF8-xys8~@!~vh-&f6EFf)OI#yL zQW8s2t&)pUffR$0fuV`6fuXLEVTggHm4UgHv4ysQp_PHb>)%BiQ8eV{r(~v8A~YC; e7@AobTUr?!LNwe{uLedd1B0ilpUXO@geCxj@$b(7 literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/48/currentmodel.png b/companion/src/themes/monowhite/48/currentmodel.png new file mode 100644 index 0000000000000000000000000000000000000000..9c5e3a5eedfb0a42149411b41a1877a727466b64 GIT binary patch literal 764 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}a}tmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)pVryh>nTu$sZZAYL$MSD+10f+@+{ z-G$+Qd;gjJKptm-M`SSr1K(i~W;~w1A_ZvlS5Ftmkch)?r~7(`1WFwLUp}Q~=EqdG zEsnQ$%#1sDMW!V9@}eFkfm2gm=Q}jVY{|U3?$ETx_ybL1dNJQwgUVSa8E898GAUL| z8vovUQE_hZd&}#mTPIY$dp75}<@x`|EuUBJ_+F(E=Y3>NJo6QX;>XW)kHZ<)Gl{)$PqQ-v5 zd2KIx!>%pbC#@{|D@o(D^Rr7QZC@GxdR=;c-W#SJ%Y^MF2Bt1%mMXb!UgmcFsVnP~ zE76kwFIMmU{rt}5U8~Hz_igQx3$c1Az23rKzyC+f$|Xv*7f)?zjbu2b6MW$I=Q6|7 zQo9*!df85F>wY-mQ_YZg#=-*&4|KT`scANPOcky76n@_zaG^PJ^uU=%f zH{hgsUC`vLYsqhAzE0A=loI){u<_aA_X?Z-md}50>cCqd!&uMwQ}|cUot3q{z*M1H z;u=wsl30>zm0Xkxq!^403{7+m40VkRLkujf49u;JEwl{`tqcra|1R2yq9HdwB{QuO ip}`=;(9Fu%(#p^fqT!x;H88C)FnGH9xvXNn{1`8H%0JQ*x8eT9klo~KFyh>nTu$sZZAYL$MSD+10f+@+{ z-GzbiZkO;9Adj=aBeIx*f$sFMGaVsZNI1w-${4ian+y4l0qS4Xaw zu&F;(Zn2}|<{w!>$LoEvM>H7oFRf|h;rq+U`n;RH^yGeyD_bY2GOnzf9`fc@h`{}i z4}af#sQScy|Jn44@QD9~?^neheW=?M;F_pt+ri^<%7URfuJJx&&EYR8KmIUhtxNlK z(DBaxmhW2fQ@G1F>Ro-m^Lq0uhEsuFr#AOqDq6zty^V45LcX2N5{usQmPp-N54 z_ne);kWwvijVMV;EJ?LWE=mPb3`PcqCb|ZOx<-Z}29{O^=2pfQ+6IPJ1_rNx7i~n* okei>9nO2F=U=U(xW@T(?WoQV|a8JGZFi-=7r>mdKI;Vst053MZv;Y7A literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/48/cut.png b/companion/src/themes/monowhite/48/cut.png new file mode 100644 index 0000000000000000000000000000000000000000..b81fb0d9dc4a108b19afa54ef8927ee5b850b5b8 GIT binary patch literal 1200 zcmV;h1W)^kP)Px#AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy0%A)?L;(MXkIcUS000SaNLh0L01FcU01FcV0GgZ_000B2Nkl(;*cb?IeP@n2iun2nMon;UGw=f}jxUM$&B5!9{gZL@HTT z2uM^IToe=+3TYu?MF&9&qqr07AX0Sd*b&Oab|ws+&eLBPeSLlR{h67B3Z;17>Ye+Y z@4N5bbI-YN1$ws@dB^R{szcCuXO2)DKTkbKpg`wWZ%i(ZSb9v=P$fNaoshuI!6LgN2t3{ z*XavFg?;=0Wmj;8NzYfrm~`b1lo<$S3g5mdS2jU`9mePm3a-%_Q(-*e0&BU3+a9^* zIKU%g>>6vAE+A6eH)wKp2^=J6`0tYnXK8(icGGYXHOSIWKUt4=cPoz80#Rm+xz;$r z31e?yhUoGI#Cqni2s4X0*0*M8Cm^;P`C?ju?d{^*3v{tJRA6t=*)^XP0awR}68ccx zvh=IUdL!vGeXfsMLa>MfH*T)TM@g(SqK3$@~IweX3EVv|7LGxxUl4dajs8 zbWESPP~T`qdHtawjVrAo^{A>J^u4~;V(W&JVAjZzMRIIG#JOrL&Q;=wE#z1&~TCjOwgdo$#8)bdEg~y8Ac?@Pz3614XiU; zsRKnaBoV`$bws^v>&{DRGCm!@YM%z`>6tfiU`%aNdjD_5a{#x@f zF4Q)u2xbBMI`;Eq88NJ5*pMRNpH2FpX`)wSxx_C`+xq%z85g;Pu19y z>(Wv0aR2}SC3HntbYx+4WjbSWWnpw>05UK!G%YYOEiy4wFgZFfH###oD=;xSFfi-; zappnF*GeOF)cDMR53O>GdVgjF)J`JIxsNaCws#H O0000NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)pVryh>nTu$sZZAYL$MSD+10f+@+{ z-G$+Qd;gjJKptm-M`SSr1K(i~W;~w1A_b^|&C|s(B;xSf>HZ!ffilPKH}8INXO4iC zCKp$%`iFOK)_O4WGdntppN$Skdg$A!!6f`@$s<>n_lfO#Yo{xGc#x#xQpvf{p*i;d z0?(hXHw3TAPfNdNvD?Goe!0ZG`S)wm_I;|U%hBrQ^@Iw2C}F2Y~fB+br+hsW5%6F7JaVuYc)f!dWlS}JH7eb5mvVw zt1?4)yJgmgZCvp{IyBRM!ds2Slg=*UU8a%z$jCGJ!-SNE+IdE=6vZ-*uP|ruoAFrE z+QGg*^E1DPS+`cl^aIRMP3a*<4Xw-vs;BMj>^!a4{FUW~$dqY%r6(+(DA`Vp2#i|u zV9iqg9Y=T>zEvC*?|L$|?s$5*&jEhDqIMbkmrw0x?@Ii2KcQXl-6mJ#>y^&@H>;Q* zbXdOoDEcC4n)cR7&5Jrx(mR#=Zv3w@zN9bj`eb{Jn7P7V(J$YdKh$bDn|p8BbRzGs zPSDh+g3N)JRc<;(r}s|Y%*4aPqc=hQeCqnN2}}F=8K%s9ru90oVMS@cNi*$xo3b8B zoqx%)?_<-<4SOTR19T_f?zzY~Me><0yOrawhOlFji)JR@`#2%=?gop7+<6SY_dJ{Y zFZ()^Pv!AxoDOGy*ER}<*)+V3Ro|1~{(q+b>W9*O4^MLx^6jttd9K0jm-K9=Acx0{ z^$gqFqqcAhK3Lg_tdL_iI0K7)78&qol`;+0O#vHfdBvi literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/48/edit.png b/companion/src/themes/monowhite/48/edit.png new file mode 100644 index 0000000000000000000000000000000000000000..c318f72b636e4a9f72eb3fb2a4df61c9cd040295 GIT binary patch literal 840 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}a}tmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)pVryh>nTu$sZZAYL$MSD+10f+@+{ z-G$+Qd;gjJKptm-M`SSr1K(i~W;~w1A_b_z(bL5-B;xSf>GnRtfilPK)ngmFW=QnT z)!Jcr<6z4Y4adoSRx5>FgxMF*4ivt^70Sq-JtN^27jtvd!5tm}=ECi6iwg~w87)xL zN;UkXUMIV5<=$`as>1tr-1$DO`hDH|+E2gtmA@}f?|6H)FL$0jOG^WTNMWs&-=cFr z^6xy{o859}o$J->?xiOS<|V%tD>XWq*mF$BsC4EY-}jN{roNk$vh#@bdNI??^^2A+ z@$LSVGg*F`%HAu|<%?J8W<9qNPU)yN$(X3Evr{Vdq3hIZ{+`*h0w*u$X-j>v#m@WI z1@6+T$0BEM-x_#NHqzDPHDd$M(mB1GqD%tfzWDCj+%DrSmm_o@D8lq_%JTUMZL>>? zuNoif@tO2=!Dp!@U!q<|1xCrvnyhm7vZQRm#uI+E=frdi8r^LY`W*e33MR6wmMfpK zwrAF?J@eDpUM}BxB`$T6w3+f_v*?>PyZb)=i4T7}`%kOHTG5$rA6XU5pSo%XQ|qja zuD8E#+-YT!TDWyZ;M+1=F>QYL(^3|#$F>BtN^pxcB+a^%&z-U+Pi!AUuf$W~hDUb2 zpLkDbE`6!B_}!|j{0H_fDxLJqkbm{BGOO$Bqpq&b@J#5amC@fCZ+Il|-lv1w3*vnH zE_5GcxV&cLIi0_A6ppWaU}UiMjP8O~9@~_R#~v3LejG84dXd;-wqQ2L?1K>@GmjeC zS9r}^@A8t@in$^FjIsY5XO*1(t-8!Uq8cBT#QbJrRIxdHTbjA&_qk0@|9^hAy?xJHzuB$lLFB^RXvDF!10Lla#CLtP`o5Ccmq z19K~53vB~KD+7bqzl%1aXvob^$xN$6XfOydG_x|cv@$e=Xt<|d4NSKT44$rjF6*2U Fng9$!US0qI literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/48/exit.png b/companion/src/themes/monowhite/48/exit.png new file mode 100644 index 0000000000000000000000000000000000000000..e0f7e38fe862780950730a5dec182b821c62de1b GIT binary patch literal 971 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}a}tmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)pVryh>nTu$sZZAYL$MSD+10f+@+{ z-G$+Qd;gjJKptm-M`SSr1K(i~W;~w1A_b`8h^LEVNW|f{)4e@H0%eZXfA%;N-tVck zG>FUC_|_B_L6J*p+Kw?>I67B|U0lSz<5VlRvPPAFUUhDi2y3IO%a+a+YeF59x=)lZ zab7xM*5evotJt(JcaFC-asS^u!PFMY=&&;RDrE_*3k&g6dcbjsyhg>AMf zTowoGuCF=$clLU|zuik_g{ItOZ=YI_Wi=%|ebZ(4tFL_ChBm);TWx-QQiie*P0T)&fcB{X45^d6HPEqBe#W;^s~iOpg&{mi?* z<8o5o#nzm}mtUA}+eNtTbY$MLJe94|kLQK2WcKpzAcj*Nh9WKs^OKtIP4YNhvtS~} z2isJggVD+x=G;lpK9RQ3Q8w5pxn}E??=#=Kruh5csuD=l@U-K`pQ~yU63#3* zn)lUK$*$f9?D0ISO5Uk|kMLjWc=z10&w>(*n)jza z;&88>7p>SQ$mmcav^^wZ?+UltV~JHE+217|NB+K&tMz-U{*IeZU$1+-B!A1<&;?%W zr=LwfH|2?^#(&7}g+HC3Z7B`bcotlgL zLzhjE?*D#J-~0NN_kYe`R$l2C8@^7w{r*j(@Y1RUh1#`F{v`pd_ju}nbpjtCqM%l%yncpt3+rp2r)FXGPblbG=yllr(O-rIt&b+u6{1-oD!MPx#AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy0%A)?L;(MXkIcUS000SaNLh0L01m?d01m?e$8V@)0009SNkl7NO6vzM5YJBv?M^K42@!f=A@j}8&C6cFDw21|gAex4a#FJWx1Q8Nn35}%% z!lDb^_zJNQ8$=>R5HY@`+Il=R4NdyWoBk|Jr*GcO)FtfRxvM$%-1DFNpZ`7Qj)nfO zmHg-YMSvo}Kd@mTzNLz*Lzk5`SU*vVG+AlgQ#vAo!m)^7_J*xYKtqfwPSXQ8*sO?( z3cA)aVBa`PWn}v4w7PLNb(EO{R5NHfE-))}VT>d60?>Kp;RL7nx!v(|m|)eD_kkVL7G5 zXyQ{IbvdA)49BSs%Q0-oO7l`%)S#5cOOl4GT&PjIHNl_%REzrmZU-|s%v*AR!+UxPlw(oringB8zxl{joFhxn29;y6hBh;zf-Z|Q zZsqB9OIX;kvZ&=TkY?l15J6X^+iYz1@i4DD?vO0CpXj+H zsY)l52t9lO%nFv}-E)#W#Q{255K2J_aoXLlbc5+;G94IYUMtUXlvre3oV(;`ry=YD zHdOjLx0S<%@NVVpqK4}Q@4Ul8w0DZI;Tv@^(rbS&Jt;pZlaZ0FC89h>)LB)wQ ztN5Q>1SkUNCp%P8e6qL)SO5S3C3HntbYx+4WjbSWWnpw>05UK!G%YYOEiy4wFgZFf zH###oD=;xSFfi-;appnF*GeOF)cDMR53O>GdVgj aF)J`JIxsNaCws#H0000NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)pVryh>nTu$sZZAYL$MSD+10f+@+{ z-G$+Qd;gjJKptm-M`SSr1K(i~W;~w1A_XXT+tbA{B;s)LpYsmU2V9aryX#79P0)xq z;IybXMN&j^pTV7!A3j^={XgP-?Eky}-~ayq|NrOz$p4WYS6#bU7yS?a*Uo4i74hJM zJmWXv)!kD(>P{C(pR;r9ws`Qvp79;CXB3Oz;reO+8UKI(KmSvFV})&x@-n*>?w^1D zQ+&=mE4pA}qT*q>O*s-imNS<*nq(bZ!Ma$CCyl!!w?fiD!XQKWqo~9yNeKz5&I_I? z3qwEt|NDRa|BH-*R-IoNt(zGt9bGlcQvIttP}e`^dt#!O*m@b>Oz z^|?)FK#IZ0z|ch3z);u7FvP&p%D~*p*h1UD(8|Ez_3xsM qC>nC}Q!>*k5gH6a49%>JEv*aNS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)pVryh>nTu$sZZAYL$MSD+10f+@+{ z-G$+Qd;gjJKptm-M`SSr1K(i~W;~w1A_XY;-_yl0B;xSfsT+9@83?$Z=ioe5a)D8L zNuS0UmCT3+-Wv^)D<))QzKCdOViY*V;jutO;N@kvO}yo86I?!(C*M3-Z}+<okm0f`mveI~Ep(qoRf}dbTv!&pSnt-Qi}m^k#is60 z%%7;jw7w<#ziYPrfiNwlF5A0)B~KaZR(+fA$iQ;odlh5t4)H17DZ7+_L7`gW8c~vx zSdwa$T$Bo=7>o=IO>_+mb&U)|3@oh-%&m+qv<(cc3=CfXF4~BqAvZrIGp!P#!63xY d%*xo(%Fqy^;huUmFw_|sJYD@<);T3K0RY{0vR?oI literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/48/list.png b/companion/src/themes/monowhite/48/list.png new file mode 100644 index 0000000000000000000000000000000000000000..1f516f5fde2ef3c8d54c6eb467bd7c8b7ded00fd GIT binary patch literal 784 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}a}tmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)pVryh>nTu$sZZAYL$MSD+10f+@+{ z-G$+Qd;gjJKptm-M`SSr1K(i~W;~w1A_b^|)6>NHEEv9Yv0-OZD2HFm)67 z>LR%M%JmlQDIrSjN-SHf9Rt^F5jdjNyZ8T*gA=u6mIOLF+I-+UqSm3*bVBxpW;-=zWl5`Qx>jd6BQ=P6L-Y-d=CzrCTy(n1SYCKhhy+L7|EStsPcqrU8^eMR}3T&hLXAFVHPi|tOH7;d@ju*#3e zneVSJnQ?)$Xo8{8osg1wimpCw$6g!0P3c*(`nPP-mltxE-Ry*x%I_Bm7xY%Pb&*`+ z8LDtZY4(#Fshy2NF=Es5o_S16o-evRWPruOq>Jr~21 z8_A9QR!j`6evxK{k`ZZ^k8YYddmeC_Qr;o4gGa}|uV`V%39e5jneG{zWo~VdC_A{v zZ^GTe$^(yVFDkJt-SH+Os^f*~Ed$PTKMra%8pXKk)Y*NWYkW0GFyY9wy{vpcoWyz6 z^q9N*1p>F_9=w+r6Sm=LhS%xRHkEka7`AB=_jh~^TKCjmE!$!{P}%9Jk5x3yWVFS- zqSG3g*~Q*Y%j}(HR$Cqux?u(9l*d84Dt?N{HAaQIi!!b~y?$0h+ur}|9-x>ht7h~G z_B^?+tw;)(QdCP^BT7;dOH!?pi&B9UgOP!uiLQa6u90Dgfu)s!xs|bnwt=CQfx+wF sMH^8xNS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)pVryh>nTu$sZZAYL$MSD+10f+@+{ z-G$+Qd;gjJKptm-M`SSr1K(i~W;~w1A_ZvlWltB!kch)?r`vl-CrTWfKSLl;XIZF- zR8Ho0JtaL+mckWHy60H4r(fIH?6E>scGu1q3%Z3`J-p8b?BbXvwuHqzcFEhIf(=?7 zKhiaLTeFk@ly)|G?u)6q$JuD}zU2Fdz4m?I-~HV8SusEKY2kma1xy<34hrx6W;@-w zG%cH@NSkwyQ(oxL^9$B6=t_MN3Rs?a)bx$)0&o7Om;1sQ_Alaky?9ztZ^PugN-nKM zezn)V|9*YO`R-L`P*=9{{UYWID-`cu*(LVnxb%SqY$-2Wzj4hJXTNi;<4@JRfBxC;vYt}Q9 z6c5Lot1gbZyC-?NCsSGVCdq;`obxlx^!6TN&byKS>zT>dY}duN%ztUtYCM%TWuEqR zO@P(E^=ASF3m4ZK9xyk*b=n~1xmVn;ljo*?pMG=M1=e4GuZUYWoYq>sIGHtov0_R6 zA%@D8jP6PTz&KYeag8WRNi0dVN-jzTQVd20h9X=P{#(Qr?_8kmw87(8A5T-G@yGywoonIPc+ literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/48/movedown.png b/companion/src/themes/monowhite/48/movedown.png new file mode 100644 index 0000000000000000000000000000000000000000..fcf443163016efa548b81e271a8a0b5048189c32 GIT binary patch literal 662 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}a}tmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)pVryh>nTu$sZZAYL$MSD+10f+@+{ z-G$+Qd;gjJKptm-M`SSr1K(i~W;~w1A_Zu4zo(01NW|f{(|xsF5+&N+8ynl5Yx#J# zsr7$?BKQ6S$GJ>3#Wp!i6k${Sd1Jzw$dmpb^#3p%^~-Yc5KEJKylFw9LHfCB1J$|D z*PQ!Z5`VpN{=K8sIw5zsL}$u#FgYr4u++x{EH1n0*5kHS`%!#?_Ci%=*XC~~3a_n| zwXUvlvlTfT75M(U+m}@lS2|9`{N6h2y2nFaH?Hkhm*^hdvesu_oX>8lPqP+$*X+u2 z{Aja##q~Ll=4CEUj#_HUyXwj1TT|40FTGPfrKNk%&%L`WB|HA+_PEwC(}}0krcU~O zmvQ^@9*gIDuJitF5nMEhMbiEG3_l(7zTFN}jL%GFF7e`5%t_l(xF+tRNS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)pVryh>nTu$sZZAYL$MSD+10f+@+{ z-G$+Qd;gjJKptm-M`SSr1K(i~W;~w1A_Zu4ou`XqNW|f{*UxIZ1j-!y_`Gj=Ypafi z$f>rJg(}*q%TwOUJ9vqmaf-Yd`GdJfC&f6r+wf+ErpZzPY0ndGab{dk*UtRC^+1W* zJBi}=I#+()y=uF^c>a0Y^ukvbD>jH~73^cxNnqsu@rh z*NaCdI%-u@_Z-bU@{zq{!U11)J45%LB?nzser68YnEdA>x8SNwrL-Q~%^rbu4bH~V z$IA8?_)0p32%CnnehzuY9Aa>K_D0Kz=PMLnMVfZFyX_5s$a_V|-+j+U2Vb}Cy}rr3 z#`oIY_1a^-HcMSDJ$7Ru+g717nX|4;TK45b?w^pvw?ElqbhCrL+kf*Dxwg=r!PRt8 z@%ew-+NPY4cX&PPg73BW-%ZwS&Jpg~{N>u#kKTJ!-e$#Yy_b9ZGn3Gy#aGsUj4z(( zJ|Q{ZLTp0=tB!!fUgp#tk52OC7#SFv=o%R68X1Nd zSXvpFTNztu8yH#{7`*;nv=K!^ZhlH;S|vh*L5QK5m9eFjp&>-WJ@sl}q%$yhy85}S Ib4q9e0D;E%j{pDw literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/48/new.png b/companion/src/themes/monowhite/48/new.png new file mode 100644 index 0000000000000000000000000000000000000000..f5ddb907781e08557755d6283dd0a15e869bca9d GIT binary patch literal 602 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}a}tmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)pVryh>nTu$sZZAYL$MSD+10f+@+{ z-G$+Qd;gjJKptm-M`SSr1K(i~W;~w1A_Zu4u&0Y-NW|f{)A#zdIEc9MzqV^wI=5s? z$h9MfoUF4K?`ilt?Sd3{_Vy^@c*ow}4fzQ@ovmu`ZrupFG1Efq5Zm=e$$v_-&zSSZ zJeYSUU*cI3=dP;@9{*uWV9?Fb==~+5Iq&y_IobP6IGoIw7GB$JA;R34b!B@-v+%cw z)#(@e)nYsr>7{cY(JTnf3z1B4i>Y|qtG=yJ!uZi9p1|vi!rkt?ln519sCY2r_>~oR zAK83WkNj}PZhOrmgJ%mgf;YE*TV%FM^1=2%>rK&ZqQPmOBJOd?ZrhQ$n~C?UfI#wJ z$%kH{7pxRK_V2!TD(pgeLyf9GXJcl0!;X~ID>ZhyI_6#HyBsm4yV93Y_tkv0%6YSy zrKKCHC%Ni4#-F;TnSIFSscmE3vBdzv{VG$i3-CC}X6oUD&%js;lB0 z`R^@yW5Iaz*SynB(|-D!F)%-nwtIGLV)k!|L%=XsEpd$~Nl7e8wMs5Z1yT$~28JfO z28Oyuh9L%)RtDx)#unNJhE@g!uYVV9MA49&pOTqYiO^sWVrXV%Y-wd^2+?p)y&4#k O3=E#GelF{r5}E)s-sI{4 literal 0 HcmV?d00001 diff --git a/companion/src/themes/monowhite/48/open.png b/companion/src/themes/monowhite/48/open.png new file mode 100644 index 0000000000000000000000000000000000000000..2e705e8f0626895e3eb22ee115d38d335d596a9b GIT binary patch literal 585 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}a}tmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)pVryh>nTu$sZZAYL$MSD+10f+@+{ z-G$+Qd;gjJKptm-M`SSr1K(i~W;~w1A_Zu)lc$SgNW|f{)AxEG4iItoce!}*=%ZyX zE}UGtxH

MoCO|{#S9GG!XV7ZFl&wkP_V<(#W6(Ua&P}}p%w=Y7sKZ=W)`nzJ^t{2 z{`M}@-QmAKy;#=3^q@^8GGvoWK*-xqvsMX|9^T>?wQOO$>}+ejhSvqrXR7Y7f7tmw zTDnETRf6rmv!Ps9tM?_HdIh`BI=&hed%45HLQi)6a%N=CxV0`@T8sbdVT-d2pH28| zSx@hJtNuMV_T8RetVgGCR>=RdTn==TYKdz^NlIc#s#S7PDv)9@GB7mJH89jQG6*p= uu`)KbGBDRRFtjo-s7hEYhoT`jKP5A*61N6!Tj@nW4Gf;HelF{r5}E)VxUCuh literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/16/duplicate.png b/companion/src/themes/monoblue/16/duplicate.png new file mode 100644 index 0000000000000000000000000000000000000000..73ac9991a33bdd8bacf68efcc6568a3bdc06187d GIT binary patch literal 449 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstUx|vage(c z!@6@aFM%9|WRD45bDP46hOx7_4S6Fo+k-*%fF5lyD00 z32|j$NTUS(|Nme2US2xTG?9`ZzhH*?_J324wpP117(9sg)4N~UQsuejL%k$Wo-xVW z-9_~2jh~Bw9L@rd$YKTtzQZ8Qcszea3Q*A3)5S4F;&O6=0=q$12gAe;4&j&v!4?UL znUNP*W<*2=ur}-xV9I$T;~?hLFnMzKY<5qE6!y&=`dwUhb&M&xJxxxBJklIw*|xWa zFfi0AFdLS%CO82NRxNRjC`m~yNwrEYN(E93Mh1o^x(0^2Mg}245bDP46hOx7_4S6Fo+k-*%fF5lqd@D z32|j$NTVnE|NlQz+(SR0?J6Zfe!&b5^aJw=r#u56pnAq6Z+92f!;B~SfgH{PkH}&M2EM}}%y>M1MG8MB;Mq zc~8Cu1s>Lb6&Cy!+**Bi{`Yh_@L2y_^?zw*P|KbsN7WyUCvJO6%#>2s)HqwD>>3%! z8esmGJ=VU5Ysr+!afvl?UsTRcoyz@+At&YyAA_}@_=Qqy2Z!TKY|``Hq49v9+46O_dsuC8 aPsvQH#I1qbR(cUo1B0ilpUXO@geCwrx{o0M literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/16/exit.png b/companion/src/themes/monoblue/16/exit.png new file mode 100644 index 0000000000000000000000000000000000000000..faf9a2a33299839ab9906c62fdd2e67c96961d6c GIT binary patch literal 482 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstUx|vage(c z!@6@aFM%9|WRD45bDP46hOx7_4S6Fo+k-*%fF5l<*Gl z32|j$NTUk+|NsAN@>F!go*Xft z62>HNcNdA-nXPg_4rhT!WHAE+-(e7DJf6QI1t^&0>Eak7ae1zPG+%=P&+Q2(y#)hr z{LNqG^8E4n8}pa>ZrjGNzwt-Ns>8B#ck%ezCizEgNz73{@yuk+X91>)bpPh|X7*_< zhGt!hReYyNsm^-x`b=e{(fRU;TMedvy}ISv`Nd}Po=IO>_+mb&U){3{9+zO|1;fwG9ld3=FCg7K7Z3(2$#-l9^VCTLZVP^dg`J N22WQ%mvv4FO#qsjjgtTX literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/16/fuses.png b/companion/src/themes/monoblue/16/fuses.png new file mode 100644 index 0000000000000000000000000000000000000000..f410bdd74278e7c7cd0ce3b09bee979f96593cbc GIT binary patch literal 586 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstUx|vage(c z!@6@aFM%9|WRD45bDP46hOx7_4S6Fo+k-*%fF5lxPp| z32|j$NE>kU|NsA0R~{4toupk7-GxZL) zkGLLWb8$NGeU7*2?699)4mnvsT?~v#-tI0syY3dQ268wHJR*T+@f`+X#^d=bQhEGBuY&CD_4KGSG^;m~%g2?aMV zXRVD%I-J4%Ch5)OgCF>P8kHXhrzt<5)0$Sfvu|(fg^q49v9+46O_dsuC8PsvQH#I1qbR(cUo1B0ilpUXO@ GgeCw>TdltU literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/16/information.png b/companion/src/themes/monoblue/16/information.png new file mode 100644 index 0000000000000000000000000000000000000000..59a6656b74794d49cad1771728eccdebbf3dbfa9 GIT binary patch literal 384 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPF=ES4z)+>ez|hdb!0-zw)bN6Vq11qZ;Z*_ygVhWM2JwP9y8>;15?TR1 zA+8JzX~dxa|No0l+Mof{#ZwaG7tFxnyks$Jy~BRHy$xM=tG5Bg8I!!-U3kB3N&E`r za29w(7BevL9R^{>?)FK#IZ0z|ch3z);u7AjHtb u%GlJ(z+BtF(8|D|Dq*o4iiX_$l+3hB+#0xTr56D;FnGH9xvX=ES4z)+>ez|hdb!0-zw)bN6Vq11qZ;Z*_ygVhWM2JwP9y8>;168r%^ zA+8JzX>j!a|Nqk^iP}IZ=8_=4Ux0lADx-tI0e{TVj{fgH{PkH}&M2EM}} z%y>M1MG8<*-_yl0gyVX0!U6V{-d?)FK#IZ0z|ch3z);u7AjHtb%GlJ(z+BtF m(8|D|Dq*o4iiX_$l+3hB+#0xTr56D;FnGH9xvX45bDP46hOx7_4S6Fo+k-*%fF5lxPg_ z32|j$NE<-(|NnpS4gWs^9iv$iBn-z*9Zadr~(;~fGz+#_5o=IO>_+mb&U){3{9+zO|1;fwG9ld3=FCg7R#Y%$jwj5 YOsmALf!kJk5l{nzr>mdKI;Vst0E+UFO#lD@ literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/16/logs.png b/companion/src/themes/monoblue/16/logs.png new file mode 100644 index 0000000000000000000000000000000000000000..826c381b6d39a3f35af5d7517ea190758c7eac1a GIT binary patch literal 474 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstUx|vage(c z!@6@aFM%9|WRD45bDP46hOx7_4S6Fo+k-*%fF5l!yxO z32|j$NTUV%|Ns9TtJU{_w#bwO`2{o7^KKQ5sSr8NWdCfp`7&FpliU`&4lKMNY$v36 zOt)hJP#t5Ex4Vn%Yv#g?)FK#IZ0z|ch3z);u7AjHtb%GlJ(z+BtF m(8|D|Dq*o4iiX_$l+3hB+#0xTr56D;FnGH9xvX45bDP46hOx7_4S6Fo+k-*%fF5ln4p% z32|j$NTV+L|NsAz^-ASH^QB6H{DK+S*?Nua>Zg7*u=)}AR>$<4PsNK*i5+><>pE)> z7y?x>CV9KNNHZl|Spwv67I;J!GcfQS24TkI`72U@f{vapjv*44lM@yQCA0+i6fmZV z37kB|CZ6#8K}y1dM{XP+JU)K<$nC+Y#3MLKNNl2zt67+jmzT^{B~H&QOG#;9FkEAN z!OL?U7$^*?C9V-ADTyViR>?)FK#IZ0z|ch3z);u7AjHtb%GlJ(z+BtF(8|D|Dq*o4 eiiX_$l+3hB+#0xTr56D;FnGH9xvX45bDP46hOx7_4S6Fo+k-*%fF5l!yxO z32|j$NTUV%|Ns9TtJU{_w#bwO`2{m@F|!=luyx6*Ggqe9oaGa{kvjE~fXu!6B2lG` z%C&(ZKy{2s-tI24ubB%c0y&%o9+AZi419+{nDKc2iWH!rgQtsQh{WaOgavX5DNav~ zH*Z+Pwc+H64a%P_Q!I9->=3MxlZ>;gW0Z8<(J)~H2Xpg^85S`PPC_nTp1~Kdt^fw< zY9{4<;)TG#V^A$|jVMV;EJ?LWE=mPb3`PcqCb|ZOx<&>eh9*|Vrd9^#+6IPJ1_o6L gi{(%>=ES4z)+>ez|hdb!0-zw)bN6Vq11qZ;Z*_ygVhWM2JwP9y8>;15-I^c zA+8JzY539q|Nm!1udxTJ=PC*E3udT)rG4zB*K>#cla93?0E#judAqxC%U?eN;&2vt zL>4nJ@ErzW#^d=bQhD!NaHZ*U~!ggddVixc14SkgSp3% z#a(&IL5+(HX$2mBE~!2uIV|3V99(53CJ7sb7_P~1Z45bDP46hOx7_4S6Fo+k-*%fF5l&}f# z32|j$NFxvZ|NsB;gu*vKbA(EQ{DK*35AJ^xR?qi+!<_m5lszW-3cL<(F#*alCV9KN z2=nZYnFi!=7I;J!GcfQS24TkI`72U@g0`M6jv*44lM@!mC5Q+KH5JcjS-_xnphxk* zp;K(EZv+_K_*Mw{b#UqBY0PgIS31CM+$^8f#&CwkQR^oo!=DP~yB2%CRR9fAEpd$~ zNl7e8wMs5Z1yT$~28JfO28Oyu1|fzfR>r1Q2IkrZhE@g!RSApbP&DM`r(~v8;?}@z SE4>J)fx*+&&t;ucLK6T;`EK6; literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/16/paintbrush.png b/companion/src/themes/monoblue/16/paintbrush.png new file mode 100644 index 0000000000000000000000000000000000000000..5a24578125f93be60fd16c20e306483a500385f6 GIT binary patch literal 585 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstUx|vage(c z!@6@aFM%9|WRD45bDP46hOx7_4S6Fo+k-*%fF5l;{fZ z32|j$NE;03|Ns9p68PQ#U8PeJrl{>-klOkDX(DUbyKc1EaWk&w1u&pAS9#`GeI#DL~GA z@dAP74IH!iq^Ia>9Xp_)r>J=H7-y*B(!&b6D$3gG{N;QnOjuo2cXZx4Wu>($>(vRr zOBXH%UUw0Dkap$Lvor_R7d60O_L|IoeDcIQen1DPmbgZgq$HN4S|t~y0x1R~149#C z14CUSgAhX#D`QhD19NQyLn{M=s)WUIC>nC}Q!>*kackhVm0kqYz~JfX=d#Wzp$PyQ CwxbCE literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/16/paste.png b/companion/src/themes/monoblue/16/paste.png new file mode 100644 index 0000000000000000000000000000000000000000..c56332f76d249b26f73021739cfc41c1619a783e GIT binary patch literal 456 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstUx|vage(c z!@6@aFM%9|WRD45bDP46hOx7_4S6Fo+k-*%fF5l<)}f z32|j$NTVG6|NpeYZ@y_@Cm29p$KY=P3 zlf2zs#JR7{=m&B*3p^r=85sBugD~Uq{1qucK_5>S#}J9j$q5QV21bU;A0r}e-mtXT zx#J;|Op?tWpPHm34<>;Ir2_{Pj_Eh3DQKuPXep?jX;flZ(kafsWXPu=;3y=(%2{9_ z_|%snZyU?3MLngLf##}~xJHzuB$lLFB^RXvDF!10Lla#CLtP_-5JM9yV^b>wb8Q1d lD+7b7gvD|w8glbfGSez?Yv8t(UIf&@;OXk;vd$@?2>@ILbcO%` literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/16/play.png b/companion/src/themes/monoblue/16/play.png new file mode 100644 index 0000000000000000000000000000000000000000..d237ba0c9c08b127367ea4a9feaeb2e4c442a67f GIT binary patch literal 722 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H3?#oinD`S&v7|ftIx;Y9?C1WI$O_~$76-XI zF|0c$^AgBWNcITwWnidM18QnvVE6?TYIwoGP-?)y@G60U!D(GunW1j7i?^E`pD? z+U^2!I14-?i-EKU7`vU!wgW2g^mK6yskrraRy5xs10I&j>E_k{FHe#ePzaoqlIKC|99{s7aZB35pX*StCl61llOtk;N?B=b)_6zjko%vF`( zH>GJ_#5aA`y#+7+%EqyJX&zu&D$=*XL9dN3mt8J6%1A^=W1d7n$ox;`-(V|q2u4F4ld>Y@)>^!A8_^f z-&Ua96m2NuRw8qlUFe4go4nV{WXl@E#`S3*o=({}?=Ul0g^M%)$_IwBHY-}(w|?0m zC3pQWH+Myb+JbX7}SBT7;dOH!?pi&B9UgOP!uiLQa6u8~2Ap^25Tsg;4bwt=CQfk9QmVmTBI zx%nxXX_dG&aN9~R0&0*1*$|wcR#Ki=l*-_klAn~S;F+74o*I;zm{M7IG8L4z7(8A5 KT-G@yGywo0-0l7V literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/16/preferences.png b/companion/src/themes/monoblue/16/preferences.png new file mode 100644 index 0000000000000000000000000000000000000000..87b7bff5e25dac894703fb11dd1ff4931b9c6ddb GIT binary patch literal 548 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstUx|vage(c z!@6@aFM%9|WRD45bDP46hOx7_4S6Fo+k-*%fF5l&A>s z32|j$NTWac|NsA{tM&_kZcr-;@(X6DSCcIM#O`SK$DQ}p65TIl+AEiLKHbUczvc3@ z=4j&tk-OCn+mn}OFF6U+!ICzd{+v;VkfoEM{QfI}E~%$MaXD00lEVT^vIs zF8B7i^EDXouuQ+_{X*91eYqjUQ}zlVFuQ=t-$(98Oa%m%vAJ{Ieq zvoE~in6OUtX!P_YZ$uIz_g!7I#7jr@%9SZ=Ewrz?T)DgN=Fa~Q8to+?ACd2=y!dgF zsDU55r1Q2IkrZhE@g! iRSApbP&DM`r(~v8;?}@zE4>J)fx*+&&t;ucLK6VMZkwq9 literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/16/print.png b/companion/src/themes/monoblue/16/print.png new file mode 100644 index 0000000000000000000000000000000000000000..bb3733f498e53ed4be9976d66906eb8b8b39a429 GIT binary patch literal 392 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPF=ES4z)+>ez|hdb!0-zw)bN6Vq11qZ;Z*_ygVhWM2JwP9y8>;164C)a zA+8JzX;{(!|NrjG_f)^wK6c*HZZg@FsMpc400wyLvDUbW?Cg~4cxZU Ri+~y!JYD@<);T3K0RRI}X1o9Z literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/16/profiles.png b/companion/src/themes/monoblue/16/profiles.png new file mode 100644 index 0000000000000000000000000000000000000000..24b3572e02a950d7cb494db024b29e0a51cfbfb1 GIT binary patch literal 317 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!93?!50ihlx9Ea{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YhS zC&ZP3Aq|NB|Nme5P3{sFVdQ I&MBb@098OwX#fBK literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/16/read_eeprom.png b/companion/src/themes/monoblue/16/read_eeprom.png new file mode 100644 index 0000000000000000000000000000000000000000..e8dade393728f8e9b06e2f5e3bf2cb291c148c9a GIT binary patch literal 712 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstUx|vage(c z!@6@aFM%9|WRD45bDP46hOx7_4S6Fo+k-*%fF5l-L{K z6XMFikTyin88mnP|Nno>)fIt2kJy$3`2{mL)E_Bs*x$*#jm7s1;{mts=B6(8+DeZ0 zGZzoKusJd{dbHNP`}FqrA+si%MjF(!GtyV!ZA zFgylwI14-?i-GZQ9fTR3G-g)-1vhxQIEF}EHtoMI*5ttBvU#x{hnAL@jz-e^y|e%S z*ER1xcR1&q?MW4HuCOkbM<*2H8`4&;JzUuB%3tR>ReS0IfsmUk*kYIaa7dpG+wIfg z)3U9>Dz;KN=+0%PUz=3Jn46>yRlL|$D5D-_aC_p!n286j@N!>bc>FO%>wxyzXDzLn zYZE&|xz?Eb+X{p4ncl@gVWw{@O1TaS?83{1OPV&)sO%H literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/16/read_eeprom_file.png b/companion/src/themes/monoblue/16/read_eeprom_file.png new file mode 100644 index 0000000000000000000000000000000000000000..fc1c0d0013e034abd594d53a82f0fa836c054add GIT binary patch literal 713 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstUx|vage(c z!@6@aFM%9|WRD45bDP46hOx7_4S6Fo+k-*%fF5lsFvV z6XMFikT#^z|NsB}L(ZHAddI#b$S;_|q5jYQrp8jn18yxptG;`(9Gn$j$=v43*5JHn zcS5&gC&!NuU+Ug{di$I6aBH)|OS9-cQhDcoYJ=@OLWFWxy;B{q_g+O4THrKmG;qBl5 zt-2N~5jQ#x2mVeE~&FZ*CZ&%!B_yB4}_`dP$&OiImBz%TtX%bbFZKKl=e zt~2krExTOcE&uV$KZTOnPF#;Z^Zoc|cC-CI&epL#S$IyJb*cY8m0wJ*F9cgA^s|9{ zqFUk_QIe8al4_M)lnSI6j0_A-bPWu3jSNBzO{|Pftqjby4GgUe45|_q%b{q<%}>cp XtHiB=+g5rJPy>UftDnm{r-UW|l!((o literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/16/read_flash.png b/companion/src/themes/monoblue/16/read_flash.png new file mode 100644 index 0000000000000000000000000000000000000000..c384e0e0beb1901b796a4519d1ba3205ad650e47 GIT binary patch literal 892 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstUx|vage(c z!@6@aFM%9|WRD45bDP46hOx7_4S6Fo+k-*%fF5)Mpgn z6XMFikT!~l4}t&x|EGp_YybvpN=cAkFoVX*FAgG%TMxPj&Q9ll``UGJ=jHo3{#<J{p%ri9nU&4@hgSJDyx@LG$vW7Ev$-9Lf$F(!GtyQFTt+c6)=;VkfoEC!~L z>mbbNq%pe!D0srt#W6(Ua&m$LTMy5QhR&I+$5L36%*y!AiA>-SH|N)v-_PK*aKVHP z9V;fx*ulcwt>U5BJY`FdMe~|Ddzietlmc8lXZpK_PK@oH>KGUj>m1zO7(Lt3*FD@n z{t^R6P(u_?Z;vmJgoIDyjDtKX2NLoUGgH^*FbfH6-?}-yprE9vtkAT;ctVM}!G{kl zt3H1E_ObN)XMT<+oLqdItXwk;Gum3Ym%6yPEp;(I+Th#S+wJcW=;z6jv{0lY+4SJF zLpp3tOHwQt80JMNU1*P&cm?#6YKdz^NlIc#s#S7PDv)9@GB7mJH89jQG6*p=u`)Kb qGBDRRFtjo-s7hEYhoT`jKP5A*61N6!Tj@nW4Gf;HelF{r5}E)5%J4G) literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/16/recentdocument.png b/companion/src/themes/monoblue/16/recentdocument.png new file mode 100644 index 0000000000000000000000000000000000000000..20a7d7443f209e3ae02b7bc52f8b172a9ee7297f GIT binary patch literal 660 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstUx|vage(c z!@6@aFM%9|WRD45bDP46hOx7_4S6Fo+k-*%fF5l-L#E z6XMFikTw+2|NsAQG&&msePL4)O>_%)r2R7=#&*=dVZs3O0DUIEF}EPEJtZHn`QmAZ+Z^An3ATgVACxgH0Qa7jrO_ z8Y*!c6ciK{Dsz7L@aZEr2bUsCi>u2~i6gD52~3lMcrF?7@N6nFV60?yRZSIjWex3U zU|2lMs<};#xp|jZM8oWffzj^a{__tWxWMr)D%n{$EZDeMg+DUFC@PXUlfki$bNk!< zH6MU(Q7v(eC`m~yNwrEYN(E93Mh1o^x(0^2Mg}2=ES4z)+>ez|hdb!0-zw)bN6Vq11qZ;Z*_ygVhWM2JwP9y8>;15<&q! zA+8JzX~^jR|NnfA)#*T4mXaX9V21tm4vSy?mILw`lf2zsSbyZdJPzb=7I;J!GcfQS z24TkI`72U@f(D*0jv*Y^lM@awN5sU$$Q8Tv4(}=h&P++ufBKhfqGR-Tq8*kackhVm0kqYz~JfX=d#Wzp$PyZM_>T} literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/16/saveas.png b/companion/src/themes/monoblue/16/saveas.png new file mode 100644 index 0000000000000000000000000000000000000000..9bd9a357429854912742b819b00ced2e88224734 GIT binary patch literal 377 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPF=ES4z)+>ez|hdb!0-zw)bN6Vq11qZ;Z*_ygVhWM2JwP9y8>;164C)a zA+8JzX;{(!|Nrjcnq49v9+46O_dsuC8PsvQH#I1qbR(cUo1B0ilpUXO@geCx| C^k*di literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/16/simulate.png b/companion/src/themes/monoblue/16/simulate.png new file mode 100644 index 0000000000000000000000000000000000000000..a473f43d2e0602c395a4683a5326052331d6714b GIT binary patch literal 407 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstUx|vage(c z!@6@aFM%9|WRD45bDP46hOx7_4S6Fo+k-*%fF5lrRhM z32|j$NFx>f|Np;P)$uma1c8zuzhH(1te4flN6z2I^(XtL{v!6ayGlS?7#Neh-CYD9 zZMEG6vL>4nJ@ErzW#^d=bQh~1Rp$dyL#wwcb0~{{ntGQ4lppR+r}8ZqexK{s9m+hHKHUXu_VKYk@7@Alan_3x|Ya19^85mS0ES5vjkei>9nO2Eg1Gla8BA^BaPgg&ebxsLQ E0DJyvkN^Mx literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/16/stop.png b/companion/src/themes/monoblue/16/stop.png new file mode 100644 index 0000000000000000000000000000000000000000..a28a8cd9d1e23064ffd9533b03e6bab511bfa6cc GIT binary patch literal 337 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?K3?%mjbVdLvmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCjKus+S48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fg!5QEa z;>y5~21Nh=|1bR}cL^xSSQ6wH%;50s22hxRG0EHAg(;1@CIzItz$3Dlfq`2Xgc%uT z&5-~KYI?djhD02Gd&-az=rRU_S(*#$MH&Ct+}_La!2erNlL7}29dc#JDR7+eVN>UO_QmvAUQh^kMk%6I!u7RPhkwJ)|iIuUbm4UgofuWUwK~=(HITQ`K b`6-!cmAEx<+e$A2YGCkm^>bP0l+XkK=doC8 literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/16/switch_dir.png b/companion/src/themes/monoblue/16/switch_dir.png new file mode 100644 index 0000000000000000000000000000000000000000..0ce35b6a10214ea50fadf49596181f582b3762e5 GIT binary patch literal 534 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstUx|vage(c z!@6@aFM%9|WRD45bDP46hOx7_4S6Fo+k-*%fF5l&B8y z32|j$NE;CJ|Ns9qj-1;-XQ-D1`2{nGd&@ZNt5 zRNXCK+wJRLYUCpmbL-7wpccj?Z+91sy&JY}0&+MDJR*x382Ao@Fyrz36)8Z$Fi#i9 z5Q)pl2@2u{MhgpOMn>G6u;Y!)t2r?zKE1kQ<1lGDzup1;1$r7s6wYWVbzM+V(>tS} zsHv*UEdFRRt5DIWS0~&w3pQwRDSn)KWol@^okgqMwykHl&By#Ts^d*E&<52K*NBpo z#FA9245bDP46hOx7_4S6Fo+k-*%fF5lqe1G z32|j$NTW0Q|NsAjrOH2m4p1uz@(X5Yc=L0aP}2b!&fY`sq#mkrT`<}-(ep8*-@mVq z&OR|ap>E3bM~|J2Rdowc2V;`AyNg;B$BeB&4rhT!WHAE+-(e7DJf6QI1t{p_>Eak7 zaXC3*fm}jLQd*+xqs<$O3yKPrIX`@0;pE`h~c!SP}Guogwizv#Ku3J9ePCswJ)wB`Jv|saDBFsX&Us$iUD< z*T7KM$RNbf#LC#z%D`OPz|hLTpekXp9EyhA{FKbJO57T_ZKW3hH86O(`njxgN@xNA D0fL2; literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/16/wizard.png b/companion/src/themes/monoblue/16/wizard.png new file mode 100644 index 0000000000000000000000000000000000000000..60754717d9b91ae34ac78e3aa2ceb8e2f094e08b GIT binary patch literal 706 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstUx|vage(c z!@6@aFM%9|WRD45bDP46hOx7_4S6Fo+k-*%fF5lsF&Y z6XMFikjB7J2UNwtkk7zS0!Bb?5l|0|3t=FWKxGhaIRirlSXmiNF~kJ80yG9t7epgO z8BiCRv6WzRfPz2=K-2))K)1nl0U5<$1Y|%2tHE55MgRZ*e?H&)H_&TNB|(0muwq~^ zVrF$@HrSFTZM*VxX8&hv{>Pp^yDnSIY~~20{772+Z3Wyd9wQEkCFlAC&!i0%WlbX0r z7@pSFQ1VGhN(c-}3kXaNXztvwBKt#TR_5y$uU45bDP46hOx7_4S6Fo+k-*%fF5lsF&Y z6XMFikTx{Y8BAyY|Np;h)y-0%*PKg&{DK)A>dT#(S{#oQH|*ci$-HkHi|-f4?&c=e zF810=j`o8dXD+(1HMY9dz5Dd`_aV;1)hZj-C}gdh9vE>ve?9Z}Z*4uU`+RS002;@b zz|L13PpIQE-R&6FrR~**?XSEa04!GMrU3pYUm6g|^XI{7JG;OW6 zO}0Oj!a`q3y)tZKFzLOXrp+e&qU^Zer3JT(&#`=%o$*UgHPq5OR?JsqX{OZ$zHWBe z@}mvg@+u5!9%q=$vj|wVr@kRLdu`FNpA%wgxbl{(pT2tid)4Nz(RXB?rf;A6_n<|= zmj^1TmfjWRFYe#IJiY#d_`RtyjQU1GR#~rCMFPE|TH+c}l9E`GYL#4+3Zxi}3=Bq49v9+46O_dsuC8PsvQH#I1qbR(cUo1B0ilpUXO@geCyr C5#Ngd literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/16/write_eeprom_file.png b/companion/src/themes/monoblue/16/write_eeprom_file.png new file mode 100644 index 0000000000000000000000000000000000000000..1a837e83eb3430d8551104636d23a45bbcace250 GIT binary patch literal 724 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstUx|vage(c z!@6@aFM%9|WRD45bDP46hOx7_4S6Fo+k-*%fF5lsFmS z6XMFikTwj^|Ns9lv90d}ddjgR$S;_o-r>)FmqQ1bn;J_QnOc5UeLv{z$ucXxl8x1M z&+de7$4-tPAHLMR`}FoV=i%0BmG%v56tdP$4~#gTzrM@&TU*aY$8;~CVT?)M?k-LO z*KNN5Ih+L^k;TAxxemgNP8zc-fP!m0T^vIsF1wy>=R0J;!*ZdRqr|{F^X6iQn~UGr z{`qh3%CXkMwd>E6;)Z&U7l*AhIhR-_&rtB5=o_h7EZ`<*uMr@2bVrc7(V_idi473KlXO{KTi}Ge=5x_=W+6H^!mbhy+x>F zfzWwTpu1H|Tq8{@O1TaS?83{1OUQE)Jy;X literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/16/write_flash.png b/companion/src/themes/monoblue/16/write_flash.png new file mode 100644 index 0000000000000000000000000000000000000000..17c392fbb05ca6ab7e6395658710109c52f972eb GIT binary patch literal 876 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstUx|vage(c z!@6@aFM%9|WRD45bDP46hOx7_4S6Fo+k-*%fF5)TbQa z6XMFikT#0&guws*|EqR8%>{;Id`XaBFhjk=ei25&+3EamU%M{uynH{$pNp@!m&fbr z`?(2UH3N@sRdK1gDsOvAdv8VJ1kTBAiZ>U1{`Tgl`*|Tbx1G$br3xqR-ZN}my+VD} zl<>NSxEYa${YqAL#6P^&;_cX!8J55l4YZ0e$=lr};pp}nP~>wKctjQh)5CQTW^~e+ zT>%t4s>n~e+{f8@N8nGEy7_sy`uI6{nP&^h2}+9UOUv^fsre{y{8yuHYa|bg z;YI}kadr_#2Ax0BR&6`}7yq q49v9+46O_dsuC8PsvQH#I1qbR(cUo1B0ilpUXO@geCxui1Ri8 literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/24/add.png b/companion/src/themes/monoblue/24/add.png new file mode 100644 index 0000000000000000000000000000000000000000..6d2a8087af8c6617a350aa6516026fe324561772 GIT binary patch literal 352 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaN3?zjj6;1;wmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBC?OQ! z6XMFikcN!@|Nqa|Se*`(Whn{r3ua(Zu;DA5mJH-GCV9KNu>Qz@c^t^$EbxddW?pX*RG#w2fd7sH#kWs86u&H|6fVg?4j!ywFf zJby(BP_V$$#W6(Vd~$-smxhU*ot=`wGg_yfJ4w?u;=yzJ?>jgIa5zUq zxLk2?;OVX^{Ow{3gCIqmxukh#KOR^_%(;^66XP!UB$ngfp!Q4?8Fl9%^hBcKv|J z^(&XIUA%fYY2&`e#)X2VPSd9`FqGWlxNp9qK?P{DYKdz^NlIc#s#S7PDv)9@GB7mJ zH89jQG6*p=u`)KXGBwmTFtjo-*f;5O9g2qB{FKbJO57UGpZ7il)WG2B>gTe~DWM4f Db|b74 literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/24/changelog.png b/companion/src/themes/monoblue/24/changelog.png new file mode 100644 index 0000000000000000000000000000000000000000..6ae1efff4c7938174e8590c4271f80522b388a93 GIT binary patch literal 528 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM3?#3wJbMaAv7|ftIx;Y9?C1WI$O_~$76-XI zF|0c$^AgBWNcITwWnidMV_;}#VPN}%%2i9il#fk$L90|Vb-5N14{zaj-FSmWv97@~20@5S4EhZJ}k z9xfD_vS>EDSz+z}=P`;c5j-c?eY;!mQGH8eqD7aLXu2-5#O#=kb(jxX{d&`B^=7;IIet!?WlBbkKzFE?xJHzuB$lLFB^RXvDF!10Lla#CLtP_-5JM9y tV-qV=Lu~^?D+7allRnp>Xvob^$xN%nt>OH6??XTh44$rjF6*2UngB!sp(g+U literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/24/clear.png b/companion/src/themes/monoblue/24/clear.png new file mode 100644 index 0000000000000000000000000000000000000000..cfec2713eb11b760464bf4ee8ae4a59aabdb553e GIT binary patch literal 602 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM3?#3wJbMaAv7|ftIx;Y9?C1WI$O_~$76-XI zF|0c$^AgBWNcITwWnidMV_;}#VPNvL>4nJ@ErzW#^d=bQhKKcHCM&I_rVWSSOxfQXBpe{}BYg8t zwfAWom)!rU<+kYNWuDi)J2qH$tu<2Ju=+^Tn&#WnSIpLGSn;ia@9W0@?@M1bd_HmK zd9~k)DWCPvaGI-q{&_}o%b&+wCUfpvshAfQ*7N+${WqniiudnJ+e_I_zZiNLxHL|@ z6D2OC7#SFv=o%R68X1Hbnphc|SeY7X8yH#{80?$$xei4` cZhlH;S|x4`=g)f|0%~CJboFyt=akR{01PR;zyJUM literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/24/compare.png b/companion/src/themes/monoblue/24/compare.png new file mode 100644 index 0000000000000000000000000000000000000000..83fdaca7a069efbbc4cd61b5957498b056b500b4 GIT binary patch literal 923 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM3?#3wJbMaAv7|ftIx;Y9?C1WI$O_~$76-XI zF|0c$^AgBWNcITwWnidMV_;}#VPNkQ3Bs2iahU8{q}Fc!Vu93~ zm(PBGi!^v@FMntE+fx@R*8GVxgB^wl&;p%^E2nVKg!&%@FS!LAZ}pf$Y9Jpi$z=7nqz}%als6x;nXN`e&^Bj#kCWV!(6AZh&PHC;mdi6?bR+Ir} zS+2m+#jBU+CuF3gEJ^CoOH9g2(>r}2p>e{5W{-$f(UIOa6FdrTG4*cTEPi|f19Kj` zdybIbxmSAYB2?~NnRIul?FNqusfx^rPEotK%>k~FJ4$B5Bsf4KM z%<0r*GF`J{=Uk=UMT;grVv^eR=FKj{jfp2FvUKqq2y}M)cN~`c+Ucp-62#7MD@IBB ztg dXvob^$xN%nt>OH6??XTh44$rjF6*2UngB@82h0Ef literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/24/configure.png b/companion/src/themes/monoblue/24/configure.png new file mode 100644 index 0000000000000000000000000000000000000000..e75305484f008d1712e431ac934e83e69f2f26ee GIT binary patch literal 620 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM3?#3wJbMaAv7|ftIx;Y9?C1WI$O_~$76-XI zF|0c$^AgBWNcITwWnidMV_;}#VPN_MpvB{|@#@W>|Iw~d# z1{xN!v2l8~v`ksKa!b#eIW`g+8d?Wcr!)#_t>Wqu;51cCS$suO(!^xzmeP`vuU`yv z%qKiFH@*7s;3GX}2n>5hTQy=%(P0}8qS~hJ_OXj;OXk; Jvd$@?2>_`zqgns} literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/24/contributors.png b/companion/src/themes/monoblue/24/contributors.png new file mode 100644 index 0000000000000000000000000000000000000000..eb0e1706df23cc04b700b7ed1f2830b5087a1f61 GIT binary patch literal 850 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM3?#3wJbMaAv7|ftIx;Y9?C1WI$O_~$76-XI zF|0c$^AgBWNcITwWnidMV_;}#VPNBQF89T_`mZmEnRVr>-nc5Ifc9r zJlt0n|NMR3^Ou*e^xHEYZl@V_Yroy>xY26CWOkzYS&OyR`}y_vGAfc14t@S!5`9)g z!||fit=nt1Ukp=M1)9&8uKlZK-j!N( zqD0|jyWye=r?5Vj0-hC~i=J>!5OR=mXwx|Dr8j5(v&PMzyS>*kJn2>}DCNyC|CMXT zIOR~oDK;&(1@{lG;IQ_2{jc$CxcusAl3nxX#b>QAWedo^GHdPj+JE=HZT1s?@$HY^ z_l>7>kCzvSIutc;OJH9hKjYwptLFoi4Qlx=CFdHkrd|D+bn@V-&wJKy?V9U#|IE4{ zyUiZ_68!h@53@VN?f7-MCCC3UYwR)a{v{Ek1@x(EiEBhjN@7W>RdP`(kYX@0Ff`FM zFw`|N2r)FVGB&X?HPkjRv@$T*H|cX7iiX_$l+3hB+#1fG_dW#Fz~JfX=d#Wzp$Pzi CE(~A* literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/24/copy.png b/companion/src/themes/monoblue/24/copy.png new file mode 100644 index 0000000000000000000000000000000000000000..362bae325f59078d67277c58d1a3aec3fbcd864e GIT binary patch literal 554 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM3?#3wJbMaAv7|ftIx;Y9?C1WI$O_~$76-XI zF|0c$^AgBWNcITwWnidMV_;}#VPN0S`wPw-0xD-r@^*Jo*~0d7CXmBf;1OBOz`%DHgc*Tu&Soh{CqXYB1k6cnLV-%h>**#n! z*yW7hbMJLB7h)uorY$Xcn3Z?5bh8k5u5P{-OF{h!BNi9`x}P8BT`zfZc+w5d755pQ z88BqX9a)~os(iC8{{HV=VcT3zU5Oua=K)=zTH+c}l9E`GYL#4+3Zxi}3=BpObxXS46O_d_D%X+hoT`jKP5A*61Rr)=eLQw zEb#n?{NM0`x4U*8FjQTt^MZ@X`BJ+!Tfn(HPm6*28I!!-T}{>Y+S1b6VVq^c!eu6ke0~BC zj0_(#8Si)~WV5H{&!0a`YHCalUI88w3te48&aiO(IHDThGkHo=hqveAXkBG)q3Mqg z7EIp56w$8K)-tJ+bM~gr&MuB!+e1aKTro9y`eW+_m6olpr4kY)U%&8PP~qWK+%j<^ z$KeCa41y872fkV476KioTH+c}l9E`GYL#4+3Zxi}3=BpObxXS n46O_d_D%X+hoT`jKP5A*61Rr)=e-XBH86O(`njxgN@xNAf3LUD literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/24/customize.png b/companion/src/themes/monoblue/24/customize.png new file mode 100644 index 0000000000000000000000000000000000000000..2471957995fe4a4845c51a31ccf2f06a651e6d8f GIT binary patch literal 556 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`#0(_Y@0k7uNU@|l`Z_W&Z0zU$lgJ9>GZqKA zJ29*~C-V}>QAqX(@?~JCQUhviVPNpWX6wC`%1Suuy#O zaWnT)R@cjKB%?NSCrplFQ%E^^@r36J!8G%R7%6s!Tg+b=@3_v9TRfNXjc*0V@>~X+ zH+2))7VrmsuXw+~JaZQ72gZckl?CsnwR~JYceaj0zQjwJfW_@ARdN}8n11lwuF9M<;#wMlli5&SA(vc=n2}sqWg)s1H-Iv4K9a+*VF{KPcT3D@qqP?_yWcS zLct71!3WOd$a6o4afrHlf+wx!T|>(nU4|46{|4?2$_@LH3M(6)Z$H^3kW$Ssb7is} zW9)JVkAU7PrIiI2e3zY6FL-$={+0M&0f%2sHQpw`5K}F2jVMV;EJ?LWE=mPb3`Pcq zCb|ZOx<&>eh9*|VCRV0~+6IPJ1_t{keXc{%kei>9nO2Eg!};^xhkzOwJYD@<);T3K F0RYCb#Ss7i literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/24/cut.png b/companion/src/themes/monoblue/24/cut.png new file mode 100644 index 0000000000000000000000000000000000000000..1104013187b58bb035a7376143174a41b9a20cf8 GIT binary patch literal 917 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM3?#3wJbMaAv7|ftIx;Y9?C1WI$O_~$76-XI zF|0c$^AgBWNcITwWnidMV_;}#VPNyF+b# z8lBh5pQ`@Nd!)|A(#)vzf4{VI;;*#@9=`Fw@143XXzkV4TeDiVr|;|9^COSJB>Ju2_S>1;XEF53$Hi2CKlYWKq1mqd z_`Rv(hc8N~UA`%kU^m+@!A9y+(#Dvz=C|)Mm)|~HwKaw#`z`e&rq0isYk+~JTH+c}l9E`GYL#4+3Zxi}3=BpObxXS46O_d j_D%X+hoT`jKP5A*61Rr)=e-XBH86O(`njxgN@xNAzcL(= literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/24/duplicate.png b/companion/src/themes/monoblue/24/duplicate.png new file mode 100644 index 0000000000000000000000000000000000000000..5d34b9c61783d7c2d9d7871e8631e834f49b12a9 GIT binary patch literal 653 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM3?#3wJbMaAv7|ftIx;Y9?C1WI$O_~$76-XI zF|0c$^AgBWNcITwWnidMV_;}#VPNacz0dmp|Jb zndQ^ELSyBW<(vL6WhgCJ6BWSFT$-hjH2Khqr%W8KGvq|JS_cMj-FRzxS;pYP@`Lss zbIq>sxII33bP0l+XkKTc*mI literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/24/edit.png b/companion/src/themes/monoblue/24/edit.png new file mode 100644 index 0000000000000000000000000000000000000000..8b1db12902599060821e6d993e915543ab2efbd1 GIT binary patch literal 699 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM3?#3wJbMaAv7|ftIx;Y9?C1WI$O_~$76-XI zF|0c$^AgBWNcITwWnidMV_;}#VPNL z$J_&tM83J}B6?a)LgBH6R=)E2`j38G7bC9vcD?P9`P?nMU<)u57#Neh-Cb-i-Mkp=RWZAFf;tuc7L?x54*tJPdq8CJ0o;vI;@abyD4_!qmb-UTgKIio8N3v z+jh%Oov~o|n&}Sp4|x9u@|;-wa@t3hi~K)K=DMCWZkV8${(_i~?GL#21epK#~dq2T$_luvG<)`gsFuuUMZP{me)riR)EhE@g!`zC#^L(!0%pOTqYiCe?@ T^WKMm8W=oX{an^LB{Ts5%`NoQ literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/24/fuses.png b/companion/src/themes/monoblue/24/fuses.png new file mode 100644 index 0000000000000000000000000000000000000000..1f78b345fb834c33a98e610c68b1aee576499276 GIT binary patch literal 823 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM3?#3wJbMaAv7|ftIx;Y9?C1WI$O_~$76-XI zF|0c$^AgBWNcITwWnidMV_;}#VPNk|vS+PHT<~WmC-dY(qP9Oab17XFj%Vsx z!eRLDYwYTEi?lSqT*>)njA!2 zkBgYJI`CXrF!96UWq*7&Upd2c_|m!G`~8~Nl@$EE{%-x=wDr}`Vx0bE2Bp6|Gfl;E zw(t?lPpqnJUzujqGvgyEme5$9^t9l41L}wOxIRzE884Dv8LhLt0fm*zKWGQ z&3F{Bq53k@QhwcVooCx3muD}$UT?yF^3>twf)}doig?Z+JpJQA;9MVRo8y&pReQf2 z(|Bz8_|qNl8Ra!B3u^ry#>8zopr02!?acmMzZ literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/24/information.png b/companion/src/themes/monoblue/24/information.png new file mode 100644 index 0000000000000000000000000000000000000000..b89731c5063b9c6fad6dc7518efa590129b60778 GIT binary patch literal 460 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM3?#3wJbMaAv7|ftIx;Y9?C1WI$O_~$76-XI zF|0c$^AgBWNcITwWnidMV_;}#VPNDK_p@d z6T<>VmetopQ~iKus+PD$l%yncptHiD0{CV#~Kn)C@u6{1-oD!M_24Mw)H?#yj_U66QMy)bD3G8d>%OD9@PW z?d~G_^v2J{Kn`btM`SSr1K(i~W;~w1A_XWI@9E+gqH%ujMNhs13LLBf3!B$Qv48oO z{+92^jZoqHljg4%>WyTZ;AnsU+p)gjXWz2s-u629vv0Cj#gqe#W~}WB%S4tROivbi zvMA-|Y!QjRPcC&;>{Ffg$A<>4Ty6K8HRu*!`eprzUw~GrmbgZgq$HN4S|t~y0x1R~ z149#C14CUSgAhX#D`OKYQ$uY7Ln{M=eUm=dp=ij>PsvQH#I51{dGA9&4Gf;HelF{r G5}E+SZjGe? literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/24/list.png b/companion/src/themes/monoblue/24/list.png new file mode 100644 index 0000000000000000000000000000000000000000..5d6638bbd8167c092eaf5eee8ff59ab8f8d1c60c GIT binary patch literal 750 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM3?#3wJbMaAv7|ftIx;Y9?C1WI$O_~$76-XI zF|0c$^AgBWNcITwWnidMV_;}#VPNkmTh^}0&9Sw8`$kq~qAt7T^^=iaf#H{3C9m#G;NP`tXZ3RdP`(kYX@0Ff`FMFw`|N2r)FVGB&X?HPkjRv@$T* iH|cX7iiX_$l+3hB+#1fG_dW#Fz~JfX=d#Wzp$PyVG22rB literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/24/logs.png b/companion/src/themes/monoblue/24/logs.png new file mode 100644 index 0000000000000000000000000000000000000000..08b4f5576ce421b97d8e4539c583a6957343807d GIT binary patch literal 605 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM3?#3wJbMaAv7|ftIx;Y9?C1WI$O_~$76-XI zF|0c$^AgBWNcITwWnidMV_;}#VPN zRL5x7u%|qWz)<$7A{`Y z{mjv}R>tnQ-nj!g9ZWL>59T#6Nl3n6VfZqcYsC()y!k)}sFt`!l%yncptHiD0{CV#~Kn)C@u6{1- HoD!MS9dtc6ZTM+4+P6$l)yTh%9Dc;5!V$jK}j=qyPnT zJY5_^G|nd{NOUz!Xsdq4kr5Z#a6NGpEj*QAt1)XJA%d4 zDa6OyJH{!<%iBAO?P{5$*#fypU0ut{l5$V2493PqLd&|RhHlxCkmt<0D(jWhjoOoI zEDIEUG#MD~$g;hV;b^P_+N)aP8c~vxSdwa$T$Bo=7>o=IO>_+mb&U){3{9+zO{`1} owG9ld3=H;7`i!a}H$NpatrE9}^XI(}0c~LLboFyt=akR{00EGiS^xk5 literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/24/moveup.png b/companion/src/themes/monoblue/24/moveup.png new file mode 100644 index 0000000000000000000000000000000000000000..8db80fc335f39d61cdce4d35c0316371a94e7a57 GIT binary patch literal 593 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM3?#3wJbMaAv7|ftIx;Y9?C1WI$O_~$76-XI zF|0c$^AgBWNcITwWnidMV_;}#VPN` zW}E+5G5ud3&oYm>EL_`ox2kXpOTXPPzaOZVG0EHA#qj2B*&-l^v%n*=n1O-sFbFdq z&tH)O6wLK>aSYKopPV4Es$pX1OxD#b+S1nSW`%xw%*=UmJc(j)cFc9m%#4mDoQjFe zb%KG+%!Y*_g`A$ub()!yk<84Nl_H$1%&w}EY;38b%*>%CoTjA$YZrFvEmUJp%*b5q z_2R{$h^k-Ak|$D_8TgNK6wjLKwi{@%YKdz^NlIc#s#S7PDv)9@GB7mJH89jQG6*p= vu`)KXGBwmTFtjo-*f;5O9g2qB{FKbJO57UGpZ7il)WG2B>gTe~DWM4f#qE{% literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/24/new.png b/companion/src/themes/monoblue/24/new.png new file mode 100644 index 0000000000000000000000000000000000000000..6d2329c279bf7babf6c86ad6bc8b6f2c48235f68 GIT binary patch literal 538 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM3?#3wJbMaAv7|ftIx;Y9?C1WI$O_~$76-XI zF|0c$^AgBWNcITwWnidMV_;}#VPNGA4PuyU4Th3hV`PI14-?iy0XB4ude`@%$AjK*2gs7sn8d^T`Pd#1m4Q z7}CVTLO9LJ_yitIdHl$2YGN{Tu#C-~m=#qCLOwNrm^6$EIN2QQ^b~c3iWCmCX)5Y4 zvG_!&7~D|cn>|NEQz$8EN687t28~@T25XKyRhcnE<)Z46B?Xd4_0FiN^YVG{m4z%$ zk(imXF!8*{S&pOJ4C*)8X0p!y2lAC_iEBhjN@7W>RdP`(kYX@0Ff`FMFw`|N2r)FV uGB&X?HPkjRv@$T*H|cX7iiX_$l+3hB+#1fG_dW#Fz~JfX=d#Wzp$PzHG?Tsn literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/24/open.png b/companion/src/themes/monoblue/24/open.png new file mode 100644 index 0000000000000000000000000000000000000000..dfe69689892f75b09288ccd62b396586dad93f3e GIT binary patch literal 544 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM3?#3wJbMaAv7|ftIx;Y9?C1WI$O_~$76-XI zF|0c$^AgBWNcITwWnidMV_;}#VPN$+SvYX|oA0yQQ;9gIod?k?)O{411!9L@rd$YKTtzQZ8Qcszea3Q#b`)5S4F z@w7pmXu{;yYhk~EF`5nJ({i?^n&(Xe;FdZe>&;z5;Vs;ub>IgNWn z_>}VweXZeRQ8~oXe)NjRC7w@v6avE{R%E(gE}QV3xwG)lp_(!3-&_ENl)xr|`{O-cq~jtL6nmAJ&yO%swCH zWy*frw&{+r=(;s>A+x?qn!n5uP@Y}*yN5abqf4|<%*LfMduC`vUF~J;lyc`zermvV zQA=L^lStb3$k*j_m2Pf%%s*c@)aoQ-FdNV=#w2fdm&8pQeA<8<&H|6fVg?4j!ywFf zJby(BQ1FJQi(`n!`Q(HJYzZlc1d`Gc6A}_ry%XGppFeo==-ESG503|r-KPq8G%z`a zd@U$c6e&y;oUucLy{l!0g^!bykY|Kflv@~|mg4#bf$)%^Fu}0UW{(xw2acL<-4ZEL zQu6f+uY*vVTR@_6vT(3KZdzU&c?+8lM@8GP4CTk{ODw7o)QB?+f2RAYwfK)KtHOMxJHzuB$lLFB^RXvDF!10 zLla#CLtP_-5JM9yV-qV=Lu~^?D+7allRnp>Xvob^$xN%nt>OH6??XTh44$rjF6*2U FngEkz{%HUJ literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/24/paste.png b/companion/src/themes/monoblue/24/paste.png new file mode 100644 index 0000000000000000000000000000000000000000..0e9f92bcb0f8f9f57d09ab62ae579fbb2d079ff1 GIT binary patch literal 632 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM3?#3wJbMaAv7|ftIx;Y9?C1WI$O_~$76-XI zF|0c$^AgBWNcITwWnidMV_;}#VPN@^*JIHosaE2jp-TctjR6Fz_7) zVaDV6D^h@hJ)SO(AsXkC6BfuPq$H&!CZ;-zr#*l0AbV$i< zQIdwx8aKB^IyyR!l-%5eUI-a9xH?UmA0KqeLn_#*tjx7U7+qt8cFodBIIy%`ZQ+vhyliZ3Q;zBYW6ich zsAHS4?IWPOR7+eVN>UO_QmvAUQh^kMk%6I!u7RPhkwJ)|iIuU5m8qe&fuWUw!M;hK f>rgc0=BH$)RpQog{=D}gpaup{S3j3^P6(GunW1j7i?^E`pD? z+U^2!I14-?i-EKU7`vU!wgW2g^mK6yskrraRy5xs10I&j>E_k{FHe#ePzaoqlIKC|99{s7aZB35pX*StCl61llOtk;N?B=b)_6zjko%vF`( zH>GJ_#5aA`y#+7+%EqyJX&zu&D$=*XL9dN3mt8J6%1A^=W1d7n$ox;`-(V|q2u4F4ld>Y@)>^!A8_^f z-&Ua96m2NuRw8qlUFe4go4nV{WXl@E#`S3*o=({}?=Ul0g^M%)$_IwBHY-}(w|?0m zC3pQWH+Myb+JbX7}SBT7;dOH!?pi&B9UgOP!uiLQa6u8~2Ap^25TiIu6Lwt=CQfx*5>pX*RG z8U}fi7AzZCsRRbi^0>? K&t;ucLK6V!%<#ql literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/24/preferences.png b/companion/src/themes/monoblue/24/preferences.png new file mode 100644 index 0000000000000000000000000000000000000000..28d29d0c025256ddf4f151596cceda19d3bbe41d GIT binary patch literal 804 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM3?#3wJbMaAv7|ftIx;Y9?C1WI$O_~$76-XI zF|0c$^AgBWNcITwWnidMV_;}#VPNA~= zW3yD-3^bTA$=ltqK?i|W z_KV&eN-Uh57k9tdJN@VX`r}&1H*VyQyEEOge4pj_H|H4sc$!(K%HHwzn|}K<=N`NF z!T%V%SZS&97Gc$R}RDXH@ zRvYLq)e_f;l9a@fRIB8oR3OD*WMF8bYhb8rWDsI#Vr6V%WooExU}$Avuy4}mIus4L b`6-!cmAEyWKkt1AsDZ)L)z4*}Q$iB}d;am$ literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/24/print.png b/companion/src/themes/monoblue/24/print.png new file mode 100644 index 0000000000000000000000000000000000000000..12fdee5f83e2659a27f03b1abcea0b8fdafcdf6b GIT binary patch literal 512 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM3?#3wJbMaAv7|ftIx;Y9?C1WI$O_~$76-XI zF|0c$^AgBWNcITwWnidMV_;}#VPN0Ho^#ljP+<}VOlYu`QR!XnN~=2w~4Opx;I6YH)$X}Y%Lj@m!fU8xgRl|5Sa z`>*Y*hpZQi^>0^yG}f1W$NtT+cpfk;8B|MLBT7;dOH!?pi&B9UgOP!uiLQa6u8~2A wp^25TiIu6Lwt=CQfx*5>pX*RGJ?lf2zs zgn4$yOapQ_3p^r=85sBugD~Uq{1qucK|fCy#}JM4$q5o$8YXsj&TMSuWRrL(w8qIP zhsVds;DA>|)7<9f$&KC2Y&RYX-La98;n`DTaG=+qE8an1x9kp;0;$%^MVJ0I8hfzG zGB8NFu^->jcp(I6vTBKIL`h0wNvc(HQ7VvPFfuSS(KRsCH8Kb>G_f)^u`)H(HZZg@ kFxWTga~+C?-29Zxv`X9>&Y$-_1k}Lb>FVdQ&MBb@05->ZQUCw| literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/24/read_eeprom.png b/companion/src/themes/monoblue/24/read_eeprom.png new file mode 100644 index 0000000000000000000000000000000000000000..15566ec09cc20c1e8346b5a798e034197c031d14 GIT binary patch literal 1258 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM3?#3wJbMaAv7|ftIx;Y9?C1WI$O_~$76-XI zF|0c$^AgBWNcITwWnidMV_;}#VPNXcUo;`wJ;qq3hnhG}1a^0wsi)AQ1o`7;~0~?-CZV4V|lLtvL>2?n^>q+t zbkdkz0aVcB>EaloaX$3IPy0g&G6z1oi-@Hzip5#(dX67H8ZOcD+9OM8+JpQ9Yrn1gX_rv<;F9^b6Yk}c{LkxO zy#D0&mCTdXW;epz-Qy;IKl7m7Rysi-A<`goU#ss5yF@=7W}$^W`~Eq^ew%ysy#8&j zqV;+=*CYX>NVUW@q9i4;B-JXpC>2OC7#SFv=o%R68X1Hbnphc|SeY7X8yH#{80?$$ gxei4`ZhlH;S|x4`=g)f|0%~CJboFyt=akR{0E0M;zW@LL literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/24/read_eeprom_file.png b/companion/src/themes/monoblue/24/read_eeprom_file.png new file mode 100644 index 0000000000000000000000000000000000000000..0458de41fda60b9ce8828c12b1ae1c50a56fbed8 GIT binary patch literal 1253 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM3?#3wJbMaAv7|ftIx;Y9?C1WI$O_~$76-XI zF|0c$^AgBWNcITwWnidMV_;}#VPN z|IKuP`vyJNl?1o_Y+2X9zG9Ji1PgajsdV<1Kfk_*`Y5QW#((_m$(UKmli-&Z^X>92 zuk#y)GsLPb_N*3_S6{Mgs;utT?K=|h?zNtF@x;rH#$L|jlaf-?%tEprJ2d57ef9cB z{^2!3;u3*1hu*eztu5(`nt04^`GWNmitRT%jkD>KTYUxSM#dy>cbA!r*UVM`Ih+L^ zk;T9?e;tGwoit`w02L&9x;TbtoKHRfJlZi(=D^3vOLk@|Y9M|>QAg7Ev^K}4 zu7k5ew&iWhFh3JE<80n$D-R|uwrRf0v%MFU?X-P5bI8NakkqXRs(un%nv$ahD?ZI}eLfr|W|yx)}Efb}DZ;V(Ia~asD2Gjm%S0 zK254wdid~H-wggc%ara}pR1MOH~I4LqMY|)|MU9m^Ia;wyHCx$a%57WuuFqugP_Bo ziA}Y9KNI@&WiIS52Z+3%{vcmA&VIP1opjzS@QIe8al4_M)lnSI6j0_A- zbPWu3jSNBzO{|PftV|8H4GgUe4E9a>T!*3|H$NpatrE9}^XI(}0W~mqy85}Sb4q9e E0P@;=&j0`b literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/24/read_flash.png b/companion/src/themes/monoblue/24/read_flash.png new file mode 100644 index 0000000000000000000000000000000000000000..8bcc4a932ffb822408d7ef27509beca3395b6c13 GIT binary patch literal 1377 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM3?#3wJbMaAv7|ftIx;Y9?C1WI$O_~$76-XI zF|0c$^AgBWNcITwWnidMV_;}#VPNe60|3 z`PK)a=O;HU_LfrGuxGWX{7!YJcLjNDyB^HmdiwZ|?TIyCf=$w|pHN=dbM0zKs^Q*c zuc|NpSS0d@clV9_!@Xz4C6WR+X1{IgTHAS{FKXhk$PIML#A^uUoNPo_*+ab?Sw zo+&WERJ;E!*>lDcc}GgmGp}#FD@x0Wxe`&MsnkwaR1z3-j#ASt8*p zDYvaO0yC>OR+PCV+zFW)LlmcJJ#fG21a3SL6kz)dv?_4^iASiZK zjFn~DKAve`d77@>dMjJ#b7$$=M{{G1nC_mLJJ)*Enlv^Je@Y<%pB9*ayhg2?7P$=w&2K|ExUGJ zp5FTT_SwxX9tOv@pJn%CU<_d5NDx}kp*?ZyOb!me)riR)E nhE@g!`zC#^L(!0%pOTqYiCe?@^WKMm8W=oX{an^LB{Ts5uFazc literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/24/recentdocument.png b/companion/src/themes/monoblue/24/recentdocument.png new file mode 100644 index 0000000000000000000000000000000000000000..3d5b3dda377d26f557791145b9b3095987f4621f GIT binary patch literal 955 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM3?#3wJbMaAv7|ftIx;Y9?C1WI$O_~$76-XI zF|0c$^AgBWNcITwWnidMV_;}#VPNHDT9p#Hc@!JH^d zzPZ1@{CfB2NgD5Vgw1jxc2_AXM&9Twuy=k)6baTe;Z*3yMCLcC249?H5}I_bjUkAEeYm2E$)7mNd1%b4Wt?vitc(ZCwW z;VkfoEM{QfI}E~%$MaXD00m!rx;TbtoKH?zAfAxY#FQo$!Wm{(Ch*|FlSgh-6H{4( z-}uD)HmT&BzU21|JGJ6DFQuV+`}*bW~IjIHq(^K}kzZL9bC!QBze{SzCSm zf)2HXOLUZ%ELx?uP;dFdP9?=vOV=)5z5IMaLPkoDPU4}&QweG7xSvFNL@RkmoQ$}A zi{#k+Rw+IhNYM`eXqwIb`H?fvWJo9){(8JL|Hqze>nVBg#((cad` zbSmgHvuelTRAnW}MT;bpk{;g)P|10mDl8;A$tiX6*NcxXhUu%C`rb0ulr`=$Hrkvc zqv*p>V zyF%~dx>UXw0>bI`LG?{K382hVv0y z65Lpv`nT7XGo5|LbZXV9cptHiD0{CV#~Kn)C@u6{1-oD!M!#4xgmUHi6ylUY{f7=HuP?bt`oyXJe@{+P1Yw|UMHnE;tS^-ptRywWGF%uba* z`|DYMMZL|y#ai?J- zXFH2Aw>BTArCAx@8=;~(F?VjLKB=hq`D3HkiIbcg9#0SuIi#nkbEq-YDTHVB(?>#+ zBIatV_TFta+7!YO9>vU{y@+L9#x)5Opuwsot`Q|Ei6yC4$wjF^iowXh&_vh3P}j&H x#L&db*u=`zP}{)J%D`aXq|bFI8glbfGSez?YdC-2`w&nAgQu&X%Q~loCICO2hiw1= literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/24/stop.png b/companion/src/themes/monoblue/24/stop.png new file mode 100644 index 0000000000000000000000000000000000000000..5711d764e485b88eb0f5562aebb5763e637ff39d GIT binary patch literal 337 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?K3?%mjbVdLvmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCjKus+S48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fg!5QEa z;>y5~21Nh=|1bR}cL^xSSQ6wH%;50s22hxRG0EHAg(;1@CIzItz$3Dlfq`2Xgc%uT z&5-~KYI?djhD02Gd&-az=rRU_S(*#$MH&Ct+}_La!2erNlL7}29dc#JDR7+eVN>UO_QmvAUQh^kMk%6I!u7RPhkwJ)|iIuU5m8qe&fuWUw!M;hK>rgc0 b=BH$)RpQog{=D}gpaup{S3j3^P6(l&!igK_>ul%jI_z_^bP0l+XkKlBSEK+1J3U<-Lp07OCrCVLnAkb9b!x9{@SNt!-Lu=L z_shpRH3SEAG&)AOgz)$}#W-=ecv>yWo;Zmu*r;z)hEUO`1h0dEg1%0kk*pr8R()Kx z*wX9pME_v#X!mdi-2n>5hTQy=%(P0}8qS~hJ_OXj;OXk;vd$@?2>@=W!WsYo literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/24/wizard.png b/companion/src/themes/monoblue/24/wizard.png new file mode 100644 index 0000000000000000000000000000000000000000..c2883401ef438bf76c5576f87c35dd8c76fca0f8 GIT binary patch literal 995 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM3?#3wJbMaAv7|ftIx;Y9?C1WI$O_~$76-XI zF|0c$^AgBWNcITwWnidMV_;}#VPNeY@ife5U!;WRj`7Ap&n*J6$3*Z%uKjO zxM^^cfeeV%a5Jl6W(0!)($4!GJdQ|<9CzSxyQko|SFuOyZ4Zl;dDf>D(qGp~ zX8$`UdqII^kKN@{hk_*duQ-`q6h6QuGCR>tVhYH@ByV?@{7{ZWV018W7I;J!Gca%q zgD@k*tU18M#K__4;uxZFJ~=^w$-vktL(DCtFw9J&c`kEk)8y{Pi4z-Vw@>encMw?U z=@H=);uF*4802MT9_}W#FwW1;Jls+6L_pBFv!RJ@MxLR*vCWRcCoWvNcF}d4Q@H>A z0~b!r=xjWG9FIbzc?>KIlfY}vFeal_Wl=>-m9d|S?5JUO%R;L)qS2k$mB z-qa{QZ=;_t&ng#h|DWNmLrY6#KwMtl1}6^ZjEKCv3YM5V7lbwDNlP9*ARs$=w)E+a z6utl(J+32t<^CQiDK19p=6alG7_GEsO5T+TVK7u@b+!@B>GR{*RUs8oyGz=wB`u}t zN^+O6LCVntLw24`#SdOdN)|AbP0 Hl+XkK;!_kr literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/24/write_eeprom.png b/companion/src/themes/monoblue/24/write_eeprom.png new file mode 100644 index 0000000000000000000000000000000000000000..5d2641f737070769ee49abc7b78a6c7bbad47ce0 GIT binary patch literal 1332 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM3?#3wJbMaAv7|ftIx;Y9?C1WI$O_~$76-XI zF|0c$^AgBWNcITwWnidMV_;}#VPNXAvKG?tb!>8a3;l2C|kG*^2IQ?-kw-Ap2 z$Hp~`bB!)t)^k28XS=}R$=mxnJIh>Nu}N_81_c<0dhBPpx-9Xbx_|!Jx~a3yosRat ze(ONzHN)BKyEbJ%DF4pau|zO)*M>RsPX5kquxpOo@#WWJ@8cJM?qp2zc6XV}w)@jY zAcwQSBeEEn2d;xKqm#z$3ZQ}oo-U3d8t0P}5>k@bnAODC1QJq{pFeo==viXIgQt(5 ziwit>E-oU(=GoEF)#>fwDY`j>$Kb@7t`?@s6)elG1yYQ6Jbm)4 z(Q%(u$f5-T9BUedToV}El4i89^Yi!TdS=dK4q3Ek(UvVjYZk9swQ9kxWo8@vgn3@M zX3PF<5ZcM>upmJ9+=75>H$vE0&f4(kI&@y!R-=%yN=*Mkct&2iDIZssZe|~=S4#7p zCwf7;ad#Fb-?|y9_3Xl3<@EQ*8Cd16K58t!!tGo&_xYEl-~AuBPn~gM`LSm<$Ez=; zbc%&=Dlm94Fm}1znX=NsKsVV+;LMCp6+>+<&NFS^Dd}ko7{nO9wb$?Ck}h%qMxbhm zYeY#(Vo9o1a#1RfVlXl=G|@FM)HN~)F*LC2n>5hTQy=%(P0} V8qS~hJ_OXj;OXk;vd$@?2>|NKmV^KR literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/24/write_eeprom_file.png b/companion/src/themes/monoblue/24/write_eeprom_file.png new file mode 100644 index 0000000000000000000000000000000000000000..184cbf2bb518d27e3437d83fb86c0d34c47fcaf5 GIT binary patch literal 1230 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM3?#3wJbMaAv7|ftIx;Y9?C1WI$O_~$76-XI zF|0c$^AgBWNcITwWnidMV_;}#VPN@9zOeK(sdzF@JMDs#!tJtq?xGb?!#{PJpk zM=@;_&hV_xU-EI+R9P?Gt=sPIwVoz@@x;rH#@^E7laf-?LbA3yH06AL{e#>5@S36q zzQ99o+q%~FO+03|eEo#g>x%6|H?YLn>^|^f0?>7gN#5=*lOHnQ-v;Dx7I;J!1Jm|( z5N34Jm|X!<;OXKRqH#X<{LgU4K#>CUr3e4CAyVA-j&9oh z8OCSyEB17I&wE;;Ehe^SwcY<)yAI29OfzUTGm6e_d)cfZ;Q4;%(L-fZ?sQ6(pWLe? z*7RGYlA++mV(UZwrd;7tOoqNO^M5|$eAgDd*+$V_wOH{atGc3%b$^_|k)+k%bA(@{iTKstqi~`jX*NBpo#FA92lCK>Up@t;-9@^jD0uZbMS z$qp|bzOMNl^_*{$HGc1^!Tb4{QY0*~Z6P-SFa(F^W zNKjay>*dv}maSX3a_L&-72Ho=yp%SOl9HU=pyG4(jIPewHMu6aZ{NtuJe@NqHs-F2 zq{JObn;6@JW|ftzfBfJw{Gs`io#ALCQ|#54k|vp^UT3Gnhm^M{NlGkQG30B zp~+8rCr=6v3cl=eDLB~pj)PF$%z2SKH`6S6B6n8){Fb1g&p1g#BSbqzqlir^D|iie zVJc@tlj4bAz-nGUij#+DBd|=$WqXz;aL*LE|2#$_XjtS?VnDIe0FDEG@Z)F-^ zYDZ>ncTz^V-)j$Mrf4y?+iGlq)o0JG+p#9EPb1TL*}QxE6r2y&h3@C{<>7HU6m_gu zSlMEch+1KUq0hWW+V-Jg>zFkT9ylU!%g|R{KkL^iNya^a#^KAN<_R%fcDw*m^S8 zq0>^ew>W*>9P|3deY!45i8aTSCa?%Fs5UUDF|yn}x{EKkAz@>Py1)+IMsJsbE1U|A zOA9!Ur=AWxz{PO>YURBva;I+tqf)iRHKHUXu_VKYk@7@Ala tn^>6|Y8x0@85r!F^tld2LvDUbW?Cg~4d>5$9|CG%@O1TaS?83{1OP+VoW1}6 literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/32/add.png b/companion/src/themes/monoblue/32/add.png new file mode 100644 index 0000000000000000000000000000000000000000..526d2ebd8a74e7d5a086c6db30bade7ca1038020 GIT binary patch literal 354 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UV>C6dj$D1FjT2AFf_CyP}GAUALpctjR6Fz_7) zVaDV6D^h@hdY&$hAsXkC6Beio1i1(Y6fWA`Fk#Z9Nu9mbgZgq$HN4S|t~y0x1R~149#C14CUSgAhX#D`Oxs)iyA+ lGBD`bbng|4hTQy=%(P0}8vedd3j=Ck@O1TaS?83{1OWZ7Vlw~$ literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/32/arrow-left.png b/companion/src/themes/monoblue/32/arrow-left.png new file mode 100644 index 0000000000000000000000000000000000000000..1c51f3977cb87744e99b399e30f0b2fcb9f89b38 GIT binary patch literal 361 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UV>C6dj$D1FjT2AFf_CYj<$PKtAHHN0*}aI z1_r*vAk26?e?ej~ZSf5_mano*OiNRf(^p|h zN&+K;OR13H51G8#KuxM8t`Q|Ei6yC4$wjF^iowXh&_vh3P}j&H#L&db7>G=@4GgUe k40<-*dxfGQH$NpatrE9}zwgt+fEpM)UHx3vIVCg!0Fkj{S^xk5 literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/32/arrow-right.png b/companion/src/themes/monoblue/32/arrow-right.png new file mode 100644 index 0000000000000000000000000000000000000000..9bbc927e25d922138111313ed23df674ec3cc74f GIT binary patch literal 363 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UV>C6dj$D1FjT2AFf_CYj<$PKtAHHN0*}aI z1_r*vAk26?e?^Ug%mDWtFZyKsg}4#l%ynvv}iiX_$l+3hB+#3GAPYVNTVDNPHb6Mw<&;$U#0Ak_* literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/32/changelog.png b/companion/src/themes/monoblue/32/changelog.png new file mode 100644 index 0000000000000000000000000000000000000000..a47a28a332423c1922790670f1898933acb1e5b1 GIT binary patch literal 407 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UV>C6dj$D1FjT2AFf_CBE zfgH{PkH}&M2EM}}%y>M1MG8>S&lesf&5lLXPbTf(%)VmwYN%rW|0H&v2yr2TMj` zn~=x>)&~sJ8J03Id@R@2fAneMe4s_DC9V-ADTyViR>?)FK#IZ0z|ch3z);u7AjHtb t${2`DwG9ld3=DcU-FtNS%G}U;vjb? zhIQv;UV>C6dj$D1FjT2AFf_Ce|G)H`+$EqOV@Z%-FoVOh8$e+O#w2fd7p64sniP=o0*}aIpeqi8Fyrz3 z6(B)xPZ!4!iOb0e3q(2$3|JZ@7xMHdD$Fvx(r7Ajh(mz4)uXkgX{m&Zv$JAXq_eZE zghH3oLN>>#3N8<_9_&hZcEGpoHtTlThjObJ7`mJJ_C%Tq0{zCITH+c}l9E`GYL#4+ z3Zxi}3=B!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!Dgdzx&QzFXZ~>Y8_;CVk|4ieAPoj-*SE$4?OiOz$3Dlfr0NZ2s0kfUy%Y7?DuqW46!(U_R?)WCPe|}3tiXWtyok3|G&5D zj8gY0i|lTy3;9{4FntJrIAa~_J?>A124%vW39jx1Z(r+hKV&rDne|)6>C5N#5Qa6Z zlV1Ft9q%}6zi`5e|Drw3DhEOuYg24E3gQoMMa-YXOhx%nxXX_dG&{C%Gm2Gqdd>FVdQ&MBb@0R0`H A4*&oF literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/32/configure.png b/companion/src/themes/monoblue/32/configure.png new file mode 100644 index 0000000000000000000000000000000000000000..c701b52be449d6eda1e0c9c3a8fad346acadadb7 GIT binary patch literal 603 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!Da}~WRA1}RF!Rq537|&CByV>Yy^zZS?LZD^fk$L90|Vb-5N14{zaj-F z*zD=z7-DfcIYEMT3saBJnTn^8C8d!cJvMKAUG(Br(&UFv9%U?#qhp&p0YsCn$?f zoe~;ywV_M$N?}z9a}M*q374)YEog9zc6aYRks-;d!oa}Pz^}DFz&Q!%9Muxnh?11V zl2ohYqEsNoU}RuuqHAENYh(~&XkujyM5fvXhE@g!J)7>mLeY?$pOTqYiCe?p_i153 O4Gf;HelF{r5}E*JH>*GZ literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/32/contributors.png b/companion/src/themes/monoblue/32/contributors.png new file mode 100644 index 0000000000000000000000000000000000000000..aa8f130b596a1c14ab7f1266e406108116bc3420 GIT binary patch literal 971 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!Dk#5ze*v{1Q?VFB|(0{3mR7`NK5~B^8Gi4D9_xtoy*?8NGT0BSNfK5UpqH`KdVY=hvr-M6Z}yJ1X?Y8t_7AI zVR8$#ax06u$+_7-c-qVmyVpJ!O>%`SC7&w3J#*%nu)*>F44;jdBNq6Jw`$M#{x;9@ z41);H$`MGNk?2i7l1 zw-I|~=GS!Dz~b`XN{dIVF_&Iz?dY2%%^LFc!TqXVQy8A^7Fcnt;Wt+$F9(NQQp0zR zuTQ$3-#Wc|SNrzw{15BuPG0#Pzl7nw{f#MiW~^*$d&T21^MF3Hl-h-ahI}SF=2xoD ze|Xlev0rkt%zlnES2HjiRZCnWN>UO_QmvAUQh^kMk%6I!u7RPhkwJ)|iIp)BnQ9vt mS{WGhY`XUfMMG|WN@iLmZVi9mr-cDEFnGH9xvXNS%G}U;vjb? zhIQv;UV>C6dj$D1FjT2AFf_C`W~IDKCcujf}qBCLw}; z$CVsX85nk(DJ`z~I>`uVgKCLuL`h0wNvc(HQ7VvPFfuSS(KRsCH8Kb>G_f)UB2#Sx mLn{M=o=x{&p=ij>PsvQH#I51)`?N5i1_n=8KbLh*2~7Z*u4=OY literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/32/currentmodel.png b/companion/src/themes/monoblue/32/currentmodel.png new file mode 100644 index 0000000000000000000000000000000000000000..ba8d29bf51f483f28e067b7498b25be6f4cc9b6d GIT binary patch literal 640 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!D~o zA+8JzX@d>@|NlSkrcW=>g$5--e!&bnx}6`)=6NtJ`t5;LXlKa!d1@cFl` zNXNGaQLa8>hk5Gu7sv8#7nop^-mzRF2B?=Y$=lt<@aApVA|Qvez$3Dlfr0NZ2s0kf zUy%Y7oa5=@7-Dhy>4cL)O$Guk%{f|*g-3ZEMGo%$|Npg*OUw$-9og}hLf>CK6C&~Z zsKi>fgC^1}r!N&tZ`j(zY!St%WcAMLpsK^}%U>;?&(ml9A6WhOfw$y>X^FKbGX8X` z2PgUec&1qUC@1dG(V(Bb=NYwG%~$bGbn4JbTq}@ta8mD`$&+fh-xz&-*EmOnOXgIO z%|jo~>2E^Un}18+$=sbRF8BH7vH3uEs+PD$l%ynvv}iiX_$l+3hB+#3GAPYVNTVDNPHb6Mw<&;$Sk$HTV( literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/32/customize.png b/companion/src/themes/monoblue/32/customize.png new file mode 100644 index 0000000000000000000000000000000000000000..a3e3469bc36a550818578146bf444617733e6b5f GIT binary patch literal 556 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`#0(_Y@0k7uNU@|l`Z_W&Z0zU$lgJ9>GZqKA zJ29*~C-V}>QAqX(@?~JCQUhviVPNpWX6wC`%1Suuy#O zaWnT)R@cjKB%?NSCrplFQ%E^^@r36J!8G%R7%6s!Tg+b=@3_v9TRfNXjc*0V@>~X+ zH+2))7VrmsuXw+~JaZQ72gZckl?CsnwR~JYceaj0zQjwJfW_@ARdN}8n11lwuF9M<;#wMlli5&SA(vc=n2}sqWg)s1H-Iv4K9a+*VF{KPcT3D@qqP?_yWcS zLct71!3WOd$a6o4afrHlf+wx!T|>(nU4|46{|4?2$_@LH3M(6)Z$H^3kW$Ssb7is} zW9)JVkAU7PrIiI2e3zY6FL-$={+0M&0f%2sHQpw`5K}F2jVMV;EJ?LWE=mPb3`Pcq zCb|ZOx<&>eh9*|VKxC?IU}$Av(6i~@D-;d6`6-!cmAEzheV-Nv)WG2B>gTe~DWM4f D*mcEM literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/32/cut.png b/companion/src/themes/monoblue/32/cut.png new file mode 100644 index 0000000000000000000000000000000000000000..98083340ed81d5d88e20996b53417cb9b1de6759 GIT binary patch literal 907 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!D z-}%WVsZNH#OpvAKUn^Mgx=A=b9RePZ?);Vo_@YI?r5^3eKO;3hX%v_tj#?eCz$dVDrcA; zy3;X3;-SR0TEkPaVwW}DM7G|SRM(%l#BAmQyMKSyh?rlNd}Wk*Z&}>8NuiRbpRPRp zTq1b$`q|nm_H;40UTV6$%X`X{(B%+1@!1b6@eB3fiV~l=RL52CZs|YeY#(Vo9o1a#1Rf zVlXl=G|@FM)HN~)F*LC<1|m~!14AnVgPu+IUZH5n%}>cptHiD0@B6ecpaup{S3j3^ HP6!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!D4*2XQ;@lpW55!6uJS` zFeZ7syGXvt+u8x-a29w(7BevL9R^{>JKJ1+0%5Ro(CRQ%1Y>`Fbl?R2u8-m5x;d7!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!DlB zSEK+1S9`iRhFF}wdj6)^K?4D{2Zk&g-E`Mxtz297`CtC>hcZHj2W9_<`kkA8@()A3 zs8LWA^Mq6S2miJ_>F8qhu<6cP%Xf+4!UosPGj3*;pE;l7*s+QG)GfCeu~m(4_}kj{ zhaJ3_>>|-Su_gG%4W*v$aN%{^{U(Vet*R&xHa^OHV#^F|xeHF+OCK?=4LVXfZzF?Z zr}@va^AU%CG!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!DAMq8 ziZvPVxGr{JkX+Jmif7;d{~n8Fbe6Bx4*z9Va56VjYEeDUhu(q%S`QxR$lK;H?O7cA zo%tFQ`##l{GaX@yOvM@3k{Oo2ouJ-$LqJI3YU~n+q^<2f+>&R?o;vS)e#fNce6^i* zOVat)$MRYIr*;)Z24-okN~Ht`Q|Ei6yC4 z$wjF^iowXh&_vh3P}j&H#L&db7>G=@4GgUe40<-*dxfGQH$NpatrE9}zwgt+fEpM) MUHx3vIVCg!09L}p8~^|S literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/32/fuses.png b/companion/src/themes/monoblue/32/fuses.png new file mode 100644 index 0000000000000000000000000000000000000000..813fa99fd372f3a2a57cb1bf8b6a56f2198a9eea GIT binary patch literal 778 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!DH( zipM{sJipE@W%-^tudP}@?BO3((*`}KnYzAz8J}zO*!CZ~I1OkJW0JSKi=Af*!($+a zv%n*=n1O-sFbFdq&tH)O6#V4r;uvCa`fA|KqC*Zm+yM$lQ@lO;3#M;w-6nF#_u~Km zV&8;}awdI}vww3!xp(bUU2W^Br=@ch|0jHMT@cb|^;>Yo3?^xXko9w&13rrSAL+Wq zy8A-S-QA)##{7FS{;Xox*dwW|H9>OU0XF8P4a;^eQSI8cpie^S)v??RRtbZX3%<`g zu_!)CewO@?!xt@d^*jW9-~1OAJ!l(u{=>VEDuqjm<>z0X`R2b@c#XBt)1&dL9<>`h zzi(ZZp>pp3r&=+aWXVWgpMzfKHqW?hWz^lP_+i_h6|#3W@JCGSULPoP@!zeSNoLy) zJbY$%{D}QOKUeL|rED#?6%KO$TJ8??y=sYTL`h0wNvc(HQ7VvPFfuSS(KRsCH8Kb> uG_f)UB2#SxLn{M=o=x{&p=ij>PsvQH#I51)`?N5i1_n=8KbLh*2~7ZM+xOT2 literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/32/information.png b/companion/src/themes/monoblue/32/information.png new file mode 100644 index 0000000000000000000000000000000000000000..896c7c3c65ccb9ce78702ba7758edc9c04e0ceee GIT binary patch literal 399 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UV>C6dj$D1FjT2AFf_C;O zkH}&M2EM}}%y>M1MG8>R+0(@_MB{vN!UDyF5FrQA4N+SqLLIWNDupnLmN07To9M3b zWYqY>R1&>2Y;Bb5A_k9?29|(1=MA~frYcN-B)-6qf#JWiLbgEm%JV?uR7+eVN>UO_ zQmvAUQh^kMk%6I!u7RPhkwJ)|iIp)BnQ9vtS{WGhY`XUfMMG|WN@iLmZVi9mr-cDE OFnGH9xvXNS%G}U;vjb? zhIQv;UV>C6dj$D1FjT2AFf_C>w1MWRmbgZgq$HN4S|t~y0x1R~149#C14CUS xgAhX#D`Oxs)iyA+GBD`bbng|4hTQy=%(P0}8vedd3j=Ck@O1TaS?83{1OU}UVzdAN literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/32/list.png b/companion/src/themes/monoblue/32/list.png new file mode 100644 index 0000000000000000000000000000000000000000..b0d0cd20db149de28ae15611471cec7ec902c85e GIT binary patch literal 604 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!D;OkH}&M2EM}}%y>M1MG8=GhNp{T zh{fr&7_*X z)WSe7cqRAZ9UH9XMYR@`ZhQW~H8!i^nb!|Bol`z5M3248z9S!hXY+Gqn~3GlpVpcB zvnEJ;hs9sb1G-VQ#5JNMC9x#cD!C{XNHG{07@FuB80s1sgczDw83U22wt=CQfkDrv gd#_M5mdKI;Vst04P4Y1ONa4 literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/32/logs.png b/companion/src/themes/monoblue/32/logs.png new file mode 100644 index 0000000000000000000000000000000000000000..dc676c68e859b65df0324d3950db6c235213d9a4 GIT binary patch literal 636 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!DD!bQ(Ok{p&t9jt_BVYZ~9!YKgyd-6&0ktzGdAqxqtlaqWFOb7o;1OBOz`%DH zgc*W4lh&}whC44{{KH;KvP=f^k$b2VcSYl z&e}};&soDNBD0_)y*cRSzJP^UO;V-5C))Aynl#tsU%a+Yvh2mTO$+TMvTS>fP1gJ| z(Zgp+!_7IZI^h%6+|=;RD_?SRhy8)T)xVBd#_L_5&99nO2Eg!{7I5VL%NGp00i_>zopr05NC2!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!DCzd{+v;VkfoEM{QfI}E~%$MaXD00nD3T^vI! zPA4Zwur6VAQ%jLE7H(q_3sd2fwqC}mlO_4O@i2dh6$Z3 z9RxI1sj(z+u1*X+pui*~o|+)QeDTo@8!g636Q?juymX`4$&HsQrI2-+j7ywcd4X2L z6VZ>XJ0{JVWyBn}V9_Z9t_)^|V0o@zOHMrZ06Ijq#5JNMC9x#cD!C{XNHG{07@FuB z80s1sgczDw83U22wt=CQfkDrvd#_M5mdKI;Vst0Mw+I AhyVZp literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/32/moveup.png b/companion/src/themes/monoblue/32/moveup.png new file mode 100644 index 0000000000000000000000000000000000000000..7748b9a424d37699baf18a36e282c76a4c207a84 GIT binary patch literal 578 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!DX^E-8gfR{KG4&fqEE|yxmh(TdSM!}qnhWB^G~{dLEykr2LTOD zmLSER*f9XYN-S~MVzO)xk4KEykx9%O4Ma~cyNW9KxW;fzNytfk z!*xVJMpTC@RdP`(kYX@0 zFf`FMFw`|N2r)FVG6o`3Z39Cq1B0GT_gj75C8xG literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/32/new.png b/companion/src/themes/monoblue/32/new.png new file mode 100644 index 0000000000000000000000000000000000000000..123d49588d307a6a9644216ac4480db4a02526fc GIT binary patch literal 416 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UV>C6dj$D1FjT2AFf_C`*hB|(0{3~T<#@qJqTk8%CE5}+*%j7i?^E?gNGzJ!5P6nI1y zGcfQS24TkI`72U@f)SoBjv*T7lM@z*KbXVGBz%!IjZ1+=t)atH_#%s1HrE0!AA?yP zY6pa7HYhQelrhaZP$I&pB6T9eK|JAr+5yYP4GgO;Ut~RCH?P6Jp+Pd?>4|HLxC3Mv z7{1Ro2w9cB;4#n+)e_f;l9a@fRIB8oR3OD*WMF8bYhb8rWDsI#Vr2|OrrHLERt5$= ho9?|r(U6;;l9^VCTf^V?X&|pLc)I$ztaD0e0syFcc1!>O literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/32/open.png b/companion/src/themes/monoblue/32/open.png new file mode 100644 index 0000000000000000000000000000000000000000..eaf97c2c2d559416efca763a57a0e84dab1fbff0 GIT binary patch literal 515 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!DointWCfgH{PkH}&M2EM}}%y>M1MG8vg2c%N!R0)Y zbtE24NuSoL>0sRKD#p4YX~sddZoZ5~4YKq1H*#5682UVP3OsPOS?_#z5|g}r8zYkk z7fY&S%Y~<{6YnZ0X|?I;_dW6mcp XtHiD0@B6ecpaup{S3j3^P6!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!Dy|NmdFxYiEncfXP#zhH*E;GbE)x?e1w{%21AhFPzkIeSH|=4vip7R{NK zGxv$Cq+<3`ChwCkWem0L)=sk!voW`wF`x0l&g&i$Z{Gg9zs8^U-OaCYqRBkg>|acO zI3%w-3pANA$=ltlBSEK+1A9%VrhFF}wIx(`G(NUmv zee4=#PC=z_6Ig{El{$1Ch2H)DZ@H}U!JL&dD?dH3D=D4-{@Th{S`S)^EDOwSx83o+ zl-~Q7QHxdeShJqYj^MfzjmA13PHc315O^$yw@_Db_ZG95k5ZmX^49QV-jhmKtDZiY z_xr~^T&+ngs-2tn^oxqGdb(<6^_KRi*jTxbUwWput!!L2@zSNzSFb+adN%uI``p;b zqopO)?+^9ZOr;L@A}Su0lk`L<}orTMQO z*E2|$K2ep=+nC}Q!>*kaclVdJ}nHWfx*+&&t;ucLK6VIg9O9? literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/32/paste.png b/companion/src/themes/monoblue/32/paste.png new file mode 100644 index 0000000000000000000000000000000000000000..f8a34a8d4149a9895733cf23e76c8a73651ff42e GIT binary patch literal 462 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!DXL&S?^c*zjtjs51;+rf5jLm$C%{p?jrbT ztL-izhqJ&VvY3H^?=T269?xHq0u;>hba4!^IDPe^H(!GS4@-cC>w*0D^-J+MY=1PZ}=06q%oI6h{sNGXMYPI93wZ-cjOu}ca zB3J?$lslLT!m=2G4wSwVw8_tQ_#40$&HTsIdhTc5qcJ%%F9U5=Epd$~Nl7e8wMs5Z z1yT$~28JfO28Oyu1|fzfR>nYNs%>CsWnj>=>E0_84Y~O#nQ4`{HT->_76#P7;OXk; Jvd$@?2>{1ch#mj{ literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/32/play.png b/companion/src/themes/monoblue/32/play.png new file mode 100644 index 0000000000000000000000000000000000000000..74499269716f17023365f71113cf47ba1aad0491 GIT binary patch literal 722 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H3?#oinD`S&v7|ftIx;Y9?C1WI$O_~$76-XI zF|0c$^AgBWNcITwWnidM18QnvVE6?TYIwoGP-?)y@G60U!D(GunW1j7i?^E`pD? z+U^2!I14-?i-EKU7`vU!wgW2g^mK6yskrraRy5xs10I&j>E_k{FHe#ePzaoqlIKC|99{s7aZB35pX*StCl61llOtk;N?B=b)_6zjko%vF`( zH>GJ_#5aA`y#+7+%EqyJX&zu&D$=*XL9dN3mt8J6%1A^=W1d7n$ox;`-(V|q2u4F4ld>Y@)>^!A8_^f z-&Ua96m2NuRw8qlUFe4go4nV{WXl@E#`S3*o=({}?=Ul0g^M%)$_IwBHY-}(w|?0m zC3pQWH+Myb+JbX7}SBT7;dOH!?pi&B9UgOP!uiLQa6u8~2Ap^23-5SeNl7+M(^^lZBK3PnS1 zeoAIqC2kFW-=~EEHAsSN2+mI{DNig)WpGT%PfAtr%uP&B4N6T+sVqF13QAiHp00i_ I>zopr00g}83;+NC literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/32/preferences.png b/companion/src/themes/monoblue/32/preferences.png new file mode 100644 index 0000000000000000000000000000000000000000..dbeafbc37c2adcc1019f77d26c27220cc2d39a82 GIT binary patch literal 723 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!D zA+8JzX+sPB|NsBtq25bC_gj?&`2{m{@kR2MT7HvO_;>C57gq0`OfOW-4qx_PeST{@ z^P2r~9c{m6KU?rugzfc)^)F94I|Nm-^ha$jkX=`ORO2N$_>#QcU92tnzT^On&{|n@x9f|MC8~)ajvzi9pBEnI8L?{pT+7P-fsrcQISe@~L&U)-;yWt0own=n4tl zwCoMjipjhto|~64CQOXnba&%j@8!2Yw@zXCePTx=`=^wjyEa(JR94vtPBN&?^?N*T z-pv`_Ned;WOh3Lyur29IQ@_b14aoq8Pwb~-XXkBScm64R{a5AszX#dP4*n}ESO4<< zdx^@z?}ZBe7B6e(=*!mZU-!Yl@NAx_#Z{n}R7+eVN>UO_QmvAUQh^kMk%6I!u7RPh ykwJ)|iIp)BnQ9vtS{WGhY`XUfMMG|WN@iLmZVi9mr-cDEFnGH9xvXNS%G}U;vjb? zhIQv;UV>C6dj$D1FjT2AFf_Cofe1@(Z zAOI#yLQW8s2t&)pUffR$0fuV`6fuXLEL5QJ=l`#;RY8x0@ l85s0zy7vl2LvDUbW?Cg~4S(OKg#k4%c)I$ztaD0e0su7_ZxjFk literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/32/profiles.png b/companion/src/themes/monoblue/32/profiles.png new file mode 100644 index 0000000000000000000000000000000000000000..fda77416f7bdf09c08fcfb044501a4637d37f2e3 GIT binary patch literal 362 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UV>C6dj$D1FjT2AFf_Cz1qz`I%n1?RZI=!A*h?@lWX7w%4;N#b3e>Gy;u=wsl30>zm0Xkxq!^403{7+m z40VkRLJUo;jDg5h+rZGuz@TT-y;mq2a`RI%(<*Um`1?LB45)#@)78&qol`;+05s=Z AsQ>@~ literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/32/read_eeprom.png b/companion/src/themes/monoblue/32/read_eeprom.png new file mode 100644 index 0000000000000000000000000000000000000000..407584ed730cb1ccda8d3a633bd0d6c9c9aa5c02 GIT binary patch literal 985 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!DgCC1GETaf#~EjBJW zR$hsJ0!$yK&6~S|kAq!YS?J>z$!E{My-~?nX1YDVLOwBJ*3}r_!)tf!-&z|!{mSXR z>$coCHk{KXT=DoRcgO8VMw~iY`QAVq7?Zr+UBYX*Zps5WoCO|{#lX0}4#JF18nY{a z3SvE7978NlPo0zi4t?hRc&)_6_qR z#Fc*kWDQ!_lhSCRwHFxrswJ)wB`Jv|saDBFsX&Us$iUD<*T7KM$RNbf#L5_mOtlRR mtqcr$Hr;!Lq9HdwB{QuOw}!v()53rn7(8A5T-G@yGywnt@i{aA literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/32/read_eeprom_file.png b/companion/src/themes/monoblue/32/read_eeprom_file.png new file mode 100644 index 0000000000000000000000000000000000000000..b6e3f6347fc647dcaf10c7cc1aba958bdaf5110d GIT binary patch literal 955 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!DK&o%fwB$2Uy4_Cd|4T<9m4Rj{RF}!>3<4y?2_xx-IvO4d?vo60Ugq zpyRd?CtJ*qlR(oMlf2zsf~(SH*?=6*0*}aIVBB5@VMZs7*%d$q{+=$5Ar`0SPI?)3 z$UvZVxo*>yWm%0$Yq`3*G`PBcuhY9Ay~7FsG|tCn$WDSPP2+lSSgi$gIcNVs9tZ!8Jeyqg5AxN=(RYK10u+O>d zt3vr^M3jqjEST#MELPa!nJZ|xWFo8Mi_g5G8r>%+t$DVIWr|4n6P+mzizPb`Y9*I) zu330c!uhE!gH)Wi=8;|3Z+YDOeAq15^G9XFm3yx~)KxFvJ)8Ag)!%=0w{05!B@|SI z*t~lxbK=Jm=H(^I6=i(l(<=|`{j@$m@BJdJJN)u;rhIoVUjBSq;_kxFw<@GF8_Kor z9GCbw*=LrOLJ-RWIgU&HueG@|zNk9{T3r0j&zRLVuk!1DWng%#mbgZgq$HN4S|t~y z0x1R~149#C14CUSgAhX#D`Oxs)iyA+GBD`bbng|4hTQy=%(P0}8vedd3j=Ck@O1Ta JS?83{1ORQtF!ule literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/32/read_flash.png b/companion/src/themes/monoblue/32/read_flash.png new file mode 100644 index 0000000000000000000000000000000000000000..d07532291d3ac2525e0745b7ce5ea68788b7f29b GIT binary patch literal 1361 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!D4LD?3wd>b(OA&hIU4KWtEnXX_Zg};D`LWsa%ME{iFX1ei;{S9LKi{(-kG>u5?_Da)vN%^j z@A&eVckxYOtq=Aq3UMD*5X+XD|M_p>hp(c)&M2+s;m9d+t&EdcgnPbVsU!zuj9OBzW5Vfn zrDKtj(-IGMO|QTwzpH27weEXd$S-%Mdb{=J`}yhV@4j`M%NO^%m^`Ih{nf?_#YzT79%SoNAeA`1fC=hi)t>uQ;|KsfJCeM7s; zE9LM)uH*fkUIAPzD|$H3{aUhT(WWkqz-McwWj6Ug4RJ23*1fvGkA-o;zJ(iCN~TSY z;EuXok>%drVdcB@^|~l_8|A8XuKIk9)7x%OJs!7R>}v$$6IXrti{H6E{65=o_`G5D zUyh@bYZ=xvy8q~9caTqccE-d*{`)1y9L|jT$sY}!TS68XVbV+XP5ok_RqK>_JHuj1NHZ0 zLY}Uv;A6ZUSDZ0dd96JohcV+V!{hZ+7JF~lWX!l)?AdL0&%C=Am%cYo1jf2*iEBhj zN@7W>RdP`(kYX@0Ff`FMFw`|N2r)FVG6o`3Z39Cq1B0GT_g!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!D|Nrl&cuWKaR#-`pUogX(KXQDZR{vv+S#&!qDp7yh{_s1uytnjadfav3 zX0q266tFH|cTun6jC1_KcgKD|`TpkT+NSsC3?%+eG(6orRZ?Mstkh@G>tY{f9_UrQ za_Q8JCGs!ksO@RC69U@6nB?v55?;%7Qy$3SEbxddW?QlX>63 zD2tU-LfU_snp)y1wq=QKUdxw89@=QhoT4y0wNCN*weAUq2ZT;v;#&Q0ui`bH4Sx65 zo9|KcKgcj!q^s-5_Ja6GoejASvR4EvQa(q^Pj(oaaUB=Usc(& zxBf-{PnIup+}ZcsPhJNMBGnSth?11Vl2ohYqEsNoU}RuuqHAENYh(~&XkujyM5fvX mhE@g!J)7>mLeY?$pOTqYiCe?p_i1534Gf;HelF{r5}E*NS%G}U;vjb? zhIQv;UV>C6dj$D1FjT2AFf_CF;VNMbX z#w$)SSn{+w@-Z;%WtD#G=@4GgUe40<-*dxfGQH$NpatrE9}zwgt+fEpM)UHx3vIVCg!0G_>IKmY&$ literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/32/saveas.png b/companion/src/themes/monoblue/32/saveas.png new file mode 100644 index 0000000000000000000000000000000000000000..0314684084e4e6cd99e0ee1f2325259bba13a960 GIT binary patch literal 412 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UV>C6dj$D1FjT2AFf_CFn+rhxBJmIhgL-?hG2N*>jWITA` zAe^8O$dIDF%0YP(gA}vg0SAu-i<^HjbqF-J^|`sb8*g%8_I7V)Tve?!>!QqwFo&fP z%nZAhn#CM`el8DahiZvyL`h0wNvc(HQ7VvPFfuSS(KRsCH8Kb>G_f)UB2#SxLn{M= io=x{&p=ij>PsvQH#I51)`?N5i1_n=8KbLh*2~7Z;?sx?N literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/32/simulate.png b/companion/src/themes/monoblue/32/simulate.png new file mode 100644 index 0000000000000000000000000000000000000000..9a6e2ec749345e9ad424c5c5f6eeabe55b370cfb GIT binary patch literal 455 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!DFu0}-ur+;yMyb}^Eak-ar*59Z@vZv0cUm>k&pTB>%+v_ zL>KO5$hX$dT%OjnC}Q!>*kaclVdJ}nHWfx*+&&t;ucLK6Vh?1IJs literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/32/stop.png b/companion/src/themes/monoblue/32/stop.png new file mode 100644 index 0000000000000000000000000000000000000000..e2892797dcea0688829dfa8614d94fdf4e57aef3 GIT binary patch literal 337 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?K3?%mjbVdLvmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCjKus+S48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fg!5QEa z;>y5~21Nh=|1bR}cL^xSSQ6wH%;50s22hxRG0EHAg(;1@CIzItz$3Dlfq`2Xgc%uT z&5-~KYI?djhD02Gd&-az=rRU_S(*#$MH&Ct+}_La!2erNlL7}29dc#JDR7+eVN>UO_QmvAUQh^kMk%6I!u7RPhkwJ)|iIp)BnQ9vtS{WGhY`XUfMMG|W aN@iLmZVi9mr-cDEFnGH9xvX!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!DvL>4nJ@ErzW#^d=bQhkV`ozE3Vcw>NzfPlNE|O~)s#xskZN-B7=`w(gj)LWV($iOj}j zfu?O1^AwgBYpDmj`3pNevyVOb%tbN&fOePao48}AL<3h|3s~vRz^ik1+KMgK9ueXT zu0MaCU?DVjW13!;k!$%fch=N>5mKpJ?-d+<e26Jne*aD=V@K2+-sj8Ejwq1zGr|u^Umx^B|vYembgZgq$HN4S|t~y0x1R~149#C z14CUSgAhX#D`Oxs)iyA+GBD`bbng|4hTQy=%(P0}8vedd3j=Ck@O1TaS?83{1OUzA B!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!D`^Iw6>BDSQDEiWc>cyikH_RL%wBd4)pUq?{nR4$!|&8zavvhEyk zjNQ&Q>kdQ3Rg-fZzY=0rs{#2`oL$b8aN=GoEYfZxXL#o1j{GIH*0Q z`@Q*=yKnj3&&_A5SDSfS+{=QEO18QLKboFyt I=akR{0OEwrd;kCd literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/32/wizard.png b/companion/src/themes/monoblue/32/wizard.png new file mode 100644 index 0000000000000000000000000000000000000000..41999d5b62b3d2f49dfbe0c9147dd1d66763b9ac GIT binary patch literal 973 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!D!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!DTllUjV#LWAF zXWG2EEBM42m4!Zjk$m?2+Z&aPWv1H$EaVdtW?hZ(J-l|u{;jp))32P~%erpMePhEp zUBVTQpK?Fwxc$h;Ue7WNXaQrAx4TOi7w^kXAcwQSBeED6&(}ei(Me-=1yDhXr;B5V z#p$V&GMx_@@U(3?s5MYY=a6FZ3Vn`~_ zk|V4#(@!$2(ObkeBlXdxO-x~DjB1^?h+Cg*i}#8OG~OL1&Tu+%qF9vG^4LHR+hDE; zU%m=1g|dlU5wlr}rmWLm(8BAb*=6i&Xxz{nHd~8VdhItgu7(r6T>aa&D0Q%e=(FCq zIc@#M&A0CwH~x*=Uw>hxywm>|FMg<4y?uFDk^Rvcw&!~;icc>nwdI_Wf8uSdX~KcO zhaY@AIccGFjo!YV4K^Bk_U+|QexS@+v+3p^DaE?YD)!E^+0tYjtS?-d{WqIQ>^Hwa zn$EL-jOxx^2i_e#UI~l@)e_f;l9a@fRIB8oR3OD*WMF8bYhb8rWDsI#Vr2|OrrHLE lRt5$=o9?|r(U6;;l9^VCTf^V?X`nb~@O1TaS?83{1OQtqG@k$f literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/32/write_eeprom_file.png b/companion/src/themes/monoblue/32/write_eeprom_file.png new file mode 100644 index 0000000000000000000000000000000000000000..6042ddf03c36d4daced0010f466e736809959bbb GIT binary patch literal 951 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!DH!2y+#7(ycSjZ-TVJWeoTT+AKLE~Gfke{KYJ%9!+&8Vri?FF zDs(%Utwh;+xkMO(1;plu37gxtE@N2kD6nP*qa*`cfzr=QZA=EI8D|_$I?S{|_`pxz zf=mvFzLm`)lNgJ9Vz)hs)-Zg&a+RuFCV%UUP=TKZgOjdRHut*qen0Z$_q5a>W*M{2 zHZaV7$HcfrXw~&ed4d-rTzXbqQtaW`#}LFH<843JL6x~kaQf!RDU55)CNpdIT|Uzg zY9gy{dv%Md$zH#AO4s(B+m&+O{PqMV2`z_LdEb6iXYbx0%u>c)xaT_WH$^!fU6M|K~eC4g)+?w#_PAw-eyj4qFBT7;dOH!?pi&B9U zgOP!uiLQa6u8~2Ap^23-5SeNl7+M(^^lZBK3PnS1eoAIqC2kFW-=~EEH86O(`njxg HN@xNA*hMCt literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/32/write_flash.png b/companion/src/themes/monoblue/32/write_flash.png new file mode 100644 index 0000000000000000000000000000000000000000..ec5397d7a0fafd87b76545eabdc14932a9e9f45f GIT binary patch literal 1337 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!Dk zLR=Xb(nitH4T1mv|F2J-qzH`WDJ4OE!3^TothK544kS3gx3sV{Wem>-)xzufTW_Y%&MDgIBN{dn~4aDVSoVJ4Qv{J8>p$Ct;vi*E{R zeXw6qi2JC5Shm#s&w_soKYSJabw+754@XXsYh|3o8ZZ5Gj1l1#SA$RUZHl$yV&5yh zWmmJ`ES0hjkk&vHNe{srhh#w2fdm#G{HRn0&SXMsm#F))o^ z2Vq7hjoB4I1xGzy978Nl&z<};{IY|6Epl8+PkQc|L(o!-QJb4qjfbeWxDKTkWz6+G3N!!kW|_Vo$=tZVL+$hNwe z=c#RdnYjMM>Gji?esmR{zLLgizf|LLz;bzwZT||XV`kY* zTT8#XtladhR+7u?#L9_I3)Qk*HVf!Fyl&q1jZeZiY3_?x&t584wQxzF3oo9U_CWAr za_HB247Iy%$Dg^^uxefe~{@(kwHe@+yIW!DU5wiOG%JlFoS?Y0sqP0mw|l7ByV>Y)*tyVj{`ZJ1s;*b3=DjS zL74G){)!Z!pt+}uV~EA+hp3~P2^N?#;5kAb01P}#VmiCYzDgldUvL`h0wNvc(HQ7VvPFfuSS(KRsCH8Kb> vG_f)^u`)E*HZZg@Fo@(hu@6N!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq8sKd6mGxU^Rn*LA+qju0R{0KFt81 z5LX6dO#F~0*!(t3py~l@ z&c`Bl?u;j&GdaV5zR2_c@~+xGD~0EJRMU5$WsFJQ?k-8%J7s~<#lTtM5n0T@z;_sg z8IR|$NC66d@^o&UlsoUaLavltWwkzy4#i{%`11XTtXDBg@Z|BHQ-QIal!Cv#sW#<>~L9 ziFT)-p5zzlnsNR~(9EtJSBCEC5mUv3c)4F4Wn=XUc1phzA6?@nJ?EfRY~APWG(roQfEpM)UHx3vIVCg!05*CTF8}}l literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/48/arrow-right.png b/companion/src/themes/monoblue/48/arrow-right.png new file mode 100644 index 0000000000000000000000000000000000000000..45ea123d564ef8e0bff2f6a0d012c9b970236a06 GIT binary patch literal 900 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-sEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq8sKd6mGxU^Rn*LA+qju0R{0KG^`D z5LX68Ga8=$xlY6S z!lu$A6!mBlyQSS2?7x#agyiM{%L8)xRb8iB%>c|5Jpe?Ly*Y7FO? zecPw!y2#{LHp{8j$1z)0v`<#+_{*Zj$4Aoxe+_snV+rNW1-Rw8oow{zm@%I0QCYMk3f0*(fS;;c| zFEs-CTeZYBq9i4;B-JXpC>2OC7#SFv=o%R68X1Hbnphc|SQ(mY8yH#{7({ZM*oUGa bH$NpatrE8ejnD!npaup{S3j3^P6!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq8sKd6mGxU^Rn*LA+qju0R{0L`Z;7 zh${m_8gZ>QYlYgXWK6Fh$8 zpxN?w{om^^D0VIgk(#yP2>1C|Pro0x*d(lPNQ(Ba^k1RC^Wcuhtb|+LF04zLvxL^= zHghFK78mbcymF30+KhK+7Rzr4@%!*HR`WQcr>JYu(l--BqMJ;Yg`D?UxcPMT-nVP) zX4+P`L~#V45@EW3lugi)`GAwK?Hci*4{V1jO_pBW;q}d-&qeHj`vGt6|L+@Z!ahCf zm^kGgLp8r97w3oF-$ULcr2k>qe@eYE;Diw<(o{=aBT7;dOH!?pi&B9UgOP!uiLQa6 zu8~2Ap^25TiIt(bwt=CQfk7n4iG3& literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/48/clear.png b/companion/src/themes/monoblue/48/clear.png new file mode 100644 index 0000000000000000000000000000000000000000..11c9979b976bea63ef819efe171233c2cb2282ef GIT binary patch literal 916 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-sEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq8sKd6mGxU^Rn*LA+qju0R{0#H#?G z5LX6Hd3 z`Yh|888H{ScdOjjaNHU6_wjX~8>^#FR!ONc?2h65Tq?})?R6(7d%M{Oo`t8ftaMnu zYeZfu>`r&s{dnVpCDo^zjeS+yKAhip+_nFs{_lwR-HVoet9g?sUfrzssa<)M-72Zw zHy%rUz2lQ7D!I(~O<{Xg&zvdiD?V4xnRDG-?nzDC&oi$73MMVGJO1D!r|_@tlA4G0 zJNPy0-`cbMo^Vj;pLLS_Cb_KOAOCf}U0nE+^)BZh@!uKGJ?qZ${N?{9__v?ew&MT7 z|F3IZ{v|W(>s~Py`u^DW_=;5%bzXket^5DS{@!%?BLb_>|Mme) qhUVG^hE@g!ksK%Xp=ij>PsvQH#H~Riw15eyfx*+&&t;ucLK6Vv-Zf(Y literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/48/compare.png b/companion/src/themes/monoblue/48/compare.png new file mode 100644 index 0000000000000000000000000000000000000000..ba38700111c7b50e0e0600a77b179c85f79766df GIT binary patch literal 1337 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-sEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq8sKd6mGxU^Rn*LA+qju0R{0zU2Wv zA+8JzX`^V6hrs{;|0_#m1AuYaT@vIM%%EJ5CgFcV{>PP5SHG{=a4(ta#|0CF5PQGUgupZUKJw=%+gt#NJWxes+oD`q~iIYCf)`QzUnD zKQ@wWUt*Fgvqo&CsE(`E%g_ZtXE7#uySwz{a9?r;aySb-B8wRq_zr_Gjm(OJ6W*_zSGec$)3n*!Rx!)vpJ%-rCT@EwpytJnC4I;1BUuZU zx^EXfo_$>SMJQuMX>_5@?QmKD{lQ|6q78Z4ef+U&`_v_laWpeGYXwBb?q0|G%GC6t z#ID%F9+kX1C8s=948?L8+gQYdcdN)2WdGn`_-NLwINxfswF!gErLHqx=LB3;izY;~ zHnBBa(yE!x7cu2yOT-gPs{l?>0iX8zm{)S5E7DRP>@%ED_rV~UgCWH=%HY=v!}C48 z_LW|oEcGrkCnYCM;^Of?`Th7wc8j;mnT$7goS)}?u!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq8sKd6mGxU^Rn*LA+qju0R{0KAixc z5LX6k#5|K`f?A;17lDhcunX5i4YR%7K#zWD95w`BE$!xC@bNiY9;YvGl( z%#2b+Tb2f>Z}`5_QqXYm}|=IU&6q(WHuX3xf?0Dj@cQao24J@UMK;J^fjRc%LD1QZ+(Ye=v< z%P=s6>Ux#bGwsp<27qdbYeY#(Vo9o1a#1RfVlXl=G|@FM)HN~)F*LCzopr0E|2XX#fBK literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/48/contributors.png b/companion/src/themes/monoblue/48/contributors.png new file mode 100644 index 0000000000000000000000000000000000000000..c8b3c2cba6cbbafc0355a66983626ae21e0d1cee GIT binary patch literal 1486 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-sEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq8sKd6mGxU^Rn*LA+qju0R{0z8?WT zA+8JzX`^VQg~0#+|5<`Bv;z~zvXUUbUzSf!%9Y=6cQkUHzLmh*mgx7OUgeD1L(#fJH=hSQ^?iKz)GU$6s}o;N zN|MlU-1KF+&JpoFuR`Ak`#%%PJb%B+dvEECMfZ4}t@yKrW#>)(G5tM1MG6B0laQy2V~EG`Q}R%7z`>P{rII2m8Y^BI%wzN8on@dJr7+K|XL(m}GoMeVUdM6v$1fiStuzppafx41)vR*wN$TlGu?4I9y*y*L>FC}S zN^^EgyR|7b^4QHAp`T|xd-9BNa&(=eqEB-~prOIXX;Y@HG+wkiO@IB07R}XOC)y2G z?aWF@iriZIMnmeA>zst5(<#zYiaheBkvkHCi@7)bdK1RDJi@r0H>|CCNUEK>eGe_=`U3fT(D{|2;>17L-i$}(slA6u7dd;ROMKjv$Oyi?j z_ejmr+4{%!SE-uA7r&BuDv{=uUIKZ%M}u{*EPtwK?VMB9@A;pHhu1h=wBg_z%i^OV z(-tzUKD4EBoxsgVV?(9te@u<35)M)McIUQiDY$5)<4|Sj$Ll>UkyX{g)aS^$#77KS zD`LAuuNd_-IkGccUbJWJa@Q1K$;hBu;u=wsl30>zm0Xkxq!^403{7+m40VkRLJUo; tj7_Wz&9w~-tqcqzIZo_D(U6;;l9^VCTZ2Yu0TWOIgQu&X%Q~loCIBmf#Lxf$ literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/48/copy.png b/companion/src/themes/monoblue/48/copy.png new file mode 100644 index 0000000000000000000000000000000000000000..4918af9f72b7c7c5048c9434a4e00780aff84dde GIT binary patch literal 626 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-sEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq8sKd6mGxU^Rn*LA+qju0R{0L`8s4 zh${m_8vW7#|Nl2#wO;^qgIY}Kw4SA$+ZdSy1=n8tBRBi4-gd?>`?BMw)HQ^*U*g(yUF)O3Dy8j= zTKpeQ_dBmHS&--VEYzyu_OU%)>w>55i-za^xy#2z8Du$#8%XP{9`vrkMP%UwdC`m~yNwrEY zN(E93Mh1o^x(0^2Mg}2m_MvFV%}>cptHiBABeZ}CsDZ)L L)z4*}Q$iB}X%WG8 literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/48/currentmodel.png b/companion/src/themes/monoblue/48/currentmodel.png new file mode 100644 index 0000000000000000000000000000000000000000..865fae91f77558a5c25394d024a8f8a706e1feda GIT binary patch literal 1031 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-sEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq8sKd6mGxU^Rn*LA+qju0R{0K9>NW z5LX6k#5U+C^<#Cu@eZhE2Nv1Aw>)SZpYkU69kN+}F zTe0ZrJ^h(y9mJkAshxh+r_SlU!sDBleNDG`i-8W8$IWIVpskEa-tI2hL8(iDQOm$t z;1OBOz`%DHgc*}BKK1Bv?3{=A{ecaf zhZ{LunmL?W#4no#8WwU&OlZlN(8BHEc{*XE^R#$9ZtV%-0Y~0xsiunNyb2AuTJY03 z)>$}s@3d`va_e8e@?4-b{et-c`9*DR$4t<9v#Z#pg{^uJ+O`ZTwPc@vwvy0(+loLC30ofR<$FTQ)W&fBAzT|>!c@1EM4 zzYbP^m^oHl=R9+25;qr{rHYEd6m4zoo`$v$9cxak$l$P6Gwaj$?so7wqW(jj>%d}_ zBUk2YbM9|@GDSe7E-Pw^MjY=;!wjY{$(b#OGDUd285l(T^KCUnzv~0TR<*=6q9i4; zB-JXpC>2OC7#SFv=o%R68X1Hbnphc|SQ(mY8yH#{7({ZM*oUGaH$NpatrE8ejnD!n Ppaup{S3j3^P6GZqKA zJ29*~C-V}>QAqX(@?~JCQUhviVPNpWX6wC`%1Suuy#O zaWnT)R@cjKB%?NSCrplFQ%E^^@r36J!8G%R7%6s!Tg+b=@3_v9TRfNXjc*0V@>~X+ zH+2))7VrmsuXw+~JaZQ72gZckl?CsnwR~JYceaj0zQjwJfW_@ARdN}8n11lwuF9M<;#wMlli5&SA(vc=n2}sqWg)s1H-Iv4K9a+*VF{KPcT3D@qqP?_yWcS zLct71!3WOd$a6o4afrHlf+wx!T|>(nU4|46{|4?2$_@LH3M(6)Z$H^3kW$Ssb7is} zW9)JVkAU7PrIiI2e3zY6FL-$={+0M&0f%2sHQpw`5K}F2jVMV;EJ?LWE=mPb3`Pcq zCb|ZOx<&>eh9*|VCRT>#+6IPJ1_qHFC-$Le$jwj5OsmALK_j$)38;a=)78&qol`;+ E0CwKOe*gdg literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/48/cut.png b/companion/src/themes/monoblue/48/cut.png new file mode 100644 index 0000000000000000000000000000000000000000..a6bfe63617d2d3050127273ad33e432e8edfd438 GIT binary patch literal 1668 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-sEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq8sKd6mGxU^Rn*LA+qju0R_G1}63Z zpAc6DhBO9-OyW=m0|OmUIs?OiAYeF*C}e|3 z++^#pKilQwg_?Qd-=s3TzfBPO{LpOL9u>9I>*ZL|-~XP@Ca~sPp49Wq>&{}UFG*>g z*emb*bG8WcgwGYy>;G6^X9;4`G|-XBxPLR1CwuwD?fD99_CixXf7z?gvs`THpHDke zje?iFeWFC^WBg4D>R?vo$Sxdza`54exZZ%#lwN-w>_`2Hx^g^=GZEu zb^K|s+(T2FLpQyy&*jsxGqkdE;Rd>yG0EHAWlebMr*0sJv%n*=n1O*?7=#%aX3dcR zCiLx|E{-7{$KOtR8m$y4adds}T@cv$?iS;>6)QAObV+2dZJoP9;s)!!|4+`{nOVz{ zcH#K@dHQpHSD)Wm{)~^K_O-T=p{bp*X`-=lG52ELVD4gLu`OF3MM`T&d|smydBJV* z!<$9Vb1S8KdBYu()6Y-czWs86sLYnAwTmYkTfcwv#G_9p;!f+5sBrVLgJ-AC+Oc8B zZuX$ys9=tL8@!davK58fgh_kUJym)^+kb{eFVcNpP zhwpW4bfzRJ9(0VkE-u(v-rZH_elbwO)vcg@!Hfu-GTyXv9Q?<`m-O~Jx{0*sdr8lC z&=-F6@sjen2su@?y@{&J16EH-shT<^V@pHO{)0^QqU&%&uIQ ze0KXM(}F7(Z?^8L-q1QP@5#UA}f~n(d+UWUAC{kM1|tw4(#;$fBNnnp&yfl z%D?aW@vraTcJsFXyrTadITzH$Onn)2^VMQ0ho1++6{pRc7cbIvz0CQ}zf}QyZ0r~2 z*Sh{^XlbyR(pj0*3{2OmC9V-ADTyViR>?)FK#IZ0z|ch3z);u7AjHtb%Gkup&|KTV m(8|CdlH!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq8sKd6mGxU^Rn*LA+qju0R{0#H#?G z5LX6K2x>2VvPwd z97llWGA4PuyZAO_D5L^8oCO|{#S9F5he4R}c>anMpaNk}7sn8f<8QA-1|KpIVED~ALHtS?r6E~^UerS~Zr@!~v^_%a^1d}HI>{DK>^2BA@ zv{*g{w}}=LpLl7>9Z0$LxRIZMCG4Skoy#T7>CBV(SRQ;Ao14BVC$wtAH0~X%zAzm6 z+OV>VQR$3fXrV)nLFmgy|HHS>1h3zwb5P@h{(+yy2X7`sYi`|aU8m-ous-0(rMjDP z9nFW8kDU70X)18CU#{X?Yqod)wT*KR->&A|y_f&D=XZ85Ui(<(8TZl-eA)iWY}3rw zigFk7k1e(Udg`2bQ*`kiiCOb4fnlav;u=wsl30>zm0Xkxq!^403{7+m40VkRLJUo; tj7_Wz&9w~-tqcqzIZo_D(U6;;l9^VCTZ2Yu0TWOIgQu&X%Q~loCID?h7$X1x literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/48/edit.png b/companion/src/themes/monoblue/48/edit.png new file mode 100644 index 0000000000000000000000000000000000000000..ec4fa326f89d0b7888f54fac0e2b38c68e17b9c2 GIT binary patch literal 985 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-sEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq8sKd6mGxU^Rn*LA+qju0R{0KEVK= z5LX6!wch-kCA<1tF=cShZ5NzE$XBl^d{RtI~ z^@Shx<99sfdhXc(bzL*-o5=@KXJ#5CATd;&x!kS z==swd{hxE18GVe}W(u_#*$VTr*vyHL>1Eqs(Y@&4oGa(|u%{UM&7BqDp(O9|FoNsx zQB}9qPp4ijX=B>d<&``2%C&+#TgN7mOQBJ#*Sxvv``ny^!DHdpTVJMc57k)3Qoy=2 z^vvx2xo@VFOl1(*a!Z!s)V;b$V?F~rn^Qau2A3FC$jr}JzRWsi>$x2a2X-dLCB(NR zZ~Z5D&6A<*u~Eg;t4rz_Sr`@zHoOX*%->LZS6EEFBjYH;n=l;)Q#Wn39f5P=R$tN; z7dT?A&fv#b$QZfjd$jGAFYbB|> zHTzG?|2bei@%)wR9t;Zc51H%rj5I&h|6pD7M_6IqZ-e^=CncV;Z-3f2C3Sty7hs61 zmbgZgq$HN4S|t~y0x1R~149#C14CUSgAhX#D`OKYLvw8dLn{M=NRAWxP&DM`r(~v8 W;?|%MTEGO!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq8sKd6mGxU^Rn*LA+qju0R{0zHI?M zA+8JzX`^Upg~0#+{}ngx%>YL2gpwe?U4EDBi<>(|t(1@Hgy>qrFC z(-$#Zr5`?4ggq2xAHc&$*<>f2d(3iT)T%k=ZL$-0-)O%lf2zsCi3&{n+4=>7I;J!GcfQS24TkI z`72U@3Lbd6IEHu}e>){SoXJq2b+Lxh4eJ}ME=T)TaAH*5H*x%Z&9AL9=Xm!IK7o_REnXdGaNHs;(B{{jl=S$~UI(Y7 zNg6B@=1l6Ub?}O+a=Wm@!mG(p_<)76_nEop&z(Hl$Z+oT`DZL#OD6bF{mD4vyrp)f z;uTTXqj3vdIQ!k73O%FUFkaB}PZSwRhSYc`+V4=9$`b z)&3((&Jh*X8MD+xRbMNeKk#zK+{Fy5Dp@skSz?SHGQBysr;BNU>ke-3({<0?wruk9 zdC8^Q|0LVs#xJ(Zx9>Ea&$}MXn9>@&;J)N%%ii63r<*K7Smqx6W_#Gq#JjGb;>oUn z<1v*fm#h>Pn$MdvZ|>aq7^{b8H<}&im$B*5egyr9-@nMeIeGKzm0Xkxq!^403{7+m40VkRLJUo;j7_Wz&9w~-tqcqzIZo_D(U6;; Zl9^VCTZ2Yu0TWOIgQu&X%Q~loCIBr+u$BM- literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/48/fuses.png b/companion/src/themes/monoblue/48/fuses.png new file mode 100644 index 0000000000000000000000000000000000000000..47d3e7025aabd72094b5269c20b6bbf643f0c7c4 GIT binary patch literal 1452 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-sEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq8sKd6mGxU^Rn*LA+qju0R{0zM}y? zA+8JzX`^UJhrs{;|HI64B7reIwIs+dn8Beaj6>8n-A~fuUXF;&+%JExyGMUsAg#30 zhgI#*dR3l|?;o5u9sS5tZvvSrgEE87EpOd<9wkt7#zSj1_wSe+h8dUQl-ut=TM;_H z;X+lSUckG@b>I9?+PGZX+a14~T~W|G?VjP+DL@A@CV9KNOq-agZ3*OX7I;J!GcfQS z24TkI`72Tw7??~vT^vI^j=v3g9WUf4GPmo*rU{Yq8atd`iz(TCn3&=^k;>&v6f5BsaZit+S0&b@O+c&7iQeg2}|-gviJ4>3WkN z2dLUU5MbM}=+op+aj9H2xe`AQwK+FTy!cw}qEdeT6eF*Em70^Yci9S79m~6_bh)eN zzS@=pEn?Sxemr?)?(XlqCc56OZ;(Hx5WDnur~k?o0lw$Yusu&YQ*9MF!{6#fpwry+ zL{;&w2f>`DpMRX3R5$-qq@BW4l`i28HH-WzvaYY0$$dWPygFN3gq`R?@dgD*c_VNjL-bp2I#n#EZcZyzn;8WoJ<7;A8%6o8oN)-Lmzj|qEcTfL^!a(^q{%-Sj ztv>HvbJA$8=r z|KiN3*vA@D`(OWd|JSH^VM42^sFVdQ&MBb@00DmK5C8xG literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/48/information.png b/companion/src/themes/monoblue/48/information.png new file mode 100644 index 0000000000000000000000000000000000000000..e63138475b080bc94c328e65347e6970eb9a45b6 GIT binary patch literal 555 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-sEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq8sKd6mGxU^Rn*LA+qju0R{0M1Fuz zh${m_8r{(U|NjLZDeMATty~i17tFvU?_k2q=)UjyEEds~cKda2wR236449%&zhJjP zLihcO_g@#?iU+!$ficP3-9=>!+s~Om4rhT!WHAE+-(e7DJf6QI1t?hU>EamTas2J& zoqP=nJPnDW?|+Bw+4}x}Uss@ddzpe^Tm3up0Ef#V^YQ^Mbs%K93F<;oGB7Y^;f3L+SU+o14vJYF#O?W25KCN`O zoW+9!f90PvPP2XZeaWv1>tk)=Nme)hUVG^hE@g!ksK%Xp=ij>PsvQH#H~Riw15eyfx*+&&t;ucLK6VJ!J{$& literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/48/library.png b/companion/src/themes/monoblue/48/library.png new file mode 100644 index 0000000000000000000000000000000000000000..354bca34a368bbd59648e6e00322554a321eb5ef GIT binary patch literal 529 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-sEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq8sKd6mGxU^Rn*LA+qju0R{0L{xxJ zh${m_8ZFTO|Nrk;t-c4eMW!UkFPK5zL4keq4vzR=zf%}(?%We!{%4hh)#on;`|AbF z)R*f6)iEY{ySvD~W-govvL>4nJ@ErzW#^d=bQh?EaKFQUfAkgqo z>h@;a+h6|9-`sqCCgZ_N3*Kw|Td~6P)9-yE0Zp^!KV=J@;u3JR;=+~}B{#pe88o;w z70z0j5ErHrFkA607iZt(!XG33e@!2zIorb-Ez0xIl;Z@ zzH>_>Tidsf)9MuOUKQ~9BP6F70Cb3IiEBhjN@7W>RdP`(kYX@0Ff`FMFw`|N2r)FV tGB&X?G}ksTv@$S=!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq8sKd6mGxU^Rn*LA+qju0R{0K7|0E z5LX6(=2N;NPB|(0{4D71foK>f;wwj6*eEV^$LFV!63A`B5$KL-t%vYFl;qULr zhv`;#HhJ2tIO!|F#JDG6>D!l+l~g|iZDLIFc6W&{z8I(rvL>4nJ@ErzW#^d=b zQh*BLJY5_^JdVG;k{*1>L4fUnf|rPhjw4H_n@W?Q_ZwCg+w71H363BC{Xbt2>>+v6 z`_tLN3VWmKhc|cbeY(T(U$Bz%#fJu8FHV%Ow-Vc7Gw;E1&AA@S)S456g0GzV(qqqK za7EO9MrUC=YjN_Og9%PnZWBLjo>^CKF#RaslV=m}eSUQ4{VUf@&ip8ij??!(EmBFh z2n*wqi}2Iixa#!kQ&C47U(P7MMV<|IL5&;l&RYyXduZ zxvYGSUy)9K-V*dxskT#o!4#GC3~V!A&yIe~{-nXth`pJC$6%JFjKs-|Uw!7k*Iwh{ zdGe1j{}yv{@|*5#F1|BIuFUS~KHa_c_;L^aWyxCS^>uSh);v^xdwqL(1LHI0btNV> zKi+)QOS5NWllZy%v{e3e=2uKS2KSGAPrdCwWsCK!_rj(^MVti>ulF!>?>bSn!C>_y z?)^RNKR^FuTxm7YOMiV@C@}a{OI#yLQW8s2t&)pUffR$0fuV`6fuXLEL5QJ=m9dGH qp}Dq!p_PF_B*%$;C>nC}Q!>*kacj^BEnos_VDNPHb6Mw<&;$S=G(}4Q literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/48/logs.png b/companion/src/themes/monoblue/48/logs.png new file mode 100644 index 0000000000000000000000000000000000000000..092b19e610ae975a3751293054f07ead432d7cf9 GIT binary patch literal 987 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-sEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq8sKd6mGxU^Rn*LA+qju0R{0KDz*) z5LX6k#5UvU1(TwoAqlmz(&GZ;81?5~%N;pzQV;PvEp5c82uY*p8EZSQ<4 zVHa6=K=QMN(xZRV#mYQqp5M4dm?im5ER)phWiFhWCk2Eiex3IB;XJ*bAA&~neY?3_ zm%hAzZ?7VM+ahVVHLs#)&0h6%!k-=Dyxwy9yVPDML>~a!$(ZEr?vlAD`^Xj`hqJ&V zvY3H^?=T269?xHq0#qRG>EamTas2I->p_PC1lS(<9^sO?c%-R>C*z93v=s@Q$2#_Y zzgK$yKc~+VruAi;iWc+zzq^0){WF%uX?zaG_12T_9Aak7`FnrC+PUmjR=b;Y1h~5M z_&UBMtUtui)m8g-%-AEPglT$TbuHFetGQM zyIY@uRc_1iLFT3(N`(swJ)wB`Jv|saDBFsX&Us$iUD<*T7KM$RNbf#LC#j%FtZfz|hLTAd=(6 fJ`@eP`6-!cmAEx%gcdLXH86O(`njxgN@xNAh$SqN literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/48/movedown.png b/companion/src/themes/monoblue/48/movedown.png new file mode 100644 index 0000000000000000000000000000000000000000..dc6db146e50b9fdc6bd68dcca6375bc33ae3d3bf GIT binary patch literal 923 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-sEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq8sKd6mGxU^Rn*LA+qju0R{0KG^`D z5LX6I#0=*z$V`7?CH*wjuw<4r4y z+ctNz^=1Ywt?HAFZ8z^-$tqdYcrW3OmQPxDsLh6(veHK%3VN}5$fAOYyLq+#mBxlXuYyzRULRy5U(&DnWE8I~!26kcpNmw&=MAHne wh9*|VCRT>#+6IPJ1_qHFC-$Le$jwj5OsmALK_j$)38;a=)78&qol`;+08R-LOaK4? literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/48/moveup.png b/companion/src/themes/monoblue/48/moveup.png new file mode 100644 index 0000000000000000000000000000000000000000..c68fc663da2e6ee6174424d9b7adff752ff09b4d GIT binary patch literal 897 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-sEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq8sKd6mGxU^Rn*LA+qju0R{0K9K;Q z5LX6+e9^-tI2ZC3~it06Clm9+AZi419+{nDKc2iWH#W zS5Ftm5Rc=@2@ip3-&<5Po3R_1Gu z#;-45Jq%x;&tP`*!igI$>}QNjgO4nZxqFA{jexVa7#mx1?1tFDuxmR^Z``=mcsKb7 z)1#Z#4W$-V54RnT6kT%Y+)>d(rN!*g4-a<6H&0Qw(b>DF^TLD2uiFI-KB}*9R8!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq8sKd6mGxU^Rn*LA+qju0R{0L{xxJ zh${m_8ZFTO|Nrk;t-c4eMW!UkFPI@=|7IVi`sZ=J%<~-zZam!a>wrF^>SfRS=M4lF zEWLdlsE#qo+ucR>HFM!aAcwQSBeIx*f$uN~Gak=hkpdK4=jq}Y;&J@#mDhYt20W|} z_#y?vMMd_U+55k^E1GG?#8*N}#t;7}+}T&KYXajMPaUPtn@*~7U-+T9&4_QtqB|cQ z0_X1)Z4cVS(5`LtEaGa;YKA%IL~m;`L|%^D5vItHu`?`q!NVwD#)7r$?l&sVVEIw= zKmEbi^Ox>3IW5t+VBfdmi&&K0j@~!d_Ev3Aullxdw|>Ws(4Z#=n%x55T;Q8v{@>@o zx=FTKZ*%`JT~nE+u6asb{ynC}Q!>*kacj^BEnos_VDNPHb6Mw<&;$UQzq-2s literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/48/open.png b/companion/src/themes/monoblue/48/open.png new file mode 100644 index 0000000000000000000000000000000000000000..d1e79c283909f5e5fddfa232599121882a64ce6b GIT binary patch literal 740 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-sEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq8sKd6mGxU^Rn*LA+qju0R{0#F+q} z5LX6=ke`sHG_*ZmGIzjtH#HNvx7R-ZzG?E@K#@+Bpeqvp1^Az;oBWmj5a4*}!T)BF_7e}x6JCBe zUCSZI&5o_Zk*(uN@0+W-0G~Tz+)Hb$OmZgP^1F zNsmv8tV?pMS^YY~>eF*>!w=I|n|?BnPAc5JxBt)Kk1i|+e>OF})?E;{L6XblRQNmo z3fJ==#5E_n9Oss2Y%M>SAvXo+2h|eSh?11Vl2ohYqEsNoU}RuuqHAENYh(~&Xkuk- sVr6KqZD43+U=Yc1Vjqfz-29Zxv`X9>G(roQfEpM)UHx3vIVCg!0Ad;5lmGw# literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/48/paintbrush.png b/companion/src/themes/monoblue/48/paintbrush.png new file mode 100644 index 0000000000000000000000000000000000000000..660bf62c74831718ccb79525bf43649f6bebd7c9 GIT binary patch literal 1422 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-sEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq8sKd6mGxU^Rn*LA+qju0R{0z6Sw5 zA+8JzX`^VkhQR;-|EFoJ?E@x)c_l%9!3+Y7GI!(oHvLQG+>oYuHB`9&{&ibgZeYd4ux8m${!6Md& zHKJUdRSsQSjE*z8G`YT57yfwxbKTLt!~3M>Upf=ZVX(vhIh%I*{&rsp<7pwar&e+c zHC&0gSn#*P<2%b@+jl&B>(`p~oKyPpY3sJadC6~An?{PcD(QOxUCNl`?d~%F#n#Dl zfgH{PkH}&M2EM}}%y>M1MG8>CCr=m05Rc<;C#Q!CJBqZu?`m1Z!N%b`(Y4Ac_yCuN zprELLlm5nruAnzfZoP{n1YNDPKKu(y@0Qt=y6N}C;)?xm?pmHVE-p`-mT}%~0rR#W zE1EBEt8nK@dYtp&WBY-k8%5!q?h5J?`&DI2)s`>W6_fcgVDiM1k2lY`@Z?6J-u$&s z{Z&5vkO@5feBP6D>mN@{UoZcp`1i$H{eT0)TwiUvDx5YpJ}^2it6ET9;zw{Gqsjxz`2+Lg_wNc{ z#At8Oq4@vY?AK)wc(t@)_4|Nn{Q zf*W)uyw~5bCv$H4_bhHlYn#*CeCzCI{b5$-k!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq8sKd6mGxU^Rn*LA+qju0R{0#ODB? z5LX6Oh>4q1%Z~AzTy%!D>dZ3tk%F*g@ z_{pwdz4QJTn`A`1a}HIBEMH#KDm#C5k;6}AZGDBV!v1e+AGXIbKGOa1bhVIxxxjq^ zUU&9A*9Bhpv2Bp{2OC7#SFv=o%R68X1Hbnphc|SQ(mY8yH#{7({ZM f*oUGaH$NpatrE8ejnD!npaup{S3j3^P6(GunW1j7i?^E`pD? z+U^2!I14-?i-EKU7`vU!wgW2g^mK6yskrraRy5xs10I&j>E_k{FHe#ePzaoqlIKC|99{s7aZB35pX*StCl61llOtk;N?B=b)_6zjko%vF`( zH>GJ_#5aA`y#+7+%EqyJX&zu&D$=*XL9dN3mt8J6%1A^=W1d7n$ox;`-(V|q2u4F4ld>Y@)>^!A8_^f z-&Ua96m2NuRw8qlUFe4go4nV{WXl@E#`S3*o=({}?=Ul0g^M%)$_IwBHY-}(w|?0m zC3pQWH+Myb+JbX7}SBT7;dOH!?pi&B9UgOP!uiLQa6u8~2Ap^25TiIt(bwt=CQfk7n4iG3&< za`RI%(<*Um&!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq8sKd6mGxU^Rn*LA+qju0R{0zJ>sw z5LX6@Iz`Qa|wL zZx^e?@gGwJ*{tPe?@;l%zKyT#>nk1GecDXFpLn=F-(wW_u7LB5tnb~)%3L>IJ`|$b^{QRWHmJeYoIqQp36Vw9Rg*EtgFWmz^`z-21jk zKmBpozezxsFeZ7syVQH^FMJB*a29w(7BevL9R^{>2A>i3*Al z@iced%(<^;^Sh{j784WP+q7a6|0dB#LG3qM0v%%Vrm(rQ*vTyj({^O&VOsbov}(_> zYgfu!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq8sKd6mGxU^Rn*LA+qju0R{0gjs-3 zh${m_8mZ|2|NqUZj<0SN_+I4Q>-+3-5>Kuw zsIK39OL2~h4I@{E^cIN;mI6ResFt`!l%yngTe~DWM4f{$8w2 literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/48/profiles.png b/companion/src/themes/monoblue/48/profiles.png new file mode 100644 index 0000000000000000000000000000000000000000..20722810ecb524b0f9e709133b3fb1841109880f GIT binary patch literal 417 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDB3?!H8JlO)ISkfJR9T^xl_H+M9WCijWi-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U?>He@+yIW!DgnPbVsSb-L4s9<(M?q~l}%AqLZHFhU~Saa7RPK+9*qm3 zO*fAooqF&HD;tl-2Zi9SZtk+v+NYK$OxK89>a>W(Z*f7SpVa|L6=tbGi^=CT6o3H~ z^P)>Sa{WdTparTWt`Q|Ei6yC4$wjF^iowXh&_vh3P}j&H#L&db*u=`vT-(6V%D^C! h!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq8sKd6mGxU^Rn*LA+qju0R_G2ByjY zpAc6DhO|*M8Ul0pHRQ&Tv5 zZo_Qh4DU&a$@`5ACmuG?FF)VCYpw3ql}C)X%v!UpZK`y{#rX&I*7JXf2YQY%$=luK z(t{i8HUK%C1s;*bz+vUFlT$ZIEHu}UwiGhb#NlXfsf7|D{%%fxD(FmFyS)`pD0wcjny3p|nEv@tem%G|xJmV9l$m-hLc?kO%aoSVPDrq$tpySBi(lE=^c)_pqg z{)s3=0)-MU+q>bzL3r(g z_Vb{k#ssd$-RloXwB$|8UC4e&W_#CxZ67$wx^F*a=)EJT$~w<_5wC;bX5(wYQsVN9 z9VW1(K3b=ec_)wUO`+Sxy}w0%PY!;tif@BMsX=Is2bV+CE(MSzqs#E zdoFuUU&BSIPsCH@(}pCrDGYI(OH&KJWN>MeJLsgbY4xoPS@pQ+L7e1XivlJ8wPDts z3<2}z@c&>xY?A4@e8ua`vOCfzR`0On;=PS@!e#Rmwxs(W z=qhI2$Gb$e!PIP_2G^FYGXyi(Bvly180M)e9;g)b(#RHP{jfny#AN%nPKNDTVq3DU ztW2cr6r2Nn(^?&I_l+d!1Fb zxN(BESF(I(GT*FOpUUieUxO(ESq}%FEJh%Vaxl8_qC!Z6W{rL#yNtfO}(vLqHI{AZK@7X_MAMVc7*}x`~ zyy4QDUF;V{Cdh`osJqfSCu0lSt@^fWCW69yMJ}+FFMYP$vo4Y~&?xI8Pr+=_pzbYv zGb9dtv3I;}ay@2a-n7@{e{2%ooUi-)-9lpB<^K*JR=nEGW0t-AdFJ}m1l{6-T}9`j z4qF8a1WKfs{?T_+ulDb~b$%HzFRGTfMwFx^mZVxG7o`Fz1|tJQ6I}yCT_b}KLlY}w s6Dvb=Z39Cq1A|D86Z=p!FVdQ&MBb@0JKi3AOHXW literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/48/read_eeprom_file.png b/companion/src/themes/monoblue/48/read_eeprom_file.png new file mode 100644 index 0000000000000000000000000000000000000000..d8476f45db94dac4d40b46f00bb0e1f867de9f1a GIT binary patch literal 1970 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-sEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq8sKd6mGxU^Rn*LA+qju0R_G2BzEq zpAc6DhO|*M8Ul0(f&c&iueEF_0H(;ZB|(0{45B=2oD%zrW4`~JBgJfb?q}QlKR^Ed z`Zmq{$fC6_Hpi~Dl(j$o+}bU7@$F=;Et?h2zfb7>Qp3w~`Q0qBnQ!vA?N7aGVzoR} zBD3B~`ol*)M(ryPQ`w(qW_>j?biR4i$KCbJ1=)!E78#mMw()ue{;{1YO7e-nA8_n& zSgsRZ+Ld(p#@^lARdlED=j0X@#)&k)xHmChXt6=))k%T@9vy+J&Q6e=ZoTkX<7#C$ z^)iBNN!3P;{yPU=pU`r=dnB|+9OyB|ByV?@b6;+L z`VZuA7I;J!1M~595N34Jm|elZz#Qf2;uzv_eCw5;(U%e!4t%`6R8pmNZK9Xb(ghKj z5{pu@#H7-?#H40Ua@U+PZSJy&n~lpDVuAZiw$Itm@|MNVJl?pk@Ok@=<)6iLo_uny?{*c4J@YU@ z?lNn{jY$pn6>ON~MOlJZ3msZIQ7Ldr_PUCjpI%6GhH$BFyz<9FlI^EP&+;(U7VR*m z4X0RzoE#oyRSHEcZaC?cWZ^o6Yv-!1fi)ThYfssGM2ktH&oeUY=-6CCUZu+bgTLYVb(3Xzb8!KUY%7@(s1RP)XBNeZmqXk z%RPf9I&j7L=ShJ#OE!cn-88R`+TOLsZZgZVzpg*RtS)R|P1$o&syBv zuuSy=tKZgV&K1AT++0;WZQHkR-#&}VhRh9H{ng3M-F-*;`@ z^&&g&zkB<+lJ)zSYMb^~jgB1p($iL^Ow%?sHD#<7IDFr!e1$o~GS?&ZCw5oy8uIb- zvVJ|d>9tanc@2Yv0)yzjC9|b|8Si<@-IjlU-{)|LZiQF&EaeY9LRdnhO2qD+Es;N< zuf(>g!?wD=?z;)!^~N`LvUipqlYgLo`0L4cZL$Vye00Q)FYmi_(D|J5pGV0;6;qxy zB%3AixU_#feWRhgV%_2F z$#%1IvT`rZ?Cf#9_V4*2KQ)2hO!+xaR2kM+^{nq)wv5T~_7_hz1(m#nycXdG^Y1-J z3TJ%D)t@nE+9t-(@S_#ycdz*__UZMs2R{Pjs=9c4)IYIBJ(Zuzav?f6%}%tw%<87Y zmbI@>b42wCJou9G&}Eg&ydzx8_6ubzI+nB4e=9!0b;84;*8aaNhwsu?(URsKU*Bpm zNBr2krBlmBMQ_rp<364B3nFaKUGV?kU@9LFaQ{ryTyq1>+%+rf8MOnueUFv=J`2ox zswJ)wB`Jv|saDBFsX&Us$iUD<*T7KM$RNbf#LC#j%FtZfz|hLTAd=(6J`@eP`6-!c XmAEx%gcdLXH86O(`njxgN@xNAlR%#5 literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/48/read_flash.png b/companion/src/themes/monoblue/48/read_flash.png new file mode 100644 index 0000000000000000000000000000000000000000..3af289f1aac1c6ca11ae9bc851f608126e9f6e06 GIT binary patch literal 2321 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 R0TWOIgQu&X%Q~loCIF;|`UL<0 literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/48/save.png b/companion/src/themes/monoblue/48/save.png new file mode 100644 index 0000000000000000000000000000000000000000..d05062e95a9ee931a64377c118eb32d4fa965028 GIT binary patch literal 492 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-sEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq8sKd6mGxU^Rn*LA+qju0R{0gj0Y| zh${m_8YSre|Npx8^3s8(iIfES1v5C*dothfWqKaB|Ng;44XT$J8x>CXcq|0UGbVYv zyNEu$@pCbd!&%@FS z3CI41hFUPBZJFENoY}{c=PS6Qj)8ms);&!hDj7MMztsBtU|3+UkAEDwZt`|BqgyV)hf9t6-Y4{85o-A8W`#t8H5;`SQ(pG8JcSw7+M(^L~@+i ehoT`jKP5A*61N78&;ll)1_n=8KbLh*2~7Zb4w88Q literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/48/saveas.png b/companion/src/themes/monoblue/48/saveas.png new file mode 100644 index 0000000000000000000000000000000000000000..cf57499c9281a055c79ad4d91e0707a6e1d8f37e GIT binary patch literal 652 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-sEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq8sKd6mGxU^Rn*LA+qju0R{0L|uSS zh${m_+CZWI|Nn;OkH}&M2EM}}%y>M1MG8>xgr|#R zh{y4_Q*QD#83?$Z4q)u==s5L=X~(z!`vaD^9w=F&@+;wqjmhL?>cx|{IiEOjKe0h* zauQR4s_vww?xQeSa9)U3aCUA*b3gX6mW z8Xo%;THM+m9Y4O05;pOwn`2`O11P{u} zHCVlGjCuM1=qJ?@*NBpo#FA92JYD@<);T3K0RS_v&-4HQ literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/48/simulate.png b/companion/src/themes/monoblue/48/simulate.png new file mode 100644 index 0000000000000000000000000000000000000000..f33c8bf0d7fc6adb6c5b22b941782b9ea67eecea GIT binary patch literal 709 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-sEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq8sKd6mGxU^Rn*LA+qju0R{0#I69J z5LX6hC?~j29x%K4XP>oCw9#w2fd7uyTDfssHC zXMsm#F#`i1P=fC;?EaInH;;K!7EHxlv`y1*i4~;i~t!|Nrkc zQ0h9=DXWq<@3YPNHCuIB`p(^-EuiI1CbxaWShRGonF1a@y^?u{a;z{9G(~(?lAA%pU0tk*QJBRAN^z4FDW~B{wJ1j z1NC3l>3enq9j{vA8c~vxSdwa$T$Bo=7>o=IO>_+mb&U){3{9+zO{@&fwG9ld3=ASU gPV7U`kei>9nO2EggGOip6Ho(#r>mdKI;Vst0HIIVtN;K2 literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/48/stop.png b/companion/src/themes/monoblue/48/stop.png new file mode 100644 index 0000000000000000000000000000000000000000..3b56a803ff560a55ab09faddcfad5198e86eb06a GIT binary patch literal 337 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?K3?%mjbVdLvmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCjKus+S48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fg!5QEa z;>y5~21Nh=|1bR}cL^xSSQ6wH%;50s22hxRG0EHAg(;1@CIzItz$3Dlfq`2Xgc%uT z&5-~KYI?djhD02Gd&-az=rRU_S(*#$MH&Ct+}_La!2erNlL7}29dc#JDR7+eVN>UO_QmvAUQh^kMk%6I!u7RPhkwJ)|iIuU5m7%$|fuWUwK_thCeJC1o b^HVa@DsgMj2rXa&YGCkm^>bP0l+XkK_~lrk literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/48/switch_dir.png b/companion/src/themes/monoblue/48/switch_dir.png new file mode 100644 index 0000000000000000000000000000000000000000..f31c11deeb01362e57d4559b61ea76e17a2c5ec6 GIT binary patch literal 1255 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-sEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq8sKd6mGxU^Rn*LA+qju0R{0zU2Wv zA+8JzX`^V6hrs{;|0_#m1AuYaT@vIM%)rRX#O9qK$YQzZ$tEcY&;7r)B(49z6~60T z9iQ@@x5ugke!N-}BQ0KW>ig#j4q}fF7QLS>>GkvOLKlvWb4{6pHs3Bb`n`vL!N0%v zf>*~|cfCAX)A?n4^@*?TGUq>DjZ;!6QAyizxJ>rXaS@A$8=6kKM#xRlXuhHvb|9DA zc9{=v;iGF)4bSCl6G~-g+g!8*=q$!0Z+DlT9PUfbKn`btM`SSr1K(i~W;~w1A_b^m zx~Gd{h{y5d1PRu|90o>)lb6hEo!UE><*Ce^m^(Imj;u<1_E=ot%{wurFy`GGIx@=5 zFG?LbqN?I}YPagrC7i3%CM8a0T|I4bc!0{9Ie~7DahywHB3(m!CvK=J<@ME_P?Reh zYr80BJ%8EGMnxx6WA->+H-*c+z7r06U!Bt2z-C;`?XA6oW4-D2-nFuRyx;ilJP;@< zDQasISRYWny?gaixpgj2kG((lmhsBNmrviFJsL~wo;JN(jM>xK^;8?@efEZ7-%@S=o?bQmH|v3kzLty6tn|RG-%c@TeqXaz zS?TySbCagzvrAX*Y}L5#d}&fb_7Y?Ez*mY=XKs6~=?Lb#@?gQ8KJ}Z4O?`faN?lSa z2kyAK+%)8B<6~fG`(FB%$**oNFy2&4Tq8!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq8sKd6mGxU^Rn*LA+qju0R{0zPtdR z5LX6+krMA0&F4ywP9R5CCROQh7 z)nRg+is1)8{hlk#)BWR75r<^^htKhb_ul0TPCm=hw94sdK>sU|n1#%~n`Dz0>`s_h zop(a}r-t73FFk8_T=+Os&6`p6+09{9ihS!tjC&46j)mR{;VxiaAH5!$k{uW#i=BLYsR%3k_prJ zp8N~Cazn$wo!ufKE?K<6)oKHaPWBtF4PNX?erukFuQ@Jwe*yFCXpbEBkjFO}RVMOT zlr`?Hoo^)H63Nl7GS6q{l*QIoc9yo*{tV*N!&T-_`{3-P_gMP&2|hePh)4lktvY|2D563YeY#(Vo9o1a#1RfVlXl=G|@FM)HN~)F*LC< sHnB1^*ETS;GBAkbII#~!LvDUbW?Cg~4H}^ZOh63`p00i_>zopr0NhBLvhM15TX(vT9jAAMwvxcy-W*f?y$t!x8Fy8WL2pyr*ijLCb zbciLfIw8+hYel7^Q>muT_Mldz*T}Lz?&+>|cF+0W|NT8azwhsN|M$+B>@A)yR8@Ud zgb>x0@9YhC*33mA!7dt9sfU|VsH2A?LKpMYCdFj%2~plIPN@2Z;Se~+fqZWdgc6n` zlqy4L0z#>;5R!t*um~Y;5kh*Bl18uf2oYPhxcl%B3IXKnibe=uaR{Z%x>C^lYQ)S5 zLL6M!u@bQHTFk&xIFR;lW*!iWQ2HDI&q5p~#Kj>F^T2F)cL0*Ux-d4t`)7FoAP#Q) ztP6#Z#Z&l@b0-G|?~4O?YcN1z9sofY;6LNoxj}dAB__IJ9i{Jn#V>Uh~ zv`d`DfW#I6fWZO=n*o(|{6;$FjIAe#lUWb)2`u>jN0)K?myy29#ivfRQ|F z<02T3HH95c1GDFeV=g8FHk9LyuoTuBI)Xc+Fg-n87-Zan5PBKy?fE@?(FD4dNr?f` z_K1PkNC2UIY!j{PXI+~UDr>gIogFQb`q`5WM8%gMyl*Z~aU>~4zWOrpCX$>!IW@R~ zls`G1X;9YZuA*IbYzc``@!X#pB3^jrnM*tq#;x+}Bj)`we)_|j)%VYFEycqL zjD~K_l@uk4H>R4PE4Ni+A zDIL{Y()`-AWvOx=ZK)d7JL{KE*D32-0=K^0es4H@;#HW=+k_oa;iYZ)-mAQRU)LBT zj;-hQzlkSreiY=~=k|mX>M=~Dz#|iOY<6)T^19=46dV-^-!}>&HSL*;fR2~Y;V_C_ zogIDnzXgiu=BWkQiv_6}1q(|Peps`dvoJ=(GfDsQ<@hb+IK^l3Xqc7`?c1k^vh4M= z7u@c#9W)!8Y*@zEf1|k~Y_YH1X}x!K2Rz*xGW%(!45b;p6VB{ZvNV&ltZ)Js1osJR}!>YeG`g#(v9 zb{_WI(XSU1GZt%IZuap#?c89~g;pC%r#!cWwU1_$am%N7RbL;s!Jwyvwn3_&fBdlN zMhBa_(in0tstdV6J3_Xr*m=pq{?j+DMb>&f$JeH`J83mD!^dbM`|UY4!nCL3&*I~3sY8NYe<^3?*6DWbeQ+iC^_pYldJkiRcJFzT zEl8eLlT2Ldeq5i}Zgi^cM^k=6%EgEjJB?2ce^hB0Dm5J(za?f(cl8AdAKf7frk^SH zUG*?FNkjgu=}vaY;0U2|ql)$h@{7`IFHU;OCJy9Co?5RqyrIe~B`ItBF$s4x8xz}3 z2}dV04jtpLI64ES4K7qy;t@+r(m07d(tg6I+IX-|KD@kRxZqJ#ZjFLD(%>db%aWlL@@l1&K6%Nkt@YZB>uje7zdWQlb8-p4ta6|Kn!=^xZ%-}3w%ds;Wi zpx4KiMa(24t@DNyBl}v0d6K+MKBj%9V}Z*01AZ<{@Bjb+ literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/48/write_eeprom.png b/companion/src/themes/monoblue/48/write_eeprom.png new file mode 100644 index 0000000000000000000000000000000000000000..fb32ada8dea729da3a2840a104663abcd87c72b3 GIT binary patch literal 2081 zcmeHGX*kqt6n`1aWGicvkg~?*&M?-C#@J=V*b`A`=Q$_A+RBuVTZ|h3z-Mk|M1T+l z`L75V6w}W=+JS(>#{h2tKz%CDE{PN3Y{3Lm9H{9PUx0{|rx^hcK!h9s^s4}DLtpfH z04_mU7Ks4pWC3uPn)BF37XbDYYfC$00K9+N&k6h=Ca}N1FUI5?f>w4UgkWV04xW$} zJRp7qE-WU%4$FG}qOBzN!TlN+gnV&beYpt-a`(qxtt6ZM#LmaFO7}M7*RD97%irqV zj%;6`f6|DFa-T2dF^)Loz3j%U;I?_UagqO*lA8k!Oje~x_}zM> zFpSkQ3J+wA3!j2|Wb-&}YV)TH)*qT8+%x8Eb<|C8XBc>Jy}9&ZA<7CP->VqAR?d;bf08G`v){2D4zEKl%i`4n*xA)$hAmkg0M zwGo(7$NaG%%tY$N6{+15R|}$k)}mQTo-*jMvSh|3WULou<u`JiU8F^G=}38>?u`x(MZt zwVbUuP7xvr!R!`zU}5X))|kaHdRI2BQYLtzVFq+L^o!;agq7MwJnFaweI09UDu?_l zNtvM%t2d51<$Ia*FzUPw-H8pN_k#vk@!y^NQIrl!j0+yje`=zk-j2jT0hf*#qJgquNwix^A1jBk|$z>^!aW8QVA6ADjwhi*KJZ8fuC! zcs*frk&hx#e}iXV823m@O_^yiF^Lu&oAnl2p<*Z0<9n`xf%gLgp7>PhzYc|}nsYo? zLaYy4l)mPXH6Jq4_~?qcoC?2b?@E)X?@x|S6CGLF+&Rctq8Z~=`MPEdm=*CfvUuw; zmZ^H`rKqvY{D9^!A;;nTWj;RKWKv!1k3W(7#GQM4bJO|(!7F;vtku_S^py-B+y)Xe zNq**61)JPRPQi^WBeX|^Jm!EihU>FjTsG@)vwQDR-KLyJDr_Ie^VYelwm7>dp3X;3 z#B_vIRmnA1O|jsC1yjWYascl}o76_e)YNhRu+ue~tAqRAJ!n57lIwk0O`jgqDc5ne zR1v19(;8!SblY@`hdK>X_Tt*L}U>!481h_04@2`GVHzTTJrTcBW1Wrqa7+}O&f21jK44VUoGEC2ui literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/48/write_eeprom_file.png b/companion/src/themes/monoblue/48/write_eeprom_file.png new file mode 100644 index 0000000000000000000000000000000000000000..bfd3c46af43dce952d717408ecab59203c4a492e GIT binary patch literal 2008 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-sEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq8sKd6mGxU^Rn*LA+qju0R_G2Bw+- zpAc6DhO|*M8UpkWf&c&i$A#Qa1t!o-B|(0{4EzRK+;TcBY&@LnFP}S8e)ROQVCI=k?f%s-Y(13Wq;ZU(M8J3(@~ z^}=UIPMJ5ZR(`9#=A_qDzP4o>jEZLG-gdgaZD&`{!MM35RU0)9I4;TwngsM6W0JSK z%jN0!=K-@M180FpWHB&rUk71ECym(^3=GUUo-U3d9>>>C`E5TrP~t$pANs$UJU3td_^?Ifm1u2ae^D?%YO>WYR24a z&b4JvDGAe3JTm#(rQ4hIpRAeuY~AuYp@NXc%AXCf3|ag$wlv0VF1(!f{XS>IY%cCJ zu}q1zg(?h^XV|~}aCeNE5v!5N;d)dxa-Ym2myB&WSAXScZxTFXz;f|hNTy4sdE-9uwkyn z%I!;zOmDxOdwRWx=4QR@iCmn#tK7Cu+7XcwKYNw`S(9HSbNZ(ST&fW`biw%Z`FX}$ zwrtyGwRP_NqrbS{hBa+8o3NrT?s#iAn+TWL&6tDUGTIM|(p6i+%hXF^O=Diad)H^; z$XUp(+mX)gu$kfQ!(Y9#XRKSk{P{G_d;5gXKUmkxU^UUfc}a=?**6bsqZfWZ*xX*P z+F{`Hzuigx&3Cy4Cp~3Uc1+J!p0a!ae{+Aw$>g-JSDddrcqP2-f_uID^Yz>7dRy-) zYV6gWd~#kDpK)vYAuXjHEh1}9NH!_2SpI#n@ootY*6ke&rny$+nMjG&>GznhzWw*6 z$zyS)rPZUUt(hK=;yzApm*txNnj=bN{c)*Tv$J9ZcTFigH~Yr+zLqEDEXsf1Gv2tj z@OQ(E83pXRljUVOH?C-qV~%35v%R)(W5`EKi5_3A8!hWrnmHbyesDe8r&4eEU(ZaV z4ykb%)mY6o-mg6|z~bC&KCinguWsV(d>d^4>u8*WkkfI$y&tBer)}h#EUFMI*O$KI0)e_f;l9a@fRIB8oR3OD*WMF8bYhb8rWDsI# vVr6V%WoWK#U}$Av5Xo_3ABu+D{FKbJO57SWLJOFH8W=oX{an^LB{Ts5wz{cT literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/48/write_flash.png b/companion/src/themes/monoblue/48/write_flash.png new file mode 100644 index 0000000000000000000000000000000000000000..7c5167a70791734dbd29e60fba502202ec570df2 GIT binary patch literal 2358 zcmeHH`!^K&7XQwS=SX>7B##j$aWEK+i40~i3WJeS9n5$O<8j8D5yug!yi&}Fa+GJD zd6c5kNK%QA#}x`GL|!u&(R_Gf+eT6?dx_uA`oiDYjr3YUWe07Qv4 zcqbmCenAMv%N}FGO+4cBHMcVdpzf;3wkJPNL&BY`EkI45{5($}s5VY^0K^~xV59)R z;guM30Q|w5^3?+X>bnb3`8Se0_mTenjH%NfS3!`gd3`M{tomYxviM(1l`17is_L6x zF4`uiVBsrTuD30+axQnO|IR|IHpJu_i`_A&wHy^6;H?ayoUq2vAqOI%JRwZ8ITOzF zi=khDSg039@jQY~#G8|C*wuL%XLDTS*$0w4uOY0Sb-p4XG5w&6f(X_-h){-7FLbNf z`~^?v4`7IdR(TlX@Qt3SeD^MuTzkBC z^g=V=t?g}BK8Bw+g1}$x){}5DDvcn9Ghbfae?oMO+63+y=$H^HFqNj37D^B09?;Kk z#*K1h+|zG_(vZoSz-gpRc57^qe-;~b#pQYHbQ^6tN!>FeNJrA${x(A*gplwO zF^-hP*;c&X@u!e#h_2>Nscx2CR#-2KNqUSLR`b}A{N#}9kFxV`aRbn>Z^ObLp`U8N zRPUmE!loikgjzw8J*PVU@PKjksv|L@VO_r?@P6{JVzo{Qill+hs-sOJ9w^4#*_Y?) z$G}#_I-hXNvtBn_IZ7_MmyHM>aEv#oNnF#;>R$dZ3V%DZlI5P7da=OG*8gWce2Rs^ z_!QVt6b|?e8cmLbW{dT3{Z!gxpv^XTf+(8R*yq+DK~8l>bic@1nZBEpo|qpkLKmiB8y z6>H5F&$xOBt7OVrZ6avbpZZ>*m(nYPZ=4m_$dHbYDz99q_a?82AM)H#%O+cN2?XQ?89k;i>=WmHyX}G73adMq);MpRs4fZ>0uHyEVKXJV0&M3 z3bY~b_)Y$qKPe83YsXU_$mRtg-|xUsH~hu}jeH<8xt#K>ibrXrUYB_>YUOUP0HgBy zcT3UL(1bh{@5axokU~%|V|icx<$KTC#SF)TA13Gd8MY^-y|k`R$SS}T7r$r}+itUO zqJQ7)m)lH#tv&x_?u(oaHiea?1ia^glv-(N={I^&tw1pR^02HIMB<6SJA?MFDz4Sn z@%=faWkz^vbCqiCqq}h;#Y+rUylTYu&6dYmkYEQpJGBiT`??;~S_5vnxp+BqH@ITn zuqKlF(N1nT$7bd$aflf#T-|4?ts;qLlw~4z6xq)DmlxtG@-Wfz(~;SuYr3XpxyBOn z&n=nZk#F9Dm1@<|z|QbtJWQqfbWV`jVRDqikU7~&B583Tgu-}^#Bg(lwmj4g-*=qP z#uX_mmE6)<=x$Npl2Ps-I-(B>{5zkd#2NTCXO|Txo!#J$E$(Q_^ literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/add.png b/companion/src/themes/monoblue/add.png new file mode 100644 index 0000000000000000000000000000000000000000..a9d655f3f20d20493544e0966506eb263be6b5d8 GIT binary patch literal 354 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UV>C6dj$D1FjT2AFf_CyP}GAUALpctjR6Fz_7) zVaDV6D^h@hdY&$hAsXkC6Beio1i1(Y6fWA`Fk#Z9Nu9mbgZgq$HN4S|t~y0x1R~149#C14CUSgAhX#D`OKY0~2in mLn{M=C0>{IqG-s?PsvQH#I50~corj21B0ilpUXO@geCyTDqv9n literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/arrow-left.png b/companion/src/themes/monoblue/arrow-left.png new file mode 100644 index 0000000000000000000000000000000000000000..2a93554dffd056e56714b25d7ba15f3b0845107c GIT binary patch literal 361 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UV>C6dj$D1FjT2AFf_CYj<$PKtAHHN0*}aI z1_r*vAk26?e?ej~ZSf5_mano*OiNRf(^p|h zN&+K;OR13H51G8#KuxM8t`Q|Ei6yC4$wjF^iowXh&_vh3P}j&H#L&db*u=`fMBBj7 l%D`ZW*QLEE8glbfGSez?Yq%<&#R$~E;OXk;vd$@?2>@FxVR!%l literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/arrow-right.png b/companion/src/themes/monoblue/arrow-right.png new file mode 100644 index 0000000000000000000000000000000000000000..4f8d53d585e8f16acacbe8087a1661a4cd1240b5 GIT binary patch literal 363 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UV>C6dj$D1FjT2AFf_CYj<$PKtAHHN0*}aI z1_r*vAk26?e?^Ug%mDWtFZyKsg}4#l%yncptHiD0s(2P7Py>UftDnm{r-UW|hNS%G}U;vjb? zhIQv;UV>C6dj$D1FjT2AFf_CBE zfgH{PkH}&M2EM}}%y>M1MG8>S&lesf&5lLXPbTf(%)VmwYN%rW|0H&v2yr2TMj` zn~=x>)&~sJ8J03Id@R@2fAneMe4s_DC9V-ADTyViR>?)FK#IZ0z|ch3z);u7AjHtb u%Gkupz(m`?(8|DIiPxpQC>nC}Q!>*kacj6Lp2Y~%z~JfX=d#Wzp$PzGhH75` literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/clear.png b/companion/src/themes/monoblue/clear.png new file mode 100644 index 0000000000000000000000000000000000000000..e37cf1aba22a74156f3920985dde581b7b99c955 GIT binary patch literal 371 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnH3?%tPCZz)@mUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UV>C6dj$D1FjT2AFf_Ce|G)H`+$EqOV@Z%-FoVOh8$e+O#w2fd7p64sniP=o0*}aIpeqi8Fyrz3 z6(B)xPZ!4!iOb0e3q(2$3|JZ@7xMHdD$Fvx(r7Ajh(mz4)uXkgX{m&Zv$JAXq_eZE zghH3oLN>>#3N8<_9_&hZcEGpoHtTlThjObJ7`mJJ_C%Tq0{zCITH+c}l9E`GYL#4+ z3Zxi}3=Bp3{12Q46O_dmUvy-i=rVnKP5A*61Rq{;#rJ94Gf;H KelF{r5}E+rLuBFr literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/compare.png b/companion/src/themes/monoblue/compare.png new file mode 100644 index 0000000000000000000000000000000000000000..f645f0385a26bd21b13a65146a05432748d0250c GIT binary patch literal 516 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!Dgdzx&QzFXZ~>Y8_;CVk|4ieAPoj-*SE$4?OiOz$3Dlfr0NZ2s0kfUy%Y7?DuqW46!(U_R?)WCPe|}3tiXWtyok3|G&5D zj8gY0i|lTy3;9{4FntJrIAa~_J?>A124%vW39jx1Z(r+hKV&rDne|)6>C5N#5Qa6Z zlV1Ft9q%}6zi`5e|Drw3DhEOuYg24E3gQoM!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!Da}~WRA1}RF!Rq537|&CByV>Yy^zZS?LZD^fk$L90|Vb-5N14{zaj-F z*zD=z7-DfcIYEMT3saBJnTn^8C8d!cJvMKAUG(Br(&UFv9%U?#qhp&p0YsCn$?f zoe~;ywV_M$N?}z9a}M*q374)YEog9zc6aYRks-;d!oa}Pz^}DFz&Q!%9Muxnh?11V zl2ohYqEsNoU}RuuqHAENYh(~&Xkuk-Vr5{WZD43+V6epN(q0q|x%nxXX_dG&Toun^ Q1ZrULboFyt=akR{057tsUH||9 literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/contributors.png b/companion/src/themes/monoblue/contributors.png new file mode 100644 index 0000000000000000000000000000000000000000..b37877e68e9eedda1ecba39af30e53ea002b5eb5 GIT binary patch literal 971 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!Dk#5ze*v{1Q?VFB|(0{3mR7`NK5~B^8Gi4D9_xtoy*?8NGT0BSNfK5UpqH`KdVY=hvr-M6Z}yJ1X?Y8t_7AI zVR8$#ax06u$+_7-c-qVmyVpJ!O>%`SC7&w3J#*%nu)*>F44;jdBNq6Jw`$M#{x;9@ z41);H$`MGNk?2i7l1 zw-I|~=GS!Dz~b`XN{dIVF_&Iz?dY2%%^LFc!TqXVQy8A^7Fcnt;Wt+$F9(NQQp0zR zuTQ$3-#Wc|SNrzw{15BuPG0#Pzl7nw{f#MiW~^*$d&T21^MF3Hl-h-ahI}SF=2xoD ze|Xlev0rkt%zlnES2HjiRZCnWN>UO_QmvAUQh^kMk%6I!u7RPhkwJ)|iIuU5m4S)2 nfuWUw!4j`adr>sx=BH$)RpQogRXmFksDZ)L)z4*}Q$iB}c}_4b literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/copy.png b/companion/src/themes/monoblue/copy.png new file mode 100644 index 0000000000000000000000000000000000000000..d02edac1d7e6f3f68360cdd77679ffa58b60d986 GIT binary patch literal 401 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UV>C6dj$D1FjT2AFf_C`W~IDKCcujf}qBCLw}; z$CVsX85nk(DJ`z~I>`uVgKCLuL`h0wNvc(HQ7VvPFfuSS(KRsCH8Kb>G_f)^u`)2x oHZZg@Fj(SsX)lU~-29Zxv`X9>u8L!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!D~o zA+8JzX@d>@|NlSkrcW=>g$5--e!&bnx}6`)=6NtJ`t5;LXlKa!d1@cFl` zNXNGaQLa8>hk5Gu7sv8#7nop^-mzRF2B?=Y$=lt<@aApVA|Qvez$3Dlfr0NZ2s0kf zUy%Y7oa5=@7-Dhy>4cL)O$Guk%{f|*g-3ZEMGo%$|Npg*OUw$-9og}hLf>CK6C&~Z zsKi>fgC^1}r!N&tZ`j(zY!St%WcAMLpsK^}%U>;?&(ml9A6WhOfw$y>X^FKbGX8X` z2PgUec&1qUC@1dG(V(Bb=NYwG%~$bGbn4JbTq}@ta8mD`$&+fh-xz&-*EmOnOXgIO z%|jo~>2E^Un}18+$=sbRF8BH7vH3uEs+PD$l%yncptHiD0s(2P7Py>UftDnm{r-UW|&NIQ) literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/cut.png b/companion/src/themes/monoblue/cut.png new file mode 100644 index 0000000000000000000000000000000000000000..8a67666ee7396c41ffa8cd4bd4ebd13b93968148 GIT binary patch literal 907 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!D z-}%WVsZNH#OpvAKUn^Mgx=A=b9RePZ?);Vo_@YI?r5^3eKO;3hX%v_tj#?eCz$dVDrcA; zy3;X3;-SR0TEkPaVwW}DM7G|SRM(%l#BAmQyMKSyh?rlNd}Wk*Z&}>8NuiRbpRPRp zTq1b$`q|nm_H;40UTV6$%X`X{(B%+1@!1b6@eB3fiV~l=RL52CZs|YeY#(Vo9o1a#1Rf zVlXl=G|@FM)HN~)F*LC!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!D4*2XQ;@lpW55!6uJS` zFeZ7syGXvt+u8x-a29w(7BevL9R^{>JKJ1+0%5Ro(CRQ%1Y>`Fbl?R2u8-m5x;d7(X8n4Y~O#nQ4`{HCz?XVgzbn@O1TaS?83{1OO;zl!*WU literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/edit.png b/companion/src/themes/monoblue/edit.png new file mode 100644 index 0000000000000000000000000000000000000000..5569461bcd9730c5c47010ffa35536c77378fbd6 GIT binary patch literal 651 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!DlB zSEK+1S9`iRhFF}wdj6)^K?4D{2Zk&g-E`Mxtz297`CtC>hcZHj2W9_<`kkA8@()A3 zs8LWA^Mq6S2miJ_>F8qhu<6cP%Xf+4!UosPGj3*;pE;l7*s+QG)GfCeu~m(4_}kj{ zhaJ3_>>|-Su_gG%4W*v$aN%{^{U(Vet*R&xHa^OHV#^F|xeHF+OCK?=4LVXfZzF?Z zr}@vagTe~DWM4fKN`r+ literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/exit.png b/companion/src/themes/monoblue/exit.png new file mode 100644 index 0000000000000000000000000000000000000000..86898dc6837a8af8c9920ec5d336be623729cd17 GIT binary patch literal 615 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!DAMq8 ziZvPVxGr{JkX+Jmif7;d{~n8Fbe6Bx4*z9Va56VjYEeDUhu(q%S`QxR$lK;H?O7cA zo%tFQ`##l{GaX@yOvM@3k{Oo2ouJ-$LqJI3YU~n+q^<2f+>&R?o;vS)e#fNce6^i* zOVat)$MRYIr*;)Z24-okN~Ht`Q|Ei6yC4 z$wjF^iowXh&_vh3P}j&H#L&db*u=`fMBBj7%D`ZW*QLEE8glbfGSez?Yq%<&#R$~E N;OXk;vd$@?2>>8H!a4u| literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/fuses.png b/companion/src/themes/monoblue/fuses.png new file mode 100644 index 0000000000000000000000000000000000000000..f8069a08fcd18897ed0d5690cfeede54a807e205 GIT binary patch literal 778 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!DH( zipM{sJipE@W%-^tudP}@?BO3((*`}KnYzAz8J}zO*!CZ~I1OkJW0JSKi=Af*!($+a zv%n*=n1O-sFbFdq&tH)O6#V4r;uvCa`fA|KqC*Zm+yM$lQ@lO;3#M;w-6nF#_u~Km zV&8;}awdI}vww3!xp(bUU2W^Br=@ch|0jHMT@cb|^;>Yo3?^xXko9w&13rrSAL+Wq zy8A-S-QA)##{7FS{;Xox*dwW|H9>OU0XF8P4a;^eQSI8cpie^S)v??RRtbZX3%<`g zu_!)CewO@?!xt@d^*jW9-~1OAJ!l(u{=>VEDuqjm<>z0X`R2b@c#XBt)1&dL9<>`h zzi(ZZp>pp3r&=+aWXVWgpMzfKHqW?hWz^lP_+i_h6|#3W@JCGSULPoP@!zeSNoLy) zJbY$%{D}QOKUeL|rED#?6%KO$TJ8??y=sYTL`h0wNvc(HQ7VvPFfuSS(KRsCH8Kb> wG_f)^u`)2xHZZg@Fj(SsX)lU~-29Zxv`X9>u8LNS%G}U;vjb? zhIQv;UV>C6dj$D1FjT2AFf_C;O zkH}&M2EM}}%y>M1MG8>R+0(@_MB{vN!UDyF5FrQA4N+SqLLIWNDupnLmN07To9M3b zWYqY>R1&>2Y;Bb5A_k9?29|(1=MA~frYcN-B)-6qf#JWiLbgEm%JV?uR7+eVN>UO_ zQmvAUQh^kMk%6I!u7RPhkwJ)|iIuU5m4S)2fuWUw!4j`adr>sx=BH$)RpQogRXmFk PsDZ)L)z4*}Q$iB}XiaMv literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/library.png b/companion/src/themes/monoblue/library.png new file mode 100644 index 0000000000000000000000000000000000000000..e70e564a6f17387e46c4a75d25069ff953a7458f GIT binary patch literal 360 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnH3?%tPCZz)@mUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UV>C6dj$D1FjT2AFf_C>w1MWRmbgZgq$HN4S|t~y0x1R~149#C14CUS ygAhX#D`OKY0~2inLn{M=C0>{IqG-s?PsvQH#I50~corj21B0ilpUXO@geCx!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!D;OkH}&M2EM}}%y>M1MG8=GhNp{T zh{fr&7_*X z)WSe7cqRAZ9UH9XMYR@`ZhQW~H8!i^nb!|Bol`z5M3248z9S!hXY+Gqn~3GlpVpcB zvnEJ;hs9sb1G-VQ#5JNMC9x#cD!C{XNHG{07@FuB80s1sgczDw8Jk!cm}naqS{WED i@w&7ZMMG|WN@iLmZVgw(vlxLI7(8A5T-G@yGywqds<|Qn literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/logs.png b/companion/src/themes/monoblue/logs.png new file mode 100644 index 0000000000000000000000000000000000000000..46a00c2034d13c1e97b4a481d764432278ae5a14 GIT binary patch literal 636 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!DD!bQ(Ok{p&t9jt_BVYZ~9!YKgyd-6&0ktzGdAqxqtlaqWFOb7o;1OBOz`%DH zgc*W4lh&}whC44{{KH;KvP=f^k$b2VcSYl z&e}};&soDNBD0_)y*cRSzJP^UO;V-5C))Aynl#tsU%a+Yvh2mTO$+TMvTS>fP1gJ| z(Zgp+!_7IZI^h%6+|=;RD_?SRhy8)T)xVBd#_L_5&9VDNPHb6Mw<&;$Vb)4c-# literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/movedown.png b/companion/src/themes/monoblue/movedown.png new file mode 100644 index 0000000000000000000000000000000000000000..084ec419165d1557f8cdb61a45885214a1e9f0db GIT binary patch literal 569 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!DCzd{+v;VkfoEM{QfI}E~%$MaXD00nD3T^vI! zPA4Zwur6VAQ%jLE7H(q_3sd2fwqC}mlO_4O@i2dh6$Z3 z9RxI1sj(z+u1*X+pui*~o|+)QeDTo@8!g636Q?juymX`4$&HsQrI2-+j7ywcd4X2L z6VZ>XJ0{JVWyBn}V9_Z9t_)^|V0o@zOHMrZ06Ijq#5JNMC9x#cD!C{XNHG{07@FuB z80s1sgczDw8Jk!cm}naqS{WED@w&7ZMMG|WN@iLmZVgw(vlxLI7(8A5T-G@yGywpf CAC{&7 literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/moveup.png b/companion/src/themes/monoblue/moveup.png new file mode 100644 index 0000000000000000000000000000000000000000..e42bcb0164c4b0cbd6c8c12e1f75cba2ce1bfb4f GIT binary patch literal 578 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!DX^E-8gfR{KG4&fqEE|yxmh(TdSM!}qnhWB^G~{dLEykr2LTOD zmLSER*f9XYN-S~MVzO)xk4KEykx9%O4Ma~cyNW9KxW;fzNytfk z!*xVJMpTC@RdP`(kYX@0 zFf`FMFw`|N2r)FVGB&X?Fwr(Jv@$SQ;&o{+iiX_$l+3hB+#0TmXE6dbFnGH9xvXNS%G}U;vjb? zhIQv;UV>C6dj$D1FjT2AFf_C`*hB|(0{3~T<#@qJqTk8%CE5}+*%j7i?^E?gNGzJ!5P6nI1y zGcfQS24TkI`72U@f)SoBjv*T7lM@z*KbXVGBz%!IjZ1+=t)atH_#%s1HrE0!AA?yP zY6pa7HYhQelrhaZP$I&pB6T9eK|JAr+5yYP4GgO;Ut~RCH?P6Jp+Pd?>4|HLxC3Mv z7{1Ro2w9cB;4#n+)e_f;l9a@fRIB8oR3OD*WMF8bYhb8rWDsI#Vr6V%WniLhU}$Av ju*B=qUK9YGCkm^>bP0l+XkKarSg- literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/open.png b/companion/src/themes/monoblue/open.png new file mode 100644 index 0000000000000000000000000000000000000000..f39d8f66a774cdd75f11d633c314751cb0a46a79 GIT binary patch literal 515 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!DointWCfgH{PkH}&M2EM}}%y>M1MG8vg2c%N!R0)Y zbtE24NuSoL>0sRKD#p4YX~sddZoZ5~4YKq1H*#5682UVP3OsPOS?_#z5|g}r8zYkk z7fY&S%Y~<{6YnZ0X|?I;_dW6m!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!Dy|NmdFxYiEncfXP#zhH*E;GbE)x?e1w{%21AhFPzkIeSH|=4vip7R{NK zGxv$Cq+<3`ChwCkWem0L)=sk!voW`wF`x0l&g&i$Z{Gg9zs8^U-OaCYqRBkg>|acO zI3%w-3pANA$=ltlBSEK+1A9%VrhFF}wIx(`G(NUmv zee4=#PC=z_6Ig{El{$1Ch2H)DZ@H}U!JL&dD?dH3D=D4-{@Th{S`S)^EDOwSx83o+ zl-~Q7QHxdeShJqYj^MfzjmA13PHc315O^$yw@_Db_ZG95k5ZmX^49QV-jhmKtDZiY z_xr~^T&+ngs-2tn^oxqGdb(<6^_KRi*jTxbUwWput!!L2@zSNzSFb+adN%uI``p;b zqopO)?+^9ZOr;L@A}Su0lk`L<}orTMQO z*E2|$K2ep=+CZ+KZwgH$NpatrE9}tKwOVKn)C@u6{1-oD!M!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!DXL&S?^c*zjtjs51;+rf5jLm$C%{p?jrbT ztL-izhqJ&VvY3H^?=T269?xHq0u;>hba4!^IDPe^H(!GS4@-cC>w*0D^-J+MY=1PZ}=06q%oI6h{sNGXMYPI93wZ-cjOu}ca zB3J?$lslLT!m=2G4wSwVw8_tQ_#40$&HTsIdhTc5qcJ%%F9U5=Epd$~Nl7e8wMs5Z z1yT$~28JfO28Oyu1|fzfR>me)1}54DhE@g!OS~@aMbVI(pOTqYiCe=}@hnE51_n=8 KKbLh*2~7Zy(1tt! literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/play.png b/companion/src/themes/monoblue/play.png new file mode 100644 index 0000000000000000000000000000000000000000..2bcf00df2cb031c64538f53606b3ce2394acb50e GIT binary patch literal 722 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H3?#oinD`S&v7|ftIx;Y9?C1WI$O_~$76-XI zF|0c$^AgBWNcITwWnidM18QnvVE6?TYIwoGP-?)y@G60U!D(GunW1j7i?^E`pD? z+U^2!I14-?i-EKU7`vU!wgW2g^mK6yskrraRy5xs10I&j>E_k{FHe#ePzaoqlIKC|99{s7aZB35pX*StCl61llOtk;N?B=b)_6zjko%vF`( zH>GJ_#5aA`y#+7+%EqyJX&zu&D$=*XL9dN3mt8J6%1A^=W1d7n$ox;`-(V|q2u4F4ld>Y@)>^!A8_^f z-&Ua96m2NuRw8qlUFe4go4nV{WXl@E#`S3*o=({}?=Ul0g^M%)$_IwBHY-}(w|?0m zC3pQWH+Myb+JbX7}SBT7;dOH!?pi&B9UgOP!uiLQa6u8~2Ap^25TiIstgwt=CQfx!~5OM6i? z!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!D zA+8JzX+sPB|NsBtq25bC_gj?&`2{m{@kR2MT7HvO_;>C57gq0`OfOW-4qx_PeST{@ z^P2r~9c{m6KU?rugzfc)^)F94I|Nm-^ha$jkX=`ORO2N$_>#QcU92tnzT^On&{|n@x9f|MC8~)ajvzi9pBEnI8L?{pT+7P-fsrcQISe@~L&U)-;yWt0own=n4tl zwCoMjipjhto|~64CQOXnba&%j@8!2Yw@zXCePTx=`=^wjyEa(JR94vtPBN&?^?N*T z-pv`_Ned;WOh3Lyur29IQ@_b14aoq8Pwb~-XXkBScm64R{a5AszX#dP4*n}ESO4<< zdx^@z?}ZBe7B6e(=*!mZU-!Yl@NAx_#Z{n}R7+eVN>UO_QmvAUQh^kMk%6I!u7RPh zkwJ)|iIuU5m4S)2fuWUw!4j`adr>sx=BH$)RpQogRXmFksDZ)L)z4*}Q$iB}0r}zm literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/print.png b/companion/src/themes/monoblue/print.png new file mode 100644 index 0000000000000000000000000000000000000000..12bf81699bb56795edf1deee7c9ea5f80c69b25c GIT binary patch literal 411 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UV>C6dj$D1FjT2AFf_Cofe1@(Z zAOI#yLQW8s2t&)pUffR$0fuV`6fuXLEL5QJ=m9dGHfr++( mp_PHb60b{pQ8eV{r(~v8;?{6gJc|*ifx*+&&t;ucLK6V~gl#ea literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/profiles.png b/companion/src/themes/monoblue/profiles.png new file mode 100644 index 0000000000000000000000000000000000000000..c4dccce712d590076d29711439b2f9519264004f GIT binary patch literal 362 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UV>C6dj$D1FjT2AFf_Cz1qz`I%n1?RZI=!A*h?@lWX7w%4;N#b3e>Gy;u=wsl30>zm0Xkxq!^403{7+m z40VkRLJUo;j7_WzOtcLQtqcs7cwO3yq9HdwB{QuOw}z|YS&Tpp44$rjF6*2UngIS& BTE_qY literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/read_eeprom.png b/companion/src/themes/monoblue/read_eeprom.png new file mode 100644 index 0000000000000000000000000000000000000000..f60dec22abe3383254b9c61cc59eb74430e8bd70 GIT binary patch literal 985 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!DgCC1GETaf#~EjBJW zR$hsJ0!$yK&6~S|kAq!YS?J>z$!E{My-~?nX1YDVLOwBJ*3}r_!)tf!-&z|!{mSXR z>$coCHk{KXT=DoRcgO8VMw~iY`QAVq7?Zr+UBYX*Zps5WoCO|{#lX0}4#JF18nY{a z3SvE7978NlPo0zi4t?hRc&)_6_qR z#Fc*kWDQ!_lhSCRwHFxrswJ)wB`Jv|saDBFsX&Us$iUD<*T7KM$RNbf#LC#j%D_b1 mz|hLTV2RfyR1LZLDVb@NxHViA&te4Hz~JfX=d#Wzp$P!YT{lty literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/read_eeprom_file.png b/companion/src/themes/monoblue/read_eeprom_file.png new file mode 100644 index 0000000000000000000000000000000000000000..465d633d0c2998dfb36ef75773f9ebaa830ae32a GIT binary patch literal 955 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!DK&o%fwB$2Uy4_Cd|4T<9m4Rj{RF}!>3<4y?2_xx-IvO4d?vo60Ugq zpyRd?CtJ*qlR(oMlf2zsf~(SH*?=6*0*}aIVBB5@VMZs7*%d$q{+=$5Ar`0SPI?)3 z$UvZVxo*>yWm%0$Yq`3*G`PBcuhY9Ay~7FsG|tCn$WDSPP2+lSSgi$gIcNVs9tZ!8Jeyqg5AxN=(RYK10u+O>d zt3vr^M3jqjEST#MELPa!nJZ|xWFo8Mi_g5G8r>%+t$DVIWr|4n6P+mzizPb`Y9*I) zu330c!uhE!gH)Wi=8;|3Z+YDOeAq15^G9XFm3yx~)KxFvJ)8Ag)!%=0w{05!B@|SI z*t~lxbK=Jm=H(^I6=i(l(<=|`{j@$m@BJdJJN)u;rhIoVUjBSq;_kxFw<@GF8_Kor z9GCbw*=LrOLJ-RWIgU&HueG@|zNk9{T3r0j&zRLVuk!1DWng%#mbgZgq$HN4S|t~y z0x1R~149#C14CUSgAhX#D`OKY0~2inLn{M=C0>{IqG-s?PsvQH#I50~corj21B0il KpUXO@geCwtKra;l literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/read_flash.png b/companion/src/themes/monoblue/read_flash.png new file mode 100644 index 0000000000000000000000000000000000000000..327f24f0b187e806c9511d4533a4d5a90595bfee GIT binary patch literal 1361 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!D4LD?3wd>b(OA&hIU4KWtEnXX_Zg};D`LWsa%ME{iFX1ei;{S9LKi{(-kG>u5?_Da)vN%^j z@A&eVckxYOtq=Aq3UMD*5X+XD|M_p>hp(c)&M2+s;m9d+t&EdcgnPbVsU!zuj9OBzW5Vfn zrDKtj(-IGMO|QTwzpH27weEXd$S-%Mdb{=J`}yhV@4j`M%NO^%m^`Ih{nf?_#YzT79%SoNAeA`1fC=hi)t>uQ;|KsfJCeM7s; zE9LM)uH*fkUIAPzD|$H3{aUhT(WWkqz-McwWj6Ug4RJ23*1fvGkA-o;zJ(iCN~TSY z;EuXok>%drVdcB@^|~l_8|A8XuKIk9)7x%OJs!7R>}v$$6IXrti{H6E{65=o_`G5D zUyh@bYZ=xvy8q~9caTqccE-d*{`)1y9L|jT$sY}!TS68XVbV+XP5ok_RqK>_JHuj1NHZ0 zLY}Uv;A6ZUSDZ0dd96JohcV+V!{hZ+7JF~lWX!l)?AdL0&%C=Am%cYo1jf2*iEBhj zN@7W>RdP`(kYX@0Ff`FMFw`|N2r)FVGB&X?Fwr(Jv@$SQ;&o{+iiX_$l+3hB+#0Tm SXE6dbFnGH9xvX!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!D|Nrl&cuWKaR#-`pUogX(KXQDZR{vv+S#&!qDp7yh{_s1uytnjadfav3 zX0q266tFH|cTun6jC1_KcgKD|`TpkT+NSsC3?%+eG(6orRZ?Mstkh@G>tY{f9_UrQ za_Q8JCGs!ksO@RC69U@6nB?v55?;%7Qy$3SEbxddW?QlX>63 zD2tU-LfU_snp)y1wq=QKUdxw89@=QhoT4y0wNCN*weAUq2ZT;v;#&Q0ui`bH4Sx65 zo9|KcKgcj!q^s-5_Ja6GoejASvR4EvQa(q^Pj(oaaUB=Usc(& zxBf-{PnIup+}ZcsPhJNMBGnSth?11Vl2ohYqEsNoU}RuuqHAENYh(~&Xkuk-Vr5{W oZD43+V6epN(q0q|x%nxXX_dG&Toun^1ZrULboFyt=akR{0A=_Y5dZ)H literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/save.png b/companion/src/themes/monoblue/save.png new file mode 100644 index 0000000000000000000000000000000000000000..0b0554a921c4077223273d6f3da5364cee639916 GIT binary patch literal 355 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnH3?%tPCZz)@mUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UV>C6dj$D1FjT2AFf_CF;VNMbX z#w$)SSn{+w@-Z;%WtD#@s~US0qI literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/saveas.png b/companion/src/themes/monoblue/saveas.png new file mode 100644 index 0000000000000000000000000000000000000000..2d628c9126dab32922a83b735beeb5155d9800a3 GIT binary patch literal 412 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UV>C6dj$D1FjT2AFf_CFn+rhxBJmIhgL-?hG2N*>jWITA` zAe^8O$dIDF%0YP(gA}vg0SAu-i<^HjbqF-J^|`sb8*g%8_I7V)Tve?!>!QqwFo&fP z%nZAhn#CM`el8DahiZvyL`h0wNvc(HQ7VvPFfuSS(KRsCH8Kb>G_f)^u`)2xHZZg@ kFj(SsX)lU~-29Zxv`X9>u8L!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!DFu0}-ur+;yMyb}^Eak-ar*59Z@vZv0cUm>k&pTB>%+v_ zL>KO5$hX$dT%OjCZ+KZwgH$NpatrE9}tKwOVKn)C@u6{1-oD!MNS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCjKus+S48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fg!5QEa z;>y5~21Nh=|1bR}cL^xSSQ6wH%;50s22hxRG0EHAg(;1@CIzItz$3Dlfq`2Xgc%uT z&5-~KYI?djhD02Gd&-az=rRU_S(*#$MH&Ct+}_La!2erNlL7}29dc#JDR7+eVN>UO_QmvAUQh^kMk%6I!u7RPhkwJ)|iIuU5m4S)2fuWUw!4j`adr>sx b=BH$)RpQogRXhvm5C#TMS3j3^P6!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!DvL>4nJ@ErzW#^d=bQhkV`ozE3Vcw>NzfPlNE|O~)s#xskZN-B7=`w(gj)LWV($iOj}j zfu?O1^AwgBYpDmj`3pNevyVOb%tbN&fOePao48}AL<3h|3s~vRz^ik1+KMgK9ueXT zu0MaCU?DVjW13!;k!$%fch=N>5mKpJ?-d+<e26Jne*aD=V@K2+-sj8Ejwq1zGr|u^Umx^B|vYembgZgq$HN4S|t~y0x1R~149#C z14CUSgAhX#D`OKY0~2inLn{M=C0>{IqG-s?PsvQH#I50~corj21B0ilpUXO@geCx& CUE&1* literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/update.png b/companion/src/themes/monoblue/update.png new file mode 100644 index 0000000000000000000000000000000000000000..9b8d95d22cd8794d7953e104a65215ff2a28029b GIT binary patch literal 693 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!D`^Iw6>BDSQDEiWc>cyikH_RL%wBd4)pUq?{nR4$!|&8zavvhEyk zjNQ&Q>kdQ3Rg-fZzY=0rs{#2`oL$b8aN=GoEYfZxXL#o1j{GIH*0Q z`@Q*=yKnj3&&_A5SDSfS+LP879&stgQu&X J%Q~loCIGAd%bEZH literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/wizard.png b/companion/src/themes/monoblue/wizard.png new file mode 100644 index 0000000000000000000000000000000000000000..83ab650227bb19f3a7f4be5757b872dda73e5ee5 GIT binary patch literal 973 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!Dp3{12Q46O_dmUvy-i=rVnKP5A*61Rq{;#rJ9 O4Gf;HelF{r5}E*2j5nPC literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/write_eeprom.png b/companion/src/themes/monoblue/write_eeprom.png new file mode 100644 index 0000000000000000000000000000000000000000..b3f30accce32ef88a920a29736f896a3c200206f GIT binary patch literal 988 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!DTllUjV#LWAF zXWG2EEBM42m4!Zjk$m?2+Z&aPWv1H$EaVdtW?hZ(J-l|u{;jp))32P~%erpMePhEp zUBVTQpK?Fwxc$h;Ue7WNXaQrAx4TOi7w^kXAcwQSBeED6&(}ei(Me-=1yDhXr;B5V z#p$V&GMx_@@U(3?s5MYY=a6FZ3Vn`~_ zk|V4#(@!$2(ObkeBlXdxO-x~DjB1^?h+Cg*i}#8OG~OL1&Tu+%qF9vG^4LHR+hDE; zU%m=1g|dlU5wlr}rmWLm(8BAb*=6i&Xxz{nHd~8VdhItgu7(r6T>aa&D0Q%e=(FCq zIc@#M&A0CwH~x*=Uw>hxywm>|FMg<4y?uFDk^Rvcw&!~;icc>nwdI_Wf8uSdX~KcO zhaY@AIccGFjo!YV4K^Bk_U+|QexS@+v+3p^DaE?YD)!E^+0tYjtS?-d{WqIQ>^Hwa zn$EL-jOxx^2i_e#UI~l@)e_f;l9a@fRIB8oR3OD*WMF8bYhb8rWDsI#Vr6V%WniLh nU}$Avu*B=qUK9YGCkm^>bP0l+XkKB&9OF literal 0 HcmV?d00001 diff --git a/companion/src/themes/monoblue/write_eeprom_file.png b/companion/src/themes/monoblue/write_eeprom_file.png new file mode 100644 index 0000000000000000000000000000000000000000..35a66792608770fa634b5e0f86ef7daa2ce162c0 GIT binary patch literal 951 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!DH!2y+#7(ycSjZ-TVJWeoTT+AKLE~Gfke{KYJ%9!+&8Vri?FF zDs(%Utwh;+xkMO(1;plu37gxtE@N2kD6nP*qa*`cfzr=QZA=EI8D|_$I?S{|_`pxz zf=mvFzLm`)lNgJ9Vz)hs)-Zg&a+RuFCV%UUP=TKZgOjdRHut*qen0Z$_q5a>W*M{2 zHZaV7$HcfrXw~&ed4d-rTzXbqQtaW`#}LFH<843JL6x~kaQf!RDU55)CNpdIT|Uzg zY9gy{dv%Md$zH#AO4s(B+m&+O{PqMV2`z_LdEb6iXYbx0%u>c)xaT_WH$^!fU6M|K~eC4g)+?w#_PAw-eyj4qFBT7;dOH!?pi&B9U zgOP!uiLQa6u8~2Ap^25TiIstgwt=CQfx!~5OM6i?!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!Dk zLR=Xb(nitH4T1mv|F2J-qzH`WDJ4OE!3^TothK544kS3gx3sV{Wem>-)xzufTW_Y%&MDgIBN{dn~4aDVSoVJ4Qv{J8>p$Ct;vi*E{R zeXw6qi2JC5Shm#s&w_soKYSJabw+754@XXsYh|3o8ZZ5Gj1l1#SA$RUZHl$yV&5yh zWmmJ`ES0hjkk&vHNe{srhh#w2fdm#G{HRn0&SXMsm#F))o^ z2Vq7hjoB4I1xGzy978Nl&z<};{IY|6Epl8+PkQc|L(o!-QJb4qjfbeWxDKTkWz6+G3N!!kW|_Vo$=tZVL+$hNwe z=c#RdnYjMM>Gji?esmR{zLLgizf|LLz;bzwZT||XV`kY* zTT8#XtladhR+7u?#L9_I3)Qk*HVf!Fyl&q1jZeZiY3_?x&t584wQxzF3oo9U_CWAr za_HB247Iy%$Dg^^uxefe~{@(kw Date: Mon, 20 Jan 2014 16:07:36 +0100 Subject: [PATCH 199/308] Adding the new theme files to the resources --- companion/src/companion.qrc | 172 ++++++++++++++++++++++++++++++++++++ 1 file changed, 172 insertions(+) diff --git a/companion/src/companion.qrc b/companion/src/companion.qrc index 5a86ebc50..f08f47b75 100644 --- a/companion/src/companion.qrc +++ b/companion/src/companion.qrc @@ -637,5 +637,177 @@ themes/classic/48/contributors.png themes/classic/48/stop.png themes/classic/48/write_eeprom.png + themes/monoblue/16/open.png + themes/monoblue/16/edit.png + themes/monoblue/16/information.png + themes/monoblue/16/configure.png + themes/monoblue/16/switch_dir.png + themes/monoblue/16/list.png + themes/monoblue/16/wizard.png + themes/monoblue/16/logs.png + themes/monoblue/16/new.png + themes/monoblue/16/save.png + themes/monoblue/16/recentdocument.png + themes/monoblue/16/simulate.png + themes/monoblue/16/changelog.png + themes/monoblue/16/copy.png + themes/monoblue/16/write_flash.png + themes/monoblue/16/read_eeprom_file.png + themes/monoblue/16/clear.png + themes/monoblue/16/play.png + themes/monoblue/16/fuses.png + themes/monoblue/16/arrow-right.png + themes/monoblue/16/exit.png + themes/monoblue/16/moveup.png + themes/monoblue/16/read_eeprom.png + themes/monoblue/16/cut.png + themes/monoblue/16/arrow-left.png + themes/monoblue/16/write_eeprom_file.png + themes/monoblue/16/library.png + themes/monoblue/16/profiles.png + themes/monoblue/16/paste.png + themes/monoblue/16/print.png + themes/monoblue/16/compare.png + themes/monoblue/16/customize.png + themes/monoblue/16/saveas.png + themes/monoblue/16/preferences.png + themes/monoblue/16/movedown.png + themes/monoblue/16/currentmodel.png + themes/monoblue/16/read_flash.png + themes/monoblue/16/duplicate.png + themes/monoblue/16/add.png + themes/monoblue/16/update.png + themes/monoblue/16/contributors.png + themes/monoblue/16/stop.png + themes/monoblue/16/write_eeprom.png + themes/monoblue/24/open.png + themes/monoblue/24/edit.png + themes/monoblue/24/information.png + themes/monoblue/24/configure.png + themes/monoblue/24/switch_dir.png + themes/monoblue/24/list.png + themes/monoblue/24/wizard.png + themes/monoblue/24/logs.png + themes/monoblue/24/new.png + themes/monoblue/24/save.png + themes/monoblue/24/recentdocument.png + themes/monoblue/24/simulate.png + themes/monoblue/24/changelog.png + themes/monoblue/24/copy.png + themes/monoblue/24/write_flash.png + themes/monoblue/24/read_eeprom_file.png + themes/monoblue/24/clear.png + themes/monoblue/24/play.png + themes/monoblue/24/fuses.png + themes/monoblue/24/arrow-right.png + themes/monoblue/24/exit.png + themes/monoblue/24/moveup.png + themes/monoblue/24/read_eeprom.png + themes/monoblue/24/cut.png + themes/monoblue/24/arrow-left.png + themes/monoblue/24/write_eeprom_file.png + themes/monoblue/24/library.png + themes/monoblue/24/profiles.png + themes/monoblue/24/paste.png + themes/monoblue/24/print.png + themes/monoblue/24/compare.png + themes/monoblue/24/customize.png + themes/monoblue/24/saveas.png + themes/monoblue/24/preferences.png + themes/monoblue/24/movedown.png + themes/monoblue/24/currentmodel.png + themes/monoblue/24/read_flash.png + themes/monoblue/24/duplicate.png + themes/monoblue/24/add.png + themes/monoblue/24/update.png + themes/monoblue/24/contributors.png + themes/monoblue/24/stop.png + themes/monoblue/24/write_eeprom.png + themes/monoblue/32/open.png + themes/monoblue/32/edit.png + themes/monoblue/32/information.png + themes/monoblue/32/configure.png + themes/monoblue/32/switch_dir.png + themes/monoblue/32/list.png + themes/monoblue/32/wizard.png + themes/monoblue/32/logs.png + themes/monoblue/32/new.png + themes/monoblue/32/save.png + themes/monoblue/32/recentdocument.png + themes/monoblue/32/simulate.png + themes/monoblue/32/changelog.png + themes/monoblue/32/copy.png + themes/monoblue/32/write_flash.png + themes/monoblue/32/read_eeprom_file.png + themes/monoblue/32/clear.png + themes/monoblue/32/play.png + themes/monoblue/32/fuses.png + themes/monoblue/32/arrow-right.png + themes/monoblue/32/exit.png + themes/monoblue/32/moveup.png + themes/monoblue/32/read_eeprom.png + themes/monoblue/32/cut.png + themes/monoblue/32/arrow-left.png + themes/monoblue/32/write_eeprom_file.png + themes/monoblue/32/library.png + themes/monoblue/32/profiles.png + themes/monoblue/32/paste.png + themes/monoblue/32/print.png + themes/monoblue/32/compare.png + themes/monoblue/32/customize.png + themes/monoblue/32/saveas.png + themes/monoblue/32/preferences.png + themes/monoblue/32/movedown.png + themes/monoblue/32/currentmodel.png + themes/monoblue/32/read_flash.png + themes/monoblue/32/duplicate.png + themes/monoblue/32/add.png + themes/monoblue/32/update.png + themes/monoblue/32/contributors.png + themes/monoblue/32/stop.png + themes/monoblue/32/write_eeprom.png + themes/monoblue/48/open.png + themes/monoblue/48/edit.png + themes/monoblue/48/information.png + themes/monoblue/48/configure.png + themes/monoblue/48/switch_dir.png + themes/monoblue/48/list.png + themes/monoblue/48/wizard.png + themes/monoblue/48/logs.png + themes/monoblue/48/new.png + themes/monoblue/48/save.png + themes/monoblue/48/recentdocument.png + themes/monoblue/48/simulate.png + themes/monoblue/48/changelog.png + themes/monoblue/48/copy.png + themes/monoblue/48/write_flash.png + themes/monoblue/48/read_eeprom_file.png + themes/monoblue/48/clear.png + themes/monoblue/48/play.png + themes/monoblue/48/fuses.png + themes/monoblue/48/arrow-right.png + themes/monoblue/48/exit.png + themes/monoblue/48/moveup.png + themes/monoblue/48/read_eeprom.png + themes/monoblue/48/cut.png + themes/monoblue/48/arrow-left.png + themes/monoblue/48/write_eeprom_file.png + themes/monoblue/48/library.png + themes/monoblue/48/profiles.png + themes/monoblue/48/paste.png + themes/monoblue/48/print.png + themes/monoblue/48/compare.png + themes/monoblue/48/customize.png + themes/monoblue/48/saveas.png + themes/monoblue/48/preferences.png + themes/monoblue/48/movedown.png + themes/monoblue/48/currentmodel.png + themes/monoblue/48/read_flash.png + themes/monoblue/48/duplicate.png + themes/monoblue/48/add.png + themes/monoblue/48/update.png + themes/monoblue/48/contributors.png + themes/monoblue/48/stop.png + themes/monoblue/48/write_eeprom.png From ba71d4ebda8ec15f4081f287384885c85f58af67 Mon Sep 17 00:00:00 2001 From: Dvogonen Date: Mon, 20 Jan 2014 16:44:02 +0100 Subject: [PATCH 200/308] New README --- README.md | 8 ++++++++ README.txt | 1 - 2 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 README.md delete mode 100644 README.txt diff --git a/README.md b/README.md new file mode 100644 index 000000000..1b9c5331e --- /dev/null +++ b/README.md @@ -0,0 +1,8 @@ +##OpenTX Next Branch + +You have found your way to the GitHub repository site for the OpenTX Next Branch. This code branch holds the source code for the ongoing development. + +The stable release code is not here, it is in the master branch. +Under no circumstances build and use software from this branch for real world application. At times you will be more or less guaranteed to crash your plane and destroy all your model settings. + +Refer to the opentx.wiki for information about setting up the tool chains for building OpenTX and OpenTX Companion as well as other development related issues. diff --git a/README.txt b/README.txt deleted file mode 100644 index 8f6415cbd..000000000 --- a/README.txt +++ /dev/null @@ -1 +0,0 @@ -[to be written] From 439cabe83c16eb67c25552c7e91814cfad2606a0 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Mon, 20 Jan 2014 16:50:06 +0100 Subject: [PATCH 201/308] Another code reduction. Settings are now stored in "OpenTX/Companion", instead of "companion/companion" --- companion/src/burnconfigdialog.cpp | 56 +-- companion/src/burndialog.cpp | 93 +++-- companion/src/contributorsdialog.cpp | 2 +- companion/src/customizesplashdialog.cpp | 20 +- companion/src/eeprominterface.cpp | 4 +- .../src/firmwares/er9x/er9xinterface.cpp | 2 +- .../firmwares/gruvin9x/gruvin9xinterface.cpp | 2 +- .../firmwares/opentx/open9xStockeeprom.cpp | 2 +- .../firmwares/opentx/opentxSky9xsimulator.cpp | 2 +- .../opentx/opentxTaranisSimulator.cpp | 2 +- .../src/firmwares/opentx/opentxinterface.cpp | 59 +-- .../src/firmwares/opentx/opentxinterface.h | 5 + .../src/firmwares/th9x/th9xinterface.cpp | 2 +- companion/src/generaledit.cpp | 8 +- companion/src/helpers.cpp | 25 +- companion/src/helpers.h | 7 +- companion/src/joystickdialog.cpp | 2 +- companion/src/lcdwidget.h | 2 +- companion/src/logsdialog.cpp | 6 +- companion/src/main.cpp | 107 +++--- companion/src/mainwindow.cpp | 349 +++++++----------- companion/src/mdichild.cpp | 65 ++-- companion/src/modeledit/curves.cpp | 10 +- companion/src/modeledit/customfunctions.cpp | 44 +-- companion/src/modeledit/customswitches.cpp | 16 +- companion/src/modeledit/inputs.cpp | 51 +-- companion/src/modeledit/mixes.cpp | 48 +-- companion/src/modeledit/modeledit.cpp | 8 +- companion/src/modeledit/setup.cpp | 4 +- companion/src/modeledit/telemetry.cpp | 2 +- companion/src/modelslist.cpp | 46 +-- companion/src/preferencesdialog.cpp | 46 +-- companion/src/simulatordialog.cpp | 4 +- companion/src/splashlibrary.cpp | 10 +- companion/src/xsimulatordialog.cpp | 4 +- 35 files changed, 465 insertions(+), 650 deletions(-) diff --git a/companion/src/burnconfigdialog.cpp b/companion/src/burnconfigdialog.cpp index d7ce28e6d..e0ea4a63e 100644 --- a/companion/src/burnconfigdialog.cpp +++ b/companion/src/burnconfigdialog.cpp @@ -83,7 +83,7 @@ burnConfigDialog::~burnConfigDialog() void burnConfigDialog::getSettings() { - QSettings settings("companion", "companion"); + QSettings settings; #if defined WIN32 || !defined __GNUC__ avrLoc = settings.value("avrdude_location", QFileInfo("avrdude.exe").absoluteFilePath()).toString(); sambaLoc = settings.value("samba_location", QFileInfo("sam-ba.exe").absoluteFilePath()).toString(); @@ -137,7 +137,7 @@ void burnConfigDialog::getSettings() void burnConfigDialog::putSettings() { - QSettings settings("companion", "companion"); + QSettings settings; settings.setValue("avrdude_location", avrLoc); settings.setValue("programmer", avrProgrammer); settings.setValue("mcu", avrMCU); @@ -279,10 +279,9 @@ void burnConfigDialog::listProgrammers() QStringList arguments; arguments << "-c?"; avrOutputDialog *ad = new avrOutputDialog(this, ui->avrdude_location->text(), arguments, "List available programmers", AVR_DIALOG_KEEP_OPEN, TRUE); - QIcon Icon; - populate_icon(&Icon,"list.png"); - ad->setWindowIcon(Icon); + ad->setWindowIcon(CompanionIcon("list.png")); ad->show(); + delete ad; } void burnConfigDialog::on_pushButton_3_clicked() @@ -298,10 +297,9 @@ void burnConfigDialog::on_pushButton_4_clicked() arguments << "-?"; avrOutputDialog *ad = new avrOutputDialog(this, ui->avrdude_location->text(), arguments, "Show help", AVR_DIALOG_KEEP_OPEN,TRUE); - QIcon Icon; - populate_icon(&Icon,"configure.png"); - ad->setWindowIcon(Icon); + ad->setWindowIcon(CompanionIcon("configure.png")); ad->show(); + delete ad; } @@ -317,10 +315,9 @@ void burnConfigDialog::readFuses() arguments << "-c" << avrProgrammer << "-p" << avrMCU << args << str; avrOutputDialog *ad = new avrOutputDialog(this, avrLoc, arguments, "Read Fuses",AVR_DIALOG_KEEP_OPEN,TRUE); - QIcon Icon; - populate_icon(&Icon,"fuses.png"); - ad->setWindowIcon(Icon); + ad->setWindowIcon(CompanionIcon("fuses.png")); ad->show(); + delete ad; } void burnConfigDialog::restFuses(bool eeProtect) @@ -344,7 +341,8 @@ void burnConfigDialog::restFuses(bool eeProtect) QString erStr = eeProtect ? "hfuse:w:0x11:m" : "hfuse:w:0x19:m"; str << "-U" << "lfuse:w:0xD7:m" << "-U" << erStr << "-U" << "efuse:w:0xFC:m"; //use hfuse = 0x81 to prevent eeprom being erased with every flashing - } else { + } + else { QString tempDir = QDir::tempPath(); QString tempFile; QString lfuses; @@ -352,10 +350,9 @@ void burnConfigDialog::restFuses(bool eeProtect) QStringList argread; argread << "-c" << avrProgrammer << "-p" << avrMCU << args <<"-U" << "lfuse:r:"+tempFile+":r" ; avrOutputDialog *ad = new avrOutputDialog(this, avrLoc, argread, "Reset Fuses",AVR_DIALOG_CLOSE_IF_SUCCESSFUL,FALSE); - QIcon Icon; - populate_icon(&Icon,"fuses.png"); - ad->setWindowIcon(Icon); + ad->setWindowIcon(CompanionIcon("fuses.png")); ad->exec(); + delete ad; QFile file(tempFile); if (file.exists() && file.size()==1) { file.open(QIODevice::ReadOnly); @@ -363,12 +360,14 @@ void burnConfigDialog::restFuses(bool eeProtect) file.read(bin_flash, 1); if (bin_flash[0]==0x0E) { lfuses="lfuse:w:0x0E:m"; - } else { + } + else { lfuses="lfuse:w:0x3F:m"; } file.close(); unlink(tempFile.toAscii()); - } else { + } + else { lfuses="lfuse:w:0x3F:m"; } @@ -379,14 +378,14 @@ void burnConfigDialog::restFuses(bool eeProtect) QStringList arguments; if (avrMCU=="m2560") { arguments << "-c" << avrProgrammer << "-p" << avrMCU << args << "-u" << str; - } else { + } + else { arguments << "-c" << avrProgrammer << "-p" << avrMCU << args << "-B" << "100" << "-u" << str; } avrOutputDialog *ad = new avrOutputDialog(this, avrLoc, arguments, "Reset Fuses",AVR_DIALOG_KEEP_OPEN,TRUE); - QIcon Icon; - populate_icon(&Icon,"fuses.png"); - ad->setWindowIcon(Icon); + ad->setWindowIcon(CompanionIcon("fuses.png")); ad->show(); + delete ad; } } @@ -398,24 +397,29 @@ void burnConfigDialog::on_advCtrChkB_toggled(bool checked) if (IS_TARANIS(eepromInterface->getBoard())) { ui->label_dfu2->show(); ui->dfuArgs->show(); - } else if (eepromInterface->getBoard()==BOARD_SKY9X) { + } + else if (eepromInterface->getBoard()==BOARD_SKY9X) { ui->label_sb2->show(); ui->arm_mcu->show(); - } else { + } + else { ui->label_av3->show(); ui->avrdude_mcu->show(); QMessageBox::warning(this, tr("Companion"), tr("WARNING!
Normally CPU type is automatically selected according to the chosen firmware.
If you change the CPU type the resulting eeprom could be inconsistent."), QMessageBox::Ok); } - } else { + } + else { if (IS_TARANIS(eepromInterface->getBoard())) { ui->label_dfu2->hide(); ui->dfuArgs->hide(); - } else if (eepromInterface->getBoard()==BOARD_SKY9X) { + } + else if (eepromInterface->getBoard()==BOARD_SKY9X) { ui->label_sb2->hide(); ui->arm_mcu->hide(); - } else { + } + else { ui->label_av3->hide(); ui->avrdude_mcu->hide(); } diff --git a/companion/src/burndialog.cpp b/companion/src/burndialog.cpp index 167bba702..f1d7f5482 100644 --- a/companion/src/burndialog.cpp +++ b/companion/src/burndialog.cpp @@ -16,9 +16,7 @@ burnDialog::burnDialog(QWidget *parent, int Type, QString * fileName, bool * bac hexType(Type) { ui->setupUi(this); - QIcon LibraryIcon; - populate_icon(&LibraryIcon,"library.png"); - ui->libraryButton->setIcon(LibraryIcon); + ui->libraryButton->setIcon(CompanionIcon("library.png")); ui->SplashFrame->hide(); ui->FramFWInfo->hide(); ui->EEbackupCB->hide(); @@ -29,11 +27,12 @@ burnDialog::burnDialog(QWidget *parent, int Type, QString * fileName, bool * bac ui->patchcalib_CB->hide(); ui->patchhw_CB->hide(); ui->InvertColorButton->setDisabled(true); - this->setWindowTitle(tr("Write firmware to TX")); + setWindowTitle(tr("Write firmware to TX")); if (IS_TARANIS(GetEepromInterface()->getBoard())) { ui->EEbackupCB->hide(); } - } else { + } + else { ui->FlashLoadButton->setText(tr("Browse for file")); ui->profile_label->hide(); ui->patchcalib_CB->hide(); @@ -54,11 +53,12 @@ burnDialog::burnDialog(QWidget *parent, int Type, QString * fileName, bool * bac ui->BurnFlashButton->setDisabled(true); ui->EEbackupCB->hide(); if (DocName.isEmpty()) { - this->setWindowTitle(tr("Write Models and Settings to TX")); - } else { - this->setWindowTitle(tr("Write Models and Settings in %1 to TX").arg(DocName)); + setWindowTitle(tr("Write Models and Settings to TX")); } - QSettings settings("companion", "companion"); + else { + setWindowTitle(tr("Write Models and Settings in %1 to TX").arg(DocName)); + } + QSettings settings; int profileid=settings.value("profileId", 1).toInt(); settings.beginGroup("Profiles"); QString profile=QString("profile%1").arg(profileid); @@ -72,10 +72,11 @@ burnDialog::burnDialog(QWidget *parent, int Type, QString * fileName, bool * bac ui->FWFileName->setText(*hexfileName); if (Type==2) { checkFw(*hexfileName); - } else { + } + else { burnraw=false; if (checkeEprom(*hexfileName)) { - QSettings settings("companion", "companion"); + QSettings settings; int profileid=settings.value("profileId", 1).toInt(); settings.beginGroup("Profiles"); QString profile=QString("profile%1").arg(profileid); @@ -100,12 +101,14 @@ burnDialog::burnDialog(QWidget *parent, int Type, QString * fileName, bool * bac if (!((DisplaySet.length()==6) && (BeeperSet.length()==4) && (HapticSet.length()==6) && (SpeakerSet.length()==6))) { ui->patchhw_CB->setDisabled(true); } - } else { + } + else { ui->profile_label->hide(); } if (!IS_TARANIS(GetEepromInterface()->getBoard())) { ui->EEpromCB->show(); - } else { + } + else { ui->EEpromCB->setChecked(false); } ui->BurnFlashButton->setEnabled(true); @@ -116,7 +119,7 @@ burnDialog::burnDialog(QWidget *parent, int Type, QString * fileName, bool * bac hexfileName->clear(); } else if (Type==2) { - QSettings settings("companion", "companion"); + QSettings settings; QString FileName; FileName = settings.value("lastFw").toString(); QFile file(FileName); @@ -127,14 +130,15 @@ burnDialog::burnDialog(QWidget *parent, int Type, QString * fileName, bool * bac resize(0, 0); } -burnDialog::~burnDialog() { +burnDialog::~burnDialog() +{ delete ui; } void burnDialog::on_FlashLoadButton_clicked() { QString fileName; - QSettings settings("companion", "companion"); + QSettings settings; ui->ImageLoadButton->setDisabled(true); ui->libraryButton->setDisabled(true); ui->InvertColorButton->setDisabled(true); @@ -153,7 +157,8 @@ void burnDialog::on_FlashLoadButton_clicked() if (hexType==2) { fileName = QFileDialog::getOpenFileName(this, tr("Open"), settings.value("lastFlashDir").toString(), FLASH_FILES_FILTER); checkFw(fileName); - } else { + } + else { QString fileName = QFileDialog::getOpenFileName(this,tr("Choose file to load Models and Settings from"), settings.value("lastDir").toString(), tr(EXTERNAL_EEPROM_FILES_FILTER)); if (checkeEprom(fileName)) { if (burnraw==false) { @@ -163,10 +168,12 @@ void burnDialog::on_FlashLoadButton_clicked() ui->patchhw_CB->show(); if (!IS_TARANIS(GetEepromInterface()->getBoard())) { ui->EEpromCB->show(); - } else { + } + else { ui->EEpromCB->setChecked(false); } - } else { + } + else { ui->BurnFlashButton->setEnabled(true); ui->profile_label->hide(); ui->patchcalib_CB->setChecked(false); @@ -184,10 +191,11 @@ void burnDialog::checkFw(QString fileName) if (fileName.isEmpty()) { return; } - QSettings settings("companion", "companion"); + QSettings settings; if (!IS_TARANIS(GetEepromInterface()->getBoard())) { ui->EEbackupCB->show(); - } else { + } + else { ui->EEbackupCB->setChecked(false); *backup=false; } @@ -226,23 +234,27 @@ void burnDialog::checkFw(QString fileName) ui->imageLabel->setPixmap(QPixmap::fromImage(image.scaled(ui->imageLabel->width(), ui->imageLabel->height()).convertToFormat(flash.getSplashFormat()))); ui->PatchFWCB->setEnabled(true); ui->PatchFWCB->setChecked(PatchFwCB); - } else { + } + else { ui->PatchFWCB->setDisabled(true); ui->PatchFWCB->setChecked(false); ui->PreferredImageCB->setDisabled(true); } - } else { + } + else { ui->PatchFWCB->setDisabled(true); ui->PatchFWCB->setChecked(false); ui->PreferredImageCB->setDisabled(true); } } - } else { + } + else { ui->FwImage->hide(); ui->ImageFileName->setText(""); ui->SplashFrame->hide(); } - } else { + } + else { QMessageBox::warning(this, tr("Warning"), tr("%1 is not a known firmware").arg(fileName)); ui->BurnFlashButton->setText(tr("Burn anyway !")); ui->BurnFlashButton->setEnabled(true); @@ -270,7 +282,8 @@ bool burnDialog::checkeEprom(QString fileName) } QTextStream inputStream(&file); XmlInterface(inputStream).load(radioData); - } else if (fileType==FILE_TYPE_HEX || fileType==FILE_TYPE_EEPE) { //read HEX file + } + else if (fileType==FILE_TYPE_HEX || fileType==FILE_TYPE_EEPE) { //read HEX file if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) { //reading HEX TEXT file QMessageBox::critical(this, tr("Error"),tr("Error opening file %1:\n%2.").arg(fileName).arg(file.errorString())); return false; @@ -313,7 +326,8 @@ bool burnDialog::checkeEprom(QString fileName) ui->FWFileName->setText(fileName); return true; } - } else if (fileType==FILE_TYPE_BIN) { //read binary + } + else if (fileType==FILE_TYPE_BIN) { //read binary int eeprom_size = file.size(); if (!file.open(QFile::ReadOnly)) { //reading binary file - TODO HEX support QMessageBox::critical(this, tr("Error"),tr("Error opening file %1:\n%2.").arg(fileName).arg(file.errorString())); @@ -346,7 +360,7 @@ void burnDialog::on_ImageLoadButton_clicked() supportedImageFormats += QLatin1String(" *.") + QImageReader::supportedImageFormats()[formatIndex]; } - QSettings settings("companion", "companion"); + QSettings settings; QString fileName = QFileDialog::getOpenFileName(this, tr("Open Image to load"), settings.value("lastImagesDir").toString(), tr("Images (%1)").arg(supportedImageFormats)); @@ -368,17 +382,16 @@ void burnDialog::on_ImageLoadButton_clicked() int gray; int width = image.width(); int height = image.height(); - for (int i = 0; i < width; ++i) - { - for (int j = 0; j < height; ++j) - { - col = image.pixel(i, j); - gray = qGray(col); - image.setPixel(i, j, qRgb(gray, gray, gray)); - } + for (int i = 0; i < width; ++i) { + for (int j = 0; j < height; ++j) { + col = image.pixel(i, j); + gray = qGray(col); + image.setPixel(i, j, qRgb(gray, gray, gray)); + } } ui->imageLabel->setPixmap(QPixmap::fromImage(image.scaled(ui->imageLabel->width(), ui->imageLabel->height()))); - } else { + } + else { ui->imageLabel->setPixmap(QPixmap::fromImage(image.scaled(ui->imageLabel->width(), ui->imageLabel->height()).convertToFormat(QImage::Format_Mono))); } ui->PatchFWCB->setEnabled(true); @@ -429,7 +442,7 @@ void burnDialog::on_BurnFlashButton_clicked() if (hexType==2) { QString fileName=ui->FWFileName->text(); if (!fileName.isEmpty()) { - QSettings settings("companion", "companion"); + QSettings settings; settings.setValue("lastFlashDir", QFileInfo(fileName).dir().absolutePath()); settings.setValue("lastFw", fileName); if (ui->PatchFWCB->isChecked()) { @@ -466,7 +479,7 @@ void burnDialog::on_BurnFlashButton_clicked() } } if (hexType==1) { - QSettings settings("companion", "companion"); + QSettings settings; int profileid=settings.value("profileId", 1).toInt(); settings.beginGroup("Profiles"); QString profile=QString("profile%1").arg(profileid); @@ -643,7 +656,7 @@ void burnDialog::on_PreferredImageCB_toggled(bool checked) { QString tmpFileName; if (checked) { - QSettings settings("companion", "companion"); + QSettings settings; QString ImageStr = settings.value("SplashImage", "").toString(); if (!ImageStr.isEmpty()) { QImage Image = qstring2image(ImageStr); diff --git a/companion/src/contributorsdialog.cpp b/companion/src/contributorsdialog.cpp index a13e15b45..8f3066b79 100644 --- a/companion/src/contributorsdialog.cpp +++ b/companion/src/contributorsdialog.cpp @@ -66,7 +66,7 @@ contributorsDialog::contributorsDialog(QWidget *parent, int contest, QString rnu } } str.append(" "); - str.append(""+tr("Honors go to Rafal Tomczak (RadioClone) and Thomas Husterer (th9x) \nof course. Also to Erez Raviv (er9x) and it's fantastic eePe, from which\ncompanion9x was forked out.")+""); + str.append(""+tr("Honors go to Rafal Tomczak (RadioClone) and Thomas Husterer (th9x) \nof course. Also to Erez Raviv (er9x) and it's fantastic eePe, from which\nOpenTX Companion was forked out.")+""); str.append(""+tr("Thank you all !!!")+""); str.append(""); str.append(""); diff --git a/companion/src/customizesplashdialog.cpp b/companion/src/customizesplashdialog.cpp index 5fa478291..30762142f 100644 --- a/companion/src/customizesplashdialog.cpp +++ b/companion/src/customizesplashdialog.cpp @@ -8,23 +8,23 @@ #include "flashinterface.h" customizeSplashDialog::customizeSplashDialog(QWidget *parent) : -QDialog(parent), -ui(new Ui::customizeSplashDialog) { + QDialog(parent), + ui(new Ui::customizeSplashDialog) +{ ui->setupUi(this); - QIcon LibraryIcon; - populate_icon(&LibraryIcon,"library.png"); - ui->libraryButton->setIcon(LibraryIcon); + ui->libraryButton->setIcon(CompanionIcon("library.png")); ui->HowToLabel->clear(); ui->HowToLabel->append("

YuqK%^lpKXc*OM_yCc1@716k=seveCb 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 literal 0 HcmV?d00001 diff --git a/companion/src/images/add.png b/companion/src/themes/monochrome/add.png similarity index 100% rename from companion/src/images/add.png rename to companion/src/themes/monochrome/add.png diff --git a/companion/src/images/arrow-left.png b/companion/src/themes/monochrome/arrow-left.png similarity index 100% rename from companion/src/images/arrow-left.png rename to companion/src/themes/monochrome/arrow-left.png diff --git a/companion/src/images/arrow-right.png b/companion/src/themes/monochrome/arrow-right.png similarity index 100% rename from companion/src/images/arrow-right.png rename to companion/src/themes/monochrome/arrow-right.png diff --git a/companion/src/images/changelog.png b/companion/src/themes/monochrome/changelog.png similarity index 100% rename from companion/src/images/changelog.png rename to companion/src/themes/monochrome/changelog.png diff --git a/companion/src/images/clear.png b/companion/src/themes/monochrome/clear.png similarity index 100% rename from companion/src/images/clear.png rename to companion/src/themes/monochrome/clear.png diff --git a/companion/src/images/compare.png b/companion/src/themes/monochrome/compare.png similarity index 100% rename from companion/src/images/compare.png rename to companion/src/themes/monochrome/compare.png diff --git a/companion/src/images/configure.png b/companion/src/themes/monochrome/configure.png similarity index 100% rename from companion/src/images/configure.png rename to companion/src/themes/monochrome/configure.png diff --git a/companion/src/images/contributors.png b/companion/src/themes/monochrome/contributors.png similarity index 100% rename from companion/src/images/contributors.png rename to companion/src/themes/monochrome/contributors.png diff --git a/companion/src/images/copy.png b/companion/src/themes/monochrome/copy.png similarity index 100% rename from companion/src/images/copy.png rename to companion/src/themes/monochrome/copy.png diff --git a/companion/src/images/currentmodel.png b/companion/src/themes/monochrome/currentmodel.png similarity index 100% rename from companion/src/images/currentmodel.png rename to companion/src/themes/monochrome/currentmodel.png diff --git a/companion/src/images/customize.png b/companion/src/themes/monochrome/customize.png similarity index 100% rename from companion/src/images/customize.png rename to companion/src/themes/monochrome/customize.png diff --git a/companion/src/images/cut.png b/companion/src/themes/monochrome/cut.png similarity index 100% rename from companion/src/images/cut.png rename to companion/src/themes/monochrome/cut.png diff --git a/companion/src/images/duplicate.png b/companion/src/themes/monochrome/duplicate.png similarity index 100% rename from companion/src/images/duplicate.png rename to companion/src/themes/monochrome/duplicate.png diff --git a/companion/src/images/edit.png b/companion/src/themes/monochrome/edit.png similarity index 100% rename from companion/src/images/edit.png rename to companion/src/themes/monochrome/edit.png diff --git a/companion/src/images/exit.png b/companion/src/themes/monochrome/exit.png similarity index 100% rename from companion/src/images/exit.png rename to companion/src/themes/monochrome/exit.png diff --git a/companion/src/images/fuses.png b/companion/src/themes/monochrome/fuses.png similarity index 100% rename from companion/src/images/fuses.png rename to companion/src/themes/monochrome/fuses.png diff --git a/companion/src/images/information.png b/companion/src/themes/monochrome/information.png similarity index 100% rename from companion/src/images/information.png rename to companion/src/themes/monochrome/information.png diff --git a/companion/src/images/library.png b/companion/src/themes/monochrome/library.png similarity index 100% rename from companion/src/images/library.png rename to companion/src/themes/monochrome/library.png diff --git a/companion/src/images/list.png b/companion/src/themes/monochrome/list.png similarity index 100% rename from companion/src/images/list.png rename to companion/src/themes/monochrome/list.png diff --git a/companion/src/images/logs.png b/companion/src/themes/monochrome/logs.png similarity index 100% rename from companion/src/images/logs.png rename to companion/src/themes/monochrome/logs.png diff --git a/companion/src/images/movedown.png b/companion/src/themes/monochrome/movedown.png similarity index 100% rename from companion/src/images/movedown.png rename to companion/src/themes/monochrome/movedown.png diff --git a/companion/src/images/moveup.png b/companion/src/themes/monochrome/moveup.png similarity index 100% rename from companion/src/images/moveup.png rename to companion/src/themes/monochrome/moveup.png diff --git a/companion/src/images/new.png b/companion/src/themes/monochrome/new.png similarity index 100% rename from companion/src/images/new.png rename to companion/src/themes/monochrome/new.png diff --git a/companion/src/images/open.png b/companion/src/themes/monochrome/open.png similarity index 100% rename from companion/src/images/open.png rename to companion/src/themes/monochrome/open.png diff --git a/companion/src/images/paste.png b/companion/src/themes/monochrome/paste.png similarity index 100% rename from companion/src/images/paste.png rename to companion/src/themes/monochrome/paste.png diff --git a/companion/src/themes/monochrome/play.png b/companion/src/themes/monochrome/play.png new file mode 100644 index 0000000000000000000000000000000000000000..8501a8b58649150bf75ce22871727e5111027c85 GIT binary patch literal 534 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7uRSk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+7m&H)T;i5Q?0wbq~1C!8%1{M`4GmJ^7 zti46;ui^pqozGQF4R$74)!sH>23mmt^<`Gq<{rOL`Y$T~_^yu@yBODeEm@P@zf}6b z^IsO%n%yt+Caf+0-CV|yz4w;<7UqcctiPKJ7_#TS;lIWBW`6HC_J<7Dsy;?#uy1(J z-@yhX-q~KtWBC2=!L`M2**09;{MXUCVXJ+`ml?Ym-~48t-}{h3Mw|Pgf}`2$4`Mpdp2%nIJR*UL){JeA2~eiAQ_-qi!iYR64u-aK(z)S z?b~Ovfao9m$4`a-Ivmfio`LZO3)g}41q?DQoCg9oFdQ@RU`UqHY53SIz}Pdtg)`xg zMhL^>^oKtgVt6{)9%MzBFidw|%(z2Nj_<$>GpUBhw=)=yZF$JB=lNnriOX)x1vS#V zKna-!!(0=F~6@vd$@?2>^$4&Mp7| literal 0 HcmV?d00001 diff --git a/companion/src/images/preferences.png b/companion/src/themes/monochrome/preferences.png similarity index 100% rename from companion/src/images/preferences.png rename to companion/src/themes/monochrome/preferences.png diff --git a/companion/src/images/print.png b/companion/src/themes/monochrome/print.png similarity index 100% rename from companion/src/images/print.png rename to companion/src/themes/monochrome/print.png diff --git a/companion/src/images/profiles.png b/companion/src/themes/monochrome/profiles.png similarity index 100% rename from companion/src/images/profiles.png rename to companion/src/themes/monochrome/profiles.png diff --git a/companion/src/images/read_eeprom.png b/companion/src/themes/monochrome/read_eeprom.png similarity index 100% rename from companion/src/images/read_eeprom.png rename to companion/src/themes/monochrome/read_eeprom.png diff --git a/companion/src/images/read_eeprom_file.png b/companion/src/themes/monochrome/read_eeprom_file.png similarity index 100% rename from companion/src/images/read_eeprom_file.png rename to companion/src/themes/monochrome/read_eeprom_file.png diff --git a/companion/src/images/read_flash.png b/companion/src/themes/monochrome/read_flash.png similarity index 100% rename from companion/src/images/read_flash.png rename to companion/src/themes/monochrome/read_flash.png diff --git a/companion/src/images/recentdocument.png b/companion/src/themes/monochrome/recentdocument.png similarity index 100% rename from companion/src/images/recentdocument.png rename to companion/src/themes/monochrome/recentdocument.png diff --git a/companion/src/images/save.png b/companion/src/themes/monochrome/save.png similarity index 100% rename from companion/src/images/save.png rename to companion/src/themes/monochrome/save.png diff --git a/companion/src/images/saveas.png b/companion/src/themes/monochrome/saveas.png similarity index 100% rename from companion/src/images/saveas.png rename to companion/src/themes/monochrome/saveas.png diff --git a/companion/src/images/simulate.png b/companion/src/themes/monochrome/simulate.png similarity index 100% rename from companion/src/images/simulate.png rename to companion/src/themes/monochrome/simulate.png diff --git a/companion/src/themes/monochrome/stop.png b/companion/src/themes/monochrome/stop.png new file mode 100644 index 0000000000000000000000000000000000000000..3bf2af6e958f4cb76597b5817813e8a2e2b9e271 GIT binary patch literal 312 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7uRSjKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cj&(|3p^r=85p>QL70(Y)*K0-AbW|YuPgf<9v*Q4{-;v&Du6;eJY5_^DsH{K z#K_BFz` Date: Sun, 19 Jan 2014 15:35:45 +0100 Subject: [PATCH 184/308] Allow themes and icon preferences --- companion/src/companion.qrc | 129 ++++++---- companion/src/mainwindow.cpp | 133 +++++++---- companion/src/mainwindow.h | 1 + companion/src/preferencesdialog.cpp | 4 + companion/src/preferencesdialog.ui | 355 ++++++++++++++++++---------- 5 files changed, 399 insertions(+), 223 deletions(-) diff --git a/companion/src/companion.qrc b/companion/src/companion.qrc index 6f84186da..f56405744 100644 --- a/companion/src/companion.qrc +++ b/companion/src/companion.qrc @@ -37,56 +37,13 @@ images/9xcursmin.png images/9xcursdown.png images/9xcursphoto.png - images/copy.png - images/cut.png - images/currentmodel.png - images/information.png - images/new.png - images/open.png - images/paste.png - images/save.png - images/saveas.png images/screenshot.png images/splash.png images/splasht.png images/companion-title.png - images/read_eeprom.png - images/write_eeprom.png - images/write_flash.png - images/read_flash.png - images/simulate.png - images/configure.png - images/customize.png - images/print.png - images/clear.png - images/add.png - images/edit.png - images/wizard.png - images/duplicate.png - images/fuses.png - images/list.png images/maps.png images/track.png images/track0.png - images/play.png - images/stop.png - images/read_eeprom_file.png - images/write_eeprom_file.png - images/moveup.png - images/movedown.png - images/update.png - images/contributors.png - images/changelog.png - images/preferences.png - images/switch_dir.png - images/exit.png - images/recentdocument.png - images/profiles.png - images/library.png - images/logs.png - images/arrow-left.png - images/arrow-right.png - images/compare.png images/x9b0.png images/x9l0.png images/x9l1.png @@ -335,5 +292,91 @@ images/library/30002.png images/library/30003.png images/library/30004.png + themes/monochrome/open.png + themes/monochrome/edit.png + themes/monochrome/information.png + themes/monochrome/configure.png + themes/monochrome/switch_dir.png + themes/monochrome/list.png + themes/monochrome/wizard.png + themes/monochrome/logs.png + themes/monochrome/new.png + themes/monochrome/save.png + themes/monochrome/recentdocument.png + themes/monochrome/simulate.png + themes/monochrome/changelog.png + themes/monochrome/copy.png + themes/monochrome/write_flash.png + themes/monochrome/read_eeprom_file.png + themes/monochrome/clear.png + themes/monochrome/play.png + themes/monochrome/fuses.png + themes/monochrome/arrow-right.png + themes/monochrome/exit.png + themes/monochrome/moveup.png + themes/monochrome/read_eeprom.png + themes/monochrome/cut.png + themes/monochrome/arrow-left.png + themes/monochrome/write_eeprom_file.png + themes/monochrome/library.png + themes/monochrome/profiles.png + themes/monochrome/paste.png + themes/monochrome/print.png + themes/monochrome/compare.png + themes/monochrome/customize.png + themes/monochrome/saveas.png + themes/monochrome/preferences.png + themes/monochrome/movedown.png + themes/monochrome/currentmodel.png + themes/monochrome/read_flash.png + themes/monochrome/duplicate.png + themes/monochrome/add.png + themes/monochrome/update.png + themes/monochrome/contributors.png + themes/monochrome/stop.png + themes/monochrome/write_eeprom.png + themes/classic/open.png + themes/classic/edit.png + themes/classic/information.png + themes/classic/configure.png + themes/classic/switch_dir.png + themes/classic/list.png + themes/classic/wizard.png + themes/classic/logs.png + themes/classic/new.png + themes/classic/save.png + themes/classic/recentdocument.png + themes/classic/simulate.png + themes/classic/changelog.png + themes/classic/copy.png + themes/classic/write_flash.png + themes/classic/read_eeprom_file.png + themes/classic/clear.png + themes/classic/play.png + themes/classic/fuses.png + themes/classic/arrow-right.png + themes/classic/exit.png + themes/classic/moveup.png + themes/classic/read_eeprom.png + themes/classic/cut.png + themes/classic/arrow-left.png + themes/classic/write_eeprom_file.png + themes/classic/library.png + themes/classic/profiles.png + themes/classic/paste.png + themes/classic/print.png + themes/classic/compare.png + themes/classic/customize.png + themes/classic/saveas.png + themes/classic/preferences.png + themes/classic/movedown.png + themes/classic/currentmodel.png + themes/classic/read_flash.png + themes/classic/duplicate.png + themes/classic/add.png + themes/classic/update.png + themes/classic/contributors.png + themes/classic/stop.png + themes/classic/write_eeprom.png diff --git a/companion/src/mainwindow.cpp b/companion/src/mainwindow.cpp index 948e2a8e7..eee308d16 100644 --- a/companion/src/mainwindow.cpp +++ b/companion/src/mainwindow.cpp @@ -95,6 +95,15 @@ downloadDialog_forWait(NULL) MaxRecentFiles=MAX_RECENT; QSettings settings("companion", "companion"); + int theme_set=settings.value("theme", 1).toInt(); + switch(theme_set) { + case 0: + Theme="classic"; + break; + default: + Theme="monochrome"; + break; + } restoreGeometry(settings.value("mainWindowGeometry").toByteArray()); createActions(); createMenus(); @@ -1060,14 +1069,14 @@ void MainWindow::burnFrom() QStringList str; str << path << tempFile; avrOutputDialog *ad = new avrOutputDialog(this,"", str, tr("Read Models and Settings From Tx")); //, AVR_DIALOG_KEEP_OPEN); - ad->setWindowIcon(QIcon(":/images/read_eeprom.png")); + ad->setWindowIcon(QIcon(":/themes/"+Theme+"/read_eeprom.png")); res = ad->exec(); sleep(1); } } else { QStringList str = GetReceiveEEpromCommand(tempFile); avrOutputDialog *ad = new avrOutputDialog(this, GetAvrdudeLocation(), str, tr("Read Models and Settings From Tx")); //, AVR_DIALOG_KEEP_OPEN); - ad->setWindowIcon(QIcon(":/images/read_eeprom.png")); + ad->setWindowIcon(QIcon(":/themes/"+Theme+"/read_eeprom.png")); res = ad->exec(); } if(QFileInfo(tempFile).exists() && res) { @@ -1117,14 +1126,14 @@ void MainWindow::burnExtenalToEEPROM() QStringList str; str << path << backupFile; avrOutputDialog *ad = new avrOutputDialog(this,"", str, tr("Backup Models and Settings From Tx")); //, AVR_DIALOG_KEEP_OPEN); - ad->setWindowIcon(QIcon(":/images/read_eeprom.png")); + ad->setWindowIcon(QIcon(":/themes/"+Theme+"/read_eeprom.png")); ad->exec(); sleep(1); } } else { QStringList str = GetReceiveEEpromCommand(backupFile); avrOutputDialog *ad = new avrOutputDialog(this, GetAvrdudeLocation(), str, tr("Backup Models and Settings From Tx")); - ad->setWindowIcon(QIcon(":/images/read_eeprom.png")); + ad->setWindowIcon(QIcon(":/themes/"+Theme+"/read_eeprom.png")); ad->exec(); sleep(1); } @@ -1134,7 +1143,7 @@ void MainWindow::burnExtenalToEEPROM() QString tempFlash = tempDir + "/flash.bin"; QStringList str = GetReceiveFlashCommand(tempFlash); avrOutputDialog *ad = new avrOutputDialog(this, GetAvrdudeLocation(), str, "Read Firmware From Tx"); - ad->setWindowIcon(QIcon(":/images/read_flash.png")); + ad->setWindowIcon(QIcon(":/themes/"+Theme+"/read_flash.png")); ad->exec(); sleep(1); QString restoreFile = tempDir + "/compat.bin"; @@ -1167,14 +1176,14 @@ void MainWindow::burnExtenalToEEPROM() QStringList str; str << path << backupFile; avrOutputDialog *ad = new avrOutputDialog(this,"", str, tr("Backup Models and Settings From Tx")); //, AVR_DIALOG_KEEP_OPEN); - ad->setWindowIcon(QIcon(":/images/read_eeprom.png")); + ad->setWindowIcon(QIcon(":/themes/"+Theme+"/read_eeprom.png")); ad->exec(); sleep(1); } } else { QStringList str = ((MainWindow *)this->parent())->GetReceiveEEpromCommand(backupFile); avrOutputDialog *ad = new avrOutputDialog(this, ((MainWindow *)this->parent())->GetAvrdudeLocation(), str, tr("Backup Models and Settings From Tx")); - ad->setWindowIcon(QIcon(":/images/read_eeprom.png")); + ad->setWindowIcon(QIcon(":/themes/"+Theme+"/read_eeprom.png")); ad->exec(); sleep(1); } @@ -1189,14 +1198,14 @@ void MainWindow::burnExtenalToEEPROM() QStringList str; str << fileName << path; avrOutputDialog *ad = new avrOutputDialog(this,"", str, tr("Write Models and Settings To Tx")); //, AVR_DIALOG_KEEP_OPEN); - ad->setWindowIcon(QIcon(":/images/read_eeprom.png")); + ad->setWindowIcon(QIcon(":/themes/"+Theme+"/read_eeprom.png")); ad->exec(); sleep(1); } } else { QStringList str = GetSendEEpromCommand(fileName); avrOutputDialog *ad = new avrOutputDialog(this, GetAvrdudeLocation(), str, "Write Models and Settings To Tx", AVR_DIALOG_SHOW_DONE); - ad->setWindowIcon(QIcon(":/images/write_eeprom.png")); + ad->setWindowIcon(QIcon(":/themes/"+Theme+"/write_eeprom.png")); ad->exec(); } } @@ -1361,13 +1370,13 @@ void MainWindow::burnToFlash(QString fileToFlash) } QStringList str = GetReceiveEEpromCommand(backupFile); avrOutputDialog *ad = new avrOutputDialog(this, GetAvrdudeLocation(), str, tr("Backup Models and Settings From Tx"), AVR_DIALOG_CLOSE_IF_SUCCESSFUL); - ad->setWindowIcon(QIcon(":/images/read_eeprom.png")); + ad->setWindowIcon(QIcon(":/themes/"+Theme+"/read_eeprom.png")); int res = ad->exec(); if (QFileInfo(backupFile).exists() && res) { sleep(1); QStringList str = GetSendFlashCommand(fileName); avrOutputDialog *ad = new avrOutputDialog(this, GetAvrdudeLocation(), str, tr("Write Firmware To Tx"), AVR_DIALOG_CLOSE_IF_SUCCESSFUL); - ad->setWindowIcon(QIcon(":/images/write_flash.png")); + ad->setWindowIcon(QIcon(":/themes/"+Theme+"/write_flash.png")); int res = ad->exec(); if (res) { QString restoreFile = tempDir + "/restore.bin"; @@ -1378,7 +1387,7 @@ void MainWindow::burnToFlash(QString fileToFlash) sleep(1); QStringList str = GetSendEEpromCommand(restoreFile); avrOutputDialog *ad = new avrOutputDialog(this, GetAvrdudeLocation(), str, tr("Restore Models and Settings To Tx"), AVR_DIALOG_CLOSE_IF_SUCCESSFUL); - ad->setWindowIcon(QIcon(":/images/write_eeprom.png")); + ad->setWindowIcon(QIcon(":/themes/"+Theme+"/write_eeprom.png")); res=ad->exec(); if (!res) { QMessageBox::warning(this, tr("Restore failed"), tr("Could not restore Models and Settings to TX. The models and settings data file can be found at: %1").arg(backupFile)); @@ -1403,14 +1412,14 @@ void MainWindow::burnToFlash(QString fileToFlash) QString backupFile=backupPath+"/backup-"+QDateTime().currentDateTime().toString("yyyy-MM-dd-hhmmss")+".bin"; QStringList str = GetReceiveEEpromCommand(backupFile); avrOutputDialog *ad = new avrOutputDialog(this, GetAvrdudeLocation(), str, tr("Backup Models and Settings From Tx")); - ad->setWindowIcon(QIcon(":/images/read_eeprom.png")); + ad->setWindowIcon(QIcon(":/themes/"+Theme+"/read_eeprom.png")); ad->exec(); sleep(1); } QStringList str = GetSendFlashCommand(fileName); avrOutputDialog *ad = new avrOutputDialog(this, GetAvrdudeLocation(), str, tr("Write Firmware To Tx"), AVR_DIALOG_SHOW_DONE); - ad->setWindowIcon(QIcon(":/images/write_flash.png")); + ad->setWindowIcon(QIcon(":/themes/"+Theme+"/write_flash.png")); ad->exec(); } } @@ -1431,14 +1440,14 @@ void MainWindow::burnExtenalFromEEPROM() QStringList str; str << path << fileName; avrOutputDialog *ad = new avrOutputDialog(this,"", str, tr("Read Models and Settings From Tx")); //, AVR_DIALOG_KEEP_OPEN); - ad->setWindowIcon(QIcon(":/images/read_eeprom.png")); + ad->setWindowIcon(QIcon(":/themes/"+Theme+"/read_eeprom.png")); ad->exec(); } } else { settings.setValue("lastDir", QFileInfo(fileName).dir().absolutePath()); QStringList str = GetReceiveEEpromCommand(fileName); avrOutputDialog *ad = new avrOutputDialog(this, GetAvrdudeLocation(), str, tr("Read Models and Settings From Tx")); - ad->setWindowIcon(QIcon(":/images/read_eeprom.png")); + ad->setWindowIcon(QIcon(":/themes/"+Theme+"/read_eeprom.png")); ad->exec(); } } @@ -1456,7 +1465,7 @@ void MainWindow::burnFromFlash() settings.setValue("lastFlashDir",QFileInfo(fileName).dir().absolutePath()); QStringList str = GetReceiveFlashCommand(fileName); avrOutputDialog *ad = new avrOutputDialog(this, GetAvrdudeLocation(), str, "Read Firmware From Tx"); - ad->setWindowIcon(QIcon(":/images/read_flash.png")); + ad->setWindowIcon(QIcon(":/themes/"+Theme+"/read_flash.png")); ad->exec(); } @@ -1596,137 +1605,137 @@ MdiChild *MainWindow::createMdiChild() void MainWindow::createActions() { - newAct = new QAction(QIcon(":/images/new.png"), tr("&New"), this); + newAct = new QAction(QIcon(":/themes/"+Theme+"/new.png"), tr("&New"), this); newAct->setShortcuts(QKeySequence::New); newAct->setStatusTip(tr("Create a new file")); connect(newAct, SIGNAL(triggered()), this, SLOT(newFile())); - openAct = new QAction(QIcon(":/images/open.png"), tr("&Open..."), this); + openAct = new QAction(QIcon(":/themes/"+Theme+"/open.png"), tr("&Open..."), this); openAct->setShortcuts(QKeySequence::Open); openAct->setStatusTip(tr("Open an existing file")); connect(openAct, SIGNAL(triggered()), this, SLOT(openFile())); - loadbackupAct = new QAction(QIcon(":/images/open.png"), tr("&loadBackup..."), this); + loadbackupAct = new QAction(QIcon(":/themes/"+Theme+"/open.png"), tr("&loadBackup..."), this); loadbackupAct->setStatusTip(tr("Load backup from file")); connect(loadbackupAct, SIGNAL(triggered()), this, SLOT(loadBackup())); - saveAct = new QAction(QIcon(":/images/save.png"), tr("&Save"), this); + saveAct = new QAction(QIcon(":/themes/"+Theme+"/save.png"), tr("&Save"), this); saveAct->setShortcuts(QKeySequence::Save); saveAct->setStatusTip(tr("Save the document to disk")); connect(saveAct, SIGNAL(triggered()), this, SLOT(save())); - saveAsAct = new QAction(QIcon(":/images/saveas.png"), tr("Save &As..."), this); + saveAsAct = new QAction(QIcon(":/themes/"+Theme+"/saveas.png"), tr("Save &As..."), this); saveAsAct->setShortcuts(QKeySequence::SaveAs); saveAsAct->setStatusTip(tr("Save the document under a new name")); connect(saveAsAct, SIGNAL(triggered()), this, SLOT(saveAs())); - logsAct = new QAction(QIcon(":/images/logs.png"), tr("Lo&gs"), this); + logsAct = new QAction(QIcon(":/themes/"+Theme+"/logs.png"), tr("Lo&gs"), this); logsAct->setShortcut(tr("Ctrl+G")); logsAct->setStatusTip(tr("Open log file")); connect(logsAct, SIGNAL(triggered()), this, SLOT(logFile())); - preferencesAct = new QAction(QIcon(":/images/preferences.png"), tr("&Preferences..."), this); + preferencesAct = new QAction(QIcon(":/themes/"+Theme+"/preferences.png"), tr("&Preferences..."), this); preferencesAct->setStatusTip(tr("Edit general preferences")); connect(preferencesAct, SIGNAL(triggered()), this, SLOT(preferences())); - checkForUpdatesAct = new QAction(QIcon(":/images/update.png"), tr("&Check for updates..."), this); + checkForUpdatesAct = new QAction(QIcon(":/themes/"+Theme+"/update.png"), tr("&Check for updates..."), this); checkForUpdatesAct->setStatusTip(tr("Check for new version of Companion")); connect(checkForUpdatesAct, SIGNAL(triggered()), this, SLOT(doUpdates())); - contributorsAct = new QAction(QIcon(":/images/contributors.png"), tr("Contributors &List..."), this); + contributorsAct = new QAction(QIcon(":/themes/"+Theme+"/contributors.png"), tr("Contributors &List..."), this); contributorsAct->setStatusTip(tr("Show Companion contributors list")); connect(contributorsAct, SIGNAL(triggered()), this, SLOT(contributors())); - changelogAct = new QAction(QIcon(":/images/changelog.png"), tr("ChangeLog..."), this); + changelogAct = new QAction(QIcon(":/themes/"+Theme+"/changelog.png"), tr("ChangeLog..."), this); changelogAct->setStatusTip(tr("Show Companion changelog")); connect(changelogAct, SIGNAL(triggered()), this, SLOT(changelog())); - fwchangelogAct = new QAction(QIcon(":/images/changelog.png"), tr("Firmware ChangeLog..."), this); + fwchangelogAct = new QAction(QIcon(":/themes/"+Theme+"/changelog.png"), tr("Firmware ChangeLog..."), this); fwchangelogAct->setStatusTip(tr("Show firmware changelog")); connect(fwchangelogAct, SIGNAL(triggered()), this, SLOT(fwchangelog())); - compareAct = new QAction(QIcon(":/images/compare.png"), tr("Compare..."), this); + compareAct = new QAction(QIcon(":/themes/"+Theme+"/compare.png"), tr("Compare..."), this); compareAct->setStatusTip(tr("Compare models")); compareAct->setEnabled(false); connect(compareAct, SIGNAL(triggered()), this, SLOT(compare())); - customizeSplashAct = new QAction(QIcon(":/images/customize.png"), tr("Customize your &TX..."), this); + customizeSplashAct = new QAction(QIcon(":/themes/"+Theme+"/customize.png"), tr("Customize your &TX..."), this); customizeSplashAct->setStatusTip(tr("Customize the splash screen of your TX")); connect(customizeSplashAct, SIGNAL(triggered()), this, SLOT(customizeSplash())); //! [0] - exitAct = new QAction(QIcon(":/images/exit.png"), tr("E&xit"), this); + exitAct = new QAction(QIcon(":/themes/"+Theme+"/exit.png"), tr("E&xit"), this); exitAct->setShortcuts(QKeySequence::Quit); exitAct->setStatusTip(tr("Exit the application")); connect(exitAct, SIGNAL(triggered()), qApp, SLOT(closeAllWindows())); //! [0] - cutAct = new QAction(QIcon(":/images/cut.png"), tr("Cu&t"), this); + cutAct = new QAction(QIcon(":/themes/"+Theme+"/cut.png"), tr("Cu&t"), this); cutAct->setShortcuts(QKeySequence::Cut); cutAct->setStatusTip(tr("Cut the current selection's contents to the " "clipboard")); connect(cutAct, SIGNAL(triggered()), this, SLOT(cut())); - copyAct = new QAction(QIcon(":/images/copy.png"), tr("&Copy"), this); + copyAct = new QAction(QIcon(":/themes/"+Theme+"/copy.png"), tr("&Copy"), this); copyAct->setShortcuts(QKeySequence::Copy); copyAct->setStatusTip(tr("Copy the current selection's contents to the " "clipboard")); connect(copyAct, SIGNAL(triggered()), this, SLOT(copy())); - pasteAct = new QAction(QIcon(":/images/paste.png"), tr("&Paste"), this); + pasteAct = new QAction(QIcon(":/themes/"+Theme+"/paste.png"), tr("&Paste"), this); pasteAct->setShortcuts(QKeySequence::Paste); pasteAct->setStatusTip(tr("Paste the clipboard's contents into the current " "selection")); connect(pasteAct, SIGNAL(triggered()), this, SLOT(paste())); - burnToAct = new QAction(QIcon(":/images/write_eeprom.png"), tr("&Write Models and Settings To Tx"), this); + burnToAct = new QAction(QIcon(":/themes/"+Theme+"/write_eeprom.png"), tr("&Write Models and Settings To Tx"), this); burnToAct->setShortcut(tr("Ctrl+Alt+W")); burnToAct->setStatusTip(tr("Write Models and Settings to transmitter")); connect(burnToAct,SIGNAL(triggered()),this,SLOT(burnTo())); - burnFromAct = new QAction(QIcon(":/images/read_eeprom.png"), tr("&Read Models and Settings From Tx"), this); + burnFromAct = new QAction(QIcon(":/themes/"+Theme+"/read_eeprom.png"), tr("&Read Models and Settings From Tx"), this); burnFromAct->setShortcut(tr("Ctrl+Alt+R")); burnFromAct->setStatusTip(tr("Read Models and Settings from transmitter")); connect(burnFromAct,SIGNAL(triggered()),this,SLOT(burnFrom())); - burnToFlashAct = new QAction(QIcon(":/images/write_flash.png"), tr("Write Firmware"), this); + burnToFlashAct = new QAction(QIcon(":/themes/"+Theme+"/write_flash.png"), tr("Write Firmware"), this); burnToFlashAct->setStatusTip(tr("Write firmware to transmitter")); connect(burnToFlashAct,SIGNAL(triggered()),this,SLOT(burnToFlash())); - burnExtenalToEEPROMAct = new QAction(QIcon(":/images/write_eeprom_file.png"), tr("Write Models and Settings from file to Tx"), this); + burnExtenalToEEPROMAct = new QAction(QIcon(":/themes/"+Theme+"/write_eeprom_file.png"), tr("Write Models and Settings from file to Tx"), this); burnExtenalToEEPROMAct->setStatusTip(tr("Write Models and Settings from file to transmitter")); connect(burnExtenalToEEPROMAct,SIGNAL(triggered()),this,SLOT(burnExtenalToEEPROM())); - burnExtenalFromEEPROMAct = new QAction(QIcon(":/images/read_eeprom_file.png"), tr("Save transmitter Models and Settings to file"), this); + burnExtenalFromEEPROMAct = new QAction(QIcon(":/themes/"+Theme+"/read_eeprom_file.png"), tr("Save transmitter Models and Settings to file"), this); burnExtenalFromEEPROMAct->setStatusTip(tr("Save the Models and Settings from the transmitter to a file")); connect(burnExtenalFromEEPROMAct,SIGNAL(triggered()),this,SLOT(burnExtenalFromEEPROM())); - burnFromFlashAct = new QAction(QIcon(":/images/read_flash.png"), tr("Read Firmware"), this); + burnFromFlashAct = new QAction(QIcon(":/themes/"+Theme+"/read_flash.png"), tr("Read Firmware"), this); burnFromFlashAct->setStatusTip(tr("Read firmware from transmitter")); connect(burnFromFlashAct,SIGNAL(triggered()),this,SLOT(burnFromFlash())); - burnConfigAct = new QAction(QIcon(":/images/configure.png"), tr("&Configure..."), this); + burnConfigAct = new QAction(QIcon(":/themes/"+Theme+"/configure.png"), tr("&Configure..."), this); burnConfigAct->setStatusTip(tr("Configure software for reading from and writing to the transmitter")); connect(burnConfigAct,SIGNAL(triggered()),this,SLOT(burnConfig())); EEPROMInterface *eepromInterface = GetEepromInterface(); if (!IS_ARM(eepromInterface->getBoard())) { - burnListAct = new QAction(QIcon(":/images/list.png"), tr("&List programmers"), this); + burnListAct = new QAction(QIcon(":/themes/"+Theme+"/list.png"), tr("&List programmers"), this); burnListAct->setStatusTip(tr("List available programmers")); connect(burnListAct,SIGNAL(triggered()),this,SLOT(burnList())); - burnFusesAct = new QAction(QIcon(":/images/fuses.png"), tr("&Fuses..."), this); + burnFusesAct = new QAction(QIcon(":/themes/"+Theme+"/fuses.png"), tr("&Fuses..."), this); burnFusesAct->setStatusTip(tr("Show fuses dialog")); connect(burnFusesAct,SIGNAL(triggered()),this,SLOT(burnFuses())); } - simulateAct = new QAction(QIcon(":/images/simulate.png"), tr("&Simulate"), this); + simulateAct = new QAction(QIcon(":/themes/"+Theme+"/simulate.png"), tr("&Simulate"), this); simulateAct->setShortcut(tr("Alt+S")); simulateAct->setStatusTip(tr("Simulate selected model.")); simulateAct->setEnabled(false); connect(simulateAct,SIGNAL(triggered()),this,SLOT(simulate())); - printAct = new QAction(QIcon(":/images/print.png"), tr("&Print"), this); + printAct = new QAction(QIcon(":/themes/"+Theme+"/print.png"), tr("&Print"), this); printAct->setShortcut(tr("Ctrl+P")); printAct->setStatusTip(tr("Print current model.")); printAct->setEnabled(false); @@ -1766,11 +1775,11 @@ void MainWindow::createActions() separatorAct = new QAction(this); separatorAct->setSeparator(true); - aboutAct = new QAction(QIcon(":/images/information.png"), tr("&About"), this); + aboutAct = new QAction(QIcon(":/themes/"+Theme+"/information.png"), tr("&About"), this); aboutAct->setStatusTip(tr("Show the application's About box")); connect(aboutAct, SIGNAL(triggered()), this, SLOT(about())); - switchLayoutDirectionAct = new QAction(QIcon(":/images/switch_dir.png"), tr("Switch layout direction"), this); + switchLayoutDirectionAct = new QAction(QIcon(":/themes/"+Theme+"/switch_dir.png"), tr("Switch layout direction"), this); switchLayoutDirectionAct->setStatusTip(tr("Switch layout Left/Right")); connect(switchLayoutDirectionAct, SIGNAL(triggered()), this, SLOT(switchLayoutDirection())); for (int i = 0; i < MaxRecentFiles; ++i) { @@ -1800,7 +1809,7 @@ void MainWindow::createMenus() fileMenu->addAction(saveAct); fileMenu->addAction(saveAsAct); fileMenu->addMenu(recentFileMenu); - recentFileMenu->setIcon(QIcon(":/images/recentdocument.png")); + recentFileMenu->setIcon(QIcon(":/themes/"+Theme+"/recentdocument.png")); for ( int i = 0; i < MaxRecentFiles; ++i) recentFileMenu->addAction(recentFileActs[i]); fileMenu->addSeparator(); @@ -1813,7 +1822,7 @@ void MainWindow::createMenus() fileMenu->addAction(preferencesAct); fileMenu->addMenu(profilesMenu); - profilesMenu->setIcon(QIcon(":/images/profiles.png")); + profilesMenu->setIcon(QIcon(":/themes/"+Theme+"/profiles.png")); for ( int i = 0; i < MAX_PROFILES; ++i) profilesMenu->addAction(profileActs[i]); fileMenu->addAction(switchLayoutDirectionAct); @@ -1878,14 +1887,32 @@ QMenu *MainWindow::createProfilesMenu() void MainWindow::createToolBars() { + QSettings settings("companion", "companion"); + int icon_size=settings.value("icon_size",1 ).toInt(); + QSize size; + switch(icon_size) { + case 0: + size=QSize(16,16); + break; + case 1: + size=QSize(24,24); + break; + case 3: + size=QSize(48,48); + break; + default: + size=QSize(32,32); + break; + } fileToolBar = addToolBar(tr("File")); + fileToolBar->setIconSize(size); fileToolBar->setObjectName("File"); fileToolBar->addAction(newAct); fileToolBar->addAction(openAct); QToolButton * recentToolButton = new QToolButton; recentToolButton->setPopupMode(QToolButton::InstantPopup); recentToolButton->setMenu(createRecentFileMenu()); - recentToolButton->setIcon(QIcon(":/images/recentdocument.png")); + recentToolButton->setIcon(QIcon(":/themes/"+Theme+"/recentdocument.png")); recentToolButton->setToolTip(tr("Recent Files")); fileToolBar->addWidget(recentToolButton); fileToolBar->addAction(saveAct); @@ -1895,11 +1922,10 @@ void MainWindow::createToolBars() profileButton = new QToolButton; profileButton->setPopupMode(QToolButton::InstantPopup); profileButton->setMenu(createProfilesMenu()); - profileButton->setIcon(QIcon(":/images/profiles.png")); + profileButton->setIcon(QIcon(":/themes/"+Theme+"/profiles.png")); profileButton->setToolTip(tr("Firmware Profiles")); fileToolBar->addWidget(profileButton); bool notfound=true; - QSettings settings("companion", "companion"); settings.beginGroup("Profiles"); for (int i=0; iaddAction(compareAct); editToolBar = addToolBar(tr("Edit")); + editToolBar->setIconSize(size); editToolBar->setObjectName("Edit"); editToolBar->addAction(cutAct); editToolBar->addAction(copyAct); @@ -1925,6 +1952,7 @@ void MainWindow::createToolBars() burnToolBar = new QToolBar(tr("Write")); addToolBar( Qt::LeftToolBarArea, burnToolBar ); + burnToolBar->setIconSize(size); burnToolBar->setObjectName("Write"); burnToolBar->addAction(burnToAct); burnToolBar->addAction(burnFromAct); @@ -1938,6 +1966,7 @@ void MainWindow::createToolBars() burnToolBar->addAction(burnConfigAct); helpToolBar = addToolBar(tr("Help")); + helpToolBar->setIconSize(size); helpToolBar->setObjectName("Help"); helpToolBar->addAction(checkForUpdatesAct); helpToolBar->addAction(aboutAct); diff --git a/companion/src/mainwindow.h b/companion/src/mainwindow.h index 300bac507..d26667f75 100644 --- a/companion/src/mainwindow.h +++ b/companion/src/mainwindow.h @@ -138,6 +138,7 @@ private: void updateProfilesActions(); int getFileType(const QString &fullFileName); QString FindTaranisPath(); + QString Theme; QString strippedName(const QString &fullFileName); MdiChild *activeMdiChild(); diff --git a/companion/src/preferencesdialog.cpp b/companion/src/preferencesdialog.cpp index 1e97e5785..b0f59b38d 100644 --- a/companion/src/preferencesdialog.cpp +++ b/companion/src/preferencesdialog.cpp @@ -265,6 +265,8 @@ void preferencesDialog::writeValues() settings.setValue("rename_firmware_files", ui->renameFirmware->isChecked()); settings.setValue("wizardEnable", ui->wizardEnable_ChkB->isChecked()); settings.setValue("show_splash", ui->showSplash->isChecked()); + settings.setValue("theme", ui->theme_CB->currentIndex()); + settings.setValue("icon_size", ui->iconSize_CB->currentIndex()); settings.setValue("simuSW", ui->simuSW->isChecked()); settings.setValue("history_size", ui->historySize->value()); settings.setValue("burnFirmware", ui->burnFirmware->isChecked()); @@ -404,6 +406,8 @@ void preferencesDialog::initSettings() ui->renameFirmware->setChecked(settings.value("rename_firmware_files", false).toBool()); ui->wizardEnable_ChkB->setChecked(settings.value("wizardEnable", true).toBool()); ui->showSplash->setChecked(settings.value("show_splash", true).toBool()); + ui->theme_CB->setCurrentIndex(settings.value("theme", 1).toInt()); + ui->iconSize_CB->setCurrentIndex(settings.value("icon_size", 2).toInt()); ui->historySize->setValue(settings.value("history_size", 10).toInt()); ui->backLightColor->setCurrentIndex(settings.value("backLight", 0).toInt()); ui->startupCheck_fw->setChecked(settings.value("startup_check_fw", true).toBool()); diff --git a/companion/src/preferencesdialog.ui b/companion/src/preferencesdialog.ui index 021a38b58..f53946ab0 100644 --- a/companion/src/preferencesdialog.ui +++ b/companion/src/preferencesdialog.ui @@ -7,7 +7,7 @@ 0 0 685 - 710 + 766 @@ -26,7 +26,7 @@ Preferences - + :/images/preferences.png:/images/preferences.png @@ -39,27 +39,57 @@ 4 - - - - - 0 - 0 - - - - Show Splash Screen - - + + + + + + + 40 + 0 + + + + 15 + + + 10 + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Ask use of wizard for new models + + + true + + + + - + Qt::Horizontal - + @@ -99,17 +129,7 @@ - - - - Ask use of wizard for new models - - - true - - - - + @@ -161,7 +181,7 @@ ... - + :/images/clear.png:/images/clear.png @@ -171,14 +191,14 @@ - + Remember switches in simulator - + @@ -207,7 +227,7 @@ - + 6 @@ -228,7 +248,7 @@ ... - + :/images/library.png:/images/library.png @@ -248,33 +268,27 @@ - - + + - - - - true + Simulator capture folder - - + + - - 40 + + 0 0 - - 15 - - - 10 + + Language (requires restart) - + @@ -418,7 +432,7 @@ This is used by the templated to determine which channel goes to what number out - + @@ -431,7 +445,7 @@ This is used by the templated to determine which channel goes to what number out - + @@ -459,7 +473,7 @@ This is used by the templated to determine which channel goes to what number out - + 1 @@ -483,7 +497,7 @@ This is used by the templated to determine which channel goes to what number out - + @@ -507,7 +521,7 @@ This is used by the templated to determine which channel goes to what number out - + @@ -520,7 +534,7 @@ This is used by the templated to determine which channel goes to what number out - + @@ -563,7 +577,7 @@ This is used by the templated to determine which channel goes to what number out - + @@ -590,7 +604,7 @@ This is used by the templated to determine which channel goes to what number out - + @@ -638,20 +652,7 @@ This is used by the templated to determine which channel goes to what number out - - - - - 0 - 0 - - - - Language (requires restart) - - - - + 1 @@ -682,7 +683,7 @@ This is used by the templated to determine which channel goes to what number out - + @@ -695,7 +696,7 @@ This is used by the templated to determine which channel goes to what number out - + @@ -711,7 +712,7 @@ This is used by the templated to determine which channel goes to what number out - + Mode selection: @@ -759,7 +760,7 @@ Mode 4: - + @@ -772,57 +773,21 @@ Mode 4: - - - - - 0 - 0 - - - - - Include companion splashes - - - - - Only user defined splashes - - - - - - - - - 0 - 0 - - - - Splash library behaviour - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - + Profile slot - + Automatic Backup Folder - + @@ -847,7 +812,7 @@ Mode 4: - + Qt::Vertical @@ -863,7 +828,7 @@ Mode 4: - + @@ -890,7 +855,7 @@ Mode 4: - + QLayout::SetMaximumSize @@ -981,7 +946,7 @@ May be different from firmware language - + @@ -1021,13 +986,6 @@ May be different from firmware language - - - - Simulator capture folder - - - @@ -1041,14 +999,14 @@ May be different from firmware language - + Qt::Horizontal - + QLayout::SetMaximumSize @@ -1601,7 +1559,7 @@ May be different from firmware language - + @@ -1619,13 +1577,154 @@ May be different from firmware language - + Google Earth Executable + + + + + 0 + 0 + + + + Show Splash At Start + + + + + + + + 0 + 0 + + + + Splash library behaviour + + + + + + + + 0 + 0 + + + + + Include companion splashes + + + + + Only user defined splashes + + + + + + + + + + + + + true + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Theme + + + + + + + + Classic + + + + + Monochrome + + + + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 40 + 20 + + + + + + + + Icon size + + + + + + + + Small + + + + + Normal + + + + + Big + + + + + Huge + + + + + + From 15203266aca91b8d6cef196e7f044e3f4be0211a Mon Sep 17 00:00:00 2001 From: Romolo Manfredini Date: Sun, 19 Jan 2014 15:58:23 +0100 Subject: [PATCH 185/308] Preferences had icon embeddeed in the ui --- companion/src/preferencesdialog.cpp | 16 +++++++++++++++- companion/src/preferencesdialog.ui | 4 ---- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/companion/src/preferencesdialog.cpp b/companion/src/preferencesdialog.cpp index b0f59b38d..bcb152962 100644 --- a/companion/src/preferencesdialog.cpp +++ b/companion/src/preferencesdialog.cpp @@ -17,7 +17,21 @@ preferencesDialog::preferencesDialog(QWidget *parent) : updateLock(false) { ui->setupUi(this); - + QSettings settings("companion", "companion"); + int theme_set=settings.value("theme", 1).toInt(); + QIcon Icon; + + QString Theme; + switch(theme_set) { + case 0: + Theme="classic"; + break; + default: + Theme="monochrome"; + break; + } + Icon.addPixmap(":/themes/"+Theme+"/preferences.png"); + this->setWindowIcon(Icon); QCheckBox * OptionCheckBox[]= { ui->optionCheckBox_1, ui->optionCheckBox_2, ui->optionCheckBox_3, ui->optionCheckBox_4, ui->optionCheckBox_5, ui->optionCheckBox_6, ui->optionCheckBox_7, diff --git a/companion/src/preferencesdialog.ui b/companion/src/preferencesdialog.ui index f53946ab0..e2a16d63d 100644 --- a/companion/src/preferencesdialog.ui +++ b/companion/src/preferencesdialog.ui @@ -25,10 +25,6 @@ Preferences - - - :/images/preferences.png:/images/preferences.png - QLayout::SetMinimumSize From f9f930afa319b19dc2fa1b331b5390d795709c21 Mon Sep 17 00:00:00 2001 From: Dvogonen Date: Sun, 19 Jan 2014 16:53:48 +0100 Subject: [PATCH 186/308] Icons in all sizes --- companion/src/themes/classic/16/add.png | Bin 0 -> 876 bytes companion/src/themes/classic/16/arrow-left.png | Bin 0 -> 405 bytes companion/src/themes/classic/16/arrow-right.png | Bin 0 -> 401 bytes companion/src/themes/classic/16/changelog.png | Bin 0 -> 975 bytes companion/src/themes/classic/16/clear.png | Bin 0 -> 1157 bytes companion/src/themes/classic/16/compare.png | Bin 0 -> 1140 bytes companion/src/themes/classic/16/configure.png | Bin 0 -> 1149 bytes companion/src/themes/classic/16/contributors.png | Bin 0 -> 661 bytes companion/src/themes/classic/16/copy.png | Bin 0 -> 877 bytes companion/src/themes/classic/16/currentmodel.png | Bin 0 -> 961 bytes companion/src/themes/classic/16/customize.png | Bin 0 -> 408 bytes companion/src/themes/classic/16/cut.png | Bin 0 -> 947 bytes companion/src/themes/classic/16/duplicate.png | Bin 0 -> 792 bytes companion/src/themes/classic/16/edit.png | Bin 0 -> 1041 bytes companion/src/themes/classic/16/exit.png | Bin 0 -> 1285 bytes companion/src/themes/classic/16/fuses.png | Bin 0 -> 1015 bytes companion/src/themes/classic/16/information.png | Bin 0 -> 1129 bytes companion/src/themes/classic/16/library.png | Bin 0 -> 930 bytes companion/src/themes/classic/16/list.png | Bin 0 -> 1071 bytes companion/src/themes/classic/16/logs.png | Bin 0 -> 924 bytes companion/src/themes/classic/16/movedown.png | Bin 0 -> 998 bytes companion/src/themes/classic/16/moveup.png | Bin 0 -> 891 bytes companion/src/themes/classic/16/new.png | Bin 0 -> 739 bytes companion/src/themes/classic/16/open.png | Bin 0 -> 1165 bytes companion/src/themes/classic/16/paste.png | Bin 0 -> 1075 bytes companion/src/themes/classic/16/play.png | Bin 0 -> 371 bytes companion/src/themes/classic/16/preferences.png | Bin 0 -> 1122 bytes companion/src/themes/classic/16/print.png | Bin 0 -> 1001 bytes companion/src/themes/classic/16/profiles.png | Bin 0 -> 665 bytes companion/src/themes/classic/16/read_eeprom.png | Bin 0 -> 911 bytes .../src/themes/classic/16/read_eeprom_file.png | Bin 0 -> 1242 bytes companion/src/themes/classic/16/read_flash.png | Bin 0 -> 1148 bytes .../src/themes/classic/16/recentdocument.png | Bin 0 -> 812 bytes companion/src/themes/classic/16/save.png | Bin 0 -> 873 bytes companion/src/themes/classic/16/saveas.png | Bin 0 -> 935 bytes companion/src/themes/classic/16/simulate.png | Bin 0 -> 1100 bytes companion/src/themes/classic/16/stop.png | Bin 0 -> 312 bytes companion/src/themes/classic/16/switch_dir.png | Bin 0 -> 1069 bytes companion/src/themes/classic/16/update.png | Bin 0 -> 1003 bytes companion/src/themes/classic/16/wizard.png | Bin 0 -> 1155 bytes companion/src/themes/classic/16/write_eeprom.png | Bin 0 -> 904 bytes .../src/themes/classic/16/write_eeprom_file.png | Bin 0 -> 1223 bytes companion/src/themes/classic/16/write_flash.png | Bin 0 -> 1127 bytes companion/src/themes/classic/24/add.png | Bin 0 -> 1402 bytes companion/src/themes/classic/24/arrow-left.png | Bin 0 -> 489 bytes companion/src/themes/classic/24/arrow-right.png | Bin 0 -> 479 bytes companion/src/themes/classic/24/changelog.png | Bin 0 -> 1581 bytes companion/src/themes/classic/24/clear.png | Bin 0 -> 1633 bytes companion/src/themes/classic/24/compare.png | Bin 0 -> 1477 bytes companion/src/themes/classic/24/configure.png | Bin 0 -> 1798 bytes companion/src/themes/classic/24/contributors.png | Bin 0 -> 1294 bytes companion/src/themes/classic/24/copy.png | Bin 0 -> 1508 bytes companion/src/themes/classic/24/currentmodel.png | Bin 0 -> 1423 bytes companion/src/themes/classic/24/customize.png | Bin 0 -> 564 bytes companion/src/themes/classic/24/cut.png | Bin 0 -> 1623 bytes companion/src/themes/classic/24/duplicate.png | Bin 0 -> 1227 bytes companion/src/themes/classic/24/edit.png | Bin 0 -> 1472 bytes companion/src/themes/classic/24/exit.png | Bin 0 -> 1578 bytes companion/src/themes/classic/24/fuses.png | Bin 0 -> 1607 bytes companion/src/themes/classic/24/information.png | Bin 0 -> 1600 bytes companion/src/themes/classic/24/library.png | Bin 0 -> 1430 bytes companion/src/themes/classic/24/list.png | Bin 0 -> 1792 bytes companion/src/themes/classic/24/logs.png | Bin 0 -> 1411 bytes companion/src/themes/classic/24/movedown.png | Bin 0 -> 1266 bytes companion/src/themes/classic/24/moveup.png | Bin 0 -> 1469 bytes companion/src/themes/classic/24/new.png | Bin 0 -> 1129 bytes companion/src/themes/classic/24/open.png | Bin 0 -> 1765 bytes companion/src/themes/classic/24/paste.png | Bin 0 -> 1472 bytes companion/src/themes/classic/24/play.png | Bin 0 -> 399 bytes companion/src/themes/classic/24/preferences.png | Bin 0 -> 1625 bytes companion/src/themes/classic/24/print.png | Bin 0 -> 1524 bytes companion/src/themes/classic/24/profiles.png | Bin 0 -> 917 bytes companion/src/themes/classic/24/read_eeprom.png | Bin 0 -> 1395 bytes .../src/themes/classic/24/read_eeprom_file.png | Bin 0 -> 1886 bytes companion/src/themes/classic/24/read_flash.png | Bin 0 -> 1772 bytes .../src/themes/classic/24/recentdocument.png | Bin 0 -> 1196 bytes companion/src/themes/classic/24/save.png | Bin 0 -> 1281 bytes companion/src/themes/classic/24/saveas.png | Bin 0 -> 1429 bytes companion/src/themes/classic/24/simulate.png | Bin 0 -> 1402 bytes companion/src/themes/classic/24/stop.png | Bin 0 -> 317 bytes companion/src/themes/classic/24/switch_dir.png | Bin 0 -> 1231 bytes companion/src/themes/classic/24/update.png | Bin 0 -> 1307 bytes companion/src/themes/classic/24/wizard.png | Bin 0 -> 1676 bytes companion/src/themes/classic/24/write_eeprom.png | Bin 0 -> 1378 bytes .../src/themes/classic/24/write_eeprom_file.png | Bin 0 -> 1873 bytes companion/src/themes/classic/24/write_flash.png | Bin 0 -> 1741 bytes companion/src/themes/classic/32/add.png | Bin 0 -> 1255 bytes companion/src/themes/classic/32/arrow-left.png | Bin 0 -> 567 bytes companion/src/themes/classic/32/arrow-right.png | Bin 0 -> 571 bytes companion/src/themes/classic/32/changelog.png | Bin 0 -> 2209 bytes companion/src/themes/classic/32/clear.png | Bin 0 -> 2200 bytes companion/src/themes/classic/32/compare.png | Bin 0 -> 2136 bytes companion/src/themes/classic/32/configure.png | Bin 0 -> 2498 bytes companion/src/themes/classic/32/contributors.png | Bin 0 -> 1814 bytes companion/src/themes/classic/32/copy.png | Bin 0 -> 1703 bytes companion/src/themes/classic/32/currentmodel.png | Bin 0 -> 1756 bytes companion/src/themes/classic/32/customize.png | Bin 0 -> 553 bytes companion/src/themes/classic/32/cut.png | Bin 0 -> 1573 bytes companion/src/themes/classic/32/duplicate.png | Bin 0 -> 1358 bytes companion/src/themes/classic/32/edit.png | Bin 0 -> 1939 bytes companion/src/themes/classic/32/exit.png | Bin 0 -> 2117 bytes companion/src/themes/classic/32/fuses.png | Bin 0 -> 2186 bytes companion/src/themes/classic/32/information.png | Bin 0 -> 2179 bytes companion/src/themes/classic/32/library.png | Bin 0 -> 2198 bytes companion/src/themes/classic/32/list.png | Bin 0 -> 2547 bytes companion/src/themes/classic/32/logs.png | Bin 0 -> 1363 bytes companion/src/themes/classic/32/movedown.png | Bin 0 -> 1750 bytes companion/src/themes/classic/32/moveup.png | Bin 0 -> 1643 bytes companion/src/themes/classic/32/new.png | Bin 0 -> 1173 bytes companion/src/themes/classic/32/open.png | Bin 0 -> 2416 bytes companion/src/themes/classic/32/paste.png | Bin 0 -> 1926 bytes companion/src/themes/classic/32/play.png | Bin 0 -> 442 bytes companion/src/themes/classic/32/preferences.png | Bin 0 -> 2246 bytes companion/src/themes/classic/32/print.png | Bin 0 -> 1566 bytes companion/src/themes/classic/32/profiles.png | Bin 0 -> 985 bytes companion/src/themes/classic/32/read_eeprom.png | Bin 0 -> 2057 bytes .../src/themes/classic/32/read_eeprom_file.png | Bin 0 -> 2859 bytes companion/src/themes/classic/32/read_flash.png | Bin 0 -> 2640 bytes .../src/themes/classic/32/recentdocument.png | Bin 0 -> 1480 bytes companion/src/themes/classic/32/save.png | Bin 0 -> 1605 bytes companion/src/themes/classic/32/saveas.png | Bin 0 -> 1807 bytes companion/src/themes/classic/32/simulate.png | Bin 0 -> 1925 bytes companion/src/themes/classic/32/stop.png | Bin 0 -> 319 bytes companion/src/themes/classic/32/switch_dir.png | Bin 0 -> 1650 bytes companion/src/themes/classic/32/update.png | Bin 0 -> 1745 bytes companion/src/themes/classic/32/wizard.png | Bin 0 -> 2195 bytes companion/src/themes/classic/32/write_eeprom.png | Bin 0 -> 2044 bytes .../src/themes/classic/32/write_eeprom_file.png | Bin 0 -> 2833 bytes companion/src/themes/classic/32/write_flash.png | Bin 0 -> 2518 bytes companion/src/themes/classic/48/add.png | Bin 0 -> 1817 bytes companion/src/themes/classic/48/arrow-left.png | Bin 0 -> 822 bytes companion/src/themes/classic/48/arrow-right.png | Bin 0 -> 817 bytes companion/src/themes/classic/48/changelog.png | Bin 0 -> 3882 bytes companion/src/themes/classic/48/clear.png | Bin 0 -> 3768 bytes companion/src/themes/classic/48/compare.png | Bin 0 -> 3190 bytes companion/src/themes/classic/48/configure.png | Bin 0 -> 4366 bytes companion/src/themes/classic/48/contributors.png | Bin 0 -> 3178 bytes companion/src/themes/classic/48/copy.png | Bin 0 -> 2635 bytes companion/src/themes/classic/48/currentmodel.png | Bin 0 -> 2974 bytes companion/src/themes/classic/48/customize.png | Bin 0 -> 973 bytes companion/src/themes/classic/48/cut.png | Bin 0 -> 3437 bytes companion/src/themes/classic/48/duplicate.png | Bin 0 -> 2191 bytes companion/src/themes/classic/48/edit.png | Bin 0 -> 3393 bytes companion/src/themes/classic/48/exit.png | Bin 0 -> 3448 bytes companion/src/themes/classic/48/fuses.png | Bin 0 -> 4176 bytes companion/src/themes/classic/48/information.png | Bin 0 -> 3832 bytes companion/src/themes/classic/48/library.png | Bin 0 -> 4055 bytes companion/src/themes/classic/48/list.png | Bin 0 -> 4904 bytes companion/src/themes/classic/48/logs.png | Bin 0 -> 2522 bytes companion/src/themes/classic/48/movedown.png | Bin 0 -> 2941 bytes companion/src/themes/classic/48/moveup.png | Bin 0 -> 2843 bytes companion/src/themes/classic/48/new.png | Bin 0 -> 1812 bytes companion/src/themes/classic/48/open.png | Bin 0 -> 4395 bytes companion/src/themes/classic/48/paste.png | Bin 0 -> 3365 bytes companion/src/themes/classic/48/play.png | Bin 0 -> 492 bytes companion/src/themes/classic/48/preferences.png | Bin 0 -> 3879 bytes companion/src/themes/classic/48/print.png | Bin 0 -> 2514 bytes companion/src/themes/classic/48/profiles.png | Bin 0 -> 1567 bytes companion/src/themes/classic/48/read_eeprom.png | Bin 0 -> 3779 bytes .../src/themes/classic/48/read_eeprom_file.png | Bin 0 -> 5448 bytes companion/src/themes/classic/48/read_flash.png | Bin 0 -> 5048 bytes .../src/themes/classic/48/recentdocument.png | Bin 0 -> 2635 bytes companion/src/themes/classic/48/save.png | Bin 0 -> 2625 bytes companion/src/themes/classic/48/saveas.png | Bin 0 -> 2945 bytes companion/src/themes/classic/48/simulate.png | Bin 0 -> 3285 bytes companion/src/themes/classic/48/stop.png | Bin 0 -> 342 bytes companion/src/themes/classic/48/switch_dir.png | Bin 0 -> 2630 bytes companion/src/themes/classic/48/update.png | Bin 0 -> 2915 bytes companion/src/themes/classic/48/wizard.png | Bin 0 -> 3694 bytes companion/src/themes/classic/48/write_eeprom.png | Bin 0 -> 3691 bytes .../src/themes/classic/48/write_eeprom_file.png | Bin 0 -> 5345 bytes companion/src/themes/classic/48/write_flash.png | Bin 0 -> 4735 bytes companion/src/themes/monochrome/16/add.png | Bin 0 -> 329 bytes .../src/themes/monochrome/16/arrow-left.png | Bin 0 -> 305 bytes .../src/themes/monochrome/16/arrow-right.png | Bin 0 -> 305 bytes companion/src/themes/monochrome/16/changelog.png | Bin 0 -> 340 bytes companion/src/themes/monochrome/16/clear.png | Bin 0 -> 339 bytes companion/src/themes/monochrome/16/compare.png | Bin 0 -> 421 bytes companion/src/themes/monochrome/16/configure.png | Bin 0 -> 364 bytes .../src/themes/monochrome/16/contributors.png | Bin 0 -> 463 bytes companion/src/themes/monochrome/16/copy.png | Bin 0 -> 393 bytes .../src/themes/monochrome/16/currentmodel.png | Bin 0 -> 393 bytes companion/src/themes/monochrome/16/cut.png | Bin 0 -> 494 bytes companion/src/themes/monochrome/16/duplicate.png | Bin 0 -> 392 bytes companion/src/themes/monochrome/16/edit.png | Bin 0 -> 444 bytes companion/src/themes/monochrome/16/exit.png | Bin 0 -> 411 bytes companion/src/themes/monochrome/16/fuses.png | Bin 0 -> 426 bytes .../src/themes/monochrome/16/information.png | Bin 0 -> 341 bytes companion/src/themes/monochrome/16/library.png | Bin 0 -> 329 bytes companion/src/themes/monochrome/16/list.png | Bin 0 -> 425 bytes companion/src/themes/monochrome/16/logs.png | Bin 0 -> 379 bytes companion/src/themes/monochrome/16/movedown.png | Bin 0 -> 358 bytes companion/src/themes/monochrome/16/moveup.png | Bin 0 -> 369 bytes companion/src/themes/monochrome/16/new.png | Bin 0 -> 380 bytes companion/src/themes/monochrome/16/open.png | Bin 0 -> 356 bytes companion/src/themes/monochrome/16/paste.png | Bin 0 -> 402 bytes .../src/themes/monochrome/16/preferences.png | Bin 0 -> 437 bytes companion/src/themes/monochrome/16/print.png | Bin 0 -> 378 bytes companion/src/themes/monochrome/16/profiles.png | Bin 0 -> 292 bytes .../src/themes/monochrome/16/read_eeprom.png | Bin 0 -> 719 bytes .../themes/monochrome/16/read_eeprom_file.png | Bin 0 -> 533 bytes .../src/themes/monochrome/16/read_flash.png | Bin 0 -> 552 bytes .../src/themes/monochrome/16/recentdocument.png | Bin 0 -> 476 bytes companion/src/themes/monochrome/16/save.png | Bin 0 -> 344 bytes companion/src/themes/monochrome/16/saveas.png | Bin 0 -> 368 bytes companion/src/themes/monochrome/16/simulate.png | Bin 0 -> 333 bytes .../src/themes/monochrome/16/switch_dir.png | Bin 0 -> 396 bytes companion/src/themes/monochrome/16/update.png | Bin 0 -> 381 bytes companion/src/themes/monochrome/16/wizard.png | Bin 0 -> 754 bytes .../src/themes/monochrome/16/write_eeprom.png | Bin 0 -> 760 bytes .../themes/monochrome/16/write_eeprom_file.png | Bin 0 -> 529 bytes .../src/themes/monochrome/16/write_flash.png | Bin 0 -> 556 bytes companion/src/themes/monochrome/24/add.png | Bin 0 -> 359 bytes .../src/themes/monochrome/24/arrow-left.png | Bin 0 -> 427 bytes .../src/themes/monochrome/24/arrow-right.png | Bin 0 -> 428 bytes companion/src/themes/monochrome/24/changelog.png | Bin 0 -> 475 bytes companion/src/themes/monochrome/24/clear.png | Bin 0 -> 451 bytes companion/src/themes/monochrome/24/compare.png | Bin 0 -> 637 bytes companion/src/themes/monochrome/24/configure.png | Bin 0 -> 449 bytes .../src/themes/monochrome/24/contributors.png | Bin 0 -> 562 bytes companion/src/themes/monochrome/24/copy.png | Bin 0 -> 478 bytes .../src/themes/monochrome/24/currentmodel.png | Bin 0 -> 473 bytes companion/src/themes/monochrome/24/cut.png | Bin 0 -> 683 bytes companion/src/themes/monochrome/24/duplicate.png | Bin 0 -> 534 bytes companion/src/themes/monochrome/24/edit.png | Bin 0 -> 521 bytes companion/src/themes/monochrome/24/exit.png | Bin 0 -> 527 bytes companion/src/themes/monochrome/24/fuses.png | Bin 0 -> 569 bytes .../src/themes/monochrome/24/information.png | Bin 0 -> 382 bytes companion/src/themes/monochrome/24/library.png | Bin 0 -> 430 bytes companion/src/themes/monochrome/24/list.png | Bin 0 -> 510 bytes companion/src/themes/monochrome/24/logs.png | Bin 0 -> 453 bytes companion/src/themes/monochrome/24/movedown.png | Bin 0 -> 431 bytes companion/src/themes/monochrome/24/moveup.png | Bin 0 -> 428 bytes companion/src/themes/monochrome/24/new.png | Bin 0 -> 475 bytes companion/src/themes/monochrome/24/open.png | Bin 0 -> 421 bytes companion/src/themes/monochrome/24/paste.png | Bin 0 -> 502 bytes .../src/themes/monochrome/24/preferences.png | Bin 0 -> 558 bytes companion/src/themes/monochrome/24/print.png | Bin 0 -> 500 bytes companion/src/themes/monochrome/24/profiles.png | Bin 0 -> 422 bytes .../src/themes/monochrome/24/read_eeprom.png | Bin 0 -> 1336 bytes .../themes/monochrome/24/read_eeprom_file.png | Bin 0 -> 768 bytes .../src/themes/monochrome/24/read_flash.png | Bin 0 -> 836 bytes .../src/themes/monochrome/24/recentdocument.png | Bin 0 -> 619 bytes companion/src/themes/monochrome/24/save.png | Bin 0 -> 407 bytes companion/src/themes/monochrome/24/saveas.png | Bin 0 -> 474 bytes companion/src/themes/monochrome/24/simulate.png | Bin 0 -> 376 bytes .../src/themes/monochrome/24/switch_dir.png | Bin 0 -> 507 bytes companion/src/themes/monochrome/24/update.png | Bin 0 -> 470 bytes companion/src/themes/monochrome/24/wizard.png | Bin 0 -> 1037 bytes .../src/themes/monochrome/24/write_eeprom.png | Bin 0 -> 1418 bytes .../themes/monochrome/24/write_eeprom_file.png | Bin 0 -> 761 bytes .../src/themes/monochrome/24/write_flash.png | Bin 0 -> 836 bytes companion/src/themes/monochrome/32/add.png | Bin 0 -> 226 bytes .../src/themes/monochrome/32/arrow-left.png | Bin 0 -> 222 bytes .../src/themes/monochrome/32/arrow-right.png | Bin 0 -> 227 bytes companion/src/themes/monochrome/32/changelog.png | Bin 0 -> 307 bytes companion/src/themes/monochrome/32/clear.png | Bin 0 -> 235 bytes companion/src/themes/monochrome/32/compare.png | Bin 0 -> 460 bytes companion/src/themes/monochrome/32/configure.png | Bin 0 -> 333 bytes .../src/themes/monochrome/32/contributors.png | Bin 0 -> 574 bytes companion/src/themes/monochrome/32/copy.png | Bin 0 -> 302 bytes .../src/themes/monochrome/32/currentmodel.png | Bin 0 -> 365 bytes companion/src/themes/monochrome/32/cut.png | Bin 0 -> 3651 bytes companion/src/themes/monochrome/32/duplicate.png | Bin 0 -> 313 bytes companion/src/themes/monochrome/32/edit.png | Bin 0 -> 389 bytes companion/src/themes/monochrome/32/exit.png | Bin 0 -> 408 bytes companion/src/themes/monochrome/32/fuses.png | Bin 0 -> 487 bytes .../src/themes/monochrome/32/information.png | Bin 0 -> 252 bytes companion/src/themes/monochrome/32/library.png | Bin 0 -> 216 bytes companion/src/themes/monochrome/32/list.png | Bin 0 -> 345 bytes companion/src/themes/monochrome/32/logs.png | Bin 0 -> 343 bytes companion/src/themes/monochrome/32/movedown.png | Bin 0 -> 312 bytes companion/src/themes/monochrome/32/moveup.png | Bin 0 -> 306 bytes companion/src/themes/monochrome/32/new.png | Bin 0 -> 250 bytes companion/src/themes/monochrome/32/open.png | Bin 0 -> 306 bytes companion/src/themes/monochrome/32/paste.png | Bin 0 -> 324 bytes .../src/themes/monochrome/32/preferences.png | Bin 0 -> 431 bytes companion/src/themes/monochrome/32/print.png | Bin 0 -> 258 bytes companion/src/themes/monochrome/32/profiles.png | Bin 0 -> 257 bytes .../src/themes/monochrome/32/read_eeprom.png | Bin 0 -> 699 bytes .../themes/monochrome/32/read_eeprom_file.png | Bin 0 -> 670 bytes .../src/themes/monochrome/32/read_flash.png | Bin 0 -> 812 bytes .../src/themes/monochrome/32/recentdocument.png | Bin 0 -> 521 bytes companion/src/themes/monochrome/32/save.png | Bin 0 -> 209 bytes companion/src/themes/monochrome/32/saveas.png | Bin 0 -> 253 bytes companion/src/themes/monochrome/32/simulate.png | Bin 0 -> 236 bytes .../src/themes/monochrome/32/switch_dir.png | Bin 0 -> 415 bytes companion/src/themes/monochrome/32/update.png | Bin 0 -> 396 bytes companion/src/themes/monochrome/32/wizard.png | Bin 0 -> 1144 bytes .../src/themes/monochrome/32/write_eeprom.png | Bin 0 -> 713 bytes .../themes/monochrome/32/write_eeprom_file.png | Bin 0 -> 676 bytes .../src/themes/monochrome/32/write_flash.png | Bin 0 -> 815 bytes companion/src/themes/monochrome/48/add.png | Bin 0 -> 378 bytes .../src/themes/monochrome/48/arrow-left.png | Bin 0 -> 633 bytes .../src/themes/monochrome/48/arrow-right.png | Bin 0 -> 596 bytes companion/src/themes/monochrome/48/changelog.png | Bin 0 -> 597 bytes companion/src/themes/monochrome/48/clear.png | Bin 0 -> 674 bytes companion/src/themes/monochrome/48/compare.png | Bin 0 -> 1013 bytes companion/src/themes/monochrome/48/configure.png | Bin 0 -> 624 bytes .../src/themes/monochrome/48/contributors.png | Bin 0 -> 975 bytes companion/src/themes/monochrome/48/copy.png | Bin 0 -> 596 bytes .../src/themes/monochrome/48/currentmodel.png | Bin 0 -> 717 bytes companion/src/themes/monochrome/48/cut.png | Bin 0 -> 1257 bytes companion/src/themes/monochrome/48/duplicate.png | Bin 0 -> 747 bytes companion/src/themes/monochrome/48/edit.png | Bin 0 -> 787 bytes companion/src/themes/monochrome/48/exit.png | Bin 0 -> 930 bytes companion/src/themes/monochrome/48/fuses.png | Bin 0 -> 974 bytes .../src/themes/monochrome/48/information.png | Bin 0 -> 474 bytes companion/src/themes/monochrome/48/library.png | Bin 0 -> 503 bytes companion/src/themes/monochrome/48/list.png | Bin 0 -> 763 bytes companion/src/themes/monochrome/48/logs.png | Bin 0 -> 704 bytes companion/src/themes/monochrome/48/movedown.png | Bin 0 -> 634 bytes companion/src/themes/monochrome/48/moveup.png | Bin 0 -> 628 bytes companion/src/themes/monochrome/48/new.png | Bin 0 -> 581 bytes companion/src/themes/monochrome/48/open.png | Bin 0 -> 558 bytes companion/src/themes/monochrome/48/paste.png | Bin 0 -> 687 bytes .../src/themes/monochrome/48/preferences.png | Bin 0 -> 916 bytes companion/src/themes/monochrome/48/print.png | Bin 0 -> 578 bytes companion/src/themes/monochrome/48/profiles.png | Bin 0 -> 457 bytes .../src/themes/monochrome/48/read_eeprom.png | Bin 0 -> 2205 bytes .../themes/monochrome/48/read_eeprom_file.png | Bin 0 -> 1420 bytes .../src/themes/monochrome/48/read_flash.png | Bin 0 -> 1709 bytes .../src/themes/monochrome/48/recentdocument.png | Bin 0 -> 1104 bytes companion/src/themes/monochrome/48/save.png | Bin 0 -> 476 bytes companion/src/themes/monochrome/48/saveas.png | Bin 0 -> 605 bytes companion/src/themes/monochrome/48/simulate.png | Bin 0 -> 510 bytes .../src/themes/monochrome/48/switch_dir.png | Bin 0 -> 849 bytes companion/src/themes/monochrome/48/update.png | Bin 0 -> 713 bytes companion/src/themes/monochrome/48/wizard.png | Bin 0 -> 2217 bytes .../src/themes/monochrome/48/write_eeprom.png | Bin 0 -> 1848 bytes .../themes/monochrome/48/write_eeprom_file.png | Bin 0 -> 1419 bytes .../src/themes/monochrome/48/write_flash.png | Bin 0 -> 1730 bytes 332 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 companion/src/themes/classic/16/add.png create mode 100644 companion/src/themes/classic/16/arrow-left.png create mode 100644 companion/src/themes/classic/16/arrow-right.png create mode 100644 companion/src/themes/classic/16/changelog.png create mode 100644 companion/src/themes/classic/16/clear.png create mode 100644 companion/src/themes/classic/16/compare.png create mode 100644 companion/src/themes/classic/16/configure.png create mode 100644 companion/src/themes/classic/16/contributors.png create mode 100644 companion/src/themes/classic/16/copy.png create mode 100644 companion/src/themes/classic/16/currentmodel.png create mode 100644 companion/src/themes/classic/16/customize.png create mode 100644 companion/src/themes/classic/16/cut.png create mode 100644 companion/src/themes/classic/16/duplicate.png create mode 100644 companion/src/themes/classic/16/edit.png create mode 100644 companion/src/themes/classic/16/exit.png create mode 100644 companion/src/themes/classic/16/fuses.png create mode 100644 companion/src/themes/classic/16/information.png create mode 100644 companion/src/themes/classic/16/library.png create mode 100644 companion/src/themes/classic/16/list.png create mode 100644 companion/src/themes/classic/16/logs.png create mode 100644 companion/src/themes/classic/16/movedown.png create mode 100644 companion/src/themes/classic/16/moveup.png create mode 100644 companion/src/themes/classic/16/new.png create mode 100644 companion/src/themes/classic/16/open.png create mode 100644 companion/src/themes/classic/16/paste.png create mode 100644 companion/src/themes/classic/16/play.png create mode 100644 companion/src/themes/classic/16/preferences.png create mode 100644 companion/src/themes/classic/16/print.png create mode 100644 companion/src/themes/classic/16/profiles.png create mode 100644 companion/src/themes/classic/16/read_eeprom.png create mode 100644 companion/src/themes/classic/16/read_eeprom_file.png create mode 100644 companion/src/themes/classic/16/read_flash.png create mode 100644 companion/src/themes/classic/16/recentdocument.png create mode 100644 companion/src/themes/classic/16/save.png create mode 100644 companion/src/themes/classic/16/saveas.png create mode 100644 companion/src/themes/classic/16/simulate.png create mode 100644 companion/src/themes/classic/16/stop.png create mode 100644 companion/src/themes/classic/16/switch_dir.png create mode 100644 companion/src/themes/classic/16/update.png create mode 100644 companion/src/themes/classic/16/wizard.png create mode 100644 companion/src/themes/classic/16/write_eeprom.png create mode 100644 companion/src/themes/classic/16/write_eeprom_file.png create mode 100644 companion/src/themes/classic/16/write_flash.png create mode 100644 companion/src/themes/classic/24/add.png create mode 100644 companion/src/themes/classic/24/arrow-left.png create mode 100644 companion/src/themes/classic/24/arrow-right.png create mode 100644 companion/src/themes/classic/24/changelog.png create mode 100644 companion/src/themes/classic/24/clear.png create mode 100644 companion/src/themes/classic/24/compare.png create mode 100644 companion/src/themes/classic/24/configure.png create mode 100644 companion/src/themes/classic/24/contributors.png create mode 100644 companion/src/themes/classic/24/copy.png create mode 100644 companion/src/themes/classic/24/currentmodel.png create mode 100644 companion/src/themes/classic/24/customize.png create mode 100644 companion/src/themes/classic/24/cut.png create mode 100644 companion/src/themes/classic/24/duplicate.png create mode 100644 companion/src/themes/classic/24/edit.png create mode 100644 companion/src/themes/classic/24/exit.png create mode 100644 companion/src/themes/classic/24/fuses.png create mode 100644 companion/src/themes/classic/24/information.png create mode 100644 companion/src/themes/classic/24/library.png create mode 100644 companion/src/themes/classic/24/list.png create mode 100644 companion/src/themes/classic/24/logs.png create mode 100644 companion/src/themes/classic/24/movedown.png create mode 100644 companion/src/themes/classic/24/moveup.png create mode 100644 companion/src/themes/classic/24/new.png create mode 100644 companion/src/themes/classic/24/open.png create mode 100644 companion/src/themes/classic/24/paste.png create mode 100644 companion/src/themes/classic/24/play.png create mode 100644 companion/src/themes/classic/24/preferences.png create mode 100644 companion/src/themes/classic/24/print.png create mode 100644 companion/src/themes/classic/24/profiles.png create mode 100644 companion/src/themes/classic/24/read_eeprom.png create mode 100644 companion/src/themes/classic/24/read_eeprom_file.png create mode 100644 companion/src/themes/classic/24/read_flash.png create mode 100644 companion/src/themes/classic/24/recentdocument.png create mode 100644 companion/src/themes/classic/24/save.png create mode 100644 companion/src/themes/classic/24/saveas.png create mode 100644 companion/src/themes/classic/24/simulate.png create mode 100644 companion/src/themes/classic/24/stop.png create mode 100644 companion/src/themes/classic/24/switch_dir.png create mode 100644 companion/src/themes/classic/24/update.png create mode 100644 companion/src/themes/classic/24/wizard.png create mode 100644 companion/src/themes/classic/24/write_eeprom.png create mode 100644 companion/src/themes/classic/24/write_eeprom_file.png create mode 100644 companion/src/themes/classic/24/write_flash.png create mode 100644 companion/src/themes/classic/32/add.png create mode 100644 companion/src/themes/classic/32/arrow-left.png create mode 100644 companion/src/themes/classic/32/arrow-right.png create mode 100644 companion/src/themes/classic/32/changelog.png create mode 100644 companion/src/themes/classic/32/clear.png create mode 100644 companion/src/themes/classic/32/compare.png create mode 100644 companion/src/themes/classic/32/configure.png create mode 100644 companion/src/themes/classic/32/contributors.png create mode 100644 companion/src/themes/classic/32/copy.png create mode 100644 companion/src/themes/classic/32/currentmodel.png create mode 100644 companion/src/themes/classic/32/customize.png create mode 100644 companion/src/themes/classic/32/cut.png create mode 100644 companion/src/themes/classic/32/duplicate.png create mode 100644 companion/src/themes/classic/32/edit.png create mode 100644 companion/src/themes/classic/32/exit.png create mode 100644 companion/src/themes/classic/32/fuses.png create mode 100644 companion/src/themes/classic/32/information.png create mode 100644 companion/src/themes/classic/32/library.png create mode 100644 companion/src/themes/classic/32/list.png create mode 100644 companion/src/themes/classic/32/logs.png create mode 100644 companion/src/themes/classic/32/movedown.png create mode 100644 companion/src/themes/classic/32/moveup.png create mode 100644 companion/src/themes/classic/32/new.png create mode 100644 companion/src/themes/classic/32/open.png create mode 100644 companion/src/themes/classic/32/paste.png create mode 100644 companion/src/themes/classic/32/play.png create mode 100644 companion/src/themes/classic/32/preferences.png create mode 100644 companion/src/themes/classic/32/print.png create mode 100644 companion/src/themes/classic/32/profiles.png create mode 100644 companion/src/themes/classic/32/read_eeprom.png create mode 100644 companion/src/themes/classic/32/read_eeprom_file.png create mode 100644 companion/src/themes/classic/32/read_flash.png create mode 100644 companion/src/themes/classic/32/recentdocument.png create mode 100644 companion/src/themes/classic/32/save.png create mode 100644 companion/src/themes/classic/32/saveas.png create mode 100644 companion/src/themes/classic/32/simulate.png create mode 100644 companion/src/themes/classic/32/stop.png create mode 100644 companion/src/themes/classic/32/switch_dir.png create mode 100644 companion/src/themes/classic/32/update.png create mode 100644 companion/src/themes/classic/32/wizard.png create mode 100644 companion/src/themes/classic/32/write_eeprom.png create mode 100644 companion/src/themes/classic/32/write_eeprom_file.png create mode 100644 companion/src/themes/classic/32/write_flash.png create mode 100644 companion/src/themes/classic/48/add.png create mode 100644 companion/src/themes/classic/48/arrow-left.png create mode 100644 companion/src/themes/classic/48/arrow-right.png create mode 100644 companion/src/themes/classic/48/changelog.png create mode 100644 companion/src/themes/classic/48/clear.png create mode 100644 companion/src/themes/classic/48/compare.png create mode 100644 companion/src/themes/classic/48/configure.png create mode 100644 companion/src/themes/classic/48/contributors.png create mode 100644 companion/src/themes/classic/48/copy.png create mode 100644 companion/src/themes/classic/48/currentmodel.png create mode 100644 companion/src/themes/classic/48/customize.png create mode 100644 companion/src/themes/classic/48/cut.png create mode 100644 companion/src/themes/classic/48/duplicate.png create mode 100644 companion/src/themes/classic/48/edit.png create mode 100644 companion/src/themes/classic/48/exit.png create mode 100644 companion/src/themes/classic/48/fuses.png create mode 100644 companion/src/themes/classic/48/information.png create mode 100644 companion/src/themes/classic/48/library.png create mode 100644 companion/src/themes/classic/48/list.png create mode 100644 companion/src/themes/classic/48/logs.png create mode 100644 companion/src/themes/classic/48/movedown.png create mode 100644 companion/src/themes/classic/48/moveup.png create mode 100644 companion/src/themes/classic/48/new.png create mode 100644 companion/src/themes/classic/48/open.png create mode 100644 companion/src/themes/classic/48/paste.png create mode 100644 companion/src/themes/classic/48/play.png create mode 100644 companion/src/themes/classic/48/preferences.png create mode 100644 companion/src/themes/classic/48/print.png create mode 100644 companion/src/themes/classic/48/profiles.png create mode 100644 companion/src/themes/classic/48/read_eeprom.png create mode 100644 companion/src/themes/classic/48/read_eeprom_file.png create mode 100644 companion/src/themes/classic/48/read_flash.png create mode 100644 companion/src/themes/classic/48/recentdocument.png create mode 100644 companion/src/themes/classic/48/save.png create mode 100644 companion/src/themes/classic/48/saveas.png create mode 100644 companion/src/themes/classic/48/simulate.png create mode 100644 companion/src/themes/classic/48/stop.png create mode 100644 companion/src/themes/classic/48/switch_dir.png create mode 100644 companion/src/themes/classic/48/update.png create mode 100644 companion/src/themes/classic/48/wizard.png create mode 100644 companion/src/themes/classic/48/write_eeprom.png create mode 100644 companion/src/themes/classic/48/write_eeprom_file.png create mode 100644 companion/src/themes/classic/48/write_flash.png create mode 100644 companion/src/themes/monochrome/16/add.png create mode 100644 companion/src/themes/monochrome/16/arrow-left.png create mode 100644 companion/src/themes/monochrome/16/arrow-right.png create mode 100644 companion/src/themes/monochrome/16/changelog.png create mode 100644 companion/src/themes/monochrome/16/clear.png create mode 100644 companion/src/themes/monochrome/16/compare.png create mode 100644 companion/src/themes/monochrome/16/configure.png create mode 100644 companion/src/themes/monochrome/16/contributors.png create mode 100644 companion/src/themes/monochrome/16/copy.png create mode 100644 companion/src/themes/monochrome/16/currentmodel.png create mode 100644 companion/src/themes/monochrome/16/cut.png create mode 100644 companion/src/themes/monochrome/16/duplicate.png create mode 100644 companion/src/themes/monochrome/16/edit.png create mode 100644 companion/src/themes/monochrome/16/exit.png create mode 100644 companion/src/themes/monochrome/16/fuses.png create mode 100644 companion/src/themes/monochrome/16/information.png create mode 100644 companion/src/themes/monochrome/16/library.png create mode 100644 companion/src/themes/monochrome/16/list.png create mode 100644 companion/src/themes/monochrome/16/logs.png create mode 100644 companion/src/themes/monochrome/16/movedown.png create mode 100644 companion/src/themes/monochrome/16/moveup.png create mode 100644 companion/src/themes/monochrome/16/new.png create mode 100644 companion/src/themes/monochrome/16/open.png create mode 100644 companion/src/themes/monochrome/16/paste.png create mode 100644 companion/src/themes/monochrome/16/preferences.png create mode 100644 companion/src/themes/monochrome/16/print.png create mode 100644 companion/src/themes/monochrome/16/profiles.png create mode 100644 companion/src/themes/monochrome/16/read_eeprom.png create mode 100644 companion/src/themes/monochrome/16/read_eeprom_file.png create mode 100644 companion/src/themes/monochrome/16/read_flash.png create mode 100644 companion/src/themes/monochrome/16/recentdocument.png create mode 100644 companion/src/themes/monochrome/16/save.png create mode 100644 companion/src/themes/monochrome/16/saveas.png create mode 100644 companion/src/themes/monochrome/16/simulate.png create mode 100644 companion/src/themes/monochrome/16/switch_dir.png create mode 100644 companion/src/themes/monochrome/16/update.png create mode 100644 companion/src/themes/monochrome/16/wizard.png create mode 100644 companion/src/themes/monochrome/16/write_eeprom.png create mode 100644 companion/src/themes/monochrome/16/write_eeprom_file.png create mode 100644 companion/src/themes/monochrome/16/write_flash.png create mode 100644 companion/src/themes/monochrome/24/add.png create mode 100644 companion/src/themes/monochrome/24/arrow-left.png create mode 100644 companion/src/themes/monochrome/24/arrow-right.png create mode 100644 companion/src/themes/monochrome/24/changelog.png create mode 100644 companion/src/themes/monochrome/24/clear.png create mode 100644 companion/src/themes/monochrome/24/compare.png create mode 100644 companion/src/themes/monochrome/24/configure.png create mode 100644 companion/src/themes/monochrome/24/contributors.png create mode 100644 companion/src/themes/monochrome/24/copy.png create mode 100644 companion/src/themes/monochrome/24/currentmodel.png create mode 100644 companion/src/themes/monochrome/24/cut.png create mode 100644 companion/src/themes/monochrome/24/duplicate.png create mode 100644 companion/src/themes/monochrome/24/edit.png create mode 100644 companion/src/themes/monochrome/24/exit.png create mode 100644 companion/src/themes/monochrome/24/fuses.png create mode 100644 companion/src/themes/monochrome/24/information.png create mode 100644 companion/src/themes/monochrome/24/library.png create mode 100644 companion/src/themes/monochrome/24/list.png create mode 100644 companion/src/themes/monochrome/24/logs.png create mode 100644 companion/src/themes/monochrome/24/movedown.png create mode 100644 companion/src/themes/monochrome/24/moveup.png create mode 100644 companion/src/themes/monochrome/24/new.png create mode 100644 companion/src/themes/monochrome/24/open.png create mode 100644 companion/src/themes/monochrome/24/paste.png create mode 100644 companion/src/themes/monochrome/24/preferences.png create mode 100644 companion/src/themes/monochrome/24/print.png create mode 100644 companion/src/themes/monochrome/24/profiles.png create mode 100644 companion/src/themes/monochrome/24/read_eeprom.png create mode 100644 companion/src/themes/monochrome/24/read_eeprom_file.png create mode 100644 companion/src/themes/monochrome/24/read_flash.png create mode 100644 companion/src/themes/monochrome/24/recentdocument.png create mode 100644 companion/src/themes/monochrome/24/save.png create mode 100644 companion/src/themes/monochrome/24/saveas.png create mode 100644 companion/src/themes/monochrome/24/simulate.png create mode 100644 companion/src/themes/monochrome/24/switch_dir.png create mode 100644 companion/src/themes/monochrome/24/update.png create mode 100644 companion/src/themes/monochrome/24/wizard.png create mode 100644 companion/src/themes/monochrome/24/write_eeprom.png create mode 100644 companion/src/themes/monochrome/24/write_eeprom_file.png create mode 100644 companion/src/themes/monochrome/24/write_flash.png create mode 100644 companion/src/themes/monochrome/32/add.png create mode 100644 companion/src/themes/monochrome/32/arrow-left.png create mode 100644 companion/src/themes/monochrome/32/arrow-right.png create mode 100644 companion/src/themes/monochrome/32/changelog.png create mode 100644 companion/src/themes/monochrome/32/clear.png create mode 100644 companion/src/themes/monochrome/32/compare.png create mode 100644 companion/src/themes/monochrome/32/configure.png create mode 100644 companion/src/themes/monochrome/32/contributors.png create mode 100644 companion/src/themes/monochrome/32/copy.png create mode 100644 companion/src/themes/monochrome/32/currentmodel.png create mode 100644 companion/src/themes/monochrome/32/cut.png create mode 100644 companion/src/themes/monochrome/32/duplicate.png create mode 100644 companion/src/themes/monochrome/32/edit.png create mode 100644 companion/src/themes/monochrome/32/exit.png create mode 100644 companion/src/themes/monochrome/32/fuses.png create mode 100644 companion/src/themes/monochrome/32/information.png create mode 100644 companion/src/themes/monochrome/32/library.png create mode 100644 companion/src/themes/monochrome/32/list.png create mode 100644 companion/src/themes/monochrome/32/logs.png create mode 100644 companion/src/themes/monochrome/32/movedown.png create mode 100644 companion/src/themes/monochrome/32/moveup.png create mode 100644 companion/src/themes/monochrome/32/new.png create mode 100644 companion/src/themes/monochrome/32/open.png create mode 100644 companion/src/themes/monochrome/32/paste.png create mode 100644 companion/src/themes/monochrome/32/preferences.png create mode 100644 companion/src/themes/monochrome/32/print.png create mode 100644 companion/src/themes/monochrome/32/profiles.png create mode 100644 companion/src/themes/monochrome/32/read_eeprom.png create mode 100644 companion/src/themes/monochrome/32/read_eeprom_file.png create mode 100644 companion/src/themes/monochrome/32/read_flash.png create mode 100644 companion/src/themes/monochrome/32/recentdocument.png create mode 100644 companion/src/themes/monochrome/32/save.png create mode 100644 companion/src/themes/monochrome/32/saveas.png create mode 100644 companion/src/themes/monochrome/32/simulate.png create mode 100644 companion/src/themes/monochrome/32/switch_dir.png create mode 100644 companion/src/themes/monochrome/32/update.png create mode 100644 companion/src/themes/monochrome/32/wizard.png create mode 100644 companion/src/themes/monochrome/32/write_eeprom.png create mode 100644 companion/src/themes/monochrome/32/write_eeprom_file.png create mode 100644 companion/src/themes/monochrome/32/write_flash.png create mode 100644 companion/src/themes/monochrome/48/add.png create mode 100644 companion/src/themes/monochrome/48/arrow-left.png create mode 100644 companion/src/themes/monochrome/48/arrow-right.png create mode 100644 companion/src/themes/monochrome/48/changelog.png create mode 100644 companion/src/themes/monochrome/48/clear.png create mode 100644 companion/src/themes/monochrome/48/compare.png create mode 100644 companion/src/themes/monochrome/48/configure.png create mode 100644 companion/src/themes/monochrome/48/contributors.png create mode 100644 companion/src/themes/monochrome/48/copy.png create mode 100644 companion/src/themes/monochrome/48/currentmodel.png create mode 100644 companion/src/themes/monochrome/48/cut.png create mode 100644 companion/src/themes/monochrome/48/duplicate.png create mode 100644 companion/src/themes/monochrome/48/edit.png create mode 100644 companion/src/themes/monochrome/48/exit.png create mode 100644 companion/src/themes/monochrome/48/fuses.png create mode 100644 companion/src/themes/monochrome/48/information.png create mode 100644 companion/src/themes/monochrome/48/library.png create mode 100644 companion/src/themes/monochrome/48/list.png create mode 100644 companion/src/themes/monochrome/48/logs.png create mode 100644 companion/src/themes/monochrome/48/movedown.png create mode 100644 companion/src/themes/monochrome/48/moveup.png create mode 100644 companion/src/themes/monochrome/48/new.png create mode 100644 companion/src/themes/monochrome/48/open.png create mode 100644 companion/src/themes/monochrome/48/paste.png create mode 100644 companion/src/themes/monochrome/48/preferences.png create mode 100644 companion/src/themes/monochrome/48/print.png create mode 100644 companion/src/themes/monochrome/48/profiles.png create mode 100644 companion/src/themes/monochrome/48/read_eeprom.png create mode 100644 companion/src/themes/monochrome/48/read_eeprom_file.png create mode 100644 companion/src/themes/monochrome/48/read_flash.png create mode 100644 companion/src/themes/monochrome/48/recentdocument.png create mode 100644 companion/src/themes/monochrome/48/save.png create mode 100644 companion/src/themes/monochrome/48/saveas.png create mode 100644 companion/src/themes/monochrome/48/simulate.png create mode 100644 companion/src/themes/monochrome/48/switch_dir.png create mode 100644 companion/src/themes/monochrome/48/update.png create mode 100644 companion/src/themes/monochrome/48/wizard.png create mode 100644 companion/src/themes/monochrome/48/write_eeprom.png create mode 100644 companion/src/themes/monochrome/48/write_eeprom_file.png create mode 100644 companion/src/themes/monochrome/48/write_flash.png diff --git a/companion/src/themes/classic/16/add.png b/companion/src/themes/classic/16/add.png new file mode 100644 index 0000000000000000000000000000000000000000..7976174fd581dca3f8effca51c005e54658c1eed GIT binary patch literal 876 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl-tmOGnnF#-9E#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP+xX{ zPlzi}0fQfi@SN>fv8%XzSCPjI2O!sXxu@3xSNG*kE(`2DR#`hQHs{D?;HhQct!3b= zW#9**N(PU0#*WK$`Rf_@8W?yQ8MvDmIDsgSfvtdnEsuewP%Z}&JDjpalQ9`bqntKcWF3vJzmVN@DYNBDTI;psvP(Xt zmpqFvx>a5dthpRfc0MfsbV&N~K(}pXZfkf$cJN2<=Z`zg7k7v+>%3O!HS6N57OAHd zV-NAf9O4Pz%k96F+hzqv#ckcvTUt4H*>dl)mp@~e_(5jEdzrpF4!yS>{{R2)qFN~q zbh>RxkRLD}84ujQzl8bCc@Si>b#QQS`gj{iI#`*iSg2d5%WU4ZZQJ&rAAsaWAy%Lg zh{_!|=CiY0Gmw-38pN37?e0=>?e-HlAcwQSBeEDsdw{Xq$!t3yW0|LmV~E7%FA!!qZsMIg(LH?lhdSt?}aRxHf1t7CLjOcYEP4>T;~^we}?%M3R!=l9po zmyfsq-*7-dlI`Y$2^The=s2o=IO>_+mbqy^;49%>JEv-zA xv<(cc3=F1NHaVea$jwj5OshoEU}|MzYGq&w(eUiup0*}aI1_o|n5N2eUHAey{*yriu7@~1LIbi|gh0rS@jvr=RSXw$I zg73p_|DD^nwF14AnVgDI9xPAD33^HVa@Dp53;TA7$y8JI#eJbO3!I#2_H Mr>mdKI;Vst0DUNlga7~l literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/16/arrow-right.png b/companion/src/themes/classic/16/arrow-right.png new file mode 100644 index 0000000000000000000000000000000000000000..1311fb52f71b509d33f50ff67cf3b5a26a99331d GIT binary patch literal 401 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^xl_H+M9WCijWi-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+g3lfkC`r&aOZkpafHr zx4R3&|Mvbf`++>p0*}aI1_o|n5N2eUHAey{*yZWs7@~1LIbng)g^-J(M?_Mc41V5? zE14_rY#YYSFGqJIWS@!*1A+}H>AtfOpVOsj_<*OT<57x7RKpN|{zq>YB ztZ87#i_ZG+$*|TT0&An!lnK%-`%~eN8?ZIx>^61 z>+WXB^Z@CbGb;=)0G%SiCS9&_QR;EVU28LD!22(7XoKQ66=BH$)RibDxwK6faGBAZ`c=m4cb)W_YPgg&ebxsLQ E03+Rd*8l(j literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/16/changelog.png b/companion/src/themes/classic/16/changelog.png new file mode 100644 index 0000000000000000000000000000000000000000..9e4e6ae57e39e3c34639cf503134e8dfd4ea7801 GIT binary patch literal 975 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstUx|vage(c z!@6@aFM%9|WRD45bDP46hOx7_4S6Fo+k-*%fF5)Hgf8 zC&U$~024$-MV&Zt0w{ju$dSOnz_Vx1zI^#|_Uzf8K7HD{b?dELx7My*`}XbINs}f4 z)to+k`taey>(;H?xpQZFdOF-RQ&ZFAC`C`}ZF{ zeE0|gKr=sm27xbMzuvol|JCc)@7{srKYsxVe0}iX!HX9!9zTBk=<(yHPoIAK_U-%k z?++h7eEj6eojZ3PJ$m%&)vIUEo;`W;1ZeQjpFe;7`t|0`n=fC!+`D)0#mkpKM?QJ_ z^z!A)7cN}5dGqG$*RP*Hf4*_=$?{3-CM@25^VXfO-@g6$@#FUG+x0WI80D{t>^-2G zwZS%T{;fNAFI>H)le6aR)q7`eJc*omN~>V|gq4S`U%$R)*9o`!ou@9}k$l&(fB*UO=f;g2Cr_Tdc=6)#vzO0axN`2&wKHeV{Qv*Iaew6=V5q5- z1o;Is2x+RZS_rBiU|b@+>6hoQz$NJdB zI0bQOD4b<$87rVsvV>RI z90nB_8Oj6}9!mrU3`baCV=6irV?+tVZ3&B05Qd;-P#m;(cU|^}$-VcS^SS4HALrf+ zNh&#uxt|FDETux4g6*DvJDrS2Zs;3oY$!S6L@~fa%5MX|kZ|l$lp>cv@AQFX9QYa) zDTx5*0|Cma0RG0P>?uGA4`4+PAo>Krv#|N=Me~8nlRJ+Mkff0Z| zKmq2lv38wK?<9EG4`2Z>I79582gn2P25572t)Wn?o}PB8bT=$)oz32KcX#;sID&(% z0Rc95cf@8pc)ZP^Agi0(7=`jaz$F00=dW`(BUI{L3Z>M!=0^bcsMIf+%r1aQGP(Hw zeaiuUpir&@gaCX2FhwHeJEzWK-_^Clc?LE>yRWa_$@560>jw|wM?igjsJ|Z#4sIqV zqxN>x)`pAF0I;D{qJ{=kSBEZNejFNF2k@6zjH;?oWhE*vf6V3L(qF|;AV4K0$YNPK zbm$_!CMJA7%FRV)Gs?+X_Va55ut_9HuSW(0G8)&89z{AGI(-^tW}>t-6da6VVvs_y zOc2k7LUiH;!U+U{4j)F*(MTp+5(^AmENM!Ry7)w zl!V0Mm;U}pAXro?S9H29f#63P%_fsQ)oM4j+Iw{RuhG$S;o%6O&%PfV!4=3TPEo0W z_IWSOZ$6Jcc$49`;5ZvQv>+q7N6c>Tg|8FywQn|5aVHk;FPiel(u&wm(~fwyuoB*>+` z!}<02$$(L)c)JK&g|o*^$O+jA?L zSX*6LTYmOui{8L|bgk)RbL6?nS@VOOsnvnLEPdbAsQ0#-hvx)eZ7dFjr{(7S^m||K zi;J9E6)_#wn~j5`! z4_3b_I8adQ0&UmiqT^R?;Li@6Vp&>oR%WqDWVD#D0fNVm4CV1d`9cj}Ac_!*qKG3r tzKF+b5LQTD5fr?eWzIhLiXci9871OH{U=yltN$4bKq*s6dnNjce*nC2vL^rl literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/16/compare.png b/companion/src/themes/classic/16/compare.png new file mode 100644 index 0000000000000000000000000000000000000000..eda5f13b9ff3ca9edc5973cc99f38da2d2376294 GIT binary patch literal 1140 zcmY*XX;4#V6#dxR0!0++z!Ziy0=f#wUm-lr1#Cuv->c9$~9MSW2x$_OFln%QJKDnRDl!J9B5wkG^boEsf7L z003H^9t;l7`}gV-6}+2UY5U`(dfJuc3c!;B&FxcaxK>KyxVwSs9>WD(d>QG%VF8eO z7=X-d05H{xc+?*Q`4OZDmm}goV(5_<8 zU8*|%oZZDve^OOG^3+V;Xn~2jZ4R*rg1lQD!6eS|M#^M!l#~z}cRQ!Oy}k8Q-{$7# zCJirC^XOxbn8JueT5aUi)YRD681_F7J@S!CrG#s4@i}RIeSKb6qXl^x9UUE(W-V(= z-q|VsZx_9nMxA$eLc+qN8~<=JGu!@>yS!WV!LCs4U}==TyB!Q` zUc$x^*f|M@=iuxLR$jBV%-Y!sf>|{%Ujj>|@RtsV_G9T4(C=p$Rt{tCLqQeHKm`?- zO1ngNyJ~;!dVzFF;1}m1F%vrGLbrVABg_#Mw8No(I6ewzX5r!re3OTkuYs^l)yQ4- z*o_1HA%lpRJIS|U-9y;;6v}>s-7+|kg63m@F$2C{0KOPt_5E~@RmnRCOS0gdJorEe zAD6>tk!VH*k#(2IzEAY6B>MTm^bnXG1@ri@Fa;L-pb7S?-#Tvaj_mU3idd)C)7FIn zwhhPaI=$_NImR`fH|if!GuYHDAE(QH4j24*JYMWQS`nTSmVm?Fi{E?LHV&LiPz=TrN&-MrcdwK{Ntr%AobzP32I&7084gs~)@O{4 zf21Ei{pXC{{u)%CxR?>h7F1L2H#Syba$pjE^IEa+R?&A+aS^dHB^^?4r;Yhn zmev+lM4LL1szx9;-~@MgU}(_M-hmRLq81k%JT~e?lZew&w>DjspXnZEm(ZgXH4ApU zo)Rq`QK?xBN%S+5$@$r(rKM?c+{P8*qZ5+mBl8WsW%0iTbo!L?Ndrgz z#PqVX34jATu7O^bom~87Qvowj5OqorO^Zy7#tGPx$o5twvK5&cKz5+nQE3!gB8f~R qk*-s-+&(byzmJOHo&Ufy@Hm+yFe8Y(}+Pc-DV23lVVu literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/16/configure.png b/companion/src/themes/classic/16/configure.png new file mode 100644 index 0000000000000000000000000000000000000000..a627160f9b587105c9d0c1fe0cd73710bbbe3560 GIT binary patch literal 1149 zcmY*XX;70_6n!BqVW-eafQr~bmPx@72uLb6Y#|^)wjx_0A*@9}A&d%iSjDm<``%D0 z$ZBv91zDs*!x~XGH3EZGR)M0FJ$e0Xe|cx_JLkN2&z!k4FU`@xMpjBy3IHH$OSN)F zP~lT!(8#HyC+~uQXplM09DuunCSvI;h(<*@+gN}W-q)Xm29xSc10Y5VfP@qP4v?#a zWdNe_0IbphAe8{1e7U02=_~*uvX1ty*2sY5=~zJOHO^YL&szlQOtpwPjPDH4i~|;2 zbLLov80n_6H$hH`mKh#Aqa%TlvU z)pRZ=hWE;aPs_3Rs$Qi?1X8j%?=#o9TI?g$j4cVf2k0Q4XWd^)MnSg4i;7`9l<&Ze z;X|j27uL6C_41a0mY?XEbTl~|?LUw)cEsx3A|;N}n)h&Vd~l3PEndoe3Nyz9IXpqe zs32)jAf{@qRZF}4hEXv*!Dyxx@rjq3ks05r z`3ByW5u=Dv_1Y|mVgtg*6 zt@;WCMN#tR$wMR#<#*o3s-+_|zYYkrW-ZuY6eEoPTMMmaN zt=h^T0~g7tj1BekxKMF%O8IcAkJopx65Jl4q*5goTcJ&>B1FI1R+$Lmm6>q|3KRRr zes1A*?Moli_w4eouTvhxN1X8e9tMnDZ1TQOB1^uXCW{ZSiG3%lL!bP?5IUv*l9`^J zmc>j+-b=9(zpbet4bXVAC&%xJY#^(jVp+Sh{28nO5;HOY0YJbT80p~+^bAa04U9>K zrX(T(hc_VM@dc(y7M~fyBK$)FuYYDBl8lHXJn?_S;zs@qVgR<*4puD|^rU|Q#8mnu literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/16/contributors.png b/companion/src/themes/classic/16/contributors.png new file mode 100644 index 0000000000000000000000000000000000000000..439d2bcb8ff53e75cdae797e599e5490d31a342e GIT binary patch literal 661 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GXl47$*hzgt%@y_-);uKbiIS86>KJ zQVZArVUV3{Y?WKw_KjJ7g7H0r@E3kI$K6?ET7a@D7d068f*x%Z2C`WX@bZX7|Nhka z?{W6;-P*;@Krsf!Rf5kdK@8 z)k|zcoVp&)<-ywC;>4PA_)vPlbh_cz8}~uFT|0*f*)D zYS$(qXTQ8SyNK2($Hc(E#Kx$|%2un0#%+D;=FMBzR~B08n>$xENV|Ni}F&z>z= zw(`N#w-2AafBN+4`t|E~?AXyiY5JSb{~y2o|M&0TFJHcV{ra`DZ^pwn|8Kwe|L@bu9b-AZXdw+g)y)r8m1A*aX+OJq7A!O!9Vjv00v# zcpk{%Ebxdd2GSm2>~=ES4#-&N>Eak7aXC4GfzeGZO)Si;jE_y?!4o4RGegtI&lo>f z{QSYna#mMo?V8q>gG@?h4hh-m?;pHS=@KZ|R#;eCEbh!vQBhU-`$v~D%b!2YOwCQI z0!)f^3lkp-PV&%lQeM0$dC3DN#f6OjHWpsIWY9R_M?=ezB`K1T9S!kbSy5GPyXNd+ zI!Ss7benHp&u7+M(^OtEZoLeY?$ zpOTqYiK4;O%EZ*lz!ak4*}KWtff^)1HU#IVm6RtIr7}3C45bDP46hOx7_4S6Fo+k-*%fF5)E5xo z6XFU~z{JF4WT=1V(jfr>!H@ShrN;%leR1R8tK~~3X8eA4q_j&rS1XtipDDeSOsL^9hH(JXJ|yZbnANoH&6y*cU4)A^P#<`G5BcPp{8Nk8-_sprtz1>d*7Vvm2a^^fV+TC6$$w_AD>@ zb~$D9Wc!O7lM}sU#KgpTd3k5HMIBn;!^g|z>0|-4IyKV6(Z=-ulkWcytN-84{(CF) z|IMiXH>3aGjQM{n_W!Mze^=fAUGw>O&G+9`uYcEr{@n=weU6i)9(TZb+MRC@9wyy-@`k$(ZEr?vfwMk=O|2a29w( z76WMyFm^kcZ3kp5@^oghR?-P>tDUy84Yx;YKdz^NpewYVo9oQ3Xoth zGBB{v1tKGp5Ca1%BU39=OI-s~D+7ZKDamXw4Iq_P5M4kGh9>o5%vwP;Q<2r)FaGBU6Nxe(+e U;rUWCff^V*UHx3vIVCg!0JOY>+5i9m literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/16/customize.png b/companion/src/themes/classic/16/customize.png new file mode 100644 index 0000000000000000000000000000000000000000..878a614b5cc2009cf1ab04d6cd0e1c38c8e0b1fe GIT binary patch literal 408 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~c0VEi%$|`sRDVB6cUq=Rpjs4tz5?O(K#^NA% zCx&(BWL^R}3dtTpz6=aiY77hwEes65fI;M0#v!^E9I90_~ubuhWb}g4; znPOSqPUC<7({D`9Nv%-}dwbiw-gA4t!)Jz`f40|JO_ig7j#DjhjVMV;EJ?LWE=mPb z3`PcqCb|ZOx`vh^hGtgAmR6=l+6IPJ1_o0so19QI=&c)l)&j*Z0%mWLQq8=$n}bj>sYX~ zXWERN$409lV?+Ms`=EbYm-@bjje*Jn>RMgI0yNVXCy>#U&=Zvl5 zb9YG3+wuSZf5QxEP!MO71o;Is`0kx$e(~K4DZ%UOGQN7g{dnNBgMdA|=DA3R11`l~X7r9Xc+amMW#9LN$Zd`$~zCu5SgyGzOa+!eV%4rhT!WHFHT z0Ash4*>*t2N>3NZ5Q)pl2?y9DX3mHVV2QYSnC}Q!>*kQ8buZnV4D`m_jr> zdpG$yP=h4MhT#0PlJdl&R0hYC{G?O`&)mfH)S%SFl*+=Bsldzwbdsx|%Q~loCIEOx BM$Z5M literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/16/duplicate.png b/companion/src/themes/classic/16/duplicate.png new file mode 100644 index 0000000000000000000000000000000000000000..90c7319e5c85f09a48ebda21bcbb714f341ab802 GIT binary patch literal 792 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl-tmOGnnF#-9E#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP@hhK zPlzi}!Mb(l&zyO*Z{N)$NA8|H`C!eO)4O(E+qm)MmMxc-FF&w&(eY_hH>_N7YR>E} zYuB7zFn{}o_2(Ba-nDDz)s-s`Y}tHq<;wlrwqDMdp1WiF74x~m&g&SLE!(qw`-vSp zfav7TohP%m8H8_U0a^qBwxtYxFNG$(5_YO)@T+E(~0L>nnFx)-p1=}#;km2dxcm+i;#$MuOb95k2;nLL+Wnz@E$$W@L+tYl4ciVbWVUrx4%zG~ec*ZQu;a3)fXYj&_!+Oy^2)7$e^`Ep{k(%0&c82Ek?KCoz5SX2i*xl66QEO7 zOI#yLQW8s2t&)pUffR$0fuV`6fuXLUWr(4fm9eFjsgbsUp_PHb6w4+j6b-rgDVb@N fC>l(yOiZl|Od%Scy_Es%-=QkKpQV`T$@ z#M|T|$Raax6M<1vrpB*jI8u4yj~W_+3P zNhbjKE&u@Dj{xjqM?46CZ-@YBGXS970l=-WvHw&!#;qhCPmaX`f8D6x67RP?DF>6JA??R&X`Uqrfyn==9#n%6D$EblMvSNgVUYepfzcC=$! zj}1)hMEJiWID*H;ZjJp%C8?Ju4+LC29GOo!elGIN1!^Xj#^Q$MaKm!BG$xmt!Tl_y zh|D+}9G2ziL>7*XAS1`DgCFb+ctZl_cHcqcYQvOhPNh=4UXmQ^NS3z>cxy~wQN3FJ4EM~JAK@b>*HL`_~-gcYKW-x5)m*tzAMo5FK zYxHVJr&!ad*0d0WY;FB%vAnTuZqBZlZ*+^R1>))nS?vp1-5;{LX<6M%SfbiulklT6mid| zKW3h#FLP}1A3vhBPuqQmbGYhgU|xRS|H~_>``6ppFkIHLxR^56g|i!&aVU&W<6s*9 zZylY=i^Q6FMhrdK{S`BVm6a2P3%vfQ4S!CT;MMkFWBRl-eBWTn8+>WBvrDFn+bPlo z2gb*2kF<)4#*VuKS6l0z-srv;o*FfL#Fuy|)Q?OKOm_)v+VA4w>izyfHy@wYeM-lN zetrP~{;dyMTAJHS?Zk5-!99FV5o&TI%+v9nvE%;D*=w#fU(8b)N}_O`%l*6MV-qdw zwXajodpGg&zx+Nf_YC)B!Phpsh)Yd8`sP@Q`yJNa{ltdwY;CV5BxkxIB3B>IY~oe6 z*Y}k**EB!5*7@_$9^hX~eeP;bcf%g&UmTlS%*rgzrZJ1MF#*9u5;=%S3L;UHNuSa} ys5DCOCqxpBNUWxoM!yA|FJQ5AF1`g&Xk-eFNcj&~*WX^i0KkY%i0O*XDE%Ahbqp5( literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/16/exit.png b/companion/src/themes/classic/16/exit.png new file mode 100644 index 0000000000000000000000000000000000000000..c188d80d88b7e0df40a5bfb7c35ea61fb6ab1705 GIT binary patch literal 1285 zcmY*Z2~bm46uk+%DO**9hzOPt7braYallC_xlTOM_S_2wJSB zsVv1E60o3vU=l!)q7aElBnbh6fI?X$bz~?M`b($nc;DQ6-nnzmeKT*~yo~U$VDkm| z1pr_k8p1?SwE8a^1=$2bQ+9UyjT_36lFqU+bwx#2 zRaJLQO|L|vtE=m4XlNA(qA(bav2lGy#?yiV)RIOd?!sb^U@*Iljky3j0Ac`k0vrc8 z34k7)10V!o16%`$0=Q#hf(i=E%w&rfYZ%_E(GdVwU7VkKkk!HKlkm3ljsMG&{QTCu zytcx^_A6JE*RQK?-O`9e+Oo2q^77uhcXid(gN=nLXLr zy7TAza&ucboZBpxEGp_@baZoavZlOTapHu&txYEu4?K9#lbSlf=f6rzYhf@%Or|s< zqLIUSH$FZ)GowmM`n{#)O>M1St$xMh4YAoRhK3?5W=M{{!rtu3Ef;6$#j_x=5+CnxoCxtzgx9u%aPNPatewm&Rvc>DI*$;o#z>1+H# zrGt&g$w}txJ0up%sniZnPmPa{&d+bq%WKen>9krs-KiWVE>o>pE?%_go`b{m#KeR` zAtw-&M54ygvB%o_rGY{JGW?%YQ&ZB~5wf$EN)(%#R^o6k1p-ZMtOAQw0rUd&;mjsV ziuG}vQLj}xU)NHAN`QJx%eQT9qZJkXT<%ap!aIdxQd~Sjavt+@9a!gn8=wk62GDG7 zK9rR;Gdeoct<@*Sk5C9>{%%7IN;N*sG}4Ii#uw>}_{!3^3E91^;5 z(?VFZc}v(Q;aibytWQ7N9?0TGORndj=YvN~4o#{}=|xa$leZ2n`BjmIg-h{{o4=7Zm^i literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/16/fuses.png b/companion/src/themes/classic/16/fuses.png new file mode 100644 index 0000000000000000000000000000000000000000..512a067ed1fb8777ac9d9b3949ebc67cec893163 GIT binary patch literal 1015 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLlC&ZV&z^ny^y$%~M}gdxD_3sXwCVi$^V_yq_3G8<&!7Ka5Bu@s$NvY3|GsT{|Ni~|CmH{*INm!T z0g94>k|4ie24?vs``H9g%vszra{ckdd#NB!9;#ZIGh+O_VVZ(JDw#bU>f138ZlI?Dix%9K?-1~iB1cjgH zu8nrNAN}K}9Vg4Rmw~QN7pO_eG#JdjCwvfSH)E2wyGy;t{=%m~4rhT!WHFHT0Ash4 z*>*t2X-^l&5Q)pl2?;3;OloOjVG2i&onw4hTvYh^!zV_`KTJ&tj0>3(1p^HiNELE= zYEEbVVeSCYSGefY-6`NPa?s>m!C8<`)MX5lF!N|bSMAyJj*U&P=(9Fu% z(#q6G+rZGuz+j4HlM{-D-29Zxv`Q2WrdB4VRtBaJ4bR?9z7EvD;OXk;vd$@?2>{XV B(f$Ac literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/16/information.png b/companion/src/themes/classic/16/information.png new file mode 100644 index 0000000000000000000000000000000000000000..aca1565dd4df3ba815abcc2e40fa176f54f1a294 GIT binary patch literal 1129 zcmY+AX;70_6ozjUT4X5>)q+w73Z){HlCZT&Wd;xgltm%7Akq>@ppil#39<|*TVz;d zRdy=KmcT#+iUmXwt7T-6Edf!179=RCK*VApU%q?$G5zI_bIyI=dERs9-t1F8?mC(W zH30xRo*u4##N4}68oP;ZZl&u_47CVnZ)X5H3ba%VbwZPPe(o-yee}~6LKug6_;~}6 z^aTK^nE)sWEA8tj^wP{R0yXZh!7kp40p?w`q|u^}o%j?N!|9UDq}L zVV_-6ZnLcQzEXJmU0(B|?%^N;FgsbpE0UDmTq+YUaSJC*ju#W=!+AI`2k*_np+Di^ zEc|r_b>50z6#u?JMZcnos#c|Sz=%4?tbvRw$gIM*G1Txo{H{RdpQk#V zjrm;0ek#LC`tXnnJh&7;TY~3x;RvDgl`7vX%qtV~OjEjFR0>2`K#^)d3K!%sq7?JE zq;yMBx+H8l#%^Y{t4^e2&zIri-;i0Pbc*};X!P4}A{6o0-e!m}*JPz<@|J7dCM|Nq zfw@LGC+8I?F8%T@AVqN|VJ)Fpk#Fd9fcQrm-_OS%m?vCMwA8J~@kTw}vB`Z6qFoj^ zZkv=*E36gnPR=4(<2bEFyhmR;Wpc0$$Hk`V)U1}4Y)8#)%e{5P7EuUfQ54o7e2C#Gz{|jDq7=u)|1is z!NG|~PXz@=UmE`Oh$dc{9c4o?^Q(K#B-yOH9bH)3yRa?~R zhNiZ5&WS^^{WZaJj(1YSBqO#t@y<{9ZUOvbTo!}R z=0qFQ*-bgrxrm)}AMW literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/16/library.png b/companion/src/themes/classic/16/library.png new file mode 100644 index 0000000000000000000000000000000000000000..2a4df745708367988b66d0bb518f5b700183ea5e GIT binary patch literal 930 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstUx|vage(c z!@6@aFM%9|WRD45bDP46hOx7_4S6Fo+k-*%fF5)K?qe z6XFU~@a4;wuV24@`0(M~yLTr~o_zA;$wx4F@ZiClH*bK>@RU~%ks;YF9Stx+_>@f*1lKg znzs0f9H@!`8Ui#QXwj`(w_cuV+8!=*usq^qv){oy>q~Q*mn>N_dGh4>^XKo`vuD<< zSwMS%%AP)b`uzFxXV0Di^{!a4V)g3P8#Zj1GGz+Tg+R9fy$Li8=!M6RA1_?E@X(<{ zKsO&geE9nH>-X;6yL0Cb&;b)CPP}&Q+S#*bfmY9(H?Oz1_sEeWbLY<8w{IWN{Us$O zd-v|0GiT1snKRFvIdlH}`K3#j?%cVvzrTO??%mtBZ{M|R*R6%lQ}bdvIy#Dqie}HA zy>a8lJB!_R?AWn#<;putz3wdY{r~^JEwf-cFajJ(g8YIRA}d&w-|v@YIsQ6^NhV?b z{o@i6_f>9r^j8EF2>jJKesVf9$NJ4IEIhl9^BnxW`h2z!&*ASr0?#L#PX6wyan|G7 z+i*spS&T{E?k;uqI~!v9)1sb*M?y&zFz4|KD(6!2eTHJRFp+9Xzh9XQ!m5bkJEyMPcfUDQ_k`5_mOBYOWfu(1eM;=L=4JDLZqj ztba0d^kL2Q6J`p}d_C#;GLDVmo{_3X`xh8&_Xy=Z5uBcI;ew8yrmpt+wHKN+E?irA zJ)^6W_;16it=k+wu2?(Q)<~S;Sf=_qO&dm4pqErjTq845bDP46hOx7_4S6Fo+k-*%fF5)b}93 zC&U$~;NL6RkH<1jEsf+bTE%X-lG|h*ugMB#F|Yq`Wq@c-oBxtVXL;A1(dFlOOxI_3 z-K(DdOwep8v#95?T6;FbRpos*9z6Y#+IY2Y)(b(?rSBifZAg<5oWzQAcxWFl=^EM_Pv*P-P1Am`IJ~=VP3Ax+P=)D3(TS(M>pvE#a0#eJzqY>(Bpx+t`0hR=INfd&`X5*B*X*{_+2hDJqB0emQ#X%f3^eD<|H%aOcy{XV$BB zykEEH{hHk$*6#kWa>x6k)>BUoio3udrgugc2f zn8j@S?xB3%!RU|wx|nN4uYdXbughVZWYepE|9)&&zV~;|pL;UX|1sy>{>Q3w``^Dj z=F-ETqq1&)PGw=!z4b4RsqDz-w2aSeYAvyWQa<%S!x@vj-CgFt*gAPGki%Kv5n0T@ zz%2yAjF;}#{Q(L-@N{tuk+__k;K0=5b4H=7b!ubpT;>xGo^U;R#&~H@%^#*Fr$Y{P z0R~P7Lv1E!#ctAxOU<4Y9d-Mb@7V^gGrBs~R=amqSN;B_9ue6bo0Du^cNZY{B%D`ZXWs?(%hTQy=%(O}r e4W?Emrd9@~5Dm}XO}-A)z~JfX=d#Wzp$PzL-`{lr literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/16/logs.png b/companion/src/themes/classic/16/logs.png new file mode 100644 index 0000000000000000000000000000000000000000..880923fb61eca5a683d9d99b2a6593acab7a0ab1 GIT binary patch literal 924 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstUx|vage(c z!@6@aFM%9|WRD45bDP46hOx7_4S6Fo+k-*%fF5)aMf5 z6XFU~@a@5)@7YBlMnuAQ8Ev5p&OkO+08${U15|*f#@d?U_;Ch^IGPmPoTerQA0H6! zTSVe_IjAALGYmO1lmw61^UgA4Vq(zLWccs_q=sq3cerV4S8RX$WBUIeBnU)61{|IG z%8w=p#%)%*}1frfuufYo52SaiO3GtANC8k6E*3MjJ## zIkK!-o163Y&C(k(GLjNk8kqdf@$hWZTbK7vZXOTMpI34B?Do~|tNRzm$kW*5=%CAY zP?5)@A^w1>h(~MdVU{aboRyUpFItqGv^aV3A|(f{M~{RPHVJlmIy9!F2v3p>3Syn$ zD8-!YRaNCyRi!q==llsKhFAPb*_A7f)dIbyTH+c}l9E`GYL#4+3Zxi}3=BPsvQHMA2YsWnyY&U<%Rj?A_$+Kn)C@u6{1- HoD!M45bDP46hOx7_4S6Fo+k-*%fF5)VDdn zC&U$~fYWN1i2Gr&z?0&UXC>k+pA#H4m8h zgrz&TSv~k?aON|wV<=EcZOwJ3dw(PfdVy?qRXw?`r4sqAKsFF;JoI|g@pqfgeB6Bg z^Oj3rwp{tT|u|+qzXR+75i_Jo2sk%&(q{e|xX~@4NQD@B07VYyW$%{O>;ft6}HIz?m;J^x|HFU%5B>e$|M&lZm;Zr)+0zb`Fq}$){DK)&YU+_d zwQO5yM@@TW_#bbMoy&O@pIlS%`TfzIk-7742^;s}W&G-|E-FR*dFRA3w`4<2+>WL%i|P>E-e;Kaa- zh8qhDKXP8|oamXv^XR1J%FLINGiOS^%v>2MG>IqZ(oM^ql|NZoe^$1-9yQv;!&CH0 zb!qBTQPHQVQ$xAB6uPHQS)HBr`c>9z>5!1C4ot74dVSC8>aI1N6?IEs`^y*Cwr$;B zUh?YY;h5}%8&~gM&Pw4a-#4o>Gk^Zfol=LK#isoYyJmJGZp+rqUO_QmvAUQh^kMk%6I!u7RPhp=F4nnU%4nm8p@ofuWUw!4%6T oCln32`6-!cl_(latxQa<3``*!p1qrV9jJl9)78&qol`;+0K?X{tpET3 literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/16/moveup.png b/companion/src/themes/classic/16/moveup.png new file mode 100644 index 0000000000000000000000000000000000000000..f44bf8b643ccd595eb6686ce2b270dca2b031173 GIT binary patch literal 891 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstUx|vage(c z!@6@aFM%9|WRD45bDP46hOx7_4S6Fo+k-*%fF5)K?YY z6XFU~z#v)A$iL9ZbBDd#Hb%Y@CCA;0&N~>`#iYYdN=6(N%ekJp;Cb5Om!bui#G0Q* zEq@=n_Op2B9my%Lyx0G5+x}a!_mt$6)Arl`TJQWJlr~8qso!kdZ=;=`WtV@BI`dCv z@_CsFFQunFkSV<;T62kACxOeMn%BF5KdfCKwo53XODL&JIJrwOzDppci!Y>&+qIlo zSOw^)d8;4JT=AfC_Jac#KOVgFv3$?!e*FLcfBX48ia>uFmjw9% zqm_N*a@KkMjHRi*e}3BQeR`!Ne*Y35$Kg%Pj0@X6|7e!RHl@ku=D|RwB%@doPcu+E zW0JSKOYO3a0w;kS&H|6fVj%4S#%?FG?SPC8o-U3d5|@(`4)D#G5g9S@XHU*CwKp;z zOmmi{Jrj%Juru#pI&~|rzI@Ml{e1C6$(z*45SV@bL8Z_N`vM8YtD%(^ped)7{gTmsil$-PhL9)zQ`0 z*4fwE(bwGG*VxwA(Aw9~)>qrockAibl^b^Z1q9Z$_FaDPb?(v)894>QA|gOT`~rj1 zvkQQXfB*jf`t|$WyLZ3;{Qvsx=aVN-|NQy$;}?+q=fI((%U7)W{QduzAOF96|Nr*m z&)4t1e)#(T-IxC#zx{vz<^StX|KEK2|LWuammmK>efR&_yZ_JM|9|x6|J|4WpS=D5 z`0f9Pum9hA@&67Gz5IXu+5cP5|6hIb|MKJiS04Yr@$CQ2=l_8~M^3;T=nj>VAirRS z#I|L74+lTJZ~FB7(-%*lJ%xfl@7F*5^JZI$+L3Lthd1tv2C8RF@^*LelT0kU59Dwb zctjQhX%8@VJDF_7apx!^5EJvKy;iIhv##FLi%|D zD^nwF14AnVgDI9xPAD33^HVa@Dp53;TA7$y8JI#eJbO3!I#7co$cEtjw370~qErUQ il>DSr1<%~X^wgl##FWaylc}J@#^CAd=d#Wzp$Pz=YFfPj literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/16/open.png b/companion/src/themes/classic/16/open.png new file mode 100644 index 0000000000000000000000000000000000000000..48509ab569b07c3e422c82102229dcc36fcfa861 GIT binary patch literal 1165 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl;=8&~`zjDUQ`;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$Ysfq_XZ zz$e5Nr~n8e6OwAXCqmc|(#+Co_J&=)zJ7-eA3+uu6%%WlHuu1T_ZKf+hKSobI8I-+ zY37u^{{kOB{FSz>bZApDIP;mR5cb)-3MGNN~rAkhnyMAdsAY>}F0)3ojpk$AVQV8k%tN+DWsf zZaL%~90n1wa&k>7D21^1+AWxrZ5IEZ!Fxrd+(v6uiw7Ed;j68)oT~7*?8vV zkM-BzEI9jk{plOC)^4A_Y~{Q6A0Iz`w(r29xr>(`yZLy>gRgT>Kc0H%)`FeKikmuj z?cM+Up$x$|N6$%j)8-I}=XTJO$tc@3Rexdq7uWgS~j z&pPp-bNl(;oflHeYJ(%98kX;#bl}F6LpMv>`l{xvY2J8Z+QDn33%33L|9_jkTn8}t zyi0=of*E9{UorKP7A$-I=y#-m1Y`Kcf8TVtv+h4X^!tvV(%HX{f1gSF*LPF)i*NeB z{)~SY#4=!ptnD&uzYZyS;lh`U4qNKPp(`uvI6iJPmt%iHVpl`E1{PHSr=uU?g%_4<{xl&OiN#FkmJqN8r#vbNg2 zt9nam!?YLQzJ2wdVUhW1%F4@MzVJ3MwOvj>Gsm?0+?~qLy*-ZW5)2|Y6kL3y>OFnt zteMdbb2E3=96c4fdhMFrgnJueHkaM4ingw1pRrzMu9?N|9lH+Jo_z4&-NToy4}jTM za*BOM)55%Vpr=(!Tq808-nxGO3D+9QW+dm@{>{(JaZG% aQ-e|yQz{EjrUHuv1_n=8KbLh*2~7Z%n;2&R literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/16/paste.png b/companion/src/themes/classic/16/paste.png new file mode 100644 index 0000000000000000000000000000000000000000..7f1b0a7a846bfe540b4e7ea04e900a643b9cb80f GIT binary patch literal 1075 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstUx|vage(c z!@6@aFM%9|WRD45bDP46hOx7_4S6Fo+k-*%fF5)b}#L zC&U$G03%~oR@VCU>w#WO;k$S5 zPM$m&CTvclYt|4?`=dvX zf)p_@EDm8Wuwu292l+5GH1y)di~armUS3{cNe~ed8gk>tjpfUir>3R~2?+s3%+1XU z3JUb~^?~f;CxGzyfddETShIwgD7sjgIGP(c8EJT!YBd|N%(7wW_1CWT(y8{;?hP?2 z@-S$tDw$``x-iywT9oPJNRv5n=H>B$@87?F_3G8bhY$b${kznabzPcyf0RXUR%m}g zVpeR}&6_vx-Ma_$?DOZ(4<0=_tP=Bmt()KB{*G-td{>6(I zM~)m>vSi6jSJt%)r_U{qo>P&~*FQhL@uXG!E^WWfrHxBpzI^%g>C;U?YrkJh@Z z$+a#lX>-p#pcAyEqGj2O=P#ZE(Tf*b!`P2j+ni`{nOYvdaNCWNDHr4GPIOIPvm=WA zc%AL3W|yVe=83*m8#Zj%wQJYo$B%c%a-68OI9jfMFk5y{0#9Y6_1*-I`}gkyBk1<+ z+yDRn-|%@>BQU%iN`m}?8FXjt%oGg#_~%z$+5}}wAC>g4@4o!HD3^Xt_?KVWPyZjj zKYsl9`SkG*&&Y2NrU@+j^J+GqGv~5@ANM7Sk@bn8d=^G!l}Z10%2G(UT_50_)v7cI~XL z`1Ik^NA3m|mc4swYySRWZfS9KIeMg#NvP5BpyI+rV6+HM44f3?pnK79W8p{6PS2B? zD^FfB;^Enp`BHLb8 zdbf~$z=Fk_SFhf^eEa(S%a*w@su(0bTH-l*xzAjy++SZ_o>FL(G)_M|&)8guC&Yp2 z^Ru(Tp~3U{*`#Li@I>9R+V!dG7k9&f0~b!rXl%TCMC3)>=GJFo)55Ot6eJ{Pr}L*V zFzoDc`a8+#Y$4F!swJ)wB`Jv|saDBFsX&Us$iUD<*T7KM&@#l(%*xo(%G5~Pz|hLT sV2Wjv6N-l1{FKbJN)!#IRwkxa2Br`V&)!YG4%EQl>FVdQ&MBb@07kI4wEzGB literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/16/play.png b/companion/src/themes/classic/16/play.png new file mode 100644 index 0000000000000000000000000000000000000000..d4720f2d8733bbbb625605aef3cb1a136c76cbf5 GIT binary patch literal 371 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^xl_H+M9WCijWi-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+g3lfkC`r&aOZkpafHr zx4R3&|Mvbf`++>p0*}aIAngIhZYQ(tfDCs}7sn8d^T`Pdlsl3Vj;w!Re>jjW_z%}V z<3Fi0&MS2KAFOZt&of`*l;n+%nm^8enE#N^nZaj9XGOd~Dl4PA&>lq z@w*>Q0ou->TH+c}l9E`GYL#4+3Zxi}3=BPsvQHMA2YsWnyY&U<%Rj?A_$+Kn;>08-nxGO3D+9QW+dm@{>{(JaZG%Q-e|y VQz{Ejrh+`r;OXk;vd$@?2>`i&Zr=a^ literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/16/preferences.png b/companion/src/themes/classic/16/preferences.png new file mode 100644 index 0000000000000000000000000000000000000000..dae98ee8ae8b57af058cf163bbfa8be153866944 GIT binary patch literal 1122 zcmY*VdrZ?;82wrhMN8C$X~jKcafRu?me**9lU54tIvDR+4Ow{z17Y$g3>Xl^fs&0N zN(e5d2{<6#K-9QN5gZfP06|y~7!}5=&=v~P0)78}cR%J|p5*(^J?FdUCf_X&4GD7C z?X(*J9QeF|aDw-3*Df2PySnX-Ajmd}9n1!pw4J&yCli{K6&}QaJI~%y6XHlbFFY6^ zp9WC;9e|mzid6vFbbw_M0IL?@VEV20Fh2nDzR=Gixx@uUHLTZz?k8BU19dG7=E8ad zm}D-NKR?wrzw^8V#37(>wKsR4nyMggwAfgBS;LoL;0M5akFGW!{G0|#DKy8zQVTpT z0L5LB>|4@oy^SP{)Kv;8o^Zk$UN-M~5WBqtfto}x%JvTB?-YKxEvsTd^NUS)CWsi@ zl7N5#_r);RK>Di~Dnr2a%~$qzwg!0?W-;iL9bAjzwCP{=V!IGoSI|l|QdZ(a4CDAk!|F7q z@kLsuVb%}FEc(7vnznZrI?7c2b%y0eqdL@}`og&O`19`uv8 z2F=Xo+zq4xGy~Xk8#GEmNDwGaHw>QmoU5Hzq$?9d|*<+iFb0F#|#&2)U}CI-BGk*2Rwzo@_N%EcI3? z`zjEA6>WW~>v3Q2cGM0XTkEGTwUSZ<_)+3p{l(!S5kQN{5l0^u3}WqGp0!@Sa7Xxvd(c>I@&l~%M=Jp*-^oT`dhLMKjn!t zZC~9hqm9I#m9qpj?&luIE&e>#o^L+VDSeh&9!5p7IH?Ek))dq$iPD?ZPP&pb~Mc+eSMZghqlgBi*2VRKYU p%`D-(7D&68kerzJTELs-<;|jdzX~j^-IyQ(z~_bp+~J5y{sX1c8*l&s literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/16/print.png b/companion/src/themes/classic/16/print.png new file mode 100644 index 0000000000000000000000000000000000000000..9f1d39eeebd09c7d2f6d435c22ddc2f493271f08 GIT binary patch literal 1001 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl-tmOGnnF#-9E#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP~X}B zpAc7|f-`5%Jb3Wn%9ShEu3ZCi4<9~!;lc$VW6G2%XV0Epv}n=#_3JNQytsPx>Pwd{ z9XfOfsPgvh+eeNZ*|u#PQ2h7r-zQF-c=YJe{rmUtfx%@kIDY&%P<+pxJ^S|UTe4)y z)~#E2?AQThOr1IvNCM3Vf|Qh$8#itMZG>C>lyaUmuqCMqf_ zA|fIzEF2URbne`_^XJb4L-POs|1kmLrNH1YFA4GsW)OGu%wbHq#Votd&Fz-kEu%?q zQ#Dfld2gDxcMS;cUNiU0mw&$|@yhx9yR5)%*bD--Z09_3b^wiFO!9Vj>1$%$oDbx1 z7I;J!18EO1b~~AE2V^|=ba4!kxSX5-1Sw4nX<}h)1_{ROOx)hu*=2kN^CxqwBqV32 z^NT*%#{5ZEX6~HW1xz;U92m{D%d`38IvD0J-#LAI|N8m$4E7NY4h9Aq7Aht>HcCMr z5iO05R}R@|S*e-n*(n;Hyc6Ry$MMh|8%tGFU0Y>iZRw0@D$P?`UH$Un>KqdT3p-m| zTTPmKCI@FmR=TE!min%p96VR2dCuP2T4oUwGt<+?8e6t(+ge^yQo`gIUf!?NJZV!` zmcGaeP3_gj85vob=BB2VX18wNe*Gfr6=UqO{Dh2*jFg45bDP46hOx7_4S6Fo+k-*%fF5l-L#E z6XFV_2LoVM*RkIM|p)gyZTx z!;^Berxz92I$By-yLi|qaB{Ku_?G5GrA6rKm6+P8`JC4<<`I(MW85B*QjyWj{q^si zbwGm{lf2zsY%k;nMglpU1s;*b3=G`DAk4@xYmNj^u*K8GF+}2Wa)JVrfsvu{h7Cpr z8#Zk$E@)zz(J-NVcKh`Hc!vNEl>=u~&L}8psp%Z$f#*wjz-1yiBmRqYDRR=v}|r&Dztyu)LEuSmhL*k zBV#7h*0yHNnj=4WfXN_jC1>KdhiaRF?olmqjVMV;EJ?LWE=mPb3`PcqCb|ZOx`vh^ zhGtgAmR6=l+6IPJ1_o0sn?PZO(2$#-l9^VCqQTV4#MH{b6r$nTyUEvq8W=oX{an^L HB{Ts5D+`ms literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/16/read_eeprom.png b/companion/src/themes/classic/16/read_eeprom.png new file mode 100644 index 0000000000000000000000000000000000000000..c9ef59ca416ba66f92f9b45f45dca25b6b9b7605 GIT binary patch literal 911 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstUx|vage(c z!@6@aFM%9|WRD45bDP46hOx7_4S6Fo+k-*%fF5)YlN; z6XFU~ASo%y%*-s-E3C7QMQbgaP@RC_4kqCR41Ajyh2}GeqzelyVBzm%P%cq2v#{{= z@`_JLtgEYU@93B@bB245v)lx3D{C7cKmUlRX#2fdOsNd=^75(anaQc?t^uy8si_i@ zQVNy|VPWAG78cSnGR`g@F0P(o;W0V6Mas&`Qc_Ziii)OY<|U;S>FHUisp+0xzScJO zuI}EU;W5P}l`=9i`uh4oK|!jjs+LwZVd0U{(XmNMDS3GXB_*Zt@rf?3?tFZFAt50V z5fN%?YLb#t_V$j!Az`s`@mbk9K;NmWt7~iPGBGjbz7ooNAs+EmDEWz$#~scm-l$N%) zcg&nQYwx~&r%s)kwtSlE8YSiRQf=)$GiJ@7F>79DPk&xvNqk~bM`!1;EnqoKL}{skK}HtkrlWlfA{WUFJS zZ>;m?MVnUbS{CLV?LK{Cqoe=*0~b!*II`v3nLCGsQd*~O?Oi)}Z}Z~Go4d8ou;#s! zn-_P_PGeolr>}<}Iy3af%g_EZO-&oX=Q4pZD43+U@*n9$q7Y6ZhlH;S|y4GQ!5iwD+5!AhG*|4Uk7Sn@O1TaS?83{ F1OULcGgtrs literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/16/read_eeprom_file.png b/companion/src/themes/classic/16/read_eeprom_file.png new file mode 100644 index 0000000000000000000000000000000000000000..7617c17ba9d8577836837cf1312f5a150bff4957 GIT binary patch literal 1242 zcmY*WX;70_6n(*>EJYSkY^$SV2gC&k3RFT{M9~D0Q~_~oH5-wz?^+OX8Ko=*L_h^b z2Vs=W5H=G?LXu|tvO&T}FhCMW*vejQt7C@_{h0pp$GzvCGxxlA?|TKO@mM>XFKqw- zb|JXn2m~G0!)gPP-979h5%}zCPL`#ID(j&0P0KI?5971-JaS`DFWV-@z z>n;Ev*APVXOf&%V1OPCP0dPq!zal;ffJNTvQ&A@n&*sgWNhDHLRaJ3e5ekJul%%92 zGMT)!$ic7I(uZl~bk`mcEi5c>SX^H2P3Jm5BodvTf~^&(Jz2YUR&ELn3Ej(bMA48g z@Z|B6yP5%N|f;s5mSZ(Gl@n zbhMqF9a86HXH#QhoE#k;?AMpq>2wm2*l0AatgM(!rU~Qt*vJ@{%^4bmWspoNmMG;4 zjk;eb5PZWpm^AO4Jo`mgSC?sGLJPz2AUvcQRI60%UQS&jozdMR6bP@dqs~n^lc#nX z4Tj~#r782IQlSv>xg3d-CsPX)15NOBHKc#Q69(5u;q<#{v;Hg=YhiAFP_5zj@mg2{ z(d04&YuglW>Q%-H;aK>iI5gKaOy`rbaOR|Whf!}>T38f8O6mB#$h63TRQ)>R$f#Zg z4<}S}_SJpsuk?(V`3}}-+WVx?$KpSjkJO?wodU)R9k(G})q*#xPa7j=h~RKmTS+ZB=8 z5t-6K$rIct>eOm9LZLXfR`85xpw-BK%;!hvu+C<(E?#HH-4`d^6+CNbmrEgf>#H7~ zgqqK~aI=?q|2N8g5#_d!bffQbYG=tqI;WS#<8q}Ei5!yYhDRSaa8qt~kg{5?UTe8o zKyPmD`i^*m(8=lvTg(6s^mP*8JuU_?ZGHahyH#at| zt*!OpU%MlJ?3WRNj|2hq_aD4%)vEmZ*02r1^>2TgIz>X~Fq%+qt2x!HM_m8WKHIfg z`PTDa^YgE(#dymlO>Bza=#gbMasrAJh7BIFX4~FFh;<6?LOKApTh;>ws%y6+4VyxO zgQB*>WCE}_=|(-AzAbv=b^@8n=<0ZFnwT=r5D630lP-+z&TA9uq4<#SumMOZ@0Y0*UJhgjuY>zN z_jw#>Yiw<%H&vEV%F5|2$*~D>NwmcHmES8+7x#~84e;2TK%%)p7WqOhJB)UB$JcyM zo@pIPpXsmR5$c>y7rc8e4y*FK)JK|b*2WLhH`p{b(#IL8@QlYLX5x5zx(hTH$NsQr zV6O26$MZ{foZVy{8;d`ZwJMTDz8r|9E!@g|ne$%%(bmOlZtkn2+!oUH5lAO;R&E4p z+W9RYTl^GxC)bP<=QAk8j2H|#Ed~K_2<`3Tf%f+B_K))R!yNX<_#Qfd_Qs&m75;aQ mePT#VrqHNAe`4^(`1oSbzW*C$mLI-B3?SqLKA3)taOXeGx>|Jr literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/16/read_flash.png b/companion/src/themes/classic/16/read_flash.png new file mode 100644 index 0000000000000000000000000000000000000000..3591516def1ad19f541ecfe858d2d468aa026aee GIT binary patch literal 1148 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstUx|vage(c z!@6@aFM%9|WRD45bDP46hOx7_4S6Fo+k-*%fHRz`$f4 z;1l8sR1g#roRO88Q;^%x(x`80WMFD~_|So8PapH}@Q8|usq1KE7UpFZ73dfn@eA-v zNQl3E`}W%POY`T??(OgP4fJ;Q^Kf)^o;q{t`gO|!!h^g51D!qH0wW@W!ovciA_Kxg zd_qHi;?H#T3 z^fmPjw2X{(4RkdP4Rnl*^_)EH^$fLKyxj}S%M;TQlQL5L0(~9aUCQdKBcj5>BEyQR zE3G|Tqoc#3W5cxdG|cU-3o1&p3iDLERjdxN+3sgkU&HPf;^Xb*o{*kw<7j7YYZafK z;_mMo6cs5oO+57tU&Ui3_cJ`MzMk1vwlEG#T+Y-}>}vhIO?Wp&k-bB(>9ac13@ zvpvkg#Kfejr^_!Wz{1MH%*@Qq!xNbpAD@(7?*3j>C^hlY-p zfw2KIKO4K2Ft4!;SBik?Ap^TR`bI|;977#kyu9R;6@-Na1qJz;r8s$llz2l`xI>ir zI)#)D$tZ@&>*#9(BgNFpR6}v$zqDmP7;Jevllk0f7HOb4j7i?^E_=K#J$eu1a29w(7Bet#3xhBt z!>lhkuD ztjydwu}6-msx&eMt;>5SH!tp<-M+eijF%i3XC7GaV8VqBA39E~cp(wFpdltFrp75L zsK_fTs;bQ*}q9TnM7*;QJ?)FK#IZ0z|ch3z);uFGQ`l#%GlD%)JWUF(8|DIie-}%iiX_$ jl+3hB6b+_UCZ<*frVtI!-c7y^)WG2B>gTe~DWM4f#>scJ literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/16/recentdocument.png b/companion/src/themes/classic/16/recentdocument.png new file mode 100644 index 0000000000000000000000000000000000000000..965e45f2d11cd92d4dc3cacbb1b92fb216959c9d GIT binary patch literal 812 zcmY+Bdq`7J9LLX`k7Zd=Ve3hMm=z}6X$r2Ow3&`l%x2VuVC5?Vd+3VF{+KCdL}k<; zVM0Pd5WU-KqARltvH^H=cd2kP24+!hab6C1HM-FQ!cX$uvb{8E|<-!9Ph6Mrvzu)h2xr|05Z0vSB z4VR6@3EWEBbi*T$IW5-zgy+@BM1Z8HO z?6jw)wUv(u7(tYutv2J7*XMik;w4El{X<_coHUa*ydl;A7M9>!In}3$4ozr6!OE{bZ#&IJ-`(}C4F{QWQ6EypA4C{FJNk2)2 z!a`ss^wDS<#4HA!vbnv%Iqv5yhf&PH=s3KcCpg1}BOyM*x~9ho(&ljdn3>~m4nKvD zm7*ywJOXn1`g$*k&}Q@oTKV`X%B#?M&oXqLKLB-bKDY)IE}$>b_PyP;!G_z5|0+6l zFi(+^)caim!;yXm$yxn-L7p(m-O`X z_10aEztxhRAlMBC=FjmP(c>PtTHPq@^G-If6XMx}NhNP<^hfs^ZFjK!$u*h8)TG T2e^Fqtq=gp+(N~x9QF0T%cZ0r literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/16/save.png b/companion/src/themes/classic/16/save.png new file mode 100644 index 0000000000000000000000000000000000000000..fbcbc53a435ee3991e15747ca3dd1d0f598cf24a GIT binary patch literal 873 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl-tmOGnnF#-9E#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP+w$# zPlzi}!T$5-qhsQ2tZj~6x_jpO!z=fm*;rXyn3w~(r>;G?a`)M-N3YCH&2sY!vvcwe zp1OSV;Y%|UQ$syNAt50neM6uLhI$6tnp%>QlDb;jK(3Camb$VskfE%iqOPLK#Kfek z1mf!G>TP?OG^U9-5u>6ZLDl`G&Dm( z!(!tS!onf~1A~0LeY`xq;^Pwwi%MKw++t$lf`dbnQ_>2HOH)$QWTd3S!y_XjqXUA1 zgMvcx3W~xbqr<|&eSQ5kG&KJI|8ITb!%U#-%}av(fU#y~tXO;V8M{F0p?`U-{;R(~ zW-CuNy2X4rJmdl+%R}$-qe5S|&phd>{qK4Z=ma@FtI*)!ra{C>~#3hUu7F*Q3o%P#fy@Y9v^xnEHqhZssqz0t&@fu zHCJY4X1ai5YotZaZNeN8P$~yYw$+D-JuU{Oxvu?V4^n!ea_7AfX7f#&B zxhY=K=j;O?hQLbIQnC}Q!>*kQ8buZnV4D`m_jr>dpG$yPy>UftDnm{r-UW|xtT2t literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/16/saveas.png b/companion/src/themes/classic/16/saveas.png new file mode 100644 index 0000000000000000000000000000000000000000..2e4ba2b82d40328f1711b65fb0f15638b801dce7 GIT binary patch literal 935 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl-tmOGnnF#-9E#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP+w<& zPlzi}!T$5-qhsQ2tZj~6x_jpO!z=fm*;rXyn3w~(r>;G?a`)M-N3YCH&2sY!vvcwe zp1OSV;Y%|UQ$sz&|Eu->&tw21At9lPXw&}-ML}Gk6$~IjNl8gKcS4+~y0S7*Tv6sh0 z?YVsGLEofll_~E3=L`7w_*K_6p1g3irM=tT%^m39>yva6lT!8_J+tq~shYYbUmrg= zS9eEy$NFU3|8u$TwsYudX@-P`#l|Isg+&Ag2KjjVczJr=*^v2vp>RdGwvL8oOiWyG za7c1WT0v3C$*sLdS68Q`rpZW2hlfW-Mn)GFm*y81XJ+RF1O*2Lh2#|!g-1q*g@yb2 z`fF%t{Qv)dTh?58px6Or$7JlMyGzDL5xY>?k-K;oBz82Ih+L^ zk;OpT1B~5HX4?T7hdo^!LnJOICp0j*sim>095{3;?esau$Av|OpKsi}Y5k$8vgQv{ z)3-8(2O26mN?OMh-aW}-XVhCKG%4s3k5S$`xd1_b{rt!Ua+dP(2G`HqD+I(bYAlct z;W1HGG10L(6zwUgv0#yuq^PX0wD|l9Gp4Lz+vIMmYN~6itY@rktsc&-vS8)Z>C@)L z2SkL#1g+vN>+*|?s&sWt4c)pZrmRA`jC{I`LaMZUhKxd%ERZdiBP*9B zBby0Cvhry%avIz`=KO+YAS7VUFQCfBJ=5EBeL>!ag4_*-xf=^}XSutq%}P7FaNfB^ z^HwLtu1StPKBfP_!oDLj`%X;hJ2|CqRZPh0=-{23JC48Gxc|wb1O0VJ+UiyWd8`Wd zTz52g-MjpC@A7s|$~jPxcc3EoKt;}mQ1|KT;;Ve@b~MHAx{$DId))5q*gaV>yVD~! z1v@V>QJkkHG+Rx0m5a&FIG>xn#aCN0Hh7vY^4FTNK5ois%2xAwsn`FV4ga^49dVcF=#XuH;MD%WVN$YSMOI(S?oTyaKXhB$ELP`VVJLYv zg!lh!p8s=r4!Ls8$l~mL$JhOmcabM&T2YVTq5nn){!FnqS+35zLW6gWCfCU*p`*b9 z>ohpmYjUphq<@S+B9Rzz6B;4`%HO0EiC&u zw`i{s*E&PC$#b2iuJ&7D&(#!~9J%FN#I_&hna#JO#QraI{=d-iMwrm-44&ru)~ye% zCiRGJ(q!Le$iLiG-|O%j_cLGShPs`0=lQ)v;@4vFQ!d<+TtUtlOKFEjMRVrT?Yl@(RxmKIj#mls#p zXuuqv7+C0;8CmI?8d~a`s(azqu3v4(mOYzxZQHlLbL)Z@IHZ>Q=g0qV>71z zWemRQ;kU$CxfK`yswJ)wB`Jv|saDBFsX&Us$iUD<*T7KM&@#l(%*xo(%G5~Pz|hLT sV2Wjv6N-l1{FKbJN)!#IRwkxa2Br`V&)!YG4%EQl>FVdQ&MBb@0CY^Eo&W#< literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/16/stop.png b/companion/src/themes/classic/16/stop.png new file mode 100644 index 0000000000000000000000000000000000000000..f2bb8792ba30f0e99341f254a0b4b9e4fee63ab4 GIT binary patch literal 312 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 literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/16/write_eeprom.png b/companion/src/themes/classic/16/write_eeprom.png new file mode 100644 index 0000000000000000000000000000000000000000..3dd15566acfe855461fdac8898ed6427641fd7fd GIT binary patch literal 904 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstUx|vage(c z!@6@aFM%9|WRD45bDP46hOx7_4S6Fo+k-*%fF5)K?zh z6XFU~ASN!s&d#o-r8V1y@#hidCl*Zq-C6$cXWiS$^jwGee=y4$Bc_`wO#ece|5viu z+1W?O#J04yO_@4%_MAB-_PkRi821@7{rk`S&4&4-E3=ccOK@mdVsdh0YUIL6%_Suz zOFR@Os4xZu1xG~3m*pWDJUqE zSJWgVrug{>THDyWx_N~~#OCFfC@3h($;o+nd1+{91c!vh#KdQ0WMyaPW@ct5C8xT& zd0JW9OGrxE*w`c_BmmV235nR+Is^xYCL|=~7Zhgac0yvJkFT$@ zhU|n%)27dw*V8wtsI(#}HLbF$YX1BMH*VZGbm&lesHcyQS5M#M*>e|9n=z-Ur6WEu zB{3;EJ3CuTTYKvCIWDel|NsAI-x(hU4Em6gAU{x?GFWo1In2%fdF6zEt8HaFJ0rD? z{%&VF-D|Y;*T3!gOK14*54QZUOI&E-tzUb544G`ha;6`C@%LSwF~7W#vrlMB?Xsm2 zx~xpXsy2QhYGRx+tXW4r%Yeo*CV9KN)Lh)A5D(;V7I;J!Gca%qgD@k*tT_@u!TFvp zjv*44lM@s;H*8qMxnX1Rf)AEEopuDWR8;(Q`l;x{=%|<|7-(3?>8U9Y9_41HW1|$L z=N0D|*x48uscNNWre~*UsA;Kc>O0j@*H+nB+geTCTz~(9fLQ0rj^5Gk+gI#ZvSrPl zMM3`e4@_u0c;d#9D`)O3T6OEvsatKF8B5mA-P^o)^5*W1u&KX literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/16/write_eeprom_file.png b/companion/src/themes/classic/16/write_eeprom_file.png new file mode 100644 index 0000000000000000000000000000000000000000..efbce284356a0e0510e394eab32ac31c9a1848a6 GIT binary patch literal 1223 zcmY*XX;71A5PlOAS~WqjV};hiq60mwP67!np(95@hy?~i1VKu3kWd5>G*)f}MjTW; z5GY{kfpi9;L@vt*Nk}3&3Be>^q5+af0@^`22CZ6Z__!$i zx=+>t0Pxi42pWPLSM9?!i2q{Oh6DsK8DX(u0CZhizrw^KIqEnqDjWz#x6UBRXY6QN zEC7YR0GzG>V9A9b!k-`j@QeWfr2&8~M{9mk>;(XQBtC{7iD=y2-B~PFeSQ6fbLUYg z6vE`>mQOyEs@*a zeTA{xZ1b~o)6S_8tyV4-i$^RRjrgJW$M{`h-d` zY%p{Us?<}n!tuXar4OuDt6Hg6DHLqdcG_u(Uf6%&&`A>vcT0z*6Ej`rQ3ow{%JbT4$SPl2s$2mqR%h#c3tIw7l+w-0t*Kvf}eSW`kj9 zNKwL<-H_NauMMZ3l_nNJ2TnjK`NG4MitGy6jh3!qm0IveN54eLJqsn54lpb4r&r3; z%Z6CRgK2p^7q1FL1CT^4RwOMAx2_R=arTU(DrD3T0{6>_=L z>2z3aT9rmDgv3yvu&=MB`L<$64jc3;rQ&W!M}JQrzp<&U^^VKsI>)&70dhqOj~15z zf(5VN5ZCK<-&5B_++JLKyMOwn&-DDSE4}8_iWvQS>;>}2!P?yD! z{kS``K2CJ=WU%|X?)99UoSa54LIwFtTYuyKm};{wVKHUsaPRAB_C158?@(o7visX{ zIGz5NYQDUaIpfusJhrKZhQk?y`U{q@XCf88zjL1WcjIu! zUTm&AU?$%?@d{rZt6LYEu=!BR#CR}8I8aphcDb(B%acz3Jcdsy7&c|X86$l1A$)5@ z$*8s9<(98gd-F9$jy4HkNu(q}ikLe$@aogRoN*C$`d~-L#Geb6{;W6G#cy9{RbY5L zq5IbFc>kyk?80R?#$zw0m2mm!QE45bDP46hOx7_4S6Fo+k-*%fHRz`!IK z;1l8sRNx;Nke-?GzkuQYQijy5^v>Rb|9T7{)XAW4YE&Gc{9l9Ne-Fc}m(QO*dBnrR zBPu4Qtf`(+ko(_&;m7H)yZ3I)pFg{|zuPy^`%A9j#*Hfj!h@z)*f@K--HDY83J?41 z!W0k|^3RdM$uMMadVjkBY+k%_Idv$dm(cR--GUx;s@e{^zkLt~?zvyG{R zp}nJ(p1!8OftHc6u7R$mp@EK(v7Wn+i-D20lc#HCedB*IhQzeQE0M~6fxZszE@k!A zwP}w36dC?$GDJs*MaPC|>uH$VTbI@ry!H_JFUe4rr2fE``@bwhLVB`|qn){}ReXBN zhH%9P9{dS8nW4ef?{pZ{G}T#HSlHOuG_@su>oEP7W2jHHl~+s!|jTk+=?d)CLWaQV6^(Q`-e46DMIJpJMSVkUV1S!inM#NWt0*fl^0Bb#2ymK9 zup0}r83?fn0e!8erK4`+X#4;F|D(^%ZvYdAT}hB%FoU%18ZD2uKOY_Eeg9_9uNvjB z?)h7NfzX}z-p5XxykP&HgNF|t-hXh#?s@aO`m&>4xTas)vL6g~f0)kvBkR`&ph=8L z-tI1&)@Gdtrbh z)H!f8H~siw?zB%IxjDEvZ(HBEd9$;li;?w+s*3E~Ik7Qs@4R`lWJx2F(L1?$arf-X z_SO9>W8CDxxbwh*2NMFUcW?O6;bC35pus7m#3yG?Y>iV=(5AUc0S=m~rn+~}=_wm) zTOaq6)L1ZS_VoCK@Q9F@ps2LvTp|J5>sPEzm0Xkxq!^40 z3{7+m40R1HLk!KVj4iE9jkFC6tqcsNST;GKXvob^$xN$6(O_z2Vrpez3eoWF-Q?>) O4Gf;HelF{r5}E*Xi*zUe literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/24/add.png b/companion/src/themes/classic/24/add.png new file mode 100644 index 0000000000000000000000000000000000000000..073c0b2f1a256379b9c16429dc2de0d6543d6443 GIT binary patch literal 1402 zcmY*WX;4#F6h3T~1dwG|6j6x^QV>j7tb)t1hcyI2R!PW%AcPnoFOPt-C4hpgqAViR zTB}t7N2!gXwNgMJWCsKUMQiIWGHRXC+R}$ke|WaehrSg+yEh^<${#0~v%o9^%s60jSDSXFN7)Uw>R(!?MS3=3gt0T>s6310KTx!safXJ}jmON+s% z1Pnw#6ahgD`h~Ef-fU_0SBu*ktYXi?5;2i^epP6+LT%@=__2wpz{tJjs* z?efhJM5i_aPP489^9le*0Q}B)kf3R_v3azqNz+)bs;}47*J^5O)HPMAs)Ndd<%;q$ zd6`%y7RifBWCcaC{RJcWg>tMwhVGN)j zRGD9{79P;#9vsCg#srn)XrUU(RmNk=IDsODFOM$K>=A1?#p;ax%Je+>9)UD1YcQ4Z zYYcag!5dD>mL~FL@u(tJpxlM2qA}G@OidT4Xs9YYM;Xdf1aoB6G-&`b=%3W@8{6w0 zd1FUt&$d#vpnMdq7|W@=on1A-tDf3hJ;lK^!Gck$U^IZQ@yk~GmQ66qCRn2Jr+tgt* zWXOy$U>bkZG^)oWwA*-7D{MUp-e5{*Kvcg$?xY7c=_Z(T&6yyFUDcy@ zf!{gsJ`G;qfyXfrPHzy-IAYTd=pFlv=_Q#n1nvxxGi|`T4_UuM)&tmkAB2w}{|V$i zf|3^?o`a(2(EW-hdCj{t$KwoH=Z;xpW7Zji)*h!|YbUs$f`x?z0RhRxznP9khVKNI zh=^6%(;a#bC0Y+9pWTIt8}d@K2u#L0=_MWY)kRlGVh=A`!|QvWFl5R9ibd2NJL3{T zvpxCG?OA-e7Aqvs@7d5DOBZ|~WKrYzI8r}lz%XY!P6!V2^Nw;*B1~KTWi8Fk&2i*` zxG8P1$aj)rw|TQ~-*0QLT%p(r*L;5x5niOu58N79KabR#P(y>mP5al7jvQ-jCsnN@ zt#Nd;w|60ZeYE9h+gj(fPV3iSIPs${dOBxsQlWP;Jv%5pF3&$TS`fzFT_7gvh|k3% zJNY4;gnfZ&F}XAzW1+O7!JbBc%#Iju_T+x3YUySxTfBJxipmaIZj9^6d`}EJQF>b% zeSV^2x1_M|R#>Yf^X|{wziZmAVH_Ph^xccQl7*YSz6WY;wqYOpOB$Ahw{7R|YHBS> zpv~S?4NVU9znyt+U?s1TJ8#&~*}*MV{K?kSNw^l$bRqF_Oxb+h^}YvLFF#bb*2M0g zL!ZBU>7|HWmpFItTJEgHq0(vb0przIk@|Vz$3LFB(LxCuUp?NKbp37bk^Arddh_Ou zvF-6az-IHmb>n5y@aMHd{bSLTWHi+i$w|clT*(x7XEMc^vL%YL$NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE z?e4 zRGzcp*q4cu*WY!uD-_6P27<#Ah1c8uu$#C5sQbgm^Kt*}|NcAcz-3@+P^RK}_y7Y# zf{mH>)SNd(K;NpCxJHzuB$lLFB^RXvDF!10Lla#CLtR755JNL7V@n{?HZZg@FbD{| pZ;zrOH$NpatrA6psg;STm4PWl!?SmjuLCtOc)I$ztaD0e0ssS>s~`XX literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/24/arrow-right.png b/companion/src/themes/classic/24/arrow-right.png new file mode 100644 index 0000000000000000000000000000000000000000..084d6597c4831fb2f24bdbdca9d3d6d2db767098 GIT binary patch literal 479 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_*1mUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE z?e4Kw-MgOP=5M! zu2qam#)Bux#c6j|9QEAN_MgXx=Z)T(*N`FrUO_QmvAUQh^kMk%6I!u7RPhp=F4nnU%365NR72S{WDw1m3qt(U6;; jl9^VCqQTV4#MH{b6r$nTyUEvq8W=oX{an^LB{Ts50~V^R literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/24/changelog.png b/companion/src/themes/classic/24/changelog.png new file mode 100644 index 0000000000000000000000000000000000000000..7f26eafccfd430e11cf2dbe28a2e2d14cadef5f2 GIT binary patch literal 1581 zcmZ8geLT~79RJZMk6kJx%5@xS9#(WEa~^BG$a9^Nhn=T(ORcD`PIu~-OXaCXI=YB# zoW@vWnVaXwv5}22^K51lnaNY`EB8m;`}O;NKd;Z{`+0nSzrQ#Sw_|F`I?50PsU1f- zc>$@twl-}5J2#Kn3_(F#D9i}X6?0Fm2tCxD_KjPg1GK{vjIpcp&^ zEdo=F5Q45)K#(X1f~?aZNDG%i^R$5=`6>@rA7|k3Ka^0Z6iV?LO4dLHc=ZXTYp9^p zKlhiHmj~zi`ucr+eYbAiYHn_Z!C-@fgH=^k1OkCZqp?`5#Kc74qo$@Nkw}0M>_bCC z7z}25dK!<%Baui&Ma8VFEReRdvy)Dz7ZeoK*Vl)Khp!jna5!8px4XN$r>BQVB$k(# zlgZ@Z;9yXqtE($EHWpOW)z$sHD-{(L4Gj%ov9q(YwY61JQd&P1O-_yrg~Ex6NwHWA z`k4BJckkYTR%Slo{d=iYIyyGi(b@SPV0I02b8{0S(ZJv!pU>|X2zq;a$H&L}`}@I| z!^6X}`FW5MvI4G8$jHdRz`!~QfSjJb{-2Xb z4nGkbu!JiKL{?{4J@f6pfMm^p7Y5kkonb{9e%S_RlIV3z#|!Dm=r`nQ4u4=cxuomp zotk~PSB|*91_p;pDw{L|a^uNu{lmiRxg94H8WGp%+JU*WI(B<|dqQ@(x_?1^dv^zy zkGT3~dk9s@pCac=)(I_4E3D6=RI8pQa(Mj-h3su1)JnaO3^E_9AaGSk@D`1oaQKwN2;Kxl+3-;FK%CgSxr ze`01?+w$^qQ&UqOttI7e#;Y1O`hMxD+vFk!tF^V22N>+*udJ-Jw6rjp%+=M^j2*7` z!0oz6dAWH*%3C&Xa0Kt?KajS=Ja*{iZd!6=D=!qgrnRF83QOqu8S{^4cgbIO|5%mI zhRd6!0FcHy+ypB>z|<5p^i1qfmRQUo!<{qtTiGDB+>b8DoJ5U0O*5b<;ZUa|AxLHG z+LD9*%mDwV-0E>BdmrQW;Gm$O5QmMea8)}-b#r}NRa0F(v!lp-#^N35z8DNYM-cqFxS_>YKYHMrH zlbqZxpaLp?v-iTGgFJCjS1(;s@_BA)Qb2{5kSg}j_f%Bq({ge&_6`P~^i;EaK`Y9& z&Mq}8t}K?@>$&Bt?Yp0L`}X;CWNRnX6l(VZ@qjKbq!>udS>mc^tqP# z5vfs*wzkfW-wj+{nXRo%Q#c%M`m!M6yhN<0`&663z$>U`_@CwXA#LatH=|c#CN@GP zgr)=0<1j1mJ`AIreWOCqQK8nsmqUSo_FEtZ!&C76 n7Xc9$Loi|2zX-6hwzRUguv!lon|j0r0nl-0Hz%?~(CvQ#xMV4U literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/24/clear.png b/companion/src/themes/classic/24/clear.png new file mode 100644 index 0000000000000000000000000000000000000000..5a2f16f230c4709286393b9d23c0fe646bfc6639 GIT binary patch literal 1633 zcmV-n2A=teP)Px#AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy24YJ`L;(K){{a7>y{D4^000SaNLh0L002k;002k;M#*bF000G6 zNklML&p*EiNdnVES+OEkyKv!-ez+zNaAZ85SENwL!P&D+ zslL9*|Ln6Lr%FqgUkcI+p7{+8U#m|&Wt->sX&Op(b^U2cS_VimpspJpc8;uG4Fdy^ zPM=pas`!^JTayZh3vRL#is#2-8`Vc2y$dMZvttMCYuECb5S~1ManL>)8)NAG_u=^Q z!VQs#;$OOS&15k6G$6Ht=jPe7H>gXNEJBFFwL5pR`_oTpwJdUw0Z;(B3Tl1Ocqo&R zrgeAYk48aNLDy~he6q8mV$sXVWV&wp^w-n}A6!UL(fPct!@hmAx3th|S!7|n13owf z{R&_nfStV;QBsIlWGzPypc#D#O($l3eCH^*t>NrKig%Q*aEA1U<2@1zC-{5NF9cQ zrQofASTdKBuI}x{S5W~)MPL~J*5SkKZ);<>Z9e`Ttm?AOC-VcLTr_>DL(o+Mo(Rkv zF$`&@X(Crvf@Kvdmt(BGowjru4N_mhs|PMJzZ3vqG7jC1vV8R;b#=2m4Grh+D9(R{ z07=3Vi4Yziw?0m%-}qUG&o4ITa<6pI@1J|sv}xPa88gaJ6i^h9Wm^}9WkDuGcK`l8 z{ps{QvqnZn{}(VC3e69@TwhDIwIzhZP+SZShYcASu^U}nY|niv1*4;o$zU2r&q-as zx8}r&fy)B^EGbzWRMjser_+nm$%V2U4!RQw{9Z59s;cbMo2K1tU58u_OVf^z!LnwT!i;aH2?E#r1G1@QaP%ggz_ zql3w0lG8%;zX`7%fjtdEH0gi*;m#@w;p?um%OJ}jN%^ukoR;;#LvHtGWv*c?uJL$o zcY3|Hxz`JU09qtM@2*{>dwUs#u9fh@acDaV@qXxU5~4{O8uF)gozUF5$fj8^#%IRI zm2Xd+*r6;C;#QH(-WK%xaR!4B3X!d;;pq15Wc&I^z^~2l(kSc&G(bBA{hjdpP0-*P z9xnMil_J>Kh@$IY7@Qs&q9>8ysA+DLPr*rHnj$eUK*}^ZTT{caEnCo&Ne;jd&q4D9 zbO5;v2JUPEwl~8w$Asw2c6E_#X(3xy#+fr`=D=Wn=$gY6ZKnU#LX7%gvVWPg?NY0sKybJ4q z>F09)7ey+}{s=bp-FTzbSyh!;4sQeHOtsy950%SR^>I~}l{K2S9ykeDR{+S*Q1nHo zbNR4o4!0P_m%u0>{sEVqdKg2J)!zUB03~!qSaf7zbY(hYa%Ew3WdJfTF*GeOF)cAU zR53O>GdVglIV&(RIxsL$QQtoR001R)MObuXVRU6WZEs|0W_bWIFflYOFflDLIaDz< fIy5ypFf}VMF*-0X=I)c%00000NkvXXu0mjfiqzkr literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/24/compare.png b/companion/src/themes/classic/24/compare.png new file mode 100644 index 0000000000000000000000000000000000000000..2d9e035d8bb13dc2c3d4a75a9a3149ef68d2006b GIT binary patch literal 1477 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 Hct!sJnOtw= literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/24/customize.png b/companion/src/themes/classic/24/customize.png new file mode 100644 index 0000000000000000000000000000000000000000..922d0b64da5c899cfcc43e98767441ec335a9aca GIT binary patch literal 564 zcmeAS@N?(olHy`uVBq!ia0vp^5+`}r>=Xhv*yg^i*s%->OOt{oBiSck!7l4Q|Bq3 zbidU7dG2D}Ri}!#S*1N^Qk_-O@@&Nk&DR_&vb(t4v$MIhqO-M*FsYtPaar@W*R%g@ zhIWV7oO`c@Z=0=FC}j^|;t`5*{=@et-oF0dub;y2I-lOzk#hD!eYQ)B|Lc}bZ+_nW zKQ}sh@1j$wrZShNPB+-2tKI$8{!4u_Z@~RdTj}7g=NmR|KR31Rzya+u`EjA2cCGm; zapD9|^2FuoOYSeP?@pU=HRSo#(AoC;Jr(zFUFdcGy2a0xaf|_+hj(h+ELpbhe|guD z(Bk6Dx+S7n*W|0YCjF>RZ@<8Lai#i})Mfww*ZVupF_(Je$FTNmzc0URn?5i!RZCnW zN>UO_QmvAUQh^kMk%6I!u7RPhp=F4nnU%365NR72S{WDw1m3qt(U6;;l9^VCqQTV4 b#MH{b6r$nTyUEvq8W=oX{an^LB{Ts5z#Zbi literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/24/cut.png b/companion/src/themes/classic/24/cut.png new file mode 100644 index 0000000000000000000000000000000000000000..33b947198deec4457897d3db2097c286896b832b GIT binary patch literal 1623 zcmZ8hc{r3?7=K;K&?GZraJdmGYcn#oFwdZnvW>mPFou+AFt*`Z%9gr9Xt=UOx>++t z1}$1|B}=kK8_}&SEo7bCZ_*#Pd!BQ?_q@ON_j}L#p7T6ks)L=?T5)-C09b2dZRvzq zS;0aHBj3LAwnvCrd?A*Tl{wV3E4)J-C7QL<9)PG#0P%?c3kVed z4?q|m;5`+2tZ9e2ulOyEugp&7{>$%GEA&cQJJC|1P~TpFg#avu?DiTywR174J ziE_F5`m2#QU8C#1|ec%4#>Pyexj1@Orlh@zAqLSU^5_P+i zlAI}lm2wMUE0*LRLdZeJkN&&83FcPImI~n!5VzOLYWO5?WsIhgMl7 zJTayB*w3Cq9{<>1csKtNQ8`PNG*f7JY06QgkR(;?0O`Fn2a1XIg5|P z)^_$ka*C{mZ6?4-fUH_bDFNh$?GL~fyz23@qB&e(odA-ccM`=dF*CdQW=q43mVLf{ zYmk!Ev{4AbKN>s(K}`#A3YddYIz?B7kY_!TxC(_**3_mPX4W+}yLnN;cqf(`1XyW6 ziGiw?RLp6~qykkv16EQhm)GcV_=unweX>&i6`jm742>o1c~~wnPwv!tAy+>nBC}b; z+RfAT(0AHaLsUqz6o-pVzbLeifs`kPky@|1MUcVP18Ct8cvMgor(V6JQT1FS`YaD$ zac5#;a%k%F@bK`=%uIK8cSqOL*x1#8mY0{S^Gp|!;|4;V>?k0jVMAEE>)OEGOpD92 z(=&5JvUfjK=S;e8e){E%UiX(E+SKAmN&lw+v@-S=`HaW&Ul%{_-Ff0x9LBY8A(>e4 zVvc`f%^%ZE(he8L`P1d%D%Y3#W6n)3Ep#P&j?RuR&Q{p0{`J5E{>N>J$G@*#$De!mcKVr%Qc!QZ0kLuMwTCFtLQE|pnI-0H z&%2K_Ddb~oW%+ezaF;jYhy_`Dun=qgeeHaB*bE`K+E|jEw{*~`E$d|Say{I+Hnm(< zP)IN>^VRFo5uD`u+u4#b7-=aSr$v&JefmshPL^9shJ&+{tD_60FFu4=Ul*pNwcj*G z*g}OSb-cDbuQ5sAIjt;brfskORiz6B*Aq&!uE;#bA zHcTgbW6XK(CFkp^mU=#%cvNA~L#(e2s;*=n3_NrsAZD=l#gl;^e$8JEmo}&pyob*} zq+GDeH=~VJ4WRF_#@h35QeSV(xa-rPX3Np`;)e9RCn`-o3;Xbr*`K@Cm$6XGZtZ0Z zk|yJm*k9ZCH_wjKsr?PhEw?OENQy?{5v|;j&31)8RKu9D@wZ#OItp&a2bGQ8v*nPd zb1M64UQ&w{04P>$QoIey0J&ilfzTTm9V_FCuF`$bl=xO5#+5{tKg1+%KBV=mg z3C4K5gX2rmPXY$hH^7hmlYnTfM>NJ0R|I2|S$&8=PH+N+=@%N|9YP1PFVlyvWW(_G Zr#sQTec8be>BtWrz-EV?WsN!Y*uUtVf7<{6 literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/24/duplicate.png b/companion/src/themes/classic/24/duplicate.png new file mode 100644 index 0000000000000000000000000000000000000000..8ff23def936283acd8d76f37cc8ab3116cac97fc GIT binary patch literal 1227 zcmY*Xc~H|w7~Q166c9?0s-VtfoT^cvCLqYAOfZxLf#Jx2P*iT~fPx%yh$Vs-7Ai*> zVVW3@1R8=7LO@EA5)33E370h(eo24=Nx4zRfsQn$KkOeJzkT1ndEe~Yo&9!8Lqh_r zEF3HV09Hf-J{;zKJNfx%@cf!NEQ879GAK89G zLZP~^50Xfx^Ya@U8wabZo<4reD=DE;seSkF)9Cbp^72L|Q&LeuZ)+Q>s$#I&vg+#Q zjt+TEO$&#ksHyq2tn$f;g0Ed`t-a~U_I6o7Ga@!Ny}7xE#p&(--k8ndGdmT>GrRH{JSw}R9lYC;Elj-rh;x4j>*6;=|xW0=`-xPz!}xK5uMt zauR|dUaxF$P^Hu921GBVQfOgeK_XGgW!mNCWtmJhGCaMuwl*@X9vk~}V`F1{d`cpo z9vYf~JEm0Xx3;#_i)z+O7EM88j50)8(dOo+>h-)zwYa^#-7wOS(Vbo>xS9SuEti*5 zz|Sw_7fQ!psi7rr`YFC6)J#Gx^m>z7+AGvK)l@sgIx{18o@>ma+>D1H; zS4H>jKn^al|M~DfTDVvFNe>9&tl$LD|~F`hb38R7s7Q41+y&%RyiyNsQOT##Hgi z*$MbbPG^UQL;$Nhk3NQVRPu$aPe)eK)4`Z$2fGF(@6r&v_aDeN2yM-Ocx&i6Wa?T( ztql8OaxC%@yb&VdTmZg&|E^gjEX*?q(OEDPKIXSWsqlwDI1}+W5_&W-4rPyV!8Ux}^X&ij5%Bo}!L7nu2C{H^+82dF zVK5J9IFyHpnctVFpb8w?2Wk1hF2$zwp%|Hfw;xEDYbWPjH!Hn^cR~@XaK}AOEeSO# z6@lj@NEfngT{Ifyee~3czIq#U7^!SmV4z&)c%0RG+t#g%P|yCop@aDwqbv9xuJs_1 z-_*(CwLE`T^a3Ak#v~GKt6PGo?t)ygBDzzzkFG}%71UFGdrkH@{d_s}JU7qW#>uoe zSsv9E+f@*}4&^MLLc5@ku~6hzNF4mj&F5*_?h91h*$7JnHzzxHMbmY2^y2ATT)Viq z@44wlMB?s+a?13BwVC^}=96!=`;dF F_+R4bPs{)S literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/24/edit.png b/companion/src/themes/classic/24/edit.png new file mode 100644 index 0000000000000000000000000000000000000000..259e39bd3c84238b7c6dab334697fee86e19d556 GIT binary patch literal 1472 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 aFfu0KjQJ zA$ogJ>0nL247@hzj(aVy!7MrKPIE_)vc@gg3!|{c#M3=@BBlSDe_5=F_M+1eB+(K< zPM<}Pd2pQ`L6GBi2r?FdAgCW*#nI6b;E)NxgoFfZYwM>^ zpSHHP3IqbsadB}Xkw~FXq@<)685x~BckbQ0cj@WrP<&`;XncG;Dk=)#d-v`IRAy!- zXb{K*XINNRO-&6rVY|-GP5?qpKR-VRfdmH!!x^9y=&r7=qN1Yc=xAqWXDk*A(a_LP zNWO640yNUw+nbY6+6%`fl-@lKHjKt&duyqkbXY8S+I9KoF z9^L%>{G&&Y5(or57IWngZv2k6`sLcrTV}uju+HUjWilC!Mk{12eaSHcihvUeg@VCg z?%ur%oVaYjOY?PRy5jkN8m6VC(dl#uK|#p0wYB}#Teq8w8?E6B837BO_|H zdT?+Mu1}>>_4oIWjg4tE8aN(wJv%$QxVYHR&;Xp*)zx)(cf-SIYHE^5Bpn?cLZJ|t zZ*OmhTWEh#JU2HdX)Kw28;YuDl(kx_*N&(x9sP6z1sTsmXL!K#{QSJSN)PRe(F`TY z<#MG`xv;Q+_Qar{1=G{hnrad%@kHkyspXg9Euk;W(WwGdU5C~iq61L&+2RvC+82UK zsPPq2C3N+eP4^8zkoBCV{gj`Br#ozPa@1KkW0fiZWBztEsrJ10CyV884y+VRdD0YP z!KPW0yV(=gddXA!ygq9br*&{Alm~WAkKZ}834dbxFmc%ju?W{_Nv4 zp5!DST}Z>(jEZ+09IjiTWnvRP`ew_%`Bt3Xlf^fimgGL(g^80mkZ#UtE|)C~XfAT% zL>kW8`coG2&(sq_6T>n3zKOv#hP;KpNL$4T*n3qB{Z%~mByF1;euK%E-vSf0+mqU< z(6&4Si=`~DU*f@feI2|0IkF8BE_qYk1Fc%4BX(%}G~4j?jaP0JIOB#%WQNWvea_WO z2M{vZN*EAC4fF}sYP^!yX<mtq6T`%BK(E{l^hpKYn8EawX!wPNsEa}yyLKgd2LR?x+ zLuX4*>hpK9kM|6Fw~4JZ0_DuqGUueBpa_3E?xml0wyxUFCfk^YU0=JdPo0*TyXW>u zf17;`Iqc~%C*v>*S<{#sy|klrgQZ1LI`7UZXBOGk?fa>Q7Jlrt2wz5c^798F!-Py~ zYUXZ+^atD2^sD;=dqpQ?;*65tZ;G5MRI4fc`%J{!QIS0T$3*T1T1$jVD6Di#68B<` z#Sbe=6$N3fr*0{Pic^!yc3JWo=HD;8IXucq2ctuS!cnGFRA|phi4@CS;)i==++`g7 zu<}p!ulzEN9fE$03`%54ltwIGW@+fmTvJE;4l%bvCT8xKZEv9ESH)t_^EU=JRx`R7 zMC1zpa-}AFV>#TB1=}Nt9TUku=o)?OAQ)tmoxP*2oxQESOQ8K`R|gmPHrm;{+S&Q< pk#7G6aFiMI+o6-+0GwPMom}ml{s#;xI2`~$yghuWr8^_e{09o}5gPyi literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/24/information.png b/companion/src/themes/classic/24/information.png new file mode 100644 index 0000000000000000000000000000000000000000..ccf17132be1fd90fb27a8be31d1a97fac6184e0a GIT binary patch literal 1600 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 KgLR1&{{H`|gd^kt literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/24/list.png b/companion/src/themes/classic/24/list.png new file mode 100644 index 0000000000000000000000000000000000000000..5eeb664748390c458dc54cd162012d88405c8ef7 GIT binary patch literal 1792 zcmV+b2mknqP)Px#AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy24YJ`L;(K){{a7>y{D4^000SaNLh0L01FZT01FZU(%pXi000H` zNkl4588HV3`&%JZ!&WvZdUNe)J!Al(6;7!Jk9G5_YAyf`UC=eAWQiV`e zBp_65g~pW{+DfhZs}+9=6hRQNBTKFcLJ=V`#db`b#>831O^j{EGoJA>``q!&UC!Z0 za21oJX{Elu&w0N0d(ZN5_&ZLh1En^`!rt^lccxVp|? zKFAZkF7J9^OqQ&#|LFdPeVuL9RnznQy_(<~p~=$=V8$9;*LB*&*mUwHJe zIDRq=uTMrr;dO{+7?_EJ>DP^Ad<_l&ygAd zwUrLoZ7#g~-bom-Mj&Xp;(XQzBP-+3L}B9FSk}P-fY>%Y{z7}By}jBSTy2oMQDTxBo~3U!qtkCyxRs za95vr%`Kv(qRi_4-GPp`pZ`mDrw)%xak){ur3p3>Fd3j~fXD*|1vC=~N8`&SxOm0mE8pkM$30fM0zTrLHJM=u!*fxq=@;q~wvPPDNv^V;Z{eE7HfY)xm+ zCFvJ)9scIq%1EWxKqO9JwTRFPI%YyC%*-XO#Bv?@O-E+A#|*UA#q8;HY@+M?$?XMo zfgk;63W}!$7pD`5E@zCT%LlKC-+v?cO*>dq<7O__RGp|J`sK*@{5=~MS5z?>>>n_~H+KF%bpQYjbrup!GJe^< zubpX2ZTdp*0BC;pKfwXu8xfrf2X`05UK!G%YYO zEipM%F*Z6gIXW{rD=;xSFfdS2-#-8V03~!qSaf7zbY(hiZ)9m^c>ppnF*GeOF)cAU iR53L=G&MRfH7hVNIxsNi?vvL50000Zv literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/24/logs.png b/companion/src/themes/classic/24/logs.png new file mode 100644 index 0000000000000000000000000000000000000000..a9c247b27d6f49dd6f8f9592392e070789426819 GIT binary patch literal 1411 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 W>OWv^DQge~kVDR%PG$QkH~s~Fo$E6I literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/24/new.png b/companion/src/themes/classic/24/new.png new file mode 100644 index 0000000000000000000000000000000000000000..10162fe162a8587df6e713e41a19168c0009aaa4 GIT binary patch literal 1129 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 Hu0mjfj`1eE literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/24/paste.png b/companion/src/themes/classic/24/paste.png new file mode 100644 index 0000000000000000000000000000000000000000..c43091bde5afeed31c2e93524413a50f7dcfd5d9 GIT binary patch literal 1472 zcmV;x1wZPx#AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy24YJ`L;(K){{a7>y{D4^000SaNLh0L002k;002k;M#*bF000EF zNkloR1tOtvhGT}iP;2s$P$^=-xF z`cngh5S?8S5h=Th^FI&ssC>l&GMUU*E0st9v?pS`oamzNf#(MR#3Lc3fXlOr4?p=Fv#ryNCEDIL zB9T4OXjJODE+dhMGz>$<?9<5k|+^UmUC z!i#~;W|La2Mk^Za+0yJF?R0UNg|P;R4Oq(K8|hMB$G+0>v|f9EiDn64rLea z>l@g5;A3jBE##-0Oif!jx<^#=8OfCSXY4mD+o!X8E4f^bzP>(8(`0ID3fs1E90$+y z#PTzs5eVG1+j#AxPbn5lICn;9lO0%QirKQy#H`J&e3Z2b$%9J3=5_aZvri$Vq`SKt z!!Yo?`R0y9A_1UUGVmK!M$ZfpOkN`*J-i@HtgV+9pL>^UnB2NkIVW#>gSI%Ey!?pot6DizgfF73Ux*!OG zhY(HE7Mm78wUkIoFbs)lhLG}+zt->&(G+1bhH2{9wvOxiXu3oxMGyp!Jr9e}7J$$M zLJFh?LVM(&k||z4c$CR{8__O@TCGXF=CO4{1EuU1z~c37%|M$sAz?ntd9^q5oIJXh zSz{w_y|<4x028DY;h8Nv9xk>tgO#2Nq+BpD4^b+>Z`eHFZbO$tKDCbi{(hEgIbih+ zq(GnuJO{UOAK!X_?>Z>AiCcG3zSmNYm9#2ANO0>jxb>NZiD0?Po2}EhS`2D>N{cC_ z;{OF$IONtoSiCuoN02QA^=w&Hid8k1xffi>Ob4~YFU1cirJnecxvr~5M@Q?qT<$hd zT?)9HoeS!JPpj(XLNHmf)v0_%{aUuwUFQGao^Uw4ceN5ZjuVWGj64_~9xi9I*^~Kv zeh8RZ3i#&mcg-^J*Mc>kRNEj3RH;;Q3xz`c(xpoiCr+FgDHIC70Ox?|m2T0^1zSyi z({1{W;{@64xRtq{sb9}z&R@KE@%LOVcWGf$*76|1(<{-_(=(V(r$4YP>uf%sKU*ji zt^zYabG4v<0Y+4L`!)|e<^TWyC3HntbYx+4WjbSWWnpw>05UK!G%YYOEipM%F*Z6g zIXW{rD=;xSFfdS2-#-8V03~!qSaf7zbY(hiZ)9m^c>ppnF*GeOF)cAUR53L=G&MRf aH7hVNIxsNi?vvL50000NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE z?e4J2P?yapOUI^TrutbeEaerxNatrx8o?&xe`<9L{|$jpJmx|#XVVXyQC0lhRS z=9U73I^C(=AFoe-a#<@Zbk3YMxp>7Y#up1bCh6|(Q3YD3TH+c}l9E`GYL#4+3Zxi} z3=BoUHx3vIVCg!09jOa!2kdN literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/24/preferences.png b/companion/src/themes/classic/24/preferences.png new file mode 100644 index 0000000000000000000000000000000000000000..ebca2028c30848c31d6d90edbbcbad88194e105c GIT binary patch literal 1625 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 literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/24/saveas.png b/companion/src/themes/classic/24/saveas.png new file mode 100644 index 0000000000000000000000000000000000000000..83df4c639504bbd5a2c66ca0fc938d8260177b7f GIT binary patch literal 1429 zcmY*X2~bm46n%*ahy-L@fB{C?BD7&iOhU*ffe?cP5*9-UyFh@@0D%Ar2sITPsoE+< zi)B}fR8$=3AlMNUcMxksT|mSTkdeiR)>4_e^7}9|o$=0p=bm%_J^%fG|JxrK9&EA7 zZWRE)B81Nq!EC#{R<3~f@bn+IVZvnwh6Muf2&d~D!$OTI6a{lZyVl_u6pm?pQ5XQF zn*b==1He02Dw_j9O$NY_0svAAfQ_=TXB!IuY<;9q90VKuS!}i+>&DQd{(IxM9!w-A zrLg>1Oa>Fmf%|&x=+wx>>?f&%^3KC25A-ukhOZBee)Fyl_WV9Fd4GJ`he}5~7-$^^ ztp$p_{H&bZu1o!NDvjbrL0dMUZC+>{+zNyWgj6yGJ;yaldwYlEP;d0~7f?bY27@uy z-Q3-c6==cXa8uvmAz^xNa&vKkgg_v;xe_6P=;cm6er|K(w&1w6t9Pzl85*DbIF_*~!{pq{vB{YbehB=8?3~=n!!?t$FAi1Lz-gcjcsQAC zMV@wKeE9Jbjz1?_5}PT{YC3UBCX)~Rz(VV>$^!N1P1RU zktQW2$HgT`qGO^&V%^oMrK<^Oqsd+w!;9n*8Y&bD!eV0L@(a}ygAGgiru%2*dHID5 z8r{XwDIp;#Cs&!AyuIP@H-)MqX70wkuVl-GCiGTy6e?WOWVc81MBv`ZM0Z(?NtQa5hE1@^Tw5#=ax^F znUWt@2s8iF+B%r+4;zX@c!6T~p|lhZ=75k83#jHKdq2}}$!<1`i1<3Z%04heZ9gD>Fp652;;0d zDPv#KSlwM%GFx2hcBHy?OJX+VLUE{FGM{eMWmUtiS*1xyQ&*wYT|Q-$8W_z;EO19T_xsxY5$1gaq+yaTlWax zd{fPcl@96eY2L4PV5#2hYw+V;yS~;n|Mh5}W}xzzZ;7F+hCy4W**TP>?_8Yk)4bO< zT~^*53IH4W%4^CHuNA~I9XNc0b5JmUZrHOeW@Aqg+k=IrH#_I$#A*JKh*gBri~arM zeQS?Z?ISw55?g(x0!PBh(_di$EuuyE;!YI@{tKciC{~r8s>(pp3Nl~WKCz;|& zVTvg}2$cyh5}AUK$&uS80zNY+^3vt9lFtlughofmbfaPB<&O`c0fYpF^V+#7yZ-~B CH6M=v literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/24/simulate.png b/companion/src/themes/classic/24/simulate.png new file mode 100644 index 0000000000000000000000000000000000000000..8bc4db398d4dc4dfca3185b546511a3e5b1461ab GIT binary patch literal 1402 zcmV-=1%>*FP)Px#AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy24YJ`L;(K){{a7>y{D4^000SaNLh0L002k;002k;M#*bF000DU zNklE*np}Yv}>7}qEF}*DnZr40?s#6^y}5ywIHEipzK8nUBP<-oSYENTU01r z7@8@1^`ka`g!k#$@X8ETY*9_egRW7OsWi810oPAj2C%Wm^mv|-6>5?GWzEq_!HwO;xhmm zgYi9LrxlT>Eu7^xQV`6s5}_A7ns9-@nr1a%?EIF4$Pz+8IDnqvZE5g@|FWbsG)ue+WGrN$%Ri;On2F z5%jFqwrg~WUm%{$qHcUs-4$ZSClL$LNg=CG60sF1p_DA6wUFst$L~Q3%hQNJX~lXr zX^l2ByxA3=6v6m??vCdvy)c3sDT1k%Da7>Y5ss9 zYGVVd`%mGT;+#IS>&@Wh34p%CimsPh35y|rAD==Q!7T{w`%1`jf|@c|e;H8FIeeP8 z5A0%O`yOH=w^)7TK)rkBRG{kjCQOWK4j=8pI59eMXNjuHZ?8*2`ep(#hWpk8rrKT| zmrjrxIYAInxIwj(P!CFlRt8X~dj-8ff%`;oPuTtEl%px9}I@#s_B+PasiF&9yaVBL!hp4!4z|7V() zx^VSdz_4gVjE1CP%)nT08=-TRJc6~Unb96a``K`wT&qe2apiL<7Dt=}%7PH#Sv^e{ zhLHUpB9&~!HyC5E0nfdNaWs|%p%L2bGMbs;WC3W$A(BkdYzOQ;|1qnU7Fn^}u=B>( zte&_+5T>|2(tvcdW0tjZ^F|}0QzUeX4abvoHl^umO0(upBkco8+*At7aVl)|G&FX< zw{r2dP3t?UDQnq@Alk|s;Y7UAUSq2R0Q_qy$gASm`{ zyn*Y-t|V$gGJp13fQ6~ws|XmZx=uaJrUS;t%Rxy2QJ@=0@c&v482A_TX9!#>bL>t4 z001R)MObuXVRU6WV{&C-bY%cCFflYOFflDLIaDz=Ix{&sGdU|TF*-0XP*LAM0000b zbVXQnWMOn=I&E)cX=Zr&~EH2?qr literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/24/stop.png b/companion/src/themes/classic/24/stop.png new file mode 100644 index 0000000000000000000000000000000000000000..00f4ab1c178f8eafe7dbae4eb3eff9e72fd4923d GIT binary patch literal 317 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_*1mUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE z?e4;FKn;8GU?U9wQloOlVOc@vsyRj(dH~n)5nxIo=IO>_+mbqy^;49%>JErCeez|hLTARzF*J&K0h{FKbJN)!#IRwkxa2Br`V U&)!YG4%EQl>FVdQ&MBb@0As6FvH$=8 literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/24/switch_dir.png b/companion/src/themes/classic/24/switch_dir.png new file mode 100644 index 0000000000000000000000000000000000000000..798b94926d1fe80496e4000335800c1c5bb430c5 GIT binary patch literal 1231 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjEa{HEjtmUfZd~z?Faq)!i-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+g3lfkC`r&aOZkpaffz zx4R3&e-K=-cll(X2xoyuWHFHT0Ash4*>(&J%=0~6978;gznya4J0@J@xc&FN%NP5x zt1rsUUF6tw!%g#wi1yI(6#Dn>TMZrAjZ z{3wBargr-8cfAvDOZ;bHWo4COYPyv#ZeLAj&b7x64!CxF(&TN9(qWNs`}^Zpjj5S$ zMqZylfBX-fxqjQDy*QUlN!dK>YG`|3Uz(R{Xk-|Z4oJh07HOzay&q1x4x+m~&=eB`?*LzuuEkqx>0mql! z>9kQq)TWy^H6K|lHC9=vpAspxb~ZFm3Ag64TO zN1ml|fBvj#B)Pt9<+4nH&KX;_M3^$2zNB$AK-pl)6^}@@6Dc-ElKi*7Rs8wkzioTB zP4%{uhuilHcAFOc|Hlx%K2Bk()`pFN3nF+T;?Hl~^Jc^Lav#0$MFAf!MhUa*@+yd0 zWaRkOWb$NgkCleL2fM|0+f;n8{QmB%k;M&1rH_+7ezco(GI!ERStH5m>(=pSr{%Y|ItEU3T-v31iEh2aX(Bf8?>CQ0Mv^_w+pD}2hQ#j>1x&)Gv8?qrLJe~*m0ybS2(fTWBIIEUEU|3{Nay| zj;`;%{weHh>R$HA4R!w2f7`$DFB0_h)KyLe8U}fi7AzZCsRQM3xlVtpUXO@geCy&Z5@;V literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/24/update.png b/companion/src/themes/classic/24/update.png new file mode 100644 index 0000000000000000000000000000000000000000..f50b423b9885ce65d06fa930da2c8321a184dff9 GIT binary patch literal 1307 zcmV+$1?2jPP)Px#AY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF* zm;eA5Z<1fdMgRZ+24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_000CK zNklqKJs4qEIQd1x1in+R_#qo7kjHlhkICbY?Pr@6CJn-s57XjcFP|sRu5H z$Gz|T@A?1#94`FNp#b)NG~TYXzsodY&o&ZFVzIHo#s;%tUOi*uIJ8rrp6BLCb2os$ z=YwBUy}jKh9vbM_mo$VZ5~5IuLPrz|Vd#j0Rt|+QXznF}V6;P00xSu`_7iTNd=rS* z0O)kCG}zO&Z&SXFD1y+3z=J?TN`V$o4x9yJKzkq>tOBP24P?5M3MTdo91G>D#`kglOag?G!o{y?M=GS}~YaD1rW>M=`I-WfW~A zz058wW35A+Y}~=$(M4dQ9MjgV@qI-`LkCc^(4JFtrWH;#%_G1KUlYe>!w!7sWDP|k zj=%`MrwALu^n#_FQKYhpQbr*yXK26yNgHTY1GyGRR)k==hSHjiLW``o>FAac zW_E^LM&W5tG;gn3)ObJ&xP0L<9l6|w0t4u#hgT0cCzMJ>M$-Y6=~;4FjUZTQa&Bl2 zo5|^U&YvEqUJnpwK-@+yYW>+N?wrFpVeg(t(5J__c>EeekB*TYDiUc$b@3*Xr!LZ{ z)EVgSrP!6ho_&wkw@l?KgW2?@`DndO%axEzGZn0LSYz+xRA)D%D$DqZvz)8eF~*X~ zq}et)LUFhcEeZMMLyYWrfIc}hJoZ}Yp{+?ZzN+?R|`RKI!a;L=N{r*75PbkZ`&zg?Mk zpC8)w+viVA+l4PAxbUIeIJirWzB7FIshwSUSRJnpnr{5J>!$7un6BqAu{X3y)y;%MN zNiA18l~H(@0000bbVXQnWMOn=I%9HWVRU5xGB7bTEif@HF*#H*HaasoIx{&dFflqX zFi=t7KL7v#C3HntbYx+4WjbwdWNBu305UK!G%YYOEipM%F*Q0gH99agD=;xSFfius Rlh*(M002ovPDHLkV1f!{O&0(F literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/24/wizard.png b/companion/src/themes/classic/24/wizard.png new file mode 100644 index 0000000000000000000000000000000000000000..63879342f956d58d3ea8b37a13effd8e648bb8ef GIT binary patch literal 1676 zcmY+Fe>~H99LK*jQ!`BMW>Ug6$x+{F^JC}N)|Mf%kxo)Jn_W6TvMr|_38S@hgp)CZ zkZE+}A6KF`nR{rUXy`AB?y+;tHf z5dZ+_deEs%NU^JBEgY)E2>SafoUk6=?wrU zEdU@f1pw4gSK>baAOrzmA_M?Pc>rJ-EpK2rK?88Mmpc_w$lmO}c?yzs(eyw*r1bY? zPscGAXgjqBmF!P%SNa9f4;?@Uj}7ss3m?Tf=xe9{(2?h0fn5Iw18pWLO+Yg}yD8;6 zJ#}yq-Njj18KY%KaAG?#JNt2l`TYaUNf(tRV!8*R{>}x-{mie~xW66Bx{nXVPTiA> z_PK`NaY7z_td+)BxyT#8IyP;?-hf0R2|w4>jkdM7>pE$r+&8hZvLZp&JiC$v{!SlOsUc}({$4aX*;<4Tc;vJ(aDplx!14v zyZHFTEP$tO{QGZE)KFv>%*tGUI48@24@GluBh-aNm)p=)aQG zmYN1Yo?gmy-Vve0rs;tGg2G;tpoP&N7xk<<^*pNrbGbAIy4t$yaA0l_jWO_9Mti~K zfENYd*A(V3DQhLRZJzr3qhGOUtpk^Zzcdxijh`gCte8t<`gLdlA=jTWreEI*uc!10 z_j-GqZA>>WxDU0zbuyurF~GI}$Fa}zD|Da7+!)4&s+}<%*9Mke?#h+8H3vTvG$t-D zCs1#(P?VpPH3m6M6a|G4gK^Ig91jYYi?fv>D=I4u*1|vnL12~L(Sw$@W+@a==exMV z_$*=YzKf4XWXAUX{bREclT#Cld)!(S&0xoQoh<8QCW6KQ`I8%8p7>HxU2TAbuP%ef zmwZ{M>a*CkZQp0oRZ8QMOT8&XjB9z6K_ zi89C%jR0kPFDVpBPbX8KPBuB)+0Ca8Pp{k=n{7;(f7!pd1~Fxh(Xk;Chg&AXHE$f! z%da?%hu;R>wu@O<5V@w|N-`eq-ThNT!@(UG>2IROp-^po6Q}r@QI7`|urU=ecFRiL z=H)O1fP!fxnYy8AcdsECOV;3-S zmMxJ3(^Xd-BkLn-CjS^0-)6Z-D0SgGck>Yb^@$u?38e%eqe5(DA$A2NmI$w{>yJz{ zL?ZR|ch=X{9V(K^-iR9E=Xc1yIdSZrz+2hPtL=3|zi5eb77U7edx{;F`-#@>*F)ms zjQD*18LD~a)^!-ER^)Z#fa-dbv~>bwXqauxRR;C+S8gwwPIt3$MsY#+zop3Z47T zBt89>Gc2suD8GV?rlF;@XqBYY@~K9O9qvqP&U4D)y0KZ|H%GVoyj#{3gf-VcDTQt< zYb!kq7MRPz!l{f=IX`%R?_R4P5kQ_+v@sw`bUU}nx_D5y_%O{rH@CEE^4-;(iQ-|` z75UYYdG#I6lES*HL7}idM@P@T`Lz?<6`r3vD&J;)jxOgH!7||&Tw@+S8G!*tSl@eW z57f}xOBXc%G{)GyEEw5hth8YTN96wtJ%=~}?JGfO43{O~+Hjx>umwR!8^~=P{PB2_ ztv!jj%LXKnKrq8PrS>DRI+OH)f&e_h2E^Oo9sTikq+O1Xe*xklz?U)X`Uwyb#W@-l z_X$8G5r`y^_yKr6mEHFd_%QeXlpNltMD)iylAvThrnIe6s|Es$R?pxU6()#f#c%;K gCyLEA^@w2cxJ)jK6L-9WyZS2t9yA~76-r3bf1Z!TqW}N^ literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/24/write_eeprom.png b/companion/src/themes/classic/24/write_eeprom.png new file mode 100644 index 0000000000000000000000000000000000000000..8591f6f7009b935a760ab857a6ce783779ecf6a0 GIT binary patch literal 1378 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 Rlh*(M002ovPDHLkV1n~jB0vBD literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/32/arrow-left.png b/companion/src/themes/classic/32/arrow-left.png new file mode 100644 index 0000000000000000000000000000000000000000..94f5afcb42713a4e3cd86a08bcdd990aa66388bf GIT binary patch literal 567 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE0wix1Z>k4UEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!DL7K8Qingh9K4 zdyTDD-*J82$F>EtL|9n<f~Mos zt}eP1xUPA*?DAZ#8PA!xUVD37t+SCf2<~rtYQv|O7h^9~<-vGYyJY>`wG~e^Ss%{X zD89>1y4qucS4=_tPm_|r6>k)O7CJ6tWw`5jaK1~biW5H*!v*OZTRA^}QL1^ZW0KvY z`+~XQ^Xi+u?8o{QSsB#-?mT<`$Iq~Pniry0MxA8+arqb1qGJIQgFkpp1_r2ViEBhj zN@7W>RdP`(kYX@0Ff`FMFw`})3^6pbGPblbHqbUOv@$R_dUDnq6b-rgDVb@NC>l(y bOiZl|Od%Scy_k4UEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!D>$#*Kl9QOv3fDR zE8-km1;v{J4k~T^SQ)cpBU|p&N6bG|oR;poyglHx(+XA3h1{_ki)IummQM94-F0R2 zp5pVzEf4ej$JALM69`&6;&S6I*HD{jn2ng?4tx9%?4qh%uO!J@Y4 zo7TszLOl8!yPundmoP91aPZ{(-@Efqb;BPv$%uV6m)02QB)t{qKfQ~AF=d8DMNWqL z53NaScYmFv$DpEC_PEkrT4BPDCuYYy0u)~Ol;xB*`p_yO&))sa(WglEsiOQUCqir8lN>su;5Vay*xPcUk^SjVBlS*Ldw-d@E38 zhH}@LQ#&uM`_XIYfAPz+qr4f6acuGreZGFFnqnLJ^wO_A+kT#ZDg5V)pLP6Yi-*8K zRV{IiC`m~yNwrEYN(E93Mh1o^x(0^2hL$0QW>&_QR>lU}28LD!21ifMdV``NH$Npa htrA6psg;STm4PWl!?SmjuLCtOc)I$ztaD0e0sxZ>);9nE literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/32/changelog.png b/companion/src/themes/classic/32/changelog.png new file mode 100644 index 0000000000000000000000000000000000000000..952a231ddb4b6c51f53f1528e695ac5c7755268b GIT binary patch literal 2209 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 literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/32/copy.png b/companion/src/themes/classic/32/copy.png new file mode 100644 index 0000000000000000000000000000000000000000..a24bb4b1d66f251d97d332ad76deedffab3501fd GIT binary patch literal 1703 zcmZ7%2~d;A`j?ie@*Z^tdrVP$>J)rx9mAooU@4%aKq-jaAVhM}M`=qm5k-Pf22rV` z0$vFAA<{5%1d)*{sNpC-=HN8Ogb)%E^Cu)B7(&R2`+kO*&a~g`e%J1I?C!U_m*Qe0 z+}%9gAP91giVTlO>9*Cr{v8yDH&wtWdH36}m@o(uiUdbe{ZM%wH9q1H#2Vc)w>py; z86N{dXMG^3qzr=WsH#K*L8mYfq|Jh$pqmi%F{Qre=ob*=qKNw@5eopo969&57LsvM zp|iF=8bS5{Eor(?+nsr;4t0gXKRmn+MrP<2EU`J&=;)d|fIzJ3p`X2MlW_)-JRXoAoG3YXTy^ji4zbvXYTeC9fQXTX|BZK5|y zf2@2Kl~ad}iu3*=>(7)bD=WjX5fv2`p`oE;V`DpZ>_CH-mzVeT^;K0>1q1}F<#6G` zh3@WdDwVn>qL@yn(`dA!J-9N?Z9FKdJ{0) zz>*a#TO9L7`_i&Qt6Pw1mX+!Sv&C6JFCmb!iKOg23blV=SR$Q$Iiph=fJ&|J?0mrC za>pko;NjtrkdUtK9-(M@RH&5e92%_=-CnEJIyX1xbUHa44v|P69~Zn5OW~0z;k0^b zX-OauI2?|)_V&V};?Z$|d=_b9-pfBzSXO?i_t~JyWa9C7ELI1-sMu(-ils{an1DMf zl*lz)F4t@}XWx|PvaYVKhK7cgmX?f6 z+#@zm^9IZrfm90=dhqt`TfJVd(P(r!-J3UWj^l~lPkGaGK&%EUD=T;cne~`2*8{u5 zVYAtAS)>6wJa z2mD?EcrXT@2|+rJRCABtF#_1HfWcr$%^=)r=RcQ%`=g*=1m@@G7Z(@PaHL za01j1faGKNio5(@2SM|5piyg*((uhMbR;!gtrL(iM z5{YDLN-PqI6bi-E)Rg5#X*qi2@wE8Z1SpryKeN?+%sJ;TmI?i{%QVhOPmeQVMCU-V z*ZiR_*T5-WR0!?D+H@a8iHL2Jo``u)_yC8P70i=9h+;Aw4@>-?u(>K5^*&q@HmX;nqbm;Kl zz~JX;_x~+dFxGEiT&{52_zUBb3g6G%_Gy5h-Ru8vi`CYl`cPc$DoN~qGfNKJC>}Fu@ za{c45eiO2XkTCuzYqoLd#f{H0yXiw;dw=hie61bVl`plsn^L}?Zn_+^E{=m#z&@OOixSl-~7>{_>n%YEPL%acnYBT<|B zL0kIE)DwzvPD1loeel`Xcj`)EuY>Q$1fF<1Fm(3@BZsgXN~0{kR_#h*;d=8|%0KEs z10>IjCz6UyLY3sSVWyXMd~-~HOVWpx2buL5MW#QlzPGU>2(cn zXG%yBvpKJ??CNW)_wL=hJ@+uL1{ZhsIBmR?@~>bY=JQ?EvNpo-9k0yRBdn)RySep0 z`}nr;YJWCXd}mj#Ft)&9Sn1u^A*0{_BazaWYwl&8)^Yb0(+d`FUwi1@<04V-6Sf7~ zz8h(_bm;Y7TW*h2|H-C`c^~J>&YhcAd^e96eyaV=8qB8C*?prt$;fc|y3KOSidOxv zlIV}>yIf9iU7$^}o#x)bqv(qbdDF0|G!mXh4kDf;qXhE9_y+97`0n)$O!PeviCIJfkFG58^ml#^ZX7lZvl0sDh6`_~K*L(MDH;FHw|33=JH)A*BQD2$Xx gAa9HM0sk#Io{T3IoZyhr4+Datu(9E+Ls_N&2LYa?#{d8T literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/32/currentmodel.png b/companion/src/themes/classic/32/currentmodel.png new file mode 100644 index 0000000000000000000000000000000000000000..6fde618efe2fb6cf20bee6d0e1c6aa948a451452 GIT binary patch literal 1756 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 Qb)W_YPgg&ebxsLQ0F=|$RsaA1 literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/32/cut.png b/companion/src/themes/classic/32/cut.png new file mode 100644 index 0000000000000000000000000000000000000000..d68161089fe238349aff38e845f3eab5c0e54064 GIT binary patch literal 1573 zcmZ8hdpy%?7=J}RrRQEo*d%rwn)I%R!^Ei8?5KGDUnO&1d82$f1Vxpku{O*Bm| zbHB~CVp3-2vg4k%a*5-%lF2x~b^53CeBSrDz0dc3p7(j*&l~GTa8gy#Q~>~};&E6a zBz5I;jUvRc%v)SYDEVVtF#rgAx(*)R4cQ8zM5q0L-KIS*kMzS4T>*$R1mMzD02U$F zr7-})kN|ul0f43hu=#8n=g=MiRzj&l2)?+X}NqAN`$b2I2;aVaq6b$zY0Vj zzq^5niAiQvZE$`SxRD90_Zu40htxmDJ4}p=zTB^tuyg=-Dr{Dp+G(KTKmv@9V2788OQPp z4yXPVc{MG=<76Pf5J1FTkX!=p7Oc}V_+^K2e16GYRxY^12EJiXG1~MZu+JGo33$=o z39d3gY!>i51$Mx}nX4Dmp9u!uX&D-U3n{RaBH-=^XmNJl)ZSr{)joS*u@}TJRJUlJ zOiU*D`LDW@2h6NZU5IfH8R;bz(4OlzYv|h91I=yV{C#;kh@fVAhk$^~fD!>7ltF`- zS4S;s@MPC-N~_RdR4S*IFDxvK&3&GokrSz|eQ5T}=;&y#=z~-$9UK@Kkk0{$MDp>U z>71M#E|)712pW0(iHV7fjEv~$Xf~V8U@(e{i?gz_Y;A2}Fql{@E~%)zom0qSv67OK zl9Q9Ov$Kneiu(Hc6dshVrI+4h=A>q1zG`i2Z*TAH>ije{y*0gZ3%$6xncLjlEFKwA zeN<7zsj0246$*v>ST(EZ<)x*iFJHdgnZeohl=I|yZed{|idn6jUWLo4Wipxk&Mvd3 z9GBd>RrE4VMkVY~1@!i4dZ!AY4qT@Z3GM(Mof?9&>6n}w?{$cu=Bu`fyhfpUsf5*a%X7RMF%k|sb zyj1*7vMlTFUYwN;#wKp_6nveXu;Auu9UNq=J&W@Ug``}^0mqipd!c|qJQm|&^VW~_WGjj6OZ92e z=X2X$v^4QrW84*Xd24MrJGX9_sN2Kc`I;{<+!61rfMVS=(vQ~KwhI=q)jW8up)%f> zKuuFF#Y<55H^UwcuXqOVoq7VZ?YB1E8>JkwpE>OLYrh>Dz4442@y|nl_+hNDk8^XY zosKG+K- zSbnCzPQP6VFYLkU8&x8h2%3LC8@Xv)%FNBdsCmcj+V2~7sdWq0f720ftS&&nj2gIF z^(zf8lnfnDn9lAjFEcP;A+zJO(P=6hQNeh-5R2axMH@z1%ku&ppZpS&sKdXU`iA=` zN<==sw?}U>kfpLk;~c$;kZw%I+O#sW7bdIJZU;&G`)nJPdTo=+9;E0+#ou{elc{z; z(nXE$Z6oXq&8{s~;Y}atwj7?x$*=AS8}IlSNsA!mS=(zQxbk?2{Pl{;z<%+9|5%02 z9CYIbG>5}9vJZ`d_6wmv0_;YbTOg3;2y+S5vZ>|aT?2r3 LAYj@1Nmu>_2@JuW literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/32/duplicate.png b/companion/src/themes/classic/32/duplicate.png new file mode 100644 index 0000000000000000000000000000000000000000..a6c66b117108ccf0ed59fa8f0466677cf3633587 GIT binary patch literal 1358 zcmV-U1+n^xP)Px#AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy24YJ`L;(K){{a7>y{D4^000SaNLh0L002k;002k;M#*bF000C- zNklOK4PA7{`C-+%t10Gk3;`d7GG;G}Th^L5o5cKEM`QS}jN)=tla0E^V>6 zlonUju7pZKF_9Ju7Q}_wh#)0cqtK>?M(f)|o6ML@lF2-B=g!=Fx|qDwQl+`-rvKG< z&;4`0|M{Qq<2&#_o-qW#@#8&TH8)qS_jBV!B2875h39F~={&WyF~-Jngu^DLsTdd- z>Ds#Wq9E}x~Fj^@UI9T2ZkZa0t`bTgg{F9R0Rkrky4gxKuYn{9Vq7orIbL(r|*EA%2{?mJR1ju z03`&^qz0rc_oD)+u8wf-m%#`6{K+C3i_8ib9m}(R!*jkTaXpu0E{PP9daM4ve;3a8 z&kFGK3bfYrBzib~>omz+63eu3J(ohMKvT4dElao1QrUtu{a=(^g8ro^dj7r2*Cu=%HT zG(?(MS+j;?fBwM6iudLS@Zs>uOoC%q+i}QnJ>5${!K;lMX^J(|6l-Q#T?2PAH~D#} zpXF6+=o~+Ut;5EQ1M|hPOC1#D2!oSXh{qtPV5-moh{pt30i}}5t^5TRRV?M&vK!C) zB0y`+rLk_(`W7o2US#{S&j_gyRiU~W&gZN5lP~4SIBD81?Fke`vVnImIojyuST7DS=sfL(w{AVSJ1W-lG#v;v$12lgBVP6G28i52fJ zXYZ0tb?-#Nnt+)>2JYc9Ns%mOMV{(l6gOxwp=^3j=Dr=j!9`!EPo##HPfv*URcmWE zEL5$8s3A-P8V`pF3Zxj-efn(Y(Dw&7vkMsU^$}3alRkHZGc~O)b&c^Q3nR^zNi_k= z58k^2f8FdnIJmF<6MG*p4Dh7pZv<$4eS6z0FTAw4NxRbPIeX)J_o>?#f!jb~n)o*- zOMZvNsWYbl001R)MObuXVRU6WV{&C-bY%cCFflYOFflDLIaDz=Ix{&sGcYSKF*-0X z#mSoN0000bbVXQnWMOn=I&E)cX=ZrP)Px#AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy24YJ`L;(K){{a7>y{D4^000SaNLh0L002k;002k;M#*bF000Jv zNkl1vX)Cx`7Iy!;aR%pi%Xb8$ysoMvN_5sSesp`~qq^TRVO`9cY-t5FUwsY?} zhYwC0XR*VOMjz|w>K;G$IludVo^$Sl`q?+{)yEFJ;vIbAJAmK@oAfQ~YhrS6hfKEp z;;q+SeP;9K&DMQ_$KUSW?Q>Km7LgWA8ub8vQrhnD-wwxl><$3XnGf0Kf{`to-{E9KHH0j6P-?Gx&Xz zJN3nC*?5b&!2zj%9Se*P_}ah1_pkbN~N}z2OS(7{O$4M$GfU6TK;yb z=yT!Id-(485sr@a`{=XJ5^nDJL971b{+XGXJArUn;E#`ujcoz~b5mk;bo92%moI;U zQfdLLY&LsmDwVpODqH-6^6H|;z+HQI%I-IcUdR98dliYw|1e% zcO9gxuu&neyo{nGqF^<(ET1c8y(Bz>3CkUn>anE5^79)&dnx!U_!%C3RcIMC4^TRvU_@RkA)twG&3G3jHc zXE32K+Ve`nCH4^YA>Dt7n0c9Ck76bb6Yj2(^vYn=d?kY=&=HmK zcxwo$B&MYfW83o*$M>Nei%jpYiJ3o9-=m2bNg;Osk_waxF^~X)Kz2!h`k-u+Qet@? zIv8B!AU8aX5Q5Bm2Z-v!xN8hz+NK!WRdsQImRPu1M&mVlYGk}BK=kvEI6*_x)U+Zn z?cq)NWdQ*x5mI2fpT^aY={-Qy{DsgOMJ}(Ha_=kchU;t3LqvtJB6mH!eERU?162WP z?|v}8B4*2`Mi)8hpc~!l6@JHlW^KvT>F2>5A+n~PK=`xRk!2NCxYY=p_U=yLAAqR{ zV8>b$tu9C@kwPG>>Rp-;g3#t?5kfF=>JJF}W}>$j5j7fV2NwA!A|Pv;la#(gs&Wn3 zZagsKF>W;WL=k^{c3wyU!jfRg(p8o~t@ZmUTHDFK@gm;z43W({5%sGUr6J;j2t+!T z1~9U{r_H4)2qF`PWi?AGaLpR;*nzixD?|VMGntdG(EOQ)i8VGa@NWWI!tU~`rSy9h z0fNGAk6J#(qC)5MsB9LkHCk(wQdO_U7=pnd;dP&5sP8>q-1l>K@7|4+3%~lEb#D6^ zaDaS8fMr6pjgI?A-Yf;}b<}Yau{X zSZ$Qff{MF9bOuelBM~iSBO8O8nin}4Q@L0D;M-QR&U&{&#=7cs=G$tja!A(Er5}F$+O!5)g}05d7Gq;r!L%*qJjU zrTYsPD0<#U3Q(AwMg2R_3CKkNhQ`{HXY;%}8p3V}W5qUNU2>3)Km;M1&C3HntbYx+4WjbwdWNBu305UK!G%YYOEipM%F*Q0gH99ag ZD=;xSFfiuslh*(M002ovPDHLkV1h1ajW_@R literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/32/exit.png b/companion/src/themes/classic/32/exit.png new file mode 100644 index 0000000000000000000000000000000000000000..7eb24a66669e00800df561fb7885269be9baab9a GIT binary patch literal 2117 zcmV-L2)g%)P)Px#AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy24YJ`L;(K){{a7>y{D4^000SaNLh0L002k;002k;M#*bF000L% zNkl(-L1)93N9>V`;=>G&H2Ue{3?$>whc)4}ivL~`lO&L)Nr4({M z5ox$4z7~NM5hS*$C=&R16wv z5owr9dLFGK^(+C8$%vpMaxITO%4hGr_rZ5wfBpM_X98wNXXi_Sh!IRqqN2q*rHQXo zKxNlOx3)s5M4M%yQsAW4#Ux^qQ+<6rw0iZ{?IIn=wZ3cu*5ugODz99|NCBlu#IDq- zmp<~`bIkAPpjIl;-`$P!yy>{l2n}g(C`EN(Ks_kZiPl$4z#JbMGQ4sb$z~JgdJa#d zEt=oa0YJXFnYINBs9wK5J16c#;$BY=x=^qvmoWh(2&j&Z($e0ZSgL1iN_0F=myhd$ z<1_%O8M%4U%Eup5?deJGWeNqBzVHH05MbCgMzu=)$PtWEiL8=F0t&$M8o&d~ zV$IH-$-?^B7*}3-1!rIYW)Q%2(UX(hJ$R7P@#D$u{JeSOpMDyt)u{jZ1dM%&%4ach z+1Ui*OxBJAj>F<-p25uJ!V|>z>EFMf`p{6A?K4AAucK@m#F=g&`P^7ifcwjEZ8 zZ9}a_FgAvF{W@N6FTwCIDhR+Zz)-MxGucJcVRX-bhL|Q|8Yt61Of{Q;_H9W=m_4Yr$b_f zLQDh0P>roP6NMnCR`JVaf>MdwhYnHe?@wN|>Ww#0Tejdk4oYi;u!AZHLt!ZFwl>=S zaG1i%Rmr~Up@R?vh@m18Ov4Cc9}}?3~!C6Oo)g{c&Aikh(pg2!zve^N|9 z8zMuw_V#ahV`H<3#B=R=-0SY9+}%yavdDFGkZo^AY#Tj%o8azU#4?d=*zp<~8GzQ| zOlvB>sXv9G*aOa=CMS=7b@}qZEEF0x%6;bAaj5t9VxK%o{mdEs;gM;i7%0A>b#y-z zS^5YUuHHO*5(WWn0Kq?CaznM${>`qgwQh3@)aw}8EM_i;k;~1}v8YH(K93agjXIx4 za=B3QIn;yg7%SJ%clyHU&#qkm`6!$R+}JP+_}a_O`Q1NUweow5mo8muWHKu0_c9|n zwMGIR=>Ul=7ads~ggOwxQwm=RckhmuPxf5s`Niba?{2_ffl)xGJ!=6E0gnOmqw4%$ z4Golm0pKcdkFfG*{S6nw&TP%`?7tlz;6yqZ{{}i&G-vZ2c|`yK03~!qSaf7zbY(hY za%Ew3WdJfTF*GeOF)cAUR53O>GdVglFe@-IIxsNB$(rl{001R)MObuXVRU6WZEs|0 vW_bWIFflYOFflDLIaDz7k=^2u-TM(h0q( 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 FV1mb^@yq}K literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/32/library.png b/companion/src/themes/classic/32/library.png new file mode 100644 index 0000000000000000000000000000000000000000..76398383014be824fb8cf360afbc15cc149e32b6 GIT binary patch literal 2198 zcmY*ac|4Tc8-ML%_tBU}jb+Ns{6t2^lBLWrMU2d#xRypjiVQJ~Yj14L{WRg?TCOf~90Wm% z4)%5wV6}gCm^8Rwi;dj?MluLb!b4CCTmGA$6nGcAMma@*8egIoe*WoiPa#22>>&tB zVnWbAz?C!)K~Y!;TBJgd#h(zgmsZRrTY(SK7aUL7LAyV%vhJE3;E|=-dtQSe`8_|o z7*tq{gdiD~gB{+@gV&ws6@m&<-$>R9TUIsyg&QW9Z8cz=(dBke^gK_ zt6X{|bnG@#^I@`?HI(uL@N$GBv8&8ntXfJpxI~^9H9C@4?9odpW@W5=Wk!lRC+&XVD+ zE|{)g9I{ta<(|#0+xq+a2Zn_;J!o#GB3ONyxw*L`IUmtyB+mQzd~eVfl$>kwl|oC- z4c_LDjCj0Qh;;rC@!<9eha-y)(*;f(;njBK&CN}`D9Qycb)&*Yh`W3CuoB7~V)Y#@ zt6wx~A2axIM(RVvv1HCdW>!|#>i9SchNgNVvg{?3Z6JL?ii&u?K#GuINB+yGbZ&B* z;TwNh>}`l?NMWEZKU|}b6LrMUFx}9HE6M6haltSz;chq`lE@1nySlonk@XRHSn`|8 zYX7@o@o9ZKP0KN<0+Ui-Z>=w&yTIS{W1V6c40TTMB_)FY8txd-L7&-Z;S2Deh`HIXU(^s-V#6?=PIRb<4j0G2=Wo_ykCo{oLotacNH@& zB1tB>);RZGXi4%zu3E8g-c)iTk)~gkSklZ_US zPrJKIC7pjcI4EymV8AzpPeob~J@e*l%UvAxatRnXp_+m>Eh2&kFR%SwzJ}TTI*W^o z5R^(Nmjg6w>+0|avTEs6Yk(B6^+RrHTJ1JjyVSWIkrq#0{MHsambSgk_?^w3nd-eh zzqpv9FTlX%>}!N&7`Y?)@|tX!YKp9Bks?#2wqA}T94?c{Z1}cPAJ(_mLqkJv z1*rF5RORt_FzM^fW6K@1X>mY98}?@V8YH2~{3kvYnl)8jF z!TSKm!lI(^l?iKel+s_r!vs;(NJv{0o2jJ-K~6%HQYxXOwY3%C>ZPjeY_0IW?`&la z1crYeKgJ}WW2`ir_2u&d?p!?wmzs@G$C1vp>!2kIIe2&XdG5_qa+rJpPf<~^WUryG zBtM+i`R!t_hD#Kjv#)8BavEeRWUY0MgzYmR%d%K@7GfVf-mnOqskB;7mJI*e#jIQYH-2eI# z95f#v9}o#7m}w{8(9obvS95f9e0K3@HyhO(BnqdkOmtgw8!PMTWN%dT1h!6(-oMfj zwSuFVN`-6dzqQP~oOm?t-C4Mg6QFGdAj2 z#HaOQlBG86aS?)5&28V=*^#FVL*f=iy7V*MIt9O1L0~keBnVQl=N0JAo7;7^g z32TOlJCrIPd+&u*^Nx&Mb@k0o-)wsKmw0^FuI&3Yb0?wX>O!`kCjuxD)D;!Usi4wx3^Z@4;Pk}mV#71@NP6iuu9@o=hLzZ{wA3x%)Yss z9mDtjwj>&0Cwllloa`&Oeq!Rc=-&DVYy-ZDjy|m-tUYLi))VD ziT#^3^?g4jB+W|BYfl_FtAB|kdPH9Iiwv;vj|cz;I*K*I8DNbJjE=b(nOYbhvoOXU w#u`~*v3>o8pZ*gN8g?-_knx`Y6APS)1=i%>fRCSZL?8fiAUfMM5~wNv2XtldOaK4? literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/32/list.png b/companion/src/themes/classic/32/list.png new file mode 100644 index 0000000000000000000000000000000000000000..3b6f45e451f953745adf24a56b2d4d600121b1b4 GIT binary patch literal 2547 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 JPDHLkV1jeAkk!lvI6;x#X;^) z4C~IxyacIC_6YK2V5m}KU}$JzVE6?TYIwoGP-?)y@G60U!D>@GTJ84< zA3Stga$M{m7qJzUFp!ih19H$g?>7Mt>I_wobhVt0Rkz><5> zXU12?i2)i+)y==Z$y-!pRzoX*iCSC!Ld7Q=ub9~g+$Mm{PD#%TG^s9IF~#h_K9_VQt#fX zzsEScgyLHCj_%QM>(oD)f4Fe=0-tL$+&2cS)C+sE^y$nZfHW!$Li0zgNGd`O1%yxQ$MtQ`yla zvv#T3tABHKTphC|mSvelt0b?=UA%CXZ|v)!l3Tle+V5Pp`T@`D&G+7YnS9-_r|+-) ztF?}@6T0dbvu*pS+9t3_P$;QlVYONOe#V;Z*EY-l`1o&$pe~1rP>1{8+41`mm49=a zF}K!CJr%zPm@rgJTq8)4Gf;HelF{r5}E+d*#rLo literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/32/movedown.png b/companion/src/themes/classic/32/movedown.png new file mode 100644 index 0000000000000000000000000000000000000000..8d2671cc1a884811f962d4e0512e95b4360b8de8 GIT binary patch literal 1750 zcmV;{1}XW8P)Px#AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy24YJ`L;(K){{a7>y{D4^000SaNLh0L002k;002k;M#*bF000Hc zNkl&T;{quKi;3JXLA2?GdSl|Udch%sQq zrGSX6{)#H9fK{-HS_`Q~6Gc-CNs1;G`YGB^NxS`OyV-oW`}*#EVYuTr*I##I;fGKE zYTFn_5F=m=B6u*DBKWiCEo)j)|E8d-pze$gNa+f}*;2ge$9v!WK^OiIYOS0l7Y6f{ zzUwqJh_ORmt0QCtM8ODxIx-g#@G5xlVL(k4tVL6&NV#DlBcs50sQsSESe9}O1d4=s z*#!we0xx}Foa_T-ShYciyH!OkU@fH14owwOoF$1;O@v@117Jc`h0!b(LbPWQD@Y`O zK`@9I5QC_Hw$k}!JwVlZ65_iTGyxJ&pUVVDE&?FbQXOlRB^zK&2nwPB5FipD;;axE z8o-M&SNJG^1Yi_ZMb)AI_^R0D5;bsJ%o(sG~Y7ppZ#ApTpmKCydla%$_XH{W)hA2RpC0>;nV&;ned z{xG@@ErfMsR0UE&Q-M@Dd~}AiS$qdbLugrRi%;)=V&b7~KfMc+kDQ7IKZKsdfQY$t z0frUeE1)v=OYU?k*D>r=Yi|uBx#oT%WT@kth zJp*0iYR|CxY^V-02D-Q!16_5sqtHnpw$Sb*l#k8OoqB$Mf9lyoKrwLC`>`fVr)1=g zUBNXYqnVq=T=$XBaGe||<#vV)*JJ5XD3dyj{agFYEJ{bz^iAqb*>`g zA74_t^&7dZ1rv^YE3yzoU?MOc*sLL90+%b+dHV*Ih=KTQjrjchLjBNv4{B%WRiKXN zJBWU|aO`~eshyiNF5EG?y?{i5F%aZDfdL6$SAat)+Eg44xCu!ew=#!VY9O@v#%@~x~qayUTyR z|FNWa=08An&E@^R1QfJf+5i1Lz2(Y8YZk- z;cq{V>cm>#ua*En+M7CF%xwE?R|-46I5> zeUEJ}uk8DJVYqTMOMAa}pgVo?ueCFNEkh_PTL#Np3EI#qeN0QR?y1s9e zfTFrs+^ZDEFw06_> zyEkt_#zM#lTsRNQGxIakKf7m-Z8uH;jSc+nhC(Dea?`fIOdkHio2t8JRloeU>W+Um zo8voo{~XxD)!F)i6!1Fq+nv)V-pYUO&h3?ja-+ReDwdyp{6O{4lYa-MfpkM1eLy90 zz^8$a`OhWbEbp`L|7!vR^#*d=jduQ_iT?s)liTXx5{jAt001R)MObuXVRU6WV{&C- zbY%cCFflYOFflDLIaDz=Ix{&sGcYSKF*-0X#mSoN0000bbVXQnWMOn=I&E)cX=Zr< sGB7bTEif@HF*#H*H99mkIxsaWFflqXFy`))*8l(j07*qoM6N<$f&;lV2LJ#7 literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/32/moveup.png b/companion/src/themes/classic/32/moveup.png new file mode 100644 index 0000000000000000000000000000000000000000..7d52059e27027cbb65f612097f5dbf1d48ea9e83 GIT binary patch literal 1643 zcmV-x29)`UP)Px#AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy24YJ`L;(K){{a7>y{D4^000SaNLh0L002k;002k;M#*bF000GG zNklTZ~oJ8OML?vM=YHeJ*p(nadgGBEv*x6oY6>p`sY*C~BfUnTVJee5q+4 z>_d6rL4EO=+LE-jO^g;3u~kTuGR}jVsxdJH6`}&7fH=Z1(wRAP&f#44&4;}Qj!>ge z@uhyrKi^8$-s}6V|F`zeg8%mrm;I*s`{mhe$CI8Pc(wWINAZ4p{D-5?KHF>MpFj5e z&ZFU<{(3kx^Uu92GF$SOvzEH#;+(+KtC?+@?sM5hNk|Tk8>}A|j z{*?nLJub}B&ClMxu6M)QHQhLlrr|+0Z&Ak_nQSe${F&EZ!>@%`0H9AKZ+!HL>#xiI z>fW&up_UBvB(QD8$+FMYOVUiv>(%qlttY(WFYN!`0aAC5-#0jrd+LD=C8;b;U$@Qr z6&d=wY^G}gb4?f>PK(1c=9s%^!@pY}zi{Gv1IXO})~bA0{-uX*@3O3!$KHQ@S%2b@RYOtnp@L#jMlvxaccdn~zlY{O-f=3{cuWy=kD7*|vVz5*UiklwdF;I4}=?JPK%#1}F_O zmeBBS8Lm!4e+nud)I%7|2>ChLJJia1Uae02dGcEU7Clq`S+O(w_uCd5mePWh1&h;g zvI*Odf+s;3aZ%&z0HK5f6oCd zelZ{m2@?zr0}fOI_{${Jh;}aZ`7B~74MIUvz^4tk)`6skIS&j49k$Azw7XV|Y-wkG z-=5Y*0KHG2c9K0q<7<26(vC#5Sa$+k0WY40GeNxLSfb7T1rVvCTnXW{3qz@>cr^gW z0Mj)3W_m^k=XU?$pLneRKmz18Z_{SM`P&Vh>c&D60tqP-8Un^=;Zz9H1ZBl)A6ua8 zi|0P^;jL=avV;kNf+ZOk?oMx9yyMVsh_3<)plj=kn@0-Hmf;+P3JfEf*DxgZPz1?If1o^dNvHmo`K#=m}aOt`Nuo$^q=J zLa3v~gdd#=p+Lx3f{X7{;eP?~VQ(E)I$(wn_#iw8LbW^sz|d5i1;1|KV$hU=edVZk z(vMnl4nW3Pv;l~=;$a)af(u^c?7ljz$bbl9fTrk)0YZaHD;HFooOJ`u&gln7-+3@hIel7xVTcN1bYK^kael+h=Q3f()5+)6# zDM3X)7@?wXX2F5>;^!RTf-~c{IpM-o(?^wE(!Pf`J$;7QKr69o>jSblc&DA-?m)^~d-zu4sG(q~H-Sb0rqg0000bbVXQnWMOn=I%9HWVRU5x zGB7bTEif@HF*#H*HaasoIx{dUFflqXFvZE5>;M1&C3HntbYx+4WjbwdWNBu305UK! pG%YYOEipM%F*Q0gH99agD=;xSFfiuslh*(M002ovPDHLkV1hyQ__qK6 literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/32/new.png b/companion/src/themes/classic/32/new.png new file mode 100644 index 0000000000000000000000000000000000000000..3c79b7994f1b6ba8f3cfce3715af8eb7ead17d89 GIT binary patch literal 1173 zcmZWp3rv$&7`;R`1VWqx=VY)kGms24A z5XyH$sOT$%jCiYP6`>pgLTglnh*b#f&#dh{6@=%iVxnTh008&=e?&$`mX?;XSS%io zClClY9FBv7!;TH_>zcvm^M zRWQWTYi~JmU%Of2YibV;74Q|DN@F*_Rbj%WEf-*4F{$+7tM^8J;r$%^Mj5ZHHM-Wx ziJ0Sv?tMp$`e>%(C?i$xi6~dQa?j^y9(ii3qIHU-weLNzKdE%7lRSFp9w8L&-t#uy zd&=`lS$$B!hMDvA&7i(z2FpBnrg^TrAh+0R(C~T3_v4Rr?;I;t&sTozeyRSThasl| zz7g0^CKEm+hh*(Vu4m&aO3D+<<1Ej)r;$hFoZo%Sy7L54d#PRAtT;<;79 zEf(iouG98LrB_l5>^rHnL9eL&$#=?aP@AWS@n*}7;?4Kbr|jiZH34jKN1-!{TeI|U z7-Rk<^F=Y%yUK*aZJRxeyS9FF_y0I>y^v~{_CvmjM?)slg%hF-nK9v8tGP6dm0e-J zjJxb{rc#tQY%OV?xg<8;u4(5Uvb4}Yn^kO1r`OfK-t+8((SrE+C~5mvq*eN!9L{|w z774#1*X*!_>=aryotT_O#|e28ynGK6ybgN>#(Mb^eFBL-1P_82kwD<|S4&?CT+B#G zOTGM3z>nzbM|1Xkpg+t2R6_6nynQnPbuS#%VVl95DriMU9+K&Q}YDVM+Kr{muP NLJ?unBz7qE+P_70V0Qoj literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/32/open.png b/companion/src/themes/classic/32/open.png new file mode 100644 index 0000000000000000000000000000000000000000..516ad06c02f1201ce283f004e223942e557f4eaf GIT binary patch literal 2416 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 E0G(X$b^rhX literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/32/read_eeprom.png b/companion/src/themes/classic/32/read_eeprom.png new file mode 100644 index 0000000000000000000000000000000000000000..9e1aa0e2a452d12a8e9bb6616c64380698be86ef GIT binary patch literal 2057 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 JPDHLkV1lM$UxNSu literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/32/read_flash.png b/companion/src/themes/classic/32/read_flash.png new file mode 100644 index 0000000000000000000000000000000000000000..2ebd0f34be337103ef4ab1e56903976a1c2d3d79 GIT binary patch literal 2640 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 literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/32/saveas.png b/companion/src/themes/classic/32/saveas.png new file mode 100644 index 0000000000000000000000000000000000000000..e2af8d1fa16a2feccd875cf155d2d32c4bc25e1e GIT binary patch literal 1807 zcmV+q2k`ibP)Px#AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy24YJ`L;(K){{a7>y{D4^000SaNLh0L002k;002k;M#*bF000IA zNkl) zPCvk!b%S4!v`4zqT+RQ^Idf*t+=2fyY+uD7wM|W;vT{RZWboqC3p}33N=r)X0>Qwg znS86?4Drd@Z?8X{r zmO+-?0N}*&5Bb|GFC(QiEz>Id#QSOASK>f@OQ%y4+9n~y4u{>iFWX@lSq=jsChEVd zavlHJ_ZGuLLpmDI06)E92Wp$zHHXc9w-92x-Ox8X9fr&4u%l^Hn|AoU1HAeAUZgZl zOInLhpYfibl>;B2@!xJYjBUDZ+vao_w>lkmbelHgC0f7X0S@f{JC|cI9l=w;F96gY z+!TNJV=mS&26YIF9pdN21i-JJ++CnhJ1i-;-?{GoRd?L67DK=Bfb4(k4c>j{ZKO2g zrfHQmwKiQ)@8A0}QU4Q+^ry?75|8tO2H1`stvM}(__GjVRfn(ThKbX-ziJbP!wv|i z5d2!bs+R*hGsr>F1)u@8uFej3G!g+|@IpU*eSw=2keBD;-tXO)e*NX8g7tr5xY?dj za*{aJX#pvv)V`LM=JDRf)1P2j>ZU|gJ+v7i;5K(ECr6K0kql+d{x@PbDlGuu#dcpC zsZ%NNiZVcnL}= zVzC$%D_3LFzI+fxB2hl5In3TYf1&ZylU#~LQA(kd!X_loZz&)z)^K%L*y}B%y3MsT zf3EAV!{M-XJqG|@3kCzf4~IiJd3i1_1bYbt0(^7P!tsLs{sB%L|0mv44I~l?tgAE5 z#HI=;wFhA23Qs7m^Lk?;pvn>2kAZ#Ha{wR-+@h3P>+viYcVX%6D>#3yn*;mzaq!*! z1bfe8n&$Y7GoLJ*~zhNoZQ?!(P$L7{?BNsuIud&KeAOA zhK`gHT{no2jv%E(N()QMt8ICuZCz_`U2E~!+7N`>00=}KJoM%glBSjU&4Zmi=MKWP z7-qt6n�C|FzAUOeUsHf!%J$bL&Fx*}N0=?I&Q-0|3;7Dv|$1V@h*8ij)23Uh?^T zSeC_f(Cr4dlzO;r`3ee)iYO^`fX$97{}Da8RdkG1;4Ur(z_KicLc{b1gDWQ618H=R zjinx*m!Dtga=EU%*1DlnSX4xDNeS86*$5#pO_O7%x|lad(DS*;JKi}+OOci3q@}ru zK!1?Yc>Eaf2=Mt-0svGzKDx22y!=b#b8>PhE-59;>6~yYN~KbS!(sdblCFUyrnK<2 zwQ=-F4WV$T(WYrXla}?nH2GwkFpV4_uyJG6T-RJz#>TVAFUTi1&o$-Jba!>pP+!OJ z@URbf8hDTNp^$;897qB4rIdG;dOQ;xNTpKbxvnoD7zj{v_z;cW(|z%Hd^fNQXrGK^ zx?Axgo6Xkw;17Oivm3^Q7|wUQ$;r(fFB}{kq@li!^F2L7!1KT>z_jt1?%owqN_|V$ z^<_mxMH5^|CKI^k&La|uP<#9sCu)yhj)cR10JZ=p0CPI>nK%Hj&gpc1R8_SJrPR0s zqoX4P`}^_xKTAm|Uj?26F3yB>wgLc}SFT)DQC3z)B9XxF_jB%Cw`H2<+rTqG_iTx0 zi${eJ%I$V5hr^+OLqNsXO_~V}c!4WXy8C}g{I%mheYNFQJwJ1;0000bbVXQnWMOn= zI%9HWVRU5xGB7bTEif@HF*#H*HaasoIx{dUFflqXFvZE5>;M1&C3HntbYx+4Wjbwd xWNBu305UK!G%YYOEipM%F*Q0gH99agD=;xSFfiuslh*(M002ovPDHLkV1l$8N3Q?? literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/32/simulate.png b/companion/src/themes/classic/32/simulate.png new file mode 100644 index 0000000000000000000000000000000000000000..c67e7cb99d88409ceb349908525a4e8e9a089865 GIT binary patch literal 1925 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 literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/32/write_eeprom.png b/companion/src/themes/classic/32/write_eeprom.png new file mode 100644 index 0000000000000000000000000000000000000000..005766b0b4305c1d6f3b5ba1cf007ab9ce06b793 GIT binary patch literal 2044 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 literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/48/arrow-right.png b/companion/src/themes/classic/48/arrow-right.png new file mode 100644 index 0000000000000000000000000000000000000000..25dfe0dab94d0776c29182fd5cb45abc28823236 GIT binary patch literal 817 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 literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/48/customize.png b/companion/src/themes/classic/48/customize.png new file mode 100644 index 0000000000000000000000000000000000000000..a64ea0a356f4072628859eb851295976e33680bd GIT binary patch literal 973 zcmeAS@N?(olHy`uVBq!ia0vp^20$#q0VEh^PE!O?Ea{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq8sKd6mGxU^Rn*LA+qju0R{01XGf? zy9>kr_Wm>bfjrIvkH}&M2EHR8%s5q>Pa3G=n5Tb~yYwd>UVP(Qzao60tQ+y4Dho_&7* z_Xi*QOgz_rkJT%87yPqa;qR4aYxV@a`hI5D@wkdN)f%1IG_IBbr}&VJG_oUrb^rJ(ynr1aV!NulDGZN|r*cD?CUXqhZ}v+IhR#od7En&#%~1a8V%>pf+D z5yHGT=RG-Oll;4+>Pxd)gdL-0uP)mi-HT?NT#^=7 z&+r#YJodM?P}EoHI=H~|sBnd->XrT6-;?5skG|fou(V$8`m-O>6Lu(tt}K}RP<2Ao zsl;0jnGgQ1VmMJ~!*F%MR8LiYuS|!P&F9LE!=t4B&T&qyX#cABhVf^=w|FPpw)X1V z+h(5nQp4`?m~la%$n?ECcS^9l+IoH$yTU`Yr9Wiy7tS-6sL?LHJbOD+KJSv?TZ=Yc zS}WxA)NcRDgMRZr6s^3iR8XWbVd7%j2K_ze4pP^g?nhZN7`@)~M|^|UC6D%ts}|1v zc6;A)U8k5%&mOMZr^inF~^+ah}L?1=kWWLFMDrJI+#4s zI%4f4l?S_~?A3I%<1UX9mRf6jdefYPqBXG}eytF`dQET1X`_3~XEw3jU;k$5rKxZC zKK_`|puz2%Q>d$^v$lz|(b}Wzg8BUe6NQx?)FK#IZ0z|ch3z);uFGQ`l#%GlD%&{EsL(8|C- rsN{wdiiX_$l+3hB6b+_UCZ<*frVtI!-c7y^)WG2B>gTe~DWM4f0cxos literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/48/cut.png b/companion/src/themes/classic/48/cut.png new file mode 100644 index 0000000000000000000000000000000000000000..45d111adf67f31d8a347067f697e5ab46fedac67 GIT binary patch literal 3437 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 P00000NkvXXu0mjf!|-%J literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/48/duplicate.png b/companion/src/themes/classic/48/duplicate.png new file mode 100644 index 0000000000000000000000000000000000000000..903afdd6c52d368b905938a67fa2b1e5addb733c GIT binary patch literal 2191 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 Rlh*(M002ovPDHLkV1li!<^KQx literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/48/edit.png b/companion/src/themes/classic/48/edit.png new file mode 100644 index 0000000000000000000000000000000000000000..2869e5bbdfa756c113151f261c3ee1cb3eea4cec GIT binary patch literal 3393 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 literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/48/information.png b/companion/src/themes/classic/48/information.png new file mode 100644 index 0000000000000000000000000000000000000000..e62f8ee196e42a95eaf573573248c3ebf395a80b GIT binary patch literal 3832 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 O$lUm%QKg|v^nU^S6n|j= literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/48/list.png b/companion/src/themes/classic/48/list.png new file mode 100644 index 0000000000000000000000000000000000000000..564d76118b4859943657b05d395e2ba13a6c3b79 GIT binary patch literal 4904 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 aH7hVNIxsNi?vvL50000!iX#- z-+ap+G1esOn2DT0$!|KpzrN?5_de%+?s=Z`zVAKfo|}TVw-OURDhvRCm^IGAiHnH8 zA;{0&-FS9xbAj)&nVlH`JijmU`y!Z|gRVPSVS&27W6RtG=8bc*1AwR#06<9qfL$&{ zSptACuFDD$08n`VAQe>9;)v!R@L#gEvHUJ1O))W zerpRemn+lE{Mf76Te3Y~GmCZcHepk`@BQB;bPG4vuVxfEzQEd)tPJ!nS&rNAOAF>b zFJl}s0G$_Y=dtrGg(`ILh~#B7^w}G#<|}K>)LAYc19i;HD24=S-;QX z&`;fHQx6EvHvRoDcQNwK3~O;GW|}rL^MnnaIzICGNB`^0O)1ur$1r3qWkw>AC}`e2C6`aOyAV?d9pf}Hm2!8pQ6V9szw7&=8d!%))= zs9wK5SuGlIz_8|-7w4l8QH!m{zDYb9WYHfj?K^(96ub?_j|c!sEjg5V4qawlKVVg9 zxUp_b@lgkj8tjoAxU}eG(hhv#YvnC6qkHF+FjDS3bEBN3CJsOT@giH#k2hT|43{jR zWPp&yfmnr&uCcO!29b|#PLyHumO>*i{o3FX{!!j)DnEo3F)QCeHNPG4W6~(?q(0JF z{fh|3@9J`kGa5=7D_j!@FKm2uJsCIwIM#~(+&VvdZ4WJE_}zV9s(&wvcuM@{8ZwPJ z{`PB@@;IRJfuERsSD`_K4nxg%{xk1k8}>M$_+$Wi2nIS%%`AHEX+o)6xtwbmxn8J6 zm`w?SBFRU*++W?Pc+ibjXokyR?8O(I(9m(-N!}u!w1UQ0x5R-7d<x#7IGDN;>W=jP%C+{1n`Tg7g938JJ z-Atl3h0GUh3Ulhv8g87RDsKu-rc}Mr$^poB3^j0!B*YTc(76}I#423TY@iKhY7F;A zjXu@9#yMB&0GE^CntS^!Zp8UaJP^|ZS;gMGIBB!=C8_GgX5y@mY1c1mTZgp^jHBrT zbkV~_2@p~}XVRqn-}d>L8|%@}RvXU}?PI&h9-=P1w#5@)Eers+Z8Kpdc*Ub{t$zY? zbcWyl>~Ri%sxk z_#I_j1u{Mkm$$X9$o`m>S!0Q}S)p>MBPtb_H|XmJIps%NKaHuR8BskP^C+>_4S(KM1c?MKUL@UbO)ms#pH5tSk-m|e*?G3XR?tD)b zWF2g=5h2`0rH7WH2Kk>f8alTgTG5fj$dlFa$ok2K+7n`af8T)R;g1WeiJ>e<{-AGP z%{Sjq4IRA2?7B<0{P%lsrGu&@*r#M}gQRAze}mz8?|j#%#Y7yr)jeKX(j!zh-H6;ypN;FkIwnN5LgX3~X?sw46-(nXU71F&@#z^-j>pe;( znAaisI70wettXJzj%IjJKEhFm-17(&3oeBBZU#UQ#2G!CTXZX8~1kB zmUbb@n1xHLtU{N#rht-_*_yw$j$9NJ4GvPx#AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy24YJ`L;(K){{a7>y{D4^000SaNLh0L002k;002k;M#*bF000Vd zNkl&5#jSPVMIRg?~ zGEfTe8ps3!>Kr)2s2;HOV==doInpG~TG7Ody7zOxXHR`)F$OT#{>JZ5jMv`&&wsVA zh++wpF$h64OW(h1})!Y?Hysb8!5KTt(oJ_eFy0A1piHqB080*619II)LYw4MWW%qWClR_gub@uR z%)g^65z?smN(jCRi3n6HwAA=l*&LGphZw{ep9z(aittQBB`Swqws5fmGN`Ah6vkC` zAsazj&Y{+UGoiE^a2{t@9a8au9uRPA9jL{uTLDu+tqp*E7h?k0FycoMK}9IRFRI9v zO^V6`s3@X}6EpCHhODSc&^?}vM&1KzkjRMkvVuT*b`6_3s`Z!~Mk7Qj9z;~C{gEf) z&x2A08aC|kyqtlH))Jzgo7RK_&1b=%0Va5(FtKg-EUupc8UtcG{WUk!WdFx@Q;Bm4 z1UclU4aUtM4IA|$(DFLqhiozMi%L=Zo!MN40)e_wesH$gS6y%C84x4qjxN72uP09L zkv)5_9n^ooYhJ}yqa0ZI04taN?MQ49eJ#z=5|M!yf`qIKbBE28A3lBtm$p}R{lx{q z#(>l8_~Fd$KlkvrCU3gyvj>PrYl9ju!Lyr2DaKME+B!334!W6;Y8fy^VbgBNUD~LD?Y8e<3O)hT_Rme!Qk3WRA5S40fZ_?Y;Vs-?ZnR zehxSTbfOR&hwE9$=HeR<+>!G=Z z?B$AbHtdJAb&p*jS!io|{`vpzz3|mXQTrOu1Z-4FaH_52t1`N$6J7hRd+cg2ZoKPy zq+$kOOzh8YiNFLxgB~-uLz$?M-9_>nT992fkl5wt&qWglc1bjTJE~H@c?^jJ6JBJh9$-$u1mJ^pR1hh5V@mtsv!vuH zk$^ypY`Jzq`;{eJ(phc&*XO@x&%gWI(e$P_ag^guR0N5SEYJG zy?C(!Q}Ges1iGA+GSG4#mRzY2sCwxPvf-50ktVKZlkVYveYpSfcb@`I04ss&mIMGY z?Kk_*WwX_r-~YjECEd|@#~7v_4PIvQ$VZn!BHBVaxi3M6jn7c0@uTatMEw!3XBiyF6#U@HC^Ap%nMBrcLtJOp~XOh_Rk zm-x5l&yx!Y-Pu0b%FN{2zkT`v?KF>us?#3^yA^@l4{5ge(tLIA-Q!Z5_$@I=b$88I zA`@gTBJ(K4~-YQIA6jv_)ka9xv)4OXUv!@XF;V20C*o7|GhtKJ>k0@+U8c$gi{Y zjcVHr6n^L|cZj07+O2neC~HZhv8Rfu`fq4L08^?=M8(_;Ri(22QLsHWT}3+cj-(~p zJM!Znt$ycoKS147(0#TY!2gSY0$Dn9XeHirn~mRg+nt&c)yLz3)=`LRAeEtWU`YF$ z&H)MFwUAPO6}n48x;Xjj@<061gW76N0drgF{&ENeKWLhqd11c3|GvF4visJkDpYsM zAiAm$HA-gA>;CYW5KL=(pji=p+lSUHxc>U;@;5(oe|qxJE5P)2y1!fkUP`_7UUKH} z)X4k(-~%?>aeeJNAs*R$5JioWbj;>1;z_vF1J1##!rCdYy{=@RB)0%^cBCwi4*A|jXTd*+$w$)r(_{zt>md;MT%q8mnY6t*W?W`xs*%Q+{?)=>k*`$6= z{d$NS;Z!yL*OMDfk%5+jC0DxlSXe&^w%_YEzxy}eYCZk^XMvNz8keB^t0ka7mMxrY zMLTyl>$l!=a0V(+aNi&28f}q%GBrXC8fg>A^2PhI7a8x=$|` z%#{!zL@DXM@Z*KX{yRr26YspkrD8^JfY^A$c7ZX0S@qw*jQDEQS%l64B-2L@&wu%o z54q0z6s7z9uZloUBJEGVI8@7zwb^X>H-jE#EPM0h~YBY{qFg1f9ZkN zQ;+@}U+*tl_irQt1=3{t=z3-Rrj`1>_uSj>M3sqMP%}RA75oq0GpC^2b#Cp+?>~0_ z8-Mv9s9sjRf3pZc?uS?YcVWkYdw0pMTlRN5$oLpEBFGXrJqxQF&^`9z^YdT&)W5j) z#w0M0_xM${H-Z3w)3l#-j~|{JyZfVe*!s0^TUzs=XD>jj2X<|Ke)fx>_KL7Xa=lyjct^(j%>z)40Yo|b`fb(2Iz5i7a0AEFK1a^fv_!_?qEb#{D z{>>%;J`?%3VDLuI2>GdVgjIV&(RIxsL2bl5@w001R)MObuXVRU6WZEs|0W_bWIFflYO nFflDLIaDzPx#AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy24YJ`L;(K){{a7>y{D4^000SaNLh0L002k;002k;M#*bF000UQ zNkl1cM%*_*VhpPyAP_Z*77CV8x`-|96s5!L%U#Yn@9T$i?#%6NYpE3FL!acy zdC$4a`~N@x=lP#=;B1_Y=M>`k`P*|9-iKZzg?y#8!dNr`qC=tm4C5reP`F(uN|V)=@Jkveiskw-A26GG_Z1mPer3>lYW9Nn& zFB}5hA6IT=-S-Qf{wsI9VY%om`Dj;?N@*Gf#%Cj3U$Lw|BZd!~RmLBX(Zuh6OE_!( z?*w$;4%Z#r{@HZa-|^;add2eIG)794BPr!wloE{27$PAl7F_ZLPwqRaE*6~^9SFz% zI7~46oSf;o5m@tiks5r}JKaq7qgP*Aan`&jhm{hPVEIy?OV;LD*5xx@GmOqeSSjhM zcqmuPgVWh+;be_yul)FfEZTfX^;I@hXIf2YoH=gelm)*K%D7$3)<`P0l zP?A(ivHijhQm&#FSmx>mS4;ZJE>DbwG^_xn80zyGnUR$_r?N@7{w?8=2dn=x0v&Ju zeU~nsbHhNlzw(;Rc^p?^l*I8Am#$1x%qZ#+eCF;c?%iMG;z18b3rbndlampl5NNGf z*5z?vTJ<&x=M{yUejq&j;AuP4X%om_`@6I*c3q#(dsn`0OI~C%8mlBiOEwSs^c6J* z_~EW9*FRk2@iB|51s8NXq&Q{t7(np?=l`a_|3>%&xlXEnYVB$;(%!^+3hN z>KIIaNwaE+#tOk>AsuDG5}*II_eo_1rvIaaLS9=pmiB zZ5&6krc>Z)s2cdjei)tsp<=M2nR;<8C5$#;tO08apd@4+c)9@w&{EKwlZ=G^KvWs% zist9;4xadP_+Jyqz2(cf)X5K?en9x@ID7JfbgzZ-7>E{|O= zWOD6L6tKO1A#XAZKd*`6yLCFPQLj=r(F^PcImwIA2^1Kj z=bN`(;S~C>-&i3tkOM1Ysu>rSq~d;kstz~)6B;6^bgKfgZ5G;EsCga&2Wqe~8&@)= zVJ3pm#y5hB4^u{F=dy)Osx)|eb?5CfrzFt-<9+L$(%?<2OQN!}5KD>zPeVBY|4ax! zdm83x0e+Ge67B8NLJ$R23nO({o{F#g3g%3_4+55^U_5fWg8mn;#xMP{_UPTUlM?9p z`rbZW>itQ7R<69ToHST6WCbripR;h+I6MTrb^Rk^j!(Ap=be(|;4 zB##>kAp3@oh{84ReqTOQe9z`G_)a`X&DKFdAmGt?_oS&Ih{dCAH@>7Lu*urQ05QqhK+V9z z4cM3gkHzcFbR&e!l(x%k@vEjj8%O|KtuGaIBZ(|w2vIX5n5@IDaR>u20hq8Q1BjZ} zgJaL50HQ{6Y+0Me@xO~&|2u%0Iy^E7^#n&4#TkWh@zCi$Z^PA{O$CIh+b&UU2m(PQ z6;cU|f_emxOhLo8NNwV(w|cu3$vUb2!Y$`Sw;r2Rz4e$>w^fO;2>uqrip=753@8IO zQYqzSOTd#Fzy`KLEs(aZ2m$FTj1de^$G3N>;?0DOK^}8+GD*v{wNNW~Ari37Fi9(! z<4G(KiD0Awegyq~{5>0iHWm{IPq-cF1qEy^DpPF;YMRJc!qBjHUNIUfqz04pJqcLM zV&5+SPaaB|=S|?vmWLJ+CsUx6NE9FUH9&^Y<${SUx)EY(HieVPEex@(M=4orVCoJg zG8~?Wc&erlzQ(#5sYP6Un}BU9(cBX;t z!f77kL`$Sh5T0OokE!}ehIm1ZRssp=g*J)|HZ<5qhz%laBO;oguSerYj@BOf>2DhQ z@3{$UMv{jGI*`r)QY`~KaSQAz*?@lo(?JJllD*9R0000bbVXQnWMOn=I%9HW zVRU5xGB7bTEif@HF*#H*HaasoIx#sbFflqXFcNgwLI3~&C3HntbYx+4WjbwdWNBu3 t05UK!G%YYOEipM%F*Q0gH99agD=;xSFfiuslh*(M002ovPDHLkV1jJmHSPca literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/48/new.png b/companion/src/themes/classic/48/new.png new file mode 100644 index 0000000000000000000000000000000000000000..35ba8e361278836dedba2ad9e88c627c27dd2bae GIT binary patch literal 1812 zcmY*ac{m$*6aM88N|c~(&!S%~Rh3j6iCdFOXjl;~TK84d5s8*6qE*Y%+Sbw4+OlZ3 z$2v+_cU^UrxD%F#>_!cx;Op-{tRPiLbygKF2C2Xp&%Pw4)og7s*5SDSrV zpG+*X>ah$jYpB5VOt)68Tjox@9@@E+Mr-2r7~Wy_By8kt>~eNF-3W{O3?bRGGf5HH z*fx9`{#vXRFAbuA0jmVEzsRm3NNilU6r0a8+LP{Kp-?z5arpk5w=b#Buq*kfyL!5& zwzdm2Cu^LQRSsl-<~*Qlruv+`zuYzaj#r)g=*rIO)C+pkMdkAH^1#^GADs=zPUNei z`8E;(2DXzR-w_I<7uws1gy5mSr?N2w>hTD(3$)5}LO!3BPh~eYCNSS|D~Z4s>_~Tn z5p(_|olfJ@)e317n|Z9W6jOYQ$7lYy+9q%%Vz1rwT&~89jFSLe@;MP zU>VlLgt6OuTcfT9^%FeSpjwLb&a?7H*L@9qUuFO{9%~{|8U}&Lc$ux@R(X#2n3@$? zul@#B5vz~{yFIZ;6RzD&mR*K+cbD^Z9UdHKdmD_?>Ewl~vfK;C>@>26-1}8!dIV3b^PVGXT(8B2F*l%pIK#Wtb2mcAF+7vkIw(&0XTTAw@6jd$39$5B*t!aQp#FAl_v9@0653bRt)ou}fZ0u4S@j5rWhtOVY zeB|I1mT?CO$1*$&lp!Rjf9;@2&);+X4&7O6@GIW#K{j}}szq~W;zEHh<#no$A+p2$ zb#-p4&KB}LX85yMi@$H_SLCa$J(R%BV8@)VU0O!5~$HaJVX2Dj@kZKW_u(un1SxPlC zyZI&m#8O^C-A4E%{7jP5&KG`|9*1?WUw7=@Zb}e7PYP_`B3r`veWB8OuukQS@$D*(hT=mdpUf`)+E}#VK&QUHY>5NzJMEP zS$l4_a5lzQWR=2ZL;Tx}LBE^6g8lk=kj?6k_Y>GjFGtz4N~tTb{dBKl}abm$vvC-qQ_k!@}{$ zTx5|Ci1%#g6)P8ZElBc#l!`0|5~>j7Em|5Ey;`rXtYR0I*v3Rf|5h#O+b+lN5EhYi z0PL9m7WDn;zGm#PN6Ya zBQ(YcgQH>0@FqAs24{%I;L&IW=Cs4V2vIS?;h~BDBADW_rg*gJ{|SPPJf4`Kc5uNx qCX{(KAT9*h2gd}4Xp^G?!a}Ga0l|s%fsljm1js}eLY0I6jsF3L#UrZ# literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/48/open.png b/companion/src/themes/classic/48/open.png new file mode 100644 index 0000000000000000000000000000000000000000..04aebb09f5b2653eae1be9d0f3188b9b3b4b78a9 GIT binary patch literal 4395 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 vW_bWIFflYOFflDLIaDzNS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)pVryh>nTu$sZZAYL$MSD+10f+@+{ z-G$+Qd;gjJKptm-M`SUO_5fqIli7Aa#sNA_Z>K5dIXQ~B^0!QI2y*vW6}aG{ z4r6Tl(M^qAdW_BPNjDg|9UgKr^=4>Eu{?}tk*YkRUMyyyKGVGTeY4ZT59iiM?r17_ zIJ-}iuqgi7{OGbs%ZJlV{J{cRd_I|#O#<(7Bxg1WtkZcpyGh{O znU}Mg0yd^Q9Tv7x-;|ia<@Dom`#hi-C*E8&bYi*ks_Tm4>GL6fGqOTfB&r|Z8fB4{ zdTQzVb-JG(EnVN&>a@_#hGCYa`G!pmQa^!yQ7v(eC`m~yNwrEYN(E93Mh1o^x(0^2 zhL$0QW>&_QR)&_^28LD!20|q_oKQ66=BH$)RibDxwK6faGBAZ`c=m4cb)W`GkPX54 qX(i=}MX3yqDfvmM3ZA)%>8U}fi7AzZCsRS8&fw|l=d#Wzp$PzsGo|$a literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/48/preferences.png b/companion/src/themes/classic/48/preferences.png new file mode 100644 index 0000000000000000000000000000000000000000..713e2cbeb5845edaa2a1b90759a36d9cd215fd77 GIT binary patch literal 3879 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 literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/48/read_eeprom.png b/companion/src/themes/classic/48/read_eeprom.png new file mode 100644 index 0000000000000000000000000000000000000000..a7ef5d2c09687054bc316f3108ca5261bd223146 GIT binary patch literal 3779 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 z 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 literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/48/save.png b/companion/src/themes/classic/48/save.png new file mode 100644 index 0000000000000000000000000000000000000000..9153bd84cfcf69c352a7e52c9e8eb0f47000fd38 GIT binary patch literal 2625 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 literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/48/update.png b/companion/src/themes/classic/48/update.png new file mode 100644 index 0000000000000000000000000000000000000000..27112e871ee56338816d6881b615ba6c3aecdb1c GIT binary patch literal 2915 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 JPDHLkV1lK9@>>7^ literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/48/write_eeprom_file.png b/companion/src/themes/classic/48/write_eeprom_file.png new file mode 100644 index 0000000000000000000000000000000000000000..57804bd689266d439c0bcfb52578e96972ee8bff GIT binary patch literal 5345 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 literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/48/write_flash.png b/companion/src/themes/classic/48/write_flash.png new file mode 100644 index 0000000000000000000000000000000000000000..3600b5e37bcde3e67d54e9b0fdf077e74c2a6337 GIT binary patch literal 4735 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 N002ovPDHLkV1nO+*fIbB literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/16/add.png b/companion/src/themes/monochrome/16/add.png new file mode 100644 index 0000000000000000000000000000000000000000..7d853823c2968bac0758c4679ca01f97aa30d779 GIT binary patch literal 329 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^xl_H+M9WCijWi-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+g3lfkC`r&aOZkpafHr zx4R3&|Mvbf`++>p0*}aI1_r*vAk26?e?4@Z83zm)LmOCq8|`-S zsX4g`g&g46E}gW4k(v20D;p5Bb@Q;g%xvKMX8dOPHsyp0*}aI1_r*vAk26?e?p0*}aI1_r*vAk26?e?p0*}aI1_r*vAk26?e?4?!AN?${8?+l5t3p(L zW@JV38@zSbNOUrMYVT~zeE2={r9PgoFT@r`F*ZtYEl^vKmFO6Bq~q*Yos4A(8p~F5 z{+G;PVVIdKt8(+;?mnQwswJ)wB`Jv|saDBFsX&Us$iUD<*T7KM&?3ap(#p`(%E(gN zz|hLTAbj&7FBA>A`6-!cl?V;yAx1`4h89*v77z^ys_Ywp8W=oX{an^LB{Ts5bYfyb literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/16/clear.png b/companion/src/themes/monochrome/16/clear.png new file mode 100644 index 0000000000000000000000000000000000000000..b81ae9232168de682e0c0e566dd46da9086b5d6a GIT binary patch literal 339 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^xl_H+M9WCijWi-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+g3lfkC`r&aOZkpafHr zx4R3&|Mvbf`++>p0*}aI1_r*vAk26?e?}iax7fH{`dd~V{q`r#M9Q7jy${e#anW-bJ~>MD>4eU zmrRP^%%Cl=F8w30cRtWu)e_f;l9a@fRIB8oR3OD*WMF8bYhb8rXc1y)X=P|?Wn`&s yU}$Av5We}47m9}5{FKbJN`waU5F;ZiLklY-3y6jURrU=)4Gf;HelF{r5}E*3SY%27 literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/16/compare.png b/companion/src/themes/monochrome/16/compare.png new file mode 100644 index 0000000000000000000000000000000000000000..a12be8ad265830ba318b1cd4fe814d46ff79f6b0 GIT binary patch literal 421 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^xl_H+M9WCijWi-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+g3lfkC`r&aOZkpafHr zx4R3&|Mvbf`++>p0*}aI1_r*vAk26?e?1Oz;!Fb0WtSk37lvv8v>|%3u8-%ahh=tvg$;aMCk?)yQx4 z4z3-?UiiDHU7nQ49w1u2>(;e5x^`c86+B{paOYXszK1Oe5x-O$j=j)Gd@a_vaBubN z{Ll71nhmGjnz&k8MK)M-@q16NIq_pfxK7nB&2?R@;e0d7yXIFhHTjr|Pw6Oc0=iVS z#5JNMC9x#cD!C{XNHG{07@FuB80s2Ygcw>{8Jb!dS!x>?S{WFGZ$9LOq9HdwB{QuO hp}{=F$jHjj!pg`3q9H+*eFIPfgQu&X%Q~loCIH{Lj;H_t literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/16/configure.png b/companion/src/themes/monochrome/16/configure.png new file mode 100644 index 0000000000000000000000000000000000000000..6a3295aab189da0955f1ae3bccb1f9713e1ac5fa GIT binary patch literal 364 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^xl_H+M9WCijWi-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+g3lfkC`r&aOZkpafHr zx4R3&|Mvbf`++>p0*}aI1_r*vAk26?e?2^PKh*Q8JQOolmr@vNE)=GO~bZ UNKj?p0Mx+X>FVdQ&MBb@0DfR)vj6}9 literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/16/contributors.png b/companion/src/themes/monochrome/16/contributors.png new file mode 100644 index 0000000000000000000000000000000000000000..ca7664737534bcde911489ca7f79954d3a848ddc GIT binary patch literal 463 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^xl_H+M9WCijWi-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+g3lfkC`r&aOZkpafHr zx4R3&|Mvbf`++>p0*}aI1_r*vAk26?e??Ew%UhhC=@Rjk&t*o>y938>t(@$s@~+|fhyNbg?<_A@p4WfA$FjZB z_3(jSwTxY6S7xyGxy)%^*l~E##t0_eBit3DThi4_j!fNF-G8m;$hUfN;pM-Sex38t z+8I&!#`APor0(tQ?{0ds-tFqh->vkmX6mUG49Aq@WE7fY%ax9?UbuRBp0*}aI1_r*vAk26?e?| zWy^eygndRkyuLALh;i?eWA=1>@wBw$_yLAj(-+-gG}~}kFi?+SvzhN?)!QN_za|`= zeJ3g4R{i7iscak)iW4||R)c)5TH+c}l9E`GYL#4+3Zxi}3=B CIeW1H literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/16/currentmodel.png b/companion/src/themes/monochrome/16/currentmodel.png new file mode 100644 index 0000000000000000000000000000000000000000..2f9d7288868fe210121fb6d7e26e3ef45a2aac5b GIT binary patch literal 393 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^xl_H+M9WCijWi-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+g3lfkC`r&aOZkpafHr zx4R3&|Mvbf`++>p0*}aI1_r*vAk26?e?4@Z3#k`eMH8HY1r7@| z-*0)&b3TwYVnK;kvjQ`7Ge#?U87p!8c~vxSdwa$T$Bo=7>o=IO>_+mbqy^-3@xn;O|6V9 zwG9ld3=G0IAM!%ckei>9nO2F=U>;&*WMyb!Wn=--kf6%G0jPn&)78&qol`;+0EcUI Ae*gdg literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/16/cut.png b/companion/src/themes/monochrome/16/cut.png new file mode 100644 index 0000000000000000000000000000000000000000..b590d2f139cc51d541b056ce45b152ef729376c9 GIT binary patch literal 494 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^xl_H+M9WCijWi-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+g3lfkC`r&aOZkpafHr zx4R3&|Mvbf`++>p0*}aI1_o|n5N2eUHAey{_}tUQF+}71+KKvkPL2ZY`)|&@Tk9ZD z;p7w`8quW2!RO#4)pvo*$3M_<2lEnhhX#iPj;;g?2EIn-&quH_FC;F3uh&M5U(%V8ee8w|4CfFNHp)sqIX*u7O>vk`NFL} z?Umc&bBrbH0?qlmZ?)~cm2tc*XYt-!$LzPyXzVnXe-gs5az^LO!e_D#=I7GV)PfiV z7$QHOoTo3t{-AYA_^g^E=hpVFVNB6**YpbPGdgoc{`RG1XM%PyTuSwvX?9y@;khZS zf33eq8Z7-c$GwjEtc~%-?~xyqfnHWEag8WRNi0dVN-jzTQVd20h9P# zhNf0Vmf8k}Rt5&)n-6)RXvob^$xN$6XfO{kGO{wXurjiMXh=|H-vHFW;OXk;vd$@? F2>?BLtYZKG literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/16/duplicate.png b/companion/src/themes/monochrome/16/duplicate.png new file mode 100644 index 0000000000000000000000000000000000000000..4e994a70f593c285c8c2dda8fa0d21446ed7c549 GIT binary patch literal 392 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^xl_H+M9WCijWi-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+g3lfkC`r&aOZkpafHr zx4R3&|Mvbf`++>p0*}aI1_r*vAk26?e?UO_QmvAUQh^kMk%6I!u7RPhp+$(HrIn$n zm64^kfuWUwLHOoFUML!J^HVa@DiIpYLyU~93@xmTEFc;ZRM|HGH86O(`njxgN@xNA DDn5YW literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/16/edit.png b/companion/src/themes/monochrome/16/edit.png new file mode 100644 index 0000000000000000000000000000000000000000..9b7e2f76b85cad5719a77fcbc30a9e3cb52f2935 GIT binary patch literal 444 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^xl_H+M9WCijWi-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+g3lfkC`r&aOZkpafHr zx4R3&|Mvbf`++>p0*}aI1_r*vAk26?e?F{lESn z?c)~m=YKFqZxj`-`oVVBU|Iy@g~bOa&xo9+rqfW$*P`)ii|_4LOGQ3yPBkCP%cuMp zrFx%b*_U~EC6zL~cx1yI^seMyV@;QxcZ^cj(dtv5%-u>XFX}KS9G~c3*{q|rq48Dw z((a^h_BGeS_cFXQReT_v==C1x0o4-Mh?11Vl2ohYqEsNoU}RuuqHAENYiJQ-XlZ3= zYGq`pZD43+U=Y6fkQa)E-29Zxv`T~q^AIB=D?p0*}aI1_r*vAk26?e?FGbKSrhL?sB9@Ise8C} z?`>f*&kHMK54f&9?Vj(dxRztl+n9o)&;>yY3rc5kFG@VdZdhI)t`@fI`Sl#1TSuZM z`{sRCcx5WJ_r(XzC36Esddu!lj*0yHO7ndc!=dY{2P&tQ9tFBjwZt`|BqgyV)hf9t z6-Y4{85o-A8W`#tT7(!{S{a&J8Chx@7+M(^gl|6Ng`y!hKP5A*5~0C7#K_3X(89{d W0-_;7m3;$H1B0ilpUXO@geCwx28gu) literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/16/fuses.png b/companion/src/themes/monochrome/16/fuses.png new file mode 100644 index 0000000000000000000000000000000000000000..521de6d3a882a51443c6d799d98e1e695831add2 GIT binary patch literal 426 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^xl_H+M9WCijWi-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+g3lfkC`r&aOZkpafHr zx4R3&|Mvbf`++>p0*}aI1_r*vAk26?e?aphg^$(EEF zZz-*umO~MfLZ7zDb3a_s=3}HOy{o83L$5~3XSL?e&!NA+)cZz%?hLm*Aitwqvx`A# zn=;V3swJ)wB`Jv|saDBFsX&Us$iUD<*T7KM&?3ap(#p`(%E(gNz|hLTAbj&7FBA>A n`6-!cl?V;yAx1`4h89*v77z^ys_Ywp8W=oX{an^LB{Ts5V{Vle literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/16/information.png b/companion/src/themes/monochrome/16/information.png new file mode 100644 index 0000000000000000000000000000000000000000..d7016086ec94868649225d4d1151c639cadac856 GIT binary patch literal 341 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^xl_H+M9WCijWi-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+g3lfkC`r&aOZkpafHr zx4R3&|Mvbf`++>p0*}aI1_r*vAk26?e?s z%bYOlOr5b7=PrNST8%$y6FAHlDqY$6K+JIshyS7Zwp0*}aI1_r*vAk26?e?4@Tf`lLaEV3WGl{FJv zv{oEXN>kp{^glwxz{mgy7IK;ym?Q+Yo@Wu;;U~jzw}nmRXwQ|6O?(UtWg_BCLZVCi zfu^aJxJHzuB$lLFB^RXvDF!10Lla#CLtR6Q5JO8VLsKhb18oCCD+2?*#&&iT4Y~O# lnQ4^>4dx+6MplLvRz?;O4GF638-N-ZJYD@<);T3K0RTlsSX=-A literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/16/list.png b/companion/src/themes/monochrome/16/list.png new file mode 100644 index 0000000000000000000000000000000000000000..01a4b47d6bf9474ad1eb6e53e4d7cdacecdf4903 GIT binary patch literal 425 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^xl_H+M9WCijWi-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+g3lfkC`r&aOZkpafHr zx4R3&|Mvbf`++>p0*}aI1_r*vAk26?e?SROX|vTbul& zojXs=zNwtDAnlco=*rAzj`Mt2ULBicb7KE2_x9hjT76cmPD%OxhyU&i@%2iE2m9|m zY6rSjwZt`|BqgyV)hf9t6-Y4{85o-A8W`#tT7(!{S{a&J85?LD7+M(^@HMuxqiD#@ mPsvQHL})M%F*33;w6HR=fM`fiW#0hQz~JfX=d#Wzp$P!+9+cVu literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/16/logs.png b/companion/src/themes/monochrome/16/logs.png new file mode 100644 index 0000000000000000000000000000000000000000..1d955dfa132bc65f216ffcfe1895386a7ad315ef GIT binary patch literal 379 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^xl_H+M9WCijWi-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+g3lfkC`r&aOZkpafHr zx4R3&|Mvbf`++>p0*}aI1_r*vAk26?e?4@P73nLEs~&9$7S>l} z)s}GisM(QdapuFUMj&8yjc9quJLO#3hGSa}&3hFLKBDZ8i`#J zA(ADMvm|dw$Qj8T`|^yHEm7lqpCgB2tAXN#hq_ZrIiel@9%m|Klbg!O5cFF{h)K&s z8fd?2iEBhjN@7W>RdP`(kYX@0Ff`FMFw`})2r;y@GBmX^HqbUOv@$T@Yiwsn(U6;; ll9^VC&|n^7WMpM%VP#|i(U73Zz5%F#!PC{xWt~$(698L7ZEyep literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/16/movedown.png b/companion/src/themes/monochrome/16/movedown.png new file mode 100644 index 0000000000000000000000000000000000000000..5a0abec1fd263061febf0aa489448ef7d47340e9 GIT binary patch literal 358 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^xl_H+M9WCijWi-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+g3lfkC`r&aOZkpafHr zx4R3&|Mvbf`++>p0*}aI1_r*vAk26?e?Zwv`K}ALKZ< zEqO(|;mik3GCaQ}c_ct!jYL`EW~IJ|_J^a{WZ8n-@_GJC)@;yRnegNMho*p0*}aI1_r*vAk26?e? zL~>Gpoc}OCkyGzwD9?Y%a|SVqKh7J-&Mx6ST;H~tr-mnq$6Vr{@sdL=GaqoNNa`6| z7}q3K9DQ)8V7?<)@WEKN^frDT5b&3Xk%;3fDVW5d Y%E$tuAwiXW15g8lr>mdKI;Vst09~tTJ^%m! literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/16/new.png b/companion/src/themes/monochrome/16/new.png new file mode 100644 index 0000000000000000000000000000000000000000..1f593fe07dd55559251f7e1906080bc95a8c8ff8 GIT binary patch literal 380 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^xl_H+M9WCijWi-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+g3lfkC`r&aOZkpafHr zx4R3&|Mvbf`++>p0*}aI1_r*vAk26?e?K7ziIb}cd-rkjS7wxUs%R2som|Mupvi>b0X_)m-98s zs~92}tgdZJEv piiX_$l+3hBga-2vBO@zA3o9cFh=v4J_6p0*}aI1_r*vAk26?e?F+}5ha)Lz7f@u%!57)Q-pCQD) zP>6$r)hFPWyq>b;!Y_4fv28kRz9u*8+WdJ6Shw=rzo>JwA?Ii;n<^Wh$ld>vT@!c8 zN%YNOnV8V1m5`d@u(|$`L%RhN1H;8XY85NQOO^sHQY~?fC`m~yNwrEYN(E93Mh1o^ zx(0^2h87`)mR5$QR>lU}28LD!27Ha}>?j&?^HVa@DiIpYLyU~93@xmTEFc;ZRM|HG PH86O(`njxgN@xNAu(W0& literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/16/paste.png b/companion/src/themes/monochrome/16/paste.png new file mode 100644 index 0000000000000000000000000000000000000000..9970502c6c2f445311c970b09dc685fb9034870a GIT binary patch literal 402 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^xl_H+M9WCijWi-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+g3lfkC`r&aOZkpafHr zx4R3&|Mvbf`++>p0*}aI1_r*vAk26?e?4=;gT)_mB&SIHGpaeX z%wdjWyW;GFGaIKboc2(R+5WJ1$>dj(|BU}6e@H1vh&cCQ{zH4GCRR^D<-=w^<^~Ht zN=iydN=VchYdi{KV0_23JJD-{_Ko8TX9e1$8I_rpo!RTOKUfHL7oK=v@60^q>4AcV zg@VQ_>JR?pm*6w9QAn{WWMJ@)5u2{Vy43~fEY%X%h?11Vl2ohYqEsNoU}RuuqHAEN zYiJQ-XlZ3=YGrJoZD43+V8GYd&W@rXH$NpatrDTZJjBSz%Fx2f$O57vL6v<2Py>Uf LtDnm{r-UW|)Sh{v literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/16/preferences.png b/companion/src/themes/monochrome/16/preferences.png new file mode 100644 index 0000000000000000000000000000000000000000..1e0904a084bca743b1476d5f5b949ea9e13f11c7 GIT binary patch literal 437 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^xl_H+M9WCijWi-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+g3lfkC`r&aOZkpafHr zx4R3&|Mvbf`++>p0*}aI1_r*vAk26?e?%ZsK0!@=Yq#&OW{P@n*Y)@Rg$tfM2|hdBaoXgD6DNp0*}aI1_r*vAk26?e?tNnvfvsc#K}Hghw)JRDY1DZb=d65F1Q zH|9(3seHZqfMEmIFOid6EGIRy4$d|f(^lW;c_}sG#tiSp&ozy{@bl#w9${7Ul94desuwh?11Vl2ohYqEsNoU}RuuqHAENYiJQ-XlZ3=YGrJoZD43+V8GYd&W@rX nH$NpatrDTZJjBSz%Fx2f$O57vL6v<2Py>UftDnm{r-UW|Ajxv+ literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/16/profiles.png b/companion/src/themes/monochrome/16/profiles.png new file mode 100644 index 0000000000000000000000000000000000000000..01b13e3c7981514588617d60538b77760e58f67f GIT binary patch literal 292 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^xl_H+M9WCijWi-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+g3lfkC`r&aOZkpafHr zx4R3&|Mvbf`++>p0*}aI1_r*vAk26?e?P#hNf1= z2HFOORt5%qjqU6x8glbfGSey%8q7nCjI0bTtc)xm8WL35Hvly-c)I$ztaD0e0sykv BO}_vD literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/16/read_eeprom.png b/companion/src/themes/monochrome/16/read_eeprom.png new file mode 100644 index 0000000000000000000000000000000000000000..36c0ca8c6c62f50794ce1b4f89ede64ea9d713ee GIT binary patch literal 719 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstUx|vage(c z!@6@aFM%9|WRD45bDP46hOx7_4S6Fo+k-*%fF5lsFvV z6XFV_sRI}>jKLJaP(rG}|NsBdv;alEEs-n%irSY1`2{mL)E_Bs*x$*#jm7s1;{mts z=B6(8+DeZ0GZzoKusJe0HhQ$yz5Dd`_aV;1)hg{9)+l7Hn;sZ(Jbyj&_it@IJ9$3T z0F7cy@^*Kz^5Z-L3O~*QkH}(Rd|U@%MkkHg6+prDo-U3d5|>T;uZtaW;BdJaXl|%> zOlbGU@Ar0p`d|Na)5S`LbG8Nynh}~po-SN3c}%=>m1WFlf1U6-bi(=ewgm^=Twe&O zI$5p?$!1)br?Z9iN`}|E$&aRqU6`i3@s&V`xGi&xdEeuGVrR-y6vDqGzBjy!O_$?ws;c8R&G?64!{5l*E!$tK_0oAjM#0U}&OiV5np0*}aIptaXQn9)gNb_LLAK2I0N5RLPt7xsEF2MV-3Oy3;Y(KX@H zDQf}g)d?HBruIg3m&G+ED9^|^aKC$l$U*4~X@+9=8ad3&l9sYeoRKkU>kZNHgO*3n zSbi?vSN`Mvqcc~RwqBn8H%D*rv2F-_Wal?9S%bOig{cPJ8e!x!K=$HpBA6x@SQX z0;i}n$-ECZ&bOjMJf-?YR(AE~w?|i3>Fs=TcJuiK4uQuf`f^9vT_}IHufy}`O3l@B zzOxImpMIBn5mof=%H-7YYdwMAuKR_2*_eMMup0*}aIptaXQn9)gNb_LLAMNb#U5RLP-7xwBeNfcrIaQ}1Gj1wo= z*0v?7P5vw0)8Bg}?1&kc3K!ShuuaM{o1B!QRpl{P#&)uSAr z>*3*{l>NO>X7e-??}Q60vtMsYTFQR1WtDfPvlrK{EeliJ=DS($J-AA^GIkr!s|`z5 zMMTdR<}eC-V{tuE?)18|&1&13CMKtPx-K>g^}TkU|J|QLd7g+1%Og*%VXiFR#P{du zTKPKHZFhgKd~s;u3G>X$T1K}*du)GPSbTX|f0U`z#?-Sj_3NakRT$;m>D;s@BJ@o$ zulUi2Ggn*Q{VM)C=I~~vj<~1)?6q_PQ_F6Nn*c*lwZt`|BqgyV)hf9t6-Y4{85o-A z8W`#tT7(!{S{a&J85?LD7+M(^@HMuxqiD#@PsvQHL})M%F*33;w6HR=fM`fiW#0hQ Oz~JfX=d#Wzp$P!8ugs|c literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/16/recentdocument.png b/companion/src/themes/monochrome/16/recentdocument.png new file mode 100644 index 0000000000000000000000000000000000000000..b7d7eb86be05447cb72c9f59821df31a24925994 GIT binary patch literal 476 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^xl_H+M9WCijWi-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+g3lfkC`r&aOZkpafHr zx4R3&|Mvbf`++>p0*}aI1_r*vAk26?e?j}2<7Bu-aoK=$D?U&Hx-nW*t&l-wMF_!a~K^l5DeilyX@Ni?p)>O z=bHR;{uf*D|6k@i|8AwJob<|fVq7dt3#-KqCwX~TZ+!QLUDAWWX~QEkNsZkmnvbWx z#Vb}UOgzW@GT)lvIhRtYa^9KS0U}@RXMTTjpgZ>bvd5?6c%!CW-T0h&AA@1M@sc_F z7EK3wP_@K0q9i4;B-JXpC>2OC7#SFv=o%R68d`)HT3Q*JS{WN?8yH#{81OZ=v!iIp n%}>cpt3+rp4>2;bGPJNVvVdqvP-Wi$)WG2B>gTe~DWM4fDFLO{ literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/16/save.png b/companion/src/themes/monochrome/16/save.png new file mode 100644 index 0000000000000000000000000000000000000000..728de38cd60836eddb69680aacf58f946e7ddcd4 GIT binary patch literal 344 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^xl_H+M9WCijWi-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+g3lfkC`r&aOZkpafHr zx4R3&|Mvbf`++>p0*}aI1_r*vAk26?e?4@XAN_3K539_0;3Xj` z^`L~Anc0Vvn@?C)^55dw49s77_)f&Q?U0s`l#zI|a8EN2yTrf4PZw|*%lU}28LD!27Ha}>?j&?^HVa@DiIpYLyU~93@xmTEFc;ZRM|HGH86O(`njxgN@xNA D;U`}I literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/16/saveas.png b/companion/src/themes/monochrome/16/saveas.png new file mode 100644 index 0000000000000000000000000000000000000000..71de2f8873229ea2199c74c45f15e405cfd58ad0 GIT binary patch literal 368 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^xl_H+M9WCijWi-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+g3lfkC`r&aOZkpafHr zx4R3&|Mvbf`++>p0*}aI1_r*vAk26?e?HBYU^4N=QXBI3oTp?6&5=k?0g>`Y%5_?{Vq=^ zsC?#v16suwZGAN7=x#Tk-F<-Tz%}8xK2Hm=zV)ArD;S!*#TS>G{9ggIRJFu4q9i4; zB-JXpC>2OC7#SFv=o%R68d`)HT3Q*JS{WN?8yH#{81OZ=v!iIp%}>cpt3+rp4>2;b bGPJNVvVdqvP-Wi$)WG2B>gTe~DWM4f84zrX literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/16/simulate.png b/companion/src/themes/monochrome/16/simulate.png new file mode 100644 index 0000000000000000000000000000000000000000..6ae265ea646c72f59b1ce0e3e66c241133164f1e GIT binary patch literal 333 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^xl_H+M9WCijWi-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+g3lfkC`r&aOZkpafHr zx4R3&|Mvbf`++>p0*}aI1_r*vAk26?e?wOR z!#~V_Xzi>5;{G!};~sIeC3K;M-u6G~KhA$>SCpPFYA*TZqh*mGv$bzizY_yPSDwHD zEm_YPpoyv_t`Q|Ei6yC4$wjF^iowXh&_vh3P}k5R#L&{p(A3Jp0*}aI1_r*vAk26?e?N?{kwUg6V-ZzCy+_Sb? z*FwUqed~pvo-gjdW}TQICDhc`@CN80)e_f;l9a@fRIB8oR3OD*WMF8bYhb8rXc1y) zX=P|?Wo)2rU}$Avz}MK$j-nwqKP5A*5~0C7#K_3X(89{d0-_;7m3;$H1B0ilpUXO@ GgeCw|(}Cpx literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/16/update.png b/companion/src/themes/monochrome/16/update.png new file mode 100644 index 0000000000000000000000000000000000000000..31b90cf3604b3b201b72ef73769de401fcdfce70 GIT binary patch literal 381 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^xl_H+M9WCijWi-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+g3lfkC`r&aOZkpafHr zx4R3&|Mvbf`++>p0*}aI1_r*vAk26?e?jh-t!Y4qy(fJxNer<`e!gF;lUAcrYfE{Cj6;y7#Pf6if&)} zq%Q~P0@V`Nh?11Vl2ohYqEsNoU}RuuqHAENYiJQ-XlZ3=YGrJoZD43+V8GYd&W@rX nH$NpatrDTZJjBSz%Fx2f$O57vL6v<2Py>UftDnm{r-UW|OO9}L literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/16/wizard.png b/companion/src/themes/monochrome/16/wizard.png new file mode 100644 index 0000000000000000000000000000000000000000..e047a1bf96e71e3143de6c44f02d8066d6554908 GIT binary patch literal 754 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstUx|vage(c z!@6@aFM%9|WRD45bDP46hOx7_4S6Fo+k-*%fF5l=u+f z6XFV_?d+^wTpYxOMU>^`mE{za<>Zy+6_n)U9qeu7q~%nVl$3y6c?C5kWgw}lsH7wZ zB9#>sRTLCK40%N@b#+}$Eubzfbv2+GptuTH8BheQ9%L+#p`xImq6pLiK|rn|&?q1Y zG(l5c4Q!FTs**BTT;9+?4=An%v|LsmXc|xu=m2*&Cx}tC}^nY9O4ia{3<4#K4HR_iA|alr%jxioG>B$L2471 zhLN`BY6YK^q=dlG|tgp_3S&zz`zc52Jgo{8O?7M4(%9WO60 z9nHpOZC9;kaR2=A;|B#(Oqzv-d*1VGZIEURaK6$>}(9) zwnFPlWewf~9jRL48c~vxSdwa$T$Bo=7>o=IO>_+mbqy^-3@xn;O|6U#v<(cc3=H@h t+d;vJ(2$#-l9^VC&|n^7WMpM%VP#|i(U73Zz5%F#!PC{xWt~$(698(zz&-!~ literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/16/write_eeprom.png b/companion/src/themes/monochrome/16/write_eeprom.png new file mode 100644 index 0000000000000000000000000000000000000000..6ff3e7a4244ad1792bb950a561cabb39dd8dd698 GIT binary patch literal 760 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstUx|vage(c z!@6@aFM%9|WRD45bDP46hOx7_4S6Fo+k-*%fF5l(-t; z6XFV_X$2Uu8H`mBn?hp5{{R1vsSGG6FZS>%P{Oq&$S;_|p}yRism1X~al`&Coy_~T zvG{&r>~3yi?P9O3I-NoK6*`O52;VkfoEC$BYbr5EB(wJQV6g=SR;us=v*|a}1`j7)p zOS-%E@mo%ruHsMhLiiYuG6#xW`161NlXpy?H7nZ}&Qwq+86$c?$vZV`qsz&y zY!Yr$v(7{<3evdUY@QUleBaU7E(HeP#g+HH4w{uL&sNX8@Y*_E`oruDHa*o~XYW`s zUy;;EvrBy4?6KuXJGSLjOt3Gondc+hG5Myl#rA7f;xW&jT;BYk;@7LEU*FdL-S{#3 zj?B}~*~+)`A0Oyvw_bTN?$Bmu`9A;u^A5yUTze&-RVMUcsaV%~pkGu=Tq8>&FhTQy=%(O~`2J;XjBP&A- YDzopr0P}UmJpcdz literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/16/write_eeprom_file.png b/companion/src/themes/monochrome/16/write_eeprom_file.png new file mode 100644 index 0000000000000000000000000000000000000000..4c78f00c7d02526ef8bd18cbf4bf7831260f5e16 GIT binary patch literal 529 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^xl_H+M9WCijWi-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+g3lfkC`r&aOZkpafHr zx4R3&|Mvbf`++>p0*}aIptaXQn9)gNb_LLAE>9Q75RLP>7wo;569rg5+@F58b;XTp z&W#@#3^~Qjl60#$54shEO9%2NYBsqCEE4?4rgY;*$5bVy&iY9;Vw}6W@@LI_c=qvL z&p-V!1?u7_js|_*;t+hLOpUXsb05=fHY>3J@v9=Q*fKrM3=hmH7fjCz&=fQiG2$s$ zw^T8Uhx54@%Sxx_wupXD^VzxW z&u{)cktJ^~G^?72`A+!N%^Yg`Mq;yh&$q`5pPj1CG|tr3>}C8LXs4dx+6MplLvRz?;O4GF638-N-ZJYD@<);T3K0RR9lyMF)x literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/16/write_flash.png b/companion/src/themes/monochrome/16/write_flash.png new file mode 100644 index 0000000000000000000000000000000000000000..91ae4ee62f706e30821fb27a042fc3c1547e06fc GIT binary patch literal 556 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^xl_H+M9WCijWi-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+g3lfkC`r&aOZkpafHr zx4R3&|Mvbf`++>p0*}aIptaXQn9)gNb_LLARZkbk5RLPt7x#KcCyKCrxL+M>;?=bx zTTE8u<^2oVT1|7KN?u;z;wyVGZR-RM$yb?{*L$-*TPdLU zeRr~IbWzbKq0R`kysg@+q$V8RTDw7a>zzpZA8)TE8$6$#$$U&ycEt~^vIqQf zZ+?mXe0Xu;E@^iqYqgrP#7iCA^3hg4l3U+yRopA~=4L_a#hKrW{F`cv-i5fTO|87$ zcR%&+eXZ)tmK&SDmZ&;j`Ix=3?#h2AuVuln!d9P@0fwS#iEBhjN@7W>RdP`(kYX@0 zFf`FMFw`})2r;y@GBmX^HqbUOv@$T@Yiwsn(U6;;l9^VC&|n^7WMpM%VP#|i(U73Z Rz5%F#!PC{xWt~$(699Q5&gTFC literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/24/add.png b/companion/src/themes/monochrome/24/add.png new file mode 100644 index 0000000000000000000000000000000000000000..fc50fa563d28375fbb3b5605ab551dd704ab504d GIT binary patch literal 359 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_*1mUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE z?e4#Iu|Q$U1jdsmt1}oGZr+n+VE8EK4zx?P#5JNMC9x#cD!C{XNHG{0 z7@FuB80s2Ygcw>{8Ch7FT51~@S{WD^W~n_w(U6;;l9^VC&|n^7WMpM%0n`K0kf6%G Q0jPn&)78&qol`;+03iZpF#rGn literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/24/arrow-left.png b/companion/src/themes/monochrome/24/arrow-left.png new file mode 100644 index 0000000000000000000000000000000000000000..3e93c4017752697ed36ef66a6791d05653ccf6bf GIT binary patch literal 427 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_*1mUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE z?e4U;ni5xmoM#Q@h1} z7@fPaWlgKWhZ#3>Z*%N#J0)3tJj~*i=3O)K+8dnicVm7p-z)H|>%X+zzdQC}3tnno z=I1R|tXZ9^oS)_-QF+eo)iI|TtJ0N2mD$;a^`{^DdVNI&t9SRCQ*({gjpZ~xEj+VP z73f~o64!{5l*E!$tK_0oAjM#0U}&OiV5n5tXk}nvn5FgzMMG|W kN@iLmLW6mTk&%_51yBz}LxL*%2A~E8Pgg&ebxsLQ0KONDWB>pF literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/24/arrow-right.png b/companion/src/themes/monochrome/24/arrow-right.png new file mode 100644 index 0000000000000000000000000000000000000000..be45fe369b4fa1d3ceba4268e55ad8f451971fb6 GIT binary patch literal 428 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_*1mUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE z?e4}$4V#1?77J<$Ht;FN@spE{CWFsUh%tkiRb^z#sjofQrijBg7)y|G&Ge%`8SZPtR`i|ymzJvb3@RhhD^Hw1>uQr3{zTl)#U?BC$@F_`*4kLy)w`jyc6H~B=qs=8Z0?m;_SEK| zbXDv%(7~!Dt`Q|Ei6yC4$wjF^iowXh&_vh3P}k5R#L&{p$im9hQrp1L%D})dOYISg nhTQy=%(O~`2J;XjBP&A-pdN^Z1XcD8Kn)C@u6{1-oD!M<{x_Gn literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/24/changelog.png b/companion/src/themes/monochrome/24/changelog.png new file mode 100644 index 0000000000000000000000000000000000000000..c0b9d00a03c18664795ed103b4a234f16e13fe58 GIT binary patch literal 475 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_*1mUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE z?e4E{GKl$VCLe9opM0pYeY#(Vo9o1a#1RfVlXl=G|@FM)HSpSF|@QYvam9>)HX1*GB7aAQhS7=AvZrI jGp!P#!92vs$jZUftDnm{r-UW|rzWD9 literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/24/clear.png b/companion/src/themes/monochrome/24/clear.png new file mode 100644 index 0000000000000000000000000000000000000000..e8eac19c28ea3e60193f0a8e259299534ff90449 GIT binary patch literal 451 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_*1mUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE z?e4b;ThQp@K~m)fzWrqUDc-iJ0PDDbtNXR^5Kd+*Hd?{*T2_ZCa*R6JUk zm0O(teX;bJ3WX&VQPC|N@@8+PWs+KWMZL zaaZx#9nsj0MpfZD?WU$lpIE2;v#rtOsNe_sL$$;;q9i4;B-JXpC>2OC7#SFv=o%R6 z8d`)HT3Q)dSeaUC8yH#{7#L=$Jwnlto1c=IR*BGH9%5uNS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE z?e4#V!2IXs%Ny09O#YDW#V+=>S5V> zY);}VvCpgCyC-jZv9r7S+*7;fJJ0X^{$c+_&nK*oI{6Vn)~gQm$i8Mzb`Oqxez9fJ zgM=wMzn8pu@~|z&qWr~l=LPE+%xX8h-aBdfyj`!;?>OJv)K)bkwRENQ_4kXUyW&>Q z20#=Bbn2~b!MzSU{T#Xe3(u#X z&f2uh#wO<6HdUV;PqyV{zjHmkO?^#8PT2A}tAt-pezI13nMY&!zTHc6&Of=&DS1AG z_oY!rfd8eEV>cr{o4kFsHRI^E^%u2%b6vcDtExNk?ztJ>r?zdl&mY(tnm?!bEdTLi z4G%-E|JSZ#)?ApRDE1?)FK#IZ0z|ch3z);uFBE-zopr0KP;5 Ax&QzG literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/24/configure.png b/companion/src/themes/monochrome/24/configure.png new file mode 100644 index 0000000000000000000000000000000000000000..9d959229ab58072ec38c403f33aee62a0fb1bd13 GIT binary patch literal 449 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_*1mUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE z?e4o z^EaE)*nNpzI#-4Rm!nCXtSXX?t`=`H!4 z%lO~dht2(c>HCf~)3&m$Uv(~Q-SlfmfAy9u@7Z=_s`AE&UO_QmvAUQh^kMk%6I!u7RPh zp+$(HrInF|m8qq+fuWUwfnk=~BNPp}`6-!cl?V;yAx1`4h893Q5Df{c>>Gd@7(8A5 KT-G@yGywoX1)!Dy literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/24/contributors.png b/companion/src/themes/monochrome/24/contributors.png new file mode 100644 index 0000000000000000000000000000000000000000..57692d7326b7bf0bf958f0d080a57084903ab15c GIT binary patch literal 562 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_*1mUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE z?e4+R4c2MQ2oPbBS7UV*ekplQbk2_;_E$9)VFlBc zTv6fqI>YGI-Q5!v&oJ}XZIIT_REJ?SW>UXe@*KtFZdZXRx ze`zN&wL9}=D_Quz#ZLbaX1PMwxGd4PJM(YC$)&#K&v;e-%NZFJy1uSTdXv8HOxJ**5?+FnGH9xvXNS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE z?e4D=|p=RByM(wcR?A=@aY_+agPX=SdDikcy7S3Y|9u<*e0R%hEOifj&ybCn)!e&o^0 znIq@a1b0cc1L}Y zKOv7&fnHQCag8WRNi0dVN-jzTQVd20h9P#Miy44mf8k}Rt5%!S!$0^ oH00)|WTsUjG?<4N8Ce-x0QEpLB&f1)0BT_HboFyt=akR{05U16v;Y7A literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/24/currentmodel.png b/companion/src/themes/monochrome/24/currentmodel.png new file mode 100644 index 0000000000000000000000000000000000000000..4bb610c08ec2cba09707ba6ebce89c3a321e2ee5 GIT binary patch literal 473 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_*1mUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE z?e4AtXfi%B4FOw(MO~W4`m}Ios#f&+qWp ziAzP*IC%>2NYq@8KYGmVZ%o32M@cpNCUy4pNlrh-5w=+Ahs7TAM^8`aX|3IK;PCO| z&mA2ODEF+>S$W)l^9})*zT;DJK9yTraALR`46D) zR7+eVN>UO_QmvAUQh^kMk%6I!u7RPhp+$(HrInF|m8qq+fuWUwfnk=~BNPp}`6-!c il?V;yAx1`4h893Q5Df{c>>Gd@7(8A5T-G@yGywnrI;a=` literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/24/cut.png b/companion/src/themes/monochrome/24/cut.png new file mode 100644 index 0000000000000000000000000000000000000000..1e5e3def324063ae20ebaf5865013012b789a51f GIT binary patch literal 683 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_*1mUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE z?e4K8^3v#|Ns--K(!}l=?YOt}}G~?rE=% z?0xZ3Q*Zi*r$0n&-%Vv%C{}gQ+5C*?g`F38<*F9mabA!+d-m;KUw(tx+oX$&Z}X|H zX3*KZZRgIpH!K)#?3g=acJ%E{iuadq{d_S5m*F5}&BPC>+if8DpOXA|w_x+i)N@eDxz)Jt+g|X|N#zoDU&iS&V z+uL2uLSJ|1^z3z;cd*`hB0AmTFz>e=r|0~>lYTDt+m3^hdLPZryPNdH85>S1f2%y_ z>Gx?)ty~~uL-(KHJ4+2?m>Qn%IA9$1=iK`ZP3bWed<;8|OivPCexr$D#iC|eAqI~( z3!1eU4vP78H?iJX)X8@4!l4t|R!w5(E;tBpkNA=P&-ABgX~>0R<$r2}GkER?9A>V2 zpl+AFhe6S{vE0Tk0T}HJswJ)wB`Jv|saDBFsX&Us$iUD<*T7KM&?3ap(#puf%G6TZ xz|hLTz%Wbg5sHS~{FKbJN`waU5F;ZiLkplDh=v4J_6NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE z?e49Pmu8O3#!ZtWIK;$$F{veRIWk8daT2_)_UzfQ zD^|;Y&V2YM{oI)k-<31=8UnC}Q!>*k5gN=xjEt-dEr5C;8WL35Hvly-c)I$ztaD0e0s!tex#<7^ literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/24/edit.png b/companion/src/themes/monochrome/24/edit.png new file mode 100644 index 0000000000000000000000000000000000000000..4ea6a9d5d48a9926d50712b5231d30091288c252 GIT binary patch literal 521 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_*1mUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE z?e4BVgdJwO0W7~tK1i|i(9#&S@wrHVchc=&i{_We8 z(7oL9+XdHlYG&SK(fXu&cab*h`e{}N z_m%s%-F0=ixS(m))b(MDe&%^+Nt7=Vl>C}=wl|sk?b}e**Q-uFyKTmj_)NK(XNL&K zl-`!TTXKxwTQgdkHXg|3{<$xXN8$O#ovB-_5BPbsJ#tiHGLv1Yoa&Q*=ZMCO$y=Y? zn#NpwmtluNcF?U78INQCo*bR${P%9-${W>7>X`VA(vloPukP>kFVpsz7P_{-8W=>X zC9V-ADTyViR>?)FK#IZ0z|ch3z);uFBE-zopr0N_=?Hvj+t literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/24/exit.png b/companion/src/themes/monochrome/24/exit.png new file mode 100644 index 0000000000000000000000000000000000000000..c5938746310ced7816f3011a7c645b22d5821707 GIT binary patch literal 527 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_*1mUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE z?e4;bI>8T zxH26T>nXiQ{3cF)+H$jFYwP)hvXw6@Pu$uW_B`hL z{@ul&>$g5T;c#n_p=$P_36Z+>j8?g~*Y8x_y{nG-mrUgKn9q@``M&;VNqHlAG*!1! z!0qkHCE{nfQ>7E!B@WKov|&!!yikF2DX$yW1TS2m$yrh<7PcxcD31LEr@z%?hxJ_s zQ%|I~@Y|lel$!s-uX5(3^C|%)-9K3j+N+Olxi#DAWK!(52eCK2{$C3-KeT$!w^ipW z1>bG?>6k3nTJZcpqqgY7i!JdcFK$d<;dgZB!(Yv9ESGZbY;lyl?iZu+v-}sEzm0Xkxq!^403{7+m40R1HLJTdfj4Z57Ewv2{tqcqdv(z4; oXvob^$xN$6XfO{kGO{wX0P2BgNKj?p0Mx+X>FVdQ&MBb@0L0bGGXMYp literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/24/fuses.png b/companion/src/themes/monochrome/24/fuses.png new file mode 100644 index 0000000000000000000000000000000000000000..c73efbb28ffba5aac3863e6b01b18be66130ff51 GIT binary patch literal 569 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_*1mUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE z?e4gZHaMMw_wZJE7k?ZhV~n8{4f2W z?(%7S>D!rh=Z^n8_w(N8qW>QY%Bmi&&7OW~=k2EOGTXvg>VH-Klr1p%exo{Z!L;{V z^R!y><BSJ!f+^1f3zS-}r2B7twA`RjanHH_&`XoK zI(d1W6{r4s>ileG^P+ws`!`Zt;a2l9D@txJm~MMr^w3oE|JTpnH+XpAQmpE=wNWPz zeW}@AJA284xh`5K59wq|X5Q1eDR{28HAMZfS?`vqpIOz}R+;s-UX}bEv}pY#^&3IX zS7)yL)ua2GJN~)Z8~H0dEq`~)E_>Ad&DTED>RN2Z){^TL@1_4Sgx-w*y5=0~Heisd zmbgZgq$HN4S|t~y0x1R~149#C14CUyix5LgDnC}Q!>*k h5gN=xjEt-dEr5C;8WL35Hvly-c)I$ztaD0e0suZA;06Ey literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/24/information.png b/companion/src/themes/monochrome/24/information.png new file mode 100644 index 0000000000000000000000000000000000000000..92b5c038cc35bd5ed5719b21e4384fca0f1e93ea GIT binary patch literal 382 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_*1mUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE z?e4BIGH-8YtOi2gnGp?))qGw)$vsmdFT5AA{C|9QS|^fXEo{C%ikZiuyr z$7V)-2|lR}jJj>QJpU#C8P}xW@SnpLapZ6MkABUQ9j?sm%`9{NHc0u&9f zaIah%=mgag*NBpo#FA92NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE z?e46v%%@`VTcjhAll)(mdm{`gnk>-(P#Miy44mf8k}Rt5%!S!$0^ oH00)|WTsUjG?<4N8Ce-x0QEpLB&f1)0BT_HboFyt=akR{03w2qsQ>@~ literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/24/list.png b/companion/src/themes/monochrome/24/list.png new file mode 100644 index 0000000000000000000000000000000000000000..cb8b7d88d9a71799193ca8e44d415c961d0adac6 GIT binary patch literal 510 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_*1mUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE z?e46%+7&6zVLNIU4#t@Y~Hmk`---IvB zub!lqcW|W})2$N4`FdF{DHnJ0J6;HwC@%SyM=qpb>AM?KRMWMlJ(Z~{TbrTLE5LnE zcBbLm1G5$Ul((p?-E~D|&kF9O(4|Y3G_oX~TQh0WszTwcYinkh%%7Hj`davIC019< z+pq5Cy_GvcKy8)}JhGrWpqocX!wVgFv;!HKHUXu_VKa;v7+P8xSy-7`Y8x0@85kI5sXao`kei>9nO2F=U>;&*WMyap X)C19wpvt}hsDZ)L)z4*}Q$iB}I}*a% literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/24/logs.png b/companion/src/themes/monochrome/24/logs.png new file mode 100644 index 0000000000000000000000000000000000000000..228951a95a311d8b46257dfd23e9508e5b625c48 GIT binary patch literal 453 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_*1mUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE z?e4=D6WYta-Jcqbmr6=&RKHd-+nl>cd+}PyW;C`rZFolQ}CjG{k#R1mo`)s^A${J z{$RFbiIG0Di0I)R;u}wYyWhtzo?-ZA%G^*@pifjwTq84dx+6MplLvKs^u*399THfEpM) MUHx3vIVCg!02&RJr2qf` literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/24/movedown.png b/companion/src/themes/monochrome/24/movedown.png new file mode 100644 index 0000000000000000000000000000000000000000..1f8c99746c96052a298b15edafcefb3b36ceec68 GIT binary patch literal 431 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_*1mUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE z?e41%GsLnhD$mp zd4zpt{u84aIk9&xYpS8DwArMo^A98&KfGt;wrO^8`1$JdwXf|ad|(f9lbY}>Nz%^s z-1!$0(|O&l^mz6wwq9>ce*4;B@h6YmWg)%?YYLd7dJ3Iuoj40?|1UO@Zi$$5Jh@$< z*eFnS2Mfo>q<#VJP4lZhTP*mn=H$_pyG{!#GOgao@oUbFp#Ig&KTP&t6s~*1*A%Ok zVC1)Z7SPSAC9V-ADTyViR>?)FK#IZ0z|ch3z);uFBE-zopr041f42><{9 literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/24/moveup.png b/companion/src/themes/monochrome/24/moveup.png new file mode 100644 index 0000000000000000000000000000000000000000..828dc5de288a03b9d70e8cf1738c7d23511e6036 GIT binary patch literal 428 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_*1mUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE z?e44(EL^Mon+rX;5;%=+xx`qh>JDBfwYAbB>P*4ouxzCnyWu_;O?DpUK@Ao|`e#)e> zf0_BbJ3lq-j5lpJ)QGCzB7EqUbKTCA4DBUO5wD(deh+hcbu@-!zE$Mcb^3~5bpj2A z4>`TgPt=j|32`{PTHx2sLm@wF?pK``UUvMeaA|&|Q}kE&YZr9B^l1NoC_TYI%k;!| z=3PJstCqM%l%yn**5?+FnGH9xvXec` literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/24/new.png b/companion/src/themes/monochrome/24/new.png new file mode 100644 index 0000000000000000000000000000000000000000..7b834e6e8f21b8849a9385101fe76789c4a48df9 GIT binary patch literal 475 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_*1mUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE z?e4`T76-Gw05{JM@3C z>MLdC|v9)>)L?Y%;m_Z^nl% z--gp~tXZedfBoR9uwP4LYW?(s$Iq|ol-ZwtVabZD`SYEpJ48j9sb&WyudLCN3(<0E zv9UkV%Hr`#WSNh*bGX);4G|0%(siGSJ=gN)a&_@IzT@|d6)#Kwn8~GynLaS65fK9V zPqoA~q9i4;B-JXpC>2OC7#SFv=o%R68d`)HT3Q)dSeaUC8yH#{7#L=$Jwnlto1c=I iR*BGH9%5uNS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE z?e4vf&}XmrnI)1JpUJN;0Wzv zJtvfKqJ8sD$)pE4@oaHzZaK@e4xByG;?d9dz=NX0mA?wwm*CLbvXe8xlT}5rq~nEDrlmQp!HU%y3-CGcA5E*HoZORZCnW zN>UO_QmvAUQh^kMk%6I!u7RPhp+$(HrInF|m8qq+fuWUwfnk=~BNPp}`6-!cl?V;y eAx1`4h893Q5Df{c>>Gd@7(8A5T-G@yGywpsA&A2O literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/24/paste.png b/companion/src/themes/monochrome/24/paste.png new file mode 100644 index 0000000000000000000000000000000000000000..849d6b790dcf7038515e32a084cf526ddac05031 GIT binary patch literal 502 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_*1mUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE z?e4z73RIXOWuHu3H%&eL)1%=}q1zOQ@h;$ACo;repjIX^GFaCdG! zutv1BzpVcH!qkJB$81v*1KX1~M&#(ri}i~H$a$P*;+NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE z?e4+tKL6GyMYznEr@_ET~ z{pWud|C;ytY5YpBui@?IUv2+%FtT*n@hQK*A2&TI)7i79ILTWt)s8JLB*3Xz6b-rgDVb@N2o2^TMn+bK7C=1^ V4GF638-N-ZJYD@<);T3K0RSO**PH+V literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/24/print.png b/companion/src/themes/monochrome/24/print.png new file mode 100644 index 0000000000000000000000000000000000000000..ae11c50822f35d1e29b352c33ac7de83a77eddb9 GIT binary patch literal 500 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_*1mUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE z?e4X%7gX>mA1OkE3Bqa_5NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE z?e4*61C$Vx@J4!sV)aKh#XNmgro(%zr56 z-$$OEdwC;nu6b-rgDVb@N h2o2^TMn+bK7C=1^4GF638-N-ZJYD@<);T3K0RYaZk&plY literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/24/read_eeprom.png b/companion/src/themes/monochrome/24/read_eeprom.png new file mode 100644 index 0000000000000000000000000000000000000000..c701d11041ef2f1caafa4b49bcf0ad1c075ced04 GIT binary patch literal 1336 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM3?#3wJbMaAv7|ftIx;Y9?C1WI$O_~$76-XI zF|0c$^AgBWNcITwWnidMV_;}#VPNjn+83;0JLIpNswPK1G}OUCp&Z1%lnVF3$AZu>YFDQ z6Y2GBJqy>4zm*fE4(^s@)NQ*xhfU=B>V`vaULW;HebH`S9GF+QEPUI9Uy+kUw{M!; z6z4y8j(p~q&)!vg>(hRoyZOQ1L9sN!cF!_Zql9?wt5aSz8HnefW#x>@e(o5ief`PX zlFLu$D=6n!o!GTPsN%)i@|q+*iE56I{T&nEuR6}t8NGk{fwl9tOj=ah{UgHc*=LKJ zK<6?hdAqwTiQHGU6UgB#@Q5r1=8x+j%;=;sy8@`7!_&nvMB{vNLPAPX8-o~|MnWoc z@Ee&q2?vgzWfpw?@abdri%d;UPKT77oE9ZL5>nW=WXhH;JRWWi(;WTc90NTgT|<56 zHaa>x2D^Dj&E{R=>>eH!<$wP`z|9j8O$U!$>G8dE$4O8lai;{&nl-ska^Fe_I2^cl z@ZiOh2N_cuH*-%2C@O9CIAO%Gv$~?`rUIv`e!hIXYDdfb#q|t6PMQW97AjZ7l^#lp z$uUmr=t=76>wGG>X1dbdzqM@SoQM<9!!69gqAD6_EWsbW3>?_YR zc%?Xnq#RV)q^hb~T=ZGz(?X$x*D5Pn6*!+BI&^5!qYINR8Fjc+x^^zJ4p_8_i(^%H zwnUbw$g5Y43l>g1$fE!^9cs zx7b-8Dt&G|a8=NAk-9vmPJ_2chn@>#H$%mdX8W}d1we^RwZt`|BqgyV)hf9t6-Y4{ z85o-A8W`#tT7(!{S{YebnObTa7+M(^7-p$GLeY?$pOTqYiO^skVq|1xXaUp%(U73Z Rz5%F#!PC{xWt~$(69D-$NS^=z literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/24/read_eeprom_file.png b/companion/src/themes/monochrome/24/read_eeprom_file.png new file mode 100644 index 0000000000000000000000000000000000000000..4fa26bf074da198d645174c1be5c607c2f95ca1f GIT binary patch literal 768 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_*1mUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE z?e4&)ur>Bc!h{fsNEAbh;2@=OYp11scKJzVq zw(DZStZP%a>z_I8oUpXaSTABqQnBJG-m^#loMv6AxpHUZVlio_YideS58EQ#qmpxD zE<`QK%}76f)be;=@^YK-{oiZnzyECW{I)?Zpc@MdCRKX0U9`T5dtmm`7)SpvGt3l}&x@`qVIUt1*d>f2>ab61noCw!ty zC%4XeyXlPZ+g(pGCM-0u{ct%r`oo=KgQqq^p{h4supq-0R9#%sGJ%c${7Z29! zw2NhLyJGk^Zgu$~e%F@`HLg{*mmhDI`OK4bF>UF^5(XC84Hxx4oK!R|a-Gz!f0a+| zR5tXk}nvn5FgzMMG|WN@iLm gLW6mTk&%_51yBz}LxL*%2A~E8Pgg&ebxsLQ0Q8VN9{>OV literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/24/read_flash.png b/companion/src/themes/monochrome/24/read_flash.png new file mode 100644 index 0000000000000000000000000000000000000000..49c6312d409c75532074c1e196e4694cb56f6b18 GIT binary patch literal 836 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_*1mUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE z?e4(^K>*?YcVsX0nvUkRnbP?7M_v?+a7QI~2 zoRNKzO}9z9`RanRi+Mjws?-z~uyPSMr`x6%ZmiumOOlp$$VRQ{|Kak% z(LrUw%(TQUp^mdxtaxnlnEAi3xbeXhm$Q*~PusRvzyG-}Iw?a!?E<^1^P=M_KIL}$ zmG)k;VqCdGl3cZGlIPui$Gswz!7WOGf(y zzwADsvv;5L2LIl?h0*U;Z*U1~&z4)QD)4>#42SmhUn4W;ZDEe8T@li+9dyce(=Cs) z5z;gCS2~_k{BODFlBcjw@hKOVqkE@ZQ&-QN@1VEpR)Hkv!q!zaPd5o^ubEsXx}D4U z+Dn0FhgU|WY<-}55!&d zTk&!A-6Xw?ZSf%q8)w{}bSfZs+wxUQlz+W3h@0!@8&=8q@5;*_uG=+PtEa4UcEL^)xV)sHEX`>h6{hM-l(wZ zTW`2rM|~XQBE2;X20B6Az|^H$;u=wsl30>zm0Xkxq!^403{7+m40R1HLJTdfj4Z57 zEwv2{tqcqdv(z4;Xvob^$xN$6XfO{kGO{wX0P2BgNKj?p0Mx+X>FVdQ&MBb@0ChT9 AzW@LL literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/24/recentdocument.png b/companion/src/themes/monochrome/24/recentdocument.png new file mode 100644 index 0000000000000000000000000000000000000000..a69798ce1fb5650617ef279755d8847c61487b8a GIT binary patch literal 619 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_*1mUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE z?e4WXh{frvm+U>R6iOWbcztG@s#H@G ztE~IxogpC_9?l6t&M6BlS|2K~>26!HqvJtVMfb75?reAG#>0;PpRvh?JW^knx?tL) zFT1ZyJ8bP=KYjK5m!ECUf9E~_y;9C^UlMEGt=>hidg>k?45@6)4|w^v?uyd7%k$Ka zdc;Z2Y|>CIxIJx(aclo6FEg9Pw{1O__j7-^rp(_X_qRPs_07{eQy(*AdRtx>GhNzT zm3%F>_g{tLkN;D$_DtETyXE2f)V)g^v)<=OPuuWdk#Y0{A-_1)=yg!uiV|vY6Oe~ z)e_f;l9a@fRIB8oR3OD*WMF8bYhb8rXc1y)X=P+#WooHyU}$AvV3?)$2t`9~eoAIq hB|?LFh>?+%p#@M6L_>lq`v#x}22WQ%mvv4FO#qE?`SSn( literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/24/save.png b/companion/src/themes/monochrome/24/save.png new file mode 100644 index 0000000000000000000000000000000000000000..a2c2cbb952acfd7d50f3e43b9d18a13f5dd1dbe0 GIT binary patch literal 407 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_*1mUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE z?e4p~diNT0tdg7$Z!LXOjhVu2&#M1uU&%jF@Yqs6 z=KuZePukaVUtX@e$Utm4H=nKEuAAO*4sVtJoGyzo2f9tQ#5JNMC9x#cD!C{XNHG{0 z7@FuB80s2Ygcw>{8Ch7FT51~@S{WD^W~n_w(U6;;l9^VC&|n^7WMpM%0n`K0kf6%G Q0jPn&)78&qol`;+0CY@<#sB~S literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/24/saveas.png b/companion/src/themes/monochrome/24/saveas.png new file mode 100644 index 0000000000000000000000000000000000000000..f18ad7783237a19c4445585a350a8e9e1325f74f GIT binary patch literal 474 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_*1mUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE z?e4SV&A0~%VXKu;ul`(U4HaH<+j}2Myryq>OZ|TeaWi*J}-UtbBLVV^P<^yeO~TW z@AA!J7w0B#Soijd^qRDfF}dg8z18ZGmC`FOI=yt`Ts7V3Q_K2)Cf71a?K8Q=%DEco zPX^Tz*NBpo#FA92NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE z?e4_j5J$Dht9|O>gpAjHOd_u?45y@ ztCqM%l%yn**5?+FnGH9xvXMN} literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/24/switch_dir.png b/companion/src/themes/monochrome/24/switch_dir.png new file mode 100644 index 0000000000000000000000000000000000000000..8d6879e2fb03517ce9bf2774c1f1db7d556b3b69 GIT binary patch literal 507 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_*1mUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE z?e4kC)TNS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE z?e4wMQr#a`RI%(<%`f f%tMTftPCxHdLSASRM|HGH86O(`njxgN@xNAmr<#Q literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/24/wizard.png b/companion/src/themes/monochrome/24/wizard.png new file mode 100644 index 0000000000000000000000000000000000000000..6185d56c501bb4d1cda2075f35c53421d11149b4 GIT binary patch literal 1037 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM3?#3wJbMaAv7|ftIx;Y9?C1WI$O_~$76-XI zF|0c$^AgBWNcITwWnidMV_;}#VPNhm@uA%~T0}ufX(NIwV3YwW11GzwZLE<0>$g3$U0~s2ss>*WmKI~803Di!+>l9T^%5)BCp`+ zU;{J?=w%=mVkS@-&|aW3fO;WVSzpjiC+u2A9mA@GEgQEcZzwNFDR2to+j92i(W#9G&)#i5c)6SLriS-> zF8O%-{|yHgJeY97prs|X!Zk9orC!B3q$D!ZMP#Miy44mf8k}Rt5%!S!$0^H00)|WTsUjG?<4N8Ce-x0QEpLB&f23 PY+&$o^>bP0l+XkK#)~3x literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/24/write_eeprom.png b/companion/src/themes/monochrome/24/write_eeprom.png new file mode 100644 index 0000000000000000000000000000000000000000..d6d540f5b4d74906ca069feeefe1603884fec18f GIT binary patch literal 1418 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM3?#3wJbMaAv7|ftIx;Y9?C1WI$O_~$76-XI zF|0c$^AgBWNcITwWnidMV_;}#VPNM`&e#O; zo_m|O9C>agdFWftqMvQ7eG@B7^zS@U6g~B~X_9ipjVoa)26?M5NFVH9{NYn@hVWkg zg~#5#ah%@sxR_grM}TAF8pgRzMwc$@IX^loXS-mb!;`o7bqcraEOU8vk4=J$Hz6p% zIMic5%hhFx57qti&(=+yb?$Vu_w`!`IsTU~ zxog9m&GSzF&TX)3j@pU2?{)pZbNbkdkz z0aUQa)5S4F<9u>LLP`=Fvzi#2KtgKr^9N5JJxfe@@bvL>ae)WV#YKeJJUcqNI=wx- zJdF)boG>ytanjg8LqkimIVB|I>Xj>vk9drvW<}ky+Ew+7t9i&w5(xoGE7(;dFTJhxnHaveFIyr^a84o^5`^Z(>x=%BBd25T$`j_5pULxli8fTt;bait{+WDE$+RqH~ z_sywgXBMe2>t@dnS2ZHzlbG ztkH_#Wy!v#6b-rgDVb@N2o2^TMn+bK7C=1^4GF63 R8-N-ZJYD@<);T3K0RTXST5bRU literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/24/write_eeprom_file.png b/companion/src/themes/monochrome/24/write_eeprom_file.png new file mode 100644 index 0000000000000000000000000000000000000000..7291a074c5a1a3bb22df78ab910aa02ef30e9823 GIT binary patch literal 761 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_*1mUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE z?e4&)ulc$Sgh{fsFOYs?J6D1COJb&|CT5|O9 znE_thTQkMBE;`e?Xvw#P~Pi_10`pRfL0d;j_0ef9Ic`+ncw(ZM0<9$Gf{ zl5YR3_g2IE)muXUzd7XJ?<%}^dDZd<@elXZbx;149b4>oM5$L#n@e3NIz`Q5ne{>a ztt&SNtqbLQF-Po_>m0{EttpaI_|&ePE^<1d7k>1S(=4gGpK^kuLX1wymgxsA$ zm9w1c*P5I!7B`7ley(MwTl2?6Q?{)Vyt6ewm9E_8JTFgo)5d#($woncmxjs8X#`}q zKEAa#^z9V+MJrou0?TcSkB1lQdNS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE z?e4(^K>*?YcVsX0na;(SIa+%{Fum7(Io3`}0 zvxcbdNVwI$XirQ%|*>ybS((|R_x1nOLy%zCjS z%0lR~((M_xR>d=S73(~nv&+KWQfhYXx;p;*-@kwSe%ffFk`mM5j#+w^3-=0@|IOQ2 zDrdDmA*ta!PeqQy>P6oT{S|HNyes+L_?e4UY@OD2h=u=|+&HD`Mc}gjlV!hen+kUG zyq*&9`M+cK5!o*;yMM1cbveubSK3l}8R5Vcj+0xJ9a`WV2Ye**>q70h zDNDCata+X-a=k-YZ~1d0-{Tq6gLW+}Q#mAW_Bvc=&2^u^`KQcXQ(|s2d*`~U*Swi0 zcJrCkm%V(=ReJ(#*>*ghDW^Y|=gfswm!k|lv)>pW=PV6dInf~0hL`8ovz=)l9Uerd z>S4>vKNkSH(}gxLDu#w{_Uhy03GW9QyKa4wLH3(%oLnj~ivSpAq}rA1_>5Wg`&w z@!S;Sug|0Rb1u^i(LQqpn7UL;Tq84dx+6MplLvKs^u*399THfEpM)UHx3vIVCg!0Lz|M Aq5uE@ literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/32/add.png b/companion/src/themes/monochrome/32/add.png new file mode 100644 index 0000000000000000000000000000000000000000..17697d5ebd5f2bbee454fbfda396ef3b5144c9eb GIT binary patch literal 226 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzwj^(N7l!{JxM1({$v_d#0*}aI z1_r*vAk26?e?E|o-U3d5r>l#Bv=F^@^6>Ed zU)dtfmMgMBfWwSU%Z>4>BeS8S%`9GbS%X&$QQJEBE?CX)ZwfRpVqln@sWip(K#~d2 OY6eeNKbLh*2~7ZYazg+B literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/32/arrow-left.png b/companion/src/themes/monochrome/32/arrow-left.png new file mode 100644 index 0000000000000000000000000000000000000000..9fb8a885d324653306b5435cd4413d60c97a4491 GIT binary patch literal 222 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzwj^(N7l!{JxM1({$v_d#0*}aI z1_r*vAk26?e?n4Mvkf7Ry;HUvU(f2Avh0!Xh6kbI|4Ji{Jf+15LOYSGBMRi^?20f8fA}77q7| zIxHGot&IIl#~QcP1f(2Rj1=I_2>io*l2IqXXZxua_Pm=vYJep$SM zb?Voyn0a%)-ju7FY%yzMTYqM4)lU}E^|*E7Wr*uo$B>@x#K9Wj z8}M!3F9r`OhMlasw$5KWf0sE0zHSW+zbLz|@Z4qxSM5b1Pc1)Y-k8ChcYNM-=JR_6 x*UIb&?`!@kKSY>p9{~Nr;OXk;vd$@?2>@WVar*!O literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/32/clear.png b/companion/src/themes/monochrome/32/clear.png new file mode 100644 index 0000000000000000000000000000000000000000..345e70b62b8e1646d648bb3a868bc8bd71436a8f GIT binary patch literal 235 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzwj^(N7l!{JxM1({$v_d#0*}aI z1_r*vAk26?e?zx{fZF3{a@T)5S3);_%yP2l);ta5%60|Ns2m zqm$cN1rAO7qI!>|t07CRVGd000McNliru-T@F3At6@}u|xm>0a-~z zK~z}7?Uyl*gFp;LZM34M2pvrhfRISZ5s=6oD7K30S{#vU6p0D7lc^k(}9PzGRTsOoq;suvajB@q$UC`l41y>~5uijVL6 z4~V8|%mV%Od;|-hiU9?C;1i-fKhwu4(HVZIS z-}fYH;cz&Z1?al&({UUS5%&8%#&IOAv*1}_7=oD*$1!BxQagYMbiH1cpP6k$!!T^t z85jSyWvdx8i?7iZSj%D}_JWs((buUk88H6y+wmR$G$vAZwXYli0000^alxP)8C=|NT@IS{C!{`{y`(E*$!Y5wUV3M_j!%41WO**_--e@S z^gh=fezS?iQGn%aL8JAX|Ls2{T%)?pTG@a29a=r9)6Md@t)BMJ)hcDp&S!#c*3FTA zr&JgFYSn?xT!R-l+tjm6Q6zbP4SKw%h ax%Rr#`KsDaHASE=89ZJ6T-G@yGywp{Pl-AJ literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/32/contributors.png b/companion/src/themes/monochrome/32/contributors.png new file mode 100644 index 0000000000000000000000000000000000000000..a51bc3c5650d926da41c2c28edb12977ed151bbb GIT binary patch literal 574 zcmV-E0>S->P)VGd000McNliru-T@F3CN3j@6e}E5#z+0%Nf@wIg8BaS92qNDw?gtaCfG52Wj9w*4PH8sd9D(WPxjojq@nyI~GMB zxE0v}<*Z)_Tshd;)d&<~6g=Qi>Pti!0_1=r3xPs41oou1+H`0HQu56L+cpBJkYZkW zIQFI9Ut(|sSOms^E<^TRdT0f>kgR1SBYA`5rIZ}kd!hrlbEvJajBH|zRpHoN<2K_d z2Lh$gLsKovHeHvi*h`ST%5P-AbCipEM`D9)bbJ%iH4^ZsqmI9hACtK3j}QGt1poj5 M07*qoM6N<$f=2E0G5`Po literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/32/copy.png b/companion/src/themes/monochrome/32/copy.png new file mode 100644 index 0000000000000000000000000000000000000000..aae5f53029fe6123ced90141eb44fdae2214f1a8 GIT binary patch literal 302 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzwj^(N7l!{JxM1({$v_d#0*}aI z1_r*vAk26?e?uF(6? z-4}m_`wnpa%Zc$~Y(2=T5<5en#z~i9(xy$an|9=!;%-L-5e3sy0MiteiS9)eJy>L8m zt7qL2p-DTc_r1=(B3-jdWIpq8rV5`?ttWiuHr_n`ZF5nG tv;R(6t_@r#JWhO4IkIn7?t!cW{AxL~qt?$~4fF*AgQu&X%Q~loCIBfub+Z5f literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/32/currentmodel.png b/companion/src/themes/monochrome/32/currentmodel.png new file mode 100644 index 0000000000000000000000000000000000000000..816752fafd5d7ce4f220fef74967cd26cfa5d8b9 GIT binary patch literal 365 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzwj^(N7l!{JxM1({$v_d#0*}aI z1_r*vAk26?e?t4f-@4CZ}NtDJ9eR{HK_ z&P?F_($KDcp0&u~+UGN}JAOS$YtX&G9v8@X{F2@3V%ed}+k#^RBjc0+Oz~JfX=d#Wz Gp$P!e;f?bE literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/32/cut.png b/companion/src/themes/monochrome/32/cut.png new file mode 100644 index 0000000000000000000000000000000000000000..efbb2cd5dfbfd5d9d2408f175312f29ddf71bd66 GIT binary patch literal 3651 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 VL@zJ5U~2#X002ovPDHLkV1jFe)B^wj literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/32/duplicate.png b/companion/src/themes/monochrome/32/duplicate.png new file mode 100644 index 0000000000000000000000000000000000000000..43041429ccfa50f19886f3a4d080e14846bf9257 GIT binary patch literal 313 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzwj^(N7l!{JxM1({$v_d#0*}aI z1_r*vAk26?e?l#Bv=+~Ng4_dM0d15$*l}DT=hOerEACrj zeVFIok6e)>r`);Fsf?q;$iQGvv(&%2jg5}8!c-L%KmPSda#NY*I*oZlqnOIqeOn3` z3|-&bYy3NZ;J^gy0KSHe{+F$}q$XVPUr;LLAb!77Ma-+;g+o|8F(ILXHT8c=Lc)b* zK^Z|Y;uGF5h$)#QYd`%Ly!wFThg}IGJxzfO3_JeMxWw__JsjvG22WQ%mvv4FO#stZ Ba`^xN literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/32/edit.png b/companion/src/themes/monochrome/32/edit.png new file mode 100644 index 0000000000000000000000000000000000000000..cebabbd9f73d581d3aa08d025e8b215d8b1a7d23 GIT binary patch literal 389 zcmV;00eb$4P)VGd000McNliru-T@F09u~DKfGz+40TM|> zK~z}7?bb0$#6T1V;Lk-66%oN^ZL9=OAc&sC)94A(cmT1m)JCzju&n%S-n+LTo1j3S>KD`9*oaj#^t-EoX*c=Q-R~ zW4x6fn6=cdVi1$cjLth~d-Sp+XA>&@q3W)O|9Zx#?|;4J jgjuwj-YYO%LApBYWd;UDRZkbkkch)?r`dNg8HyaMPhOs& ze(MdVnEoS4o2IpUpI&QPJGJ}+lU$q$7k|F;IkDFK-Sjvr=gddODgJ$bu2yTx2=_F|FW?dg;7m_Ze4xT7 z&lJYX6z1iidPn8VRV7n{+=;Bg{l@-+1)+UrjF~$Ei^IEZ);GpAG|W5h8}~=zp#3(% zi`)2QlvreRxC8B-9PTTz${&BOwBy{O@E7$KoDY0;ngkM-cb&3qC=c5c+tsjf`{euu z85{JExD_8;S-9a#)*j|Ghwz&vPiKFwI(BK5Vy>;AmBroeooh?I<0{;5n~1&Nb%3YA zw4i#^3*TpKihSKHhRzRy=Y2n*8b8tapX$56oV_zto-E!C3_}J_S3j3^P6VGd000McNliru-T@F09}mb{8Lt2U0dz@3 zK~z}7?Uuhv13?hRe?d!|fEctB2^RT-%@r1MU?-S7g^dtMqhMiSA@~dyHa>t);d2O* zLP5bM8U@XznS){6iTQ%S}$ALLj!RPk}q?YULS()nmgd|!#SX4i~Lo#=n6On7DG3$#4%FxksRTMjYjS#0{3D}YU d#1bX`A0~`Vq2}bY$`k+q002ovPDHLkV1mCd#`pjL literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/32/information.png b/companion/src/themes/monochrome/32/information.png new file mode 100644 index 0000000000000000000000000000000000000000..2e9c398f6d4894d8a1cb925893a23d29402e1460 GIT binary patch literal 252 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzwj^(N7l!{JxM1({$v_d#0*}aI z1_r*vAk26?e?{wd!b_UP#IUP|Hc z;Xl8Mb3)zPV>6p3Om4cP^rpek^UQ&7?dLRwbf$IPT+p+tVfBT!X-vWfjHQf$(%baq rZ(e5DrR?F7b%rT0=c|+f&try-jH1TwMGnV+j$-h1^>bP0l+XkK7f4*0 literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/32/library.png b/companion/src/themes/monochrome/32/library.png new file mode 100644 index 0000000000000000000000000000000000000000..a3d112626cb82e3b142f55d49fe3741ac25da383 GIT binary patch literal 216 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzwj^(N7l!{JxM1({$v_d#0*}aI z1_r*vAk26?e?ik za~n=~oN~YLrmQd4xk~j;eMs=Gwi>~rr}tiqa4VjwWO!37AisF6-U6V744$rjF6*2U Fng9Y1O=bW9 literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/32/list.png b/companion/src/themes/monochrome/32/list.png new file mode 100644 index 0000000000000000000000000000000000000000..f94bafb12265b97e08be2c2921e15151ebdee669 GIT binary patch literal 345 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzwj^(N7l!{JxM1({$v_d#0*}aI z1_r*vAk26?e?z30hEl=aF@TPV;A-4F{uH>Uxg6E4((vVWx+uMWn)+HBL`BySYBZ zz7l++d`WA^0j|qZ69sGz7Qf2Y$aaa}!FBD-M}bEBSvfAD{(54X%mdKI;Vst0M7l3d;kCd literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/32/logs.png b/companion/src/themes/monochrome/32/logs.png new file mode 100644 index 0000000000000000000000000000000000000000..f8f96b505e4cd02caa790e3b44c80d3ed13ff9b1 GIT binary patch literal 343 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzwj^(N7l!{JxM1({$v_d#0*}aI z1_r*vAk26?e?w^oxQ!nWz)XCo^QVY-5jDn^M|NjkMKUgxFd7#0iRDLCM;7_jt8ygYnik-Bie!W zh3XN0)w-bV%U7(szpTNgKrlYI#xxx{|kYHV$Akx#M$ek*ua^Bp=#)qsS{GqZR<^x$0 zj9bqDCC>vj|GRjK5u}LkLBR1N2M&DT@YM}%keRg*B(^Ovu$;TwYE`3#PTP9-N&CB8 z?@hRM(~!AawHqjVE=h3v($JX!jYo}2-gv%lS}ENBH1Ug;Ye<4aFTNDyd_`ZtA3PEqoMp@Bh78c>q|==K+xme$P7ho#xr+Uh;{ zew;sWpkSWdG-IF&n}bP~Jn{>-GUqLh{2|`0yzSztPsI^B#)%0D90!&5_1u~!e<-Qb za#D?m*w2?&HpR$yKb#hEWobg7yXb=Ev=z*9TYqjTYcLmlm7VdlK|tusmf*{b$9Q;n rW~RJ|Hj&V>K6dd}9nh(P1}_*HbmP6N61Tf9U;qM7S3j3^P6lBm#n2St%em&9$Ka~Yql<&<`E;aymr*Y@5a^w`tw qvI5U9+s3i)neY4e508pxxu4-wM+1%Zf0%(zV(@hJb6Mw<&;$U?(OZoG literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/32/open.png b/companion/src/themes/monochrome/32/open.png new file mode 100644 index 0000000000000000000000000000000000000000..6f437856cbd81a2ef5926f05c860ce7d07f4a683 GIT binary patch literal 306 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzwj^(N7l!{JxM1({$v_d#0*}aI z1_r*vAk26?e?_(Cyy$m;spg0LM#Y0I?(fuXAI;BP5d3OFQ3IPvhUd|c!UJM# zY;18{LaIjFT+C*)da$H zjs;CmZFzWj-g};0?+c{!B_$+|0I`K9k6OzGPv#hn&AJG(73jy!D%h>E(jL~y74A=T^Nzv8Rvg#$E%lt0hd z%&KRVpC;I;6Tvs(e{130)5(e+N^O!8Q Q13ky!>FVdQ&MBb@0D}sD?f?J) literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/32/preferences.png b/companion/src/themes/monochrome/32/preferences.png new file mode 100644 index 0000000000000000000000000000000000000000..d2ba00eaa817aeed212e97ecc478495f5be513c4 GIT binary patch literal 431 zcmV;g0Z{&lP)VGd000McNliru-T@F3BLlEmk|F>A0X#`W zK~z}7?Uyl2!%!53KWy#RPTi#9;MTp+tl9QX9^WMGpy#xvr_=i~Uc-#Rspa)cU6+7@?_#0>f zkH8!_@-+i-aU$^{@aZ!JaZm%6BEA3)(=c!bJa0+gOvKl~sqZ2LXsPR0EAB(xJ5Qqv zA`BJxF5Hvi0-%(p0RW@;g*tx$j)7apJNv*2xKC1q#_Ins;g^o0eXyQ0NxC31@dMOj z#8+gU2rUyqk~W+G?HKW6m72L_;?3tm9b!DQnXMdi`bs=cs5|eqA|7L%5&{COjY2uy0gqw9klS4MIW<=BbSr^W{ka8B>`SGTN z-{Ki}S@(Xw72ELtz~$m!uSE_p3otM~W#ZfadWn1f$A(&<%NRUe{an^LB{Ts59L!|G literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/32/read_eeprom.png b/companion/src/themes/monochrome/32/read_eeprom.png new file mode 100644 index 0000000000000000000000000000000000000000..46a4dfd50c23a5b94ca942c0d127216a4be8b306 GIT binary patch literal 699 zcmV;s0!00ZP)_L8taRbkc9&(7{R3 zMcfqx(aEKSLg&`{TCBbsmlI4wlAGi`Xdpapa+3Vd$^ZOw9$au!@~cN&pVG9?zKSe3 z1HLD0ntFKDUIQA%oM)~M+W+sd20={`X>p31@lJR~h5@z6LAY@v+(c*~?IFQ|{0>&SDcwj7=TmUY?hQKue zb_|?Kp9QW8hzSo@w9u^woaCfo?cwaP$Lk?*loTV~nTDz>#q32dfh!^OnHu1YL>C7x zTg*>sZRGIDSlSvPnlJWJp;7b#Vr4tzOV4uvW+JI*_l0r1MLrG;tvl*R77q$@U-_=0 zr8(zy|OT*a6;9EV<`jHq+l*o__@9o%y%GmdrnqN3N)d zaRIdAaRYn?J^(MQs>#;;*W&puuxjS2QMDY{1Xh5rz&h|tiWV&IHSh_zEA?XQ)d8(F zz?4#IkO5*_IAPxT)&aQURMz`JAyP^ivB)K4OqiC(`B%>7z~Tt|+%tQr0sv!e6&Kv< hOt3i-n@g}6`~$uQ literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/32/read_eeprom_file.png b/companion/src/themes/monochrome/32/read_eeprom_file.png new file mode 100644 index 0000000000000000000000000000000000000000..fd6479993a2015c399c30438e8e2217f4cbb443c GIT binary patch literal 670 zcmV;P0%84$P)ce8>O*0xL;G zK~z}7<(E54Tu~6me|Ozovn$cKuEf~bEU`!tFbE&n>jF!_p#^R4Jk5k;hr;d=RN;(F8oL2;x?l+W&lM2#_!3N z3K;EVMJL8wS|+Rm!x_;$Qv6FJYYhznJ+*!U+*sMr3|wWT-z%;vV}9KR8df&cfw7cS z|559%?D^+f_Rr0JumhdI>||0YaEz`COpGh)fNjoZ4&x7;DCeB(B9S|-zm)Qk1D>1x zhT`d`ALF&Oa(G2mv#ywR8vQadaSjff{faHYt*KX6-ruPV93=qFw0eIGj4EAqk@w)` zGe2Y<@CwgF$q6v7_{XY#&m`(R=SI)iODsWT)|2YJY2>QPv8F^FSLW2FOX`6*n(DJR z07jBzZ3(&oV|Wpe_F59dI`A_gqER``uB4GdvEo)i`KdlzLM|l!Z0|^uMiSXrK*ml* zwgOD#MK$egD*>2X24K|#`ls(sUITW3rwROd;1lo$Sn#^aIq`i4SXRy~0zZHi-~f05 ztg1^%8(0Tk1G~V7A_t3$f!fb1@~;Lj9Pkm?6#iRadk`gXf@B9$)9=6+U`r;(89dpO z$Pa;6o>$~n>?dObm<9HMCE&N#orzD*ylh07*qoM6N<$ Ef< zK~z}7<(FNEj8PcJe>2OnY}UuHS`7a>flW#@G&z#1$1hjFmPTh&~L%}UMuA@T5oXnEhYW}t<}cu< z=FLW40qoO$pH`7tT5skbWq;cQtCDPjlSB^D4qyOy4}1q68He=&FrElN@@LyTrek$}An`hh2!Pt(|{aVJn?oMco7#ZtFyGv@f_=)4$x zx;niC2gToG66lh%{sIx03j8p3eJ&y`T0C>Q9l%^2(d#}iR*vuljCFatwAiclYGA*U zNJE}I->OD6J>-tL0jvdXjmq)@B{HmS1$^a4lK zL7RowvRCXwLI#9%-LvRzl+t z@J4&urr;@{+)1DcxCPvler^lgH`!~S8*)HnqtCv^^lY02JQT#e#@0iy2e=0;(h2i? z{<#bSXr{(B+TV1@yD=H?@`>pPW{s>fs1do;0c-}Y31a(Z_+sYCJUt-kBs5|wi};Vl quwxkM!?I9{Q(`I>f%1ss5B>%S&l==uz_*A10000VGd000McNliru-T@F31r>)=q*nj{0hUQb zK~z}7?U%bt13?hRe|Ol3C|W2{@X=@^zOWJtg@6c_7D5oj()|YBo7vUwX zmiKNgBC3EMYY|ZeU@f8+0RSz)t6)cA9i1u?N8v>t$NhzE9BK_l139${i1G-WZxSv7 zGr)x0=Ydlo6L%4&RMiLhGB6T{fQ;gt0SiD8C;)T7iHdJo3s_O{S%p7{dp0ecPaq96 zSqN}dY)ZTg3;}IGYXyH&@m&i6tAZaZEHBt_Kyha!zGfldTJU55f61p$Qeqbt0-jZ} zoZ6}>;7wv_#m@=13_M!Ah#I9G1e%rDdA0lr#UBSsa&1zCH-e8UEFstju;Wt)V-mlz z_#)bnHdC?81)m+@*{*MxZ z&1@6s2kwAdnd!QUU&eLj?^W@od>HrtL$6eRQ4RV88~_9V`p@SJ!^Oeut=xD900000 LNkvXXu0mjfF_YDX literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/32/save.png b/companion/src/themes/monochrome/32/save.png new file mode 100644 index 0000000000000000000000000000000000000000..6466d65282d604bb3c8fdc62d72af3e88b8f66b5 GIT binary patch literal 209 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzwj^(N7l!{JxM1({$v_d#0*}aI z1_r*vAk26?e?aD3YVuuwGp*P3xb0L*SkTX>MY8qb8Ek5g`FlkeY>alLwY{3Vg yncUqkTMGx2GHr}y*GXXH)+y}TTFP{6hOqTUE~B*@U+@5JV(@hJb6Mw<&;$VF!bBPX literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/32/saveas.png b/companion/src/themes/monochrome/32/saveas.png new file mode 100644 index 0000000000000000000000000000000000000000..9cc2a72efd7861401e9f1b9633eadd850b2798c5 GIT binary patch literal 253 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzwj^(N7l!{JxM1({$v_d#0*}aI z1_r*vAk26?e?-J;?t*>{J*(0wpf3Fs;YPgg&ebxsLQ0G_j5R{#J2 literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/32/simulate.png b/companion/src/themes/monochrome/32/simulate.png new file mode 100644 index 0000000000000000000000000000000000000000..a7020777fb9f50e31071491f97b167b4913ab04e GIT binary patch literal 236 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzwj^(N7l!{JxM1({$v_d#0*}aI z1_r*vAk26?e?-C-BGx9iN;CW*)Levyrw*K~VDoOFiU$Bv&{tPEOT9}tsCHdwI! zO6I%`bHXMh&S7i1<5Ilfn1jRTwy#^7N**gDeCqvYb(ia1^6U5;eg+@vHa1RIYtE3G z-niknhO4@+A$P@r3T9t^zK@dJleFIYUP~{Sm)anZn&WD$V(0jLlgYfJt_kng8_Zl< znE&SZnyZ{`pE4>{)AoqxI_LE~WX}Fys;ez(ez~bhgTe~ HDWM4ftQn`D literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/32/update.png b/companion/src/themes/monochrome/32/update.png new file mode 100644 index 0000000000000000000000000000000000000000..be4c746b04e91145d27a04808bc3dbce92cb8567 GIT binary patch literal 396 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzwj^(N7l!{JxM1({$v_d#0*}aI z1_r*vAk26?e?l!A}BijQ$r0Vo2*)_E$BquA{wRfzDmEu-xlDKliCxNr`^?5bMo$S*Z ztIwaCx!Jl{pA!h`4_oO4xHE^!BrFksG+pu5%bPEj{Rr*Ylf=Gwqh0T1A3^QA0{45K z=u5mmaFhF7uKC^k=O5-ZZI38nd_S>5qrF^a&)xMN%=HP)zjN=MG|j6iq!7i)%-Bxd<^>`f5*}$5K}aAZ7F4i6gi28U5D+R0 z7N~5B5QqgJu}+avl~SoFLZVXCHf?EwCw>$h8c`Jz1euw84-03C>)NTE7{r3JocT1r zbH97$n>)b&wS$_PniREaAKiS1K#5DHz>qo8D*U2a>k^P;_l#;&A~0R1YxWxNQJW05ohV>t(IO5yQL&=3@Y^wzjvPzjXOZ zzNn42fH@UO}(X4U~ZtfYKL>u`jbK|nh|Zz)T?*%Rx& z6=`q&a`TVYwwC83_~vR^DUlm^WcZCpC+oHSmDgT8xpXz%!_1=qzzkTHTo@V|d~D|A z>{_Jz)8D|2)zy4wM@J_SjRAlVf?C^Ko;v&Wx#exoz=BP`4AEv1!JaTZ^t-;KhWAd10#A9wtKEz%HRu~_jR@|dg)Oe z>O+FiT>1*rcK8X~iF>*1G5{oPmkcl_z;n`4^I&dX^t{1ZpS3LqBKU*%cM%vd0nAxV zP1B3%^r+T4ldzqIe-3j2HCHJ$Yii*1>9giG+;)i!#f&k_N{ZF)ya3FOg48o86K=(>P zzXAMYwbX3i(>{OU(n5yngPWKk5y7K`V`i-EYPQ}E1AW{NbxaB>c-agm9QR`-<*UXR zFf%rTi#FNhW?5Q(rqBgj*xpI*&g989bDZ0Zz9}oSYM-mENHp2k$+zU^?&deW{ zz@yY0pFMSEt)?wV+Ae_+TZg9R(E9xh$8x5l4yW1Q?J?g27)ddET=% z4PgYw7H|Mz;0Jakc-7P_4j}=6ss%2#fQNoy3n^AA!i&BiPUo`A$N>Ppjoa?As5Jmg z)!>Fqk6>|K$f8LV;5zh!zAfQ3l&rRL0&NNR{h&|o5PsJX)?_=u_!~j5lw!r(A^Z*p zlD12RsfP&pE%uxPU)xfNLL=a}9Y{JZ!61eryt?h7wk1))%VoGxA2a~~>1>8U{FRV` ztJxm-fg?p@;dkUfJk>u;grAKuT()u(Yy^%_@~0@_8d-GrX~)eIAtpreW8;UqH_G;Z z;!II72U3Ydff@UXdya+;T+IiPJ#B6K109YO_q=v^J^zaTnfeQENdey%`I9aH0000< KMNUMnLSTYRyb=%q literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/32/write_eeprom.png b/companion/src/themes/monochrome/32/write_eeprom.png new file mode 100644 index 0000000000000000000000000000000000000000..deeec3b488fb755145a381e4e7fa9cb898b5aef7 GIT binary patch literal 713 zcmV;)0yh1LP)x zK~z}7#g@Hp)Ibo&f8#g@IGpk!P9Y5xL`p${1VTbcNKu}Ej)I1gC!m6Npn^A`pr8Ul zgXlpZp`@arprqgeTu{Djikl7VyD5Z10X|{`0v5h6KnWmk>jzfHQ%!bNcL= zjjH2nqK_8eq6NzPzfbr+ustORmv1}t-*{6_Tw_z-A~*%a1b^l*yU{%W4g-Q$Yf7>p z0BQNIpr$Uf9$_(|@KT<@Yg{)BS|k)y?CDpb zJjWVJJM8oNe&kv(0Qy=snO4FOnA5!_eV_E8oOs8Ve5M}^n#)iac#?1!;hix6sR3|7 zob@TsTk_&5a9ZD`Lx{yv_RCiZSwuT65)_uxmEmLvV#$P{*W%F$@_Ar6@*Y^NSv7`m z5K%?7JzowSTg?3ifuoMKFFvny2|=FNfV{lE5L}A9`LYDCMI5^HB#iaIN{Ba4RJafP zX)33d3K%(!ZP9h(cVI0roS0iK2ljOBMgsVuz<=uV$eNOBu55}`-{Z#hjw4**?zR6c ztuen3JahVkP1k|fz-{1$k(GDsd>4T&3(QU66L1&U0WJggtm}3ccmQky&w-b8Zn^)I z+8%miS^my*?Y;sY>G>VK~TeYC%Ls2_PP8PMDdYbO3HRll8a8cABW%BxF-#T4#o2 v=fK(&a;_R#(gDCsDdRtrB!XR;vHsCt@J|c!Elkb!00000NkvXXu0mjf2`M;X literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/32/write_eeprom_file.png b/companion/src/themes/monochrome/32/write_eeprom_file.png new file mode 100644 index 0000000000000000000000000000000000000000..925fecf47f49840b4a4701dac6c0116c17f64e59 GIT binary patch literal 676 zcmV;V0$crwP)6j2bzf4kfr+<_o^2C%UqP*{*iNC=6E@e|lt*jQRnQ^9wz(r;j4VI`5q z*h@k}a=ir!9e5BB<>c08UNV`yx4Ul_LgGK!-0pj`v;Q~mKQr&(KSri5ht!OxKI1Bv z4=rQUG0)>6wq>ug5+o)9?>2QvG)93WC#+*?{=(S$NSt~6wShs1KoS0U#(X520h=c9 z8zYJsOa;ah<9HCT`D+Jb37khprx1HU(+bu|eD>Xh669FrxZh`%%A=5D*p8$q7 z4O=w|Pv4UX(P?N2Etv6p5rwE!8ipcZnHGHr;4mi*osUM52(Ofr47im0brpdlCm_9t zz(Z58#+0uiFzLy@)DmzGPk}qYPheWjAFGhg$*NO|`EW5dsdPsmxU=i2{o=OKCQ6#tJ_dBp8#co*TL=?hX(L`qIyd$`1 z+V4S~Ghs-Od4*~ICjM@@rc)J9oUfz;fony|EhD)>-`x^6=l=lAf8XLFmvq|z0000< KMNUMnLSTYX`zb~M literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/32/write_flash.png b/companion/src/themes/monochrome/32/write_flash.png new file mode 100644 index 0000000000000000000000000000000000000000..e5943a5092844733c33283a3b8ac69e1ea7902a0 GIT binary patch literal 815 zcmV+~1JL}5P)wg^0tjXY({x#x@LxYz){5vgdib=E<$QZ}ZH6AJy_LP)A zfbW`j7=0CRK=nSOO=@YQnZFMS6bbtWU>JA{d;=aDU2_PGCqsOl0Ir1SrfDqGufi94 zz~umg8WV6YFd0|^JOQqTBo_C}p>0xp0d_dL!_sXIusfRXj&}Az4pr&v{RMA~?tVmo zxdkLJHJ`PU%u({`QH0T)VkA&z=0m_^&8KVZ(zqLFFitYs2Zd6fY%}KgX6b?igTNG% z;7`f-nFM;}Y$#6z>VOerH|QeLDduUwQ#wya^m+h{)uTKC6I|IIG5f`@1r9oiw8YeW zyDq935pT>5U_G$Z_myyNum;Dd8(5*m)q>9NYFbS)O?p303B^WWi*8nc0pOT!&<>$_ z$<1)J9QNsq`;hy$;zWbMcn8`pV5ZjHc6Pl7+yjnCzX3QGhUWZ$%Oh>tEYI`c$0x7HDKQG8 tqEbZ({|!BJ_~pg;cU<`o35^5^e*+w04*qURA143+002ovPDHLkV1iG9Yq0NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)pVryh>nTu$sZZAYL$MSD+10f+@+{ z-G$+Qd;gjJKptm-M`SSr1K(i~W;~w1A_XW|?CIhd5^*>=L4tL0g2)9KgGmd*8V)j? z+I8SVqgY>I!Vmsdz9ZR5ivmydL>XiqT*3NfO9N}S#G*5ftZWexD;iE1aRok`z$MG3 z(9yP!^@f(ror!n&Q$>wp4y1zr!;5xy=V0=RV)3oM) z+Cb}7OI#yLQW8s2t&)pUffR$0fuV`6fuXLUMTnuLm9epvfw{JUp_PGw!0qxkC>nC} mQ!>*k5gN=xjEt-dEv$?zAQ}=>**5?+FnGH9xvXNS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)pVryh>nTu$sZZAYL$MSD+10f+@+{ z-G$+Qd;gjJKptm-M`SSr1K(i~W;~w1A_Zu4k*AAeNW|f{)Ao8Fc93YFzh&uG*O)B} zSOsNdj_~igvhc+twJV|jnPQJP%9NIfE$4G$7k9iq9dO}9IFQ@?oe3wzBIuf!{YzLb8Nls!LTs(620d&?ZVBWj}OA3ah1y5Yp^Mfrsu zS}T<9e0{Af>2~Msk%R^#Rhg4Khedt_1cjXVYqYXKV#$qgE{i*plvN^`c)qQu3|jNU z|Ka-Ni3Y)6wnXnu(JXfNUgt1ZJLlQmvN=4V>;6vtaDLYF>DB4YGeVl=ed0WK?+)nE z3H6bhBq^lxap{tZw7ENCm^K({PE_mb?e(1!xxi!d=Lrwm|8bfgn|iy$HRRKU>lr4q z>Q9=Vn>q8)tl;~(z$j5Iag8WRNi0dVN-jzTQVd20h9P##>Q3#=Gq2^ xRt5$Fx69w4Xvob^$xN$6XfO{kGO{wXurjiMXh=|H-vHFW;OXk;vd$@?2>|?W`F;QZ literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/48/arrow-right.png b/companion/src/themes/monochrome/48/arrow-right.png new file mode 100644 index 0000000000000000000000000000000000000000..5264359aada022b04bdc3bf839dca9df7c3aee70 GIT binary patch literal 596 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}a}tmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)pVryh>nTu$sZZAYL$MSD+10f+@+{ z-G$+Qd;gjJKptm-M`SSr1K(i~W;~w1A_Zu)ucwP+NW|f{Q>{Ii9R=F#@AJ2CX9#kb z*&XmQ=xANGOZrHpTD9khX-00shC>rNYy2XXE{cB0W8RW> z<;KF;>kP*%Ma2}WdCW3$a*kPuvz3-fUR;;dWt{l&sNvpQVuxiSdbK7lbG`kj-JPx!R`sr4CNPbraJSm^IaB8xqd&ho&2;wUl(W0`ZhvB8KiBTs+U7{r#Xl`7az1AsV^>vsh{Ss7Yb8CgIyB&f1)0BT_HboFyt I=akR{0F}Jpn*aa+ literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/48/changelog.png b/companion/src/themes/monochrome/48/changelog.png new file mode 100644 index 0000000000000000000000000000000000000000..28d60390d3f48a0d4825cf582b7f166fd33f0f8b GIT binary patch literal 597 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}a}tmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)pVryh>nTu$sZZAYL$MSD+10f+@+{ z-G$+Qd;gjJKptm-M`SSr1K(i~W;~w1A_Zu)pQnpsNW|f{Qy2OjaS&+RKgoN-9>&a~ zPcn{k8%ti-PYTyeVs4W`x9wjR3qejOxXW4>+*kfPJ44(gN^Mz?`OB)Efrr) zpLH4EiwT~R@mI2oJx-<5NK<3QDvwT%#vb=|H&ajaaL)_K<9fAJcQ2#*6ODb5MwePQ ziCV5$E7TS3SDAW%v3!@y&k{k6cb3m5FIxO9CToGa&z4I&m=DZIo_Ae+#q@XPf{KZ% zm$r2`t=#OS=y)q(_U1Jar&ez_b5yZ-(&SvuIdRNlsk6 zSnt%_V#C02j=vHl0+qS{E)BU_Y?0fSq$#5JNMC9x#cD!C{XNHG{07@FuB80s2Y zgcw>{85>&}m}?stS{WD!+%A8Eq9HdwB{QuOp}{=F$jHjj!pg`3q9H+*eFIPfgQu&X J%Q~loCIGbc;+p^f literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/48/clear.png b/companion/src/themes/monochrome/48/clear.png new file mode 100644 index 0000000000000000000000000000000000000000..881bd0353a1595a01c2e5b338d5c2ef43acad5ed GIT binary patch literal 674 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}a}tmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)pVryh>nTu$sZZAYL$MSD+10f+@+{ z-G$+Qd;gjJKptm-M`SSr1K(i~W;~w1A_ZvlY)==*kch)?r*8CSN|ZQOKWEZ~z?)*c zR|6gdyinN5(f3dFkgHd6^CP8Py?=&|!BR?I&89BNn=dSCrG8?^lqI%UgfCxj;B-OJHAAnqk+Dg9 zQ%mR(O(Q1-gO?L#ecp4Bq0!-k*SGilZ;IP9g=dt+IJKUna-j6~$el2J3mG~aCTm5GEjVSiLtrEWO8s5J@t-6`5{r9Vz zZ169+BJcXzpZ>q=%Jgb3pWY{KT>MZtar*n}bvr*qw)&lW`aAe~%#yzs+zpn6&3gL# z<<1vXceL*ZuQ*l4f6q$D@!~Yj>sUeBX7Cg0-`1K>_$j`wzpVo1ZJ^Zn?M> z74dx+6MplLvRz?;O4GF638-N-ZJYD@<);T3K0RYnT4n+U} literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/48/compare.png b/companion/src/themes/monochrome/48/compare.png new file mode 100644 index 0000000000000000000000000000000000000000..993f6cf3f37feb8c0692512e6278610dcfbfca66 GIT binary patch literal 1013 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}a}tmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)pVryh>nTu$sZZAYL$MSD+10f+@+{ z-G$+Qd;gjJKptm-M`SSr1K(i~W;~w1A_b`8ou`XqNW|f{*S$0Dgo+&h=&$Z;)Ok^= zT_Sp_Nuh{fs~*o(rHB)UE@)j65_z@g(K#KLCT`gly{y^<)y-KMrI%ZkG_H0vIf*y< zyJ%eb<<))gn!AwnT18*ALbb<-Qs$`rKYqp{Z%MkD@$-4r`~QF5{e8}VS-qS8?_G20 zyZ7MUjGvqDnZ;TEvpag@eEP0M(;}p~XO`c}Y4~qsJL!hbYtQ@F_$<^P&t~|a8@J_P zPwBRYhW1yqF3#|6Oy2AEH}8bwPmP5_TMJI-cpVe0oSk|%rqgBaudUPT?sjRv*|b&X zk-xlEq2MFVH)}#x#4XjhTb?OPx$ z%Ch6Z0%gX3e$}~OSC?LD+q)}Ce_HFT2_K_P5-#otZhXL9ak<L)MeGIty*!01zO}ExF zFNiEQeR!2&+1@8NxZ>B#eq}ymvFp_J_iEFxa|@&#_qn0@{XXNTK5Jchxq#b-xtE?d z1b#lYH~aL_yU*{ZUr5_->%DiyWwY{%o7|1O`ks(u9my-Q0&Q`XT`4amHb~aR*NriwJuTge{U`lP15Db}n9CZ! zpY>$@y5tpO<#X@*@3$XktI^M1T>I-4&&eu6I_c*xMeC@rqDBAd3TWCQD8|U>MhDF!>#d?3Ts4ue8T>ana zYn7}2iK~S-{~0`4qLv+K5WlLW%Q)l0TI-~9{ZgW_xfi}}+PA`Qk?}Xzy@wnRE?MFZ z%uG@yk-P~>FE<>G?A|}yMKMZ2N-IiFqkF#U-=rhg3p>2UlIt0lu74;pUAQI^m>pD0 zTq8NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)pVryh>nTu$sZZAYL$MSD+10f+@+{ z-G$+Qd;gjJKptm-M`SSr1K(i~W;~w1A_Zu4rl*TzNW|f{llFTb4iIUz_iZ<84scvs zdePB}TTk{#SAe6qql`>f^M6Oz>3p(xN{Y(^1hy_(8zK-Z>%DMM@bbJz>zgiSX(q)u zd1NtpW(Yj2jXYGnr}&-i_a+Ag0giu+liJN4-8u!G9^USsloGb%VY5(i-3k6l3){N7 zPL(b{s+>}B@knUMtGQF&Q+~9zoklk0m(_4ytf1zmlVDmE7Gm z+3Sq+w5@*aJC}G)l7am$-@#Qju!ow>EUY`q}@o9NcBQPNTaN0|lPuTvXBh>*I z6RIVy5hW>!C8<`)MX5lF!N|bSMAyJj*U%!w(9+7-*vi0M+rZGuz(C-3`5P1sx%nxX kX_W{K<{?H#R)!WNS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)pVryh>nTu$sZZAYL$MSD+10f+@+{ z-G$+Qd;gjJKptm-M`SSr1K(i~W;~w1A_b`8gr|#RNW|f{Q++)`0wvny>o1v@YM7?} z>FnrQ$#U`(OLC0G1EuVRE=dBpi^Loqw`5PAt<>?)S!G2>)Re?0N&@1dl9$fAW$WmM zWJw+UZzMa{Qg=_^_dC|lt;~xA&s3W~pZDGRef9hDeV=7Jl)5yMbZ)A|JTW>NZNuWD z{kdS{9LFfhztXQ+R{iL4P?+&du2N{WGxKDr+wQuZ-*~xRUSMHivM&{iKE9>z>xQ%Y z4tg?KaUK-VRMcyA?Bp(pQ59ZoqG3?5T7#?C+rxZC&bIssIkQf3^t*vv`_&&%7$KIc)uHvZvtF9XDH>xo*w4=*ptGCH+B4$o49 zLXBSee*4&=n0v?DE>mcBTl4!{6*JswzVSAdWZN#ATo}}0yu?6KKc7M3p|Im`HUSrg z0>=F-d6;#Qr@dz2*t%!xL9R`n3<~pW%A{{t+*xx~DnaS>i34mx8jpC+zq}+hYkFdZP;kMr8Tq7K}|PNoP&iqr1@Pf z%ZfAy$@`lUHU_x9+*Ow2vcu_%@#>!QNnigIY~)jV@m$isGBqhKz?pSw&ITLrX-_QH zuUt4o+hWIwYT3<`*56s$!agO?Q(M`EVR^|(?q8Oz%;x4VgP!f`w|=8Kd2!9eXVwMh zPU~IC(X#fqD#>@jQ+Ih`#J{BnylulH^}k-`yfri8O@GnOr5aI>A3rzSIZ?&)nCUX5 zN%J@FNW8zmI;pa8fxGJBbNMo50@<^Fghv!HfAzG>-qE_&aNiYqDOZvI#{U>vu5MzT zc5SB&FrllKxJHzuB$lLFB^RXvDF!10Lla#CLtR6Q5JO8VV`D1=b8Q1dD+2?8+vRUi pH00)|WTsUjG?<4N8Ce-xSQ%MBG$g39Zvbjw@O1TaS?83{1OSo)iF^P6 literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/48/copy.png b/companion/src/themes/monochrome/48/copy.png new file mode 100644 index 0000000000000000000000000000000000000000..71cd70edcd29d8655bf16b53966631a988ad8423 GIT binary patch literal 596 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}a}tmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)pVryh>nTu$sZZAYL$MSD+10f+@+{ z-G$+Qd;gjJKptm-M`SSr1K(i~W;~w1A_Zu)ucwP+NW|f{Qw_ZjJ4m$6-@+%^VwEO% z>7=Q>;<~ANPTQLnPoCVIJUdY4jQ&sj+bgHRQZ-A6rZfT?mgka zUUQY2^6$1gzjNPjoH}*ooI5M}<99snR*&;Ivw?Zip^xVTSHD_0ZOcPF+n8T9GnkW- z6rTxPSj7J3)0(6yJO*lq(zErhE%D`k@u=viYP!!>+k~)YMggx?6AS#Ox7ma`b4DyN zb^G$v@=BMC@i~{amzR_0hx?WEo{BON4EqyN@_Tz=npkepspWSxj1MSR&spx4dqGEj zLcw9a@`mG#bNA$=F?du=kWS?~A$9en->dJ7?$7!g%a_Ywv&~XZSb%HdQ!SlISr>)Z za8GPFY{V$Oid%d82_~Hd&l(cnrA96np0emqoQUAkd_~~|)#ZliqAwVZoaMg$=>Gd= z^RLHv4wPP%&q)n+uVtQ{nVfTCa=9!pv{g%7BT7;dOH!?pi&B9UgOP!uiLQa6uAxPU zp{13vv6X?jwt=CQfq}s7@;4|Na`RI%(<%`f%tMTftPCxzj4U7;5>(kY05vdpy85}S Ib4q9e09@qRng9R* literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/48/currentmodel.png b/companion/src/themes/monochrome/48/currentmodel.png new file mode 100644 index 0000000000000000000000000000000000000000..d316a2b7baa1d0861e0441f7aff76b2d394414f9 GIT binary patch literal 717 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}a}tmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)pVryh>nTu$sZZAYL$MSD+10f+@+{ z-G$+Qd;gjJKptm-M`SSr1K(i~W;~w1A_ZvlF;5rAkch)?uX=ljBucPrPdt4P< z)T0s*5)jZcNyt?pH6rZVhLCKQU%Z}PQkUdczPq5I$<1=gYwgMe7xothm%84+->mUt zx7gR*I#$(}r|e|+d0s7^P~=2Ya*Vc2}?)uXIDKTn%wk6VEHmd!d;}~1`QZaGWvIAYrXD1)_`DAxI`a1@j*X{OYQA3yWPbM}YUhiY zR^NrC_NuWmdEe6xyEW1HWp`-ffxi_@tof|Zd@XjIyZ3mN_$j8#AJZOgl240S`H|iG zgrs@$)tweh-)*L4Ke+$8k@L2hUV)SU=P)Px#AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy0%A)?L;(MXkIcUS000SaNLh0L01FcU01FcV0GgZ_000BxNklPiRzE7{!0*z58CClK5vDM50V0h>K7V0!l?83l|1KtO|lcs2d6CLK|GUC?b{Y zgo2F~f{TLULLn_ERx}7wh~iGLgV>@|V`CRlnu)<_#`(H%e0?*M$xLj!%lEDBx#v6Q zUhZF5jK%mLB5H}e532K`mTI(0DoQiRmW5kH9$OfU()Ee^qe65&YG1HHdvrZ2MEmQ` zfF=0!aIPt}5c#GQ=jg#_NnHbbmpu$LH8(8Z%z*X0t8CN&>$d};--vwZ+X3r;Uss>L zBeYUZhKCw5I22CCH9P9lQ(-QqXT!~P`J2OR%+H05tXyz5usCl8>*wXJ4{jycXB(L@ z!G_>|qG%+jxwnIKFp^;24>mMr;DWy3)%!9x>%Mj2Ts#-LZ{2Jx|0?JUTtf!nR=6w9 z;+%0u=42glGYQrex1vFL0N3Uw62+6QuY49RbbW3z!I*Gu3y=qJ{Vtaf$hhrgz1v+T z(VKJq3zP@9%D?PeA|Lqi82vW?L0R8rw`#!#;CK3W%Vb9Vb^yQKA1%Z0`kfyj58&_e z^9iB6KkT>qt^RNYx@%sI`8vH{N%2X7yMfnq@p;*u`3*zXz!g->VvRTA6+Ekv1#iS# z^TFaJi>+R!ra{Kr`Y+|dbKc&X27A4_XLpV@@H~B_cCA&bLcK1&wT%AYV_M4Ij<@{6 z@!~}*dcM{utv0O`dQ-g`s*-Q!Gq%ymGT!i%ANis9)C<|d7krwaeb3j7760-&*i8=| zL`?BBKk;30dfo{sr6J{HaZYPg8$r#wlt4|F)C}6FQB5b%oQ5>ti=b7ysDh?+Lx-UQGI8y+O zF&tyVi~%skc%AAw3|3aOTUiRcV9??XXwwYx0$56Go$87SK9uPy$+xRXCzV%D$5i&B zDbz9Ll-Eg`5^$)iGCi#AaGY84^b*C$9v)*{V{H|8E!Qv}vnNI(ddV}(@!AHRjA1^p3uPINLv zhFJ_F%Xzv9YjQ)nIZqbDm?gtd_2@N6*)r0k@PI$b^0Ll=Qna%iDDsluN?Up{7UMsS zzX3I3%P(>AfolK&03~!qSaf7zbY(hYa%Ew3WdJfTF*GeOF)cATR53X^Gc!6cH!CnP zIxsL0+jr~$001R)MObuXVRU6WZEs|0W_bWIFflYOFflDLH&ik*Ix#ppGB_(RF*-0X TU?m5z00000NkvXXu0mjfusJe^ literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/48/duplicate.png b/companion/src/themes/monochrome/48/duplicate.png new file mode 100644 index 0000000000000000000000000000000000000000..0fa7801344f0aa47d813a00879f3a99a8820b606 GIT binary patch literal 747 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}a}tmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)pVryh>nTu$sZZAYL$MSD+10f+@+{ z-G$+Qd;gjJKptm-M`SSr1K(i~W;~w1A_Zvl6Hgb%kch)?uUTgV7m6JJ=s)RFnsHRY zCX0}Q-UoS`G`BdlH!OJYC|P*Rk6R*wt`qqDlw!MH=vnQM5O*vv2oZ7VR&Z?z^T_Is z+EVDz_T-*TUe#pX{r|tz&-wkd{@l*z^%7Yt7P75#$xzk4Y@mIzY{S3oljT?MO>n*1 zHZgk^>v4TKa$2!dL?K0bk%pW(cXxq{5 zUAE=iii!pwTgkZUS39;enJ)jud7|x8wo!#j9?!0<-R2tAk`X7jtc$wH_*<6Q-u7dp zr`?A6*&nUHvHVEfZtV7_@C2)O;MqmT6Rxf)p4MymYG-rMU$zgo_k7-$bcwnBwrG1^ zmR^~p<<7Pbs=n3hU(NUD@-53fmGoPpL~p<6ZyU3B6Sw}`sj*^;blR?^o_pkTFGfe- zW>ry9c{62t`2ss{kC~tNLhh6wNiuhcm>ahx(0Jd9RllBf#rl@nvRkg%GI`yt?yk*o zH#(9;WDVZUx_m6B>ggu)z_V41Yj(7jp0DYtdt279v+8z{?7?03S1&0Ei{A837nfV8 z!2jo9=k-5rqVE{nrLtBWd~MI9y!P>5hg@K?VNfk`jVMV;EJ?LWE=mPb3`PcqCb|ZO zx`q}ZhL%>w##RRA+6IPJ1_lDR%io}A$jwj5Oshm_Fb^>@vNE)=GO~bZNKj?p0Mx+X M>FVdQ&MBb@0FLK0v;Y7A literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/48/edit.png b/companion/src/themes/monochrome/48/edit.png new file mode 100644 index 0000000000000000000000000000000000000000..41975a6872068e83ffbc7f02fd537ccb54944502 GIT binary patch literal 787 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}a}tmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)pVryh>nTu$sZZAYL$MSD+10f+@+{ z-G$+Qd;gjJKptm-M`SSr1K(i~W;~w1A_b^|$J50zB;xSfX|^6RjuLJ2FK1r~4sp5o z>Pm@F(E^1#s*4UyEz4Re;gPN$$no*Yp<&i#KR2OJMP&)cBC$yg z_S4<|9Nv24>!W$UjdyPsYph*8Yv5KfGmOoc#X3!7={dKYUd# zf9tkdY*4)E+k$DDQeOn)8dZOJWc7Ue5LU@0w0!#eMS@R*`usaRwylUPzQ-XXWL;xw zrgeEy(mg{@k^Ko4v-dndac2el&yIq&Bch+5aHSeFwe#^!+>toj%J_hW`O8-wk5dB~ z7~~H9a$BkU$}j(yuKJXT4?GU2b(YpHzS6M!%csd_j6Ib99^$A>n_!{;MZN9j<5|T@ zS2nb?91*u#X|};*wdrf-q7~_V9QrfE)RuPy&f!N2NfK3dFnV13}J zPdBd~nznIq=$V3*U7Bv42mBV(H^_7Kli$tc%jjy%r8_|t_`aB0VNKjwt_jGs6^&Qw|;sK5PO#21V1WWPw| zlle6!mU9^ouxhV)@LZHJ=se?u(gTdEU+z9H=-?m`m&0$6XnETG)W7>zT#iYqcpt3+rp4>2;bGPJNVvVdqvP-Wi$)WG2B>gTe~DWM4f Di7`NC literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/48/exit.png b/companion/src/themes/monochrome/48/exit.png new file mode 100644 index 0000000000000000000000000000000000000000..45707ae3eb822839283b7967e42e2c508a19cc0f GIT binary patch literal 930 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}a}tmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)pVryh>nTu$sZZAYL$MSD+10f+@+{ z-G$+Qd;gjJKptm-M`SSr1K(i~W;~w1A_b^owx^3@NW|f{(|kQb0!5D3KkhNA>q(m& z;ki^~S=yGBiW3%0Fq_HwXpyUj%hnFD+J@CJI}Dl@@gGW!pDpI;m>?*atE5#LdLg0P zL)P@t!jOz(GS9buD3~evzPeccQQp7ukN@7!D?b1KUh#d~?~Z(yPaYILjdeCwJ&?U` z-Pw{pfrE!0E%`ZNkLl@NZASalS#gWMqzQirJZtH;W5LF+mwk2jUFF>Jv0--3)mu#^ z#q;}ej7x;xFPVOpPwuD5MrQeb&t373g41`tm8g@P`sJeQ#OlVyF(J{r56o$H(R^+> ztyD>pL*Uq?X-nM0Ce`uzO$@M0^t#jX{o?XAw-+IQXR@z#zNf3R?)CTJ`HR^2IA=fR z`@2oJ@}O>7>-Gx?S`QY^%z7wa>2fAa;h6J1?)A?$=*{v|@aS-2(5d?IbjBHty`MV8 zHckJ!D`))?wpT5_hBMM;KGStnm~_efgoY`@6`_=4E(#7)Hz*2aPSY=W$Xd7ji>icB zqgU72um|aLHx#s~p7Zbh-(qw6!+Mif-wt^1Gq}yPp!ea`tKoAUns#j9Qf}lj^)ptS zdqC&$At$!)u5!CuTuWG8#UJq7x0tSae^SmmQ^af;U#wW8f%%M#yg-_Rw!C0HTf)2;Hj`636) z+ZGc(*?;VR9^NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)pVryh>nTu$sZZAYL$MSD+10f+@+{ z-G$+Qd;gjJKptm-M`SSr1K(i~W;~w1A_b`8xTlL_NW|f{)6RQ~6iOVk->sCX7ZwnA z?SxLNQj6HqD4wp&)y-jfZWAWDOm7nV65(R6p#9>4e89wZzRFDtJ_yX6@QT5}m zmB}}uXX2Xcr&tTJBu@FfCe~>4tlvuncuM#x)~|FHv^1V^`wc^(+nSF z4&Au@&ZhdZEX6U&+s|$joOErbAHP-8gt$Yc-HSRM*^i1S-$|Hi^)~I8mEnm51rC1B z3iSr7c~%-c_crlzOgteNAdpshhRyzi+EIpLu_GG4H5FaN@8@1h6?``H3E$Vchm2V} z4)L>^`AItpnf=hz6L>D;e$z2k@dLx|A1w#dCvgaWxpidbqZa$Kcau%0S2*`Ho89L) z#1ea&kzXK5Ta{(U>klE~qNkbnJ0z8#llRlR{#N|K+jD}KWQt@%S=|pMo)J0Z9>w{O zKZW&nXYn+%Sue^gmN!eh7gVzdwK%Gl_o-E<>7aR#D|e4Zb$JoAHd(Ge--RF|1stTK0d zuU!^kFRAiquEIl!mcX{D0eOcF4sfPEFjR_L-C_N0j*;GH>4Oh8WS2FYPHW5f<`#I= z?)JRJ9~qew=eS*eqab+fN_dsy+VX`5?i8O1ocGXd;hsvtwi8Bf%lEUM0SbNkJ$+7? z?+%p@o%^1w=!FD*FbY1_n=8KbLh*2~7Y(n~047 literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/48/information.png b/companion/src/themes/monochrome/48/information.png new file mode 100644 index 0000000000000000000000000000000000000000..4c4bea4886949a227c51bdafce25ab20b76c7b85 GIT binary patch literal 474 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}a}tmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)pVryh>nTu$sZZAYL$MSD+10f+@+{ z-G$+Qd;gjJKptm-M`SSr1K(i~W;~w1A_XXT+0(@_B;s&#f&}a01d$6e29uY}>U8Wo zIKi>yq48n;D2uj<2j?crAFgkE&a+t}A|tU;NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)pVryh>nTu$sZZAYL$MSD+10f+@+{ z-G$+Qd;gjJKptm-M`SSr1K(i~W;~w1A_XY;!PCVtB;xSfsfJvK90XkVD`m{|v;NAq zvf0(fQ%e5<@1Dl=4MI7&Z}v2}@+nMG=ICl=JLVT=yxN+(lk<%C=A2Fc-~UN9YgnYQ z^zx>Cl1VxjPEI)4v-?I9%XvQAnT}1nPdsRxsj`i;PpOjWVapHi2l-z%y6Ksn*m&^3 zS%pKcI{peVf}%&QdJgik-)xlBUfpgzO~BiKtL3HhntF>EHZFGzn3FYq(&>J#9G~8g z_eulTY8BioT`Icb;Qxo~x&(#%w@$s?Z~Sf78qOoJhFi0?w5IAD6Pwss>@tbVwZt`|BqgyV)hf9t6-Y4{85o-A z8W`#tT7(!{S{WN#8JKGu7+M(^2;44zgQ6ifKP5A*5~0C7#K_3X(89{d0-_;7m3;$H O1B0ilpUXO@geCwn@3M#h literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/48/list.png b/companion/src/themes/monochrome/48/list.png new file mode 100644 index 0000000000000000000000000000000000000000..7c0f3b5752b2721d0c261fa9e882ec05a26ffc93 GIT binary patch literal 763 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}a}tmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)pVryh>nTu$sZZAYL$MSD+10f+@+{ z-G$+Qd;gjJKptm-M`SSr1K(i~W;~w1A_Zvl7f%<*kch)?ubt1noFH-FWB&DBA*yj< zM63uA{-W9E+yMmEE^DoG`EHLN}MFOCr}%Z^>y!63K^F zx#r}G)|<#pTH`r+%AU-s)1TueKlilrzxSNCMbJ&6xPQfkt3uj3pPTo8)|{~DL~vel zm)-p4y2~u7vv>jnf4X*ar8j%&7S80VULpLNTY8CwRrW6t|B8I?yftdCV>sK6=Kg$A zlw26y6l1hhQ|Dbwf8-|h=mL!ov;FPt4)fjSam_mskb3{}=JFL2zh6vF30wK8H0zU` zDVLu~++&s18tY!Z7V-GyEBjO?Qcs}xiBZHNm6JuC%8OnK+dN=pjthSFh~@f>r##=ZWlniG_=d9`LIA{m@*n$Y{|~=egd=J5Rg+ zo4HOv%Ro&ksw*Q#>a_gn9Rey+=9Rt6mTs+;QWML4TXf%l^4*@K2z22 z)_u3r0ZY#ouT#FcgJ+sVc%@r(Nr*>`@!NZX(RUu0a9d43CZy;%Eqqzp^^=vdH@+3# zb$-})Zs|sm8%tiN#_ZnP{P)1iS3tWOpL&0)w7cDZMlf1z8pA(>XH_qD7qkAj{pg75 z5h1}xrzSqP;Np_sb5A9RLFL@$6MXi~O`OU-227p*ztzo}IDL+l4lq%umbgZgq$HN4 zS|t~y0x1R~149#C14CUyix5LgD`R6T19NQyLn{LVf!pP8P&DM`r(~v8A~cwX7#Ud^ aT38ubKr|$%vTp!tVDNPHb6Mw<&;$TBbutqG literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/48/logs.png b/companion/src/themes/monochrome/48/logs.png new file mode 100644 index 0000000000000000000000000000000000000000..0817b2f887582c6233f4c8a818716478637e3616 GIT binary patch literal 704 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}a}tmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)pVryh>nTu$sZZAYL$MSD+10f+@+{ z-G$+Qd;gjJKptm-M`SSr1K(i~W;~w1A_ZvlPEQxdkch)?uljfN6v`a`czsr`xl(;u zbZYdYBd)W#mp*B5I@eWt@M7ZSG*iAjy>ACv+oUGWZH~FpHA&4}?~tqI1+C1Rhtq-% z&-lCZjNdbPS;IM>QidW3E-yG}-pO`e>-<=yhv@d)lk!dmg90&)jf3TKrE>I;-{EkO^Pc8Fo1t zyx8I!H|v|S+`$>iUFUw^(fLz3n^)d9E-Radg&GcC;v#oAkjyh-+UK?I;HaFGLKs&oy zb#745nt7#)5!&h+Uat@HZ9l`+H0gDj<)SqjcO!q=vo`B-cNzWCzRC65ceb$3uLpY{ ztUP;{D{S|Z*^{i>vOh7h-&t=nS-;Qx=j!d6I~J~alXkay^O3mkHAPEjM{ZO3k$N%t zb@aXMrxKNS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)pVryh>nTu$sZZAYL$MSD+10f+@+{ z-G$+Qd;gjJKptm-M`SSr1K(i~W;~w1A_Zi$r;B4q#NoG7c6%{9ia7WSo$a3Sql@j} zp=(yH5kFY%v_vndv}$xL@HikL=u*=V@q=;Ym1}xi*S5+lWT-p2bSf#i^+X6^D#87 znQZW4(R5RxYtOgbV>tB2;P>O6#A%V6Lf0;tZ>+UdkfTe-!(8u(;QX%a94VHA6NQS+K5;xR^DukCGrcm_>#x$g5o?SPhR=GVrFX>O+H7prJbNSWUM>$iA# zkLhPw1(#h9_k5oeS8#aBuclk7K4C$p{5uQxoPD+W&F4?v^~Zg(pD@_Ue7dzjKjPog ze;!ljELp$7W5d)c2L9uFlm%=yUdpPR>gcEW@r;^ax>fpMZ*;u=wsl30>zm0Xkxq!^403{7+m40R1HLJTdfjE$`f%(V>+tqcqV tZkNA7(U6;;l9^VC&|n^7WMpM%VP#|i(U73Zz5%F#!PC{xWt~$(69A%g@pJ$H literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/48/moveup.png b/companion/src/themes/monochrome/48/moveup.png new file mode 100644 index 0000000000000000000000000000000000000000..eff5c6e8b1e4982fa2c3bb4ebc155ef7b08f1406 GIT binary patch literal 628 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}a}tmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)pVryh>nTu$sZZAYL$MSD+10f+@+{ z-G$+Qd;gjJKptm-M`SSr1K(i~W;~w1A_Zu4uBVG*NW|f{Q}%i>JBqaK&oOX4FyBd$ zOY4Tq5vK`Ln&v88vun_3itwr6CDF@KkL>FoBa=VZ_Ad~RgCAV5Qe>-`Vex7Q*R4|s2%#VPc3u1)uslH&<;nV6cR zpY2xMe?Xe4@qohdiu9w*I-g^vudg*fv#9i3LZ|iQJqr$LUY~z+isyMyTkPxO zkL{-~_3F`$^UbzeJ!i-4+Ttdo<6pMl5qx&5nyFdjcFmSGcZFT^uP@)*sBnYb8)hT?*dDU+q15VdoBb9#kW69!XFm5 zGyXU40LF%DiEBhjN@7W>RdP`(kYX@0Ff`FMFw`})2r;y@GB&m{FxNIPv@$RdxLy7R pMMG|WN@iLmLW6mTk&%_5g_V&7L_>lq`v#x}22WQ%mvv4FO#oNe> literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/48/new.png b/companion/src/themes/monochrome/48/new.png new file mode 100644 index 0000000000000000000000000000000000000000..b4a0993ef446ef2f227d54c9e75161d72e30c295 GIT binary patch literal 581 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}a}tmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)pVryh>nTu$sZZAYL$MSD+10f+@+{ z-G$+Qd;gjJKptm-M`SSr1K(i~W;~w1A_Zu)ou`XqNW|f{)7AzZF%W6p-&)I{(zk1C z=nD-N3lrvAMw6m!Nfs#)8N_(J96p@9pvO%n<6iaip6q=&na4feRwU0Ct<`LvBDJRY4BzTqTOKy;3WfQ{i)0QhnJj+C>57=E zii*qI$SsWw%Y3wNm-cR0=5=Apf(wG7ddC$#i&?)FK#IZ0z|ch3z);uFBE->Gd@7(8A5T-G@yGywqg;nR}< literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/48/open.png b/companion/src/themes/monochrome/48/open.png new file mode 100644 index 0000000000000000000000000000000000000000..5a151c74db529f911b4e580fafbfdc4c3e75a5dd GIT binary patch literal 558 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}a}tmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)pVryh>nTu$sZZAYL$MSD+10f+@+{ z-G$+Qd;gjJKptm-M`SSr1K(i~W;~w1A_Zu)x~Gd{NW|f{Q#X1$1&SQ2Z*vToyoFV_ zZ_;8uCkwMJTeg^Nd#b|wm-ipz+J`Rx!WqMG|;r}CfW$Dh2}p7CL;h=7`Sz=Nv^`<)!FW(Y6mxHc&} zfccW7K#||EK*5x?jCQ$w8eONq?burT?{>3%)*Dxy>AuF_-v0dD(4c2+a`YQxcp>jO z=6jaQ&V$b@bZ3jd`Br;&lzi}<80_}wm+hzSv}b%yQ8filei8ODm-_8P zmb%ZJ_3`cY*E4;mYk9?NI318<|E%EVnJpQ1!sl*?@ueT*op<{pkLbN4U->OM>I}qA zUQ`iaH#zfdnc&*bE&4J7G3q~mhl{v+O76E_ZD{PSWzPl-N7WM7h?11Vl2ohYqEsNo zU}RuuqHAENYiJQ-XlZ3^Y-M1sZD43+U?6b2{0)kR-29Zxv`T~q^AIB=D?NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)pVryh>nTu$sZZAYL$MSD+10f+@+{ z-G$+Qd;gjJKptm-M`SSr1K(i~W;~w1A_Zvl3Qrfukch)?r|{=1Z;(a>8rG`QNz&W=IUPo56@+++9ZFOpjl1!d_P0dv*kh4QA>r8~o zvAY}I#Fw$Ap3i;vX73&2>UU?}=vJ8e94gqf;3f)b`BEnYC)vh0PbH?PKqqr8Xq7!-CH zd2SQk$nktrM4#f@pt!5cm0M=l&D3^%Gch`{yPY%YWuyFjo#fUfO1Jc9hb@m2|2m7O z&h6}qY#$}*hZc?dTBl6QBveveG+wg^Jd$X95Hxqu-_)w}Lc6ETR9Giww%I3oV#20}KUZ8>JMRkL z!9^2QRx@3q-u$4L`h0wNvc(HQ7VvPFfuSS(KRsCHM9sZw6rodwlXl+ zHZZg@Fc7$1{su)uZhlH;S|vh*d5Dpbm7#@|kp)CUf-3t4paup{S3j3^P6NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)pVryh>nTu$sZZAYL$MSD+10f+@+{ z-G$+Qd;gjJKptm-M`SSr1K(i~W;~w1A_b_T*VDx@B;xSftG*dAp%TYF-cM0mxhsQX zN|LIew|MWYrl~&~FADIOM3%G!=&ZXEyKr^GvIkmDg<^`W)7b8=+;PS$aPx)>%ce*j z3A&&&$#-Gvq$^uyL`7+voqVZeerE2;nmayf9Fv~ky;FU@a{s?Q&*iplUHgBnQJKo^ z8Cq5UFR+K!>RBv4ukCi{UPbC*C(++0x%qxZ7hIgDvUc6|()jQXKhEhbo_A#Rw^{3# zHgk)XzcJ7B+>qmvoZF$LT5)TN!jI!Krl~MWpIT?~^3$7LAJq5qsmGsughuf_oOSSljpcMJy`bd3FB$SszbIH-u6tN@Nu4_q>fbS z#%sSm%bHZ&-=h#wbDaD3M1Z&3}Wq6`yH=<@ge+;(Q3nY)gJNi@ToxmVkJvZB5% zR%D+m>b1_?a_Q~qc1K^{xT!C^^VfO3K8>YkD_B&QAI%nAk-EQnXU)9lJmGJ%L)Y3( z?w!}q?Z$g5)BJ7n{;BU5?E30baLl%+cCYsGlMUMUPV{FMvYY#;t@yKUO4#x}(I2+n zRBsZzAMNF_py^gkaKPVLe;3t$K6w4`N#|Eg3uMX4$&CS{B(=n>AeLK5$sPxaz{gJ7EVNO4`r3CdnL{ZZS8HQ}1Pu!&Sj^ ztNdIN)>(CwomVekTc_?U|Ig&MNiEBhjN@7W>RdP`(kYX@0Ff`FMFw`})2r;y@GB&m{FxNIPv@$RdxLy7RMMG|W lN@iLmLW6mTk&%_5g_V&7L_>lq`v#x}22WQ%mvv4FO#mtPkBa~R literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/48/print.png b/companion/src/themes/monochrome/48/print.png new file mode 100644 index 0000000000000000000000000000000000000000..c830db3ea084830a9718192929c8e88db7266253 GIT binary patch literal 578 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}a}tmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)pVryh>nTu$sZZAYL$MSD+10f+@+{ z-G$+Qd;gjJKptm-M`SSr1K(i~W;~w1A_Zu)wWo_?NW|f{)9mw_4P;vPhfUp;cJ9cP znbK2Yl)cX#;AAL$b3k;0R_SZWg8T!FRxOG_?$`WYHaOha$a}=mW1_v-fqJ?3-*dP> zRM_xeyEdobkc{ZYogYtHnWz+%e%Rp*6G@=TUFX4fbDKD$6QW>||63W*)xMztJ=mfUUxN_Pt!F=WPX;-IZYRX10YhJ7T&}ZkQ=A*^| ztgjAst^93mXw+RdC2YY02^-mj53fUm8@9YOdb>h$O3;$ro}v@eD!%fi+^a}jy+>O6 zy3e;i8hj}-vIoRJ)ICgMOJ=IC`E;5+I$`n8>wJ0fD^9O25wA!)pXtfifBcxel+R?* z=*gQvVXIo=8c~vxSdwa$T$Bo=7>o=IO>_+mbqy^-3@xpUjjasKwG9ld3=9Nrm%l;L okei>9nO2F=U>;&*WMyb!Wn=--kf6%G0jPn&)78&qol`;+028d(;{X5v literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/48/profiles.png b/companion/src/themes/monochrome/48/profiles.png new file mode 100644 index 0000000000000000000000000000000000000000..0489ffaa60df61a7163bd03c31f295e4c099afb2 GIT binary patch literal 457 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}a}tmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)pVryh>nTu$sZZAYL$MSD+10f+@+{ z-G$+Qd;gjJKptm-M`SSr1K(i~W;~w1A_XXT$kW9!B;xSfX%~49DG0RL^D=K})GlGM z>RflhQ)XeA&}+7y1=1TD_n9ow^q3u@qVoOj>5uIN1;+&)1Xvc@w0A7a-1B||w`%Lr z+?i<=)w|ifPWkM(VOZX!azIOKk)_-F+YX)&i}JU#Y;-gJV)J(e>zOP3*;^8|LQ5X? zimN9qxL?im)zv<^;rKrh(Vfc}n3d0HeSFL?Ju`Fi?;2Bq*UfFKzw6$0^1SHlf4V1v zw`4-~-i=aLQ(o1td(9v4Y literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/48/read_eeprom.png b/companion/src/themes/monochrome/48/read_eeprom.png new file mode 100644 index 0000000000000000000000000000000000000000..c5d3a116773c8a3cfe502c429f2abd3cdb528229 GIT binary patch literal 2205 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 DJQEdF literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/48/recentdocument.png b/companion/src/themes/monochrome/48/recentdocument.png new file mode 100644 index 0000000000000000000000000000000000000000..aed0796fe31932180e3ae4a80d4eedb230475bc0 GIT binary patch literal 1104 zcmV-W1h4yvP)Px#AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy0%A)?L;(MXkIcUS000SaNLh0L01m?d01m?e$8V@)0009?Nkle}#KZg&9!d@fSKEWT~pQdq0CpiiHh zt;6PQ8a39U=9IpKAlPS>&(djB_ATo2lyB#5R4!{UF0sywGgpy|0AJZ?k0KkqHL#mmt>9KIY7}752_+Wm*RR|H zaZReUI(%V3W{X_s4Yw%3`yO(?gZR#R4|+$Cr^b4BW#6JT4hTkcc_6a13)-XadWVb{ z@{Jm0*$KRBRB%|Gm}UuV(rQ!Wjk(=H!Dz~7Dh+{3X9P+2h-ne@s1{cuKEa5&Q&MnN zW#$4gZGzy(1~`5DZF+ASmo+W1#VD=<9eg{ z&pNSOtCti_;`KU?MOKU((me-d;wbgBb3V6Q(hI7rwcIlbZ4t!Ot5d8L@$>sAU4i)u zQK14uK9N+a+ZiROHP4`Yw|O#R&$A#?fgs?tK1qE7)~Jut{B8t6pTlC7SQN2m!PqWp zm5`87f_f(fdn}6>3%zaBupS>vT2bMs;Dp+Uaie2`?e4Jfg2-AY z1xH+;i9pbzP=_FCOT;+nFRz{7j1$-_Dd^YWZ7Y8;%r~%1OEt4 zTbEsW3N`8#1OuM1+BH5BeCSG*n*1gRe)ZS|Cp$wFX^aw$=(baj;78jXH5ds$?y~ID zk5$p&fMkj{dDJl*a{2r7h+FSdKR9L3s1bka@uf#xk&2v`Y4!<`O69IK->`l^Ibz^q z{CgJo7i#xHtxamaYXATMC3HntbYx+4WjbSWWnpw>05UK!G%YYOEipJ$F*!OjGdeIg zD=;xSFfb6?ckBQF03~!qSaf7zbY(hiZ)9m^c>ppnF*GeOF)cASR5CI;F*rIhI4dwQ WIxsL`B?qto0000NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)pVryh>nTu$sZZAYL$MSD+10f+@+{ z-G$+Qd;gjJKptm-M`SSr1K(i~W;~w1A_XXT)zif>B;xSfX@-1F1`=-aEzT8;hk5Vx z#LC9Z*~`5y?x3gs!v{()p1n$HVmAN462*S8r6o)%*JtwoQth|jUre9G(4^4ff5mFG zgk_4%&7$JVX&LQ>X-+v^U9o%Ef~KAE@$5`Z_T$qCN#2$edVNKMt)O$2&W=qlw~inecJLX zE})igqu@VXp+*iSfgAf$u38@5bV={UI)g`h7sdav+NW`%cKE5>E1 z0ra41iEBhjN@7W>RdP`(kYX@0Ff`FMFw`})2r;y@GB&m{FxNIPv@$RdxLy7RMMG|W lN@iLmLW6mTk&%_5g_V&7L_>lq`v#x}22WQ%mvv4FO#pQCrxO4G literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/48/saveas.png b/companion/src/themes/monochrome/48/saveas.png new file mode 100644 index 0000000000000000000000000000000000000000..496e95e6c5aaed8ec555a76c0fdc690d745bb379 GIT binary patch literal 605 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}a}tmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)pVryh>nTu$sZZAYL$MSD+10f+@+{ z-G$+Qd;gjJKptm-M`SSr1K(i~W;~w1A_Zu4n5Tt)ziLne1Vy-LRUq?Y{d&nS6dhl zBnM4ZZ0_*i%;q)q{(@z-P6AWcFwJ+^DE052LWo+XQbPmp%$fhpPh|0%&)hxdOrFMn z)2(d(^FK_^epPTF&nAD_qq$EC_dc1zAKLY0^33I0a_c9_J?^#RKB^_qwN+8LY{mH_ z$72eP{I=ov{CkmL`wz>HcD$a(%QFQ&9L5?U-`Py@t(}%3%CwlylOO0 zPNp{WW5v1V&(lLoGG=)5KbX;&oN9Vi-0=3&P1EPw@&kiiwZt`|BqgyV)hf9t6-Y4{ z85o-A8W`#tT7(!{S{WN#8JKGu7+M(^2;44zgQ6ifKP5A*5~0C7#K_3X(89{d0-_;7 Sm3;$H1B0ilpUXO@geCy^x#Zyh literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/48/simulate.png b/companion/src/themes/monochrome/48/simulate.png new file mode 100644 index 0000000000000000000000000000000000000000..7c05d5604088ed02b98e6bc62c274932d9ea6f10 GIT binary patch literal 510 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}a}tmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)pVryh>nTu$sZZAYL$MSD+10f+@+{ z-G$+Qd;gjJKptm-M`SSr1K(i~W;~w1A_XY;-P6S}B;xSfYYV-Z3q=lmT;HD4l(0$n z1luyz$*Bt45=}TaJ=nit!>fNy8#g_QPuQ$`V(V4TWvmY!ZqL-?Ej#mjZ>#f%9d}RN z<39Ah`fu&K)^eF2HFo#wUrsb;@>WPYwN-V(1i`}W?XFDcpt3+rp4>2;bGPJNV XvVdqvP-Wi$)WG2B>gTe~DWM4fc%{Ch literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/48/switch_dir.png b/companion/src/themes/monochrome/48/switch_dir.png new file mode 100644 index 0000000000000000000000000000000000000000..1039325c48a924bb7bb3cf5f14b95e4ddf93a1b7 GIT binary patch literal 849 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}a}tmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)pVryh>nTu$sZZAYL$MSD+10f+@+{ z-G$+Qd;gjJKptm-M`SSr1K(i~W;~w1A_b_z%hSa%B;xSfYo0m2i88Do?pNPR_i~mt zy&|C4vb0S>NpWRBAgAwjYS=b$2Ul9)m+Na=B1E4)iv&ynMm!l zh&Nlz#6whl=b8nsU0uh)BK4Siib#y^cE7n#kMS(~xzE6BuI@8!{`*_9zgl)~oH8qO zb9&QU!t%6~3$g zcP{r@?6AOnv()3I+`<2LcdP4FK3MLR8nhxHdFjr!%P?d+~$FR(_ua;VScAUw(Gu zed3J7W`Q5_%4aqmG`+99Y;R_^(UZlxr5@QTH>^$6MBhmAo~xetIZWZhY02zKJB6m) zd{+9T<7>s68I>n{TK6Z4bNned&v>=E#rnH-&tH?x&I%ZG7d!O0wIRldygKCLuL`h0wNvc(HQ7VvPFfuSS z(KRsCHM9sZw6rodwlXl+HZZg@Fc7$1{su)uZhlH;S|vh*d5Dpbm7#@|kp)CUf-3t4 Ppaup{S3j3^P6NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)pVryh>nTu$sZZAYL$MSD+10f+@+{ z-G$+Qd;gjJKptm-M`SSr1K(i~W;~w1A_ZvlAx{^_kch)?uk6nb4wPa2;J>wNp(xLy z1wWd-l$*X@f3qOu#eyAL8ZYD(LJHq2xw79~)6u+`Pw@3D*MqkX9&8G5Ss3DY!BI6g zSD}|TrhS{*M$ff-HJkPnFE2k|{d`XKy{FzyESy4rs<-^PdOO$1@72VK->$MpIv<-d zOEj(j^|97fp=PVjAA5G<{RgLwZgqL0cekp>?YlfdVaA6OlDn6bSiIi(zA5s1Zr|km z^2C| z>7cBJxYUE*)~^eGPi0a4oy5aerLD1J>x!3r{j84XZb>xjt!F(rrTW(DZ{JU8aeeYz z8?(ptSjN?Y-*5UpSH&1CP~h0NGv)57r~D_c&RjTk>hkstZzqlOMQ&= zpS!K@Ws7&=T(;7)_M%@T1!OM2ZJ45ejJIm>ojFBnUyh$WZ9nz0{N>`mf6mt}onN-} z=F80BxV=RSO8@O!<7CNg@uo5Hd6;tTQ<0Sw6F~vX|AW($VdK;5#=lMjqgb`XHKHUX zu_VKa;v7+P8x8(SHeYa19^85juME`NifAvZrIGp!P#!92vs c$jZ>d%E$tuAwiXW15g8lr>mdKI;Vst0D!YB;s5{u literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/48/wizard.png b/companion/src/themes/monochrome/48/wizard.png new file mode 100644 index 0000000000000000000000000000000000000000..4d1a6772966f0d5208ac9355cc9ce810bf17f078 GIT binary patch literal 2217 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 literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/48/write_eeprom.png b/companion/src/themes/monochrome/48/write_eeprom.png new file mode 100644 index 0000000000000000000000000000000000000000..0318d748a95f9d91bece259107e9c8d38c5e7bbb GIT binary patch literal 1848 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 ZD=;xSFfd>x2e1GD002ovPDHLkV1j@xdoKV0 literal 0 HcmV?d00001 diff --git a/companion/src/themes/monochrome/48/write_flash.png b/companion/src/themes/monochrome/48/write_flash.png new file mode 100644 index 0000000000000000000000000000000000000000..d20eb763afac967c6c4b03716bf795bca9c3db4f GIT binary patch literal 1730 zcmV;z20i(SP)Px#AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy0%A)?L;(MXkIcUS000SaNLh0L01ejw01ejxLMWSf000HMNkl&yH0VqviF^Uv>h z&Uw!FIp;agc^>}H$hcq+MTUcB2c3>&LluI0M=zWp-zp=u2&}c-X^iuN92uHDZT-c_ z!e|@Cg_=F9*i?Ij0>{j~2>AgSCfFb$)Z#@u1Oi7qda>NMQH)lpMJOQHt4+pME{sjk4K~_3p_mW}w*~lADygBou12%@Q|8 zHQwFa9+72+*EKk7x-2kMoiI5*H~B*HIM_341VVvIQ;^|zLXB42CN8wg`15g?mG)O= zjWU61`&^^UI!_p4uF$)FrQQ5$L?_b9eX zBAJ%|cu=N(UKZMJK-!!P3spO#(MPUFmirvjq|tu&%1I}<)Ec2m<1orwf{5S^#Te*y zp-+7yvi*U_^+JI~YJ~!yx!nB@2n0^Mt)qJ=*Py|CF$^`^T_!4x4t=RrTC~{WH{R1A zROeP~` zbM&^zDWNxA)@_x&qE)EL79R-3&51Mx9&=nMQ0Ip9;wiF4purJUT7@cI7io%JWtMq< z^|()Arzb+vsdL7z5T44Ec*!OytyFDyr!DSkeBp}p2ugetIf`X!P0D|0xP;Xn)_@&0+GGI;v^t6V^?zDBrx)S>>P}>c`d^0)=3oTTsStwNHRxsIK ztrn-(vO!)I`q*IIVOi%C#nfABrf2LEDm4b=$=2eymbB@u-KOSikcEVu_Sx(AE>$8^ zt40ag2I{3L#WwGMc_*}=xVVqhDltgDdb@mSr0*JUzhApKvdJ{;96S!P%9-Tfymo>T zvt5RM^3<#MsvAu3ghfW0)L}`zx^>~BIXcAA)Ce7UzZ+GD-Y)?{~Gro~Aox*745>u9D>XlfQp zj6$_Xd;)rlW4DLRFw!MyYupf>l$cUYPIQXlsDwd|rVF$ER;a;Txvuq;H{Bkc$ZTc) znifHZn3zI~ZS|oC^$|-Ow|LpVEH$P*g0{lT^QlpqG%ElNp0(5|lvv?j+uWhIz7a|2 zer29i=qbysH!8W*R%^Xzv!Cf@y9!Ke+psg1S|(2~Gzb)0fQq!PIN#mT*9k*B;1j&% zT05;x+I-=V=fzd{Lv+(6Ut({2ABQYA-7nS1Hq+R&M3x#Ejiaift?Z``W1}(54*7Z` zoAxfyUUEk~;z`>D$TY%28Nw*%={V^%)fT%-AKy}*(oWv9!gznO!yW$NKzao1u~iUl zWCjwNP}HdbAMk!s(qf6pYeD9_NXJ~DOIU4J%Uu^C_tucOz))Kq`@q6j8LF| zO8YzPePfjSjy`hbXzre%tzJgh=raZOcF<0=yURySjtY~ar&irraaYgnRtHrh-{daz zQ@eD}a8tT^$#oS$y$b70a-%6O7+nzrYSj4HN{sh-Bt4?ClVz1avt6C!r_{;oo*)%9 z0%R+()`m{nxJ&T!E|OgBrgI}`!)U9cCVcKFJ|BYo^o#s_&=WzU56^q;si^7c8js2U znk%wreDz;iN(o>1BaVjv001R)MObuXVRU6WV{&C-bY%cCFflYOFflDLI8-q?Ix{mm zFgGhOF*-0X5Zia`0000bbVXQnWMOn=I&E)cX=Zr Date: Sun, 19 Jan 2014 17:05:20 +0100 Subject: [PATCH 187/308] Copied the oversized classic theme originals to a safe storage location. --- .../images/originals/classical icons/add.png | Bin 0 -> 5539 bytes .../originals/classical icons/arrow-left.png | Bin 0 -> 14365 bytes .../originals/classical icons/arrow-right.png | Bin 0 -> 14387 bytes .../originals/classical icons/changelog.png | Bin 0 -> 19817 bytes .../images/originals/classical icons/clear.png | Bin 0 -> 9656 bytes .../originals/classical icons/compare.png | Bin 0 -> 2163 bytes .../originals/classical icons/configure.png | Bin 0 -> 13703 bytes .../originals/classical icons/contributors.png | Bin 0 -> 12829 bytes .../images/originals/classical icons/copy.png | Bin 0 -> 1338 bytes .../originals/classical icons/currentmodel.png | Bin 0 -> 10941 bytes .../originals/classical icons/customize.png | Bin 0 -> 864 bytes .../images/originals/classical icons/cut.png | Bin 0 -> 1323 bytes .../originals/classical icons/duplicate.png | Bin 0 -> 6684 bytes .../images/originals/classical icons/edit.png | Bin 0 -> 9626 bytes .../images/originals/classical icons/exit.png | Bin 0 -> 10601 bytes .../images/originals/classical icons/fuses.png | Bin 0 -> 11183 bytes .../originals/classical icons/information.png | Bin 0 -> 5244 bytes .../originals/classical icons/library.png | Bin 0 -> 16242 bytes .../images/originals/classical icons/list.png | Bin 0 -> 20365 bytes .../images/originals/classical icons/logs.png | Bin 0 -> 3302 bytes .../originals/classical icons/movedown.png | Bin 0 -> 10774 bytes .../images/originals/classical icons/moveup.png | Bin 0 -> 10463 bytes .../images/originals/classical icons/new.png | Bin 0 -> 852 bytes .../images/originals/classical icons/open.png | Bin 0 -> 2073 bytes .../images/originals/classical icons/paste.png | Bin 0 -> 1645 bytes .../images/originals/classical icons/play.png | Bin 0 -> 534 bytes .../originals/classical icons/preferences.png | Bin 0 -> 11170 bytes .../images/originals/classical icons/print.png | Bin 0 -> 7282 bytes .../originals/classical icons/profiles.png | Bin 0 -> 2312 bytes .../originals/classical icons/read_eeprom.png | Bin 0 -> 18174 bytes .../classical icons/read_eeprom_file.png | Bin 0 -> 27588 bytes .../originals/classical icons/read_flash.png | Bin 0 -> 25584 bytes .../classical icons/recentdocument.png | Bin 0 -> 9874 bytes .../images/originals/classical icons/save.png | Bin 0 -> 5753 bytes .../images/originals/classical icons/saveas.png | Bin 0 -> 6839 bytes .../originals/classical icons/simulate.png | Bin 0 -> 10065 bytes .../images/originals/classical icons/stop.png | Bin 0 -> 312 bytes .../originals/classical icons/switch_dir.png | Bin 0 -> 6210 bytes .../images/originals/classical icons/update.png | Bin 0 -> 12332 bytes .../images/originals/classical icons/wizard.png | Bin 0 -> 13364 bytes .../originals/classical icons/write_eeprom.png | Bin 0 -> 17348 bytes .../classical icons/write_eeprom_file.png | Bin 0 -> 26192 bytes .../originals/classical icons/write_flash.png | Bin 0 -> 21730 bytes 43 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 companion/src/images/originals/classical icons/add.png create mode 100644 companion/src/images/originals/classical icons/arrow-left.png create mode 100644 companion/src/images/originals/classical icons/arrow-right.png create mode 100644 companion/src/images/originals/classical icons/changelog.png create mode 100644 companion/src/images/originals/classical icons/clear.png create mode 100644 companion/src/images/originals/classical icons/compare.png create mode 100644 companion/src/images/originals/classical icons/configure.png create mode 100644 companion/src/images/originals/classical icons/contributors.png create mode 100644 companion/src/images/originals/classical icons/copy.png create mode 100644 companion/src/images/originals/classical icons/currentmodel.png create mode 100644 companion/src/images/originals/classical icons/customize.png create mode 100644 companion/src/images/originals/classical icons/cut.png create mode 100644 companion/src/images/originals/classical icons/duplicate.png create mode 100644 companion/src/images/originals/classical icons/edit.png create mode 100644 companion/src/images/originals/classical icons/exit.png create mode 100644 companion/src/images/originals/classical icons/fuses.png create mode 100644 companion/src/images/originals/classical icons/information.png create mode 100644 companion/src/images/originals/classical icons/library.png create mode 100644 companion/src/images/originals/classical icons/list.png create mode 100644 companion/src/images/originals/classical icons/logs.png create mode 100644 companion/src/images/originals/classical icons/movedown.png create mode 100644 companion/src/images/originals/classical icons/moveup.png create mode 100644 companion/src/images/originals/classical icons/new.png create mode 100644 companion/src/images/originals/classical icons/open.png create mode 100644 companion/src/images/originals/classical icons/paste.png create mode 100644 companion/src/images/originals/classical icons/play.png create mode 100644 companion/src/images/originals/classical icons/preferences.png create mode 100644 companion/src/images/originals/classical icons/print.png create mode 100644 companion/src/images/originals/classical icons/profiles.png create mode 100644 companion/src/images/originals/classical icons/read_eeprom.png create mode 100644 companion/src/images/originals/classical icons/read_eeprom_file.png create mode 100644 companion/src/images/originals/classical icons/read_flash.png create mode 100644 companion/src/images/originals/classical icons/recentdocument.png create mode 100644 companion/src/images/originals/classical icons/save.png create mode 100644 companion/src/images/originals/classical icons/saveas.png create mode 100644 companion/src/images/originals/classical icons/simulate.png create mode 100644 companion/src/images/originals/classical icons/stop.png create mode 100644 companion/src/images/originals/classical icons/switch_dir.png create mode 100644 companion/src/images/originals/classical icons/update.png create mode 100644 companion/src/images/originals/classical icons/wizard.png create mode 100644 companion/src/images/originals/classical icons/write_eeprom.png create mode 100644 companion/src/images/originals/classical icons/write_eeprom_file.png create mode 100644 companion/src/images/originals/classical icons/write_flash.png diff --git a/companion/src/images/originals/classical icons/add.png b/companion/src/images/originals/classical icons/add.png new file mode 100644 index 0000000000000000000000000000000000000000..24cc027da8949678a6a58c8d3c106cc95ba45ca1 GIT binary patch literal 5539 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 literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/classical icons/arrow-left.png b/companion/src/images/originals/classical icons/arrow-left.png new file mode 100644 index 0000000000000000000000000000000000000000..759e589505ca108d54c3de72e817c03b091b3c26 GIT binary patch literal 14365 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 literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/classical icons/contributors.png b/companion/src/images/originals/classical icons/contributors.png new file mode 100644 index 0000000000000000000000000000000000000000..276949198334835d99664dec55ff8a6de3120063 GIT binary patch literal 12829 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 literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/classical icons/copy.png b/companion/src/images/originals/classical icons/copy.png new file mode 100644 index 0000000000000000000000000000000000000000..2aeb28288f58ddffdd1d75115f170c5bf2773814 GIT binary patch literal 1338 zcmV-A1;zS_P)3P|jKV4ArrNQZsr&q&3Fam_48Lh`MiYI|sB6GiaYuZZ? zasnKC=d9Ws*vOa?K!llv;~9}LDH=;*C6q)snnH7j#=aB8{{oN_lX)cZ$XJrkAB0_u z!sQ7f5=*1>!|zQrby)$h>)1Bcke)jH%(>@ZE)hRgo<&7f4Jw)5udTzKv5Ch3thOcm zx#)*$6jZ zxjE=2CQwjNfFaFqeBMc>`320FTpYmRPeJsB@I$Z8%>Zil0#HL{*yW1HLMx&9BQ>hew>g`42C!b-4K{%G& zPNKpdi`TSeSQ5jt zz}D6l-wA<00HP?u@AqSEZ4IXsmC*dI=c&nj!3&r@K%3kE+d(!rH~Ds?RumQ0==)XR zsU3kw0Ovao0D#OTfFv_dBoZhqui^lIxB!co0iZTo)dw&I|ClF}JUvZG$*D>XptrLF zi9N;m7cj8^d~x*v0Ho^4m=ue}P^PGYdPu;S8Mtc&=A4=P=T~F|kkV6X0*FSV+&mNt zp}4dH*9HaLW{2dU0UTt+1SmUX21q@ea}t@;xj-PrWmUM?EueooW3GLWY2c%FnE?J> zJ*6hCuC8*3w@NB-xmUnF8@PU+0q)ELXD;m%K&qWYi;j}haZKLWGrnrG9>`fBl6@D%o`^aXzvlAyk=W}Pc`B^ahku5Y4`j}CIOJCBx$u% zLNX5qgK)WA+>l;M=(ES;f!poI@e{8lpM9a6Ogos0nT|fmct-%0O2q-B6)w#;8B$U@ z_bIi*;ou_U#l=Mq_2TiDT=X8flj*JiEiEl>>0qJM(w7a5mzS5}^Z8)2+4y~FX^BG+ z0F4U^3(c|s(4vx3lM#*SPTzP`J2hanT6y)<3jNMtFeLKw^6s-|9N8B@Q&W>$nrBK+ zA`_~b#ukg2H$b09M@J)VZEfEC{CpGp+d-zXy_)|gKy!05p8`rp5L7=^KR-Xu>(*#A zk-EA%=fkvJOdl{E&Bk~~0Hsptb~>HBVoFMHK9sb+zTTOWlOvfHXH#`n0F8}}Zi~f& wfq{WYZEdYHH#b*S)7=30e@0BgL78sX-$OZ87=>`i1ONa407*qoM6N<$g6NH5LI3~& literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/classical icons/currentmodel.png b/companion/src/images/originals/classical icons/currentmodel.png new file mode 100644 index 0000000000000000000000000000000000000000..35a37b7667d5afecc91e54a0a6300d5aa41da84b GIT binary patch literal 10941 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 literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/classical icons/customize.png b/companion/src/images/originals/classical icons/customize.png new file mode 100644 index 0000000000000000000000000000000000000000..96259b922d51feef16b54c1f15a838fe4af069e1 GIT binary patch literal 864 zcmV-m1E2hfP)Px#22e~?MgRZ*00010!qa{L0004EOGiWihy@);00009a7bBm000ie000ie0hKEb z8vpWKWGzC7y$6^e9}WXbG0g_^vJc4 z!L8?(K+F{!>fqYJK{!#`!Kw!xlF*o3o1u$fCaI)UaB%Jdt_xtVFxF)(x6fm)ZBc;S zZtAp~V7Y_#x|>P*0JLtLc1QPe2c>oQsp%mY+F2{P`nt08!O7?t)Q@Usb0@1WDoVvE zMkE+Vb4}w_g;b~=L)hLMJ?yAqdy^!oY9pK+=K8Rkq%RjRXz}gwS|_5_zVz-GP&dG=2~U}VLmIMiBMT<3dp;5 zVP~hhcziY%t;71!5QvDTImH5Dpm}jyA%d72XtOBaT8{12_-Lq>U@cI#qnffMB{?7PSNM5xgM? zrr@?GkBd{{<1Db*B*!O=eG17E{=p!3D9%6`DaOe%h@w&{0ptceQ~U50?*PTD#keY( zp!&N3C_NYwD^ywIFA6H>y_k`@D%(VA6tqRo^%)kCr=XW8L?=BGd7RKB6x9GM8fazWoJ0(1!|L=@Q+aTEb7Mu4u}WZlMQB24&|#EVDBq0{%sj+Z+)GGQx0 zAcdU1Fi0-lfEhqCt9ecIzWZ_$Xk-SF1YV<2^ak#QNA=LXgUd}Io1OMRbT7RYGCd%P zKS-r48v%?ldBMA#h)c%T#wHG+5V`$A{>3XcMvM|%P6Cssr>70f(>b}AV>T2D(&VEn zK_HANo+{rrN9){swakg0Ktz^QgDWfxHbzJY6ZK>&doEN10r&$qzrYSODpcQMh*H%o zSOat&76=4-MOF34plx)*)N}VCzH?EPkgku=6VK(8gNL*Np3E)-)CS$Jnai-RudhD8 z(qOgQ?SS}sjv4h}*IqNacG`39XxPWcN1v;!unrFm!4QYC z_Acj^H}`jQVc5OsUVtxVnxKZ?sWw9Q@B`QxpVZH#=NgKbEq?xOmsA>SUtb@%(9v@T zVsaH$PQ-_o)Qm6`=@qvgI2;Z@q}CZRo`stQer>5G8e5my4CXEh^CT4CHjaC}9?{K0 z$O&($1U%8bR;v{dcYhm%^O9V6PFgxKporEb{=Djv}7NhUQZ#8TNvL0_NhN zpdjG!cwn(uKwDk``_Co}Ev8e>XOzzgOoQTEd*;Gmnz9rW3I&M8V#v(QgrcG%P^;C@ z+1bfp?EcBQ$=j!OF1OE1fUdXLDR2(JYL~2dh{}J0;wgy^K9?&YTb2(8W8+7JA12t6 za%7Hg8ovjl(FiTAE%3|0ARIXHz6G;l!311sgoTBKM%*UnGOR4mGqn@!JL9_3Gp~Z> z{(6Z9p5FXo8}~etjeBORPg}}0?N~!YJv1~lfTgz=G8Dzb^Xb54Jd))oo;F?OoGLPS zee{DaT5J+A3>zitarZCFC+`J^U;fkNL<>x4^vOPTl^zTR1GKld!`H@^F|L6LX7M&{ zIA}acIyz>{0a00^F4~fx%15b|k+|p_1^WSy+Zxk*z z((l+8X-U2;oygOcJEspZj3vh3pSpKnaW$YpY_$lC`IPbC@H0!Ad}tF|z0RZAYfnh` z3=gmm{_}^(`7iFdNp1l4dp_;=2p%dvUFBG+@kd(qwpj}i9kWBpkvIuC`Kgv6`dk_f h&$IvkH~dc%_#Nkm8M#Em0nY#c002ovPDHLkV1hsWYZL$g literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/classical icons/duplicate.png b/companion/src/images/originals/classical icons/duplicate.png new file mode 100644 index 0000000000000000000000000000000000000000..811691d98b53eecf99b34f425e2be025e88a4316 GIT binary patch literal 6684 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 KS{0gT-2VWDHGHH1 literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/classical icons/exit.png b/companion/src/images/originals/classical icons/exit.png new file mode 100644 index 0000000000000000000000000000000000000000..5319a948051b1c66ca424d6969a1ae113bf98731 GIT binary patch literal 10601 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 Ef9Y;Vi2wiq literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/classical icons/information.png b/companion/src/images/originals/classical icons/information.png new file mode 100644 index 0000000000000000000000000000000000000000..76b6d5966154532c6ac55bc80f92c093cd1cf4e9 GIT binary patch literal 5244 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 literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/classical icons/list.png b/companion/src/images/originals/classical icons/list.png new file mode 100644 index 0000000000000000000000000000000000000000..fd4db26dcebd57285bbc529012c2c022dc17e0a7 GIT binary patch literal 20365 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 literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/classical icons/logs.png b/companion/src/images/originals/classical icons/logs.png new file mode 100644 index 0000000000000000000000000000000000000000..8dc7ce194f28bc91fe8a9dea10efb42b92d38e93 GIT binary patch literal 3302 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 literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/classical icons/movedown.png b/companion/src/images/originals/classical icons/movedown.png new file mode 100644 index 0000000000000000000000000000000000000000..2632877c1402cafaf4ce9b2fbe8118b65f8e4f2a GIT binary patch literal 10774 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�S#Z%9aJ0LKt%aU^)%pD<3U#_8B|~R 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 UCKEzA#sB~S07*qoM6N<$f&kr?^Z)<= literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/classical icons/moveup.png b/companion/src/images/originals/classical icons/moveup.png new file mode 100644 index 0000000000000000000000000000000000000000..447f087ccf99d69135ac9ca8c5f19f01a4785ab6 GIT binary patch literal 10463 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

ci9Rj<^4SF4~)= zr;+r}HYHz`{zE$%-q@<%)jr1am-9X47p(1hM7Hv&SrMC%f(&@?df5*U_oS)Xg?Zvr zIupcIBD;NGarUH5MQCzduXSPM|a8tMQ=%)=y<~c z?PLvkTC;Y}v01{p0L`llx-j>=JCJC4YvY17!FG>7b`3u4&j$)XC^>H+po~zU^cZuv zJA)USyJFZfRUDCM6Kzp#X8L0M(8OcLg%_OhFnNo9KLeZOdky|TN-CGGM=Cir41kaP za3rs;;`U0C?`|*6(HAtY;HQR*8`fQe&^Ny#cPCCVFM%!iy@)j_xKQ$M;EvWsu1Jo^ zv*@!B2Yazam0z3i*(s3o{}GAyo}`;(DOgZK&m>ouc1XlzOH^(U;;8lqv2`N+(4OaQ zZ3xA-RvmhTi)xoQa5GmWO0YLeK;4Vv=IKsqV?ns;*v={U-IVlPzTX&7deaCyp*ZhD zG@k=e_0_Y1Zs{TsN~nfDgNl)kpP`tXtj`{*%DBOLVT0QA;t$vJ8{K+;k_M2N!}Bbx z@GNmse53R~hpq?dIN3$OW3Bk-x&xZ*dMk_)+g+3L-5bFcpL^c z?VPf>2){(V^!iB9L{>vXdn-Ifi_pB0m*lnYJ@^3Sa08q(5DoOry0T7PJ(ojyOz3+j zlUQ!tXc+_vlt+JHY0o4g=OIbw2HXYo2T|D5Fjoop0 zHLcGcV^HxZ*EBZ){7sjUqrYBnJUrvGnZhDd5%U6^XB@H6??|zH$3FzkcM4b93BGUO zb@8)$W~H)4)%u6#5c+ET%LcTl(RAf0ku_1)UoJ3rBtB6qYa(8htn&SfqTc%(i9Xun z!vXGN!-P4S7Ow|wZc9_C_iH|JcbJLm;jlv<#2bBaMVRFJ=`pdL58gVRptrVeH+1_` z0KWmmYQC_2Y^VnIoPGijtOZTEC3u(jc#yenJ_g`D zfZd4;K)nrl5S^XwScoq^f! z`(S1J>tq{=ik|RY;DQ};dlFx;!rTy1)js-kkjtlxw4+CY>oUy%3lSU@aCym#>@ygS zAp650BD924UH3Qe9;^yR0fWc_3G=SF#C{nfkHESYaYfOibVsjv;>(}xBDy8;q$>)o zHa^CQjQd@s8PlL!K=1+t4lQC!0cHHSAb9Q<-*b5Tl-JTX6C-1zypE}~_%YY`!^*?f z-N`|pLhMccis5IFD9Yg*yBWPv`nx+Z#di{k<;nl+gq{(XxX4wd!&%7PBDQa7MR=Bp zYtv}`H$qZ9wjsNJF+tD}ANzk;TN_PtiDo%GCF308YDVH5g5*68a7pxVF!kK3f*(Uss-N5DbLW|1bONK++c;Gw@ z(OI}ehHQ7xsE;0u&v&V|S8}c{bMbO#G2kN*ce-xO7d4@dKbL~IEvEla8Aq&1lV7F> z2y7TtM~?McHOw9THUdZGAa(cB=&#|yP4zV-ReEo+Uz~KGN_pb=^Hlk3$xR`_l@G+Z zWR0tQx&*30n7v$AF2Df`r z$4MORN?w({CE7o!EPmp9wRV+8=2#=WFojCei?IFN$s@gPJ+fKqe;&Us9u-nu`1&lE z9kiF*ALowYh#lY(+CMp7O=e^Ka{1`f;NBVt9j^!9>@+qn zZ&Y~4X;!{0p?d_GG`I%^A7QoHl;S3{x-qIrJw0Q{Y&=wcsDo#+3Y0?ue z72sC5#SYp#M|Z#KihIcbUF5%>WrRNPI9b&St?GSmT`9vR&OTJpReJ%t6ilH@yfy_SqMrrOgqLr!rY(US!~6H z+8ni`>cWk87N`+907uM+h`GmkB(wsyA{IKc(%I0l;^m zj(=Cr%E{{jIUGu#JAttF>$@+vfm#B$*898k?#T7&t>oaPQO|01^~KmWix(7LF!%3h z73TLEYYr$wb0=#=l)aBbpmLgeANitT%p-9 zJH)o%4#e~7n=sL+ojBj$MAd**bLt17R%C5Y;nOo(r?s2}^Z6%~BD&cAbEgr`-cMC! zQ$Akh4VwWIh?;!G-n0V;4WYef8ZEnG|F6v3Z3wV2NFF*jaS5CmSS?_ z@EL9Tuh1iY!oqo7?FS=zh}5GK!)-7t5h~VV{RN~wTqBj+F^8ff$n8DH!>2f6W(!a@ zKD-b|@1I)f{0$rm$qTXdc$UiwRyn0O1wMkyY!=g5AM9Ktja5E$xxbsg(p3Q4ol4m0 z^dR~ih$^KBS@x7`cz5>dg4rG6*sMLB=D3>Z)Wq7jIqlMOa_%y(kZ@de#^Lgj9CP4r zo`mH-x=J}*NRjUB%Uo4Gv+q+wl?;>RPQ9ylWVtx=xqDkpw#%FXX$5^e8&c#XT($5z zh7j9Y$jm)<`Vs-Bf!S13c4X7jCEWG#5yazT7e&juy$HrvD_Mp(NJYJR8wtgGUL{s; ze>)m1H^R|ZkauSKB!1ue2{~5K=RvX~3j#SWw%s|b9VfqZO z=)!z}E9Na0g3W;9kULrS9roY@m)5K^z-q5hss90w_JO#}q0i=$Xl2$ec5-`Wsh_g= zv;Q5vh|eis2D2K@zp9W?XYN6Z`(O0(*;J7`sI zRkgYfTHX0NDB#ArYfq+IB$qnq#9XQS%DD8}9_t*j=5HR1Pfa?du#?g@KSTcAxc34b zw9-*-PsgO>H_{Z%$iiEOI;Ji>-sMZys_6)QFvQqip^O^^ghoUQ! z*3NejQTgeXR9RG$W+mr~7^4Xv{cV&ti+SiWWu23&=TT$w^`Oi7ef+h8j3#~OisP>{G7l#wj_$ll zy#OnIOz9oU)azI(i;}9R6B+sbwo?Qi?BDf)bUQXj_@aMSuT+yE{7}t6YMaqV-UI*G!MA9=p6It7sN1 ztl@Ez^o9>Ssx#sxq`l6SI`DGu`8A)F9PcAy%a70bLpJrk}g>rLi6|J*T9BRN`n+`R7Y z{yDo-hHXK(4%%NUIe(emuV2U9rTUsJVwn49eER6aO8?0xB|K^m%Wllvdc4h-%6G%% zk!!c#r*eBPh5A}p8(Wy^(oBwtS4>!AIk))|P7Kr<`4 z(w|{xEk9<|nZ(mQ-m|^fah=@e$Eb|nHbVIZ$BsQdP?$T}+;1-B`bmOP(5Vb+oGMP$`bSTM0o{h>Rzm+P z{>Gjd!z+{6eUWjeHBU@e_#cJZ6hFpDIM;M)PL>5(GyX3>3K+iXEzaCJc{_iwxq;zv z?08unuc%9@<7sutN&m~_?ImY&Noq`{qp@m=8AfLgm3H`Tg3~dC?Z!hoR;Nm)12^BE zwxt#64{Kf2bUs6UjLAoyNT%W3`I@I>`8FO#C@J#>xmN{q^=xy*%|@N8m$t?Bg=^7K z3-?|~bq67ff%K9Dni6JFj@K$CcG0 z#v)Xvq%&|Oxt4YAWM@5U?A!g`6OAM@uQ}=2F?R&C)OCH&Hwwy|U7WCUyZNMvYL1vy z@qQL}n_K3et8*u(7RA2OFfnY)!+HV4f1jE5RAJrQZfgvFNXd}}Z2jdu6B*D-w$lw8Xt7+h#ZxL|z*-GnP6BU`C_ z!PiK%Dumm(3C4|XRg85wM=L^W-6-hp^DwnhK2o`-LL0?kY^o8SgA*~zUr0W73*GA^ zS~_uej=0Wx(Vdg~XO%R{FPP$e$V{P}MdRwPBoRCG?9Al%1DMLnCWc{I#0Dmz&f0&fIazxMZ{B zsR^s^b{N8ew;`tkoaUYN7iW^S^w3u*f(qG~iaMyQ~~ z?f&-6>XrBjZd5BdLW_5Ctd>IgJ)89**(Zf|pp2>`qcMyTcoyq;n*8cV=gdW0yUm6U z+9(evTz2vBA?`NZz9*gHpMo!GuI>g8ix$iib;-=9@)2`9)p=gwF~o(r`#$X7;>$lt znPk=Ft{S9kCnsDJby>|5KejTuAa_md3MR=v_1Bdyo-e(DlF9jdXsk;ZCY}q!@?x-t zBfL<-+|SqQw4#}w^|a|mG3LrGYLn2na}4e2PnhP2L)y>98HYjlgooDZ4)1u9u57Fp zYB`PXp$1K6UABPTM(&q!TYmOS7yC?IsJ@_g_hR<7Nz@R$$ zpDsl%(%;8rWF3wsE2w%XCN92S;CQ-SH*d+c$e!lXZKJx{;d5zxvz7vkqrn}&G?0EZ zxT-&QGNk>-BwfM6$}On&{nD9G%FP#b2)x_MS%M011Fh+o6&0KPmna1;7%oxa=St0TjEd5(b( zpesoqDK`;(3loO@=<{Ia+>Y$|r@140twamOZ$3S-R~l+RAeno8T4g~{ z9mQhWDX0SfGFiyt!*AaeX}&z$c*hs!(~(%pgJsJ8(i1aPOONw@aKoT1f!v^D9925sTY;kNs?T z^HRNm$SAaHRO8iLo^bSMdY;=?KDlgVY?T|n!>?$he~sjq5ui&9OxqpUZHv(-1K~GpZP@hab&#}f#bNe5w%i}Lb}+&ggBvvA76j@ z&CX@OSdJiWV*L0gpz5ke)R^N+AyUJY);zmK^X!-h!qlXNi}$D6BZZ7z3{iC&ZnSQ{ ztk|4h1Yf98iZgkK4gM+9PxIjEU{VL|%*9a`QA1n6$o_*hFXONBg%RZsa$+824#+2;h{aw_HbrYj1W?ipiD>**bIDI*<^8q%{0z&EZeI5ieu zSgeBN*@L$`HzgF<$uKEqYYF&npl30dY1L;`W`Od$^l|Re$lz9jW8f4wwn`7>OB_@5 zx`nyExM- z4X)}6uSAZwhQThwW=m?#M8pQir)t}C0!+O6_l_%CpCoXGBpQ2D#;Z`=T9BG+xPrev`U2NK2Hk@EkRbOX{u$Y_}Rb zVV0bLRr%G+@T~`hy{h5S;p{Mi$nYcRWVj&fN`MzKe@R}}cGklAMvXFv`$v>944pkZ z@b(uNSZj|)+MVx;gv}A(Z6kPXR8R=brIFFCD#sH>-$zLfTbvD|;}jdVk~Awn&z%D7 zyFDbnU$~{3#y9rj+~nTtXo!4x6*A^ObCUtEF!Aip=COZE-R^r)@OHRqYy6N@ojNO| zxiO2VS7_5LR?FnNHO@WG@pQkIjL|9Y>hUdj?_#b${p7dOp&-MVyDzwCb!p#kDS-7m z9!DRD%ml2&_lQp~#lKQv7f=8Qwza*w{jm|*$`^d9zQMsaD1gZl&YGKH?x-Y$&IuH=J`&6t)Cnpm7@m$8M zt_Ma9s5xS#%uR8}cN^3=sH3yUu<^+E2^zh;cd{T`#Q4p==}z+b0(Z+91EG698pwJV z1}ZIK;!t;|WRU18nR%wzotjLgROTyjv^JDT7*5cjcx4xWJ@C3S?O}c3P<$X_(EKNA zTl>fa3Mm}CxYipYU+ra9s3D;Bp7B z`*QM*5V<<#sTo4@3=(;>Yggmx0)4_38l3suez=ou*fS5EO?XI}oW4`UW~OE*vi);6 zLeIzZ8?-0keMX7h!dc{{iW+-ZsirywC@{mPpT%W)>3cwz1mJSI-%809_r7QQZZA`? zfbxQf`uZ9juUDtz+)37uug}?^jXFVp?LE?P%4c<-Mh+>$BRiQPiimdaM$G^+`kHXh+2%w>?+#xv&_T@OU;n zufstxOqj~YvA`fjaCe)d3d(Pm{+s?f#VCa(zwy)0gw!VKufFm`p_%D0 z04iu5=FjGYPq-r6+n4pU+dlV9v`QVnwIYjEepEKVdeb)J`!8cw-hgTXd%LzY;-XHI z`3l#V6Wa6Wr?HuM0K)PwyawP!7pH!UASjCzsubUFj&BY-DoFpxbmdN+fF);cqBgAh zX^cz0CLUY9jh7W_KGTVeX8fVxPtKoQXC+ss#|urGmMe1l*Z5B!VX%9#6*f*j!Yk-c z_LkO9m!FPlb~Y(!?T>G!_%R`UHz>~RntJ9oDs$W0G34`wAHQ2b+In~k&<*iZu{(bp zLYMg%x%+T|=GKJl_Ma?8j5#s)%f6XyDze{hT3(%eyW|3ji>dLPsHXVRe#g!y&mrlX z2%tF8uLtKkG~XL$*yqH}LynR^lpOL!x%I#*ah%)I+9GO;@dEvEuNhlB80n|=KV zhg4V1Haxm*K3E(ZO{EORrc4~mvLNhpc3M~{@MqAw^~!?gFn)Tfh37I=QSWH~)nfnj zosN|{Mv21xH31o@NB|XY0knS@i+$TG55!Mh&_DDy-OCFKT&aA@b|}|NK4L4nn&O*s zgc7xxyPBUopP3JTDgQTxA3r+!wpd*-xlRI@?nJ^dMy6+@zRsYc6*&wzQRB#7pHAb; zAlDLA)m=Q8JsF{kE?(4(=MF2-m9UYpV#*UzSVH z%*g(}Z?rkk;pR~?7>Q-vUbC2p^NMon&_^(p*mR6NMZ3`zMvp!7v*g>*~F z?Dhwj92#;7o?wF-&4s(`j#|iy%O5)d2podv{tnG-5oQs}Z0zQk=6IsvPEju>I~Sof zO=#7^LcklmYzFnn{>}Sg|BORTz^YfH!RF2c%f<5#d!j(?k$(KbTq<3GJy^c}{CMs= zgYoi89PBM$zGFhJL{;iw#qe81nK<3wmpuIH^K{=O*vuhr!A~R~K;DwRpuYI}!Z962 zb=*)Z7I?;dN_HCGjc%52evT(-S73mC8h&kAe3-lYNNYjW}T*X$-hU`HF1U2^iyH;u*2c?+_>0u%S z2YuxnF!9Ys8D7P(u#!VLFNt3gFHr@7Nv@T#0mP5kU14#qJ*q}5Bj1LD{LizG#{;pT zP=vLJAsqf>o%Osu<>?~YE6C~*ehg5&)qL>@j-v=`?$Fugp^B;*0n7Va-}uiO)$3dS zR;@NX8~ z^358oQSHKfpBpoud%Z?QeF5}v)A783;Q49e#Fz8xH-?JZoK?r4=75-^beJHC-2nL9 z*cc@KV`XT(gCkH>Y~9?jVEZgQzbW0i~g@%sK1#}|1vQDAmUhy+p?uvz5 zbHs|a;lkvuK9e%_G~sA<*((w!Y+QI)(>8Zw_X2mxtgTub7y8~n^V^7XO*t(bVL?}m zV|D7&E(4l9E1G5W^w{^UCVu+R?wcOTlE&l#r|BlK4W8_cX}V<1;I*oOZ&eI*4ZGx|3ltMb$J=xsu zC(_avUTR5?8O=0#SX1b9F$9G}bM=^2-m5P>Tk8uM+ zDFb!(e*2OPfGia{REx7uG+T0ChBMkgKeNZSfHK2b7Wd+uaHenv?c+8+TtW>@4*1qW zC95DJFLqF=?u8JHOG~p6VM$rl7{WlE{p?2OOSiDbzxC!XOZ*R(C!DS!V!;X1E7yc0 z2B&1LWA*E-=|XMZ<2xbErC(XirP?)tT7%*#1A85r#v}V*76s0Ha7$uoi4J7i+)grQ z8YK?0Bpq~r8XSzBaV}f!;kQZp?3Uyh62tS0(vo>-^6yxl=M2d%mIp)1&~u{)Fymp~ zPLwA%(d1e9jb&j3qJ@812DzUh=GgwnK~fL}o20WagsU8HH#Lnl-wxP<_mHOLVS@Sz zJ%8VM*d~pS*kkM+VHkB2aQH98$Z%6mwnVL`p@uG1ck3(cy*;g}GhuVq#jGspd>a@p zVOk&jcN;dKXMQq|8@S*dY66@$4*l$3yN?TY!Hfr-78!8U&s~JyhkJWU3u#|?ndhNB zSXWQOyK3KuisjkT-#YjJWBF^P)?W$)Ujn$EB^^B=fHoH47#K5P%hkhV!h^AU3oS7K z&$aNqKSd%ja<_2d(Qc=5(+=p&zQAO@0^(F9aicI6Ok7v`qXp}=V;+Lb(hGS58z4CY1*cy{5t6^0jTun~N;pJ@eyLb=o+isG*7>aQQ|5};D)VwjN#%E<3fmn3uHSu({MNgw5 zI{x@i+!{fRx?S*__^oQuX;3_z8C0PlLUEWIkBJbQ>%$EVa$gq)Qk~q?GX7E<=ejAy-%Ojs zB^60!{By*OYyZ`%K5+9~hRLS^3Lf5x4Zf5*5V-Q|K0p#$TQ*l&_$!#-bu;LpI2jHB z=Rt}Q-fx$!XFa71C8q1EC?|JUbMBY)z6riG{o)+u9=d)Z+l*82erFi|JbD6nz-u5e zvd@?eXV>&uM1<)squz#LnF(Wxonx(9=V7wltO^}atz@=m?T&IjCYoN9&Bp>GxvaGA z5cDllnn9P0-NtX;udyF601%ad3bL}EJNZA#7enrUL{jbe!);%8kK6+Lrdwx)%7ZNT zHPFKkd5;41>1vxnT!Za54h_S#SHXn%ijk$v^ zW$lmR*tfWs%N2L|4`<}RvQbp zR!C#i3P>$Wb8f2i7C8>7n`cHw4vL`%(ROhcF^rUNa{d11%uOhJ)DR~!@*XYJSXyfb za$9@SE7HfUqx>f8YjGT7L}Pe*7)H?LZ+X*c188~O(z1($etKaPVlt>N#_JR%J!Ds3 zEYe*3Huo6eSe`nEV9>E}m#%cRr9)#?Zot>C%(V2_d3NmcFJ~neC0BfOy~##9d;Fd* zg9b~1?>=Wi5V^FQk!2D- z{5saN-O{i|Xi)6e$lJO->5~XB_|3%2MCk2$ETtke3acOlPR(}VzUJKP{L-;nki|*- zX_z>E_|6j~pReF_d1Td~-+r2p8o`fYQoo08Y3?6bXl3zGlahJ@Sqq+!E^=T_Xdj5S z$j89&{!R(fypY@d9RhGmyd;+QN(+b6kf}G0G}r)EYI4_J7&D6HN`!d?hR36y2ARDk zR0nq0GJS4`ETP4hKtm}c8t}r)J4NTtKX)hWL2EE*STY+HNpNZ-&=<5dkoD|TLqAz< zy={!L;|xeO--usr#r$*aXHdYcS89`=P= zw1H8YQ`lA2LIKh>?0Q+1Q3Oz*S`}@_Rv!9cGB*cSCH>Z*qjWgOp_UgNc!szi$rb2M z8^5fb4zT0C)%(KeobAE_FT9!E)5awN_VDa(@d76%YGq_- z=aXZtaD3(Py-t3B_-gR6w9!6!b8VoHPyQK|dz>pQGJPMq5WIWPC`Ea<@hr;kaj5=G zVHRdh_+>~w#zIxhxg4Ak_OA1t1s8jqFM`vBbeyyJj-&iv;rm>%Myc7w5$uV$H(*%G z_D0A3`l+Q5sgPk}2=?}4;qJhpw_S|k0OQCAYk#7(JQlS)eX_noRG{LqbB&W*FYT@k z`)1t5nM-T^iyJKVS+IQrpNeHdr^OIjv+_Hwb!=@=yzxU~Ld|YFj(0MI_M)y3Ny~|r zR86Y~dzp)Uww`{DKXf5XQJRah>Y)9!19c3PKnp&7$~I${4A3k@A!6Ye5RaD1t~!!PE>13He&nbXj1{*k+{UX z;Ogmf8lfSfI_G3_cNo!BoB#(!GD)iKszN89v!9mm1ysPC6Og7EJn_R=7k+Ow{S|%k02d6( zr%aVS){=*l#yqViA1B9dEfNi`!{9tT>LzKYa5 zk(H0L)2X5NZi`RS9pE&*GE37N#n>)1i~?;eu-%e`W1n2=VLHr*Fh(=atDpzfIRq)0 z#Y}^^Ij(iU0n4Qq@gRncxen!SP(JkHwh5T?!u4iTiR1Z%hw#w! zUf_$lZ-xlyk?Qcy$geZT+e!&tz241zJDw;Z9Q~0^ZBa5j#K$;m0-y$j2ju|*gG&X* zh2VVeTds?*a_&U^gpl*!>1gthKp1|(6Isc5C-?+g-(!Uu!4E0+cp-fQj0{dp+ec{J zASOr5D>Yad*?{pv_@VG2h2t!AFJzJ#M!R5;VVyc8Y!y6H=={S$-~I*SU3=FpBOv*I zdB%n}4yvz$gP;8mEr}FsWLTc58WGo&2--sn-YzknpJ8UktK?-|FjjrLF z^v8j_MV%R&yP2DZS}p4;ooSR0-z}-isXtIp@m}<=qEya%ng96$y3|*JHQCkGde}jT zPM8xY*gum)6Y>Udi6s*Iv~5D{6~n=`)gOlp0U5jk^rO#DrJaLRgonkfrfm)A7Sg9P zoJl}NNc``s{dB-3)`2|%%S8eYdwavsSg8c#?_6P}xPW)&_TO}`AKflFy=7$`;}kVh z@jJ*?X~y`XJk>uU7ROD?67otb-`$1N0l!Hkx3onvoMY$7m}C^O1^Z3*Ir(}#5Qkay z`r(7K{Rz^~YKA-14?(G~TOj0y<^8yEj7os#J@#e`G%D4;#y5#s z5&@wk-dCXVng>h*A%l^|*L0VW+xsGUOM)|*;L<0OIkkaS ztaQZ!_95PDX{f%tmO70TUJbyY9v~8K5Hxqc@nKf6TwAHhnny@yAsF~BIRD(Kj~@h zkSL%ey_!BC9A+`&iB1`qcnh;~S+yHNx4vIuLCBH%KYV&QQYc{pn?F$L%oQ#^4JkEXJi!wdFvVTHC)dCrU-8(#I6PcN zXPGUjz1@6REpKMn1~munsWE6-_$+K#ooLm(-M<(P0@x*%HXb41CftG`-RuSME50eL zIkkafS}gc|j0PJpFdl$$DTmev$3Q&->GRj_{vW@Z2>tHjvR^FXs_#a&$n<8gF~w$@ zW0P6`XFh*;Z*EVEwECN64@E;pT~C`^N{-{#Y<_?F`uS52ZpJQq<4{W-@((#&UsL%W z+8d2H&A#hTtMPI9583F80Rb_SH(g0-lciiij&%l*n?#AxK%NF&j7U8a4-(9vkdIR!- zB3MofDnBk0Fv0M*xaDDVkD1l}=6~(8+R?SL|ZS__rA}U&4$jU*E6$m_eL-!h8Vq;cHHk>a_JYmejx4laZ+!$HmgDu*7 z%X3AlDYx{%%a;eeqO^MS01gY4-|m@K^Pl1{NLUn|%I7i9lbLp{RgmBeNe-~8+BYT>*P zdlnuSn57`+Z%E+tSXuc6CL*@;dKop?hhfk-prLIKCP7Hx_AkOci97hX-tCm~HbDp}BaFd8MIm zwm%{82idnW6?k1yIg8M0;x?@&#{3+Kvy9l&8k#OGjD1e;zJBxJIDVE%eZF zrXP7<#$n#XH$-G7Li2wnIZE_2dH|Bm!IzS_e>v!XA?-GnNa)O(Tn;*X8%pYR1M?vG z9JeU{9}ak2{}%E5#hTw4EeC?ENY;@vm5&}Woxz)bKUyFo^r2~N-PV=;X;$+jvB3!58ktmR?aa=PO)i3f(@vxAFmzaIDn`oJpw zjs)+{?3kPogD4Q2eBS7E5N%c?8QU6nU ziP8lO5exYWsUVPajYVd@&O{D;lfP3MBB++R0HObJBp3ZUMtN4`IHaFSt2#FThuOmwGpgv(o=R|fo|b=$vi47AxiRuh51Kn9_g$!m06dUT z_SCwTZbK>5AubF)SMC>FbqZPp`aP&EYwIw##NYPpI| z845Uk>Znrd-hb0Am)QgztBzMQY#NjrZKATg9(10A7m~J9XUO`|ly=z;p|S5zyBRVL zMJ_MY43&w@D6(I?g%sM0%y{q1Cw|6MIB zieg@k*AWAM_Kf;)0w2HMAn^};GL|{y!?(O!WaJ!dqU^*reVhM!xT zGDZ;6Ge;8G-v1v{-yM&2|NVcpl$8p}ibO)F8(E1WvNzcyWp9_gQkkKQ2$vDEDKfJn zS)p)UviIJ5Wc<$i>U-ax-ya^2`}6oz-tYJ8yv})^=XsuU^7f=nU)Rt4TpbBM4G5JM z>qP<8ZbS`EmE0!?dGexcF^{%b)i&!fM18ohSOkA6UdSYS@vZB*RhJv*m5+yLNQ~+M z-s|hzbeHnPTo&mr7 zUbf!#vDAlHM@W!C+|C3m8H!4N+`mZ^1tw=vnB;Tl=;=BlKKqK;Vejn}5~5fyUBsrk zf*ckyY=^yN(TLTrhh!fSnJJ05uH9%>iXyO5zfM6#D4x0rsy6WJQcsm#(Nz!6ckeEl z4upQ1T7dQ7V{RcVkg^{!QVF6&Dna;C*EH=>RqNz&$>SBWr5|PF@u|gD?}8Nbz2f>v z7-xy6E1gr0DXk-PC9nwnBZ>z2DuUnR2cOUA_w7SL`@C|bNYN5?W!dZlc=VPHQ=!B2 zSbPd>b|FLb*5B3wM|0AK;WWy~G;)$J(0fq^y&K@3_6U%ICb(f{_G)Kv!?UuWO)-*e zCV{JTnPFdG|8fmLpj12r`Z^nT_CSQ*CUm$kPi;8&vNZoSzMW-H(G@6Uq_87C_0r@M%4!3=adivutR3A6VkGj2?=QVx>{8$3+y7|4rvk;P)bz$KkiOEoqcsp%h{D0A}_F4k(h+g^Yl_s#y-I*TuH*Pa3lt_ zDZcQ3?iW8OPBb9JV^v-)R<&-XJgCXQ-F-Qygw!nQyM)I~t9&4!cAF(|F*6lD`#E=R z|4HTe4~t*2sVgR!FKh#tN&nkQ4VTgr}a=I6r!++6pcLEe^fw$ptLST5m z>1hssEVK^cN#oCS5Z2R9rBdfnYz2&RtYOwWDj!z`?l9el(7U{T^)nlk^G%3N{Y-%j zj*e`3W+x-ZH%bGFyDV43#go#B%sT_swns0|s?ci8PqFR!fM}i^ITny7-5*GxUwLXX0lNbIIxZ6R(!OHZ7Nb-5vB6q3L)>dyPTj*`P3_1&^o?E}v zGT2FN{|Q7O3xY*b5KEv_tkmU;9$>J!H)B%ga0_lC$)+KRmsD>`LXbRsX)*n|dC0_d zFyYF_tH2MnTDnT+RK(ele#i&)h|%u??ma&3Yo*{v_B0UjOW_+t{GxsgRKjL9r1|l> zcIA3@!%O~CQ+hd1*Z&Rqy$IF(f5w%4wOGo^<5<`AvoHE1gA4kh-qlISYz9|R0)6Ot zo($j4pzz1Wj+qIK$rOHeemSfbl7cig@IK(r6h zEU9FICj=pE!0?AP;O$osDy# z<@yH!&L+N4rO&>vo=Kz*-ZvRS`bVc_m01!g*C+EFnc-{Gd`yKg(8~5;xO8tUvQQC} z6l>5l!h{sy>Uo8nZu~A5gGOY~tw$={#Qu+~o@>S`j#*6rOuho>VaL1x>GS#3lPPd6 zaduiTk3P#;p*5ZUr04ENeq%5L6lWGdA35+*z;d{=f_%dBfHiUr|% zhfU)Kep1c)a_QYS;dZVH>AMbN- zd7QmP-|U}zNKEJ=)sLaE<aJlbmS`~W_zlG-7Z)pQ!0^Gd6BP^cp1G{k) z03CKy_{K?y6)ix%NFfHZzSaS%qA%sGZFpgD?6qvE)vf$eNIph4o~?jt$g|)8nw*+a z+F!JfKo%)$dTDDu#5)u(`GW@sWT?JS*} z#eZ?tucx3-={Q(}{V0;@Q-hGRFx`+h@UdyQwCSU4gB))FdSEH{#iw7juarUaD8*Im z?T*Z?>NMM}?_vCQLay3E^=|>&{dWHt5!h`9{gRSi0z^GEE+Ww79Mx_f0bgnMq^g(a z%wv4XFxD8z7(78`lx_bK6vItl^>4VH$F~;wL(}ETh%bOBcndXQvN@!W@|kfIWz&6U zhY~1;pT%Wv!f)mW!44wxnsp$C1~Wzoe2hpHqc;j_A~ADzmirnCTNg7)lD+Lg0Q@Fz zv7nC|W5{N6CPN~-31z9piFAEKJft4+;bJ4BKDMdq>s(qh!_e(#|U8dfx|=@c1(j0tW;D z#LpdSFCdQq(%tMB{OWZtl`X=%LOXBZcKmJLv^bY>CMeMA#^-DJ)}iN3Hz8%Oes~(> zV@w{xN@y{pARnQVqGurtS7JT0Y}7COYH_Gk@QzRExVv4$^OA#I zbJrz1-FF`8ptg2P@W_^sNDEv^xLIjb0AK$Kl9|ig2NNqPt#JpBI$6e&aN!O3Pt@J8 zZX2XtmbnXOT2f%afEVBU=T$=A0-n?Y=?~}yFNsr;G{n|~-E)&KcT&*BS1n`b>Q6Ad z$FnEdNCU-M6LcjZUWlzZ*z7za{Xq)0OZNOkag@LyuqhU=CnJ@pjM5nBh|DaxqFcPp z%r{gKjQ)#(K?L<37z0=Qt#JGme7(|A@SMWdI8wi)2cFa6B=+`;6Scm$699?YRq3;x z_wDLyR2E12mWbkV(8}5YVR+t9<|en5`#qtrw*hAO+}KS8413;}`$*TvcG#oL^Vj61 zLc=pqpOIy47_7yepcj=8z-LJ;35PZ7grKTF&obHYxtM)e@Q(UnnZQe*vANOiZWGaGk-!amL`FjNi}Ao`52? z>HL=FVhm^!)#>y9N|dN*2}&+s$B5lhTHF-UccJ@g27MJ5ejs{5K&W6;MzcfdEeGY2 z55h85EwvA#HK{!GZ!vjm5Fx8*MeTwSq;h|A6G_ZyVDj zuz7n#2=znvAH}c3>H$ML{whzKZrx7&eH|duS8IZ+2w1x3l!&l_P>c1+Im8QTl&+Fm z3#-9B%C2I_TK!-f2Z)Mz;DdrhL>NZIUn-d4UVtdNw&U(DwG4-BdZgUs_Rg(}KW1P` zRi(=!2$RHf!+v8yS!%cvg~E5`OxWQ|{n}eu_>OSPHeI=Ic^?KZ!6mDX24rrK zcA~fEUIhi1@(U9yQfd%jmyzKj47)lQMwNH&V1zX8khEvSOLQ|s-ecl;OHBIBUi zWC7}TAOHmqd~ADi^IHb(WN`7HjU$}=jF3t-G-Jb~MN$4@`t4*4=aNoPN=<^ef$lT) zeOdgK9gf<2x50C}+INM(0gK$8xdm}EW@+5z0K=^KPLM5NwzV{*f~6@*RrESE%<6UJK@aROh(o^e#o;)e8q z<6EriKaftowPTXb#t`!yc0TAjwla0x+tnlA#?2$EnO)94&Olo@H6fzX^B;4ig z%_>Ehe}GEHMT;>p1wfkq=JRbrm>4xn@t$B8X|ECfbN|ensAwt8v8|<2(4~PcGAa;| z`17-RS=KkQ=?(j%g9{>q`OTEZ4?azV@3_?@)h~`!zw$wYG~af~RTVH2-GbZ<$)Wek z@}rNI$G{2RZI^79VGXi~9w36AYG_ih=pB7Blkf{bhr>KO&IqaQQh%VvT2m|?EqM3e z?ZYgLri=yHiBHp7?QUQ3iCr{jEnf1&bq5j{|& z6Iw05t3s+7hES>n!O?VaUICkEg0#dcy6}+sF82`~3{(i~Xc4XdKpvkw8|S1^SH^Rs z01Oe_$$20b8LyvPiR`l)EQ0 zh0Y!J;UG5790xVQOiy7FBKYjbDax?U31kS_@uzbXKk7eMZxXD}Sg}=W2&>FSlJ+zG&FjW2h;U7@?`6~RXya}iSXa@{{ z?h|rC)X?}~aAnl2!e8|5KGIram7n{8gxHz0)+=c!V90h$GDj=VuJv^3$ZlxIV^BfT z5gbwB^{eNozYo`#yp#%IcyOHt`gqflwVqiA^ad^1fJOpe?fO4wv%yJFLVcz{CvPw> zTaP>C1Kb+p78(zmGpBtGHjYj~`jXD`&_3ZJGm}H|&p6-(yb`{SgcSfA{t}ZRw*!6$Kv-F7aD1hQi4a2@LewM)-C1`8BoK$^ZBJ=__ z^?KfohR!P4)qZqM!=TR>+UHYb_osfyO;jg_^ov%~!>AL()@II1>G|XC#WOEM3b{dA z`_BS&swCrE0vyV~&8>7!#UK?^7&>#t6~Uq{znn;E!+>J{s0I$xsbvQI2Gz~?sqWJ= zAUypP2aS|l>Wh&5FoRe)fB@khSzt@bggxRg(m6bGso3Dy&&j^rieEpRbZYAEyT3te3-!M%F!}7Do_KC zJwIR=0W(F$_{8q?N(}6M&70YL%ANM(;l0BJ&w-u8P*;#f?W}K!K86tk2r`=PC$e?8 z_T@jdwMuO_pQ{u_8?ei15=J%CerD9xTomgRcZj5WLJuChq>Kqz&$6M(bui=s&4 zU9-LCGVx>r(#tvlwucfEN&reCaM!N(^l%?|Zs5HtiyUsQ zXf@bh*+_)KryuEyTn}Jq48CdaB@L7#3B=lHd75H-`%NDMU)%)ct&BjVf%s5)iwv-% zPM^1h@Y^LFcFeEj%!?0h(paq=-PfMUIjR8w0Bt%5*PDM&NS5neC-~^AaQUFw=NQO9 z-XIFCdKH8e1pp4J^b~%V>Y$^t9nqg(9@x%C#qNrD-?=+uPjL{+?;A;iV0^(xcK6Ob zOFVXx$FGwu?dCEO_Z<5?M4YIPYk}^xb;k_lzFyj&UOSR_G~UJ671KD;01uDhkhjg8>CiLrPdSS>`d5Kf z)nY_b7=!|(55&cx`uUV}n_HymaTR;>fZ*kO!DRA1H{BXcZdBd9Wm|o8`!Uh?k>1S? zW4JHyW{jmysPpIFN&Q=z_`*t!sIYYEjO>_lqOegZl^>ux%>n5K+EakQbq*um(D-Jk zd-vMxNsC%}y>1UZ*OX_*oA44pQ)Ep8vq?0J+rvQ4FCigAttp@&^z6D#Fj4tI*bhx0 z@l`F8z{e~=FJlm7z+eXH3wNr>p$P+sbfEQLE${-TMUyzlg{(2*;q!HvDQ;MLiZT7yenJ zWWP?r&8w8_thw|(;E!lj`?<}%k{%FuLN3arBKbj7wV8IisT}kM{ylA{RU>zwM*XNo zNF-|iwB62|ZX+hh^UnPIbhrb68Q8$fu`?jk{0^)N0H};H^o8I8X^v~ste2c2KHf}Q zJU2_C0;GIUAO)gH;9dX)O2f|f-uXTXa84@ionBj>P8zDn^aYTe1FGDJ_K7+W2i1F4 zwc4vD+AElQ29cmv0@MlNeu*KV+v7;Ns|slmK6xuHe>9xM2Vvb+S~8bXU3pjpWt<&u zOFB(-JU6L^#JW-AfZJo6o?abuq3JZU~exGmI zJC{GKe*V*!xej%gyuedmquEs?B*Z?VQaJd|xd$j+=*$=zX2|!Pv`l4o>-gbyw|%s> zcUwqhup~^kA#_?IhQC6Wx*FDIc{cL3Rokz z`SpI{L?HQALp%4zDsD$_VpT08BbR*S{?eY!2^1G)b4b&dZ?LnAYW0*C(P4m*U2R== zn<{1C$y}c71lUmYdfgvJR0rh!uDP!hQlf3DR^Hz~V1w~p-dTKCgC2b8|K9M;-Tqye z@;dhORUS{2&TC7I(O4=cgLzkqJPbb_VLzcm`dI|2o8%0A3^ZOrr0@F~v6_Q8De(1LBR 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 U@IiC&5(4>i%34ZUXRqA*AC&21R{#J2 literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/logotypes/opentx_2_logo.png b/companion/src/images/originals/logotypes/opentx_2_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..9f5aa12fed369779f0bbb2058447cc724b9704f1 GIT binary patch literal 25249 zcmeFZg;$kZ*FKELV;mbvr4$T6;($nO1QaO&X=y=0x+Jzp8z5a$(p^#_-3FmFxCu!G zsZB{Yd~@AA&-;GA|KJoaD)4=Z}$)kes|LC8k6| za!8bfBM&R*7oXjk*aDzx$2Tbe0(h4aj3dxKK%@7 z7YWJp>=_2qy-?iWBqS?oZ*gES3CS&aW%s|(Ka`~(J%oPR$de*Rko=BgBu78L3W+nL zpFvJO3h3vBHS$FC^VS@T=mGfoeBl2s@c%0xs7cd3H|Xi?JZqL)W_W@QS2*4C^V6$j ztKsU7bouzn@9AwyHS^!oO7o&t9 zHEI0Tz(i7F;zfLRDx3QI3x+LG6xR)#y+n4V-y>CA;nA;rG~#Rr0y_{#4CA{kR%K-i;^)@`sS~6 zYc=##uNL*{2MX!+zJHX-`JDw6iFuS=>OIEcQ?_i&) znw9_X)63kKcC9f2T(;xQZv|`(o1<=A(*Yw0qz5KVP*t5(a5qd*XRFVxm^<$@TcqZ9 z{s!ye)ATVor4q-VFOH0qPv`o|a8~iexvc&mSet5AQ6(~rjYa6ru}bWf(7Nob^e8vH zI~Tu6NY~3L>XxQU=0L$=3cUFSSKq*EH`z|jW2``=o?rSMB47XJvW!xLI!CG!3vZus za>_Y+=RcoPmMUVQ+@JqVo+xDg^WzKa_S;A59(mGHPUluw68VL4l`?A!O}>xJ6to3s zSygpaB{AG0-CSsiync1AdTXw9eZ+S(T+1?ZT5Y;!Z)d)t&24vyz(xGLy|JWUN1-N5 zH>zJTndCe2{NO1mx>1)a@^Q3eS7fE=^vh11y6)Gn-n(7DN>Dj^7)^I?WMMc<*D!b%aa`) zy}fT?Y0}NrSsIAHHjx?-kxtqDX~=!G2RB+p_O_o*CVJ`-G88jM384oL91)FKkRv6@1Gv$$SNni@q2Q(#*N5dRevSg z{A|hKQ?2dzy(KrjKR-WZjs`KgY%Y6$mlqL2VWt*#en#Z~cw~LGq=qhjZ+k+y0VZOPLjrhm8^f%eVxJ=n&i@7oZyKi; zCf1W5^LTsH!DiogO75<*G!})518#de*6Y7K(*xcdzw`Qp_tf|FhI2+Sr1$RKL-w?^ zv~U?ThL)}kIq82n$tO#9 z=mleyuzP^yPDLq6l;%RLRD`ty*WjM-e zjgFgs{B|{-*5BVhQy&6~htfXKtzi^fIuYlj2jBubnDeLM<7gFH8z69fO{`k&yCx^J zLLhJ@%(*~u2Dt6?xZT5&>!442&2{7Ugwm7)<|UQ z2fQ>lr=0k1&I6+D7{j=11w7qaBhA{v|_>*HFiN zHmEm<@9{5a6Bfjuuu0Rcaa}+g$ke~}z|6$Nn@o=XBK`!>v2^LogDJ~3YcEgH^8bqu z4a~{OVYjT_7%%ttuBJh|CHlkh=4=Q|a;a2+fGV z4R5s)@T54`?e+B$s+zaBdTuid3x8C$umVMouA2*+cIhAeo%y}B!pWH*1x$=1eP((7 zWb!w;UZ13)1pfzgBuh4=MO*ffbvV^-OvE!laa&a`cgkcY2a&mKt@hY(otW!Z0zLZBpb!Uf?@*n zBeK~U>Usp=-3N;K5^6oYP~_Z^6_wT7W1J1BmmsIcUX>?-e|-FN1qFgaw?L<7Pu=cdiB)!*lYj(frQi=n` zR-ae9Y}I>TjRRMDY8DzR(%Lq2SwqOXYo~{(9@r@k*nPiejc{VJBU!m&<5pH~xhXB4 zpvYxCQVYm%G_PjYQ8w8 z1e#h|$*;RlHTEQcJ(GPQ{OoO)oU?ypl37r4N8(4jb?dO zl*8NOd??MVVGpSROD_U�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≀S|B4SE#l8@r$3l|m|Sv& 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 PAz8CSJ6M%lc*pz&*T+&I literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/logotypes/opentx_2_logo.svg b/companion/src/images/originals/logotypes/opentx_2_logo.svg new file mode 100644 index 000000000..604964897 --- /dev/null +++ b/companion/src/images/originals/logotypes/opentx_2_logo.svg @@ -0,0 +1,228 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/companion/src/images/originals/logotypes/opentx_2_logo_v2.png b/companion/src/images/originals/logotypes/opentx_2_logo_v2.png new file mode 100644 index 0000000000000000000000000000000000000000..eede30674d06a9101a6a145406cda6271283ea89 GIT binary patch literal 8214 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 literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/logotypes/opentx_2_logo_v2.svg b/companion/src/images/originals/logotypes/opentx_2_logo_v2.svg new file mode 100644 index 000000000..3dad40fc8 --- /dev/null +++ b/companion/src/images/originals/logotypes/opentx_2_logo_v2.svg @@ -0,0 +1,66 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/companion/src/images/originals/logotypes/opentx_companion_logo.svg b/companion/src/images/originals/logotypes/opentx_companion_logo.svg new file mode 100644 index 000000000..42a984a80 --- /dev/null +++ b/companion/src/images/originals/logotypes/opentx_companion_logo.svg @@ -0,0 +1,280 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/companion/src/images/originals/logotypes/opentx_logo.png b/companion/src/images/originals/logotypes/opentx_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..5bd8add0c9fe687df622a78af2c0fb619142bc6e GIT binary patch literal 6479 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 literal 0 HcmV?d00001 diff --git a/companion/src/images/originals/logotypes/opentx_logo.svg b/companion/src/images/originals/logotypes/opentx_logo.svg new file mode 100644 index 000000000..b635294a9 --- /dev/null +++ b/companion/src/images/originals/logotypes/opentx_logo.svg @@ -0,0 +1,239 @@ + +image/svg+xml +O +P +E +N + \ No newline at end of file diff --git a/companion/src/images/originals/vector-logo.svg b/companion/src/images/originals/vector-logo.svg deleted file mode 100644 index 40a99a3b0..000000000 --- a/companion/src/images/originals/vector-logo.svg +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - COMPANION - - - - - - O - - - - - P - - - - - E - - - - - N - - - - - - - - - \ No newline at end of file From 0bf7410145f4bb92d86e21db941594e4e4decb6c Mon Sep 17 00:00:00 2001 From: Romolo Manfredini Date: Sun, 19 Jan 2014 15:34:32 +0100 Subject: [PATCH 183/308] Properly reset windows geometry and state --- companion/src/themes/classic/add.png | Bin 0 -> 5539 bytes companion/src/themes/classic/arrow-left.png | Bin 0 -> 14365 bytes companion/src/themes/classic/arrow-right.png | Bin 0 -> 14387 bytes companion/src/themes/classic/changelog.png | Bin 0 -> 19817 bytes companion/src/themes/classic/clear.png | Bin 0 -> 9656 bytes companion/src/themes/classic/compare.png | Bin 0 -> 2163 bytes companion/src/themes/classic/configure.png | Bin 0 -> 13703 bytes companion/src/themes/classic/contributors.png | Bin 0 -> 12829 bytes companion/src/themes/classic/copy.png | Bin 0 -> 1338 bytes companion/src/themes/classic/currentmodel.png | Bin 0 -> 10941 bytes companion/src/themes/classic/customize.png | Bin 0 -> 864 bytes companion/src/themes/classic/cut.png | Bin 0 -> 1323 bytes companion/src/themes/classic/duplicate.png | Bin 0 -> 6684 bytes companion/src/themes/classic/edit.png | Bin 0 -> 9626 bytes companion/src/themes/classic/exit.png | Bin 0 -> 10601 bytes companion/src/themes/classic/fuses.png | Bin 0 -> 11183 bytes companion/src/themes/classic/information.png | Bin 0 -> 5244 bytes companion/src/themes/classic/library.png | Bin 0 -> 16242 bytes companion/src/themes/classic/list.png | Bin 0 -> 20365 bytes companion/src/themes/classic/logs.png | Bin 0 -> 3302 bytes companion/src/themes/classic/movedown.png | Bin 0 -> 10774 bytes companion/src/themes/classic/moveup.png | Bin 0 -> 10463 bytes companion/src/themes/classic/new.png | Bin 0 -> 852 bytes companion/src/themes/classic/open.png | Bin 0 -> 2073 bytes companion/src/themes/classic/paste.png | Bin 0 -> 1645 bytes .../src/{images => themes/classic}/play.png | Bin companion/src/themes/classic/preferences.png | Bin 0 -> 11170 bytes companion/src/themes/classic/print.png | Bin 0 -> 7282 bytes companion/src/themes/classic/profiles.png | Bin 0 -> 2312 bytes companion/src/themes/classic/read_eeprom.png | Bin 0 -> 18174 bytes .../src/themes/classic/read_eeprom_file.png | Bin 0 -> 27588 bytes companion/src/themes/classic/read_flash.png | Bin 0 -> 25584 bytes companion/src/themes/classic/recentdocument.png | Bin 0 -> 9874 bytes companion/src/themes/classic/save.png | Bin 0 -> 5753 bytes companion/src/themes/classic/saveas.png | Bin 0 -> 6839 bytes companion/src/themes/classic/simulate.png | Bin 0 -> 10065 bytes .../src/{images => themes/classic}/stop.png | Bin companion/src/themes/classic/switch_dir.png | Bin 0 -> 6210 bytes companion/src/themes/classic/update.png | Bin 0 -> 12332 bytes companion/src/themes/classic/wizard.png | Bin 0 -> 13364 bytes companion/src/themes/classic/write_eeprom.png | Bin 0 -> 17348 bytes .../src/themes/classic/write_eeprom_file.png | Bin 0 -> 26192 bytes companion/src/themes/classic/write_flash.png | Bin 0 -> 21730 bytes .../src/{images => themes/monochrome}/add.png | Bin .../monochrome}/arrow-left.png | Bin .../monochrome}/arrow-right.png | Bin .../{images => themes/monochrome}/changelog.png | Bin .../src/{images => themes/monochrome}/clear.png | Bin .../{images => themes/monochrome}/compare.png | Bin .../{images => themes/monochrome}/configure.png | Bin .../monochrome}/contributors.png | Bin .../src/{images => themes/monochrome}/copy.png | Bin .../monochrome}/currentmodel.png | Bin .../{images => themes/monochrome}/customize.png | Bin .../src/{images => themes/monochrome}/cut.png | Bin .../{images => themes/monochrome}/duplicate.png | Bin .../src/{images => themes/monochrome}/edit.png | Bin .../src/{images => themes/monochrome}/exit.png | Bin .../src/{images => themes/monochrome}/fuses.png | Bin .../monochrome}/information.png | Bin .../{images => themes/monochrome}/library.png | Bin .../src/{images => themes/monochrome}/list.png | Bin .../src/{images => themes/monochrome}/logs.png | Bin .../{images => themes/monochrome}/movedown.png | Bin .../{images => themes/monochrome}/moveup.png | Bin .../src/{images => themes/monochrome}/new.png | Bin .../src/{images => themes/monochrome}/open.png | Bin .../src/{images => themes/monochrome}/paste.png | Bin companion/src/themes/monochrome/play.png | Bin 0 -> 534 bytes .../monochrome}/preferences.png | Bin .../src/{images => themes/monochrome}/print.png | Bin .../{images => themes/monochrome}/profiles.png | Bin .../monochrome}/read_eeprom.png | Bin .../monochrome}/read_eeprom_file.png | Bin .../monochrome}/read_flash.png | Bin .../monochrome}/recentdocument.png | Bin .../src/{images => themes/monochrome}/save.png | Bin .../{images => themes/monochrome}/saveas.png | Bin .../{images => themes/monochrome}/simulate.png | Bin companion/src/themes/monochrome/stop.png | Bin 0 -> 312 bytes .../monochrome}/switch_dir.png | Bin .../{images => themes/monochrome}/update.png | Bin .../{images => themes/monochrome}/wizard.png | Bin .../monochrome}/write_eeprom.png | Bin .../monochrome}/write_eeprom_file.png | Bin .../monochrome}/write_flash.png | Bin 86 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 companion/src/themes/classic/add.png create mode 100644 companion/src/themes/classic/arrow-left.png create mode 100644 companion/src/themes/classic/arrow-right.png create mode 100644 companion/src/themes/classic/changelog.png create mode 100644 companion/src/themes/classic/clear.png create mode 100644 companion/src/themes/classic/compare.png create mode 100644 companion/src/themes/classic/configure.png create mode 100644 companion/src/themes/classic/contributors.png create mode 100644 companion/src/themes/classic/copy.png create mode 100644 companion/src/themes/classic/currentmodel.png create mode 100644 companion/src/themes/classic/customize.png create mode 100644 companion/src/themes/classic/cut.png create mode 100644 companion/src/themes/classic/duplicate.png create mode 100644 companion/src/themes/classic/edit.png create mode 100644 companion/src/themes/classic/exit.png create mode 100644 companion/src/themes/classic/fuses.png create mode 100644 companion/src/themes/classic/information.png create mode 100644 companion/src/themes/classic/library.png create mode 100644 companion/src/themes/classic/list.png create mode 100644 companion/src/themes/classic/logs.png create mode 100644 companion/src/themes/classic/movedown.png create mode 100644 companion/src/themes/classic/moveup.png create mode 100644 companion/src/themes/classic/new.png create mode 100644 companion/src/themes/classic/open.png create mode 100644 companion/src/themes/classic/paste.png rename companion/src/{images => themes/classic}/play.png (100%) create mode 100644 companion/src/themes/classic/preferences.png create mode 100644 companion/src/themes/classic/print.png create mode 100644 companion/src/themes/classic/profiles.png create mode 100644 companion/src/themes/classic/read_eeprom.png create mode 100644 companion/src/themes/classic/read_eeprom_file.png create mode 100644 companion/src/themes/classic/read_flash.png create mode 100644 companion/src/themes/classic/recentdocument.png create mode 100644 companion/src/themes/classic/save.png create mode 100644 companion/src/themes/classic/saveas.png create mode 100644 companion/src/themes/classic/simulate.png rename companion/src/{images => themes/classic}/stop.png (100%) create mode 100644 companion/src/themes/classic/switch_dir.png create mode 100644 companion/src/themes/classic/update.png create mode 100644 companion/src/themes/classic/wizard.png create mode 100644 companion/src/themes/classic/write_eeprom.png create mode 100644 companion/src/themes/classic/write_eeprom_file.png create mode 100644 companion/src/themes/classic/write_flash.png rename companion/src/{images => themes/monochrome}/add.png (100%) rename companion/src/{images => themes/monochrome}/arrow-left.png (100%) rename companion/src/{images => themes/monochrome}/arrow-right.png (100%) rename companion/src/{images => themes/monochrome}/changelog.png (100%) rename companion/src/{images => themes/monochrome}/clear.png (100%) rename companion/src/{images => themes/monochrome}/compare.png (100%) rename companion/src/{images => themes/monochrome}/configure.png (100%) rename companion/src/{images => themes/monochrome}/contributors.png (100%) rename companion/src/{images => themes/monochrome}/copy.png (100%) rename companion/src/{images => themes/monochrome}/currentmodel.png (100%) rename companion/src/{images => themes/monochrome}/customize.png (100%) rename companion/src/{images => themes/monochrome}/cut.png (100%) rename companion/src/{images => themes/monochrome}/duplicate.png (100%) rename companion/src/{images => themes/monochrome}/edit.png (100%) rename companion/src/{images => themes/monochrome}/exit.png (100%) rename companion/src/{images => themes/monochrome}/fuses.png (100%) rename companion/src/{images => themes/monochrome}/information.png (100%) rename companion/src/{images => themes/monochrome}/library.png (100%) rename companion/src/{images => themes/monochrome}/list.png (100%) rename companion/src/{images => themes/monochrome}/logs.png (100%) rename companion/src/{images => themes/monochrome}/movedown.png (100%) rename companion/src/{images => themes/monochrome}/moveup.png (100%) rename companion/src/{images => themes/monochrome}/new.png (100%) rename companion/src/{images => themes/monochrome}/open.png (100%) rename companion/src/{images => themes/monochrome}/paste.png (100%) create mode 100644 companion/src/themes/monochrome/play.png rename companion/src/{images => themes/monochrome}/preferences.png (100%) rename companion/src/{images => themes/monochrome}/print.png (100%) rename companion/src/{images => themes/monochrome}/profiles.png (100%) rename companion/src/{images => themes/monochrome}/read_eeprom.png (100%) rename companion/src/{images => themes/monochrome}/read_eeprom_file.png (100%) rename companion/src/{images => themes/monochrome}/read_flash.png (100%) rename companion/src/{images => themes/monochrome}/recentdocument.png (100%) rename companion/src/{images => themes/monochrome}/save.png (100%) rename companion/src/{images => themes/monochrome}/saveas.png (100%) rename companion/src/{images => themes/monochrome}/simulate.png (100%) create mode 100644 companion/src/themes/monochrome/stop.png rename companion/src/{images => themes/monochrome}/switch_dir.png (100%) rename companion/src/{images => themes/monochrome}/update.png (100%) rename companion/src/{images => themes/monochrome}/wizard.png (100%) rename companion/src/{images => themes/monochrome}/write_eeprom.png (100%) rename companion/src/{images => themes/monochrome}/write_eeprom_file.png (100%) rename companion/src/{images => themes/monochrome}/write_flash.png (100%) diff --git a/companion/src/themes/classic/add.png b/companion/src/themes/classic/add.png new file mode 100644 index 0000000000000000000000000000000000000000..24cc027da8949678a6a58c8d3c106cc95ba45ca1 GIT binary patch literal 5539 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 literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/arrow-left.png b/companion/src/themes/classic/arrow-left.png new file mode 100644 index 0000000000000000000000000000000000000000..759e589505ca108d54c3de72e817c03b091b3c26 GIT binary patch literal 14365 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 literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/contributors.png b/companion/src/themes/classic/contributors.png new file mode 100644 index 0000000000000000000000000000000000000000..276949198334835d99664dec55ff8a6de3120063 GIT binary patch literal 12829 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 literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/copy.png b/companion/src/themes/classic/copy.png new file mode 100644 index 0000000000000000000000000000000000000000..2aeb28288f58ddffdd1d75115f170c5bf2773814 GIT binary patch literal 1338 zcmV-A1;zS_P)3P|jKV4ArrNQZsr&q&3Fam_48Lh`MiYI|sB6GiaYuZZ? zasnKC=d9Ws*vOa?K!llv;~9}LDH=;*C6q)snnH7j#=aB8{{oN_lX)cZ$XJrkAB0_u z!sQ7f5=*1>!|zQrby)$h>)1Bcke)jH%(>@ZE)hRgo<&7f4Jw)5udTzKv5Ch3thOcm zx#)*$6jZ zxjE=2CQwjNfFaFqeBMc>`320FTpYmRPeJsB@I$Z8%>Zil0#HL{*yW1HLMx&9BQ>hew>g`42C!b-4K{%G& zPNKpdi`TSeSQ5jt zz}D6l-wA<00HP?u@AqSEZ4IXsmC*dI=c&nj!3&r@K%3kE+d(!rH~Ds?RumQ0==)XR zsU3kw0Ovao0D#OTfFv_dBoZhqui^lIxB!co0iZTo)dw&I|ClF}JUvZG$*D>XptrLF zi9N;m7cj8^d~x*v0Ho^4m=ue}P^PGYdPu;S8Mtc&=A4=P=T~F|kkV6X0*FSV+&mNt zp}4dH*9HaLW{2dU0UTt+1SmUX21q@ea}t@;xj-PrWmUM?EueooW3GLWY2c%FnE?J> zJ*6hCuC8*3w@NB-xmUnF8@PU+0q)ELXD;m%K&qWYi;j}haZKLWGrnrG9>`fBl6@D%o`^aXzvlAyk=W}Pc`B^ahku5Y4`j}CIOJCBx$u% zLNX5qgK)WA+>l;M=(ES;f!poI@e{8lpM9a6Ogos0nT|fmct-%0O2q-B6)w#;8B$U@ z_bIi*;ou_U#l=Mq_2TiDT=X8flj*JiEiEl>>0qJM(w7a5mzS5}^Z8)2+4y~FX^BG+ z0F4U^3(c|s(4vx3lM#*SPTzP`J2hanT6y)<3jNMtFeLKw^6s-|9N8B@Q&W>$nrBK+ zA`_~b#ukg2H$b09M@J)VZEfEC{CpGp+d-zXy_)|gKy!05p8`rp5L7=^KR-Xu>(*#A zk-EA%=fkvJOdl{E&Bk~~0Hsptb~>HBVoFMHK9sb+zTTOWlOvfHXH#`n0F8}}Zi~f& wfq{WYZEdYHH#b*S)7=30e@0BgL78sX-$OZ87=>`i1ONa407*qoM6N<$g6NH5LI3~& literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/currentmodel.png b/companion/src/themes/classic/currentmodel.png new file mode 100644 index 0000000000000000000000000000000000000000..35a37b7667d5afecc91e54a0a6300d5aa41da84b GIT binary patch literal 10941 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 literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/customize.png b/companion/src/themes/classic/customize.png new file mode 100644 index 0000000000000000000000000000000000000000..96259b922d51feef16b54c1f15a838fe4af069e1 GIT binary patch literal 864 zcmV-m1E2hfP)Px#22e~?MgRZ*00010!qa{L0004EOGiWihy@);00009a7bBm000ie000ie0hKEb z8vpWKWGzC7y$6^e9}WXbG0g_^vJc4 z!L8?(K+F{!>fqYJK{!#`!Kw!xlF*o3o1u$fCaI)UaB%Jdt_xtVFxF)(x6fm)ZBc;S zZtAp~V7Y_#x|>P*0JLtLc1QPe2c>oQsp%mY+F2{P`nt08!O7?t)Q@Usb0@1WDoVvE zMkE+Vb4}w_g;b~=L)hLMJ?yAqdy^!oY9pK+=K8Rkq%RjRXz}gwS|_5_zVz-GP&dG=2~U}VLmIMiBMT<3dp;5 zVP~hhcziY%t;71!5QvDTImH5Dpm}jyA%d72XtOBaT8{12_-Lq>U@cI#qnffMB{?7PSNM5xgM? zrr@?GkBd{{<1Db*B*!O=eG17E{=p!3D9%6`DaOe%h@w&{0ptceQ~U50?*PTD#keY( zp!&N3C_NYwD^ywIFA6H>y_k`@D%(VA6tqRo^%)kCr=XW8L?=BGd7RKB6x9GM8fazWoJ0(1!|L=@Q+aTEb7Mu4u}WZlMQB24&|#EVDBq0{%sj+Z+)GGQx0 zAcdU1Fi0-lfEhqCt9ecIzWZ_$Xk-SF1YV<2^ak#QNA=LXgUd}Io1OMRbT7RYGCd%P zKS-r48v%?ldBMA#h)c%T#wHG+5V`$A{>3XcMvM|%P6Cssr>70f(>b}AV>T2D(&VEn zK_HANo+{rrN9){swakg0Ktz^QgDWfxHbzJY6ZK>&doEN10r&$qzrYSODpcQMh*H%o zSOat&76=4-MOF34plx)*)N}VCzH?EPkgku=6VK(8gNL*Np3E)-)CS$Jnai-RudhD8 z(qOgQ?SS}sjv4h}*IqNacG`39XxPWcN1v;!unrFm!4QYC z_Acj^H}`jQVc5OsUVtxVnxKZ?sWw9Q@B`QxpVZH#=NgKbEq?xOmsA>SUtb@%(9v@T zVsaH$PQ-_o)Qm6`=@qvgI2;Z@q}CZRo`stQer>5G8e5my4CXEh^CT4CHjaC}9?{K0 z$O&($1U%8bR;v{dcYhm%^O9V6PFgxKporEb{=Djv}7NhUQZ#8TNvL0_NhN zpdjG!cwn(uKwDk``_Co}Ev8e>XOzzgOoQTEd*;Gmnz9rW3I&M8V#v(QgrcG%P^;C@ z+1bfp?EcBQ$=j!OF1OE1fUdXLDR2(JYL~2dh{}J0;wgy^K9?&YTb2(8W8+7JA12t6 za%7Hg8ovjl(FiTAE%3|0ARIXHz6G;l!311sgoTBKM%*UnGOR4mGqn@!JL9_3Gp~Z> z{(6Z9p5FXo8}~etjeBORPg}}0?N~!YJv1~lfTgz=G8Dzb^Xb54Jd))oo;F?OoGLPS zee{DaT5J+A3>zitarZCFC+`J^U;fkNL<>x4^vOPTl^zTR1GKld!`H@^F|L6LX7M&{ zIA}acIyz>{0a00^F4~fx%15b|k+|p_1^WSy+Zxk*z z((l+8X-U2;oygOcJEspZj3vh3pSpKnaW$YpY_$lC`IPbC@H0!Ad}tF|z0RZAYfnh` z3=gmm{_}^(`7iFdNp1l4dp_;=2p%dvUFBG+@kd(qwpj}i9kWBpkvIuC`Kgv6`dk_f h&$IvkH~dc%_#Nkm8M#Em0nY#c002ovPDHLkV1hsWYZL$g literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/duplicate.png b/companion/src/themes/classic/duplicate.png new file mode 100644 index 0000000000000000000000000000000000000000..811691d98b53eecf99b34f425e2be025e88a4316 GIT binary patch literal 6684 zcmV+%8sp`OP)d15d$gHZY>gwu4vW;5#Mto6O)md5D`8@CQ9^Y4$;G1v0`R1E%zWL^xZ@&5F zn{U4P=9_Q6`R1E%zWL_cj5Sf}#lQQzr{mSt;eSvR<-fJIHq`i+>EgBa_TE9mFdl#V z?O%WO`R5<&2W)o$pccR3BOiIFHXe^|U9)Dj9{r2xa&GF;ix##QGFJ;!ON`L~qvfHayHxrG9 zR_eO`?N?rT>dyfUFaS&OhJ#Oh;?cJG^IN|5zV}_`RSDmwX`46iW5VZT3Z`KO1lAwWy64%0IIGVxscG^JwhUp_K}>X zRaI4T>{t&&L&=hVuc?W1{CF=TBS{u5nniniPs#n}%&DWRtC!=)dzm+HHU|%$W^}YP zF41U&!NFAS`QTs*A)uk5lA4+j;c$R-Iuin-KoZClD1c>IG7J9ja0V%bkK}n|;OEW_ zlgVfZkx#X3+eFh$fHGk z>4L8m6F}HDLeumDcKJ3vYiVhu{a7!ds%q-$qWOy~B*%`Pq`7%6u~?9BIKY`x0|-l{ zv8lS?7`;6sL?bcU+GY`p1(`LgmVv$`v*$Ko+lATwaAKIni<`@0mrff9C&`oU5Cwez zDM1Ky=xY-e@{09-5Qa~ z5ZHp`P!dH5u3fj3V9>#1@#02Kg@!oYnV_<&0;xzRObiaOsI7(O=IXNNr0bT8yC?B0 z-bo1IE5HS^rrDLWwARw!mq7|aDrxebYwJm;O)M+#!Kx~``kJ{&De3FUpeTZHw1P;q zunQ}Mpt-f0%a+&E)sZ3+Rj_QE+PVfZ8GS0JCQ1@ON{N(=Nk)8|zL};)bxi<(%4!u& zvyf6CrBb?K(-`z5ccrn=G>gXBp@Pqt3}!+YW1PE$0!Uv0W~hl0z>X6Fd)G~7I(kiyTnZ`=7XXL6vd&*<6qf6PVrFuR7~)9 zO0GQ;<8Kr)bIf~XskapEF2<#Ix%cK?7G?fZG5%3ynd3tF5?jcLC49V#Qn~@?9I#eY`T$bq8$oZpevpU1xcc`XMbi_W^GQzsSnvHq9Jk!{?CR>``R7h^`yH3% z%KWkf@G>nLjk0p(N?#{0`sA;DT;&;RZd(6IvpzE_XK7d z0c75xi}5Vk2$H!s_~6fo^3TO|!cJguBd8Q(e7jgffN-6=YzUAg-|XAPPJlA%P_8r) z{;HrELxM>YV4QY~Zx?w808kWXwzq5ie=0DM_~eTQ0B zKBS)n&a@v-LTb$KFJ^?Oz0u&_k%H)$kAN-lZ0y()HKvmTu0{GW%W~jjUJppyH zC4_Gme;HUR2av@~DQE=w*v~iuOsxv=Obq!pGt0mdeE{JnfipA*D21t7o;`jJFw;YT z9MAjxBw%KdzJToPsAv=zX= zfHQ&wa+(U@&jrl<96+5&0lx9I-NZe=bm`kgNCKuwfJgr64*%-S0K4htCDY3Re4F`J zRsnwWgFXHgnj!YlzqoSh1UPu8hsVG6r~cKui0#CQ6FmLh_UR{qeibmYs{p?ba7mDW z=_-KFfZvB@Z{M=_>|O@a19S{_(2?jU*ysBB*CVB5eargu!a@iEJ^}vtfZMjs-m`nz ze0Ve4JGZmr)D9wn2+dW^0L-hJM>OE{TMqXfX5-ZJC@tLikVI(uc?QOSn@5+1G(7Iv57_TTw*|~rT2;hS_9kVQp69Xss;`T4{ zg9AUHt+tInS@b8Yn6;u{Ki!(#T|Qdlt+d8l0XQ{uidQ>cP#3M^zW3ZmTfEHy+|p=xBu{V?r6J%Z+-Av)WzybuHc&XWRUQegH0*Mzj5jf?tA_|jt(B>?&Wv0ykYs2 zJbfyrN|g-@Hn6H`6&v5#$g(Gv@x*OUaQE`N$NVOsUj_W0!M7}nXWxF7PyOOkG*ve7 z;MxZXtKsoIzVwf)PyAV9HlQL{!C$WWOLlhcN!_aAFb!f{ZG<4)XBF#@Ga^q z>d&tV@H>GMd;YiI_%;u0d4O9N-^vw@SD=|%?w$e#j~<}UC3`tFe3GF|g5G2=88gkf zWd7d4RiSFCLe+$n5Dl?L=2kW{w{qSX(A{=|^W26xRkQin6@ShT-}+B(e)?v%+_UBU zLV)zaFYEdL_WHl^z?KKNsqH3~)?bEUId@(4uD#8Y;LPwT4)q=2#NaVBGgCm2|GDmA zKCt*sRy1BoXQG|$C%5r0zy1Opi6e9j9bxww=U5A>+i0z6V?oVAf=US61Ag|gE*j?} zmw$+74?N3%-TVo@eC=1t=Mod;0KNj0_WT!*yvPGv9$;0|N-nEkjA^^K+_fnn!IAz$ zym@9fqxw(|bXCoJ<+gi&$BKshOx^tIR_>|(Yd)~}&$#oM8+ogDPtMye;Mqz6R6Qa^5b46XUyvI(YrePDb@%gm6L6%CSp?&#ryA0DP}ihidrlpZcMvWBJ1t!m zFl2|7cU(9G5wjdd9aIymk3p%nh8I5MdOt@(i9UYd%TP_ z!mB5L!JeL-&iU9{?!4ACuR(?k9(w&jbX~``3yTiF4=@GqPp8v7@|(|58IH23whhbH zv0X3f8fj;5&u&NVW&Yj^xqLtrj>%e0q=tY}nC#g$Il0em+t5CIkfb@xs)qNVh#)o) zQG+b0U&PMdm-ub>HZ035_M?%wavlR3r8rYjt;cgM+*W9&b-8`bs9 z0=f2hZf>~yO~$04PyrN=vMBEBo^dXHid|>7q1mI(`3a2$HLZk$0lwe$IGUzO#=CpC zuK?w}|7-gnr6LreK30!~E_75zP#rbd%V{})v>Qn#uS-Xj6l(`y`%VZMvOiV5A4aQKvU%`R0X=K-)sQ_Spt+7 zBA)=*woN9JVbk#+pejzI#YD%p4Gs)FVTNT6G;)XH~!_zy#i} z>pDBSUPe_Q9<9a_I>UNDqeg!r7)3RDzzar+Bv4hSKmbp2Su&|q#}5rc8k|WU#}+!V zU=&q>*b>&d1d#q*zyt))G>tcUUvn;8FoK1~ndAu+#fi^Z$@e~bdipYlm zilpDR!NN)Wa-l%FVZie^Y@DOkswbodQ56W*(Fz17Ccq_L1!g;c`v-TSD4;5W5u+bl zXsFUd01xc(Zq#Lxf@y z2pH7PQX860MJS4hC!2u~piD3q;KzSW)9BMrqbi_Cn?zKRiI^An5OAUzKuoNN&b{V`M;`R!@KIdSJiGnRSI(eQvkM(Ksf)8(*jWZR`4V$ z0Y!qMSh?g+N(!rhcUh#I6>&m<7knYWvP>jamcWxCfZqwUZQHGjPvjVm1t9N$^_Vzw?zNchQ;r_XlOamz12YRV>uE`dOFx$5j18FKzgQs zr86I3iahwH<$Q+e3b|B*XoilWz{n}u0b>jSMn)1{-sdeXb-cEHz?&83Pi)MY7AKID zctMo;TmFeGbKDZUm-*Y+t1QQCh;fgrX&D9wlbAz`Q0g3Dg|rBX07%^d+LIubBtY>b zk(kDM044AJmR&gclLbGQ?Yp(V$d-SAB?LhcM7Po?z(_mC039$22(V+v&v#yN#Z|Pl z!~wYehSp0u1n9a(e}9y^&THw^>oB5yAa!Da7-@U3Kmp3CK#4^nlPw(;IaUD*yx#^} zfSHwiD_{3#6(FQUuq>ycB?NSBWebo246lFLFTVIpXM6jJ=Q}zE{L~+3E+h~L5Q#)+ z8eNSd0imNR3ei9;4}NjNHQutVqGe)}Re<95vv>Jdpr|S-NB|`SRh4L<0!w626wrql z>e@;NkS->G1(=UM`spvd_13ZDhYz1a*R4yM08&bV!61=Hl*J<-%xBOfi3KVNtD#(3 zrIsiU$6YX@PHjQRm=(b4IL97C21#Wgjt~Yy8YmLFck>p`Qot0Tdr!jz^s{H%dq4H5 zoA3Mdr@wUnk|kH(*woZmr>d7`IpC}a(nutRNt~%7RI>nk?g>nhLdr@iWt_C_goT1o zP@EWw(xG6|3ZNFP|MN(HF5CCCe4R&0Sg8X$K-x;=ZWs5?57`6^0;9z_fC*?o5*YsS zmp}6)unCBgUqyN;HU^}74dSi0u;P9Ho7)r#1|vk2T0*jc33RdCX*z{3Ia-)kkWub0$n8Xz?UO|nEYZJ@2X(Sv+~#W zWcyz44~Q@!r5?+Yn8HFgopaJtXj?zWH(fmY-2cfeCV=4*KzP89xdc$Sbbno3&3eqM z53%W^&v3s~AZ_;(k#kU`BqZY?V`!ouTck@9pr|CAREJM?pbFvs4pDxUk8OKq`CP9L z%32h=0@KQ_0_sO71`5!=jh&-s7z9qc3Xm@D1ln#G$hg~v%aV{A0xner$cBLkkm!Az z)bTC6vh)tt3u%z1hZ;G@mHsdhIR{gWV8{f>%=jb_l79A5%c`;;+{-Rh5yloKHYS#B z7I?ocB&w`NwX3l#>AVi4>|rc9f?~ta8MPVW@ZC8pnBUOG0!ySx(@T{yE0+X@lq#gG!WJn^=>Q?6<$|vuQ4s{#&;MaP z-y8QsyZ8lZ&Y=>;#&o`lE(|Q86A&R3S%I`-*p}jWeHJu(h>X>nmHzbR2YCn>cD+C0 z;%iX`&}_mdJ=>T1%#Z}aKs_+OWZtM!6(re#KuCPAdyG{NJ5SpU|`vn1HRk$Pg)6vjc!Z}OcP#u zjBmd5zjy&S4xDj`ppVx$Gvc34~BlGT1UnNQn|q0w_|T z2o;5}J3{UVqYxoL1pz7$ND>@kh(jbejKMGgVkksV2q973u%RGP5J-fp2hQ3alax3^ znsd1mef67sf755#>;iwb6!<;?rcVMhOM>nLBnLa`Sh9gDA~7ODF))<@R7DUL)hL8f z3xLm)LFQfyq7ZbS2ayG85hy``EC~b#X+}ATAx4~z5U}kDzW?lh=choIEBpP~tba_O z!N+sjDqv=baP|PBdpEIf#ceFEswb{0V9PWnDO92a$r2&20)^m*kS+-v0(imCgPsRp zV3HtsX_EtzRvHOR}qeS*7HjdK%gQ}bKo0{lA#}s0jzv3N5?+>?JwStdhEb2 z+3(8!X}95%bct&F1i0{Kx*2tLSg-$xeL!8XE&iz*U4u zfeLsDpt#cS{Nk5}&M+DJF-T%#U@(eF#{DfK z(_N)45C}#F^nsuM>*=3<{>EcZ9(W~v!1eepH{ly}V}4oi{W9>v_6Ss*Nuz3@4rl;s zfvV-##peCRKQ6p+*?SuLiwq_jhxeU2ux(@e?(co! z&~CS;?+4DgBRk8dxgl!8MTb5CE^N0@!I?LyaETCiNl@*+7Fqw%c?;Iw*0N;T>ZZ2Z z`kHvt+`1;2i~G)Wi*S1c{ry9OgMC8-hxea4zWc=!N1uIS|2wW{kGf@DzdHuqE@j$V zp-lFqef#~WLC95vN}$RmK_$-QTG%B@fczwzD5^BF<)-0!batk81Q>EbANBxmOxEjt z0{mgrAUl5$bODdLBj!FvC_mAbtuiuhGM92aKk1H?`?qNU?-Sq;s|eCVhU^Hruc?fk mYbm7w-l2OEJo|i3?*9X%yul%t4kxbw0000Fo&0JnoK=-Fp#z5!(@7@9gc}0}7~lW0b)!Fc>mf z5(!fEdU7Q(VY^A-c=u1&QQtvtSap7NiVKbUwbXtifI=DtrG{t5AlJq#ipD&5&*qgI z4kE_p91Y*P#r7sGobrY5F@HV z;9rO<70j!86UA1psdK$^`R67V{j$e93_+P=|a&Y{b&3`aoeuz+#Mi8*ll z`sG~EI139)^WT+RUt?BF;yDH8sFzK$rHzj&Kw6y+PUG2-|4Sb*4M31WI(D97lQigf z?B@)|D;-f}`UZ|$z8sTF9EcGM8l3zCL?Z$ZN&j`%{|Z_wO+=#5uN*AIXf1CU#RTa!YtZ?$K~ z+u|7X8xT?me*Tf)KQLBSX;{Gcp%A?8te5u6Ld|yU%$+BH4g~E7vcuZ|Lqn>9f`YfC zm{`tt2=5`Yt({##T^)0pq!Kk;BvF+wIM#(QyGghaaC0uoNDfPyuzv6Xz?_o=-FJR~LrcTl*Kga~^Lzny=?XNW>vn@om;X8jH`$64YRMlu-y6A@_$;rw z$4-HAVpo0!LKlhf@-oo`1qNQz5t`IA#EVch9Sq#6dN?J!LvG6VlfG^T$8tL;+CAd> z5t8k3m$og)2aGz==YdGETB0J!kSQ)qa3&fCCelu3&_cw$mc4J(_4Dtws1T-0Le8(tntC+S&?a1G=NYTp{pHo+uPf_lZ%t{^XTYk*V9`{p~okF z_Um7WPF&BzbCGBiTq%tbNr7E;j;5qSWKjU|)L>`u=vC)1-6Rf3bJ~O7-#k@L4l==w zyzl3eYboJ_WeH|dDn=V^i2e&g0Kv3%xVcnFEe74XDh zvIsO_XWXVS3sRaMNP|P7)yj9n&tD9wyyy8UgT@ekD#(D|fxtwMb4(Wc?OkpPlnDqD zk`}`pYw}jD=vSP~iObHdaXPok3*pm^A%VP4DnmO@+;P6Qz|zXB-sYvc;GqM~%)=;! zqM^FljWfc%sO569!M0~z4Zd{}KE^X$EeQri#0r(RKM zUugQ@rFYq>zi$+{(D;;Gq=p_Yi1!y+I<82)$CR zO(5C)kajw5r9BbOaY$vR^nL|00T-NlU$agEa$UJ&J6?&j)Dn`Sx`NW-0#bl3$IGJBX|)RMfoO3^RLAZ@i=6tMg2j^G{I&uM#L_@v-Wzw48NmK--%IBvwHzX(R4qjlSFMw?3LJ z00BVhQV?UNgmlRvKQ)zLkx5rA@2ALKmhB89_rMg`+Ojf(Vxo{II${8%aDyZ7IQUqz zCQNI>s_>1;vS~=@?+%#c*zpS}6skoPWnsh2dHwqJFP(sxt8@WDo2r=Oq-3GYq}4=u z!V_WPFDe92?t|bIAw)}6xc?>sAcF*9eTmCo4pr$j*f}_=H=fXi2=V4{DqEEOQtR#}g1{%fi~I4nH^{;MYVWmxJin8aO!82j6+oq16hiYeQG7NxV9k}%1B^uW zupN5%sX9$%vNyjL10YSE9~y>{xg|c%EwY3^SY(O<4JAZl=o2-T^rXtapfkdCZqWY> zB?wf}BrB>DV<8XNZ9=t}48Q45Obgxl>4LD7>VZf%e?fftF-2J$i{2C8@w!^kbL__e?gGQbtG4dQttrO(BYm47jr#zf`3qf z=?YqgLyOSj^2T$kU3IABc~97OI0y;mC#DlV^c{#kgH&+Ut9Amw3KQ^y0#p*cp9R+C zIXtJkx{&?`$;iikkIkTdb_KpvVcJmS%>G=|Ix{mfcy>o`&2qfN;(g!NOBujD=?%Rp z#zUP9AqnpqXNRwCAef=V);ssxdoT=G6*3fN0JJjnRnb|kPXtZDe<8G^&8IA9kI%g2 z-MhyMIo)+ZyAA{wFmd7EJaA%cjCL`Q8?>0e{!k{L zw8QN*H7h&2nR^x%a^_}cG9F)MZp**w` zjg>|Qi2tGJcBHsE?K^zr!zX(M&yH9l#68GWuh9=OU%q>zt&+QzZ%vvH+r21e2-i~> zj+TDe4aE<6o0!mZtN6owS}%^pGo>6OwPnA@8_B2V6puYO(xjhbOiEKJ@Hh&Z3z)cR z@gbGP`RV$BHo1TW1zAVXcKwyz^qCD)ViZQg zzZMyb@SK+U6-nC&VL5g<)rPeOZx-{P2QTlh`@Mb34Y3TYSun|@ad}}0DgpW1STqRl zmY=)-EwpU+tYd)s612AdBely5k_#)ttl|i5w*$NVg#n!DABhmUWJJ5KC$N~f z7Yq<%2ukmYZAsDktpac|>TV*(wGaGgz1MWkEDyuhSrI3;-v7jzUuR=>1zUP=icU(; zX0xW7Hgw;jy2Zx&Vl4Ws%AOsmWl zR1oO#2r-T1gMa)Z_;tROnqb|HAh zebjct4ExD|i}cMk#isswEK5h#-bNWOPqdWT<0P?%vtMOu=LM+pKHZj zx_;|DB2&?b0>!;${)>%-CUVHUlX826S z|MOnh19wYK7oA;n`1aBWYKXC%E}jN=pJ$6Wb7>Pp*>lB=^2>}yT#tRFaD;lDFpBKZ zcT^|C(9d=WDwHV!_dS0<#TS_QkLdCk-apmSgntkUfP;vG{5PDZ@)0mw;>5wL5be#W z^VccVS{2Y=uGj6M*+xFu3Q`!Eqz;`7TAGx$MvAA44gz8*>v1*8IQr}cKpJv^ZuJp)q zu(Wc#ac?-Y&+5||NP3LGY2zm z=0nadUju57kZ3s>;v>)4Af$vv09={}az%gN#Sv5RJ4){@fAOte@c@Oi6w56k6Urfz!=2jL-E2%#rggp z7!W6hl8cVEt>nmrA9nW+$J2HQ1k6%62BN_3vB$WvW?aflj#-e_FVCA`$9?R2b&O=_ z&YH=*>;_ydD+Ri6t-!IYMwHU`F1}zW`$Iai>SxJU#GZ*3Q$7^eeA?ltwfJv6a@5cf z+kraY*CyR%06zCF$?)6YEuiYh*)==eLz8Xu*8p%X$`y*#v~u&Yw4}KF4}l3roW2uv zK7CXrDhb044sOQdXTY3f=+EVs*4{0$K>B8;6ke=;nPZEQv8A+lJh+A)%(e6(dSo4g z=LnyR!m@6hr@(HA507G+&_)6CU;q-!Kqe6YO<#aJ5!MasvGQrAAaCd$6r6iNuo5sb>B zN`&yX=L}Wk%A)&aVOCun)AkE zF6qWEd_t`M-)_8P&FFJl=|_R=$N3z_!TT?2U8Gf1!9175L$W2+c|&T&b7n>5E9QrO z0-O+P`3Lb}tUdytbzy8|3jw;Ww+Zddb@DIxtsd;S6O$HxyqB8W6U#x+|t;B69I?cGC*Exu!IFxBYLly z&5T@Wb~#&`@Np6-v`PXGSPO@C{cu)}x=4KL;o84k} zd=Lf!-zRehqq=tE5%uGSqj%)JxqM3WZgQ(~`QXv;AE73XZ<=mx8*LN+T5{6aYb`HE zJ)_5E#f2!qxd}PyJd|9oW@8XaR29czzcu*QEb4jP?Sq|+=4Ft}WLNc6)^*!2s;Uov zj(n{D=dGi~RiZfqEpEpeo~ELdh*;Bv#|y!k7hsE{41NK#uSYNQye5XdhuM)8_VogD z*2n=6!bVj)xe-&4?VFV>k|fwTny`V?gW}i&;PTNJOU>@qJGGQ9|?>x+{$kyXRKmdsAnTHrsPYkK3%01yWAQsRA z!Lc#n5c)jqh_p8;!4# z6&%2S2Hs-NB_pArw0?*Dj~~rC$cRVoOk4G=AK?k?jIf@n@2pS&Eo z%Zw*1Fqhrv?X6Y(`%@Im95#90BYAL243S5dE`eFBe;R9$4O?v(#ep8v0;sfQ+tSs9 zIi8_c|7q$j51$aG~gRr*MkaKguI#K8f zCf&V#C>#240Kkh)Yo)o;DZID2PB;xnmwv zC4SuLt1V}NW@3^NwQ^A;%8yM-_s@3^wWzWHf;Tk4Z%PH>d7N`d3sTO=ZVmZVu^6*BkBlM-A_e)NQ9!U%U~%XR7!X+QZM?zr-O@?xFJg1 z%#)s4pi4}UeLzOIW|NB(npB-XM+40k6O-nrP&F4v8)e~W(S&ROh1@_~g9+)K2CfCn zM~C8J;0SN&sVOkAns;wh0wl1kr};RD)Iga59P)>2XAlNDtkm3iv?oy{5){x_@X%mBum5yG0KS#TEeIb$Nawg~#2 zLdBHjFuKEDR{Uh?xdMNN9_zhQ2h2+YC>poMJ1iCS4nDcH*=vRurbbjVV~-LSfTlne z3T)3uY0?68sq%ti@h!L{lH1b$RO~o>`U@ZI^l_D1IpS7?J42FkYd(v5MjVh`R>)v} zUz*Pi*qc9R$=^>enU&9{PBWtk&cxt02%#Niq^P53_%ANJ5S*;YX>R)K{`(|>U|JxO zhXzztpX3zo4+w=0;%c4E26j7LhLb%|FJ7lDR{0G8q{)VKKJy`WTGSOG*4T#~-@RPt2_G5AMzYR-_w~1w&F_O`o^s< zz*`uHEU}n7ZNJcL*3GVnnK@pV*9(K^Pg9F4D3wM( z0`eyh#`)XVqfz1c1N(!9WVgeSUH;82x-S*+%r*j4qgfQUleO^@c34R-@I>}1@v}8x zFh`XYzH61`t^x8yl3|FD%o-Kg)cv7HzaiY7mGN@=FPca7HnmHA9NelyKS_;VMo!!Z zkhxTM&07+ueXUYhDs0Ts?_>J=5u=UxNS*Cj&Tx+lI>p1{MyI_k2Bov(C#0rBR#Cd@(+Y-#Vl z(%3q%hkFP)&XJSuT+9co1+2MsLC2DuHYTqPKogy)(V46tG1WUGXzfO%;cs=!fsxN4 z_~J?^NnSwN!vxQPMYrBTcaOm=vtE=B+Q0kWEiGdj9M-@FiV^OFE9ih_CL4nic8z?_+a{9m=%V&PUnT z+1zUB0M1JWOPC4NC}%Aj*%)CQ`>Nma^SSe$q&sdPy3v%a0(!TRMrc@3>67oxt&B6Y z#~J(9WOZ~af^V}L!w8B@0pK48sC1ove#k2UhBsyngWn3{z<=A0zxQUo-~LjE(U)== zcielJ$EGc_@prP^lM|^QXn&*P{R!Q0ZkvdO+WT1AsxK4v{$$C4`Pd!)#)5Kx+VIWc z)q>LR^!#s^Os%ZQxfCCEg)W6jCWna|KF+*N^%hqz3nstJ%D)D^E0-s%?K_%C%^snV zJtW(#KI~S#y0+~Q5fO2o6)M}DlS)9^B?;CrmQt$$I*(Y+f8AWbG@mWRYLi8uZ@a!^ zlX9R@cMP;bS!5HefOKwA5P~fl)fcwlax~43$0AHU%28|J(+#NEpR=24>b5p^|$V^Hy}>kDgJBuX5Z=8U}FGX{*VM% z?-;+`ymzlHPH?!lXze2A@I_C$u*o+p83n05fvL)W-8^{x-7C`P8J{I|$j?|dCDWQ7 zVEKh&4W~I$!Z&CC(SF_}U|4mQ{LbH8e=-dJ0jA!UkcE*gN#3kzq*L^sZg*tKrH;Nw z>p_F4_bfv{<@h!Q#T+YTl?4l0p)C?@0gPz<{Tr7#%02DSUzET2yloI|yQzkt+E=y> zhm+mzLZr$1UZ1e%FI|Po9r8!XgsMj{vre=u=cn5jPVfs}cv43Xt!5)FdFpY>l=SEp zl<;}Dn6+L_w#%ILQ+11VhP!0a$v+o?@FhU^czb@T@&x_vp`jM1lrg_WsW(q7@5B6p zi00yhmCeFdHgfooV-I48pW!=!E~@gjz&8cRxEkTV)t`g!`5 z=SOgHCA^q3^lqAIFl*o4Dx2+a1Fyvo7Gj5V!(;-Wrg3_XM$PPYUYzaR5RJSEO@bH2 zuNaVJYzRpF(Q?OfRXt9dGAyU1@W8DX_*@Qkf0(xt)Y+_VGLWvF|7?9I3a_s=8eM^( zQI+U>Kn>6^ukb?5O>xThz>`CZ$xhJLdmr!i8Wf%%?#V(K z^~5!&`RX<^tcRKr=K0!mPyWVJfoF-XJV5C~N%H`4`FHXKQmfuy*orcZSgkcB;F=zG zbG1D{;V(Np^tS1${&Udu4E2v5Z9W#{Q~dpEm2B}WBf$Oe+e7M64ER$84y5#+#t)lb z23%{@l@-hK24IOAgm{o@rhJPH{%T7&qJ$H*R~{o^(f*Ga@GUl`-*@j8$;`wSN3)pU z9U0H?!KZ$Jy1fFiQ{|UnO~1uY*NrYXrrkB31V=NO4 ztVoypjCunvV;QLgxV86xNEb#44H0y%g-H@v5-9S7Tc{_3>|H{tn|=0|BF=kZF8E( zsC@S*$hdtcnlXe0rDSn9P#J(AlrzG9OY(?c;*YaE%1ErmxaWi4&QL9tP=Wt|Za?y+ z7CnJ78oVKS%A4zHy>wHOhQuv6LI;vQ$hDQe@QH|zEV)c26 z={EqX*t?3?j5~J9;1o1MX&=%6ZanpTcsYo5$v*n8^o^LVxQPj#ah-c93@v*tGAo5= zXFms>2d<94@P0naI5nYkO$S+5c}*CEo!GQQ{?bKm_6zt=_h_DGeMW<|w;l!OYZpJN zX8$SY)PR4BVc-vsx1r~|dum3C|I+m(2gBe@PD{zodz|NdX*lMfSVAq&H*5M!$z7dJ zo5!mqQe^A*qodxzxI-_FJkK4D=&3BmVtv>7Pi*pg*NhJ7%TRm+g&}nrj!)z&5jc!BMb>vSKLJ%`_vZbSanR z^mX+$Nij~9C&Aj#cDmU?`nJ_M#rJ79 z)mlv!@<)kjR*#F`7$+?ZS^oFzM)-R=K<4>s)wRkQHipP#Wh-49fKX)or!Dl_#JXd* zA^_om2>3PnFqvlZ?zbh#Jg@@+Him!0cD_~#8!F@T@72-*x6=ygARK)3f>jVP1S_Eb z&%zaugMn4HJF-y&0ilFXX*CeApxNqQspsFPCM`9l4F5G-0eafT KS{0gT-2VWDHGHH1 literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/exit.png b/companion/src/themes/classic/exit.png new file mode 100644 index 0000000000000000000000000000000000000000..5319a948051b1c66ca424d6969a1ae113bf98731 GIT binary patch literal 10601 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 Ef9Y;Vi2wiq literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/information.png b/companion/src/themes/classic/information.png new file mode 100644 index 0000000000000000000000000000000000000000..76b6d5966154532c6ac55bc80f92c093cd1cf4e9 GIT binary patch literal 5244 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 literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/list.png b/companion/src/themes/classic/list.png new file mode 100644 index 0000000000000000000000000000000000000000..fd4db26dcebd57285bbc529012c2c022dc17e0a7 GIT binary patch literal 20365 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 literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/logs.png b/companion/src/themes/classic/logs.png new file mode 100644 index 0000000000000000000000000000000000000000..8dc7ce194f28bc91fe8a9dea10efb42b92d38e93 GIT binary patch literal 3302 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 literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/movedown.png b/companion/src/themes/classic/movedown.png new file mode 100644 index 0000000000000000000000000000000000000000..2632877c1402cafaf4ce9b2fbe8118b65f8e4f2a GIT binary patch literal 10774 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�S#Z%9aJ0LKt%aU^)%pD<3U#_8B|~R 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 UCKEzA#sB~S07*qoM6N<$f&kr?^Z)<= literal 0 HcmV?d00001 diff --git a/companion/src/themes/classic/moveup.png b/companion/src/themes/classic/moveup.png new file mode 100644 index 0000000000000000000000000000000000000000..447f087ccf99d69135ac9ca8c5f19f01a4785ab6 GIT binary patch literal 10463 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

Hxs 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�%pHjqdo>O^FXV3n-C#4W1kJf@K7ZSP@H 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 literal 145634 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 diff --git a/companion/src/images/linuxicons/128x128/companion.png b/companion/src/images/linuxicons/128x128/companion.png index e268b289e5c8162bd6a469308bb65b5103918db8..6f1616ca232ae048f09f0e224f421ed9ea1123a2 100644 GIT binary patch literal 8690 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 AL;wH) diff --git a/companion/src/images/linuxicons/256x256/companion.png b/companion/src/images/linuxicons/256x256/companion.png index 6049cba5c52dcdd376298f690876d2ee6a67b38c..684517666a79b3c8069c072d45e1ba5b7376ed96 100644 GIT binary patch literal 19094 zcma&NWmgB}#1PcVW;1+@f2o6Dm6C}6>AKcwtg1Zyk-7QEU_~5P++}-`1^SXb) z^M05$y;kq(*=0u^RlEA9qP!$J>U&fG0MMnS#FPL41iJ(Q$Z)W)X-pwD*cXbOl%^v9 zyzBk%0~)X`F$Mq`DQPhg6}P2hZ&Q7pzS$c`@JUtMY{e(|{x>?T`kNALw7)^3)hK78 z6qG?KYnW1gvG4qa{bGagWlAV>Z?Ta%aS3$(;JIF}skh&bWu6WkRjH}fGVPyKU99eg zicFnA(j36@tDqL9_cDcWe-37Yqsu!rl6a_eh*QE{QNun=~~EeM^r*@|eK} zqM|IE&@#_rm8YP}GhiVfNO6c)I=W!2oUx$~Ba`WnG8G8_8^Z@5n<#2I3ZW-jyu{!? zkd-8N{s)@AS+W%U;gXEIcVJdtw$f_e+lB%4J%!qKsegyU#l{9S${dxZ#|zplMW#&` z$z}XL6?9+JOs38Eozg;TZ`VrCU~oNIX|i4>$ly|&<4hBhrtf%b;D#ysH|_0XpV?=> zb@jrTmb{-S&u0TEKkRM_P=cR*;z4kH+J|dyFQpl_t$D_h!?+XTtpm2t6^jN&GAvQTb>_ctU5p=M8n+1?iKqP3TXV~+xCW!(T^b&jcPKB zP1gL;;r^REJFXR+?1zd29bN5IBS^x?SagNILoMQgDcK#>X4d*TB-onh{KU^+jdp~! zR|UG->nPa2d90XmHBXxe`9`K$FRu&utG#1aulD&s3j94YDWR0Fjs+ZUpOqZ_(vs#N z5E*l@&%cKeK+61DHlTqC7|`(`Ww%`B`pe%m3aJ+IAO$EZTjcH(5oH2^xR>(wY$I@G zlJzn;Gmtq%4Xnp@Iqdo?Gc^O1V(g1PAw}a|?6F)(0p$^8CFwvdHKfL9^zrgTObp$2 z2&mKj7@FGJ&cAnra-sL0Y6PA;o3!9RLMlMZLs{bOla)mkc=Hblfjz9H{5q}p zSH->)lgLX$Wc*Z}bVBjBCC>odiq_qlW-q}$o`>?3Uv?weKeSbu-;^RONd(s*3ao14 z0D9pVGrOG;+@(s41A46clLKTrZd*gDq)cHhwZ-Nxx}&5-@R%a>gPG8kvvQ|y0|W67 z*^StuO=`aOt4S$BXETQ&?b~lHS1f$%nai(kBS+GGTKjuZAKrjkHcY#`pGvvsxe*@a zC0F#VL|l5KExTOzi{!EYf@QT|8sK-xpWB62Jf40(Yg(e(avB!uZ)e#L+gDe5Ad8Cf zpBFD?ey|jB+uUy!l9p501u@Y;mM)5$t@Oa`*e8huQw}7i)r)j5$5qfQyLHZQ@jO_UdRNW>-x4l+kZ{Qf@vG-rv3B~CAUQknVe#Y# z&id`kH^j|4b|VZA6cxGj#No~s`^3PhEIlJ0-YEM z?<&0E`PF|->95I)+C9cnhKa*r{Bo!;B3B!$Ka@`7M}{lI`%^u@NJLEQPm1e&AjUEG zT6H467#M%i+uGueA7bWT|Bg5B%i9VSH*VI1M8(ltfina^4PK@fOxJN0gT&3vNNKW# zO`(P=#lJJ?zDN2sorXdLa0nmB9haYHNIgsaP)TwW4T`6;p)T8uj~%w}SJ1V4)#ZK! z$r<2$O$Dv2yy+z<2qWxCELgZCd2#Ahq?3VNss*MkoF>~Me&M7K2 zrQr14d>=$E{Rc?onc!0~KgDDJHLx)@fqzk!=Xo!Db*GOA(skzNZ?F%i+3=zT2H)$c z@CXX=bK6o7r(@12Dlbk=W|>iAaQ)QdSz6B(a zBVB{Y>RsJ|Wv|g)Q_;PfU1bIzgzGUu9Tya&HX@`Of`dUd2NohC@9BI@G=(D#{~23? z6Vd2kg&wO^LBv`x*g*cncOZCR4DPU`!NT}AXF2zRUu+^WHD*Brkm+@ATjq0i=r6eW zQT|+8==CA*ko;a)Yswy*8kq=wsR-|sWwD_sYxMi0~`A9k;SxxEYo8ZMnNfVwYx@r9!4B9iY$l?jhyYao)l3#kdtX z>^-Jv(|be7^^-x(mFWG00Gnju5!({0y=Q;8<&zxSnoS{v|G#SAoB9VEDQOfnw$Le0 z2RlDChQOMe(Jo#4XLyQI>Kp8lc$v*e@~4}pUb?2HhIYArJECr}t6mgm1pm~Ga3Wy~ zwK2sdR_!mGbnGko-`+CJ5IJzf8`XwMh1F2ASfp`&=SJI4xGFAZ>3Hlb6dnFs+%#ze z(8%TB{bLn&g4+5#-7RMm(=J4c2!lGIulp?Q;Yxu(P(n6TUvFW=oL5P!`srRBdUveL>%KV)kP%Xr zlvW`QVPab3B$;SNWe7g~QK<4g_ScJ3i^cExz}*UMptpgl_jZ9&QMz|W<|ud6II(-S z0trZeE8N6eR|?o0dyDi;raOEftKXv#%UcGSeE?Z4oYBK8QRIGp!$?PxvAvLc(=--I$w-C9?SMqDZLd8c6C%*M>Z-1>M=MV`v4wl_dY2G!&F53vpZ z$pYgT@5=XKF$>JN$tB%m?>jX8FX4dwhJHOSs&c zh+nV7hvMRk@Zs(o@*ntRz9@qf}q$vp@Ue<;i1cReYoD6_D#LE)7_rkDH17^ftUoyfTme6czJM>~Ilp^~LQj8k9hICwH@j7IS_`7k0{az5@Vgy4sb{k?t!;0zs~mOAsuqhBKZ^A$NH zVh!Qv2N(5^n0`>5>-{}`{wIk<)$WSIMEQ|qJ?LF=%4zF6E%9lQAY83-^SAO| zuhZjeKF5XXP_M^`W7Y7|8mCk70TS0G`hjiJB8x&J(%a~KrtIq{z1OpcvIB%-v1oBj zz?dL85uX4Z8x0B2$DTT|SZ&JZo3x2oGd5>tF7Gg$#hZURx$b(#*P>3lz())~!IW>^ zE$oAkpf1)92@cz<_-YCl)k#$=EOD{VS9{VOTqVGxB;sy1(Q4O6l6qxh~~P3z*%QLM`vNzCM= z&j^^Y8@It-2|7ok@3E0zo{H5^_Wtn%B}aAvQh&CBU&rJoD$-eeFHXJ{`|zYmBFP{|`lBGhJWP2;_%HR)@O&cAueGlV&% z)pA`2m7rwwS)sy`t1Y8ME-j^~?y+|BF-al-$78KCwzh3D@lF`RR5-h)Q(xbPm7mCT zxM5Ebgd1Qu;&*c;BP#Q!!WnJ^`KG9(i{a7ebU*!-4>PWPSmVn{uP)go5zeRCt%1Q` zQlgo9(%8@QouobYq74zsgUdqye>x}d`eL=hO2e<&MmvvDmu~|%ZabApBKFYm#5~CW z0mz@2(ciQfWbp{STgsF{a}N#E@)?|#YU=9hQv$ntpBv_gh=@)*Zr9pRJ1vXyc5M+@ zr`}FE-VA@gVGX#x1;n<3GDFbO<8})Z00dTtn=$DT1*1^i-$;bU-(4+TFL!q0IM^YP ztn~*3I(C1EOf%PcqLVmS*awingWOOrM4`?KET(Y;jlz6HTYExT!j*?`vY&G{C9_sJ%&kG6Fvs_epNN?MPWKpwt2~ca z0FK>YN1G^Gyb51?gSDh~jX;=K*OS>=Jwt~22k*}dWKPcidg#)*x#qpqLgSKH2(jRU z$ZzW_UZFNXpg)38Jz1lr#bwcs39fMq12UWAa7$u5FYWT$YVyJ&>%dtH%I3v~-O?QF z$`t?X=SEKE8hQh z5c`$yR7rlU%1QW$H-be*l=QHy|VC8xv)K1CL}h`$|kKwEN=$rbqk(; z%Pz~ls`^YsLq9=SqN{7^Lqhol(eCXIZiSALx$DxF#T)s6I#o4kwRKQ%*hoIMH;O)3 zFTL7LzP72c{SyG^cYrr5-%XSh=YjU`J)sz`)mt@|>ZYgU@)Q8eT#|rXB{Mx?_^9Z( z5V|G;$m}E*M9NN%VL~NH@CkdcnU}TSb8{Ic%G|o6{iA}Q&Q_Klmh8v+xXR^eS^Bnh zS=ng*Mv~UwxeB-nAbP`4qSNpMVA{219VnE`b>+_#AaTPAo&E4WJo`PVMFv*~o0HDg z^ZAgG-6Yu&lVYT=Qs29pI_s+v!X#uzZwR|}3H=M4B`r7mB^dj3MUc_plE{<}Zme;F z7sFZ;92{?k>_zjb6ES!=q;=(VIm<0r%bX(w5W{d7QdE|7n_@p{50EB(PyOzt$hMJ( z&R$<5wz%?njs$778SFl4w%_^P4eg&`-qKmP#lGu2jRit(9(?%JKyiB|dPbCnlYX52 zO>5<2lZ~zQ(oE3gC+$-<;V+ms=+$LWfn1PulQO0Zb;K4TA`t^Rr*r>423(BQ=7VVl zZjB`)Kb}8#A&ki?-QLiecl(*%4j08cy__P0Xt`IhN_rs*?OLKd61UFO3q!D_lt;vC zYfBBa(nT#t#E2S>`zuO%ZR1hO(?QS1N#O0%l+&vH>AlV4eRN6oINZ$^C4f$ z^gTqt_C>8;61674W^oj`x}bdU3i_kH!fjNKkzWf{1$uSWam8_>&%VtBP5s%=i~H?- zPkHwGB#Wdm`q|;_8uI+dPp;y(QTudULi`i zF6bRrQDjBwsk&cwo1Y-`{SlhdZ-giM)>) z+IgcJ3UlOE~*Y06~J`=k`(7Cc^5d8*Xxm zwl2Z$YE0ZAkpEFha(7O-1)_A4UgJmcaf^n{dLuS-VKJX%c&tXub)@U1Z@+ZM;mS^i0@10j>pzLi zJ|Pa?MUr|a*0_$xXgRkoBG_cUEEOC)OCl-Ari$@eIAl0pHf!nGh z4$C3UO3%>x++LvfIn`a~zU6nRdlmVs5=VvQUdcXTnWjs_I-4-|ACi8Uxzf2fTS@Ju z15~8&ARh;r#t?4nLSbmc1*;-6wu`8pe?^@TlXuzb!6GEGL`P{KA(O|fw+Gwga>P(o zfjSiT8_OWWh=Y|Y`YTLM2DbkT6{1M4l_}kh&t#m1NtJbU#srW(X(A&q<19m(@`g=6 z^;fCMrg~<<|BICZc*!y|=Q(GY?Di#A|Au_oogn4@$QC^ZJ87-x5uzA4mx-z$KaNkn zdVHn&`}Kmd0-dGQ&fELju!fop47-2|UIC#FJ8P041In7Oh7eb)dviM#p(#(kOSA%DGvx_1A%U(g92c0(G#$ApX?#KvxiM9}=Ey z7bGop)26mL49Y!&C6l;cKi`eB+z|@Gnhdd2Yx^NSQV?l^Z+hZ*C8*U(7M+gve?qfB zUP?4Ir&Z_ikf5woX{Vn=yHR*%8L_J$`xUn+e_|aHlU?e^7QmFm#W?|c}vmSROG zuHnZ>nWsp?#m}tHWYPTJqxkdOd*z!CI}Hd#^mmq28zpY#;y203;3Gk)3|gbBoQ%5F zdD|P9G>ykrmJ1VpTND31O&<*gI_XKAy4Sikk0HALeg|rtj27{dw^5X%y&8U#A&e<1 zqBKl)4ypRFIj~(E&mIruKT52#buajxqjTGu+q~p0%GAcogcBy(#1;rU*4=qO!cdwm z1cv_d&6_{23%(+S~I22<_;w+@un ziwXr}<_D(YYMF<4WBWQDb>U=hs;CC>51sv!nJW^HVQNjm7lt`$nvvrApv@`VM7evB9ea!DUyfFBlJN~_H z5KmWXZQ5g@dyECUl@Mmpn{{2ai+;+6kZDs4Hi=TR=`3Qi`0GKK!OBSrOV;r@G#BXX zQi_}X{WoPU)X22yIjb<#t_?4-Z85JuRBZ_PrYv@=n{@O)b40q+d@pcPxs_A9^q&;_f|EI=~MblZvGMp;(gq#}a{A}oz1ToBJ?wD~+2^30N z6lIUmDC=~hjiGGOzohn=QNk0Ww<>7=&t30MMPS73B$3rj@sKG4oH!hc-|6^k;B!@DV# z$6(#pP6{(gf^RH@>VluXpL#_hkikE3cU!ejeU+JZ(5*UzvJldgcp0?T=&)??AHXaJ z>7CISV;XbnsCxCo75-ml+WLpx@-%i|(hKtg3?oElJq`KK2DAM?2T^#%k?>4#!ACcs zhk}3sz=(LKg_$qMOy`~lPYLCVw`Toz{V+jt46|$r>?YBUz^y%fVQAukVn7tD*w%vl zP0&#fJSv+D0%Z)S{|ju#k5k@S`(ilQ?}k5SDW|6=@TvXp7DHq~96uYkt;G*RC+JH~ zguFyK-f zI*PwK-yc?!u7B;-?}O2nC!&`vf}sDLh=SG8L&RgUB5w=J$8cy`rr5X`1`+V_doBks z3K1#73VhSx5xI+>xqR>A>Gpcg`?y8p?iB=+2o22sA7HLAYQMoTzk@Op>U8GlJR~%F zkpeJ*2$3O2<7X+O%(6FovH>nm4|i8Et;hYf0l{vP4eun~*FOzqd&r706okL~ILt6A zqa`v3Q!%{J-S`@#=TpOZnKo_K$ufCr8ch<*M}p7Nvv{yyqNQqT9p0iOZb$%-6 zD8I`wq$#A>`Y(hR`C!mxiVrSRoFaNbD%M$UgQdKyrz;w#w=g~63+wMR{BGC?jL1^F zAbN2{s%%U$Od{8MN2A+^3wtsgApo-$ohwsYH8vXf$$!lW_5V?^EsBg^2J5b7Hy0+Ecmv9hg`-PMi^4R z=LFcie<3Pr+2~j2F0;NE*>bOQQ$}r3{>cqXA)twGwG6>57Vk*sTRULJ! z9Y`9|v8bg1=5H1~P3Qt)iWF7~=uTI5RFd6EEQxLJ!H~9Cn_6k8rGI+66RyCZ(ca2Q zB&PD8rLoCB9|><@}F*u;v@P zY`isxsmh5}#MV9G;^M=0E9v<-1Xk(6%lYq>ZvD~y^=lN9s6PJl~*Lxk(Q*puM8n}kMG^d)a#=9DL zZAh4ZFkL3>*bUQv6jx@wg8ZL`fFRr{*lu`*^+)M7|3eCkG*Ptn!25-)77X= zycyEJV{IeYZGmcTLR%D@JOKO*{r(kJ$qi-4pH`j7>W{(@`zvW~uG%^G(%C>#RfrLx z$VXobA6TJi9~}eB(dS`We>vMN?+BDQY|Yo|Z@&?V&CD*SwzqM;yEogu9I2dX>AXH> z6Ar-Qd@3d=Xg9kvjV;jktg+C<^AkAevl=+qp4E-g?b%JXUHB_muwC5O`rkHC#J{C! zHwTjgurjhuyDjuQC=Tm81HO8!-FITH4&1Sik-HJ)u&M($?sM}=zc`E*YPmLXRake| zkU4Vqr|pc6GG}P(%!FXM+dGT6uN=Id`gdLV4g*7$!pwZ5$XqP+w?gD@9X zTd|{VoNtuD)aJi<4y$3FH&>V(M<^orEcqig``}e+Xdk?MnQxUOK*|3uxB(W_K&qzH z?Z^sD&iC9LO(!efGrbe^ba~0v%yJp&I^T#QP;i|e`&45<8&P&?%YhN>;h%Mw94##b zI1tO!RH9sZ(Q;tVTs3Leka|0z^~l~6+^`Zj0G$7)X4m>vl!{hZt=v9M7I(5tfJTMd z^u|)Hr5Zg{1(qFr(D9AC=Ln zR;(&i8e)Dgp;oyr&Da*hijI+Dkz&bGw(ublht=j7sh^v--;Qi5?lhg$w~alFndLGz z54_2-k<;}Ij)1L4$Ia4ARZZt?!-r*MolwonJotz@nR*>axgoNwlZxw1RTZaDzpYaw zOu~vq-M$cmsSt@~#55~F5Ys)>{oelekD5%;;sdmHg*s^sjNPX%e~{L{G3*TqNv`}vpvcBjwIhyd zj_!(Dfgq>yYDa?Pr)1%zhvYyqP{-t|M{*EV=We3bwvC{Z_+k=Xp`|)IJF#u!)@S#< zwuP#k>22ICSSMimI1=jXH8PhxmsQ!D5xQjvjMM>A^udJBVPxSYF_2EgC zUPOZGZ3eO8*2~L?p6gWptlMJ5Z5HaY@;p`n?X)qlZk{K3>+O>193RM(5KB?|4**7K zoMY*{Gqkt2|A_m3m0nq9duz*TsR8AaEdllQ!)I?;KPTxJ%xfajSZ>)nH%qhp8delp zSy4O1)JzT!2Jffr-|t)FStGbY+0Op0ccDw?3xLAHgg=Q`l9F@!ef$*j#qI({$h){_ z)b+)1-DTC~|262x3jP;f?2$rIv+jN*S%`&UFL6{B^^=xZ4iQrnnNq`YmVZk^iasp0 zQLQ~@fr8T5H%e-Rsz%A<%^C;YbU!ZM7>E?_ko^v}*fqEdU7BV_?*gXO7Ma-zPP$8GrsX2xXa z#P?Q5MeS>1e7#1^-x;cD5kQlFWV3~+ndOiTD`DLlD@pMWV#p%x5H}2Z(Xa&xCSM7O zbPA>D)!A9Rb<%hxv&tL02C=UtsjO{jv@}69@4YBJZ=-ej$lnQw1>|fJ5`73laB7gu z7UC3OPC}OdxIly)G(;CKx<{$-2A~wnq#}@93rd_i8tf<<02>kMz0Lky+QJI89nyC- zb?zH;ww(Wc|G>!7bpy6`EauI7$fBq>zsYum#33o5AO-?Y^z{65-VYCtBT^H7Y=L6> z@vFZK1uabszn~nDRMfr>>tWsylF#K+{osjVY|T^dPWa=Chp(eux8JMXh1}wnvci{; zuaxKoMR)T|KD+rz83nk{P&cY;M$^pi$q8Wo_xdBdww0?7D-pKoV%U^YmcM)ku_Q@8 z3lJj5Q-JT7eJ%@ko9CLY2BK&R7v~HQ{4eGCj~m3_?#lh*sHG5+L`8LKQni9Mfv+#- ze|VfnH4B-&T@aP3ne%=RB2?=)H_iGHyN*G>eOcI`;(PuyV#`R`GX9(BGnn}cc->z) zU{!?5FgAFid|W_z7CX$>LFev;Ig9VHlTPmxl>t2W1#@Pp@bu}FUh@8d1}r@Sr`U1} z5fXY(@@yWpa?2%Xn1ie+H9sd?vW&2eoIm{3_cE$d|v`}gMdsXxs15q0R^~T zzw6`DNDGr3Qr(v?d|}6(6y0IILNCwM5UXXEAT&YONr(?IM*^4g&7?x-xxLi25C(X* zjH|kHV`KWsxG2Dbn;Hm%bj;5=5xRdf2hYv>o<{EV?=^NN19q#=}gU)DDH1nORX^brF<32B@@}rz^`MxET5YZdJE-}37`Jy@dSEDN#z$R?`1qDRm zxzR&fnchf>1{>9cP36Ky*t%YK;90wsBf(7dFM@TCYe8z@E(u%ZxJm*p!bGt8 z+KNF&RMpWLs`&gj{%9j`@3%hRA6_|M2D(O6QZ>cDF;k%vwdfo)6V zGhWlq{50p0rr?CS$JMapMBvl?Y#`)_Cz`j-sxa+-p!idyPj^F>rpLcAc~VdKpn1Wz zM^Z`Hv^8;CTC4qKUEu8)Q5X^gO~>Pzy0#xo)BEua(B-u=&c5WKD|DF?XU%Q%Oi?TMFZ0=$ycwWjJJEs^C5=f zYL&aUGQpx;?6xm=ecldUVXfi$Xf^{re)Shi(PS)nk7M8AjFvn>+;&OQWrH2MSGPA0I&kZoUB(aT>H0_N zR+4O&)+yPzSyyC;dk1~M3QOsF*MTDIAY|l6=Rl0ln8S2YQuAqDc(m@46G=uI)aMQn zpm~%|JWK&md8X*KovPzL_OZfmb##~)py~76T%E3UL!wDhrz;xsA2dA*^OXO983a9U z#%82q;Mx4v8NpSnXMbj%5;a0lM$CPE92yAqdFaE$L>ZHQxO8W^uKYv7)hsfqY>2HZ z^*DqLe?Ml^GHUS$3i=)dc^8v-{Ed?&6%?YQ#`7O8*7L#v8n~ju>^)!aS(?Gvi67`u z{HA1NG~2CLq2#ZRbc}+hsCKf-qvJe>H%K*z50z%+56?T{@TA`C1glKwbQjZLI=H@H+^}&(#u22<(2x>@-Vg_ z5qb60qgOpH+ng7b>Pt5&c#{Cb6a#f(jlU-qf_xJBn4)m0c4tJOwd+W(sXl6Mop7o7 zurF zu4XFVm6;;Ah)>FYSaXH*yz$)itj09TRzC5Hj@kJ$jaSjPKR1E;P#i&c=gHFhSjq-) zlv=$z)Bb)zHKlb+I{#xMrZr|%g~a2cPn+1YO6{xqG(q-J!W$sKEQgrF1@Ywho;y#O z;KN1Ct5hm7ZZZ)nxT^Y?D0MS6>QNSk(X+$`#K=Ri)EdN$0Fuf+`_qpfjeH1>>3rUk zqbh=(Pnl>6j=;qVnXE6RpZt=K(svxW9UaJj9lIMY3{OiUu<$33W1Kz8 zo%X$Z+{;>abmiw_ul9Jc0WiUiw+6rfc!#$73kASPJBxXAc@Jb>924imbgTZwHPoDe zFJb3*w$D)?C3w!DRAF)WT@cl>2Akt_a?A+3XLLLz8&JOpy*`9yB-&DLl=u(&7_FWW z`2``wvb%p5m%Ktiy*%y^>RQOeWsAW7(U>;yW5Vk8$eLRFAqUXKpQu7HAUpH|ou4$-oTma1 zs~n#Ir>|J+uW8wBPhx^R_rCjKoBR!RFUKIma3jDfnIct#Xt&PYwGU51N~SW}hT-FQ zs0XT1qX|;VhVpR~A$2!!&Fvu$FG+W*?tyD#;hmp)wwIZ%wUkt8nl$p8Ex9aCPcVIVKu~Fn zPNF(M@$g*Y_&4(%fzHKoyvj#OZKcmOdslB`($xNHNsH7@bxx8`UC6Rm>`MgsA~a<+m0BzQF-+-*#);b_65GT;EqE2Z*8{LN#wRjZwpr z5FIcwzu>WHN!qy31BhuS2bLE6?bZNIP=1Sk|KzJ@KNj$oM|i2Z%Mk?_-RV_PS0z9z zV~rCA_us8>z#)3S#zsC+Mr!mef$TQ+i^|T!*Gpfovcx8c@BlxuU+%J#r2U5;^TFN;6;xo3^ z1c!j`d59@x8S*ic-GoKVP&Np6Le94HmJ&D_U#`@|fxUr4C(F$N5@pAUL#zm(pQcO9 z6PhpJt>miKYXU2yV{z0cCU2Iw)9JZPtL~O6BLDmi3QP6B%0uA|1}k+lAxvmp_9a_~ zJmo@Y8G+64;o*E``Zqb+^FEz#;3cu%XHT}N9vbl(0*~JqI7ZX;q8Z096bjVrTXhjaY})3Xf-0Zjs}i%{P&%jlXH}f-5Fak8E3~r=AlHt#}0XnD=Sk^ zJh$GRoh42X2Urgn$aa4DOJcTtq&7M-f_?jP;Ava2V6Hj!T}x`8$6|w$4*Ifu3bGEY zpUAOP0F>CLmFn|k{{l<=#OZCo1W?}JKc@=S3f+6rM~qEN5SaK2H#jt+`*MOKbpMQl zsl<;eril8|BLuxpQK8U}(aK!0Go%a3DIxEDlDJ(+3H9oaT@W`lt!%*ZLCll|Y8sbJ z*7BBedG*5`rZ6`Vq(-D3&-y}z7ADXP%n=*l3v`_RXf6g%kMnPTOg$b%`1i;2r7d4m z{4F0lyxK!croAvZP9zZs%P%vpL!NgNlAyqMo|=z8x?rmWE>ob#`=v2Qxt!dse7o|n z)-Mr1wQvz-?7QZ^`!*lBuBkwHAlmfD3%BsgjEa+*&~;Cjz79G~;zlIOB`nKg5r#8Z z-TPOa>O8Ebztg}@H_#Mi8|yf5H6`(sGLk*~#XMaV@uB24d2)#;T*c&;?LNc*s(7BY zXP)!rDdN@hCNOF$o&ho>zgV$p^ST)P=ca#s5=sE`ByfTJgi9MK5cV4qccL)PNSJj=;(Xc&YJ`!SLr~e8HT@UtI$4 z04-Tc5QP6_h5xjrmIGZM9ZWBN7!7-uq@9MAxzaS3!!NR;Vr3Qb^W2qT^J)f7iZU%} zlSif=daC!*PYvzZ!Pqfp3_AXvsmb>UNr)EvwsP9e@}s5G?gqn44eCwG7^e(226bBReADU)4l3)}+VLu47*Jea*anK@7RQC}Tp9AbWg+O7-wyJ={d%=U z0hBD;jKLcs8t=4Rk^GIFB054m>w$?lZze07-p-!yc5tsJu(+@oseN7=dQxh7_YoJh zSvCY7^>ckq29lIv#hk%1DFVt!9Ze`%$Fr#(-|v_n)qhF+j7EaT&x4H2+1SACk}i@VIplB|PM3(*qtfr6!DUeGO&wuaLDtq; zM-(^=L6h>8xn6ShvAdRw+YAH>wi3x*_q-@Jq)3QvYEVKj{mS(8NZr%@r5Mq-KBWr0 zot%hXZ4^}kavS-%sJyBKeBGt|{MEZyi4h%o_jOl6QiBpqg;K()?UD-S^t-yc zs<>LHc7DSTayrquZl?Po9$70&ENE;k{WG}|T#oVYHas~It+5*vw%)DO%Og;IC=kh|^#3=T;_K_JI}tx6My)?6qa|e7&xE{J zwxXzurRkB27t3jI@`s%jP{xXbo1*)cA>au2&57(QHfF_-W~19`&ySLta4ajA8ST`W zk&|QEOP9pLQhw^pno)yJ@8|nVcQctmoOS|M3BL(kjlEcR)blaKJ_i%pMP;%sZ-P8_{3ZhJOTyQm>919(p)UlC&xjwpdpiS&; z7x<&eXs%hgobqy3%uQkFPWk@leUP+F_sdp((%xbVYB#SQKQX*U$v3On6nS1pL;T>? zq6&~o<+Ii1&0JWN>4d#7+#gGyt6p?;`NV`(pHMf}RJ%aU0o{sJ%|3}h1QuTVcR&}E zr7(w3ik?|kA}|n>%?y0(IN0QZQ`|l27nZH(@CC?*vWP2CCvVpy_(e)WHF2VTvr;0; z>a`8TnjrkN$H7=6LQBAX*VB4V3@ANeW8MmO(Hul!D33u_eEOfHLs}pxNY5eHO{S802AQt-ezf|Dj#o?_7Tmk7QB=<5JRdV+hJ($)0 ziu;F;M*(#L>3aL-Vod7d3F#-cNJV6$*(?``y9ih<`s8P*8L#Q24|rdEybNVzm##ZS z=zg;@YEqGr-8=^R6u6)n1$)p)+XWOO-9(%QbuY;Fxy<&j44f!sgBn7G&uP-DRaq!2 z7@f+j`*i?`oZn}xGgr}Uz6H0ER8o`ZjcJyryuCasz$z|S0;j6+39@Tx%D3(+@vuDjH)o-^MnlO}yQX#6C}-EsZ!ZagTdnb}7${+dz$sgei2 z;pd$Co`G;ovB)B(;507B>RFiA(Dvam>jHIi$y`bOuIx9dwcEyZFaZr8SzxNpD~^Yd z65-EZ*W0E!EP6@G!mZ5dXm}4ABC0yXfJA|{uiHRp^)JT{RO)*t-S6RQeC@Yit*ual zW5%(%c^Kz99;XgRTnM3W!g4rcy-#~%$hj(Ma8di1-t)Ui8RM=#?g`-^B@{Q}2k1X} zmz}S730dOnH)mnzkkG#Q(SGWB+gYa~WodSe9uh8~PMsQ@xL5UfDG(zupkJrOj(Y36 z|4i!&bsNouzZoAI{w60UCo4;?r^0tylV5#*Y(1i0?S63j`gE}}^k2g^$aU=|6il3q z96<|-giJ~5dA#~-``S-5c(YF_J^Q@2WIl=0WjGAR1{hYHV@a-2a8q=k(x93Z#5&aNe_D&$~Mf5qzi zQONMuZ~Edwm$|*Q!ju1K1^n7)_v+XQytmJu9ea0tD*>yAtv*5V`A&eXlj(o$0V{*=6e(o@d6?Bk`&E4yj`e350%r^A$sZGbjk4mEK8b*;xm7AySYhCXl~=WcT3aIldPIG;gjuwaJ-}m z_I&Oh0FdFB*1pl8i(kIad|v>9RShHssKKDmG4NtOj~t*MX7hvwhQ z&pZr(-|xq6M4)g(k^rPX^v0^F^f){b$h0O1fd8)NK4NB*=fyEOK%qcq<&N!Jwr+23 z>x?dExJSp)%-yx?=f>p6?N$Ve&Z_OK`Fyr*Yi6UJ zI*ubOe^F`qzWeTzpF57VQYw6kn6Nra;MOa@{lxogg_N<9Mp|~Jq0p=rfIw#m05}{$ z_3A$!cMUlxoXX}ZCmg9)1RvX5K@E>m5^-*La}4bPRktJ%soU92}fzlo_zXO z!sh?5|Eq1w^KX1$IB*x?CnYrns{ZNcUIW5`XeNf_th3JopoZph0a%j+x~}`l)ivFa za`=Xz@Y+KFp(`)_#s}-_d_K$Mau5juJC3qa(@Q7pHF2N4av7}{PvlTwv3`6G)zmX)=EfOvEq#rPd#^AOVDRoS~+Hy8GYL{H-#q6l552s^=ktNJ@gJGfnzatc*pLuHDCIax zk(8FDZu`lFSKj^)A*EK)qC)_XmXiU%^lWx*M|Uu?bQ(Z+&F5cPIBWkIvu4jec;du; ze}4C~L}BL<0SGyvKnOkIxJb=P^`TcpwAMO8n#Pa=v&=r2|D}^>m!-0@2{7TYpT6_T z(j6TT!VcNHgpr3r4uF@ReX>PEN@&gIR#ul?c= z4+0{Zwu*?Ux7UYzHE4d(>od%ngzTzcf9h9`dw1mypU05j zM=2>S5oq}SIVb=1NvjHdwB4V-tJpatI z0IdEzqFQS~s95>#+l#k>Br^*k9i^@ONoSsLlv#BVJKC58x?SLCCg8rCfBF8pI?HEi zj%3^Q*#IIu%xHU}ulmngk&w;XR(|=&xxcyVA0d{OWswlEtEROkA`(JKX-WCnN3R^Y zaPFN?zi;)I2}uz*LeD7r^L1#YEGfSD&r>(u^&CjD>B5Yor=>l^h3eK%e? zZTbOM{^}2lSFI0(6vc=HMAX^V^x<1CfB&L0XB@QfpKmUcQue7d#sD%b$v}reXD7I$ zr7M8gqb_>JM1JbE4hS{3H3D`=M|(#{N4JfjCZC1qL8wAqpRHN7?z7daSFc&Kdd;RS zTQ^3+U~ke4nPNcGkkQ<3MtWEam}^AX?GClXzOV2uo<0!z%CyQ zg}MQBc66EUVrZI=bdu& zoJA*nuzI_c!s#y$n8BT$9V!$sqtHNCSDo zdwdm)fu9pE)eThrRTb zO_;dXlam>MeoF38Q6f&!iGJGO6LzkXw5YbUU4-OD}=iJaVAUnE(Ai0n|HrL|*#`5*up zS=kw>J|lk;xTU$-9#!+`9z#kwcyN;FKo>BS(Tw7|+iuKW zcwGkit6BF^?J+7TjY3nSI~Np|`+Ay<^@t6xr{c*?-y00000NkvXXu0mjfR0KPl literal 8828 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 brt<+wXH~nxAc(;f@vx$-noO0HN$~#wT+r_$ diff --git a/companion/src/images/linuxicons/32x32/companion.png b/companion/src/images/linuxicons/32x32/companion.png index 0915c1f8391a17f4e8da8e38736db1035fa03a8d..df79707a57243a7a90daba93f2f8d02a61d7dfae 100644 GIT binary patch delta 1816 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 T?iULQ00000NkvXXu0mjfM{KSl delta 1718 zcmV;n21)s&7sd^cB!32COGiWi{{a60|De66lK=n)dr3q=R9J=WSW8S3TNpl_mbTEA zLZ8r({_~gtU>E-m&CShI zQ&XW(=+&!NTCJ8UICktR)}o@KzP>&t-|g+~-QC@nFJG>!tD_Z|Os2-h#;aGaGG*xK=n#v= zRGwhy)TvW!Hh0RT{|)l3-;1_J=V<#N$RM@B}X(deyPx0t$jb#-05 zcoBji63@Xm5Cjp4L}IZx7z`E^6aWC6PA6?To6QCQ7=IcXdh_NDt)RWV-EOxd2*PBj zzrWvXHlH|gA|8+9d4j>`&!1x$_Ta&Tq z5(TLWfJ_2mX?<3>FH1?^!oK{olZv;BBM4jIDZ@_&9YtmaA2jb4j(@J+s#1|;Tz?@~`7?PHSesgl_#$aG6h))n2``D1 z?UxCZ0z9MAtJpj?p4s@k;Tk0`^l2~z0C3q{>%nzA!-7}^bp@#s6(|Lg5(%jn@&^)+ zkzeap4Oy+$hK7bzv!tY?r>6%m9U2L5U&>~1d1|+cghO@ z(0>>-EEWqN4XuQHvowXjWe7#lw{PF3nj0G%Bq>Qif`8sGS(J!%gcC)cJ}P_mD{GPf}hs56^rJe|1{v zhbPU3008bWcPtp&UW1Gxn=$$`Li!D1aevJDp7H4c03l~+ZFX%NL7EK#00Ikv;8Kt_ zl-Nu-f8WmTju-*}AQl89Xn5b8FXE@K<()MoQi}kKo@ZyUX#zWHh?mXF*XJ{Z^7MJ% z+mObfVRIRWL3uz)S|oSYP;OCfPGQbA0v5#5)M+3#<9*X<2;xBM8uE9X&+a3wOn(Bo zKz=~}Jq)R;RXj0aQI3UUE5EI*jI5BAdR3MrYiA8*$+Hv(6eJQELE^DEx`?8SDB-Rg zNL@$&O`IM>EEcPvzJLW0<~q87`se-0YbWg7+#qZh+3IXrnQW&F$@j~JO2XWU$Knpy zk!r4o*1hB8Q>D5_%@uJ;WEu={MSooC!s8lsZG;IYD)+d1-A_1Ga`+rgttS13)YWPZ zpYYQn><)YXB##Fc$Ec@{+`?Q*5#eb2e+`KX#FAn{Ml6o4z$>(S8M=rD<^v>BQ>(#0 z4+k({X=$mmvlGuOEG$rEEDj4_D*%A6U%p1Xj60~);{5FSOd@##9`z$`7k}RbpU>~@ z?F|G1%gf7ERaHWvu&=K#6bjAF%{4VOnM|fcBGJ;)!sT*39*@;(HJMBphQ(qro6V-t zXp(}Cjt&4oGE`Yv+1Azu!?4L@vRbXwgm_KL##T|A&E`Xg4waXe*VNRw-R?`5E|r#+ zYPH(#?(U~gpF$9{y1IJ){D1kACr_rjjE;^tG#Up72U}ZPlc7i?a{c;s z`~y=HQZ)oa6%`eOgM$cycsw2iLCVX^hlhtz6n**frBo_aDwX5o<5H>g+O=!Fy}ijU zRaI51tE&O`5rsk_ zlgaY)^QWh$YinzTLSbWLqu=lMdc6REo}Qj)G&(jmmKveV%uKyrfAHWzKA%4`GsENY zPMi_@% diff --git a/companion/src/images/linuxicons/512x512/companion.png b/companion/src/images/linuxicons/512x512/companion.png index 40d08e869266d25af43b0912c13acf0f81db2975..7e9078b2ee894f24809c4e24878c4981ab3f1e7f 100644 GIT binary patch literal 39722 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 &H0I_|=7lg%C#mT7@+&s5YHOuHW;& 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 Date: Mon, 13 Jan 2014 19:09:05 +0100 Subject: [PATCH 127/308] EEPROM 'next' support. A lot of corrections. --- companion/src/eepromimportexport.h | 30 ++- companion/src/eeprominterface.cpp | 4 +- companion/src/eeprominterface.h | 10 +- .../src/firmwares/er9x/er9xinterface.cpp | 1 - .../firmwares/ersky9x/ersky9xinterface.cpp | 1 - .../firmwares/opentx/open9xSky9xeeprom.cpp | 2 +- .../src/firmwares/opentx/opentxeeprom.cpp | 56 ++-- .../src/firmwares/opentx/opentxinterface.cpp | 2 - companion/src/helpers.cpp | 73 +++-- companion/src/helpers.h | 1 + companion/src/modeledit/customfunctions.cpp | 3 +- companion/src/modeledit/expodialog.cpp | 217 +++++---------- companion/src/modeledit/expodialog.ui | 20 +- companion/src/modeledit/inputs.cpp | 2 +- companion/src/modeledit/mixerdialog.cpp | 159 ++++++----- companion/src/modeledit/mixerdialog.h | 1 + companion/src/modeledit/mixes.cpp | 15 +- companion/src/modeledit/setup.cpp | 253 ++++++++++-------- companion/src/modeledit/setup.h | 1 + radio/src/eeprom_conversions.cpp | 2 +- 20 files changed, 419 insertions(+), 434 deletions(-) diff --git a/companion/src/eepromimportexport.h b/companion/src/eepromimportexport.h index 1f5c701f5..ed5ab9ff5 100644 --- a/companion/src/eepromimportexport.h +++ b/companion/src/eepromimportexport.h @@ -550,6 +550,7 @@ class ConversionField: public TransformedField { _field(0), table(table), shift(0), + scale(1), min(INT_MIN), max(INT_MAX), exportFunc(NULL), @@ -565,6 +566,7 @@ class ConversionField: public TransformedField { _field(0), table(table), shift(0), + scale(0), min(INT_MIN), max(INT_MAX), exportFunc(NULL), @@ -580,6 +582,7 @@ class ConversionField: public TransformedField { _field(0), table(NULL), shift(0), + scale(0), min(INT_MIN), max(INT_MAX), exportFunc(exportFunc), @@ -588,13 +591,14 @@ class ConversionField: public TransformedField { { } - ConversionField(int & field, int shift, int min=INT_MIN, int max=INT_MAX, const char *name = "Signed shifted"): + ConversionField(int & field, int shift, int scale=0, int min=INT_MIN, int max=INT_MAX, const char *name = "Signed shifted"): TransformedField(internalField), internalField(_field, name), field(field), _field(0), table(NULL), shift(shift), + scale(scale), min(min), max(max), exportFunc(NULL), @@ -603,13 +607,14 @@ class ConversionField: public TransformedField { { } - ConversionField(unsigned int & field, int shift): + ConversionField(unsigned int & field, int shift, int scale=0): TransformedField(internalField), internalField((unsigned int &)_field), field((int &)field), _field(0), table(NULL), shift(shift), + scale(scale), min(INT_MIN), max(INT_MAX), exportFunc(NULL), @@ -620,19 +625,25 @@ class ConversionField: public TransformedField { virtual void beforeExport() { + int val = field; + + if (scale) { + val /= scale; + } + if (table) { - if (table->exportValue(field, _field)) + if (table->exportValue(val, _field)) return; if (!error.isEmpty()) EEPROMWarnings += error + "\n"; } else if (shift) { - if (field < min) _field = min + shift; - else if (field > max) _field = max + shift; - else _field = field + shift; + if (val < min) _field = min + shift; + else if (val > max) _field = max + shift; + else _field = val + shift; } else { - _field = exportFunc(field); + _field = exportFunc(val); } } @@ -648,6 +659,10 @@ class ConversionField: public TransformedField { else { field = importFunc(_field); } + + if (scale) { + field *= scale; + } } protected: @@ -656,6 +671,7 @@ class ConversionField: public TransformedField { int _field; ConversionTable * table; int shift; + int scale; int min; int max; int (*exportFunc)(int); diff --git a/companion/src/eeprominterface.cpp b/companion/src/eeprominterface.cpp index 28a7d813b..a8736f9e1 100644 --- a/companion/src/eeprominterface.cpp +++ b/companion/src/eeprominterface.cpp @@ -417,9 +417,9 @@ QString CurveReference::toString() else { switch(type) { case CURVE_REF_DIFF: - return QObject::tr("Diff(%1%%)").arg(getGVarString(value)); + return QObject::tr("Diff(%1)").arg(getGVarString(value)); case CURVE_REF_EXPO: - return QObject::tr("Expo(%1%%)").arg(getGVarString(value)); + return QObject::tr("Expo(%1)").arg(getGVarString(value)); case CURVE_REF_FUNC: return QObject::tr("Function(%1)").arg(QString("x>0" "x<0" "|x|" "f>0" "f<0" "|f|").mid(3*(value-1), 3)); default: diff --git a/companion/src/eeprominterface.h b/companion/src/eeprominterface.h index 228ae2cb6..f5c5762af 100644 --- a/companion/src/eeprominterface.h +++ b/companion/src/eeprominterface.h @@ -65,8 +65,8 @@ const uint8_t modn12x3[4][4]= { #define C9X_MAX_MODELS 60 #define C9X_MAX_PHASES 9 #define C9X_MAX_MIXERS 64 -#define C9X_MAX_EXPOS 32 -#define C9X_MAX_CURVES 16 +#define C9X_MAX_EXPOS 64 +#define C9X_MAX_CURVES 32 #define C9X_MAX_POINTS 17 #define C9X_MAX_GVARS 9 #define C9X_MAX_ENCODERS 2 @@ -628,10 +628,7 @@ enum AssignFunc { FuncBackgroundMusic, FuncBackgroundMusicPause, FuncAdjustGV1, - FuncAdjustGV2, - FuncAdjustGV3, - FuncAdjustGV4, - FuncAdjustGV5, + FuncAdjustGVLast = FuncAdjustGV1+C9X_MAX_GVARS-1, FuncCount }; @@ -977,7 +974,6 @@ enum Capability { GvarsFlightPhases, GvarsHaveSources, GvarsAsSources, - GvarsAsWeight, GvarsName, NoTelemetryProtocol, TelemetryCSFields, diff --git a/companion/src/firmwares/er9x/er9xinterface.cpp b/companion/src/firmwares/er9x/er9xinterface.cpp index 7ef121909..f2eed4608 100644 --- a/companion/src/firmwares/er9x/er9xinterface.cpp +++ b/companion/src/firmwares/er9x/er9xinterface.cpp @@ -283,7 +283,6 @@ int Er9xInterface::getCapability(const Capability capability) return 7; case GvarsHaveSources: case GvarsAsSources: - case GvarsAsWeight: return 1; case GetThrSwitch: return DSW_THR; diff --git a/companion/src/firmwares/ersky9x/ersky9xinterface.cpp b/companion/src/firmwares/ersky9x/ersky9xinterface.cpp index d3fba6d85..88129b997 100644 --- a/companion/src/firmwares/ersky9x/ersky9xinterface.cpp +++ b/companion/src/firmwares/ersky9x/ersky9xinterface.cpp @@ -319,7 +319,6 @@ int Ersky9xInterface::getCapability(const Capability capability) return 23; case GvarsHaveSources: case GvarsAsSources: - case GvarsAsWeight: return 1; case TelemetryMaxMultiplier: return 2; diff --git a/companion/src/firmwares/opentx/open9xSky9xeeprom.cpp b/companion/src/firmwares/opentx/open9xSky9xeeprom.cpp index 41a7300d4..524d55fee 100644 --- a/companion/src/firmwares/opentx/open9xSky9xeeprom.cpp +++ b/companion/src/firmwares/opentx/open9xSky9xeeprom.cpp @@ -630,7 +630,7 @@ t_Open9xArmFuncSwData_v211::operator FuncSwData () } else { c9x.param = value; - if ((c9x.func == FuncPlayValue || c9x.func == FuncVolume || (c9x.func >= FuncAdjustGV1 && c9x.func <= FuncAdjustGV5)) && value > 7) { + if ((c9x.func == FuncPlayValue || c9x.func == FuncVolume || (c9x.func >= FuncAdjustGV1 && c9x.func <= FuncAdjustGVLast)) && value > 7) { c9x.param++; } } diff --git a/companion/src/firmwares/opentx/opentxeeprom.cpp b/companion/src/firmwares/opentx/opentxeeprom.cpp index 69a73d97b..b723ac0a2 100644 --- a/companion/src/firmwares/opentx/opentxeeprom.cpp +++ b/companion/src/firmwares/opentx/opentxeeprom.cpp @@ -363,13 +363,34 @@ class SourceField: public ConversionField< UnsignedField > { unsigned int _source; }; -class CurveReferenceField: public StructField { +class CurveReferenceField: public TransformedField { public: - CurveReferenceField(CurveReference & curve, BoardEnum board, unsigned int version) + CurveReferenceField(CurveReference & curve, BoardEnum board, unsigned int version): + TransformedField(internalField), + curve(curve), + _curve_type(0) { - Append(new UnsignedField<8>((unsigned int &)curve.type)); - Append(new SignedField<8>(curve.value)); + internalField.Append(new UnsignedField<8>(_curve_type)); + internalField.Append(new SignedField<8>(curve.value)); } + + virtual void beforeExport() + { + if (curve.value != 0) + _curve_type = (unsigned int)curve.type; + else + _curve_type = 0; + } + + virtual void afterImport() + { + curve.type = (CurveReference::CurveRefType)_curve_type; + } + + protected: + StructField internalField; + CurveReference & curve; + unsigned int _curve_type; }; class HeliField: public StructField { @@ -804,13 +825,13 @@ class ExpoField: public TransformedField { if (IS_TARANIS(board) && version >= 216) { internalField.Append(new SourceField<8>(expo.srcRaw, board, version, 0)); internalField.Append(new UnsignedField<16>(expo.scale)); - internalField.Append(new UnsignedField<8>(expo.chn)); + internalField.Append(new UnsignedField<8>(expo.chn, "Channel")); internalField.Append(new SwitchField<8>(expo.swtch, board, version)); internalField.Append(new UnsignedField<16>(expo.phases)); - internalField.Append(new SignedField<8>(_weight)); + internalField.Append(new SignedField<8>(_weight, "Weight")); internalField.Append(new SignedField<8>(expo.carryTrim)); internalField.Append(new ZCharField<8>(expo.name)); - internalField.Append(new SignedField<8>(expo.offset)); + internalField.Append(new SignedField<8>(expo.offset, "Offset")); internalField.Append(new CurveReferenceField(expo.curve, board, version)); internalField.Append(new SpareBitsField<8>()); } @@ -903,8 +924,8 @@ class LimitField: public StructField { Append(new ConversionField< SignedField<16> >(limit.max, -1000)); } else { - Append(new ConversionField< SignedField<8> >(limit.min, +100)); - Append(new ConversionField< SignedField<8> >(limit.max, -100)); + Append(new ConversionField< SignedField<8> >(limit.min, +100, 10)); + Append(new ConversionField< SignedField<8> >(limit.max, -100, 10)); } Append(new SignedField<8>(limit.ppmCenter)); Append(new SignedField<14>(limit.offset)); @@ -1352,7 +1373,7 @@ class CustomFunctionField: public TransformedField { else if (fn.func == FuncPlayPrompt || fn.func == FuncBackgroundMusic) { memcpy(_arm_param, fn.paramarm, sizeof(_arm_param)); } - else if (fn.func >= FuncAdjustGV1 && fn.func <= FuncAdjustGV5) { + else if (fn.func >= FuncAdjustGV1 && fn.func <= FuncAdjustGVLast) { unsigned int value; if (version >= 214) { _mode = fn.adjustMode; @@ -1382,7 +1403,7 @@ class CustomFunctionField: public TransformedField { /* the default behavior */ _param = fn.param; _union_param = (fn.enabled ? 1 : 0); - if (fn.func >= FuncAdjustGV1 && fn.func <= FuncAdjustGV5) { + if (fn.func >= FuncAdjustGV1 && fn.func <= FuncAdjustGVLast) { if (version >= 213) { _union_param += (fn.adjustMode << 1); if (fn.adjustMode == 1) @@ -1435,7 +1456,7 @@ class CustomFunctionField: public TransformedField { else if (fn.func == FuncVolume) { sourcesConversionTable->importValue(value, (int &)fn.param); } - else if (fn.func >= FuncAdjustGV1 && fn.func <= FuncAdjustGV5) { + else if (fn.func >= FuncAdjustGV1 && fn.func <= FuncAdjustGVLast) { if (version >= 214) { fn.adjustMode = _mode; if (fn.adjustMode == 1) @@ -1464,7 +1485,7 @@ class CustomFunctionField: public TransformedField { if (version >= 213) { fn.enabled = (_union_param & 0x01); } - if (fn.func >= FuncAdjustGV1 && fn.func <= FuncAdjustGV5) { + if (fn.func >= FuncAdjustGV1 && fn.func <= FuncAdjustGVLast) { if (version >= 213) { fn.adjustMode = ((_union_param >> 1) & 0x03); if (fn.adjustMode == 1) @@ -1725,7 +1746,7 @@ class FrskyField: public StructField { Append(new SignedField<4>(frsky.varioMax)); for (int i=0; i<2; i++) { Append(new ConversionField< UnsignedField<2> >(frsky.rssiAlarms[i].level, &rssiConversionTable[i], "RSSI level")); - Append(new ConversionField< SignedField<6> >(frsky.rssiAlarms[i].value, -45+i*3, 0, 100, "RSSI value")); + Append(new ConversionField< SignedField<6> >(frsky.rssiAlarms[i].value, -45+i*3, 0, 0, 100, "RSSI value")); } for (int i=0; i<2; i++) { Append(new FrskyScreenField(frsky.screens[i], board, version)); @@ -1949,6 +1970,7 @@ Open9xModelDataNew::Open9xModelDataNew(ModelData & modelData, BoardEnum board, u void Open9xModelDataNew::beforeExport() { // qDebug() << QString("before export model") << modelData.name; + for (int module=0; module<3; module++) { if (modelData.moduleData[module].protocol >= PXX_XJT_X16 && modelData.moduleData[module].protocol <= PXX_XJT_LR12) subprotocols[module] = modelData.moduleData[module].protocol - PXX_XJT_X16; @@ -1959,7 +1981,7 @@ void Open9xModelDataNew::beforeExport() void Open9xModelDataNew::afterImport() { - // qDebug() << QString("after import model") << modelData.name; + // qDebug() << QString("after import model") << modelData.name ; for (int module=0; module<3; module++) { if (modelData.moduleData[module].protocol == PXX_XJT_X16) { @@ -2050,9 +2072,9 @@ Open9xGeneralDataNew::Open9xGeneralDataNew(GeneralSettings & generalData, BoardE internalField.Append(new UnsignedField<8>(generalData.speakerPitch)); if (IS_ARM(board)) - internalField.Append(new ConversionField< SignedField<8> >(generalData.speakerVolume, -12, 0, 23, "Volume")); + internalField.Append(new ConversionField< SignedField<8> >(generalData.speakerVolume, -12, 0, 0, 23, "Volume")); else - internalField.Append(new ConversionField< SignedField<8> >(generalData.speakerVolume, -7, 0, 7, "Volume")); + internalField.Append(new ConversionField< SignedField<8> >(generalData.speakerVolume, -7, 0, 0, 7, "Volume")); if (version >= 214 || (!IS_ARM(board) && version >= 213)) { internalField.Append(new SignedField<8>(generalData.vBatMin)); diff --git a/companion/src/firmwares/opentx/opentxinterface.cpp b/companion/src/firmwares/opentx/opentxinterface.cpp index fbe7652bd..c07f0875a 100644 --- a/companion/src/firmwares/opentx/opentxinterface.cpp +++ b/companion/src/firmwares/opentx/opentxinterface.cpp @@ -420,7 +420,6 @@ int Open9xInterface::getSize(ModelData &model) efile->EeFsCreate(tmp, EESIZE_RLC_MAX, board); Open9xModelDataNew open9xModel(model, board, 255, GetCurrentFirmwareVariant()); - // open9xModel.Dump(); QByteArray eeprom; open9xModel.Export(eeprom); @@ -502,7 +501,6 @@ int Open9xInterface::getCapability(const Capability capability) case GvarsName: return (IS_TARANIS(board) ? 10 : 6); case GvarsInCS: - case GvarsAsWeight: case HasFAIMode: return 1; case GvarsAreNamed: diff --git a/companion/src/helpers.cpp b/companion/src/helpers.cpp index a1e69ed04..142b65b43 100644 --- a/companion/src/helpers.cpp +++ b/companion/src/helpers.cpp @@ -155,16 +155,8 @@ QString getFuncName(unsigned int val) return QObject::tr("Background Music"); else if (val == FuncBackgroundMusicPause) return QObject::tr("Background Music Pause"); - else if (val == FuncAdjustGV1) - return QObject::tr("Adjust GV1"); - else if (val == FuncAdjustGV2) - return QObject::tr("Adjust GV2"); - else if (val == FuncAdjustGV3) - return QObject::tr("Adjust GV3"); - else if (val == FuncAdjustGV4) - return QObject::tr("Adjust GV4"); - else if (val == FuncAdjustGV5) - return QObject::tr("Adjust GV5"); + else if (val >= FuncAdjustGV1 && val <= FuncAdjustGVLast) + return QObject::tr("Adjust GV%1").arg(val-FuncAdjustGV1+1); else { return QString("???"); // Highlight unknown functions with output of question marks.(BTW should not happen that we do not know what a function is) } @@ -424,7 +416,7 @@ void populateFuncParamCB(QComboBox *b, uint function, unsigned int value, unsign else if (function==FuncPlayValue) { populateSourceCB(b, RawSource(value), POPULATE_SOURCES|POPULATE_SWITCHES|POPULATE_GVARS|POPULATE_TRIMS|POPULATE_TELEMETRYEXT); } - else if (function>=FuncAdjustGV1 && function<=FuncAdjustGV5 ) { + else if (function>=FuncAdjustGV1 && function<=FuncAdjustGVLast) { switch (adjustmode) { case 1: populateSourceCB(b, RawSource(value), POPULATE_SOURCES|POPULATE_TRIMS|POPULATE_SWITCHES); @@ -440,7 +432,6 @@ void populateFuncParamCB(QComboBox *b, uint function, unsigned int value, unsign break; } } - else { b->hide(); } @@ -482,16 +473,18 @@ void populatePhasesCB(QComboBox *b, int value) void populateCurveReference(QComboBox *curveTypeCB, QCheckBox *curveGVarCB, QComboBox *curveValueCB, QSpinBox *curveValueSB, CurveReference & curve, unsigned int flags) { - curveTypeCB->clear(); - curveTypeCB->addItem(QObject::tr("Diff")); - curveTypeCB->addItem(QObject::tr("Expo")); - curveTypeCB->addItem(QObject::tr("Func")); - curveTypeCB->addItem(QObject::tr("Curve")); + if (curveTypeCB->count() == 0) { + curveTypeCB->addItem(QObject::tr("Diff")); + curveTypeCB->addItem(QObject::tr("Expo")); + curveTypeCB->addItem(QObject::tr("Func")); + curveTypeCB->addItem(QObject::tr("Curve")); + } + curveTypeCB->setCurrentIndex(curve.type); if (curve.type == CurveReference::CURVE_REF_DIFF || curve.type == CurveReference::CURVE_REF_EXPO) { curveGVarCB->show(); - if (curve.value>100 || curve.value<-100) { + if (curve.value > 100 || curve.value < -100) { curveGVarCB->setChecked(true); populateGVCB(curveValueCB, curve.value); curveValueCB->show(); @@ -533,6 +526,31 @@ void populateCurveReference(QComboBox *curveTypeCB, QCheckBox *curveGVarCB, QCom } } +void retrieveCurveReference(QComboBox *curveTypeCB, QCheckBox *curveGVarCB, QComboBox *curveValueCB, QSpinBox *curveValueSB, CurveReference & curve, unsigned int flags) +{ + switch (curveTypeCB->currentIndex()) { + case 0: + case 1: + { + int value; + if (curveGVarCB->isChecked()) + value = curveValueCB->itemData(curveValueCB->currentIndex()).toInt(); + else + value = curveValueSB->value(); + qDebug() << value; + curve = CurveReference(curveTypeCB->currentIndex() == 0 ? CurveReference::CURVE_REF_DIFF : CurveReference::CURVE_REF_EXPO, value); + break; + } + case 2: + curve = CurveReference(CurveReference::CURVE_REF_FUNC, curveValueCB->currentIndex()); + break; + case 3: + curve = CurveReference(CurveReference::CURVE_REF_CUSTOM, curveValueCB->currentIndex() - GetEepromInterface()->getCapability(NumCurves)); + break; + } + populateCurveReference(curveTypeCB, curveGVarCB, curveValueCB, curveValueSB, curve, flags); +} + void populateTrimUseCB(QComboBox *b, unsigned int phase) { b->addItem(QObject::tr("Own trim")); @@ -1008,17 +1026,18 @@ QString getSignedStr(int value) QString getGVarString(int16_t val, bool sign) { - if (val >= -10000 && val <= 10000) + if (val >= -10000 && val <= 10000) { if (sign) - return QString("(%1%)").arg(getSignedStr(val)); + return QString("%1%").arg(getSignedStr(val)); else - return QString("(%1%)").arg(val); - else - if (val<0) { - return QObject::tr("(-GV%1)").arg(-val-10000); - } else { - return QObject::tr("(GV%1)").arg(val-10000); - } + return QString("%1%").arg(val); + } + else { + if (val<0) + return QObject::tr("-GV%1").arg(-val-10000); + else + return QObject::tr("GV%1").arg(val-10000); + } } QString image2qstring(QImage image) diff --git a/companion/src/helpers.h b/companion/src/helpers.h index 43ed54f34..511f726c1 100644 --- a/companion/src/helpers.h +++ b/companion/src/helpers.h @@ -43,6 +43,7 @@ void populatePhasesCB(QComboBox *b, int value); void populateTrimUseCB(QComboBox *b, unsigned int phase); void populateGvarUseCB(QComboBox *b, unsigned int phase); void populateCurveReference(QComboBox *curveTypeCB, QCheckBox *curveGVarCB, QComboBox *curveValueCB, QSpinBox *curveValueSB, CurveReference & curve, unsigned int flags); +void retrieveCurveReference(QComboBox *curveTypeCB, QCheckBox *curveGVarCB, QComboBox *curveValueCB, QSpinBox *curveValueSB, CurveReference & curve, unsigned int flags); void populateCurvesCB(QComboBox *b, int value); void populateCustomScreenFieldCB(QComboBox *b, unsigned int value, bool last, int hubproto); void populateTimerSwitchCB(QComboBox *b, int value); diff --git a/companion/src/modeledit/customfunctions.cpp b/companion/src/modeledit/customfunctions.cpp index 26333d6b6..e6c883ee6 100644 --- a/companion/src/modeledit/customfunctions.cpp +++ b/companion/src/modeledit/customfunctions.cpp @@ -281,7 +281,8 @@ void CustomFunctionsPanel::refreshCustomFunction(int i, bool modified) if (modified) model.funcSw[i].param = fswtchParam[i]->value()*10.0; fswtchParam[i]->setValue(model.funcSw[i].param/10.0); widgetsMask |= CUSTOM_FUNCTION_NUMERIC_PARAM + CUSTOM_FUNCTION_ENABLE; - } else if (index>=FuncAdjustGV1 && index<=FuncAdjustGV5) { + } + else if (index>=FuncAdjustGV1 && index<=FuncAdjustGVLast) { if (modified) model.funcSw[i].adjustMode = fswtchGVmode[i]->currentIndex(); widgetsMask |= CUSTOM_FUNCTION_GV_MODE + CUSTOM_FUNCTION_ENABLE; if (model.funcSw[i].adjustMode==0) { diff --git a/companion/src/modeledit/expodialog.cpp b/companion/src/modeledit/expodialog.cpp index 097d8c1a6..1a664cb20 100644 --- a/companion/src/modeledit/expodialog.cpp +++ b/companion/src/modeledit/expodialog.cpp @@ -15,109 +15,47 @@ ExpoDialog::ExpoDialog(QWidget *parent, ExpoData *expoData, int stickMode) : setWindowTitle(tr("DEST -> %1").arg(getStickStr(ed->chn))); QRegExp rx(CHAR_FOR_NAMES_REGEX); - if (GetEepromInterface()->getCapability(GvarsAsWeight)) { - int gvars=0; - if (GetEepromInterface()->getCapability(HasVariants)) { - if ((GetCurrentFirmwareVariant() & GVARS_VARIANT)) { - gvars=1; - } - } else { + int gvars=0; + if (GetEepromInterface()->getCapability(HasVariants)) { + if ((GetCurrentFirmwareVariant() & GVARS_VARIANT)) { gvars=1; } - if (gvars==0) { - ui->expoGV->setDisabled(true); - ui->weightGV->setDisabled(true); - ui->expoCurveGV->setDisabled(true); - - /* TODO - if (ed->expo>100) { - ed->expo=0; - } - */ - if (ed->weight>100 || ed->weight<-100) { - ed->weight=100; - } -/* TODO - if (ed->curveParam>100 || ed->curveParam<-100) { - ed->curveParam=0; - } - */ - } - // TODO populateGVCB(ui->expoCB, ed->expo); - populateGVCB(ui->weightCB, ed->weight); - // TODO populateGVCB(ui->expoCurveCB, ed->curveParam); - - ui->weightSB->setMinimum(0); - ui->weightSB->setMaximum(100); - if (ed->weight>100 || ed->weight<0) { - ui->weightGV->setChecked(true); - ui->weightSB->hide(); - ui->weightCB->show(); - } else { - ui->weightGV->setChecked(false); - ui->weightSB->setValue(ed->weight); - ui->weightSB->show(); - ui->weightCB->hide(); - } -/* TODO - ui->expoSB->setMinimum(-100); - ui->expoSB->setMaximum(100); - if (ed->expo>100 || ed->expo<-100) { - ui->expoGV->setChecked(true); - ui->expoSB->hide(); - ui->expoCB->show(); - } - else { - ui->expoGV->setChecked(false); - ui->expoSB->setValue(ed->expo); - ui->expoSB->show(); - ui->expoCB->hide(); - } - - ui->expoCurveSB->setMinimum(-100); - ui->expoCurveSB->setMaximum(100); - if (ed->curveParam>100 || ed->curveParam<-100) { - ui->expoCurveGV->setChecked(true); - ui->expoCurveSB->hide(); - ui->expoCurveCB->show(); - } - else { - ui->expoCurveGV->setChecked(false); - ui->expoCurveSB->setValue(ed->curveParam); - ui->expoCurveSB->show(); - ui->expoCurveCB->hide(); - } - */ + } else { + gvars=1; } - else { -// TODO ui->expoGV->hide(); - ui->weightGV->hide(); - // TODO ui->expoCurveGV->hide(); - // TODO ui->expoSB->setMinimum(-100); - // TODO ui->expoSB->setMaximum(100); - // TODO ui->expoSB->setValue(ed->expo); - // TODO ui->expoCurveSB->setMinimum(-100); - // TODO ui->expoCurveSB->setMaximum(100); - // TODO ui->expoCurveSB->setValue(ed->curveParam); - ui->weightSB->setMinimum(0); - ui->weightSB->setMaximum(100); + + if (gvars==0) { + ui->weightGV->setDisabled(true); + ui->curveGVarCB->hide(); + if ((ed->curve.type == CurveReference::CURVE_REF_EXPO || ed->curve.type == CurveReference::CURVE_REF_DIFF) && ed->curve.value > 100) { + ed->curve.value = 0; + } + if (ed->weight>100 || ed->weight<-100) { + ed->weight = 100; + } + } + + populateGVCB(ui->weightCB, ed->weight); + + ui->weightSB->setMinimum(0); + ui->weightSB->setMaximum(100); + if (ed->weight>100 || ed->weight<0) { + ui->weightGV->setChecked(true); + ui->weightSB->hide(); + ui->weightCB->show(); + } else { + ui->weightGV->setChecked(false); ui->weightSB->setValue(ed->weight); + ui->weightSB->show(); + ui->weightCB->hide(); } populateSwitchCB(ui->switchesCB,ed->swtch); - /* if (ed->curveMode==0) { - populateExpoCurvesCB(ui->curvesCB,0); // TODO capacity for er9x - } - else { - populateExpoCurvesCB(ui->curvesCB,ed->curveParam); // TODO capacity for er9x - } - */ + populateCurveReference(ui->curveTypeCB, ui->curveGVarCB, ui->curveValueCB, ui->curveValueSB, ed->curve, 0); + ui->modeCB->setCurrentIndex(ed->mode-1); ui->label_expo->hide(); - // TODO ui->expoCB->hide(); - // TODO ui->expoGV->hide(); - // TODO ui->expoSB->hide(); if (!GetEepromInterface()->getCapability(FlightPhases)) { ui->label_phases->hide(); @@ -138,6 +76,7 @@ ExpoDialog::ExpoDialog(QWidget *parent, ExpoData *expoData, int stickMode) : cb_fp[i]->hide(); } } + int expolength=GetEepromInterface()->getCapability(HasExpoNames); if (!expolength) { ui->label_name->hide(); @@ -145,21 +84,25 @@ ExpoDialog::ExpoDialog(QWidget *parent, ExpoData *expoData, int stickMode) : } else { ui->expoName->setMaxLength(expolength); } + ui->expoName->setValidator(new QRegExpValidator(rx, this)); ui->expoName->setText(ed->name); valuesChanged(); + connect(ui->expoName,SIGNAL(editingFinished()),this,SLOT(valuesChanged())); connect(ui->expoCB,SIGNAL(currentIndexChanged(int)),this,SLOT(valuesChanged())); connect(ui->expoSB,SIGNAL(editingFinished()),this,SLOT(valuesChanged())); - connect(ui->expoCurveCB,SIGNAL(currentIndexChanged(int)),this,SLOT(valuesChanged())); - connect(ui->expoCurveSB,SIGNAL(editingFinished()),this,SLOT(valuesChanged())); + + connect(ui->curveTypeCB,SIGNAL(currentIndexChanged(int)),this,SLOT(valuesChanged())); + connect(ui->curveGVarCB,SIGNAL(stateChanged(int)),this,SLOT(valuesChanged())); + connect(ui->curveValueCB,SIGNAL(currentIndexChanged(int)),this,SLOT(valuesChanged())); + connect(ui->curveValueSB,SIGNAL(editingFinished()),this,SLOT(valuesChanged())); + connect(ui->weightCB,SIGNAL(currentIndexChanged(int)),this,SLOT(valuesChanged())); connect(ui->weightSB,SIGNAL(editingFinished()),this,SLOT(valuesChanged())); connect(ui->switchesCB,SIGNAL(currentIndexChanged(int)),this,SLOT(valuesChanged())); - connect(ui->curvesCB,SIGNAL(currentIndexChanged(int)),this,SLOT(valuesChanged())); connect(ui->modeCB,SIGNAL(currentIndexChanged(int)),this,SLOT(valuesChanged())); connect(ui->expoGV,SIGNAL(stateChanged(int)),this,SLOT(widgetChanged())); - connect(ui->expoCurveGV,SIGNAL(stateChanged(int)),this,SLOT(widgetChanged())); connect(ui->weightGV,SIGNAL(stateChanged(int)),this,SLOT(widgetChanged())); for (int i=0; i<9; i++) { connect(cb_fp[i],SIGNAL(toggled(bool)),this,SLOT(valuesChanged())); @@ -186,63 +129,43 @@ void ExpoDialog::changeEvent(QEvent *e) void ExpoDialog::widgetChanged() { - if (GetEepromInterface()->getCapability(GvarsAsWeight)) { - int gvars=0; - if (GetEepromInterface()->getCapability(HasVariants)) { - if ((GetCurrentFirmwareVariant() & GVARS_VARIANT)) { - gvars=1; - } - } else { - gvars=1; - } - if (gvars==1) { - if (ui->expoCurveGV->isChecked()) { - ui->expoCurveCB->show(); - ui->expoCurveSB->hide(); - } else { - ui->expoCurveCB->hide(); - ui->expoCurveSB->show(); - } - if (ui->weightGV->isChecked()) { - ui->weightCB->show(); - ui->weightSB->hide(); - } else { - ui->weightCB->hide(); - ui->weightSB->show(); - } - } - valuesChanged(); - QTimer::singleShot(0, this, SLOT(shrink())); + // TODO so many times duplicated :( + int gvars=0; + if (GetEepromInterface()->getCapability(HasVariants)) { + if ((GetCurrentFirmwareVariant() & GVARS_VARIANT)) { + gvars=1; } + } else { + gvars=1; + } + + /* TODO if (gvars==1) { + if (ui->expoCurveGV->isChecked()) { + ui->expoCurveCB->show(); + ui->expoCurveSB->hide(); + } else { + ui->expoCurveCB->hide(); + ui->expoCurveSB->show(); + } + if (ui->weightGV->isChecked()) { + ui->weightCB->show(); + ui->weightSB->hide(); + } else { + ui->weightCB->hide(); + ui->weightSB->show(); + } + } */ + valuesChanged(); + QTimer::singleShot(0, this, SLOT(shrink())); } void ExpoDialog::valuesChanged() { QCheckBox * cb_fp[] = {ui->cb_FP0,ui->cb_FP1,ui->cb_FP2,ui->cb_FP3,ui->cb_FP4,ui->cb_FP5,ui->cb_FP6,ui->cb_FP7,ui->cb_FP8 }; - if (ui->curvesCB->currentIndex()==0) { - // TODO ed->curveMode = 0; - ui->expoCurveGV->show(); - if (ui->expoCurveGV->isChecked()) { - ui->expoCurveCB->show(); - ui->expoCurveSB->hide(); - // TODO ed->curveParam = ui->expoCurveCB->itemData(ui->expoCurveCB->currentIndex()).toInt(); - } - else { - ui->expoCurveCB->hide(); - ui->expoCurveSB->show(); - // TODO ed->curveParam = ui->expoCurveSB->value(); - } - // TODO ed->expo = ed->curveParam; - } - else { - // TODO ed->curveMode = 1; - // TODO ed->curveParam = ui->curvesCB->currentIndex(); - // TODO ed->expo = 0; - ui->expoCurveCB->hide(); - ui->expoCurveSB->hide(); - ui->expoCurveGV->hide(); - } + + retrieveCurveReference(ui->curveTypeCB, ui->curveGVarCB, ui->curveValueCB, ui->curveValueSB, ed->curve, 0); + if (ui->weightGV->isChecked()) { ed->weight = ui->weightCB->itemData(ui->weightCB->currentIndex()).toInt(); } else { diff --git a/companion/src/modeledit/expodialog.ui b/companion/src/modeledit/expodialog.ui index d3acba4e6..7a5f47d64 100644 --- a/companion/src/modeledit/expodialog.ui +++ b/companion/src/modeledit/expodialog.ui @@ -7,7 +7,7 @@ 0 0 370 - 289 + 291 @@ -26,7 +26,7 @@ - + :/icon.png:/icon.png @@ -308,14 +308,14 @@ If blank then the expo is considered to be "ON" all the time. - Curve/Exponential + Curve - + - + @@ -325,22 +325,22 @@ If blank then the expo is considered to be "ON" all the time. - + GV - - - - + + + + diff --git a/companion/src/modeledit/inputs.cpp b/companion/src/modeledit/inputs.cpp index 49eb8cf83..5970811b4 100644 --- a/companion/src/modeledit/inputs.cpp +++ b/companion/src/modeledit/inputs.cpp @@ -82,7 +82,7 @@ void InputsPanel::update() default: str += " "; break; }; - str += tr("Weight") + getGVarString(md->weight).rightJustified(6, ' '); + str += tr("Weight(%1)").arg(getGVarString(md->weight)); QString curveStr = md->curve.toString(); if (!curveStr.isEmpty()) { diff --git a/companion/src/modeledit/mixerdialog.cpp b/companion/src/modeledit/mixerdialog.cpp index 896cdad56..90d42b94f 100644 --- a/companion/src/modeledit/mixerdialog.cpp +++ b/companion/src/modeledit/mixerdialog.cpp @@ -6,7 +6,8 @@ MixerDialog::MixerDialog(QWidget *parent, MixData *mixdata, int stickMode) : QDialog(parent), ui(new Ui::MixerDialog), - md(mixdata) + md(mixdata), + lock(false) { ui->setupUi(this); QRegExp rx(CHAR_FOR_NAMES_REGEX); @@ -22,63 +23,51 @@ MixerDialog::MixerDialog(QWidget *parent, MixData *mixdata, int stickMode) : ui->sourceCB->removeItem(0); int limit=GetEepromInterface()->getCapability(OffsetWeight); - if (GetEepromInterface()->getCapability(GvarsAsWeight)) { - int gvars=0; - if (GetEepromInterface()->getCapability(HasVariants)) { - if ((GetCurrentFirmwareVariant() & GVARS_VARIANT)) { - gvars=1; - } - } else { + int gvars=0; + if (GetEepromInterface()->getCapability(HasVariants)) { + if ((GetCurrentFirmwareVariant() & GVARS_VARIANT)) { gvars=1; } - if (gvars==0) { - ui->offsetGV->setDisabled(true); - ui->weightGV->setDisabled(true); - if (md->weight>limit || md->weight<-limit) { - md->weight=100; - } - if (md->sOffset>limit || md->sOffset<-limit) { - md->sOffset=0; - } - } - populateGVCB(ui->offsetCB,md->sOffset); - populateGVCB(ui->weightCB,md->weight); - ui->weightSB->setMinimum(-limit); - ui->weightSB->setMaximum(limit); + } else { + gvars=1; + } + if (gvars==0) { + ui->offsetGV->setDisabled(true); + ui->weightGV->setDisabled(true); if (md->weight>limit || md->weight<-limit) { - ui->weightGV->setChecked(true); - ui->weightSB->hide(); - ui->weightCB->show(); - } else { - ui->weightGV->setChecked(false); - ui->weightSB->setValue(md->weight); - ui->weightSB->show(); - ui->weightCB->hide(); + md->weight=100; } - - ui->offsetSB->setMinimum(-limit); - ui->offsetSB->setMaximum(limit); if (md->sOffset>limit || md->sOffset<-limit) { - ui->offsetGV->setChecked(true); - ui->offsetSB->hide(); - ui->offsetCB->show(); - } - else { - ui->offsetGV->setChecked(false); - ui->offsetSB->setValue(md->sOffset); - ui->offsetSB->show(); - ui->offsetCB->hide(); + md->sOffset=0; } } - else { - ui->offsetGV->hide(); - ui->weightGV->hide(); - ui->offsetSB->setMinimum(-limit); - ui->offsetSB->setMaximum(limit); - ui->offsetSB->setValue(md->sOffset); - ui->weightSB->setMinimum(-limit); - ui->weightSB->setMaximum(limit); + populateGVCB(ui->offsetCB,md->sOffset); + populateGVCB(ui->weightCB,md->weight); + ui->weightSB->setMinimum(-limit); + ui->weightSB->setMaximum(limit); + if (md->weight>limit || md->weight<-limit) { + ui->weightGV->setChecked(true); + ui->weightSB->hide(); + ui->weightCB->show(); + } else { + ui->weightGV->setChecked(false); ui->weightSB->setValue(md->weight); + ui->weightSB->show(); + ui->weightCB->hide(); + } + + ui->offsetSB->setMinimum(-limit); + ui->offsetSB->setMaximum(limit); + if (md->sOffset>limit || md->sOffset<-limit) { + ui->offsetGV->setChecked(true); + ui->offsetSB->hide(); + ui->offsetCB->show(); + } + else { + ui->offsetGV->setChecked(false); + ui->offsetSB->setValue(md->sOffset); + ui->offsetSB->show(); + ui->offsetCB->hide(); } populateCurveReference(ui->curveTypeCB, ui->curveGVarCB, ui->curveValueCB, ui->curveValueSB, md->curve, 0); @@ -197,38 +186,43 @@ void MixerDialog::changeEvent(QEvent *e) void MixerDialog::widgetChanged() { - if (GetEepromInterface()->getCapability(GvarsAsWeight)) { - int gvars=0; - if (GetEepromInterface()->getCapability(HasVariants)) { - if ((GetCurrentFirmwareVariant() & GVARS_VARIANT)) { - gvars=1; - } - } else { - gvars=1; - } - if (gvars==1) { - if (ui->weightGV->isChecked()) { - ui->weightCB->show(); - ui->weightSB->hide(); - } else { - ui->weightCB->hide(); - ui->weightSB->show(); - } - if (ui->offsetGV->isChecked()) { - ui->offsetCB->show(); - ui->offsetSB->hide(); - } else { - ui->offsetCB->hide(); - ui->offsetSB->show(); - } - } - valuesChanged(); - QTimer::singleShot(0, this, SLOT(shrink())); + int gvars = 0; + if (GetEepromInterface()->getCapability(HasVariants)) { + if ((GetCurrentFirmwareVariant() & GVARS_VARIANT)) { + gvars = 1; } + } + else { + gvars = 1; + } + + if (gvars == 1) { + if (ui->weightGV->isChecked()) { + ui->weightCB->show(); + ui->weightSB->hide(); + } + else { + ui->weightCB->hide(); + ui->weightSB->show(); + } + if (ui->offsetGV->isChecked()) { + ui->offsetCB->show(); + ui->offsetSB->hide(); + } + else { + ui->offsetCB->hide(); + ui->offsetSB->show(); + } + } + + valuesChanged(); + QTimer::singleShot(0, this, SLOT(shrink())); } void MixerDialog::valuesChanged() { + if (!lock) { + lock = true; QCheckBox * cb_fp[] = {ui->cb_FP0,ui->cb_FP1,ui->cb_FP2,ui->cb_FP3,ui->cb_FP4,ui->cb_FP5,ui->cb_FP6,ui->cb_FP7,ui->cb_FP8 }; md->srcRaw = RawSource(ui->sourceCB->itemData(ui->sourceCB->currentIndex()).toInt()); if ((ui->sourceCB->itemData(ui->sourceCB->currentIndex()).toInt()-65536)<4) { @@ -256,13 +250,7 @@ void MixerDialog::valuesChanged() md->carryTrim = -(ui->trimCB->currentIndex()-1); md->noExpo = ui->MixDR_CB->checkState() ? 0 : 1; - // TODO md->curve = ui->curvesCB->currentIndex()-(numcurves)*GetEepromInterface()->getCapability(HasNegCurves); - // TODO if (ui->differentialGV->isChecked()) { - // TODO md->differential = ui->differentialCB->itemData(ui->differentialCB->currentIndex()).toInt(); - // TODO } else { - // TODO md->differential = ui->differentialSB->value(); - // TODO } - // populateCurveReference(QComboBox *curveTypeCB, QCheckBox *curveGVarCB, QComboBox *curveValueCB, QSpinBox *curveValueCB, CurveReference & curve, unsigned int flags) + retrieveCurveReference(ui->curveTypeCB, ui->curveGVarCB, ui->curveValueCB, ui->curveValueSB, md->curve, 0); md->swtch = RawSwitch(ui->switchesCB->itemData(ui->switchesCB->currentIndex()).toInt()); md->mixWarn = ui->warningCB->currentIndex(); @@ -286,6 +274,9 @@ void MixerDialog::valuesChanged() md->phases<<=1; } md->phases>>=1; + + lock = false; + } } void MixerDialog::shrink() { diff --git a/companion/src/modeledit/mixerdialog.h b/companion/src/modeledit/mixerdialog.h index fcf8c5b2f..9435e1892 100644 --- a/companion/src/modeledit/mixerdialog.h +++ b/companion/src/modeledit/mixerdialog.h @@ -26,6 +26,7 @@ private slots: private: Ui::MixerDialog *ui; MixData *md; + bool lock; }; #endif // MIXERDIALOG_H diff --git a/companion/src/modeledit/mixes.cpp b/companion/src/modeledit/mixes.cpp index b40f36f81..178ef6e4f 100644 --- a/companion/src/modeledit/mixes.cpp +++ b/companion/src/modeledit/mixes.cpp @@ -104,8 +104,9 @@ void MixesPanel::update() default: str += " "; break; }; - str += " " + getGVarString(md->weight, true).rightJustified(6, ' '); str += md->srcRaw.toString(); + str += " " + tr("Weight(%1)").arg(getGVarString(md->weight, true)); + unsigned int fpCount = GetEepromInterface()->getCapability(FlightPhases); if (GetEepromInterface()->getCapability(FlightPhases)) { if(md->phases) { @@ -149,16 +150,10 @@ void MixesPanel::update() } else if (md->carryTrim<0) { str += " " + RawSource(SOURCE_TYPE_TRIM, (-(md->carryTrim)-1)).toString(); } - if(md->noExpo) { - str += " " +tr("No DR/Expo"); - } - if (md->sOffset) str += " " + tr("Offset") + getGVarString(md->sOffset); - - QString curveStr = md->curve.toString(); - if (!curveStr.isEmpty()) { - str += " " + curveStr; - } + if (md->noExpo) str += " " + tr("No DR/Expo"); + if (md->sOffset) str += " " + tr("Offset(%1)").arg(getGVarString(md->sOffset)); + if (md->curve.value) str += " " + md->curve.toString(); int scale=GetEepromInterface()->getCapability(SlowScale); if (scale==0) diff --git a/companion/src/modeledit/setup.cpp b/companion/src/modeledit/setup.cpp index d71be9cc6..0302d367e 100644 --- a/companion/src/modeledit/setup.cpp +++ b/companion/src/modeledit/setup.cpp @@ -101,11 +101,14 @@ ModulePanel::ModulePanel(QWidget *parent, ModelData & model, ModuleData & module moduleIdx(moduleIdx), ui(new Ui::Module) { + lock = true; + ui->setupUi(this); QString label; if (moduleIdx < 0) { label = tr("Trainer Module"); + ui->trainerMode->setCurrentIndex(model.trainerMode); } else { ui->label_trainerMode->hide(); @@ -122,6 +125,7 @@ ModulePanel::ModulePanel(QWidget *parent, ModelData & model, ModuleData & module for (int i=0; iisAvailable((Protocol)i, moduleIdx)) { ui->protocol->addItem(getProtocolStr(i), (QVariant)i); + if (i == module.protocol) ui->protocol->setCurrentIndex(ui->protocol->count()-1); } } @@ -143,6 +147,8 @@ ModulePanel::ModulePanel(QWidget *parent, ModelData & model, ModuleData & module connect(slider, SIGNAL(valueChanged(int)), this, SLOT(onFailsafeChannelChanged(int))); } } + + lock = false; } ModulePanel::~ModulePanel() @@ -150,38 +156,46 @@ ModulePanel::~ModulePanel() delete ui; } -#define MASK_CHANNELS_COUNT 1 -#define MASK_RX_NUMBER 2 -#define MASK_CHANNELS_RANGE 4 -#define MASK_PPM_FIELDS 8 -#define MASK_FAILSAFES 16 +#define MASK_PROTOCOL 1 +#define MASK_CHANNELS_COUNT 2 +#define MASK_RX_NUMBER 4 +#define MASK_CHANNELS_RANGE 8 +#define MASK_PPM_FIELDS 16 +#define MASK_FAILSAFES 32 void ModulePanel::update() { unsigned int mask = 0; Protocol protocol = (Protocol)module.protocol; - switch (protocol) { - case OFF: - break; - case PXX_XJT_X16: - case PXX_XJT_D8: - case PXX_XJT_LR12: - case PXX_DJT: - mask |= MASK_CHANNELS_RANGE | MASK_CHANNELS_COUNT | MASK_RX_NUMBER; - if (protocol==PXX_XJT_X16) mask |= MASK_FAILSAFES; - break; - case LP45: - case DSM2: - case DSMX: - mask |= MASK_CHANNELS_RANGE | MASK_RX_NUMBER; - module.channelsCount = 8; - break; - default: - mask |= MASK_PPM_FIELDS | MASK_CHANNELS_RANGE| MASK_CHANNELS_COUNT; - break; + if (moduleIdx >= 0 || model.trainerMode != 0) { + mask |= MASK_PROTOCOL; + switch (protocol) { + case OFF: + break; + case PXX_XJT_X16: + case PXX_XJT_D8: + case PXX_XJT_LR12: + case PXX_DJT: + mask |= MASK_CHANNELS_RANGE | MASK_CHANNELS_COUNT | MASK_RX_NUMBER; + if (protocol==PXX_XJT_X16) mask |= MASK_FAILSAFES; + break; + case LP45: + case DSM2: + case DSMX: + mask |= MASK_CHANNELS_RANGE | MASK_RX_NUMBER; + module.channelsCount = 8; + break; + default: + mask |= MASK_PPM_FIELDS | MASK_CHANNELS_RANGE| MASK_CHANNELS_COUNT; + break; + } } + ui->label_protocol->setVisible(mask & MASK_PROTOCOL); + ui->protocol->setVisible(mask & MASK_PROTOCOL); + ui->label_rxNumber->setVisible(mask & MASK_PROTOCOL); + ui->rxNumber->setVisible(mask & MASK_PROTOCOL); ui->rxNumber->setEnabled(mask & MASK_RX_NUMBER); ui->rxNumber->setValue(model.modelId); ui->label_channelsStart->setVisible(mask & MASK_CHANNELS_RANGE); @@ -220,6 +234,15 @@ void ModulePanel::update() } } +void ModulePanel::on_trainerMode_currentIndexChanged(int index) +{ + if (!lock) { + model.trainerMode = index; + update(); + emit modified(); + } +} + void ModulePanel::on_protocol_currentIndexChanged(int index) { if (!lock) { @@ -302,6 +325,8 @@ Setup::Setup(QWidget *parent, ModelData & model): ModelPanel(parent, model), ui(new Ui::Setup) { + lock = true; + memset(modules, 0, sizeof(modules)); ui->setupUi(this); @@ -325,101 +350,99 @@ Setup::Setup(QWidget *parent, ModelData & model): ui->modulesLayout->addWidget(modules[C9X_NUM_MODULES]); } - if (!GetEepromInterface()->getCapability(ModelImage)) { - ui->image->hide(); - ui->modelImage_label->hide(); - ui->imagePreview->hide(); + if (GetEepromInterface()->getCapability(ModelImage)) { + QStringList items; + items.append(""); + QSettings settings("companion9x", "companion9x"); + QString path = settings.value("sdPath", ".").toString(); + path.append("/BMP/"); + QDir qd(path); + int vml = GetEepromInterface()->getCapability(VoicesMaxLength)+4; + if (qd.exists()) { + QStringList filters; + filters << "*.bmp" << "*.bmp"; + foreach ( QString file, qd.entryList(filters, QDir::Files) ) { + QFileInfo fi(file); + QString temp = fi.completeBaseName(); + if (!items.contains(temp) && temp.length() <= vml) { + items.append(temp); + } + } + } + if (!items.contains(model.bitmap)) { + items.append(model.bitmap); + } + items.sort(); + foreach ( QString file, items ) { + ui->image->addItem(file); + if (file == model.bitmap) { + ui->image->setCurrentIndex(ui->image->count()-1); + QString fileName = path; + fileName.append(model.bitmap); + fileName.append(".bmp"); + QImage image(fileName); + if (image.isNull()) { + fileName = path; + fileName.append(model.bitmap); + fileName.append(".BMP"); + image.load(fileName); + } + if (!image.isNull()) { + ui->imagePreview->setPixmap(QPixmap::fromImage(image.scaled( 64,32)));; + } + } + } + } + else { + ui->image->hide(); + ui->modelImage_label->hide(); + ui->imagePreview->hide(); + } + + // Beep Center checkboxes + int analogs = 4 + GetEepromInterface()->getCapability(Pots); + for (int i=0; igetCapability(RotaryEncoders); i++) { + QCheckBox * checkbox = new QCheckBox(this); + checkbox->setProperty("index", i); + checkbox->setText(icenterBeepLayout->addWidget(checkbox, 0, i+1); + connect(checkbox, SIGNAL(toggled(bool)), this, SLOT(onBeepCenterToggled(bool))); + centerBeepCheckboxes << checkbox; + } + ui->switchesStartupLayout->addItem(new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Minimum), 0, analogs+GetEepromInterface()->getCapability(RotaryEncoders)); + + // Startup switches warnings + ui->switchesStartupWarning->setProperty("index", 0); + connect(ui->switchesStartupWarning, SIGNAL(currentIndexChanged(int)), this, SLOT(startupSwitchEdited(int))); + for (int i=0; igetCapability(Switches)-1; i++) { + QLabel * label = new QLabel(); + QSlider * slider = new QSlider(); + slider->setProperty("index", i+1); + slider->setOrientation(Qt::Vertical); + slider->setMinimum(0); + slider->setSingleStep(1); + slider->setPageStep(1); + slider->setInvertedAppearance(true); + slider->setTickPosition(QSlider::TicksBothSides); + slider->setTickInterval(1); + slider->setMinimumSize(QSize(30, 50)); + slider->setMaximumSize(QSize(50, 50)); + if (IS_TARANIS(GetEepromInterface()->getBoard())) { + label->setText(switchesX9D[i]); + slider->setMaximum(i==5 ? 1 : 2); } else { - - QStringList items; - items.append(""); - QSettings settings("companion9x", "companion9x"); - QString path=settings.value("sdPath", ".").toString(); - path.append("/BMP/"); - QDir qd(path); - int vml= GetEepromInterface()->getCapability(VoicesMaxLength)+4; - if (qd.exists()) { - QStringList filters; - filters << "*.bmp" << "*.bmp"; - foreach ( QString file, qd.entryList(filters, QDir::Files) ) { - QFileInfo fi(file); - QString temp=fi.completeBaseName(); - if (!items.contains(temp) && temp.length()<=vml) { - items.append(temp); - } - } - } - if (!items.contains(model.bitmap)) { - items.append(model.bitmap); - } - items.sort(); - ui->image->clear(); - foreach ( QString file, items ) { - ui->image->addItem(file); - if (file==model.bitmap) { - ui->image->setCurrentIndex(ui->image->count()-1); - QString fileName=path; - fileName.append(model.bitmap); - fileName.append(".bmp"); - QImage image(fileName); - if (image.isNull()) { - fileName=path; - fileName.append(model.bitmap); - fileName.append(".BMP"); - image.load(fileName); - } - if (!image.isNull()) { - ui->imagePreview->setPixmap(QPixmap::fromImage(image.scaled( 64,32)));; - } - } - } + label->setText(switches9X[i]); + slider->setMaximum(i==0 ? 2 : 1); } + ui->switchesStartupLayout->addWidget(label, 0, i+1); + ui->switchesStartupLayout->addWidget(slider, 1, i+1); + connect(slider, SIGNAL(valueChanged(int)), this, SLOT(startupSwitchEdited(int))); + startupSwitchesSliders << slider; + } + ui->switchesStartupLayout->addItem(new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Minimum), 0, GetEepromInterface()->getCapability(Switches)); - // Beep Center checkboxes - int analogs = 4 + GetEepromInterface()->getCapability(Pots); - for (int i=0; igetCapability(RotaryEncoders); i++) { - QCheckBox * checkbox = new QCheckBox(this); - checkbox->setProperty("index", i); - checkbox->setText(icenterBeepLayout->addWidget(checkbox, 0, i+1); - connect(checkbox, SIGNAL(toggled(bool)), this, SLOT(onBeepCenterToggled(bool))); - centerBeepCheckboxes << checkbox; - } - ui->switchesStartupLayout->addItem(new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Minimum), 0, analogs+GetEepromInterface()->getCapability(RotaryEncoders)); - - // Startup switches warnings - ui->switchesStartupWarning->setProperty("index", 0); - connect(ui->switchesStartupWarning, SIGNAL(currentIndexChanged(int)), this, SLOT(startupSwitchEdited(int))); - for (int i=0; igetCapability(Switches)-1; i++) { - QLabel * label = new QLabel(); - QSlider * slider = new QSlider(); - slider->setProperty("index", i+1); - slider->setOrientation(Qt::Vertical); - slider->setMinimum(0); - slider->setSingleStep(1); - slider->setPageStep(1); - slider->setInvertedAppearance(true); - slider->setTickPosition(QSlider::TicksBothSides); - slider->setTickInterval(1); - slider->setMinimumSize(QSize(30, 50)); - slider->setMaximumSize(QSize(50, 50)); - if (IS_TARANIS(GetEepromInterface()->getBoard())) { - label->setText(switchesX9D[i]); - slider->setMaximum(i==5 ? 1 : 2); - } - else { - label->setText(switches9X[i]); - slider->setMaximum(i==0 ? 2 : 1); - } - ui->switchesStartupLayout->addWidget(label, 0, i+1); - ui->switchesStartupLayout->addWidget(slider, 1, i+1); - connect(slider, SIGNAL(valueChanged(int)), this, SLOT(startupSwitchEdited(int))); - startupSwitchesSliders << slider; - } - ui->switchesStartupLayout->addItem(new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Minimum), 0, GetEepromInterface()->getCapability(Switches)); - - lock = false; + lock = false; } Setup::~Setup() diff --git a/companion/src/modeledit/setup.h b/companion/src/modeledit/setup.h index e3fb8d313..7b33ffe5a 100644 --- a/companion/src/modeledit/setup.h +++ b/companion/src/modeledit/setup.h @@ -46,6 +46,7 @@ class ModulePanel : public ModelPanel virtual void update(); private slots: + void on_trainerMode_currentIndexChanged(int index); void on_protocol_currentIndexChanged(int index); void on_ppmDelay_editingFinished(); void on_channelsCount_editingFinished(); diff --git a/radio/src/eeprom_conversions.cpp b/radio/src/eeprom_conversions.cpp index 1d92fc813..0e325d247 100644 --- a/radio/src/eeprom_conversions.cpp +++ b/radio/src/eeprom_conversions.cpp @@ -178,7 +178,7 @@ PACK(typedef struct { swstate_t switchWarningStates; - char gvar_names[5][LEN_GVAR_NAME]; + char gvar_names[5][LEN_GVAR_NAME]; FrSkyData_v215 frsky; From bea06a17722fdfb7bcd1337ab02e024e40c0e3b8 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Tue, 14 Jan 2014 07:13:15 +0100 Subject: [PATCH 128/308] Update DONATIONS.txt --- DONATIONS.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/DONATIONS.txt b/DONATIONS.txt index 7f0710e4f..fef01b05d 100644 --- a/DONATIONS.txt +++ b/DONATIONS.txt @@ -287,3 +287,4 @@ Gordon Stahl Josep Clodas Sola Thierry Martin Peter Mauro +Mitchell Brenner From d945052c82c027012f4c246293431b3e7b168c66 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Tue, 14 Jan 2014 20:06:01 +0100 Subject: [PATCH 129/308] Removes the core in companion simu, compiled on VC++. A compiler bug? I don't get it... --- companion/src/mdichild.cpp | 17 ++++++++++------- companion/src/xsimulatordialog.cpp | 4 ++-- radio/src/opentx.cpp | 2 +- radio/src/simpgmspace.cpp | 5 +++++ 4 files changed, 18 insertions(+), 10 deletions(-) diff --git a/companion/src/mdichild.cpp b/companion/src/mdichild.cpp index f1654a530..f7461d149 100644 --- a/companion/src/mdichild.cpp +++ b/companion/src/mdichild.cpp @@ -144,13 +144,16 @@ void MdiChild::on_SimulateTxButton_clicked() { if (GetEepromInterface()->getSimulator()) { if (GetEepromInterface()->getCapability(SimulatorType)==1) { - xsimulatorDialog sd(this); - sd.loadParams(radioData); - sd.exec(); - } else { - simulatorDialog sd(this); - sd.loadParams(radioData); - sd.exec(); + xsimulatorDialog * sd = new xsimulatorDialog(this); + sd->loadParams(radioData); + sd->exec(); + delete sd; + } + else { + simulatorDialog * sd = new simulatorDialog(this); + sd->loadParams(radioData); + sd->exec(); + delete sd; } } else { diff --git a/companion/src/xsimulatordialog.cpp b/companion/src/xsimulatordialog.cpp index a048532f6..3c35f07fa 100644 --- a/companion/src/xsimulatordialog.cpp +++ b/companion/src/xsimulatordialog.cpp @@ -194,12 +194,12 @@ void xsimulatorDialog::onButtonPressed(int value) void xsimulatorDialog::onTimerEvent() { static unsigned int lcd_counter = 0; + if (!simulator->timer10ms()) { - QMessageBox::critical(this, "companion9x", QString(tr("Firmware %1 error: %2")).arg(txInterface->getName()).arg(simulator->getError())); timer->stop(); return; } - + getValues(); if (g_modelIdx >= 0) { diff --git a/radio/src/opentx.cpp b/radio/src/opentx.cpp index c5dd5adce..ee634a7d2 100644 --- a/radio/src/opentx.cpp +++ b/radio/src/opentx.cpp @@ -73,7 +73,7 @@ OS_TID btTaskId; OS_STK btStack[BT_STACK_SIZE]; #endif -#if defined(CPUARM) && defined(DEBUG) +#if defined(DEBUG) OS_TID debugTaskId; OS_STK debugStack[DEBUG_STACK_SIZE]; #endif diff --git a/radio/src/simpgmspace.cpp b/radio/src/simpgmspace.cpp index 48aecb6c7..10c7abd4a 100644 --- a/radio/src/simpgmspace.cpp +++ b/radio/src/simpgmspace.cpp @@ -345,6 +345,11 @@ void StartMainThread(bool tests) getcwd(simuSdDirectory, 1024); #endif +#if defined(CPUARM) + pthread_mutex_init(&mixerMutex, NULL); + pthread_mutex_init(&audioMutex, NULL); +#endif + main_thread_running = (tests ? 1 : 2); pthread_create(&main_thread_pid, NULL, &main_thread, NULL); } From 0f0db5e1d37c8ea9f48978edfd5a6a3f5b27f4ec Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Tue, 14 Jan 2014 22:44:10 +0100 Subject: [PATCH 130/308] Companion core in simu now understood: the stickMode was completely out, and the Tx trims were shifted! --- companion/src/firmwares/opentx/opentxGruvin9xsimulator.cpp | 6 +++--- companion/src/firmwares/opentx/opentxM128simulator.cpp | 6 +++--- companion/src/firmwares/opentx/opentxSky9xsimulator.cpp | 6 +++--- companion/src/firmwares/opentx/opentxTaranisSimulator.cpp | 6 +++--- companion/src/firmwares/opentx/opentxsimulator.cpp | 6 +++--- companion/src/xsimulatordialog.cpp | 1 + 6 files changed, 16 insertions(+), 15 deletions(-) diff --git a/companion/src/firmwares/opentx/opentxGruvin9xsimulator.cpp b/companion/src/firmwares/opentx/opentxGruvin9xsimulator.cpp index 646043839..0d2f07771 100644 --- a/companion/src/firmwares/opentx/opentxGruvin9xsimulator.cpp +++ b/companion/src/firmwares/opentx/opentxGruvin9xsimulator.cpp @@ -98,7 +98,7 @@ bool hasExtendedTrims() uint8_t getStickMode() { - return g_eeGeneral.stickMode; + return limit(0, g_eeGeneral.stickMode, 3); } } @@ -160,7 +160,7 @@ void Open9xGruvin9xSimulator::setValues(TxInputs &inputs) void Open9xGruvin9xSimulator::setTrim(unsigned int idx, int value) { - idx = Open9xGruvin9x::modn12x3[4*getStickMode() + idx] - 1; + idx = Open9xGruvin9x::modn12x3[4*getStickMode() + idx]; uint8_t phase = getTrimFlightPhase(getFlightPhase(), idx); setTrimValue(phase, idx, value); } @@ -174,7 +174,7 @@ void Open9xGruvin9xSimulator::getTrims(Trims & trims) } for (int i=0; i<2; i++) { - uint8_t idx = Open9xGruvin9x::modn12x3[4*getStickMode() + i] - 1; + uint8_t idx = Open9xGruvin9x::modn12x3[4*getStickMode() + i]; int16_t tmp = trims.values[i]; trims.values[i] = trims.values[idx]; trims.values[idx] = tmp; diff --git a/companion/src/firmwares/opentx/opentxM128simulator.cpp b/companion/src/firmwares/opentx/opentxM128simulator.cpp index 505c05fe3..f169a10d3 100644 --- a/companion/src/firmwares/opentx/opentxM128simulator.cpp +++ b/companion/src/firmwares/opentx/opentxM128simulator.cpp @@ -96,7 +96,7 @@ bool hasExtendedTrims() uint8_t getStickMode() { - return g_eeGeneral.stickMode; + return limit(0, g_eeGeneral.stickMode, 3); } } @@ -154,7 +154,7 @@ void Open9xM128Simulator::setValues(TxInputs &inputs) void Open9xM128Simulator::setTrim(unsigned int idx, int value) { - idx = Open9xM128::modn12x3[4*getStickMode() + idx] - 1; + idx = Open9xM128::modn12x3[4*getStickMode() + idx]; uint8_t phase = getTrimFlightPhase(getFlightPhase(), idx); setTrimValue(phase, idx, value); } @@ -168,7 +168,7 @@ void Open9xM128Simulator::getTrims(Trims & trims) } for (int i=0; i<2; i++) { - uint8_t idx = Open9xM128::modn12x3[4*getStickMode() + i] - 1; + uint8_t idx = Open9xM128::modn12x3[4*getStickMode() + i]; int16_t tmp = trims.values[i]; trims.values[i] = trims.values[idx]; trims.values[idx] = tmp; diff --git a/companion/src/firmwares/opentx/opentxSky9xsimulator.cpp b/companion/src/firmwares/opentx/opentxSky9xsimulator.cpp index 1b4d42793..9f444c808 100644 --- a/companion/src/firmwares/opentx/opentxSky9xsimulator.cpp +++ b/companion/src/firmwares/opentx/opentxSky9xsimulator.cpp @@ -125,7 +125,7 @@ bool hasExtendedTrims() uint8_t getStickMode() { - return g_eeGeneral.stickMode; + return limit(0, g_eeGeneral.stickMode, 3); } } @@ -193,7 +193,7 @@ void Open9xSky9xSimulator::setValues(TxInputs &inputs) void Open9xSky9xSimulator::setTrim(unsigned int idx, int value) { - idx = Open9xSky9x::modn12x3[4*getStickMode() + idx] - 1; + idx = Open9xSky9x::modn12x3[4*getStickMode() + idx]; uint8_t phase = getTrimFlightPhase(getFlightPhase(), idx); setTrimValue(phase, idx, value); } @@ -207,7 +207,7 @@ void Open9xSky9xSimulator::getTrims(Trims & trims) } for (int i=0; i<2; i++) { - uint8_t idx = Open9xSky9x::modn12x3[4*getStickMode() + i] - 1; + uint8_t idx = Open9xSky9x::modn12x3[4*getStickMode() + i]; int16_t tmp = trims.values[i]; trims.values[i] = trims.values[idx]; trims.values[idx] = tmp; diff --git a/companion/src/firmwares/opentx/opentxTaranisSimulator.cpp b/companion/src/firmwares/opentx/opentxTaranisSimulator.cpp index e48cbf9af..ae4424797 100644 --- a/companion/src/firmwares/opentx/opentxTaranisSimulator.cpp +++ b/companion/src/firmwares/opentx/opentxTaranisSimulator.cpp @@ -128,7 +128,7 @@ bool hasExtendedTrims() uint8_t getStickMode() { - return g_eeGeneral.stickMode; + return limit(0, g_eeGeneral.stickMode, 3); } void resetTrims() @@ -200,7 +200,7 @@ void OpentxTaranisSimulator::setValues(TxInputs &inputs) void OpentxTaranisSimulator::setTrim(unsigned int idx, int value) { - idx = Open9xX9D::modn12x3[4*getStickMode() + idx] - 1; + idx = Open9xX9D::modn12x3[4*getStickMode() + idx]; uint8_t phase = getTrimFlightPhase(getFlightPhase(), idx); setTrimValue(phase, idx, value); } @@ -214,7 +214,7 @@ void OpentxTaranisSimulator::getTrims(Trims & trims) } for (int i=0; i<2; i++) { - uint8_t idx = Open9xX9D::modn12x3[4*getStickMode() + i] - 1; + uint8_t idx = Open9xX9D::modn12x3[4*getStickMode() + i]; int16_t tmp = trims.values[i]; trims.values[i] = trims.values[idx]; trims.values[idx] = tmp; diff --git a/companion/src/firmwares/opentx/opentxsimulator.cpp b/companion/src/firmwares/opentx/opentxsimulator.cpp index a406305b2..9037afa86 100644 --- a/companion/src/firmwares/opentx/opentxsimulator.cpp +++ b/companion/src/firmwares/opentx/opentxsimulator.cpp @@ -100,7 +100,7 @@ bool hasExtendedTrims() uint8_t getStickMode() { - return g_eeGeneral.stickMode; + return limit(0, g_eeGeneral.stickMode, 3); } } @@ -162,7 +162,7 @@ void Open9xSimulator::setValues(TxInputs &inputs) void Open9xSimulator::setTrim(unsigned int idx, int value) { - idx = Open9x::modn12x3[4*getStickMode() + idx] - 1; + idx = Open9x::modn12x3[4*getStickMode() + idx]; uint8_t phase = getTrimFlightPhase(getFlightPhase(), idx); setTrimValue(phase, idx, value); } @@ -176,7 +176,7 @@ void Open9xSimulator::getTrims(Trims & trims) } for (int i=0; i<2; i++) { - uint8_t idx = Open9x::modn12x3[4*getStickMode() + i] - 1; + uint8_t idx = Open9x::modn12x3[4*getStickMode() + i]; int16_t tmp = trims.values[i]; trims.values[i] = trims.values[idx]; trims.values[idx] = tmp; diff --git a/companion/src/xsimulatordialog.cpp b/companion/src/xsimulatordialog.cpp index 3c35f07fa..cb06a169c 100644 --- a/companion/src/xsimulatordialog.cpp +++ b/companion/src/xsimulatordialog.cpp @@ -196,6 +196,7 @@ void xsimulatorDialog::onTimerEvent() static unsigned int lcd_counter = 0; if (!simulator->timer10ms()) { + QMessageBox::critical(this, "companion9x", tr("Firmware %1 error: %2").arg(txInterface->getName()).arg(simulator->getError())); timer->stop(); return; } From f11c961be48b6aaaab14d7b60665a09d1ecc1c0b Mon Sep 17 00:00:00 2001 From: Dvogonen Date: Wed, 15 Jan 2014 08:28:11 +0100 Subject: [PATCH 131/308] Enlarged and moved icons --- companion/src/mainwindow.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/companion/src/mainwindow.cpp b/companion/src/mainwindow.cpp index 6c0c6fdaa..ac773fb39 100644 --- a/companion/src/mainwindow.cpp +++ b/companion/src/mainwindow.cpp @@ -109,6 +109,7 @@ downloadDialog_forWait(NULL) } setUnifiedTitleAndToolBarOnMac(true); this->setWindowIcon(QIcon(":/icon.png")); + this->setIconSize(QSize(32,32)); QNetworkProxyFactory::setUseSystemConfiguration(true); setAcceptDrops(true); @@ -1921,7 +1922,9 @@ void MainWindow::createToolBars() editToolBar->addAction(copyAct); editToolBar->addAction(pasteAct); - burnToolBar = addToolBar(tr("Write")); + + burnToolBar = new QToolBar(tr("Write")); + addToolBar( Qt::LeftToolBarArea, burnToolBar ); burnToolBar->addAction(burnToAct); burnToolBar->addAction(burnFromAct); burnToolBar->addSeparator(); From 888895b60bafd94b25a3b842c06d27836318a529 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Wed, 15 Jan 2014 11:50:00 +0100 Subject: [PATCH 132/308] Corrections on Curves in MixerDialog and ExpoDialog (introduction of CurveGroup to share code) --- companion/src/CMakeLists.txt | 1 + companion/src/eeprominterface.cpp | 2 +- companion/src/eeprominterface.h | 5 + .../src/firmwares/opentx/opentxinterface.cpp | 8 +- companion/src/helpers.cpp | 121 +++++++++++++----- companion/src/helpers.h | 26 +++- companion/src/main.cpp | 26 ++-- companion/src/modeledit/expodialog.cpp | 25 +++- companion/src/modeledit/expodialog.ui | 97 +++++++++++--- companion/src/modeledit/inputs.cpp | 21 ++- companion/src/modeledit/mixerdialog.cpp | 11 +- 11 files changed, 249 insertions(+), 94 deletions(-) diff --git a/companion/src/CMakeLists.txt b/companion/src/CMakeLists.txt index 0c8f7e70b..b5f1e17bd 100644 --- a/companion/src/CMakeLists.txt +++ b/companion/src/CMakeLists.txt @@ -191,6 +191,7 @@ SET( companion9x_MOC_HDRS myslider.h modelconfigdialog.h qcustomplot.h + helpers.h ) SET( companion9x_UIS diff --git a/companion/src/eeprominterface.cpp b/companion/src/eeprominterface.cpp index a8736f9e1..998e8d9bf 100644 --- a/companion/src/eeprominterface.cpp +++ b/companion/src/eeprominterface.cpp @@ -412,7 +412,7 @@ QString RawSwitch::toString() QString CurveReference::toString() { if (value == 0) { - return ""; + return "----"; } else { switch(type) { diff --git a/companion/src/eeprominterface.h b/companion/src/eeprominterface.h index f5c5762af..02cc9650d 100644 --- a/companion/src/eeprominterface.h +++ b/companion/src/eeprominterface.h @@ -1008,6 +1008,11 @@ enum Capability { CSFunc, LCDWidth, GetThrSwitch, + VirtualInputs, + LuaInputs, + LimitsPer1000, + EnhancedCurves, + TelemetryInternalAlarms }; enum UseContext { diff --git a/companion/src/firmwares/opentx/opentxinterface.cpp b/companion/src/firmwares/opentx/opentxinterface.cpp index c07f0875a..73738e0b4 100644 --- a/companion/src/firmwares/opentx/opentxinterface.cpp +++ b/companion/src/firmwares/opentx/opentxinterface.cpp @@ -694,7 +694,13 @@ int Open9xInterface::getCapability(const Capability capability) case LCDWidth: return (IS_TARANIS(board) ? 212 : 128) ; case GetThrSwitch: - return (IS_TARANIS(board) ?DSW_SF1 : DSW_THR) ; + return (IS_TARANIS(board) ? DSW_SF1 : DSW_THR) ; + case VirtualInputs: + case LuaInputs: + case LimitsPer1000: + case EnhancedCurves: + case TelemetryInternalAlarms: + return IS_TARANIS(board); default: return 0; } diff --git a/companion/src/helpers.cpp b/companion/src/helpers.cpp index 142b65b43..27094edda 100644 --- a/companion/src/helpers.cpp +++ b/companion/src/helpers.cpp @@ -471,14 +471,35 @@ void populatePhasesCB(QComboBox *b, int value) b->setCurrentIndex(value + GetEepromInterface()->getCapability(FlightPhases)); } -void populateCurveReference(QComboBox *curveTypeCB, QCheckBox *curveGVarCB, QComboBox *curveValueCB, QSpinBox *curveValueSB, CurveReference & curve, unsigned int flags) +CurveGroup::CurveGroup(QComboBox *curveTypeCB, QCheckBox *curveGVarCB, QComboBox *curveValueCB, QSpinBox *curveValueSB, CurveReference & curve, unsigned int flags): + QObject(), + curveTypeCB(curveTypeCB), + curveGVarCB(curveGVarCB), + curveValueCB(curveValueCB), + curveValueSB(curveValueSB), + curve(curve), + flags(flags), + lock(false), + lastType(-1) { - if (curveTypeCB->count() == 0) { - curveTypeCB->addItem(QObject::tr("Diff")); - curveTypeCB->addItem(QObject::tr("Expo")); - curveTypeCB->addItem(QObject::tr("Func")); - curveTypeCB->addItem(QObject::tr("Curve")); - } + curveTypeCB->addItem(tr("Diff")); + curveTypeCB->addItem(tr("Expo")); + curveTypeCB->addItem(tr("Func")); + curveTypeCB->addItem(tr("Curve")); + + curveValueCB->setMaxVisibleItems(10); + + connect(curveTypeCB, SIGNAL(currentIndexChanged(int)), this, SLOT(valuesChanged())); + connect(curveGVarCB, SIGNAL(stateChanged(int)), this, SLOT(gvarCBChanged(int))); + connect(curveValueCB, SIGNAL(currentIndexChanged(int)), this, SLOT(valuesChanged())); + connect(curveValueSB, SIGNAL(editingFinished()), this, SLOT(valuesChanged())); + + update(); +} + +void CurveGroup::update() +{ + lock = true; curveTypeCB->setCurrentIndex(curve.type); @@ -486,7 +507,10 @@ void populateCurveReference(QComboBox *curveTypeCB, QCheckBox *curveGVarCB, QCom curveGVarCB->show(); if (curve.value > 100 || curve.value < -100) { curveGVarCB->setChecked(true); - populateGVCB(curveValueCB, curve.value); + if (lastType != CurveReference::CURVE_REF_DIFF && lastType != CurveReference::CURVE_REF_EXPO) { + lastType = curve.type; + populateGVCB(curveValueCB, curve.value); + } curveValueCB->show(); curveValueSB->hide(); } @@ -503,19 +527,26 @@ void populateCurveReference(QComboBox *curveTypeCB, QCheckBox *curveGVarCB, QCom curveGVarCB->hide(); curveValueSB->hide(); curveValueCB->show(); - curveValueCB->setMaxVisibleItems(10); switch (curve.type) { case CurveReference::CURVE_REF_FUNC: - for (int i=0; i<=6/*TODO constant*/; i++) { - curveValueCB->addItem(CurveReference(CurveReference::CURVE_REF_FUNC, i).toString()); + if (lastType != curve.type) { + lastType = curve.type; + curveValueCB->clear(); + for (int i=0; i<=6/*TODO constant*/; i++) { + curveValueCB->addItem(CurveReference(CurveReference::CURVE_REF_FUNC, i).toString()); + } } curveValueCB->setCurrentIndex(curve.value); break; case CurveReference::CURVE_REF_CUSTOM: { int numcurves = GetEepromInterface()->getCapability(NumCurves); - for (int i=-numcurves; iaddItem(CurveReference(CurveReference::CURVE_REF_CUSTOM, i).toString()); + if (lastType != curve.type) { + lastType = curve.type; + curveValueCB->clear(); + for (int i=-numcurves; iaddItem(CurveReference(CurveReference::CURVE_REF_CUSTOM, i).toString()); + } } curveValueCB->setCurrentIndex(curve.value+numcurves); break; @@ -524,31 +555,49 @@ void populateCurveReference(QComboBox *curveTypeCB, QCheckBox *curveGVarCB, QCom break; } } + + lock = false; } -void retrieveCurveReference(QComboBox *curveTypeCB, QCheckBox *curveGVarCB, QComboBox *curveValueCB, QSpinBox *curveValueSB, CurveReference & curve, unsigned int flags) +void CurveGroup::gvarCBChanged(int state) { - switch (curveTypeCB->currentIndex()) { - case 0: - case 1: - { - int value; - if (curveGVarCB->isChecked()) - value = curveValueCB->itemData(curveValueCB->currentIndex()).toInt(); - else - value = curveValueSB->value(); - qDebug() << value; - curve = CurveReference(curveTypeCB->currentIndex() == 0 ? CurveReference::CURVE_REF_DIFF : CurveReference::CURVE_REF_EXPO, value); - break; + if (!lock) { + if (state) { + curve.value = 10000; // TODO constant in EEpromInterface ... } - case 2: - curve = CurveReference(CurveReference::CURVE_REF_FUNC, curveValueCB->currentIndex()); - break; - case 3: - curve = CurveReference(CurveReference::CURVE_REF_CUSTOM, curveValueCB->currentIndex() - GetEepromInterface()->getCapability(NumCurves)); - break; + else { + curve.value = 0; // TODO could be better + } + + update(); + } +} + +void CurveGroup::valuesChanged() +{ + if (!lock) { + switch (curveTypeCB->currentIndex()) { + case 0: + case 1: + { + int value; + if (curveGVarCB->isChecked()) + value = curveValueCB->itemData(curveValueCB->currentIndex()).toInt(); + else + value = curveValueSB->value(); + curve = CurveReference(curveTypeCB->currentIndex() == 0 ? CurveReference::CURVE_REF_DIFF : CurveReference::CURVE_REF_EXPO, value); + break; + } + case 2: + curve = CurveReference(CurveReference::CURVE_REF_FUNC, curveValueCB->currentIndex()); + break; + case 3: + curve = CurveReference(CurveReference::CURVE_REF_CUSTOM, curveValueCB->currentIndex() - GetEepromInterface()->getCapability(NumCurves)); + break; + } + + update(); } - populateCurveReference(curveTypeCB, curveGVarCB, curveValueCB, curveValueSB, curve, flags); } void populateTrimUseCB(QComboBox *b, unsigned int phase) @@ -831,7 +880,9 @@ void populateGVCB(QComboBox *b, int value) { int selected=0; int nullitem; + b->clear(); + int pgvars = GetEepromInterface()->getCapability(Gvars); for (int i=-pgvars; i<=-1; i++) { int16_t gval = (int16_t)(-10000+i); @@ -841,12 +892,15 @@ void populateGVCB(QComboBox *b, int value) selected=1; } } + b->addItem("---", 0); + nullitem=b->count()-1; if (value == 0) { b->setCurrentIndex(b->count()-1); selected=1; } + for (int i=1; i<=pgvars; i++) { int16_t gval = (int16_t)(10000+i); b->addItem(QObject::tr("GV%1").arg(i), gval); @@ -855,6 +909,7 @@ void populateGVCB(QComboBox *b, int value) selected=1; } } + if (selected==0) b->setCurrentIndex(nullitem); } diff --git a/companion/src/helpers.h b/companion/src/helpers.h index 511f726c1..33a3d21df 100644 --- a/companion/src/helpers.h +++ b/companion/src/helpers.h @@ -29,6 +29,29 @@ void populateTTraceCB(QComboBox *b, int value); void populateRotEncCB(QComboBox *b, int value, int renumber); void populateBacklightCB(QComboBox *b, const uint8_t value); +class CurveGroup : public QObject { + + Q_OBJECT + + public: + CurveGroup(QComboBox *curveTypeCB, QCheckBox *curveGVarCB, QComboBox *curveValueCB, QSpinBox *curveValueSB, CurveReference & curve, unsigned int flags=0); + void update(); + + protected slots: + void gvarCBChanged(int); + void valuesChanged(); + + protected: + QComboBox *curveTypeCB; + QCheckBox *curveGVarCB; + QComboBox *curveValueCB; + QSpinBox *curveValueSB; + CurveReference & curve; + unsigned int flags; + bool lock; + int lastType; +}; + #define POPULATE_ONOFF 0x01 #define POPULATE_MSWITCHES 0x02 #define POPULATE_AND_SWITCHES 0x04 @@ -42,9 +65,6 @@ void populateFuncParamArmTCB(QComboBox *b, ModelData * g_model, char * value, QS void populatePhasesCB(QComboBox *b, int value); void populateTrimUseCB(QComboBox *b, unsigned int phase); void populateGvarUseCB(QComboBox *b, unsigned int phase); -void populateCurveReference(QComboBox *curveTypeCB, QCheckBox *curveGVarCB, QComboBox *curveValueCB, QSpinBox *curveValueSB, CurveReference & curve, unsigned int flags); -void retrieveCurveReference(QComboBox *curveTypeCB, QCheckBox *curveGVarCB, QComboBox *curveValueCB, QSpinBox *curveValueSB, CurveReference & curve, unsigned int flags); -void populateCurvesCB(QComboBox *b, int value); void populateCustomScreenFieldCB(QComboBox *b, unsigned int value, bool last, int hubproto); void populateTimerSwitchCB(QComboBox *b, int value); QString getCustomSwitchStr(CustomSwData * customSw, const ModelData & model); diff --git a/companion/src/main.cpp b/companion/src/main.cpp index 9cdbf430e..ed5cc25b0 100644 --- a/companion/src/main.cpp +++ b/companion/src/main.cpp @@ -77,10 +77,10 @@ class MyProxyStyle : public QProxyStyle int main(int argc, char *argv[]) { Q_INIT_RESOURCE(companion9x); - QApplication app(argc, argv); - app.setApplicationName("Companion9x"); + QApplication * app = new QApplication(argc, argv); + app->setApplicationName("Companion9x"); #ifdef __APPLE__ - app.setStyle(new MyProxyStyle); + app->setStyle(new MyProxyStyle); #endif QString dir; if(argc) dir = QFileInfo(argv[0]).canonicalPath() + "/lang"; @@ -95,20 +95,20 @@ int main(int argc, char *argv[]) qtTranslator.load((QString)"qt_" + locale.left(2), QLibraryInfo::location(QLibraryInfo::TranslationsPath)); // qDebug() << locale; // qtTranslator.load("qt_" + QLocale::system().name(), QLibraryInfo::location(QLibraryInfo::TranslationsPath)); - app.installTranslator(&companion9xTranslator); - app.installTranslator(&qtTranslator); + app->installTranslator(&companion9xTranslator); + app->installTranslator(&qtTranslator); QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8")); QString firmware_id = settings.value("firmware", default_firmware_variant.id).toString(); firmware_id.replace("open9x", "opentx"); firmware_id.replace("x9da", "taranis"); - QPixmap pixmap; + QPixmap * pixmap; if (firmware_id.contains("taranis")) - pixmap = QPixmap(":/images/splasht.png"); + pixmap = new QPixmap(":/images/splasht.png"); else - pixmap = QPixmap(":/images/splash.png"); - QSplashScreen *splash = new QSplashScreen(pixmap); + pixmap = new QPixmap(":/images/splash.png"); + QSplashScreen *splash = new QSplashScreen(*pixmap); RegisterFirmwares(); @@ -116,15 +116,15 @@ int main(int argc, char *argv[]) current_firmware_variant = GetFirmwareVariant(firmware_id); // qDebug() << current_firmware_variant; - MainWindow mainWin; + MainWindow * mainWin = new MainWindow(); if (showSplash) { splash->show(); QTimer::singleShot(1000*SPLASH_TIME, splash, SLOT(close())); - QTimer::singleShot(1000*SPLASH_TIME, &mainWin, SLOT(show())); + QTimer::singleShot(1000*SPLASH_TIME, mainWin, SLOT(show())); } else { - mainWin.show(); + mainWin->show(); } - return app.exec(); + return app->exec(); } diff --git a/companion/src/modeledit/expodialog.cpp b/companion/src/modeledit/expodialog.cpp index 1a664cb20..6a027bcf6 100644 --- a/companion/src/modeledit/expodialog.cpp +++ b/companion/src/modeledit/expodialog.cpp @@ -51,9 +51,11 @@ ExpoDialog::ExpoDialog(QWidget *parent, ExpoData *expoData, int stickMode) : } populateSwitchCB(ui->switchesCB,ed->swtch); - populateCurveReference(ui->curveTypeCB, ui->curveGVarCB, ui->curveValueCB, ui->curveValueSB, ed->curve, 0); - ui->modeCB->setCurrentIndex(ed->mode-1); + // TODO keep this group, same in MixerDialog + CurveGroup * curveGroup = new CurveGroup(ui->curveTypeCB, ui->curveGVarCB, ui->curveValueCB, ui->curveValueSB, ed->curve); + + ui->sideCB->setCurrentIndex(ed->mode-1); ui->label_expo->hide(); @@ -77,6 +79,19 @@ ExpoDialog::ExpoDialog(QWidget *parent, ExpoData *expoData, int stickMode) : } } + if (GetEepromInterface()->getCapability(VirtualInputs)) { + ui->sideLabel->hide(); + ui->sideCB->hide(); + } + else { + ui->sourceLabel->hide(); + ui->sourceCB->hide(); + ui->scaleLabel->hide(); + ui->scaleSB->hide(); + ui->trimLabel->hide(); + ui->trimCB->hide(); + } + int expolength=GetEepromInterface()->getCapability(HasExpoNames); if (!expolength) { ui->label_name->hide(); @@ -101,7 +116,7 @@ ExpoDialog::ExpoDialog(QWidget *parent, ExpoData *expoData, int stickMode) : connect(ui->weightCB,SIGNAL(currentIndexChanged(int)),this,SLOT(valuesChanged())); connect(ui->weightSB,SIGNAL(editingFinished()),this,SLOT(valuesChanged())); connect(ui->switchesCB,SIGNAL(currentIndexChanged(int)),this,SLOT(valuesChanged())); - connect(ui->modeCB,SIGNAL(currentIndexChanged(int)),this,SLOT(valuesChanged())); + connect(ui->sideCB,SIGNAL(currentIndexChanged(int)),this,SLOT(valuesChanged())); connect(ui->expoGV,SIGNAL(stateChanged(int)),this,SLOT(widgetChanged())); connect(ui->weightGV,SIGNAL(stateChanged(int)),this,SLOT(widgetChanged())); for (int i=0; i<9; i++) { @@ -164,15 +179,13 @@ void ExpoDialog::valuesChanged() { QCheckBox * cb_fp[] = {ui->cb_FP0,ui->cb_FP1,ui->cb_FP2,ui->cb_FP3,ui->cb_FP4,ui->cb_FP5,ui->cb_FP6,ui->cb_FP7,ui->cb_FP8 }; - retrieveCurveReference(ui->curveTypeCB, ui->curveGVarCB, ui->curveValueCB, ui->curveValueSB, ed->curve, 0); - if (ui->weightGV->isChecked()) { ed->weight = ui->weightCB->itemData(ui->weightCB->currentIndex()).toInt(); } else { ed->weight = ui->weightSB->value(); } ed->swtch = RawSwitch(ui->switchesCB->itemData(ui->switchesCB->currentIndex()).toInt()); - ed->mode = ui->modeCB->currentIndex() + 1; + ed->mode = ui->sideCB->currentIndex() + 1; int i=0; for (i=0; iexpoName->text().toAscii().length(); i++) { ed->name[i]=ui->expoName->text().toAscii().at(i); diff --git a/companion/src/modeledit/expodialog.ui b/companion/src/modeledit/expodialog.ui index 7a5f47d64..03c45a13b 100644 --- a/companion/src/modeledit/expodialog.ui +++ b/companion/src/modeledit/expodialog.ui @@ -44,14 +44,14 @@ - + Weight - + @@ -85,14 +85,14 @@ - + Expo - + @@ -126,14 +126,14 @@ - + Flight modes - + @@ -290,14 +290,14 @@ - + Switch - + Switch used by the expo. @@ -305,14 +305,14 @@ If blank then the expo is considered to be "ON" all the time. - + Curve - + @@ -343,15 +343,15 @@ If blank then the expo is considered to be "ON" all the time. - - + + Stick Side - - + + NEG @@ -369,7 +369,7 @@ If blank then the expo is considered to be "ON" all the time. - + @@ -388,7 +388,7 @@ If blank then the expo is considered to be "ON" all the time. - + Qt::Vertical @@ -401,6 +401,71 @@ If blank then the expo is considered to be "ON" all the time. + + + + The source for the mixer + + + + + + + + No + + + + + Yes + + + + + + + + Source + + + + + + + Include Trim + + + + + + + Scale + + + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600; text-decoration: underline;">Delay ans Slow</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-weight:600; text-decoration: underline;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">These values control the speed and delay of the output of the mix. </p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">If Delay is not zero the actuation of the mix will be delayed by the specified amount of seconds.</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">If Slow is not zero then the speed of the mix will be set by the value specified -&gt; the value states the number of seconds it takes to transit from -100 to 100.</p></body></html> + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + 1 + + + diff --git a/companion/src/modeledit/inputs.cpp b/companion/src/modeledit/inputs.cpp index 5970811b4..b529e47df 100644 --- a/companion/src/modeledit/inputs.cpp +++ b/companion/src/modeledit/inputs.cpp @@ -76,19 +76,18 @@ void InputsPanel::update() str = " "; } - switch (md->mode) { - case (1): str += " <-"; break; - case (2): str += " ->"; break; - default: str += " "; break; - }; - - str += tr("Weight(%1)").arg(getGVarString(md->weight)); - - QString curveStr = md->curve.toString(); - if (!curveStr.isEmpty()) { - str += " " + curveStr; + if (!GetEepromInterface()->getCapability(VirtualInputs)) { + switch (md->mode) { + case (1): str += " <-"; break; + case (2): str += " ->"; break; + default: str += " "; break; + }; } + str += " " + tr("Weight(%1)").arg(getGVarString(md->weight)); + + if (md->curve.value) str += " " + md->curve.toString(); + if (GetEepromInterface()->getCapability(FlightPhases)) { if(md->phases) { if (md->phases!=(unsigned int)(1<getCapability(FlightPhases))-1) { diff --git a/companion/src/modeledit/mixerdialog.cpp b/companion/src/modeledit/mixerdialog.cpp index 90d42b94f..e0bb19965 100644 --- a/companion/src/modeledit/mixerdialog.cpp +++ b/companion/src/modeledit/mixerdialog.cpp @@ -70,7 +70,7 @@ MixerDialog::MixerDialog(QWidget *parent, MixData *mixdata, int stickMode) : ui->offsetCB->hide(); } - populateCurveReference(ui->curveTypeCB, ui->curveGVarCB, ui->curveValueCB, ui->curveValueSB, md->curve, 0); + CurveGroup * curveGroup = new CurveGroup(ui->curveTypeCB, ui->curveGVarCB, ui->curveValueCB, ui->curveValueSB, md->curve); ui->MixDR_CB->setChecked(md->noExpo==0); if (!GetEepromInterface()->getCapability(MixesWithoutExpo)) { @@ -143,12 +143,6 @@ MixerDialog::MixerDialog(QWidget *parent, MixData *mixdata, int stickMode) : connect(ui->sourceCB,SIGNAL(currentIndexChanged(int)),this,SLOT(valuesChanged())); connect(ui->weightCB,SIGNAL(currentIndexChanged(int)),this,SLOT(valuesChanged())); connect(ui->offsetCB,SIGNAL(currentIndexChanged(int)),this,SLOT(valuesChanged())); - - connect(ui->curveTypeCB,SIGNAL(currentIndexChanged(int)),this,SLOT(valuesChanged())); - connect(ui->curveGVarCB,SIGNAL(stateChanged(int)),this,SLOT(valuesChanged())); - connect(ui->curveValueCB,SIGNAL(currentIndexChanged(int)),this,SLOT(valuesChanged())); - connect(ui->curveValueSB,SIGNAL(editingFinished()),this,SLOT(valuesChanged())); - connect(ui->weightSB,SIGNAL(editingFinished()),this,SLOT(valuesChanged())); connect(ui->offsetSB,SIGNAL(editingFinished()),this,SLOT(valuesChanged())); connect(ui->weightGV,SIGNAL(stateChanged(int)),this,SLOT(widgetChanged())); // TODO why the same slot? @@ -249,9 +243,6 @@ void MixerDialog::valuesChanged() } md->carryTrim = -(ui->trimCB->currentIndex()-1); md->noExpo = ui->MixDR_CB->checkState() ? 0 : 1; - - retrieveCurveReference(ui->curveTypeCB, ui->curveGVarCB, ui->curveValueCB, ui->curveValueSB, md->curve, 0); - md->swtch = RawSwitch(ui->switchesCB->itemData(ui->switchesCB->currentIndex()).toInt()); md->mixWarn = ui->warningCB->currentIndex(); md->mltpx = (MltpxValue)ui->mltpxCB->currentIndex(); From 691b52572f1f059a608b9aea7c112e516d0b9d79 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Wed, 15 Jan 2014 14:05:33 +0100 Subject: [PATCH 133/308] Fixes in ExpoDialog. Some more code refactoring --- companion/src/helpers.cpp | 28 ++++ companion/src/helpers.h | 1 + companion/src/modeledit/expodialog.cpp | 6 - companion/src/modeledit/expodialog.ui | 195 ++++++++++-------------- companion/src/modeledit/inputs.cpp | 42 +---- companion/src/modeledit/inputs.h | 14 +- companion/src/modeledit/mixerdialog.cpp | 8 +- companion/src/modeledit/mixerdialog.ui | 2 +- companion/src/modeledit/mixes.cpp | 49 ++---- 9 files changed, 134 insertions(+), 211 deletions(-) diff --git a/companion/src/helpers.cpp b/companion/src/helpers.cpp index 27094edda..7c5046b31 100644 --- a/companion/src/helpers.cpp +++ b/companion/src/helpers.cpp @@ -1351,6 +1351,34 @@ QString getProtocol(ModelData * g_model) return str; } +QString getPhasesStr(unsigned int phases, ModelData & model) +{ + int numphases = GetEepromInterface()->getCapability(FlightPhases); + + if (numphases && phases) { + QString str; + int count = 0; + if (phases == (unsigned int)(1< 0) str += QString(", "); + str += getPhaseName(i+1, model.phaseData[i].name); + } + } + } + if (count > 1) + return QObject::tr("Flight modes(%1)").arg(str); + else + return QObject::tr("Flight mode(%1)").arg(str); + } + else { + return ""; + } +} + float c9xexpou(float point, float coeff) { float x=point*1024.0/100.0; diff --git a/companion/src/helpers.h b/companion/src/helpers.h index 33a3d21df..bc61e2894 100644 --- a/companion/src/helpers.h +++ b/companion/src/helpers.h @@ -69,6 +69,7 @@ void populateCustomScreenFieldCB(QComboBox *b, unsigned int value, bool last, in void populateTimerSwitchCB(QComboBox *b, int value); QString getCustomSwitchStr(CustomSwData * customSw, const ModelData & model); QString getProtocolStr(const int proto); +QString getPhasesStr(unsigned int phases, ModelData & model); #define POPULATE_SOURCES 1 #define POPULATE_TRIMS 2 diff --git a/companion/src/modeledit/expodialog.cpp b/companion/src/modeledit/expodialog.cpp index 6a027bcf6..bb2df0c65 100644 --- a/companion/src/modeledit/expodialog.cpp +++ b/companion/src/modeledit/expodialog.cpp @@ -57,8 +57,6 @@ ExpoDialog::ExpoDialog(QWidget *parent, ExpoData *expoData, int stickMode) : ui->sideCB->setCurrentIndex(ed->mode-1); - ui->label_expo->hide(); - if (!GetEepromInterface()->getCapability(FlightPhases)) { ui->label_phases->hide(); for (int i=0; i<9; i++) { @@ -105,8 +103,6 @@ ExpoDialog::ExpoDialog(QWidget *parent, ExpoData *expoData, int stickMode) : valuesChanged(); connect(ui->expoName,SIGNAL(editingFinished()),this,SLOT(valuesChanged())); - connect(ui->expoCB,SIGNAL(currentIndexChanged(int)),this,SLOT(valuesChanged())); - connect(ui->expoSB,SIGNAL(editingFinished()),this,SLOT(valuesChanged())); connect(ui->curveTypeCB,SIGNAL(currentIndexChanged(int)),this,SLOT(valuesChanged())); connect(ui->curveGVarCB,SIGNAL(stateChanged(int)),this,SLOT(valuesChanged())); @@ -117,7 +113,6 @@ ExpoDialog::ExpoDialog(QWidget *parent, ExpoData *expoData, int stickMode) : connect(ui->weightSB,SIGNAL(editingFinished()),this,SLOT(valuesChanged())); connect(ui->switchesCB,SIGNAL(currentIndexChanged(int)),this,SLOT(valuesChanged())); connect(ui->sideCB,SIGNAL(currentIndexChanged(int)),this,SLOT(valuesChanged())); - connect(ui->expoGV,SIGNAL(stateChanged(int)),this,SLOT(widgetChanged())); connect(ui->weightGV,SIGNAL(stateChanged(int)),this,SLOT(widgetChanged())); for (int i=0; i<9; i++) { connect(cb_fp[i],SIGNAL(toggled(bool)),this,SLOT(valuesChanged())); @@ -174,7 +169,6 @@ void ExpoDialog::widgetChanged() QTimer::singleShot(0, this, SLOT(shrink())); } - void ExpoDialog::valuesChanged() { QCheckBox * cb_fp[] = {ui->cb_FP0,ui->cb_FP1,ui->cb_FP2,ui->cb_FP3,ui->cb_FP4,ui->cb_FP5,ui->cb_FP6,ui->cb_FP7,ui->cb_FP8 }; diff --git a/companion/src/modeledit/expodialog.ui b/companion/src/modeledit/expodialog.ui index 03c45a13b..baf7c6b14 100644 --- a/companion/src/modeledit/expodialog.ui +++ b/companion/src/modeledit/expodialog.ui @@ -7,7 +7,7 @@ 0 0 370 - 291 + 331 @@ -44,14 +44,14 @@ - + Weight - + @@ -85,47 +85,6 @@ - - - - Expo - - - - - - - - - GV - - - - - - - - - - Phase used by the expo. - - - - - - - Qt::Horizontal - - - - 40 - 0 - - - - - - @@ -305,44 +264,6 @@ If blank then the expo is considered to be "ON" all the time. - - - - Curve - - - - - - - - - - - - The curve used by the expo - - - - - - - GV - - - - - - - - - - - - - - - @@ -396,7 +317,7 @@ If blank then the expo is considered to be "ON" all the time. 20 - 40 + 30 @@ -408,41 +329,6 @@ If blank then the expo is considered to be "ON" all the time. - - - - - No - - - - - Yes - - - - - - - - Source - - - - - - - Include Trim - - - - - - - Scale - - - @@ -466,6 +352,79 @@ p, li { white-space: pre-wrap; } + + + + Scale + + + + + + + Include Trim + + + + + + + Source + + + + + + + + No + + + + + Yes + + + + + + + + Curve + + + + + + + + + + + + The curve used by the expo + + + + + + + GV + + + + + + + + + + + + + + + diff --git a/companion/src/modeledit/inputs.cpp b/companion/src/modeledit/inputs.cpp index b529e47df..d8882f01b 100644 --- a/companion/src/modeledit/inputs.cpp +++ b/companion/src/modeledit/inputs.cpp @@ -88,43 +88,10 @@ void InputsPanel::update() if (md->curve.value) str += " " + md->curve.toString(); - if (GetEepromInterface()->getCapability(FlightPhases)) { - if(md->phases) { - if (md->phases!=(unsigned int)(1<getCapability(FlightPhases))-1) { - int mask=1; - int first=0; - for (int i=0; igetCapability(FlightPhases);i++) { - if (!(md->phases & mask)) { - first++; - } - mask <<=1; - } - if (first>1) { - str += " " + tr("Flight modes") + QString("("); - } else { - str += " " + tr("Flight mode") + QString("("); - } - mask=1; - first=1; - for (int i=0; igetCapability(FlightPhases);i++) { - if (!(md->phases & mask)) { - if (!first) { - str += QString(", ")+ QString("%1").arg(getPhaseName(i+1, model.phaseData[i].name)); - } else { - str += QString("%1").arg(getPhaseName(i+1,model.phaseData[i].name)); - first=0; - } - } - mask <<=1; - } - str += QString(")"); - } - else { - str += tr("DISABLED")+QString(" !!!"); - } - } - } - if (md->swtch.type != SWITCH_TYPE_NONE) str += " " + tr("Switch") + QString("(%1)").arg(md->swtch.toString()); + QString phasesStr = getPhasesStr(md->phases, model); + if (!phasesStr.isEmpty()) str += " " + phasesStr; + + if (md->swtch.type != SWITCH_TYPE_NONE) str += " " + tr("Switch(%1)").arg(md->swtch.toString()); if (GetEepromInterface()->getCapability(HasExpoNames)) { QString ExpoName; @@ -231,7 +198,6 @@ void InputsPanel::setSelectedByExpoList(QList list) } } - void InputsPanel::exposDelete(bool ask) { QMessageBox::StandardButton ret = QMessageBox::No; diff --git a/companion/src/modeledit/inputs.h b/companion/src/modeledit/inputs.h index d4e71ce5d..4164caac9 100644 --- a/companion/src/modeledit/inputs.h +++ b/companion/src/modeledit/inputs.h @@ -22,6 +22,13 @@ class InputsPanel : public ModelPanel void expolistWidget_customContextMenuRequested(QPoint pos); void expolistWidget_doubleClicked(QModelIndex index); void expolistWidget_KeyPress(QKeyEvent *event); + void exposDelete(bool ask=true); + void exposCut(); + void exposCopy(); + void exposPaste(); + void exposDuplicate(); + void expoOpen(QListWidgetItem *item = NULL); + void expoAdd(); private: GeneralSettings & generalSettings; @@ -36,13 +43,6 @@ class InputsPanel : public ModelPanel void exposDeleteList(QList list); QList createExpoListFromSelected(); void setSelectedByExpoList(QList list); - void exposDelete(bool ask=true); - void exposCut(); - void exposCopy(); - void exposPaste(); - void exposDuplicate(); - void expoOpen(QListWidgetItem *item = NULL); - void expoAdd(); void pasteExpoMimeData(const QMimeData * mimeData, int destIdx); }; diff --git a/companion/src/modeledit/mixerdialog.cpp b/companion/src/modeledit/mixerdialog.cpp index e0bb19965..d0d4c3560 100644 --- a/companion/src/modeledit/mixerdialog.cpp +++ b/companion/src/modeledit/mixerdialog.cpp @@ -49,7 +49,8 @@ MixerDialog::MixerDialog(QWidget *parent, MixData *mixdata, int stickMode) : ui->weightGV->setChecked(true); ui->weightSB->hide(); ui->weightCB->show(); - } else { + } + else { ui->weightGV->setChecked(false); ui->weightSB->setValue(md->weight); ui->weightSB->show(); @@ -70,6 +71,11 @@ MixerDialog::MixerDialog(QWidget *parent, MixData *mixdata, int stickMode) : ui->offsetCB->hide(); } + if (GetEepromInterface()->getCapability(VirtualInputs)) { + ui->trimLabel->hide(); + ui->trimCB->hide(); + } + CurveGroup * curveGroup = new CurveGroup(ui->curveTypeCB, ui->curveGVarCB, ui->curveValueCB, ui->curveValueSB, md->curve); ui->MixDR_CB->setChecked(md->noExpo==0); diff --git a/companion/src/modeledit/mixerdialog.ui b/companion/src/modeledit/mixerdialog.ui index c41bf2563..ed14a05b9 100644 --- a/companion/src/modeledit/mixerdialog.ui +++ b/companion/src/modeledit/mixerdialog.ui @@ -179,7 +179,7 @@ p, li { white-space: pre-wrap; } - + Include Trim diff --git a/companion/src/modeledit/mixes.cpp b/companion/src/modeledit/mixes.cpp index 178ef6e4f..c6ca3d070 100644 --- a/companion/src/modeledit/mixes.cpp +++ b/companion/src/modeledit/mixes.cpp @@ -105,49 +105,18 @@ void MixesPanel::update() }; str += md->srcRaw.toString(); + str += " " + tr("Weight(%1)").arg(getGVarString(md->weight, true)); - unsigned int fpCount = GetEepromInterface()->getCapability(FlightPhases); - if (GetEepromInterface()->getCapability(FlightPhases)) { - if(md->phases) { - if (md->phases!=(unsigned int)(1<phases & mask)) { - first++; - } - mask <<=1; - } - if (first>1) { - str += " " + tr("Flight modes") + QString("("); - } else { - str += " " + tr("Flight mode") + QString("("); - } - mask=1; - first=1; - for (unsigned int i=0; iphases & mask)) { - if (!first) { - str += QString(", ")+ QString("%1").arg(getPhaseName(i+1, model.phaseData[i].name)); - } - else { - str += QString("%1").arg(getPhaseName(i+1,model.phaseData[i].name)); - first=0; - } - } - mask <<=1; - } - str += QString(")"); - } else { - str += tr("DISABLED")+QString(" !!!"); - } - } + QString phasesStr = getPhasesStr(md->phases, model); + if (!phasesStr.isEmpty()) str += " " + phasesStr; + + if (md->swtch.type != SWITCH_TYPE_NONE) str += " " + tr("Switch(%1)").arg(md->swtch.toString()); + + if (md->carryTrim>0) { + str += " " + tr("No Trim"); } - if(md->swtch.type != SWITCH_TYPE_NONE) str += " " + tr("Switch") + QString("(%1)").arg(md->swtch.toString()); - if(md->carryTrim>0) { - str += " " +tr("No Trim"); - } else if (md->carryTrim<0) { + else if (md->carryTrim<0) { str += " " + RawSource(SOURCE_TYPE_TRIM, (-(md->carryTrim)-1)).toString(); } From 9b6c0e4fd16ccf677f8159278798a3e7d5ad4dd3 Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Wed, 15 Jan 2014 14:41:54 +0100 Subject: [PATCH 134/308] Multiplex was collated to source --- companion/src/modeledit/mixes.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/companion/src/modeledit/mixes.cpp b/companion/src/modeledit/mixes.cpp index c6ca3d070..63a4bcb9c 100644 --- a/companion/src/modeledit/mixes.cpp +++ b/companion/src/modeledit/mixes.cpp @@ -104,7 +104,7 @@ void MixesPanel::update() default: str += " "; break; }; - str += md->srcRaw.toString(); + str += " " + md->srcRaw.toString(); str += " " + tr("Weight(%1)").arg(getGVarString(md->weight, true)); From ba9f55cb67be1a49612a91d29301f535640af28d Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Wed, 15 Jan 2014 16:30:54 +0100 Subject: [PATCH 135/308] Merge was resolved the wrong way, files that should have been deleted were reinstated --- companion/src/modeledit.ui | 24527 ---------------------------------- radio/src/translations/cz.h | 751 -- radio/src/translations/de.h | 754 -- radio/src/translations/fr.h | 751 -- radio/src/translations/it.h | 751 -- radio/src/translations/pl.h | 752 -- radio/src/translations/pt.h | 751 -- radio/src/translations/se.h | 756 -- 8 files changed, 29793 deletions(-) delete mode 100644 companion/src/modeledit.ui delete mode 100644 radio/src/translations/cz.h delete mode 100644 radio/src/translations/de.h delete mode 100644 radio/src/translations/fr.h delete mode 100644 radio/src/translations/it.h delete mode 100644 radio/src/translations/pl.h delete mode 100644 radio/src/translations/pt.h delete mode 100644 radio/src/translations/se.h diff --git a/companion/src/modeledit.ui b/companion/src/modeledit.ui deleted file mode 100644 index 398ff4704..000000000 --- a/companion/src/modeledit.ui +++ /dev/null @@ -1,24527 +0,0 @@ - - - ModelEdit - - - - 0 - 0 - 1130 - 735 - - - - - 0 - 0 - - - - Dialog - - - - :/icon.png:/icon.png - - - true - - - - - - Simulate - - - - :/images/simulate.png:/images/simulate.png - - - - - - - QTabWidget::North - - - 10 - - - - Setup - - - - - - true - - - 0 - - - true - - - false - - - - ModelSetup - - - - - - Timer2 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 0 - 0 - - - - - 0 - 0 - - - - Disable Throttle Warning - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 0 - 0 - - - - - - - - Extended Limits - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Throttle Trim - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Throttle Source - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Qt::Horizontal - - - - - - - Center beep - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Trim Increment - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 0 - 0 - - - - - Exponential - - - - - Extra Fine - - - - - Fine - - - - - Medium - - - - - Coarse - - - - - - - - Qt::Horizontal - - - - - - - - 0 - 0 - - - - Switch startup Warning - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - 0 - - - 6 - - - - - - 0 - 0 - - - - Qt::Vertical - - - - - - - - 0 - 0 - - - - Qt::Vertical - - - - - - - - 0 - 0 - - - - Qt::Vertical - - - - - - - - 0 - 0 - - - - 3POS - - - Qt::AlignCenter - - - - - - - - 0 - 0 - - - - Check - - - Qt::AlignCenter - - - - - - - Qt::LeftToRight - - - THR - - - - - - - - ON - - - - - OFF - - - - - - - - Qt::LeftToRight - - - RUD - - - - - - - Qt::LeftToRight - - - ELE - - - - - - - Qt::LeftToRight - - - AIL - - - - - - - Qt::LeftToRight - - - GEA - - - - - - - true - - - - ID0 - - - - - ID1 - - - - - ID2 - - - - - - - - - 0 - 0 - - - - Qt::Vertical - - - - - - - - 0 - 0 - - - - Qt::Vertical - - - - - - - - 0 - 0 - - - - Qt::Vertical - - - - - - - - - QLayout::SetMinimumSize - - - 0 - - - 0 - - - - - - 0 - 0 - - - - - ON - - - - - OFF - - - - - - - - - 0 - 0 - - - - SB - - - Qt::AlignCenter - - - - - - - - 0 - 0 - - - - SD - - - Qt::AlignCenter - - - - - - - - 0 - 0 - - - - SA - - - Qt::AlignCenter - - - - - - - - 0 - 0 - - - - Check - - - Qt::AlignCenter - - - - - - - - 0 - 0 - - - - - 0 - 50 - - - - - 16777215 - 50 - - - - 0 - - - 2 - - - 1 - - - 0 - - - Qt::Vertical - - - true - - - QSlider::TicksBothSides - - - 1 - - - - - - - - 0 - 0 - - - - - 0 - 50 - - - - - 16777215 - 50 - - - - 0 - - - 2 - - - 1 - - - 0 - - - Qt::Vertical - - - true - - - QSlider::TicksBothSides - - - 1 - - - - - - - - 0 - 0 - - - - SC - - - Qt::AlignCenter - - - - - - - - 0 - 0 - - - - - 0 - 50 - - - - - 16777215 - 50 - - - - 0 - - - 2 - - - 1 - - - 0 - - - Qt::Vertical - - - true - - - QSlider::TicksBothSides - - - 1 - - - - - - - - 0 - 0 - - - - SG - - - Qt::AlignCenter - - - - - - - - 0 - 0 - - - - SE - - - Qt::AlignCenter - - - - - - - - 0 - 0 - - - - - 0 - 50 - - - - - 16777215 - 50 - - - - 0 - - - 2 - - - 1 - - - 0 - - - Qt::Vertical - - - true - - - QSlider::TicksBothSides - - - 1 - - - - - - - - 0 - 0 - - - - - 0 - 50 - - - - - 16777215 - 50 - - - - 0 - - - 2 - - - 1 - - - 0 - - - Qt::Vertical - - - true - - - QSlider::TicksBothSides - - - 1 - - - - - - - - 0 - 0 - - - - SF - - - Qt::AlignCenter - - - - - - - - 0 - 0 - - - - - 0 - 50 - - - - - 16777215 - 50 - - - - 0 - - - 2 - - - 1 - - - 0 - - - Qt::Vertical - - - true - - - QSlider::TicksBothSides - - - 1 - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - 0 - 0 - - - - - 0 - 50 - - - - - 16777215 - 50 - - - - 0 - - - 1 - - - 1 - - - 1 - - - 0 - - - Qt::Vertical - - - true - - - QSlider::TicksBothSides - - - 1 - - - - - - - - - - - REa - - - - - - - RUD - - - - - - - ELE - - - - - - - THR - - - - - - - AIL - - - - - - - P1 - - - - - - - P2 - - - - - - - P3 - - - - - - - REb - - - - - - - RS - - - - - - - - - - - - - - - - Throttle2Trig - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 16777215 - 16777215 - - - - - - - - - 0 - 0 - - - - - - - - - - - Instant Trim - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 0 - 0 - - - - - - - - - - - - - - - Extended Trims - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - - - - - - - - - - - - - Reverse Throttle Operation - - - - - - - Reverse throttle operation. -If this is checked the throttle will be reversed. Idle will be forward, trim will also be reversed and the throttle warning will be reversed as well. - - - - - - - - - - - - Qt::Vertical - - - QSizePolicy::MinimumExpanding - - - - 20 - 0 - - - - - - - - - - - - - - - Master - - - - - Slave - - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - usec - - - 100 - - - 800 - - - 50 - - - 300 - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - PPM delay - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Pulse Shift (polarity) - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Trainer Mode - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - mSec - - - 1 - - - 12.500000000000000 - - - 32.500000000000000 - - - 0.500000000000000 - - - 22.500000000000000 - - - - - - - - 0 - 0 - - - - - Negative - - - - - Positive - - - - - - - - PPM Frame Length - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - font-weight:bold; - - - Master/Trainer Port - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - ch - - - 1 - - - 16 - - - 2 - - - 8 - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - ch - - - 1 - - - 32 - - - 1 - - - 8 - - - - - - - - 0 - 0 - - - - Channels - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Start - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - - - - - - - - - - PPM delay - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 0 - 0 - - - - Polarity - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 0 - 0 - - - - - Negative - - - - - Positive - - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - usec - - - 100 - - - 800 - - - 50 - - - 300 - - - - - - - - 0 - 0 - - - - PPM Frame Length - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - mSec - - - 1 - - - 12.500000000000000 - - - 32.500000000000000 - - - 0.500000000000000 - - - 22.500000000000000 - - - - - - - - 0 - 0 - - - - - - - 1 - - - 125 - - - 1 - - - 1 - - - - - - - Qt::Horizontal - - - - 5 - 20 - - - - - - - - - 0 - 0 - - - - DSM Type - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 0 - 0 - - - - - LP4/LP5 - - - - - DSM2only - - - - - DSM2/DSMX - - - - - - - - - 0 - 0 - - - - RX Number - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - PPM - - - - - Silver A - - - - - Silver B - - - - - Silver C - - - - - Trac 09 - - - - - - - - font-weight: bold; - - - RF Module 1 - - - - - - - - 0 - 0 - - - - Protocol - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Qt::Vertical - - - QSizePolicy::MinimumExpanding - - - - 20 - 0 - - - - - - - - - - Start - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - ch - - - 1 - - - 32 - - - 1 - - - 1 - - - - - - - - 0 - 0 - - - - Channels - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - ch - - - 1 - - - 16 - - - 2 - - - 8 - - - - - - - - - - - - - - - - - - PPM delay - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - usec - - - 100 - - - 800 - - - 50 - - - 300 - - - - - - - - 0 - 0 - - - - - Negative - - - - - Positive - - - - - - - - - 0 - 0 - - - - Polarity - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 0 - 0 - - - - RX Number - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 0 - 0 - - - - - - - 1 - - - 125 - - - 1 - - - 1 - - - - - - - - 0 - 0 - - - - DSM Type - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 0 - 0 - - - - - LP4/LP5 - - - - - DSM2only - - - - - DSM2/DSMX - - - - - - - - font-weight:bold; - - - RF Module 2 - - - - - - - Qt::Vertical - - - QSizePolicy::MinimumExpanding - - - - 20 - 0 - - - - - - - - - 0 - 0 - - - - PPM Frame Length - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - mSec - - - 1 - - - 12.500000000000000 - - - 32.500000000000000 - - - 0.500000000000000 - - - 22.500000000000000 - - - - - - - Qt::Horizontal - - - - 5 - 20 - - - - - - - - - PPM - - - - - Silver A - - - - - Silver B - - - - - Silver C - - - - - Trac 09 - - - - - - - - - 0 - 0 - - - - Protocol - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - Start - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - ch - - - 1 - - - 32 - - - 1 - - - 1 - - - - - - - - 0 - 0 - - - - Channels - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - ch - - - 1 - - - 16 - - - 2 - - - 8 - - - - - - - - - - - - - - Throttle Expo - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Model Name - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Timer1 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - 2 - - - - - true - - - QDateTimeEdit::MinuteSection - - - mm:ss - - - - - - - - Count Down - - - - - Count Up - - - - - - - - - - - - 0 - 0 - - - - TriggerB - - - - - - - - - - Persistent - - - - - - - (00:00:00) - - - - - - - MinuteBeep - - - - - - - CountDownBeep - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - 2 - - - - - true - - - QDateTimeEdit::MinuteSection - - - mm:ss - - - - - - - - Count Down - - - - - Count Up - - - - - - - - - - - - 0 - 0 - - - - TriggerB - - - - - - - - - - Persistent - - - - - - - (00:00:00) - - - - - - - MinuteBeep - - - - - - - CountDownBeep - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - - 0 - 0 - - - - 10 - - - - - - - Model Voice - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 0 - 0 - - - - - - - 260 - - - 511 - - - 1 - - - 260 - - - - - - - Model Image - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - 0 - 0 - - - - - 64 - 32 - - - - - 64 - 32 - - - - QFrame::Panel - - - QFrame::Raised - - - - - - true - - - - - - - - - - - - - Failsafe - - - - - - External module - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - false - - - true - - - -100 - - - 100 - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - false - - - true - - - -100 - - - 100 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - CH12 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - false - - - true - - - -100 - - - 100 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - CH01 - - - - - - - CH04 - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - false - - - true - - - -100 - - - 100 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - CH10 - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - false - - - true - - - -100 - - - 100 - - - - - - - CH02 - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - false - - - true - - - -100 - - - 100 - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - false - - - true - - - -100 - - - 100 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - CH11 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - CH03 - - - - - - - CH09 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - false - - - true - - - -100 - - - 100 - - - - - - - CH05 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - false - - - true - - - -100 - - - 100 - - - - - - - CH06 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - false - - - true - - - -100 - - - 100 - - - - - - - CH07 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - false - - - true - - - -100 - - - 100 - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - false - - - true - - - -100 - - - 100 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - CH08 - - - - - - - Qt::Vertical - - - - - - - CH13 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - false - - - true - - - -100 - - - 100 - - - - - - - CH14 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - false - - - true - - - -100 - - - 100 - - - - - - - CH15 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - false - - - true - - - -100 - - - 100 - - - - - - - CH16 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - false - - - true - - - -100 - - - 100 - - - - - - - Qt::Vertical - - - - - - - Qt::Vertical - - - - - - - - - Failsafe Mode - - - - - - - - Hold - - - - - Custom - - - - - No Pulses - - - - - - - - - - - - - Qt::Vertical - - - - 20 - 1 - - - - - - - - Internal Module - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - CH14 - - - - - - - CH09 - - - - - - - CH02 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - CH01 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - CH04 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - CH12 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - CH10 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - CH03 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - CH11 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - CH05 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - CH06 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - CH07 - - - - - - - CH08 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - CH13 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - CH15 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - CH16 - - - - - - - -100 - - - 100 - - - Qt::Horizontal - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - Qt::Vertical - - - - - - - Qt::Vertical - - - - - - - Qt::Vertical - - - - - - - - - Failsafe Mode - - - - - - - - Hold - - - - - Custom - - - - - No Pulses - - - - - - - - - - - - - - - - - - Heli Setup - - - - - - Qt::Horizontal - - - - 647 - 20 - - - - - - - - Swash Ring - - - - - - - - - - Swash Type - - - - - - - - Off - - - - - 120 - - - - - 120X - - - - - 140 - - - - - 90 - - - - - - - - - - Invert Elevator - - - - - - - Invert Aileron - - - - - - - Invert Collective - - - - - - - - - Invert - - - - - - - Collective - - - - - - - - - - 0 - - - 100 - - - 1 - - - 0 - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - Flight Modes - - - - - - - - 0 - - - - Flight Mode 0 (Default) - - - - - - - - Fade In - - - - - - - 1 - - - - - - - 1 - - - - - - - Fade Out - - - - - - - 6 - - - - - - - Flight Mode Name - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - Qt::Vertical - - - QSlider::TicksBothSides - - - 25 - - - - - - - Qt::Vertical - - - false - - - false - - - QSlider::TicksBothSides - - - 25 - - - - - - - - 0 - 0 - - - - Qt::Horizontal - - - QSlider::TicksBothSides - - - 25 - - - - - - - - 0 - 0 - - - - Qt::Horizontal - - - QSlider::TicksBothSides - - - 25 - - - - - - - - - trim1 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - 1 - 0 - - - - Qt::AlignCenter - - - true - - - -896 - - - 896 - - - - - - - trim2 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 1 - 0 - - - - Qt::AlignCenter - - - true - - - -896 - - - 896 - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - trim4 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 1 - 0 - - - - Qt::AlignCenter - - - true - - - -896 - - - 896 - - - - - - - trim3 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 1 - 0 - - - - Qt::AlignCenter - - - true - - - -896 - - - 896 - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - Qt::Horizontal - - - - - - - - - - - - GVAR1 - - - - - - - 6 - - - - - - - 6 - - - - - - - -100 - - - 100 - - - - - - - GVAR2 - - - - - - - 6 - - - - - - - -100 - - - 100 - - - - - - - GVAR3 - - - - - - - -100 - - - 100 - - - - - - - GVAR4 - - - - - - - 6 - - - - - - - -100 - - - 100 - - - - - - - GVAR5 - - - - - - - 6 - - - - - - - -100 - - - 100 - - - - - - - - - - - - - - - - - - - - - - -100 - - - 100 - - - - - - - - - - GVAR6 - - - - - - - 6 - - - - - - - GVAR7 - - - - - - - - - - - - - 6 - - - - - - - -100 - - - 100 - - - - - - - - - - - - - Rotary encoder B - - - - - - - -100 - - - 100 - - - - - - - -100 - - - 100 - - - - - - - Rotary encoder A - - - - - - - - - - - - - FM 1 - - - - - - - - 1 - - - - - - - 6 - - - - - - - Flight Mode Name - - - - - - - Switch - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Fade Out - - - - - - - 1 - - - - - - - Fade In - - - - - - - - - - - Qt::Vertical - - - QSlider::TicksBothSides - - - 25 - - - - - - - Qt::Vertical - - - false - - - false - - - QSlider::TicksBothSides - - - 25 - - - - - - - - 0 - 0 - - - - Qt::Horizontal - - - QSlider::TicksBothSides - - - 25 - - - - - - - - 0 - 0 - - - - Qt::Horizontal - - - QSlider::TicksBothSides - - - 25 - - - - - - - - - trim1 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - trim2 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - Qt::AlignCenter - - - true - - - -896 - - - 896 - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - Qt::AlignCenter - - - true - - - -896 - - - 896 - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - - - trim4 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - trim3 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - Qt::AlignCenter - - - true - - - -896 - - - 896 - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - Qt::AlignCenter - - - true - - - -896 - - - 896 - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - - - - - - - - GVAR1 - - - - - - - - - - -100 - - - 100 - - - - - - - GVAR2 - - - - - - - - - - -100 - - - 100 - - - - - - - GVAR3 - - - - - - - - - - -100 - - - 100 - - - - - - - GVAR4 - - - - - - - - - - -100 - - - 100 - - - - - - - GVAR5 - - - - - - - - - - -100 - - - 100 - - - - - - - - - - - - - Rotary encoder A - - - - - - - - - - Rotary encoder B - - - - - - - -100 - - - 100 - - - - - - - -100 - - - 100 - - - - - - - - - - - - - - - Qt::Horizontal - - - - - - - - FM 2 - - - - - - - - 1 - - - - - - - 1 - - - - - - - Fade Out - - - - - - - 6 - - - - - - - Flight Mode Name - - - - - - - Switch - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Fade In - - - - - - - - - - - Qt::Vertical - - - QSlider::TicksBothSides - - - 25 - - - - - - - Qt::Vertical - - - false - - - false - - - QSlider::TicksBothSides - - - 25 - - - - - - - - 0 - 0 - - - - Qt::Horizontal - - - QSlider::TicksBothSides - - - 25 - - - - - - - - 0 - 0 - - - - Qt::Horizontal - - - QSlider::TicksBothSides - - - 25 - - - - - - - - - trim1 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - trim2 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - Qt::AlignCenter - - - true - - - -896 - - - 896 - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - Qt::AlignCenter - - - true - - - -896 - - - 896 - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - - - trim4 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - trim3 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - Qt::AlignCenter - - - true - - - -896 - - - 896 - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - Qt::AlignCenter - - - true - - - -896 - - - 896 - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - - - Qt::Horizontal - - - - - - - - - - - - GVAR1 - - - - - - - - - - -100 - - - 100 - - - - - - - GVAR2 - - - - - - - - - - -100 - - - 100 - - - - - - - GVAR3 - - - - - - - - - - -100 - - - 100 - - - - - - - GVAR4 - - - - - - - - - - -100 - - - 100 - - - - - - - GVAR5 - - - - - - - - - - -100 - - - 100 - - - - - - - - - - - - - Rotary encoder A - - - - - - - - - - -100 - - - 100 - - - - - - - Rotary encoder B - - - - - - - - - - -100 - - - 100 - - - - - - - - - - - - - FM 3 - - - - - - - - Fade Out - - - - - - - Fade In - - - - - - - 6 - - - - - - - Flight Mode Name - - - - - - - Switch - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - 1 - - - - - - - 1 - - - - - - - - - - - Qt::Vertical - - - QSlider::TicksBothSides - - - 25 - - - - - - - Qt::Vertical - - - false - - - false - - - QSlider::TicksBothSides - - - 25 - - - - - - - - 0 - 0 - - - - Qt::Horizontal - - - QSlider::TicksBothSides - - - 25 - - - - - - - - 0 - 0 - - - - Qt::Horizontal - - - QSlider::TicksBothSides - - - 25 - - - - - - - - - trim1 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - trim2 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - Qt::AlignCenter - - - true - - - -896 - - - 896 - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - Qt::AlignCenter - - - true - - - -896 - - - 896 - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - - - trim4 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - trim3 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - Qt::AlignCenter - - - true - - - -896 - - - 896 - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - Qt::AlignCenter - - - true - - - -896 - - - 896 - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - - - Qt::Horizontal - - - - - - - - - - - - GVAR1 - - - - - - - - - - -100 - - - 100 - - - - - - - GVAR2 - - - - - - - - - - -100 - - - 100 - - - - - - - GVAR3 - - - - - - - - - - -100 - - - 100 - - - - - - - GVAR4 - - - - - - - - - - -100 - - - 100 - - - - - - - GVAR5 - - - - - - - - - - -100 - - - 100 - - - - - - - - - - - - - Rotary encoder A - - - - - - - - - - -100 - - - 100 - - - - - - - Rotary encoder B - - - - - - - - - - -100 - - - 100 - - - - - - - - - - - - - FM 4 - - - - - - - - Flight Mode Name - - - - - - - 6 - - - - - - - Switch - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Fade In - - - - - - - Fade Out - - - - - - - 1 - - - - - - - 1 - - - - - - - - - - - Qt::Vertical - - - QSlider::TicksBothSides - - - 25 - - - - - - - Qt::Vertical - - - false - - - false - - - QSlider::TicksBothSides - - - 25 - - - - - - - - 0 - 0 - - - - Qt::Horizontal - - - QSlider::TicksBothSides - - - 25 - - - - - - - - 0 - 0 - - - - Qt::Horizontal - - - QSlider::TicksBothSides - - - 25 - - - - - - - - - trim1 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - trim2 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - Qt::AlignCenter - - - true - - - -896 - - - 896 - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - Qt::AlignCenter - - - true - - - -896 - - - 896 - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - - - trim4 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - trim3 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - Qt::AlignCenter - - - true - - - -896 - - - 896 - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - Qt::AlignCenter - - - true - - - -896 - - - 896 - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - - - Qt::Horizontal - - - - - - - - - - - - GVAR1 - - - - - - - - - - -100 - - - 100 - - - - - - - GVAR2 - - - - - - - - - - -100 - - - 100 - - - - - - - GVAR3 - - - - - - - - - - -100 - - - 100 - - - - - - - GVAR4 - - - - - - - - - - -100 - - - 100 - - - - - - - GVAR5 - - - - - - - - - - -100 - - - 100 - - - - - - - - - - - - - Rotary encoder A - - - - - - - - - - -100 - - - 100 - - - - - - - Rotary encoder B - - - - - - - - - - -100 - - - 100 - - - - - - - - - - - - - FM 5 - - - - - - - - Qt::Vertical - - - QSlider::TicksBothSides - - - 25 - - - - - - - Qt::Vertical - - - false - - - false - - - QSlider::TicksBothSides - - - 25 - - - - - - - - 0 - 0 - - - - Qt::Horizontal - - - QSlider::TicksBothSides - - - 25 - - - - - - - - 0 - 0 - - - - Qt::Horizontal - - - QSlider::TicksBothSides - - - 25 - - - - - - - - - trim1 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - trim2 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - Qt::AlignCenter - - - true - - - -896 - - - 896 - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - Qt::AlignCenter - - - true - - - -896 - - - 896 - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - - - trim4 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - trim3 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - Qt::AlignCenter - - - true - - - -896 - - - 896 - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - Qt::AlignCenter - - - true - - - -896 - - - 896 - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - - - - - Flight Mode Name - - - - - - - 6 - - - - - - - Switch - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - 1 - - - - - - - 1 - - - - - - - Fade In - - - - - - - Fade Out - - - - - - - - - Qt::Horizontal - - - - - - - - - - - - GVAR1 - - - - - - - - - - -100 - - - 100 - - - - - - - GVAR2 - - - - - - - - - - -100 - - - 100 - - - - - - - GVAR3 - - - - - - - - - - -100 - - - 100 - - - - - - - GVAR4 - - - - - - - - - - -100 - - - 100 - - - - - - - GVAR5 - - - - - - - - - - -100 - - - 100 - - - - - - - - - - - - - Rotary encoder A - - - - - - - - - - -100 - - - 100 - - - - - - - Rotary encoder B - - - - - - - - - - -100 - - - 100 - - - - - - - - - - - - - FM 6 - - - - - - - - Qt::Vertical - - - QSlider::TicksBothSides - - - 25 - - - - - - - Qt::Vertical - - - false - - - false - - - QSlider::TicksBothSides - - - 25 - - - - - - - - 0 - 0 - - - - Qt::Horizontal - - - QSlider::TicksBothSides - - - 25 - - - - - - - - 0 - 0 - - - - Qt::Horizontal - - - QSlider::TicksBothSides - - - 25 - - - - - - - - - trim1 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - trim2 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - Qt::AlignCenter - - - true - - - -896 - - - 896 - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - Qt::AlignCenter - - - true - - - -896 - - - 896 - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - - - trim4 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - trim3 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - 0 - 0 - - - - - - - - Qt::AlignCenter - - - true - - - -896 - - - 896 - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - Qt::AlignCenter - - - true - - - -896 - - - 896 - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - - - - - 6 - - - - - - - Flight Mode Name - - - - - - - Switch - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Fade In - - - - - - - 1 - - - - - - - 1 - - - - - - - Fade Out - - - - - - - - - - - - - - GVAR1 - - - - - - - - - - -100 - - - 100 - - - - - - - GVAR2 - - - - - - - - - - -100 - - - 100 - - - - - - - GVAR3 - - - - - - - - - - -100 - - - 100 - - - - - - - GVAR4 - - - - - - - - - - -100 - - - 100 - - - - - - - GVAR5 - - - - - - - - - - -100 - - - 100 - - - - - - - - - - - - - Rotary encoder A - - - - - - - - - - -100 - - - 100 - - - - - - - Rotary encoder B - - - - - - - - - - -100 - - - 100 - - - - - - - - - - - - Qt::Horizontal - - - - - - - - FM 7 - - - - - - Qt::Horizontal - - - - - - - - - 6 - - - - - - - Flight Mode Name - - - - - - - Switch - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - 1 - - - - - - - 1 - - - - - - - Fade In - - - - - - - Fade Out - - - - - - - - - - - Qt::Vertical - - - QSlider::TicksBothSides - - - 25 - - - - - - - Qt::Vertical - - - false - - - false - - - QSlider::TicksBothSides - - - 25 - - - - - - - - 0 - 0 - - - - Qt::Horizontal - - - QSlider::TicksBothSides - - - 25 - - - - - - - - 0 - 0 - - - - Qt::Horizontal - - - QSlider::TicksBothSides - - - 25 - - - - - - - - - trim1 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - trim2 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - Qt::AlignCenter - - - true - - - -896 - - - 896 - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - Qt::AlignCenter - - - true - - - -896 - - - 896 - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - - - trim4 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - trim3 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - Qt::AlignCenter - - - true - - - -896 - - - 896 - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - Qt::AlignCenter - - - true - - - -896 - - - 896 - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - - - - - - - - GVAR1 - - - - - - - - - - -100 - - - 100 - - - - - - - GVAR2 - - - - - - - - - - -100 - - - 100 - - - - - - - GVAR3 - - - - - - - - - - -100 - - - 100 - - - - - - - GVAR4 - - - - - - - - - - -100 - - - 100 - - - - - - - GVAR5 - - - - - - - - - - -100 - - - 100 - - - - - - - - - - - - - Rotary encoder A - - - - - - - - - - -100 - - - 100 - - - - - - - Rotary encoder B - - - - - - - - - - -100 - - - 100 - - - - - - - - - - - - - FM 8 - - - - - - - - Qt::Vertical - - - QSlider::TicksBothSides - - - 25 - - - - - - - Qt::Vertical - - - false - - - false - - - QSlider::TicksBothSides - - - 25 - - - - - - - - 0 - 0 - - - - Qt::Horizontal - - - QSlider::TicksBothSides - - - 25 - - - - - - - - 0 - 0 - - - - Qt::Horizontal - - - QSlider::TicksBothSides - - - 25 - - - - - - - - - trim1 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - trim2 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - Qt::AlignCenter - - - true - - - -896 - - - 896 - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - Qt::AlignCenter - - - true - - - -896 - - - 896 - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - - - trim4 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - trim3 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - Qt::AlignCenter - - - true - - - -896 - - - 896 - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - Qt::AlignCenter - - - true - - - -896 - - - 896 - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - - - Qt::Horizontal - - - - - - - - - 1 - - - - - - - Flight Mode Name - - - - - - - Switch - - - - - - - - - - 6 - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Fade In - - - - - - - Fade Out - - - - - - - 1 - - - - - - - - - - - - - - GVAR5 - - - - - - - -100 - - - 100 - - - - - - - - - - -100 - - - 100 - - - - - - - -100 - - - 100 - - - - - - - -100 - - - 100 - - - - - - - - - - GVAR4 - - - - - - - GVAR2 - - - - - - - - - - - - - GVAR1 - - - - - - - -100 - - - 100 - - - - - - - GVAR3 - - - - - - - - - - - - - - - - Rotary encoder B - - - - - - - - - - -100 - - - 100 - - - - - - - - - - -100 - - - 100 - - - - - - - Rotary encoder A - - - - - - - - - - - - - - - - - - - Sticks - - - - - - - - - - Mixes - - - - - - - - - Show channels names in mixes - - - - - - - - Limits - - - - - - true - - - - - 0 - 0 - 1086 - 641 - - - - - 0 - 0 - - - - - - - - 0 - 0 - - - - - - - - QLayout::SetMinimumSize - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - 1375 - - - 1625 - - - 1500 - - - - - - - - 0 - 0 - - - - 6 - - - - - - - - 0 - 0 - - - - 6 - - - - - - - - 0 - 0 - - - - 6 - - - - - - - - 0 - 0 - - - - 6 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - 1 - - - -100.000000000000000 - - - 0.100000000000000 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - 1 - - - -100.000000000000000 - - - 0.100000000000000 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - - --- - - - - - INV - - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - 1 - - - -100.000000000000000 - - - 0.100000000000000 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - - --- - - - - - INV - - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - 1 - - - -100.000000000000000 - - - 0.100000000000000 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - - --- - - - - - INV - - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - 1 - - - -100.000000000000000 - - - 0.100000000000000 - - - - - - - - 0 - 0 - - - - - --- - - - - - INV - - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - - --- - - - - - INV - - - - - - - - - 0 - 0 - - - - - --- - - - - - INV - - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - 1 - - - -100.000000000000000 - - - 0.100000000000000 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - 1 - - - -100.000000000000000 - - - 0.100000000000000 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - - --- - - - - - INV - - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - - --- - - - - - INV - - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - - --- - - - - - INV - - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - 1 - - - -100.000000000000000 - - - 0.100000000000000 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - - --- - - - - - INV - - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - 1 - - - -100.000000000000000 - - - 0.100000000000000 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - 1 - - - -100.000000000000000 - - - 0.100000000000000 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - - --- - - - - - INV - - - - - - - - - 0 - 0 - - - - - --- - - - - - INV - - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - 1 - - - -100.000000000000000 - - - 0.100000000000000 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - 1 - - - -100.000000000000000 - - - 0.100000000000000 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - - --- - - - - - INV - - - - - - - - - 0 - 0 - - - - QFrame::Panel - - - QFrame::Raised - - - 0 - - - Offset - - - Qt::AlignCenter - - - 3 - - - - - - - - 0 - 0 - - - - QFrame::Panel - - - QFrame::Raised - - - 0 - - - Min - - - Qt::AlignCenter - - - 3 - - - - - - - - 0 - 0 - - - - - --- - - - - - INV - - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - 1 - - - -100.000000000000000 - - - 0.100000000000000 - - - - - - - - 0 - 0 - - - - - --- - - - - - INV - - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - 1 - - - -100.000000000000000 - - - 0.100000000000000 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - 1 - - - -100.000000000000000 - - - 0.100000000000000 - - - - - - - - 0 - 0 - - - - QFrame::Panel - - - QFrame::Raised - - - 0 - - - Max - - - Qt::AlignCenter - - - 3 - - - - - - - - 0 - 0 - - - - QFrame::Panel - - - QFrame::Raised - - - 0 - - - Invert - - - Qt::AlignCenter - - - 3 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - 1 - - - -100.000000000000000 - - - 0.100000000000000 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - - --- - - - - - INV - - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - 1375 - - - 1625 - - - 1500 - - - - - - - - 0 - 0 - - - - QFrame::Panel - - - QFrame::Raised - - - Center - - - Qt::AlignCenter - - - 3 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - 1375 - - - 1625 - - - 1500 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - 1375 - - - 1625 - - - 1500 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - 1375 - - - 1625 - - - 1500 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - 1375 - - - 1625 - - - 1500 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - 1375 - - - 1625 - - - 1500 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - 1375 - - - 1625 - - - 1500 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - 1375 - - - 1625 - - - 1500 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - 1375 - - - 1625 - - - 1500 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - 1375 - - - 1625 - - - 1500 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - 1375 - - - 1625 - - - 1500 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - 1375 - - - 1625 - - - 1500 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - 1375 - - - 1625 - - - 1500 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - 1375 - - - 1625 - - - 1500 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - 1375 - - - 1625 - - - 1500 - - - - - - - - 0 - 0 - - - - QFrame::Panel - - - QFrame::Raised - - - 0 - - - Sym - - - Qt::AlignCenter - - - 3 - - - - - - - - 0 - 0 - - - - - - - - - - - - 0 - 0 - - - - - - - - - - - - 0 - 0 - - - - - - - - - - - - 0 - 0 - - - - - - - - - - - - 0 - 0 - - - - - - - - - - - - 0 - 0 - - - - - - - - - - - - 0 - 0 - - - - - - - - - - - - 0 - 0 - - - - - - - - - - - - 0 - 0 - - - - - - - - - - - - 0 - 0 - - - - - - - - - - - - 0 - 0 - - - - - - - - - - - - 0 - 0 - - - - - - - - - - - - 0 - 0 - - - - - - - - - - - - 0 - 0 - - - - - - - - - - - - 0 - 0 - - - - - - - - - - - - 0 - 0 - - - - - - - - - - - - 0 - 0 - - - - 6 - - - - - - - - 0 - 0 - - - - 6 - - - - - - - - 0 - 0 - - - - 6 - - - - - - - - 0 - 0 - - - - QFrame::Panel - - - QFrame::Raised - - - 0 - - - Channel - - - Qt::AlignCenter - - - 3 - - - - - - - - 0 - 0 - - - - 6 - - - - - - - - 0 - 0 - - - - 6 - - - - - - - - 0 - 0 - - - - 6 - - - - - - - - 0 - 0 - - - - 6 - - - - - - - - 0 - 0 - - - - 6 - - - - - - - - 0 - 0 - - - - 6 - - - - - - - - 0 - 0 - - - - 6 - - - - - - - - 0 - 0 - - - - 6 - - - - - - - - 0 - 0 - - - - 6 - - - - - - - - - - Qt::Vertical - - - - 20 - 1 - - - - - - - - - 0 - 0 - - - - - - - - QLayout::SetMinimumSize - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - 1 - - - -100.000000000000000 - - - 0.100000000000000 - - - - - - - - 0 - 0 - - - - - --- - - - - - INV - - - - - - - - - 0 - 0 - - - - - --- - - - - - INV - - - - - - - - - 0 - 0 - - - - - --- - - - - - INV - - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - 1 - - - -100.000000000000000 - - - 0.100000000000000 - - - - - - - - 0 - 0 - - - - QFrame::Panel - - - QFrame::Raised - - - 0 - - - Offset - - - Qt::AlignCenter - - - 3 - - - - - - - - 0 - 0 - - - - QFrame::Panel - - - QFrame::Raised - - - 0 - - - Min - - - Qt::AlignCenter - - - 3 - - - - - - - - 0 - 0 - - - - QFrame::Panel - - - QFrame::Raised - - - 0 - - - Max - - - Qt::AlignCenter - - - 3 - - - - - - - - 0 - 0 - - - - QFrame::Panel - - - QFrame::Raised - - - 0 - - - Invert - - - Qt::AlignCenter - - - 3 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - 1 - - - -100.000000000000000 - - - 0.100000000000000 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - - --- - - - - - INV - - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - - --- - - - - - INV - - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - 1 - - - -100.000000000000000 - - - 0.100000000000000 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - - --- - - - - - INV - - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - - --- - - - - - INV - - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - 1 - - - -100.000000000000000 - - - 0.100000000000000 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - 1 - - - -100.000000000000000 - - - 0.100000000000000 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - 1 - - - -100.000000000000000 - - - 0.100000000000000 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - - --- - - - - - INV - - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - 1 - - - -100.000000000000000 - - - 0.100000000000000 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - - --- - - - - - INV - - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - 1 - - - -100.000000000000000 - - - 0.100000000000000 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - - --- - - - - - INV - - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - 1 - - - -100.000000000000000 - - - 0.100000000000000 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - - --- - - - - - INV - - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - 1 - - - -100.000000000000000 - - - 0.100000000000000 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - 1 - - - -100.000000000000000 - - - 0.100000000000000 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - - --- - - - - - INV - - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - 1 - - - -100.000000000000000 - - - 0.100000000000000 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - - --- - - - - - INV - - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - 1 - - - -100.000000000000000 - - - 0.100000000000000 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - - --- - - - - - INV - - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - 1 - - - -100.000000000000000 - - - 0.100000000000000 - - - - - - - - 0 - 0 - - - - - --- - - - - - INV - - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - 1 - - - -100.000000000000000 - - - 0.100000000000000 - - - - - - - - 0 - 0 - - - - - --- - - - - - INV - - - - - - - - - 0 - 0 - - - - QFrame::Panel - - - QFrame::Raised - - - Center - - - Qt::AlignCenter - - - 3 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - 1375 - - - 1625 - - - 1500 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - 1375 - - - 1625 - - - 1500 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - 1375 - - - 1625 - - - 1500 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - 1375 - - - 1625 - - - 1500 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - 1375 - - - 1625 - - - 1500 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - 1375 - - - 1625 - - - 1500 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - 1375 - - - 1625 - - - 1500 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - 1375 - - - 1625 - - - 1500 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - 1375 - - - 1625 - - - 1500 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - 1375 - - - 1625 - - - 1500 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - 1375 - - - 1625 - - - 1500 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - 1375 - - - 1625 - - - 1500 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - 1375 - - - 1625 - - - 1500 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - 1375 - - - 1625 - - - 1500 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - 1375 - - - 1625 - - - 1500 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - 1375 - - - 1625 - - - 1500 - - - - - - - - 0 - 0 - - - - QFrame::Panel - - - QFrame::Raised - - - 0 - - - Sym - - - Qt::AlignCenter - - - 3 - - - - - - - - 0 - 0 - - - - - - - - - - - - 0 - 0 - - - - - - - - - - - - 0 - 0 - - - - - - - - - - - - 0 - 0 - - - - - - - - - - - - 0 - 0 - - - - - - - - - - - - 0 - 0 - - - - - - - - - - - - 0 - 0 - - - - - - - - - - - - 0 - 0 - - - - - - - - - - - - 0 - 0 - - - - - - - - - - - - 0 - 0 - - - - - - - - - - - - 0 - 0 - - - - - - - - - - - - 0 - 0 - - - - - - - - - - - - 0 - 0 - - - - - - - - - - - - 0 - 0 - - - - - - - - - - - - 0 - 0 - - - - - - - - - - - - 0 - 0 - - - - - - - - - - - - 0 - 0 - - - - 6 - - - - - - - - 0 - 0 - - - - QFrame::Panel - - - QFrame::Raised - - - 0 - - - Channel - - - Qt::AlignCenter - - - 3 - - - - - - - - 0 - 0 - - - - 6 - - - - - - - - 0 - 0 - - - - 6 - - - - - - - - 0 - 0 - - - - 6 - - - - - - - - 0 - 0 - - - - 6 - - - - - - - - 0 - 0 - - - - 6 - - - - - - - - 0 - 0 - - - - 6 - - - - - - - - 0 - 0 - - - - 6 - - - - - - - - 0 - 0 - - - - 6 - - - - - - - - 0 - 0 - - - - 6 - - - - - - - - 0 - 0 - - - - 6 - - - - - - - - 0 - 0 - - - - 6 - - - - - - - - 0 - 0 - - - - 6 - - - - - - - - 0 - 0 - - - - 6 - - - - - - - - 0 - 0 - - - - 6 - - - - - - - - 0 - 0 - - - - 6 - - - true - - - - - - - - - - - - - - - Curves - - - - - - - 1 - 0 - - - - Qt::ScrollBarAsNeeded - - - true - - - - - 0 - 0 - 1086 - 611 - - - - - 0 - 0 - - - - - - - Qt::Horizontal - - - - 5 - 20 - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - - - - 0 - 0 - 127 - - - - - - - 255 - 255 - 255 - - - - - - - - - 0 - 0 - 127 - - - - - - - 255 - 255 - 255 - - - - - - - - - 0 - 0 - 127 - - - - - - - 150 - 147 - 145 - - - - - - - - Curve 1 - - - - - - - - - - - - 127 - 0 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - - - 127 - 0 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - - - 127 - 0 - 0 - - - - - - - 150 - 147 - 145 - - - - - - - - Curve 3 - - - - - - - - 0 - 0 - - - - - - - - :/images/clear.png:/images/clear.png - - - - 14 - 14 - - - - - - - - true - - - - 0 - 0 - - - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 0 - 127 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 0 - 127 - - - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 0 - 127 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 0 - 127 - - - - - - - - - 146 - 145 - 144 - - - - - - - 0 - 0 - 127 - - - - - - - 165 - 164 - 164 - - - - - - - 151 - 150 - 149 - - - - - - - 244 - 244 - 244 - - - - - - - - - - - - - - - - 0 - 0 - - - - - - - - :/images/clear.png:/images/clear.png - - - - 14 - 14 - - - - - - - - - 0 - 0 - - - - - - - - :/images/clear.png:/images/clear.png - - - - 14 - 14 - - - - - - - - - - - - - 255 - 255 - 255 - - - - - - - 127 - 0 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 128 - 0 - 0 - - - - - - - - - 255 - 255 - 255 - - - - - - - 127 - 0 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 128 - 0 - 0 - - - - - - - - - 146 - 145 - 144 - - - - - - - 127 - 0 - 0 - - - - - - - 165 - 164 - 164 - - - - - - - 151 - 150 - 149 - - - - - - - 244 - 244 - 244 - - - - - - - - - - - - - - - - 0 - 0 - - - - - - - - :/images/clear.png:/images/clear.png - - - - 14 - 14 - - - - - - - - - - - - - 0 - 127 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - - - 0 - 127 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - - - 0 - 127 - 0 - - - - - - - 150 - 147 - 145 - - - - - - - - Curve 2 - - - - - - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 127 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 127 - 0 - - - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 127 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 127 - 0 - - - - - - - - - 146 - 145 - 144 - - - - - - - 0 - 127 - 0 - - - - - - - 165 - 164 - 164 - - - - - - - 151 - 150 - 149 - - - - - - - 244 - 244 - 244 - - - - - - - - - - - - - - - - - - - - 255 - 255 - 255 - - - - - - - 127 - 0 - 127 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 127 - 0 - 127 - - - - - - - - - 255 - 255 - 255 - - - - - - - 127 - 0 - 127 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 127 - 0 - 127 - - - - - - - - - 146 - 145 - 144 - - - - - - - 127 - 0 - 127 - - - - - - - 165 - 164 - 164 - - - - - - - 151 - 150 - 149 - - - - - - - 244 - 244 - 244 - - - - - - - - - - - - - - - - 0 - 0 - - - - - - - - :/images/clear.png:/images/clear.png - - - - 14 - 14 - - - - - - - - - - - - - 0 - 127 - 127 - - - - - - - 255 - 255 - 255 - - - - - - - - - 0 - 127 - 127 - - - - - - - 255 - 255 - 255 - - - - - - - - - 0 - 127 - 127 - - - - - - - 150 - 147 - 145 - - - - - - - - Curve 4 - - - - - - - - 0 - 0 - - - - - - - - :/images/clear.png:/images/clear.png - - - - 14 - 14 - - - - - - - - - - - - - 255 - 0 - 127 - - - - - - - 255 - 255 - 255 - - - - - - - - - 255 - 0 - 127 - - - - - - - 255 - 255 - 255 - - - - - - - - - 255 - 0 - 127 - - - - - - - 150 - 147 - 145 - - - - - - - - Curve 15 - - - - - - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 0 - 127 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 0 - 127 - - - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 0 - 127 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 0 - 127 - - - - - - - - - 146 - 145 - 144 - - - - - - - 255 - 0 - 127 - - - - - - - 165 - 164 - 164 - - - - - - - 151 - 150 - 149 - - - - - - - 244 - 244 - 244 - - - - - - - - - - - - - - - - 0 - 0 - - - - - - - - :/images/clear.png:/images/clear.png - - - - 14 - 14 - - - - - - - - - - - - - 255 - 127 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - - - 255 - 127 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - - - 255 - 127 - 0 - - - - - - - 150 - 147 - 145 - - - - - - - - Curve 16 - - - - - - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 127 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 127 - 0 - - - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 127 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 127 - 0 - - - - - - - - - 146 - 145 - 144 - - - - - - - 255 - 127 - 0 - - - - - - - 165 - 164 - 164 - - - - - - - 151 - 150 - 149 - - - - - - - 244 - 244 - 244 - - - - - - - - - - - - - - - - 0 - 0 - - - - - - - - :/images/clear.png:/images/clear.png - - - - 14 - 14 - - - - - - - - - - - - - 127 - 127 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - - - 127 - 127 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - - - 127 - 127 - 0 - - - - - - - 150 - 147 - 145 - - - - - - - - Curve 6 - - - - - - - - - - - - 255 - 255 - 255 - - - - - - - 127 - 127 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 127 - 127 - 0 - - - - - - - - - 255 - 255 - 255 - - - - - - - 127 - 127 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 127 - 127 - 0 - - - - - - - - - 146 - 145 - 144 - - - - - - - 127 - 127 - 0 - - - - - - - 165 - 164 - 164 - - - - - - - 151 - 150 - 149 - - - - - - - 244 - 244 - 244 - - - - - - - - - - - - - - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 127 - 127 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 128 - 128 - - - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 127 - 127 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 128 - 128 - - - - - - - - - 146 - 145 - 144 - - - - - - - 0 - 127 - 127 - - - - - - - 165 - 164 - 164 - - - - - - - 151 - 150 - 149 - - - - - - - 244 - 244 - 244 - - - - - - - - - - - - - - - - - - - - 127 - 0 - 127 - - - - - - - 255 - 255 - 255 - - - - - - - - - 127 - 0 - 127 - - - - - - - 255 - 255 - 255 - - - - - - - - - 127 - 0 - 127 - - - - - - - 150 - 147 - 145 - - - - - - - - Curve 5 - - - - - - - - 0 - 0 - - - - - - - - :/images/clear.png:/images/clear.png - - - - 14 - 14 - - - - - - - - - - - - - 255 - 255 - 255 - - - - - - - 123 - 0 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 127 - 0 - 255 - - - - - - - - - 255 - 255 - 255 - - - - - - - 123 - 0 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 127 - 0 - 255 - - - - - - - - - 146 - 145 - 144 - - - - - - - 123 - 0 - 255 - - - - - - - 165 - 164 - 164 - - - - - - - 151 - 150 - 149 - - - - - - - 244 - 244 - 244 - - - - - - - - - - - - - - - - - - - - 0 - 128 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - - - 0 - 128 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - - - 0 - 128 - 255 - - - - - - - 150 - 147 - 145 - - - - - - - - Curve 9 - - - - - - - - - - - - 0 - 255 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - - - 0 - 255 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - - - 0 - 255 - 0 - - - - - - - 150 - 147 - 145 - - - - - - - - Curve 11 - - - - - - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 255 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 255 - 0 - - - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 255 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 255 - 0 - - - - - - - - - 146 - 145 - 144 - - - - - - - 0 - 255 - 0 - - - - - - - 165 - 164 - 164 - - - - - - - 151 - 150 - 149 - - - - - - - 244 - 244 - 244 - - - - - - - - - - - - - - - - 0 - 0 - - - - - - - - :/images/clear.png:/images/clear.png - - - - 14 - 14 - - - - - - - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 255 - 127 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 255 - 127 - - - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 255 - 127 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 255 - 127 - - - - - - - - - 146 - 145 - 144 - - - - - - - 0 - 255 - 127 - - - - - - - 165 - 164 - 164 - - - - - - - 151 - 150 - 149 - - - - - - - 244 - 244 - 244 - - - - - - - - - - - - - - - - - - - - 0 - 255 - 127 - - - - - - - 255 - 255 - 255 - - - - - - - - - 0 - 255 - 127 - - - - - - - 255 - 255 - 255 - - - - - - - - - 0 - 255 - 127 - - - - - - - 150 - 147 - 145 - - - - - - - - Curve 12 - - - - - - - - 0 - 0 - - - - - - - - :/images/clear.png:/images/clear.png - - - - 14 - 14 - - - - - - - - - - - - - 127 - 127 - 127 - - - - - - - 255 - 255 - 255 - - - - - - - - - 127 - 127 - 127 - - - - - - - 255 - 255 - 255 - - - - - - - - - 127 - 127 - 127 - - - - - - - 150 - 147 - 145 - - - - - - - - Curve 7 - - - - - - - - - - - - 255 - 255 - 255 - - - - - - - 127 - 127 - 127 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 127 - 127 - 127 - - - - - - - - - 255 - 255 - 255 - - - - - - - 127 - 127 - 127 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 127 - 127 - 127 - - - - - - - - - 146 - 145 - 144 - - - - - - - 127 - 127 - 127 - - - - - - - 165 - 164 - 164 - - - - - - - 151 - 150 - 149 - - - - - - - 244 - 244 - 244 - - - - - - - - - - - - - - - - 0 - 0 - - - - - - - - :/images/clear.png:/images/clear.png - - - - 14 - 14 - - - - - - - - - - - - - 0 - 0 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - - - 0 - 0 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - - - 0 - 0 - 255 - - - - - - - 150 - 147 - 145 - - - - - - - - Curve 8 - - - - - - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 0 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 0 - 255 - - - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 0 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 0 - 255 - - - - - - - - - 146 - 145 - 144 - - - - - - - 0 - 0 - 255 - - - - - - - 165 - 164 - 164 - - - - - - - 151 - 150 - 149 - - - - - - - 244 - 244 - 244 - - - - - - - - - - - - - - - - 0 - 0 - - - - - - - - :/images/clear.png:/images/clear.png - - - - 14 - 14 - - - - - - - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 128 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 127 - 255 - - - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 128 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 127 - 255 - - - - - - - - - 146 - 145 - 144 - - - - - - - 0 - 128 - 255 - - - - - - - 165 - 164 - 164 - - - - - - - 151 - 150 - 149 - - - - - - - 244 - 244 - 244 - - - - - - - - - - - - - - - - 0 - 0 - - - - - - - - :/images/clear.png:/images/clear.png - - - - 14 - 14 - - - - - - - - - - - - - 123 - 0 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - - - 123 - 0 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - - - 123 - 0 - 255 - - - - - - - 150 - 147 - 145 - - - - - - - - Curve 10 - - - - - - - - 0 - 0 - - - - - - - - :/images/clear.png:/images/clear.png - - - - 14 - 14 - - - - - - - - - - - - - 127 - 255 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - - - 127 - 255 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - - - 127 - 255 - 0 - - - - - - - 150 - 147 - 145 - - - - - - - - Curve 13 - - - - - - - - - - - - 255 - 255 - 255 - - - - - - - 127 - 255 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 127 - 255 - 0 - - - - - - - - - 255 - 255 - 255 - - - - - - - 127 - 255 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 127 - 255 - 0 - - - - - - - - - 146 - 145 - 144 - - - - - - - 127 - 255 - 0 - - - - - - - 165 - 164 - 164 - - - - - - - 151 - 150 - 149 - - - - - - - 244 - 244 - 244 - - - - - - - - - - - - - - - - 0 - 0 - - - - - - - - :/images/clear.png:/images/clear.png - - - - 14 - 14 - - - - - - - - - - - - - 255 - 0 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - - - 255 - 0 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - - - 255 - 0 - 0 - - - - - - - 150 - 147 - 145 - - - - - - - - Curve 14 - - - - - - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 0 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 0 - 0 - - - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 0 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 0 - 0 - - - - - - - - - 146 - 145 - 144 - - - - - - - 255 - 0 - 0 - - - - - - - 165 - 164 - 164 - - - - - - - 151 - 150 - 149 - - - - - - - 244 - 244 - 244 - - - - - - - - - - - - - - - Qt::Vertical - - - - 20 - 5 - - - - - - - - - - - - Curve type - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 3 points - - - - - 3 points custom - - - - - 5 points - - - - - 5 points custom - - - - - 9 points - - - - - 9 points custom - - - - - 17 points - - - - - 17 points custom - - - - - - - - Curve name - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - 6 - - - - - - - - 0 - 0 - - - - - 400 - 400 - - - - Qt::AlignCenter - - - - - - - - - Qt::Vertical - - - QSizePolicy::MinimumExpanding - - - - 20 - 0 - - - - - - - - 0 - - - 2 - - - 0 - - - 0 - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - true - - - -100 - - - 100 - - - - - - - Qt::Vertical - - - - 5 - 20 - - - - - - - - - - Qt::Horizontal - - - QSizePolicy::Expanding - - - - 5 - 20 - - - - - - - - - 50 - false - - - - false - - - Curve Creator - - - - - - Y at X=100 - - - - - - - - Both - - - - - x>0 - - - - - x<0 - - - - - - - - - Linear - - - - - Single Expo - - - - - Symmetrical f(x)=-f(-x) - - - - - Symmetrical f(x)=f(-x) - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Apply - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - Side - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Y at X=-100 - - - - - - - Y at X=0 - - - - - - - - 0 - 0 - - - - -100 - - - 100 - - - - - - - Curve type - - - - - - - Coefficient - - - - - - - - 0 - 0 - - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - -100 - - - 100 - - - - - - - - 0 - 0 - - - - -100 - - - 100 - - - - - - - - - - - - - - Clear All Curves - - - - :/images/clear.png:/images/clear.png - - - - - - - - Custom switches - - - - - - true - - - - - 0 - 0 - 1086 - 641 - - - - - - - - 0 - 0 - - - - - - - - - - - - - 0 - 0 - - - - true - - - Qt::CustomContextMenu - - - QFrame::Panel - - - QFrame::Raised - - - CS9 - - - - - - - - 0 - 0 - - - - QFrame::Panel - - - QFrame::Raised - - - Duration - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - true - - - Qt::CustomContextMenu - - - QFrame::Panel - - - QFrame::Raised - - - CSF - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - true - - - Qt::CustomContextMenu - - - QFrame::Panel - - - QFrame::Raised - - - CSD - - - - - - - QFrame::Panel - - - QFrame::Raised - - - 0 - - - AND - - - Qt::AlignCenter - - - 3 - - - - - - - - 0 - 0 - - - - QFrame::Panel - - - QFrame::Raised - - - V2 - - - - - - - - 0 - 0 - - - - QFrame::Panel - - - QFrame::Raised - - - V1 - - - - - - - - 0 - 0 - - - - true - - - Qt::CustomContextMenu - - - QFrame::Panel - - - QFrame::Raised - - - CS6 - - - - - - - - 0 - 0 - - - - true - - - Qt::CustomContextMenu - - - false - - - QFrame::Panel - - - QFrame::Raised - - - CS1 - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - true - - - Qt::CustomContextMenu - - - QFrame::Panel - - - QFrame::Raised - - - CS8 - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - true - - - Qt::CustomContextMenu - - - QFrame::Panel - - - QFrame::Raised - - - CS7 - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - true - - - Qt::CustomContextMenu - - - QFrame::Panel - - - QFrame::Raised - - - CSA - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - true - - - Qt::CustomContextMenu - - - QFrame::Panel - - - QFrame::Raised - - - CSB - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - true - - - Qt::CustomContextMenu - - - QFrame::Panel - - - QFrame::Raised - - - CSC - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - true - - - Qt::CustomContextMenu - - - QFrame::Panel - - - QFrame::Raised - - - CS5 - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - QFrame::Panel - - - QFrame::Raised - - - Function - - - - - - - - 0 - 0 - - - - true - - - Qt::CustomContextMenu - - - QFrame::Panel - - - QFrame::Raised - - - CS3 - - - - - - - - 0 - 0 - - - - true - - - Qt::CustomContextMenu - - - QFrame::Panel - - - QFrame::Raised - - - CS2 - - - - - - - - 0 - 0 - - - - true - - - Qt::CustomContextMenu - - - QFrame::Panel - - - QFrame::Raised - - - CSE - - - - - - - - 0 - 0 - - - - true - - - Qt::CustomContextMenu - - - QFrame::Panel - - - QFrame::Raised - - - CSG - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - true - - - Qt::CustomContextMenu - - - QFrame::Panel - - - QFrame::Raised - - - CS4 - - - - - - - - 0 - 0 - - - - QFrame::Panel - - - QFrame::Raised - - - Delay - - - - - - - - - - - - - 0 - 0 - - - - - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - true - - - Qt::CustomContextMenu - - - QFrame::Panel - - - QFrame::Raised - - - CST - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - QFrame::Panel - - - QFrame::Raised - - - 0 - - - AND - - - Qt::AlignCenter - - - 3 - - - - - - - - 0 - 0 - - - - QFrame::Panel - - - QFrame::Raised - - - V2 - - - - - - - - 0 - 0 - - - - QFrame::Panel - - - QFrame::Raised - - - V1 - - - - - - - - 0 - 0 - - - - true - - - Qt::CustomContextMenu - - - QFrame::Panel - - - QFrame::Raised - - - CSM - - - - - - - - 0 - 0 - - - - true - - - Qt::CustomContextMenu - - - QFrame::Panel - - - QFrame::Raised - - - CSP - - - - - - - - 0 - 0 - - - - true - - - Qt::CustomContextMenu - - - QFrame::Panel - - - QFrame::Raised - - - CSH - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - true - - - Qt::CustomContextMenu - - - QFrame::Panel - - - QFrame::Raised - - - CSO - - - - - - - - 0 - 0 - - - - true - - - Qt::CustomContextMenu - - - QFrame::Panel - - - QFrame::Raised - - - CSN - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - true - - - Qt::CustomContextMenu - - - QFrame::Panel - - - QFrame::Raised - - - CSQ - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - true - - - Qt::CustomContextMenu - - - QFrame::Panel - - - QFrame::Raised - - - CSR - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - true - - - Qt::CustomContextMenu - - - QFrame::Panel - - - QFrame::Raised - - - CSS - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - true - - - Qt::CustomContextMenu - - - QFrame::Panel - - - QFrame::Raised - - - CSL - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - true - - - Qt::CustomContextMenu - - - QFrame::Panel - - - QFrame::Raised - - - CSK - - - - - - - - 0 - 0 - - - - QFrame::Panel - - - QFrame::Raised - - - Function - - - - - - - - 0 - 0 - - - - true - - - Qt::CustomContextMenu - - - QFrame::Panel - - - QFrame::Raised - - - CSJ - - - - - - - - 0 - 0 - - - - true - - - Qt::CustomContextMenu - - - QFrame::Panel - - - QFrame::Raised - - - CSI - - - - - - - - 0 - 0 - - - - true - - - Qt::CustomContextMenu - - - QFrame::Panel - - - QFrame::Raised - - - CSU - - - - - - - - 0 - 0 - - - - true - - - Qt::CustomContextMenu - - - QFrame::Panel - - - QFrame::Raised - - - CSV - - - - - - - - 0 - 0 - - - - true - - - Qt::CustomContextMenu - - - QFrame::Panel - - - QFrame::Raised - - - CSW - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - QFrame::Panel - - - QFrame::Raised - - - Duration - - - - - - - - 0 - 0 - - - - QFrame::Panel - - - QFrame::Raised - - - Delay - - - - - - - - - - - - Qt::Vertical - - - - 20 - 1 - - - - - - - - - - - - - Safety Switches - - - - - - - 0 - 0 - - - - true - - - - - 0 - 0 - 1086 - 641 - - - - - - - QFrame::Panel - - - QFrame::Raised - - - 0 - - - Channel - - - Qt::AlignCenter - - - 3 - - - - - - - QFrame::Panel - - - QFrame::Raised - - - 0 - - - Switch - - - Qt::AlignCenter - - - 3 - - - - - - - QFrame::Panel - - - QFrame::Raised - - - 0 - - - Value - - - Qt::AlignCenter - - - 3 - - - - - - - - 0 - 0 - - - - QFrame::Panel - - - QFrame::Raised - - - CH1 - - - - - - - - 0 - 0 - - - - QFrame::Panel - - - QFrame::Raised - - - CH2 - - - - - - - - 0 - 0 - - - - QFrame::Panel - - - QFrame::Raised - - - CH3 - - - - - - - - 0 - 0 - - - - QFrame::Panel - - - QFrame::Raised - - - CH4 - - - - - - - - 0 - 0 - - - - QFrame::Panel - - - QFrame::Raised - - - CH5 - - - - - - - - 0 - 0 - - - - QFrame::Panel - - - QFrame::Raised - - - CH6 - - - - - - - - 0 - 0 - - - - QFrame::Panel - - - QFrame::Raised - - - CH7 - - - - - - - - 0 - 0 - - - - QFrame::Panel - - - QFrame::Raised - - - CH8 - - - - - - - - 0 - 0 - - - - QFrame::Panel - - - QFrame::Raised - - - CH9 - - - - - - - - 0 - 0 - - - - QFrame::Panel - - - QFrame::Raised - - - CH10 - - - - - - - - 0 - 0 - - - - QFrame::Panel - - - QFrame::Raised - - - CH11 - - - - - - - - 0 - 0 - - - - QFrame::Panel - - - QFrame::Raised - - - CH12 - - - - - - - - 0 - 0 - - - - QFrame::Panel - - - QFrame::Raised - - - CH13 - - - - - - - - 0 - 0 - - - - QFrame::Panel - - - QFrame::Raised - - - CH14 - - - - - - - - 0 - 0 - - - - QFrame::Panel - - - QFrame::Raised - - - CH15 - - - - - - - - 0 - 0 - - - - QFrame::Panel - - - QFrame::Raised - - - CH16 - - - - - - - Qt::Vertical - - - - 20 - 1 - - - - - - - - - - - - - Custom Functions - - - - - - true - - - - - 0 - 0 - 1086 - 641 - - - - - - - - 0 - 0 - - - - - - - - - - QLayout::SetNoConstraint - - - - - QFrame::Panel - - - QFrame::Raised - - - Switch - - - Qt::AlignCenter - - - - - - - QFrame::Panel - - - QFrame::Raised - - - Function - - - Qt::AlignCenter - - - - - - - QFrame::Panel - - - QFrame::Raised - - - Param - - - Qt::AlignCenter - - - - - - - QFrame::Panel - - - QFrame::Raised - - - Enable - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - - - 0 - 0 - - - - - - - - - - QLayout::SetNoConstraint - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - QFrame::Panel - - - QFrame::Raised - - - Switch - - - Qt::AlignCenter - - - - - - - QFrame::Panel - - - QFrame::Raised - - - Function - - - Qt::AlignCenter - - - - - - - QFrame::Panel - - - QFrame::Raised - - - Param - - - Qt::AlignCenter - - - - - - - QFrame::Panel - - - QFrame::Raised - - - Enable - - - - - - - - - - - - Qt::Vertical - - - - 20 - 579 - - - - - - - - - - - - - Telemetry - - - - - - - - QLayout::SetMinimumSize - - - - - - 0 - 0 - - - - Serial Protocol - - - - 1 - - - 1 - - - - - - - - 0 - 0 - - - - Volt source - - - - - - - - 0 - 0 - - - - - Metric - - - - - Imperial - - - - - - - - - 0 - 0 - - - - - 0 - 0 - - - - Current source - - - - - - - - 0 - 0 - - - - - 100 - 0 - - - - Protocol - - - - - - - - 0 - 0 - - - - - NONE - - - - - A1 - - - - - A2 - - - - - FAS - - - - - - - - - 0 - 0 - - - - - None - - - - - FrSky Sensor Hub - - - - - - - - - 0 - 0 - - - - - A1 - - - - - A2 - - - - - FAS - - - - - CEL - - - - - - - - - 0 - 0 - - - - - 2 - - - - - 3 - - - - - 4 - - - - - - - - - 0 - 0 - - - - - 0 - 0 - - - - Units - - - - - - - - 0 - 0 - - - - Blades - - - - - - - FAS Offset - - - - - - - 1 - - - -1.500000000000000 - - - 1.500000000000000 - - - 0.100000000000000 - - - - - - - - - - - - - 0 - 0 - - - - Altimetry / Vario - - - - 1 - - - 1 - - - - - - - - 0 - 0 - - - - - Alti - - - - - Alti+ - - - - - Vario - - - - - A1 - - - - - A2 - - - - - - - - - - - 0 - 0 - - - - Sink Max - - - Qt::AlignCenter - - - - - - - - 0 - 0 - - - - 1 - - - -2.000000000000000 - - - 0.000000000000000 - - - 0.100000000000000 - - - -0.500000000000000 - - - - - - - - 0 - 0 - - - - 1 - - - -1.000000000000000 - - - 2.000000000000000 - - - 0.100000000000000 - - - 0.500000000000000 - - - - - - - - 0 - 0 - - - - 0 - - - 3.000000000000000 - - - 17.000000000000000 - - - 10.000000000000000 - - - - - - - - 0 - 0 - - - - 0 - - - -17.000000000000000 - - - -3.000000000000000 - - - -10.000000000000000 - - - - - - - - 0 - 0 - - - - Off - - - - - - - - 0 - 0 - - - - Climb Max - - - Qt::AlignCenter - - - - - - - - 0 - 0 - - - - Sink Min - - - Qt::AlignCenter - - - - - - - - 0 - 0 - - - - Climb Min - - - Qt::AlignCenter - - - - - - - - - Vario source - - - - - - - Vario limits - - - - - - - - - - 0 - 0 - - - - Use GPS as altitude source - - - - - - - - 0 - 0 - - - - Display altitude in toolbar - - - - - - - - - - - - - - - - QLayout::SetMinimumSize - - - - - - 0 - 0 - - - - true - - - - - - A1 - - - false - - - - 1 - - - 1 - - - - - - - - 0 - 0 - - - - Unit - - - - - - - - 0 - 0 - - - - Max Value - - - - - - - - 0 - 0 - - - - Alarm 1 - - - - - - - - 0 - 0 - - - - - ---- - - - - - Yellow - - - - - Orange - - - - - Red - - - - - - - - - 0 - 0 - - - - - < - - - - - > - - - - - - - - - 0 - 0 - - - - Alarm 2 - - - - - - - - 0 - 0 - - - - - ---- - - - - - Yellow - - - - - Orange - - - - - Red - - - - - - - - - 0 - 0 - - - - - < - - - - - > - - - - - - - - - 0 - 0 - - - - Min Value - - - - - - - true - - - - 0 - 0 - - - - 0 - - - 255.000000000000000 - - - - - - - - 0 - 0 - - - - 2 - - - -12.800000000000001 - - - 12.699999999999999 - - - 0.100000000000000 - - - - - - - true - - - - 0 - 0 - - - - 0 - - - 255.000000000000000 - - - - - - - true - - - - 0 - 0 - - - - 0 - - - 255.000000000000000 - - - - - - - - 0 - 0 - - - - - Volts (V) - - - - - Amps (A) - - - - - Speed (m/s or ft/s) - - - - - Raw (-) - - - - - Speed (km/h or miles/h) - - - - - Meters (m or ft) - - - - - Temp (°) - - - - - Fuel (%) - - - - - mAmps (mA) - - - - - - - - - - - - - A2 - - - - 1 - - - 1 - - - - - - - - 0 - 0 - - - - Unit - - - - - - - - 0 - 0 - - - - Max Value - - - - - - - - 0 - 0 - - - - Alarm 1 - - - - - - - - 0 - 0 - - - - - ---- - - - - - Yellow - - - - - Orange - - - - - Red - - - - - - - - - 0 - 0 - - - - - < - - - - - > - - - - - - - - - 0 - 0 - - - - Alarm 2 - - - - - - - - 0 - 0 - - - - - ---- - - - - - Yellow - - - - - Orange - - - - - Red - - - - - - - - - 0 - 0 - - - - - < - - - - - > - - - - - - - - - 0 - 0 - - - - Min Value - - - - - - - true - - - - 0 - 0 - - - - 0 - - - 255.000000000000000 - - - - - - - - 0 - 0 - - - - 2 - - - -0.800000000000000 - - - 0.700000000000000 - - - 0.100000000000000 - - - - - - - true - - - - 0 - 0 - - - - 0 - - - 255.000000000000000 - - - - - - - true - - - - 0 - 0 - - - - 0 - - - 255.000000000000000 - - - - - - - - 0 - 0 - - - - - Volts (V) - - - - - Amps (A) - - - - - Speed (m/s or ft/s) - - - - - Raw (-) - - - - - Speed (km/h or miles/h) - - - - - Meters (m or ft) - - - - - Temp (°) - - - - - Fuel (%) - - - - - mAmps (mA) - - - - - - - - - - - - - - 0 - 0 - - - - RSSI - - - - - - - 0 - 0 - - - - - 0 - 0 - - - - - - - Alarm 1 - - - - - - - - 0 - 0 - - - - - ---- - - - - - Yellow - - - - - Orange - - - - - Red - - - - - - - - true - - - - 0 - 0 - - - - - - - 20 - - - 80 - - - 1 - - - 50 - - - - - - - - 0 - 0 - - - - - 0 - 0 - - - - Alarm 2 - - - - - - - - 0 - 0 - - - - - ---- - - - - - Yellow - - - - - Orange - - - - - Red - - - - - - - - true - - - - 0 - 0 - - - - - - - 20 - - - 80 - - - 1 - - - 50 - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - - - - - 0 - 0 - - - - - - - - 1 - - - 1 - - - - - - 0 - 0 - - - - 0 - - - - Telemetry screen 1 - - - - - - - - - 0 - 0 - - - - - 0 - 0 - - - - Custom Screen Type - - - - - - - - 0 - 0 - - - - - 90 - 0 - - - - - Nums - - - - - Bars - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - - - - - - Source - - - Qt::AlignCenter - - - - - - - Min - - - Qt::AlignCenter - - - - - - - Gauge - - - Qt::AlignCenter - - - - - - - Max - - - Qt::AlignCenter - - - - - - - - - - 0 - - - - - - - false - - - Background:qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(0, 0, 128, 255), stop:0.339795 rgba(0, 0, 128, 255), stop:0.339799 rgba(255, 255, 255, 255), stop:0.662444 rgba(255, 255, 255, 255),) - - - - QFrame::Panel - - - QFrame::Raised - - - Gauge 1 - - - Qt::AlignCenter - - - - - - - 0 - - - - - - - - - - 0 - - - - - - - false - - - Background:qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(0, 0, 128, 255), stop:0.339795 rgba(0, 0, 128, 255), stop:0.339799 rgba(255, 255, 255, 255), stop:0.662444 rgba(255, 255, 255, 255),) - - - - QFrame::Panel - - - QFrame::Raised - - - Gauge 2 - - - Qt::AlignCenter - - - - - - - 0 - - - - - - - - - - 0 - - - - - - - false - - - Background:qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(0, 0, 128, 255), stop:0.339795 rgba(0, 0, 128, 255), stop:0.339799 rgba(255, 255, 255, 255), stop:0.662444 rgba(255, 255, 255, 255),) - - - - QFrame::Panel - - - QFrame::Raised - - - Gauge 3 - - - Qt::AlignCenter - - - - - - - 0 - - - - - - - - - - 0 - - - - - - - false - - - Background:qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(0, 0, 128, 255), stop:0.339795 rgba(0, 0, 128, 255), stop:0.339799 rgba(255, 255, 255, 255), stop:0.662444 rgba(255, 255, 255, 255),) - - - - QFrame::Panel - - - QFrame::Raised - - - Gauge 4 - - - Qt::AlignCenter - - - - - - - 0 - - - - - - - - - - - Telemetry screen 2 - - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - - - - - - Source - - - Qt::AlignCenter - - - - - - - Min - - - Qt::AlignCenter - - - - - - - Gauge - - - Qt::AlignCenter - - - - - - - Max - - - Qt::AlignCenter - - - - - - - - - - 0 - - - - - - - false - - - Background:qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(0, 0, 128, 255), stop:0.339795 rgba(0, 0, 128, 255), stop:0.339799 rgba(255, 255, 255, 255), stop:0.662444 rgba(255, 255, 255, 255),) - - - - QFrame::Panel - - - QFrame::Raised - - - Gauge 1 - - - Qt::AlignCenter - - - - - - - 0 - - - - - - - - - - 0 - - - - - - - false - - - Background:qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(0, 0, 128, 255), stop:0.339795 rgba(0, 0, 128, 255), stop:0.339799 rgba(255, 255, 255, 255), stop:0.662444 rgba(255, 255, 255, 255),) - - - - QFrame::Panel - - - QFrame::Raised - - - Gauge 2 - - - Qt::AlignCenter - - - - - - - 0 - - - - - - - - - - 0 - - - - - - - false - - - Background:qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(0, 0, 128, 255), stop:0.339795 rgba(0, 0, 128, 255), stop:0.339799 rgba(255, 255, 255, 255), stop:0.662444 rgba(255, 255, 255, 255),) - - - - QFrame::Panel - - - QFrame::Raised - - - Gauge 3 - - - Qt::AlignCenter - - - - - - - 0 - - - - - - - - - - 0 - - - - - - - false - - - Background:qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(0, 0, 128, 255), stop:0.339795 rgba(0, 0, 128, 255), stop:0.339799 rgba(255, 255, 255, 255), stop:0.662444 rgba(255, 255, 255, 255),) - - - - QFrame::Panel - - - QFrame::Raised - - - Gauge 4 - - - Qt::AlignCenter - - - - - - - 0 - - - - - - - - - - - - - 0 - 0 - - - - Custom Screen Type - - - - - - - - 0 - 0 - - - - - 90 - 0 - - - - - Nums - - - - - Bars - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - Telemetry screen 3 - - - - - - - - - 0 - 0 - - - - Custom Screen Type - - - - - - - - 0 - 0 - - - - - 90 - 0 - - - - - Nums - - - - - Bars - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - - - - - - Source - - - Qt::AlignCenter - - - - - - - Min - - - Qt::AlignCenter - - - - - - - Gauge - - - Qt::AlignCenter - - - - - - - Max - - - Qt::AlignCenter - - - - - - - - 0 - 0 - - - - - - - - 0 - - - - - - - false - - - Background:qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(0, 0, 128, 255), stop:0.339795 rgba(0, 0, 128, 255), stop:0.339799 rgba(255, 255, 255, 255), stop:0.662444 rgba(255, 255, 255, 255),) - - - - QFrame::Panel - - - QFrame::Raised - - - Gauge 1 - - - Qt::AlignCenter - - - - - - - 0 - - - - - - - - - - 0 - - - - - - - false - - - Background:qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(0, 0, 128, 255), stop:0.339795 rgba(0, 0, 128, 255), stop:0.339799 rgba(255, 255, 255, 255), stop:0.662444 rgba(255, 255, 255, 255),) - - - - QFrame::Panel - - - QFrame::Raised - - - Gauge 2 - - - Qt::AlignCenter - - - - - - - 0 - - - - - - - - - - 0 - - - - - - - false - - - Background:qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(0, 0, 128, 255), stop:0.339795 rgba(0, 0, 128, 255), stop:0.339799 rgba(255, 255, 255, 255), stop:0.662444 rgba(255, 255, 255, 255),) - - - - QFrame::Panel - - - QFrame::Raised - - - Gauge 3 - - - Qt::AlignCenter - - - - - - - 0 - - - - - - - - - - 0 - - - - - - - false - - - Background:qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(0, 0, 128, 255), stop:0.339795 rgba(0, 0, 128, 255), stop:0.339799 rgba(255, 255, 255, 255), stop:0.662444 rgba(255, 255, 255, 255),) - - - - QFrame::Panel - - - QFrame::Raised - - - Gauge 4 - - - Qt::AlignCenter - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - Qt::Vertical - - - - 20 - 1 - - - - - - - - - Templates - - - - - - - - - - - - - tabWidget - modelNameLE - modelVoice_SB - timer1ValTE - timer1DirCB - timer1ModeCB - timer1ModeBCB - timer1Perm - timer1Minute - timer1CountDownBeep - timer2ValTE - timer2DirCB - timer2ModeCB - timer2ModeBCB - timer2Perm - timer2Minute - timer2CountDownBeep - swwarn0_CB - swwarn1_ChkB - swwarn2_ChkB - swwarn3_ChkB - swwarn4_CB - swwarn5_ChkB - swwarn6_ChkB - tswwarn0_CB - chkSA - chkSB - chkSC - chkSD - chkSE - chkSF - chkSG - bcRUDChkB - bcELEChkB - bcTHRChkB - bcAILChkB - bcP1ChkB - bcP2ChkB - bcP3ChkB - bcP4ChkB - bcREaChkB - bcREbChkB - swashTypeCB - swashCollectiveCB - swashRingValSB - swashInvertELE - swashInvertAIL - swashInvertCOL - phase0Name - phase0Trim2Slider - phase0Trim1Slider - phase0Trim4Slider - phase0Trim3Slider - phase0Trim2Value - phase0Trim3Value - phase0Trim1Value - phase0Trim4Value - phase0GV1Source - phase0GV1Name - phase0GV1Value - phase0GV2Source - phase0GV2Name - phase0GV2Value - phase0GV3Source - phase0GV3Name - phase0GV3Value - phase0GV4Source - phase0GV4Name - phase0GV4Value - phase0GV5Source - phase0GV5Name - phase0GV5Value - phase0RE1Value - phase0RE2Value - phase1Name - phase1Switch - phase1Trim2Slider - phase1Trim1Slider - phase1Trim4Slider - phase1Trim3Slider - phase1Trim2Use - phase1Trim2Value - phase1Trim3Use - phase1Trim3Value - phase1Trim1Use - phase1Trim1Value - phase1Trim4Use - phase1Trim4Value - phase1GV1Use - phase1GV1Value - phase1GV2Use - phase1GV2Value - phase1GV3Use - phase1GV3Value - phase1GV4Use - phase1GV4Value - phase1GV5Use - phase1GV5Value - phase1RE1Use - phase1RE1Value - phase1RE2Use - phase1RE2Value - phase2Name - phase2Switch - phase2Trim2Slider - phase2Trim1Slider - phase2Trim4Slider - phase2Trim3Slider - phase2Trim2Use - phase2Trim2Value - phase2Trim3Use - phase2Trim3Value - phase2Trim1Use - phase2Trim1Value - phase2Trim4Use - phase2Trim4Value - phase2GV1Use - phase2GV1Value - phase2GV2Use - phase2GV2Value - phase2GV3Use - phase2GV3Value - phase2GV4Use - phase2GV4Value - phase2GV5Use - phase2GV5Value - phase2RE1Use - phase2RE1Value - phase2RE2Use - phase2RE2Value - phase3Name - phase3Switch - phase3Trim2Slider - phase3Trim1Slider - phase3Trim4Slider - phase3Trim3Slider - phase3Trim2Use - phase3Trim2Value - phase3Trim3Use - phase3Trim3Value - phase3Trim1Use - phase3Trim1Value - phase3Trim4Use - phase3Trim4Value - phase3GV1Use - phase3GV1Value - phase3GV2Use - phase3GV2Value - phase3GV3Use - phase3GV3Value - phase3GV4Use - phase3GV4Value - phase3GV5Use - phase3GV5Value - phase3RE1Use - phase3RE1Value - phase3RE2Use - phase3RE2Value - phase4Name - phase4Switch - phase4Trim2Slider - phase4Trim1Slider - phase4Trim4Slider - phase4Trim3Slider - phase4Trim2Use - phase4Trim2Value - phase4Trim3Use - phase4Trim3Value - phase4Trim1Use - phase4Trim1Value - phase4Trim4Use - phase4Trim4Value - phase4GV1Use - phase4GV1Value - phase4GV2Use - phase4GV2Value - phase4GV3Use - phase4GV3Value - phase4GV4Use - phase4GV4Value - phase4GV5Use - phase4GV5Value - phase4RE1Use - phase4RE1Value - phase4RE2Use - phase4RE2Value - phase5Name - phase5Switch - phase5Trim2Slider - phase5Trim1Slider - phase5Trim4Slider - phase5Trim3Slider - phase5Trim2Use - phase5Trim2Value - phase5Trim3Use - phase5Trim3Value - phase5Trim1Use - phase5Trim1Value - phase5Trim4Use - phase5Trim4Value - phase5GV1Use - phase5GV1Value - phase5GV2Use - phase5GV2Value - phase5GV3Use - phase5GV3Value - phase5GV4Use - phase5GV4Value - phase5GV5Use - phase5GV5Value - phase5RE1Use - phase5RE1Value - phase5RE2Use - phase5RE2Value - phase6Name - phase6Switch - phase6Trim2Slider - phase6Trim1Slider - phase6Trim4Slider - phase6Trim3Slider - phase6Trim2Use - phase6Trim2Value - phase6Trim3Use - phase6Trim3Value - phase6Trim1Use - phase6Trim1Value - phase6Trim4Use - phase6Trim4Value - phase6GV1Use - phase6GV1Value - phase6GV2Use - phase6GV2Value - phase6GV3Use - phase6GV3Value - phase6GV4Use - phase6GV4Value - phase6GV5Use - phase6GV5Value - phase6RE1Use - phase6RE1Value - phase6RE2Use - phase6RE2Value - phase7Name - phase7Switch - phase7Trim2Slider - phase7Trim1Slider - phase7Trim4Slider - phase7Trim3Slider - phase7Trim2Use - phase7Trim2Value - phase7Trim3Use - phase7Trim3Value - phase7Trim1Use - phase7Trim1Value - phase7Trim4Use - phase7Trim4Value - phase7GV1Use - phase7GV1Value - phase7GV2Use - phase7GV2Value - phase7GV3Use - phase7GV3Value - phase7GV4Use - phase7GV4Value - phase7GV5Use - phase7GV5Value - phase7RE1Use - phase7RE1Value - phase7RE2Use - phase7RE2Value - phase8Name - phase8Switch - phase8Trim2Slider - phase8Trim1Slider - phase8Trim4Slider - phase8Trim3Slider - phase8Trim2Use - phase8Trim2Value - phase8Trim3Use - phase8Trim3Value - phase8Trim1Use - phase8Trim1Value - phase8Trim4Use - phase8Trim4Value - phase8GV1Use - phase8GV1Value - phase8GV2Use - phase8GV2Value - phase8GV3Use - phase8GV3Value - phase8GV4Use - phase8GV4Value - phase8GV5Use - phase8GV5Value - phase8RE1Use - phase8RE1Value - phase8RE2Use - phase8RE2Value - CHName_01 - offsetDSB_1 - symckb_1 - minSB_1 - maxSB_1 - chInvCB_1 - ppmcenter_1 - CHName_02 - offsetDSB_2 - symckb_2 - minSB_2 - maxSB_2 - chInvCB_2 - ppmcenter_2 - CHName_03 - offsetDSB_3 - symckb_3 - minSB_3 - maxSB_3 - chInvCB_3 - ppmcenter_3 - CHName_04 - offsetDSB_4 - symckb_4 - minSB_4 - maxSB_4 - chInvCB_4 - ppmcenter_4 - CHName_05 - offsetDSB_5 - symckb_5 - minSB_5 - maxSB_5 - chInvCB_5 - ppmcenter_5 - CHName_06 - offsetDSB_6 - symckb_6 - minSB_6 - maxSB_6 - chInvCB_6 - ppmcenter_6 - CHName_07 - offsetDSB_7 - symckb_7 - minSB_7 - maxSB_7 - chInvCB_7 - ppmcenter_7 - CHName_08 - offsetDSB_8 - symckb_8 - minSB_8 - maxSB_8 - chInvCB_8 - ppmcenter_8 - CHName_09 - offsetDSB_9 - symckb_9 - minSB_9 - maxSB_9 - chInvCB_9 - ppmcenter_9 - CHName_10 - offsetDSB_10 - symckb_10 - minSB_10 - maxSB_10 - chInvCB_10 - ppmcenter_10 - CHName_11 - offsetDSB_11 - symckb_11 - minSB_11 - maxSB_11 - chInvCB_11 - ppmcenter_11 - CHName_12 - offsetDSB_12 - symckb_12 - minSB_12 - maxSB_12 - chInvCB_12 - ppmcenter_12 - CHName_13 - offsetDSB_13 - symckb_13 - minSB_13 - maxSB_13 - chInvCB_13 - ppmcenter_13 - CHName_14 - offsetDSB_14 - symckb_14 - minSB_14 - maxSB_14 - chInvCB_14 - ppmcenter_14 - CHName_15 - offsetDSB_15 - symckb_15 - minSB_15 - maxSB_15 - chInvCB_15 - ppmcenter_15 - CHName_16 - offsetDSB_16 - symckb_16 - minSB_16 - maxSB_16 - chInvCB_16 - ppmcenter_16 - CHName_17 - offsetDSB_17 - symckb_17 - minSB_17 - maxSB_17 - chInvCB_17 - ppmcenter_17 - CHName_18 - offsetDSB_18 - symckb_18 - minSB_18 - maxSB_18 - chInvCB_18 - ppmcenter_18 - CHName_19 - offsetDSB_19 - symckb_19 - minSB_19 - maxSB_19 - chInvCB_19 - ppmcenter_19 - CHName_20 - offsetDSB_20 - symckb_20 - minSB_20 - maxSB_20 - chInvCB_20 - ppmcenter_20 - CHName_21 - offsetDSB_21 - symckb_21 - minSB_21 - maxSB_21 - chInvCB_21 - ppmcenter_21 - CHName_22 - offsetDSB_22 - symckb_22 - minSB_22 - maxSB_22 - chInvCB_22 - ppmcenter_22 - CHName_23 - offsetDSB_23 - symckb_23 - minSB_23 - maxSB_23 - chInvCB_23 - ppmcenter_23 - CHName_24 - offsetDSB_24 - symckb_24 - minSB_24 - maxSB_24 - chInvCB_24 - ppmcenter_24 - CHName_25 - offsetDSB_25 - symckb_25 - minSB_25 - maxSB_25 - chInvCB_25 - ppmcenter_25 - CHName_26 - offsetDSB_26 - symckb_26 - minSB_26 - maxSB_26 - chInvCB_26 - ppmcenter_26 - CHName_27 - offsetDSB_27 - symckb_27 - minSB_27 - maxSB_27 - chInvCB_27 - ppmcenter_27 - CHName_28 - offsetDSB_28 - symckb_28 - minSB_28 - maxSB_28 - chInvCB_28 - ppmcenter_28 - CHName_29 - offsetDSB_29 - symckb_29 - minSB_29 - maxSB_29 - chInvCB_29 - ppmcenter_29 - CHName_30 - offsetDSB_30 - symckb_30 - minSB_30 - maxSB_30 - chInvCB_30 - ppmcenter_30 - CHName_31 - offsetDSB_31 - symckb_31 - minSB_31 - maxSB_31 - chInvCB_31 - ppmcenter_31 - CHName_32 - offsetDSB_32 - symckb_32 - minSB_32 - maxSB_32 - chInvCB_32 - ppmcenter_32 - a11LevelCB - a1RatioSB - a11ValueSB - a22GreaterCB - a1CalibSB - scrollArea - a21ValueSB - a21LevelCB - scrollArea_5 - a1UnitCB - a2CalibSB - a12ValueSB - a22ValueSB - a21GreaterCB - a22LevelCB - clearMixesPB - pushButton - a12GreaterCB - a2RatioSB - templateList - a11GreaterCB - a12LevelCB - scrollArea_2 - curvePt01_y - curvePt01_x - curvePt02_y - curvePt02_x - curvePt03_y - curvePt03_x - curvePt04_y - curvePt04_x - curvePt05_y - curvePt05_x - curvePt06_y - curvePt06_x - curvePt07_y - curvePt07_x - curvePt08_y - curvePt08_x - curvePt09_y - curvePt09_x - curvePt10_y - curvePt10_x - curvePt11_y - curvePt11_x - curvePt12_y - curvePt12_x - curvePt13_y - curvePt13_x - curvePt14_y - curvePt14_x - curvePt15_y - curvePt15_x - curvePt16_y - curvePt16_x - curvePt17_y - curvePt17_x - resetCurve_1 - curveEdit_1 - plotCB_1 - resetCurve_2 - curveEdit_2 - plotCB_2 - resetCurve_3 - curveEdit_3 - plotCB_3 - resetCurve_4 - curveEdit_4 - plotCB_4 - resetCurve_5 - curveEdit_5 - plotCB_5 - resetCurve_6 - curveEdit_6 - plotCB_6 - resetCurve_7 - curveEdit_7 - plotCB_7 - resetCurve_8 - curveEdit_8 - plotCB_8 - resetCurve_9 - curveEdit_9 - plotCB_9 - resetCurve_10 - curveEdit_10 - plotCB_10 - resetCurve_11 - curveEdit_11 - plotCB_11 - resetCurve_12 - curveEdit_12 - plotCB_12 - resetCurve_13 - curveEdit_13 - plotCB_13 - resetCurve_14 - curveEdit_14 - plotCB_14 - resetCurve_15 - curveEdit_15 - plotCB_15 - resetCurve_16 - curveEdit_16 - plotCB_16 - curvePreview - curvetype_CB - cswitchFunc_15 - cswitchFunc_13 - cswitchFunc_14 - cswitchFunc_4 - cswitchFunc_8 - cswitchFunc_7 - cswitchFunc_9 - cswitchFunc_10 - cswitchFunc_11 - cswitchFunc_12 - cswitchFunc_6 - cswitchFunc_1 - cswitchFunc_5 - cswitchFunc_2 - cswitchFunc_3 - cswitchFunc_16 - cswitchFunc_31 - cswitchFunc_32 - cswitchFunc_30 - cswitchFunc_29 - cswitchFunc_25 - cswitchFunc_20 - cswitchFunc_23 - cswitchFunc_26 - cswitchFunc_27 - cswitchFunc_28 - cswitchFunc_22 - cswitchFunc_17 - cswitchFunc_18 - cswitchFunc_19 - cswitchFunc_24 - cswitchFunc_21 - frskyUnitsCB - frskyCurrentCB - frskyProtoCB - frskyVoltCB - frskyBladesCB - varioSourceCB - varioLimitCenterMin_DSB - varioLimitCenterMax_DSB - varioLimitMax_DSB - varioLimitMin_DSB - varioLimitMinOff_ChkB - a2UnitCB - rssiAlarm1CB - rssiAlarm1SB - tabCsView - telemetryCSType1 - telemetryCS1F1_CB - telemetryCS1F3_CB - telBarCS1B1_CB - telMinCS1SB1 - telMaxCS1SB1 - telBarCS1B2_CB - telMinCS1SB2 - telMaxCS1SB2 - telBarCS1B3_CB - telMinCS1SB3 - telMaxCS1SB3 - telBarCS1B4_CB - telMinCS1SB4 - telMaxCS1SB4 - telemetryCS2F1_CB - telemetryCS2F3_CB - telBarCS2B1_CB - telMinCS2SB1 - telMaxCS2SB1 - telBarCS2B2_CB - telMinCS2SB2 - telMaxCS2SB2 - telBarCS2B3_CB - telMinCS2SB3 - telMaxCS2SB3 - telBarCS2B4_CB - telMinCS2SB4 - telMaxCS2SB4 - telemetryCS3F1_CB - telemetryCS3F3_CB - telBarCS3B1_CB - telMinCS3SB1 - telMaxCS3SB1 - telBarCS3B2_CB - telMinCS3SB2 - telMaxCS3SB2 - telBarCS3B3_CB - telMinCS3SB3 - telMaxCS3SB3 - telBarCS3B4_CB - telMinCS3SB4 - telMaxCS3SB4 - - - - - - diff --git a/radio/src/translations/cz.h b/radio/src/translations/cz.h deleted file mode 100644 index 66d33932d..000000000 --- a/radio/src/translations/cz.h +++ /dev/null @@ -1,751 +0,0 @@ -/* - * Authors (alphabetical order) - * - Bertrand Songis - * - Bernet Andre - * - Kjell Kernen - * - Martin Hotar - * - Romolo Manfredini - * - * opentx is based on code named - * gruvin9x by Bryan J. Rentoul: http://code.google.com/p/gruvin9x/, - * er9x by Erez Raviv: http://code.google.com/p/er9x/, - * and the original (and ongoing) project by - * Thomas Husterer, th9x: http://code.google.com/p/th9x/ - * - * This program 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. - * - * This program 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. See the - * GNU General Public License for more details. - * - * - * - * - * !!!!! DO NOT EDIT cz.h - EDIT cz.h.txt INSTEAD !!!!!!! - * - * In order to make translations easier cz.h.txt is parsed and national - * characters are replaced by bitmap codes. The result is cz.h. - * See translate.py in the util catalog for the list of character codes - * - * !!!!! DO NOT EDIT cz.h - EDIT cz.h.txt INSTEAD !!!!!!! - * - */ - -// NON ZERO TERMINATED STRINGS -#define LEN_OFFON "\003" -#define TR_OFFON "VYP""ZAP" - -#define LEN_MMMINV "\003" -#define TR_MMMINV "---""INV" - -#define LEN_NCHANNELS "\004" -#define TR_NCHANNELS "\0014CH\0016CH\0018CH10CH12CH14CH16CH" - -#define LEN_VBEEPMODE TR("\005","\012") -#define TR_VBEEPMODE TR("Tich\212""Alarm""BezKl""V\207e\0", "Tich\212\0 ""Jen alarm\0""Bez kl\200ves""V\207e\0 ") - -#define LEN_VBEEPLEN "\005" -#define TR_VBEEPLEN "O====""=O===""==O==""===O=""====O" - -#define LEN_VRENAVIG "\003" -#define TR_VRENAVIG "Ne REaREb" - -#define LEN_VBLMODE TR("\005", "\007") -#define TR_VBLMODE TR("Vyp\0 ""Kl\200v.""P\200ky\0""V\207e\0 ""Zap\0 ", "Vypnuto""Kl\200vesy""P\200ky\0 ""V\207e\0 ""Zapnuto") - -#define LEN_TRNMODE "\003" -#define TR_TRNMODE " X "" +="" :=" - -#define LEN_TRNCHN "\003" -#define TR_TRNCHN "CH1CH2CH3CH4" - -#define LEN_DATETIME "\006" -#define TR_DATETIME "DATUM:""\201AS: " - -#define LEN_VLCD "\006" -#define TR_VLCD "NormalOptrex" - -#define LEN_COUNTRYCODES TR("\002", "\010") -#define TR_COUNTRYCODES TR("US""JP""EU", "Amerika\0""Japonsko""Evropa\0 ") - -#define LEN_VTRIMINC "\007" -#define TR_VTRIMINC "Expo\0 ""ExJemn\212""Jemn\212\0 ""St\206edn\204""Hrub\212\0 " - -#define LEN_VBEEPCOUNTDOWN "\006" -#define TR_VBEEPCOUNTDOWN "Tich\212\0Zvuk\0 Hlas\0 " - -#define LEN_RETA123 "\001" - -#if defined(PCBGRUVIN9X) - #if ROTARY_ENCODERS > 2 - #define TR_RETA123 "SVPK123abcd" - #else - #define TR_RETA123 "SVPK123ab" - #endif -#elif defined(PCBTARANIS) - #define TR_RETA123 "SVPK12LR" -#else - #define TR_RETA123 "SVPK123" -#endif - -#define LEN_VPROTOS "\006" - -#if defined(PXX) - #define TR_PXX "PXX\0 " -#elif defined(DSM2) || defined(IRPROTOS) - #define TR_PXX "[PXX]\0" -#else - #define TR_PXX -#endif - -#if defined(DSM2) - #define TR_DSM2 "LP45\0 ""DSM2\0 ""DSMX\0 " -#elif defined(IRPROTOS) - #define TR_DSM2 "[LP45]""[DSM2]""[DSMX]" -#else - #define TR_DSM2 -#endif - -#if defined(IRPROTOS) - #define TR_IRPROTOS "SILV TRAC09PICZ SWIFT\0" -#else - #define TR_IRPROTOS -#endif - -#if defined(CPUARM) - #define TR_XPPM -#else - #define TR_XPPM "PPM16\0""PPMsim" -#endif - -#define TR_VPROTOS "PPM\0 " TR_XPPM TR_PXX TR_DSM2 TR_IRPROTOS - -#define LEN_POSNEG "\003" -#define TR_POSNEG "POZ""NEG" - -#define LEN_VCURVEFUNC "\003" -#define TR_VCURVEFUNC "---""x>0""x<0""|x|""f>0""f<0""|f|" - -#define LEN_VMLTPX "\010" -#define TR_VMLTPX "Se\201\204st ""N\200sobit ""Zam\203nit " - -#define LEN_VMLTPX2 "\002" -#define TR_VMLTPX2 "+=""*="":=" - -#define LEN_VMIXTRIMS "\004" -#define TR_VMIXTRIMS "VYP\0""ZAP\0""Sm\203r""V\212\207k""Plyn""K\206id" - -#define LEN_VCSWFUNC "\005" -#define TR_VCSWFUNC "---\0 ""a{x\0 ""a>x\0 ""ax""|a|b\0 ""a" - -#define LEN_VTELPROTO "\007" -#define TR_VTELPROTO "---\0 ""Hub\0 ""WSHHigh""Halcyon" - -#define LEN_VOLTSRC "\003" -#define TR_VOLTSRC "---""A1\0""A2\0""FAS""Cel" - -#define LEN_VARIOSRC "\005" -#if defined(FRSKY_SPORT) - #define TR_VARIOSRC "Vario""A1\0 ""A2\0" -#else - #define TR_VARIOSRC "Alti\0""Alti+""Vario""A1\0 ""A2\0" -#endif - -#define LEN_VSCREEN "\010" -#define TR_VSCREEN "Hodnota ""Ukazatel" - -#define LEN_GPSFORMAT "\004" -#define TR_GPSFORMAT "HMS NMEA" - -#define LEN2_VTEMPLATES 13 -#define LEN_VTEMPLATES "\015" -#define TR_VTEMPLATES "Smazat mixy\0\0""Z\200kl. 4kan\200l\0""Sticky-T-Cut\0""V-Tail \0""Elevon\\Delta\0""eCCPM \0""Heli Setup \0""Servo Test \0" - -#define LEN_VSWASHTYPE "\004" -#define TR_VSWASHTYPE "--- ""120 ""120X""140 ""90\0" - -#define LEN_VKEYS "\005" -#define TR_VKEYS TR(" Menu"" Exit"" Dol\211""Nhoru""Vprvo""Vlevo", " Menu"" Exit""Enter"" Page"" Plus""M\204nus") - -#define LEN_VRENCODERS "\003" -#define TR_VRENCODERS "REa""REb" - -#define LEN_VSWITCHES "\003" -#define LEN_VSRCRAW "\004" - -#if defined(PCBTARANIS) - #define TR_POTS_VSRCRAW "S1\0 ""S2\0 ""LS\0 ""RS\0 " - #define TR_SW_VSRCRAW "SA\0 ""SB\0 ""SC\0 ""SD\0 ""SE\0 ""SF\0 ""SG\0 ""SH\0 " -#elif defined(EXTRA_3POS) - #define TR_POTS_VSRCRAW "P1\0 ""P2\0 " - #define TR_SW_VSRCRAW "3P1\0""3P2\0" - #define TR_9X_3POS_SWITCHES "ID0""ID1""ID2""ID3""ID4""ID5" -#else - #define TR_POTS_VSRCRAW "P1\0 ""P2\0 ""P3\0 " - #define TR_SW_VSRCRAW "3POS" - #define TR_9X_3POS_SWITCHES "ID0""ID1""ID2" -#endif - -#if defined(CPUARM) - #define TR_CUSTOMSW "VS1""VS2""VS3""VS4""VS5""VS6""VS7""VS8""VS9""VSA""VSB""VSC""VSD""VSE""VSF""VSG""VSH""VSI""VSJ""VSK""VSL""VSM""VSN""VSO""VSP""VSQ""VSR""VSS""VST""VSU""VSV""VSW" -#elif defined(PCBGRUVIN9X) || defined(CPUM2561) || defined(CPUM128) - #define TR_CUSTOMSW "VS1""VS2""VS3""VS4""VS5""VS6""VS7""VS8""VS9""VSA""VSB""VSC""VSD""VSE""VSF" -#else - #define TR_CUSTOMSW "VS1""VS2""VS3""VS4""VS5""VS6""VS7""VS8""VS9""VSA""VSB""VSC" -#endif - -#if defined(PCBTARANIS) - #define TR_VSWITCHES "SA\300""SA-""SA\301""SB\300""SB-""SB\301""SC\300""SC-""SC\301""SD\300""SD-""SD\301""SE\300""SE-""SE\301""SF\300""SF\301""SG\300""SG-""SG\301""SH\300""SH\301" TR_CUSTOMSW "*1 " -#else - #define TR_VSWITCHES TR_9X_3POS_SWITCHES "THR""RUD""ELE""AIL""GEA""TRN" TR_CUSTOMSW "*1 " -#endif - -#if defined(PCBSKY9X) - #define TR_ROTARY_ENCODERS_VSRCRAW "REnc" -#elif defined(PCBGRUVIN9X) && ROTARY_ENCODERS > 2 - #define TR_ROTARY_ENCODERS_VSRCRAW "REa ""REb ""REc ""REd " -#elif defined(PCBGRUVIN9X) && ROTARY_ENCODERS <= 2 - #define TR_ROTARY_ENCODERS_VSRCRAW "REa ""REb " -#else - #define TR_ROTARY_ENCODERS_VSRCRAW -#endif - -#if defined(HELI) - #define TR_CYC_VSRCRAW "CYC1""CYC2""CYC3" -#else - #define TR_CYC_VSRCRAW "[C1]""[C2]""[C3]" -#endif - -#define TR_VSRCRAW "---\0""Sm\203r""V\212\207k""Plyn""K\206id" TR_POTS_VSRCRAW TR_ROTARY_ENCODERS_VSRCRAW "MAX\0" TR_CYC_VSRCRAW "TrmS" "TrmV" "TrmP" "TrmK" TR_SW_VSRCRAW - -#define LEN_VTMRMODES "\003" -#define TR_VTMRMODES "VYP""ABS""THs""TH%""THt" - -#define LEN_VTRAINERMODES "\006" -#define TR_VTRAINERMODES "U\201itel""\217\200k\0 " - -#define LEN_VFAILSAFE "\011" -#define TR_VFAILSAFE "Dr\217et\0 ""Vlastn\204\0 ""Bez pulz\211" - -#if defined(MAVLINK) - #define LEN_MAVLINK_BAUDS "\006" - #define TR_MAVLINK_BAUDS "4800 ""9600 ""14400 ""19200 ""38400 ""57600 ""76800 ""115200" - #define LEN_MAVLINK_AC_MODES "\011" - #define TR_MAVLINK_AC_MODES "Stabilize""Acro ""Alt Hold ""Auto ""Guided ""Loiter ""RTL ""Circle ""Pos Hold ""Land ""OF Loiter""Toy A ""Toy M ""INVALID " - #define LEN_MAVLINK_AP_MODES "\015" - #define TR_MAVLINK_AP_MODES "Manual ""Circle ""Stabilize ""Training ""Fly by Wire A""Fly by Wire A""Auto ""RTL ""Loiter ""Guided ""Initialising ""INVALID " -#endif - -// ZERO TERMINATED STRINGS -#define INDENT "\001" -#define LEN_INDENT 1 -#define INDENT_WIDTH (FW/2) - -#if defined(PCBTARANIS) - #define TR_ENTER "[ENTER]" -#else - #define TR_ENTER "[MENU]" -#endif - -#define TR_POPUPS TR_ENTER"\010[EXIT]" -#define OFS_EXIT sizeof(TR_ENTER) - -#define TR_MENUWHENDONE CENTER "\007"TR_ENTER" > DAL\207\214" -#define TR_FREE TR("voln\202:", "voln\212ch") -#define TR_DELETEMODEL "SMAZAT MODEL" -#define TR_COPYINGMODEL "Kop\204ruji model.." -#define TR_MOVINGMODEL "P\206esouv\200m model." -#define TR_LOADINGMODEL "Aktivuji model.." -#define TR_NAME "Jm\202no" -#define TR_MODELNAME "N\200zev modelu" -#define TR_PHASENAME "Jm\202no" -#define TR_MIXNAME "Jm\202no" -#define TR_EXPONAME "Jm\202no" -#define TR_BITMAP "Obr\200zek" -#define TR_TIMER "Stopky " -#define TR_ELIMITS TR("Limit+25%", "Kan\200l +/- 125%") -#define TR_ETRIMS TR("\207ir\207\204Trim", "\207irok\212 trim") -#define TR_TRIMINC TR("KrokTrimu", "Krok trimu") -#define TR_TTRACE TR("StopaPlyn", "Stopa\206 plynu") -#define TR_TTRIM TR("TrimPlynu", "TrimPlyn-volnob\203h") -#define TR_BEEPCTR "(\043)St\206edy" -#define TR_PROTO INDENT"Protokol" -#define TR_PPMFRAME "PPM frame" -#define TR_MS "ms" -#define TR_SWITCH "Sp\204na\201" -#define TR_TRIMS "Trimy" -#define TR_FADEIN "P\206echod Zap" -#define TR_FADEOUT "P\206echod Vyp" -#define TR_DEFAULT "(v\212choz\204)" -#define TR_CHECKTRIMS "\006Kont.\012Trimy" -#define OFS_CHECKTRIMS (9*FW) -#define TR_SWASHTYPE "Typ cykliky" -#define TR_COLLECTIVE "Kolektiv" -#define TR_SWASHRING "Cyklika" -#define TR_ELEDIRECTION "Sm\203r:V\212\207kovka" -#define TR_AILDIRECTION "\012K\206id\202lka" -#define TR_COLDIRECTION "\012Kolektiv" -#define TR_MODE INDENT"M\205d" -#define TR_NOFREEEXPO "Nen\204 voln\202 expo!" -#define TR_NOFREEMIXER "Nen\204 voln\212 mix!" -#define TR_INSERTMIX "VLO\217IT MIX " -#define TR_EDITMIX "UPRAVIT MIX " -#define TR_SOURCE INDENT"Zdroj" -#define TR_WEIGHT "V\200ha" -#define TR_EXPO "Expo" -#define TR_SIDE "Strana" -#define TR_DIFFERENTIAL "Dif.v\212chylek" -#define TR_OFFSET INDENT"Ofset" -#define TR_TRIM "Trim" -#define TR_DREX "DRex" -#define TR_CURVE "K\206ivka" -#define TR_FLMODE "Re\217im" -#define TR_MIXWARNING "Varov\200n\204" -#define TR_OFF "VYP" -#define TR_MULTPX TR("Mat.operace", "Operace") -#define TR_DELAYDOWN TR("Zpo\217d\203n\204 Vyp", "Zdr\217et(-)") -#define TR_DELAYUP TR("Zpo\217d\203n\204 Zap", "Zdr\217et(\43)") -#define TR_SLOWDOWN TR("Zpomalen\204(-)", "Zpomal(\177)") -#define TR_SLOWUP TR("Zpomalen\204(+)", "Zpomal(\176)") -#define TR_MIXER "MIXER" -#define TR_CV "k" -#define TR_GV "GP" -#define TR_ACHANNEL "A\004Kan\200l" -#define TR_RANGE INDENT"Rozsah" -#define TR_BAR "Ukazatel" -#define TR_ALARM INDENT"Alarm" -#define TR_USRDATA TR("U\217ivData", "U\217iv. data") -#define TR_BLADES TR(INDENT"ListyVrt", INDENT"Listy vrtule") -#define TR_SCREEN "Panel " -#define TR_SOUND_LABEL "Zvuk" -#define TR_LENGTH INDENT"D\202lka" -#define TR_SPKRPITCH INDENT"T\205n" -#define TR_HAPTIC_LABEL "Vibrace" -#define TR_HAPTICSTRENGTH INDENT"S\204la" -#define TR_CONTRAST "Kontrast LCD" -#define TR_ALARMS_LABEL "Alarmy" -#define TR_BATTERY_RANGE TR("Ukazatel bat.", "Ukazetel baterie") -#define TR_BATTERYWARNING INDENT"Vybit\200 baterie" -#define TR_INACTIVITYALARM INDENT"Ne\201innost" -#define TR_MEMORYWARNING INDENT"Pln\200 pam\203t'" -#define TR_ALARMWARNING INDENT"Vypnut\212 zvuk" -#define TR_RENAVIG "Navig. RotEnc" -#define TR_THROTTLEREVERSE TR("ReversPlyn", "Revers plynu") -#define TR_MINUTEBEEP TR(INDENT"Minuta", INDENT"Oznamovat minuty") -#define TR_BEEPCOUNTDOWN INDENT"Odpo\201et" -#define TR_PERSISTENT INDENT"Trval\202" -#define TR_BACKLIGHT_LABEL "Podsv\203tlen\204" -#define TR_BLDELAY INDENT"Zhasnout po" -#define TR_BLONBRIGHTNESS INDENT"Jas Zap." -#define TR_BLOFFBRIGHTNESS INDENT"Jas Vyp." -#define TR_SPLASHSCREEN "\210vodn\204Logo" -#define TR_THROTTLEWARNING "(\043)Plyn" -#define TR_SWITCHWARNING "(\043)Sp\204na\201e" -#define TR_TIMEZONE "\201asov\202 p\200smo" -#define TR_RXCHANNELORD TR("Po\206ad\204 kan\200l\211", "V\212choz\204 po\206ad\204 kan\200l\211") -#define TR_SLAVE "Pod\206\204zen\212" -#define TR_MODESRC " M\205d\006% Zdroj" -#define TR_MULTIPLIER "N\200sobi\201" -#define TR_CAL "Kal." -#define TR_VTRIM "Trim- +" -#define TR_BG "BG:" -#define TR_MENUTOSTART CENTER "\007" TR_ENTER " = START" -#define TR_SETMIDPOINT TR(CENTER "\001Nastav p\200ky na st\206ed", CENTER "\002Nastav p\200ky na st\206ed") -#define TR_MOVESTICKSPOTS TR(CENTER "\004H\212bej p\200kami/poty", "\007H\212bej p\200kami i potenciometry") -#define TR_RXBATT "Rx Bat.:" -#define TR_TXnRX "Tx:\0Rx:" -#define OFS_RX 4 -#define TR_ACCEL "Acc:" -#define TR_NODATA CENTER "NO DATA" -#define TR_TM1TM2 "TM1\032TM2" -#define TR_THRTHP "THR\032TH%" -#define TR_TOT "TOT" -#define TR_TMR1LATMAXUS "Tmr1Lat max\006us" -#define STR_US (STR_TMR1LATMAXUS+12) -#define TR_TMR1LATMINUS "Tmr1Lat min\006us" -#define TR_TMR1JITTERUS "Tmr1 Jitter\006us" - -#if defined(CPUARM) - #define TR_TMIXMAXMS "Tmix max\012ms" -#else - #define TR_TMIXMAXMS "Tmix max\014ms" -#endif - -#define TR_T10MSUS "T10ms\016us" -#define TR_FREESTACKMINB "Free Stack\010b" -#define TR_MENUTORESET CENTER TR_ENTER" >> Reset" -#define TR_PPM "PPM" -#define TR_CH "CH" -#define TR_MODEL "MODEL" -#define TR_FP "LR" -#define TR_MIX "MIX" -#define TR_EEPROMLOWMEM "Doch\200z\204 EEPROM" -#define TR_ALERT "\006 POZOR" -#define TR_PRESSANYKEYTOSKIP "Kl\200vesa >>> p\206esko\201it" -#define TR_THROTTLENOTIDLE TR("P\200ka plynu je pohnut\200", "P\200ka plynu nen\204 na nule") -#define TR_ALARMSDISABLED "Alarmy jsou zak\200z\200ny" -#define TR_PRESSANYKEY "\006Stiskni kl\200vesu" -#define TR_BADEEPROMDATA "\006Chyba dat EEPROM" -#define TR_EEPROMFORMATTING "\004Formatov\200n\204 EEPROM" -#define TR_EEPROMOVERFLOW "P\206etekla EEPROM" -#define TR_MENURADIOSETUP "NASTAVEN\214 R\213DIA" -#define TR_MENUDATEANDTIME "DATUM A \201AS" -#define TR_MENUTRAINER "TREN\220R" -#define TR_MENUVERSION "VERZE" -#define TR_MENUDIAG "DIAG" -#define TR_MENUANA "ANALOGY" -#define TR_MENUCALIBRATION "KALIBRACE" -#define TR_TRIMS2OFFSETS "\004Trimy => Subtrimy" -#define TR_MENUMODELSEL "MODEL" -#define TR_MENUSETUP "NASTAVEN\214" -#define TR_MENUFLIGHTPHASE "LETOV\216 RE\217IM" -#define TR_MENUFLIGHTPHASES "LETOV\220 RE\217IMY" -#define TR_MENUHELISETUP "HELI" - - -// Alignment - - -#define TR_MENUINPUTS "DR/EXPO" -#define TR_MENULIMITS "LIMITY" - - -#define TR_MENUCURVES "K\215IVKY" -#define TR_MENUCURVE "\002k" -#define TR_MENUCUSTOMSWITCH "VIRT. SP\214NA\201" -#define TR_MENUCUSTOMSWITCHES "VIRTU\213LN\214 SP\214NA\201E" -#define TR_MENUCUSTOMFUNC "FUNKCE" -#define TR_MENUTELEMETRY "TELEMETRIE" -#define TR_MENUTEMPLATES "\207ABLONY" -#define TR_MENUSTAT "STATISTIKA" -#define TR_MENUDEBUG "DIAG" -#define TR_RXNUM "P\206ij\204ma\201" -#define TR_SYNCMENU "Sync [MENU]" -#define TR_LIMIT INDENT"Limit" -#define TR_MINRSSI "Min Rssi" -#define TR_LATITUDE "Zem. \207\204\206ka" -#define TR_LONGITUDE "Zem. d\202lka" -#define TR_GPSCOORD "GPS sou\206adnice" -#define TR_VARIO "Vario" -#define TR_SHUTDOWN "VYP\214N\213N\204.." -#define TR_BATT_CALIB "Kalib:Baterie" -#define TR_CURRENT_CALIB " +=\006Proud" -#define TR_VOLTAGE INDENT"Nap\203t\204" -#define TR_CURRENT INDENT"Proud" -#define TR_SELECT_MODEL "Vyber model" -#define TR_CREATE_MODEL "Nov\212 model" -#define TR_COPY_MODEL "Kop\204rovat" -#define TR_MOVE_MODEL "P\206esunout" -#define TR_BACKUP_MODEL "Z\200lohovat" -#define TR_DELETE_MODEL "Sma\217 model" -#define TR_RESTORE_MODEL "Obnov model" -#define TR_SDCARD_ERROR "Chyba SD karty" -#define TR_NO_SDCARD "Nen\204 SD karta" -#define TR_INCOMPATIBLE "Nekompatibiln\204" -#define TR_WARNING "KONTROLA" -#define TR_EEPROMWARN "EEPROM" -#define TR_THROTTLEWARN "PLYNU" -#define TR_ALARMSWARN "ALARMU" -#define TR_SWITCHWARN "POZICE" -#define TR_INVERT_THR "Invertovat plyn?" -#define TR_SPEAKER_VOLUME INDENT "Hlasitost" -#define TR_LCD "LCD" -#define TR_BRIGHTNESS INDENT "Jas" -#define TR_CPU_TEMP "Tepl. CPU\016>" -#define TR_CPU_CURRENT "Proud\030>" -#define TR_CPU_MAH "Spot\206eba" -#define TR_COPROC "CoProc." -#define TR_COPROC_TEMP "Tepl. MB \016>" -#define TR_CAPAWARNING INDENT "Kapacita" -#define TR_TEMPWARNING INDENT "Teplota" -#define TR_FUNC "Fce." -#define TR_V1 "V1" -#define TR_V2 "V2" -#define TR_DURATION "Trv\200n\204" -#define TR_DELAY "Zdr\217et" -#define TR_SD_CARD "SD" -#define TR_SDHC_CARD "SD-HC" -#define TR_NO_SOUNDS_ON_SD "\217\200dn\212 zvuk na SD" -#define TR_NO_MODELS_ON_SD "\217\200dn\212 model na SD" -#define TR_NO_BITMAPS_ON_SD "\217\200dn\202 obr\200zky na SD" -#define TR_PLAY_FILE "P\206ehr\200t" -#define TR_DELETE_FILE "Odstranit" -#define TR_COPY_FILE "Kop\204rovat" -#define TR_RENAME_FILE "P\206ejmenovat" -#define TR_ASSIGN_BITMAP "Zvolit obr\200zek" -#define TR_REMOVED " odstran\203n" -#define TR_SD_INFO "Informace" -#define TR_SD_FORMAT "Form\200t" -#define TR_NA "[X]" -#define TR_HARDWARE "HARDWARE" -#define TR_FORMATTING "Form\200tovan\204.." -#define TR_TEMP_CALIB " +=\006Teplota" -#define TR_TIME "\201as" -#define TR_BAUDRATE "BT Baudrate" -#define TR_SD_INFO_TITLE "SD INFO" -#define TR_SD_TYPE "Typ:" -#define TR_SD_SPEED "Rychlost:" -#define TR_SD_SECTORS "Sektor\211 :" -#define TR_SD_SIZE "Velikost:" -#define TR_TYPE TR_SD_TYPE -#define TR_GLOBAL_VARS "Glob\200ln\204 prom\203nn\202" -#define TR_GLOBAL_VAR "Global Variable" -#define TR_MENUGLOBALVARS "GLOB\213LN\214 PROM\203NN\220" -#define TR_OWN " \043 " -#define TR_DATE "Datum" -#define TR_ROTARY_ENCODER "R.Encs" -#define TR_CHANNELS_MONITOR "MONITOR KAN\213LU" -#define TR_INTERNALRF "Vnit\206n\204 RF modul" -#define TR_EXTERNALRF "Extern\204 RF modul" -#define TR_FAILSAFE "M\205d Failsafe" -#define TR_FAILSAFESET "NASTAVEN\214 FAILSAFE" -#define TR_COUNTRYCODE "K\205d regionu" -#define TR_VOICELANG "Jazyk hlasu" -#define TR_UNITSSYSTEM "Jednotky" -#define TR_EDIT "Upravit" -#define TR_INSERT_BEFORE "Vlo\217it p\206ed" -#define TR_INSERT_AFTER "Vlo\217it za" -#define TR_COPY "Kop\204rovat" -#define TR_MOVE "P\206esunout" -#define TR_PASTE "Vlo\217it" -#define TR_DELETE "Odstranit" -#define TR_INSERT "P\206idat" -#define TR_RESET_FLIGHT "Vynulovat let" -#define TR_RESET_TIMER1 "Vynulovat Timer1" -#define TR_RESET_TIMER2 "Vynulovat Timer2" -#define TR_RESET_TELEMETRY "Vynulovat telemetrii" -#define TR_STATISTICS "Statistika" -#define TR_ABOUT_US "O n\200s" -#define TR_AND_SWITCH "AND Sp\204na\201" -#define TR_CF "FN" -#define TR_SPEAKER INDENT"Repro" -#define TR_BUZZER INDENT"P\204p\200k" -#define TR_BYTES "[B]" -#define TR_MODULE_BIND "[Bind]" -#define TR_MODULE_RANGE "[Range]" -#define TR_RESET_BTN "[Reset]" -#define TR_SET "[Volby]" -#define TR_TRAINER "Tren\202r" -#define TR_ANTENNAPROBLEM CENTER "Probl\202m s TX ant\202nou!" -#define TR_MODELIDUSED TR("ID ji\217 pou\217ito","ID modelu je ji\217 pou\217ito") -#define TR_MODULE INDENT "Modul" -#define TR_CHANNELRANGE INDENT "Rozsah kan\200l\211" -#define TR_LOWALARM INDENT "N\204zk\212 Alarm" -#define TR_CRITICALALARM INDENT "Kritick\212 Alarm" -#define TR_PERSISTENT_MAH INDENT "Store mAh" -#define TR_FAS_OFFSET TR(INDENT "FAS Ofs", INDENT "FAS Offset") - -#if defined(MAVLINK) - #define TR_MAVLINK_RC_RSSI_SCALE_LABEL "Max RSSI" - #define TR_MAVLINK_PC_RSSI_EN_LABEL "PC RSSI EN" - #define TR_MAVMENUSETUP_TITLE "Mavlink Setup" - #define TR_MAVLINK_BAUD_LABEL "Baudrate" - #define TR_MAVLINK_INFOS "INFOS" - #define TR_MAVLINK_MODE "MODE" - #define TR_MAVLINK_CUR_MODE "Current Mode" - #define TR_MAVLINK_ARMED "Armed" - #define TR_MAVLINK_BAT_MENU_TITLE "BAT RSSI" - #define TR_MAVLINK_BATTERY_LABEL "Flight Battery status" - #define TR_MAVLINK_RC_RSSI_LABEL "RC RSSI" - #define TR_MAVLINK_PC_RSSI_LABEL "PC RSSI" - #define TR_MAVLINK_NAV_MENU_TITLE "NAV" - #define TR_MAVLINK_COURSE "Course" - #define TR_MAVLINK_HEADING "Heading" - #define TR_MAVLINK_BEARING "Bearing" - #define TR_MAVLINK_ALTITUDE "Altitude" - #define TR_MAVLINK_GPS "GPS" - #define TR_MAVLINK_NO_FIX "NO Fix" - #define TR_MAVLINK_SAT "SAT" - #define TR_MAVLINK_HDOP "HDOP" - #define TR_MAVLINK_LAT "LAT" - #define TR_MAVLINK_LON "LON" -#endif - -// Taranis column headers -#define TR_PHASES_HEADERS { " Jm\202no ", " Sp\204na\201 ", " Trimy ", " P\206echod Zap ", " P\206echod Vyp " } -#define TR_LIMITS_HEADERS { " Jm\202no ", " Subtrim ", " Min ", " Max ", " Sm\203r ", " K\206ivka ", " St\206ed PPM ", " Symetrick\202 " } -#define TR_CSW_HEADERS { " Funkce ", " Hodnota 1 ", " Hodnota 2 ", " AND Sp\204na\201 ", " Trv\200n\204 ", " Zpo\217d\203n\204 " } - -//Taranis About screen -#define TR_ABOUTUS TR(" O n\200s ", "O n\200s") - -#define TR_ABOUT_OPENTX_1 TR("OpenTX je nekomer\201n\204,", "OpenTX\001je\001open-source,") -#define TR_ABOUT_OPENTX_2 TR("opensource bez z\200ruky.", "nekomer\201n\204 a bez\001z\200ruky.") -#define TR_ABOUT_OPENTX_3 TR("Vytvo\206en ve voln\202m \201ase.", "Byl\001vytvo\206en\001nad\207en\212mi\001model\200\206i") -#define TR_ABOUT_OPENTX_4 TR("Podpora v\212voje pomoc\204", "Podpora\001v\212voje\001pomoc\204") -#define TR_ABOUT_OPENTX_5 TR("finan\201n\204ho daru je v\204t\200na!", "drobn\202ho\001daru\001je\001v\204t\200na!") - -#define TR_ABOUT_BERTRAND_1 "Bertrand Songis" -#define TR_ABOUT_BERTRAND_2 "Hlavn\204 v\212voj\200\206 OpenTX" -#define TR_ABOUT_BERTRAND_3 "Spoluautor Companion9x" - -#define TR_ABOUT_MIKE_1 "Mike Blandford" -#define TR_ABOUT_MIKE_2 "Specialista na k\205d," -#define TR_ABOUT_MIKE_3 " a ovlada\201e hardwaru." -#define TR_ABOUT_MIKE_4 "" - -#define TR_ABOUT_ROMOLO_1 "Romolo Manfredini" -#define TR_ABOUT_ROMOLO_2 "Hlavn\204 v\212voj\200\206" -#define TR_ABOUT_ROMOLO_3 "Companion9x" - -#define TR_ABOUT_ANDRE_1 "Andre Bernet" -#define TR_ABOUT_ANDRE_2 "Funk\201nost, pou\217itelnost," -#define TR_ABOUT_ANDRE_3 "lad\203n\204 a dokumentace" - -#define TR_ABOUT_ROB_1 "Rob Thomson" -#define TR_ABOUT_ROB_2 "openrcforums webmaster" - -#define TR_ABOUT_MARTIN_1 "Martin Hota\206" -#define TR_ABOUT_MARTIN_2 "Grafick\212 design, \201e\207tina" - -#if defined(PCBTARANIS) - #define TR_ABOUT_HARDWARE_1 "FrSky" - #define TR_ABOUT_HARDWARE_2 "V\212voj a v\212roba Hardware" - #define TR_ABOUT_HARDWARE_3 "P\206isp\203vatel firmware" -#else - #define TR_ABOUT_HARDWARE_1 "Brent Nelson" - #define TR_ABOUT_HARDWARE_2 "Sky9x designer/v\212robce" - #define TR_ABOUT_HARDWARE_3 "" -#endif - -#define TR_ABOUT_PARENTS_1 "Mate\206sk\202 projekty" -#define TR_ABOUT_PARENTS_2 "ersky9x (Mike Blandford)" -#define TR_ABOUT_PARENTS_3 "ER9X (Erez Raviv)" -#define TR_ABOUT_PARENTS_4 "TH9X (Thomas Husterer)" - -#define TR_CHR_SHORT 's' -#define TR_CHR_LONG 'l' -#define TR_CHR_TOGGLE 't' -#define TR_CHR_HOUR 'h' - -#define TR_BEEP_VOLUME "P\204p\200n\204" -#define TR_WAV_VOLUME "Zvuky WAV" -#define TR_VARIO_VOLUME "Vario" -#define TR_BG_VOLUME "WAV na pozad\204" diff --git a/radio/src/translations/de.h b/radio/src/translations/de.h deleted file mode 100644 index 065f2e57a..000000000 --- a/radio/src/translations/de.h +++ /dev/null @@ -1,754 +0,0 @@ -/* - * Authors (alphabetical order) - * - Bertrand Songis - * - Bernet Andre - * - Helle - * - Kjell Kernen - * - Martin Hotar - * - Romolo Manfredini - * - * opentx is based on code named - * gruvin9x by Bryan J. Rentoul: http://code.google.com/p/gruvin9x/, - * er9x by Erez Raviv: http://code.google.com/p/er9x/, - * and the original (and ongoing) project by - * Thomas Husterer, th9x: http://code.google.com/p/th9x/ - * - * This program 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. - * - * This program 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. See the - * GNU General Public License for more details. - * - * - * !!!!! DO NOT EDIT de.h - EDIT de.h.txt INSTEAD !!!!!!! - * - * In order to make translations easier de.h.txt is parsed and national - * characters are replaced by bitmap codes. The result is de.h. - * - * See translate.py in the util catalog for the list of character codes - * - * !!!!! DO NOT EDIT de.h - EDIT de.h.txt INSTEAD !!!!!!! - */ - - -// NON ZERO TERMINATED STRINGS -#define LEN_OFFON "\003" -#define TR_OFFON "AUS""EIN" - -#define LEN_MMMINV "\003" -#define TR_MMMINV "---""INV" - -#define LEN_NCHANNELS "\004" -#define TR_NCHANNELS "\0014CH\0016CH\0018CH10CH12CH14CH16CH" - -#define LEN_VBEEPMODE "\005" -#define TR_VBEEPMODE "Stumm""Alarm""NoKey""Alle\0" - -#define LEN_VBEEPLEN "\005" -#define TR_VBEEPLEN "0====""=0===""==0==""===0=""====0" - -#define LEN_VRENAVIG "\003" -#define TR_VRENAVIG "AUSDGaDGb" - -#define LEN_VBLMODE "\005" -#define TR_VBLMODE "AUS\0 ""Taste""Stks\0""Beide""EIN\0 " // Anpassung - -#define LEN_TRNMODE "\003" -#define TR_TRNMODE "AUS"" +="" :=" - -#define LEN_TRNCHN "\003" -#define TR_TRNCHN "CH1CH2CH3CH4" - -#define LEN_DATETIME "\005" -#define TR_DATETIME "DATE:""ZEIT:" - -#define LEN_VLCD "\006" -#define TR_VLCD "NormalOptrex" - -#define LEN_COUNTRYCODES TR("\002", "\007") -#define TR_COUNTRYCODES TR("US""JP""EU", "Amerika""Japan\0 ""Europa\0") - -#define LEN_VTRIMINC TR("\006","\013") -#define TR_VTRIMINC TR("Expo ""ExFein""Fein ""Mittel""Grob ","Exponential""Extra Fein ""Fein ""Mittel ""Grob ") - -#define LEN_VBEEPCOUNTDOWN "\006" -#define TR_VBEEPCOUNTDOWN "SilentBeeps\0Voice\0" - -#define LEN_RETA123 "\001" - -#if defined(PCBGRUVIN9X) - #if ROTARY_ENCODERS > 2 - #define TR_RETA123 "SHGQ123abcd" - #else - #define TR_RETA123 "SHGQ123ab" - #endif -#elif defined(PCBTARANIS) - #define TR_RETA123 "SHGQ12LR" -#else - #define TR_RETA123 "SHGQ123" -#endif - -#define LEN_VPROTOS "\006" - -#if defined(PXX) - #define TR_PXX "PXX\0 " -#elif defined(DSM2) || defined(IRPROTOS) - #define TR_PXX "[PXX]\0" -#else - #define TR_PXX -#endif - -#if defined(DSM2) - #define TR_DSM2 "LP45\0 ""DSM2\0 ""DSMX\0 " -#elif defined(IRPROTOS) - #define TR_DSM2 "[LP45]""[DSM2]""[DSMX]" -#else - #define TR_DSM2 -#endif - -#if defined(IRPROTOS) - #define TR_IRPROTOS "SILV TRAC09PICZ SWIFT\0" -#else - #define TR_IRPROTOS -#endif - -#if defined(CPUARM) - #define TR_XPPM -#else - #define TR_XPPM "PPM16\0""PPMsim" -#endif - -#define TR_VPROTOS "PPM\0 " TR_XPPM TR_PXX TR_DSM2 TR_IRPROTOS - -#define LEN_POSNEG "\003" -#define TR_POSNEG "POS""NEG" - -#define LEN_VCURVEFUNC "\003" -#define TR_VCURVEFUNC "---""x>0""x<0""|x|""f>0""f<0""|f|" - -#define LEN_VMLTPX "\010" -#define TR_VMLTPX "Addiere ""Multipl.""Ersetze " - -#define LEN_VMLTPX2 "\002" -#define TR_VMLTPX2 "+=""*="":=" - -#define LEN_VMIXTRIMS "\003" -#define TR_VMIXTRIMS "AUS""EIN""Sei""H\203e""Gas""Que" //Mixer Trim Werte - -#define LEN_VCSWFUNC "\005" -#define TR_VCSWFUNC "---\0 ""a{x\0 ""a>x\0 ""ax""|a|b\0 ""a" - -#define LEN_VTELPROTO "\007" -#define TR_VTELPROTO "Kein\0 ""Hub\0 ""WSHHigh""Halcyon" - -#define LEN_VOLTSRC "\003" -#define TR_VOLTSRC "---""A1\0""A2\0""FAS""Cel" - -#define LEN_VARIOSRC "\005" -#if defined(FRSKY_SPORT) - #define TR_VARIOSRC "Vario""A1\0 ""A2\0" -#else - #define TR_VARIOSRC "Alti\0""Alti+""Vario""A1\0 ""A2\0" -#endif - -#define LEN_VSCREEN "\006" -#define TR_VSCREEN "Werte\0""Balken" //Telemetrie Werte oder Balken - -#define LEN_GPSFORMAT "\004" -#define TR_GPSFORMAT "HMS\0""NMEA" //Koordinatenanzeige - -#define LEN2_VTEMPLATES 15 // max String L\201nge f\205r Men\205 (original=13) -#define LEN_VTEMPLATES "\017" // max String L\201nge 15+cr+lf -#define TR_VTEMPLATES "Misch. L\203sch.\0 ""Einfach. 4-CH\0 ""Fixe Gassperre\0""V-Stabilisator\0""Delta Mischer\0 ""eCCPM\0 ""Hubschrauber\0 ""Servo Tester\0 " - -#define LEN_VSWASHTYPE "\004" -#define TR_VSWASHTYPE "--- ""120 ""120X""140 ""90\0" - -#define LEN_VKEYS "\005" -#define TR_VKEYS TR(" Menu"" Exit"" Down"" Up""Right"" Left", " Menu"" Exit""Enter"" Page"" Plus""Minus") - -#define LEN_VRENCODERS "\003" -#define TR_VRENCODERS "DGa""DGb" //Digitalgeber a und b = Drehgeber - -#define LEN_VSWITCHES "\003" -#define LEN_VSRCRAW "\004" - -#if defined(PCBTARANIS) - #define TR_POTS_VSRCRAW "S1\0 ""S2\0 ""LS\0 ""RS\0 " //4 Potis S1,S2,Links,Rechts - #define TR_SW_VSRCRAW "SA\0 ""SB\0 ""SC\0 ""SD\0 ""SE\0 ""SF\0 ""SG\0 ""SH\0 " -#elif defined(EXTRA_3POS) - #define TR_POTS_VSRCRAW "P1\0 ""P2\0 " - #define TR_SW_VSRCRAW "3P1\0""3P2\0" - #define TR_9X_3POS_SWITCHES "ID0""ID1""ID2""ID3""ID4""ID5" -#else - #define TR_POTS_VSRCRAW "P1\0 ""P2\0 ""P3\0 " - #define TR_SW_VSRCRAW "3POS" - #define TR_9X_3POS_SWITCHES "ID0""ID1""ID2" -#endif - -#if defined(CPUARM) -#define TR_CUSTOMSW "PS1""PS2""PS3""PS4""PS5""PS6""PS7""PS8""PS9""PSA""PSB""PSC""PSD""PSE""PSF""PSG""PSH""PSI""PSJ""PSK""PSL""PSM""PSN""PSO""PSP""PSQ""PSR""PSS""PST""PSU""PSV""PSW" -#elif defined(PCBGRUVIN9X) || defined(CPUM2561) || defined(CPUM128) - #define TR_CUSTOMSW "PS1""PS2""PS3""PS4""PS5""PS6""PS7""PS8""PS9""PSA""PSB""PSC""PSD""PSE""PSF" -#else - #define TR_CUSTOMSW "PS1""PS2""PS3""PS4""PS5""PS6""PS7""PS8""PS9""PSA""PSB""PSC" -#endif - -#if defined(PCBTARANIS) - #define TR_VSWITCHES "SA\300""SA-""SA\301""SB\300""SB-""SB\301""SC\300""SC-""SC\301""SD\300""SD-""SD\301""SE\300""SE-""SE\301""SF\300""SF\301""SG\300""SG-""SG\301""SH\300""SH\301" TR_CUSTOMSW "ONE" -#else - #define TR_VSWITCHES TR_9X_3POS_SWITCHES "THR""RUD""ELE""AIL""GEA""TRN" TR_CUSTOMSW "ONE" -#endif - -#if defined(PCBSKY9X) - #define TR_ROTARY_ENCODERS_VSRCRAW "Dreh" -#elif defined(PCBGRUVIN9X) && ROTARY_ENCODERS > 2 - #define TR_ROTARY_ENCODERS_VSRCRAW "DGa ""DGb ""DGc ""DGd " -#elif defined(PCBGRUVIN9X) && ROTARY_ENCODERS <= 2 - #define TR_ROTARY_ENCODERS_VSRCRAW "DGa ""DGb " -#else - #define TR_ROTARY_ENCODERS_VSRCRAW -#endif - -#if defined(HELI) -#define TR_CYC_VSRCRAW "ZYK1""ZYK2""ZYK3" -#else -#define TR_CYC_VSRCRAW "[C1]""[C2]""[C3]" -#endif - -#define TR_VSRCRAW "---\0""Sei\0""H\203h\0""Gas\0""Que\0" TR_POTS_VSRCRAW TR_ROTARY_ENCODERS_VSRCRAW "MAX\0" TR_CYC_VSRCRAW "TrmS" "TrmH" "TrmG" "TrmQ" TR_SW_VSRCRAW - -#define LEN_VTMRMODES "\003" -#define TR_VTMRMODES "AUS""ABS""GSs""GS%""GSt" - -#define LEN_VTRAINERMODES "\007" // "\006" -#define TR_VTRAINERMODES "Lehrer\0""Sch\205ler\0" // "Master""Slave\0" - -#define LEN_VFAILSAFE "\011" -#define TR_VFAILSAFE "Hold\0 ""Custom\0 ""No pulses" - -#if defined(MAVLINK) - #define LEN_MAVLINK_BAUDS "\006" - #define TR_MAVLINK_BAUDS "4800 ""9600 ""14400 ""19200 ""38400 ""57600 ""76800 ""115200" - #define LEN_MAVLINK_AC_MODES "\011" - #define TR_MAVLINK_AC_MODES "Stabilize""Acro ""Alt Hold ""Auto ""Guided ""Loiter ""RTL ""Circle ""Pos Hold ""Land ""OF Loiter""Toy A ""Toy M ""INVALID " - #define LEN_MAVLINK_AP_MODES "\015" - #define TR_MAVLINK_AP_MODES "Manual ""Circle ""Stabilize ""Training ""Fly by Wire A""Fly by Wire A""Auto ""RTL ""Loiter ""Guided ""Initialising ""INVALID " -#endif - -// ZERO TERMINATED STRINGS -#define INDENT "\001" -#define LEN_INDENT 1 -#define INDENT_WIDTH (FW/2) - -#if defined(PCBTARANIS) - #define TR_ENTER "[ENTER]" -#else - #define TR_ENTER "[MENU]" -#endif - -#define TR_POPUPS TR_ENTER"\010[EXIT]" -#define OFS_EXIT sizeof(TR_ENTER) - -#define TR_MENUWHENDONE CENTER"\006"TR_ENTER" > Weiter" -#define TR_FREE "frei" -#define TR_DELETEMODEL "Modell l\203schen?" -#define TR_COPYINGMODEL "Kopiere Modell" -#define TR_MOVINGMODEL "Schiebe Modell" -#define TR_LOADINGMODEL "Lade Modell..." -#define TR_NAME "Name" -#define TR_MODELNAME "Modell Name" -#define TR_PHASENAME "Phase Name" -#define TR_MIXNAME "Mix Name" -#define TR_EXPONAME "Expo Name" -#define TR_BITMAP "Modell Bild" -#define TR_TIMER TR("Stoppuhr","Stoppuhr ") -#define TR_ELIMITS TR("Erw.Limit","Erweit. Limits") -#define TR_ETRIMS TR("Erw.Trims","Erweit. Trimmung") -#define TR_TRIMINC TR("Trim Schr.","Trimm Schritte") -#define TR_TTRACE TR("Gasquelle","Gas Quelle") -#define TR_TTRIM TR("Gastrim","Gas Trimmung") -#define TR_BEEPCTR TR("Mitt.Piep","Mittelst. Pieps") -#define TR_PROTO TR(INDENT"Proto.",INDENT"Protokoll") -#define TR_PPMFRAME "PPM Einst." -#define TR_MS "ms" -#define TR_SWITCH TR("Schalt.","Schalter") -#define TR_TRIMS "Trims" -#define TR_FADEIN "Langs. Ein" -#define TR_FADEOUT "Langs. Aus" -#define TR_DEFAULT "(Normal)" -#define TR_CHECKTRIMS "\006Trims\012Pr\205fen" -#define OFS_CHECKTRIMS (9*FW) -#define TR_SWASHTYPE TR("Typ Taumelsch","Typ Taumelscheibe") -#define TR_COLLECTIVE TR("Kollekt.Pitch","Kollekt. Pitch Kanal") -#define TR_SWASHRING TR("Zykl. Begrenz","Zyklische Begrenzung") -#define TR_ELEDIRECTION TR("Nick Richtung"," Nick Servo Richtung") -#define TR_AILDIRECTION TR("Roll Richtung"," Roll Servo Richtung") -#define TR_COLDIRECTION TR("Pit. Richtung","Pitch Servo Richtung") -#define TR_MODE INDENT"Modus" -#define TR_NOFREEEXPO "Expos voll!" -#define TR_NOFREEMIXER "Mischer voll!" -#define TR_INSERTMIX "MISCHER HINZ." -#define TR_EDITMIX "MISCHER Edit" -#define TR_SOURCE INDENT"Quelle" -#define TR_WEIGHT "Gewicht" -#define TR_EXPO TR("Expo","Exponential") -#define TR_SIDE "Seite" -#define TR_DIFFERENTIAL "Diff" -#define TR_OFFSET INDENT"Offset" -#define TR_TRIM "Trim" -#define TR_DREX "DRex" -#define TR_CURVE "Kurve" -#define TR_FLMODE TR("Phase","Phasen") -#define TR_MIXWARNING "Warnung" -#define TR_OFF "AUS" -#define TR_MULTPX "Wirkung" -#define TR_DELAYDOWN "Verz. Dn" -#define TR_DELAYUP "Verz. Up" -#define TR_SLOWDOWN "Langs.Dn" -#define TR_SLOWUP "Langs.Up" -#define TR_MIXER "MISCHER" -#define TR_CV "KV" -#define TR_GV "GV" -#define TR_ACHANNEL "A\004Kanal " -#define TR_RANGE INDENT"Skala" -#define TR_BAR "Streifen" -#define TR_ALARM INDENT"Alarm" -#define TR_USRDATA "Daten" -#define TR_BLADES INDENT"Bl\201tter" -#define TR_SCREEN "Bild " -#define TR_SOUND_LABEL "T\203ne" -#define TR_LENGTH INDENT"Dauer" -#define TR_SPKRPITCH INDENT"Tonh\203he" -#define TR_HAPTIC_LABEL "Vibration" -#define TR_HAPTICSTRENGTH INDENT"St\201rke" -#define TR_CONTRAST "Kontrast" -#define TR_ALARMS_LABEL "Alarm wenn" -#define TR_BATTERY_RANGE TR("Akku Bereich","Akku Spg-Bereich") // Symbol Akku Ladezustand -#define TR_BATTERYWARNING INDENT"Akku Spg kl." -#define TR_INACTIVITYALARM INDENT"Inaktivit\201t " -#define TR_MEMORYWARNING INDENT"Speicher voll" -#define TR_ALARMWARNING INDENT"Ton aus" -#define TR_RENAVIG "Drehgeb. Navig." -#define TR_THROTTLEREVERSE TR("Gas invers", "Vollgas hinten?") //\200nderung wg TH9x, Taranis -#define TR_MINUTEBEEP TR(INDENT"Minute",INDENT"Jede Minute") -#define TR_BEEPCOUNTDOWN INDENT"Countdown" -#define TR_PERSISTENT TR(INDENT"M-Zeit",INDENT"Modell Zeit") -#define TR_BACKLIGHT_LABEL "LCD Licht an" -#define TR_BLDELAY INDENT"Dauer" -#define TR_BLONBRIGHTNESS INDENT"An Helligkeit" -#define TR_BLOFFBRIGHTNESS INDENT"Aus Helligkeit" -#define TR_SPLASHSCREEN "Startbild" -#define TR_THROTTLEWARNING "Gas Alarm" -#define TR_SWITCHWARNING TR("Sch. Alarm","Schalter Alarm") -#define TR_TIMEZONE TR("Zeitzone","GPS Zeit Zone") -#define TR_RXCHANNELORD TR("Kanalanordnung","Kanalvoreinstellung") -#define TR_SLAVE "Sch\205ler PPM1-8 als Ausgang" -#define TR_MODESRC " Modus\002% Quelle" -#define TR_MULTIPLIER "Multiplikator" -#define TR_CAL "Kal." -#define TR_VTRIM "Trim- +" -#define TR_BG "BG:" -#define TR_MENUTOSTART CENTER"\006"TR_ENTER" zum Start" -#define TR_SETMIDPOINT CENTER"Sticks+Potis auf Mitte" -#define TR_MOVESTICKSPOTS CENTER"Sticks+Potis bewegen" -#define TR_RXBATT "Rx Batt:" -#define TR_TXnRX "Tx:\0Rx:" -#define OFS_RX 4 -#define TR_ACCEL "Acc:" -#define TR_NODATA CENTER"NO DATA" -#define TR_TM1TM2 "TM1\032TM2" -#define TR_THRTHP "THR\032TH%" -#define TR_TOT "TOT" -#define TR_TMR1LATMAXUS "Tmr1Lat max\006us" -#define STR_US (STR_TMR1LATMAXUS+12) -#define TR_TMR1LATMINUS "Tmr1Lat min\006us" -#define TR_TMR1JITTERUS "Tmr1 Jitter\006us" - -#if defined(CPUARM) - #define TR_TMIXMAXMS "Tmix max\012ms" -#else - #define TR_TMIXMAXMS "Tmix max\014ms" -#endif - -#define TR_T10MSUS "T10ms\016us" -#define TR_FREESTACKMINB "Free Stack\010b" -#define TR_MENUTORESET CENTER TR_ENTER" f\205r Reset" -#define TR_PPM "PPM" -#define TR_CH "CH" -#define TR_MODEL "MODELL" -#define TR_FP "FP" -#define TR_MIX "MIX" -#define TR_EEPROMLOWMEM "EEPROM voll" -#define TR_ALERT "WARNUNG" -#define TR_PRESSANYKEYTOSKIP "Taste dr\205cken" -#define TR_THROTTLENOTIDLE "Gas nicht Null!" -#define TR_ALARMSDISABLED "Alarme ausgeschaltet" -#define TR_PRESSANYKEY TR("Taste dr\205cken",CENTER"Taste dr\205cken") -#define TR_BADEEPROMDATA "EEPROM ung\205ltig" -#define TR_EEPROMFORMATTING "EEPROM Initialisieren" -#define TR_EEPROMOVERFLOW "EEPROM \204berlauf" -#define TR_MENURADIOSETUP TR("SENDER EINST.","SENDER GRUNGEINSTELLUNGEN") -#define TR_MENUDATEANDTIME "DATUM UND ZEIT" -#define TR_MENUTRAINER TR("Lehr./Sch\204l.","LEHRER/SCH\204LER") -#define TR_MENUVERSION "VERSION" -#define TR_MENUDIAG TR("Schalt.","Schalter Test") -#define TR_MENUANA "Analog Test" -#define TR_MENUCALIBRATION TR("KALIB. ANALOG","KALIBRIERUNG STICKS+POTIS") -#define TR_TRIMS2OFFSETS "\006Trims => Offset" -#define TR_MENUMODELSEL TR("MODELLE","MODELL W\200HLEN") -#define TR_MENUSETUP TR("KONF.","MODELL EINSTELLUNGEN") -#define TR_MENUFLIGHTPHASE "FLUGPHASE" -#define TR_MENUFLIGHTPHASES "FLUGPHASEN" -#define TR_MENUHELISETUP "HUBSCHRAUBER" - -#if defined(PCBTARANIS) - #define TR_MENUINPUTS "EING\200NGE" - #define TR_MENULIMITS "AUSG\200NGE" -#elif defined(PPM_CENTER_ADJUSTABLE) || defined(PPM_LIMITS_SYMETRICAL) // The right menu titles for the gurus ... #define TR_MENUDREXPO "KN\204PPEL" - #define TR_MENUINPUTS "EING\200NGE" - #define TR_MENULIMITS "AUSG\200NGE" -#else - #define TR_MENUINPUTS TR("DR/EXPO","DUALRATE/EXPO") - #define TR_MENULIMITS TR("GRENZEN","SERVO WEG") -#endif - -#define TR_MENUCURVES "KURVEN" -#define TR_MENUCURVE "KURVE" -#define TR_MENUCUSTOMSWITCH "PROG.SCHALTER" -#define TR_MENUCUSTOMSWITCHES TR_MENUCUSTOMSWITCH -#define TR_MENUCUSTOMFUNC "SPEZ. FUNKTIONEN" -#define TR_MENUTELEMETRY "TELEMETRIE" -#define TR_MENUTEMPLATES "VORLAGEN" -#define TR_MENUSTAT "STAT" -#define TR_MENUDEBUG "DEBUG" -#define TR_RXNUM TR("Rx Nummer",INDENT"Empf\201nger Nr.") -#define TR_SYNCMENU "Sync [MENU]" -#define TR_LIMIT INDENT"Limite" -#define TR_MINRSSI "Min. RSSI" -#define TR_LATITUDE "Breite:" -#define TR_LONGITUDE "L\201nge:" -#define TR_GPSCOORD TR("Gps Koord.","GPS Koordinaten Format") -#define TR_VARIO TR("Vario","Variometer") -#define TR_SHUTDOWN "Herunterfahren" -#define TR_BATT_CALIB "Akku. Kalib." -#define TR_CURRENT_CALIB "Stromkalib." -#define TR_VOLTAGE INDENT"Spann." -#define TR_CURRENT INDENT"Strom" -#define TR_SELECT_MODEL "Modell W\201hlen" -#define TR_CREATE_MODEL "Neues Modell" -#define TR_COPY_MODEL "Kopiere Modell" -#define TR_MOVE_MODEL "Verschiebe Modell" -#define TR_BACKUP_MODEL "Modell Backup" -#define TR_DELETE_MODEL "Modell L\203schen" // TODO merged into DELETEMODEL? -#define TR_RESTORE_MODEL "Modell Restore" -#define TR_SDCARD_ERROR "SDcard Fehler" -#define TR_NO_SDCARD "Keine SDcard" -#define TR_INCOMPATIBLE "Nicht kompatibel" -#define TR_WARNING "WARNUNG" -#define TR_EEPROMWARN "EEPROM" -#define TR_THROTTLEWARN "GAS" -#define TR_ALARMSWARN "ALARM" -#define TR_SWITCHWARN "SCHALTER" -#define TR_INVERT_THR TR("Gas umkehren?","Vollgas hinten?") //\200nderung wg Th9x -#define TR_SPEAKER_VOLUME INDENT "Lautst\201rke" -#define TR_LCD "Bildschirm" -#define TR_BRIGHTNESS INDENT "Helligkeit" -#define TR_CPU_TEMP "CPU Temp.\016>" -#define TR_CPU_CURRENT "Strom\022>" -#define TR_CPU_MAH "Verbrauch" -#define TR_COPROC "CoProz." -#define TR_COPROC_TEMP "MB Temp. \016>" -#define TR_CAPAWARNING INDENT "Kapaz. niedrig" -#define TR_TEMPWARNING INDENT "Temperatur gr\203er" -#define TR_FUNC "Funktion" -#define TR_V1 "V1" -#define TR_V2 "V2" -#define TR_DURATION "Dauer" -#define TR_DELAY "Verz\203g." -#define TR_SD_CARD "SD Karte" -#define TR_SDHC_CARD "SD-HC Karte" -#define TR_NO_SOUNDS_ON_SD "Keine T\203ne auf SD" -#define TR_NO_MODELS_ON_SD "Keine Modelle auf SD" -#define TR_NO_BITMAPS_ON_SD "Keine Bitmaps auf SD" -#define TR_PLAY_FILE "Spielen" -#define TR_DELETE_FILE "L\203schen" -#define TR_COPY_FILE "Kopieren" -#define TR_RENAME_FILE "Umbenennen" -#define TR_ASSIGN_BITMAP "Assign Bitmap" -#define TR_REMOVED " gel\203scht" -#define TR_SD_INFO "Information" -#define TR_SD_FORMAT "Formattieren" -#define TR_NA "N/V" //NV=Nicht Verf\205gbar Kurz-Meldung -#define TR_HARDWARE "Hardware" -#define TR_FORMATTING "Formattierung..." -#define TR_TEMP_CALIB "Temp. Kalib." -#define TR_TIME "Uhrzeit:" -#define TR_BAUDRATE "Baudrate" -#define TR_SD_INFO_TITLE "SD INFO" -#define TR_SD_TYPE "Typ:" -#define TR_SD_SPEED "Geschw:" -#define TR_SD_SECTORS "Sektoren:" -#define TR_SD_SIZE "Gr\203\206e:" -#define TR_TYPE "Typ" -#define TR_GLOBAL_VARS "Globale Variablen" -#define TR_GLOBAL_VAR "Global Variable" -#define TR_MENUGLOBALVARS "GLOBALE VARIABLEN" -#define TR_OWN "Eigen" -#define TR_DATE "Datum:" -#define TR_ROTARY_ENCODER "Drehgeber" -#define TR_CHANNELS_MONITOR "Kanal Monitor" -#define TR_INTERNALRF "----Internes HF Modul----------" -#define TR_EXTERNALRF "----Externes HF Modul----------" -#define TR_FAILSAFE "Failsafe Mode" -#define TR_FAILSAFESET "Failsafe Einst." -#define TR_COUNTRYCODE "L\201nder Code" -#define TR_VOICELANG "Sprach-Ansagen" -#define TR_UNITSSYSTEM "Einheiten" -#define TR_EDIT "Zeile Editieren" -#define TR_INSERT_BEFORE "Neue Zeile davor" -#define TR_INSERT_AFTER "Neue Zeile danach" -#define TR_COPY "Zeile Kopieren" -#define TR_MOVE "Zeile Verschieben" -#define TR_PASTE "Paste" -#define TR_DELETE "Zeile L\203schen" -#define TR_INSERT "Neue Zeile" -#define TR_RESET_FLIGHT "Reset Flugdaten" -#define TR_RESET_TIMER1 "Reset Timer1" -#define TR_RESET_TIMER2 "Reset Timer2" -#define TR_RESET_TELEMETRY "Reset Telemetrie" -#define TR_STATISTICS "Statistik und Gas" -#define TR_ABOUT_US "Die Programmierer" -#define TR_AND_SWITCH "UND Schalt" //UND mit weiterem Schaltern -#define TR_CF "SF" //Spezial Funktionen engl. CF -#define TR_SPEAKER INDENT"Lautspr" -#define TR_BUZZER INDENT"Summer" -#define TR_BYTES "bytes" -#define TR_MODULE_BIND "[Bind]" -#define TR_MODULE_RANGE "[Range]" -#define TR_RESET_BTN "[Reset]" -#define TR_SET "[Set]" -#define TR_TRAINER "----Trainer Buchse Einst.------" //DSC Buchse Funktion -#define TR_ANTENNAPROBLEM CENTER "TX Antennen Problem!" -#define TR_MODELIDUSED TR("ID schon benutzt","Modell ID schon benutzt") -#define TR_MODULE INDENT "Modul-Typ" -#define TR_CHANNELRANGE INDENT "Ausgangs Kan\201le" -#define TR_LOWALARM INDENT "Low Alarm" -#define TR_CRITICALALARM INDENT "Kritisch Alarm" -#define TR_PERSISTENT_MAH INDENT "Store mAh" -#define TR_FAS_OFFSET TR(INDENT "FAS Ofs", INDENT "FAS Offset") - -#if defined(MAVLINK) - #define TR_MAVLINK_RC_RSSI_SCALE_LABEL "Max RSSI" - #define TR_MAVLINK_PC_RSSI_EN_LABEL "PC RSSI EN" - #define TR_MAVMENUSETUP_TITLE "Mavlink Setup" - #define TR_MAVLINK_BAUD_LABEL "Baudrate" - #define TR_MAVLINK_INFOS "INFOS" - #define TR_MAVLINK_MODE "MODE" - #define TR_MAVLINK_CUR_MODE "Current Mode" - #define TR_MAVLINK_ARMED "Armed" - #define TR_MAVLINK_BAT_MENU_TITLE "BAT RSSI" - #define TR_MAVLINK_BATTERY_LABEL "Flight Battery status" - #define TR_MAVLINK_RC_RSSI_LABEL "RC RSSI" - #define TR_MAVLINK_PC_RSSI_LABEL "PC RSSI" - #define TR_MAVLINK_NAV_MENU_TITLE "NAV" - #define TR_MAVLINK_COURSE "Course" - #define TR_MAVLINK_HEADING "Heading" - #define TR_MAVLINK_BEARING "Bearing" - #define TR_MAVLINK_ALTITUDE "Altitude" - #define TR_MAVLINK_GPS "GPS" - #define TR_MAVLINK_NO_FIX "NO Fix" - #define TR_MAVLINK_SAT "SAT" - #define TR_MAVLINK_HDOP "HDOP" - #define TR_MAVLINK_LAT "LAT" - #define TR_MAVLINK_LON "LON" -#endif - -// Taranis column headers -#define TR_PHASES_HEADERS { " Name ", " Schalter ", " Trimmung ", " Fade In ", " Fade Out " } -#define TR_LIMITS_HEADERS { " Name ", " Offset ", " Min ", " Max ", " Richtung ", " PPM Mitte ", " Symmetrisch " } -#define TR_CSW_HEADERS { " Funktion ", " Var1 ", " Var2 ", " UND Schalter ", " Dauer ", " Delay " } - -//Taranis About screen -#define TR_ABOUTUS "\204ber OpenTx" - -#define TR_ABOUT_OPENTX_1 "OpenTX ist Open Source," -#define TR_ABOUT_OPENTX_2 "nicht kommerziell, ohne" -#define TR_ABOUT_OPENTX_3 "Funktionsgarantie, frei" -#define TR_ABOUT_OPENTX_4 "verf\205gbar. Unterst\205tzung" -#define TR_ABOUT_OPENTX_5 "durch Spenden willkommen" - -#define TR_ABOUT_BERTRAND_1 "Bertrand Songis" -#define TR_ABOUT_BERTRAND_2 "OpenTX Hauptauthor" -#define TR_ABOUT_BERTRAND_3 "Companion9x Mitentwickler" - -#define TR_ABOUT_MIKE_1 "Mike Blandford" -#define TR_ABOUT_MIKE_2 "Code und Treiber Guru" -#define TR_ABOUT_MIKE_3 "wohl einer der Besten" -#define TR_ABOUT_MIKE_4 "sehr inspirierend" - -#define TR_ABOUT_ROMOLO_1 "Romolo Manfredini" -#define TR_ABOUT_ROMOLO_2 "Companion9x Hauptentwickler" -#define TR_ABOUT_ROMOLO_3 "" - -#define TR_ABOUT_ANDRE_1 "Andre Bernet" -#define TR_ABOUT_ANDRE_2 "Funktionalit\201t, Tests," -#define TR_ABOUT_ANDRE_3 "Debugging, Dokumentation" - -#define TR_ABOUT_ROB_1 "Rob Thomson" -#define TR_ABOUT_ROB_2 "Openrcforums Webmaster" - -#define TR_ABOUT_MARTIN_1 "Martin Hotar" -#define TR_ABOUT_MARTIN_2 "Grafik Designer" - -#if defined(PCBTARANIS) - #define TR_ABOUT_HARDWARE_1 "Firma FrSky " - #define TR_ABOUT_HARDWARE_2 "Hardware Design/Produktion" - #define TR_ABOUT_HARDWARE_3 "Firmware Vertrieb" -#else - #define TR_ABOUT_HARDWARE_1 "Brent Nelson" - #define TR_ABOUT_HARDWARE_2 "Sky9x Design/produktion" - #define TR_ABOUT_HARDWARE_3 "" -#endif - -#define TR_ABOUT_PARENTS_1 "Vorg\201nger-Projekte" -#define TR_ABOUT_PARENTS_2 "ersky9x (Mike Blandford)" -#define TR_ABOUT_PARENTS_3 "ER9X (Erez Raviv)" -#define TR_ABOUT_PARENTS_4 "TH9X (Thomas Husterer)" - -#define TR_CHR_SHORT 's' //Taste short -#define TR_CHR_LONG 'l' //Taste long -#define TR_CHR_TOGGLE 't' //Taste als togglefunktion = Ein Aus Ein -#define TR_CHR_HOUR 'h' //Stunden - -#define TR_BEEP_VOLUME "Beep Volume" -#define TR_WAV_VOLUME "Wav Volume" -#define TR_VARIO_VOLUME "Vario Volume" -#define TR_BG_VOLUME "Bg Volume" diff --git a/radio/src/translations/fr.h b/radio/src/translations/fr.h deleted file mode 100644 index 53970db71..000000000 --- a/radio/src/translations/fr.h +++ /dev/null @@ -1,751 +0,0 @@ -/* - * Authors (alphabetical order) - * - Bertrand Songis - * - Bernet Andre - * - Kjell Kernen - * - Martin Hotar - * - Romolo Manfredini - * - * opentx is based on code named - * gruvin9x by Bryan J. Rentoul: http://code.google.com/p/gruvin9x/, - * er9x by Erez Raviv: http://code.google.com/p/er9x/, - * and the original (and ongoing) project by - * Thomas Husterer, th9x: http://code.google.com/p/th9x/ - * - * This program 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. - * - * This program 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. See the - * GNU General Public License for more details. - * - * - * - * !!!!! DO NOT EDIT fr.h - EDIT fr.h.txt INSTEAD !!!!!!! - * - * In order to make translations easier fr.h.txt is parsed and national - * characters are replaced by bitmap codes. The result is fr.h. - * - * See translate.py in the util catalog for the list of character codes - * - * !!!!! DO NOT EDIT fr.h - EDIT fr.h.txt INSTEAD !!!!!!! - */ - - -// NON ZERO TERMINATED STRINGS -#define LEN_OFFON "\003" -#define TR_OFFON "OFF""ON\0" - -#define LEN_MMMINV "\003" -#define TR_MMMINV "---""INV" - -#define LEN_NCHANNELS "\004" -#define TR_NCHANNELS "\0014CH\0016CH\0018CH10CH12CH14CH16CH" - -#define LEN_VBEEPMODE "\005" -#define TR_VBEEPMODE "Aucun""Alarm""NoKey""Tout\0" - -#define LEN_VBEEPLEN "\005" -#define TR_VBEEPLEN "0====""=0===""==0==""===0=""====0" - -#define LEN_VRENAVIG "\003" -#define TR_VRENAVIG "NonREaREb" - -#define LEN_VBLMODE TR("\004","\011") -#define TR_VBLMODE TR("OFF\0""Btns""Ctrl""Tous""ON\0","OFF\0 ""Touches\0 ""Controles""Tous\0 ""ON\0 ") - -#define LEN_TRNMODE "\003" -#define TR_TRNMODE "OFF"" +="" :=" - -#define LEN_TRNCHN "\003" -#define TR_TRNCHN "CH1CH2CH3CH4" - -#define LEN_DATETIME "\005" -#define TR_DATETIME "DATE:""HEURE" - -#define LEN_VLCD "\006" -#define TR_VLCD "NormalOptrex" - -#define LEN_COUNTRYCODES TR("\002", "\006") -#define TR_COUNTRYCODES TR("US""JP""EU", "USA\0 ""Japon\0""Europe") - -#define LEN_VTRIMINC TR("\006","\013") -#define TR_VTRIMINC TR("Expo\0 ""ExFin\0""Fin\0 ""Moyen\0""Gros\0 ","Exponentiel""Extra Fin\0 ""Fin\0 ""Moyen\0 ""Grossier\0 ") - -#define LEN_VBEEPCOUNTDOWN "\006" -#define TR_VBEEPCOUNTDOWN "SilentBeeps\0Voice\0" - -#define LEN_RETA123 "\001" - -#if defined(PCBGRUVIN9X) - #if ROTARY_ENCODERS > 2 - #define TR_RETA123 "DPGA123abcd" - #else - #define TR_RETA123 "DPGA123ab" - #endif -#elif defined(PCBTARANIS) - #define TR_RETA123 "DPGA12LR" -#else - #define TR_RETA123 "DPGA123" -#endif - -#define LEN_VPROTOS "\006" - -#if defined(PXX) - #define TR_PXX "PXX\0 " -#elif defined(DSM2) || defined(IRPROTOS) - #define TR_PXX "[PXX]\0" -#else - #define TR_PXX -#endif - -#if defined(DSM2) - #define TR_DSM2 "LP45\0 ""DSM2\0 ""DSMX\0 " -#elif defined(IRPROTOS) - #define TR_DSM2 "[LP45]""[DSM2]""[DSMX]" -#else - #define TR_DSM2 -#endif - -#if defined(IRPROTOS) - #define TR_IRPROTOS "SILV TRAC09PICZ SWIFT\0" -#else - #define TR_IRPROTOS -#endif - -#if defined(CPUARM) - #define TR_XPPM -#else - #define TR_XPPM "PPM16\0""PPMsim" -#endif - -#define TR_VPROTOS "PPM\0 " TR_XPPM TR_PXX TR_DSM2 TR_IRPROTOS - -#define LEN_POSNEG "\003" -#define TR_POSNEG "POS""NEG" - -#define LEN_VCURVEFUNC "\003" -#define TR_VCURVEFUNC "---""x>0""x<0""|x|""f>0""f<0""|f|" - -#define LEN_VMLTPX TR("\010","\013") -#define TR_VMLTPX TR("Ajoute\0 ""Multipl.""Remplace","Additionner""Multiplier\0""Remplacer\0 ") - -#define LEN_VMLTPX2 "\002" -#define TR_VMLTPX2 "+=""*="":=" - -#define LEN_VMIXTRIMS "\003" -#define TR_VMIXTRIMS "OFF""ON\0""Dir""Prf""Gaz""Ail" - -#define LEN_VCSWFUNC "\005" -#define TR_VCSWFUNC "---\0 ""a{x\0 ""a>x\0 ""ax""|a|b\0 ""a" - -#define LEN_VTELPROTO "\007" -#define TR_VTELPROTO "Aucun ""Hub\0 ""WSHHigh""Halcyon" - -#define LEN_VOLTSRC "\003" -#define TR_VOLTSRC "---""A1\0""A2\0""FAS""Cel" - -#define LEN_VARIOSRC "\005" -#if defined(FRSKY_SPORT) - #define TR_VARIOSRC "Vario""A1\0 ""A2\0" -#else - #define TR_VARIOSRC "Alti\0""Alti+""Vario""A1\0 ""A2\0" -#endif - -#define LEN_VSCREEN TR("\004","\007") -#define TR_VSCREEN TR("Val.""Bars","Valeurs""Barres\0") - -#define LEN_GPSFORMAT "\004" -#define TR_GPSFORMAT "DMS\0NMEA" - -#define LEN2_VTEMPLATES 15 -#define LEN_VTEMPLATES "\017" -#define TR_VTEMPLATES "Suppr Mixages\0 ""4 Voies simple\0""Coupure Gaz\0 ""Empennage V\0 ""Elevon\\Delta\0 ""eCCPM\0 ""Conf. H\200lico\0 ""Test Servo\0 " - -#define LEN_VSWASHTYPE "\004" -#define TR_VSWASHTYPE "--- ""120 ""120X""140 ""90\0" - -#define LEN_VKEYS "\005" -#define TR_VKEYS TR(" Menu"" Exit"" Bas"" Haut""Droit""Gauch", " Menu"" Exit""Enter"" Page"" Plus""Minus") - -#define LEN_VRENCODERS "\003" -#define TR_VRENCODERS "REa""REb" - -#define LEN_VSWITCHES "\003" -#define LEN_VSRCRAW "\004" - -#if defined(PCBTARANIS) - #define TR_POTS_VSRCRAW "S1\0 ""S2\0 ""LS\0 ""RS\0 " - #define TR_SW_VSRCRAW "SA\0 ""SB\0 ""SC\0 ""SD\0 ""SE\0 ""SF\0 ""SG\0 ""SH\0 " -#elif defined(EXTRA_3POS) - #define TR_POTS_VSRCRAW "P1\0 ""P2\0 " - #define TR_SW_VSRCRAW "3P1\0""3P2\0" - #define TR_9X_3POS_SWITCHES "ID0""ID1""ID2""ID3""ID4""ID5" -#else - #define TR_POTS_VSRCRAW "P1\0 ""P2\0 ""P3\0 " - #define TR_SW_VSRCRAW "3POS" - #define TR_9X_3POS_SWITCHES "ID0""ID1""ID2" -#endif - -#if defined(CPUARM) - #define TR_CUSTOMSW "IP1""IP2""IP3""IP4""IP5""IP6""IP7""IP8""IP9""IPA""IPB""IPC""IPD""IPE""IPF""IPG""IPH""IPI""IPJ""IPK""IPL""IPM""IPN""IPO""IPP""IPQ""IPR""IPS""IPT""IPU""IPV""IPW" -#elif defined(PCBGRUVIN9X) || defined(CPUM2561) || defined(CPUM128) - #define TR_CUSTOMSW "IP1""IP2""IP3""IP4""IP5""IP6""IP7""IP8""IP9""IPA""IPB""IPC""IPD""IPE""IPF" -#else - #define TR_CUSTOMSW "IP1""IP2""IP3""IP4""IP5""IP6""IP7""IP8""IP9""IPA""IPB""IPC" -#endif - -#if defined(PCBTARANIS) - #define TR_VSWITCHES "SA\300""SA-""SA\301""SB\300""SB-""SB\301""SC\300""SC-""SC\301""SD\300""SD-""SD\301""SE\300""SE-""SE\301""SF\300""SF\301""SG\300""SG-""SG\301""SH\300""SH\301" TR_CUSTOMSW "1*\0" -#else - #define TR_VSWITCHES TR_9X_3POS_SWITCHES "THR""RUD""ELE""AIL""GEA""TRN" TR_CUSTOMSW "1*\0" -#endif - -#if defined(PCBSKY9X) - #define TR_ROTARY_ENCODERS_VSRCRAW "REnc" -#elif defined(PCBGRUVIN9X) && ROTARY_ENCODERS > 2 - #define TR_ROTARY_ENCODERS_VSRCRAW "REa ""REb ""REc ""REd " -#elif defined(PCBGRUVIN9X) && ROTARY_ENCODERS <= 2 - #define TR_ROTARY_ENCODERS_VSRCRAW "REa ""REb " -#else - #define TR_ROTARY_ENCODERS_VSRCRAW -#endif - -#if defined(HELI) -#define TR_CYC_VSRCRAW "CYC1""CYC2""CYC3" -#else -#define TR_CYC_VSRCRAW "[C1]""[C2]""[C3]" -#endif - -#define TR_VSRCRAW "---\0""Dir\0""Prf\0""Gaz\0""Ail\0" TR_POTS_VSRCRAW TR_ROTARY_ENCODERS_VSRCRAW "MAX\0" TR_CYC_VSRCRAW "TrmD" "TrmP" "TrmG" "TrmA" TR_SW_VSRCRAW - -#define LEN_VTMRMODES "\003" -#define TR_VTMRMODES "OFF""ABS""GZs""GZ%""GZt" - -#define LEN_VTRAINERMODES "\006" -#define TR_VTRAINERMODES "Ma\203tre""El\201ve\0" - -#define LEN_VFAILSAFE "\011" -#define TR_VFAILSAFE "Maintien\0""Pr\200d\200fini""Pas d'imp" - -#if defined(MAVLINK) - #define LEN_MAVLINK_BAUDS "\006" - #define TR_MAVLINK_BAUDS "4800 ""9600 ""14400 ""19200 ""38400 ""57600 ""76800 ""115200" - #define LEN_MAVLINK_AC_MODES "\011" - #define TR_MAVLINK_AC_MODES "Stabilize""Acro ""Alt Hold ""Auto ""Guided ""Loiter ""RTL ""Circle ""Pos Hold ""Land ""OF Loiter""Toy A ""Toy M ""INVALID " - #define LEN_MAVLINK_AP_MODES "\015" - #define TR_MAVLINK_AP_MODES "Manual ""Circle ""Stabilize ""Training ""Fly by Wire A""Fly by Wire A""Auto ""RTL ""Loiter ""Guided ""Initialising ""INVALID " -#endif - -// ZERO TERMINATED STRINGS -#define INDENT "\001" -#define LEN_INDENT 1 -#define INDENT_WIDTH (FW/2) - -#if defined(PCBTARANIS) - #define TR_ENTER "[ENTER]" -#else - #define TR_ENTER "[MENU]" -#endif - -#define TR_POPUPS TR_ENTER"\010[EXIT]" -#define OFS_EXIT sizeof(TR_ENTER) - -#define TR_MENUWHENDONE CENTER"\006"TR_ENTER" QUAND PRET" -#define TR_FREE "disp" -#define TR_DELETEMODEL "SUPPRIMER MODELE" -#define TR_COPYINGMODEL "Copie..." -#define TR_MOVINGMODEL "D\200placement..." -#define TR_LOADINGMODEL "Chargement..." -#define TR_NAME "Nom" -#define TR_MODELNAME TR("Nom mod\201le","Nom du mod\201le") -#define TR_PHASENAME "Nom phase" -#define TR_MIXNAME TR("Nom mix.","Nom du mixeur") -#define TR_EXPONAME "Nom expo" -#define TR_BITMAP "Image du mod\201le" -#define TR_TIMER "Chrono " -#define TR_ELIMITS TR("Limites \200t","Limites \200tendues") -#define TR_ETRIMS TR("Trims \200t.","Trims \200tendus") -#define TR_TRIMINC TR("Pas Trim","Pas des trims") -#define TR_TTRACE "Source gaz" -#define TR_TTRIM "Trim gaz" -#define TR_BEEPCTR TR("Bips centr","Bips centrage") -#define TR_PROTO TR(INDENT"Proto.",INDENT"Protocole") -#define TR_PPMFRAME INDENT"Trame PPM" -#define TR_MS "ms" -#define TR_SWITCH TR("Inter","Interrupteur") -#define TR_TRIMS "Trims" -#define TR_FADEIN "Fondu ON" -#define TR_FADEOUT "Fondu OFF" -#define TR_DEFAULT "(d\200faut)" -#define TR_CHECKTRIMS "\006V\200rif\012Trims" -#define OFS_CHECKTRIMS (9*FW) -#define TR_SWASHTYPE TR("Type de Plat.","Type de plateau") -#define TR_COLLECTIVE TR("Collectif","Voie du pas collectif") -#define TR_SWASHRING TR("Limite Cycl.","Limite du cyclique") -#define TR_ELEDIRECTION TR("Inv. longitud.","Inversion longitudinal") -#define TR_AILDIRECTION TR("Inv. lat\200ral","Inversion lat\200ral") -#define TR_COLDIRECTION TR("Inv. collectif","Inversion collectif") -#define TR_MODE INDENT"Mode" -#define TR_NOFREEEXPO "Max expos atteint!" -#define TR_NOFREEMIXER "Max mixages atteint!" -#define TR_INSERTMIX "INSERER MIXAGE" -#define TR_EDITMIX "EDITER MIXAGE" -#define TR_SOURCE INDENT"Source" -#define TR_WEIGHT "Ratio" -#define TR_EXPO TR("Expo","Exponentiel") -#define TR_SIDE "Cot\200" -#define TR_DIFFERENTIAL "Diff\200rentiel" -#define TR_OFFSET INDENT"D\200calage" -#define TR_TRIM "Trim" -#define TR_DREX "DRex" -#define TR_CURVE "Courbe" -#define TR_FLMODE TR("Phase","Phases") -#define TR_MIXWARNING "Alerte" -#define TR_OFF "OFF" -#define TR_MULTPX "Op\200ration" -#define TR_DELAYDOWN "Retard bas" -#define TR_DELAYUP "Retard haut" -#define TR_SLOWDOWN "Ralenti bas" -#define TR_SLOWUP "Ralenti haut" -#define TR_MIXER "MIXEUR" -#define TR_CV "CB" -#define TR_GV "VG" -#define TR_ACHANNEL "A" -#define TR_RANGE INDENT"Plage" -#define TR_BAR "Barre" -#define TR_ALARM INDENT"Alarme" -#define TR_USRDATA "Donn\200es" -#define TR_BLADES INDENT"Pales" -#define TR_SCREEN "Ecran " -#define TR_SOUND_LABEL "Son" -#define TR_LENGTH INDENT"Dur\200e" -#define TR_SPKRPITCH INDENT"Tonalit\200" -#define TR_HAPTIC_LABEL "Vibreur" -#define TR_HAPTICSTRENGTH INDENT"Force" -#define TR_CONTRAST "Contraste" -#define TR_ALARMS_LABEL "Alarmes" -#define TR_BATTERY_RANGE "Plage batterie" -#define TR_BATTERYWARNING TR(INDENT"Batterie",INDENT"Batterie faible") -#define TR_INACTIVITYALARM INDENT"Inactivit\200" -#define TR_MEMORYWARNING INDENT"M\200moire pleine" -#define TR_ALARMWARNING TR(INDENT"Silence",INDENT"Sons d\200sactiv\200s") -#define TR_RENAVIG "Navig EncRot" -#define TR_THROTTLEREVERSE TR("Inv. gaz","Inversion gaz") -#define TR_MINUTEBEEP TR(INDENT"Bip min.",INDENT"Annonces minutes") -#define TR_BEEPCOUNTDOWN TR(INDENT"Bip fin",INDENT"Compte \202 rebours") -#define TR_PERSISTENT TR(INDENT"Persist.",INDENT"Persistant") -#define TR_BACKLIGHT_LABEL "R\200tro\200clairage" -#define TR_BLDELAY INDENT"Dur\200e" -#define TR_BLONBRIGHTNESS INDENT"Luminosit\200 ON" -#define TR_BLOFFBRIGHTNESS INDENT"Luminosit\200 OFF" -#define TR_SPLASHSCREEN "Logo d'accueil" -#define TR_THROTTLEWARNING "Alerte gaz" -#define TR_SWITCHWARNING TR("Alerte int","Alerte interrupt.") -#define TR_TIMEZONE "Fuseau horaire" -#define TR_RXCHANNELORD TR("Ordre voies RX","Ordre des voies pr\200f\200r\200") -#define TR_SLAVE "El\201ve" -#define TR_MODESRC "Mode\006% Source" -#define TR_MULTIPLIER "Multiplieur" -#define TR_CAL "Cal" -#define TR_VTRIM "Trim- +" -#define TR_BG "BG:" -#define TR_MENUTOSTART CENTER"\006" TR_ENTER " POUR DEBUT" -#define TR_SETMIDPOINT CENTER"\010REGLER NEUTRES" -#define TR_MOVESTICKSPOTS CENTER"\004BOUGER STICKS/POTS" -#define TR_RXBATT "Batt.RX" -#define TR_TXnRX "Tx:\0Rx:" -#define OFS_RX 4 -#define TR_ACCEL "Acc:" -#define TR_NODATA "NO DATA" -#define TR_TM1TM2 "TM1\032TM2" -#define TR_THRTHP "THR\032TH%" -#define TR_TOT "TOT" -#define TR_TMR1LATMAXUS "Tmr1Lat max\006us" -#define STR_US (STR_TMR1LATMAXUS+12) -#define TR_TMR1LATMINUS "Tmr1Lat min\006us" -#define TR_TMR1JITTERUS "Tmr1 Jitter\006us" - -#if defined(CPUARM) - #define TR_TMIXMAXMS "Tmix max\012ms" -#else - #define TR_TMIXMAXMS "Tmix max\014ms" -#endif - -#define TR_T10MSUS "T10ms\016us" -#define TR_FREESTACKMINB "Free Stack\010b" -#define TR_MENUTORESET CENTER TR_ENTER" pour reset" -#define TR_PPM "PPM" -#define TR_CH "CH" -#define TR_MODEL "MODELE" -#define TR_FP "PV" -#define TR_MIX "MIX" -#define TR_EEPROMLOWMEM "EEPROM pleine!" -#define TR_ALERT "\014ALERTE" -#define TR_PRESSANYKEYTOSKIP "Touche pour ignorer" -#define TR_THROTTLENOTIDLE "Gaz pas \202 z\200ro" -#define TR_ALARMSDISABLED "Alarmes D\200sactiv\200es" -#define TR_PRESSANYKEY TR("Touche pour continuer","Touche pour continuer") -#define TR_BADEEPROMDATA "EEPROM corrompue" -#define TR_EEPROMFORMATTING "Formatage EEPROM" -#define TR_EEPROMOVERFLOW "D\200passement EEPROM" -#define TR_MENURADIOSETUP "CONFIG RADIO" -#define TR_MENUDATEANDTIME "DATE ET HEURE" -#define TR_MENUTRAINER "ECOLAGE" -#define TR_MENUVERSION "VERSION" -#define TR_MENUDIAG TR("INTERS","TEST INTERRUPTEURS") -#define TR_MENUANA TR("ANAS","ENTREES ANALOGIQUES") -#define TR_MENUCALIBRATION "CALIBRATION" -#define TR_TRIMS2OFFSETS "\006Trims => Offsets" -#define TR_MENUMODELSEL "MODELES" -#define TR_MENUSETUP TR("CONF. MODELE","CONFIGURATION") -#define TR_MENUFLIGHTPHASE "PHASE DE VOL" -#define TR_MENUFLIGHTPHASES "PHASES DE VOL" -#define TR_MENUHELISETUP TR("CONF.HELI","CONFIGURATION HELICO") - -#if defined(PPM_CENTER_ADJUSTABLE) || defined(PPM_LIMITS_SYMETRICAL) // The right menu titles for the gurus ... - #define TR_MENUINPUTS "MANCHES" - #define TR_MENULIMITS "SORTIES" -#else - #define TR_MENUINPUTS "DR/EXPO" - #define TR_MENULIMITS "LIMITES" -#endif - -#define TR_MENUCURVES "COURBES" -#define TR_MENUCURVE "COURBE" -#define TR_MENUCUSTOMSWITCH "INTER PERS." -#define TR_MENUCUSTOMSWITCHES "INTERS PERS." -#define TR_MENUCUSTOMFUNC TR("FONCTIONS SPEC.","FONCTIONS SPECIALES") -#define TR_MENUTELEMETRY "TELEMESURE" -#define TR_MENUTEMPLATES "GABARITS" -#define TR_MENUSTAT TR("STATS","STATISTIQUES") -#define TR_MENUDEBUG "DEBUG" -#define TR_RXNUM TR(INDENT"NumRx",INDENT"No. r\200cepteur") -#define TR_SYNCMENU "Sync [MENU]" -#define TR_LIMIT INDENT"Limite" -#define TR_MINRSSI "RSSI Min." -#define TR_LATITUDE "Latitude" -#define TR_LONGITUDE "Longitude" -#define TR_GPSCOORD TR("Coordonn\200es","Coordonn\200es GPS") -#define TR_VARIO TR("Vario","Variom\201tre") -#define TR_SHUTDOWN "ARRET EN COURS" -#define TR_BATT_CALIB "Calib. Batterie" -#define TR_CURRENT_CALIB "Calib. Courant" -#define TR_VOLTAGE INDENT"Tension" -#define TR_CURRENT INDENT"Courant" -#define TR_SELECT_MODEL "S\200lect. Mod\201le" -#define TR_CREATE_MODEL "Cr\200er Mod\201le" -#define TR_COPY_MODEL "Copier Mod\201le" -#define TR_MOVE_MODEL "D\200placer Mod\201le" -#define TR_BACKUP_MODEL "Archiver Mod\201le" -#define TR_DELETE_MODEL "Supprimer Mod\201le" -#define TR_RESTORE_MODEL "Restaurer Mod\201le" -#define TR_SDCARD_ERROR "Erreur carte SD" -#define TR_NO_SDCARD "Pas de carte SD" -#define TR_INCOMPATIBLE "Incompatible" -#define TR_WARNING "ALERTE" -#define TR_EEPROMWARN "EEPROM" -#define TR_THROTTLEWARN "GAZ" -#define TR_ALARMSWARN "SON" -#define TR_SWITCHWARN "INTERS" -#define TR_INVERT_THR "Inverser Gaz?" -#define TR_SPEAKER_VOLUME INDENT "Volume" -#define TR_LCD "Afficheur" -#define TR_BRIGHTNESS INDENT "Luminosit\200" -#define TR_CPU_TEMP "Temp. CPU\016>" -#define TR_CPU_CURRENT "Courant\022>" -#define TR_CPU_MAH "Consomm." -#define TR_COPROC "CoProc." -#define TR_COPROC_TEMP "Temp. MB \016>" -#define TR_CAPAWARNING INDENT "Capacit\200 Basse" -#define TR_TEMPWARNING INDENT "Surchauffe" -#define TR_FUNC TR("Fonc", "Fonction") -#define TR_V1 "V1" -#define TR_V2 "V2" -#define TR_DURATION "Dur\200e" -#define TR_DELAY "D\200lai" -#define TR_SD_CARD "Carte SD" -#define TR_SDHC_CARD "Carte SD-HC" -#define TR_NO_SOUNDS_ON_SD "Aucun son sur SD" -#define TR_NO_MODELS_ON_SD "Aucun mod\201le SD" -#define TR_NO_BITMAPS_ON_SD "Aucun Bitmap SD" -#define TR_PLAY_FILE "Lire" -#define TR_DELETE_FILE "Supprimer" -#define TR_COPY_FILE "Copier" -#define TR_RENAME_FILE "Renommer" -#define TR_ASSIGN_BITMAP "S\200lectionner image" -#define TR_REMOVED " supprim\200" -#define TR_SD_INFO "Information" -#define TR_SD_FORMAT "Formater" -#define TR_NA "N/D" -#define TR_HARDWARE "MATERIEL" -#define TR_FORMATTING "Formatage..." -#define TR_TEMP_CALIB "Calib. temp" -#define TR_TIME "Heure" -#define TR_BAUDRATE "Baudrate BT" -#define TR_SD_INFO_TITLE "INFO SD" -#define TR_SD_TYPE "Type:" -#define TR_SD_SPEED "Vitesse:" -#define TR_SD_SECTORS "Secteurs:" -#define TR_SD_SIZE "Taille:" -#define TR_TYPE "Type" -#define TR_GLOBAL_VARS "Variables Globales" -#define TR_GLOBAL_VAR "Variable globale" -#define TR_MENUGLOBALVARS "VARIABLES GLOBALES" -#define TR_OWN "Pers" -#define TR_DATE "Date" -#define TR_ROTARY_ENCODER "Enc.Rot." -#define TR_CHANNELS_MONITOR "MONITEUR CANAUX" -#define TR_INTERNALRF "HF interne" -#define TR_EXTERNALRF "HF externe" -#define TR_FAILSAFE INDENT"Type failsafe" -#define TR_FAILSAFESET "REGLAGES FAILSAFE" -#define TR_COUNTRYCODE "Zone g\200o." -#define TR_VOICELANG TR("Langue voix","Langue annonces vocales") -#define TR_UNITSSYSTEM "Unit\200s" -#define TR_EDIT "Editer" -#define TR_INSERT_BEFORE "Ins\200rer avant" -#define TR_INSERT_AFTER "Ins\200rer apr\201s" -#define TR_COPY "Copier" -#define TR_MOVE "D\200placer" -#define TR_PASTE "Coller" -#define TR_DELETE "Effacer" -#define TR_INSERT "Ins\200rer" -#define TR_RESET_FLIGHT TR("R\200init. vol","R\200initialiser vol") -#define TR_RESET_TIMER1 TR("R\200init. Timer1","R\200initialiser Timer1") -#define TR_RESET_TIMER2 TR("R\200init. Timer2","R\200initialiser Timer2") -#define TR_RESET_TELEMETRY TR("R\200init. T\200l\200m.","R\200init. T\200l\200mesure") -#define TR_STATISTICS "Statistiques" -#define TR_ABOUT_US "A propos" -#define TR_AND_SWITCH "ET suppl." -#define TR_CF "FS" -#define TR_SPEAKER INDENT"Haut-p." -#define TR_BUZZER INDENT"Bipeur" -#define TR_BYTES "bytes" -#define TR_MODULE_BIND "[Bind]" -#define TR_MODULE_RANGE "[Port.]" -#define TR_RESET_BTN "[RAZ]" -#define TR_SET "[D\200f.]" -#define TR_TRAINER "Ecolage" -#define TR_ANTENNAPROBLEM CENTER "Antenne radio d\200fectueuse!" -#define TR_MODELIDUSED TR("ID d\200j\202 affect\200","No de mod\201le d\200j\202 utilis\200") -#define TR_MODULE INDENT "Type de module" -#define TR_CHANNELRANGE INDENT "Plage de canaux" -#define TR_LOWALARM INDENT "Alarme basse" -#define TR_CRITICALALARM INDENT "Alarme critique" -#define TR_PERSISTENT_MAH TR(INDENT "Enr. mAh",INDENT "Enregistrer mAh") -#define TR_FAS_OFFSET TR(INDENT "Corr FAS", INDENT "Correction FAS") - -#if defined(MAVLINK) - #define TR_MAVLINK_RC_RSSI_SCALE_LABEL "Max RSSI" - #define TR_MAVLINK_PC_RSSI_EN_LABEL "PC RSSI EN" - #define TR_MAVMENUSETUP_TITLE "Mavlink Setup" - #define TR_MAVLINK_BAUD_LABEL "Baudrate" - #define TR_MAVLINK_INFOS "INFOS" - #define TR_MAVLINK_MODE "MODE" - #define TR_MAVLINK_CUR_MODE "Current Mode" - #define TR_MAVLINK_ARMED "Armed" - #define TR_MAVLINK_BAT_MENU_TITLE "BAT RSSI" - #define TR_MAVLINK_BATTERY_LABEL "Flight Battery status" - #define TR_MAVLINK_RC_RSSI_LABEL "RC RSSI" - #define TR_MAVLINK_PC_RSSI_LABEL "PC RSSI" - #define TR_MAVLINK_NAV_MENU_TITLE "NAV" - #define TR_MAVLINK_COURSE "Course" - #define TR_MAVLINK_HEADING "Heading" - #define TR_MAVLINK_BEARING "Bearing" - #define TR_MAVLINK_ALTITUDE "Altitude" - #define TR_MAVLINK_GPS "GPS" - #define TR_MAVLINK_NO_FIX "NO Fix" - #define TR_MAVLINK_SAT "SAT" - #define TR_MAVLINK_HDOP "HDOP" - #define TR_MAVLINK_LAT "LAT" - #define TR_MAVLINK_LON "LON" -#endif - -// Taranis column headers -#define TR_PHASES_HEADERS { " Nom ", " Inter ", " Trims ", " Fondu ON ", " Fondu OFF " } -#define TR_LIMITS_HEADERS { " Nom ", " Subtrim ", " Min ", " Max ", " Direction ", " Curve ", " Neutre PPM ", " Mode subtrim " } -#define TR_CSW_HEADERS { " Fonction ", " V1 ", " V2 ", " ET suppl. ", " Dur\200e ", " D\200lai " } - -//Taranis About screen -#define TR_ABOUTUS TR(" A PROPOS ","A PROPOS") - -#define TR_ABOUT_OPENTX_1 TR("OpenTX\001est\001libre,\001non-","OpenTX est libre, non-") -#define TR_ABOUT_OPENTX_2 TR("commercial,\001et\001offert\001sans","commercial et n'offre aucune") -#define TR_ABOUT_OPENTX_3 TR("garantie.\001Il\001est\001d\200velopp\200","garantie. Il a \200t\200 d\200velopp\200") -#define TR_ABOUT_OPENTX_4 TR("gratuitement.\001Donations","gratuitement. Vos donations") -#define TR_ABOUT_OPENTX_5 TR("bienvenues!","sont bienvenues!") - -#define TR_ABOUT_BERTRAND_1 "Bertrand Songis" -#define TR_ABOUT_BERTRAND_2 TR("Auteur\001principal\001d'openTx","Auteur principal d'openTx") -#define TR_ABOUT_BERTRAND_3 TR("Cod\200veloppeur\001de\001C9X","Cod\200veloppeur de Companion9x") - -#define TR_ABOUT_MIKE_1 "Mike Blandford" -#define TR_ABOUT_MIKE_2 "Ma\203tre du code et des" -#define TR_ABOUT_MIKE_3 "drivers" -#define TR_ABOUT_MIKE_4 "" - -#define TR_ABOUT_ROMOLO_1 "Romolo Manfredini" -#define TR_ABOUT_ROMOLO_2 "D\200veloppeur principal de" -#define TR_ABOUT_ROMOLO_3 "Companion9x" - -#define TR_ABOUT_ANDRE_1 "Andr\200 Bernet" -#define TR_ABOUT_ANDRE_2 TR("Fonctions\200,\001usabilit\200,","Fonctionnalit\200s, usabilit\200,") -#define TR_ABOUT_ANDRE_3 TR("d\200bogage,\001documentation","d\200bogage, documentation") - -#define TR_ABOUT_ROB_1 "Rob Thomson" -#define TR_ABOUT_ROB_2 "Webmaster d'openrcforums" - -#define TR_ABOUT_MARTIN_1 "Martin Hotar" -#define TR_ABOUT_MARTIN_2 "Design graphique" - -#if defined(PCBTARANIS) - #define TR_ABOUT_HARDWARE_1 "FrSky" - #define TR_ABOUT_HARDWARE_2 "D\200veloppeur/fabricant" - #define TR_ABOUT_HARDWARE_3 "du mat\200riel" -#else - #define TR_ABOUT_HARDWARE_1 "Brent Nelson" - #define TR_ABOUT_HARDWARE_2 "D\200veloppeur/fabricant" - #define TR_ABOUT_HARDWARE_3 "de la carte Sky9x" -#endif - -#define TR_ABOUT_PARENTS_1 "Projets parents" -#define TR_ABOUT_PARENTS_2 "ersky9x (Mike Blandford)" -#define TR_ABOUT_PARENTS_3 "ER9X (Erez Raviv)" -#define TR_ABOUT_PARENTS_4 "TH9X (Thomas Husterer)" - -#define TR_CHR_SHORT 's' -#define TR_CHR_LONG 'l' -#define TR_CHR_TOGGLE 't' -#define TR_CHR_HOUR 'h' - -#define TR_BEEP_VOLUME "Beep Volume" -#define TR_WAV_VOLUME "Wav Volume" -#define TR_VARIO_VOLUME "Vario Volume" -#define TR_BG_VOLUME "Bg Volume" diff --git a/radio/src/translations/it.h b/radio/src/translations/it.h deleted file mode 100644 index 70718da14..000000000 --- a/radio/src/translations/it.h +++ /dev/null @@ -1,751 +0,0 @@ -/* - * Authors (alphabetical order) - * - Bertrand Songis - * - Bernet Andre - * - Kjell Kernen - * - Martin Hotar - * - Romolo Manfredini - * - * opentx is based on code named - * gruvin9x by Bryan J. Rentoul: http://code.google.com/p/gruvin9x/, - * er9x by Erez Raviv: http://code.google.com/p/er9x/, - * and the original (and ongoing) project by - * Thomas Husterer, th9x: http://code.google.com/p/th9x/ - * - * This program 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. - * - * This program 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. See the - * GNU General Public License for more details. - * - * - * - * !!!!! DO NOT EDIT it.h - EDIT it.h.txt INSTEAD !!!!!!! - * - * In order to make translations easier it.h.txt is parsed and national - * characters are replaced by bitmap codes. The result is it.h. - * - * See translate.py in the util catalog for the list of character codes - * - * !!!!! DO NOT EDIT it.h - EDIT it.h.txt INSTEAD !!!!!!! - */ - - -// NON ZERO TERMINATED STRINGS -#define LEN_OFFON "\003" -#define TR_OFFON "OFF""ON\0" - -#define LEN_MMMINV "\003" -#define TR_MMMINV "---""INV" - -#define LEN_NCHANNELS "\004" -#define TR_NCHANNELS "\0014CH\0016CH\0018CH10CH12CH14CH16CH" - -#define LEN_VBEEPMODE TR("\005", "\010") -#define TR_VBEEPMODE TR("Silen""Avvis""Notst""Tutti","Silenti ""Avvisi\0 ""No Tasti""Tutti\0 ") - -#define LEN_VBEEPLEN "\005" -#define TR_VBEEPLEN "+Cort""Corta""Media""Lunga""+Lung" - -#define LEN_VRENAVIG "\003" -#define TR_VRENAVIG "No REaREb" - -#define LEN_VBLMODE TR("\005", "\006") -#define TR_VBLMODE TR("OFF\0 ""Tasti""Stks\0""Tutti""ON\0 ", "Spenta""Tasti\0""Sticks""Tutti\0""Accesa") - -#define LEN_TRNMODE "\003" -#define TR_TRNMODE "off"" +="" :=" - -#define LEN_TRNCHN "\003" -#define TR_TRNCHN "ch1ch2ch3ch4" - -#define LEN_DATETIME "\005" -#define TR_DATETIME "DATA:""ORA :" - -#define LEN_VLCD "\006" -#define TR_VLCD "NormalOptrex" - -#define LEN_COUNTRYCODES TR("\002", "\007") -#define TR_COUNTRYCODES TR("US""JP""EU", "America""Japan\0 ""Europe\0") - -#define LEN_VTRIMINC "\006" -#define TR_VTRIMINC "Exp ""ExFine""Fine ""Medio ""Ampio " - -#define LEN_VBEEPCOUNTDOWN "\006" -#define TR_VBEEPCOUNTDOWN "NienteSuoni\0Voce\0 " - -#define LEN_RETA123 "\001" - -#if defined(PCBGRUVIN9X) - #if ROTARY_ENCODERS > 2 - #define TR_RETA123 "RETA123abcd" - #else - #define TR_RETA123 "RETA123ab" - #endif -#elif defined(PCBTARANIS) - #define TR_RETA123 "RETA12LR" -#else - #define TR_RETA123 "RETA123" -#endif - -#define LEN_VPROTOS "\006" - -#if defined(PXX) - #define TR_PXX "PXX\0 " -#elif defined(DSM2) || defined(IRPROTOS) - #define TR_PXX "[PXX]\0" -#else - #define TR_PXX -#endif - -#if defined(DSM2) - #define TR_DSM2 "LP45\0 ""DSM2\0 ""DSMX\0 " -#elif defined(IRPROTOS) - #define TR_DSM2 "[LP45]""[DSM2]""[DSMX]" -#else - #define TR_DSM2 -#endif - -#if defined(IRPROTOS) - #define TR_IRPROTOS "SILV TRAC09PICZ SWIFT\0" -#else - #define TR_IRPROTOS -#endif - -#if defined(CPUARM) - #define TR_XPPM -#else - #define TR_XPPM "PPM16\0""PPMsim" -#endif - -#define TR_VPROTOS "PPM\0 " TR_XPPM TR_PXX TR_DSM2 TR_IRPROTOS - -#define LEN_POSNEG "\003" -#define TR_POSNEG "POS""NEG" - -#define LEN_VCURVEFUNC "\003" -#define TR_VCURVEFUNC "---""x>0""x<0""|x|""f>0""f<0""|f|" - -#define LEN_VMLTPX "\005" -#define TR_VMLTPX "Add. ""Molt.""Sost." - -#define LEN_VMLTPX2 "\002" -#define TR_VMLTPX2 "+=""*="":=" - -#define LEN_VMIXTRIMS "\003" -#define TR_VMIXTRIMS "OFF""ON ""Rud""Ele""Thr""Ail" - -#define LEN_VCSWFUNC "\005" -#define TR_VCSWFUNC "---\0 ""a{x\0 ""a>x\0 ""ax""|a|b\0 ""a" - -#define LEN_VTELPROTO "\007" -#define TR_VTELPROTO "---\0 ""Hub\0 ""WSHHigh""Halcyon" - -#define LEN_VOLTSRC "\003" -#define TR_VOLTSRC "---""A1\0""A2\0""FAS""Cel" - -#define LEN_VARIOSRC "\005" -#if defined(FRSKY_SPORT) - #define TR_VARIOSRC "Vario""A1\0 ""A2\0" -#else - #define TR_VARIOSRC "Alti\0""Alti+""Vario""A1\0 ""A2\0" -#endif - -#define LEN_VSCREEN "\004" -#define TR_VSCREEN "Nums""Bars" - -#define LEN_GPSFORMAT "\004" -#define TR_GPSFORMAT "HMS NMEA" - -#define LEN2_VTEMPLATES 13 -#define LEN_VTEMPLATES "\015" -#define TR_VTEMPLATES "Clear Mixes\0\0""Simple 4-CH \0""Sticky-T-Cut\0""V-Tail \0""Elevon\\Delta\0""eCCPM \0""Heli Setup \0""Servo Test \0" - -#define LEN_VSWASHTYPE "\004" -#define TR_VSWASHTYPE "--- ""120 ""120X""140 ""90\0" - -#define LEN_VKEYS "\005" -#define TR_VKEYS TR(" Men\201"" EXIT"" DN "" UP"" SX"" DX", " Menu"" Exit""Enter"" Page"" Plus""Minus") - -#define LEN_VRENCODERS "\003" -#define TR_VRENCODERS "REa""REb" - -#define LEN_VSWITCHES "\003" -#define LEN_VSRCRAW "\004" - -#if defined(PCBTARANIS) - #define TR_POTS_VSRCRAW "S1\0 ""S2\0 ""LS\0 ""RS\0 " - #define TR_SW_VSRCRAW "SA\0 ""SB\0 ""SC\0 ""SD\0 ""SE\0 ""SF\0 ""SG\0 ""SH\0 " -#elif defined(EXTRA_3POS) - #define TR_POTS_VSRCRAW "P1\0 ""P2\0 " - #define TR_SW_VSRCRAW "3P1\0""3P2\0" - #define TR_9X_3POS_SWITCHES "ID0""ID1""ID2""ID3""ID4""ID5" -#else - #define TR_POTS_VSRCRAW "P1\0 ""P2\0 ""P3\0 " - #define TR_SW_VSRCRAW "3POS" - #define TR_9X_3POS_SWITCHES "ID0""ID1""ID2" -#endif - -#if defined(CPUARM) - #define TR_CUSTOMSW "SW1""SW2""SW3""SW4""SW5""SW6""SW7""SW8""SW9""SWA""SWB""SWC""SWD""SWE""SWF""SWG""SWH""SWI""SWJ""SWK""SWL""SWM""SWN""SWO""SWP""SWQ""SWR""SWS""SWT""SWU""SWV""SWW" -#elif defined(PCBGRUVIN9X) || defined(CPUM2561) || defined(CPUM128) - #define TR_CUSTOMSW "SW1""SW2""SW3""SW4""SW5""SW6""SW7""SW8""SW9""SWA""SWB""SWC""SWD""SWE""SWF" -#else - #define TR_CUSTOMSW "SW1""SW2""SW3""SW4""SW5""SW6""SW7""SW8""SW9""SWA""SWB""SWC" -#endif - -#if defined(PCBTARANIS) - #define TR_VSWITCHES "SA\300""SA-""SA\301""SB\300""SB-""SB\301""SC\300""SC-""SC\301""SD\300""SD-""SD\301""SE\300""SE-""SE\301""SF\300""SF\301""SG\300""SG-""SG\301""SH\300""SH\301" TR_CUSTOMSW "One" -#else - #define TR_VSWITCHES TR_9X_3POS_SWITCHES "THR""RUD""ELE""AIL""GEA""TRN" TR_CUSTOMSW "One" -#endif - -#if defined(PCBSKY9X) -#define TR_ROTARY_ENCODERS_VSRCRAW "REa " -#elif defined(PCBGRUVIN9X) && ROTARY_ENCODERS > 2 -#define TR_ROTARY_ENCODERS_VSRCRAW "REa ""REb ""REc ""REd " -#elif defined(PCBGRUVIN9X) && ROTARY_ENCODERS <= 2 -#define TR_ROTARY_ENCODERS_VSRCRAW "REa ""REb " -#else -#define TR_ROTARY_ENCODERS_VSRCRAW -#endif - -#if defined(HELI) -#define TR_CYC_VSRCRAW "CYC1""CYC2""CYC3" -#else -#define TR_CYC_VSRCRAW "[C1]""[C2]""[C3]" -#endif - -#define TR_VSRCRAW "---\0""Rud\0""Ele\0""Thr\0""Ail\0" TR_POTS_VSRCRAW TR_ROTARY_ENCODERS_VSRCRAW "MAX\0" TR_CYC_VSRCRAW "TrmR" "TrmE" "TrmT" "TrmA" TR_SW_VSRCRAW - -#define LEN_VTMRMODES "\003" -#define TR_VTMRMODES "OFF""ABS""THs""TH%""THt" - -#define LEN_VTRAINERMODES "\007" -#define TR_VTRAINERMODES "Maestro""Allievo" - -#define LEN_VFAILSAFE "\012" -#define TR_VFAILSAFE "Mantieni\0 ""Personali\0""No impulsi" - -#if defined(MAVLINK) - #define LEN_MAVLINK_BAUDS "\006" - #define TR_MAVLINK_BAUDS "4800 ""9600 ""14400 ""19200 ""38400 ""57600 ""76800 ""115200" - #define LEN_MAVLINK_AC_MODES "\011" - #define TR_MAVLINK_AC_MODES "Stabilize""Acro ""Alt Hold ""Auto ""Guided ""Loiter ""RTL ""Circle ""Pos Hold ""Land ""OF Loiter""Toy A ""Toy M ""INVALID " - #define LEN_MAVLINK_AP_MODES "\015" - #define TR_MAVLINK_AP_MODES "Manual ""Circle ""Stabilize ""Training ""Fly by Wire A""Fly by Wire A""Auto ""RTL ""Loiter ""Guided ""Initialising ""INVALID " -#endif - -// ZERO TERMINATED STRINGS -#define INDENT "\001" -#define LEN_INDENT 1 -#define INDENT_WIDTH (FW/2) - -#if defined(PCBTARANIS) - #define TR_ENTER "[ENTER]" -#else - #define TR_ENTER "[Men\201]" -#endif - -#define TR_POPUPS TR_ENTER"\004[EXIT]" -#define OFS_EXIT sizeof(TR_ENTER) - -#define TR_MENUWHENDONE CENTER"\006"TR_ENTER" Conferma" -#define TR_FREE " Disp." -#define TR_DELETEMODEL "Elimina modello?" -#define TR_COPYINGMODEL "Copia in corso.." -#define TR_MOVINGMODEL "Spostamento..." -#define TR_LOADINGMODEL "Caricamento..." -#define TR_NAME "Nome" -#define TR_MODELNAME "Nome modello" -#define TR_PHASENAME "Nome fase" -#define TR_MIXNAME "Nome mix" -#define TR_EXPONAME "Nome expo" -#define TR_BITMAP "Immagine" -#define TR_TIMER TR("Timer","Timer ") -#define TR_ELIMITS TR("Limiti.E","Limiti Estesi") -#define TR_ETRIMS TR("Trim Ext","Trim Estesi") -#define TR_TRIMINC "Trim Step" -#define TR_TTRACE TR("T-Source","Throttle Source") -#define TR_TTRIM TR("T-Trim","Throttle Trim") -#define TR_BEEPCTR TR("Ctr Beep","Center Beep") -#define TR_PROTO TR(INDENT "Proto", INDENT "Protocollo") -#define TR_PPMFRAME TR("PPM frame", INDENT "PPM frame") -#define TR_MS "ms" -#define TR_SWITCH "Switch" -#define TR_TRIMS "Trims" -#define TR_FADEIN "Diss.In" -#define TR_FADEOUT "Diss.Out" -#define TR_DEFAULT "(default)" -#define TR_CHECKTRIMS "\003Contr.\004Trim" -#define OFS_CHECKTRIMS (9*FW) -#define TR_SWASHTYPE "Tipo Ciclico" -#define TR_COLLECTIVE TR("Collettivo","Origine Collettivo") -#define TR_SWASHRING "Anello Ciclico" -#define TR_ELEDIRECTION TR("Direzione ELE","Direzione Long. cyc.") -#define TR_AILDIRECTION TR("Direzione AIL","Direzione Lateral cyc.") -#define TR_COLDIRECTION TR("Direzione PIT","Direzione Coll. Passo") -#define TR_MODE INDENT"Modo" -#define TR_NOFREEEXPO "Expo pieni!" -#define TR_NOFREEMIXER "Mixer pieni!" -#define TR_INSERTMIX "INSER. MIX" -#define TR_EDITMIX "MOD. MIX" -#define TR_SOURCE INDENT"Sorg." -#define TR_WEIGHT "Peso" -#define TR_EXPO "Espo" -#define TR_SIDE "Lato" -#define TR_DIFFERENTIAL "Differ" -#define TR_OFFSET INDENT"Offset" -#define TR_TRIM "Trim" -#define TR_DREX "DRex" -#define TR_CURVE "Curva" -#define TR_FLMODE "Fase" -#define TR_MIXWARNING "Avviso" -#define TR_OFF "OFF" -#define TR_MULTPX "MultPx" -#define TR_DELAYDOWN "Post.Gi\201 " -#define TR_DELAYUP "Post.S\201" -#define TR_SLOWDOWN "Rall.Gi\201 " -#define TR_SLOWUP "Rall.S\201" -#define TR_MIXER "MIXER" -#define TR_CV "CV" -#define TR_GV "GV" -#define TR_ACHANNEL "A\002ingresso" -#define TR_RANGE INDENT"Interv." -#define TR_BAR "Barra" -#define TR_ALARM INDENT"Allarme" -#define TR_USRDATA "Dati" -#define TR_BLADES INDENT"Pale" -#define TR_SCREEN "Schermo " -#define TR_SOUND_LABEL "Suono" -#define TR_LENGTH INDENT"Durata" -#define TR_SPKRPITCH INDENT"Tono" -#define TR_HAPTIC_LABEL "Vibraz" -#define TR_HAPTICSTRENGTH INDENT"Forza" -#define TR_CONTRAST "Contrasto" -#define TR_ALARMS_LABEL "Allarmi" -#define TR_BATTERY_RANGE TR("Interv. Batt","Intervallo batteria") -#define TR_BATTERYWARNING INDENT"Avviso batteria" -#define TR_INACTIVITYALARM INDENT"Inattivita'" -#define TR_MEMORYWARNING INDENT"Avviso memoria" -#define TR_ALARMWARNING INDENT"Spento" -#define TR_RENAVIG "Navig RotEnc " -#define TR_THROTTLEREVERSE TR("Thr inv.", "Throttle Inverso") -#define TR_MINUTEBEEP INDENT"Minuto" -#define TR_BEEPCOUNTDOWN TR(INDENT"Conto rov",INDENT"Conto rovescia") -#define TR_PERSISTENT TR(INDENT"Persist.",INDENT"Persistente") -#define TR_BACKLIGHT_LABEL TR("Retroillum.","Retroilluminazione") -#define TR_BLDELAY INDENT"Durata" -#define TR_BLONBRIGHTNESS TR(INDENT"Lumin. ON",INDENT"Luminosit\200 ON") -#define TR_BLOFFBRIGHTNESS TR(INDENT"Lumin. OFF",INDENT"Luminosit\200 OFF") -#define TR_SPLASHSCREEN TR("Schermo avvio", "Schermata di avvio") -#define TR_THROTTLEWARNING TR("All. Thr", "Allarme Throttle") -#define TR_SWITCHWARNING TR("Avv. Int.", "Avviso Interr.") -#define TR_TIMEZONE "Ora locale" -#define TR_RXCHANNELORD "Ordine ch RX" -#define TR_SLAVE "Allievo" -#define TR_MODESRC "Modo\006% Origine" -#define TR_MULTIPLIER "Moltiplica" -#define TR_CAL "Cal" -#define TR_VTRIM "Trim- +" -#define TR_BG "BG:" -#define TR_MENUTOSTART CENTER"\006" TR_ENTER " per Cal." -#define TR_SETMIDPOINT CENTER"\011SETTA CENTRO" -#define TR_MOVESTICKSPOTS CENTER"\006MUOVI STICK/POT" -#define TR_RXBATT "Rx Batt:" -#define TR_TXnRX "Tx:\0Rx:" -#define OFS_RX 4 -#define TR_ACCEL "Acc:" -#define TR_NODATA CENTER"DATI ASSENTI" -#define TR_TM1TM2 "TM1\032TM2" -#define TR_THRTHP "THR\032TH%" -#define TR_TOT "TOT" -#define TR_TMR1LATMAXUS "Tmr1Lat max\006us" -#define STR_US (STR_TMR1LATMAXUS+12) -#define TR_TMR1LATMINUS "Tmr1Lat min\006us" -#define TR_TMR1JITTERUS "Tmr1 Jitter\006us" - -#if defined(CPUARM) - #define TR_TMIXMAXMS "Tmix max\012ms" -#else - #define TR_TMIXMAXMS "Tmix max\014ms" -#endif - -#define TR_T10MSUS "T10ms\007us" -#define TR_FREESTACKMINB "Free Stack\004b" -#define TR_MENUTORESET CENTER TR_ENTER" x Azzerare" -#define TR_PPM "PPM" -#define TR_CH "CH" -#define TR_MODEL "MODELLO" -#define TR_FP "FV" -#define TR_MIX "MIX" -#define TR_EEPROMLOWMEM "EEPROM quasi piena!" -#define TR_ALERT "\016ALERT" -#define TR_PRESSANYKEYTOSKIP "\010Premi un tasto" -#define TR_THROTTLENOTIDLE TR("Motore non in posiz.","Motore non in posizione") -#define TR_ALARMSDISABLED "Avvisi Disattivati!" -#define TR_PRESSANYKEY "\010Premi un tasto" -#define TR_BADEEPROMDATA "Dati corrotti!" -#define TR_EEPROMFORMATTING "Formatto EEPROM..." -#define TR_EEPROMOVERFLOW "EEPROM Piena" -#define TR_MENURADIOSETUP "CONFIGURATX" -#define TR_MENUDATEANDTIME "DATA E ORA" -#define TR_MENUTRAINER "MAESTRO/ALLIEVO" -#define TR_MENUVERSION "VERSIONE" -#define TR_MENUDIAG "DIAG" -#define TR_MENUANA "ANAS" -#define TR_MENUCALIBRATION "CALIBRAZIONE" -#define TR_TRIMS2OFFSETS "\006Trim => Offset " -#define TR_MENUMODELSEL "MODELLI" -#define TR_MENUSETUP "SETUP" -#define TR_MENUFLIGHTPHASE "FASE DI VOLO" -#define TR_MENUFLIGHTPHASES "FASI DI VOLO" -#define TR_MENUHELISETUP "SETUP ELI" - -#if defined(PPM_CENTER_ADJUSTABLE) || defined(PPM_LIMITS_SYMETRICAL) // The right menu titles for the gurus ... - #define TR_MENUINPUTS "STICK" - #define TR_MENULIMITS "USCITE" -#else - #define TR_MENUINPUTS "DR/ESPO" - #define TR_MENULIMITS "LIMITI" -#endif - -#define TR_MENUCURVES "CURVE" -#define TR_MENUCURVE "CURVA" -#define TR_MENUCUSTOMSWITCH "SWITCH PERSON." -#define TR_MENUCUSTOMSWITCHES TR("SWITCH PERSON.","SWITCH PERSONALIZZATI") -#define TR_MENUCUSTOMFUNC TR("FUNZ. PERSON.","FUNZIONI PERSONALIZZATE") -#define TR_MENUTELEMETRY "TELEMETRIA" -#define TR_MENUTEMPLATES "ESEMPI GUIDA" -#define TR_MENUSTAT "STATS" -#define TR_MENUDEBUG "DEBUG" -#define TR_RXNUM "RxNum" -#define TR_SYNCMENU TR("Sinc.","Sinc.[Men\201]") -#define TR_LIMIT "Limiti" -#define TR_MINRSSI "Min Rssi" -#define TR_LATITUDE "Latitud." -#define TR_LONGITUDE "Longitud." -#define TR_GPSCOORD "Coord. GPS" -#define TR_VARIO "Vario" -#define TR_SHUTDOWN "ARRESTO.." -#define TR_BATT_CALIB "Calibra batt." -#define TR_CURRENT_CALIB "Calibra corr." -#define TR_VOLTAGE "Voltage" -#define TR_CURRENT "Corr." -#define TR_SELECT_MODEL "Scegli Memo." -#define TR_CREATE_MODEL "Crea Modello" -#define TR_COPY_MODEL "Copia Modello" -#define TR_MOVE_MODEL "Sposta Modello" -#define TR_BACKUP_MODEL "Salva Modello" -#define TR_DELETE_MODEL TR("Canc. Modello","Cancella Modello") // TODO merged into DELETEMODEL? -#define TR_RESTORE_MODEL TR("Ripr. Modello","Ripristina Modello") -#define TR_SDCARD_ERROR "Errore SD" -#define TR_NO_SDCARD "No SDCARD" -#define TR_INCOMPATIBLE "Incompatibile" -#define TR_WARNING "AVVISO" -#define TR_EEPROMWARN "EEPROM" -#define TR_THROTTLEWARN "MOTORE" -#define TR_ALARMSWARN "ALLARMI" -#define TR_SWITCHWARN "SWITCH" -#define TR_INVERT_THR "Inverti Thr?" -#define TR_SPEAKER_VOLUME "Volume Audio" -#define TR_LCD "LCD" -#define TR_BRIGHTNESS INDENT "Luminosit\200" -#define TR_CPU_TEMP "Temp CPU \016>" -#define TR_CPU_CURRENT "Corrente\022>" -#define TR_CPU_MAH "Consumo" -#define TR_COPROC "CoProc." -#define TR_COPROC_TEMP "Temp. MB \016>" -#define TR_CAPAWARNING INDENT "Capacit\200Low" -#define TR_TEMPWARNING INDENT "Temp Alta" -#define TR_FUNC "Funz" -#define TR_V1 "V1" -#define TR_V2 "V2" -#define TR_DURATION "Durata" -#define TR_DELAY "Ritardo" -#define TR_SD_CARD "SD Card" -#define TR_SDHC_CARD "SD-HC Card" -#define TR_NO_SOUNDS_ON_SD "No Suoni su SD" -#define TR_NO_MODELS_ON_SD "No Model. su SD" -#define TR_NO_BITMAPS_ON_SD "no Immag. su SD" -#define TR_PLAY_FILE "Suona" -#define TR_DELETE_FILE "Cancella" -#define TR_COPY_FILE "Copia" -#define TR_RENAME_FILE "Rinomomina" -#define TR_ASSIGN_BITMAP "Assegna Immagine" -#define TR_REMOVED " rimosso" -#define TR_SD_INFO "Informazioni" -#define TR_SD_FORMAT "Format" -#define TR_NA "N/A" -#define TR_HARDWARE "HARDWARE" -#define TR_FORMATTING "Formattazione." -#define TR_TEMP_CALIB "Temp. Calib" -#define TR_TIME "Ora" -#define TR_BAUDRATE "BT Baudrate" -#define TR_SD_INFO_TITLE "SD INFO" -#define TR_SD_TYPE "Tipo:" -#define TR_SD_SPEED "Veloc.:" -#define TR_SD_SECTORS "Settori:" -#define TR_SD_SIZE "Dimens:" -#define TR_TYPE "Tipo" -#define TR_GLOBAL_VARS "Variabili Globali" -#define TR_GLOBAL_VAR "Variabile globale" -#define TR_MENUGLOBALVARS "VARIABILI GLOBALI" -#define TR_OWN "Fase" -#define TR_DATE "Data" -#define TR_ROTARY_ENCODER "R.Encs" -#define TR_CHANNELS_MONITOR "CHANNELS MONITOR" -#define TR_INTERNALRF "Modulo Interno" -#define TR_EXTERNALRF "Modulo esterno" -#define TR_FAILSAFE "Modo failsafe" -#define TR_FAILSAFESET TR("FAILSAFE","IMPOSTAZIONI FAILSAFE") -#define TR_COUNTRYCODE TR("Codice Paese","Standard 2.4Ghz") -#define TR_VOICELANG "Lingua Voce" -#define TR_UNITSSYSTEM "Unit\200" -#define TR_EDIT "Modifica" -#define TR_INSERT_BEFORE "Inserisci prima" -#define TR_INSERT_AFTER "Inserisci dopo" -#define TR_COPY "Copia" -#define TR_MOVE "Muovi" -#define TR_PASTE "Paste" -#define TR_DELETE "Cancella" -#define TR_INSERT TR("Inser.","Inserisci") -#define TR_RESET_FLIGHT "Azzera volo" -#define TR_RESET_TIMER1 "Azzera Timer1" -#define TR_RESET_TIMER2 "Azzera Timer2" -#define TR_RESET_TELEMETRY "Azzera Telemetria" -#define TR_STATISTICS "Statistiche" -#define TR_ABOUT_US "Info su" -#define TR_AND_SWITCH "AND Switch" -#define TR_CF "CF" -#define TR_SPEAKER INDENT"Speaker" -#define TR_BUZZER INDENT"Buzzer" -#define TR_BYTES "bytes" -#define TR_MODULE_BIND "[Bind]" -#define TR_MODULE_RANGE "[Range]" -#define TR_RESET_BTN "[Reset]" -#define TR_SET "[Set]" -#define TR_TRAINER TR("Trainer","Maestro/Allievo") -#define TR_ANTENNAPROBLEM CENTER "Problemi antenna TX!" -#define TR_MODELIDUSED TR("ID gi\200 usato","ID Modello gi\200 usato") -#define TR_MODULE INDENT "Modulo" -#define TR_CHANNELRANGE INDENT "Numero Canali" -#define TR_LOWALARM INDENT "Allarme Basso" -#define TR_CRITICALALARM INDENT "Allarme Critico" -#define TR_PERSISTENT_MAH INDENT "Store mAh" -#define TR_FAS_OFFSET TR(INDENT "FAS Ofs", INDENT "FAS Offset") - -#if defined(MAVLINK) - #define TR_MAVLINK_RC_RSSI_SCALE_LABEL "Max RSSI" - #define TR_MAVLINK_PC_RSSI_EN_LABEL "PC RSSI EN" - #define TR_MAVMENUSETUP_TITLE "Mavlink Setup" - #define TR_MAVLINK_BAUD_LABEL "Baudrate" - #define TR_MAVLINK_INFOS "INFOS" - #define TR_MAVLINK_MODE "MODE" - #define TR_MAVLINK_CUR_MODE "Current Mode" - #define TR_MAVLINK_ARMED "Armed" - #define TR_MAVLINK_BAT_MENU_TITLE "BAT RSSI" - #define TR_MAVLINK_BATTERY_LABEL "Flight Battery status" - #define TR_MAVLINK_RC_RSSI_LABEL "RC RSSI" - #define TR_MAVLINK_PC_RSSI_LABEL "PC RSSI" - #define TR_MAVLINK_NAV_MENU_TITLE "NAV" - #define TR_MAVLINK_COURSE "Course" - #define TR_MAVLINK_HEADING "Heading" - #define TR_MAVLINK_BEARING "Bearing" - #define TR_MAVLINK_ALTITUDE "Altitude" - #define TR_MAVLINK_GPS "GPS" - #define TR_MAVLINK_NO_FIX "NO Fix" - #define TR_MAVLINK_SAT "SAT" - #define TR_MAVLINK_HDOP "HDOP" - #define TR_MAVLINK_LAT "LAT" - #define TR_MAVLINK_LON "LON" -#endif - -// Taranis column headers -#define TR_PHASES_HEADERS { " Nome ", " Switch ", " Trims ", " Fade In ", " Fade Out " } -#define TR_LIMITS_HEADERS { " Nome ", " Offset ", " Min ", " Max ", " Direzione ", " Curve ", " Centro PPM ", " Simmetria " } -#define TR_CSW_HEADERS { " Funzione ", " V1 ", " V2 ", " AND Switch ", " Durata ", " Ritardo " } - -//Taranis About screen -#define TR_ABOUTUS "Info su" - -#define TR_ABOUT_OPENTX_1 "OpenTX e' open source, non" -#define TR_ABOUT_OPENTX_2 "commerciale, fornito senza" -#define TR_ABOUT_OPENTX_3 "garanzie. E' stato sviluppato" -#define TR_ABOUT_OPENTX_4 "gratuitamente. Il supporto" -#define TR_ABOUT_OPENTX_5 "mediante donazioni e' gradito!" - -#define TR_ABOUT_BERTRAND_1 "Bertrand Songis" -#define TR_ABOUT_BERTRAND_2 "Autore principale OpenTX" -#define TR_ABOUT_BERTRAND_3 "Co-autore Companion9x" - -#define TR_ABOUT_MIKE_1 "Mike Blandford" -#define TR_ABOUT_MIKE_2 "Guru codice e driver" -#define TR_ABOUT_MIKE_3 "esperto a basso livello" -#define TR_ABOUT_MIKE_4 "Ispiratore" - -#define TR_ABOUT_ROMOLO_1 "Romolo Manfredini" -#define TR_ABOUT_ROMOLO_2 "Autore Companion9x" -#define TR_ABOUT_ROMOLO_3 "" - -#define TR_ABOUT_ANDRE_1 "Andre Bernet" -#define TR_ABOUT_ANDRE_2 "Funzionalit\200, usabilit\200," -#define TR_ABOUT_ANDRE_3 "debugging, documentazione" - -#define TR_ABOUT_ROB_1 "Rob Thomson" -#define TR_ABOUT_ROB_2 "Webmaster openrcforums" - -#define TR_ABOUT_MARTIN_1 "Martin Hotar" -#define TR_ABOUT_MARTIN_2 "Graphic Designer" - -#if defined(PCBTARANIS) - #define TR_ABOUT_HARDWARE_1 "FrSky" - #define TR_ABOUT_HARDWARE_2 "Disegno/produzione Hardware" - #define TR_ABOUT_HARDWARE_3 "Contributi al Firmware" -#else - #define TR_ABOUT_HARDWARE_1 "Brent Nelson" - #define TR_ABOUT_HARDWARE_2 "Designer/Produttore SKY9X" - #define TR_ABOUT_HARDWARE_3 "" -#endif - -#define TR_ABOUT_PARENTS_1 "Progetti correlati" -#define TR_ABOUT_PARENTS_2 "ersky9x (Mike Blandford)" -#define TR_ABOUT_PARENTS_3 "ER9X (Erez Raviv)" -#define TR_ABOUT_PARENTS_4 "TH9X (Thomas Husterer)" - -#define TR_CHR_SHORT 's' -#define TR_CHR_LONG 'l' -#define TR_CHR_TOGGLE 't' -#define TR_CHR_HOUR 'h' - -#define TR_BEEP_VOLUME "Beep Volume" -#define TR_WAV_VOLUME "Wav Volume" -#define TR_VARIO_VOLUME "Vario Volume" -#define TR_BG_VOLUME "Bg Volume" diff --git a/radio/src/translations/pl.h b/radio/src/translations/pl.h deleted file mode 100644 index c441faada..000000000 --- a/radio/src/translations/pl.h +++ /dev/null @@ -1,752 +0,0 @@ -/* - - * Authors (alphabetical order) - * - Bertrand Songis - * - Bernet Andre - * - Kjell Kernen - * - Martin Hotar - * - Romolo Manfredini - * - * opentx is based on code named - * gruvin9x by Bryan J. Rentoul: http://code.google.com/p/gruvin9x/, - * er9x by Erez Raviv: http://code.google.com/p/er9x/, - * and the original (and ongoing) project by - * Thomas Husterer, th9x: http://code.google.com/p/th9x/ - * - * This program 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. - * - * This program 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. See the - * GNU General Public License for more details. - * - * - * - * - * !!!!! DO NOT EDIT pl.h - EDIT pl.h.txt INSTEAD !!!!!!! - * - * In order to make translations easier pl.h.txt is parsed and national - * characters are replaced by bitmap codes. The result is pl.h. - * See translate.py in the util catalog for the list of character codes - * - * !!!!! DO NOT EDIT pl.h - EDIT pl.h.txt INSTEAD !!!!!!! - * - */ - -// NON ZERO TERMINATED STRINGS -#define LEN_OFFON "\003" -#define TR_OFFON "WY\214""ZA\214" - -#define LEN_MMMINV "\003" -#define TR_MMMINV "---""INV" - -#define LEN_NCHANNELS "\004" -#define TR_NCHANNELS "\0014CH\0016CH\0018CH10CH12CH14CH16CH" - -#define LEN_VBEEPMODE TR("\007","\016") -#define TR_VBEEPMODE TR("Cichy\0 ""Alarm\0 ""BezPrz\0""Wszytko", "Cichy\0 ""Tylko alarm\0 ""Bez Przycisk\205w""Wszystko\0 ") - -#define LEN_VBEEPLEN "\005" -#define TR_VBEEPLEN "O====""=O===""==O==""===O=""====O" - -#define LEN_VRENAVIG "\003" -#define TR_VRENAVIG "Ne REaREb" - -#define LEN_VBLMODE TR("\006", "\011") -#define TR_VBLMODE TR("Wy\203\0 ""Przyc.""Dr\200\207ki""Oba\0 ""Za\203\0 ", "Wy\203aczone""Przyciski""Dr\200zki\0 ""Oba\0 ""W\203\200czy\201\0 ") - -#define LEN_TRNMODE "\003" -#define TR_TRNMODE " X "" +="" :=" - -#define LEN_TRNCHN "\003" -#define TR_TRNCHN "CH1CH2CH3CH4" - -#define LEN_DATETIME "\006" -#define TR_DATETIME "DANA:""Czas:\0 " - -#define LEN_VLCD "\006" -#define TR_VLCD "Normal""Optrex" - -#define LEN_COUNTRYCODES TR("\002", "\007") -#define TR_COUNTRYCODES TR("US""JP""EU", "Ameryka""Japonia""Europa\0") - -#define LEN_VTRIMINC "\012" -#define TR_VTRIMINC "Expo\0 ""B.Dok\203adny""Dok\203adny\0 ""\217redni\0 ""Zgrubny\0 " - -#define LEN_VBEEPCOUNTDOWN "\007" -#define TR_VBEEPCOUNTDOWN "Cichy\0 ""Pikanie""D\210wi\202ki" - -#define LEN_RETA123 "\001" - -#if defined(PCBGRUVIN9X) - #if ROTARY_ENCODERS > 2 - #define TR_RETA123 "KWGL123abcd" - #else - #define TR_RETA123 "KWGL123ab" - #endif -#elif defined(PCBTARANIS) - #define TR_RETA123 "KWGL12LR" -#else - #define TR_RETA123 "KWGL123" -#endif - -#define LEN_VPROTOS "\006" - -#if defined(PXX) - #define TR_PXX "PXX\0 " -#elif defined(DSM2) || defined(IRPROTOS) - #define TR_PXX "[PXX]\0" -#else - #define TR_PXX -#endif - -#if defined(DSM2) - #define TR_DSM2 "LP45\0 ""DSM2\0 ""DSMX\0 " -#elif defined(IRPROTOS) - #define TR_DSM2 "[LP45]""[DSM2]""[DSMX]" -#else - #define TR_DSM2 -#endif - -#if defined(IRPROTOS) - #define TR_IRPROTOS "SILV TRAC09PICZ SWIFT\0" -#else - #define TR_IRPROTOS -#endif - -#if defined(CPUARM) - #define TR_XPPM -#else - #define TR_XPPM "PPM16\0""PPMsim" -#endif - -#define TR_VPROTOS "PPM\0 " TR_XPPM TR_PXX TR_DSM2 TR_IRPROTOS - -#define LEN_POSNEG "\003" -#define TR_POSNEG "POZ""NEG" - -#define LEN_VCURVEFUNC "\003" -#define TR_VCURVEFUNC "---""x>0""x<0""|x|""f>0""f<0""|f|" - -#define LEN_VMLTPX "\006" -#define TR_VMLTPX "Dodaj\0""Mn\205\207\0 ""Zast\200p" - -#define LEN_VMLTPX2 "\002" -#define TR_VMLTPX2 "+=""*="":=" - -#define LEN_VMIXTRIMS "\004" -#define TR_VMIXTRIMS "WY\203\0""ZA\214\0""SK\0 ""SW\0 ""GAZ\0""Lotk" - -#define LEN_VCSWFUNC "\005" -#define TR_VCSWFUNC "---\0 ""a{x\0 ""a>x\0 ""ax""|a|b\0 ""aSD \0 " -#else - #define TR_SDCLOGS "[Logowa\201]\0 " -#endif - -#ifdef GVARS - #define TR_CFN_ADJUST_GVAR "Ustaw \0 " -#else - #define TR_CFN_ADJUST_GVAR -#endif - -#ifdef DEBUG - #define TR_CFN_TEST "Test\0 " -#else - #define TR_CFN_TEST -#endif - -#if defined(CPUARM) - #define TR_VFSWFUNC "Bezp.\0 ""Trener \0 ""Inst-Trim " TR_SOUND TR_HAPTIC "Reset " TR_VVARIO TR_PLAY_TRACK TR_PLAY_VALUE TR_SDCLOGS TR_CFN_VOLUME "Pod\206wietl. " TR_CFN_BG_MUSIC TR_CFN_ADJUST_GVAR TR_CFN_TEST -#elif defined(PCBGRUVIN9X) - #define TR_VFSWFUNC "Bezp.\0 ""Trener \0 ""Inst-Trim " TR_SOUND TR_HAPTIC "Reset " TR_VVARIO TR_PLAY_TRACK TR_PLAY_BOTH TR_PLAY_VALUE TR_SDCLOGS "Pod\206wietl. " TR_CFN_ADJUST_GVAR TR_CFN_TEST -#else - #define TR_VFSWFUNC "Bezp.\0 ""Trener \0 ""Inst-Trim " TR_SOUND TR_HAPTIC "Reset " TR_VVARIO TR_PLAY_TRACK TR_PLAY_BOTH TR_PLAY_VALUE "Pod\206wietl. " TR_CFN_ADJUST_GVAR TR_CFN_TEST -#endif - -#define LEN_VFSWRESET "\005" - -#if defined(FRSKY) - #define TR_FSW_RESET_TELEM "Telem" -#else - #define TR_FSW_RESET_TELEM -#endif - -#if ROTARY_ENCODERS == 2 - #define TR_FSW_RESET_ROTENC TR("REa\0 ""REb\0 ", "RotEnc A\0""RotEnc B\0") -#elif ROTARY_ENCODERS == 1 - #define TR_FSW_RESET_ROTENC TR("R.Enc", "RotEnc\0 ") -#else -#define TR_FSW_RESET_ROTENC -#endif - -#define TR_VFSWRESET "Tmr1\0""Tmr2\0""ALL\0 " TR_FSW_RESET_TELEM TR_FSW_RESET_ROTENC - -#define LEN_FUNCSOUNDS TR("\004", "\006") -#define TR_FUNCSOUNDS TR("Bp1\0""Bp2\0""Bp3\0""Wrn1""Wrn2""Chee""Rata""Tick""Sirn""Ring""SciF""Robt""Chrp""Tada""Crck""Alrm", "Beep1 ""Beep2 ""Beep3 ""Warn1 ""Warn2 ""Cheep ""Ratata""Tick ""Siren ""Ring ""SciFi ""Robot ""Chirp ""Tada ""Crickt""AlmClk") - -#define LEN_VTELEMCHNS "\004" -#if defined(PCBTARANIS) - #define TR_RSSI_0 "SWR\0" - #define TR_RSSI_1 "RSSI" -#else - #define TR_RSSI_0 "Tx\0 " - #define TR_RSSI_1 "Rx\0 " -#endif -#define TR_VTELEMCHNS "---\0""Bat\0""Tmr1""Tmr2" TR_RSSI_0 TR_RSSI_1 "A1\0 ""A2\0 ""Alt\0""Rpm\0""Fuel""T1\0 ""T2\0 ""Spd\0""Dist""GAlt""Cell""Cels""Vfas""Curr""Cnsp""Powr""AccX""AccY""AccZ""Hdg\0""VSpd""A1-\0""A2-\0""Alt-""Alt+""Rpm+""T1+\0""T2+\0""Spd+""Dst+""Cur+""Pwr+""Acc\0""Time" - -#if defined(CPUARM) - #define LEN_VUNITSSYSTEM TR("\006", "\012") - #define TR_VUNITSSYSTEM TR("Metr.\0""Imper.", "Metryczne\0""Imperialne") - #define LEN_VTELEMUNIT_NORM "\003" - #define TR_VTELEMUNIT_NORM "V\0 ""A\0 ""m/s""-\0 ""kmh""m\0 ""@\0 ""%\0 ""mA\0""mAh""W\0 " - #define LEN_VTELEMUNIT_IMP "\003" - #define TR_VTELEMUNIT_IMP "V\0 ""A\0 ""m/s""-\0 ""kts""ft\0""@\0 ""%\0 ""mA\0""mAh""W\0 " -#else - #if defined(IMPERIAL_UNITS) - #define LENGTH_UNIT "ft\0" - #define SPEED_UNIT "kts" - #else - #define LENGTH_UNIT "m\0 " - #define SPEED_UNIT "kmh" - #endif - #define LEN_VTELEMUNIT "\003" - #define TR_VTELEMUNIT "v\0 ""A\0 ""m/s""-\0 " SPEED_UNIT LENGTH_UNIT "@\0 ""%\0 ""mA\0""mAh""W\0 " -#endif - -#define STR_V (STR_VTELEMUNIT+1) -#define STR_A (STR_VTELEMUNIT+4) - -#define LEN_VALARM "\005" -#define TR_VALARM "-----""\207\205\203ty""pomar""czerw" - -#define LEN_VALARMFN "\001" -#define TR_VALARMFN "<>" - -#define LEN_VTELPROTO "\007" -#define TR_VTELPROTO "---\0 ""Hub\0 ""WSHHigh""Halcyon" - -#define LEN_VOLTSRC "\003" -#define TR_VOLTSRC "---""A1\0""A2\0""FAS""Cel" - -#define LEN_VARIOSRC "\005" -#if defined(FRSKY_SPORT) - #define TR_VARIOSRC "Vario""A1\0 ""A2\0" -#else - #define TR_VARIOSRC "Alti\0""Alti+""Vario""A1\0 ""A2\0" -#endif - -#define LEN_VSCREEN "\006" -#define TR_VSCREEN "Liczby""Paski\0" - -#define LEN_GPSFORMAT "\004" -#define TR_GPSFORMAT "HMS NMEA" - -#define LEN2_VTEMPLATES 17 -#define LEN_VTEMPLATES "\021" -#define TR_VTEMPLATES "Wyczy\206\201 miksery\0 ""Prosty. 4kanal\0 ""Prze\203\200cznik-T-Cut""V-Tail \0 ""Elevon-Delta\0 ""eCCPM \0 ""Heli Setup \0 ""Test serwa \0 " - -#define LEN_VSWASHTYPE "\004" -#define TR_VSWASHTYPE "--- ""120 ""120X""140 ""90\0" - -#define LEN_VKEYS "\005" -#define TR_VKEYS TR(" Menu"" Exit""W d\205\203""Wg\205r\202""Wpraw""Wlewo", " Menu"" Exit""W d\205\203""Wg\205r\202""Wpraw""Wlewo") - -#define LEN_VRENCODERS "\003" -#define TR_VRENCODERS "REa""REb" - -#define LEN_VSWITCHES "\003" -#define LEN_VSRCRAW "\004" - -#if defined(PCBTARANIS) - #define TR_POTS_VSRCRAW "S1\0 ""S2\0 ""LS\0 ""RS\0 " - #define TR_SW_VSRCRAW "SA\0 ""SB\0 ""SC\0 ""SD\0 ""SE\0 ""SF\0 ""SG\0 ""SH\0 " -#elif defined(EXTRA_3POS) - #define TR_POTS_VSRCRAW "P1\0 ""P2\0 " - #define TR_SW_VSRCRAW "3P1\0""3P2\0" - #define TR_9X_3POS_SWITCHES "ID0""ID1""ID2""ID3""ID4""ID5" -#else - #define TR_POTS_VSRCRAW "P1\0 ""P2\0 ""P3\0 " - #define TR_SW_VSRCRAW "3POS" - #define TR_9X_3POS_SWITCHES "ID0""ID1""ID2" -#endif - -#if defined(CPUARM) - #define TR_CUSTOMSW "PL1""PL2""PL3""PL4""PL5""PL6""PL7""PL8""PL9""PLA""PLB""PLC""PLD""PLE""PLF""PLG""PLH""PLI""PLJ""PLK""PLL""PLM""PLN""PLO""PLP""PLQ""PLR""PLS""PLT""PLU""PLV""PLW" -#elif defined(PCBGRUVIN9X) || defined(CPUM2561) || defined(CPUM128) - #define TR_CUSTOMSW "PL1""PL2""PL3""PL4""PL5""PL6""PL7""PL8""PL9""PLA""PLB""PLC""PLD""PLE""PLF" -#else - #define TR_CUSTOMSW "PL1""PL2""PL3""PL4""PL5""PL6""PL7""PL8""PL9""PLA""PLB""PLC" -#endif - -#if defined(PCBTARANIS) - #define TR_VSWITCHES "SA\300""SA-""SA\301""SB\300""SB-""SB\301""SC\300""SC-""SC\301""SD\300""SD-""SD\301""SE\300""SE-""SE\301""SF\300""SF\301""SG\300""SG-""SG\301""SH\300""SH\301" TR_CUSTOMSW " * " -#else - #define TR_VSWITCHES TR_9X_3POS_SWITCHES "GAZ""SK ""LOT""SW ""GEA""TRN" TR_CUSTOMSW " * " -#endif - -#if defined(PCBSKY9X) - #define TR_ROTARY_ENCODERS_VSRCRAW "REnc" -#elif defined(PCBGRUVIN9X) && ROTARY_ENCODERS > 2 - #define TR_ROTARY_ENCODERS_VSRCRAW "REa ""REb ""REc ""REd " -#elif defined(PCBGRUVIN9X) && ROTARY_ENCODERS <= 2 - #define TR_ROTARY_ENCODERS_VSRCRAW "REa ""REb " -#else - #define TR_ROTARY_ENCODERS_VSRCRAW -#endif - -#if defined(HELI) - #define TR_CYC_VSRCRAW "CYC1""CYC2""CYC3" -#else - #define TR_CYC_VSRCRAW "[C1]""[C2]""[C3]" -#endif - -#define TR_VSRCRAW "---\0""SK\0 ""SW\0 ""Gaz\0""Lotk" TR_POTS_VSRCRAW TR_ROTARY_ENCODERS_VSRCRAW "MAX\0" TR_CYC_VSRCRAW "TrmK" "TrmW" "TrmG" "TrmL" TR_SW_VSRCRAW - -#define LEN_VTMRMODES "\003" -#define TR_VTMRMODES "WY\214""ABS""THs""TH%""THt" - -#define LEN_VTRAINERMODES "\006" -#define TR_VTRAINERMODES "Trener""Ucze\204\0" - -#define LEN_VFAILSAFE "\011" -#define TR_VFAILSAFE "Utrzymuj\0""W\203asne\0 ""0 sygna\203u" - -#if defined(MAVLINK) - #define LEN_MAVLINK_BAUDS "\006" - #define TR_MAVLINK_BAUDS "4800 ""9600 ""14400 ""19200 ""38400 ""57600 ""76800 ""115200" - #define LEN_MAVLINK_AC_MODES "\011" - #define TR_MAVLINK_AC_MODES "Stabilizacja""Akro ""Alt Hold ""Auto ""Sterowany ""Loiter ""RTL ""Circle ""Pos Hold ""Land ""OF Loiter""Toy A ""Toy M ""INVALID " - #define LEN_MAVLINK_AP_MODES "\015" - #define TR_MAVLINK_AP_MODES "Manual ""Circle ""Stabilize ""Training ""Fly by Wire A""Fly by Wire A""Auto ""RTL ""Loiter ""Guided ""Initialising ""INVALID " -#endif - -// ZERO TERMINATED STRINGS -#define INDENT "\001" -#define LEN_INDENT 1 -#define INDENT_WIDTH (FW/2) - -#if defined(PCBTARANIS) - #define TR_ENTER "[ENTER]" -#else - #define TR_ENTER "[MENU]" -#endif - -#define TR_POPUPS TR_ENTER"\010[EXIT]" -#define OFS_EXIT sizeof(TR_ENTER) - -#define TR_MENUWHENDONE CENTER "\007"TR_ENTER" > DALEJ" -#define TR_FREE TR("wolne:", "wolne") -#define TR_DELETEMODEL "SKASUJ MODEL" -#define TR_COPYINGMODEL "Kopiuj model.." -#define TR_MOVINGMODEL "Przenie\206 model." -#define TR_LOADINGMODEL "Za\203aduj model.." -#define TR_NAME "Nazwa" -#define TR_MODELNAME "Nazwa modelu" -#define TR_PHASENAME "Nazwa" -#define TR_MIXNAME "Nazwa" -#define TR_EXPONAME "Nazwa" -#define TR_BITMAP "Obrazek" -#define TR_TIMER "Timer " -#define TR_ELIMITS TR("Limit+25%", "Kana\203 +/- 125%") -#define TR_ETRIMS TR("Trymery 100%", "Poszerzone Trymery") -#define TR_TRIMINC TR("Krok Trymera", "Krok trymera") -#define TR_TTRACE TR("\221r\205d\203o gazu", "\221r\205d\203o gazu") -#define TR_TTRIM TR("Trymer gazu", "Trymer gazu") -#define TR_BEEPCTR "(\043)Pikanie \206rodka" -#define TR_PROTO INDENT"Protok\205l" -#define TR_PPMFRAME "PPM frame" -#define TR_MS "ms" -#define TR_SWITCH "Prze\203\200cznik" -#define TR_TRIMS "Trymery" -#define TR_FADEIN "Pojawianie" -#define TR_FADEOUT "Zanikanie" -#define TR_DEFAULT "(Bazowa)" -#define TR_CHECKTRIMS "\006Sprawd\210 \012 Trymery" -#define OFS_CHECKTRIMS (9*FW) -#define TR_SWASHTYPE "Typ tarczy" -#define TR_COLLECTIVE "Kolektyw" -#define TR_SWASHRING "Tarcza" -#define TR_ELEDIRECTION "Ster Wysoko\206ci" -#define TR_AILDIRECTION "\012Lotki" -#define TR_COLDIRECTION "\012Kolektwy" -#define TR_MODE INDENT"Tryb" -#define TR_NOFREEEXPO "Brak wolnych expo!" -#define TR_NOFREEMIXER "Brak wolnych mix!" -#define TR_INSERTMIX "WSTAW MIKSER " -#define TR_EDITMIX "EDYTUJ MIKSER " -#define TR_SOURCE INDENT"\221r\205d\203o" -#define TR_WEIGHT "Waga" -#define TR_EXPO "Expo" -#define TR_SIDE "Strona" -#define TR_DIFFERENTIAL "R\205\207n.wychyle\204" -#define TR_OFFSET INDENT"Ofset" -#define TR_TRIM "Trim" -#define TR_DREX "DRex" -#define TR_CURVE "Krzywa" -#define TR_FLMODE "Tryb" -#define TR_MIXWARNING "UWAGA" -#define TR_OFF "Wy\203." -#define TR_MULTPX TR("Po\203\200czenie", "Po\203\200cz.") -#define TR_DELAYDOWN TR("Op\205znienie (-)", "Op\205znienie(-)") -#define TR_DELAYUP TR("Op\205znienie (+)", "Op\205znienie(\43)") -#define TR_SLOWDOWN TR("Spowolnienie(-)", "Spowolnienie(\177)") -#define TR_SLOWUP TR("Spowolnienie(+)", "Spowolnienie(\176)") -#define TR_MIXER "MIKSER" -#define TR_CV "K" -#define TR_GV "ZG" -#define TR_ACHANNEL "A\004Kana\203" -#define TR_RANGE INDENT"Zakres" -#define TR_BAR "Pasek" -#define TR_ALARM INDENT"Alarm" -#define TR_USRDATA TR("Dane U\207ytk.", "Dane u\207ytkownika") -#define TR_BLADES TR(INDENT"\214opaty \206migla", INDENT"\214opaty \206mig\203a") -#define TR_SCREEN "Ekran " -#define TR_SOUND_LABEL "D\210wi\202k" -#define TR_LENGTH INDENT"D\203ugo\206\201" -#define TR_SPKRPITCH INDENT"D\210wi\202k" -#define TR_HAPTIC_LABEL "Wibracja" -#define TR_HAPTICSTRENGTH INDENT"Si\203a" -#define TR_CONTRAST "Kontrast LCD" -#define TR_ALARMS_LABEL "Alarmy" -#define TR_BATTERY_RANGE TR("Poka\207 stan bat.", "Poka\207 pasek bateri") -#define TR_BATTERYWARNING INDENT"Bateria roz\203adowana" -#define TR_INACTIVITYALARM INDENT"Alarm bezczynno\206ci" -#define TR_MEMORYWARNING INDENT"Pe\203na pami\202\201'" -#define TR_ALARMWARNING INDENT"Wy\203\200cz d\210wi\202k" -#define TR_RENAVIG "Nawigacja potencjometrem" -#define TR_THROTTLEREVERSE TR("Odwr\205\201 gaz", "Odwr\205\201 gaz") -#define TR_MINUTEBEEP TR(INDENT"Minuta", INDENT"Pik co minut\202") -#define TR_BEEPCOUNTDOWN TR(INDENT"Odliczanie", INDENT"Odliczanie") -#define TR_PERSISTENT INDENT"Dok\203adny" -#define TR_BACKLIGHT_LABEL "Pod\206wietlenie" -#define TR_BLDELAY INDENT"Czas trwania" -#define TR_BLONBRIGHTNESS INDENT"Jasno\206c w\203." -#define TR_BLOFFBRIGHTNESS INDENT"Jasno\206\201 wy\203." -#define TR_SPLASHSCREEN "Logo ekranu" -#define TR_THROTTLEWARNING "(\043)Gaz" -#define TR_SWITCHWARNING "(\043)Prze\203\200cznik" -#define TR_TIMEZONE "Strefa czasowa" -#define TR_RXCHANNELORD TR("Kolejno\206\201 kana\203\205w", "Bazowa kolejno\206\201 kana\203\205w") -#define TR_SLAVE "Podrz\202dny" -#define TR_MODESRC " Tryb\006% \221r\205d\203o" -#define TR_MULTIPLIER "Po\203\200cznie" -#define TR_CAL "Kal." -#define TR_VTRIM "Trim- +" -#define TR_BG "BG:" -#define TR_MENUTOSTART CENTER "\007" TR_ENTER " = START" -#define TR_SETMIDPOINT TR(CENTER "\001Ustaw dr\200\207ki/potencj na \206rodku","\005Ustaw dr\200zki/potencj na \206rodku") -#define TR_MOVESTICKSPOTS TR(CENTER "\004Poruszaj dr\200\207kami i potenc.","\010Poruszaj dr\200\207kami i potenc.") -#define TR_RXBATT "Rx Bat.:" -#define TR_TXnRX "Tx:\0Rx:" -#define OFS_RX 4 -#define TR_ACCEL "Acc:" -#define TR_NODATA CENTER "NO DATA" -#define TR_TM1TM2 "TM1\032TM2" -#define TR_THRTHP "THR\032TH%" -#define TR_TOT "TOT" -#define TR_TMR1LATMAXUS "Tmr1Lat max\006us" -#define STR_US (STR_TMR1LATMAXUS+12) -#define TR_TMR1LATMINUS "Tmr1Lat min\006us" -#define TR_TMR1JITTERUS "Tmr1 Jitter\006us" - -#if defined(CPUARM) - #define TR_TMIXMAXMS "Tmix max\012ms" -#else - #define TR_TMIXMAXMS "Tmix max\014ms" -#endif - -#define TR_T10MSUS "T10ms\016us" -#define TR_FREESTACKMINB "Free Stack\010b" -#define TR_MENUTORESET CENTER TR_ENTER" >> Reset" -#define TR_PPM "PPM" -#define TR_CH "Kan" -#define TR_MODEL "MODEL" -#define TR_FP "FL" -#define TR_MIX "MIX" -#define TR_EEPROMLOWMEM "Niska pami\202\201 EEPROM" -#define TR_ALERT "\006 UWAGA" -#define TR_PRESSANYKEYTOSKIP "Wci\206nij guzik->ignoruj" -#define TR_THROTTLENOTIDLE TR("Gaz nie na zerze", "Dr\200\207ek gazu nie na zerze") -#define TR_ALARMSDISABLED "Alarmy wy\203\200czone" -#define TR_PRESSANYKEY "\006Wci\206nij jaki\206 klawisz" -#define TR_BADEEPROMDATA "\006B\203\200d danych EEPROM" -#define TR_EEPROMFORMATTING "\004Formatowanie EEPROM" -#define TR_EEPROMOVERFLOW "Prze\203adowany EEPROM" -#define TR_MENURADIOSETUP "USTAWIENIA RADIA" -#define TR_MENUDATEANDTIME "DATA I CZAS" -#define TR_MENUTRAINER "TRENER" -#define TR_MENUVERSION "WERSJA" -#define TR_MENUDIAG "TEST PRZE\214\211CZNIK\216W" -#define TR_MENUANA "WEJ\217CIA ANALOG." -#define TR_MENUCALIBRATION "KALIBRACJA" -#define TR_TRIMS2OFFSETS "\004Trymery => Subtrimy" -#define TR_MENUMODELSEL "MODEL" -#define TR_MENUSETUP "USTAWIENIA" -#define TR_MENUFLIGHTPHASE "FAZA LOTU" -#define TR_MENUFLIGHTPHASES "FAZY LOTU" -#define TR_MENUHELISETUP "HELI" - - -// Alignment - - -#define TR_MENUINPUTS "DR/EXPO" -#define TR_MENULIMITS "LIMITY" - - -#define TR_MENUCURVES "KRZYWE" -#define TR_MENUCURVE "\002k" -#define TR_MENUCUSTOMSWITCH "PRZE\214\211CZNIK LOGICZNY" -#define TR_MENUCUSTOMSWITCHES "Prze\203\200czniki logiczne" -#define TR_MENUCUSTOMFUNC "FUNKCJE SPECJALNE" -#define TR_MENUTELEMETRY "TELEMETRIA" -#define TR_MENUTEMPLATES "SZABLONY" -#define TR_MENUSTAT "STATYSTYKA" -#define TR_MENUDEBUG "DIAG" -#define TR_RXNUM "Nr odbiornika" -#define TR_SYNCMENU "Synch. [MENU]" -#define TR_LIMIT INDENT"Limit" -#define TR_MINRSSI "Min Rssi" -#define TR_LATITUDE "Szer. geo." -#define TR_LONGITUDE "D\203. geo." -#define TR_GPSCOORD "Typ koordynat GPS" -#define TR_VARIO "Wario" -#define TR_SHUTDOWN "Wy\203\200czanie.." -#define TR_BATT_CALIB "Kalib:Baterii" -#define TR_CURRENT_CALIB " +=\006Kalibracja pr\200du" -#define TR_VOLTAGE INDENT"Napi\202cie" -#define TR_CURRENT INDENT"Pr\200d" -#define TR_SELECT_MODEL "Wyb\205r modelu" -#define TR_CREATE_MODEL "Nowy model" -#define TR_COPY_MODEL "Skopiuj model" -#define TR_MOVE_MODEL "Przenie\206 model" -#define TR_BACKUP_MODEL "Zbackupuj model" -#define TR_DELETE_MODEL "Skasuj model" -#define TR_RESTORE_MODEL "Odtw\205rz model" -#define TR_SDCARD_ERROR "B\203\200d SD karty" -#define TR_NO_SDCARD "Brak SD karta" -#define TR_INCOMPATIBLE "Niekompatybilne" -#define TR_WARNING "UWAGA" -#define TR_EEPROMWARN "EEPROM" -#define TR_THROTTLEWARN "GAZ" -#define TR_ALARMSWARN "ALARM" -#define TR_SWITCHWARN "Prze\203\200cznik" -#define TR_INVERT_THR "Odwr\205\201 gaz" -#define TR_SPEAKER_VOLUME INDENT "G\203o\206no\206\201" -#define TR_LCD "LCD" -#define TR_BRIGHTNESS INDENT "Jasno\206\201" -#define TR_CPU_TEMP "Temp. CPU\016>" -#define TR_CPU_CURRENT "Pr\200d" -#define TR_CPU_MAH "Zu\207ycie" -#define TR_COPROC "CoProc." -#define TR_COPROC_TEMP "Temp. MB" -#define TR_CAPAWARNING INDENT "Ma\203a pojemno\206\201" -#define TR_TEMPWARNING INDENT "Przegrzanie" -#define TR_FUNC "Funkc" -#define TR_V1 "V1" -#define TR_V2 "V2" -#define TR_DURATION "Czas trwania" -#define TR_DELAY "Op\205\210nienie" -#define TR_SD_CARD "SD" -#define TR_SDHC_CARD "SD-HC" -#define TR_NO_SOUNDS_ON_SD "brak d\210wi\202k\205w na SD" -#define TR_NO_MODELS_ON_SD "brak modelu na SD" -#define TR_NO_BITMAPS_ON_SD "brak obrazk\205w na SD" -#define TR_PLAY_FILE "Odtw\205rz" -#define TR_DELETE_FILE "Skasuj" -#define TR_COPY_FILE "Kopiuj" -#define TR_RENAME_FILE "Zmie\204 nazw\202" -#define TR_ASSIGN_BITMAP "Wybierz obrazek" -#define TR_REMOVED " skasowane" -#define TR_SD_INFO "Informacje" -#define TR_SD_FORMAT "Formatuj" -#define TR_NA "[X]" -#define TR_HARDWARE "HARDWARE" -#define TR_FORMATTING "Formatowanie.." -#define TR_TEMP_CALIB "Temp. kalibracji" -#define TR_TIME "Czas" -#define TR_BAUDRATE "Pr\202dko\206\201 BT" -#define TR_SD_INFO_TITLE "SD INFO" -#define TR_SD_TYPE "Typ:" -#define TR_SD_SPEED "Pr\202dko\206\201:" -#define TR_SD_SECTORS "Sektory :" -#define TR_SD_SIZE "Wielko\206\201:" -#define TR_TYPE TR_SD_TYPE -#define TR_GLOBAL_VARS "Zmienne globalne" -#define TR_GLOBAL_VAR "Zmienna globalna" -#define TR_MENUGLOBALVARS "ZMIENNE GLOBALNE" -#define TR_OWN " W\203asno\206\201 " -#define TR_DATE "Data" -#define TR_ROTARY_ENCODER "R.Encs" -#define TR_CHANNELS_MONITOR "MONITOR KANA\214\216W" -#define TR_INTERNALRF "Wewn\202trzny modu\203 RF" -#define TR_EXTERNALRF "Zewn\202trzny modu\203 RF" -#define TR_FAILSAFE "Tryb Failsafe" -#define TR_FAILSAFESET "USTAWIENIE FAILSAFE" -#define TR_COUNTRYCODE "Kod regionu" -#define TR_VOICELANG "J\202zyk g\203osu" -#define TR_UNITSSYSTEM "Jednostki" -#define TR_EDIT "Edytuj" -#define TR_INSERT_BEFORE "Wstaw przed" -#define TR_INSERT_AFTER "Wstaw za" -#define TR_COPY "Kopiuj" -#define TR_MOVE "Przemie\206\201" -#define TR_PASTE "Wklej" -#define TR_DELETE "Kasuj" -#define TR_INSERT "Wstaw" -#define TR_RESET_FLIGHT "Zeruj lot" -#define TR_RESET_TIMER1 "Zeruj Timer1" -#define TR_RESET_TIMER2 "Zeruj Timer2" -#define TR_RESET_TELEMETRY "Wyczy\206\201 telemetri\202" -#define TR_STATISTICS "Statystyki" -#define TR_ABOUT_US "O nas" -#define TR_AND_SWITCH "Prze\203\200cznik AND" -#define TR_CF "FS" -#define TR_SPEAKER INDENT"G\203o\206nik" -#define TR_BUZZER INDENT"Brz\202czyk" -#define TR_BYTES "[B]" -#define TR_MODULE_BIND "[Bind]" -#define TR_MODULE_RANGE "[Zasieg]" -#define TR_RESET_BTN "[Reset]" -#define TR_SET "[Ustaw]" -#define TR_TRAINER "Trener" -#define TR_ANTENNAPROBLEM CENTER "Problem z anten\200 TX" -#define TR_MODELIDUSED TR("ID ju\207 u\207yte","ID modelu ju\207 u\207yte") -#define TR_MODULE INDENT "Modu\203" -#define TR_CHANNELRANGE INDENT "Zakres kana\203u" -#define TR_LOWALARM INDENT "Alarm niski" -#define TR_CRITICALALARM INDENT "Alarm krytyczny" -#define TR_PERSISTENT_MAH INDENT "Store mAh" -#define TR_FAS_OFFSET TR(INDENT "FAS Ofs", INDENT "FAS Offset") - -#if defined(MAVLINK) - #define TR_MAVLINK_RC_RSSI_SCALE_LABEL "Max RSSI" - #define TR_MAVLINK_PC_RSSI_EN_LABEL "PC RSSI EN" - #define TR_MAVMENUSETUP_TITLE "Mavlink Setup" - #define TR_MAVLINK_BAUD_LABEL "Baudrate" - #define TR_MAVLINK_INFOS "INFOS" - #define TR_MAVLINK_MODE "MODE" - #define TR_MAVLINK_CUR_MODE "Current Mode" - #define TR_MAVLINK_ARMED "Armed" - #define TR_MAVLINK_BAT_MENU_TITLE "BAT RSSI" - #define TR_MAVLINK_BATTERY_LABEL "Status baterii " - #define TR_MAVLINK_RC_RSSI_LABEL "RC RSSI" - #define TR_MAVLINK_PC_RSSI_LABEL "PC RSSI" - #define TR_MAVLINK_NAV_MENU_TITLE "NAV" - #define TR_MAVLINK_COURSE "Kurs" - #define TR_MAVLINK_HEADING "Kierunek" - #define TR_MAVLINK_BEARING "Orientacja" - #define TR_MAVLINK_ALTITUDE "Wysoko\206\201" - #define TR_MAVLINK_GPS "GPS" - #define TR_MAVLINK_NO_FIX "NO Fix" - #define TR_MAVLINK_SAT "SAT" - #define TR_MAVLINK_HDOP "HDOP" - #define TR_MAVLINK_LAT "LAT" - #define TR_MAVLINK_LON "LON" -#endif - -// Taranis column headers -#define TR_PHASES_HEADERS { " Nazwa ", " Prze\203\200cznik ", " Trymery ", " Pojawianie si\202 ", " Zanikanie " } -#define TR_LIMITS_HEADERS { " Nazwa ", " Subtrim ", " Min ", " Max ", " Kierunek ", " Krzywa ", " \217rodek PPM ", " Tryb subtrim " } -#define TR_CSW_HEADERS { " Funkcja ", " Param. 1 ", " Param 2 ", " AND Prze\203\200cznik ", " Czas trwania ", " Op\205\210nienie " } - -//Taranis About screen -#define TR_ABOUTUS TR(" ABOUT ", "ABOUT") - -#define TR_ABOUT_OPENTX_1 TR("OpenTX\001is\001open\001source,\001non", "OpenTX is open source, non-") -#define TR_ABOUT_OPENTX_2 TR("commercial,\001wo\001warranties.", "commercial and comes with no") -#define TR_ABOUT_OPENTX_3 TR("It\001was\001developed\001for\001free.", "warranties. It was developed") -#define TR_ABOUT_OPENTX_4 TR("Support through donations", "for free. Support through") -#define TR_ABOUT_OPENTX_5 TR("is welcome!", "donations is welcome!") - -#define TR_ABOUT_BERTRAND_1 "Bertrand Songis" -#define TR_ABOUT_BERTRAND_2 "OpenTX main author" -#define TR_ABOUT_BERTRAND_3 "Companion9x co-author" - -#define TR_ABOUT_MIKE_1 "Mike Blandford" -#define TR_ABOUT_MIKE_2 "Code and drivers guru" -#define TR_ABOUT_MIKE_3 TR("Arguably,\001one\001of\001the\001best", "Arguably, one of the best") -#define TR_ABOUT_MIKE_4 "Inspirational" - -#define TR_ABOUT_ROMOLO_1 "Romolo Manfredini" -#define TR_ABOUT_ROMOLO_2 "Companion9x co-author" -#define TR_ABOUT_ROMOLO_3 "" - -#define TR_ABOUT_ANDRE_1 "Andre Bernet" -#define TR_ABOUT_ANDRE_2 "Functionality, usability," -#define TR_ABOUT_ANDRE_3 "debugging, documentation" - -#define TR_ABOUT_ROB_1 "Rob Thomson" -#define TR_ABOUT_ROB_2 "openrcforums webmaster" - -#define TR_ABOUT_MARTIN_1 "Martin Hotař" -#define TR_ABOUT_MARTIN_2 "Projekty graficzne" - -#if defined(PCBTARANIS) - #define TR_ABOUT_HARDWARE_1 "FrSky" - #define TR_ABOUT_HARDWARE_2 "Proucent/projektant Hardware" - #define TR_ABOUT_HARDWARE_3 "Wsp\205\203autor firmware" -#else - #define TR_ABOUT_HARDWARE_1 "Brent Nelson" - #define TR_ABOUT_HARDWARE_2 "Sky9x designer/producent" - #define TR_ABOUT_HARDWARE_3 "" -#endif - -#define TR_ABOUT_PARENTS_1 "Projekty macierzyste" -#define TR_ABOUT_PARENTS_2 "ersky9x (Mike Blandford)" -#define TR_ABOUT_PARENTS_3 "ER9X (Erez Raviv)" -#define TR_ABOUT_PARENTS_4 "TH9X (Thomas Husterer)" - -#define TR_CHR_SHORT 's' -#define TR_CHR_LONG 'l' -#define TR_CHR_TOGGLE 't' -#define TR_CHR_HOUR 'h' - -#define TR_BEEP_VOLUME "G\203o\206no\206\201 pikania" -#define TR_WAV_VOLUME "G\203o\206no\206\201 wav" -#define TR_VARIO_VOLUME "G\203o\206no\206\201 wario" -#define TR_BG_VOLUME "G\203o\206no\206c t\203a " diff --git a/radio/src/translations/pt.h b/radio/src/translations/pt.h deleted file mode 100644 index 022579f74..000000000 --- a/radio/src/translations/pt.h +++ /dev/null @@ -1,751 +0,0 @@ -/* - * Authors (alphabetical order) - * - Bertrand Songis - * - Bernet Andre - * - Kjell Kernen - * - Martin Hotar - * - Romolo Manfredini - * - * opentx is based on code named - * gruvin9x by Bryan J. Rentoul: http://code.google.com/p/gruvin9x/, - * er9x by Erez Raviv: http://code.google.com/p/er9x/, - * and the original (and ongoing) project by - * Thomas Husterer, th9x: http://code.google.com/p/th9x/ - * - * This program 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. - * - * This program 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. See the - * GNU General Public License for more details. - * - * - * - * !!!!! DO NOT EDIT pt.h - EDIT pt.h.txt INSTEAD !!!!!!! - * - * In order to make translations easier pt.h.txt is parsed and national - * characters are replaced by bitmap codes. The result is pt.h. - * - * See translate.py in the util catalog for the list of character codes - * - * !!!!! DO NOT EDIT pt.h - EDIT pt.h.txt INSTEAD !!!!!!! - */ - - -// NON ZERO TERMINATED STRINGS -#define LEN_OFFON "\003" -#define TR_OFFON "OFF""ON\0" - -#define LEN_MMMINV "\003" -#define TR_MMMINV "---""INV" - -#define LEN_NCHANNELS "\004" -#define TR_NCHANNELS "\0014CH\0016CH\0018CH10CH12CH14CH16CH" - -#define LEN_VBEEPMODE "\005" -#define TR_VBEEPMODE "Mudo ""Alarm""NoKey""Todo " - -#define LEN_VBEEPLEN "\005" -#define TR_VBEEPLEN "0====""=0===""==0==""===0=""====0" - -#define LEN_VRENAVIG "\003" -#define TR_VRENAVIG "No REaREb" - -#define LEN_VBLMODE "\004" -#define TR_VBLMODE "OFF ""Chav""Stks""Tudo""ON\0" - -#define LEN_TRNMODE "\003" -#define TR_TRNMODE "OFF"" +="" :=" - -#define LEN_TRNCHN "\003" -#define TR_TRNCHN "CH1CH2CH3CH4" - -#define LEN_DATETIME "\005" -#define TR_DATETIME "DATA:""HORA:" - -#define LEN_VLCD "\006" -#define TR_VLCD "NormalOptrex" - -#define LEN_COUNTRYCODES TR("\002", "\007") -#define TR_COUNTRYCODES TR("US""JP""EU", "America""Japan\0 ""Europe\0") - -#define LEN_VTRIMINC "\006" -#define TR_VTRIMINC "Expo ""ExFino""Fino ""Medio ""Largo " - -#define LEN_VBEEPCOUNTDOWN "\006" -#define TR_VBEEPCOUNTDOWN "SilentBeeps\0Voice\0" - -#define LEN_RETA123 "\001" - -#if defined(PCBGRUVIN9X) - #if ROTARY_ENCODERS > 2 - #define TR_RETA123 "LPMA123abcd" - #else - #define TR_RETA123 "LPMA123ab" - #endif -#elif defined(PCBTARANIS) - #define TR_RETA123 "LPMA12LR" -#else - #define TR_RETA123 "LPMA123" -#endif - -#define LEN_VPROTOS "\006" - -#if defined(PXX) - #define TR_PXX "PXX\0 " -#elif defined(DSM2) || defined(IRPROTOS) - #define TR_PXX "[PXX]\0" -#else - #define TR_PXX -#endif - -#if defined(DSM2) - #define TR_DSM2 "LP45\0 ""DSM2\0 ""DSMX\0 " -#elif defined(IRPROTOS) - #define TR_DSM2 "[LP45]""[DSM2]""[DSMX]" -#else - #define TR_DSM2 -#endif - -#if defined(IRPROTOS) - #define TR_IRPROTOS "SILV TRAC09PICZ SWIFT\0" -#else - #define TR_IRPROTOS -#endif - -#if defined(CPUARM) - #define TR_XPPM -#else - #define TR_XPPM "PPM16\0""PPMsim" -#endif - -#define TR_VPROTOS "PPM\0 " TR_XPPM TR_PXX TR_DSM2 TR_IRPROTOS - -#define LEN_POSNEG "\003" -#define TR_POSNEG "POS""NEG" - -#define LEN_VCURVEFUNC "\003" -#define TR_VCURVEFUNC "---""x>0""x<0""|x|""f>0""f<0""|f|" - -#define LEN_VMLTPX "\011" -#define TR_VMLTPX "Adicionar""Multipl. ""Trocar\0 0" - -#define LEN_VMLTPX2 "\002" -#define TR_VMLTPX2 "+=""*="":=" - -#define LEN_VMIXTRIMS "\003" -#define TR_VMIXTRIMS "OFF""ON\0""Lem""Pfd""Mot""Ail" - -#define LEN_VCSWFUNC "\005" -#define TR_VCSWFUNC "---\0 ""a{x\0 ""a>x\0 ""ax""|a|b\0 ""a" - -#define LEN_VTELPROTO "\007" -#define TR_VTELPROTO "Nada\0 ""Hub\0 ""WSHHigh""Halcyon" - -#define LEN_VOLTSRC "\003" -#define TR_VOLTSRC "---""A1\0""A2\0""FAS""Cel" - -#define LEN_VARIOSRC "\005" -#if defined(FRSKY_SPORT) - #define TR_VARIOSRC "Vario""A1\0 ""A2\0" -#else - #define TR_VARIOSRC "Alti\0""Alti+""Vario""A1\0 ""A2\0" -#endif - -#define LEN_VSCREEN "\004" -#define TR_VSCREEN "Nums""Bars" - -#define LEN_GPSFORMAT "\004" -#define TR_GPSFORMAT "HMS NMEA" - -#define LEN2_VTEMPLATES 13 -#define LEN_VTEMPLATES "\015" -#define TR_VTEMPLATES "Tirar Mixagem""4CH Simples\0 ""Anular Motor\0""V-Tail\0 ""Elevon\\Zagi\0 ""eCCPM\0 ""Mixagem Heli\0""Testar Servos" - -#define LEN_VSWASHTYPE "\004" -#define TR_VSWASHTYPE "--- ""120 ""120X""140 ""90\0" - -#define LEN_VKEYS "\005" -#define TR_VKEYS TR(" Menu"" Sair""Desce"" Sobe""Direi""Esqda", " Menu"" Exit""Enter"" Page"" Plus""Minus") - -#define LEN_VRENCODERS "\003" -#define TR_VRENCODERS "REa""REb" - -#define LEN_VSWITCHES "\003" -#define LEN_VSRCRAW "\004" - -#if defined(PCBTARANIS) - #define TR_POTS_VSRCRAW "S1\0 ""S2\0 ""LS\0 ""RS\0 " - #define TR_SW_VSRCRAW "SA\0 ""SB\0 ""SC\0 ""SD\0 ""SE\0 ""SF\0 ""SG\0 ""SH\0 " -#elif defined(EXTRA_3POS) - #define TR_POTS_VSRCRAW "P1\0 ""P2\0 " - #define TR_SW_VSRCRAW "3P1\0""3P2\0" - #define TR_9X_3POS_SWITCHES "ID0""ID1""ID2""ID3""ID4""ID5" -#else - #define TR_POTS_VSRCRAW "P1\0 ""P2\0 ""P3\0 " - #define TR_SW_VSRCRAW "3POS" - #define TR_9X_3POS_SWITCHES "ID0""ID1""ID2" -#endif - -#if defined(CPUARM) - #define TR_CUSTOMSW "CE1""CE2""CE3""CE4""CE5""CE6""CE7""CE8""CE9""CEA""CEB""CEC""CED""CEE""CEF""CEG""CEH""CEI""CEJ""CEK""CEL""CEM""CEN""CEO""CEP""CEQ""CER""CES""CET""CEU""CEV""CEW" -#elif defined(PCBGRUVIN9X) || defined(CPUM2561) || defined(CPUM128) - #define TR_CUSTOMSW "CE1""CE2""CE3""CE4""CE5""CE6""CE7""CE8""CE9""CEA""CEB""CEC""CED""CEE""CEF" -#else - #define TR_CUSTOMSW "CE1""CE2""CE3""CE4""CE5""CE6""CE7""CE8""CE9""CEA""CEB""CEC" -#endif - -#if defined(PCBTARANIS) - #define TR_VSWITCHES "SA\300""SA-""SA\301""SB\300""SB-""SB\301""SC\300""SC-""SC\301""SD\300""SD-""SD\301""SE\300""SE-""SE\301""SF\300""SF\301""SG\300""SG-""SG\301""SH\300""SH\301" TR_CUSTOMSW "1*\0" -#else - #define TR_VSWITCHES TR_9X_3POS_SWITCHES "THR""RUD""ELE""AIL""GEA""TRN" TR_CUSTOMSW "1*\0" -#endif - -#if defined(PCBSKY9X) - #define TR_ROTARY_ENCODERS_VSRCRAW "REnc" -#elif defined(PCBGRUVIN9X) && ROTARY_ENCODERS > 2 - #define TR_ROTARY_ENCODERS_VSRCRAW "REa ""REb ""REc ""REd " -#elif defined(PCBGRUVIN9X) && ROTARY_ENCODERS <= 2 - #define TR_ROTARY_ENCODERS_VSRCRAW "REa ""REb " -#else - #define TR_ROTARY_ENCODERS_VSRCRAW -#endif - -#if defined(HELI) -#define TR_CYC_VSRCRAW "CYC1""CYC2""CYC3" -#else -#define TR_CYC_VSRCRAW "[C1]""[C2]""[C3]" -#endif - -#define TR_VSRCRAW "---\0""Lem\0""Pfd\0""Mot\0""Ail\0" TR_POTS_VSRCRAW TR_ROTARY_ENCODERS_VSRCRAW "MAX\0" TR_CYC_VSRCRAW "TrmL" "TrmP" "TrmM" "TrmA" TR_SW_VSRCRAW - -#define LEN_VTMRMODES "\003" -#define TR_VTMRMODES "OFF""ABS""MTs""MT%""MTt" - -#define LEN_VTRAINERMODES "\006" -#define TR_VTRAINERMODES "Master""Slave\0" - -#define LEN_VFAILSAFE "\011" -#define TR_VFAILSAFE "Hold\0 ""Custom\0 ""No pulses" - -#if defined(MAVLINK) - #define LEN_MAVLINK_BAUDS "\006" - #define TR_MAVLINK_BAUDS "4800 ""9600 ""14400 ""19200 ""38400 ""57600 ""76800 ""115200" - #define LEN_MAVLINK_AC_MODES "\011" - #define TR_MAVLINK_AC_MODES "Stabilize""Acro ""Alt Hold ""Auto ""Guided ""Loiter ""RTL ""Circle ""Pos Hold ""Land ""OF Loiter""Toy A ""Toy M ""INVALID " - #define LEN_MAVLINK_AP_MODES "\015" - #define TR_MAVLINK_AP_MODES "Manual ""Circle ""Stabilize ""Training ""Fly by Wire A""Fly by Wire A""Auto ""RTL ""Loiter ""Guided ""Initialising ""INVALID " -#endif - -// ZERO TERMINATED STRINGS -#define INDENT "\001" -#define LEN_INDENT 1 -#define INDENT_WIDTH (FW/2) - -#if defined(PCBTARANIS) - #define TR_ENTER "[ENTER]" -#else - #define TR_ENTER "[MENU]" -#endif - -#define TR_POPUPS TR_ENTER"\010[EXIT]" -#define OFS_EXIT sizeof(TR_ENTER) - -#define TR_MENUWHENDONE CENTER"\006"TR_ENTER"QDO PRONTO" -#define TR_FREE "Livre" -#define TR_DELETEMODEL "EXCLUI MODELO" -#define TR_COPYINGMODEL "Copiando modelo" -#define TR_MOVINGMODEL "Movendo modelo" -#define TR_LOADINGMODEL "Carregar modelo" -#define TR_NAME "Nome" -#define TR_MODELNAME "Model Name" -#define TR_PHASENAME "Phase Name" -#define TR_MIXNAME "Mix Name" -#define TR_EXPONAME "Expo Name" -#define TR_BITMAP "Model Image" -#define TR_TIMER "Cronom" -#define TR_ELIMITS "E.Limits" -#define TR_ETRIMS "E.Trims" -#define TR_TRIMINC "Trim Step" -#define TR_TTRACE "T-Trace" -#define TR_TTRIM "T-Trim" -#define TR_BEEPCTR "Ctr Beep" -#define TR_PROTO INDENT"Proto" -#define TR_PPMFRAME "PPM frame" -#define TR_MS "ms" -#define TR_SWITCH "Chave" -#define TR_TRIMS "Trims" -#define TR_FADEIN "Aparecer" -#define TR_FADEOUT "Ocultar" -#define TR_DEFAULT "(default)" -#define TR_CHECKTRIMS "\006Check\012Trims" -#define OFS_CHECKTRIMS (9*FW) -#define TR_SWASHTYPE "Ciclico Tipo" -#define TR_COLLECTIVE "Coletivo" -#define TR_SWASHRING "Anel Coletivo" -#define TR_ELEDIRECTION "PFD Sentido" -#define TR_AILDIRECTION "AIL Sentido" -#define TR_COLDIRECTION "COL Sentido" -#define TR_MODE INDENT"Modo" -#define TR_NOFREEEXPO "No free expo!" -#define TR_NOFREEMIXER "No free mixer!" -#define TR_INSERTMIX "INSERIR MIX" -#define TR_EDITMIX "EDITAR MIX" -#define TR_SOURCE INDENT"Fonte" -#define TR_WEIGHT "Quantia" -#define TR_EXPO "Exponen" -#define TR_SIDE "Lado" -#define TR_DIFFERENTIAL "Diferencial" -#define TR_OFFSET INDENT"Desvio" -#define TR_TRIM "Trim" -#define TR_DREX "DRex" -#define TR_CURVE "Curvas" -#define TR_FLMODE "Fase" -#define TR_MIXWARNING "Aviso" -#define TR_OFF "OFF" -#define TR_MULTPX "Aplicar" -#define TR_DELAYDOWN "Atraso Dn" -#define TR_DELAYUP "Atraso Up" -#define TR_SLOWDOWN "Lento Dn" -#define TR_SLOWUP "Lento Up" -#define TR_MIXER "MIXAGENS" -#define TR_CV "CV" -#define TR_GV "GV" -#define TR_ACHANNEL "A\004Canal" -#define TR_RANGE INDENT"Range" -#define TR_BAR "Bar" -#define TR_ALARM INDENT"Alarme" -#define TR_USRDATA "UsrData" -#define TR_BLADES INDENT"Helice" -#define TR_SCREEN "Tela" -#define TR_SOUND_LABEL "Som" -#define TR_LENGTH INDENT"Comprimento" -#define TR_SPKRPITCH INDENT"Pitch" -#define TR_HAPTIC_LABEL "Vibrar" -#define TR_HAPTICSTRENGTH INDENT"Forca" -#define TR_CONTRAST "Contraste" -#define TR_ALARMS_LABEL "Alarmes" -#define TR_BATTERY_RANGE "Battery Range" -#define TR_BATTERYWARNING INDENT"Bateria Baixa" -#define TR_INACTIVITYALARM INDENT"Inactividade" -#define TR_MEMORYWARNING INDENT"Memoria Baixa" -#define TR_ALARMWARNING INDENT"Som Off" -#define TR_RENAVIG "RotEnc Navig" -#define TR_THROTTLEREVERSE "Inverte Acel." -#define TR_MINUTEBEEP INDENT"Beep Minuto" -#define TR_BEEPCOUNTDOWN INDENT"Beep Regressivo" -#define TR_PERSISTENT INDENT"Persist." -#define TR_BACKLIGHT_LABEL "Backlight" -#define TR_BLDELAY INDENT"Tempo Backlight" -#define TR_BLONBRIGHTNESS INDENT"ON Brightness" -#define TR_BLOFFBRIGHTNESS INDENT"OFF Brightness" -#define TR_SPLASHSCREEN "Splash screen" -#define TR_THROTTLEWARNING "Avisa Acel" -#define TR_SWITCHWARNING "Avisa Chav" -#define TR_TIMEZONE "Time Zone" -#define TR_RXCHANNELORD "Ordem Canal RX" -#define TR_SLAVE "Escravo" -#define TR_MODESRC "Modo\006% Fonte" -#define TR_MULTIPLIER "Multiplicar" -#define TR_CAL "Cal" -#define TR_VTRIM "Trim- +" -#define TR_BG "BG:" -#define TR_MENUTOSTART CENTER"\006" TR_ENTER " INICIAR" -#define TR_SETMIDPOINT CENTER"\005CENTRAR STICK/POT" -#define TR_MOVESTICKSPOTS CENTER"\005MOVER STICKS/POTs" -#define TR_RXBATT "Rx Batt:" -#define TR_TXnRX "Tx:\0Rx:" -#define OFS_RX 4 -#define TR_ACCEL "Acc:" -#define TR_NODATA CENTER"SEM DADOS" -#define TR_TM1TM2 "TM1\032TM2" -#define TR_THRTHP "MTR\032MT%" -#define TR_TOT "TOT" -#define TR_TMR1LATMAXUS "Tmr1Lat max\006us" -#define STR_US (STR_TMR1LATMAXUS+12) -#define TR_TMR1LATMINUS "Tmr1Lat min\006us" -#define TR_TMR1JITTERUS "Tmr1 Jitter\006us" - -#if defined(CPUARM) - #define TR_TMIXMAXMS "Tmix max\012ms" -#else - #define TR_TMIXMAXMS "Tmix max\014ms" -#endif - -#define TR_T10MSUS "T10ms\016us" -#define TR_FREESTACKMINB "Pilha Livre\010b" -#define TR_MENUTORESET CENTER TR_ENTER" Reinicia" -#define TR_PPM "PPM" -#define TR_CH "CH" -#define TR_MODEL "MODEL" -#define TR_FP "FP" -#define TR_MIX "MIX" -#define TR_EEPROMLOWMEM "EEPROM BX Memoria" -#define TR_ALERT "\016ALERT" -#define TR_PRESSANYKEYTOSKIP "Pulsar Tecla p/ sair" -#define TR_THROTTLENOTIDLE "**ACELERADOR ATIVO**" -#define TR_ALARMSDISABLED "Desabilita Alarmes" -#define TR_PRESSANYKEY "\010Pressione Tecla" -#define TR_BADEEPROMDATA "EEPRON INVALIDA" -#define TR_EEPROMFORMATTING "Formatando EEPROM" -#define TR_EEPROMOVERFLOW "EEPROM CHEIA" -#define TR_MENURADIOSETUP "AJUSTAR RADIO" -#define TR_MENUDATEANDTIME "DATA E HORA" -#define TR_MENUTRAINER "TRAINER" -#define TR_MENUVERSION "VERSAO" -#define TR_MENUDIAG "DIAGNOST" -#define TR_MENUANA "ANALOGICOS" -#define TR_MENUCALIBRATION "CALIBRAGEM" -#define TR_TRIMS2OFFSETS "\006Trims => Offsets" -#define TR_MENUMODELSEL "MODELOS" -#define TR_MENUSETUP "SETUP" -#define TR_MENUFLIGHTPHASE "MODO DE VOO" -#define TR_MENUFLIGHTPHASES "MODOS DE VOO" -#define TR_MENUHELISETUP "HELI SETUP" - -#if defined(PPM_CENTER_ADJUSTABLE) || defined(PPM_LIMITS_SYMETRICAL) // The right menu titles for the gurus ... - #define TR_MENUINPUTS "STICKS" - #define TR_MENULIMITS "SAIDAS" -#else - #define TR_MENUINPUTS "DR/EXPO" - #define TR_MENULIMITS "LIMITES" -#endif - -#define TR_MENUCURVES "CURVAS" -#define TR_MENUCURVE "CURVA" -#define TR_MENUCUSTOMSWITCH "CHAVE ESPECIAL" -#define TR_MENUCUSTOMSWITCHES "CHAVES ESPECIAIS" -#define TR_MENUCUSTOMFUNC "FUNCAO ESPECIAL" -#define TR_MENUTELEMETRY "TELEMETRIA" -#define TR_MENUTEMPLATES "MODELOS" -#define TR_MENUSTAT "REGISTROS" -#define TR_MENUDEBUG "DEPURAR" -#define TR_RXNUM "RxNum" -#define TR_SYNCMENU "Sync [MENU]" -#define TR_LIMIT INDENT"Limite" -#define TR_MINRSSI "Min Rssi" -#define TR_LATITUDE "Latitude" -#define TR_LONGITUDE "Longitude" -#define TR_GPSCOORD "Gps Coords" -#define TR_VARIO "Vario" -#define TR_SHUTDOWN "DESLIGANDOo" -#define TR_BATT_CALIB "CALIBRAR BATT" -#define TR_CURRENT_CALIB "Corrente Calib" -#define TR_VOLTAGE INDENT"Volts" -#define TR_CURRENT INDENT"Amperes" -#define TR_SELECT_MODEL "Selec. Modelo" -#define TR_CREATE_MODEL "Criar Modelo" -#define TR_COPY_MODEL "Copy Model" -#define TR_MOVE_MODEL "Move Model" -#define TR_BACKUP_MODEL "Salvar Modelo" -#define TR_DELETE_MODEL "Apagar Modelo" -#define TR_RESTORE_MODEL "Restaura Modelo" -#define TR_SDCARD_ERROR "SDCARD Erro" -#define TR_NO_SDCARD "Sem SDCARD" -#define TR_INCOMPATIBLE "Incompativel" -#define TR_WARNING "AVISO" -#define TR_EEPROMWARN "EEPROM" -#define TR_THROTTLEWARN "ACELERAD" -#define TR_ALARMSWARN "ALARMES" -#define TR_SWITCHWARN "CHAVES" -#define TR_INVERT_THR "Inverte Acel?" -#define TR_SPEAKER_VOLUME INDENT "Volume" -#define TR_LCD "LCD" -#define TR_BRIGHTNESS INDENT "Brilho" -#define TR_CPU_TEMP "CPU Temp.\016>" -#define TR_CPU_CURRENT "Current\022>" -#define TR_CPU_MAH "Consumo." -#define TR_COPROC "CoProc." -#define TR_COPROC_TEMP "MB Temp. \016>" -#define TR_CAPAWARNING INDENT "Aviso Capacidade" -#define TR_TEMPWARNING INDENT "Temperat. ALTA" -#define TR_FUNC "Funcao" -#define TR_V1 "V1" -#define TR_V2 "V2" -#define TR_DURATION "Tempo" -#define TR_DELAY "Atraso" -#define TR_SD_CARD "SD CARD" -#define TR_SDHC_CARD "SD-HC CARD" -#define TR_NO_SOUNDS_ON_SD "Sem Som no SD" -#define TR_NO_MODELS_ON_SD "Sem Modelo no SD" -#define TR_NO_BITMAPS_ON_SD "No Bitmaps on SD" -#define TR_PLAY_FILE "Play" -#define TR_DELETE_FILE "Apagar" -#define TR_COPY_FILE "Copiar" -#define TR_RENAME_FILE "Renomear" -#define TR_ASSIGN_BITMAP "Assign Bitmap" -#define TR_REMOVED "Remover" -#define TR_SD_INFO "Dados SD" -#define TR_SD_FORMAT "Formatar" -#define TR_NA "N/A" -#define TR_HARDWARE "HARDWARE" -#define TR_FORMATTING "Formatando..." -#define TR_TEMP_CALIB "Temp. Calib" -#define TR_TIME "Time" -#define TR_BAUDRATE "BT Baudrate" -#define TR_SD_INFO_TITLE "SD INFO" -#define TR_SD_TYPE "Tipe" -#define TR_SD_SPEED "Velocidade" -#define TR_SD_SECTORS "Sectores" -#define TR_SD_SIZE "Tamanho" -#define TR_TYPE "Tipe" -#define TR_GLOBAL_VARS "Variaveis" -#define TR_GLOBAL_VAR "Global Variable" -#define TR_MENUGLOBALVARS "VARIAVEIS" -#define TR_OWN "Propr." -#define TR_DATE "Data" -#define TR_ROTARY_ENCODER "R.Encs" -#define TR_CHANNELS_MONITOR "CHANNELS MONITOR" -#define TR_INTERNALRF "Internal RF" -#define TR_EXTERNALRF "External RF" -#define TR_FAILSAFE "Failsafe mode" -#define TR_FAILSAFESET "FAILSAFE SETTINGS" -#define TR_COUNTRYCODE "Country Code" -#define TR_VOICELANG "Voice Language" -#define TR_UNITSSYSTEM "Units" -#define TR_EDIT "Edit" -#define TR_INSERT_BEFORE "Insert Before" -#define TR_INSERT_AFTER "Insert After" -#define TR_COPY "Copy" -#define TR_MOVE "Move" -#define TR_PASTE "Paste" -#define TR_DELETE "Delete" -#define TR_INSERT "Insert" -#define TR_RESET_FLIGHT "Reset Flight" -#define TR_RESET_TIMER1 "Reset Timer1" -#define TR_RESET_TIMER2 "Reset Timer2" -#define TR_RESET_TELEMETRY "Reset Telemetry" -#define TR_STATISTICS "Statistics" -#define TR_ABOUT_US "About Us" -#define TR_AND_SWITCH "AND Switch" -#define TR_CF "CF" -#define TR_SPEAKER INDENT"Speaker" -#define TR_BUZZER INDENT"Buzzer" -#define TR_BYTES "bytes" -#define TR_MODULE_BIND "[Bind]" -#define TR_MODULE_RANGE "[Range]" -#define TR_RESET_BTN "[Reset]" -#define TR_SET "[Set]" -#define TR_TRAINER "Trainer" -#define TR_ANTENNAPROBLEM CENTER "TX Antenna problem!" -#define TR_MODELIDUSED TR("ID already used","Model ID already used") -#define TR_MODULE INDENT "Module" -#define TR_CHANNELRANGE INDENT "Channel Range" -#define TR_LOWALARM INDENT "Low Alarm" -#define TR_CRITICALALARM INDENT "Critical Alarm" -#define TR_PERSISTENT_MAH INDENT "Store mAh" -#define TR_FAS_OFFSET TR(INDENT "FAS Ofs", INDENT "FAS Offset") - -#if defined(MAVLINK) - #define TR_MAVLINK_RC_RSSI_SCALE_LABEL "Max RSSI" - #define TR_MAVLINK_PC_RSSI_EN_LABEL "PC RSSI EN" - #define TR_MAVMENUSETUP_TITLE "Mavlink Setup" - #define TR_MAVLINK_BAUD_LABEL "Baudrate" - #define TR_MAVLINK_INFOS "INFOS" - #define TR_MAVLINK_MODE "MODE" - #define TR_MAVLINK_CUR_MODE "Current Mode" - #define TR_MAVLINK_ARMED "Armed" - #define TR_MAVLINK_BAT_MENU_TITLE "BAT RSSI" - #define TR_MAVLINK_BATTERY_LABEL "Flight Battery status" - #define TR_MAVLINK_RC_RSSI_LABEL "RC RSSI" - #define TR_MAVLINK_PC_RSSI_LABEL "PC RSSI" - #define TR_MAVLINK_NAV_MENU_TITLE "NAV" - #define TR_MAVLINK_COURSE "Course" - #define TR_MAVLINK_HEADING "Heading" - #define TR_MAVLINK_BEARING "Bearing" - #define TR_MAVLINK_ALTITUDE "Altitude" - #define TR_MAVLINK_GPS "GPS" - #define TR_MAVLINK_NO_FIX "NO Fix" - #define TR_MAVLINK_SAT "SAT" - #define TR_MAVLINK_HDOP "HDOP" - #define TR_MAVLINK_LAT "LAT" - #define TR_MAVLINK_LON "LON" -#endif - -// Taranis column headers -#define TR_PHASES_HEADERS { " Name ", " Switch ", " Trims ", " Fade In ", " Fade Out " } -#define TR_LIMITS_HEADERS { " Name ", " Offset ", " Min ", " Max ", " Direction ", " Curve ", " PPM Center ", " Symmetrical " } -#define TR_CSW_HEADERS { " Function ", " V1 ", " V2 ", " AND Switch ", " Duration ", " Delay " } - -//Taranis About screen -#define TR_ABOUTUS "ABOUT US" - -#define TR_ABOUT_OPENTX_1 "OpenTX is open source, non-" -#define TR_ABOUT_OPENTX_2 "commercial and comes with no" -#define TR_ABOUT_OPENTX_3 "warranties. It was developed" -#define TR_ABOUT_OPENTX_4 "for free. Support through" -#define TR_ABOUT_OPENTX_5 "donations is welcome!" - -#define TR_ABOUT_BERTRAND_1 "Bertrand Songis" -#define TR_ABOUT_BERTRAND_2 "OpenTX main author" -#define TR_ABOUT_BERTRAND_3 "Companion9x co-developer" - -#define TR_ABOUT_MIKE_1 "Mike Blandford" -#define TR_ABOUT_MIKE_2 "Code and drivers guru" -#define TR_ABOUT_MIKE_3 "Arguably, one of the best" -#define TR_ABOUT_MIKE_4 "Inspirational" - -#define TR_ABOUT_ROMOLO_1 "Romolo Manfredini" -#define TR_ABOUT_ROMOLO_2 "Companion9x main developer" -#define TR_ABOUT_ROMOLO_3 "" - -#define TR_ABOUT_ANDRE_1 "Andre Bernet" -#define TR_ABOUT_ANDRE_2 "Functionality, usability," -#define TR_ABOUT_ANDRE_3 "debugging, documentation" - -#define TR_ABOUT_ROB_1 "Rob Thomson" -#define TR_ABOUT_ROB_2 "openrcforums webmaster" - -#define TR_ABOUT_MARTIN_1 "Martin Hotar" -#define TR_ABOUT_MARTIN_2 "Graphics designer" - -#if defined(PCBTARANIS) - #define TR_ABOUT_HARDWARE_1 "FrSky" - #define TR_ABOUT_HARDWARE_2 "Hardware designer/producer" - #define TR_ABOUT_HARDWARE_3 "Firmware contributor" -#else - #define TR_ABOUT_HARDWARE_1 "Brent Nelson" - #define TR_ABOUT_HARDWARE_2 "Sky9x designer/producer" - #define TR_ABOUT_HARDWARE_3 "" -#endif - -#define TR_ABOUT_PARENTS_1 "Parent projects" -#define TR_ABOUT_PARENTS_2 "ersky9x (Mike Blandford)" -#define TR_ABOUT_PARENTS_3 "ER9X (Erez Raviv)" -#define TR_ABOUT_PARENTS_4 "TH9X (Thomas Husterer)" - -#define TR_CHR_SHORT 's' -#define TR_CHR_LONG 'l' -#define TR_CHR_TOGGLE 't' -#define TR_CHR_HOUR 'h' - -#define TR_BEEP_VOLUME "Beep Volume" -#define TR_WAV_VOLUME "Wav Volume" -#define TR_VARIO_VOLUME "Vario Volume" -#define TR_BG_VOLUME "Bg Volume" diff --git a/radio/src/translations/se.h b/radio/src/translations/se.h deleted file mode 100644 index 029dfba9d..000000000 --- a/radio/src/translations/se.h +++ /dev/null @@ -1,756 +0,0 @@ -/* - * Authors (alphabetical order) - * - Bertrand Songis - * - Bernet Andre - * - Kjell Kernen - * - Martin Hotar - * - Romolo Manfredini - * - * opentx is based on code named - * gruvin9x by Bryan J. Rentoul: http://code.google.com/p/gruvin9x/, - * er9x by Erez Raviv: http://code.google.com/p/er9x/, - * and the original (and ongoing) project by - * Thomas Husterer, th9x: http://code.google.com/p/th9x/ - * - * This program 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. - * - * This program 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. See the - * GNU General Public License for more details. - * - * - * - * !!!!! DO NOT EDIT se.h - EDIT se.h.txt INSTEAD !!!!!!! - * - * In order to make translations easier se.h.txt is parsed and national - * characters are replaced by bitmap codes. The result is se.h. - * - * See translate.py in the util catalog for the list of character codes - * - * !!!!! DO NOT EDIT se.h - EDIT se.h.txt INSTEAD !!!!!!! - */ - - -// NON ZERO TERMINATED STRINGS -#define LEN_OFFON "\003" -#define TR_OFFON "Av ""P\200\0" - -#define LEN_MMMINV "\003" -#define TR_MMMINV "---""INV" - -#define LEN_NCHANNELS "\004" -#define TR_NCHANNELS "\0014KN\0016KN\0018KN10KN12KN14KN16KN" - -#define LEN_VBEEPMODE "\005" -#define TR_VBEEPMODE "Tyst\0""Alarm""EjKnp""Alla\0" - -#define LEN_VBEEPLEN "\005" -#define TR_VBEEPLEN "0====""=0===""==0==""===0=""====0" - -#define LEN_VRENAVIG "\003" -#define TR_VRENAVIG "No REaREb" - -#define LEN_VBLMODE "\005" -#define TR_VBLMODE "Av\0 ""Knapp""Spak\0""B\200da\0""P\200\0 " - -#define LEN_TRNMODE "\002" -#define TR_TRNMODE "Av""+="":=" - -#define LEN_TRNCHN "\003" -#define TR_TRNCHN "KN1KN2KN3KN4" - -#define LEN_DATETIME "\005" -#define TR_DATETIME "DAG: ""TID: " - -#define LEN_VLCD "\006" -#define TR_VLCD "NormalOptrex" - -#define LEN_COUNTRYCODES TR("\002", "\007") -#define TR_COUNTRYCODES TR("US""JP""EU", "Amerika""Japan\0 ""Europa\0") - -#define LEN_VTRIMINC TR("\006","\014") -#define TR_VTRIMINC TR("Expo\0 ""xFin\0 ""Fin\0 ""Medium""Grov\0 ","Exponentiell""Extra Fin\0 ""Fin\0 ""Medium\0 ""Grov\0 ") - -#define LEN_VBEEPCOUNTDOWN "\006" -#define TR_VBEEPCOUNTDOWN "Tyst\0 Pip\0 R\202st\0 " - -#define LEN_RETA123 "\001" - -#if defined(PCBGRUVIN9X) - #if ROTARY_ENCODERS > 2 - #define TR_RETA123 "RHGS123abcd" - #else - #define TR_RETA123 "RHGS123ab" - #endif -#elif defined(PCBTARANIS) - #define TR_RETA123 "RHGS12HV" -#else - #define TR_RETA123 "RHGS123" -#endif - -#define LEN_VPROTOS "\006" - -#if defined(PXX) - #define TR_PXX "PXX\0 " -#elif defined(DSM2) || defined(IRPROTOS) - #define TR_PXX "[PXX]\0" -#else - #define TR_PXX -#endif - -#if defined(DSM2) - #define TR_DSM2 "LP45\0 ""DSM2\0 ""DSMX\0 " -#elif defined(IRPROTOS) - #define TR_DSM2 "[LP45]""[DSM2]""[DSMX]" -#else - #define TR_DSM2 -#endif - -#if defined(IRPROTOS) - #define TR_IRPROTOS "SILV TRAC09PICZ SWIFT\0" -#else - #define TR_IRPROTOS -#endif - -#if defined(CPUARM) - #define TR_XPPM -#else - #define TR_XPPM "PPM16\0""PPMsim" -#endif - -#define TR_VPROTOS "PPM\0 " TR_XPPM TR_PXX TR_DSM2 TR_IRPROTOS - -#define LEN_POSNEG "\003" -#define TR_POSNEG "Pos""Neg" - -#define LEN_VCURVEFUNC "\003" -#define TR_VCURVEFUNC "---""x>0""x<0""|x|""f>0""f<0""|f|" - -#define LEN_VMLTPX "\010" -#define TR_VMLTPX "Addera ""F\202rst\201rk""Ers\201tt " - -#define LEN_VMLTPX2 "\002" -#define TR_VMLTPX2 "+=""*="":=" - -#define LEN_VMIXTRIMS "\003" -#define TR_VMIXTRIMS "Av\0""P\200\0""Rod""Hjd""Gas""Ske" - -#define LEN_VCSWFUNC "\005" -#define TR_VCSWFUNC "---\0 ""a{x\0 ""a>x\0 ""ax""|a|b\0 ""a" - -#define LEN_VTELPROTO "\007" -#define TR_VTELPROTO "---\0 ""Hub\0 ""WSHH\202g." - -#define LEN_VOLTSRC "\003" -#define TR_VOLTSRC "---""A1\0""A2\0""FAS""Cel" - -#define LEN_VARIOSRC "\005" -#if defined(FRSKY_SPORT) - #define TR_VARIOSRC "Vario""A1\0 ""A2\0" -#else - #define TR_VARIOSRC "Alti\0""Alti+""Vario""A1\0 ""A2\0" -#endif - -#define LEN_VSCREEN "\007" -#define TR_VSCREEN "Siffror""Staplar" - -#define LEN_GPSFORMAT "\004" -#define TR_GPSFORMAT "HMS NMEA" - -#define LEN2_VTEMPLATES 13 -#define LEN_VTEMPLATES "\015" -#define TR_VTEMPLATES "Nolla Mixar\0\0""Enkel 4kanal\0""Gasklippning\0""V-Stj\201rt \0""Deltavinge \0""eCCPM \0""Helikopter \0""Servotest \0" - -#define LEN_VSWASHTYPE "\004" -#define TR_VSWASHTYPE "--- ""120 ""120X""140 ""90\0" - -#define LEN_VKEYS "\005" -#define TR_VKEYS TR(" Menu"" Exit"" Ned"" Upp""H\202ger""V\201nst", " Menu"" Exit""Enter"" Page"" Plus""Minus") - -#define LEN_VRENCODERS "\003" -#define TR_VRENCODERS "REa""REb" - -#define LEN_VSWITCHES "\003" -#define LEN_VSRCRAW "\004" - -#if defined(PCBTARANIS) - #define TR_POTS_VSRCRAW "S1\0 ""S2\0 ""LS\0 ""RS\0 " - #define TR_SW_VSRCRAW "SA\0 ""SB\0 ""SC\0 ""SD\0 ""SE\0 ""SF\0 ""SG\0 ""SH\0 " -#elif defined(EXTRA_3POS) - #define TR_POTS_VSRCRAW "P1\0 ""P2\0 " - #define TR_SW_VSRCRAW "3P1\0""3P2\0" - #define TR_9X_3POS_SWITCHES "ID0""ID1""ID2""ID3""ID4""ID5" -#else - #define TR_POTS_VSRCRAW "P1\0 ""P2\0 ""P3\0 " - #define TR_SW_VSRCRAW "3POS" - #define TR_9X_3POS_SWITCHES "ID0""ID1""ID2" -#endif - -#if defined(CPUARM) - #define TR_CUSTOMSW "CS1""CS2""CS3""CS4""CS5""CS6""CS7""CS8""CS9""CSA""CSB""CSC""CSD""CSE""CSF""CSG""CSH""CSI""CSJ""CSK""CSL""CSM""CSN""CSO""CSP""CSQ""CSR""CSS""CST""CSU""CSV""CSW" -#elif defined(PCBGRUVIN9X) || defined(CPUM2561) || defined(CPUM128) - #define TR_CUSTOMSW "CS1""CS2""CS3""CS4""CS5""CS6""CS7""CS8""CS9""CSA""CSB""CSC""CSD""CSE""CSF" -#else - #define TR_CUSTOMSW "CS1""CS2""CS3""CS4""CS5""CS6""CS7""CS8""CS9""CSA""CSB""CSC" -#endif - -#if defined(PCBTARANIS) - #define TR_VSWITCHES "SA\300""SA-""SA\301""SB\300""SB-""SB\301""SC\300""SC-""SC\301""SD\300""SD-""SD\301""SE\300""SE-""SE\301""SF\300""SF\301""SG\300""SG-""SG\301""SH\300""SH\301" TR_CUSTOMSW "One" -#else - #define TR_VSWITCHES TR_9X_3POS_SWITCHES "THR""RUD""ELE""AIL""GEA""TRN" TR_CUSTOMSW "One" -#endif - -#if defined(PCBSKY9X) - #define TR_ROTARY_ENCODERS_VSRCRAW "REnc" -#elif defined(PCBGRUVIN9X) && ROTARY_ENCODERS > 2 - #define TR_ROTARY_ENCODERS_VSRCRAW "REa ""REb ""REc ""REd " -#elif defined(PCBGRUVIN9X) && ROTARY_ENCODERS <= 2 - #define TR_ROTARY_ENCODERS_VSRCRAW "REa ""REb " -#else - #define TR_ROTARY_ENCODERS_VSRCRAW -#endif - -#if defined(HELI) - #define TR_CYC_VSRCRAW "CYK1""CYK2""CYK3" -#else - #define TR_CYC_VSRCRAW "[C1]""[C2]""[C3]" -#endif - -#define TR_VSRCRAW "---\0""Rod\0""H\202j\0""Gas\0""Ske\0" TR_POTS_VSRCRAW TR_ROTARY_ENCODERS_VSRCRAW "MAX " TR_CYC_VSRCRAW "TrmR" "TrmH" "TrmG" "TrmS" TR_SW_VSRCRAW - -#define LEN_VTMRMODES "\003" -#define TR_VTMRMODES "Av\0""ABS""GAs""GA%""GAt" - -#define LEN_VTRAINERMODES "\006" -#define TR_VTRAINERMODES "Master""Slav\0." - -#define LEN_VFAILSAFE "\011" -#define TR_VFAILSAFE "H\200ll\0 ""Special\0 ""Pulsfritt" - -#if defined(MAVLINK) - #define LEN_MAVLINK_BAUDS "\006" - #define TR_MAVLINK_BAUDS "4800 ""9600 ""14400 ""19200 ""38400 ""57600 ""76800 ""115200" - #define LEN_MAVLINK_AC_MODES "\011" - #define TR_MAVLINK_AC_MODES "Stabil ""Akrobat ""L\200s H\202jd ""Automat ""Guidad ""Hovra ""Flyg Hem ""Cirkla ""H\200ll Pos.""Landa ""OF Hovra ""Leksak A ""Leksak M ""OGILTIG " - #define LEN_MAVLINK_AP_MODES "\015" - #define TR_MAVLINK_AP_MODES "Manuell ""Cirkla ""Stabilisera ""\205vning ""Fly by Wire A""Fly by Wire A""Automatisk ""Flyg Hem ""Hovra ""Guidad ""Initialiserar""OGILTIG " -#endif - -// ZERO TERMINATED STRINGS -#define INDENT "\001" -#define LEN_INDENT 1 -#define INDENT_WIDTH (FW/2) - -#if defined(PCBTARANIS) - #define TR_ENTER "[ENTER]" -#else - #define TR_ENTER "[MENU]" -#endif - -#define TR_POPUPS TR_ENTER"\010[EXIT]" -#define OFS_EXIT sizeof(TR_ENTER) - -#define TR_MENUWHENDONE CENTER "\006" TR_ENTER " Avslutar " -#define TR_FREE "kvar" -#define TR_DELETEMODEL "Radera Modell" -#define TR_COPYINGMODEL "Kopierar Modell " -#define TR_MOVINGMODEL "Flyttar Modell " -#define TR_LOADINGMODEL "Laddar Modell " -#define TR_NAME "Namn" -#define TR_MODELNAME "Modellnamn" -#define TR_PHASENAME "Modnamn " -#define TR_MIXNAME "Mixnamn " -#define TR_EXPONAME "Exponamn " -#define TR_BITMAP "Modellikon" -#define TR_TIMER TR("Timer","Timer ") -#define TR_ELIMITS TR("Gr\201nser++","Ut\202kade Gr\201nser") -#define TR_ETRIMS TR("Trimmar++","Ut\202kade Trimmar") -#define TR_TRIMINC TR("Trimning","Trim\202kning") -#define TR_TTRACE "F\202lj Gas" -#define TR_TTRIM "Gastrim" -#define TR_BEEPCTR TR("Cent.pip", "Centerpip") -#define TR_PROTO TR(INDENT"Proto",INDENT"Protokoll") -#define TR_PPMFRAME "PPM-paket" -#define TR_MS "ms" -#define TR_SWITCH "Brytare" -#define TR_TRIMS "Trimmar" -#define TR_FADEIN "Tona In" -#define TR_FADEOUT "Tona Ut" -#define TR_DEFAULT "Standard" -#define TR_CHECKTRIMS CENTER "\006Kolla\012Trimmar" -#define OFS_CHECKTRIMS CENTER_OFS+(9*FW) -#define TR_SWASHTYPE "Swashtyp" -#define TR_COLLECTIVE "Kollektiv" -#define TR_SWASHRING "Swashring" -#define TR_ELEDIRECTION "H\202JD Riktning" -#define TR_AILDIRECTION "SKEV Riktning" -#define TR_COLDIRECTION "KOLL.Riktning" -#define TR_MODE INDENT"L\201ge" -#define TR_NOFREEEXPO "Expo saknas!" -#define TR_NOFREEMIXER "Mixer saknas!" -#define TR_INSERTMIX "Addera Mix" -#define TR_EDITMIX "Redigera Mix" -#define TR_SOURCE INDENT"K\201lla" -#define TR_WEIGHT "Vikt" -#define TR_EXPO TR("Expo","Exponentiell") -#define TR_SIDE "Sida" -#define TR_DIFFERENTIAL "Diff." -#define TR_OFFSET INDENT"Offset" -#define TR_TRIM "Trim" -#define TR_DREX "DRex" -#define TR_CURVE "Kurva" -#define TR_FLMODE TR("L\201ge","L\201gen") -#define TR_MIXWARNING "Varning" -#define TR_OFF "Av " -#define TR_MULTPX "Multpx" -#define TR_DELAYDOWN "Dr\202j Ned" -#define TR_DELAYUP "Dr\202j Upp" -#define TR_SLOWDOWN "Tr\202g Ned" -#define TR_SLOWUP "Tr\202g Upp" -#define TR_MIXER "Mixar" -#define TR_CV "KU" -#define TR_GV "GV" -#define TR_ACHANNEL "A\004kanal " -#define TR_RANGE INDENT"MinMax" -#define TR_BAR "Data" -#define TR_ALARM INDENT"Alarm" -#define TR_USRDATA "Anv\201ndardata" -#define TR_BLADES INDENT"Blad" -#define TR_SCREEN "Sk\201rm" -#define TR_SOUND_LABEL "Ljud " -#define TR_LENGTH INDENT"Tid" -#define TR_SPKRPITCH INDENT"Ton" -#define TR_HAPTIC_LABEL "Vibrator" -#define TR_HAPTICSTRENGTH INDENT"Styrka" -#define TR_CONTRAST "Kontrast" -#define TR_ALARMS_LABEL "Alarm" -#define TR_BATTERY_RANGE "Batteri-MinMax" -#define TR_BATTERYWARNING INDENT"Batteri" -#define TR_INACTIVITYALARM INDENT"Inaktivitet" -#define TR_MEMORYWARNING INDENT"Lite Minne" -#define TR_ALARMWARNING INDENT"Ljud Av" -#define TR_RENAVIG "RotEnc Navig" -#define TR_THROTTLEREVERSE "Revers.Gas" -#define TR_MINUTEBEEP INDENT"Minutpip" -#define TR_BEEPCOUNTDOWN INDENT"R\201kna Ned" -#define TR_PERSISTENT TR("J\201mt p\200 ",INDENT"Alltid P\200") -#define TR_BACKLIGHT_LABEL "Belysning" -#define TR_BLDELAY INDENT"Av efter" -#define TR_BLONBRIGHTNESS INDENT"P\200 Ljusstyrka" -#define TR_BLOFFBRIGHTNESS INDENT"Av Ljusstyrka" -#define TR_SPLASHSCREEN "Startbild" -#define TR_THROTTLEWARNING "Gasvarning" -#define TR_SWITCHWARNING TR("Bryt.varn.","Brytarvarning") -#define TR_TIMEZONE TR("Tidszon","GPS Tidszon") -#define TR_RXCHANNELORD "Kanaler i RX" -#define TR_SLAVE "Slav" -#define TR_MODESRC " L\201ge\004% K\201lla" -#define TR_MULTIPLIER "Styrka" -#define TR_CAL "Kalib." -#define TR_VTRIM "Trim- +" -#define TR_BG "BG:" -#define TR_MENUTOSTART CENTER "\006" TR_ENTER " Startar " -#define TR_SETMIDPOINT CENTER "\010Centrera Allt" -#define TR_MOVESTICKSPOTS CENTER "\004R\202r Rattar/Spakar" -#define TR_RXBATT "Rx Batt:" -#define TR_TXnRX "Tx:\0Rx:" -#define OFS_RX 4 -#define TR_ACCEL "Acc:" -#define TR_NODATA CENTER "NO DATA" -#define TR_TM1TM2 "TM1\032TM2" -#define TR_THRTHP "THR\032TH%" -#define TR_TOT "TOT" -#define TR_TMR1LATMAXUS "Tmr1Lat max\006us" -#define STR_US (STR_TMR1LATMAXUS+12) -#define TR_TMR1LATMINUS "Tmr1Lat min\006us" -#define TR_TMR1JITTERUS "Tmr1 Jitter\006us" - -#if defined(CPUARM) - #define TR_TMIXMAXMS "Tmix max\012ms" -#else - #define TR_TMIXMAXMS "Tmix max\014ms" -#endif - -#define TR_T10MSUS "T10ms\016us" -#define TR_FREESTACKMINB "Free Stack\010b" -#define TR_MENUTORESET CENTER TR_ENTER " Nollar" -#define TR_PPM "PPM" -#define TR_CH "KN" -#define TR_MODEL "Modell" -#define TR_FP "FL" -#define TR_MIX "MIX" -#define TR_EEPROMLOWMEM "EEPROM low mem" -#define TR_ALERT "\016OBS" -#define TR_PRESSANYKEYTOSKIP "Tryck ned en knapp" -#define TR_THROTTLENOTIDLE "Gasen \201r p\200slagen!" -#define TR_ALARMSDISABLED "Alarmen Avst\201ngda!" -#define TR_PRESSANYKEY TR("Tryck ned en knapp", "Tryck ned en knapp") -#define TR_BADEEPROMDATA "EEprom Datafel " -#define TR_EEPROMFORMATTING "Formaterar EEprom" -#define TR_EEPROMOVERFLOW "Fel i EEprom" -#define TR_MENURADIOSETUP "Inst\201llningar" -#define TR_MENUDATEANDTIME "Dag och Tid" -#define TR_MENUTRAINER "Trainer (PPM in)" -#define TR_MENUVERSION "Version" -#define TR_MENUDIAG TR("Brytare","Test av Brytare") -#define TR_MENUANA "Analoga V\201rden" -#define TR_MENUCALIBRATION "Kalibrering" -#define TR_TRIMS2OFFSETS "\004[Spara Trimv\201rden]" -#define TR_MENUMODELSEL TR("Modell","V\201lj Modell") -#define TR_MENUSETUP TR("V\201rden","Modellinst\201llningar") -#define TR_MENUFLIGHTPHASE "Flygl\201ge" -#define TR_MENUFLIGHTPHASES "Flygl\201gen" -#define TR_MENUHELISETUP "Helikopter" - -#if defined(PCBTARANIS) - #define TR_MENUINPUTS "INPUTS" - #define TR_MENULIMITS "Gr\201nser" -#elif defined(PPM_CENTER_ADJUSTABLE) || defined(PPM_LIMITS_SYMETRICAL) // The right menu titles for the gurus ... - #define TR_MENUINPUTS "Spakar" - #define TR_MENULIMITS "Gr\201nser" -#else - #define TR_MENUINPUTS TR("DR/Expo","DualRates/Expo") - #define TR_MENULIMITS "Gr\201nser" -#endif - -#define TR_MENUCURVES "Kurvor" -#define TR_MENUCURVE "Kurva" -#define TR_MENUCUSTOMSWITCH "Logisk Brytare" -#define TR_MENUCUSTOMSWITCHES "Logiska Brytare" -#define TR_MENUCUSTOMFUNC "BrytarFunktioner" -#define TR_MENUTELEMETRY "Telemetri" -#define TR_MENUTEMPLATES "Mallar" -#define TR_MENUSTAT "Statistik" -#define TR_MENUDEBUG "Debug" -#define TR_RXNUM "RxNum" -#define TR_SYNCMENU "Synk [MENU]" -#define TR_LIMIT INDENT"Niv\200" -#define TR_MINRSSI "Min Rssi" -#define TR_LATITUDE "Breddgrad" -#define TR_LONGITUDE "L\201ngdgrad" -#define TR_GPSCOORD TR("GPS-Koordinater", "GPS-koordinatsystem") -#define TR_VARIO TR("Vario", "Variometer") -#define TR_SHUTDOWN "ST\201NGER AV" -#define TR_BATT_CALIB "Kalib. Batteri" -#define TR_CURRENT_CALIB "Kalib. Str\202m" -#define TR_VOLTAGE INDENT"Volt" -#define TR_CURRENT INDENT"Ampere" -#define TR_SELECT_MODEL "V\201lj Modell" -#define TR_CREATE_MODEL "Skapa Modell" -#define TR_COPY_MODEL "Kopiera Modell" -#define TR_MOVE_MODEL "Flytta Modell" -#define TR_BACKUP_MODEL "Modell-backup" -#define TR_DELETE_MODEL "Ta Bort Modell" -#define TR_RESTORE_MODEL "\200terst\201ll Modell" -#define TR_SDCARD_ERROR "SDCARD-fel" -#define TR_NO_SDCARD "SDCARD saknas" -#define TR_INCOMPATIBLE "Inkompatibel" -#define TR_WARNING "VARNING" -#define TR_EEPROMWARN "EEPROM" -#define TR_THROTTLEWARN "GAS" -#define TR_ALARMSWARN "ALARM" -#define TR_SWITCHWARN "BRYTARE" -#define TR_INVERT_THR TR("Revers.Gas?", "Reversera Gasen?") -#define TR_SPEAKER_VOLUME INDENT "Volym" -#define TR_LCD "LCD" -#define TR_BRIGHTNESS INDENT "Ljusstyrka" -#define TR_CPU_TEMP "CPU temp.\016>" -#define TR_CPU_CURRENT "Str\202m\022>" -#define TR_CPU_MAH "F\202rbrukn." -#define TR_COPROC "CoProc." -#define TR_COPROC_TEMP "MB temp. \016>" -#define TR_CAPAWARNING INDENT "L\200g Kapacitet" -#define TR_TEMPWARNING TR(INDENT "H\202g Temp ", INDENT "H\202g Temperatur") -#define TR_FUNC "Funk" -#define TR_V1 "V1" -#define TR_V2 "V2" -#define TR_DURATION "Tidl\201ngd" -#define TR_DELAY "F\202rdr\202j" -#define TR_SD_CARD "SD-kort" -#define TR_SDHC_CARD "SD/HC-kort" -#define TR_NO_SOUNDS_ON_SD "Inga ljud i SD" -#define TR_NO_MODELS_ON_SD "Ingen modell i SD" -#define TR_NO_BITMAPS_ON_SD "Ikoner saknas p\200 SD" -#define TR_PLAY_FILE "Spela" -#define TR_DELETE_FILE "Radera" -#define TR_COPY_FILE "Kopia" -#define TR_RENAME_FILE "Byt namn" -#define TR_ASSIGN_BITMAP "Tilldela ikon" -#define TR_REMOVED " raderad" -#define TR_SD_INFO "Information" -#define TR_SD_FORMAT "Format" -#define TR_NA "N/A" -#define TR_HARDWARE "H\200rdvara" -#define TR_FORMATTING "Formaterar..." -#define TR_TEMP_CALIB "Temp.kalib." -#define TR_TIME "Tid " -#define TR_BAUDRATE "BT Baudrate" -#define TR_SD_INFO_TITLE "SD INFO" -#define TR_SD_TYPE "Typ: " -#define TR_SD_SPEED "Hastighet:" -#define TR_SD_SECTORS "Sektorer:" -#define TR_SD_SIZE "Strl:" -#define TR_TYPE "Typ " -#define TR_GLOBAL_VARS "Globala Variabler" -#define TR_GLOBAL_VAR "Global Variabel" -#define TR_MENUGLOBALVARS "Globala Variabler" -#define TR_OWN "Egen" -#define TR_DATE "Datum" -#define TR_ROTARY_ENCODER "R.Enks" -#define TR_CHANNELS_MONITOR "Kanal\202versikt" -#define TR_INTERNALRF "Intern RF" -#define TR_EXTERNALRF "Extern RF" -#define TR_FAILSAFE "Failsafe-l\201ge" -#define TR_FAILSAFESET "FailsafeInst\201llning" -#define TR_COUNTRYCODE "Landskod" -#define TR_VOICELANG "R\202st-spr\200k" -#define TR_UNITSSYSTEM "Enheter" -#define TR_EDIT "Redigera" -#define TR_INSERT_BEFORE "Addera F\202re" -#define TR_INSERT_AFTER "Addera Efter" -#define TR_COPY "Kopiera" -#define TR_MOVE "Flytta" -#define TR_PASTE "Infoga" -#define TR_DELETE "Radera" -#define TR_INSERT "Addera" -#define TR_RESET_FLIGHT "Nollst\201ll Flygning" -#define TR_RESET_TIMER1 "Nollst\201ll Timer1" -#define TR_RESET_TIMER2 "Nollst\201ll Timer2" -#define TR_RESET_TELEMETRY "Nollst\201ll Telemetri" -#define TR_STATISTICS "Statistik" -#define TR_ABOUT_US "Om Oss" -#define TR_AND_SWITCH "AND Brytare" -#define TR_CF "BF" -#define TR_SPEAKER INDENT"H\202gtalare" -#define TR_BUZZER INDENT"Summer" -#define TR_BYTES "bytes" -#define TR_MODULE_BIND "[Bind]" -#define TR_MODULE_RANGE "[Testa]" -#define TR_RESET_BTN "[Nollst\201ll]" -#define TR_SET "[Spara]" -#define TR_TRAINER "Trainer" -#define TR_ANTENNAPROBLEM CENTER "Fel p\200 TX-antennen" -#define TR_MODELIDUSED TR("ID finns redan","ModellID anv\201nds redan") -#define TR_MODULE INDENT "Modul" -#define TR_CHANNELRANGE INDENT "Kanalomr\200de" -#define TR_LOWALARM INDENT "L\200g-alarm" -#define TR_CRITICALALARM INDENT "Kritiskt alarm" -#define TR_PERSISTENT_MAH INDENT "Store mAh" -#define TR_FAS_OFFSET TR(INDENT "FAS Ofs", INDENT "FAS Offset") - -#if defined(MAVLINK) - #define TR_MAVLINK_RC_RSSI_SCALE_LABEL "Max RSSI" - #define TR_MAVLINK_PC_RSSI_EN_LABEL "PC RSSI EN" - #define TR_MAVMENUSETUP_TITLE "MavlinkInst\201llningar" - #define TR_MAVLINK_BAUD_LABEL "Baudrate" - #define TR_MAVLINK_INFOS "INFOS" - #define TR_MAVLINK_MODE "L\204GE" - #define TR_MAVLINK_CUR_MODE "Nuvarande L\201ge" - #define TR_MAVLINK_ARMED "Os\201krad" - #define TR_MAVLINK_BAT_MENU_TITLE "BAT RSSI" - #define TR_MAVLINK_BATTERY_LABEL "Status f\202r flygbatteri" - #define TR_MAVLINK_RC_RSSI_LABEL "RC RSSI" - #define TR_MAVLINK_PC_RSSI_LABEL "PC RSSI" - #define TR_MAVLINK_NAV_MENU_TITLE "NAV" - #define TR_MAVLINK_COURSE "Kurs" - #define TR_MAVLINK_HEADING "Riktning" - #define TR_MAVLINK_BEARING "B\201ring" - #define TR_MAVLINK_ALTITUDE "H\202jd" - #define TR_MAVLINK_GPS "GPS" - #define TR_MAVLINK_NO_FIX "NO Fix" - #define TR_MAVLINK_SAT "SAT" - #define TR_MAVLINK_HDOP "HDOP" - #define TR_MAVLINK_LAT "LAT" - #define TR_MAVLINK_LON "LON" -#endif - - - -// Taranis column headers -#define TR_PHASES_HEADERS { " Namn ", " Brytare ", " Trimmar ", " Tona Upp ", " Tona Ned " } -#define TR_LIMITS_HEADERS { " Namn ", " Offset ", " Min ", " Max ", " Riktning ", " PPM-centrum ", " Symmetriskt " } -#define TR_CSW_HEADERS { " Funktion ", " V1 ", " V2 ", " AND Brytare ", " Tidsl\201ngd ", " F\202rdr\202j " } - -// About screen -#define TR_ABOUTUS "Om Oss" - -#define TR_ABOUT_OPENTX_1 "OpenTX \201r icke-kommersiell," -#define TR_ABOUT_OPENTX_2 "\202ppen programvara utan" -#define TR_ABOUT_OPENTX_3 "garantier som uvecklas helt" -#define TR_ABOUT_OPENTX_4 "ideellt. St\202d i form av" -#define TR_ABOUT_OPENTX_5 "donationer v\201lkomnas!" - -#define TR_ABOUT_BERTRAND_1 "Bertrand Songis" -#define TR_ABOUT_BERTRAND_2 "Chefsutvecklare av OpenTX" -#define TR_ABOUT_BERTRAND_3 "Hj\201lputvecklare av Companion9x" - -#define TR_ABOUT_MIKE_1 "Mike Blandford" -#define TR_ABOUT_MIKE_2 "Kod och drivrutins-guru" -#define TR_ABOUT_MIKE_3 "Stor inspirationsk\201lla" -#define TR_ABOUT_MIKE_4 "" - -#define TR_ABOUT_ROMOLO_1 "Romolo Manfredini" -#define TR_ABOUT_ROMOLO_2 "Chefsutvecklare av Companion9x" -#define TR_ABOUT_ROMOLO_3 "" - -#define TR_ABOUT_ANDRE_1 "Andre Bernet" -#define TR_ABOUT_ANDRE_2 "Funktionalitet, Anv\201ndbarhet," -#define TR_ABOUT_ANDRE_3 "Fels\202kning, Dokumentation" - -#define TR_ABOUT_ROB_1 "Rob Thomson" -#define TR_ABOUT_ROB_2 "Webmaster f\202r openRCforums" - -#define TR_ABOUT_MARTIN_1 "Martin Hotar" -#define TR_ABOUT_MARTIN_2 "Grafikdesigner" - -#if defined(PCBTARANIS) - #define TR_ABOUT_HARDWARE_1 "FrSky" - #define TR_ABOUT_HARDWARE_2 "H\200rdvarudesign/producent" - #define TR_ABOUT_HARDWARE_3 "" -#else - #define TR_ABOUT_HARDWARE_1 "Brent Nelson" - #define TR_ABOUT_HARDWARE_2 "Sky9x design/producent" - #define TR_ABOUT_HARDWARE_3 "" -#endif - -#define TR_ABOUT_PARENTS_1 "Ursprungsprojekt" -#define TR_ABOUT_PARENTS_2 "ersky9x (Mike Blandford)" -#define TR_ABOUT_PARENTS_3 "ER9X (Erez Raviv)" -#define TR_ABOUT_PARENTS_4 "TH9X (Thomas Husterer)" - -#define TR_CHR_SHORT 's' -#define TR_CHR_LONG 'l' -#define TR_CHR_TOGGLE 't' -#define TR_CHR_HOUR 'h' - -#define TR_BEEP_VOLUME "Volym Pip" -#define TR_WAV_VOLUME "Volym Wav" -#define TR_VARIO_VOLUME "Volym Vario" -#define TR_BG_VOLUME "Volym Bg" From fb705d66dfdbe745667bf09eab0bc2107590a4cb Mon Sep 17 00:00:00 2001 From: Kjell Kernen Date: Wed, 15 Jan 2014 17:32:49 +0100 Subject: [PATCH 136/308] New, flat icons for everything. Optimized for 32x32. Work needed to optimize for 16x16 used in menus. --- companion/src/companion9x.qrc | 1 + companion/src/images/add.png | Bin 5539 -> 224 bytes companion/src/images/arrow-left.png | Bin 14365 -> 436 bytes companion/src/images/arrow-right.png | Bin 14387 -> 432 bytes companion/src/images/changelog.png | Bin 19817 -> 309 bytes companion/src/images/clear.png | Bin 9656 -> 338 bytes companion/src/images/compare.png | Bin 2163 -> 884 bytes companion/src/images/configure.png | Bin 13703 -> 497 bytes companion/src/images/contributors.png | Bin 12829 -> 1028 bytes companion/src/images/copy.png | Bin 1338 -> 324 bytes companion/src/images/currentmodel.png | Bin 10941 -> 635 bytes companion/src/images/cut.png | Bin 1323 -> 4276 bytes companion/src/images/duplicate.png | Bin 6684 -> 482 bytes companion/src/images/edit.png | Bin 9626 -> 539 bytes companion/src/images/er9x_manual.png | Bin 5765 -> 0 bytes companion/src/images/exit.png | Bin 10601 -> 869 bytes companion/src/images/fuses.png | Bin 11183 -> 878 bytes companion/src/images/information.png | Bin 0 -> 390 bytes companion/src/images/library.png | Bin 16242 -> 278 bytes companion/src/images/list.png | Bin 20365 -> 398 bytes companion/src/images/logs.png | Bin 3302 -> 633 bytes companion/src/images/movedown.png | Bin 10774 -> 493 bytes companion/src/images/moveup.png | Bin 10463 -> 500 bytes companion/src/images/new.png | Bin 852 -> 319 bytes companion/src/images/open.png | Bin 2073 -> 438 bytes companion/src/images/paste.png | Bin 1645 -> 480 bytes companion/src/images/preferences.png | Bin 11170 -> 741 bytes companion/src/images/print.png | Bin 7282 -> 308 bytes companion/src/images/profiles.png | Bin 2312 -> 224 bytes companion/src/images/read_eeprom.png | Bin 18174 -> 437 bytes companion/src/images/read_eeprom_file.png | Bin 27588 -> 456 bytes companion/src/images/read_flash.png | Bin 25584 -> 763 bytes companion/src/images/recentdocument.png | Bin 9874 -> 1013 bytes companion/src/images/save.png | Bin 5753 -> 280 bytes companion/src/images/saveas.png | Bin 6839 -> 353 bytes companion/src/images/simulate.png | Bin 10065 -> 399 bytes companion/src/images/switch_dir.png | Bin 6210 -> 716 bytes companion/src/images/update.png | Bin 12332 -> 603 bytes companion/src/images/wizard.png | Bin 13364 -> 2423 bytes companion/src/images/write_eeprom.png | Bin 17348 -> 461 bytes companion/src/images/write_eeprom_file.png | Bin 26192 -> 295 bytes companion/src/images/write_flash.png | Bin 21730 -> 785 bytes companion/src/mainwindow.cpp | 8 ++++---- 43 files changed, 5 insertions(+), 4 deletions(-) delete mode 100644 companion/src/images/er9x_manual.png create mode 100644 companion/src/images/information.png diff --git a/companion/src/companion9x.qrc b/companion/src/companion9x.qrc index 6cd5e7faa..6f84186da 100644 --- a/companion/src/companion9x.qrc +++ b/companion/src/companion9x.qrc @@ -40,6 +40,7 @@ images/copy.png images/cut.png images/currentmodel.png + images/information.png images/new.png images/open.png images/paste.png diff --git a/companion/src/images/add.png b/companion/src/images/add.png index 24cc027da8949678a6a58c8d3c106cc95ba45ca1..7654ee2c3ab7ad25c7d649f32ec27c52bb5bd739 100644 GIT binary patch literal 224 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 diff --git a/companion/src/images/arrow-left.png b/companion/src/images/arrow-left.png index 759e589505ca108d54c3de72e817c03b091b3c26..8d489600f0150fc65c13f79237680cebd84485d7 100644 GIT binary patch delta 419 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 literal 14387 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 literal 19817 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 Zo1flzEOlmsGbq#;JYD@<);T3K0RUPqe%k;5 literal 9656 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 diff --git a/companion/src/images/contributors.png b/companion/src/images/contributors.png index 276949198334835d99664dec55ff8a6de3120063..228c68842aa7e8489455373094837008e6bec798 100644 GIT binary patch literal 1028 zcmV+f1pE7mP)VGd000McNliru-T@B`6D_RC3Yq`_1CdEY zK~#9!?V3$UR8bVie@>CaSPh{@RuWM{L?Dq_lm&tmM79WbwThx5+yxcVrbPt>QM7PV zE{dR46hefHAfyjk^a0gs2t+2#$`7;*9b3$K@Q|4|_m1z)dr!^}E;DfNJ@4KByYJj{ z&I~Auq9}@@D2k#eilQtiDgw5j0@{E^pc42Ad<6P{DN9=kpb2ONYJfk$H{cmC5J&M( z1Eaufo|Xo7SlHSMyf0wuFVGb?aZVIijJpj1^#-=;fsBE@&bWxP68LSfpjn{Dz+R7` zt#P?_-|5k}4_Fl7wL=kTt&ihv7hDqufyOMy zd%a?n0be^5fu=3TPkQwIu(VYbbqC!5{4;c@={!y~Db3Ap;De#fEYKWffsPt3q#vl3 zIW53rIi}qUeFYqH3HRL4_VFkSR1JJBvVaL-jf_8Mu;6Plc9qQa8ar6Tr$vHfk;vBx z4)NZZLlWQE1a;2XLM4)$z(||~azvWTQ%Pi(TiU9W_64|~r+*}< zMI_4n>RpgP(l!7bliiaAu9owL6CwGic3{TRryVOX{fL}ENphvp#yovTtYv#4r&uxj1HknH52)8|iOzzi@v}FBD z4d#rNcu@EnP^JUeHD0kz12Ms`Xxp|8#YLq45X5n3?~#v#QXxK^syGO=piqHSAQdQ3 y76)MSA+S26^KLZ*U+ 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 diff --git a/companion/src/images/copy.png b/companion/src/images/copy.png index 2aeb28288f58ddffdd1d75115f170c5bf2773814..6a551d81dafa3e725a97308c0191217a7a029e3b 100644 GIT binary patch literal 324 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!Y)RhkE)4%caKYZ?lYt_f1s;*b z3=DjSL74G){)!Z!AbW|YuPggKMt&Y)iCcZo<4m z24Pts3P|jKV4ArrNQZsr&q&3Fam_48Lh`MiYI|sB6GiaYuZZ? zasnKC=d9Ws*vOa?K!llv;~9}LDH=;*C6q)snnH7j#=aB8{{oN_lX)cZ$XJrkAB0_u z!sQ7f5=*1>!|zQrby)$h>)1Bcke)jH%(>@ZE)hRgo<&7f4Jw)5udTzKv5Ch3thOcm zx#)*$6jZ zxjE=2CQwjNfFaFqeBMc>`320FTpYmRPeJsB@I$Z8%>Zil0#HL{*yW1HLMx&9BQ>hew>g`42C!b-4K{%G& zPNKpdi`TSeSQ5jt zz}D6l-wA<00HP?u@AqSEZ4IXsmC*dI=c&nj!3&r@K%3kE+d(!rH~Ds?RumQ0==)XR zsU3kw0Ovao0D#OTfFv_dBoZhqui^lIxB!co0iZTo)dw&I|ClF}JUvZG$*D>XptrLF zi9N;m7cj8^d~x*v0Ho^4m=ue}P^PGYdPu;S8Mtc&=A4=P=T~F|kkV6X0*FSV+&mNt zp}4dH*9HaLW{2dU0UTt+1SmUX21q@ea}t@;xj-PrWmUM?EueooW3GLWY2c%FnE?J> zJ*6hCuC8*3w@NB-xmUnF8@PU+0q)ELXD;m%K&qWYi;j}haZKLWGrnrG9>`fBl6@D%o`^aXzvlAyk=W}Pc`B^ahku5Y4`j}CIOJCBx$u% zLNX5qgK)WA+>l;M=(ES;f!poI@e{8lpM9a6Ogos0nT|fmct-%0O2q-B6)w#;8B$U@ z_bIi*;ou_U#l=Mq_2TiDT=X8flj*JiEiEl>>0qJM(w7a5mzS5}^Z8)2+4y~FX^BG+ z0F4U^3(c|s(4vx3lM#*SPTzP`J2hanT6y)<3jNMtFeLKw^6s-|9N8B@Q&W>$nrBK+ zA`_~b#ukg2H$b09M@J)VZEfEC{CpGp+d-zXy_)|gKy!05p8`rp5L7=^KR-Xu>(*#A zk-EA%=fkvJOdl{E&Bk~~0Hsptb~>HBVoFMHK9sb+zTTOWlOvfHXH#`n0F8}}Zi~f& wfq{WYZEdYHH#b*S)7=30e@0BgL78sX-$OZ87=>`i1ONa407*qoM6N<$g6NH5LI3~& diff --git a/companion/src/images/currentmodel.png b/companion/src/images/currentmodel.png index 35a37b7667d5afecc91e54a0a6300d5aa41da84b..9808c2a8d58e8f1bc4109504976043abcfc2a379 100644 GIT binary patch literal 635 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 diff --git a/companion/src/images/cut.png b/companion/src/images/cut.png index 54638e9386dc8af40dcc9a3ee2f57c62e248e406..9e1e1d7f1b6b6c24be30236dbd2e7be6f6f5a156 100644 GIT binary patch literal 4276 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 diff --git a/companion/src/images/duplicate.png b/companion/src/images/duplicate.png index 811691d98b53eecf99b34f425e2be025e88a4316..5e4cfcef090af598372d0246a608e529d6a0db91 100644 GIT binary patch literal 482 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!Y)RhkE)4%caKYZ?lYt_f1s;*b z3=DjSL74G){)!Z!AbW|YuPggKMt%WKQN>$Arx_R+^F3W0Ln>~)ouTW;>?qP;&vEcd z5(g)fcNM2k{{c<`i*<~vW=RJe6*ORJSB!{}UAfw^L~yOr=G1y?>&x%G=iQoq_h!EO z?|U`^f>1E=oQ9Um)jd`pnR-N~G%lIZG--lJ^o0kittnehX8%%T)7G4};CYD3QK6DK zT}vXGJY0i(96dd{bTd9oYE#I#FsV)Hg}rC5a=SOdeNq_v^=F6V73anpG z1}eS2^VL4v!1{$)1gqA0lj(Qwy3U->aN6PA!-?UHurdike#yhD;Pfgvr!0^LW$L1MJ7jS-%JyDrmaO8yF zg|o|k{;vMJ@u=s%V8@j_Z+}N!Kd0X1dbD4l^!9R-z>o<|E-;W%|ATcGZ-k4{e>pE; PY%qAb`njxgN@xNABVfr~ literal 6684 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 Y_MzOu6>Ef9fzim|>FVdQ&MBb@06b&c&;S4c literal 9626 zcmWlfXHe5m6M%mSA%q@!*U-Ck1f(Pg(mNFo&0JnoK=-Fp#z5!(@7@9gc}0}7~lW0b)!Fc>mf z5(!fEdU7Q(VY^A-c=u1&QQtvtSap7NiVKbUwbXtifI=DtrG{t5AlJq#ipD&5&*qgI z4kE_p91Y*P#r7sGobrY5F@HV z;9rO<70j!86UA1psdK$^`R67V{j$e93_+P=|a&Y{b&3`aoeuz+#Mi8*ll z`sG~EI139)^WT+RUt?BF;yDH8sFzK$rHzj&Kw6y+PUG2-|4Sb*4M31WI(D97lQigf z?B@)|D;-f}`UZ|$z8sTF9EcGM8l3zCL?Z$ZN&j`%{|Z_wO+=#5uN*AIXf1CU#RTa!YtZ?$K~ z+u|7X8xT?me*Tf)KQLBSX;{Gcp%A?8te5u6Ld|yU%$+BH4g~E7vcuZ|Lqn>9f`YfC zm{`tt2=5`Yt({##T^)0pq!Kk;BvF+wIM#(QyGghaaC0uoNDfPyuzv6Xz?_o=-FJR~LrcTl*Kga~^Lzny=?XNW>vn@om;X8jH`$64YRMlu-y6A@_$;rw z$4-HAVpo0!LKlhf@-oo`1qNQz5t`IA#EVch9Sq#6dN?J!LvG6VlfG^T$8tL;+CAd> z5t8k3m$og)2aGz==YdGETB0J!kSQ)qa3&fCCelu3&_cw$mc4J(_4Dtws1T-0Le8(tntC+S&?a1G=NYTp{pHo+uPf_lZ%t{^XTYk*V9`{p~okF z_Um7WPF&BzbCGBiTq%tbNr7E;j;5qSWKjU|)L>`u=vC)1-6Rf3bJ~O7-#k@L4l==w zyzl3eYboJ_WeH|dDn=V^i2e&g0Kv3%xVcnFEe74XDh zvIsO_XWXVS3sRaMNP|P7)yj9n&tD9wyyy8UgT@ekD#(D|fxtwMb4(Wc?OkpPlnDqD zk`}`pYw}jD=vSP~iObHdaXPok3*pm^A%VP4DnmO@+;P6Qz|zXB-sYvc;GqM~%)=;! zqM^FljWfc%sO569!M0~z4Zd{}KE^X$EeQri#0r(RKM zUugQ@rFYq>zi$+{(D;;Gq=p_Yi1!y+I<82)$CR zO(5C)kajw5r9BbOaY$vR^nL|00T-NlU$agEa$UJ&J6?&j)Dn`Sx`NW-0#bl3$IGJBX|)RMfoO3^RLAZ@i=6tMg2j^G{I&uM#L_@v-Wzw48NmK--%IBvwHzX(R4qjlSFMw?3LJ z00BVhQV?UNgmlRvKQ)zLkx5rA@2ALKmhB89_rMg`+Ojf(Vxo{II${8%aDyZ7IQUqz zCQNI>s_>1;vS~=@?+%#c*zpS}6skoPWnsh2dHwqJFP(sxt8@WDo2r=Oq-3GYq}4=u z!V_WPFDe92?t|bIAw)}6xc?>sAcF*9eTmCo4pr$j*f}_=H=fXi2=V4{DqEEOQtR#}g1{%fi~I4nH^{;MYVWmxJin8aO!82j6+oq16hiYeQG7NxV9k}%1B^uW zupN5%sX9$%vNyjL10YSE9~y>{xg|c%EwY3^SY(O<4JAZl=o2-T^rXtapfkdCZqWY> zB?wf}BrB>DV<8XNZ9=t}48Q45Obgxl>4LD7>VZf%e?fftF-2J$i{2C8@w!^kbL__e?gGQbtG4dQttrO(BYm47jr#zf`3qf z=?YqgLyOSj^2T$kU3IABc~97OI0y;mC#DlV^c{#kgH&+Ut9Amw3KQ^y0#p*cp9R+C zIXtJkx{&?`$;iikkIkTdb_KpvVcJmS%>G=|Ix{mfcy>o`&2qfN;(g!NOBujD=?%Rp z#zUP9AqnpqXNRwCAef=V);ssxdoT=G6*3fN0JJjnRnb|kPXtZDe<8G^&8IA9kI%g2 z-MhyMIo)+ZyAA{wFmd7EJaA%cjCL`Q8?>0e{!k{L zw8QN*H7h&2nR^x%a^_}cG9F)MZp**w` zjg>|Qi2tGJcBHsE?K^zr!zX(M&yH9l#68GWuh9=OU%q>zt&+QzZ%vvH+r21e2-i~> zj+TDe4aE<6o0!mZtN6owS}%^pGo>6OwPnA@8_B2V6puYO(xjhbOiEKJ@Hh&Z3z)cR z@gbGP`RV$BHo1TW1zAVXcKwyz^qCD)ViZQg zzZMyb@SK+U6-nC&VL5g<)rPeOZx-{P2QTlh`@Mb34Y3TYSun|@ad}}0DgpW1STqRl zmY=)-EwpU+tYd)s612AdBely5k_#)ttl|i5w*$NVg#n!DABhmUWJJ5KC$N~f z7Yq<%2ukmYZAsDktpac|>TV*(wGaGgz1MWkEDyuhSrI3;-v7jzUuR=>1zUP=icU(; zX0xW7Hgw;jy2Zx&Vl4Ws%AOsmWl zR1oO#2r-T1gMa)Z_;tROnqb|HAh zebjct4ExD|i}cMk#isswEK5h#-bNWOPqdWT<0P?%vtMOu=LM+pKHZj zx_;|DB2&?b0>!;${)>%-CUVHUlX826S z|MOnh19wYK7oA;n`1aBWYKXC%E}jN=pJ$6Wb7>Pp*>lB=^2>}yT#tRFaD;lDFpBKZ zcT^|C(9d=WDwHV!_dS0<#TS_QkLdCk-apmSgntkUfP;vG{5PDZ@)0mw;>5wL5be#W z^VccVS{2Y=uGj6M*+xFu3Q`!Eqz;`7TAGx$MvAA44gz8*>v1*8IQr}cKpJv^ZuJp)q zu(Wc#ac?-Y&+5||NP3LGY2zm z=0nadUju57kZ3s>;v>)4Af$vv09={}az%gN#Sv5RJ4){@fAOte@c@Oi6w56k6Urfz!=2jL-E2%#rggp z7!W6hl8cVEt>nmrA9nW+$J2HQ1k6%62BN_3vB$WvW?aflj#-e_FVCA`$9?R2b&O=_ z&YH=*>;_ydD+Ri6t-!IYMwHU`F1}zW`$Iai>SxJU#GZ*3Q$7^eeA?ltwfJv6a@5cf z+kraY*CyR%06zCF$?)6YEuiYh*)==eLz8Xu*8p%X$`y*#v~u&Yw4}KF4}l3roW2uv zK7CXrDhb044sOQdXTY3f=+EVs*4{0$K>B8;6ke=;nPZEQv8A+lJh+A)%(e6(dSo4g z=LnyR!m@6hr@(HA507G+&_)6CU;q-!Kqe6YO<#aJ5!MasvGQrAAaCd$6r6iNuo5sb>B zN`&yX=L}Wk%A)&aVOCun)AkE zF6qWEd_t`M-)_8P&FFJl=|_R=$N3z_!TT?2U8Gf1!9175L$W2+c|&T&b7n>5E9QrO z0-O+P`3Lb}tUdytbzy8|3jw;Ww+Zddb@DIxtsd;S6O$HxyqB8W6U#x+|t;B69I?cGC*Exu!IFxBYLly z&5T@Wb~#&`@Np6-v`PXGSPO@C{cu)}x=4KL;o84k} zd=Lf!-zRehqq=tE5%uGSqj%)JxqM3WZgQ(~`QXv;AE73XZ<=mx8*LN+T5{6aYb`HE zJ)_5E#f2!qxd}PyJd|9oW@8XaR29czzcu*QEb4jP?Sq|+=4Ft}WLNc6)^*!2s;Uov zj(n{D=dGi~RiZfqEpEpeo~ELdh*;Bv#|y!k7hsE{41NK#uSYNQye5XdhuM)8_VogD z*2n=6!bVj)xe-&4?VFV>k|fwTny`V?gW}i&;PTNJOU>@qJGGQ9|?>x+{$kyXRKmdsAnTHrsPYkK3%01yWAQsRA z!Lc#n5c)jqh_p8;!4# z6&%2S2Hs-NB_pArw0?*Dj~~rC$cRVoOk4G=AK?k?jIf@n@2pS&Eo z%Zw*1Fqhrv?X6Y(`%@Im95#90BYAL243S5dE`eFBe;R9$4O?v(#ep8v0;sfQ+tSs9 zIi8_c|7q$j51$aG~gRr*MkaKguI#K8f zCf&V#C>#240Kkh)Yo)o;DZID2PB;xnmwv zC4SuLt1V}NW@3^NwQ^A;%8yM-_s@3^wWzWHf;Tk4Z%PH>d7N`d3sTO=ZVmZVu^6*BkBlM-A_e)NQ9!U%U~%XR7!X+QZM?zr-O@?xFJg1 z%#)s4pi4}UeLzOIW|NB(npB-XM+40k6O-nrP&F4v8)e~W(S&ROh1@_~g9+)K2CfCn zM~C8J;0SN&sVOkAns;wh0wl1kr};RD)Iga59P)>2XAlNDtkm3iv?oy{5){x_@X%mBum5yG0KS#TEeIb$Nawg~#2 zLdBHjFuKEDR{Uh?xdMNN9_zhQ2h2+YC>poMJ1iCS4nDcH*=vRurbbjVV~-LSfTlne z3T)3uY0?68sq%ti@h!L{lH1b$RO~o>`U@ZI^l_D1IpS7?J42FkYd(v5MjVh`R>)v} zUz*Pi*qc9R$=^>enU&9{PBWtk&cxt02%#Niq^P53_%ANJ5S*;YX>R)K{`(|>U|JxO zhXzztpX3zo4+w=0;%c4E26j7LhLb%|FJ7lDR{0G8q{)VKKJy`WTGSOG*4T#~-@RPt2_G5AMzYR-_w~1w&F_O`o^s< zz*`uHEU}n7ZNJcL*3GVnnK@pV*9(K^Pg9F4D3wM( z0`eyh#`)XVqfz1c1N(!9WVgeSUH;82x-S*+%r*j4qgfQUleO^@c34R-@I>}1@v}8x zFh`XYzH61`t^x8yl3|FD%o-Kg)cv7HzaiY7mGN@=FPca7HnmHA9NelyKS_;VMo!!Z zkhxTM&07+ueXUYhDs0Ts?_>J=5u=UxNS*Cj&Tx+lI>p1{MyI_k2Bov(C#0rBR#Cd@(+Y-#Vl z(%3q%hkFP)&XJSuT+9co1+2MsLC2DuHYTqPKogy)(V46tG1WUGXzfO%;cs=!fsxN4 z_~J?^NnSwN!vxQPMYrBTcaOm=vtE=B+Q0kWEiGdj9M-@FiV^OFE9ih_CL4nic8z?_+a{9m=%V&PUnT z+1zUB0M1JWOPC4NC}%Aj*%)CQ`>Nma^SSe$q&sdPy3v%a0(!TRMrc@3>67oxt&B6Y z#~J(9WOZ~af^V}L!w8B@0pK48sC1ove#k2UhBsyngWn3{z<=A0zxQUo-~LjE(U)== zcielJ$EGc_@prP^lM|^QXn&*P{R!Q0ZkvdO+WT1AsxK4v{$$C4`Pd!)#)5Kx+VIWc z)q>LR^!#s^Os%ZQxfCCEg)W6jCWna|KF+*N^%hqz3nstJ%D)D^E0-s%?K_%C%^snV zJtW(#KI~S#y0+~Q5fO2o6)M}DlS)9^B?;CrmQt$$I*(Y+f8AWbG@mWRYLi8uZ@a!^ zlX9R@cMP;bS!5HefOKwA5P~fl)fcwlax~43$0AHU%28|J(+#NEpR=24>b5p^|$V^Hy}>kDgJBuX5Z=8U}FGX{*VM% z?-;+`ymzlHPH?!lXze2A@I_C$u*o+p83n05fvL)W-8^{x-7C`P8J{I|$j?|dCDWQ7 zVEKh&4W~I$!Z&CC(SF_}U|4mQ{LbH8e=-dJ0jA!UkcE*gN#3kzq*L^sZg*tKrH;Nw z>p_F4_bfv{<@h!Q#T+YTl?4l0p)C?@0gPz<{Tr7#%02DSUzET2yloI|yQzkt+E=y> zhm+mzLZr$1UZ1e%FI|Po9r8!XgsMj{vre=u=cn5jPVfs}cv43Xt!5)FdFpY>l=SEp zl<;}Dn6+L_w#%ILQ+11VhP!0a$v+o?@FhU^czb@T@&x_vp`jM1lrg_WsW(q7@5B6p zi00yhmCeFdHgfooV-I48pW!=!E~@gjz&8cRxEkTV)t`g!`5 z=SOgHCA^q3^lqAIFl*o4Dx2+a1Fyvo7Gj5V!(;-Wrg3_XM$PPYUYzaR5RJSEO@bH2 zuNaVJYzRpF(Q?OfRXt9dGAyU1@W8DX_*@Qkf0(xt)Y+_VGLWvF|7?9I3a_s=8eM^( zQI+U>Kn>6^ukb?5O>xThz>`CZ$xhJLdmr!i8Wf%%?#V(K z^~5!&`RX<^tcRKr=K0!mPyWVJfoF-XJV5C~N%H`4`FHXKQmfuy*orcZSgkcB;F=zG zbG1D{;V(Np^tS1${&Udu4E2v5Z9W#{Q~dpEm2B}WBf$Oe+e7M64ER$84y5#+#t)lb z23%{@l@-hK24IOAgm{o@rhJPH{%T7&qJ$H*R~{o^(f*Ga@GUl`-*@j8$;`wSN3)pU z9U0H?!KZ$Jy1fFiQ{|UnO~1uY*NrYXrrkB31V=NO4 ztVoypjCunvV;QLgxV86xNEb#44H0y%g-H@v5-9S7Tc{_3>|H{tn|=0|BF=kZF8E( zsC@S*$hdtcnlXe0rDSn9P#J(AlrzG9OY(?c;*YaE%1ErmxaWi4&QL9tP=Wt|Za?y+ z7CnJ78oVKS%A4zHy>wHOhQuv6LI;vQ$hDQe@QH|zEV)c26 z={EqX*t?3?j5~J9;1o1MX&=%6ZanpTcsYo5$v*n8^o^LVxQPj#ah-c93@v*tGAo5= zXFms>2d<94@P0naI5nYkO$S+5c}*CEo!GQQ{?bKm_6zt=_h_DGeMW<|w;l!OYZpJN zX8$SY)PR4BVc-vsx1r~|dum3C|I+m(2gBe@PD{zodz|NdX*lMfSVAq&H*5M!$z7dJ zo5!mqQe^A*qodxzxI-_FJkK4D=&3BmVtv>7Pi*pg*NhJ7%TRm+g&}nrj!)z&5jc!BMb>vSKLJ%`_vZbSanR z^mX+$Nij~9C&Aj#cDmU?`nJ_M#rJ79 z)mlv!@<)kjR*#F`7$+?ZS^oFzM)-R=K<4>s)wRkQHipP#Wh-49fKX)or!Dl_#JXd* zA^_om2>3PnFqvlZ?zbh#Jg@@+Him!0cD_~#8!F@T@72-*x6=ygARK)3f>jVP1S_Eb z&%zaugMn4HJF-y&0ilFXX*CeApxNqQspsFPCM`9l4F5G-0eafT KS{0gT-2VWDHGHH1 diff --git a/companion/src/images/er9x_manual.png b/companion/src/images/er9x_manual.png deleted file mode 100644 index 98f026c72f8ff07c7869bb25f4101488a58178d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5765 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 DzNOoX diff --git a/companion/src/images/exit.png b/companion/src/images/exit.png index 5319a948051b1c66ca424d6969a1ae113bf98731..e1471c19f8c91bbf638c61fda3e571281da9b3d2 100644 GIT binary patch literal 869 zcmV-r1DgDaP)VGd000McNliru-T@B{2nXMWV&MP)0`f^j zK~#9!?V3Mm6hRb+Kf@6*haQNY2nrTyj6_6G38zD*r8!ZGY zL7R|9Y)+dXHj)q_h!TsCMl8fXcqm**j^oy1=TOd@+1tCF-Pz@RFmTLr^WOgU?b~^8 z7X(2N1VIo4K@bE%5HiI&hkPjmhuh|E17GAa`8))?wy`H^rv~J@h(M_nXm?utjoaWE zU>^9`aWgdJrBwZ=u)#n}c_4JXh9 zu4^K<8-dOPb;J5UfTGI+JvTUC15QRzitd0W>gS}xFlk`=? zvHQTw2yMLp?)B(PBCI!r{U;!Aq1`bEEE{g;yh{-@1`KJAO(=(>rViZI92)`-xFpaK z&HNfLWifK6fR&Iwg(7EJpt%syGu@%e4{Ep8fEmrx@sLY7NS6yHW3YWoV|&4+TWqUA zINN*+=~E&CZPLvDjzOTckUlw4tVZf&0ELjkB_hyw&HT<71lo}Xfpk6Qy)g*1OEbUd zl0b`wnkjEloV>CT=AtDc&}%~pa?YYaWo4rivo7s}iiYZX89VLJoMHdfz`?#y#n67Z zY{A|o%sp!7IB0OV&i`L-^g~J2U^;sza1>J%{RH+$U}IFRrL!}K!;E6?^woetU1OdHak8Sb9=00000NkvXXu0mjfYIJ!I literal 10601 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 Ef9Y;Vi2wiq diff --git a/companion/src/images/information.png b/companion/src/images/information.png new file mode 100644 index 0000000000000000000000000000000000000000..56b2ffe706ab72346f844c991e156c2ea0411fef GIT binary patch literal 390 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!Y)RhkE)4%caKYZ?lYt_f1s;*b z3=DjSL74G){)!Z!AbW|YuPggKMt*(+3Ad^2jSLKo!k#XUAr-gY-q`DPIDo<7VY1+n zvWZUf4>UD+@_8MBs z$8dacI?Va~8M}(-BoMlKNg{%Az5|a=6B>C`m?cj* zuz^@93Lw_4=>hQ~`i-;S?1(ljXR%2;9-VNljl0aO40d-d6*+pjVB%y6 z{=Dw6?Nfj=4^^Y52m}tv?I#i#!Q}ED0iJFL`6c(cJ2Lqy0|4pv1&Xa9M7P*f)kFIZ+W3rzU$eFt3$ff z!iXj(w&~X(b^4fGI+k3P5Y<+Is@;&Mx5f4JD){|^+ln>muYjOf2GpLkeYNhk+7SM< zVMgNTg+)b3(N>J)@pG4tWjK;gI?$H)##>xti(|ih(UG9UEiNmI=2UJq9r*YW)!4)Y z&D_d2#7_;0SH36BW7tBaL}z~Opb*}3l^^neEiKF``%PUPh3e^^!+)o;?-9i2(gp9( zbsSIDqC zez(x>v(_+3-&gZ)F|MeHDYkg%&v1*YkgzZkqH(U;)##g=I$v5!)d8w*h(Re4}^oln=LjM;zr`nA_I%Zk#l*^wwaC+EppqUh?!=OjCVF7wfYYjO$-C_mgp z+1S}#1-8lJjY>&h@pSt=3bz$-x}O>;%h(+pvNOvcc$BmBacjDYDUNx*A;Yd==673C zPmf&lyLW4U+V||Gb4T0lj8w}f-&9nD6>}ihaZu!-`7UwDzP+c#mex|{hbrt4jkc+fW3}bMP?5%T8>vE8WR!tVimc;MhjgLi@bZ$2UVhDYD4uSQO!n)N|*}{V1*XO+Wx{#}F z-}BA#xuv10i$G~qWF!p@joE0cz!w;aycwbUL3T*09u0=0BARKt!SgK*4&(HJ+a^oB z|7I)*G$)t6#JPF8E7W_l%b19tTMj1C?fXi;zxdOhb$?}smpr~_-IIwB6EiS7u&4af z9tPU-WTPUp)qG2$huG+~IS1)})ZIWN9C996MnW;HtF;Jab0*xrP@a(;he@G>t*W}! z+V(%aAN-EsI&&9_I*M#*az)y*3JMYXTI!<|rN|%hPVz=_-nr70>JDqM5<5CMRSb>0 zx9^JhO49QfHKKlTBrWD(CdHPUY)+Gz=*?$K&G+Yum2e%Cx9IplH; zl7{S)jS+eA7Y^nZv5X^!RAv!^twu{EOs~I>=WY4b*4!7*Q|6@3fg*3dM!ld!p(B`dPDeH65YtU8;Pmex|t0qX!D<|9lVe6o?}W4$(z$frq? z%9`gncoZ+sR#0fALu&LvoA;GfHXEr@n4Qt=J9h@@!xzbxlVzGbWUt4$UaCW6VWJ{? zv@i5td_pr-?R~&X++t_+2BLhn!{Xxm%*51Gq=y);TB?@%xbKab>l}o3-%6-cHiS|= z4^Ap;Q9}dK*x1GDY|1l)WhkIhKN9ZE{d?ysfyttioH z@i8i&dI|i?u;bV0Zsehi?m4_^X=zC-T;DorH|2$$mm{3rm5as z?>79HJ|y@+Waj6$ELCeQ{_+wJ@!~}H#c)coGt$Tjb6-A{Przb zhFy^}%w!s!A@{;q!}&2IuL@xN&|>63Fm?uy~OQ5v- z#*rVJHUcxIuiC8uVtVS~gO$zlf`PVY+uB?&Gh1uf>L&K&iwNC594PNg-+MK(vcJ+d z+u}-t9EQ-CRAeNSh0U=a%SNl4!5L}P<{>wt%1RHr>0(u@b|g(yelccWvNO)^| zTh4{ioT+N~b&D(1D!mAqz#1gP>VcTDiptzJEQ2ajkL#tS5jlK|cK)Nu%uLdqyiok` zk^akFkNK7?hSG)45mI{VYX`@7gAd{zA3wI?WXKB94R;ZVZ)+1b%!sT@_dw$tZId^!DTUJPDAUSkb>~`QPic7 zn=3J|--P5mhTY7;#*WfgIOq}YH_LJ|zox7IC;4|m0V=*cBVqUXzwIw@@=(@c5o)?h zKV&l$Q&}N2*na47^=olCWA4wiCz8bL_%N92L;L9(h8R0sg!iweg zE(c3L!;U;)e@5-`D^=D^;Wv*EMj2Mw_E7?a!4Sd_$VHW0%F4d zASuD}O)qMTt1Sb#Q!69#+h}s4zK!AJ!9H)72M-9o)tC(a7-qORRgpaT@f7ap{Yo@V zrUaAV=Z!N|CIbuho7llM03`sQ5Umr{ZG|k%pd_9V9;H(J(&1q>)-*MaxL$3|UjD7E zE!0KkJPI^1y2*Y%+{`kkht4G&*d*e29Y4i5^seaZD+y8ecXuONT;{?RnZpJKlrPT; zZthW2Q)`=;j4T`JkUklgI)P0q(&LiLSdUY3b8}OE`c#lqsmDS3i0U|KT>65?+;;^{ zk(ns)Ckuld2WhxdwugA0i_f8NpNalYsFutxWGnQnsZd%m%w`^h7gpJz__vwzzBlCs z1_4#Rd((@V61VYf6A#Yr?ykcRx(_Uju}es#PV8xFIo_{jL|E9QZ?IlOxl?kE)JA(pVXX#V%)1O*W&%>XI20#!O7Pm7&CuzJNxnSUK5j>bs%Mw_GlZwl#) zacV6)Va}8CLa3_^Rt;gUz6}fk8}C5lrbD2+51*wfIS2YD|kD#C-P| zgD=+@fN)Ynq~_)2WePgri%UpkscnSOsMp*=nsvhv^O`9yM%_$2!{sstuzZyULt9_z zj+okwZzk?`ox(3vmjQrSjE#-!-4?{zEDHQ|8+fRxDV=OY0shIeuH7P>{;ao zUW&j$XLfoKb-46P;ffY9=>h`a8UXw&9&p^~h~D5R_`Fq*Gcf6szk)nQz z11|3F4zBvmC7Wzor4`L4cSd@@zkLi)2K98l6!u@{=4{-^ZCr-ag9H_c;d(y?z>X0U z8J|`x6cVdHo`QuGn_upiXKUOF;pF7xkbM)Z4o--J6dQ8pi(@*csxYob#%)ewqXFfa z6aun&pYF`}x7R{Xpor{)b6o#lp7-8VehMxlJ=DzY%LgVh-iEy23dJNEM2CAE((TDm z($d;)5`-}To+0gvYL%sqo_>1CZM3W)S7c{&deL=rk*2FIZ4b;46FmZVhx4Vn@1NEU zLQGUX_eIH!w@?s4^n_CC>(6yKWuxos8x_U;AZrNcn3;J-S6RuNHVi97M@vJ75_KFT zi1n(ruaT!E?6m8M$2RT(99&s>xenJ$sFk)x=+o*@rTK-0pB>*pbe-DDFR|Ly$1gTJ zku=WnRJ}byBbMLBoX!@0Ob)VTguL?IJBmAZ?zqfM`t1H_C0Scr8{N`2`nKZ1x9-`# z@cvi!CT^?GdvTw0Y{5xF2I4becBZfAP608*B z<@zX4Y}OG=Jf*E}Uh*(Z26-%%xw?ds%Y)s4yUGsQ1n zk$Ln(Wo6tQlNQU*x%b4LtfEFoN55&0S*Ye2F>LeV?EF{b4(o2rE8P}<%0wgLV)-L9 zEDQ-a?%B~slVg`2S5apteKAKbl#G|^JuR*fc2iSRjP%KZJ_@HHutmUxqzfD*lATEa zP2awKo3Jd$=L4};S-C^4R;2as^;n-w)yt23xEyiFz!(AJP+>Z&g+SSK=x*^`ya%K>>Dqn*bX}5dE1_0V4Unt60FnX(fFL?{-}Z0AZ4( zcgRA>mHI3^qj*$nI?QOtH8rvKXW zFOm^VP{6mG#H`)BK{keby2TY1wgNI--qrQaqdN03-M3)+sHUP)WB0tW^hpG&rJ_8etPQn|!HLJNsyLwj|fbTo8u*D8C7jxKx;*ydH+8la1{&z^R zC!XbD38W3z2O}G+>Qbu9J=c&&X46YHCAN6SSjtRm>+74@k5&E>e-dl`2vk~G+!>V8tK`1Ykl1+or^HesT&(K+M}Z~Kk_ zk6By#o#W+Y#{7_Lzl6lZhBvvLF`l+@*ZTT)Y-t*9t)^_abfESVYPi*iaq2mNW-15W<*Lsh`AZ&6c&BX2jrjyz*$_hyKpj)9(l6a0^#2!L)GE!|fsmJ|Cv8$9|8FspZ_Kt(JxOxgKA(l8z!+Hb6EW zng^4l(D;_mbyJn(ew&)YgiyrN)*=1-?;q1kb^T16!!>{o5V{!nwB3LI3c)fm300dS zdKhcFuFtVw|5@&dm~DH;y|zNMtk~WSo@jeJO}{l!gCTBZWn*|+WhK<8-U+tuT>+1B2Dc%sXD{tTIoQ_=ZfL_KVu`+J?^%~0(JZQ_b*>Uez@F7BPbPMLXd>> z6(9CCMtYiap0f`%C33F%v@hV=u0B+0q~6d(I$g!gGL|Fc3pjRx;@@UFlzxCMTcKH` zZTYLMs3>fGzZu8h-~W~$yUw=&j{o$$x3kzm12)3Z#<&ANLTMZ*EtCkJsGn-ZwvRYB z*dslGz$+*y05{Uq)C7mks^I1L1{LYp(`)C)kBJhMsnk_M9y>aA4-H}Bh^RSwb^T3e zt*{;gNzm@lHUMSr^JlH-pp@y=Gs3C=%uGzUb15if+kv+VMrBI)@M1?H3r0y|q*SBH zB$XQSFc*vqRtj-qW=(2yM1uIoFVe=Gb0J4TLE$M4XfneEjtJESlz9YT>CASN>-;Fi z2p%@PMw1g*`qoF-(BYZ{HrZaC7dlhaHs7H}b%N(@OcLx8gS%gPAp|Qp%Q=0?z-TWBxdl1C+AzVMfi|VHLmkPnN-BMG9eFR7m4nRjn5)n$R z>($xo-h5-FcNO1nozS%bXy}*q3*E27d_abEM1efi@IhR0A*i3XQ0j1fmL15_kYD`w zpTU#M(Z=*J+7#OgD3U^ z0RaJDCMP3g8MSrnsw*n23JKSDn`fUZBD1itfNu_ERKx02>1QjRpr%s6bAD43lXw=D zq~%ZCb+$7+n8*MQ^?keR(cHVj2fSTNm#`DpMC$HuuOT|Ko7q{)`BE>bpW_wY4EQlw6R}RLam?_pOq16< zj@H)5W@ctPN5cXKnMg}^iuFf+2BF}+*&jl+2jQ%hJ)yHJ?psNcsK->>QOp4m3k=b) z-TRLHc>dV=Ay)Rf9NA$F&~FR^dfOTKJ|;hOlJUVRx1YY;B7E*|G2?x&{>|_^e5NIT z>X;o}R>me0m#-^-{;DqFFw7d*%_%B>#qjjO7a1cdPqe)UKZ1R+}Le?dTKxUPMjvx{63i`a3$~-Zjs=+gjMbL)|Ry#bC~wu zxk%a6X%;(XEwp6pLnpxpEE{+9d0$D~U^A)_b0>e5uQBhSUOM~i13sXk+y--+@{|i? z1!NUa(%W(mY2-o#2HpID?c&;jSk=Fg#srXmkD}=r7zRN^gZkq4`C|%r2`;`qt`BRK zPU6V87rm^owaUpdRGR(RJBmoP;FW?r8{dckyK3VIyi)XogyiIs^70rv zWkI97Eo)O@HV<>MP~NyQcc|JeEh6NO2d4hP4gh@cMwWtcn}gMUupZn zQGunBL~A8y2i6fjy=1H*4|>7)poTP&3RK6xf4!8n#%9hd29tdg1KknsSVM_^lJsD_ z=<)d>>OIdOTtM+OKzRV*Fb%KWPKcMy4bP%hJtev)Irt*DOk?$fF`^RZqcwkycRlo^ z8f~$lj`c)#udR{ROlpMydxJazJ05EFkt-Nh1U5)Sf^2ESe3oTU8%^H1MRCL>+$@3f zzOu3sckD(i(#q5MSt|>vtI3Z-E-+ACrD`}2prNkgn3|l|bjb4(Y(r?Ktqmr#Kwq+? zB!W}QC=@s-ckTOd&I=8j-P6|SW_zy%Q0I?lYNbxrm$QoPI_FXYugWxYW>*j5AJHXz zk^eLQjsTeL{_EOW{1uPPjwDO7>!;A!q|%I6{qKcpDBo^4I{@G;H1#qY%naUsCdpv zJjUke?q2ssNxKQdsAvlvU%GHw2oH7vyazCurqBGMR%If}bJO@Z?;FBpLEqh$HveQg ziD>9DKFSJ|&~TwAdac<%&J)c3B-FRX8bM5LM)=l7AE(n8>$fmam|J?M!Z9LH`{7Vs zBsyyJZ83-MN)(0R*sc6RbpN_}ss0}v`hHO5-Z<&(3r|A#gVTdGvN1}@&8W7#$~`di zK}oJul;>O5^PX+ZH8~jkm4G<#?JyS-65`u`T((_F&L%vo&DK}myC;Mx$<4bw_O)DA zIyLb7;rfWf)S>fJ71Qfme-@4k3@5M*G!K4a+a{7b8JEv1ek_rCIBAGvFtA1%Q^q%*j0w-=Dkd=g$Y&Ty9kT~%#V;U$tfZ3} z0+)y2v1?DhOKu z_~bNIERF$6YU*B4>D>5r;_lep7JScUwCnZ3Xx%^9QfCY~l00}iQ)`AR%>7cmIw!U~ zdAKow!XofR7#B$Ndn}pI-LaQarHY+-7jhF^Cid~aTW9;$hR~G=<`W{b9QvLTz_eaE zGZ~vrVeT8Yz|wyQ8fXCY)iE!u(_b=bC_NMs|O#8=!C^UUh|7^_Ei zu4a3IduiFp!)$;gFw39xlNs;{)oXKDf?a+(<{sQ<{&-#l{=vw6;rsVEFd5LX0W*Q{ zfZEC|dk%F9-2HEhonD)|w@#hr1{fe>oHq?W6S@LQ^Dl$%&@s{h49mQ2f2&%`ad8kjFPL#*BIc=3U6_p_}_}{%87hOc=!1t!o;5+*H7nrE$xB_#@vuDXFT$ z0lwwv;$rJMlkWL7mxca_J$`a=F{!qe7ktS#mDu21NJ))_ixE3Y7XX>S0H-dVyY54( z{ASUQ@y?A73@8&r=KF5IBZX5I{WkJItQnX+BfB+JZyUyj^_EB^h$4@4?bl@Vq1yPCA55KOh_SiA0^)cDU`FKvJ%*y znD-9lw^}pq(dO;(Dzs(cFB?Y-%DpVJjR5WI9|BG8HTVrV=*l_44nVK6_6-g|Zc`L< zKlBl9Gv+x7yW!Xs3@r?R@0Oy$2JP3Ql4*s)Q)NOqLPA`0=tbUAD`fTjj**kYhZp1) z?1e5x(9FCz-mS`{Q2n#7$H`x(LF%Q;_@{BC@@b|LoD$}%W zVADS8Ep6m%#fGlO?%SEw5sPa9@EPd?|2!?|gS36JGuseH$ErpQ<-I>W#$9QtGf2Xu z9)tyDbQqW;-o&L*9}pa6h1MxhCZV01#2^z)Toe^T{F(+kipzM&7u$e`+~zvxG(OPZ zkLwVN%cd4gaE`zRvtv9q&Qz-v=6TCnG; zzoflGRa|Etji}AqxOwR8d%ABWG900+;C~k_(u?k=r|R5hn`7nx7}#GXCKyNc1Ueac zWdFfv4Nm$|ssN8k3og`nBx)hLv;taro@`Lr4GsLz0c>%cT5o@{HV~I4G4u(}2?QrU z<_yU8(o!_A%&8Lvm?|rciS8W*ou{%|L8TT8z7%75v9CY}%Lhb17!@1`Ma1{j;VsSU zaXK0ro6fGb`AmXq4y~1%SS!j|hyn0SVTkCLpvd}FE(bzJH>uqG;8#YH0n-djQ1DAj z-_G4Yjui;i}@vMI8Eq( zff>^SGi_@)=U3Npsa#zF1~tY}5zW7 zKHsk9(J+&*(2E-rE0k6fxT@>A7B}}>CktHXwvfAjKVCbirPs(H)Y;-#t1EpR{kFpo zrWGbK2(4tJCVQ-@?lW)cr50D{Gh&;xxHMeAD23e!Idpo!>xA_dcXZHIJ*w&5-{iqbc2>;$5n^GZ+Ng=}xguAz4oOUy_X(5|%95;KB-(F1V413{#HS-&m-oTc zZ1Ru$=_et)vmhOOK3VX6Duw8|;>4FPJzpi3ACy0v9C`=PBD&}cRuBp#(5+T)@K})# zT%%d)E=iV-gBCgnyvA#^@TX@juKC}u(h4q7VVVib5m@n7O$3!jl3}t4m^QP_L`Cyg zOy1kt3WwZ>9&4VgRyhgGib;6ygf8t3?!H?J*3zPusbi1nG^>)uIe=E?Y`^u3yr!AO z#m|us`raI!NeX1)Zr>eU_w+sJrf&TA z%OT$ii4HGsc^hlpld8#n>~_jyWWCsCZB9deE97-HdSX2TOgR1g$?Eog1${J6;v|<& zFvOf7DNsUGwXS_HBzVTn(QV*x=!>ATY~NGbDW?*v|=+X>}b-I@Heu?91QFy1pO_f_a~M%Op+$bf{2<$aD@(Rp1+ zx``1XciZHb@+VbErdI;jUBqQJRGWh}m$RoU@9)(IlhAi@=S-NHr~SgmKMkqt=$_e3 z`TW=EwXu6UE7SgxEq-Eo5Z2--^ht}9<kGIl_7f3kV@E zAD@!W&itN_Q~e6RvUO#9kIwqb=A>=UD=IfU#K52iGdo4S)Z_OA6L?C+FhjdNQ|D04 zsiYI>EV-&ty<73^JX}W7f9v4E-1om)hBZw@zb_t(g(XEd>-y>uij@($D?~i>u!*V-}`m1jK`}f%do6g+(f{Bj7 zgao)>R!Af*Jiq}3_pF+b3=`FmfvGgo{g^wyX|3Ecc#x5*wO*pcYuy#(rn~wmA_DBH5@C*2XmYjpCxB(we#XnA3$nQ zAVhpLN8IhY{&bv}dp}B^4E$xtyVaMSm`fmIA5zH_beRN986{AM`CW(`IBw(gh&> zn!0~F>xtDBavic7@*r_F<8I*pZH(C5GN%Md`Mz?@_nX_>3N|(@!2F~o&wrPQ1)lOf z-uxwzF)XZYddr~Mf>Oc{cGrdK!|$pepj7;}*b+u`W0nFtA)D+PUk9^z+8YKCqexM3 zC9m(z-@6i^#p`hVa7q4t>l?z8zV*39cXlw+_bJj*TXbW+?syC-%I7ZK*^i|Yz>BQc z<=PF@oGj$P{xzBvvAO94B*t4)Y27me~c(d%M6N+TS9@i4y?wxO8( z0q^1Dfm(dfUeMGgZ{~~(2h|B3$w!{%U=~0@>%7`^Z^AZ(QQ=3`hGDm*rKKffOt^Ua zHLnG8wXW?rPC>YAXGeV9^})LR`3|J5ASI{&40jnOtee6D@wWs3biRf2Ea{dvXC0JCd&hha+$FI2Af=wmo zgSY#r&Y3vi^(OGi_m*R^oh*gOfN8}Ca>(V!d!kzmtS$6^MEHQHyqHMoTykd5>*f%Z z$RFe+;0aVvtAAV5JLijv_t1iQmoK<5tABOQ+kcb3u99FP#qTA<>TCb4jA~pLVV0py z9fBP7aj!@#S*{?dM-^*`9glL3_z(-v|9hl4Ur`Re%gEbaQ$OJk`7(*dyAW647P6|r zQB@CUIZ-`9c?w?JzoT{^wpyt(=dPvkfwA$w#`#CxCK8@RLIk(y4V{UYk#*}wF{oM( zWyZ^*GR6y*LXM_Jbw5l09og$P5<~bX;9cU(^v-wEhW}T{cTD?tb3YLY?KGwyH0{T1a@LI33v8@V^Y6wT9ca_z9XN z8tT@BjUH?0w{4YJ4R`&2Y&{u#kK%@g7y6u=-%o8kHmN_Cp%IS1ox3^7yW1_)c-(Sl zDaPaq<#J3~i04eu*H{M2&}=A48i)Ig@9z|9voE=^d_?wCQCZv&`w<^D+o%5u(QaW~0a`IX~g#`?+Hs9T%TyEYWld@q5`c=1_(1qN} zgu1jkwl5ljp0S82@sEzQ?6@bBUQxQTICDs0B%7mDgLIXxITxEWOc%R;RDfqL+zydS z^V{q~E$}GH>hko9%8G}W2lT3G#l2#)www#3C-Fn7?uAXG6l4Bn`frV(&>1Gwpkzqo z#xaK!59{o~N%t2i#N5uI-daYXat@Pdx&J6Fl_kIPejjAGA&&eZl1?+Py%d0Q=~{sF zDOBW4$n%SXPgaG=-Vl*YRwf0ps`WxE9wt|T zwjhUfyK0pmsd%~Wl}&Dh$0KQp2QSojiv7*0>sEJ-`7#@ypHG$oCzwebcfhV4Cl%@W zHJo0vgp^zEff1hob8|Bmiw$xm;(n8rGr6;=z*j$#o@heqS3H9+JVo2C`^t%ekGjz+ z-(Fl@V?Q0cw3wE|nU*Q2Txs-ANU)*=n;b|rc}ZKEQ@K5 zh>@qNvDGLnf8vrpC8xzNWJOpr#^&2S_Aqtoe&(~3TtqUc19q41F+2zHQr!ylIa!UZ zpczZSSN)BXX?|R#L+GnN{WV&Vc`^7d<;C`wXLMle!8|9lIe-88L$39Tx@*CC5zQ58 z77r8Ig~cIR>dbFwQx5Y5x$n7qWYw8X{T;I7zY%*Xzdhc+V&**D(TNguJ-?S7cY z;?*K2e&&LmzYtn6cfrs~=52Mim(J`>-Vu>6wHs~uh%#<{!59c;cH@x z%VKWU!|Ja_YH~rzK$9|ye25Adk$pFI8aGpK&@eXYA#C_KPKYKBxl!&ujG)e05~hkY-v64L=S$t{ zWI9@}3zcvOS(%M-W_{FknwVQHGgh z37=%X>->CrXstA*dz4)VLSv$vE_l?$$49iSt&OtfL0-R}@~^?Kx6@N_$c7EpQG97M z_b7M@j;K-eaQUX59v=)!<7Sq4OnEVW4UsUd$zhyz%B)aHDVPn{)rg|j?2g?i>=!2W zM6Z667^oa&NN%}F?rB8Qh?cH|c>B-M>^&`sx>W7WHiq`YqrFYyu99~ybJlmw+L~8w zYl1G0newy>riwoL+~{^$h|$_Vy*g!V@b7*GPYckve+ctzO#l;+nD^CodP2UB#K8J0 zH^#gOs+4Q88XD~xPOwk5x5FDzVurkaR@!B57Vd3bICO>4wSx|gekWP~>aB9tKB9Qij z!Hp-U+2NSS=6DY-rt3$z;u>m(H21>O$C(*4i_^apmOpdMB93#yG1iK4og?HyDh(v! zKr-)_9kxhTx{7}?k@{po^ad%e81ut~gD1*?Z|>V59nk~mmOdUSYfku#`RlUR8L^iYhf-J8wu)SBd)>IqUfV>g%G&P?#Zf1^)vj)mZpn0Y9L zL{Cj=6%t0h;AWDMLYF9!e~`(S#+Jg{`}G+IKEa_AUW7KK^RoLFRlcfLRHQ5*Q)MiSZjACBVnGh8{gkXThU#M4!@cq}dq?bhW;`%ZTWR`#J|a~PK^M$I7N8a=!LnUL%QPxX(Jd+! z?j~iN6Yv^~%$n2@LgLhm_-r@BlqgVpwpbGGg?{*py&&+bIhecv{W)J3pp|g%=`X$4 zsSFfLCYOuh~W5Flzw^Vu#Z6Q`OB2?*`Wu?MUb?mP(5rl<`XchzliU4zE}kAXqJ zuogU&XYwWZpWOTbOf9<1D|4MkOCA2*jUD1oXR$i~rL) zX2czT+KLL~6f*71Z-pD5II@&tixHFp%^FzNbKx9kUmDJxHRkE7&ptm`_PICyMlaU< zpB%+$J3jJUZv|Gs@8P=My)lK@DW-|H_=^K3OyWV>YhB^uXUuWKxIc5lT!hf>7)NG& zwY0xRJ)~?yQzB=gB%eyaA5Ja&Hf4D*J!9GXW>Ej+2SNXe*c!1onca58weP$JOu<{S z`piq*{1bHaOztz8kInv*+%t2@iK&k8KR?lC4^Hx2<%s-{Xetz?D}=^v6#b&5&_N?M z1M#XDQHEEd9c_*`{jH0I%Z*4H>fc(ehVb%b8YvTs}?-9Ib8 z&z3&zY7tQ+B#xO&s5jMPDa;H}HHwAo!AMU}XHsm~1nw24t1Hlq$f|zg zc&&-)M3c(cONfhEjAE>Vp^p4B$*s9&4pFnyKW%Z7?=dWDfr_1?AN1S#5;d}gKrZ7M zWrYQ^)G>C-Q1|HE&`%ug@`ro^|4|yD^nbudvNJ5h?=NDk+az3xn41YbdsV0Mc_HrQ zyQ_Eid%Gwb5j3G5ztP$mB^XElDBf$rJAOX+LNfuyNLG`aUpOz6aO~=Ne-5vlC}NIN zL13gl4q0dtuc(URzClfY{pQE>yNleIjb3V}6iR^Rv-b#Ot{FmbX1**H3Y`WxHt?ql z;-~A{k(QM)X*hAP;r*tf3uo$PQmw~D;^3~&wTh%LO=>l$RZ)M_|MK0BL|72!6U5Q1 z_r;*a2XxV3w|m&;c#pn@js9kx@|)v<{qilFZBs)aiHM8MNsD>`!>UV;v=OpB(*7z zng`t})1b&$_=^^+HS^z!MFMuWdJ)3hZ`tkQG`TCjY>|4_oKaLi)B>}_azp3gTFmZ# z(a*nfPFuY{`XBQk*h!UX4R@t@tYDkM1yoKj4)cSXKPi_oU*^^|Q93$&Wsh%}a^c*Wr zd{`+7=dm1U+UJ$x{mQs+8_y_97^>m*HHmHxr=qZTg`mi4Zfo8)W=&-(vWLLz{a;@O sj&8Nf6PYV*BnF~@lT@_#d<-`XEW^X^G<7W5Zl88nQ_@nbmA4H4A56^hcmMzZ diff --git a/companion/src/images/list.png b/companion/src/images/list.png index fd4db26dcebd57285bbc529012c2c022dc17e0a7..244e03bafb399927435876ccd8f01f78952a459d 100644 GIT binary patch delta 382 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 diff --git a/companion/src/images/logs.png b/companion/src/images/logs.png index 8dc7ce194f28bc91fe8a9dea10efb42b92d38e93..7c36605f45e8fe9c2fd47d5d3a4ce9b4e5b775a9 100644 GIT binary patch delta 618 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 diff --git a/companion/src/images/movedown.png b/companion/src/images/movedown.png index 2632877c1402cafaf4ce9b2fbe8118b65f8e4f2a..a4ec0d2217aca506f83bbedc278c30400ba3fadb 100644 GIT binary patch literal 493 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�S#Z%9aJ0LKt%aU^)%pD<3U#_8B|~R z_15wGzO+#ezjA^+oict>{FvJJW(NRYCY=IV0zuJPcKubofBp5(bgjPeL#k;Ah=>W~ z=K)=p0d`Mx-L~vYdwCP+w}GqxR2x>nj(&>!<33Oh0Fk0cPP*&^M`_w+JuaMY<+zlVSY5pDeebz2^uTV19|BFk2?kjci zr9Gsj0_HowTobU;X#5mD#(ZEh1VYK5SBi6*>T$p=5#=+8+e}QBhQD^(4_bS+32nIm;^ie3!ZH&h9ch-R)jzyIZzWTTM%}M93O{)QTjK5JHIoQi+$vLd1ZUlB|s; zMG+cJ8YEIfwL*6(B7((MsYR%5Y22(t6l;aT_Oi1(o$F=io0*;O=9=#$@7uiDaW}Z> zAnzp4ulX@Q&YAbT&pFR|-W)&Q=Ndj1qkJF61Q1JspQeUQ2nM5#{kL7e_`%&G?%T_oaf4`uH$|N;0QJrIImT9Xgs>zNRC3)4g9+e1JmYi}D4) z7Y2e+a@L&1HeMqdmzhDx0ir5k)>zFiyFkVUOo1{`lZW2`c09^gN{|*%^|qPps#P{d zUw*xC@W~N4(+;H@G!Paj;1*0ldy#4TmsA^@JeBaj)B_>g?z*pB_7teEh!Wj1#|koqjz_NV7h_XxJ!A zfLIPp&VWKM9U1=nRL|-cwHr5Y@XCFB{6Z}#7$qaY&m*(=%mnA@4HEZBj&HQcO*!4i` z#(|BXjaw*y76c+Iy^_F_soA#2g8)`5UXAe+FFWl5MM2OjCV{E}M%>f&Sq9hbYXp+} zp4gw>v;Ac!J&|JO4b@a&o?tqJ^Y$^<{#&&?&lfZ6Qy19 z1el+yIKZu*hnhBQTHk*6qXYi7#VegEI|(jZHiM-k)FA#|OC25t0FIB5qD-6$ax@_` z1{fDe5TbkR!%SyllMmlHY>XZ{33HmC@8@_?C#(B10p?!{*u0<#O_6A1<2P?<|MK7f zOf=FOIrIh~`ky4|1E;${^*wp@cviNsXyRbb?wJ5 zAAD+yzq5C>qN}<$Cia4V`3gYy%_9M79R1}YF!3H>mf2E@qnPH@vBRVBo%at}=T1?r zM;1VeTjr?FcZ*ljz}m5~h)Nj%H1oYT&ZK|2~ySTH@mOaLNy{8KiSO0Mwx zz5fbbx$gOv&wk;HN=suaOu)8*LKbLk1;WjATX*NF2Bx}i5~btAg2Ib4yTPw>d9@t^DpjR5&rb&Kc}eh!|`hM#5v%KK93#> z&K?3pJ%2n7T$rE)Qkc3YJ@oi7ug`B*dEcIe?eoh!fT$l}t>R#CP5;`C`yRW$Y2DhZ z>>N8X7A*pnEdjzIz_e%A0r1c@Advyip9hLXx=YZ-FMs^VNc>0lzEC~=w|4=QIaybp z*Yz!Iw@)Sjb17v>;A_5l;HHkdzB>?@xewT7HoNa=2bOjLjUm9Yg#-|cCo_5AYz&wx z(gW$Lhv|v&v$03-88VLl_9Psq2ns&In6F8*>;(RAUv%?LkB`Na#)v<>X5A_UY5??^ zGQ5y9H2^`M*yYm{4~`8K3}Ea$P%KmMH4kP!pG)rD@$14Lo;?YxO8tGN>8s(}BTK-7 zOUv2nd4s=i?Z-O5_1GQZPxjvc8yY_#?2H0^ODNzZ*rW$HQMG_f0XQ26%2iH2rUTZL zQOy78r6UuAx4#59w7r8Qcl4Jz$1X=Ez@-=+Gb@^KVCA~2dw=rER=pv71uqF!05k-E z?lzz^0tEe@*SEExKMaTM4=Soh>2#F^+jhLWf$d(L09p$$bz=1G*bna6Q+aD7#x;A= zg0An9)qR-&V5NX_DQ#};>e&3yjnSLGvRQBRX-C#GM!8f?>dxxX6I2Sok$6MpEZ2glaDe1>PkNl?du?3y?ju6*8;IeYU z1)m;dth-jPyaUvJ<&>aPVrb0Gx8~c3C4R`m`S#d#9DJDo1Zx(T7@LCVXF?!x*hC3n zi0|*$|CCQAfM{Ls5*!L*a1JG)N&zqPZQgnx^2j@Y2$kTY>7k#>fLc2NU~#n4BnWL@ zSpq&NA`%wBDhqtg1mF|F`Je`0CV&`Jdk$VvE&~Pq|EcCnNJvOXNJvOXNJvQF-_5G1 UCKEzA#sB~S07*qoM6N<$f&kr?^Z)<= diff --git a/companion/src/images/moveup.png b/companion/src/images/moveup.png index 447f087ccf99d69135ac9ca8c5f19f01a4785ab6..859a94579c8916b45932fba2102fc65a0f1eeec3 100644 GIT binary patch literal 500 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!Y)RhkE)4%caKYZ?lYt_f1s;*b z3=DjSL74G){)!Z!AbW|YuPggKMt&Yst2ak@Dj66U8$DedLn>~)yZKW4lJv z4o=x6J3J3M3JAtnTX%FfHFxj0aq{R^{RKa`WMWujYdH5YT#P;9x~uH6qSNCC>nE@+ znQo?j@9FQx+p{Lv{VW$35JZ599B2M6PL5=F*P!|!a(P+|(;Ws$1D3uiDR-tGmFyL{ z5j;(PuhX21KNxP6_Fw+1>SuS!FZS^q{|;j*=7i08g??`m=UDdHU0CHkr+HH0r-@<7 z{hPD%SLB@f$h78&)bd>ZyE(@`vgjNaOTTS+ZuaB%a=FK3TY0O6ciyo(D-?c}0p?-?}v>K&mWs%HE=`Z?gBRt}kSL6(X=a zXNj9n4olvJ53n(DnA+6H2G}7I1 z|KIm^AMTuqhk2Vb^*b{OFg*=o0tNyA06?sz2{ruBBL1J?;ryq&6>WzA0KP9;P-UYa z>%IKo?>xr-7m>GrkMsgrLJEufqrBcY(Lm|Bo?qp!3U#uxtE+KOxa7yjGjO5|KB?b} za~M2B<%oP#2ODs)u{{+Rf1xU+@G_)jEp)kLXHTS}!o;n>xS}On&z|nUy24~}&VT3r zQ{mQLYf+uPRUy5k{j>jryPoyOU_$v*bWMSUPtvk%VmtKetI&dVc-cxgREjFEVsp+Ps05 zMXA({>=-Y$TqBKJHjU%{OwzM~V3&9}j|6^Gu?Wy6zdn*4#MF+!=!-zsW#X^IIZ|Z< zBx$W0-%C9X3OuZ*nVhr*vTFTYSDi<`^+Hl_t+XCELe8>yI*EW&(|oO)!dG=R39j$R zx{;q1T8`TxN~dSRuV3Q~7n!c@ZH;VoHB^>-Y9~s;!$(SFrH0BaC5>^2g*Q!Uv*S` zkY%!t2S#v+4hhsutE{#A2SC|KGSeL1z$viH5%!tEi1-?!Uh<}+YRY9 z?5zkcFARHo&1-NWx9IIEmZw(q!?P}Q8G*pPOiSkBQh@4y-EQg2p9?V)9Ov@L#Ic=8 zg_iYLLNRq0aeF($x5mGt2M2RH&8Z7Re=(UbO(fA_wZTD$@6Or|xX}R-1Z}~F`uX&r zGa>OsziM&YAi6eX@~LmT8^$8$F|1c+)EpH(kKyS|1Z(Fx5)~oRYqNei3hi$sa3~q> ze%)RE4&6Ki4wGTDJOxQkX~H*Ec|_fHUG5sc3fWAIxRwonj4VzDmBWSkj~t*dG>16n zP_D6+{Nu2UQ8Va>n8I!QQt8mHX-t9D1*1^T|KV z>==W?u?xCl8Yj_iSKJD`o~jCJlRb;pUbLe$d(u#OJ5GlF#W90Lo<-ME(R44 zjvmpr?^|U}2?6iQWbwla=Xf4=9z$D974Mk4j=E+}QCSKm%qDW8eu9pwt*+$cU{<(dK+Pt^a5-Mcx zIGo!I|2~$5+wOr3DljJ1$Dm^+to=vB+D66t`3_dLaTChYYNU`WDm2IW7T5+BXX zMa#OhG%iJ#YCV?3wD`pfc@+*5OQzmH zPTetnpb*SkV6t}H_*4w%O}{nS$%a9p*mEM(qF+xqh=!(B88KpYM{aASaD zCnVv;wExo?=5%uvWYMz3ug!uHhdxFCtvWbNpQIFVxQtF~ZqT7n6H|69UR(+vYT)(0 z9uLiF@s@&ufu%$cD2=1SCnp?~m|T_B^-|pxo4Ve6tXjWTGo@KcTmzU2q7~%!TYS;Y^2hi8_TU{J{ctjPiHze z1{$o=c`eHird;X+keZ5=#fgBz6@YnFduYCbJ$Xso9I8epWN%6-@9z4uQfxmD@PT&+ zu8y65oq6!;$BBUwUxAlAK5y=uZl`zBw^uAUAzen(SWkfIe^~`_3EGIYE9f`}o0Jl_ z5>De4Fu2Qj?lkXQ%^O$R@P9=q59ER9qyvI+Q|KZB#-v9iSK|t_M?SuItZhB$ZT{HY z7DS0*J>!_r0q0l>x8LnFypPfD&4gFlnv0vQ?tPLq4-ASm(N+d)j_Q3hi8nTvlv}_0 zY`l4KBR)6#3qg(-#;!~5DgprGVc7+Ce6UzcP}|2USy-$5BrD@@ zjQh>3#+5Ii6Bkh*d##{YR#}NgDU~i6JzXef;`&{+WY{G5#w7phZ8F;@;*H!;9y*2; z*nhEj62n*iTt-x0lHxeCx$mcQC?WZgK(x-%t-ej})ubbseSkp@+)e8Q%pD#*qd2Oyvrk zhJ-;OR>JxkgGc%ex<3C%FDcC%*Dph5>>WQm=j);AmyZgKn_H;)*87kkT}@;JOwSSx z?dNznulHqPOu?6DWo%$|@n}8nK0hpa^oE2B1WT(Th-pom(;{YRQ)pX2KS~Z6N%E*q zS~%U#0&l#CsD0!An+FVC6NK88In0I^l&~xhGhy+Cmd}HZ)2XjU?unmAp-acs{6zNG z;$_(5Wx2?JoL$uo5PrI|G)fgjnfhLY%*pFgDhEDPdJP+o` z+4(ru@zV`bY`naDPC1GD@?a-10rq>Q`^}I0WBt{^W5N)*(5EtEWSGmUC+EX?k328F zh8cxb&!xVTX$6*5SE9oL;{C-7^B(Q7mpgt(6mf3FzBZ*Oa(h3P(y`REVXwrv6_;o6 zcmBP_U@-wrj*EbZmFedGSb1&0`!UV#-p}jZZCV=_`<{~fsU(Pe9GEy?-0{m)vKBekAxuebo#px!SirhQN(aNn%54%BLiO0Yao6P9=@DAUkJ2Hgo4Tls^xfoGUGr)9GH&A- zEgF3A`0F>z&8ERFGlu%_qRN}N06I6JmKPd#S0$2^y1ke36)DH_{oc1rHhN))T{aHj z4#iJ+mBAuj%b`CO7=1PAE>B6+G(u4u>N+RV?3iJgeN1652oKyDe^< zV(#)!vuJA)TfMNNvF9=dvHf&{MNo^0`kV=Mho+r>ctKf-G!B&W7krZvx`xFSZ!G$; zxN#Q?!S>y5Xg{rYp}uv*h4Q)bcm{5 zch8g@M^?VDxw5Cri*yXHhG&Jrw>#3IgsH=Jk!9#M<`r8!k^}IsNntPl`^yN+VUYj< zj&-LbI^Q9_Z`DuPTIop4o&T!q17h?sHRZ7fsaw8y>^0ccI%-Y3(U5Y z82);NmbJW3rjch@BYEv@lmD0$J@L_-j<#b%ipMADzt`sW^9nU|H|{LFLIh??ylf`% zb>9!k*rs}ZqO_&mI$$TU(tnnM{*5aTU&Y-DE6tWC_ri{~Icf;%RC8%#a z-)aUMH*%bs@AA+z;wPt5eQ z*)(05jO+YKxX1^9gE@5TBNu8&?J6{_X^_ZtXu=5RFaNZ@WC?0)zU;ug+derZv&V@I zo3T>%3s+SH{9Z=mtmrb0wQu{U`cWU}#(FHUe~c6rgB&rwSshTYf$O%T(L4t#|D}DF zLSq1Lm=~oEv=@@3bDDyxAhHl+n!u`-CDLO-gyb(H{??;CK`ac>>O_UNmLKGyu6;)s z(U%R2A5DPv2|SU{!Y2EbRt+B!M_=P**nWOTkPTI)zR@+0QQq6wIkI!9+5owfL zx5NL$p#%gDE6eHo8?=C_3w*x{*a@2n(=HJvx4>t^Dd;r_gf(!s{iGM{BV>r~c%vA! zW@u)FRq>=A;29elXNv;XAju(v9}G|pD{bUMDRS=yRLDXMzB_O8awoS^RfgiLH1lTYINRb6`LYMuVcrX#zVw>hXQ3gm5VY z-W=uK`}8`ItYh5LU!f3y+`uRp{7Iv39yB)-2a`skAMdP1G9lEZQ*Zl+Pkzb=oUBTP zRXmRN*?qFHM4pozBkEB5GknNc)wFF*#p|b=_%3a+z82`r=G9}x&}nw04sSorN+^*@ zEam34(2gWsl$lnP6v`o3$@56Gnn19r<5^YD#e?NRrxZ(6-X+2qPabx{HLg-zrVr5C zu-)#Q^~3ZM7K_9e-quGVdkeEV8uPqLz|Bf) z`NvOzk#AAKIBm43j-M-E03 z;KrJ}+>dZiS4t!3+_z+C%x4y3aQlA`d?|fjjZf7W34ZX?KbbG*v)-L58M1y{ z+9Y0X=`+C5w*Uz#1gz{4R)^V)`(0ggSa@03dbZnkdz3U}ncRWWadjn*g?DvK7O7zV zv>{}T!K`7Sgvrq0BgaHF78$DV(;foq1RDOGj~@st{=fIj$Io9y?=%rQnNO`KDqH;c)priln*xZv*@opRXnc$b+Y!*H8sCTOr+f$ zWA9AA`IoJ>7n2E+Z^x+{(jrOm2+;p68ayu=78v^Ulba$N$+%j(l}>!W!trVC7@+^M zOK_9BoNM$qFoQ*xFpn4BNL&tor42TZl4j}bvz?I!)x@IJTaPi(kF{Htv^FO;Z!xwV zOaj5%tcE`?f2FmTwj4A{_1vy{9V^fn#rj8gK_o)?*SpyW=-|af(cGdL##0|1WL^

*h0T$%Y7FFOGj|5K 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 D(y4gg literal 852 zcmV-a1FQUrP)IE2xvpcKl890$E8eWxeF8o0mWjmIG{M&7eWO9CVRojsy7@;&dpQ!a9t0J7gPX(5I|>76wd9YM;~Wq>Ghkp6rY@= zsi|pt_x=M#qtRtve?bMn?-1>_C5DBX;{}vm&C%raD|#~il%B<2&`e?uix*V@+JPAL z6CgbQkZR2~6*sGtFK$zbV~w|k*M3m}@OjM5T^_Z^d)w}xJHF(IUAVpO;*`oW;C1B2 zbys585IO4RGepz@rv~8kI;}Y(n3!mCfS7AgQ=I?+DlNG&;!abH5Df(KZTl#;d_@48 zJKJjfX^uQ>h#Iar6M#C8w^So4*Tn<|1^_iEoENLSCA-QKz)fKe6)JLW%zjz|XlmW9 z@suY3Q`{VJZCgNKnyVajp6h`@6-N=kYKbun)^`LT3}hx^wrO>XsHzE2w#B^A1Ngov zV}~hV3>btQ09#E(0CWRWn5~q>9Op*n90161U8$i6fc^Yd5_2;F2sIc&=-PaaDX2~W zTL1&dm}fQw05ax<-uM>_{4Cgt02pUFPqb7NBbWjJ0t`O;#ZxHoL%3#1_iOo5hu6MT z0mxO4x=yW24v?>f-nYV%Jx`{y-lMT`>)O!u6_~SbsQ_#=q-z-e;1PdX7gN*|3t4aE z?!Drr!OKg0ZH#q?HK_Wx9NlHvJdYn4{+`bsH@(TacqVT~0BG|6fti$^=|8_20YcOC e{Jor>rG5iZY$c(Rl?rzN00004J{Yk#X%kQ4wEvBct(TeOcRXj8 zKP1~>^Zjn^eN9H7C19X1o7>ZV(m&&##K1>WRDF$)dAcj!k(XR<&}bLSJhkYT+;Z*6 zQ@`)AH*%!Bzu;WrH1BWWwMpwvZnnRmac;X`#IetE!qXjASJbZX_+`{tyiIcN>*HS@ z-C2C`O=a=Uqe7lrB|1IlOkL9Eyg z&NrVnnyFRrNu?9$w0-1Yh4rpbQht)ZUx)e8Tqn8q@Fef;@m z#RP)CWtKz1rEEwa&Ubd$6s{da=&VIP1;2`BM0`Wb;D z{M-!)vd0-ix#k=pmKgFxQgYk(eOi$0QlJD2NbOI5d5567avIIj< zv@<}9dj`!tE;Q@xs8{wNhf{?zUNu9!u=J3D!C+h_ze{}K1V|htI6?j0>T@UYxhDij zhnKMl|M#(rT!AcZ}eF)wgP_d zAX10jekLr}U#(CrCA<(opAbNs2#S{v>vbjZBPMG2>Dlh2!oC#Mk@9m9Zc z2%^^3CBjkLC=!RpAFqNhVw6pZB#Q!^oqj*T-F(Vw$mLX*nO_ zNX-3DeeTpEomGUYnz~IsN92z9JUkMF)7=lf!HB}*Vw`?29z6pA^e+N~guKQ7E$%u) zC{dC3_66}y+`oN81yr%;K@{IH8|1O-3y*riL6}qGd@SEo}8X#Q_kq zZ|eG3QMpHgF(8Pc07FLLD$kpMaaUZZl&Qk=tr>Kq76&g@g}Kbh`}mD}bLg zSob6#9DIaI(-=7VVTPPm{Z+FbtPVT4Iv?2~9(pg}6TG@z0w%t}gOqRBIG>z~1AjdP zW3QR%ZYsA%*Mp?X$w>b?i;UGgQ?+sSsoXX8X`%zES@sOGBngFV;lVB@d3_10@@V;lg>dY2BN>v^RZ2^?j@k8NdQ$X;_ z_a$H}ZfeJ=gha#~If~qTHdcoJ4Lhqwh-3dbkKgY5JsSA}oWGEOlkpdDqpb%S#7{~T>2A7M zsP8QLl$cN`w?OF*Jo#7bDJpj@!Dj^fwz=d)jlRsXTKwbW85}(HH?VT^u<$rb~rBzaiB|lB=W)A?(%51dO$!?mU^ ze8O#IHd*n50bG}w!BKl4^90wps7K`#)>4RXJ_(`usyx1v$_9j`-;Pq{6K%jV&lNRO%>FPb&x$A5bBEmwG~ zsNAo;tlZJ!2;Bu-bsyf#uSL0b05WG_^}?r@soeJn(y81#_yhC8@e_i|9PXV^3ptdy z4Z_G4qZfz6FCzC2|JrSe-C>#48@AYMyIwNBFNyyFX1QPd5r93<00000NkvXXu0mjf DP*&js diff --git a/companion/src/images/paste.png b/companion/src/images/paste.png index c14425cad1ff1b2c5628be5769c9e9e52b78635f..9268696f566c40bdc72a2dc0acf3c105ace50106 100644 GIT binary patch literal 480 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!Y)RhkE)4%caKYZ?lYt_f1s;*b z3=DjSL74G){)!Z!AbW|YuPggKMt&YaBjN9~)ou%u4I6%a~e>y88 zTfbt3$^T@JI(OE-1P;>(mi??E2aOy(I5?S(3(1HX2)C|zdpje(^0nnj)6=hWtBc72XsF$)?7WJUcml_$MalW!;JeMnR34WeX!W$yCsX+^gU_f7E(@Ma~LiM zrN%H;izaVxSY-08?%(Yw1E!(}g?9ZqS+idsh%q-^`<-tN^W!Tlvg~KH)f;!7V=9`v zOznm4gQaSXJJlF>#sv#s`Qqg7z2&Gx1;>e-mXW8Mk|vkdHVZCNVAb?+$=Fvf6QSn5OC{}H0O=b5dLqo?*rq4!PC{x JWt~$(696|xy|e%T literal 1645 zcmV-z29o)SP)3Gx zefpoBhy8x@pP6$JN-2UQgm?vbp2urQDfM^OC?_DeL%RWJmr}mQV`N#@2O9RfK(_`t z{}ccw{I~7(;$U4wL~hQBiYr&HP+e1vKmedn2xTZiDQ44YUa1!^ytGbiJMka6M}vG@ zLrgqP2loG9i`^_G_)0Q7JWOR}B`e8wT^_)0sjwm&qAGGfr|N;V0|+ezNTCh%UA#yx zm%}d>QA&}|=UH4_q);eO)MK@^wUhx^fcS#;fB^tDLmDAYR7=GY}hKA6kOPAcP zuC561)~X!<6GT-k!gJLz@}5tjD3MBG2|?Jgh=y$Das?8ijz6FOD-BH>0V2R=mW1#7 zc%Dafb+w*QOZ4j1tA~UTD5c(75x}xR0JbfV+O`xp2&58N!i*b_Ou6iP^*huzHW7R; z!Gvcr8OqDc&1OD!?ARu~e-17|ECJBj*{Kd4I;3nN2w4!eEgZ+jLQu5L8XEw|vWPgA zt^#0Lco4wc+#EGEH3lFWjdJA3kD9q>HlpG95}EZ=m1y-ptN)rjt$|Ez*CB`q|1$rgVVB? zrhTuowc{78+xt2VFSK*}&LsW){Unn~lv3vU`0?ZDx~wzj&Yk1v(W4wbe3;(eUJ{9f z1T3Ky+yU+X&gS^%luv8N&-msq-zN6;H<^5HH8r836d;2i zMi$(072p5qZ>Vh8NaE}}Opji}iIlOmc?X+Yw)07OC1VMf&t~%6oz60$?T8IbC+FC= zE6VyM05f|%YwGIi0L*nNl`;TID-fW$T5#c=V<;@j=Em6&k5ZJ9d&7MsWd+;Xe@so= z%X~bXX3}54&3G)#YcF^p0JU^FLZOfeE#2xLjsYt8K48JdxS&uRBOHrUx22Yncy@gS z>8!_S|DTwyyiCjXgSZP}yn>`ylz7@9$3iWtfa7VPmemyj0M^GtgvulQziMM4o~aCT z;opPo+4&R7qYk+;M*}DWVQT;uOChBkB`_)#q+A6+Sfwh=^&|RlY=-e!kMI5ZkKD@C z;6z-a5gX5w6g>yi0i}>q@=$770agVN2uuwG7@cUt@bD?; zK3j0A)Rg|7%OH8oYxFCwW^r%olu$Hy-NXMuhl?5?;8OW$_d zPbP%{KnOr#TKwMNV7j}zJEh->%p}lW?Q_jx?V5KpZV_N`@cndOUtjvnnKP!vrO=Of r0*SSrV$g&__6vQz4|I&^4Jxf00000NkvXXu0mjfT=)$w diff --git a/companion/src/images/preferences.png b/companion/src/images/preferences.png index 1f6613e4061cb2e049cff729bdc56cbc24e74f2e..422ab8dc0059a342e9517fc9b722b9ae862cd761 100644 GIT binary patch literal 741 zcmVVGd000McNliru-T@B`5f(4>fjj^J0&+=2 zK~#9!?b<(R)Lo2r&4gTQymVis~`w2 zfy&M~;FAUCmw^i!s13Za;2Z+ie4T^J%!Xs=&H6k^mz6~a&Z_S}^YL_mE-;egdbb@o zU7*z@pboHS_J7VesonzqT5xuN^S)NMHlQd@^dXawt^mI+I0wME&*i@j=#^ub`~WUl zu5l6g>8PZqeD9BJK*PXx0@6g}+!5f5c^*k)hW}pe#sT z$FUE<5OBe~aYZu+yaT=g&&;)JQwJp>xrX3q?CmO2jlZm3jeeRq?I~$^TWXFgf^nc(9Mf<*T?msqLY7Cr0@NnsLv88?UykP zDXoDn{XzP*6{)RUNR{B66;R&lJdX603K#vW2FidrX5<6vwq#Cmi7j zM>xU}j&Ot{9O3wxmT=PZKsej0p>aWhpVC}ilQirQqvp( XX&N8Ujbb?z00000NkvXXu0mjfcr{P0 literal 11170 zcmV;TD_zuyP)A{#KF@QWYhB6ro^!t6^V`k_(`h9Kd7≧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


P^cj$B1pqIM5%~1(ZFYQzhsHnv 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 literal 7282 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 literal 2312 zcmZuzc{J1w7yiv?#*7+eCq$cVvdl<~$kH&@v2WR5MrE&&Q5b^~5^0EPEJ=t^(^#4; zQ*WQLG$?y%rp1)T_7bBQUY+-x@0{;D@44sR=iGblAI~56-sfgH<8cVF-C_U$AZ%^0 zu3Jd??J($8{PS3F?-qcFt~g7efvq&Xl|cWn$6I1mFRoO4smrIb?Oie0AQK6SPS=riP@6G9AyvXmu7^P`sC4N3#%kXjl`o9 zO`8_clvHu3oaM%N)tp zt(o%hn{a)4Z+1Cvsbpq)=H?UP(?n7XsiQ0uEuj6J)IS+UCbH-IXq*_9d`J$e>tDj> zRCtue<1g_oDy1JFfuE+Hq;N#M!1_dbFC{r7Njx6J zPt^sMwukZ})-H5^?aeFtN>QgESU%_6C|1n!t7%igL2Qj?9gm(oehbr_*G%)f34YNl z!F_J5$qMUk5RnDkQhm&I7jRK)_{&->@gQA2OiMC-anq*)Kv5}0pwWnTW&BE@-|on8 zV_8*Hp4@v=R3kKcG>aqh0K_}k;|Gg$ty|LN_OgClXF36%_am5E>W}^SMBT|wy+;3}QEu{*qt-U+e zqq(xe4raMH_3n)WJPvD>XNhnDK-7$Cs!&P=CP%$WjG#^T0}Yrf8R z<{}sySn6lr+sGwHJC2JpCrm6hLRm(Y+(OF=THp#fmOfPs5MD;5JLg-Zf8!p;NIL7vacd%je8)~p$z z)kG<7_PO(4YSt|H)}fTudIV!w^Q?nds7uw5yoi)+ii5FY&@7{nXRL{NF+zlo>y(91GR`L9BMberZ z78IQ&Q9R3+RY*y0l_DEk(!kQ%B3g}}M_3LDP69qw zW$0S0%)%mVhVcD1>0k!c%%f~Gkoz(mu}EvU@d`$Sp7ySH5)z zAjM*x&;87j&Sh#+FkO48_feBk(eNB!;D44P2D_BRVI72Yd2N<6$@#*OuM#Ml880DEu$SLC>;t<$2($S-e@ zu?>g`W6L3ekk9Jkp?Zo5hR*^!EQ+5*ue zwG|?9Zl9S*8{G<0vpYn!mqWegzo$F7sT}!qLQJpV+g=ZxChz@8UpO^S?eotPzOX0_(?6_ZF7umk`M0s`#eUTnhNoWHv=3|%-f0~o zoX(onhaD4G-KAK$e7HFnOaG_U17fcIj{Yiv0sitWcSl3iMZJi(3|fCs8%xwC@xun* zbF&U6VZAgGuT^E9FEMtg%iIH!;4po~{VTC>BTq*4HIiahU;%9q^$}1@7;B%{zw9OQrPa4 z()#w}i=_b%2Yd9M$5oPI`$qzf2IWX93v^g=DeDYifBZ+^Q@`8@O8Xr8T2)$e_0GpJ z?pF+jylHQG3oX`@Bqd!Dk_+dTS5T|Nxf4hhyyU_t|I<#~qsIjFM=ACK0C*LfHu^%*Hv>6n=I&!;eGMBbj5w7{>eHCWu$MUMobSx z>qJtHh%Yf=8)-$F?P2l+?T~?9qcEv-wyGNpqy>dpXx7qGxju2t4ZVA(1Xg^NX~E$% z!6Id2)J5r>;78smw`1V+-g*Gf%U%fx9?0j#l|8xt|)D}7u zY#Dcb=IO<+Hqn!<^3dE*BBdXVy~tLi)1`Tm$4)$PLhq_5Wb}mB>kj-n^n7SRF>bW1 zdR-q^ZlIV9v6-BWVy-?qW0234C13hA7;)KUZY6D9^e!jSo*ktxvT%~_!}j`R8qRBU zE*g;2WJ#oLK3l!8YX~YXLBn`r)thEa95glg=2>?zl0QTg;ei;_OS>j`UfaALCc?}9 zlZ;xB#^-F2Arfqyd4MHLR-^PKemuCG~Jnr>3`#!{{3EG zN_{SDJ-6VO$NjmSN&<}>E(%P79S$r^aF&t)RP6ivA9>eT?vA^7-O$l{3AgVh+cn8e zKvQ+P*9q}D|Ge|I>h-Sam$rRVT{)-1e{zazu-x&7CqvSL{UYDREnT(KPwTVBN-gt~ zcm5cxo>r*!>i7FMS$}rcURBFob(;UPqgmhN literal 18174 zcmbSTg;N_{v=1IU1&V92AVrG1dw~+%t+>0p7Aq2XoG%xq%#PBeD~Wf`<(EJ_?=0(I$w z2>^f^pdc-w;k|U!;nTP?uep9N0DIaMYA;{=bZx7lSzesXx>!e_O1CUeiLh+5o$86` z?q!x43EFcfK5oPp+(+Sd$qu*FiANvl0pWGi1!L#dzSo`Gn>M&KxIP%$&N+4BmwG*K zJ5`{p!{!aWzR~lV^=mn4>soJn^t*XEIbDMZFEl$W|9>7`^bE~np-$&$PhDY;sZLL@ zY`3kZ)BA+8Q%b+e^zu=CTQ)xh0{Zmb8tDncpgH~1YQLJUYwSPgm#Wfs_mS%{`XRQ% zXg}&jZpoGb-ZqP0&x(-!Yn(dHOuWHAZ6@A0IXbWzjLdI&HXPqxYWQeQu*AHBcAgo8 z)aOd*qM(4+`xK&--|Obmh=iQp$H^8QeUHcY7G+FRnf@bmy3OZv%jash*6h`J%@FU; zn9+8-cczAOEY^?YhC7)aFdB_ubuJa9OkPi$SY)Ce1;aGJ`DgMjD!O|oVUh@h{vnA| z-Tj-*=qJPPE|2{V**^o#s${Yp0PX#(pqGf4igw3Mj`3m zTR9H&Mdt4drd(fUaZ>pW)CTR|3SD%XkM(TfHCp9&Oz-X=s=D>FQN623z|)r7*r zn8kT$+f}6LY=JbjDrWWxJsaTzX6Wre3#4DG*cem!S|O$gn56C)0b;8QsNG7F7lq&U zjOscL?kt=rpzydkB zw*I*9M-ablgny?cdP+^&+5=jloA4EawNCse6ZqW2owpbwt|9(qA=xdQ0 zm9|mwo>wq^>YbF%7iY@D2WC;4T&yJTyM8dq^xt_-1xylwzbduZ`T5RWU)B-;?28a_ z1Ie~5>CjI&aUld?fCJNFXR3ENkP+dFGh)2#GGh1u2Ih3WG>W>y8^jCLXk_V}(nkhI zJNTe5;K#&jyparx%XgkUmeLB71jtfXiT?sJvi__m1Ro+Gscf7j%5&qSD8Ii6QC;TCWWu6d)^gI3lceJlI)> z5rjyGXGe#Mi7<)aI@bcf+D#aDssWNj2A-8j<`wJRv>J0g!(3&I&*^M3ki8(Ty_TWGySV+*RU&mXinXL=fGvqWM7 z!iXN0E+R@wi8Hb7qMKlnI@Mnt`V04fc%hHTgkHU;fgDg-O2N0)W#rZPOC-}v! z9vZHu(@*`uTZaH~GWb#)++AM}&#hlfZ0c!O-w~y0e(Qw>Y6;FT$D$OggEwi>a3}8N zLnR16V7evwkEo@XyeN0O@*AFS&yHD9B80bpQKM3byN0ACwvIt2P3q(~H=Ti-n`#vi zb0jO&C_g`Z2}bm%MwoWMyPL)Zbb1Z$ZV*cFC(4?rOLQ@Tk%?)*;XN2%5^1m`yBHM( z7VzHyL-0(|330D57GC&jknE8*maRK4tAAGa--tJl;2P^Fbcx6#OebN+Baq{TqfPe# zIaHt%m{cruTKsVc%S;OSCi-aJ`}(D9nDov8XDrku04C0WuOHPF+pP%#%aMS%U!wZu z6meBEYp%2F%e(J&(7IEPz8R4#cGq z22o0ah2P-)#!!*x#ydpaF-Cqzz1;=KIW`h$G}Tx3J)8rvoDK;I6CvKRRL?mQf= zH_0yE#lo0+C_krYixEs@mffQh=0bXmf%vA-l}h{H_kQuQDto!$E}Arz>%2xO6t?<1 z25L@p=35RC1)Aa=ptgY4cY^-()gqM1Y)z>{W z|GNmL9}l>H+rQ(*`z>YJTI7_|#d!++=?v^@VaF=^)46vt&9Gc_BeaqzMI9|8xgm3v zDd5{%_{QBZFZa(`>Q@kASa(b^ouE~nB*%|Zoex}b9jNtR&zLW_pNy7d?xwv4`Nns~ znGOZkZw(@1D3oQdL%tyG`kD_Cl+Uqry!D%S@eAB>dJ8!Dd8v{Rw29gNg6;InZoWF_ zmP**WkE_Y|xHa$TJWmJtj_=fu>hvWe@4m9lWQ*Y`=-+F(hM8HRsDLi+K@wNm-)kC< zh2rjrNV??jz6s?pe#ZHTV;DN>*K58%|p=mnlPFb&$!?Zgegvb3qz{{_Bq12+QEwheWS4kqCAUg zo}rTK5ylrSdmItZ+g0J01@rcU1fg4WrZxR4jaS(7u6iv^3&pN*X#PZy4ZEfI(dO#I;r+=dKU7Ug-2ITUT)d-CLKOZoeu^w=Iw~u zI@42Zg02KYtb;($U(YM;+k`i>H!d#Qh!bA9rN3H~lqEWdcY}kVtJlxg`s2u?R(0c$ zZ&=3|kx!Pc#Ezsb^Q*8A=eNi2M znO^aFaX{#13CY8cKE3k)>KpKT)q6XBYi}wG{VAAr;?Hy=R^FUxT#t^M8q@VhHG;f! zNm09;=U%_H=aZv>)5prL2fL?*ug`n)?Ve{{4>fO8gx!xeIQcj^nFxPr>kwUPJPXQN zW2DdEi!9+Qe_Smn3^o-QEV$!HB2v4ym8ZjfA4JH0!cjkxw1*KDs=sI`BEBbMU9|s} z!ZjtiEwr~-zJM5KNaw%^mhGJ>y#Ef`Pe^Txx{R`qZ1y*az56LB{92Qv9A*@>=W&_m ze_Q5RNtGOQ*&Ma*apaim{Z!X8KeUFk^?C#K)dfY+DM%*M^{ahMri+WiQl}y<%%r=M z5GM`?(oD*lyEFaVl~IfQXjL~@?U(D@3BKBf{3$~bwv9Ku|C0CgfPm!B%nXI_eqDoT zeBXurw#}~>;cIj$WyT}5sGp{Lmc@zI`WxA_TqLc3emlsTe!xiQB1mXh$tyC|vKhg? z_#S&jJ~w|?MJ%!wMmYM4@FSaWe7`#`nnJyX-+g&$DDYuB$PM6pv;dF9JM$Hvqw!Dt z_eGFDd7mK4ex0YbO_{``r0-(h{b&NxBtqT|>;|I%nWDGxh+VQjDVS9>kt!+*PxR4D z%7j3ZStmfixG8J%`tI8a{vq`3Q5W?+xgv1x{U+5*0XuU?=VQS7^PvL$!{*|R#RWC2 zJ3)%INqcXJEw+g3C;A9mP-a*kT2GI?AE7ZSc@Dp#BgS~sM6H2ANv9CK=bN^lA$?ME z=f&EQft5^006-SCGs=d%^4H#-e{75;VT33twum+XmZ4n#Fj2UIqV1{`H@}>%y*OP_ zt>Trwl>WOFIuYb$LwPL|e@cYG(X~u9q&%9g95nPMmxx-LWUWL4teLQe0YID66P`e# zshu;cqQ{V8O;F7KRIVkz_3hz|BNu`!0l;aT1JiR3n#D1UaP?9*J_icI9@pr@y$y&4 zXg!?v{+ajTzLsG&5S{3^jCkh`nRz7zR(%!CF7zJ=d<6*Ewe49N3d)cfBY*tM@co`A zt-)fvT0~WN)f{|I(jX)NX^W3B9x(m$QMTfdxKhD^%IA^Us--|OvBqG|4L_sjr39e>Db#v1bD$CJl^<%i$U&jg4%Szk~o@<4UNcZdjRcIKhUv4~99m zOp-c*fE^i`JvXWTyqY2>uV74Ka)DkBH3oWLA~=R)4rhJ7?W^#_Pj0s)ch&(ELJJYZ z&Fx3ZB&y`txKF`Jq17jKbA}dH4n!fb@_ckh1pf%!mGh>&Lwk4S2@F@6DiQfUp>Psg zH9w#!b{G5uf8AF#i7S1i`$0KmA!@aPc9+*LhI)I*E&;HQ^fAx&f*B6I5YhB^eNvhmvo({rVdQqa9o)y zsf)W)UUhpZjBAcHe960r)Co(C$@aKvpd^!=JiOJ7FYLKSF*i5wH@+6WsZ^7+|&QMVuNVP!M`L!6q4^uqUa5E zL<^&CLLvO(i8B6{T+wky`T==y9A|Z+cT4JLZmAVT4W8K5&iJbxS~o+Tn=IC<&;07^ zN5wz`rXVnuly;S7Io;dMC>li!WW-`|!H{H(@V?upX&*_P=)8rP+pH;Z#gMs7x-Wm~ ze;7O~Ze{nWQ_eN$+aTW}0)%U_yYP`dVNJgo*Y#f?Vu|_S3j7@#YSg0CvOHiN#)h%h zxIHH9v#*ft=`24(;^s zUw8)0d=NbiO8${se*;*;3?W_3dQ6N6Q$Ldwm z3iK7fP~CxbtIs}^DM6Xt8lgKF>?48_+|DKi*WET2#nIcqDxOX%EP2|Uiu7dXvloB_ zC>f_P>J)`QMumJx#|{D52NDDRt|vf~cKHZGUC|KhZMxyvok0mlmF2;1N^p9IgGKSV z)bFhWkJJ=MWVKI6YPs?J0H>TTBraMbE*V2LjT9BQR2t!y@b@}e`nNa7IMD@~P4WA* zAj~DA0{MH~C)C#yb`7qs*@UjgT)&Ktz?{X!!xfLCh4u9YtJ71Kk~Ol(%@EtF!Mz1= zA1&>>n4%C`lJJx1FQFHHG{|ckJ`M48xoKM zh41)nM{g5X@q|$2Lkqze;RNBP(aCs+D<)34v{;Db)Dhjc0r@|;c~6HjAwlp`$^q;a za5Z$cA2KA*3y4u^2%DiknB-Qz8G0=D*4*`Vb9YC>jktNQMRJCf8$OAt@cC`9Wu3&l zyY-$2o@N2H+;X4oPrSjwHOQ^jfM@jtOZik!kf6KRObGOe5OU=@mbo-&qI(0|Dofj&Pd%ox;T6^*I zB}Hz<>4j$$$zE_xfG^Q|Xa~C(cihKQ!~vT(vWfNj4_Z(;xeM~9d``2Uh~-0 z@Q4mqrEsa3>Me=27}_(+-D=B|Hp3v}+M+Gb#7omC5!U)IEui83IVm_Kl2XG!h^{S}v$bgB)oO4%;ep3)kNsUfeU|M<|1{!{{RzU`>lt&^i< z%XqFccOsO0Duf>Fgq-5baL($%F^7z2x{AJ(rraCsP&L*V^LB|;Jgn}*cvE-pxce7jD*vspJCtHM zb<1|UI~If*(zY;pnMPk_&!6aNehtXTpVee7A9OZ#xa>aqqtsVB3DEUJ!=+;Ubq?u54%_sF{jy+xY|Heu_ zSdOP5Njuo0B#&uOqtVrC0F?p?+N--VmUH?9fPKN6NpE6=hxA7N{v}X=(8LU5h$|?N z4{?)X%gV}f3}TV0avpnT6@n){#{4{A+^Vmu&llbDB=kUDI&5V`BsK{jj=nxB(4X-+>Nyo*J%prVS0{!$zznybYk>E0!0qK^ z7%p`QdBC+@*S1x*huGG=kqDL)5hMDnt@2%`vC&E^!~@?kwt(e2^s`;nd*hbH+BX)j znN`2pPlj6Y;N$rY4QCCSfCd87h9}FjpwX9*10@rT zYKG3vIC4~oXiWV5v-uPDuYKd<;y8GCWC&#R`x~_?r;a^IC@4y%tnK#+T*#f!m25Jn z9b4|3x^C^-kHegHrX!TB*J&J^vxik&(}Qr!N9F%S+eZkWnq||!;W&z~@1xq(fcfmE z$c!?{*M!(V{-yd}6tVV@^EzyW$fw=zcJkYocEKM3|erFSvn7)>b1FycLgwO|uLVi1ox zwqn}2R~VQ&RXmfZQwvfc{IwWDgGGB$m~T|0UaoN#kf&JE`};R=)>b$7+E?U9lRf+v zvP3LZ0+Fy&uGE}6G9`wTYv}0fZ}&!EK2h;KaRuI7brshwK1 zlyKWBSvZAo`c%{vjqE7W$R>`FO%jY4%ZXz?tRAoE(ZYJms{j?JPVFYv9|Z7yCulYc z?bFk@Jp+al@bmVRpuVx1+*4zR`l%5o6W!;V^G5@+{KcWhENZeL{4oohyt0{=aq;nL z3V5N^`C64pFaa60Nyiq>xk60ku5~JCoM?_px*|QpgxlQQJi31#>qsJG+P3LiMuw?{ zMMOjdiqU!?5|y%;WYRwZ^R$~!v4{H}o>6Uolx0mSuP(A3TU3>r7eCp3#{Mm;<_OFP zv?eVWn1j8TEnoeK61}21f4S{i&*693B17u#40zltTTCFsInpPg%KN#~;}YEy6U)@Yx*Xaq9+%e4fW!ta>aFp#!T)E+W==%+8(RY%B2eB&J= z1=U1A5~W7|UUlP4BH=$Vvf&n;!=Ty&}6HhUyYCXYji+T-wd~fg#}90 zbt!H?{A{HwXI&MNYrRg596RqVZ>@rEtPFlSZ?Yhnn3*NRMYOu0*O#F7#>S5vpJq<{ zj_nqMOsG1EoC6#aQW#Y^yK2QVOZ(O0G>q9;>}`(#bC=D9VI+xs=2zlYEgP(|M2WcF z9DBEqoyHYzxh*KnCBwBfQ~KCsb&K4R8;=s`h&2YAam+l|`fMBk)+ z&eT2U537;!5{UlvRVs`2-L}|^d5hHqC8tidX_KCZ-|b0LN=nMj%j2ongy#F35_U%+^tJTMW^tZ-iwX5#70^6Hj=E4&=QO&W&7vBf-r#sj@?G&r%%pHY6H+?Wl z6bEX-7s;bcUm8H+2tDFTwR3oPqLA_n4HZ7>Qiw@$KRyNxU8nY%Q-@ZWUKI{x%rbov zPv(tdzJRrQDW}yjq1syr-hCj6L~o*F3m^Esn_v!(Pm+3-mXc%^%sY20i2u%$*(XA7 zLM-%}e8o|xsj@MaFtt!p$#V)u?ui~6AG}I*1JXcx3en=^w*U{y*o96S`SnZ45bV{ zePrvuM~nl}=BZ~tpJX~Y?zihrr(lc2dC#-nW)v=p6p!z+EkZuY&;GVJcYMMp!7Bl5XJddnWu z8!~CGIIB|ezHk@!L;)irnQ)Uya$TjAsFZgM;63v0aX;+xXp2s9~aR z2~C$QI=M(=3r!n$8tSWvcR5Lky z4y6!cZTfT;@_HNQe|r0Zlzae^u%N1Pj2g=A{5`nz&ISB)zm&H9UfHQ%U}&~dTfpsx z-0tv@AZ&9ac_+4tu!1b#O#LAhl26VLbC3brvCfgkd`u~2vS;=UYjy@9OJ}JIK1cH> zj9hU~KBYqL!oGj{5EQ|UN{=i-jCZ%=NM400m=jvCXTG3kf^_FHYovhwaQvTtdQD@aoJAJT1@Bs9rdT#*H`FT=*uA ze3BzZVt@WMk&LajS$P|!ADJ^$hW-RF$9fK=s^U33Jp55zees+2D?!)U>r-LS)!s-R z4k9~JLA7DqV8euHteXm|M0bBba^A~TnGJ6iFP2mp6iPaX_A{2hvE4%9@N>H~RyGu|r zI*&=`;^a)2$~<&)%NB4;n4Nw5@a#TWg8y@Dw_EGmLiRzbx8w#C31(i!q#aXdZJ6H> z$F20nuue1VF}L>?sh65s0k4q15Dp6N5CT7yQmQib=ht-U1`67_Ag!7;1g1kw<4Axa zML%k4g4D{ro*%AzMngZFn}_Y}>_B3)V)#`S+G+;x5-5&VTJcK=<}EF~H$u?7?>3|U zT!ubOf^v+~hov+bPAIHAEV1`7Kj)w6ixx2s0xyFLzR)Zk^Hyoa!n4vU?#-&>ZCA^3 z&U&l!%M;bA|J7W{<7rTi{ESAnpogv9Fw=xvGTj>`B_&5wQwiT(Z6M8y8GzXCr@K!i z2Npm_SJ&z@oR*4R0BMV)j+Wcf@9%wjIX-)P0~;+}`(2*?Y-f94H26>4wo^=8ep`4} zT5V_deTJ`I`l8+o!u!k@`k@(Pg&ZJ7l zPC1uoN5UTw>MxO|ocv9(L=kkyoi*nAdj{7UdsvW1UZ#@($z}luK&_*vN4ocf;$ome ze7sN>rcx$VHnaJ+Tpc`7G=G?SuS*sg6}iyh#h!wX|D&pk)9qQ%Y9e3#w;F6YiXH3i3HT(=ovHlLK^cWZVfOm+EYHLg6FNi{6lw<_ zI`0>s@f@M33t?H=A?v2hY{7eP0s9Z28PaqzZ&ja_^GKlu{+W%XMLUhC%6~p8UF%-D zY3NngQJG`A6G$q+H}AsdZJW*l#N5We1a`5<7A_>KhJ%W2Dqt{J1M3Kc`mN+%4NkCx znDB(U;Obhw$WjTIn}{uYKv#)Cj+#z)Q^&xFc8muC^nK1|nXh)fturSVa19qSx@L~! zEVfB68PMJ0FWh1gead?kS$|$#|Ff{b?}tli?$a^QYKIN)vOv__oUQ5nN>N0=`OAGD zuWTaM!otU*66xpL<}R#uBynnq5GcZ$cnL2*1ld%aUO}V!`;mGoxEjqE z4$1{dVnsLXUq1xv13tqskKOw)>RN~*KC;Br>FtbcQ4$6XFD}#TfhM3@xccAd{*1rl z(G0n;cR2M~M(*0kEKBYvbJSbV;u_L~5 z9*JB5Z)V@!=cE;eUX+NLUR~?-8YpWga&x?dV9WR1X;PHxdOl4rdPNnO5%B2A#jOGJ zsPRJ*8jQ4QSu$vMPvWwgn6~CtXdsxlR8z$9{2TOEuT4M)PhMDGh1f}peAV%*V_7Vy z(m=a`PT^ydUWpNvnY(-VW`SvBWYo{iNU~0#ch*~}G>fAS7u^4*Ku^y!t6ZPRk@T7k zG=#4rH$Y6x*uND#vR+5|Q`TpH&l#I{NsL(k**lmZ*dFp==uaMAXG0WMTn|V3b44Dz ztQ;L32QJ&YFNM=#t&QnAxr2H$Z$pj=ZG(xiZ@*O zX_eG(ThU$&;3Yn$rG4j^wT6|8k54L_4!i@u*l-+hHG`E%FzB-N7d=@~GFb!lx|&uo zvYTXD82(90-#t^?Yr(cMFPFUy8aT8fBa83(R3?Wf_jD8VouPe#DgV&tnCQ5KRmx^%P1UO|tQQ0B^wx2%u8q@65mzWVEB{7YBczAx$N*dl4P-H`7M21FtcjTwQId>%9^;!gC=|rsr>Y@oO2LdlFd2jU^MYaieS=0 z<$a4iAGNk--?TnwZ;xE2nnxg$1V0%jM6r#f*~-6Bk$DEzQzZqVtEezU|WX(Q{6(py_2Nu4+laFmmibI64m8?#db z!&(oyxVnT!uGd$)UN^cv=)D^2rcK-O^2SYhkjPf7A5I;5+}{nogzFpMxSq7$iV7Yx zRB5G@mzRh9JJ|E|BUVrF_Q@TBGnG%d?-cMF=ez?$iTLYTOJ?lUmGS-y$woHK2EUWm zsK6yF3yTb+nkX34!L?x5>vC8Bs@KYJ|3A8@geMADZ7WBMu+g~sN0a!XmW~)Y4LIU* z-ru5UGx*s(e1MUA(Y!Rt{vE_lK+Iko+e57YGKnAf77CYLdbi93G)QHv4JU;IvuDaw z)oXC!B(S^atFU5r|55f@{Hb5I@V&5ZrsJQjtj$1m`c-6UHG+RWCyjH6KNk+K1B<~i zC?(MJ(&srip1zl(3eZ^hf#p;z+G8-4kVV_|3d&WkrrA~6RUX4}IDw2YFe%dXdkUS) znB`2so)p!?Lzcw6m8DVKWEy9tzGG|7_4RDf!z4`fInS=?L4>~((>n^fwf6^qqTcHi zVLV5mr^!y+x<&u*fydww9$WyQ#>yb zn~{mDZH(&keOc@IVAh{{(GX+DnrXdhYXkPmgh0iH#o{y_=C@;2QMaas;_PpKIJ)2e zV|@Ll1WRz+j*n_ReR<6ImTl(X@ns~P&E@6EXX)6H>0@~hD*kP%ZaC|;iM>%GOkiY$ z1*|)FDQm~TPH@AH9qDXqqp-HShDXWy8J1 z`fVRLM%X+KUospvk@M0CjtQevFesaGQDiEI*6Z0tx!qrECAYcm==phgG?`b8rO zj~#)ndb_(B9il@NUTY&&>}@%8<*vsE7R<9tX$SDx{L40SiEA;z=)}Z!c8OMHaw!we zS6dG#tJ0!%qgw92jIum43!jWIKJtzCP5~_Y`Se13e({B1ViJ;qR`=9OSnh_hlefqt zZada{Ssf$85<6F%6?ZiDpxF+7_2jNg*tpB)6UrPJ8G%e)39u6oT|aguDfg-2*RNrR zmes+hC*jxUu4kI-0vgZbwJ=a<%7oZg&WDlg*OE%niOVWYr>cO`RmWF&;E|aU54w=I zZEl*v+14g%IqjsL+x3B_+RaDu;1XfgUyIf}fyWoAEU~ee^Xjl{A@8$%Lp{BRkqIR5 z&V&|AOis$ScHjn8=jDO+B-Vp0+0BVau-lE_Oe2+du5StKz6KvcuKd_BHALn2Ta)>1 z0d(m8(n^6@LBNCS!|31xshLKhKd!2eL7OKE%wX|ZJ$bR!=ir(Kab3#yO~km*ZU*dk ztSD~4i)mqPuQK0y_!LTCpVY^XDz%-><6lx3;i2@|G%%^{q&;Ob>6`YdCuZx7j^Sxt z^VH7ykl4ie&`X@YQ%A(3aS+w^wz~a~8kd_SY{y@9D`^M@5>qJvT4!_q7Dc4a%jL! zV=QcJbfyxw@gxh9ae)G;D-y|qg{~Gq3_>G4A&_qL%lSp5flIsfxOw^be0!+%dQLyX zM~&{a6oHz)VfKKdug~LjgcQ|c&0fRK!}B=vC|ktM7Kd2Z*fo?rpVEhjf+EI_bV6H>tOgJTuA1lNy3Qj@DvHgL(PayHk}8KLjg8Uc>^&-)W*KMUw$J>G(%iQTvP z&wB+hrYc5!S*QRym>HNX>b4I@}{LLr@?CCtYG~C zWG*!L?OXP{3D;b|hw`fPni|5B95;B5=2gk_3($1Zr_gB zt?U@i_z_oVQ^6%C|FXLkDct>m0hzBCPI{(shMwbfZu5=bT0M8V2z6h+;q>{5?5xrk zFLc$_ja!LbqQmYxql>=9!Y1$-(E+K7sh*VzRlMBR>!fhwdjD1kIj~jP4xX2@vmW8B zWns_xy*nd}0&crlN+U|}i_#e(g@%haL^ErPV$KRjU&2?Du*I$*vH9w;vt7QfFCBig z3|^G|#CfT+Y?v(X1v@CUE%T7df5QD$`Nx2lGhDH_sYt^%FZIe<_#vjk%e(gIwXylE zm2TRzec83{{z=yiGc*t{_$U}a+i4RFFWpdAG= zOr@2_gU7`NFEKbyhC?#E0he-3phDS9!Lm}1ZZTBaWi$d4_GSBXtxb_46l-dqd(ql+ z*xVHQ@9#cW`-#VGQvc4PBpDgmj~_ocL`23qSJhYCy~A&xmxEO8u9;ib1BK>#r1Jbg zaDtq@qEIuxb8nS*|8A)3+olsvzkQmgj2eGc6UU(Nf<5nRQxh*zFP*~5-5r1DX}CPRD+=+i*`5M8{73@QCNo1U9a~k{xK~>-&qBj}L}a(8Sv? zH!cVxrl2r)^xSQTV9UiZys~B5d1H6{d#hJC@99o%<#7FK)y&p5lgmma(TXWP9=i}+ zx_+oeKzfLUw^zp0;5Ls|v>zHVAXDmjf}ndss?s2e8G9*wyV3yHe((m~h&`*H%3@m* z5fKuib-YBY`fqKo1RSybXo9;o&X>x3>ck^WmFYGu%f?zu0s9r}2Ipa#>#8$XR&A>% zQsUGl(7wLDYNHxBnmQRA8XDN_i(0+9YCQ66t6p^+$;cpqGntQ-vj=Zwrg#UhdO40B zJDsxKJUu<t0NDH&}5oO&zSC_LfD zFIR%+;nengGb~aJf@8{}-yZfQwiajC2(arE5WAo@Oc=wg*c&^~R%*Pj& zorke6d4=F?PFVt(^C{V)b0z2yg50d_tOKQelN(G0hf0(chn&Cr?(V0)fq{ENLxVxP z_Y^$PcWp8~<2Wf`2J?FQpLH$g=I4)hJ(iE19%|2=OpJrgwWyno#Ng`g(o!bkQ{(!G zUk95{Zq%^~AS!#K?4x)xQ)vJ$p%#F6OL|>nqhd?e#gy1HSb`Xu zBTql2*U;E_B@#)_g0M zJN$0bgwuWQ&X-Co9uRL^QS>A$RCmXkIbp? zPkrax=yvj0i4_~TJ?ExRZwEIK^fs;aoi<`zmXiYqjjd1$09ZckPn z;dz;5p*y3u%;w&cKv7gF=lILU@$={6hY(!k7(mSn%r7 zq2ghF*#<}uPWOH?A(OCY`XEB5We>umk2a$lE|soe^i&to()OCaf^9zYeV*#F)=M)H zNVJ$fXegI)sCa3+?S!}Zz@BPo!$(6k`HS`+!X%?r4gD?|Kh>P3YgZe{!u^2NI6zywFC&Yc2OtHwbj3J^-$1J-rPd_Wg-(DT)+!{yWK z=O1NIMH=Mc`lI%3{?}w}!72l`5lDIX`;pN9${AcS@qfB=f#X1lgzfIin$BUkq|0D1 zuS{Yd0_shHL_!o}KxS21hgx$%#Idg<4hR4mqTaQgE<22pzsSKK02*6hMNc%yN+Hu~ z_59)a!h+7huj-9#^BE2(w{k`y=w0~tPl{?)T9={J&H}LN3TAmA4qSZT6%fcsz`|vT zDI~aH(w5~~f$s9B zsCRly=6pZXSH8$7WTiZ752Mfr6ePhYSN3J7#r&; zQA%GJ9>!2grrXVagea;ik{|(OfN=0dPC^o5{CDAg)&YT9dm5S>aPWswlc^-0vl<|d z0{9Cp&EZxC_b%K$vImquU(Kj)8!&zcNn)f~=m85pySslDS0e}kxiT;^QqY9A)Ys$L zWy*#p8Yq?%XFAf7jlvDB6s^ish~hI{LW{t*$ucjwFh||Rg85e;Rgr5bHo!7BmptUN zR3EKv!Kb|&-;OR+fad%)QfBFTS;YZk3cu*fV5)Y39z`(R5|V72iG-H6y_=InXy)ZJ zEf)2S_51nDA75wf&tZ!BT2<>IJVufy1mvL8ug-?I>lc(?(v0^Ls}Fxd%DexhFmA52 zx>?)WVhH9Wz)eU*-@~ewddC)}2G&EX4#tv?2*EVr(hZAGsU+V18vyF?pH*6zF#~1- zF@+Ttx}Ie-Jpj;WsAs^0#V<<^K;pG8g}dQA>j*P%)>urbjU_pwQMt}ao`r51r2G!v zGZbQz*|_RR8xCSXZgnA;g=A_8<=}i!=HkTaD}w$4)Q+LVvZ}X?p4a7;GP%_0aEDTF z+;g+00FE~|lLAVTuTvxo0H(xS+{$D&nbk<$LAY2rL17TvY1W9b_-pJ$S5{?+{1&m` zaoW@Py;C6^dMAfwrG3(=icW{Ay&w9`{L(nMULhT>8z2<$tlfDCwm9K^1t!%$+H*H0d9s0c6 zw%{&B|4Bf1X0@M_aaSZ31+KfFNUR$hLN`hBO@b1x9dS-?^6{=Jq+VO)10z0;$TaXFb*u9A(xf&bC)R4mUk`;Njwx_z*M5i zmKr0E5eNq-?LUA1p5|7L08u2mjx}RGGVg57!gXWe7dZY#$x)G;Q0Dl+B(2Asiao-8 zH>Y)p3CIUBsaD2ZP)qLF6C*c`q#Gqi+7vjJVP9f4v<3D;LTz;O?R-y28ndojQvIZv zo-+@Bz2X3vCFSAAHr?z{>p(Vp=)v!OM!n*9+VP(R`;R}te=~x}#L_bI*0+Oy!dDx( zi6D*$AQ{wwiyDD+YsysI01(aRXShp6hv8>iuAyQ$e|-s%cV$qLoA-Fy3G$XSkHhYF zF(`m$x{zNUA3MltHsy?sq5AKz7^AZpwMSc7S-~5{82}m@n(tl5DGC#xV+wt*eFOab z{a5zg1?#F0?X?4n;2?tJ{nDUyG96s$Bxr7FSv9JeFM>AHb>s8^53WtG@6OGu;8RGF zV@u^f5~w^=ifxltIrLbdZ*qoCL5*BSECFE+5d2f4`h|Y`=*_xYffPQxkEOPHU)%=c zU3x58DMG2KB>7OXTLM2!DHrx^m}XJ6T9kx3Yy0-&Oh3F4no`tXCs#B;Z!PHc`R6Ba zH@u?U9oBTQk;bE{Cih##-AhL2LO+ZuWRjb+KHhM9K>+eh1+DG=Tz-dRd~Ms?kJjWv zZve&j+!&xi3E2!tIW`uu#3wg$xdCEED5Pfj*z@2z08>e6B&e2UfddK;L>7f)1UP)x z)Jz3UH+@9X&|KBhEI|R3S5!bWH7)GzM?WYR_35B0;OV=N$M*C{lxbC7Z}Fd~DN51Y z$)>5*VtQIQI|EBgODB(xe*CVFQ)HqTzfaJtJ(#uK8Jh?=QJuboO_)zy{(TB}#H10F z1QJuMq8(O_h+976N=&>Kw>eN0Lh* z=*k~IcGsB?ZNM$xz0nLV*MIyNaFUy51y5) zp+OI@APs&PoU5o~_SI&WmNS=NX((TYgG|yDLrip&SsXPrHDiBOYr89(%d`OiU`>LO zfQx^B#?Q`bU!N`~%1R&#)WMd-GU5b3+{RfRZ%-MU9ppMsZ|hm@kbd(hYo1okR{Vhz z96h+WO6>o5+;ZG5DL=kY`bmI1Qy42geh1!>(gcoyx19+AY4kN`(PcEL5Seb#B+hCi zfkXgqNgz~_zPO^|hgPMvudiONke5o}7Ji<%l$6w2FD838OHF(41%e7V96ouf1h%LG zg5fKM0~ZNTN0kRUiI34(TZvRH?+aXba~+Fp1kwRV?{&_>f-+mH{|p z&mhytd<9LjrYaWLWa<`t5^r|MQX?OtUq+na#x|U93V6J^hfCh$Pfz|WElMZL)Wi}^ zkb>>)?W@TGDgVGgBMh1k<38^sc*8e1gmuDf2VVYUa9N$f-SD@7$r30@$rVG1J14Gh z97r-8q`{opUC*jpGylIO6%M*N1pRJ)zzvwQ*_y!AiP2H#c@HM@QGCg(i(MUX$tWP0 zot3rw>WceGu>SSc{LN*q96Y=?AFf+E;fq4LzE?2kWMrHJsLk7Wb3S;@*pH2mOH^rz zl1G@<*46ba9XIFEeMzy%r~wa8?^+_MGHW`$c9IsURuu$Ss33_{lgBeA!G!;zfaQPx3y>TRUrR?s=^4DmzS)-Q0@s|ImJb!U=A^^b2zKy_qm{3LBFeY*m8`gU$;1YM?`38EbP27 zDRpS4?RXcGx5Hh^N(2s;c5axm?iJ!ouZXj7wX%}C4iNiYKdO-2PeM$t=g_j8Z}ade zneL&S5ev%gy4#AaUp~I@S2>kuY6EN_h$90?X#SR7grM6>>TOzaaIar`6E-&+L<$-&EGz{1fyozwr>deXrYQwQ zRg^T1%B!oZL)WigFCm0*x7&3PLfxI6HiS`Fdi?P}W3RpTn(~7m{J`X#mlDi=CbAjYeZVLkQ9Q{+>xG1wzl13?fJIp>|+Paxr(Z863&MNxQ`Wkl1o zf~u;vqN-W7Qh_*$!Eu}(A;eJ>r3(Ool#-jKsT@0Y%orXXR)ZkWUV7;z6h%=IhM}LP zX}~#8Fvc+GI}g z6A;GPr$7CfXl`x}UAS;T+uq)`g%E>;5Q}rpb{WAs;hb+3i$$l|Y$kcN(&9KS_Ikac zyvb!qDPtjo$2so-fZNY@0ANB0wz#+m)6>(x)H5nsuQtzW8tszemlvl!_PFM48v%C z{cGRAoJW@L2g3J#M^Tg>W6YzJ2CJ*fOf$?wpZWAd$Z?$7_3PJ%Y}>Xwoes{j%&pc2 z-g)Pp<Ve8yNWU;HrNuEfooH{r;UBX|6w z-_Zf^eh9;GSH`VrS&}60Nq|#S<=bz(@!D_C&(HKs(+n765o0XOn^C|r*7ZCe{pn+$ z9|*&6BuNr8%QBv2nL{aUsfxO_wzduj4jg30m_j(`1w~N?7-LlcC?bS7W6aO8tSf|Y z`YauU(5=I4Uxl+503R~?ZWr%YAuP*+nYXWh5dc6@6e~#*fe>Os2;N^H-OxMFKKq|I zqkcJ#QzZ<;R8>_^2+;w6K-cxPt*tFMdE&SdMZ82Q9TY-TbzL{o-F?a7oOkniJw*ud zyD8i6>Hzp4TgPp$i-~S0Z}dMkOjW%DWl(Hzff2=97Ja<-76dAN~<+H@5!R zak`%YKz^&$+5~{M5F$hfG0wRJjGUE~HCSKYI6gNwXSdsJ002))xut2^R!(%Kv$L~; za}N0d@va7fj|pz4aT7vtu9N?nro_pUr+$wycHz|N-}?O8%EIOO`T5xMyq=;cLAhL} zolZx<9`0@w3WfLm?$E)*>eSTqpHCh>dKv%*0HBC5R!q}G004u7gL@C~V^Ad!?2<$X z#u)dt1AF+G;yv_`d)UJs_OORN>|qak*ux(7u!lYDVGn!Q!yfjqhdu0J4|fgz4+H_M7Xt$WucwDg5Rmo&VGcGR8Txj!JCI^a@^*J&_z!{$_AZ}1 zQBk6vy~NYkmHi$gKc5+E5%;o}3=E8+o-U3d6}R5r3iLbVAmaA$zh8ROf@4447?oJB zJ9|}PenfM(Lf6|ZG4Z{DP7_Pqs`j;*JH5B%S)vHC?{kW9>~a5++WA%dvp<~u@wzB3 ziGB8uBXYZ!OrLe1t7gq{z1OPg`hpo}F2z;73u>(Ai@cXTV`s{OTESH_x0ft1oY-|H z%6WmalIZNs(;TkWJij9IV!6lGv*Erf>dXubGZtEVu8)7$&R1!3R@HC97aOB-I9=Kexmq#dhT|4 z%@v%}PiN~sI@Ek9@5aep>-aZz)_UD4zpHXxYrAvJ{clFb`*+5!*>C^ScKdf<4z7b! hbk5`Q0lolkv_x%{&S}d4% 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 B(_#Ps diff --git a/companion/src/images/read_flash.png b/companion/src/images/read_flash.png index c9065819b9c44f86bca1d09150e3ef544b7288ef..ab8991a8e244230178ed59d4b89b5b25f3e066a1 100644 GIT binary patch delta 730 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 Ef^3By2LJ#7 diff --git a/companion/src/images/save.png b/companion/src/images/save.png index 651b2a41fc302ca57261118f3f256d469e373ca9..f0550d979c9943b9f8ef462377be51b8cf331936 100644 GIT binary patch literal 280 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 literal 6839 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 diff --git a/companion/src/images/simulate.png b/companion/src/images/simulate.png index 429e12b9a17b1a1c601551414a3420295f1d949a..acdf192d6e26952560bc08ceee5515d5dd6c04fb 100644 GIT binary patch literal 399 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!Y)RhkE)4%caKYZ?lYt_f1s;*b z3=DjSL74G){)!Z!AbW|YuPggKMt&ZCP2bCt?=dhi%6PgshE&{od&4m6P=ZX`$9Ar_ z4<3ZQh$<)-vT4dTH-E|5;>W6gVQqN9E6!bC8T!ug**df|IZx-i>S?8N(cf3|@4xf> z`)+=iFkPid#d8uE{hY-#J#9reL-B)aB3~QL4zL%b_x*C%{rSz4Z|t`$b{=k=6XT?y zK3ziN&yygg)_E~m3pPx)HVfEsa;}iZl_!3@B56g>*-q6J`Ldje%?|R ztp-I$S*|Z^cLX9fKEM0S@Ot^|V&=Wf%psC5SYOOoD)T~khq-&{0@e$E`NePlYQDdR k>DYl&)vgdvOj;rzEmdh>U9~3J78rC4p00i_>zopr0Qi_@% literal 10065 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 diff --git a/companion/src/images/switch_dir.png b/companion/src/images/switch_dir.png index a9ba5f47a42098c063a49614cb3327def1c10f94..ec1bdc1d00571d3df150105d37650a6c3b84c70b 100644 GIT binary patch literal 716 zcmV;-0yF)IP)VGd000McNliru-T@B{1v)Z7P`v;E0$E8! zK~#9!?U_Gl)LsxAE%XbiXt%mMpCi2Z&EGyz-# z&H)Xj+&{E{r@$7l)8oow5@s4$c8IcL;w=FOV-V&j@Y*TNSKy}QrJ*JPP66+n!h8TO z#E^?p;H-p?5vlT ztjlr&_-u1pb66adFWprvPIa#2jzp_f#C?U}AYZJI-gKiMa055=T zXH!_jRauv_z619|s*DrB1AFkQT$MR{tH;1pC_;@`uIS(&HFk5=5uoinXB&8K^Is4& zfy>TDGViLxy9o8DfIF8%>edtBG_dM?xvYmf7l3u=S#98WNUeb_j}Sr#A%qY@2qAp6oSSOuB+xdw$e2D$)h&VG+wU^+gIZZ4)Sj?Q5L{VvJ? zz&@d)p=KUBvt>u+|8Vl;YGIK6I*lXM^&1FUs{4RiIT^I-uaU@j_S=sQ<7MAJTWr-E zR!qcXx1gn2%e~EN2hH;pS=SaHGf|#1VJn62Q!;>>SU$?FjfGz zn+z@Vzm4Y7m<<+*-g3iqmQ_~SVjZG^jUs`1wZ0A-eN4@)gFe4z8oVSpr3RqY%_|R(tfQkbtYF@w40{ zJ@0+I^+uU>3dQZD#JF8BnYpKQdD!MOD{z07j*iaQ#Dsp8P@FU}Vz_KX=!b>EVL;zN zbl=Aafv%*?SP?T zwSD96+=1kk=jqjGCvF9=!25vZ<>ha4bD|sWT;09BUARcpkBR@x?!%B|2#ZVSMiVvX z(}Sy+p`lrrP>*=WyZisb*n~&h#M5DuJ9#y=qjYTRQ23>s4_Dj%$klB%v>g8CLX@by zvD6+ZS0q}LmTxnDZZ56lHa`R3Gv=WTBH}2$+p7n!^mN^vL(W@xbH0@VBWg_@G8d54 z%jb{sKMern|Gr7Rm3g=;8TdQY`h@xSZ|8ZI6q3ZMSFl4N=9a-L$SuPNO+;4CeeaO- z{X%!xv!?LT(b~O2RqnzO&A!3GZL^-msyA}xQ?H7O=xb|hjqU89sq7M^suF>%`w>8s z{L3U#5?>%KfXalwYqy7!!kEFcM#+6F$2ReMn_ z623Cw2ky+UfuSISA5v0M*LENHYHx@sa|1a!nh3v|Yb~t>VqMkzQh9;g-W=DOg15NJ z-_lw7DKb*U^Z?r#2y!&U&hFz}+A+=8!Nwx<#EFq?c`rt`mpmZ3?U(y>A0&RlS)@C)j{-RycwvV$Shqn1OI?OLERVO#p- z#$}1TUE~CvrO)B{a_uw^5A=`NQnEjtVYBzgH)c_G>rp#jr|0B}sD*l?#wMqHj-Q2kaw)>gaP z1kVAuLAj>S>xYXAguY6Jgswp4>&Pe3&ImjANizL07W&xr!#!F#0*zbbem@)~0Ip z*N4G@JfOCw+q|voN0!>p_|wyH6~H|VWC#MZ`QmziVEftJ%wqour0BP|D4%P1e03zRGEWU z!5_*OA<3Rdo19eZl-qY?U|IZv7!3n=HBo(r1p}v?umo(3Q4m`tvI^M^EO+46&;(t50L6O*4_X!aXEbq&<{PfFE9uU4K_?h3_d5q2S$`z0NA)9UixfRsd`kO3YjB=gQY>SO51EwkxJHK`w?9Cmc7#qC~~M)z#w{Gk6na+n7_SXP0EZE; zyv%iDPDR-mS+x0H^XKnSh%-gR)>=T|eJrzj=|!%}4$dsmH36N@aRBN8?c6x06A2z$ z&NZr5^YxW>c4LS|QX7g5tU%0dngnyuoy4cWR1f`+FP|(bCM36jxz*R7bcYF zV`*%7&`)8}@>$VNJ3h7rkgLlh%blgTU$959n#(Vxh&d%VTyE35OTnVob(6)dC!2VC z3pSp^9clDunm*l4&LXn<3%y$*3#-dZdb;bSm6i1G40%0m{(Jb)Ckw+y(osv*jf{Lj z7+#uUJa#=k_V|r+WZ=1255j73S1$9&3yWB4hm`yc6HM*w_?e zoqE}Kj(=S<00FEj(U-!)5`H%W5(%muYB(d^lmPG-Xo^}~gkEX2z0Z>=aqXea0=Bpl za5;(C#Z6g9^-*4yi5e51qc#wP#r(8hY6`7oqNb7PYQ(uj^)QWWRBjUB9}>nZY6h#3 z>>jHG`79?oE*ABu-Uvu6=$cv8&Ie3FbsE77tQ4{NBOUxFDXt4cFK6b}=w<}fFI3== zmbqpS2TUUmH<_Gu@mA`3dX1|uIk-E^b34Wwoc1?|c>R@&c0MJ^(<8?NKyQ~S;-0_$ zG=@KY(;d?4GduES;Q9F6UC0VlEq+?7${ham{Rl(E`ODUF(=3Be#zM?Q^?Z7ICa^I( zp?bU)5@WGm=7&Rt+*95`i0}WNnMEbwW4t9pe93iGNsH0b1}B>DpAgA?%4?GbY5do@ z&}!NgvroOq(udC43fiKtSo?+z99t6KzD>`{VuXf;{rAON($iev{Et@H&Tj9d|DN+} z*RceLRQ}tC#xL?X-5C5}ln}7mj2U`fpFZDL-HzEae~f@LcpPzfu`LmOPpd506K}rP zO0wuwy|UI^hiVAH;ncX@bp3p5UqRY3WutKL?&RO;v-UkDlHAO2hXl!OS?c*L^2WpI zwvM>grLHqxF_4+uOwG))Q&Q|}O%N=H{=3=xZgW`%TJ5RmbHOvbh3bh8{QRinA=Yy; z;PDS`rmDN4Ka>T}`KZ;;9Tp1(q`2mIW~4W$>!;1<7If|-{Fe+WdR|m-mJRP01inU}o?=y7 z=U2qD8*>SvJfbgFr(rhDEcS48?0r#27Q_u>uY>Wr8`(ivtNL$GW0ZpP@W;FVb@y5h zybhs{v;L&nNx^U4zx_){A+Vg859KYOUko2Y`$$qoU7fA%<(V4VXleO>=eP})6)hmc zXJswD$9(-y#CSF?BdXRIOC^}ar%~@D1}6MD#l3sSN32_>^(IOVl8y&4%lLd5d2KcA zCr=ovY(r9jrQ};TxgN)zk@(fUQ#&sI@;t)Ly&pub)MO_5@|K%&IWhNwxTSc7t1Bd3Zbsa;GX+CA{gu`Lmc9(L2z7d(7`WJ~Y z*qDm*q1JxfLfjo6eW!EXd<7{w+|>n7F)qNl{lJu|$_|yYrsLk9BXkezIy{A(YjRHa z%GL+lMn;;)xEmS&(-35Xq2?&Idj7Yd5sMaQVP0=}c4}9LrbG8Yu9kl7-H#tHse8g> ztEx064T1-vuI^4-DeJ$_OruQ99+m4Pg2;12H=WPJ|4xHBOY7>=CvG2Sh9<9hl$7dp ztjYwTeM_1Z5Xghd1qQ#NK?(K~-m^i8f(YNNKvm~Bc6){Ejf9eSUx|XgY~n+hO!;ej z`(_Gh%Qf!HyT5*JLJHj-I9wQlOuRf5&7*J<*P1YBohV;eD)dVhJx0GGF3dvqgGBvl z?fXzX*$c1Zn&?QX*+z$~{8CGqf#V-Zlg5uC)cGcVIltn+LrYdA5%D8|6N_q;J}!@r z{L`R(@>?U{AO|^8$h31X-mC3XhM6kC**{{4IhucX@V>qB!CLIb6oh<~&b;hSRuH!7 zAsyCZeAR!}rym=(&sq0P9pLS|=FYZ4oA!kbkDM{rOso{YFRZB#pA1AeV` z?|*B7&$0bt(RE_=;w_3iY;vpt$-Gqf!UQ?TVz1VbMe>aGL6WV%I>+#3n=$gsy{b{g z|AjI!I>MLSRF(9<-;6kFz4ryi0gpg?TSd_YZ=F&vM0}bUR=k`_LYNH3Q^obyE`)E; zbWNL9d2}8vq=;P2#XjQ}R)o5@#Mt<1F6~F{w2`;t7&ZECbev9_m~y#lu!(We*nS?m z-au1@a|nC;(xd8fiJ}?)^*vJ!$cJn*mmU5+5FEJ$m}!=TO7|6Z@N?Cu{pK+&tV~Ga zhimALrBNF4Z+sul^N3VTUJ*IdbYfLu!!!*ny)mEKaDG&Ch3@=0Rm5jcmO>)u8r~o_ zn6`&E1KFMQ4x{+LTpD&V}Rn_9V5Hi|d)z&g# ziyB<&#O-fSLf78r4y{4kvp8iE3m#)Prj#fd+dNzx4!;dR$T=t^zW|!6k=bEc1U@`v z|LxfiHAT-?H^Bb8Wwqw}QyoPhzYZ0C*Ae}YSx&nfw*5I3#YOAnG?_xvo!i^N%ps<{ z*NhE8Hngz1k#XM}^a!PQM(?RF+a$P94C1IlB}<0IvxO*5TA@S)dh%=Zao2peZD$&P z9kqCjQ!RNcB7!UElmolYMc(4@j01RSRDxvXiVs;}P(gXmhm&K(#o}q$(`xZ^&4Ml= z0U#=?j}8v{0}GSVZieImbm`I@@LPE9+lSC+n2MVND=qynwgLCQx=kw={&f^=??i3t zGtqcqZsnu7AmV4A>N(vxp>^EecyY%6$kYT9xE-z^^WjrM)ugTGYv}ni4hzUPcIz1B zBe|xY8{tBK+MX;ytL1zY4ek@Pcip>_so83l)}4bG_V=AG5PO@SLcV|*cqDgtoTlO$ zvG-rG~iho*zl?>$D zJIi*bF#2+zs(V3luhUaj+M@{JwOc(JCoDGQ>rR!-{Q5zUSuE8WO)CMF}uIw z%h%>v=X@&6RI#fube6-ymZLAJXnuWRk});TV*7TtL@dT-$L2x#fs8bIFT9@YX;}c! zTFKN0R=<(T4$I+3Ovs;nE7i5CE6%q_HR2^Vg0d z(zBgtTT`qq=j=WK1&X0n17+thvm0OK-h7)~b-g7~nUF98`WaIKaH20x*d72BjPCL! z`bC8+j+78`OfvU#hs!#&sD00EL5zG!gjKy2Oc=q9nB}e45UDU)gr$>_O~FiqJ1tER zn{)U00|PJd=fzYnSxjXRL^3rtAdTu~?n3A<0S^|&KHB4A^PT5M1X=&vC$o#&F+Hg? z7eD!$tR7giiSHo@===Ea%o~l}95C$lo^cLz;D9j~#wsI&Q+wcMkVflczG@FEBmV1D z(D7(9SDmHU@9;<@ba1?r?ApP7Mp;*(k|4>87tRa1unGzYCcbx^Qg);A)+3-K2Zch3 zt!Dz5Ki7aAF+CdENRcWR_v;|^p*p45gE`T%Gaie>XN`>hdO&9&$j=c73f=?L32NQ! zgL_ts-@!^b`6|ILHBNu^4s?al{V0MLyedlr!|r@YZNofwOlFy-?;FxbR}>Af%CY>_ zeGyw*Q;FwVC#5~|5`J4zLE-87So!pKaviMvC5}_BikqINY2{wP?mAMZ5^auBdlPk4 zHk+`oH0nk7!ra1QAWk9X&lue^W)*;^)Q_5a=HDg6jyrv?=ss|*-6QfpWtrIruYQ`e zw6^{r)^6;vFd77{y&6*@tbJdiT@_k z^7v@<_FVH{QKf7ske9SpkU+C>{a!OWA8M1wd(ocO&dyHF(monXC*Tpas^j4yQe|xh zX$__mFjJsM=3y`xOKKXL8tLHc$$Z@HSt3pQ#IVl?# zGZ@r(Zif_sJUl$)6O>$UEHZiM`gwW9&CJ+@uD;d{C8^w!I`#i;wmb+9?oFiQF8aA? zf6E~=4uqC{mQf_uN=FJupktp-12b5yaf;0J&)XU3s;)V4>QdJ_FSiCm3({#qQ(9|r+O(KXxT z)F;e((Q{4onLp=;uu=Of!!_=kHkmNQ{1ZO5EwY|hcfA%OSMuH7_4yUQ`3&M>BZ?*~ zuWfBzG`)N0dU3clo9Qvk<4cZAik*DhElnxjzo=5@Ie8m`7YHeEo8RtZOzJWbXbt1H zw6MUnKUpyu7@^<B zwIGT!1O>pnPi3y#?Egd4FDlBWUH>k{awb^psYd;hyRRKCBJ8Z?=>`G-9$(4t^xsm= z@|JU-Zh0zBUa;$UejKqcyb-09R#N&s#-}HRmH8uy#T8JIPlmty&EBE#69HSA+gtyz zk9`LF+Hw?mhn1Ce{^7%i|9p%9j(dCXeVW0B-;;luSz8-33c|s}`xn2Q-{)^^z~jTb*g@N!9zGQwUBU{I8 z)=;=WKErsv@&Ta_Pj)QJImhY7UGVBfhTsX49ox7g%44bpFU<%kC@J_k+f+=}lxyLi zsyExO=ADVM4x2lvQf2S7@*c~XGqxH%`}L~o=lpr~f3|t9-kZyI)8f>Du;yR)EH}Ta z&`aDqC-nW1?+vHI+O34Hy)N%@j@x|S#NJq`kVYw9F_JOUKWMrBE?+l4{Tp*Jd|N9HkF&d;Q!SQDZlEgKa&q= z733XT>@R#`=1r-YE3E88A1>)S6ln2rt;U>Ruh*2f2G^IaEs(MZu=twVSZiFrl3_O2 k@wLJ)!g!QmV3J(?VGp;&j!SC)fXRTt)78&qol`;+01vnR^#A|> literal 12332 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 SP@+lz0000j@Z$38YX}3Qbz650&~* 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 diff --git a/companion/src/images/write_eeprom.png b/companion/src/images/write_eeprom.png index 15e58d0a3290aad872140199b7b8ae9c50fae954..f4aa77aa8d686a1d0dd55742ec84f82eb6a5a011 100644 GIT binary patch delta 425 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 Sl?VGT5ZBYy&t;ucLK6VE!EW^c literal 26192 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 iNF0000}BIT;pwyl4D?>X;@zbDB_KDf_) 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

YuqK%^lpKXc*OM_yCc1@716k=seveCb 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 diff --git a/companion/src/mainwindow.cpp b/companion/src/mainwindow.cpp index ac773fb39..5c57945f3 100644 --- a/companion/src/mainwindow.cpp +++ b/companion/src/mainwindow.cpp @@ -1768,7 +1768,7 @@ void MainWindow::createActions() separatorAct = new QAction(this); separatorAct->setSeparator(true); - aboutAct = new QAction(QIcon(":/icon.png"), tr("&About"), this); + aboutAct = new QAction(QIcon(":/images/information.png"), tr("&About"), this); aboutAct->setStatusTip(tr("Show the application's About box")); connect(aboutAct, SIGNAL(triggered()), this, SLOT(about())); @@ -1852,10 +1852,10 @@ void MainWindow::createMenus() helpMenu = menuBar()->addMenu(tr("&Help")); helpMenu->addSeparator(); - helpMenu->addAction(aboutAct); - helpMenu->addSeparator(); helpMenu->addAction(checkForUpdatesAct); helpMenu->addSeparator(); + helpMenu->addAction(aboutAct); + helpMenu->addSeparator(); helpMenu->addAction(changelogAct); helpMenu->addAction(fwchangelogAct); helpMenu->addSeparator(); @@ -1937,8 +1937,8 @@ void MainWindow::createToolBars() burnToolBar->addAction(burnConfigAct); helpToolBar = addToolBar(tr("Help")); - helpToolBar->addAction(aboutAct); helpToolBar->addAction(checkForUpdatesAct); + helpToolBar->addAction(aboutAct); } void MainWindow::createStatusBar() From bea9c742438f5fbfbab69331bd387933c6696ea7 Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Wed, 15 Jan 2014 20:40:53 +0100 Subject: [PATCH 137/308] Companion support for FAS offset, Persistent mAh and Altitude in top bar --- companion/src/eeprominterface.h | 10 +- .../src/firmwares/opentx/opentxeeprom.cpp | 12 +- .../src/firmwares/opentx/opentxinterface.cpp | 5 + companion/src/modeledit/telemetry.cpp | 45 +++++++- companion/src/modeledit/telemetry.h | 3 + companion/src/modeledit/telemetry.ui | 104 +++++++++++++++++- 6 files changed, 166 insertions(+), 13 deletions(-) diff --git a/companion/src/eeprominterface.h b/companion/src/eeprominterface.h index 02cc9650d..222bdf6f1 100644 --- a/companion/src/eeprominterface.h +++ b/companion/src/eeprominterface.h @@ -51,7 +51,8 @@ enum BoardEnum { BOARD_TARANIS_REV4a }; -#define IS_STOCK(board) (board==BOARD_STOCK || board==BOARD_M128) +#define IS_9X(board) (board==BOARD_STOCK || board==BOARD_M128) +#define IS_STOCK(board) (board==BOARD_STOCK) #define IS_2560(board) (board==BOARD_GRUVIN9X || board==BOARD_MEGA2560) #define IS_ARM(board) (board==BOARD_SKY9X || board==BOARD_TARANIS || board==BOARD_TARANIS_REV4a) #define IS_TARANIS(board) (board==BOARD_TARANIS || board==BOARD_TARANIS_REV4a) @@ -753,6 +754,9 @@ class FrSkyData { int varioCenterMin; // if increment in 0.2m/s = 3.0m/s max int varioCenterMax; int varioMax; + bool mAhPersistent; + unsigned int storedMah; + int fasOffset; void clear() { memset(this, 0, sizeof(FrSkyData)); rssiAlarms[0].clear(2, 45); rssiAlarms[1].clear(3, 42); varioSource = 2/*VARIO*/; } }; @@ -1012,7 +1016,9 @@ enum Capability { LuaInputs, LimitsPer1000, EnhancedCurves, - TelemetryInternalAlarms + TelemetryInternalAlarms, + HasFasOffset, + HasMahPersistent }; enum UseContext { diff --git a/companion/src/firmwares/opentx/opentxeeprom.cpp b/companion/src/firmwares/opentx/opentxeeprom.cpp index b723ac0a2..c72b0a4b5 100644 --- a/companion/src/firmwares/opentx/opentxeeprom.cpp +++ b/companion/src/firmwares/opentx/opentxeeprom.cpp @@ -1688,8 +1688,7 @@ class FrskyField: public StructField { Append(new UnsignedField<8>(frsky.usrProto)); if (version >= 216) { Append(new UnsignedField<7>(frsky.voltsSource)); - // TODO altitude displayed - Append(new SpareBitsField<1>()); + Append(new BoolField<1>(frsky.altitudeDisplayed)); } else { Append(new UnsignedField<8>(frsky.voltsSource)); @@ -1718,10 +1717,9 @@ class FrskyField: public StructField { Append(new ConversionField< SignedField<6> >(frsky.rssiAlarms[i].value, -45+i*3)); } if (version >= 216) { - // TODO uint16_t mAhPersistent:1; - // uint16_t storedMah:15; - // int8_t fasOffset; - Append(new SpareBitsField<24>()); + Append(new BoolField<1>(frsky.mAhPersistent)); + Append(new UnsignedField<15>(frsky.storedMah)); + Append(new SignedField<8>(frsky.fasOffset)); } } else { @@ -2043,7 +2041,7 @@ Open9xGeneralDataNew::Open9xGeneralDataNew(GeneralSettings & generalData, BoardE internalField.Append(new SpareBitsField<1>()); internalField.Append(new UnsignedField<8>(generalData.inactivityTimer)); - if (IS_STOCK(board) && version >= 215) { + if (IS_9X(board) && version >= 215) { internalField.Append(new UnsignedField<3>(generalData.mavbaud)); } else { diff --git a/companion/src/firmwares/opentx/opentxinterface.cpp b/companion/src/firmwares/opentx/opentxinterface.cpp index 73738e0b4..c24a1e471 100644 --- a/companion/src/firmwares/opentx/opentxinterface.cpp +++ b/companion/src/firmwares/opentx/opentxinterface.cpp @@ -701,6 +701,10 @@ int Open9xInterface::getCapability(const Capability capability) case EnhancedCurves: case TelemetryInternalAlarms: return IS_TARANIS(board); + case HasFasOffset: + return (IS_STOCK(board) ? false : true); + case HasMahPersistent: + return (IS_ARM(board) ? true : false); default: return 0; } @@ -1078,6 +1082,7 @@ void RegisterOpen9xFirmwares() open9x->addOption("novario", QObject::tr("No vario support")); open9x->addOption("nogps", QObject::tr("No GPS support")); open9x->addOption("nogauges", QObject::tr("No gauges in the custom telemetry screen")); + open9x->addOption("fasoffset", QObject::tr("Allow compensating for offset errors in FrSky FAS current sensors")); open9x->addOptions(fai_options); firmwares.push_back(open9x); diff --git a/companion/src/modeledit/telemetry.cpp b/companion/src/modeledit/telemetry.cpp index 22db68ae4..8b286f281 100644 --- a/companion/src/modeledit/telemetry.cpp +++ b/companion/src/modeledit/telemetry.cpp @@ -375,8 +375,7 @@ void TelemetryPanel::setup() ui->AltitudeGPS_ChkB->setChecked(model.frsky.FrSkyGpsAlt); } int varioCap=GetEepromInterface()->getCapability(HasVario); - // if (IS_TARANIS(GetEepromInterface()->getBoard())) { - if (false) { + if (IS_TARANIS(GetEepromInterface()->getBoard())) { ui->AltitudeToolbar_ChkB->setChecked(model.frsky.altitudeDisplayed); } else { ui->AltitudeToolbar_ChkB->hide(); @@ -481,6 +480,29 @@ void TelemetryPanel::setup() } else { ui->frskyProtoCB->addItem(tr("Winged Shadow How High (not supported)")); } + + ui->variousGB->hide(); + if (!(GetEepromInterface()->getCapability(HasFasOffset)) && !(firmware_id.contains("fasoffset"))) { + ui->fasOffset_label->hide(); + ui->fasOffset_DSB->hide(); + } else { + ui->fasOffset_DSB->setValue(model.frsky.fasOffset/10.0); + ui->variousGB->show(); + } + + if (!(GetEepromInterface()->getCapability(HasMahPersistent))) { + ui->mahCount_label->hide(); + ui->mahCount_SB->hide(); + ui->mahCount_ChkB->hide(); + } else { + if (model.frsky.mAhPersistent) { + ui->mahCount_ChkB->setChecked(true); + ui->mahCount_SB->setValue(model.frsky.storedMah); + } else { + ui->mahCount_SB->setDisabled(true); + } + ui->variousGB->show(); + } ui->frskyProtoCB->setCurrentIndex(model.frsky.usrProto); ui->frskyUnitsCB->setCurrentIndex(model.frsky.imperial); @@ -715,6 +737,25 @@ void TelemetryPanel::on_varioLimitCenterMax_DSB_editingFinished() emit modified(); } +void TelemetryPanel::on_fasOffset_DSB_editingFinished() +{ + model.frsky.fasOffset = ui->fasOffset_DSB->value()*10; + emit modified(); +} + +void TelemetryPanel::on_mahCount_SB_editingFinished() +{ + model.frsky.storedMah = ui->mahCount_SB->value(); + emit modified(); +} + +void TelemetryPanel::on_mahCount_ChkB_toggled(bool checked) +{ + model.frsky.mAhPersistent = checked; + ui->mahCount_SB->setDisabled(!checked); + emit modified(); +} + void TelemetryPanel::telBarUpdate() { int index; diff --git a/companion/src/modeledit/telemetry.h b/companion/src/modeledit/telemetry.h index 6984a9f51..e8f634463 100644 --- a/companion/src/modeledit/telemetry.h +++ b/companion/src/modeledit/telemetry.h @@ -74,6 +74,9 @@ class TelemetryPanel : public ModelPanel void on_varioLimitCenterMin_DSB_editingFinished(); void on_varioLimitMinOff_ChkB_toggled(bool checked); void on_varioLimitCenterMax_DSB_editingFinished(); + void on_fasOffset_DSB_editingFinished(); + void on_mahCount_SB_editingFinished(); + void on_mahCount_ChkB_toggled(bool checked); void telBarCBcurrentIndexChanged(int index); void ScreenTypeCBcurrentIndexChanged(int index); void telMaxSBeditingFinished(); diff --git a/companion/src/modeledit/telemetry.ui b/companion/src/modeledit/telemetry.ui index b03ab1091..bb6bae9c9 100644 --- a/companion/src/modeledit/telemetry.ui +++ b/companion/src/modeledit/telemetry.ui @@ -7,13 +7,13 @@ 0 0 692 - 540 + 568 Form - + @@ -770,6 +770,106 @@ + + + + + 0 + 0 + + + + Various + + + + 1 + + + 1 + + + + + + + + 0 + 0 + + + + 32767 + + + + + + + mAh count + + + + + + + + 0 + 0 + + + + FAS Offset + + + + + + + Persistent mAh + + + + + + + + 0 + 0 + + + + 1 + + + -1.500000000000000 + + + 1.500000000000000 + + + 0.100000000000000 + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + From 78b28444e6237c57f67213589980990ef06d4df0 Mon Sep 17 00:00:00 2001 From: Dvogonen Date: Wed, 15 Jan 2014 20:46:53 +0100 Subject: [PATCH 138/308] Example of optimized icons for actual resolution. --- companion/src/images/changelog16.png | Bin 0 -> 256 bytes companion/src/images/changelog32.png | Bin 0 -> 227 bytes companion/src/images/cut16.png | Bin 0 -> 3346 bytes companion/src/images/cut32.png | Bin 0 -> 3657 bytes 4 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 companion/src/images/changelog16.png create mode 100644 companion/src/images/changelog32.png create mode 100644 companion/src/images/cut16.png create mode 100644 companion/src/images/cut32.png diff --git a/companion/src/images/changelog16.png b/companion/src/images/changelog16.png new file mode 100644 index 0000000000000000000000000000000000000000..a74aeee10a6b24f27a9db5d79c99c419fb278f88 GIT binary patch literal 256 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkEING$C3%Qsta@~@r)gp0e*{%=HCsIEB{5(1Fhmc}d{*FbS7XEiO9^a*MP5hnQ zjs)xQ1^wUdiUjSsw^OalyjW&Vp-;o+rTlH|H`>pw8@RBF_`Ot#txbQpuDtDnm{r-UW|u>W1G literal 0 HcmV?d00001 diff --git a/companion/src/images/changelog32.png b/companion/src/images/changelog32.png new file mode 100644 index 0000000000000000000000000000000000000000..0fb45734e1a90a57709bd1e67153f43979be881f GIT binary patch literal 227 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbB*pj^6T^Rm@;DWu&Cj&(|3p^r= z85sBugD~Uq{1qucLG}_)Usv{fjQqlayqjLHnF|yu@N{tui8%ariX+zn1s)djqw6bP z{Fj$_uiC0+s(MTIgzt$RdQ2?>NsG=|uIAKi_}4lid{4Nb)3zyFUsz46m=zLoLRXb< zq5AW$Z}%;}_5V`S`SS8=PPOgfPLnjZl(sKZImNfp`Hg_J$xi#%>Mk5VWtl~+T&~`- SpVbGno59o7&t;ucLK6T_*-;t* literal 0 HcmV?d00001 diff --git a/companion/src/images/cut16.png b/companion/src/images/cut16.png new file mode 100644 index 0000000000000000000000000000000000000000..8852d084dfab6e2fdbad8d02f22c9664f3292a69 GIT binary patch literal 3346 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 literal 0 HcmV?d00001 diff --git a/companion/src/images/cut32.png b/companion/src/images/cut32.png new file mode 100644 index 0000000000000000000000000000000000000000..4a05f8b0dbbc2eb4f009e5840757b583aca953f9 GIT binary patch literal 3657 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 literal 0 HcmV?d00001 From 2f67344b818ec778d830c68a3e4b74841c6ca8bb Mon Sep 17 00:00:00 2001 From: Dvogonen Date: Wed, 15 Jan 2014 21:13:57 +0100 Subject: [PATCH 139/308] Fixes #512 --- companion/src/CMakeLists.txt | 2 +- companion/src/avroutputdialog.ui | 4 ++-- companion/src/burnconfigdialog.ui | 4 ++-- companion/src/burndialog.ui | 4 ++-- companion/src/{companion9x.qrc => companion.qrc} | 0 companion/src/comparedialog.ui | 4 ++-- companion/src/contributorsdialog.ui | 4 ++-- companion/src/customizesplashdialog.ui | 6 +++--- companion/src/downloaddialog.ui | 4 ++-- companion/src/fusesdialog.ui | 4 ++-- companion/src/generaledit.ui | 4 ++-- companion/src/joystickdialog.ui | 2 +- companion/src/logsdialog.ui | 6 +++--- companion/src/main.cpp | 2 +- companion/src/mdichild.ui | 4 ++-- companion/src/modelconfigdialog.ui | 16 ++++++++-------- companion/src/preferencesdialog.ui | 8 ++++---- companion/src/printdialog.ui | 4 ++-- companion/src/simulatordialog.ui | 6 ++++-- companion/src/splashlibrary.ui | 6 +++--- companion/src/xsimulatordialog.ui | 5 +++-- 21 files changed, 51 insertions(+), 48 deletions(-) rename companion/src/{companion9x.qrc => companion.qrc} (100%) diff --git a/companion/src/CMakeLists.txt b/companion/src/CMakeLists.txt index 8ec853eaa..85e3db295 100644 --- a/companion/src/CMakeLists.txt +++ b/companion/src/CMakeLists.txt @@ -234,7 +234,7 @@ IF ( SDL_FOUND ) ENDIF( ) SET( companion_RCS - companion9x.qrc + companion.qrc ${CMAKE_CURRENT_BINARY_DIR}/translations.qrc ) diff --git a/companion/src/avroutputdialog.ui b/companion/src/avroutputdialog.ui index 54ecf8d74..ded09363e 100644 --- a/companion/src/avroutputdialog.ui +++ b/companion/src/avroutputdialog.ui @@ -32,7 +32,7 @@ Dialog - + :/icon.png:/icon.png @@ -109,7 +109,7 @@ - + diff --git a/companion/src/burnconfigdialog.ui b/companion/src/burnconfigdialog.ui index ba1adbf17..bb85de6f5 100644 --- a/companion/src/burnconfigdialog.ui +++ b/companion/src/burnconfigdialog.ui @@ -26,7 +26,7 @@ Programmer Configuration - + :/images/configure.png:/images/configure.png @@ -760,7 +760,7 @@ Please only use this if you know what you are doing. There are no error checks buttonBox - + diff --git a/companion/src/burndialog.ui b/companion/src/burndialog.ui index 7c739d0a1..a15ae25a1 100644 --- a/companion/src/burndialog.ui +++ b/companion/src/burndialog.ui @@ -456,7 +456,7 @@ ... - + :/images/library.png:/images/library.png @@ -488,7 +488,7 @@ BurnFlashButton - + diff --git a/companion/src/companion9x.qrc b/companion/src/companion.qrc similarity index 100% rename from companion/src/companion9x.qrc rename to companion/src/companion.qrc diff --git a/companion/src/comparedialog.ui b/companion/src/comparedialog.ui index 456d1db87..7667ad3ce 100644 --- a/companion/src/comparedialog.ui +++ b/companion/src/comparedialog.ui @@ -29,7 +29,7 @@ Dialog - + :/images/print.png:/images/print.png @@ -129,7 +129,7 @@ - + diff --git a/companion/src/contributorsdialog.ui b/companion/src/contributorsdialog.ui index 1c09ba66d..4c0fff21b 100644 --- a/companion/src/contributorsdialog.ui +++ b/companion/src/contributorsdialog.ui @@ -14,7 +14,7 @@ Dialog - + :/icon.png:/icon.png @@ -24,7 +24,7 @@ - + diff --git a/companion/src/customizesplashdialog.ui b/companion/src/customizesplashdialog.ui index 69762f1ba..b7d0285aa 100644 --- a/companion/src/customizesplashdialog.ui +++ b/companion/src/customizesplashdialog.ui @@ -71,7 +71,7 @@ - :/images/customize.png + :/images/customize.png true @@ -212,7 +212,7 @@ p, li { white-space: pre-wrap; } ... - + :/images/library.png:/images/library.png @@ -264,7 +264,7 @@ p, li { white-space: pre-wrap; } - + diff --git a/companion/src/downloaddialog.ui b/companion/src/downloaddialog.ui index 9f5681542..dcd05c405 100644 --- a/companion/src/downloaddialog.ui +++ b/companion/src/downloaddialog.ui @@ -14,7 +14,7 @@ Downloading: - + :/icon.png:/icon.png @@ -51,7 +51,7 @@ - + diff --git a/companion/src/fusesdialog.ui b/companion/src/fusesdialog.ui index e6b4acb92..e7e6bbe9d 100644 --- a/companion/src/fusesdialog.ui +++ b/companion/src/fusesdialog.ui @@ -14,7 +14,7 @@ Fuses - + :/images/fuses.png:/images/fuses.png @@ -116,7 +116,7 @@ p, li { white-space: pre-wrap; } - + diff --git a/companion/src/generaledit.ui b/companion/src/generaledit.ui index d47781a69..48a7445b5 100644 --- a/companion/src/generaledit.ui +++ b/companion/src/generaledit.ui @@ -20,7 +20,7 @@ General Edit - + :/icon.png:/icon.png @@ -3555,7 +3555,7 @@ p, li { white-space: pre-wrap; } PPM_MultiplierDSB - + diff --git a/companion/src/joystickdialog.ui b/companion/src/joystickdialog.ui index 25a5fe2c9..2d18fdb0a 100644 --- a/companion/src/joystickdialog.ui +++ b/companion/src/joystickdialog.ui @@ -909,7 +909,7 @@ - + diff --git a/companion/src/logsdialog.ui b/companion/src/logsdialog.ui index 4d0c91939..c645110d0 100644 --- a/companion/src/logsdialog.ui +++ b/companion/src/logsdialog.ui @@ -14,7 +14,7 @@ Companion Log Viewer - + :/icon.png:/icon.png @@ -262,7 +262,7 @@ - + :/images/maps.png:/images/maps.png @@ -285,7 +285,7 @@ - + diff --git a/companion/src/main.cpp b/companion/src/main.cpp index 06ae8167f..a7dea31a0 100644 --- a/companion/src/main.cpp +++ b/companion/src/main.cpp @@ -76,7 +76,7 @@ class MyProxyStyle : public QProxyStyle int main(int argc, char *argv[]) { - Q_INIT_RESOURCE(companion9x); + Q_INIT_RESOURCE(companion); QApplication app(argc, argv); app.setApplicationName("OpenTX Companion"); #ifdef __APPLE__ diff --git a/companion/src/mdichild.ui b/companion/src/mdichild.ui index 00cf8af7d..d32b3cffb 100644 --- a/companion/src/mdichild.ui +++ b/companion/src/mdichild.ui @@ -23,7 +23,7 @@ Simulate Tx - + :/images/simulate.png:/images/simulate.png @@ -38,7 +38,7 @@ - + diff --git a/companion/src/modelconfigdialog.ui b/companion/src/modelconfigdialog.ui index bc36d6ac6..ea119cabc 100644 --- a/companion/src/modelconfigdialog.ui +++ b/companion/src/modelconfigdialog.ui @@ -26,7 +26,7 @@ Model Configuration Wizard - + :/images/configure.png:/images/configure.png @@ -79,7 +79,7 @@ - :/images/mcw/aw0a0f.png + :/images/mcw/aw0a0f.png false @@ -113,7 +113,7 @@ - :/images/mcw/atailv.png + :/images/mcw/atailv.png false @@ -168,7 +168,7 @@ - + :/images/mcw/aicon.png:/images/mcw/aicon.png @@ -200,7 +200,7 @@ - + :/images/mcw/hicon.png:/images/mcw/hicon.png @@ -226,7 +226,7 @@ - + :/images/mcw/gicon.png:/images/mcw/gicon.png @@ -1208,7 +1208,7 @@ - + :/images/mcw/dicon.png:/images/mcw/dicon.png @@ -1262,7 +1262,7 @@ - + diff --git a/companion/src/preferencesdialog.ui b/companion/src/preferencesdialog.ui index b52060211..021a38b58 100644 --- a/companion/src/preferencesdialog.ui +++ b/companion/src/preferencesdialog.ui @@ -26,7 +26,7 @@ Preferences - + :/images/preferences.png:/images/preferences.png @@ -161,7 +161,7 @@ ... - + :/images/clear.png:/images/clear.png @@ -228,7 +228,7 @@ ... - + :/images/library.png:/images/library.png @@ -1649,7 +1649,7 @@ May be different from firmware language buttonBox - + diff --git a/companion/src/printdialog.ui b/companion/src/printdialog.ui index 3cff71f1b..5e45d5a2c 100644 --- a/companion/src/printdialog.ui +++ b/companion/src/printdialog.ui @@ -26,7 +26,7 @@ Dialog - + :/images/print.png:/images/print.png @@ -78,7 +78,7 @@ - + diff --git a/companion/src/simulatordialog.ui b/companion/src/simulatordialog.ui index 004da67c6..a739492ac 100644 --- a/companion/src/simulatordialog.ui +++ b/companion/src/simulatordialog.ui @@ -26,7 +26,7 @@ Companion Simulator - + :/images/simulate.png:/images/simulate.png @@ -1093,6 +1093,7 @@ QPushButton:checked { + @@ -1812,6 +1813,7 @@ QPushButton:checked { QFrame::Raised + 2 @@ -3711,7 +3713,7 @@ border-radius: 4px; - + diff --git a/companion/src/splashlibrary.ui b/companion/src/splashlibrary.ui index e5e8c5de6..8c5bcaf1d 100644 --- a/companion/src/splashlibrary.ui +++ b/companion/src/splashlibrary.ui @@ -47,7 +47,7 @@ ... - + :/images/arrow-left.png:/images/arrow-left.png @@ -946,7 +946,7 @@ ... - + :/images/arrow-right.png:/images/arrow-right.png @@ -967,7 +967,7 @@ - + diff --git a/companion/src/xsimulatordialog.ui b/companion/src/xsimulatordialog.ui index 2ddd8f310..d8f7d3f6f 100644 --- a/companion/src/xsimulatordialog.ui +++ b/companion/src/xsimulatordialog.ui @@ -26,7 +26,7 @@ Companion Simulator - + :/images/simulate.png:/images/simulate.png @@ -2054,6 +2054,7 @@ border-radius: 4px; 18 + QSlider::sub-page:horizontal:disabled { @@ -3901,7 +3902,7 @@ border-radius: 4px; - + From 9fd20a87fe2e08c614b00a0db74e0f86938e209d Mon Sep 17 00:00:00 2001 From: Dvogonen Date: Wed, 15 Jan 2014 21:54:43 +0100 Subject: [PATCH 140/308] Fixes #511 --- companion/src/burnconfigdialog.cpp | 4 +-- companion/src/burndialog.cpp | 18 +++++----- companion/src/customizesplashdialog.cpp | 8 ++--- companion/src/eeprominterface.cpp | 4 +-- companion/src/generaledit.cpp | 8 ++--- companion/src/joystickdialog.cpp | 2 +- companion/src/lcdwidget.h | 2 +- companion/src/logsdialog.cpp | 6 ++-- companion/src/main.cpp | 4 +-- companion/src/mainwindow.cpp | 46 ++++++++++++------------- companion/src/mdichild.cpp | 10 +++--- companion/src/preferencesdialog.cpp | 34 +++++++++--------- companion/src/simulatordialog.cpp | 4 +-- companion/src/splashlibrary.cpp | 4 +-- companion/src/xsimulatordialog.cpp | 4 +-- 15 files changed, 79 insertions(+), 79 deletions(-) diff --git a/companion/src/burnconfigdialog.cpp b/companion/src/burnconfigdialog.cpp index f4440b05f..9e08d860f 100644 --- a/companion/src/burnconfigdialog.cpp +++ b/companion/src/burnconfigdialog.cpp @@ -82,7 +82,7 @@ burnConfigDialog::~burnConfigDialog() void burnConfigDialog::getSettings() { - QSettings settings("companion9x", "companion9x"); + QSettings settings("companion", "companion"); #if defined WIN32 || !defined __GNUC__ avrLoc = settings.value("avrdude_location", QFileInfo("avrdude.exe").absoluteFilePath()).toString(); sambaLoc = settings.value("samba_location", QFileInfo("sam-ba.exe").absoluteFilePath()).toString(); @@ -136,7 +136,7 @@ void burnConfigDialog::getSettings() void burnConfigDialog::putSettings() { - QSettings settings("companion9x", "companion9x"); + QSettings settings("companion", "companion"); settings.setValue("avrdude_location", avrLoc); settings.setValue("programmer", avrProgrammer); settings.setValue("mcu", avrMCU); diff --git a/companion/src/burndialog.cpp b/companion/src/burndialog.cpp index c601b23cf..1851310d6 100644 --- a/companion/src/burndialog.cpp +++ b/companion/src/burndialog.cpp @@ -55,7 +55,7 @@ burnDialog::burnDialog(QWidget *parent, int Type, QString * fileName, bool * bac } else { this->setWindowTitle(tr("Write Models and Settings in %1 to TX").arg(DocName)); } - QSettings settings("companion9x", "companion9x"); + QSettings settings("companion", "companion"); int profileid=settings.value("profileId", 1).toInt(); settings.beginGroup("Profiles"); QString profile=QString("profile%1").arg(profileid); @@ -72,7 +72,7 @@ burnDialog::burnDialog(QWidget *parent, int Type, QString * fileName, bool * bac } else { burnraw=false; if (checkeEprom(*hexfileName)) { - QSettings settings("companion9x", "companion9x"); + QSettings settings("companion", "companion"); int profileid=settings.value("profileId", 1).toInt(); settings.beginGroup("Profiles"); QString profile=QString("profile%1").arg(profileid); @@ -113,7 +113,7 @@ burnDialog::burnDialog(QWidget *parent, int Type, QString * fileName, bool * bac hexfileName->clear(); } else if (Type==2) { - QSettings settings("companion9x", "companion9x"); + QSettings settings("companion", "companion"); QString FileName; FileName = settings.value("lastFw").toString(); QFile file(FileName); @@ -131,7 +131,7 @@ burnDialog::~burnDialog() { void burnDialog::on_FlashLoadButton_clicked() { QString fileName; - QSettings settings("companion9x", "companion9x"); + QSettings settings("companion", "companion"); ui->ImageLoadButton->setDisabled(true); ui->libraryButton->setDisabled(true); ui->InvertColorButton->setDisabled(true); @@ -181,7 +181,7 @@ void burnDialog::checkFw(QString fileName) if (fileName.isEmpty()) { return; } - QSettings settings("companion9x", "companion9x"); + QSettings settings("companion", "companion"); if (!IS_TARANIS(GetEepromInterface()->getBoard())) { ui->EEbackupCB->show(); } else { @@ -343,7 +343,7 @@ void burnDialog::on_ImageLoadButton_clicked() supportedImageFormats += QLatin1String(" *.") + QImageReader::supportedImageFormats()[formatIndex]; } - QSettings settings("companion9x", "companion9x"); + QSettings settings("companion", "companion"); QString fileName = QFileDialog::getOpenFileName(this, tr("Open Image to load"), settings.value("lastImagesDir").toString(), tr("Images (%1)").arg(supportedImageFormats)); @@ -426,7 +426,7 @@ void burnDialog::on_BurnFlashButton_clicked() if (hexType==2) { QString fileName=ui->FWFileName->text(); if (!fileName.isEmpty()) { - QSettings settings("companion9x", "companion9x"); + QSettings settings("companion", "companion"); settings.setValue("lastFlashDir", QFileInfo(fileName).dir().absolutePath()); settings.setValue("lastFw", fileName); if (ui->PatchFWCB->isChecked()) { @@ -463,7 +463,7 @@ void burnDialog::on_BurnFlashButton_clicked() } } if (hexType==1) { - QSettings settings("companion9x", "companion9x"); + QSettings settings("companion", "companion"); int profileid=settings.value("profileId", 1).toInt(); settings.beginGroup("Profiles"); QString profile=QString("profile%1").arg(profileid); @@ -640,7 +640,7 @@ void burnDialog::on_PreferredImageCB_toggled(bool checked) { QString tmpFileName; if (checked) { - QSettings settings("companion9x", "companion9x"); + QSettings settings("companion", "companion"); QString ImageStr = settings.value("SplashImage", "").toString(); if (!ImageStr.isEmpty()) { QImage Image = qstring2image(ImageStr); diff --git a/companion/src/customizesplashdialog.cpp b/companion/src/customizesplashdialog.cpp index 2358e1c7a..01ef16b8f 100644 --- a/companion/src/customizesplashdialog.cpp +++ b/companion/src/customizesplashdialog.cpp @@ -22,7 +22,7 @@ customizeSplashDialog::~customizeSplashDialog() { void customizeSplashDialog::on_FlashLoadButton_clicked() { QString fileName; - QSettings settings("companion9x", "companion9x"); + QSettings settings("companion", "companion"); ui->ImageLoadButton->setDisabled(true); ui->libraryButton->setDisabled(true); ui->SaveFlashButton->setDisabled(true); @@ -66,7 +66,7 @@ void customizeSplashDialog::on_ImageLoadButton_clicked() { supportedImageFormats += QLatin1String(" *.") + QImageReader::supportedImageFormats()[formatIndex]; } - QSettings settings("companion9x", "companion9x"); + QSettings settings("companion", "companion"); QString fileName = QFileDialog::getOpenFileName(this, tr("Open Image to load"), settings.value("lastImagesDir").toString(), tr("Images (%1)").arg(supportedImageFormats)); @@ -143,7 +143,7 @@ void customizeSplashDialog::on_libraryButton_clicked() { void customizeSplashDialog::on_SaveFlashButton_clicked() { QString fileName; - QSettings settings("companion9x", "companion9x"); + QSettings settings("companion", "companion"); ui->HowToLabel->clear(); fileName = QFileDialog::getSaveFileName(this, tr("Write to file"), settings.value("lastFlashDir").toString(), FLASH_FILES_FILTER, 0, QFileDialog::DontConfirmOverwrite); if (fileName.isEmpty()) { @@ -176,7 +176,7 @@ void customizeSplashDialog::on_InvertColorButton_clicked() void customizeSplashDialog::on_SaveImageButton_clicked() { QString fileName; - QSettings settings("companion9x", "companion9x"); + QSettings settings("companion", "companion"); fileName = QFileDialog::getSaveFileName(this, tr("Write to file"), settings.value("lastImagesDir").toString(), tr("PNG images (*.png);;"), 0, QFileDialog::DontConfirmOverwrite); if (!fileName.isEmpty()) { diff --git a/companion/src/eeprominterface.cpp b/companion/src/eeprominterface.cpp index 998e8d9bf..5aeee8220 100644 --- a/companion/src/eeprominterface.cpp +++ b/companion/src/eeprominterface.cpp @@ -438,7 +438,7 @@ GeneralSettings::GeneralSettings() calibSpanNeg[i] = 0x180; calibSpanPos[i] = 0x180; } - QSettings settings("companion9x", "companion9x"); + QSettings settings("companion", "companion"); templateSetup = settings.value("default_channel_order", 0).toInt(); stickMode = settings.value("default_mode", 1).toInt(); int profile_id = settings.value("ActiveProfile", 0).toInt(); @@ -659,7 +659,7 @@ ModelData ModelData::removeGlobalVars() QList eepromInterfaces; void RegisterEepromInterfaces() { - QSettings settings("companion9x", "companion9x"); + QSettings settings("companion", "companion"); int rev4a = settings.value("rev4asupport",0).toInt(); eepromInterfaces.push_back(new Open9xInterface(BOARD_STOCK)); eepromInterfaces.push_back(new Open9xInterface(BOARD_M128)); diff --git a/companion/src/generaledit.cpp b/companion/src/generaledit.cpp index 0758f5e22..250fc6b0e 100644 --- a/companion/src/generaledit.cpp +++ b/companion/src/generaledit.cpp @@ -20,7 +20,7 @@ GeneralEdit::GeneralEdit(RadioData &radioData, QWidget *parent) : ui->setupUi(this); this->setWindowIcon(QIcon(":/icon.png")); - QSettings settings("companion9x", "companion9x"); + QSettings settings("companion", "companion"); QString firmware_id = settings.value("firmware", default_firmware_variant.id).toString(); ui->tabWidget->setCurrentIndex(settings.value("generalEditTab", 0).toInt()); int profile_id=settings.value("profileId", 0).toInt(); @@ -946,7 +946,7 @@ void GeneralEdit::on_PPM4_editingFinished() void GeneralEdit::on_tabWidget_currentChanged(int index) { // TODO why er9x here - QSettings settings("companion9x", "companion9x"); + QSettings settings("companion", "companion"); settings.setValue("generalEditTab",index);//ui->tabWidget->currentIndex()); } @@ -1195,7 +1195,7 @@ void GeneralEdit::on_swGEAChkB_stateChanged(int ) void GeneralEdit::on_calretrieve_PB_clicked() { - QSettings settings("companion9x", "companion9x"); + QSettings settings("companion", "companion"); int profile_id=ui->profile_CB->itemData(ui->profile_CB->currentIndex()).toInt(); settings.beginGroup("Profiles"); QString profile=QString("profile%1").arg(profile_id); @@ -1312,7 +1312,7 @@ void GeneralEdit::on_calretrieve_PB_clicked() void GeneralEdit::on_calstore_PB_clicked() { - QSettings settings("companion9x", "companion9x"); + QSettings settings("companion", "companion"); int profile_id=ui->profile_CB->itemData(ui->profile_CB->currentIndex()).toInt(); settings.beginGroup("Profiles"); QString profile=QString("profile%1").arg(profile_id); diff --git a/companion/src/joystickdialog.cpp b/companion/src/joystickdialog.cpp index 55b55c761..efec50a56 100644 --- a/companion/src/joystickdialog.cpp +++ b/companion/src/joystickdialog.cpp @@ -130,7 +130,7 @@ void joystickDialog::on_okButton_clicked() { return; } joystick->close(); - QSettings settings("companion9x", "companion9x"); + QSettings settings("companion", "companion"); settings.beginGroup("JsCalibration"); for (int i=0; i<8;i++) { settings.remove(QString("stick%1_axe").arg(i)); diff --git a/companion/src/lcdwidget.h b/companion/src/lcdwidget.h index 52133d8cd..073ba8726 100644 --- a/companion/src/lcdwidget.h +++ b/companion/src/lcdwidget.h @@ -58,7 +58,7 @@ class lcdWidget : public QWidget { QPixmap buffer(2*lcdWidth, 2*lcdHeight); QPainter p(&buffer); doPaint(p); - QSettings settings("companion9x", "companion9x"); + QSettings settings("companion", "companion"); bool toclipboard=settings.value("snapshot_to_clipboard", false).toBool(); QApplication::clipboard()->setPixmap( buffer ); if (!toclipboard) { diff --git a/companion/src/logsdialog.cpp b/companion/src/logsdialog.cpp index e1b415ce9..d86b2efb3 100644 --- a/companion/src/logsdialog.cpp +++ b/companion/src/logsdialog.cpp @@ -38,7 +38,7 @@ logsDialog::logsDialog(QWidget *parent) : ui->customPlot->legend->setSelectedFont(legendFont); ui->customPlot->legend->setSelectable(QCPLegend::spItems); // legend box shall not be selectable, only legend items ui->customPlot->legend->setVisible(false); - QSettings settings("companion9x", "companion9x"); + QSettings settings("companion", "companion"); QString Path=settings.value("gePath", "").toString(); if (Path.isEmpty() || !QFile(Path).exists()) { ui->mapsButton->hide(); @@ -202,7 +202,7 @@ void logsDialog::on_mapsButton_clicked() { ,F_F,F_F,F_F,F_F,I_F,I_F,I_F,I_F\ ,I_F,I_F,I_F,I_F,I_F,I_F,I_F,I_F,I_F,I_F,I_F,I_F}; - QSettings settings("companion9x", "companion9x"); + QSettings settings("companion", "companion"); QString gePath=settings.value("gePath", "").toString(); if (gePath.isEmpty() || !QFile(gePath).exists()) { ui->FieldsTW->setDisabled(false); @@ -578,7 +578,7 @@ void logsDialog::moveLegend() void logsDialog::on_fileOpen_BT_clicked() { - QSettings settings("companion9x", "companion9x"); + QSettings settings("companion", "companion"); QString fileName = QFileDialog::getOpenFileName(this,tr("Select your log file"), settings.value("lastLogDir").toString()); if (!fileName.isEmpty()) { settings.setValue("lastLogDir", fileName); diff --git a/companion/src/main.cpp b/companion/src/main.cpp index 65d4a861e..58a82c7b4 100644 --- a/companion/src/main.cpp +++ b/companion/src/main.cpp @@ -77,7 +77,7 @@ class MyProxyStyle : public QProxyStyle int main(int argc, char *argv[]) { // Start by borrowing any left over settings from companion9x - QSettings c9x_settings("companion9x", "companion9x"); + QSettings c9x_settings("companion", "companion"); QSettings com_settings("companion", "companion"); if (!com_settings.contains("pos")) { QStringList keys = c9x_settings.allKeys(); @@ -96,7 +96,7 @@ int main(int argc, char *argv[]) QString dir; if(argc) dir = QFileInfo(argv[0]).canonicalPath() + "/lang"; - QSettings settings("companion9x", "companion9x"); + QSettings settings("companion", "companion"); QString locale = settings.value("locale",QLocale::system().name()).toString(); bool showSplash = settings.value("show_splash", true).toBool(); diff --git a/companion/src/mainwindow.cpp b/companion/src/mainwindow.cpp index 5b0d0bd64..9c8bc2af3 100644 --- a/companion/src/mainwindow.cpp +++ b/companion/src/mainwindow.cpp @@ -114,7 +114,7 @@ downloadDialog_forWait(NULL) // give time to the splash to disappear and main window to open before starting updates int updateDelay = 1000; - QSettings settings("companion9x", "companion9x"); + QSettings settings("companion", "companion"); bool showSplash = settings.value("show_splash", true).toBool(); if (showSplash) updateDelay += (SPLASH_TIME*1000); @@ -167,7 +167,7 @@ downloadDialog_forWait(NULL) void MainWindow::displayWarnings() { - QSettings settings("companion9x", "companion9x"); + QSettings settings("companion", "companion"); int warnId=settings.value("warningId", 0 ).toInt(); if (warnIdstamp; @@ -267,7 +267,7 @@ void MainWindow::checkForUpdateFinished(QNetworkReply * reply) "Would you like to download it?").arg(version) , QMessageBox::Yes | QMessageBox::No); - QSettings settings("companion9x", "companion9x"); + QSettings settings("companion", "companion"); if (ret == QMessageBox::Yes) { #if defined __APPLE__ @@ -309,7 +309,7 @@ void MainWindow::updateDownloaded() void MainWindow::downloadLatestFW(FirmwareInfo * firmware, const QString & firmwareId) { QString url, ext, cpuid; - QSettings settings("companion9x", "companion9x"); + QSettings settings("companion", "companion"); url = firmware->getUrl(firmwareId); cpuid=settings.value("cpuid","").toString(); ext = url.mid(url.lastIndexOf(".")); @@ -332,7 +332,7 @@ void MainWindow::downloadLatestFW(FirmwareInfo * firmware, const QString & firmw void MainWindow::reply1Accepted() { QString errormsg; - QSettings settings("companion9x", "companion9x"); + QSettings settings("companion", "companion"); bool autoflash=settings.value("burnFirmware", true).toBool(); bool addversion=settings.value("rename_firmware_files", false).toBool(); settings.beginGroup("FwRevisions"); @@ -456,7 +456,7 @@ void MainWindow::reply1Finished(QNetworkReply * reply) // TODO delete downloadDialog_forWait? } - QSettings settings("companion9x", "companion9x"); + QSettings settings("companion", "companion"); cpuid=settings.value("cpuid","").toString(); QByteArray qba = reply->readAll(); int i = qba.indexOf("SVN_VERS"); @@ -626,7 +626,7 @@ void MainWindow::newFile() void MainWindow::openFile() { - QSettings settings("companion9x", "companion9x"); + QSettings settings("companion", "companion"); QString fileName = QFileDialog::getOpenFileName(this, tr("Open"), settings.value("lastDir").toString(),tr(EEPROM_FILES_FILTER)); if (!fileName.isEmpty()) { settings.setValue("lastDir", QFileInfo(fileName).dir().absolutePath()); @@ -659,7 +659,7 @@ void MainWindow::saveAs() void MainWindow::openRecentFile() { - QSettings settings("companion9x", "companion9x"); + QSettings settings("companion", "companion"); QAction *action = qobject_cast(sender()); if (action) { QString fileName=action->data().toString(); @@ -681,14 +681,14 @@ void MainWindow::openRecentFile() void MainWindow::loadProfile() { - QSettings settings("companion9x", "companion9x"); + QSettings settings("companion", "companion"); QAction *action = qobject_cast(sender()); int chord,defmod, burnfw; bool renfw; if (action) { int profnum=action->data().toInt(); - QSettings settings("companion9x", "companion9x"); + QSettings settings("companion", "companion"); settings.setValue("ActiveProfile",profnum); settings.beginGroup("Profiles"); QString profile=QString("profile%1").arg(profnum); @@ -733,7 +733,7 @@ void MainWindow::unloadProfile() { ActiveProfile=0; ActiveProfileName=""; - QSettings settings("companion9x", "companion9x"); + QSettings settings("companion", "companion"); settings.setValue("ActiveProfile",0); FirmwareInfo *firmware = GetCurrentFirmware(); setWindowTitle(tr("Companion - Models and Settings Editor - %1").arg(firmware->name)); @@ -1076,7 +1076,7 @@ void MainWindow::burnFrom() void MainWindow::burnExtenalToEEPROM() { - QSettings settings("companion9x", "companion9x"); + QSettings settings("companion", "companion"); QString fileName; bool backup = false; burnDialog *cd = new burnDialog(this, 1, &fileName, &backup); @@ -1324,7 +1324,7 @@ bool MainWindow::convertEEPROM(QString backupFile, QString restoreFile, QString void MainWindow::burnToFlash(QString fileToFlash) { - QSettings settings("companion9x", "companion9x"); + QSettings settings("companion", "companion"); QString fileName; bool backup = settings.value("backupOnFlash", false).toBool(); if(!fileToFlash.isEmpty()) @@ -1414,7 +1414,7 @@ void MainWindow::burnToFlash(QString fileToFlash) void MainWindow::burnExtenalFromEEPROM() { - QSettings settings("companion9x", "companion9x"); + QSettings settings("companion", "companion"); QString fileName = QFileDialog::getSaveFileName(this, tr("Save transmitter Models and Settings to File"), settings.value("lastDir").toString(), tr(EXTERNAL_EEPROM_FILES_FILTER)); if (!fileName.isEmpty()) { EEPROMInterface *eepromInterface = GetEepromInterface(); @@ -1442,7 +1442,7 @@ void MainWindow::burnExtenalFromEEPROM() void MainWindow::burnFromFlash() { - QSettings settings("companion9x", "companion9x"); + QSettings settings("companion", "companion"); QString fileName = QFileDialog::getSaveFileName(this,tr("Read Tx Firmware to File"), settings.value("lastFlashDir").toString(),tr(FLASH_FILES_FILTER)); if (!fileName.isEmpty()) { QFile file(fileName); @@ -1528,7 +1528,7 @@ void MainWindow::updateMenus() updateRecentFileActions(); updateProfilesActions(); bool notfound=true; - QSettings settings("companion9x", "companion9x"); + QSettings settings("companion", "companion"); settings.beginGroup("Profiles"); for (int i=0; isetToolTip(tr("Firmware Profiles")); fileToolBar->addWidget(profileButton); bool notfound=true; - QSettings settings("companion9x", "companion9x"); + QSettings settings("companion", "companion"); settings.beginGroup("Profiles"); for (int i=0; igetBoard() == BOARD_SKY9X) { curFile.replace(".eepe", ".bin"); @@ -490,7 +490,7 @@ void MdiChild::setCurrentFile(const QString &fileName) fileChanged = false; setWindowModified(false); updateTitle(); - QSettings settings("companion9x", "companion9x"); + QSettings settings("companion", "companion"); int MaxRecentFiles =settings.value("history_size",10).toInt(); QStringList files = settings.value("recentFileList").toStringList(); files.removeAll(fileName); @@ -508,7 +508,7 @@ QString MdiChild::strippedName(const QString &fullFileName) void MdiChild::burnTo() // write to Tx { - QSettings settings("companion9x", "companion9x"); + QSettings settings("companion", "companion"); bool backupEnable=settings.value("backupEnable", true).toBool(); QString backupPath=settings.value("backupPath", "").toString(); if (!backupPath.isEmpty()) { @@ -678,7 +678,7 @@ void MdiChild::setEEpromAvail(int eavail) bool MdiChild::loadBackup() { - QSettings settings("companion9x", "companion9x"); + QSettings settings("companion", "companion"); QString fileName = QFileDialog::getOpenFileName(this, tr("Open"), settings.value("lastDir").toString(),tr(EEPROM_FILES_FILTER)); if (fileName.isEmpty()) return false; diff --git a/companion/src/preferencesdialog.cpp b/companion/src/preferencesdialog.cpp index 1d98d55ac..1e97e5785 100644 --- a/companion/src/preferencesdialog.cpp +++ b/companion/src/preferencesdialog.cpp @@ -225,7 +225,7 @@ void preferencesDialog::firmwareChanged() ui->CPU_ID_LE->hide(); ui->CPU_ID_LABEL->hide(); } - QSettings settings("companion9x", "companion9x"); + QSettings settings("companion", "companion"); settings.beginGroup("FwRevisions"); int fwrev = settings.value(variant.id, -1).toInt(); settings.endGroup(); @@ -251,7 +251,7 @@ void preferencesDialog::firmwareChanged() void preferencesDialog::writeValues() { - QSettings settings("companion9x", "companion9x"); + QSettings settings("companion", "companion"); if (ui->locale_QB->currentIndex() > 0) settings.setValue("locale", ui->locale_QB->itemData(ui->locale_QB->currentIndex())); else @@ -382,7 +382,7 @@ void preferencesDialog::populateFirmwareOptions(const FirmwareInfo * firmware) void preferencesDialog::initSettings() { - QSettings settings("companion9x", "companion9x"); + QSettings settings("companion", "companion"); int i = ui->locale_QB->findData(settings.value("locale")); if (i < 0) i = 0; ui->locale_QB->setCurrentIndex(i); @@ -521,7 +521,7 @@ void preferencesDialog::on_fw_dnld_clicked() writeValues(); if (!variant.firmware->getUrl(variant.id).isNull()) { if (ui->burnFirmware->isChecked()) { - QSettings settings("companion9x", "companion9x"); + QSettings settings("companion", "companion"); current_firmware_variant = getFirmwareVariant(); settings.setValue("firmware", current_firmware_variant.id); } @@ -542,7 +542,7 @@ void preferencesDialog::on_voice_dnld_clicked() void preferencesDialog::on_libraryPathButton_clicked() { ui->ProfSave_PB->setEnabled(true); - QSettings settings("companion9x", "companion9x"); + QSettings settings("companion", "companion"); QString fileName = QFileDialog::getExistingDirectory(this,tr("Select your library folder"), settings.value("libraryPath").toString()); if (!fileName.isEmpty()) { settings.setValue("libraryPath", fileName); @@ -552,7 +552,7 @@ void preferencesDialog::on_libraryPathButton_clicked() void preferencesDialog::on_snapshotPathButton_clicked() { - QSettings settings("companion9x", "companion9x"); + QSettings settings("companion", "companion"); QString fileName = QFileDialog::getExistingDirectory(this,tr("Select your snapshot folder"), settings.value("snapshotPath").toString()); if (!fileName.isEmpty()) { settings.setValue("snapshotpath", fileName); @@ -563,7 +563,7 @@ void preferencesDialog::on_snapshotPathButton_clicked() void preferencesDialog::on_snapshotClipboardCKB_clicked() { - QSettings settings("companion9x", "companion9x"); + QSettings settings("companion", "companion"); if (ui->snapshotClipboardCKB->isChecked()) { ui->snapshotPath->setDisabled(true); ui->snapshotPathButton->setDisabled(true); @@ -579,7 +579,7 @@ void preferencesDialog::on_snapshotClipboardCKB_clicked() void preferencesDialog::on_backupPathButton_clicked() { - QSettings settings("companion9x", "companion9x"); + QSettings settings("companion", "companion"); QString fileName = QFileDialog::getExistingDirectory(this,tr("Select your Models and Settings backup folder"), settings.value("backupPath").toString()); if (!fileName.isEmpty()) { settings.setValue("backupPath", fileName); @@ -590,7 +590,7 @@ void preferencesDialog::on_backupPathButton_clicked() void preferencesDialog::on_ge_pathButton_clicked() { - QSettings settings("companion9x", "companion9x"); + QSettings settings("companion", "companion"); QString fileName = QFileDialog::getOpenFileName(this, tr("Select Google Earth executable"),ui->ge_lineedit->text()); if (!fileName.isEmpty()) { ui->ge_lineedit->setText(fileName); @@ -616,7 +616,7 @@ void preferencesDialog::on_splashLibraryButton_clicked() void preferencesDialog::on_sdPathButton_clicked() { - QSettings settings("companion9x", "companion9x"); + QSettings settings("companion", "companion"); QString fileName = QFileDialog::getExistingDirectory(this,tr("Select the folder replicating your SD structure"), settings.value("sdPath").toString()); if (!fileName.isEmpty()) { ui->sdPath->setText(fileName); @@ -626,7 +626,7 @@ void preferencesDialog::on_sdPathButton_clicked() void preferencesDialog::on_ProfSlot_SB_valueChanged() { - QSettings settings("companion9x", "companion9x"); + QSettings settings("companion", "companion"); settings.beginGroup("Profiles"); QString profile=QString("profile%1").arg(ui->ProfSlot_SB->value()); settings.beginGroup(profile); @@ -655,7 +655,7 @@ void preferencesDialog::on_ProfSlot_SB_valueChanged() void preferencesDialog::on_ProfSave_PB_clicked() { - QSettings settings("companion9x", "companion9x"); + QSettings settings("companion", "companion"); settings.beginGroup("Profiles"); QString profile=QString("profile%1").arg(ui->ProfSlot_SB->value()); QString name=ui->ProfName_LE->text(); @@ -694,7 +694,7 @@ void preferencesDialog::on_ProfSave_PB_clicked() void preferencesDialog::on_export_PB_clicked() { - QSettings settings("companion9x", "companion9x"); + QSettings settings("companion", "companion"); QString profile=QString("profile%1").arg(ui->ProfSlot_SB->value()); QString name=ui->ProfName_LE->text(); if (!name.isEmpty()) { @@ -715,7 +715,7 @@ void preferencesDialog::on_export_PB_clicked() void preferencesDialog::on_import_PB_clicked() { - QSettings settings("companion9x", "companion9x"); + QSettings settings("companion", "companion"); QString profile=QString("profile%1").arg(ui->ProfSlot_SB->value()); QString name=ui->ProfName_LE->text(); if (!name.isEmpty()) { @@ -748,7 +748,7 @@ void preferencesDialog::on_SplashSelect_clicked() supportedImageFormats += QLatin1String(" *.") + QImageReader::supportedImageFormats()[formatIndex]; } - QSettings settings("companion9x", "companion9x"); + QSettings settings("companion", "companion"); QString fileName = QFileDialog::getOpenFileName(this, tr("Open Image to load"), settings.value("lastImagesDir").toString(), tr("Images (%1)").arg(supportedImageFormats)); @@ -825,7 +825,7 @@ void preferencesDialog::on_joystickChkB_clicked() { } void preferencesDialog::on_joystickcalButton_clicked() { - //QSettings settings("companion9x", "companion9x"); + //QSettings settings("companion", "companion"); //settings.setValue("joystick-name",ui->joystickCB->currentText()); joystickDialog * jd=new joystickDialog(this, ui->joystickCB->currentIndex()); jd->exec(); @@ -837,7 +837,7 @@ void preferencesDialog::on_checkFWUpdates_clicked() { FirmwareVariant variant = getFirmwareVariant(); if (ui->burnFirmware->isChecked()) { - QSettings settings("companion9x", "companion9x"); + QSettings settings("companion", "companion"); current_firmware_variant = variant; settings.setValue("firmware", variant.id); } diff --git a/companion/src/simulatordialog.cpp b/companion/src/simulatordialog.cpp index 0e3d2a688..4d913c4f7 100644 --- a/companion/src/simulatordialog.cpp +++ b/companion/src/simulatordialog.cpp @@ -32,7 +32,7 @@ simulatorDialog::simulatorDialog(QWidget *parent) : beepVal = 0; beepShow = 0; - QSettings settings("companion9x", "companion9x"); + QSettings settings("companion", "companion"); backLight = settings.value("backLight",0).toInt(); bool simuSW=settings.value("simuSW",false).toBool(); switch (backLight) { @@ -211,7 +211,7 @@ void simulatorDialog::setupTimer() void simulatorDialog::onButtonPressed(int value) { if (value==Qt::Key_Print) { - QSettings settings("companion9x", "companion9x"); + QSettings settings("companion", "companion"); bool toclipboard=settings.value("snapshot_to_clipboard", false).toBool(); QString fileName =""; if (!toclipboard) { diff --git a/companion/src/splashlibrary.cpp b/companion/src/splashlibrary.cpp index 0c2b431b6..9e5a7cc82 100644 --- a/companion/src/splashlibrary.cpp +++ b/companion/src/splashlibrary.cpp @@ -59,7 +59,7 @@ void splashLibrary::setupPage(int page) { } void splashLibrary::getFileList() { - QSettings settings("companion9x", "companion9x"); + QSettings settings("companion", "companion"); imageList.clear(); if (settings.value("embedded_splashes", 0).toInt() == 0) { QDir myRes(":/images/library"); @@ -144,4 +144,4 @@ void splashLibrary::on_prevPage_clicked() { ui->nextPage->setEnabled(true); } setupPage(page); -} \ No newline at end of file +} diff --git a/companion/src/xsimulatordialog.cpp b/companion/src/xsimulatordialog.cpp index d2200e9bf..be071b6af 100644 --- a/companion/src/xsimulatordialog.cpp +++ b/companion/src/xsimulatordialog.cpp @@ -30,7 +30,7 @@ xsimulatorDialog::xsimulatorDialog(QWidget *parent) : ui->setupUi(this); ui->lcd->setFocus(); - QSettings settings("companion9x", "companion9x"); + QSettings settings("companion", "companion"); ui->lcd->setBackgroundColor(47, 123, 227); setupSticks(); resize(0, 0); // to force min height, min width @@ -179,7 +179,7 @@ void xsimulatorDialog::setupTimer() void xsimulatorDialog::onButtonPressed(int value) { if (value==Qt::Key_Print) { - QSettings settings("companion9x", "companion9x"); + QSettings settings("companion", "companion"); bool toclipboard=settings.value("snapshot_to_clipboard", false).toBool(); QString fileName =""; if (!toclipboard) { From 4f087a216f42c98ab6f9c4d285eda6e7e6bad9fa Mon Sep 17 00:00:00 2001 From: Dvogonen Date: Wed, 15 Jan 2014 22:24:31 +0100 Subject: [PATCH 141/308] Fixes #511 - Again :-) --- companion/src/main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/companion/src/main.cpp b/companion/src/main.cpp index 58a82c7b4..5f20a9a58 100644 --- a/companion/src/main.cpp +++ b/companion/src/main.cpp @@ -77,7 +77,7 @@ class MyProxyStyle : public QProxyStyle int main(int argc, char *argv[]) { // Start by borrowing any left over settings from companion9x - QSettings c9x_settings("companion", "companion"); + QSettings c9x_settings("companion9x", "companion9x"); QSettings com_settings("companion", "companion"); if (!com_settings.contains("pos")) { QStringList keys = c9x_settings.allKeys(); From c27c4f2c788def0a8421bcc73e77bc7aff0fe9f6 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Thu, 16 Jan 2014 07:07:37 +0100 Subject: [PATCH 142/308] Update DONATIONS.txt --- DONATIONS.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/DONATIONS.txt b/DONATIONS.txt index fef01b05d..a189062a7 100644 --- a/DONATIONS.txt +++ b/DONATIONS.txt @@ -288,3 +288,4 @@ Josep Clodas Sola Thierry Martin Peter Mauro Mitchell Brenner +Ulach Green From 1574df9e1263d9e07ff245ec77d17780e0fdc5e2 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Thu, 16 Jan 2014 12:32:51 +0100 Subject: [PATCH 143/308] Update DONATIONS.txt --- DONATIONS.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/DONATIONS.txt b/DONATIONS.txt index a189062a7..0675f37c6 100644 --- a/DONATIONS.txt +++ b/DONATIONS.txt @@ -289,3 +289,5 @@ Thierry Martin Peter Mauro Mitchell Brenner Ulach Green +Lluis Bullich Rañe + From d2e510792def7261c236cbceb998fa1e33564104 Mon Sep 17 00:00:00 2001 From: Kjell Kernen Date: Thu, 16 Jan 2014 12:44:27 +0100 Subject: [PATCH 144/308] First round of 32x32 optimized icons --- companion/src/images/add.png | Bin 224 -> 176 bytes companion/src/images/arrow-left.png | Bin 436 -> 234 bytes companion/src/images/arrow-right.png | Bin 432 -> 252 bytes companion/src/images/changelog.png | Bin 309 -> 227 bytes companion/src/images/clear.png | Bin 338 -> 238 bytes companion/src/images/compare.png | Bin 884 -> 518 bytes companion/src/images/cut.png | Bin 4276 -> 3657 bytes companion/src/images/duplicate.png | Bin 482 -> 322 bytes companion/src/images/edit.png | Bin 539 -> 396 bytes companion/src/images/exit.png | Bin 869 -> 412 bytes companion/src/images/fuses.png | Bin 878 -> 488 bytes 11 files changed, 0 insertions(+), 0 deletions(-) diff --git a/companion/src/images/add.png b/companion/src/images/add.png index 7654ee2c3ab7ad25c7d649f32ec27c52bb5bd739..db3722e26145ed54957eb801a81383f82dc458c9 100644 GIT binary patch delta 135 zcmaFBxPeizGr-TCmrII^fq{Y7)59eQNUMM_2OE%l$S`BZL`9=m0Zv1+{`CwcKp|UC z7srr@!*8!Paxy4zFgRxapPS3+IdM1Ro0Tg#8se5GxP_hDbGgi8f`X&)y@h{vE>n)K iZ2yzm#KOsR;|-%GGqYMzmdZk)K@6U*elF{r5}E+;W-5sQ delta 184 zcmdnM_<&KdGr-TCmrII^fq{Y7)59eQNPB=V2OE$KeY@FxqM}hfKaYv_{CwF{K%rbu z7srr_TW@b(KP#rskBH~C*lKC+}^ t=i(q~lW*S7X1GkgrJLL%Vfd_3cov)N&zJF&-T>Xe;OXk;vd$@?2>>fkMw0*l delta 397 zcmV;80doH80ki`liBL{Q4GJ0x0000DNk~Le0000;0000;2nGNE09Ea?N0A{ie-8{c zAUcbtzyJUNK}keGRCwC$*)d83K@@=DUkgFgiH)Qa^Z@DX77q~YY^=P4rIm%~5iIO& zJ%Ho{IY5el#gazS*{B$sNtZA$AhPiO57KRs{269v--0Abk|arzBuVOot&V=LL*NeB zt6cX5+yK)|e_9`y0E^1!6FASdf1*!-HW23n7-owz0A|5BO}03vz{%S z+X0@9v)+9$&NpzJah$RbjDwLzKrdsY9`I_UdZZU4{oRJ0Hqs`y{1I?KV^YyW{hOu1DC)Xk|arzBuSDaNvZt;FUlUGd%j{T00000NkvXXu0mjfmKLsz diff --git a/companion/src/images/arrow-right.png b/companion/src/images/arrow-right.png index 4c4cf0575276a4670aa8ed90d4eef9f1a2934b6d..4bfa136ea336186bcf52af58222fba8c798cdb02 100644 GIT binary patch delta 212 zcmdnM{D)DoGr-TCmrII^fq{Y7)59eQNUMM_2OE%l$S`BZL`9=|0WJo;h#QJ0fkK_0 zE{-7)hu=-Zga5VJnLV9BQHK(ryLdFbWngU)aO%*Lh)F;B`|g&5 zPH)mL6gk^9?0s|iX4{{GC22WVL?+)`Wd5|baGPTMjei`XMn|8-XZIIwU%4&HJ8|ON z50YzNtUAP6+*&^QuEga-T0LxD{KBz54C)Ps&*r-3x^O7A{CLE~RxSPa>WmjUKvyw% My85}Sb4q9e0O@E|7XSbN delta 393 zcmV;40e1fU0k8uhiBL{Q4GJ0x0000DNk~Le0000;0000;2nGNE09Ea?N0A{ie-8{c z50P4%nE(I*JxN4CRCwC$*&$8?K^Q>cM=g$E2o6z4($o@?4F@b+y#T8~q$zNeHPR?JlV-qa z)<}=RnKT2=vPOCcMw$a%Bejnu(9araP&SB>NEb$GAKyTgHPUqn5Q$W0jZ_6AHD%Tr zsb#FnBA@o@whl(R%oe9x_CAq76XR?j&*h}RI2*<&+sx^gji3wj2EAaMUk14Mk?y`{ z=Qt@}FX~{NC2-}7sYe{YZi8{=zwp3ei}}&@6)*nFOT1TYRWnt+C40j6#11{C7J;Ni=PXxqYBv09oe;h! zT+nITl&vqUrd7-e2|1yw%C}Jc`PaAm7T@}Rsp))qc{Qin_Hd_3np;ZSm#LiM+vxm8 lz}jS|{cCj>j-Rs3B33R}1#a2T>H}KN;OXk;vd$@?2>|F!Z*MsAH5mvvTs$aYcJIHO+`-ws)j}r6wv{~C+mb76cR5mk5vce;-ZP@U`E(@uA$~v} NgQu&X%Q~loCIB!DY)$|G diff --git a/companion/src/images/clear.png b/companion/src/images/clear.png index d19acbe930fb1f6509df9a2592b9b2ef3c94f6e6..9efe3aec62c3ebb4f85439e980c117ded88f9019 100644 GIT binary patch delta 198 zcmcb_^o~)nGr-TCmrII^fq{Y7)59eQNUMM_2OE%l$S`BZL`9=|0WJ={)%o3=K%r_+ z7srr@!*8cKavf0MVTt|!|M{1ost*BcBvq%#en^|7dUL^A$>bhS!S4&-+r3yk_D)Z0zm_+ibVn#6*S+4GKi+4bGFnGH9xvXyY;nFXkWf#Jv0 z+DUJjUYB|DnY!*$+bPm_Rn=1c<>Wb8omcL!5860S`D=FnSE-dDYsx2vNoRjoymTkx zzLM>_$FrPxB{Oo?sMcRwqZhVyq8DF8?GmA8GvUm02hO_AGOE}-@z}8}t4lK?&brT% zUcJ&IIN4M(GiS~IjxC&dw*18tk9<1xQuvtr#``*^u32hfCmC1wZatC^dhFKGva1PZ t4(UfWEwxja<}AgWZ265D?9v0$=BGCvOP$%^36?7V_^@dmac z;vEFRE>$4@uX!u_-afPY+-w9L*eaXMxASjiW>-iOFJu8;%sxOLAn!mTVmwx>l|2zH z4S?0y?RIwG|1XfqoH&jNfTPife}}`NdLWWlsAjYIJdmwC)9F+Tt)P-5@e2fiv)N1= z#lc`e09-5<&jCeIWGthKgl+^uU?jKGJhb2M5y!Fi+2wMnCNbVZB}syB6=2*{xRk7D z&zMLikNP1IK@>$eolb?>`&a0L;3|`Hq2@h`R%x}&bkF>>nhWQDtymX1e=k6fK##{` zwe81zK1Uda5D~OmEv(mTch%nXFH_d(bhJrvxm=ppL6<cc5OcM-kz0 zIMlW>-hq_k&1Pf$Zee1~HnPlF<~BOj6ctxrAf*;pbuM#WT&uXLsg+e!KbH+}1M~%| Wb{ZKlzsQFG0000dy%-VPAnMHxBRb-SDB8%xL)T!_R?l=ZU1e9-`=DW} zx_bMjzBk`{T>}DvKp+qZ1OkCTe~>$-89sj>u*1-~CxO#I)#Wc>5STK!T?SfAK0u4( z3K#$`nS72`ix2Y_xYoq+-Ab}Lk^pwQD7UD@#&SH@3*eItxw$H_m%v8gvuU}x9D^R% zAj$P0ZJeZLf^-^>(;fNT0gM>%I5m=P0t<>1xNUo!MghOaMBpy6#Ij1oe~8@j@X{S#? z+M364l^|;#$A@~5H$Lb(fABQpG3SAmz7RC2wk-H46048x$_V}tg7o+ToCH<_uYAqL z(%^~Oyq-b*ghjLGK%k7`W8e(1w5T_oXGJjyD}cMyFYX6QYC1KHMaB)5Z3guK_kcAi zjO7X7qE8Z=1B?O-HT&M6FQN@#U@cNn3EBfJiS^wFmaCZ4o-kwffBQnv=2-g|umyOn z+5xZ^n23#A56tj^pjENf2#`#$4`_o7mH#%mV;G*xu!4bN;cmGtc~?u0lo=AA=)*4A8cG$ z-fCD1(w(GV!I~DomEQ?~I~w!&z3AkcUgbJogokuVVw-?xYUZ4?bP3Pk diff --git a/companion/src/images/cut.png b/companion/src/images/cut.png index 9e1e1d7f1b6b6c24be30236dbd2e7be6f6f5a156..4a05f8b0dbbc2eb4f009e5840757b583aca953f9 100644 GIT binary patch delta 3644 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 delta 444 zcmV;t0Ym=60^$Q9iBL{Q4GJ0x0000DNk~Le0000;0000;2nGNE09Ea?N0A{ie-97| z6(QOZ%K!iYZ%IT!RCwC$m@Q5NK@@;L2*K212nhm9dI?OAzzGmIt^ul=8&Jg&Fa(Do zSX>>ct3h-Tts=8!e>*$V?@ONAm)+TKC;Q$!5D^g(5fKp)5s}U)Dn!-1I`IOG6qJFa zn1Yg!6kE{XC52?P$!q!{1}iC+f1u}7B*hYRoQkAaf=ESDOhHLViY;jHl7=8?(2|BC z=s!t~Ip{!8mHQPfpIfwCXXE!g^t`Pg1@*~MBJ14sKWi{M=oVN7D$g{R-Q7i*p8(51 z&eNuJ_qncQ`k+f-Ued#yC}_nG*&w+8yg6bBIY2e-qf8Z(yL4D4j ze}HQRZI2ajr=abz0L~Q@j!)oX-+$8gB^~yx;s7k`GCwQXIS)0CAK5mFuYufU#mben zpfT{(L4%m3pb79D$a!mU#K=z2&8GSLd;PJ+NxoA-sSNG=TG!4eibchb5Ov$9G*MKL mf<#0_L_|bHL_}nN_yxKR5?Dks{~k&J0000%SQQ diff --git a/companion/src/images/edit.png b/companion/src/images/edit.png index 1b10af6444c09865860a244385aa22c5b4e2f319..adb5a66497a7d87443361f6114595c6f5e37288b 100644 GIT binary patch delta 357 zcmV-r0h<1s1dIbAiBL{Q4GJ0x0000DNk~Le0000a0000a2nGNE0O0_bn2{kee-H~A zBnjeJI{*Ly8A(JzR9M69)-g)NKp2MM$3+ko5y56{tOQRWh@QmL=n1y*0AgXOjbdwI z;ROWo4qB{*Hk;VYLRi*iGnvf>oEJjKFl65O^3P<*WHOnVlr^uzE(sOke$a-{JpGDF z|D;m8kwPT~siofVij(mCUQ-CJe^N=kOvJv99v&h-Z4#+*9TXv%wa~s2S!;u)tM3$} zAhU^2oY$Ppw3S!jA~vNx^zl&{V325g&_rrDG2_b?wvL(X;A=wadd_-Uh|phBHxW|F zgkWom)O}5Y{ zwh(OK47U+K-qy}T(eLPW?TozIV3rG^a|vZKnSaMG$_1S$GX_kI00000NkvXXu0mjf D<_4W^ delta 501 zcmV&$sGI$TYk`4}ni%TxT#T)46 zQlX1DyE=%oxE7pxTuvc`G(9cN$)BF@g)C_yf1fm*G!&FlN-3q3Qc5YM)DF1@w*@c~ z(2*lKA+-oW(pv zAgf5GfGi@J1G0u>637ygSs*J&rhzOVnFkuRjAR~Y(K3>GAh##dBqg9-k)HhTyg^Dp z#pf}30L~Tg2J}+`a$8onBF?AZm!%3+MykSbz(dMFYotv$hj>idc_3VU(O9sclonOUPz*E5dDYsH_tO00000NkvXXu0mjfbQjS} diff --git a/companion/src/images/exit.png b/companion/src/images/exit.png index e1471c19f8c91bbf638c61fda3e571281da9b3d2..662f5176abfb0fbedbccf6ead32bc6938b346792 100644 GIT binary patch delta 373 zcmV-*0gC?R2Al&SiBL{Q4GJ0x0000DNk~Le0000a0000a2nGNE0O0_bn2{kee-H~H z9`jsou>b%8DM>^@R9M69mp_UEF%*Zt*-pVuwDAPuMLdH?*w)_CTClb94qm_`2nv?l z2n!ZgDU=zTCp?0VzL+eF1{$hNL%uohOU#?4I$&2G zln!?HAa9lW3NrDgqApGT>SEUh7Qp!q#98v%Ar%)9;5tBGp0~hn{>8}3$};E*26&B_ TwmOr800000NkvXXu0mjfh-siY delta 834 zcmV-I1HJs51LX!GiBL{Q4GJ0x0000DNk~Le0000;0000;2nGNE09Ea?N0A{ie-8}^ z2j7Nb;Q#;v@<~KNRCwC$nm=e1K@^8S!x1ru9*CX@3KnUML_|;w2O>6N1W`c_#a3)Y zu&_`YAxZ=rEd(n;n~+9qPMaV$k`N(?5{r;VEW|%}C|pR6^9`se~P6 z1hvLR*TvZeR1GK41g>i$w;O@Z19ijtKY*gk0zEf4Ujt4?P>Yq+S~@$AT@`0IAaagJ zSgei%4THU57nAf=!?F9o%Lr|~0PgkZOCqc{g#9NVZ=u~W2rL_J=e$c1GzJW5j!h_s zqoxkr)f^iF4!9)H5zYJ>e=ub+a;JcmkUoVXXIY@R5YaQ;p~??xx7L6e&C~IaOF2lF z3npW*eM@6|!KGVlt3f#1d<*GQA_8sF%>Rx-ptX=bIZ>=e>SO?gkisP*(09%J&KLyR zkp_WuJ?6bJ2((Kxzvz-ci-wvhZ&94QvJvK@B_hykLkV)uqCjP3f1?w#F71PghU$75 zJMGY%VgJ>@!M;$%(0;gV!QLgzJ!;1Sl$7+(G#3%m1nR)> z7x`C#2JixmEr8d7+>HldBXV60f4C8AdsY>!iKG)Z??tQ|iTKQVTdzg(Vm|mHejq+V z!|VdpX@M3MOfjwk@t1+>WbWCfMU{FAs+f;Gv1ckK6EHcjX0>&F57eV4?#Sc2i5o*} zKlKBZl9B*2<`q~eqj&AN79c(4gL!sadI1~)^JO>H+%pQ8v1=JKkp`M6e~hnEQ}vmO z5sc1N`3syLHIGx##qm>Q;cftNtoZF?@sj;Pdmgy{?TmIY81=&ENK@ZnxE_-1`uK{c(nFjEaM<|MVs@>5qN szWd=t*(l?*EdX2YKRYQY7%9n0pT6j!=B;U@Jpcdz07*qoM6N<$g8L}J2><{9 delta 843 zcmV-R1GN0;1MUVPiBL{Q4GJ0x0000DNk~Le0000;0000;2nGNE09Ea?N0A{ie-95W z9m$iQ5&!@K`$s{(onRq0HWJh(C^ixyh?PQ$V4Mdb2;hK-NtRE!`6`~*&y z{AXAz2VgiskODS=$((tPyC|o_3qwhlbL3daD5nARZ?&Lf_Wt8Iq z6E^gsJBET3a5ZJ@(G0z(BS!(#HVCQ#p9}?U0vA%mZl!Qu`f1|Vw`=B4EqU1bwVYk4vfuDh)0_EJ-Yd0qt)3qR~F&n_{ z402i_aozxDUEFsX1RlgRcG0&aFp)E>d&mfI4A^7Ck|HlR1C3k@ku;S;PUUCWCiB`%>1NddTQj2}wtRd0>_9!^F9i1-VuwNxi`Bj0?-S(W)|%?v@~@GLp`hD93q8 z^@yzuPp`L%oFO|YsY&!E`cQ(T)eJM_C`nI%0UHHP6MqboBxzTMoKXwhw>CRX z=gewA_ZVgK Date: Thu, 16 Jan 2014 21:03:21 +0100 Subject: [PATCH 145/308] Icons optimized for sharpness --- companion/src/images/add.png | Bin 176 -> 226 bytes companion/src/images/arrow-left.png | Bin 234 -> 222 bytes companion/src/images/arrow-right.png | Bin 252 -> 227 bytes companion/src/images/changelog.png | Bin 227 -> 307 bytes companion/src/images/changelog16.png | Bin 256 -> 0 bytes companion/src/images/changelog32.png | Bin 227 -> 0 bytes companion/src/images/clear.png | Bin 238 -> 235 bytes companion/src/images/compare.png | Bin 518 -> 460 bytes companion/src/images/configure.png | Bin 497 -> 333 bytes companion/src/images/contributors.png | Bin 1028 -> 574 bytes companion/src/images/copy.png | Bin 324 -> 302 bytes companion/src/images/currentmodel.png | Bin 635 -> 365 bytes companion/src/images/cut.png | Bin 3657 -> 3651 bytes companion/src/images/cut16.png | Bin 3346 -> 0 bytes companion/src/images/cut32.png | Bin 3657 -> 0 bytes companion/src/images/duplicate.png | Bin 322 -> 313 bytes companion/src/images/edit.png | Bin 396 -> 389 bytes companion/src/images/exit.png | Bin 412 -> 408 bytes companion/src/images/fuses.png | Bin 488 -> 487 bytes companion/src/images/information.png | Bin 390 -> 252 bytes companion/src/images/library.png | Bin 278 -> 216 bytes companion/src/images/list.png | Bin 398 -> 345 bytes companion/src/images/logs.png | Bin 633 -> 343 bytes companion/src/images/movedown.png | Bin 493 -> 312 bytes companion/src/images/moveup.png | Bin 500 -> 306 bytes companion/src/images/new.png | Bin 319 -> 250 bytes companion/src/images/open.png | Bin 438 -> 306 bytes companion/src/images/paste.png | Bin 480 -> 324 bytes companion/src/images/preferences.png | Bin 741 -> 431 bytes companion/src/images/print.png | Bin 308 -> 258 bytes companion/src/images/profiles.png | Bin 224 -> 257 bytes companion/src/images/read_eeprom.png | Bin 437 -> 305 bytes companion/src/images/read_eeprom_file.png | Bin 456 -> 236 bytes companion/src/images/read_flash.png | Bin 763 -> 459 bytes companion/src/images/recentdocument.png | Bin 1013 -> 521 bytes companion/src/images/save.png | Bin 280 -> 209 bytes companion/src/images/saveas.png | Bin 353 -> 253 bytes companion/src/images/simulate.png | Bin 399 -> 236 bytes companion/src/images/switch_dir.png | Bin 716 -> 415 bytes companion/src/images/update.png | Bin 603 -> 396 bytes companion/src/images/wizard.png | Bin 2423 -> 1144 bytes companion/src/images/write_eeprom.png | Bin 461 -> 359 bytes companion/src/images/write_eeprom_file.png | Bin 295 -> 251 bytes companion/src/images/write_flash.png | Bin 785 -> 445 bytes 44 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 companion/src/images/changelog16.png delete mode 100644 companion/src/images/changelog32.png delete mode 100644 companion/src/images/cut16.png delete mode 100644 companion/src/images/cut32.png diff --git a/companion/src/images/add.png b/companion/src/images/add.png index db3722e26145ed54957eb801a81383f82dc458c9..17697d5ebd5f2bbee454fbfda396ef3b5144c9eb 100644 GIT binary patch delta 185 zcmdnM_=r)lGr-TCmrII^fq{Y7)59eQNGpIa2OE$quB!SnQPH?wfZgKLAC;d#k$g`V z$B>A_$q5pyixZYGyK#N7axi3OWb?!k!H&k*&x7S#-`=Qc-4{F(9vcVue+?lD~70T9efw8 h=Jz)R8W=G!OwLrAV#A_Z?86TGAM8`IA;H!o6G4raW~_el`A+J;+7}4g`L}Txy)mNf}`-gg@1M~Q;x1| h|C8Fp!pU^w4WlMAvszJ>%0i$)44$rjF6*2UngHW!DtiC` diff --git a/companion/src/images/arrow-left.png b/companion/src/images/arrow-left.png index 29aebe7dfcdbbbc32afd92e6ea27c1afd011af24..9fb8a885d324653306b5435cd4413d60c97a4491 100644 GIT binary patch delta 181 zcmaFGc#l!BGr-TCmrII^fq{Y7)59eQNGpIa2OE$quB!SnQPH?w(A2nd&S7()NVcbo zV@Sl|w^I%I8Vq=tlhw@r{kNajm?AboAbHlKupdj-ZJVu?*JAkW{Q{5n$Xt!H+Dscl zg}pvcV_0)3YSObcvs6ON&-*;c-RFMfTPpvC<5H*RGo0d;Na9_tyGU`>56MS6&aK_) g_gPjt`3&cYZV{GsX{rYpxPcaXy85}Sb4q9e0L!REX#fBK delta 193 zcmcb|_=-`nGr-TCmrII^fq{Y7)59eQNUMM_2OE%l$S`BZL`CCzE=Hayivx3jBITYg zjv*0;-%i=d+u*>%a$f9jxEEuJnv!KB%l70&bD6>(m-8g|7(Nqbd@3?^KCjVI5ound zg-_HJf~WLcS{TVRG4kz&xo7-jJvxlOY}I=&pyt35zC5MN^$PdJ`%(8d`CmysvZQ0@ r;vi|0Z{E*lxJ50yFSa`eUT{=EPQScFAo4xB%5;6n?C`$ZiV4X#$kex_rMTWSJQ4l70q@MZ-5VLr*I6X3J`)C+sw h%^x*D7O*fg+}|V2B9LYOhZ3K=cr?6aU~Lg_>d=#jNk94f?v{g2 zZ_+OmIombteRKF`+n<9aX*pL!Cf{3R{cJsT0Z%%#N|UhnrvSD!m&OK>J5j_=DOy(a45F?c*Mk3E&ccEj2AjUS21|H L`njxgN@xNA|Cd!b diff --git a/companion/src/images/changelog.png b/companion/src/images/changelog.png index 0fb45734e1a90a57709bd1e67153f43979be881f..2e97b00a0889292f11113dc5d309be2fc8ad8200 100644 GIT binary patch delta 267 zcmV+m0rdXk0kZ-jiBL{Q4GJ0x0000DNk~Le0000W0000W2nGNE0CReJ^pPPle-INd z1cHc2jQ{`uz)3_wR9M69mr)ADAPht^OE2IFJwlHwc$wLsE|k?N23)LNh52f=FJlrd zNZQEpvcY2kZ0Z33S8|ZVPzL}orR1MTvMMvxGL4Jcij+O0rq`& zLv#foX)#6@ga?2X6#!m{t^j9eVL}K6SWQs&p85bt8UVQkEj>f^iTid!QR{_KSJ54= zan7?qMJu9Ig;0@~!l=u_^ RJ>UQU002ovPDHLkV1l1nX88aB delta 187 zcmdnY^q5hxGr-TCmrII^fq{Y7)59eQNUMM_2OE%l$S`BZL`9=|eqll0O|RF?1qu~- zx;TbJ9DX~+k?Vj04~zNH^%XDv%S*ghZB;W>y(N3X_rwl8rWS#uMdvJ6b80sHYn>3j zCtT2J+mx*@tfp1W3JE!(tID@f{rT6o`xf8&f2rwwd3iOb+V*g#Nt#&?Z&*}qO&fw|l=d#Wzp$Py9phd_4 diff --git a/companion/src/images/changelog16.png b/companion/src/images/changelog16.png deleted file mode 100644 index a74aeee10a6b24f27a9db5d79c99c419fb278f88..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 256 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkEING$C3%Qsta@~@r)gp0e*{%=HCsIEB{5(1Fhmc}d{*FbS7XEiO9^a*MP5hnQ zjs)xQ1^wUdiUjSsw^OalyjW&Vp-;o+rTlH|H`>pw8@RBF_`Ot#txbQpuDtDnm{r-UW|u>W1G diff --git a/companion/src/images/changelog32.png b/companion/src/images/changelog32.png deleted file mode 100644 index 0fb45734e1a90a57709bd1e67153f43979be881f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 227 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbB*pj^6T^Rm@;DWu&Cj&(|3p^r= z85sBugD~Uq{1qucLG}_)Usv{fjQqlayqjLHnF|yu@N{tui8%ariX+zn1s)djqw6bP z{Fj$_uiC0+s(MTIgzt$RdQ2?>NsG=|uIAKi_}4lid{4Nb)3zyFUsz46m=zLoLRXb< zq5AW$Z}%;}_5V`S`SS8=PPOgfPLnjZl(sKZImNfp`Hg_J$xi#%>Mk5VWtl~+T&~`- SpVbGno59o7&t;ucLK6T_*-;t* diff --git a/companion/src/images/clear.png b/companion/src/images/clear.png index 9efe3aec62c3ebb4f85439e980c117ded88f9019..345e70b62b8e1646d648bb3a868bc8bd71436a8f 100644 GIT binary patch delta 194 zcmaFI_?l6%Gr-TCmrII^fq{Y7)59eQNGpIa2OE$quB!SnQPH?wKuldnmrDjHQsL?1 z7!q;#?X-h@2NXD*SN{Kh{_fGq?W_WarhQSp$I{i1rPlI;^Umt3^#@;G$UeNHo~3#J zO+(@2*eOSZ_bg>uZkzu{d1hf~Q66KUpvHX(0mjz>QZG1Pix^ZfEw;U2#=3grvo!%P tdFSPwc@x^xl=NJrGr-TCmrII^fq{Y7)59eQNUMM_2OE%l$S`BZL`CCzE)Krc`Q4mAk!nvD z$B>A_Z>KqO9Z=w5iT(fo`In%o4*_c=Rj0^)NSma3bHQ5406$`Sn_kDZ%PulsIMDnU)MllvyuI_S+cR+VAc)I$ztaD0e0sw^JPTT+h diff --git a/companion/src/images/compare.png b/companion/src/images/compare.png index cf57f82a381eaabc006e1ae94109c0c1c2f43774..34e437850785b2e9a23dd55eb27442f662982e70 100644 GIT binary patch delta 420 zcmV;V0bBlt1k3{=iBL{Q4GJ0x0000DNk~Le0000W0000W2nGNE0CReJ^pPPme-j}g zR}Zm700045Nklk3`K3UqNWHPO%8yNNXZe9$Q>xQqClcTbh%Qb+#oF# zcc7x9LLxuSPQ*q7J8YOqv1{pf20z9g8#4fUr&;u7`v*`4U}mW5cs!~X762s?5!NV4 z5-7cQEr5!T@B0skrfJLr0H7(ve`)}c9aUvn1{tIZ#3lelgrX=QJEbU!79nNYRWJtdQ_hzFHlGEz+ijKq$1A}A@Z8)m z09?C; z1i-fKhwu4(HVZIS-}fYH;cz&Z1?al&({UUS5%&8%#&IOAv*1}_7=oD*$1!BxQagYM zbiH1cpP6k$!!T^t85jSyWvdx8i?7iZSj%D}_JWs((buUk88H6y+wmR$G$vAZwXYli O0000FB&-}ES3+I2WSQj}je?X5wkH=%R z?Z5wuz@tk-LI)!y_kQ`YHpv`KNfT$P9~E(2=AF10P6KR zy4@}SU_2hXZP08ZbZcpvG7LkC2>bnhHIgYipU-SG8U(<0yUje$@Ai~;pkA*>5#ew+ z)V4C-ft2ITW@G(sVPed(HOyJ&HagW56<1#%r50CpE^}U7tGKDDl~q(fmkn5YB7R-!s=#f^zohs$qeg+px&~Gi19jFxo0vCix~I00000NkvXXu0mjfElqxW delta 459 zcmV;+0W|*20`UVOiBL{Q4GJ0x0000DNk~Le0000;0000;2nGNE09Ea?N0A{ie-95X zG@uMry#N3Ken~_@RCwC$*P%-UK^TVdM-dE$1F?v~KR^V#AQq7eUK4}aV6&KvVzXOB z#ByM@i9ryth{YlotVR)0M8vg>ILLaphl|d!&kv^D&fV_3%=hgaNRlK;k|arzBuP@j zW`T3y3Ah0kjpR!Mcn7j?W2x%Fe@p^fz+Fx_8E{$EV1|JGA9hVV9;z751kmabOl5b_ zd}zX1*gbo|OlZj6_MoBE7drkGhX^cGw0aQ{~5VM$tV zQx@Af^EaaF*T7f_&yWGnz)EW2)C=^EdYD@Sn$hPMz(`5Y5#O(wQpueZe{8USJ(4N8 zmqY_9rR4fc2xu_j7so&tmRQcX1*UqXNjGx7m)Ed|OKQ@G;rDy?H6PoI=3W7#zX<3x zoUf8TC_WZED8|;JL*re}p|RcW{FF>d{l(voH{c+Y?|8w0YE-~v*a_V<y002ovPDHLkV1h!4 B&mRB) diff --git a/companion/src/images/contributors.png b/companion/src/images/contributors.png index 228c68842aa7e8489455373094837008e6bec798..a51bc3c5650d926da41c2c28edb12977ed151bbb 100644 GIT binary patch delta 536 zcmV+z0_XjN2)+a%iBL{Q4GJ0x0000DNk~Le0000W0000W2nGNE0CReJ^pPPle-INW z1-j1e+yDRp%Sl8*R9M69mAx+nK^Vq=cjR1%4xv(r3!$J;QXqPbC@&HPrJ6?k0TLw% zddXF)Qy?OA3JQg&2qF?6g>!CK^KP=4yt^}ZtB|-SnQV6E{dnH58K~pGqrp*b2N3j@6e}E5#z+0%Nf@wIg8BaS92qNDw?gtaCe}E^w5R6_W zN#v8jI`AYUo`GD5l(qo!z=Qn1$Xzm9jpHSWL~}50AhBMX5-H3asgw%T-P z1XA+N0^2qMsgPn`c{ui^Zr)#Fa0FNc#(*wE_FZ~t1-Ou`Wh5hcgXE=@9M^lI1Gsaj zt*?x1VvJSc*j(c_<0%IMrO-oDEy^}sm#f%IkiE)pWWaNji+V?5gKTts6Vf#j@TjAX azm6Z1xa^M){Y3=;00005>Y}#Ady*=1%ebrwg`8%ilQRi z1r^e!MFj;>v~W`{il9{#LWGMTqz_v30o7^-|5k}e-Bs`;I%^$ zXswUqZ5Lb<2Z6>c$9uhEl>uKn6oIBK$4`3n{jjuE6?F&Q0Q@s_sOdaTH7U)_Zs3EV z%`DIyWr2zbX3w;F~atZg`(Dv~t3sen!EwX?KV2zAFXRzRFGIo{B z^%^@^#HU4qWRb|%2@dyKf5bPf20>%SwJRg-q$hxGkN#fyJZoX|lzjGijOhl3!;EF=+-K;yuT0)0ag-`E6o&e%dFlAFLtoCI=2n#)s3 zWS3jos+9HxxSywgB&bCs%KYkGkU-Kl034IulLfAp^M(^4`KWeaf5y_M9V;>Yh@3!4 za;4G6Jbg#x^NMAbUICn!?`?VdTY!U@72ralo?Jz*&mh&ZHVWqTo~STXwp!1V$T zsO;>LxF&0{&>o4TUs}w0CwbmoOHtnd`@@Qs?^p`sv}t*|O%`*S$QACVOSs-F@F<8V zyAT_IPbJ>y+;rouf5F(-25E+A^`M~~<&433-l+3LkT;|4i=JkF;d{OAY3XmUvM38c?PK*fn0UO#?B(uV~x04aG&I{t(1*XYY}Z zgHjt<807*qoM6N<$g37wb^#A|> diff --git a/companion/src/images/copy.png b/companion/src/images/copy.png index 6a551d81dafa3e725a97308c0191217a7a029e3b..aae5f53029fe6123ced90141eb44fdae2214f1a8 100644 GIT binary patch delta 262 zcmV+h0r~#K0GjLM;H2 zva%hrxNU$50Ki(P>boQ&Squ?jOT-vyjbpx}1z`0FA-qC#0a|85Rk;KJ;L(yi0$6>$ z_g#qLfSj{9=b9120VE}*)Qp${TEr(bC@m#` zy&Z4Bw*l3^06?|KOr3$*$M&;wR6|d>9SX1t$VkZYB*ea&ZNO^44<>AzTCbn000000 M07*qoM6N<$f_!vpi2wiq delta 284 zcmZ3-bc9KX@M7IY}k+;jIIY zf5d;JZ08x{Zf-`8>{qao7N?31!FD26*@s`0iH{878H3@H@NMSJ*|++IJNdP zkhsg00wnZPnWnm&Dq_=WH(_2Oa!F@_k%w`konq;BUbd>zci#?|-fq}fdjGj53&(}V zx!gS))Bk3qO>pNCP;h8q;Q)~gKO=0vG+*RlVmTr8#r1aA>x*mbyUr@7@iKv&=Q(M~ b*D412CuuWQyTu#^`i{ZV)z4*}Q$iB}<)Lom diff --git a/companion/src/images/currentmodel.png b/companion/src/images/currentmodel.png index 9808c2a8d58e8f1bc4109504976043abcfc2a379..816752fafd5d7ce4f220fef74967cd26cfa5d8b9 100644 GIT binary patch delta 326 zcmV-M0lEJB1nmMLiBL{Q4GJ0x0000DNk~Le0000W0000W2nGNE0CReJ^pPPle-IHS zIDesAEdT%j`bk7VR9M69mN5^(KorM+3}O&5h(UY=RuhRuVlWs*7))Zen>$*p;#(LD z1|Nj@1QH^Iq?Q{lO;vl>(@5^0yrq48|KGiPy%wyjtn^d`YB~kdngAnUm}CdeA`(#@ za7EOU09Z)?E7c+?4FETeTB<|Xe+hX_xdUln4fKGAC(i|PK-Tlj9k}}BW`Hfw2VPMD z$I?El##DFM%D_Rv_yknqocd)1^QEa*uLWEJjGsXB7pGs)>Wij7KHu8!m;`V_0NhLh z96e?OpzX6QT@&Ud$zU%IBUy9l{>}uzOcWmlk$ScGRu<%*+CpCbH9Q|Rmvib|X Y0j}?ID{8>8%>V!Z07*qoM6N<$f{3?+fB*mh delta 598 zcmV-c0;&D&0{a9ZiBL{Q4GJ0x0000DNk~Le0000;0000;2nGNE09Ea?N0A{ie-8{b z2E(gx{r~_12uVaiRCwC$*|AF-VHn5pZ$)tEAUFgZlxh(NLAp2;sW=D@f}kKM2xiqm zTE*SP(SM<|I22rqv!eJ92qIKb1i?iF1vQAML*HPCxyyNZy?gWC?*lJ{TyjZ%Jnxgs z6A%#*5fKp)5fMpG576t<8)|SYf1nv)T6Gfa#4M>`5O^|cP+RP^ses!8Gy#_-6?AFt z6Jxw2oZ=c+EHBn81hlSL{%ZjW6#^=lW0`N#qXGS<$sEhP%?j01T$@=Br!^#;;%d$E z7Mr&87;o)GsGz+x-{6NDpWgS@e?ro02WWR` zyL<=k9SG(gSaxuf1Hc#HUy9)z17BTlydQy|DTMPIXs)Mks0rXAfncucc|6i)n&o?i zvkP?A`?XGkX_}7~gL!nh5y$lnIJMM>`+dD~ZU#1L2 ki-?Gbh=_=Yh=`=@8Fy8&j*PV&dH?_b07*qoM6N<$f{+Uaod5s; diff --git a/companion/src/images/cut.png b/companion/src/images/cut.png index 4a05f8b0dbbc2eb4f009e5840757b583aca953f9..efbb2cd5dfbfd5d9d2408f175312f29ddf71bd66 100644 GIT binary patch delta 967 zcmV;&133K29K#$TiBL{Q4GJ0x0000DNk~Le0000W0000W2nGNE0CReJ^syn03V#p~ z93?o+gSr3!19eG6K~z}7?N?1}8&?!PS9+syg0VZ5y|9f^aHK{NPGN$*=ptPN7n1B! zuSzHsN@)xI1zB`al64j-^aBc|t1i;61NJ7}6w=~Nk5Dk+d*y_}SP$AZPr;EOU zVJb_b1iJDCF~gmE&ON&C%tZo@<9|4gh_$t~6aNQSVOY}l{S~cs-}n8+7j5qQ{-Wht z$t{57v@r%GTfXm4y+HFRk}b7RAcOn6v=dFv#W@gk~l5a#&)bc#r|vv$Lxr@-u)x0K6|E+axcM{8B_tk~||K4{iBp_WH5)!Wj{H zNU|>?ABf0ZlIH<@1%Kcbl4}PC2fvIIFf%jrD}d8+9G}eO7f3#_--aUcXB@|K_Srtk zmqkRZ2^Zry4m0>ZfZyUcK0nfgTI&_9_3dmvj^of6vz6Kf7gEdWLb3ylFwN+~L(?m3Qg3ILQ+t4gUrDMiO|&W^yIwb(!@wQ6&x zlv4LB_FAsxP%IX26bc1qKgDA4at`d}Bd|9nT0|nUNb+3(B>?*(@-@l7b8R<~6C~dQ pFbCk7h9LXFZiBL{Q4GJ0x0000DNk~Le0000a0000a2nGNE0O0_bn6V*^3V#n1 z9w2b6>?Z&K1A9qCK~z}7?N`rh8&?qiMtZAtg0Z`meXxyEaHK{NPGN(6=pj7>7n0mk zpGqhcN@)xE3v%e8Bz0MM~qiLNq8#u(zrgp+c!TJ(K?MQh#jeSdLWGQRIG z+FUCm6Cycni~-4p@B33@keMRcu(_rO#i~Jz{eC}woCRa-&+UUK^H7wOYMKa(}~OL2{>F zuRj`@5C9lsE^Dn}jDfx1s8lNJ&%;$Jm33pxjTH9s^KdfEPRr%;X8=C5ZG?z`WQF8! z&1RFy*yZJA5s{N3@-U9I_WADa?nnO#AzSFrSeUlZQvlP=X7ex==K$!EEF{PrG@H$r z#ujy|b?4*PZ#Cs;tsCh$t$%exYweIsw(9(_b%rL?YPGhFF*mi=aS<`bluM=3W*k#0 zl{SqrWn+va;%>HDt?gm!NY>AIX=!N(K!yBAI#y4g*yoRvegF^K?e?o#@@FQru&_`h zxo?Riiz7u6A~F{QL6{|fE-RrR2ttyVVm-w=N$CqDFJ&b&^cyM`i+>jY%mdgB!|+D{ zn4h12hvYZUOe*sB-rnA~7W+DYGJw4>4DXCZ$n(5)5!p<&CM5Yrr_*V8p7)lBe3xp~ zMyJ#H-t)Ygi2MMcm|B0c)9GwwCNw)cyDB0-0r(xj`y#SU@&d^(MC3ThQzG)fhJR}B zSFM&#iO2(zJrVgpM1Ss(JPY7U0I!f-J2*J_ITN9onVDYzoQ$IAc*?&(^0D15MdXht zistOvKFOCwM69S6qbLee_#S{?qbNF?Nz_{F6|MEHv_FcXz!bm`75(Y`$w$x;-S~=cJIgjZnt|sF+6)mO#HsqI)D42%5~j#p-_184F8nt zx^!JP7=R6I%)d^Vg+k$p>$>gCgdE4YqLiXi>aOEBCjdYxwW^eAE2Zc-&glWz(-zxS zO08Po38mCsi@h?^Sva51U(e-oOkeqY{^AhWi$`Fuk2M%YWRc{%015#1MdT}ze+@Nt vMUIht55OFNry?TqHOa@5pUa6&>_yt&k|;zkZavj}00000NkvXXu0mjf30Bl? diff --git a/companion/src/images/cut16.png b/companion/src/images/cut16.png deleted file mode 100644 index 8852d084dfab6e2fdbad8d02f22c9664f3292a69..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3346 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 diff --git a/companion/src/images/cut32.png b/companion/src/images/cut32.png deleted file mode 100644 index 4a05f8b0dbbc2eb4f009e5840757b583aca953f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3657 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 diff --git a/companion/src/images/duplicate.png b/companion/src/images/duplicate.png index 5ac1fcb46c708e11a00441de9a393a4e99565d38..43041429ccfa50f19886f3a4d080e14846bf9257 100644 GIT binary patch delta 272 zcmV+r0q_380=WVqiBL{Q4GJ0x0000DNk~Le0000W0000W2nGNE0CReJ^pPPme-Iu4 zHu(kV0002SNklG9q^xlfnhbZ96+o%HixesNC*6( z)De_AK#o#JQ0f2%VjaPV#~^I-|B2K`v|UUCo!?ogY#t+tp+a^Dh%zuRyn`D4oq>Tt znpPztA@Ti4Vn!sIMV14wffgk7X1=s=05L`HKPdjsz`&3@P!52xPt!XJ8j#dapmiER z7vG5_7D|sq2oo1!U|@I!W&dPgV9=&gXi{7kkn8{!A~a(w<^EHvz!~tmU=)mkQ2+qA W|CrJU|3_B<00000>T0ziBL{Q4GJ0x0000DNk~Le0000a0000a2nGNE0O0_bn2{kfe+w2V z+vaPE0002bNkl099mGJYqZo;B5H@xH3F!Y%uANMSt(;+@k-3Z{h8opENR)wr;T_bn z?+gqK()22+35oAV5;G#vEUGvNZyRVqQtwL-2N6?M{Db2E3=9mpgT+BG_UVC+vIZpe z6X>0W(8YHmiG>bCqK1i!FfcH@g0g=yFfeFSDYU6xmyzut77`4@Rto>8cELC3>atNV f3P!;w7-#?hGenruKxcR>00000NkvXXu0mjfHiB@W diff --git a/companion/src/images/edit.png b/companion/src/images/edit.png index adb5a66497a7d87443361f6114595c6f5e37288b..cebabbd9f73d581d3aa08d025e8b215d8b1a7d23 100644 GIT binary patch delta 349 zcmV-j0iynl1BC-2iBL{Q4GJ0x0000DNk~Le0000W0000W2nGNE0CReJ^pPPme-IuP zwJLxv0003JNklAZ%h7~iDY=V#4x=3(Y5VSFiZuVk^^ag1qr`8wWl z8i}9R89C1CR$&KYyph9K>xT zq7k6L!5qX*1fnsZz+nlI;|rUiLJJ4vr9CmhXL$Jo?z^hMEMx5AF^o^UGX}sKPH>&@ vq3W)O|9Zx#?|;4Jgjuwj-YYO41;MGzGc!Del&1WzD{p2XAW3AXV7VqvL`VryaH z1qAU9TC9aOo7l`kSk`4Tnau{A7edG|WZwDm&t%ACGMSl_HLt@i2^Haf(1y@F{fbKe zq*A+)LL~;NrQYz0lkogrQwXk7e@VSe#J-Lm9wI(%5~*<=6d{?l(7qB`YlEh%?-ZjT zvx!ff*PP6>l~>>*Hl;oE@lhFIkZ60*L~1xOYeMRJ&U#vi&|gwF5mL#7 zU~7uheNCyPLM4u-NZr+tN-k95xFS{H2iqaR)`f~nO%3rKWS;Q2tc1q&Iwf5$J%1)V4}226|q0000I0003cNklKZ*h|6vlsJr(h@A>w7;WA_Mgh$ZXN%CY_$OnO$$@^ZuWZs`ZMn*;&Y8lb!{Phk(1$_Oo<63OY@d1=i zj{MboDI61wfFGa=5KswcWFg=re-0l4Rt*AHNvTb^Lob8MyergJrO!M z-HW-cbxU4&N82%>lo^{RJc5qCm@JFr2Z5PMe#w{Q<1FMx>H5$<+gn zcc$pk`%yee)CDd;X#gt4(@g>Ne$>}(Fz#7u*ycBXB-pgq$*w- zmi1n0*)q4YRVT`y#mLIaGUy5hc#W90 SI+KF{0000ze)o^5XOH&OPhcgv=a#y`Gd_B7II)Gm^_7z5J;n7VPPTo z3>G#%fKTCb2$DiU!6q67&83-xVcd(Cy)}Z|2g}0U?0nzNemi?mqQoC#VamHEPzMGc zdDnpk@CJ;0glz(ej3;0#=einjf2Y=VeJfK_NyaiCA*BM_Q%d>5tDs+vAbUt;&UYM9zkte{0?^g62BAy*_Cl23?Weke? zp_fq!4Na(H-hs6cJ!4Ofr1pf1{8hH-3OEK9LpQI)F;eo89O1dZ3YaUof2$HzpCpxn zMjYjS#0{3D}YU#1bX`79S>zO`+!Gw8|6!0000;Z0004XNklze)o^5Qo2@rAcH?9 z`B#Ak@B)l2fY*WCjR#;Oa$OC$e-UeYRu!y?q!TyqMXVc%_{@4+uSN1=KKLSjAU;CF z>;lzkfff}^F|Gpfmx1bJ?%AeAm3j)Qn2$ZNXDTKWFgdVhwRL?D)T1Zv$m6?-8$)Y9 z^#hfXk^nO16<8^wckQ?qAU)-Sd3IZR0UQGJWjEE_GYXioYZ)_<2AV01f3H$g^_hwh zjLud03!r_V1Kc~qo(h;ZU>SHa{MewD+})(Rb;!WE=k%HCR)D;#{xS*}xHPD`x+puU zQYVpSZ(9LvdoIb2sML9c=?nOl1yB{}s%IJS;a)QMW_?>hHLbTWQw=cYB(=)&Q&%Lu r`{6~|DC4v(09)=qJ1HqC7s*PWzUZOmt!bn^00000NkvXXu0mjf$x*=X diff --git a/companion/src/images/information.png b/companion/src/images/information.png index 56b2ffe706ab72346f844c991e156c2ea0411fef..2e9c398f6d4894d8a1cb925893a23d29402e1460 100644 GIT binary patch delta 212 zcmZo;{==x)8Q|y6%O%Cdz`(%k>ERLtq!mDzgAGU)S5 z#W5t}@Y|_|d<_ab4E&Fey?gcfPVC>7)#r=9a`HWB>Mq>CWTv*arDZ}u-xlA422%=W zey>jO_{|!zf68}w8k4XAV<}^xmh?7#`J0y+b}4(fWSwCO%=s#1!1I`4BcrIXdy&I2psN@> MUHx3vIVCg!0HNGbO#lD@ delta 351 zcmeyv*v72b8Q|y6%O%Cdz`(%k>ERLtq&+~GgAGWAzTNCTQPHTLpWi^jZ7O>s0|TS5 zr;B4q#jUqD_Ie!-U~qVtEO?}BqSO2XP0ilZ`SRAqdRhMvvTLor?+~+VSJ|s2-fHd_ z_15Xl?0WD>sNH2k!X&@FhL-X%9ABIcbAEruuHrcfgsxtah+v%Wz@yW+FEU8@0k=od zW62jY+2j6od^TQpTdqDmLP(wQo%6hy=khEzS=9^7AFO=xeXF%VOiKCsKcBi9l0Ppw z*AV?c_67s@`-Gs!vMj&uYZh#Oe1~I3J6DOshnr~|9^Vm`7s)>3U>chwf8h1{r)95} zYLvx&-1O^#P%*#Jghn0}X2}x{Y#>&O0*G~MdO*C0e&g&nJE9Fu%UNvFjz=e4YvV3< q{TY5_k>Ktlcba*ij$gTQA7gc*V^Ovf2R|^(7(8A5T-G@yGywo%5suRU diff --git a/companion/src/images/library.png b/companion/src/images/library.png index 929403dfb40369f0d2fdc9dc5595ca0d5ed24990..a3d112626cb82e3b142f55d49fe3741ac25da383 100644 GIT binary patch delta 176 zcmbQnbc0c`Gr-TCmrII^fq{Y7)59eQNGpIa2OE$quB!SnQPHSgKv+t>>E3Topiru( zi(^Q{;kQ#x@*Ys&VcFa9FZ!N|0H;$;!;MPie*PR|#XNTTdqzrTO;0X=6x5hsq!3~E zMZt03r~BV-G)>{#@`|tIc-M@%4W~O!xnFow))(tsrFy46BzRX_jbPE!d#^>f6;D+% ZyeSrtU%Xat0nkDQPggcSmvv4FO#l$NLE!)Z delta 238 zcmcb?IE_iMGr-TCmrII^fq{Y7)59eQNPB=V2OE$KeY@FxqM}hfzksYv*@{{#pwMDZ z7srr_TW@b{ z7>5z~!2kdN=1D|BR9M69)~!whK@^7JCzUnGCe=l+z}9dpy#VSEg;avzK5CGNx(d>2 zNKm~63<7~7)Ic(s>}F|Zx7#%HCC5$jzL}qMhMb(7v|Qk_3vhuoetzo}<1WB)wI)&r zZcSugaHApvyd=Q?YKu`9yU_T3fB3IRD;Mz^=QScBc!(SHQlNd@;yZvWgYzt~!CM4= zjKuD7)|5b*NEJ9)Ak3^n?6`DxWEe28j%n@!E@?sC~HJtxC++H@eqMO znruW>Pc9ZI10Q52eB%9>rebIRf`fsN=1Z27b2`}p!Fj$a7VvSw000002uVdwM6N<$ Eg38E%a{vGU delta 359 zcmcb~)W@vY8Q|y6%O%Cdz`(%k>ERLtq&+~GgAGWAzTNCTQPHTLpI?i;dc%kH3=E9Y zo-U3d6}R5rI?LPSAkg-3J#$`I0GvmYk>IJq-@n`>gH?w)hl5Q!p3UO(h`O`cv`Ch7P-Trg#lI|tTmj`eCvbcDG zjzM0Y{p-vP4o?r5@K5~}^OG%EM8Ll za6-n+PQQEiA9*i(Ic4UFzj7L^t5PCL_80wS4YhJ@kK7rx?BxVw+d$qGdTmEzR^%5R1j2*&-Hw0YM+deve=^Xg`a| zViR9Ln+g_#!Elxd8x9U(y#d`H7G`Jv8U9_CnE?j}hj>J?zK)FcP5(wfTk{W8CD&L> zzyY{vy}(TJbTkB%B*#*#4uq1Ue`s4k1?VNj4<&wTyAqaxyPWNSMhwRTp1{#|DJ}q4 z;03G=P6+r0Zy|o)rhq(f5noe$HDF_KSHMW@z-BYb0w>vbW4Lu-Ys5Tkcf+&TgM^qC zum}3K1w_C^a~_!g^gxnJS%mk=Jm9&>)WIPQyaCF0NhZ55|KR`t002ov22Mn-LSTaQ CFnEUm delta 596 zcmV-a0;~Pk0{H|XiBL{Q4GJ0x0000DNk~Le0000;0000;2nGNE09Ea?N0A{ie-8{3 z1(|%JU;qFD21!IgRCwC$nm;JDQ5?rVBqb?H7BNWl4ob>hlw`5Vs#qi??`n`m7Dd@) zkt`O2q9pYWufbyQ4)350%3v{AM3U~coa_D^_qn+D=AP&Je(Eguo@-+6jK z2qA?%3tXBu+abSm`K+J`ck$`Ee}PV5%VfW{JOi6ROP0QtOuajxIqrgdIcHuX*PcVv zqkDDH zRsuM5H-I<`vS*`VemGHrlE5e;QqYvtL<^cPrwh~vR3D&^7rt=@DwXARY6eM=5JCtc igb+dqA%qa3XuJT3)b;UiN3p*E0000$- zT^vIq4ksr_ur5vz>1k4AP?3<3m~rxgy5BN8o&|>w94KgavAx5?!&ARfl*tN6|Cf}I z@Dp4)Z*F7bL)H-fP}vXjfh-Bet!IFe=Yg94T|C7IQpEQl;P{aP2R?B4>V`JR%vuN% z+m;wu&Yjk6wW?7=r)|Car2Sp4_a@xBX~^8I+6|OGmn67-Y3R&=#-m0hZ#-W&trYHm zn)pRaHa%gZ&D49YUy4*td$X;YcjMrJ0~f5KV*8o`4Y=GGRe|1^>XjnF+S3U15re0z KpUXO@geCwBS7e|7 delta 455 zcmV;&0XY7+0__7KiBL{Q4GJ0x0000DNk~Le0000;0000;2nGNE09Ea?N0A{ie-8{c zHCI+bD*ylidPzhcCre+!1*96mw!61miU|Jb=qt)&| zAQ%L@U@?frW?!|)3=2EU4Rr3dch1|qyYC0qw%_Bv+uq&{BuSDaNs=T-uanzA5zq!UGg#vo=oKMQ7Lf+y4#6Z}wNGmDk?Tv|(S)j^{0&W0zKsDgGb>JG9 zE7D1N2k4A>$0Oi*Or&~>ISYA`BLgkseaS*`#2a0T&+f$od9&rp_je^FHPOnP%eR zmvK7rFJmcOri{}Cb}5kxaFrrXgA%F$H)G=TfFnw59=IJ5=mfDC9})-Sv`q6o(&Lvn x=O+278sC*)m?GJd2_#999VAJTBuSE#flnfX8O4WV9L@j$002ovPDHLkV1hZP!Y}{; diff --git a/companion/src/images/moveup.png b/companion/src/images/moveup.png index 859a94579c8916b45932fba2102fc65a0f1eeec3..ba68dcaa5f060ff03997a51fba341e7189715c96 100644 GIT binary patch delta 266 zcmeyuyopJ%Gr-TCmrII^fq{Y7)59eQNGpIa2OE$quB!SnQPHSgK+sArmua&iP-wrW zi(^Q{;p7Af*2M`TJxz>kXGC6IPe@4karD4}50mflrKcn$2sB6io5CfhDEYzAz@R1# zD9L|x`-@CVYi8!d(rj#P^&Wgb&L22XFi&opF;Iog!6Zu_`Gs4V^A<<`5bsvrcJb7w z;s_n%#DoNngG&2)5^hbCKa|vIIjKfO?B~lXn_}d~=OGgDqfn@DI`AG`Rg4(QfEgBOepy7AssiQ8QlFaUw4 LtDnm{r-UW|l8j|{ delta 462 zcmdnQ^o3cmGr-TCmrII^fq{Y7)59eQNPB=V2OE$KeY@FxqM}hfKaZ)^nG6a06WEqaH&eg&^mpU!SrhDjmWvArBEUqBGk+H+M>4!?P<;@& zJS~Rl4uhmYJxkw|lsi+8O7@D}2%aXt*J;kh9}Krj`!D}h^|QO=7yEdQe}}OYbHe7l zLcceOb1eJpF0AsN(>$s0)5Ngk{>|C>D{@YKWLk4XYI!dI-JD||S#*wzrQbF@H~aB> zx!hy2t-RI3JMY+?6$-z_yg{OB&NSPY*vC`$%D&I#6}WeS$4A9_HW%9 z6ChOK|C#u5 y*FL!{V8L4``|bMbH%A_yR1rf2kl@4*waf*TS_UtcZgvJn5re0zpUXO@geCwhZ^f_x diff --git a/companion/src/images/new.png b/companion/src/images/new.png index 7ae931759453daf14deb77cd3687db3e3f106e0c..e9531c78a9f7f7676fbcfcd00fc66da4acdddb27 100644 GIT binary patch delta 210 zcmdnb^ovokGr-TCmrII^fq{Y7)59eQNGpIa2OE$quB!SnQPHSgKuB8e@okCOK%sU| z7srr@!*8b=ay1z6xYl=VcK`5i!SZ6USBtVeADM5R#2)K3+s5e@ljo!@E01mcDz?D; zj_20jeA`+=6B4~6SPxA5z`<~UCt-h5_Ui>2Lebx5zMj&MeJ4dpRA{|}qDZAn;WkF?hQA KxvXJ7WUuzpKO3l+AxEO|`0lOW zL^3{lI4}9nt|j~Ox06!x^d1q(7h9c{oN(wDRdQv^(st?M3$Y7wTX1ROCZ?&qQzTcU zEP3OwU&;5PI{U1zw;$(fT`&7A=%mo7bXWh^{=PTzhgl+%m~J+gy%W3(VsW-OOyAL6 zDxA`^%>MZt+vT$rynPfJb1qqKuhd_ymT|vD=i`HnCL#5V>_xvCUm813o8bU*oX8i( XQ+u9gyeMIQ1>$!RikY#W;0qn*js@5?<{ia$WKa0u<*;`@Bz{t z2?+@k7B?{qU10r?(8{30|J)d8$%3Y*wmdvM?>$eh_XX1Vk`fX}fLKd&%O8GbW@hb` zvpy}HwPNCjOD9WzN@+#>Yl%7SyW&Z8`^9M|H9!syU}l&WT%;3~u~P%+7Y0vPKbLh* G2~7aOCtxc8 delta 399 zcmdnQw2fJ@Gr-TCmrII^fq{Y7)59eQNPB=V2OE$KeY@FxqM}hfKaUV+=f(R#MU2j# zE{-7;x8B}R%wS5CY5N#1*nKobQs?BSOQ$xS+_kIq;H=W48agKy)$ZDtwej?UO$n0^ zM(j=6#FIGff1_jTW#;%D&)MY<$#&R$zgv4>lM!eM7%0r<_Oze$&$uTs@X-`iU*lt* z?uvKhC6^mC+Ql;0Pc8Z-w_H2&)bD%jjT|ZOFF2Pt&HGz;ZPL1vo9!=XoZIdfaqP34 z@N|dO6}2loei?NZZ0lPH!7``!WZ~Tm67zKRb6Mw<&;$Su%&l|) diff --git a/companion/src/images/paste.png b/companion/src/images/paste.png index 9268696f566c40bdc72a2dc0acf3c105ace50106..33948a23167db94fb508fe8d2a2799b660caaabb 100644 GIT binary patch delta 284 zcmV+%0ptGQ1H=L$iBL{Q4GJ0x0000DNk~Le0000W0000W2nGNE0CReJ^pPPle-INB z8IpZns{jB1(Md!>R9M69maz)LFc5~nN}Tj9-1{D`?k>(c`U+hfb?xMHi8#55i#RC6 z<%CdLTGFHuxgWwM*Gu|edVdp8C=w&{n6m{Y&iDcBh9X=7wx*T73!0YaOR+QH4Xl6z zuyJDcz#2HqdMEK8Lu6c+ZC;7VavS1;>_8PSU=A!C-&6eK7)5Af7x*Z(3{Aictz$dO zJH`&&#TKzt&{XAL{}i}MzequVkR*Hvxb4!Wq&_mtdc+1%L6?`o0ywt-0000DRf{Mel!Suqi>oCMEU*x*r&8t{zb@V1L8od9JQu#{G{>Ip6<2 zSnToLlErNLp0s*#3n{0sISiMBQezmaMU%HTEHe34_wRO;0aMX~Lc4yQtl6&*#F(3| z{mwUs`SBGNS@tv9>Ww?kF%`{SruIVj!BVxxoob9bUXK9l0UOv7w7tAX%^{OzmY{%TXWe071g6+ zQ|2tOV^LLIsqYv%N#u&cO3|R-Ig)#gY_c>m{zmJ(-psldVp!0GCJ~VXK8{~wBJ$5} zDt@r@>E%DG;zbtaKi+LMHT}Qk`pH|GE{T||o?-q^YVGgTe~DWM4fp@Oq- diff --git a/companion/src/images/preferences.png b/companion/src/images/preferences.png index 422ab8dc0059a342e9517fc9b722b9ae862cd761..d2ba00eaa817aeed212e97ecc478495f5be513c4 100644 GIT binary patch delta 392 zcmV;30eAl81+N1kiBL{Q4GJ0x0000DNk~Le0000W0000W2nGNE0CReJ^pPPle-INR z1F%_=A^-pZJV``BR9M69moZDjP!xqfZ0*)g-K65+*1gcJ(9uC~tG~ik+#7M}4{&jE z>7y+a2PX$7CkMfwAT6$iLc!GK1}=}5mztMEN)7~)lbf9L-o5v|1PT=Rhgk1;+yOP9 z2UK?zJMdum8)yQLz#KU8H3M;Ree3zl`4$GU^h?kP9eT`;um>}N4U;QybKJsn8;-0mm=1;Ok^SsFjXVI m60VWuf5Qm4kq?mqiSY~bVAL71%*Va}0000wHrFXgyWiXa82QgE_U9S*IlAP99TojXYp#6=1s zYAKWs1%=W&cXM))f^-mWsJMyfAcz#fp@`tn4n>e6+M#c02=ALemt2}R@AE*GB$r%1 z2fy&M~;FAUCmw^i!s13Za;2Z+ie4T^J%!Xs=&H6k^mz6~a&Z_S} z^YL_mE-;egdbb@oU7*z@pboHS_J7VesonzqT5xuN^S)NMHlQd@^dXawf35((EjS0j zxXI(GBJ!0UuIqR7zAi*(n=^`N4Y ze^#XL{hp}L5-9DLF%2oLfiC?)`n46Qtz1Zz;G7ju-s(J#^py%1fBmZl%8O$|8l<7= z73XAoOoLMt$F*1|9N`E@IKmN*aD*cq;rN-BaMJTYIOQV+g_9R47@QXHFeg$_Z_ahg zVpbATaKq|3_7y)HQjl{_{9k1*q#$vwlD>8fa4$q0fMo~Jj=>8)?;|K5fd$~QSWeRc n<~ja{tD-21q9}?|7tERLtq!mDzgAGU)S5v)M0vEbrLV7x$k3BG;0P zqlZK#s(3$_4Lc7R_*Zrb9+;weko)n)&7B+AwyCYKSvN81?TNA-39LI;sY%Fw Sn>!2WHU>{uKbLh*2~7ZgFI8m# delta 268 zcmZo-+QOvR8Q|y6%O%Cdz`(%k>ERLtq&+~GgAGWAzTNCTQPHTLpGQD+{j-P1fkFp8 zT^vIyZoR$k$k%MZ!+LSaqf>9co^2~-*3EqUq<4zyM4KPC13;!RFdPWEa_+nPH!HcS z7KNs&O{#M%7dE@}C^T^}Rjs=lu`o1Ubq;(0Y$z-ij%Ax9