mesh: add MODEL_STATE_ID_GENERIC_LEVEL, rename packet_handler in model struct

This commit is contained in:
Milanka Ringwald 2019-06-24 11:11:20 +02:00 committed by Matthias Ringwald
parent 8fe8381d81
commit 29e6496ca2
3 changed files with 20 additions and 19 deletions

View File

@ -87,6 +87,7 @@ typedef enum {
typedef enum {
MODEL_STATE_ID_GENERIC_ON_OFF = (BLUETOOTH_COMPANY_ID_BLUETOOTH_SIG_INC << 16) | 0u,
MODEL_STATE_ID_GENERIC_LEVEL = (BLUETOOTH_COMPANY_ID_BLUETOOTH_SIG_INC << 16) | 1u,
} model_state_id_t;
typedef struct {
@ -134,8 +135,8 @@ typedef struct mesh_model {
// subscription list
uint16_t subscriptions[MAX_NR_MESH_SUBSCRIPTION_PER_MODEL];
// packet handler for transition events
btstack_packet_handler_t * transition_events_packet_handler;
// packet handler for transition events in server, event callback handler in client
btstack_packet_handler_t * model_packet_handler;
} mesh_model_t;
typedef struct {

View File

@ -82,10 +82,10 @@ static void mesh_server_transition_state_update_stepwise_value(mesh_transition_i
transition->current_value = add_and_clip_int16(transition->initial_value, transition->delta_from_initial_value);
}
// emit event
mesh_access_emit_state_update_int16(generic_level_server_model->transition_events_packet_handler,
mesh_access_emit_state_update_int16(generic_level_server_model->model_packet_handler,
mesh_access_get_element_index(generic_level_server_model),
generic_level_server_model->model_identifier,
MODEL_STATE_ID_GENERIC_ON_OFF,
MODEL_STATE_ID_GENERIC_LEVEL,
MODEL_STATE_UPDATE_REASON_TRANSITION_END,
transition->current_value);
}
@ -110,10 +110,10 @@ static void mesh_server_transition_state_update(mesh_transition_int16_t * transi
transition->base_transition.remaining_transition_time_ms = 0;
// emit event
mesh_access_emit_state_update_int16(generic_level_server_model->transition_events_packet_handler,
mesh_access_emit_state_update_int16(generic_level_server_model->model_packet_handler,
mesh_access_get_element_index(generic_level_server_model),
generic_level_server_model->model_identifier,
MODEL_STATE_ID_GENERIC_ON_OFF,
MODEL_STATE_ID_GENERIC_LEVEL,
MODEL_STATE_UPDATE_REASON_TRANSITION_END,
transition->current_value);
@ -173,10 +173,10 @@ static void mesh_server_transition_setup_transition_or_instantaneous_update_int1
generic_level_server_state->transition_data.transition_speed = 0;
mesh_access_transitions_setup(&transition, mesh_model, 0, 0, NULL);
mesh_access_emit_state_update_int16(mesh_model->transition_events_packet_handler,
mesh_access_emit_state_update_int16(mesh_model->model_packet_handler,
mesh_access_get_element_index(mesh_model),
mesh_model->model_identifier,
MODEL_STATE_ID_GENERIC_ON_OFF,
MODEL_STATE_ID_GENERIC_LEVEL,
reason,
generic_level_server_state->transition_data.current_value);
}
@ -192,7 +192,7 @@ void mesh_generic_level_server_register_packet_handler(mesh_model_t *generic_lev
log_error("mesh_generic_level_server_register_packet_handler called with NULL generic_level_server_model");
return;
}
generic_level_server_model->transition_events_packet_handler = &transition_events_packet_handler;
generic_level_server_model->model_packet_handler = &transition_events_packet_handler;
}
const mesh_access_message_t mesh_generic_level_status_transition = {
@ -353,7 +353,7 @@ static void generic_level_handle_set_delta_message(mesh_model_t *mesh_model, mes
case MESH_TRANSACTION_STATUS_DIFFERENT_DST_OR_SRC:
// abort transaction
mesh_access_transitions_abort_transaction(base_transition);
transition->current_value = transition->initial_value;
generic_level_server_state->transition_data.current_value = generic_level_server_state->transition_data.initial_value;
mesh_server_transition_setup_transition_or_instantaneous_update_int16(mesh_model, 0, 0, MODEL_STATE_UPDATE_REASON_TRANSITION_ABORT);
break;
case MESH_TRANSACTION_STATUS_RETRANSMISSION:

View File

@ -79,7 +79,7 @@ static void mesh_server_transition_state_update(mesh_transition_bool_t * transit
transition->base_transition.phase_start_ms = current_timestamp_ms;
if (transition->target_value == 1){
transition->current_value = 1;
mesh_access_emit_state_update_bool(generic_on_off_server_model->transition_events_packet_handler,
mesh_access_emit_state_update_bool(generic_on_off_server_model->model_packet_handler,
mesh_access_get_element_index(generic_on_off_server_model),
generic_on_off_server_model->model_identifier,
MODEL_STATE_ID_GENERIC_ON_OFF,
@ -93,7 +93,7 @@ static void mesh_server_transition_state_update(mesh_transition_bool_t * transit
transition->base_transition.remaining_transition_time_ms = 0;
// emit event
mesh_access_emit_state_update_bool(generic_on_off_server_model->transition_events_packet_handler,
mesh_access_emit_state_update_bool(generic_on_off_server_model->model_packet_handler,
mesh_access_get_element_index(generic_on_off_server_model),
generic_on_off_server_model->model_identifier,
MODEL_STATE_ID_GENERIC_ON_OFF,
@ -139,12 +139,12 @@ 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_state, 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_state->model_data;
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;
if (transition_time_gdtt != 0 || delay_time_gdtt != 0) {
mesh_access_transitions_setup(&transition, (mesh_model_t *) mesh_state,
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);
} else {
@ -154,9 +154,9 @@ static void mesh_server_transition_setup_transition_or_instantaneous_update(mesh
transition.remaining_transition_time_ms = 0;
transition.state = MESH_TRANSITION_STATE_IDLE;
mesh_access_emit_state_update_bool(mesh_state->transition_events_packet_handler,
mesh_access_get_element_index(mesh_state),
mesh_state->model_identifier,
mesh_access_emit_state_update_bool(mesh_model->model_packet_handler,
mesh_access_get_element_index(mesh_model),
mesh_model->model_identifier,
MODEL_STATE_ID_GENERIC_ON_OFF,
reason,
generic_on_off_server_state->transition_data.current_value);
@ -175,7 +175,7 @@ void mesh_generic_on_off_server_register_packet_handler(mesh_model_t *generic_on
log_error("mesh_generic_on_off_server_register_packet_handler called with NULL generic_on_off_server_model");
return;
}
generic_on_off_server_model->transition_events_packet_handler = &transition_events_packet_handler;
generic_on_off_server_model->model_packet_handler = &transition_events_packet_handler;
}
const mesh_access_message_t mesh_generic_on_off_status_transition = {