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 = connect(&daqd, server, port, nds_v2);
     if (rc) {
         printf("Connection failed with error: %s\n", daq_str_error(rc));
	 return 2;
     }

     -- Specify channels
     --
     const char* channel[4] = {
         "H1:DMT-STRAIN", 
	 "L1:DMT-STRAIN", 
	 "V1:h16384Hz",
	 0
     }

     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_str_error(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_str_error(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
     --
     daq_disconnect(&daqd);
     

The API is subdivided into the following modules:


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