digraph {
rankdir=LR;
node [shape=plaintext];
subgraph cluster__some_ip_sd_entries {
label="SomeIpSdEntries";
graph[style=dotted];
some_ip_sd_entries__seq [label=<
pos | size | type | id |
0 | ... | SdEntry | entries |
repeat to end of stream |
>];
subgraph cluster__sd_entry {
label="SomeIpSdEntries::SdEntry";
graph[style=dotted];
sd_entry__seq [label=<
pos | size | type | id |
0 | 12 | SdEntryHeader | header |
12 | ... | switch (header.type) | content |
>];
sd_entry__seq_content_switch [label=<
case | type |
:entry_types_find | SdServiceEntry |
:entry_types_offer | SdServiceEntry |
:entry_types_subscribe | SdEventgroupEntry |
:entry_types_subscribe_ack | SdEventgroupEntry |
>];
subgraph cluster__sd_entry_header {
label="SomeIpSdEntries::SdEntry::SdEntryHeader";
graph[style=dotted];
sd_entry_header__seq [label=<
pos | size | type | id |
0 | 1 | u1→EntryTypes | type |
1 | 1 | u1 | index_first_options |
2 | 1 | u1 | index_second_options |
3 | 4b | b4 | number_first_options |
3:4 | 4b | b4 | number_second_options |
4 | 2 | u2be | service_id |
6 | 2 | u2be | instance_id |
8 | 1 | u1 | major_version |
9 | 3 | b24 | ttl |
>];
}
subgraph cluster__sd_service_entry {
label="SomeIpSdEntries::SdEntry::SdServiceEntry";
graph[style=dotted];
sd_service_entry__seq [label=<
pos | size | type | id |
0 | 4 | u4be | minor_version |
>];
}
subgraph cluster__sd_eventgroup_entry {
label="SomeIpSdEntries::SdEntry::SdEventgroupEntry";
graph[style=dotted];
sd_eventgroup_entry__seq [label=<
pos | size | type | id |
0 | 1 | u1 | reserved |
1 | 1b | BitsType1(BigBitEndian) | initial_data_requested |
1:1 | 3b | b3 | reserved2 |
1:4 | 4b | b4 | counter |
2 | 2 | u2be | event_group_id |
>];
}
}
}
some_ip_sd_entries__seq:entries_type -> sd_entry__seq [style=bold];
sd_entry__seq:header_type -> sd_entry_header__seq [style=bold];
sd_entry__seq:content_type -> sd_entry__seq_content_switch [style=bold];
sd_entry__seq_content_switch:case0 -> sd_service_entry__seq [style=bold];
sd_entry__seq_content_switch:case1 -> sd_service_entry__seq [style=bold];
sd_entry__seq_content_switch:case2 -> sd_eventgroup_entry__seq [style=bold];
sd_entry__seq_content_switch:case3 -> sd_eventgroup_entry__seq [style=bold];
sd_entry_header__seq:type_type -> sd_entry__seq:content_type [color="#404040"];
}