// we try to change the state of the connection void Printer::serial_try_connect (bool connect) { int result; assert(m_model != NULL); // Need a model first if (connect) { void *cl = static_cast<void *>(this); // TODO: Configurable protocol, cache size device = rr_dev_create (RR_PROTO_FIVED, m_model->settings.Hardware.ReceivingBufferSize, rr_reply_fn, cl, rr_more_fn, cl, rr_error_fn, cl, rr_wait_wr_fn, cl, rr_log_fn, cl); signal_serial_state_changed.emit (SERIAL_CONNECTING); result = rr_dev_open (device, m_model->settings.Hardware.PortName.c_str(), m_model->settings.Hardware.SerialSpeed); if(result < 0) { signal_serial_state_changed.emit (SERIAL_DISCONNECTED); error (_("Failed to connect to device"), _("an error occured while connecting")); } else { rr_dev_reset (device); signal_serial_state_changed.emit (SERIAL_CONNECTED); UpdateTemperatureMonitor(); } } else { if (printing) { error (_("Cannot disconnect"), _("printer is printing")); signal_serial_state_changed.emit (SERIAL_CONNECTED); } else { signal_serial_state_changed.emit (SERIAL_DISCONNECTING); devconn.disconnect(); if (device) rr_dev_close (device); devconn.disconnect(); signal_serial_state_changed.emit (SERIAL_DISCONNECTED); Pause(); temp_timeout.disconnect(); if (device) rr_dev_free (device); device = NULL; } } if (connect) { UpdateTemperatureMonitor(); } else { } }
bool Printer::temp_timeout_cb() { if (IsConnected() && m_model && m_model->settings.Misc.TempReadingEnabled) SendNow("M105"); UpdateTemperatureMonitor(); return true; }
bool Printer::Idle( void ) { string str; bool is_connected; while ( ( str = ReadResponse() ) != "" ) ParseResponse( str ); if ( m_view ) { while ( ( str = ReadLog() ) != "" ) m_view->comm_log( str ); while ( ( str = ReadErrorLog() ) != "" ) { alert( str.c_str() ); } } if ( ( is_connected = IsConnected() ) != was_connected ) { was_connected = is_connected; signal_serial_state_changed.emit( is_connected ? SERIAL_CONNECTED : SERIAL_DISCONNECTED ); } if ( waiting_temp && --temp_countdown == 0 && m_model && m_model->settings.get_boolean("Misc","TempReadingEnabled") ) { UpdateTemperatureMonitor(); temp_countdown = 100; waiting_temp = false; } return true; }
bool Printer::Connect( string device, int baudrate ) { signal_serial_state_changed.emit( SERIAL_CONNECTING ); bool ret = ThreadedPrinterSerial::Connect( device, baudrate ); signal_serial_state_changed.emit( ret ? SERIAL_CONNECTED : SERIAL_DISCONNECTED ); UpdateTemperatureMonitor(); return ret; }
void Printer::setModel(Model *model) { m_model = model; UpdateTemperatureMonitor(); }