Boda Franek CERN April 2011 Class inheritance It will be possible to declare a new class inheriting states and actions from a base class that could be overloaded and new ones added Example ID: 796733
Download The PPT/PDF document "SMI++ Future Developments" is the property of its rightful owner. Permission is granted to download and print the materials on this web site for personal, non-commercial use only, and to display it on your personal computer provided you do not modify the materials and that you retain all copyright notices contained in the materials. By downloading content from our website, you accept the terms of this agreement.
Slide1
SMI++ Future Developments
Boda FranekCERN April 2011
Slide2Class inheritance
It will be possible to declare a new class inheriting states and actions from a base class that could be overloaded and new ones added.
Example
Class:
POWER_SUPPLY
State: ON ... State: OFF ... State: ERROR ... action: RESET ...Class: SPECIAL_POWER_SUPPLY extends POWER_SUPPLY State: ERROR action: HARD_RESET ...
April 2011
2
SMI++ Future Developments, Boda Franek CERN
Slide3Testing parameter values
if (….( PARMA == PARMB)….) when (….( PARMA > 24 )….)
etc
Example
State :
NOT_READY ... action : CONFIGURE (RUN_TYPE) ... if ( RUN_TYPE == “PHYSICS” ) then ... else ... endif ...April 2011
3
SMI++ Future Developments, Boda Franek CERN
Slide4Simple parameter arithmetic
PARMA = PARMB + 5 PARMA=3*PARMB
Example
Object :
RUN_CONTROL
Parameter : int RETRIES = 0 ....State : ERROR Action : RECOVER RETRIES = RETRIES + 1 if ( RETRIES < 4 ) then ... move_to READY else RETRIES = 0
move_to ASSISTANCE
endif ....
April 2011
4
SMI++ Future Developments, Boda Franek CERN
Slide5Dynamical loading of object names
from action parameters insert $(parameter-name) in ‘set-name
’
implemented
do ‘action-name’ $(parameter-name)
If (….. ( $(parameter-name) in_state READY ) ….) tricky ? ExampleAction : CONFIGURE ( POWER-SUPPLY) ... do SWITCH-OFF
$(POWER-SUPPLY)
do SWITCH-ON $(POWER-SUPPLY)
do CONFIGURE $(POWER-SUPPLY
)
...
if ( $(
POWER-SUPPLY
)
in_state
READY
)
move_to
OK
move_to
FAILED
April 2011
5
SMI++ Future Developments, Boda Franek CERN
Slide6Wait until
construct
Object :
O
... State : S ... Action : A .... wait_until condition1 action1 condition2 action2 ... contitionn actionn end_wait_unit ...this will suspend the execution of the action X until any of the conditions is TRUE. The number of conditions is arbitrary.
April 2011
6
SMI++ Future Developments, Boda Franek CERN
Slide7Example
Wait until
construct
cont
Object :
RUN_CONTROL ...State : READY ... Action : START_RUN .... do START all_in SUBSYSTEMS wait_until (all_in SUBSYSTEMS in_state RUNNING) move_to RUNNING (any_in SUBSYSTEMS in_state
ERROR ) do RECOVER end_wait_unit
...
April 2011
7
SMI++ Future Developments, Boda Franek CERN
Slide8foreach
instruction
foreach
‘name1’ in ‘set-name1’, ‘name2’
in ‘set-name2’ etc instructions to be executed on the members of the setsendforeachExampleAction : A ...foreach UNIT in SPECIAL-UNITS do $(UNIT
) SWITCH-ON if ( $(
UNIT) not_in_state READY
) then move_to
ERROR
endif
end_foreach
...
SPECIAL-UNITS is an
ObjectSet
of
hardware units that have to be
started up in a certain order one by one
this would become even more interesting when operating on more than one
Object Set
simultaneously
April 2011
8
SMI++ Future Developments,
Boda
Franek
CERN
Slide9Objects, states and actions should be allowed any number of
qualifiers accessible to User Interfaces
April 2011
9
SMI++ Future Developments, Boda Franek CERN
On-the-fly access to State ManagerWould be possible to change some of the parameters of State Manager without re-starting.For example Diagnostic print level when things misbehave.Using a special command ala ‘SMI_SEND_COMMAND’
Slide10April 2011
SMI++ Future Developments, Boda Franek CERN
10
If
instruction( To unlock or not to unlock, that is the question )Object : O ... State : S ...
Action : A ... if (....X...Y...Z...) then
....
endif ....
If Processing
When if instruction starts being executed,
a
ll the objects referenced in its condition
a
re either locked or ‘lock action’ is queued.
Every object has
action queue
Actions taken out
by
Scheduler
f
or execution
Actions put on
b
y
do instructions
o
f other objects
empty
empty
Action in progress
Actions queued
Object locked
Z
X
Y
Object locked
Action in progress
Object locked
Object locked
Z
X
Y
Object locked
Object locked