-/*
- * Changes by Boris and Jan:
- *
- * 1. Original code is in a sub-routine called start()
- * 2. main() can enter a tcp loop (if called with attribute \"tcp\") or
- * just call start() (otherwise)
- *
- *
- */
-
#define _GNU_SOURCE
#include <stdio.h>
#include <stdlib.h>
static int hexMode = HEXMODE;
-static const char trbcmd_version[] = "$Revision: 2.55 $";
+static const char trbcmd_version[] = "$Revision: 2.56 $";
#define BACKLOG 10
static uint16_t tcp_port = 55555;
static void logError(int type, const char* format, ...)
{
char fmt[512] = "";
+ char msg[4096]= "";
+ char* msgEnd = NULL;
+ char* line = NULL;
va_list args;
va_start(args, format);
-
+
if (scriptFile != NULL) {
- snprintf(fmt, 512, "%s: Line #%d: %s",
- errTypeString[type], lineCtr, format);
+ snprintf(fmt, 512, "Line #%d: %s",
+ lineCtr, format);
} else {
- snprintf(fmt, 512, "%s: %s", errTypeString[type], format);
+ snprintf(fmt, 512, "%s", format);
}
-
- vfprintf(stderr, fmt, args);
+ vsnprintf(msg, 4096, fmt, args);
va_end(args);
+
+ msgEnd = msg + strlen(msg);
+ line = msg;
+ do {
+ char *p = strchr(line, '\n');
+ if (p == NULL) break;
+ *p = '\0';
+ fprintf(stderr, "%s: %s\n", errTypeString[type], line);
+ line = p + 1;
+ } while (line < msgEnd);
}
/* ------ MAIN ---------------------------------------------------------- */
} else {
if (trb_errno == TRB_STATUS_WARNING) {
logError(WARNING, "Status-Bit(s) have been set:\n%s\n",
- trb_strterm(trb_term));
+ trb_termstr(trb_term));
}
}
status = trb_register_read(trb_address, reg_address,
data, NUM_ENDPOINTS * 2);
if (status == -1) {
- logError(ERROR, "read_register failed %s\n",
- trb_strerror(trb_errno));
+ logError(ERROR, "read_register failed: %s\n", trb_strerror());
} else {
for (i = 0; i < status; i += 2) {
fprintf(stdout, "0x%04x 0x%08x\n", data[i], data[i + 1]);
/* Check Status-Bits */
if (trb_errno == TRB_STATUS_WARNING) {
logError(WARNING, "Status-Bit(s) have been set:\n%s\n",
- trb_strterm(trb_term));
+ trb_termstr(trb_term));
}
}
free(data);
size, data, USER_BUFFER_SIZE);
if (status == -1) {
logError(ERROR, "read_register_mem failed: %s\n",
- trb_strerror(trb_errno));
+ trb_strerror());
return -1;
} else {
/* Print data-buffer */
/* Check Status-Bits */
if (trb_errno == TRB_STATUS_WARNING) {
logError(WARNING, "Status-Bits are active:\n%s\n",
- trb_strterm(trb_term));
+ trb_termstr(trb_term));
}
}
free(data);
data, size);
if (status == -1) {
logError(ERROR, "write_register_memory failed: %s\n",
- trb_strerror(trb_errno));
+ trb_strerror());
return -1;
} else {
/* Check Status-Bits */
if (trb_errno == TRB_STATUS_WARNING) {
logError(WARNING, "Status-Bits are active:\n%s\n",
- trb_strterm(trb_term));
+ trb_termstr(trb_term));
}
}
status = trb_read_uid(trb_address, uidBuffer, NUM_ENDPOINTS * 4);
if (status == -1) {
logError(ERROR, "read_uid failed: %s\n",
- trb_strerror(trb_errno));
+ trb_strerror());
return -1;
} else {
for (i = 0;
/* Check Status-Bits */
if (trb_errno == TRB_STATUS_WARNING) {
logError(WARNING, "Status-Bits are active:\n%s\n",
- trb_strterm(trb_term));
+ trb_termstr(trb_term));
}
}
if (trb_set_address(uid, endpoint, trb_address) == -1) {
logError(ERROR, "set_address failed: %s\n",
- trb_strerror(trb_errno));
+ trb_strerror());
return -1;
} else {
/* Check Status-Bits */
if (trb_errno == TRB_STATUS_WARNING) {
logError(WARNING, "Status-Bits are active:\n%s\n",
- trb_strterm(trb_term));
+ trb_termstr(trb_term));
}
}
if (trb_send_trigger(type, info, random, number) == -1) {
logError(ERROR, "send_trigger failed: %s\n",
- trb_strerror(trb_errno));
+ trb_strerror());
return -1;
} else {
/* Check Status-Bits */
if (trb_errno == TRB_STATUS_WARNING) {
logError(WARNING, "Status-Bits are active:\n%s\n",
- trb_strterm(trb_term));
+ trb_termstr(trb_term));
}
}
if (com_reset() == -1) {
logError(ERROR, "Etrax RESET failed: %s\n",
- trb_strerror(trb_errno));
+ trb_strerror());
return -1;
}
if (trb_register_write(trb_address, 0x0020, 0x8000) == -1) {
logError(ERROR, "FPGA reload failed: %s\n",
- trb_strerror(trb_errno));
+ trb_strerror());
return -1;
} else {
/* Check Status-Bits */
if (trb_errno == TRB_STATUS_WARNING) {
logError(WARNING, "Status-Bits are active:\n%s\n",
- trb_strterm(trb_term));
+ trb_termstr(trb_term));
}
}
if (trb_send_trigger_rich(input, type, info, random, number) == -1) {
logError(ERROR, "send_trigger failed: %s\n",
- trb_strerror(trb_errno));
+ trb_strerror());
return -1;
} else {
/* Check Status-Bits */
if (trb_errno == TRB_STATUS_WARNING) {
logError(WARNING, "Status-Bits are active:\n%s\n",
- trb_strterm(trb_term));
+ trb_termstr(trb_term));
}
}
buffer, USER_BUFFER_SIZE);
if (status == -1) {
logError(ERROR, "read_ipu_data failed: %s\n",
- trb_strerror(trb_errno));
+ trb_strerror());
return -1;
} else {
for (i = 0; i < status; i++) {
/* Check Status-Bits */
if (trb_errno == TRB_STATUS_WARNING) {
logError(WARNING, "Status-Bits are active:\n%s\n",
- trb_strterm(trb_term));
+ trb_termstr(trb_term));
}
}
if (trb_fifo_flush(channel) == -1) {
logError(ERROR, "trb_fifo_flush failed: %s\n",
- trb_strerror(trb_errno));
+ trb_strerror());
return -1;
}
if (fpga_register_read(reg_address, &value) == -1) {
logError(ERROR, "fpga_register_read failed: %s\n",
- trb_strerror(trb_errno));
+ trb_strerror());
return -1;
} else {
fprintf(stdout, "0x%04x 0x%08x\n", reg_address, value);
1, bitMask, 0);
if (status == -1) {
logError(ERROR, "setbit of register failed: %s\n",
- trb_strerror(trb_errno));
+ trb_strerror());
return -1;
}
2, bitMask, 0);
if (status == -1) {
logError(ERROR, "clearbit of register failed: %s\n",
- trb_strerror(trb_errno));
+ trb_strerror());
return -1;
}
3, bitMask, bitValue);
if (status == -1) {
logError(ERROR, "loadbit of register failed: %s\n",
- trb_strerror(trb_errno));
+ trb_strerror());
return -1;
}
int yes = 1;
int daemonMode = 0;
int opt;
-
+
/* Parse Arguments */
optind = 1;
while ((opt = getopt(argc, argv, "+hdVbp:")) != -1) {