mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-04-29 09:30:02 +02:00
* changed common.c readADCFromFile to make it more general and move temperature calculation for Eiger out of this function and inside whereever it is called. * g2 and m2: gethighvoltage was just a variable set in server, it is now moved to a get inside DAC5671 implementation (but not reading a measured value, instead what is set from a file), high voltage variable used inside DAC5671 for virtual servers * g2: switching off hv (ifrom non zero to zero value) will wait for 10s; powering on chip reconfigures chip; powering off chip unconfigures chip; powering off chip also includes check if hv = 0, if not throw exception; chip configuration checked before acquring; at start up: hv switched off and chip powered on, so does not wait 10s to switch off hv; * included test to check powering off chip when hv is on should throw an exception * g2: check if chip configured before acquiring * nios: read hv value set from file and virtual still goes into DAC5671 for conversions to and fro dac to V, change common readadc to readparameter to generalize, make sethighvoltage into a get and set to catch errors in get as well, g2: if not at startup, remmeber hv value before setting it and after check if value was being switched off (from a non zero value) and wait 10s if it was (10s wait only for switching off from non zero and not at startup)
72 lines
2.6 KiB
C
72 lines
2.6 KiB
C
// SPDX-License-Identifier: LGPL-3.0-or-other
|
|
// Copyright (C) 2021 Contributors to the SLS Detector Package
|
|
#pragma once
|
|
|
|
#include "sls/md5.h"
|
|
#include <stdint.h> // int64_t
|
|
#include <stdio.h>
|
|
#include <sys/types.h>
|
|
#include <time.h>
|
|
|
|
#define UPDATE_FILE "update.txt"
|
|
#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/*"
|
|
#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 };
|
|
|
|
/**
|
|
* Convert a value from a range to a different range (eg voltage to dac or vice
|
|
* versa)
|
|
* @param inputMin input minimum
|
|
* @param inputMax input maximum
|
|
* @param outputMin output minimum
|
|
* @param outputMax output maximum
|
|
* @param inputValue input value
|
|
* @param outputValue pointer to output value
|
|
* @returns FAIL if input value is out of bounds, else OK
|
|
*/
|
|
int ConvertToDifferentRange(int inputMin, int inputMax, int outputMin,
|
|
int outputMax, int inputValue, int *outputValue);
|
|
|
|
int getAbsPath(char *buf, size_t bufSize, char *fname);
|
|
|
|
int getTimeFromString(char *buf, time_t *result);
|
|
|
|
int getKernelVersion(char *retvals);
|
|
|
|
int validateKernelVersion(char *expectedVersion);
|
|
|
|
void validate(int *ret, char *mess, int arg, int retval, char *modename,
|
|
enum numberMode nummode);
|
|
void validate64(int *ret, char *mess, int64_t arg, int64_t retval,
|
|
char *modename, enum numberMode nummode);
|
|
|
|
int getModuleIdInFile(int *ret, char *mess, char *fileName);
|
|
int verifyChecksumFromBuffer(char *mess, char *functionType,
|
|
char *clientChecksum, char *buffer, ssize_t bytes);
|
|
int verifyChecksumFromFile(char *mess, char *functionType, char *clientChecksum,
|
|
char *fname);
|
|
int verifyChecksumFromFlash(char *mess, char *functionType,
|
|
char *clientChecksum, char *fname, ssize_t fsize);
|
|
int verifyChecksum(char *mess, char *functionType, char *clientChecksum,
|
|
MD5_CTX *c, char *msg);
|
|
int setupDetectorServer(char *mess, char *sname);
|
|
|
|
int writeBinaryFile(char *mess, char *fname, char *buffer,
|
|
const uint64_t filesize, char *errorPrefix);
|
|
|
|
int moveBinaryFile(char *mess, char *dest, char *src, char *errorPrefix);
|
|
|
|
int createEmptyFile(char *mess, char *fname, char *errorPrefix);
|
|
int deleteFile(char *mess, char *fname, char *errorPrefix);
|
|
|
|
int deleteOldServers(char *mess, char *newServerPath, char *errorPrefix);
|
|
|
|
int readParameterFromFile(char *fname, char *parameterName, int *value); |