module          max_number_in_system
------          --------------------
power               4


    system_attribute    values
    ----------------    ------
    condition           offline, initialising, broken, online
    initialised         no, yes

    user_attribute      values
    --------------      ------
    location            NULL, p0, p1, p2, p3
    type                0037, 0038, 0039
    revision            A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, \
			Q, R, S, T, U, V, W, X, Y, Z, ZZ
    req_condition       offline, online
    fault_acknowledged  no, yes
    description         "power module"
    alias		string

    state               function
    -----               ---------
    not_here            if (location == NULL)
    not_initialised     if (initialised == no)
    offline             if (condition != online && req_condition == offline)
    initialising	if (condition == initialising && req_condition == online)
    should_be_on        if (condition != online && req_condition == online)
    online              if (condition == online && req_condition == online)
    should_be_off       if (condition == online && req_condition == offline)

    transition      response
    ----------      --------
    unknown -> not_initialised \
	/etc/cms/bin/slotctl $location set chgme on ; \
	/etc/cms/bin/pmft -m $name -n $number -l $location \
	  -c associate ; \
	TIMEO=0 ; \
	while [ $$TIMEO -lt 20 ] ; \
	do \
        	sleep 5 "$state delay" ; \
        	STATE="`/etc/cms/bin/sysconfig -m $name -n $number -a state -q`" ; \
        	if [ "$$STATE" != $state ] ; \
        	then \
			break ; \
		fi ; \
		TIMEO=`expr $$TIMEO + 5` ; \
	done ; \
       	STATE="`/etc/cms/bin/sysconfig -m $name -n $number -a state -q`" ; \
        if [ "$$STATE" = $state ] ; \
        then \
	    /etc/cms/bin/slotctl acp set psu_relay$number on 2>/dev/null ; \
        fi ;

    not_here -> not_initialised \
	/etc/cms/bin/slotctl $location set chgme on ; \
	/etc/cms/bin/slotctl acp set psu_relay$number on 2>/dev/null ; \
	/etc/cms/bin/pmft -m $name -n $number -l $location \
	  -c associate

    not_initialised -> offline \
	/etc/cms/bin/slotctl $location set chgme off ; \
	/etc/cms/bin/slotctl acp set psu_relay$number off 2>/dev/null ; \
	/etc/cms/bin/sysconfig -m $name -n $number \
	  -a fault_acknowledged -v no;

    not_initialised -> online \
	if /etc/cms/bin/right_module $name $location $type$revision ; \
	then \
	  /etc/cms/bin/slotctl $location set chgme off ; \
	  /etc/cms/bin/slotctl acp set psu_relay$number on 2>/dev/null ; \
	  /etc/cms/bin/sysconfig -m $name -n $number \
	    -a fault_acknowledged -v no; \
	  /etc/cms/bin/moduleinfo -e power -l $location ; \
	else \
	  echo "$name $number condition offline <R8000d>module of required type/revision not present" >/dev/FTlog:cms; \
	  /etc/cms/bin/pmft -m $name -n $number -c offline ; \
	fi ;


    not_initialised -> should_be_off \
	if /etc/cms/bin/right_module $name $location $type$revision ; \
	then \
	    /etc/cms/bin/pmft -m $name -n $number -c offline ; \
	else \
	  echo "$name $number condition offline <R8000d>module of required type/revision not present" >/dev/FTlog:cms; \
        fi ;

    not_initialised -> should_be_on \
	/etc/cms/bin/slotctl $location set chgme on ; \
	if /etc/cms/bin/right_module $name $location $type$revision ; \
	then \
	    echo "$name $number condition initialising <R8000a>configuration request" >/dev/FTlog:cms ;\
	    /etc/cms/bin/pmft -m $name -n $number -c online; \
	else \
	  echo "$name $number condition offline <R8000d>module of required type/revision not present" >/dev/FTlog:cms; \
        fi ; \
	TIMEO=0 ; \
	while [ $$TIMEO -lt 20 ] ; \
	do \
        	sleep 5 "$state delay" ; \
        	STATE="`/etc/cms/bin/sysconfig -m $name -n $number -a state -q`" ; \
        	if [ "$$STATE" != $state ] ; \
        	then \
			break ; \
		fi ; \
		TIMEO=`expr $$TIMEO + 5` ; \
	done ; \
       	STATE="`/etc/cms/bin/sysconfig -m $name -n $number -a state -q`" ; \
        if [ "$$STATE" = $state ] ; \
        then \
	    /etc/cms/bin/slotctl acp set psu_relay$number on 2>/dev/null ; \
	    echo "$name $number condition offline <R80002>module failure" >/dev/FTlog:cms ;\
        fi ;

    offline -> should_be_on \
	/etc/cms/bin/slotctl $location set chgme on ; \
	if /etc/cms/bin/right_module $name $location $type$revision ; \
	then \
	    echo "$name $number condition initialising <R8000a>configuration request" >/dev/FTlog:cms ;\
	    /etc/cms/bin/pmft -m $name -n $number -c online; \
	else \
	  echo "$name $number condition offline <R8000d>module of required type/revision not present" >/dev/FTlog:cms; \
        fi ; \
	TIMEO=0 ; \
	while [ $$TIMEO -lt 20 ] ; \
	do \
        	sleep 5 "$state delay" ; \
        	STATE="`/etc/cms/bin/sysconfig -m $name -n $number -a state -q`" ; \
        	if [ "$$STATE" != $state ] ; \
        	then \
			break ; \
		fi ; \
		TIMEO=`expr $$TIMEO + 5` ; \
	done ; \
       	STATE="`/etc/cms/bin/sysconfig -m $name -n $number -a state -q`" ; \
        if [ "$$STATE" = $state ] ; \
        then \
	    /etc/cms/bin/slotctl acp set psu_relay$number on 2>/dev/null ; \
	    echo "$name $number condition offline <R80002>module failure" >/dev/FTlog:cms ;\
        fi ;

    initialising -> offline \
	/etc/cms/bin/slotctl $location set chgme off ; \
	/etc/cms/bin/slotctl acp set psu_relay$number off 2>/dev/null ; \
	/etc/cms/bin/sysconfig -m $name -n $number \
	  -a fault_acknowledged -v no ;

    should_be_on -> offline \
	/etc/cms/bin/slotctl $location set chgme off ; \
	/etc/cms/bin/slotctl acp set psu_relay$number off 2>/dev/null ; \
	/etc/cms/bin/sysconfig -m $name -n $number \
	  -a fault_acknowledged -v no ;

    online -> should_be_on \
	/etc/cms/bin/slotctl $location set chgme on ; \
	/etc/cms/bin/slotctl acp set psu_relay$number on 2>/dev/null ; \
	/etc/cms/bin/moduleinfo -e failure -l $location ; \
	/etc/cms/bin/phonehome $name $number $location $laststate $state ;

    initialising -> online \
	/etc/cms/bin/slotctl $location set chgme off ; \
	/etc/cms/bin/slotctl acp set psu_relay$number off 2>/dev/null ; \
	/etc/cms/bin/sysconfig -m $name -n $number \
	  -a fault_acknowledged -v no ; \
	/etc/cms/bin/moduleinfo -e power -l $location ;

    should_be_on -> online \
	/etc/cms/bin/slotctl $location set chgme off ; \
	/etc/cms/bin/slotctl acp set psu_relay$number off 2>/dev/null ; \
	/etc/cms/bin/sysconfig -m $name -n $number \
	  -a fault_acknowledged -v no ; \
	/etc/cms/bin/moduleinfo -e power -l $location ;

    online -> should_be_off \
	/etc/cms/bin/slotctl $location set chgme on ; \
	/etc/cms/bin/pmft -m $name -n $number -c offline ; \
	TIMEO=0 ; \
	while [ $$TIMEO -lt 20 ] ; \
	do \
        	sleep 5 "$state delay" ; \
        	STATE="`/etc/cms/bin/sysconfig -m $name -n $number -a state -q`" ; \
        	if [ "$$STATE" != $state ] ; \
        	then \
			break ; \
		fi ; \
		TIMEO=`expr $$TIMEO + 5` ; \
	done ; \
       	STATE="`/etc/cms/bin/sysconfig -m $name -n $number -a state -q`" ; \
        if [ "$$STATE" = $state ] ; \
        then \
	    /etc/cms/bin/slotctl acp set psu_relay$number on 2>/dev/null ; \
        fi ;

    should_be_off -> online \
	/etc/cms/bin/slotctl $location set chgme off ; \
	/etc/cms/bin/slotctl acp set psu_relay$number off 2>/dev/null ; \
	/etc/cms/bin/sysconfig -m $name -n $number \
	  -a fault_acknowledged -v no; \
	/etc/cms/bin/moduleinfo -e power -l $location ;

    should_be_off -> offline \
	/etc/cms/bin/slotctl $location set chgme off ; \
	/etc/cms/bin/slotctl acp set psu_relay$number off 2>/dev/null ; \
	/etc/cms/bin/sysconfig -m $name -n $number \
	  -a fault_acknowledged -v no;

    offline -> should_be_off \
	/etc/cms/bin/slotctl $location set chgme on ; \
	TIMEO=0 ; \
	while [ $$TIMEO -lt 20 ] ; \
	do \
        	sleep 5 "$state delay" ; \
        	STATE="`/etc/cms/bin/sysconfig -m $name -n $number -a state -q`" ; \
        	if [ "$$STATE" != $state ] ; \
        	then \
			break ; \
		fi ; \
		TIMEO=`expr $$TIMEO + 5` ; \
	done ; \
       	STATE="`/etc/cms/bin/sysconfig -m $name -n $number -a state -q`" ; \
        if [ "$$STATE" = $state ] ; \
        then \
	    /etc/cms/bin/slotctl acp set psu_relay$number on 2>/dev/null ; \
        fi ;


    offline -> not_here \
	/etc/cms/bin/pmft -m $name -n $number -c disassociate


