in amazon-freertos/lib/wifi/portable/mediatek/mt7697hx-dev-kit/aws_wifi.c [920:1012]
static bool _mtk_wifi_apply_setting( uint8_t port,
const WIFINetworkParams_t * const pxNetworkParams )
{
wifi_auth_mode_t mtk_auth;
wifi_encrypt_type_t mtk_ciph;
/* check ssid */
if( NULL == pxNetworkParams ||
NULL == pxNetworkParams->pcSSID ||
pxNetworkParams->ucSSIDLength <= 1 ||
pxNetworkParams->ucSSIDLength > ( wificonfigMAX_SSID_LEN + 1 ) )
{
return false;
}
/* check security */
if( eWiFiSecurityOpen != pxNetworkParams->xSecurity )
{
if( pxNetworkParams->xSecurity != eWiFiSecurityWEP &&
pxNetworkParams->xSecurity != eWiFiSecurityWPA &&
pxNetworkParams->xSecurity != eWiFiSecurityWPA2 )
return false;
if( NULL == pxNetworkParams->pcPassword )
return false;
if( pxNetworkParams->ucPasswordLength > ( wificonfigMAX_PASSPHRASE_LEN + 1 ) ||
pxNetworkParams->ucPasswordLength <= 1 )
return false;
}
mtk_auth = _aws_security_to_mtk_auth ( pxNetworkParams->xSecurity );
mtk_ciph = _aws_security_to_mtk_encrypt( pxNetworkParams->xSecurity );
if( port == WIFI_PORT_AP && wifi_config_set_channel( port, pxNetworkParams->cChannel ) < 0 )
{
LOG_E( wifi, "%s: set CHANNEL fail\n", __FUNCTION__ );
return false;
}
if( wifi_config_set_ssid( port,
(uint8_t *) pxNetworkParams->pcSSID,
(uint8_t) pxNetworkParams->ucSSIDLength - 1) < 0 )
{
LOG_E( wifi, "%s: set SSID fail\n", __FUNCTION__ );
return false;
}
if( wifi_config_set_security_mode( port, mtk_auth, mtk_ciph ) < 0 )
{
LOG_E( wifi, "%s: set SECURITY MODE fail\n", __FUNCTION__ );
return false;
}
if( WIFI_ENCRYPT_TYPE_WEP_ENABLED == mtk_ciph ||
WIFI_ENCRYPT_TYPE_WEP_DISABLED == mtk_ciph )
{
wifi_wep_key_t wep_keys;
memset( &wep_keys, 0, sizeof( wep_keys ) );
if( WIFI_ENCRYPT_TYPE_WEP_ENABLED == mtk_ciph &&
NULL != pxNetworkParams->pcPassword )
{
memcpy( &wep_keys.wep_key[ 0 ],
pxNetworkParams->pcPassword,
pxNetworkParams->ucPasswordLength - 1 );
wep_keys.wep_key_length[ 0 ] = pxNetworkParams->ucPasswordLength;
wep_keys.wep_tx_key_index = 0;
}
if( wifi_config_set_wep_key( port, &wep_keys ) < 0 )
{
LOG_E( wifi, "%s: set WEP KEY fail\n", __FUNCTION__ );
return false;
}
}
else if( WIFI_ENCRYPT_TYPE_TKIP_AES_MIX == mtk_ciph )
{
if( wifi_config_set_wpa_psk_key( port,
(uint8_t *)pxNetworkParams->pcPassword,
(uint8_t)pxNetworkParams->ucPasswordLength ) < 0 )
{
LOG_E( wifi, "%s: set WPA/WPA2 PSK KEY fail\n", __FUNCTION__ );
return false;
}
}
return true;
}