diff --git a/slsDetectorServers/slsDetectorServer/include/common.h b/slsDetectorServers/slsDetectorServer/include/common.h index 821e28040..77b567423 100644 --- a/slsDetectorServers/slsDetectorServer/include/common.h +++ b/slsDetectorServers/slsDetectorServer/include/common.h @@ -8,9 +8,14 @@ #include #include +#ifdef VIRTUAL +#define TEMP_PROG_FOLDER_NAME "/tmp/" +#else #define TEMP_PROG_FOLDER_NAME "/var/tmp/" #define TEMP_PROG_FOLDER_NAME_ALL_FILES "/var/tmp/*" -#define TEMP_PROG_FILE_NAME TEMP_PROG_FOLDER_NAME "tmp.rawbin" +#endif + +#define TEMP_PROG_FILE_NAME TEMP_PROG_FOLDER_NAME "tmp.rawbin" enum numberMode { DEC, HEX }; enum PROGRAM_INDEX { PROGRAM_FPGA, PROGRAM_KERNEL, PROGRAM_SERVER }; diff --git a/slsDetectorServers/slsDetectorServer/src/common.c b/slsDetectorServers/slsDetectorServer/src/common.c index 3723efc75..ac3be1db7 100644 --- a/slsDetectorServers/slsDetectorServer/src/common.c +++ b/slsDetectorServers/slsDetectorServer/src/common.c @@ -434,8 +434,13 @@ int setupDetectorServer(char *mess, char *sname) { LOG(logINFO, ("\tPermissions modified\n")); // symbolic link - if (snprintf(cmd, MAX_STR_LENGTH, "ln -sf %s %s", sname, - LINKED_SERVER_NAME) >= MAX_STR_LENGTH) { + char linkname[MAX_STR_LENGTH] = {0}; + strcpy(linkname, LINKED_SERVER_NAME); +#ifdef VIRTUAL + sprintf(linkname, "%s%s", TEMP_PROG_FOLDER_NAME, LINKED_SERVER_NAME); +#endif + if (snprintf(cmd, MAX_STR_LENGTH, "ln -sf %s %s", sname, linkname) >= + MAX_STR_LENGTH) { strcpy(mess, "Could not copy detector server. Command to " "create symbolic link too long\n"); LOG(logERROR, (mess)); @@ -451,6 +456,7 @@ int setupDetectorServer(char *mess, char *sname) { LOG(logINFO, ("\tSymbolic link created\n")); // blackfin boards (respawn) (only kept for backwards compatibility) +#ifndef VIRTUAL #if defined(JUNGFRAUD) || defined(CHIPTESTBOARDD) || defined(MOENCHD) || \ defined(GOTTHARDD) // delete every line with DetectorServer in /etc/inittab @@ -481,6 +487,7 @@ int setupDetectorServer(char *mess, char *sname) { } LOG(logINFO, ("\tinittab: updated for respawning\n")); +#endif #endif // sync @@ -567,6 +574,7 @@ int moveBinaryFile(char *mess, char *dest, char *src, char *errorPrefix) { LOG(logERROR, (mess)); return FAIL; } + if (executeCommand(cmd, retvals, logDEBUG1) == FAIL) { snprintf(mess, MAX_STR_LENGTH, "Could not %s. (moving). %s\n", errorPrefix, retvals); diff --git a/slsDetectorServers/slsDetectorServer/src/programViaBlackfin.c b/slsDetectorServers/slsDetectorServer/src/programViaBlackfin.c index 3e5d8538b..7e8aba0e2 100644 --- a/slsDetectorServers/slsDetectorServer/src/programViaBlackfin.c +++ b/slsDetectorServers/slsDetectorServer/src/programViaBlackfin.c @@ -219,6 +219,9 @@ int resetFPGA(char *mess) { } int emptyTempFolder(char *mess) { +#ifdef VIRTUAL + return OK; +#else char cmd[MAX_STR_LENGTH] = {0}; char retvals[MAX_STR_LENGTH] = {0}; @@ -240,6 +243,7 @@ int emptyTempFolder(char *mess) { } LOG(logINFO, ("\tEmptied temp folder(%s)\n", TEMP_PROG_FOLDER_NAME)); return OK; +#endif } int preparetoCopyProgram(char *mess, char *functionType, FILE **fd, diff --git a/slsDetectorServers/slsDetectorServer/src/slsDetectorServer_funcs.c b/slsDetectorServers/slsDetectorServer/src/slsDetectorServer_funcs.c index 734d31e1a..e11abdbd7 100644 --- a/slsDetectorServers/slsDetectorServer/src/slsDetectorServer_funcs.c +++ b/slsDetectorServers/slsDetectorServer/src/slsDetectorServer_funcs.c @@ -97,7 +97,7 @@ int updateModeAllowedFunction(int file_des) { F_UPDATE_KERNEL, F_UPDATE_DETECTOR_SERVER}; for (unsigned int i = 0; i < listsize; ++i) { - if (fnum == list[i]) { + if ((unsigned int)fnum == list[i]) { return OK; } } @@ -9312,6 +9312,14 @@ int receive_program(int file_des, enum PROGRAM_INDEX index) { if (index == PROGRAM_SERVER) { if (receiveData(file_des, serverName, MAX_STR_LENGTH, OTHER) < 0) return printSocketReadError(); +#ifdef VIRTUAL + // writing to a temp folder + { + char temp[MAX_STR_LENGTH] = {0}; + sprintf(temp, "%s%s", TEMP_PROG_FOLDER_NAME, serverName); + strcpy(serverName, temp); + } +#endif LOG(logINFO, ("\tServer Name: %s\n", serverName)); }