1 | import struct
|
---|
2 | import numpy as np
|
---|
3 |
|
---|
4 |
|
---|
5 | class AmmosIFDataHeader():
|
---|
6 |
|
---|
7 | @classmethod
|
---|
8 | def from_bytes(cls, bytes):
|
---|
9 | elements = struct.unpack('<IIQIIIQIIIIi', bytes)
|
---|
10 | block_count = elements[0]
|
---|
11 | block_length = int(elements[1])*4
|
---|
12 | timestamp = np.datetime64(int(elements[2])*1000, 'ns')
|
---|
13 | status = elements[3]
|
---|
14 | source_id = elements[4]
|
---|
15 | source_state = elements[5]
|
---|
16 | frequency = elements[6]
|
---|
17 | bandwidth = elements[7]
|
---|
18 | sample_rate = elements[8]
|
---|
19 | interpolation = elements[9]
|
---|
20 | decimation = elements[10]
|
---|
21 | voltage_ref = elements[11]
|
---|
22 |
|
---|
23 | return AmmosIFDataHeader(block_count, block_length, timestamp, status, source_id,
|
---|
24 | source_state, frequency, bandwidth, sample_rate,
|
---|
25 | interpolation, decimation, voltage_ref)
|
---|
26 |
|
---|
27 | def __init__(self, block_count, block_length, timestamp, status, source_id, source_state, frequency,
|
---|
28 | bandwidth, sample_rate, interpolation, decimation, voltage_ref):
|
---|
29 | self.block_count = block_count
|
---|
30 | self.block_length = block_length
|
---|
31 | self.timestamp = timestamp
|
---|
32 | self.status = status
|
---|
33 | self.source_id = source_id
|
---|
34 | self.source_state = source_state
|
---|
35 | self.frequency = frequency
|
---|
36 | self.bandwidth = bandwidth
|
---|
37 | self.sample_rate = sample_rate
|
---|
38 | self.interpolation = interpolation
|
---|
39 | self.decimation = decimation
|
---|
40 | self.voltage_ref = voltage_ref
|
---|
41 |
|
---|
42 | def header_size(self):
|
---|
43 | return 56
|
---|
44 |
|
---|
45 | def __str_(self):
|
---|
46 | output = ("\nGlobal frame body data header\n" +
|
---|
47 | "-----------------------------\n" +
|
---|
48 | "Block count:" + str(self.block_count) + "\n" +
|
---|
49 | "Block length:" + str(self.block_length) + "\n" +
|
---|
50 | "Time stamp:" + str(self.timestamp) + "\n" +
|
---|
51 | "Frequency:" + str(self.frequency) + "\n" +
|
---|
52 | "Bandwidth:" + str(self.bandwidth) + "\n" +
|
---|
53 | "Sample rate:" + str(self.sample_rate) + "\n")
|
---|
54 | return output
|
---|