wlan_bearer/wlanengine/wlan_common/wlanengine_common_3.1/src/core_scan_channels.cpp
changeset 0 c40eb8fe8501
equal deleted inserted replaced
-1:000000000000 0:c40eb8fe8501
       
     1 /*
       
     2 * Copyright (c) 2005-2006 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of the License "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:  Class for manipulating scan channels masks.
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 #include "core_scan_channels.h"
       
    20 #include "core_tools.h"
       
    21 #include "am_debug.h"
       
    22 
       
    23 const u16_t SCAN_BAND_2DOT4GHZ_MASK = 0x1FFF;
       
    24 
       
    25 // ======== MEMBER FUNCTIONS ========
       
    26 
       
    27 // ---------------------------------------------------------------------------
       
    28 // ---------------------------------------------------------------------------
       
    29 //
       
    30 core_scan_channels_c::core_scan_channels_c() :
       
    31     channels2dot4ghz_m( 0 )
       
    32     {
       
    33     DEBUG( "core_scan_channels_c::core_scan_channels_c()" );
       
    34 
       
    35     core_tools_c::fillz(
       
    36         reinterpret_cast<u8_t*>( &channel_mask_m ),
       
    37         sizeof( channel_mask_m ) );       
       
    38     }
       
    39 
       
    40 // ---------------------------------------------------------------------------
       
    41 // ---------------------------------------------------------------------------
       
    42 //
       
    43 core_scan_channels_c::core_scan_channels_c(
       
    44     const core_scan_channels_s& channels ) :
       
    45     channels2dot4ghz_m( 0 )
       
    46     {
       
    47     DEBUG( "core_scan_channels_c::core_scan_channels_c() (channels)" );
       
    48 
       
    49     set( channels );
       
    50     }
       
    51 
       
    52 // ---------------------------------------------------------------------------
       
    53 // ---------------------------------------------------------------------------
       
    54 //
       
    55 core_scan_channels_c::core_scan_channels_c(
       
    56     const core_scan_channels_c& channels ) :
       
    57     channels2dot4ghz_m( 0 )
       
    58     {
       
    59     DEBUG( "core_scan_channels_c::core_scan_channels_c() (channels)" );
       
    60 
       
    61     set( channels );
       
    62     }
       
    63 
       
    64 // ---------------------------------------------------------------------------
       
    65 // ---------------------------------------------------------------------------
       
    66 //
       
    67 core_scan_channels_c::~core_scan_channels_c()
       
    68     {
       
    69     }
       
    70 
       
    71 // ---------------------------------------------------------------------------
       
    72 // ---------------------------------------------------------------------------
       
    73 //
       
    74 const core_scan_channels_s& core_scan_channels_c::channels()
       
    75     {
       
    76     if ( channel_mask_m.band & SCAN_BAND_2DOT4GHZ )
       
    77         {
       
    78         core_tools_c::copy(
       
    79             &channel_mask_m.channels2dot4ghz[0],
       
    80             reinterpret_cast<u8_t*>( &channels2dot4ghz_m ),
       
    81             sizeof( channels2dot4ghz_m ) );
       
    82         }
       
    83 
       
    84     return channel_mask_m;
       
    85     }
       
    86 
       
    87 // ---------------------------------------------------------------------------
       
    88 // ---------------------------------------------------------------------------
       
    89 //
       
    90 void core_scan_channels_c::set(
       
    91     const core_scan_channels_s& channels )
       
    92     {
       
    93     channel_mask_m = channels;
       
    94     channels2dot4ghz_m = 0;
       
    95 
       
    96     if ( channel_mask_m.band & SCAN_BAND_2DOT4GHZ )
       
    97         {
       
    98         core_tools_c::copy(
       
    99             reinterpret_cast<u8_t*>( &channels2dot4ghz_m ),
       
   100             &channels.channels2dot4ghz[0],            
       
   101             sizeof( channels2dot4ghz_m ) );         
       
   102         }        
       
   103     }
       
   104 
       
   105 // ---------------------------------------------------------------------------
       
   106 // ---------------------------------------------------------------------------
       
   107 //
       
   108 void core_scan_channels_c::set(
       
   109     const core_scan_channels_c& channels )
       
   110     {
       
   111     channel_mask_m.band = channels.channel_mask_m.band;
       
   112     channels2dot4ghz_m = 0;
       
   113 
       
   114     if ( channel_mask_m.band & SCAN_BAND_2DOT4GHZ )
       
   115         {
       
   116         channels2dot4ghz_m = channels.channels2dot4ghz_m;
       
   117         }    
       
   118     }
       
   119 
       
   120 // ---------------------------------------------------------------------------
       
   121 // ---------------------------------------------------------------------------
       
   122 //
       
   123 void core_scan_channels_c::merge(
       
   124     const core_scan_channels_c& channels )
       
   125     {
       
   126     channel_mask_m.band |= channels.channel_mask_m.band;
       
   127 
       
   128     if ( channels.channel_mask_m.band & SCAN_BAND_2DOT4GHZ )
       
   129         {
       
   130         channels2dot4ghz_m |= channels.channels2dot4ghz_m;
       
   131         }
       
   132     }
       
   133 
       
   134 // ---------------------------------------------------------------------------
       
   135 // ---------------------------------------------------------------------------
       
   136 //
       
   137 void core_scan_channels_c::add(
       
   138     u8_t band,
       
   139     u8_t channel )
       
   140     {
       
   141     if ( band & SCAN_BAND_2DOT4GHZ &&
       
   142          channel &&
       
   143          channel <= SCAN_BAND_2DOT4GHZ_MAX_CHANNEL_EURO )
       
   144         {
       
   145         channel_mask_m.band |= band;
       
   146 
       
   147         channels2dot4ghz_m |= static_cast<u16_t>( 1 << ( channel - 1 ) );
       
   148         }
       
   149     }
       
   150 
       
   151 // ---------------------------------------------------------------------------
       
   152 // ---------------------------------------------------------------------------
       
   153 //
       
   154 void core_scan_channels_c::invert_channels()
       
   155     {
       
   156     channels2dot4ghz_m ^= SCAN_BAND_2DOT4GHZ_MASK;
       
   157     }
       
   158 
       
   159 // ---------------------------------------------------------------------------
       
   160 // ---------------------------------------------------------------------------
       
   161 //
       
   162 void core_scan_channels_c::remove(
       
   163 	    u8_t band,
       
   164 	    u8_t channel )
       
   165 	    {
       
   166 	    if ( band & SCAN_BAND_2DOT4GHZ &&
       
   167 	         channel &&
       
   168 	         channel <= SCAN_BAND_2DOT4GHZ_MAX_CHANNEL_EURO )
       
   169 	        {
       
   170 	        u16_t mask = static_cast<u16_t>( 1 << ( channel - 1 ) );
       
   171 	        mask ^= SCAN_BAND_2DOT4GHZ_MASK;
       
   172 	        channels2dot4ghz_m &= mask;
       
   173 	        
       
   174 	        if( channels2dot4ghz_m == 0 )
       
   175 	            {
       
   176 	            channel_mask_m.band &= ( ~SCAN_BAND_2DOT4GHZ );
       
   177 	            }        	
       
   178 	        }
       
   179 	    }
       
   180 
       
   181 // ---------------------------------------------------------------------------
       
   182 // ---------------------------------------------------------------------------
       
   183 //
       
   184 bool_t core_scan_channels_c::is_empty(
       
   185     u8_t band )
       
   186     {
       
   187     if ( ( band & SCAN_BAND_2DOT4GHZ ) &&
       
   188          ( channel_mask_m.band & SCAN_BAND_2DOT4GHZ ) &&
       
   189          ( channels2dot4ghz_m & SCAN_BAND_2DOT4GHZ_MASK ) )
       
   190         {
       
   191         return false_t;
       
   192         }
       
   193 
       
   194     return true_t;
       
   195     }