update os detection
This commit is contained in:
@@ -76,8 +76,9 @@ set(APP_COMPILER_FLAGS_ex3d_UAC1 ${SW_USB_AUDIO_FLAGS} -DI2S_CHANS_DAC=2
|
|||||||
-DINPUT_VOLUME_CONTROL=0
|
-DINPUT_VOLUME_CONTROL=0
|
||||||
-DUAC1_MODE=1
|
-DUAC1_MODE=1
|
||||||
-DOUTPUT_VOLUME_CONTROL=0
|
-DOUTPUT_VOLUME_CONTROL=0
|
||||||
|
-DXUA_DFU_EN=0
|
||||||
-DSTEREO_2K
|
-DSTEREO_2K
|
||||||
-DHID_CONTROLS=1)
|
-DHID_CONTROLS=0)
|
||||||
|
|
||||||
|
|
||||||
set(APP_COMPILER_FLAGS_ex3d_stereo_2k ${SW_USB_AUDIO_FLAGS} -DI2S_CHANS_DAC=2
|
set(APP_COMPILER_FLAGS_ex3d_stereo_2k ${SW_USB_AUDIO_FLAGS} -DI2S_CHANS_DAC=2
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
xflash bin/factory/fact.xe --loader loader.o --upgrade 4 bin\ex3d_UAC1\app_usb_aud_phaten_gs_ex3d_UAC1.xe --upgrade 2 bin/ex3d_stereo_2k/app_usb_aud_phaten_gs_ex3d_stereo_2k.xe --upgrade 1 bin\ex3d_71_game\app_usb_aud_phaten_gs_ex3d_71_game.xe --upgrade 3 bin\ex3d_stereo_8k\app_usb_aud_phaten_gs_ex3d_stereo_8k.xe -o %1
|
xflash bin/factory/fact.xe --loader loader.o --upgrade 2 bin\ex3d_UAC1\app_usb_aud_phaten_gs_ex3d_UAC1.xe --upgrade 4 bin/ex3d_stereo_2k/app_usb_aud_phaten_gs_ex3d_stereo_2k.xe --upgrade 1 bin\ex3d_71_game\app_usb_aud_phaten_gs_ex3d_71_game.xe --upgrade 3 bin\ex3d_stereo_8k\app_usb_aud_phaten_gs_ex3d_stereo_8k.xe -o %1
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
xflash --factory-version 15.3 --target-file src/core/PHATEN_GS.xn --upgrade 4 bin\ex3d_UAC1\app_usb_aud_phaten_gs_ex3d_UAC1.xe --upgrade 2 bin/ex3d_stereo_2k/app_usb_aud_phaten_gs_ex3d_stereo_2k.xe --upgrade 1 bin\ex3d_71_game\app_usb_aud_phaten_gs_ex3d_71_game.xe --upgrade 3 bin\ex3d_stereo_8k\app_usb_aud_phaten_gs_ex3d_stereo_8k.xe -o %1
|
xflash --factory-version 15.3 --target-file src/core/PHATEN_GS.xn --upgrade 2 bin\ex3d_UAC1\app_usb_aud_phaten_gs_ex3d_UAC1.xe --upgrade 4 bin/ex3d_stereo_2k/app_usb_aud_phaten_gs_ex3d_stereo_2k.xe --upgrade 1 bin\ex3d_71_game\app_usb_aud_phaten_gs_ex3d_71_game.xe --upgrade 3 bin\ex3d_stereo_8k\app_usb_aud_phaten_gs_ex3d_stereo_8k.xe -o %1
|
||||||
|
|
||||||
|
|||||||
@@ -212,6 +212,12 @@ void UserBufferManagement(unsigned sampsFromUsbToAudio[], unsigned sampsFromAudi
|
|||||||
sampsFromAudioToUsb[1] = sampsFromUsbToAudio[1];
|
sampsFromAudioToUsb[1] = sampsFromUsbToAudio[1];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef HID_MAX_DATA_BYTES
|
||||||
|
#define HID_MAX_DATA_BYTES ( 64 )
|
||||||
|
#endif
|
||||||
|
unsigned hidSendData[HID_MAX_DATA_BYTES / 4];
|
||||||
|
|
||||||
|
|
||||||
#if (HID_CONTROLS == 1)
|
#if (HID_CONTROLS == 1)
|
||||||
#include "user_hid.h"
|
#include "user_hid.h"
|
||||||
static unsigned char lastHidData;
|
static unsigned char lastHidData;
|
||||||
@@ -252,7 +258,6 @@ typedef enum {
|
|||||||
#define CMD_CLR_FWD_TO_2ND_DEV(item) ((item) & ~0x0800)
|
#define CMD_CLR_FWD_TO_2ND_DEV(item) ((item) & ~0x0800)
|
||||||
#define CMD_MASK (~(CMD_SET(0)|CMD_GET(0)|CMD_PARAM(0)|CMD_FWD(0)|CMD_FWD_TO_2ND_DEV(0)))
|
#define CMD_MASK (~(CMD_SET(0)|CMD_GET(0)|CMD_PARAM(0)|CMD_FWD(0)|CMD_FWD_TO_2ND_DEV(0)))
|
||||||
#define CMD_ITEM(cmd) ((cmd) & CMD_MASK)
|
#define CMD_ITEM(cmd) ((cmd) & CMD_MASK)
|
||||||
unsigned hidSendData[HID_MAX_DATA_BYTES / 4];
|
|
||||||
|
|
||||||
void UserHIDInit(void) {
|
void UserHIDInit(void) {
|
||||||
return;
|
return;
|
||||||
@@ -714,10 +719,10 @@ void update_button(unsigned char b)
|
|||||||
#define BLUE_LED_PIN 0 // 3D LED (蓝色LED) - bit 0 of leds2_val, 0b11111110
|
#define BLUE_LED_PIN 0 // 3D LED (蓝色LED) - bit 0 of leds2_val, 0b11111110
|
||||||
|
|
||||||
// 改动原因:定义模式切换标志值,用于在SPATIAL_GAME、STEREO_8K、STEREO_2K、UAC1之间循环切换
|
// 改动原因:定义模式切换标志值,用于在SPATIAL_GAME、STEREO_8K、STEREO_2K、UAC1之间循环切换
|
||||||
#define MODE_STEREO_2K USB_IN_FLAG // 2 STEREO_2K模式标志
|
#define MODE_STEREO_2K UAC1_IN_FLAG // 4 STEREO_2K模式标志
|
||||||
#define MODE_SPATIAL_GAME COAX_IN_FLAG //1 SPATIAL_GAME模式标志
|
#define MODE_SPATIAL_GAME COAX_IN_FLAG //1 SPATIAL_GAME模式标志
|
||||||
#define MODE_STEREO_8K OPT_IN_FLAG // 3 STEREO_8K模式标志
|
#define MODE_STEREO_8K OPT_IN_FLAG // 3 STEREO_8K模式标志
|
||||||
#define MODE_UAC1 UAC1_IN_FLAG // 4 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, chanend_t c_uac_vol)
|
void hid_button_task(chanend_t cc_mic_level, chanend_t c_hidRcvData, chanend_t c_hidSendData, chanend_t c_uac_vol)
|
||||||
@@ -780,6 +785,7 @@ void hid_button_task(chanend_t cc_mic_level, chanend_t c_hidRcvData, chanend_t c
|
|||||||
port_out(p_leds, leds1_val);
|
port_out(p_leds, leds1_val);
|
||||||
port_out(p_leds2, leds2_val);
|
port_out(p_leds2, leds2_val);
|
||||||
debug_printf("LED init: default OFF state, waiting for mode from button_task\n");
|
debug_printf("LED init: default OFF state, waiting for mode from button_task\n");
|
||||||
|
// delay_milliseconds(200);
|
||||||
uint32_t last_status = port_in(p_keys);
|
uint32_t last_status = port_in(p_keys);
|
||||||
hwtimer_set_trigger_time(timer, hwtimer_get_time(timer) + KEY_POLLING_INTERVAL);
|
hwtimer_set_trigger_time(timer, hwtimer_get_time(timer) + KEY_POLLING_INTERVAL);
|
||||||
while (1) {
|
while (1) {
|
||||||
@@ -884,10 +890,12 @@ void hid_button_task(chanend_t cc_mic_level, chanend_t c_hidRcvData, chanend_t c
|
|||||||
RcvData[i] = chan_in_byte(c_hidRcvData);
|
RcvData[i] = chan_in_byte(c_hidRcvData);
|
||||||
}
|
}
|
||||||
if(RcvData[0] == 0x01) { // REPORT ID 1
|
if(RcvData[0] == 0x01) { // REPORT ID 1
|
||||||
|
#if (HID_CONTROLS == 1)
|
||||||
hid_receive_task_in_c(RcvData, SendData);
|
hid_receive_task_in_c(RcvData, SendData);
|
||||||
for(int i=0; i<(HID_MAX_DATA_BYTES / 4) ;i++) {
|
for(int i=0; i<(HID_MAX_DATA_BYTES / 4) ;i++) {
|
||||||
chan_out_word(c_hidSendData, SendData[i]);
|
chan_out_word(c_hidSendData, SendData[i]);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
continue;
|
continue;
|
||||||
@@ -929,7 +937,7 @@ void hid_button_task(chanend_t cc_mic_level, chanend_t c_hidRcvData, chanend_t c
|
|||||||
if (press_hold_cnt > 0) {
|
if (press_hold_cnt > 0) {
|
||||||
// 改动原因:短按切换模式(0=无音效,1=STEREO_2K,2=SPATIAL_GAME,3=STEREO_8K)
|
// 改动原因:短按切换模式(0=无音效,1=STEREO_2K,2=SPATIAL_GAME,3=STEREO_8K)
|
||||||
// 循环切换:0→1→2→3→0
|
// 循环切换:0→1→2→3→0
|
||||||
#if 0
|
#if UAC1_MODE
|
||||||
unsigned old_mode = current_mode_local;
|
unsigned old_mode = current_mode_local;
|
||||||
current_mode_local = (current_mode_local + 1) % 4; // 循环切换 0→1→2→3→0
|
current_mode_local = (current_mode_local + 1) % 4; // 循环切换 0→1→2→3→0
|
||||||
debug_printf("Short press: switching mode from %d to %d\n", old_mode, current_mode_local);
|
debug_printf("Short press: switching mode from %d to %d\n", old_mode, current_mode_local);
|
||||||
@@ -978,8 +986,9 @@ void hid_button_task(chanend_t cc_mic_level, chanend_t c_hidRcvData, chanend_t c
|
|||||||
port_out(p_leds, leds1_val);
|
port_out(p_leds, leds1_val);
|
||||||
#endif
|
#endif
|
||||||
unsigned endData[1] = {0xffffffff};
|
unsigned endData[1] = {0xffffffff};
|
||||||
debug_printf("endData[0]: %d\n", endData[0]);
|
debug_printf("endData[0]: %d %d\n", endData[0], current_mode_local);
|
||||||
chan_out_word(c_hidSendData, endData[0]);
|
chan_out_word(c_hidSendData, endData[0]);
|
||||||
|
chan_out_word(c_hidSendData, current_mode_local);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -1062,9 +1071,8 @@ void button_task(chanend_t c_hidSendData, chanend_t cc_mic_level, chanend_t c_ua
|
|||||||
static unsigned isMute = 0;
|
static unsigned isMute = 0;
|
||||||
uint8_t tmp = 0;
|
uint8_t tmp = 0;
|
||||||
|
|
||||||
#if (HID_CONTROLS == 1)
|
|
||||||
unsigned hidData0;
|
unsigned hidData0;
|
||||||
#endif
|
|
||||||
unsigned ex3d_key_verified;
|
unsigned ex3d_key_verified;
|
||||||
delay_milliseconds(300);
|
delay_milliseconds(300);
|
||||||
debug_printf("button task start\n");
|
debug_printf("button task start\n");
|
||||||
@@ -1101,19 +1109,24 @@ void button_task(chanend_t c_hidSendData, chanend_t cc_mic_level, chanend_t c_ua
|
|||||||
debug_printf("Saved game_mode to flash: %d\n", saved_mode);
|
debug_printf("Saved game_mode to flash: %d\n", saved_mode);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
printf("host_os: %d\n", host_os);
|
||||||
if (host_os == OS_OTHERS) {
|
#if 0
|
||||||
|
if ((host_os == OS_OTHERS) || (host_os == 0)) {
|
||||||
// 改动原因:检测到非Windows系统,切换到UAC1模式
|
// 改动原因:检测到非Windows系统,切换到UAC1模式
|
||||||
debug_printf("Detected non-Windows OS (OS_OTHERS), switching to UAC1 mode\n");
|
#if !UAC1_MODE
|
||||||
|
printf("Detected non-Windows OS (OS_OTHERS), switching to UAC1 mode\n");
|
||||||
SetRoleSwitchFlag(MODE_UAC1);
|
SetRoleSwitchFlag(MODE_UAC1);
|
||||||
debug_printf("Set role switch flag: 0x%04X (UAC1), device will restart\n", MODE_UAC1);
|
debug_printf("Set role switch flag: 0x%04X (UAC1), device will restart\n", MODE_UAC1);
|
||||||
// 设备会重启,退出函数
|
// 设备会重启,退出函数
|
||||||
device_reboot();
|
device_reboot();
|
||||||
while(1);
|
while(1);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
else {
|
#endif
|
||||||
debug_printf("Detected Windows OS (OS_WIN)\n");
|
|
||||||
#if UAC1_MODE == 1
|
#if UAC1_MODE == 1
|
||||||
|
if (host_os == OS_WIN) {
|
||||||
|
printf("Detected Windows OS (OS_WIN) saved_mode: %d\n", saved_mode);
|
||||||
|
|
||||||
|
|
||||||
{
|
{
|
||||||
@@ -1122,13 +1135,13 @@ void button_task(chanend_t c_hidSendData, chanend_t cc_mic_level, chanend_t c_ua
|
|||||||
SetRoleSwitchFlag(MODE_STEREO_2K);
|
SetRoleSwitchFlag(MODE_STEREO_2K);
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
SetRoleSwitchFlag(MODE_SPATIAL_GAME);
|
SetRoleSwitchFlag(MODE_STEREO_2K);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
SetRoleSwitchFlag(MODE_STEREO_8K);
|
SetRoleSwitchFlag(MODE_SPATIAL_GAME);
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
SetRoleSwitchFlag(MODE_STEREO_2K);
|
SetRoleSwitchFlag(MODE_STEREO_8K);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
SetRoleSwitchFlag(MODE_STEREO_2K);
|
SetRoleSwitchFlag(MODE_STEREO_2K);
|
||||||
@@ -1136,9 +1149,11 @@ void button_task(chanend_t c_hidSendData, chanend_t cc_mic_level, chanend_t c_ua
|
|||||||
}
|
}
|
||||||
debug_printf("Switch to saved mode: %d, device will restart.\n", saved_mode);
|
debug_printf("Switch to saved mode: %d, device will restart.\n", saved_mode);
|
||||||
delay_milliseconds(200);
|
delay_milliseconds(200);
|
||||||
//device_reboot();
|
device_reboot();
|
||||||
//while (1);
|
while (1);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(STEREO_2K)
|
#if defined(STEREO_2K)
|
||||||
@@ -1159,8 +1174,6 @@ void button_task(chanend_t c_hidSendData, chanend_t cc_mic_level, chanend_t c_ua
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
g_windows_detect_done = 1;
|
g_windows_detect_done = 1;
|
||||||
|
|
||||||
// 改动原因:更新全局变量g_game_mode为保存的模式值
|
// 改动原因:更新全局变量g_game_mode为保存的模式值
|
||||||
@@ -1205,15 +1218,13 @@ void button_task(chanend_t c_hidSendData, chanend_t cc_mic_level, chanend_t c_ua
|
|||||||
// 改动原因:收到0xffffffff后,循环切换模式并保存到flash,然后设置切换标志
|
// 改动原因:收到0xffffffff后,循环切换模式并保存到flash,然后设置切换标志
|
||||||
// 注意:UAC1模式下不会收到此命令(hid_button_task不发送)
|
// 注意:UAC1模式下不会收到此命令(hid_button_task不发送)
|
||||||
// 读取当前g_game_mode值
|
// 读取当前g_game_mode值
|
||||||
unsigned current_mode;
|
unsigned current_mode = chan_in_word(c_hidSendData);
|
||||||
GET_SHARED_GLOBAL(current_mode, g_game_mode);
|
|
||||||
|
|
||||||
// 改动原因:Windows模式下只循环切换0→1→2→3→0(不包括UAC1模式4)
|
// 改动原因:Windows模式下只循环切换0→1→2→3→0(不包括UAC1模式4)
|
||||||
// 循环切换模式:0(STEREO_2K) -> 1(SPATIAL_GAME) -> 2(STEREO_8K) -> 3(无音效) -> 0
|
// 循环切换模式:0(STEREO_2K) -> 1(SPATIAL_GAME) -> 2(STEREO_8K) -> 3(无音效) -> 0
|
||||||
unsigned new_mode;
|
unsigned new_mode;
|
||||||
unsigned mode_flag;
|
unsigned mode_flag;
|
||||||
debug_printf("current_mode: %d\n", current_mode);
|
debug_printf("current_mode: %d\n", current_mode);
|
||||||
#if UAC1_MODE != 1
|
|
||||||
if (current_mode == 0) {
|
if (current_mode == 0) {
|
||||||
// 当前是STEREO_2K,切换到STEREO_2K
|
// 当前是STEREO_2K,切换到STEREO_2K
|
||||||
new_mode = 1;
|
new_mode = 1;
|
||||||
@@ -1240,20 +1251,37 @@ void button_task(chanend_t c_hidSendData, chanend_t cc_mic_level, chanend_t c_ua
|
|||||||
unsigned char path[] = "game_mode";
|
unsigned char path[] = "game_mode";
|
||||||
save_value(path, (unsigned char)new_mode);
|
save_value(path, (unsigned char)new_mode);
|
||||||
debug_printf("Saved game_mode %d to flash\n", new_mode);
|
debug_printf("Saved game_mode %d to flash\n", new_mode);
|
||||||
|
delay_milliseconds(20);
|
||||||
|
|
||||||
debug_printf("Set role switch flag: 0x%04X\n", mode_flag);
|
// 改动原因:判断是否需要切换固件,mode 0和mode 1都使用STEREO_2K固件,不需要reboot
|
||||||
// 设置角色切换标志,触发模式切换
|
// 只有在需要切换固件时才reboot,同一固件内的模式切换(如0<->1)只更新模式和算法状态
|
||||||
|
#if !UAC1_MODE
|
||||||
|
|
||||||
|
if (new_mode != 1) {
|
||||||
|
// 改动原因:需要切换固件,执行reboot
|
||||||
|
debug_printf("Set role switch flag: 0x%04X, switching firmware, rebooting...\n", mode_flag);
|
||||||
SetRoleSwitchFlag(mode_flag);
|
SetRoleSwitchFlag(mode_flag);
|
||||||
delay_milliseconds(20);
|
delay_milliseconds(20);
|
||||||
device_reboot();
|
device_reboot();
|
||||||
while (1);
|
while (1);
|
||||||
|
} else {
|
||||||
|
// 改动原因:不需要切换固件,只更新模式和算法状态(如mode 0<->1切换),不reboot
|
||||||
|
debug_printf("Same firmware mode (0x%04X), updating mode and algorithm state without reboot\n", mode_flag);
|
||||||
|
SET_SHARED_GLOBAL(g_game_mode, new_mode);
|
||||||
|
// 改动原因:通过channel发送新的audio_mode给hid_button_task,更新LED和算法状态
|
||||||
|
chan_out_byte(cc_mic_level, 0xFC); // 音频模式传输命令
|
||||||
|
chan_out_byte(cc_mic_level, new_mode); // 音频模式值
|
||||||
|
debug_printf("Sent audio_mode %d to hid_button_task via cc_mic_level channel\n", new_mode);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
#if (HID_CONTROLS == 1)
|
||||||
for (int i=1; i<(HID_MAX_DATA_BYTES/4); i++) {
|
for (int i=1; i<(HID_MAX_DATA_BYTES/4); i++) {
|
||||||
reportData[i] = chan_in_word(c_hidSendData);
|
reportData[i] = chan_in_word(c_hidSendData);
|
||||||
}
|
}
|
||||||
hidSetChangePending(1);
|
hidSetChangePending(1);
|
||||||
|
#endif
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
event_polling:
|
event_polling:
|
||||||
@@ -1305,6 +1333,7 @@ void button_task(chanend_t c_hidSendData, chanend_t cc_mic_level, chanend_t c_ua
|
|||||||
debug_printf("MUTE: muted\n");
|
debug_printf("MUTE: muted\n");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
#if (HID_CONTROLS == 1)
|
||||||
case KEY_PLAY_VOL_DN:
|
case KEY_PLAY_VOL_DN:
|
||||||
// 改动原因:处理播放音量减按键,发送HID控制命令
|
// 改动原因:处理播放音量减按键,发送HID控制命令
|
||||||
if ((curr_ctrl_keys & KEY_PLAY_VOL_DN) == 0) {
|
if ((curr_ctrl_keys & KEY_PLAY_VOL_DN) == 0) {
|
||||||
@@ -1318,6 +1347,7 @@ void button_task(chanend_t c_hidSendData, chanend_t cc_mic_level, chanend_t c_ua
|
|||||||
update_button(HID_CONTROL_VOLUP); // 更新HID报告
|
update_button(HID_CONTROL_VOLUP); // 更新HID报告
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
#endif
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -102,6 +102,7 @@ extern void key_receiver(chanend c_key);
|
|||||||
#define USER_MAIN_CORES on tile[1]: {\
|
#define USER_MAIN_CORES on tile[1]: {\
|
||||||
par\
|
par\
|
||||||
{\
|
{\
|
||||||
|
hid_button_task(cc_mic_level, c_hidRcvData, c_hidSendData, c_uac_vol);\
|
||||||
ex3d_task();\
|
ex3d_task();\
|
||||||
par(int i=0;i<DSP_WORKER_COUNT;i++) dsp_worker_tile(c_dsp_to_ex3d[i], i);\
|
par(int i=0;i<DSP_WORKER_COUNT;i++) dsp_worker_tile(c_dsp_to_ex3d[i], i);\
|
||||||
unsafe\
|
unsafe\
|
||||||
@@ -111,7 +112,6 @@ 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, c_uac_vol);\
|
|
||||||
}\
|
}\
|
||||||
}\
|
}\
|
||||||
on tile[0]: {\
|
on tile[0]: {\
|
||||||
|
|||||||
Reference in New Issue
Block a user