1
0
Fork 0
mirror of https://github.com/betaflight/betaflight.git synced 2025-07-15 20:35:33 +03:00

Improvements from review.

This commit is contained in:
Andi Kanzler 2018-06-27 17:43:58 +02:00
parent 31830dc10c
commit 1b98b1e2aa
5 changed files with 45 additions and 45 deletions

View file

@ -160,7 +160,7 @@ static uint8_t leftMenuColumn;
static uint8_t rightMenuColumn; static uint8_t rightMenuColumn;
static uint8_t maxMenuItems; static uint8_t maxMenuItems;
static uint8_t linesPerMenuItem; static uint8_t linesPerMenuItem;
static uint8_t externKey = CMS_KEY_NONE; static cms_key_e externKey = CMS_KEY_NONE;
bool cmsInMenu = false; bool cmsInMenu = false;
@ -768,7 +768,7 @@ long cmsMenuExit(displayPort_t *pDisplay, const void *ptr)
#define BUTTON_TIME 250 // msec #define BUTTON_TIME 250 // msec
#define BUTTON_PAUSE 500 // msec #define BUTTON_PAUSE 500 // msec
STATIC_UNIT_TESTED uint16_t cmsHandleKey(displayPort_t *pDisplay, uint8_t key) STATIC_UNIT_TESTED uint16_t cmsHandleKey(displayPort_t *pDisplay, cms_key_e key)
{ {
uint16_t res = BUTTON_TIME; uint16_t res = BUTTON_TIME;
OSD_Entry *p; OSD_Entry *p;
@ -974,13 +974,13 @@ STATIC_UNIT_TESTED uint16_t cmsHandleKey(displayPort_t *pDisplay, uint8_t key)
return res; return res;
} }
void cmsSetExternKey(uint8_t extKey) void cmsSetExternKey(cms_key_e extKey)
{ {
if (externKey == CMS_KEY_NONE) if (externKey == CMS_KEY_NONE)
externKey = extKey; externKey = extKey;
} }
uint16_t cmsHandleKeyWithRepeat(displayPort_t *pDisplay, uint8_t key, int repeatCount) uint16_t cmsHandleKeyWithRepeat(displayPort_t *pDisplay, cms_key_e key, int repeatCount)
{ {
uint16_t ret = 0; uint16_t ret = 0;
@ -1025,7 +1025,7 @@ void cmsUpdate(uint32_t currentTimeUs)
// Scan 'key' first // Scan 'key' first
// //
uint8_t key = CMS_KEY_NONE; cms_key_e key = CMS_KEY_NONE;
if (externKey != CMS_KEY_NONE) { if (externKey != CMS_KEY_NONE) {
rcDelayMs = cmsHandleKey(pCurrentDisplay, externKey); rcDelayMs = cmsHandleKey(pCurrentDisplay, externKey);

View file

@ -24,13 +24,15 @@
#include "common/time.h" #include "common/time.h"
#define CMS_KEY_NONE 0 typedef enum {
#define CMS_KEY_UP 1 CMS_KEY_NONE,
#define CMS_KEY_DOWN 2 CMS_KEY_UP,
#define CMS_KEY_LEFT 3 CMS_KEY_DOWN,
#define CMS_KEY_RIGHT 4 CMS_KEY_LEFT,
#define CMS_KEY_ESC 5 CMS_KEY_RIGHT,
#define CMS_KEY_MENU 6 CMS_KEY_ESC,
CMS_KEY_MENU
} cms_key_e;
extern bool cmsInMenu; extern bool cmsInMenu;

View file

@ -49,20 +49,12 @@ static int hottWriteChar(displayPort_t *displayPort, uint8_t col, uint8_t row, u
{ {
UNUSED(displayPort); UNUSED(displayPort);
if (row < ROW_CORRECTION || row >= HOTT_TEXTMODE_DISPLAY_ROWS + ROW_CORRECTION
// Correct fake display dimensions || col < COL_CORRECTION || col >= HOTT_TEXTMODE_DISPLAY_COLUMNS + COL_CORRECTION) {
if (row <= ROW_CORRECTION - 1) return 0;
return 0; }
else row -= ROW_CORRECTION;
row -= ROW_CORRECTION; col -= COL_CORRECTION;
if (col <= COL_CORRECTION - 1)
return 0;
else
col -= COL_CORRECTION;
if (row >= HOTT_TEXTMODE_DISPLAY_ROWS || col >= HOTT_TEXTMODE_DISPLAY_COLUMNS)
return 0;
hottTextmodeWriteChar(col, row, c); hottTextmodeWriteChar(col, row, c);
return 0; return 0;
@ -94,8 +86,9 @@ static bool hottIsTransferInProgress(const displayPort_t *displayPort)
static int hottHeartbeat(displayPort_t *displayPort) static int hottHeartbeat(displayPort_t *displayPort)
{ {
if (!hottTextmodeIsAlive()) if (!hottTextmodeIsAlive()) {
cmsMenuExit(displayPort, (void*)CMS_EXIT_SAVE); cmsMenuExit(displayPort, (void*)CMS_EXIT_SAVE);
}
return 0; return 0;
} }
@ -156,7 +149,7 @@ void hottCmsOpen()
} }
} }
void hottSetCmsKey(uint8_t hottKey, bool esc) void hottSetCmsKey(uint8_t hottKey, bool keepCmsOpen)
{ {
switch (hottKey) { switch (hottKey) {
case HOTTV4_BUTTON_DEC: case HOTTV4_BUTTON_DEC:
@ -166,8 +159,9 @@ void hottSetCmsKey(uint8_t hottKey, bool esc)
cmsSetExternKey(CMS_KEY_DOWN); cmsSetExternKey(CMS_KEY_DOWN);
break; break;
case HOTTV4_BUTTON_SET: case HOTTV4_BUTTON_SET:
if (cmsInMenu) if (cmsInMenu) {
cmsMenuExit(pCurrentDisplay, (void*)CMS_EXIT_SAVE); cmsMenuExit(pCurrentDisplay, (void*)CMS_EXIT_SAVE);
}
cmsSetExternKey(CMS_KEY_NONE); cmsSetExternKey(CMS_KEY_NONE);
break; break;
case HOTTV4_BUTTON_NEXT: case HOTTV4_BUTTON_NEXT:
@ -175,8 +169,9 @@ void hottSetCmsKey(uint8_t hottKey, bool esc)
break; break;
case HOTTV4_BUTTON_PREV: case HOTTV4_BUTTON_PREV:
cmsSetExternKey(CMS_KEY_LEFT); cmsSetExternKey(CMS_KEY_LEFT);
if (esc) if (keepCmsOpen) { // Make sure CMS is open until textmode is closed.
cmsMenuOpen(); cmsMenuOpen();
}
break; break;
default: default:
cmsSetExternKey(CMS_KEY_NONE); cmsSetExternKey(CMS_KEY_NONE);

View file

@ -92,6 +92,7 @@
#include "scheduler/scheduler.h" #include "scheduler/scheduler.h"
#include "io/displayport_hott.h" #include "io/displayport_hott.h"
#define HOTT_TEXTMODE_TASK_PERIOD 1000
#define HOTT_TEXTMODE_RX_SCHEDULE 5000 #define HOTT_TEXTMODE_RX_SCHEDULE 5000
#define HOTT_TEXTMODE_TX_DELAY_US 1000 #define HOTT_TEXTMODE_TX_DELAY_US 1000
#endif #endif
@ -131,11 +132,11 @@ static HOTT_GPS_MSG_t hottGPSMessage;
static HOTT_EAM_MSG_t hottEAMMessage; static HOTT_EAM_MSG_t hottEAMMessage;
#if defined (USE_HOTT_TEXTMODE) && defined (USE_CMS) #if defined (USE_HOTT_TEXTMODE) && defined (USE_CMS)
static HOTT_TEXTMODE_MSG_t hottTextModeMessage; static hottTextModeMsg_t hottTextModeMessage;
static bool textmodeIsAlive = false; static bool textmodeIsAlive = false;
static int32_t telemetryPeriod = 0; static int32_t telemetryTaskPeriod = 0;
static void initialiseTextmodeMessage(HOTT_TEXTMODE_MSG_t *msg) static void initialiseTextmodeMessage(hottTextModeMsg_t *msg)
{ {
msg->start = HOTT_TEXTMODE_START; msg->start = HOTT_TEXTMODE_START;
msg->esc = HOTT_EAM_SENSOR_TEXT_ID; msg->esc = HOTT_EAM_SENSOR_TEXT_ID;
@ -450,8 +451,8 @@ static void hottTextmodeStart()
// Increase menu speed // Increase menu speed
cfTaskInfo_t taskInfo; cfTaskInfo_t taskInfo;
getTaskInfo(TASK_TELEMETRY, &taskInfo); getTaskInfo(TASK_TELEMETRY, &taskInfo);
telemetryPeriod = taskInfo.desiredPeriod; telemetryTaskPeriod = taskInfo.desiredPeriod;
rescheduleTask(TASK_TELEMETRY, TASK_PERIOD_HZ(1000)); rescheduleTask(TASK_TELEMETRY, TASK_PERIOD_HZ(HOTT_TEXTMODE_TASK_PERIOD));
rxSchedule = HOTT_TEXTMODE_RX_SCHEDULE; rxSchedule = HOTT_TEXTMODE_RX_SCHEDULE;
txDelayUs = HOTT_TEXTMODE_TX_DELAY_US; txDelayUs = HOTT_TEXTMODE_TX_DELAY_US;
@ -460,8 +461,9 @@ static void hottTextmodeStart()
static void hottTextmodeStop() static void hottTextmodeStop()
{ {
// Set back to avoid slow down of the FC // Set back to avoid slow down of the FC
if (telemetryPeriod > 0) if (telemetryTaskPeriod > 0) {
rescheduleTask(TASK_TELEMETRY, telemetryPeriod); rescheduleTask(TASK_TELEMETRY, telemetryTaskPeriod);
}
rxSchedule = HOTT_RX_SCHEDULE; rxSchedule = HOTT_RX_SCHEDULE;
txDelayUs = HOTT_TX_DELAY_US; txDelayUs = HOTT_TX_DELAY_US;
@ -494,24 +496,25 @@ static void processHottTextModeRequest(const uint8_t cmd)
{ {
static bool setEscBack = false; static bool setEscBack = false;
if (!textmodeIsAlive) if (!textmodeIsAlive) {
{
hottTextmodeStart(); hottTextmodeStart();
textmodeIsAlive = true; textmodeIsAlive = true;
} }
if ((cmd & 0xF0) != HOTT_EAM_SENSOR_TEXT_ID) if ((cmd & 0xF0) != HOTT_EAM_SENSOR_TEXT_ID) {
return; return;
}
if (setEscBack) { if (setEscBack) {
hottTextModeMessage.esc = HOTT_EAM_SENSOR_TEXT_ID; hottTextModeMessage.esc = HOTT_EAM_SENSOR_TEXT_ID;
setEscBack = false; setEscBack = false;
} }
if (hottTextModeMessage.esc != HOTT_TEXTMODE_ESC) if (hottTextModeMessage.esc != HOTT_TEXTMODE_ESC) {
hottCmsOpen(); hottCmsOpen();
else } else {
setEscBack = true; setEscBack = true;
}
hottSetCmsKey(cmd & 0x0f, hottTextModeMessage.esc == HOTT_TEXTMODE_ESC); hottSetCmsKey(cmd & 0x0f, hottTextModeMessage.esc == HOTT_TEXTMODE_ESC);
hottSendResponse((uint8_t *)&hottTextModeMessage, sizeof(hottTextModeMessage)); hottSendResponse((uint8_t *)&hottTextModeMessage, sizeof(hottTextModeMessage));
@ -605,7 +608,7 @@ static void hottCheckSerialData(uint32_t currentMicros)
processBinaryModeRequest(address); processBinaryModeRequest(address);
} }
#if defined (USE_HOTT_TEXTMODE) && defined (USE_CMS) #if defined (USE_HOTT_TEXTMODE) && defined (USE_CMS)
else if (requestId == HOTTV4_TEXT_MODE_REQUEST_ID){ else if (requestId == HOTTV4_TEXT_MODE_REQUEST_ID) {
processHottTextModeRequest(address); processHottTextModeRequest(address);
} }
#endif #endif

View file

@ -112,7 +112,7 @@ typedef enum {
#define HOTT_TEXTMODE_STOP 0x7D #define HOTT_TEXTMODE_STOP 0x7D
#define HOTT_TEXTMODE_ESC 0x01 #define HOTT_TEXTMODE_ESC 0x01
//Text mode msgs type //Text mode msgs type
typedef struct HOTT_TEXTMODE_MSG_s { typedef struct hottTextModeMsg_s {
uint8_t start; //#01 constant value 0x7b uint8_t start; //#01 constant value 0x7b
uint8_t esc; //#02 Low byte: Sensor ID or 0x01 for escape uint8_t esc; //#02 Low byte: Sensor ID or 0x01 for escape
uint8_t warning; //#03 1=A 2=B ... uint8_t warning; //#03 1=A 2=B ...
@ -120,7 +120,7 @@ typedef struct HOTT_TEXTMODE_MSG_s {
// Bit 7 = 1 -> Inverse character display // Bit 7 = 1 -> Inverse character display
// Display 21x8 // Display 21x8
uint8_t stop; //#171 constant value 0x7d uint8_t stop; //#171 constant value 0x7d
} HOTT_TEXTMODE_MSG_t; } hottTextModeMsg_t;
typedef struct HOTT_GAM_MSG_s { typedef struct HOTT_GAM_MSG_s {
uint8_t start_byte; //#01 start uint8_t constant value 0x7c uint8_t start_byte; //#01 start uint8_t constant value 0x7c