int modem_sendstr(char *cmd) { int rc=1; if(!cmd) return 1; DEBUG(('M',1,">> %s",cmd)); while(*cmd && rc>0) { switch(*cmd) { case '|': rc=write(STDOUT_FILENO, "\r", 1);usleep(300000L);break; case '~': sleep(1);rc=1;break; case '\'': usleep(200000L);rc=1;break; case '^': rc=tty_setdtr(1); break; case 'v': rc=tty_setdtr(0); break; default: rc=write(STDOUT_FILENO, cmd, 1); DEBUG(('M',4,">>> %c",C0(*cmd))); } cmd++; } if(rc>0) DEBUG(('M',4,"modem_sendstr: sent")); else DEBUG(('M',3,"modem_sendstr: error, rc=%d, errno=%d",rc,errno)); return rc; }
int check_ira(void) { logprintf(LOG_ERR, "Searching for Ira"); if(!tty_reset(hw.fd) || !tty_setbaud(hw.fd, 9600) || !tty_setrtscts(hw.fd, 0) || !tty_setdtr(hw.fd, 1)) return 0; usleep (50000); return ira_setup(); }
static int uirt2_raw_deinit(void) { int version; if (uirt2_getversion(dev, &version) >= 0 && version >= 0x0905) tty_setdtr(drv.fd, 1); uirt2_uninit(dev); dev = NULL; close(drv.fd); drv.fd = -1; tty_delete_lock(); return 1; }
static int uirt2_raw_init(void) { int version; if (!tty_create_lock(hw.device)) { logprintf(LOG_ERR, "uirt2_raw: could not create lock files"); return (0); } if ((hw.fd = open(hw.device, O_RDWR | O_NONBLOCK | O_NOCTTY)) < 0) { logprintf(LOG_ERR, "uirt2_raw: could not open %s", hw.device); tty_delete_lock(); return (0); } if (!tty_reset(hw.fd)) { logprintf(LOG_ERR, "uirt2_raw: could not reset tty"); close(hw.fd); tty_delete_lock(); return (0); } /* Wait for UIRT device to power up */ usleep(100 * 1000); if (!tty_setbaud(hw.fd, 115200)) { logprintf(LOG_ERR, "uirt2_raw: could not set baud rate"); close(hw.fd); tty_delete_lock(); return (0); } if (!tty_setcsize(hw.fd, 8)) { logprintf(LOG_ERR, "uirt2_raw: could not set csize"); close(hw.fd); tty_delete_lock(); return (0); } if (!tty_setrtscts(hw.fd, 1)) { logprintf(LOG_ERR, "uirt2_raw: could not enable hardware flow"); close(hw.fd); tty_delete_lock(); return (0); } if ((dev = uirt2_init(hw.fd)) == NULL) { logprintf(LOG_ERR, "uirt2_raw: No UIRT2 device found at %s", hw.device); close(hw.fd); tty_delete_lock(); return (0); } if (uirt2_setmoderaw(dev) < 0) { logprintf(LOG_ERR, "uirt2_raw: could not set raw mode"); uirt2_raw_deinit(); return (0); } if (uirt2_getversion(dev, &version) < 0) { uirt2_raw_deinit(); return (0); } if (version >= 0x0905) { if (!tty_setdtr(hw.fd, 0)) { logprintf(LOG_ERR, "uirt2_raw: could not set DTR"); uirt2_raw_deinit(); return (0); } } init_rec_buffer(); init_send_buffer(); rec_rptr = 0; rec_wptr = 0; rec_size = sizeof(rec_buf) / sizeof(rec_buf[0]); return (1); }