#ifdef NOVIDEO #ifdef HPUX #include #include void catch_alarm() {}; usleep(usec) unsigned long usec; { struct itimerval val, oval; signal(SIGALRM,catch_alarm); val.it_value.tv_sec = 0; val.it_value.tv_usec = usec; val.it_interval.tv_sec = 0; val.it_interval.tv_usec = 0; setitimer(ITIMER_REAL,&val,&oval); sigpause(0L); } #endif #ifdef SGI usleep(usec) unsigned long usec; { sginap(usec/10000); } #endif video_init() {} video_rec_short() {} video_rec_long() { usleep(500000); } video_close() {} #else #include #include "visca.h" #include "viscacode.h" #define TTYNAME "/dev/tty00" #define Address 1 extern int vs_error; extern unsigned char ViscaOn; static int ch, Initialized = 0; static v_error(str) char *str; { fprintf(stderr,"VISCA Error #%d in %s.\n", vs_error, str); visca_perror(); video_close(); ViscaOn = 0; } static v_com_error(repl,str) vs_msg *repl; char *str; { if (repl->format_type & 0xf0 == VS_ERROR) { fprintf(stderr,"VISCA Command error in %s. ", str); visca_com_perror(repl->body[0]); } } video_init() { vs_mid mid; vs_msg msg; if ((ch = visca_open(TTYNAME)) < 0) v_error("Open"); msg.format_type = VS_COMMAND1; msg.category = VS_MEDIA_DEVICE; msg.body[0] = MD_Mode1; msg.body[1] = M1RecPause; msg.body[2] = VS_TERM; if ((mid = visca_send_message(ch,Address,&msg,FALSE)) == NULL) v_error("RecPause"); else Initialized = 1; } video_rec_short() { video_rec_frame(1); } video_rec_long() { video_rec_frame(5); } video_rec_frame(n) int n; { int status; vs_mid mid; vs_msg msg, repl; visnet_reset_clock(ch); msg.format_type = VS_COMMAND2; msg.category = VS_MEDIA_DEVICE; bzero(msg.format_info,5); msg.format_info[2] = 1; msg.body[0] = MD_Mode1; msg.body[1] = M1Record; msg.body[2] = VS_TERM; if ((mid = visca_send_message(ch,Address,&msg,TRUE)) == NULL) v_error("Record"); status = visca_get_reply(&repl,mid,TRUE); if (status) v_error("Record start"); v_com_error(&repl,"Record start"); msg.format_info[2] = n + 1; msg.body[1] = M1RecPause; if ((mid = visca_send_message(ch,Address,&msg,TRUE)) == NULL) v_error("Pause"); status = visca_get_reply(&repl,mid,TRUE); if (status) v_error("Record pause"); v_com_error(&repl,"Record pause"); sleep(1); } video_close() { vs_mid mid; vs_msg msg; if (Initialized) { msg.format_type = VS_COMMAND1; msg.category = VS_MEDIA_DEVICE; msg.body[0] = MD_Mode1; msg.body[1] = M1Stop; msg.body[2] = VS_TERM; mid = visca_send_message(ch,Address,&msg,FALSE); visca_close(ch); } } #endif