aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAndreas Eversberg <jolly@eversberg.eu>2020-01-12 07:54:25 +0100
committerAndreas Eversberg <jolly@eversberg.eu>2020-01-12 11:17:58 +0100
commitf132059edf70aed8bab58d03472b4b13aadda68e (patch)
tree983e645e52291258a5d4f31831bd9246d879f3dd /src
parent0cfcf671572f512f4d0a0d13d149b0b293d366f7 (diff)
Add clock function to call interface
Implementations will have a clock to play tones, if no clock is available from a transceiver.
Diffstat (limited to 'src')
-rw-r--r--src/amps/amps.c2
-rw-r--r--src/anetz/anetz.c2
-rw-r--r--src/bnetz/bnetz.c2
-rw-r--r--src/cnetz/cnetz.c2
-rw-r--r--src/eurosignal/dsp.c7
-rw-r--r--src/eurosignal/eurosignal.c37
-rw-r--r--src/eurosignal/eurosignal.h2
-rw-r--r--src/imts/imts.c2
-rw-r--r--src/jolly/jolly.c2
-rw-r--r--src/libmobile/call.c2
-rw-r--r--src/libmobile/call.h3
-rw-r--r--src/nmt/nmt.c2
-rw-r--r--src/r2000/r2000.c2
-rw-r--r--src/test/test_dms.c2
-rw-r--r--src/test/test_sms.c2
15 files changed, 44 insertions, 27 deletions
diff --git a/src/amps/amps.c b/src/amps/amps.c
index 4206adb..39435b5 100644
--- a/src/amps/amps.c
+++ b/src/amps/amps.c
@@ -1076,6 +1076,8 @@ void call_down_audio(int callref, sample_t *samples, int count)
}
}
+void call_down_clock(void) {}
+
/* Timeout handling */
void transaction_timeout(struct timer *timer)
{
diff --git a/src/anetz/anetz.c b/src/anetz/anetz.c
index d447377..0aac909 100644
--- a/src/anetz/anetz.c
+++ b/src/anetz/anetz.c
@@ -540,5 +540,7 @@ void call_down_audio(int callref, sample_t *samples, int count)
}
}
+void call_down_clock(void) {}
+
void dump_info(void) {}
diff --git a/src/bnetz/bnetz.c b/src/bnetz/bnetz.c
index 4c597bb..86229ea 100644
--- a/src/bnetz/bnetz.c
+++ b/src/bnetz/bnetz.c
@@ -862,5 +862,7 @@ void call_down_audio(int callref, sample_t *samples, int count)
}
}
+void call_down_clock(void) {}
+
void dump_info(void) {}
diff --git a/src/cnetz/cnetz.c b/src/cnetz/cnetz.c
index 0fc2f0a..c9b958e 100644
--- a/src/cnetz/cnetz.c
+++ b/src/cnetz/cnetz.c
@@ -560,6 +560,8 @@ void call_down_audio(int callref, sample_t *samples, int count)
}
}
+void call_down_clock(void) {}
+
int call_down_setup(int callref, const char __attribute__((unused)) *caller_id, enum number_type __attribute__((unused)) caller_type, const char *dialing)
{
sender_t *sender;
diff --git a/src/eurosignal/dsp.c b/src/eurosignal/dsp.c
index d40c0d2..7119935 100644
--- a/src/eurosignal/dsp.c
+++ b/src/eurosignal/dsp.c
@@ -265,13 +265,6 @@ void sender_receive(sender_t *sender, sample_t *samples, int length, double __at
if (euro->rx)
tone_decode(euro, down, count);
-
- /* whenever a chunk of anouncement audio should be played toward caller */
- euro->chunk_count += count;
- if (euro->chunk_count >= 160) {
- euro->chunk_count -= 160;
- euro_clock_chunk(sender);
- }
}
/* Generate tone of paging digits. */
diff --git a/src/eurosignal/eurosignal.c b/src/eurosignal/eurosignal.c
index 39a9cf0..21a2730 100644
--- a/src/eurosignal/eurosignal.c
+++ b/src/eurosignal/eurosignal.c
@@ -525,32 +525,35 @@ static void call_play_beep(euro_call_t *call)
}
/* loop through all calls and play the announcement */
-void euro_clock_chunk(sender_t *sender)
+void call_down_clock(void)
{
+ sender_t *sender;
euro_t *euro;
euro_call_t *call;
- if (sender == sender_head) {
- /* use first tranceiver clock to clock calls without a transceiver */
- for (call = ooo_call_list; call; call = call->next) {
+ /* clock all calls without a transceiver */
+ for (call = ooo_call_list; call; call = call->next) {
+ /* no callref */
+ if (!call->callref)
+ continue;
+ /* beep or announcement */
+ if (call->state == EURO_CALL_BEEPING)
+ call_play_beep(call);
+ else
+ call_play_announcement(call);
+ }
+
+ /* clock all calls that have a transceiver */
+ for (sender = sender_head; sender; sender = sender->next) {
+ euro = (euro_t *) sender;
+ for (call = euro->call_list; call; call = call->next) {
/* no callref */
if (!call->callref)
continue;
- /* beep or announcement */
- if (call->state == EURO_CALL_BEEPING)
- call_play_beep(call);
- else
- call_play_announcement(call);
+ /* announcement */
+ call_play_announcement(call);
}
}
- euro = (euro_t *) sender;
- for (call = euro->call_list; call; call = call->next) {
- /* no callref */
- if (!call->callref)
- continue;
- /* announcement */
- call_play_announcement(call);
- }
}
/* Timeout handling */
diff --git a/src/eurosignal/eurosignal.h b/src/eurosignal/eurosignal.h
index a66e3fe..2b48677 100644
--- a/src/eurosignal/eurosignal.h
+++ b/src/eurosignal/eurosignal.h
@@ -67,7 +67,6 @@ typedef struct eurosignal {
double tx_time; /* current elapsed time of tone */
char tx_digits[7]; /* current ID beeing transmitted */
int tx_digit_index; /* current digit beein transmitted */
- int chunk_count; /* current elapsed sample of 20ms audio chunk */
fm_demod_t rx_demod; /* demodulator for frequency */
iir_filter_t rx_lp; /* low pass to filter the frequency result */
int rx_digit_count; /* count the tone until detected */
@@ -87,5 +86,4 @@ int euro_create(const char *kanal, const char *audiodev, int use_sdr, int sample
void euro_destroy(sender_t *sender);
void euro_get_id(euro_t *euro, char *id);
void euro_receive_id(euro_t *euro, char *id);
-void euro_clock_chunk(sender_t *sender);
diff --git a/src/imts/imts.c b/src/imts/imts.c
index 2056806..721fb51 100644
--- a/src/imts/imts.c
+++ b/src/imts/imts.c
@@ -1322,5 +1322,7 @@ void call_down_audio(int callref, sample_t *samples, int count)
}
}
+void call_down_clock(void) {}
+
void dump_info(void) {}
diff --git a/src/jolly/jolly.c b/src/jolly/jolly.c
index 33dd0b8..ba21d74 100644
--- a/src/jolly/jolly.c
+++ b/src/jolly/jolly.c
@@ -632,5 +632,7 @@ void call_down_audio(int callref, sample_t *samples, int count)
}
}
+void call_down_clock(void) {}
+
void dump_info(void) {}
diff --git a/src/libmobile/call.c b/src/libmobile/call.c
index 7c51df1..1338f9d 100644
--- a/src/libmobile/call.c
+++ b/src/libmobile/call.c
@@ -586,6 +586,8 @@ void call_clock(void)
uint8_t buf[sizeof(struct gsm_data_frame) + 160 * sizeof(int16_t)];
struct gsm_data_frame *data = (struct gsm_data_frame *)buf;
+ call_down_clock();
+
while(process) {
if (process->pattern != PATTERN_NONE) {
data->msg_type = ANALOG_8000HZ;
diff --git a/src/libmobile/call.h b/src/libmobile/call.h
index 7273a1e..f87051d 100644
--- a/src/libmobile/call.h
+++ b/src/libmobile/call.h
@@ -36,5 +36,6 @@ void call_up_audio(int callref, sample_t *samples, int count);
void call_down_audio(int callref, sample_t *samples, int count);
/* clock to transmit to */
-void call_clock(void);
+void call_clock(void); /* from main loop */
+void call_down_clock(void); /* towards mobile implementation */
diff --git a/src/nmt/nmt.c b/src/nmt/nmt.c
index 3d0f75d..7b7ff73 100644
--- a/src/nmt/nmt.c
+++ b/src/nmt/nmt.c
@@ -1905,6 +1905,8 @@ void call_down_audio(int callref, sample_t *samples, int count)
}
}
+void call_down_clock(void) {}
+
/*
* SMS layer messages
*/
diff --git a/src/r2000/r2000.c b/src/r2000/r2000.c
index 535c0a8..d542dd6 100644
--- a/src/r2000/r2000.c
+++ b/src/r2000/r2000.c
@@ -1582,5 +1582,7 @@ void call_down_audio(int callref, sample_t *samples, int count)
}
}
+void call_down_clock(void) {}
+
void dump_info(void) {}
diff --git a/src/test/test_dms.c b/src/test/test_dms.c
index 379eaa6..a64bf43 100644
--- a/src/test/test_dms.c
+++ b/src/test/test_dms.c
@@ -253,5 +253,7 @@ int main(void)
return 0;
}
+void call_down_clock(void) {}
+
void print_image(void) {}
diff --git a/src/test/test_sms.c b/src/test/test_sms.c
index 7f901ad..f9f2cd2 100644
--- a/src/test/test_sms.c
+++ b/src/test/test_sms.c
@@ -162,5 +162,7 @@ int main(void)
return 0;
}
+void call_down_clock(void) {}
+
void print_image(void) {}