MCPcopy Create free account
hub / github.com/Moddable-OpenSource/moddable / xs_serial_write

Function xs_serial_write

modules/io/serial/win/serial.c:343–375  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

341}
342
343void xs_serial_write(xsMachine *the)
344{
345 xsSerial s = xsGetHostData(xsThis);
346 char *data;
347 DWORD count;
348 OVERLAPPED overlapped;
349 DWORD written;
350 DWORD written2 = 0;
351
352 if (s->bufferFormat) {
353 data = xsToArrayBuffer(xsArg(0));
354 count = (DWORD)xsGetArrayBufferLength(xsArg(0));
355 }
356 else {
357 data = xsToString(xsArg(0));
358 count = (DWORD)strlen(data);
359 }
360 if (!count)
361 return;
362 memset(&overlapped, 0, sizeof(overlapped));
363 overlapped.hEvent = s->writeEvent;
364 if (!WriteFile(s->comm, data, (DWORD)count, &written, &overlapped)) {
365 DWORD error = GetLastError();
366 if (error != ERROR_IO_PENDING) xs_serial_throw(the, error, NULL, 0);
367 xsElseThrow(GetOverlappedResult(s->comm, &overlapped, &written2, TRUE));
368 }
369// {
370// char buffer[256];
371// sprintf(buffer, "WRITE %ld %ld %ld\n", count, written, written2);
372// OutputDebugString(buffer);
373// }
374 xs_serial_write_aux(the, s);
375}
376
377void xs_serial_write_aux(void* machine, xsSerial s)
378{

Callers

nothing calls this directly

Calls 2

xs_serial_throwFunction · 0.85
xs_serial_write_auxFunction · 0.85

Tested by

no test coverage detected