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; }
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); }