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; }
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); }