1 | import struct
|
---|
2 | import numpy
|
---|
3 |
|
---|
4 | class AmmosAudioDemodType():
|
---|
5 |
|
---|
6 | @classmethod
|
---|
7 | @property
|
---|
8 | def mapping(cls):
|
---|
9 | return {0: 'FM', 1: 'AM', 5: 'ISB', 6: 'CW',
|
---|
10 | 7: 'USB', 8: 'LSB', 256: 'DIGITAL',
|
---|
11 | 0xFFFFFFFF: 'UNKNOWN'}
|
---|
12 |
|
---|
13 | def __init__(self, demod_type):
|
---|
14 | self.demod_type = demod_type
|
---|
15 |
|
---|
16 | def __str__(self):
|
---|
17 | return AmmosAudioDemodType.mapping[self.demod_type]
|
---|
18 |
|
---|
19 | class AmmosAudioDataHeader():
|
---|
20 |
|
---|
21 | @classmethod
|
---|
22 | def from_bytes(cls, bytes):
|
---|
23 | elements = struct.unpack('<IIQIIIII', bytes)
|
---|
24 | sample_rate = elements[0]
|
---|
25 | status = elements[1]
|
---|
26 | frequency = elements[2]
|
---|
27 | demod_bandwidth = elements[3]
|
---|
28 | demod_type = elements[4]
|
---|
29 | sample_count = elements[5]
|
---|
30 | channel_count = elements[6]
|
---|
31 | sample_size = elements[7]
|
---|
32 | return AmmosAudioDataHeader(sample_rate, status, frequency, demod_bandwidth, demod_type,
|
---|
33 | sample_count, channel_count, sample_size)
|
---|
34 |
|
---|
35 | def __init__(self, sample_rate, status, frequency, demod_bandwidth, demod_type, sample_count, channel_count, sample_size):
|
---|
36 | self.sample_rate = sample_rate
|
---|
37 | self.status = status
|
---|
38 | self.frequency = frequency
|
---|
39 | self.demod_bandwidth = demod_bandwidth
|
---|
40 | self.demod_type = AmmosAudioDemodType(demod_type)
|
---|
41 | self.sample_count = sample_count
|
---|
42 | self.channel_count = channel_count
|
---|
43 | self.sample_size = sample_size
|
---|
44 |
|
---|
45 | def __str__(self):
|
---|
46 | return ("\nAmmosAudioDataHeader\n" +
|
---|
47 | "Sample rate:" + str(self.sample_rate) + "\n" +
|
---|
48 | "Status:" + str(self.status) + "\n" +
|
---|
49 | "Frequency:" + str(self.frequency) + "\n" +
|
---|
50 | "Demodulation bandwidth:" + str(self.demod_bandwidth) + "\n" +
|
---|
51 | "Demodulation type:" + str(self.demod_type) + "\n" +
|
---|
52 | "Sample count:" + str(self.sample_count) + "\n" +
|
---|
53 | "Channel count:" + str(self.channel_count) + "\n" +
|
---|
54 | "Sample size:" + str(self.sample_size) + "\n")
|
---|