mirror of
https://github.com/OneOfEleven/uv-k5-firmware-custom.git
synced 2025-04-28 22:31:25 +03:00
Fix some warnings, made all the serial/uart comms packet structure packed, otherwise the compiler can totally mess up ones day there !
This commit is contained in:
parent
b19be17f01
commit
774e34bf43
4
Makefile
4
Makefile
@ -226,7 +226,9 @@ endif
|
|||||||
|
|
||||||
# catch any and all warnings
|
# catch any and all warnings
|
||||||
# better to bust than add new bugs
|
# better to bust than add new bugs
|
||||||
CFLAGS += -Wextra
|
#CFLAGS += -Wall
|
||||||
|
#CFLAGS += -Wextra
|
||||||
|
CFLAGS += -Wpedantic
|
||||||
|
|
||||||
CFLAGS += -DPRINTF_INCLUDE_CONFIG_H
|
CFLAGS += -DPRINTF_INCLUDE_CONFIG_H
|
||||||
CFLAGS += -DGIT_HASH=\"$(GIT_HASH)\"
|
CFLAGS += -DGIT_HASH=\"$(GIT_HASH)\"
|
||||||
|
@ -676,7 +676,10 @@ static void MAIN_Key_STAR(bool key_pressed, bool key_held)
|
|||||||
#endif
|
#endif
|
||||||
{ // start entering a DTMF string
|
{ // start entering a DTMF string
|
||||||
|
|
||||||
memmove(g_dtmf_input_box, g_dtmf_string, MIN(sizeof(g_dtmf_input_box), sizeof(g_dtmf_string) - 1));
|
memmove(
|
||||||
|
g_dtmf_input_box,
|
||||||
|
g_dtmf_string,
|
||||||
|
(sizeof(g_dtmf_input_box) <= (sizeof(g_dtmf_string) - 1)) ? sizeof(g_dtmf_input_box) : sizeof(g_dtmf_string) - 1);
|
||||||
g_dtmf_input_box_index = 0;
|
g_dtmf_input_box_index = 0;
|
||||||
g_dtmf_input_mode = true;
|
g_dtmf_input_mode = true;
|
||||||
|
|
||||||
|
75
app/uart.c
75
app/uart.c
@ -46,17 +46,17 @@
|
|||||||
typedef struct {
|
typedef struct {
|
||||||
uint16_t ID;
|
uint16_t ID;
|
||||||
uint16_t Size;
|
uint16_t Size;
|
||||||
} Header_t;
|
} __attribute__((packed)) Header_t;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
uint8_t Padding[2];
|
uint8_t Padding[2];
|
||||||
uint16_t ID;
|
uint16_t ID;
|
||||||
} Footer_t;
|
} __attribute__((packed)) Footer_t;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
Header_t Header;
|
Header_t Header;
|
||||||
uint32_t Timestamp;
|
uint32_t Timestamp;
|
||||||
} CMD_0514_t;
|
} __attribute__((packed)) CMD_0514_t;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
Header_t Header;
|
Header_t Header;
|
||||||
@ -66,8 +66,8 @@ typedef struct {
|
|||||||
bool g_is_in_lock_screen;
|
bool g_is_in_lock_screen;
|
||||||
uint8_t Padding[2];
|
uint8_t Padding[2];
|
||||||
uint32_t Challenge[4];
|
uint32_t Challenge[4];
|
||||||
} Data;
|
} __attribute__((packed)) Data;
|
||||||
} REPLY_0514_t;
|
} __attribute__((packed)) REPLY_0514_t;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
Header_t Header;
|
Header_t Header;
|
||||||
@ -75,7 +75,7 @@ typedef struct {
|
|||||||
uint8_t Size;
|
uint8_t Size;
|
||||||
uint8_t Padding;
|
uint8_t Padding;
|
||||||
uint32_t Timestamp;
|
uint32_t Timestamp;
|
||||||
} CMD_051B_t;
|
} __attribute__((packed)) CMD_051B_t;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
Header_t Header;
|
Header_t Header;
|
||||||
@ -84,8 +84,8 @@ typedef struct {
|
|||||||
uint8_t Size;
|
uint8_t Size;
|
||||||
uint8_t Padding;
|
uint8_t Padding;
|
||||||
uint8_t Data[128];
|
uint8_t Data[128];
|
||||||
} Data;
|
} __attribute__((packed)) Data;
|
||||||
} REPLY_051B_t;
|
} __attribute__((packed)) REPLY_051B_t;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
Header_t Header;
|
Header_t Header;
|
||||||
@ -93,15 +93,15 @@ typedef struct {
|
|||||||
uint8_t Size;
|
uint8_t Size;
|
||||||
bool bAllowPassword;
|
bool bAllowPassword;
|
||||||
uint32_t Timestamp;
|
uint32_t Timestamp;
|
||||||
uint8_t Data[0];
|
// uint8_t Data[0];
|
||||||
} CMD_051D_t;
|
} __attribute__((packed)) CMD_051D_t;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
Header_t Header;
|
Header_t Header;
|
||||||
struct {
|
struct {
|
||||||
uint16_t Offset;
|
uint16_t Offset;
|
||||||
} Data;
|
} __attribute__((packed)) Data;
|
||||||
} REPLY_051D_t;
|
} __attribute__((packed)) REPLY_051D_t;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
Header_t Header;
|
Header_t Header;
|
||||||
@ -109,34 +109,34 @@ typedef struct {
|
|||||||
uint16_t RSSI;
|
uint16_t RSSI;
|
||||||
uint8_t ExNoiseIndicator;
|
uint8_t ExNoiseIndicator;
|
||||||
uint8_t GlitchIndicator;
|
uint8_t GlitchIndicator;
|
||||||
} Data;
|
} __attribute__((packed)) Data;
|
||||||
} REPLY_0527_t;
|
} __attribute__((packed)) REPLY_0527_t;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
Header_t Header;
|
Header_t Header;
|
||||||
struct {
|
struct {
|
||||||
uint16_t Voltage;
|
uint16_t Voltage;
|
||||||
uint16_t Current;
|
uint16_t Current;
|
||||||
} Data;
|
} __attribute__((packed)) Data;
|
||||||
} REPLY_0529_t;
|
} __attribute__((packed)) REPLY_0529_t;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
Header_t Header;
|
Header_t Header;
|
||||||
uint32_t Response[4];
|
uint32_t Response[4];
|
||||||
} CMD_052D_t;
|
} __attribute__((packed)) CMD_052D_t;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
Header_t Header;
|
Header_t Header;
|
||||||
struct {
|
struct {
|
||||||
bool bIsLocked;
|
bool bIsLocked;
|
||||||
uint8_t Padding[3];
|
uint8_t Padding[3];
|
||||||
} Data;
|
} __attribute__((packed)) Data;
|
||||||
} REPLY_052D_t;
|
} __attribute__((packed)) REPLY_052D_t;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
Header_t Header;
|
Header_t Header;
|
||||||
uint32_t Timestamp;
|
uint32_t Timestamp;
|
||||||
} CMD_052F_t;
|
} __attribute__((packed)) CMD_052F_t;
|
||||||
|
|
||||||
static const uint8_t Obfuscation[16] =
|
static const uint8_t Obfuscation[16] =
|
||||||
{
|
{
|
||||||
@ -150,8 +150,8 @@ static union
|
|||||||
{
|
{
|
||||||
Header_t Header;
|
Header_t Header;
|
||||||
uint8_t Data[252];
|
uint8_t Data[252];
|
||||||
};
|
} __attribute__((packed));
|
||||||
} UART_Command;
|
} __attribute__((packed)) UART_Command;
|
||||||
|
|
||||||
static uint32_t Timestamp;
|
static uint32_t Timestamp;
|
||||||
static uint16_t g_uart_write_index;
|
static uint16_t g_uart_write_index;
|
||||||
@ -281,9 +281,9 @@ static void CMD_051B(const uint8_t *pBuffer)
|
|||||||
static void CMD_051D(const uint8_t *pBuffer)
|
static void CMD_051D(const uint8_t *pBuffer)
|
||||||
{
|
{
|
||||||
const CMD_051D_t *pCmd = (const CMD_051D_t *)pBuffer;
|
const CMD_051D_t *pCmd = (const CMD_051D_t *)pBuffer;
|
||||||
REPLY_051D_t Reply;
|
REPLY_051D_t Reply;
|
||||||
bool bReloadEeprom;
|
bool bReloadEeprom;
|
||||||
bool bIsLocked;
|
bool bIsLocked;
|
||||||
|
|
||||||
if (pCmd->Timestamp != Timestamp)
|
if (pCmd->Timestamp != Timestamp)
|
||||||
return;
|
return;
|
||||||
@ -314,7 +314,7 @@ static void CMD_051D(const uint8_t *pBuffer)
|
|||||||
bReloadEeprom = true;
|
bReloadEeprom = true;
|
||||||
|
|
||||||
if ((Offset < 0x0E98 || Offset >= 0x0EA0) || !g_is_in_lock_screen || pCmd->bAllowPassword)
|
if ((Offset < 0x0E98 || Offset >= 0x0EA0) || !g_is_in_lock_screen || pCmd->bAllowPassword)
|
||||||
EEPROM_WriteBuffer(Offset, &pCmd->Data[i * 8U]);
|
EEPROM_WriteBuffer(Offset, (uint8_t *)&pCmd + (i * 8)); // 1of11
|
||||||
}
|
}
|
||||||
|
|
||||||
if (bReloadEeprom)
|
if (bReloadEeprom)
|
||||||
@ -339,22 +339,27 @@ static void CMD_0527(void)
|
|||||||
|
|
||||||
static void CMD_0529(void)
|
static void CMD_0529(void)
|
||||||
{
|
{
|
||||||
|
uint16_t voltage;
|
||||||
|
uint16_t current;
|
||||||
REPLY_0529_t Reply;
|
REPLY_0529_t Reply;
|
||||||
|
|
||||||
Reply.Header.ID = 0x52A;
|
Reply.Header.ID = 0x52A;
|
||||||
Reply.Header.Size = sizeof(Reply.Data);
|
Reply.Header.Size = sizeof(Reply.Data);
|
||||||
|
|
||||||
// Original doesn't actually send current!
|
// Original doesn't actually send current!
|
||||||
BOARD_ADC_GetBatteryInfo(&Reply.Data.Voltage, &Reply.Data.Current);
|
BOARD_ADC_GetBatteryInfo(&voltage, ¤t);
|
||||||
|
Reply.Data.Voltage = voltage;
|
||||||
|
Reply.Data.Current = current;
|
||||||
|
|
||||||
SendReply(&Reply, sizeof(Reply));
|
SendReply(&Reply, sizeof(Reply));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void CMD_052D(const uint8_t *pBuffer)
|
static void CMD_052D(const uint8_t *pBuffer)
|
||||||
{
|
{
|
||||||
const CMD_052D_t *pCmd = (const CMD_052D_t *)pBuffer;
|
CMD_052D_t *pCmd = (CMD_052D_t *)pBuffer;
|
||||||
REPLY_052D_t Reply;
|
REPLY_052D_t Reply;
|
||||||
bool bIsLocked;
|
uint32_t response[4];
|
||||||
|
bool bIsLocked;
|
||||||
|
|
||||||
#ifdef ENABLE_FMRADIO
|
#ifdef ENABLE_FMRADIO
|
||||||
g_fm_radio_count_down_500ms = fm_radio_countdown_500ms;
|
g_fm_radio_count_down_500ms = fm_radio_countdown_500ms;
|
||||||
@ -365,11 +370,15 @@ static void CMD_052D(const uint8_t *pBuffer)
|
|||||||
bIsLocked = g_has_custom_aes_key;
|
bIsLocked = g_has_custom_aes_key;
|
||||||
|
|
||||||
if (!bIsLocked)
|
if (!bIsLocked)
|
||||||
bIsLocked = IsBadChallenge(g_custom_aes_key, g_challenge, pCmd->Response);
|
{
|
||||||
|
bIsLocked = IsBadChallenge(g_custom_aes_key, g_challenge, response);
|
||||||
|
memmove(pCmd->Response, response, sizeof(pCmd->Response));
|
||||||
|
}
|
||||||
|
|
||||||
if (!bIsLocked)
|
if (!bIsLocked)
|
||||||
{
|
{
|
||||||
bIsLocked = IsBadChallenge(g_default_aes_key, g_challenge, pCmd->Response);
|
bIsLocked = IsBadChallenge(g_default_aes_key, g_challenge, response);
|
||||||
|
memmove(pCmd->Response, response, sizeof(pCmd->Response));
|
||||||
if (bIsLocked)
|
if (bIsLocked)
|
||||||
g_try_count++;
|
g_try_count++;
|
||||||
}
|
}
|
||||||
@ -385,7 +394,7 @@ static void CMD_052D(const uint8_t *pBuffer)
|
|||||||
bIsLocked = true;
|
bIsLocked = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
g_is_locked = bIsLocked;
|
g_is_locked = bIsLocked;
|
||||||
Reply.Data.bIsLocked = bIsLocked;
|
Reply.Data.bIsLocked = bIsLocked;
|
||||||
|
|
||||||
SendReply(&Reply, sizeof(Reply));
|
SendReply(&Reply, sizeof(Reply));
|
||||||
|
502
bitmaps.c
502
bitmaps.c
@ -8,387 +8,387 @@ const uint8_t BITMAP_POWERSAVE[8] =
|
|||||||
{
|
{
|
||||||
#if 0
|
#if 0
|
||||||
// "S"
|
// "S"
|
||||||
0b00000000,
|
__extension__ 0b00000000,
|
||||||
0b00100110,
|
__extension__ 0b00100110,
|
||||||
0b01001001,
|
__extension__ 0b01001001,
|
||||||
0b01001001,
|
__extension__ 0b01001001,
|
||||||
0b01001001,
|
__extension__ 0b01001001,
|
||||||
0b01001001,
|
__extension__ 0b01001001,
|
||||||
0b01001001,
|
__extension__ 0b01001001,
|
||||||
0b00110010
|
__extension__ 0b00110010
|
||||||
#else
|
#else
|
||||||
// "PS"
|
// "PS"
|
||||||
0b00000000,
|
__extension__ 0b00000000,
|
||||||
0b01111111,
|
__extension__ 0b01111111,
|
||||||
0b00010001,
|
__extension__ 0b00010001,
|
||||||
0b00001110,
|
__extension__ 0b00001110,
|
||||||
0b00000000,
|
__extension__ 0b00000000,
|
||||||
0b01000110,
|
__extension__ 0b01000110,
|
||||||
0b01001001,
|
__extension__ 0b01001001,
|
||||||
0b00110001
|
__extension__ 0b00110001
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
const uint8_t BITMAP_TX[8] =
|
const uint8_t BITMAP_TX[8] =
|
||||||
{ // "TX"
|
{ // "TX"
|
||||||
0b00000000,
|
__extension__ 0b00000000,
|
||||||
0b00000001,
|
__extension__ 0b00000001,
|
||||||
0b00000001,
|
__extension__ 0b00000001,
|
||||||
0b01111111,
|
__extension__ 0b01111111,
|
||||||
0b00000001,
|
__extension__ 0b00000001,
|
||||||
0b00000001,
|
__extension__ 0b00000001,
|
||||||
0b00000000,
|
__extension__ 0b00000000,
|
||||||
0b00000000
|
__extension__ 0b00000000
|
||||||
};
|
};
|
||||||
|
|
||||||
const uint8_t BITMAP_RX[8] =
|
const uint8_t BITMAP_RX[8] =
|
||||||
{ // "RX"
|
{ // "RX"
|
||||||
0b00000000,
|
__extension__ 0b00000000,
|
||||||
0b01111111,
|
__extension__ 0b01111111,
|
||||||
0b00001001,
|
__extension__ 0b00001001,
|
||||||
0b00011001,
|
__extension__ 0b00011001,
|
||||||
0b01100110,
|
__extension__ 0b01100110,
|
||||||
0b00000000,
|
__extension__ 0b00000000,
|
||||||
0b00000000,
|
__extension__ 0b00000000,
|
||||||
0b00000000
|
__extension__ 0b00000000
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifndef ENABLE_REVERSE_BAT_SYMBOL
|
#ifndef ENABLE_REVERSE_BAT_SYMBOL
|
||||||
// Quansheng way (+ pole to the left)
|
// Quansheng way (+ pole to the left)
|
||||||
const uint8_t BITMAP_BATTERY_LEVEL[17] =
|
const uint8_t BITMAP_BATTERY_LEVEL[17] =
|
||||||
{
|
{
|
||||||
0b00000000,
|
__extension__ 0b00000000,
|
||||||
0b00111110,
|
__extension__ 0b00111110,
|
||||||
0b00100010,
|
__extension__ 0b00100010,
|
||||||
0b01000001,
|
__extension__ 0b01000001,
|
||||||
0b01000001,
|
__extension__ 0b01000001,
|
||||||
0b01000001,
|
__extension__ 0b01000001,
|
||||||
0b01000001,
|
__extension__ 0b01000001,
|
||||||
0b01000001,
|
__extension__ 0b01000001,
|
||||||
0b01000001,
|
__extension__ 0b01000001,
|
||||||
0b01000001,
|
__extension__ 0b01000001,
|
||||||
0b01000001,
|
__extension__ 0b01000001,
|
||||||
0b01000001,
|
__extension__ 0b01000001,
|
||||||
0b01000001,
|
__extension__ 0b01000001,
|
||||||
0b01000001,
|
__extension__ 0b01000001,
|
||||||
0b01000001,
|
__extension__ 0b01000001,
|
||||||
0b01000001,
|
__extension__ 0b01000001,
|
||||||
0b01111111
|
__extension__ 0b01111111
|
||||||
};
|
};
|
||||||
#else
|
#else
|
||||||
// reversed (+ pole to the right)
|
// reversed (+ pole to the right)
|
||||||
const uint8_t BITMAP_BATTERY_LEVEL[17] =
|
const uint8_t BITMAP_BATTERY_LEVEL[17] =
|
||||||
{
|
{
|
||||||
0b00000000,
|
__extension__ 0b00000000,
|
||||||
0b01111111,
|
__extension__ 0b01111111,
|
||||||
0b01000001,
|
__extension__ 0b01000001,
|
||||||
0b01000001,
|
__extension__ 0b01000001,
|
||||||
0b01000001,
|
__extension__ 0b01000001,
|
||||||
0b01000001,
|
__extension__ 0b01000001,
|
||||||
0b01000001,
|
__extension__ 0b01000001,
|
||||||
0b01000001,
|
__extension__ 0b01000001,
|
||||||
0b01000001,
|
__extension__ 0b01000001,
|
||||||
0b01000001,
|
__extension__ 0b01000001,
|
||||||
0b01000001,
|
__extension__ 0b01000001,
|
||||||
0b01000001,
|
__extension__ 0b01000001,
|
||||||
0b01000001,
|
__extension__ 0b01000001,
|
||||||
0b01000001,
|
__extension__ 0b01000001,
|
||||||
0b01000001,
|
__extension__ 0b01000001,
|
||||||
0b00100010,
|
__extension__ 0b00100010,
|
||||||
0b00111110
|
__extension__ 0b00111110
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const uint8_t BITMAP_USB_C[9] =
|
const uint8_t BITMAP_USB_C[9] =
|
||||||
{ // USB symbol
|
{ // USB symbol
|
||||||
0b00000000,
|
__extension__ 0b00000000,
|
||||||
0b00011100,
|
__extension__ 0b00011100,
|
||||||
0b00100111,
|
__extension__ 0b00100111,
|
||||||
0b01000100,
|
__extension__ 0b01000100,
|
||||||
0b01000100,
|
__extension__ 0b01000100,
|
||||||
0b01000100,
|
__extension__ 0b01000100,
|
||||||
0b01000100,
|
__extension__ 0b01000100,
|
||||||
0b00100111,
|
__extension__ 0b00100111,
|
||||||
0b00011100
|
__extension__ 0b00011100
|
||||||
};
|
};
|
||||||
|
|
||||||
const uint8_t BITMAP_KEYLOCK[6] =
|
const uint8_t BITMAP_KEYLOCK[6] =
|
||||||
{ // teeny padlock symbol
|
{ // teeny padlock symbol
|
||||||
0b00000000,
|
__extension__ 0b00000000,
|
||||||
0b01111100,
|
__extension__ 0b01111100,
|
||||||
0b01000110,
|
__extension__ 0b01000110,
|
||||||
0b01000101,
|
__extension__ 0b01000101,
|
||||||
0b01000110,
|
__extension__ 0b01000110,
|
||||||
0b01111100
|
__extension__ 0b01111100
|
||||||
};
|
};
|
||||||
|
|
||||||
const uint8_t BITMAP_F_KEY[6] =
|
const uint8_t BITMAP_F_KEY[6] =
|
||||||
{ // F-Key symbol
|
{ // F-Key symbol
|
||||||
0b00000000,
|
__extension__ 0b00000000,
|
||||||
0b01011111,
|
__extension__ 0b01011111,
|
||||||
0b01000101,
|
__extension__ 0b01000101,
|
||||||
0b01000101,
|
__extension__ 0b01000101,
|
||||||
0b01000101,
|
__extension__ 0b01000101,
|
||||||
0b01000001
|
__extension__ 0b01000001
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef ENABLE_VOX
|
#ifdef ENABLE_VOX
|
||||||
const uint8_t BITMAP_VOX[18] =
|
const uint8_t BITMAP_VOX[18] =
|
||||||
{ // "VOX"
|
{ // "VOX"
|
||||||
0b00000000,
|
__extension__ 0b00000000,
|
||||||
0b00011111,
|
__extension__ 0b00011111,
|
||||||
0b00100000,
|
__extension__ 0b00100000,
|
||||||
0b01000000,
|
__extension__ 0b01000000,
|
||||||
0b00100000,
|
__extension__ 0b00100000,
|
||||||
0b00011111,
|
__extension__ 0b00011111,
|
||||||
0b00000000,
|
__extension__ 0b00000000,
|
||||||
0b00111110,
|
__extension__ 0b00111110,
|
||||||
0b01000001,
|
__extension__ 0b01000001,
|
||||||
0b01000001,
|
__extension__ 0b01000001,
|
||||||
0b01000001,
|
__extension__ 0b01000001,
|
||||||
0b00111110,
|
__extension__ 0b00111110,
|
||||||
0b00000000,
|
__extension__ 0b00000000,
|
||||||
0b01100011,
|
__extension__ 0b01100011,
|
||||||
0b00010100,
|
__extension__ 0b00010100,
|
||||||
0b00001000,
|
__extension__ 0b00001000,
|
||||||
0b00010100,
|
__extension__ 0b00010100,
|
||||||
0b01100011
|
__extension__ 0b01100011
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
const uint8_t BITMAP_WX[12] =
|
const uint8_t BITMAP_WX[12] =
|
||||||
{ // "WX"
|
{ // "WX"
|
||||||
0b00000000,
|
__extension__ 0b00000000,
|
||||||
0b01111111,
|
__extension__ 0b01111111,
|
||||||
0b00100000,
|
__extension__ 0b00100000,
|
||||||
0b00011000,
|
__extension__ 0b00011000,
|
||||||
0b00100000,
|
__extension__ 0b00100000,
|
||||||
0b01111111,
|
__extension__ 0b01111111,
|
||||||
0b00000000,
|
__extension__ 0b00000000,
|
||||||
0b01100011,
|
__extension__ 0b01100011,
|
||||||
0b00010100,
|
__extension__ 0b00010100,
|
||||||
0b00001000,
|
__extension__ 0b00001000,
|
||||||
0b00010100,
|
__extension__ 0b00010100,
|
||||||
0b01100011
|
__extension__ 0b01100011
|
||||||
};
|
};
|
||||||
#else
|
#else
|
||||||
// 'XB' (cross-band/cross-VFO)
|
// 'XB' (cross-band/cross-VFO)
|
||||||
const uint8_t BITMAP_XB[12] =
|
const uint8_t BITMAP_XB[12] =
|
||||||
{ // "XB"
|
{ // "XB"
|
||||||
0b00000000,
|
__extension__ 0b00000000,
|
||||||
0b01100011,
|
__extension__ 0b01100011,
|
||||||
0b00010100,
|
__extension__ 0b00010100,
|
||||||
0b00001000,
|
__extension__ 0b00001000,
|
||||||
0b00010100,
|
__extension__ 0b00010100,
|
||||||
0b01100011,
|
__extension__ 0b01100011,
|
||||||
0b00000000,
|
__extension__ 0b00000000,
|
||||||
0b01111111,
|
__extension__ 0b01111111,
|
||||||
0b01001001,
|
__extension__ 0b01001001,
|
||||||
0b01001001,
|
__extension__ 0b01001001,
|
||||||
0b01001001,
|
__extension__ 0b01001001,
|
||||||
0b00110110
|
__extension__ 0b00110110
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const uint8_t BITMAP_TDR1[12] =
|
const uint8_t BITMAP_TDR1[12] =
|
||||||
{ // "DW"
|
{ // "DW"
|
||||||
0b00000000,
|
__extension__ 0b00000000,
|
||||||
0b01111111,
|
__extension__ 0b01111111,
|
||||||
0b01000001,
|
__extension__ 0b01000001,
|
||||||
0b01000001,
|
__extension__ 0b01000001,
|
||||||
0b01000001,
|
__extension__ 0b01000001,
|
||||||
0b00111110,
|
__extension__ 0b00111110,
|
||||||
0b00000000,
|
__extension__ 0b00000000,
|
||||||
0b01111111,
|
__extension__ 0b01111111,
|
||||||
0b00100000,
|
__extension__ 0b00100000,
|
||||||
0b00011000,
|
__extension__ 0b00011000,
|
||||||
0b00100000,
|
__extension__ 0b00100000,
|
||||||
0b01111111
|
__extension__ 0b01111111
|
||||||
};
|
};
|
||||||
|
|
||||||
const uint8_t BITMAP_TDR2[12] =
|
const uint8_t BITMAP_TDR2[12] =
|
||||||
{ // "><" .. DW on hold
|
{ // "><" .. DW on hold
|
||||||
0b00000000,
|
__extension__ 0b00000000,
|
||||||
0b00000000,
|
__extension__ 0b00000000,
|
||||||
0b00100010,
|
__extension__ 0b00100010,
|
||||||
0b00110110,
|
__extension__ 0b00110110,
|
||||||
0b00011100,
|
__extension__ 0b00011100,
|
||||||
0b00001000,
|
__extension__ 0b00001000,
|
||||||
0b00000000,
|
__extension__ 0b00000000,
|
||||||
0b00001000,
|
__extension__ 0b00001000,
|
||||||
0b00011100,
|
__extension__ 0b00011100,
|
||||||
0b00110110,
|
__extension__ 0b00110110,
|
||||||
0b00100010,
|
__extension__ 0b00100010,
|
||||||
0b00000000
|
__extension__ 0b00000000
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef ENABLE_VOICE
|
#ifdef ENABLE_VOICE
|
||||||
const uint8_t BITMAP_VOICE_PROMPT[9] =
|
const uint8_t BITMAP_VOICE_PROMPT[9] =
|
||||||
{
|
{
|
||||||
0b00000000,
|
__extension__ 0b00000000,
|
||||||
0b00011000,
|
__extension__ 0b00011000,
|
||||||
0b00011000,
|
__extension__ 0b00011000,
|
||||||
0b00100100,
|
__extension__ 0b00100100,
|
||||||
0b00100100,
|
__extension__ 0b00100100,
|
||||||
0b01000010,
|
__extension__ 0b01000010,
|
||||||
0b01000010,
|
__extension__ 0b01000010,
|
||||||
0b11111111,
|
__extension__ 0b11111111,
|
||||||
0b00011000
|
__extension__ 0b00011000
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef ENABLE_FMRADIO
|
#ifdef ENABLE_FMRADIO
|
||||||
const uint8_t BITMAP_FM[12] =
|
const uint8_t BITMAP_FM[12] =
|
||||||
{ // "FM"
|
{ // "FM"
|
||||||
0b00000000,
|
__extension__ 0b00000000,
|
||||||
0b01111111,
|
__extension__ 0b01111111,
|
||||||
0b00001001,
|
__extension__ 0b00001001,
|
||||||
0b00001001,
|
__extension__ 0b00001001,
|
||||||
0b00001001,
|
__extension__ 0b00001001,
|
||||||
0b00000001,
|
__extension__ 0b00000001,
|
||||||
|
|
||||||
0b00000000,
|
__extension__ 0b00000000,
|
||||||
0b01111111,
|
__extension__ 0b01111111,
|
||||||
0b00000010,
|
__extension__ 0b00000010,
|
||||||
0b00001100,
|
__extension__ 0b00001100,
|
||||||
0b00000010,
|
__extension__ 0b00000010,
|
||||||
0b01111111
|
__extension__ 0b01111111
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef ENABLE_NOAA
|
#ifdef ENABLE_NOAA
|
||||||
const uint8_t BITMAP_NOAA[12] =
|
const uint8_t BITMAP_NOAA[12] =
|
||||||
{ // "NS"
|
{ // "NS"
|
||||||
0b00000000,
|
__extension__ 0b00000000,
|
||||||
0b01111111,
|
__extension__ 0b01111111,
|
||||||
0b00000100,
|
__extension__ 0b00000100,
|
||||||
0b00001000,
|
__extension__ 0b00001000,
|
||||||
0b00010000,
|
__extension__ 0b00010000,
|
||||||
0b01111111,
|
__extension__ 0b01111111,
|
||||||
|
|
||||||
0b00000000,
|
__extension__ 0b00000000,
|
||||||
0b01000110,
|
__extension__ 0b01000110,
|
||||||
0b01001001,
|
__extension__ 0b01001001,
|
||||||
0b01001001,
|
__extension__ 0b01001001,
|
||||||
0b01001001,
|
__extension__ 0b01001001,
|
||||||
0b00110001
|
__extension__ 0b00110001
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const uint8_t BITMAP_ANTENNA[5] =
|
const uint8_t BITMAP_ANTENNA[5] =
|
||||||
{
|
{
|
||||||
0b00000011,
|
__extension__ 0b00000011,
|
||||||
0b00000101,
|
__extension__ 0b00000101,
|
||||||
0b01111111,
|
__extension__ 0b01111111,
|
||||||
0b00000101,
|
__extension__ 0b00000101,
|
||||||
0b00000011
|
__extension__ 0b00000011
|
||||||
};
|
};
|
||||||
|
|
||||||
const uint8_t BITMAP_ANTENNA_LEVEL1[3] =
|
const uint8_t BITMAP_ANTENNA_LEVEL1[3] =
|
||||||
{
|
{
|
||||||
0b01100000,
|
__extension__ 0b01100000,
|
||||||
0b01100000,
|
__extension__ 0b01100000,
|
||||||
0b00000000
|
__extension__ 0b00000000
|
||||||
};
|
};
|
||||||
|
|
||||||
const uint8_t BITMAP_ANTENNA_LEVEL2[3] =
|
const uint8_t BITMAP_ANTENNA_LEVEL2[3] =
|
||||||
{
|
{
|
||||||
0b01110000,
|
__extension__ 0b01110000,
|
||||||
0b01110000,
|
__extension__ 0b01110000,
|
||||||
0b00000000
|
__extension__ 0b00000000
|
||||||
};
|
};
|
||||||
|
|
||||||
const uint8_t BITMAP_ANTENNA_LEVEL3[3] =
|
const uint8_t BITMAP_ANTENNA_LEVEL3[3] =
|
||||||
{
|
{
|
||||||
0b01111000,
|
__extension__ 0b01111000,
|
||||||
0b01111000,
|
__extension__ 0b01111000,
|
||||||
0b00000000
|
__extension__ 0b00000000
|
||||||
};
|
};
|
||||||
|
|
||||||
const uint8_t BITMAP_ANTENNA_LEVEL4[3] =
|
const uint8_t BITMAP_ANTENNA_LEVEL4[3] =
|
||||||
{
|
{
|
||||||
0b01111100,
|
__extension__ 0b01111100,
|
||||||
0b01111100,
|
__extension__ 0b01111100,
|
||||||
0b00000000
|
__extension__ 0b00000000
|
||||||
};
|
};
|
||||||
|
|
||||||
const uint8_t BITMAP_ANTENNA_LEVEL5[3] =
|
const uint8_t BITMAP_ANTENNA_LEVEL5[3] =
|
||||||
{
|
{
|
||||||
0b01111110,
|
__extension__ 0b01111110,
|
||||||
0b01111110,
|
__extension__ 0b01111110,
|
||||||
0b00000000
|
__extension__ 0b00000000
|
||||||
};
|
};
|
||||||
|
|
||||||
const uint8_t BITMAP_ANTENNA_LEVEL6[3] =
|
const uint8_t BITMAP_ANTENNA_LEVEL6[3] =
|
||||||
{
|
{
|
||||||
0b01111111,
|
__extension__ 0b01111111,
|
||||||
0b01111111,
|
__extension__ 0b01111111,
|
||||||
0b00000000
|
__extension__ 0b00000000
|
||||||
};
|
};
|
||||||
|
|
||||||
const uint8_t BITMAP_MARKER[8] =
|
const uint8_t BITMAP_MARKER[8] =
|
||||||
{
|
{
|
||||||
0b11111111,
|
__extension__ 0b11111111,
|
||||||
0b11111111,
|
__extension__ 0b11111111,
|
||||||
0b01111110,
|
__extension__ 0b01111110,
|
||||||
0b01111110,
|
__extension__ 0b01111110,
|
||||||
0b00111100,
|
__extension__ 0b00111100,
|
||||||
0b00111100,
|
__extension__ 0b00111100,
|
||||||
0b00011000,
|
__extension__ 0b00011000,
|
||||||
0b00011000
|
__extension__ 0b00011000
|
||||||
};
|
};
|
||||||
|
|
||||||
const uint8_t BITMAP_VFO_DEFAULT[8] =
|
const uint8_t BITMAP_VFO_DEFAULT[8] =
|
||||||
{
|
{
|
||||||
0b00000000,
|
__extension__ 0b00000000,
|
||||||
0b01111111,
|
__extension__ 0b01111111,
|
||||||
0b01111111,
|
__extension__ 0b01111111,
|
||||||
0b00111110,
|
__extension__ 0b00111110,
|
||||||
0b00111110,
|
__extension__ 0b00111110,
|
||||||
0b00011100,
|
__extension__ 0b00011100,
|
||||||
0b00011100,
|
__extension__ 0b00011100,
|
||||||
0b00001000
|
__extension__ 0b00001000
|
||||||
};
|
};
|
||||||
|
|
||||||
const uint8_t BITMAP_VFO_NOT_DEFAULT[8] =
|
const uint8_t BITMAP_VFO_NOT_DEFAULT[8] =
|
||||||
{
|
{
|
||||||
0b00000000,
|
__extension__ 0b00000000,
|
||||||
0b01000001,
|
__extension__ 0b01000001,
|
||||||
0b01000001,
|
__extension__ 0b01000001,
|
||||||
0b00100010,
|
__extension__ 0b00100010,
|
||||||
0b00100010,
|
__extension__ 0b00100010,
|
||||||
0b00010100,
|
__extension__ 0b00010100,
|
||||||
0b00010100,
|
__extension__ 0b00010100,
|
||||||
0b00001000
|
__extension__ 0b00001000
|
||||||
};
|
};
|
||||||
|
|
||||||
const uint8_t BITMAP_SCANLIST1[6] =
|
const uint8_t BITMAP_SCANLIST1[6] =
|
||||||
{ // 'I' symbol
|
{ // 'I' symbol
|
||||||
0b00000000,
|
__extension__ 0b00000000,
|
||||||
0b00000000,
|
__extension__ 0b00000000,
|
||||||
0b01000010,
|
__extension__ 0b01000010,
|
||||||
0b01111110,
|
__extension__ 0b01111110,
|
||||||
0b01000010,
|
__extension__ 0b01000010,
|
||||||
0b00000000
|
__extension__ 0b00000000
|
||||||
};
|
};
|
||||||
|
|
||||||
const uint8_t BITMAP_SCANLIST2[6] =
|
const uint8_t BITMAP_SCANLIST2[6] =
|
||||||
{ // 'II' symbol
|
{ // 'II' symbol
|
||||||
0b00000000,
|
__extension__ 0b00000000,
|
||||||
0b01000010,
|
__extension__ 0b01000010,
|
||||||
0b01111110,
|
__extension__ 0b01111110,
|
||||||
0b01000010,
|
__extension__ 0b01000010,
|
||||||
0b01111110,
|
__extension__ 0b01111110,
|
||||||
0b01000010
|
__extension__ 0b01000010
|
||||||
};
|
};
|
||||||
|
|
||||||
const uint8_t BITMAP_COMPAND[6] =
|
const uint8_t BITMAP_COMPAND[6] =
|
||||||
{
|
{
|
||||||
0b00000000,
|
__extension__ 0b00000000,
|
||||||
0b00111100,
|
__extension__ 0b00111100,
|
||||||
0b01000010,
|
__extension__ 0b01000010,
|
||||||
0b01000010,
|
__extension__ 0b01000010,
|
||||||
0b01000010,
|
__extension__ 0b01000010,
|
||||||
0b00100100
|
__extension__ 0b00100100
|
||||||
};
|
};
|
||||||
|
@ -54,7 +54,7 @@ void BK4819_Init(void)
|
|||||||
BK4819_SetAGC(0);
|
BK4819_SetAGC(0);
|
||||||
// BK4819_SetAGC(1);
|
// BK4819_SetAGC(1);
|
||||||
|
|
||||||
BK4819_WriteRegister(BK4819_REG_19, 0b0001000001000001); // <15> MIC AGC 1 = disable 0 = enable
|
BK4819_WriteRegister(BK4819_REG_19, 0x1041); // 0001 0000 0100 0001 <15> MIC AGC 1 = disable 0 = enable
|
||||||
|
|
||||||
BK4819_WriteRegister(BK4819_REG_7D, 0xE940);
|
BK4819_WriteRegister(BK4819_REG_7D, 0xE940);
|
||||||
|
|
||||||
@ -837,7 +837,7 @@ void BK4819_RX_TurnOn(void)
|
|||||||
// Disable TX DSP
|
// Disable TX DSP
|
||||||
// Enable RX DSP
|
// Enable RX DSP
|
||||||
//
|
//
|
||||||
BK4819_WriteRegister(BK4819_REG_30, 0b1011111111110001); // 1 0 1111 1 1 1111 0 0 0 1
|
BK4819_WriteRegister(BK4819_REG_30, 0xbff1); // 1 0 1111 1 1 1111 0 0 0 1
|
||||||
}
|
}
|
||||||
|
|
||||||
void BK4819_PickRXFilterPathBasedOnFrequency(uint32_t Frequency)
|
void BK4819_PickRXFilterPathBasedOnFrequency(uint32_t Frequency)
|
||||||
|
BIN
firmware.bin
BIN
firmware.bin
Binary file not shown.
Binary file not shown.
4
misc.h
4
misc.h
@ -25,11 +25,11 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef MAX
|
#ifndef MAX
|
||||||
#define MAX(a, b) ({ __typeof__ (a) _a = (a); __typeof__ (b) _b = (b); _a > _b ? _a : _b; })
|
// #define MAX(a, b) ({ __typeof__ (a) _a = (a); __typeof__ (b) _b = (b); _a > _b ? _a : _b; })
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef MIN
|
#ifndef MIN
|
||||||
#define MIN(a, b) ({ __typeof__ (a) _a = (a); __typeof__ (b) _b = (b); _a < _b ? _a : _b; })
|
// #define MIN(a, b) ({ __typeof__ (a) _a = (a); __typeof__ (b) _b = (b); _a < _b ? _a : _b; })
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//#define IS_USER_CHANNEL(x) ((x) >= USER_CHANNEL_FIRST && (x) <= USER_CHANNEL_LAST)
|
//#define IS_USER_CHANNEL(x) ((x) >= USER_CHANNEL_FIRST && (x) <= USER_CHANNEL_LAST)
|
||||||
|
@ -40,11 +40,11 @@ void UI_DrawBattery(uint8_t *bitmap, const unsigned int level, const unsigned in
|
|||||||
for (i = 0; i < bars; i++)
|
for (i = 0; i < bars; i++)
|
||||||
{
|
{
|
||||||
#ifdef ENABLE_REVERSE_BAT_SYMBOL
|
#ifdef ENABLE_REVERSE_BAT_SYMBOL
|
||||||
bitmap[3 + (i * 3) + 0] = 0b01011101;
|
bitmap[3 + (i * 3) + 0] = __extension__ 0b01011101;
|
||||||
bitmap[3 + (i * 3) + 1] = 0b01011101;
|
bitmap[3 + (i * 3) + 1] = __extension__ 0b01011101;
|
||||||
#else
|
#else
|
||||||
bitmap[sizeof(BITMAP_BATTERY_LEVEL) - 3 - (i * 3) - 0] = 0b01011101;
|
bitmap[sizeof(BITMAP_BATTERY_LEVEL) - 3 - (i * 3) - 0] = __extension__ 0b01011101;
|
||||||
bitmap[sizeof(BITMAP_BATTERY_LEVEL) - 3 - (i * 3) - 1] = 0b01011101;
|
bitmap[sizeof(BITMAP_BATTERY_LEVEL) - 3 - (i * 3) - 1] = __extension__ 0b01011101;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user