Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16,887 changes: 8,451 additions & 8,436 deletions radio/src/fonts/lvgl/lrg/lv_font_cn_L.c

Large diffs are not rendered by default.

596 changes: 314 additions & 282 deletions radio/src/fonts/lvgl/lrg/lv_font_cn_STD.c

Large diffs are not rendered by default.

8,284 changes: 4,146 additions & 4,138 deletions radio/src/fonts/lvgl/lrg/lv_font_cn_XS.c

Large diffs are not rendered by default.

4,862 changes: 2,433 additions & 2,429 deletions radio/src/fonts/lvgl/lrg/lv_font_cn_XXS.c

Large diffs are not rendered by default.

11,543 changes: 5,777 additions & 5,766 deletions radio/src/fonts/lvgl/lrg/lv_font_cn_bold_STD.c

Large diffs are not rendered by default.

23,676 changes: 11,850 additions & 11,826 deletions radio/src/fonts/lvgl/lrg/lv_font_cn_bold_XL.c

Large diffs are not rendered by default.

9,684 changes: 4,866 additions & 4,818 deletions radio/src/fonts/lvgl/lrg/lv_font_jp_L.c

Large diffs are not rendered by default.

1,469 changes: 800 additions & 669 deletions radio/src/fonts/lvgl/lrg/lv_font_jp_STD.c

Large diffs are not rendered by default.

5,113 changes: 2,569 additions & 2,544 deletions radio/src/fonts/lvgl/lrg/lv_font_jp_XS.c

Large diffs are not rendered by default.

3,069 changes: 1,542 additions & 1,527 deletions radio/src/fonts/lvgl/lrg/lv_font_jp_XXS.c

Large diffs are not rendered by default.

6,954 changes: 3,495 additions & 3,459 deletions radio/src/fonts/lvgl/lrg/lv_font_jp_bold_STD.c

Large diffs are not rendered by default.

13,730 changes: 6,901 additions & 6,829 deletions radio/src/fonts/lvgl/lrg/lv_font_jp_bold_XL.c

Large diffs are not rendered by default.

4,019 changes: 2,013 additions & 2,006 deletions radio/src/fonts/lvgl/lrg/lv_font_ko_L.c

Large diffs are not rendered by default.

836 changes: 431 additions & 405 deletions radio/src/fonts/lvgl/lrg/lv_font_ko_STD.c

Large diffs are not rendered by default.

4,062 changes: 2,033 additions & 2,029 deletions radio/src/fonts/lvgl/lrg/lv_font_ko_XS.c

Large diffs are not rendered by default.

1,846 changes: 924 additions & 922 deletions radio/src/fonts/lvgl/lrg/lv_font_ko_XXS.c

Large diffs are not rendered by default.

5,436 changes: 2,721 additions & 2,715 deletions radio/src/fonts/lvgl/lrg/lv_font_ko_bold_STD.c

Large diffs are not rendered by default.

11,777 changes: 5,894 additions & 5,883 deletions radio/src/fonts/lvgl/lrg/lv_font_ko_bold_XL.c

Large diffs are not rendered by default.

18,713 changes: 9,372 additions & 9,341 deletions radio/src/fonts/lvgl/lrg/lv_font_tw_L.c

Large diffs are not rendered by default.

1,398 changes: 732 additions & 666 deletions radio/src/fonts/lvgl/lrg/lv_font_tw_STD.c

Large diffs are not rendered by default.

9,241 changes: 4,627 additions & 4,614 deletions radio/src/fonts/lvgl/lrg/lv_font_tw_XS.c

Large diffs are not rendered by default.

5,404 changes: 2,706 additions & 2,698 deletions radio/src/fonts/lvgl/lrg/lv_font_tw_XXS.c

Large diffs are not rendered by default.

12,494 changes: 6,258 additions & 6,236 deletions radio/src/fonts/lvgl/lrg/lv_font_tw_bold_STD.c

Large diffs are not rendered by default.

26,319 changes: 13,181 additions & 13,138 deletions radio/src/fonts/lvgl/lrg/lv_font_tw_bold_XL.c

Large diffs are not rendered by default.

9,055 changes: 4,532 additions & 4,523 deletions radio/src/fonts/lvgl/sml/lv_font_cn_L.c

Large diffs are not rendered by default.

550 changes: 282 additions & 268 deletions radio/src/fonts/lvgl/sml/lv_font_cn_STD.c

Large diffs are not rendered by default.

3,707 changes: 1,855 additions & 1,852 deletions radio/src/fonts/lvgl/sml/lv_font_cn_XS.c

Large diffs are not rendered by default.

2,692 changes: 1,347 additions & 1,345 deletions radio/src/fonts/lvgl/sml/lv_font_cn_XXS.c

Large diffs are not rendered by default.

5,791 changes: 2,898 additions & 2,893 deletions radio/src/fonts/lvgl/sml/lv_font_cn_bold_STD.c

Large diffs are not rendered by default.

13,386 changes: 6,700 additions & 6,686 deletions radio/src/fonts/lvgl/sml/lv_font_cn_bold_XL.c

Large diffs are not rendered by default.

5,536 changes: 2,782 additions & 2,754 deletions radio/src/fonts/lvgl/sml/lv_font_jp_L.c

Large diffs are not rendered by default.

1,403 changes: 733 additions & 670 deletions radio/src/fonts/lvgl/sml/lv_font_jp_STD.c

Large diffs are not rendered by default.

2,417 changes: 1,214 additions & 1,203 deletions radio/src/fonts/lvgl/sml/lv_font_jp_XS.c

Large diffs are not rendered by default.

1,830 changes: 919 additions & 911 deletions radio/src/fonts/lvgl/sml/lv_font_jp_XXS.c

Large diffs are not rendered by default.

3,766 changes: 1,892 additions & 1,874 deletions radio/src/fonts/lvgl/sml/lv_font_jp_bold_STD.c

Large diffs are not rendered by default.

7,810 changes: 3,925 additions & 3,885 deletions radio/src/fonts/lvgl/sml/lv_font_jp_bold_XL.c

Large diffs are not rendered by default.

4,309 changes: 2,157 additions & 2,152 deletions radio/src/fonts/lvgl/sml/lv_font_ko_L.c

Large diffs are not rendered by default.

830 changes: 421 additions & 409 deletions radio/src/fonts/lvgl/sml/lv_font_ko_STD.c

Large diffs are not rendered by default.

1,920 changes: 961 additions & 959 deletions radio/src/fonts/lvgl/sml/lv_font_ko_XS.c

Large diffs are not rendered by default.

1,072 changes: 537 additions & 535 deletions radio/src/fonts/lvgl/sml/lv_font_ko_XXS.c

Large diffs are not rendered by default.

2,937 changes: 1,470 additions & 1,467 deletions radio/src/fonts/lvgl/sml/lv_font_ko_bold_STD.c

Large diffs are not rendered by default.

5,571 changes: 2,789 additions & 2,782 deletions radio/src/fonts/lvgl/sml/lv_font_ko_bold_XL.c

Large diffs are not rendered by default.

9,409 changes: 4,712 additions & 4,697 deletions radio/src/fonts/lvgl/sml/lv_font_tw_L.c

Large diffs are not rendered by default.

1,272 changes: 650 additions & 622 deletions radio/src/fonts/lvgl/sml/lv_font_tw_STD.c

Large diffs are not rendered by default.

4,139 changes: 2,073 additions & 2,066 deletions radio/src/fonts/lvgl/sml/lv_font_tw_XS.c

Large diffs are not rendered by default.

3,012 changes: 1,509 additions & 1,503 deletions radio/src/fonts/lvgl/sml/lv_font_tw_XXS.c

Large diffs are not rendered by default.

6,446 changes: 3,228 additions & 3,218 deletions radio/src/fonts/lvgl/sml/lv_font_tw_bold_STD.c

Large diffs are not rendered by default.

12,638 changes: 6,331 additions & 6,307 deletions radio/src/fonts/lvgl/sml/lv_font_tw_bold_XL.c

Large diffs are not rendered by default.

11,774 changes: 5,893 additions & 5,881 deletions radio/src/fonts/lvgl/std/lv_font_cn_L.c

Large diffs are not rendered by default.

575 changes: 297 additions & 278 deletions radio/src/fonts/lvgl/std/lv_font_cn_STD.c

Large diffs are not rendered by default.

5,457 changes: 2,731 additions & 2,726 deletions radio/src/fonts/lvgl/std/lv_font_cn_XS.c

Large diffs are not rendered by default.

3,275 changes: 1,639 additions & 1,636 deletions radio/src/fonts/lvgl/std/lv_font_cn_XXS.c

Large diffs are not rendered by default.

6,957 changes: 3,482 additions & 3,475 deletions radio/src/fonts/lvgl/std/lv_font_cn_bold_STD.c

Large diffs are not rendered by default.

17,040 changes: 8,529 additions & 8,511 deletions radio/src/fonts/lvgl/std/lv_font_cn_bold_XL.c

Large diffs are not rendered by default.

6,792 changes: 3,413 additions & 3,379 deletions radio/src/fonts/lvgl/std/lv_font_jp_L.c

Large diffs are not rendered by default.

1,423 changes: 753 additions & 670 deletions radio/src/fonts/lvgl/std/lv_font_jp_STD.c

Large diffs are not rendered by default.

3,300 changes: 1,658 additions & 1,642 deletions radio/src/fonts/lvgl/std/lv_font_jp_XS.c

Large diffs are not rendered by default.

2,167 changes: 1,089 additions & 1,078 deletions radio/src/fonts/lvgl/std/lv_font_jp_XXS.c

Large diffs are not rendered by default.

4,773 changes: 2,398 additions & 2,375 deletions radio/src/fonts/lvgl/std/lv_font_jp_bold_STD.c

Large diffs are not rendered by default.

9,421 changes: 4,736 additions & 4,685 deletions radio/src/fonts/lvgl/std/lv_font_jp_bold_XL.c

Large diffs are not rendered by default.

5,549 changes: 2,777 additions & 2,772 deletions radio/src/fonts/lvgl/std/lv_font_ko_L.c

Large diffs are not rendered by default.

813 changes: 414 additions & 399 deletions radio/src/fonts/lvgl/std/lv_font_ko_STD.c

Large diffs are not rendered by default.

2,596 changes: 1,300 additions & 1,296 deletions radio/src/fonts/lvgl/std/lv_font_ko_XS.c

Large diffs are not rendered by default.

1,620 changes: 811 additions & 809 deletions radio/src/fonts/lvgl/std/lv_font_ko_XXS.c

Large diffs are not rendered by default.

3,631 changes: 1,818 additions & 1,813 deletions radio/src/fonts/lvgl/std/lv_font_ko_bold_STD.c

Large diffs are not rendered by default.

8,404 changes: 4,206 additions & 4,198 deletions radio/src/fonts/lvgl/std/lv_font_ko_bold_XL.c

Large diffs are not rendered by default.

12,724 changes: 6,373 additions & 6,351 deletions radio/src/fonts/lvgl/std/lv_font_tw_L.c

Large diffs are not rendered by default.

1,330 changes: 684 additions & 646 deletions radio/src/fonts/lvgl/std/lv_font_tw_STD.c

Large diffs are not rendered by default.

5,800 changes: 2,905 additions & 2,895 deletions radio/src/fonts/lvgl/std/lv_font_tw_XS.c

Large diffs are not rendered by default.

3,646 changes: 1,826 additions & 1,820 deletions radio/src/fonts/lvgl/std/lv_font_tw_XXS.c

Large diffs are not rendered by default.

8,454 changes: 4,234 additions & 4,220 deletions radio/src/fonts/lvgl/std/lv_font_tw_bold_STD.c

Large diffs are not rendered by default.

19,062 changes: 9,546 additions & 9,516 deletions radio/src/fonts/lvgl/std/lv_font_tw_bold_XL.c

Large diffs are not rendered by default.

49 changes: 49 additions & 0 deletions radio/src/gui/colorlcd/module/module_setup.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,10 @@
#include "dsmp_settings.h"
#endif

#if defined(CSD203_SENSOR)
#include "csd203_sensor.h"
#endif

#define SET_DIRTY() storageDirty(EE_MODEL)

#define ETX_STATE_UNIQUE_ID_WARN LV_STATE_USER_1
Expand Down Expand Up @@ -766,6 +770,47 @@ ModulePage::ModulePage(uint8_t moduleIdx) : Page(ICON_MODEL_SETUP)
});

auto subTypeChoice = new ModuleSubTypeChoice(box, moduleIdx);

#if defined(CSD203_SENSOR)
FormLine* sensorVoltLine = nullptr;
FormLine* sensorCurrLine = nullptr;
if (moduleIdx == INTERNAL_MODULE) {
sensorCurrLine = body->newLine(grid);
new StaticText(sensorCurrLine, rect_t{}, STR_MODULE_SENSOR_CURRENT);
new DynamicNumber<int16_t>(
sensorCurrLine, rect_t{},
[]() { return getIntModuleCurrent(); },
COLOR_THEME_PRIMARY1_INDEX, 0, "", "mA");
} else if (moduleIdx == EXTERNAL_MODULE) {
sensorVoltLine = body->newLine(grid);
new StaticText(sensorVoltLine, rect_t{}, STR_MODULE_SENSOR_VOLTAGE);
new DynamicNumber<uint16_t>(
sensorVoltLine, rect_t{},
[]() { return getExtModuleVoltage(); },
COLOR_THEME_PRIMARY1_INDEX, PREC2, "", "V");

sensorCurrLine = body->newLine(grid);
new StaticText(sensorCurrLine, rect_t{}, STR_MODULE_SENSOR_CURRENT);
new DynamicNumber<int16_t>(
sensorCurrLine, rect_t{},
[]() { return getExtModuleCurrent(); },
COLOR_THEME_PRIMARY1_INDEX, 0, "", "mA");
}

auto updateSensorVisibility = [=]() {
const bool on = g_model.moduleData[moduleIdx].type != MODULE_TYPE_NONE;
if (sensorVoltLine) {
if (on) sensorVoltLine->show();
else sensorVoltLine->hide();
}
if (sensorCurrLine) {
if (on) sensorCurrLine->show();
else sensorCurrLine->hide();
}
};
updateSensorVisibility();
#endif

auto moduleWindow = new ModuleWindow(body, moduleIdx);

// This needs to be after moduleWindow has been created
Expand All @@ -775,6 +820,10 @@ ModulePage::ModulePage(uint8_t moduleIdx) : Page(ICON_MODEL_SETUP)
moduleWindow->updateModule();
subTypeChoice->updateLayout();

#if defined(CSD203_SENSOR)
updateSensorVisibility();
#endif

SET_DIRTY();
});

Expand Down
143 changes: 130 additions & 13 deletions radio/src/targets/common/arm/stm32/csd203_sensor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@

#include "csd203_sensor.h"

#include <stdint.h>
#include <stdlib.h>
#include <string.h>

Expand Down Expand Up @@ -188,7 +189,58 @@ bool CSD203ExtInitFlag = false;

bool IICReadStatusFlag = false;

static uint16_t csd203extvbus = 0;
/** The three CSD203 sensor configs polled in round-robin by readCSD203(). */
enum CsdChannel { CSD_CH_MAIN, CSD_CH_IN, CSD_CH_EXT, CSD_CH_COUNT };

static uint16_t csd203VoltMv[CSD_CH_COUNT] = {0, 0, 0};
static int16_t csd203CurrMa[CSD_CH_COUNT] = {0, 0, 0};

/** EMA low-pass: new += (sample - new) / 2^shift */
constexpr uint8_t CSD203_VOLT_EMA_SHIFT = 4;
constexpr uint8_t CSD203_CURR_EMA_SHIFT = 3;

struct EmaState {
int32_t value = 0;
bool inited = false;
};

static EmaState csd203VoltFilt[CSD_CH_COUNT];
static EmaState csd203CurrFilt[CSD_CH_COUNT];

static int32_t csd203EmaI32(EmaState& filt, int32_t sample, uint8_t shift)
{
if (!filt.inited) {
filt.value = sample;
filt.inited = true;
return sample;
}
filt.value += (sample - filt.value) >> shift;
return filt.value;
}

static void csd203ResetFilters()
{
for (int ch = 0; ch < CSD_CH_COUNT; ch++) {
csd203VoltFilt[ch] = EmaState();
csd203CurrFilt[ch] = EmaState();
csd203VoltMv[ch] = 0;
csd203CurrMa[ch] = 0;
}
}

static int16_t csd203ClampI16(int32_t value)
{
if (value > INT16_MAX) return INT16_MAX;
if (value < INT16_MIN) return INT16_MIN;
return (int16_t)value;
}

static uint16_t csd203ClampU16(int32_t value)
{
if (value < 0) return 0;
if (value > UINT16_MAX) return UINT16_MAX;
return (uint16_t)value;
}

static CSD_CONFIG CSD203_MainSensorCFG;
static CSD_CONFIG CSD203_InSensorCFG;
Expand Down Expand Up @@ -338,6 +390,7 @@ void initCSD203(void)
CSD203MainInitFlag = false;
CSD203InInitFlag = false;
CSD203ExtInitFlag = false;
csd203ResetFilters();

// TRACE("202 test ..."); //A0=CLK A1=SDA RadioSky

Expand Down Expand Up @@ -398,14 +451,44 @@ void initCSD203(void)
}
}

static uint16_t getCSD203BatteryVoltage(void)
{ // 1000=1000mV
return csd203extvbus;
static uint16_t csd203RawToMillivolts(uint16_t raw)
{
return (uint16_t)((raw * 5) / 4); // 1.25 mV/LSB
}

static int16_t csd203RawToMilliamps(uint16_t raw, const CSD_CONFIG* cfg)
{
return (int16_t)((int16_t)raw * cfg->CurrentLSB / CSD_CONFIG_CurrentLsb1mA);
}

uint16_t getBatteryVoltage()
{
return getCSD203BatteryVoltage() / 10;
return csd203VoltMv[CSD_CH_EXT] / 10; // 10mV steps for EdgeTX API
}

uint16_t getBatteryMidVoltage()
{
return csd203VoltMv[CSD_CH_MAIN] / 10;
}

uint16_t getExtModuleVoltage()
{
return csd203VoltMv[CSD_CH_IN] / 10;
}

int16_t getExtModuleCurrent()
{
return csd203CurrMa[CSD_CH_EXT];
}

int16_t getSystemCurrent()
{
return csd203CurrMa[CSD_CH_MAIN];
}

int16_t getIntModuleCurrent()
{
return csd203CurrMa[CSD_CH_IN];
}

void readCSD203(void)
Expand All @@ -418,16 +501,50 @@ void readCSD203(void)

IICReadStatusFlag = true;
if (GetSenSorStep == 0 && CSD203MainInitFlag == true) {
CSD203_ReadCurrent(&CSD203_MainSensorCFG);
CSD203_ReadVbus(&CSD203_MainSensorCFG);
const int32_t rawCurr =
csd203RawToMilliamps(CSD203_ReadCurrent(&CSD203_MainSensorCFG),
&CSD203_MainSensorCFG);
csd203CurrMa[CSD_CH_MAIN] = csd203ClampI16(csd203EmaI32(
csd203CurrFilt[CSD_CH_MAIN], rawCurr, CSD203_CURR_EMA_SHIFT));

const uint32_t rawVolt = csd203RawToMillivolts(
CSD203_ReadVbus(&CSD203_MainSensorCFG));
csd203VoltMv[CSD_CH_MAIN] = csd203ClampU16(csd203EmaI32(
csd203VoltFilt[CSD_CH_MAIN], (int32_t)rawVolt, CSD203_VOLT_EMA_SHIFT));
} else if (GetSenSorStep == 1 && CSD203InInitFlag == true) {
CSD203_ReadCurrent(&CSD203_InSensorCFG);
CSD203_ReadVbus(&CSD203_InSensorCFG);
const int32_t rawCurr =
csd203RawToMilliamps(CSD203_ReadCurrent(&CSD203_InSensorCFG),
&CSD203_InSensorCFG);
csd203CurrMa[CSD_CH_IN] = csd203ClampI16(csd203EmaI32(
csd203CurrFilt[CSD_CH_IN], rawCurr, CSD203_CURR_EMA_SHIFT));

const uint32_t rawVolt =
csd203RawToMillivolts(CSD203_ReadVbus(&CSD203_InSensorCFG));
csd203VoltMv[CSD_CH_IN] = csd203ClampU16(csd203EmaI32(
csd203VoltFilt[CSD_CH_IN], (int32_t)rawVolt, CSD203_VOLT_EMA_SHIFT));
} else if (GetSenSorStep == 2 && CSD203ExtInitFlag == true) {
CSD203_ReadCurrent(&CSD203_ExtSensorCFG);
csd203extvbus = (CSD203_ReadVbus(&CSD203_ExtSensorCFG) * 1.25);
// TRACE("Vbat=%d\r",csd203extvbus);
const int32_t rawCurr =
csd203RawToMilliamps(CSD203_ReadCurrent(&CSD203_ExtSensorCFG),
&CSD203_ExtSensorCFG);
csd203CurrMa[CSD_CH_EXT] = csd203ClampI16(csd203EmaI32(
csd203CurrFilt[CSD_CH_EXT], rawCurr, CSD203_CURR_EMA_SHIFT));

const uint32_t rawVolt = csd203RawToMillivolts(
CSD203_ReadVbus(&CSD203_ExtSensorCFG));
csd203VoltMv[CSD_CH_EXT] = csd203ClampU16(csd203EmaI32(
csd203VoltFilt[CSD_CH_EXT], (int32_t)rawVolt, CSD203_VOLT_EMA_SHIFT));
}
IICReadStatusFlag = false;
if (++GetSenSorStep >= 3) GetSenSorStep = 0;
if (++GetSenSorStep >= 3) {
GetSenSorStep = 0;

#if defined(DEBUG_CSD203)
TRACE("csd203BatteryVoltage: %d", csd203VoltMv[CSD_CH_EXT]);
TRACE("csd203SystemCurrent: %d", csd203CurrMa[CSD_CH_MAIN]);
TRACE("csd203ExtModuleVoltage: %d", csd203VoltMv[CSD_CH_IN]);
TRACE("csd203ExtModuleCurrent: %d", csd203CurrMa[CSD_CH_EXT]);
TRACE("csd203IntModuleCurrent: %d", csd203CurrMa[CSD_CH_IN]);
TRACE("csd203BatteryMidVoltage: %d", csd203VoltMv[CSD_CH_MAIN]);
#endif
}
}
14 changes: 14 additions & 0 deletions radio/src/targets/common/arm/stm32/csd203_sensor.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,20 @@

#pragma once

#include <stdint.h>

void IICcsd203init(void);
void initCSD203(void);
void readCSD203(void);

// CSD203_ExtSensorCFG: device supply battery
uint16_t getBatteryVoltage(); // 10mV steps
int16_t getExtModuleCurrent(); // mA

// CSD203_MainSensorCFG: 2S pack mid-cell tap / system consumption
uint16_t getBatteryMidVoltage(); // 10mV steps
int16_t getSystemCurrent(); // mA

// CSD203_InSensorCFG: external RF module supply / internal RF module
uint16_t getExtModuleVoltage(); // 10mV steps
int16_t getIntModuleCurrent(); // mA
7 changes: 7 additions & 0 deletions radio/src/targets/horus/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,8 @@ if (PCB STREQUAL X10)
set(AUX2_SERIAL OFF)
set(CSD203_SENSOR ON)
set(CI1302_SENSOR ON)
set(USB_CHARGER YES)
set(V16_CHARGE_UI ON)
set(FLYSKY_GIMBAL ON)
add_definitions(-DIMU_ICM42627)
add_definitions(-DIMU_SC7U22)
Expand Down Expand Up @@ -350,6 +352,11 @@ if(CI1302_SENSOR)
add_definitions(-DVOICE_CONTROL_SENSOR)
endif()

if(V16_CHARGE_UI)
add_definitions(-DV16_CHARGE_UI)
set(SRC ${SRC} ${TARGET_SRC_DIR}/charge_ui.cpp)
endif()

set(SRC ${SRC}
io/frsky_firmware_update.cpp
io/multi_firmware_update.cpp
Expand Down
Loading
Loading