⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pddmain.cpp

📁 Microsoft WinCE 6.0 BSP FINAL release source code for use with the i.MX27ADS TO2 WCE600_FINAL_MX27_S
💻 CPP
字号:
/*
 *
 * Copyright (C) 2003-2004, MOTOROLA, INC. All Rights Reserved
 * THIS SOURCE CODE IS CONFIDENTIAL AND PROPRIETARY AND MAY NOT
 * BE USED OR DISTRIBUTED WITHOUT THE WRITTEN PERMISSION OF
 * MOTOROLA, INC.
 *
 * Copyright (C) 2004-2006, Freescale Semiconductor, Inc. All Rights Reserved.
 * THIS SOURCE CODE, AND ITS USE AND DISTRIBUTION, IS SUBJECT TO THE TERMS
 * AND CONDITIONS OF THE APPLICABLE LICENSE AGREEMENT 
 *
 */
#define __PDDMAIN_CPP__
#include "pddmain.h"



extern "C" BOOL WINAPI DllEntry( HANDLE  hInstDll,
                                 DWORD   dwReason,
                                 LPVOID  lpvReserved )
{
	DEBUGMSG( 1, (TEXT("PCCARD: +DllEntry\n")));
	switch( dwReason )
	{
      	case DLL_PROCESS_ATTACH:
        	DEBUGREGISTER( ( HINSTANCE ) hInstDll );
        	DEBUGMSG( 1, ( TEXT( "MX21 : DLL_PROCESS_ATTACH\r\n" ) ) );
        	DisableThreadLibraryCalls( ( HMODULE ) hInstDll );
        	break;

      case DLL_PROCESS_DETACH:
        	DEBUGMSG( 1, ( TEXT( "MX21 : DLL_PROCESS_DETACH\r\n" ) ) );
        	break;
    	}
	DEBUGMSG( 1, (TEXT("PCCARD: -DllEntry\n")));
    	return ( TRUE );
}

extern "C" DWORD Init( DWORD dwInfo )
{
	DEBUGMSG( 1, (TEXT("PCCARD: +Init\n")));

	//gpPcmciaBridge = new  CPcmciaBusBridge( ( LPCTSTR ) dwInfo );
	
	gpPcmciaBridge = CreatePCCardBusBridge(  ( LPCTSTR ) dwInfo );
	if( gpPcmciaBridge )
	{
		if( gpPcmciaBridge->Init() )
		{		
       		DEBUGMSG( 1, (TEXT("PCCARD: -Init SUCESS\n")));
                    return ( DWORD ) gpPcmciaBridge;
		}
        	else
        	{
            		delete gpPcmciaBridge;
        	}
    	}

	DEBUGMSG( ZONE_PDD, (TEXT("PCCARD: -Init FAILED\n")));	
	
    return 0;
}

extern "C" void Deinit( DWORD dwSocketNum )  // This argument is return value from PDCardInitServices.
{

	DEBUGMSG( 1, (TEXT("PCCARD: +Deinit\n")));

    CPcmciaBusBridge* pSocket = ( CPcmciaBusBridge* ) dwSocketNum;
    if( pSocket )
    {
        delete pSocket;
    }

	DEBUGMSG( 1, (TEXT("PCCARD: -Deinit\n")));

}

CPcmciaSocket* GetSocket( HANDLE hSocket )
{
	return ( gpPcmciaBridge !=
             0 ?
             gpPcmciaBridge->ObjectBySocket( hSocket ) :
             NULL );
}

extern "C" 
BOOL PowerUp( DWORD dwData )
{
	DEBUGMSG( ZONE_PDD, (TEXT("PCCARD: +PowerUp\n")));

    CPcmciaBusBridge* pSocket = ( CPcmciaBusBridge* ) dwData;
    if( pSocket )
    {
        pSocket->PowerManager( FALSE );
    }
    
	DEBUGMSG( ZONE_PDD, (TEXT("PCCARD: -PowerUp\n")));
    return TRUE;
    
}

extern "C"
BOOL PowerDown( DWORD dwData )
{

	DEBUGMSG( ZONE_PDD, (TEXT("PCCARD: +PowerDown\n")));


    CPcmciaBusBridge* pSocket = ( CPcmciaBusBridge* ) dwData;
    if( pSocket )
    {
        pSocket->PowerManager( TRUE );
    }
    
	DEBUGMSG( ZONE_PDD, (TEXT("PCCARD: -PowerDown\n")));

    return TRUE;
    
}

STATUS PDCardGetSocket( HANDLE hSocket, // @parm Socket number (first socket is 0)
                        PSS_SOCKET_STATE pState // @parm Pointer to PDCARD_SOCKET_STATE structure
)
{
	DEBUGMSG( ZONE_PDD, (L"PCCARD: +PDCardGetSocket, hSocket = 0x%x\n", hSocket));

    CPcmciaSocket* pSocket = GetSocket( hSocket );
    if( pSocket != NULL )
    {
        STATUS rStatus = pSocket->CardGetSocket( pState );
        pSocket->DeRef();
		DEBUGMSG( ZONE_PDD, (L"PCCARD: -PDCardGetSocket, hSocket = 0x%x rStatus=0x%X\n", hSocket, rStatus));
        return rStatus;
    }
    else
    {
		DEBUGMSG( ZONE_PDD, (L"PCCARD: -PDCardGetSocket, hSocket = 0x%x FAILED\n", hSocket));
        return CERR_BAD_SOCKET;
    }
	
}
STATUS PDCardSetSocket( HANDLE hSocket, // @parm Socket number (first socket is 0)
                        PSS_SOCKET_STATE pState // @parm Pointer to PDCARD_SOCKET_STATE structure
)
{
	DEBUGMSG( ZONE_PDD, (L"PCCARD: +PDCardSetSocket, hSocket = 0x%x\n", hSocket));
	

    CPcmciaSocket* pSocket = GetSocket( hSocket );
    if( pSocket != NULL )
    {
        STATUS rStatus = pSocket->CardSetSocket( pState );
        pSocket->DeRef();
		DEBUGMSG( ZONE_PDD, (L"PCCARD: -PDCardSetSocket, hSocket = 0x%x rStatus=0x%X\n", hSocket, rStatus));
        return rStatus;
    }
    else
    {
		DEBUGMSG( ZONE_PDD, (L"PCCARD: -PDCardSetSocket, hSocket = 0x%x FAILED\n", hSocket));
        return CERR_BAD_SOCKET;
    }
	
}
STATUS PDCardResetSocket( HANDLE hSocket  // @parm Socket number (first socket is 0)
)
{
	DEBUGMSG( ZONE_PDD, (L"PCCARD: +PDCardResetSocket, hSocket = 0x%x\n", hSocket));

    CPcmciaSocket* pSocket = GetSocket( hSocket );
    if( pSocket != NULL )
    {
        STATUS rStatus = pSocket->CardResetSocket();
        pSocket->DeRef();
		DEBUGMSG( ZONE_PDD, (L"PCCARD: -PDCardResetSocket, hSocket = 0x%x rStatus=0x%X\n", hSocket, rStatus));	
        return rStatus;		
    }
    else
    {
    	DEBUGMSG( ZONE_PDD, (L"PCCARD: -PDCardResetSocket, hSocket = 0x%x FAILED\n", hSocket));	
        return CERR_BAD_SOCKET;
    }
	
}
//
STATUS PDCardGetWindow( UINT32 uWindow, // @parm Window number (the first window is 0)
                        PSS_WINDOW_STATE pWindowState   // @parm Pointer to a PDCARD_WINDOW_STATE structure.
)
{

	DEBUGMSG( ZONE_PDD, (L"PCCARD: +PDCardGetWindow, uWindow = 0x%x\n", uWindow));

    if( pWindowState == NULL )
    {
        return CERR_BAD_WINDOW;
    }

    HANDLE hSocket = pWindowState->hSocket;
    CPcmciaSocket* pSocket = GetSocket( hSocket );
    if( pSocket != NULL )
    {
        STATUS rStatus = pSocket->CardGetWindow( uWindow, pWindowState );
        pSocket->DeRef();
		
		DEBUGMSG( ZONE_PDD, (L"PCCARD: -PDCardGetWindow, uWindow = 0x%x rStatus=0x%X\n", uWindow, rStatus));
        return rStatus;
    }
    else
    {
		DEBUGMSG( ZONE_PDD, (L"PCCARD: -PDCardGetWindow, uWindow = 0x%x FAILED\n", uWindow));
        return CERR_BAD_WINDOW;
    }
}
STATUS PDCardSetWindow( UINT32 uWindow, // @parm Window number (the first window is 0)
                        PSS_WINDOW_STATE pWindowState   // @parm Pointer to a PDCARD_WINDOW_STATE structure.
)
{

	DEBUGMSG( ZONE_PDD, (L"PCCARD: +PDCardSetWindow, uWindow = 0x%x\n", uWindow));

    if( pWindowState == NULL )
    {
        return CERR_BAD_WINDOW;
    }

    HANDLE hSocket = pWindowState->hSocket;
    CPcmciaSocket* pSocket = GetSocket( hSocket );
    if( pSocket != NULL )
    {
        STATUS rStatus = pSocket->CardSetWindow( uWindow, pWindowState );
        pSocket->DeRef();
		DEBUGMSG( ZONE_PDD, (L"PCCARD: -PDCardSetWindow, uWindow = 0x%x rStatus=0x%X\n", uWindow, rStatus));
        return rStatus;
    }
    else
    {
    	DEBUGMSG( ZONE_PDD, (L"PCCARD: -PDCardSetWindow, uWindow = 0x%x FAILED\n", uWindow));
        return CERR_BAD_WINDOW;
    }
}
STATUS PDCardInquireWindow( UINT32 uWindow, // @parm Window number (the first window is 0)
                            PSS_WINDOW_INFO pWinInfo        // @parm Pointer to a PDCARD_WINDOW_INFO structure.
)
{

	DEBUGMSG( ZONE_PDD, (L"PCCARD: +PDCardInquireWindow, uWindow = 0x%x\n", uWindow));

    if( pWinInfo == NULL )
    {
        return CERR_BAD_WINDOW;
    }
    HANDLE hSocket = pWinInfo->hSocket;
    CPcmciaSocket* pSocket = GetSocket( hSocket );
    if( pSocket != NULL )
    {
        STATUS rStatus = pSocket->CardInquireWindow( uWindow, pWinInfo );
        pSocket->DeRef();	
		DEBUGMSG( ZONE_PDD, (L"PCCARD: -PDCardInquireWindow, uWindow = 0x%x rStatus=0x%X\n", uWindow, rStatus));	
        return rStatus;
    }
    else
    {
		DEBUGMSG( ZONE_PDD, (L"PCCARD: -PDCardInquireWindow, uWindow = 0x%x FAILED\n", uWindow));
        return CERR_BAD_WINDOW;
    }
};
STATUS PDCardInquireSocket( HANDLE hSocket, PSS_SOCKET_INFO pSocketInfo )
{

	DEBUGMSG( ZONE_PDD, (L"PCCARD: +PDCardInquireSocket, hSocket = 0x%x\n", hSocket));

    CPcmciaSocket* pSocket = GetSocket( hSocket );
    if( pSocket != NULL )
    {
        STATUS rStatus = pSocket->CardInquireSocket( pSocketInfo );
        pSocket->DeRef();	
		
		DEBUGMSG( ZONE_PDD, (L"PCCARD: -PDCardInquireSocket, hSocket = 0x%x rStatus=0x%X\n", hSocket, rStatus));
			
        return rStatus;
    }
    else
    {
	    DEBUGMSG( ZONE_PDD, (L"PCCARD: -PDCardInquireSocket, hSocket = 0x%x FAILED\n", hSocket));
        return CERR_BAD_SOCKET;
    }
}


STATUS PDCardAccessMemory( HANDLE hSocket, PSS_MEMORY_ACCESS pMemoryAccess )
{

	DEBUGMSG( ZONE_PDD, (L"PCCARD: +PDCardAccessMemory, hSocket = 0x%x\n", hSocket));

    CPcmciaSocket* pSocket = GetSocket( hSocket );
    if( pSocket != NULL )
    {
        STATUS rStatus = pSocket->CardAccessMemory( pMemoryAccess );
        pSocket->DeRef();
        return rStatus;
    }
    else
    {
        return CERR_BAD_SOCKET;
    }
}
STATUS PDGetPowerEntry( HANDLE hSocket,
                        PDWORD pdwNumOfEnery,
                        PSS_POWER_ENTRY pPowerEntry )
{
	DEBUGMSG( ZONE_PDD, (L"PCCARD: +PDGetPowerEntry, hSocket = 0x%x\n", hSocket));

    CPcmciaSocket* pSocket = GetSocket( hSocket );
    if( pSocket != NULL )
    {
        STATUS rStatus = pSocket->GetPowerEntry( pdwNumOfEnery, pPowerEntry );
        pSocket->DeRef();
		DEBUGMSG( ZONE_PDD, (L"PCCARD: -PDGetPowerEntry, hSocket = 0x%x rStatus=0x%X\n", hSocket, rStatus));
        return rStatus;
    }
    else
    {
		DEBUGMSG( ZONE_PDD, (L"PCCARD: -PDGetPowerEntry, hSocket = 0x%x FAILED\n", hSocket));
        return CERR_BAD_SOCKET;
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -