int main(int argc, char *argv[]){ parce_args(argc, argv); tty_init(); signal(SIGTERM, quit); // kill (-15) signal(SIGINT, quit); // ctrl+C signal(SIGQUIT, SIG_IGN); // ctrl+\ . signal(SIGTSTP, SIG_IGN); // ctrl+Z setbuf(stdout, NULL); erase_ctrlr(); if(G.erasecmd) return 0; if(G.relaycmd == -1 && G.gotopos == NULL){ printf("No commands given!\n"); return -1; } if(G.relaycmd != -1){ int ans; if(G.relaycmd) // turn on ans = con_sig('R',0); else // turn off ans = con_sig('r',0); if(ans) wait_for_answer(); else return -1; } if(G.gotopos){ if(strcasecmp(G.gotopos, "refmir") == 0){ if(!con_sig('1',0)) return -1; printf("Go to last end-switch\n"); wait_for_answer(); if(!con_sig('-',500)) return -1; }else if(strcasecmp(G.gotopos, "diagmir") == 0){ if(!con_sig('0',0)) return -1; printf("Go to zero's end-switch\n"); wait_for_answer(); if(!con_sig('+',2500)) return -1; }else if(strcasecmp(G.gotopos, "shack") == 0){ if(!con_sig('1',0)) return -1; printf("Go to last end-switch\n"); wait_for_answer(); if(!con_sig('-',30000)) return -1; }else{ printf("Wrong goto command, should be one of refmir/diagmir/shack\n"); return -1; } printf("Go to position\n"); wait_for_answer(); } return 0; }
int main() { char cmd, data; char config[8]; // char state = 0; // State: 0=failure, 1=success int i; InitUart(); //Error: while(1) { if(!EmptyUart1()) { cmd = GetUart1(); switch(cmd) { // 'test' command case 't': if (start_test()) PutUart1('s'); else PutUart1('f'); break; // 'ready' inquiry case 'r': PutUart1('a'); // Acknowledge break; // 'memory' command case 'm': PutUart1('a'); // Acknowledge // flush_rx_buffer(); if(dump_memory()) PutUart1('s'); else PutUart1('f'); break; // 'configuration' command case 'c': #if REMOTE_CONFIG == 0 PutUart1('f'); #else PutUart1('a'); // Acknowledge for(i=0; i<8; i++) { if(!wait_for_answer(&data)) break; config[i] = data; } if(i<8) PutUart1('f'); else { INT_A_PERIOD = config[0]; INT_B_PERIOD = config[1]; INT_C_PERIOD = config[2]; INT_D_PERIOD = config[3]; BURST_WRITE = config[4]>0 ? 1 : 0; TIME_SCALER = config[5]>0 ? config[5] : 1; HOLD_TIME = config[6]; TEST_DURATION = config[7]; PutUart1('s'); } #endif break; default: break; } } } return( 0 ); }