int32 start
int32 length
charptr32 file name
bool32.rising trigger
int32 test
objref wave
int ntrig;
WORKING_AREA(waThreadSD, 800);
ntrig = 0;
if ((inlet_trig > 0) && !ntrig) {
ntrig = 1;
FIL FileObject;
FRESULT err;
UINT bytes_written;
codec_clearbuffer();
err = f_open(&FileObject, inlet_filename, FA_WRITE | FA_CREATE_ALWAYS);
if (err != FR_OK) {
report_fatfs_error(err, inlet_filename);
return;
}
// int rem_sz = sizeof(*attr_table.array)*attr_table.LENGTH;
int rem_sz = inlet_length << 1;
outlet_test = rem_sz;
int offset = inlet_start << 1;
while (rem_sz > 0) {
if (rem_sz > sizeof(fbuff)) {
memcpy((char *)fbuff, (char *)(&attr_wave.array[0]) + offset,
sizeof(fbuff));
err = f_write(&FileObject, fbuff, sizeof(fbuff), &bytes_written);
rem_sz -= sizeof(fbuff);
offset += sizeof(fbuff);
} else {
memcpy((char *)fbuff, (char *)(&attr_wave.array[0]) + offset, rem_sz);
err = f_write(&FileObject, fbuff, rem_sz, &bytes_written);
rem_sz = 0;
}
}
if (err != FR_OK)
report_fatfs_error(err, inlet_filename);
err = f_close(&FileObject);
if (err != FR_OK)
report_fatfs_error(err, inlet_filename);
} else if (!(inlet_trig > 0))
ntrig = 0;