Skip to content

Commit 4a3882a

Browse files
committed
Version 1.3.8, changes in CHANGELOG.md
1 parent da12f20 commit 4a3882a

279 files changed

Lines changed: 6681 additions & 843 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

CHANGELOG.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# Changelog
2+
3+
## [1.3.8] - 2025-11-05
4+
5+
### Added
6+
7+
- This changelog
8+
- Definitions for many messages and parameters
9+
- Defines for CANSTATUS2 message
10+
11+
### Changed
12+
13+
- Improvements for `ixcom.grep.read_file`
14+
- Changed `filename` argument to accept a path, a filehandle or bytes
15+
- Added arguments to select the messages that should be parsed (`only_msg_ids`, `only_msg_names`, `ignore_msg_ids`, `ignore_msg_names`)
16+
- Added argument `get_parameter_history` to parse all logged parameters not only the last occured of each type
17+
- Added argument `stack_varsize_arrays` to stack messages with variable size on one numpy structured array
18+
- Added argument `no_gpstime_on_varsize_arrays` to not calculate the gpstime field (small performance improvement)
19+
- Improved the gpstime calculation to be continuus over a week change (disableable with `no_week_handling` argument)
20+
- Improved memory usage
21+
22+
### Fixed
23+
24+
- Fixed wrong order in `IMU_FILTERED` message definition
25+
- Fixed wrong order in `IPST` message definition
26+
- Fixed parameter naming for `PARGNSS_ANTOFFSET` for different antennas
27+
- Fixed parameter naming for `PAREKF_VMP` for different channels
28+
- Fixed parameter naming for `PARXCOM_SERIALPORT` for different com ports

LICENSE

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
Copyright (c) 2019-2023 iMAR Navigation GmbH
1+
Copyright (c) 2019-2025 iMAR Navigation GmbH
22

33
Permission is hereby granted, free of charge, to any person obtaining a copy
44
of this software and associated documentation files (the "Software"), to deal

ixcom/cmdline.py

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,8 @@ def monitor2xcom(argv = None):
190190
except ixcom.data.ParseError as e:
191191
frame_name = str(e).split('convert ')[1]
192192
args.output.write(f'Corrupt {frame_name} frame\n\n')
193+
except SystemError:
194+
pass
193195

194196

195197
def split_config(argv = None):
@@ -213,26 +215,34 @@ def callback(msg_bytes):
213215
args.output.write(msg_bytes)
214216

215217
xcomparser.add_callback(callback)
216-
xcomparser.process_bytes(args.inputfile.read())
218+
xcomparser.process_file_handle(args.inputfile)
217219
sys.exit(0)
218220
except Exception as ex:
219221
print(ex)
220222
sys.exit(1)
221223

222224
def remove_partial_msgs(argv = None):
223225
parser = argparse.ArgumentParser(description='Removes Partial Messages from XCOMStream')
224-
parser.add_argument('inputfile', metavar='inputfile', type=argparse.FileType('rb'), nargs='?',
226+
parser.add_argument('inputfile', metavar='inputfile', type=argparse.FileType('rb'),
225227
help='Name of the binary XCOMStream file', default = 'XCOMStream.bin')
226-
parser.add_argument('-o', '--output', metavar='output_filename', type=argparse.FileType(mode='wb'),
228+
parser.add_argument('-o', '--output',
227229
help='Filename of the output file', default = 'XCOMStream.clean.bin')
228-
args = parser.parse_args()
230+
parser.add_argument('-rimui', '--remove_imu_invalid',action="store_true", help='Remove POSTPROC and RAWDATA msgs with IMU invalid status')
231+
args = parser.parse_args(argv)
229232
xcomparser = ixcom.parser.MessageSearcher(disable_crc = False)
230233

231-
iob = io.BytesIO(b'')
234+
f = open(args.output,"wb", buffering=xcomparser.file_write_buffer_length)
235+
232236
def r_callback(in_bytes):
233-
iob.write(in_bytes)
237+
if args.remove_imu_invalid:
238+
if in_bytes[1]==0x40:#POSTPROC
239+
if in_bytes[216] & 0x01:
240+
return
241+
if in_bytes[1]==0x67:#RAWDATA
242+
if in_bytes[80] & 0x01:
243+
return
244+
f.write(in_bytes)
234245

235246
xcomparser.add_callback(r_callback)
236-
xcomparser.process_bytes(args.inputfile.read())
237-
iob.seek(0, os.SEEK_SET)
238-
args.output.write(iob.read())
247+
xcomparser.process_file_handle(args.inputfile)
248+
f.close()

ixcom/constants.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import json
2+
from pathlib import Path
3+
4+
json_files = Path(__file__).resolve().parent / "json-files"
5+
6+
defines_dir = json_files / "defines"
7+
8+
defines_raw = {"defines":[]}
9+
for j in sorted(defines_dir.glob("*.json")):
10+
with open(j,"r") as f:
11+
defines_raw["defines"] += json.load(f)["defines"]
12+
13+
defines = {d["name"]:d["int_value"] for d in defines_raw["defines"]}

ixcom/data.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,15 @@
1+
from .constants import defines
12
from .protocol import *
23
from .commands import *
34
from .parameters import *
45
from .messages import *
56
from .plugin_messages import *
67

8+
79
try:
10+
from ixcom_internal.constants import *
11+
from ixcom_internal.protocol import *
12+
from ixcom_internal.commands import *
813
from ixcom_internal.parameters import *
914
from ixcom_internal.messages import *
1015
from ixcom_internal.plugin_messages import *

0 commit comments

Comments
 (0)