poll button state in statechart and raise internal events on change
This commit is contained in:
parent
675efff85c
commit
45c0844fc2
5 changed files with 738 additions and 354 deletions
|
|
@ -15,51 +15,68 @@ Implementation of the state machine 'Statechart'
|
|||
#endif
|
||||
|
||||
/* prototypes of all internal functions */
|
||||
static void enact_main_region_on_r1_responding(Statechart* handle);
|
||||
static void enact_main_region_on_r1_sensor_error(Statechart* handle);
|
||||
static void enact_main_region_on_r2_pressed(Statechart* handle);
|
||||
static void exact_main_region_on_r2_pressed(Statechart* handle);
|
||||
static void enseq_main_region_on_default(Statechart* handle);
|
||||
static void enseq_main_region_on_r1_responding_default(Statechart* handle);
|
||||
static void enseq_main_region_on_r1_sensor_error_default(Statechart* handle);
|
||||
static void enseq_main_region_on_r2_not_pressed_default(Statechart* handle);
|
||||
static void enseq_main_region_on_r2_pressed_default(Statechart* handle);
|
||||
static void enseq_main_region_off_default(Statechart* handle);
|
||||
static void enact_main_region_everything_r1_on_r1_responding(Statechart* handle);
|
||||
static void enact_main_region_everything_r1_on_r1_sensor_error(Statechart* handle);
|
||||
static void enact_main_region_everything_r1_on_r2_pressed(Statechart* handle);
|
||||
static void exact_main_region_everything_r1_on_r2_pressed(Statechart* handle);
|
||||
static void enseq_main_region_everything_default(Statechart* handle);
|
||||
static void enseq_main_region_everything_r1_off_default(Statechart* handle);
|
||||
static void enseq_main_region_everything_r1_on_default(Statechart* handle);
|
||||
static void enseq_main_region_everything_r1_on_r1_responding_default(Statechart* handle);
|
||||
static void enseq_main_region_everything_r1_on_r1_sensor_error_default(Statechart* handle);
|
||||
static void enseq_main_region_everything_r1_on_r2_not_pressed_default(Statechart* handle);
|
||||
static void enseq_main_region_everything_r1_on_r2_pressed_default(Statechart* handle);
|
||||
static void enseq_main_region_everything_pollButton_button0_default(Statechart* handle);
|
||||
static void enseq_main_region_everything_pollButton_button1_default(Statechart* handle);
|
||||
static void enseq_main_region_default(Statechart* handle);
|
||||
static void enseq_main_region_on_r1_default(Statechart* handle);
|
||||
static void enseq_main_region_on_r2_default(Statechart* handle);
|
||||
static void exseq_main_region_on(Statechart* handle);
|
||||
static void exseq_main_region_on_r1_responding(Statechart* handle);
|
||||
static void exseq_main_region_on_r1_sensor_error(Statechart* handle);
|
||||
static void exseq_main_region_on_r2_not_pressed(Statechart* handle);
|
||||
static void exseq_main_region_on_r2_pressed(Statechart* handle);
|
||||
static void exseq_main_region_off(Statechart* handle);
|
||||
static void enseq_main_region_everything_r1_default(Statechart* handle);
|
||||
static void enseq_main_region_everything_r1_on_r1_default(Statechart* handle);
|
||||
static void enseq_main_region_everything_r1_on_r2_default(Statechart* handle);
|
||||
static void enseq_main_region_everything_pollButton_default(Statechart* handle);
|
||||
static void exseq_main_region_everything_r1_off(Statechart* handle);
|
||||
static void exseq_main_region_everything_r1_on(Statechart* handle);
|
||||
static void exseq_main_region_everything_r1_on_r1_responding(Statechart* handle);
|
||||
static void exseq_main_region_everything_r1_on_r1_sensor_error(Statechart* handle);
|
||||
static void exseq_main_region_everything_r1_on_r2_not_pressed(Statechart* handle);
|
||||
static void exseq_main_region_everything_r1_on_r2_pressed(Statechart* handle);
|
||||
static void exseq_main_region_everything_pollButton_button0(Statechart* handle);
|
||||
static void exseq_main_region_everything_pollButton_button1(Statechart* handle);
|
||||
static void exseq_main_region(Statechart* handle);
|
||||
static void exseq_main_region_on_r1(Statechart* handle);
|
||||
static void exseq_main_region_on_r2(Statechart* handle);
|
||||
static void react_main_region_on_r1__choice_0(Statechart* handle);
|
||||
static void react_main_region_on_r1__entry_Default(Statechart* handle);
|
||||
static void react_main_region_on_r2__entry_Default(Statechart* handle);
|
||||
static void exseq_main_region_everything_r1_on_r1(Statechart* handle);
|
||||
static void exseq_main_region_everything_r1_on_r2(Statechart* handle);
|
||||
static void react_main_region_everything_r1_on_r1__choice_0(Statechart* handle);
|
||||
static void react_main_region_everything_r1__entry_Default(Statechart* handle);
|
||||
static void react_main_region_everything_r1_on_r1__entry_Default(Statechart* handle);
|
||||
static void react_main_region_everything_r1_on_r2__entry_Default(Statechart* handle);
|
||||
static void react_main_region_everything_pollButton__entry_Default(Statechart* handle);
|
||||
static void react_main_region__entry_Default(Statechart* handle);
|
||||
|
||||
/*! The reactions of state off. */
|
||||
static sc_integer main_region_everything_r1_off_react(Statechart* handle, const sc_integer transitioned_before);
|
||||
|
||||
/*! The reactions of state responding. */
|
||||
static sc_integer main_region_on_r1_responding_react(Statechart* handle, const sc_integer transitioned_before);
|
||||
static sc_integer main_region_everything_r1_on_r1_responding_react(Statechart* handle, const sc_integer transitioned_before);
|
||||
|
||||
/*! The reactions of state sensor_error. */
|
||||
static sc_integer main_region_on_r1_sensor_error_react(Statechart* handle, const sc_integer transitioned_before);
|
||||
static sc_integer main_region_everything_r1_on_r1_sensor_error_react(Statechart* handle, const sc_integer transitioned_before);
|
||||
|
||||
/*! The reactions of state not_pressed. */
|
||||
static sc_integer main_region_on_r2_not_pressed_react(Statechart* handle, const sc_integer transitioned_before);
|
||||
static sc_integer main_region_everything_r1_on_r2_not_pressed_react(Statechart* handle, const sc_integer transitioned_before);
|
||||
|
||||
/*! The reactions of state pressed. */
|
||||
static sc_integer main_region_on_r2_pressed_react(Statechart* handle, const sc_integer transitioned_before);
|
||||
static sc_integer main_region_everything_r1_on_r2_pressed_react(Statechart* handle, const sc_integer transitioned_before);
|
||||
|
||||
/*! The reactions of state off. */
|
||||
static sc_integer main_region_off_react(Statechart* handle, const sc_integer transitioned_before);
|
||||
/*! The reactions of state button0. */
|
||||
static sc_integer main_region_everything_pollButton_button0_react(Statechart* handle, const sc_integer transitioned_before);
|
||||
|
||||
/*! The reactions of state button1. */
|
||||
static sc_integer main_region_everything_pollButton_button1_react(Statechart* handle, const sc_integer transitioned_before);
|
||||
|
||||
|
||||
static void clear_in_events(Statechart* handle);
|
||||
|
||||
static void clear_internal_events(Statechart* handle);
|
||||
|
||||
static void micro_step(Statechart* handle);
|
||||
|
||||
/*! Performs a 'run to completion' step. */
|
||||
|
|
@ -99,6 +116,7 @@ void statechart_init(Statechart* handle)
|
|||
|
||||
|
||||
clear_in_events(handle);
|
||||
clear_internal_events(handle);
|
||||
|
||||
sc_observable_int32_t_init(&handle->iface.setMotorR);
|
||||
sc_observable_int32_t_init(&handle->iface.setMotorL);
|
||||
|
|
@ -107,6 +125,7 @@ void statechart_init(Statechart* handle)
|
|||
statechart_internal_set_speed(handle, 0);
|
||||
|
||||
handle->isExecuting = bool_false;
|
||||
statechart_eventqueue_init(&handle->internal_event_queue, handle->internal_buffer, STATECHART_INTERNAL_EVENTQUEUE_BUFFERSIZE);
|
||||
statechart_eventqueue_init(&handle->in_event_queue, handle->in_buffer, STATECHART_IN_EVENTQUEUE_BUFFERSIZE);
|
||||
}
|
||||
|
||||
|
|
@ -135,7 +154,8 @@ void statechart_exit(Statechart* handle)
|
|||
exseq_main_region(handle);
|
||||
handle->stateConfVector[0] = Statechart_last_state;
|
||||
handle->stateConfVector[1] = Statechart_last_state;
|
||||
handle->stateConfVectorPosition = 1;
|
||||
handle->stateConfVector[2] = Statechart_last_state;
|
||||
handle->stateConfVectorPosition = 2;
|
||||
handle->isExecuting = bool_false;
|
||||
}
|
||||
|
||||
|
|
@ -184,28 +204,40 @@ sc_boolean statechart_is_state_active(const Statechart* handle, StatechartStates
|
|||
sc_boolean result = bool_false;
|
||||
switch (state)
|
||||
{
|
||||
case Statechart_main_region_on :
|
||||
result = (sc_boolean) (handle->stateConfVector[SCVI_STATECHART_MAIN_REGION_ON] >= Statechart_main_region_on
|
||||
&& handle->stateConfVector[SCVI_STATECHART_MAIN_REGION_ON] <= Statechart_main_region_on_r2_pressed);
|
||||
case Statechart_main_region_everything :
|
||||
result = (sc_boolean) (handle->stateConfVector[SCVI_STATECHART_MAIN_REGION_EVERYTHING] >= Statechart_main_region_everything
|
||||
&& handle->stateConfVector[SCVI_STATECHART_MAIN_REGION_EVERYTHING] <= Statechart_main_region_everything_pollButton_button1);
|
||||
break;
|
||||
case Statechart_main_region_on_r1_responding :
|
||||
result = (sc_boolean) (handle->stateConfVector[SCVI_STATECHART_MAIN_REGION_ON_R1_RESPONDING] == Statechart_main_region_on_r1_responding
|
||||
case Statechart_main_region_everything_r1_off :
|
||||
result = (sc_boolean) (handle->stateConfVector[SCVI_STATECHART_MAIN_REGION_EVERYTHING_R1_OFF] == Statechart_main_region_everything_r1_off
|
||||
);
|
||||
break;
|
||||
case Statechart_main_region_on_r1_sensor_error :
|
||||
result = (sc_boolean) (handle->stateConfVector[SCVI_STATECHART_MAIN_REGION_ON_R1_SENSOR_ERROR] == Statechart_main_region_on_r1_sensor_error
|
||||
case Statechart_main_region_everything_r1_on :
|
||||
result = (sc_boolean) (handle->stateConfVector[SCVI_STATECHART_MAIN_REGION_EVERYTHING_R1_ON] >= Statechart_main_region_everything_r1_on
|
||||
&& handle->stateConfVector[SCVI_STATECHART_MAIN_REGION_EVERYTHING_R1_ON] <= Statechart_main_region_everything_r1_on_r2_pressed);
|
||||
break;
|
||||
case Statechart_main_region_everything_r1_on_r1_responding :
|
||||
result = (sc_boolean) (handle->stateConfVector[SCVI_STATECHART_MAIN_REGION_EVERYTHING_R1_ON_R1_RESPONDING] == Statechart_main_region_everything_r1_on_r1_responding
|
||||
);
|
||||
break;
|
||||
case Statechart_main_region_on_r2_not_pressed :
|
||||
result = (sc_boolean) (handle->stateConfVector[SCVI_STATECHART_MAIN_REGION_ON_R2_NOT_PRESSED] == Statechart_main_region_on_r2_not_pressed
|
||||
case Statechart_main_region_everything_r1_on_r1_sensor_error :
|
||||
result = (sc_boolean) (handle->stateConfVector[SCVI_STATECHART_MAIN_REGION_EVERYTHING_R1_ON_R1_SENSOR_ERROR] == Statechart_main_region_everything_r1_on_r1_sensor_error
|
||||
);
|
||||
break;
|
||||
case Statechart_main_region_on_r2_pressed :
|
||||
result = (sc_boolean) (handle->stateConfVector[SCVI_STATECHART_MAIN_REGION_ON_R2_PRESSED] == Statechart_main_region_on_r2_pressed
|
||||
case Statechart_main_region_everything_r1_on_r2_not_pressed :
|
||||
result = (sc_boolean) (handle->stateConfVector[SCVI_STATECHART_MAIN_REGION_EVERYTHING_R1_ON_R2_NOT_PRESSED] == Statechart_main_region_everything_r1_on_r2_not_pressed
|
||||
);
|
||||
break;
|
||||
case Statechart_main_region_off :
|
||||
result = (sc_boolean) (handle->stateConfVector[SCVI_STATECHART_MAIN_REGION_OFF] == Statechart_main_region_off
|
||||
case Statechart_main_region_everything_r1_on_r2_pressed :
|
||||
result = (sc_boolean) (handle->stateConfVector[SCVI_STATECHART_MAIN_REGION_EVERYTHING_R1_ON_R2_PRESSED] == Statechart_main_region_everything_r1_on_r2_pressed
|
||||
);
|
||||
break;
|
||||
case Statechart_main_region_everything_pollButton_button0 :
|
||||
result = (sc_boolean) (handle->stateConfVector[SCVI_STATECHART_MAIN_REGION_EVERYTHING_POLLBUTTON_BUTTON0] == Statechart_main_region_everything_pollButton_button0
|
||||
);
|
||||
break;
|
||||
case Statechart_main_region_everything_pollButton_button1 :
|
||||
result = (sc_boolean) (handle->stateConfVector[SCVI_STATECHART_MAIN_REGION_EVERYTHING_POLLBUTTON_BUTTON1] == Statechart_main_region_everything_pollButton_button1
|
||||
);
|
||||
break;
|
||||
default:
|
||||
|
|
@ -218,9 +250,14 @@ sc_boolean statechart_is_state_active(const Statechart* handle, StatechartStates
|
|||
static void clear_in_events(Statechart* handle)
|
||||
{
|
||||
handle->iface.sensor_raised = bool_false;
|
||||
handle->iface.buttonPressed_raised = bool_false;
|
||||
handle->iface.buttonReleased_raised = bool_false;
|
||||
handle->timeEvents.statechart_main_region_on_r2_pressed_tev0_raised = bool_false;
|
||||
handle->iface.buttonState_raised = bool_false;
|
||||
handle->timeEvents.statechart_main_region_everything_r1_on_r2_pressed_tev0_raised = bool_false;
|
||||
}
|
||||
|
||||
static void clear_internal_events(Statechart* handle)
|
||||
{
|
||||
handle->internal.buttonPressed_raised = bool_false;
|
||||
handle->internal.buttonReleased_raised = bool_false;
|
||||
}
|
||||
|
||||
static void micro_step(Statechart* handle)
|
||||
|
|
@ -229,19 +266,19 @@ static void micro_step(Statechart* handle)
|
|||
handle->stateConfVectorPosition = 0;
|
||||
switch(handle->stateConfVector[ 0 ])
|
||||
{
|
||||
case Statechart_main_region_on_r1_responding :
|
||||
case Statechart_main_region_everything_r1_off :
|
||||
{
|
||||
transitioned = main_region_on_r1_responding_react(handle,transitioned);
|
||||
transitioned = main_region_everything_r1_off_react(handle,transitioned);
|
||||
break;
|
||||
}
|
||||
case Statechart_main_region_on_r1_sensor_error :
|
||||
case Statechart_main_region_everything_r1_on_r1_responding :
|
||||
{
|
||||
transitioned = main_region_on_r1_sensor_error_react(handle,transitioned);
|
||||
transitioned = main_region_everything_r1_on_r1_responding_react(handle,transitioned);
|
||||
break;
|
||||
}
|
||||
case Statechart_main_region_off :
|
||||
case Statechart_main_region_everything_r1_on_r1_sensor_error :
|
||||
{
|
||||
transitioned = main_region_off_react(handle,transitioned);
|
||||
transitioned = main_region_everything_r1_on_r1_sensor_error_react(handle,transitioned);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
|
|
@ -252,14 +289,32 @@ static void micro_step(Statechart* handle)
|
|||
{
|
||||
switch(handle->stateConfVector[ 1 ])
|
||||
{
|
||||
case Statechart_main_region_on_r2_not_pressed :
|
||||
case Statechart_main_region_everything_r1_on_r2_not_pressed :
|
||||
{
|
||||
main_region_on_r2_not_pressed_react(handle,transitioned);
|
||||
transitioned = main_region_everything_r1_on_r2_not_pressed_react(handle,transitioned);
|
||||
break;
|
||||
}
|
||||
case Statechart_main_region_on_r2_pressed :
|
||||
case Statechart_main_region_everything_r1_on_r2_pressed :
|
||||
{
|
||||
main_region_on_r2_pressed_react(handle,transitioned);
|
||||
transitioned = main_region_everything_r1_on_r2_pressed_react(handle,transitioned);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
/* do nothing */
|
||||
break;
|
||||
}
|
||||
} if ((handle->stateConfVectorPosition) < (2))
|
||||
{
|
||||
switch(handle->stateConfVector[ 2 ])
|
||||
{
|
||||
case Statechart_main_region_everything_pollButton_button0 :
|
||||
{
|
||||
main_region_everything_pollButton_button0_react(handle,transitioned);
|
||||
break;
|
||||
}
|
||||
case Statechart_main_region_everything_pollButton_button1 :
|
||||
{
|
||||
main_region_everything_pollButton_button1_react(handle,transitioned);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
|
|
@ -282,6 +337,7 @@ static void run_cycle(Statechart* handle)
|
|||
{
|
||||
micro_step(handle);
|
||||
clear_in_events(handle);
|
||||
clear_internal_events(handle);
|
||||
} while (statechart_dispatch_next_event(handle) == bool_true);
|
||||
handle->isExecuting = bool_false;
|
||||
}
|
||||
|
|
@ -293,15 +349,9 @@ void statechart_raise_sensor(Statechart* handle, int32_t value)
|
|||
run_cycle(handle);
|
||||
}
|
||||
|
||||
void statechart_raise_buttonPressed(Statechart* handle)
|
||||
void statechart_raise_buttonState(Statechart* handle, sc_boolean value)
|
||||
{
|
||||
statechart_add_event_to_queue(&(handle->in_event_queue), Statechart_buttonPressed);
|
||||
run_cycle(handle);
|
||||
}
|
||||
|
||||
void statechart_raise_buttonReleased(Statechart* handle)
|
||||
{
|
||||
statechart_add_event_to_queue(&(handle->in_event_queue), Statechart_buttonReleased);
|
||||
statechart_add_value_event_to_queue(&(handle->in_event_queue), Statechart_buttonState, &value);
|
||||
run_cycle(handle);
|
||||
}
|
||||
|
||||
|
|
@ -329,7 +379,7 @@ static void statechart_internal_set_pid_vars(Statechart* handle, pid_vars_t valu
|
|||
/* implementations of all internal functions */
|
||||
|
||||
/* Entry action for state 'responding'. */
|
||||
static void enact_main_region_on_r1_responding(Statechart* handle)
|
||||
static void enact_main_region_everything_r1_on_r1_responding(Statechart* handle)
|
||||
{
|
||||
/* Entry action for state 'responding'. */
|
||||
statechart_internal_set_speed(handle, statechart_pid(handle,handle->iface.sensor_value, handle->internal.pid_vars));
|
||||
|
|
@ -344,7 +394,7 @@ static void enact_main_region_on_r1_responding(Statechart* handle)
|
|||
}
|
||||
|
||||
/* Entry action for state 'sensor_error'. */
|
||||
static void enact_main_region_on_r1_sensor_error(Statechart* handle)
|
||||
static void enact_main_region_everything_r1_on_r1_sensor_error(Statechart* handle)
|
||||
{
|
||||
/* Entry action for state 'sensor_error'. */
|
||||
{
|
||||
|
|
@ -358,68 +408,92 @@ static void enact_main_region_on_r1_sensor_error(Statechart* handle)
|
|||
}
|
||||
|
||||
/* Entry action for state 'pressed'. */
|
||||
static void enact_main_region_on_r2_pressed(Statechart* handle)
|
||||
static void enact_main_region_everything_r1_on_r2_pressed(Statechart* handle)
|
||||
{
|
||||
/* Entry action for state 'pressed'. */
|
||||
statechart_set_timer(handle, (sc_eventid) &(handle->timeEvents.statechart_main_region_on_r2_pressed_tev0_raised) , (((sc_time) 2) * 1000), bool_false);
|
||||
statechart_set_timer(handle, (sc_eventid) &(handle->timeEvents.statechart_main_region_everything_r1_on_r2_pressed_tev0_raised) , (((sc_time) 2) * 1000), bool_false);
|
||||
}
|
||||
|
||||
/* Exit action for state 'pressed'. */
|
||||
static void exact_main_region_on_r2_pressed(Statechart* handle)
|
||||
static void exact_main_region_everything_r1_on_r2_pressed(Statechart* handle)
|
||||
{
|
||||
/* Exit action for state 'pressed'. */
|
||||
statechart_unset_timer(handle, (sc_eventid) &(handle->timeEvents.statechart_main_region_on_r2_pressed_tev0_raised) );
|
||||
statechart_unset_timer(handle, (sc_eventid) &(handle->timeEvents.statechart_main_region_everything_r1_on_r2_pressed_tev0_raised) );
|
||||
}
|
||||
|
||||
/* 'default' enter sequence for state everything */
|
||||
static void enseq_main_region_everything_default(Statechart* handle)
|
||||
{
|
||||
/* 'default' enter sequence for state everything */
|
||||
enseq_main_region_everything_r1_default(handle);
|
||||
enseq_main_region_everything_pollButton_default(handle);
|
||||
}
|
||||
|
||||
/* 'default' enter sequence for state off */
|
||||
static void enseq_main_region_everything_r1_off_default(Statechart* handle)
|
||||
{
|
||||
/* 'default' enter sequence for state off */
|
||||
handle->stateConfVector[0] = Statechart_main_region_everything_r1_off;
|
||||
handle->stateConfVectorPosition = 0;
|
||||
}
|
||||
|
||||
/* 'default' enter sequence for state on */
|
||||
static void enseq_main_region_on_default(Statechart* handle)
|
||||
static void enseq_main_region_everything_r1_on_default(Statechart* handle)
|
||||
{
|
||||
/* 'default' enter sequence for state on */
|
||||
enseq_main_region_on_r1_default(handle);
|
||||
enseq_main_region_on_r2_default(handle);
|
||||
enseq_main_region_everything_r1_on_r1_default(handle);
|
||||
enseq_main_region_everything_r1_on_r2_default(handle);
|
||||
}
|
||||
|
||||
/* 'default' enter sequence for state responding */
|
||||
static void enseq_main_region_on_r1_responding_default(Statechart* handle)
|
||||
static void enseq_main_region_everything_r1_on_r1_responding_default(Statechart* handle)
|
||||
{
|
||||
/* 'default' enter sequence for state responding */
|
||||
enact_main_region_on_r1_responding(handle);
|
||||
handle->stateConfVector[0] = Statechart_main_region_on_r1_responding;
|
||||
enact_main_region_everything_r1_on_r1_responding(handle);
|
||||
handle->stateConfVector[0] = Statechart_main_region_everything_r1_on_r1_responding;
|
||||
handle->stateConfVectorPosition = 0;
|
||||
}
|
||||
|
||||
/* 'default' enter sequence for state sensor_error */
|
||||
static void enseq_main_region_on_r1_sensor_error_default(Statechart* handle)
|
||||
static void enseq_main_region_everything_r1_on_r1_sensor_error_default(Statechart* handle)
|
||||
{
|
||||
/* 'default' enter sequence for state sensor_error */
|
||||
enact_main_region_on_r1_sensor_error(handle);
|
||||
handle->stateConfVector[0] = Statechart_main_region_on_r1_sensor_error;
|
||||
enact_main_region_everything_r1_on_r1_sensor_error(handle);
|
||||
handle->stateConfVector[0] = Statechart_main_region_everything_r1_on_r1_sensor_error;
|
||||
handle->stateConfVectorPosition = 0;
|
||||
}
|
||||
|
||||
/* 'default' enter sequence for state not_pressed */
|
||||
static void enseq_main_region_on_r2_not_pressed_default(Statechart* handle)
|
||||
static void enseq_main_region_everything_r1_on_r2_not_pressed_default(Statechart* handle)
|
||||
{
|
||||
/* 'default' enter sequence for state not_pressed */
|
||||
handle->stateConfVector[1] = Statechart_main_region_on_r2_not_pressed;
|
||||
handle->stateConfVector[1] = Statechart_main_region_everything_r1_on_r2_not_pressed;
|
||||
handle->stateConfVectorPosition = 1;
|
||||
}
|
||||
|
||||
/* 'default' enter sequence for state pressed */
|
||||
static void enseq_main_region_on_r2_pressed_default(Statechart* handle)
|
||||
static void enseq_main_region_everything_r1_on_r2_pressed_default(Statechart* handle)
|
||||
{
|
||||
/* 'default' enter sequence for state pressed */
|
||||
enact_main_region_on_r2_pressed(handle);
|
||||
handle->stateConfVector[1] = Statechart_main_region_on_r2_pressed;
|
||||
enact_main_region_everything_r1_on_r2_pressed(handle);
|
||||
handle->stateConfVector[1] = Statechart_main_region_everything_r1_on_r2_pressed;
|
||||
handle->stateConfVectorPosition = 1;
|
||||
}
|
||||
|
||||
/* 'default' enter sequence for state off */
|
||||
static void enseq_main_region_off_default(Statechart* handle)
|
||||
/* 'default' enter sequence for state button0 */
|
||||
static void enseq_main_region_everything_pollButton_button0_default(Statechart* handle)
|
||||
{
|
||||
/* 'default' enter sequence for state off */
|
||||
handle->stateConfVector[0] = Statechart_main_region_off;
|
||||
handle->stateConfVectorPosition = 0;
|
||||
/* 'default' enter sequence for state button0 */
|
||||
handle->stateConfVector[2] = Statechart_main_region_everything_pollButton_button0;
|
||||
handle->stateConfVectorPosition = 2;
|
||||
}
|
||||
|
||||
/* 'default' enter sequence for state button1 */
|
||||
static void enseq_main_region_everything_pollButton_button1_default(Statechart* handle)
|
||||
{
|
||||
/* 'default' enter sequence for state button1 */
|
||||
handle->stateConfVector[2] = Statechart_main_region_everything_pollButton_button1;
|
||||
handle->stateConfVectorPosition = 2;
|
||||
}
|
||||
|
||||
/* 'default' enter sequence for region main region */
|
||||
|
|
@ -430,69 +504,99 @@ static void enseq_main_region_default(Statechart* handle)
|
|||
}
|
||||
|
||||
/* 'default' enter sequence for region r1 */
|
||||
static void enseq_main_region_on_r1_default(Statechart* handle)
|
||||
static void enseq_main_region_everything_r1_default(Statechart* handle)
|
||||
{
|
||||
/* 'default' enter sequence for region r1 */
|
||||
react_main_region_on_r1__entry_Default(handle);
|
||||
react_main_region_everything_r1__entry_Default(handle);
|
||||
}
|
||||
|
||||
/* 'default' enter sequence for region r1 */
|
||||
static void enseq_main_region_everything_r1_on_r1_default(Statechart* handle)
|
||||
{
|
||||
/* 'default' enter sequence for region r1 */
|
||||
react_main_region_everything_r1_on_r1__entry_Default(handle);
|
||||
}
|
||||
|
||||
/* 'default' enter sequence for region r2 */
|
||||
static void enseq_main_region_on_r2_default(Statechart* handle)
|
||||
static void enseq_main_region_everything_r1_on_r2_default(Statechart* handle)
|
||||
{
|
||||
/* 'default' enter sequence for region r2 */
|
||||
react_main_region_on_r2__entry_Default(handle);
|
||||
react_main_region_everything_r1_on_r2__entry_Default(handle);
|
||||
}
|
||||
|
||||
/* 'default' enter sequence for region pollButton */
|
||||
static void enseq_main_region_everything_pollButton_default(Statechart* handle)
|
||||
{
|
||||
/* 'default' enter sequence for region pollButton */
|
||||
react_main_region_everything_pollButton__entry_Default(handle);
|
||||
}
|
||||
|
||||
/* Default exit sequence for state off */
|
||||
static void exseq_main_region_everything_r1_off(Statechart* handle)
|
||||
{
|
||||
/* Default exit sequence for state off */
|
||||
handle->stateConfVector[0] = Statechart_main_region_everything;
|
||||
handle->stateConfVectorPosition = 0;
|
||||
}
|
||||
|
||||
/* Default exit sequence for state on */
|
||||
static void exseq_main_region_on(Statechart* handle)
|
||||
static void exseq_main_region_everything_r1_on(Statechart* handle)
|
||||
{
|
||||
/* Default exit sequence for state on */
|
||||
exseq_main_region_on_r1(handle);
|
||||
exseq_main_region_on_r2(handle);
|
||||
handle->stateConfVector[0] = Statechart_last_state;
|
||||
handle->stateConfVector[1] = Statechart_last_state;
|
||||
exseq_main_region_everything_r1_on_r1(handle);
|
||||
exseq_main_region_everything_r1_on_r2(handle);
|
||||
handle->stateConfVector[0] = Statechart_main_region_everything;
|
||||
handle->stateConfVector[1] = Statechart_main_region_everything;
|
||||
handle->stateConfVectorPosition = 1;
|
||||
}
|
||||
|
||||
/* Default exit sequence for state responding */
|
||||
static void exseq_main_region_on_r1_responding(Statechart* handle)
|
||||
static void exseq_main_region_everything_r1_on_r1_responding(Statechart* handle)
|
||||
{
|
||||
/* Default exit sequence for state responding */
|
||||
handle->stateConfVector[0] = Statechart_main_region_on;
|
||||
handle->stateConfVector[0] = Statechart_main_region_everything_r1_on;
|
||||
handle->stateConfVectorPosition = 0;
|
||||
}
|
||||
|
||||
/* Default exit sequence for state sensor_error */
|
||||
static void exseq_main_region_on_r1_sensor_error(Statechart* handle)
|
||||
static void exseq_main_region_everything_r1_on_r1_sensor_error(Statechart* handle)
|
||||
{
|
||||
/* Default exit sequence for state sensor_error */
|
||||
handle->stateConfVector[0] = Statechart_main_region_on;
|
||||
handle->stateConfVector[0] = Statechart_main_region_everything_r1_on;
|
||||
handle->stateConfVectorPosition = 0;
|
||||
}
|
||||
|
||||
/* Default exit sequence for state not_pressed */
|
||||
static void exseq_main_region_on_r2_not_pressed(Statechart* handle)
|
||||
static void exseq_main_region_everything_r1_on_r2_not_pressed(Statechart* handle)
|
||||
{
|
||||
/* Default exit sequence for state not_pressed */
|
||||
handle->stateConfVector[1] = Statechart_main_region_on;
|
||||
handle->stateConfVector[1] = Statechart_main_region_everything_r1_on;
|
||||
handle->stateConfVectorPosition = 1;
|
||||
}
|
||||
|
||||
/* Default exit sequence for state pressed */
|
||||
static void exseq_main_region_on_r2_pressed(Statechart* handle)
|
||||
static void exseq_main_region_everything_r1_on_r2_pressed(Statechart* handle)
|
||||
{
|
||||
/* Default exit sequence for state pressed */
|
||||
handle->stateConfVector[1] = Statechart_main_region_on;
|
||||
handle->stateConfVector[1] = Statechart_main_region_everything_r1_on;
|
||||
handle->stateConfVectorPosition = 1;
|
||||
exact_main_region_on_r2_pressed(handle);
|
||||
exact_main_region_everything_r1_on_r2_pressed(handle);
|
||||
}
|
||||
|
||||
/* Default exit sequence for state off */
|
||||
static void exseq_main_region_off(Statechart* handle)
|
||||
/* Default exit sequence for state button0 */
|
||||
static void exseq_main_region_everything_pollButton_button0(Statechart* handle)
|
||||
{
|
||||
/* Default exit sequence for state off */
|
||||
handle->stateConfVector[0] = Statechart_last_state;
|
||||
handle->stateConfVectorPosition = 0;
|
||||
/* Default exit sequence for state button0 */
|
||||
handle->stateConfVector[2] = Statechart_main_region_everything;
|
||||
handle->stateConfVectorPosition = 2;
|
||||
}
|
||||
|
||||
/* Default exit sequence for state button1 */
|
||||
static void exseq_main_region_everything_pollButton_button1(Statechart* handle)
|
||||
{
|
||||
/* Default exit sequence for state button1 */
|
||||
handle->stateConfVector[2] = Statechart_main_region_everything;
|
||||
handle->stateConfVectorPosition = 2;
|
||||
}
|
||||
|
||||
/* Default exit sequence for region main region */
|
||||
|
|
@ -502,19 +606,19 @@ static void exseq_main_region(Statechart* handle)
|
|||
/* Handle exit of all possible states (of Statechart.main_region) at position 0... */
|
||||
switch(handle->stateConfVector[ 0 ])
|
||||
{
|
||||
case Statechart_main_region_on_r1_responding :
|
||||
case Statechart_main_region_everything_r1_off :
|
||||
{
|
||||
exseq_main_region_on_r1_responding(handle);
|
||||
exseq_main_region_everything_r1_off(handle);
|
||||
break;
|
||||
}
|
||||
case Statechart_main_region_on_r1_sensor_error :
|
||||
case Statechart_main_region_everything_r1_on_r1_responding :
|
||||
{
|
||||
exseq_main_region_on_r1_sensor_error(handle);
|
||||
exseq_main_region_everything_r1_on_r1_responding(handle);
|
||||
break;
|
||||
}
|
||||
case Statechart_main_region_off :
|
||||
case Statechart_main_region_everything_r1_on_r1_sensor_error :
|
||||
{
|
||||
exseq_main_region_off(handle);
|
||||
exseq_main_region_everything_r1_on_r1_sensor_error(handle);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
|
|
@ -524,14 +628,31 @@ static void exseq_main_region(Statechart* handle)
|
|||
/* Handle exit of all possible states (of Statechart.main_region) at position 1... */
|
||||
switch(handle->stateConfVector[ 1 ])
|
||||
{
|
||||
case Statechart_main_region_on_r2_not_pressed :
|
||||
case Statechart_main_region_everything_r1_on_r2_not_pressed :
|
||||
{
|
||||
exseq_main_region_on_r2_not_pressed(handle);
|
||||
exseq_main_region_everything_r1_on_r2_not_pressed(handle);
|
||||
break;
|
||||
}
|
||||
case Statechart_main_region_on_r2_pressed :
|
||||
case Statechart_main_region_everything_r1_on_r2_pressed :
|
||||
{
|
||||
exseq_main_region_on_r2_pressed(handle);
|
||||
exseq_main_region_everything_r1_on_r2_pressed(handle);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
/* do nothing */
|
||||
break;
|
||||
}
|
||||
/* Handle exit of all possible states (of Statechart.main_region) at position 2... */
|
||||
switch(handle->stateConfVector[ 2 ])
|
||||
{
|
||||
case Statechart_main_region_everything_pollButton_button0 :
|
||||
{
|
||||
exseq_main_region_everything_pollButton_button0(handle);
|
||||
break;
|
||||
}
|
||||
case Statechart_main_region_everything_pollButton_button1 :
|
||||
{
|
||||
exseq_main_region_everything_pollButton_button1(handle);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
|
|
@ -541,20 +662,20 @@ static void exseq_main_region(Statechart* handle)
|
|||
}
|
||||
|
||||
/* Default exit sequence for region r1 */
|
||||
static void exseq_main_region_on_r1(Statechart* handle)
|
||||
static void exseq_main_region_everything_r1_on_r1(Statechart* handle)
|
||||
{
|
||||
/* Default exit sequence for region r1 */
|
||||
/* Handle exit of all possible states (of Statechart.main_region.on.r1) at position 0... */
|
||||
/* Handle exit of all possible states (of Statechart.main_region.everything.r1.on.r1) at position 0... */
|
||||
switch(handle->stateConfVector[ 0 ])
|
||||
{
|
||||
case Statechart_main_region_on_r1_responding :
|
||||
case Statechart_main_region_everything_r1_on_r1_responding :
|
||||
{
|
||||
exseq_main_region_on_r1_responding(handle);
|
||||
exseq_main_region_everything_r1_on_r1_responding(handle);
|
||||
break;
|
||||
}
|
||||
case Statechart_main_region_on_r1_sensor_error :
|
||||
case Statechart_main_region_everything_r1_on_r1_sensor_error :
|
||||
{
|
||||
exseq_main_region_on_r1_sensor_error(handle);
|
||||
exseq_main_region_everything_r1_on_r1_sensor_error(handle);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
|
|
@ -564,20 +685,20 @@ static void exseq_main_region_on_r1(Statechart* handle)
|
|||
}
|
||||
|
||||
/* Default exit sequence for region r2 */
|
||||
static void exseq_main_region_on_r2(Statechart* handle)
|
||||
static void exseq_main_region_everything_r1_on_r2(Statechart* handle)
|
||||
{
|
||||
/* Default exit sequence for region r2 */
|
||||
/* Handle exit of all possible states (of Statechart.main_region.on.r2) at position 1... */
|
||||
/* Handle exit of all possible states (of Statechart.main_region.everything.r1.on.r2) at position 1... */
|
||||
switch(handle->stateConfVector[ 1 ])
|
||||
{
|
||||
case Statechart_main_region_on_r2_not_pressed :
|
||||
case Statechart_main_region_everything_r1_on_r2_not_pressed :
|
||||
{
|
||||
exseq_main_region_on_r2_not_pressed(handle);
|
||||
exseq_main_region_everything_r1_on_r2_not_pressed(handle);
|
||||
break;
|
||||
}
|
||||
case Statechart_main_region_on_r2_pressed :
|
||||
case Statechart_main_region_everything_r1_on_r2_pressed :
|
||||
{
|
||||
exseq_main_region_on_r2_pressed(handle);
|
||||
exseq_main_region_everything_r1_on_r2_pressed(handle);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
|
|
@ -587,41 +708,71 @@ static void exseq_main_region_on_r2(Statechart* handle)
|
|||
}
|
||||
|
||||
/* The reactions of state null. */
|
||||
static void react_main_region_on_r1__choice_0(Statechart* handle)
|
||||
static void react_main_region_everything_r1_on_r1__choice_0(Statechart* handle)
|
||||
{
|
||||
/* The reactions of state null. */
|
||||
if ((handle->iface.sensor_value) < (0))
|
||||
{
|
||||
enseq_main_region_on_r1_sensor_error_default(handle);
|
||||
enseq_main_region_everything_r1_on_r1_sensor_error_default(handle);
|
||||
} else
|
||||
{
|
||||
enseq_main_region_on_r1_responding_default(handle);
|
||||
enseq_main_region_everything_r1_on_r1_responding_default(handle);
|
||||
}
|
||||
}
|
||||
|
||||
/* Default react sequence for initial entry */
|
||||
static void react_main_region_on_r1__entry_Default(Statechart* handle)
|
||||
static void react_main_region_everything_r1__entry_Default(Statechart* handle)
|
||||
{
|
||||
/* Default react sequence for initial entry */
|
||||
enseq_main_region_on_r1_responding_default(handle);
|
||||
enseq_main_region_everything_r1_off_default(handle);
|
||||
}
|
||||
|
||||
/* Default react sequence for initial entry */
|
||||
static void react_main_region_on_r2__entry_Default(Statechart* handle)
|
||||
static void react_main_region_everything_r1_on_r1__entry_Default(Statechart* handle)
|
||||
{
|
||||
/* Default react sequence for initial entry */
|
||||
enseq_main_region_on_r2_not_pressed_default(handle);
|
||||
enseq_main_region_everything_r1_on_r1_responding_default(handle);
|
||||
}
|
||||
|
||||
/* Default react sequence for initial entry */
|
||||
static void react_main_region_everything_r1_on_r2__entry_Default(Statechart* handle)
|
||||
{
|
||||
/* Default react sequence for initial entry */
|
||||
enseq_main_region_everything_r1_on_r2_not_pressed_default(handle);
|
||||
}
|
||||
|
||||
/* Default react sequence for initial entry */
|
||||
static void react_main_region_everything_pollButton__entry_Default(Statechart* handle)
|
||||
{
|
||||
/* Default react sequence for initial entry */
|
||||
enseq_main_region_everything_pollButton_button0_default(handle);
|
||||
}
|
||||
|
||||
/* Default react sequence for initial entry */
|
||||
static void react_main_region__entry_Default(Statechart* handle)
|
||||
{
|
||||
/* Default react sequence for initial entry */
|
||||
enseq_main_region_off_default(handle);
|
||||
enseq_main_region_everything_default(handle);
|
||||
}
|
||||
|
||||
|
||||
static sc_integer main_region_on_r1_responding_react(Statechart* handle, const sc_integer transitioned_before)
|
||||
static sc_integer main_region_everything_r1_off_react(Statechart* handle, const sc_integer transitioned_before)
|
||||
{
|
||||
/* The reactions of state off. */
|
||||
sc_integer transitioned_after = transitioned_before;
|
||||
if ((transitioned_after) < (0))
|
||||
{
|
||||
if (handle->internal.buttonPressed_raised == bool_true)
|
||||
{
|
||||
exseq_main_region_everything_r1_off(handle);
|
||||
enseq_main_region_everything_r1_on_default(handle);
|
||||
transitioned_after = 0;
|
||||
}
|
||||
}
|
||||
return transitioned_after;
|
||||
}
|
||||
|
||||
static sc_integer main_region_everything_r1_on_r1_responding_react(Statechart* handle, const sc_integer transitioned_before)
|
||||
{
|
||||
/* The reactions of state responding. */
|
||||
sc_integer transitioned_after = transitioned_before;
|
||||
|
|
@ -629,15 +780,15 @@ static sc_integer main_region_on_r1_responding_react(Statechart* handle, const s
|
|||
{
|
||||
if (handle->iface.sensor_raised == bool_true)
|
||||
{
|
||||
exseq_main_region_on_r1_responding(handle);
|
||||
react_main_region_on_r1__choice_0(handle);
|
||||
exseq_main_region_everything_r1_on_r1_responding(handle);
|
||||
react_main_region_everything_r1_on_r1__choice_0(handle);
|
||||
transitioned_after = 0;
|
||||
}
|
||||
}
|
||||
return transitioned_after;
|
||||
}
|
||||
|
||||
static sc_integer main_region_on_r1_sensor_error_react(Statechart* handle, const sc_integer transitioned_before)
|
||||
static sc_integer main_region_everything_r1_on_r1_sensor_error_react(Statechart* handle, const sc_integer transitioned_before)
|
||||
{
|
||||
/* The reactions of state sensor_error. */
|
||||
sc_integer transitioned_after = transitioned_before;
|
||||
|
|
@ -645,24 +796,24 @@ static sc_integer main_region_on_r1_sensor_error_react(Statechart* handle, const
|
|||
{
|
||||
if (handle->iface.sensor_raised == bool_true)
|
||||
{
|
||||
exseq_main_region_on_r1_sensor_error(handle);
|
||||
react_main_region_on_r1__choice_0(handle);
|
||||
exseq_main_region_everything_r1_on_r1_sensor_error(handle);
|
||||
react_main_region_everything_r1_on_r1__choice_0(handle);
|
||||
transitioned_after = 0;
|
||||
}
|
||||
}
|
||||
return transitioned_after;
|
||||
}
|
||||
|
||||
static sc_integer main_region_on_r2_not_pressed_react(Statechart* handle, const sc_integer transitioned_before)
|
||||
static sc_integer main_region_everything_r1_on_r2_not_pressed_react(Statechart* handle, const sc_integer transitioned_before)
|
||||
{
|
||||
/* The reactions of state not_pressed. */
|
||||
sc_integer transitioned_after = transitioned_before;
|
||||
if ((transitioned_after) < (1))
|
||||
{
|
||||
if (handle->iface.buttonPressed_raised == bool_true)
|
||||
if (handle->internal.buttonPressed_raised == bool_true)
|
||||
{
|
||||
exseq_main_region_on_r2_not_pressed(handle);
|
||||
enseq_main_region_on_r2_pressed_default(handle);
|
||||
exseq_main_region_everything_r1_on_r2_not_pressed(handle);
|
||||
enseq_main_region_everything_r1_on_r2_pressed_default(handle);
|
||||
transitioned_after = 1;
|
||||
}
|
||||
}
|
||||
|
|
@ -675,24 +826,24 @@ static sc_integer main_region_on_r2_not_pressed_react(Statechart* handle, const
|
|||
return transitioned_after;
|
||||
}
|
||||
|
||||
static sc_integer main_region_on_r2_pressed_react(Statechart* handle, const sc_integer transitioned_before)
|
||||
static sc_integer main_region_everything_r1_on_r2_pressed_react(Statechart* handle, const sc_integer transitioned_before)
|
||||
{
|
||||
/* The reactions of state pressed. */
|
||||
sc_integer transitioned_after = transitioned_before;
|
||||
if ((transitioned_after) < (1))
|
||||
{
|
||||
if (handle->timeEvents.statechart_main_region_on_r2_pressed_tev0_raised == bool_true)
|
||||
if (handle->timeEvents.statechart_main_region_everything_r1_on_r2_pressed_tev0_raised == bool_true)
|
||||
{
|
||||
exseq_main_region_on(handle);
|
||||
handle->timeEvents.statechart_main_region_on_r2_pressed_tev0_raised = bool_false;
|
||||
enseq_main_region_off_default(handle);
|
||||
exseq_main_region_everything_r1_on(handle);
|
||||
handle->timeEvents.statechart_main_region_everything_r1_on_r2_pressed_tev0_raised = bool_false;
|
||||
enseq_main_region_everything_r1_off_default(handle);
|
||||
transitioned_after = 1;
|
||||
} else
|
||||
{
|
||||
if (handle->iface.buttonReleased_raised == bool_true)
|
||||
if (handle->internal.buttonReleased_raised == bool_true)
|
||||
{
|
||||
exseq_main_region_on_r2_pressed(handle);
|
||||
enseq_main_region_on_r2_not_pressed_default(handle);
|
||||
exseq_main_region_everything_r1_on_r2_pressed(handle);
|
||||
enseq_main_region_everything_r1_on_r2_not_pressed_default(handle);
|
||||
transitioned_after = 1;
|
||||
}
|
||||
}
|
||||
|
|
@ -706,17 +857,41 @@ static sc_integer main_region_on_r2_pressed_react(Statechart* handle, const sc_i
|
|||
return transitioned_after;
|
||||
}
|
||||
|
||||
static sc_integer main_region_off_react(Statechart* handle, const sc_integer transitioned_before)
|
||||
static sc_integer main_region_everything_pollButton_button0_react(Statechart* handle, const sc_integer transitioned_before)
|
||||
{
|
||||
/* The reactions of state off. */
|
||||
/* The reactions of state button0. */
|
||||
sc_integer transitioned_after = transitioned_before;
|
||||
if ((transitioned_after) < (0))
|
||||
if ((transitioned_after) < (2))
|
||||
{
|
||||
if (handle->iface.buttonPressed_raised == bool_true)
|
||||
if (((handle->iface.buttonState_raised) == bool_true) && ((handle->iface.buttonState_value) == bool_true))
|
||||
{
|
||||
exseq_main_region_off(handle);
|
||||
enseq_main_region_on_default(handle);
|
||||
transitioned_after = 0;
|
||||
exseq_main_region_everything_pollButton_button0(handle);
|
||||
statechart_add_event_to_queue(&(handle->internal_event_queue), Statechart_internal_buttonPressed);
|
||||
enseq_main_region_everything_pollButton_button1_default(handle);
|
||||
transitioned_after = 2;
|
||||
}
|
||||
}
|
||||
/* If no transition was taken */
|
||||
if ((transitioned_after) == (transitioned_before))
|
||||
{
|
||||
/* then execute local reactions. */
|
||||
transitioned_after = transitioned_before;
|
||||
}
|
||||
return transitioned_after;
|
||||
}
|
||||
|
||||
static sc_integer main_region_everything_pollButton_button1_react(Statechart* handle, const sc_integer transitioned_before)
|
||||
{
|
||||
/* The reactions of state button1. */
|
||||
sc_integer transitioned_after = transitioned_before;
|
||||
if ((transitioned_after) < (2))
|
||||
{
|
||||
if (((handle->iface.buttonState_raised) == bool_true) && ((!(handle->iface.buttonState_value)) == bool_true))
|
||||
{
|
||||
exseq_main_region_everything_pollButton_button1(handle);
|
||||
statechart_add_event_to_queue(&(handle->internal_event_queue), Statechart_internal_buttonReleased);
|
||||
enseq_main_region_everything_pollButton_button0_default(handle);
|
||||
transitioned_after = 2;
|
||||
}
|
||||
}
|
||||
/* If no transition was taken */
|
||||
|
|
@ -804,19 +979,25 @@ static sc_boolean statechart_dispatch_event(Statechart* handle, const statechart
|
|||
handle->iface.sensor_value = event->value.Statechart_sensor_value;
|
||||
return bool_true;
|
||||
}
|
||||
case Statechart_buttonPressed:
|
||||
case Statechart_buttonState:
|
||||
{
|
||||
handle->iface.buttonPressed_raised = bool_true;
|
||||
handle->iface.buttonState_raised = bool_true;
|
||||
handle->iface.buttonState_value = event->value.Statechart_buttonState_value;
|
||||
return bool_true;
|
||||
}
|
||||
case Statechart_buttonReleased:
|
||||
case Statechart_internal_buttonPressed:
|
||||
{
|
||||
handle->iface.buttonReleased_raised = bool_true;
|
||||
handle->internal.buttonPressed_raised = bool_true;
|
||||
return bool_true;
|
||||
}
|
||||
case Statechart_Statechart_main_region_on_r2_pressed_time_event_0:
|
||||
case Statechart_internal_buttonReleased:
|
||||
{
|
||||
handle->timeEvents.statechart_main_region_on_r2_pressed_tev0_raised = bool_true;
|
||||
handle->internal.buttonReleased_raised = bool_true;
|
||||
return bool_true;
|
||||
}
|
||||
case Statechart_Statechart_main_region_everything_r1_on_r2_pressed_time_event_0:
|
||||
{
|
||||
handle->timeEvents.statechart_main_region_everything_r1_on_r2_pressed_tev0_raised = bool_true;
|
||||
return bool_true;
|
||||
}
|
||||
default:
|
||||
|
|
@ -828,7 +1009,10 @@ static statechart_event statechart_get_next_event(Statechart* handle)
|
|||
{
|
||||
statechart_event next_event;
|
||||
statechart_event_init(&next_event, Statechart_invalid_event);
|
||||
if(statechart_eventqueue_size(&(handle->in_event_queue)) > 0) {
|
||||
if(statechart_eventqueue_size(&(handle->internal_event_queue)) > 0) {
|
||||
next_event = statechart_eventqueue_pop(&(handle->internal_event_queue));
|
||||
}
|
||||
else if(statechart_eventqueue_size(&(handle->in_event_queue)) > 0) {
|
||||
next_event = statechart_eventqueue_pop(&(handle->in_event_queue));
|
||||
}
|
||||
return next_event;
|
||||
|
|
@ -843,8 +1027,8 @@ static sc_boolean statechart_dispatch_next_event(Statechart* handle)
|
|||
|
||||
static StatechartEventID statechart_get_timed_event_name(Statechart* handle, sc_eventid evid)
|
||||
{
|
||||
if(evid == &handle->timeEvents.statechart_main_region_on_r2_pressed_tev0_raised) {
|
||||
return Statechart_Statechart_main_region_on_r2_pressed_time_event_0;
|
||||
if(evid == &handle->timeEvents.statechart_main_region_everything_r1_on_r2_pressed_tev0_raised) {
|
||||
return Statechart_Statechart_main_region_everything_r1_on_r2_pressed_time_event_0;
|
||||
}
|
||||
return Statechart_invalid_event;
|
||||
}
|
||||
|
|
@ -860,6 +1044,9 @@ static void statechart_event_value_init(statechart_event * ev, StatechartEventID
|
|||
case Statechart_sensor:
|
||||
ev->value.Statechart_sensor_value = *((int32_t*)value);
|
||||
break;
|
||||
case Statechart_buttonState:
|
||||
ev->value.Statechart_buttonState_value = *((sc_boolean*)value);
|
||||
break;
|
||||
default:
|
||||
/* do nothing */
|
||||
break;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue