#include #include #include #include #include #include #include #include "umrbus.h" #include #include "boardaccess.h" #include "trap.h" #include "unistd.h" extern UMR_HANDLE addr_handle; extern UMR_HANDLE data1_handle; extern UMR_HANDLE data2_handle; extern UMR_HANDLE reset_handle; int reset_set = 0; int reset(int i) { char *errormessage; unsigned long reset_high=0x80000000; unsigned long reset_low=0x00000000; reset_set = i; if (i){ if(umrbus_write(reset_handle,&reset_high, 1, &errormessage)) { printf("write data error: %s \n", errormessage); umrbus_errormessage_free(&errormessage); goto exit; } } else{ if(umrbus_write(reset_handle,&reset_low, 1, &errormessage)) { printf("write data error: %s \n", errormessage); umrbus_errormessage_free(&errormessage); goto exit; } } exit: return 0; } int set_select_signals(){ char *errormessage; unsigned long reset_high=0x80000000; unsigned long reset_low=0x00000000; unsigned long signals_out; printf("Selectcode: ");scanf("%01lx", &signals_out); if (reset_set) signals_out=signals_out | reset_high; else signals_out=signals_out | reset_low; if(umrbus_write(reset_handle,&signals_out, 1, &errormessage)) { printf("write data error: %s \n", errormessage); umrbus_errormessage_free(&errormessage); return(0); } return(1); } int run() { unsigned long adr, tmpadr; unsigned long readbuffer[2]; unsigned long trap_id; int exit=0; reset(1); reset(0); do{ adr=0x200; tmpadr=adr >> 3; read_data(&tmpadr,readbuffer); if (readbuffer[0] == 0x1){ trap_id = readbuffer[1]; handle_trap(trap_id); exit= (trap_id == 0); } sleep(0.001); } while(!exit); return 0; }