digraph {
rankdir=LR;
node [shape=plaintext];
subgraph cluster__specpr {
label="Specpr";
graph[style=dotted];
specpr__seq [label=<
pos | size | type | id |
0 | ... | Record | records |
repeat to end of stream |
>];
subgraph cluster__data_initial {
label="Specpr::DataInitial";
graph[style=dotted];
data_initial__seq [label=<
pos | size | type | id |
0 | 48 | Identifiers | ids |
48 | 4 | CoarseTimestamp | iscta |
52 | 4 | CoarseTimestamp | isctb |
56 | 4 | s4be | jdatea |
60 | 4 | s4be | jdateb |
64 | 4 | CoarseTimestamp | istb |
68 | 4 | s4be | isra |
72 | 4 | s4be | isdec |
76 | 4 | s4be | itchan |
80 | 4 | s4be | irmas |
84 | 4 | s4be | revs |
88 | 4 | s4be | iband |
repeat 2 times |
96 | 4 | s4be | irwav |
100 | 4 | s4be | irespt |
104 | 4 | s4be | irecno |
108 | 4 | s4be | itpntr |
112 | 60 | str(ascii) | ihist |
172 | 74 | str(ascii) | mhist |
repeat 4 times |
468 | 4 | s4be | nruns |
472 | 4 | IllumAngle | siangl |
476 | 4 | IllumAngle | seangl |
480 | 4 | s4be | sphase |
484 | 4 | s4be | iwtrns |
488 | 4 | s4be | itimch |
492 | 4 | f4be | xnrm |
496 | 4 | f4be | scatim |
500 | 4 | f4be | timint |
504 | 4 | f4be | tempd |
508 | 4 | f4be | data |
repeat 256 times |
>];
data_initial__inst__phase_angle_arcsec [label=<
id | value |
phase_angle_arcsec | (sphase / 1500) |
>];
}
subgraph cluster__coarse_timestamp {
label="Specpr::CoarseTimestamp";
graph[style=dotted];
coarse_timestamp__seq [label=<
pos | size | type | id |
0 | 4 | s4be | scaled_seconds |
>];
coarse_timestamp__inst__seconds [label=<
id | value |
seconds | (scaled_seconds * 24000) |
>];
}
subgraph cluster__icflag {
label="Specpr::Icflag";
graph[style=dotted];
icflag__seq [label=<
pos | size | type | id |
0 | 26b | b26 | reserved |
3:2 | 1b | BitsType1(BigBitEndian) | isctb_type |
3:3 | 1b | BitsType1(BigBitEndian) | iscta_type |
3:4 | 1b | BitsType1(BigBitEndian) | coordinate_mode |
3:5 | 1b | BitsType1(BigBitEndian) | errors |
3:6 | 1b | BitsType1(BigBitEndian) | text |
3:7 | 1b | BitsType1(BigBitEndian) | continuation |
>];
icflag__inst__type [label=<
id | value |
type | Kaitai::Struct::Stream::resolve_enum(Specpr::RECORD_TYPE, (((text ? 1 : 0) * 1) + ((continuation ? 1 : 0) * 2))) |
>];
}
subgraph cluster__data_continuation {
label="Specpr::DataContinuation";
graph[style=dotted];
data_continuation__seq [label=<
pos | size | type | id |
0 | 4 | f4be | cdata |
repeat 383 times |
>];
}
subgraph cluster__identifiers {
label="Specpr::Identifiers";
graph[style=dotted];
identifiers__seq [label=<
pos | size | type | id |
0 | 40 | str(ascii) | ititle |
40 | 8 | str(ascii) | usernm |
>];
}
subgraph cluster__illum_angle {
label="Specpr::IllumAngle";
graph[style=dotted];
illum_angle__seq [label=<>];
illum_angle__inst__seconds_total [label=<
id | value |
seconds_total | (angl / 6000) |
>];
illum_angle__inst__minutes_total [label=<
id | value |
minutes_total | (seconds_total / 60) |
>];
illum_angle__inst__degrees_total [label=<
id | value |
degrees_total | (minutes_total / 60) |
>];
}
subgraph cluster__text_initial {
label="Specpr::TextInitial";
graph[style=dotted];
text_initial__seq [label=<
pos | size | type | id |
0 | 48 | Identifiers | ids |
48 | 4 | u4be | itxtpt |
52 | 4 | s4be | itxtch |
56 | 1476 | str(ascii) | itext |
>];
}
subgraph cluster__record {
label="Specpr::Record";
graph[style=dotted];
record__seq [label=<
pos | size | type | id |
0 | 4 | Icflag | icflag |
4 | ... | switch (icflag.type) | content |
>];
record__seq_content_switch [label=<
case | type |
:record_type_data_initial | DataInitial |
:record_type_data_continuation | DataContinuation |
:record_type_text_continuation | TextContinuation |
:record_type_text_initial | TextInitial |
>];
}
subgraph cluster__text_continuation {
label="Specpr::TextContinuation";
graph[style=dotted];
text_continuation__seq [label=<
pos | size | type | id |
0 | 1532 | str(ascii) | tdata |
>];
}
}
specpr__seq:records_type -> record__seq [style=bold];
data_initial__seq:ids_type -> identifiers__seq [style=bold];
data_initial__seq:iscta_type -> coarse_timestamp__seq [style=bold];
data_initial__seq:isctb_type -> coarse_timestamp__seq [style=bold];
data_initial__seq:istb_type -> coarse_timestamp__seq [style=bold];
data_initial__seq:siangl_type -> illum_angle__seq [style=bold];
data_initial__seq:seangl_type -> illum_angle__seq [style=bold];
data_initial__seq:sphase_type -> data_initial__inst__phase_angle_arcsec [color="#404040"];
coarse_timestamp__seq:scaled_seconds_type -> coarse_timestamp__inst__seconds [color="#404040"];
icflag__seq:text_type -> icflag__inst__type [color="#404040"];
icflag__seq:continuation_type -> icflag__inst__type [color="#404040"];
illum_angle__seq:angl_type -> illum_angle__inst__seconds_total [color="#404040"];
illum_angle__inst__seconds_total:seconds_total_type -> illum_angle__inst__minutes_total [color="#404040"];
illum_angle__inst__minutes_total:minutes_total_type -> illum_angle__inst__degrees_total [color="#404040"];
text_initial__seq:ids_type -> identifiers__seq [style=bold];
record__seq:icflag_type -> icflag__seq [style=bold];
record__seq:content_type -> record__seq_content_switch [style=bold];
record__seq_content_switch:case0 -> data_initial__seq [style=bold];
record__seq_content_switch:case1 -> data_continuation__seq [style=bold];
record__seq_content_switch:case2 -> text_continuation__seq [style=bold];
record__seq_content_switch:case3 -> text_initial__seq [style=bold];
icflag__inst__type:type_type -> record__seq:content_type [color="#404040"];
}