BOOL CSerialPDD::Init() { InitialPower(TRUE); if (m_PowerCallbackThread == NULL) { m_PowerCallbackThread = new CSerialPDDPowerUpCallback(this); if ( m_PowerCallbackThread && !m_PowerCallbackThread->Init()){ delete m_PowerCallbackThread; m_PowerCallbackThread = NULL; } } m_PowerHelperHandle = DDKPwr_Initialize(SetPowerStateStatic, (DWORD)this , TRUE, 1000 ); if (!GetRegValue( SERIAL_RX_BUFFER_SIZE, (LPBYTE)&m_ulRxBufferSize,sizeof(m_ulRxBufferSize))) { m_ulRxBufferSize = 0 ; } return (IsKeyOpened() && m_PowerCallbackThread!=NULL && m_PowerHelperHandle!=INVALID_HANDLE_VALUE ); }
BOOL CPdd6410Uart::Init() { BOOL bRet = TRUE; if ( CSerialPDD::Init() && IsKeyOpened() && m_XmitFlushDone!=NULL) { // IST Setup . DDKISRINFO ddi; if (GetIsrInfo(&ddi)!=ERROR_SUCCESS) { bRet = FALSE; goto CleanUp; } m_dwSysIntr = ddi.dwSysintr; if (m_dwSysIntr != MAXDWORD && m_dwSysIntr!=0 ) { m_hISTEvent= CreateEvent(0,FALSE,FALSE,NULL); } if (m_hISTEvent!=NULL) { InterruptInitialize(m_dwSysIntr,m_hISTEvent,0,0); } else { bRet = FALSE; goto CleanUp; } // Get Device Index. if (!GetRegValue(PC_REG_DEVINDEX_VAL_NAME, (PBYTE)&m_dwDevIndex, PC_REG_DEVINDEX_VAL_LEN)) { m_dwDevIndex = 0; } if (!GetRegValue(PC_REG_SERIALWATERMARK_VAL_NAME,(PBYTE)&m_dwWaterMark,PC_REG_SERIALWATERMARKER_VAL_LEN)) { m_dwWaterMark = DEFAULT_VALUE_WATER_MARK; } if (!GetRegValue(PC_REG_6410UART_IST_TIMEOUTS_VAL_NAME,(PBYTE)&m_dwISTTimeout, PC_REG_6410UART_IST_TIMEOUTS_VAL_LEN)) { m_dwISTTimeout = INFINITE; } if (!GetRegValue(PC_REG_6410UART_MEM_LENGTH_VAL_NAME, (PBYTE)&m_dwMemLen, PC_REG_6410UART_MEM_LENGTH_VAL_LEN)) { m_dwMemLen = DEFAULT_VALUE_MEM_LENGH; } if (!MapHardware() || !CreateHardwareAccess()) { bRet = FALSE; goto CleanUp; } #ifdef USE_DMA if (!GetRegValue(PC_REG_TX_DMA_EN_NAME,(PBYTE)&m_dwTXDMAEnable, sizeof(DWORD))) { m_dwTXDMAEnable = FALSE; } if(m_dwTXDMAEnable) { RETAILMSG(1, (L"[UART] DMA init CH:%d \r\n", m_dwDevIndex)); InitializeDMA(m_dwDevIndex); } #endif bRet = TRUE; goto CleanUp; } bRet = FALSE; CleanUp: return bRet; }