// --------------------------------------------------------------------------- // CCommEngine::Disconnect // other items were commented in a header // --------------------------------------------------------------------------- void CCommEngine::Disconnect() { LOGTEXT(_L8("[Ltsy] Starting CCommEngine::Disconnect()")); if (iPortAccess == EPortAccessAllowed) { TCommConfig cbuf; TCommConfigV01 &cfg = cbuf(); iCommPort.Config(cbuf); cfg.iHandshake = KConfigFreeRTS | KConfigFreeDTR; TInt ret = iCommPort.SetConfig(cbuf); if (ret == KErrNone) { iCommPort.SetSignalsToSpace(KSignalRTS | KSignalDTR); } } CommClose(); iPortAccess = EPortAccessDenied; }
/*==========================================================================* * FUNCTION : CommOpen * PURPOSE : To open the given type communication port. * CALLS : * CALLED BY: * ARGUMENTS: IN char *pszStdPortLib : the std port accessing driver name, * a shared library. * IN char *pPortDescriptor : the physical port device defined in * /dev/, such as /dev/ttyS0, ... * IN char *pOpenParams : the open params depend on the port * type. for std serial as "b,p,d,s", * for dial serial as "b,p,d,s:tel", * for TCP/IP as "n1.n2.n3.n4:port" * IN DWORD dwPortAttr : B00=COMM_SERVER_MODE: for server port * B00=COMM_CLIENT_MODE: for client port * Others are reserved. * IN int nTimeout : the timeout to open the port in ms * OUT int *pErrCode : ptr to receive error code * RETURN : HANDLE : NON-NULL: Handle of opened port, NULL: for error. * COMMENTS : * HISTORY : Modify the first arg from "int nStdPortType" to * "char *pszStdPortLib". Maofuhua, 2004-11-13 *==========================================================================*/ HANDLE CommOpen(IN char *pszStdPortLib, IN char *pPortDescriptor, IN char *pOpenParams, IN DWORD dwPortAttr, IN int nTimeout, OUT int *pErrCode) { //printf("in hal now!\n");//----add by wankun STD_PORT_DRV *pPort; *pErrCode = ERR_COMM_OK; // allocate memory for drv pPort = NEW(STD_PORT_DRV, 1); if (pPort == NULL) { #ifdef _DEBUG_HAL_COMM TRACEX("[CommOpen] -- No memory to new STD_PORT_DRV.\n"); #endif //_DEBUG_HAL_COMM *pErrCode = ERR_COMM_NO_MEMORY; return NULL; } ZERO_POBJS(pPort, 1); pPort->pszStdPortLib = pszStdPortLib; // load the dll. if (!LoadStdPortDriverLib(pszStdPortLib, pPort)) { #ifdef _DEBUG_HAL_COMM TRACEX("[CommOpen] -- Fails on loading standard port driver %s.\n", pszStdPortLib); #endif //_DEBUG_HAL_COMM DELETE(pPort); *pErrCode = ERR_COMM_LOADING_DRIVER; return NULL; } //printf("in hal 162 now!\n");----add by wankun pPort->pLibRef = NEW(int, 1); if (pPort->pLibRef == NULL) { #ifdef _DEBUG_HAL_COMM TRACEX("[CommOpen] -- No memory to new STD_PORT_DRV->hRef.\n"); #endif //_DEBUG_HAL_COMM *pErrCode = ERR_COMM_NO_MEMORY; CommClose(pPort); return NULL; } *pPort->pLibRef = 0; // call open function of driver to open port pPort->hInstance = pPort->pfnOpen( pPortDescriptor, pOpenParams, dwPortAttr, nTimeout, pErrCode); if (pPort->hInstance == NULL) { // error code has been set. do NOT change it. // *pErrCode = ERR_COMM_OPENING_PORT; #ifdef _DEBUG_HAL_COMM TRACEX("[CommOpen] -- Fails on open port.\n"); #endif //_DEBUG_HAL_COMM CommClose(pPort); return NULL; } return (HANDLE)pPort; }