FreeCalypso > hg > ice1-trau-tester
annotate pcm-br/xconn.c @ 35:499d065ee591
new program itt-pcm-br (PCM bridge)
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Wed, 28 Aug 2024 05:00:38 +0000 |
parents | pcm/read_ts.c@ca351324187a |
children |
rev | line source |
---|---|
2
c03ec046471f
pcm: initial version compiles and links
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1 /* |
35
499d065ee591
new program itt-pcm-br (PCM bridge)
Mychaela Falconia <falcon@freecalypso.org>
parents:
7
diff
changeset
|
2 * The two functions in this module get called from Osmocom select loop |
499d065ee591
new program itt-pcm-br (PCM bridge)
Mychaela Falconia <falcon@freecalypso.org>
parents:
7
diff
changeset
|
3 * whenever each timeslot data socket to osmo-e1d is ready for reading; |
499d065ee591
new program itt-pcm-br (PCM bridge)
Mychaela Falconia <falcon@freecalypso.org>
parents:
7
diff
changeset
|
4 * the cross-connect of the two timeslots is implemented here. |
2
c03ec046471f
pcm: initial version compiles and links
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
5 */ |
c03ec046471f
pcm: initial version compiles and links
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
6 |
c03ec046471f
pcm: initial version compiles and links
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
7 #include <stdint.h> |
c03ec046471f
pcm: initial version compiles and links
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
8 #include <stdbool.h> |
c03ec046471f
pcm: initial version compiles and links
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
9 #include <stdio.h> |
c03ec046471f
pcm: initial version compiles and links
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
10 #include <stdlib.h> |
c03ec046471f
pcm: initial version compiles and links
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
11 #include <unistd.h> |
c03ec046471f
pcm: initial version compiles and links
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
12 |
c03ec046471f
pcm: initial version compiles and links
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
13 #include <osmocom/core/select.h> |
c03ec046471f
pcm: initial version compiles and links
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
14 |
c03ec046471f
pcm: initial version compiles and links
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
15 #include "globals.h" |
c03ec046471f
pcm: initial version compiles and links
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
16 |
35
499d065ee591
new program itt-pcm-br (PCM bridge)
Mychaela Falconia <falcon@freecalypso.org>
parents:
7
diff
changeset
|
17 uint8_t readbuf_a[160], readbuf_b[160]; |
499d065ee591
new program itt-pcm-br (PCM bridge)
Mychaela Falconia <falcon@freecalypso.org>
parents:
7
diff
changeset
|
18 FILE *rec_file_a, *rec_file_b; |
2
c03ec046471f
pcm: initial version compiles and links
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
19 |
35
499d065ee591
new program itt-pcm-br (PCM bridge)
Mychaela Falconia <falcon@freecalypso.org>
parents:
7
diff
changeset
|
20 int tsa_fd_cb(struct osmo_fd *ofd, unsigned int what) |
2
c03ec046471f
pcm: initial version compiles and links
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
21 { |
c03ec046471f
pcm: initial version compiles and links
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
22 int rc; |
c03ec046471f
pcm: initial version compiles and links
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
23 |
35
499d065ee591
new program itt-pcm-br (PCM bridge)
Mychaela Falconia <falcon@freecalypso.org>
parents:
7
diff
changeset
|
24 rc = read(tsa_fd, readbuf_a, 160); |
2
c03ec046471f
pcm: initial version compiles and links
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
25 if (rc != 160) { |
c03ec046471f
pcm: initial version compiles and links
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
26 fprintf(stderr, |
35
499d065ee591
new program itt-pcm-br (PCM bridge)
Mychaela Falconia <falcon@freecalypso.org>
parents:
7
diff
changeset
|
27 "error: read from ts A returned %d instead of 160\n", |
2
c03ec046471f
pcm: initial version compiles and links
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
28 rc); |
c03ec046471f
pcm: initial version compiles and links
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
29 exit(1); |
c03ec046471f
pcm: initial version compiles and links
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
30 } |
35
499d065ee591
new program itt-pcm-br (PCM bridge)
Mychaela Falconia <falcon@freecalypso.org>
parents:
7
diff
changeset
|
31 if (rec_file_a) |
499d065ee591
new program itt-pcm-br (PCM bridge)
Mychaela Falconia <falcon@freecalypso.org>
parents:
7
diff
changeset
|
32 fwrite(readbuf_a, 1, 160, rec_file_a); |
499d065ee591
new program itt-pcm-br (PCM bridge)
Mychaela Falconia <falcon@freecalypso.org>
parents:
7
diff
changeset
|
33 write(tsb_fd, readbuf_a, 160); |
2
c03ec046471f
pcm: initial version compiles and links
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
34 return 0; |
c03ec046471f
pcm: initial version compiles and links
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
35 } |
35
499d065ee591
new program itt-pcm-br (PCM bridge)
Mychaela Falconia <falcon@freecalypso.org>
parents:
7
diff
changeset
|
36 |
499d065ee591
new program itt-pcm-br (PCM bridge)
Mychaela Falconia <falcon@freecalypso.org>
parents:
7
diff
changeset
|
37 int tsb_fd_cb(struct osmo_fd *ofd, unsigned int what) |
499d065ee591
new program itt-pcm-br (PCM bridge)
Mychaela Falconia <falcon@freecalypso.org>
parents:
7
diff
changeset
|
38 { |
499d065ee591
new program itt-pcm-br (PCM bridge)
Mychaela Falconia <falcon@freecalypso.org>
parents:
7
diff
changeset
|
39 int rc; |
499d065ee591
new program itt-pcm-br (PCM bridge)
Mychaela Falconia <falcon@freecalypso.org>
parents:
7
diff
changeset
|
40 |
499d065ee591
new program itt-pcm-br (PCM bridge)
Mychaela Falconia <falcon@freecalypso.org>
parents:
7
diff
changeset
|
41 rc = read(tsb_fd, readbuf_b, 160); |
499d065ee591
new program itt-pcm-br (PCM bridge)
Mychaela Falconia <falcon@freecalypso.org>
parents:
7
diff
changeset
|
42 if (rc != 160) { |
499d065ee591
new program itt-pcm-br (PCM bridge)
Mychaela Falconia <falcon@freecalypso.org>
parents:
7
diff
changeset
|
43 fprintf(stderr, |
499d065ee591
new program itt-pcm-br (PCM bridge)
Mychaela Falconia <falcon@freecalypso.org>
parents:
7
diff
changeset
|
44 "error: read from ts B returned %d instead of 160\n", |
499d065ee591
new program itt-pcm-br (PCM bridge)
Mychaela Falconia <falcon@freecalypso.org>
parents:
7
diff
changeset
|
45 rc); |
499d065ee591
new program itt-pcm-br (PCM bridge)
Mychaela Falconia <falcon@freecalypso.org>
parents:
7
diff
changeset
|
46 exit(1); |
499d065ee591
new program itt-pcm-br (PCM bridge)
Mychaela Falconia <falcon@freecalypso.org>
parents:
7
diff
changeset
|
47 } |
499d065ee591
new program itt-pcm-br (PCM bridge)
Mychaela Falconia <falcon@freecalypso.org>
parents:
7
diff
changeset
|
48 if (rec_file_b) |
499d065ee591
new program itt-pcm-br (PCM bridge)
Mychaela Falconia <falcon@freecalypso.org>
parents:
7
diff
changeset
|
49 fwrite(readbuf_b, 1, 160, rec_file_b); |
499d065ee591
new program itt-pcm-br (PCM bridge)
Mychaela Falconia <falcon@freecalypso.org>
parents:
7
diff
changeset
|
50 write(tsa_fd, readbuf_b, 160); |
499d065ee591
new program itt-pcm-br (PCM bridge)
Mychaela Falconia <falcon@freecalypso.org>
parents:
7
diff
changeset
|
51 return 0; |
499d065ee591
new program itt-pcm-br (PCM bridge)
Mychaela Falconia <falcon@freecalypso.org>
parents:
7
diff
changeset
|
52 } |