/mnt/qfs4/jzweizig/nds2_svn/trunk/client/src/client/daqc.h

00001 /* -*- mode: c; c-basic-offset: 4; -*- */
00002 /*
00003  *  Data acquisition daemon access
00004  */
00005 #ifndef DAQC_H
00006 #define DAQC_H
00007 
00008 #include "channel.h"
00009 #include <sys/types.h>
00010 #include <sys/socket.h>
00011 #include <netinet/in.h>
00012 #include <arpa/inet.h>
00013 #include <netdb.h>
00014 
00015 typedef          int  int4_type;
00016 typedef unsigned int uint4_type;
00017 
00018 
00019 #define DAQD_PROTOCOL_VERSION 11
00020 #define DAQD_PROTOCOL_REVISION 4
00021 
00022 #define DAQD_PORT 31200
00023 
00024 struct signal_conv1;
00025 struct daq_block_header;
00026 
00129 enum nds_version {
00130 
00132     nds_try = 0,
00133 
00135     nds_v1 = 1,
00136 
00138     nds_v2 = 2
00139 };
00140 
00141 /* pieces of the communication protocol */
00142 
00145 #define HEADER_LEN 16
00146 
00149 typedef struct daq_block_header daq_block_t;
00150 
00155 typedef struct {
00158     float signal_gain;
00159 
00162     float signal_slope;
00163 
00166     float signal_offset;
00167 
00170     char signal_units [MAX_CHANNEL_NAME_LENGTH]; /* Engineering units  */  
00171 } signal_conv_t;
00172 
00179 typedef struct {
00181     char*  name;
00182 
00184     enum chantype type;
00185 
00188     double rate;
00189 
00196     daq_data_t data_type;
00197 
00200     uint4_type offset;
00201 
00207     int    status;
00208 
00211     signal_conv_t s;
00212 
00213 } chan_req_t;
00214 
00215 
00220 typedef struct {
00224     enum nds_version nds_versn;
00225 
00230     int sockfd;
00231 
00234     struct sockaddr_in srvr_addr;
00235 
00238     int datafd;
00239 
00242     uint4_type num_chan_request;
00243 
00246     uint4_type num_chan_alloc;
00247 
00250     chan_req_t* chan_req_list;
00251 
00255     int blocks;
00256 
00260     daq_block_t *tb;
00261 
00264     size_t tb_size;
00265 
00269     struct signal_conv1 *s;
00270 
00274     int s_size;
00275 
00278     int rev;
00279 
00282     void* auth_ctx;
00283 
00286     int err_num;
00287 } daq_t;
00288 
00294 typedef struct {
00297     char name [MAX_LONG_CHANNEL_NAME_LENGTH + 1]; /* Channel name */
00298 
00302     double rate;
00303 
00306     int tpnum;
00307 
00313     enum chantype type;
00314 
00317     int bps;
00318 
00321     int chNum;
00322 
00325     daq_data_t data_type;
00326 
00329     signal_conv_t s;
00330 } daq_channel_t;
00331 
00339 int
00340 daq_clear_channel_list(daq_t* daq);
00341 
00355 int 
00356 daq_connect(daq_t* daq, const char* host, int port, enum nds_version version);
00357 
00364 int 
00365 daq_disconnect (daq_t* daq);
00366 
00379 const char*
00380 daq_get_channel_addr(daq_t *daq, const char* channel);
00381 
00392 char*
00393 daq_get_channel_data(daq_t *daq, const char* channel, char* data);
00394 
00401 int
00402 daq_get_data_length(daq_t *daq, const char* channel);
00403 
00410 chan_req_t*
00411 daq_get_channel_status(daq_t *daq, const char* channel);
00412 
00425 int
00426 daq_get_scaled_data(daq_t *daq, const char* channel, float* data);
00427 
00442 void
00443 daq_init_channel(daq_channel_t* chan, const char* name, enum chantype ctype,
00444                  double rate, daq_data_t dtype);
00445 
00451 int
00452 daq_recv_block_num (daq_t* daq);
00453 
00472 int 
00473 daq_recv_block (daq_t* daq);
00474 
00485 int
00486 daq_recv_next (daq_t* daq);
00487 
00494 int
00495 daq_recv_shutdown (daq_t* daq);
00496 
00510 int 
00511 daq_recv_channels (daq_t* daq, daq_channel_t* channel, int num_channels, 
00512                    int* num_channels_received);
00513 
00541 int 
00542 daq_recv_channel_list(daq_t* daq, daq_channel_t* channel, int num_channels, 
00543                    int* num_channels_received, time_t gps, enum chantype type);
00544 
00550 long 
00551 daq_recv_id (daq_t *daq);
00552 
00565 int 
00566 daq_recv_source_list(daq_t* daq, char* sources, size_t max_len, 
00567                      time_t gps, long* str_len);
00568 
00581 int
00582 daq_request_channel(daq_t* daq, const char* name, enum chantype type,
00583                     double rate);
00584 
00592 int
00593 daq_request_channel_from_chanlist(daq_t* daq, daq_channel_t* channel);
00594 
00610 int
00611 daq_request_data(daq_t* daq, time_t start, time_t end, time_t dt);
00612 
00620 int 
00621 daq_send (daq_t* daq, const char* command);
00622 
00627 int
00628 daq_startup(void);
00629 
00635 const char*
00636 daq_strerror(int errornum);
00637 
00645 #endif

Generated on Fri Jul 9 11:41:23 2010 for nds2-client by  doxygen 1.4.7