mirror of
https://github.com/bluekitchen/btstack.git
synced 2025-03-29 22:20:37 +00:00
mesh: implement get next transaction id, helper function mesh_access_time_gdtt2ms
This commit is contained in:
parent
1a17f28bfd
commit
16d1335912
@ -63,9 +63,11 @@ static uint16_t mid_counter;
|
||||
static const btstack_tlv_t * btstack_tlv_singleton_impl;
|
||||
static void * btstack_tlv_singleton_context;
|
||||
|
||||
// Transitions
|
||||
static btstack_linked_list_t transitions;
|
||||
static btstack_timer_source_t transitions_timer;
|
||||
static int transition_step_min_ms;
|
||||
static uint8_t mesh_transaction_id_counter = 0;
|
||||
|
||||
static void mesh_access_setup_tlv(void){
|
||||
if (btstack_tlv_singleton_impl) return;
|
||||
@ -138,12 +140,12 @@ mesh_transaction_status_t mesh_access_transitions_transaction_status(mesh_transi
|
||||
return MESH_TRANSACTION_STATUS_NEW;
|
||||
}
|
||||
|
||||
uint8_t mesh_access_transitions_num_steps_from_gdtt(uint8_t transition_time_gdtt){
|
||||
return transition_time_gdtt >> 2;
|
||||
uint8_t mesh_access_transitions_num_steps_from_gdtt(uint8_t time_gdtt){
|
||||
return time_gdtt >> 2;
|
||||
}
|
||||
|
||||
static uint32_t mesh_access_transitions_step_ms_from_gdtt(uint8_t transition_time_gdtt){
|
||||
mesh_default_transition_step_resolution_t step_resolution = (mesh_default_transition_step_resolution_t) (transition_time_gdtt & 0x03u);
|
||||
static uint32_t mesh_access_transitions_step_ms_from_gdtt(uint8_t time_gdtt){
|
||||
mesh_default_transition_step_resolution_t step_resolution = (mesh_default_transition_step_resolution_t) (time_gdtt & 0x03u);
|
||||
switch (step_resolution){
|
||||
case MESH_DEFAULT_TRANSITION_STEP_RESOLUTION_100ms:
|
||||
return 100;
|
||||
@ -155,10 +157,16 @@ static uint32_t mesh_access_transitions_step_ms_from_gdtt(uint8_t transition_tim
|
||||
return 600000;
|
||||
default:
|
||||
return 0;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
uint32_t mesh_access_time_gdtt2ms(uint8_t time_gdtt){
|
||||
uint8_t num_steps = mesh_access_transitions_num_steps_from_gdtt(time_gdtt);
|
||||
if (num_steps > 0x3E) return 0;
|
||||
|
||||
return mesh_access_transitions_step_ms_from_gdtt(time_gdtt) * num_steps;
|
||||
}
|
||||
|
||||
static void mesh_access_transitions_timeout_handler(btstack_timer_source_t * timer){
|
||||
btstack_linked_list_iterator_t it;
|
||||
btstack_linked_list_iterator_init(&it, &transitions);
|
||||
@ -237,8 +245,15 @@ void mesh_access_transitions_remove(mesh_transition_t * transition){
|
||||
}
|
||||
}
|
||||
|
||||
// Mesh Node Element functions
|
||||
uint8_t mesh_access_transactions_get_next_transaction_id(void){
|
||||
mesh_transaction_id_counter++;
|
||||
if (mesh_transaction_id_counter == 0){
|
||||
mesh_transaction_id_counter = 1;
|
||||
}
|
||||
return mesh_transaction_id_counter;
|
||||
}
|
||||
|
||||
// Mesh Node Element functions
|
||||
mesh_element_t * mesh_primary_element(void){
|
||||
return &primary_element;
|
||||
}
|
||||
|
@ -261,7 +261,8 @@ mesh_model_t * mesh_model_get_configuration_server(void);
|
||||
|
||||
mesh_model_t * mesh_access_model_for_address_and_model_identifier(uint16_t element_address, uint32_t model_identifier, uint8_t * status);
|
||||
|
||||
uint8_t mesh_access_transitions_num_steps_from_gdtt(uint8_t transition_time_gdtt);
|
||||
uint8_t mesh_access_transitions_num_steps_from_gdtt(uint8_t time_gdtt);
|
||||
uint32_t mesh_access_time_gdtt2ms(uint8_t time_gdtt);
|
||||
|
||||
void mesh_access_emit_state_update_bool(btstack_packet_handler_t * event_handler, uint8_t element_index, uint32_t model_identifier,
|
||||
model_state_id_t state_identifier, model_state_update_reason_t reason, uint8_t value);
|
||||
@ -279,6 +280,7 @@ void mesh_access_transitions_setup(mesh_transition_t * transition, mesh_model_t
|
||||
|
||||
void mesh_access_transitions_add(mesh_transition_t * transition);
|
||||
void mesh_access_transitions_remove(mesh_transition_t * transition);
|
||||
uint8_t mesh_access_transactions_get_next_transaction_id(void);
|
||||
|
||||
// Mesh PDU Getter
|
||||
uint16_t mesh_pdu_src(mesh_pdu_t * pdu);
|
||||
|
Loading…
x
Reference in New Issue
Block a user