Implemented the win32 serial_drain function using WaitCommEvent.

This commit is contained in:
Jef Driesen 2007-10-29 10:45:35 +00:00
parent 425efd1c0d
commit 21e9cf9739

View File

@ -105,6 +105,14 @@ serial_open (serial** out, const char* name)
return -1;
}
// Set the event mask for the drain function.
if (!SetCommMask (device->hFile, EV_TXEMPTY)) {
TRACE ("SetCommMask");
CloseHandle (device->hFile);
free (device);
return -1;
}
*out = device;
return 0;
@ -376,6 +384,17 @@ serial_drain (serial* device)
if (device == NULL)
return -1; // ERROR_INVALID_PARAMETER (The parameter is incorrect)
BOOL rc = 0;
DWORD mask = 0;
do {
rc = WaitCommEvent (device->hFile, &mask, NULL);
} while ( rc && !(mask & EV_TXEMPTY) );
if (!rc) {
TRACE ("WaitCommEvent");
return -1;
}
return 0;
}