Ejemplo n.º 1
0
int DebuggerPort_Write( COM_HANDLE ComPortNum, const char* Data, size_t size )
{
    NATIVE_PROFILE_PAL_COM();
    
    UINT32       transport = ExtractTransport(ComPortNum);
    const char*  dataTmp   = Data;
    INT32        totWrite  = 0;
    int          retries   = 100;

    while(size > 0 && retries--)
    {
        int ret = 0;
        
        switch(transport)
        {
            case USART_TRANSPORT:
                ret = USART_Write( ConvertCOM_ComPort( ComPortNum ), dataTmp, size );
                break;
            case USB_TRANSPORT:
                ret = USB_Write( ConvertCOM_UsbStream( ComPortNum ), dataTmp, size );
                break;
            case SOCKET_TRANSPORT:
                ret = SOCKETS_Write( ConvertCOM_SockPort(ComPortNum), dataTmp, size );
                break;
        }
        if(ret < 0)
        {
            break;
        }
        else if(ret == 0)
        {
            // if interrupts are off and our buffer is full then there is nothing we can do
            if(!INTERRUPTS_ENABLED_STATE()) break;

            Events_WaitForEvents(0, 1);
        }
        else
        {
            retries   = 50;   // reset retries
            size     -= ret;
            dataTmp  += ret;
            totWrite += ret;
        }
    }

    return totWrite;
}
Ejemplo n.º 2
0
int CLIENTS_SOCKETS_SendToServer(char *s, int len,
				 SOCKETS_CLIENT_CONTEXT client)
{
	int res = 0;
	int sendSock;

	// Check the client
	if (client == NULL) {
		//TRACE(TR_MOD_CLIENT_SOCKET, TR_SEV_WARNING, (L"Cannot send. Bad argument.");
		return res;
	}

	OSAL_lock_mutex(((PCLIENT_DATA)client)->hMutex);

	sendSock = ((PCLIENT_DATA)client)->socket;
	OSAL_unlock_mutex(((PCLIENT_DATA)client)->hMutex);

	return SOCKETS_Write(sendSock, s, len);
}