mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-04-24 07:20:01 +02:00

* badchannels for m3 and modify for g2 (file from single and multi) * m3: invert polarity of bit 7 and 11 signals from setmodule, allow commas in bad channel file * badchannel file can take commas, colons and comments (also taking care of spaces at the end of channel numbers) * tests 'badchannels' and 'Channel file reading' added, removing duplicates in badchannel list, defining macro for num counters in client side * fix segfault when list from file is empty, * fix tests assertion for ctbconfig (adding message) for c++11 * fixed badchannels in m3server (clocking in trimming) * badchannel tests can be run from any folder (finds the file)
62 lines
1.6 KiB
C++
62 lines
1.6 KiB
C++
// SPDX-License-Identifier: LGPL-3.0-or-other
|
|
// Copyright (C) 2021 Contributors to the SLS Detector Package
|
|
#pragma once
|
|
|
|
#include "sls/sls_detector_defs.h"
|
|
|
|
#include <cstdio>
|
|
#include <fstream>
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
namespace sls {
|
|
|
|
/**
|
|
* @param data array of data values
|
|
* @param nch number of channels
|
|
* @param offset start channel value
|
|
*/
|
|
int readDataFile(std::ifstream &infile, short int *data, int nch,
|
|
int offset = 0);
|
|
|
|
/**
|
|
* @param data array of data value
|
|
* @param nch number of channels
|
|
*/
|
|
int readDataFile(std::string fname, short int *data, int nch);
|
|
|
|
std::vector<char> readBinaryFile(const std::string &fname,
|
|
const std::string &errorPrefix);
|
|
|
|
/**
|
|
* @param nch number of channels
|
|
* @param data array of data values
|
|
* @param offset start channel number
|
|
*/
|
|
int writeDataFile(std::ofstream &outfile, int nch, short int *data,
|
|
int offset = 0);
|
|
|
|
/**
|
|
* @param nch number of channels
|
|
* @param data array of data values
|
|
*/
|
|
int writeDataFile(std::string fname, int nch, short int *data);
|
|
|
|
// mkdir -p path implemented by recursive calls
|
|
void mkdir_p(const std::string &path, std::string dir = "");
|
|
|
|
int getFileSize(std::ifstream &ifs);
|
|
ssize_t getFileSize(FILE *fd, const std::string &prependErrorString);
|
|
|
|
std::string getFileNameFromFilePath(const std::string &fpath);
|
|
|
|
/** File can have # for comments.
|
|
* Channels can be separated by spaces, commas
|
|
* and ranges provided using ':', eg. 23:29
|
|
* */
|
|
std::vector<int> getChannelsFromFile(const std::string &fname);
|
|
|
|
std::string getAbsolutePathFromCurrentProcess(const std::string &fname);
|
|
|
|
} // namespace sls
|