From cd44f5f7d5ff6e0a90456e18a1b1b12623526c8c Mon Sep 17 00:00:00 2001 From: hadaq Date: Fri, 12 Jun 2009 17:59:07 +0000 Subject: [PATCH] TRB_ENDPOINT_NOT_REACHED will not be treated as fatal error any more . --- libtrbnet/trbcmd.c | 55 +++++++++++++++++++++++++++++++--------------- libtrbnet/trbnet.c | 5 ++++- 2 files changed, 41 insertions(+), 19 deletions(-) diff --git a/libtrbnet/trbcmd.c b/libtrbnet/trbcmd.c index a188844..a385527 100644 --- a/libtrbnet/trbcmd.c +++ b/libtrbnet/trbcmd.c @@ -223,7 +223,9 @@ int main(int argc, char ** argv) fprintf(stderr, "Line #%d: ", lineCtr); } trb_error("write_register failed"); - exit(EXIT_FAILURE); + if (trb_errno != TRB_ENDPOINT_NOT_REACHED) { + exit(EXIT_FAILURE); + } } } else if (strncmp(cmd[0], "r", CMD_SIZE) == 0) { @@ -260,9 +262,11 @@ int main(int argc, char ** argv) fprintf(stderr, "Line #%d: ", lineCtr); } trb_error("read_register failed"); - exit(EXIT_FAILURE); + if (trb_errno != TRB_ENDPOINT_NOT_REACHED) { + exit(EXIT_FAILURE); + } } - + for (i = 0; i < status; i += 2) { fprintf(stdout, "0x%04x 0x%08x\n", data[i], data[i + 1]); @@ -318,7 +322,9 @@ int main(int argc, char ** argv) } trb_error("read_register_mem failed"); if (data != NULL) free(data); - exit(EXIT_FAILURE); + if (trb_errno != TRB_ENDPOINT_NOT_REACHED) { + exit(EXIT_FAILURE); + } } /* Print data-buffer */ @@ -407,7 +413,9 @@ int main(int argc, char ** argv) fprintf(stderr, "Line #%d: ", lineCtr); } trb_error("write_register-memory failed"); - exit(EXIT_FAILURE); + if (trb_errno != TRB_ENDPOINT_NOT_REACHED) { + exit(EXIT_FAILURE); + } } } else if (strncmp(cmd[0], "i", CMD_SIZE) == 0) { @@ -442,8 +450,9 @@ int main(int argc, char ** argv) fprintf(stderr, "Line #%d: ", lineCtr); } trb_error("read_uid failed"); - continue; - exit(EXIT_FAILURE); + if (trb_errno != TRB_ENDPOINT_NOT_REACHED) { + exit(EXIT_FAILURE); + } } for (i = 0; (i < size) && (i < 128); i += 4) { @@ -491,7 +500,9 @@ int main(int argc, char ** argv) fprintf(stderr, "Line #%d: ", lineCtr); } trb_error("set_address failed"); - exit(EXIT_FAILURE); + if (trb_errno != TRB_ENDPOINT_NOT_REACHED) { + exit(EXIT_FAILURE); + } } } else if (strncmp(cmd[0], "T", CMD_SIZE) == 0) { @@ -534,7 +545,9 @@ int main(int argc, char ** argv) fprintf(stderr, "Line #%d: ", lineCtr); } trb_error("send_trigger failed"); - exit(EXIT_FAILURE); + if (trb_errno != TRB_ENDPOINT_NOT_REACHED) { + exit(EXIT_FAILURE); + } } } else if (strncmp(cmd[0], "TR", CMD_SIZE) == 0) { @@ -580,7 +593,9 @@ int main(int argc, char ** argv) fprintf(stderr, "Line #%d: ", lineCtr); } trb_error("send_trigger failed"); - exit(EXIT_FAILURE); + if (trb_errno != TRB_ENDPOINT_NOT_REACHED) { + exit(EXIT_FAILURE); + } } } else if (strncmp(cmd[0], "I", CMD_SIZE) == 0) { @@ -625,7 +640,9 @@ int main(int argc, char ** argv) fprintf(stderr, "Line #%d: ", lineCtr); } trb_error("read_ipu_data failed"); - exit(EXIT_FAILURE); + if (trb_errno != TRB_ENDPOINT_NOT_REACHED) { + exit(EXIT_FAILURE); + } } for (i = 0; i < size; i++) { @@ -660,7 +677,9 @@ int main(int argc, char ** argv) fprintf(stderr, "Line #%d: ", lineCtr); } trb_error("flush_channel failed"); - exit(EXIT_FAILURE); + if (trb_errno != TRB_ENDPOINT_NOT_REACHED) { + exit(EXIT_FAILURE); + } } } else if (strncmp(cmd[0], "R", CMD_SIZE) == 0) { @@ -688,7 +707,7 @@ int main(int argc, char ** argv) "reg_address: 0x%04x\n", reg_address); } - + read32_from_FPGA(reg_address, &value); fprintf(stdout, "0x%04x 0x%08x\n", reg_address, value); @@ -723,11 +742,11 @@ int main(int argc, char ** argv) write32_to_FPGA(reg_address, value); } else { - if (scriptFile != NULL) { - fprintf(stderr, "Line #%d: Invalid command\n", lineCtr); - } else { - usage(basename(argv[0])); - } + if (scriptFile != NULL) { + fprintf(stderr, "Line #%d: Invalid command\n", lineCtr); + } else { + usage(basename(argv[0])); + } exit(EXIT_FAILURE); } diff --git a/libtrbnet/trbnet.c b/libtrbnet/trbnet.c index 6b7575d..0f9f203 100644 --- a/libtrbnet/trbnet.c +++ b/libtrbnet/trbnet.c @@ -714,7 +714,10 @@ static int trb_fifo_read(uint8_t channel, ((uint64_t)channel << 32) | ((uint64_t)package.F1 << 16) | ((uint64_t)package.F2 << 0); - trb_errno = TRB_TERM_ERRBIT; + trb_errno = ((package.F2 == 0x0000) && (package.F1 == 0x0000)) + ? TRB_ENDPOINT_NOT_REACHED + : TRB_TERM_ERRBIT; + return -1; } } -- 2.43.0