@@ -56,16 +56,16 @@ fhss_structure_t *fhss_enable(fhss_api_t *fhss_api, const fhss_configuration_t *
5656 if (!fhss_struct ) {
5757 return NULL ;
5858 }
59- fhss_struct -> fhss_configuration = * fhss_configuration ;
59+ fhss_struct -> fhss_conf . fhss_configuration = * fhss_configuration ;
6060 fhss_struct -> fhss_stats_ptr = fhss_statistics ;
6161 fhss_struct -> number_of_channels = channel_count ;
6262
6363 // set a invalid id to tasklet_id, so we know that one is not started yet
6464 fhss_struct -> beacon_tasklet_id = -1 ;
6565
6666 // 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 ;
6969 }
7070 ns_list_init (& fhss_struct -> fhss_failed_tx_list );
7171 fhss_struct -> own_hop = 0xff ;
@@ -259,7 +259,7 @@ static int fhss_update_drift_compensation(fhss_structure_t *fhss_structure)
259259 bc_density = (fhss_structure -> number_of_channels / fhss_structure -> synch_configuration .fhss_number_of_bc_channels );
260260 channel_dwell_time = ((uint32_t )fhss_structure -> synch_configuration .fhss_superframe_length * fhss_structure -> synch_configuration .fhss_number_of_superframes ) / 1000 ;
261261 // 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 )) {
263263 // Last period was half of the current started period and max random period is shorter
264264 synch_period = (fhss_structure -> synch_interval / 2 ) + (bc_density * channel_dwell_time ) * (fhss_structure -> synch_configuration .fhss_number_of_bc_channels / 2 );
265265 } else {
@@ -398,14 +398,14 @@ int fhss_sync_with_beacon(fhss_structure_t *fhss_structure,
398398
399399 if (fhss_structure -> fhss_state == FHSS_SYNCHRONIZED ) {
400400 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 ;
402402 }
403403 }
404404
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 )) {
406406 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 );
409409 }
410410 beacon_interval_random = (bc_density * channel_dwell_time ) * randLIB_get_random_in_range (0 , fhss_number_of_bc_channels /2 );
411411 } else {
@@ -488,8 +488,8 @@ static bool fhss_check_remaining_tx_time(fhss_structure_t *fhss_structure, uint1
488488 if (fhss_structure -> fhss_state == FHSS_UNSYNCHRONIZED ) {
489489 retval = true;
490490 } 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 ;
493493 // Calculate needed TX time (us): CCA static period + TX processing delays + transmission time + Ack processing delays + Ack transmission time
494494 needed_tx_time = CCA_FHSS_PERIOD + tx_processing_delay + fhss_get_tx_time (fhss_structure , tx_length , phy_header_length , phy_tail_length )
495495 + 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)
627627
628628static int fhss_reset (fhss_structure_t * fhss_structure )
629629{
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 ;
653632 }
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 ;
655655}
656656
657657int 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