亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? mx21ddk.cpp

?? BGW211針對freescale的MX21的無線WIFI驅動(WINCE5.0)
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
//
// Copyright (c) Microsoft Corporation.  All rights reserved.
//
//
// Use of this source code is subject to the terms of the Microsoft end-user
// license agreement (EULA) under which you licensed this SOFTWARE PRODUCT.
// If you did not accept the terms of the EULA, you are not authorized to use
// this source code. For a copy of the EULA, please see the LICENSE.RTF on your
// install media.
//
//------------------------------------------------------------------------------
//
//  Copyright (C) 2005-2006, Freescale Semiconductor, Inc. All Rights Reserved
//  THIS SOURCE CODE IS CONFIDENTIAL AND PROPRIETARY AND MAY NOT
//  BE USED OR DISTRIBUTED WITHOUT THE WRITTEN PERMISSION OF
//  FREESCALE SEMICONDUCTOR, INC.
//
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
//
//  Module: mx21_ddk.c
//
//  Interface to MX21DDK service.
//
//------------------------------------------------------------------------------

//------------------------------------------------------------------------------
// INCLUDE FILES  
//------------------------------------------------------------------------------
#include <windows.h>
#include <csp.h>
#include <cspddk.h>


//-----------------------------------------------------------------------------
// Types and Enumerations
typedef enum {
    DDK_GPIO_HANDLE,
    DDK_TIMER_HANDLE,
    DDK_CSPI_HANDLE,
    DDK_I2C_HANDLE
} DDK_HANDLE_TYPE;

typedef void* DDKObject;
typedef struct __tagDDkObject {
        DDKObject  DdkObj;
        DDK_HANDLE_TYPE HandleType;
}DDK_OBJECT,* DDK_OBJECT_HANDLE;

#ifdef DEBUG

DBGPARAM dpCurSettings = {
    L"MX21DDK", {
        L"Info",	L"Function",    L"Warnings",    L"Errors",
        L"Init",	L"Undefined",	L"Undefined",   L"Undefined",
        L"Undefined",   L"Undefined",   L"Undefined",   L"Undefined",
        L"Undefined",	L"Undefined",	L"Undefined",	L"Undefined"
    },
    0x0008
};
#endif
//------------------------------------------------------------------------------
// EXPORTED FUNCTIONS
//------------------------------------------------------------------------------

//-----------------------------------------------------------------------------
//
// Function:  DDKCreateGpioObject
//
// This function initializes GPIO object.  Called by routine to
// initialize a GPIO object
//
// Parameters:
//      None.
//
// Returns:
//      Returns the Handle to the GPIO if successful, otherwise returns NULL.
//
//-----------------------------------------------------------------------------
GPIOHANDLE DDKCreateGpioObject(void)
{
    DDK_OBJECT_HANDLE hDdkObj;

    DRV_FUNCTION_ENTRY();
    hDdkObj = new DDK_OBJECT;
    
    if(hDdkObj){
        hDdkObj->HandleType = DDK_GPIO_HANDLE;
        hDdkObj->DdkObj = (DDKObject) new GpioClass();
        if(!hDdkObj->DdkObj){
            delete hDdkObj;
            hDdkObj = NULL;
        }
    }
    if(!hDdkObj)
        DEBUGMSG(ZONE_ERROR, (_T("DDKCreateGpioObject(void) failed\r\n")));
        
    DRV_FUNCTION_EXIT();
    return (GPIOHANDLE)hDdkObj;
}
    
//-----------------------------------------------------------------------------
//
// Function:  DDKDeleteObject
//
// This function delete the DDK Object
//
// Parameters:
//      None.
//
// Returns:
//      None.
//
//-----------------------------------------------------------------------------      
void DDKDeleteObject(DDKHANDLE hObj)
{
     DDK_OBJECT_HANDLE hDdkObj;
 
     DRV_FUNCTION_ENTRY();    
     if(!hObj){
         DEBUGMSG(ZONE_ERROR, (_T("DDKDeleteObject(): NULL pointer\r\n")));
         DRV_FUNCTION_EXIT();
         return;
     }
	 
     hDdkObj = (DDK_OBJECT_HANDLE) hObj;
     // Destroy the corresponding object	 
     switch(hDdkObj->HandleType){
         case DDK_GPIO_HANDLE:
              delete (GpioClass*)hDdkObj->DdkObj;
              break;
         case DDK_TIMER_HANDLE:
              delete (TimerClass*)hDdkObj->DdkObj;
              break;
         case DDK_CSPI_HANDLE:
              delete (CspiClass*)hDdkObj->DdkObj;
              break;  
         case DDK_I2C_HANDLE:
              delete (I2cClass*)hDdkObj->DdkObj;
              break; 
     }
	 
     delete hDdkObj;
    DRV_FUNCTION_EXIT();
     return;
}                             
//------------------------------------------------------------------------------
//
//  FUNCTION:       DDKGetGpioSignalState
//
//  DESCRIPTION:    Returns the current state reading for 
//                  pin specified by signal
//
//  PARAMETERS:     gpiohandle  - handle to gpio
//                  port        - port id
//                  signal      - pin number
//
//  RETURNS:        1           - pin HIGH
//                  0           - pin LOW
//                  -1          - Failed
//
//------------------------------------------------------------------------------
INT8 DDKGetGpioSignalState(GPIOHANDLE gpiohandle, GPIO_PORT port, UINT32 signal)
{
      DDK_OBJECT_HANDLE hDdkObj;
      GpioClass* pGpio;
      INT8 ret;

     DRV_FUNCTION_ENTRY();      
      hDdkObj = (DDK_OBJECT_HANDLE)gpiohandle;
      // Check the invalid pointer
      if(!hDdkObj || !hDdkObj->DdkObj){
          DEBUGMSG(ZONE_ERROR, (_T("DDKGetGpioSignalState(): NULL pointer\r\n")));
          DRV_FUNCTION_EXIT();
          return -1;
      }
	  
	  // Do operation by it's original memember function
      pGpio = (GpioClass*)hDdkObj->DdkObj;
      ret = pGpio->GetSignalState(port, signal);
      DRV_FUNCTION_EXIT();
      return ret;
}

//------------------------------------------------------------------------------
//
//  FUNCTION:       DDKSetGpioSignalState
//
//  DESCRIPTION:    Sets the current state specotif
//                  pin specified by signal
//
//  PARAMETERS:     gpiohandle  - handle to gpio
//                  port    - port id
//                  signal  - pin number
//                  state   - desired state of pin
//                  bIsPowerMode    - whether is used in power mode
//
//  RETURNS:        None
//
//------------------------------------------------------------------------------     
void DDKSetGpioSignalState(GPIOHANDLE gpiohandle,GPIO_PORT port,UINT32 signal,
                          UINT8 state,BOOL bInPowerMode)     
{
      DDK_OBJECT_HANDLE hDdkObj;
      GpioClass* pGpio;
      
      DRV_FUNCTION_ENTRY();      
      hDdkObj = (DDK_OBJECT_HANDLE)gpiohandle;
      // Check the invalid pointer
      if(!hDdkObj || !hDdkObj->DdkObj){
            DEBUGMSG(ZONE_ERROR, (_T("DDKSetGpioSignalState(): NULL pointer\r\n")));
            DRV_FUNCTION_EXIT();
            return ;
      }
      
	  // Do operation by it's original memember function
      pGpio = (GpioClass*)hDdkObj->DdkObj;
      pGpio->SetSignalState(port, signal, state, bInPowerMode);
      DRV_FUNCTION_EXIT();
}         

//------------------------------------------------------------------------------
//
//  FUNCTION:       DDKGetGpioSignals
//
//  DESCRIPTION:    Returns the current state reading for 
//                  pins specified by signalMask
//
//  PARAMETERS:     gpiohandle  - handle to gpio
//                  port        - port id
//                  signalMask  - bitmap of desired pins
//
//  RETURNS:        
//                  bitmap indicating desired pin states
//
//------------------------------------------------------------------------------
UINT32 DDKGetGpioSignals(GPIOHANDLE gpiohandle,GPIO_PORT port, UINT32 signalMask)
{
      DDK_OBJECT_HANDLE hDdkObj;
      GpioClass* pGpio;
      UINT32 ret;
      
      DRV_FUNCTION_ENTRY();
      hDdkObj = (DDK_OBJECT_HANDLE)gpiohandle;
      // Check the invalid pointer
      if(!hDdkObj || !hDdkObj->DdkObj){
            DEBUGMSG(ZONE_ERROR, (_T("DDKGetGpioSignals(): NULL pointer\r\n")));
            DRV_FUNCTION_EXIT();
            return 0;
      }
	  // Do operation by it's original memember function
      pGpio = (GpioClass*)hDdkObj->DdkObj;  
      ret = pGpio->GetSignals(port, signalMask);
      DRV_FUNCTION_EXIT();
      return ret;
} 
   
//------------------------------------------------------------------------------
//
//  FUNCTION:       DDKSetGpioSignals
//
//  DESCRIPTION:    Sets the current state specotif
//                  pin specified by signal
//
//  PARAMETERS:     gpiohandle  - handle to gpio
//                  port        - port id
//                  signalMask  - bitmap of desired pins to set
//                  state       - bitmap of desired states of pins
//
//  RETURNS:        None
//
//------------------------------------------------------------------------------
void DDKSetGpioSignals(GPIOHANDLE gpiohandle,GPIO_PORT port,UINT32 signalMask,UINT32 stateMask)
{
      DDK_OBJECT_HANDLE hDdkObj;
      GpioClass* pGpio;
      
      DRV_FUNCTION_ENTRY();
      hDdkObj = (DDK_OBJECT_HANDLE)gpiohandle;
      // Check the invalid pointer
      if(!hDdkObj || !hDdkObj->DdkObj){
            DEBUGMSG(ZONE_ERROR, (_T("DDKSetGpioSignals(): NULL pointer\r\n")));
            DRV_FUNCTION_EXIT();
            return ;
      }
	  // Do operation by it's original memember function
      pGpio = (GpioClass*)hDdkObj->DdkObj;
      pGpio->SetSignals(port, signalMask, stateMask);
      DRV_FUNCTION_EXIT();
}
   
//------------------------------------------------------------------------------
//
//  FUNCTION:       DDKSetGpioInterruptType
//
//  DESCRIPTION:    Sets the current type setting reading for 
//                  pin specified by signal. The pin should have already
//                  been initialised as an interrupt pin during GPIO
//                  initialisation
//
//  PARAMETERS:     gpiohandle  - handle to gpio
//                  port    - port id
//                  signal  - pin number
//                  state   - interrupt type setting
//
//  RETURNS:        previous interrupt setting
//
//------------------------------------------------------------------------------  
   
GPIO_INT_TYPE DDKSetGpioInterruptType(GPIOHANDLE gpiohandle,GPIO_PORT port, 
                                    UINT32 signal,GPIO_INT_TYPE type)
{
      DDK_OBJECT_HANDLE hDdkObj;
      GpioClass* pGpio;
      GPIO_INT_TYPE ret;
      
      
      DRV_FUNCTION_ENTRY();
      hDdkObj = (DDK_OBJECT_HANDLE)gpiohandle;
      // Check the invalid pointer
      if(!hDdkObj || !hDdkObj->DdkObj){
            DEBUGMSG(ZONE_ERROR, (_T("DDKSetGpioInterruptType(): NULL pointer\r\n")));
            DRV_FUNCTION_EXIT();
            return GPIO_INT_TYPE_MAX;
      }
	  
	  // Do operation by it's original memember function
      pGpio = (GpioClass*)hDdkObj->DdkObj;
      ret = pGpio->SetInterruptType(port, signal, type);  
      DRV_FUNCTION_EXIT();
      return ret;                                  
}                                        


//------------------------------------------------------------------------------
//
//  FUNCTION:       DDKSetGpioInterruptState
//
//  DESCRIPTION:    Unmasks/Masks the interrupt specified by signal
//
//  PARAMETERS:     gpiohandle  - handle to gpio
//                  port    - port id
//                  signal  - pin number
//                  bIsPowerMode    - whether is used in power mode 
//                  bEnable     - TURE for Unmask, FALSE for Mask                 
//
//  RETURNS:        None
//------------------------------------------------------------------------------     
void DDKSetGpioInterruptState(GPIOHANDLE gpiohandle,GPIO_PORT port, UINT32 signal,
                            BOOL bInPowerMode,BOOL bEnable)
{
      DDK_OBJECT_HANDLE hDdkObj;
      GpioClass* pGpio;
      
      DRV_FUNCTION_ENTRY();
      hDdkObj = (DDK_OBJECT_HANDLE)gpiohandle;
      // Check the invalid pointer
      if(!hDdkObj || !hDdkObj->DdkObj){
            DEBUGMSG(ZONE_ERROR, (_T("DDKSetGpioInterruptState(): NULL pointer\r\n")));
            DRV_FUNCTION_EXIT();
            return ;
      }
	  
      pGpio = (GpioClass*)hDdkObj->DdkObj;    
      // Do operation by it's original memember function  
      if(bEnable)
          pGpio->EnableInterrupt(port, signal, bInPowerMode);
      else
          pGpio->DisableInterrupt(port, signal, bInPowerMode);   
      DRV_FUNCTION_EXIT();              
}


//-----------------------------------------------------------------------------
//
// Function:  DDKCreateTimerObject
//
// This function initializes TIMER object.  Called by routine to
// initialize a GTIMER object
//
// Parameters:
//      timerisr: The timer interrupt service routine.
//      timerID : The timer ID on which the timer object is created based
//
// Returns:
//      Returns the Handle to the TIMER if successful, otherwise returns NULL.
//
//-----------------------------------------------------------------------------
TIMERHANDLE DDKCreateTimerObject(TIMERISR timerisr, TIMERID_C timerID)
{
    DDK_OBJECT_HANDLE hDdkObj;
    
    
    DRV_FUNCTION_ENTRY();
    hDdkObj = new DDK_OBJECT;
    
    if(hDdkObj){
        hDdkObj->HandleType = DDK_TIMER_HANDLE;
        hDdkObj->DdkObj = (TimerClass*) new TimerClass(timerID);
        if(!hDdkObj->DdkObj){
            delete hDdkObj;
            hDdkObj = NULL;
        }
        else { 
            ((TimerClass*)(hDdkObj->DdkObj))->SetISR(timerisr);
            ((TimerClass*)(hDdkObj->DdkObj))->TimerInit();
        }
    }
	// Check if creating is successful
    if(!hDdkObj)
        DEBUGMSG(ZONE_ERROR, (_T("DDKCreateTimerObject(void) failed\r\n")));

        
    DRV_FUNCTION_EXIT();
    return (TIMERHANDLE)hDdkObj;
}    
    
void DDKSetTimerStart(TIMERHANDLE timerhandle, BOOL bStart)
{
      DDK_OBJECT_HANDLE hDdkObj;
      TimerClass* pTimer;
      
      
      DRV_FUNCTION_ENTRY();
      hDdkObj = (DDK_OBJECT_HANDLE)timerhandle;
      // Check the invalid pointer
      if(!hDdkObj || !hDdkObj->DdkObj){
            DEBUGMSG(ZONE_ERROR, (_T("DDKSetTimerStart(): NULL pointer\r\n")));
            DRV_FUNCTION_EXIT();
            return ;
      }
	  
      pTimer = (TimerClass*)hDdkObj->DdkObj; 
      
      // Do operation by it's original memember function
      if(bStart)
          pTimer->StartTimer();
      else
          pTimer->StopTimer();
      DRV_FUNCTION_EXIT();
}        

void DDKSetTimerInterrupt(TIMERHANDLE timerhandle, BOOL bEnable)
{
      DDK_OBJECT_HANDLE hDdkObj;
      TimerClass* pTimer;
      
      
      DRV_FUNCTION_ENTRY();
      hDdkObj = (DDK_OBJECT_HANDLE)timerhandle;
      // Check the invalid pointer
      if(!hDdkObj || !hDdkObj->DdkObj){
            DEBUGMSG(ZONE_ERROR, (_T("DDKSetTimerStart(): NULL pointer\r\n")));
            DRV_FUNCTION_EXIT();

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久三级国产网站| 香蕉久久夜色精品国产使用方法 | 国产酒店精品激情| 成人黄色a**站在线观看| 欧美老年两性高潮| 国产精品免费人成网站| 久久国产精品99久久久久久老狼| 92精品国产成人观看免费| 精品久久国产老人久久综合| 亚洲一区二区精品3399| 播五月开心婷婷综合| 久久久综合网站| 日本不卡视频在线| 欧美日韩精品一区视频| 亚洲欧美成aⅴ人在线观看| 国产精品一二一区| 中文字幕色av一区二区三区| 日韩电影在线观看电影| 欧美在线观看视频在线| 国产精品嫩草影院com| 国产一区二区在线影院| 日韩久久久久久| 日韩综合小视频| 欧美午夜精品理论片a级按摩| 亚洲欧洲国产日本综合| 国产成人精品免费网站| 久久久av毛片精品| 精品无人码麻豆乱码1区2区 | 亚洲欧洲综合另类在线| 成人性生交大片免费看在线播放| www日韩大片| 国产精品自在在线| 久久亚洲二区三区| 国产精品一卡二卡在线观看| 国产日韩欧美激情| 国产成人欧美日韩在线电影 | 欧美日韩高清在线播放| 午夜激情综合网| 91国内精品野花午夜精品| 一区二区三区欧美日| 在线观看日韩毛片| 天天综合日日夜夜精品| 欧美精品一二三| 蜜臀久久99精品久久久久久9| 欧美一卡在线观看| 狠狠色综合日日| 国产婷婷色一区二区三区四区| 国产一区二区三区在线观看免费| 午夜伊人狠狠久久| 欧美精品九九99久久| 日本中文字幕一区二区视频| 欧美刺激脚交jootjob| 国产毛片精品国产一区二区三区| 久久久精品免费网站| www.久久精品| 亚洲成av人片在线观看无码| 日韩一级片网站| 国产a区久久久| 尤物在线观看一区| 日韩欧美中文字幕制服| 国产99久久久国产精品潘金网站| 中文字幕人成不卡一区| 欧美精品在线视频| 国产精品99久久不卡二区| 亚洲免费在线电影| 日韩三级视频在线观看| 99久久综合色| 日韩成人精品在线| 中文欧美字幕免费| 欧美美女喷水视频| 国产91在线看| 婷婷开心久久网| 国产精品欧美久久久久一区二区| 欧美伊人久久大香线蕉综合69| 久久精品国产色蜜蜜麻豆| 亚洲天堂a在线| 精品成a人在线观看| 91视视频在线观看入口直接观看www | 国产精品久久看| 欧美一区二区三区婷婷月色| av一本久道久久综合久久鬼色| 日本不卡一区二区| 中文字幕一区日韩精品欧美| 国产精品丝袜91| 欧美日韩国产成人在线免费| 不卡一区二区中文字幕| 极品销魂美女一区二区三区| 亚洲午夜国产一区99re久久| 亚洲国产精品av| 日韩欧美亚洲一区二区| 在线视频国内一区二区| 国产成人av一区二区| 另类成人小视频在线| 亚洲一区二区五区| 18涩涩午夜精品.www| 久久久精品国产免大香伊| 日韩欧美中文字幕一区| 欧美老肥妇做.爰bbww视频| 在线观看亚洲专区| 91蜜桃免费观看视频| 风流少妇一区二区| 国产激情一区二区三区桃花岛亚洲| 午夜精品成人在线视频| 亚洲午夜在线电影| 亚洲精品国产精品乱码不99| 国产精品免费人成网站| 国产欧美一二三区| 久久久精品国产免大香伊| 精品久久国产字幕高潮| 日韩一二在线观看| 91精品国产麻豆国产自产在线 | 91麻豆精品国产91久久久使用方法 | 精品国精品国产| 日韩丝袜美女视频| 国产精品国产自产拍高清av| 欧美国产精品中文字幕| 国产精品素人一区二区| 国产欧美一区二区在线观看| 久久精品视频免费观看| 久久久久国产精品厨房| 久久精品欧美一区二区三区麻豆| 欧美精品一区男女天堂| 久久久五月婷婷| 中文子幕无线码一区tr| 中文字幕中文乱码欧美一区二区 | 91精品国产综合久久久蜜臀图片| 欧美日韩精品一区二区三区 | 日本高清不卡在线观看| 在线观看国产日韩| 欧美另类一区二区三区| 51精品久久久久久久蜜臀| 91超碰这里只有精品国产| 日韩视频123| 日本一区二区视频在线| 亚洲欧美电影院| 日本欧美一区二区三区| 国内精品久久久久影院薰衣草 | 国产视频不卡一区| 综合激情网...| 午夜av一区二区| 国模冰冰炮一区二区| 成人午夜激情影院| 日本韩国一区二区三区视频| 欧美另类久久久品| 国产欧美一区二区精品性| 亚洲欧洲综合另类在线 | 亚洲欧美另类在线| 日韩中文字幕1| 成人综合在线观看| 欧美视频在线一区| 久久久久国产成人精品亚洲午夜| 综合网在线视频| 欧美aaaaa成人免费观看视频| 国产福利一区二区三区| 欧美性色aⅴ视频一区日韩精品| 欧美一二三在线| 日韩美女视频一区二区| 美女脱光内衣内裤视频久久网站| 成人黄色777网| 日韩亚洲欧美高清| 亚洲乱码国产乱码精品精小说| 日韩精品色哟哟| 不卡电影免费在线播放一区| 亚洲日本在线看| 日韩精品欧美精品| eeuss影院一区二区三区| 欧美精品乱码久久久久久按摩 | 国产一区在线观看视频| 欧美私模裸体表演在线观看| 久久久国际精品| 日韩精品免费专区| 色哦色哦哦色天天综合| 亚洲精品一线二线三线无人区| 亚洲一区在线观看网站| 99视频超级精品| 国产偷国产偷亚洲高清人白洁| 日韩成人一级片| 欧美性大战久久| 亚洲欧美另类在线| 成人午夜视频在线| 久久这里只有精品视频网| 丝袜亚洲另类欧美| 在线视频欧美区| 亚洲视频综合在线| 不卡视频在线观看| 久久精品日产第一区二区三区高清版 | 日本午夜精品一区二区三区电影| 91在线观看地址| 日韩一区有码在线| av一区二区三区四区| 国产精品系列在线| 国产91丝袜在线播放九色| 精品福利二区三区| 国内成人精品2018免费看| 日韩三级.com| 黄色日韩网站视频| 久久久综合网站| 国产成人精品免费一区二区| 久久久蜜臀国产一区二区| 国产美女精品人人做人人爽|