This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Compiler/CC3220SF-LAUNCHXL: cc3220sf

Part Number: CC3220SF-LAUNCHXL

Tool/software: TI C/C++ Compiler

i configure device to AP -  first WiFiMode_ConfigureSimpleLinkToDefaultState and then to WiFiMode_ConfigureSimplelinkToAPState

i see the AP on my PC and success to connect to it, but i get event SimpleLinkFatalErrorEventHandler slFatalErrorEvent->Id  = 2;

advice

Thanks

typedef struct{
S8 SSID[REGISTERS_SYSTEM_WIFI_SSID_SIZE * sizeof(Modbus_Register_Def_t)] ;      "WiFiCoordinator"
S8 Password[REGISTERS_SYSTEM_WIFI_PASSWORD_SIZE * sizeof(Modbus_Register_Def_t)] ; "1234567890"
U16 Port ;                                            3000
}Registers_System_WiFi_AP_t;

/***********************************************************************
* Function Name: WiFiMachine_ConfigureSimpleLinkToDefaultState *
* Description : *
***********************************************************************/
static Result_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( WIFI_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_STATION_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( WIFI_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 ) < 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 );
}

/***********************************************************************
* Function Name: WiFiMode_ConfigureSimplelinkToAPState *
* Description : *
***********************************************************************/
static Result_e WiFiMode_ConfigureSimplelinkToAPState( Registers_System_WiFi_AP_t *pMode ){
U16 mIfBitmap = 0 ;
//U8 mSTALimit = 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( WIFI_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 *)(&mSTALimit) ) < 0 )return( RES_FAIL );
if( sl_WlanSet ( SL_WLAN_CFG_AP_ID, SL_WLAN_AP_OPT_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( WIFI_STATUS_IP_ACQUIRED ) == FALSE )Task_sleep( 10 );

return( RES_SUCCESS );
}

  • Hi,

    Meaning of your event is SL_DEVICE_EVENT_FATAL_DRIVER_ABORT. Was all your sl_ APIs executed successfully? That means that was not returned error code. What SDK and ServicePack do you use?

    For the future please insert code via "Insert Code, Attach Files and more..." and Syntaxhighlighter. It allow to be your code better readable.

    Jan

  • Hi,
    i use API ver simplelink_cc32xx_sdk_1_50_00_06
    All the API return Success result.
    i see on my pc the "WiFiModem" SSID and succeed to connect to it but i dont get event that STA connected.
    i see that i get after the AP configuration SL_DEVICE_EVENT_FATAL_DRIVER_ABORT Event.
  • Hi,

    Do you have uploaded ServicePack which comes with SDK 1.50?

    It is hard to say what can be wrong in your case. I expect some system issue inside your code which can be determined only by debugging of your whole code. You should start decompose your code into parts and try figure out what is going on in your case. I don't see anything obviously wrong inside your code. As first step you should consider to update to the latest SDK and ServicePack.

    Jan
  • I update to the last SDK ans i see the same problem.

    Where can i find dedicated example for AP and STA?

  • Hi,

    All available examples you find at SDK (\examples\ subdirectory) and SimpleLink Academy in Resource explorer ( dev.ti.com/.../ ).

    My recommendation is look to network_terminal example.

    Jan
  • Network_terminal example construct all of the APIs ,but not show the step to configura AP or STA?
    Or set of function to configure...
  • Hi,

    Yes, it demonstrates almost all sl_ APIs and way how can be properly used.

    In case of error codes are not returned from sl_ APIs, I think your problem is not with device configuration. You have some systematic issue how you are using these APIs or problem related to RTOS or something else.

    Jan
  • Ok
    Thank you, i will check it and update you
    Thank you