/***************************************************************************** * slink.h * * SeedLink protocol constants * * Token from libslink * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2, or (at your option) any later * version. For more information, see http://www.gnu.org/ * * ================ * Change log * =============== * * 01.01.2013 Adapted code to CAPS client library requirements (gempa GmbH) *****************************************************************************/ #ifndef CAPS_MSEED_SLINK_H #define CAPS_MSEED_SLINK_H #ifdef __cplusplus extern "C" { #endif /* Portability to the XScale (ARM) architecture * requires a packed attribute in certain places * but this only works with GCC for now. */ #if defined (__GNUC__) #define SLP_PACKED __attribute__ ((packed)) #else #define SLP_PACKED #endif #define SIGNATURE "SL" /* SeedLink header signature */ #define INFOSIGNATURE "SLINFO" /* SeedLink INFO packet signature */ /* SeedLink packet types */ #define SLDATA 0 /* waveform data record */ #define SLDET 1 /* detection record */ #define SLCAL 2 /* calibration record */ #define SLTIM 3 /* timing record */ #define SLMSG 4 /* message record */ #define SLBLK 5 /* general record */ #define SLNUM 6 /* used as the error indicator (same as SLCHA) */ #define SLCHA 6 /* for requesting channel info or detectors */ #define SLINF 7 /* a non-terminating XML formatted message in a miniSEED log record, used for INFO responses */ #define SLINFT 8 /* a terminating XML formatted message in a miniSEED log record, used for INFO responses */ #define SLKEEP 9 /* an XML formatted message in a miniSEED log record, used for keepalive/heartbeat responses */ /* SEED binary time (10 bytes) */ struct sl_btime_s { uint16_t year; uint16_t day; uint8_t hour; uint8_t min; uint8_t sec; uint8_t unused; uint16_t fract; } SLP_PACKED; /* Fixed section data of header (48 bytes) */ struct sl_fsdh_s { char sequence_number[6]; char dhq_indicator; char reserved; char station[5]; char location[2]; char channel[3]; char network[2]; struct sl_btime_s start_time; uint16_t num_samples; int16_t samprate_fact; int16_t samprate_mult; uint8_t act_flags; uint8_t io_flags; uint8_t dq_flags; uint8_t num_blockettes; int32_t time_correct; uint16_t begin_data; uint16_t begin_blockette; } SLP_PACKED; /* 1000 Blockette (8 bytes) */ struct sl_blkt_1000_s { uint16_t blkt_type; uint16_t next_blkt; uint8_t encoding; uint8_t word_swap; uint8_t rec_len; uint8_t reserved; } SLP_PACKED; /* 1001 Blockette (8 bytes) */ struct sl_blkt_1001_s { uint16_t blkt_type; uint16_t next_blkt; int8_t timing_qual; int8_t usec; uint8_t reserved; int8_t frame_cnt; } SLP_PACKED; /* Generic struct for head of blockettes */ struct sl_blkt_head_s { uint16_t blkt_type; uint16_t next_blkt; } SLP_PACKED; #ifdef __cplusplus } #endif #endif