Ejemplo n.º 1
0
// ---------------------------------------------------------------------------
// 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;
}
Ejemplo n.º 2
0
/*==========================================================================*
 * 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;
}