Initial commit based on common repo commit ffeb9c9b

This commit is contained in:
2021-04-22 15:57:00 +02:00
commit 8b2a408e6f
107 changed files with 61542 additions and 0 deletions

19
examples/CMakeLists.txt Normal file
View File

@ -0,0 +1,19 @@
SET(APP_NAME raw2caps)
SET(SOURCES
raw2caps.cpp
)
ADD_EXECUTABLE(${APP_NAME} ${SOURCES})
TARGET_LINK_LIBRARIES(${APP_NAME}
capsclient
mseed
${Boost_program_options_LIBRARY}
${Boost_filesystem_LIBRARY}
${Boost_system_LIBRARY}
${OPENSSL_LIBRARIES}
)
INSTALL(TARGETS ${APP_NAME} DESTINATION examples)
INSTALL(DIRECTORY python DESTINATION examples)

114
examples/python/raw2caps.py Normal file
View File

@ -0,0 +1,114 @@
############################################################################
# Copyright (C) 2021 gempa GmbH #
# #
# All Rights Reserved. #
# #
# NOTICE: All information contained herein is, and remains #
# the property of gempa GmbH and its suppliers, if any. The intellectual #
# and technical concepts contained herein are proprietary to gempa GmbH #
# and its suppliers. #
# Dissemination of this information or reproduction of this material #
# is strictly forbidden unless prior written permission is obtained #
# from gempa GmbH. #
############################################################################
#!/usr/bin/env python
from __future__ import absolute_import, division, print_function
import getopt
import sys
import signal
import numpy as np
from gempa import CAPS
usage_info = """
raw2caps - pushes raw samples into CAPS.
Usage: capstool [options]
Options:
-H, --host host to connect to
-h, --help display this help message and exit
"""
def usage(exitcode=0):
sys.stderr.write(usage_info)
return exitcode
output = CAPS.Plugin("raw2caps")
def signal_handler(sig, frame): #pylint: disable=W0613
print('Caught Ctrl+C!')
output.quit()
sys.exit(0)
def main():
try:
opts, _ = getopt.getopt(sys.argv[1:], "hH:d:n:",
["help", "host=", "directory=", "network="])
except getopt.GetoptError as err:
# print help information and exit:
print(str(err)) # will print something like "option -a not recognized"
return usage(2)
addr = None
signal.signal(signal.SIGINT, signal_handler)
for o, a in opts:
if o in ["-h", "--help"]:
return usage()
if o in ["-H", "--host"]:
addr = a
else:
assert False, "unhandled option"
if addr:
try:
host, port = addr.split(":")
except BaseException:
sys.stderr.write("invalid host address given: %s\n" % addr)
return 1
else:
host = None
port = None
if port:
try:
port = int(port)
except BaseException:
sys.stderr.write("invalid port given: %s\n" % port)
return 1
else:
port = 18003
if not host:
host = "localhost"
output.setHost(host)
output.setPort(port)
output.setBufferSize(1 << 30)
output.enableLogging()
startTime = CAPS.Time.GMT()
x = np.array([1, 2], dtype=np.int32)
res = output.push("AB", "HMA", "", "BHZ", startTime, 1, 1, "m", x,
CAPS.DT_INT32)
if res != CAPS.Plugin.Success:
sys.stderr.write("failed to send packet\n")
output.close()
return 0
if __name__ == "__main__":
sys.exit(main())

112
examples/raw2caps.cpp Normal file
View File

@ -0,0 +1,112 @@
/***************************************************************************
* Copyright (C) 2021 gempa GmbH *
* *
* All Rights Reserved. *
* *
* NOTICE: All information contained herein is, and remains *
* the property of gempa GmbH and its suppliers, if any. The intellectual *
* and technical concepts contained herein are proprietary to gempa GmbH *
* and its suppliers. *
* Dissemination of this information or reproduction of this material *
* is strictly forbidden unless prior written permission is obtained *
* from gempa GmbH. *
***************************************************************************/
#include <iostream>
#include <string>
#include <gempa/caps/log.h>
#include <gempa/caps/plugin.h>
#include <gempa/caps/mseed/steim2.h>
#include <gempa/caps/utils.h>
using namespace std;
using namespace Gempa::CAPS;
namespace {
#define LOG_CHANNEL(out, fmt) \
va_list ap;\
va_start(ap, fmt);\
fprintf(stderr, #out" "); vfprintf(stderr, fmt, ap); fprintf(stderr, "\n");\
va_end(ap)
void LogError(const char *fmt, ...) {
LOG_CHANNEL(ERROR, fmt);
}
void LogWarning(const char *fmt, ...) {
LOG_CHANNEL(WARNING, fmt);
}
void LogNotice(const char *fmt, ...) {
LOG_CHANNEL(NOTICE, fmt);
}
void LogInfo(const char *fmt, ...) {
LOG_CHANNEL(INFO, fmt);
}
void LogDebug(const char *fmt, ...) {
LOG_CHANNEL(DEBUG, fmt);
}
}
int main(int argc, char **argv) {
if ( argc != 1 ) {
cerr << "Pushes samples to CAPS" << endl << endl;
cerr << "Usage: raw2caps" << endl;
return 1;
}
// Setup log handlers
int verbosity = 2;
switch ( verbosity ) {
case 4: Gempa::CAPS::SetLogHandler(LL_DEBUG, LogDebug);
case 3: Gempa::CAPS::SetLogHandler(LL_INFO, LogInfo);
case 2: Gempa::CAPS::SetLogHandler(LL_WARNING, LogWarning);
case 1: Gempa::CAPS::SetLogHandler(LL_ERROR, LogError);
default: Gempa::CAPS::SetLogHandler(LL_NOTICE, LogNotice);
}
Plugin plugin("raw2caps");
plugin.setHost("localhost");
plugin.setPort(18003);
// Enable on-the-fly MSEED Encoding
// Steim2EncoderFactory *factory = new Steim2EncoderFactory();
// plugin.setEncoderFactory(factory);
string networkCode = "AB";
string stationCode = "TEST";
string locationCode = "";
string channelCode = "HHZ";
uint16_t numerator = 100;
uint16_t denominator = 1;
Time startTime = Time::FromString("2021-01-01 00:00:00", "%F %T");
int timingQuality = 100;
string uom = "m";
vector<int> samples;
for ( int i = 0; i < 100; ++i ) {
samples.push_back(i);
}
Plugin::Status ret =
plugin.push(networkCode, stationCode, locationCode, channelCode, startTime,
numerator, denominator, uom, samples.data(), samples.size(),
DT_INT32, timingQuality);
if ( ret != Plugin::Success ) {
cerr << "Failed to send packet to CAPS" << endl;
return 1;
}
return 0;
}