This commit is contained in:
Erik Frojdh
2019-05-28 15:43:20 +02:00
14 changed files with 815 additions and 565 deletions

View File

@ -10,8 +10,8 @@
class MySocketTCP;
class ServerInterface;
class slsReceiverImplementation;
#include "slsReceiverImplementation.h"
#include "ServerSocket.h"
/**
@ -113,7 +113,7 @@ class slsReceiverTCPIPInterface : private virtual slsDetectorDefs {
int function_table();
/** Decodes Function */
int decode_function();
int decode_function(sls::ServerInterface2 &socket);
/** function not implemented for specific detector */
void functionNotImplemented();
@ -126,208 +126,211 @@ class slsReceiverTCPIPInterface : private virtual slsDetectorDefs {
void validate(T arg, T retval, std::string modename, numberMode hex);
/** Unrecognized Function */
int M_nofunc();
int M_nofunc(sls::ServerInterface2 & socket);
/** Execute command */
int exec_command();
int exec_command(sls::ServerInterface2 &socket);
/** Exit Receiver Server */
int exit_server();
int exit_server(sls::ServerInterface2 &socket);
/** Locks Receiver */
int lock_receiver();
int lock_receiver(sls::ServerInterface2 &socket);
/** Get Last Client IP*/
int get_last_client_ip();
int get_last_client_ip(sls::ServerInterface2 &socket);
/** Set port */
int set_port();
int set_port(sls::ServerInterface2 &socket);
/** Updates Client if different clients connect */
int update_client();
int update_client(sls::ServerInterface2 &socket);
/** Sends the updated parameters to client */
int send_update();
int send_update(sls::ServerInterface2 &socket);
/** get version, calls get_version */
int get_id();
int get_id(sls::ServerInterface2 &socket);
/** Set detector type */
int set_detector_type();
int set_detector_type(sls::ServerInterface2 &socket);
/** set detector hostname */
int set_detector_hostname();
int set_detector_hostname(sls::ServerInterface2 &socket);
/** set roi */
int set_roi();
int set_roi(sls::ServerInterface2 &socket);
/** Set up UDP Details */
int setup_udp();
int setup_udp(sls::ServerInterface2 &socket);
/** set acquisition period, frame number etc */
int set_timer();
int set_timer(sls::ServerInterface2 &socket);
/** set dynamic range */
int set_dynamic_range();
int set_dynamic_range(sls::ServerInterface2 &socket);
/** Sets the receiver streaming frequency */
int set_streaming_frequency();
int set_streaming_frequency(sls::ServerInterface2 &socket);
/** Gets receiver status */
int get_status();
int get_status(sls::ServerInterface2 &socket);
/** Start Receiver - starts listening to udp packets from detector */
int start_receiver();
int start_receiver(sls::ServerInterface2 &socket);
/** Stop Receiver - stops listening to udp packets from detector*/
int stop_receiver();
int stop_receiver(sls::ServerInterface2 &socket);
/** Set File path */
int set_file_dir();
int set_file_dir(sls::ServerInterface2 &socket);
/** Set File name without frame index, file index and extension */
int set_file_name();
int set_file_name(sls::ServerInterface2 &socket);
/** Set File index */
int set_file_index();
int set_file_index(sls::ServerInterface2 &socket);
/** Gets frame index for each acquisition */
int get_frame_index();
int get_frame_index(sls::ServerInterface2 &socket);
/** Gets Total Frames Caught */
int get_frames_caught();
int get_frames_caught(sls::ServerInterface2 &socket);
/** Resets Total Frames Caught */
int reset_frames_caught();
int reset_frames_caught(sls::ServerInterface2 &socket);
/** Enable File Write*/
int enable_file_write();
int enable_file_write(sls::ServerInterface2 &socket);
/** Enable Master File Write */
int enable_master_file_write();
int enable_master_file_write(sls::ServerInterface2 &socket);
/** enable compression */
int enable_compression();
int enable_compression(sls::ServerInterface2 &socket);
/** enable overwrite */
int enable_overwrite();
int enable_overwrite(sls::ServerInterface2 &socket);
/** enable 10Gbe */
int enable_tengiga();
int enable_tengiga(sls::ServerInterface2 &socket);
/** set fifo depth */
int set_fifo_depth();
int set_fifo_depth(sls::ServerInterface2 &socket);
/** activate/ deactivate */
int set_activate();
int set_activate(sls::ServerInterface2 &socket);
/* Set the data stream enable */
int set_data_stream_enable();
int set_data_stream_enable(sls::ServerInterface2 &socket);
/** Sets the steadming timer when frequency is set to 0 */
int set_streaming_timer();
int set_streaming_timer(sls::ServerInterface2 &socket);
/** enable flipped data */
int set_flipped_data();
int set_flipped_data(sls::ServerInterface2 &socket);
/** set file format */
int set_file_format();
int set_file_format(sls::ServerInterface2 &socket);
/** set position id */
int set_detector_posid();
int set_detector_posid(sls::ServerInterface2 &socket);
/** set multi detector size */
int set_multi_detector_size();
int set_multi_detector_size(sls::ServerInterface2 &socket);
/** set streaming port */
int set_streaming_port();
int set_streaming_port(sls::ServerInterface2 &socket);
/** set streaming source ip */
int set_streaming_source_ip();
int set_streaming_source_ip(sls::ServerInterface2 &socket);
/** set silent mode */
int set_silent_mode();
int set_silent_mode(sls::ServerInterface2 &socket);
/** enable gap pixels */
int enable_gap_pixels();
int enable_gap_pixels(sls::ServerInterface2 &socket);
/** restream stop packet */
int restream_stop();
int restream_stop(sls::ServerInterface2 &socket);
/** set additional json header */
int set_additional_json_header();
int set_additional_json_header(sls::ServerInterface2 &socket);
/** get additional json header */
int get_additional_json_header();
int get_additional_json_header(sls::ServerInterface2 &socket);
/** set udp socket buffer size */
int set_udp_socket_buffer_size();
int set_udp_socket_buffer_size(sls::ServerInterface2 &socket);
/** get real udp socket buffer size */
int get_real_udp_socket_buffer_size();
int get_real_udp_socket_buffer_size(sls::ServerInterface2 &socket);
/** set frames per file */
int set_frames_per_file();
int set_frames_per_file(sls::ServerInterface2 &socket);
/** check version compatibility */
int check_version_compatibility();
int check_version_compatibility(sls::ServerInterface2 &socket);
/** set frame discard policy */
int set_discard_policy();
int set_discard_policy(sls::ServerInterface2 &socket);
/** set partial frame padding enable*/
int set_padding_enable();
int set_padding_enable(sls::ServerInterface2 &socket);
/** set deactivated receiver padding enable */
int set_deactivated_padding_enable();
int set_deactivated_padding_enable(sls::ServerInterface2 &socket);
/** set readout flags */
int set_readout_flags();
int set_readout_flags(sls::ServerInterface2 &socket);
/** set adc mask */
int set_adc_mask();
int set_adc_mask(sls::ServerInterface2 &socket);
/** set receiver dbit list */
int set_dbit_list();
int set_dbit_list(sls::ServerInterface2 &socket);
/** get receiver dbit list */
int get_dbit_list();
int get_dbit_list(sls::ServerInterface2 &socket);
/** set dbit offset */
int set_dbit_offset();
int set_dbit_offset(sls::ServerInterface2 &socket);
int LogSocketCrash();
void NullObjectError(int& ret, char* mess);
/** detector type */
detectorType myDetectorType;
/** slsReceiverBase object */
slsReceiverImplementation *receiver;
std::unique_ptr<slsReceiverImplementation> receiver{nullptr};
/** Function List */
int (slsReceiverTCPIPInterface::*flist[NUM_REC_FUNCTIONS])();
int (slsReceiverTCPIPInterface::*flist[NUM_REC_FUNCTIONS])(sls::ServerInterface2& socket);
/** Message */
char mess[MAX_STR_LENGTH];
char mess[MAX_STR_LENGTH]{};
/** success/failure */
int ret;
int ret{OK};
/** function index */
int fnum;
int fnum{-1};
/** Lock Status if server locked to a client */
int lockStatus;
int lockStatus{0};
/** kill tcp server thread */
int killTCPServerThread;
int killTCPServerThread{0};
/** thread for TCP server */
pthread_t TCPServer_thread;
/** tcp thread created flag*/
bool tcpThreadCreated;
bool tcpThreadCreated{false};
/** port number */
int portNumber;
@ -345,16 +348,16 @@ class slsReceiverTCPIPInterface : private virtual slsDetectorDefs {
* we write depending on file write enable
* users get data to write depending on call backs registered
*/
int (*startAcquisitionCallBack)(char*, char*, uint64_t, uint32_t, void*);
void *pStartAcquisition;
int (*startAcquisitionCallBack)(char*, char*, uint64_t, uint32_t, void*) = nullptr;
void *pStartAcquisition{nullptr};
/**
* Call back for acquisition finished
* callback argument is
* total frames caught
*/
void (*acquisitionFinishedCallBack)(uint64_t, void*);
void *pAcquisitionFinished;
void (*acquisitionFinishedCallBack)(uint64_t, void*) = nullptr;
void *pAcquisitionFinished{nullptr};
/**
@ -365,7 +368,7 @@ class slsReceiverTCPIPInterface : private virtual slsDetectorDefs {
* dataSize in bytes is the size of the data in bytes.
*/
void (*rawDataReadyCallBack)(char* ,
char*, uint32_t, void*);
char*, uint32_t, void*) = nullptr;
/**
* Call back for raw data (modified)
@ -375,17 +378,18 @@ class slsReceiverTCPIPInterface : private virtual slsDetectorDefs {
* 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* ,
char*, uint32_t &, void*);
char*, uint32_t &, void*) = nullptr;
void *pRawDataReady;
void *pRawDataReady{nullptr};
protected:
/** Socket */
MySocketTCP* mySock;
/** client interface */
ServerInterface* interface;
std::unique_ptr<sls::ServerSocket> server{nullptr};
private:
int VerifyLock(int &ret, char *mess);
int VerifyLockAndIdle(int &ret, char *mess, int fnum);
};

File diff suppressed because it is too large Load Diff