update mode switch
This commit is contained in:
@@ -393,8 +393,7 @@ void button_task(chanend c_hidSendData, chanend cc_mic_level, chanend c_uac_vol)
|
||||
debug_printf("Saved game_mode to flash: %d\n", saved_mode);
|
||||
}
|
||||
#else
|
||||
// if (saved_mode == 255)
|
||||
{
|
||||
if (saved_mode == 255) {
|
||||
#if defined(F1_MUSIC_UAC2)
|
||||
saved_mode = 1; // f1: default music mode
|
||||
#elif defined(F3_F4_FPS_UAC2)
|
||||
@@ -432,9 +431,8 @@ void button_task(chanend c_hidSendData, chanend cc_mic_level, chanend c_uac_vol)
|
||||
|
||||
active_mode = (saved_mode <= 3) ? saved_mode : 0;
|
||||
{
|
||||
unsigned hid_mode_init = (active_mode >= 2) ? (active_mode - 1) : 0;
|
||||
SET_SHARED_GLOBAL(g_game_mode, hid_mode_init);
|
||||
debug_printf("active_mode=%d hid_mode=%d\n", active_mode, hid_mode_init);
|
||||
SET_SHARED_GLOBAL(g_game_mode, active_mode);
|
||||
debug_printf("active_mode=%d\n", active_mode);
|
||||
}
|
||||
|
||||
|
||||
@@ -551,10 +549,9 @@ void button_task(chanend c_hidSendData, chanend cc_mic_level, chanend c_uac_vol)
|
||||
|
||||
|
||||
{
|
||||
unsigned hid_mode_startup = (active_mode >= 2) ? (active_mode - 1) : 0;
|
||||
cc_mic_level <: 0xFC;
|
||||
cc_mic_level <: hid_mode_startup;
|
||||
debug_printf("Sent hid_mode %d (active_mode=%d) to hid_button_task\n", hid_mode_startup, active_mode);
|
||||
cc_mic_level <: active_mode;
|
||||
debug_printf("Sent sound_effect_mode %d to hid_button_task\n", active_mode);
|
||||
}
|
||||
|
||||
// port_enable(p_ctrl_keys);
|
||||
@@ -789,6 +786,38 @@ void button_task(chanend c_hidSendData, chanend cc_mic_level, chanend c_uac_vol)
|
||||
}
|
||||
push_button_game_mode_state_old = button_game_mode;
|
||||
|
||||
// 处理HID SET_SOUND_EFFECT_MODE (0xA4) 请求,等同于按键效果
|
||||
if (!mode_btn_change && !need_reboot) {
|
||||
unsigned hid_req_mode;
|
||||
GET_SHARED_GLOBAL(hid_req_mode, g_request_game_mode);
|
||||
if (hid_req_mode != (unsigned)-1) {
|
||||
SET_SHARED_GLOBAL(g_request_game_mode, (unsigned)-1);
|
||||
unsigned target = (hid_req_mode <= 3) ? hid_req_mode : 0;
|
||||
#if (F3_F4_FPS_UAC2 == 1)
|
||||
if (target == 1) {
|
||||
active_mode = target;
|
||||
need_reboot = 1;
|
||||
SetRoleSwitchFlag(MODE_F1_MUSIC_UAC2);
|
||||
} else {
|
||||
active_mode = target;
|
||||
mode_btn_change = 1;
|
||||
}
|
||||
#elif (F1_MUSIC_UAC2 == 1)
|
||||
if (target >= 2) {
|
||||
active_mode = target;
|
||||
need_reboot = 1;
|
||||
SetRoleSwitchFlag(MODE_F3_F4_FPS_UAC2);
|
||||
} else {
|
||||
active_mode = target;
|
||||
mode_btn_change = 1;
|
||||
}
|
||||
#else
|
||||
active_mode = target;
|
||||
mode_btn_change = 1;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
if (mode_btn_change || need_reboot) {
|
||||
// Always persist mode to flash so boot chain restores it
|
||||
{
|
||||
@@ -816,14 +845,14 @@ void button_task(chanend c_hidSendData, chanend cc_mic_level, chanend c_uac_vol)
|
||||
}
|
||||
led_update_all(&led_ctx);
|
||||
|
||||
// Always update g_game_mode so 0xA5 reads correctly
|
||||
SET_SHARED_GLOBAL(g_game_mode, active_mode);
|
||||
#if USE_EX3D == 1
|
||||
{
|
||||
// hid_mode: 0=IR_OFF, 1=IR_GAME, 2=IR_7_1_GAME
|
||||
unsigned hid_mode = (active_mode >= 2) ? (active_mode - 1) : 0;
|
||||
SET_SHARED_GLOBAL(g_game_mode, hid_mode);
|
||||
// sound_effect_mode: 0=无音效, 1=音乐, 2=游戏, 3=AI7.1
|
||||
cc_mic_level <: 0xFC;
|
||||
cc_mic_level <: hid_mode;
|
||||
debug_printf("Mode changed: active=%d hid=%d\n", active_mode, hid_mode);
|
||||
cc_mic_level <: active_mode;
|
||||
debug_printf("Mode changed: active_mode=%d\n", active_mode);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -133,6 +133,7 @@ float fLevel[NUM_USB_CHAN_OUT] = {0,};
|
||||
enum {UBM_A3D_OFF=0, UBM_A3D_VON=1, UBM_A3D_ON=2};
|
||||
extern void buffer_exchange(chanend_t c_data, unsigned sampsFromUsbToAudio[], unsigned sampsFromAudioToUsb[]);
|
||||
extern unsigned int is_eq_disabled(void);
|
||||
extern unsigned int g_eq_enable;
|
||||
void UserBufferManagement(unsigned sampsFromUsbToAudio[], unsigned sampsFromAudioToUsb[])
|
||||
{
|
||||
uint32_t is_3d;
|
||||
@@ -868,16 +869,28 @@ void hid_button_task(chanend_t cc_mic_level, chanend_t c_hidRcvData, chanend_t c
|
||||
debug_printf("hid_button_task received audio_mode: %d\n", current_mode_local);
|
||||
|
||||
if (current_mode_local == 0) {
|
||||
// 关闭算法
|
||||
// 无音效模式:关闭EX3D和EQ算法
|
||||
audio_ex3d_set_onoff(0);
|
||||
g_eq_enable = 0;
|
||||
#if IR_SWITCHING_MODE
|
||||
is_3d_on = IR_OFF;
|
||||
#else
|
||||
is_3d_on = A3D_OFF;
|
||||
#endif
|
||||
debug_printf("Mode 0: algorithm OFF\n");
|
||||
debug_printf("Mode 0: EX3D+EQ OFF\n");
|
||||
} else if (current_mode_local == 1) {
|
||||
// 游戏模式 (IR_GAME, stereo): SF index 0
|
||||
// 音乐模式:EX3D关闭,EQ开启
|
||||
audio_ex3d_set_onoff(0);
|
||||
g_eq_enable = 1;
|
||||
#if IR_SWITCHING_MODE
|
||||
is_3d_on = IR_OFF;
|
||||
#else
|
||||
is_3d_on = A3D_OFF;
|
||||
#endif
|
||||
debug_printf("Mode 1: MUSIC, EQ ON, EX3D OFF\n");
|
||||
} else if (current_mode_local == 2) {
|
||||
// 游戏模式 (IR_GAME, stereo): SF index 0,EQ开启
|
||||
g_eq_enable = 1;
|
||||
#if IR_SWITCHING_MODE
|
||||
audio_ex3d_set_sf(0); // SF 0 = STEREO GAME
|
||||
is_3d_on = IR_GAME;
|
||||
@@ -885,9 +898,10 @@ void hid_button_task(chanend_t cc_mic_level, chanend_t c_hidRcvData, chanend_t c
|
||||
is_3d_on = A3D_ON;
|
||||
#endif
|
||||
audio_ex3d_set_onoff(1);
|
||||
debug_printf("Mode 1: GAME (IR_GAME) ON, sf=0\n");
|
||||
} else if (current_mode_local == 2) {
|
||||
// AI7.1模式 (IR_7_1_GAME, 7.1): SF index 1
|
||||
debug_printf("Mode 2: GAME (IR_GAME) ON, sf=0, EQ ON\n");
|
||||
} else if (current_mode_local == 3) {
|
||||
// AI7.1模式 (IR_7_1_GAME, 7.1): SF index 1,EQ开启
|
||||
g_eq_enable = 1;
|
||||
#if IR_SWITCHING_MODE
|
||||
audio_ex3d_set_sf(1); // SF 1 = SPATIAL GAME (7.1)
|
||||
is_3d_on = IR_7_1_GAME;
|
||||
@@ -895,7 +909,7 @@ void hid_button_task(chanend_t cc_mic_level, chanend_t c_hidRcvData, chanend_t c
|
||||
is_3d_on = A3D_ON;
|
||||
#endif
|
||||
audio_ex3d_set_onoff(1);
|
||||
debug_printf("Mode 2: AI7.1 (IR_7_1_GAME) ON, sf=1\n");
|
||||
debug_printf("Mode 3: AI7.1 (IR_7_1_GAME) ON, sf=1, EQ ON\n");
|
||||
}
|
||||
SET_SHARED_GLOBAL(g_3d_on_off_t1, is_3d_on);
|
||||
} else {
|
||||
|
||||
@@ -684,31 +684,23 @@ unsigned char process_send_params(uint8_t data[], uint16_t len) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// 处理设置游戏模式命令 (0xA4) - SET_GAME_MODE
|
||||
// 处理设置音效模式命令 (0xA4) - SET_SOUND_EFFECT_MODE
|
||||
// 0=无音效(EQ/EX3D全关), 1=音乐模式, 2=游戏模式, 3=AI7.1模式
|
||||
if (data[1] == 0xA4) {
|
||||
uint8_t game_mode = data[2];
|
||||
|
||||
// 参数验证
|
||||
if (game_mode > 2) {
|
||||
// 参数验证:0-3
|
||||
if (game_mode > 3) {
|
||||
return false;
|
||||
}
|
||||
|
||||
extern unsigned g_uac_mode;
|
||||
unsigned uac_mode;
|
||||
GET_SHARED_GLOBAL(uac_mode, g_uac_mode);
|
||||
|
||||
if (uac_mode == 1) {
|
||||
extern void request_game_mode_switch(unsigned game_mode);
|
||||
//request_game_mode_switch(game_mode);
|
||||
} else {
|
||||
extern unsigned g_request_game_mode;
|
||||
SET_SHARED_GLOBAL(g_request_game_mode, game_mode);
|
||||
}
|
||||
extern unsigned g_request_game_mode;
|
||||
SET_SHARED_GLOBAL(g_request_game_mode, game_mode);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
// 处理获取游戏模式命令 (0xA5) - GET_GAME_MODE
|
||||
// 处理获取音效模式命令 (0xA5) - GET_SOUND_EFFECT_MODE
|
||||
if (data[1] == 0xA5) {
|
||||
read_request.pending_cmd = 0xA5;
|
||||
return true;
|
||||
@@ -1044,11 +1036,7 @@ unsigned char process_read_params(uint8_t response[]) {
|
||||
GET_SHARED_GLOBAL(game_mode, g_game_mode);
|
||||
|
||||
// 当前游戏模式 (1字节,位置2)
|
||||
#if UAC2 == 1
|
||||
response[2] = 0;
|
||||
#else
|
||||
response[2] = (uint8_t)game_mode;
|
||||
#endif
|
||||
|
||||
read_request.pending_cmd = 0; // Clear read request flag
|
||||
return true;
|
||||
|
||||
@@ -522,10 +522,10 @@ class EQDesigner(QMainWindow):
|
||||
|
||||
|
||||
# 添加音效模式设置组
|
||||
mode_group = QGroupBox("音效模式设置")
|
||||
mode_group = QGroupBox("EQ模式")
|
||||
self.ui_groups['mode'] = mode_group # 保存引用
|
||||
mode_layout = QFormLayout(mode_group)
|
||||
self.mode_label = QLabel("音效模式:")
|
||||
self.mode_label = QLabel("EQ模式:")
|
||||
self.mode_combo = QComboBox()
|
||||
self.mode_combo.addItems(["预设模式1", "预设模式2", "预设模式3", "预设模式4", "预设模式5", "预设模式6", "用户模式1", "用户模式2", "用户模式3", "bypass", "禁用EQ"])
|
||||
self.mode_combo.currentIndexChanged.connect(self.on_mode_changed)
|
||||
@@ -540,19 +540,19 @@ class EQDesigner(QMainWindow):
|
||||
mode_layout.addRow(self.mode_name_label, self.mode_name_edit)
|
||||
|
||||
# 切换音效模式按钮(只发送0x8A命令)
|
||||
self.switch_mode_btn = QPushButton("切换音效模式")
|
||||
self.switch_mode_btn = QPushButton("切换EQ模式")
|
||||
self.switch_mode_btn.clicked.connect(self.on_switch_mode)
|
||||
self.switch_mode_btn.hide()
|
||||
mode_layout.addRow(self.switch_mode_btn)
|
||||
|
||||
# 获取音效模式按钮(只处理0x8B命令)
|
||||
# 改动原因:移除hide()调用,让按钮显示出来,方便用户获取当前模式
|
||||
self.get_mode_btn = QPushButton("获取当前音效模式")
|
||||
self.get_mode_btn = QPushButton("获取当前EQ模式")
|
||||
self.get_mode_btn.clicked.connect(self.on_get_mode)
|
||||
mode_layout.addRow(self.get_mode_btn)
|
||||
|
||||
# 设置并保存音效模式按钮(发送0x92命令)
|
||||
self.set_and_save_mode_btn = QPushButton("设置并保存音效模式")
|
||||
self.set_and_save_mode_btn = QPushButton("设置并保存EQ模式")
|
||||
self.set_and_save_mode_btn.clicked.connect(self.on_set_and_save_mode)
|
||||
mode_layout.addRow(self.set_and_save_mode_btn)
|
||||
|
||||
@@ -560,17 +560,17 @@ class EQDesigner(QMainWindow):
|
||||
|
||||
# 添加音效参数配置组(EQ参数相关,可通过菜单隐藏)
|
||||
# 改动原因:将音效参数配置组也添加到ui_groups中,使其可以通过菜单隐藏/显示
|
||||
param_group = QGroupBox("音效参数配置")
|
||||
param_group = QGroupBox("EQ参数配置")
|
||||
self.ui_groups['param'] = param_group # 保存引用,用于菜单控制可见性
|
||||
param_layout = QVBoxLayout(param_group)
|
||||
|
||||
# 配置音效参数按钮
|
||||
self.config_params_btn = QPushButton("配置音效参数")
|
||||
self.config_params_btn = QPushButton("配置EQ参数")
|
||||
self.config_params_btn.clicked.connect(self.on_config_params)
|
||||
param_layout.addWidget(self.config_params_btn)
|
||||
|
||||
# 读取音效参数按钮
|
||||
self.read_params_btn = QPushButton("读取音效参数")
|
||||
self.read_params_btn = QPushButton("读取EQ参数")
|
||||
self.read_params_btn.hide()
|
||||
self.read_params_btn.clicked.connect(self.on_read_params)
|
||||
param_layout.addWidget(self.read_params_btn)
|
||||
@@ -646,68 +646,26 @@ class EQDesigner(QMainWindow):
|
||||
|
||||
left_content_layout.addWidget(volume_group)
|
||||
|
||||
# 添加设备模式控制组(增益模式、滤波器模式、游戏模式)
|
||||
device_mode_group = QGroupBox("设备模式控制")
|
||||
# 添加音效模式控制组
|
||||
device_mode_group = QGroupBox("音效模式控制")
|
||||
self.ui_groups['device_mode'] = device_mode_group # 保存引用
|
||||
device_mode_layout = QFormLayout(device_mode_group)
|
||||
|
||||
# 增益模式
|
||||
gain_control_layout = QHBoxLayout()
|
||||
self.gain_mode_combo = QComboBox()
|
||||
self.gain_mode_combo.addItem("低阻模式 (0)", 0)
|
||||
self.gain_mode_combo.addItem("高阻模式 (1)", 1)
|
||||
gain_control_layout.addWidget(QLabel("增益模式:"))
|
||||
gain_control_layout.addWidget(self.gain_mode_combo)
|
||||
device_mode_layout.addRow(gain_control_layout)
|
||||
|
||||
gain_btn_layout = QHBoxLayout()
|
||||
self.set_gain_mode_btn = QPushButton("设置增益模式")
|
||||
self.set_gain_mode_btn.clicked.connect(self.on_set_gain_mode)
|
||||
self.get_gain_mode_btn = QPushButton("读取增益模式")
|
||||
self.get_gain_mode_btn.clicked.connect(self.on_get_gain_mode)
|
||||
gain_btn_layout.addWidget(self.set_gain_mode_btn)
|
||||
gain_btn_layout.addWidget(self.get_gain_mode_btn)
|
||||
device_mode_layout.addRow(gain_btn_layout)
|
||||
|
||||
# 滤波器模式
|
||||
# 改动原因:添加第8种滤波器模式,支持0-7共8种模式
|
||||
filter_control_layout = QHBoxLayout()
|
||||
self.filter_mode_combo = QComboBox()
|
||||
self.filter_mode_combo.addItem("Minimum Phase filter (default) (0)", 0)
|
||||
self.filter_mode_combo.addItem("Linear Phase Apodizing Fast Roll-off filter (1)", 1)
|
||||
self.filter_mode_combo.addItem("Linear phase fast roll-off filter (2)", 2)
|
||||
self.filter_mode_combo.addItem("Linear Phase Fast Roll-off low-ripple filter (3)", 3)
|
||||
self.filter_mode_combo.addItem("Linear phase slow roll-off filter (4)", 4)
|
||||
self.filter_mode_combo.addItem("Minimum phase fast roll-off filter (5)", 5)
|
||||
self.filter_mode_combo.addItem("Minimum phase slow roll-off filter (6)", 6)
|
||||
self.filter_mode_combo.addItem("Minimum Phase Fast Roll-Off Low Dispersion (7)", 7)
|
||||
filter_control_layout.addWidget(QLabel("滤波器模式:"))
|
||||
filter_control_layout.addWidget(self.filter_mode_combo)
|
||||
device_mode_layout.addRow(filter_control_layout)
|
||||
|
||||
filter_btn_layout = QHBoxLayout()
|
||||
self.set_filter_mode_btn = QPushButton("设置滤波器模式")
|
||||
self.set_filter_mode_btn.clicked.connect(self.on_set_filter_mode)
|
||||
self.get_filter_mode_btn = QPushButton("读取滤波器模式")
|
||||
self.get_filter_mode_btn.clicked.connect(self.on_get_filter_mode)
|
||||
filter_btn_layout.addWidget(self.set_filter_mode_btn)
|
||||
filter_btn_layout.addWidget(self.get_filter_mode_btn)
|
||||
device_mode_layout.addRow(filter_btn_layout)
|
||||
|
||||
# 游戏模式
|
||||
# 音效模式
|
||||
game_control_layout = QHBoxLayout()
|
||||
self.game_mode_combo = QComboBox()
|
||||
self.game_mode_combo.addItem("无音效 (0)", 0)
|
||||
self.game_mode_combo.addItem("FPS模式 (1)", 1)
|
||||
self.game_mode_combo.addItem("虚拟7.1 (2)", 2)
|
||||
game_control_layout.addWidget(QLabel("游戏模式:"))
|
||||
self.game_mode_combo.addItem("音乐模式 (1)", 1)
|
||||
self.game_mode_combo.addItem("游戏模式 (2)", 2)
|
||||
self.game_mode_combo.addItem("AI7.1模式 (3)", 3)
|
||||
game_control_layout.addWidget(QLabel("音效模式:"))
|
||||
game_control_layout.addWidget(self.game_mode_combo)
|
||||
device_mode_layout.addRow(game_control_layout)
|
||||
|
||||
game_btn_layout = QHBoxLayout()
|
||||
self.set_game_mode_btn = QPushButton("设置游戏模式")
|
||||
self.set_game_mode_btn = QPushButton("设置音效模式")
|
||||
self.set_game_mode_btn.clicked.connect(self.on_set_game_mode)
|
||||
self.get_game_mode_btn = QPushButton("读取游戏模式")
|
||||
self.get_game_mode_btn = QPushButton("读取音效模式")
|
||||
self.get_game_mode_btn.clicked.connect(self.on_get_game_mode)
|
||||
game_btn_layout.addWidget(self.set_game_mode_btn)
|
||||
game_btn_layout.addWidget(self.get_game_mode_btn)
|
||||
@@ -722,111 +680,6 @@ class EQDesigner(QMainWindow):
|
||||
|
||||
left_content_layout.addWidget(device_mode_group)
|
||||
|
||||
# 添加LED控制组
|
||||
led_group = QGroupBox("LED控制")
|
||||
self.ui_groups['led'] = led_group # 保存引用
|
||||
led_layout = QFormLayout(led_group)
|
||||
|
||||
# LED索引选择
|
||||
led_index_layout = QHBoxLayout()
|
||||
self.led_index_label = QLabel("LED索引:")
|
||||
self.led_index_spin = QSpinBox()
|
||||
self.led_index_spin.setRange(0, 7)
|
||||
self.led_index_spin.setValue(0)
|
||||
led_index_layout.addWidget(self.led_index_label)
|
||||
led_index_layout.addWidget(self.led_index_spin)
|
||||
led_layout.addRow(led_index_layout)
|
||||
|
||||
# LED开关
|
||||
led_switch_layout = QHBoxLayout()
|
||||
self.led_switch_label = QLabel("LED开关:")
|
||||
self.led_switch_combo = QComboBox()
|
||||
self.led_switch_combo.addItems(["OFF (关闭)", "ON (开启)"])
|
||||
self.led_switch_combo.setCurrentIndex(1) # 默认开启
|
||||
led_switch_layout.addWidget(self.led_switch_label)
|
||||
led_switch_layout.addWidget(self.led_switch_combo)
|
||||
led_layout.addRow(led_switch_layout)
|
||||
|
||||
# LED信息显示
|
||||
self.led_info_label = QLabel("LED信息: 未获取")
|
||||
led_layout.addRow("LED信息:", self.led_info_label)
|
||||
|
||||
# LED状态显示
|
||||
self.led_status_label = QLabel("LED状态: 未获取")
|
||||
led_layout.addRow("LED状态:", self.led_status_label)
|
||||
|
||||
# LED控制按钮
|
||||
led_buttons_layout = QVBoxLayout()
|
||||
|
||||
# 获取LED信息按钮
|
||||
self.get_led_info_btn = QPushButton("获取LED信息")
|
||||
self.get_led_info_btn.clicked.connect(self.on_get_led_info)
|
||||
led_buttons_layout.addWidget(self.get_led_info_btn)
|
||||
|
||||
# 设置LED开关按钮
|
||||
self.set_led_switch_btn = QPushButton("设置LED开关")
|
||||
self.set_led_switch_btn.clicked.connect(self.on_set_led_switch)
|
||||
led_buttons_layout.addWidget(self.set_led_switch_btn)
|
||||
|
||||
# 获取LED开关按钮
|
||||
self.get_led_switch_btn = QPushButton("获取LED开关")
|
||||
self.get_led_switch_btn.clicked.connect(self.on_get_led_switch)
|
||||
led_buttons_layout.addWidget(self.get_led_switch_btn)
|
||||
|
||||
# 获取LED状态按钮
|
||||
self.get_led_status_btn = QPushButton("获取LED状态")
|
||||
self.get_led_status_btn.clicked.connect(self.on_get_led_status)
|
||||
led_buttons_layout.addWidget(self.get_led_status_btn)
|
||||
|
||||
# 获取LED总数按钮
|
||||
self.get_led_count_btn = QPushButton("获取LED总数")
|
||||
self.get_led_count_btn.clicked.connect(self.on_get_led_count)
|
||||
led_buttons_layout.addWidget(self.get_led_count_btn)
|
||||
|
||||
led_layout.addRow(led_buttons_layout)
|
||||
|
||||
left_content_layout.addWidget(led_group)
|
||||
|
||||
# 添加UAC控制组
|
||||
uac_group = QGroupBox("UAC模式控制")
|
||||
self.ui_groups['uac'] = uac_group # 保存引用
|
||||
uac_layout = QFormLayout(uac_group)
|
||||
|
||||
# UAC模式选择
|
||||
uac_mode_layout = QHBoxLayout()
|
||||
self.uac_mode_label = QLabel("UAC模式:")
|
||||
self.uac_mode_combo = QComboBox()
|
||||
self.uac_mode_combo.addItems(["UAC2.0", "UAC1.0"])
|
||||
self.uac_mode_combo.setCurrentIndex(0) # 默认UAC2.0
|
||||
uac_mode_layout.addWidget(self.uac_mode_label)
|
||||
uac_mode_layout.addWidget(self.uac_mode_combo)
|
||||
uac_layout.addRow(uac_mode_layout)
|
||||
|
||||
# 当前UAC模式显示
|
||||
self.current_uac_mode_label = QLabel("当前UAC模式: 未获取")
|
||||
uac_layout.addRow("当前模式:", self.current_uac_mode_label)
|
||||
|
||||
# UAC控制按钮
|
||||
uac_buttons_layout = QVBoxLayout()
|
||||
|
||||
# 获取UAC模式信息按钮
|
||||
self.get_uac_mode_info_btn = QPushButton("获取UAC模式信息")
|
||||
self.get_uac_mode_info_btn.clicked.connect(self.on_get_uac_mode_info)
|
||||
uac_buttons_layout.addWidget(self.get_uac_mode_info_btn)
|
||||
|
||||
# 设置UAC模式按钮
|
||||
self.set_uac_mode_btn = QPushButton("设置UAC模式")
|
||||
self.set_uac_mode_btn.clicked.connect(self.on_set_uac_mode)
|
||||
uac_buttons_layout.addWidget(self.set_uac_mode_btn)
|
||||
|
||||
# 获取当前UAC模式按钮
|
||||
self.get_current_uac_mode_btn = QPushButton("获取当前UAC模式")
|
||||
self.get_current_uac_mode_btn.clicked.connect(self.on_get_current_uac_mode)
|
||||
uac_buttons_layout.addWidget(self.get_current_uac_mode_btn)
|
||||
|
||||
uac_layout.addRow(uac_buttons_layout)
|
||||
|
||||
left_content_layout.addWidget(uac_group)
|
||||
|
||||
# 添加EQ使能控制组
|
||||
eq_enable_group = QGroupBox("EQ使能控制")
|
||||
@@ -1005,12 +858,10 @@ class EQDesigner(QMainWindow):
|
||||
# 改动原因:添加'param'(音效参数配置)到菜单控制列表中
|
||||
group_names = {
|
||||
'device_info': '设备信息',
|
||||
'mode': '音效模式设置',
|
||||
'param': '音效参数配置',
|
||||
'mode': 'EQ模式',
|
||||
'param': 'EQ参数配置',
|
||||
'volume': '音量控制',
|
||||
'device_mode': '设备模式控制',
|
||||
'led': 'LED控制',
|
||||
'uac': 'UAC模式控制',
|
||||
'device_mode': '音效模式控制',
|
||||
'eq_enable': 'EQ使能控制',
|
||||
'ex3d': 'EX3D控制'
|
||||
}
|
||||
@@ -1034,12 +885,10 @@ class EQDesigner(QMainWindow):
|
||||
if group_key in self.view_actions:
|
||||
group_names = {
|
||||
'device_info': '设备信息',
|
||||
'mode': '音效模式设置',
|
||||
'param': '音效参数配置',
|
||||
'mode': 'EQ模式',
|
||||
'param': 'EQ参数配置',
|
||||
'volume': '音量控制',
|
||||
'device_mode': '设备模式控制',
|
||||
'led': 'LED控制',
|
||||
'uac': 'UAC模式控制',
|
||||
'device_mode': '音效模式控制',
|
||||
'eq_enable': 'EQ使能控制',
|
||||
'ex3d': 'EX3D控制'
|
||||
}
|
||||
@@ -3354,20 +3203,20 @@ eq_mode_data_t sEQ_data_{int(fs)}HZ[NUM_EQ_MODES][NUM_EQ_CHANS] = {{
|
||||
log_message(LOG_LEVEL_ERROR, f"读取滤波器模式时出错: {str(e)}", self.log_level)
|
||||
|
||||
def on_set_game_mode(self):
|
||||
"""设置游戏模式(发送0xA4命令)"""
|
||||
"""设置音效模式(发送0xA4命令)"""
|
||||
if self.device_combo.currentData() is None:
|
||||
log_message(LOG_LEVEL_ERROR, "请先选择设备", self.log_level)
|
||||
return
|
||||
|
||||
# 获取游戏模式值
|
||||
# 获取音效模式值
|
||||
game_mode = self.game_mode_combo.currentData()
|
||||
|
||||
# 弹出确认对话框
|
||||
reply = QMessageBox.question(
|
||||
self,
|
||||
"确认设置游戏模式",
|
||||
f"将要设置游戏模式为: {self.game_mode_combo.currentText()}\n\n"
|
||||
f"游戏模式: 0=无音效, 1=FPS, 2=虚拟7.1\n\n"
|
||||
"确认设置音效模式",
|
||||
f"将要设置音效模式为: {self.game_mode_combo.currentText()}\n\n"
|
||||
f"音效模式: 0=无音效, 1=音乐模式, 2=游戏模式, 3=AI7.1模式\n\n"
|
||||
f"是否继续?",
|
||||
QMessageBox.Yes | QMessageBox.No,
|
||||
QMessageBox.No
|
||||
@@ -3383,27 +3232,27 @@ eq_mode_data_t sEQ_data_{int(fs)}HZ[NUM_EQ_MODES][NUM_EQ_CHANS] = {{
|
||||
# 构建0xA4数据包
|
||||
data = bytearray(63) # 63字节数据包
|
||||
data[0] = 0x77 # 同步头1
|
||||
data[1] = 0xA4 # 命令码 (SET_GAME_MODE)
|
||||
data[2] = game_mode # 游戏模式值 (0-2)
|
||||
data[1] = 0xA4 # 命令码 (SET_SOUND_EFFECT_MODE)
|
||||
data[2] = game_mode # 音效模式值 (0-3)
|
||||
# 其余字节保持为0
|
||||
|
||||
# 发送请求
|
||||
log_message(LOG_LEVEL_INFO, f"正在设置游戏模式为 {game_mode}...", self.log_level)
|
||||
log_message(LOG_LEVEL_INFO, f"正在设置音效模式为 {game_mode}...", self.log_level)
|
||||
h.write([0x01] + list(data))
|
||||
|
||||
h.close()
|
||||
log_message(LOG_LEVEL_INFO, f"游戏模式 {game_mode} 设置成功", self.log_level)
|
||||
log_message(LOG_LEVEL_INFO, f"音效模式 {game_mode} 设置成功", self.log_level)
|
||||
QMessageBox.information(
|
||||
self,
|
||||
"成功",
|
||||
f"游戏模式已设置为: {self.game_mode_combo.currentText()}"
|
||||
f"音效模式已设置为: {self.game_mode_combo.currentText()}"
|
||||
)
|
||||
|
||||
except Exception as e:
|
||||
log_message(LOG_LEVEL_ERROR, f"设置游戏模式时出错: {str(e)}", self.log_level)
|
||||
log_message(LOG_LEVEL_ERROR, f"设置音效模式时出错: {str(e)}", self.log_level)
|
||||
|
||||
def on_get_game_mode(self):
|
||||
"""读取游戏模式(发送0xA5命令)"""
|
||||
"""读取音效模式(发送0xA5命令)"""
|
||||
if self.device_combo.currentData() is None:
|
||||
log_message(LOG_LEVEL_ERROR, "请先选择设备", self.log_level)
|
||||
return
|
||||
@@ -3417,11 +3266,11 @@ eq_mode_data_t sEQ_data_{int(fs)}HZ[NUM_EQ_MODES][NUM_EQ_CHANS] = {{
|
||||
# 构建0xA5数据包
|
||||
data = bytearray(63) # 63字节数据包
|
||||
data[0] = 0x77 # 同步头1
|
||||
data[1] = 0xA5 # 命令码 (GET_GAME_MODE)
|
||||
data[1] = 0xA5 # 命令码 (GET_SOUND_EFFECT_MODE)
|
||||
# 其余字节保持为0
|
||||
|
||||
# 发送请求
|
||||
log_message(LOG_LEVEL_INFO, "正在读取游戏模式...", self.log_level)
|
||||
log_message(LOG_LEVEL_INFO, "正在读取音效模式...", self.log_level)
|
||||
h.write([0x01] + list(data))
|
||||
|
||||
# 读取响应
|
||||
@@ -3431,7 +3280,7 @@ eq_mode_data_t sEQ_data_{int(fs)}HZ[NUM_EQ_MODES][NUM_EQ_CHANS] = {{
|
||||
if reply and len(reply) == 64:
|
||||
# 检查Report ID和同步头
|
||||
if reply[0] == 0x01 and reply[1] == 0x77 and reply[2] == 0xA5:
|
||||
# 解析游戏模式
|
||||
# 解析音效模式
|
||||
game_mode = reply[3]
|
||||
|
||||
# 更新UI显示
|
||||
@@ -3439,14 +3288,14 @@ eq_mode_data_t sEQ_data_{int(fs)}HZ[NUM_EQ_MODES][NUM_EQ_CHANS] = {{
|
||||
if index >= 0:
|
||||
self.game_mode_combo.setCurrentIndex(index)
|
||||
|
||||
mode_names = ["无音效", "FPS模式", "虚拟7.1"]
|
||||
mode_names = ["无音效", "音乐模式", "游戏模式", "AI7.1模式"]
|
||||
mode_name = mode_names[game_mode] if game_mode < len(mode_names) else "未知"
|
||||
|
||||
log_message(LOG_LEVEL_INFO, f"当前游戏模式: {game_mode} ({mode_name})", self.log_level)
|
||||
log_message(LOG_LEVEL_INFO, f"当前音效模式: {game_mode} ({mode_name})", self.log_level)
|
||||
QMessageBox.information(
|
||||
self,
|
||||
"游戏模式",
|
||||
f"当前游戏模式: {game_mode}\n\n"
|
||||
"音效模式",
|
||||
f"当前音效模式: {game_mode}\n\n"
|
||||
f"{mode_name}"
|
||||
)
|
||||
else:
|
||||
@@ -3457,7 +3306,7 @@ eq_mode_data_t sEQ_data_{int(fs)}HZ[NUM_EQ_MODES][NUM_EQ_CHANS] = {{
|
||||
h.close()
|
||||
|
||||
except Exception as e:
|
||||
log_message(LOG_LEVEL_ERROR, f"读取游戏模式时出错: {str(e)}", self.log_level)
|
||||
log_message(LOG_LEVEL_ERROR, f"读取音效模式时出错: {str(e)}", self.log_level)
|
||||
|
||||
def on_get_firmware_version(self):
|
||||
"""读取固件版本(发送0xA6命令)"""
|
||||
|
||||
@@ -24,8 +24,8 @@
|
||||
| 0x9D | SET_EQ_ENABLE | 设置EQ使能开关 | 主机→设备 | 设置EQ使能开关(ON/OFF),禁用时保存当前模式,启用时恢复之前模式 |
|
||||
| 0x9E | GET_EQ_ENABLE | 获取EQ使能开关 | 主机→设备 | 读取EQ使能开关状态(ON/OFF) |
|
||||
| 0x9F | GET_SAMPLE_FORMAT | 获取采样率和格式 | 主机→设备 | 读取当前采样率、DSD模式和DAC采样分辨率 |
|
||||
| 0xA4 | SET_GAME_MODE | 设置游戏模式 | 主机→设备 | 设置游戏模式(0=无音效,1=FPS,2=虚拟7.1) |
|
||||
| 0xA5 | GET_GAME_MODE | 获取游戏模式 | 主机→设备 | 读取当前游戏模式(0-2) |
|
||||
| 0xA4 | SET_SOUND_EFFECT_MODE | 设置音效模式 | 主机→设备 | 设置音效模式(0=无音效,1=音乐模式,2=游戏模式,3=AI7.1模式) |
|
||||
| 0xA5 | GET_SOUND_EFFECT_MODE | 获取音效模式 | 主机→设备 | 读取当前音效模式(0-3) |
|
||||
| 0xA6 | GET_FIRMWARE_VERSION | 获取固件版本 | 主机→设备 | 读取设备固件版本号(BCD格式:主版本.次版本.修订版本) |
|
||||
| 0xB0 | SET_EX3D_CMD | 发送EX3D命令 | 主机→设备 | 发送EX3D设置命令(封装所有EX3D SET命令) |
|
||||
| 0xB1 | GET_EX3D_CMD | 读取EX3D命令 | 主机→设备 | 读取EX3D参数(封装所有EX3D GET命令) |
|
||||
@@ -500,8 +500,8 @@
|
||||
- 返回当前EQ使能开关状态
|
||||
- 返回之前保存的模式值(如果存在)
|
||||
|
||||
### 2.27 0xA4 - SET_GAME_MODE (设置游戏模式)
|
||||
**功能**: 设置游戏模式
|
||||
### 2.27 0xA4 - SET_SOUND_EFFECT_MODE (设置音效模式)
|
||||
**功能**: 设置音效模式
|
||||
**方向**: 主机→设备
|
||||
**数据包格式**:
|
||||
```
|
||||
@@ -509,26 +509,28 @@
|
||||
---------|------|------|------
|
||||
0 | 1 | 0x77 | 同步头1
|
||||
1 | 1 | 0xA4 | 命令码
|
||||
2 | 1 | uint8 | 游戏模式值 (0=无音效, 1=FPS, 2=虚拟7.1)
|
||||
2 | 1 | uint8 | 音效模式值 (0=无音效, 1=音乐模式, 2=游戏模式, 3=AI7.1模式)
|
||||
3-62 | 60 | 0x00 | 保留字节
|
||||
```
|
||||
|
||||
**参数说明**:
|
||||
- **游戏模式范围:** 0-2
|
||||
- **说明:** 选择游戏音效模式
|
||||
- 0: 无音效(标准立体声)
|
||||
- 1: FPS模式(增强定位感)
|
||||
- 2: 虚拟7.1(环绕声效果)
|
||||
- **音效模式范围:** 0-3
|
||||
- **说明:** 选择音效模式,与硬件按键效果相同
|
||||
- 0: 无音效 — 所有模式按键灯灭,EQ算法关闭,EX3D算法关闭
|
||||
- 1: 音乐模式 — 音乐键灯亮,EQ算法开启,EX3D算法关闭
|
||||
- 2: 游戏模式 — 游戏键灯亮,EQ算法开启,EX3D游戏声场(SF=0)开启
|
||||
- 3: AI7.1模式 — AI7.1键灯亮,EQ算法开启,EX3D AI7.1声场(SF=1)开启
|
||||
|
||||
**设备端处理**:
|
||||
- 效果等同于按下相应的硬件模式按键
|
||||
- 参数会通过现有的定时保存机制自动保存到Flash
|
||||
- 如果参数超出范围(>2),固件将拒绝设置并返回false
|
||||
- 如果参数超出范围(>3),固件将拒绝设置并返回false
|
||||
|
||||
**返回值**:
|
||||
无直接返回值。如需确认游戏模式是否设置成功,请使用GET_GAME_MODE命令读取当前游戏模式。
|
||||
无直接返回值。如需确认音效模式是否设置成功,请使用GET_SOUND_EFFECT_MODE命令读取当前音效模式。
|
||||
|
||||
### 2.28 0xA5 - GET_GAME_MODE (获取游戏模式)
|
||||
**功能**: 读取设备当前游戏模式
|
||||
### 2.28 0xA5 - GET_SOUND_EFFECT_MODE (获取音效模式)
|
||||
**功能**: 读取设备当前音效模式
|
||||
**方向**: 主机→设备
|
||||
**请求数据包格式**:
|
||||
```
|
||||
@@ -546,7 +548,7 @@
|
||||
0 | 1 | 0x01 | Report ID
|
||||
1 | 1 | 0x77 | 同步头1
|
||||
2 | 1 | 0xA5 | 同步头2
|
||||
3 | 1 | uint8 | 当前游戏模式 (0=无音效, 1=FPS, 2=虚拟7.1)
|
||||
3 | 1 | uint8 | 当前音效模式 (0=无音效, 1=音乐模式, 2=游戏模式, 3=AI7.1模式)
|
||||
4-62 | 59 | 0x00 | 保留字节
|
||||
```
|
||||
|
||||
|
||||
Reference in New Issue
Block a user