From 093beb302b1041447e85d4c17d142e5bdbd2cbd5 Mon Sep 17 00:00:00 2001 From: xross Date: Thu, 29 Mar 2018 18:01:32 +0100 Subject: [PATCH] Added missing audiohub_adat.h --- lib_xua/src/core/audiohub/audiohub_adat.h | 48 +++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 lib_xua/src/core/audiohub/audiohub_adat.h diff --git a/lib_xua/src/core/audiohub/audiohub_adat.h b/lib_xua/src/core/audiohub/audiohub_adat.h new file mode 100644 index 00000000..b94acddf --- /dev/null +++ b/lib_xua/src/core/audiohub/audiohub_adat.h @@ -0,0 +1,48 @@ +#pragma unsafe arrays +static inline void TransferAdatTxSamples(chanend c_adat_out, const unsigned samplesFromHost[], int smux, int handshake) +{ + + /* Do some re-arranging for SMUX.. */ + unsafe + { + unsigned * unsafe samplesFromHostAdat = &samplesFromHost[ADAT_TX_INDEX]; + + /* Note, when smux == 1 this loop just does a straight 1:1 copy */ + //if(smux != 1) + { + int adatSampleIndex = adatCounter; + for(int i = 0; i < (8/smux); i++) + { + adatSamples[adatSampleIndex] = samplesFromHostAdat[i]; + adatSampleIndex += smux; + } + } + } + + adatCounter++; + + if(adatCounter == smux) + { + +#ifdef ADAT_TX_USE_SHARED_BUFF + unsafe + { + /* Wait for ADAT core to be done with buffer */ + /* Note, we are "running ahead" of the ADAT core */ + inuint(c_adat_out); + + /* Send buffer pointer over to ADAT core */ + volatile unsigned * unsafe samplePtr = &adatSamples; + outuint(c_adat_out, (unsigned) samplePtr); + } +#else +#pragma loop unroll + for (int i = 0; i < 8; i++) + { + outuint(c_adat_out, samplesFromHost[ADAT_TX_INDEX + i]); + } +#endif + adatCounter = 0; + } +} +#endif