From 97dda47e5b5c81789f52b617e7bbf43b21f4853e Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Sat, 30 Nov 2013 21:23:55 +0100 Subject: [PATCH 001/241] 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 002/241] 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 003/241] 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 004/241] 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 a6863e3d1ccb971442b1a8e19c68de5128132182 Mon Sep 17 00:00:00 2001 From: mhotar Date: Thu, 12 Dec 2013 11:41:22 +0100 Subject: [PATCH 005/241] 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 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 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 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 006/241] 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 007/241] 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 008/241] 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 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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 2cb5586fd6f757de525f01ee340a33b3bd7aa37f Mon Sep 17 00:00:00 2001 From: mhotar Date: Sun, 15 Dec 2013 18:26:02 +0100 Subject: [PATCH 009/241] 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 010/241] 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 011/241] 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 012/241] 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 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 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 d840c8acd4f32078c23e380b7fa11cfff1bc1b10 Mon Sep 17 00:00:00 2001 From: mhotar Date: Thu, 19 Dec 2013 20:26:56 +0100 Subject: [PATCH 013/241] 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 zcmV+o4)XDdP)|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#{E@&~+W-Iq08mU+MF0Q*|Ns920s;dA0|W#F1qB5L1_lQQ2M7oV z2?+@b3JMDg3k(bl4Gj$r4h|0w4-gO#5fKp*5)u;=6BHB_6%`d078Vy57Z?~A85tQG z8X6lL8yp-Q9UUDW9v&YbA0QwgAt50mA|fLrBP1jwB_$;$CMG8*CnzW=DJdx`Dk>{0 zD=aK5EiElBE-o)GFEB7LF)=YRGBPtWGc+_bH8nLhHa0gmH#j&rIXO8xIyyT$J3Kr* zJv}`>K0ZG`KR`f0K|w)6LPA4BLqtSGMMXtMMn*?RM@UFWNl8gcN=i#hOH52mO-)Ts zPEJoxPf$=$QBhG+Qc_b>Q&dz`RaI41R#sP6S6EnBSy@?HT3TCMTU=aRU0q#XUS3~c zUtnNhVPRonVq#-sV`OAxWo2b%W@cw+XJ}|>X=!O{YHDk1Yiw+6ZEbCCZf7mzbECnVFfInwp!No1C1Sot>SYo}QndpP-Ll?si~=|s;aB2tE{Z7t*x!DuCA}IuduMNv9YnTva++Yv$V9dwY9aj zwzjvox45{txw*Nzy1Ki&yS%)-y}iA@zP`V|zreu2!NI}8!otJD!^FhI#l^+O#>U6T z$H>UY$;rve%F4^j%goHo&CSiu&d$%z&(P4&(b3V;($dq@)6~?|)z#J3*4Ee8*Vx$D z+1c6J+S=RO+uYpT-QC^Z-rnEe-{9cj;o;%p;^O1ulq(=H}<;=jiC@>FMd} z>gwz3>+J08?d|RE?(XmJ@9^;O@$vEU^78ZZ^Yrxe_4W1k_V)Mp_xSku`T6L;#2d9Y_EG010qNS#tmY3ljhU3ljkVnw%H_ z000McNliru-3S{LHW$SFArJrn08U9nK~xyim5~by03ZlM=lw68gs~YKIjDiX{1nUu za2GcfDkART0vS-!S0Z!%hY+&Ld44)MbyAlpG6L(;b;dr~0OTo0ky7dN qIW7PHhlHQ=SHnXuo(B}4muFxoQ7|jeD18NT9D}E;pUXO@geCyu8bU$< 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 014/241] 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 015/241] 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 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 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 zcmeAS@N?(olHy`uVBq!ia0vp^l0eMC$P6US)*h1sQfvV}A+A9B|Ns9>Z_d99WHBar zySp%Su*!M>Ih+L^k;M!Q+`=Ht$S`Y;1W=H@#M9T6{Vop+r<9h@!t1R-Ap=hr#}JO| z$rZov?QeW|Z+jnG+q@@_d3laj-;tJ(5V|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#{E@&~+W-Iq08mU+MF0Q*|Ns920s;dA0|W#F1qB5L1_lQQ2M7oV z2?+@b3JMDg3k(bl4Gj$r4h|0w4-gO#5fKp*5)u;=6BHB_6%`d078Vy57Z?~A85tQG z8X6lL8yp-Q9UUDW9v&YbA0QwgAt50mA|fLrBP1jwB_$;$CMG8*CnzW=DJdx`Dk>{0 zD=aK5EiElBE-o)GFEB7LF)=YRGBPtWGc+_bH8nLhHa0gmH#j&rIXO8xIyyT$J3Kr* zJv}`>K0ZG`KR`f0K|w)6LPA4BLqtSGMMXtMMn*?RM@UFWNl8gcN=i#hOH52mO-)Ts zPEJoxPf$=$QBhG+Qc_b>Q&dz`RaI41R#sP6S6EnBSy@?HT3TCMTU=aRU0q#XUS3~c zUtnNhVPRonVq#-sV`OAxWo2b%W@cw+XJ}|>X=!O{YHDk1Yiw+6ZEbCCZf7mzbECnVFfInwp!No1C1Sot>SYo}QndpP-Ll?si~=|s;aB2tE{Z7t*x!DuCA}IuduMNv9YnTva++Yv$V9dwY9aj zwzjvox45{txw*Nzy1Ki&yS%)-y}iA@zP`V|zreu2!NI}8!otJD!^FhI#l^+O#>U6T z$H>UY$;rve%F4^j%goHo&CSiu&d$%z&(P4&(b3V;($dq@)6~?|)z#J3*4Ee8*Vx$D z+1c6J+S=RO+uYpT-QC^Z-rnEe-{9cj;o;%p;^O1ulq(=H}<;=jiC@>FMd} z>gwz3>+J08?d|RE?(XmJ@9^;O@$vEU^78ZZ^Yrxe_4W1k_V)Mp_xSku`T6L;#2d9Y_EG010qNS#tmY3ljhU3ljkVnw%H_ z000McNliru-3$Z?5e$7;i?aX#0Axu-K~xyig^&Rbz#s?%%l|*U4JZ^enTeKQJwVvI z0E3@4)G{^(kZdb}Wh8;*P~VGaG@crue1R+}3MsALyeRGd+!5#;r002ovPDHLkV1g#a+EV}k 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 016/241] 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 97ff1828d1da403712c66b96b0e64cd9e14fd3b4 Mon Sep 17 00:00:00 2001 From: mhotar Date: Sun, 22 Dec 2013 00:36:40 +0100 Subject: [PATCH 017/241] 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 018/241] 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 a2e9c6cdcadebd5f32c373f44f7acfea9cfa6eaf Mon Sep 17 00:00:00 2001 From: mhotar Date: Mon, 23 Dec 2013 02:41:21 +0100 Subject: [PATCH 019/241] 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 682517b0ed7dd6960a183430351b7c3ff77b0be0 Mon Sep 17 00:00:00 2001 From: mhotar Date: Wed, 25 Dec 2013 23:41:27 +0100 Subject: [PATCH 020/241] 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 021/241] 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 bbae0f7533df9565d6ede2a7f4637eafc75abe17 Mon Sep 17 00:00:00 2001 From: mhotar Date: Fri, 27 Dec 2013 01:44:58 +0100 Subject: [PATCH 022/241] 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 1c8b865d89b6cc5fd80e27af6e6b6a69c25da263 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Tue, 31 Dec 2013 13:02:53 +0100 Subject: [PATCH 023/241] [Taranis] Support for the 6POS Pots --- radio/src/eeprom_conversions.cpp | 20 +++++++++-- radio/src/gtests.cpp | 4 +-- radio/src/gui/menu_model.cpp | 6 ++-- radio/src/gui/menus.cpp | 10 +++--- radio/src/lcd.cpp | 2 +- radio/src/myeeprom.h | 13 +++++-- radio/src/opentx.cpp | 61 +++++++++++++++++++++----------- radio/src/opentx.h | 6 ++-- radio/src/translations/cz.h.txt | 3 +- radio/src/translations/de.h.txt | 3 +- radio/src/translations/en.h | 3 +- radio/src/translations/es.h.txt | 3 +- radio/src/translations/fr.h.txt | 3 +- radio/src/translations/it.h.txt | 3 +- radio/src/translations/pl.h.txt | 3 +- radio/src/translations/pt.h.txt | 3 +- radio/src/translations/se.h.txt | 3 +- 17 files changed, 101 insertions(+), 48 deletions(-) diff --git a/radio/src/eeprom_conversions.cpp b/radio/src/eeprom_conversions.cpp index 6edb00974..9bff69abf 100644 --- a/radio/src/eeprom_conversions.cpp +++ b/radio/src/eeprom_conversions.cpp @@ -177,6 +177,21 @@ void ConvertGeneralSettings_215_to_216(EEGeneral &settings) settings.version = 216; } +#if defined(PCBTARANIS) +int ConvertSwitch_215_to_216(int swtch) +{ + if (swtch < SWSRC_ON) + return swtch; + else + return swtch + (2*6); // 2 * 6-pos pots added as switches +} +#else +inline int ConvertSwitch_215_to_216(int swtch) +{ + return swtch; +} +#endif + void ConvertModel_215_to_216(ModelData &model) { // Virtual inputs added instead of Expo/DR @@ -188,6 +203,7 @@ void ConvertModel_215_to_216(ModelData &model) // Custom Switches: better precision for x when A comes from telemetry // Main View: altitude in top bar // Mixes: GVARS in weight moved from 512 to 4096 and -512 to -4096, because GVARS may be used in limits [-1250:1250] + // Switches: two 6-pos pots added TRACE("Model conversion from v215 to v216"); @@ -221,7 +237,7 @@ void ConvertModel_215_to_216(ModelData &model) g_model.mixData[i].phases = oldModel.mixData[i].phases; g_model.mixData[i].mltpx = oldModel.mixData[i].mltpx; g_model.mixData[i].weight = oldModel.mixData[i].weight; - g_model.mixData[i].swtch = oldModel.mixData[i].swtch; + g_model.mixData[i].swtch = ConvertSwitch_215_to_216(oldModel.mixData[i].swtch); if (oldModel.mixData[i].curveMode==0/*differential*/) { g_model.mixData[i].curve.type = CURVE_REF_DIFF; g_model.mixData[i].curve.value = oldModel.mixData[i].curveParam; @@ -281,7 +297,7 @@ void ConvertModel_215_to_216(ModelData &model) } g_model.expoData[i].srcRaw = MIXSRC_Rud+chn; g_model.expoData[i].chn = chn; - g_model.expoData[i].swtch = oldModel.expoData[i].swtch; + g_model.expoData[i].swtch = ConvertSwitch_215_to_216(oldModel.expoData[i].swtch); g_model.expoData[i].phases = oldModel.expoData[i].phases; g_model.expoData[i].weight = oldModel.expoData[i].weight; memcpy(&g_model.expoData[i].name, &oldModel.expoData[i].name, LEN_EXPOMIX_NAME); diff --git a/radio/src/gtests.cpp b/radio/src/gtests.cpp index 2b8d8f2e8..fe6cb1a0a 100644 --- a/radio/src/gtests.cpp +++ b/radio/src/gtests.cpp @@ -295,8 +295,8 @@ TEST(FrSkySPORT, checkCrc) TEST(getSwitch, undefCSW) { MODEL_RESET(); - EXPECT_EQ(getSwitch(MAX_PSWITCH), false); - EXPECT_EQ(getSwitch(-MAX_PSWITCH), true); // no good answer there! + EXPECT_EQ(getSwitch(NUM_PSWITCH), false); + EXPECT_EQ(getSwitch(-NUM_PSWITCH), true); // no good answer there! } #endif diff --git a/radio/src/gui/menu_model.cpp b/radio/src/gui/menu_model.cpp index d1f9889fb..c2f472a47 100644 --- a/radio/src/gui/menu_model.cpp +++ b/radio/src/gui/menu_model.cpp @@ -1055,7 +1055,7 @@ void menuModelSetup(uint8_t event) 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)); + CHECK_INCDEC_MODELVAR(event, timer->mode, -2*(NUM_PSWITCH+NUM_CSW), TMR_VAROFS-1+2*(NUM_PSWITCH+NUM_CSW)); break; case 1: CHECK_INCDEC_MODELVAR_ZERO(event, qr.quot, 59); @@ -1835,7 +1835,7 @@ void menuModelFlightModesAll(uint8_t event) } 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); + if (active) CHECK_INCDEC_MODELSWITCH(event, p->swtch, -NUM_SWITCH, NUM_SWITCH); } break; @@ -4290,7 +4290,7 @@ void menuModelCustomSwitchOne(uint8_t event) 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); + if (attr) CHECK_INCDEC_MODELVAR(event, cs->andsw, -NUM_SWITCH, NUM_SWITCH); break; case CSW_FIELD_DURATION: lcd_putsLeft(y, STR_DURATION); diff --git a/radio/src/gui/menus.cpp b/radio/src/gui/menus.cpp index 5580a998d..69af3f0fa 100644 --- a/radio/src/gui/menus.cpp +++ b/radio/src/gui/menus.cpp @@ -232,13 +232,13 @@ int16_t checkIncDec(uint8_t event, int16_t val, int16_t i_min, int16_t i_max, ui if (event == EVT_KEY_LONG(KEY_ENTER) && i_max > SWSRC_ON) { s_editMode = !s_editMode; if (newval > SWSRC_ON) - newval -= (MAX_SWITCH+1); + newval -= (NUM_SWITCH+1); else if (newval > 0) - newval += (MAX_SWITCH+1); + newval += (NUM_SWITCH+1); else if (newval < SWSRC_OFF) - newval += (MAX_SWITCH+1); + newval += (NUM_SWITCH+1); else if (newval < 0) - newval -= (MAX_SWITCH+1); + newval -= (NUM_SWITCH+1); } } #endif @@ -976,7 +976,7 @@ int8_t switchMenuItem(uint8_t x, uint8_t y, int8_t value, LcdFlags attr, uint8_t { lcd_putsColumnLeft(x, y, STR_SWITCH); putsSwitches(x, y, value, attr); - if (attr) CHECK_INCDEC_MODELSWITCH(event, value, -MAX_SWITCH, MAX_SWITCH); + if (attr) CHECK_INCDEC_MODELSWITCH(event, value, -NUM_SWITCH, NUM_SWITCH); return value; } diff --git a/radio/src/lcd.cpp b/radio/src/lcd.cpp index b8702878d..c02ffd5a0 100644 --- a/radio/src/lcd.cpp +++ b/radio/src/lcd.cpp @@ -1097,7 +1097,7 @@ void putsTmrMode(xcoord_t x, uint8_t y, int8_t mode, LcdFlags att) return; } - if (mode >= TMR_VAROFS+MAX_PSWITCH+NUM_CSW) { + if (mode >= TMR_VAROFS+NUM_PSWITCH+NUM_CSW) { mode++; } diff --git a/radio/src/myeeprom.h b/radio/src/myeeprom.h index 3c49e6f59..5343ef424 100644 --- a/radio/src/myeeprom.h +++ b/radio/src/myeeprom.h @@ -639,7 +639,7 @@ PACK( union u_int8int16_t { #if defined(CPUARM) #define MAX_CSW_DURATION 120 /*60s*/ #define MAX_CSW_DELAY 120 /*60s*/ -#define MAX_CSW_ANDSW MAX_SWITCH +#define MAX_CSW_ANDSW NUM_SWITCH typedef int16_t csw_telemetry_value_t; PACK(typedef struct t_CustomSwData { // Custom Switches data int16_t v1; @@ -1140,6 +1140,8 @@ enum SwitchSources { #endif SWSRC_FIRST_CSW, + SWSRC_LAST_SWITCH = SWSRC_FIRST_CSW-1, + SWSRC_SW1 = SWSRC_FIRST_CSW, SWSRC_SW2, SWSRC_SW3, @@ -1154,10 +1156,17 @@ enum SwitchSources { SWSRC_SWC, SWSRC_LAST_CSW = SWSRC_SW1+NUM_CSW-1, +#if defined(PCBTARANIS) + SWSRC_P11, + SWSRC_P16 = SWSRC_P11+5, + SWSRC_P21, + SWSRC_P26 = SWSRC_P21+5, +#endif + SWSRC_ON, SWSRC_FIRST_MOMENT_SWITCH, - SWSRC_LAST_MOMENT_SWITCH = SWSRC_FIRST_MOMENT_SWITCH+SWSRC_ON-1, + SWSRC_LAST_MOMENT_SWITCH = SWSRC_FIRST_MOMENT_SWITCH+SWSRC_LAST_CSW, #if !defined(PCBSTD) SWSRC_TRAINER_SHORT, diff --git a/radio/src/opentx.cpp b/radio/src/opentx.cpp index af664925e..d3c6f5e2d 100644 --- a/radio/src/opentx.cpp +++ b/radio/src/opentx.cpp @@ -1301,6 +1301,8 @@ uint8_t cswStates[NUM_CSW]; #if defined(PCBTARANIS) tmr10ms_t switchesMidposStart[6] = { 0 }; uint32_t switchesPos = 0; +tmr10ms_t potsLastposStart[2]; +uint8_t potsPos[2]; #define DELAY_SWITCH_3POS 10/*100ms*/ #define CHECK_2POS(sw) newPos |= (switchState(sw ## 0) ? (1 << (sw ## 0 - SW_SA0)) : (1 << (sw ## 0 - SW_SA0 + 1))) #define CHECK_3POS(idx, sw) if (switchState(sw ## 0)) { \ @@ -1321,8 +1323,7 @@ uint32_t switchesPos = 0; } \ newPos |= (switchesPos & (0x7 << (sw ## 0 - SW_SA0))); \ } -#define SWITCH_POSITION(sw) (switchesPos & (1<<(sw))) -void get3POSSwitchesPosition() +void getSwitchesPosition() { uint32_t newPos = 0; CHECK_3POS(0, SW_SA); @@ -1334,9 +1335,26 @@ void get3POSSwitchesPosition() CHECK_3POS(5, SW_SG); CHECK_2POS(SW_SH); switchesPos = newPos; + + for (int i=0; i<2; i++) { + int val = RESX + (int16_t)anaIn(POT1+i) + (RESX / 5); + uint8_t pos = limit(0, val / (2*RESX/5), 5); + uint8_t previousPos = potsPos[i] >> 4; + if (pos != previousPos) { + potsLastposStart[i] = get_tmr10ms(); + potsPos[i] = (pos << 4) | (potsPos[i] & 0x0f); + } + else if ((tmr10ms_t)(get_tmr10ms() - potsLastposStart[i]) > DELAY_SWITCH_3POS) { + potsLastposStart[i] = 0; + potsPos[i] = (pos << 4) | (pos); + } + } } +#define SWITCH_POSITION(sw) (switchesPos & (1<<(sw))) +#define POT_POSITION(sw) ((potsPos[(sw)/6] & 0x0f) == ((sw) % 6)) #else -#define get3POSSwitchesPosition() +#define getSwitchesPosition() +#define SWITCH_POSITION(idx) switchState((EnumKeys)(SW_BASE+(idx))) #endif int16_t csLastValue[NUM_CSW]; @@ -1353,15 +1371,16 @@ bool getSwitch(int8_t swtch) if (cs_idx == SWSRC_ON) { result = true; } - else if (cs_idx <= MAX_PSWITCH) { -#if defined(PCBTARANIS) - result = SWITCH_POSITION(cs_idx-SWSRC_SA0); -#else - result = switchState((EnumKeys)(SW_BASE+cs_idx-1)); -#endif + else if (cs_idx <= SWSRC_LAST_SWITCH) { + result = SWITCH_POSITION(cs_idx-SWSRC_FIRST_SWITCH); } +#if defined(PCBTARANIS) + else if (cs_idx >= SWSRC_P11 && cs_idx <= SWSRC_P26) { + result = POT_POSITION(cs_idx-SWSRC_P11); + } +#endif else { - cs_idx -= MAX_PSWITCH+1; + cs_idx -= SWSRC_FIRST_CSW; GETSWITCH_RECURSIVE_TYPE mask = ((GETSWITCH_RECURSIVE_TYPE)1 << cs_idx); if (s_last_switch_used & mask) { @@ -1550,7 +1569,7 @@ int8_t getMovedSwitch() } } #else - for (uint8_t i=MAX_PSWITCH; i>0; i--) { + for (uint8_t i=NUM_PSWITCH; i>0; i--) { bool prev; swstate_t mask = 0; if (i <= 3) { @@ -1562,7 +1581,7 @@ int8_t getMovedSwitch() } bool next = getSwitch(i); if (prev != next) { - if (i!=MAX_PSWITCH || next==true) + if (i!=NUM_PSWITCH || next==true) result = next ? i : -i; if (mask) switches_states ^= mask; @@ -2203,7 +2222,7 @@ void checkSwitches() } #else uint8_t x = 2; - for (uint8_t i=1; i2?(i+1):1+((states>>1)&0x3)), attr); if (i == 1 && attr) i++; @@ -3053,13 +3072,13 @@ void evalFunctions() #endif - if (swtch > MAX_SWITCH+1) { + if (swtch > NUM_SWITCH+1) { momentary = 1; - swtch -= MAX_SWITCH+1; + swtch -= NUM_SWITCH+1; } - if (swtch < -MAX_SWITCH-1) { + if (swtch < -NUM_SWITCH-1) { momentary = 1; - swtch += MAX_SWITCH+1; + swtch += NUM_SWITCH+1; } bool active = getSwitch(swtch); @@ -3684,7 +3703,7 @@ void doMixerCalculations() // therefore forget the exact calculation and use only 1 instead; good compromise lastTMR = tmr10ms; - get3POSSwitchesPosition(); + getSwitchesPosition(); getADC(); @@ -3871,9 +3890,9 @@ void doMixerCalculations() timerState->sum+=val; } - if (atm>=(TMR_VAROFS+MAX_SWITCH)){ // toggeled switch + if (atm>=(TMR_VAROFS+NUM_SWITCH)){ // toggeled switch if(!(timerState->toggled | timerState->sum | timerState->cnt | timerState->lastPos)) { timerState->lastPos = tm < 0; timerState->sum = 1; } // if initializing then init the lastPos - uint8_t swPos = getSwitch(tm>0 ? tm-(TMR_VAROFS+MAX_SWITCH-1) : tm+MAX_SWITCH); + uint8_t swPos = getSwitch(tm>0 ? tm-(TMR_VAROFS+NUM_SWITCH-1) : tm+NUM_SWITCH); if (swPos && !timerState->lastPos) timerState->toggled = !timerState->toggled; // if switch is flipped first time -> change counter state timerState->lastPos = swPos; } @@ -3910,7 +3929,7 @@ void doMixerCalculations() newTimerVal++; } else { - if (atm<(TMR_VAROFS+MAX_SWITCH)) + if (atm<(TMR_VAROFS+NUM_SWITCH)) timerState->toggled = tm>0 ? getSwitch(tm-(TMR_VAROFS-1)) : !getSwitch(-tm); // normal switch if (timerState->toggled) newTimerVal++; diff --git a/radio/src/opentx.h b/radio/src/opentx.h index 1ce0294b7..b432a53c0 100644 --- a/radio/src/opentx.h +++ b/radio/src/opentx.h @@ -376,8 +376,8 @@ enum EnumKeys { #if defined(PCBTARANIS) #define NUM_SWITCHES 8 #define IS_3POS(sw) ((sw) != 5 && (sw) != 7) - #define MAX_PSWITCH (SW_SH2-SW_SA0+1) #define NUM_POTS 4 + #define NUM_POTSSW (2*6) #define NUM_SW_SRCRAW 8 #define SWSRC_THR SWSRC_SF2 #define SWSRC_GEA SWSRC_SG2 @@ -389,13 +389,13 @@ enum EnumKeys { #define NUM_SWITCHES 7 #define IS_3POS(sw) ((sw) == 0) #define IS_MOMENTARY(sw) (sw == SWSRC_TRN) - #define MAX_PSWITCH (SW_TRN-SW_ID0+1) // 9 physical switches #define NUM_POTS 3 #define NUM_SW_SRCRAW 1 #define SW_DSM2_BIND SW_TRN #endif -#define MAX_SWITCH (MAX_PSWITCH+NUM_CSW) +#define NUM_PSWITCH (SWSRC_LAST_SWITCH-SWSRC_FIRST_SWITCH+1) +#define NUM_SWITCH (NUM_PSWITCH+NUM_CSW+NUM_POTSSW) #if defined(PCBTARANIS) #define KEY_RIGHT KEY_PLUS diff --git a/radio/src/translations/cz.h.txt b/radio/src/translations/cz.h.txt index 145783ff3..379444d0e 100644 --- a/radio/src/translations/cz.h.txt +++ b/radio/src/translations/cz.h.txt @@ -322,7 +322,8 @@ #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 " + #define TR_6POS_POTS "P11""P12""P13""P14""P15""P16""P21""P22""P23""P24""P25""P26" + #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 TR_6POS_POTS "*1 " #else #define TR_VSWITCHES TR_9X_3POS_SWITCHES "THR""RUD""ELE""AIL""GEA""TRN" TR_CUSTOMSW "*1 " #endif diff --git a/radio/src/translations/de.h.txt b/radio/src/translations/de.h.txt index 8023eaf06..88490ce12 100644 --- a/radio/src/translations/de.h.txt +++ b/radio/src/translations/de.h.txt @@ -322,7 +322,8 @@ #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" + #define TR_6POS_POTS "P11""P12""P13""P14""P15""P16""P21""P22""P23""P24""P25""P26" + #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 TR_6POS_POTS "ONE" #else #define TR_VSWITCHES TR_9X_3POS_SWITCHES "THR""RUD""ELE""AIL""GEA""TRN" TR_CUSTOMSW "ONE" #endif diff --git a/radio/src/translations/en.h b/radio/src/translations/en.h index 62876daf9..80f25935a 100644 --- a/radio/src/translations/en.h +++ b/radio/src/translations/en.h @@ -322,7 +322,8 @@ #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" + #define TR_6POS_POTS "P11""P12""P13""P14""P15""P16""P21""P22""P23""P24""P25""P26" + #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 TR_6POS_POTS "One" #else #define TR_VSWITCHES TR_9X_3POS_SWITCHES "THR""RUD""ELE""AIL""GEA""TRN" TR_CUSTOMSW "One" #endif diff --git a/radio/src/translations/es.h.txt b/radio/src/translations/es.h.txt index 11f626168..b689918f6 100644 --- a/radio/src/translations/es.h.txt +++ b/radio/src/translations/es.h.txt @@ -322,7 +322,8 @@ #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 "Uno" + #define TR_6POS_POTS "P11""P12""P13""P14""P15""P16""P21""P22""P23""P24""P25""P26" + #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 TR_6POS_POTS "Uno" #else #define TR_VSWITCHES TR_9X_3POS_SWITCHES "ACE""DIR""ELE""ALE""GEA""TRN" TR_CUSTOMSW "Uno" #endif diff --git a/radio/src/translations/fr.h.txt b/radio/src/translations/fr.h.txt index 652776e6e..470b08b91 100644 --- a/radio/src/translations/fr.h.txt +++ b/radio/src/translations/fr.h.txt @@ -322,7 +322,8 @@ #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" + #define TR_6POS_POTS "P11""P12""P13""P14""P15""P16""P21""P22""P23""P24""P25""P26" + #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 TR_6POS_POTS "1*\0" #else #define TR_VSWITCHES TR_9X_3POS_SWITCHES "THR""RUD""ELE""AIL""GEA""TRN" TR_CUSTOMSW "1*\0" #endif diff --git a/radio/src/translations/it.h.txt b/radio/src/translations/it.h.txt index 3a2c62fca..20033e41c 100644 --- a/radio/src/translations/it.h.txt +++ b/radio/src/translations/it.h.txt @@ -322,7 +322,8 @@ #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" + #define TR_6POS_POTS "P11""P12""P13""P14""P15""P16""P21""P22""P23""P24""P25""P26" + #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 TR_6POS_POTS "1*\0" #else #define TR_VSWITCHES TR_9X_3POS_SWITCHES "THR""RUD""ELE""AIL""GEA""TRN" TR_CUSTOMSW "One" #endif diff --git a/radio/src/translations/pl.h.txt b/radio/src/translations/pl.h.txt index 5525754ed..9cb38c672 100644 --- a/radio/src/translations/pl.h.txt +++ b/radio/src/translations/pl.h.txt @@ -323,7 +323,8 @@ #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 " * " + #define TR_6POS_POTS "P11""P12""P13""P14""P15""P16""P21""P22""P23""P24""P25""P26" + #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 TR_6POS_POTS " * " #else #define TR_VSWITCHES TR_9X_3POS_SWITCHES "GAZ""SK ""LOT""SW ""GEA""TRN" TR_CUSTOMSW " * " #endif diff --git a/radio/src/translations/pt.h.txt b/radio/src/translations/pt.h.txt index 691c840af..7361bb86f 100644 --- a/radio/src/translations/pt.h.txt +++ b/radio/src/translations/pt.h.txt @@ -322,7 +322,8 @@ #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" + #define TR_6POS_POTS "P11""P12""P13""P14""P15""P16""P21""P22""P23""P24""P25""P26" + #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 TR_6POS_POTS "1*\0" #else #define TR_VSWITCHES TR_9X_3POS_SWITCHES "THR""RUD""ELE""AIL""GEA""TRN" TR_CUSTOMSW "1*\0" #endif diff --git a/radio/src/translations/se.h.txt b/radio/src/translations/se.h.txt index 68de29549..71e5ede3f 100644 --- a/radio/src/translations/se.h.txt +++ b/radio/src/translations/se.h.txt @@ -322,7 +322,8 @@ #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" + #define TR_6POS_POTS "P11""P12""P13""P14""P15""P16""P21""P22""P23""P24""P25""P26" + #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 TR_6POS_POTS "One" #else #define TR_VSWITCHES TR_9X_3POS_SWITCHES "THR""RUD""ELE""AIL""GEA""TRN" TR_CUSTOMSW "One" #endif From ef28d7e2333e4b26febcf1c0e3497c765de357eb Mon Sep 17 00:00:00 2001 From: mhotar Date: Wed, 1 Jan 2014 20:51:02 +0100 Subject: [PATCH 024/241] 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 33eeb4cc64d9138825e209dd6f57717dc1ba7276 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Thu, 2 Jan 2014 12:38:18 +0100 Subject: [PATCH 025/241] [all] Compilation was broken except for Taranis :( --- radio/src/opentx.h | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/radio/src/opentx.h b/radio/src/opentx.h index b432a53c0..501ea65a8 100644 --- a/radio/src/opentx.h +++ b/radio/src/opentx.h @@ -390,6 +390,7 @@ enum EnumKeys { #define IS_3POS(sw) ((sw) == 0) #define IS_MOMENTARY(sw) (sw == SWSRC_TRN) #define NUM_POTS 3 + #define NUM_POTSSW 0 #define NUM_SW_SRCRAW 1 #define SW_DSM2_BIND SW_TRN #endif @@ -398,14 +399,14 @@ enum EnumKeys { #define NUM_SWITCH (NUM_PSWITCH+NUM_CSW+NUM_POTSSW) #if defined(PCBTARANIS) -#define KEY_RIGHT KEY_PLUS -#define KEY_LEFT KEY_MINUS -#define KEY_UP KEY_PLUS -#define KEY_DOWN KEY_MINUS + #define KEY_RIGHT KEY_PLUS + #define KEY_LEFT KEY_MINUS + #define KEY_UP KEY_PLUS + #define KEY_DOWN KEY_MINUS #else -#define KEY_ENTER KEY_MENU -#define KEY_PLUS KEY_RIGHT -#define KEY_MINUS KEY_LEFT + #define KEY_ENTER KEY_MENU + #define KEY_PLUS KEY_RIGHT + #define KEY_MINUS KEY_LEFT #endif #include "myeeprom.h" From 655169aa7a2aa4e85a5496588c2d5bba37944cbd Mon Sep 17 00:00:00 2001 From: mhotar Date: Fri, 3 Jan 2014 00:04:59 +0100 Subject: [PATCH 026/241] 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: Sat, 4 Jan 2014 23:20:54 +0100 Subject: [PATCH 027/241] 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 32c16f9f285f28032b3185baf7ea84b0f75f7066 Mon Sep 17 00:00:00 2001 From: mhotar Date: Sun, 5 Jan 2014 10:56:17 +0100 Subject: [PATCH 028/241] 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 499092b479bb760a5c5523fe1b697241534ced82 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Sun, 22 Dec 2013 18:17:24 +0100 Subject: [PATCH 029/241] 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 030/241] [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 031/241] [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 032/241] 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 033/241] 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 034/241] 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 035/241] 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 036/241] 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 037/241] 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 8d1d4567219feb6ed1467537710797a6dd4415e7 Mon Sep 17 00:00:00 2001 From: mhotar Date: Sun, 5 Jan 2014 22:39:46 +0100 Subject: [PATCH 038/241] 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 039/241] 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 e4b3b3af850ea87509926d7f0cd4eb229315c68c Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Mon, 6 Jan 2014 11:52:05 +0100 Subject: [PATCH 040/241] [Taranis] Automatic detection of the 6pos switch within the calibration process --- radio/src/gui/menu_general.cpp | 61 +++++++++++++++++++++++++----- radio/src/gui/menus.cpp | 9 ++++- radio/src/myeeprom.h | 27 +++++++++++-- radio/src/opentx.cpp | 69 +++++++++++++++++++++++----------- radio/src/opentx.h | 9 ++++- 5 files changed, 137 insertions(+), 38 deletions(-) diff --git a/radio/src/gui/menu_general.cpp b/radio/src/gui/menu_general.cpp index e6b7956ca..78d56bc2c 100644 --- a/radio/src/gui/menu_general.cpp +++ b/radio/src/gui/menu_general.cpp @@ -1241,16 +1241,37 @@ void menuGeneralHardware(uint8_t event) void menuCommonCalib(uint8_t event) { - for (uint8_t i=0; i= NUM_STICKS && i < NUM_STICKS+NUM_POTS-2) { -#else - if (i >= NUM_STICKS) { -#endif + if (i >= POT1 && i <= POT_LAST) { reusableBuffer.calib.midVals[i] = (reusableBuffer.calib.hiVals[i] + reusableBuffer.calib.loVals[i]) / 2; +#if defined(PCBTARANIS) + uint8_t idx = i - POT1; + int count = reusableBuffer.calib.xpotsPositionsCount[idx]; + if (count <= 6) { + bool found = false; + for (int j=0; j reusableBuffer.calib.xpotsPositions[idx][j][0]-20 && vt < reusableBuffer.calib.xpotsPositions[idx][j][0]+20) { + reusableBuffer.calib.xpotsPositions[idx][j][0] = min(vt, reusableBuffer.calib.xpotsPositions[idx][j][0]); + reusableBuffer.calib.xpotsPositions[idx][j][1] = max(vt, reusableBuffer.calib.xpotsPositions[idx][j][1]); + if (reusableBuffer.calib.xpotsPositions[idx][j][1] - reusableBuffer.calib.xpotsPositions[idx][j][0] > 50) { + reusableBuffer.calib.xpotsPositionsCount[idx] = 255; + } + found = true; + break; + } + } + if (!found) { + if (count < 6) { + reusableBuffer.calib.xpotsPositions[idx][count][0] = vt; + reusableBuffer.calib.xpotsPositions[idx][count][1] = vt; + } + reusableBuffer.calib.xpotsPositionsCount[idx] += 1; + } + } +#endif } } @@ -1284,6 +1305,11 @@ void menuCommonCalib(uint8_t event) reusableBuffer.calib.loVals[i] = 15000; reusableBuffer.calib.hiVals[i] = -15000; reusableBuffer.calib.midVals[i] = anaIn(i); +#if defined(PCBTARANIS) + if (i50) { - g_eeGeneral.calibMid[i] = reusableBuffer.calib.midVals[i]; +#if defined(PCBTARANIS) + if (i>=POT1 && i<=POT_LAST && reusableBuffer.calib.xpotsPositionsCount[i-POT1] > 1) { + g_eeGeneral.potsType &= ~(1 << (i-POT1)); + if (reusableBuffer.calib.xpotsPositionsCount[i-POT1] <= 6) { + StepsCalibData * calib = (StepsCalibData *) &g_eeGeneral.calib[i]; + calib->count = reusableBuffer.calib.xpotsPositionsCount[i-POT1]-1; + for (int j=0; jcount-1; j++) { + calib->steps[i] = (reusableBuffer.calib.xpotsPositions[i-POT1][j+1][0] + reusableBuffer.calib.xpotsPositions[i-POT1][j][1]) / 2; + } + g_eeGeneral.potsType |= (1 << (i-POT1)); + } + } + else +#endif + if (abs(reusableBuffer.calib.loVals[i]-reusableBuffer.calib.hiVals[i]) > 50) { + g_eeGeneral.calib[i].mid = reusableBuffer.calib.midVals[i]; int16_t v = reusableBuffer.calib.midVals[i] - reusableBuffer.calib.loVals[i]; - g_eeGeneral.calibSpanNeg[i] = v - v/STICK_TOLERANCE; + g_eeGeneral.calib[i].spanNeg = v - v/STICK_TOLERANCE; v = reusableBuffer.calib.hiVals[i] - reusableBuffer.calib.midVals[i]; - g_eeGeneral.calibSpanPos[i] = v - v/STICK_TOLERANCE; + g_eeGeneral.calib[i].spanPos = v - v/STICK_TOLERANCE; } } break; @@ -1316,6 +1356,7 @@ void menuCommonCalib(uint8_t event) } doMainScreenGraphics(); + #if defined(PCBTARANIS) drawPotsBars(); #endif diff --git a/radio/src/gui/menus.cpp b/radio/src/gui/menus.cpp index 69af3f0fa..9feed0435 100644 --- a/radio/src/gui/menus.cpp +++ b/radio/src/gui/menus.cpp @@ -1263,7 +1263,14 @@ bool isSwitchAvailable(int16_t swtch) swtch = -swtch; } - if (swtch>=SWSRC_FIRST_CSW && swtch<=SWSRC_LAST_CSW) { +#if defined(PCBTARANIS) + if (swtch >= SWSRC_P11 && swtch <= SWSRC_P26) { + int index = (swtch - SWSRC_P11) / 6; + return (g_eeGeneral.potsType & (1<= SWSRC_FIRST_CSW && swtch <= SWSRC_LAST_CSW) { CustomSwData * cs = cswAddress(swtch-SWSRC_FIRST_CSW); return (cs->func != CS_OFF); } diff --git a/radio/src/myeeprom.h b/radio/src/myeeprom.h index 5343ef424..9a8dbb803 100644 --- a/radio/src/myeeprom.h +++ b/radio/src/myeeprom.h @@ -221,7 +221,7 @@ enum BeeperMode { }; #if defined(CPUARM) - #define EXTRA_GENERAL_FIELDS \ + #define EXTRA_GENERAL_FIELDS_ARM \ uint8_t backlightBright; \ int8_t currentCalib; \ int8_t temperatureWarn; \ @@ -240,6 +240,14 @@ enum BeeperMode { int8_t wavVolume; \ int8_t varioVolume; \ int8_t backgroundVolume; +#endif + +#if defined(PCBTARANIS) +#define EXTRA_GENERAL_FIELDS \ + EXTRA_GENERAL_FIELDS_ARM \ + uint8_t potsType; +#elif defined(CPUARM) + #define EXTRA_GENERAL_FIELDS EXTRA_GENERAL_FIELDS_ARM #elif defined(PXX) #define EXTRA_GENERAL_FIELDS uint8_t countryCode; #else @@ -303,13 +311,24 @@ enum BacklightMode { #define SPLASH_MODE uint8_t splashMode:1; uint8_t spare4:2 #endif +#if defined(PCBTARANIS) +PACK(typedef struct { + int8_t count; + int8_t steps[5]; +}) StepsCalibData; +#endif + +PACK(typedef struct { + int16_t mid; + int16_t spanNeg; + int16_t spanPos; +}) CalibData; + #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]; + CalibData calib[NUM_STICKS+NUM_POTS]; uint16_t chkSum; int8_t currModel; uint8_t contrast; diff --git a/radio/src/opentx.cpp b/radio/src/opentx.cpp index d3c6f5e2d..0e07afb1d 100644 --- a/radio/src/opentx.cpp +++ b/radio/src/opentx.cpp @@ -503,7 +503,7 @@ void generalDefault() uint16_t evalChkSum() { uint16_t sum = 0; - const int16_t *calibValues = &g_eeGeneral.calibMid[0]; + const int16_t *calibValues = (const int16_t *) &g_eeGeneral.calib[0]; for (int i=0; i(0, val / (2*RESX/5), 5); - uint8_t previousPos = potsPos[i] >> 4; - if (pos != previousPos) { - potsLastposStart[i] = get_tmr10ms(); - potsPos[i] = (pos << 4) | (potsPos[i] & 0x0f); - } - else if ((tmr10ms_t)(get_tmr10ms() - potsLastposStart[i]) > DELAY_SWITCH_3POS) { - potsLastposStart[i] = 0; - potsPos[i] = (pos << 4) | (pos); + for (int i=0; icount>0 && calib->count<6) { + uint8_t pos = calib->count; + int v = (int16_t)anaIn(POT1+i); + for (int j=0; jcount; j++) { + if (v < calib->steps[j]) { + pos = j; + break; + } + } + uint8_t previousPos = potsPos[i] >> 4; + if (pos != previousPos) { + potsLastposStart[i] = get_tmr10ms(); + potsPos[i] = (pos << 4) | (potsPos[i] & 0x0f); + } + else if ((tmr10ms_t)(get_tmr10ms() - potsLastposStart[i]) > DELAY_SWITCH_3POS) { + potsLastposStart[i] = 0; + potsPos[i] = (pos << 4) | (pos); + } + } } } } @@ -2156,8 +2167,9 @@ void checkTHR() int16_t lowLim = THRCHK_DEADBAND - 1024 ; #else getADC(); // if thr is down - do not display warning at all - int16_t lowLim = g_eeGeneral.calibMid[thrchn]; - lowLim = (g_model.throttleReversed ? - lowLim - g_eeGeneral.calibSpanPos[thrchn] : lowLim - g_eeGeneral.calibSpanNeg[thrchn]); + CalibData * calib = &g_eeGeneral.calib[thrchn]; + int16_t lowLim = calib->mid; + lowLim = (g_model.throttleReversed ? - lowLim - calib->spanPos : lowLim - calib->spanNeg); lowLim += THRCHK_DEADBAND; #endif int16_t v = thrAnaIn(thrchn); @@ -2495,7 +2507,23 @@ void getADC() } for (uint32_t x=0; x> 3; + uint16_t v = temp[x] >> 3; +#if defined(PCBTARANIS) + StepsCalibData * calib = (StepsCalibData *) &g_eeGeneral.calib[x]; + if (x >= POT1 && x <= POT_LAST && (g_eeGeneral.potsType & (1<<(x-POT1))) && calib->count>0 && calib->count<6) { + for (int i=0; i<=calib->count; i++) { + if (i == calib->count) { + s_anaFilt[x] = RESX; + } + else if (v < calib->steps[i]) { + s_anaFilt[x] = -RESX + i*2*RESX/calib->count; + break; + } + } + } + else +#endif + s_anaFilt[x] = v; } } #else @@ -2743,10 +2771,9 @@ void evalInputs(uint8_t mode) #ifndef SIMU if (i < NUM_STICKS+NUM_POTS) { - v -= g_eeGeneral.calibMid[i]; - v = v * (int32_t)RESX / (max((int16_t)100,(v>0 ? - g_eeGeneral.calibSpanPos[i] : - g_eeGeneral.calibSpanNeg[i]))); + CalibData * calib = &g_eeGeneral.calib[i]; + v -= calib->mid; + v = v * (int32_t)RESX / (max((int16_t)100, (v>0 ? calib->spanPos : calib->spanNeg))); } #endif diff --git a/radio/src/opentx.h b/radio/src/opentx.h index 501ea65a8..d12bf7edd 100644 --- a/radio/src/opentx.h +++ b/radio/src/opentx.h @@ -377,7 +377,7 @@ enum EnumKeys { #define NUM_SWITCHES 8 #define IS_3POS(sw) ((sw) != 5 && (sw) != 7) #define NUM_POTS 4 - #define NUM_POTSSW (2*6) + #define NUM_XPOTS 2 #define NUM_SW_SRCRAW 8 #define SWSRC_THR SWSRC_SF2 #define SWSRC_GEA SWSRC_SG2 @@ -390,12 +390,13 @@ enum EnumKeys { #define IS_3POS(sw) ((sw) == 0) #define IS_MOMENTARY(sw) (sw == SWSRC_TRN) #define NUM_POTS 3 - #define NUM_POTSSW 0 + #define NUM_XPOTS 0 #define NUM_SW_SRCRAW 1 #define SW_DSM2_BIND SW_TRN #endif #define NUM_PSWITCH (SWSRC_LAST_SWITCH-SWSRC_FIRST_SWITCH+1) +#define NUM_POTSSW (NUM_XPOTS*6) #define NUM_SWITCH (NUM_PSWITCH+NUM_CSW+NUM_POTSSW) #if defined(PCBTARANIS) @@ -1042,12 +1043,14 @@ enum Analogs { #if defined(PCBTARANIS) POT1, POT2, + POT_LAST = POT2, SLIDER1, SLIDER2, #else POT1, POT2, POT3, + POT_LAST = POT3, #endif TX_VOLTAGE, #if defined(PCBSKY9X) && !defined(REVA) @@ -1565,6 +1568,8 @@ union ReusableBuffer int16_t loVals[NUM_STICKS+NUM_POTS]; int16_t hiVals[NUM_STICKS+NUM_POTS]; uint8_t state; + uint8_t xpotsPositionsCount[NUM_XPOTS]; + int16_t xpotsPositions[NUM_XPOTS][6][2]; } calib; #if defined(SDCARD) From 4a6acab3c9c3d2068f3774f733357d7fbeaf5b69 Mon Sep 17 00:00:00 2001 From: mhotar Date: Mon, 6 Jan 2014 22:15:08 +0100 Subject: [PATCH 041/241] 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 042/241] 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 043/241] 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 1dff05dc0222fd80924420982c0185084988915a Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Wed, 8 Jan 2014 12:08:33 +0100 Subject: [PATCH 044/241] User scripts ignored --- radio/src/.gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/radio/src/.gitignore b/radio/src/.gitignore index 31c048a1d..0f2d1136d 100644 --- a/radio/src/.gitignore +++ b/radio/src/.gitignore @@ -6,3 +6,4 @@ /opentx.map /simu.d /snapshot_*.png +/*.sh From ef3f8a7405a6520a53ce2a46a72bbfc9c507d836 Mon Sep 17 00:00:00 2001 From: mhotar Date: Thu, 9 Jan 2014 18:35:25 +0100 Subject: [PATCH 045/241] 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 33cb784ff11a5aeb5425a4b8e1a45e382e9ff79f Mon Sep 17 00:00:00 2001 From: mhotar Date: Fri, 10 Jan 2014 20:13:36 +0100 Subject: [PATCH 046/241] 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 047/241] 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 048/241] 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 049/241] 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 050/241] 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 f7e1c6cb8b5c22167faed710111c1f9c18ad34c5 Mon Sep 17 00:00:00 2001 From: Dvogonen Date: Sat, 11 Jan 2014 22:33:01 +0100 Subject: [PATCH 051/241] 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 052/241] 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 a025d325dd63dc789006adc071d0eaf44c5b9f47 Mon Sep 17 00:00:00 2001 From: Romolo Manfredini Date: Sun, 12 Jan 2014 10:14:55 +0100 Subject: [PATCH 053/241] 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 054/241] 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 055/241] 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 a292fabb02dfae6a4c3f474f7d2e8f4c885832be Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Sun, 12 Jan 2014 12:57:14 +0100 Subject: [PATCH 056/241] [Taranis] 6Pos switch support is now ok. Calibration is automatic. More tests needed --- radio/src/gui/menu_general.cpp | 59 ++++++++++++++++++++++++---------- radio/src/gui/menus.cpp | 10 ++++-- radio/src/gui/view_main.cpp | 6 ++-- radio/src/myeeprom.h | 5 +-- radio/src/opentx.cpp | 53 +++++++++++++++++------------- radio/src/opentx.h | 7 ++++ 6 files changed, 94 insertions(+), 46 deletions(-) diff --git a/radio/src/gui/menu_general.cpp b/radio/src/gui/menu_general.cpp index 78d56bc2c..766d05d8b 100644 --- a/radio/src/gui/menu_general.cpp +++ b/radio/src/gui/menu_general.cpp @@ -1250,13 +1250,13 @@ void menuCommonCalib(uint8_t event) #if defined(PCBTARANIS) uint8_t idx = i - POT1; int count = reusableBuffer.calib.xpotsPositionsCount[idx]; - if (count <= 6) { + if (count <= POTS_POS_COUNT) { bool found = false; for (int j=0; j reusableBuffer.calib.xpotsPositions[idx][j][0]-20 && vt < reusableBuffer.calib.xpotsPositions[idx][j][0]+20) { + if (vt > reusableBuffer.calib.xpotsPositions[idx][j][0]-10 && vt < reusableBuffer.calib.xpotsPositions[idx][j][0]+10) { reusableBuffer.calib.xpotsPositions[idx][j][0] = min(vt, reusableBuffer.calib.xpotsPositions[idx][j][0]); reusableBuffer.calib.xpotsPositions[idx][j][1] = max(vt, reusableBuffer.calib.xpotsPositions[idx][j][1]); - if (reusableBuffer.calib.xpotsPositions[idx][j][1] - reusableBuffer.calib.xpotsPositions[idx][j][0] > 50) { + if (reusableBuffer.calib.xpotsPositions[idx][j][1] - reusableBuffer.calib.xpotsPositions[idx][j][0] > 20) { reusableBuffer.calib.xpotsPositionsCount[idx] = 255; } found = true; @@ -1301,6 +1301,10 @@ void menuCommonCalib(uint8_t event) lcd_putsAtt(0*FW, 2*FH, STR_SETMIDPOINT, s_noScroll ? INVERS : 0); lcd_putsLeft(3*FH, STR_MENUWHENDONE); +#if defined(PCBTARANIS) + g_eeGeneral.potsType = 0; +#endif + for (uint8_t i=0; i=POT1 && i<=POT_LAST && reusableBuffer.calib.xpotsPositionsCount[i-POT1] > 1) { - g_eeGeneral.potsType &= ~(1 << (i-POT1)); - if (reusableBuffer.calib.xpotsPositionsCount[i-POT1] <= 6) { - StepsCalibData * calib = (StepsCalibData *) &g_eeGeneral.calib[i]; - calib->count = reusableBuffer.calib.xpotsPositionsCount[i-POT1]-1; - for (int j=0; jcount-1; j++) { - calib->steps[i] = (reusableBuffer.calib.xpotsPositions[i-POT1][j+1][0] + reusableBuffer.calib.xpotsPositions[i-POT1][j][1]) / 2; - } - g_eeGeneral.potsType |= (1 << (i-POT1)); - } - } - else -#endif if (abs(reusableBuffer.calib.loVals[i]-reusableBuffer.calib.hiVals[i]) > 50) { g_eeGeneral.calib[i].mid = reusableBuffer.calib.midVals[i]; int16_t v = reusableBuffer.calib.midVals[i] - reusableBuffer.calib.loVals[i]; @@ -1345,6 +1335,28 @@ void menuCommonCalib(uint8_t event) break; case 3: +#if defined(PCBTARANIS) + for (uint8_t i=POT1; i<=POT_LAST; i++) { + int idx = i - POT1; + int count = reusableBuffer.calib.xpotsPositionsCount[idx]; + if (count > 1 && count <= POTS_POS_COUNT) { + for (int j=0; jcount = count - 1; + for (int j=0; jcount; j++) { + calib->steps[j] = (reusableBuffer.calib.xpotsPositions[idx][j+1][0] + reusableBuffer.calib.xpotsPositions[idx][j][1]) >> 5; + } + } + } +#endif g_eeGeneral.chkSum = evalChkSum(); eeDirty(EE_GENERAL); reusableBuffer.calib.state = 4; @@ -1359,6 +1371,19 @@ void menuCommonCalib(uint8_t event) #if defined(PCBTARANIS) drawPotsBars(); + for (int i=POT1; i<=POT_LAST; i++) { + uint8_t steps = 0; + if (reusableBuffer.calib.state == 2) { + steps = reusableBuffer.calib.xpotsPositionsCount[i-POT1]; + } + else if (IS_MULTIPOS_POT(i)) { + StepsCalibData * calib = (StepsCalibData *) &g_eeGeneral.calib[i]; + steps = calib->count + 1; + } + if (steps > 0 && steps <= POTS_POS_COUNT) { + lcd_outdezAtt(LCD_W/2-2+(i-POT1)*5, LCD_H-6, steps, TINSIZE); + } + } #endif } diff --git a/radio/src/gui/menus.cpp b/radio/src/gui/menus.cpp index 9feed0435..9277f05b3 100644 --- a/radio/src/gui/menus.cpp +++ b/radio/src/gui/menus.cpp @@ -1265,8 +1265,14 @@ bool isSwitchAvailable(int16_t swtch) #if defined(PCBTARANIS) if (swtch >= SWSRC_P11 && swtch <= SWSRC_P26) { - int index = (swtch - SWSRC_P11) / 6; - return (g_eeGeneral.potsType & (1<count >= ((swtch - SWSRC_P11) % POTS_POS_COUNT)); + } + else { + return false; + } } #endif diff --git a/radio/src/gui/view_main.cpp b/radio/src/gui/view_main.cpp index 51465631d..930119fbd 100644 --- a/radio/src/gui/view_main.cpp +++ b/radio/src/gui/view_main.cpp @@ -120,9 +120,9 @@ void drawPotsBars() { // Optimization by Mike Blandford - uint8_t x, y, len ; // declare temporary variables - for (x=LCD_W/2-5, y=NUM_STICKS; ycount>0 && calib->count<6) { - uint8_t pos = calib->count; - int v = (int16_t)anaIn(POT1+i); - for (int j=0; jcount; j++) { - if (v < calib->steps[j]) { - pos = j; - break; - } - } + if (calib->count>0 && calib->countcount); uint8_t previousPos = potsPos[i] >> 4; if (pos != previousPos) { potsLastposStart[i] = get_tmr10ms(); @@ -1360,9 +1354,10 @@ void getSwitchesPosition() } } } +#endif } #define SWITCH_POSITION(sw) (switchesPos & (1<<(sw))) -#define POT_POSITION(sw) ((potsPos[(sw)/6] & 0x0f) == ((sw) % 6)) +#define POT_POSITION(sw) ((potsPos[(sw)/POTS_POS_COUNT] & 0x0f) == ((sw) % POTS_POS_COUNT)) #else #define getSwitchesPosition() #define SWITCH_POSITION(idx) switchState((EnumKeys)(SW_BASE+(idx))) @@ -2502,6 +2497,15 @@ void getADC() for (uint32_t i=0; i<4; i++) { adcRead(); for (uint32_t x=0; x=POT1 && x<=POT2 && temp[x]!=Analog_values[x]) { + i = 0; + } + temp[x] = Analog_values[x]; + } + else +#endif temp[x] += Analog_values[x]; } } @@ -2509,14 +2513,14 @@ void getADC() for (uint32_t x=0; x> 3; #if defined(PCBTARANIS) + if (s_noScroll) v = temp[x] >> 1; StepsCalibData * calib = (StepsCalibData *) &g_eeGeneral.calib[x]; - if (x >= POT1 && x <= POT_LAST && (g_eeGeneral.potsType & (1<<(x-POT1))) && calib->count>0 && calib->count<6) { - for (int i=0; i<=calib->count; i++) { - if (i == calib->count) { - s_anaFilt[x] = RESX; - } - else if (v < calib->steps[i]) { - s_anaFilt[x] = -RESX + i*2*RESX/calib->count; + if (IS_MULTIPOS_POT(x) && calib->count>0 && calib->count> 4); + s_anaFilt[x] = 2*RESX; + for (int i=0; icount; i++) { + if (vShifted < calib->steps[i]) { + s_anaFilt[x] = i*2*RESX/calib->count; break; } } @@ -2771,9 +2775,14 @@ void evalInputs(uint8_t mode) #ifndef SIMU if (i < NUM_STICKS+NUM_POTS) { - CalibData * calib = &g_eeGeneral.calib[i]; - v -= calib->mid; - v = v * (int32_t)RESX / (max((int16_t)100, (v>0 ? calib->spanPos : calib->spanNeg))); + if (IS_MULTIPOS_POT(i)) { + v -= RESX; + } + else { + CalibData * calib = &g_eeGeneral.calib[i]; + v -= calib->mid; + v = v * (int32_t)RESX / (max((int16_t)100, (v>0 ? calib->spanPos : calib->spanNeg))); + } } #endif @@ -3730,10 +3739,10 @@ void doMixerCalculations() // therefore forget the exact calculation and use only 1 instead; good compromise lastTMR = tmr10ms; - getSwitchesPosition(); - getADC(); + getSwitchesPosition(); + #if defined(PCBSKY9X) && !defined(REVA) && !defined(SIMU) Current_analogue = (Current_analogue*31 + s_anaFilt[8] ) >> 5 ; if (Current_analogue > Current_max) diff --git a/radio/src/opentx.h b/radio/src/opentx.h index d12bf7edd..ead6c7fc2 100644 --- a/radio/src/opentx.h +++ b/radio/src/opentx.h @@ -412,6 +412,12 @@ enum EnumKeys { #include "myeeprom.h" +#if defined(PCBTARANIS) + #define IS_MULTIPOS_POT(x) ((x)>=POT1 && (x)<=POT_LAST && (g_eeGeneral.potsType & (1 << ((x)-POT1)))) +#else + #define IS_MULTIPOS_POT(x) (false) +#endif + #if ROTARY_ENCODERS > 0 #define IF_ROTARY_ENCODERS(x) x, #else @@ -1098,6 +1104,7 @@ template FORCEINLINE t min(t a, t b) { return a FORCEINLINE t max(t a, t b) { return a>b?a:b; } template FORCEINLINE t sgn(t a) { return a>0 ? 1 : (a < 0 ? -1 : 0); } template FORCEINLINE t limit(t mi, t x, t ma) { return min(max(mi,x),ma); } +template void swap(t & a, t & b) { t tmp = b; b = a; a = tmp; } #if defined(HELI) || defined(FRSKY_HUB) uint16_t isqrt32(uint32_t n); From f11c961be48b6aaaab14d7b60665a09d1ecc1c0b Mon Sep 17 00:00:00 2001 From: Dvogonen Date: Wed, 15 Jan 2014 08:28:11 +0100 Subject: [PATCH 057/241] 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 ba9f55cb67be1a49612a91d29301f535640af28d Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Wed, 15 Jan 2014 16:30:54 +0100 Subject: [PATCH 058/241] 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 059/241] 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 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 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 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 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 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 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 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

*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 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 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 060/241] 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 061/241] 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 b4c6d123c841d10acdc752fa688817821abb354a Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Wed, 15 Jan 2014 21:15:28 +0100 Subject: [PATCH 062/241] Better implementation for the automatic detection of a 6pos switch --- radio/src/gui/menu_general.cpp | 53 +++++++++++++++++++--------------- radio/src/opentx.cpp | 12 ++------ radio/src/opentx.h | 10 +++++-- 3 files changed, 40 insertions(+), 35 deletions(-) diff --git a/radio/src/gui/menu_general.cpp b/radio/src/gui/menu_general.cpp index 766d05d8b..242b7f0fa 100644 --- a/radio/src/gui/menu_general.cpp +++ b/radio/src/gui/menu_general.cpp @@ -1238,6 +1238,7 @@ void menuGeneralHardware(uint8_t event) } #endif +#define XPOT_DELTA 5 void menuCommonCalib(uint8_t event) { @@ -1249,26 +1250,30 @@ void menuCommonCalib(uint8_t event) reusableBuffer.calib.midVals[i] = (reusableBuffer.calib.hiVals[i] + reusableBuffer.calib.loVals[i]) / 2; #if defined(PCBTARANIS) uint8_t idx = i - POT1; - int count = reusableBuffer.calib.xpotsPositionsCount[idx]; + int count = reusableBuffer.calib.xpotsCalib[idx].stepsCount; if (count <= POTS_POS_COUNT) { - bool found = false; - for (int j=0; j reusableBuffer.calib.xpotsPositions[idx][j][0]-10 && vt < reusableBuffer.calib.xpotsPositions[idx][j][0]+10) { - reusableBuffer.calib.xpotsPositions[idx][j][0] = min(vt, reusableBuffer.calib.xpotsPositions[idx][j][0]); - reusableBuffer.calib.xpotsPositions[idx][j][1] = max(vt, reusableBuffer.calib.xpotsPositions[idx][j][1]); - if (reusableBuffer.calib.xpotsPositions[idx][j][1] - reusableBuffer.calib.xpotsPositions[idx][j][0] > 20) { - reusableBuffer.calib.xpotsPositionsCount[idx] = 255; - } - found = true; - break; - } + if (reusableBuffer.calib.xpotsCalib[idx].lastCount == 0 || vt < reusableBuffer.calib.xpotsCalib[idx].lastPosition - XPOT_DELTA || vt > reusableBuffer.calib.xpotsCalib[idx].lastPosition + XPOT_DELTA) { + reusableBuffer.calib.xpotsCalib[idx].lastPosition = vt; + reusableBuffer.calib.xpotsCalib[idx].lastCount = 1; } - if (!found) { - if (count < 6) { - reusableBuffer.calib.xpotsPositions[idx][count][0] = vt; - reusableBuffer.calib.xpotsPositions[idx][count][1] = vt; + else { + if (reusableBuffer.calib.xpotsCalib[idx].lastCount < 255) reusableBuffer.calib.xpotsCalib[idx].lastCount++; + } + if (reusableBuffer.calib.xpotsCalib[idx].lastCount == 8/*80ms*/) { + int16_t position = reusableBuffer.calib.xpotsCalib[idx].lastPosition; + bool found = false; + for (int j=0; j= reusableBuffer.calib.xpotsCalib[idx].steps[j]-XPOT_DELTA && position <= reusableBuffer.calib.xpotsCalib[idx].steps[j]+XPOT_DELTA) { + found = true; + break; + } + } + if (!found) { + if (count < POTS_POS_COUNT) { + reusableBuffer.calib.xpotsCalib[idx].steps[count] = position; + } + reusableBuffer.calib.xpotsCalib[idx].stepsCount += 1; } - reusableBuffer.calib.xpotsPositionsCount[idx] += 1; } } #endif @@ -1311,7 +1316,8 @@ void menuCommonCalib(uint8_t event) reusableBuffer.calib.midVals[i] = anaIn(i); #if defined(PCBTARANIS) if (i 1 && count <= POTS_POS_COUNT) { for (int j=0; jcount = count - 1; for (int j=0; jcount; j++) { - calib->steps[j] = (reusableBuffer.calib.xpotsPositions[idx][j+1][0] + reusableBuffer.calib.xpotsPositions[idx][j][1]) >> 5; + calib->steps[j] = (reusableBuffer.calib.xpotsCalib[idx].steps[j+1] + reusableBuffer.calib.xpotsCalib[idx].steps[j]) >> 5; } } } @@ -1374,7 +1379,7 @@ void menuCommonCalib(uint8_t event) for (int i=POT1; i<=POT_LAST; i++) { uint8_t steps = 0; if (reusableBuffer.calib.state == 2) { - steps = reusableBuffer.calib.xpotsPositionsCount[i-POT1]; + steps = reusableBuffer.calib.xpotsCalib[i-POT1].stepsCount; } else if (IS_MULTIPOS_POT(i)) { StepsCalibData * calib = (StepsCalibData *) &g_eeGeneral.calib[i]; diff --git a/radio/src/opentx.cpp b/radio/src/opentx.cpp index 2e7fb6d8f..6923ecdce 100644 --- a/radio/src/opentx.cpp +++ b/radio/src/opentx.cpp @@ -2497,17 +2497,11 @@ void getADC() for (uint32_t i=0; i<4; i++) { adcRead(); for (uint32_t x=0; x=POT1 && x<=POT2 && temp[x]!=Analog_values[x]) { - i = 0; - } - temp[x] = Analog_values[x]; - } - else -#endif temp[x] += Analog_values[x]; } +#if defined(PCBTARANIS) + if (s_noScroll) break; +#endif } for (uint32_t x=0; x Date: Wed, 15 Jan 2014 21:54:43 +0100 Subject: [PATCH 063/241] 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 064/241] 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 065/241] 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 066/241] 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 067/241] 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 068/241] 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

}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 069/241] 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 zcmV-~1$+95P)7K{J@1rbR^ zK~z}7?U!9llUEqWf9EX(hQ(nm7zS*C>VVNG1J|s(@FVdfn&`#QEiOv9(TmNIpbH^k zcVt_#EMiEeX~KoD5MgY?z=(<|ek9ZrpA+s;YAD-n}I;x7$s3clSIEc!-AeAq2F54fq9k zxG4Sz7zZW+T_gog19CC0UcD*-SyNN9Bt9@OAb0KB6;#3nB!^_n1D*!d8VU>v%mTSf z_c97DU%rgRVgbNvwbItshRfxe=PCrn#l_sXaRVf45&Rr7eH3^N@B+rb@BsP1STqlu z2IRSO=a$|3!oouN;K2h~RaGUWl(Mz8HK@c-5waQrBxZn@BD*;R!Bs}XlP6EmXf)it zdzZ$>MrLPcF~4O7$z}wdA+OtjQlJRmt94=YL4rqXk*=RkyS48>c9VJ7V9>5+h}t*w=@aO%{l`O=(6 zQUqfHXacGy#WbPaZl}M$pN578hKGl_fB$~G9VHu31CD>RD1Hg>0dv6NmJr_b=;#ATl#EDJdzTxw#pm(TLG#TuEOImf=XifJK4$ z9^hKs9#{!N6o}N2cE(i&01XWdjE;`RT&9$gva&L^ZQHh-5?ccO|9ad6Dl03W=ZX6; zI7#jh7LK0c1gWJ0UeGBq`Y&1S>r^I?9| z{4Avq2t_bGJ(`|*Gc!YNZ7oix6N|;t23P^-iWNxD zNas-5A#^$&pMUl#2@))gja=&PCO0=1r_)JBMh13=or}$1;Rou^o+TkMk*=;TN=i!T z`o4?dq2c$Xl;^_~XliQ0FZ~feo|2Nn)Spx6^?ICtIZ-66O-aFIHq&?O7GIt@L;3OJ z08CCyk_5bc_%NoeTdA$C=7&3XC@n2Tzg~}&a%1QgJVro8MMcc=2ZSz7hmx3p$K%0R zRKyE_R0Mjx9-q%gc1|{ZKu3E!t?lh31DS?A=H}+2+y^8Vk)#6amKjRWxZZ!fymRC| ze2EDtfLEh%=*SU#J|6%%**UynHuHC2f@WQ=h7B9|sJe!U$qAB@ zlJI)HOZrECem;hc22@og|J8iFUT=JTAm-IUh(*Fl91aJ^%8%jqNA^xfM+d5^q9{t( zKgntcxLht*T5@voLW$<)=5p}B!7zCj?q$E)aJ$_LEez__Foqhd%<$L$+ z#pm-OgkWrJjLxpks0s`Y4PwYMED##G z=>0w+0i8~V-EPO)YejvkevF?_R!bnbgLO!D0vU16@B@R2Mmg`F^IzwG1n@5-uDhVz S%wBr{0000!PIs6%=dKsyqfJAPg`A4l{H2kNGjqFar#a z0o!ttU&8Nl?>+Z?f9KqL9(Q1#=ILim(irV)koXG_;RB9mu~7_k-_NjohlKFqa~=r1 ze>Fg&1Bje)Zo-A*mk721!xM~J0X*iR{UUIAj4{bT!Wd(2ObUR?)0KpUh0TckZ@&2^ zr%s)^$5o;X8{1@P#v%>yA0P)97`66X;OwaWnZOCaD!(g$V4xCs8W{3MFFHolRj1R5 zv1o8`P?VRKi;q6~NZh)0OH4%Xyz`Ebg}rAE3if+}od&1^jE?d4XFwKsgtFu|=RPK& z8qiM0FuVd_&z?OFMgai=Wl43e4 zZ8Di${j8uS55iXhzxHC2_09w= z7K^Bc z`1$#HY`0h}E=QkM>)F@PXza&uTwEMEIXPqUdGg68(d+fp*Vm7@&cF0hj^Ua8R9-ql zMMXs}wmvvGD5gs~oz6LE>hQT%{@n8csvp4`1AzxTwD$m=e^K=XbN*uQ_jC@Lxv$;rv0 zw6s+8_Vx-u6c!eWqM{;kg z8GwV>rgk__IH^}Dk-L!Iox^^8=QLY~8v17-$dGjVMEiH6)bvfEsuU?HLNxb;t zi*94QrH+mc7Dqca@J@tBcUU8T^);iyV4T!G18DZCBjgL3gd;SvCzzaU-U@V$kr4gK zIYQ3nFenRu2S^95&bT9V^ypCz95^uJQba{XQC3zq9S}AHp98C8;eYUnC%AU)TB4() zXB>dB0<9^45C-Uc<_gEg#u6JFdq10lZYl$R_QBA6H0W)|FTVJK!-o$~YV!Bqdyl0{ zm;N*Wh>wpaKR*?+7b!i{(Zr5R900Y34ubA2#<*5 z{rBJJx#yna`0?Wu6cn&?=T556RMXJVphDsZf=6(=Bj7avAt52e#l=n7Z^42EF7IV! zWqkeh*8~Lxk+UhsA-vIOw4W+wGitd|5*QfB)6YC(FPZ`c1qGCqm3ai9y1JT6O^vAT zno$5rDJfW$N}hk-UPj2z&!?oMgxj}oleIpJmX;Q}ySo#CJ;2{44M2K&I_c@@lUD!g zGt~e*p7uEY{{D{kii!#t9!4b#AG2f$J9q8k@ZrO}`s%BwR4P9E>@$`vTjn-rYilcw zjTcdyhaK_!?_PO@H{N;+yz-Vo- zjkLG7JNg6%2jl1Ghd}%SSmd<^M{DY<9oGV^t}MiHRXN*xiYHG&L2WQ6ppx8!fy5gi6Ij zs~(zSEMVhLz!4y1+R{pHl^X!EH*BD#r3JIegksp@lAX1vlqj@XHs@{jIOVdqWvp1a zk{j2qp}cE$8EXTq8Z~K;rLib{(X@i0E56hMjatL5UB9KWs*>i*&8THtAGTOnzI-{k zIl1Fzi}E(-QCnNf*|YyerBs5|21*51n~jYdH<6s2JhRcDuT0^o+^5*Iag)Opj*N_S zI7<^zT3Q+@t5eW->ghG~5*8Z9qD70m9zW**I3I&5r3!two}QkbDbHgx8Ck4a?3;Xm zuc`V>H3v}#J*8% zXNB^RI02CIa0=_zuS27D&G+f``U!8FPegwHeyoUJanCEX**JIp95ppH_S>m~BH+MW z008g@B>oDh0|EkwiH;#EDvF?>pc!Xm8Z^<_*-2Yl8~y$LcFmXgJ2u{!>%%SuiH2E7 zhdUmHQgIXeHJPz2Z`Mh|{;RH36g)a30hc@VW1|84-JnLm!aU8>Jk65_`aiit&arn4 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 070/241] 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 071/241] 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 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 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 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 From 1edd98f50175fd4627c4fe7231d94cf7dfe4ddc5 Mon Sep 17 00:00:00 2001 From: "Tim G. Foley" Date: Thu, 16 Jan 2014 19:42:48 -0500 Subject: [PATCH 072/241] 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 073/241] 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 074/241] 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 075/241] 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 076/241] 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 077/241] 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 078/241] 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 079/241] 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 080/241] 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 081/241] 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 082/241] 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 083/241] 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 084/241] 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 085/241] 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 086/241] 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 087/241] 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 088/241] 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 089/241] 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 090/241] 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 091/241] 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 092/241] 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 093/241] 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 094/241] 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 095/241] 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 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 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 096/241] 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 097/241] 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 098/241] 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 099/241] 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 100/241] 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 101/241] 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 102/241] 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 103/241] 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 104/241] 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 105/241] 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≧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


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 zfX)caD9#Z<9w!k5xe=_T^3T-^JN{Tx_3e+!M(O2Haq&1MY9aScMmU!sFerZ&jM0hC z>R^M`c8o+B1V{=AXib1g${7(H4-q6A)ZP1mvj3=i;5q6(e{XJcd?J8PrII2z8OEpV zrrRH;OUG)!s5L9P`Z?_>r4}=Aau8OPLR4;@vo0KqHcy#}6_cK<&ndyS z0wi88<4*6s_Fic*f&FKRDJDQD&cH|#03g{jKv&ujJUswKP7uYynKv3D7+iR+`v8Hj zCV};b6Wim}_gqeBj^OJaUMSP#un!U-(_Qa9s3y#5gBvssdM;7C8X%Z8=E zL=eHa42t%CaKTTz+xN;Om?+={px6Z=1EIqMX#;R5&fxZQv@v`(an|bKGznhbMpH&S zpfd>V5h$z5eDPR`U|a_F&0z2{ofHxj{Td9e@wcrg!i-AT(M_jn0H{C28HRTV$&vsG zl>~?#ZlSNUpR;KxU;}oy%ahA3w(OUVrm&&{zTlb$J|kkc9vrH687=VXz)v|OjBp~r znU3MxEkPQQR|Ln%JgPn|0n!8jhK{vzB=v)Y4QL;LwgD*hj$DXb1vRaQqW3TOsl}+1 zwiHZU2F}gdlAsXa1;A{B(pk{ZO>cLcP-OV)t!LPwNC4d(LQ>*Cru=AVR}%-XsO9<; zMUqw!_MU@v7eetY@ShtU5lr`j{kcg4XaAG(h7A+F#alGk$Larmf}TTLGJvmp;5j^N z@0~mn^j{6hzMSh3bU&9b0DlzTY3D@i@FR!fgnoaLIn@yHLv$cN@aalL69Z@ z5IJ;)26eO`X##egf}uE+E|#~6FF*oBlaEds_&XoFI%f!ZqGv8!%Ot$(+|=ArI_cr- zXly;L?-VHdEiNdT3oQXS(aXtmna|qV!dB#sB2y9|fzBpTY6%blLNC9`*5wOGpNNz& zgE$z517~2xA}F~4dJpC;r0*Eu^x}3+4*34&2Ap0Cs~+(Z>Wbq#Jc#dbkWkkU{^r36 z0NqU81M_e%wqY$3Q=T&Am)P0)SPT1~ypNtk_0&Buu@X+QyJ&nFJgf6afFyD!EU$w| z9A0apH$aBcz_tnYAO0tjHiv$i4)e5#U8uZ>lY zRI&51mb4U@Xc9z2;BN(|2mRf^L)Xb{xH0D zh*%tsp3QvD(H?f38=zYy0d%*D)eZ;8Qz}4VPVn`8WH`PFK~@K}x5J53a;ZwzD96TS zf^RLACBS%(h*5)I_dq4JpQ%&jir*0oz=N#9-527>aT79K_<8&w93jR}~Bgl}?=^0J#W&N(zLLCk+Pw`UN)i z4v;akJeFEBfA9dbw}D`Sl56E%DpiFoU6c*rXj5zb^D6Kw@T_&^0e>Ym{aoM*#lr3}Q(Dm7BAk-DXTK3s-5}*^PVSG16Ig(>hQ zyMa}YRO0kn7~bMW%#n?gqymhZ_ZT$g7~X5E_A@2aJ>V+1u36x(fx7$DpIw+;K;SF|ofFjb$_5%=co?TwV)dgH6nQK;0M0E5 zLS133WuF-*0lI*Coj#)Xd3c_M(<@>t7ifE{pZ2$Zfqm8m6nQStCHd~}+?3woyyh0D z{iNE}D}|yPl&yM`&~y^E?Es*$349tY(=$lhU;LgQD?Q%_^r?D(TsQETr}hRl2@aki zQa1$ST2dfk(Oiv5<~Lt=YkN2 zj>EE1Xs?iUnDGKI%!K4goO5H?%D~r{KG-57dDoe#d%%fk($nw85&l*ifg!AAcaD<) zJ;0lJ#l8Nro#AEYW>=Eg*NH^>5(G|XV&JZYWe-AGT`IIY2duY)=ox<2j?K{2D2H|j z;PBy0qYt3Po{foGKh_b9zTpy>Y?c@B;g3$%pNn@Kme5Gr#LUsc1B41t({L_|JT zP!NH>lkyGMeEHuE=0V-fSg{{}p+jl_zPBbN{SP9;BNy?Tcsk#zsZUgU!!CVYr0qG_%T_<-KlJctC z%`Zc{Eb9jXuy1d+(HDskesB|y2W6|jTOoj7@&AX&b7mkT#7k2iK}0bmOvp#dn7{ly zn-|W)bA26`XBdT1h;%8(+Y3O)UI=$X_3a=k=TRANg5(k;`x|&~I;qH*l)tUFX_;mp38r~Q#197dQ!ea7oyIbI$jS!Kyd>a_h2Or=& z+j+Wkkanfl_bZ-Ts1WcAkpRgYtzmp|8>eo*gn5-NW@P+B9O8q@nZ`yS>W7{Nuvf{) z&0_$e6b!3?QV`B591{!3#yt0pIuhWM;|$B5L^SQmE8@qN0WJaYZZKS^B3KfRZG*kP zSA1;fXoZ7&v&BBZFAwscziMQMO7!~_(I3)_`;S!x=yeGLVEjV^XFk4~#SSY)S`x(k z${AB8fp{^is>9{s?>TmiT*0Qz<0zH*i zg78@oE>Q%k^6Wqx?0yl>H4eLp&CqmMzihue$giJ%mp4@4k4p59g#an~r{!G#Ac|7)zmt*k{|)Gez~s3Vg>7D7zXx3_$1h>6+bscgqgrgG+4<2(E-s;*iz0=V%!-&F!P0k;7cE5NIa$Btca=q2bH z?)8yDIP?zmcIlUEe>?jg`fvVS1%9^@@F~dZAFm3~JHk-#he*7-lcOJBO>LGWK(+~D zeIPo9r9bgr2yBJ84@`5wP^2<3>_Dv|6+DWl^ee9~%vLbFoSfYF4z2Y+8`W8V(O@6P zUi@2{UfFGaY3R#41UGxD}FC9)+)88BmZDKlSsm`^SBvM?2(NCk_M z3U=n%VD@MXX#-GnIXKqK5k%c+p9q`POe(URrN*YP%QrvGJ*0 zY*TuEmy&&|!JeVf_WsclKs!cYQEKY~+$j+!5zr~|f5;ruM6y0i7cR$qNv zpz{wfa5hV5be(|ay$~H523<{naFoak@AB%;4zN=r_I;X>zBpqzA#*HSL8nL{DI_RT zkzj_>I<9Yif-63M9Ur!uFlz~rs+?)IOa#HC<628zuzUoh%RzAFkqSmtHT;Slg`6Ak9x*34Q~jC=6{s;*jtd+|&;Zh=ivNe-Y&6&{J_2R_;cJ--8A zy=>@dOa*^CwCn?aXLeXO)kYlwIv?N8uiiYvQN_>i(SSclo}=L>ivYPuP^^%kRJoRX zWH~kea2K~$l~S%pfMimR6`1FNWkC)i7y#)~FkTMg6$;mK5#YT@>UA`+OftmIL2x_t zzX73By0&7(53LPy&sR%FEdlnna^U}N=D#|E>0P~2e!frT?u`q4#@TXe5}1{4Qmoho zZY8^_N-6*0J=}1^Qda5_AbrmW)&*c$2!dIM1nDr;8ZayeVFhr(c_M%c^r3fQa2tg7 zLF7bE+c4sX);-XDTwlkh+9EVWk$ zWam9sviQ;4xuw*BQ;z_tzcGS!5ttXqUPD&&H64Wz6uzwj7AcnZ0!0{2Qi>mg#5ow+ z1<|7r**l_R5NLs(qtJCsUk$1WaHNyt|G1S+hr4J|M0~GmXt!Un_O*eYuy}iCAkQoZWPmOd6t>ktCa?V&hT)`P;@Fps8B|+fsAo0 z8!%5(g#qB$a9bt=kT|A*z8m5J1^mLi!FULI8s&8nkw6ZKr>d)O5dY8i@Q0u8W3N(} z6!^WWUO%83+MN*anLyd89yU&qz^2CEx=$K|Ke@KpFCp80l1%lq+1bt2NK&YNYuO&ceh)DfOc0c(x z+d6~vC_TJi1-!b~tNr{069^oWK!TKAU{j=lQ$>Jc<(~b{E4bh}W59+92Ex z1I-ZXfOt5+L8nK6-Df!Xhqh0k7@#v56A-?*#$$RDxOKP#3ERQKa0r z-MNOE+gGvdibX6blmL3)8_Y(eGCP9Vh^b6I`P@`)$6z*)OpzcN&yobmWRysIgm_r) zY(Yho2b)J0=lKZGH;Di3W)A*nJ8yLkr2Y4x3T$F zY*)Us&U8`y@Q1nh<`rDxw&NTv0mecaT`&`x-;I(02is_R?HK$2<6RCZy*Z?SKcD~~ z&;dTIVr62ofPXItkjpmE5}`z6S5?klKU;ibl1gmbDB;NUq<>^RNQ zUo>!}YXH9r_>fBE2bAjonaj7dOSqHo1vtD%BtR3?R}(=^2D?fcq=;YwOc&3g^p4fk zE}hMsWpi0D6$sE9#DBbtv-{6+`j>k-(lJ0l0W+ckKd8#;-X2l`KcVj3R3m_%T2M;_ zv*J3cgYT(p>b_aYDId^yZ7s8|UW~VOIUh+&1fz-wYBK2M6bVdvk)Ug9nd!D+U9*rmBoUT) zhF#2AF3Kzt=3E45?V~F+L?oGnt^oa=e*A$U!UxaM(bP%r!8Up|g8)&L>k!caKcvcG zO>ft3*_J$CK%CE{C4yEeq_Rbm&3Y0cPeds98OfQAulD}6k)ybNC-+M9^E!Ddr$SF7V?y!iGbd9MKSANE29y>4^Cx zQ>@{qQqq$OBH8P}v{Qie)`^KaL=bYsiIXZLEUwAX9HB$CB+#xCi<7-KZ*nR&_Eb%R zX0XYiu^9?kBc>*i-Z55adStGNe%e_ddVj|?peLtVZ-2iLAeUs&4i0NK4bWR6RHzM* z%rgWO&vDhR1!Jm%{(dFEND?C7HP1=NSp>+p2vB={-vR!|M1YY<0omIw>-{#@jt}Gz z<4LB|bec}nX*x}(=`@|D({!3n(`h4+M7XyE|v`fRs}$10f3%+&ECCxcQiLQ ze_hiwAOPsP4z&H=d++_`(n~MB3y+E6lBg5_2;}QF`gMDsb{@Ljn#Ui1{7d!q^1~`29Fboe5gK3&8@US|Y0nADO0M+;~-PFv?OgmB>zwz_63=9l# z08CC!f@N8JO#mPujE#-a=UN*8)3z&sN&r9&E=>~?6E$?x=e-!v(!C$)04med(-B-n zYTX_9m{f!D9`Ye2ZDPq#V3jv@U8Nkm_s`0&Q zzu)h@m?IZq7}WEr0>Fm>R3mup&n6K4z#+E%TtJlpO04=-O82VO*<6Gw{8UEBrUNP- z0OhCwf)IY07~#AD07e02#Q@m^UZI3vIT*Yw0HD^Sa-;r23qQZ#RH6ouTl_R|xA=+F zW_WgXRx39K$Vd3)Yv^3`fL}&%E;0aR`$G5Kci%&XVQj=3)ofp>qwf#lQiEktIRGG6 zfv4`z6%++X1kE`B==M45YHMq+zUQ8MzPNPhQttC(u^3;l_QMM=yihhGFq6RZV}(qH z&P5NXAgCk}NYJGgzlJatfn@6JfPetp1<`1pm!V6U3Cu_MWr_ka#rK(j;-~&ADG$IwfB*p51;{r` zOi)T1EQIir_vI`6GJRJui6H9R=7;W5xq!13ewlusPa;VDPIZwL1ps0I`37m5Zjv5C zDO|w02)}HJoNRi)i!CZu1bPBMj&+3?EENM3TlnR}7JeFFE+>Lq08nX7R=7cGfFOmR z7ohwaf=X@tz+FHo^8oqe`*Rh3`G~u6Y5omd1bQJlNDYup;GK)`%Qx&RM-UVZ0GU*6 z&Ju1b58r%*pZE{IS|4Oms3KiJ&^>(Tn(zw@0DiSRNEZ-f58r%h zf2rdBif4eJUhT@2Ezau~LxL88LB86Rt)oY_aMSPpD<%_|jRA@!0)rHOXG{ILwh2@m z1BjNuVq^m6g78!SQ;Z5$%DxeS06-XCtc&$#&|DCHmEI{dt+r8Da1{WBW`I(?+Lg_> zXWI74239NpWaAgQLr5uK?aBm50D7}g?4yV8KHh&@{9fLN24ZpeoBmqf;Z?o| z>iS`_&LAJT)Ma( zn(B=VNB9lYEf)iho|r)ZdX3RInYO2U-V{V?lK9bz2E2c83QmrMVRSrsDSc?XMl{~CzD`)!6-k}z zvgP&A+Tgz2Yu9>@G&(VpCs2L%N6?-%;q?9g_tu!}^S)0f;LN1Sw?`)u@X?`3`0Ht8 zuh9fN|N0ap2mJ+zNe?BVQ6TGkAX`xdH3CS z!|qSI;n`P*fZigz@(ZnS?`=Ksr8P}3JqwV)=P?s!5Q{tK68nX8(I5A?u-u)(m20VPcY6B}{Rc3xQoTVF_d7Oj!fyn;bsaYQ&`TVxE zAqro+t`5Glr5CpT`zP@Bhhs3MwZIKGe2ITg6@vze-o1M_jE|4=XEZf6)!o_I**-8Z zFbv6Y6~q--S%|CX0FVcP5R37xZ+&a&f&~k%MRBwS{oG~f-}>jxn+I#xu1y);odu&Y z@^!doZ410}AfCJ%%gfj-BXw(;j!+E3m^UaaFXLH0K=Nb~=DpuO_vDNT$B^ur>oxf5 zbsey8{{$FP>`%{$7Eylr%U{AJmt1n?Bab}t3IgIdy3N;-MgNF`c;BOsJ}M@YP$!gN z#R7n8a6Z$;_rL%B)$Q%=SJl)7iGtjL$58pkzIF7MDYA?9^$K-*=|uPfJS+Ty)Vz{FvtE=3dlKTMr#Nw6(3R z4f^~0$BFrbWCj4~0UAD@+$U|LI{+GDe{^)T>E@enUjOQ=udYW{_#rVYe*O?a z@xkQe1?{43|ome6vv4k%eLOzBU{=DYlhabKZjr?!8EF|^5WXTeKVdq-vBjg4Q zNTAr8i8(QQ(%_0O&@)7FvM*5l0`oM2lrxYXi^bf!KpaoUip39Dmb8<3h(>u|Ji+*V zXJUXgYu0eFyl~+{ZhSGoMtyxfTz>iG{5t}J%@FX}XP;f%)YNn_YKgB=NR6Nv!}U|& z``-8di~iCEgXIN+kdN^x_^EyDvB&;<<;s;?ue$20RFb1mrKi=z8`EGmVInm;BWE`u zGD0F&2Jh*#CMIXVWd3fCDXxQg)I`R-)|MLxmcszz@0bT$qzOjm?~)QG@ixPei1seQiQR*bh_&?JliN!6fC6=#8r>!v7ibO1i5rdUQ z7_#)*>QVcdFr+0JpDEk6pkvJK9-Q+tUxtvsrTeA(Hnie401;ClQ(tUZ)^891H`&>% zG!TRoriT#HfJVhPx$wf;hd>w{Jd=84lqgeK05l7!um+l1 z>aaFhz5ZL1Pt_!p#V0>a0q75N1HQ+8|CZ6D+h$Y-^&J_hPZ{?pd zFtf#|~N~aCl6vyno()Li9;O>$Lm2< zB)<%yS~HoC@wtMx+^RphAAyCQb3*Jhlk0HEfJit5wKXBAi_|zw!GxdjQZE1}M@+8j z4I{WtAS4`dxuvhK?>`S7JU9!^WRxr<`~F*Qx#bJXmoM)wcJ1eFZCC@0um+zG#^Lb5 zEG+JdK%`c@CugN-Um!qJ!a-tq5`kt)B)9{9rYSWrZ7sP0MexZC!K7%wGDY8kq|2I| zi6?75ekKsm(o`35&gZgy@?MXfigWr8x*?EK@&AbBM?d<}cJh$68%Qw#t!r1WUVQ__ zoKrCuPDsey zVIE^{zs^HKatoGQ{8>~ zz-U7K(_E6yAe2tV(EhS#o_Xeo?e-HPdn3GV-MYniKz&dbLxv8c24MO;e8|&q{-bfzj1%S~R3yzOXJHAx+5Q}~pLa#J0ORwoJ4WQJ1X1Qy<*k=lNA$?EZb_Pg8Q_6bQah+88z77jg3?+wI3v41m%>Eo}J0(iHvw<*!39I5d`Se1#1} zDD5PRGJwD~I`zxDyuX(lB^I;bt@n@e+<~0p)$AyO8&k7EXP-kC$sFbcow^c$(%;wC z*1&~*y*%wpZiM1~xeq`oTmZE#AP9OS0O$e$G`4ROQAA(>AQyllkQ){sVRBTlq*2$d z>V=OE>M$`i>tq9UaOne(!QdGwKw57RioaK*@dwsqwj~X2_y|JX4Fc8w%iFRLGpz)eF^B5ue=k|lnV#qO@bQ)u?VI>t_z z3Erns-cOIZp+1^oz)}?S^c}Y7*M$q<0H7&df_z1Zi@+M4Kd716S!ivkOB&g5YPzQw z)YDypY;fI&0W7ukPj22d)8l*9@GiwK8(nN0>BrGx+S{?12@@03(1@WSf6gUBfXzUL zy*Q0QTEI?;3>7kT-ag*l)eLQ|bq)jAc>zOLfS`auFo3Rxftru_6Kr5P9YC03beZ~1 zDb8o666Tpn#h(TQS`yx$2ZzUbgIBaR1f_Z-Kmvd!TtLyMDEAhDI@bWRNRxm4d)!X0<9rp%Ac!nuB!<21iCyM%N9;urd%dAp#8r00P095&(E~C6ZZy zscR)}_e%IMD?Qm`SsvOzVTBZX;Cg<~Jl>ELRPlKQPm`N~T?c0y!mMD;!FsYenEqyV zHs%;xqJ3d--NWw-qpRx-_II&>3Iaw(d5*oCi>`>(y(=1p-ME_-6V%jBlz2 zR++$57{E$iTL>8-D9M%WwX>2j0Cxje6IxoL_@EN01{jfO5dxlRQfsf~eAcaW24H&T z7e$zr?glKcK7Y(j^UR0#nVET;d4Qm~DayOT1yynefSA-l20(Es3S9t(fo;)x=ci-y-I(@Vh#2jF)Of)@w!xX^>;s7r z2rS)QZE*cHYcT2wLl{xhUiUeyUpc?13?K&Q@W})Cy8v}W3wnp01~n)K6I{}Xv2omh zk4H3UpH~lee04nxjEuuyK05)&kB_88pss;yTLT|=pol>=4) zcL~6RJ1NBM$e;%ezvO}*Xm4%g-(lnn7j=FPtqm5mHPsenTmZ6}cr8DtXw2)!UQ{A- z1%)n`wgI%DC^{BvfT5U%Y|sRY7Bqoj8`rQigQ;!JPGd<7VMux)Lt~)Rw@)#?sTkd~ zjc&^O5>CixO8I?L7+?Ng*+-ghK}#H(^rJAp)j$`}#>Y%3R?W{L6PTL|$X8LGZRv?3 z2=oCM4e4;~j0KY{?5geJnu%sDN$rc;u6xvcuRMU93$TZa;1(bIo8@0B!`etWobP=*8|9 z6sseMm?$c!K8NKTdifobOIr*1b{bl?C}Ci+7=R2<L;600~CAaeQ(@(?3jT?Pk zG1cI@y1LYO!fGM)Pt)x9*;33{;^_kDN#Rm$-)UZ(#%mt%|lU9k$~^Zovp3`?nCzfh2#H;wdm z=+L2@u3Z4Y8pl%TFpw@*j5?An{x7r{E`)ij`P~2s*!|3Q}LBqgg zpGL#5ia~iKNMv+VvZKAdy=r~C+;GDU@cZBYK21Ca<$6*85DZXA7eHvEh6z#n`}<+t zx^-2nOJ&QJEqvlk%HIp4lZY!;n~Yx~h>03nXynPWVSVK*Ux6TpqMHka1l?`7-3G6` z@=EI2)ATUKVgRp15N7~XmE$DX3aJ4IZ8Y*2-OTFMt6gkREl#=i+H2v14?f^Y9C}tX zVp=hpuDsbBN{?!vFXqNHdCs>&D6 zRYD=-Q2dTHl-JZkGXPET_x}6uzxD9L55Ek_fubo(!~_6n$K>wayWjivx4-?wgAYEq zb;*(?7n~~ysOD2V`tipfb5zrmbJgNqD6vCErxY)(X<+9<`Fsp3XLs$|^~U}8-~TJz zbs85kY)obV;(QuHd}z;}J@0JVwCQs+*5aj0mv+(slKBoHhriM6MaLU!d+f2tuBHZx zH{N)I3!G|k7x5lHQq|&=6)RSB-h1!8*I-D#)28p( zIk*9@wX3%J{Rqy2dJOxVwbx&N{oPzplo11nS-2_NMjbzCTiLPn-qPqq8h zsZ%`Dmb&>+h-b)XD)!T-PxJ5h?AgPoV-ITn#7t%V`t@570I%4In?$(-AQk&}baeEp zog7L@r!;kHwy_SWhYcB?I$O}oE7X^<)TOz(nI>_J+RwEpU8@TX0PX_%`}@0snt!m+ zg@8bzYdMtt`}Z4CI9`;|vkL73c*ywDOE3KnDYdz^wY3N7bsnXKtJ*%thp1@`*(!k* zC_X$qd{~Oav~p(vp;Tkv{N^|R7uVgmv=IxRMK0ldE~f4CDRoOiDqbuBSZDxkLZ}))F9r~)+ZZ^x`?3ds@L$3e=t`}x0w6ySFbNDr8@K2G0T?;$v&b`JI1mFRoO4smrIb?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;xB0p7Aq2XoG%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+H5`Q0lolkv_x%{&S}d4% z-+kwvv-jEiM5`*xU}KPBz`?;`%gIWr1J|JcKWHex&wgRkG2nvkB&+KR2Z#CQ{|`J| zW;O`;C6&3Xx)L0m4?Xb5p>S~jUV-Zo9Gp8l9Ne)99GqY}92|)w%y>{54$e+qPEzcX z*UD+9cY2Ag=KkYv-@qMG^U=C=>VO(1<|JzAwpg;;=56NPv@LQ!f1!uiWl)$84m-D&*>wQGr_^4S8{H1Wf zKR*>o>Fg-i?bF6ZqZ7k(pR|@8s1RJu!mJH9C|=qtcX((B1-dis(5$PkZ*FTFJ!2z@ zhh$T=ys~2E-~eTeiOE}xkS+>7@V0kwsPjBGDxG86xlEUc#JOBDPbf&~yN1B%wtf<6 zPuuX;EV$H;>BSy+V?|2r@9(n@O`qJNg}@Cv|E$B>xYIQ%GV305H%v`U ztywUu+S|`^+~*6};bR|4v?P^hVn{~!&NYwQ8i;<=@i6~m$Qj(!+$=YD(`Vd@-LZeO zQ}z;CEEwCCLoz1&|^E(|qz3u1oK#_CbjYqGW8JXqfXOCRKa?ul;z?q4{@9b*wrD zT#lXJ#=%Yb9303zJtu?u0#P|nSSr=(spsw$ZsW0YV=VIJLE>r8xGTZ;PiI;rWk5?n z+yD2vJ{nf(e4)hN{NQx+ucK z`s)ks1?B5pU}f&huoe!*{n=bXp3f$5(=j)4h}XqYkACpmyi<-fhcx5IMq}DB&fM$l zgPNL}AUuSPJ6mot#*$;HA0$Rm4+kZm_|*xd@S!_YVJ3n(1j8KAolX8heXa~en?}9y zsj1{rrZgiLrXKU_Nu*y$a9Br#F& zu)U*W@`1PWCmTbyQgw_fo<)P}l(p`wvq#*@I7=KGw<^Z8R#QeJJ~ z@~kh7HUId*g;0qy4gTJE@o;F_LV0)=j+YL7e!SahV>JaWRCmQ3?(kQWjJmH07PYYV zee+;|PZAs3WvUjsrN2x7E; zJSNM|iVutLOX$!L>X>QeU_QO9`#zfgmKbAzBX#8Vvo0<^9vcoaWo~5^p;ZySKt_!O z-T7riHRZZ*W$k_b`oQH7Fj;?e>jP)F*&LK+WMe=0?iGZX?K#4UyWS{dtl{r6r^I*J zN79v8B$GfBX5#9ae0%F|Wo^A&Z;k8f>e^DR|5n_6Qd_9nWo{^a1#i+5J{kLw&5j!Y?+@cil7xW-WHV+&1X3Kq*C_jj3a7-PyothAU(gxAR}`lVzIGOFj_L zP36c@CdEP-a8}GLrISTci8OyOe_m}ANGQcv((-Vq7I6G7 z@bg{XUFMqfb%JhBGN@<&fdLhlQXH+fudi<+2*K-NE)S|6v%IVu(NAq>XXlkG^JDS< zJ@jZ-g3)njO$g?p9=o=!+zx@j!_;!HYhnqsU>=krY&F7pqhgm!J-ZZj-~f0PuH4S! zn^akHW^D4~s1aWJzaAT3+Pz*b9>;CQR8&7vTnfHyt|o8Oq}QYH#Yr5HM&`1T8TAVY z37$CIHSclfjt>4Q6oN9C?pr!Ia5k>$dd%@-ALv~NG|y|Q5erm1_03r9=Kaa>P|p!u ztTrHtD^hcExo>HASolb=4!`<5k*BHv4!-9^z9s zo+*j1>{z0*V%>}8+# z7TP8+Pu7gd6jLn^265!e1$jEA;eu;BicT6rs*OwN%SBw9AztLJ|9v8rMom! zmZDX5%&|H*p^W?;i9a&J%|{k|ADM*wiD~su#mZOBQ64@%nX)-kpekC`>yi|CATn!q ziR37A3?-J@J~v{JEXCt{RbxUGV06W{F$-i>?(ra_`^@({%QABXi`D-+p6Asy|uE@iZdfSP4|efyiJI|S%L5=}4n0Kj6 z8+`CnT^El4lDPCTK;!}n&ZR}jx%Vx!devcXoqV|0-B2)R^3CMq%GulaN%ymtvY8Zv z1Fzgj^<(s0OV1Yvc)O_tM86HT&PXOM((tCtG1m6Dz-z}B?CzJ7Zlh3G;g~Vrvkh5sBj%nR`uQenh5b@PczgXF%J;HnyZ? zJJiN24}tDjo0%uon)KDLWSjIo+k+H$vuPbEcGayYb}U6(cvIIG1__9d+D>38!ofj@ z`X>JVcvA@L@x5&(P#0}eL&CY0?93C@Q_2fz(EJ3?JaUlZq-l#&+zqJ5HfscNTylc( zbnHH}4-+#4tJgiPAy6})X+>UojpIIV;<{{f-dzR1K6hi9pJjZIKEewdj3*yhA_x;; z8Qzws3O8AjR?KSQ9QZ2SIw|WOMufmbNF2K3g;o?bOI^NHJjXe%!!HyJsS~6o^_u|o z%;o)yBi%d+4n$pjvPgI=F@BQbUEr(H0iq_2C^pruG?_`aZFF=LV*#|yERn(=0Jc8t zSgPvGp^zh>RXFtgMG4!}C6_oAZuUfkoOxtXp#hbeF$R<{4CK(FnI8AGmA5+fTd}b= zU4msGD9ZTwcz&Z5JJ_V5H%Y@_%3LtxD%Cg;lg(!)*6TUpmEX!t)-8t1&Qy&mP7+fr zH-r>(wY>Q4ndSON+0BLv%}_aElf*9s-+2q>s7Hs9zAHI!6{|viwTBlN%79|oO}s4>h;2-l8Nvj{JN$6^3gW+%6;m&tu0@pw|?gmM2+MOo;$gntoW{Z z;E#s{r&z?Kn>xP>rNWAO0TB0s-u}TsMn=Z}s2Df|jj2>T(B=2JfKtxkh)6eS;R>@1csN59T zQ3HF|N8i6d?OH%wyj@yfXN4AV@5vZllL_A>;a+y#_~)}I<1mDci&{`4BaqlYLFvP_ zeJ1gPwebEdsx6FLa0EN3OI;I{;pfkPo;mX%jhEi_HtOq1jqNNa!r-S!Ko7~6HO3AzE#m#W z=)SzZvYoJTJv{Ee$Q+$RLnbxw!@bslDV#%xHgO>YK3MWMIGBodun;~LA4SFs?I;md zE{Rtr2(tkMd*eTdy$NuT0L|7zHn>!_@sl4NSMqhtJ7s~#8_vs?Y4aQHTM=(B{PS*a zZ`%ysMo>rMQd;@@=V+8Eb8vBm9uNtATee>qaxQqRQtcka))v#(T&uv4^1b_0GIzB3 zD6E@W+tf7l@Zh8LfYx8b`ugYe6i*7@_wQ)|@Nc&$)NE}p?lA%xild7(Ke;4|W-8}q zv?>PwPU1{x#Zr3jC0yjGJiRN1E2mmym&2g7K>(>r(^SO{!XcPS;X9=222JOG!AHt6 z$Y;8M7eY#6?}Pa-V{Z<@<-Q7AH z8wY`~25>Js)}=qCIhOTgHZ|0on3#A8U_r5LMC#2#xZQYR%h;=*Si4p-G_h1$A0Sgx zJBV8MqMDfBoL=YW=gGcs52bv|^cVN`&WpNu!@El1y}D4M^0Y7@{9UsYe4X3G^(eQ*@9LY1xCKdnHB3;i6ya z2H+MAJq>kGoPWS~k?OQA?WCrqdB0reC2&MgKJ-#rICwz+{rlIZ3gE@8tSkVOpFf`d zZpJMkl!Mi@wdtXn1E>PHdFt0Tj_Q+zgTI48@iB)c z{fhm4a+{u&RWa59Ko5T9FL7|8y>M0TXYqK%Ra2d*qe0(kzr~OMC$UG~r&AdCLXjVh zR@~sazyJ|C6Z6EjrAuclH7xIX_MqA3lrbZA5*A`R9xXIx6jOSg*!ghO8k{IFJJw4= zMXE3^>)#CYIPOdb+F}&%u=y&K6idMa-GeNr4NDnm!u&XJElaKEXX?xI#U-G0cv7g;SFh`gg&CM{4A38-F`YCT}Vq)g}4oG8M z){_9UKQRhxY~*q1xEvC+`$lCjbv-#o{Qcn6qy0WuJ5;3|QLltBM>#SlC#UV8_fDd+ z)~($Tc*qkkOEM|usdEV_R*!6Ia#gZA!a}f%C|WEbaWpeig;b-FNiAC31pc0jF6K}! z7aZXxm#DvOtm7A3xJBc@=j&0%m*aQ77mhFcjx=FZSQ6C$NDZMfadu9kLc4$@TsjTd zaGOCW78!F++5pG`@c!hH;&m}p9Pl?a;YD{~^~__RN!ILnkM17buZJC48pYw+n1Ahh zD>wh9M?;V>NIi2ISVPkwa2SZ(@SUKUQyRh+Dy2k;fmME%cX zfOyPg)pS1`a5m6he=o^0e05lq;Ib3X=W?+r2E@Vt z$5lxqj^p;^I~3I%t99}MLbB+7>E8|IB8!(M7XfJa&ZBTJC5>e;-zO$3O=|#&*Yhn6 zUvBaC1-VeEP-lwH!W$D8L9pz-!Gyg9QYLsHOfRaKw9eZ>q@V>t`)|-W zOJj4=vekcI7{4vZBv9<}1zz(3@8#A^J5crOx_7Sj`C*J$vajwLO+|{GU`|~_!@$)Q z=i}eAilWQWc}GXb#n=spW{#m>+-L8bDR3eWi1fcF5Pfd`?Qg9+L(O)+B)DQ0rtAjdL#iC!^78Na>udVMuOVnOClH-m{R9 z5Ee=(g8vP|U(dU19Y0)7l=(0NOm)oiS{qDtow!6PY`9oaA`ZCJLIPECTm(BY{hB&A z%!qXo4EU;G<>|s5H+)%_#TD4|zkk;B zQN`rTePk?jBX;=z$JitEX-*fLy*_+5kNyn{*(`54;yCWRrcO`o&jj8VJ6KwlNUyTe zeZKE9ru?W`4A2ERSQx-J!NWj0o~lL^v}4iN*S}ph7-Z@+IyZ1MZ$0^dt5J|3u3qd_ zqNc5lOqw8FboF%i)7?8F&8VE_`=@8vSpB0ZYB6#Kx+H__5Z=4gRb(b?;@D!iitki4 ztg=aqxxFA=(Gln9PamZ7*idRv1SfdM*8HPnIb|acP=gf|6e=q#YaBO(fv1UWOa;mq zz7+m7vTaeR8KsDGc57?v!=QVcVKECr5w{Xhc5nX~cA^77-RQ@#4R_xiV%r)iWTQXD z(!iX1O_?O;AX~sc)Bo}BtUY&bVu&s#RHMZdlTNPBg#SIl7*&t6;p|oo?`~C<5?MS$ zzbQT)YCuqJs*RwjAZh5NGr3eIJxC)Z#?lno#ym!ynaIfv`csgi1Sue>0!a-*A5Uu_ z(&PTIp(#$<96VfwKNv~jlO9@+TKg`RyaFle6AV+KQp`6IQwd7_ElrA;G#Jj#J%c($ zH%e1SvpOG@Uxflm4^tsWsye$9b~{2gbo|ip4STckhd+y+9Z*VU^cGnkE|cHse)LTR z+5)0AU0u+FRz+#^{r!VPbyJskCd1Nm5>|F44In!K9fKR6kF(r^?uIL8IMoPY3@UFL zkcV%7HkkUd51@-zHf9^GZT18cL4IJTZzJo6E|3mc@XOX@ZaHOHEcMTjX?qpVp~q8E zT_8v&bBMRay;JM0sYzvIVhp_-Y&{L_myH$AV$SDRP zE)Hhlhwn2| zXj|-rI{r&_+`7NqIY5?N&>=GoWuD;o-lhXegtFY|FTElQ_!Ts!q`g0jdT%03v6Hn- zfcDz^Ii_H_VG!03qq;tlux<57!;oEr6L`?-$JF)}XYOZ0==82m@|!k{BmRLR{O25{ zIt%eJA`mLfE9P7@kbi5uT$4dAPHNMKLR=1^If?|vY@TgxFT*t4T*g1akc7dZ9L1z! zAO=k#WKZs}( zO={5t({>8u73bwVcBE zVe`LdzqQ|r5~VXON(tiZT((50RUEcIbOd=}vZ)nw3@*m8T)-FcbREDx$8%(kcq!5* zT9A>MzKJ!lvx{8+o5)-*nL!=R6_&z3D)T)KvN&KH<6;oTV?w_ID$a+jplmV{d`PSw zGq6VKULH_$sHLryH3S8*3rN3jP<}{SG&v2I4TR?ae{|EOCtVXkBdsz9L%fs#xuB1H@fpOmd$2RL*W5LBK7)o zY9EhEg(NS}%zk*6q`u9MQ>9hGV561f|FvDEOe2w?vNxT^15Z#!2etf7ikeqnVpfX9 zstk(&+8$n6<`$Kizi%IRBN~x-kwWnsXdeH>!!c>DZ@&?a@$vvVnIymlcfGoBrRN+P zr*-9Fl3vQmXL2F8e#Hl{Oi)S>Q!oV+cNC$eD@}oH@%x^1gQ71pU;?{Xbcqi3-9t_7 zd~9&r1J%T|X+0mpj>~rNFu#9c0`B+&dD|I|t69=cmfezY)HDsJLN59&xWVzH^L=*|y>h7r7Fjr|h156?3ly$`)HK~pp*lpL5Z1-W*y1uVZ^iNyV|H}nfA#MGQ z?@K>PtIv;yr^r$tW9ZBq3S}q)Z6@Fpwbf{p#EX|BZ1AGkVT&K^N}IbWrF;{Ah^1{=^wADeZrvQCR4Z`R(L&KY7UXw-^nO8d8FTx#@XPY=l6fB~IKhP+ zr62!HIdZ;=To7}tLGMe$r-4>WPVy~Zc;a|&GD{>`h0jX(T$rN7V9_uOPAI@9q|3%^ zz%zzewoQgUJ1M5j{C_V<8$O%mu*$)mWSu~KJmTGs3lUHS8e~ciJ<%sEl2cyFEopX7ZKrHWtJ+HZs=&JU*64~k_3!zxY&xBWTc#Nk#=U93 zj2T9qRr}yy56Z0;`#aR#(Oz@}7rU9Zs5o+_7=#KYGqNu{pjZOpDdL8j?Vm6mJEuyz z1a*d^l)(~Y!Gf`xGF{`h?Ag13*4MatySYOrD8t>}0KqL}I9g_~qK-@*;9w2D98prH z*t5{u87X`?e2=SwLd6Unk#mpXAr7PYq?9?rER@5NDP!`>Txhu#l7SMQkMs)(goUAL zji@|W`!-=1&^`KUe)bFH;8;&pyNqo0yKCC_)a6-scV2O^SJ3< zo>Vr5A0*;c8WZKSh)5`Ps2+`Yn{JUZCblM(gvf4kmZ*y!( z3QaSXw{wV4<7Q~eoW6DH4B~%}p)g@3nhMChu^gGbCbC6yB_d>R##!?X6CjJbHkI%) z@^O>BWR(-W7A9CjWR=8d=3*droCSF>b>e8rT<%~}%=%>do0H)rhrY6eHT0^W_!;68 zp?6W+U+jfVU{zdbloI5eOHip&7&M2Pnx5>PML7crUUFh4xEoFpPrNXNsz1fHSwa6) z>Z|Nb`Lzo7WwI;cM z=4g}k6a`eoBl~%5jK}an+-4yKIr@-Y~HJHLcF) z7|EJaBsej|s$RkjNzH+DA66rz0&8yFs~`4yy0LZe8^VS>FRPR_PBV zzM0Z7EJ9lTq6=S7`yMJSp!t(*V8G~TRrJu~gJ9JX7y!TQuSQP`|s+Y=nIbE&?$jKtV zXtczFtzl*) z(xh)##9yf1mAvcv^}*rqAL9YRRDQXrZFFhS(=@psrzpHy9#Pi#x3o%tLI4+?N~rDfXNQyHv{x((xbw^Bd3{)2?OjmW=E7 z5FThWkqFl!W-rbmTyEUOOtgkQ|Ao_Ts5W!7W()P}c{n6&ot$AUwlRA{!j#8jqv%YB z9xg?Yg`^U0z*>EfJMzvMSJI0un2xo+E3Pn}KW$J3@+0&I(a7(!r0J&L9GPp3Oni()j2292jl#{_XfKF)nwD~U9cFo7^Z zQdYe@CP5sg5c>HZa#oji8Drf^s`Ae*1P8mj_frCUfON%L!4C7Z1#y)D4KAlKbv=sj zpcoDh+h7t-=QkM*o(o0M1q~aPpOVUET+9f=mzSTS2xC@l8h9iHOViG#Z%JCXTj3jd z5oMoLw@?Ti*S9AmY7nYEnEWlD&Ou#_+z}d?;ITK~akIx(ID-*AM|gx`u*j6cTPs_xDo(A&FHTd0E-zm^F{3M8 z?aGkMBmiUNYKg}&Dw6olf?WT-vOyDqsDJA61!G9*k~yCViiSx42@86{Nd{fw^F&Hk z7@A8?+|OPX9`W-{$}ou@9KvYDs}y{jE`YYii~5Tme1n_3FNLbn|0M|T=32OxY>SV% z>(Vxsv~3-N5Zpv&=tDspLrXKm)Ne03m(@R(c_>?`!7ff)*@qFzgIq~|G_v&h}Sh9HHd^lZD2tUX4FxyA9xjT}~%*_02BAKYm z7&(v#*_R&-l(v(NM*SXB&uE_6aQI!@FlCyW)Da8Ciu#_T_%Fg&BU3InLs|cZ(mJr_ zGZT}kKgwQ-04L&EnQG0zGG5J^Cm)3&xMJ-@LTU&N&MCmupM?}YW3hT+EIM;Dbh)wy?OAK z+kjTXV1t0TJE4NZ%usyI%{IjfnN`28!4c2nXWB8FyY4y!ZiKw4?0a`ZPSGtj` z^Nwp}qnE2RE;6EcdY}u-^V|kdBljnuy^skte8X^+4H%8U!;N9`d*mM1f4+08%Sw%L zpyd#hk#%!TO}C`)Q#6$d1pX^XxNNY7gr;@wX5o8_AHGk)PyZE?%6Jq)w5u12T%|#m zY4dCN?RiaOs~Buw5ti)?;~1n(r5Liy?}R&Pv6xNFpOH5M%P}xBMSw$Dl?|8$R2xju zi`X+FxMk7{WwS~JayO_(nWZCI{?OC4p~j_KX$&2uH(u)cyzu^8$J**EY?uA*$R!&= zCx}Arlp@h@n|K&jb;-avehIly`WYt_`>vCdWn!kZN3nsWo`|_zZkl1(Y_t!b`CBKm z*Q3B%OP*X{-+p94GkST$>*U1R>pQppOtWpcRhKaqo(Wq(NZ8}N;*+Kg8}92vc>DJ4 zjZf#bQ-B?dDQMQ7*N(kBhW5RYfuOR{`;!|!+wawf3R zU z3#%YhO25Rk&Qm}n3On#d-nFw|V{Gm01R7^RS91|l?`wQTNWw{*SFW};K}A6KchsqC zNF6t=iaA(>s-J$8W$xF-@{~U`BZJiFlANvIm7ES?imlC}ijjC-Pi@6(nHmX{Lt9g< zHn8`&pP|1b;px!?=Uq97CN*s{ed^})F>PE&G82yh9or5)zE?@(6L_bX$szTuO~b(a zl8_thG;?S#&l%slU#tri<%F6IC8G;^qJ{Lg>|hOMx=;0Ig?Wgx!w62t~ zy#7uzC(w0~fw`|sUPW+%Z=|t_mX?}Xa^@~3tJwP6RikIWbz-V}1WofNtUFI8`!{KA z|KU!}i)|DZrNqS#C)w7X0XszgfG7SBA3lHuT*3g|oZB5qtW)CscP*)g%2i+bpE{Q} zej6g^IQ@x$o&))T2Im^z5WX6o%IZ)*(VviG;cpjt{?Gaqyr^m6t;}`7Ax+|tFbg+| zVYYVk0ZDKQPX~4sR)k87PNr11I{OxfR0h4zSuHog$64hL4{YjRT8fJ8nAV^382IH{n zS~@u|BX^Ul3-Ku}4*dX8WKBo6T8j1nEekvR-j+>k%BE-hDC)pdS}C>*aw(GgB5kyu zFR*JoNeXo>b%z}i>%5{V(oi(Qw5fD|fF#To&)^&p0?M}^DL?uEq;5p{hfMptnP5g? ziWwj>080AG3R!)9JrC6&jbaW28-JPVu#l-=;6cQq>Chf>?Mn+Euun<)MLUX6mLD}hoddYE| z!sxIN0XZ!rC#O}^xW%i>0KHVu5|D&C=d4}XEeTX?eUu`S@r%?Z-T3?XajG#!BtvL% z>N&3sS0C@m6`^HIW7wr%uP=7-bI$_F3+$7Q;fLhaE71MY(?MJBE&iA)%0sEu@yXCq zB6$RyQ&Y?H8E9#n1$0U4Pp?y>&%!jeIT$>9C*PTZxj0!ja3NZsYFKBtJpdN&_tYG4 z(rjel{_1zEk+)6s!wVS@zQr+!XnA7_^{N{M&poeizZ0JxuTL~peGdgH@eYi1x^GLP zc~#mvAU7@GgpVVqxTRX-W(r*_wIrNb-Wv&|4=awH7gMJSSO6MXVYD9<;)XOld=R&} z-^sgnP!%tKCNk*d?mf(oAYk^)1h+nMvUb~xR7oe(WfG`FTF6PJ4%`m&XKV@r->3U` zd}_`H$*X#pPFd&oYVjf^4LJ!D(F$RvFfz1G_MN?p-wv15+InOIsX0NfWzLxF72y|` z;v^gWPg1mRIAncVszn8-omRLtBg>)byKe}x5|>hbSrjv{sr9BnkLw7TUCRP7KXRE} z*n%ifzj%?uUT={rf_re`J+-lMlSjgs#}3bK0KZ#-LtmxdH$FZ-yX@|jt#&EG524@S zO69v6LqaaaX>w{?TYI^qy)OB>f=s(Nu^60V2&5EG7*W4Wm3x~G3OLqO$f(*V<=T}N zq3?`@(M^cH-{v0Vih#)BuZZSyig5LpJQ551`b?lwW)FGce>Tb+u}}wn(QIO^g^myG z?p6v3S1G5p4tAb)Ul9n}2@S}NF6_${n>&LO6fs@CsHsykGdCI!X|6@KyzV~YpIqj^*ezt(L_e>IVcxWoRG@4m5$H=>TXu=17c7hL7P58CZ>=t31 z#Y|bNr6PmJ7FjdKy_@hq&0lC?&4JX>dZ?S#?SI-1+D@u{LHu={of9fAyDC?In>%y3 ztf%lIkiRe5aDS#QG5R6X{2P$7e+}lYDdlLMq@)mR+}RCI0&Oht26)=Wv-P&0a))%v zhxaipjbkCvf)p*3LjWZfhESn264O|M%D)IwFG-cw2>qm%4R|8xhBz}Mxvem8c{3Ds zGV}JX6#mX#Kqj*TvXkGb0DS|Xl~J-cNQOhH!T=~IPkGsw-;AHuZAOnGDa3gfGIUp_ z7T4T9%6oy^&rQMHeP0qkE2I`P?gbGUbl$%Q4t4#*1-TUBp=PRYsVCR@WG$b;cJHp( zr1BK!$y5kp^$mw0BKC?Lrl%t(j1w;V7(F#a=n!qB_k#1!OtZ_7F?|<_^gHUTs{^zE z6l~*fx{_LWXAV{C|Cc1KcB#x#Kx$kh=g&Qu&*=mzHqT^WL3Ue*D8Wa-v_O;2fUfsm zImeKeE49qP^@}cyMWy6fV01gK2G@ykb!^>e?ixG55?nOx6!QPb{RMuIK1 z{<50Zr_U$9`&q=qx8e42(ZC%kW6(lQ{lcqp=rF{mN;33>Bp^hqA@9_A8u768qXYSR z3>yLtH!f_&tib=|O)>VkY|=sMz-Iy%PG&7xPAoL3&l+*lU@TV4xoYQ8k&)f{>272g zx@VD>`?Ba$cw zGs+PxEG_~%E`Xs=r;iBBIQqYMZVVGG8YtAS^_oP(kUn6!q=6NstRRb^_qkNFUe#Xa z8Il^a%&6suxYB6D^o)%NtU?WaapyJO4}`khR_8CzZU_792&Ho4EBh$=o#d01)w7g1 zx@$TI1LYcVL*@WwmriEtdOLezs6~8W>l@QJOwpqd3Az3*0nT)emZ5b^Eeeyg_EzJb z%PeglpFmv~b>)ohA{pSV^s)YD@Tw(Fr|(sEn80M@XE2^jMvYrb@~(+*||98F@=J1Bs*sHpAWZu zWGrz+bheZEBD<%@@1FxGD@`|MDaeAS%yC6z`!x-G=kZer-1U9ulZxFg36&;=1Cc*$vHHe& zeT)7R;e~3x)!1`p4AZ-Ji2nN9vHRJur{cTg%U$!c=bx?v2Q6*wWhL@tbxt9nF`G|r zNcwhD$;Rc3CY?qJ_104hpx_jOoP)|QcSo$uoZX%o9)}hb2AZlDGT~5|l;s-Z=VMADMAbaScX`5~&rqsS_;HNU7mUDk|1&i)O}8!irwAuGkj zoT3lbEj-=f>t3U~JA;1~5d$bDDE-SZs5z%NJvN#H{?V@ zS8088VL=PgbGG9L*R{2c0%I3yg!sc8Kmutb{5`Z!9Ld(&uz4yZ<-61h-pD;zn7T$t zjeQDC>$4$Tlvx1e@GcU-M01HKMmTt1Em1a4lOa8*%q7LPG22HInj<{IZT5WnKH=jP zV*;g!93%rsu-U@x5z;d@?nk(&Xyvlopa!d{RjlO8pk?LIP*j}!Yp{OmuPT`}nr24CJui=0Ln*fM05*(Y@WUkg;(7GY1$)Zo5Tw zQws->)92?kXSrG0-R|mYY9eg}Eg=+1CHU5h3j%&4do~|tv|#(B)jNNDiWGG#`K|F% zGW`$E{WKKHOjw+`Ex9RXZ6d~}CSY%EJXiQdbN7*|X;fiqKZd{Yg^hF0o#rRUy=Wys zMsHzqf_1O2u!OYlaQY!~j?E z6;*=wJ2{H*L(`usA^z`V&I0=%+Zn@tVt#E3!}EJc&eKEu^Nr@7?|F5K1DwF$-lX>{ zyVBId0ZOM}+xR=%P@le@sZ|cJlEyc(FchJOuJa~e;s`w}Rl)|!3q_peO3WNK2nwvJ z-)_n&!IXc7)AhbN;xkwxF~9+95^WBR6B+peIMb>?(B5w!; zNo~2QpzlCOPCgaGox>{i0??5ZiK02nbOvVROjX>G$gF%!dX ze?Z4Ho;{0tmuGfMw&@sT;{K&E!nF+02+rs1c`~G>u7^$dP53FOKA~nQ6v~Aub1i7A zB>hI(dhim=c-<@r5OCDS);g5R3)J{;m?2)uEtvhJs|0j^gY;gV-%(9Jp>C2C`C5i>Q>n z{T@$6wh|uCs}@d%Pxb#*-kWw6JM%zE3|3uNJx-gtJ1=ed9Nt1W=@eI84Os13Lp+13Z%T&yNAI$s^ z|Ju4Nz}o$Urfuj>6sr(Rue=FkV8X<_Msrp^DGRBXG``0;?);e;VVD%ysS1^__JA(8 z{u37+3F3_a9C5Sfck*~+Wy>}-9f7U6@&MeNu&N*8_c+1R{9KZIUi2xLd!-KFefk_< zg`rqChA@O%E~>EDWG5y>RgcGJY3j|m$F7pW#tU_}Ch8w#F7E7kYXSTmi)=;Fw{f*` zW%wf;KOI8H<^o4G-cDHpOmwm9p%Ek*?EcWzK;zb zqs01Lf-`l^zA*i{*^WHu-#=tP1{zMFJXrTV|KEuLn2QXWsdBi7j^2P$~UOvuy^( zUF$APLC3(r!qhYvKx?O`%z#bR(sYUfz?8rdt5E+|ENpn(7RlI)}?ItKfanccr@vKC)y-GnD-NzdiKWN1h8Zt(u?iwYeK+H z(bEj&Gd@rd70Wcp;>Gb5tTU%^KTFk=lt}flTX0h(my$wVJ`YaPMRSy%n&A@^#fCG} zEi24M3h?Fhr-&JMhALX}|Lw?tgSz04($AZegi3Q}GlW&K>f&VS3o-6ZV`arj_v=kI z&T;_$^{-!vs#~@(ssXoeb?ZJE6fDp;Q}M&f!J&)$4`{=ATF|;_u3*h!*1k!0Hk)yN zpuAjvwuSY%vQW1D)~3rJtplwDw=JP9#)T9vPJADYYHoH;(W~D-64B=# zY^P*maGl{Gcx_>JXE;6$Ij(*|3QT%7dg)lp(Ir`*Oks!L6} z_Rs5;-DzRX)lL+F@h|Vm(JkysWz{qPOxH!J=HORPvJ?|X}W28b8TtGv`hqP&)LI2HfJlP#0uclL|Thlx<;(r)gO{DOFpf^e+1*$*|tg3 zN(xd;XhpKCdR2$&cZm8t!#{5k9)+Wo*@Wx=UXpy@tgIOhs69$1j0s`aLa;EV7iDTB z8vWge3`*0%S97gL>*%_u4{fh0MfGen6ZJlNF$dXM*_qbfGYEW#mzdobn0|lj^QuVK zdjfME$3@QM=0yKVDc5)HrRx9j+vm#jCf1=y-7$EdzIgX6&N>7li%(piOq`fd%48ua zCu&j^{6=CYs3ber@$*)}Z6+z4;iVOsO){VPs^i9y&vNXL(}5kqoU;M#Fo9sw9xHBs{ed3$Mh2S}x7-X_)K+dB>hdS9JQ3JNg{|!?eHzjOU7H1AiUMKr}I+ z!frF%)7Ox$C11~yquOB#3Hgz~e|Zdo%2Y#1n?cC%e@nrR8HR#VcLf1Jk zj0=o+RG+_(EiX2!2td`~gu?h)%Mx@UA_LgsZLXO1XK^ie1;bJG9mSQG#hT;qvgCBU zQPg;;_k{oj{WETpCrcM4A(HYQVY<|Es2X{>{D}H;@wWwOwSl|9*Sqt8vA|-u*<7!{ z@@oWPU2;T`ha!|7z**IxF*$+L#JXit z_jF7#Q)@o$u9!%v!4)F-#|_FF7KgP5<-5k0rW|}RwFsR_xt(B9KQWi&P_zHcqR#7e z{`$iIdP8qKY~QQ^Fg|-5osA`$n8Iu6KFx`$uf7x8-v;m?_F5^`B^S|g#WTR5+e6UC z>osoD3d5|O>HAh|eKV$o1$pSfXYvED_(l&$f%HC%V99*@P=&J(XylaIM1892XfRu( z*52a~rc-a$zP4R0u1Q+38c2dix3Qz^tarof&{{<#;5aRB6TV9l(d&a#-NO_xqfHUV zapNOI=Pce%=g(Mj@sZMSbZVDjV-Vko1BI85Pr*B*aB$qlurzYNgTV1C0r8yxt}1f; zS0@Q-rEV#h6&gLhr5>n6AcF|vag25TQgm0_v^-3OrcirQQbI4719-?{rHjPsmy3ZR zpL!ge9J?|WJO8*JSR#Kw z#qHP?pL*Y|n&W@xf4Wo)f3bbcx9+}Zh(>*Qi*obu5ttZ`_4d(Cdi+2?Qs40jr9kx$ zEQb9;$5?+*4aXFexF;|aQbSMIF;->nK}oF{NX_%*5$u#Q_j{eeo_hwZ@=XxQHj>50O-O9UYHP18mHOJma8u!rSMxdlek`Fp>^{S3#o{`$PQ|+UwWVj)U7p1P; z+M#^q4}2;Mln;c^pN<#gNY8xIixJR%-u2LC0{JTcz3rgQR~(J!P_ z7_mdOCY2m4>mvgSI8_uPV`@4RXop>x@Xd{py6aLJBqW+Mj1APih>{T^_=;ie<1I!BWu~G8U|7B z6NyQGU$*jr3j|$bjhB->ALS4s_6X9>`{jCntnSms#Lrem!duT?qZw~gMJ^Hx>HU6* z&)k9aKE105kC9gsi*~C_If6wghO6Km8a0zXIe7uAT_JBFvv+I}meg;w&3pxEIv*CN zsfZ7Ggzbg98gaxKtNEtQB0DJ_w^VD#*C%X`ZAo)O{fmd910_f@|7Mj`CXK47@Wxfl z_Odh=8*mgeDkW31MqIV3_XXCn{>s?|sM!*_umZLoY~NQ&gm6FI-WE-; zI^3kJtK;zA-0G5>(wM)?__*(qjxJ>BBpFzIVz zt)XO!qL$$}iq(15G=AQeHLgAvmwFy z2pczvi7*za^(E<-au9odt2th>29ahtA#OY7?fh_)l45@>g@eRk))c#zfr{{%>1uz; zbiKC4xNVqw>b}p9?#(OAkjcsZwwm7c5MYy>%K2WL%Rfr%;ytXxOF%C3pMc0RQ66n>U}~yMVV=tD5chiJ}63tILLE}Ey9`r;RfL=1O7 zJ!##*oUJ(Z6WDxA`}VDany(wu3_-3|>K%#L2KDnjILwb6Ca2`0p=yaWB}2@W15HtW z-Gl2Ef+u4*PDGuPV`IZ2mINl$D4WcVabKGyq`V0-O{t49T7uf?yV}ALVHH_Dckpn? zf7J^kU4&Qt6~l9JYD5xQqTIhSf~K}MmHy4mQ3QX&r))w;(SMRyN>Y)Z$O4LFd<&N9 zB{1QdkBymCbX;t1X&Ls(Jqo`18N>nUIKviny(9^F^orx;-!_bK6*b7=taK!kd!Ad0M1 z|4Y1dYBU2HZ@>#k3Z;(zNmxi>;16j zhPlm*?5)M<^x7H;DRw3P2bVI(T#FgP4L?H8tTftgwX%ErWQ z6nwH-zg}_@u&tvUidQ9E@Qd_7caSU2zzz{WZd%%f57@)d0l)lvvw93y@}1xeR{YhU zlw0W9^X~?R>>}WM-|!_+vWyc98HLcJ%<6rCT#q#o2zV*_Z%2DBtb4p}Ufte^%fnYU z@58r|k)FT$VfH^6%Uz$Rk*E*>9xQrtqm;mUYH=BPhbF#>D%ACXo!foi8Fzd=cP3p9 zU;MSw6xO!p*{5HkJOe*JNjOxFT!jLHRSn1|iw<1kNzz&^E_4+?+uBAJLj9dCF8xug zY(~c@FbVA@b7&ISyP`Thl5sr4Jol@lT8nIwPe_I#OQp$Yznn|-7)fh%NAcfbf<*pm zk`k#&he5Xu@u%G}k!l@FfVp-1Gm6qj{rOYveAO4J_GhxMs&}?J3kI&hF{o=9Y;h8r z>KU!qePk1k0+a&c;^RDs(SF#SHR1{YgmiZ2U%u+~=s*66xn*&=h53Ag`MtSr8LLjU z&V)oRgH=Hi6n`xuxF4h1J-l|ErKVHQ5)&_gVN%U$o}dB$2A`laHnoM&RO}D}?G7~- z!dTW2BPGIX3m6-(ubpuqawTtrhk&1ELCUO{;y1~$xe8{s_7`8YzgMc>A^&ho$4OgP zPX@p2#M)oH3sSfh>2`V*4r%Eh5zO+zW_hi$w%>)lV&t=?EmQqk>Zc;QR_YWA%EQk}58JoGU9=&J6hu^Q>b8zh!{`l_do z;kLa-GvNN8D?osFO<>zVI#Q#m$7Iv6_f_bZjVS$B3F&dV66rBbj@^P@x;jD!*DrnGQ-z_ zk;_IKy>W?wyQIzST`)aOo}?+3>2%UZxp$JVdPD8{*CW_HU*gP+I`oNc+4>GY(Z&*D zKz&_ALa1#cnyBynmpjA2cH-t#eM@&gIS z49QanED{s&WnF=1R9ntRmcRBNhCaL>zaNlA0&2-XzHG8mQ&CnOGal&xo@0;T@lG0`Zeq z$pTFcvRnnJZE@ZyWI1TZmKH5)W`|On&rW*1pY8tfjV#E&NiJ@~U<}IF!(I4>tlkNS z30)N~kylD^L{rC=NFV8NZ9le$>^{|{)C1V6|^A)ga z9N1d-owfj{>)4K`Y{g}6_<8QZ1Q<~*_)^xg;eOXw{<{3%Bzwl3i=jW-M27O)dPk`f zPaBWS=u0`Tu8HT^z#wUs=lh&sjmKVGAquWyX0|MpSniR6n3w7w6qx98E#REcVGoh? z`O)-Inj`htYFdkG@Pa;;gJtPl!n#5gpTj)2oD-hIvT}t&;KMi9h|Js1xXM-)Rrsz@GU8Lp(eLDe~|Uoc9)G4p?ZL2X4)puZk?yA^+kyt1?&4>+uTUmSYeHB$qa zp@nRp$->|N*z4MW?qN`Z*B<^8qm5MlEPiN1?}e9^2x~s>{?ybt%)Yww7!p5`JmM`| zApl3_>0aRAQkJD0x{{$?VLOwNSsCT`O|n=S^(+o@csv0WZ)6Dn8LC>?(B@cXoHWlu z$n)3!^sTj&?iIKnV(hhS9QU>C85qw4JhgfG$MY^2Sjd5psJ04?vDGEfxab#}cNG%} z?vsx0RT_k(U+jo>IBCb#I5ip!J~?PXD0VJqAhQ2$%Ku1FlA-rLbjc5Wy4@R~AX=Wb zGsMDSs(r_)1)`P4%JiBDxcuLm8Ih{A{yHuYU3U>l$mEJnS+Hn#PF?Edqqm@&&Fe4v zf_GbM&ag|f@zKpvgVTF^%Fgk_&8yh#s@cnhI945^n%9*6Arxwyt#dA}ANB2hscxxe z=WVs#6-?=+B=Lv8F^gtvH2Qvc!lU;Hky36W-_KGi_21_ zsb3@;rm4RhamZ+DZUz$51_eegwrbrHC&1F^Bs1>$&+!Ur-Sg-=4aFR3T$dJ};&E>p zvgs^BonGZSJ!qmSC@nv(;}P$tOyW< z^ACE8q-IGF({h2cN4O}Kyo;mQcBQ_}+^v5|6tp~k-mn5F0#O4>+zL5t6&lJJBO@A9 z%hzJ&G=&iZH>f})JMb)d%{xPQJ9>!;v34Sq!!n|Ni95ec58N`||NiRzcXlpp@+=zw z<}OiM+P^jS$qK;A)3jdW z1nbc;jE}ARjth2ed*y)ob7UqzYTDH+(+s3L>^eyCleP+(XR~LD{^7F+55PE)Px0QOgKz|1srAzVG`IH(dQB>nk7n@fHBi_NPy)G$3~l*Ad{yR z6ok_@ot_xP`DY@N!>ti8<^1gS_jsRxj?)z}JxVw3j%YR;xYF(3s*XgwenRje_E!S$ zg&{MLQI)DpjWW&*X9vA07n$wZt;sxx#2dtPeO($O0X*L&UhkdyWik&13go)=u*p;l zqT|x4Xdw@qnu*w{m3FXFKj}zHKfR;m83DyLF>7NJ;gs`9b^MJ|(I2|0A}r>GqZm3P z+@EY5S?51E=0jRj}hgxXRa!UjHGu42f2c|iG(#53uq9>ij9H&sMZHcOL zsz=au%Hv>3cpk5C0+=Ao8^Svscsqx=kEgmGvV-RXkUGkl`m&YvrUGPCFj4mWzJ6v- z$f$wTvc$er*QyPgolo5s(FaBDAe%#SUHNQ6G zZ9kM$$G#%5PgH3UVo9vhQsc_}=`8foh0pblseH?ol?4P~#~zD@d=rU11_d%4(<-Vm z8pV7q%g*q#Ii1n_DqVlr2-r9~W4iJEN10f1KM(G|3ATnXo-wb)^Pt{lTi=mc-OuMP zd%wVm7}<^krN}tQQ0-taU3$NgK^%Jg>1B8%4g1Ls4LWjdO~^5Rb9#K1Zho?T@yb}j z2TbK=`6(b?BvH^aF_VhcBwf#F5j(|$DKTUXMe$9Afihx<+&eg%cgx%r(wb17%sDv; z(C0p!7QW0wbLG?LtoSIQUxpTdb-}CT9Q!#N-lY}C)Jr$*K${(*l$ti`z%uK++5z1; z)6Db}<{zlFoDc49%cC2wH$NI;EM3@Neg_92U^h~R#lHdH(3lf-3dT0jLa=^;3Uk#B zUUQDDMtwXveFo)P`cVPezuiuD?eW_N%;n~mUM0fTH*4Ws&h6DjtN9m$x|4$*&y-m+_r_8>8G$! zWr1L;V}(_3jIYvkvMVd!fSTkVEWPg|8eE>)(W31x+pkAyZHg)WwVks%N)%;OQOk24 zJWJ)}~? z5F4*wW8)n^m@A959{Qy1h}0OgRC`;3xC~!5JmeJ9+DULK*Z7H*0Eo}F$R~rZZL{}c zp}i1-uw4VKD(c2wilkS;y5A*I144Kz#VyB4FdUgkiL==#Q9t}8jVvOqoX-PMRB~c3 zhGIL$>$D}Q^p-g3`a9?$v9B(lzgT zGamRc{7B<=L;8kBbCGF-L}w?Ole(ZcyVb?$MeZc*%YseuUKCuHH!xiu$U&_yd)>O zb4TTLIkYqJKDa}tbK{IdOUTH4J@*9KsZc7dSq0tt0H)lP1Px8~IgK}Zu^E=xv1!c5UDqiI>df@5PS6@Zru?f&Lh2Y< z4orTwA4KY|Ab|*P)Fu!)>LLc%HX8~##m6p7{L~J>5dy0wgum+#I|!+E$?11h_A%wL z4jCXT?s9VMz`Sx_;X?%$(py8Yp2(#jYCCUivA_#KXSnRuF4kgMQf_kMjIb*ln9h4a9Ro?y7L6JhwDlQtVi;DqB(u*l) zxy;pk^pl=Td{E~uv6z@x!cN}k=%}}W`DDMPWDVt;L6hqso---f#qsfbtMf#Yv+n+f zZe_jX|AIfZq!xg*hNZp`v+tk<>-@WJ6N{D1I>rCzH5K2|@er*vC(Ti{f?U6OHju z`f;oxny~A=6?xoa$gI%5>61p6arflBl__G=_JSpSjo=VO zGPo8vNgbk5Xt7}|B&`*WnFh?;`FS#c%#e*|(z}kA!R8c#+#q1%71Bs)2mEg%cZgIZ zhbPduWc2NSuE`~d=FGW_lqtnac1ZkG&r*<|p+`on#!TN1 z8@je?ApA>&HsgEj)6Hr_E2 ziU3vk>*|mnAqKN}XgJ4`_`D*4pB*Kdx~8vfvOTxw-TAU{GVNod86+qVNqb|v#~k0d z2}p%13i&rBf0vt}yw)r!l~altt$3lRX;CJq>@fF{vvBqwo*KU?Z1xAS_Xgp(_E|Ko zu7-u_8My_Y`WR7qamHSbh7{YhDA1x=U5%)$>;)vT6u6r@@j%wfS(rBd?)`f~>J&=c z#J}Nwe&m&;08({io%_DAm29R+c9P&3Mxd{vVV!bVpN;%@Z~l7-(C+OPxHTwoN0x`^ z7k{L|io(d$Q1%c2u}2V-!ap+z9R~ho9ZVykZkT*`$T*oqrvovwZU1<9oG`}DHd0pp#Xiu z*n}GwGpK6~Yj7>n*Mfb3qDJEw2McL4M&v*rkGmm(mn~sP0muW;$0O(&WUTbQtC4mEDZofZ1Vb8b2`78F5C?`Oy_Fq?v(??RX>vUgyVj+=VDLf8s83% zVmt$fmMD1(w$PR2Q>m2O{%D<_#ljiWjYB$&0;^{h0ex$@BsJw8(dA@t9ze(2-QmbD zUQHUE&$!fLC(0}?8DZU19EpKYu@BKGC;roXT;cr{+!>fUco02|OjJ{~(;-w6GriP&G@LJbx z8EwZb4X1yRA@Mku>N0CNeOdVnDbVpB=FWe4`*Eyh0+ed++;4ua?hEHre{x7Br7q*u zGy@O(+$ZtxPf4%ftX8Mv(Rc2aRH`KrSa?7GHjWco#W z`Ft@pVYZOo;2R<86acFST)JaBg8G_f_2e7w)hGQ493&X!w%T%6p(TJGq(rrRa9r+M zkUsR^+y?&+>Dhv{E9;rv3I{jp?UqS@qJ2qsJw2;lB-xUp2`W!+ZtkJxo9y9}DsvpB zmjl25Fwgn?n9*U_lh|GU>hGD#yP#F2@#WVJW0qY*x1m3Si5-5o_k*`YM3M-7`)j(F zS$Jjo6)^H_`MrcsYbM5|wWGCGo1;;$*kFU$&_*022>U4BvxP@t9(~#gZ|L5{gB{VIJsM46gwYT9TF?iaA>%Vh zSumhC9A;DjG|H_m5CES9jA}sp^{wqVH(sqiHCK{;trzdHJBb0d#%C|=AX>+mhWNv{ z-A=Yw)mR2v7?UlJ>w=^f$;_s>j>?pz#CqV@O{R%ET@tB7)X~c?78Xa%OfMPwDUllv zJU;KbJ3BccQR2q~Dzaq3B1!K!;GNSB_x-v7PJ6SLgvymg7_VGNL&SO(IZiA3z}IX?d-*!2F*I{!A;gtQ89OlQ*6zHro?no#Jf zqIU&I+@|5sCet}ph$Gd`R>FjYYBd|%dXYWq3(s_P18N>^JuVQY8J63*Oo@nwK;R$_ zm@dr~5+&nYw6wlkBl;}Exte(S_73U4>}}Z$sI{4k#AdNlbFl%;(NaT%`ak<-R)BaJ!n|9-(7OgnzXVBkv< z3^A$oH9|{xi+k)&u4@GQs7Q3HeWpFPS@MU`du)N|+yRZfoJ{PiJB{08whyK%tLz~8^&;F;}the*PpYBCQ!u z2Jho)Ixc3qPqwG~&zxciug=d@ED(=C+I?D66CY^ydd!VrU~}_o`3Dk!x>H~9@^bm` z-o&bGjft$uGc2s{#53tr0wDV*7gU0<7=C|#nyjlk8oerJHuAA(b}+*-;O^ig!%jM- zn7=ZGFtOg2nG98_IN72z@@2Z9&D%;rfUu|D7-z*({S)PTZNZK8x7#8^mopU6>vU+w zRyEv8&Vk05UzcVlxgo3d8RX-Fh3174Ken#qpM(0)P@t3n(`xefb5QA*+ovp8Xt2nK z6GUxogWP?w5yRkWORZ>9TjE8nR_WX0wco#i{$M+Va_#U6h&Q(fB2lNNr%9?~59#ok zrH+x*G_wAwU*w69U>!ygyJUXMVCq5f_{{ocy!?gmG1ayNlLoOW4U6h|f+59}Yq==F zray&RV-Iz`aD~yXX6B!`pZI5nH$AWhv!5H%Z8fw%q_Sm84vf%;(qt~M7C05L2i>f1 z8cUAeKZ=~)C#f{tY=$G~G%^qHF>1|q>;$P7rUuh5m>9mZ z3mF@Zsh{S{G7tefd~m8>v9}K`2FP?WDW^vV=EvJLxZUOn z&G&DR!AtHdW-Wk&!P%piY{mDk5pmpaCBnzo=#116dO%Vl(p{)ineojLa~^)T+DL~Q z0EF=?4PEzt`3+sS%)@s0EP^K3*1^MgZ8(N(Qg70!0d)+}C(tcJ0T2}=TE_TwU%Rd) zdW-3XN(TY0Nm@JA!aiChD>pcSJy38Ehobfs-LMS*ABNO%ENp*XtPj;(96B;%BEPp` zY{9PLW-^ES(B0WV)R2GW;n7*>#4pIljbi#n*v*GWJKqZh_{ndsMf)sGbA^-fryx+p{vEPGW0H{?X{s6lr2=$B)$s=R|dI1D= zp#P5Q3p)th_cf^s5pa3~KxEo@06|^n?)OjjjYR=dsvY~n`>2;0`B*Hp6&z=+jN1BW z)F!6wVjYzDm@3rpKy{`!^5zjBGS;UaXW6vjcz*cc!)f&)s3|lkQM2%KYvdtkv&g77 zt)`6c0(g{J1#-JHcJe{&%h^(BwD9Aex8e_t4<|1+Sec@%auJKncAr;bhir&qaXKtV`asT6{^3nvlY+4Hq9J0 z%c8;Jm1(OyD2hcR=bH1irFX(dV8qu#ag*z((p=uSuI$X%J%;#iAC~_#*T5I!f4Dwk z^O4eu=h_jd+B_xddatGby4xoM#zpaELtk*JsN5p=9u0o_%>4Uyiy;utlj_vs>n+up z^Z*Cq8sJesX`1f6@;tQ8Kn_87-Ln4Y3qSV9g#-;>h2uRk4)h1?@!b6!ms72}3<8sY z>C4IrtlB#}Cjh~!d5&C?k879{dSPIIRgz~0VLSEFyQ8nYy?Er?5>*=z0Lu?PSmc(L z{uN{UJ=?@eskVD81sWh``_snjVM867v0zVGKeq(>COA~#GA=MJT<82@nsinFCvp5& zwqP0lHjJ$Dw@rz;eMglp^;Gz36xyqDxBZ9%OW!k(eq=j>B$=rG0*pikSs3Kkhs zO=(>ku(%sLIyzbmxO;pIv1ITN0pti%glMC?)8_$0`NGarX&kpS}jt34e1FJf)X z&s+6v(e#z&B`%+4!n;0pE6pC>P!hz86yjBox|HJ#>_>50acNkcoPHv?weSf)Smesm zf4o6FZ|+}#sIxr)rCk}p^Hq1>JZW!ZCuM2Z39!2MD^|hB45*Drw@nOBg1^sG{R#IL zF7MB|dt|f?bc&@^fO6H=yk=JO=4ne?n=j;Lw!X^REilDpsp11L2ZH?HXFwcZJA{W3 zz4j|Pj>V!9Tf|)m_?)E4G+c-I@v-!JbC>FO)Uwc>bT#^|9CP=r|0tmR*BqOekJ#Xc zaryhEhZMob(9&jWVT`YnI6WvZK)${w|8(DYS>E`x;(IgcKAM6}(nu~j*<66KCovk( z<<~t82p<7E?#_5xOLOzkT)A4)^8DL2K%>43pw&d%!>*4^X{!mH=gnGLTVv4u?w{;# z+ziy`Vr-cLIYt8GV4W(6et6*H^C?2^Gz2cay1w4?bMwx-!PIzoSpP@RcO{_R13YCpovA>$C~z<~ zrYcKOicNb8@T&j;x>T_cExw*6!0H8>(cc;-8z1AttrNAd`}S$92O^(%fPo~0ww$6_sSTU2a;+Juut(Iq|v-M z?{~Jq-%B3%OU|mp@2js4?*P#AM7D{=1po6kKlzCj*?p+IQL4+Y&}GCiUx&q!ZV>M6 zhhOg9$G!TR?9tCFiw{pK1S$8yFR@B+&XW57y?X2}x&J~f*exJhhg()dZ@eMAWFNZO zSjZHz*$787DUbzf>LJ(5(2KE>C)3vDy2i$m8$~fOajH~R6|O*;KWf$pdrJGyHF?&s z`+kqky`1o;wvVn)N*|E@#!;Z?0XGbNh49dg6;ELP$dYf=fyC#i`a~*&iFw8J12zqP zQV$D&bNv5V1mA&7#SqY>Pp9bizbO4PYYE;!ks)E!Anv>RWo1Q>d5^M^hAMbA0S!Iz zzOm3!`)`O1PI>fc*TF$K6vGPVj0JJu_IOv)n+pJW*O1;WR`8OU?Axlae@RWNfdI%> z1sUj0BqlwqoZ*48|GXr8=dw4(oKpe^K^8FM&OYDZMt0kgwP3&vz3PO9f*KAUtdFx! z5W4h8FlSEoEIN#UB{!?-;O8^hD`t}okWsKt`P^rNQEboJZ?V9I0AwvCh*9e^9>lYW zAAwO1p@0sH*~ry9=j|tZ;sD`|7vt!sZJgkAV7zA5BINI#J9V30W*?~ywC^4}P|MhD#Y-{0> z?Tj3@(6Q;q`+IHe(}JY={B>3`fB&Ob-$Qp_E&hd{$y$xw98LIj3J_LUhyPX5y{&1k>+;(9ikHBRfA8+fJx&ke_ro*V?Tzo7Cv$}Oe_>5cU9ZW0QCkk6p1VN| z++0!sbC%%dkMgLHAgHB(e_D7?-!&c*?05HRAWL^uZvXSRwe@7VA=MxN(F>T94-_ov zK5oYee>91(2AxuD20qYj`T-9fhFjck-y<-Ph_DV3ic$FfzyvNN4HX^b21T2w{{gI{ 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 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 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 zcmV-XC$89uP)B`La-uHLE-|zQK-nrh^m-)^Tyh8xBF7?jxyk#zFmH<@# zbL+~L1H)EyryvTzm3IhYsa#rlfGd>bgsFRvA9@aO1B4*e2tWZEFn)XWx=RKv>jz4y z-le`6D!>G)j(C%b-&K9qSwhzztlzxvmE_F(|LyGA3BUoxTzX4gF2&7yBXutxZTB$Wl3-CPHQbGh3 z;Hzpp9t2*2l*&m#<^Q<=zMv3US_Gld*8z7IrsaQv62Jh$K&<>`0~b@d3ui5=R-apG zkSMByTm4y5`(D-fZBq8Y#bzFfKt@d5z_?t*0HQwk=RXArP!Rt>yd3Vrv=Pg z?kYEO4dr5s_N9X4CA{Tht!f#8RwHY=lR&FB0agpVfQy~mTU`Y~~q9lJnOIr!xgK$ZWoe9^3El=uCo zKPdtK?I3oS!dwIx+_;$+{^9THI|Bq9BwE}HShMR=%y1ZS-G+-JZy^wuimVvfb!j64 zsJP7L7f-Mv5pdl_vpDK42;%(LL^?|VB>_o+? z0V-^PMQsGi+ul}al_A@(0i@++RSTqe#4pT9zOowipVQx}jj17dWyY6#jO*7DNT8V4`$`-9TAju5IP*>dj!OB_@Je z3kBER4XnRbi5{2f6*kEp2gfRow0qnnI-}{HFfekesadvV0KOeELI~DAEL0po+?LjA zd?d%|Em^WL@4kW1^1@36m|mXXw3EQdDSFSCjJy=~2|+r7hkCoZ108b%i}f)LB|z|n zjwKwtJjL9gLw{%)+hgakJTg)h%9NAfRO&FtA_sVBr z?cBQgfcaOadL3TBCWQ){?CiaozR)rNa+0YEfT>N^#5Xe>UB~{}XE}VuY1TX&Vc@9M z06uwBx#z8LwWtDsz;0l*<##OM^=s#dM7z15_bNbLELjP#Kt^Ce0*F)hWrwd$qQaVOJ(mD3HtCYpY$oo%KE4gX=J@5Oh)l+a zP8l5nNER&+of~C`cLPiGN?9aO%4R#cK1X7Cj?G;=5gc;jv{i^9z({Npv(6Z&E=jTB z;aErF2XBXJD$@Z~vx5C}tFsrTh+Ex6jEFDxrD9;s1ak7Rz?G3T9AEJoiDg;h zXUs*z`-{OokaI-<6>eaSgphQB-F z4RwSQ|Lc$JcyF~n}D#3|Dp>f%27EKE& zkpfCPDCLqKunCXpHx-P?DX$epa1()vz z7XQyhu*ooki5ck76$HPsQB#>CQOF<`0T+iH8MJZ=_yV>`xKd}$)@rvRp-*eDGLNuLJ&GDXytl6g%pT#a06T)j3)?{ zhM@$AAa6u!-w+JHZWalzR?ngiaOz_A5T@REjnNmMYe=#kEe9v)$4s(2)0nXkhO!W4;*g@GZL2B| zFPHiKgwTXRAR`Ilk6Eac+Y~s9O^3HjNVCU}F!|c6*s0_^dnkI$TQ7&oY~}$aYQS}B zYD|@c?tcxD{Iw)u-H%ols4y;RY?6RmGi6Du5SEIgFhL+KvzTuP;h!2vNzco3<)@!} zdmueA&eZF#lAai&29LBQ0oqalC1N`t%Pq43s$JI0n%F-X60m!YnkfO}pc$lWC&&#R|G#Iso8ewer&w<4nD=pY+6dM^#Fp#h=Vq z0tEZwy3%kk)?O2ZOZwwyi0T0%st*N(lvNQI2u1;IG9={;a?m02`zQJqb{yzkY+_(BSvYrwxn~VRE;O<7}BEss^!C9Fu5? zC*a~>s{|P)$tLGe-wRTKzUyop^&gI8+w zEUB?GBu<@JfcMp^)ov`U%|_zCJS!O2tpvK!u=Xotf2io2-Si68xdm@Mxc~Q0Jm)lZM8#4g|uk0*`t&30213Km-GzHnSPficb?(o zMw_WYx8zyzS;g=Xlg%$$ta~ccw7y;%Nh#945m@=GVko%XICs=?>4`dYM~Z|ro7T*x z4N_TEb{0?N14_!zGHG(j1a>k(c4n#s@ccD1;PT)nk{sV`6E$OO?ApQh$a+@A))O`2 z9GrWJ)Ifq)`uFnUjuZ6UsJZT+qioz~b=(3u>aJnGvz4S2)7)b!$yQ@OYxS{t5S?n9 zNL$+u4upbR5#^>KjP%>A?$6O3t!+chrVI{`Tb!6Qt3J<8CdtlDd!LyZ#Ifs+;gu`0 z?7k&Mw0D48mVK0W^}B06s8$8;29Gu)F))Jn*UgY}*s!hOb5E&GAWMJmkEe zhnyQpsyHZEyE?|&RZ)(fN^$I@mqQtKlH8~tIqzNmD};?08A;UbZ?G~t!fk6m&Cezu;jyd#g~_!J zxBic=wmJT%>RP_R?U)0--2Cok+v;l0am0p*f${lv*SE)n9nwCDF;Mt^94?;3x@ z?mJRk_mybN;D0&vJ3L`t&-IrN^51`N3*B8N3YeO+E4XIImL5L0rH9YlxrzVs#RGh0 z@9*+j_CoGV{pEt&39V-Zm-hz{soM2>{ZNkWD>Ja|eQ?Fceb8rX57lwN$$2W~{hxvK zELSHU0E9QrhME??*_iP7ohe4*YkBvw50Q~MKf_2WeB_c?hLnzKFua0mhHhrhwclgI z3npuyYrc%~A7a1Bp6HGI@g3{A>D@!PN->>q>VhPGR?L6B>pXt&`ke;dXg8U9p7VJz#su?%@F4$SF=3x>U z&6(-us)S#DUk0Nm#8rbIA}g~sQlz9tBCV8U9F4>_vNFAzXFqX@b0m7Kr! zQuH8H(4(jxLze&;o4YRL*%c=^cx{f2k6U%uDW$vk>dMb@$@T%R-Q|N{$f}Xbtk|+_ zD6b2f_w$;a{k(82!+oJYWb5m{PSlxOkcfiW3e`xUK}4;^8yUzEwQM;5{g9dt>JM*a zb1Cmr(P~Dj9BwY~u8$Bu{dqR7$a3(ERd-sW+Z?1zSRPqb;Qr#;=ZUyPr&Xp*N$KIb zajT2oa4)AXO|a?l`uwt||NUgT`?>j=A*RzF#fehhyOo!lQ#~DuV$p3r^In9Tt{UXU zQ#N}BKgfH}eyc5jrNMX1W+L*zK#*#X5VBz?14HY)1IjYf#bM-9kew~9{c1!20z_jl zvW;!&0~|V2p94pC*u<J!`$Ab{4|-l+K)fvPeTT&G1$ zH009LWkdf8$V}yg0LBa9;v&bGaeacvTq$%3`d!^6=+aOQOJ`oBZ9&K)cK?7gW!8r zF^CJRS4MedY&{dPRScv~HfQ8jsk@a{jlked&4z+|qBdw3B2h?BKza&t$;z}8)eQFs zWO1wuEa-~5BvW99DwKlNNrl%dFtmeZ)L;0?=qhwPL?|9&+ScBS z4dp#RD~}kI^0Kp(DzyPhMUGDZ-r*ea?hrbj<3!&!27Ll($p5N&m#`%pATZjhf9mP7 z!Ehlv1v3+#fmgC4Q7xt~l@?ez6^eifD~23KCybhtH8h~J*ggSh~Xl&IC(smy00y13*dM@A(ZN&saU=y-@}(SYHlX({bf zo-Rm$a$7+1{dMymfGda+zpla~K^+UDLPndJ(W*T+P^x*$b;`rtY?j>k5g43<#0f9D zr^|q^B>|`*{`27H(*B|6QaAiN^s>R+P6t$)ENL7x1_p*wxJm_7aiu;lihuFx&c(q& zeAN;ft>2*}CJA&b%*mWd+%!;1`$dfkrOR|t6}HWn#7RN+cv2vlbI@^xvRXRYp|dKW zTDS1vi|oWK>G4q}wBtQ-?l6SH9ub&U84=X51EdP~JGLJ$$bt!@V+Qroy?YO7EW=xC ztw3uRrQ8DWx=L}1s$z4Bc*D~alb{BFuIuvB$kfZ|SctP?VA=*zQ)6jWd}nZB%Y4t$ zrWgtrg$<-#aFl_LyPS9G$vW>>)VJl@N(-;dCR5^~$|81|$#HTCFGw*prF~8XRL1iF zTwgiom2!EOLU~uSdx#jlJtpx{jXf+FS{1+#8sa(+e6^U2l)8Y3 z_UKStRy5-;`s|Bs#rmXO zH?Y(TkV3Gc&>+Hf$xM#nWHN;bC6bz{8BO1i>#cO*<5o%m)xiD8e_S8@F-d?J6 z#^HxePJhxNV#H9&#UWK91**E_RkV*m6eT9M`}PBMDX1}abd&Z$BCw=+Xw-xA~ClU2M{R@1{IEu6PL`yC~huS zVNJjGYKY5!Ap@4>i}_s9AZ(QYusn9Ka~yctYO3CS^?ep|@3B!^6(QY?R$XM7#wA@@ ztxRcEvNsQtFnxfDNpl)0?lI2VDm^UsaI;fjQ@YxA2G{ zW5Z?7-QU(Z2{IoEP~?hYg9k(q$0jp5j@Y@XmAZ!xn4EuQmUvg#)BohanXB#zsH!Ho z2fEqq4bRSyn9Xr`zu9zrYyJNUbNCChgnN6ibeOp6!c}QHAyW<*Vjlw?P1^R7^TKvXf(oovX_U&pZ<5`dbqaUI9iN=muxTCxiwBV03}mRU}z4WM-#r3O(@=wp;80D~|JqhJT*NHOD{py#_T zecuSRwD`CE-KY5C=boe|1R)c86eI*v;t_?emkQiSkgh zu?Q)?!bzu^T8y*D4W4<(;jF;Lxr4fYH;NpRDE1Ihp$0kg{kUwPHRI5|k1 zW$yzPqsNT8dcWEgIiMN2E6l{7o+Q03L9bqqr6NA)@v1g}i%mjKlAJzC|K}}Y-wCy> zcZZMf}itl{tOAK2OF`(Oz38lm{3~ebApQ#|CAnF^a;zGuSvuXIHFMo>RWBc0P z>l5ZF0h&!PsHO@I|J(#^bJ;H)fzUb#_xar4+gJr;rXY2Mz27l7@}k+4?yok+@N1gk zk4KpMojIm&e;%tRPE0K$qWXRP@7?8)BEuvp8O8h;SoXyT`h;q^BS-$a%e--X0` zzB(Zo&j@`FTd0{j8&)k`J9ppD@X>ud_}h1LXy>&I8_;KZ9A7>WM_|fRO~<>7t&#-DtEBNx4gXKwj4KfmU~ z#0`JZRT2Dzzdj#h0g zzAQNa7aP%;oqBPzT&>Ol$ZEkBfAMt^m3hv##oE9+i_s$3FWK8jN{mC!IyM+bi0dTl z^%3GKxu5`BrqCM`278MhKq?K>NzF_`EkTJeKb34YPh<4~Z{}r>I`82bXBW>nyGpm^ z+@eQzxv`ha^j>~JKi1L380>M`IP9=;pmuFz&W2;728T`=Br|HkB+02&!of{0>9UHm z;ggDuZ)hT^`AUUOs{qw{Tect=hgr`T-Mcuf*Rx}54}W^oD$d{1&AWFEdIJ{Wr_WCC z((AK4_><+_`}|crARp!~zQB4pJTHM43ky3p+YI)&u| zY~1@zHV)75+HsTDju{;V{<+H>e*6K4sR3_o213i|4=qOlZzNtSd~f@UnyYpjtbbj% zDHYC<8`uozJ*MBwz2<*l>&9-r^4puZ{Gz_X-=^m50=ZtWwU-OF_Hf(Ht9kmxX+HnA z{rusfd-!zr9_YzhD~GxF z$|5@I5*#MvZ_!=BwDjBFNRK*5|g&jvJWy-s5TSHE3zVx#{V)@y# z?8v;(lnrc|c;F9jgkS!j-nMdLvJ_}(z%9!*z%TzfJ%9ImoWI`T<-@J3gMC-JeD~LF zF6gMx1(K-<7P4uHoDIUjF_w89woU7KRASR&Qul9eiooAF^(3H+Ot= zwO=F|JU>pA*cKJXv*fd51wMK6FbBtNzGVJq{^HQBO^tEKdK)VigB$;&x2>FT=OUw?$M0wSB*p0o!krx_L)&l63S1O ze}oO|x>z<8W;!cnM~D>Uf1ssI*_ko<3|ZI9r;2xl*t)5k2i@Db&L@EC6BahCav&Um z_3whz1SOrNY89naR40`Y!S-tz$b6evL`bC@ukP73!l`Y-&YoSMa%3b|%!Vt^E>qPd zQK4t5z}om04yN|<%tsTf`MlXQ!>i6o0BQOKNwb^%%dg~y4P8uSRWV6Fn3t_oK^m0v zgam2=#Z`V=8W>p>llAS^7lHu?`Ff3~vM{1?f~30;qD(lt^vx1?XQ17OWT& z4j*s4tS{W?(iMucBC?vS%vGG9Sdx%h<#;j)sKNYlZ0tIp{pUZ$?2ynsraBfF>sTl_ zFCmU~Z$-yKM7k`d952CLNq`8X#u+jMYvcoEQm$7c(A^V4$HN@!-Cmafdin%naj!Tv zn1~uAfMzR`imV7d{dD(EqmDOLu%~wj{ow(xL_JucT!RoOHHE9z%Jy1)SOy%~<#OQ< z^|=cKRSyN%RtLxW&qv2Y=!nI%J3C?TN##qUcbmRBTsZ14hho%vC9 z{U7y;NC{bx8E;&cR&l6O72xy4U@4+q%`I(exiDmQk(Jr9S{NzzD^RuTd8)NZaFx(y zbuqP}v!U|V4vuW%g{f#CIu>GD42s17+OL)KX0Cje5LJBxL0rE)Qx(fJ1s5IniX_Wv zy>ND6)K93lXCU8nvT8bd4MVU5{IXUd+D4g;7x&b5!8E`ygq)f!Er-aToLVIJ9J@A$PGj9i!Kdew7q4T=W=YE8& z?V@7}Wf?VXl2lrGGfJHT(=IDWkt%|xMul=oWs-Ou%t(3F$xR&9W*OkBBsNuQV#f?LI8@Y#S4Y) zC#A?KO;&`ID;ROjy2+PnjxC+UlK{DKn3?v9Q>~CsfI;wU*a77|2^`ytBV<#cJpyaA z+~K5Grk<8@3~aRW3q<|$^zzcQazZF^hNO6!sx3Lt8BC+I8BEQGf>m>_;Lz+buSn9; zWDQMLdte*lSBnQ~^h*wm4C0^y^`Q#HP#6(~IGVL%FV-Ey?3|)|KtS8z&O(k-Pej+D zYLU_cRSB$;z~q=}$a8~-l_vpof}|v|R0va<7)n>KO|0UXxbE2OkIHUF??Y7>K!z@@Z6^=xyCI&>6fHhE1c&>38n@oivLT?$kUL5P2d zW|4VZf&Rmt5c~@g3N9LC?|b?$_}a(*2Fov!bOS|_Dp(&^qeMyqg_4F3fbGByd+uqR zhJH-3^=f?44`6#Gx0?F3i4|rycuL;{$7b{mm-Jk7SwR~gQM|N8{2m2C0VJh;B2<}# zl`5u4UK090hhD54LwiSW%-aU2tq!hy_C6l?(C5gkT!&?NRk9h1MUtuvh+rTvSS1_v zZMvKT?(`H_J#$|}>QB$X(N`2}cLAX;k9F)>j}UYd1d#t2F;Ee&BT8nPL(ewPbHjTS z`|lD$I)tG#qOuS;SXRVkrm<-K^Hi) zo_na=`UIdOUU91Oj;|$omP60L+<5cn{>0D1wy!IW-XTPF9HnB|Y7QY=vrhpP+Ykzq zF0_Pj#3q->u<2{6;TU8gRDcl*<7P80se{c29_6M7{)|U%`5ePxPZaiOu<+NuT@H>BoGU3tNKF2B( z;-;qp`l>WZD31lC9XOSNs~^0FkAD64n-V?2$IXqx&;CJk$?c~xLwI$G8c;ori&LEp z%)Y_t=Tp4$9o1Ggur&u4{ujl*znwt$hKcGvzeIf*Hgh;6ar~wg-cSrIVpw#cy!H?{ z;xO$VVcGX{tol~-2ksbMJt)J3nGUG{BOJk6yAdZbhihkBQU@P-?626AJjHkK{5(#i zn<2~NbX5a{v|k~cOU?3|U;YEmf9l&XxS}S|^*A!?z}{~NTmPNVf8HoWMj+G=+Ne&k zb`sL3ab`z3{!|ag_w*7PY+t{Ia&XC?3dermMQw2C(Q7dL)^$)O0m^2SlR0MGV~l*i zkKr#WXmT7n6vl{mlbaarTvo8QEX-&OGa75lVBB@=SuVKy7kU2rkF)>Eo0%CJCaNK- zi#KEi5-vo>PI1ki@3HfdzbBlUh2fEwq)xT#jh{gGAsE`8VetIZKn#p9m~jx>>sR1p z$WCV%e<{M5=hon4A+mD*ZdPO#`tBCSZ-Lnl&JtDwMD-vRv5HWz;Ez*-F#;$Uf}u#mRaFZHv@9&R zOR-9{krc>fn)+Tt0!X_ii9@dvUO9rcLLK4kc7a|jI4y>8)LW_C_!%;%j*xQK&z}HJ zI^A?nj^RA`kA#L+wrqi`CWqgSVL4wUmaNpMgT9-~lA504mCOoKV$Gib0QP5x*qi}`-5g{^u7@D`EG588flH%?~a{$ z@Wr|5zz1KlPBK6Mdc;{M-mjYKQoP=Ya+B-A7d&;(t;pIm;K`9Va0j~dr3@~>j zoj!CVefpn)xF42yhX9t=<=}OuodqU@m@dA?S9U@pd zVE`Yyj1T;@PY5X=W2c%C7`#FI1d#+H6wd*9=UQ44AnSuZ=MzA(ObwLS0FM91r2ogP ze`Cm(2JaBS(vko{sh$pea@ABo@CFG`j~M{}9r3@kE;oRw?E`NIxxZWjNWe{S{4bXm nw!CvK9SIO*?BJ&)4)Fg0ZJ{Jc`WSCd00000NkvXXu0mjfPrG5R 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 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 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 111/241] 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 112/241] 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 113/241] 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 114/241] 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 115/241] 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 116/241] 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 117/241] 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 118/241] 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 119/241] 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 120/241] 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 121/241] 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 125/241] 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 126/241] 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 127/241] 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 128/241] 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 129/241] 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 130/241] 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 131/241] 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 132/241] 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 133/241] 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 134/241] 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 135/241] 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 136/241] 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 137/241] 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 138/241] 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 139/241] 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 140/241] 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 141/241] 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 142/241] 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 143/241] 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 144/241] 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 145/241] 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 146/241] 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 147/241] 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 148/241] 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 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 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 122/241] 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 123/241] 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 124/241] 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 107/241] 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 108/241] 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 109/241] 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 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 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 zcmVPx#AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_000K@ zNkl*ECJLtZ5NddR0`TAw6)X3 zq`ehwV;{Du)wB<&Os$wYRZ&}Q(h&VnKte4WYcfg*0ZPJ%NkbCn&32r`FR|n6>-b*V z_nv*|gw$<_O%qg_`g}b{=lPvS=RAMlbA7Idpr$6+?zP4|X!BqG296(lNWam`)_*3q zzwidLeWsS7^l2_m&vTm}dID9~v9pvTKnUe{9o_UIzu}<*aC6wt000FLh8w@bdo<0L zKNNuOV@#VhflVd_U{SyVFh*G+XhnvhW{Q|;x%A&0OKL%*_`5b~EeADeN zc~KO_hK#C05Jmmf*Ix6>vg~IF@tdYONC@!{o%qfXLxYgzfQ%g$vkNcbEWi*m7dyee zL-kys?YDBw^Dn$$MW3_YQ-4pam%?42vAqoNr!@x9)5Jfv!mVsci0Tj@69RML(&R|Un2y473+5W>X6$*vG z)bw=r@ZrP$vz^s{D`S3TOymvw+&E@F1<=y$1L660#pyiaRFrl}k_f{vU>OEBn++Vt zf-nT8Sp+~JiUL@cg(!*urI2MArDbIZ)~&|EbQBG(Peapmbaj1z@XUZi4sjDY3$pL`3Vi{>}-u5ltCjLlqxz=+W2eViNKtTur%d)U63x<(Lv1o$hI7pHM zcF_)w;~>its;a8s^?Jc^9P)b);8b@nCTHUa44sD{2=MuQn3|k~|5hKQc@t(CUVXCp zNw5ImE^&W*&z`++w(Qth;dIIn?RJQQ03%<3X__#MJo1G+CsvH=*}(H%2DLac5-w9|;O?K}8`z}Sp7JUncC0wBv`Br?|) z4u_O{fs%=dF?c)`n4BC#LtQQ0t`e+RxdM-F+zJ8;r&0n#&mk6%VP+|G$bT#vjaH8bMuQ81EjRrS|pWo2)+wzlfJuIrkng%%f6k()OM?zZRM zZz#*o#rpbssgT!6Q&ZFA@~WC~*?EV3VCRn)|JoaUvF=3Pghn}vOPUL(fRrL8A@rvFpN+2&D{i+ zSJgDIEJ;=^udYg`Q=`i&Dz@6~_H#UMYp$=a>$ThM-iG?x>p9&Z^>wxH4h;?EipBhu z8y{WEFD)%OX2R2gVd%+JDs`-~vhwtyLx&2vTrS(w(=)27>RcoeF_)H>{-yBlCh(UF z=T9XPaS+1yM5B=ZX)HsSwzge?SUj=jz=7vdv$J#kk3YUU@yhYz zlUufI7P`CsG{N&c>FDS%HgDd{bai!w7Zw)ADW!TS6uM{C-vx-rV-x_oyD!`V09Dma z&&@@sujPv$f|{Ju=^7ju7+98w$2CP!l9Ft%Yi(_dbar;CP3s!#D5aM+ZQ8Vw=Xw6* z$&*urkon=^Ve5Xg=AN@46q+sqz~!Ecg8;C4%_9qaeOFNKDPKHs;05UK!G%YYOEipM%F*Z6g zIXW{iD=;xSFfhf*n(P1o03~!qSaf7zbY(hiZ)9m^c>ppnF*GeOF)cAUR53L=G&MRf aH7hVNIxsNi?vvL50000Px#AY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF* zm;eA5Z<1fdMgRZ+24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_000UG zNklJQlO-&FYLMc)O zEsa&t4@Fq2Do`H+2_nIy1yYqZQPe4Z1fh!5X`F!Vu}w^qaqPsg;|Ctk_|D_b%zd8c zK703rjTM<-EVchH>)ZbS_FC(#b++L4B!CYAk9Br-KDKr1*1?@Sce44zn+cvcUhH>YRIWj%YftY@xF>*=X0 z`qG7q`ti>`u7T|UpSzET$G>lM-|BGVcbIPiet+f4l_Zl%48x$=Y*MLIXfztsYIPco z2CY`>M*Qap zbai!M7zT|-1J`wtQj)L}I7tW7G*LPRG*K8aJGa1-yPlkWq5rZToikR7RV?!t;z99n z^vmA{kOw|#7{<<#k&%x-{@KT!`|iD$_V#vyARr7w;yA{#EPUT5kw}nErazwt%n&Gu{_w?apvb=uo3gt$~^xQJ@l`1OMw3aTzKm9%VW<=TnBNo?k zJxdQY5q#}sb?8P3PMtcX+uPe|HJWsEbdYi!E?&9>fake{p^qU1cl7shajMG9)kTI^ zccPV|fuNG=Bh~^pj_@0GQp6Nq{A)U%`w4vs!PKyU&cw5S@Q%@g1@u$n1y+fKtOFRf zZG(p1-d^&B0+Ey`rD(NU_>m-P)ri87V{csHVk@BQu1#puBu3$y4#HFzxL7K{N;rt+ zx2Zk%6MUc*Ys}C58IK+i6WpU;MgkWo@I5|x<1;Lm%Ve?{>h(IYl$6V5YPH%m0N+O{ zI5Y2)TQkJ^(TzA}Ou|$wxgoJ#K+706O5jTqr4*OH`4xgt(^61gQ(|B6aoW3vwtc># zzU3FS7sVR?g#PFafTx~%ih8|H7>4-1k6{>OG8s~-6ow3Vw~=7&=$&*H^T-G+Kcc!^ z$4h1jbW9Za2-zeKLKfdWMC8>rXobaZr(&*!l$i>eo4w|CLq(}Pr!NNFq?5V;=8OfZ;FF_=oQ zDwUu&Etxy@bIPwC!UC2bxR>)opGPV%ojiT*`O@oWjur9^(vw=heQ<&CUr)lXkByDF zuIu9aK5-o1=z%L$k5vP!Q7S~r7%3%D6j7dEq`$L7TT&y8h+2Jttd8hv%h6Ptnk_hg z*B6NcAc&EnV8zHbTFJhS!>;C)Wqta+qxjt9_UlH zNy0cr#tJDFOAQa1NYR!~pn{NUrHWg3xiY)ViownJg%pd00>17=M<7Ct=|?D)Bv}~b ze;xUF)f)u6nar{$kOuCwGk{d z=~NOsnda`#{V_|64P?*+89^jbQenga<(X-MQkyvWF6(df!1Y*PSXh{M9Ou!k_ihCV z!ZcV2Oxp5UBB==?MHI#;EY4hQQE~*G`7}`!k;~->qmZoQ5Ea*R^yEq6)-rZ!1H=ju zD}+BwF!d^5{l?S0`PN(878Vxv088)PhChDs#TRQ*N`k-#0oCO?Q4|wJG4gt>H+;^_ z)cNr*E)bb%ve_)AX;8>#@nVaYUN2Ml=vPrf5;f;gkwnQDf(jq{quq2CJK42sSH`yO z?*Nwh9ssvespMAl_T9f}WD}n2^2U@;{~aCp(jF8NW$ua03NV0zIMhw$fbNu-6D>tv>{J_A# zg%|ei?+Ai`SKeA6cgHaOr8K@)NM&;H#5+_Q3Zy{Bf>DB_NIwN?+S_rcFMV zr@J%7^wcc(Z*20x{yqjae1J-&!Y3Zy)-Z1Z2&&a;X=rHZzO`%Dk~B4kPEJ!Qb>Y|+ z(lD7>_RvxgM=?euFd~g91+f;_>a8@EW#TvvZG}8t9a-E)3+>Hu_ehFtGEd!Y;`=_C zbUJx60Knww)2BbPW5*vB(zZax367qbr!AGlizJJoAZ^5IW69ySmLlm<#+hBQqo-G?C8-{WSVS#`k z2x&ALtR5J6-(NC-_I2yl{py)#zL!gykZJ4UzmH9E_`F1i0)fD?3{2C&GOpc0!~&%i zDpmx3NaTB@6F&Ffm0{DW0?O1>8#OYS43=q=N~Lfd=Y2B(;8iM>`K0YUI{Lv6lS~+F zTGPv5F=ny8OrsGH`v#FK2|b^{^9kI5zzgs_pR^S+(jW7&d)nzMCh!A~KuL1`BiZ)T&i1 z)1teyf~BPjpwI~j{DAL2^8*eanK-w&xcK$!#tXlZ<=X%#bocbUy?@W%zBrDr&wi7c znHh@3BBp6_;H3ks9a@8Fnp74SIec`2{rmU7=6T-V0zU=f+wi%icK_v2OuzE-LH*E! z59zM1uJgd3a_!x7yV?8={Vx}J6C+vcN@4&203~!qSaf7zbY(hYa%Ew3WdJfTF*GeO zF)cAUR53O>GdVglFe@-IIxsNB$(rl{001R)MObuXVRU6WZEs|0W_bWIFflYOFflDL jIaDzPx#AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_000Qf zNkl^D&$lijC#_jhdG z)G2Kb7_cuJDnlcqG&MF7jzn+@1@5=@QnNENFPF1c6oaO&05OU>ti50R+8O`( zn{L|t+@na0-eH=V^kn!9>_1~6etY{$o@3Q*lL8jc~Y(o}mejo#?@D1@NR! zeY_DxRjH_`Ae+rn=D*0cS9ejeuY<7LU&D*?|X&iR_Ess-(rrY=hm zjD+Hfs@@k01gUFk#AjLfLt&y-RV->=OkI6F!C;8q-jn=1xR1zNvn3S{Y|+?ZZ>6=R zg}k;DyF+K`p$lMt;!_!!=H#+ldfwlE=-qjn(5G9(s_QU=78B!>ytn%uh6V=_LQqx_ z<@y_MAXHw)gIjIto*paZ*MQy2uf^&Ma&d5w!}~k=!{7j~-wB)k@rj$>S>TQryLsZ* zS4f~J>I%Q*2iN1TFTKpg{(cliLDMu+i6n3Ac#YY_Bwz12KChxn*0;^a&Yq>DXOjHw z#g{nK-9s*&<G=&%%o$$Z19mP? zHkU&&G$zN!K!Swgu>%GM1`yN53g%kxxBR@?zkxHohw&MHa+w^d=>)2(lF#RnQgXzl z7)%u3Zb&*M3;?9kX&M?EL5O)xTgu`{G3NCxyd|*xY?yS?AvK#tN}wDz53Aa!4jqc%DO3ydHsII+0}aZMSizyPKh*K@>&M7VNQg`(O)51@^U@_uj!$6t3`RzViCBJit*&P4!BG$(6c9q9s-Wo#=gwY0 z2th8ZQB_k#S$PE0^3!g7P)rhs=hKZGIeO$mi3E{gxTw9VplK?BfJJ#EOgI!|LA0E@ znraL~=TGP3q`#&Eur*fB#+x_dGju#D@mm1`ev`VI1q4kKT~&#eX)K>if`Fad8adG$ zBA?HDB>-Zv*i@lVJUXW7qoE;2A~}n07!;fWo>L$k4wFm;`Tf#$$R&bRCudmKR)Jxd zWHLDr5DEpEn4DxbmBMvhmc`DaAAr8Qf;@lj8az)D2n5^`3C^GI``8}}l1}CD={l+^ z@mm&(P&m_jn%#|Mu zF}%sgFLF09FLxim$KEq&YVv<}YgQ6(7ia;|}biaXSYV7N`XzOdDd5ww@ zwJ<6|C?TDYqI2w>efWJTZg|M!t=CT?1h}4yWm<{3z2q_jEiEm_`-cV-*=#nF&E`-P zK}~HH0|SGos)8Z}(k>uv2Z=yY6cj^adRFqxn*kIG2t`3U1yZh!jmqF)fU8^E5JHg2 zc}NMGs(y4uCokFq-@iX0UFT@PG^wwv!6#IvhR3KXj}j>h*6M|xcLGoDiYA7 zAU~U?kauvh8D!eQR8%ZYXL>flhlfvarl$|2jY0u`S)l(@82~6NE1MXZ9HDtdGXs4C zWV1F^Rh1;BlORFq%j1p~K!B&IcuMg`qakp;6dn??E_vzEytoNf*I3kCkE$woo`ma6MI1-F3Dg;X|&YHD~= zf=`gKvIL_c(zCM^3gCGPs$VA%F6*kUu77TB&MW?Hu>Ilfyz}001R)MObuXVRU6WV{&C-bY%cCFflYOFflDL zIaDz=Ix{&sGcYSKF*-0X#mSoN0000bbVXQnWMOn=I&E)cX=ZrPx#AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy24YJ`L;(K){{a7>y{D4^000SaNLh0L002k;002k;M#*bF000IK zNkl?< zRbKi0i!XfbrKi5cK!@?MVaaT-xWn)NeAZq5<2&yHzgZ>%LqC*HePZh*+s98gfDOaU zn(rsqABT}L zh!`S-5fA~Axky`Qia_aSd@y;JwS2vs|KmG8y3*$01mpa8lWObHTRjG%e!=|0jSHN6 z?=}36f4TSxzep9xe8s6xZ*4QsjQ#3%Bw)cvaSkmZ#3uv-;PGG`XJxcr;`tWVz+h$v z+?-7sLf*jpK(OuL;)f4W6=~+-od$da-tFA; z%;x5GY#?(nW8w6!dw9k@CwYg!K$U@J!SWiwX=434E=U!@FmaTA)<*piJ<}W|@3@Os zYuw05u(T7yi{Ui5Qzgb-D-iLWle|r%3ZLD4hR+>;7COP32D5d3BR;FF;;E21 zry;&awDRfIXIah0P0%)R(703pTnDy`G2+blaB_uj#rpYV2>EHg3%%?wq- zTrF0dT>^v;&N7bWC!3(Q`iE2jGj^tLQC8O)wSo&JS;)r#j$`G(IjEdbl#U@~=NxHW zNTEEq!jQtmPXG;5s{*MN($my898+gPmxI zn4atZFfboUxHwh>5*1VxtXJG$fx{{IDght6YUr&3?E=xT*s*a9ua zmp7U2#kJCtC?#OvT}#BdmPk?1DMeZZJd^zixV#Iz9&7L_tpb*8JRC!=9?`OO8A%w{ zgv{96YYic-9U3)jSMm;AJw_4}4^}XpC*a*Vezo%=UmOhB(70-C>C{s9D`PfJ@x=CL z{EA4`q{KR)#oBSNFfRU+8&Wb!MC>Y&7-l}N6%+ntzvd71Yc&C9=Xs+z&o>KL=YMbc zu^;mzReuI8L&}Z0J6InimKPpl?`?kOf5~qXtp9B@;1=-yJOKl41Lu!0@=pT;A1BxP&fAg3j#P%Otr$v0e(@S*Sji^;UV69 zK4$CnK9FZH$nMQlW^IsW%JN<*^DK0oCjd>UoMkNUrG8!kiMiIGsp+$L5H2SH?J6MB zbsuk_*|NHjv@VpzQ&yx4-utLPkF7riB!J5^$mZ)DizjM*k}o3x?_jGs!}iM4q40yI z-l$cmobe$Sf%le=fGbvba`qLricJQ?wq}Ar!h4vN@OZVcoCJ!h;M~s7d17;ml@Sbw zF=Y}8u~`ArDZF*HQxMS#Ph2ac|L7#a1bsj&O=qg%?UU7D}U>YKwn8s zS>-vtz?T_u;wYkA~cfj>!A^c4S z03~!qSaf7zbY(hYa%Ew3WdJfTF*GeOF)cAUR53O>GdVgjIV&(RIxsL2bl5@w001R) zMObuXVRU6WZEs|0W_bWIFflYOFflDLIaDzNS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)pVryh>nTu$sZZAYL$MSD+10f+@+{ z-G$+Qd;gjJKptm-M`SSr1Gg{;GcwGYBLP&Q@9E+g5^?zLwDW$#ff7g0&lO8N=Az6k zEGu9Y!MgCR$pnd5XAQ9xh8HC!xHqtJCmX2j`eIwd@Hl9J?m>Z5$HZ4`WaL$ox?Hk^ zcj?~8NqO0wp1a_ z{d*&K-_2s#eY+=aV^GWcxK=N=asGw-`uX+h5k9M|m>EK%w@q88P&0X{Nh~9Cg77VG zrbEtCOZv|xFej)qgt#O-Pu;SN+2=;En|k2EmV=k0@rC)zDXnehR*@bCFW6`GHZA{UZ=5R>x&RMpF@%TKUE)@l-1kcg~&kxOF>5x*7 z7H6BA`m)BBwTFM2`IUzKic)a1&4M!B~ z>p8!lQ;=G`=&ZZ&0i*dfzcN2t`y{^3lQo_D#C++G#m#SR4n0s3Id6U|TidXBLvVv; z-_|J6l7Q2_+rnn`J`dWTut@8hlkf9+Pi9?P`}4^4*yUWi>t+Q#R+24yeJx05d$J-I z-)x&QPKFIRw%zsj&K+jS=jamLHCca-Xm+9A_V3Xlj`99N;m=lWHJSUjqKBixR*iqX z4?~2eO<%h4aSqRt={4K-XxPj=mDcq_{QuhKNp%&r+tZTcjY3O0MW0$SR7|axu)ei? zTiMqiwKMAlwBLsZI(}R}``?xoRcFf=%5#g~W@BjBKK*vq{Xlo8dIq7=c^8vh%>04r zNwvf^q9i4;B-JXpC>2OC7#SFv=o%R68d`=JnpqiJS{Yhu8yH#{7zmZza6-|Lo1c=I hR*9m))XK!v%D@z&;n};%*MS-sJYD@<);T3K0RTZnI_m%c 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#- 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 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 110/241] 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~)= 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%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 zcma)hWmua{&~6~OJ3)#BEmkP*7NEF$arXknEyapMTcA)}i#x?NI0cHkLvbrmyqxF# zexC3AILVdSy`F1!vpajwJ+se5Yp5yUVo_p&Kp3w-Wm+d_Z_^W7UmPhiCSe?KG{)(l_ZA^LkoRXOxEBqBm`A>!*~5)g>CKoKUb z0F$*E;yD`+YhqUJA|#=LiiI;;PSW=%VBkIU$yYuhJ@wo8+~$h%7BFK_Gs9ej%Sz>X_Kr9!Qvtp=4mMT*c9u z+^jeuiZt|av3-|1(t?hY6L)(c9?|^){OQ{_td9uy;iIF&!=#*?#Gr@2^eims%S~<{ zlZmuO;HOq|6^6|R#TkMBBwsR(jE-uWnkH;*S?=uaZceL9%DK337A6N{m#w-gI6GIQ zMpjf+MUL+Nx!;{?_w!7g*VWbS;ZvXz$S++Q7xusJRNa51R0L=|ve0MUm} z-0-_B@l}|17%9t2oOgo_Is;qu=YKda5-~9`(Nr6^crXP&EU(`?H=0$2+~U~$VCkhU z^2{$#NR-#qBz*n)^&^=E=#84%0PloY7%_{Q`PKepaNACq$@wP+1*oVfm08d=DHtm|^!c%5oV~xtGA3KSoNNT=0qMNfPN6RO^xi<%=(}20 zjok#z&n!{Fe9?~<5Z{|sABSXua96^h>sfuCkbi+Lf-UbhWvp#%B20EU4eMYB@1=!a z+x~>`InBk%V@dB5P2OGZS^fT*ZrYL|gOOGo9TS74qodOeSaFXmBgau00u@O$x>HU?a!BsZ72GLOC?}FTc*3v86;X( zUXBEEcXx+K1PYyY+?YPz&v*S58ca)1kIu}brj`ga7)E^k`jvr~msnu=Ss%Pdjfsi5 zzufdH5|`??dwTM!>!4G0N95Jjd!`%4@N?yTWRu}{!e}@UxcAA@=1i$JpCyJ&QB>!} z02NJjX;sxgmd{!=0M36~qTi>ZRWk%Eri)dZujh;}fISd{PEcHI5W*k5gHdQBMg zchQdOvD0cWVWHWb0XTKfMGyHnNZwBHimTvh>k$`BLE(WT-_Os_NOa^QZE#eTN!wHu zJ%%n+#BqidI6*`~xfswpUh7!4@@r{nfrz|k{d>9^uz2KueHcM68)?2bp0&jOy`%&q z3>`mm`k?*TYj}A0oe*_Nc{%n1)@p-;wt;tYd37hHxc^l*xmloeK_p#p__}94HW|mc z@7Pq4atF~b|Gy{8d%BGO((SS_jZk&<^|zy0vd?`@p8q{Dbk+x+_n`l0g@~x76YoT> zish4moPSp=IitacrQgL&d410}a`mQ)ilM=3+V8x+eEGr?c>9i$ABC_aYRzMmlcw5l zFU#k#m42G9)?;^M)D!_h>`xXT%Ag_CnU2SAT_5b#)bQddLosw126T>&Q0$?(S~z`pobb7ID)rnVA*i)X(Wm z`dtEi0s>@HSR_wY)%kqG!N1sXq;Sn^lJ zgs`Nj`%Crgzk}$|+%+O{^6!OlieH$YtX&*~zBSLx=oEhc9+1-NI*~0-?*cQ4R@JLC zim(|?HSst(U4Q=P1F-73K1>|b0HC05K|NjFh}+v+v@ZSH**bt#klKn|o2URZ#tx0s z7xlgHS^2x1^uWlS}mF?)lW)ydM{7N)gCEhlZl|tq}ma za3$7PT09vXb&;h}RAKCFY+MgPGBPq7%yl1o42_McrecU?%opoyeE$ryq+r*-qRl!D z3|cIZk8j=aiQ}=hvzumx4rSe>h9Hs}{*r$lsnh(jj-eM?5q!&kzj41s~=N&9B zGU#lbxVyWP;54+1%PT2)bHp10%qSH6C?xWJ|2+1LStSkL+$@x6Y=s#LyHa?3SbrY4 zo;M3wbn?GBjh~QwUa8JFT(!ZU@`FNdj9L9>u4(HfBqBC915E;_C8xX;i0%lCFW?SdhdS1_w)bAziQ<3L2A$@r&1laNIl`Wi9IUj>05!M+u|YXlVOTM$IL7Ql z(W}ne-tE`L+2R5DZtI;AUss#l%o2yi)Urf&XF~(kQT&;Mw6`DcE^%XQYP^#O*RGwy zC~DlP@_k9DBey@QHxND{zW;OcMkKJ(pi(t`;8i1q;3$)T$X=Pobv>Q9eeGZt61!3@~kjvo7?tUdn>zd@pyZoG>1ftB}a^dCTPwLMiczirt5a4eEM-5Gi$QbFyMXM zS(NQx+o;BV=l~gb0OB}iG?T_(;;p}3c*&@ylhqwvMl7V`f#GL&sbQp#Wr6udS;iog z&G2Ismr3hPL6oWI7{5W2>x*KQ^sS3qtc5WzZNKe<@(xD73}vj;e}|8)gWG`L=a^h zPlMAu9wHJKQDcE-YR^Hw%Ta${Ip9l8{Sx8$aNEJ8@!rq)MJ-r3!|ie0M`Cp#zS?ADfHY6Orm;m}HCCLDL*h$O1GmYDn=&r&9(MLCXqF@YaMLpA7v zgN=j=M|ufszjwnHj#@pc-E3SxKjo)w}zz#?w@H%)!>^?cz4M6tTr;hnkTEThM^b?1Ku>tC8#7I zE#vQ7Eg9KPuYXe*=A#(qTfkNkUNxQpFtO3xCNzun^dReKA{0VuQ>6gKSh!J*xe_tg zrc73eY-NdDR!Nw0a|2iMx{xb_v)G@BjeP9^3@CL4#Q;zF9!HVQw^YogciU|vXEm2Q zY9y&-TW`mN0q%*a?ay_2YkXzD2u4&vB9j+L7H~yzY*`%iO{Dyf9%=2I7n9yVY8IX?yKhtcHMsm{%s~mTOgVciFn7_mRQli zQ6bXKmR~P9naN7H#up*1iK!!@6Mb9a%T)F7a_^w$7r&j+!l9e@O0YnwdIH)}n} zP~Fd2rQLHHXAkI%0FxmTW=19hS0fpf->T_KBkteSu7*#;9DN#}J(F;R^xSa}0ywgb zhLt;=Xg?^T`qGA0jn$z_1bHw}*fO4;)=Y_ye9wUgnkfMo&rB!|mG+g!-?Xr0+=K;Y zMna}2jb5(PFZjt|JACtrVe!NK4IJOiZfqefZk2_s<0!K{ zYQQnwlwFNh!^nwpCp_JT9$XlUimjlW=-ASAgS9SuSGkL1_a&yjpMH+8+&Q~(GS=SJ zl?%W&SxTcha1AUcxi^N90mZkQ&OMlZ25E4vGfIP&3RW9>Z3BKoP;EJ89 ze4;S$X5kcLbq(FB4#|)uMe^%zow+kFUHL)Dslfxyg?(la4$+Ce(;wXMl|=VU)tWdVJ(w|3DZ&;N*iFuGWBOV!o@WG3;*XZ=@)0*xang4J%w6LxP_$@2XO>+pPMhcQ z=Jr(~Wtd8S4oH1!L2L{ptT*k!$r6?>+rxMk*WSIC|+2I0ju;8Gq9y3{W*zOz&`N+tcJAZTLjrK^=NeG)e$P+0gA3F?h? zZY*RS>R+zLtOOCHAP}8JvolaYb58;B^##URq4oKYsQj4=UkvdMks8fpTTNN2AHZ+1 zjQZ@MCaV4=iU{}oHGHt))}O!!yCz5_Yt|loD@!e7Paq_2mY8Al_>?l4=hVw6DEllwTtM)MVHhG)y`F{GGKSyIoRm&2rHKBiS7s$~)daYAR zYSjbTd+v44?z33S9n|9Mf(qNUnr3k)c*F|14gT}H{Z}eu=QCnHt3&w#*(4?XdQBb z$g=Yf_}tpCHqpQy8m#OW@69cDSc=1)j=_Gt zn*B*r^xr_laiV0`Iyln89F}P(*eHIEG3I_^&h^fCv3#}$B&@dwq{|6zh>N;y@2hHjoEjfDyQeIaQ!w}M3yw4m-a;;P6+SR!J$a-TRU$Ix(`ks4AvcsY zj{GZN)GtsqDXVbjk`Dpx`j7{cj7Ts5d0JAs!(%yLv6<+_u|k%tai0&`^u` zQ{s&x|33*vEBA__L}Y{TfIOSAh>J!f_t1)81E-w|%lSOT(~v;FiLXkDJl>e(uFJku zBTl0kIw_x{(8|wj4gI}c4B-3B-J+(>N>=Si2UF*=Uhqd+EM|Uhr1+-6?N{?psKQNq z-2<~O-tLOzG`AZ_$6}qlmN!FRq9R+LvuCNT{V_Hwg?{FVFv}oWQK5dJyq2<~e(CBI8%@q>RG_zb!7=sbSQ!$hn!Sp6U=0E;Dm?eanv?OM!Xw2qpNd z0@o=6)Q0o|is1E!o7-DKT6XeZO8QK;XKAa2sL33Y8U_XED7O&2MI%`c>lZzR1!#RQ z>tv`_yMGHbM7xBMGU#ulCN!0tAX2-51YzZR&16V4Yko&J9L7h2CXDh#10SsCB&(fi35!keRU@o?jd!@<`Z;WqOS>3!^KY1`1tWUXsOy$@|8# zf^YTk0LOMzVU%atN~g-{Y1>}Y<;vAPWoy5>Q*QQq8hh88Sx93Y9l20x#@?+(!C~wh zL&9!DU_2b}#xeID@muO9b@gH{t?5^#oM2JEvT}am4;1_}Ux?d_;8>k77@rC^QfI2H z3chUKy+j(L6m$uK@}D(|-)Dr{FwD@FYgo;huP+9rHQPYP^|M*}>3k%9R!oW^nf^qK zR|+OT2)-*yAzq+G>hV-2rKA?gNsS(jd`kZs-Ox1kZp|4Yt9b4rZW%!buAIvg+$B6 zCP(gAK?cL+fQs0{k#u9wFCx~emjkpC_u#e1KVz{YQp{x0_S>48@U9+u+i;C;#%{Ab zb1flkdo5=ofw)z8-bo}I=hA_<<$S5hn+a8g()whb4=Z=_Wd-P{w|4}n=@4^j0lM)d zcqID?@zQqp4tNB$p}mUwx%OF-`~GB-wen@r2BBeo{K`TJ{%h2`*?}^O9d;5GEd451 zcYZt-k=*xZZK&9GnReV3mng>)of*k+7@rKRp)b_E8xCO%^-1Cf`*HyrIqdaum_*G{ zy~A<;A!O6vT10i%f7g7yYV4kOk6a3Bxg`8OS50hQwQ+ZKEEcw)hD@1&yaZg{15>N? zq_T>M-ChJ?gX_>YWX4dnKtz)mFyzPUjj?#GZ*Au!zxwuJ)M0!K+uS#=7uxE6m6^)rK#^{MOh$f4F(an1f z^=%k_%&!M^rM5~pH(xlMOmnk%CDcK)Tv?_(r$0TYa&ekL3F89|pke$b)1|q%^hih2 z*zYu+K7JDlpcY76uc#2y{+4z#Ddv3dNQ}uEZLh7N0sro4;MKE!@4$mSphIbs_e19E zdONi@qN-x(xYwEEIZ*gNMPi32Cn1iYKMDFT2Cpio z6{Qqm8Bv6k2sk=Yv#c*MQ8zWn+c8n2y>D)rdu`%}H0^m4Pw>W#ox?nq4-l=VzA z12;MWRtD5#dhG-|QN#EVG6u}*pW*Gwp^dqfDy^C=HQ988E=Hu19}pf9)d5zR*pD}v zsYCnMZajisT(jV4)=keMpKXFC{Yn+W7kF;mLp3zys(tWn>>b$D_Z=$U$(kW6i-L~SR|HIx(S=fB_pw!ApP69tX`<}%fPFNwEkiuk61ZNB*Y%JolkxI3)lfipdv z=ToQ(o0-bk$yg~3P`0Y(=>Lr~*Fl!+zswE3wZOYO%ZaHEltcD9>|dfb5A`YJDkzh9 zfyU&{M99=$z9TBkq5bqtLvPr;<8jo3b2_wEQI`7+C=JYw-g3>xp-BXMdo!>)zsatY z*clUrBnmdu8XgmDkk91gFuouffOs6~=DtSaB@|&D3s<8C*~$ck5~7`-3H8z7Z)KvI zf7sG5LQP{(ty#sH6CSxDiMrc*FG^oo?7rmatmE7#!5&>Q?*2MXc0h60j=9zdjeWEp zK3q>UKo8DO)Cj;w-oW=9`p(25h*@f;SF)NA2c}4}r-VB0c?+$o0V_k#Q?^JVF1%+_ z#n})Qg2nr2qj(gdj9S-FJNBzFVlBAV^{lvRSv`DEZazO=vl~7u8iZ1M%r5AlmCM(r z41j`TWS##8C(PDyK%Tkjidju}ULo;F!-Gc5Q$F!46;vzY`^fke{oPH{cUV|DulC>1b*G zr=gp--Ewb50O^jQ=*#$5p4(1mu~Vw9fs8ryz+@m+`GV;UELw`a9{VGtjJ_udw6N4I zr_|2Xoq5ok*43@lPk!bJv-y|2)C0 zlB$=^*dBv9h1Y<6CjG}2FH-R5qeY_o0C@jrVI=@ZomeKX!}t{^@;n0zB8BHF&KRCz zKB@FJXN0Pt0H7{t8=K;<#C(d84a_%9w}}X^)t5~gM*c~~I!!DMRl3#sP)c3bh9=ng zt;b((9qR4bfvHz&IE55EMLT>p_ z#_E7ZHrts1-mtD6Inu2=UahWuSBSd-oOYVPx(>u64=+mM|8JSN4y!3RmWB8Hc|Uj8 z=hV8cxkg)WGs;H!InNiVqw+gt03Av4R@UOZU&3hTtJHOjz6X;Pl-L7!vdZcNl_+sk z!<8(6NpqZ5RdMQ4`~|bKYzUqSq(f*f#fd9a!j3qRgf&B1v;-LdCI3q0se0yQOtemc z_hUW!hj%Wc4c)XGGt+=cw*s6l1XY4&GLeq8(Jm@677L=?P~!^x|8`}(_#c}r3DHCz z1yQeM$QF;p$`qUi11K1fkc4OS&%9{PU(FZpsz 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 106/241] 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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