aboutsummaryrefslogtreecommitdiffstats
path: root/op25/gr-op25_repeater
diff options
context:
space:
mode:
authorMax <ikj1234i@yahoo.com>2017-04-29 12:32:47 -0400
committerMax <ikj1234i@yahoo.com>2017-04-29 12:32:47 -0400
commite6deba2cd56d8261e779d939054e260404684f5a (patch)
treee274bad333b7cd7bc540b1b05ba9b65b58e2c3d6 /op25/gr-op25_repeater
parent59a78e36711e24a20f40800e63eaf51fcd236bcf (diff)
frame assembler sink-only mode
Diffstat (limited to 'op25/gr-op25_repeater')
-rw-r--r--op25/gr-op25_repeater/apps/p25_decoder.py13
-rw-r--r--op25/gr-op25_repeater/lib/p25_frame_assembler_impl.cc4
-rw-r--r--op25/gr-op25_repeater/lib/p25p1_fdma.cc14
3 files changed, 14 insertions, 17 deletions
diff --git a/op25/gr-op25_repeater/apps/p25_decoder.py b/op25/gr-op25_repeater/apps/p25_decoder.py
index 700f184..bb7dc51 100644
--- a/op25/gr-op25_repeater/apps/p25_decoder.py
+++ b/op25/gr-op25_repeater/apps/p25_decoder.py
@@ -76,7 +76,9 @@ class p25_decoder_sink_b(gr.hier_block2):
self.debug = debug
self.dest = dest
- do_output = True
+ do_output = False
+ if dest == 'wav':
+ do_output = True
do_audio_output = True
if msgq is None:
@@ -94,8 +96,6 @@ class p25_decoder_sink_b(gr.hier_block2):
self.p25_decoders.append(op25_repeater.p25_frame_assembler(wireshark_host, udp_port, debug, do_imbe, do_output, do_msgq, msgq, do_audio_output, True))
self.p25_decoders[slot].set_slotid(slot)
- self.audio_s2f.append(blocks.short_to_float()) # another ridiculous conversion
- self.scaler.append(blocks.multiply_const_ff(1 / 32768.0))
self.xorhash.append('')
if dest == 'wav':
@@ -103,11 +103,12 @@ class p25_decoder_sink_b(gr.hier_block2):
n_channels = 1
sample_rate = 8000
bits_per_sample = 16
+ self.audio_s2f.append(blocks.short_to_float()) # another ridiculous conversion
+ self.scaler.append(blocks.multiply_const_ff(1 / 32768.0))
self.audio_sink.append(blocks.wavfile_sink(filename, n_channels, sample_rate, bits_per_sample))
+ self.connect(self, self.p25_decoders[slot], self.audio_s2f[slot], self.scaler[slot], self.audio_sink[slot])
elif dest == 'audio':
- self.audio_sink.append(audio.sink(_def_audio_rate, audio_output, True))
-
- self.connect(self, self.p25_decoders[slot], self.audio_s2f[slot], self.scaler[slot], self.audio_sink[slot])
+ self.connect(self, self.p25_decoders[slot])
def close_file(self, index=0):
if self.dest != 'wav':
diff --git a/op25/gr-op25_repeater/lib/p25_frame_assembler_impl.cc b/op25/gr-op25_repeater/lib/p25_frame_assembler_impl.cc
index 7f64f39..18a3dff 100644
--- a/op25/gr-op25_repeater/lib/p25_frame_assembler_impl.cc
+++ b/op25/gr-op25_repeater/lib/p25_frame_assembler_impl.cc
@@ -83,7 +83,7 @@ static const int MAX_IN = 1; // maximum number of input streams
p25_frame_assembler_impl::p25_frame_assembler_impl(const char* udp_host, int port, int debug, bool do_imbe, bool do_output, bool do_msgq, gr::msg_queue::sptr queue, bool do_audio_output, bool do_phase2_tdma)
: gr::block("p25_frame_assembler",
gr::io_signature::make (MIN_IN, MAX_IN, sizeof (char)),
- gr::io_signature::make ((do_output || do_audio_output) ? 1 : 0, (do_output || do_audio_output) ? 1 : 0, (do_audio_output) ? sizeof(int16_t) : ((do_output) ? sizeof(char) : 0 ))),
+ gr::io_signature::make ((do_output) ? 1 : 0, (do_output) ? 1 : 0, (do_audio_output && do_output) ? sizeof(int16_t) : ((do_output) ? sizeof(char) : 0 ))),
d_do_imbe(do_imbe),
d_do_output(do_output),
output_queue(),
@@ -94,8 +94,6 @@ static const int MAX_IN = 1; // maximum number of input streams
d_do_msgq(do_msgq),
d_msg_queue(queue)
{
- if (d_do_audio_output && !d_do_output)
- fprintf(stderr, "p25_frame_assembler: error: do_output must be enabled if do_audio_output is enabled\n");
if (d_do_audio_output && !d_do_imbe)
fprintf(stderr, "p25_frame_assembler: error: do_imbe must be enabled if do_audio_output is enabled\n");
if (d_do_phase2_tdma && !d_do_audio_output)
diff --git a/op25/gr-op25_repeater/lib/p25p1_fdma.cc b/op25/gr-op25_repeater/lib/p25p1_fdma.cc
index d317912..51ce715 100644
--- a/op25/gr-op25_repeater/lib/p25p1_fdma.cc
+++ b/op25/gr-op25_repeater/lib/p25p1_fdma.cc
@@ -314,16 +314,14 @@ p25p1_fdma::rx_sym (const uint8_t *syms, int nsyms)
// output one 32-byte msg per 0.020 sec.
// also, 32*9 = 288 byte pkts (for use via UDP)
sprintf(s, "%03x %03x %03x %03x %03x %03x %03x %03x\n", u[0], u[1], u[2], u[3], u[4], u[5], u[6], u[7]);
- if (d_do_output) {
- if (d_do_audio_output) {
- p1voice_decode.rxframe(u);
- } else {
- for (size_t j=0; j < strlen(s); j++) {
- output_queue.push_back(s[j]);
- }
+ if (d_do_audio_output)
+ p1voice_decode.rxframe(u);
+ if (d_do_output && !d_do_audio_output) {
+ for (size_t j=0; j < strlen(s); j++) {
+ output_queue.push_back(s[j]);
}
}
- if (write_sock > 0) {
+ if (d_do_output && write_sock > 0) {
memcpy(&write_buf[write_bufp], s, strlen(s));
write_bufp += strlen(s);
if (write_bufp >= 288) { // 9 * 32 = 288