@@ -81,7 +81,7 @@ static int32_t tr51_get_rand(void)
81
81
* @param nearest_prime Nearest prime number. Must be equal to or larger than number_of_channels.
82
82
* @param channel_table Output channel table. Has to be at least nearest_prime in length.
83
83
*/
84
- static void tr51_calculate_channel_table (uint16_t number_of_channels , uint16_t nearest_prime , int32_t * channel_table )
84
+ static void tr51_calculate_channel_table (uint16_t number_of_channels , uint16_t nearest_prime , int16_t * channel_table )
85
85
{
86
86
int32_t i ,j ,k ;
87
87
tr51_seed_rand (1 );
@@ -131,7 +131,7 @@ static uint8_t tr51_find_excluded(int32_t channel, uint32_t *excluded_channels)
131
131
* @param excluded_channels Bit mask where excluded channels are set to 1.
132
132
* @return Number of channels in sequence.
133
133
*/
134
- static uint16_t tr51_calculate_hopping_sequence (int32_t * channel_table , uint16_t channel_table_length , uint8_t first_element , uint8_t step_size , int32_t * output_table , uint32_t * excluded_channels )
134
+ static uint16_t tr51_calculate_hopping_sequence (int16_t * channel_table , uint16_t channel_table_length , uint8_t first_element , uint8_t step_size , uint8_t * output_table , uint32_t * excluded_channels )
135
135
{
136
136
uint16_t cntr = channel_table_length ;
137
137
uint8_t index = first_element ;
@@ -194,33 +194,30 @@ int32_t dh1cf_get_bc_channel_index(uint16_t slot_number, uint16_t bsi, int16_t n
194
194
return channel_number ;
195
195
}
196
196
197
- int32_t tr51_get_uc_channel_index (uint16_t slot_number , uint8_t * mac , int16_t number_of_channels , uint32_t * excluded_channels )
197
+ int tr51_init_channel_table (int16_t * channel_table , int16_t number_of_channels )
198
+ {
199
+ uint16_t nearest_prime = tr51_calc_nearest_prime_number (number_of_channels );
200
+ tr51_calculate_channel_table (number_of_channels , nearest_prime , channel_table );
201
+ return 0 ;
202
+ }
203
+
204
+ int32_t tr51_get_uc_channel_index (int16_t * channel_table , uint8_t * output_table , uint16_t slot_number , uint8_t * mac , int16_t number_of_channels , uint32_t * excluded_channels )
198
205
{
199
206
uint16_t nearest_prime = tr51_calc_nearest_prime_number (number_of_channels );
200
- int32_t channel_table [nearest_prime ];
201
- int32_t output_table [number_of_channels ];
202
207
uint8_t first_element ;
203
208
uint8_t step_size ;
204
- tr51_calculate_channel_table (number_of_channels , nearest_prime , channel_table );
205
209
tr51_compute_cfd (mac , & first_element , & step_size , nearest_prime );
206
- // Not sure yet which one is the correct second parameter
207
- // tr51_calculate_hopping_sequence(channel_table, number_of_channels, first_element, step_size, output_table, NULL, 0);
208
210
tr51_calculate_hopping_sequence (channel_table , nearest_prime , first_element , step_size , output_table , excluded_channels );
209
211
return output_table [slot_number ];
210
212
}
211
213
212
- int32_t tr51_get_bc_channel_index (uint16_t slot_number , uint16_t bsi , int16_t number_of_channels , uint32_t * excluded_channels )
214
+ int32_t tr51_get_bc_channel_index (int16_t * channel_table , uint8_t * output_table , uint16_t slot_number , uint16_t bsi , int16_t number_of_channels , uint32_t * excluded_channels )
213
215
{
214
216
uint16_t nearest_prime = tr51_calc_nearest_prime_number (number_of_channels );
215
- int32_t channel_table [nearest_prime ];
216
- int32_t output_table [number_of_channels ];
217
217
uint8_t mac [8 ] = {0 , 0 , 0 , 0 , 0 , 0 , (uint8_t )(bsi >> 8 ), (uint8_t )bsi };
218
218
uint8_t first_element ;
219
219
uint8_t step_size ;
220
- tr51_calculate_channel_table (number_of_channels , nearest_prime , channel_table );
221
220
tr51_compute_cfd (mac , & first_element , & step_size , nearest_prime );
222
- // Not sure yet which one is the correct second parameter
223
- // tr51_calculate_hopping_sequence(channel_table, number_of_channels, first_element, step_size, output_table, NULL, 0);
224
221
tr51_calculate_hopping_sequence (channel_table , nearest_prime , first_element , step_size , output_table , excluded_channels );
225
222
return output_table [slot_number ];
226
223
}
0 commit comments