Refactor: Separate XUA lite and app code

This commit is contained in:
Oscar Bailey
2019-02-27 11:05:25 +00:00
parent b12aeac264
commit 0b926fd907
12 changed files with 18 additions and 12 deletions

View File

@@ -8,6 +8,7 @@
#include "mic_array.h"
#include "audio_config.h"
#include "pdm_mic.h"
#include "xua_buffer_lite.h"
//Globally declared for 64b alignment
int mic_decimator_fir_data_array[8][THIRD_STAGE_COEFS_PER_STAGE * PDM_MAX_DECIMATION] = {{0}};
@@ -35,8 +36,6 @@ void AudioHub(server i2s_frame_callback_if i2s,
mic_array_decimator_configure(c_ds_output, decimatorCount, dc);
mic_array_init_time_domain_frame(c_ds_output, decimatorCount, buffer, mic_audio_frame, dc);
UserBufferManagementInit();
// Used for debug
//int saw = 0;
@@ -63,12 +62,7 @@ void AudioHub(server i2s_frame_callback_if i2s,
restart = I2S_NO_RESTART; // Keep on looping
timer tmr; int t0, t1; tmr :> t0;
UserBufferManagement((unsigned *) raw_mics, (unsigned *) samples_out);
//Transfer samples. Takes about 25 ticks
for (int i = 0; i < NUM_USB_CHAN_OUT; i++) c_audio :> samples_out[i];
if (XUA_ADAPTIVE) c_audio :> clock_nudge;
for (int i = 0; i < NUM_USB_CHAN_IN; i++) c_audio <: raw_mics[i];
XUA_transfer_samples(c_audio, (unsigned *) samples_out, (unsigned *) raw_mics, (clock_nudge, int));
//Grab mics. Takes about 200 ticks currently
current = mic_array_get_next_time_domain_frame(c_ds_output, decimatorCount, buffer, mic_audio_frame, dc);

View File

@@ -9,7 +9,7 @@ def configure(conf):
def build(bld):
target_path = 'bin/' + bld.options.target
bld.env.TARGET_ARCH ='src/RPI_HAT_60QFN.xn'
bld.env.TARGET_ARCH ='config/RPI_HAT_60QFN.xn'
bld.env.XSCOPE = bld.path.find_resource('config.xscope')
depends_on = ['lib_xua','lib_i2s','lib_xud','lib_mic_array', 'lib_i2c']
#bld.env.XCC_FLAGS = ['-O2', '-g', '-Wall', '-fcmdline-buffer-bytes=512', '-report', '-DDISABLE_STAGE_C']
@@ -20,5 +20,7 @@ def build(bld):
if bld.options.debug:
bld.env.XCC_FLAGS.append('-DDEBUG')
source = bld.path.ant_glob(['src/**/*.xc', 'src/**/*.c'])
bld.program(source=source, depends_on=depends_on,target=target_path)
source = bld.path.ant_glob(['src/**/*.xc', 'src/**/*.c',
'xua_lite/**/*.xc', 'xua_lite/**/*.c'])
includes = ['config']
bld.program(source=source, includes=includes, depends_on=depends_on,target=target_path)

View File

@@ -22,4 +22,14 @@
unsafe void XUA_Buffer_lite(chanend c_ep0_out, chanend c_ep0_in, chanend c_aud_out, chanend ?c_feedback, chanend c_aud_in, chanend c_sof, in port p_for_mclk_count, streaming chanend c_audio_hub);
[[combinable]]
unsafe void XUA_Buffer_lite2(server ep0_control_if i_ep0_ctl, chanend c_aud_out, chanend ?c_feedback, chanend c_aud_in, chanend c_sof, in port p_for_mclk_count, streaming chanend c_audio_hub);
unsafe void XUA_Buffer_lite2(server ep0_control_if i_ep0_ctl, chanend c_aud_out, chanend ?c_feedback, chanend c_aud_in, chanend c_sof, in port p_for_mclk_count, streaming chanend c_audio_hub);
static inline void XUA_transfer_samples(streaming chanend c_audio,
unsigned sampsFromUsbToAudio[],
unsigned sampsFromAudioToUsb[],
int &clock_nudge) {
//Transfer samples. Takes about 25 ticks
for (int i = 0; i < NUM_USB_CHAN_OUT; i++) c_audio :> sampsFromUsbToAudio[i];
if (XUA_ADAPTIVE) c_audio :> clock_nudge;
for (int i = 0; i < NUM_USB_CHAN_IN; i++) c_audio <: sampsFromAudioToUsb[i];
}