/*---------------------------------------------------------- I2CPort.nativeSetI2CPortParams accept: speed, data bits, stop bits, parity perform: set the i2c port parameters return: void exceptions: UnsupportedCommOperationException ----------------------------------------------------------*/ JNIEXPORT void JNICALL Java_gnu_io_I2CPort_nativeSetI2CPortParams( JNIEnv *env, jobject jobj, jint speed, jint dataBits, jint stopBits, jint parity ) { struct termios ttyset; int fd = get_java_var( env, jobj,"fd","I" ); int cspeed = translate_speed( env, speed ); if( !cspeed ) return; if( tcgetattr( fd, &ttyset ) < 0 ) goto fail; if( !translate_data_bits( env, (int *)&(ttyset.c_cflag), dataBits ) ) return; /* dima darwin defime c_cflag as unsigned long */ if( !translate_stop_bits( env, (int *)&(ttyset.c_cflag), stopBits ) ) return; /* dima darwin defime c_cflag as unsigned long */ if( !translate_parity( env, (int *)&(ttyset.c_cflag), parity ) ) return;/* dima darwin defime c_cflag as unsigned long */ #ifdef __FreeBSD__ if( cfsetspeed( &ttyset, cspeed ) < 0 ) goto fail; #else if( cfsetispeed( &ttyset, cspeed ) < 0 ) goto fail; if( cfsetospeed( &ttyset, cspeed ) < 0 ) goto fail; #endif if( tcsetattr( fd, TCSANOW, &ttyset ) < 0 ) goto fail; /* dump_termios("set",*ttyset); */ return; fail: throw_java_exception( env, UNSUPPORTED_COMM_OPERATION, "nativeSetI2CPortParams", strerror( errno ) ); }
void l_speed(unsigned char speed){ unsigned char translated_speed = translate_speed(speed ); analogWrite(wheel_l_enable_pin, translated_speed); }
void set_up_tty (int fd, int local) { int speed, x; struct termios tios; if (tcgetattr(fd, &tios) < 0) { syslog(LOG_ERR, "tcgetattr: %m"); die(1); } if (!restore_term) { inittermios = tios; } tios.c_cflag &= ~(CSIZE | CSTOPB | PARENB | CLOCAL); tios.c_cflag |= CS8 | CREAD | HUPCL; tios.c_iflag = IGNBRK | IGNPAR; tios.c_oflag = 0; tios.c_lflag = 0; tios.c_cc[VMIN] = 1; tios.c_cc[VTIME] = 0; if (local || !modem) { tios.c_cflag ^= (CLOCAL | HUPCL); } switch (crtscts) { case 1: tios.c_cflag |= CRTSCTS; break; case 2: tios.c_iflag |= IXOFF; tios.c_cc[VSTOP] = 0x13; /* DC3 = XOFF = ^S */ tios.c_cc[VSTART] = 0x11; /* DC1 = XON = ^Q */ break; case -1: tios.c_cflag &= ~CRTSCTS; break; default: break; } speed = translate_speed(inspeed); if (speed) { cfsetospeed (&tios, speed); cfsetispeed (&tios, speed); } /* * We can't proceed if the serial port speed is B0, * since that implies that the serial port is disabled. */ else { speed = cfgetospeed(&tios); if (speed == B0) { syslog(LOG_ERR, "Baud rate for %s is 0; need explicit baud rate", devnam); die (1); } } if (tcsetattr(fd, TCSAFLUSH, &tios) < 0) { syslog(LOG_ERR, "tcsetattr: %m"); die(1); } baud_rate = baud_rate_of(speed); restore_term = TRUE; }