Exemplo n.º 1
0
bool ListenApp::setup(int brate,int time){
  //  enumerateserialports();
  if(brate==9600){
    pqtSerialPort->setBaudRate(BAUD9600);
  }else{
    std::cout << "Baud Rate Not Supported Yet"<<std::endl;
    return 0;
  }

  QObject::connect(ptimer,SIGNAL(timeout()),this,SLOT(closeapp()));
  
  if(pqtSerialPort->open(QIODevice::ReadWrite)==false){
    std::cout << "couldn't open the serial port";
    pqtSerialPort->close();
    return 0;
  }else{
    std::cout<<"serial port opened succesfully";
  }
  //first connect to dsr signal of pqtSerialPort
  connect(pqtSerialPort,SIGNAL(dsrChanged ( bool )),
	  this,SLOT(serial_port_dsr_event(bool )));
  
  /*connect processor thread slot to serial port closed signal*/
  connect(this,SIGNAL(serial_port_closed()),processor,SLOT(stop_processing()));
  /*connect ivy downlink thread slot to serial port closed signal*/
  connect(this,SIGNAL(serial_port_closed()),ivy_dl_thread,SLOT(stop_processing()));
  /*connect ivy main loop  thread slot to serial port closed signal*/
  connect(this,SIGNAL(serial_port_closed()),pivyloopthread,SLOT(stop_processing()));

   /*connect ivy main loop  thread slot to serial port closed signal*/
  connect(this,SIGNAL(serial_port_closed()),pjsbsim_thread,SLOT(jsbsim_stop()));
  /*set the timer interval*/
  ptimer->setInterval(time);
  /*start timer*/
  ptimer->start();
  
  /*start reader*/
  reader->start();
  writer->start();

#ifndef SERIO_TESTING  
  /*start processor*/
  processor->start();
  ivy_dl_thread->start();
  pivyloopthread->start();
  pjsbsim_thread->start();
#endif
  return true;
}
Exemplo n.º 2
0
void octopus_keyboard_device::device_reset()
{
	buffered_rs232_device::device_reset();

	set_data_frame(1, 8, PARITY_NONE, STOP_BITS_1);
	set_rcv_rate(1200);
	set_tra_rate(9600);
	receive_register_reset();
	transmit_register_reset();

	m_enabled = 0;
	m_delay = 500;  // 3*100+200
	m_repeat = 110;  // 4^2*5+30

	stop_processing();
	reset_key_state();
	typematic_stop();
	clear_fifo();

	output_dcd(0);
	output_dsr(0);
	output_cts(0);
	output_rxd(1);

	start_processing(attotime::from_hz(9600));
}
Exemplo n.º 3
0
void x68k_keyboard_device::device_reset()
{
	buffered_rs232_device::device_reset();

	set_data_frame(1, 8, PARITY_NONE, STOP_BITS_1);
	set_rate(38'400); // TODO: Should be 2400 but MC68901 doesn't support divide by 16
	receive_register_reset();
	transmit_register_reset();

	m_enabled = 0;
	m_delay = 500;  // 3*100+200
	m_repeat = 110;  // 4^2*5+30

	stop_processing();
	reset_key_state();
	typematic_stop();
	clear_fifo();

	output_dcd(0);
	output_dsr(0);
	output_cts(0);
	output_rxd(1);
}
Exemplo n.º 4
0
void x68k_keyboard_device::received_byte(uint8_t data)
{
	/* Keyboard control commands:
	   00xxxxxx - TV Control
	              Not of much use as yet

	   01000xxy - y = Mouse control signal

	   01001xxy - y = Keyboard enable

	   010100xy - y = Sharp X1 display compatibility mode

	   010101xx - xx = LED brightness (00 = bright, 11 = dark)

	   010110xy - y = Display control enable

	   010111xy - y = Display control via the Opt. 2 key enable

	   0110xxxx - xxxx = Key delay (default 500ms)
	                     100 * (delay time) + 200ms

	   0111xxxx - xxxx = Key repeat rate  (default 110ms)
	                     (repeat rate)^2*5 + 30ms

	   1xxxxxxx - xxxxxxx = keyboard LED status
	              b6 = fullwidth
	              b5 = hiragana
	              b4 = insert
	              b3 = caps
	              b2 = code input
	              b1 = romaji
	              b0 = kana
	*/

	if (data & 0x80)  // LED status
	{
		machine().output().set_value("key_led_kana", data & 0x01);
		machine().output().set_value("key_led_romaji", data & 0x02);
		machine().output().set_value("key_led_code", data & 0x04);
		machine().output().set_value("key_led_caps", data & 0x08);
		machine().output().set_value("key_led_insert", data & 0x10);
		machine().output().set_value("key_led_hiragana", data & 0x20);
		machine().output().set_value("key_led_fullsize", data & 0x40);
		logerror("KB: LED status set to %02x\n", data & 0x7f);
	}

	if ((data & 0xc0) == 0)  // TV control
	{
		// nothing for now
	}

	if ((data & 0xf8) == 0x48)  // Keyboard enable
	{
		m_enabled = data & 0x01;
		if (m_enabled) start_processing(attotime::from_hz(2'400));
		else stop_processing();
		logerror("KB: Keyboard enable bit = %i\n", m_enabled);
	}

	if ((data & 0xf0) == 0x60)  // Key delay time
	{
		m_delay = ((data & 0x0f) * 100) + 200;
		logerror("KB: Keypress delay time is now %ims\n", m_delay);
	}

	if ((data & 0xf0) == 0x70)  // Key repeat rate
	{
		m_repeat = (((data & 0x0f)^2) * 5) + 30;
		logerror("KB: Keypress repeat rate is now %ims\n", m_repeat);
	}
}