libNDEF library for the STMicroelectronics X-NUCLEO-NFC04A1
Dependents: mbed-os-nfc04a1 Wiagro-Lanza34-XDot
Diff: lib_NDEF_Wifi.h
- Revision:
- 0:de13951f30f6
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib_NDEF_Wifi.h Thu Nov 14 10:34:11 2019 +0000 @@ -0,0 +1,110 @@ +/** + ****************************************************************************** + * @file lib_NDEF_WifiToken.h + * @author Central LAB + * @version V1.0.0 + * @date 7-October-2015 + * @brief This file helps to manage the NDEF message representing a Wifi Token. + ****************************************************************************** + * @attention + * + * <h2><center>© COPYRIGHT 2016 STMicroelectronics</center></h2> + * + * Licensed under ST MYLIBERTY SOFTWARE LICENSE AGREEMENT (the "License"); + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.st.com/myliberty + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, + * AND SPECIFICALLY DISCLAIMING THE IMPLIED WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __LIB_NDEF_WIFIT_H +#define __LIB_NDEF_WIFIT_H + + +/* Includes ------------------------------------------------------------------*/ +#include "lib_NDEF.h" + +/** @addtogroup lib_NDEF_Wifi Wifi OOB library (WPS) + * @ingroup libNDEF + * @{ + */ + + +/* Exported types ------------------------------------------------------------*/ +/** @brief This index points to the position of the credential length value in Token1. + * Its value may require to be updated if the token1 is modified. + */ +#define CONFIG_TOKEN_1_CREDENTIAL_LENGTH_INDEX 7 + +/** @brief This index points to the position of the Authentication type value in Token3. + * Its value may require to be updated if the token3 is modified. + */ +#define CONFIG_TOKEN_3_AUTHENTICATION_TYPE_INDEX ((uint32_t)5) +/** @brief This index points to the position of the Encryption type value in Token3. + * Its value may require to be updated if the token3 is modified. + */ +#define CONFIG_TOKEN_3_ENCRYPTION_TYPE_INDEX ((uint32_t)11) + +/** @brief MIME type for the Wifi OOB token. + */ +#define WIFITOKEN_TYPE_STRING "application/vnd.wfa.wsc" +/** @brief Length of the MIME type for the Wifi OOB token. + */ +#define WIFITOKEN_TYPE_STRING_LENGTH ((uint32_t)23) + +/** + * @brief Network key to be used when the Authentication is set to None. + * Althought WPS defines a 0 length network key in such case, + * with tested phones a 8 digit value is required. + */ +#define NDEF_WIFI_DEFAULT_NETWORK_KEY "00000000" + +typedef enum { + NDEF_WIFI_ENCRYPTION_NONE = 0x0000, /**< WPS No Encryption (set to 0 for Android native support / should be 1) */ + NDEF_WIFI_ENCRYPTION_WEP = 0x0002, /**< WPS Encryption based on WEP */ + NDEF_WIFI_ENCRYPTION_TKIP = 0x0003, /**< WPS Encryption based on TKIP */ + NDEF_WIFI_ENCRYPTION_AES = 0x0004 /**< WPS Encryption based on AES */ +} Ndef_Wifi_Encryption_t; + +typedef enum { + NDEF_WIFI_AUTHENTICATION_NONE = 0x0000, /**< WPS No Authentication (set to 0 for Android native support / should be 1) */ + NDEF_WIFI_AUTHENTICATION_WPAPSK = 0x0002, /**< WPS Authentication based on WPAPSK */ + NDEF_WIFI_AUTHENTICATION_SHARED = 0x0003, /**< WPS Authentication based on ?? */ + NDEF_WIFI_AUTHENTICATION_WPA = 0x0004, /**< WPS Authentication based on WPA */ + NDEF_WIFI_AUTHENTICATION_WPA2 = 0x0005, /**< WPS Authentication based on WPA2 */ + NDEF_WIFI_AUTHENTICATION_WPA2PSK = 0x0006 /**< WPS Authentication based on WPA2PSK */ +} Ndef_Wifi_Authentication_t; + +/** + * @brief WifiToken structure, to store Network SSID, Authentication Type, Encryption Type and Network Key. + */ +typedef struct +{ + char NetworkSSID[32]; /**< Store the Network SSID. */ + Ndef_Wifi_Authentication_t AuthenticationType; /**< Store the Authentication type to be used. */ + Ndef_Wifi_Encryption_t EncryptionType; /**< Store the Encryption to be used. */ + char NetworkKey[32]; /**< Store the Network Key. */ +}sWifiTokenInfo; + + +uint16_t NDEF_ReadWifiToken(struct sRecordInfo *pRecordStruct, sWifiTokenInfo *pWifiTokenStruct); +uint16_t NDEF_WriteWifiToken( sWifiTokenInfo *pWifiTokenStruct, I2C* mi2cChannel ); + +/** + * @} + */ + +#endif /* __LIB_NDEF_WIFIT_H */ + +/******************* (C) COPYRIGHT 2016 STMicroelectronics *****END OF FILE****/