void Telos2101Driver::consoleListData(const QString &console_name,
				      ConsoleData::Mode mode,bool is_free,
				      bool is_last)
{
  /*
  printf("consoleListData(%s,%d,%d,%d)\n",(const char *)console_name.toAscii(),
	 mode,is_free,is_last);
  */

  if(QString(console_name).left(2)!="AP") {  // Ignore Asst Producer Sessions
    int console=console_name.right(1).toInt()-1;
    bus_consoles.push_back(new ConsoleData(console_name,console,mode,is_free));
    if(console==bus_console) {
      bus_console_found=true;
      emit currentConsole(id(),console,mode);
      bus_clients[0]->setConsoleMode(mode);
      updateConnectionState(true);
    }
  }
  if(is_last) {
    bus_consoles.
      push_back(new ConsoleData(TELOS2101_DRIVER_VIRTUAL_CONSOLE_NAME,
				ML_MAX_CONSOLES,ConsoleData::Talent,true));
    emit currentConsoleList(id(),&bus_consoles);
    if((!bus_console_found)&&(bus_console>0)&&(bus_console<ML_MAX_CONSOLES)) {
      emit currentConsole(id(),bus_console,ConsoleData::Unavailable);
      updateConnectionState(false);
    }
  }
}
void Telos2101Driver::showInfoData(unsigned max_lines,unsigned max_hybrids)
{
  bus_show_timer->stop();
  bus_current_show_auth=true;
  emit currentShow(id(),bus_showname,true);
  updateConnectionState(true);
}
void HIDServer::onControlChannelConnected()
{
    qDebug() << "NEW Control connection";
    m_controlSocket = m_controlChannel.nextPendingConnection();
    connect(m_controlSocket, SIGNAL(disconnected()), this, SLOT(onSocketDisconnected()));
    updateConnectionState();
}
void HIDServer::onInterruptChannelConnected()
{
    qDebug() << "NEW Interrupt connection";
    m_interruptSocket = m_interruptChannel.nextPendingConnection();
    connect(m_interruptSocket, SIGNAL(disconnected()), this, SLOT(onSocketDisconnected()));
    updateConnectionState();
}
void Telos2101Driver::disconnect()
{
  bus_heartbeat_timer->stop();
  bus_watchdog_timer->stop();
  bus_message_timer->stop();
  bus_show_timer->stop();
  TlsAP_Disconnect(bus_client);
  Init();
  updateConnectionState(false);
  emit connectionClosed(id());
}
Beispiel #6
0
    void
    BasicRemoteOperation::task(void)
    {
      fp64_t delta = Time::Clock::get() - m_last_action;

      // Check for connection timeouts.
      if (delta > m_connection_timeout)
        updateConnectionState(false);

      if (isActive() && m_connection)
        actuate();
    }
void HIDServer::onSocketDisconnected()
{
    QBluetoothSocket *socket = qobject_cast<QBluetoothSocket *>(sender());
    if (socket == m_interruptSocket) {
        releaseSocket(m_interruptSocket);

    } else if (socket == m_controlSocket) {
        releaseSocket(m_controlSocket);
    }

    updateConnectionState();
}
Beispiel #8
0
    void
    BasicRemoteOperation::consume(const IMC::RemoteActions* msg)
    {
      updateConnectionState();
      m_last_action = DUNE::Time::Clock::get();

      if (isActive())
      {
        Utils::TupleList tuples(msg->actions);
        if (tuples.get("Exit", 0))
        {
          IMC::TeleoperationDone top;
          dispatch(top);
        }

        onRemoteActions(msg);
      }
    }
Beispiel #9
0
    void
    BasicRemoteOperation::consume(const IMC::RemoteActions* msg)
    {
      updateConnectionState();
      m_last_action = DUNE::Time::Clock::get();

      if (isActive())
      {
        Utils::TupleList tuples(msg->actions);
        if (tuples.get("Exit", 0))
        {
          IMC::TeleoperationDone top;
          dispatch(top);
        }

        if (m_teleop_src == 0 || msg->getSource() == m_teleop_src)
          onRemoteActions(msg);
        else
          debug("ignoring remote control from %s", m_ctx.resolver.resolve(msg->getSource()));
      }
    }
void Telos2101Driver::watchdogTimerData()
{
  int fd;

  if(!bus_watchdog_active) {
    emit watchdogStateChanged(id(),true);
  }
  updateConnectionState(false);
  bus_watchdog_active=true;
  if(bus_heartbeat_timer->isActive()) {
    bus_heartbeat_timer->stop();
  }
  if(bus_message_timer->isActive()) {
    bus_message_timer->stop();
  }
  if(bus_show_timer->isActive()) {
    bus_show_timer->stop();
  }
  Init();

  //
  // Reconnect To Host
  //
  if(bus_socket!=NULL) {
    delete bus_socket;
    bus_socket=NULL;
  }
  if(!TlsAP_Connect(bus_client,(const char *)bus_hostname,
		    (const char *)bus_username,
		    (const char *)bus_userpasswd,bus_port,&fd)) {
    bus_watchdog_timer->start(TELOS2101_DRIVER_HEARTBEAT_INTERVAL,true);
    printf("TlsAP_Connect() failed!\n");
    return;
  }
  bus_socket=new Q3SocketDevice();
  bus_socket->setSocket(fd,Q3SocketDevice::Stream);
  bus_clients[0]->setIpAddress(bus_socket->address());
  bus_clients[0]->setTcpPort(bus_socket->port());
  bus_connected=true;
  bus_message_timer->start(TELOS2101_DRIVER_TICK_INTERVAL);

  //
  // Reconnect To Show
  //
  if(!TlsAP_ConnectToShow(bus_client,TELOS2101_DRIVER_SESSION_ID,
			  (const char *)bus_showname,
			  (const char *)bus_showpasswd,
			  (const char *)bus_studioname)) {
    TlsAP_Disconnect(bus_client);
    Init();
    bus_watchdog_timer->start(TELOS2101_DRIVER_HEARTBEAT_INTERVAL,true);
    return;
  }
  bus_show_timer->start(TELOS2101_DRIVER_SHOW_TIMEOUT,true);
  
  //
  // Reconnect To Console
  //
  if(bus_console>=ML_MAX_CONSOLES) {
    TlsAP_AttachAsTalent(bus_client,TELOS2101_DRIVER_SESSION_ID);
    bus_clients[0]->setConsoleMode(ConsoleData::Talent);
  }
  else {
    TlsAP_AttachToDirector(bus_client,TELOS2101_DRIVER_SESSION_ID,
			   QString().sprintf("DD%d",bus_console+1));
    TlsAP_EnumerateDirectors(bus_client,TELOS2101_DRIVER_SESSION_ID);
  }
  bus_heartbeat_timer->start(TELOS2101_DRIVER_HEARTBEAT_INTERVAL);
  bus_watchdog_timer->start(TELOS2101_DRIVER_WATCHDOG_TIMEOUT,true);
  bus_watchdog_active=false;
  updateConnectionState(true);
  emit watchdogStateChanged(id(),false);
}
void Telos2101Driver::modeData(int mode)
{
  emit currentConsole(id(),bus_console,(ConsoleData::Mode)mode);
  bus_clients[0]->setConsoleMode((ConsoleData::Mode)mode);
  updateConnectionState(true);
}