mirror of
https://github.com/bluekitchen/btstack.git
synced 2025-04-18 05:42:49 +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 const btstack_tlv_t * btstack_tlv_singleton_impl;
|
||||||
static void * btstack_tlv_singleton_context;
|
static void * btstack_tlv_singleton_context;
|
||||||
|
|
||||||
|
// Transitions
|
||||||
static btstack_linked_list_t transitions;
|
static btstack_linked_list_t transitions;
|
||||||
static btstack_timer_source_t transitions_timer;
|
static btstack_timer_source_t transitions_timer;
|
||||||
static int transition_step_min_ms;
|
static int transition_step_min_ms;
|
||||||
|
static uint8_t mesh_transaction_id_counter = 0;
|
||||||
|
|
||||||
static void mesh_access_setup_tlv(void){
|
static void mesh_access_setup_tlv(void){
|
||||||
if (btstack_tlv_singleton_impl) return;
|
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;
|
return MESH_TRANSACTION_STATUS_NEW;
|
||||||
}
|
}
|
||||||
|
|
||||||
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){
|
||||||
return transition_time_gdtt >> 2;
|
return time_gdtt >> 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint32_t mesh_access_transitions_step_ms_from_gdtt(uint8_t transition_time_gdtt){
|
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) (transition_time_gdtt & 0x03u);
|
mesh_default_transition_step_resolution_t step_resolution = (mesh_default_transition_step_resolution_t) (time_gdtt & 0x03u);
|
||||||
switch (step_resolution){
|
switch (step_resolution){
|
||||||
case MESH_DEFAULT_TRANSITION_STEP_RESOLUTION_100ms:
|
case MESH_DEFAULT_TRANSITION_STEP_RESOLUTION_100ms:
|
||||||
return 100;
|
return 100;
|
||||||
@ -155,10 +157,16 @@ static uint32_t mesh_access_transitions_step_ms_from_gdtt(uint8_t transition_tim
|
|||||||
return 600000;
|
return 600000;
|
||||||
default:
|
default:
|
||||||
return 0;
|
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){
|
static void mesh_access_transitions_timeout_handler(btstack_timer_source_t * timer){
|
||||||
btstack_linked_list_iterator_t it;
|
btstack_linked_list_iterator_t it;
|
||||||
btstack_linked_list_iterator_init(&it, &transitions);
|
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){
|
mesh_element_t * mesh_primary_element(void){
|
||||||
return &primary_element;
|
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);
|
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,
|
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);
|
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_add(mesh_transition_t * transition);
|
||||||
void mesh_access_transitions_remove(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
|
// Mesh PDU Getter
|
||||||
uint16_t mesh_pdu_src(mesh_pdu_t * pdu);
|
uint16_t mesh_pdu_src(mesh_pdu_t * pdu);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user