工具/软件:TI C/C++编译器
我将器件配置为 AP - 首先配置 WiFiMode_ConfigureSimpleLinkToDefaultState、然后配置 为 WiFiMode_ConfigureSimplelinkToAPState
我在 PC 上看到 AP 并成功连接到它,但我得到事件 SimpleLinkFatalErrorEventHandler slFatalErrorEvent->ID = 2;
建议
谢谢
typedef 结构{
S8 SSID[REGISTER_SYSTEM_WIFI_SSID_SIZE * sizeof (Modbus_Register_DEF_t)]; "WiFiCoordinator"
S8密码[REGISTER_SYSTEM_WIFI_PASSWORD_SIZE * sizeof (Modbus_Register_DEF_t)];"1234567890"
U16端口; 3000
}Registers_System_WiFi_AP_t;
/*********
*函数名称:WiFiMachine_ConfigureSimpleLinkToDefaultState *
*说明:*
(三 /
静态结果_e WiFiMode_ConfigureSimpleLinkToDefaultState (void){
U8 mPower = 0;
S32 MMode =-1;
u32 mIfBitmap = 0;
SlWlanScanParamCommand_t mScanDefault ={0};
SlWlanRxFilterOperationCommandBuff_t mRxFilterIdMask ={0};
WiFiStatus_ClrGlobalStatus();
MMode = sl_Start( NULL、NULL、NULL );
if (MMode < 0) return (RES_FAIL);
if (MMode!= Role_STA){
if (MMode == role_AP){
U16 mSTAInfoLen = 0;
U16 mStartSTAIndex = 0;
U8 I = 0;
SlNetCfgStaInfo_t mConnectedSTAList[4];
while (WiFiStatus_GetGlobalStatus (wif_status_ip_acquired)== false) Task_sleep( 1);
mSTAInfoLen = sizeof (mConnectedSTAList);
if (sl_NetCfgGet (sl_netcfg_AP_STATIONS_INFO_LIST、&mStartSTAIndex、&mSTAInfoLen、(U8 *) mConnectedSTAList)< 0) Util_Reset ();
for (i = 0;i <(mSTAInfoLen / sizeof (SlNetCfgStaInfo_t));i++){
sl_NetCfgSet (sl_netcfg_AP_STATE_DISCONNECT、1、sl_MAC_ADDR_LEN、(const uint8_t *)&(mConnectedSTAList[i].macaddr));
}
}
if (sl_WlanSetMode (Role_STA)<0) return (RES_FAIL);
if (sl_Stop (sl_stop_timeout)<0) return (RES_FAIL);
MMode = sl_Start( NULL、NULL、NULL );
if (MMode < 0) return (RES_FAIL);
if (MMode!= Role_STA) return (RES_FAIL);
}
//1000
if (sl_WlanPolicySet (sl_WLAN_policy_connection、sl_WLAN_connection_policy (1、0、0、0)、 null,0)<0) return (RES_FAIL);
//if (sl_WlanProvisioning (sl_WLAN_PROVISIONING_CMD_STOP、0xFF、0、NULL、0x0)< 0) return (RES_FAIL);
if (sl_WlanProfileDel (0xFF)<0) return (RES_FAIL);
WiFiStatus_SetGlobalStatus ( WIFI_STATUS_Connected,true );
if (!sl_WlanDisconnect ()){
while (WiFiStatus_GetGlobalStatus (wif_status_connected)== true) Task_sleep( 10 );
}
else WiFiStatus_SetGlobalStatus( WIFI_STATUS_Connected,false );
if (sl_NetCfgSet (sl_netcfg_IPv4_STA_ADDR_MODE、sl_netcfg_ADDR_DHCP、0)< 0) return (RES_FAIL);
if (sl_NetCfgSet (sl_netcfg_if、sl_netcfg_if_State、sizeof (U32)、(const U8 *)&mIfBitmap)< 0) return (RES_FAIL);
mScanDefault.ChannelsMask = channel_mask_all;
mScanDefault.RssiThershold = RSSI_TH_MAX;
if (sl_WlanSet (sl_WLAN_CFG_General_Param_ID、sl_WLAN_General_Param_opt_scan_Params、
sizeof (slWlanScanParamCommand_t),(U8 *)&mScanDefault)<0) return (RES_FAIL);
if (sl_WlanPolicySet (sl_WLAN_policy_scan、sl_WLAN_SCAN_policy (0、0)、NULL、0)< 0) return (RES_FAIL);
if (sl_WlanSet (sl_WLAN_CFG_General_Param_ID、sl_WLAN_General_Param_opt_STA_TX_POWER、1、(U8 *)&mPower)< 0) return (RES_FAIL);
if (sl_WlanPolicySet (sl_WLAN_policy_PM、sl_WLAN_normal_policy、NULL、0)< 0) return (RES_FAIL);
if (sl_NetAppMDNSUnRegisterService (0、0、0)<0) return (RES_FAIL);
memset( mRxFilterIdMask.FilterBitmap,0xFF,8);
if (sl_WlanSet (sl_WLAN_RX_FILTERS_ID、sl_WLAN_RX_FILTER_REMOVE、
sizeof (slWlanRxFilterOperationCommandBuff_t),(U8 *)&mRxFilterIdMask)< 0) return (RES_FAIL);
if (sl_Stop (0xFF)<0) return (RES_FAIL);
MMode = sl_Start( NULL、NULL、NULL );
if (MMode < 0) return (RES_FAIL);
if (MMode!= Role_STA) return (RES_FAIL);
return (RES_SUCCESS);
}
/*********
*函数名称:WiFiMode_ConfigureSimplelinkToAPState *
*说明:*
(三 /
静态结果_e WiFiMode_ConfigureSimplelinkToAPState (Registers_System_WiFi_AP_t *模式){
U16 mIfBitmap = 0;
//U8 mSTALLIT=1;
U8 mSecType = SL_WLAN_SEC_TYPE_WPA_WPA2;
S32 MMode =-1;
WiFiStatus_ClrGlobalStatus();
ModbusDataBase_Block ( true );
if (sl_WlanSetMode( Role_AP )<0) return (RES_FAIL);
if (sl_Stop (sl_stop_timeout)<0) return (RES_FAIL);
MMode = sl_Start( NULL、NULL、NULL );
if (MMode < 0) return (RES_FAIL);
if (MMode!= Role_AP) return (RES_FAIL);
ModbusDataBase_Block (false);
while (WiFiStatus_GetGlobalStatus (wif_status_ip_acquired)== false) Task_sleep( 10 );
//if (sl_NetCfgSet (sl_netcfg_IPv4_STA_ADDR_MODE、sl_netcfg_ADDR_DHCP、0、0)< 0) return (RES_FAIL);
//if (sl_NetCfgSet (sl_netcfg_if、sl_netcfg_if_State、sizeof (U32)、(U8 *)&mIfBitmap)< 0) return (RES_FAIL);
//if (sl_WlanSet (sl_WLAN_CFG_AP_ID、sl_WLAN_AP_OPT_MAX_STATIONS、sizeof (U8)、(U8 *)(&mSTACLIMIT))< 0) return (RES_FAIL);
if (sl_WlanSet (sl_WLAN_CFG_AP_ID、sl_WLAN_AP_OP_SSID、strlen (pmode->SSID)、(U8 *) pmode->SSID)<0) return (RES_FAIL);
if (sl_WlanSet (sl_WLAN_CFG_AP_ID、sl_WLAN_AP_OPT_SECURITY_TYPE、1、&mSecType)< 0) return (RES_FAIL);
if (sl_WlanSet (sl_WLAN_CFG_AP_ID、sl_WLAN_AP_OPT_PASSWORD、strlen (pmode->Password)、(U8 *) pmode->Password)< 0) return (RES_FAIL);
ModbusDataBase_Block( true );
if (sl_Stop (0xFF)<0) return (RES_FAIL);
WiFiStatus_ClrGlobalStatus();
MMode = sl_Start( NULL、NULL、NULL );
if (MMode < 0) return (RES_FAIL);
if (MMode!= Role_AP) return (RES_FAIL);
ModbusDataBase_Block (false);
while (WiFiStatus_GetGlobalStatus (wif_status_ip_acquired)== false) Task_sleep( 10 );
return (RES_SUCCESS);
}