mirror of
https://github.com/armel/uv-k1-k5v3-firmware-custom.git
synced 2026-10-02 03:15:37 +00:00
Restyle the F status indicator
This commit is contained in:
1 parent
960d13e120
commit
749e856959
6 files changed
+28
-22
No files matched your search
+2
-2
@@ -434,9 +434,9 @@ static void FOXHUNT_Tag(const char *s, uint8_t x, uint8_t line)
|
|||||||
static void FOXHUNT_DrawFKey(void)
|
static void FOXHUNT_DrawFKey(void)
|
||||||
{
|
{
|
||||||
if (foxLocked)
|
if (foxLocked)
|
||||||
memcpy(gStatusLine + 69, gFontKeyLock, sizeof(gFontKeyLock));
|
memcpy(gStatusLine + 70, gFontKeyLock, sizeof(gFontKeyLock));
|
||||||
else if (gWasFKeyPressed)
|
else if (gWasFKeyPressed)
|
||||||
memcpy(gStatusLine + 69, gFontF, sizeof(gFontF));
|
memcpy(gStatusLine + 70, gFontF, sizeof(gFontF));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Draw a string right-aligned in the small (7 px) font: its right edge lands at rightX.
|
// Draw a string right-aligned in the small (7 px) font: its right edge lands at rightX.
|
||||||
|
|||||||
@@ -62,6 +62,7 @@ static const uint8_t M_DIG[10] = {0x3F,0x2F,0x27,0x23,0x21,0x20,0x30,0x38,0x3C,0
|
|||||||
static const char FOX_TAIL[5] = {'E','I','S','H','5'};
|
static const char FOX_TAIL[5] = {'E','I','S','H','5'};
|
||||||
static const uint8_t BMP_TX[16] = {0x1c,0x22,0x41,0x1c,0x22,0x00,0x08,0x1c,0x1c,0x08,0x00,0x22,0x1c,0x41,0x22,0x1c};
|
static const uint8_t BMP_TX[16] = {0x1c,0x22,0x41,0x1c,0x22,0x00,0x08,0x1c,0x1c,0x08,0x00,0x22,0x1c,0x41,0x22,0x1c};
|
||||||
static const uint8_t FONT_LOCK[9] = {0x7c,0x46,0x45,0x45,0x45,0x45,0x45,0x46,0x7c};
|
static const uint8_t FONT_LOCK[9] = {0x7c,0x46,0x45,0x45,0x45,0x45,0x45,0x46,0x7c};
|
||||||
|
static const uint8_t FONT_F[9] = {0x3e,0x7f,0x41,0x75,0x75,0x75,0x7d,0x7f,0x3e};
|
||||||
|
|
||||||
static const app_api_t *A;
|
static const app_api_t *A;
|
||||||
|
|
||||||
@@ -134,7 +135,8 @@ static void chrome(void){
|
|||||||
A->status_clear();
|
A->status_clear();
|
||||||
A->print_inverse("BEACON",2,0,true,true,26);
|
A->print_inverse("BEACON",2,0,true,true,26);
|
||||||
A->draw_battery();
|
A->draw_battery();
|
||||||
if(foxLocked) cpy(A->status_line+69,FONT_LOCK,9);
|
if(foxLocked) cpy(A->status_line+70,FONT_LOCK,sizeof(FONT_LOCK));
|
||||||
|
else if(fArm) cpy(A->status_line+70,FONT_F,sizeof(FONT_F));
|
||||||
{ char *o=putu(str,A->tx_freq()/100000u); *o++='.'; uint32_t fr=A->tx_freq()%100000u;
|
{ char *o=putu(str,A->tx_freq()/100000u); *o++='.'; uint32_t fr=A->tx_freq()%100000u;
|
||||||
for(int8_t d=4;d>=0;d--){ uint32_t p=1; for(int8_t k=0;k<d;k++)p*=10; *o++=(char)('0'+(fr/p)%10);} *o='\0'; }
|
for(int8_t d=4;d>=0;d--){ uint32_t p=1; for(int8_t k=0;k<d;k++)p*=10; *o++=(char)('0'+(fr/p)%10);} *o='\0'; }
|
||||||
A->print_normal(str,(uint8_t)(126-slen(str)*7),0,6);
|
A->print_normal(str,(uint8_t)(126-slen(str)*7),0,6);
|
||||||
@@ -192,11 +194,14 @@ static void beaconDraw(bool txNow,uint8_t il){
|
|||||||
static void blit(void){ A->blit_status(); A->blit_full(); }
|
static void blit(void){ A->blit_status(); A->blit_full(); }
|
||||||
|
|
||||||
/* ---- keypad-lock long-press ---- */
|
/* ---- keypad-lock long-press ---- */
|
||||||
static void lockTrack(uint8_t key,uint16_t ms){
|
/* true exactly on the lock/unlock toggle, so a caller that does not redraw every tick
|
||||||
if(key!=APP_KEY_F){ fHoldMs=0; fLongDone=false; return; }
|
* (the TX loop) can refresh the padlock at once. */
|
||||||
if(fLongDone) return;
|
static bool lockTrack(uint8_t key,uint16_t ms){
|
||||||
|
if(key!=APP_KEY_F){ fHoldMs=0; fLongDone=false; return false; }
|
||||||
|
if(fLongDone) return false;
|
||||||
fHoldMs+=ms;
|
fHoldMs+=ms;
|
||||||
if(fHoldMs>=LOCK_HOLD_MS){ fLongDone=true; foxLocked=!foxLocked; fArm=false; A->backlight_on(); }
|
if(fHoldMs>=LOCK_HOLD_MS){ fLongDone=true; foxLocked=!foxLocked; fArm=false; A->backlight_on(); return true; }
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ---- interactive TX delay: drains the window, keys, live seconds. true = abort ---- */
|
/* ---- interactive TX delay: drains the window, keys, live seconds. true = abort ---- */
|
||||||
@@ -209,7 +214,7 @@ static bool txDelay(uint16_t ms){
|
|||||||
if((uint8_t)((txMsLeft+999u)/1000u)!=secShown){ drawTxSeconds(); A->blit_line(0); }
|
if((uint8_t)((txMsLeft+999u)/1000u)!=secShown){ drawTxSeconds(); A->blit_line(0); }
|
||||||
|
|
||||||
uint8_t key=A->get_key();
|
uint8_t key=A->get_key();
|
||||||
lockTrack(key,slice);
|
if(lockTrack(key,slice)){ beaconDraw(true,0); blit(); } /* show the padlock at once, mid-TX */
|
||||||
if(key==APP_KEY_INVALID||key==prevKey){ prevKey=key; continue; }
|
if(key==APP_KEY_INVALID||key==prevKey){ prevKey=key; continue; }
|
||||||
prevKey=key;
|
prevKey=key;
|
||||||
A->backlight_on();
|
A->backlight_on();
|
||||||
|
|||||||
@@ -36,7 +36,7 @@
|
|||||||
#define CHMAX APP_FM_CH_MAX
|
#define CHMAX APP_FM_CH_MAX
|
||||||
|
|
||||||
static const char BAND_NAME[4][10] = { "87.5-108M", "76-108M", "76-90M", "64-76M" };
|
static const char BAND_NAME[4][10] = { "87.5-108M", "76-108M", "76-90M", "64-76M" };
|
||||||
static const uint8_t FONT_F[8] = {0x7f,0x00,0x76,0x76,0x76,0x76,0x7e,0x7f};
|
static const uint8_t FONT_F[9] = {0x3e,0x7f,0x41,0x75,0x75,0x75,0x7d,0x7f,0x3e};
|
||||||
static void cpy(uint8_t *d, const uint8_t *s, uint8_t n){ while(n--)*d++=*s++; }
|
static void cpy(uint8_t *d, const uint8_t *s, uint8_t n){ while(n--)*d++=*s++; }
|
||||||
|
|
||||||
static const app_api_t *A;
|
static const app_api_t *A;
|
||||||
@@ -102,7 +102,7 @@ static void draw(void)
|
|||||||
A->display_clear();
|
A->display_clear();
|
||||||
A->status_clear();
|
A->status_clear();
|
||||||
A->draw_battery();
|
A->draw_battery();
|
||||||
if(fArm) cpy(A->status_line+69,FONT_F,8); /* F armed indicator */
|
if(fArm) cpy(A->status_line+70,FONT_F,sizeof(FONT_F)); /* F armed indicator */
|
||||||
A->print_string("FM",2,0,0,8);
|
A->print_string("FM",2,0,0,8);
|
||||||
A->print_normal(BAND_NAME[st.band],1,0,6);
|
A->print_normal(BAND_NAME[st.band],1,0,6);
|
||||||
|
|
||||||
|
|||||||
@@ -81,7 +81,7 @@ static const uint8_t BMP_SPEAKER[10] = {0x1c,0x1c,0x3e,0x7f,0x00,0x22,0x1c,0x41,
|
|||||||
static const uint8_t BMP_UP[11] = {0x20,0x30,0x38,0x3c,0x3e,0x3f,0x3e,0x3c,0x38,0x30,0x20};
|
static const uint8_t BMP_UP[11] = {0x20,0x30,0x38,0x3c,0x3e,0x3f,0x3e,0x3c,0x38,0x30,0x20};
|
||||||
static const uint8_t BMP_DOWN[11] = {0x01,0x03,0x07,0x0f,0x1f,0x3f,0x1f,0x0f,0x07,0x03,0x01};
|
static const uint8_t BMP_DOWN[11] = {0x01,0x03,0x07,0x0f,0x1f,0x3f,0x1f,0x0f,0x07,0x03,0x01};
|
||||||
static const uint8_t BMP_FLAT[11] = {0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12};
|
static const uint8_t BMP_FLAT[11] = {0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12};
|
||||||
static const uint8_t FONT_F[8] = {0x7f,0x00,0x76,0x76,0x76,0x76,0x7e,0x7f};
|
static const uint8_t FONT_F[9] = {0x3e,0x7f,0x41,0x75,0x75,0x75,0x7d,0x7f,0x3e};
|
||||||
static const uint8_t FONT_LOCK[9] = {0x7c,0x46,0x45,0x45,0x45,0x45,0x45,0x46,0x7c};
|
static const uint8_t FONT_LOCK[9] = {0x7c,0x46,0x45,0x45,0x45,0x45,0x45,0x46,0x7c};
|
||||||
|
|
||||||
static void cpy(uint8_t *d, const uint8_t *s, uint8_t n){ while(n--)*d++=*s++; }
|
static void cpy(uint8_t *d, const uint8_t *s, uint8_t n){ while(n--)*d++=*s++; }
|
||||||
@@ -240,8 +240,8 @@ static void draw(void){
|
|||||||
else cpy(A->status_line+38,BMP_BARS,11);
|
else cpy(A->status_line+38,BMP_BARS,11);
|
||||||
if(foxAudioMode==AUDIO_BEEP) cpy(A->status_line+55,BMP_SIGNAL,10);
|
if(foxAudioMode==AUDIO_BEEP) cpy(A->status_line+55,BMP_SIGNAL,10);
|
||||||
else if(foxAudioMode==AUDIO_STATION) cpy(A->status_line+55,BMP_SPEAKER,10);
|
else if(foxAudioMode==AUDIO_STATION) cpy(A->status_line+55,BMP_SPEAKER,10);
|
||||||
if(foxLocked) cpy(A->status_line+69,FONT_LOCK,9);
|
if(foxLocked) cpy(A->status_line+70,FONT_LOCK,9);
|
||||||
else if(fArm) cpy(A->status_line+69,FONT_F,8);
|
else if(fArm) cpy(A->status_line+70,FONT_F,sizeof(FONT_F));
|
||||||
|
|
||||||
i2str(big,curDbm);
|
i2str(big,curDbm);
|
||||||
A->display_freq(big,2,0,false);
|
A->display_freq(big,2,0,false);
|
||||||
|
|||||||
+9
-8
@@ -22,16 +22,17 @@ const uint8_t gFontPttClassic[2][6] =
|
|||||||
{0x00, 0x7f, 0x40, 0x40, 0x40, 0x40},
|
{0x00, 0x7f, 0x40, 0x40, 0x40, 0x40},
|
||||||
};
|
};
|
||||||
|
|
||||||
const uint8_t gFontF[8] =
|
const uint8_t gFontF[9] =
|
||||||
{
|
{
|
||||||
|
0b00111110,
|
||||||
0b01111111,
|
0b01111111,
|
||||||
0b00000000,
|
0b01000001,
|
||||||
0b01110110,
|
0b01110101,
|
||||||
0b01110110,
|
0b01110101,
|
||||||
0b01110110,
|
0b01110101,
|
||||||
0b01110110,
|
0b01111101,
|
||||||
0b01111110,
|
0b01111111,
|
||||||
0b01111111
|
0b00111110
|
||||||
};
|
};
|
||||||
|
|
||||||
const uint8_t gFontS[6] =
|
const uint8_t gFontS[6] =
|
||||||
|
|||||||
+1
-1
@@ -7,7 +7,7 @@
|
|||||||
extern const uint8_t gFontPowerSave[2][6];
|
extern const uint8_t gFontPowerSave[2][6];
|
||||||
extern const uint8_t gFontPttOnePush[2][6];
|
extern const uint8_t gFontPttOnePush[2][6];
|
||||||
extern const uint8_t gFontPttClassic[2][6];
|
extern const uint8_t gFontPttClassic[2][6];
|
||||||
extern const uint8_t gFontF[8];
|
extern const uint8_t gFontF[9];
|
||||||
extern const uint8_t gFontS[6];
|
extern const uint8_t gFontS[6];
|
||||||
|
|
||||||
extern const uint8_t gFontKeyLock[9];
|
extern const uint8_t gFontKeyLock[9];
|
||||||
|
|||||||
Reference in new issue
Block a user