improvement
This commit is contained in:
parent
09d687dcdf
commit
0f649630e6
@ -105,12 +105,12 @@ void ui_com_freq_digital(uint8_t clear, uint8_t only_pointer) {
|
||||
uint8_t blink_state = (ticks_ms() / UI_BLINK_MS) % 2;
|
||||
uint8_t blink_state2 = !(global_data.point_mode & G_PMOD_PBLINK_MASK);
|
||||
if (!(global_data.point_mode & G_PMOD_PMOVE_MASK) || (blink_state ^ blink_state2)) {
|
||||
uint8_t p_pos = (global_data.point_mode & G_POMD_POS_MASK) >> G_POMD_POS_BOFF;
|
||||
uint8_t p_pos = bit_fetch(global_data.point_mode, G_POMD_POS_BOFF, G_POMD_POS_MASK);
|
||||
uint16_t p_off = (4 - p_pos) * 18 + 2 + off_x;
|
||||
ST7735_FillRectangle(p_off, off_y + 33, 14, 2, color_orange);
|
||||
global_data.point_mode = global_data.point_mode | G_PMOD_PBLINK2_MASK;
|
||||
bit_set(global_data.point_mode, G_PMOD_PBLINK2_MASK);
|
||||
} else {
|
||||
global_data.point_mode = global_data.point_mode & (~G_PMOD_PBLINK2_MASK);
|
||||
bit_clear(global_data.point_mode, G_PMOD_PBLINK2_MASK);
|
||||
}
|
||||
}
|
||||
uint16_t scale = 10000;
|
||||
|
@ -42,7 +42,7 @@ void app_main_loop() {
|
||||
if (event_type == kp_ROTATE_RIGHT || event_type == kp_ROTATE_LEFT) {
|
||||
if (global_data.point_mode & G_PMOD_MODE_MASK) {
|
||||
// 指针模式调整
|
||||
uint8_t p_pos = (global_data.point_mode & G_POMD_POS_MASK) >> G_POMD_POS_BOFF;
|
||||
uint8_t p_pos = bit_fetch(global_data.point_mode, G_POMD_POS_BOFF, G_POMD_POS_MASK);
|
||||
if (global_data.point_mode & G_PMOD_PMOVE_MASK) {
|
||||
// 调整指针位置
|
||||
if (event_type == kp_ROTATE_RIGHT) {
|
||||
@ -52,8 +52,7 @@ void app_main_loop() {
|
||||
p_pos += event_value;
|
||||
}
|
||||
p_pos %= 5; // 0~4, 右边第一个数值为0号位置
|
||||
global_data.point_mode = global_data.point_mode & (~G_POMD_POS_MASK);
|
||||
global_data.point_mode = global_data.point_mode | ((p_pos << G_POMD_POS_BOFF) & G_POMD_POS_MASK);
|
||||
bit_replace(global_data.point_mode, p_pos, G_POMD_POS_BOFF, G_POMD_POS_MASK);
|
||||
printf("Adjust Point Pos: %u\n", p_pos);
|
||||
} else {
|
||||
// 调整指针位置的数字
|
||||
@ -120,6 +119,8 @@ void app_main_loop() {
|
||||
global_data.freq = num_freq / 5;
|
||||
}
|
||||
printf("Adjust Freq: %u\n", global_data.freq);
|
||||
__limit_freq_range();
|
||||
__send_freq();
|
||||
}
|
||||
} else {
|
||||
// 直接调整频率
|
||||
@ -128,9 +129,9 @@ void app_main_loop() {
|
||||
} else {
|
||||
global_data.freq -= event_value;
|
||||
}
|
||||
printf("Adjust Freq: %u\n", global_data.freq);
|
||||
__limit_freq_range();
|
||||
__send_freq();
|
||||
printf("Adjust Freq: %u\n", global_data.freq);
|
||||
}
|
||||
ui_com_freq_digital(1, 0);
|
||||
} else if (event_type == kp_SHORT_CLICK) {
|
||||
@ -138,16 +139,16 @@ void app_main_loop() {
|
||||
if (event_value == kp_KEYENCODER) {
|
||||
if (global_data.point_mode & G_PMOD_PMOVE_MASK) {
|
||||
// 退出移动指针模式
|
||||
global_data.point_mode = global_data.point_mode & (~G_PMOD_PMOVE_MASK);
|
||||
bit_clear(global_data.point_mode, G_PMOD_PMOVE_MASK);
|
||||
printf("Exit Pointer Move Mode.\n");
|
||||
} else {
|
||||
// 进入移动指针模式
|
||||
global_data.point_mode = global_data.point_mode | G_PMOD_PMOVE_MASK;
|
||||
bit_set(global_data.point_mode, G_PMOD_PMOVE_MASK);
|
||||
uint8_t blink_state = (ticks_ms() / UI_BLINK_MS) % 2; // 该时间段指示条消失
|
||||
if (blink_state) {
|
||||
global_data.point_mode = global_data.point_mode | G_PMOD_PBLINK_MASK;
|
||||
bit_set(global_data.point_mode, G_PMOD_PBLINK_MASK);
|
||||
} else {
|
||||
global_data.point_mode = global_data.point_mode & (~G_PMOD_PBLINK_MASK);
|
||||
bit_clear(global_data.point_mode, G_PMOD_PBLINK_MASK);
|
||||
}
|
||||
printf("Enter Pointer Move Mode.\n");
|
||||
}
|
||||
@ -171,14 +172,12 @@ void app_main_loop() {
|
||||
if (event_value == kp_KEYENCODER) {
|
||||
if (global_data.point_mode & G_PMOD_MODE_MASK) {
|
||||
// 退出指针模式
|
||||
global_data.point_mode = global_data.point_mode & (~G_PMOD_MODE_MASK);
|
||||
__limit_freq_range();
|
||||
__send_freq();
|
||||
bit_clear(global_data.point_mode, G_PMOD_MODE_MASK);
|
||||
printf("Exit Pointer Mode.\n");
|
||||
} else {
|
||||
// 进入指针模式
|
||||
global_data.point_mode = global_data.point_mode | G_PMOD_MODE_MASK;
|
||||
global_data.point_mode = global_data.point_mode & (~G_PMOD_PMOVE_MASK);
|
||||
bit_set(global_data.point_mode, G_PMOD_MODE_MASK);
|
||||
bit_clear(global_data.point_mode, G_PMOD_PMOVE_MASK);
|
||||
printf("Enter Pointer Mode.\n");
|
||||
}
|
||||
ui_com_freq_digital(1, 0);
|
||||
|
@ -2,6 +2,7 @@
|
||||
#include "global.h"
|
||||
|
||||
GlobalData global_data = {
|
||||
0b0000000000000000, //flag
|
||||
880 * 2, // freq
|
||||
G_RF_MODE_FM, //rf_mode
|
||||
16, // volumn
|
||||
|
@ -8,16 +8,26 @@
|
||||
#define G_AM_FREQ_MIN 100
|
||||
#define G_AM_FREQ_MAX 33000
|
||||
|
||||
#define G_FL_SIGNAL 0b0000000000000001
|
||||
|
||||
#define G_PMOD_MODE_MASK 0b00000001
|
||||
#define G_PMOD_PMOVE_MASK 0b00000010
|
||||
#define G_POMD_POS_MASK 0b00011100
|
||||
#define G_POMD_POS_BOFF 2
|
||||
#define G_POMD_POS_BLEN 3
|
||||
#define G_PMOD_PBLINK_MASK 0b00100000
|
||||
#define G_PMOD_PBLINK2_MASK 0b01000000
|
||||
|
||||
#define bit_set(x, mask) (x = x | mask)
|
||||
#define bit_clear(x, mask) (x = x & (~mask))
|
||||
#define bit_replace(x, v, voff, mask) ((x = x & (~mask)), (x = x | ((v << voff) & mask)))
|
||||
#define bit_fetch(x, voff, mask) ((x & mask) >> voff)
|
||||
|
||||
typedef struct GlobalData {
|
||||
/** FM x50kHz AM x1kHz */
|
||||
/** 各种flag
|
||||
* bit 0 signal改变flag
|
||||
*/
|
||||
uint16_t flag;
|
||||
uint16_t freq;
|
||||
uint8_t rf_mode;
|
||||
uint8_t volumn;
|
||||
@ -29,7 +39,7 @@ typedef struct GlobalData {
|
||||
* bit 5 标记了当前时间段指针指示是否要显示(用于闪烁动画)
|
||||
* bit 6 标记了当前指针的状态(用于闪烁动画)
|
||||
*/
|
||||
volatile uint8_t point_mode;
|
||||
uint8_t point_mode;
|
||||
} GlobalData;
|
||||
|
||||
extern GlobalData global_data;
|
||||
|
Loading…
x
Reference in New Issue
Block a user