clang format on receiver TCP and Implementation

This commit is contained in:
Erik Frojdh 2019-06-06 08:07:40 +02:00
parent 3d6404952a
commit 72e0d7e168
4 changed files with 3162 additions and 3107 deletions

File diff suppressed because it is too large Load Diff

View File

@ -1,85 +1,87 @@
#pragma once #pragma once
/********************************************//** /********************************************/ /**
* @file slsReceiverTCPIPInterface.h * @file
* @short interface between receiver and client *slsReceiverTCPIPInterface.h
***********************************************/ * @short interface between
*receiver and client
***********************************************/
#include "sls_detector_defs.h"
#include "receiver_defs.h" #include "receiver_defs.h"
#include "sls_detector_defs.h"
class MySocketTCP; class MySocketTCP;
class ServerInterface; class ServerInterface;
#include "slsReceiverImplementation.h"
#include "ServerSocket.h" #include "ServerSocket.h"
#include "slsReceiverImplementation.h"
/** /**
*@short interface between receiver and client *@short interface between receiver and client
*/ */
class slsReceiverTCPIPInterface : private virtual slsDetectorDefs { class slsReceiverTCPIPInterface : private virtual slsDetectorDefs {
private: private:
enum numberMode {DEC, HEX}; enum numberMode { DEC, HEX };
public: public:
/** Destructor */
virtual ~slsReceiverTCPIPInterface();
/** Destructor */ /**
virtual ~slsReceiverTCPIPInterface(); * Constructor
* reads config file, creates socket, assigns function table
* throws an exception in case of failure to construct
* @param pn port number (defaults to default port number)
*/
/** slsReceiverTCPIPInterface(int pn = -1);
* Constructor
* reads config file, creates socket, assigns function table
* throws an exception in case of failure to construct
* @param pn port number (defaults to default port number)
*/
slsReceiverTCPIPInterface(int pn=-1); /**
* Starts listening on the TCP port for client comminication
\returns OK or FAIL
*/
int start();
/** /** stop listening on the TCP & UDP port for client comminication */
* Starts listening on the TCP port for client comminication void stop();
\returns OK or FAIL
*/
int start();
/** stop listening on the TCP & UDP port for client comminication */ /** gets version */
void stop(); int64_t getReceiverVersion();
//***callback functions***
/**
* Call back for start acquisition
* callback arguments are
* filepath
* filename
* fileindex
* datasize
*
* return value is insignificant at the moment
* we write depending on file write enable
* users get data to write depending on call backs registered
*/
void registerCallBackStartAcquisition(int (*func)(char *, char *, uint64_t,
uint32_t, void *),
void *arg);
/** gets version */ /**
int64_t getReceiverVersion(); * Call back for acquisition finished
* callback argument is
* total frames caught
*/
void registerCallBackAcquisitionFinished(void (*func)(uint64_t, void *),
void *arg);
//***callback functions*** /**
/** * Call back for raw data
* Call back for start acquisition * args to raw data ready callback are
* callback arguments are * sls_receiver_header frame metadata
* filepath * dataPointer is the pointer to the data
* filename * dataSize in bytes is the size of the data in bytes.
* fileindex */
* datasize void registerCallBackRawDataReady(void (*func)(char *, char *, uint32_t,
* void *),
* return value is insignificant at the moment void *arg);
* we write depending on file write enable
* users get data to write depending on call backs registered
*/
void registerCallBackStartAcquisition(int (*func)(char*, char*, uint64_t, uint32_t, void*),void *arg);
/**
* Call back for acquisition finished
* callback argument is
* total frames caught
*/
void registerCallBackAcquisitionFinished(void (*func)(uint64_t, void*),void *arg);
/**
* Call back for raw data
* args to raw data ready callback are
* sls_receiver_header frame metadata
* dataPointer is the pointer to the data
* dataSize in bytes is the size of the data in bytes.
*/
void registerCallBackRawDataReady(void (*func)(char* ,
char*, uint32_t, void*),void *arg);
/** /**
* Call back for raw data (modified) * Call back for raw data (modified)
@ -87,169 +89,168 @@ class slsReceiverTCPIPInterface : private virtual slsDetectorDefs {
* sls_receiver_header frame metadata * sls_receiver_header frame metadata
* dataPointer is the pointer to the data * dataPointer is the pointer to the data
* revDatasize is the reference of data size in bytes. * revDatasize is the reference of data size in bytes.
* Can be modified to the new size to be written/streamed. (only smaller value). * Can be modified to the new size to be written/streamed. (only smaller
* value).
*/ */
void registerCallBackRawDataModifyReady(void (*func)(char* , void registerCallBackRawDataModifyReady(void (*func)(char *, char *,
char*, uint32_t &,void*),void *arg); uint32_t &, void *),
void *arg);
private:
/**
* Static function - Thread started which is a TCP server
* Called by start()
* @param this_pointer pointer to this object
*/
static void *startTCPServerThread(void *this_pointer);
private: /**
* Thread started which is a TCP server
* Called by start()
*/
void startTCPServer();
/** /** assigns functions to the fnum enum */
* Static function - Thread started which is a TCP server int function_table();
* Called by start()
* @param this_pointer pointer to this object
*/
static void* startTCPServerThread(void *this_pointer);
/** Decodes Function */
int decode_function(sls::ServerInterface2 &socket);
/** /** function not implemented for specific detector */
* Thread started which is a TCP server void functionNotImplemented();
* Called by start()
*/
void startTCPServer();
/** assigns functions to the fnum enum */ /** mode not implemented for specific detector */
int function_table(); void modeNotImplemented(std::string modename, int mode);
/** Decodes Function */ /** validate and set error */
int decode_function(sls::ServerInterface2 &socket); template <typename T>
void validate(T arg, T retval, std::string modename, numberMode hex);
/** function not implemented for specific detector */ /** Execute command */
void functionNotImplemented(); int exec_command(sls::ServerInterface2 &socket);
/** mode not implemented for specific detector */ /** Exit Receiver Server */
void modeNotImplemented(std::string modename, int mode); int exit_server(sls::ServerInterface2 &socket);
/** validate and set error */ /** Locks Receiver */
template <typename T> int lock_receiver(sls::ServerInterface2 &socket);
void validate(T arg, T retval, std::string modename, numberMode hex);
/** Execute command */ /** Get Last Client IP*/
int exec_command(sls::ServerInterface2 &socket); int get_last_client_ip(sls::ServerInterface2 &socket);
/** Exit Receiver Server */ /** Set port */
int exit_server(sls::ServerInterface2 &socket); int set_port(sls::ServerInterface2 &socket);
/** Locks Receiver */ /** Updates Client if different clients connect */
int lock_receiver(sls::ServerInterface2 &socket); int update_client(sls::ServerInterface2 &socket);
/** Get Last Client IP*/ /** Sends the updated parameters to client */
int get_last_client_ip(sls::ServerInterface2 &socket); int send_update(sls::ServerInterface2 &socket);
/** Set port */ /** get version, calls get_version */
int set_port(sls::ServerInterface2 &socket); int get_id(sls::ServerInterface2 &socket);
/** Updates Client if different clients connect */ /** Set detector type */
int update_client(sls::ServerInterface2 &socket); int set_detector_type(sls::ServerInterface2 &socket);
/** Sends the updated parameters to client */ /** set detector hostname */
int send_update(sls::ServerInterface2 &socket); int set_detector_hostname(sls::ServerInterface2 &socket);
/** get version, calls get_version */ /** set roi */
int get_id(sls::ServerInterface2 &socket); int set_roi(sls::ServerInterface2 &socket);
/** Set detector type */ /** Set up UDP Details */
int set_detector_type(sls::ServerInterface2 &socket); int setup_udp(sls::ServerInterface2 &socket);
/** set detector hostname */ /** set acquisition period, frame number etc */
int set_detector_hostname(sls::ServerInterface2 &socket); int set_timer(sls::ServerInterface2 &socket);
/** set roi */ /** set dynamic range */
int set_roi(sls::ServerInterface2 &socket); int set_dynamic_range(sls::ServerInterface2 &socket);
/** Set up UDP Details */ /** Sets the receiver streaming frequency */
int setup_udp(sls::ServerInterface2 &socket); int set_streaming_frequency(sls::ServerInterface2 &socket);
/** set acquisition period, frame number etc */ /** Gets receiver status */
int set_timer(sls::ServerInterface2 &socket); int get_status(sls::ServerInterface2 &socket);
/** set dynamic range */ /** Start Receiver - starts listening to udp packets from detector */
int set_dynamic_range(sls::ServerInterface2 &socket); int start_receiver(sls::ServerInterface2 &socket);
/** Sets the receiver streaming frequency */ /** Stop Receiver - stops listening to udp packets from detector*/
int set_streaming_frequency(sls::ServerInterface2 &socket); int stop_receiver(sls::ServerInterface2 &socket);
/** Gets receiver status */ /** Set File path */
int get_status(sls::ServerInterface2 &socket); int set_file_dir(sls::ServerInterface2 &socket);
/** Start Receiver - starts listening to udp packets from detector */ /** Set File name without frame index, file index and extension */
int start_receiver(sls::ServerInterface2 &socket); int set_file_name(sls::ServerInterface2 &socket);
/** Stop Receiver - stops listening to udp packets from detector*/ /** Set File index */
int stop_receiver(sls::ServerInterface2 &socket); int set_file_index(sls::ServerInterface2 &socket);
/** Set File path */ /** Gets frame index for each acquisition */
int set_file_dir(sls::ServerInterface2 &socket); int get_frame_index(sls::ServerInterface2 &socket);
/** Set File name without frame index, file index and extension */ /** Gets Total Frames Caught */
int set_file_name(sls::ServerInterface2 &socket); int get_frames_caught(sls::ServerInterface2 &socket);
/** Set File index */ /** Resets Total Frames Caught */
int set_file_index(sls::ServerInterface2 &socket); int reset_frames_caught(sls::ServerInterface2 &socket);
/** Gets frame index for each acquisition */ /** Enable File Write*/
int get_frame_index(sls::ServerInterface2 &socket); int enable_file_write(sls::ServerInterface2 &socket);
/** Gets Total Frames Caught */ /** Enable Master File Write */
int get_frames_caught(sls::ServerInterface2 &socket); int enable_master_file_write(sls::ServerInterface2 &socket);
/** Resets Total Frames Caught */ /** enable compression */
int reset_frames_caught(sls::ServerInterface2 &socket); int enable_compression(sls::ServerInterface2 &socket);
/** Enable File Write*/ /** enable overwrite */
int enable_file_write(sls::ServerInterface2 &socket); int enable_overwrite(sls::ServerInterface2 &socket);
/** Enable Master File Write */ /** enable 10Gbe */
int enable_master_file_write(sls::ServerInterface2 &socket); int enable_tengiga(sls::ServerInterface2 &socket);
/** enable compression */ /** set fifo depth */
int enable_compression(sls::ServerInterface2 &socket); int set_fifo_depth(sls::ServerInterface2 &socket);
/** enable overwrite */ /** activate/ deactivate */
int enable_overwrite(sls::ServerInterface2 &socket); int set_activate(sls::ServerInterface2 &socket);
/** enable 10Gbe */ /* Set the data stream enable */
int enable_tengiga(sls::ServerInterface2 &socket); int set_data_stream_enable(sls::ServerInterface2 &socket);
/** set fifo depth */ /** Sets the steadming timer when frequency is set to 0 */
int set_fifo_depth(sls::ServerInterface2 &socket); int set_streaming_timer(sls::ServerInterface2 &socket);
/** activate/ deactivate */ /** enable flipped data */
int set_activate(sls::ServerInterface2 &socket); int set_flipped_data(sls::ServerInterface2 &socket);
/* Set the data stream enable */ /** set file format */
int set_data_stream_enable(sls::ServerInterface2 &socket); int set_file_format(sls::ServerInterface2 &socket);
/** Sets the steadming timer when frequency is set to 0 */ /** set position id */
int set_streaming_timer(sls::ServerInterface2 &socket); int set_detector_posid(sls::ServerInterface2 &socket);
/** enable flipped data */ /** set multi detector size */
int set_flipped_data(sls::ServerInterface2 &socket); int set_multi_detector_size(sls::ServerInterface2 &socket);
/** set file format */ /** set streaming port */
int set_file_format(sls::ServerInterface2 &socket); int set_streaming_port(sls::ServerInterface2 &socket);
/** set position id */ /** set streaming source ip */
int set_detector_posid(sls::ServerInterface2 &socket); int set_streaming_source_ip(sls::ServerInterface2 &socket);
/** set multi detector size */ /** set silent mode */
int set_multi_detector_size(sls::ServerInterface2 &socket); int set_silent_mode(sls::ServerInterface2 &socket);
/** set streaming port */ /** enable gap pixels */
int set_streaming_port(sls::ServerInterface2 &socket); int enable_gap_pixels(sls::ServerInterface2 &socket);
/** set streaming source ip */ /** restream stop packet */
int set_streaming_source_ip(sls::ServerInterface2 &socket); int restream_stop(sls::ServerInterface2 &socket);
/** set silent mode */
int set_silent_mode(sls::ServerInterface2 &socket);
/** enable gap pixels */
int enable_gap_pixels(sls::ServerInterface2 &socket);
/** restream stop packet */
int restream_stop(sls::ServerInterface2 &socket);
/** set additional json header */ /** set additional json header */
int set_additional_json_header(sls::ServerInterface2 &socket); int set_additional_json_header(sls::ServerInterface2 &socket);
@ -281,114 +282,112 @@ class slsReceiverTCPIPInterface : private virtual slsDetectorDefs {
/** set readout flags */ /** set readout flags */
int set_readout_flags(sls::ServerInterface2 &socket); int set_readout_flags(sls::ServerInterface2 &socket);
/** set adc mask */ /** set adc mask */
int set_adc_mask(sls::ServerInterface2 &socket); int set_adc_mask(sls::ServerInterface2 &socket);
/** set receiver dbit list */ /** set receiver dbit list */
int set_dbit_list(sls::ServerInterface2 &socket); int set_dbit_list(sls::ServerInterface2 &socket);
/** get receiver dbit list */ /** get receiver dbit list */
int get_dbit_list(sls::ServerInterface2 &socket); int get_dbit_list(sls::ServerInterface2 &socket);
/** set dbit offset */ /** set dbit offset */
int set_dbit_offset(sls::ServerInterface2 &socket); int set_dbit_offset(sls::ServerInterface2 &socket);
/** detector type */ /** detector type */
detectorType myDetectorType; detectorType myDetectorType;
/** slsReceiverBase object */ /** slsReceiverBase object */
std::unique_ptr<slsReceiverImplementation> receiver{nullptr}; std::unique_ptr<slsReceiverImplementation> receiver{nullptr};
/** Function List */ /** Function List */
int (slsReceiverTCPIPInterface::*flist[NUM_REC_FUNCTIONS])(sls::ServerInterface2& socket); int (slsReceiverTCPIPInterface::*flist[NUM_REC_FUNCTIONS])(
sls::ServerInterface2 &socket);
/** Message */ /** Message */
char mess[MAX_STR_LENGTH]{}; char mess[MAX_STR_LENGTH]{};
/** success/failure */ /** success/failure */
int ret{OK}; int ret{OK};
/** function index */ /** function index */
int fnum{-1}; int fnum{-1};
/** Lock Status if server locked to a client */ /** Lock Status if server locked to a client */
int lockStatus{0}; int lockStatus{0};
/** kill tcp server thread */ /** kill tcp server thread */
int killTCPServerThread{0}; int killTCPServerThread{0};
/** thread for TCP server */ /** thread for TCP server */
pthread_t TCPServer_thread; pthread_t TCPServer_thread;
/** tcp thread created flag*/ /** tcp thread created flag*/
bool tcpThreadCreated{false}; bool tcpThreadCreated{false};
/** port number */ /** port number */
int portNumber; int portNumber;
//***callback parameters*** //***callback parameters***
/** /**
* Call back for start acquisition * Call back for start acquisition
* callback arguments are * callback arguments are
* filepath * filepath
* filename * filename
* fileindex * fileindex
* datasize * datasize
* *
* return value is insignificant at the moment * return value is insignificant at the moment
* we write depending on file write enable * we write depending on file write enable
* users get data to write depending on call backs registered * users get data to write depending on call backs registered
*/ */
int (*startAcquisitionCallBack)(char*, char*, uint64_t, uint32_t, void*) = nullptr; int (*startAcquisitionCallBack)(char *, char *, uint64_t, uint32_t,
void *pStartAcquisition{nullptr}; void *) = nullptr;
void *pStartAcquisition{nullptr};
/** /**
* Call back for acquisition finished * Call back for acquisition finished
* callback argument is * callback argument is
* total frames caught * total frames caught
*/ */
void (*acquisitionFinishedCallBack)(uint64_t, void*) = nullptr; void (*acquisitionFinishedCallBack)(uint64_t, void *) = nullptr;
void *pAcquisitionFinished{nullptr}; void *pAcquisitionFinished{nullptr};
/**
/** * Call back for raw data
* Call back for raw data * args to raw data ready callback are
* args to raw data ready callback are * sls_receiver_header frame metadata
* sls_receiver_header frame metadata * dataPointer is the pointer to the data
* dataPointer is the pointer to the data * dataSize in bytes is the size of the data in bytes.
* dataSize in bytes is the size of the data in bytes. */
*/ void (*rawDataReadyCallBack)(char *, char *, uint32_t, void *) = nullptr;
void (*rawDataReadyCallBack)(char* ,
char*, uint32_t, void*) = nullptr;
/** /**
* Call back for raw data (modified) * Call back for raw data (modified)
* args to raw data ready callback are * args to raw data ready callback are
* sls_receiver_header frame metadata * sls_receiver_header frame metadata
* dataPointer is the pointer to the data * dataPointer is the pointer to the data
* revDatasize is the reference of data size in bytes. Can be modified to the new size to be written/streamed. (only smaller value). * revDatasize is the reference of data size in bytes. Can be modified to
* the new size to be written/streamed. (only smaller value).
*/ */
void (*rawDataModifyReadyCallBack)(char* , void (*rawDataModifyReadyCallBack)(char *, char *, uint32_t &,
char*, uint32_t &, void*) = nullptr; void *) = nullptr;
void *pRawDataReady{nullptr}; void *pRawDataReady{nullptr};
protected:
std::unique_ptr<sls::ServerSocket> server{nullptr};
private:
void VerifyLock();
void VerifyIdle(sls::ServerInterface2 &socket);
protected: slsReceiverImplementation *impl() {
if (receiver != nullptr) {
return receiver.get();
std::unique_ptr<sls::ServerSocket> server{nullptr}; } else {
throw sls::SocketError(
private: "Receiver not set up. Please use rx_hostname first.\n");
void VerifyLock(); }
void VerifyIdle(sls::ServerInterface2& socket); }
slsReceiverImplementation* impl(){
if (receiver!=nullptr){
return receiver.get();
}else{
throw sls::SocketError("Receiver not set up. Please use rx_hostname first.\n");
}
}
}; };

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff