wlan_bearer/wlanengine/wlan_symbian/wlanengine_symbian_3.1/src/wlanconversionutil.cpp
changeset 0 c40eb8fe8501
child 3 6524e815f76f
child 13 ab7247ff6ef9
equal deleted inserted replaced
-1:000000000000 0:c40eb8fe8501
       
     1 /*
       
     2 * Copyright (c) 2005-2009 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:  Handles type conversion between adaptation and core layers
       
    15 *
       
    16 */
       
    17 
       
    18 /*
       
    19 * %version: 82 %
       
    20 */
       
    21 
       
    22 #include <in_sock.h>
       
    23 #include <e32math.h>
       
    24 
       
    25 #include "wlanconversionutil.h"
       
    26 #include "wlmserver.h"
       
    27 #include "wlmtsparams.h"
       
    28 #include "am_debug.h"
       
    29 
       
    30 /**
       
    31  * Mappings from user priority to access class.
       
    32  */
       
    33 const TWlmAccessClass KWlmUserPriorityToAccessClass[] =
       
    34     {
       
    35     EWlmAccessClassBestEffort,
       
    36     EWlmAccessClassBackground,
       
    37     EWlmAccessClassBackground,
       
    38     EWlmAccessClassBestEffort,
       
    39     EWlmAccessClassVideo,
       
    40     EWlmAccessClassVideo,
       
    41     EWlmAccessClassVoice,
       
    42     EWlmAccessClassVoice    
       
    43     };
       
    44 
       
    45 // Compile time assert. Used to make sure that some core constants are matching with Symbian constants.
       
    46 #define COMPILE_ASSERT(e) typedef char __C_ASSERT__[(e)?1:-1] //lint --e{58,92,751,761,30,452,545}
       
    47 // 58  = Error -- Bad type
       
    48 // 92  = Negative array dimension or bit field length (-1)
       
    49 // 751 = local typedef '__C_ASSERT__' not referenced
       
    50 // 761 = Redundant typedef '__C_ASSERT__' previously declared at line x
       
    51 // 30  = Expected an integer constant, obtained an expression that could not be evaluated
       
    52 // 452 = typedef Symbol '__C_ASSERT__' redeclared (size) conflicts with line x
       
    53 // 545 = Suspicious use of &
       
    54 
       
    55 // ---------------------------------------------------------
       
    56 // TWlanConversionUtil::ConvertSSID()
       
    57 // ---------------------------------------------------------
       
    58 //
       
    59 void TWlanConversionUtil::ConvertSSID(
       
    60     core_ssid_s& aCoreSSID,
       
    61     const TSSID& aSSID )
       
    62     {
       
    63     Mem::Copy( aCoreSSID.ssid, aSSID.ssid, aSSID.ssidLength );
       
    64     aCoreSSID.length = aSSID.ssidLength;
       
    65     }
       
    66 
       
    67 // ---------------------------------------------------------
       
    68 // TWlanConversionUtil::ConvertSSID()
       
    69 // ---------------------------------------------------------
       
    70 //
       
    71 void TWlanConversionUtil::ConvertSSID(
       
    72     core_ssid_s& aCoreSSID,
       
    73     const TDesC& aSSID )
       
    74     {
       
    75     TBuf8<KMaxSSIDLength> ssidBuf;
       
    76     ssidBuf.Copy( aSSID );
       
    77     
       
    78     Mem::Copy( aCoreSSID.ssid, ssidBuf.Ptr(), ssidBuf.Length() );
       
    79     aCoreSSID.length = ssidBuf.Length();
       
    80     }
       
    81 
       
    82 // ---------------------------------------------------------
       
    83 // TWlanConversionUtil::ConvertSSID()
       
    84 // ---------------------------------------------------------
       
    85 //
       
    86 void TWlanConversionUtil::ConvertSSID(
       
    87     core_ssid_s& aCoreSSID,
       
    88     const TDesC8& aSSID )
       
    89     {
       
    90     Mem::Copy( aCoreSSID.ssid, aSSID.Ptr(), aSSID.Length() );
       
    91     aCoreSSID.length = aSSID.Length();
       
    92     }
       
    93 
       
    94 // ---------------------------------------------------------
       
    95 // TWlanConversionUtil::ConvertSSID()
       
    96 // ---------------------------------------------------------
       
    97 //
       
    98 void TWlanConversionUtil::ConvertSSID(
       
    99     TSSID& aAmSSID,
       
   100     const core_ssid_s& aCoreSSID )
       
   101     {
       
   102     Mem::Copy( aAmSSID.ssid, aCoreSSID.ssid, aCoreSSID.length );
       
   103     aAmSSID.ssidLength = aCoreSSID.length;
       
   104     }
       
   105 
       
   106 // ---------------------------------------------------------
       
   107 // TWlanConversionUtil::ConvertScanRate()
       
   108 // ---------------------------------------------------------
       
   109 //
       
   110 TRate TWlanConversionUtil::ConvertScanRate( int_t aCoreScanRate )
       
   111     {
       
   112     return static_cast<TRate>( aCoreScanRate );
       
   113     }
       
   114 
       
   115 // ---------------------------------------------------------
       
   116 // TWlanConversionUtil::ConvertSecurityMode()
       
   117 // ---------------------------------------------------------
       
   118 //
       
   119 TWlanSecurity TWlanConversionUtil::ConvertSecurityMode(
       
   120     const core_connection_security_mode_e& aCoreMode )
       
   121     {
       
   122     switch( aCoreMode )
       
   123         {
       
   124         case core_connection_security_mode_open:
       
   125             return EWlanSecurityOpen;
       
   126         case core_connection_security_mode_wep_open:
       
   127             return EWlanSecurityWepOpen;
       
   128         case core_connection_security_mode_wep_shared:
       
   129             return EWlanSecurityWepShared;
       
   130         case core_connection_security_mode_802d1x:
       
   131             return EWlanSecurity802d1x;
       
   132         case core_connection_security_mode_wpa:
       
   133             return EWlanSecurityWpa;
       
   134         case core_connection_security_mode_wpa_psk:
       
   135             return EWlanSecurityWpaPsk;
       
   136         case core_connection_security_mode_wpa2:
       
   137             return EWlanSecurityWpa2;
       
   138         case core_connection_security_mode_wpa2_psk:
       
   139             return EWlanSecurityWpa2Psk;
       
   140         case core_connection_security_mode_wapi:
       
   141             return EWlanSecurityWapi;
       
   142         case core_connection_security_mode_wapi_psk:
       
   143             return EWlanSecurityWapiPsk;
       
   144         default:
       
   145             return EWlanSecurityOpen;
       
   146         }
       
   147     }
       
   148 
       
   149 // ---------------------------------------------------------
       
   150 // TWlanConversionUtil::ConvertEncryptionMode()
       
   151 // ---------------------------------------------------------
       
   152 //
       
   153 TEncryptionStatus TWlanConversionUtil::ConvertEncryptionMode(
       
   154     const core_encryption_mode_e& aCoreEncryptionMode )
       
   155     {
       
   156     switch( aCoreEncryptionMode )
       
   157         {
       
   158         case core_encryption_mode_disabled:
       
   159             return EEncryptionDisabled;
       
   160         case core_encryption_mode_wep:
       
   161             return EEncryptionWep;
       
   162         case core_encryption_mode_802dot1x:
       
   163             return EEncryption802dot1x;
       
   164         case core_encryption_mode_wep_mixed_cell:
       
   165             return EEncryptionWepMixed;
       
   166         case core_encryption_mode_802dot1x_mixed_cell:
       
   167             return EEncryption802dot1xMixed;
       
   168         case core_encryption_mode_wpi:
       
   169             return EEncryptionWAPI;
       
   170         default: // instead of case core_encryption_mode_wpa:
       
   171             return EEncryptionWpa;
       
   172         }
       
   173     }
       
   174 
       
   175 // ---------------------------------------------------------
       
   176 // TWlanConversionUtil::ConvertConnectionState()
       
   177 // ---------------------------------------------------------
       
   178 //
       
   179 TWlanConnectionState TWlanConversionUtil::ConvertConnectionState(
       
   180     const core_connection_state_e& aCoreState )
       
   181     {
       
   182     switch( aCoreState )
       
   183         {
       
   184         case core_connection_state_notconnected:
       
   185             return EWlanStateNotConnected;
       
   186         case core_connection_state_infrastructure:
       
   187             return EWlanStateInfrastructure;
       
   188         case core_connection_state_searching:
       
   189             return EWlanStateSearchingAP;
       
   190         case core_connection_state_ibss: // fall through on purpose
       
   191         case core_connection_state_secureibss:
       
   192             return EWlanStateIBSS;
       
   193         case core_connection_state_secureinfra:
       
   194             return EWlanStateSecureInfra;
       
   195         default:
       
   196             return EConnectionStateUnknown;
       
   197         }
       
   198     }
       
   199 
       
   200 // ---------------------------------------------------------
       
   201 // TWlanConversionUtil::ConvertScanMode()
       
   202 // ---------------------------------------------------------
       
   203 //
       
   204 core_scan_mode_e TWlanConversionUtil::ConvertScanMode(
       
   205     const TScanMode& aAmScanMode )
       
   206     {
       
   207     switch( aAmScanMode )
       
   208         {
       
   209         case EActiveScan:
       
   210             return core_scan_mode_active;
       
   211         case EPassiveScan:
       
   212             return core_scan_mode_passive;
       
   213         default:
       
   214             return core_scan_mode_passive;
       
   215         }
       
   216     }
       
   217 
       
   218 // ---------------------------------------------------------
       
   219 // TWlanConversionUtil::ConvertScanMode()
       
   220 // ---------------------------------------------------------
       
   221 //
       
   222 TScanMode TWlanConversionUtil::ConvertScanMode(
       
   223     const core_scan_mode_e& aCoreScanMode )
       
   224     {
       
   225     switch( aCoreScanMode )
       
   226         {
       
   227         case core_scan_mode_active:
       
   228             return EActiveScan;
       
   229         case core_scan_mode_passive:
       
   230             return EPassiveScan;
       
   231         default:
       
   232             return EPassiveScan;
       
   233         }
       
   234     }
       
   235 
       
   236 // ---------------------------------------------------------
       
   237 // TWlanConversionUtil::ConvertConvertCipherKeyType()
       
   238 // ---------------------------------------------------------
       
   239 //
       
   240 TWlanCipherSuite TWlanConversionUtil::ConvertCipherKeyType(
       
   241     const core_cipher_key_type_e& aCoreCipherKeyType )
       
   242     {
       
   243     switch( aCoreCipherKeyType )
       
   244         {
       
   245         case core_cipher_key_type_none:
       
   246             return EWlanCipherSuiteNone;
       
   247         case core_cipher_key_type_tkip:
       
   248             return EWlanCipherSuiteTkip;
       
   249         case core_cipher_key_type_ccmp:
       
   250             return EWlanCipherSuiteCcmp;
       
   251         case core_cipher_key_type_wpi:
       
   252             return EWlanCipherSuiteWapi;
       
   253         default:
       
   254             return EWlanCipherSuiteWep;
       
   255         }
       
   256     }
       
   257 
       
   258 // ---------------------------------------------------------
       
   259 // TWlanConversionUtil::ConvertNotificationType()
       
   260 // ---------------------------------------------------------
       
   261 //
       
   262 TWlmNotify TWlanConversionUtil::ConvertNotificationType(
       
   263     const core_notification_e& aCoreNotificationType )
       
   264     {
       
   265     switch( aCoreNotificationType )
       
   266         {
       
   267         case core_notification_connection_state_changed:
       
   268             return EWlmNotifyConnectionStateChanged;
       
   269         case core_notification_bssid_changed:
       
   270             return EWlmNotifyBssidChanged;
       
   271         case core_notification_bss_lost:
       
   272             return EWlmNotifyBssLost;
       
   273         case core_notification_bss_regained:
       
   274             return EWlmNotifyBssRegained;
       
   275         case core_notification_tx_power_level_changed:
       
   276             return EWlmNotifyTransmitPowerChanged;
       
   277         case core_notification_rcp_changed:
       
   278             return EWlmNotifyRcpChanged;
       
   279         case core_notification_ts_status_changed:
       
   280             return EWlmNotifyTrafficStreamStatusChanged;
       
   281         case core_notification_ap_info_changed:
       
   282             return EWlmNotifyAccessPointInfoChanged;
       
   283         case core_notification_rcpi_roam_attempt_started:
       
   284             return EWlmNotifyRcpiRoamAttemptStarted;
       
   285         case core_notification_rcpi_roam_attempt_completed:
       
   286             return EWlmNotifyRcpiRoamAttemptCompleted;
       
   287         case core_notification_broken_power_save_test_failed:
       
   288             return EWlmNotifyBrokenPowerSaveTestFailed;
       
   289         case core_notification_ac_traffic_mode_changed:
       
   290             return EWlmNotifyAcTrafficModeChanged;
       
   291         case core_notification_ac_traffic_status_changed:
       
   292             return EWlmNotifyAcTrafficStatusChanged;
       
   293         default: // this should never happen
       
   294             return EWlmNotifyNone;
       
   295         }
       
   296     }
       
   297 
       
   298 // ---------------------------------------------------------
       
   299 // TWlanConversionUtil::ConvertConnectStatus()
       
   300 // ---------------------------------------------------------
       
   301 //
       
   302 TInt TWlanConversionUtil::ConvertConnectStatus(
       
   303     const core_connect_status_e& aCoreConnectStatus,
       
   304     core_security_mode_e security_mode )
       
   305     {
       
   306     switch( aCoreConnectStatus )
       
   307         {
       
   308         case core_connect_ok:
       
   309             return KErrNone;
       
   310         case core_connect_network_not_found:
       
   311         case core_connect_mode_infra_required_but_ibss_found:
       
   312         case core_connect_mode_ibss_required_but_infra_found:
       
   313         case core_connect_ap_full:
       
   314         case core_connect_ap_not_whitelisted:
       
   315         case core_connect_ap_permanently_blacklisted:
       
   316         case core_connect_ap_temporarily_blacklisted:
       
   317         case core_connect_ap_outside_defined_region:
       
   318         case core_connect_iap_open_but_ap_requires_encryption:
       
   319         case core_connect_iap_wep_but_ap_has_no_privacy:
       
   320         case core_connect_iap_wpa_but_ap_has_no_privacy:
       
   321         case core_connect_eapol_auth_start_timeout:
       
   322         case core_connect_wep_open_authentication_unsupported:
       
   323         case core_connect_wep_shared_authentication_unsupported:
       
   324             return KErrWlanNetworkNotFound;
       
   325         case core_connect_iap_wep_but_ap_has_wpa_ie:
       
   326             return KErrWlanWpaAuthRequired;
       
   327         case core_connect_wpa_ap_has_no_valid_ciphers:
       
   328         case core_connect_wpa_ie_required_but_ap_has_none:
       
   329             {
       
   330             if ( security_mode == core_security_mode_wpa2only )
       
   331                 {
       
   332                 return KErrWlanWpa2OnlyModeNotSupported;
       
   333                 }
       
   334 
       
   335             return KErrWlanNetworkNotFound;
       
   336             }
       
   337         case core_connect_wep_open_echo_test_failed:
       
   338             return KErrWlanIllegalEncryptionKeys;
       
   339         case core_connect_wep_shared_authentication_failed:
       
   340             return KErrWlanSharedKeyAuthFailed;
       
   341         case core_connect_wpa_psk_required_but_ap_has_no_support:
       
   342             return KErrWlanEapModeRequired;
       
   343         case core_connect_wpa_eap_required_but_ap_has_no_support:
       
   344             return KErrWlanPskModeRequired;
       
   345         case core_connect_wpa_eap_failure:
       
   346             return KErrWlanWpaAuthFailed;
       
   347         case core_connect_wpa_psk_failure:
       
   348             return KErrWlanIllegalWpaPskKey;
       
   349         case core_connect_802_1x_failure:
       
   350         case core_connect_802_1x_authentication_algorithm_not_supported:
       
   351             return KErrWlan802dot1xAuthFailed;
       
   352         case core_connect_wpa_authentication_canceled_by_user:
       
   353         case core_connect_802_1x_authentication_canceled_by_user:
       
   354             return KErrCancel;
       
   355         case core_connect_eap_gtc_failure:
       
   356             return KErrWlanEapGtcFailed;
       
   357         case core_connect_eap_tls_failure:
       
   358             return KErrWlanEapTlsFailed;
       
   359         case core_connect_eap_tls_server_certificate_expired:
       
   360         case core_connect_eap_ttls_server_certificate_expired:
       
   361         case core_connect_eap_peap_server_certificate_expired:
       
   362             return KErrWlanServerCertificateExpired;
       
   363         case core_connect_eap_tls_server_certificate_unknown:
       
   364         case core_connect_eap_ttls_server_certificate_unknown:
       
   365         case core_connect_eap_peap_server_certificate_unknown:
       
   366             return KErrWlanCerficateVerifyFailed;
       
   367         case core_connect_eap_tls_user_certificate_expired:
       
   368         case core_connect_eap_ttls_user_certificate_expired:
       
   369         case core_connect_eap_peap_user_certificate_expired:
       
   370             return KErrWlanUserCertificateExpired;
       
   371         case core_connect_eap_tls_user_certificate_unknown:
       
   372         case core_connect_eap_ttls_user_certificate_unknown:
       
   373         case core_connect_eap_peap_user_certificate_unknown:
       
   374             return KErrWlanNoUserCertificate;
       
   375         case core_connect_eap_tls_illegal_cipher_suite:
       
   376         case core_connect_eap_ttls_illegal_cipher_suite:
       
   377         case core_connect_eap_peap_illegal_cipher_suite:
       
   378             return KErrWlanNoCipherSuite;
       
   379         case core_connect_eap_tls_user_rejected:
       
   380         case core_connect_eap_ttls_user_rejected:
       
   381         case core_connect_eap_peap_user_rejected:
       
   382             return KErrWlanUserRejected;
       
   383         case core_connect_eap_leap_failure:
       
   384             return KErrWlanLeapFailed;
       
   385         case core_connect_eap_sim_failure:
       
   386             return KErrWlanEapSimFailed;
       
   387         case core_connect_eap_sim_identity_query_failed:
       
   388         case core_connect_eap_aka_identity_query_failed:
       
   389             return KErrWlanSimNotInstalled;
       
   390         case core_connect_eap_sim_user_has_not_subscribed_to_the_requested_service:
       
   391         case core_connect_eap_aka_user_has_not_subscribed_to_the_requested_service:
       
   392             return KErrWlanNotSubscribed;
       
   393         case core_connect_eap_sim_users_calls_are_barred:
       
   394         case core_connect_eap_aka_users_calls_are_barred:
       
   395             return KErrWlanAccessBarred;
       
   396         case core_connect_eap_ttls_failure:
       
   397             return KErrWlanEapTtlsFailed;
       
   398         case core_connect_eap_aka_failure:
       
   399             return KErrWlanEapAkaFailed;
       
   400         case core_connect_eap_peap_failure:
       
   401             return KErrWlanEapPeapFailed;
       
   402         case core_connect_eap_mschapv2_failure:
       
   403             return KErrWlanEapMsChapv2;
       
   404         case core_connect_eap_mschapv2_restricted_logon_hours:
       
   405             return KErrWlanRestrictedLogonHours;
       
   406         case core_connect_eap_mschapv2_account_disabled:
       
   407             return KErrWlanAccountDisabled;
       
   408         case core_connect_eap_mschapv2_no_dialin_permission:
       
   409             return KErrWlanNoDialinPermissions;
       
   410         case core_connect_eap_mschapv2_password_expired:
       
   411             return KErrWlanPasswordExpired;
       
   412         case core_connect_eap_fast_tunnel_compromise_error:
       
   413             return KErrWlanEapFastTunnelCompromiseError;
       
   414         case core_connect_eap_fast_unexpected_tlv_exhanged:
       
   415             return KErrWlanEapFastUnexpextedTlvExhanged;
       
   416         case core_connect_eap_fast_no_pac_nor_certs_to_authenticate_with_provision_disabled:
       
   417             return KErrWlanEapFastNoPacNorCertsToAuthenticateWithProvDisabled;
       
   418         case core_connect_eap_fast_no_matching_pac_for_aid:
       
   419             return KErrWlanEapFastNoMatchingPacForAid;
       
   420         case core_connect_eap_fast_authentication_failed:
       
   421             return KErrWlanEapFastAuthFailed;
       
   422         case core_connect_eap_fast_pac_store_corrupted:
       
   423             return KErrWlanEapFastPacStoreCorrupted;
       
   424         case core_connect_wapi_ie_required_but_ap_has_none:
       
   425         case core_connect_wapi_certificate_required_but_ap_has_no_support:
       
   426         case core_connect_wapi_psk_required_but_ap_has_no_support:
       
   427         case core_connect_wapi_ap_has_no_valid_ciphers:
       
   428             return KErrWlanNetworkNotFound;
       
   429         case core_connect_wapi_psk_failure:
       
   430             return KErrWlanInternalError;
       
   431         case core_connect_wapi_certificate_failure:
       
   432             return KErrWlanInternalError;
       
   433         default:
       
   434             return KErrUnknown;
       
   435         }
       
   436     }
       
   437 
       
   438 // ---------------------------------------------------------
       
   439 // TWlanConversionUtil::ConvertRegion()
       
   440 // ---------------------------------------------------------
       
   441 //
       
   442 core_wlan_region_e TWlanConversionUtil::ConvertRegion(
       
   443     const TWlanRegion& aAmRegion )
       
   444     {
       
   445     switch( aAmRegion )
       
   446         {
       
   447         case EETSI:
       
   448             return core_wlan_region_etsi;
       
   449         default:
       
   450             return core_wlan_region_fcc;
       
   451         }
       
   452     }
       
   453 
       
   454 // ---------------------------------------------------------
       
   455 // TWlanConversionUtil::ConvertRegion()
       
   456 // ---------------------------------------------------------
       
   457 //
       
   458 TWlanRegion TWlanConversionUtil::ConvertRegion(
       
   459     const core_wlan_region_e& aCoreRegion )
       
   460     {
       
   461     switch( aCoreRegion )
       
   462         {
       
   463         case core_wlan_region_etsi:
       
   464             return EETSI;
       
   465         default:
       
   466             return EFCC;
       
   467         }
       
   468     }
       
   469 
       
   470 // ---------------------------------------------------------
       
   471 // TWlanConversionUtil::ConvertMacAddress()
       
   472 // ---------------------------------------------------------
       
   473 //
       
   474 void TWlanConversionUtil::ConvertMacAddress(
       
   475     TMacAddress& aAmMacAddress,
       
   476     const core_mac_address_s& aCoreMacAddress )
       
   477     {
       
   478     // Function assumes both mac address types have the same length
       
   479     Mem::Copy( 
       
   480         aAmMacAddress.iMacAddress, 
       
   481         aCoreMacAddress.addr, 
       
   482         MAC_ADDR_LEN );
       
   483     }
       
   484 
       
   485 // ---------------------------------------------------------
       
   486 // TWlanConversionUtil::ConvertMacAddress()
       
   487 // ---------------------------------------------------------
       
   488 //
       
   489 void TWlanConversionUtil::ConvertMacAddress(
       
   490     core_mac_address_s& aCoreAddress,
       
   491     const TMacAddress& aAmMacAddress )
       
   492     {
       
   493     // Function assumes both mac address types have the same length
       
   494     Mem::Copy( 
       
   495         aCoreAddress.addr, 
       
   496         aAmMacAddress.iMacAddress, 
       
   497         MAC_ADDR_LEN );
       
   498     }
       
   499 
       
   500 // ---------------------------------------------------------
       
   501 // TWlanConversionUtil::ConvertMacAddress()
       
   502 // ---------------------------------------------------------
       
   503 //
       
   504 void TWlanConversionUtil::ConvertMacAddress(
       
   505     core_mac_address_s& aCoreAddress,
       
   506     const TMacAddr& aAmMacAddress )
       
   507     {
       
   508     // Function assumes both mac address types have the same length
       
   509     Mem::Copy( 
       
   510         aCoreAddress.addr, 
       
   511         aAmMacAddress.iMacAddress, 
       
   512         MAC_ADDR_LEN );
       
   513     }
       
   514 
       
   515 // ---------------------------------------------------------
       
   516 // TWlanConversionUtil::ConvertMacAddress()
       
   517 // ---------------------------------------------------------
       
   518 //
       
   519 void TWlanConversionUtil::ConvertMacAddress(
       
   520     TMacAddress& aCoreAddress,
       
   521     const TMacAddr& aAmMacAddress )
       
   522     {
       
   523     // Function assumes both mac address types have the same length
       
   524     Mem::Copy( 
       
   525         aCoreAddress.iMacAddress, 
       
   526         aAmMacAddress.iMacAddress, 
       
   527         MAC_ADDR_LEN );
       
   528     }
       
   529 
       
   530 // ---------------------------------------------------------
       
   531 // TWlanConversionUtil::ConvertPowerMode()
       
   532 // ---------------------------------------------------------
       
   533 //
       
   534 TPowerMode TWlanConversionUtil::ConvertPowerMode(
       
   535     const core_power_mode_e& aCorePowerMode )
       
   536     {
       
   537     switch( aCorePowerMode )
       
   538         {
       
   539         case core_power_mode_cam:
       
   540             return EPowerModeCam;
       
   541         default:
       
   542             return EPowerModePs;
       
   543         }
       
   544     }
       
   545 
       
   546 // ---------------------------------------------------------
       
   547 // TWlanConversionUtil::ConvertWakeUpInterval()
       
   548 // ---------------------------------------------------------
       
   549 //
       
   550 void TWlanConversionUtil::ConvertWakeUpInterval(
       
   551     TWlanWakeUpInterval& aAmWakeUpMode,
       
   552     TUint8& aAmWakeUpInterval,
       
   553     const core_power_save_wakeup_mode_e& aCoreWakeUpMode,
       
   554     const u8_t& aCoreWakeUpInterval )
       
   555     {
       
   556     switch( aCoreWakeUpMode )
       
   557         {
       
   558         case core_power_save_wakeup_mode_dtim:
       
   559             {
       
   560             if( aCoreWakeUpInterval == 1 )
       
   561                 {
       
   562                 aAmWakeUpMode = EWakeUpIntervalAllDtims;
       
   563                 aAmWakeUpInterval = 0;
       
   564                 }
       
   565             else
       
   566                 {
       
   567                 aAmWakeUpMode = EWakeUpIntervalEveryNthDtim;
       
   568                 aAmWakeUpInterval = aCoreWakeUpInterval;
       
   569                 }
       
   570             break;
       
   571             }       
       
   572         default:
       
   573             {
       
   574             if( aCoreWakeUpInterval == 1 )
       
   575                 {
       
   576                 aAmWakeUpMode = EWakeUpIntervalAllBeacons;
       
   577                 aAmWakeUpInterval = 0;
       
   578                 }
       
   579             else
       
   580                 {
       
   581                 aAmWakeUpMode = EWakeUpIntervalEveryNthBeacon;
       
   582                 aAmWakeUpInterval = aCoreWakeUpInterval;
       
   583                 }
       
   584             break;
       
   585             }
       
   586         }
       
   587     }
       
   588 
       
   589 // ---------------------------------------------------------
       
   590 // TWlanConversionUtil::ConvertIndication()
       
   591 // ---------------------------------------------------------
       
   592 //
       
   593 core_am_indication_e TWlanConversionUtil::ConvertIndication(
       
   594     const TIndication& aAmIndication )
       
   595     {
       
   596     switch( aAmIndication )
       
   597         {
       
   598         case EMediaDisconnect:        
       
   599             return core_am_indication_wlan_media_disconnect;
       
   600         case EOsPowerStandby:
       
   601             return core_am_indication_os_power_standby;
       
   602         case EHWFailed:
       
   603             return core_am_indication_wlan_hw_failed;
       
   604         case EConsecutiveBeaconsLost:
       
   605             return core_am_indication_wlan_beacon_lost;
       
   606         case EConsecutiveTxFailures:
       
   607             return core_am_indication_wlan_tx_fail;
       
   608         case EConsecutivePwrModeSetFailures:
       
   609             return core_am_indication_wlan_power_mode_failure;
       
   610         case EBSSRegained:
       
   611             return core_am_indication_wlan_bss_regained;
       
   612         case EWepDecryptFailure:
       
   613             return core_am_indication_wlan_wep_decrypt_failure;
       
   614         case EPairwiseKeyMicFailure:
       
   615             return core_am_indication_wlan_pairwise_key_mic_failure;
       
   616         case EGroupKeyMicFailure:
       
   617             return core_am_indication_wlan_group_key_mic_failure;
       
   618         case ERcpiTrigger:
       
   619             return core_am_indication_wlan_rcpi_trigger;
       
   620         case EScanCompleted:
       
   621             return core_am_indication_wlan_scan_complete;
       
   622         case ESignalLossPrediction:
       
   623             return core_am_indication_wlan_signal_loss_prediction;
       
   624         case EApTestOpportunity:
       
   625             return core_am_indication_wlan_power_save_test_trigger;
       
   626         case EVoiceCallOn:
       
   627             return core_am_indication_voice_call_on;
       
   628         case EVoiceCallOff:
       
   629             return core_am_indication_voice_call_off;
       
   630         case EPsModeError:
       
   631             return core_am_indication_wlan_ap_ps_mode_error;
       
   632         default:
       
   633             return core_am_indication_wlan_hw_failed;
       
   634         }
       
   635     }
       
   636 
       
   637 // ---------------------------------------------------------
       
   638 // TWlanConversionUtil::ConvertDeviceSettings()
       
   639 // ---------------------------------------------------------
       
   640 //
       
   641 void TWlanConversionUtil::ConvertDeviceSettings(
       
   642     core_device_settings_s& aCoreSettings,
       
   643     const CWlanDeviceSettings::SWlanDeviceSettings& aAmSettings )
       
   644     {
       
   645     aCoreSettings.beacon = static_cast<u32_t>( aAmSettings.beacon );
       
   646     aCoreSettings.long_retry = static_cast<u32_t>( aAmSettings.longRetry );
       
   647     aCoreSettings.short_retry = static_cast<u32_t>( aAmSettings.shortRetry );
       
   648     aCoreSettings.rts = static_cast<u32_t>( aAmSettings.rts );
       
   649     aCoreSettings.tx_power_level = TWlanConversionUtil::ConvertMilliwattsToDecibel( aAmSettings.txPowerLevel );    
       
   650 	aCoreSettings.scan_rate = static_cast<u32_t>( aAmSettings.scanRate ); // TRate -> u32_t
       
   651 	aCoreSettings.rcpi_trigger = static_cast<u32_t>( aAmSettings.rcpiTrigger );
       
   652 	aCoreSettings.active_scan_min_ch_time = static_cast<u32_t>( aAmSettings.minActiveChannelTime );
       
   653 	aCoreSettings.active_scan_max_ch_time = static_cast<u32_t>( aAmSettings.maxActiveChannelTime );
       
   654 	aCoreSettings.passive_scan_min_ch_time = static_cast<u32_t>( aAmSettings.minPassiveChannelTime );
       
   655 	aCoreSettings.passive_scan_max_ch_time = static_cast<u32_t>( aAmSettings.maxPassiveChannelTime );
       
   656     aCoreSettings.max_tx_msdu_life_time = static_cast<u32_t>( aAmSettings.maxTxMSDULifeTime );
       
   657     aCoreSettings.unload_driver_timer = static_cast<u32_t>( aAmSettings.unloadDriverTimer );
       
   658     aCoreSettings.roam_timer = static_cast<u32_t>( aAmSettings.roamTimer );
       
   659     aCoreSettings.rcpi_difference = static_cast<u32_t>( aAmSettings.rcpiDifference );
       
   660     aCoreSettings.max_tries_to_find_nw = static_cast<u32_t>( aAmSettings.maxTriesToFindNw );
       
   661     aCoreSettings.delay_between_find_nw = static_cast<u32_t>( aAmSettings.delayBetweenFindNw );
       
   662     aCoreSettings.power_save_enabled = static_cast<u32_t>( aAmSettings.powerMode );
       
   663     aCoreSettings.allow_radio_measurements = static_cast<bool_t>( aAmSettings.allowRadioMeasurements );    
       
   664     aCoreSettings.max_ap_association_failure_count = static_cast<u32_t>( aAmSettings.maxApFailureCount );
       
   665     aCoreSettings.max_ap_authentication_failure_count = static_cast<u32_t>( aAmSettings.maxApAuthFailureCount );
       
   666     aCoreSettings.long_beacon_find_count = static_cast<u32_t>( aAmSettings.longBeaconFindCount );
       
   667     aCoreSettings.qos_null_frame_interval = static_cast<u32_t>( aAmSettings.qosNullFrameInterval );
       
   668     aCoreSettings.qos_null_frame_exit_timeout = static_cast<u32_t>( aAmSettings.qosNullFrameTimeout );
       
   669     aCoreSettings.qos_null_frame_entry_timeout = static_cast<u32_t>( aAmSettings.qosNullFrameEntryTimeout );
       
   670     aCoreSettings.qos_null_frame_entry_tx_count = static_cast<u32_t>( aAmSettings.qosNullFrameEntryTxCount );
       
   671     aCoreSettings.keep_alive_interval = static_cast<u32_t>( aAmSettings.keepAliveInterval );
       
   672     aCoreSettings.scan_stop_rcpi_threshold = static_cast<u32_t>( aAmSettings.scanStopRcpiThreshold );
       
   673     aCoreSettings.iap_availability_rcpi_threshold = static_cast<u32_t>( aAmSettings.minRcpiForIapAvailability );
       
   674     aCoreSettings.max_ap_deauthentication_count = static_cast<u32_t>( aAmSettings.maxApDeauthenticationCount );
       
   675     aCoreSettings.ap_deauthentication_timeout = static_cast<u32_t>( aAmSettings.apDeauthenticationTimeout );    
       
   676     aCoreSettings.sp_rcpi_target = static_cast<u32_t>( aAmSettings.spRcpiTarget );
       
   677     aCoreSettings.sp_time_target = static_cast<u32_t>( aAmSettings.spTimeTarget );
       
   678     aCoreSettings.sp_min_indication_interval = static_cast<u32_t>( aAmSettings.spMinIndicationInterval );
       
   679     aCoreSettings.scan_list_expiration_time = static_cast<u32_t>( aAmSettings.scanListExpirationTime );
       
   680     aCoreSettings.rcpi_roam_min_interval = static_cast<u32_t>( aAmSettings.rcpiRoamMinInterval );
       
   681     aCoreSettings.rcpi_roam_max_interval = static_cast<u32_t>( aAmSettings.rcpiRoamMaxInterval );
       
   682     aCoreSettings.rcpi_roam_attempts_per_interval = static_cast<u32_t>( aAmSettings.rcpiRoamAttemptsPerInterval );
       
   683     aCoreSettings.rcpi_roam_next_interval_factor = static_cast<u32_t>( aAmSettings.rcpiRoamNextIntervalFactor );
       
   684     aCoreSettings.rcpi_roam_next_interval_addition = static_cast<u32_t>( aAmSettings.rcpiRoamNextIntervalAddition );    
       
   685     aCoreSettings.bss_lost_roam_min_interval = static_cast<u32_t>( aAmSettings.bssLostRoamMinInterval );
       
   686     aCoreSettings.bss_lost_roam_max_interval = static_cast<u32_t>( aAmSettings.bssLostRoamMaxInterval );
       
   687     aCoreSettings.bss_lost_roam_attempts_per_interval = static_cast<u32_t>( aAmSettings.bssLostRoamAttemptsPerInterval );
       
   688     aCoreSettings.bss_lost_roam_next_interval_factor = static_cast<u32_t>( aAmSettings.bssLostRoamNextIntervalFactor );
       
   689     aCoreSettings.bss_lost_roam_next_interval_addition = static_cast<u32_t>( aAmSettings.bssLostRoamNextIntervalAddition );
       
   690     aCoreSettings.bss_lost_roam_max_tries_to_find_nw = static_cast<u32_t>( aAmSettings.bssLostRoamMaxTriesToFindNw );        
       
   691     aCoreSettings.max_dtim_skip_interval = static_cast<u32_t>( aAmSettings.maxDtimSkipInterval );
       
   692     aCoreSettings.ps_active_to_light_timeout = static_cast<u32_t>( aAmSettings.psActiveToLightTimeout );
       
   693     aCoreSettings.ps_active_to_light_threshold = static_cast<u32_t>( aAmSettings.psActiveToLightThreshold );
       
   694     aCoreSettings.ps_light_to_active_timeout = static_cast<u32_t>( aAmSettings.psLightToActiveTimeout );
       
   695     aCoreSettings.ps_light_to_active_threshold = static_cast<u32_t>( aAmSettings.psLightToActiveThreshold );
       
   696     aCoreSettings.ps_light_to_deep_timeout = static_cast<u32_t>( aAmSettings.psLightToDeepTimeout );
       
   697     aCoreSettings.ps_light_to_deep_threshold = static_cast<u32_t>( aAmSettings.psLightToDeepThreshold );
       
   698     aCoreSettings.ps_uapsd_rx_frame_length = static_cast<u32_t>( aAmSettings.psUapsdRxThreshold );
       
   699     aCoreSettings.rrm_min_measurement_interval = static_cast<u32_t>( aAmSettings.rrmMinMeasurementInterval );
       
   700     }
       
   701 
       
   702 // ---------------------------------------------------------
       
   703 // TWlanConversionUtil::ConvertIapSettings()
       
   704 // ---------------------------------------------------------
       
   705 //
       
   706 void TWlanConversionUtil::ConvertIapSettings(
       
   707     core_iap_data_s& aCoreSettings,
       
   708     const SWLANSettings& aAmSettings,
       
   709     const TBool aDhcpInUse,
       
   710     const TWLMOverrideSettings& aOverrideSettings )
       
   711     {
       
   712     Mem::FillZ( &aCoreSettings, sizeof( aCoreSettings ) );
       
   713 
       
   714     aCoreSettings.id = aAmSettings.ServiceID; // LanService table row-id
       
   715 
       
   716     // Handle
       
   717     // Connection mode
       
   718     if ( aAmSettings.ConnectionMode == Adhoc ||
       
   719          aOverrideSettings.settingsMask & EOverrideIbssMask )
       
   720         {
       
   721         aCoreSettings.op_mode = core_operating_mode_ibss;
       
   722         }
       
   723     else
       
   724         {
       
   725         aCoreSettings.op_mode = core_operating_mode_infrastructure;
       
   726         }
       
   727     
       
   728     // Handle
       
   729     // SSID
       
   730     if( aOverrideSettings.settingsMask & EOverrideSsidMask )
       
   731         {
       
   732         Mem::Copy( 
       
   733             aCoreSettings.ssid.ssid,
       
   734             aOverrideSettings.ssid.ssid, 
       
   735             aOverrideSettings.ssid.ssidLength );
       
   736         aCoreSettings.ssid.length = aOverrideSettings.ssid.ssidLength;
       
   737         }
       
   738     else
       
   739         {
       
   740         TBuf8<MAX_SSID_LEN> buf8;
       
   741         buf8.Copy( aAmSettings.SSID );
       
   742         Mem::Copy( 
       
   743             aCoreSettings.ssid.ssid,
       
   744             buf8.Ptr(),
       
   745             aAmSettings.SSID.Length() );
       
   746         aCoreSettings.ssid.length = aAmSettings.SSID.Length();        
       
   747         }
       
   748 
       
   749     // Handle
       
   750     // ScanSSID / is_hidden
       
   751     if( aAmSettings.ScanSSID )
       
   752         {
       
   753         aCoreSettings.is_hidden = true_t;
       
   754         }
       
   755     else
       
   756         {
       
   757         aCoreSettings.is_hidden = false_t;
       
   758         }
       
   759     
       
   760     // Handle
       
   761     // Security mode
       
   762     switch( aAmSettings.SecurityMode )
       
   763         {
       
   764         case AllowUnsecure:
       
   765             aCoreSettings.security_mode = core_security_mode_allow_unsecure;
       
   766             break;
       
   767         case Wep:
       
   768             aCoreSettings.security_mode = core_security_mode_wep;
       
   769             break;
       
   770         case Wlan8021x:
       
   771             aCoreSettings.security_mode = core_security_mode_802dot1x;
       
   772             break;
       
   773         case Wpa:
       
   774             aCoreSettings.security_mode = core_security_mode_wpa;
       
   775             break;            
       
   776         case Wpa2Only:
       
   777             aCoreSettings.security_mode = core_security_mode_wpa2only;
       
   778             break;
       
   779         case Wapi:
       
   780             aCoreSettings.security_mode = core_security_mode_wapi;
       
   781             break;            
       
   782         default:
       
   783             aCoreSettings.security_mode = core_security_mode_allow_unsecure;
       
   784         }
       
   785 
       
   786     // Handle
       
   787     // WEP Keys
       
   788     if( aOverrideSettings.settingsMask & EOverrideWepMask )
       
   789         {
       
   790         aCoreSettings.wep_key1.key_index = aOverrideSettings.wep.KeyIndex;
       
   791         aCoreSettings.wep_key1.key_length = aOverrideSettings.wep.KeyLength;
       
   792         Mem::Copy(
       
   793             aCoreSettings.wep_key1.key_data, 
       
   794             aOverrideSettings.wep.KeyMaterial, 
       
   795             MAX_WEP_KEY_LENGTH );
       
   796         aCoreSettings.default_wep_key = aOverrideSettings.wep.KeyIndex;
       
   797         aCoreSettings.security_mode = core_security_mode_wep;        
       
   798 
       
   799         aCoreSettings.wep_key2.key_length = 0;
       
   800         aCoreSettings.wep_key3.key_length = 0;
       
   801         aCoreSettings.wep_key4.key_length = 0;
       
   802         }
       
   803     else
       
   804         {
       
   805         aCoreSettings.wep_key1.key_index = aAmSettings.WepKey1.KeyIndex;
       
   806         aCoreSettings.wep_key1.key_length = aAmSettings.WepKey1.KeyLength;
       
   807         Mem::Copy( 
       
   808             aCoreSettings.wep_key1.key_data, 
       
   809             aAmSettings.WepKey1.KeyMaterial, 
       
   810             MAX_WEP_KEY_LENGTH );
       
   811 
       
   812         aCoreSettings.wep_key2.key_index = aAmSettings.WepKey2.KeyIndex;
       
   813         aCoreSettings.wep_key2.key_length = aAmSettings.WepKey2.KeyLength;
       
   814         Mem::Copy( 
       
   815             aCoreSettings.wep_key2.key_data, 
       
   816             aAmSettings.WepKey2.KeyMaterial, 
       
   817             MAX_WEP_KEY_LENGTH );
       
   818 
       
   819         aCoreSettings.wep_key3.key_index = aAmSettings.WepKey3.KeyIndex;
       
   820         aCoreSettings.wep_key3.key_length = aAmSettings.WepKey3.KeyLength;
       
   821         Mem::Copy( 
       
   822             aCoreSettings.wep_key3.key_data, 
       
   823             aAmSettings.WepKey3.KeyMaterial, 
       
   824             MAX_WEP_KEY_LENGTH );
       
   825 
       
   826         aCoreSettings.wep_key4.key_index = aAmSettings.WepKey4.KeyIndex;
       
   827         aCoreSettings.wep_key4.key_length = aAmSettings.WepKey4.KeyLength;
       
   828         Mem::Copy( 
       
   829             aCoreSettings.wep_key4.key_data, 
       
   830             aAmSettings.WepKey4.KeyMaterial, 
       
   831             MAX_WEP_KEY_LENGTH );
       
   832 
       
   833         aCoreSettings.default_wep_key = aAmSettings.WepIndex;        
       
   834         }
       
   835 
       
   836     // Handle
       
   837     // Authentication mode
       
   838     switch( aAmSettings.AuthenticationMode )
       
   839         {
       
   840         case EWepAuthModeShared:
       
   841             aCoreSettings.authentication_mode = core_authentication_mode_shared;
       
   842             break;
       
   843         case EWepAuthModeOpen:
       
   844             /** Falls through on purpose. */
       
   845         default:
       
   846             aCoreSettings.authentication_mode = core_authentication_mode_open;
       
   847             break;
       
   848         }
       
   849 
       
   850     // Handle
       
   851     // Preshared key
       
   852     aCoreSettings.wpa_preshared_key_in_use = aAmSettings.EnableWpaPsk;
       
   853     if ( aAmSettings.EnableWpaPsk )
       
   854         {
       
   855         Mem::Copy(
       
   856             aCoreSettings.wpa_preshared_key.key_data,
       
   857             aAmSettings.WPAPreSharedKey.Ptr(),
       
   858             aAmSettings.WPAKeyLength );
       
   859         aCoreSettings.wpa_preshared_key.key_length = aAmSettings.WPAKeyLength;
       
   860         }
       
   861 
       
   862     // Handle
       
   863     // EOverrideWpaPskMask
       
   864     if ( aOverrideSettings.settingsMask & EOverrideWpaPskMask )
       
   865         {
       
   866         Mem::Copy(
       
   867             aCoreSettings.wpa_preshared_key.key_data,
       
   868             aOverrideSettings.wpaPsk.KeyMaterial,
       
   869             aOverrideSettings.wpaPsk.KeyLength );
       
   870         aCoreSettings.wpa_preshared_key.key_length = aOverrideSettings.wpaPsk.KeyLength;
       
   871         aCoreSettings.security_mode = core_security_mode_wpa;
       
   872         aCoreSettings.wpa_preshared_key_in_use = true_t;
       
   873         aCoreSettings.is_wpa_overriden = true_t;
       
   874         }
       
   875 
       
   876     // Handle
       
   877     // EOverrideWpaMask
       
   878     if ( aOverrideSettings.settingsMask & EOverrideWpaMask )
       
   879         {
       
   880         aCoreSettings.wpa_preshared_key.key_length = 0;
       
   881         aCoreSettings.security_mode = core_security_mode_wpa;
       
   882         aCoreSettings.wpa_preshared_key_in_use = false_t;
       
   883         aCoreSettings.is_wpa_overriden = true_t;
       
   884         }
       
   885 
       
   886     // Handle
       
   887     // ChannelId (Adhoc feature)
       
   888     aCoreSettings.used_adhoc_channel = aAmSettings.ChannelID;
       
   889 
       
   890     // Handle DHCP vs static IP
       
   891     aCoreSettings.is_dynamic_ip_addr = aDhcpInUse;    
       
   892 
       
   893     // Roaming is always allowed.
       
   894     aCoreSettings.is_roaming_allowed = true_t;
       
   895     }
       
   896 
       
   897 // ---------------------------------------------------------
       
   898 // TWlanConversionUtil::ConvertIapSettings()
       
   899 // ---------------------------------------------------------
       
   900 //
       
   901 void TWlanConversionUtil::ConvertIapSettings(
       
   902     core_iap_data_s& aCoreSettings,
       
   903     const TWlanLimitedIapData& aAmSettings )
       
   904     {
       
   905     Mem::FillZ( &aCoreSettings, sizeof( aCoreSettings ) );
       
   906 
       
   907     aCoreSettings.id = aAmSettings.iapId;
       
   908 
       
   909     // Handle
       
   910     // Connection mode
       
   911     if ( aAmSettings.networkType == Adhoc )
       
   912         {
       
   913         aCoreSettings.op_mode = core_operating_mode_ibss;
       
   914         }
       
   915     else
       
   916         {
       
   917         aCoreSettings.op_mode = core_operating_mode_infrastructure;
       
   918         }
       
   919     
       
   920     // Handle
       
   921     // SSID
       
   922     ConvertSSID( aCoreSettings.ssid, aAmSettings.ssid );
       
   923 
       
   924     // Handle
       
   925     // ScanSSID / is_hidden
       
   926     if( aAmSettings.isHidden )
       
   927         {
       
   928         aCoreSettings.is_hidden = true_t;
       
   929         }
       
   930     else
       
   931         {
       
   932         aCoreSettings.is_hidden = false_t;
       
   933         }
       
   934     
       
   935     // Handle
       
   936     // Security mode
       
   937     switch( aAmSettings.securityMode )
       
   938         {
       
   939         case AllowUnsecure:
       
   940             aCoreSettings.security_mode = core_security_mode_allow_unsecure;
       
   941             break;
       
   942         case Wep:
       
   943             aCoreSettings.security_mode = core_security_mode_wep;
       
   944             break;
       
   945         case Wlan8021x:
       
   946             aCoreSettings.security_mode = core_security_mode_802dot1x;
       
   947             break;
       
   948         case Wpa:
       
   949             aCoreSettings.security_mode = core_security_mode_wpa;
       
   950             break;            
       
   951         case Wpa2Only:
       
   952             aCoreSettings.security_mode = core_security_mode_wpa2only;
       
   953             break;
       
   954         case Wapi:
       
   955             aCoreSettings.security_mode = core_security_mode_wapi;
       
   956             break;
       
   957         default:
       
   958             aCoreSettings.security_mode = core_security_mode_allow_unsecure;
       
   959         }
       
   960 
       
   961     // Handle
       
   962     // Preshared key
       
   963     aCoreSettings.wpa_preshared_key_in_use = aAmSettings.isPskEnabled;
       
   964     }
       
   965 
       
   966 // ---------------------------------------------------------
       
   967 // TWlanConversionUtil::ConvertErrorCode()
       
   968 // ---------------------------------------------------------
       
   969 //
       
   970 TInt TWlanConversionUtil::ConvertErrorCode( const core_error_e aError )
       
   971     {
       
   972     switch ( aError )
       
   973         {
       
   974         case core_error_ok:
       
   975             return KErrNone;
       
   976         case core_error_not_found:
       
   977             return KErrNotFound;
       
   978         case core_error_no_memory:
       
   979             return KErrNoMemory;
       
   980         case core_error_illegal_argument:
       
   981             return KErrArgument;
       
   982         case core_error_not_supported:
       
   983             return KErrNotSupported;
       
   984         case core_error_in_use:
       
   985             return KErrInUse;
       
   986         case core_error_timeout:
       
   987             return KErrTimedOut;
       
   988         case core_error_connection_already_active:
       
   989             return KErrWlanConnAlreadyActive;
       
   990         case core_error_wlan_disabled:
       
   991             return KErrNotReady;
       
   992         case core_error_cancel:
       
   993             return KErrCancel;
       
   994         case core_error_already_exists:
       
   995             return KErrAlreadyExists;
       
   996         case core_error_illegal_rate:
       
   997         case core_error_failed:
       
   998         case core_error_drivers_not_loaded:
       
   999         case core_error_in_power_save:
       
  1000         case core_error_challenge_failure:
       
  1001         case core_error_not_connected:
       
  1002         case core_error_general:
       
  1003         default:
       
  1004             return KErrGeneral;
       
  1005         }
       
  1006     }
       
  1007 
       
  1008 // ---------------------------------------------------------
       
  1009 // TWlanConversionUtil::ConvertErrorCode()
       
  1010 // ---------------------------------------------------------
       
  1011 //
       
  1012 core_error_e TWlanConversionUtil::ConvertErrorCode( const TInt aError )
       
  1013     {
       
  1014     switch ( aError )
       
  1015         {
       
  1016         case KErrNone:
       
  1017             return core_error_ok;
       
  1018         case KErrNotFound:
       
  1019             return core_error_not_found;
       
  1020         case KErrNoMemory:
       
  1021             return core_error_no_memory;
       
  1022         case KErrNotSupported:
       
  1023             return core_error_not_supported;
       
  1024         case KErrArgument:
       
  1025             return core_error_illegal_argument;
       
  1026         case KErrInUse:
       
  1027             return core_error_in_use;
       
  1028         case KErrTimedOut:
       
  1029             return core_error_timeout;
       
  1030         case KErrCancel:
       
  1031             return core_error_cancel;
       
  1032         case KErrAlreadyExists:
       
  1033             return core_error_already_exists;
       
  1034         default:
       
  1035             return core_error_general;    
       
  1036         }
       
  1037     }
       
  1038 
       
  1039 // ---------------------------------------------------------
       
  1040 // TWlanConversionUtil::ConvertMilliwattsToDecibel()
       
  1041 // ---------------------------------------------------------
       
  1042 //
       
  1043 u32_t TWlanConversionUtil::ConvertMilliwattsToDecibel(
       
  1044     const TUint32 aValue )
       
  1045     {
       
  1046     TReal realResult( 0 );
       
  1047     TInt32 intResult( 0 );
       
  1048     TUint32 retValue( 0 );
       
  1049 
       
  1050     DEBUG1( "TWlanConversionUtil::ConvertMilliwattsToDecibel() - aValue = %u",
       
  1051         aValue );
       
  1052     
       
  1053     if ( ( Math::Log( realResult, aValue ) == KErrNone ) &&
       
  1054          ( Math::Int( intResult, realResult * 10 ) == KErrNone ) )
       
  1055         {
       
  1056         if ( intResult )
       
  1057             {
       
  1058             retValue = intResult;
       
  1059             }        
       
  1060         }
       
  1061     
       
  1062     DEBUG1( "TWlanConversionUtil::ConvertMilliwattsToDecibel() - retValue = %u",
       
  1063         retValue );
       
  1064     return static_cast<u32_t>( retValue );
       
  1065     }
       
  1066 
       
  1067 // ---------------------------------------------------------
       
  1068 // TWlanConversionUtil::ConvertDecibelToMilliWatts()
       
  1069 // ---------------------------------------------------------
       
  1070 //
       
  1071 TUint32 TWlanConversionUtil::ConvertDecibelToMilliWatts(
       
  1072     const u32_t aValue )
       
  1073     {
       
  1074     TReal realResult( 0 );
       
  1075     TReal realRound( 0 );
       
  1076     const TReal realValue( 10 );
       
  1077     const TReal realPower( static_cast<TUint32>( aValue ) );
       
  1078     TInt32 intResult( 0 );
       
  1079     TInt32 intDecimalPlaces( 0 );
       
  1080     TUint32 retValue( 1 );
       
  1081 
       
  1082     DEBUG1( "TWlanConversionUtil::ConvertDecibelToMilliWatts() - aValue = %u",
       
  1083         aValue );
       
  1084 
       
  1085     if ( ( Math::Pow( realResult, realValue, realPower / 10 ) == KErrNone ) &&
       
  1086          ( Math::Round( realRound, realResult, intDecimalPlaces ) == KErrNone ) &&
       
  1087          ( Math::Int( intResult, realRound ) == KErrNone ) )
       
  1088         {
       
  1089         if ( intResult )
       
  1090             {
       
  1091             retValue = intResult;
       
  1092             }
       
  1093         }
       
  1094 
       
  1095     DEBUG1( "TWlanConversionUtil::ConvertDecibelToMilliWatts() - retValue = %u",
       
  1096         retValue );
       
  1097     return retValue;
       
  1098     }
       
  1099 
       
  1100 // ---------------------------------------------------------
       
  1101 // TWlanConversionUtil::ConvertRcpClass()
       
  1102 // ---------------------------------------------------------
       
  1103 //
       
  1104 TWlanRCPLevel TWlanConversionUtil::ConvertRcpClass(
       
  1105     const core_rcp_class_e aValue )
       
  1106     {
       
  1107     switch( aValue )
       
  1108         {
       
  1109         case core_rcp_weak:
       
  1110             return EWlanRcpWeak;
       
  1111         default:
       
  1112             return EWlanRcpNormal;
       
  1113         }
       
  1114     }
       
  1115 
       
  1116 // ---------------------------------------------------------
       
  1117 // TWlanConversionUtil::ConvertScanChannels()
       
  1118 // ---------------------------------------------------------
       
  1119 //
       
  1120 void TWlanConversionUtil::ConvertScanChannels(
       
  1121     SChannels& aAmChannels,
       
  1122     const core_scan_channels_s& aCoreChannels )
       
  1123     {
       
  1124     aAmChannels.iBand = aCoreChannels.band;
       
  1125     Mem::Copy(
       
  1126         &aAmChannels.iChannels2dot4GHz[0],
       
  1127         &aCoreChannels.channels2dot4ghz[0],
       
  1128         sizeof( aCoreChannels.channels2dot4ghz ) );
       
  1129     Mem::Copy(
       
  1130         &aAmChannels.iChannels4dot9GHz[0],
       
  1131         &aCoreChannels.channels4dot9ghz[0],
       
  1132         sizeof( aCoreChannels.channels4dot9ghz ) );
       
  1133     Mem::Copy(
       
  1134         &aAmChannels.iChannels5GHz[0],
       
  1135         &aCoreChannels.channels5ghz[0],
       
  1136         sizeof( aCoreChannels.channels5ghz ) );                
       
  1137     }
       
  1138 
       
  1139 // ---------------------------------------------------------
       
  1140 // TWlanConversionUtil::ConvertScanChannels()
       
  1141 // ---------------------------------------------------------
       
  1142 //
       
  1143 void TWlanConversionUtil::ConvertScanChannels(            
       
  1144     core_scan_channels_s& aCoreChannels,
       
  1145     RArray<TUint>& aAmChannels )
       
  1146     {
       
  1147     aCoreChannels.band = SCAN_BAND_2DOT4GHZ;
       
  1148     u16_t channels( 0 );
       
  1149     
       
  1150     for ( TInt idx( 0 ); idx < aAmChannels.Count(); ++idx )
       
  1151         {
       
  1152         channels |= static_cast<u16_t>( 1 << ( aAmChannels[idx] - 1 ) );
       
  1153         }
       
  1154 
       
  1155     Mem::Copy(
       
  1156         &aCoreChannels.channels2dot4ghz[0],
       
  1157         reinterpret_cast<u8_t*>( &channels ),
       
  1158         sizeof( channels ) );
       
  1159     }
       
  1160 
       
  1161 // ---------------------------------------------------------
       
  1162 // TWlanConversionUtil::ConvertFrameType()
       
  1163 // ---------------------------------------------------------
       
  1164 //
       
  1165 core_frame_type_e TWlanConversionUtil::ConvertFrameType(
       
  1166     TDataBuffer::TFrameType aFrameType )
       
  1167     {
       
  1168     switch( aFrameType )
       
  1169         {
       
  1170         case TDataBuffer::KEthernetFrame:
       
  1171             {
       
  1172             return core_frame_type_ethernet;
       
  1173             }
       
  1174         case TDataBuffer::KDot11Frame:
       
  1175             {
       
  1176             return core_frame_type_dot11;
       
  1177             }
       
  1178         case TDataBuffer::KEthernetTestFrame:
       
  1179             {
       
  1180             return core_frame_type_test;
       
  1181             }
       
  1182         default:
       
  1183             return core_frame_type_snap;
       
  1184         }
       
  1185     }
       
  1186 
       
  1187 // ---------------------------------------------------------
       
  1188 // TWlanConversionUtil::ConvertFrameType()
       
  1189 // ---------------------------------------------------------
       
  1190 //
       
  1191 TDataBuffer::TFrameType TWlanConversionUtil::ConvertFrameType(
       
  1192     core_frame_type_e aFrameType )
       
  1193     {
       
  1194     switch( aFrameType )
       
  1195         {
       
  1196         case core_frame_type_ethernet:
       
  1197             {
       
  1198             return TDataBuffer::KEthernetFrame;
       
  1199             }
       
  1200         case core_frame_type_dot11:
       
  1201             {
       
  1202             return TDataBuffer::KDot11Frame;
       
  1203             }
       
  1204         case core_frame_type_test:
       
  1205             {
       
  1206             return TDataBuffer::KEthernetTestFrame;
       
  1207             }
       
  1208         default:
       
  1209             return TDataBuffer::KSnapFrame;
       
  1210         }
       
  1211     }
       
  1212     
       
  1213 // ---------------------------------------------------------
       
  1214 // TWlanConversionUtil::ConvertPacketStatistics()
       
  1215 // ---------------------------------------------------------
       
  1216 //
       
  1217 void TWlanConversionUtil::ConvertPacketStatistics(
       
  1218     TWlanPacketStatistics& aAmStatistics,
       
  1219     const core_packet_statistics_s& aCoreStatistics )
       
  1220     {
       
  1221     aAmStatistics.txFrames = aCoreStatistics.tx_frames;
       
  1222     aAmStatistics.rxFrames = aCoreStatistics.rx_frames;
       
  1223     aAmStatistics.txMulticastFrames = aCoreStatistics.tx_multicast_frames;
       
  1224     aAmStatistics.rxMulticastFrames = aCoreStatistics.rx_multicast_frames;
       
  1225     aAmStatistics.fcsErrors = aCoreStatistics.fcs_errors;
       
  1226     aAmStatistics.txRetries = aCoreStatistics.tx_retries;
       
  1227     aAmStatistics.txErrors = aCoreStatistics.tx_errors;
       
  1228     }
       
  1229 
       
  1230 // ---------------------------------------------------------
       
  1231 // TWlanConversionUtil::ConvertUapsdSettings()
       
  1232 // ---------------------------------------------------------
       
  1233 //
       
  1234 void TWlanConversionUtil::ConvertUapsdSettings(
       
  1235     core_uapsd_settings_s& aCoreSettings,
       
  1236     const TWlanUapsdSettings& aAmSettings )
       
  1237     {
       
  1238     switch( aAmSettings.maxServicePeriodLength )
       
  1239         {
       
  1240         case EWlanMaxServicePeriodLengthTwo:
       
  1241             aCoreSettings.max_service_period = core_max_service_period_length_two;
       
  1242             break;
       
  1243         case EWlanMaxServicePeriodLengthFour:
       
  1244             aCoreSettings.max_service_period = core_max_service_period_length_four;
       
  1245             break;
       
  1246         case EWlanMaxServicePeriodLengthSix:
       
  1247             aCoreSettings.max_service_period = core_max_service_period_length_six;
       
  1248             break;
       
  1249         case EWlanMaxServicePeriodLengthAll:
       
  1250             /** Falls through on purpose. */
       
  1251         default:
       
  1252             aCoreSettings.max_service_period = core_max_service_period_length_all;
       
  1253             break;
       
  1254         }
       
  1255 
       
  1256     aCoreSettings.uapsd_enabled_for_voice = aAmSettings.uapsdForVoice;
       
  1257     aCoreSettings.uapsd_enabled_for_video = aAmSettings.uapsdForVideo;
       
  1258     aCoreSettings.uapsd_enabled_for_best_effort = aAmSettings.uapsdForBestEffort;
       
  1259     aCoreSettings.uapsd_enabled_for_background = aAmSettings.uapsdForBackground;
       
  1260     }
       
  1261 
       
  1262 // ---------------------------------------------------------
       
  1263 // TWlanConversionUtil::ConvertUapsdSettings()
       
  1264 // ---------------------------------------------------------
       
  1265 //
       
  1266 void TWlanConversionUtil::ConvertUapsdSettings(
       
  1267     TWlanUapsdSettings& aAmSettings,
       
  1268     const core_uapsd_settings_s& aCoreSettings )
       
  1269     {
       
  1270     switch( aCoreSettings.max_service_period )
       
  1271         {
       
  1272         case core_max_service_period_length_two:
       
  1273             aAmSettings.maxServicePeriodLength = EWlanMaxServicePeriodLengthTwo;
       
  1274             break;
       
  1275         case core_max_service_period_length_four:
       
  1276             aAmSettings.maxServicePeriodLength = EWlanMaxServicePeriodLengthFour;
       
  1277             break;
       
  1278         case core_max_service_period_length_six:
       
  1279             aAmSettings.maxServicePeriodLength = EWlanMaxServicePeriodLengthSix;
       
  1280             break;
       
  1281         case core_max_service_period_length_all:
       
  1282             /** Falls through on purpose. */
       
  1283         default:
       
  1284             aAmSettings.maxServicePeriodLength = EWlanMaxServicePeriodLengthAll;
       
  1285             break;
       
  1286         }    
       
  1287 
       
  1288     aAmSettings.uapsdForVoice = aCoreSettings.uapsd_enabled_for_voice;
       
  1289     aAmSettings.uapsdForVideo = aCoreSettings.uapsd_enabled_for_video;
       
  1290     aAmSettings.uapsdForBestEffort = aCoreSettings.uapsd_enabled_for_best_effort;
       
  1291     aAmSettings.uapsdForBackground = aCoreSettings.uapsd_enabled_for_background;
       
  1292     }
       
  1293 
       
  1294 // ---------------------------------------------------------
       
  1295 // TWlanConversionUtil::ConvertTxRatePolicies()
       
  1296 // ---------------------------------------------------------
       
  1297 //
       
  1298 void TWlanConversionUtil::ConvertTxRatePolicies(
       
  1299     TTxRatePolicy& aAmPolicies,
       
  1300     THtMcsPolicy& aAmMcsPolicies,
       
  1301     TTxAutoRatePolicy& aAmAutoRatePolicies,
       
  1302     const core_tx_rate_policies_s& aCorePolicies )
       
  1303     {
       
  1304     aAmPolicies.numOfPolicyObjects = aCorePolicies.policy_count;
       
  1305     for ( TUint idx( 0 ); idx < aCorePolicies.policy_count; ++idx )
       
  1306         {
       
  1307         aAmPolicies.txRateClass[idx].txPolicy54 = aCorePolicies.policy[idx].tx_policy_54;
       
  1308         aAmPolicies.txRateClass[idx].txPolicy48 = aCorePolicies.policy[idx].tx_policy_48;
       
  1309         aAmPolicies.txRateClass[idx].txPolicy36 = aCorePolicies.policy[idx].tx_policy_36;
       
  1310         aAmPolicies.txRateClass[idx].txPolicy33 = aCorePolicies.policy[idx].tx_policy_33;
       
  1311         aAmPolicies.txRateClass[idx].txPolicy24 = aCorePolicies.policy[idx].tx_policy_24;
       
  1312         aAmPolicies.txRateClass[idx].txPolicy22 = aCorePolicies.policy[idx].tx_policy_22;
       
  1313         aAmPolicies.txRateClass[idx].txPolicy18 = aCorePolicies.policy[idx].tx_policy_18;
       
  1314         aAmPolicies.txRateClass[idx].txPolicy12 = aCorePolicies.policy[idx].tx_policy_12;
       
  1315         aAmPolicies.txRateClass[idx].txPolicy11 = aCorePolicies.policy[idx].tx_policy_11;
       
  1316         aAmPolicies.txRateClass[idx].txPolicy9 = aCorePolicies.policy[idx].tx_policy_9;
       
  1317         aAmPolicies.txRateClass[idx].txPolicy6 = aCorePolicies.policy[idx].tx_policy_6;
       
  1318         aAmPolicies.txRateClass[idx].txPolicy5_5 = aCorePolicies.policy[idx].tx_policy_5p5;
       
  1319         aAmPolicies.txRateClass[idx].txPolicy2 = aCorePolicies.policy[idx].tx_policy_2;
       
  1320         aAmPolicies.txRateClass[idx].txPolicy1 = aCorePolicies.policy[idx].tx_policy_1;
       
  1321         aAmPolicies.txRateClass[idx].shortRetryLimit  = aCorePolicies.policy[idx].short_retry_limit;
       
  1322         aAmPolicies.txRateClass[idx].longRetryLimit = aCorePolicies.policy[idx].long_retry_limit;
       
  1323         aAmPolicies.txRateClass[idx].flags = aCorePolicies.policy[idx].flags;
       
  1324         aAmAutoRatePolicies[idx] = aCorePolicies.policy[idx].tx_auto_rate_policy;
       
  1325         Mem::Copy(
       
  1326             &aAmMcsPolicies[idx][0],
       
  1327             &aCorePolicies.policy[idx].mcs_set[0],
       
  1328             sizeof( THtMcsSet ) );
       
  1329         }
       
  1330     }
       
  1331 
       
  1332 // ---------------------------------------------------------
       
  1333 // TWlanConversionUtil::ConvertTxRatePolicyMappings()
       
  1334 // ---------------------------------------------------------
       
  1335 //
       
  1336 void TWlanConversionUtil::ConvertTxRatePolicyMappings(
       
  1337     TQueue2RateClass& aAmMappings,
       
  1338     const core_tx_rate_policy_mappings_s& aCoreMappings )
       
  1339     {
       
  1340     aAmMappings[ELegacy] = aCoreMappings.policy_for_background;
       
  1341     aAmMappings[EBackGround] = aCoreMappings.policy_for_background;
       
  1342     aAmMappings[EVideo] = aCoreMappings.policy_for_video;
       
  1343     aAmMappings[EVoice] = aCoreMappings.policy_for_voice;
       
  1344     }
       
  1345 
       
  1346 // ---------------------------------------------------------
       
  1347 // TWlanConversionUtil::ConvertTxRatePolicyInitialRates()
       
  1348 // ---------------------------------------------------------
       
  1349 //
       
  1350 void TWlanConversionUtil::ConvertTxRatePolicyInitialRates(
       
  1351     TInitialMaxTxRate4RateClass& aInitialRates,
       
  1352     const core_tx_rate_policies_s& aCorePolicies )
       
  1353     {
       
  1354     Mem::FillZ(
       
  1355         &aInitialRates[0],
       
  1356         KMaxNbrOfRateClasses );
       
  1357 
       
  1358     for ( TUint idx( 0 ); idx < aCorePolicies.policy_count; ++idx )
       
  1359         {
       
  1360         aInitialRates[idx] = aCorePolicies.policy[idx].initial_tx_rate;
       
  1361         }
       
  1362     }
       
  1363 
       
  1364 // ---------------------------------------------------------
       
  1365 // TWlanConversionUtil::ConvertPowerSaveSettings()
       
  1366 // ---------------------------------------------------------
       
  1367 //
       
  1368 void TWlanConversionUtil::ConvertPowerSaveSettings(
       
  1369     core_power_save_settings_s& aCoreSettings,
       
  1370     const TWlanPowerSaveSettings& aAmSettings )
       
  1371     {
       
  1372     aCoreSettings.stay_in_uapsd_power_save_for_voice = aAmSettings.stayInUapsdPsModeForVoice;
       
  1373     aCoreSettings.stay_in_uapsd_power_save_for_video = aAmSettings.stayInUapsdPsModeForVideo;
       
  1374     aCoreSettings.stay_in_uapsd_power_save_for_best_effort = aAmSettings.stayInUapsdPsModeForBestEffort;
       
  1375     aCoreSettings.stay_in_uapsd_power_save_for_background = aAmSettings.stayInUapsdPsModeForBackground;
       
  1376 
       
  1377     aCoreSettings.stay_in_legacy_power_save_for_voice = aAmSettings.stayInLegacyPsModeForVoice;
       
  1378     aCoreSettings.stay_in_legacy_power_save_for_video = aAmSettings.stayInLegacyPsModeForVideo;
       
  1379     aCoreSettings.stay_in_legacy_power_save_for_best_effort = aAmSettings.stayInLegacyPsModeForBestEffort;
       
  1380     aCoreSettings.stay_in_legacy_power_save_for_background = aAmSettings.stayInLegacyPsModeForBackground;
       
  1381     }
       
  1382 
       
  1383 // ---------------------------------------------------------
       
  1384 // TWlanConversionUtil::ConvertPowerSaveSettings()
       
  1385 // ---------------------------------------------------------
       
  1386 //
       
  1387 void TWlanConversionUtil::ConvertPowerSaveSettings(
       
  1388     TWlanPowerSaveSettings& aAmSettings,
       
  1389     const core_power_save_settings_s& aCoreSettings )
       
  1390     {
       
  1391     aAmSettings.stayInUapsdPsModeForVoice = aCoreSettings.stay_in_uapsd_power_save_for_voice;
       
  1392     aAmSettings.stayInUapsdPsModeForVideo = aCoreSettings.stay_in_uapsd_power_save_for_video;
       
  1393     aAmSettings.stayInUapsdPsModeForBestEffort = aCoreSettings.stay_in_uapsd_power_save_for_best_effort;
       
  1394     aAmSettings.stayInUapsdPsModeForBackground = aCoreSettings.stay_in_uapsd_power_save_for_background;    
       
  1395 
       
  1396     aAmSettings.stayInLegacyPsModeForVoice = aCoreSettings.stay_in_legacy_power_save_for_voice;
       
  1397     aAmSettings.stayInLegacyPsModeForVideo = aCoreSettings.stay_in_legacy_power_save_for_video;
       
  1398     aAmSettings.stayInLegacyPsModeForBestEffort = aCoreSettings.stay_in_legacy_power_save_for_best_effort;
       
  1399     aAmSettings.stayInLegacyPsModeForBackground = aCoreSettings.stay_in_legacy_power_save_for_background;    
       
  1400     }
       
  1401 
       
  1402 // ---------------------------------------------------------
       
  1403 // TWlanConversionUtil::ConvertUapsdMaxServicePeriod()
       
  1404 // ---------------------------------------------------------
       
  1405 //
       
  1406 TMaxServicePeriodLength TWlanConversionUtil::ConvertUapsdMaxServicePeriod(
       
  1407     core_max_service_period_length_e aServicePeriodLength )
       
  1408     {
       
  1409     switch( aServicePeriodLength )
       
  1410         {
       
  1411         case core_max_service_period_length_two:
       
  1412             return EMaxServicePeriodLengthTwo;
       
  1413         case core_max_service_period_length_four:
       
  1414             return EMaxServicePeriodLengthFour;
       
  1415         case core_max_service_period_length_six:
       
  1416             return EMaxServicePeriodLengthSix;
       
  1417         case core_max_service_period_length_all:
       
  1418             /** Falls through on purpose. */
       
  1419         default:
       
  1420             return EMaxServicePeriodLengthAll;
       
  1421         }  
       
  1422     }
       
  1423 
       
  1424 // ---------------------------------------------------------
       
  1425 // TWlanConversionUtil::ConvertTrafficStreamStatus()
       
  1426 // ---------------------------------------------------------
       
  1427 //
       
  1428 TWlanTrafficStreamStatus TWlanConversionUtil::ConvertTrafficStreamStatus(
       
  1429     core_traffic_stream_status_e aStatus )
       
  1430     {
       
  1431     switch( aStatus )
       
  1432         {
       
  1433         case core_traffic_stream_status_active:
       
  1434             return EWlanTrafficStreamStatusActive;
       
  1435         case core_traffic_stream_status_inactive_not_required:
       
  1436             return EWlanTrafficStreamStatusInactiveNotRequired;
       
  1437         case core_traffic_stream_status_inactive_deleted_by_ap:
       
  1438             return EWlanTrafficStreamStatusInactiveDeletedByAp;
       
  1439         case core_traffic_stream_status_inactive_no_bandwidth:
       
  1440             return EWlanTrafficStreamStatusInactiveNoBandwidth;
       
  1441         case core_traffic_stream_status_inactive_invalid_parameters:
       
  1442             return EWlanTrafficStreamStatusInactiveInvalidParameters;
       
  1443         case core_traffic_stream_status_inactive_other:
       
  1444             /** Falls through on purpose. */
       
  1445         default:
       
  1446             return EWlanTrafficStreamStatusInactiveOther;
       
  1447         }   
       
  1448     }
       
  1449 
       
  1450 /* Compile time assertions are used to make sure that rate bits are same in core and in Symbian. */
       
  1451 COMPILE_ASSERT( TWlanRateNone    == core_tx_rate_none   );
       
  1452 COMPILE_ASSERT( TWlanRate1mbit   == core_tx_rate_1mbit  );
       
  1453 COMPILE_ASSERT( TWlanRate2mbit   == core_tx_rate_2mbit  );
       
  1454 COMPILE_ASSERT( TWlanRate5p5mbit == core_tx_rate_5p5mbit);
       
  1455 COMPILE_ASSERT( TWlanRate6mbit   == core_tx_rate_6mbit  );
       
  1456 COMPILE_ASSERT( TWlanRate9mbit   == core_tx_rate_9mbit  );
       
  1457 COMPILE_ASSERT( TWlanRate11mbit  == core_tx_rate_11mbit );
       
  1458 COMPILE_ASSERT( TWlanRate12mbit  == core_tx_rate_12mbit );
       
  1459 COMPILE_ASSERT( TWlanRate18mbit  == core_tx_rate_18mbit );
       
  1460 COMPILE_ASSERT( TWlanRate22mbit  == core_tx_rate_22mbit );
       
  1461 COMPILE_ASSERT( TWlanRate24mbit  == core_tx_rate_24mbit );
       
  1462 COMPILE_ASSERT( TWlanRate33mbit  == core_tx_rate_33mbit );
       
  1463 COMPILE_ASSERT( TWlanRate36mbit  == core_tx_rate_36mbit );
       
  1464 COMPILE_ASSERT( TWlanRate48mbit  == core_tx_rate_48mbit );
       
  1465 COMPILE_ASSERT( TWlanRate54mbit  == core_tx_rate_54mbit );
       
  1466 
       
  1467 // ---------------------------------------------------------
       
  1468 // TWlanConversionUtil::ConvertApInformation()
       
  1469 // ---------------------------------------------------------
       
  1470 //
       
  1471 void TWlanConversionUtil::ConvertApInformation(
       
  1472     TWlanAccessPointInfo& aAmInfo,
       
  1473     const core_ap_information_s& aCoreInfo )
       
  1474     {
       
  1475     aAmInfo.ssid.Copy( aCoreInfo.ssid.ssid, Min(aCoreInfo.ssid.length, KWlanMaxSsidLength ) );
       
  1476     aAmInfo.bssid.Copy( aCoreInfo.bssid.addr, KWlanMaxBssidLength );
       
  1477     aAmInfo.capabilities = aCoreInfo.capabilities;
       
  1478     aAmInfo.channel = aCoreInfo.channel;
       
  1479     
       
  1480     // RCPI -> RSSI CONVERSION
       
  1481     // Note: conversion may round the result by 0.5 units
       
  1482     aAmInfo.rssi = ( 110 - ( aCoreInfo.rcpi / 2 ) );
       
  1483     aAmInfo.basicRates = aCoreInfo.basic_rates;
       
  1484     aAmInfo.supportedRates = aCoreInfo.supported_rates;
       
  1485 
       
  1486     switch ( aCoreInfo.security_mode )
       
  1487         {
       
  1488         case core_connection_security_mode_open:
       
  1489             aAmInfo.securityMode = EWlanConnectionExtentedSecurityModeOpen;
       
  1490             break;
       
  1491         case core_connection_security_mode_wep_open:
       
  1492             aAmInfo.securityMode = EWlanConnectionExtentedSecurityModeWepOpen;
       
  1493             break;
       
  1494         case core_connection_security_mode_wep_shared:
       
  1495             aAmInfo.securityMode = EWlanConnectionExtentedSecurityModeWepShared;
       
  1496             break;
       
  1497         case core_connection_security_mode_802d1x:
       
  1498             aAmInfo.securityMode = EWlanConnectionExtentedSecurityMode802d1x;
       
  1499             break;
       
  1500         case core_connection_security_mode_wpa:
       
  1501             aAmInfo.securityMode = EWlanConnectionExtentedSecurityModeWpa;
       
  1502             break;
       
  1503         case core_connection_security_mode_wpa2:
       
  1504             aAmInfo.securityMode = EWlanConnectionExtentedSecurityModeWpa2;
       
  1505             break;
       
  1506         case core_connection_security_mode_wpa_psk:
       
  1507             aAmInfo.securityMode = EWlanConnectionExtentedSecurityModeWpaPsk;
       
  1508             break;
       
  1509         case core_connection_security_mode_wpa2_psk:
       
  1510             aAmInfo.securityMode = EWlanConnectionExtentedSecurityModeWpa2Psk;
       
  1511             break;
       
  1512         case core_connection_security_mode_wapi:
       
  1513             aAmInfo.securityMode = EWlanConnectionExtentedSecurityModeWapi;
       
  1514             break;
       
  1515         case core_connection_security_mode_wapi_psk:
       
  1516             aAmInfo.securityMode = EWlanConnectionExtentedSecurityModeWapiPsk;
       
  1517             break;            
       
  1518         default:
       
  1519             aAmInfo.securityMode = EWlanConnectionExtentedSecurityModeOpen;
       
  1520             break;
       
  1521         }
       
  1522     
       
  1523     aAmInfo.isAcRequiredForVoice = aCoreInfo.is_ac_required_for_voice;
       
  1524     aAmInfo.isAcRequiredForVideo = aCoreInfo.is_ac_required_for_video;
       
  1525     aAmInfo.isAcRequiredForBestEffort = aCoreInfo.is_ac_required_for_best_effort;
       
  1526     aAmInfo.isAcRequiredForBackground = aCoreInfo.is_ac_required_for_background;
       
  1527     aAmInfo.isWpx = aCoreInfo.is_wpx;
       
  1528     }
       
  1529 
       
  1530 // ---------------------------------------------------------
       
  1531 // TWlanConversionUtil::ConvertRoamMetrics()
       
  1532 // ---------------------------------------------------------
       
  1533 //
       
  1534 void TWlanConversionUtil::ConvertRoamMetrics(
       
  1535     TWlanRoamMetrics& aAmRoamMetrics,
       
  1536     const core_roam_metrics_s& aCoreRoamMetrics )
       
  1537     {
       
  1538     aAmRoamMetrics.connectionAttemptTotalCount = aCoreRoamMetrics.connection_attempt_total_count;
       
  1539     aAmRoamMetrics.unsuccesfullConnectionAttemptCount = aCoreRoamMetrics.unsuccesfull_connection_attempt_count;
       
  1540     aAmRoamMetrics.roamingCounter = aCoreRoamMetrics.roaming_counter;
       
  1541     aAmRoamMetrics.coverageLossCount = aCoreRoamMetrics.coverage_loss_count;
       
  1542     aAmRoamMetrics.lastRoamTotalDuration = aCoreRoamMetrics.last_roam_total_duration;
       
  1543     aAmRoamMetrics.lastRoamDataPathBrokenDuration = aCoreRoamMetrics.last_roam_data_path_broken_duration;
       
  1544 
       
  1545     switch ( aCoreRoamMetrics.last_roam_reason )
       
  1546         {
       
  1547         case core_roam_reason_none:
       
  1548         case core_roam_reason_initial_connect:
       
  1549         case core_roam_reason_signal_strength:
       
  1550         case core_roam_reason_signal_loss_prediction:
       
  1551         case core_roam_reason_directed_roam:
       
  1552             aAmRoamMetrics.lastRoamReason = EWlanRoamReasonLowRssi;
       
  1553             break;
       
  1554         case core_roam_reason_failed_reauthentication:
       
  1555         case core_roam_reason_media_disconnect:
       
  1556         case core_roam_reason_bss_lost:
       
  1557             aAmRoamMetrics.lastRoamReason = EWlanRoamReasonApLost;
       
  1558             break;
       
  1559         }
       
  1560     }
       
  1561 
       
  1562 // ---------------------------------------------------------
       
  1563 // TWlanConversionUtil::ConvertRogueList()
       
  1564 // ---------------------------------------------------------
       
  1565 //
       
  1566 void TWlanConversionUtil::ConvertRogueList(
       
  1567     TWlmRogueList& aAmRogueList,
       
  1568     core_type_list_c<core_mac_address_s>& aCoreRogueList )
       
  1569     {
       
  1570     aAmRogueList.count = 0;
       
  1571     core_type_list_iterator_c<core_mac_address_s> iter( aCoreRogueList );
       
  1572     iter.first();
       
  1573     while ( iter.current() && aAmRogueList.count < KWlmRogueListMaxCount )
       
  1574         {
       
  1575         TWlanBssid bssid;
       
  1576         bssid.Copy( iter.current()->addr, KWlanMaxBssidLength );
       
  1577         aAmRogueList.list[aAmRogueList.count] = bssid;
       
  1578         
       
  1579         ++aAmRogueList.count;
       
  1580         iter.next();
       
  1581         }
       
  1582     }
       
  1583 
       
  1584 // ---------------------------------------------------------
       
  1585 // TWlanConversionUtil::ConvertTxQueueId()
       
  1586 // ---------------------------------------------------------
       
  1587 //
       
  1588 TQueueId TWlanConversionUtil::ConvertTxQueueId(
       
  1589     core_access_class_e queue_id )
       
  1590     {
       
  1591     switch ( queue_id )
       
  1592         {
       
  1593         case core_access_class_voice:
       
  1594             return EVoice;
       
  1595         case core_access_class_video:
       
  1596             return EVideo;
       
  1597         case core_access_class_background:
       
  1598             return EBackGround;
       
  1599         case core_access_class_best_effort:
       
  1600             /** Falls through on purpose. */
       
  1601         default:
       
  1602             return ELegacy;
       
  1603         }
       
  1604     }
       
  1605 
       
  1606 // ---------------------------------------------------------
       
  1607 // TWlanConversionUtil::ConvertProtectedSetupCredentialAttribute()
       
  1608 // ---------------------------------------------------------
       
  1609 //
       
  1610 void TWlanConversionUtil::ConvertProtectedSetupCredentialAttribute(
       
  1611     TWlanProtectedSetupCredentialAttribute& aAmAttribute,
       
  1612     const core_iap_data_s& aCoreAttribute )
       
  1613     {
       
  1614     // Handle operating mode.
       
  1615     if ( aCoreAttribute.op_mode == core_operating_mode_ibss )
       
  1616         {
       
  1617         aAmAttribute.iOperatingMode = EWlanOperatingModeAdhoc;
       
  1618         }
       
  1619     else
       
  1620         {
       
  1621         aAmAttribute.iOperatingMode = EWlanOperatingModeInfrastructure;        
       
  1622         }
       
  1623 
       
  1624     // Handle authentication mode
       
  1625     if ( aCoreAttribute.authentication_mode == core_authentication_mode_shared )
       
  1626         {
       
  1627         aAmAttribute.iAuthenticationMode = EWlanAuthenticationModeShared;
       
  1628         }
       
  1629     else
       
  1630         {
       
  1631         aAmAttribute.iAuthenticationMode = EWlanAuthenticationModeOpen;
       
  1632         }
       
  1633 
       
  1634     // Handle security mode.
       
  1635     switch( aCoreAttribute.security_mode )
       
  1636         {        
       
  1637         case core_security_mode_wep:
       
  1638             aAmAttribute.iSecurityMode = EWlanIapSecurityModeWep;
       
  1639             break;
       
  1640         case core_security_mode_802dot1x:
       
  1641             aAmAttribute.iSecurityMode = EWlanIapSecurityMode802d1x;
       
  1642             break;
       
  1643         case core_security_mode_wpa:
       
  1644             aAmAttribute.iSecurityMode = EWlanIapSecurityModeWpa;
       
  1645             break;
       
  1646         case core_security_mode_wpa2only:
       
  1647             aAmAttribute.iSecurityMode = EWlanIapSecurityModeWpa2Only;
       
  1648             break;
       
  1649         case core_security_mode_allow_unsecure:
       
  1650             /** Falls through on purpose. */
       
  1651         default:
       
  1652             aAmAttribute.iSecurityMode = EWlanIapSecurityModeAllowUnsecure;
       
  1653             break;
       
  1654         }
       
  1655 
       
  1656     // Handle SSID
       
  1657     aAmAttribute.iSsid.Copy(
       
  1658         &aCoreAttribute.ssid.ssid[0],
       
  1659         aCoreAttribute.ssid.length );
       
  1660 
       
  1661     // Handle WEP keys
       
  1662     aAmAttribute.iWepDefaultKey = static_cast<TWlanDefaultWepKey>(
       
  1663         aCoreAttribute.default_wep_key );
       
  1664 
       
  1665     aAmAttribute.iWepKey1.Copy(
       
  1666         &aCoreAttribute.wep_key1.key_data[0],
       
  1667         aCoreAttribute.wep_key1.key_length );
       
  1668 
       
  1669     aAmAttribute.iWepKey2.Copy(
       
  1670         &aCoreAttribute.wep_key2.key_data[0],
       
  1671         aCoreAttribute.wep_key2.key_length );
       
  1672 
       
  1673     aAmAttribute.iWepKey3.Copy(
       
  1674         &aCoreAttribute.wep_key3.key_data[0],
       
  1675         aCoreAttribute.wep_key3.key_length );
       
  1676 
       
  1677     aAmAttribute.iWepKey4.Copy(
       
  1678         &aCoreAttribute.wep_key4.key_data[0],
       
  1679         aCoreAttribute.wep_key4.key_length );
       
  1680 
       
  1681     // Handle WPA preshared key
       
  1682     aAmAttribute.iWpaPreSharedKey.Copy(
       
  1683         &aCoreAttribute.wpa_preshared_key.key_data[0],
       
  1684         aCoreAttribute.wpa_preshared_key.key_length );
       
  1685     }
       
  1686 
       
  1687 // ---------------------------------------------------------
       
  1688 // TWlanConversionUtil::ConvertProtectedSetupStatus()
       
  1689 // ---------------------------------------------------------
       
  1690 //
       
  1691 TInt TWlanConversionUtil::ConvertProtectedSetupStatus(
       
  1692     core_protected_setup_status_e aCoreStatus )
       
  1693     {
       
  1694     switch( aCoreStatus )
       
  1695         {
       
  1696         case core_protected_setup_status_ok:
       
  1697             return KErrNone;
       
  1698         case core_protected_setup_status_session_overlap: // fall through on purpose
       
  1699         case core_protected_setup_status_multiple_PBC_sessions_detected:
       
  1700             return KErrWlanProtectedSetupMultiplePBCSessionsDetected;
       
  1701         case core_protected_setup_status_walktime_expired: // fall through on purpose
       
  1702         case core_protected_setup_status_registration_session_timeout:
       
  1703             return KErrWlanProtectedSetupRegistrationSessionTimeout;
       
  1704         case core_protected_setup_status_network_auth_failure:
       
  1705             return KErrWlanProtectedSetupNetworkAuthFailure;
       
  1706         case core_protected_setup_status_network_assoc_failure:
       
  1707             return KErrWlanProtectedSetupNetworkAssociationFailure;
       
  1708         case core_protected_setup_status_OOB_interface_read_error:
       
  1709             return KErrWlanProtectedSetupOOBInterfaceReadError;
       
  1710         case core_protected_setup_status_decryption_CRC_failure:
       
  1711             return KErrWlanProtectedSetupDecryptionCRCFailure;
       
  1712         case core_protected_setup_status_RF_band_2_4_ghz_not_supported:
       
  1713             return KErrWlanProtectedSetup2_4ChannelNotSupported;
       
  1714         case core_protected_setup_status_RF_band_5_0_ghz_not_supported:
       
  1715             return KErrWlanProtectedSetup5_0ChannelNotSupported;
       
  1716         case core_protected_setup_status_signal_too_weak:
       
  1717             return KErrWlanSignalTooWeak;
       
  1718         case core_protected_setup_status_no_DHCP_response:
       
  1719             return KErrWlanProtectedSetupNoDHCPResponse;
       
  1720         case core_protected_setup_status_failed_DHCP_configure:
       
  1721             return KErrWlanProtectedSetupFailedDHCPConfig;
       
  1722         case core_protected_setup_status_ip_address_conflict:
       
  1723             return KErrWlanProtectedSetupIPAddressConflict;
       
  1724         case core_protected_setup_status_could_not_connect_to_registrar:
       
  1725             return KErrWlanProtectedSetupCouldNotConnectToRegistrar;
       
  1726         case core_protected_setup_status_rogue_activity_suspected:
       
  1727             return KErrWlanProtectedSetupRogueActivitySuspected;
       
  1728         case core_protected_setup_status_device_busy:
       
  1729             return KErrWlanProtectedSetupDeviceBusy;
       
  1730         case core_protected_setup_status_setup_locked:
       
  1731             return KErrWlanProtectedSetupSetupLocked;
       
  1732         case core_protected_setup_status_message_timeout:
       
  1733             return KErrWlanProtectedSetupMessageTimeout;
       
  1734         case core_protected_setup_status_device_password_authentication_failure:
       
  1735             return KErrWlanProtectedSetupDevicePasswordAuthFailure;
       
  1736         case core_protected_setup_status_pin_code_authentication_not_supported:
       
  1737             return KErrWlanProtectedSetupPINMethodNotSupported;
       
  1738         case core_protected_setup_status_push_button_authentication_not_supported:
       
  1739             return KErrWlanProtectedSetupPBMethodNotSupported;
       
  1740         default:
       
  1741             return KErrGeneral;
       
  1742         }
       
  1743     }
       
  1744 
       
  1745 // ---------------------------------------------------------
       
  1746 // TWlanConversionUtil::ConvertSnapHeader()
       
  1747 // ---------------------------------------------------------
       
  1748 //
       
  1749 void TWlanConversionUtil::ConvertSnapHeader(
       
  1750     TSnapHeader& aAmHeader,
       
  1751     const core_snap_header_s& aCoreHeader )
       
  1752     {
       
  1753     aAmHeader.iDSAP = aCoreHeader.dsap; 
       
  1754     aAmHeader.iSSAP = aCoreHeader.ssap;
       
  1755     aAmHeader.iControl = aCoreHeader.control;
       
  1756     Mem::Copy(
       
  1757         &aAmHeader.iOUI[0],
       
  1758         &aCoreHeader.oui[0],
       
  1759         KOuiLength );
       
  1760     }
       
  1761 
       
  1762 // ---------------------------------------------------------
       
  1763 // TWlanConversionUtil::ConvertPowerSaveMode()
       
  1764 // ---------------------------------------------------------
       
  1765 //
       
  1766 void TWlanConversionUtil::ConvertPowerSaveMode(
       
  1767     core_power_save_mode_s& aCoreMode,
       
  1768     TWlanPowerSaveMode aAmMode )
       
  1769     {
       
  1770     switch( aAmMode )
       
  1771         {
       
  1772         case EWlanPowerSaveModeNone:
       
  1773             aCoreMode = CORE_POWER_SAVE_MODE_NONE;
       
  1774             break;
       
  1775         case EWlanPowerSaveModeBeacon:
       
  1776             aCoreMode = CORE_POWER_SAVE_MODE_EVERY_BEACON;
       
  1777             break;
       
  1778         case EWlanPowerSaveModeDtim:
       
  1779             aCoreMode = CORE_POWER_SAVE_MODE_EVERY_DTIM;
       
  1780             break;
       
  1781         case EWlanPowerSaveModeDtimSkipping:
       
  1782             aCoreMode = CORE_POWER_SAVE_MODE_DTIM_SKIPPING;
       
  1783             break;
       
  1784         case EWlanPowerSaveModeAutomatic:
       
  1785             /** Falls through purpose. */
       
  1786         default:
       
  1787             aCoreMode = CORE_POWER_SAVE_MODE_AUTOMATIC;
       
  1788             break;
       
  1789         }
       
  1790     }
       
  1791 
       
  1792 // ---------------------------------------------------------
       
  1793 // TWlanConversionUtil::ConvertFeatureFlags()
       
  1794 // ---------------------------------------------------------
       
  1795 //
       
  1796 u32_t TWlanConversionUtil::ConvertFeatureFlags(
       
  1797     TUint aFeatures )
       
  1798     {
       
  1799     u32_t coreFeatures( core_feature_none );
       
  1800     if( aFeatures & CWlmServer::EWlanFeaturePowerSaveTest )
       
  1801         {
       
  1802         coreFeatures |= core_feature_power_save_test;
       
  1803         }
       
  1804     if( aFeatures & CWlmServer::EWlanFeature802dot11k )
       
  1805         {
       
  1806         coreFeatures |= core_feature_802dot11k;
       
  1807         }
       
  1808 
       
  1809     return coreFeatures;
       
  1810     }
       
  1811 
       
  1812 // ---------------------------------------------------------
       
  1813 // TWlanConversionUtil::ConvertAccessClass()
       
  1814 // ---------------------------------------------------------
       
  1815 //
       
  1816 TWlmAccessClass TWlanConversionUtil::ConvertAccessClass(
       
  1817     core_access_class_e aAccessClass )
       
  1818     {
       
  1819     switch( aAccessClass )
       
  1820         {
       
  1821         case core_access_class_voice:
       
  1822             return EWlmAccessClassVoice;
       
  1823         case core_access_class_video:
       
  1824             return EWlmAccessClassVideo;
       
  1825         case core_access_class_background:
       
  1826             return EWlmAccessClassBackground;
       
  1827         case core_access_class_best_effort:
       
  1828             /** Falls through on purpose. */
       
  1829         default:
       
  1830             return EWlmAccessClassBestEffort;            
       
  1831         }
       
  1832     }
       
  1833 
       
  1834 // ---------------------------------------------------------
       
  1835 // TWlanConversionUtil::ConvertTrafficMode()
       
  1836 // ---------------------------------------------------------
       
  1837 //
       
  1838 TWlmAcTrafficMode TWlanConversionUtil::ConvertTrafficMode(
       
  1839     core_access_class_traffic_mode_e aMode )
       
  1840     {
       
  1841     if( aMode == core_access_class_traffic_mode_automatic )
       
  1842         {
       
  1843         return EWlmAcTrafficModeAutomatic;
       
  1844         }
       
  1845     
       
  1846     return EWlmAcTrafficModeManual;    
       
  1847     }
       
  1848 
       
  1849 // ---------------------------------------------------------
       
  1850 // TWlanConversionUtil::ConvertTrafficStatus()
       
  1851 // ---------------------------------------------------------
       
  1852 //
       
  1853 TWlmAcTrafficStatus TWlanConversionUtil::ConvertTrafficStatus(
       
  1854     core_access_class_traffic_status_e aStatus )
       
  1855     {
       
  1856     if( aStatus == core_access_class_traffic_status_admitted )
       
  1857         {
       
  1858         return EWlmAcTrafficStatusAdmitted;
       
  1859         }
       
  1860     
       
  1861     return EWlmAcTrafficStatusNotAdmitted;
       
  1862     }
       
  1863 
       
  1864 // ---------------------------------------------------------
       
  1865 // TWlanConversionUtil::ConvertTrafficStreamParameters()
       
  1866 // ---------------------------------------------------------
       
  1867 //
       
  1868 void TWlanConversionUtil::ConvertTrafficStreamParameters(
       
  1869     u8_t& aCoreTid,
       
  1870     u8_t& aCoreUserPriority,
       
  1871     core_traffic_stream_params_s& aCoreParams,
       
  1872     const TWlanTrafficStreamParameters& aAmParams )
       
  1873     {
       
  1874     aCoreUserPriority =
       
  1875         aAmParams.iUserPriority;
       
  1876     aCoreParams =
       
  1877         KWlmDefaultTsParams[KWlmUserPriorityToAccessClass[aCoreUserPriority]];
       
  1878 
       
  1879     if( aAmParams.iParameterBitmap & TWlanTrafficStreamParameters::EWlanParameterId )
       
  1880         {
       
  1881         aCoreTid = aAmParams.iId;
       
  1882         }
       
  1883     else
       
  1884         {
       
  1885         aCoreTid = TRAFFIC_STREAM_TID_NONE;
       
  1886         }
       
  1887 
       
  1888     if( aAmParams.iParameterBitmap & TWlanTrafficStreamParameters::EWlanParameterType )
       
  1889         {
       
  1890         if( aAmParams.iType == EWlanTrafficStreamTrafficTypePeriodic )
       
  1891             {
       
  1892             aCoreParams.is_periodic_traffic = true_t;            
       
  1893             }
       
  1894         else
       
  1895             {
       
  1896             aCoreParams.is_periodic_traffic = false_t;
       
  1897             }        
       
  1898         }
       
  1899     if( aAmParams.iParameterBitmap & TWlanTrafficStreamParameters::EWlanParameterDirection )
       
  1900         {
       
  1901         if( aAmParams.iDirection == EWlanTrafficStreamDirectionUplink )
       
  1902             {
       
  1903             aCoreParams.direction = core_traffic_stream_direction_uplink;
       
  1904             }
       
  1905         else if( aAmParams.iDirection == EWlanTrafficStreamDirectionDownlink )
       
  1906             {
       
  1907             aCoreParams.direction = core_traffic_stream_direction_downlink;
       
  1908             }
       
  1909         else
       
  1910             {
       
  1911             aCoreParams.direction = core_traffic_stream_direction_bidirectional;
       
  1912             }
       
  1913         }
       
  1914     if( aAmParams.iParameterBitmap & TWlanTrafficStreamParameters::EWlanParameterNominalMsduSize )
       
  1915         {
       
  1916         aCoreParams.nominal_msdu_size = aAmParams.iNominalMsduSize;
       
  1917         if( aAmParams.iIsMsduSizeFixed )
       
  1918             {
       
  1919             aCoreParams.nominal_msdu_size |= KWlmTsParamBitNominalSizeFixed;            
       
  1920             }
       
  1921         }
       
  1922     if( aAmParams.iParameterBitmap & TWlanTrafficStreamParameters::EWlanParameterMaximumMsduSize )
       
  1923         {
       
  1924         aCoreParams.maximum_msdu_size = aAmParams.iMaximumMsduSize;
       
  1925         }
       
  1926     if( aAmParams.iParameterBitmap & TWlanTrafficStreamParameters::EWlanParameterMinimumServiceInterval )
       
  1927         {
       
  1928         aCoreParams.minimum_service_interval = aAmParams.iMinimumServiceInterval;
       
  1929         }
       
  1930     if( aAmParams.iParameterBitmap & TWlanTrafficStreamParameters::EWlanParameterMaximumServiceInterval )
       
  1931         {
       
  1932         aCoreParams.maximum_service_interval = aAmParams.iMaximumServiceInterval;
       
  1933         }
       
  1934     if( aAmParams.iParameterBitmap & TWlanTrafficStreamParameters::EWlanParameterInactivityInterval )
       
  1935         {
       
  1936         aCoreParams.inactivity_interval = aAmParams.iInactivityInterval;
       
  1937         }
       
  1938     if( aAmParams.iParameterBitmap & TWlanTrafficStreamParameters::EWlanParameterSuspensionInterval )
       
  1939         {
       
  1940         aCoreParams.suspension_interval = aAmParams.iSuspensionInterval;
       
  1941         }
       
  1942     if( aAmParams.iParameterBitmap & TWlanTrafficStreamParameters::EWlanParameterServiceStartTime )
       
  1943         {
       
  1944         aCoreParams.service_start_time = aAmParams.iServiceStartTime;
       
  1945         }
       
  1946     if( aAmParams.iParameterBitmap & TWlanTrafficStreamParameters::EWlanParameterMinimumDataRate )
       
  1947         {
       
  1948         aCoreParams.minimum_data_rate = aAmParams.iMinimumDataRate;
       
  1949         }
       
  1950     if( aAmParams.iParameterBitmap & TWlanTrafficStreamParameters::EWlanParameterMeanDataRate )
       
  1951         {
       
  1952         aCoreParams.mean_data_rate = aAmParams.iMeanDataRate;
       
  1953         }
       
  1954     if( aAmParams.iParameterBitmap & TWlanTrafficStreamParameters::EWlanParameterPeakDataRate )
       
  1955         {
       
  1956         aCoreParams.peak_data_rate = aAmParams.iPeakDataRate;
       
  1957         }
       
  1958     if( aAmParams.iParameterBitmap & TWlanTrafficStreamParameters::EWlanParameterMaximumBurstSize )
       
  1959         {
       
  1960         aCoreParams.maximum_burst_size = aAmParams.iMaximumBurstSize;
       
  1961         }  
       
  1962     if( aAmParams.iParameterBitmap & TWlanTrafficStreamParameters::EWlanParameterDelayBound )
       
  1963         {
       
  1964         aCoreParams.delay_bound = aAmParams.iDelayBound;
       
  1965         }
       
  1966     if( aAmParams.iParameterBitmap & TWlanTrafficStreamParameters::EWlanParameterMinimumPhyRate )
       
  1967         {
       
  1968         aCoreParams.minimum_phy_rate = ConvertTxRate( aAmParams.iMinimumPhyRate );
       
  1969         }
       
  1970     if( aAmParams.iParameterBitmap & TWlanTrafficStreamParameters::EWlanParameterNominalPhyRate )
       
  1971         {
       
  1972         aCoreParams.nominal_phy_rate =
       
  1973             static_cast<core_tx_rate_e>( aAmParams.iNominalPhyRate );
       
  1974         }
       
  1975     if( aAmParams.iParameterBitmap & TWlanTrafficStreamParameters::EWlanParameterSba )
       
  1976         {
       
  1977         aCoreParams.surplus_bandwidth_allowance = aAmParams.iSba;
       
  1978         }
       
  1979     if( aAmParams.iParameterBitmap & TWlanTrafficStreamParameters::EWlanParameterIsRetryAllowed )
       
  1980         {
       
  1981         aCoreParams.is_retry_allowed = aAmParams.iIsAutomaticRetryAllowed;
       
  1982         }
       
  1983     }
       
  1984 
       
  1985 // ---------------------------------------------------------
       
  1986 // TWlanConversionUtil::ConvertTxRate()
       
  1987 // ---------------------------------------------------------
       
  1988 //
       
  1989 u32_t TWlanConversionUtil::ConvertTxRate(
       
  1990     TWlanRate aRate )
       
  1991     {
       
  1992     switch( aRate )
       
  1993         {
       
  1994         case TWlanRate54mbit:
       
  1995             return 54000000;
       
  1996         case TWlanRate48mbit:
       
  1997             return 48000000;
       
  1998         case TWlanRate36mbit:
       
  1999             return 36000000;
       
  2000         case TWlanRate33mbit:
       
  2001             return 33000000;
       
  2002         case TWlanRate24mbit:
       
  2003             return 24000000;
       
  2004         case TWlanRate22mbit:
       
  2005             return 22000000;
       
  2006         case TWlanRate18mbit:
       
  2007             return 18000000;
       
  2008         case TWlanRate12mbit:
       
  2009             return 12000000;
       
  2010         case TWlanRate11mbit:
       
  2011             return 11000000;
       
  2012         case TWlanRate9mbit:
       
  2013             return 9000000;
       
  2014         case TWlanRate6mbit:
       
  2015             return 6000000;
       
  2016         case TWlanRate5p5mbit:
       
  2017             return 5500000;
       
  2018         case TWlanRate2mbit:
       
  2019             return 2000000;
       
  2020         case TWlanRate1mbit:
       
  2021             return 1000000;
       
  2022         case TWlanRateNone:
       
  2023             /** Falls through on purpose. */
       
  2024         default:
       
  2025             return 0;
       
  2026         }
       
  2027     }