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);
|
debug_printf("Saved game_mode to flash: %d\n", saved_mode);
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
// if (saved_mode == 255)
|
if (saved_mode == 255) {
|
||||||
{
|
|
||||||
#if defined(F1_MUSIC_UAC2)
|
#if defined(F1_MUSIC_UAC2)
|
||||||
saved_mode = 1; // f1: default music mode
|
saved_mode = 1; // f1: default music mode
|
||||||
#elif defined(F3_F4_FPS_UAC2)
|
#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;
|
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, active_mode);
|
||||||
SET_SHARED_GLOBAL(g_game_mode, hid_mode_init);
|
debug_printf("active_mode=%d\n", active_mode);
|
||||||
debug_printf("active_mode=%d hid_mode=%d\n", active_mode, hid_mode_init);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -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 <: 0xFC;
|
||||||
cc_mic_level <: hid_mode_startup;
|
cc_mic_level <: active_mode;
|
||||||
debug_printf("Sent hid_mode %d (active_mode=%d) to hid_button_task\n", hid_mode_startup, active_mode);
|
debug_printf("Sent sound_effect_mode %d to hid_button_task\n", active_mode);
|
||||||
}
|
}
|
||||||
|
|
||||||
// port_enable(p_ctrl_keys);
|
// 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;
|
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) {
|
if (mode_btn_change || need_reboot) {
|
||||||
// Always persist mode to flash so boot chain restores it
|
// 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);
|
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
|
#if USE_EX3D == 1
|
||||||
{
|
{
|
||||||
// hid_mode: 0=IR_OFF, 1=IR_GAME, 2=IR_7_1_GAME
|
// sound_effect_mode: 0=无音效, 1=音乐, 2=游戏, 3=AI7.1
|
||||||
unsigned hid_mode = (active_mode >= 2) ? (active_mode - 1) : 0;
|
|
||||||
SET_SHARED_GLOBAL(g_game_mode, hid_mode);
|
|
||||||
cc_mic_level <: 0xFC;
|
cc_mic_level <: 0xFC;
|
||||||
cc_mic_level <: hid_mode;
|
cc_mic_level <: active_mode;
|
||||||
debug_printf("Mode changed: active=%d hid=%d\n", active_mode, hid_mode);
|
debug_printf("Mode changed: active_mode=%d\n", active_mode);
|
||||||
}
|
}
|
||||||
#endif
|
#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};
|
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 void buffer_exchange(chanend_t c_data, unsigned sampsFromUsbToAudio[], unsigned sampsFromAudioToUsb[]);
|
||||||
extern unsigned int is_eq_disabled(void);
|
extern unsigned int is_eq_disabled(void);
|
||||||
|
extern unsigned int g_eq_enable;
|
||||||
void UserBufferManagement(unsigned sampsFromUsbToAudio[], unsigned sampsFromAudioToUsb[])
|
void UserBufferManagement(unsigned sampsFromUsbToAudio[], unsigned sampsFromAudioToUsb[])
|
||||||
{
|
{
|
||||||
uint32_t is_3d;
|
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);
|
debug_printf("hid_button_task received audio_mode: %d\n", current_mode_local);
|
||||||
|
|
||||||
if (current_mode_local == 0) {
|
if (current_mode_local == 0) {
|
||||||
// 关闭算法
|
// 无音效模式:关闭EX3D和EQ算法
|
||||||
audio_ex3d_set_onoff(0);
|
audio_ex3d_set_onoff(0);
|
||||||
|
g_eq_enable = 0;
|
||||||
#if IR_SWITCHING_MODE
|
#if IR_SWITCHING_MODE
|
||||||
is_3d_on = IR_OFF;
|
is_3d_on = IR_OFF;
|
||||||
#else
|
#else
|
||||||
is_3d_on = A3D_OFF;
|
is_3d_on = A3D_OFF;
|
||||||
#endif
|
#endif
|
||||||
debug_printf("Mode 0: algorithm OFF\n");
|
debug_printf("Mode 0: EX3D+EQ OFF\n");
|
||||||
} else if (current_mode_local == 1) {
|
} 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
|
#if IR_SWITCHING_MODE
|
||||||
audio_ex3d_set_sf(0); // SF 0 = STEREO GAME
|
audio_ex3d_set_sf(0); // SF 0 = STEREO GAME
|
||||||
is_3d_on = IR_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;
|
is_3d_on = A3D_ON;
|
||||||
#endif
|
#endif
|
||||||
audio_ex3d_set_onoff(1);
|
audio_ex3d_set_onoff(1);
|
||||||
debug_printf("Mode 1: GAME (IR_GAME) ON, sf=0\n");
|
debug_printf("Mode 2: GAME (IR_GAME) ON, sf=0, EQ ON\n");
|
||||||
} else if (current_mode_local == 2) {
|
} else if (current_mode_local == 3) {
|
||||||
// AI7.1模式 (IR_7_1_GAME, 7.1): SF index 1
|
// AI7.1模式 (IR_7_1_GAME, 7.1): SF index 1,EQ开启
|
||||||
|
g_eq_enable = 1;
|
||||||
#if IR_SWITCHING_MODE
|
#if IR_SWITCHING_MODE
|
||||||
audio_ex3d_set_sf(1); // SF 1 = SPATIAL GAME (7.1)
|
audio_ex3d_set_sf(1); // SF 1 = SPATIAL GAME (7.1)
|
||||||
is_3d_on = IR_7_1_GAME;
|
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;
|
is_3d_on = A3D_ON;
|
||||||
#endif
|
#endif
|
||||||
audio_ex3d_set_onoff(1);
|
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);
|
SET_SHARED_GLOBAL(g_3d_on_off_t1, is_3d_on);
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -684,31 +684,23 @@ unsigned char process_send_params(uint8_t data[], uint16_t len) {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 处理设置游戏模式命令 (0xA4) - SET_GAME_MODE
|
// 处理设置音效模式命令 (0xA4) - SET_SOUND_EFFECT_MODE
|
||||||
|
// 0=无音效(EQ/EX3D全关), 1=音乐模式, 2=游戏模式, 3=AI7.1模式
|
||||||
if (data[1] == 0xA4) {
|
if (data[1] == 0xA4) {
|
||||||
uint8_t game_mode = data[2];
|
uint8_t game_mode = data[2];
|
||||||
|
|
||||||
// 参数验证
|
// 参数验证:0-3
|
||||||
if (game_mode > 2) {
|
if (game_mode > 3) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
extern unsigned g_uac_mode;
|
extern unsigned g_request_game_mode;
|
||||||
unsigned uac_mode;
|
SET_SHARED_GLOBAL(g_request_game_mode, game_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);
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 处理获取游戏模式命令 (0xA5) - GET_GAME_MODE
|
// 处理获取音效模式命令 (0xA5) - GET_SOUND_EFFECT_MODE
|
||||||
if (data[1] == 0xA5) {
|
if (data[1] == 0xA5) {
|
||||||
read_request.pending_cmd = 0xA5;
|
read_request.pending_cmd = 0xA5;
|
||||||
return true;
|
return true;
|
||||||
@@ -1044,11 +1036,7 @@ unsigned char process_read_params(uint8_t response[]) {
|
|||||||
GET_SHARED_GLOBAL(game_mode, g_game_mode);
|
GET_SHARED_GLOBAL(game_mode, g_game_mode);
|
||||||
|
|
||||||
// 当前游戏模式 (1字节,位置2)
|
// 当前游戏模式 (1字节,位置2)
|
||||||
#if UAC2 == 1
|
|
||||||
response[2] = 0;
|
|
||||||
#else
|
|
||||||
response[2] = (uint8_t)game_mode;
|
response[2] = (uint8_t)game_mode;
|
||||||
#endif
|
|
||||||
|
|
||||||
read_request.pending_cmd = 0; // Clear read request flag
|
read_request.pending_cmd = 0; // Clear read request flag
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -522,10 +522,10 @@ class EQDesigner(QMainWindow):
|
|||||||
|
|
||||||
|
|
||||||
# 添加音效模式设置组
|
# 添加音效模式设置组
|
||||||
mode_group = QGroupBox("音效模式设置")
|
mode_group = QGroupBox("EQ模式")
|
||||||
self.ui_groups['mode'] = mode_group # 保存引用
|
self.ui_groups['mode'] = mode_group # 保存引用
|
||||||
mode_layout = QFormLayout(mode_group)
|
mode_layout = QFormLayout(mode_group)
|
||||||
self.mode_label = QLabel("音效模式:")
|
self.mode_label = QLabel("EQ模式:")
|
||||||
self.mode_combo = QComboBox()
|
self.mode_combo = QComboBox()
|
||||||
self.mode_combo.addItems(["预设模式1", "预设模式2", "预设模式3", "预设模式4", "预设模式5", "预设模式6", "用户模式1", "用户模式2", "用户模式3", "bypass", "禁用EQ"])
|
self.mode_combo.addItems(["预设模式1", "预设模式2", "预设模式3", "预设模式4", "预设模式5", "预设模式6", "用户模式1", "用户模式2", "用户模式3", "bypass", "禁用EQ"])
|
||||||
self.mode_combo.currentIndexChanged.connect(self.on_mode_changed)
|
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)
|
mode_layout.addRow(self.mode_name_label, self.mode_name_edit)
|
||||||
|
|
||||||
# 切换音效模式按钮(只发送0x8A命令)
|
# 切换音效模式按钮(只发送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.clicked.connect(self.on_switch_mode)
|
||||||
self.switch_mode_btn.hide()
|
self.switch_mode_btn.hide()
|
||||||
mode_layout.addRow(self.switch_mode_btn)
|
mode_layout.addRow(self.switch_mode_btn)
|
||||||
|
|
||||||
# 获取音效模式按钮(只处理0x8B命令)
|
# 获取音效模式按钮(只处理0x8B命令)
|
||||||
# 改动原因:移除hide()调用,让按钮显示出来,方便用户获取当前模式
|
# 改动原因:移除hide()调用,让按钮显示出来,方便用户获取当前模式
|
||||||
self.get_mode_btn = QPushButton("获取当前音效模式")
|
self.get_mode_btn = QPushButton("获取当前EQ模式")
|
||||||
self.get_mode_btn.clicked.connect(self.on_get_mode)
|
self.get_mode_btn.clicked.connect(self.on_get_mode)
|
||||||
mode_layout.addRow(self.get_mode_btn)
|
mode_layout.addRow(self.get_mode_btn)
|
||||||
|
|
||||||
# 设置并保存音效模式按钮(发送0x92命令)
|
# 设置并保存音效模式按钮(发送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)
|
self.set_and_save_mode_btn.clicked.connect(self.on_set_and_save_mode)
|
||||||
mode_layout.addRow(self.set_and_save_mode_btn)
|
mode_layout.addRow(self.set_and_save_mode_btn)
|
||||||
|
|
||||||
@@ -560,17 +560,17 @@ class EQDesigner(QMainWindow):
|
|||||||
|
|
||||||
# 添加音效参数配置组(EQ参数相关,可通过菜单隐藏)
|
# 添加音效参数配置组(EQ参数相关,可通过菜单隐藏)
|
||||||
# 改动原因:将音效参数配置组也添加到ui_groups中,使其可以通过菜单隐藏/显示
|
# 改动原因:将音效参数配置组也添加到ui_groups中,使其可以通过菜单隐藏/显示
|
||||||
param_group = QGroupBox("音效参数配置")
|
param_group = QGroupBox("EQ参数配置")
|
||||||
self.ui_groups['param'] = param_group # 保存引用,用于菜单控制可见性
|
self.ui_groups['param'] = param_group # 保存引用,用于菜单控制可见性
|
||||||
param_layout = QVBoxLayout(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)
|
self.config_params_btn.clicked.connect(self.on_config_params)
|
||||||
param_layout.addWidget(self.config_params_btn)
|
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.hide()
|
||||||
self.read_params_btn.clicked.connect(self.on_read_params)
|
self.read_params_btn.clicked.connect(self.on_read_params)
|
||||||
param_layout.addWidget(self.read_params_btn)
|
param_layout.addWidget(self.read_params_btn)
|
||||||
@@ -646,68 +646,26 @@ class EQDesigner(QMainWindow):
|
|||||||
|
|
||||||
left_content_layout.addWidget(volume_group)
|
left_content_layout.addWidget(volume_group)
|
||||||
|
|
||||||
# 添加设备模式控制组(增益模式、滤波器模式、游戏模式)
|
# 添加音效模式控制组
|
||||||
device_mode_group = QGroupBox("设备模式控制")
|
device_mode_group = QGroupBox("音效模式控制")
|
||||||
self.ui_groups['device_mode'] = device_mode_group # 保存引用
|
self.ui_groups['device_mode'] = device_mode_group # 保存引用
|
||||||
device_mode_layout = QFormLayout(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()
|
game_control_layout = QHBoxLayout()
|
||||||
self.game_mode_combo = QComboBox()
|
self.game_mode_combo = QComboBox()
|
||||||
self.game_mode_combo.addItem("无音效 (0)", 0)
|
self.game_mode_combo.addItem("无音效 (0)", 0)
|
||||||
self.game_mode_combo.addItem("FPS模式 (1)", 1)
|
self.game_mode_combo.addItem("音乐模式 (1)", 1)
|
||||||
self.game_mode_combo.addItem("虚拟7.1 (2)", 2)
|
self.game_mode_combo.addItem("游戏模式 (2)", 2)
|
||||||
game_control_layout.addWidget(QLabel("游戏模式:"))
|
self.game_mode_combo.addItem("AI7.1模式 (3)", 3)
|
||||||
|
game_control_layout.addWidget(QLabel("音效模式:"))
|
||||||
game_control_layout.addWidget(self.game_mode_combo)
|
game_control_layout.addWidget(self.game_mode_combo)
|
||||||
device_mode_layout.addRow(game_control_layout)
|
device_mode_layout.addRow(game_control_layout)
|
||||||
|
|
||||||
game_btn_layout = QHBoxLayout()
|
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.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)
|
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.set_game_mode_btn)
|
||||||
game_btn_layout.addWidget(self.get_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)
|
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使能控制组
|
||||||
eq_enable_group = QGroupBox("EQ使能控制")
|
eq_enable_group = QGroupBox("EQ使能控制")
|
||||||
@@ -1005,12 +858,10 @@ class EQDesigner(QMainWindow):
|
|||||||
# 改动原因:添加'param'(音效参数配置)到菜单控制列表中
|
# 改动原因:添加'param'(音效参数配置)到菜单控制列表中
|
||||||
group_names = {
|
group_names = {
|
||||||
'device_info': '设备信息',
|
'device_info': '设备信息',
|
||||||
'mode': '音效模式设置',
|
'mode': 'EQ模式',
|
||||||
'param': '音效参数配置',
|
'param': 'EQ参数配置',
|
||||||
'volume': '音量控制',
|
'volume': '音量控制',
|
||||||
'device_mode': '设备模式控制',
|
'device_mode': '音效模式控制',
|
||||||
'led': 'LED控制',
|
|
||||||
'uac': 'UAC模式控制',
|
|
||||||
'eq_enable': 'EQ使能控制',
|
'eq_enable': 'EQ使能控制',
|
||||||
'ex3d': 'EX3D控制'
|
'ex3d': 'EX3D控制'
|
||||||
}
|
}
|
||||||
@@ -1034,12 +885,10 @@ class EQDesigner(QMainWindow):
|
|||||||
if group_key in self.view_actions:
|
if group_key in self.view_actions:
|
||||||
group_names = {
|
group_names = {
|
||||||
'device_info': '设备信息',
|
'device_info': '设备信息',
|
||||||
'mode': '音效模式设置',
|
'mode': 'EQ模式',
|
||||||
'param': '音效参数配置',
|
'param': 'EQ参数配置',
|
||||||
'volume': '音量控制',
|
'volume': '音量控制',
|
||||||
'device_mode': '设备模式控制',
|
'device_mode': '音效模式控制',
|
||||||
'led': 'LED控制',
|
|
||||||
'uac': 'UAC模式控制',
|
|
||||||
'eq_enable': 'EQ使能控制',
|
'eq_enable': 'EQ使能控制',
|
||||||
'ex3d': 'EX3D控制'
|
'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)
|
log_message(LOG_LEVEL_ERROR, f"读取滤波器模式时出错: {str(e)}", self.log_level)
|
||||||
|
|
||||||
def on_set_game_mode(self):
|
def on_set_game_mode(self):
|
||||||
"""设置游戏模式(发送0xA4命令)"""
|
"""设置音效模式(发送0xA4命令)"""
|
||||||
if self.device_combo.currentData() is None:
|
if self.device_combo.currentData() is None:
|
||||||
log_message(LOG_LEVEL_ERROR, "请先选择设备", self.log_level)
|
log_message(LOG_LEVEL_ERROR, "请先选择设备", self.log_level)
|
||||||
return
|
return
|
||||||
|
|
||||||
# 获取游戏模式值
|
# 获取音效模式值
|
||||||
game_mode = self.game_mode_combo.currentData()
|
game_mode = self.game_mode_combo.currentData()
|
||||||
|
|
||||||
# 弹出确认对话框
|
# 弹出确认对话框
|
||||||
reply = QMessageBox.question(
|
reply = QMessageBox.question(
|
||||||
self,
|
self,
|
||||||
"确认设置游戏模式",
|
"确认设置音效模式",
|
||||||
f"将要设置游戏模式为: {self.game_mode_combo.currentText()}\n\n"
|
f"将要设置音效模式为: {self.game_mode_combo.currentText()}\n\n"
|
||||||
f"游戏模式: 0=无音效, 1=FPS, 2=虚拟7.1\n\n"
|
f"音效模式: 0=无音效, 1=音乐模式, 2=游戏模式, 3=AI7.1模式\n\n"
|
||||||
f"是否继续?",
|
f"是否继续?",
|
||||||
QMessageBox.Yes | QMessageBox.No,
|
QMessageBox.Yes | QMessageBox.No,
|
||||||
QMessageBox.No
|
QMessageBox.No
|
||||||
@@ -3383,27 +3232,27 @@ eq_mode_data_t sEQ_data_{int(fs)}HZ[NUM_EQ_MODES][NUM_EQ_CHANS] = {{
|
|||||||
# 构建0xA4数据包
|
# 构建0xA4数据包
|
||||||
data = bytearray(63) # 63字节数据包
|
data = bytearray(63) # 63字节数据包
|
||||||
data[0] = 0x77 # 同步头1
|
data[0] = 0x77 # 同步头1
|
||||||
data[1] = 0xA4 # 命令码 (SET_GAME_MODE)
|
data[1] = 0xA4 # 命令码 (SET_SOUND_EFFECT_MODE)
|
||||||
data[2] = game_mode # 游戏模式值 (0-2)
|
data[2] = game_mode # 音效模式值 (0-3)
|
||||||
# 其余字节保持为0
|
# 其余字节保持为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.write([0x01] + list(data))
|
||||||
|
|
||||||
h.close()
|
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(
|
QMessageBox.information(
|
||||||
self,
|
self,
|
||||||
"成功",
|
"成功",
|
||||||
f"游戏模式已设置为: {self.game_mode_combo.currentText()}"
|
f"音效模式已设置为: {self.game_mode_combo.currentText()}"
|
||||||
)
|
)
|
||||||
|
|
||||||
except Exception as e:
|
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):
|
def on_get_game_mode(self):
|
||||||
"""读取游戏模式(发送0xA5命令)"""
|
"""读取音效模式(发送0xA5命令)"""
|
||||||
if self.device_combo.currentData() is None:
|
if self.device_combo.currentData() is None:
|
||||||
log_message(LOG_LEVEL_ERROR, "请先选择设备", self.log_level)
|
log_message(LOG_LEVEL_ERROR, "请先选择设备", self.log_level)
|
||||||
return
|
return
|
||||||
@@ -3417,11 +3266,11 @@ eq_mode_data_t sEQ_data_{int(fs)}HZ[NUM_EQ_MODES][NUM_EQ_CHANS] = {{
|
|||||||
# 构建0xA5数据包
|
# 构建0xA5数据包
|
||||||
data = bytearray(63) # 63字节数据包
|
data = bytearray(63) # 63字节数据包
|
||||||
data[0] = 0x77 # 同步头1
|
data[0] = 0x77 # 同步头1
|
||||||
data[1] = 0xA5 # 命令码 (GET_GAME_MODE)
|
data[1] = 0xA5 # 命令码 (GET_SOUND_EFFECT_MODE)
|
||||||
# 其余字节保持为0
|
# 其余字节保持为0
|
||||||
|
|
||||||
# 发送请求
|
# 发送请求
|
||||||
log_message(LOG_LEVEL_INFO, "正在读取游戏模式...", self.log_level)
|
log_message(LOG_LEVEL_INFO, "正在读取音效模式...", self.log_level)
|
||||||
h.write([0x01] + list(data))
|
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:
|
if reply and len(reply) == 64:
|
||||||
# 检查Report ID和同步头
|
# 检查Report ID和同步头
|
||||||
if reply[0] == 0x01 and reply[1] == 0x77 and reply[2] == 0xA5:
|
if reply[0] == 0x01 and reply[1] == 0x77 and reply[2] == 0xA5:
|
||||||
# 解析游戏模式
|
# 解析音效模式
|
||||||
game_mode = reply[3]
|
game_mode = reply[3]
|
||||||
|
|
||||||
# 更新UI显示
|
# 更新UI显示
|
||||||
@@ -3439,14 +3288,14 @@ eq_mode_data_t sEQ_data_{int(fs)}HZ[NUM_EQ_MODES][NUM_EQ_CHANS] = {{
|
|||||||
if index >= 0:
|
if index >= 0:
|
||||||
self.game_mode_combo.setCurrentIndex(index)
|
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 "未知"
|
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(
|
QMessageBox.information(
|
||||||
self,
|
self,
|
||||||
"游戏模式",
|
"音效模式",
|
||||||
f"当前游戏模式: {game_mode}\n\n"
|
f"当前音效模式: {game_mode}\n\n"
|
||||||
f"{mode_name}"
|
f"{mode_name}"
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
@@ -3457,7 +3306,7 @@ eq_mode_data_t sEQ_data_{int(fs)}HZ[NUM_EQ_MODES][NUM_EQ_CHANS] = {{
|
|||||||
h.close()
|
h.close()
|
||||||
|
|
||||||
except Exception as e:
|
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):
|
def on_get_firmware_version(self):
|
||||||
"""读取固件版本(发送0xA6命令)"""
|
"""读取固件版本(发送0xA6命令)"""
|
||||||
|
|||||||
@@ -24,8 +24,8 @@
|
|||||||
| 0x9D | SET_EQ_ENABLE | 设置EQ使能开关 | 主机→设备 | 设置EQ使能开关(ON/OFF),禁用时保存当前模式,启用时恢复之前模式 |
|
| 0x9D | SET_EQ_ENABLE | 设置EQ使能开关 | 主机→设备 | 设置EQ使能开关(ON/OFF),禁用时保存当前模式,启用时恢复之前模式 |
|
||||||
| 0x9E | GET_EQ_ENABLE | 获取EQ使能开关 | 主机→设备 | 读取EQ使能开关状态(ON/OFF) |
|
| 0x9E | GET_EQ_ENABLE | 获取EQ使能开关 | 主机→设备 | 读取EQ使能开关状态(ON/OFF) |
|
||||||
| 0x9F | GET_SAMPLE_FORMAT | 获取采样率和格式 | 主机→设备 | 读取当前采样率、DSD模式和DAC采样分辨率 |
|
| 0x9F | GET_SAMPLE_FORMAT | 获取采样率和格式 | 主机→设备 | 读取当前采样率、DSD模式和DAC采样分辨率 |
|
||||||
| 0xA4 | SET_GAME_MODE | 设置游戏模式 | 主机→设备 | 设置游戏模式(0=无音效,1=FPS,2=虚拟7.1) |
|
| 0xA4 | SET_SOUND_EFFECT_MODE | 设置音效模式 | 主机→设备 | 设置音效模式(0=无音效,1=音乐模式,2=游戏模式,3=AI7.1模式) |
|
||||||
| 0xA5 | GET_GAME_MODE | 获取游戏模式 | 主机→设备 | 读取当前游戏模式(0-2) |
|
| 0xA5 | GET_SOUND_EFFECT_MODE | 获取音效模式 | 主机→设备 | 读取当前音效模式(0-3) |
|
||||||
| 0xA6 | GET_FIRMWARE_VERSION | 获取固件版本 | 主机→设备 | 读取设备固件版本号(BCD格式:主版本.次版本.修订版本) |
|
| 0xA6 | GET_FIRMWARE_VERSION | 获取固件版本 | 主机→设备 | 读取设备固件版本号(BCD格式:主版本.次版本.修订版本) |
|
||||||
| 0xB0 | SET_EX3D_CMD | 发送EX3D命令 | 主机→设备 | 发送EX3D设置命令(封装所有EX3D SET命令) |
|
| 0xB0 | SET_EX3D_CMD | 发送EX3D命令 | 主机→设备 | 发送EX3D设置命令(封装所有EX3D SET命令) |
|
||||||
| 0xB1 | GET_EX3D_CMD | 读取EX3D命令 | 主机→设备 | 读取EX3D参数(封装所有EX3D GET命令) |
|
| 0xB1 | GET_EX3D_CMD | 读取EX3D命令 | 主机→设备 | 读取EX3D参数(封装所有EX3D GET命令) |
|
||||||
@@ -500,8 +500,8 @@
|
|||||||
- 返回当前EQ使能开关状态
|
- 返回当前EQ使能开关状态
|
||||||
- 返回之前保存的模式值(如果存在)
|
- 返回之前保存的模式值(如果存在)
|
||||||
|
|
||||||
### 2.27 0xA4 - SET_GAME_MODE (设置游戏模式)
|
### 2.27 0xA4 - SET_SOUND_EFFECT_MODE (设置音效模式)
|
||||||
**功能**: 设置游戏模式
|
**功能**: 设置音效模式
|
||||||
**方向**: 主机→设备
|
**方向**: 主机→设备
|
||||||
**数据包格式**:
|
**数据包格式**:
|
||||||
```
|
```
|
||||||
@@ -509,26 +509,28 @@
|
|||||||
---------|------|------|------
|
---------|------|------|------
|
||||||
0 | 1 | 0x77 | 同步头1
|
0 | 1 | 0x77 | 同步头1
|
||||||
1 | 1 | 0xA4 | 命令码
|
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 | 保留字节
|
3-62 | 60 | 0x00 | 保留字节
|
||||||
```
|
```
|
||||||
|
|
||||||
**参数说明**:
|
**参数说明**:
|
||||||
- **游戏模式范围:** 0-2
|
- **音效模式范围:** 0-3
|
||||||
- **说明:** 选择游戏音效模式
|
- **说明:** 选择音效模式,与硬件按键效果相同
|
||||||
- 0: 无音效(标准立体声)
|
- 0: 无音效 — 所有模式按键灯灭,EQ算法关闭,EX3D算法关闭
|
||||||
- 1: FPS模式(增强定位感)
|
- 1: 音乐模式 — 音乐键灯亮,EQ算法开启,EX3D算法关闭
|
||||||
- 2: 虚拟7.1(环绕声效果)
|
- 2: 游戏模式 — 游戏键灯亮,EQ算法开启,EX3D游戏声场(SF=0)开启
|
||||||
|
- 3: AI7.1模式 — AI7.1键灯亮,EQ算法开启,EX3D AI7.1声场(SF=1)开启
|
||||||
|
|
||||||
**设备端处理**:
|
**设备端处理**:
|
||||||
|
- 效果等同于按下相应的硬件模式按键
|
||||||
- 参数会通过现有的定时保存机制自动保存到Flash
|
- 参数会通过现有的定时保存机制自动保存到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
|
0 | 1 | 0x01 | Report ID
|
||||||
1 | 1 | 0x77 | 同步头1
|
1 | 1 | 0x77 | 同步头1
|
||||||
2 | 1 | 0xA5 | 同步头2
|
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 | 保留字节
|
4-62 | 59 | 0x00 | 保留字节
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user