mesh: fix transition setup in generic on/off and generic level server

This commit is contained in:
Matthias Ringwald 2019-11-11 17:51:08 +01:00
parent bcbd4955a4
commit 618a5fc3d1
2 changed files with 11 additions and 11 deletions

View File

@ -164,18 +164,18 @@ static void mesh_server_transition_step(mesh_transition_t * base_transition, tra
static void mesh_server_transition_setup_transition_or_instantaneous_update_int16(mesh_model_t *mesh_model, uint8_t transition_time_gdtt, uint8_t delay_time_gdtt, model_state_update_reason_t reason){
mesh_generic_level_state_t * generic_level_server_state = (mesh_generic_level_state_t *)mesh_model->model_data;
mesh_transition_t transition = generic_level_server_state->transition_data.base_transition;
mesh_transition_t * transition = &generic_level_server_state->transition_data.base_transition;
if (transition_time_gdtt != 0 || delay_time_gdtt != 0) {
mesh_access_transitions_setup(&transition, mesh_model, transition_time_gdtt, delay_time_gdtt, &mesh_server_transition_step);
mesh_access_transitions_add(&transition);
mesh_access_transitions_setup(transition, mesh_model, transition_time_gdtt, delay_time_gdtt, &mesh_server_transition_step);
mesh_access_transitions_add(transition);
} else {
// instantaneous update
generic_level_server_state->transition_data.current_value = generic_level_server_state->transition_data.target_value;
generic_level_server_state->transition_data.stepwise_value_increment = 0;
generic_level_server_state->transition_data.delta_from_initial_value = 0;
generic_level_server_state->transition_data.transition_speed = 0;
mesh_access_transitions_setup(&transition, mesh_model, 0, 0, NULL);
mesh_access_transitions_setup(transition, mesh_model, 0, 0, NULL);
mesh_access_emit_state_update_int16(mesh_model->model_packet_handler,
mesh_access_get_element_index(mesh_model),

View File

@ -145,18 +145,18 @@ static void mesh_server_transition_step_bool(mesh_transition_t * base_transition
static void mesh_server_transition_setup_transition_or_instantaneous_update(mesh_model_t *mesh_model, uint8_t transition_time_gdtt, uint8_t delay_time_gdtt, model_state_update_reason_t reason){
mesh_generic_on_off_state_t * generic_on_off_server_state = (mesh_generic_on_off_state_t *)mesh_model->model_data;
mesh_transition_t transition = generic_on_off_server_state->transition_data.base_transition;
mesh_transition_t * transition = &generic_on_off_server_state->transition_data.base_transition;
if (transition_time_gdtt != 0 || delay_time_gdtt != 0) {
mesh_access_transitions_setup(&transition, (mesh_model_t *) mesh_model,
mesh_access_transitions_setup(transition, (mesh_model_t *) mesh_model,
transition_time_gdtt, delay_time_gdtt, &mesh_server_transition_step_bool);
mesh_access_transitions_add(&transition);
mesh_access_transitions_add(transition);
} else {
generic_on_off_server_state->transition_data.current_value = generic_on_off_server_state->transition_data.target_value;
transition.phase_start_ms = 0;
transition.remaining_delay_time_ms = 0;
transition.remaining_transition_time_ms = 0;
transition.state = MESH_TRANSITION_STATE_IDLE;
transition->phase_start_ms = 0;
transition->remaining_delay_time_ms = 0;
transition->remaining_transition_time_ms = 0;
transition->state = MESH_TRANSITION_STATE_IDLE;
mesh_access_emit_state_update_bool(mesh_model->model_packet_handler,
mesh_access_get_element_index(mesh_model),