diff -r 000000000000 -r c40eb8fe8501 wlan_bearer/wlanengine/wlan_common/wlanengine_common_3.1/inc/core_tools.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/wlan_bearer/wlanengine/wlan_common/wlanengine_common_3.1/inc/core_tools.h Tue Feb 02 02:03:13 2010 +0200 @@ -0,0 +1,426 @@ +/* +* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of the License "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Simple utility functions for core +* +*/ + + +#ifndef CORE_TOOLS_H +#define CORE_TOOLS_H + +#include "am_platform_libraries.h" +#include "core_types.h" +#include "core_iap_data.h" +#include "core_ap_data.h" +#include "genscanlist.h" + +/** +* core_tools_c offers generic utilities +* +* @lib wlmserversrv.lib +* @since Series 60 3.0 +*/ +NONSHARABLE_CLASS(core_tools_c) + { + public: // New functions + + /** + * compares two arrays of data + * @param pl Pointer to parameter1 data. + * @param ll Length of parameter1 data. + * @param pr Pointer to parameter2 data. + * @param rl Length of parameter2 data. + * @return 0 if data is same or similar + * !0 if data is not similar + */ + static int_t compare( + const u8_t* pl, + int_t ll, + const u8_t* pr, + int_t rl ); + + /** + * copies data from source buffer to target buffer + * @param trg Pointer to target buffer. + * @param src Pointer to source buffer. + * @param len Length of data to copy in bytes. + * @return pointer to end of target + */ + static u8_t* copy( + void* trg, + const void* src, + int_t len ); + + /** + * fills buffer with zeroes + * @param trg Pointer to buffer. + * @param len Length of buffer in bytes. + */ + static void fillz( + void* trg, + int_t len ); + + /** + * Convert the given parameter to big-endian order. + * @param source integer + * @return converted integer + */ + static u16_t convert_host_to_big_endian( + u16_t src ); + + /** + * Convert the given parameter to big-endian order. + * @param source integer + * @return converted integer + */ + static u32_t convert_host_to_big_endian( + u32_t src ); + + /** + * Convert the given parameter to big-endian order. + * @param source integer + * @return converted integer + */ + static u16_t convert_big_endian_to_host( + u16_t src ); + + /** + * Convert the given parameter to big-endian order. + * @param source integer + * @return converted integer + */ + static u32_t convert_big_endian_to_host( + u32_t src ); + + /** + * Return a big endian word from the given buffer index in host order. + * + * @since S60 v3.1 + * @param pointer to data + * @param index in the buffer + * @return A word from the given buffer index in host order. + */ + static u16_t get_u16_big_endian( + const u8_t* data, + u16_t index ); + + /** + * Return a host order word from the given buffer index. + * + * @since S60 v3.1 + * @param pointer to data + * @param index in the buffer + * @return A word from the given buffer index in host order. + */ + static u16_t get_u16( + const u8_t* data, + u16_t index ); + + /** + * Return a big endian long word from the given buffer index in host order. + * + * @since S60 v3.1 + * @param pointer to data + * @param index in the buffer + * @return A long word from the given buffer index in host order. + */ + static u32_t get_u32_big_endian( + const u8_t* data, + u16_t index ); + + /** + * Return a host order from the given buffer index. + * + * @since S60 v3.1 + * @param pointer to data + * @param index in the buffer + * @return A long word from the given buffer index in host order. + */ + static u32_t get_u32( + const u8_t* data, + u16_t index ); + + /** + * Return a host order from the given buffer index. + * + * @since S60 v5.2 + * @param pointer to data + * @param index in the buffer + * @return A quadruple word from the given buffer index in host order. + */ + static u64_t get_u64( + const u8_t* data, + u16_t index ); + + /** + * Insert a big endian u16_t to the given buffer index. + * + * @since S60 v3.2 + * @param data Pointer to the buffer. + * @param index Index in the buffer. + * @param value Data be to appended. + */ + static void insert_u16_big_endian( + u8_t* data, + u16_t index, + u16_t value ); + + /** + * Insert a host order u16_t to the given buffer index. + * + * @since S60 v3.2 + * @param data Pointer to the buffer. + * @param index Index in the buffer. + * @param value Data be to appended. + */ + static void insert_u16( + u8_t* data, + u16_t index, + u16_t value ); + + /** + * Insert a big endian u32_t to the given buffer index. + * + * @since S60 v3.2 + * @param data Pointer to the buffer. + * @param index Index in the buffer. + * @param value Data be to appended. + */ + static void insert_u32_big_endian( + u8_t* data, + u16_t index, + u32_t value ); + + /** + * Insert a host order u32_t to the given buffer index. + * + * @since S60 v3.2 + * @param data Pointer to the buffer. + * @param index Index in the buffer. + * @param value Data be to appended. + */ + static void insert_u32( + u8_t* data, + u16_t index, + u32_t value ); + + /** + * Append a big endian u16_t to the given buffer. + * + * @since S60 v3.2 + * @param data Pointer to the buffer. + * @param data_length Current buffer length. + * @param value Data be to appended. + */ + static void append_u16_big_endian( + u8_t* data, + u16_t& data_length, + u16_t value ); + + /** + * Append a host order u16_t to the given buffer. + * + * @since S60 v3.2 + * @param data Pointer to the buffer. + * @param data_length Current buffer length. + * @param value Data be to appended. + */ + static void append_u16( + u8_t* data, + u16_t& data_length, + u16_t value ); + + /** + * Append a big endian u32_t to the given buffer. + * + * @since S60 v3.2 + * @param data Pointer to the buffer. + * @param data_length Current buffer length. + * @param value Data be to appended. + */ + static void append_u32_big_endian( + u8_t* data, + u16_t& data_length, + u32_t value ); + + /** + * Append a host order u32_t to the given buffer. + * + * @since S60 v3.2 + * @param data Pointer to the buffer. + * @param data_length Current buffer length. + * @param value Data be to appended. + */ + static void append_u32( + u8_t* data, + u16_t& data_length, + u32_t value ); + + /** + * Convert the given cipher suite to matching cipher key type. + * + * @since S60 v3.1 + * @param cipher Cipher suite to convert. + * @return The type of the cipher key. + */ + static core_cipher_key_type_e cipher_key_type( + core_cipher_suite_e cipher ); + + /** + * Determine the type of the cipher key from the given parameters. + * + * @since S60 v3.1 + * @param type Type of the key reported by EAPOL. + * @param pairwise_cipher The currently used pairwise cipher. + * @param group_cipher The currently used group cipher. + * @return The type of the cipher key. + */ + static core_cipher_key_type_e cipher_key_type( + wlan_eapol_if_eapol_key_type_e type, + core_cipher_suite_e pairwise_cipher, + core_cipher_suite_e group_cipher ); + + /** + * Determine the EAPOL authentication type from the given parameters. + * + * @since S60 v3.1 + * @param iap_data Information about the used IAP. + * @param ap_data Information about the used AP. + * @retun The authentication type. + */ + static wlan_eapol_if_eapol_key_authentication_type_e eap_authentication_type( + const core_iap_data_c& iap_data, + const core_ap_data_c& ap_data ); + + /** + * Convert the given cipher suite to the EAPOL equivalent. + * + * @since S60 v3.1 + * @param cipher Cipher suite to convert. + * @return The converted cipher suite. + */ + static wlan_eapol_if_rsna_cipher_e eapol_cipher( + core_cipher_suite_e cipher ); + + /** + * Add the given beacon to the scan list. + * + * @since S60 v3.1 + * @param scan_list Scan list where the beacon is added. + * @param ap_data Beacon to be added. + * @param rcpi RCPI value of the beacon. + */ + static void add_beacon_to_scan_list( + ScanList& scan_list, + const core_ap_data_c& ap_data, + u32_t rcpi ); + + /** + * Convert the given user priority value to an access class. + * + * @since S60 v3.1 + * @param user_priority User priority value to be converted. + * @return The corresponding access class. + */ + static core_access_class_e convert_user_priority_to_ac( + u8_t user_priority ); + + /** + * Convert the given access class to an user priority value. + * + * @since S60 v3.2 + * @param access_class Access class to be converted + * @return The corresponding user priority value. + */ + static u8_t convert_ac_to_user_priority( + core_access_class_e access_class ); + + /** + * Convert the given tx rate value (500kbit/s per unit) to a corresponding enum. + * + * @since S60 v3.2 + * @param tx_rate Tx rate value to be converted. + * @return Corresponding tx rate enum. + */ + static core_tx_rate_e convert_tx_rate_to_tx_rate_enum( + u8_t tx_rate ); + + /** + * Convert the given tx rate enum to a corresponding tx rate value (500kbit/s per unit). + * + * @since S60 v3.2 + * @param tx_rate Tx rate enum to be converted. + * @return Corresponding rx rate value. + */ + static u8_t convert_tx_rate_enum_to_tx_rate( + core_tx_rate_e tx_rate ); + + /** + * Return the highest tx rate defined. + * + * @since S60 v3.2 + * @param tx_rates Bitmask of tx rates. + * @return The highest tx rate defined. + */ + static core_tx_rate_e highest_tx_rate( + u32_t tx_rates ); + + /** + * Convert the tx rates to a tx policy. + * + * @since S60 v3.2 + * @param tx_rates Bitmask of tx rates. + * @return Corresponding tx rate policy. + */ + static core_tx_rate_policy_s convert_tx_rates_to_tx_policy( + u32_t tx_rates ); + + /** + * Determine the security mode from the given parameters. + * + * @since S60 v3.2 + * @param iap_data Information about the used IAP. + * @param ap_data Information about the used AP. + * @retun The security mode. + */ + static core_connection_security_mode_e security_mode( + const core_iap_data_c& iap_data, + const core_ap_data_c& ap_data ); + + /** + * Convert an EAPOL error code to the the corresponding + * protected setup error code. + * + * @since S60 v3.2 + * @param error EAPOL error code. + * @return The corresponding protected setup status code. + */ + static core_protected_setup_status_e convert_eapol_error_to_protected_setup_status( + const wlan_eapol_if_eap_status_e error ); + + /** + * Check which WLAN region the country information received from AP matches. + * @since S60 5.0 + * @param found_country Country information received from AP. + * @return WLAN region converted from the country information. + */ + static core_wlan_region_e convert_country_to_region( + const core_country_string_s& found_country ); + + + }; + +#include "core_tools.inl" + +#endif // CORE_TOOLS_H