Skip to content

Commit

Permalink
fix endianness
Browse files Browse the repository at this point in the history
  • Loading branch information
sirfoga committed Nov 1, 2018
1 parent a3281d1 commit 88a994e
Show file tree
Hide file tree
Showing 2 changed files with 74 additions and 25 deletions.
54 changes: 40 additions & 14 deletions peeper/preprocessing/ellipse2n.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,25 @@ def parse_raw_data(values):
:return: decimal value
"""

time_stamp = toggle_endianness(values) # little endian
time_stamp = "".join(time_stamp)
return int(time_stamp, 16) # convert to decimal value
val = toggle_endianness(values) # little endian
val = "".join(val)
return int(val, 16) # convert to decimal value


def to_binary(val, expected_length=8):
"""Converts decimal value to binary
:param val: decimal
:param expected_length: length of data
:return: binary value
"""

val = bin(val)[2:] # to binary

while len(val) < expected_length:
val = "0" + val

return val


def get_hexadecimal(values):
Expand Down Expand Up @@ -53,13 +69,18 @@ def get_STATUS_01(byte_0, byte_1, byte_2, byte_3, byte_4, byte_5, byte_6,
:return: TIME_STAMP, GENERAL_STATUS, CLOCK_STATUS
"""

hexadecimal_values = get_hexadecimal(locals().values())
arguments = list(reversed(list(locals().values())))
hexadecimal_values = get_hexadecimal(arguments)

time_stamp = parse_raw_data(hexadecimal_values[:4]) / 10 ** 6

time_stamp = parse_raw_data(hexadecimal_values[:4])
general_status = parse_raw_data(hexadecimal_values[4: 6])
clock_stauts = parse_raw_data(hexadecimal_values[6:])
general_status = to_binary(general_status, 7)

return time_stamp, general_status, clock_stauts
clock_status = parse_raw_data(hexadecimal_values[6:])
clock_status = to_binary(clock_status, 4)

return time_stamp, general_status, clock_status


def get_IMU_INFO(byte_0, byte_1, byte_2, byte_3, byte_4, byte_5, byte_6,
Expand All @@ -77,11 +98,14 @@ def get_IMU_INFO(byte_0, byte_1, byte_2, byte_3, byte_4, byte_5, byte_6,
:return: TIME_STAMP, IMU_STATUS, TEMPERATURE
"""

hexadecimal_values = get_hexadecimal(locals().values())
arguments = list(reversed(list(locals().values())))
hexadecimal_values = get_hexadecimal(arguments)

time_stamp = parse_raw_data(hexadecimal_values[:4]) / 10 ** 6

time_stamp = parse_raw_data(hexadecimal_values[:4])
imu_status = parse_raw_data(hexadecimal_values[4: 6])
temperature = parse_raw_data(hexadecimal_values[6:])
imu_status = to_binary(imu_status, 10)
temperature = parse_raw_data(hexadecimal_values[6:]) / 10 ** 2

return time_stamp, imu_status, temperature

Expand All @@ -101,10 +125,12 @@ def get_IMU_ACCEL(byte_0, byte_1, byte_2, byte_3, byte_4, byte_5, byte_6,
:return: ACCEL_X, ACCEL_Y, ACCEL_Z
"""

hexadecimal_values = get_hexadecimal(locals().values())
arguments = list(reversed(list(locals().values())))
hexadecimal_values = get_hexadecimal(arguments)
scaling = 10 ** 2

acc_x = parse_raw_data(hexadecimal_values[:2])
acc_y = parse_raw_data(hexadecimal_values[2: 4])
acc_z = parse_raw_data(hexadecimal_values[4: 6])
acc_x = parse_raw_data(hexadecimal_values[:2]) / scaling
acc_y = parse_raw_data(hexadecimal_values[2: 4]) / scaling
acc_z = parse_raw_data(hexadecimal_values[4: 6]) / scaling

return acc_x, acc_y, acc_z
45 changes: 34 additions & 11 deletions peeper/preprocessing/parse_kvaser.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@
from hal.streams.pretty_table import pretty_format_table
from parse import parse

from preprocessing.ellipse2n import get_STATUS_01, get_IMU_INFO, get_IMU_ACCEL

DATA_FIELD_FORMATTERS = [
" {:d} {:d} {:d}" + " {:x}" * i + " " * (8 - i) +
" {:f} {:w}"
Expand Down Expand Up @@ -115,6 +117,32 @@ def parse_args(parser):
return file


def parse_messages(messages, msg_id, func, result_labels):
"""Parses Ellipse2N messages
:param messages: list of messages
:param msg_id: ID of messages to parse
:param func: callable to parse data
:param result_labels: labels of result
:return: Shows parsed data
"""

messages = [
message.get_values() + list(message.parse_data(func))
for message in messages
if message.msg_id == msg_id # just this ID
]

labels = ["Channel", "ID (hex)", "DLC"] + [
"Byte " + str(i)
for i in range(8)
] + ["Timestamp (s)",
"Transmission"] + \
result_labels

print(pretty_format_table(labels, messages))


def parse_file(path):
"""Parses .log file
Expand All @@ -127,18 +155,13 @@ def parse_file(path):
CanbusMessage.parse_kvaser(line)
for line in lines
]
for m in messages:
print(m)
values = [
message.get_values()
for message in messages
]
labels = ["Channel", "ID (hex)", "DLC"] + [
"Byte " + str(i)
for i in range(8)
] + ["Timestamp (s)", "?"]

print(pretty_format_table(labels, values))
parse_messages(messages, 100, get_STATUS_01,
["TIME_STAMP (s)", "GENERAL_STATUS", "CLOCK_STATUS"])
parse_messages(messages, 120, get_IMU_INFO,
["TIME_STAMP (s)", "IMU_STATUS", "TEMPERATURE (°C)"])
parse_messages(messages, 121, get_IMU_ACCEL,
["ACCEL_X (m/s²)", "ACCEL_Y (m/s²)", "ACCEL_Z (m/s²)"])


def main():
Expand Down

0 comments on commit 88a994e

Please sign in to comment.