wlan_bearer/wlanengine/wlan_common/wlanengine_common_3.1/src/core_traffic_stream.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 02 Feb 2010 02:03:13 +0200
changeset 0 c40eb8fe8501
permissions -rw-r--r--
Revision: 201003 Kit: 201005

/*
* Copyright (c) 2006-2007 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of the License "Eclipse Public License v1.0"
* which accompanies this distribution, and is available
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
*
* Initial Contributors:
* Nokia Corporation - initial contribution.
*
* Contributors:
*
* Description:  Class for storing traffic stream parameters.
*
*/

/*
* %version: 7 %
*/

#include "core_traffic_stream.h"
#include "core_tools.h"
#include "am_debug.h"

// ---------------------------------------------------------------------------
// ---------------------------------------------------------------------------
//
core_traffic_stream_c::core_traffic_stream_c(
    u8_t tid,
    u8_t user_priority ) :
    tid_m( tid ),
    user_priority_m( user_priority ),
    status_m( core_traffic_stream_status_undefined ),
    reference_count_m( 1 )
    {
    }

// ---------------------------------------------------------------------------
// ---------------------------------------------------------------------------
//
core_traffic_stream_c::~core_traffic_stream_c()
    {
    }

// ---------------------------------------------------------------------------
// ---------------------------------------------------------------------------
//
u8_t core_traffic_stream_c::tid() const
    {
    return tid_m;
    }

// ---------------------------------------------------------------------------
// ---------------------------------------------------------------------------
//    
u8_t core_traffic_stream_c::user_priority() const
    {
    return user_priority_m;
    }

// ---------------------------------------------------------------------------
// ---------------------------------------------------------------------------
//
core_access_class_e core_traffic_stream_c::access_class() const
    {
    return core_tools_c::convert_user_priority_to_ac( user_priority_m );
    }

// ---------------------------------------------------------------------------
// ---------------------------------------------------------------------------
//
void core_traffic_stream_c::set_default_traffic_values(
    const core_traffic_stream_params_s& params )
    {
    default_params_m = params;
    }

// ---------------------------------------------------------------------------
// ---------------------------------------------------------------------------
//
void core_traffic_stream_c::set_traffic_values(
    const core_traffic_stream_params_s& params )
    {
    previous_params_m = params_m;
    params_m = params;
    }

// ---------------------------------------------------------------------------
// ---------------------------------------------------------------------------
//
void core_traffic_stream_c::reset_to_default_values()
    {
    previous_params_m = params_m;
    params_m = default_params_m;  
    }

// ---------------------------------------------------------------------------
// ---------------------------------------------------------------------------
//
void core_traffic_stream_c::reset_to_previous_values()
    {
    params_m = previous_params_m;
    }

// ---------------------------------------------------------------------------
// ---------------------------------------------------------------------------
//
core_traffic_stream_status_e core_traffic_stream_c::status() const
    {
    return status_m;
    }

// ---------------------------------------------------------------------------
// ---------------------------------------------------------------------------
//
void core_traffic_stream_c::set_status(
    core_traffic_stream_status_e status )
    {
    status_m = status;
    }

// ---------------------------------------------------------------------------
// ---------------------------------------------------------------------------
//
u8_t core_traffic_stream_c::reference_count()
    {
    return reference_count_m;
    }

// ---------------------------------------------------------------------------
// ---------------------------------------------------------------------------
//
void core_traffic_stream_c::inc_reference_count()
    {
    ++reference_count_m;
    }

// ---------------------------------------------------------------------------
// ---------------------------------------------------------------------------
//
void core_traffic_stream_c::dec_reference_count()
    {
    ASSERT( reference_count_m );
    --reference_count_m;
    }

// ---------------------------------------------------------------------------
// ---------------------------------------------------------------------------
//
bool_t core_traffic_stream_c::is_periodic_traffic() const
    {
    return params_m.is_periodic_traffic;  
    }

// ---------------------------------------------------------------------------
// ---------------------------------------------------------------------------
//
core_traffic_stream_direction_e core_traffic_stream_c::direction() const
    {
    return params_m.direction;  
    }

// ---------------------------------------------------------------------------
// ---------------------------------------------------------------------------
//
u16_t core_traffic_stream_c::nominal_msdu_size() const
    {
    return params_m.nominal_msdu_size;
    }

// ---------------------------------------------------------------------------
// ---------------------------------------------------------------------------
//  
u16_t core_traffic_stream_c::maximum_msdu_size() const
    {
    return params_m.maximum_msdu_size;
    }

// ---------------------------------------------------------------------------
// ---------------------------------------------------------------------------
//
u32_t core_traffic_stream_c::minimum_service_interval() const
    {
    return params_m.minimum_service_interval;
    }

// ---------------------------------------------------------------------------
// ---------------------------------------------------------------------------
//
u32_t core_traffic_stream_c::maximum_service_interval() const
    {
    return params_m.maximum_service_interval;
    }

// ---------------------------------------------------------------------------
// ---------------------------------------------------------------------------
//
u32_t core_traffic_stream_c::inactivity_interval() const
    {
    return params_m.inactivity_interval;
    }

// ---------------------------------------------------------------------------
// ---------------------------------------------------------------------------
//
u32_t core_traffic_stream_c::suspension_interval() const
    {
    return params_m.suspension_interval;
    }

// ---------------------------------------------------------------------------
// ---------------------------------------------------------------------------
//
u32_t core_traffic_stream_c::service_start_time() const
    {
    return params_m.service_start_time;
    }

// ---------------------------------------------------------------------------
// ---------------------------------------------------------------------------
//
u32_t core_traffic_stream_c::minimum_data_rate() const
    {
    return params_m.minimum_data_rate;
    }

// ---------------------------------------------------------------------------
// ---------------------------------------------------------------------------
//
u32_t core_traffic_stream_c::mean_data_rate() const
    {
    return params_m.mean_data_rate;
    }

// ---------------------------------------------------------------------------
// ---------------------------------------------------------------------------
// 
u32_t core_traffic_stream_c::peak_data_rate() const
    {
    return params_m.peak_data_rate;
    }

// ---------------------------------------------------------------------------
// ---------------------------------------------------------------------------
//
u32_t core_traffic_stream_c::maximum_burst_size() const
    {
    return params_m.maximum_burst_size; 
    }

// ---------------------------------------------------------------------------
// ---------------------------------------------------------------------------
//
u32_t core_traffic_stream_c::delay_bound() const
    {
    return params_m.delay_bound;
    }

// ---------------------------------------------------------------------------
// ---------------------------------------------------------------------------
//
u32_t core_traffic_stream_c::minimum_phy_rate() const
    {
    return params_m.minimum_phy_rate;
    }

// ---------------------------------------------------------------------------
// ---------------------------------------------------------------------------
//
u16_t core_traffic_stream_c::surplus_bandwidth_allowance() const
    {
    return params_m.surplus_bandwidth_allowance;
    }

// ---------------------------------------------------------------------------
// ---------------------------------------------------------------------------
//
u16_t core_traffic_stream_c::medium_time() const
    {
    return params_m.medium_time;
    }

// ---------------------------------------------------------------------------
// ---------------------------------------------------------------------------
//
core_tx_rate_e core_traffic_stream_c::nominal_phy_rate() const
    {
    return params_m.nominal_phy_rate;
    }

// ---------------------------------------------------------------------------
// ---------------------------------------------------------------------------
//
u32_t core_traffic_stream_c::override_rates() const
    {
    return params_m.override_rates;
    }

// ---------------------------------------------------------------------------
// ---------------------------------------------------------------------------
//
u32_t core_traffic_stream_c::max_tx_msdu_lifetime() const
    {
    return params_m.override_max_tx_msdu_lifetime;   
    }

// ---------------------------------------------------------------------------
// ---------------------------------------------------------------------------
//
core_traffic_stream_c& core_traffic_stream_c::operator=(
    const core_traffic_stream_c& src )
    {
    // Check first assignment to itself
    if( &src == this)
        {
        DEBUG( "core_traffic_stream_c::operator=() - assignment to this" );
        return *this;
        }

    tid_m = src.tid_m;
    user_priority_m = src.user_priority_m;
    default_params_m = src.default_params_m;
    params_m = src.params_m;
    previous_params_m = src.previous_params_m;
    status_m = src.status_m;
    reference_count_m = src.reference_count_m;

    return *this;
    }