You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
In my case, I started with the lowest level of information (e.g. known tracks), thus I hardcoded "known" positions in the file to extract records as I think they might fit. I think for such binary-blobs that's the better approach, as it allows you to expand your knowlege step-wise. If you know how a record look like you can find the first one, and then the index to that record,..
This is just a dump of information I decoded some months ago, hope it helps 😃
Main Findings
The file is little-endian
degrees are stored as 4 byte little endian integers in thousands of degrees (e.g. 180° = 180000)
coordinates are stored as 4 byte little endian integers, first comes x and then y. Sorry, I forgot in which unit they were (but you should find this out using the kaitai file and a board-viewer)
I found some general "magic-byte" sequence which seemed to be the same on all files I looked on so far
Kaitai File
meta:
id: allegrotitle: Allegro board filefile-extension: brdendian: leencoding: UTF-8# Findings (27.04.2021)# Degree:# le 4 byte 180° = 180000# Position x|y# le 4 byte | le 4 byte# How found out: search for 180, 1800, 18000 until a high number of matches is found# those numbers are the same on all allegro files I saw so far:seq:
- size: 3
- id: magiccontents: [0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00]
- size: 44
- id: zeroes1contents: [0x00, 0x00, 0x00, 0x00]
- size: 60
- id: zeroes2contents: [0x00, 0x00, 0x00, 0x00]
- size: 36
- id: zeroes3contents: [0x00, 0x00, 0x00, 0x00]
- size: 28
- id: zeroes4contents: [0x00, 0x00, 0x00, 0x00]
- size: 28
- id: zeroes5contents: [0x00, 0x00, 0x00, 0x00]
- size: 12
- id: string1type: strsize: 60
- size: 24
- id: zeroes6contents: [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]instances:
# file: 77G.MMW.automotive.radar-PCBF-V01-20180115-1520.brd# downloaded from https://github.com/OpenBoardView/OpenBoardView/issues/126# track_segment1: x=-18100 y=219000# pos: 0x25f284tracks_unknown:
io: _root._iopos: 0x25f130# hardcoded for now, only valid for this boardtype: tracksvias_unknown:
io: _root._iopos: 0x2ea550# hardcoded for now, only valid for this boardtype: vias# pad: 0x0032A990 - -233337 | 149000 | Pin2 | CAN_Ltypes:
tracks:
seq:
- id: trackstype: track_segrepeat-expr: 20# just show some vias to validate recordrepeat: exprvias:
seq:
- id: viastype: via_segrepeat-expr: 20# just show some vias to validate recordrepeat: exprtest:
seq:
- id: type_question_or_layertype: u4
- id: datasize: 32+4# TODO: offsets are wrong at some pointtrack_seg: # track_seg?seq:
- id: type_question_or_layer # no idea what this is, perhaps we can extract the record type -> size from it?type: u4
- size: 4*4
- id: width # TODO: sometimes zero?type: s4
- id: starttype: point
- id: endtype: point# TODO: offsets are wrong at some pointvia_seg:
seq:
- id: positiontype: point
- size: 4*5
- id: rotationtype: s4
- size: 4*9point:
seq:
- id: xtype: s4
- id: ytype: s4
The text was updated successfully, but these errors were encountered:
I used the board linked in the following issue to decode some board informations: OpenBoardView/OpenBoardView#126
In my case, I started with the lowest level of information (e.g. known tracks), thus I hardcoded "known" positions in the file to extract records as I think they might fit. I think for such binary-blobs that's the better approach, as it allows you to expand your knowlege step-wise. If you know how a record look like you can find the first one, and then the index to that record,..
This is just a dump of information I decoded some months ago, hope it helps 😃
Main Findings
4 byte little endian integers
in thousands of degrees (e.g.180°
=180000
)4 byte little endian integers
, first comes x and then y. Sorry, I forgot in which unit they were (but you should find this out using the kaitai file and a board-viewer)Kaitai File
The text was updated successfully, but these errors were encountered: