Commit 8403ad0c authored by Titouan Soulard's avatar Titouan Soulard

trx-bridge: loop on reading and writing values

parent 6ba86c87
......@@ -128,7 +128,17 @@ int main(int argc, char *argv[]) {
struct PotomlTomlSubset *output_driver_config;
struct PotomlTomlSubset *output_driver_start_config;
TRXState input_trx_state;
TRXState output_trx_state;
TRXDriverParams2 *output_trx_start_params;
TRXReadMetadata read_md;
TRXWriteMetadata write_md;
trx_timestamp_t input_ts;
trx_timestamp_t output_ts = 0;
int opt;
int count;
int result;
char *error;
......@@ -146,15 +156,11 @@ int main(int argc, char *argv[]) {
int (*input_lib_init)(TRXState *s);
int (*output_lib_init)(TRXState *s);
TRXState input_trx_state;
TRXState output_trx_state;
TRXDriverParams2 *output_trx_start_params;
float *input_samples = malloc(8192 * sizeof(float));
float *input_channels[2] = { input_samples, &input_samples[4096] };
// This is used for debugging purposes, and was improvised by nonprofessionals.
// Do not attempt to reproduce it.
for(int i = 0; i < sizeof(TRXState); i++) {
*((char *) &input_trx_state + i) = (char) (i % 255);
}
float *output_samples = malloc(8192 * sizeof(float));
float *output_channels[2] = { output_samples, &output_samples[4096] };
while((opt = getopt(argc, argv, "c:p:")) != -1) {
if(opt == 'c') {
......@@ -280,7 +286,28 @@ int main(int argc, char *argv[]) {
return -1;
}
while(1);
printf("trx-bridge: started successfully\n");
while(1) {
// Dummy read to get timestamp
// Expected behavior: input timestamp is set once based on output timestamp
// and incremented every time.
count = output_trx_state.trx_read_func2(&output_trx_state, &output_ts, (void **) output_channels, 4096, 0, &read_md);
if(input_ts == 0) input_ts = output_ts + 4 * 23040;
// However, sometimes, the output timestamp deviates, so they should be
// matched again.
if(output_ts != input_ts - 4 * 23040) {
printf("TS don't match %ld != %ld\n", output_ts, input_ts - 4 * 23040);
input_ts = output_ts + 4 * 23040;
}
// Read and write back after updating the timestamp
count = input_trx_state.trx_read_func2(&input_trx_state, &input_ts, (void **) input_channels, count, 0, &read_md);
input_ts += count;
output_trx_state.trx_write_func2(&output_trx_state, input_ts, (const void **) input_channels, count / 2, 0, &write_md);
}
dlclose(input_lib_handle);
dlclose(output_lib_handle);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment