Merge: master -> DEV_X200_BRINGUP

This commit is contained in:
Ross Owen
2015-03-23 12:57:57 +00:00
18 changed files with 126 additions and 1718 deletions

View File

@@ -1,12 +1,28 @@
sc_usb_audio Change Log
=======================
6.11.2
------
- RESOLVED: (Major) Enumeration issue when MAX_MIX_COUNT > 0 only. Introduced in mixer
optimisations in 6.11.0. Only affects designs using mixer functionality.
- RESOLVED: (Normal) Audio buffering request system modified such that the mixer output is
not silent when in underflow case (i.e. host output stream not active) This issue was
introduced with the addition of DSD functionality and only affects designs using
mixer functionality.
- RESOLVED: (Minor) Potential build issue due to duplicate labels in inline asm in
set_interrupt_handler macro
- RESOLVED: (Minor) BCD_DEVICE define in devicedefines.h now guarded by ifndef (caused issues
with DFU test build configs.
- RESOLVED: (Minor) String descriptor for Clock Selector unit incorrectly reported
- CHANGE: HID report descriptor defines added to shared user_hid.h
- CHANGE: Now uses module_adat_rx from sc_adat (local module_usb_audio_adat removed)
6.11.1
------
- ADDED: ADAT transmit functionality, including SMUX. See ADAT_TX and ADAT_TX_INDEX.
- RESOLVED: Build issue with CODEC_MASTER (xCore is I2S slave) enabled
- RESOLVED: Channel ordering issue in when TDM and CODEC_MASTER mode enabled
- RESOLVED: DFU fails when SPDIF_RX enabled due to clock block being shared between SPDIF
- RESOLVED: (Normal) Build issue with CODEC_MASTER (xCore is I2S slave) enabled
- RESOLVED: (Minor) Channel ordering issue in when TDM and CODEC_MASTER mode enabled
- RESOLVED: (Normal) DFU fails when SPDIF_RX enabled due to clock block being shared between SPDIF
core and FlashLib
6.11.0

View File

@@ -219,109 +219,85 @@ static inline void TransferAdatTxSamples(chanend c_adat_out, const unsigned samp
static inline unsigned DoSampleTransfer(chanend c_out, int readBuffNo, unsigned underflowWord)
{
unsigned command;
unsigned underflow;
outuint(c_out, 0);
outuint(c_out, underflowWord);
/* Check for sample freq change (or other command) or new samples from mixer*/
if(testct(c_out))
{
unsigned command = inct(c_out);
/* Check for sample freq change (or other command) or new samples from mixer*/
if(testct(c_out))
{
unsigned command = inct(c_out);
#ifndef CODEC_MASTER
// Set clocks low
p_lrclk <: 0;
p_bclk <: 0;
// Set clocks low
p_lrclk <: 0;
p_bclk <: 0;
#if(DSD_CHANS_DAC != 0)
/* DSD Clock might not be shared with lrclk or bclk... */
p_dsd_clk <: 0;
p_dsd_clk <: 0;
#endif
#endif
#if (DSD_CHANS_DAC > 0)
if(dsdMode == DSD_MODE_DOP)
dsdMode = DSD_MODE_OFF;
if(dsdMode == DSD_MODE_DOP)
dsdMode = DSD_MODE_OFF;
#endif
#pragma xta endpoint "received_command"
return command;
}
else
{
underflow = inuint(c_out);
}
else
{
#ifndef MIXER // Interfaces straight to decouple()
#if NUM_USB_CHAN_IN > 0
#pragma loop unroll
for(int i = 0; i < I2S_CHANS_ADC; i++)
{
if(readBuffNo)
outuint(c_out, samplesIn_1[i]);
else
outuint(c_out, samplesIn_0[i]);
}
/* Send over the digi channels - no odd buffering required */
#pragma loop unroll
for(int i = I2S_CHANS_ADC; i < NUM_USB_CHAN_IN; i++)
{
for(int i = 0; i < I2S_CHANS_ADC; i++)
{
if(readBuffNo)
outuint(c_out, samplesIn_1[i]);
else
outuint(c_out, samplesIn_0[i]);
}
}
/* Send over the digi channels - no odd buffering required */
#pragma loop unroll
for(int i = I2S_CHANS_ADC; i < NUM_USB_CHAN_IN; i++)
{
outuint(c_out, samplesIn_0[i]);
}
#endif
#if NUM_USB_CHAN_OUT > 0
if(underflow)
{
#pragma loop unroll
for(int i = 0; i < NUM_USB_CHAN_OUT; i++)
{
samplesOut[i] = underflowWord;
}
}
else
{
#pragma loop unroll
for(int i = 0; i < NUM_USB_CHAN_OUT; i++)
{
samplesOut[i] = inuint(c_out);
}
}
for(int i = 0; i < NUM_USB_CHAN_OUT; i++)
{
samplesOut[i] = inuint(c_out);
}
#endif
#else /* ifndef MIXER */
#if NUM_USB_CHAN_OUT > 0
if(underflow)
{
for(int i = 0; i < NUM_USB_CHAN_OUT; i++)
{
samplesOut[i] = underflowWord;
}
}
else
{
#pragma loop unroll
for(int i = 0; i < NUM_USB_CHAN_OUT; i++)
{
int tmp = inuint(c_out);
samplesOut[i] = tmp;
}
}
for(int i = 0; i < NUM_USB_CHAN_OUT; i++)
{
int tmp = inuint(c_out);
samplesOut[i] = tmp;
}
#endif
#if NUM_USB_CHAN_IN > 0
#pragma loop unroll
for(int i = 0; i < I2S_CHANS_ADC; i++)
{
if(readBuffNo)
outuint(c_out, samplesIn_1[i]);
else
outuint(c_out, samplesIn_0[i]);
}
/* Send over the digi channels - no odd buffering required */
#pragma loop unroll
for(int i = I2S_CHANS_ADC; i < NUM_USB_CHAN_IN; i++)
{
for(int i = 0; i < I2S_CHANS_ADC; i++)
{
if(readBuffNo)
outuint(c_out, samplesIn_1[i]);
else
outuint(c_out, samplesIn_0[i]);
}
#endif
#endif
}
/* Send over the digi channels - no odd buffering required */
#pragma loop unroll
for(int i = I2S_CHANS_ADC; i < NUM_USB_CHAN_IN; i++)
{
outuint(c_out, samplesIn_0[i]);
}
#endif
#endif
}
return 0;
return 0;
}
@@ -453,9 +429,6 @@ unsigned static deliver(chanend c_out, chanend ?c_spd_out,
#if (I2S_CHANS_ADC != 0) || defined(SPDIF)
unsigned sample;
#endif
unsigned underflow = 0;
#if NUM_USB_CHAN_OUT > 0
#endif
//#if NUM_USB_CHAN_IN > 0
/* Since DAC and ADC buffered ports off by one sample we buffer previous ADC frame */

View File

@@ -479,8 +479,9 @@
*
* Default: XMOS USB Audio Release version (e.g. 0x0651 for 6.5.1).
*/
#ifndef BCD_DEVICE
#define BCD_DEVICE ((BCD_DEVICE_J << 8) | ((BCD_DEVICE_M & 0xF) << 4) | (BCD_DEVICE_N & 0xF))
#endif
/**
* @brief Number of supported output stream formats.

View File

@@ -945,7 +945,7 @@ USB_Config_Descriptor_Audio2_t cfgDesc_Audio2=
ID_CLKSRC_ADAT, /* baCSourceID */
#endif
.bmControl = 0x03,
.iClockSelector = 13, /* TODO Shoudn't be hard-coded */
.iClockSelector = offsetof(StringDescTable_t, clockSelectorStr)/sizeof(char *),
},
#if (NUM_USB_CHAN_OUT > 0)

View File

@@ -38,7 +38,7 @@
#endif
#ifdef ADAT_RX
#include "adatreceiver.h"
#include "adat_rx.h"
#endif
#include "clocking.h"

View File

@@ -201,9 +201,8 @@ static inline void GiveSamplesToHost(chanend c, xc_ptr ptr, xc_ptr multIn)
}
#pragma unsafe arrays
static inline void GetSamplesFromHost(chanend c, unsigned underflow)
static inline void GetSamplesFromHost(chanend c)
{
if(!underflow)
{
#pragma loop unroll
for (int i=0; i<NUM_USB_CHAN_OUT; i++)
@@ -245,11 +244,8 @@ static inline void GetSamplesFromHost(chanend c, unsigned underflow)
}
#pragma unsafe arrays
static inline void GiveSamplesToDevice(chanend c, xc_ptr ptr, xc_ptr multOut, unsigned underflow)
static inline void GiveSamplesToDevice(chanend c, xc_ptr ptr, xc_ptr multOut)
{
outuint(c, underflow);
if(!underflow)
{
#pragma loop unroll
for (int i=0; i<NUM_USB_CHAN_OUT; i++)
@@ -354,20 +350,16 @@ static void mixer1(chanend c_host, chanend c_mix_ctl, chanend c_mixer2)
int mixed;
#endif
unsigned cmd;
unsigned underflow = 1;
unsigned request = 0;
while (1)
{
#pragma xta endpoint "mixer1_req"
/* Request from audio() */
inuint(c_mixer2);
/* Request from audio()/mixer2() */
request = inuint(c_mixer2);
GiveSamplesToDevice(c_mixer2, samples_to_device_map, multOut, underflow);
GetSamplesFromDevice(c_mixer2);
/* Request data from decouple thread */
outuint(c_host, 0);
/* Forward on Request for data to decouple thread */
outuint(c_host, request);
/* Between request to decouple and respose ~ 400nS latency for interrupt to fire */
select
@@ -504,9 +496,6 @@ static void mixer1(chanend c_host, chanend c_mix_ctl, chanend c_mixer2)
sampFreq = inuint(c_host);
mixer1_mix2_flag = sampFreq > 96000;
/* Wait for request */
inuint(c_mixer2);
/* Inform mixer2 (or audio()) about freq change */
outct(c_mixer2, command);
outuint(c_mixer2, sampFreq);
@@ -515,9 +504,6 @@ static void mixer1(chanend c_host, chanend c_mix_ctl, chanend c_mixer2)
case SET_STREAM_FORMAT_OUT:
case SET_STREAM_FORMAT_IN:
/* Wait for request */
inuint(c_mixer2);
/* Inform mixer2 (or audio()) about format change */
outct(c_mixer2, command);
outuint(c_mixer2, inuint(c_host));
@@ -545,14 +531,14 @@ static void mixer1(chanend c_host, chanend c_mix_ctl, chanend c_mixer2)
}
else
{
underflow = inuint(c_host);
inuint(c_host);
#if MAX_MIX_COUNT > 0
outuint(c_mixer2, underflow);
outuint(c_mixer2, 0);
GiveSamplesToHost(c_host, samples_to_host_map, multIn);
outuint(c_mixer2, 0);
inuint(c_mixer2);
GetSamplesFromHost(c_host, underflow);
GetSamplesFromHost(c_host);
outuint(c_mixer2, 0);
inuint(c_mixer2);
#ifdef FAST_MIXER
@@ -612,9 +598,10 @@ static void mixer1(chanend c_host, chanend c_mix_ctl, chanend c_mixer2)
}
#else /* IF MAX_MIX_COUNT > 0 */
/* No mixes, this thread runs on its own doing just volume */
GiveSamplesToDevice(c_mixer2, samples_to_device_map, multOut);
GetSamplesFromDevice(c_mixer2);
GiveSamplesToHost(c_host, samples_to_host_map, multIn);
GetSamplesFromHost(c_host, underflow);
GetSamplesFromHost(c_host);
#endif
}
}
@@ -627,13 +614,16 @@ static int mixer2_mix2_flag = (DEFAULT_FREQ > 96000);
static void mixer2(chanend c_mixer1, chanend c_audio)
{
int mixed;
unsigned underflow = 0;
unsigned request;
while (1)
{
outuint(c_mixer1, 0);
#pragma xta endpoint "mixer2_req"
inuint(c_audio);
request = inuint(c_audio);
/* Forward the request on */
outuint(c_mixer1, request);
if(testct(c_mixer1))
{
int sampFreq;
@@ -678,8 +668,8 @@ static void mixer2(chanend c_mixer1, chanend c_audio)
}
else
{
underflow = inuint(c_mixer1);
GiveSamplesToDevice(c_audio, samples_to_device_map, multOut, underflow);
(void) inuint(c_mixer1);
GiveSamplesToDevice(c_audio, samples_to_device_map, multOut);
inuint(c_mixer1);
outuint(c_mixer1, 0);
GetSamplesFromDevice(c_audio);

View File

@@ -27,8 +27,6 @@
#define CLKBLK_USB_RST XS1_CLKBLK_4 /* Clock block passed into L/G series XUD */
#define CLKBLK_FLASHLIB XS1_CLKBLK_5 /* Clock block for use by flash lib */
/* #define CLKBLK_SPDIF_TX XS1_CLKBLK_1 */
/* #define CLKBLK_MCLK XS1_CLKBLK_2 */
#define CLKBLK_I2S_BIT XS1_CLKBLK_3
#else
@@ -44,11 +42,8 @@
/* use REF for ADAT_RX on U-series */
/* #define CLKBLK_ADAT_RX XS1_CLKBLK_3 */
/* Note, U-series XUD uses clock blocks 4 and 5 - see XUD_Ports.xc */
#define CLKBLK_FLASHLIB XS1_CLKBLK_5 /* Clock block for use by flash lib */
//#define CLKBLK_FLASHLIB XS1_CLKBLK_5 /* Clock block for use by flash lib */
/* #define CLKBLK_SPDIF_TX XS1_CLKBLK_1 */
/* #define CLKBLK_MCLK XS1_CLKBLK_2 */
#define CLKBLK_I2S_BIT XS1_CLKBLK_3
#endif

View File

@@ -129,10 +129,9 @@ void handle_audio_request(chanend c_mix_out)
int space_left;
/* Input word that triggered interrupt and handshake back */
(void) inuint(c_mix_out);
/* Reply with underflow */
outuint(c_mix_out, outUnderflow);
unsigned underflowSample = inuint(c_mix_out);
outuint(c_mix_out, 0);
/* If in overflow condition then receive samples and throw away */
if(inOverflow || sampsToWrite == 0)
@@ -176,7 +175,7 @@ __builtin_unreachable();
int mult;
int h;
unsigned l;
asm("ldw %0, %1[%2]":"=r"(mult):"r"(p_multIn),"r"(i));
asm volatile("ldw %0, %1[%2]":"=r"(mult):"r"(p_multIn),"r"(i));
{h, l} = macs(mult, sample, 0, 0);
sample = h << 3;
@@ -207,7 +206,7 @@ __builtin_unreachable();
int mult;
int h;
unsigned l;
asm("ldw %0, %1[%2]":"=r"(mult):"r"(p_multIn),"r"(i));
asm volatile("ldw %0, %1[%2]":"=r"(mult):"r"(p_multIn),"r"(i));
{h, l} = macs(mult, sample, 0, 0);
sample = h << 3;
#if (STREAM_FORMAT_INPUT_RESOLUTION_32BIT_USED == 1)
@@ -240,7 +239,7 @@ __builtin_unreachable();
int mult;
int h;
unsigned l;
asm("ldw %0, %1[%2]":"=r"(mult):"r"(p_multIn),"r"(i));
asm volatile("ldw %0, %1[%2]":"=r"(mult):"r"(p_multIn),"r"(i));
{h, l} = macs(mult, sample, 0, 0);
sample = h << 3;
#endif
@@ -290,21 +289,11 @@ __builtin_unreachable();
if(outUnderflow)
{
#pragma xta endpoint "out_underflow"
#if 0
/* We're still pre-buffering, send out 0 samps */
for(int i = 0; i < NUM_USB_CHAN_OUT; i++)
{
unsigned sample;
unsigned mode;
GET_SHARED_GLOBAL(sample, g_muteSample);
GET_SHARED_GLOBAL(mode, dsdMode);
if(mode == DSD_MODE_DOP)
outuint(c_mix_out, 0xFA969600);
else
outuint(c_mix_out, sample);
outuint(c_mix_out, underflowSample);
}
#endif
/* Calc how many samples left in buffer */
outSamps = g_aud_from_host_wrptr - g_aud_from_host_rdptr;
@@ -343,7 +332,7 @@ __builtin_unreachable();
sample <<= 16;
#if (OUTPUT_VOLUME_CONTROL == 1) && !defined(OUT_VOLUME_IN_MIXER)
asm("ldw %0, %1[%2]":"=r"(mult):"r"(p_multOut),"r"(i));
asm volatile("ldw %0, %1[%2]":"=r"(mult):"r"(p_multOut),"r"(i));
{h, l} = macs(mult, sample, 0, 0);
/* Note, in 2 byte subslot mode - ignore lower result of macs */
h <<= 3;
@@ -371,7 +360,7 @@ __builtin_unreachable();
g_aud_from_host_rdptr+=4;
#if (OUTPUT_VOLUME_CONTROL == 1) && !defined(OUT_VOLUME_IN_MIXER)
asm("ldw %0, %1[%2]":"=r"(mult):"r"(p_multOut),"r"(i));
asm volatile("ldw %0, %1[%2]":"=r"(mult):"r"(p_multOut),"r"(i));
{h, l} = macs(mult, sample, 0, 0);
h <<= 3;
#if (STREAM_FORMAT_OUTPUT_RESOLUTION_32BIT_USED == 1)
@@ -426,7 +415,7 @@ __builtin_unreachable();
unpackState++;
#if (OUTPUT_VOLUME_CONTROL == 1) && !defined(OUT_VOLUME_IN_MIXER)
asm("ldw %0, %1[%2]":"=r"(mult):"r"(p_multOut),"r"(i));
asm volatile("ldw %0, %1[%2]":"=r"(mult):"r"(p_multOut),"r"(i));
{h, l} = macs(mult, sample, 0, 0);
h <<= 3;
outuint(c_mix_out, h);
@@ -476,7 +465,7 @@ __builtin_unreachable();
}
/* Get feedback val - ideally this would be syncronised */
asm("ldw %0, dp[g_speed]" : "=r" (speed) :);
asm volatile("ldw %0, dp[g_speed]" : "=r" (speed) :);
/* Calc packet size to send back based on our fb */
speedRem += speed;
@@ -587,7 +576,7 @@ static inline void SetupZerosSendBuffer(XUD_ep aud_to_host_usb_ep, unsigned samp
mid *= g_numUsbChan_In * slotSize;
asm("stw %0, %1[0]"::"r"(mid),"r"(g_aud_to_host_zeros));
asm volatile("stw %0, %1[0]"::"r"(mid),"r"(g_aud_to_host_zeros));
/* Mark EP ready with the zero buffer. Note this will simply update the packet size
* if it is already ready */
@@ -648,14 +637,14 @@ void decouple(chanend c_mix_out
#ifndef OUT_VOLUME_IN_MIXER
for (int i = 0; i < NUM_USB_CHAN_OUT + 1; i++)
{
asm("stw %0, %1[%2]"::"r"(MAX_VOL),"r"(p_multOut),"r"(i));
asm volatile("stw %0, %1[%2]"::"r"(MAX_VOL),"r"(p_multOut),"r"(i));
}
#endif
#ifndef IN_VOLUME_IN_MIXER
for (int i = 0; i < NUM_USB_CHAN_IN + 1; i++)
{
asm("stw %0, %1[%2]"::"r"(MAX_VOL),"r"(p_multIn),"r"(i));
asm volatile("stw %0, %1[%2]"::"r"(MAX_VOL),"r"(p_multIn),"r"(i));
}
#endif
@@ -751,7 +740,7 @@ void decouple(chanend c_mix_out
chkct(c_mix_out, XS1_CT_END);
SET_SHARED_GLOBAL(g_freqChange, 0);
asm("outct res[%0],%1"::"r"(buffer_aud_ctl_chan),"r"(XS1_CT_END));
asm volatile("outct res[%0],%1"::"r"(buffer_aud_ctl_chan),"r"(XS1_CT_END));
ENABLE_INTERRUPTS();
@@ -795,7 +784,7 @@ void decouple(chanend c_mix_out
}
SET_SHARED_GLOBAL(g_freqChange, 0);
asm("outct res[%0],%1"::"r"(buffer_aud_ctl_chan),"r"(XS1_CT_END));
asm volatile("outct res[%0],%1"::"r"(buffer_aud_ctl_chan),"r"(XS1_CT_END));
ENABLE_INTERRUPTS();
}
@@ -840,7 +829,7 @@ void decouple(chanend c_mix_out
/* Wait for handshake back */
chkct(c_mix_out, XS1_CT_END);
asm("outct res[%0],%1"::"r"(buffer_aud_ctl_chan),"r"(XS1_CT_END));
asm volatile("outct res[%0],%1"::"r"(buffer_aud_ctl_chan),"r"(XS1_CT_END));
SET_SHARED_GLOBAL(g_freqChange, 0);
ENABLE_INTERRUPTS();
@@ -1000,7 +989,7 @@ void decouple(chanend c_mix_out
{
int p, len;
GET_SHARED_GLOBAL(p, g_aud_to_host_buffer);
asm("ldw %0, %1[0]":"=r"(len):"r"(p));
asm volatile("ldw %0, %1[0]":"=r"(len):"r"(p));
XUD_SetReady_InPtr(aud_to_host_usb_ep, p+4, len);
}
continue;

View File

@@ -160,11 +160,11 @@
#define set_interrupt_handler(f, nstackwords, args, c, ...) \
asm (" .section .dp.data, \"adw\", @progbits\n" \
" .align 4\n" \
"__" #f "_kernel_stack:\n" \
"__" #f "_kernel_stack%=:\n" \
" .space " #nstackwords ", 0\n" \
" .text\n"); \
asm("mov r10, %0; ldaw r11, dp[__" #f "_kernel_stack];add r11, r11, r10;ldaw r10, sp[0]; "\
"set sp,r11;stw r10, sp[0]; krestsp 0"::"r"(nstackwords-8):"r10","r11"); \
" .text\n" \
"mov r10, %0; ldaw r11, dp[__" #f "_kernel_stack%=];add r11, r11, r10;ldaw r10, sp[0]; "\
"set sp,r11;stw r10, sp[0]; krestsp 0"::"r"(nstackwords-8):"r10","r11"); \
store_args ## args(c, __VA_ARGS__) \
do_interrupt_handler(f, args) \
asm("ldap r11, __" #f "_handler; setv res[%0],r11"::"r"(c):"r11"); \

View File

@@ -1,3 +1,12 @@
/* These defines relate to the HID report desc - do not mod */
#define HID_CONTROL_PLAYPAUSE_SHIFT 0x01
#define HID_CONTROL_NEXT_SHIFT 0x02
#define HID_CONTROL_PREV_SHIFT 0x03
#define HID_CONTROL_VOLUP_SHIFT 0x04
#define HID_CONTROL_VOLDN_SHIFT 0x05
#define HID_CONTROL_MUTE_SHIFT 0x06
void UserReadHIDButtons(unsigned char hidData[]);

View File

@@ -1,497 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<?fileVersion 4.0.0?>
<cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
<storageModule moduleId="org.eclipse.cdt.core.settings">
<cconfiguration id="com.xmos.cdt.toolchain.88274778">
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.xmos.cdt.toolchain.88274778" moduleId="org.eclipse.cdt.core.settings" name="Default">
<externalSettings />
<extensions>
<extension id="com.xmos.cdt.core.XEBinaryParser" point="org.eclipse.cdt.core.BinaryParser" />
<extension id="com.xmos.cdt.core.XdeErrorParser" point="org.eclipse.cdt.core.ErrorParser" />
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser" />
</extensions>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets">
<buildTargets>
<target name="all" path="" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
<buildCommand>xmake</buildCommand>
<buildArguments> -f .makefile</buildArguments>
<buildTarget>all</buildTarget>
<stopOnError>true</stopOnError>
<useDefaultCommand>true</useDefaultCommand>
<runAllBuilders>true</runAllBuilders>
</target>
<target name="clean" path="" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
<buildCommand>xmake</buildCommand>
<buildArguments> -f .makefile</buildArguments>
<buildTarget>clean</buildTarget>
<stopOnError>true</stopOnError>
<useDefaultCommand>true</useDefaultCommand>
<runAllBuilders>true</runAllBuilders>
</target>
</buildTargets>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<configuration buildProperties="" description="" id="com.xmos.cdt.toolchain.88274778" name="Default" parent="org.eclipse.cdt.build.core.emptycfg">
<folderInfo id="com.xmos.cdt.toolchain.88274778.1127281840" name="/" resourcePath="">
<toolChain id = "com.xmos.cdt.toolchain.47341607" name="com.xmos.cdt.toolchain" superClass="com.xmos.cdt.toolchain">
<targetPlatform archList="all" binaryParser="com.xmos.cdt.core.XEBinaryParser" id = "com.xmos.cdt.core.platform.90164448" isAbstract="false" osList="linux,win32,macosx" superClass="com.xmos.cdt.core.platform" />
<builder arguments=" -f .makefile" id = "com.xmos.cdt.builder.base.76809194" keepEnvironmentInBuildfile="false" managedBuildOn="false" superClass="com.xmos.cdt.builder.base">
<outputEntries>
<entry flags="VALUE_WORKSPACE_PATH" kind="outputPath" name="bin" />
</outputEntries>
</builder>
<tool id = "com.xmos.cdt.xc.compiler.49455840" name="com.xmos.cdt.xc.compiler" superClass="com.xmos.cdt.xc.compiler">
<option id = "com.xmos.c.compiler.option.defined.symbols.81996622" name="com.xmos.c.compiler.option.defined.symbols" superClass="com.xmos.c.compiler.option.defined.symbols" valueType="definedSymbols">
<listOptionValue builtIn="false" value="__SHRT_MAX__=32767"/>
<listOptionValue builtIn="false" value="__SCHAR_MAX__=127"/>
<listOptionValue builtIn="false" value="__SIZE_TYPE__=unsigned"/>
<listOptionValue builtIn="false" value="__WCHAR_TYPE__=unsigned"/>
<listOptionValue builtIn="false" value="__STDC_HOSTED__=1"/>
<listOptionValue builtIn="false" value="XCC_VERSION_YEAR=11"/>
<listOptionValue builtIn="false" value="__PTRDIFF_TYPE__=int"/>
<listOptionValue builtIn="false" value="XCC_VERSION_MAJOR=1111"/>
<listOptionValue builtIn="false" value="XCC_VERSION_MINOR=1"/>
<listOptionValue builtIn="false" value="XCC_VERSION_MONTH=11"/>
<listOptionValue builtIn="false" value="__CHAR_UNSIGNED__=1"/>
<listOptionValue builtIn="false" value="__MCPP=2"/>
<listOptionValue builtIn="false" value="__XC__=1"/>
<listOptionValue builtIn="false" value="__XS1B__=1"/>
<listOptionValue builtIn="false" value="__INT_MAX__=2147483647"/>
<listOptionValue builtIn="false" value="__LONG_MAX__=2147483647L"/>
<listOptionValue builtIn="false" value="__STDC__=1"/>
<listOptionValue builtIn="false" value="__GNUC__=4"/>
<listOptionValue builtIn="false" value="__GNUC_MINOR__=2"/>
<listOptionValue builtIn="false" value="__GNUC_PATCHLEVEL__=1"/>
<listOptionValue builtIn="false" value="__llvm__=1"/>
<listOptionValue builtIn="false" value="__WINT_TYPE__=unsigned"/>
<listOptionValue builtIn="false" value="__INTMAX_TYPE__=long"/>
<listOptionValue builtIn="false" value="__UINTMAX_TYPE__=long"/>
<listOptionValue builtIn="false" value="__GXX_ABI_VERSION=1002"/>
<listOptionValue builtIn="false" value="__LONG_LONG_MAX__=9223372036854775807LL"/>
<listOptionValue builtIn="false" value="__WCHAR_MAX__=255U"/>
<listOptionValue builtIn="false" value="__CHAR_BIT__=8"/>
<listOptionValue builtIn="false" value="__INTMAX_MAX__=9223372036854775807LL"/>
<listOptionValue builtIn="false" value="__FLT_EVAL_METHOD__=0"/>
<listOptionValue builtIn="false" value="__DEC_EVAL_METHOD__=2"/>
<listOptionValue builtIn="false" value="__FLT_RADIX__=2"/>
<listOptionValue builtIn="false" value="__FLT_MANT_DIG__=24"/>
<listOptionValue builtIn="false" value="__FLT_DIG__=6"/>
<listOptionValue builtIn="false" value="__FLT_MIN_EXP__=(-125)"/>
<listOptionValue builtIn="false" value="__FLT_MIN_10_EXP__=(-37)"/>
<listOptionValue builtIn="false" value="__FLT_MAX_EXP__=128"/>
<listOptionValue builtIn="false" value="__FLT_MAX_10_EXP__=38"/>
<listOptionValue builtIn="false" value="__FLT_MAX__=3.40282347e+38F"/>
<listOptionValue builtIn="false" value="__FLT_MIN__=1.17549435e-38F"/>
<listOptionValue builtIn="false" value="__FLT_EPSILON__=1.19209290e-7F"/>
<listOptionValue builtIn="false" value="__FLT_DENORM_MIN__=1.40129846e-45F"/>
<listOptionValue builtIn="false" value="__FLT_HAS_DENORM__=1"/>
<listOptionValue builtIn="false" value="__FLT_HAS_INFINITY__=1"/>
<listOptionValue builtIn="false" value="__FLT_HAS_QUIET_NAN__=1"/>
<listOptionValue builtIn="false" value="__DBL_MANT_DIG__=53"/>
<listOptionValue builtIn="false" value="__DBL_DIG__=15"/>
<listOptionValue builtIn="false" value="__DBL_MIN_EXP__=(-1021)"/>
<listOptionValue builtIn="false" value="__DBL_MIN_10_EXP__=(-307)"/>
<listOptionValue builtIn="false" value="__DBL_MAX_EXP__=1024"/>
<listOptionValue builtIn="false" value="__DBL_MAX_10_EXP__=308"/>
<listOptionValue builtIn="false" value="__DBL_MAX__=1.7976931348623157e+308"/>
<listOptionValue builtIn="false" value="__DBL_MIN__=2.2250738585072014e-308"/>
<listOptionValue builtIn="false" value="__DBL_EPSILON__=2.2204460492503131e-16"/>
<listOptionValue builtIn="false" value="__DBL_DENORM_MIN__=4.9406564584124654e-324"/>
<listOptionValue builtIn="false" value="__DBL_HAS_DENORM__=1"/>
<listOptionValue builtIn="false" value="__DBL_HAS_INFINITY__=1"/>
<listOptionValue builtIn="false" value="__DBL_HAS_QUIET_NAN__=1"/>
<listOptionValue builtIn="false" value="__LDBL_MANT_DIG__=53"/>
<listOptionValue builtIn="false" value="__LDBL_DIG__=15"/>
<listOptionValue builtIn="false" value="__LDBL_MIN_EXP__=(-1021)"/>
<listOptionValue builtIn="false" value="__LDBL_MIN_10_EXP__=(-307)"/>
<listOptionValue builtIn="false" value="__LDBL_MAX_EXP__=1024"/>
<listOptionValue builtIn="false" value="__LDBL_MAX_10_EXP__=308"/>
<listOptionValue builtIn="false" value="__DECIMAL_DIG__=17"/>
<listOptionValue builtIn="false" value="__LDBL_MAX__=1.7976931348623157e+308L"/>
<listOptionValue builtIn="false" value="__LDBL_MIN__=2.2250738585072014e-308L"/>
<listOptionValue builtIn="false" value="__LDBL_EPSILON__=2.2204460492503131e-16L"/>
<listOptionValue builtIn="false" value="__LDBL_DENORM_MIN__=4.9406564584124654e-324L"/>
<listOptionValue builtIn="false" value="__LDBL_HAS_DENORM__=1"/>
<listOptionValue builtIn="false" value="__LDBL_HAS_INFINITY__=1"/>
<listOptionValue builtIn="false" value="__LDBL_HAS_QUIET_NAN__=1"/>
<listOptionValue builtIn="false" value="__DEC32_MANT_DIG__=7"/>
<listOptionValue builtIn="false" value="__DEC32_MIN_EXP__=(-95)"/>
<listOptionValue builtIn="false" value="__DEC32_MAX_EXP__=96"/>
<listOptionValue builtIn="false" value="__DEC32_MIN__=1E-95DF"/>
<listOptionValue builtIn="false" value="__DEC32_MAX__=9.999999E96DF"/>
<listOptionValue builtIn="false" value="__DEC32_EPSILON__=1E-6DF"/>
<listOptionValue builtIn="false" value="__DEC32_DEN__=0.000001E-95DF"/>
<listOptionValue builtIn="false" value="__DEC64_MANT_DIG__=16"/>
<listOptionValue builtIn="false" value="__DEC64_MIN_EXP__=(-383)"/>
<listOptionValue builtIn="false" value="__DEC64_MAX_EXP__=384"/>
<listOptionValue builtIn="false" value="__DEC64_MIN__=1E-383DD"/>
<listOptionValue builtIn="false" value="__DEC64_MAX__=9.999999999999999E384DD"/>
<listOptionValue builtIn="false" value="__DEC64_EPSILON__=1E-15DD"/>
<listOptionValue builtIn="false" value="__DEC64_DEN__=0.000000000000001E-383DD"/>
<listOptionValue builtIn="false" value="__DEC128_MANT_DIG__=34"/>
<listOptionValue builtIn="false" value="__DEC128_MIN_EXP__=(-6143)"/>
<listOptionValue builtIn="false" value="__DEC128_MAX_EXP__=6144"/>
<listOptionValue builtIn="false" value="__DEC128_MIN__=1E-6143DL"/>
<listOptionValue builtIn="false" value="__DEC128_MAX__=9.999999999999999999999999999999999E6144DL"/>
<listOptionValue builtIn="false" value="__DEC128_EPSILON__=1E-33DL"/>
<listOptionValue builtIn="false" value="__DEC128_DEN__=0.000000000000000000000000000000001E-6143DL"/>
<listOptionValue builtIn="false" value="__REGISTER_PREFIX__"/>
<listOptionValue builtIn="false" value="__USER_LABEL_PREFIX__"/>
<listOptionValue builtIn="false" value="__VERSION__=&quot;4.2.1"/>
<listOptionValue builtIn="false" value="__GNUC_GNU_INLINE__=1"/>
<listOptionValue builtIn="false" value="__BLOCKS__=1"/>
<listOptionValue builtIn="false" value="__NO_INLINE__=1"/>
<listOptionValue builtIn="false" value="__FINITE_MATH_ONLY__=0"/>
<listOptionValue builtIn="false" value="__ELF__=1"/>
<listOptionValue builtIn="false" value="__XCC_HAVE_FLOAT__=1"/>
<listOptionValue builtIn="false" value="__cplusplus=1"/>
<listOptionValue builtIn="false" value="__GNUG__=4"/>
<listOptionValue builtIn="false" value="__GXX_WEAK__=1"/>
<listOptionValue builtIn="false" value="__DEPRECATED=1"/>
<listOptionValue builtIn="false" value="__EXCEPTIONS=1"/>
<listOptionValue builtIn="false" value="__WCHAR_UNSIGNED__=1"/>
</option>
<option id = "com.xmos.xc.compiler.option.include.paths.38879463" name="com.xmos.xc.compiler.option.include.paths" superClass="com.xmos.xc.compiler.option.include.paths" valueType="includePath">
<listOptionValue builtIn="false" value="&quot;${XMOS_TOOL_PATH}/target/include&quot;"/>
<listOptionValue builtIn="false" value="&quot;${XMOS_TOOL_PATH}/target/include/gcc&quot;"/>
<listOptionValue builtIn="false" value='&quot;${workspace_loc:/module_usb_audio_adat/src}&quot;' />
<listOptionValue builtIn="false" value='&quot;${workspace_loc:/module_usb_audio_adat}&quot;' />
</option>
<inputType id = "com.xmos.cdt.xc.compiler.input.71179776" name="XC" superClass="com.xmos.cdt.xc.compiler.input"/>
</tool>
<tool id = "com.xmos.cdt.c.compiler.57348975" name="com.xmos.cdt.c.compiler" superClass="com.xmos.cdt.c.compiler">
<option id = "com.xmos.c.compiler.option.defined.symbols.99056737" name="com.xmos.c.compiler.option.defined.symbols" superClass="com.xmos.c.compiler.option.defined.symbols" valueType="definedSymbols">
<listOptionValue builtIn="false" value="__STDC__=1"/>
<listOptionValue builtIn="false" value="__STDC_VERSION__=199901L"/>
<listOptionValue builtIn="false" value="__STDC_HOSTED__=1"/>
<listOptionValue builtIn="false" value="__GNUC__=4"/>
<listOptionValue builtIn="false" value="__GNUC_MINOR__=2"/>
<listOptionValue builtIn="false" value="__GNUC_PATCHLEVEL__=1"/>
<listOptionValue builtIn="false" value="__llvm__=1"/>
<listOptionValue builtIn="false" value="__SIZE_TYPE__=unsigned"/>
<listOptionValue builtIn="false" value="__PTRDIFF_TYPE__=int"/>
<listOptionValue builtIn="false" value="__WCHAR_TYPE__=unsigned"/>
<listOptionValue builtIn="false" value="__WINT_TYPE__=unsigned"/>
<listOptionValue builtIn="false" value="__INTMAX_TYPE__=long"/>
<listOptionValue builtIn="false" value="__UINTMAX_TYPE__=long"/>
<listOptionValue builtIn="false" value="__GXX_ABI_VERSION=1002"/>
<listOptionValue builtIn="false" value="__SCHAR_MAX__=127"/>
<listOptionValue builtIn="false" value="__SHRT_MAX__=32767"/>
<listOptionValue builtIn="false" value="__INT_MAX__=2147483647"/>
<listOptionValue builtIn="false" value="__LONG_MAX__=2147483647L"/>
<listOptionValue builtIn="false" value="__LONG_LONG_MAX__=9223372036854775807LL"/>
<listOptionValue builtIn="false" value="__WCHAR_MAX__=255U"/>
<listOptionValue builtIn="false" value="__CHAR_BIT__=8"/>
<listOptionValue builtIn="false" value="__INTMAX_MAX__=9223372036854775807LL"/>
<listOptionValue builtIn="false" value="__FLT_EVAL_METHOD__=0"/>
<listOptionValue builtIn="false" value="__DEC_EVAL_METHOD__=2"/>
<listOptionValue builtIn="false" value="__FLT_RADIX__=2"/>
<listOptionValue builtIn="false" value="__FLT_MANT_DIG__=24"/>
<listOptionValue builtIn="false" value="__FLT_DIG__=6"/>
<listOptionValue builtIn="false" value="__FLT_MIN_EXP__=(-125)"/>
<listOptionValue builtIn="false" value="__FLT_MIN_10_EXP__=(-37)"/>
<listOptionValue builtIn="false" value="__FLT_MAX_EXP__=128"/>
<listOptionValue builtIn="false" value="__FLT_MAX_10_EXP__=38"/>
<listOptionValue builtIn="false" value="__FLT_MAX__=3.40282347e+38F"/>
<listOptionValue builtIn="false" value="__FLT_MIN__=1.17549435e-38F"/>
<listOptionValue builtIn="false" value="__FLT_EPSILON__=1.19209290e-7F"/>
<listOptionValue builtIn="false" value="__FLT_DENORM_MIN__=1.40129846e-45F"/>
<listOptionValue builtIn="false" value="__FLT_HAS_DENORM__=1"/>
<listOptionValue builtIn="false" value="__FLT_HAS_INFINITY__=1"/>
<listOptionValue builtIn="false" value="__FLT_HAS_QUIET_NAN__=1"/>
<listOptionValue builtIn="false" value="__DBL_MANT_DIG__=53"/>
<listOptionValue builtIn="false" value="__DBL_DIG__=15"/>
<listOptionValue builtIn="false" value="__DBL_MIN_EXP__=(-1021)"/>
<listOptionValue builtIn="false" value="__DBL_MIN_10_EXP__=(-307)"/>
<listOptionValue builtIn="false" value="__DBL_MAX_EXP__=1024"/>
<listOptionValue builtIn="false" value="__DBL_MAX_10_EXP__=308"/>
<listOptionValue builtIn="false" value="__DBL_MAX__=1.7976931348623157e+308"/>
<listOptionValue builtIn="false" value="__DBL_MIN__=2.2250738585072014e-308"/>
<listOptionValue builtIn="false" value="__DBL_EPSILON__=2.2204460492503131e-16"/>
<listOptionValue builtIn="false" value="__DBL_DENORM_MIN__=4.9406564584124654e-324"/>
<listOptionValue builtIn="false" value="__DBL_HAS_DENORM__=1"/>
<listOptionValue builtIn="false" value="__DBL_HAS_INFINITY__=1"/>
<listOptionValue builtIn="false" value="__DBL_HAS_QUIET_NAN__=1"/>
<listOptionValue builtIn="false" value="__LDBL_MANT_DIG__=53"/>
<listOptionValue builtIn="false" value="__LDBL_DIG__=15"/>
<listOptionValue builtIn="false" value="__LDBL_MIN_EXP__=(-1021)"/>
<listOptionValue builtIn="false" value="__LDBL_MIN_10_EXP__=(-307)"/>
<listOptionValue builtIn="false" value="__LDBL_MAX_EXP__=1024"/>
<listOptionValue builtIn="false" value="__LDBL_MAX_10_EXP__=308"/>
<listOptionValue builtIn="false" value="__DECIMAL_DIG__=17"/>
<listOptionValue builtIn="false" value="__LDBL_MAX__=1.7976931348623157e+308L"/>
<listOptionValue builtIn="false" value="__LDBL_MIN__=2.2250738585072014e-308L"/>
<listOptionValue builtIn="false" value="__LDBL_EPSILON__=2.2204460492503131e-16L"/>
<listOptionValue builtIn="false" value="__LDBL_DENORM_MIN__=4.9406564584124654e-324L"/>
<listOptionValue builtIn="false" value="__LDBL_HAS_DENORM__=1"/>
<listOptionValue builtIn="false" value="__LDBL_HAS_INFINITY__=1"/>
<listOptionValue builtIn="false" value="__LDBL_HAS_QUIET_NAN__=1"/>
<listOptionValue builtIn="false" value="__DEC32_MANT_DIG__=7"/>
<listOptionValue builtIn="false" value="__DEC32_MIN_EXP__=(-95)"/>
<listOptionValue builtIn="false" value="__DEC32_MAX_EXP__=96"/>
<listOptionValue builtIn="false" value="__DEC32_MIN__=1E-95DF"/>
<listOptionValue builtIn="false" value="__DEC32_MAX__=9.999999E96DF"/>
<listOptionValue builtIn="false" value="__DEC32_EPSILON__=1E-6DF"/>
<listOptionValue builtIn="false" value="__DEC32_DEN__=0.000001E-95DF"/>
<listOptionValue builtIn="false" value="__DEC64_MANT_DIG__=16"/>
<listOptionValue builtIn="false" value="__DEC64_MIN_EXP__=(-383)"/>
<listOptionValue builtIn="false" value="__DEC64_MAX_EXP__=384"/>
<listOptionValue builtIn="false" value="__DEC64_MIN__=1E-383DD"/>
<listOptionValue builtIn="false" value="__DEC64_MAX__=9.999999999999999E384DD"/>
<listOptionValue builtIn="false" value="__DEC64_EPSILON__=1E-15DD"/>
<listOptionValue builtIn="false" value="__DEC64_DEN__=0.000000000000001E-383DD"/>
<listOptionValue builtIn="false" value="__DEC128_MANT_DIG__=34"/>
<listOptionValue builtIn="false" value="__DEC128_MIN_EXP__=(-6143)"/>
<listOptionValue builtIn="false" value="__DEC128_MAX_EXP__=6144"/>
<listOptionValue builtIn="false" value="__DEC128_MIN__=1E-6143DL"/>
<listOptionValue builtIn="false" value="__DEC128_MAX__=9.999999999999999999999999999999999E6144DL"/>
<listOptionValue builtIn="false" value="__DEC128_EPSILON__=1E-33DL"/>
<listOptionValue builtIn="false" value="__DEC128_DEN__=0.000000000000000000000000000000001E-6143DL"/>
<listOptionValue builtIn="false" value="__REGISTER_PREFIX__"/>
<listOptionValue builtIn="false" value="__USER_LABEL_PREFIX__"/>
<listOptionValue builtIn="false" value="__VERSION__=&quot;4.2.1"/>
<listOptionValue builtIn="false" value="__GNUC_STDC_INLINE__=1"/>
<listOptionValue builtIn="false" value="__BLOCKS__=1"/>
<listOptionValue builtIn="false" value="__NO_INLINE__=1"/>
<listOptionValue builtIn="false" value="__FINITE_MATH_ONLY__=0"/>
<listOptionValue builtIn="false" value="__CHAR_UNSIGNED__=1"/>
<listOptionValue builtIn="false" value="__XS1B__=1"/>
<listOptionValue builtIn="false" value="__ELF__=1"/>
<listOptionValue builtIn="false" value="XCC_VERSION_YEAR=12"/>
<listOptionValue builtIn="false" value="XCC_VERSION_MONTH=2"/>
<listOptionValue builtIn="false" value="XCC_VERSION_MAJOR=1202"/>
<listOptionValue builtIn="false" value="XCC_VERSION_MINOR=0"/>
<listOptionValue builtIn="false" value="__XCC_HAVE_FLOAT__=1"/>
</option>
<option id = "com.xmos.c.compiler.option.include.paths.41424664" name="com.xmos.c.compiler.option.include.paths" superClass="com.xmos.c.compiler.option.include.paths" valueType="includePath">
<listOptionValue builtIn="false" value="&quot;${XMOS_TOOL_PATH}/target/include&quot;"/>
<listOptionValue builtIn="false" value="&quot;${XMOS_TOOL_PATH}/target/include/gcc&quot;"/>
<listOptionValue builtIn="false" value='&quot;${workspace_loc:/module_usb_audio_adat/src}&quot;' />
<listOptionValue builtIn="false" value='&quot;${workspace_loc:/module_usb_audio_adat}&quot;' />
</option>
<inputType id = "com.xmos.cdt.c.compiler.input.c.12161256" name="C" superClass="com.xmos.cdt.c.compiler.input.c"/>
</tool>
<tool id = "com.xmos.cdt.cxx.compiler.90016111" name="com.xmos.cdt.cxx.compiler" superClass="com.xmos.cdt.cxx.compiler">
<option id = "com.xmos.cxx.compiler.option.defined.symbols.49996190" name="com.xmos.cxx.compiler.option.defined.symbols" superClass="com.xmos.cxx.compiler.option.defined.symbols" valueType="definedSymbols">
<listOptionValue builtIn="false" value="__STDC__=1"/>
<listOptionValue builtIn="false" value="__cplusplus=1"/>
<listOptionValue builtIn="false" value="__STDC_HOSTED__=1"/>
<listOptionValue builtIn="false" value="__GNUC__=4"/>
<listOptionValue builtIn="false" value="__GNUG__=4"/>
<listOptionValue builtIn="false" value="__GNUC_MINOR__=2"/>
<listOptionValue builtIn="false" value="__GNUC_PATCHLEVEL__=1"/>
<listOptionValue builtIn="false" value="__llvm__=1"/>
<listOptionValue builtIn="false" value="__SIZE_TYPE__=unsigned"/>
<listOptionValue builtIn="false" value="__PTRDIFF_TYPE__=int"/>
<listOptionValue builtIn="false" value="__WCHAR_TYPE__=unsigned"/>
<listOptionValue builtIn="false" value="__WINT_TYPE__=unsigned"/>
<listOptionValue builtIn="false" value="__INTMAX_TYPE__=long"/>
<listOptionValue builtIn="false" value="__UINTMAX_TYPE__=long"/>
<listOptionValue builtIn="false" value="__GXX_WEAK__=1"/>
<listOptionValue builtIn="false" value="__DEPRECATED=1"/>
<listOptionValue builtIn="false" value="__GXX_ABI_VERSION=1002"/>
<listOptionValue builtIn="false" value="__SCHAR_MAX__=127"/>
<listOptionValue builtIn="false" value="__SHRT_MAX__=32767"/>
<listOptionValue builtIn="false" value="__INT_MAX__=2147483647"/>
<listOptionValue builtIn="false" value="__LONG_MAX__=2147483647L"/>
<listOptionValue builtIn="false" value="__LONG_LONG_MAX__=9223372036854775807LL"/>
<listOptionValue builtIn="false" value="__WCHAR_MAX__=255U"/>
<listOptionValue builtIn="false" value="__CHAR_BIT__=8"/>
<listOptionValue builtIn="false" value="__INTMAX_MAX__=9223372036854775807LL"/>
<listOptionValue builtIn="false" value="__FLT_EVAL_METHOD__=0"/>
<listOptionValue builtIn="false" value="__DEC_EVAL_METHOD__=2"/>
<listOptionValue builtIn="false" value="__FLT_RADIX__=2"/>
<listOptionValue builtIn="false" value="__FLT_MANT_DIG__=24"/>
<listOptionValue builtIn="false" value="__FLT_DIG__=6"/>
<listOptionValue builtIn="false" value="__FLT_MIN_EXP__=(-125)"/>
<listOptionValue builtIn="false" value="__FLT_MIN_10_EXP__=(-37)"/>
<listOptionValue builtIn="false" value="__FLT_MAX_EXP__=128"/>
<listOptionValue builtIn="false" value="__FLT_MAX_10_EXP__=38"/>
<listOptionValue builtIn="false" value="__FLT_MAX__=3.40282347e+38F"/>
<listOptionValue builtIn="false" value="__FLT_MIN__=1.17549435e-38F"/>
<listOptionValue builtIn="false" value="__FLT_EPSILON__=1.19209290e-7F"/>
<listOptionValue builtIn="false" value="__FLT_DENORM_MIN__=1.40129846e-45F"/>
<listOptionValue builtIn="false" value="__FLT_HAS_DENORM__=1"/>
<listOptionValue builtIn="false" value="__FLT_HAS_INFINITY__=1"/>
<listOptionValue builtIn="false" value="__FLT_HAS_QUIET_NAN__=1"/>
<listOptionValue builtIn="false" value="__DBL_MANT_DIG__=53"/>
<listOptionValue builtIn="false" value="__DBL_DIG__=15"/>
<listOptionValue builtIn="false" value="__DBL_MIN_EXP__=(-1021)"/>
<listOptionValue builtIn="false" value="__DBL_MIN_10_EXP__=(-307)"/>
<listOptionValue builtIn="false" value="__DBL_MAX_EXP__=1024"/>
<listOptionValue builtIn="false" value="__DBL_MAX_10_EXP__=308"/>
<listOptionValue builtIn="false" value="__DBL_MAX__=1.7976931348623157e+308"/>
<listOptionValue builtIn="false" value="__DBL_MIN__=2.2250738585072014e-308"/>
<listOptionValue builtIn="false" value="__DBL_EPSILON__=2.2204460492503131e-16"/>
<listOptionValue builtIn="false" value="__DBL_DENORM_MIN__=4.9406564584124654e-324"/>
<listOptionValue builtIn="false" value="__DBL_HAS_DENORM__=1"/>
<listOptionValue builtIn="false" value="__DBL_HAS_INFINITY__=1"/>
<listOptionValue builtIn="false" value="__DBL_HAS_QUIET_NAN__=1"/>
<listOptionValue builtIn="false" value="__LDBL_MANT_DIG__=53"/>
<listOptionValue builtIn="false" value="__LDBL_DIG__=15"/>
<listOptionValue builtIn="false" value="__LDBL_MIN_EXP__=(-1021)"/>
<listOptionValue builtIn="false" value="__LDBL_MIN_10_EXP__=(-307)"/>
<listOptionValue builtIn="false" value="__LDBL_MAX_EXP__=1024"/>
<listOptionValue builtIn="false" value="__LDBL_MAX_10_EXP__=308"/>
<listOptionValue builtIn="false" value="__DECIMAL_DIG__=17"/>
<listOptionValue builtIn="false" value="__LDBL_MAX__=1.7976931348623157e+308L"/>
<listOptionValue builtIn="false" value="__LDBL_MIN__=2.2250738585072014e-308L"/>
<listOptionValue builtIn="false" value="__LDBL_EPSILON__=2.2204460492503131e-16L"/>
<listOptionValue builtIn="false" value="__LDBL_DENORM_MIN__=4.9406564584124654e-324L"/>
<listOptionValue builtIn="false" value="__LDBL_HAS_DENORM__=1"/>
<listOptionValue builtIn="false" value="__LDBL_HAS_INFINITY__=1"/>
<listOptionValue builtIn="false" value="__LDBL_HAS_QUIET_NAN__=1"/>
<listOptionValue builtIn="false" value="__DEC32_MANT_DIG__=7"/>
<listOptionValue builtIn="false" value="__DEC32_MIN_EXP__=(-95)"/>
<listOptionValue builtIn="false" value="__DEC32_MAX_EXP__=96"/>
<listOptionValue builtIn="false" value="__DEC32_MIN__=1E-95DF"/>
<listOptionValue builtIn="false" value="__DEC32_MAX__=9.999999E96DF"/>
<listOptionValue builtIn="false" value="__DEC32_EPSILON__=1E-6DF"/>
<listOptionValue builtIn="false" value="__DEC32_DEN__=0.000001E-95DF"/>
<listOptionValue builtIn="false" value="__DEC64_MANT_DIG__=16"/>
<listOptionValue builtIn="false" value="__DEC64_MIN_EXP__=(-383)"/>
<listOptionValue builtIn="false" value="__DEC64_MAX_EXP__=384"/>
<listOptionValue builtIn="false" value="__DEC64_MIN__=1E-383DD"/>
<listOptionValue builtIn="false" value="__DEC64_MAX__=9.999999999999999E384DD"/>
<listOptionValue builtIn="false" value="__DEC64_EPSILON__=1E-15DD"/>
<listOptionValue builtIn="false" value="__DEC64_DEN__=0.000000000000001E-383DD"/>
<listOptionValue builtIn="false" value="__DEC128_MANT_DIG__=34"/>
<listOptionValue builtIn="false" value="__DEC128_MIN_EXP__=(-6143)"/>
<listOptionValue builtIn="false" value="__DEC128_MAX_EXP__=6144"/>
<listOptionValue builtIn="false" value="__DEC128_MIN__=1E-6143DL"/>
<listOptionValue builtIn="false" value="__DEC128_MAX__=9.999999999999999999999999999999999E6144DL"/>
<listOptionValue builtIn="false" value="__DEC128_EPSILON__=1E-33DL"/>
<listOptionValue builtIn="false" value="__DEC128_DEN__=0.000000000000000000000000000000001E-6143DL"/>
<listOptionValue builtIn="false" value="__REGISTER_PREFIX__"/>
<listOptionValue builtIn="false" value="__USER_LABEL_PREFIX__"/>
<listOptionValue builtIn="false" value="__VERSION__=&quot;4.2.1"/>
<listOptionValue builtIn="false" value="__GNUC_GNU_INLINE__=1"/>
<listOptionValue builtIn="false" value="__BLOCKS__=1"/>
<listOptionValue builtIn="false" value="__NO_INLINE__=1"/>
<listOptionValue builtIn="false" value="__FINITE_MATH_ONLY__=0"/>
<listOptionValue builtIn="false" value="__CHAR_UNSIGNED__=1"/>
<listOptionValue builtIn="false" value="__WCHAR_UNSIGNED__=1"/>
<listOptionValue builtIn="false" value="__XS1B__=1"/>
<listOptionValue builtIn="false" value="__ELF__=1"/>
<listOptionValue builtIn="false" value="XCC_VERSION_YEAR=12"/>
<listOptionValue builtIn="false" value="XCC_VERSION_MONTH=2"/>
<listOptionValue builtIn="false" value="XCC_VERSION_MAJOR=1202"/>
<listOptionValue builtIn="false" value="XCC_VERSION_MINOR=0"/>
<listOptionValue builtIn="false" value="__XCC_HAVE_FLOAT__=1"/>
</option>
<option id = "com.xmos.cxx.compiler.option.include.paths.71736894" name="com.xmos.cxx.compiler.option.include.paths" superClass="com.xmos.cxx.compiler.option.include.paths" valueType="includePath">
<listOptionValue builtIn="false" value="&quot;${XMOS_TOOL_PATH}/target/include&quot;"/>
<listOptionValue builtIn="false" value="&quot;${XMOS_TOOL_PATH}/target/include/gcc&quot;"/>
<listOptionValue builtIn="false" value="&quot;${XMOS_TOOL_PATH}/target/include/c++/4.2.1&quot;"/>
<listOptionValue builtIn="false" value="&quot;${XMOS_TOOL_PATH}/target/include/c++/4.2.1/xcore-xmos-elf&quot;"/>
<listOptionValue builtIn="false" value='&quot;${workspace_loc:/module_usb_audio_adat/src}&quot;' />
<listOptionValue builtIn="false" value='&quot;${workspace_loc:/module_usb_audio_adat}&quot;' />
</option>
<inputType id = "com.xmos.cdt.cxx.compiler.input.cpp.69751" name="C++" superClass="com.xmos.cdt.cxx.compiler.input.cpp"/>
</tool>
</toolChain>
</folderInfo>
<sourceEntries>
<entry excluding=".build_*" flags="VALUE_WORKSPACE_PATH|RESOLVED"
kind="sourcePath" name="" />
</sourceEntries>
</configuration>
</storageModule>
<storageModule moduleId="scannerConfiguration">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="" />
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath="" />
<parser enabled="true" />
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true" />
<parser enabled="true" />
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
<buildOutputProvider>
<openAction enabled="true" filePath="" />
<parser enabled="true" />
</buildOutputProvider>
<scannerInfoProvider id="makefileGenerator">
<runAction arguments="-E -P -v -dD" command="" useDefault="true" />
<parser enabled="true" />
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath="" />
<parser enabled="true" />
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true" />
<parser enabled="true" />
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
<buildOutputProvider>
<openAction enabled="true" filePath="" />
<parser enabled="true" />
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true" />
<parser enabled="true" />
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath="" />
<parser enabled="true" />
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true" />
<parser enabled="true" />
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
<buildOutputProvider>
<openAction enabled="true" filePath="" />
<parser enabled="true" />
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments='-c &apos;gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;&apos;' command="sh" useDefault="true" />
<parser enabled="true" />
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
<buildOutputProvider>
<openAction enabled="true" filePath="" />
<parser enabled="true" />
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments='-c &apos;g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;&apos;' command="sh" useDefault="true" />
<parser enabled="true" />
</scannerInfoProvider>
</profile>
<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
<buildOutputProvider>
<openAction enabled="true" filePath="" />
<parser enabled="true" />
</buildOutputProvider>
<scannerInfoProvider id="specsFile">
<runAction arguments='-c &apos;gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;&apos;' command="sh" useDefault="true" />
<parser enabled="true" />
</scannerInfoProvider>
</profile>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.core.externalSettings" />
<storageModule moduleId="org.eclipse.cdt.core.language.mapping" />
<storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings" />
</cconfiguration>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<project id = "module_usb_audio_adat.null.87074855" name="module_usb_audio_adat" />
</storageModule>
</cproject>

View File

@@ -1,8 +0,0 @@
all:
@echo "** Module only - only builds as part of application **"
clean:
@echo "** Module only - only builds as part of application **"

View File

@@ -1,76 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>module_usb_audio_adat</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
<triggers>clean,full,incremental,</triggers>
<arguments>
<dictionary>
<key>?children?</key>
<value>?name?=outputEntries\|?children?=?name?=entry\\\\|\\|\||</value>
</dictionary>
<dictionary>
<key>?name?</key>
<value></value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.append_environment</key>
<value>true</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.buildArguments</key>
<value>CONFIG=Debug</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.buildCommand</key>
<value>xmake</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.cleanBuildTarget</key>
<value>clean</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.contents</key>
<value>org.eclipse.cdt.make.core.activeConfigSettings</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.enableAutoBuild</key>
<value>false</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.enableCleanBuild</key>
<value>true</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.enableFullBuild</key>
<value>true</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.stopOnError</key>
<value>true</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.useDefaultBuildCmd</key>
<value>false</value>
</dictionary>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
<triggers>full,incremental,</triggers>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.cdt.core.cnature</nature>
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
<nature>com.xmos.cdt.core.XdeProjectNature</nature>
</natures>
</projectDescription>

View File

@@ -1 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?><xproject><repository>sc_usb_audio</repository><partnum>XM-004720-SM</partnum></xproject>

View File

@@ -1,9 +0,0 @@
ADAT Module for UAC2 MC Reference Design
========================================
:scope: General Use
:description: ADAT
:keywords: ADAT
:boards: XR-USB-AUDIO-20-MC
ADAT code

View File

@@ -1,27 +0,0 @@
/** ADAT Receive Thread (48kHz sample rate).
*
* \param p ADAT port - should be 1-bit and clocked at 100MHz
* \param oChan channel on which decoded samples are output
*
* The function will return if it cannot lock onto a 44,100/48,000 Hz
* signal. Normally the 48000 function is called in a while(1) loop. If
* both 44,100 and 48,000 need to be supported, they should be called in
* sequence in a while(1) loop. Note that the functions are large, and
* that 44,100 should not be called if it does not need to be supported.
**/
void adatReceiver48000(buffered in port:32 p, chanend oChan);
/** ADAT Receive Thread (44.1kHz sample rate).
*
* \param p ADAT port - should be 1-bit and clocked at 100MHz
* \param oChan channel on which decoded samples are output
*
* The function will return if it cannot lock onto a 44,100/48,000 Hz
* signal. Normally the 48000 function is called in a while(1) loop. If
* both 44,100 and 48,000 need to be supported, they should be called in
* sequence in a while(1) loop. Note that the functions are large, and
* that 44,100 should not be called if it does not need to be supported.
**/
void adatReceiver44100(buffered in port:32 p, chanend oChan);

View File

@@ -1,947 +0,0 @@
// GENERATED CODE - DO NOT EDIT
// Comments are in the generator
#include <xs1.h>
#include <stdio.h>
#pragma unsafe arrays
void adatReceiver48000(buffered in port:32 p, chanend oChan) {
const unsigned int mask = 0x80808080;
unsigned compressed;
unsigned nibble, word = 1, fourBits, data;
int old, violation;
unsigned int lookupCrcF[16] = {8, 9, 12, 13, 7, 6, 3, 2, 10, 11, 14, 15, 5, 4, 1, 0};
unsigned int lookupNRTZ[32] = {0, 8, 12, 4, 6, 14, 10, 2, 3, 11, 15, 7, 5, 13, 9, 1,
1, 9, 13, 5, 7, 15, 11, 3, 2, 10, 14, 6, 4, 12, 8, 0};
for(int i = 0; i < 32; i++) { lookupNRTZ[i] <<= 4; }
do {
old = word; p :> word;
} while (word != old || (word != 0 && word+1 != 0));
while(1) {
violation = word;
p when pinsneq(violation) :> int _;
p :> word;
fourBits = (word << 4) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
old = compressed;
p :> word;
fourBits = (word << 4) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
nibble = lookupNRTZ[(old | (compressed << 4)) & 31];
old = compressed >> 1;
outuint(oChan, nibble << 4 | 1);
p :> word;
fourBits = (word << 3) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
nibble = lookupNRTZ[(old | (compressed << 3)) & 31];
old = compressed >> 2;
data = nibble << 4;
p :> word;
fourBits = (word << 3) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
nibble = lookupNRTZ[(old | (compressed << 2)) & 31];
old = compressed >> 3;
data = (data | nibble) << 4;
p :> word;
fourBits = (word << 2) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
nibble = lookupNRTZ[(old | (compressed << 1)) & 31];
old = compressed >> 4;
data = (data | nibble) << 4;
p :> word;
fourBits = (word << 1) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
old = compressed;
p :> word;
fourBits = (word << 1) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
nibble = lookupNRTZ[(old | (compressed << 4)) & 31];
old = compressed >> 1;
data = (data | nibble) << 4;
p :> word;
fourBits = (word << 0) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
nibble = lookupNRTZ[(old | (compressed << 3)) & 31];
old = compressed >> 2;
data = (data | nibble) << 4;
p :> word;
fourBits = (word << 0) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
nibble = lookupNRTZ[(old | (compressed << 2)) & 31];
old = compressed >> 3;
data = (data | nibble) << 4;
outuint(oChan, data);
p :> word;
fourBits = (word << 7) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
compressed = compressed >> 1;
old = old | compressed << 1;
p :> word;
fourBits = (word << 7) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
nibble = lookupNRTZ[(old | (compressed << 4)) & 31];
old = compressed >> 1;
data = nibble << 4;
p :> word;
fourBits = (word << 6) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
nibble = lookupNRTZ[(old | (compressed << 3)) & 31];
old = compressed >> 2;
data = (data | nibble) << 4;
p :> word;
fourBits = (word << 6) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
nibble = lookupNRTZ[(old | (compressed << 2)) & 31];
old = compressed >> 3;
data = (data | nibble) << 4;
p :> word;
fourBits = (word << 5) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
nibble = lookupNRTZ[(old | (compressed << 1)) & 31];
old = compressed >> 4;
data = (data | nibble) << 4;
p :> word;
fourBits = (word << 5) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
old = compressed;
p :> word;
fourBits = (word << 4) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
nibble = lookupNRTZ[(old | (compressed << 4)) & 31];
old = compressed >> 1;
data = (data | nibble) << 4;
p :> word;
fourBits = (word << 4) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
nibble = lookupNRTZ[(old | (compressed << 3)) & 31];
old = compressed >> 2;
data = (data | nibble) << 4;
outuint(oChan, data);
p :> word;
fourBits = (word << 3) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
nibble = lookupNRTZ[(old | (compressed << 2)) & 31];
old = compressed >> 3;
data = nibble << 4;
p :> word;
fourBits = (word << 2) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
nibble = lookupNRTZ[(old | (compressed << 1)) & 31];
old = compressed >> 4;
data = (data | nibble) << 4;
p :> word;
fourBits = (word << 2) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
old = compressed;
p :> word;
fourBits = (word << 1) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
nibble = lookupNRTZ[(old | (compressed << 4)) & 31];
old = compressed >> 1;
data = (data | nibble) << 4;
p :> word;
fourBits = (word << 1) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
nibble = lookupNRTZ[(old | (compressed << 3)) & 31];
old = compressed >> 2;
data = (data | nibble) << 4;
p :> word;
fourBits = (word << 0) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
nibble = lookupNRTZ[(old | (compressed << 2)) & 31];
old = compressed >> 3;
data = (data | nibble) << 4;
p :> word;
fourBits = (word << 0) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
nibble = lookupNRTZ[(old | (compressed << 1)) & 31];
old = compressed >> 4;
data = (data | nibble) << 4;
outuint(oChan, data);
p :> word;
fourBits = (word << 7) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
compressed = compressed >> 1;
old = compressed;
p :> word;
fourBits = (word << 7) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
nibble = lookupNRTZ[(old | (compressed << 3)) & 31];
old = compressed >> 2;
data = nibble << 4;
p :> word;
fourBits = (word << 6) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
nibble = lookupNRTZ[(old | (compressed << 2)) & 31];
old = compressed >> 3;
data = (data | nibble) << 4;
p :> word;
fourBits = (word << 6) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
nibble = lookupNRTZ[(old | (compressed << 1)) & 31];
old = compressed >> 4;
data = (data | nibble) << 4;
p :> word;
fourBits = (word << 5) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
old = compressed;
p :> word;
fourBits = (word << 4) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
nibble = lookupNRTZ[(old | (compressed << 4)) & 31];
old = compressed >> 1;
data = (data | nibble) << 4;
p :> word;
fourBits = (word << 4) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
nibble = lookupNRTZ[(old | (compressed << 3)) & 31];
old = compressed >> 2;
data = (data | nibble) << 4;
p :> word;
fourBits = (word << 3) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
nibble = lookupNRTZ[(old | (compressed << 2)) & 31];
old = compressed >> 3;
data = (data | nibble) << 4;
outuint(oChan, data);
p :> word;
fourBits = (word << 3) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
nibble = lookupNRTZ[(old | (compressed << 1)) & 31];
old = compressed >> 4;
data = nibble << 4;
p :> word;
fourBits = (word << 2) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
old = compressed;
p :> word;
fourBits = (word << 2) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
nibble = lookupNRTZ[(old | (compressed << 4)) & 31];
old = compressed >> 1;
data = (data | nibble) << 4;
p :> word;
fourBits = (word << 1) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
nibble = lookupNRTZ[(old | (compressed << 3)) & 31];
old = compressed >> 2;
data = (data | nibble) << 4;
p :> word;
fourBits = (word << 1) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
nibble = lookupNRTZ[(old | (compressed << 2)) & 31];
old = compressed >> 3;
data = (data | nibble) << 4;
p :> word;
fourBits = (word << 0) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
nibble = lookupNRTZ[(old | (compressed << 1)) & 31];
old = compressed >> 4;
data = (data | nibble) << 4;
p :> word;
fourBits = (word << 0) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
old = compressed;
p :> word;
fourBits = (word << 7) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
compressed = compressed >> 1;
nibble = lookupNRTZ[(old | (compressed << 4)) & 31];
old = compressed >> 1;
data = (data | nibble) << 4;
outuint(oChan, data);
p :> word;
fourBits = (word << 7) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
nibble = lookupNRTZ[(old | (compressed << 2)) & 31];
old = compressed >> 3;
data = nibble << 4;
p :> word;
fourBits = (word << 6) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
nibble = lookupNRTZ[(old | (compressed << 1)) & 31];
old = compressed >> 4;
data = (data | nibble) << 4;
p :> word;
fourBits = (word << 5) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
old = compressed;
p :> word;
fourBits = (word << 5) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
nibble = lookupNRTZ[(old | (compressed << 4)) & 31];
old = compressed >> 1;
data = (data | nibble) << 4;
p :> word;
fourBits = (word << 4) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
nibble = lookupNRTZ[(old | (compressed << 3)) & 31];
old = compressed >> 2;
data = (data | nibble) << 4;
p :> word;
fourBits = (word << 4) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
nibble = lookupNRTZ[(old | (compressed << 2)) & 31];
old = compressed >> 3;
data = (data | nibble) << 4;
p :> word;
fourBits = (word << 3) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
nibble = lookupNRTZ[(old | (compressed << 1)) & 31];
old = compressed >> 4;
data = (data | nibble) << 4;
outuint(oChan, data);
p :> word;
fourBits = (word << 3) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
old = compressed;
p :> word;
fourBits = (word << 2) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
nibble = lookupNRTZ[(old | (compressed << 4)) & 31];
old = compressed >> 1;
data = nibble << 4;
p :> word;
fourBits = (word << 2) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
nibble = lookupNRTZ[(old | (compressed << 3)) & 31];
old = compressed >> 2;
data = (data | nibble) << 4;
p :> word;
fourBits = (word << 1) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
nibble = lookupNRTZ[(old | (compressed << 2)) & 31];
old = compressed >> 3;
data = (data | nibble) << 4;
p :> word;
fourBits = (word << 0) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
nibble = lookupNRTZ[(old | (compressed << 1)) & 31];
old = compressed >> 4;
data = (data | nibble) << 4;
p :> word;
fourBits = (word << 0) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
old = compressed;
p :> word;
fourBits = (word << 7) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
compressed = compressed >> 1;
nibble = lookupNRTZ[(old | (compressed << 4)) & 31];
old = compressed >> 1;
data = (data | nibble) << 4;
p :> word;
fourBits = (word << 7) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
nibble = lookupNRTZ[(old | (compressed << 2)) & 31];
old = compressed >> 3;
data = (data | nibble) << 4;
outuint(oChan, data);
p :> word;
fourBits = (word << 6) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
nibble = lookupNRTZ[(old | (compressed << 1)) & 31];
old = compressed >> 4;
data = nibble << 4;
p :> word;
fourBits = (word << 6) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
old = compressed;
p :> word;
fourBits = (word << 5) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
nibble = lookupNRTZ[(old | (compressed << 4)) & 31];
old = compressed >> 1;
data = (data | nibble) << 4;
p :> word;
fourBits = (word << 5) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
nibble = lookupNRTZ[(old | (compressed << 3)) & 31];
old = compressed >> 2;
data = (data | nibble) << 4;
p :> word;
fourBits = (word << 4) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
nibble = lookupNRTZ[(old | (compressed << 2)) & 31];
old = compressed >> 3;
data = (data | nibble) << 4;
p :> word;
fourBits = (word << 4) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
nibble = lookupNRTZ[(old | (compressed << 1)) & 31];
old = compressed >> 4;
data = (data | nibble) << 4;
p :> word;
fourBits = (word << 3) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
old = compressed;
p :> word;
fourBits = (word << 3) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
nibble = lookupNRTZ[(old | (compressed << 4)) & 31];
old = compressed >> 1;
data = (data | nibble) << 4;
outuint(oChan, data);
p :> word;
if (word != 0 && word+1 != 0) return;
}
}
// GENERATED CODE - DO NOT EDIT
// Comments are in the generator
#include <xs1.h>
#include <stdio.h>
#pragma unsafe arrays
void adatReceiver44100(buffered in port:32 p, chanend oChan) {
const unsigned int mask = 0x80402010;
unsigned compressed;
unsigned nibble, word = 1, fourBits, data;
int old, violation;
unsigned int lookupCrcF[16] = {8, 12, 10, 14, 9, 13, 11, 15, 7, 3, 5, 1, 6, 2, 4, 0};
unsigned int lookupNRTZ[32] = {0, 8, 12, 4, 6, 14, 10, 2, 3, 11, 15, 7, 5, 13, 9, 1,
1, 9, 13, 5, 7, 15, 11, 3, 2, 10, 14, 6, 4, 12, 8, 0};
for(int i = 0; i < 32; i++) { lookupNRTZ[i] <<= 4; }
do {
old = word; p :> word;
} while (word != old || (word != 0 && word+1 != 0));
while(1) {
violation = word;
p when pinsneq(violation) :> int _;
p :> word;
fourBits = (word << 2) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
old = compressed;
p :> word;
fourBits = (word << 6) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
compressed = compressed >> 1;
nibble = lookupNRTZ[(old | (compressed << 4)) & 31];
old = compressed >> 1;
outuint(oChan, nibble << 4 | 1);
p :> word;
fourBits = (word << 4) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
nibble = lookupNRTZ[(old | (compressed << 2)) & 31];
old = compressed >> 3;
data = nibble << 4;
p :> word;
fourBits = (word << 0) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
nibble = lookupNRTZ[(old | (compressed << 1)) & 31];
old = compressed >> 4;
data = (data | nibble) << 4;
p :> word;
fourBits = (word << 5) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
compressed = compressed >> 1;
old = compressed;
p :> word;
fourBits = (word << 2) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
nibble = lookupNRTZ[(old | (compressed << 3)) & 31];
old = compressed >> 2;
data = (data | nibble) << 4;
p :> word;
fourBits = (word << 7) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
compressed = compressed >> 1;
nibble = lookupNRTZ[(old | (compressed << 2)) & 31];
old = compressed >> 3;
data = (data | nibble) << 4;
p :> word;
fourBits = (word << 4) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
old = compressed;
p :> word;
fourBits = (word << 1) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
nibble = lookupNRTZ[(old | (compressed << 4)) & 31];
old = compressed >> 1;
data = (data | nibble) << 4;
p :> word;
fourBits = (word << 5) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
compressed = compressed >> 1;
nibble = lookupNRTZ[(old | (compressed << 3)) & 31];
old = compressed >> 2;
data = (data | nibble) << 4;
outuint(oChan, data);
p :> word;
fourBits = (word << 3) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
nibble = lookupNRTZ[(old | (compressed << 1)) & 31];
old = compressed >> 4;
data = nibble << 4;
p :> word;
fourBits = (word << 7) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
compressed = compressed >> 1;
old = compressed;
p :> word;
fourBits = (word << 4) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
nibble = lookupNRTZ[(old | (compressed << 3)) & 31];
old = compressed >> 2;
data = (data | nibble) << 4;
p :> word;
fourBits = (word << 1) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
nibble = lookupNRTZ[(old | (compressed << 2)) & 31];
old = compressed >> 3;
data = (data | nibble) << 4;
p :> word;
fourBits = (word << 6) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
compressed = compressed >> 1;
old = old | compressed << 1;
p :> word;
fourBits = (word << 3) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
nibble = lookupNRTZ[(old | (compressed << 4)) & 31];
old = compressed >> 1;
data = (data | nibble) << 4;
p :> word;
fourBits = (word << 0) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
nibble = lookupNRTZ[(old | (compressed << 3)) & 31];
old = compressed >> 2;
data = (data | nibble) << 4;
p :> word;
fourBits = (word << 5) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
compressed = compressed >> 1;
nibble = lookupNRTZ[(old | (compressed << 2)) & 31];
old = compressed >> 3;
data = (data | nibble) << 4;
outuint(oChan, data);
p :> word;
fourBits = (word << 2) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
old = compressed;
p :> word;
fourBits = (word << 7) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
compressed = compressed >> 1;
nibble = lookupNRTZ[(old | (compressed << 4)) & 31];
old = compressed >> 1;
data = nibble << 4;
p :> word;
fourBits = (word << 4) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
nibble = lookupNRTZ[(old | (compressed << 2)) & 31];
old = compressed >> 3;
data = (data | nibble) << 4;
p :> word;
fourBits = (word << 1) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
nibble = lookupNRTZ[(old | (compressed << 1)) & 31];
old = compressed >> 4;
data = (data | nibble) << 4;
p :> word;
fourBits = (word << 5) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
compressed = compressed >> 1;
old = compressed;
p :> word;
fourBits = (word << 3) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
nibble = lookupNRTZ[(old | (compressed << 3)) & 31];
old = compressed >> 2;
data = (data | nibble) << 4;
p :> word;
fourBits = (word << 7) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
compressed = compressed >> 1;
nibble = lookupNRTZ[(old | (compressed << 2)) & 31];
old = compressed >> 3;
data = (data | nibble) << 4;
p :> word;
fourBits = (word << 4) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
old = compressed;
p :> word;
fourBits = (word << 1) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
nibble = lookupNRTZ[(old | (compressed << 4)) & 31];
old = compressed >> 1;
data = (data | nibble) << 4;
outuint(oChan, data);
p :> word;
fourBits = (word << 6) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
compressed = compressed >> 1;
nibble = lookupNRTZ[(old | (compressed << 3)) & 31];
old = compressed >> 2;
data = nibble << 4;
p :> word;
fourBits = (word << 3) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
nibble = lookupNRTZ[(old | (compressed << 1)) & 31];
old = compressed >> 4;
data = (data | nibble) << 4;
p :> word;
fourBits = (word << 0) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
old = compressed;
p :> word;
fourBits = (word << 4) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
compressed = compressed >> 1;
nibble = lookupNRTZ[(old | (compressed << 4)) & 31];
old = compressed >> 1;
data = (data | nibble) << 4;
p :> word;
fourBits = (word << 2) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
nibble = lookupNRTZ[(old | (compressed << 2)) & 31];
old = compressed >> 3;
data = (data | nibble) << 4;
p :> word;
fourBits = (word << 6) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
compressed = compressed >> 1;
old = old | compressed << 1;
p :> word;
fourBits = (word << 4) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
nibble = lookupNRTZ[(old | (compressed << 4)) & 31];
old = compressed >> 1;
data = (data | nibble) << 4;
p :> word;
fourBits = (word << 0) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
nibble = lookupNRTZ[(old | (compressed << 3)) & 31];
old = compressed >> 2;
data = (data | nibble) << 4;
outuint(oChan, data);
p :> word;
fourBits = (word << 5) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
compressed = compressed >> 1;
nibble = lookupNRTZ[(old | (compressed << 2)) & 31];
old = compressed >> 3;
data = nibble << 4;
p :> word;
fourBits = (word << 2) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
old = compressed;
p :> word;
fourBits = (word << 7) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
compressed = compressed >> 1;
nibble = lookupNRTZ[(old | (compressed << 4)) & 31];
old = compressed >> 1;
data = (data | nibble) << 4;
p :> word;
fourBits = (word << 4) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
nibble = lookupNRTZ[(old | (compressed << 2)) & 31];
old = compressed >> 3;
data = (data | nibble) << 4;
p :> word;
fourBits = (word << 1) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
nibble = lookupNRTZ[(old | (compressed << 1)) & 31];
old = compressed >> 4;
data = (data | nibble) << 4;
p :> word;
fourBits = (word << 5) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
compressed = compressed >> 1;
old = compressed;
p :> word;
fourBits = (word << 3) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
nibble = lookupNRTZ[(old | (compressed << 3)) & 31];
old = compressed >> 2;
data = (data | nibble) << 4;
p :> word;
fourBits = (word << 7) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
compressed = compressed >> 1;
nibble = lookupNRTZ[(old | (compressed << 2)) & 31];
old = compressed >> 3;
data = (data | nibble) << 4;
outuint(oChan, data);
p :> word;
fourBits = (word << 4) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
old = compressed;
p :> word;
fourBits = (word << 1) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
nibble = lookupNRTZ[(old | (compressed << 4)) & 31];
old = compressed >> 1;
data = nibble << 4;
p :> word;
fourBits = (word << 6) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
compressed = compressed >> 1;
nibble = lookupNRTZ[(old | (compressed << 3)) & 31];
old = compressed >> 2;
data = (data | nibble) << 4;
p :> word;
fourBits = (word << 3) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
nibble = lookupNRTZ[(old | (compressed << 1)) & 31];
old = compressed >> 4;
data = (data | nibble) << 4;
p :> word;
fourBits = (word << 0) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
old = compressed;
p :> word;
fourBits = (word << 4) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
compressed = compressed >> 1;
nibble = lookupNRTZ[(old | (compressed << 4)) & 31];
old = compressed >> 1;
data = (data | nibble) << 4;
p :> word;
fourBits = (word << 2) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
nibble = lookupNRTZ[(old | (compressed << 2)) & 31];
old = compressed >> 3;
data = (data | nibble) << 4;
p :> word;
fourBits = (word << 6) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
compressed = compressed >> 1;
old = old | compressed << 1;
p :> word;
fourBits = (word << 4) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
nibble = lookupNRTZ[(old | (compressed << 4)) & 31];
old = compressed >> 1;
data = (data | nibble) << 4;
outuint(oChan, data);
p :> word;
fourBits = (word << 1) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
nibble = lookupNRTZ[(old | (compressed << 3)) & 31];
old = compressed >> 2;
data = nibble << 4;
p :> word;
fourBits = (word << 5) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
compressed = compressed >> 1;
nibble = lookupNRTZ[(old | (compressed << 2)) & 31];
old = compressed >> 3;
data = (data | nibble) << 4;
p :> word;
fourBits = (word << 3) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
old = compressed;
p :> word;
fourBits = (word << 7) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
compressed = compressed >> 1;
nibble = lookupNRTZ[(old | (compressed << 4)) & 31];
old = compressed >> 1;
data = (data | nibble) << 4;
p :> word;
fourBits = (word << 4) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
nibble = lookupNRTZ[(old | (compressed << 2)) & 31];
old = compressed >> 3;
data = (data | nibble) << 4;
p :> word;
fourBits = (word << 1) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
nibble = lookupNRTZ[(old | (compressed << 1)) & 31];
old = compressed >> 4;
data = (data | nibble) << 4;
p :> word;
fourBits = (word << 6) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
compressed = compressed >> 1;
old = compressed;
p :> word;
fourBits = (word << 3) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
nibble = lookupNRTZ[(old | (compressed << 3)) & 31];
old = compressed >> 2;
data = (data | nibble) << 4;
outuint(oChan, data);
p :> word;
fourBits = (word << 0) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
nibble = lookupNRTZ[(old | (compressed << 2)) & 31];
old = compressed >> 3;
data = nibble << 4;
p :> word;
fourBits = (word << 4) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
compressed = compressed >> 1;
old = old | compressed << 1;
p :> word;
fourBits = (word << 2) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
nibble = lookupNRTZ[(old | (compressed << 4)) & 31];
old = compressed >> 1;
data = (data | nibble) << 4;
p :> word;
fourBits = (word << 6) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
compressed = compressed >> 1;
nibble = lookupNRTZ[(old | (compressed << 3)) & 31];
old = compressed >> 2;
data = (data | nibble) << 4;
p :> word;
fourBits = (word << 4) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
nibble = lookupNRTZ[(old | (compressed << 1)) & 31];
old = compressed >> 4;
data = (data | nibble) << 4;
p :> word;
fourBits = (word << 0) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
old = compressed;
p :> word;
fourBits = (word << 5) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
compressed = compressed >> 1;
nibble = lookupNRTZ[(old | (compressed << 4)) & 31];
old = compressed >> 1;
data = (data | nibble) << 4;
p :> word;
fourBits = (word << 2) & mask;
crc32(fourBits, 0xf, 0xf);
compressed = lookupCrcF[fourBits];
nibble = lookupNRTZ[(old | (compressed << 2)) & 31];
old = compressed >> 3;
data = (data | nibble) << 4;
outuint(oChan, data);
p :> word;
if (word != 0 && word+1 != 0) return;
}
}