85 lines
1.7 KiB
Python
85 lines
1.7 KiB
Python
|
|
# P25 TDMA Decoder (C) Copyright 2013 KA1RBI
|
|
#
|
|
# This file is part of OP25
|
|
#
|
|
# OP25 is free software; you can redistribute it and/or modify it
|
|
# under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation; either version 3, or (at your option)
|
|
# any later version.
|
|
#
|
|
# OP25 is distributed in the hope that it will be useful, but WITHOUT
|
|
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
|
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
|
|
# License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with OP25; see the file COPYING. If not, write to the Free
|
|
# Software Foundation, Inc., 51 Franklin Street, Boston, MA
|
|
# 02110-1301, USA.
|
|
|
|
import numpy as np
|
|
|
|
def rev_int(n,l):
|
|
j=0
|
|
for i in range(l):
|
|
b=n&1
|
|
n=n>>1
|
|
j = (j << 1) | b
|
|
return j
|
|
|
|
def bits_to_dibits(bits):
|
|
d = []
|
|
for i in range(len(bits)>>1):
|
|
d.append((bits[i*2]<<1) + bits[i*2+1])
|
|
return d
|
|
|
|
def dibits_to_bits(dibits):
|
|
b = []
|
|
for d in dibits:
|
|
b.append((d>>1)&1)
|
|
b.append(d&1)
|
|
return b
|
|
|
|
def mk_array(n, l):
|
|
a = []
|
|
for i in range(0,l):
|
|
a.insert(0, n & 1)
|
|
n = n >> 1
|
|
return np.array(a)
|
|
|
|
def mk_int(a):
|
|
res= 0
|
|
for i in range(0, len(a)):
|
|
res = res * 2
|
|
res = res + (a[i] & 1)
|
|
return res
|
|
|
|
def mk_str(a):
|
|
return ''.join(['%s' % (x&1) for x in a])
|
|
|
|
def check_l(a,b):
|
|
ans = 0
|
|
assert len(a) == len(b)
|
|
for i in range(len(a)):
|
|
if (a[i] == b[i]):
|
|
ans += 1
|
|
return ans
|
|
|
|
def fixup(a):
|
|
res = []
|
|
for c in a:
|
|
if c == 3:
|
|
res.append(1)
|
|
else: # -3
|
|
res.append(3)
|
|
|
|
return res
|
|
|
|
def find_sym(pattern, symbols):
|
|
for i in range(0, len(symbols)-len(pattern)):
|
|
chunk = symbols[i : i + len(pattern)]
|
|
if chunk == pattern:
|
|
return i
|
|
return -1
|