diff options
Diffstat (limited to 'wl1271/stad/src/Connection_Managment/sme.c')
-rw-r--r-- | wl1271/stad/src/Connection_Managment/sme.c | 227 |
1 files changed, 115 insertions, 112 deletions
diff --git a/wl1271/stad/src/Connection_Managment/sme.c b/wl1271/stad/src/Connection_Managment/sme.c index c02893e..9e0d542 100644 --- a/wl1271/stad/src/Connection_Managment/sme.c +++ b/wl1271/stad/src/Connection_Managment/sme.c @@ -1,7 +1,7 @@ /* * sme.c * - * Copyright(c) 1998 - 2009 Texas Instruments. All rights reserved. + * Copyright(c) 1998 - 2010 Texas Instruments. All rights reserved. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -86,8 +86,8 @@ TI_HANDLE sme_Create (TI_HANDLE hOS) } /* Create SME scan result table */ - pSme->hScanResultTable = scanResultTable_Create (hOS); - if (NULL == pSme->hScanResultTable) + pSme->hSmeScanResultTable = scanResultTable_Create (hOS, SME_SCAN_TABLE_ENTRIES); + if (NULL == pSme->hSmeScanResultTable) { WLAN_OS_REPORT (("sme_Create: unable to create scan result table. SME creation failed\n")); sme_Destroy ((TI_HANDLE)pSme); @@ -126,7 +126,7 @@ void sme_Init (TStadHandlesList *pStadHandles) /* Initialize the scan result table object */ - scanResultTable_Init (pSme->hScanResultTable, pStadHandles); + scanResultTable_Init (pSme->hSmeScanResultTable, pStadHandles, SCAN_RESULT_TABLE_CLEAR); /* Initialize the SME state-machine object */ genSM_Init (pSme->hSmeSm, pStadHandles->hReport); @@ -153,20 +153,25 @@ void sme_SetDefaults (TI_HANDLE hSme, TSmeModifiedInitParams *pModifiedInitParam /* initialize SME varaibles */ pSme->bRadioOn = pModifiedInitParams->bRadioOn; pSme->eConnectMode = pModifiedInitParams->eConnectMode; + if (CONNECT_MODE_AUTO == pSme->eConnectMode) + { + pSme->hScanResultTable = pSme->hSmeScanResultTable; + } + else if (CONNECT_MODE_MANUAL == pSme->eConnectMode) + { + pSme->hScanResultTable = pSme->hScanCncnScanResulTable; + } + pSme->eBssType = pModifiedInitParams->eDesiredBssType; MAC_COPY (pSme->tBssid, pModifiedInitParams->tDesiredBssid); pSme->tSsid.len = pModifiedInitParams->tDesiredSsid.len; - /* It looks like it never happens. Anyway decided to check */ if ( pSme->tSsid.len > MAX_SSID_LEN ) { - TRACE2( pSme->hReport, REPORT_SEVERITY_ERROR, - "sme_SetDefaults. pSme->tSsid.len=%d exceeds the limit %d\n", - pSme->tSsid.len, MAX_SSID_LEN); - handleRunProblem(PROBLEM_BUF_SIZE_VIOLATION); - return; + TRACE2( pSme->hReport, REPORT_SEVERITY_ERROR, "sme_SetDefaults. pSme->tSsid.len=%d exceeds the limit %d\n", pSme->tSsid.len, MAX_SSID_LEN); + pSme->tSsid.len = MAX_SSID_LEN; } - os_memoryCopy (pSme->hOS, &(pSme->tSsid.str[ 0 ]), &(pModifiedInitParams->tDesiredSsid.str[ 0 ]), pModifiedInitParams->tDesiredSsid.len); + os_memoryCopy (pSme->hOS, &(pSme->tSsid.str[ 0 ]), &(pModifiedInitParams->tDesiredSsid.str[ 0 ]), pSme->tSsid.len); if (OS_802_11_SSID_JUNK (pSme->tSsid.str, pSme->tSsid.len)) { pSme->eSsidType = SSID_TYPE_INVALID; @@ -198,6 +203,24 @@ void sme_SetDefaults (TI_HANDLE hSme, TSmeModifiedInitParams *pModifiedInitParam } /** + * \fn sme_setScanResultTable + * \brief Sets the scanResultTable pointer for the manual mode. + * \param hSme - handle to the SME object + * \param hScanResultTable - pointer to ScanResultTable + * \return none + */ +void sme_SetScanResultTable(TI_HANDLE hSme, TI_HANDLE hScanResultTable) +{ + TSme *pSme = (TSme*)hSme; + + pSme->hScanCncnScanResulTable = hScanResultTable; + if (CONNECT_MODE_MANUAL == pSme->eConnectMode) + { + pSme->hScanResultTable = pSme->hScanCncnScanResulTable; + } +} + +/** * \fn sme_Destroy * \brief Destroys the SME object. De-allocates system resources * @@ -212,9 +235,9 @@ void sme_Destroy (TI_HANDLE hSme) TSme *pSme = (TSme*)hSme; /* destroy the scan result table */ - if (NULL != pSme->hScanResultTable) + if (NULL != pSme->hSmeScanResultTable) { - scanResultTable_Destroy (pSme->hScanResultTable); + scanResultTable_Destroy (pSme->hSmeScanResultTable); } /* destroy the SME generic state machine */ @@ -255,7 +278,7 @@ void sme_Start (TI_HANDLE hSme) /* if radio is on, start the SM */ if (TI_TRUE == pSme->bRadioOn) { - genSM_Event (pSme->hSmeSm, SME_SM_EVENT_START, hSme); + sme_SmEvent (pSme->hSmeSm, SME_SM_EVENT_START, hSme); } } @@ -280,7 +303,7 @@ void sme_Stop (TI_HANDLE hSme) pSme->bRunning = TI_FALSE; /* mark that running flag is send a stop event to the SM */ - genSM_Event (pSme->hSmeSm, SME_SM_EVENT_STOP, hSme); + sme_SmEvent (pSme->hSmeSm, SME_SM_EVENT_STOP, hSme); } /** @@ -301,7 +324,7 @@ void sme_Restart (TI_HANDLE hSme) pSme->uScanCount = 0; - genSM_Event (pSme->hSmeSm, SME_SM_EVENT_DISCONNECT, hSme); + sme_SmEvent (pSme->hSmeSm, SME_SM_EVENT_DISCONNECT, hSme); } /** @@ -334,21 +357,27 @@ TI_STATUS sme_SetParam (TI_HANDLE hSme, paramInfo_t *pParam) { if(TI_TRUE == pSme->bRunning) { - genSM_Event (pSme->hSmeSm, SME_SM_EVENT_START, hSme); + sme_SmEvent (pSme->hSmeSm, SME_SM_EVENT_START, hSme); } } else { - genSM_Event (pSme->hSmeSm, SME_SM_EVENT_STOP, hSme); + sme_SmEvent (pSme->hSmeSm, SME_SM_EVENT_STOP, hSme); } } break; case SME_DESIRED_SSID_PARAM: + + if (pParam->content.smeDesiredSSID.len > MAX_SSID_LEN) + { + return PARAM_VALUE_NOT_VALID; /* SSID length is out of range */ + } + /* if new value is different than current one */ if ((pSme->tSsid.len != pParam->content.smeDesiredSSID.len) || - (0 != os_memoryCompare (pSme->hOS, &(pSme->tSsid.str[ 0 ]), - &(pParam->content.smeDesiredSSID.str[ 0 ]), pSme->tSsid.len))) + (0 != os_memoryCompare (pSme->hOS, (TI_UINT8 *)&(pSme->tSsid.str[ 0 ]), + (TI_UINT8 *)&(pParam->content.smeDesiredSSID.str[ 0 ]), pSme->tSsid.len))) { /* set new desired SSID */ os_memoryCopy (pSme->hOS, &(pSme->tSsid.str[ 0 ]), &(pParam->content.smeDesiredSSID.str[ 0 ]), pParam->content.smeDesiredSSID.len); @@ -357,23 +386,23 @@ TI_STATUS sme_SetParam (TI_HANDLE hSme, paramInfo_t *pParam) pSme->uScanCount = 0; /* now send a disconnect event */ - genSM_Event (pSme->hSmeSm, SME_SM_EVENT_DISCONNECT, hSme); + sme_SmEvent (pSme->hSmeSm, SME_SM_EVENT_DISCONNECT, hSme); } break; case SME_DESIRED_SSID_ACT_PARAM: + if (pParam->content.smeDesiredSSID.len > MAX_SSID_LEN) { - /* printk("SSID length(%d) is out of range. Discard it.\n", pParam->content.smeDesiredSSID.len);*/ - return PARAM_VALUE_NOT_VALID; /* ssid length is out of range */ + return PARAM_VALUE_NOT_VALID; /* SSID length is out of range */ } pSme->bRadioOn = TI_TRUE; /* if new value is different than current one */ if ((pSme->tSsid.len != pParam->content.smeDesiredSSID.len) || - (0 != os_memoryCompare (pSme->hOS, &(pSme->tSsid.str[ 0 ]), - &(pParam->content.smeDesiredSSID.str[ 0 ]), pSme->tSsid.len))) + (0 != os_memoryCompare (pSme->hOS, (TI_UINT8 *)&(pSme->tSsid.str[ 0 ]), + (TI_UINT8 *)&(pParam->content.smeDesiredSSID.str[ 0 ]), pSme->tSsid.len))) { /* set new desired SSID */ os_memoryCopy (pSme->hOS, &(pSme->tSsid.str[ 0 ]), &(pParam->content.smeDesiredSSID.str[ 0 ]), pParam->content.smeDesiredSSID.len); @@ -403,11 +432,8 @@ TI_STATUS sme_SetParam (TI_HANDLE hSme, paramInfo_t *pParam) pSme->bConstantScan = TI_FALSE; } - /* printk("SME_DESIRED_SSID_ACT_PARAM: bRadioOn = %d, bRunning = %d\n", pSme->bRadioOn, pSme->bRunning); */ - pSme->bRunning = TI_TRUE; /* set it to TRUE in case it's accidentally altered. */ - /* now send a disconnect event */ - genSM_Event (pSme->hSmeSm, SME_SM_EVENT_DISCONNECT, hSme); + sme_SmEvent (pSme->hSmeSm, SME_SM_EVENT_DISCONNECT, hSme); break; case SME_DESIRED_BSSID_PARAM: @@ -417,8 +443,8 @@ TI_STATUS sme_SetParam (TI_HANDLE hSme, paramInfo_t *pParam) /* set new BSSID */ MAC_COPY (pSme->tBssid, pParam->content.smeDesiredBSSID); pSme->uScanCount = 0; - /* now send a disconnect event */ - genSM_Event (pSme->hSmeSm, SME_SM_EVENT_DISCONNECT, hSme); + /* now send a disconnect event */ + sme_SmEvent (pSme->hSmeSm, SME_SM_EVENT_DISCONNECT, hSme); } break; @@ -429,8 +455,16 @@ TI_STATUS sme_SetParam (TI_HANDLE hSme, paramInfo_t *pParam) /* set new connection mode */ pSme->eConnectMode = pParam->content.smeConnectionMode; pSme->uScanCount = 0; + if (CONNECT_MODE_AUTO == pSme->eConnectMode) + { + pSme->hScanResultTable = pSme->hSmeScanResultTable; + } + else if (CONNECT_MODE_MANUAL == pSme->eConnectMode) + { + pSme->hScanResultTable = pSme->hScanCncnScanResulTable; + } /* now send a disconnect event */ - genSM_Event (pSme->hSmeSm, SME_SM_EVENT_DISCONNECT, hSme); + sme_SmEvent (pSme->hSmeSm, SME_SM_EVENT_DISCONNECT, hSme); } break; @@ -442,7 +476,7 @@ TI_STATUS sme_SetParam (TI_HANDLE hSme, paramInfo_t *pParam) pSme->eBssType = pParam->content.smeDesiredBSSType; pSme->uScanCount = 0; /* now send a disconnect event */ - genSM_Event (pSme->hSmeSm, SME_SM_EVENT_DISCONNECT, hSme); + sme_SmEvent (pSme->hSmeSm, SME_SM_EVENT_DISCONNECT, hSme); } break; @@ -453,7 +487,7 @@ TI_STATUS sme_SetParam (TI_HANDLE hSme, paramInfo_t *pParam) pSme->bConstantScan = TI_TRUE; pSme->uScanCount = 0; /* now send a disconnect event */ - genSM_Event (pSme->hSmeSm, SME_SM_EVENT_DISCONNECT, hSme); + sme_SmEvent (pSme->hSmeSm, SME_SM_EVENT_DISCONNECT, hSme); } else { @@ -580,8 +614,8 @@ void sme_ScanResultCB (TI_HANDLE hSme, EScanCncnResultStatus eStatus, { #ifndef XCC_MODULE_INCLUDED if ((pSme->tSsid.len == pFrameInfo->parsedIEs->content.iePacket.pSsid->hdr[ 1 ]) && - (0 == os_memoryCompare (pSme->hOS, &(pSme->tSsid.str[ 0 ]), - &(pFrameInfo->parsedIEs->content.iePacket.pSsid->serviceSetId[ 0 ]), + (0 == os_memoryCompare (pSme->hOS, (TI_UINT8 *)&(pSme->tSsid.str[ 0 ]), + (TI_UINT8 *)&(pFrameInfo->parsedIEs->content.iePacket.pSsid->serviceSetId[ 0 ]), pSme->tSsid.len))) #endif { @@ -602,7 +636,7 @@ void sme_ScanResultCB (TI_HANDLE hSme, EScanCncnResultStatus eStatus, else /* manual mode */ { - if (TI_OK != scanResultTable_UpdateEntry (pSme->hScanResultTable, pFrameInfo->bssId, pFrameInfo)) + if (TI_OK != scanResultTable_UpdateEntry (pSme->hSmeScanResultTable, pFrameInfo->bssId, pFrameInfo)) { TRACE6(pSme->hReport, REPORT_SEVERITY_ERROR , "sme_ScanResultCB: unable to update application scan entry for BSSID %02x:%02x:%02x:%02x:%02x:%02x\n", (*pFrameInfo->bssId)[ 0 ], (*pFrameInfo->bssId)[ 1 ], (*pFrameInfo->bssId)[ 2 ], (*pFrameInfo->bssId)[ 3 ], (*pFrameInfo->bssId)[ 4 ], (*pFrameInfo->bssId)[ 5 ]); } @@ -635,7 +669,7 @@ void sme_ScanResultCB (TI_HANDLE hSme, EScanCncnResultStatus eStatus, { TRACE0(pSme->hReport, REPORT_SEVERITY_INFORMATION , "sme_ScanResultCB: No candidate available, sending connect failure\n"); - genSM_Event (pSme->hSmeSm, SME_SM_EVENT_CONNECT_FAILURE, hSme); + sme_SmEvent (pSme->hSmeSm, SME_SM_EVENT_CONNECT_FAILURE, hSme); break; } @@ -668,7 +702,7 @@ void sme_ScanResultCB (TI_HANDLE hSme, EScanCncnResultStatus eStatus, { TRACE0(pSme->hReport, REPORT_SEVERITY_INFORMATION , "IBSS SELECT FAILURE - No channel !!!\n\n"); - genSM_Event (pSme->hSmeSm, SME_SM_EVENT_CONNECT_FAILURE, hSme); + sme_SmEvent (pSme->hSmeSm, SME_SM_EVENT_CONNECT_FAILURE, hSme); break; } @@ -679,7 +713,7 @@ void sme_ScanResultCB (TI_HANDLE hSme, EScanCncnResultStatus eStatus, { TRACE0(pSme->hReport, REPORT_SEVERITY_ERROR , "IBSS SELECT FAILURE - could not open self site !!!\n\n"); - genSM_Event (pSme->hSmeSm, SME_SM_EVENT_CONNECT_FAILURE, hSme); + sme_SmEvent (pSme->hSmeSm, SME_SM_EVENT_CONNECT_FAILURE, hSme); break; } @@ -692,7 +726,7 @@ void sme_ScanResultCB (TI_HANDLE hSme, EScanCncnResultStatus eStatus, } /* a connection candidate is available, send a connect event */ - genSM_Event (pSme->hSmeSm, SME_SM_EVENT_CONNECT, hSme); + sme_SmEvent (pSme->hSmeSm, SME_SM_EVENT_CONNECT, hSme); } break; @@ -702,7 +736,7 @@ void sme_ScanResultCB (TI_HANDLE hSme, EScanCncnResultStatus eStatus, */ case SCAN_CRS_SCAN_STOPPED: TRACE0(pSme->hReport, REPORT_SEVERITY_INFORMATION , "sme_ScanResultCB: received scan stopped indication\n"); - genSM_Event (pSme->hSmeSm, SME_SM_EVENT_CONNECT_FAILURE, hSme); + sme_SmEvent (pSme->hSmeSm, SME_SM_EVENT_CONNECT_FAILURE, hSme); break; default: @@ -712,61 +746,6 @@ void sme_ScanResultCB (TI_HANDLE hSme, EScanCncnResultStatus eStatus, } /** - * \fn sme_AppScanResult - * \brief Callback function from scan concentrator app for results and scan complete indications - * - * Callback function from scan concentrator app for results and scan complete indications, used - * for scans wehen the SME is in manual. - * - * \param hSme - handle to the SME object - * \param eStatus - the reason for calling the CB - * \param pFrameInfo - frame information (if the CB is called due to received frame) - * \param uResultCount - number of results rceived - * \return None - */ -void sme_AppScanResult (TI_HANDLE hSme, EScanCncnResultStatus eStatus, - TScanFrameInfo* pFrameInfo) -{ - TSme *pSme = (TSme*)hSme; - - /* in manual mode, store the frame in the SME scan result table */ - if (CONNECT_MODE_MANUAL == pSme->eConnectMode) - { - switch (eStatus) - { - /* a frame was received - update the scan result table */ - case SCAN_CRS_RECEIVED_FRAME: - TRACE6(pSme->hReport, REPORT_SEVERITY_INFORMATION , "sme_AppScanResult: received frame from BSSID %02x:%02x:%02x:%02x:%02x:%02x\n", (*pFrameInfo->bssId)[ 0 ], (*pFrameInfo->bssId)[ 1 ], (*pFrameInfo->bssId)[ 2 ], (*pFrameInfo->bssId)[ 3 ], (*pFrameInfo->bssId)[ 4 ], (*pFrameInfo->bssId)[ 5 ]); - - if (TI_OK != scanResultTable_UpdateEntry (pSme->hScanResultTable, pFrameInfo->bssId, pFrameInfo)) - { - TRACE6(pSme->hReport, REPORT_SEVERITY_ERROR , "sme_AppScanResult: unable to update entry for BSSID %02x:%02x:%02x:%02x:%02x:%02x because table is full\n", (*pFrameInfo->bssId)[ 0 ], (*pFrameInfo->bssId)[ 1 ], (*pFrameInfo->bssId)[ 2 ], (*pFrameInfo->bssId)[ 3 ], (*pFrameInfo->bssId)[ 4 ], (*pFrameInfo->bssId)[ 5 ]); - } - break; - - /* scan was completed successfully */ - case SCAN_CRS_SCAN_COMPLETE_OK: - /* an error occured, try selecting a site anyway */ - case SCAN_CRS_SCAN_ABORTED_FW_RESET: - case SCAN_CRS_SCAN_STOPPED: - case SCAN_CRS_SCAN_ABORTED_HIGHER_PRIORITY: - case SCAN_CRS_SCAN_FAILED: - case SCAN_CRS_TSF_ERROR: - TRACE1(pSme->hReport, REPORT_SEVERITY_INFORMATION , "sme_AppScanResult: received scan complete indication with status %d\n", eStatus); - - /* stablizie the scan result table - delete its contenst if no results were recived during last scan */ - scanResultTable_SetStableState (pSme->hScanResultTable); - break; - - default: - TRACE1(pSme->hReport, REPORT_SEVERITY_ERROR , "sme_AppScanResult: received unrecognized status %d\n", eStatus); - break; - } - } -} - - -/** * \fn sme_MeansurementScanResult * \brief Callback function from Meansurement for results * @@ -786,7 +765,7 @@ void sme_MeansurementScanResult (TI_HANDLE hSme, EScanCncnResultStatus eStatus, case SCAN_CRS_RECEIVED_FRAME: TRACE6(pSme->hReport, REPORT_SEVERITY_INFORMATION , "sme_MeansurementScanResult: received frame from BSSID %02x:%02x:%02x:%02x:%02x:%02x\n", (*pFrameInfo->bssId)[ 0 ], (*pFrameInfo->bssId)[ 1 ], (*pFrameInfo->bssId)[ 2 ], (*pFrameInfo->bssId)[ 3 ], (*pFrameInfo->bssId)[ 4 ], (*pFrameInfo->bssId)[ 5 ]); - if (TI_OK != scanResultTable_UpdateEntry (pSme->hScanResultTable, pFrameInfo->bssId, pFrameInfo)) + if (TI_OK != scanResultTable_UpdateEntry (pSme->hSmeScanResultTable, pFrameInfo->bssId, pFrameInfo)) { TRACE6(pSme->hReport, REPORT_SEVERITY_ERROR , "sme_MeansurementScanResult: unable to update entry for BSSID %02x:%02x:%02x:%02x:%02x:%02x because table is full\n", (*pFrameInfo->bssId)[ 0 ], (*pFrameInfo->bssId)[ 1 ], (*pFrameInfo->bssId)[ 2 ], (*pFrameInfo->bssId)[ 3 ], (*pFrameInfo->bssId)[ 4 ], (*pFrameInfo->bssId)[ 5 ]); } @@ -803,7 +782,7 @@ void sme_MeansurementScanResult (TI_HANDLE hSme, EScanCncnResultStatus eStatus, TRACE1(pSme->hReport, REPORT_SEVERITY_INFORMATION , "sme_MeansurementScanResult: received scan complete indication with status %d\n", eStatus); /* stablizie the scan result table - delete its contenst if no results were recived during last scan */ - scanResultTable_SetStableState (pSme->hScanResultTable); + scanResultTable_SetStableState (pSme->hSmeScanResultTable); break; default: @@ -838,7 +817,7 @@ void sme_ReportConnStatus (TI_HANDLE hSme, mgmtStatus_e eStatusType, TI_UINT32 u /* connection was successful */ case STATUS_SUCCESSFUL: pSme->bAuthSent = TI_TRUE; - genSM_Event (pSme->hSmeSm, SME_SM_EVENT_CONNECT_SUCCESS, hSme); + sme_SmEvent (pSme->hSmeSm, SME_SM_EVENT_CONNECT_SUCCESS, hSme); break; case STATUS_ASSOC_REJECT: @@ -859,11 +838,11 @@ void sme_ReportConnStatus (TI_HANDLE hSme, mgmtStatus_e eStatusType, TI_UINT32 u /* if the next connection candidate exists */ if (NULL != pSme->pCandidate) { - genSM_Event (pSme->hSmeSm, SME_SM_EVENT_CONNECT, hSme); + sme_SmEvent (pSme->hSmeSm, SME_SM_EVENT_CONNECT, hSme); } else { - genSM_Event (pSme->hSmeSm, SME_SM_EVENT_CONNECT_FAILURE, hSme); + sme_SmEvent (pSme->hSmeSm, SME_SM_EVENT_CONNECT_FAILURE, hSme); } break; @@ -872,7 +851,7 @@ void sme_ReportConnStatus (TI_HANDLE hSme, mgmtStatus_e eStatusType, TI_UINT32 u /* we use this status at SME, if != 0 means that assoc frame sent */ case STATUS_UNSPECIFIED: pSme->bAuthSent = TI_TRUE; - genSM_Event (pSme->hSmeSm, SME_SM_EVENT_CONNECT_FAILURE, hSme); + sme_SmEvent (pSme->hSmeSm, SME_SM_EVENT_CONNECT_FAILURE, hSme); break; default: @@ -907,7 +886,7 @@ void sme_ReportApConnStatus (TI_HANDLE hSme, mgmtStatus_e eStatusType, TI_UINT32 case STATUS_SG_RESELECT: pSme->bReselect = TI_TRUE; pSme->bConnectRequired = TI_TRUE; - genSM_Event (pSme->hSmeSm, SME_SM_EVENT_CONNECT_FAILURE, hSme); + sme_SmEvent (pSme->hSmeSm, SME_SM_EVENT_CONNECT_FAILURE, hSme); break; /* shouldn't happen (not from AP conn) */ @@ -926,11 +905,11 @@ void sme_ReportApConnStatus (TI_HANDLE hSme, mgmtStatus_e eStatusType, TI_UINT32 /* keep the disassociation status and code, for sending event to user-mode */ pSme->tDisAssoc.eMgmtStatus = eStatusType; pSme->tDisAssoc.uStatusCode = uStatusCode; - genSM_Event (pSme->hSmeSm, SME_SM_EVENT_CONNECT_FAILURE, hSme); + sme_SmEvent (pSme->hSmeSm, SME_SM_EVENT_CONNECT_FAILURE, hSme); break; case STATUS_DISCONNECT_DURING_CONNECT: - genSM_Event (pSme->hSmeSm, SME_SM_EVENT_DISCONNECT, hSme); + sme_SmEvent (pSme->hSmeSm, SME_SM_EVENT_DISCONNECT, hSme); break; default: @@ -940,15 +919,14 @@ void sme_ReportApConnStatus (TI_HANDLE hSme, mgmtStatus_e eStatusType, TI_UINT32 } /** - * \fn sme_GetSmeScanResultTableHandler - * \brief get the handler to the Sme Scan Result Table. + * \fn sme_ConnectScanReport + * \brief get the handler to the Scan Result Table used for connection to AP. * * \param hSme - handle to the SME object * \param uStatus code - extended status information (if available) * \return None - * \sa sme_ReportConnStatus */ -void sme_GetSmeScanResultTableHandler (TI_HANDLE hSme, TI_HANDLE *hScanResultTable) +void sme_ConnectScanReport (TI_HANDLE hSme, TI_HANDLE *hScanResultTable) { TSme *pSme = (TSme*)hSme; @@ -956,6 +934,22 @@ void sme_GetSmeScanResultTableHandler (TI_HANDLE hSme, TI_HANDLE *hScanResultTab } /** + * \fn sme_MeasureScanReport + * \brief get the handler to the Sme Scan Result Table. + * + * \param hSme - handle to the SME object + * \param uStatus code - extended status information (if available) + * \return None + */ +void sme_MeasureScanReport (TI_HANDLE hSme, TI_HANDLE *hScanResultTable) +{ + TSme *pSme = (TSme*)hSme; + + *hScanResultTable = pSme->hSmeScanResultTable; +} + + +/** * \fn SME_ConnectRequired * \brief start connection sequence by set the flag ConnectRequired and issue DISCONNECT event. * called by CommandDispatcher in OSE OS. @@ -973,7 +967,7 @@ void SME_ConnectRequired (TI_HANDLE hSme) pSme->bConnectRequired = TI_TRUE; /* now send a disconnect event */ - genSM_Event (pSme->hSmeSm, SME_SM_EVENT_DISCONNECT, hSme); + sme_SmEvent (pSme->hSmeSm, SME_SM_EVENT_DISCONNECT, hSme); } /** @@ -993,5 +987,14 @@ void SME_Disconnect (TI_HANDLE hSme) pSme->bConstantScan = TI_FALSE; /* now send a disconnect event */ - genSM_Event (pSme->hSmeSm, SME_SM_EVENT_DISCONNECT, hSme); + sme_SmEvent (pSme->hSmeSm, SME_SM_EVENT_DISCONNECT, hSme); +} + +void sme_SmEvent(TI_HANDLE hGenSm, TI_UINT32 uEvent, void* pData) +{ + TSme *pSme = (TSme*)pData; + TGenSM *pGenSM = (TGenSM*)hGenSm; + + TRACE2(pSme->hReport, REPORT_SEVERITY_INFORMATION, "sme_SmEvent: Current State = %d, sending event %d\n", (pGenSM->uCurrentState), (uEvent)); + genSM_Event(pGenSM, uEvent, pData); } |