report mode change

This commit is contained in:
Steven Dan
2026-04-15 16:20:08 +08:00
parent 6d554c5089
commit c17135191f
3 changed files with 44 additions and 7 deletions

View File

@@ -87,6 +87,7 @@ unsigned g_request_mic_volume_set = 0;
unsigned g_last_mic_volume_level = 0xFF; // 上次已上报的麦克风增益级别0xFF表示初始化未完成 unsigned g_last_mic_volume_level = 0xFF; // 上次已上报的麦克风增益级别0xFF表示初始化未完成
unsigned g_dnr_strength = 100; // AI降噪强度HID值0=关2-100=开步进2100→-200dB最强 unsigned g_dnr_strength = 100; // AI降噪强度HID值0=关2-100=开步进2100→-200dB最强
unsigned g_last_dnr_strength = 0xFF; // 上次已上报的降噪强度0xFF表示首次未上报触发开机上报 unsigned g_last_dnr_strength = 0xFF; // 上次已上报的降噪强度0xFF表示首次未上报触发开机上报
unsigned g_last_game_mode = 0xFF; // 上次已上报的音效模式0xFF表示首次未上报触发开机上报
unsigned g_request_dnr_strength_set = 0; // HID 0x85 SET_AI_NOISE_STRENGTH待处理标志 unsigned g_request_dnr_strength_set = 0; // HID 0x85 SET_AI_NOISE_STRENGTH待处理标志
unsigned g_monitor_switch = 0; // 耳返开关0=关闭1=开启),默认关闭 unsigned g_monitor_switch = 0; // 耳返开关0=关闭1=开启),默认关闭
unsigned g_request_monitor_switch_set = 0; // HID 0x87 SET_MONITOR_SWITCH待处理标志 unsigned g_request_monitor_switch_set = 0; // HID 0x87 SET_MONITOR_SWITCH待处理标志
@@ -1981,6 +1982,30 @@ void button_task(chanend c_hidSendData, chanend cc_mic_level, chanend c_uac_vol,
g_last_dnr_strength = current_dnr_strength; g_last_dnr_strength = current_dnr_strength;
} }
#endif #endif
// HID音效模式变化主动上报按键切换或0xA4命令导致的模式变化含首次开机上报
{
unsigned current_game_mode;
GET_SHARED_GLOBAL(current_game_mode, g_game_mode);
#if HID_DFU_EN
if (!g_in_fw_upgrade)
#endif
if (g_last_game_mode != current_game_mode) {
unsafe {
unsigned char * unsafe ptr = (unsigned char * unsafe)hidSendData;
ptr[0] = 1;
ptr[1] = 0x77;
ptr[2] = 0xA5;
ptr[3] = (unsigned char)current_game_mode;
for (int i = 4; i < HID_MAX_DATA_BYTES; i++)
ptr[i] = 0x00;
}
hidSetChangePending(0x1);
debug_printf("Game mode changed: %d -> %d, HID report sent\n",
g_last_game_mode, current_game_mode);
}
g_last_game_mode = current_game_mode;
}
#endif #endif
#if EQ_EN #if EQ_EN

View File

@@ -714,11 +714,11 @@
- 如果参数超出范围(>3固件将拒绝设置并返回false - 如果参数超出范围(>3固件将拒绝设置并返回false
**返回值**: **返回值**:
无直接返回值。如需确认音效模式是否设置成功请使用GET_SOUND_EFFECT_MODE命令读取当前音效模式 无直接返回值。设备端音效模式变化会主动通过0xA5格式上报
### 2.28 0xA5 - GET_SOUND_EFFECT_MODE (获取音效模式) ### 2.28 0xA5 - GET_SOUND_EFFECT_MODE (获取音效模式)
**功能**: 读取设备当前音效模式 **功能**: 读取设备当前音效模式;音效模式变化时设备主动上报
**方向**: 主机→设备 **方向**: 主机→设备(请求),设备→主机(响应/主动上报)
**请求数据包格式**: **请求数据包格式**:
``` ```
字节位置 | 长度 | 内容 | 描述 字节位置 | 长度 | 内容 | 描述
@@ -739,6 +739,12 @@
4-62 | 59 | 0x00 | 保留字节 4-62 | 59 | 0x00 | 保留字节
``` ```
**主动上报说明**:
- **开机时**:设备初始化完成后主动上报当前音效模式
- **按键切换**用户按下Music/Game/AI7.1按键时,设备主动上报新音效模式
- **HID SET_SOUND_EFFECT_MODE0xA4命令成功执行后**,设备主动上报新音效模式
- 上报数据包格式与响应格式相同0x01, 0x77, 0xA5, mode
### 2.29 0xA6 - GET_FIRMWARE_VERSION (获取固件版本) ### 2.29 0xA6 - GET_FIRMWARE_VERSION (获取固件版本)
**功能**: 读取设备固件版本号 **功能**: 读取设备固件版本号
**方向**: 主机→设备 **方向**: 主机→设备

View File

@@ -672,11 +672,11 @@
- 3: AI7.1模式 — AI7.1键灯亮EQ算法开启EX3D AI7.1声场(SF=1)开启 - 3: AI7.1模式 — AI7.1键灯亮EQ算法开启EX3D AI7.1声场(SF=1)开启
**返回值**: **返回值**:
无直接返回值。如需确认音效模式是否设置成功请使用GET_SOUND_EFFECT_MODE命令读取当前音效模式 无直接返回值。设备端音效模式变化会主动通过0xA5格式上报
### 2.28 0xA5 - GET_SOUND_EFFECT_MODE (获取音效模式) ### 2.28 0xA5 - GET_SOUND_EFFECT_MODE (获取音效模式)
**功能**: 读取设备当前音效模式 **功能**: 读取设备当前音效模式;音效模式变化时设备主动上报
**方向**: 主机→设备 **方向**: 主机→设备(请求),设备→主机(响应/主动上报)
**请求数据包格式**: **请求数据包格式**:
``` ```
字节位置 | 长度 | 内容 | 描述 字节位置 | 长度 | 内容 | 描述
@@ -686,7 +686,7 @@
2-62 | 61 | 0x00 | 保留字节 2-62 | 61 | 0x00 | 保留字节
``` ```
**响应数据包格式**: **响应数据包格式**(含主动上报):
``` ```
字节位置 | 长度 | 内容 | 描述 字节位置 | 长度 | 内容 | 描述
---------|------|------|------ ---------|------|------|------
@@ -697,6 +697,12 @@
4-62 | 59 | 0x00 | 保留字节 4-62 | 59 | 0x00 | 保留字节
``` ```
**主动上报说明**:
- **开机时**:设备初始化完成后主动上报当前音效模式
- **按键切换**用户按下Music/Game/AI7.1按键时,设备主动上报新音效模式
- **HID SET_SOUND_EFFECT_MODE0xA4命令成功执行后**,设备主动上报新音效模式
- 上报数据包格式与响应格式相同0x01, 0x77, 0xA5, mode
### 2.29 0xA6 - GET_FIRMWARE_VERSION (获取固件版本) ### 2.29 0xA6 - GET_FIRMWARE_VERSION (获取固件版本)
**功能**: 读取设备固件版本号 **功能**: 读取设备固件版本号
**方向**: 主机→设备 **方向**: 主机→设备