telematicsSystem
xor channel
single
dual
extraDisplay ?
xor size
small
large
[ dual <=> ECU2 ]
[ extraDisplay <=> # ECU1.display = 2 ]
[ extraDisplay <=> ECU2 => # ECU2.display = 2 ]
[ large <=> ! plaECU.display.options.size.small ]
[ small <=> ! plaECU.display.options.size.large ]
abstract comp
version ->> integer
abstract ECU : comp
abstract display : comp
server ->> ECU
`options
[ this.version >= server.version ]
abstract options
xor size
small
large
cache ?
size ->> integer
fixed ?
[ small && cache => fixed ]
abstract plaECU : ECU
`display 1..2
[ server = parent ]
[ ! options.cache ]
ECU1 : plaECU
ECU2 : plaECU ?
master ->> ECU1
[ dual ]
[ extraDisplay ]
[ telematicsSystem.size.large ]
[ comp.version = 1 ]