Merge pull request #407 from EdgeTX/2.4

Merge 2.4 changes
This commit is contained in:
richardclli
2021-07-05 11:42:14 +08:00
committed by GitHub
6 changed files with 118 additions and 57 deletions
+10 -5
View File
@@ -21,18 +21,23 @@
#include "static.h"
MessageDialog::MessageDialog(Window* parent, const char* title,
const char* message, const char* info) :
const char* message, const char* info,
const int lineHeight,
const WindowFlags windowFlags,
const LcdFlags textFlags) :
Dialog(parent, title, {50, 73, LCD_W - 100, LCD_H - 146})
{
setWindowFlags(windowFlags);
messageWidget = new StaticText(
this,
{0, coord_t(height() - PAGE_LINE_HEIGHT) / 2, width(), PAGE_LINE_HEIGHT},
message, 0, CENTERED);
infoWidget = new StaticText(this,
{0, 30 + coord_t(height() - PAGE_LINE_HEIGHT) / 2,
width(), PAGE_LINE_HEIGHT},
info, 0, CENTERED);
infoWidget = new StaticText(
this,
{0, 30 + coord_t(height() - PAGE_LINE_HEIGHT) / 2, width(), lineHeight},
info, 0, textFlags);
setCloseWhenClickOutside(true);
setFocus();
}
+15 -16
View File
@@ -23,28 +23,27 @@
#include "dialog.h"
#include "static.h"
class MessageDialog: public Dialog {
public:
MessageDialog(Window * parent, const char * title, const char * message, const char * info = "");
class MessageDialog : public Dialog
{
public:
MessageDialog(Window* parent, const char* title, const char* message,
const char* info = "", const int lineHeight = PAGE_LINE_HEIGHT,
const WindowFlags windowFlags = 0,
const LcdFlags textFlags = CENTERED);
// Attn.: FONT(XXL) is not supported by MessageDialog
void setInfoText(std::string text)
{
infoWidget->setText(std::move(text));
}
protected:
StaticText * messageWidget;
StaticText * infoWidget;
void setInfoText(std::string text) { infoWidget->setText(std::move(text)); }
protected:
StaticText* messageWidget;
StaticText* infoWidget;
LcdFlags textFlags;
#if defined(DEBUG_WINDOWS)
std::string getName() const override
{
return "MessageDialog";
}
std::string getName() const override { return "MessageDialog"; }
#endif
#if defined(HARDWARE_KEYS)
void onEvent(event_t event) override;
void onEvent(event_t event) override;
#endif
};
@@ -161,7 +161,14 @@ class LogicalSwitchEditPage: public Page
[=](int32_t newValue) {
cs->v1 = newValue;
SET_DIRTY();
v2Edit->invalidate();
if (v2Edit != nullptr)
{
int16_t v2_min = 0, v2_max = 0;
getMixSrcRange(cs->v1, v2_min, v2_max);
v2Edit->setMin(v2_min);
v2Edit->setMax(v2_max);
v2Edit->invalidate();
}
});
grid.nextLine();
+35
View File
@@ -41,6 +41,27 @@ std::string switchWarninglabel(swsrc_t index)
1);
}
class RssiDialog : public MessageDialog
{
public:
RssiDialog(Window* parent, const char* title, const char* message,
const char* info = "", const int lineHeight = PAGE_LINE_HEIGHT,
const WindowFlags windowFlags = 0,
const LcdFlags textFlags = CENTERED) :
MessageDialog(parent, title, message, info, lineHeight, windowFlags,
textFlags)
{
}
virtual void checkEvents()
{
char buf[10];
sprintf(buf, "%d", (int)TELEMETRY_RSSI());
setInfoText(buf);
MessageDialog::checkEvents();
}
};
class ChannelFailsafeBargraph: public Window {
public:
ChannelFailsafeBargraph(Window * parent, const rect_t & rect, uint8_t moduleIdx, uint8_t channel):
@@ -676,6 +697,13 @@ class ModuleWindow : public FormGroup {
}
else {
new NumberEdit(this, grid.getFieldSlot(2,0), -128, 127, GET_SET_DEFAULT(g_model.moduleData[moduleIdx].multi.optionValue));
//Show RSSI next to RF Freq Fine Tune
if (getMultiOptionTitle(moduleIdx) == STR_MULTI_RFTUNE)
{
new DynamicNumber<int>(this, grid.getFieldSlot(2, 1), [] {
return (int)TELEMETRY_RSSI();}, 0, "RSSI: ", " db");
}
}
}
@@ -840,6 +868,13 @@ class ModuleWindow : public FormGroup {
}
else {
moduleState[moduleIdx].mode = MODULE_MODE_RANGECHECK;
auto rssiDialog = new RssiDialog(
this, "Range Test", "RSSI:", "", 50, REFRESH_ALWAYS,
DEFAULT_COLOR | CENTERED | FONT(BOLD) | FONT(XL));
rssiDialog->setCloseHandler([this]() {
rangeButton->check(false);
moduleState[moduleIdx].mode = MODULE_MODE_NORMAL;
});
return 1;
}
});
+47 -31
View File
@@ -711,40 +711,56 @@ void touchPanelRead()
if (!touchEventOccured)
return;
touchEventOccured = false;
I2C_GT911_ReadRegister(GT911_READ_XY_REG, &state, 1);
touchEventOccured = 0;
uint32_t startReadStatus = RTOS_GET_MS();
do {
if (!I2C_GT911_ReadRegister(GT911_READ_XY_REG, &state, 1)) {
TRACE("GT911 I2C read error");
return;
}
if (state & 0x80u) {
// ready
break;
}
RTOS_WAIT_MS(1);
} while(RTOS_GET_MS() - startReadStatus < GT911_TIMEOUT);
TRACE("touch state = 0x%x", state);
if ((state & 0x80u) == 0x00) {
// not ready
return;
}
if (state & 0x80u) {
uint8_t pointsCount = (state & 0x0Fu);
uint8_t pointsCount = (state & 0x0Fu);
if (pointsCount > 0 && pointsCount < GT911_MAX_TP) {
I2C_GT911_ReadRegister(GT911_READ_XY_REG + 1, touchData.data, pointsCount * sizeof(TouchPoint));
if (touchState.event == TE_NONE || touchState.event == TE_UP || touchState.event == TE_SLIDE_END) {
touchState.event = TE_DOWN;
touchState.startX = touchState.x = touchData.points[0].x;
touchState.startY = touchState.y = touchData.points[0].y;
}
else {
touchState.deltaX = touchData.points[0].x - touchState.x;
touchState.deltaY = touchData.points[0].y - touchState.y;
if (touchState.event == TE_SLIDE || abs(touchState.deltaX) >= SLIDE_RANGE || abs(touchState.deltaY) >= SLIDE_RANGE) {
touchState.event = TE_SLIDE;
touchState.x = touchData.points[0].x;
touchState.y = touchData.points[0].y;
if (pointsCount > 0 && pointsCount <= GT911_MAX_TP) {
if (!I2C_GT911_ReadRegister(GT911_READ_XY_REG + 1, touchData.data,
pointsCount * sizeof(TouchPoint))) {
TRACE("GT911 I2C read error");
return;
}
if (touchState.event == TE_NONE || touchState.event == TE_UP ||
touchState.event == TE_SLIDE_END) {
touchState.event = TE_DOWN;
touchState.startX = touchState.x = touchData.points[0].x;
touchState.startY = touchState.y = touchData.points[0].y;
} else {
touchState.deltaX = touchData.points[0].x - touchState.x;
touchState.deltaY = touchData.points[0].y - touchState.y;
if (touchState.event == TE_SLIDE ||
abs(touchState.deltaX) >= SLIDE_RANGE ||
abs(touchState.deltaY) >= SLIDE_RANGE) {
touchState.event = TE_SLIDE;
touchState.x = touchData.points[0].x;
touchState.y = touchData.points[0].y;
}
}
} else {
if (touchState.event == TE_SLIDE) {
touchState.event = TE_SLIDE_END;
} else if (touchState.event == TE_DOWN) {
touchState.event = TE_UP;
} else if (touchState.event != TE_SLIDE_END) {
touchState.event = TE_NONE;
}
}
}
else {
if (touchState.event == TE_SLIDE) {
touchState.event = TE_SLIDE_END;
} else if (touchState.event == TE_DOWN) {
touchState.event = TE_UP;
} else if (touchState.event != TE_SLIDE_END){
touchState.event = TE_NONE;
}
}
+3 -4
View File
@@ -18,8 +18,7 @@
* GNU General Public License for more details.
*/
#ifndef _FT5X06_H_
#define _FT5X06_H_
#pragma once
#define HAS_TOUCH_PANEL() touchGT911Flag == true
@@ -29,6 +28,8 @@ extern bool touchPanelInit();
void touchPanelRead();
bool touchPanelEventOccured();
#define GT911_TIMEOUT 20 // 20ms
#define GT911_MAX_TP 5
#define GT911_CFG_NUMER 0x6C
@@ -81,5 +82,3 @@ PACK(struct TouchData {
#define TPINT_LOW() do { TOUCH_INT_GPIO->BSRRH = TOUCH_INT_GPIO_PIN; } while(0)
#define TPINT_HIGH() do { TOUCH_INT_GPIO->BSRRL = TOUCH_INT_GPIO_PIN; } while(0)
#endif // _FT5X06_H_