Changeset 369 for branches/merlin
- Timestamp:
- 09/03/09 09:46:49 (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/merlin/csctapi/io_serial.c
r355 r369 55 55 */ 56 56 57 static int IO_Serial_Bitrate(int bitrate); 57 static int IO_Serial_Bitrate_to_Speed(int bitrate); 58 59 static int IO_Serial_Bitrate_from_Speed(int speed); 58 60 59 61 static bool IO_Serial_WaitToRead(int hnd, unsigned delay_ms, unsigned timeout_ms); … … 234 236 235 237 o_speed = cfgetospeed(&currtio); 236 237 switch (o_speed) { 238 #ifdef B0 239 case B0: 240 props->output_bitrate = 0; 241 break; 242 #endif 243 #ifdef B50 244 case B50: 245 props->output_bitrate = 50; 246 break; 247 #endif 248 #ifdef B75 249 case B75: 250 props->output_bitrate = 75; 251 break; 252 #endif 253 #ifdef B110 254 case B110: 255 props->output_bitrate = 110; 256 break; 257 #endif 258 #ifdef B134 259 case B134: 260 props->output_bitrate = 134; 261 break; 262 #endif 263 #ifdef B150 264 case B150: 265 props->output_bitrate = 150; 266 break; 267 #endif 268 #ifdef B200 269 case B200: 270 props->output_bitrate = 200; 271 break; 272 #endif 273 #ifdef B300 274 case B300: 275 props->output_bitrate = 300; 276 break; 277 #endif 278 #ifdef B600 279 case B600: 280 props->output_bitrate = 600; 281 break; 282 #endif 283 #ifdef B1200 284 case B1200: 285 props->output_bitrate = 1200; 286 break; 287 #endif 288 #ifdef B1800 289 case B1800: 290 props->output_bitrate = 1800; 291 break; 292 #endif 293 #ifdef B2400 294 case B2400: 295 props->output_bitrate = 2400; 296 break; 297 #endif 298 #ifdef B4800 299 case B4800: 300 props->output_bitrate = 4800; 301 break; 302 #endif 303 #ifdef B9600 304 case B9600: 305 props->output_bitrate = 9600; 306 break; 307 #endif 308 #ifdef B19200 309 case B19200: 310 props->output_bitrate = 19200; 311 break; 312 #endif 313 #ifdef B38400 314 case B38400: 315 props->output_bitrate = 38400; 316 break; 317 #endif 318 #ifdef B57600 319 case B57600: 320 props->output_bitrate = 57600; 321 break; 322 #endif 323 #ifdef B115200 324 case B115200: 325 props->output_bitrate = 115200; 326 break; 327 #endif 328 #ifdef B230400 329 case B230400: 330 props->output_bitrate = 230400; 331 break; 332 #endif 333 default: 334 props->output_bitrate = 1200; 335 break; 336 } 238 props->output_bitrate = IO_Serial_Bitrate_from_Speed(o_speed); 337 239 338 240 i_speed = cfgetispeed(&currtio); 339 340 switch (i_speed) { 341 #ifdef B0 342 case B0: 343 props->input_bitrate = 0; 344 break; 345 #endif 346 #ifdef B50 347 case B50: 348 props->input_bitrate = 50; 349 break; 350 #endif 351 #ifdef B75 352 case B75: 353 props->input_bitrate = 75; 354 break; 355 #endif 356 #ifdef B110 357 case B110: 358 props->input_bitrate = 110; 359 break; 360 #endif 361 #ifdef B134 362 case B134: 363 props->input_bitrate = 134; 364 break; 365 #endif 366 #ifdef B150 367 case B150: 368 props->input_bitrate = 150; 369 break; 370 #endif 371 #ifdef B200 372 case B200: 373 props->input_bitrate = 200; 374 break; 375 #endif 376 #ifdef B300 377 case B300: 378 props->input_bitrate = 300; 379 break; 380 #endif 381 #ifdef B600 382 case B600: 383 props->input_bitrate = 600; 384 break; 385 #endif 386 #ifdef B1200 387 case B1200: 388 props->input_bitrate = 1200; 389 break; 390 #endif 391 #ifdef B1800 392 case B1800: 393 props->input_bitrate = 1800; 394 break; 395 #endif 396 #ifdef B2400 397 case B2400: 398 props->input_bitrate = 2400; 399 break; 400 #endif 401 #ifdef B4800 402 case B4800: 403 props->input_bitrate = 4800; 404 break; 405 #endif 406 #ifdef B9600 407 case B9600: 408 props->input_bitrate = 9600; 409 break; 410 #endif 411 #ifdef B19200 412 case B19200: 413 props->input_bitrate = 19200; 414 break; 415 #endif 416 #ifdef B38400 417 case B38400: 418 props->input_bitrate = 38400; 419 break; 420 #endif 421 #ifdef B57600 422 case B57600: 423 props->input_bitrate = 57600; 424 break; 425 #endif 426 #ifdef B115200 427 case B115200: 428 props->input_bitrate = 115200; 429 break; 430 #endif 431 #ifdef B230400 432 case B230400: 433 props->input_bitrate = 230400; 434 break; 435 #endif 436 default: 437 props->input_bitrate = 1200; 438 break; 439 } 241 props->input_bitrate = IO_Serial_Bitrate_from_Speed(i_speed); 440 242 441 243 /* Check for custom bitrate */ … … 523 325 #endif 524 326 /* Standard bitrate */ 525 cfsetospeed(&newtio, IO_Serial_Bitrate(props->output_bitrate)); 526 cfsetispeed(&newtio, IO_Serial_Bitrate(props->input_bitrate)); 327 int output_speed = IO_Serial_Bitrate_to_Speed(props->output_bitrate); 328 int input_speed = IO_Serial_Bitrate_to_Speed(props->input_bitrate); 329 cfsetospeed(&newtio, output_speed); 330 cfsetispeed(&newtio, input_speed); 527 331 528 332 /* Save the effective bitrate value for OScam */ 529 reader_serial_bitrate_effective = props->output_bitrate;333 reader_serial_bitrate_effective = IO_Serial_Bitrate_from_Speed(output_speed); 530 334 #ifdef OS_LINUX 531 335 } else { 532 336 /* Special bitrate : these structures are only available on linux as fas as we know so limit this code to OS_LINUX */ 533 337 unsigned long standard_bitrate = props->output_bitrate; 338 unsigned long effective_bitrate; 534 339 535 340 struct serial_struct s; … … 537 342 unsigned long wanted_bitrate = props->output_bitrate; 538 343 unsigned long custom_divisor = ((unsigned long) s.baud_base + (wanted_bitrate / 2)) / wanted_bitrate; 539 unsigned longeffective_bitrate = (unsigned long) s.baud_base / custom_divisor;344 effective_bitrate = (unsigned long) s.baud_base / custom_divisor; 540 345 541 346 /* Check if a custom_divisor is needed */ … … 563 368 #endif 564 369 } 565 566 /* Save the effective bitrate value for OScam */ 567 reader_serial_bitrate_effective = effective_bitrate; 370 } else { 371 effective_bitrate = IO_Serial_Bitrate_from_Speed(IO_Serial_Bitrate_to_Speed(standard_bitrate)); 568 372 } 569 373 374 /* Save the effective bitrate value for OScam */ 375 reader_serial_bitrate_effective = effective_bitrate; 376 570 377 /* Set the standard bitrate value */ 571 cfsetospeed(&newtio, IO_Serial_Bitrate (standard_bitrate));572 cfsetispeed(&newtio, IO_Serial_Bitrate (standard_bitrate));378 cfsetospeed(&newtio, IO_Serial_Bitrate_to_Speed(standard_bitrate)); 379 cfsetispeed(&newtio, IO_Serial_Bitrate_to_Speed(standard_bitrate)); 573 380 } 574 381 #endif … … 832 639 */ 833 640 834 static int IO_Serial_Bitrate (int bitrate)641 static int IO_Serial_Bitrate_to_Speed(int bitrate) 835 642 { 836 643 #ifdef B230400 … … 910 717 return B0; 911 718 #endif 719 720 return 0; /* Should never get here */ 721 } 722 723 static int IO_Serial_Bitrate_from_Speed(int speed) 724 { 725 switch (speed) { 726 #ifdef B0 727 case B0: 728 return 0; 729 #endif 730 #ifdef B50 731 case B50: 732 return 50; 733 #endif 734 #ifdef B75 735 case B75: 736 return 75; 737 #endif 738 #ifdef B110 739 case B110: 740 return 110; 741 #endif 742 #ifdef B134 743 case B134: 744 return 134; 745 #endif 746 #ifdef B150 747 case B150: 748 return 150; 749 #endif 750 #ifdef B200 751 case B200: 752 return 200; 753 #endif 754 #ifdef B300 755 case B300: 756 return 300; 757 #endif 758 #ifdef B600 759 case B600: 760 return 600; 761 #endif 762 #ifdef B1200 763 case B1200: 764 return 1200; 765 #endif 766 #ifdef B1800 767 case B1800: 768 return 1800; 769 #endif 770 #ifdef B2400 771 case B2400: 772 return 2400; 773 #endif 774 #ifdef B4800 775 case B4800: 776 return 4800; 777 #endif 778 #ifdef B9600 779 case B9600: 780 return 9600; 781 #endif 782 #ifdef B19200 783 case B19200: 784 return 19200; 785 #endif 786 #ifdef B38400 787 case B38400: 788 return 38400; 789 #endif 790 #ifdef B57600 791 case B57600: 792 return 57600; 793 #endif 794 #ifdef B115200 795 case B115200: 796 return 115200; 797 #endif 798 #ifdef B230400 799 case B230400: 800 return 230400; 801 #endif 802 default: 803 return 1200; 804 } 805 912 806 return 0; /* Should never get here */ 913 807 }
Note:
See TracChangeset
for help on using the changeset viewer.