wlan_bearer/wlanengine/wlan_common/wlanengine_common_3.1/src/core_sub_operation_roam_update_ts.cpp
branchRCL_3
changeset 21 af3fb27c7511
parent 0 c40eb8fe8501
equal deleted inserted replaced
20:a9473894c0f1 21:af3fb27c7511
    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: