digraph {
rankdir=LR;
node [shape=plaintext];
subgraph cluster__nt_mdt {
label="NtMdt";
graph[style=dotted];
nt_mdt__seq [label=<
pos | size | type | id |
0 | 4 | | signature |
4 | 4 | u4le | size |
8 | 4 | | reserved0 |
12 | 2 | u2le | last_frame |
14 | 18 | | reserved1 |
32 | 1 | | wrond_doc |
33 | size | Framez | frames |
>];
subgraph cluster__uuid {
label="NtMdt::Uuid";
graph[style=dotted];
uuid__seq [label=<
pos | size | type | id |
0 | 1 | u1 | data |
repeat 16 times |
>];
}
subgraph cluster__framez {
label="NtMdt::Framez";
graph[style=dotted];
framez__seq [label=<
pos | size | type | id |
0 | ... | Frame | frames |
repeat (_root.last_frame + 1) times |
>];
}
subgraph cluster__frame {
label="NtMdt::Frame";
graph[style=dotted];
frame__seq [label=<
pos | size | type | id |
0 | 4 | u4le | size |
4 | (size - 4) | FrameMain | main |
>];
subgraph cluster__dots {
label="NtMdt::Frame::Dots";
graph[style=dotted];
dots__seq [label=<
pos | size | type | id |
0 | 2 | u2le | fm_ndots |
2 | ... | DotsHeader | coord_header |
... | 16 | DotsData | coordinates |
repeat fm_ndots times |
... | ... | DataLinez | data |
repeat fm_ndots times |
>];
subgraph cluster__dots_header {
label="NtMdt::Frame::Dots::DotsHeader";
graph[style=dotted];
dots_header__seq [label=<
pos | size | type | id |
0 | 4 | s4le | header_size |
4 | header_size | Header | header |
>];
subgraph cluster__header_ {
label="NtMdt::Frame::Dots::DotsHeader::Header";
graph[style=dotted];
header___seq [label=<
pos | size | type | id |
0 | 4 | s4le | coord_size |
4 | 4 | s4le | version |
8 | 2 | s2le→Unit | xyunits |
>];
}
}
subgraph cluster__dots_data {
label="NtMdt::Frame::Dots::DotsData";
graph[style=dotted];
dots_data__seq [label=<
pos | size | type | id |
0 | 4 | f4le | coord_x |
4 | 4 | f4le | coord_y |
8 | 4 | s4le | forward_size |
12 | 4 | s4le | backward_size |
>];
}
subgraph cluster__data_linez {
label="NtMdt::Frame::Dots::DataLinez";
graph[style=dotted];
data_linez__seq [label=<
pos | size | type | id |
0 | 2 | s2le | forward |
repeat _parent.coordinates[index].forward_size times |
... | 2 | s2le | backward |
repeat _parent.coordinates[index].backward_size times |
>];
}
}
subgraph cluster__frame_main {
label="NtMdt::Frame::FrameMain";
graph[style=dotted];
frame_main__seq [label=<
pos | size | type | id |
0 | 2 | u2le→FrameType | type |
2 | 2 | Version | version |
4 | 12 | DateTime | date_time |
16 | 2 | u2le | var_size |
18 | ... | switch (type) | frame_data |
>];
frame_main__seq_frame_data_switch [label=<
case | type |
:frame_type_mda | FdMetaData |
:frame_type_curves_new | FdCurvesNew |
:frame_type_curves | FdSpectroscopy |
:frame_type_spectroscopy | FdSpectroscopy |
:frame_type_scanned | FdScanned |
>];
}
subgraph cluster__fd_curves_new {
label="NtMdt::Frame::FdCurvesNew";
graph[style=dotted];
fd_curves_new__seq [label=<
pos | size | type | id |
0 | 4 | u4le | block_count |
4 | 8 | BlockDescr | blocks_headers |
repeat block_count times |
... | blocks_headers[i].name_len | str(UTF-8) | blocks_names |
repeat block_count times |
... | blocks_headers[i].len | | blocks_data |
repeat block_count times |
>];
subgraph cluster__block_descr {
label="NtMdt::Frame::FdCurvesNew::BlockDescr";
graph[style=dotted];
block_descr__seq [label=<
pos | size | type | id |
0 | 4 | u4le | name_len |
4 | 4 | u4le | len |
>];
}
}
subgraph cluster__fd_meta_data {
label="NtMdt::Frame::FdMetaData";
graph[style=dotted];
fd_meta_data__seq [label=<
pos | size | type | id |
0 | 4 | u4le | head_size |
4 | 4 | u4le | tot_len |
8 | 16 | Uuid | guids |
repeat 2 times |
40 | 4 | | frame_status |
44 | 4 | u4le | name_size |
48 | 4 | u4le | comm_size |
52 | 4 | u4le | view_info_size |
56 | 4 | u4le | spec_size |
60 | 4 | u4le | source_info_size |
64 | 4 | u4le | var_size |
68 | 4 | u4le | data_offset |
72 | 4 | u4le | data_size |
76 | name_size | str(UTF-8) | title |
... | comm_size | str(UTF-8) | xml |
... | 4 | u4le | struct_len |
... | 8 | u8le | array_size |
... | 4 | u4le | cell_size |
... | 4 | u4le | n_dimensions |
... | 4 | u4le | n_mesurands |
... | ... | Calibration | dimensions |
repeat n_dimensions times |
... | ... | Calibration | mesurands |
repeat n_mesurands times |
>];
fd_meta_data__inst__image [label=<
pos | size | type | id |
data_offset | data_size | Image | image |
>];
subgraph cluster__image {
label="NtMdt::Frame::FdMetaData::Image";
graph[style=dotted];
image__seq [label=<
pos | size | type | id |
0 | ... | Vec | image |
repeat to end of stream |
>];
subgraph cluster__vec {
label="NtMdt::Frame::FdMetaData::Image::Vec";
graph[style=dotted];
vec__seq [label=<
pos | size | type | id |
0 | ... | switch (_parent._parent.mesurands[i].data_type) | items |
repeat _parent._parent.n_mesurands times |
>];
vec__seq_items_switch [label=<>];
}
}
subgraph cluster__calibration {
label="NtMdt::Frame::FdMetaData::Calibration";
graph[style=dotted];
calibration__seq [label=<
pos | size | type | id |
0 | 4 | u4le | len_tot |
4 | 4 | u4le | len_struct |
8 | 4 | u4le | len_name |
12 | 4 | u4le | len_comment |
16 | 4 | u4le | len_unit |
20 | 8 | u8le | si_unit |
28 | 8 | f8le | accuracy |
36 | 8 | u8le | function_id_and_dimensions |
44 | 8 | f8le | bias |
52 | 8 | f8le | scale |
60 | 8 | u8le | min_index |
68 | 8 | u8le | max_index |
76 | 4 | s4le→DataType | data_type |
80 | 4 | u4le | len_author |
84 | len_name | str(utf-8) | name |
... | len_comment | str(utf-8) | comment |
... | len_unit | str(utf-8) | unit |
... | len_author | str(utf-8) | author |
>];
calibration__inst__count [label=<
id | value |
count | ((max_index - min_index) + 1) |
>];
}
}
subgraph cluster__fd_spectroscopy {
label="NtMdt::Frame::FdSpectroscopy";
graph[style=dotted];
fd_spectroscopy__seq [label=<
pos | size | type | id |
0 | _parent.var_size | Vars | vars |
... | 2 | u2le | fm_mode |
... | 2 | u2le | fm_xres |
... | 2 | u2le | fm_yres |
... | ... | Dots | dots |
... | 2 | s2le | data |
repeat (fm_xres * fm_yres) times |
... | ... | Title | title |
... | ... | Xml | xml |
>];
subgraph cluster__vars {
label="NtMdt::Frame::FdSpectroscopy::Vars";
graph[style=dotted];
vars__seq [label=<
pos | size | type | id |
0 | 10 | AxisScale | x_scale |
10 | 10 | AxisScale | y_scale |
20 | 10 | AxisScale | z_scale |
30 | 2 | u2le | sp_mode |
32 | 2 | u2le | sp_filter |
34 | 4 | f4le | u_begin |
38 | 4 | f4le | u_end |
42 | 2 | s2le | z_up |
44 | 2 | s2le | z_down |
46 | 2 | u2le | sp_averaging |
48 | 1 | u1 | sp_repeat |
49 | 1 | u1 | sp_back |
50 | 2 | s2le | sp_4nx |
52 | 1 | u1 | sp_osc |
53 | 1 | u1 | sp_n4 |
54 | 4 | f4le | sp_4x0 |
58 | 4 | f4le | sp_4xr |
62 | 2 | s2le | sp_4u |
64 | 2 | s2le | sp_4i |
66 | 2 | s2le | sp_nx |
>];
}
}
subgraph cluster__date_time {
label="NtMdt::Frame::DateTime";
graph[style=dotted];
date_time__seq [label=<
pos | size | type | id |
0 | 6 | Date | date |
6 | 6 | Time | time |
>];
subgraph cluster__date {
label="NtMdt::Frame::DateTime::Date";
graph[style=dotted];
date__seq [label=<
pos | size | type | id |
0 | 2 | u2le | year |
2 | 2 | u2le | month |
4 | 2 | u2le | day |
>];
}
subgraph cluster__time {
label="NtMdt::Frame::DateTime::Time";
graph[style=dotted];
time__seq [label=<
pos | size | type | id |
0 | 2 | u2le | hour |
2 | 2 | u2le | min |
4 | 2 | u2le | sec |
>];
}
}
subgraph cluster__axis_scale {
label="NtMdt::Frame::AxisScale";
graph[style=dotted];
axis_scale__seq [label=<
pos | size | type | id |
0 | 4 | f4le | offset |
4 | 4 | f4le | step |
8 | 2 | s2le→Unit | unit |
>];
}
subgraph cluster__fd_scanned {
label="NtMdt::Frame::FdScanned";
graph[style=dotted];
fd_scanned__seq [label=<
pos | size | type | id |
0 | _parent.var_size | Vars | vars |
... | 4 | u4le | orig_format |
... | 4 | u4le→LiftMode | tune |
... | 8 | f8le | feedback_gain |
... | 4 | s4le | dac_scale |
... | 4 | s4le | overscan |
... | 2 | u2le | fm_mode |
... | 2 | u2le | fm_xres |
... | 2 | u2le | fm_yres |
... | ... | Dots | dots |
... | 2 | s2le | image |
repeat (fm_xres * fm_yres) times |
... | ... | Title | title |
... | ... | Xml | xml |
>];
subgraph cluster__vars {
label="NtMdt::Frame::FdScanned::Vars";
graph[style=dotted];
vars__seq [label=<
pos | size | type | id |
0 | 10 | AxisScale | x_scale |
10 | 10 | AxisScale | y_scale |
20 | 10 | AxisScale | z_scale |
30 | 1 | u1→AdcMode | channel_index |
31 | 1 | u1→Mode | mode |
32 | 2 | u2le | xres |
34 | 2 | u2le | yres |
36 | 2 | u2le | ndacq |
38 | 4 | f4le | step_length |
42 | 2 | u2le | adt |
44 | 1 | u1 | adc_gain_amp_log10 |
45 | 1 | u1 | adc_index |
46 | 1 | u1 | input_signal_or_version |
47 | 1 | u1 | substr_plane_order_or_pass_num |
48 | 1 | ScanDir | scan_dir |
49 | 1 | u1 | power_of_2 |
50 | 4 | f4le | velocity |
54 | 4 | f4le | setpoint |
58 | 4 | f4le | bias_voltage |
62 | 1 | u1 | draw |
63 | 1 | u1 | reserved |
64 | 4 | s4le | xoff |
68 | 4 | s4le | yoff |
72 | 1 | u1 | nl_corr |
>];
}
subgraph cluster__dot {
label="NtMdt::Frame::FdScanned::Dot";
graph[style=dotted];
dot__seq [label=<
pos | size | type | id |
0 | 2 | s2le | x |
2 | 2 | s2le | y |
>];
}
subgraph cluster__scan_dir {
label="NtMdt::Frame::FdScanned::ScanDir";
graph[style=dotted];
scan_dir__seq [label=<
pos | size | type | id |
0 | 4b | b4 | unkn |
0:4 | 1b | BitsType1(BigBitEndian) | double_pass |
0:5 | 1b | BitsType1(BigBitEndian) | bottom |
0:6 | 1b | BitsType1(BigBitEndian) | left |
0:7 | 1b | BitsType1(BigBitEndian) | horizontal |
>];
}
}
}
subgraph cluster__version {
label="NtMdt::Version";
graph[style=dotted];
version__seq [label=<
pos | size | type | id |
0 | 1 | u1 | minor |
1 | 1 | u1 | major |
>];
}
subgraph cluster__xml {
label="NtMdt::Xml";
graph[style=dotted];
xml__seq [label=<
pos | size | type | id |
0 | 4 | u4le | xml_len |
4 | xml_len | str(UTF-16LE) | xml |
>];
}
subgraph cluster__title {
label="NtMdt::Title";
graph[style=dotted];
title__seq [label=<
pos | size | type | id |
0 | 4 | u4le | title_len |
4 | title_len | str(cp1251) | title |
>];
}
}
nt_mdt__seq:size_type -> nt_mdt__seq:frames_size [color="#404040"];
nt_mdt__seq:frames_type -> framez__seq [style=bold];
framez__seq:frames_type -> frame__seq [style=bold];
nt_mdt__seq:last_frame_type -> framez__seq:frames__repeat [color="#404040"];
frame__seq:size_type -> frame__seq:main_size [color="#404040"];
frame__seq:main_type -> frame_main__seq [style=bold];
dots__seq:coord_header_type -> dots_header__seq [style=bold];
dots__seq:coordinates_type -> dots_data__seq [style=bold];
dots__seq:fm_ndots_type -> dots__seq:coordinates__repeat [color="#404040"];
dots__seq:data_type -> data_linez__seq [style=bold];
dots__seq:fm_ndots_type -> dots__seq:data__repeat [color="#404040"];
dots_header__seq:header_size_type -> dots_header__seq:header_size [color="#404040"];
dots_header__seq:header_type -> header___seq [style=bold];
dots_data__seq:forward_size_type -> data_linez__seq:forward__repeat [color="#404040"];
dots_data__seq:backward_size_type -> data_linez__seq:backward__repeat [color="#404040"];
frame_main__seq:version_type -> version__seq [style=bold];
frame_main__seq:date_time_type -> date_time__seq [style=bold];
frame_main__seq:frame_data_type -> frame_main__seq_frame_data_switch [style=bold];
frame_main__seq_frame_data_switch:case0 -> fd_meta_data__seq [style=bold];
frame_main__seq_frame_data_switch:case1 -> fd_curves_new__seq [style=bold];
frame_main__seq_frame_data_switch:case2 -> fd_spectroscopy__seq [style=bold];
frame_main__seq_frame_data_switch:case3 -> fd_spectroscopy__seq [style=bold];
frame_main__seq_frame_data_switch:case4 -> fd_scanned__seq [style=bold];
frame_main__seq:type_type -> frame_main__seq:frame_data_type [color="#404040"];
fd_curves_new__seq:blocks_headers_type -> block_descr__seq [style=bold];
fd_curves_new__seq:block_count_type -> fd_curves_new__seq:blocks_headers__repeat [color="#404040"];
block_descr__seq:name_len_type -> fd_curves_new__seq:blocks_names_size [color="#404040"];
fd_curves_new__seq:block_count_type -> fd_curves_new__seq:blocks_names__repeat [color="#404040"];
block_descr__seq:len_type -> fd_curves_new__seq:blocks_data_size [color="#404040"];
fd_curves_new__seq:block_count_type -> fd_curves_new__seq:blocks_data__repeat [color="#404040"];
fd_meta_data__seq:guids_type -> uuid__seq [style=bold];
fd_meta_data__seq:name_size_type -> fd_meta_data__seq:title_size [color="#404040"];
fd_meta_data__seq:comm_size_type -> fd_meta_data__seq:xml_size [color="#404040"];
fd_meta_data__seq:dimensions_type -> calibration__seq [style=bold];
fd_meta_data__seq:n_dimensions_type -> fd_meta_data__seq:dimensions__repeat [color="#404040"];
fd_meta_data__seq:mesurands_type -> calibration__seq [style=bold];
fd_meta_data__seq:n_mesurands_type -> fd_meta_data__seq:mesurands__repeat [color="#404040"];
fd_meta_data__seq:data_offset_type -> fd_meta_data__inst__image:image_pos [color="#404040"];
fd_meta_data__seq:data_size_type -> fd_meta_data__inst__image:image_size [color="#404040"];
fd_meta_data__inst__image:image_type -> image__seq [style=bold];
image__seq:image_type -> vec__seq [style=bold];
vec__seq:items_type -> vec__seq_items_switch [style=bold];
calibration__seq:data_type_type -> vec__seq:items_type [color="#404040"];
fd_meta_data__seq:n_mesurands_type -> vec__seq:items__repeat [color="#404040"];
calibration__seq:len_name_type -> calibration__seq:name_size [color="#404040"];
calibration__seq:len_comment_type -> calibration__seq:comment_size [color="#404040"];
calibration__seq:len_unit_type -> calibration__seq:unit_size [color="#404040"];
calibration__seq:len_author_type -> calibration__seq:author_size [color="#404040"];
calibration__seq:max_index_type -> calibration__inst__count [color="#404040"];
calibration__seq:min_index_type -> calibration__inst__count [color="#404040"];
frame_main__seq:var_size_type -> fd_spectroscopy__seq:vars_size [color="#404040"];
fd_spectroscopy__seq:vars_type -> vars__seq [style=bold];
fd_spectroscopy__seq:dots_type -> dots__seq [style=bold];
fd_spectroscopy__seq:fm_xres_type -> fd_spectroscopy__seq:data__repeat [color="#404040"];
fd_spectroscopy__seq:fm_yres_type -> fd_spectroscopy__seq:data__repeat [color="#404040"];
fd_spectroscopy__seq:title_type -> title__seq [style=bold];
fd_spectroscopy__seq:xml_type -> xml__seq [style=bold];
vars__seq:x_scale_type -> axis_scale__seq [style=bold];
vars__seq:y_scale_type -> axis_scale__seq [style=bold];
vars__seq:z_scale_type -> axis_scale__seq [style=bold];
date_time__seq:date_type -> date__seq [style=bold];
date_time__seq:time_type -> time__seq [style=bold];
frame_main__seq:var_size_type -> fd_scanned__seq:vars_size [color="#404040"];
fd_scanned__seq:vars_type -> vars__seq [style=bold];
fd_scanned__seq:dots_type -> dots__seq [style=bold];
fd_scanned__seq:fm_xres_type -> fd_scanned__seq:image__repeat [color="#404040"];
fd_scanned__seq:fm_yres_type -> fd_scanned__seq:image__repeat [color="#404040"];
fd_scanned__seq:title_type -> title__seq [style=bold];
fd_scanned__seq:xml_type -> xml__seq [style=bold];
vars__seq:x_scale_type -> axis_scale__seq [style=bold];
vars__seq:y_scale_type -> axis_scale__seq [style=bold];
vars__seq:z_scale_type -> axis_scale__seq [style=bold];
vars__seq:scan_dir_type -> scan_dir__seq [style=bold];
xml__seq:xml_len_type -> xml__seq:xml_size [color="#404040"];
title__seq:title_len_type -> title__seq:title_size [color="#404040"];
}