35 case PTU_SM_STATE_CONFIGURATION:
36 if( signal == PTU_SM_SIGNAL_CONFIGURATION_COMPLETE) next_state = PTU_SM_STATE_POWER_SAVE;
37 else if(signal == PTU_SM_SIGNAL_LOCAL_FAULT) next_state = PTU_SM_STATE_LOCAL_FAULT;
40 case PTU_SM_STATE_POWER_SAVE:
41 if( signal == PTU_SM_SIGNAL_LOCAL_FAULT) next_state = PTU_SM_STATE_LOCAL_FAULT;
42 else if(signal == PTU_SM_SIGNAL_SYSTEM_ERROR) next_state = PTU_SM_STATE_LATCH_FAULT;
43 else if(signal == PTU_SM_SIGNAL_ROGUE_OBJECT_DETECTED) next_state = PTU_SM_STATE_LATCH_FAULT;
44 else if(signal == PTU_SM_SIGNAL_PRU_ADV_RCVD) next_state = PTU_SM_STATE_LOW_POWER;
47 case PTU_SM_STATE_LOW_POWER:
48 if( signal == PTU_SM_SIGNAL_LOCAL_FAULT) next_state = PTU_SM_STATE_LOCAL_FAULT;
49 else if(signal == PTU_SM_SIGNAL_SYSTEM_ERROR) next_state = PTU_SM_STATE_LATCH_FAULT;
50 else if(signal == PTU_SM_SIGNAL_ROGUE_OBJECT_DETECTED) next_state = PTU_SM_STATE_LATCH_FAULT;
51 else if(signal == PTU_SM_SIGNAL_REGISTRATION_TIMEOUT ||
52 signal == PTU_SM_SIGNAL_ALL_DEVICES_DISCONNECTED) next_state = PTU_SM_STATE_POWER_SAVE;
53 else if(signal == PTU_SM_SIGNAL_CHARGE_START) next_state = PTU_SM_STATE_POWER_TRANSFER;
56 case PTU_SM_STATE_POWER_TRANSFER:
57 if( signal == PTU_SM_SIGNAL_LOCAL_FAULT) next_state = PTU_SM_STATE_LOCAL_FAULT;
58 else if(signal == PTU_SM_SIGNAL_SYSTEM_ERROR) next_state = PTU_SM_STATE_LATCH_FAULT;
59 else if(signal == PTU_SM_SIGNAL_ROGUE_OBJECT_DETECTED) next_state = PTU_SM_STATE_LATCH_FAULT;
60 else if(signal == PTU_SM_SIGNAL_ALL_DEVICES_DISCONNECTED ||
61 signal == PTU_SM_SIGNAL_PRU_ALL_CHARGE_COMPLETE) next_state = PTU_SM_STATE_POWER_SAVE;
64 case PTU_SM_STATE_LATCH_FAULT:
65 if( signal == PTU_SM_SIGNAL_LOCAL_FAULT) next_state = PTU_SM_STATE_LOCAL_FAULT;
66 else if(signal == PTU_SM_SIGNAL_LATCHING_FAULT_CLEARED_BY_USER)
67 next_state = PTU_SM_STATE_CONFIGURATION;
70 case PTU_SM_STATE_LOCAL_FAULT:
71 if( signal == PTU_SM_SIGNAL_LOCAL_FAULT_CLEARED)
73 if(p_state->
prev_state == PTU_SM_STATE_LATCH_FAULT)
74 next_state = PTU_SM_STATE_LATCH_FAULT;
76 next_state = PTU_SM_STATE_CONFIGURATION;
98 if(signal != PTU_SM_SIGNAL_NULL && p_state != 0)
106 return current_state;
static ptu_sm_state_t m_get_next_state(ptu_sm_signal_type_t signal, ptu_sm_state_vars_t *p_state)
Find the next state given the current state and the state machine event.
State machine state variables.
ptu_sm_signal_type_t
PTU signal type.
ptu_sm_state_t prev_state
ptu_sm_state_t current_state
ptu_sm_state_t
PTU states.
ptu_sm_state_t next_state
ptu_sm_state_t ptu_sm_execute(ptu_sm_signal_type_t signal, ptu_sm_state_vars_t *p_state)
State machine input signal handler.