New design Dual Watch
This commit is contained in:
@@ -149,12 +149,14 @@ static void SetRegMenuValue(uint8_t st, bool add) {
|
|||||||
|
|
||||||
// GUI functions
|
// GUI functions
|
||||||
|
|
||||||
static void PutPixel(uint8_t x, uint8_t y, bool fill) {
|
#ifndef ENABLE_FEAT_F4HWN
|
||||||
UI_DrawPixelBuffer(gFrameBuffer, x, y, fill);
|
static void PutPixel(uint8_t x, uint8_t y, bool fill) {
|
||||||
}
|
UI_DrawPixelBuffer(gFrameBuffer, x, y, fill);
|
||||||
static void PutPixelStatus(uint8_t x, uint8_t y, bool fill) {
|
}
|
||||||
UI_DrawPixelBuffer(&gStatusLine, x, y, fill);
|
static void PutPixelStatus(uint8_t x, uint8_t y, bool fill) {
|
||||||
}
|
UI_DrawPixelBuffer(&gStatusLine, x, y, fill);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
static void DrawVLine(int sy, int ey, int nx, bool fill) {
|
static void DrawVLine(int sy, int ey, int nx, bool fill) {
|
||||||
for (int i = sy; i <= ey; i++) {
|
for (int i = sy; i <= ey; i++) {
|
||||||
@@ -164,29 +166,31 @@ static void DrawVLine(int sy, int ey, int nx, bool fill) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void GUI_DisplaySmallest(const char *pString, uint8_t x, uint8_t y,
|
#ifndef ENABLE_FEAT_F4HWN
|
||||||
bool statusbar, bool fill) {
|
static void GUI_DisplaySmallest(const char *pString, uint8_t x, uint8_t y,
|
||||||
uint8_t c;
|
bool statusbar, bool fill) {
|
||||||
uint8_t pixels;
|
uint8_t c;
|
||||||
const uint8_t *p = (const uint8_t *)pString;
|
uint8_t pixels;
|
||||||
|
const uint8_t *p = (const uint8_t *)pString;
|
||||||
|
|
||||||
while ((c = *p++) && c != '\0') {
|
while ((c = *p++) && c != '\0') {
|
||||||
c -= 0x20;
|
c -= 0x20;
|
||||||
for (int i = 0; i < 3; ++i) {
|
for (int i = 0; i < 3; ++i) {
|
||||||
pixels = gFont3x5[c][i];
|
pixels = gFont3x5[c][i];
|
||||||
for (int j = 0; j < 6; ++j) {
|
for (int j = 0; j < 6; ++j) {
|
||||||
if (pixels & 1) {
|
if (pixels & 1) {
|
||||||
if (statusbar)
|
if (statusbar)
|
||||||
PutPixelStatus(x + i, y + j, fill);
|
PutPixelStatus(x + i, y + j, fill);
|
||||||
else
|
else
|
||||||
PutPixel(x + i, y + j, fill);
|
PutPixel(x + i, y + j, fill);
|
||||||
|
}
|
||||||
|
pixels >>= 1;
|
||||||
}
|
}
|
||||||
pixels >>= 1;
|
|
||||||
}
|
}
|
||||||
|
x += 4;
|
||||||
}
|
}
|
||||||
x += 4;
|
|
||||||
}
|
}
|
||||||
}
|
#endif
|
||||||
|
|
||||||
// Utility functions
|
// Utility functions
|
||||||
|
|
||||||
|
32
ui/helper.c
32
ui/helper.c
@@ -218,6 +218,38 @@ static void sort(int16_t *a, int16_t *b)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void PutPixel(uint8_t x, uint8_t y, bool fill) {
|
||||||
|
UI_DrawPixelBuffer(gFrameBuffer, x, y, fill);
|
||||||
|
}
|
||||||
|
|
||||||
|
void PutPixelStatus(uint8_t x, uint8_t y, bool fill) {
|
||||||
|
UI_DrawPixelBuffer(&gStatusLine, x, y, fill);
|
||||||
|
}
|
||||||
|
|
||||||
|
void GUI_DisplaySmallest(const char *pString, uint8_t x, uint8_t y,
|
||||||
|
bool statusbar, bool fill) {
|
||||||
|
uint8_t c;
|
||||||
|
uint8_t pixels;
|
||||||
|
const uint8_t *p = (const uint8_t *)pString;
|
||||||
|
|
||||||
|
while ((c = *p++) && c != '\0') {
|
||||||
|
c -= 0x20;
|
||||||
|
for (int i = 0; i < 3; ++i) {
|
||||||
|
pixels = gFont3x5[c][i];
|
||||||
|
for (int j = 0; j < 6; ++j) {
|
||||||
|
if (pixels & 1) {
|
||||||
|
if (statusbar)
|
||||||
|
PutPixelStatus(x + i, y + j, fill);
|
||||||
|
else
|
||||||
|
PutPixel(x + i, y + j, fill);
|
||||||
|
}
|
||||||
|
pixels >>= 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
x += 4;
|
||||||
|
}
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void UI_DrawLineBuffer(uint8_t (*buffer)[128], int16_t x1, int16_t y1, int16_t x2, int16_t y2, bool black)
|
void UI_DrawLineBuffer(uint8_t (*buffer)[128], int16_t x1, int16_t y1, int16_t x2, int16_t y2, bool black)
|
||||||
|
@@ -34,6 +34,9 @@ void UI_DisplayPopup(const char *string);
|
|||||||
void UI_DrawPixelBuffer(uint8_t (*buffer)[128], uint8_t x, uint8_t y, bool black);
|
void UI_DrawPixelBuffer(uint8_t (*buffer)[128], uint8_t x, uint8_t y, bool black);
|
||||||
#ifdef ENABLE_FEAT_F4HWN
|
#ifdef ENABLE_FEAT_F4HWN
|
||||||
void UI_DrawLineDottedBuffer(uint8_t (*buffer)[128], int16_t x1, int16_t y1, int16_t x2, int16_t y2, bool black);
|
void UI_DrawLineDottedBuffer(uint8_t (*buffer)[128], int16_t x1, int16_t y1, int16_t x2, int16_t y2, bool black);
|
||||||
|
void PutPixel(uint8_t x, uint8_t y, bool fill);
|
||||||
|
void PutPixelStatus(uint8_t x, uint8_t y, bool fill);
|
||||||
|
void GUI_DisplaySmallest(const char *pString, uint8_t x, uint8_t y, bool statusbar, bool fill);
|
||||||
#endif
|
#endif
|
||||||
void UI_DrawLineBuffer(uint8_t (*buffer)[128], int16_t x1, int16_t y1, int16_t x2, int16_t y2, bool black);
|
void UI_DrawLineBuffer(uint8_t (*buffer)[128], int16_t x1, int16_t y1, int16_t x2, int16_t y2, bool black);
|
||||||
void UI_DrawRectangleBuffer(uint8_t (*buffer)[128], int16_t x1, int16_t y1, int16_t x2, int16_t y2, bool black);
|
void UI_DrawRectangleBuffer(uint8_t (*buffer)[128], int16_t x1, int16_t y1, int16_t x2, int16_t y2, bool black);
|
||||||
|
111
ui/main.c
111
ui/main.c
@@ -363,8 +363,16 @@ void DisplayRSSIBar(const bool now)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef ENABLE_FEAT_F4HWN
|
#ifdef ENABLE_FEAT_F4HWN
|
||||||
sprintf(str, "% 4d", -rssi_dBm);
|
if ((gEeprom.DUAL_WATCH != DUAL_WATCH_OFF) + (gEeprom.CROSS_BAND_RX_TX != CROSS_BAND_OFF) * 2 == 0)
|
||||||
UI_PrintStringSmallNormal(str, LCD_WIDTH + 8, 0, line - 1);
|
{
|
||||||
|
sprintf(str, "%3d", -rssi_dBm);
|
||||||
|
UI_PrintStringSmallNormal(str, LCD_WIDTH + 8, 0, line - 1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sprintf(str, "%04d %s", -rssi_dBm, "dBm");
|
||||||
|
GUI_DisplaySmallest(str, 2, 25, false, true);
|
||||||
|
}
|
||||||
|
|
||||||
if(overS9Bars == 0) {
|
if(overS9Bars == 0) {
|
||||||
sprintf(str, "S%d", s_level);
|
sprintf(str, "S%d", s_level);
|
||||||
@@ -372,10 +380,8 @@ void DisplayRSSIBar(const bool now)
|
|||||||
else {
|
else {
|
||||||
sprintf(str, "+%02d", overS9dBm);
|
sprintf(str, "+%02d", overS9dBm);
|
||||||
}
|
}
|
||||||
if(gSetting_set_met)
|
|
||||||
UI_PrintStringSmallNormal(str, LCD_WIDTH + 38, 0, line - 1);
|
UI_PrintStringSmallNormal(str, LCD_WIDTH + 38, 0, line - 1);
|
||||||
else
|
|
||||||
UI_PrintStringSmallBold(str, LCD_WIDTH + 38, 0, line - 1);
|
|
||||||
#else
|
#else
|
||||||
if(overS9Bars == 0) {
|
if(overS9Bars == 0) {
|
||||||
sprintf(str, "% 4d S%d", -rssi_dBm, s_level);
|
sprintf(str, "% 4d S%d", -rssi_dBm, s_level);
|
||||||
@@ -992,28 +998,93 @@ void UI_DisplayMain(void)
|
|||||||
s = gModulationStr[mod];
|
s = gModulationStr[mod];
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if ENABLE_FEAT_F4HWN
|
||||||
|
if ((gEeprom.DUAL_WATCH != DUAL_WATCH_OFF) + (gEeprom.CROSS_BAND_RX_TX != CROSS_BAND_OFF) * 2 == 0)
|
||||||
|
{
|
||||||
|
UI_PrintStringSmallNormal(s, LCD_WIDTH + 24, 0, line + 1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
GUI_DisplaySmallest(s, 24, line == 0 ? 17 : 49, false, true);
|
||||||
|
}
|
||||||
|
#else
|
||||||
UI_PrintStringSmallNormal(s, LCD_WIDTH + 24, 0, line + 1);
|
UI_PrintStringSmallNormal(s, LCD_WIDTH + 24, 0, line + 1);
|
||||||
|
#endif
|
||||||
|
|
||||||
if (state == VFO_STATE_NORMAL || state == VFO_STATE_ALARM)
|
if (state == VFO_STATE_NORMAL || state == VFO_STATE_ALARM)
|
||||||
{ // show the TX power
|
{ // show the TX power
|
||||||
const char pwr_list[][2] = {"L","M","H"};
|
|
||||||
int i = vfoInfo->OUTPUT_POWER % 3;
|
int i = vfoInfo->OUTPUT_POWER % 3;
|
||||||
|
#if ENABLE_FEAT_F4HWN
|
||||||
|
if ((gEeprom.DUAL_WATCH != DUAL_WATCH_OFF) + (gEeprom.CROSS_BAND_RX_TX != CROSS_BAND_OFF) * 2 == 0)
|
||||||
|
{
|
||||||
|
const char pwr_list[][2] = {"L","M","H"};
|
||||||
UI_PrintStringSmallNormal(pwr_list[i], LCD_WIDTH + 46, 0, line + 1);
|
UI_PrintStringSmallNormal(pwr_list[i], LCD_WIDTH + 46, 0, line + 1);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
const char *powerNames[] = {"LOW", "MID", "HIGH"};
|
||||||
|
GUI_DisplaySmallest(powerNames[i], 37, line == 0 ? 17 : 49, false, true);
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
const char pwr_list[][2] = {"L","M","H"};
|
||||||
|
UI_PrintStringSmallNormal(pwr_list[i], LCD_WIDTH + 46, 0, line + 1);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
if (vfoInfo->freq_config_RX.Frequency != vfoInfo->freq_config_TX.Frequency)
|
if (vfoInfo->freq_config_RX.Frequency != vfoInfo->freq_config_TX.Frequency)
|
||||||
{ // show the TX offset symbol
|
{ // show the TX offset symbol
|
||||||
const char dir_list[][2] = {"", "+", "-"};
|
const char dir_list[][2] = {"", "+", "-"};
|
||||||
int i = vfoInfo->TX_OFFSET_FREQUENCY_DIRECTION % 3;
|
int i = vfoInfo->TX_OFFSET_FREQUENCY_DIRECTION % 3;
|
||||||
|
#if ENABLE_FEAT_F4HWN
|
||||||
|
if ((gEeprom.DUAL_WATCH != DUAL_WATCH_OFF) + (gEeprom.CROSS_BAND_RX_TX != CROSS_BAND_OFF) * 2 == 0)
|
||||||
|
{
|
||||||
UI_PrintStringSmallNormal(dir_list[i], LCD_WIDTH + 54, 0, line + 1);
|
UI_PrintStringSmallNormal(dir_list[i], LCD_WIDTH + 54, 0, line + 1);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
UI_PrintStringSmallNormal(dir_list[i], LCD_WIDTH + 60, 0, line + 1);
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
UI_PrintStringSmallNormal(dir_list[i], LCD_WIDTH + 54, 0, line + 1);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
// show the TX/RX reverse symbol
|
// show the TX/RX reverse symbol
|
||||||
if (vfoInfo->FrequencyReverse)
|
if (vfoInfo->FrequencyReverse)
|
||||||
|
#if ENABLE_FEAT_F4HWN
|
||||||
|
{
|
||||||
|
if ((gEeprom.DUAL_WATCH != DUAL_WATCH_OFF) + (gEeprom.CROSS_BAND_RX_TX != CROSS_BAND_OFF) * 2 == 0)
|
||||||
|
{
|
||||||
|
UI_PrintStringSmallNormal("R", LCD_WIDTH + 62, 0, line + 1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
GUI_DisplaySmallest("R", 62, line == 0 ? 17 : 49, false, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#else
|
||||||
UI_PrintStringSmallNormal("R", LCD_WIDTH + 62, 0, line + 1);
|
UI_PrintStringSmallNormal("R", LCD_WIDTH + 62, 0, line + 1);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if ENABLE_FEAT_F4HWN
|
||||||
|
if ((gEeprom.DUAL_WATCH != DUAL_WATCH_OFF) + (gEeprom.CROSS_BAND_RX_TX != CROSS_BAND_OFF) * 2 == 0)
|
||||||
|
{
|
||||||
|
if (vfoInfo->CHANNEL_BANDWIDTH == BANDWIDTH_NARROW)
|
||||||
|
UI_PrintStringSmallNormal("N", LCD_WIDTH + 70, 0, line + 1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
const char *bandWidthNames[] = {"WIDE", "NARROW"};
|
||||||
|
if (vfoInfo->CHANNEL_BANDWIDTH == BANDWIDTH_NARROW)
|
||||||
|
GUI_DisplaySmallest(bandWidthNames[1], 76, line == 0 ? 17 : 49, false, true);
|
||||||
|
else
|
||||||
|
GUI_DisplaySmallest(bandWidthNames[0], 76, line == 0 ? 17 : 49, false, true);
|
||||||
|
}
|
||||||
|
#else
|
||||||
if (vfoInfo->CHANNEL_BANDWIDTH == BANDWIDTH_NARROW)
|
if (vfoInfo->CHANNEL_BANDWIDTH == BANDWIDTH_NARROW)
|
||||||
UI_PrintStringSmallNormal("N", LCD_WIDTH + 70, 0, line + 1);
|
UI_PrintStringSmallNormal("N", LCD_WIDTH + 70, 0, line + 1);
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef ENABLE_DTMF_CALLING
|
#ifdef ENABLE_DTMF_CALLING
|
||||||
// show the DTMF decoding symbol
|
// show the DTMF decoding symbol
|
||||||
@@ -1030,22 +1101,30 @@ void UI_DisplayMain(void)
|
|||||||
#ifdef ENABLE_FEAT_F4HWN
|
#ifdef ENABLE_FEAT_F4HWN
|
||||||
if(isMainVFO)
|
if(isMainVFO)
|
||||||
{
|
{
|
||||||
if(gMonitor)
|
|
||||||
{
|
|
||||||
sprintf(String, "%s", "MON");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
sprintf(String, "SQL %d", gEeprom.SQUELCH_LEVEL);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((gEeprom.DUAL_WATCH != DUAL_WATCH_OFF) + (gEeprom.CROSS_BAND_RX_TX != CROSS_BAND_OFF) * 2 == 0)
|
if ((gEeprom.DUAL_WATCH != DUAL_WATCH_OFF) + (gEeprom.CROSS_BAND_RX_TX != CROSS_BAND_OFF) * 2 == 0)
|
||||||
{
|
{
|
||||||
|
if(gMonitor)
|
||||||
|
{
|
||||||
|
sprintf(String, "%s", "MON");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sprintf(String, "SQL %d", gEeprom.SQUELCH_LEVEL);
|
||||||
|
}
|
||||||
UI_PrintStringSmallNormal(String, 91, 0, 2);
|
UI_PrintStringSmallNormal(String, 91, 0, 2);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
UI_PrintStringSmallNormal(String, 91, 0, line + 2);
|
if(gMonitor)
|
||||||
|
{
|
||||||
|
sprintf(String, "%s", "MONIT");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sprintf(String, "SQL %d", gEeprom.SQUELCH_LEVEL);
|
||||||
|
}
|
||||||
|
GUI_DisplaySmallest(String, 106, line == 0 ? 17 : 49, false, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
Reference in New Issue
Block a user