@startuml
'https://plantuml.com/sequence-diagram

skinparam backgroundColor #EEEBDC
skinparam sequence {
ParticipantBorderColor DodgerBlue
ParticipantBackgroundColor DeepSkyBlue
ActorBorderColor DarkGreen
ActorBackgroundColor Green
BoxBorderColor LightBlue
BoxBackgroundColor #F0FFFF
}

skinparam collections {
  BackGroundColor LightBlue
  BorderColor DodgerBlue
}

skinparam database {
  BackgroundColor LightGreen
  BorderColor DarkGreen
}

title SLIM Configuration Sequence\n


box "MCS"
participant "Mid.CBF\nController" as controller
participant "FS\nMesh" as mesh_fs
participant "Vis\nMesh" as mesh_vis
collections "FS\nLinks\n0-15" as links_fs
collections "Vis\nLinks\n0-3" as links_vis
collections "Talon\nBoards\n1-4" as boards
end box

box "Talon 1"
collections "FS\nTx\n0-3"  as tx_fs_1
collections "FS\nRx\n0-3"  as rx_fs_1
participant "Vis\nTx\n"    as tx_vis_1
collections "Vis\nRx\n0-3" as rx_vis_1
end box

box "Talon 2"
collections "FS\nTx\n0-3"  as tx_fs_2
collections "FS\nRx\n0-3"  as rx_fs_2
participant "Vis\nTx\n"    as tx_vis_2
end box

box "Talon 3"
collections "FS\nTx\n0-3"  as tx_fs_3
collections "FS\nRx\n0-3"  as rx_fs_3
participant "Vis\nTx\n"    as tx_vis_3
end box

box "Talon 4"
collections "FS\nTx\n0-3"  as tx_fs_4
collections "FS\nRx\n0-3"  as rx_fs_4
participant "Vis\nTx\n"    as tx_vis_4
end box

controller -> mesh_fs   : Configure()
mesh_fs    -> links_fs  : Configure()
links_fs   -> boards    : Configure()
boards     -> tx_fs_1   : Configure()
boards     -> rx_fs_1   : Configure()
boards     -> tx_fs_2   : Configure()
boards     -> rx_fs_2   : Configure()
boards     -> tx_fs_3   : Configure()
boards     -> rx_fs_3   : Configure()
boards     -> tx_fs_4   : Configure()
boards     -> rx_fs_4   : Configure()

group FS Links
tx_fs_1 o-[#blue]>>o rx_fs_1
tx_fs_2 o-[#blue]>>o rx_fs_1
tx_fs_3 o-[#blue]>>o rx_fs_1
tx_fs_4 o-[#blue]>>o rx_fs_1

tx_fs_1 o-[#green]>>o rx_fs_2
tx_fs_2 o-[#green]>>o rx_fs_2
tx_fs_3 o-[#green]>>o rx_fs_2
tx_fs_4 o-[#green]>>o rx_fs_2

tx_fs_1 o-[#orange]>>o rx_fs_3
tx_fs_2 o-[#orange]>>o rx_fs_3
tx_fs_3 o-[#orange]>>o rx_fs_3
tx_fs_4 o-[#orange]>>o rx_fs_3

tx_fs_1 o-[#magenta]>>o rx_fs_4
tx_fs_2 o-[#magenta]>>o rx_fs_4
tx_fs_3 o-[#magenta]>>o rx_fs_4
tx_fs_4 o-[#magenta]>>o rx_fs_4
end group

controller -> mesh_vis  : Configure()
mesh_vis   -> links_vis : Configure()
links_vis  -> boards    : Configure()

boards     -> tx_vis_1   : Configure()
boards     -> rx_vis_1   : Configure()
boards     -> tx_vis_2   : Configure()
boards     -> tx_vis_3   : Configure()
boards     -> tx_vis_4   : Configure()

group Visibility Links
tx_vis_1 o-[#red]>>o rx_vis_1
tx_vis_2 o-[#red]>>o rx_vis_1
tx_vis_3 o-[#red]>>o rx_vis_1
tx_vis_4 o-[#red]>>o rx_vis_1
end group

@enduml