Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
R
rdma-mwe
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Titouan Soulard
rdma-mwe
Commits
8403ad0c
Commit
8403ad0c
authored
Jan 25, 2024
by
Titouan Soulard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
trx-bridge: loop on reading and writing values
parent
6ba86c87
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
36 additions
and
9 deletions
+36
-9
trx-bridge/bridge.c
trx-bridge/bridge.c
+36
-9
No files found.
trx-bridge/bridge.c
View file @
8403ad0c
...
...
@@ -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
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment