mirror of
https://github.com/bluekitchen/btstack.git
synced 2025-03-29 22:20:37 +00:00
mesh: add MODEL_STATE_ID_GENERIC_LEVEL, rename packet_handler in model struct
This commit is contained in:
parent
8fe8381d81
commit
29e6496ca2
@ -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 {
|
||||
|
@ -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:
|
||||
|
@ -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 = {
|
||||
|
Loading…
x
Reference in New Issue
Block a user