udpate uac_vol
This commit is contained in:
@@ -15,6 +15,8 @@
|
||||
#include "dbcalc.h"
|
||||
#include "xua_commands.h"
|
||||
|
||||
#include "xc_ptr.h"
|
||||
|
||||
#define CS_XU_MIXSEL (0x06)
|
||||
|
||||
/* From decouple.xc */
|
||||
@@ -48,6 +50,8 @@ extern unsigned char mixSel[MAX_MIX_COUNT][MIX_INPUTS];
|
||||
|
||||
/* Global var for current frequency, set to default freq */
|
||||
unsigned int g_curSamFreq = DEFAULT_FREQ;
|
||||
|
||||
int g_uac_vol = 0;
|
||||
#if 0
|
||||
unsigned int g_curSamFreq48000Family = DEFAULT_FREQ % 48000 == 0;
|
||||
|
||||
@@ -126,7 +130,7 @@ static void updateMasterVol(int unitID, chanend ?c_mix_ctl)
|
||||
case FU_USBOUT:
|
||||
{
|
||||
unsigned master_vol = volsOut[0] == 0x8000 ? 0 : db_to_mult(volsOut[0], 8, 29);
|
||||
|
||||
SET_SHARED_GLOBAL(g_uac_vol, volsOut[0]);
|
||||
for (int i = 1; i < (NUM_USB_CHAN_OUT + 1); i++)
|
||||
{
|
||||
/* Calc multipliers with 29 fractional bits from a db value with 8 fractional bits */
|
||||
@@ -213,7 +217,8 @@ static void updateVol(int unitID, int channel, chanend ?c_mix_ctl)
|
||||
unsigned vol = volsOut[channel] == 0x8000 ? 0 : db_to_mult(volsOut[channel], 8, 29);
|
||||
|
||||
x = longMul(master_vol, vol, 29) * !mutesOut[0] * !mutesOut[channel];
|
||||
|
||||
if (channel == 1)
|
||||
SET_SHARED_GLOBAL(g_uac_vol, volsOut[channel]); // only update the front left channel
|
||||
#if (OUT_VOLUME_IN_MIXER)
|
||||
if (!isnull(c_mix_ctl))
|
||||
{
|
||||
|
||||
@@ -32,7 +32,7 @@ unsigned g_windows_detect_done = 0;
|
||||
unsigned g_ex3d_key_verified = 0;
|
||||
enum { OS_WIN = 1, OS_OTHERS = 2 };
|
||||
|
||||
|
||||
extern unsigned g_uac_vol;
|
||||
chanend_t uc_ex3d_to_ubm, uc_eq_data;
|
||||
|
||||
#define UBM_TO_EX3D_CHANS (NUM_USB_CHAN_OUT)
|
||||
@@ -719,7 +719,7 @@ void hid_update(unsigned char hid_data) {
|
||||
#define MODE_UAC1 USB_IN_FLAG // 2 UAC1模式标志
|
||||
|
||||
//Tile 1
|
||||
void hid_button_task(chanend_t cc_mic_level, chanend_t c_hidRcvData, chanend_t c_hidSendData)
|
||||
void hid_button_task(chanend_t cc_mic_level, chanend_t c_hidRcvData, chanend_t c_hidSendData, chanend_t c_uac_vol)
|
||||
{
|
||||
port_t p_keys = XS1_PORT_1F;
|
||||
port_t p_leds = XS1_PORT_1G;
|
||||
@@ -732,6 +732,7 @@ void hid_button_task(chanend_t cc_mic_level, chanend_t c_hidRcvData, chanend_t c
|
||||
static uint8_t is_mute_t1 = 0;
|
||||
static uint8_t mute_tmr;
|
||||
uint8_t tmp = 0;
|
||||
int32_t sys_vol = 0;
|
||||
static uint8_t is_stable = 1;
|
||||
static uint8_t press_hold_cnt = 0;
|
||||
// 改动原因:添加LED闪烁相关变量,用于保存原始LED状态
|
||||
@@ -779,6 +780,7 @@ void hid_button_task(chanend_t cc_mic_level, chanend_t c_hidRcvData, chanend_t c
|
||||
CASE_THEN(cc_mic_level, event_mic_vol)
|
||||
, CASE_THEN(c_hidRcvData, event_hid)
|
||||
, CASE_THEN(timer, event_polling)
|
||||
, CASE_THEN(c_uac_vol, event_uac_vol)
|
||||
)
|
||||
{
|
||||
event_mic_vol:
|
||||
@@ -889,6 +891,19 @@ void hid_button_task(chanend_t cc_mic_level, chanend_t c_hidRcvData, chanend_t c
|
||||
}
|
||||
continue;
|
||||
|
||||
event_uac_vol:
|
||||
{
|
||||
sys_vol = chan_in_word(c_uac_vol);
|
||||
sys_vol = sys_vol * (-1);
|
||||
// Ex3dLimiterThreshold
|
||||
// Ex3dOnGain
|
||||
// Ex3dExpandGain
|
||||
// Ex3dReduceGain
|
||||
// Ex3dReduceGain = Ex3dLimiterThreshold - (sys_vol + Ex3dOnGain + Ex3dExpandGain)
|
||||
printf("sys_vol:%d\n", sys_vol);
|
||||
printf("on gain:%d\n", Ex3dOnGain);
|
||||
printf("limiter Th:%f\n", Ex3dLimiterThreshold);
|
||||
}
|
||||
event_polling:
|
||||
{
|
||||
hwtimer_set_trigger_time(timer, hwtimer_get_time(timer) + KEY_POLLING_INTERVAL);
|
||||
@@ -1150,8 +1165,10 @@ void hid_button_task(chanend_t cc_mic_level, chanend_t c_hidRcvData, chanend_t c
|
||||
}
|
||||
#define KEY_POLLING_INTERVAL 10000000L // 100ms polling interval
|
||||
// 改动原因:添加cc_mic_level参数,用于通过channel传输模式值到hid_button_task
|
||||
void button_task(chanend_t c_hidSendData, chanend_t cc_mic_level)
|
||||
void button_task(chanend_t c_hidSendData, chanend_t cc_mic_level, chanend_t c_uac_vol)
|
||||
{
|
||||
hwtimer_t timer = hwtimer_alloc();
|
||||
static int uac_vol=0, last_uac_vol=0;
|
||||
port_t p_ctrl_keys = XS1_PORT_8C;
|
||||
|
||||
uint32_t port_ctrl_keys = 0, curr_ctrl_keys = 0, last_ctrl_keys = 0, keys_changed = 0;
|
||||
@@ -1303,11 +1320,12 @@ void button_task(chanend_t c_hidSendData, chanend_t cc_mic_level)
|
||||
|
||||
last_ctrl_keys = ((port_ctrl_keys) & KEY_BITS);
|
||||
last_ctrl_keys ^= KEY_MUTE;
|
||||
|
||||
hwtimer_set_trigger_time(timer, hwtimer_get_time(timer) + KEY_POLLING_INTERVAL);
|
||||
while (1) {
|
||||
|
||||
SELECT_RES(
|
||||
CASE_THEN(c_hidSendData, event_hid)
|
||||
, CASE_THEN(timer, event_polling)
|
||||
)
|
||||
{
|
||||
event_hid:
|
||||
@@ -1376,6 +1394,20 @@ void button_task(chanend_t c_hidSendData, chanend_t cc_mic_level)
|
||||
reportData[i] = chan_in_word(c_hidSendData);
|
||||
}
|
||||
hidSetChangePending(1);
|
||||
continue;
|
||||
}
|
||||
event_polling:
|
||||
{
|
||||
hwtimer_set_trigger_time(timer, hwtimer_get_time(timer) + KEY_POLLING_INTERVAL);
|
||||
|
||||
GET_SHARED_GLOBAL(uac_vol, g_uac_vol);
|
||||
if (uac_vol != last_uac_vol) {
|
||||
unsigned conv_vol = (0xffffffff - uac_vol + 1) >> 8;
|
||||
//printf("vol: - %d\n", conv_vol);
|
||||
chan_out_word(c_uac_vol, conv_vol);
|
||||
last_uac_vol = uac_vol;
|
||||
}
|
||||
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,9 +24,9 @@ extern port p_sda;
|
||||
|
||||
extern int dsp_worker_tile(chanend c_dsp_to_ex3d, int worker_id);
|
||||
//extern int dsp_worker_tile_1(chanend c_dsp_to_ex3d, int worker_id);
|
||||
extern void button_task(chanend c_hidSendData, chanend cc_mic_level);
|
||||
extern void button_task(chanend c_hidSendData, chanend cc_mic_level, chanend c_uac_vol);
|
||||
extern void ex3d_task();
|
||||
extern void hid_button_task(chanend cc_mic_level, chanend c_hid, chanend c_hidSendData);
|
||||
extern void hid_button_task(chanend cc_mic_level, chanend c_hid, chanend c_hidSendData, chanend c_uac_vol);
|
||||
extern void AudioHwRemote(chanend c);
|
||||
#if AIZIP_DNR == 1
|
||||
extern void dnr_dsp_buffer_task(chanend cc_dsp_in, chanend cc_dsp_eof, chanend cc_mic_level);
|
||||
@@ -98,7 +98,7 @@ extern void key_receiver(chanend c_key);
|
||||
#else
|
||||
|
||||
#define USER_MAIN_DECLARATIONS \
|
||||
chan c_dsp_to_ex3d[DSP_WORKER_COUNT]; chan c; chan cc_mic_level; chan c_key; chan c_hidSendData; chan c_hidRcvData; chan c_eq_data;
|
||||
chan c_dsp_to_ex3d[DSP_WORKER_COUNT]; chan c; chan cc_mic_level; chan c_key; chan c_hidSendData; chan c_hidRcvData; chan c_eq_data; chan c_uac_vol;
|
||||
|
||||
#define USER_MAIN_CORES on tile[1]: {\
|
||||
par\
|
||||
@@ -113,7 +113,7 @@ extern void key_receiver(chanend c_key);
|
||||
for(int i=0;i<DSP_WORKER_COUNT;i++)\
|
||||
uc_dsp_to_ex3d[i] = (chanend) c_dsp_to_ex3d[i];\
|
||||
}\
|
||||
hid_button_task(cc_mic_level, c_hidRcvData, c_hidSendData);\
|
||||
hid_button_task(cc_mic_level, c_hidRcvData, c_hidSendData, c_uac_vol);\
|
||||
}\
|
||||
}\
|
||||
on tile[0]: {\
|
||||
@@ -127,7 +127,7 @@ extern void key_receiver(chanend c_key);
|
||||
}\
|
||||
AudioHwRemote(c);\
|
||||
} \
|
||||
button_task(c_hidSendData, cc_mic_level);\
|
||||
button_task(c_hidSendData, cc_mic_level, c_uac_vol);\
|
||||
}\
|
||||
}\
|
||||
on tile[0]: {\
|
||||
|
||||
Reference in New Issue
Block a user