@@ -56,16 +56,16 @@ fhss_structure_t *fhss_enable(fhss_api_t *fhss_api, const fhss_configuration_t *
56
56
if (!fhss_struct ) {
57
57
return NULL ;
58
58
}
59
- fhss_struct -> fhss_configuration = * fhss_configuration ;
59
+ fhss_struct -> fhss_conf . fhss_configuration = * fhss_configuration ;
60
60
fhss_struct -> fhss_stats_ptr = fhss_statistics ;
61
61
fhss_struct -> number_of_channels = channel_count ;
62
62
63
63
// set a invalid id to tasklet_id, so we know that one is not started yet
64
64
fhss_struct -> beacon_tasklet_id = -1 ;
65
65
66
66
// Default synch interval is 240 seconds
67
- if (!fhss_struct -> fhss_configuration .fhss_max_synch_interval ) {
68
- fhss_struct -> fhss_configuration .fhss_max_synch_interval = 240 ;
67
+ if (!fhss_struct -> fhss_conf . fhss_configuration .fhss_max_synch_interval ) {
68
+ fhss_struct -> fhss_conf . fhss_configuration .fhss_max_synch_interval = 240 ;
69
69
}
70
70
ns_list_init (& fhss_struct -> fhss_failed_tx_list );
71
71
fhss_struct -> own_hop = 0xff ;
@@ -259,7 +259,7 @@ static int fhss_update_drift_compensation(fhss_structure_t *fhss_structure)
259
259
bc_density = (fhss_structure -> number_of_channels / fhss_structure -> synch_configuration .fhss_number_of_bc_channels );
260
260
channel_dwell_time = ((uint32_t )fhss_structure -> synch_configuration .fhss_superframe_length * fhss_structure -> synch_configuration .fhss_number_of_superframes ) / 1000 ;
261
261
// Calculate last synchronisation period
262
- if (fhss_structure -> synch_interval != ((uint32_t )fhss_structure -> fhss_configuration .fhss_max_synch_interval * 1000 )) {
262
+ if (fhss_structure -> synch_interval != ((uint32_t )fhss_structure -> fhss_conf . fhss_configuration .fhss_max_synch_interval * 1000 )) {
263
263
// Last period was half of the current started period and max random period is shorter
264
264
synch_period = (fhss_structure -> synch_interval / 2 ) + (bc_density * channel_dwell_time ) * (fhss_structure -> synch_configuration .fhss_number_of_bc_channels / 2 );
265
265
} else {
@@ -398,14 +398,14 @@ int fhss_sync_with_beacon(fhss_structure_t *fhss_structure,
398
398
399
399
if (fhss_structure -> fhss_state == FHSS_SYNCHRONIZED ) {
400
400
if (fhss_update_synch_monitor (fhss_structure , payload , superframe_own , remaining_time_own , time_to_next_superframe )) {
401
- fhss_structure -> synch_interval = (uint32_t ) (fhss_structure -> fhss_configuration .fhss_max_synch_interval /BEACON_INTERVAL_INIT_DIVIDER ) * 1000 ;
401
+ fhss_structure -> synch_interval = (uint32_t ) (fhss_structure -> fhss_conf . fhss_configuration .fhss_max_synch_interval /BEACON_INTERVAL_INIT_DIVIDER ) * 1000 ;
402
402
}
403
403
}
404
404
405
- if (fhss_structure -> synch_interval != ((uint32_t )fhss_structure -> fhss_configuration .fhss_max_synch_interval * 1000 )) {
405
+ if (fhss_structure -> synch_interval != ((uint32_t )fhss_structure -> fhss_conf . fhss_configuration .fhss_max_synch_interval * 1000 )) {
406
406
fhss_structure -> synch_interval *= 2 ;
407
- if (fhss_structure -> synch_interval > ((uint32_t )fhss_structure -> fhss_configuration .fhss_max_synch_interval * 1000 )) {
408
- fhss_structure -> synch_interval = ((uint32_t )fhss_structure -> fhss_configuration .fhss_max_synch_interval * 1000 );
407
+ if (fhss_structure -> synch_interval > ((uint32_t )fhss_structure -> fhss_conf . fhss_configuration .fhss_max_synch_interval * 1000 )) {
408
+ fhss_structure -> synch_interval = ((uint32_t )fhss_structure -> fhss_conf . fhss_configuration .fhss_max_synch_interval * 1000 );
409
409
}
410
410
beacon_interval_random = (bc_density * channel_dwell_time ) * randLIB_get_random_in_range (0 , fhss_number_of_bc_channels /2 );
411
411
} else {
@@ -488,8 +488,8 @@ static bool fhss_check_remaining_tx_time(fhss_structure_t *fhss_structure, uint1
488
488
if (fhss_structure -> fhss_state == FHSS_UNSYNCHRONIZED ) {
489
489
retval = true;
490
490
} else {
491
- tx_processing_delay = fhss_structure -> fhss_configuration .fhss_tuning_parameters .tx_processing_delay ;
492
- ack_processing_delay = fhss_structure -> fhss_configuration .fhss_tuning_parameters .ack_processing_delay ;
491
+ tx_processing_delay = fhss_structure -> fhss_conf . fhss_configuration .fhss_tuning_parameters .tx_processing_delay ;
492
+ ack_processing_delay = fhss_structure -> fhss_conf . fhss_configuration .fhss_tuning_parameters .ack_processing_delay ;
493
493
// Calculate needed TX time (us): CCA static period + TX processing delays + transmission time + Ack processing delays + Ack transmission time
494
494
needed_tx_time = CCA_FHSS_PERIOD + tx_processing_delay + fhss_get_tx_time (fhss_structure , tx_length , phy_header_length , phy_tail_length )
495
495
+ ack_processing_delay + fhss_get_tx_time (fhss_structure , ACK_LENGTH , phy_header_length , phy_tail_length );
@@ -627,31 +627,31 @@ static int fhss_flush_beacon_info_storage(fhss_structure_t *fhss_structure)
627
627
628
628
static int fhss_reset (fhss_structure_t * fhss_structure )
629
629
{
630
- if (fhss_structure ) {
631
- fhss_destroy_scramble_table (fhss_structure );
632
- fhss_structure -> platform_functions .fhss_timer_stop (fhss_superframe_handler , fhss_structure -> fhss_api );
633
- fhss_structure -> synch_panid = 0xffff ;
634
- fhss_beacon_periodic_stop (fhss_structure );
635
- fhss_structure -> current_superframe = 0 ;
636
- fhss_structure -> current_channel_index = 0 ;
637
- fhss_structure -> channel_list_counter = 0 ;
638
- if (fhss_is_synch_root (fhss_structure ) == false) {
639
- fhss_structure -> own_hop = 0xff ;
640
- }
641
- fhss_structure -> tx_allowed = false;
642
- fhss_structure -> synch_interval = (uint32_t ) (fhss_structure -> fhss_configuration .fhss_max_synch_interval /BEACON_INTERVAL_INIT_DIVIDER ) * 1000 ;
643
- fhss_structure -> rx_channel = 0 ;
644
- fhss_structure -> beacons_received_timer = 0 ;
645
- memset (fhss_structure -> synch_parent , 0xff , 8 );
646
- fhss_structure -> send_synch_info_on_next_broadcast_channel = false;
647
- memset (& fhss_structure -> synch_configuration , 0 , sizeof (fhss_synch_configuration_t ));
648
- fhss_structure -> synch_infos_sent_counter = 0 ;
649
- fhss_structure -> broadcast_start_superframe = 0 ;
650
- fhss_failed_list_free (fhss_structure );
651
- fhss_structure -> fhss_state = FHSS_UNSYNCHRONIZED ;
652
- return 0 ;
630
+ if (!fhss_structure ) {
631
+ return -1 ;
653
632
}
654
- return -1 ;
633
+ fhss_destroy_scramble_table (fhss_structure );
634
+ fhss_structure -> platform_functions .fhss_timer_stop (fhss_superframe_handler , fhss_structure -> fhss_api );
635
+ fhss_structure -> synch_panid = 0xffff ;
636
+ fhss_beacon_periodic_stop (fhss_structure );
637
+ fhss_structure -> current_superframe = 0 ;
638
+ fhss_structure -> current_channel_index = 0 ;
639
+ fhss_structure -> channel_list_counter = 0 ;
640
+ if (fhss_is_synch_root (fhss_structure ) == false) {
641
+ fhss_structure -> own_hop = 0xff ;
642
+ }
643
+ fhss_structure -> tx_allowed = false;
644
+ fhss_structure -> synch_interval = (uint32_t ) (fhss_structure -> fhss_conf .fhss_configuration .fhss_max_synch_interval /BEACON_INTERVAL_INIT_DIVIDER ) * 1000 ;
645
+ fhss_structure -> rx_channel = 0 ;
646
+ fhss_structure -> beacons_received_timer = 0 ;
647
+ memset (fhss_structure -> synch_parent , 0xff , 8 );
648
+ fhss_structure -> send_synch_info_on_next_broadcast_channel = false;
649
+ memset (& fhss_structure -> synch_configuration , 0 , sizeof (fhss_synch_configuration_t ));
650
+ fhss_structure -> synch_infos_sent_counter = 0 ;
651
+ fhss_structure -> broadcast_start_superframe = 0 ;
652
+ fhss_failed_list_free (fhss_structure );
653
+ fhss_structure -> fhss_state = FHSS_UNSYNCHRONIZED ;
654
+ return 0 ;
655
655
}
656
656
657
657
int fhss_add_beacon_info (fhss_structure_t * fhss_structure , uint16_t pan_id , uint8_t * source_address , uint32_t timestamp , uint8_t * synch_info )
0 commit comments