7 * A Linux/Unix toolset and driver for Nokia mobile phones.
9 * This library is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU Library General Public
11 * License as published by the Free Software Foundation; either
12 * version 2 of the License, or (at your option) any later version.
14 * This library is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17 * Library General Public License for more details.
19 * You should have received a copy of the GNU Library General Public
20 * License along with this library; if not, write to the Free
21 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
30 #include <sys/ioctl.h>
32 #include "devices/unixserial.h"
35 #include "devices/winserial.h"
38 #include "devices/tekram.h"
40 int tekram_open(__const char *__file) {
42 return (serial_open(__file, O_RDWR | O_NOCTTY | O_NONBLOCK));
45 void tekram_close(int __fd) {
47 serial_setdtrrts(__fd, 0, 0);
52 void tekram_reset(int __fd) {
54 serial_setdtrrts(__fd, 0, 0); usleep(50000);
55 serial_setdtrrts(__fd, 1, 0); usleep(1000);
56 serial_setdtrrts(__fd, 1, 1); usleep(50);
58 serial_changespeed(__fd, 9600);
61 void tekram_changespeed(int __fd, int __speed) {
63 unsigned char speedbyte;
69 case 9600: speedbyte = TEKRAM_PW | TEKRAM_B9600; break;
70 case 19200: speedbyte = TEKRAM_PW | TEKRAM_B19200; break;
71 case 38400: speedbyte = TEKRAM_PW | TEKRAM_B38400; break;
72 case 57600: speedbyte = TEKRAM_PW | TEKRAM_B57600; break;
73 case 115200: speedbyte = TEKRAM_PW | TEKRAM_B115200; break;
80 serial_setdtrrts(__fd, 1, 0);
84 serial_write(__fd, &speedbyte, 1);
88 serial_setdtrrts(__fd, 1, 1);
91 serial_changespeed(__fd, __speed);
94 size_t tekram_read(int __fd, __ptr_t __buf, size_t __nbytes) {
96 return (serial_read(__fd, __buf, __nbytes));
99 size_t tekram_write(int __fd, __const __ptr_t __buf, size_t __n) {
101 return (serial_write(__fd, __buf, __n));
104 int tekram_select(int fd, struct timeval *timeout) {
109 FD_SET(fd, &readfds);
111 return (select(fd + 1, &readfds, NULL, NULL, timeout));