@@ -238,6 +238,27 @@ static arm_device_driver_list_s *rf_client_driver_allocate()
238
238
return driver ;
239
239
}
240
240
241
+ uint32_t test_timestamp = 1000000 ;
242
+ static int8_t test_rf_extension (phy_extension_type_e extension , uint8_t * buf )
243
+ {
244
+ switch (extension ) {
245
+ case PHY_EXTENSION_GET_TIMESTAMP :
246
+ buf [3 ] = test_timestamp >> 24 ;
247
+ buf [2 ] = test_timestamp >> 16 ;
248
+ buf [1 ] = test_timestamp >> 8 ;
249
+ buf [0 ] = test_timestamp ;
250
+ test_timestamp += 100000 ;
251
+ break ;
252
+ case PHY_EXTENSION_READ_LAST_ACK_PENDING_STATUS :
253
+ * buf = 1 ;
254
+ break ;
255
+ case PHY_EXTENSION_READ_RX_TIME :
256
+ common_write_32_bit (100 , buf );
257
+ default :
258
+ break ;
259
+ }
260
+ return 0 ;
261
+ }
241
262
242
263
static protocol_interface_rf_mac_setup_s * test_mac_rf_mac_class_allocate (void )
243
264
{
@@ -261,32 +282,11 @@ static protocol_interface_rf_mac_setup_s *test_mac_rf_mac_class_allocate(void)
261
282
dev_driver -> phy_header_length = 0 ;
262
283
driver -> phy_driver = dev_driver ;
263
284
rf_mac_setup -> dev_driver = driver ;
285
+ rf_mac_setup -> dev_driver -> phy_driver -> extension = test_rf_extension ;
264
286
265
287
return rf_mac_setup ;
266
288
}
267
289
268
- uint32_t test_timestamp = 1000000 ;
269
- static int8_t test_rf_extension (phy_extension_type_e extension , uint8_t * buf )
270
- {
271
- switch (extension ) {
272
- case PHY_EXTENSION_GET_TIMESTAMP :
273
- buf [3 ] = test_timestamp >> 24 ;
274
- buf [2 ] = test_timestamp >> 16 ;
275
- buf [1 ] = test_timestamp >> 8 ;
276
- buf [0 ] = test_timestamp ;
277
- test_timestamp += 100000 ;
278
- break ;
279
- case PHY_EXTENSION_READ_LAST_ACK_PENDING_STATUS :
280
- * buf = 1 ;
281
- break ;
282
- case PHY_EXTENSION_READ_RX_TIME :
283
- common_write_32_bit (100 , buf );
284
- default :
285
- break ;
286
- }
287
- return 0 ;
288
- }
289
-
290
290
static int8_t test_rf_tx (uint8_t * data , uint16_t length , uint8_t tx_handle , data_protocol_e protocol )
291
291
{
292
292
return 0 ;
@@ -3046,6 +3046,93 @@ bool test_mac_mcps_trig_buffer_from_queue()
3046
3046
return false;
3047
3047
}
3048
3048
mac_mcps_buffer_queue_free (rf_mac_setup );
3049
+
3050
+ // Test removing old buffers from queue
3051
+ rf_mac_setup -> fhss_api = ns_fhss_create (0 , 0 , 0 );
3052
+ // Add 4 buffers in queue, buf and buf2 are too old and should be removed
3053
+ buf = tes_mac_mcps_temporary_buffer_get (0 );
3054
+ buf2 = tes_mac_mcps_temporary_buffer_get (0 );
3055
+ mac_pre_build_frame_t * buf3 = tes_mac_mcps_temporary_buffer_get (0 );
3056
+ mac_pre_build_frame_t * buf4 = tes_mac_mcps_temporary_buffer_get (0 );
3057
+ buf -> request_start_time_us = test_timestamp - 32000000 ;
3058
+ buf2 -> request_start_time_us = test_timestamp - 31000000 ;
3059
+ buf3 -> request_start_time_us = test_timestamp - 25000000 ;
3060
+ buf4 -> request_start_time_us = test_timestamp - 23000000 ;
3061
+ rf_mac_setup -> pd_data_request_queue_to_go = buf ;
3062
+ rf_mac_setup -> pd_data_request_queue_to_go -> next = buf2 ;
3063
+ rf_mac_setup -> pd_data_request_queue_to_go -> next -> next = buf3 ;
3064
+ rf_mac_setup -> pd_data_request_queue_to_go -> next -> next -> next = buf4 ;
3065
+ rf_mac_setup -> unicast_queue_size = 4 ;
3066
+ fhss_config_stub .bool_value = false;
3067
+ fhss_tx_condition = true;
3068
+ // Trig should remove first two buffers and take third as active data request
3069
+ mac_mcps_trig_buffer_from_queue (rf_mac_setup );
3070
+ if (rf_mac_setup -> active_pd_data_request != buf3 ) {
3071
+ test_mac_rf_mac_class_free (rf_mac_setup );
3072
+ printf ("Fail: Remove old buffers, wrong buffer activated\r\n" );
3073
+ return false;
3074
+ }
3075
+ mac_mcps_buffer_queue_free (rf_mac_setup );
3076
+
3077
+ // Test removing old buffers with low priority from queue
3078
+ rf_mac_setup -> fhss_api = ns_fhss_create (0 , 0 , 0 );
3079
+ // Add 4 buffers in queue, buf and buf2 are too old but only first one should be removed
3080
+ buf = tes_mac_mcps_temporary_buffer_get (0 );
3081
+ buf2 = tes_mac_mcps_temporary_buffer_get (0 );
3082
+ buf3 = tes_mac_mcps_temporary_buffer_get (0 );
3083
+ buf4 = tes_mac_mcps_temporary_buffer_get (0 );
3084
+ buf -> request_start_time_us = test_timestamp - 32000000 ;
3085
+ buf2 -> request_start_time_us = test_timestamp - 31000000 ;
3086
+ buf3 -> request_start_time_us = test_timestamp - 25000000 ;
3087
+ buf4 -> request_start_time_us = test_timestamp - 23000000 ;
3088
+ // Change buf2 priority to medium
3089
+ buf2 -> priority = MAC_PD_DATA_MEDIUM_PRIORITY ;
3090
+ rf_mac_setup -> pd_data_request_queue_to_go = buf ;
3091
+ rf_mac_setup -> pd_data_request_queue_to_go -> next = buf2 ;
3092
+ rf_mac_setup -> pd_data_request_queue_to_go -> next -> next = buf3 ;
3093
+ rf_mac_setup -> pd_data_request_queue_to_go -> next -> next -> next = buf4 ;
3094
+ rf_mac_setup -> unicast_queue_size = 4 ;
3095
+ fhss_config_stub .bool_value = false;
3096
+ fhss_tx_condition = true;
3097
+ // Trig should remove first buffer and take second as active data request
3098
+ mac_mcps_trig_buffer_from_queue (rf_mac_setup );
3099
+ if (rf_mac_setup -> active_pd_data_request != buf2 ) {
3100
+ test_mac_rf_mac_class_free (rf_mac_setup );
3101
+ printf ("Fail: Remove old buffers with priority, wrong buffer activated\r\n" );
3102
+ return false;
3103
+ }
3104
+ mac_mcps_buffer_queue_free (rf_mac_setup );
3105
+
3106
+ // Test removing old buffers with EF priority from queue
3107
+ rf_mac_setup -> fhss_api = ns_fhss_create (0 , 0 , 0 );
3108
+ // Add 4 buffers in queue, buf(normal priority) and buf2(EF priority) are too old and should be removed
3109
+ buf = tes_mac_mcps_temporary_buffer_get (0 );
3110
+ buf2 = tes_mac_mcps_temporary_buffer_get (0 );
3111
+ buf3 = tes_mac_mcps_temporary_buffer_get (0 );
3112
+ buf4 = tes_mac_mcps_temporary_buffer_get (0 );
3113
+ buf -> request_start_time_us = test_timestamp - 32000000 ;
3114
+ buf2 -> request_start_time_us = test_timestamp - 121000000 ;
3115
+ buf3 -> request_start_time_us = test_timestamp - 100000000 ;
3116
+ buf4 -> request_start_time_us = test_timestamp - 23000000 ;
3117
+ // Change buf2 and buf3 priority to expedited forwarding
3118
+ buf2 -> priority = MAC_PD_DATA_EF_PRIORITY ;
3119
+ buf3 -> priority = MAC_PD_DATA_EF_PRIORITY ;
3120
+ rf_mac_setup -> pd_data_request_queue_to_go = buf ;
3121
+ rf_mac_setup -> pd_data_request_queue_to_go -> next = buf2 ;
3122
+ rf_mac_setup -> pd_data_request_queue_to_go -> next -> next = buf3 ;
3123
+ rf_mac_setup -> pd_data_request_queue_to_go -> next -> next -> next = buf4 ;
3124
+ rf_mac_setup -> unicast_queue_size = 4 ;
3125
+ fhss_config_stub .bool_value = false;
3126
+ fhss_tx_condition = true;
3127
+ // Trig should remove first two buffers and take third as active data request
3128
+ mac_mcps_trig_buffer_from_queue (rf_mac_setup );
3129
+ if (rf_mac_setup -> active_pd_data_request != buf3 ) {
3130
+ test_mac_rf_mac_class_free (rf_mac_setup );
3131
+ printf ("Fail: Remove old buffers with EF priority, wrong buffer activated\r\n" );
3132
+ return false;
3133
+ }
3134
+ mac_mcps_buffer_queue_free (rf_mac_setup );
3135
+
3049
3136
// Free test setup struct
3050
3137
test_mac_rf_mac_class_free (rf_mac_setup );
3051
3138
return true;
0 commit comments