udpate uac_vol
This commit is contained in:
@@ -15,6 +15,8 @@
|
|||||||
#include "dbcalc.h"
|
#include "dbcalc.h"
|
||||||
#include "xua_commands.h"
|
#include "xua_commands.h"
|
||||||
|
|
||||||
|
#include "xc_ptr.h"
|
||||||
|
|
||||||
#define CS_XU_MIXSEL (0x06)
|
#define CS_XU_MIXSEL (0x06)
|
||||||
|
|
||||||
/* From decouple.xc */
|
/* 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 */
|
/* Global var for current frequency, set to default freq */
|
||||||
unsigned int g_curSamFreq = DEFAULT_FREQ;
|
unsigned int g_curSamFreq = DEFAULT_FREQ;
|
||||||
|
|
||||||
|
int g_uac_vol = 0;
|
||||||
#if 0
|
#if 0
|
||||||
unsigned int g_curSamFreq48000Family = DEFAULT_FREQ % 48000 == 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:
|
case FU_USBOUT:
|
||||||
{
|
{
|
||||||
unsigned master_vol = volsOut[0] == 0x8000 ? 0 : db_to_mult(volsOut[0], 8, 29);
|
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++)
|
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 */
|
/* 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);
|
unsigned vol = volsOut[channel] == 0x8000 ? 0 : db_to_mult(volsOut[channel], 8, 29);
|
||||||
|
|
||||||
x = longMul(master_vol, vol, 29) * !mutesOut[0] * !mutesOut[channel];
|
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 (OUT_VOLUME_IN_MIXER)
|
||||||
if (!isnull(c_mix_ctl))
|
if (!isnull(c_mix_ctl))
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ unsigned g_windows_detect_done = 0;
|
|||||||
unsigned g_ex3d_key_verified = 0;
|
unsigned g_ex3d_key_verified = 0;
|
||||||
enum { OS_WIN = 1, OS_OTHERS = 2 };
|
enum { OS_WIN = 1, OS_OTHERS = 2 };
|
||||||
|
|
||||||
|
extern unsigned g_uac_vol;
|
||||||
chanend_t uc_ex3d_to_ubm, uc_eq_data;
|
chanend_t uc_ex3d_to_ubm, uc_eq_data;
|
||||||
|
|
||||||
#define UBM_TO_EX3D_CHANS (NUM_USB_CHAN_OUT)
|
#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模式标志
|
#define MODE_UAC1 USB_IN_FLAG // 2 UAC1模式标志
|
||||||
|
|
||||||
//Tile 1
|
//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_keys = XS1_PORT_1F;
|
||||||
port_t p_leds = XS1_PORT_1G;
|
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 is_mute_t1 = 0;
|
||||||
static uint8_t mute_tmr;
|
static uint8_t mute_tmr;
|
||||||
uint8_t tmp = 0;
|
uint8_t tmp = 0;
|
||||||
|
int32_t sys_vol = 0;
|
||||||
static uint8_t is_stable = 1;
|
static uint8_t is_stable = 1;
|
||||||
static uint8_t press_hold_cnt = 0;
|
static uint8_t press_hold_cnt = 0;
|
||||||
// 改动原因:添加LED闪烁相关变量,用于保存原始LED状态
|
// 改动原因:添加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(cc_mic_level, event_mic_vol)
|
||||||
, CASE_THEN(c_hidRcvData, event_hid)
|
, CASE_THEN(c_hidRcvData, event_hid)
|
||||||
, CASE_THEN(timer, event_polling)
|
, CASE_THEN(timer, event_polling)
|
||||||
|
, CASE_THEN(c_uac_vol, event_uac_vol)
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
event_mic_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;
|
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:
|
event_polling:
|
||||||
{
|
{
|
||||||
hwtimer_set_trigger_time(timer, hwtimer_get_time(timer) + KEY_POLLING_INTERVAL);
|
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
|
#define KEY_POLLING_INTERVAL 10000000L // 100ms polling interval
|
||||||
// 改动原因:添加cc_mic_level参数,用于通过channel传输模式值到hid_button_task
|
// 改动原因:添加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;
|
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;
|
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 = ((port_ctrl_keys) & KEY_BITS);
|
||||||
last_ctrl_keys ^= KEY_MUTE;
|
last_ctrl_keys ^= KEY_MUTE;
|
||||||
|
hwtimer_set_trigger_time(timer, hwtimer_get_time(timer) + KEY_POLLING_INTERVAL);
|
||||||
while (1) {
|
while (1) {
|
||||||
|
|
||||||
SELECT_RES(
|
SELECT_RES(
|
||||||
CASE_THEN(c_hidSendData, event_hid)
|
CASE_THEN(c_hidSendData, event_hid)
|
||||||
|
, CASE_THEN(timer, event_polling)
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
event_hid:
|
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);
|
reportData[i] = chan_in_word(c_hidSendData);
|
||||||
}
|
}
|
||||||
hidSetChangePending(1);
|
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;
|
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(chanend c_dsp_to_ex3d, int worker_id);
|
||||||
//extern int dsp_worker_tile_1(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 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);
|
extern void AudioHwRemote(chanend c);
|
||||||
#if AIZIP_DNR == 1
|
#if AIZIP_DNR == 1
|
||||||
extern void dnr_dsp_buffer_task(chanend cc_dsp_in, chanend cc_dsp_eof, chanend cc_mic_level);
|
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
|
#else
|
||||||
|
|
||||||
#define USER_MAIN_DECLARATIONS \
|
#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]: {\
|
#define USER_MAIN_CORES on tile[1]: {\
|
||||||
par\
|
par\
|
||||||
@@ -113,7 +113,7 @@ extern void key_receiver(chanend c_key);
|
|||||||
for(int i=0;i<DSP_WORKER_COUNT;i++)\
|
for(int i=0;i<DSP_WORKER_COUNT;i++)\
|
||||||
uc_dsp_to_ex3d[i] = (chanend) c_dsp_to_ex3d[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]: {\
|
on tile[0]: {\
|
||||||
@@ -127,7 +127,7 @@ extern void key_receiver(chanend c_key);
|
|||||||
}\
|
}\
|
||||||
AudioHwRemote(c);\
|
AudioHwRemote(c);\
|
||||||
} \
|
} \
|
||||||
button_task(c_hidSendData, cc_mic_level);\
|
button_task(c_hidSendData, cc_mic_level, c_uac_vol);\
|
||||||
}\
|
}\
|
||||||
}\
|
}\
|
||||||
on tile[0]: {\
|
on tile[0]: {\
|
||||||
|
|||||||
Reference in New Issue
Block a user