nds2-client - Administrator  0.16.0
 All Functions Typedefs Enumerations Enumerator Groups Pages
NDS2 Application Program Interface

This module defines the client interface to both versions of the Network Data Server (classic NDS and NDS2). It is based on the "daq_" function set originally defined by Alex Ivanov for the classic NDS. The C-functions provide a low level interface to the server. In general, these must be used to implement the client server protocol defined elsewhere, e.g. here. A new set of client functions maintain a list of channels to be requested, properly formats the NDS server commands and help retrieve the requested data.

The following code snippet demonstrates how to use the nds2 client:

 -- Initialize
 int rc = daq_startup();
 if (rc) {
     printf("global initialization failed\n");
     return 1;

 -- Connect to server
 const char* server = "ldas-pcdev1.ligo.caltech.edu";
 int           port = 31200;
 daq_t daqd;
 rc = daq_connect(&daqd, server, port, nds_v2);
 if (rc) {
     printf("Connection failed with error: %s\n", daq_strerror(rc));
     return 2;

 -- Specify channels
 const char* channel[4] = {

 int i;
 for (i=0; i<4; i++) {
     rc = daq_request_channel(&daqd, channel+i, 0, 0);

 --  Request data
 time_t start_gps = 876543210;
 time_t end_gps   = 876543366;
 time_t delta     = 32;
 rc = daq_request_data(&daqd, start_gps, end_gps, delta);
 if (rc) {
     printf("Data request failed with error: %s\n", daq_strerror(rc));
     return 3;

 --  Read data blocks
 time_t t;
 for (t=start_gps; t<end_gps; t+=delta) {
     rc = daq_recv_next(&daqd);
     if (rc) {
         printf("Receive data failed with error: %s\n", daq_strerror(rc));
         return 4;

     --  Get data
     chan_req_t* stat = daq_get_channel_status(&daqd, channel[1]);
     if (!stat || stat->status <= 0) break;


 --  Disconnect from server

The API is subdivided into the following modules: