mirror of
https://github.com/OneOfEleven/uv-k5-firmware-custom.git
synced 2025-04-28 22:31:25 +03:00
clean up
This commit is contained in:
parent
0176cb4214
commit
16434c8d14
@ -1661,8 +1661,7 @@ static void APP_ProcessKey(KEY_Code_t Key, bool bKeyPressed, bool bKeyHeld)
|
|||||||
gUpdateStatus = true;
|
gUpdateStatus = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (gF_LOCK)
|
if (gF_LOCK && (Key == KEY_PTT || Key == KEY_SIDE2 || Key == KEY_SIDE1))
|
||||||
if (Key == KEY_PTT || Key == KEY_SIDE2 || Key == KEY_SIDE1)
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!bFlag)
|
if (!bFlag)
|
||||||
|
@ -37,33 +37,45 @@ KEY_Code_t KEYBOARD_Poll(void)
|
|||||||
SYSTICK_DelayUs(1);
|
SYSTICK_DelayUs(1);
|
||||||
|
|
||||||
// Keys connected to gnd
|
// Keys connected to gnd
|
||||||
if (!GPIO_CheckBit(&GPIOA->DATA, GPIOA_PIN_KEYBOARD_0)) {
|
|
||||||
|
if (!GPIO_CheckBit(&GPIOA->DATA, GPIOA_PIN_KEYBOARD_0))
|
||||||
|
{
|
||||||
Key = KEY_SIDE1;
|
Key = KEY_SIDE1;
|
||||||
goto Bye;
|
goto Bye;
|
||||||
}
|
}
|
||||||
if (!GPIO_CheckBit(&GPIOA->DATA, GPIOA_PIN_KEYBOARD_1)) {
|
|
||||||
|
if (!GPIO_CheckBit(&GPIOA->DATA, GPIOA_PIN_KEYBOARD_1))
|
||||||
|
{
|
||||||
Key = KEY_SIDE2;
|
Key = KEY_SIDE2;
|
||||||
goto Bye;
|
goto Bye;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Original doesn't do PTT
|
// Original doesn't do PTT
|
||||||
|
|
||||||
// First row
|
// First row
|
||||||
GPIO_ClearBit(&GPIOA->DATA, GPIOA_PIN_KEYBOARD_4);
|
GPIO_ClearBit(&GPIOA->DATA, GPIOA_PIN_KEYBOARD_4);
|
||||||
SYSTICK_DelayUs(1);
|
SYSTICK_DelayUs(1);
|
||||||
|
|
||||||
if (!GPIO_CheckBit(&GPIOA->DATA, GPIOA_PIN_KEYBOARD_0)) {
|
if (!GPIO_CheckBit(&GPIOA->DATA, GPIOA_PIN_KEYBOARD_0))
|
||||||
|
{
|
||||||
Key = KEY_MENU;
|
Key = KEY_MENU;
|
||||||
goto Bye;
|
goto Bye;
|
||||||
}
|
}
|
||||||
if (!GPIO_CheckBit(&GPIOA->DATA, GPIOA_PIN_KEYBOARD_1)) {
|
|
||||||
|
if (!GPIO_CheckBit(&GPIOA->DATA, GPIOA_PIN_KEYBOARD_1))
|
||||||
|
{
|
||||||
Key = KEY_1;
|
Key = KEY_1;
|
||||||
goto Bye;
|
goto Bye;
|
||||||
}
|
}
|
||||||
if (!GPIO_CheckBit(&GPIOA->DATA, GPIOA_PIN_KEYBOARD_2)) {
|
|
||||||
|
if (!GPIO_CheckBit(&GPIOA->DATA, GPIOA_PIN_KEYBOARD_2))
|
||||||
|
{
|
||||||
Key = KEY_4;
|
Key = KEY_4;
|
||||||
goto Bye;
|
goto Bye;
|
||||||
}
|
}
|
||||||
if (!GPIO_CheckBit(&GPIOA->DATA, GPIOA_PIN_KEYBOARD_3)) {
|
|
||||||
|
if (!GPIO_CheckBit(&GPIOA->DATA, GPIOA_PIN_KEYBOARD_3))
|
||||||
|
{
|
||||||
Key = KEY_7;
|
Key = KEY_7;
|
||||||
goto Bye;
|
goto Bye;
|
||||||
}
|
}
|
||||||
@ -75,19 +87,26 @@ KEY_Code_t KEYBOARD_Poll(void)
|
|||||||
GPIO_SetBit(&GPIOA->DATA, GPIOA_PIN_KEYBOARD_4);
|
GPIO_SetBit(&GPIOA->DATA, GPIOA_PIN_KEYBOARD_4);
|
||||||
SYSTICK_DelayUs(1);
|
SYSTICK_DelayUs(1);
|
||||||
|
|
||||||
if (!GPIO_CheckBit(&GPIOA->DATA, GPIOA_PIN_KEYBOARD_0)) {
|
if (!GPIO_CheckBit(&GPIOA->DATA, GPIOA_PIN_KEYBOARD_0))
|
||||||
|
{
|
||||||
Key = KEY_UP;
|
Key = KEY_UP;
|
||||||
goto Bye;
|
goto Bye;
|
||||||
}
|
}
|
||||||
if (!GPIO_CheckBit(&GPIOA->DATA, GPIOA_PIN_KEYBOARD_1)) {
|
|
||||||
|
if (!GPIO_CheckBit(&GPIOA->DATA, GPIOA_PIN_KEYBOARD_1))
|
||||||
|
{
|
||||||
Key = KEY_2;
|
Key = KEY_2;
|
||||||
goto Bye;
|
goto Bye;
|
||||||
}
|
}
|
||||||
if (!GPIO_CheckBit(&GPIOA->DATA, GPIOA_PIN_KEYBOARD_2)) {
|
|
||||||
|
if (!GPIO_CheckBit(&GPIOA->DATA, GPIOA_PIN_KEYBOARD_2))
|
||||||
|
{
|
||||||
Key = KEY_5;
|
Key = KEY_5;
|
||||||
goto Bye;
|
goto Bye;
|
||||||
}
|
}
|
||||||
if (!GPIO_CheckBit(&GPIOA->DATA, GPIOA_PIN_KEYBOARD_3)) {
|
|
||||||
|
if (!GPIO_CheckBit(&GPIOA->DATA, GPIOA_PIN_KEYBOARD_3))
|
||||||
|
{
|
||||||
Key = KEY_8;
|
Key = KEY_8;
|
||||||
goto Bye;
|
goto Bye;
|
||||||
}
|
}
|
||||||
@ -105,19 +124,26 @@ KEY_Code_t KEYBOARD_Poll(void)
|
|||||||
GPIO_ClearBit(&GPIOA->DATA, GPIOA_PIN_KEYBOARD_6);
|
GPIO_ClearBit(&GPIOA->DATA, GPIOA_PIN_KEYBOARD_6);
|
||||||
SYSTICK_DelayUs(1);
|
SYSTICK_DelayUs(1);
|
||||||
|
|
||||||
if (!GPIO_CheckBit(&GPIOA->DATA, GPIOA_PIN_KEYBOARD_0)) {
|
if (!GPIO_CheckBit(&GPIOA->DATA, GPIOA_PIN_KEYBOARD_0))
|
||||||
|
{
|
||||||
Key = KEY_DOWN;
|
Key = KEY_DOWN;
|
||||||
goto Bye;
|
goto Bye;
|
||||||
}
|
}
|
||||||
if (!GPIO_CheckBit(&GPIOA->DATA, GPIOA_PIN_KEYBOARD_1)) {
|
|
||||||
|
if (!GPIO_CheckBit(&GPIOA->DATA, GPIOA_PIN_KEYBOARD_1))
|
||||||
|
{
|
||||||
Key = KEY_3;
|
Key = KEY_3;
|
||||||
goto Bye;
|
goto Bye;
|
||||||
}
|
}
|
||||||
if (!GPIO_CheckBit(&GPIOA->DATA, GPIOA_PIN_KEYBOARD_2)) {
|
|
||||||
|
if (!GPIO_CheckBit(&GPIOA->DATA, GPIOA_PIN_KEYBOARD_2))
|
||||||
|
{
|
||||||
Key = KEY_6;
|
Key = KEY_6;
|
||||||
goto Bye;
|
goto Bye;
|
||||||
}
|
}
|
||||||
if (!GPIO_CheckBit(&GPIOA->DATA, GPIOA_PIN_KEYBOARD_3)) {
|
|
||||||
|
if (!GPIO_CheckBit(&GPIOA->DATA, GPIOA_PIN_KEYBOARD_3))
|
||||||
|
{
|
||||||
Key = KEY_9;
|
Key = KEY_9;
|
||||||
goto Bye;
|
goto Bye;
|
||||||
}
|
}
|
||||||
@ -129,19 +155,26 @@ KEY_Code_t KEYBOARD_Poll(void)
|
|||||||
GPIO_SetBit(&GPIOA->DATA, GPIOA_PIN_KEYBOARD_6);
|
GPIO_SetBit(&GPIOA->DATA, GPIOA_PIN_KEYBOARD_6);
|
||||||
SYSTICK_DelayUs(1);
|
SYSTICK_DelayUs(1);
|
||||||
|
|
||||||
if (!GPIO_CheckBit(&GPIOA->DATA, GPIOA_PIN_KEYBOARD_0)) {
|
if (!GPIO_CheckBit(&GPIOA->DATA, GPIOA_PIN_KEYBOARD_0))
|
||||||
|
{
|
||||||
Key = KEY_EXIT;
|
Key = KEY_EXIT;
|
||||||
goto Bye;
|
goto Bye;
|
||||||
}
|
}
|
||||||
if (!GPIO_CheckBit(&GPIOA->DATA, GPIOA_PIN_KEYBOARD_1)) {
|
|
||||||
|
if (!GPIO_CheckBit(&GPIOA->DATA, GPIOA_PIN_KEYBOARD_1))
|
||||||
|
{
|
||||||
Key = KEY_STAR;
|
Key = KEY_STAR;
|
||||||
goto Bye;
|
goto Bye;
|
||||||
}
|
}
|
||||||
if (!GPIO_CheckBit(&GPIOA->DATA, GPIOA_PIN_KEYBOARD_2)) {
|
|
||||||
|
if (!GPIO_CheckBit(&GPIOA->DATA, GPIOA_PIN_KEYBOARD_2))
|
||||||
|
{
|
||||||
Key = KEY_0;
|
Key = KEY_0;
|
||||||
goto Bye;
|
goto Bye;
|
||||||
}
|
}
|
||||||
if (!GPIO_CheckBit(&GPIOA->DATA, GPIOA_PIN_KEYBOARD_3)) {
|
|
||||||
|
if (!GPIO_CheckBit(&GPIOA->DATA, GPIOA_PIN_KEYBOARD_3))
|
||||||
|
{
|
||||||
Key = KEY_F;
|
Key = KEY_F;
|
||||||
goto Bye;
|
goto Bye;
|
||||||
}
|
}
|
||||||
@ -154,4 +187,3 @@ Bye:
|
|||||||
|
|
||||||
return Key;
|
return Key;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -41,7 +41,7 @@ enum KEY_Code_t {
|
|||||||
KEY_PTT = 21,
|
KEY_PTT = 21,
|
||||||
KEY_SIDE2 = 22,
|
KEY_SIDE2 = 22,
|
||||||
KEY_SIDE1 = 23,
|
KEY_SIDE1 = 23,
|
||||||
KEY_INVALID = 255,
|
KEY_INVALID = 255
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef enum KEY_Code_t KEY_Code_t;
|
typedef enum KEY_Code_t KEY_Code_t;
|
||||||
|
BIN
firmware.bin
BIN
firmware.bin
Binary file not shown.
Binary file not shown.
409
font.c
409
font.c
@ -16,7 +16,8 @@
|
|||||||
|
|
||||||
#include "font.h"
|
#include "font.h"
|
||||||
|
|
||||||
const uint8_t gFontBig[95][16] = {
|
const uint8_t gFontBig[95][16] =
|
||||||
|
{
|
||||||
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||||
{0x00, 0x00, 0x70, 0xF8, 0xF8, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1B, 0x1B, 0x00, 0x00, 0x00},
|
{0x00, 0x00, 0x70, 0xF8, 0xF8, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1B, 0x1B, 0x00, 0x00, 0x00},
|
||||||
{0x00, 0x1E, 0x3E, 0x00, 0x00, 0x3E, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
{0x00, 0x1E, 0x3E, 0x00, 0x00, 0x3E, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||||
@ -111,10 +112,11 @@ const uint8_t gFontBig[95][16] = {
|
|||||||
{0x00, 0x80, 0x80, 0xF0, 0x78, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x1F, 0x10, 0x10, 0x00},
|
{0x00, 0x80, 0x80, 0xF0, 0x78, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x1F, 0x10, 0x10, 0x00},
|
||||||
{0x00, 0x00, 0x00, 0x78, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x1F, 0x00, 0x00, 0x00},
|
{0x00, 0x00, 0x00, 0x78, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x1F, 0x00, 0x00, 0x00},
|
||||||
{0x00, 0x08, 0x08, 0x78, 0xF0, 0x80, 0x80, 0x00, 0x00, 0x10, 0x10, 0x1F, 0x0F, 0x00, 0x00, 0x00},
|
{0x00, 0x08, 0x08, 0x78, 0xF0, 0x80, 0x80, 0x00, 0x00, 0x10, 0x10, 0x1F, 0x0F, 0x00, 0x00, 0x00},
|
||||||
{ 0x10, 0x18, 0x08, 0x18, 0x10, 0x18, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
{0x10, 0x18, 0x08, 0x18, 0x10, 0x18, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
|
||||||
};
|
};
|
||||||
|
|
||||||
const uint8_t gFontBigDigits[11][26] = {
|
const uint8_t gFontBigDigits[11][26] =
|
||||||
|
{
|
||||||
{0x00, 0xC0, 0xF0, 0xF8, 0x3C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1C, 0xF8, 0xF0, 0xE0, 0x00, 0x07, 0x1F, 0x3F, 0x78, 0x60, 0x60, 0x60, 0x60, 0x70, 0x3F, 0x1F, 0x0F},
|
{0x00, 0xC0, 0xF0, 0xF8, 0x3C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1C, 0xF8, 0xF0, 0xE0, 0x00, 0x07, 0x1F, 0x3F, 0x78, 0x60, 0x60, 0x60, 0x60, 0x70, 0x3F, 0x1F, 0x0F},
|
||||||
{0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0xFC, 0xFC, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x7F, 0x7F, 0x00, 0x00, 0x00, 0x00},
|
{0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0xFC, 0xFC, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x7F, 0x7F, 0x00, 0x00, 0x00, 0x00},
|
||||||
{0x00, 0x10, 0x38, 0x38, 0x1C, 0x0C, 0x0C, 0x0C, 0x0C, 0xFC, 0xF8, 0xF0, 0x00, 0x00, 0x70, 0x78, 0x7C, 0x7C, 0x6E, 0x66, 0x67, 0x67, 0x63, 0x61, 0x60, 0x00},
|
{0x00, 0x10, 0x38, 0x38, 0x1C, 0x0C, 0x0C, 0x0C, 0x0C, 0xFC, 0xF8, 0xF0, 0x00, 0x00, 0x70, 0x78, 0x7C, 0x7C, 0x6E, 0x66, 0x67, 0x67, 0x63, 0x61, 0x60, 0x00},
|
||||||
@ -125,10 +127,11 @@ const uint8_t gFontBigDigits[11][26] = {
|
|||||||
{0x00, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x8C, 0xEC, 0xFC, 0x3C, 0x1C, 0x00, 0x00, 0x00, 0x40, 0x60, 0x78, 0x7C, 0x1F, 0x07, 0x03, 0x00, 0x00, 0x00},
|
{0x00, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x8C, 0xEC, 0xFC, 0x3C, 0x1C, 0x00, 0x00, 0x00, 0x40, 0x60, 0x78, 0x7C, 0x1F, 0x07, 0x03, 0x00, 0x00, 0x00},
|
||||||
{0x00, 0x00, 0x78, 0xF8, 0xDC, 0x8C, 0x8C, 0x8C, 0x8C, 0xDC, 0xF8, 0x78, 0x00, 0x00, 0x1E, 0x3F, 0x3F, 0x73, 0x61, 0x61, 0x61, 0x61, 0x73, 0x3F, 0x3F, 0x1E},
|
{0x00, 0x00, 0x78, 0xF8, 0xDC, 0x8C, 0x8C, 0x8C, 0x8C, 0xDC, 0xF8, 0x78, 0x00, 0x00, 0x1E, 0x3F, 0x3F, 0x73, 0x61, 0x61, 0x61, 0x61, 0x73, 0x3F, 0x3F, 0x1E},
|
||||||
{0x00, 0xF0, 0xF8, 0xB8, 0x1C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1C, 0xB8, 0xF0, 0xE0, 0x00, 0x11, 0x33, 0x77, 0x67, 0x66, 0x66, 0x66, 0x76, 0x33, 0x3F, 0x1F, 0x07},
|
{0x00, 0xF0, 0xF8, 0xB8, 0x1C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1C, 0xB8, 0xF0, 0xE0, 0x00, 0x11, 0x33, 0x77, 0x67, 0x66, 0x66, 0x66, 0x76, 0x33, 0x3F, 0x1F, 0x07},
|
||||||
{ 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00 },
|
{0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00}
|
||||||
};
|
};
|
||||||
|
|
||||||
const uint8_t gFontSmallDigits[11][7] = {
|
const uint8_t gFontSmallDigits[11][7] =
|
||||||
|
{
|
||||||
{0x00, 0x3E, 0x41, 0x41, 0x41, 0x41, 0x3E},
|
{0x00, 0x3E, 0x41, 0x41, 0x41, 0x41, 0x3E},
|
||||||
{0x00, 0x00, 0x42, 0x7F, 0x40, 0x00, 0x00},
|
{0x00, 0x00, 0x42, 0x7F, 0x40, 0x00, 0x00},
|
||||||
{0x00, 0x62, 0x51, 0x51, 0x49, 0x49, 0x46},
|
{0x00, 0x62, 0x51, 0x51, 0x49, 0x49, 0x46},
|
||||||
@ -139,219 +142,210 @@ const uint8_t gFontSmallDigits[11][7] = {
|
|||||||
{0x00, 0x01, 0x71, 0x09, 0x05, 0x03, 0x00},
|
{0x00, 0x01, 0x71, 0x09, 0x05, 0x03, 0x00},
|
||||||
{0x00, 0x36, 0x49, 0x49, 0x49, 0x49, 0x36},
|
{0x00, 0x36, 0x49, 0x49, 0x49, 0x49, 0x36},
|
||||||
{0x00, 0x46, 0x49, 0x49, 0x49, 0x29, 0x1E},
|
{0x00, 0x46, 0x49, 0x49, 0x49, 0x29, 0x1E},
|
||||||
{ 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00 },
|
{0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00}
|
||||||
};
|
};
|
||||||
/*
|
/*
|
||||||
const uint64_t gFont8x8[16 * 6] =
|
const uint8_t gFont8x8[95][8] =
|
||||||
{
|
{
|
||||||
0x0000000000000000, // 'space'
|
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 'space'
|
||||||
0x0808080800080000, // '!'
|
{0x08, 0x08, 0x08, 0x08, 0x00, 0x08, 0x00, 0x00}, // '!'
|
||||||
0x2828000000000000, // '"'
|
{0x28, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // '"'
|
||||||
0x00287C287C280000, // '#'
|
{0x00, 0x28, 0x7C, 0x28, 0x7C, 0x28, 0x00, 0x00}, // '#'
|
||||||
0x081E281C0A3C0800, // '$'
|
{0x08, 0x1E, 0x28, 0x1C, 0x0A, 0x3C, 0x08, 0x00}, // '$'
|
||||||
0x6094681629060000, // '%'
|
{0x60, 0x94, 0x68, 0x16, 0x29, 0x06, 0x00, 0x00}, // '%'
|
||||||
0x1C20201926190000, // '&'
|
{0x1C, 0x20, 0x20, 0x19, 0x26, 0x19, 0x00, 0x00}, // '&'
|
||||||
0x0808000000000000, // '''
|
{0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // '''
|
||||||
0x0810202010080000, // '('
|
{0x08, 0x10, 0x20, 0x20, 0x10, 0x08, 0x00, 0x00}, // '('
|
||||||
0x1008040408100000, // ')'
|
{0x10, 0x08, 0x04, 0x04, 0x08, 0x10, 0x00, 0x00}, // ')'
|
||||||
0x2A1C3E1C2A000000, // '*'
|
{0x2A, 0x1C, 0x3E, 0x1C, 0x2A, 0x00, 0x00, 0x00}, // '*'
|
||||||
0x0008083E08080000, // '+'
|
{0x00, 0x08, 0x08, 0x3E, 0x08, 0x08, 0x00, 0x00}, // '+'
|
||||||
0x0000000000081000, // ','
|
{0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x00}, // ','
|
||||||
0x0000003C00000000, // '-'
|
{0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00}, // '-'
|
||||||
0x0000000000080000, // '.'
|
{0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00}, // '.'
|
||||||
0x0204081020400000, // '/'
|
{0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x00, 0x00}, // '/'
|
||||||
|
{0x18, 0x24, 0x42, 0x42, 0x24, 0x18, 0x00, 0x00}, // '0'
|
||||||
0x1824424224180000, // '0'
|
{0x08, 0x18, 0x08, 0x08, 0x08, 0x1C, 0x00, 0x00}, // '1'
|
||||||
0x08180808081C0000, // '1'
|
{0x3C, 0x42, 0x04, 0x18, 0x20, 0x7E, 0x00, 0x00}, // '2'
|
||||||
0x3C420418207E0000, // '2'
|
{0x3C, 0x42, 0x04, 0x18, 0x42, 0x3C, 0x00, 0x00}, // '3'
|
||||||
0x3C420418423C0000, // '3'
|
{0x08, 0x18, 0x28, 0x48, 0x7C, 0x08, 0x00, 0x00}, // '4'
|
||||||
0x081828487C080000, // '4'
|
{0x7E, 0x40, 0x7C, 0x02, 0x42, 0x3C, 0x00, 0x00}, // '5'
|
||||||
0x7E407C02423C0000, // '5'
|
{0x3C, 0x40, 0x7C, 0x42, 0x42, 0x3C, 0x00, 0x00}, // '6'
|
||||||
0x3C407C42423C0000, // '6'
|
{0x7E, 0x04, 0x08, 0x10, 0x20, 0x40, 0x00, 0x00}, // '7'
|
||||||
0x7E04081020400000, // '7'
|
{0x3C, 0x42, 0x3C, 0x42, 0x42, 0x3C, 0x00, 0x00}, // '8'
|
||||||
0x3C423C42423C0000, // '8'
|
{0x3C, 0x42, 0x42, 0x3E, 0x02, 0x3C, 0x00, 0x00}, // '9'
|
||||||
0x3C42423E023C0000, // '9'
|
{0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00}, // ':'
|
||||||
0x0000080000080000, // ':'
|
{0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x10, 0x00}, // ';'
|
||||||
0x0000080000081000, // ';'
|
{0x00, 0x06, 0x18, 0x60, 0x18, 0x06, 0x00, 0x00}, // '<'
|
||||||
0x0006186018060000, // '<'
|
{0x00, 0x00, 0x7E, 0x00, 0x7E, 0x00, 0x00, 0x00}, // '='
|
||||||
0x00007E007E000000, // '='
|
{0x00, 0x60, 0x18, 0x06, 0x18, 0x60, 0x00, 0x00}, // '>'
|
||||||
0x0060180618600000, // '>'
|
{0x38, 0x44, 0x04, 0x18, 0x00, 0x10, 0x00, 0x00}, // '?'
|
||||||
0x3844041800100000, // '?'
|
{0x00, 0x3C, 0x44, 0x9C, 0x94, 0x5C, 0x20, 0x1C}, // '@'
|
||||||
|
{0x18, 0x18, 0x24, 0x3C, 0x42, 0x42, 0x00, 0x00}, // 'A'
|
||||||
0x003C449C945C201C, // '@'
|
{0x78, 0x44, 0x78, 0x44, 0x44, 0x78, 0x00, 0x00}, // 'B'
|
||||||
0x1818243C42420000, // 'A'
|
{0x38, 0x44, 0x80, 0x80, 0x44, 0x38, 0x00, 0x00}, // 'C'
|
||||||
0x7844784444780000, // 'B'
|
{0x78, 0x44, 0x44, 0x44, 0x44, 0x78, 0x00, 0x00}, // 'D'
|
||||||
0x3844808044380000, // 'C'
|
{0x7C, 0x40, 0x78, 0x40, 0x40, 0x7C, 0x00, 0x00}, // 'E'
|
||||||
0x7844444444780000, // 'D'
|
{0x7C, 0x40, 0x78, 0x40, 0x40, 0x40, 0x00, 0x00}, // 'F'
|
||||||
0x7C407840407C0000, // 'E'
|
{0x38, 0x44, 0x80, 0x9C, 0x44, 0x38, 0x00, 0x00}, // 'G'
|
||||||
0x7C40784040400000, // 'F'
|
{0x42, 0x42, 0x7E, 0x42, 0x42, 0x42, 0x00, 0x00}, // 'H'
|
||||||
0x3844809C44380000, // 'G'
|
{0x3E, 0x08, 0x08, 0x08, 0x08, 0x3E, 0x00, 0x00}, // 'I'
|
||||||
0x42427E4242420000, // 'H'
|
{0x1C, 0x04, 0x04, 0x04, 0x44, 0x38, 0x00, 0x00}, // 'J'
|
||||||
0x3E080808083E0000, // 'I'
|
{0x44, 0x48, 0x50, 0x70, 0x48, 0x44, 0x00, 0x00}, // 'K'
|
||||||
0x1C04040444380000, // 'J'
|
{0x40, 0x40, 0x40, 0x40, 0x40, 0x7E, 0x00, 0x00}, // 'L'
|
||||||
0x4448507048440000, // 'K'
|
{0x41, 0x63, 0x55, 0x49, 0x41, 0x41, 0x00, 0x00}, // 'M'
|
||||||
0x40404040407E0000, // 'L'
|
{0x42, 0x62, 0x52, 0x4A, 0x46, 0x42, 0x00, 0x00}, // 'N'
|
||||||
0x4163554941410000, // 'M'
|
{0x1C, 0x22, 0x22, 0x22, 0x22, 0x1C, 0x00, 0x00}, // 'O'
|
||||||
0x4262524A46420000, // 'N'
|
{0x78, 0x44, 0x78, 0x40, 0x40, 0x40, 0x00, 0x00}, // 'P'
|
||||||
0x1C222222221C0000, // 'O'
|
{0x1C, 0x22, 0x22, 0x22, 0x22, 0x1C, 0x02, 0x00}, // 'Q'
|
||||||
|
{0x78, 0x44, 0x78, 0x50, 0x48, 0x44, 0x00, 0x00}, // 'R'
|
||||||
0x7844784040400000, // 'P'
|
{0x1C, 0x22, 0x10, 0x0C, 0x22, 0x1C, 0x00, 0x00}, // 'S'
|
||||||
0x1C222222221C0200, // 'Q'
|
{0x7F, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00}, // 'T'
|
||||||
0x7844785048440000, // 'R'
|
{0x42, 0x42, 0x42, 0x42, 0x42, 0x3C, 0x00, 0x00}, // 'U'
|
||||||
0x1C22100C221C0000, // 'S'
|
{0x81, 0x42, 0x42, 0x24, 0x24, 0x18, 0x00, 0x00}, // 'V'
|
||||||
0x7F08080808080000, // 'T'
|
{0x41, 0x41, 0x49, 0x55, 0x63, 0x41, 0x00, 0x00}, // 'W'
|
||||||
0x42424242423C0000, // 'U'
|
{0x42, 0x24, 0x18, 0x18, 0x24, 0x42, 0x00, 0x00}, // 'X'
|
||||||
0x8142422424180000, // 'V'
|
{0x41, 0x22, 0x14, 0x08, 0x08, 0x08, 0x00, 0x00}, // 'Y'
|
||||||
0x4141495563410000, // 'W'
|
{0x7E, 0x04, 0x08, 0x10, 0x20, 0x7E, 0x00, 0x00}, // 'Z'
|
||||||
0x4224181824420000, // 'X'
|
{0x38, 0x20, 0x20, 0x20, 0x20, 0x38, 0x00, 0x00}, // '['
|
||||||
0x4122140808080000, // 'Y'
|
{0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x00, 0x00}, // '\'
|
||||||
0x7E040810207E0000, // 'Z'
|
{0x38, 0x08, 0x08, 0x08, 0x08, 0x38, 0x00, 0x00}, // ']'
|
||||||
0x3820202020380000, // '['
|
{0x10, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // '^'
|
||||||
0x4020100804020000, // '\'
|
{0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00}, // '_'
|
||||||
0x3808080808380000, // ']'
|
{0x10, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // '`'
|
||||||
0x1028000000000000, // '^'
|
{0x00, 0x3C, 0x02, 0x3E, 0x46, 0x3A, 0x00, 0x00}, // 'a'
|
||||||
0x00000000007E0000, // '_'
|
{0x40, 0x40, 0x7C, 0x42, 0x62, 0x5C, 0x00, 0x00}, // 'b'
|
||||||
|
{0x00, 0x00, 0x1C, 0x20, 0x20, 0x1C, 0x00, 0x00}, // 'c'
|
||||||
0x1008000000000000, // '`'
|
{0x02, 0x02, 0x3E, 0x42, 0x46, 0x3A, 0x00, 0x00}, // 'd'
|
||||||
0x003C023E463A0000, // 'a'
|
{0x00, 0x3C, 0x42, 0x7E, 0x40, 0x3C, 0x00, 0x00}, // 'e'
|
||||||
0x40407C42625C0000, // 'b'
|
{0x00, 0x18, 0x10, 0x38, 0x10, 0x10, 0x00, 0x00}, // 'f'
|
||||||
0x00001C20201C0000, // 'c'
|
{0x00, 0x00, 0x34, 0x4C, 0x44, 0x34, 0x04, 0x38}, // 'g'
|
||||||
0x02023E42463A0000, // 'd'
|
{0x20, 0x20, 0x38, 0x24, 0x24, 0x24, 0x00, 0x00}, // 'h'
|
||||||
0x003C427E403C0000, // 'e'
|
{0x08, 0x00, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00}, // 'i'
|
||||||
0x0018103810100000, // 'f'
|
{0x08, 0x00, 0x18, 0x08, 0x08, 0x08, 0x08, 0x70}, // 'j'
|
||||||
0x0000344C44340438, // 'g'
|
{0x20, 0x20, 0x24, 0x28, 0x30, 0x2C, 0x00, 0x00}, // 'k'
|
||||||
0x2020382424240000, // 'h'
|
{0x10, 0x10, 0x10, 0x10, 0x10, 0x18, 0x00, 0x00}, // 'l'
|
||||||
0x0800080808080000, // 'i'
|
{0x00, 0x00, 0x66, 0x5A, 0x42, 0x42, 0x00, 0x00}, // 'm'
|
||||||
0x0800180808080870, // 'j'
|
{0x00, 0x00, 0x2E, 0x32, 0x22, 0x22, 0x00, 0x00}, // 'n'
|
||||||
0x20202428302C0000, // 'k'
|
{0x00, 0x00, 0x3C, 0x42, 0x42, 0x3C, 0x00, 0x00}, // 'o'
|
||||||
0x1010101010180000, // 'l'
|
{0x00, 0x00, 0x5C, 0x62, 0x42, 0x7C, 0x40, 0x40}, // 'p'
|
||||||
0x0000665A42420000, // 'm'
|
{0x00, 0x00, 0x3A, 0x46, 0x42, 0x3E, 0x02, 0x02}, // 'q'
|
||||||
0x00002E3222220000, // 'n'
|
{0x00, 0x00, 0x2C, 0x32, 0x20, 0x20, 0x00, 0x00}, // 'r'
|
||||||
0x00003C42423C0000, // 'o'
|
{0x00, 0x1C, 0x20, 0x18, 0x04, 0x38, 0x00, 0x00}, // 's'
|
||||||
|
{0x00, 0x10, 0x3C, 0x10, 0x10, 0x18, 0x00, 0x00}, // 't'
|
||||||
0x00005C62427C4040, // 'p'
|
{0x00, 0x00, 0x22, 0x22, 0x26, 0x1A, 0x00, 0x00}, // 'u'
|
||||||
0x00003A46423E0202, // 'q'
|
{0x00, 0x00, 0x42, 0x42, 0x24, 0x18, 0x00, 0x00}, // 'v'
|
||||||
0x00002C3220200000, // 'r'
|
{0x00, 0x00, 0x81, 0x81, 0x5A, 0x66, 0x00, 0x00}, // 'w'
|
||||||
0x001C201804380000, // 's'
|
{0x00, 0x00, 0x42, 0x24, 0x18, 0x66, 0x00, 0x00}, // 'x'
|
||||||
0x00103C1010180000, // 't'
|
{0x00, 0x00, 0x42, 0x22, 0x14, 0x08, 0x10, 0x60}, // 'y'
|
||||||
0x00002222261A0000, // 'u'
|
{0x00, 0x00, 0x3C, 0x08, 0x10, 0x3C, 0x00, 0x00}, // 'z'
|
||||||
0x0000424224180000, // 'v'
|
{0x1C, 0x10, 0x30, 0x30, 0x10, 0x1C, 0x00, 0x00}, // '{'
|
||||||
0x000081815A660000, // 'w'
|
{0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00}, // '|'
|
||||||
0x0000422418660000, // 'x'
|
{0x38, 0x08, 0x0C, 0x0C, 0x08, 0x38, 0x00, 0x00}, // '}'
|
||||||
0x0000422214081060, // 'y'
|
{0x00, 0x00, 0x00, 0x32, 0x4C, 0x00, 0x00, 0x00} // '~'
|
||||||
0x00003C08103C0000, // 'z'
|
|
||||||
0x1C103030101C0000, // '{'
|
|
||||||
0x0808080808080800, // '|'
|
|
||||||
0x38080C0C08380000, // '}'
|
|
||||||
0x000000324C000000, // '~'
|
|
||||||
0x7E7E7E7E7E7E0000 // 'DEL'
|
|
||||||
};
|
};
|
||||||
*/
|
*/
|
||||||
|
const uint8_t gFont5x8[95][5] =
|
||||||
const uint8_t gFont6x8[96][6] =
|
|
||||||
{
|
{
|
||||||
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
{0x00, 0x00, 0x00, 0x00, 0x00},
|
||||||
{ 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00 },
|
{0x00, 0x00, 0x5F, 0x00, 0x00},
|
||||||
{ 0x00, 0x07, 0x00, 0x07, 0x00, 0x00 },
|
{0x00, 0x07, 0x00, 0x07, 0x00},
|
||||||
{ 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00 },
|
{0x14, 0x7F, 0x14, 0x7F, 0x14},
|
||||||
{ 0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00 },
|
{0x24, 0x2A, 0x7F, 0x2A, 0x12},
|
||||||
{ 0x23, 0x13, 0x08, 0x64, 0x62, 0x00 },
|
{0x23, 0x13, 0x08, 0x64, 0x62},
|
||||||
{ 0x36, 0x49, 0x56, 0x20, 0x50, 0x00 },
|
{0x36, 0x49, 0x56, 0x20, 0x50},
|
||||||
{ 0x00, 0x08, 0x07, 0x03, 0x00, 0x00 },
|
{0x00, 0x08, 0x07, 0x03, 0x00},
|
||||||
{ 0x00, 0x1C, 0x22, 0x41, 0x00, 0x00 },
|
{0x00, 0x1C, 0x22, 0x41, 0x00},
|
||||||
{ 0x00, 0x41, 0x22, 0x1C, 0x00, 0x00 },
|
{0x00, 0x41, 0x22, 0x1C, 0x00},
|
||||||
{ 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00 },
|
{0x2A, 0x1C, 0x7F, 0x1C, 0x2A},
|
||||||
{ 0x08, 0x08, 0x3E, 0x08, 0x08, 0x00 },
|
{0x08, 0x08, 0x3E, 0x08, 0x08},
|
||||||
{ 0x00, 0x80, 0x70, 0x30, 0x00, 0x00 },
|
{0x00, 0x80, 0x70, 0x30, 0x00},
|
||||||
{ 0x08, 0x08, 0x08, 0x08, 0x08, 0x00 },
|
{0x08, 0x08, 0x08, 0x08, 0x08},
|
||||||
{ 0x00, 0x00, 0x60, 0x60, 0x00, 0x00 },
|
{0x00, 0x00, 0x60, 0x60, 0x00},
|
||||||
{ 0x20, 0x10, 0x08, 0x04, 0x02, 0x00 },
|
{0x20, 0x10, 0x08, 0x04, 0x02},
|
||||||
|
|
||||||
//{ 0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00 },
|
{0x3E, 0x41, 0x41, 0x41, 0x3E},
|
||||||
{ 0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00 },
|
{0x00, 0x42, 0x7F, 0x40, 0x00},
|
||||||
{ 0x00, 0x42, 0x7F, 0x40, 0x00, 0x00 },
|
{0x72, 0x49, 0x49, 0x49, 0x46},
|
||||||
{ 0x72, 0x49, 0x49, 0x49, 0x46, 0x00 },
|
{0x21, 0x41, 0x49, 0x4D, 0x33},
|
||||||
{ 0x21, 0x41, 0x49, 0x4D, 0x33, 0x00 },
|
{0x18, 0x14, 0x12, 0x7F, 0x10},
|
||||||
{ 0x18, 0x14, 0x12, 0x7F, 0x10, 0x00 },
|
{0x27, 0x45, 0x45, 0x45, 0x39},
|
||||||
{ 0x27, 0x45, 0x45, 0x45, 0x39, 0x00 },
|
{0x3C, 0x4A, 0x49, 0x49, 0x31},
|
||||||
{ 0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00 },
|
{0x41, 0x21, 0x11, 0x09, 0x07},
|
||||||
{ 0x41, 0x21, 0x11, 0x09, 0x07, 0x00 },
|
{0x36, 0x49, 0x49, 0x49, 0x36},
|
||||||
{ 0x36, 0x49, 0x49, 0x49, 0x36, 0x00 },
|
{0x46, 0x49, 0x49, 0x29, 0x1E},
|
||||||
{ 0x46, 0x49, 0x49, 0x29, 0x1E, 0x00 },
|
{0x00, 0x00, 0x14, 0x00, 0x00},
|
||||||
{ 0x00, 0x00, 0x14, 0x00, 0x00, 0x00 },
|
{0x00, 0x40, 0x34, 0x00, 0x00},
|
||||||
{ 0x00, 0x40, 0x34, 0x00, 0x00, 0x00 },
|
{0x00, 0x08, 0x14, 0x22, 0x41},
|
||||||
{ 0x00, 0x08, 0x14, 0x22, 0x41, 0x00 },
|
{0x14, 0x14, 0x14, 0x14, 0x14},
|
||||||
{ 0x14, 0x14, 0x14, 0x14, 0x14, 0x00 },
|
{0x00, 0x41, 0x22, 0x14, 0x08},
|
||||||
{ 0x00, 0x41, 0x22, 0x14, 0x08, 0x00 },
|
{0x02, 0x01, 0x59, 0x09, 0x06},
|
||||||
{ 0x02, 0x01, 0x59, 0x09, 0x06, 0x00 },
|
|
||||||
|
|
||||||
{ 0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00 },
|
{0x3E, 0x41, 0x5D, 0x59, 0x4E},
|
||||||
{ 0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00 },
|
{0x7C, 0x12, 0x11, 0x12, 0x7C},
|
||||||
{ 0x7F, 0x49, 0x49, 0x49, 0x36, 0x00 },
|
{0x7F, 0x49, 0x49, 0x49, 0x36},
|
||||||
{ 0x3E, 0x41, 0x41, 0x41, 0x22, 0x00 },
|
{0x3E, 0x41, 0x41, 0x41, 0x22},
|
||||||
{ 0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00 },
|
{0x7F, 0x41, 0x41, 0x41, 0x3E},
|
||||||
{ 0x7F, 0x49, 0x49, 0x49, 0x41, 0x00 },
|
{0x7F, 0x49, 0x49, 0x49, 0x41},
|
||||||
{ 0x7F, 0x09, 0x09, 0x09, 0x01, 0x00 },
|
{0x7F, 0x09, 0x09, 0x09, 0x01},
|
||||||
{ 0x3E, 0x41, 0x41, 0x51, 0x73, 0x00 },
|
{0x3E, 0x41, 0x41, 0x51, 0x73},
|
||||||
{ 0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00 },
|
{0x7F, 0x08, 0x08, 0x08, 0x7F},
|
||||||
{ 0x00, 0x41, 0x7F, 0x41, 0x00, 0x00 },
|
{0x00, 0x41, 0x7F, 0x41, 0x00},
|
||||||
{ 0x20, 0x40, 0x41, 0x3F, 0x01, 0x00 },
|
{0x20, 0x40, 0x41, 0x3F, 0x01},
|
||||||
{ 0x7F, 0x08, 0x14, 0x22, 0x41, 0x00 },
|
{0x7F, 0x08, 0x14, 0x22, 0x41},
|
||||||
{ 0x7F, 0x40, 0x40, 0x40, 0x40, 0x00 },
|
{0x7F, 0x40, 0x40, 0x40, 0x40},
|
||||||
{ 0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00 },
|
{0x7F, 0x02, 0x1C, 0x02, 0x7F},
|
||||||
{ 0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00 },
|
{0x7F, 0x04, 0x08, 0x10, 0x7F},
|
||||||
{ 0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00 },
|
{0x3E, 0x41, 0x41, 0x41, 0x3E},
|
||||||
|
|
||||||
{ 0x7F, 0x09, 0x09, 0x09, 0x06, 0x00 },
|
{0x7F, 0x09, 0x09, 0x09, 0x06},
|
||||||
{ 0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00 },
|
{0x3E, 0x41, 0x51, 0x21, 0x5E},
|
||||||
{ 0x7F, 0x09, 0x19, 0x29, 0x46, 0x00 },
|
{0x7F, 0x09, 0x19, 0x29, 0x46},
|
||||||
{ 0x26, 0x49, 0x49, 0x49, 0x32, 0x00 },
|
{0x26, 0x49, 0x49, 0x49, 0x32},
|
||||||
{ 0x03, 0x01, 0x7F, 0x01, 0x03, 0x00 },
|
{0x03, 0x01, 0x7F, 0x01, 0x03},
|
||||||
{ 0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00 },
|
{0x3F, 0x40, 0x40, 0x40, 0x3F},
|
||||||
{ 0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00 },
|
{0x1F, 0x20, 0x40, 0x20, 0x1F},
|
||||||
{ 0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00 },
|
{0x3F, 0x40, 0x38, 0x40, 0x3F},
|
||||||
{ 0x63, 0x14, 0x08, 0x14, 0x63, 0x00 },
|
{0x63, 0x14, 0x08, 0x14, 0x63},
|
||||||
{ 0x03, 0x04, 0x78, 0x04, 0x03, 0x00 },
|
{0x03, 0x04, 0x78, 0x04, 0x03},
|
||||||
{ 0x61, 0x59, 0x49, 0x4D, 0x43, 0x00 },
|
{0x61, 0x59, 0x49, 0x4D, 0x43},
|
||||||
{ 0x00, 0x7F, 0x41, 0x41, 0x41, 0x00 },
|
{0x00, 0x7F, 0x41, 0x41, 0x41},
|
||||||
{ 0x02, 0x04, 0x08, 0x10, 0x20, 0x00 },
|
{0x02, 0x04, 0x08, 0x10, 0x20},
|
||||||
{ 0x00, 0x41, 0x41, 0x41, 0x7F, 0x00 },
|
{0x00, 0x41, 0x41, 0x41, 0x7F},
|
||||||
{ 0x04, 0x02, 0x01, 0x02, 0x04, 0x00 },
|
{0x04, 0x02, 0x01, 0x02, 0x04},
|
||||||
{ 0x40, 0x40, 0x40, 0x40, 0x40, 0x00 },
|
{0x40, 0x40, 0x40, 0x40, 0x40},
|
||||||
|
|
||||||
{ 0x00, 0x03, 0x07, 0x08, 0x00, 0x00 },
|
{0x00, 0x03, 0x07, 0x08, 0x00},
|
||||||
{ 0x20, 0x54, 0x54, 0x78, 0x40, 0x00 },
|
{0x20, 0x54, 0x54, 0x78, 0x40},
|
||||||
{ 0x7F, 0x28, 0x44, 0x44, 0x38, 0x00 },
|
{0x7F, 0x28, 0x44, 0x44, 0x38},
|
||||||
{ 0x38, 0x44, 0x44, 0x44, 0x28, 0x00 },
|
{0x38, 0x44, 0x44, 0x44, 0x28},
|
||||||
{ 0x38, 0x44, 0x44, 0x28, 0x7F, 0x00 },
|
{0x38, 0x44, 0x44, 0x28, 0x7F},
|
||||||
{ 0x38, 0x54, 0x54, 0x54, 0x18, 0x00 },
|
{0x38, 0x54, 0x54, 0x54, 0x18},
|
||||||
{ 0x00, 0x08, 0x7E, 0x09, 0x02, 0x00 },
|
{0x00, 0x08, 0x7E, 0x09, 0x02},
|
||||||
{ 0x18, 0xA4, 0xA4, 0x9C, 0x78, 0x00 },
|
{0x18, 0xA4, 0xA4, 0x9C, 0x78},
|
||||||
{ 0x7F, 0x08, 0x04, 0x04, 0x78, 0x00 },
|
{0x7F, 0x08, 0x04, 0x04, 0x78},
|
||||||
{ 0x00, 0x44, 0x7D, 0x40, 0x00, 0x00 },
|
{0x00, 0x44, 0x7D, 0x40, 0x00},
|
||||||
{ 0x20, 0x40, 0x40, 0x3D, 0x00, 0x00 },
|
{0x20, 0x40, 0x40, 0x3D, 0x00},
|
||||||
{ 0x7F, 0x10, 0x28, 0x44, 0x00, 0x00 },
|
{0x7F, 0x10, 0x28, 0x44, 0x00},
|
||||||
{ 0x00, 0x41, 0x7F, 0x40, 0x00, 0x00 },
|
{0x00, 0x41, 0x7F, 0x40, 0x00},
|
||||||
{ 0x7C, 0x04, 0x78, 0x04, 0x78, 0x00 },
|
{0x7C, 0x04, 0x78, 0x04, 0x78},
|
||||||
{ 0x7C, 0x08, 0x04, 0x04, 0x78, 0x00 },
|
{0x7C, 0x08, 0x04, 0x04, 0x78},
|
||||||
{ 0x38, 0x44, 0x44, 0x44, 0x38, 0x00 },
|
{0x38, 0x44, 0x44, 0x44, 0x38},
|
||||||
|
|
||||||
{ 0xFC, 0x18, 0x24, 0x24, 0x18, 0x00 },
|
{0xFC, 0x18, 0x24, 0x24, 0x18},
|
||||||
{ 0x18, 0x24, 0x24, 0x18, 0xFC, 0x00 },
|
{0x18, 0x24, 0x24, 0x18, 0xFC},
|
||||||
{ 0x7C, 0x08, 0x04, 0x04, 0x08, 0x00 },
|
{0x7C, 0x08, 0x04, 0x04, 0x08},
|
||||||
{ 0x48, 0x54, 0x54, 0x54, 0x24, 0x00 },
|
{0x48, 0x54, 0x54, 0x54, 0x24},
|
||||||
{ 0x04, 0x04, 0x3F, 0x44, 0x24, 0x00 },
|
{0x04, 0x04, 0x3F, 0x44, 0x24},
|
||||||
{ 0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00 },
|
{0x3C, 0x40, 0x40, 0x20, 0x7C},
|
||||||
{ 0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00 },
|
{0x1C, 0x20, 0x40, 0x20, 0x1C},
|
||||||
{ 0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00 },
|
{0x3C, 0x40, 0x30, 0x40, 0x3C},
|
||||||
{ 0x44, 0x28, 0x10, 0x28, 0x44, 0x00 },
|
{0x44, 0x28, 0x10, 0x28, 0x44},
|
||||||
{ 0x4C, 0x90, 0x90, 0x90, 0x7C, 0x00 },
|
{0x4C, 0x90, 0x90, 0x90, 0x7C},
|
||||||
{ 0x44, 0x64, 0x54, 0x4C, 0x44, 0x00 },
|
{0x44, 0x64, 0x54, 0x4C, 0x44},
|
||||||
{ 0x00, 0x08, 0x36, 0x41, 0x00, 0x00 },
|
{0x00, 0x08, 0x36, 0x41, 0x00},
|
||||||
{ 0x00, 0x00, 0x77, 0x00, 0x00, 0x00 },
|
{0x00, 0x00, 0x77, 0x00, 0x00},
|
||||||
{ 0x00, 0x41, 0x36, 0x08, 0x00, 0x00 },
|
{0x00, 0x41, 0x36, 0x08, 0x00},
|
||||||
{ 0x02, 0x01, 0x02, 0x04, 0x02, 0x00 },
|
{0x02, 0x01, 0x02, 0x04, 0x02}
|
||||||
{ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }
|
|
||||||
};
|
};
|
||||||
/*
|
/*
|
||||||
// ASCII 5x7 font
|
// ASCII 5x7 font
|
||||||
@ -374,7 +368,6 @@ const uint8_t gFont5x7[96][5] =
|
|||||||
{0x00, 0x00, 0x60, 0x60, 0x00},
|
{0x00, 0x00, 0x60, 0x60, 0x00},
|
||||||
{0x20, 0x10, 0x08, 0x04, 0x02},
|
{0x20, 0x10, 0x08, 0x04, 0x02},
|
||||||
|
|
||||||
// {0x3E, 0x51, 0x49, 0x45, 0x3E}, // '0'
|
|
||||||
{0x3E, 0x41, 0x41, 0x41, 0x3E}, // '0'
|
{0x3E, 0x41, 0x41, 0x41, 0x3E}, // '0'
|
||||||
{0x00, 0x42, 0x7F, 0x40, 0x00},
|
{0x00, 0x42, 0x7F, 0x40, 0x00},
|
||||||
{0x72, 0x49, 0x49, 0x49, 0x46},
|
{0x72, 0x49, 0x49, 0x49, 0x46},
|
||||||
|
4
font.h
4
font.h
@ -23,8 +23,8 @@ extern const uint8_t gFontBig[95][16];
|
|||||||
extern const uint8_t gFontBigDigits[11][26];
|
extern const uint8_t gFontBigDigits[11][26];
|
||||||
extern const uint8_t gFontSmallDigits[11][7];
|
extern const uint8_t gFontSmallDigits[11][7];
|
||||||
|
|
||||||
//extern const uint64_t gFont8x8[16 * 6];
|
//extern const uint8_t gFont8x8[95][8];
|
||||||
extern const uint8_t gFont6x8[96][6];
|
extern const uint8_t gFont5x8[95][5];
|
||||||
//extern const uint8_t gFont5x7[96][5];
|
//extern const uint8_t gFont5x7[96][5];
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
71
radio.c
71
radio.c
@ -116,7 +116,7 @@ void RADIO_InitInfo(VFO_Info_t *pInfo, uint8_t ChannelSave, uint8_t Band, uint32
|
|||||||
pInfo->Band = Band;
|
pInfo->Band = Band;
|
||||||
pInfo->SCANLIST1_PARTICIPATION = true;
|
pInfo->SCANLIST1_PARTICIPATION = true;
|
||||||
pInfo->SCANLIST2_PARTICIPATION = true;
|
pInfo->SCANLIST2_PARTICIPATION = true;
|
||||||
pInfo->STEP_SETTING = STEP_25_0kHz;
|
pInfo->STEP_SETTING = STEP_12_5kHz; // STEP_25_0kHz;
|
||||||
pInfo->StepFrequency = 2500;
|
pInfo->StepFrequency = 2500;
|
||||||
pInfo->CHANNEL_SAVE = ChannelSave;
|
pInfo->CHANNEL_SAVE = ChannelSave;
|
||||||
pInfo->FrequencyReverse = false;
|
pInfo->FrequencyReverse = false;
|
||||||
@ -137,8 +137,6 @@ void RADIO_ConfigureChannel(uint8_t VFO, uint32_t Arg)
|
|||||||
uint8_t Band;
|
uint8_t Band;
|
||||||
bool bParticipation2;
|
bool bParticipation2;
|
||||||
uint16_t Base;
|
uint16_t Base;
|
||||||
uint8_t Data[8];
|
|
||||||
uint8_t Tmp;
|
|
||||||
uint32_t Frequency;
|
uint32_t Frequency;
|
||||||
VFO_Info_t *pRadio = &gEeprom.VfoInfo[VFO];
|
VFO_Info_t *pRadio = &gEeprom.VfoInfo[VFO];
|
||||||
|
|
||||||
@ -199,8 +197,8 @@ void RADIO_ConfigureChannel(uint8_t VFO, uint32_t Arg)
|
|||||||
}
|
}
|
||||||
|
|
||||||
Index = Channel - FREQ_CHANNEL_FIRST;
|
Index = Channel - FREQ_CHANNEL_FIRST;
|
||||||
RADIO_InitInfo(pRadio, Channel, Index, gLowerLimitFrequencyBandTable[Index]);
|
|
||||||
|
|
||||||
|
RADIO_InitInfo(pRadio, Channel, Index, gLowerLimitFrequencyBandTable[Index]);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -232,27 +230,28 @@ void RADIO_ConfigureChannel(uint8_t VFO, uint32_t Arg)
|
|||||||
|
|
||||||
if (Arg == 2 || Channel >= FREQ_CHANNEL_FIRST)
|
if (Arg == 2 || Channel >= FREQ_CHANNEL_FIRST)
|
||||||
{
|
{
|
||||||
EEPROM_ReadBuffer(Base + 8, Data, 8);
|
uint8_t Tmp;
|
||||||
|
uint8_t Data[8];
|
||||||
|
|
||||||
|
EEPROM_ReadBuffer(Base + 8, Data, sizeof(Data));
|
||||||
|
|
||||||
Tmp = Data[3] & 0x0F;
|
Tmp = Data[3] & 0x0F;
|
||||||
if (Tmp > 2)
|
if (Tmp > 2)
|
||||||
Tmp = 0;
|
Tmp = 0;
|
||||||
|
|
||||||
gEeprom.VfoInfo[VFO].FREQUENCY_DEVIATION_SETTING = Tmp;
|
gEeprom.VfoInfo[VFO].FREQUENCY_DEVIATION_SETTING = Tmp;
|
||||||
gEeprom.VfoInfo[VFO].AM_CHANNEL_MODE = !!(Data[3] & 0x10);
|
gEeprom.VfoInfo[VFO].AM_CHANNEL_MODE = !!(Data[3] & 0x10);
|
||||||
|
|
||||||
Tmp = Data[6];
|
Tmp = Data[6];
|
||||||
if (Tmp > STEP_8_33kHz)
|
if (Tmp > STEP_8_33kHz)
|
||||||
Tmp = STEP_25_0kHz;
|
Tmp = STEP_25_0kHz;
|
||||||
|
|
||||||
gEeprom.VfoInfo[VFO].STEP_SETTING = Tmp;
|
gEeprom.VfoInfo[VFO].STEP_SETTING = Tmp;
|
||||||
gEeprom.VfoInfo[VFO].StepFrequency = StepFrequencyTable[Tmp];
|
gEeprom.VfoInfo[VFO].StepFrequency = StepFrequencyTable[Tmp];
|
||||||
|
|
||||||
Tmp = Data[7];
|
Tmp = Data[7];
|
||||||
if (Tmp > 10)
|
if (Tmp > 10)
|
||||||
Tmp = 0;
|
Tmp = 0;
|
||||||
|
|
||||||
gEeprom.VfoInfo[VFO].SCRAMBLING_TYPE = Tmp;
|
gEeprom.VfoInfo[VFO].SCRAMBLING_TYPE = Tmp;
|
||||||
|
|
||||||
gEeprom.VfoInfo[VFO].ConfigRX.CodeType = (Data[2] >> 0) & 0x0F;
|
gEeprom.VfoInfo[VFO].ConfigRX.CodeType = (Data[2] >> 0) & 0x0F;
|
||||||
gEeprom.VfoInfo[VFO].ConfigTX.CodeType = (Data[2] >> 4) & 0x0F;
|
gEeprom.VfoInfo[VFO].ConfigTX.CodeType = (Data[2] >> 4) & 0x0F;
|
||||||
|
|
||||||
@ -307,10 +306,11 @@ void RADIO_ConfigureChannel(uint8_t VFO, uint32_t Arg)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
gEeprom.VfoInfo[VFO].FrequencyReverse = !!(Data[4] & 1u);
|
const uint8_t d4 = Data[4];
|
||||||
gEeprom.VfoInfo[VFO].CHANNEL_BANDWIDTH = !!(Data[4] & 2u);
|
gEeprom.VfoInfo[VFO].FrequencyReverse = !!(d4 & 0x01);
|
||||||
gEeprom.VfoInfo[VFO].OUTPUT_POWER = (Data[4] >> 2) & 3u;
|
gEeprom.VfoInfo[VFO].CHANNEL_BANDWIDTH = !!(d4 & 0x02);
|
||||||
gEeprom.VfoInfo[VFO].BUSY_CHANNEL_LOCK = !!(Data[4] & 0x10);
|
gEeprom.VfoInfo[VFO].OUTPUT_POWER = (d4 >> 2) & 0x03;
|
||||||
|
gEeprom.VfoInfo[VFO].BUSY_CHANNEL_LOCK = !!(d4 & 0x10);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Data[5] == 0xFF)
|
if (Data[5] == 0xFF)
|
||||||
@ -320,17 +320,17 @@ void RADIO_ConfigureChannel(uint8_t VFO, uint32_t Arg)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
gEeprom.VfoInfo[VFO].DTMF_DECODING_ENABLE = !!(Data[5] & 1u);
|
gEeprom.VfoInfo[VFO].DTMF_DECODING_ENABLE = !!(Data[5] & 0x01);
|
||||||
gEeprom.VfoInfo[VFO].DTMF_PTT_ID_TX_MODE = (Data[5] >> 1) & 3u;
|
gEeprom.VfoInfo[VFO].DTMF_PTT_ID_TX_MODE = (Data[5] >> 1) & 0x03;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
uint32_t Frequency;
|
uint32_t Frequency;
|
||||||
uint32_t Offset;
|
uint32_t Offset;
|
||||||
} Info;
|
} __attribute__((packed)) Info;
|
||||||
|
|
||||||
EEPROM_ReadBuffer(Base, &Info, 8);
|
EEPROM_ReadBuffer(Base, &Info, sizeof(Info));
|
||||||
|
|
||||||
pRadio->ConfigRX.Frequency = Info.Frequency;
|
pRadio->ConfigRX.Frequency = Info.Frequency;
|
||||||
|
|
||||||
@ -341,24 +341,23 @@ void RADIO_ConfigureChannel(uint8_t VFO, uint32_t Arg)
|
|||||||
}
|
}
|
||||||
|
|
||||||
Frequency = pRadio->ConfigRX.Frequency;
|
Frequency = pRadio->ConfigRX.Frequency;
|
||||||
|
|
||||||
|
// TODO: FIX-ME !!!
|
||||||
if (Frequency < gLowerLimitFrequencyBandTable[Band])
|
if (Frequency < gLowerLimitFrequencyBandTable[Band])
|
||||||
pRadio->ConfigRX.Frequency = gLowerLimitFrequencyBandTable[Band];
|
Frequency = gLowerLimitFrequencyBandTable[Band];
|
||||||
else
|
else
|
||||||
if (Frequency > gUpperLimitFrequencyBandTable[Band])
|
if (Frequency > gUpperLimitFrequencyBandTable[Band])
|
||||||
pRadio->ConfigRX.Frequency = gUpperLimitFrequencyBandTable[Band];
|
Frequency = gUpperLimitFrequencyBandTable[Band];
|
||||||
else
|
else
|
||||||
if (Channel >= FREQ_CHANNEL_FIRST)
|
if (Channel >= FREQ_CHANNEL_FIRST)
|
||||||
pRadio->ConfigRX.Frequency = FREQUENCY_FloorToStep(pRadio->ConfigRX.Frequency, gEeprom.VfoInfo[VFO].StepFrequency, gLowerLimitFrequencyBandTable[Band]);
|
Frequency = FREQUENCY_FloorToStep(Frequency, gEeprom.VfoInfo[VFO].StepFrequency, gLowerLimitFrequencyBandTable[Band]);
|
||||||
pRadio->ConfigRX.Frequency = Frequency;
|
pRadio->ConfigRX.Frequency = Frequency;
|
||||||
|
|
||||||
if (Frequency >= 10800000 && Frequency < 13600000)
|
if (Frequency >= 10800000 && Frequency < 13600000)
|
||||||
gEeprom.VfoInfo[VFO].FREQUENCY_DEVIATION_SETTING = FREQUENCY_DEVIATION_OFF;
|
gEeprom.VfoInfo[VFO].FREQUENCY_DEVIATION_SETTING = FREQUENCY_DEVIATION_OFF;
|
||||||
else
|
else
|
||||||
if (!IS_MR_CHANNEL(Channel))
|
if (!IS_MR_CHANNEL(Channel))
|
||||||
{
|
gEeprom.VfoInfo[VFO].FREQUENCY_OF_DEVIATION = FREQUENCY_FloorToStep(gEeprom.VfoInfo[VFO].FREQUENCY_OF_DEVIATION, gEeprom.VfoInfo[VFO].StepFrequency, 0);
|
||||||
Frequency = FREQUENCY_FloorToStep(gEeprom.VfoInfo[VFO].FREQUENCY_OF_DEVIATION, gEeprom.VfoInfo[VFO].StepFrequency, 0);
|
|
||||||
gEeprom.VfoInfo[VFO].FREQUENCY_OF_DEVIATION = Frequency;
|
|
||||||
}
|
|
||||||
|
|
||||||
RADIO_ApplyOffset(pRadio);
|
RADIO_ApplyOffset(pRadio);
|
||||||
|
|
||||||
@ -466,6 +465,7 @@ void RADIO_ApplyOffset(VFO_Info_t *pInfo)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// limit to 50MHz to 600MHz
|
||||||
if (Frequency < 5000000)
|
if (Frequency < 5000000)
|
||||||
Frequency = 5000000;
|
Frequency = 5000000;
|
||||||
else
|
else
|
||||||
@ -494,13 +494,12 @@ void RADIO_SelectVfos(void)
|
|||||||
if (gEeprom.DUAL_WATCH == DUAL_WATCH_CHAN_A)
|
if (gEeprom.DUAL_WATCH == DUAL_WATCH_CHAN_A)
|
||||||
gEeprom.TX_CHANNEL = 0;
|
gEeprom.TX_CHANNEL = 0;
|
||||||
|
|
||||||
gTxVfo = &gEeprom.VfoInfo[gEeprom.TX_CHANNEL];
|
|
||||||
|
|
||||||
if (gEeprom.CROSS_BAND_RX_TX == CROSS_BAND_OFF)
|
if (gEeprom.CROSS_BAND_RX_TX == CROSS_BAND_OFF)
|
||||||
gEeprom.RX_CHANNEL = gEeprom.TX_CHANNEL;
|
gEeprom.RX_CHANNEL = gEeprom.TX_CHANNEL;
|
||||||
else
|
else
|
||||||
gEeprom.RX_CHANNEL = (gEeprom.TX_CHANNEL == 0) ? 1 : 0;
|
gEeprom.RX_CHANNEL = (gEeprom.TX_CHANNEL == 0) ? 1 : 0;
|
||||||
|
|
||||||
|
gTxVfo = &gEeprom.VfoInfo[gEeprom.TX_CHANNEL];
|
||||||
gRxVfo = &gEeprom.VfoInfo[gEeprom.RX_CHANNEL];
|
gRxVfo = &gEeprom.VfoInfo[gEeprom.RX_CHANNEL];
|
||||||
|
|
||||||
RADIO_SelectCurrentVfo();
|
RADIO_SelectCurrentVfo();
|
||||||
@ -509,11 +508,11 @@ void RADIO_SelectVfos(void)
|
|||||||
void RADIO_SetupRegisters(bool bSwitchToFunction0)
|
void RADIO_SetupRegisters(bool bSwitchToFunction0)
|
||||||
{
|
{
|
||||||
BK4819_FilterBandwidth_t Bandwidth;
|
BK4819_FilterBandwidth_t Bandwidth;
|
||||||
uint16_t Status;
|
|
||||||
uint16_t InterruptMask;
|
uint16_t InterruptMask;
|
||||||
uint32_t Frequency;
|
uint32_t Frequency;
|
||||||
|
|
||||||
GPIO_ClearBit(&GPIOC->DATA, GPIOC_PIN_AUDIO_PATH);
|
GPIO_ClearBit(&GPIOC->DATA, GPIOC_PIN_AUDIO_PATH);
|
||||||
|
|
||||||
gEnableSpeaker = false;
|
gEnableSpeaker = false;
|
||||||
|
|
||||||
BK4819_ToggleGpioOut(BK4819_GPIO0_PIN28_GREEN, false);
|
BK4819_ToggleGpioOut(BK4819_GPIO0_PIN28_GREEN, false);
|
||||||
@ -521,17 +520,18 @@ void RADIO_SetupRegisters(bool bSwitchToFunction0)
|
|||||||
Bandwidth = gRxVfo->CHANNEL_BANDWIDTH;
|
Bandwidth = gRxVfo->CHANNEL_BANDWIDTH;
|
||||||
if (Bandwidth != BK4819_FILTER_BW_WIDE)
|
if (Bandwidth != BK4819_FILTER_BW_WIDE)
|
||||||
Bandwidth = BK4819_FILTER_BW_NARROW;
|
Bandwidth = BK4819_FILTER_BW_NARROW;
|
||||||
|
|
||||||
BK4819_SetFilterBandwidth(Bandwidth);
|
BK4819_SetFilterBandwidth(Bandwidth);
|
||||||
|
|
||||||
BK4819_ToggleGpioOut(BK4819_GPIO1_PIN29_RED, false);
|
BK4819_ToggleGpioOut(BK4819_GPIO1_PIN29_RED, false);
|
||||||
|
|
||||||
BK4819_SetupPowerAmplifier(0, 0);
|
BK4819_SetupPowerAmplifier(0, 0);
|
||||||
|
|
||||||
BK4819_ToggleGpioOut(BK4819_GPIO5_PIN1, false);
|
BK4819_ToggleGpioOut(BK4819_GPIO5_PIN1, false);
|
||||||
|
|
||||||
while (1)
|
while (1)
|
||||||
{
|
{
|
||||||
Status = BK4819_ReadRegister(BK4819_REG_0C);
|
const uint16_t Status = BK4819_ReadRegister(BK4819_REG_0C);
|
||||||
if ((Status & 1U) == 0) // INTERRUPT REQUEST
|
if ((Status & 1u) == 0) // INTERRUPT REQUEST
|
||||||
break;
|
break;
|
||||||
|
|
||||||
BK4819_WriteRegister(BK4819_REG_02, 0);
|
BK4819_WriteRegister(BK4819_REG_02, 0);
|
||||||
@ -559,8 +559,12 @@ void RADIO_SetupRegisters(bool bSwitchToFunction0)
|
|||||||
gRxVfo->SquelchCloseNoiseThresh,
|
gRxVfo->SquelchCloseNoiseThresh,
|
||||||
gRxVfo->SquelchCloseGlitchThresh,
|
gRxVfo->SquelchCloseGlitchThresh,
|
||||||
gRxVfo->SquelchOpenGlitchThresh);
|
gRxVfo->SquelchOpenGlitchThresh);
|
||||||
|
|
||||||
BK4819_PickRXFilterPathBasedOnFrequency(Frequency);
|
BK4819_PickRXFilterPathBasedOnFrequency(Frequency);
|
||||||
|
|
||||||
BK4819_ToggleGpioOut(BK4819_GPIO6_PIN2, true);
|
BK4819_ToggleGpioOut(BK4819_GPIO6_PIN2, true);
|
||||||
|
|
||||||
|
// AF Rx Gain and DAC
|
||||||
BK4819_WriteRegister(BK4819_REG_48, 0xB3A8);
|
BK4819_WriteRegister(BK4819_REG_48, 0xB3A8);
|
||||||
|
|
||||||
InterruptMask = 0 | BK4819_REG_3F_SQUELCH_FOUND | BK4819_REG_3F_SQUELCH_LOST;
|
InterruptMask = 0 | BK4819_REG_3F_SQUELCH_FOUND | BK4819_REG_3F_SQUELCH_LOST;
|
||||||
@ -571,11 +575,8 @@ void RADIO_SetupRegisters(bool bSwitchToFunction0)
|
|||||||
{
|
{
|
||||||
if (!gRxVfo->IsAM)
|
if (!gRxVfo->IsAM)
|
||||||
{
|
{
|
||||||
uint8_t CodeType;
|
uint8_t CodeType = gSelectedCodeType;
|
||||||
uint8_t Code;
|
uint8_t Code = gSelectedCode;
|
||||||
|
|
||||||
CodeType = gSelectedCodeType;
|
|
||||||
Code = gSelectedCode;
|
|
||||||
if (gCssScanMode == CSS_SCAN_MODE_OFF)
|
if (gCssScanMode == CSS_SCAN_MODE_OFF)
|
||||||
{
|
{
|
||||||
CodeType = gRxVfo->pRX->CodeType;
|
CodeType = gRxVfo->pRX->CodeType;
|
||||||
@ -655,6 +656,8 @@ void RADIO_SetupRegisters(bool bSwitchToFunction0)
|
|||||||
BK4819_EnableDTMF();
|
BK4819_EnableDTMF();
|
||||||
InterruptMask |= BK4819_REG_3F_DTMF_5TONE_FOUND;
|
InterruptMask |= BK4819_REG_3F_DTMF_5TONE_FOUND;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// enable/disable BK4819 interrupts
|
||||||
BK4819_WriteRegister(BK4819_REG_3F, InterruptMask);
|
BK4819_WriteRegister(BK4819_REG_3F, InterruptMask);
|
||||||
|
|
||||||
FUNCTION_Init();
|
FUNCTION_Init();
|
||||||
|
10
radio.h
10
radio.h
@ -48,7 +48,8 @@ enum PTT_ID_t {
|
|||||||
typedef enum PTT_ID_t PTT_ID_t;
|
typedef enum PTT_ID_t PTT_ID_t;
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
enum STEP_Setting_t {
|
enum STEP_Setting_t
|
||||||
|
{
|
||||||
STEP_2_5kHz,
|
STEP_2_5kHz,
|
||||||
STEP_5_0kHz,
|
STEP_5_0kHz,
|
||||||
STEP_6_25kHz,
|
STEP_6_25kHz,
|
||||||
@ -58,7 +59,8 @@ typedef enum PTT_ID_t PTT_ID_t;
|
|||||||
STEP_8_33kHz,
|
STEP_8_33kHz,
|
||||||
};
|
};
|
||||||
#else
|
#else
|
||||||
enum STEP_Setting_t {
|
enum STEP_Setting_t
|
||||||
|
{
|
||||||
STEP_1_25kHz,
|
STEP_1_25kHz,
|
||||||
STEP_2_5kHz,
|
STEP_2_5kHz,
|
||||||
STEP_6_25kHz,
|
STEP_6_25kHz,
|
||||||
@ -71,7 +73,8 @@ typedef enum PTT_ID_t PTT_ID_t;
|
|||||||
|
|
||||||
typedef enum STEP_Setting_t STEP_Setting_t;
|
typedef enum STEP_Setting_t STEP_Setting_t;
|
||||||
|
|
||||||
enum VfoState_t {
|
enum VfoState_t
|
||||||
|
{
|
||||||
VFO_STATE_NORMAL = 0,
|
VFO_STATE_NORMAL = 0,
|
||||||
VFO_STATE_BUSY,
|
VFO_STATE_BUSY,
|
||||||
VFO_STATE_BAT_LOW,
|
VFO_STATE_BAT_LOW,
|
||||||
@ -156,4 +159,3 @@ void RADIO_PrepareCssTX(void);
|
|||||||
void RADIO_SendEndOfTransmission(void);
|
void RADIO_SendEndOfTransmission(void);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
35
ui/helper.c
35
ui/helper.c
@ -92,50 +92,49 @@ void UI_PrintStringSmall(const char *pString, uint8_t Start, uint8_t End, uint8_
|
|||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
{ // 5x7 font
|
{ // 5x7 font
|
||||||
|
const unsigned int char_width = ARRAY_SIZE(gFont5x7[0]);
|
||||||
|
const unsigned int char_spacing = char_width + 1;
|
||||||
|
uint8_t *pFb = gFrameBuffer[Line] + Start;
|
||||||
for (i = 0; i < Length; i++)
|
for (i = 0; i < Length; i++)
|
||||||
{
|
{
|
||||||
if (pString[i] >= 32)
|
if (pString[i] >= 32)
|
||||||
{
|
{
|
||||||
const unsigned int Index = ((unsigned int)pString[i] - 32);
|
const unsigned int Index = ((unsigned int)pString[i] - 32);
|
||||||
if (Index < ARRAY_SIZE(gFont5x7))
|
if (Index < ARRAY_SIZE(gFont5x7))
|
||||||
{
|
memcpy(pfB + (i * char_spacing), &gFont5x7[Index], char_width);
|
||||||
const unsigned int ofs = (unsigned int)Start + (i * 6);
|
|
||||||
memcpy(gFrameBuffer[Line] + ofs, &gFont5x7[Index], ARRAY_SIZE(gFont5x7[Index]));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
#elif 1
|
||||||
#else
|
{ // 5x8 font
|
||||||
{ // 6x8 font
|
const unsigned int char_width = ARRAY_SIZE(gFont5x8[0]);
|
||||||
|
const unsigned int char_spacing = char_width + 1;
|
||||||
|
uint8_t *pFb = gFrameBuffer[Line] + Start;
|
||||||
for (i = 0; i < Length; i++)
|
for (i = 0; i < Length; i++)
|
||||||
{
|
{
|
||||||
if (pString[i] >= 32)
|
if (pString[i] >= 32)
|
||||||
{
|
{
|
||||||
const unsigned int Index = (unsigned int)pString[i] - 32;
|
const unsigned int Index = (unsigned int)pString[i] - 32;
|
||||||
if (Index < ARRAY_SIZE(gFont6x8))
|
if (Index < ARRAY_SIZE(gFont5x8))
|
||||||
{
|
memcpy(pFb + (i * char_spacing), &gFont5x8[Index], char_width);
|
||||||
const unsigned int ofs = (unsigned int)Start + (i * 7);
|
|
||||||
memcpy(gFrameBuffer[Line] + ofs, &gFont6x8[Index], ARRAY_SIZE(gFont6x8[Index]));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
#else
|
||||||
/*
|
{ // 8x8 font .. not yet working
|
||||||
{ // 8x8 font
|
const unsigned int char_width = ARRAY_SIZE(gFont8x8[0]);
|
||||||
|
const unsigned int char_spacing = char_width + 1;
|
||||||
|
uint8_t *pFb = gFrameBuffer[Line] + Start;
|
||||||
for (i = 0; i < Length; i++)
|
for (i = 0; i < Length; i++)
|
||||||
{
|
{
|
||||||
if (pString[i] >= 32)
|
if (pString[i] >= 32)
|
||||||
{
|
{
|
||||||
const unsigned int Index = (unsigned int)pString[i] - 32;
|
const unsigned int Index = (unsigned int)pString[i] - 32;
|
||||||
if (Index < ARRAY_SIZE(gFont8x8))
|
if (Index < ARRAY_SIZE(gFont8x8))
|
||||||
{
|
memcpy(pFb + (i * char_spacing), &gFont8x8[Index], char_width);
|
||||||
const unsigned int ofs = (unsigned int)Start + (i * 8);
|
|
||||||
memcpy(gFrameBuffer[Line] + ofs, &gFont8x8[Index], 8);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
*/
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -15,6 +15,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
#include "ARMCM0.h"
|
#include "ARMCM0.h"
|
||||||
#include "app/uart.h"
|
#include "app/uart.h"
|
||||||
#include "audio.h"
|
#include "audio.h"
|
||||||
|
188
ui/main.c
188
ui/main.c
@ -43,11 +43,13 @@ void UI_DisplayMain(void)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
//#ifndef SINGLE_VFO_CHAN
|
// #ifdef SINGLE_VFO_CHAN
|
||||||
for (vfo_num = 0; vfo_num < 2; vfo_num++)
|
// const bool single_vfo = (gEeprom.DUAL_WATCH == DUAL_WATCH_OFF && gEeprom.CROSS_BAND_RX_TX == CROSS_BAND_OFF) ? true : false;
|
||||||
// #else
|
// #else
|
||||||
// vfo_num = 0;
|
const bool single_vfo = false;
|
||||||
// #endif
|
// #endif
|
||||||
|
|
||||||
|
for (vfo_num = 0; vfo_num < 2; vfo_num++)
|
||||||
{
|
{
|
||||||
uint8_t Channel = gEeprom.TX_CHANNEL;
|
uint8_t Channel = gEeprom.TX_CHANNEL;
|
||||||
bool bIsSameVfo = !!(Channel == vfo_num);
|
bool bIsSameVfo = !!(Channel == vfo_num);
|
||||||
@ -56,6 +58,16 @@ void UI_DisplayMain(void)
|
|||||||
uint8_t *pLine1 = gFrameBuffer[Line + 1];
|
uint8_t *pLine1 = gFrameBuffer[Line + 1];
|
||||||
uint32_t frequency_Hz = 0;
|
uint32_t frequency_Hz = 0;
|
||||||
|
|
||||||
|
if (single_vfo)
|
||||||
|
{
|
||||||
|
if (!bIsSameVfo)
|
||||||
|
continue; // skip the unused vfo .. screen is dedicated to just a single VFO
|
||||||
|
|
||||||
|
//Line = 1;
|
||||||
|
//pLine0 = gFrameBuffer[Line + 0];
|
||||||
|
//pLine1 = gFrameBuffer[Line + 1];
|
||||||
|
}
|
||||||
|
|
||||||
if (gEeprom.DUAL_WATCH != DUAL_WATCH_OFF && gRxVfoIsActive)
|
if (gEeprom.DUAL_WATCH != DUAL_WATCH_OFF && gRxVfoIsActive)
|
||||||
Channel = gEeprom.RX_CHANNEL;
|
Channel = gEeprom.RX_CHANNEL;
|
||||||
|
|
||||||
@ -67,73 +79,53 @@ void UI_DisplayMain(void)
|
|||||||
|
|
||||||
if (!gDTMF_InputMode)
|
if (!gDTMF_InputMode)
|
||||||
{
|
{
|
||||||
|
memset(Contact, 0, sizeof(Contact));
|
||||||
if (gDTMF_CallState == DTMF_CALL_STATE_CALL_OUT)
|
if (gDTMF_CallState == DTMF_CALL_STATE_CALL_OUT)
|
||||||
{
|
strcpy(String, (gDTMF_State == DTMF_STATE_CALL_OUT_RSP) ? "CALL OUT(RSP)" : "CALL OUT");
|
||||||
if (gDTMF_State == DTMF_STATE_CALL_OUT_RSP)
|
|
||||||
strcpy(String, "CALL OUT(RSP)");
|
|
||||||
else
|
|
||||||
strcpy(String, "CALL OUT");
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
if (gDTMF_CallState == DTMF_CALL_STATE_RECEIVED)
|
if (gDTMF_CallState == DTMF_CALL_STATE_RECEIVED)
|
||||||
{
|
sprintf(String, "CALL:%s", (DTMF_FindContact(gDTMF_Caller, Contact)) ? Contact : gDTMF_Caller);
|
||||||
if (DTMF_FindContact(gDTMF_Caller, Contact))
|
|
||||||
sprintf(String, "CALL:%s", Contact);
|
|
||||||
else
|
|
||||||
sprintf(String, "CALL:%s", gDTMF_Caller);
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
if (gDTMF_IsTx)
|
if (gDTMF_IsTx)
|
||||||
{
|
strcpy(String, (gDTMF_State == DTMF_STATE_TX_SUCC) ? "DTMF TX(SUCC)" : "DTMF TX");
|
||||||
if (gDTMF_State == DTMF_STATE_TX_SUCC)
|
|
||||||
strcpy(String, "DTMF TX(SUCC)");
|
|
||||||
else
|
|
||||||
strcpy(String, "DTMF TX");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
sprintf(String, ">%s", gDTMF_InputBox);
|
sprintf(String, ">%s", gDTMF_InputBox);
|
||||||
|
|
||||||
UI_PrintString(String, 2, 127, vfo_num * 3, 8, false);
|
UI_PrintString(String, 2, 127, vfo_num * 3, 8, false);
|
||||||
|
|
||||||
memset(String, 0, sizeof(String));
|
memset(String, 0, sizeof(String));
|
||||||
memset(Contact, 0, sizeof(Contact));
|
|
||||||
|
|
||||||
if (!gDTMF_InputMode)
|
if (!gDTMF_InputMode)
|
||||||
{
|
{
|
||||||
|
memset(Contact, 0, sizeof(Contact));
|
||||||
if (gDTMF_CallState == DTMF_CALL_STATE_CALL_OUT)
|
if (gDTMF_CallState == DTMF_CALL_STATE_CALL_OUT)
|
||||||
{
|
{
|
||||||
if (DTMF_FindContact(gDTMF_String, Contact))
|
sprintf(String, ">%s", (DTMF_FindContact(gDTMF_String, Contact)) ? Contact : gDTMF_String);
|
||||||
sprintf(String, ">%s", Contact);
|
|
||||||
else
|
|
||||||
sprintf(String, ">%s", gDTMF_String);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
if (gDTMF_CallState == DTMF_CALL_STATE_RECEIVED)
|
if (gDTMF_CallState == DTMF_CALL_STATE_RECEIVED)
|
||||||
{
|
{
|
||||||
if (DTMF_FindContact(gDTMF_Callee, Contact))
|
sprintf(String, ">%s", (DTMF_FindContact(gDTMF_Callee, Contact)) ? Contact : gDTMF_Callee);
|
||||||
sprintf(String, ">%s", Contact);
|
|
||||||
else
|
|
||||||
sprintf(String, ">%s", gDTMF_Callee);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
if (gDTMF_IsTx)
|
if (gDTMF_IsTx)
|
||||||
sprintf(String, ">%s", gDTMF_String);
|
sprintf(String, ">%s", gDTMF_String);
|
||||||
}
|
}
|
||||||
|
|
||||||
UI_PrintString(String, 2, 127, 2 + (vfo_num * 3), 8, false);
|
UI_PrintString(String, 2, 127, 2 + (vfo_num * 3), 8, false);
|
||||||
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (bIsSameVfo)
|
// highlight the selected/used VFO with a marker
|
||||||
|
if (!single_vfo && bIsSameVfo)
|
||||||
memcpy(pLine0 + 2, BITMAP_VFO_Default, sizeof(BITMAP_VFO_Default));
|
memcpy(pLine0 + 2, BITMAP_VFO_Default, sizeof(BITMAP_VFO_Default));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
if (!single_vfo)
|
||||||
|
{ // highlight the selected/used VFO with a marker
|
||||||
if (bIsSameVfo)
|
if (bIsSameVfo)
|
||||||
memcpy(pLine0 + 2, BITMAP_VFO_Default, sizeof(BITMAP_VFO_Default));
|
memcpy(pLine0 + 2, BITMAP_VFO_Default, sizeof(BITMAP_VFO_Default));
|
||||||
else
|
//else
|
||||||
memcpy(pLine0 + 2, BITMAP_VFO_NotDefault, sizeof(BITMAP_VFO_NotDefault));
|
//memcpy(pLine0 + 2, BITMAP_VFO_NotDefault, sizeof(BITMAP_VFO_NotDefault));
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x8EE2
|
// 0x8EE2
|
||||||
@ -149,29 +141,23 @@ void UI_DisplayMain(void)
|
|||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
if (gEeprom.CROSS_BAND_RX_TX == CROSS_BAND_OFF)
|
Channel = (gEeprom.CROSS_BAND_RX_TX == CROSS_BAND_OFF) ? gEeprom.RX_CHANNEL : gEeprom.TX_CHANNEL;
|
||||||
Channel = gEeprom.RX_CHANNEL;
|
|
||||||
else
|
|
||||||
Channel = gEeprom.TX_CHANNEL;
|
|
||||||
|
|
||||||
if (Channel == vfo_num)
|
if (Channel == vfo_num)
|
||||||
{
|
{ // show the TX symbol
|
||||||
SomeValue = 1;
|
SomeValue = 1;
|
||||||
memcpy(pLine0 + 14, BITMAP_TX, sizeof(BITMAP_TX));
|
memcpy(pLine0 + 14, BITMAP_TX, sizeof(BITMAP_TX));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{ // show the RX symbol
|
||||||
SomeValue = 2;
|
SomeValue = 2;
|
||||||
|
|
||||||
if ((gCurrentFunction == FUNCTION_RECEIVE || gCurrentFunction == FUNCTION_MONITOR) && gEeprom.RX_CHANNEL == vfo_num)
|
if ((gCurrentFunction == FUNCTION_RECEIVE || gCurrentFunction == FUNCTION_MONITOR) && gEeprom.RX_CHANNEL == vfo_num)
|
||||||
memcpy(pLine0 + 14, BITMAP_RX, sizeof(BITMAP_RX));
|
memcpy(pLine0 + 14, BITMAP_RX, sizeof(BITMAP_RX));
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x8F3C
|
|
||||||
if (IS_MR_CHANNEL(gEeprom.ScreenChannel[vfo_num]))
|
if (IS_MR_CHANNEL(gEeprom.ScreenChannel[vfo_num]))
|
||||||
{
|
{ // show the mrmory channel number
|
||||||
memcpy(pLine1 + 2, BITMAP_M, sizeof(BITMAP_M));
|
memcpy(pLine1 + 2, BITMAP_M, sizeof(BITMAP_M));
|
||||||
if (gInputBoxIndex == 0 || gEeprom.TX_CHANNEL != vfo_num)
|
if (gInputBoxIndex == 0 || gEeprom.TX_CHANNEL != vfo_num)
|
||||||
NUMBER_ToDigits(gEeprom.ScreenChannel[vfo_num] + 1, String);
|
NUMBER_ToDigits(gEeprom.ScreenChannel[vfo_num] + 1, String);
|
||||||
@ -181,7 +167,7 @@ void UI_DisplayMain(void)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
if (IS_FREQ_CHANNEL(gEeprom.ScreenChannel[vfo_num]))
|
if (IS_FREQ_CHANNEL(gEeprom.ScreenChannel[vfo_num]))
|
||||||
{
|
{ // show the frequency band number
|
||||||
char c;
|
char c;
|
||||||
memcpy(pLine1 + 14, BITMAP_F, sizeof(BITMAP_F));
|
memcpy(pLine1 + 14, BITMAP_F, sizeof(BITMAP_F));
|
||||||
c = (gEeprom.ScreenChannel[vfo_num] - FREQ_CHANNEL_FIRST) + 1;
|
c = (gEeprom.ScreenChannel[vfo_num] - FREQ_CHANNEL_FIRST) + 1;
|
||||||
@ -189,7 +175,9 @@ void UI_DisplayMain(void)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
// show the 'N' narrow band symbol
|
||||||
memcpy(pLine1 + 7, BITMAP_NarrowBand, sizeof(BITMAP_NarrowBand));
|
memcpy(pLine1 + 7, BITMAP_NarrowBand, sizeof(BITMAP_NarrowBand));
|
||||||
|
|
||||||
if (gInputBoxIndex == 0 || gEeprom.TX_CHANNEL != vfo_num)
|
if (gInputBoxIndex == 0 || gEeprom.TX_CHANNEL != vfo_num)
|
||||||
{
|
{
|
||||||
NUMBER_ToDigits((gEeprom.ScreenChannel[vfo_num] - NOAA_CHANNEL_FIRST) + 1, String);
|
NUMBER_ToDigits((gEeprom.ScreenChannel[vfo_num] - NOAA_CHANNEL_FIRST) + 1, String);
|
||||||
@ -209,16 +197,13 @@ void UI_DisplayMain(void)
|
|||||||
#ifndef DISABLE_ALARM
|
#ifndef DISABLE_ALARM
|
||||||
if (gCurrentFunction == FUNCTION_TRANSMIT && gAlarmState == ALARM_STATE_ALARM)
|
if (gCurrentFunction == FUNCTION_TRANSMIT && gAlarmState == ALARM_STATE_ALARM)
|
||||||
{
|
{
|
||||||
if (gEeprom.CROSS_BAND_RX_TX == CROSS_BAND_OFF)
|
Channel = (gEeprom.CROSS_BAND_RX_TX == CROSS_BAND_OFF) ? gEeprom.RX_CHANNEL : gEeprom.TX_CHANNEL;
|
||||||
Channel = gEeprom.RX_CHANNEL;
|
|
||||||
else
|
|
||||||
Channel = gEeprom.TX_CHANNEL;
|
|
||||||
if (Channel == vfo_num)
|
if (Channel == vfo_num)
|
||||||
State = VFO_STATE_ALARM;
|
State = VFO_STATE_ALARM;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (State)
|
if (State != VFO_STATE_NORMAL)
|
||||||
{
|
{
|
||||||
uint8_t Width = 10;
|
uint8_t Width = 10;
|
||||||
|
|
||||||
@ -226,23 +211,23 @@ void UI_DisplayMain(void)
|
|||||||
|
|
||||||
switch (State)
|
switch (State)
|
||||||
{
|
{
|
||||||
case 1:
|
case VFO_STATE_BUSY:
|
||||||
strcpy(String, "BUSY");
|
strcpy(String, "BUSY");
|
||||||
Width = 15;
|
Width = 15;
|
||||||
break;
|
break;
|
||||||
case 2:
|
case VFO_STATE_BAT_LOW:
|
||||||
strcpy(String, "BAT LOW");
|
strcpy(String, "BAT LOW");
|
||||||
break;
|
break;
|
||||||
case 3:
|
case VFO_STATE_TX_DISABLE:
|
||||||
strcpy(String, "DISABLE");
|
strcpy(String, "DISABLE");
|
||||||
break;
|
break;
|
||||||
case 4:
|
case VFO_STATE_TIMEOUT:
|
||||||
strcpy(String, "TIMEOUT");
|
strcpy(String, "TIMEOUT");
|
||||||
break;
|
break;
|
||||||
case 5:
|
case VFO_STATE_ALARM:
|
||||||
strcpy(String, "ALARM");
|
strcpy(String, "ALARM");
|
||||||
break;
|
break;
|
||||||
case 6:
|
case VFO_STATE_VOL_HIGH:
|
||||||
sprintf(String, "VOL HIGH");
|
sprintf(String, "VOL HIGH");
|
||||||
Width = 8;
|
Width = 8;
|
||||||
break;
|
break;
|
||||||
@ -251,7 +236,7 @@ void UI_DisplayMain(void)
|
|||||||
UI_PrintString(String, 31, 111, vfo_num * 4, Width, true);
|
UI_PrintString(String, 31, 111, vfo_num * 4, Width, true);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{ // normal state
|
||||||
if (gInputBoxIndex && IS_FREQ_CHANNEL(gEeprom.ScreenChannel[vfo_num]) && gEeprom.TX_CHANNEL == vfo_num)
|
if (gInputBoxIndex && IS_FREQ_CHANNEL(gEeprom.ScreenChannel[vfo_num]) && gEeprom.TX_CHANNEL == vfo_num)
|
||||||
{
|
{
|
||||||
UI_DisplayFrequency(gInputBox, 31, vfo_num * 4, true, false);
|
UI_DisplayFrequency(gInputBox, 31, vfo_num * 4, true, false);
|
||||||
@ -260,23 +245,17 @@ void UI_DisplayMain(void)
|
|||||||
{
|
{
|
||||||
if (IS_MR_CHANNEL(gEeprom.ScreenChannel[vfo_num]))
|
if (IS_MR_CHANNEL(gEeprom.ScreenChannel[vfo_num]))
|
||||||
{
|
{
|
||||||
|
frequency_Hz = gEeprom.VfoInfo[vfo_num].pRX->Frequency;
|
||||||
if (gCurrentFunction == FUNCTION_TRANSMIT)
|
if (gCurrentFunction == FUNCTION_TRANSMIT)
|
||||||
{
|
{ // transmitting
|
||||||
if (gEeprom.CROSS_BAND_RX_TX == CROSS_BAND_OFF)
|
Channel = (gEeprom.CROSS_BAND_RX_TX == CROSS_BAND_OFF) ? gEeprom.RX_CHANNEL : gEeprom.TX_CHANNEL;
|
||||||
Channel = gEeprom.RX_CHANNEL;
|
|
||||||
else
|
|
||||||
Channel = gEeprom.TX_CHANNEL;
|
|
||||||
if (Channel == vfo_num)
|
if (Channel == vfo_num)
|
||||||
frequency_Hz = gEeprom.VfoInfo[vfo_num].pTX->Frequency;
|
frequency_Hz = gEeprom.VfoInfo[vfo_num].pTX->Frequency;
|
||||||
else
|
|
||||||
frequency_Hz = gEeprom.VfoInfo[vfo_num].pRX->Frequency;
|
|
||||||
}
|
}
|
||||||
else
|
|
||||||
frequency_Hz = gEeprom.VfoInfo[vfo_num].pRX->Frequency;
|
|
||||||
|
|
||||||
switch (gEeprom.CHANNEL_DISPLAY_MODE)
|
switch (gEeprom.CHANNEL_DISPLAY_MODE)
|
||||||
{
|
{
|
||||||
case MDF_FREQUENCY:
|
case MDF_FREQUENCY: // show the channel frequency
|
||||||
NUMBER_ToDigits(frequency_Hz, String);
|
NUMBER_ToDigits(frequency_Hz, String);
|
||||||
|
|
||||||
// show the first lot of the frequency digits
|
// show the first lot of the frequency digits
|
||||||
@ -296,13 +275,13 @@ void UI_DisplayMain(void)
|
|||||||
frequency_Hz = 0;
|
frequency_Hz = 0;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MDF_CHANNEL:
|
case MDF_CHANNEL: // show the channel number
|
||||||
sprintf(String, "CH-%03d", gEeprom.ScreenChannel[vfo_num] + 1);
|
sprintf(String, "CH-%03d", gEeprom.ScreenChannel[vfo_num] + 1);
|
||||||
UI_PrintString(String, 31, 112, vfo_num * 4, 8, true);
|
UI_PrintString(String, 31, 112, vfo_num * 4, 8, true);
|
||||||
frequency_Hz = 0;
|
frequency_Hz = 0;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MDF_NAME:
|
case MDF_NAME: // show the channel name
|
||||||
if (gEeprom.VfoInfo[vfo_num].Name[0] == 0 || gEeprom.VfoInfo[vfo_num].Name[0] == 0xFF)
|
if (gEeprom.VfoInfo[vfo_num].Name[0] == 0 || gEeprom.VfoInfo[vfo_num].Name[0] == 0xFF)
|
||||||
{ // channel number
|
{ // channel number
|
||||||
sprintf(String, "CH-%03d", gEeprom.ScreenChannel[vfo_num] + 1);
|
sprintf(String, "CH-%03d", gEeprom.ScreenChannel[vfo_num] + 1);
|
||||||
@ -316,7 +295,7 @@ void UI_DisplayMain(void)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
#ifdef CHAN_NAME_FREQ
|
#ifdef CHAN_NAME_FREQ
|
||||||
case MDF_NAME_FREQ:
|
case MDF_NAME_FREQ: // show the channel name and frequency
|
||||||
if (gEeprom.VfoInfo[vfo_num].Name[0] == 0 || gEeprom.VfoInfo[vfo_num].Name[0] == 0xFF)
|
if (gEeprom.VfoInfo[vfo_num].Name[0] == 0 || gEeprom.VfoInfo[vfo_num].Name[0] == 0xFF)
|
||||||
{ // channel number
|
{ // channel number
|
||||||
sprintf(String, "CH-%03d", gEeprom.ScreenChannel[vfo_num] + 1);
|
sprintf(String, "CH-%03d", gEeprom.ScreenChannel[vfo_num] + 1);
|
||||||
@ -334,62 +313,61 @@ void UI_DisplayMain(void)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
frequency_Hz = gEeprom.VfoInfo[vfo_num].pRX->Frequency;
|
||||||
if (gCurrentFunction == FUNCTION_TRANSMIT)
|
if (gCurrentFunction == FUNCTION_TRANSMIT)
|
||||||
{
|
{ // transmitting
|
||||||
if (gEeprom.CROSS_BAND_RX_TX == CROSS_BAND_OFF)
|
Channel = (gEeprom.CROSS_BAND_RX_TX == CROSS_BAND_OFF) ? gEeprom.RX_CHANNEL : gEeprom.TX_CHANNEL;
|
||||||
Channel = gEeprom.RX_CHANNEL;
|
|
||||||
else
|
|
||||||
Channel = gEeprom.TX_CHANNEL;
|
|
||||||
if (Channel == vfo_num)
|
if (Channel == vfo_num)
|
||||||
frequency_Hz = gEeprom.VfoInfo[vfo_num].pTX->Frequency;
|
frequency_Hz = gEeprom.VfoInfo[vfo_num].pTX->Frequency;
|
||||||
else
|
|
||||||
frequency_Hz = gEeprom.VfoInfo[vfo_num].pRX->Frequency;
|
|
||||||
}
|
}
|
||||||
else
|
|
||||||
frequency_Hz = gEeprom.VfoInfo[vfo_num].pRX->Frequency;
|
|
||||||
|
|
||||||
NUMBER_ToDigits(frequency_Hz, String); // 8 digits
|
NUMBER_ToDigits(frequency_Hz, String); // 8 digits
|
||||||
|
|
||||||
|
// show main part of frequency
|
||||||
UI_DisplayFrequency(String, 31, vfo_num * 4, false, false);
|
UI_DisplayFrequency(String, 31, vfo_num * 4, false, false);
|
||||||
|
// show the remaing 2 small frequency digits
|
||||||
|
UI_DisplaySmallDigits(2, String + 6, 112, Line + 1);
|
||||||
|
|
||||||
if (IS_MR_CHANNEL(gEeprom.ScreenChannel[vfo_num]))
|
if (IS_MR_CHANNEL(gEeprom.ScreenChannel[vfo_num]))
|
||||||
{
|
{
|
||||||
const uint8_t Attributes = gMR_ChannelAttributes[gEeprom.ScreenChannel[vfo_num]];
|
const uint8_t Attributes = gMR_ChannelAttributes[gEeprom.ScreenChannel[vfo_num]];
|
||||||
|
|
||||||
if (Attributes & MR_CH_SCANLIST1)
|
if (Attributes & MR_CH_SCANLIST1)
|
||||||
memcpy(pLine0 + 113, BITMAP_ScanList, sizeof(BITMAP_ScanList));
|
memcpy(pLine0 + 113, BITMAP_ScanList, sizeof(BITMAP_ScanList));
|
||||||
|
|
||||||
if (Attributes & MR_CH_SCANLIST2)
|
if (Attributes & MR_CH_SCANLIST2)
|
||||||
memcpy(pLine0 + 120, BITMAP_ScanList, sizeof(BITMAP_ScanList));
|
memcpy(pLine0 + 120, BITMAP_ScanList, sizeof(BITMAP_ScanList));
|
||||||
}
|
}
|
||||||
|
|
||||||
UI_DisplaySmallDigits(2, String + 6, 112, Line + 1);
|
|
||||||
|
|
||||||
frequency_Hz = 0;
|
frequency_Hz = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x926E
|
{ // show the TX/RX level
|
||||||
|
|
||||||
uint8_t Level = 0;
|
uint8_t Level = 0;
|
||||||
|
|
||||||
if (SomeValue == 1)
|
if (SomeValue == 1)
|
||||||
|
{ // TX power level
|
||||||
|
switch (gRxVfo->OUTPUT_POWER)
|
||||||
{
|
{
|
||||||
if (gRxVfo->OUTPUT_POWER == OUTPUT_POWER_LOW)
|
case OUTPUT_POWER_LOW:
|
||||||
Level = 2;
|
Level = 2;
|
||||||
else
|
break;
|
||||||
if (gRxVfo->OUTPUT_POWER == OUTPUT_POWER_MID)
|
case OUTPUT_POWER_MID:
|
||||||
Level = 4;
|
Level = 4;
|
||||||
else
|
break;
|
||||||
|
case OUTPUT_POWER_HIGH:
|
||||||
Level = 6;
|
Level = 6;
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
if (SomeValue == 2)
|
if (SomeValue == 2)
|
||||||
{
|
{ // RX signal level
|
||||||
if (gVFO_RSSI_Level[vfo_num])
|
if (gVFO_RSSI_Level[vfo_num])
|
||||||
Level = gVFO_RSSI_Level[vfo_num];
|
Level = gVFO_RSSI_Level[vfo_num];
|
||||||
}
|
}
|
||||||
|
|
||||||
// show TX power level
|
|
||||||
if (Level >= 1)
|
if (Level >= 1)
|
||||||
{
|
{
|
||||||
memcpy(pLine1 + 128 + 0, BITMAP_Antenna, sizeof(BITMAP_Antenna));
|
memcpy(pLine1 + 128 + 0, BITMAP_Antenna, sizeof(BITMAP_Antenna));
|
||||||
@ -405,25 +383,22 @@ void UI_DisplayMain(void)
|
|||||||
if (Level >= 6)
|
if (Level >= 6)
|
||||||
memcpy(pLine1 + 128 + 20, BITMAP_AntennaLevel6, sizeof(BITMAP_AntennaLevel6));
|
memcpy(pLine1 + 128 + 20, BITMAP_AntennaLevel6, sizeof(BITMAP_AntennaLevel6));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// 0x931E
|
|
||||||
if (gEeprom.VfoInfo[vfo_num].IsAM)
|
if (gEeprom.VfoInfo[vfo_num].IsAM)
|
||||||
{
|
{ // show the AM symbol
|
||||||
memcpy(pLine1 + 128 + 27, BITMAP_AM, sizeof(BITMAP_AM));
|
memcpy(pLine1 + 128 + 27, BITMAP_AM, sizeof(BITMAP_AM));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{ // show the CTCSS or DCS symbol
|
||||||
const FREQ_Config_t *pConfig;
|
const FREQ_Config_t *pConfig = (SomeValue == 1) ? gEeprom.VfoInfo[vfo_num].pTX : gEeprom.VfoInfo[vfo_num].pRX;
|
||||||
|
|
||||||
pConfig = (SomeValue == 1) ? gEeprom.VfoInfo[vfo_num].pTX : gEeprom.VfoInfo[vfo_num].pRX;
|
|
||||||
|
|
||||||
switch (pConfig->CodeType)
|
switch (pConfig->CodeType)
|
||||||
{
|
{
|
||||||
case CODE_TYPE_CONTINUOUS_TONE:
|
case CODE_TYPE_CONTINUOUS_TONE: // CTCSS
|
||||||
memcpy(pLine1 + 128 + 27, BITMAP_CT, sizeof(BITMAP_CT));
|
memcpy(pLine1 + 128 + 27, BITMAP_CT, sizeof(BITMAP_CT));
|
||||||
break;
|
break;
|
||||||
case CODE_TYPE_DIGITAL:
|
case CODE_TYPE_DIGITAL:
|
||||||
case CODE_TYPE_REVERSE_DIGITAL:
|
case CODE_TYPE_REVERSE_DIGITAL: // DCS
|
||||||
memcpy(pLine1 + 128 + 24, BITMAP_DCS, sizeof(BITMAP_DCS));
|
memcpy(pLine1 + 128 + 24, BITMAP_DCS, sizeof(BITMAP_DCS));
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@ -431,9 +406,8 @@ void UI_DisplayMain(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x936C
|
|
||||||
switch (gEeprom.VfoInfo[vfo_num].OUTPUT_POWER)
|
switch (gEeprom.VfoInfo[vfo_num].OUTPUT_POWER)
|
||||||
{
|
{ // show the TX power symbol
|
||||||
case OUTPUT_POWER_LOW:
|
case OUTPUT_POWER_LOW:
|
||||||
memcpy(pLine1 + 128 + 44, BITMAP_PowerLow, sizeof(BITMAP_PowerLow));
|
memcpy(pLine1 + 128 + 44, BITMAP_PowerLow, sizeof(BITMAP_PowerLow));
|
||||||
break;
|
break;
|
||||||
@ -446,22 +420,26 @@ void UI_DisplayMain(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (gEeprom.VfoInfo[vfo_num].ConfigRX.Frequency != gEeprom.VfoInfo[vfo_num].ConfigTX.Frequency)
|
if (gEeprom.VfoInfo[vfo_num].ConfigRX.Frequency != gEeprom.VfoInfo[vfo_num].ConfigTX.Frequency)
|
||||||
{
|
{ // show the TX offset symbol
|
||||||
if (gEeprom.VfoInfo[vfo_num].FREQUENCY_DEVIATION_SETTING == FREQUENCY_DEVIATION_ADD)
|
if (gEeprom.VfoInfo[vfo_num].FREQUENCY_DEVIATION_SETTING == FREQUENCY_DEVIATION_ADD)
|
||||||
memcpy(pLine1 + 128 + 54, BITMAP_Add, sizeof(BITMAP_Add));
|
memcpy(pLine1 + 128 + 54, BITMAP_Add, sizeof(BITMAP_Add));
|
||||||
if (gEeprom.VfoInfo[vfo_num].FREQUENCY_DEVIATION_SETTING == FREQUENCY_DEVIATION_SUB)
|
if (gEeprom.VfoInfo[vfo_num].FREQUENCY_DEVIATION_SETTING == FREQUENCY_DEVIATION_SUB)
|
||||||
memcpy(pLine1 + 128 + 54, BITMAP_Sub, sizeof(BITMAP_Sub));
|
memcpy(pLine1 + 128 + 54, BITMAP_Sub, sizeof(BITMAP_Sub));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// show the TX/RX reverse symbol
|
||||||
if (gEeprom.VfoInfo[vfo_num].FrequencyReverse)
|
if (gEeprom.VfoInfo[vfo_num].FrequencyReverse)
|
||||||
memcpy(pLine1 + 128 + 64, BITMAP_ReverseMode, sizeof(BITMAP_ReverseMode));
|
memcpy(pLine1 + 128 + 64, BITMAP_ReverseMode, sizeof(BITMAP_ReverseMode));
|
||||||
|
|
||||||
|
// show the narrow band symbol
|
||||||
if (gEeprom.VfoInfo[vfo_num].CHANNEL_BANDWIDTH == BANDWIDTH_NARROW)
|
if (gEeprom.VfoInfo[vfo_num].CHANNEL_BANDWIDTH == BANDWIDTH_NARROW)
|
||||||
memcpy(pLine1 + 128 + 74, BITMAP_NarrowBand, sizeof(BITMAP_NarrowBand));
|
memcpy(pLine1 + 128 + 74, BITMAP_NarrowBand, sizeof(BITMAP_NarrowBand));
|
||||||
|
|
||||||
|
// show the DTMF decoding symbol
|
||||||
if (gEeprom.VfoInfo[vfo_num].DTMF_DECODING_ENABLE || gSetting_KILLED)
|
if (gEeprom.VfoInfo[vfo_num].DTMF_DECODING_ENABLE || gSetting_KILLED)
|
||||||
memcpy(pLine1 + 128 + 84, BITMAP_DTMF, sizeof(BITMAP_DTMF));
|
memcpy(pLine1 + 128 + 84, BITMAP_DTMF, sizeof(BITMAP_DTMF));
|
||||||
|
|
||||||
|
// show the audio scramble symbol
|
||||||
if (gEeprom.VfoInfo[vfo_num].SCRAMBLING_TYPE && gSetting_ScrambleEnable)
|
if (gEeprom.VfoInfo[vfo_num].SCRAMBLING_TYPE && gSetting_ScrambleEnable)
|
||||||
memcpy(pLine1 + 128 + 110, BITMAP_Scramble, sizeof(BITMAP_Scramble));
|
memcpy(pLine1 + 128 + 110, BITMAP_Scramble, sizeof(BITMAP_Scramble));
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user