update 8 mode support
This commit is contained in:
@@ -1,10 +0,0 @@
|
|||||||
# This variable should contain a space separated list of all
|
|
||||||
# the directories containing buildable applications (usually
|
|
||||||
# prefixed with the app_ prefix)
|
|
||||||
#
|
|
||||||
# If the variable is set to "all" then all directories that start with app_
|
|
||||||
# are built.
|
|
||||||
BUILD_SUBDIRS = all
|
|
||||||
|
|
||||||
XMOS_MAKE_PATH ?= ..
|
|
||||||
include $(XMOS_MAKE_PATH)/xcommon/module_xcommon/build/Makefile.toplevel
|
|
||||||
BIN
lib_ex3d/lib_ex3d/.DS_Store
vendored
BIN
lib_ex3d/lib_ex3d/.DS_Store
vendored
Binary file not shown.
@@ -62,20 +62,20 @@ EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_DRAMA_v090h090_left;
|
|||||||
|
|
||||||
//This is the count of int32_t words to allocate for one data channel.
|
//This is the count of int32_t words to allocate for one data channel.
|
||||||
//i.e. int32_t channel_data[SPATIAL_71_DRAMA_v090h090_left_DATA_BUFFER_ELEMENTS] = { 0 };
|
//i.e. int32_t channel_data[SPATIAL_71_DRAMA_v090h090_left_DATA_BUFFER_ELEMENTS] = { 0 };
|
||||||
#define SPATIAL_71_DRAMA_v090h090_left_DATA_BUFFER_ELEMENTS (1824)
|
#define SPATIAL_71_DRAMA_v090h090_left_DATA_BUFFER_ELEMENTS (1872)
|
||||||
|
|
||||||
#define SPATIAL_71_DRAMA_v090h090_left_TD_BLOCK_LENGTH (8)
|
#define SPATIAL_71_DRAMA_v090h090_left_TD_BLOCK_LENGTH (8)
|
||||||
#define SPATIAL_71_DRAMA_v090h090_left_BLOCK_COUNT (226)
|
#define SPATIAL_71_DRAMA_v090h090_left_BLOCK_COUNT (232)
|
||||||
#define SPATIAL_71_DRAMA_v090h090_left_FRAME_ADVANCE (8)
|
#define SPATIAL_71_DRAMA_v090h090_left_FRAME_ADVANCE (8)
|
||||||
#define SPATIAL_71_DRAMA_v090h090_left_FRAME_OVERLAP (0)
|
#define SPATIAL_71_DRAMA_v090h090_left_FRAME_OVERLAP (0)
|
||||||
EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_DRAMA_v090h090_right;
|
EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_DRAMA_v090h090_right;
|
||||||
|
|
||||||
//This is the count of int32_t words to allocate for one data channel.
|
//This is the count of int32_t words to allocate for one data channel.
|
||||||
//i.e. int32_t channel_data[SPATIAL_71_DRAMA_v090h090_right_DATA_BUFFER_ELEMENTS] = { 0 };
|
//i.e. int32_t channel_data[SPATIAL_71_DRAMA_v090h090_right_DATA_BUFFER_ELEMENTS] = { 0 };
|
||||||
#define SPATIAL_71_DRAMA_v090h090_right_DATA_BUFFER_ELEMENTS (1824)
|
#define SPATIAL_71_DRAMA_v090h090_right_DATA_BUFFER_ELEMENTS (1872)
|
||||||
|
|
||||||
#define SPATIAL_71_DRAMA_v090h090_right_TD_BLOCK_LENGTH (8)
|
#define SPATIAL_71_DRAMA_v090h090_right_TD_BLOCK_LENGTH (8)
|
||||||
#define SPATIAL_71_DRAMA_v090h090_right_BLOCK_COUNT (226)
|
#define SPATIAL_71_DRAMA_v090h090_right_BLOCK_COUNT (232)
|
||||||
#define SPATIAL_71_DRAMA_v090h090_right_FRAME_ADVANCE (8)
|
#define SPATIAL_71_DRAMA_v090h090_right_FRAME_ADVANCE (8)
|
||||||
#define SPATIAL_71_DRAMA_v090h090_right_FRAME_OVERLAP (0)
|
#define SPATIAL_71_DRAMA_v090h090_right_FRAME_OVERLAP (0)
|
||||||
EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_DRAMA_v090h135_left;
|
EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_DRAMA_v090h135_left;
|
||||||
@@ -222,20 +222,20 @@ EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_GAME_v090h090_left;
|
|||||||
|
|
||||||
//This is the count of int32_t words to allocate for one data channel.
|
//This is the count of int32_t words to allocate for one data channel.
|
||||||
//i.e. int32_t channel_data[SPATIAL_71_GAME_v090h090_left_DATA_BUFFER_ELEMENTS] = { 0 };
|
//i.e. int32_t channel_data[SPATIAL_71_GAME_v090h090_left_DATA_BUFFER_ELEMENTS] = { 0 };
|
||||||
#define SPATIAL_71_GAME_v090h090_left_DATA_BUFFER_ELEMENTS (1824)
|
#define SPATIAL_71_GAME_v090h090_left_DATA_BUFFER_ELEMENTS (1872)
|
||||||
|
|
||||||
#define SPATIAL_71_GAME_v090h090_left_TD_BLOCK_LENGTH (8)
|
#define SPATIAL_71_GAME_v090h090_left_TD_BLOCK_LENGTH (8)
|
||||||
#define SPATIAL_71_GAME_v090h090_left_BLOCK_COUNT (226)
|
#define SPATIAL_71_GAME_v090h090_left_BLOCK_COUNT (232)
|
||||||
#define SPATIAL_71_GAME_v090h090_left_FRAME_ADVANCE (8)
|
#define SPATIAL_71_GAME_v090h090_left_FRAME_ADVANCE (8)
|
||||||
#define SPATIAL_71_GAME_v090h090_left_FRAME_OVERLAP (0)
|
#define SPATIAL_71_GAME_v090h090_left_FRAME_OVERLAP (0)
|
||||||
EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_GAME_v090h090_right;
|
EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_GAME_v090h090_right;
|
||||||
|
|
||||||
//This is the count of int32_t words to allocate for one data channel.
|
//This is the count of int32_t words to allocate for one data channel.
|
||||||
//i.e. int32_t channel_data[SPATIAL_71_GAME_v090h090_right_DATA_BUFFER_ELEMENTS] = { 0 };
|
//i.e. int32_t channel_data[SPATIAL_71_GAME_v090h090_right_DATA_BUFFER_ELEMENTS] = { 0 };
|
||||||
#define SPATIAL_71_GAME_v090h090_right_DATA_BUFFER_ELEMENTS (1824)
|
#define SPATIAL_71_GAME_v090h090_right_DATA_BUFFER_ELEMENTS (1872)
|
||||||
|
|
||||||
#define SPATIAL_71_GAME_v090h090_right_TD_BLOCK_LENGTH (8)
|
#define SPATIAL_71_GAME_v090h090_right_TD_BLOCK_LENGTH (8)
|
||||||
#define SPATIAL_71_GAME_v090h090_right_BLOCK_COUNT (226)
|
#define SPATIAL_71_GAME_v090h090_right_BLOCK_COUNT (232)
|
||||||
#define SPATIAL_71_GAME_v090h090_right_FRAME_ADVANCE (8)
|
#define SPATIAL_71_GAME_v090h090_right_FRAME_ADVANCE (8)
|
||||||
#define SPATIAL_71_GAME_v090h090_right_FRAME_OVERLAP (0)
|
#define SPATIAL_71_GAME_v090h090_right_FRAME_OVERLAP (0)
|
||||||
EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_GAME_v090h135_left;
|
EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_GAME_v090h135_left;
|
||||||
@@ -382,20 +382,20 @@ EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_MOVIE_v090h090_left;
|
|||||||
|
|
||||||
//This is the count of int32_t words to allocate for one data channel.
|
//This is the count of int32_t words to allocate for one data channel.
|
||||||
//i.e. int32_t channel_data[SPATIAL_71_MOVIE_v090h090_left_DATA_BUFFER_ELEMENTS] = { 0 };
|
//i.e. int32_t channel_data[SPATIAL_71_MOVIE_v090h090_left_DATA_BUFFER_ELEMENTS] = { 0 };
|
||||||
#define SPATIAL_71_MOVIE_v090h090_left_DATA_BUFFER_ELEMENTS (1824)
|
#define SPATIAL_71_MOVIE_v090h090_left_DATA_BUFFER_ELEMENTS (1872)
|
||||||
|
|
||||||
#define SPATIAL_71_MOVIE_v090h090_left_TD_BLOCK_LENGTH (8)
|
#define SPATIAL_71_MOVIE_v090h090_left_TD_BLOCK_LENGTH (8)
|
||||||
#define SPATIAL_71_MOVIE_v090h090_left_BLOCK_COUNT (226)
|
#define SPATIAL_71_MOVIE_v090h090_left_BLOCK_COUNT (232)
|
||||||
#define SPATIAL_71_MOVIE_v090h090_left_FRAME_ADVANCE (8)
|
#define SPATIAL_71_MOVIE_v090h090_left_FRAME_ADVANCE (8)
|
||||||
#define SPATIAL_71_MOVIE_v090h090_left_FRAME_OVERLAP (0)
|
#define SPATIAL_71_MOVIE_v090h090_left_FRAME_OVERLAP (0)
|
||||||
EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_MOVIE_v090h090_right;
|
EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_MOVIE_v090h090_right;
|
||||||
|
|
||||||
//This is the count of int32_t words to allocate for one data channel.
|
//This is the count of int32_t words to allocate for one data channel.
|
||||||
//i.e. int32_t channel_data[SPATIAL_71_MOVIE_v090h090_right_DATA_BUFFER_ELEMENTS] = { 0 };
|
//i.e. int32_t channel_data[SPATIAL_71_MOVIE_v090h090_right_DATA_BUFFER_ELEMENTS] = { 0 };
|
||||||
#define SPATIAL_71_MOVIE_v090h090_right_DATA_BUFFER_ELEMENTS (1824)
|
#define SPATIAL_71_MOVIE_v090h090_right_DATA_BUFFER_ELEMENTS (1872)
|
||||||
|
|
||||||
#define SPATIAL_71_MOVIE_v090h090_right_TD_BLOCK_LENGTH (8)
|
#define SPATIAL_71_MOVIE_v090h090_right_TD_BLOCK_LENGTH (8)
|
||||||
#define SPATIAL_71_MOVIE_v090h090_right_BLOCK_COUNT (226)
|
#define SPATIAL_71_MOVIE_v090h090_right_BLOCK_COUNT (232)
|
||||||
#define SPATIAL_71_MOVIE_v090h090_right_FRAME_ADVANCE (8)
|
#define SPATIAL_71_MOVIE_v090h090_right_FRAME_ADVANCE (8)
|
||||||
#define SPATIAL_71_MOVIE_v090h090_right_FRAME_OVERLAP (0)
|
#define SPATIAL_71_MOVIE_v090h090_right_FRAME_OVERLAP (0)
|
||||||
EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_MOVIE_v090h135_left;
|
EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_MOVIE_v090h135_left;
|
||||||
@@ -482,20 +482,20 @@ EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_MUSIC_lfe_left;
|
|||||||
|
|
||||||
//This is the count of int32_t words to allocate for one data channel.
|
//This is the count of int32_t words to allocate for one data channel.
|
||||||
//i.e. int32_t channel_data[SPATIAL_71_MUSIC_lfe_left_DATA_BUFFER_ELEMENTS] = { 0 };
|
//i.e. int32_t channel_data[SPATIAL_71_MUSIC_lfe_left_DATA_BUFFER_ELEMENTS] = { 0 };
|
||||||
#define SPATIAL_71_MUSIC_lfe_left_DATA_BUFFER_ELEMENTS (1832)
|
#define SPATIAL_71_MUSIC_lfe_left_DATA_BUFFER_ELEMENTS (1224)
|
||||||
|
|
||||||
#define SPATIAL_71_MUSIC_lfe_left_TD_BLOCK_LENGTH (8)
|
#define SPATIAL_71_MUSIC_lfe_left_TD_BLOCK_LENGTH (8)
|
||||||
#define SPATIAL_71_MUSIC_lfe_left_BLOCK_COUNT (227)
|
#define SPATIAL_71_MUSIC_lfe_left_BLOCK_COUNT (151)
|
||||||
#define SPATIAL_71_MUSIC_lfe_left_FRAME_ADVANCE (8)
|
#define SPATIAL_71_MUSIC_lfe_left_FRAME_ADVANCE (8)
|
||||||
#define SPATIAL_71_MUSIC_lfe_left_FRAME_OVERLAP (0)
|
#define SPATIAL_71_MUSIC_lfe_left_FRAME_OVERLAP (0)
|
||||||
EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_MUSIC_lfe_right;
|
EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_MUSIC_lfe_right;
|
||||||
|
|
||||||
//This is the count of int32_t words to allocate for one data channel.
|
//This is the count of int32_t words to allocate for one data channel.
|
||||||
//i.e. int32_t channel_data[SPATIAL_71_MUSIC_lfe_right_DATA_BUFFER_ELEMENTS] = { 0 };
|
//i.e. int32_t channel_data[SPATIAL_71_MUSIC_lfe_right_DATA_BUFFER_ELEMENTS] = { 0 };
|
||||||
#define SPATIAL_71_MUSIC_lfe_right_DATA_BUFFER_ELEMENTS (1832)
|
#define SPATIAL_71_MUSIC_lfe_right_DATA_BUFFER_ELEMENTS (1224)
|
||||||
|
|
||||||
#define SPATIAL_71_MUSIC_lfe_right_TD_BLOCK_LENGTH (8)
|
#define SPATIAL_71_MUSIC_lfe_right_TD_BLOCK_LENGTH (8)
|
||||||
#define SPATIAL_71_MUSIC_lfe_right_BLOCK_COUNT (227)
|
#define SPATIAL_71_MUSIC_lfe_right_BLOCK_COUNT (151)
|
||||||
#define SPATIAL_71_MUSIC_lfe_right_FRAME_ADVANCE (8)
|
#define SPATIAL_71_MUSIC_lfe_right_FRAME_ADVANCE (8)
|
||||||
#define SPATIAL_71_MUSIC_lfe_right_FRAME_OVERLAP (0)
|
#define SPATIAL_71_MUSIC_lfe_right_FRAME_OVERLAP (0)
|
||||||
EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_MUSIC_v090h000_left;
|
EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_MUSIC_v090h000_left;
|
||||||
@@ -542,20 +542,20 @@ EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_MUSIC_v090h090_left;
|
|||||||
|
|
||||||
//This is the count of int32_t words to allocate for one data channel.
|
//This is the count of int32_t words to allocate for one data channel.
|
||||||
//i.e. int32_t channel_data[SPATIAL_71_MUSIC_v090h090_left_DATA_BUFFER_ELEMENTS] = { 0 };
|
//i.e. int32_t channel_data[SPATIAL_71_MUSIC_v090h090_left_DATA_BUFFER_ELEMENTS] = { 0 };
|
||||||
#define SPATIAL_71_MUSIC_v090h090_left_DATA_BUFFER_ELEMENTS (1824)
|
#define SPATIAL_71_MUSIC_v090h090_left_DATA_BUFFER_ELEMENTS (1872)
|
||||||
|
|
||||||
#define SPATIAL_71_MUSIC_v090h090_left_TD_BLOCK_LENGTH (8)
|
#define SPATIAL_71_MUSIC_v090h090_left_TD_BLOCK_LENGTH (8)
|
||||||
#define SPATIAL_71_MUSIC_v090h090_left_BLOCK_COUNT (226)
|
#define SPATIAL_71_MUSIC_v090h090_left_BLOCK_COUNT (232)
|
||||||
#define SPATIAL_71_MUSIC_v090h090_left_FRAME_ADVANCE (8)
|
#define SPATIAL_71_MUSIC_v090h090_left_FRAME_ADVANCE (8)
|
||||||
#define SPATIAL_71_MUSIC_v090h090_left_FRAME_OVERLAP (0)
|
#define SPATIAL_71_MUSIC_v090h090_left_FRAME_OVERLAP (0)
|
||||||
EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_MUSIC_v090h090_right;
|
EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_MUSIC_v090h090_right;
|
||||||
|
|
||||||
//This is the count of int32_t words to allocate for one data channel.
|
//This is the count of int32_t words to allocate for one data channel.
|
||||||
//i.e. int32_t channel_data[SPATIAL_71_MUSIC_v090h090_right_DATA_BUFFER_ELEMENTS] = { 0 };
|
//i.e. int32_t channel_data[SPATIAL_71_MUSIC_v090h090_right_DATA_BUFFER_ELEMENTS] = { 0 };
|
||||||
#define SPATIAL_71_MUSIC_v090h090_right_DATA_BUFFER_ELEMENTS (1824)
|
#define SPATIAL_71_MUSIC_v090h090_right_DATA_BUFFER_ELEMENTS (1872)
|
||||||
|
|
||||||
#define SPATIAL_71_MUSIC_v090h090_right_TD_BLOCK_LENGTH (8)
|
#define SPATIAL_71_MUSIC_v090h090_right_TD_BLOCK_LENGTH (8)
|
||||||
#define SPATIAL_71_MUSIC_v090h090_right_BLOCK_COUNT (226)
|
#define SPATIAL_71_MUSIC_v090h090_right_BLOCK_COUNT (232)
|
||||||
#define SPATIAL_71_MUSIC_v090h090_right_FRAME_ADVANCE (8)
|
#define SPATIAL_71_MUSIC_v090h090_right_FRAME_ADVANCE (8)
|
||||||
#define SPATIAL_71_MUSIC_v090h090_right_FRAME_OVERLAP (0)
|
#define SPATIAL_71_MUSIC_v090h090_right_FRAME_OVERLAP (0)
|
||||||
EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_MUSIC_v090h135_left;
|
EXTERN td_block_fir_filter_t td_block_fir_filter_SPATIAL_71_MUSIC_v090h135_left;
|
||||||
|
|||||||
@@ -30,7 +30,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define EX3D_SET_CH_NUM NUM_USB_CHAN_OUT
|
#define EX3D_SET_CH_NUM NUM_USB_CHAN_OUT
|
||||||
#define EX3D_SF_NUM 1
|
#define EX3D_SF_NUM 6
|
||||||
|
|
||||||
EXTERN void audio_ex3d_load_key(chanend_t c);
|
EXTERN void audio_ex3d_load_key(chanend_t c);
|
||||||
EXTERN int audio_ex3d_activate_key(chanend_t c);
|
EXTERN int audio_ex3d_activate_key(chanend_t c);
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -54,90 +54,93 @@ set(SW_USB_AUDIO_FLAGS ${EXTRA_BUILD_FLAGS} -O3
|
|||||||
|
|
||||||
LINK_DIRECTORIES(${CMAKE_CURRENT_LIST_DIR}/../../lib_dnr/lib_dnr)
|
LINK_DIRECTORIES(${CMAKE_CURRENT_LIST_DIR}/../../lib_dnr/lib_dnr)
|
||||||
|
|
||||||
set(APP_COMPILER_FLAGS_ex3d_UAC1 ${SW_USB_AUDIO_FLAGS} -DI2S_CHANS_DAC=2
|
#set(APP_COMPILER_FLAGS_ex3d_UAC1 ${SW_USB_AUDIO_FLAGS} -DI2S_CHANS_DAC=2
|
||||||
-DI2S_CHANS_ADC=0
|
# -DI2S_CHANS_ADC=0
|
||||||
-DAUDIO_CLASS=1
|
|
||||||
-DMIN_FREQ=48000
|
|
||||||
-DMAX_FREQ=48000
|
|
||||||
-DUSE_EX3D
|
|
||||||
-DMIXER=0
|
|
||||||
-DAIZIP_DNR=0 #-ldnr_50ms
|
|
||||||
-llib_ex3d_stereo_2k
|
|
||||||
-DNUM_USB_CHAN_OUT=2
|
|
||||||
-DNUM_USB_CHAN_OUT_FS=2
|
|
||||||
-DNUM_USB_CHAN_IN=0
|
|
||||||
-DSTREAM_FORMAT_OUTPUT_1_RESOLUTION_BITS=16
|
|
||||||
-DSTREAM_FORMAT_OUTPUT_2_RESOLUTION_BITS=16
|
|
||||||
-DSTREAM_FORMAT_OUTPUT_3_RESOLUTION_BITS=16
|
|
||||||
-DSTREAM_FORMAT_INPUT_1_RESOLUTION_BITS=16
|
|
||||||
-DSTREAM_FORMAT_INPUT_2_RESOLUTION_BITS=16
|
|
||||||
-DSTREAM_FORMAT_INPUT_3_RESOLUTION_BITS=16
|
|
||||||
-DNUM_EX3D_CHAN_OUT=2
|
|
||||||
-DINPUT_VOLUME_CONTROL=0
|
|
||||||
-DUAC1_MODE=1
|
|
||||||
-DOUTPUT_VOLUME_CONTROL=0
|
|
||||||
-DXUA_DFU_EN=0
|
|
||||||
-DSTEREO_2K
|
|
||||||
-DHID_CONTROLS=0)
|
|
||||||
|
|
||||||
|
|
||||||
set(APP_COMPILER_FLAGS_ex3d_stereo_2k ${SW_USB_AUDIO_FLAGS} -DI2S_CHANS_DAC=2
|
|
||||||
-DI2S_CHANS_ADC=2
|
|
||||||
# -DAUDIO_CLASS=1
|
# -DAUDIO_CLASS=1
|
||||||
-DMIN_FREQ=48000
|
# -DMIN_FREQ=48000
|
||||||
-DMAX_FREQ=48000
|
# -DMAX_FREQ=48000
|
||||||
-DUSE_EX3D
|
# -DUSE_EX3D
|
||||||
-DMIXER=0
|
# -DMIXER=0
|
||||||
-DAIZIP_DNR=0 #-ldnr_50ms
|
# -DAIZIP_DNR=0 #-ldnr_50ms
|
||||||
-llib_ex3d_stereo_2k
|
# -llib_ex3d_stereo_2k
|
||||||
-DNUM_USB_CHAN_OUT=2
|
# -DNUM_USB_CHAN_OUT=2
|
||||||
-DNUM_USB_CHAN_IN=2
|
# -DNUM_USB_CHAN_OUT_FS=2
|
||||||
-DEQ_EN=1
|
# -DNUM_USB_CHAN_IN=0
|
||||||
-DSTREAM_FORMAT_OUTPUT_1_RESOLUTION_BITS=16
|
# -DSTREAM_FORMAT_OUTPUT_1_RESOLUTION_BITS=16
|
||||||
-DSTREAM_FORMAT_OUTPUT_2_RESOLUTION_BITS=16
|
# -DSTREAM_FORMAT_OUTPUT_2_RESOLUTION_BITS=16
|
||||||
-DSTREAM_FORMAT_OUTPUT_3_RESOLUTION_BITS=16
|
# -DSTREAM_FORMAT_OUTPUT_3_RESOLUTION_BITS=16
|
||||||
-DSTREAM_FORMAT_INPUT_1_RESOLUTION_BITS=16
|
# -DSTREAM_FORMAT_INPUT_1_RESOLUTION_BITS=16
|
||||||
-DSTREAM_FORMAT_INPUT_2_RESOLUTION_BITS=16
|
# -DSTREAM_FORMAT_INPUT_2_RESOLUTION_BITS=16
|
||||||
-DSTREAM_FORMAT_INPUT_3_RESOLUTION_BITS=16
|
# -DSTREAM_FORMAT_INPUT_3_RESOLUTION_BITS=16
|
||||||
-DNUM_EX3D_CHAN_OUT=2
|
# -DNUM_EX3D_CHAN_OUT=2
|
||||||
-DINPUT_VOLUME_CONTROL=1
|
# -DINPUT_VOLUME_CONTROL=0
|
||||||
-DOUTPUT_VOLUME_CONTROL=1
|
# -DUAC1_MODE=1
|
||||||
-DXUA_DFU_EN=1
|
# -DOUTPUT_VOLUME_CONTROL=0
|
||||||
-DSTEREO_2K
|
# -DXUA_DFU_EN=0
|
||||||
-DHID_CONTROLS=1)
|
# -DSTEREO_2K
|
||||||
|
# -DHID_CONTROLS=0)
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#set(APP_COMPILER_FLAGS_ex3d_stereo_2k ${SW_USB_AUDIO_FLAGS} -DI2S_CHANS_DAC=2
|
||||||
|
# -DI2S_CHANS_ADC=2
|
||||||
|
# #-DAUDIO_CLASS=1
|
||||||
|
# -DMIN_FREQ=48000
|
||||||
|
# -DMAX_FREQ=48000
|
||||||
|
# -DUSE_EX3D
|
||||||
|
# -DMIXER=0
|
||||||
|
# -DAIZIP_DNR=0 #-ldnr_50ms
|
||||||
|
# -llib_ex3d_stereo_2k
|
||||||
|
# -DNUM_USB_CHAN_OUT=2
|
||||||
|
# -DNUM_USB_CHAN_IN=2
|
||||||
|
# -DEQ_EN=1
|
||||||
|
# -DSTREAM_FORMAT_OUTPUT_1_RESOLUTION_BITS=16
|
||||||
|
# -DSTREAM_FORMAT_OUTPUT_2_RESOLUTION_BITS=16
|
||||||
|
# -DSTREAM_FORMAT_OUTPUT_3_RESOLUTION_BITS=16
|
||||||
|
# -DSTREAM_FORMAT_INPUT_1_RESOLUTION_BITS=16
|
||||||
|
# -DSTREAM_FORMAT_INPUT_2_RESOLUTION_BITS=16
|
||||||
|
# -DSTREAM_FORMAT_INPUT_3_RESOLUTION_BITS=16
|
||||||
|
# -DNUM_EX3D_CHAN_OUT=2
|
||||||
|
# -DINPUT_VOLUME_CONTROL=1
|
||||||
|
# -DOUTPUT_VOLUME_CONTROL=1
|
||||||
|
# -DXUA_DFU_EN=1
|
||||||
|
# -DSTEREO_2K
|
||||||
|
# -DHID_CONTROLS=1)
|
||||||
|
#
|
||||||
|
#set(APP_COMPILER_FLAGS_ex3d_stereo_8k ${SW_USB_AUDIO_FLAGS} -DI2S_CHANS_DAC=2
|
||||||
|
# -DI2S_CHANS_ADC=0
|
||||||
|
# -DMIN_FREQ=48000
|
||||||
|
# -DMAX_FREQ=48000
|
||||||
|
# -DUSE_EX3D
|
||||||
|
# -DMIXER=0
|
||||||
|
# -DAIZIP_DNR=0 #-ldnr_50ms
|
||||||
|
# -llib_ex3d_stereo_8k
|
||||||
|
# -DNUM_USB_CHAN_OUT=2
|
||||||
|
# -DNUM_USB_CHAN_IN=2
|
||||||
|
# -DSTREAM_FORMAT_OUTPUT_1_RESOLUTION_BITS=16
|
||||||
|
# -DSTREAM_FORMAT_OUTPUT_2_RESOLUTION_BITS=16
|
||||||
|
# -DSTREAM_FORMAT_OUTPUT_3_RESOLUTION_BITS=16
|
||||||
|
# -DSTREAM_FORMAT_INPUT_1_RESOLUTION_BITS=16
|
||||||
|
# -DSTREAM_FORMAT_INPUT_2_RESOLUTION_BITS=16
|
||||||
|
# -DSTREAM_FORMAT_INPUT_3_RESOLUTION_BITS=16
|
||||||
|
# -DNUM_EX3D_CHAN_OUT=2
|
||||||
|
# -DXUA_DFU_EN=1
|
||||||
|
# -DINPUT_VOLUME_CONTROL=1
|
||||||
|
# -DOUTPUT_VOLUME_CONTROL=1
|
||||||
|
# -DSTEREO_8K
|
||||||
|
# -DHID_CONTROLS=1)
|
||||||
|
|
||||||
set(APP_COMPILER_FLAGS_ex3d_stereo_8k ${SW_USB_AUDIO_FLAGS} -DI2S_CHANS_DAC=2
|
|
||||||
-DI2S_CHANS_ADC=0
|
|
||||||
-DMIN_FREQ=48000
|
|
||||||
-DMAX_FREQ=48000
|
|
||||||
-DUSE_EX3D
|
|
||||||
-DMIXER=0
|
|
||||||
-DAIZIP_DNR=0 #-ldnr_50ms
|
|
||||||
-llib_ex3d_stereo_8k
|
|
||||||
-DNUM_USB_CHAN_OUT=2
|
|
||||||
-DNUM_USB_CHAN_IN=2
|
|
||||||
-DSTREAM_FORMAT_OUTPUT_1_RESOLUTION_BITS=16
|
|
||||||
-DSTREAM_FORMAT_OUTPUT_2_RESOLUTION_BITS=16
|
|
||||||
-DSTREAM_FORMAT_OUTPUT_3_RESOLUTION_BITS=16
|
|
||||||
-DSTREAM_FORMAT_INPUT_1_RESOLUTION_BITS=16
|
|
||||||
-DSTREAM_FORMAT_INPUT_2_RESOLUTION_BITS=16
|
|
||||||
-DSTREAM_FORMAT_INPUT_3_RESOLUTION_BITS=16
|
|
||||||
-DNUM_EX3D_CHAN_OUT=2
|
|
||||||
-DXUA_DFU_EN=1
|
|
||||||
-DINPUT_VOLUME_CONTROL=1
|
|
||||||
-DOUTPUT_VOLUME_CONTROL=1
|
|
||||||
-DSTEREO_8K
|
|
||||||
-DHID_CONTROLS=1)
|
|
||||||
|
|
||||||
set(APP_COMPILER_FLAGS_ex3d_71_game ${SW_USB_AUDIO_FLAGS} -DI2S_CHANS_DAC=2
|
## IR switching mode
|
||||||
|
set(APP_COMPILER_FLAGS_ex3d_71_all ${SW_USB_AUDIO_FLAGS} -DI2S_CHANS_DAC=2
|
||||||
-DI2S_CHANS_ADC=2
|
-DI2S_CHANS_ADC=2
|
||||||
-DMIN_FREQ=48000
|
-DMIN_FREQ=48000
|
||||||
-DMAX_FREQ=48000
|
-DMAX_FREQ=48000
|
||||||
-DUSE_EX3D
|
-DUSE_EX3D
|
||||||
-DMIXER=0
|
-DMIXER=0
|
||||||
-DAIZIP_DNR=0 #-ldnr_50ms
|
-DAIZIP_DNR=0 -ldnr_50ms
|
||||||
-llib_ex3d_game
|
-llib_ex3d_all
|
||||||
-DEQ_EN=1
|
-DEQ_EN=1
|
||||||
|
-DEX3D_SF_NUM=3
|
||||||
-DNUM_USB_CHAN_OUT=8
|
-DNUM_USB_CHAN_OUT=8
|
||||||
-DNUM_USB_CHAN_IN=2
|
-DNUM_USB_CHAN_IN=2
|
||||||
-DNUM_EX3D_CHAN_OUT=2
|
-DNUM_EX3D_CHAN_OUT=2
|
||||||
@@ -146,56 +149,75 @@ set(APP_COMPILER_FLAGS_ex3d_71_game ${SW_USB_AUDIO_FLAGS} -DI2S_CHANS_DAC=2
|
|||||||
-DOUTPUT_VOLUME_CONTROL=1
|
-DOUTPUT_VOLUME_CONTROL=1
|
||||||
#-DDEBUG_MEMORY_LOG_ENABLED=1
|
#-DDEBUG_MEMORY_LOG_ENABLED=1
|
||||||
-DXUA_DFU_EN=1
|
-DXUA_DFU_EN=1
|
||||||
-DSPATIAL_GAME
|
-DIR_SWITCHING_MODE
|
||||||
-DHID_CONTROLS=1)
|
-DHID_CONTROLS=1)
|
||||||
|
#set(APP_COMPILER_FLAGS_ex3d_71_game ${SW_USB_AUDIO_FLAGS} -DI2S_CHANS_DAC=2
|
||||||
set(APP_COMPILER_FLAGS_ex3d_71_music ${SW_USB_AUDIO_FLAGS} -DI2S_CHANS_DAC=2
|
# -DI2S_CHANS_ADC=2
|
||||||
-DI2S_CHANS_ADC=2
|
# -DMIN_FREQ=48000
|
||||||
-DMIN_FREQ=48000
|
# -DMAX_FREQ=48000
|
||||||
-DMAX_FREQ=48000
|
# -DUSE_EX3D
|
||||||
-DUSE_EX3D
|
# -DMIXER=0
|
||||||
-DMIXER=0
|
# -DAIZIP_DNR=0 #-ldnr_50ms
|
||||||
-DAIZIP_DNR=0 #-ldnr_50ms
|
# -llib_ex3d_game
|
||||||
-llib_ex3d_music
|
# -DEQ_EN=1
|
||||||
-DNUM_USB_CHAN_OUT=8
|
# -DNUM_USB_CHAN_OUT=8
|
||||||
-DNUM_USB_CHAN_IN=2
|
# -DNUM_USB_CHAN_IN=2
|
||||||
-DNUM_EX3D_CHAN_OUT=2
|
# -DNUM_EX3D_CHAN_OUT=2
|
||||||
-DMIN_VOLUME=0xE000
|
# -DMIN_VOLUME=0xE000
|
||||||
-DSPATIAL_MUSIC
|
# -DINPUT_VOLUME_CONTROL=1
|
||||||
-DHID_CONTROLS=1)
|
# -DOUTPUT_VOLUME_CONTROL=1
|
||||||
|
# #-DDEBUG_MEMORY_LOG_ENABLED=1
|
||||||
set(APP_COMPILER_FLAGS_ex3d_71_movie ${SW_USB_AUDIO_FLAGS} -DI2S_CHANS_DAC=2
|
# -DXUA_DFU_EN=1
|
||||||
-DI2S_CHANS_ADC=2
|
# -DSPATIAL_GAME
|
||||||
-DMIN_FREQ=48000
|
# -DHID_CONTROLS=1)
|
||||||
-DMAX_FREQ=48000
|
#
|
||||||
-DUSE_EX3D
|
#set(APP_COMPILER_FLAGS_ex3d_71_music ${SW_USB_AUDIO_FLAGS} -DI2S_CHANS_DAC=2
|
||||||
-DMIXER=0
|
# -DI2S_CHANS_ADC=2
|
||||||
-DAIZIP_DNR=0 #-ldnr_50ms
|
# -DMIN_FREQ=48000
|
||||||
-DEQ_EN=1
|
# -DMAX_FREQ=48000
|
||||||
-llib_ex3d_movie
|
# -DUSE_EX3D
|
||||||
-DNUM_USB_CHAN_OUT=8
|
# -DMIXER=0
|
||||||
-DNUM_USB_CHAN_IN=2
|
# -DAIZIP_DNR=0 #-ldnr_50ms
|
||||||
-DNUM_EX3D_CHAN_OUT=2
|
# -llib_ex3d_music
|
||||||
-DMIN_VOLUME=0xE000
|
# -DNUM_USB_CHAN_OUT=8
|
||||||
-DXUA_DFU_EN=1
|
# -DNUM_USB_CHAN_IN=2
|
||||||
-DSPATIAL_MOVIE
|
# -DNUM_EX3D_CHAN_OUT=2
|
||||||
-DHID_CONTROLS=1)
|
# -DMIN_VOLUME=0xE000
|
||||||
|
# -DSPATIAL_MUSIC
|
||||||
set(APP_COMPILER_FLAGS_ex3d_71_drama ${SW_USB_AUDIO_FLAGS} -DI2S_CHANS_DAC=2
|
# -DHID_CONTROLS=1)
|
||||||
-DI2S_CHANS_ADC=2
|
#
|
||||||
-DMIN_FREQ=48000
|
#set(APP_COMPILER_FLAGS_ex3d_71_movie ${SW_USB_AUDIO_FLAGS} -DI2S_CHANS_DAC=2
|
||||||
-DMAX_FREQ=48000
|
# -DI2S_CHANS_ADC=2
|
||||||
-DUSE_EX3D
|
# -DMIN_FREQ=48000
|
||||||
-DMIXER=0
|
# -DMAX_FREQ=48000
|
||||||
-DAIZIP_DNR=0 #-ldnr_50ms
|
# -DUSE_EX3D
|
||||||
-llib_ex3d_drama
|
# -DMIXER=0
|
||||||
-DNUM_USB_CHAN_OUT=8
|
# -DAIZIP_DNR=0 #-ldnr_50ms
|
||||||
-DNUM_USB_CHAN_IN=2
|
# -DEQ_EN=1
|
||||||
-DNUM_EX3D_CHAN_OUT=2
|
# -llib_ex3d_movie
|
||||||
-DMIN_VOLUME=0xE000
|
# -DNUM_USB_CHAN_OUT=8
|
||||||
-DSPATIAL_DRAMA
|
# -DNUM_USB_CHAN_IN=2
|
||||||
-DHID_CONTROLS=1)
|
# -DNUM_EX3D_CHAN_OUT=2
|
||||||
|
# -DMIN_VOLUME=0xE000
|
||||||
|
# -DXUA_DFU_EN=1
|
||||||
|
# -DSPATIAL_MOVIE
|
||||||
|
# -DHID_CONTROLS=1)
|
||||||
|
#
|
||||||
|
#set(APP_COMPILER_FLAGS_ex3d_71_drama ${SW_USB_AUDIO_FLAGS} -DI2S_CHANS_DAC=2
|
||||||
|
# -DI2S_CHANS_ADC=2
|
||||||
|
# -DMIN_FREQ=48000
|
||||||
|
# -DMAX_FREQ=48000
|
||||||
|
# -DUSE_EX3D
|
||||||
|
# -DMIXER=0
|
||||||
|
# -DAIZIP_DNR=0 #-ldnr_50ms
|
||||||
|
# -llib_ex3d_drama
|
||||||
|
# -DNUM_USB_CHAN_OUT=8
|
||||||
|
# -DNUM_USB_CHAN_IN=2
|
||||||
|
# -DNUM_EX3D_CHAN_OUT=2
|
||||||
|
# -DMIN_VOLUME=0xE000
|
||||||
|
# -DSPATIAL_DRAMA
|
||||||
|
# -DHID_CONTROLS=1)
|
||||||
|
#
|
||||||
set(APP_INCLUDES src src/core src/extensions ../../lib_dnr/lib_dnr)
|
set(APP_INCLUDES src src/core src/extensions ../../lib_dnr/lib_dnr)
|
||||||
set(XMOS_SANDBOX_DIR ${CMAKE_CURRENT_LIST_DIR}/../..)
|
set(XMOS_SANDBOX_DIR ${CMAKE_CURRENT_LIST_DIR}/../..)
|
||||||
|
|
||||||
|
|||||||
@@ -61,8 +61,14 @@ unsigned g_mic_level_t1;
|
|||||||
#define LED_OFF 1
|
#define LED_OFF 1
|
||||||
#define S3D_ON LED_ON
|
#define S3D_ON LED_ON
|
||||||
#define S3D_OFF LED_OFF
|
#define S3D_OFF LED_OFF
|
||||||
|
|
||||||
|
#if defined(IR_SWITCHING_MODE)
|
||||||
|
enum {IR_OFF=0, IR_GAME=1, IR_MUSIC=2, IR_MOVIE=3, IR_7_1_GAME=4, IR_7_1_MUSIC=5, IR_7_1_MOVIE=6};
|
||||||
|
unsigned g_3d_on_off_t1 = IR_OFF; // Default 3D off
|
||||||
|
#else
|
||||||
enum {A3D_OFF=0, A3D_VON=1, A3D_ON=2};
|
enum {A3D_OFF=0, A3D_VON=1, A3D_ON=2};
|
||||||
unsigned g_3d_on_off_t1 = A3D_OFF; // Default 3D off
|
unsigned g_3d_on_off_t1 = A3D_OFF; // Default 3D off
|
||||||
|
#endif
|
||||||
#define DNR_ON 1
|
#define DNR_ON 1
|
||||||
#define DNR_OFF 0
|
#define DNR_OFF 0
|
||||||
unsigned g_dnr_on_off_t1 = DNR_OFF; // Default DNR off
|
unsigned g_dnr_on_off_t1 = DNR_OFF; // Default DNR off
|
||||||
@@ -183,7 +189,7 @@ void UserBufferManagement(unsigned sampsFromUsbToAudio[], unsigned sampsFromAudi
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(SPATIAL_DRAMA) || defined(SPATIAL_GAME) || defined(SPATIAL_MOVIE) || defined(SPATIAL_MUSIC)
|
#if defined(SPATIAL_DRAMA) || defined(SPATIAL_GAME) || defined(SPATIAL_MOVIE) || defined(SPATIAL_MUSIC) || defined(IR_SWITCHING_MODE)
|
||||||
// 6ch version
|
// 6ch version
|
||||||
// C and LFE -3dB mixed to L and R.
|
// C and LFE -3dB mixed to L and R.
|
||||||
// L = L + C*-3dB + LFE*-3dB
|
// L = L + C*-3dB + LFE*-3dB
|
||||||
@@ -212,8 +218,21 @@ void UserBufferManagement(unsigned sampsFromUsbToAudio[], unsigned sampsFromAudi
|
|||||||
if (sum_R > 2147483647) sum_R = 2147483647;
|
if (sum_R > 2147483647) sum_R = 2147483647;
|
||||||
else if (sum_R < -2147483648) sum_R = -2147483648;
|
else if (sum_R < -2147483648) sum_R = -2147483648;
|
||||||
|
|
||||||
|
// only for Stereo game, Stereo music and Stereo movie mode
|
||||||
|
if ((is_3d > IR_OFF) && (is_3d < IR_7_1_GAME)) {
|
||||||
|
// stereo mode
|
||||||
|
ubm_egress[0][frame_index] = 0;
|
||||||
|
ubm_egress[1][frame_index] = 0;
|
||||||
|
ubm_egress[2][frame_index] = 0;
|
||||||
|
ubm_egress[3][frame_index] = 0;
|
||||||
|
ubm_egress[4][frame_index] = 0;
|
||||||
|
ubm_egress[5][frame_index] = 0;
|
||||||
|
ubm_egress[6][frame_index] = (int32_t)sum_L; //SL
|
||||||
|
ubm_egress[7][frame_index] = (int32_t)sum_R; //SR
|
||||||
|
} else {
|
||||||
ubm_egress[0][frame_index] = (int32_t)sum_L;
|
ubm_egress[0][frame_index] = (int32_t)sum_L;
|
||||||
ubm_egress[1][frame_index] = (int32_t)sum_R;
|
ubm_egress[1][frame_index] = (int32_t)sum_R;
|
||||||
|
}
|
||||||
|
|
||||||
// Zero out C (2) and LFE (3) since they are mixed into L/R
|
// Zero out C (2) and LFE (3) since they are mixed into L/R
|
||||||
ubm_egress[2][frame_index] = 0;
|
ubm_egress[2][frame_index] = 0;
|
||||||
@@ -335,6 +354,11 @@ void hid_receive_task_in_c(unsigned char * RcvData, unsigned * SendData)
|
|||||||
unsigned *pRcvBuf = (unsigned *)(RcvData + 4);
|
unsigned *pRcvBuf = (unsigned *)(RcvData + 4);
|
||||||
unsigned *pSendBuf = SendData;
|
unsigned *pSendBuf = SendData;
|
||||||
unsigned angle;
|
unsigned angle;
|
||||||
|
// 改动原因:
|
||||||
|
// - host UI 根据 EX3D_SF_NUM 遍历声场列表;现在 EX3D_SF_NUM=3,只暴露按键支持的3个“带算法声场”(GAME/MUSIC/MOVIE);
|
||||||
|
// - 算法开关通过 CMD_ONOFF 单独控制,CMD_SOUND_FIELD 只选择声场,不允许隐式打开算法;
|
||||||
|
// 因此在HID命令层仅缓存“最近一次声场索引(0~2)”,供 CMD_SOUND_FIELD / CMD_ONOFF 共用(算法OFF时也能记住选择)。
|
||||||
|
static unsigned last_sf_idx_0_2 = 0; // 0~2: GAME/MUSIC/MOVIE
|
||||||
|
|
||||||
command_code = pRcvBuf[0];
|
command_code = pRcvBuf[0];
|
||||||
cmdItem = CMD_ITEM(command_code);
|
cmdItem = CMD_ITEM(command_code);
|
||||||
@@ -349,8 +373,31 @@ void hid_receive_task_in_c(unsigned char * RcvData, unsigned * SendData)
|
|||||||
if (CMD_SET(CMD_ONOFF) == command_code) {
|
if (CMD_SET(CMD_ONOFF) == command_code) {
|
||||||
// set DrAX on/off
|
// set DrAX on/off
|
||||||
//audio_ex3d_onoff(pRcvBuf[1]);
|
//audio_ex3d_onoff(pRcvBuf[1]);
|
||||||
audio_ex3d_set_onoff(pRcvBuf[1]);
|
uint32_t onoff = pRcvBuf[1];
|
||||||
debug_printf("Set CMD_ONOFF : %u\r\n", pRcvBuf[1]);
|
//audio_ex3d_set_onoff(pRcvBuf[1]);
|
||||||
|
audio_ex3d_set_onoff(onoff);
|
||||||
|
uint32_t cur_mode;
|
||||||
|
GET_SHARED_GLOBAL(cur_mode, g_3d_on_off_t1);
|
||||||
|
if (onoff == 0) {
|
||||||
|
// 改动原因:关闭算法时记录当前声场索引(0~2),供下次打开时恢复;然后仅把共享变量置为IR_OFF
|
||||||
|
if (cur_mode == IR_7_1_MOVIE) {
|
||||||
|
last_sf_idx_0_2 = 2;
|
||||||
|
} else if (cur_mode == IR_7_1_GAME) {
|
||||||
|
last_sf_idx_0_2 = 1;
|
||||||
|
} else {
|
||||||
|
last_sf_idx_0_2 = 0;
|
||||||
|
}
|
||||||
|
cur_mode = IR_OFF;
|
||||||
|
SET_SHARED_GLOBAL(g_3d_on_off_t1, cur_mode);
|
||||||
|
} else {
|
||||||
|
// 改动原因:打开算法时恢复到最近一次选择的声场(0~2),并统一映射到 IR_GAME..IR_MOVIE(不再暴露6个族)
|
||||||
|
unsigned new_mode;
|
||||||
|
if (last_sf_idx_0_2 == 2) new_mode = IR_7_1_MOVIE;
|
||||||
|
else if (last_sf_idx_0_2 == 1) new_mode = IR_7_1_GAME;
|
||||||
|
else new_mode = IR_GAME;
|
||||||
|
SET_SHARED_GLOBAL(g_3d_on_off_t1, new_mode);
|
||||||
|
}
|
||||||
|
printf("Set CMD_ONOFF : %u\r\n", pRcvBuf[1]);
|
||||||
} else {
|
} else {
|
||||||
debug_printf("Get CMD_ONOFF : %u\r\n", bEX3D_On);
|
debug_printf("Get CMD_ONOFF : %u\r\n", bEX3D_On);
|
||||||
pSendBuf[idx] = bEX3D_On;
|
pSendBuf[idx] = bEX3D_On;
|
||||||
@@ -473,6 +520,25 @@ void hid_receive_task_in_c(unsigned char * RcvData, unsigned * SendData)
|
|||||||
const char * sfIdxName = "SPATIAL GAME"; //sfDispName[sfIdx];
|
const char * sfIdxName = "SPATIAL GAME"; //sfDispName[sfIdx];
|
||||||
#elif defined(SPATIAL_MOVIE)
|
#elif defined(SPATIAL_MOVIE)
|
||||||
const char * sfIdxName = "SPATIAL MOVIE"; //sfDispName[sfIdx];
|
const char * sfIdxName = "SPATIAL MOVIE"; //sfDispName[sfIdx];
|
||||||
|
#elif defined(IR_SWITCHING_MODE)
|
||||||
|
// 改动原因:host UI 现在只遍历 EX3D_SF_NUM=3 的声场;这里仅返回按键支持的3个“带算法声场”名字
|
||||||
|
// mapping: sfIdx(0..2) -> IR_GAME/IR_7_1_GAME/IR_7_1_MOVIE
|
||||||
|
const char * sfIdxName = "";
|
||||||
|
switch (sfIdx) {
|
||||||
|
case 0: sfIdxName = "STEREO GAME"; break;
|
||||||
|
case 1: sfIdxName = "SPATIAL GAME"; break;
|
||||||
|
case 2: sfIdxName = "SPATIAL MOVIE"; break;
|
||||||
|
default: break;
|
||||||
|
}
|
||||||
|
// if (cur_mode == IR_GAME) {
|
||||||
|
// sfIdxName = spatial_game;
|
||||||
|
// } else {
|
||||||
|
// if (cur_mode == IR_MUSIC) {
|
||||||
|
// sfIdxName = spatial_music;
|
||||||
|
// } else {
|
||||||
|
// sfIdxName = spatial_movie;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
#else
|
#else
|
||||||
const char * sfIdxName = "EXTREME";
|
const char * sfIdxName = "EXTREME";
|
||||||
#endif
|
#endif
|
||||||
@@ -489,12 +555,45 @@ void hid_receive_task_in_c(unsigned char * RcvData, unsigned * SendData)
|
|||||||
if (CMD_SET(CMD_SOUND_FIELD) == command_code) {
|
if (CMD_SET(CMD_SOUND_FIELD) == command_code) {
|
||||||
int32_t sfIdx = pRcvBuf[1];
|
int32_t sfIdx = pRcvBuf[1];
|
||||||
debug_printf("Set CMD_SOUND_FIELD : ");
|
debug_printf("Set CMD_SOUND_FIELD : ");
|
||||||
if (sfIdx < EX3D_SF_NUM) {
|
// 改动原因:
|
||||||
audio_ex3d_set_sf(sfIdx);
|
// - host UI 现在只暴露3个“带算法声场”(GAME/MUSIC/MOVIE 三选一)。
|
||||||
} else
|
// - 算法开关通过 CMD_ONOFF/其它接口单独控制;CMD_SOUND_FIELD 不能隐式把算法打开/关闭。
|
||||||
|
// 因此:CMD_SOUND_FIELD 只接受 0~2(对应 GAME/MUSIC/MOVIE),并且在算法OFF(IR_OFF)时只缓存选择、不改共享变量。
|
||||||
|
if (sfIdx >= 0 && sfIdx < 3) {
|
||||||
|
unsigned cur_mode;
|
||||||
|
GET_SHARED_GLOBAL(cur_mode, g_3d_on_off_t1);
|
||||||
|
|
||||||
|
last_sf_idx_0_2 = (unsigned)sfIdx;
|
||||||
|
|
||||||
|
if (cur_mode == IR_OFF) {
|
||||||
|
// 改动原因:算法已关闭时不写 g_3d_on_off_t1,避免 event_polling 误判“主机改变声场”而自动打开算法
|
||||||
|
debug_printf("algorithm OFF, cache sound field idx=%d only (no implicit on/off)\n", sfIdx);
|
||||||
|
} else {
|
||||||
|
// 改动原因:算法已开启时才更新声场;因EX3D_SF_NUM=3不再区分6个族
|
||||||
|
unsigned new_mode;
|
||||||
|
if (sfIdx == 1) new_mode = IR_7_1_GAME;
|
||||||
|
else if (sfIdx == 2) new_mode = IR_7_1_MOVIE;
|
||||||
|
else new_mode = IR_GAME;
|
||||||
|
SET_SHARED_GLOBAL(g_3d_on_off_t1, new_mode);
|
||||||
|
debug_printf("set sound field idx=%d -> g_3d_on_off_t1=%d (no implicit on/off)\n", sfIdx, new_mode);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// 改动原因:EX3D_SF_NUM=3后只支持0~2,超过范围返回错误
|
||||||
pSendBuf[idx] = 0xFFFFFFFF;
|
pSendBuf[idx] = 0xFFFFFFFF;
|
||||||
|
}
|
||||||
} else { // Get
|
} else { // Get
|
||||||
pSendBuf[idx] = 0;//EX3D_SF_Idx;
|
// 改动原因:返回当前声场索引(0~2: GAME/MUSIC/MOVIE);若算法OFF则返回缓存值,避免依赖 g_3d_on_off_t1=IR_OFF
|
||||||
|
unsigned cur_mode;
|
||||||
|
GET_SHARED_GLOBAL(cur_mode, g_3d_on_off_t1);
|
||||||
|
if (cur_mode == IR_OFF) {
|
||||||
|
pSendBuf[idx] = last_sf_idx_0_2;
|
||||||
|
} else if (cur_mode == IR_7_1_MOVIE) {
|
||||||
|
pSendBuf[idx] = 2;
|
||||||
|
} else if (cur_mode == IR_7_1_GAME) {
|
||||||
|
pSendBuf[idx] = 1;
|
||||||
|
} else {
|
||||||
|
pSendBuf[idx] = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -785,7 +884,11 @@ void hid_button_task(chanend_t cc_mic_level, chanend_t c_hidRcvData, chanend_t c
|
|||||||
port_t p_leds = XS1_PORT_1G;
|
port_t p_leds = XS1_PORT_1G;
|
||||||
port_t p_leds2 = XS1_PORT_4D;
|
port_t p_leds2 = XS1_PORT_4D;
|
||||||
// set spatial audio on; LED on
|
// set spatial audio on; LED on
|
||||||
|
#if defined (IR_SWITCHING_MODE)
|
||||||
|
static uint32_t is_3d_on = IR_OFF;
|
||||||
|
#else
|
||||||
static uint32_t is_3d_on = A3D_OFF;
|
static uint32_t is_3d_on = A3D_OFF;
|
||||||
|
#endif
|
||||||
static uint32_t is_dnr_on = DNR_OFF;
|
static uint32_t is_dnr_on = DNR_OFF;
|
||||||
static uint8_t leds2_val = LED_DNR_OFF_71_OFF;
|
static uint8_t leds2_val = LED_DNR_OFF_71_OFF;
|
||||||
static uint8_t leds1_val = 1; // LED off
|
static uint8_t leds1_val = 1; // LED off
|
||||||
@@ -854,6 +957,7 @@ void hid_button_task(chanend_t cc_mic_level, chanend_t c_hidRcvData, chanend_t c
|
|||||||
event_mic_vol:
|
event_mic_vol:
|
||||||
{
|
{
|
||||||
tmp = chan_in_byte(cc_mic_level);
|
tmp = chan_in_byte(cc_mic_level);
|
||||||
|
#if 1
|
||||||
debug_printf("event_mic_vol received: 0x%02X\n", tmp);
|
debug_printf("event_mic_vol received: 0x%02X\n", tmp);
|
||||||
// 改动原因:检查是否是音频模式传输命令(0xFC),如果是则接收当前音频模式值(0-3)
|
// 改动原因:检查是否是音频模式传输命令(0xFC),如果是则接收当前音频模式值(0-3)
|
||||||
if (tmp == 0xFC) {
|
if (tmp == 0xFC) {
|
||||||
@@ -869,7 +973,11 @@ void hid_button_task(chanend_t cc_mic_level, chanend_t c_hidRcvData, chanend_t c
|
|||||||
if (current_mode_local == 0) {
|
if (current_mode_local == 0) {
|
||||||
// 无音效模式:灯灭,算法关闭
|
// 无音效模式:灯灭,算法关闭
|
||||||
audio_ex3d_onoff(0);
|
audio_ex3d_onoff(0);
|
||||||
|
#if IR_SWITCHING_MODE
|
||||||
|
is_3d_on = IR_OFF;
|
||||||
|
#else
|
||||||
is_3d_on = A3D_OFF;
|
is_3d_on = A3D_OFF;
|
||||||
|
#endif
|
||||||
SET_SHARED_GLOBAL(g_3d_on_off_t1, is_3d_on);
|
SET_SHARED_GLOBAL(g_3d_on_off_t1, is_3d_on);
|
||||||
leds2_val |= (1<<BLUE_LED_PIN); // Blue LED off
|
leds2_val |= (1<<BLUE_LED_PIN); // Blue LED off
|
||||||
leds2_val |= (1<<GREEN_LED_PIN); // Green LED off
|
leds2_val |= (1<<GREEN_LED_PIN); // Green LED off
|
||||||
@@ -878,7 +986,11 @@ void hid_button_task(chanend_t cc_mic_level, chanend_t c_hidRcvData, chanend_t c
|
|||||||
} else if (current_mode_local == 1) {
|
} else if (current_mode_local == 1) {
|
||||||
// STEREO_2K模式:红灯,算法开启
|
// STEREO_2K模式:红灯,算法开启
|
||||||
audio_ex3d_onoff(1);
|
audio_ex3d_onoff(1);
|
||||||
|
#if IR_SWITCHING_MODE
|
||||||
|
is_3d_on = IR_GAME;
|
||||||
|
#else
|
||||||
is_3d_on = A3D_ON;
|
is_3d_on = A3D_ON;
|
||||||
|
#endif
|
||||||
SET_SHARED_GLOBAL(g_3d_on_off_t1, is_3d_on);
|
SET_SHARED_GLOBAL(g_3d_on_off_t1, is_3d_on);
|
||||||
leds1_val &= (~1); // Red LED on
|
leds1_val &= (~1); // Red LED on
|
||||||
leds2_val |= (1<<BLUE_LED_PIN); // Blue LED off
|
leds2_val |= (1<<BLUE_LED_PIN); // Blue LED off
|
||||||
@@ -887,7 +999,11 @@ void hid_button_task(chanend_t cc_mic_level, chanend_t c_hidRcvData, chanend_t c
|
|||||||
} else if (current_mode_local == 2) {
|
} else if (current_mode_local == 2) {
|
||||||
// SPATIAL_GAME模式:蓝灯,算法开启
|
// SPATIAL_GAME模式:蓝灯,算法开启
|
||||||
audio_ex3d_onoff(1);
|
audio_ex3d_onoff(1);
|
||||||
|
#if IR_SWITCHING_MODE
|
||||||
|
is_3d_on = IR_7_1_GAME;
|
||||||
|
#else
|
||||||
is_3d_on = A3D_ON;
|
is_3d_on = A3D_ON;
|
||||||
|
#endif
|
||||||
SET_SHARED_GLOBAL(g_3d_on_off_t1, is_3d_on);
|
SET_SHARED_GLOBAL(g_3d_on_off_t1, is_3d_on);
|
||||||
leds2_val &= (~(1<<BLUE_LED_PIN)); // Blue LED on
|
leds2_val &= (~(1<<BLUE_LED_PIN)); // Blue LED on
|
||||||
leds1_val |= 1; // Red LED off
|
leds1_val |= 1; // Red LED off
|
||||||
@@ -896,7 +1012,11 @@ void hid_button_task(chanend_t cc_mic_level, chanend_t c_hidRcvData, chanend_t c
|
|||||||
} else if (current_mode_local == 3) {
|
} else if (current_mode_local == 3) {
|
||||||
// SPATIAL_MOVIE模式:蓝灯闪烁,算法开启
|
// SPATIAL_MOVIE模式:蓝灯闪烁,算法开启
|
||||||
audio_ex3d_onoff(1);
|
audio_ex3d_onoff(1);
|
||||||
|
#if IR_SWITCHING_MODE
|
||||||
|
is_3d_on = IR_7_1_MOVIE;
|
||||||
|
#else
|
||||||
is_3d_on = A3D_ON;
|
is_3d_on = A3D_ON;
|
||||||
|
#endif
|
||||||
SET_SHARED_GLOBAL(g_3d_on_off_t1, is_3d_on);
|
SET_SHARED_GLOBAL(g_3d_on_off_t1, is_3d_on);
|
||||||
leds2_val &= (~(1<<BLUE_LED_PIN)); // Blue LED on (初始状态)
|
leds2_val &= (~(1<<BLUE_LED_PIN)); // Blue LED on (初始状态)
|
||||||
leds1_val |= 1; // Red LED off
|
leds1_val |= 1; // Red LED off
|
||||||
@@ -907,6 +1027,7 @@ void hid_button_task(chanend_t cc_mic_level, chanend_t c_hidRcvData, chanend_t c
|
|||||||
port_out(p_leds2, leds2_val);
|
port_out(p_leds2, leds2_val);
|
||||||
key_enable = 1;
|
key_enable = 1;
|
||||||
// 模式接收完成后继续,不处理按键
|
// 模式接收完成后继续,不处理按键
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
// 正常的mic level命令处理
|
// 正常的mic level命令处理
|
||||||
debug_printf("Processing mic level command: 0x%02X\n", tmp);
|
debug_printf("Processing mic level command: 0x%02X\n", tmp);
|
||||||
@@ -926,6 +1047,7 @@ void hid_button_task(chanend_t cc_mic_level, chanend_t c_hidRcvData, chanend_t c
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
@@ -985,7 +1107,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=SPATIAL_MOVIE)
|
// 改动原因:短按切换模式(0=无音效,1=STEREO_2K,2=SPATIAL_GAME,3=SPATIAL_MOVIE)
|
||||||
// 循环切换:0→1→2→3→0
|
// 循环切换:0→1→2→3→0
|
||||||
#if UAC1_MODE
|
#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);
|
||||||
@@ -993,7 +1115,11 @@ void hid_button_task(chanend_t cc_mic_level, chanend_t c_hidRcvData, chanend_t c
|
|||||||
if (current_mode_local == 0) {
|
if (current_mode_local == 0) {
|
||||||
// 无音效模式:灯灭,算法关闭
|
// 无音效模式:灯灭,算法关闭
|
||||||
audio_ex3d_onoff(0);
|
audio_ex3d_onoff(0);
|
||||||
|
#if IR_SWITCHING_MODE
|
||||||
|
is_3d_on = IR_OFF;
|
||||||
|
#else
|
||||||
is_3d_on = A3D_OFF;
|
is_3d_on = A3D_OFF;
|
||||||
|
#endif
|
||||||
SET_SHARED_GLOBAL(g_3d_on_off_t1, is_3d_on);
|
SET_SHARED_GLOBAL(g_3d_on_off_t1, is_3d_on);
|
||||||
leds2_val |= (1<<BLUE_LED_PIN); // Blue LED off
|
leds2_val |= (1<<BLUE_LED_PIN); // Blue LED off
|
||||||
leds2_val |= (1<<GREEN_LED_PIN); // Green LED off
|
leds2_val |= (1<<GREEN_LED_PIN); // Green LED off
|
||||||
@@ -1002,7 +1128,11 @@ void hid_button_task(chanend_t cc_mic_level, chanend_t c_hidRcvData, chanend_t c
|
|||||||
} else if (current_mode_local == 1) {
|
} else if (current_mode_local == 1) {
|
||||||
// STEREO_2K模式:红灯,算法开启
|
// STEREO_2K模式:红灯,算法开启
|
||||||
audio_ex3d_onoff(1);
|
audio_ex3d_onoff(1);
|
||||||
|
#if IR_SWITCHING_MODE
|
||||||
|
is_3d_on = IR_GAME;
|
||||||
|
#else
|
||||||
is_3d_on = A3D_ON;
|
is_3d_on = A3D_ON;
|
||||||
|
#endif
|
||||||
SET_SHARED_GLOBAL(g_3d_on_off_t1, is_3d_on);
|
SET_SHARED_GLOBAL(g_3d_on_off_t1, is_3d_on);
|
||||||
leds1_val &= (~1); // Red LED on
|
leds1_val &= (~1); // Red LED on
|
||||||
leds2_val |= (1<<BLUE_LED_PIN); // Blue LED off
|
leds2_val |= (1<<BLUE_LED_PIN); // Blue LED off
|
||||||
@@ -1011,7 +1141,11 @@ void hid_button_task(chanend_t cc_mic_level, chanend_t c_hidRcvData, chanend_t c
|
|||||||
} else if (current_mode_local == 2) {
|
} else if (current_mode_local == 2) {
|
||||||
// SPATIAL_GAME模式:蓝灯,算法开启
|
// SPATIAL_GAME模式:蓝灯,算法开启
|
||||||
audio_ex3d_onoff(1);
|
audio_ex3d_onoff(1);
|
||||||
|
#if IR_SWITCHING_MODE
|
||||||
|
is_3d_on = IR_7_1_GAME;
|
||||||
|
#else
|
||||||
is_3d_on = A3D_ON;
|
is_3d_on = A3D_ON;
|
||||||
|
#endif
|
||||||
SET_SHARED_GLOBAL(g_3d_on_off_t1, is_3d_on);
|
SET_SHARED_GLOBAL(g_3d_on_off_t1, is_3d_on);
|
||||||
leds2_val &= (~(1<<BLUE_LED_PIN)); // Blue LED on
|
leds2_val &= (~(1<<BLUE_LED_PIN)); // Blue LED on
|
||||||
leds1_val |= 1; // Red LED off
|
leds1_val |= 1; // Red LED off
|
||||||
@@ -1020,7 +1154,11 @@ void hid_button_task(chanend_t cc_mic_level, chanend_t c_hidRcvData, chanend_t c
|
|||||||
} else if (current_mode_local == 3) {
|
} else if (current_mode_local == 3) {
|
||||||
// SPATIAL_MOVIE模式:蓝灯闪烁,算法开启
|
// SPATIAL_MOVIE模式:蓝灯闪烁,算法开启
|
||||||
audio_ex3d_onoff(1);
|
audio_ex3d_onoff(1);
|
||||||
|
#if IR_SWITCHING_MODE
|
||||||
|
is_3d_on = IR_7_1_MOVIE;
|
||||||
|
#else
|
||||||
is_3d_on = A3D_ON;
|
is_3d_on = A3D_ON;
|
||||||
|
#endif
|
||||||
SET_SHARED_GLOBAL(g_3d_on_off_t1, is_3d_on);
|
SET_SHARED_GLOBAL(g_3d_on_off_t1, is_3d_on);
|
||||||
// 初始状态:蓝灯亮(闪烁将在event_polling中处理)
|
// 初始状态:蓝灯亮(闪烁将在event_polling中处理)
|
||||||
leds2_val &= (~(1<<BLUE_LED_PIN)); // Blue LED on
|
leds2_val &= (~(1<<BLUE_LED_PIN)); // Blue LED on
|
||||||
@@ -1073,6 +1211,50 @@ void hid_button_task(chanend_t cc_mic_level, chanend_t c_hidRcvData, chanend_t c
|
|||||||
else {
|
else {
|
||||||
blink_counter = 0;
|
blink_counter = 0;
|
||||||
}
|
}
|
||||||
|
// check if host app changed the sound field
|
||||||
|
uint32_t host_app_sf;
|
||||||
|
GET_SHARED_GLOBAL(host_app_sf, g_3d_on_off_t1);
|
||||||
|
if (host_app_sf != is_3d_on) {
|
||||||
|
is_3d_on = host_app_sf;
|
||||||
|
audio_ex3d_onoff(is_3d_on != IR_OFF);
|
||||||
|
|
||||||
|
if (is_3d_on == IR_OFF) {
|
||||||
|
current_mode_local = 0;
|
||||||
|
leds2_val |= (1<<BLUE_LED_PIN);
|
||||||
|
leds2_val |= (1<<GREEN_LED_PIN);
|
||||||
|
leds1_val |= 1;
|
||||||
|
} else if (is_3d_on == IR_7_1_GAME) {
|
||||||
|
current_mode_local = 2;
|
||||||
|
leds2_val &= (~(1<<BLUE_LED_PIN));
|
||||||
|
leds1_val |= 1;
|
||||||
|
leds2_val |= (1<<GREEN_LED_PIN);
|
||||||
|
} else if (is_3d_on == IR_7_1_MOVIE) {
|
||||||
|
current_mode_local = 3;
|
||||||
|
leds2_val &= (~(1<<BLUE_LED_PIN));
|
||||||
|
leds1_val |= 1;
|
||||||
|
leds2_val |= (1<<GREEN_LED_PIN);
|
||||||
|
} else if (is_3d_on == IR_GAME) {
|
||||||
|
current_mode_local = 1;
|
||||||
|
leds1_val &= (~1);
|
||||||
|
leds2_val |= (1<<BLUE_LED_PIN);
|
||||||
|
leds2_val |= (1<<GREEN_LED_PIN);
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (is_3d_on) {
|
||||||
|
case IR_GAME: printf("Stereo Game on\n"); break;
|
||||||
|
case IR_MUSIC: printf("Stereo Music on\n"); break;
|
||||||
|
case IR_MOVIE: printf("Stereo Movie on\n"); break;
|
||||||
|
case IR_7_1_GAME: printf("3d Game on\n"); break;
|
||||||
|
case IR_7_1_MUSIC: printf("3d Music on\n"); break;
|
||||||
|
case IR_7_1_MOVIE: printf("3d Movie on\n"); break;
|
||||||
|
case IR_OFF: printf("3d off\n"); break;
|
||||||
|
default: break;
|
||||||
|
}
|
||||||
|
|
||||||
|
SET_SHARED_GLOBAL(g_3d_on_off_t1, is_3d_on);
|
||||||
|
port_out(p_leds2, leds2_val);
|
||||||
|
port_out(p_leds, leds1_val);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
continue;
|
continue;
|
||||||
@@ -1159,7 +1341,13 @@ void button_task(chanend_t c_hidSendData, chanend_t cc_mic_level, chanend_t c_ua
|
|||||||
if (host_os == OS_WIN) {
|
if (host_os == OS_WIN) {
|
||||||
printf("Detected Windows OS (OS_WIN) saved_mode: %d\n", saved_mode);
|
printf("Detected Windows OS (OS_WIN) saved_mode: %d\n", saved_mode);
|
||||||
|
|
||||||
|
#if IR_SWITCHING_MODE
|
||||||
|
if (saved_mode == 0) {
|
||||||
|
SetRoleSwitchFlag(MODE_STEREO_2K);
|
||||||
|
} else {
|
||||||
|
SetRoleSwitchFlag(MODE_SPATIAL_GAME);
|
||||||
|
}
|
||||||
|
#else
|
||||||
{
|
{
|
||||||
switch (saved_mode) {
|
switch (saved_mode) {
|
||||||
case 0:
|
case 0:
|
||||||
@@ -1183,6 +1371,7 @@ void button_task(chanend_t c_hidSendData, chanend_t cc_mic_level, chanend_t c_ua
|
|||||||
device_reboot();
|
device_reboot();
|
||||||
while (1);
|
while (1);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
@@ -1246,65 +1435,19 @@ void button_task(chanend_t c_hidSendData, chanend_t cc_mic_level, chanend_t c_ua
|
|||||||
reportData[0] = hidData0;
|
reportData[0] = hidData0;
|
||||||
if (hidData0 == 0xffffffff) {
|
if (hidData0 == 0xffffffff) {
|
||||||
debug_printf("receive end data\n");
|
debug_printf("receive end data\n");
|
||||||
// 改动原因:收到0xffffffff后,循环切换模式并保存到flash,然后设置切换标志
|
// 改动原因:按键短按切换模式时,tile1(hid_button_task) 已经完成“算新模式 + 立即切灯/算法”;
|
||||||
// 注意:UAC1模式下不会收到此命令(hid_button_task不发送)
|
// tile0(button_task) 这里只负责接收最终模式值并保存(共享变量 + flash),避免再次循环计算/触发重启导致不同步。
|
||||||
// 读取当前g_game_mode值
|
unsigned new_mode = chan_in_word(c_hidSendData);
|
||||||
unsigned current_mode = chan_in_word(c_hidSendData);
|
debug_printf("received new_mode from tile1: %d\n", new_mode);
|
||||||
|
|
||||||
// 改动原因:Windows模式下只循环切换0→1→2→3→0(不包括UAC1模式4)
|
if (new_mode > 3) {
|
||||||
// 循环切换模式:0(STEREO_2K) -> 1(SPATIAL_GAME) -> 2(SPATIAL_MOVIE) -> 3(无音效) -> 0
|
|
||||||
unsigned new_mode;
|
|
||||||
unsigned mode_flag;
|
|
||||||
debug_printf("current_mode: %d\n", current_mode);
|
|
||||||
if (current_mode == 0) {
|
|
||||||
// 当前是STEREO_2K,切换到STEREO_2K
|
|
||||||
new_mode = 1;
|
|
||||||
mode_flag = MODE_STEREO_2K;
|
|
||||||
debug_printf("Switching from STEREO_2K (0) to STEREO_2K (1)\n");
|
|
||||||
} else if (current_mode == 1) {
|
|
||||||
// 当前是STEREO_2K,切换到SPATIAL_GAME
|
|
||||||
new_mode = 2;
|
|
||||||
mode_flag = MODE_SPATIAL_GAME;
|
|
||||||
debug_printf("Switching from STEREO_2K (1) to SPATIAL_GAME (2)\n");
|
|
||||||
} else if (current_mode == 2) {
|
|
||||||
// 当前是SPATIAL_GAME,切换到SPATIAL_MOVIE
|
|
||||||
new_mode = 3;
|
|
||||||
mode_flag = MODE_SPATIAL_MOVIE; // SPATIAL_MOVIE模式使用SPATIAL_MOVIE固件
|
|
||||||
debug_printf("Switching from SPATIAL_GAME (2) to SPATIAL_MOVIE (3)\n");
|
|
||||||
} // 更新g_game_mode
|
|
||||||
else if(current_mode == 3) {
|
|
||||||
new_mode = 0;
|
new_mode = 0;
|
||||||
mode_flag = MODE_STEREO_2K;
|
|
||||||
debug_printf("Switching from SPATIAL_MOVIE (3) to STEREO_2K (0)\n");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 改动原因:保存新的模式值到flash的 "game_mode" 文件(Windows模式专用)
|
// 改动原因:把模式值传到tile0保存(RAM共享变量用于运行时同步,flash用于掉电保持)
|
||||||
|
SET_SHARED_GLOBAL(g_game_mode, new_mode);
|
||||||
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);
|
|
||||||
delay_milliseconds(20);
|
|
||||||
|
|
||||||
// 改动原因:判断是否需要切换固件,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);
|
|
||||||
delay_milliseconds(20);
|
|
||||||
device_reboot();
|
|
||||||
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
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
#if (HID_CONTROLS == 1)
|
#if (HID_CONTROLS == 1)
|
||||||
@@ -1497,15 +1640,25 @@ void ex3d_task(){
|
|||||||
#define TD_DATA_BUFFER_ELEMENTS SPATIAL_STEREO_2K_v090h090_left_DATA_BUFFER_ELEMENTS
|
#define TD_DATA_BUFFER_ELEMENTS SPATIAL_STEREO_2K_v090h090_left_DATA_BUFFER_ELEMENTS
|
||||||
#elif defined(STEREO_8K)
|
#elif defined(STEREO_8K)
|
||||||
#define TD_DATA_BUFFER_ELEMENTS SPATIAL_STEREO_8K_v090h090_left_DATA_BUFFER_ELEMENTS
|
#define TD_DATA_BUFFER_ELEMENTS SPATIAL_STEREO_8K_v090h090_left_DATA_BUFFER_ELEMENTS
|
||||||
|
#elif defined(IR_SWITCHING_MODE)
|
||||||
|
#define TD_DATA_BUFFER_ELEMENTS SPATIAL_71_GAME_v090h225_left_DATA_BUFFER_ELEMENTS
|
||||||
#else
|
#else
|
||||||
#error you need to define SPATIAL_DRAMA or STEREO_8K....
|
#error you need to define SPATIAL_DRAMA or STEREO_8K....
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined (IR_SWITCHING_MODE)
|
||||||
|
int dsp_worker(chanend_t c_dsp_to_ex3d,
|
||||||
|
td_block_fir_filter_t * filters[DSP_WORKER_FILTER_PER_DATA_CH*DSP_WORKER_DATA_CH_COUNT*4]){
|
||||||
|
#else
|
||||||
int dsp_worker(chanend_t c_dsp_to_ex3d,
|
int dsp_worker(chanend_t c_dsp_to_ex3d,
|
||||||
td_block_fir_filter_t * filters[DSP_WORKER_FILTER_PER_DATA_CH*DSP_WORKER_DATA_CH_COUNT]){
|
td_block_fir_filter_t * filters[DSP_WORKER_FILTER_PER_DATA_CH*DSP_WORKER_DATA_CH_COUNT]){
|
||||||
|
#endif
|
||||||
int32_t sample_buffer[DSP_WORKER_DATA_CH_COUNT][TD_DATA_BUFFER_ELEMENTS];
|
int32_t sample_buffer[DSP_WORKER_DATA_CH_COUNT][TD_DATA_BUFFER_ELEMENTS];
|
||||||
td_block_fir_data_t fir_data[DSP_WORKER_DATA_CH_COUNT];
|
td_block_fir_data_t fir_data[DSP_WORKER_DATA_CH_COUNT];
|
||||||
|
#if defined (IR_SWITCHING_MODE)
|
||||||
|
static uint32_t ir_mode;
|
||||||
|
GET_SHARED_GLOBAL(ir_mode, g_3d_on_off_t1);
|
||||||
|
#endif
|
||||||
|
|
||||||
for(int i=0;i<DSP_WORKER_DATA_CH_COUNT;i++)
|
for(int i=0;i<DSP_WORKER_DATA_CH_COUNT;i++)
|
||||||
td_block_fir_data_init(&(fir_data[i]), sample_buffer[i], TD_DATA_BUFFER_ELEMENTS);
|
td_block_fir_data_init(&(fir_data[i]), sample_buffer[i], TD_DATA_BUFFER_ELEMENTS);
|
||||||
@@ -1515,6 +1668,15 @@ int dsp_worker(chanend_t c_dsp_to_ex3d,
|
|||||||
|
|
||||||
memset(sample_buffer, 0, sizeof(sample_buffer));
|
memset(sample_buffer, 0, sizeof(sample_buffer));
|
||||||
while(1){
|
while(1){
|
||||||
|
GET_SHARED_GLOBAL(ir_mode, g_3d_on_off_t1);
|
||||||
|
if (ir_mode) {
|
||||||
|
//ir_mode = ir_mode & (0x03);
|
||||||
|
if (ir_mode > 3) {
|
||||||
|
ir_mode -= 4;
|
||||||
|
} else {
|
||||||
|
ir_mode -= 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
for(int ch=0;ch<DSP_WORKER_DATA_CH_COUNT;ch++){
|
for(int ch=0;ch<DSP_WORKER_DATA_CH_COUNT;ch++){
|
||||||
chan_in_buf_word(c_dsp_to_ex3d, (uint32_t *)input[ch], DSP_BLOCK_LENGTH);
|
chan_in_buf_word(c_dsp_to_ex3d, (uint32_t *)input[ch], DSP_BLOCK_LENGTH);
|
||||||
|
|
||||||
@@ -1527,8 +1689,8 @@ int dsp_worker(chanend_t c_dsp_to_ex3d,
|
|||||||
}
|
}
|
||||||
for(int ch=0;ch<DSP_WORKER_DATA_CH_COUNT;ch++){
|
for(int ch=0;ch<DSP_WORKER_DATA_CH_COUNT;ch++){
|
||||||
for(int d=0;d<DSP_WORKER_FILTER_PER_DATA_CH;d++){
|
for(int d=0;d<DSP_WORKER_FILTER_PER_DATA_CH;d++){
|
||||||
if(filters[DSP_WORKER_FILTER_PER_DATA_CH*ch+d] != 0){
|
if(filters[(ir_mode*6) + DSP_WORKER_FILTER_PER_DATA_CH*ch+d] != 0){
|
||||||
td_block_fir_compute(output[DSP_WORKER_FILTER_PER_DATA_CH*ch+d], &(fir_data[ch]), filters[DSP_WORKER_FILTER_PER_DATA_CH*ch+d]);
|
td_block_fir_compute(output[DSP_WORKER_FILTER_PER_DATA_CH*ch+d], &(fir_data[ch]), filters[(ir_mode*6) + DSP_WORKER_FILTER_PER_DATA_CH*ch+d]);
|
||||||
} else {
|
} else {
|
||||||
memset(output[DSP_WORKER_FILTER_PER_DATA_CH*ch+d], 0, TD_BLOCK_FIR_LENGTH*sizeof(int32_t));
|
memset(output[DSP_WORKER_FILTER_PER_DATA_CH*ch+d], 0, TD_BLOCK_FIR_LENGTH*sizeof(int32_t));
|
||||||
}
|
}
|
||||||
@@ -1681,7 +1843,51 @@ int dsp_worker_tile(chanend_t c_dsp_to_ex3d, int worker_id){
|
|||||||
} else {
|
} else {
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
// IR SWITCHING MODE
|
||||||
|
#elif defined(IR_SWITCHING_MODE)
|
||||||
|
if(worker_id == 0){
|
||||||
|
td_block_fir_filter_t * filters[DSP_WORKER_DATA_CH_COUNT*DSP_WORKER_FILTER_PER_DATA_CH*4] =
|
||||||
|
{
|
||||||
|
&td_block_fir_filter_SPATIAL_71_GAME_v090h225_left, &td_block_fir_filter_SPATIAL_71_GAME_v090h225_right,
|
||||||
|
&td_block_fir_filter_SPATIAL_71_GAME_v090h315_left, &td_block_fir_filter_SPATIAL_71_GAME_v090h315_right,
|
||||||
|
&td_block_fir_filter_SPATIAL_71_GAME_v090h090_left, &td_block_fir_filter_SPATIAL_71_GAME_v090h090_right,
|
||||||
|
|
||||||
|
&td_block_fir_filter_SPATIAL_71_MUSIC_v090h225_left, &td_block_fir_filter_SPATIAL_71_MUSIC_v090h225_right,
|
||||||
|
&td_block_fir_filter_SPATIAL_71_MUSIC_v090h315_left, &td_block_fir_filter_SPATIAL_71_MUSIC_v090h315_right,
|
||||||
|
&td_block_fir_filter_SPATIAL_71_MUSIC_v090h090_left, &td_block_fir_filter_SPATIAL_71_MUSIC_v090h090_right,
|
||||||
|
|
||||||
|
&td_block_fir_filter_SPATIAL_71_MOVIE_v090h225_left, &td_block_fir_filter_SPATIAL_71_MOVIE_v090h225_right,
|
||||||
|
&td_block_fir_filter_SPATIAL_71_MOVIE_v090h315_left, &td_block_fir_filter_SPATIAL_71_MOVIE_v090h315_right,
|
||||||
|
&td_block_fir_filter_SPATIAL_71_MOVIE_v090h090_left, &td_block_fir_filter_SPATIAL_71_MOVIE_v090h090_right,
|
||||||
|
|
||||||
|
0,0,//&td_block_fir_filter_SPATIAL_71_DRAMA_v090h225_left, &td_block_fir_filter_SPATIAL_71_DRAMA_v090h225_right,
|
||||||
|
0,0,//&td_block_fir_filter_SPATIAL_71_DRAMA_v090h315_left, &td_block_fir_filter_SPATIAL_71_DRAMA_v090h315_right,
|
||||||
|
0,0//&td_block_fir_filter_SPATIAL_71_DRAMA_v090h090_left, &td_block_fir_filter_SPATIAL_71_DRAMA_v090h090_right
|
||||||
|
};
|
||||||
|
dsp_worker(c_dsp_to_ex3d, filters);
|
||||||
|
} else if(worker_id == 1){
|
||||||
|
td_block_fir_filter_t * filters[DSP_WORKER_DATA_CH_COUNT*DSP_WORKER_FILTER_PER_DATA_CH*4] =
|
||||||
|
{
|
||||||
|
&td_block_fir_filter_SPATIAL_71_GAME_v090h045_left, &td_block_fir_filter_SPATIAL_71_GAME_v090h045_right,
|
||||||
|
&td_block_fir_filter_SPATIAL_71_GAME_v090h135_left, &td_block_fir_filter_SPATIAL_71_GAME_v090h135_right,
|
||||||
|
&td_block_fir_filter_SPATIAL_71_GAME_v090h270_left, &td_block_fir_filter_SPATIAL_71_GAME_v090h270_right,
|
||||||
|
|
||||||
|
&td_block_fir_filter_SPATIAL_71_MUSIC_v090h045_left, &td_block_fir_filter_SPATIAL_71_MUSIC_v090h045_right,
|
||||||
|
&td_block_fir_filter_SPATIAL_71_MUSIC_v090h135_left, &td_block_fir_filter_SPATIAL_71_MUSIC_v090h135_right,
|
||||||
|
&td_block_fir_filter_SPATIAL_71_MUSIC_v090h270_left, &td_block_fir_filter_SPATIAL_71_MUSIC_v090h270_right,
|
||||||
|
|
||||||
|
&td_block_fir_filter_SPATIAL_71_MOVIE_v090h045_left, &td_block_fir_filter_SPATIAL_71_MOVIE_v090h045_right,
|
||||||
|
&td_block_fir_filter_SPATIAL_71_MOVIE_v090h135_left, &td_block_fir_filter_SPATIAL_71_MOVIE_v090h135_right,
|
||||||
|
&td_block_fir_filter_SPATIAL_71_MOVIE_v090h270_left, &td_block_fir_filter_SPATIAL_71_MOVIE_v090h270_right,
|
||||||
|
|
||||||
|
0,0,//&td_block_fir_filter_SPATIAL_71_DRAMA_v090h045_left, &td_block_fir_filter_SPATIAL_71_DRAMA_v090h045_right,
|
||||||
|
0,0,//&td_block_fir_filter_SPATIAL_71_DRAMA_v090h135_left, &td_block_fir_filter_SPATIAL_71_DRAMA_v090h135_right,
|
||||||
|
0,0//&td_block_fir_filter_SPATIAL_71_DRAMA_v090h270_left, &td_block_fir_filter_SPATIAL_71_DRAMA_v090h270_right
|
||||||
|
};
|
||||||
|
dsp_worker(c_dsp_to_ex3d, filters);
|
||||||
|
} else {
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
@@ -1,425 +0,0 @@
|
|||||||
// Copyright 2022 XMOS LIMITED.
|
|
||||||
// This Software is subject to the terms of the XMOS Public Licence: Version 1.
|
|
||||||
#ifndef _hid_report_descriptor_h_
|
|
||||||
#define _hid_report_descriptor_h_
|
|
||||||
|
|
||||||
#include "xua_hid_report.h"
|
|
||||||
|
|
||||||
#if 0
|
|
||||||
/* Existing static report descriptor kept for reference */
|
|
||||||
unsigned char hidReportDescriptor[] =
|
|
||||||
{
|
|
||||||
0x05, 0x0c, /* Usage Page (Consumer Device) */
|
|
||||||
0x09, 0x01, /* Usage (Consumer Control) */
|
|
||||||
0xa1, 0x01, /* Collection (Application) */
|
|
||||||
0x15, 0x00, /* Logical Minimum (0) */
|
|
||||||
0x25, 0x01, /* Logical Maximum (1) */
|
|
||||||
0x09, 0xb0, /* Usage (Play) */
|
|
||||||
0x09, 0xb5, /* Usage (Scan Next Track) */
|
|
||||||
0x09, 0xb6, /* Usage (Scan Previous Track) */
|
|
||||||
0x09, 0xe9, /* Usage (Volume Up) */
|
|
||||||
0x09, 0xea, /* Usage (Volume Down) */
|
|
||||||
0x09, 0xe2, /* Usage (Mute) */
|
|
||||||
0x75, 0x01, /* Report Size (1) */
|
|
||||||
0x95, 0x06, /* Report Count (6) */
|
|
||||||
0x81, 0x02, /* Input (Data, Var, Abs) */
|
|
||||||
0x95, 0x02, /* Report Count (2) */
|
|
||||||
0x81, 0x01, /* Input (Cnst, Ary, Abs) */
|
|
||||||
0xc0 /* End collection */
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if 0//AIZIP_DNR == 1
|
|
||||||
/*
|
|
||||||
* Define non-configurable items in the HID Report descriptor.
|
|
||||||
*/
|
|
||||||
static const USB_HID_Short_Item_t hidCollectionApplication = {
|
|
||||||
.header = HID_REPORT_SET_HEADER(1, HID_REPORT_ITEM_TYPE_MAIN, HID_REPORT_ITEM_TAG_COLLECTION),
|
|
||||||
.data = { 0x01, 0x00 } };
|
|
||||||
static const USB_HID_Short_Item_t hidCollectionEnd = {
|
|
||||||
.header = HID_REPORT_SET_HEADER(0, HID_REPORT_ITEM_TYPE_MAIN, HID_REPORT_ITEM_TAG_END_COLLECTION),
|
|
||||||
.data = { 0x00, 0x00 } };
|
|
||||||
|
|
||||||
static const USB_HID_Short_Item_t hidInputConstArray = {
|
|
||||||
.header = HID_REPORT_SET_HEADER(1, HID_REPORT_ITEM_TYPE_MAIN, HID_REPORT_ITEM_TAG_INPUT),
|
|
||||||
.data = { 0x01, 0x00 } };
|
|
||||||
static const USB_HID_Short_Item_t hidInputDataVar = {
|
|
||||||
.header = HID_REPORT_SET_HEADER(1, HID_REPORT_ITEM_TYPE_MAIN, HID_REPORT_ITEM_TAG_INPUT),
|
|
||||||
.data = { 0x02, 0x00 } };
|
|
||||||
static const USB_HID_Short_Item_t hidOutputDataVar = {
|
|
||||||
.header = HID_REPORT_SET_HEADER(1, HID_REPORT_ITEM_TYPE_MAIN, HID_REPORT_ITEM_TAG_OUTPUT),
|
|
||||||
.data = { 0x02, 0x00 } };
|
|
||||||
static const USB_HID_Short_Item_t hidOutputConstArray = {
|
|
||||||
.header = HID_REPORT_SET_HEADER(1, HID_REPORT_ITEM_TYPE_MAIN, HID_REPORT_ITEM_TAG_OUTPUT),
|
|
||||||
.data = { 0x01, 0x00 } };
|
|
||||||
static const USB_HID_Short_Item_t hidReportId0 = {
|
|
||||||
.header = HID_REPORT_SET_HEADER(1, HID_REPORT_ITEM_TYPE_GLOBAL, HID_REPORT_ITEM_TAG_REPORT_ID),
|
|
||||||
.data = { 0x00, 0x00 } };
|
|
||||||
static const USB_HID_Short_Item_t hidReportId1 = {
|
|
||||||
.header = HID_REPORT_SET_HEADER(1, HID_REPORT_ITEM_TYPE_GLOBAL, HID_REPORT_ITEM_TAG_REPORT_ID),
|
|
||||||
.data = { 0x01, 0x00 } };
|
|
||||||
|
|
||||||
static const USB_HID_Short_Item_t hidLogicalMaximum0 = {
|
|
||||||
.header = HID_REPORT_SET_HEADER(1, HID_REPORT_ITEM_TYPE_GLOBAL, HID_REPORT_ITEM_TAG_LOGICAL_MAXIMUM),
|
|
||||||
.data = { 0x00, 0x00 } };
|
|
||||||
static const USB_HID_Short_Item_t hidLogicalMaximum1 = {
|
|
||||||
.header = HID_REPORT_SET_HEADER(1, HID_REPORT_ITEM_TYPE_GLOBAL, HID_REPORT_ITEM_TAG_LOGICAL_MAXIMUM),
|
|
||||||
.data = { 0x01, 0x00 } };
|
|
||||||
static const USB_HID_Short_Item_t hidLogicalMinimum0 = {
|
|
||||||
.header = HID_REPORT_SET_HEADER(1, HID_REPORT_ITEM_TYPE_GLOBAL, HID_REPORT_ITEM_TAG_LOGICAL_MINIMUM),
|
|
||||||
.data = { 0x00, 0x00 } };
|
|
||||||
static const USB_HID_Short_Item_t hidLogicalMaximum0F = {
|
|
||||||
.header = HID_REPORT_SET_HEADER(1, HID_REPORT_ITEM_TYPE_GLOBAL, HID_REPORT_ITEM_TAG_LOGICAL_MAXIMUM),
|
|
||||||
.data = { 0x0f, 0x00 } };
|
|
||||||
static const USB_HID_Short_Item_t hidLogicalMaximumFF = {
|
|
||||||
.header = HID_REPORT_SET_HEADER(2, HID_REPORT_ITEM_TYPE_GLOBAL, HID_REPORT_ITEM_TAG_LOGICAL_MAXIMUM),
|
|
||||||
.data = { 0xFF, 0x00 } };
|
|
||||||
|
|
||||||
static const USB_HID_Short_Item_t hidReportCount1 = {
|
|
||||||
.header = HID_REPORT_SET_HEADER(1, HID_REPORT_ITEM_TYPE_GLOBAL, HID_REPORT_ITEM_TAG_REPORT_COUNT),
|
|
||||||
.data = { 0x01, 0x00 } };
|
|
||||||
static const USB_HID_Short_Item_t hidReportCount2 = {
|
|
||||||
.header = HID_REPORT_SET_HEADER(1, HID_REPORT_ITEM_TYPE_GLOBAL, HID_REPORT_ITEM_TAG_REPORT_COUNT),
|
|
||||||
.data = { 0x02, 0x00 } };
|
|
||||||
static const USB_HID_Short_Item_t hidReportCount6 = {
|
|
||||||
.header = HID_REPORT_SET_HEADER(1, HID_REPORT_ITEM_TYPE_GLOBAL, HID_REPORT_ITEM_TAG_REPORT_COUNT),
|
|
||||||
.data = { 0x06, 0x00 } };
|
|
||||||
static const USB_HID_Short_Item_t hidReportCount63 = {
|
|
||||||
.header = HID_REPORT_SET_HEADER(1, HID_REPORT_ITEM_TYPE_GLOBAL, HID_REPORT_ITEM_TAG_REPORT_COUNT),
|
|
||||||
.data = { 0x3F, 0x00 } };
|
|
||||||
static const USB_HID_Short_Item_t hidReportSize1 = {
|
|
||||||
.header = HID_REPORT_SET_HEADER(1, HID_REPORT_ITEM_TYPE_GLOBAL, HID_REPORT_ITEM_TAG_REPORT_SIZE),
|
|
||||||
.data = { 0x01, 0x00 } };
|
|
||||||
static const USB_HID_Short_Item_t hidReportSize8 = {
|
|
||||||
.header = HID_REPORT_SET_HEADER(1, HID_REPORT_ITEM_TYPE_GLOBAL, HID_REPORT_ITEM_TAG_REPORT_SIZE),
|
|
||||||
.data = { 0x08, 0x00 } };
|
|
||||||
|
|
||||||
static const USB_HID_Short_Item_t hidUsageConsumerControl = {
|
|
||||||
.header = HID_REPORT_SET_HEADER(1, HID_REPORT_ITEM_TYPE_LOCAL, HID_REPORT_ITEM_TAG_USAGE),
|
|
||||||
.data = { 0x01, 0x00 } };
|
|
||||||
|
|
||||||
static const USB_HID_Short_Item_t hidUsageLED = { // BUG: potential bug
|
|
||||||
.header = HID_REPORT_SET_HEADER(1, HID_REPORT_ITEM_TYPE_LOCAL, HID_REPORT_ITEM_TAG_USAGE),
|
|
||||||
.data = { 0x08, 0x00 } };
|
|
||||||
|
|
||||||
static const USB_HID_Short_Item_t hidUsageSpatialControl = {
|
|
||||||
.header = HID_REPORT_SET_HEADER(1, HID_REPORT_ITEM_TYPE_LOCAL, HID_REPORT_ITEM_TAG_USAGE),
|
|
||||||
.data = { 0x00, 0x00 } };
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Define the HID Report Descriptor Item, Usage Page, Report ID and length for each HID Report
|
|
||||||
* For internal purposes, a report element with ID of 0 must be included if report IDs are not being used.
|
|
||||||
*/
|
|
||||||
static const USB_HID_Report_Element_t hidReportPageConsumer = {
|
|
||||||
.item.header = HID_REPORT_SET_HEADER(1, HID_REPORT_ITEM_TYPE_GLOBAL, HID_REPORT_ITEM_TAG_USAGE_PAGE),
|
|
||||||
.item.data = { USB_HID_USAGE_PAGE_ID_CONSUMER, 0x00 },
|
|
||||||
.location = HID_REPORT_SET_LOC( 0, 1, 0, 0 )
|
|
||||||
};
|
|
||||||
|
|
||||||
static const USB_HID_Report_Element_t hidReportPageSpatial = {
|
|
||||||
.item.header = HID_REPORT_SET_HEADER(1, HID_REPORT_ITEM_TYPE_GLOBAL, HID_REPORT_ITEM_TAG_USAGE_PAGE),
|
|
||||||
.item.data = { USB_HID_USAGE_PAGE_ID_GENERIC_DESKTOP, 0x00 },
|
|
||||||
.location = HID_REPORT_SET_LOC( 0, 1, 0, 0 )
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Define configurable items in the HID Report descriptor.
|
|
||||||
*/
|
|
||||||
static USB_HID_Report_Element_t hidUsageByte0Bit5 = {
|
|
||||||
.item.header = HID_REPORT_SET_HEADER(1, HID_REPORT_ITEM_TYPE_LOCAL, HID_REPORT_ITEM_TAG_USAGE),
|
|
||||||
.item.data = { 0xE2, 0x00 },
|
|
||||||
.location = HID_REPORT_SET_LOC(0, 0, 0, 5)
|
|
||||||
}; // Mute
|
|
||||||
static USB_HID_Report_Element_t hidUsageByte0Bit4 = {
|
|
||||||
.item.header = HID_REPORT_SET_HEADER(1, HID_REPORT_ITEM_TYPE_LOCAL, HID_REPORT_ITEM_TAG_USAGE),
|
|
||||||
.item.data = { 0xEA, 0x00 },
|
|
||||||
.location = HID_REPORT_SET_LOC(0, 0, 0, 4)
|
|
||||||
}; // Vol-
|
|
||||||
static USB_HID_Report_Element_t hidUsageByte0Bit3 = {
|
|
||||||
.item.header = HID_REPORT_SET_HEADER(1, HID_REPORT_ITEM_TYPE_LOCAL, HID_REPORT_ITEM_TAG_USAGE),
|
|
||||||
.item.data = { 0xE9, 0x00 },
|
|
||||||
.location = HID_REPORT_SET_LOC(0, 0, 0, 3)
|
|
||||||
}; // Vol+
|
|
||||||
static USB_HID_Report_Element_t hidUsageByte0Bit2 = {
|
|
||||||
.item.header = HID_REPORT_SET_HEADER(1, HID_REPORT_ITEM_TYPE_LOCAL, HID_REPORT_ITEM_TAG_USAGE),
|
|
||||||
.item.data = { 0xB6, 0x00 },
|
|
||||||
.location = HID_REPORT_SET_LOC(0, 0, 0, 2)
|
|
||||||
}; // Scan Prev
|
|
||||||
static USB_HID_Report_Element_t hidUsageByte0Bit1 = {
|
|
||||||
.item.header = HID_REPORT_SET_HEADER(1, HID_REPORT_ITEM_TYPE_LOCAL, HID_REPORT_ITEM_TAG_USAGE),
|
|
||||||
.item.data = { 0xB5, 0x00 },
|
|
||||||
.location = HID_REPORT_SET_LOC(0, 0, 0, 1)
|
|
||||||
}; // Scan Next
|
|
||||||
static USB_HID_Report_Element_t hidUsageByte0Bit0 = {
|
|
||||||
.item.header = HID_REPORT_SET_HEADER(1, HID_REPORT_ITEM_TYPE_LOCAL, HID_REPORT_ITEM_TAG_USAGE),
|
|
||||||
.item.data = { 0xCD, 0x00 },
|
|
||||||
.location = HID_REPORT_SET_LOC(0, 0, 0, 0)
|
|
||||||
}; // Play/Pause
|
|
||||||
|
|
||||||
static USB_HID_Report_Element_t hidUsageUnassigned = {
|
|
||||||
.item.header = HID_REPORT_SET_HEADER(1, HID_REPORT_ITEM_TYPE_LOCAL, HID_REPORT_ITEM_TAG_USAGE),
|
|
||||||
.item.data = { 0x00, 0x00 },
|
|
||||||
.location = HID_REPORT_SET_LOC(1, 64, 0, 0)
|
|
||||||
}; //
|
|
||||||
|
|
||||||
/*
|
|
||||||
* List the configurable elements in the HID Report descriptor.
|
|
||||||
*/
|
|
||||||
static USB_HID_Report_Element_t* const hidConfigurableElements[] = {
|
|
||||||
&hidUsageByte0Bit0,
|
|
||||||
&hidUsageByte0Bit1,
|
|
||||||
&hidUsageByte0Bit2,
|
|
||||||
&hidUsageByte0Bit3,
|
|
||||||
&hidUsageByte0Bit4,
|
|
||||||
&hidUsageByte0Bit5,
|
|
||||||
&hidUsageUnassigned
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
|
||||||
* List HID Reports, one per Report ID.
|
|
||||||
* If not using report IDs - still have one with report ID 0
|
|
||||||
*/
|
|
||||||
static const USB_HID_Report_Element_t* const hidReports[] = {
|
|
||||||
&hidReportPageConsumer
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
|
||||||
* List all items in the HID Report descriptor.
|
|
||||||
*/
|
|
||||||
static const USB_HID_Short_Item_t* const hidReportDescriptorItems[] = {
|
|
||||||
#if 1
|
|
||||||
&(hidReportPageConsumer.item),
|
|
||||||
&hidUsageConsumerControl,
|
|
||||||
&hidCollectionApplication,
|
|
||||||
|
|
||||||
// &hidReportId1,
|
|
||||||
&hidLogicalMinimum0,
|
|
||||||
&hidLogicalMaximum1,
|
|
||||||
&(hidUsageByte0Bit0.item),
|
|
||||||
&(hidUsageByte0Bit1.item),
|
|
||||||
&(hidUsageByte0Bit2.item),
|
|
||||||
&(hidUsageByte0Bit3.item),
|
|
||||||
&(hidUsageByte0Bit4.item),
|
|
||||||
&(hidUsageByte0Bit5.item),
|
|
||||||
&hidReportSize1,
|
|
||||||
&hidReportCount6,
|
|
||||||
&hidInputDataVar,
|
|
||||||
&hidLogicalMaximum0,
|
|
||||||
&hidReportCount2,
|
|
||||||
&hidInputConstArray,
|
|
||||||
|
|
||||||
// LED Output Report
|
|
||||||
&hidUsageLED, //0x05, 0x08, // Usage Page (LED)
|
|
||||||
&hidLogicalMinimum0, //0x15, 0x00, // Logical Minimum (0)
|
|
||||||
&hidLogicalMaximum0F, //0x25, 0x0F, // Logical Minimum (16) - 8 bits */
|
|
||||||
&hidReportSize8, //0x75, 0x08, // Report Size (8 bits)
|
|
||||||
&hidReportCount1, //0x95, 0x01, // Report Count (1)
|
|
||||||
&hidOutputDataVar, //0x91, 0x02, // Output (Data, Var, Abs) - 1 byte for LED control
|
|
||||||
&hidCollectionEnd,
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if 0
|
|
||||||
&(hidReportPageConsumer.item),
|
|
||||||
&hidUsageConsumerControl,
|
|
||||||
&hidCollectionApplication,
|
|
||||||
&hidReportId1,
|
|
||||||
&hidLogicalMinimum0,
|
|
||||||
&hidLogicalMaximumFF,
|
|
||||||
&(hidUsageUnassigned.item),
|
|
||||||
&hidReportSize8,
|
|
||||||
&hidReportCount63,
|
|
||||||
&hidOutputDataVar,
|
|
||||||
&(hidUsageUnassigned.item),
|
|
||||||
&hidInputDataVar,
|
|
||||||
&hidCollectionEnd
|
|
||||||
#endif
|
|
||||||
};
|
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Define non-configurable items in the HID Report descriptor.
|
|
||||||
*/
|
|
||||||
static const USB_HID_Short_Item_t hidCollectionApplication = {
|
|
||||||
.header = HID_REPORT_SET_HEADER(1, HID_REPORT_ITEM_TYPE_MAIN, HID_REPORT_ITEM_TAG_COLLECTION),
|
|
||||||
.data = { 0x01, 0x00 } };
|
|
||||||
static const USB_HID_Short_Item_t hidCollectionEnd = {
|
|
||||||
.header = HID_REPORT_SET_HEADER(0, HID_REPORT_ITEM_TYPE_MAIN, HID_REPORT_ITEM_TAG_END_COLLECTION),
|
|
||||||
.data = { 0x00, 0x00 } };
|
|
||||||
|
|
||||||
static const USB_HID_Short_Item_t hidInputConstArray = {
|
|
||||||
.header = HID_REPORT_SET_HEADER(1, HID_REPORT_ITEM_TYPE_MAIN, HID_REPORT_ITEM_TAG_INPUT),
|
|
||||||
.data = { 0x01, 0x00 } };
|
|
||||||
static const USB_HID_Short_Item_t hidInputDataVar = {
|
|
||||||
.header = HID_REPORT_SET_HEADER(1, HID_REPORT_ITEM_TYPE_MAIN, HID_REPORT_ITEM_TAG_INPUT),
|
|
||||||
.data = { 0x02, 0x00 } };
|
|
||||||
|
|
||||||
static const USB_HID_Short_Item_t hidOutputDataVar = {
|
|
||||||
.header = HID_REPORT_SET_HEADER(1, HID_REPORT_ITEM_TYPE_MAIN, HID_REPORT_ITEM_TAG_OUTPUT),
|
|
||||||
.data = { 0x02, 0x00 } };
|
|
||||||
static const USB_HID_Short_Item_t hidOutputConstArray = {
|
|
||||||
.header = HID_REPORT_SET_HEADER(1, HID_REPORT_ITEM_TYPE_MAIN, HID_REPORT_ITEM_TAG_OUTPUT),
|
|
||||||
.data = { 0x01, 0x00 } };
|
|
||||||
|
|
||||||
static const USB_HID_Short_Item_t hidReportId1 = {
|
|
||||||
.header = HID_REPORT_SET_HEADER(1, HID_REPORT_ITEM_TYPE_GLOBAL, HID_REPORT_ITEM_TAG_REPORT_ID),
|
|
||||||
.data = { 0x01, 0x00 } };
|
|
||||||
static const USB_HID_Short_Item_t hidReportId24 = {
|
|
||||||
.header = HID_REPORT_SET_HEADER(1, HID_REPORT_ITEM_TYPE_GLOBAL, HID_REPORT_ITEM_TAG_REPORT_ID),
|
|
||||||
.data = { 0x18, 0x00 } };
|
|
||||||
static const USB_HID_Short_Item_t hidReportId25 = {
|
|
||||||
.header = HID_REPORT_SET_HEADER(1, HID_REPORT_ITEM_TYPE_GLOBAL, HID_REPORT_ITEM_TAG_REPORT_ID),
|
|
||||||
.data = { 0x19, 0x00 } };
|
|
||||||
|
|
||||||
static const USB_HID_Short_Item_t hidLogicalMaximum0 = {
|
|
||||||
.header = HID_REPORT_SET_HEADER(1, HID_REPORT_ITEM_TYPE_GLOBAL, HID_REPORT_ITEM_TAG_LOGICAL_MAXIMUM),
|
|
||||||
.data = { 0x00, 0x00 } };
|
|
||||||
static const USB_HID_Short_Item_t hidLogicalMaximum1 = {
|
|
||||||
.header = HID_REPORT_SET_HEADER(1, HID_REPORT_ITEM_TYPE_GLOBAL, HID_REPORT_ITEM_TAG_LOGICAL_MAXIMUM),
|
|
||||||
.data = { 0x01, 0x00 } };
|
|
||||||
static const USB_HID_Short_Item_t hidLogicalMaximum0F = {
|
|
||||||
.header = HID_REPORT_SET_HEADER(1, HID_REPORT_ITEM_TYPE_GLOBAL, HID_REPORT_ITEM_TAG_LOGICAL_MAXIMUM),
|
|
||||||
.data = { 0x0f, 0x00 } };
|
|
||||||
static const USB_HID_Short_Item_t hidLogicalMaximumFF = {
|
|
||||||
.header = HID_REPORT_SET_HEADER(2, HID_REPORT_ITEM_TYPE_GLOBAL, HID_REPORT_ITEM_TAG_LOGICAL_MAXIMUM),
|
|
||||||
.data = { 0xFF, 0x00 } };
|
|
||||||
static const USB_HID_Short_Item_t hidLogicalMinimum0 = {
|
|
||||||
.header = HID_REPORT_SET_HEADER(1, HID_REPORT_ITEM_TYPE_GLOBAL, HID_REPORT_ITEM_TAG_LOGICAL_MINIMUM),
|
|
||||||
.data = { 0x00, 0x00 } };
|
|
||||||
|
|
||||||
static const USB_HID_Short_Item_t hidReportCount1 = {
|
|
||||||
.header = HID_REPORT_SET_HEADER(1, HID_REPORT_ITEM_TYPE_GLOBAL, HID_REPORT_ITEM_TAG_REPORT_COUNT),
|
|
||||||
.data = { 0x01, 0x00 } };
|
|
||||||
static const USB_HID_Short_Item_t hidReportCount2 = {
|
|
||||||
.header = HID_REPORT_SET_HEADER(1, HID_REPORT_ITEM_TYPE_GLOBAL, HID_REPORT_ITEM_TAG_REPORT_COUNT),
|
|
||||||
.data = { 0x02, 0x00 } };
|
|
||||||
static const USB_HID_Short_Item_t hidReportCount6 = {
|
|
||||||
.header = HID_REPORT_SET_HEADER(1, HID_REPORT_ITEM_TYPE_GLOBAL, HID_REPORT_ITEM_TAG_REPORT_COUNT),
|
|
||||||
.data = { 0x06, 0x00 } };
|
|
||||||
static const USB_HID_Short_Item_t hidReportCount63 = {
|
|
||||||
.header = HID_REPORT_SET_HEADER(1, HID_REPORT_ITEM_TYPE_GLOBAL, HID_REPORT_ITEM_TAG_REPORT_COUNT),
|
|
||||||
.data = { 0x3F, 0x00 } };
|
|
||||||
static const USB_HID_Short_Item_t hidReportSize1 = {
|
|
||||||
.header = HID_REPORT_SET_HEADER(1, HID_REPORT_ITEM_TYPE_GLOBAL, HID_REPORT_ITEM_TAG_REPORT_SIZE),
|
|
||||||
.data = { 0x01, 0x00 } };
|
|
||||||
static const USB_HID_Short_Item_t hidReportSize8 = {
|
|
||||||
.header = HID_REPORT_SET_HEADER(1, HID_REPORT_ITEM_TYPE_GLOBAL, HID_REPORT_ITEM_TAG_REPORT_SIZE),
|
|
||||||
.data = { 0x08, 0x00 } };
|
|
||||||
static const USB_HID_Short_Item_t hidUsageConsumerControl = {
|
|
||||||
.header = HID_REPORT_SET_HEADER(1, HID_REPORT_ITEM_TYPE_LOCAL, HID_REPORT_ITEM_TAG_USAGE),
|
|
||||||
.data = { 0x01, 0x00 } };
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Define the HID Report Descriptor Item, Usage Page, Report ID and length for each HID Report
|
|
||||||
* For internal purposes, a report element with ID of 0 must be included if report IDs are not being used.
|
|
||||||
*/
|
|
||||||
static const USB_HID_Report_Element_t hidReportPageConsumer = {
|
|
||||||
.item.header = HID_REPORT_SET_HEADER(1, HID_REPORT_ITEM_TYPE_GLOBAL, HID_REPORT_ITEM_TAG_USAGE_PAGE),
|
|
||||||
.item.data = { USB_HID_USAGE_PAGE_ID_CONSUMER, 0x00 },
|
|
||||||
.location = HID_REPORT_SET_LOC( 1, 64, 0, 0 )
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Define configurable items in the HID Report descriptor.
|
|
||||||
*/
|
|
||||||
static USB_HID_Report_Element_t hidUsageByte0Bit5 = {
|
|
||||||
.item.header = HID_REPORT_SET_HEADER(1, HID_REPORT_ITEM_TYPE_LOCAL, HID_REPORT_ITEM_TAG_USAGE),
|
|
||||||
.item.data = { 0xE2, 0x00 },
|
|
||||||
.location = HID_REPORT_SET_LOC(0, 0, 0, 5)
|
|
||||||
}; // Mute
|
|
||||||
static USB_HID_Report_Element_t hidUsageByte0Bit4 = {
|
|
||||||
.item.header = HID_REPORT_SET_HEADER(1, HID_REPORT_ITEM_TYPE_LOCAL, HID_REPORT_ITEM_TAG_USAGE),
|
|
||||||
.item.data = { 0xEA, 0x00 },
|
|
||||||
.location = HID_REPORT_SET_LOC(0, 0, 0, 4)
|
|
||||||
}; // Vol-
|
|
||||||
static USB_HID_Report_Element_t hidUsageByte0Bit3 = {
|
|
||||||
.item.header = HID_REPORT_SET_HEADER(1, HID_REPORT_ITEM_TYPE_LOCAL, HID_REPORT_ITEM_TAG_USAGE),
|
|
||||||
.item.data = { 0xE9, 0x00 },
|
|
||||||
.location = HID_REPORT_SET_LOC(0, 0, 0, 3)
|
|
||||||
}; // Vol+
|
|
||||||
static USB_HID_Report_Element_t hidUsageByte0Bit2 = {
|
|
||||||
.item.header = HID_REPORT_SET_HEADER(1, HID_REPORT_ITEM_TYPE_LOCAL, HID_REPORT_ITEM_TAG_USAGE),
|
|
||||||
.item.data = { 0xB6, 0x00 },
|
|
||||||
.location = HID_REPORT_SET_LOC(0, 0, 0, 2)
|
|
||||||
}; // Scan Prev
|
|
||||||
static USB_HID_Report_Element_t hidUsageByte0Bit1 = {
|
|
||||||
.item.header = HID_REPORT_SET_HEADER(1, HID_REPORT_ITEM_TYPE_LOCAL, HID_REPORT_ITEM_TAG_USAGE),
|
|
||||||
.item.data = { 0xB5, 0x00 },
|
|
||||||
.location = HID_REPORT_SET_LOC(0, 0, 0, 1)
|
|
||||||
}; // Scan Next
|
|
||||||
static USB_HID_Report_Element_t hidUsageByte0Bit0 = {
|
|
||||||
.item.header = HID_REPORT_SET_HEADER(1, HID_REPORT_ITEM_TYPE_LOCAL, HID_REPORT_ITEM_TAG_USAGE),
|
|
||||||
.item.data = { 0xCD, 0x00 },
|
|
||||||
.location = HID_REPORT_SET_LOC(0, 0, 0, 0)
|
|
||||||
}; // Play/Pause
|
|
||||||
|
|
||||||
static USB_HID_Report_Element_t hidUsageUnassigned = {
|
|
||||||
.item.header = HID_REPORT_SET_HEADER(1, HID_REPORT_ITEM_TYPE_LOCAL, HID_REPORT_ITEM_TAG_USAGE),
|
|
||||||
.item.data = { 0x00, 0x00 },
|
|
||||||
.location = HID_REPORT_SET_LOC(1, 64, 0, 0)
|
|
||||||
}; //
|
|
||||||
|
|
||||||
/*
|
|
||||||
* List the configurable elements in the HID Report descriptor.
|
|
||||||
*/
|
|
||||||
static USB_HID_Report_Element_t* const hidConfigurableElements[] = {
|
|
||||||
// &hidUsageByte0Bit0,
|
|
||||||
// &hidUsageByte0Bit1,
|
|
||||||
// &hidUsageByte0Bit2,
|
|
||||||
// &hidUsageByte0Bit3,
|
|
||||||
// &hidUsageByte0Bit4,
|
|
||||||
// &hidUsageByte0Bit5
|
|
||||||
&hidUsageUnassigned
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
|
||||||
* List HID Reports, one per Report ID.
|
|
||||||
* If not using report IDs - still have one with report ID 0
|
|
||||||
*/
|
|
||||||
static const USB_HID_Report_Element_t* const hidReports[] = {
|
|
||||||
&hidReportPageConsumer
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
|
||||||
* List all items in the HID Report descriptor.
|
|
||||||
*/
|
|
||||||
static const USB_HID_Short_Item_t* const hidReportDescriptorItems[] = {
|
|
||||||
&(hidReportPageConsumer.item),
|
|
||||||
&hidUsageConsumerControl,
|
|
||||||
&hidCollectionApplication,
|
|
||||||
&hidReportId1,
|
|
||||||
&hidLogicalMinimum0,
|
|
||||||
&hidLogicalMaximumFF,
|
|
||||||
&(hidUsageUnassigned.item),
|
|
||||||
&hidReportSize8,
|
|
||||||
&hidReportCount63,
|
|
||||||
&hidOutputDataVar,
|
|
||||||
&(hidUsageUnassigned.item),
|
|
||||||
&hidInputDataVar,
|
|
||||||
|
|
||||||
// &hidLogicalMinimum0,
|
|
||||||
// &hidLogicalMaximum1,
|
|
||||||
// &(hidUsageByte0Bit0.item),
|
|
||||||
// &(hidUsageByte0Bit1.item),
|
|
||||||
// &(hidUsageByte0Bit2.item),
|
|
||||||
// &(hidUsageByte0Bit3.item),
|
|
||||||
// &(hidUsageByte0Bit4.item),
|
|
||||||
// &(hidUsageByte0Bit5.item),
|
|
||||||
// &hidReportSize1,
|
|
||||||
// &hidReportCount6,
|
|
||||||
// &hidInputDataVar,
|
|
||||||
// &hidLogicalMaximum0,
|
|
||||||
// &hidReportCount2,
|
|
||||||
// &hidInputConstArray,
|
|
||||||
&hidCollectionEnd
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif // AIZIP_DNR
|
|
||||||
/*
|
|
||||||
* Define the number of HID Reports
|
|
||||||
* Due to XC not supporting designated initializers, this constant has a hard-coded value.
|
|
||||||
* It must equal ( sizeof hidReports / sizeof ( USB_HID_Report_Element_t* ))
|
|
||||||
*/
|
|
||||||
#define HID_REPORT_COUNT ( 1 )
|
|
||||||
|
|
||||||
#endif // _hid_report_descriptor_h_
|
|
||||||
Reference in New Issue
Block a user