예제 #1
0
TI_STATUS TWD_EnableEvent (TI_HANDLE hTWD, TI_UINT32 event)
{
    TTwd  *pTWD = (TTwd *)hTWD;


    return eventMbox_UnMaskEvent (pTWD->hEventMbox, event, NULL, NULL);
}
예제 #2
0
파일: PowerSrv.c 프로젝트: aleho/ti_wilink
/****************************************************************************************
 *                        powerSrvSM_init                                                           *
 ****************************************************************************************
DESCRIPTION: Power Server module initialize function, called by the MAC Services in initialization phase
                performs the following:
                -   init the Power server to active state.
                -   call the init function of the state machine.

INPUT:      - hPowerSrv         - handle to the PowerSrv object.
            - hReport           - handle to the Report object.
            - hEventMbox        - handle to the Event Mbox object.
            - hCmdBld           - handle to the Command Builder object.

OUTPUT:
RETURN:    TI_STATUS - TI_OK on success else TI_NOK.
****************************************************************************************/
TI_STATUS powerSrv_init (TI_HANDLE hPowerSrv,
                         TI_HANDLE hReport,
                         TI_HANDLE hEventMbox,
                         TI_HANDLE hCmdBld,
                         TI_HANDLE hTimer)
{
    powerSrv_t* pPowerSrv = (powerSrv_t*)hPowerSrv;

    pPowerSrv->hReport = hReport;
    pPowerSrv->hEventMbox = hEventMbox;

    /*
    init PowerSrv state machine.
    */
    powerSrvSM_init (pPowerSrv->hPowerSrvSM, hReport, hCmdBld, hTimer);

    pPowerSrv->currentMode = USER_MODE;

    /*init all request with init values*/
    powerSrvCreatePssRequest(hPowerSrv,
                             USER_MODE,
                             HANDLED_REQUEST,
                             POWER_SAVE_OFF,
                             TI_FALSE,
                             NULL,
                             NULL,
                             NULL);
    powerSrvCreatePssRequest(hPowerSrv,
                             DRIVER_MODE,
                             HANDLED_REQUEST,
                             POWER_SAVE_OFF,
                             TI_FALSE,
                             NULL,
                             NULL,
                             NULL);
    pPowerSrv->userLastRequestMode = (powerSrvMode_e)POWER_SAVE_OFF;
    pPowerSrv->pCurrentRequest  = & pPowerSrv->userRequest;

    /*
    register for Event
    */

    eventMbox_RegisterEvent (hEventMbox,
                             TWD_OWN_EVENT_PS_REPORT,
                             (void *)powerSrv802_11PsReport,
                             hPowerSrv);

    eventMbox_UnMaskEvent (hEventMbox, TWD_OWN_EVENT_PS_REPORT, NULL, NULL);

    TRACE0(pPowerSrv->hReport, REPORT_SEVERITY_INIT, "powerSrv Initialized \n");

    return TI_OK;
}
예제 #3
0
파일: PowerSrv.c 프로젝트: aleho/ti_wilink
/****************************************************************************************
 *                        powerSrv_restart															*
 ****************************************************************************************
DESCRIPTION: Restart the scan SRV module upon recovery.
				-	init the Power server to active state.
				-	call the init function of the state machine.

INPUT:     	- hPowerSrv 			- handle to the PowerSrv object.

OUTPUT:
RETURN:    TI_STATUS - TI_OK on success else TI_NOK.
****************************************************************************************/
TI_STATUS powerSrv_restart(	TI_HANDLE hPowerSrv)
{
    powerSrv_t* pPowerSrv = (powerSrv_t*)hPowerSrv;
    PowerSrvSM_t *pPowerSrvSM = (PowerSrvSM_t*)pPowerSrv->hPowerSrvSM;
    /*
    init PowerSrv state machine.
    */
    /*
    the PowerSrvSM start in active mode (POWER_SRV_STATE_ACTIVE)
    the PowerSrvSM::currentState must be sync with the PowerSrv::desiredPowerModeProfile (POWER_MODE_ACTIVE).
    */
    pPowerSrvSM->currentState = POWER_SRV_STATE_ACTIVE;
    pPowerSrv->currentMode = USER_MODE;
    tmr_StopTimer (pPowerSrvSM->hPwrSrvSmTimer);

    /*init all request with init values*/
    powerSrvCreatePssRequest(hPowerSrv,
                             USER_MODE,
                             HANDLED_REQUEST,
                             POWER_SAVE_OFF,
                             TI_FALSE,
                             NULL,
                             NULL,
                             NULL);
    powerSrvCreatePssRequest(hPowerSrv,
                             DRIVER_MODE,
                             HANDLED_REQUEST,
                             POWER_SAVE_OFF,
                             TI_FALSE,
                             NULL,
                             NULL,
                             NULL);
    pPowerSrv->userLastRequestMode = (powerSrvMode_e)POWER_SAVE_OFF;
    pPowerSrv->pCurrentRequest 	= & pPowerSrv->userRequest;

    /*
    register for Event
    */
    eventMbox_RegisterEvent (pPowerSrv->hEventMbox,
                             TWD_OWN_EVENT_PS_REPORT,
                             (void *)powerSrv802_11PsReport,
                             hPowerSrv);

    eventMbox_UnMaskEvent (pPowerSrv->hEventMbox, TWD_OWN_EVENT_PS_REPORT, NULL, NULL);

    return TI_OK;
}
예제 #4
0
/**
 * \\n
 * \date 08-November-2005\n
 * \brief Initializes the measurement SRV object
 *
 * Function Scope \e Public.\n
 * \param hMeasurementSRV - handle to the measurement SRV object.\n
 * \param hReport - handle to the report object.\n
 * \param hCmdBld - handle to the Command Builder object.\n
 * \param hPowerSaveSRV - handle to the power save SRV object.\n
 */
TI_STATUS MacServices_measurementSRV_init (TI_HANDLE hMeasurementSRV,
        TI_HANDLE hReport,
        TI_HANDLE hCmdBld,
        TI_HANDLE hEventMbox,
        TI_HANDLE hPowerSaveSRV,
        TI_HANDLE hTimer)
{
	measurementSRV_t* pMeasurementSRV = (measurementSRV_t*)hMeasurementSRV;
	TI_INT32 i;

	/* store handles */
	pMeasurementSRV->hReport = hReport;
	pMeasurementSRV->hCmdBld = hCmdBld;
	pMeasurementSRV->hEventMbox = hEventMbox;
	pMeasurementSRV->hPowerSaveSRV = hPowerSaveSRV;
	pMeasurementSRV->hTimer = hTimer;

	/* Initialize the state machine */
	measurementSRVSM_init (hMeasurementSRV);

	/* allocate the module timers */
	pMeasurementSRV->hStartStopTimer = tmr_CreateTimer (pMeasurementSRV->hTimer);
	if (pMeasurementSRV->hStartStopTimer == NULL) {
		return TI_NOK;
	}
	pMeasurementSRV->bStartStopTimerRunning = TI_FALSE;

	for (i = 0; i < MAX_NUM_OF_MSR_TYPES_IN_PARALLEL; i++) {
		pMeasurementSRV->hRequestTimer[i] = tmr_CreateTimer (pMeasurementSRV->hTimer);
		if (pMeasurementSRV->hRequestTimer[i] == NULL) {
			return TI_NOK;
		}
		pMeasurementSRV->bRequestTimerRunning[i] = TI_FALSE;
	}

	/* register HAL callbacks */
	/* Register and Enable the Measure Start event in HAL */


	eventMbox_RegisterEvent (pMeasurementSRV->hEventMbox,
	                         TWD_OWN_EVENT_MEASUREMENT_START,
	                         (void *)MacServices_measurementSRV_measureStartCB,
	                         hMeasurementSRV);
	eventMbox_UnMaskEvent (pMeasurementSRV->hEventMbox, TWD_OWN_EVENT_MEASUREMENT_START, NULL, NULL);

	/* Register and Enable the Measurement Complete event in HAL.
	This event will be received when the Measurement duration expired,
	or after Stop Measure command. */

	eventMbox_RegisterEvent (pMeasurementSRV->hEventMbox,
	                         TWD_OWN_EVENT_MEASUREMENT_COMPLETE,
	                         (void *)MacServices_measurementSRV_measureCompleteCB,
	                         hMeasurementSRV);
	eventMbox_UnMaskEvent (pMeasurementSRV->hEventMbox, TWD_OWN_EVENT_MEASUREMENT_COMPLETE, NULL, NULL);

	/* Register and Enable the AP Discovery Complete event in HAL */
	eventMbox_RegisterEvent (pMeasurementSRV->hEventMbox,
	                         TWD_OWN_EVENT_AP_DISCOVERY_COMPLETE,
	                         (void *)MacServices_measurementSRV_apDiscoveryCompleteCB,
	                         hMeasurementSRV);
	eventMbox_UnMaskEvent (pMeasurementSRV->hEventMbox, TWD_OWN_EVENT_AP_DISCOVERY_COMPLETE, NULL, NULL);


	return TI_OK;
}
TI_STATUS TWD_Debug (TI_HANDLE hTWD, TI_UINT32 funcType, void *pParam)
{
    TTwd *pTWD			= (TTwd *)hTWD;    
    TI_UINT32 GenericVal;
    TFwDebugParams* pMemDebug	= (TFwDebugParams*)pParam;

    static TI_UINT32 GenericAddr;
#ifdef REPORT_LOG
    static int    iStart[100]; /* Note: it is not used properly anyway */
#endif
	/* check paramemters validity */
	if (pMemDebug == NULL)
	{
		WLAN_OS_REPORT(("TWD_Debug: Error - pParam is NULL\n"));
		return TI_NOK;
	}

    switch (funcType)
    {
	case TWD_PRINT_SYS_INFO:
		WLAN_OS_REPORT(("PLATFORM = TNETW125x\n"));
		WLAN_OS_REPORT(("ACCESS MODE = SLAVE\n"));
		break;

	case TWD_SET_GENERIC_ADDR:
		/* check paramemters validity */
		if (pParam == NULL)
		{
			WLAN_OS_REPORT(("TWD_Debug, TWD_SET_GENERIC_ADDR Error: No Perameter received\n"));		
			return TI_NOK;
		}
		GenericAddr = *(TI_UINT32 *)pParam;
        break;

	case TWD_READ_MEM:
        WLAN_OS_REPORT(("TWD_Debug, TWD_READ_MEM, Addr:	0x%X\n", pMemDebug->addr));				

		/* check paramemters validity */
		if (pMemDebug == NULL)
		{
			WLAN_OS_REPORT(("TWD_Debug, TWD_READ_MEM Error: No Perameters received\n"));		
			return TI_NOK;
		}
  
		/* validate length */
		*(TI_UINT32*)&pMemDebug->length = 4;		

		/* If Address in valid Memory area and there is enough space for Length to R/W */
		if (TWD_isValidMemoryAddr(hTWD, pMemDebug) == TI_TRUE)
		{
			WLAN_OS_REPORT(("TWD_Debug, TWD_READ_MEM: Reading Valid memory Address\n"));		

			/* Init buf before reading */
			os_memorySet(pTWD->hOs, (void*)pMemDebug->UBuf.buf8, 0, 4);
			if ( TWD_readMem (hTWD, pMemDebug, NULL, NULL) != TI_OK )
			{
				WLAN_OS_REPORT(("TWD_Debug, read memory failed\n"));	
				return TI_NOK;
			}
		}

		else if (TWD_isValidRegAddr(hTWD, pMemDebug) == TI_TRUE)
		{
			WLAN_OS_REPORT(("TWD_Debug, TWD_READ_MEM: Reading Valid register Address\n"));		

			/* Init buf before reading */
			*(TI_UINT32*)&pMemDebug->UBuf.buf32 = 0;

			if ( TWD_readMem (hTWD, pMemDebug, NULL, NULL) != TI_OK )
			{
				WLAN_OS_REPORT(("TWD_Debug, read register failed\n"));	
				return TI_NOK;
			}

		}

		/* address Not in valid Area */ 
		else
		{
			WLAN_OS_REPORT(("TWD_Debug, TWD_READ_MEM Address is not Valid\n"));		
			return TI_NOK;
		}

		/* print read memory */
		{

			WLAN_OS_REPORT(("Read from MEM Addr 0x%x the following values:\n", ((TFwDebugParams*)pMemDebug)->addr));

			WLAN_OS_REPORT(("0x%X	",((TFwDebugParams*)pMemDebug)->UBuf.buf32[0]));
			WLAN_OS_REPORT(("\n"));
		}

		break;

	case TWD_WRITE_MEM:
        WLAN_OS_REPORT(("TWD_Debug, TWD_WRITE_MEM, Addr:	0x%X\n", pMemDebug->addr));				

		/* check paramemters validity */
		if (pMemDebug == NULL)
		{
			WLAN_OS_REPORT(("TWD_Debug, TWD_WRITE_MEM Error: No Perameters received\n"));				
			return TI_NOK;
		}

		/* validate length */
		*(TI_UINT32*)&pMemDebug->length = 4;		

		/* If Address in valid Memory area and there is enough space for Length to R/W */
		if (TWD_isValidMemoryAddr(hTWD, pMemDebug) == TI_TRUE)
		{
			WLAN_OS_REPORT(("TWD_Debug, TWD_WRITE_MEM:	Writing Valid memory Address\n"));		


			return ( TWD_writeMem (hTWD, pMemDebug, NULL, NULL) );
		}
		
		else if (TWD_isValidRegAddr(hTWD, pMemDebug) == TI_TRUE)
		{

			WLAN_OS_REPORT(("TWD_Debug, TWD_WRITE_MEM: Writing Valid register Address\n"));		

			return ( TWD_writeMem (hTWD, pMemDebug, NULL, NULL) );
		}
		/* address Not in valid Area */ 

		else
		{
			WLAN_OS_REPORT(("TWD_Debug, TWD_WRITE_MEM Address is not Valid\n"));		
			return TI_NOK;
		}

		break;

         /*  HAL Control functions */

	case TWD_PRINT_MBOX_QUEUE_INFO:
		cmdQueue_Print (pTWD->hCmdQueue);         
        break;
            
	case TWD_PRINT_MBOX_PRINT_CMD:
		/* check paramemters validity */
		if (pParam == NULL)
		{
			WLAN_OS_REPORT(("TWD_Debug, TWD_PRINT_MBOX_PRINT_CMD Error: No Perameter received\n"));				
			return TI_NOK;
		}
		cmdQueue_PrintHistory (pTWD->hCmdQueue, *(int *)pParam);            
        break;

	case TWD_PRINT_EVENT_MBOX_INFO:
		eventMbox_Print (pTWD->hEventMbox);         
        break;
        
	case TWD_PRINT_EVENT_MBOX_MASK:
		/* check paramemters validity */
		if (pParam == NULL)
		{
			WLAN_OS_REPORT(("TWD_Debug, TWD_PRINT_EVENT_MBOX_MASK Error: No Perameter received\n"));				
			return TI_NOK;
		}
		if ( eventMbox_MaskEvent (pTWD->hEventMbox, *(int *)pParam, NULL, NULL) == TI_NOK )
		{
			WLAN_OS_REPORT(("TWD_Debug, TWD_PRINT_EVENT_MBOX_MASK Error: eventMbox_EvMask failed\n"));				
			return(TI_NOK);
		}
        break;
        
	case TWD_PRINT_EVENT_MBOX_UNMASK:
		/* check paramemters validity */
		if (pParam == NULL)
		{
			WLAN_OS_REPORT(("TWD_Debug, TWD_PRINT_EVENT_MBOX_UNMASK Error: No Perameter received\n"));				
			return TI_NOK;
		}
		if ( eventMbox_UnMaskEvent (pTWD->hEventMbox, *(int *)pParam, NULL, NULL) == TI_NOK )
		{
			WLAN_OS_REPORT(("TWD_Debug, TWD_PRINT_EVENT_MBOX_UNMASK Error: eventMbox_EvUnMask failed\n"));				
			return(TI_NOK);
		}
        break;

	case TWD_PRINT_ISTART:
		{
			int i;
            for (i=0; i<20; i+=4)
            {
				WLAN_OS_REPORT(("%4d: %08d %08d %08d %08d\n", 
								i, iStart[i+0], iStart[i+1], iStart[i+2], iStart[i+3]));
			}
		}
        break;

	case TWD_PRINT_LIST_REGS_THROG_MBOX:
		{
			int i;
            TI_UINT32 RegAddr;
    
			RegAddr = *(TI_UINT32 *)pParam;
			WLAN_OS_REPORT (("PrintListRegsThroughMbox ---------------------\n"));
    
			for (i = 0; i < 8; i++, RegAddr += 16)
            {
				TWD_PrintMemRegs (hTWD, RegAddr +  0, 4, TNETW_MAC_REGISTERS);
                TWD_PrintMemRegs (hTWD, RegAddr +  4, 4, TNETW_MAC_REGISTERS);
				TWD_PrintMemRegs (hTWD, RegAddr +  8, 4, TNETW_MAC_REGISTERS);
				TWD_PrintMemRegs (hTWD, RegAddr + 12, 4, TNETW_MAC_REGISTERS);
			}
		}
        break;
    
	case TWD_PRINT_LIST_MEM_THROG_MBOX:
		/* check paramemters validity */
		if (pParam == NULL)
		{
			WLAN_OS_REPORT(("TWD_Debug, TWD_PRINT_LIST_MEM_THROG_MBOX Error: No Perameter received\n"));				
			return TI_NOK;
		}
		TWD_PrintMemRegs (hTWD, *(TI_UINT32*)pParam, 256, TNETW_INTERNAL_RAM);
        break;
                  
	case TWD_SET_MAC_CLOCK:
		/* check paramemters validity */
		if (pParam == NULL)
		{
			WLAN_OS_REPORT(("TWD_Debug, TWD_SET_MAC_CLOCK Error: No Perameter received\n"));				
			return TI_NOK;
		}

		GenericVal = *(TI_UINT32*)pParam;
        TWD_CfgMacClock (hTWD, GenericVal);
        break;

#if defined(TNETW1150)
	case TWD_SET_ARM_CLOCK:
		/* check paramemters validity */
		if (pParam == NULL)
		{
			WLAN_OS_REPORT(("TWD_Debug, TWD_SET_ARM_CLOCK Error: No Perameter received\n"));				
			return TI_NOK;
		}

		GenericVal = *(TI_UINT32*)pParam;
        TWD_ArmClockSet (hTWD, GenericVal);
        break;
#endif

	/*
    * Rx functions 
    */
#ifdef TI_DBG
    case TWD_PRINT_RX_INFO:
		rxXfer_PrintStats (pTWD->hRxXfer);  
        break;

	case TWD_CLEAR_RX_INFO:
		rxXfer_ClearStats (pTWD->hRxXfer);  
        break;

#endif /* TI_DBG */

	/*
    * Acx functions 
    */
    case TWD_PRINT_ACX_MAP:
		TWD_PrintMemoryMap (hTWD);           
        break;
            
	case TWD_PRINT_ACX_STAT:
		TWD_ItrStatistics (hTWD, (void*)TWD_StatisticsReadCB, hTWD, (void *)&pTWD->acxStatistic);          
        break;
            			
	/*
	* General functions 
    */
    case TWD_PRINT_HELP:

		WLAN_OS_REPORT(("Registers: \n"));
        WLAN_OS_REPORT(("        %02d - TWD_PRINT_SYS_INFO \n\n", TWD_PRINT_SYS_INFO));
        WLAN_OS_REPORT(("        %02d - TWD_SET_GENERIC_ADDR \n", TWD_SET_GENERIC_ADDR));
		WLAN_OS_REPORT(("        %02d - TWD_READ_REG_OR_4_BYTES_MEM <addr (reg base=0x300000, mem base=0x40000)>\n", TWD_READ_MEM));
		WLAN_OS_REPORT(("        %02d - TWD_WRITE_REG_OR_4_BYTES_MEM <addr (reg base=0x300000, mem base=0x40000)> <val (chars<=4)>\n", TWD_WRITE_MEM));

        WLAN_OS_REPORT(("Control: \n"));
        WLAN_OS_REPORT(("        %02d - TWD_PRINT_MBOX_QUEUE_INFO \n",TWD_PRINT_MBOX_QUEUE_INFO));
        WLAN_OS_REPORT(("        %02d - TWD_PRINT_MBOX_QUEUE_PRINT_CMD \n",TWD_PRINT_MBOX_PRINT_CMD));
        WLAN_OS_REPORT(("        %02d - TWD_MAILBOX_HISTORY_PRINT \n", TWD_MAILBOX_HISTORY_PRINT));
        WLAN_OS_REPORT(("        %02d - TWD_MAC_REG \n", TWD_MAC_REG));
        WLAN_OS_REPORT(("        %02d - TWD_SET_ARM_CLOCK \n", TWD_SET_ARM_CLOCK));
        WLAN_OS_REPORT(("        %02d - TWD_SET_MAC_CLOCK \n", TWD_SET_MAC_CLOCK));

        WLAN_OS_REPORT(("Rx: \n"));
        WLAN_OS_REPORT(("        %02d - TWD_PRINT_RX_INFO \n", TWD_PRINT_RX_INFO));
        WLAN_OS_REPORT(("        %02d - TWD_CLEAR_RX_INFO \n", TWD_CLEAR_RX_INFO));

        WLAN_OS_REPORT(("ACX: \n"));
        WLAN_OS_REPORT(("        %02d - TWD_PRINT_ACX_MAP \n", TWD_PRINT_ACX_MAP));
		WLAN_OS_REPORT(("        %02d - TWD_PRINT_ACX_STAT \n", TWD_PRINT_ACX_STAT));

        WLAN_OS_REPORT(("General: \n")); 
        WLAN_OS_REPORT(("        %02d - TWD_PRINT_LIST_REGS_THROG_MBOX \n",  TWD_PRINT_LIST_REGS_THROG_MBOX));
        WLAN_OS_REPORT(("        %02d - TWD_PRINT_LIST_MEM_THROG_MBOX \n",  TWD_PRINT_LIST_MEM_THROG_MBOX));
            
        WLAN_OS_REPORT(("Recovery: \n")); 
        WLAN_OS_REPORT(("        %02d - TWD_CHECK_HW \n", TWD_CHECK_HW));
        WLAN_OS_REPORT(("        %02d - TWD_PRINT_HW_STATUS \n", TWD_PRINT_HW_STATUS));

		WLAN_OS_REPORT(("Event Mail Box: \n"));
        WLAN_OS_REPORT(("        %02d - PRINT EVENT MBOX INFO \n",  TWD_PRINT_EVENT_MBOX_INFO));
        WLAN_OS_REPORT(("        %02d - PRINT EVENT MBOX MASK \n",  TWD_PRINT_EVENT_MBOX_MASK));
        WLAN_OS_REPORT(("        %02d - PRINT EVENT MBOX UNMASK \n",TWD_PRINT_EVENT_MBOX_UNMASK));

		WLAN_OS_REPORT(("Other: \n"));
        WLAN_OS_REPORT(("        %02d - TWD_PRINT_FW_EVENT_INFO \n",  TWD_PRINT_FW_EVENT_INFO));
        WLAN_OS_REPORT(("        %02d - TWD_PRINT_TW_IF_INFO \n",  TWD_PRINT_TW_IF_INFO));
        WLAN_OS_REPORT(("        %02d - TWD_PRINT_MBOX_INFO \n",  TWD_PRINT_MBOX_INFO));
        WLAN_OS_REPORT(("        %02d - TWD_FORCE_TEMPLATES_RATES \n",  TWD_FORCE_TEMPLATES_RATES));
        break;
       
	case TWD_PRINT_FW_EVENT_INFO:
        fwEvent_PrintStat(pTWD->hFwEvent);
        break;
	case TWD_PRINT_TW_IF_INFO:
        twIf_PrintQueues(pTWD->hTwIf);
        break;
	case TWD_PRINT_MBOX_INFO:
        cmdMbox_PrintInfo(pTWD->hCmdMbox);
        break;

    /*
    * Recovery functions 
    */       
	case TWD_CHECK_HW:
		{
			int Stt;

            Stt = TWD_CmdHealthCheck (hTWD);
            WLAN_OS_REPORT(("CheckHwStatus=%d \n", Stt));
		}
        break;

	case TWD_MAILBOX_HISTORY_PRINT:
		WLAN_OS_REPORT (("PrintMailBoxHistory called \n"));
#ifdef TI_DBG
		/* check paramemters validity */
		if (pParam == NULL)
		{
			WLAN_OS_REPORT(("TWD_Debug, TWD_MAILBOX_HISTORY_PRINT Error: No Perameter received\n"));				
			return TI_NOK;
		}

        cmdQueue_PrintHistory (pTWD->hCmdQueue, *(int *)pParam);
#endif
        break;

	case TWD_FORCE_TEMPLATES_RATES:
		if (pParam == NULL)
		{
			WLAN_OS_REPORT(("TWD_Debug, TWD_FORCE_TEMPLATES_RATES Error: No Perameter received\n"));		
			return TI_NOK;
		}
		cmdBld_DbgForceTemplatesRates (pTWD->hCmdBld, *(TI_UINT32 *)pParam);
        break;


	default:
		WLAN_OS_REPORT (("Invalid function type=%d\n\n", funcType));
        break;

	} /* switch (funcType) */

    return TI_OK;
} 
예제 #6
0
TI_STATUS TWD_Debug (TI_HANDLE hTWD, TI_UINT32 funcType, void *pParam)
{
    TTwd *pTWD 					= (TTwd *)hTWD;    
    TI_UINT32 GenericVal;
	TFwDebugParams* pMemDebug	= (TFwDebugParams*)pParam;

    static TI_UINT32 GenericAddr;

	/* check paramemters validity */
	if (pMemDebug == NULL)
	{	
		return TI_NOK;
	}

    switch (funcType)
    {
	case TWD_PRINT_SYS_INFO:
		break;

	case TWD_SET_GENERIC_ADDR:
		/* check paramemters validity */
		if (pParam == NULL)
		{	
			return TI_NOK;
		}
		GenericAddr = *(TI_UINT32 *)pParam;
        break;

	case TWD_READ_MEM:		

		/* check paramemters validity */
		if (pMemDebug == NULL)
		{
			return TI_NOK;
		}
  
		/* validate length */
		*(TI_UINT32*)&pMemDebug->length = 4;		

		/* If Address in valid Memory area and there is enough space for Length to R/W */
		if (TWD_isValidMemoryAddr(hTWD, pMemDebug) == TI_TRUE)
		{		

			/* Init buf before reading */
			os_memorySet(pTWD->hOs, (void*)pMemDebug->UBuf.buf8, 0, 4);
			if ( TWD_readMem (hTWD, pMemDebug, NULL, NULL) != TI_OK )
			{
				return TI_NOK;
			}
		}

		else if (TWD_isValidRegAddr(hTWD, pMemDebug) == TI_TRUE)
		{
			/* Init buf before reading */
			*(TI_UINT32*)&pMemDebug->UBuf.buf32 = 0;

			if ( TWD_readMem (hTWD, pMemDebug, NULL, NULL) != TI_OK )
			{
				return TI_NOK;
			}

		}

		/* address Not in valid Area */ 
		else
		{	
			return TI_NOK;
		}

		/* print read memory */
		{
		}

		break;

	case TWD_WRITE_MEM:		

		/* check paramemters validity */
		if (pMemDebug == NULL)
		{			
			return TI_NOK;
		}

		/* validate length */
		*(TI_UINT32*)&pMemDebug->length = 4;		

		/* If Address in valid Memory area and there is enough space for Length to R/W */
		if (TWD_isValidMemoryAddr(hTWD, pMemDebug) == TI_TRUE)
		{
			return ( TWD_writeMem (hTWD, pMemDebug, NULL, NULL) );
		}
		
		else if (TWD_isValidRegAddr(hTWD, pMemDebug) == TI_TRUE)
		{		
			return ( TWD_writeMem (hTWD, pMemDebug, NULL, NULL) );
		}
		/* address Not in valid Area */ 

		else
		{
			return TI_NOK;
		}

		break;

         /*  HAL Control functions */

	case TWD_PRINT_MBOX_QUEUE_INFO:
		cmdQueue_Print (pTWD->hCmdQueue);         
        break;
            
	case TWD_PRINT_MBOX_PRINT_CMD:
		/* check paramemters validity */
		if (pParam == NULL)
		{			
			return TI_NOK;
		}
		cmdQueue_PrintHistory (pTWD->hCmdQueue, *(int *)pParam);            
        break;

	case TWD_PRINT_EVENT_MBOX_INFO:
		eventMbox_Print (pTWD->hEventMbox);         
        break;
        
	case TWD_PRINT_EVENT_MBOX_MASK:
		/* check paramemters validity */
		if (pParam == NULL)
		{		
			return TI_NOK;
		}
		if ( eventMbox_MaskEvent (pTWD->hEventMbox, *(int *)pParam, NULL, NULL) == TI_NOK )
		{
			return(TI_NOK);
		}
        break;
        
	case TWD_PRINT_EVENT_MBOX_UNMASK:
		/* check paramemters validity */
		if (pParam == NULL)
		{
			return TI_NOK;
		}
		if ( eventMbox_UnMaskEvent (pTWD->hEventMbox, *(int *)pParam, NULL, NULL) == TI_NOK )
		{	
			return(TI_NOK);
		}
        break;

	case TWD_PRINT_ISTART:
		{
		}
        break;

	case TWD_PRINT_LIST_REGS_THROG_MBOX:
		{
			int i;
            TI_UINT32 RegAddr;
    
			RegAddr = *(TI_UINT32 *)pParam;
    
			for (i = 0; i < 8; i++, RegAddr += 16)
            {
				TWD_PrintMemRegs (hTWD, RegAddr +  0, 4, TNETW_MAC_REGISTERS);
                TWD_PrintMemRegs (hTWD, RegAddr +  4, 4, TNETW_MAC_REGISTERS);
				TWD_PrintMemRegs (hTWD, RegAddr +  8, 4, TNETW_MAC_REGISTERS);
				TWD_PrintMemRegs (hTWD, RegAddr + 12, 4, TNETW_MAC_REGISTERS);
			}
		}
        break;
    
	case TWD_PRINT_LIST_MEM_THROG_MBOX:
		/* check paramemters validity */
		if (pParam == NULL)
		{			
			return TI_NOK;
		}
		TWD_PrintMemRegs (hTWD, *(TI_UINT32*)pParam, 256, TNETW_INTERNAL_RAM);
        break;
                  
	case TWD_SET_MAC_CLOCK:
		/* check paramemters validity */
		if (pParam == NULL)
		{		
			return TI_NOK;
		}

		GenericVal = *(TI_UINT32*)pParam;
        TWD_CfgMacClock (hTWD, GenericVal);
        break;

#if defined(TNETW1150)
	case TWD_SET_ARM_CLOCK:
		/* check paramemters validity */
		if (pParam == NULL)
		{			
			return TI_NOK;
		}

		GenericVal = *(TI_UINT32*)pParam;
        TWD_ArmClockSet (hTWD, GenericVal);
        break;
#endif

	/*
    * Rx functions 
    */
#ifdef TI_DBG
    case TWD_PRINT_RX_INFO:
		rxXfer_PrintStats (pTWD->hRxXfer);  
        break;

	case TWD_CLEAR_RX_INFO:
		rxXfer_ClearStats (pTWD->hRxXfer);  
        break;

#endif /* TI_DBG */

	/*
    * Acx functions 
    */
    case TWD_PRINT_ACX_MAP:
		TWD_PrintMemoryMap (hTWD);           
        break;
            
	case TWD_PRINT_ACX_STAT:
		TWD_ItrStatistics (hTWD, (void*)TWD_StatisticsReadCB, hTWD, (void *)&pTWD->acxStatistic);          
        break;
            			
	/*
	* General functions 
    */
    case TWD_PRINT_HELP:

        break;
       
	case TWD_PRINT_FW_EVENT_INFO:
        fwEvent_PrintStat(pTWD->hFwEvent);
        break;
	case TWD_PRINT_TW_IF_INFO:
        twIf_PrintQueues(pTWD->hTwIf);
        break;
	case TWD_PRINT_MBOX_INFO:
        cmdMbox_PrintInfo(pTWD->hCmdMbox);
        break;

    /*
    * Recovery functions 
    */       
	case TWD_CHECK_HW:
		{
			int Stt;

            Stt = TWD_CmdHealthCheck (hTWD);
		}
        break;

	case TWD_MAILBOX_HISTORY_PRINT:
#ifdef TI_DBG
		/* check paramemters validity */
		if (pParam == NULL)
		{		
			return TI_NOK;
		}

        cmdQueue_PrintHistory (pTWD->hCmdQueue, *(int *)pParam);
#endif
        break;

	case TWD_FORCE_TEMPLATES_RATES:
		if (pParam == NULL)
		{
			return TI_NOK;
		}
		cmdBld_DbgForceTemplatesRates (pTWD->hCmdBld, *(TI_UINT32 *)pParam);
        break;


	default:
        break;

	} /* switch (funcType) */

    return TI_OK;
}