KT24-1110_65E-HA-651B/apps/soundbox/smartbox/smartbox_setting/smartbox_karaoke_setting.c
2024-11-10 18:44:17 +08:00

599 lines
23 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include "smartbox/config.h"
#include "syscfg_id.h"
#include "le_smartbox_module.h"
#include "smartbox_setting_sync.h"
#include "smartbox_setting_opt.h"
#include "smartbox/function.h"
#if (SOUNDCARD_ENABLE && SMART_BOX_EN && RCSP_ADV_KARAOKE_SET_ENABLE)
#include "key_event_deal.h"
#include "mic_effect.h"
#include "JL_rcsp_packet.h"
#include "soundcard/soundcard.h"
// mask : 8byte
// 音效 : index(1byte) + value(2byte)
// 气氛 : index(1byte) + value(2byte)
// 参数 : [index(1byte) + value(2byte)] * 7
#define KARAOKE_SETTING_SIZE (8 + ((1 + 2) * 2) + ((1 + 2) * 7))
#define KARAOKE_SETTING_ATMOSPHERE_TYPE_SET 0
enum karaoke_setting_index {
// 音效
KARAOKE_SETTING_SOUND_EFFECT_NORMAL = 0,
KARAOKE_SETTING_SOUND_EFFECT_BOY = 1,
KARAOKE_SETTING_SOUND_EFFECT_GRIL = 2,
KARAOKE_SETTING_SOUND_EFFECT_KIDS = 3,
KARAOKE_SETTING_SOUND_EFFECT_MAGIC = 4,
KARAOKE_SETTING_SOUND_EFFECT_ELECTRIC_A_MAJOR = 5,
KARAOKE_SETTING_SOUND_EFFECT_ELECTRIC_Ashop_MAJOR = 6,
KARAOKE_SETTING_SOUND_EFFECT_ELECTRIC_B_MAJOR = 7,
KARAOKE_SETTING_SOUND_EFFECT_ELECTRIC_C_MAJOR = 8,
KARAOKE_SETTING_SOUND_EFFECT_ELECTRIC_Cshop_MAJOR = 9,
KARAOKE_SETTING_SOUND_EFFECT_ELECTRIC_D_MAJOR = 10,
KARAOKE_SETTING_SOUND_EFFECT_ELECTRIC_Dshop_MAJOR = 11,
KARAOKE_SETTING_SOUND_EFFECT_ELECTRIC_E_MAJOR = 12,
KARAOKE_SETTING_SOUND_EFFECT_ELECTRIC_F_MAJOR = 13,
KARAOKE_SETTING_SOUND_EFFECT_ELECTRIC_Fshop_MAJOR = 14,
KARAOKE_SETTING_SOUND_EFFECT_ELECTRIC_G_MAJOR = 15,
KARAOKE_SETTING_SOUND_EFFECT_ELECTRIC_Gshop_MAJOR = 16,
// 气氛
KARAOKE_SETTING_ATMOSPHERE_CHEERS = 17,
KARAOKE_SETTING_ATMOSPHERE_EMBARRASSED = 18,
KARAOKE_SETTING_ATMOSPHERE_GUNFIRE = 19,
KARAOKE_SETTING_ATMOSPHERE_DESPISE = 20,
KARAOKE_SETTING_ATMOSPHERE_OPEN = 21,
KARAOKE_SETTING_ATMOSPHERE_KISS = 22,
KARAOKE_SETTING_ATMOSPHERE_LAUGHTER = 23,
KARAOKE_SETTING_ATMOSPHERE_APPLAUSE = 24,
KARAOKE_SETTING_ATMOSPHERE_PAY_ATTENTION_TO = 25,
KARAOKE_SETTING_ATMOSPHERE_MUA = 26,
KARAOKE_SETTING_ATMOSPHERE_A_THIEF = 27,
KARAOKE_SETTING_ATMOSPHERE_IF_YOU_ARE_THE_ONE = 28,
// 参数
KARAOKE_SETTING_MIC_PARAM_MIC_VOL = 29,
KARAOKE_SETTING_MIC_PARAM_RECORD_VOL = 30,
KARAOKE_SETTING_MIC_PARAM_REVERBERATION = 31,
KARAOKE_SETTING_MIC_PARAM_HIGH = 32,
KARAOKE_SETTING_MIC_PARAM_BASS = 33,
KARAOKE_SETTING_MIC_PARAM_ACCOMPANIMENT_VOL = 34,
KARAOKE_SETTING_MIC_PARAM_MONITOR_VOL = 35,
// 其他
KARAOKE_SETTING_OTHER_EFFECT_POPPING = 36,
KARAOKE_SETTING_OTHER_EFFECT_SHOUT = 37,
KARAOKE_SETTING_OTHER_EFFECT_DODGE = 38,
KARAOKE_SETTING_INDEX_END,
};
enum {
APP_PITCH_NONE = 0,
APP_PITCH_BOY,
APP_PITCH_GIRL,
APP_PITCH_KIDS,
APP_PITCH_MAGIC,
/* 电音 */
APP_SOUNDCARD_MODE_ELECTRIC_A_MAJOR,
APP_SOUNDCARD_MODE_ELECTRIC_Ashop_MAJOR,
APP_SOUNDCARD_MODE_ELECTRIC_B_MAJOR,
APP_SOUNDCARD_MODE_ELECTRIC_C_MAJOR,
APP_SOUNDCARD_MODE_ELECTRIC_Cshop_MAJOR,
APP_SOUNDCARD_MODE_ELECTRIC_D_MAJOR,
APP_SOUNDCARD_MODE_ELECTRIC_Dshop_MAJOR,
APP_SOUNDCARD_MODE_ELECTRIC_E_MAJOR,
APP_SOUNDCARD_MODE_ELECTRIC_F_MAJOR,
APP_SOUNDCARD_MODE_ELECTRIC_Fshop_MAJOR,
APP_SOUNDCARD_MODE_ELECTRIC_G_MAJOR,
APP_SOUNDCARD_MODE_ELECTRIC_Gshop_MAJOR,
APP_SOUNDCARD_MODE_BOOM, // 爆音
APP_SOUNDCARD_MODE_SHOUTING_WHEAT, // 喊麦
APP_SOUNDCARD_MODE_DODGE, // 闪避
};
const static u8 g_mutex_type_table[] = {
KARAOKE_SETTING_SOUND_EFFECT_NORMAL,
KARAOKE_SETTING_SOUND_EFFECT_BOY,
KARAOKE_SETTING_SOUND_EFFECT_GRIL,
KARAOKE_SETTING_SOUND_EFFECT_KIDS,
KARAOKE_SETTING_SOUND_EFFECT_MAGIC,
KARAOKE_SETTING_SOUND_EFFECT_ELECTRIC_A_MAJOR,
KARAOKE_SETTING_SOUND_EFFECT_ELECTRIC_Ashop_MAJOR,
KARAOKE_SETTING_SOUND_EFFECT_ELECTRIC_B_MAJOR,
KARAOKE_SETTING_SOUND_EFFECT_ELECTRIC_C_MAJOR,
KARAOKE_SETTING_SOUND_EFFECT_ELECTRIC_Cshop_MAJOR,
KARAOKE_SETTING_SOUND_EFFECT_ELECTRIC_D_MAJOR,
KARAOKE_SETTING_SOUND_EFFECT_ELECTRIC_Dshop_MAJOR,
KARAOKE_SETTING_SOUND_EFFECT_ELECTRIC_E_MAJOR,
KARAOKE_SETTING_SOUND_EFFECT_ELECTRIC_F_MAJOR,
KARAOKE_SETTING_SOUND_EFFECT_ELECTRIC_Fshop_MAJOR,
KARAOKE_SETTING_SOUND_EFFECT_ELECTRIC_G_MAJOR,
KARAOKE_SETTING_SOUND_EFFECT_ELECTRIC_Gshop_MAJOR,
KARAOKE_SETTING_OTHER_EFFECT_POPPING,
KARAOKE_SETTING_OTHER_EFFECT_SHOUT
};
const static u8 g_atmosphere_type_table[] = {
KARAOKE_SETTING_ATMOSPHERE_CHEERS,
KARAOKE_SETTING_ATMOSPHERE_EMBARRASSED,
KARAOKE_SETTING_ATMOSPHERE_GUNFIRE,
KARAOKE_SETTING_ATMOSPHERE_DESPISE,
KARAOKE_SETTING_ATMOSPHERE_OPEN,
KARAOKE_SETTING_ATMOSPHERE_KISS,
KARAOKE_SETTING_ATMOSPHERE_LAUGHTER,
KARAOKE_SETTING_ATMOSPHERE_APPLAUSE,
KARAOKE_SETTING_ATMOSPHERE_PAY_ATTENTION_TO,
KARAOKE_SETTING_ATMOSPHERE_MUA,
KARAOKE_SETTING_ATMOSPHERE_A_THIEF,
KARAOKE_SETTING_ATMOSPHERE_IF_YOU_ARE_THE_ONE
};
const static u8 g_common_type_table[] = {
KARAOKE_SETTING_OTHER_EFFECT_DODGE
};
const static u8 g_value_type_table[] = {
KARAOKE_SETTING_MIC_PARAM_MIC_VOL,
KARAOKE_SETTING_MIC_PARAM_RECORD_VOL,
KARAOKE_SETTING_MIC_PARAM_REVERBERATION,
KARAOKE_SETTING_MIC_PARAM_HIGH,
KARAOKE_SETTING_MIC_PARAM_BASS,
KARAOKE_SETTING_MIC_PARAM_ACCOMPANIMENT_VOL,
KARAOKE_SETTING_MIC_PARAM_MONITOR_VOL
};
#pragma pack(1)
typedef struct {
u8 mask[8];
u8 mic_vol_index;
u16 mic_vol_value;
u8 mic_record_index;
u16 mic_record_value;
u8 mic_reververation_index;
u16 mic_reververation_value;
u8 mic_high_index;
u16 mic_high_value;
u8 mic_low_index;
u16 mic_low_value;
u8 mic_accompaniment_index;
u16 mic_accompaniment_value;
u8 mic_moitor_index;
u16 mic_moitor_value;
} karaoke_setting;
#pragma pack()
static u8 g_update_index_record = -1;
static karaoke_setting g_karaoke_setting = {0};
extern u8 get_curr_soundcard_pitch_by_value(void);
extern u8 get_curr_soundcard_pitch(void);
extern u8 curr_soundcard_mode_is_normal(void);
static void karaoke_setting_mask_set_bit(u8 *mask, u8 index, u8 type)
{
if (type) {
mask[index / 8] |= BIT(index % 8);
} else {
mask[index / 8] &= ~BIT(index % 8);
}
}
static int karaoke_setting_setting_init(void)
{
// 不读VM
// 需要从接口获取初始值并填充
// mic_vol_index
g_karaoke_setting.mic_vol_index = KARAOKE_SETTING_MIC_PARAM_MIC_VOL;
g_karaoke_setting.mic_vol_value = soundcard_get_mic_vol();
// mic_record_index
g_karaoke_setting.mic_record_index = KARAOKE_SETTING_MIC_PARAM_RECORD_VOL;
g_karaoke_setting.mic_record_value = soundcard_get_rec_vol();
// mic_reververation_index
g_karaoke_setting.mic_reververation_index = KARAOKE_SETTING_MIC_PARAM_REVERBERATION;
g_karaoke_setting.mic_reververation_value = soundcard_get_reverb_wet_vol();
// mic_high_index
g_karaoke_setting.mic_high_index = KARAOKE_SETTING_MIC_PARAM_HIGH;
g_karaoke_setting.mic_high_value = soundcard_get_high_sound_vol();
// mic_low_index
g_karaoke_setting.mic_low_index = KARAOKE_SETTING_MIC_PARAM_BASS;
g_karaoke_setting.mic_low_value = soundcard_get_low_sound_vol();
// mic_accompaniment_index
g_karaoke_setting.mic_accompaniment_index = KARAOKE_SETTING_MIC_PARAM_ACCOMPANIMENT_VOL;
g_karaoke_setting.mic_accompaniment_value = soundcard_get_music_vol();
// mic_moitor_index
g_karaoke_setting.mic_moitor_index = KARAOKE_SETTING_MIC_PARAM_MONITOR_VOL;
g_karaoke_setting.mic_moitor_value = soundcard_get_earphone_vol();
// effect_index
karaoke_setting_mask_set_bit(g_karaoke_setting.mask, KARAOKE_SETTING_SOUND_EFFECT_NORMAL, 1);
// atomsphere_index
#if KARAOKE_SETTING_ATMOSPHERE_TYPE_SET
karaoke_setting_mask_set_bit(g_karaoke_setting.mask, KARAOKE_SETTING_ATMOSPHERE_CHEERS, 1);
#endif
return 0;
}
static void set_karaoke_setting_setting(u8 *karaoke_setting)
{
memcpy(&g_karaoke_setting, karaoke_setting, sizeof(g_karaoke_setting));
}
static int get_karaoke_setting_setting(u8 *karaoke_setting)
{
memcpy(karaoke_setting, &g_karaoke_setting, sizeof(g_karaoke_setting));
return sizeof(g_karaoke_setting);
}
static int karaoke_setting_set_value(u8 *data, u8 index, u16 value)
{
int offset = 0;
data[offset++] = index;
data[offset++] = ((u8 *)&value)[1];
data[offset++] = ((u8 *)&value)[0];
return offset;
}
static int karaoke_get_setting_extra_handle(void *karaoke_setting, void *param)
{
// 全局变量g_karaoke_setting已经把值都存好只需要进行大小端转化即可
int offset = 0;
u8 *data = (u8 *)karaoke_setting;
for (; offset < sizeof(g_karaoke_setting.mask); offset ++) {
data[sizeof(g_karaoke_setting.mask) - offset - 1] = g_karaoke_setting.mask[offset];
}
if ((u8) - 1 == g_update_index_record) {
// mic_vol_value
offset += karaoke_setting_set_value(data + offset, g_karaoke_setting.mic_vol_index, g_karaoke_setting.mic_vol_value);
// mic_record_value
offset += karaoke_setting_set_value(data + offset, g_karaoke_setting.mic_record_index, g_karaoke_setting.mic_record_value);
// mic_reververation_value
offset += karaoke_setting_set_value(data + offset, g_karaoke_setting.mic_reververation_index, g_karaoke_setting.mic_reververation_value);
// mic_high_value
offset += karaoke_setting_set_value(data + offset, g_karaoke_setting.mic_high_index, g_karaoke_setting.mic_high_value);
// mic_low_value
offset += karaoke_setting_set_value(data + offset, g_karaoke_setting.mic_low_index, g_karaoke_setting.mic_low_value);
// mic_accompaniment_value
offset += karaoke_setting_set_value(data + offset, g_karaoke_setting.mic_accompaniment_index, g_karaoke_setting.mic_accompaniment_value);
// mic_moitor_value
offset += karaoke_setting_set_value(data + offset, g_karaoke_setting.mic_moitor_index, g_karaoke_setting.mic_moitor_value);
} else {
switch (g_update_index_record) {
case KARAOKE_SETTING_MIC_PARAM_MIC_VOL:
offset += karaoke_setting_set_value(data + offset, g_update_index_record, g_karaoke_setting.mic_vol_value);
break;
case KARAOKE_SETTING_MIC_PARAM_RECORD_VOL:
offset += karaoke_setting_set_value(data + offset, g_update_index_record, g_karaoke_setting.mic_record_value);
break;
case KARAOKE_SETTING_MIC_PARAM_REVERBERATION:
offset += karaoke_setting_set_value(data + offset, g_update_index_record, g_karaoke_setting.mic_reververation_value);
break;
case KARAOKE_SETTING_MIC_PARAM_HIGH:
offset += karaoke_setting_set_value(data + offset, g_update_index_record, g_karaoke_setting.mic_high_value);
break;
case KARAOKE_SETTING_MIC_PARAM_BASS:
offset += karaoke_setting_set_value(data + offset, g_update_index_record, g_karaoke_setting.mic_low_value);
break;
case KARAOKE_SETTING_MIC_PARAM_ACCOMPANIMENT_VOL:
offset += karaoke_setting_set_value(data + offset, g_update_index_record, g_karaoke_setting.mic_accompaniment_value);
break;
case KARAOKE_SETTING_MIC_PARAM_MONITOR_VOL:
offset += karaoke_setting_set_value(data + offset, g_update_index_record, g_karaoke_setting.mic_moitor_value);
break;
}
g_update_index_record = -1;
}
return offset;
}
static bool karaoke_setting_table_check(u8 index, u8 *table, u8 table_len)
{
for (u8 i = 0; i < table_len; i++) {
if (index == table[i]) {
return true;
}
}
return false;
}
static bool karaoke_setting_mask_set(u8 index, u8 *table, u8 table_len)
{
if (karaoke_setting_table_check(index, table, table_len)) {
for (u8 i = 0; i < table_len; i++) {
karaoke_setting_mask_set_bit(g_karaoke_setting.mask, table[i], 0);
}
karaoke_setting_mask_set_bit(g_karaoke_setting.mask, index, 1);
return true;
}
return false;
}
static int karaoke_set_setting_extra_handle(void *karaoke_setting, void *param)
{
u16 data_len = *((u16 *) param) - 1;
u8 *data = (u8 *) karaoke_setting;
u8 i = 0;
while (i < data_len) {
u8 index = data[i++];
u16 value = data[i++] << 8 | data[i++];
karaoke_setting_mask_set(index, g_mutex_type_table, sizeof(g_mutex_type_table));
#if KARAOKE_SETTING_ATMOSPHERE_TYPE_SET
karaoke_setting_mask_set(index, g_atmosphere_type_table, sizeof(g_atmosphere_type_table));
#endif
if (karaoke_setting_table_check(index, g_common_type_table, sizeof(g_common_type_table))) {
karaoke_setting_mask_set_bit(g_karaoke_setting.mask, index, 1);
}
karaoke_setting_mask_set(index, g_value_type_table, sizeof(g_value_type_table));
g_update_index_record = index;
switch (index) {
case KARAOKE_SETTING_MIC_PARAM_MIC_VOL:
g_karaoke_setting.mic_vol_index = index;
g_karaoke_setting.mic_vol_value = value;
break;
case KARAOKE_SETTING_MIC_PARAM_RECORD_VOL:
g_karaoke_setting.mic_record_index = index;
g_karaoke_setting.mic_record_value = value;
break;
case KARAOKE_SETTING_MIC_PARAM_REVERBERATION:
g_karaoke_setting.mic_reververation_index = index;
g_karaoke_setting.mic_reververation_value = value;
break;
case KARAOKE_SETTING_MIC_PARAM_HIGH:
g_karaoke_setting.mic_high_index = index;
g_karaoke_setting.mic_high_value = value;
break;
case KARAOKE_SETTING_MIC_PARAM_BASS:
g_karaoke_setting.mic_low_index = index;
g_karaoke_setting.mic_low_value = value;
break;
case KARAOKE_SETTING_MIC_PARAM_ACCOMPANIMENT_VOL:
g_karaoke_setting.mic_accompaniment_index = index;
g_karaoke_setting.mic_accompaniment_value = value;
break;
case KARAOKE_SETTING_MIC_PARAM_MONITOR_VOL:
g_karaoke_setting.mic_moitor_index = index;
g_karaoke_setting.mic_moitor_value = value;
break;
}
}
return 0;
}
static void update_karaoke_setting_vm_value(u8 *karaoke_setting)
{
// 不写VM
}
static void karaoke_setting_sync(u8 *color_led_setting_info)
{
#if TCFG_USER_TWS_ENABLE
if (get_bt_tws_connect_status()) {
update_smartbox_setting(ATTR_TYPE_KARAOKE_SETTING);
}
#endif
}
static void karaoke_setting_update(void)
{
switch (g_update_index_record) {
case KARAOKE_SETTING_MIC_PARAM_MIC_VOL:
app_task_put_key_msg(KEY_SOUNDCARD_SLIDE_MIC, g_karaoke_setting.mic_vol_value);
break;
case KARAOKE_SETTING_MIC_PARAM_RECORD_VOL:
app_task_put_key_msg(KEY_SOUNDCARD_SLIDE_RECORD_VOL, g_karaoke_setting.mic_record_value);
break;
case KARAOKE_SETTING_MIC_PARAM_REVERBERATION:
app_task_put_key_msg(KEY_SOUNDCARD_SLIDE_WET_GAIN, g_karaoke_setting.mic_reververation_value);
break;
case KARAOKE_SETTING_MIC_PARAM_HIGH:
app_task_put_key_msg(KEY_SOUNDCARD_SLIDE_HIGH_SOUND, g_karaoke_setting.mic_high_value);
break;
case KARAOKE_SETTING_MIC_PARAM_BASS:
app_task_put_key_msg(KEY_SOUNDCARD_SLIDE_LOW_SOUND, g_karaoke_setting.mic_low_value);
break;
case KARAOKE_SETTING_MIC_PARAM_ACCOMPANIMENT_VOL:
app_task_put_key_msg(KEY_SOUNDCARD_SLIDE_MUSIC_VOL, g_karaoke_setting.mic_accompaniment_value);
break;
case KARAOKE_SETTING_MIC_PARAM_MONITOR_VOL:
app_task_put_key_msg(KEY_SOUNDCARD_SLIDE_EARPHONE_VOL, g_karaoke_setting.mic_moitor_value);
break;
case KARAOKE_SETTING_OTHER_EFFECT_POPPING:
app_task_put_key_msg(KEY_SOUNDCARD_MODE_BOOM, 0);
break;
case KARAOKE_SETTING_SOUND_EFFECT_MAGIC:
app_task_put_key_msg(KEY_SOUNDCARD_MODE_MAGIC, 0);
break;
case KARAOKE_SETTING_OTHER_EFFECT_SHOUT:
app_task_put_key_msg(KEY_SOUNDCARD_MODE_SHOUTING_WHEAT, 0);
break;
case KARAOKE_SETTING_OTHER_EFFECT_DODGE:
app_task_put_key_msg(KEY_SOUNDCARD_MODE_DODGE, 0);
break;
default:
if (karaoke_setting_table_check(g_update_index_record, g_mutex_type_table, sizeof(g_mutex_type_table))) {
app_task_put_key_msg(KEY_SOUNDCARD_MODE_PITCH_BY_VALUE, g_update_index_record);
break;
} else if (karaoke_setting_table_check(g_update_index_record, g_atmosphere_type_table, sizeof(g_atmosphere_type_table))) {
app_task_put_key_msg(KEY_SOUNDCARD_MAKE_NOISE0 + g_update_index_record - KARAOKE_SETTING_ATMOSPHERE_CHEERS, 0);
break;
}
break;
}
/* g_update_index_record = -1; */
}
static void deal_karaoke_setting(u8 *karaoke_setting, u8 write_vm, u8 tws_sync)
{
if (karaoke_setting) {
set_karaoke_setting_setting(karaoke_setting);
}
if (write_vm) {
update_karaoke_setting_vm_value(karaoke_setting);
}
if (tws_sync) {
karaoke_setting_sync(karaoke_setting);
}
karaoke_setting_update();
}
static int karaoke_setting_key_event_update(int event, void *param)
{
int ret = false;
struct smartbox *smart = smartbox_handle_get();
if (smart == NULL || 0 == JL_rcsp_get_auth_flag()) {
return ret;
}
switch (event) {
case KEY_SOUNDCARD_MAKE_NOISE0:
case KEY_SOUNDCARD_MAKE_NOISE1:
case KEY_SOUNDCARD_MAKE_NOISE2:
case KEY_SOUNDCARD_MAKE_NOISE3:
case KEY_SOUNDCARD_MAKE_NOISE4:
case KEY_SOUNDCARD_MAKE_NOISE5:
case KEY_SOUNDCARD_MAKE_NOISE6:
case KEY_SOUNDCARD_MAKE_NOISE7:
case KEY_SOUNDCARD_MAKE_NOISE8:
case KEY_SOUNDCARD_MAKE_NOISE9:
case KEY_SOUNDCARD_MAKE_NOISE10:
case KEY_SOUNDCARD_MAKE_NOISE11:
g_update_index_record = KARAOKE_SETTING_ATMOSPHERE_CHEERS + event - KEY_SOUNDCARD_MAKE_NOISE0;
#if KARAOKE_SETTING_ATMOSPHERE_TYPE_SET
karaoke_setting_mask_set(g_update_index_record, g_atmosphere_type_table, sizeof(g_atmosphere_type_table));
#endif
ret = true;
break;
case KEY_SOUNDCARD_MODE_PITCH:
g_update_index_record = get_curr_soundcard_pitch();
karaoke_setting_mask_set(g_update_index_record, g_mutex_type_table, sizeof(g_mutex_type_table));
ret = true;
break;
case KEY_SOUNDCARD_MODE_PITCH_BY_VALUE:
g_update_index_record = get_curr_soundcard_pitch_by_value();
switch (g_update_index_record) {
case APP_SOUNDCARD_MODE_BOOM:
karaoke_setting_mask_set(KARAOKE_SETTING_OTHER_EFFECT_POPPING, g_mutex_type_table, sizeof(g_mutex_type_table));
break;
case APP_SOUNDCARD_MODE_SHOUTING_WHEAT:
karaoke_setting_mask_set(KARAOKE_SETTING_OTHER_EFFECT_SHOUT, g_mutex_type_table, sizeof(g_mutex_type_table));
break;
default:
if (g_update_index_record >= APP_SOUNDCARD_MODE_ELECTRIC_A_MAJOR && g_update_index_record <= APP_SOUNDCARD_MODE_ELECTRIC_Gshop_MAJOR) {
karaoke_setting_mask_set(g_update_index_record - APP_SOUNDCARD_MODE_ELECTRIC_A_MAJOR + KARAOKE_SETTING_SOUND_EFFECT_ELECTRIC_A_MAJOR, g_mutex_type_table, sizeof(g_mutex_type_table));
break;
}
karaoke_setting_mask_set(g_update_index_record, g_mutex_type_table, sizeof(g_mutex_type_table));
break;
}
ret = true;
break;
case KEY_SOUNDCARD_MODE_BOOM:
g_update_index_record = KARAOKE_SETTING_OTHER_EFFECT_POPPING;
karaoke_setting_mask_set(g_update_index_record, g_mutex_type_table, sizeof(g_mutex_type_table));
if (curr_soundcard_mode_is_normal()) {
karaoke_setting_mask_set_bit(g_karaoke_setting.mask, g_update_index_record, 0);
}
ret = true;
break;
case KEY_SOUNDCARD_MODE_SHOUTING_WHEAT:
g_update_index_record = KARAOKE_SETTING_OTHER_EFFECT_SHOUT;
karaoke_setting_mask_set(g_update_index_record, g_mutex_type_table, sizeof(g_mutex_type_table));
if (curr_soundcard_mode_is_normal()) {
karaoke_setting_mask_set_bit(g_karaoke_setting.mask, g_update_index_record, 0);
}
ret = true;
case KEY_SOUNDCARD_MODE_DODGE:
g_update_index_record = KARAOKE_SETTING_OTHER_EFFECT_DODGE;
if (mic_dodge_get_status()) {
karaoke_setting_mask_set_bit(g_karaoke_setting.mask, g_update_index_record, 1);
} else {
karaoke_setting_mask_set_bit(g_karaoke_setting.mask, g_update_index_record, 0);
}
ret = true;
break;
case KEY_SOUNDCARD_MODE_ELECTRIC:
g_update_index_record = get_curr_soundcard_pitch_by_value();
karaoke_setting_mask_set(g_update_index_record, g_mutex_type_table, sizeof(g_mutex_type_table));
ret = true;
break;
case KEY_SOUNDCARD_MODE_MAGIC:
g_update_index_record = KARAOKE_SETTING_SOUND_EFFECT_MAGIC;
karaoke_setting_mask_set(g_update_index_record, g_mutex_type_table, sizeof(g_mutex_type_table));
if (curr_soundcard_mode_is_normal()) {
karaoke_setting_mask_set_bit(g_karaoke_setting.mask, g_update_index_record, 0);
}
ret = true;
break;
case KEY_SOUNDCARD_SLIDE_MIC:
g_update_index_record = KARAOKE_SETTING_MIC_PARAM_MIC_VOL;
g_karaoke_setting.mic_vol_value = soundcard_get_mic_vol();
ret = true;
break;
case KEY_SOUNDCARD_SLIDE_LOW_SOUND:
g_update_index_record = KARAOKE_SETTING_MIC_PARAM_BASS;
// 更新对应全局变量
g_karaoke_setting.mic_low_value = soundcard_get_low_sound_vol();
ret = true;
break;
case KEY_SOUNDCARD_SLIDE_HIGH_SOUND:
g_update_index_record = KARAOKE_SETTING_MIC_PARAM_HIGH;
// 更新对应全局变量
g_karaoke_setting.mic_high_value = soundcard_get_high_sound_vol();
ret = true;
break;
case KEY_SOUNDCARD_SLIDE_WET_GAIN:
g_update_index_record = KARAOKE_SETTING_MIC_PARAM_REVERBERATION;
g_karaoke_setting.mic_reververation_value = soundcard_get_reverb_wet_vol();
ret = true;
break;
case KEY_SOUNDCARD_SLIDE_RECORD_VOL:
g_update_index_record = KARAOKE_SETTING_MIC_PARAM_RECORD_VOL;
// 更新对应全局变量
g_karaoke_setting.mic_record_value = soundcard_get_rec_vol();
ret = true;
break;
case KEY_SOUNDCARD_SLIDE_MUSIC_VOL:
g_update_index_record = KARAOKE_SETTING_MIC_PARAM_ACCOMPANIMENT_VOL;
// 更新对应全局变量
g_karaoke_setting.mic_accompaniment_value = soundcard_get_music_vol();
ret = true;
break;
case KEY_SOUNDCARD_SLIDE_EARPHONE_VOL:
g_update_index_record = KARAOKE_SETTING_MIC_PARAM_MONITOR_VOL;
// 更新对应全局变量
g_karaoke_setting.mic_moitor_value = soundcard_get_earphone_vol();
ret = true;
break;
}
if (ret) {
SMARTBOX_UPDATE(COMMON_FUNCTION, BIT(COMMON_FUNCTION_ATTR_TYPE_KARAOKE_SETTING_INFO));
}
return ret;
}
static SMARTBOX_SETTING_OPT karaoke_setting_opt = {
.data_len = KARAOKE_SETTING_SIZE,
.setting_type = ATTR_TYPE_KARAOKE_SETTING,
.deal_opt_setting = deal_karaoke_setting,
.set_setting = set_karaoke_setting_setting,
.get_setting = get_karaoke_setting_setting,
.custom_setting_init = karaoke_setting_setting_init,
.set_setting_extra_handle = karaoke_set_setting_extra_handle,
.get_setting_extra_handle = karaoke_get_setting_extra_handle,
.custom_setting_key_event_update = karaoke_setting_key_event_update,
};
REGISTER_APP_SETTING_OPT(karaoke_setting_opt);
#endif