1 /* vi: set sw=4 ts=4: */
3 * compact speed_t <-> speed functions for busybox
5 * Copyright (C) 2003 Manuel Novoa III <mjn3@codepoet.org>
7 * Licensed under GPLv2 or later, see file LICENSE in this source tree.
17 static const struct speed_map speeds
[] = {
38 {B38400
, 38400/256 + 0x8000U
},
40 {EXTB
, 38400/256 + 0x8000U
},
43 {B57600
, 57600/256 + 0x8000U
},
46 {B115200
, 115200/256 + 0x8000U
},
49 {B230400
, 230400/256 + 0x8000U
},
52 {B460800
, 460800/256 + 0x8000U
},
55 {B921600
, 921600/256 + 0x8000U
},
59 enum { NUM_SPEEDS
= ARRAY_SIZE(speeds
) };
61 unsigned FAST_FUNC
tty_baud_to_value(speed_t speed
)
66 if (speed
== speeds
[i
].speed
) {
67 if (speeds
[i
].value
& 0x8000U
) {
68 return ((unsigned long) (speeds
[i
].value
) & 0x7fffU
) * 256;
70 return speeds
[i
].value
;
72 } while (++i
< NUM_SPEEDS
);
77 speed_t FAST_FUNC
tty_value_to_baud(unsigned int value
)
82 if (value
== tty_baud_to_value(speeds
[i
].speed
)) {
83 return speeds
[i
].speed
;
85 } while (++i
< NUM_SPEEDS
);
99 for (v
= 0 ; v
< 1000000; v
++) {
100 s
= tty_value_to_baud(v
);
101 if (s
== (speed_t
) -1) {
104 printf("v = %lu -- s = %0lo\n", v
, (unsigned long) s
);
107 printf("-------------------------------\n");
109 for (s
= 0 ; s
< 010017+1; s
++) {
110 v
= tty_baud_to_value(s
);
114 printf("v = %lu -- s = %0lo\n", v
, (unsigned long) s
);