wlan_bearer/wlanengine/wlan_common/wlanengine_common_3.1/src/core_sub_operation_roam_update_ts.cpp
equal
deleted
inserted
replaced
14 * Description: Statemachine for updating traffic stream statuses after roam. |
14 * Description: Statemachine for updating traffic stream statuses after roam. |
15 * |
15 * |
16 */ |
16 */ |
17 |
17 |
18 /* |
18 /* |
19 * %version: 12 % |
19 * %version: 13 % |
20 */ |
20 */ |
21 |
21 |
22 #include "core_sub_operation_roam_update_ts.h" |
22 #include "core_sub_operation_roam_update_ts.h" |
23 #include "core_sub_operation_create_ts.h" |
23 #include "core_sub_operation_create_ts.h" |
24 #include "core_frame_wmm_ie.h" |
24 #include "core_frame_wmm_ie.h" |
152 * mandatory for the access class. |
152 * mandatory for the access class. |
153 */ |
153 */ |
154 core_virtual_traffic_stream_c* virtual_iter = virtual_ts_iter.first(); |
154 core_virtual_traffic_stream_c* virtual_iter = virtual_ts_iter.first(); |
155 while( virtual_iter ) |
155 while( virtual_iter ) |
156 { |
156 { |
157 if( is_ac_required[virtual_iter->access_class()] && |
157 if( virtual_iter->status() != core_traffic_stream_status_active ) |
158 virtual_iter->status() != core_traffic_stream_status_active ) |
|
159 { |
158 { |
160 DEBUG1( "core_sub_operation_roam_update_ts_c::next_state() - virtual traffic stream with ID %u needs to created", |
159 if( is_ac_required[virtual_iter->access_class()] ) |
161 virtual_iter->id() ); |
160 { |
162 |
161 DEBUG1( "core_sub_operation_roam_update_ts_c::next_state() - virtual traffic stream with ID %u needs to created", |
163 virtual_stream_list_m.add_traffic_stream( |
162 virtual_iter->id() ); |
164 *virtual_iter ); |
163 |
|
164 virtual_stream_list_m.add_traffic_stream( |
|
165 *virtual_iter ); |
|
166 } |
|
167 else |
|
168 { |
|
169 /** |
|
170 * Send a status update to all affected virtual traffic streams. |
|
171 */ |
|
172 set_virtual_traffic_stream_inactive_by_id( |
|
173 virtual_iter->id(), |
|
174 core_traffic_stream_status_inactive_not_required ); |
|
175 } |
165 } |
176 } |
166 |
177 |
167 virtual_iter = virtual_ts_iter.next(); |
178 virtual_iter = virtual_ts_iter.next(); |
168 } |
179 } |
169 |
180 |
186 /** |
197 /** |
187 * Send a status update to all affected virtual traffic streams. |
198 * Send a status update to all affected virtual traffic streams. |
188 */ |
199 */ |
189 set_virtual_traffic_stream_inactive_by_tid( |
200 set_virtual_traffic_stream_inactive_by_tid( |
190 iter->tid(), |
201 iter->tid(), |
191 core_traffic_stream_status_inactive_not_required ); |
202 core_traffic_stream_status_inactive_not_required ); |
192 |
203 |
193 /** |
204 /** |
194 * Delete the actual traffic stream. |
205 * Delete the actual traffic stream. |
195 */ |
206 */ |
196 server_m->get_wpx_adaptation_instance().handle_ts_delete( |
207 server_m->get_wpx_adaptation_instance().handle_ts_delete( |
197 iter->tid(), iter->user_priority() ); |
208 iter->tid(), iter->user_priority() ); |
198 ts_iter.remove(); |
209 ts_iter.remove(); |
|
210 iter = NULL; |
199 } |
211 } |
200 else if( iter->status() == core_traffic_stream_status_undefined ) |
212 else if( iter->status() == core_traffic_stream_status_undefined ) |
201 { |
213 { |
202 DEBUG2( "core_sub_operation_roam_update_ts_c::next_state() - traffic stream (TID %u, user priority %u) needs to be re-created", |
214 DEBUG2( "core_sub_operation_roam_update_ts_c::next_state() - traffic stream (TID %u, user priority %u) needs to be re-created", |
203 iter->tid(), iter->user_priority() ); |
215 iter->tid(), iter->user_priority() ); |
220 * Delete the actual traffic stream. |
232 * Delete the actual traffic stream. |
221 */ |
233 */ |
222 server_m->get_wpx_adaptation_instance().handle_ts_delete( |
234 server_m->get_wpx_adaptation_instance().handle_ts_delete( |
223 iter->tid(), iter->user_priority() ); |
235 iter->tid(), iter->user_priority() ); |
224 ts_iter.remove(); |
236 ts_iter.remove(); |
|
237 iter = NULL; |
225 } |
238 } |
226 |
239 |
227 iter = ts_iter.next(); |
240 iter = ts_iter.next(); |
228 } |
241 } |
229 |
242 |
299 |
312 |
300 /** |
313 /** |
301 * Move to the next entry. |
314 * Move to the next entry. |
302 */ |
315 */ |
303 stream_iter_m.remove(); |
316 stream_iter_m.remove(); |
|
317 iter = NULL; |
304 (void)stream_iter_m.first(); |
318 (void)stream_iter_m.first(); |
305 |
319 |
306 return goto_state( core_state_recreate_next ); |
320 return goto_state( core_state_recreate_next ); |
307 } |
321 } |
308 case core_state_recreate_fail: |
322 case core_state_recreate_fail: |
437 |
451 |
438 /** |
452 /** |
439 * Move to the next entry. |
453 * Move to the next entry. |
440 */ |
454 */ |
441 stream_iter_m.remove(); |
455 stream_iter_m.remove(); |
|
456 iter = NULL; |
442 virtual_stream_iter_m.remove(); |
457 virtual_stream_iter_m.remove(); |
|
458 virtual_iter = NULL; |
443 (void)virtual_stream_iter_m.first(); |
459 (void)virtual_stream_iter_m.first(); |
444 |
460 |
445 return goto_state( core_state_recreate_virtual_next ); |
461 return goto_state( core_state_recreate_virtual_next ); |
446 } |
462 } |
447 case core_state_recreate_virtual_fail: |
463 case core_state_recreate_virtual_fail: |