Commit 5db0c344469de32535b3a968c28dd8633e8149ba
1 parent
bb8dd781
Coding conventions on newly added win32 code
Showing
1 changed file
with
112 additions
and
100 deletions
src/modbus-rtu.c
| ... | ... | @@ -166,30 +166,38 @@ int _modbus_rtu_send_msg_pre(uint8_t *req, int req_length) |
| 166 | 166 | |
| 167 | 167 | static void win32_ser_init(struct win32_ser *ws) { |
| 168 | 168 | /* Clear everything */ |
| 169 | - memset(ws,0x00,sizeof(struct win32_ser)); | |
| 169 | + memset(ws, 0x00, sizeof(struct win32_ser)); | |
| 170 | + | |
| 170 | 171 | /* Set file handle to invalid */ |
| 171 | 172 | ws->fd = INVALID_HANDLE_VALUE; |
| 172 | 173 | } |
| 173 | 174 | |
| 174 | 175 | static int win32_ser_select(struct win32_ser *ws, int max_len, struct timeval *tv) { |
| 175 | - COMMTIMEOUTS comm_to; unsigned int msec = 0; | |
| 176 | + COMMTIMEOUTS comm_to; | |
| 177 | + unsigned int msec = 0; | |
| 178 | + | |
| 176 | 179 | /* Check if some data still in the buffer to be consumed */ |
| 177 | 180 | if (ws->n_bytes> 0) { |
| 178 | 181 | return 1; |
| 179 | 182 | } |
| 183 | + | |
| 180 | 184 | /* Setup timeouts like select() would do */ |
| 181 | 185 | msec = tv->tv_sec * 1000 + tv->tv_usec / 1000; |
| 182 | - if (msec < 1) msec = 1; | |
| 186 | + if (msec < 1) | |
| 187 | + msec = 1; | |
| 188 | + | |
| 183 | 189 | comm_to.ReadIntervalTimeout = msec; |
| 184 | 190 | comm_to.ReadTotalTimeoutMultiplier = 0; |
| 185 | 191 | comm_to.ReadTotalTimeoutConstant = msec; |
| 186 | 192 | comm_to.WriteTotalTimeoutMultiplier = 0; |
| 187 | 193 | comm_to.WriteTotalTimeoutConstant = 1000; |
| 188 | - SetCommTimeouts(ws->fd,&comm_to); | |
| 194 | + SetCommTimeouts(ws->fd, &comm_to); | |
| 195 | + | |
| 189 | 196 | /* Read some bytes */ |
| 190 | 197 | if ((max_len > PY_BUF_SIZE) || (max_len < 0)) { |
| 191 | 198 | max_len = PY_BUF_SIZE; |
| 192 | 199 | } |
| 200 | + | |
| 193 | 201 | if (ReadFile(ws->fd, &ws->buf, max_len, &ws->n_bytes, NULL)) { |
| 194 | 202 | /* Check if some bytes available */ |
| 195 | 203 | if (ws->n_bytes > 0) { |
| ... | ... | @@ -207,14 +215,18 @@ static int win32_ser_select(struct win32_ser *ws, int max_len, struct timeval *t |
| 207 | 215 | |
| 208 | 216 | static int win32_ser_read(struct win32_ser *ws, uint8_t *p_msg, unsigned int max_len) { |
| 209 | 217 | unsigned int n = ws->n_bytes; |
| 218 | + | |
| 210 | 219 | if (max_len < n) { |
| 211 | 220 | n = max_len; |
| 212 | 221 | } |
| 222 | + | |
| 213 | 223 | if (n > 0) { |
| 214 | - memcpy(p_msg,ws->buf,n); | |
| 224 | + memcpy(p_msg, ws->buf, n); | |
| 215 | 225 | } |
| 226 | + | |
| 216 | 227 | ws->n_bytes -= n; |
| 217 | - return(n); | |
| 228 | + | |
| 229 | + return n; | |
| 218 | 230 | } |
| 219 | 231 | #endif |
| 220 | 232 | |
| ... | ... | @@ -290,12 +302,12 @@ static int _modbus_rtu_connect(modbus_t *ctx) |
| 290 | 302 | |
| 291 | 303 | /* ctx_rtu->device should contain a string like "COMxx:" xx being a decimal number */ |
| 292 | 304 | ctx_rtu->w_ser.fd = CreateFileA(ctx_rtu->device, |
| 293 | - GENERIC_READ | GENERIC_WRITE, | |
| 294 | - 0, | |
| 295 | - NULL, | |
| 296 | - OPEN_EXISTING, | |
| 297 | - 0, | |
| 298 | - NULL); | |
| 305 | + GENERIC_READ | GENERIC_WRITE, | |
| 306 | + 0, | |
| 307 | + NULL, | |
| 308 | + OPEN_EXISTING, | |
| 309 | + 0, | |
| 310 | + NULL); | |
| 299 | 311 | |
| 300 | 312 | /* Error checking */ |
| 301 | 313 | if (ctx_rtu->w_ser.fd == INVALID_HANDLE_VALUE) { |
| ... | ... | @@ -317,102 +329,102 @@ static int _modbus_rtu_connect(modbus_t *ctx) |
| 317 | 329 | |
| 318 | 330 | /* Speed setting */ |
| 319 | 331 | switch (ctx_rtu->baud) { |
| 320 | - case 110: | |
| 321 | - dcb.BaudRate = CBR_110; | |
| 322 | - break; | |
| 323 | - case 300: | |
| 324 | - dcb.BaudRate = CBR_300; | |
| 325 | - break; | |
| 326 | - case 600: | |
| 327 | - dcb.BaudRate = CBR_600; | |
| 328 | - break; | |
| 329 | - case 1200: | |
| 330 | - dcb.BaudRate = CBR_1200; | |
| 331 | - break; | |
| 332 | - case 2400: | |
| 333 | - dcb.BaudRate = CBR_2400; | |
| 334 | - break; | |
| 335 | - case 4800: | |
| 336 | - dcb.BaudRate = CBR_4800; | |
| 337 | - break; | |
| 338 | - case 9600: | |
| 339 | - dcb.BaudRate = CBR_9600; | |
| 340 | - break; | |
| 341 | - case 19200: | |
| 342 | - dcb.BaudRate = CBR_19200; | |
| 343 | - break; | |
| 344 | - case 38400: | |
| 345 | - dcb.BaudRate = CBR_38400; | |
| 346 | - break; | |
| 347 | - case 57600: | |
| 348 | - dcb.BaudRate = CBR_57600; | |
| 349 | - break; | |
| 350 | - case 115200: | |
| 351 | - dcb.BaudRate = CBR_115200; | |
| 352 | - break; | |
| 353 | - default: | |
| 354 | - dcb.BaudRate = CBR_9600; | |
| 355 | - printf("WARNING Unknown baud rate %d for %s (B9600 used)\n", | |
| 356 | - ctx_rtu->baud, ctx_rtu->device); | |
| 357 | - } | |
| 332 | + case 110: | |
| 333 | + dcb.BaudRate = CBR_110; | |
| 334 | + break; | |
| 335 | + case 300: | |
| 336 | + dcb.BaudRate = CBR_300; | |
| 337 | + break; | |
| 338 | + case 600: | |
| 339 | + dcb.BaudRate = CBR_600; | |
| 340 | + break; | |
| 341 | + case 1200: | |
| 342 | + dcb.BaudRate = CBR_1200; | |
| 343 | + break; | |
| 344 | + case 2400: | |
| 345 | + dcb.BaudRate = CBR_2400; | |
| 346 | + break; | |
| 347 | + case 4800: | |
| 348 | + dcb.BaudRate = CBR_4800; | |
| 349 | + break; | |
| 350 | + case 9600: | |
| 351 | + dcb.BaudRate = CBR_9600; | |
| 352 | + break; | |
| 353 | + case 19200: | |
| 354 | + dcb.BaudRate = CBR_19200; | |
| 355 | + break; | |
| 356 | + case 38400: | |
| 357 | + dcb.BaudRate = CBR_38400; | |
| 358 | + break; | |
| 359 | + case 57600: | |
| 360 | + dcb.BaudRate = CBR_57600; | |
| 361 | + break; | |
| 362 | + case 115200: | |
| 363 | + dcb.BaudRate = CBR_115200; | |
| 364 | + break; | |
| 365 | + default: | |
| 366 | + dcb.BaudRate = CBR_9600; | |
| 367 | + printf("WARNING Unknown baud rate %d for %s (B9600 used)\n", | |
| 368 | + ctx_rtu->baud, ctx_rtu->device); | |
| 369 | + } | |
| 358 | 370 | |
| 359 | - /* Data bits */ | |
| 360 | - switch (ctx_rtu->data_bit) { | |
| 361 | - case 5: | |
| 362 | - dcb.ByteSize = 5; | |
| 363 | - break; | |
| 364 | - case 6: | |
| 365 | - dcb.ByteSize = 6; | |
| 366 | - break; | |
| 367 | - case 7: | |
| 368 | - dcb.ByteSize = 7; | |
| 369 | - break; | |
| 370 | - case 8: | |
| 371 | - default: | |
| 372 | - dcb.ByteSize = 8; | |
| 373 | - break; | |
| 374 | - } | |
| 371 | + /* Data bits */ | |
| 372 | + switch (ctx_rtu->data_bit) { | |
| 373 | + case 5: | |
| 374 | + dcb.ByteSize = 5; | |
| 375 | + break; | |
| 376 | + case 6: | |
| 377 | + dcb.ByteSize = 6; | |
| 378 | + break; | |
| 379 | + case 7: | |
| 380 | + dcb.ByteSize = 7; | |
| 381 | + break; | |
| 382 | + case 8: | |
| 383 | + default: | |
| 384 | + dcb.ByteSize = 8; | |
| 385 | + break; | |
| 386 | + } | |
| 375 | 387 | |
| 376 | - /* Stop bits */ | |
| 377 | - if (ctx_rtu->stop_bit == 1) | |
| 378 | - dcb.StopBits = ONESTOPBIT; | |
| 379 | - else /* 2 */ | |
| 380 | - dcb.StopBits = TWOSTOPBITS; | |
| 381 | - | |
| 382 | - /* Parity */ | |
| 383 | - if (ctx_rtu->parity == 'N') { | |
| 384 | - dcb.Parity = NOPARITY; | |
| 385 | - dcb.fParity = FALSE; | |
| 386 | - } else if (ctx_rtu->parity == 'E') { | |
| 387 | - dcb.Parity = EVENPARITY; | |
| 388 | - dcb.fParity = TRUE; | |
| 389 | - } else { | |
| 390 | - /* odd */ | |
| 391 | - dcb.Parity = ODDPARITY; | |
| 392 | - dcb.fParity = TRUE; | |
| 393 | - } | |
| 388 | + /* Stop bits */ | |
| 389 | + if (ctx_rtu->stop_bit == 1) | |
| 390 | + dcb.StopBits = ONESTOPBIT; | |
| 391 | + else /* 2 */ | |
| 392 | + dcb.StopBits = TWOSTOPBITS; | |
| 394 | 393 | |
| 395 | - /* Hardware handshaking left as default settings retrieved */ | |
| 394 | + /* Parity */ | |
| 395 | + if (ctx_rtu->parity == 'N') { | |
| 396 | + dcb.Parity = NOPARITY; | |
| 397 | + dcb.fParity = FALSE; | |
| 398 | + } else if (ctx_rtu->parity == 'E') { | |
| 399 | + dcb.Parity = EVENPARITY; | |
| 400 | + dcb.fParity = TRUE; | |
| 401 | + } else { | |
| 402 | + /* odd */ | |
| 403 | + dcb.Parity = ODDPARITY; | |
| 404 | + dcb.fParity = TRUE; | |
| 405 | + } | |
| 396 | 406 | |
| 397 | - /* No software handshaking */ | |
| 398 | - dcb.fTXContinueOnXoff = TRUE; | |
| 399 | - dcb.fOutX = FALSE; | |
| 400 | - dcb.fInX = FALSE; | |
| 407 | + /* Hardware handshaking left as default settings retrieved */ | |
| 401 | 408 | |
| 402 | - /* Binary mode (it's the only supported on Windows anyway) */ | |
| 403 | - dcb.fBinary = TRUE; | |
| 409 | + /* No software handshaking */ | |
| 410 | + dcb.fTXContinueOnXoff = TRUE; | |
| 411 | + dcb.fOutX = FALSE; | |
| 412 | + dcb.fInX = FALSE; | |
| 404 | 413 | |
| 405 | - /* Don't want errors to be blocking */ | |
| 406 | - dcb.fAbortOnError = FALSE; | |
| 414 | + /* Binary mode (it's the only supported on Windows anyway) */ | |
| 415 | + dcb.fBinary = TRUE; | |
| 407 | 416 | |
| 408 | - /* TODO: any other flags !? */ | |
| 417 | + /* Don't want errors to be blocking */ | |
| 418 | + dcb.fAbortOnError = FALSE; | |
| 409 | 419 | |
| 410 | - /* Setup port */ | |
| 411 | - if (!SetCommState(ctx_rtu->w_ser.fd, &dcb)) { | |
| 412 | - fprintf(stderr, "ERROR Error setting new configuration (LastError %d)\n", | |
| 413 | - (int)GetLastError()); | |
| 414 | - return -1; | |
| 415 | - } | |
| 420 | + /* TODO: any other flags!? */ | |
| 421 | + | |
| 422 | + /* Setup port */ | |
| 423 | + if (!SetCommState(ctx_rtu->w_ser.fd, &dcb)) { | |
| 424 | + fprintf(stderr, "ERROR Error setting new configuration (LastError %d)\n", | |
| 425 | + (int)GetLastError()); | |
| 426 | + return -1; | |
| 427 | + } | |
| 416 | 428 | #else |
| 417 | 429 | /* The O_NOCTTY flag tells UNIX that this program doesn't want |
| 418 | 430 | to be the "controlling terminal" for that port. If you | ... | ... |