mesh/access: add period_divisor to implement fast period divisor in health server for active faults

This commit is contained in:
Matthias Ringwald 2019-10-30 17:35:29 +01:00
parent e222865b4f
commit 6ef7453897
2 changed files with 5 additions and 3 deletions

View File

@ -941,7 +941,7 @@ static void mesh_model_publication_setup_publication(mesh_publication_model_t *
publication_model->retransmit_count = mesh_model_publication_retransmit_count(publication_model->retransmit);
// schedule next publication or retransmission
uint32_t publication_period_ms = mesh_access_time_gdtt2ms(publication_model->period);
uint32_t publication_period_ms = mesh_access_time_gdtt2ms(publication_model->period) >> publication_model->period_divisor;
// set next publication
if (publication_period_ms != 0){
@ -954,7 +954,7 @@ static void mesh_model_publication_setup_publication(mesh_publication_model_t *
// assumes retransmit_count is valid
static void mesh_model_publication_setup_retransmission(mesh_publication_model_t * publication_model, uint32_t now){
uint32_t publication_period_ms = mesh_access_time_gdtt2ms(publication_model->period);
uint32_t publication_period_ms = mesh_access_time_gdtt2ms(publication_model->period) >> publication_model->period_divisor;
// retransmission done
if (publication_model->retransmit_count == 0) {
@ -968,7 +968,8 @@ static void mesh_model_publication_setup_retransmission(mesh_publication_model_t
}
// calc next retransmit time
uint32_t retransmission_ms = now + mesh_model_publication_retransmission_period_ms(publication_model->retransmit);
uint32_t retransmission_period_ms = mesh_model_publication_retransmission_period_ms(publication_model->retransmit) >> publication_model->period_divisor;
uint32_t retransmission_ms = now + retransmission_period_ms;
// check next publication timeout is before next retransmission
if (publication_period_ms != 0){

View File

@ -82,6 +82,7 @@ typedef struct {
uint16_t appkey_index;
uint8_t friendship_credential_flag;
uint8_t period;
uint8_t period_divisor; // divide period by 2 ^ period_divisor, default = 2^0 = 1, added for Health Server
uint8_t ttl;
uint8_t retransmit;
} mesh_publication_model_t;