Example #1
0
int Daisy23::readButton(void) {
	int count=0;
	byte value = (mpr_read(0x01)<<8) | mpr_read(0x00);
	for(int i=0; i<6; i++) {
		if(value& (1<<i)) 
			count++;
	}
	if(count != 0 && count != 2) {
		if(value & (1<<0))
			return 0;
		else if(value & (1<<1))
			return 1;
		else if(value & (1<<2))
			return 2;
		else if(value & (1<<3))
			return 3;
		else if(value & (1<<4))
			return 4;
	} else 
		return -1;
}
Example #2
0
void UI_Mainwindow::video_poll_timer_func()
{
  int i, err, len, vpos=0;

  char buf[4096];

  if(video_player->status == VIDEO_STATUS_STOPPED)  return;

  if(video_player->status != VIDEO_STATUS_PAUSED)
  {
    video_player->cntdwn_timer -= video_player->poll_timer;
  }

  if(video_player->cntdwn_timer <= 0)
  {
    stop_video_generic();

    QMessageBox messagewindow(QMessageBox::Critical, "Error", "Videoplayer: time-out.");
    messagewindow.exec();
    return;
  }

  len = mpr_read(buf, 4095);
  if(len < 1)
  {
    video_poll_timer->start(video_player->poll_timer);

    return;
  }

  if(video_player->status == VIDEO_STATUS_STARTUP_1)
  {
    if(!strncmp(buf, "Command Line Interface initialized.", 35))
    {
      video_player->status = VIDEO_STATUS_STARTUP_2;
    }
  }

  if(video_player->status < VIDEO_STATUS_PLAYING)
  {
    if(!strncmp(buf, "> ", 2))
    {
      if(video_player->status == VIDEO_STATUS_STARTUP_2)
      {
        mpr_write("clear\n");

        video_process->waitForBytesWritten(1000);

        video_player->status = VIDEO_STATUS_STARTUP_3;

        video_player->cntdwn_timer = 5000;
      }
      else if(video_player->status == VIDEO_STATUS_STARTUP_3)
        {
          strcpy(buf, "add ");

          strcat(buf, videopath);

          strcat(buf, "\n");

          mpr_write(buf);

          video_process->waitForBytesWritten(1000);

          video_player->status = VIDEO_STATUS_STARTUP_4;

          video_player->cntdwn_timer = 5000;
        }
        else if(video_player->status == VIDEO_STATUS_STARTUP_4)
          {
            mpr_write("volume 255\n");

            video_process->waitForBytesWritten(1000);

            video_player->status = VIDEO_STATUS_PLAYING;

            video_pause_act->setText("Pause");

            video_pause_act->setToolTip("Pause video");

            video_player->cntdwn_timer = 5000;
          }
    }

    video_poll_timer->start(video_player->poll_timer);

    return;
  }

  if(video_player->status == VIDEO_STATUS_PLAYING)
  {
    if(!strncmp(buf, "> ", 2))
    {
      if((len > 4) && (buf[len-1] == '\n'))
      {
        err = 0;

        for(i=2; i<(len-1); i++)
        {
          if((buf[i] < '0') || (buf[i] > '9'))

          err = 1;

          break;
        }

        if(!err)
        {
          vpos = atoi(buf + 2);

          if(video_player->fpos != vpos)
          {
            jump_to_time_millisec(video_player->utc_starttime - edfheaderlist[sel_viewtime]->utc_starttime + (vpos * 1000LL));

            video_player->fpos = vpos;

            video_player->stop_det_counter = 0;
          }

          video_player->cntdwn_timer = 5000;
        }
      }
      else if(buf[2] == '\r')
      {
        video_player->stop_det_counter += video_player->poll_timer;

        if(video_player->stop_det_counter > 1500)
        {
          stop_video_generic();

          QMessageBox messagewindow(QMessageBox::NoIcon, "Stopped", "  \nVideo has reached the end       \n");
          messagewindow.exec();

          return;
        }
      }
    }

    mpr_write("get_time\n");

    video_process->waitForBytesWritten(1000);
  }

  if(!strncmp(buf, "( state stopped )", 17))
  {
    stop_video_generic();

    return;
  }

  video_poll_timer->start(video_player->poll_timer);
}