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

Function fxOpenSerial

tools/serial2xsbug/serial2xsbug_win.c:128–215  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

126}
127
128void fxOpenSerial(txSerialTool self)
129{
130 char configuration[256];
131 DCB dcb;
132 COMMTIMEOUTS timeouts;
133
134 sprintf(configuration, "baud=%d parity=%c data=%d stop=%d", self->baud, self->parity, self->data, self->stop);
135
136 self->serialConnection = CreateFile(self->path, GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, NULL);
137 if (INVALID_HANDLE_VALUE == self->serialConnection) {
138 if (!self->reconnecting)
139 mxThrowElse(self->serialConnection != INVALID_HANDLE_VALUE);
140 return;
141 }
142 memset(&dcb, 0, sizeof(dcb));
143 dcb.DCBlength = sizeof(dcb);
144 BuildCommDCB(configuration, &dcb);
145 mxThrowElse(SetCommState(self->serialConnection, &dcb));
146 memset(&timeouts, 0, sizeof(timeouts));
147 timeouts.ReadIntervalTimeout = 1;
148 timeouts.ReadTotalTimeoutMultiplier = 0;
149 timeouts.ReadTotalTimeoutConstant = 0;
150 timeouts.WriteTotalTimeoutMultiplier = 0;
151 timeouts.WriteTotalTimeoutConstant = 0;
152 mxThrowElse(SetCommTimeouts(self->serialConnection, &timeouts));
153 CloseHandle(self->serialConnection);
154
155 self->serialConnection = CreateFile(self->path, GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL);
156
157// mxThrowElse(GetCommState(self->serialConnection, &dcb));
158// fprintf(stderr, "# BaudRate %d\n", dcb.BaudRate);
159// fprintf(stderr, "# fBinary %d\n", dcb.fBinary);
160// fprintf(stderr, "# fParity %d\n", dcb.fParity);
161// fprintf(stderr, "# fOutxCtsFlow %d\n", dcb.fOutxCtsFlow);
162// fprintf(stderr, "# fOutxDsrFlow %d\n", dcb.fOutxDsrFlow);
163// fprintf(stderr, "# fDtrControl %d\n", dcb.fDtrControl);
164// fprintf(stderr, "# fDsrSensitivity %d\n", dcb.fDsrSensitivity);
165// fprintf(stderr, "# fTXContinueOnXoff %d\n", dcb.fTXContinueOnXoff);
166// fprintf(stderr, "# fOutX %d\n", dcb.fOutX);
167// fprintf(stderr, "# fInX %d\n", dcb.fInX);
168// fprintf(stderr, "# fErrorChar %d\n", dcb.fErrorChar);
169// fprintf(stderr, "# fNull %d\n", dcb.fNull);
170// fprintf(stderr, "# fRtsControl %d\n", dcb.fRtsControl);
171// fprintf(stderr, "# fAbortOnError %d\n", dcb.fAbortOnError);
172// fprintf(stderr, "# fDummy2 %d\n", dcb.fDummy2);
173// fprintf(stderr, "# wReserved %d\n", dcb.wReserved);
174// fprintf(stderr, "# XonLim %d\n", dcb.XonLim);
175// fprintf(stderr, "# XoffLim %d\n", dcb.XoffLim);
176// fprintf(stderr, "# ByteSize %d\n", dcb.ByteSize);
177// fprintf(stderr, "# Parity %d\n", dcb.Parity);
178// fprintf(stderr, "# StopBits %d\n", dcb.StopBits);
179// fprintf(stderr, "# XonChar %d\n", dcb.XonChar);
180// fprintf(stderr, "# XoffChar %d\n", dcb.XoffChar);
181// fprintf(stderr, "# ErrorChar %d\n", dcb.ErrorChar);
182// fprintf(stderr, "# EofChar %d\n", dcb.EofChar);
183// fprintf(stderr, "# EvtChar %d\n", dcb.EvtChar);
184// fprintf(stderr, "# wReserved1 %d\n", dcb.wReserved1);
185// mxThrowElse(GetCommTimeouts(self->serialConnection, &timeouts));

Callers 1

mainFunction · 0.70

Calls 4

fxReadSerialAuxFunction · 0.85
fxRestartFunction · 0.85
fxReadSerialFunction · 0.70
fxProgrammingModeSerialFunction · 0.70

Tested by

no test coverage detected