MTI::MTI(const char * dev_, OutputMode mode_, OutputFormat outputDisplay_, SyncOutMode syncOutMode_): device(dev_), mode(MTI_OPMODE_CALIBRATED), outputDisplay(MTI_OPFORMAT_EULER), outputSkipFactor(0), mtcomm(), connected(false), pte(10e-3, 6000, 0.0002), emptied_buffers(false) { baudrate_enum = PBR_115K2; baudrate = 115200; _set_mode(mode_); _set_outputDisplay(outputDisplay_); _set_syncOut(syncOutMode_); connect(); _configure_device(); }
int app_init( void ) { char s[ 16 ]; if ( ev3_search_tacho_plugged_in( L_MOTOR_PORT, L_MOTOR_EXT_PORT, motor + L, 0 )) { get_tacho_max_speed( motor[ L ], &max_speed ); /* Reset the motor */ set_tacho_command_inx( motor[ L ], TACHO_RESET ); } else { printf( "LEFT motor (%s) is NOT found.\n", ev3_port_name( L_MOTOR_PORT, L_MOTOR_EXT_PORT, 0, s )); /* Inoperative without left motor */ return ( 0 ); } if ( ev3_search_tacho_plugged_in( R_MOTOR_PORT, R_MOTOR_EXT_PORT, motor + R, 0 )) { /* Reset the motor */ set_tacho_command_inx( motor[ R ], TACHO_RESET ); } else { printf( "RIGHT motor (%s) is NOT found.\n", ev3_port_name( R_MOTOR_PORT, R_MOTOR_EXT_PORT, 0, s )); /* Inoperative without right motor */ return ( 0 ); } command = moving = MOVE_NONE; if ( ev3_search_sensor( LEGO_EV3_IR, &ir, 0 )) { _set_mode( MODE_REMOTE ); } else { printf( "IR sensor is NOT found.\n" ); /* Inoperative without IR sensor */ return ( 0 ); } printf( "IR remote control:\n" "RED UP & BLUE UP - forward\n" "RED DOWN & BLUE DOWN - backward\n" "RED UP | BLUE DOWN - left\n" "RED DOWN | BLUE UP - right\n" "To switch between IR remote control and\n" "self-driving" ); if ( ev3_search_sensor( LEGO_EV3_TOUCH, &touch, 0 )) { printf( " use the TOUCH sensor.\n" ); } else { touch = DESC_LIMIT; printf( " press UP on the EV3 brick.\n" ); } printf( "Press BACK on the EV3 brick for EXIT...\n" ); return ( 1 ); }
bool MTI::set_mode(OutputMode mode_) { return (_set_mode(mode_) && _configure_device()); }