Deployed d4e9b63 with MkDocs version: 1.6.1

This commit is contained in:
2025-06-11 08:24:09 +00:00
commit a387bfa03b
356 changed files with 51035 additions and 0 deletions

0
.nojekyll Normal file
View file

238
404.html Normal file
View file

@ -0,0 +1,238 @@
<!DOCTYPE html>
<html lang="en" data-bs-theme="light">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="author" content="Bastian Schroll & BW3 Dev team">
<link rel="shortcut icon" href="/img/favicon.ico">
<title>BOSWatch3 Core</title>
<link href="/css/bootstrap.min.css" rel="stylesheet">
<link href="/css/fontawesome.min.css" rel="stylesheet">
<link href="/css/brands.min.css" rel="stylesheet">
<link href="/css/solid.min.css" rel="stylesheet">
<link href="/css/v4-font-face.min.css" rel="stylesheet">
<link href="/css/base.css" rel="stylesheet">
<link id="hljs-light" rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" >
<link id="hljs-dark" rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github-dark.min.css" disabled>
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script>
<script>hljs.highlightAll();</script>
</head>
<body>
<div class="navbar fixed-top navbar-expand-lg navbar-dark bg-primary">
<div class="container">
<a class="navbar-brand" href="/.">BOSWatch3 Core</a>
<!-- Expander button -->
<button type="button" class="navbar-toggler" data-bs-toggle="collapse" data-bs-target="#navbar-collapse" aria-controls="navbar-collapse" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<!-- Expanded navigation -->
<div id="navbar-collapse" class="navbar-collapse collapse">
<!-- Main navigation -->
<ul class="nav navbar-nav">
<li class="nav-item dropdown">
<a href="#" class="nav-link dropdown-toggle" role="button" data-bs-toggle="dropdown" aria-expanded="false">Quick Start</a>
<ul class="dropdown-menu">
<li>
<a href="/tbd.html" class="dropdown-item">Installation</a>
</li>
<li>
<a href="/config.html" class="dropdown-item">Konfiguration</a>
</li>
</ul>
</li>
<li class="nav-item dropdown">
<a href="#" class="nav-link dropdown-toggle" role="button" data-bs-toggle="dropdown" aria-expanded="false">Informationen</a>
<ul class="dropdown-menu">
<li>
<a href="/information/serverclient.html" class="dropdown-item">Server/Cient Prinzip</a>
</li>
<li>
<a href="/information/broadcast.html" class="dropdown-item">Broadcast Service</a>
</li>
<li>
<a href="/information/router.html" class="dropdown-item">Routing Mechanismus</a>
</li>
<li>
<a href="/changelog.html" class="dropdown-item">Changelog</a>
</li>
</ul>
</li>
<li class="nav-item dropdown">
<a href="#" class="nav-link dropdown-toggle" role="button" data-bs-toggle="dropdown" aria-expanded="false">Module</a>
<ul class="dropdown-menu">
<li>
<a href="/modul/descriptor.html" class="dropdown-item">Descriptor</a>
</li>
<li>
<a href="/modul/geocoding.html" class="dropdown-item">Geocoding</a>
</li>
<li>
<a href="/modul/mode_filter.html" class="dropdown-item">Mode Filter</a>
</li>
<li>
<a href="/modul/regex_filter.html" class="dropdown-item">Regex Filter</a>
</li>
<li>
<a href="/modul/double_filter.html" class="dropdown-item">Double Filter</a>
</li>
</ul>
</li>
<li class="nav-item dropdown">
<a href="#" class="nav-link dropdown-toggle" role="button" data-bs-toggle="dropdown" aria-expanded="false">Plugins</a>
<ul class="dropdown-menu">
<li>
<a href="/plugin/http.html" class="dropdown-item">Http</a>
</li>
<li>
<a href="/plugin/telegram.html" class="dropdown-item">Telegram</a>
</li>
<li>
<a href="/plugin/divera.html" class="dropdown-item">Divera</a>
</li>
<li>
<a href="/plugin/mysql.html" class="dropdown-item">MySQL</a>
</li>
</ul>
</li>
<li class="nav-item dropdown">
<a href="#" class="nav-link dropdown-toggle" role="button" data-bs-toggle="dropdown" aria-expanded="false">Entwickler</a>
<ul class="dropdown-menu">
<li>
<a href="/develop/ModulPlugin.html" class="dropdown-item">Eigenes Modul/Plugin schreiben</a>
</li>
<li>
<a href="/develop/packet.html" class="dropdown-item">BOSWatch Alarmpaket Format</a>
</li>
<li>
<a href="/api/html/index.html" class="dropdown-item">BW3 Quellcode Dokumentation</a>
</li>
</ul>
</li>
</ul>
<ul class="nav navbar-nav ms-md-auto">
<li class="nav-item">
<a href="#" class="nav-link" data-bs-toggle="modal" data-bs-target="#mkdocs_search_modal">
<i class="fa fa-search"></i> Search
</a>
</li>
<li class="nav-item">
<a href="https://github.com/BOSWatch/BW3-Core" class="nav-link"><i class="fa-brands fa-github"></i> GitHub</a>
</li>
</ul>
</div>
</div>
</div>
<div class="container">
<div class="row">
<div class="row-fluid">
<div id="main-content" class="span12">
<h1 id="404-page-not-found" style="text-align: center">404</h1>
<p style="text-align: center"><strong>Page not found</strong></p>
</div>
</div>
</div>
</div>
<footer class="col-md-12">
<hr>
<p>Documentation built with <a href="https://www.mkdocs.org/">MkDocs</a>.</p>
</footer>
<script src="/js/bootstrap.bundle.min.js"></script>
<script>
var base_url = "/",
shortcuts = {"help": 191, "next": 78, "previous": 80, "search": 83};
</script>
<script src="/js/base.js"></script>
<script src="/search/main.js"></script>
<div class="modal" id="mkdocs_search_modal" tabindex="-1" role="dialog" aria-labelledby="searchModalLabel" aria-hidden="true">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title" id="searchModalLabel">Search</h4>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<p>From here you can search these documents. Enter your search terms below.</p>
<form>
<div class="form-group">
<input type="search" class="form-control" placeholder="Search..." id="mkdocs-search-query" title="Type search term here">
</div>
</form>
<div id="mkdocs-search-results" data-no-results-text="No results found"></div>
</div>
<div class="modal-footer">
</div>
</div>
</div>
</div><div class="modal" id="mkdocs_keyboard_modal" tabindex="-1" role="dialog" aria-labelledby="keyboardModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title" id="keyboardModalLabel">Keyboard Shortcuts</h4>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<table class="table">
<thead>
<tr>
<th style="width: 20%;">Keys</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<tr>
<td class="help shortcut"><kbd>?</kbd></td>
<td>Open this help</td>
</tr>
<tr>
<td class="next shortcut"><kbd>n</kbd></td>
<td>Next page</td>
</tr>
<tr>
<td class="prev shortcut"><kbd>p</kbd></td>
<td>Previous page</td>
</tr>
<tr>
<td class="search shortcut"><kbd>s</kbd></td>
<td>Search</td>
</tr>
</tbody>
</table>
</div>
<div class="modal-footer">
</div>
</div>
</div>
</div>
</body>
</html>

198
api/html/annotated.html Normal file
View file

@ -0,0 +1,198 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.12.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>BOSWatch 3: Data Structures</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">BOSWatch 3
</div>
<div id="projectbrief">Python Script to receive and decode German BOS Information with rtl_fm and multimon-NG</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.12.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('annotated.html',''); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="headertitle"><div class="title">Data Structures</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock">Here are the data structures with brief descriptions:</div><div class="directory">
<div class="levels">[detail level <span onclick="javascript:dynsection.toggleLevel(1);">1</span><span onclick="javascript:dynsection.toggleLevel(2);">2</span><span onclick="javascript:dynsection.toggleLevel(3);">3</span><span onclick="javascript:dynsection.toggleLevel(4);">4</span>]</div><table class="directory">
<tr id="row_0_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_0_" class="arrow" onclick="dynsection.toggleFolder('0_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceboswatch.html" target="_self">boswatch</a></td><td class="desc"></td></tr>
<tr id="row_0_0_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_0_0_" class="arrow" onclick="dynsection.toggleFolder('0_0_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceboswatch_1_1config_yaml.html" target="_self">configYaml</a></td><td class="desc"></td></tr>
<tr id="row_0_0_0_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classboswatch_1_1config_yaml_1_1_config_y_a_m_l.html" target="_self">ConfigYAML</a></td><td class="desc"></td></tr>
<tr id="row_0_1_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_0_1_" class="arrow" onclick="dynsection.toggleFolder('0_1_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceboswatch_1_1decoder.html" target="_self">decoder</a></td><td class="desc"></td></tr>
<tr id="row_0_1_0_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_0_1_0_" class="arrow" onclick="dynsection.toggleFolder('0_1_0_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceboswatch_1_1decoder_1_1decoder.html" target="_self">decoder</a></td><td class="desc"></td></tr>
<tr id="row_0_1_0_0_" class="odd"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classboswatch_1_1decoder_1_1decoder_1_1_decoder.html" target="_self">Decoder</a></td><td class="desc"></td></tr>
<tr id="row_0_1_1_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_0_1_1_" class="arrow" onclick="dynsection.toggleFolder('0_1_1_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceboswatch_1_1decoder_1_1fms_decoder.html" target="_self">fmsDecoder</a></td><td class="desc"></td></tr>
<tr id="row_0_1_1_0_" class="odd"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classboswatch_1_1decoder_1_1fms_decoder_1_1_fms_decoder.html" target="_self">FmsDecoder</a></td><td class="desc">FMS decoder class </td></tr>
<tr id="row_0_1_2_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_0_1_2_" class="arrow" onclick="dynsection.toggleFolder('0_1_2_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceboswatch_1_1decoder_1_1pocsag_decoder.html" target="_self">pocsagDecoder</a></td><td class="desc"></td></tr>
<tr id="row_0_1_2_0_" class="odd"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classboswatch_1_1decoder_1_1pocsag_decoder_1_1_pocsag_decoder.html" target="_self">PocsagDecoder</a></td><td class="desc">POCSAG decoder class </td></tr>
<tr id="row_0_1_3_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_0_1_3_" class="arrow" onclick="dynsection.toggleFolder('0_1_3_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceboswatch_1_1decoder_1_1zvei_decoder.html" target="_self">zveiDecoder</a></td><td class="desc"></td></tr>
<tr id="row_0_1_3_0_" class="odd"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classboswatch_1_1decoder_1_1zvei_decoder_1_1_zvei_decoder.html" target="_self">ZveiDecoder</a></td><td class="desc">ZVEI decoder class </td></tr>
<tr id="row_0_2_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_0_2_" class="arrow" onclick="dynsection.toggleFolder('0_2_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceboswatch_1_1input_source.html" target="_self">inputSource</a></td><td class="desc"></td></tr>
<tr id="row_0_2_0_" class="odd"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_0_2_0_" class="arrow" onclick="dynsection.toggleFolder('0_2_0_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceboswatch_1_1input_source_1_1input_base.html" target="_self">inputBase</a></td><td class="desc"></td></tr>
<tr id="row_0_2_0_0_" class="even"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classboswatch_1_1input_source_1_1input_base_1_1_input_base.html" target="_self">InputBase</a></td><td class="desc">Base class for handling inout sources </td></tr>
<tr id="row_0_2_1_" class="odd"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_0_2_1_" class="arrow" onclick="dynsection.toggleFolder('0_2_1_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceboswatch_1_1input_source_1_1line_in_input.html" target="_self">lineInInput</a></td><td class="desc"></td></tr>
<tr id="row_0_2_1_0_" class="even"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classboswatch_1_1input_source_1_1line_in_input_1_1_line_in_input.html" target="_self">LineInInput</a></td><td class="desc">Class for the line-in input source </td></tr>
<tr id="row_0_2_2_" class="odd"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_0_2_2_" class="arrow" onclick="dynsection.toggleFolder('0_2_2_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceboswatch_1_1input_source_1_1pulseaudio_input.html" target="_self">pulseaudioInput</a></td><td class="desc"></td></tr>
<tr id="row_0_2_2_0_" class="even"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classboswatch_1_1input_source_1_1pulseaudio_input_1_1_pulse_audio_input.html" target="_self">PulseAudioInput</a></td><td class="desc">Class for the PulseAudio input source </td></tr>
<tr id="row_0_2_3_" class="odd"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_0_2_3_" class="arrow" onclick="dynsection.toggleFolder('0_2_3_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceboswatch_1_1input_source_1_1sdr_input.html" target="_self">sdrInput</a></td><td class="desc"></td></tr>
<tr id="row_0_2_3_0_" class="even"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classboswatch_1_1input_source_1_1sdr_input_1_1_sdr_input.html" target="_self">SdrInput</a></td><td class="desc">Class for the sdr input source </td></tr>
<tr id="row_0_3_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_0_3_" class="arrow" onclick="dynsection.toggleFolder('0_3_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceboswatch_1_1network.html" target="_self">network</a></td><td class="desc"></td></tr>
<tr id="row_0_3_0_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_0_3_0_" class="arrow" onclick="dynsection.toggleFolder('0_3_0_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceboswatch_1_1network_1_1broadcast.html" target="_self">broadcast</a></td><td class="desc"></td></tr>
<tr id="row_0_3_0_0_" class="odd"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classboswatch_1_1network_1_1broadcast_1_1_broadcast_client.html" target="_self">BroadcastClient</a></td><td class="desc"><a class="el" href="classboswatch_1_1network_1_1broadcast_1_1_broadcast_client.html" title="BroadcastClient class.">BroadcastClient</a> class </td></tr>
<tr id="row_0_3_0_1_" class="even"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classboswatch_1_1network_1_1broadcast_1_1_broadcast_server.html" target="_self">BroadcastServer</a></td><td class="desc"><a class="el" href="classboswatch_1_1network_1_1broadcast_1_1_broadcast_server.html" title="BroadcastServer class.">BroadcastServer</a> class </td></tr>
<tr id="row_0_3_1_" class="odd"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_0_3_1_" class="arrow" onclick="dynsection.toggleFolder('0_3_1_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceboswatch_1_1network_1_1client.html" target="_self">client</a></td><td class="desc"></td></tr>
<tr id="row_0_3_1_0_" class="even"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classboswatch_1_1network_1_1client_1_1_t_c_p_client.html" target="_self">TCPClient</a></td><td class="desc">TCP client class </td></tr>
<tr id="row_0_3_2_" class="odd"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_0_3_2_" class="arrow" onclick="dynsection.toggleFolder('0_3_2_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceboswatch_1_1network_1_1net_check.html" target="_self">netCheck</a></td><td class="desc"></td></tr>
<tr id="row_0_3_2_0_" class="even"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classboswatch_1_1network_1_1net_check_1_1_net_check.html" target="_self">NetCheck</a></td><td class="desc">Worker class to check internet connection </td></tr>
<tr id="row_0_3_3_" class="odd"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_0_3_3_" class="arrow" onclick="dynsection.toggleFolder('0_3_3_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceboswatch_1_1network_1_1server.html" target="_self">server</a></td><td class="desc"></td></tr>
<tr id="row_0_3_3_0_" class="even"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classboswatch_1_1network_1_1server_1_1___threaded_t_c_p_request_handler.html" target="_self">_ThreadedTCPRequestHandler</a></td><td class="desc">ThreadedTCPRequestHandler class for our <a class="el" href="classboswatch_1_1network_1_1server_1_1_t_c_p_server.html" title="TCP server class.">TCPServer</a> class </td></tr>
<tr id="row_0_3_3_1_" class="odd"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classboswatch_1_1network_1_1server_1_1___threaded_t_c_p_server.html" target="_self">_ThreadedTCPServer</a></td><td class="desc">ThreadedTCPServer class for our <a class="el" href="classboswatch_1_1network_1_1server_1_1_t_c_p_server.html" title="TCP server class.">TCPServer</a> class </td></tr>
<tr id="row_0_3_3_2_" class="even"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classboswatch_1_1network_1_1server_1_1_t_c_p_server.html" target="_self">TCPServer</a></td><td class="desc">TCP server class </td></tr>
<tr id="row_0_4_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_0_4_" class="arrow" onclick="dynsection.toggleFolder('0_4_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceboswatch_1_1packet.html" target="_self">packet</a></td><td class="desc"></td></tr>
<tr id="row_0_4_0_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classboswatch_1_1packet_1_1_packet.html" target="_self">Packet</a></td><td class="desc">Class implementation of an BOSWatch packet </td></tr>
<tr id="row_0_5_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_0_5_" class="arrow" onclick="dynsection.toggleFolder('0_5_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceboswatch_1_1process_manager.html" target="_self">processManager</a></td><td class="desc"></td></tr>
<tr id="row_0_5_0_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classboswatch_1_1process_manager_1_1_process_manager.html" target="_self">ProcessManager</a></td><td class="desc">Class to manage a extern sub process </td></tr>
<tr id="row_0_6_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_0_6_" class="arrow" onclick="dynsection.toggleFolder('0_6_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceboswatch_1_1router.html" target="_self">router</a></td><td class="desc"></td></tr>
<tr id="row_0_6_0_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_0_6_0_" class="arrow" onclick="dynsection.toggleFolder('0_6_0_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceboswatch_1_1router_1_1route.html" target="_self">route</a></td><td class="desc"></td></tr>
<tr id="row_0_6_0_0_" class="odd"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classboswatch_1_1router_1_1route_1_1_route.html" target="_self">Route</a></td><td class="desc">Class for single routing points </td></tr>
<tr id="row_0_6_1_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_0_6_1_" class="arrow" onclick="dynsection.toggleFolder('0_6_1_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceboswatch_1_1router_1_1router.html" target="_self">router</a></td><td class="desc"></td></tr>
<tr id="row_0_6_1_0_" class="odd"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classboswatch_1_1router_1_1router_1_1_router.html" target="_self">Router</a></td><td class="desc">Class for the <a class="el" href="classboswatch_1_1router_1_1router_1_1_router.html" title="Class for the Router.">Router</a> </td></tr>
<tr id="row_0_6_2_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_0_6_2_" class="arrow" onclick="dynsection.toggleFolder('0_6_2_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceboswatch_1_1router_1_1router_manager.html" target="_self">routerManager</a></td><td class="desc"></td></tr>
<tr id="row_0_6_2_0_" class="odd"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classboswatch_1_1router_1_1router_manager_1_1_router_manager.html" target="_self">RouterManager</a></td><td class="desc">Class to manage all routers </td></tr>
<tr id="row_0_7_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_0_7_" class="arrow" onclick="dynsection.toggleFolder('0_7_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceboswatch_1_1timer.html" target="_self">timer</a></td><td class="desc"></td></tr>
<tr id="row_0_7_0_" class="odd"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classboswatch_1_1timer_1_1_repeated_timer.html" target="_self">RepeatedTimer</a></td><td class="desc"></td></tr>
<tr id="row_1_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_1_" class="arrow" onclick="dynsection.toggleFolder('1_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespacemodule.html" target="_self">module</a></td><td class="desc"></td></tr>
<tr id="row_1_0_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_1_0_" class="arrow" onclick="dynsection.toggleFolder('1_0_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespacemodule_1_1descriptor.html" target="_self">descriptor</a></td><td class="desc"></td></tr>
<tr id="row_1_0_0_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmodule_1_1descriptor_1_1_boswatch_module.html" target="_self">BoswatchModule</a></td><td class="desc">Adds descriptions to bwPackets </td></tr>
<tr id="row_1_1_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_1_1_" class="arrow" onclick="dynsection.toggleFolder('1_1_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespacemodule_1_1filter.html" target="_self">filter</a></td><td class="desc"></td></tr>
<tr id="row_1_1_0_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_1_1_0_" class="arrow" onclick="dynsection.toggleFolder('1_1_0_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespacemodule_1_1filter_1_1double_filter.html" target="_self">doubleFilter</a></td><td class="desc"></td></tr>
<tr id="row_1_1_0_0_" class="odd"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmodule_1_1filter_1_1double_filter_1_1_boswatch_module.html" target="_self">BoswatchModule</a></td><td class="desc">Description of the Module </td></tr>
<tr id="row_1_1_1_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_1_1_1_" class="arrow" onclick="dynsection.toggleFolder('1_1_1_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespacemodule_1_1filter_1_1mode_filter.html" target="_self">modeFilter</a></td><td class="desc"></td></tr>
<tr id="row_1_1_1_0_" class="odd"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmodule_1_1filter_1_1mode_filter_1_1_boswatch_module.html" target="_self">BoswatchModule</a></td><td class="desc">Filter of specific bwPacket mode </td></tr>
<tr id="row_1_1_2_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_1_1_2_" class="arrow" onclick="dynsection.toggleFolder('1_1_2_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespacemodule_1_1filter_1_1regex_filter.html" target="_self">regexFilter</a></td><td class="desc"></td></tr>
<tr id="row_1_1_2_0_" class="odd"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmodule_1_1filter_1_1regex_filter_1_1_boswatch_module.html" target="_self">BoswatchModule</a></td><td class="desc">Regex based filter mechanism </td></tr>
<tr id="row_1_2_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_1_2_" class="arrow" onclick="dynsection.toggleFolder('1_2_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespacemodule_1_1geocoding.html" target="_self">geocoding</a></td><td class="desc"></td></tr>
<tr id="row_1_2_0_" class="odd"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmodule_1_1geocoding_1_1_boswatch_module.html" target="_self">BoswatchModule</a></td><td class="desc">Description of the Module </td></tr>
<tr id="row_1_3_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_1_3_" class="arrow" onclick="dynsection.toggleFolder('1_3_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespacemodule_1_1module_base.html" target="_self">moduleBase</a></td><td class="desc"></td></tr>
<tr id="row_1_3_0_" class="odd"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmodule_1_1module_base_1_1_module_base.html" target="_self">ModuleBase</a></td><td class="desc">Main module class </td></tr>
<tr id="row_1_4_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_1_4_" class="arrow" onclick="dynsection.toggleFolder('1_4_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespacemodule_1_1template__module.html" target="_self">template_module</a></td><td class="desc"></td></tr>
<tr id="row_1_4_0_" class="odd"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classmodule_1_1template__module_1_1_boswatch_module.html" target="_self">BoswatchModule</a></td><td class="desc">Description of the Module </td></tr>
<tr id="row_2_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_2_" class="arrow" onclick="dynsection.toggleFolder('2_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceplugin.html" target="_self">plugin</a></td><td class="desc"></td></tr>
<tr id="row_2_0_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_2_0_" class="arrow" onclick="dynsection.toggleFolder('2_0_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceplugin_1_1divera.html" target="_self">divera</a></td><td class="desc"></td></tr>
<tr id="row_2_0_0_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classplugin_1_1divera_1_1_boswatch_plugin.html" target="_self">BoswatchPlugin</a></td><td class="desc">Description of the Plugin </td></tr>
<tr id="row_2_1_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_2_1_" class="arrow" onclick="dynsection.toggleFolder('2_1_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceplugin_1_1http.html" target="_self">http</a></td><td class="desc"></td></tr>
<tr id="row_2_1_0_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classplugin_1_1http_1_1_boswatch_plugin.html" target="_self">BoswatchPlugin</a></td><td class="desc">Description of the Plugin </td></tr>
<tr id="row_2_2_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_2_2_" class="arrow" onclick="dynsection.toggleFolder('2_2_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceplugin_1_1mysql.html" target="_self">mysql</a></td><td class="desc"></td></tr>
<tr id="row_2_2_0_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classplugin_1_1mysql_1_1_boswatch_plugin.html" target="_self">BoswatchPlugin</a></td><td class="desc">Description of the Plugin </td></tr>
<tr id="row_2_3_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_2_3_" class="arrow" onclick="dynsection.toggleFolder('2_3_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceplugin_1_1plugin_base.html" target="_self">pluginBase</a></td><td class="desc"></td></tr>
<tr id="row_2_3_0_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html" target="_self">PluginBase</a></td><td class="desc">Main plugin class </td></tr>
<tr id="row_2_4_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_2_4_" class="arrow" onclick="dynsection.toggleFolder('2_4_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceplugin_1_1telegram.html" target="_self">telegram</a></td><td class="desc"></td></tr>
<tr id="row_2_4_0_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classplugin_1_1telegram_1_1_boswatch_plugin.html" target="_self">BoswatchPlugin</a></td><td class="desc">Description of the Plugin </td></tr>
<tr id="row_2_4_1_" class="odd"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classplugin_1_1telegram_1_1_m_q_bot.html" target="_self">MQBot</a></td><td class="desc"></td></tr>
<tr id="row_2_5_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_2_5_" class="arrow" onclick="dynsection.toggleFolder('2_5_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceplugin_1_1template__plugin.html" target="_self">template_plugin</a></td><td class="desc"></td></tr>
<tr id="row_2_5_0_" class="odd"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classplugin_1_1template__plugin_1_1_boswatch_plugin.html" target="_self">BoswatchPlugin</a></td><td class="desc">Description of the Plugin </td></tr>
</table>
</div><!-- directory -->
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated on Wed Jun 11 2025 08:24:06 for BOSWatch 3 by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
</ul>
</div>
</body>
</html>

119
api/html/annotated_dup.js Normal file
View file

@ -0,0 +1,119 @@
var annotated_dup =
[
[ "boswatch", "namespaceboswatch.html", [
[ "configYaml", "namespaceboswatch_1_1config_yaml.html", [
[ "ConfigYAML", "classboswatch_1_1config_yaml_1_1_config_y_a_m_l.html", "classboswatch_1_1config_yaml_1_1_config_y_a_m_l" ]
] ],
[ "decoder", "namespaceboswatch_1_1decoder.html", [
[ "decoder", "namespaceboswatch_1_1decoder_1_1decoder.html", [
[ "Decoder", "classboswatch_1_1decoder_1_1decoder_1_1_decoder.html", "classboswatch_1_1decoder_1_1decoder_1_1_decoder" ]
] ],
[ "fmsDecoder", "namespaceboswatch_1_1decoder_1_1fms_decoder.html", [
[ "FmsDecoder", "classboswatch_1_1decoder_1_1fms_decoder_1_1_fms_decoder.html", "classboswatch_1_1decoder_1_1fms_decoder_1_1_fms_decoder" ]
] ],
[ "pocsagDecoder", "namespaceboswatch_1_1decoder_1_1pocsag_decoder.html", [
[ "PocsagDecoder", "classboswatch_1_1decoder_1_1pocsag_decoder_1_1_pocsag_decoder.html", "classboswatch_1_1decoder_1_1pocsag_decoder_1_1_pocsag_decoder" ]
] ],
[ "zveiDecoder", "namespaceboswatch_1_1decoder_1_1zvei_decoder.html", [
[ "ZveiDecoder", "classboswatch_1_1decoder_1_1zvei_decoder_1_1_zvei_decoder.html", "classboswatch_1_1decoder_1_1zvei_decoder_1_1_zvei_decoder" ]
] ]
] ],
[ "inputSource", "namespaceboswatch_1_1input_source.html", [
[ "inputBase", "namespaceboswatch_1_1input_source_1_1input_base.html", [
[ "InputBase", "classboswatch_1_1input_source_1_1input_base_1_1_input_base.html", "classboswatch_1_1input_source_1_1input_base_1_1_input_base" ]
] ],
[ "lineInInput", "namespaceboswatch_1_1input_source_1_1line_in_input.html", [
[ "LineInInput", "classboswatch_1_1input_source_1_1line_in_input_1_1_line_in_input.html", "classboswatch_1_1input_source_1_1line_in_input_1_1_line_in_input" ]
] ],
[ "pulseaudioInput", "namespaceboswatch_1_1input_source_1_1pulseaudio_input.html", [
[ "PulseAudioInput", "classboswatch_1_1input_source_1_1pulseaudio_input_1_1_pulse_audio_input.html", "classboswatch_1_1input_source_1_1pulseaudio_input_1_1_pulse_audio_input" ]
] ],
[ "sdrInput", "namespaceboswatch_1_1input_source_1_1sdr_input.html", [
[ "SdrInput", "classboswatch_1_1input_source_1_1sdr_input_1_1_sdr_input.html", "classboswatch_1_1input_source_1_1sdr_input_1_1_sdr_input" ]
] ]
] ],
[ "network", "namespaceboswatch_1_1network.html", [
[ "broadcast", "namespaceboswatch_1_1network_1_1broadcast.html", [
[ "BroadcastClient", "classboswatch_1_1network_1_1broadcast_1_1_broadcast_client.html", "classboswatch_1_1network_1_1broadcast_1_1_broadcast_client" ],
[ "BroadcastServer", "classboswatch_1_1network_1_1broadcast_1_1_broadcast_server.html", "classboswatch_1_1network_1_1broadcast_1_1_broadcast_server" ]
] ],
[ "client", "namespaceboswatch_1_1network_1_1client.html", [
[ "TCPClient", "classboswatch_1_1network_1_1client_1_1_t_c_p_client.html", "classboswatch_1_1network_1_1client_1_1_t_c_p_client" ]
] ],
[ "netCheck", "namespaceboswatch_1_1network_1_1net_check.html", [
[ "NetCheck", "classboswatch_1_1network_1_1net_check_1_1_net_check.html", "classboswatch_1_1network_1_1net_check_1_1_net_check" ]
] ],
[ "server", "namespaceboswatch_1_1network_1_1server.html", [
[ "_ThreadedTCPRequestHandler", "classboswatch_1_1network_1_1server_1_1___threaded_t_c_p_request_handler.html", "classboswatch_1_1network_1_1server_1_1___threaded_t_c_p_request_handler" ],
[ "_ThreadedTCPServer", "classboswatch_1_1network_1_1server_1_1___threaded_t_c_p_server.html", null ],
[ "TCPServer", "classboswatch_1_1network_1_1server_1_1_t_c_p_server.html", "classboswatch_1_1network_1_1server_1_1_t_c_p_server" ]
] ]
] ],
[ "packet", "namespaceboswatch_1_1packet.html", [
[ "Packet", "classboswatch_1_1packet_1_1_packet.html", "classboswatch_1_1packet_1_1_packet" ]
] ],
[ "processManager", "namespaceboswatch_1_1process_manager.html", [
[ "ProcessManager", "classboswatch_1_1process_manager_1_1_process_manager.html", "classboswatch_1_1process_manager_1_1_process_manager" ]
] ],
[ "router", "namespaceboswatch_1_1router.html", [
[ "route", "namespaceboswatch_1_1router_1_1route.html", [
[ "Route", "classboswatch_1_1router_1_1route_1_1_route.html", "classboswatch_1_1router_1_1route_1_1_route" ]
] ],
[ "router", "namespaceboswatch_1_1router_1_1router.html", [
[ "Router", "classboswatch_1_1router_1_1router_1_1_router.html", "classboswatch_1_1router_1_1router_1_1_router" ]
] ],
[ "routerManager", "namespaceboswatch_1_1router_1_1router_manager.html", [
[ "RouterManager", "classboswatch_1_1router_1_1router_manager_1_1_router_manager.html", "classboswatch_1_1router_1_1router_manager_1_1_router_manager" ]
] ]
] ],
[ "timer", "namespaceboswatch_1_1timer.html", [
[ "RepeatedTimer", "classboswatch_1_1timer_1_1_repeated_timer.html", "classboswatch_1_1timer_1_1_repeated_timer" ]
] ]
] ],
[ "module", "namespacemodule.html", [
[ "descriptor", "namespacemodule_1_1descriptor.html", [
[ "BoswatchModule", "classmodule_1_1descriptor_1_1_boswatch_module.html", "classmodule_1_1descriptor_1_1_boswatch_module" ]
] ],
[ "filter", "namespacemodule_1_1filter.html", [
[ "doubleFilter", "namespacemodule_1_1filter_1_1double_filter.html", [
[ "BoswatchModule", "classmodule_1_1filter_1_1double_filter_1_1_boswatch_module.html", "classmodule_1_1filter_1_1double_filter_1_1_boswatch_module" ]
] ],
[ "modeFilter", "namespacemodule_1_1filter_1_1mode_filter.html", [
[ "BoswatchModule", "classmodule_1_1filter_1_1mode_filter_1_1_boswatch_module.html", "classmodule_1_1filter_1_1mode_filter_1_1_boswatch_module" ]
] ],
[ "regexFilter", "namespacemodule_1_1filter_1_1regex_filter.html", [
[ "BoswatchModule", "classmodule_1_1filter_1_1regex_filter_1_1_boswatch_module.html", "classmodule_1_1filter_1_1regex_filter_1_1_boswatch_module" ]
] ]
] ],
[ "geocoding", "namespacemodule_1_1geocoding.html", [
[ "BoswatchModule", "classmodule_1_1geocoding_1_1_boswatch_module.html", "classmodule_1_1geocoding_1_1_boswatch_module" ]
] ],
[ "moduleBase", "namespacemodule_1_1module_base.html", [
[ "ModuleBase", "classmodule_1_1module_base_1_1_module_base.html", "classmodule_1_1module_base_1_1_module_base" ]
] ],
[ "template_module", "namespacemodule_1_1template__module.html", [
[ "BoswatchModule", "classmodule_1_1template__module_1_1_boswatch_module.html", "classmodule_1_1template__module_1_1_boswatch_module" ]
] ]
] ],
[ "plugin", "namespaceplugin.html", [
[ "divera", "namespaceplugin_1_1divera.html", [
[ "BoswatchPlugin", "classplugin_1_1divera_1_1_boswatch_plugin.html", "classplugin_1_1divera_1_1_boswatch_plugin" ]
] ],
[ "http", "namespaceplugin_1_1http.html", [
[ "BoswatchPlugin", "classplugin_1_1http_1_1_boswatch_plugin.html", "classplugin_1_1http_1_1_boswatch_plugin" ]
] ],
[ "mysql", "namespaceplugin_1_1mysql.html", [
[ "BoswatchPlugin", "classplugin_1_1mysql_1_1_boswatch_plugin.html", "classplugin_1_1mysql_1_1_boswatch_plugin" ]
] ],
[ "pluginBase", "namespaceplugin_1_1plugin_base.html", [
[ "PluginBase", "classplugin_1_1plugin_base_1_1_plugin_base.html", "classplugin_1_1plugin_base_1_1_plugin_base" ]
] ],
[ "telegram", "namespaceplugin_1_1telegram.html", [
[ "BoswatchPlugin", "classplugin_1_1telegram_1_1_boswatch_plugin.html", "classplugin_1_1telegram_1_1_boswatch_plugin" ],
[ "MQBot", "classplugin_1_1telegram_1_1_m_q_bot.html", "classplugin_1_1telegram_1_1_m_q_bot" ]
] ],
[ "template_plugin", "namespaceplugin_1_1template__plugin.html", [
[ "BoswatchPlugin", "classplugin_1_1template__plugin_1_1_boswatch_plugin.html", "classplugin_1_1template__plugin_1_1_boswatch_plugin" ]
] ]
] ]
];

BIN
api/html/bc_s.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 668 B

BIN
api/html/bc_sd.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 632 B

View file

@ -0,0 +1,366 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.12.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>BOSWatch 3: boswatch.configYaml.ConfigYAML Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">BOSWatch 3
</div>
<div id="projectbrief">Python Script to receive and decode German BOS Information with rtl_fm and multimon-NG</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.12.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('classboswatch_1_1config_yaml_1_1_config_y_a_m_l.html',''); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pro-attribs">Protected Attributes</a> </div>
<div class="headertitle"><div class="title">boswatch.configYaml.ConfigYAML Class Reference</div></div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:ab71fa021f469d6d45d597c0594403c85" id="r_ab71fa021f469d6d45d597c0594403c85"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ab71fa021f469d6d45d597c0594403c85">__init__</a> (self, config=None)</td></tr>
<tr class="separator:ab71fa021f469d6d45d597c0594403c85"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab774c33b0a9d2cf9f9a1ecbe28509ed5" id="r_ab774c33b0a9d2cf9f9a1ecbe28509ed5"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ab774c33b0a9d2cf9f9a1ecbe28509ed5">__iter__</a> (self)</td></tr>
<tr class="separator:ab774c33b0a9d2cf9f9a1ecbe28509ed5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3e9d8bb1064df8d4971cb9c53c4df727" id="r_a3e9d8bb1064df8d4971cb9c53c4df727"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a3e9d8bb1064df8d4971cb9c53c4df727">__len__</a> (self)</td></tr>
<tr class="memdesc:a3e9d8bb1064df8d4971cb9c53c4df727"><td class="mdescLeft">&#160;</td><td class="mdescRight">returns the length of an config element <br /></td></tr>
<tr class="separator:a3e9d8bb1064df8d4971cb9c53c4df727"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a973b5c19761074acf7e59407ecb36e5b" id="r_a973b5c19761074acf7e59407ecb36e5b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a973b5c19761074acf7e59407ecb36e5b">__str__</a> (self)</td></tr>
<tr class="memdesc:a973b5c19761074acf7e59407ecb36e5b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the string representation of the internal config dict. <br /></td></tr>
<tr class="separator:a973b5c19761074acf7e59407ecb36e5b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a77fa4b800bf837e717b351de2a184cbd" id="r_a77fa4b800bf837e717b351de2a184cbd"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a77fa4b800bf837e717b351de2a184cbd">loadConfigFile</a> (self, configPath)</td></tr>
<tr class="memdesc:a77fa4b800bf837e717b351de2a184cbd"><td class="mdescLeft">&#160;</td><td class="mdescRight">loads a given configuration file <br /></td></tr>
<tr class="separator:a77fa4b800bf837e717b351de2a184cbd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7c5fe27e45b2124cb4147727713bfb94" id="r_a7c5fe27e45b2124cb4147727713bfb94"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a7c5fe27e45b2124cb4147727713bfb94">get</a> (self, *args, default=None)</td></tr>
<tr class="memdesc:a7c5fe27e45b2124cb4147727713bfb94"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a single value from the config or a value set in a new configYAML class instance. <br /></td></tr>
<tr class="separator:a7c5fe27e45b2124cb4147727713bfb94"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pro-attribs" name="pro-attribs"></a>
Protected Attributes</h2></td></tr>
<tr class="memitem:a099b2cad054f88c4819f4cc0c369b6d6" id="r_a099b2cad054f88c4819f4cc0c369b6d6"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a099b2cad054f88c4819f4cc0c369b6d6">_config</a> = config</td></tr>
<tr class="separator:a099b2cad054f88c4819f4cc0c369b6d6"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="ab71fa021f469d6d45d597c0594403c85" name="ab71fa021f469d6d45d597c0594403c85"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab71fa021f469d6d45d597c0594403c85">&#9670;&#160;</a></span>__init__()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">boswatch.configYaml.ConfigYAML.__init__ </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>config</em></span><span class="paramdefsep"> = </span><span class="paramdefval">None</span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<div class="fragment"><div class="line"><span class="lineno"> 26</span> <span class="keyword">def </span>__init__(self, config=None):</div>
<div class="line"><span class="lineno"> 27</span> self._config = config</div>
<div class="line"><span class="lineno"> 28</span> </div>
</div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="ab774c33b0a9d2cf9f9a1ecbe28509ed5" name="ab774c33b0a9d2cf9f9a1ecbe28509ed5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab774c33b0a9d2cf9f9a1ecbe28509ed5">&#9670;&#160;</a></span>__iter__()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">boswatch.configYaml.ConfigYAML.__iter__ </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<div class="fragment"><div class="line"><span class="lineno"> 29</span> <span class="keyword">def </span>__iter__(self):</div>
<div class="line"><span class="lineno"> 30</span> <span class="keywordflow">for</span> item <span class="keywordflow">in</span> self._config:</div>
<div class="line"><span class="lineno"> 31</span> <span class="keywordflow">if</span> type(item) <span class="keywordflow">is</span> list <span class="keywordflow">or</span> type(item) <span class="keywordflow">is</span> dict:</div>
<div class="line"><span class="lineno"> 32</span> <span class="keywordflow">yield</span> ConfigYAML(item)</div>
<div class="line"><span class="lineno"> 33</span> <span class="keywordflow">else</span>:</div>
<div class="line"><span class="lineno"> 34</span> <span class="keywordflow">yield</span> item</div>
<div class="line"><span class="lineno"> 35</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="a3e9d8bb1064df8d4971cb9c53c4df727" name="a3e9d8bb1064df8d4971cb9c53c4df727"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3e9d8bb1064df8d4971cb9c53c4df727">&#9670;&#160;</a></span>__len__()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">boswatch.configYaml.ConfigYAML.__len__ </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>returns the length of an config element </p>
<div class="fragment"><div class="line"><span class="lineno"> 36</span> <span class="keyword">def </span>__len__(self):</div>
<div class="line"><span class="lineno"> 37</span> <span class="stringliteral">r&quot;&quot;&quot;!returns the length of an config element&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 38</span> <span class="keywordflow">return</span> len(self._config)</div>
<div class="line"><span class="lineno"> 39</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="a973b5c19761074acf7e59407ecb36e5b" name="a973b5c19761074acf7e59407ecb36e5b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a973b5c19761074acf7e59407ecb36e5b">&#9670;&#160;</a></span>__str__()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">boswatch.configYaml.ConfigYAML.__str__ </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the string representation of the internal config dict. </p>
<div class="fragment"><div class="line"><span class="lineno"> 40</span> <span class="keyword">def </span>__str__(self):</div>
<div class="line"><span class="lineno"> 41</span> <span class="stringliteral">r&quot;&quot;&quot;!Returns the string representation of the internal config dict&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 42</span> <span class="keywordflow">return</span> str(self._config)</div>
<div class="line"><span class="lineno"> 43</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="a77fa4b800bf837e717b351de2a184cbd" name="a77fa4b800bf837e717b351de2a184cbd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a77fa4b800bf837e717b351de2a184cbd">&#9670;&#160;</a></span>loadConfigFile()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">boswatch.configYaml.ConfigYAML.loadConfigFile </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>configPath</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>loads a given configuration file </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">configPath</td><td>Path to the config file </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>True or False </dd></dl>
<div class="fragment"><div class="line"><span class="lineno"> 44</span> <span class="keyword">def </span>loadConfigFile(self, configPath):</div>
<div class="line"><span class="lineno"> 45</span> <span class="stringliteral">r&quot;&quot;&quot;!loads a given configuration file</span></div>
<div class="line"><span class="lineno"> 46</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 47</span><span class="stringliteral"> @param configPath: Path to the config file</span></div>
<div class="line"><span class="lineno"> 48</span><span class="stringliteral"> @return True or False&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 49</span> logging.debug(<span class="stringliteral">&quot;load config file from: %s&quot;</span>, configPath)</div>
<div class="line"><span class="lineno"> 50</span> <span class="keywordflow">try</span>:</div>
<div class="line"><span class="lineno"> 51</span> <span class="keyword">with</span> open(configPath) <span class="keyword">as</span> file:</div>
<div class="line"><span class="lineno"> 52</span> <span class="comment"># use safe_load instead load</span></div>
<div class="line"><span class="lineno"> 53</span> self._config = yaml.safe_load(file)</div>
<div class="line"><span class="lineno"> 54</span> <span class="keywordflow">return</span> <span class="keyword">True</span></div>
<div class="line"><span class="lineno"> 55</span> <span class="keywordflow">except</span> FileNotFoundError:</div>
<div class="line"><span class="lineno"> 56</span> logging.error(<span class="stringliteral">&quot;config file not found: %s&quot;</span>, configPath)</div>
<div class="line"><span class="lineno"> 57</span> <span class="keywordflow">except</span> yaml.parser.ParserError:</div>
<div class="line"><span class="lineno"> 58</span> logging.exception(<span class="stringliteral">&quot;syntax error in config file: %s&quot;</span>, configPath)</div>
<div class="line"><span class="lineno"> 59</span> <span class="keywordflow">return</span> <span class="keyword">False</span></div>
<div class="line"><span class="lineno"> 60</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="a7c5fe27e45b2124cb4147727713bfb94" name="a7c5fe27e45b2124cb4147727713bfb94"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7c5fe27e45b2124cb4147727713bfb94">&#9670;&#160;</a></span>get()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">boswatch.configYaml.ConfigYAML.get </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">*</td> <td class="paramname"><span class="paramname"><em>args</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>default</em></span><span class="paramdefsep"> = </span><span class="paramdefval">None</span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Get a single value from the config or a value set in a new configYAML class instance. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">*args</td><td>Config section (one ore more strings) </td></tr>
<tr><td class="paramname">default</td><td>Default value if section not found (None) </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>: A single value, a value set in an configYAML instance, the default value </dd></dl>
<div class="fragment"><div class="line"><span class="lineno"> 61</span> <span class="keyword">def </span>get(self, *args, default=None):</div>
<div class="line"><span class="lineno"> 62</span> <span class="stringliteral">r&quot;&quot;&quot;!Get a single value from the config</span></div>
<div class="line"><span class="lineno"> 63</span><span class="stringliteral"> or a value set in a new configYAML class instance</span></div>
<div class="line"><span class="lineno"> 64</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 65</span><span class="stringliteral"> @param *args: Config section (one ore more strings)</span></div>
<div class="line"><span class="lineno"> 66</span><span class="stringliteral"> @param default: Default value if section not found (None)</span></div>
<div class="line"><span class="lineno"> 67</span><span class="stringliteral"> @return: A single value, a value set in an configYAML instance, the default value&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 68</span> tmp = self._config</div>
<div class="line"><span class="lineno"> 69</span> <span class="keywordflow">try</span>:</div>
<div class="line"><span class="lineno"> 70</span> <span class="keywordflow">for</span> arg <span class="keywordflow">in</span> args:</div>
<div class="line"><span class="lineno"> 71</span> tmp = tmp.get(arg, default)</div>
<div class="line"><span class="lineno"> 72</span> <span class="keywordflow">if</span> type(tmp) <span class="keywordflow">is</span> list <span class="keywordflow">or</span> type(tmp) <span class="keywordflow">is</span> dict:</div>
<div class="line"><span class="lineno"> 73</span> <span class="keywordflow">return</span> ConfigYAML(tmp)</div>
<div class="line"><span class="lineno"> 74</span> <span class="keywordflow">else</span>:</div>
<div class="line"><span class="lineno"> 75</span> <span class="keywordflow">return</span> tmp</div>
<div class="line"><span class="lineno"> 76</span> <span class="keywordflow">except</span> AttributeError: <span class="comment"># pragma: no cover</span></div>
<div class="line"><span class="lineno"> 77</span> <span class="keywordflow">return</span> default</div>
</div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">Field Documentation</h2>
<a id="a099b2cad054f88c4819f4cc0c369b6d6" name="a099b2cad054f88c4819f4cc0c369b6d6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a099b2cad054f88c4819f4cc0c369b6d6">&#9670;&#160;</a></span>_config</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">boswatch.configYaml.ConfigYAML._config = config</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespaceboswatch.html">boswatch</a></li><li class="navelem"><a class="el" href="namespaceboswatch_1_1config_yaml.html">configYaml</a></li><li class="navelem"><a class="el" href="classboswatch_1_1config_yaml_1_1_config_y_a_m_l.html">ConfigYAML</a></li>
<li class="footer">Generated on Wed Jun 11 2025 08:24:06 for BOSWatch 3 by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
</ul>
</div>
</body>
</html>

View file

@ -0,0 +1,10 @@
var classboswatch_1_1config_yaml_1_1_config_y_a_m_l =
[
[ "__init__", "classboswatch_1_1config_yaml_1_1_config_y_a_m_l.html#ab71fa021f469d6d45d597c0594403c85", null ],
[ "__iter__", "classboswatch_1_1config_yaml_1_1_config_y_a_m_l.html#ab774c33b0a9d2cf9f9a1ecbe28509ed5", null ],
[ "__len__", "classboswatch_1_1config_yaml_1_1_config_y_a_m_l.html#a3e9d8bb1064df8d4971cb9c53c4df727", null ],
[ "__str__", "classboswatch_1_1config_yaml_1_1_config_y_a_m_l.html#a973b5c19761074acf7e59407ecb36e5b", null ],
[ "loadConfigFile", "classboswatch_1_1config_yaml_1_1_config_y_a_m_l.html#a77fa4b800bf837e717b351de2a184cbd", null ],
[ "get", "classboswatch_1_1config_yaml_1_1_config_y_a_m_l.html#a7c5fe27e45b2124cb4147727713bfb94", null ],
[ "_config", "classboswatch_1_1config_yaml_1_1_config_y_a_m_l.html#a099b2cad054f88c4819f4cc0c369b6d6", null ]
];

View file

@ -0,0 +1,178 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.12.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>BOSWatch 3: boswatch.decoder.decoder.Decoder Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">BOSWatch 3
</div>
<div id="projectbrief">Python Script to receive and decode German BOS Information with rtl_fm and multimon-NG</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.12.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('classboswatch_1_1decoder_1_1decoder_1_1_decoder.html',''); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#pub-static-methods">Static Public Member Functions</a> </div>
<div class="headertitle"><div class="title">boswatch.decoder.decoder.Decoder Class Reference</div></div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-static-methods" name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:addeb065568a99b4bcadb1fb3c6f11bd1" id="r_addeb065568a99b4bcadb1fb3c6f11bd1"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#addeb065568a99b4bcadb1fb3c6f11bd1">decode</a> (data)</td></tr>
<tr class="memdesc:addeb065568a99b4bcadb1fb3c6f11bd1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Choose the right decoder and return a bwPacket instance. <br /></td></tr>
<tr class="separator:addeb065568a99b4bcadb1fb3c6f11bd1"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="addeb065568a99b4bcadb1fb3c6f11bd1" name="addeb065568a99b4bcadb1fb3c6f11bd1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#addeb065568a99b4bcadb1fb3c6f11bd1">&#9670;&#160;</a></span>decode()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">boswatch.decoder.decoder.Decoder.decode </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>data</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Choose the right decoder and return a bwPacket instance. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">data</td><td>data to decode </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>bwPacket instance </dd></dl>
<div class="fragment"><div class="line"><span class="lineno"> 29</span> <span class="keyword">def </span>decode(data):</div>
<div class="line"><span class="lineno"> 30</span> <span class="stringliteral">r&quot;&quot;&quot;!Choose the right decoder and return a bwPacket instance</span></div>
<div class="line"><span class="lineno"> 31</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 32</span><span class="stringliteral"> @param data: data to decode</span></div>
<div class="line"><span class="lineno"> 33</span><span class="stringliteral"> @return bwPacket instance&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 34</span> data = str(data)</div>
<div class="line"><span class="lineno"> 35</span> <span class="keywordflow">if</span> <span class="stringliteral">&quot;FMS&quot;</span> <span class="keywordflow">in</span> data:</div>
<div class="line"><span class="lineno"> 36</span> <span class="keywordflow">return</span> FmsDecoder.decode(data)</div>
<div class="line"><span class="lineno"> 37</span> <span class="keywordflow">elif</span> <span class="stringliteral">&quot;POCSAG&quot;</span> <span class="keywordflow">in</span> data:</div>
<div class="line"><span class="lineno"> 38</span> <span class="keywordflow">return</span> PocsagDecoder.decode(data)</div>
<div class="line"><span class="lineno"> 39</span> <span class="keywordflow">elif</span> <span class="stringliteral">&quot;ZVEI&quot;</span> <span class="keywordflow">in</span> data:</div>
<div class="line"><span class="lineno"> 40</span> <span class="keywordflow">return</span> ZveiDecoder.decode(data)</div>
<div class="line"><span class="lineno"> 41</span> <span class="keywordflow">else</span>:</div>
<div class="line"><span class="lineno"> 42</span> logging.warning(<span class="stringliteral">&quot;no decoder found for: %s&quot;</span>, data)</div>
<div class="line"><span class="lineno"> 43</span> <span class="keywordflow">return</span> <span class="keywordtype">None</span></div>
</div><!-- fragment -->
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespaceboswatch.html">boswatch</a></li><li class="navelem"><a class="el" href="namespaceboswatch_1_1decoder.html">decoder</a></li><li class="navelem"><a class="el" href="namespaceboswatch_1_1decoder_1_1decoder.html">decoder</a></li><li class="navelem"><a class="el" href="classboswatch_1_1decoder_1_1decoder_1_1_decoder.html">Decoder</a></li>
<li class="footer">Generated on Wed Jun 11 2025 08:24:06 for BOSWatch 3 by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
</ul>
</div>
</body>
</html>

View file

@ -0,0 +1,4 @@
var classboswatch_1_1decoder_1_1decoder_1_1_decoder =
[
[ "decode", "classboswatch_1_1decoder_1_1decoder_1_1_decoder.html#addeb065568a99b4bcadb1fb3c6f11bd1", null ]
];

View file

@ -0,0 +1,206 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.12.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>BOSWatch 3: boswatch.decoder.fmsDecoder.FmsDecoder Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">BOSWatch 3
</div>
<div id="projectbrief">Python Script to receive and decode German BOS Information with rtl_fm and multimon-NG</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.12.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('classboswatch_1_1decoder_1_1fms_decoder_1_1_fms_decoder.html',''); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#pub-static-methods">Static Public Member Functions</a> </div>
<div class="headertitle"><div class="title">boswatch.decoder.fmsDecoder.FmsDecoder Class Reference</div></div>
</div><!--header-->
<div class="contents">
<p>FMS decoder class.
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-static-methods" name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:a2cf35244ea56127feeaf19e6edfac03f" id="r_a2cf35244ea56127feeaf19e6edfac03f"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a2cf35244ea56127feeaf19e6edfac03f">decode</a> (data)</td></tr>
<tr class="memdesc:a2cf35244ea56127feeaf19e6edfac03f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Decodes FMS. <br /></td></tr>
<tr class="separator:a2cf35244ea56127feeaf19e6edfac03f"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>FMS decoder class. </p>
<p>This class decodes FMS data. First step is to validate the data and _check if the format is correct. In the last step a valid BOSWatch packet is created and returned </p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="a2cf35244ea56127feeaf19e6edfac03f" name="a2cf35244ea56127feeaf19e6edfac03f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2cf35244ea56127feeaf19e6edfac03f">&#9670;&#160;</a></span>decode()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">boswatch.decoder.fmsDecoder.FmsDecoder.decode </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>data</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Decodes FMS. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">data</td><td>FMS for decoding </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>BOSWatch FMS packet or None </dd></dl>
<div class="fragment"><div class="line"><span class="lineno"> 34</span> <span class="keyword">def </span>decode(data):</div>
<div class="line"><span class="lineno"> 35</span> <span class="stringliteral">r&quot;&quot;&quot;!Decodes FMS</span></div>
<div class="line"><span class="lineno"> 36</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 37</span><span class="stringliteral"> @param data: FMS for decoding</span></div>
<div class="line"><span class="lineno"> 38</span><span class="stringliteral"> @return BOSWatch FMS packet or None&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 39</span> <span class="keywordflow">if</span> <span class="stringliteral">&quot;CRC correct&quot;</span> <span class="keywordflow">in</span> data:</div>
<div class="line"><span class="lineno"> 40</span> service = data[19]</div>
<div class="line"><span class="lineno"> 41</span> country = data[36]</div>
<div class="line"><span class="lineno"> 42</span> location = data[61:63]</div>
<div class="line"><span class="lineno"> 43</span> vehicle = data[72:76]</div>
<div class="line"><span class="lineno"> 44</span> status = data[84]</div>
<div class="line"><span class="lineno"> 45</span> direction = data[101]</div>
<div class="line"><span class="lineno"> 46</span> directionText = data[103:110]</div>
<div class="line"><span class="lineno"> 47</span> tacticalInfo = data[114:117]</div>
<div class="line"><span class="lineno"> 48</span> fms_id = service + country + location + vehicle + status + direction</div>
<div class="line"><span class="lineno"> 49</span> </div>
<div class="line"><span class="lineno"> 50</span> <span class="keywordflow">if</span> re.search(<span class="stringliteral">&quot;[0-9a-f]{8}[0-9a-f][01]&quot;</span>, fms_id):</div>
<div class="line"><span class="lineno"> 51</span> logging.debug(<span class="stringliteral">&quot;found valid FMS&quot;</span>)</div>
<div class="line"><span class="lineno"> 52</span> </div>
<div class="line"><span class="lineno"> 53</span> bwPacket = Packet()</div>
<div class="line"><span class="lineno"> 54</span> bwPacket.set(<span class="stringliteral">&quot;mode&quot;</span>, <span class="stringliteral">&quot;fms&quot;</span>)</div>
<div class="line"><span class="lineno"> 55</span> bwPacket.set(<span class="stringliteral">&quot;fms&quot;</span>, fms_id)</div>
<div class="line"><span class="lineno"> 56</span> bwPacket.set(<span class="stringliteral">&quot;service&quot;</span>, service)</div>
<div class="line"><span class="lineno"> 57</span> bwPacket.set(<span class="stringliteral">&quot;country&quot;</span>, country)</div>
<div class="line"><span class="lineno"> 58</span> bwPacket.set(<span class="stringliteral">&quot;location&quot;</span>, location)</div>
<div class="line"><span class="lineno"> 59</span> bwPacket.set(<span class="stringliteral">&quot;vehicle&quot;</span>, vehicle)</div>
<div class="line"><span class="lineno"> 60</span> bwPacket.set(<span class="stringliteral">&quot;status&quot;</span>, status)</div>
<div class="line"><span class="lineno"> 61</span> bwPacket.set(<span class="stringliteral">&quot;direction&quot;</span>, direction)</div>
<div class="line"><span class="lineno"> 62</span> bwPacket.set(<span class="stringliteral">&quot;directionText&quot;</span>, directionText)</div>
<div class="line"><span class="lineno"> 63</span> bwPacket.set(<span class="stringliteral">&quot;tacticalInfo&quot;</span>, tacticalInfo)</div>
<div class="line"><span class="lineno"> 64</span> </div>
<div class="line"><span class="lineno"> 65</span> <span class="keywordflow">return</span> bwPacket</div>
<div class="line"><span class="lineno"> 66</span> </div>
<div class="line"><span class="lineno"> 67</span> logging.warning(<span class="stringliteral">&quot;no valid FMS&quot;</span>)</div>
<div class="line"><span class="lineno"> 68</span> <span class="keywordflow">return</span> <span class="keywordtype">None</span></div>
<div class="line"><span class="lineno"> 69</span> logging.warning(<span class="stringliteral">&quot;CRC Error&quot;</span>)</div>
<div class="line"><span class="lineno"> 70</span> <span class="keywordflow">return</span> <span class="keywordtype">None</span></div>
</div><!-- fragment -->
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespaceboswatch.html">boswatch</a></li><li class="navelem"><a class="el" href="namespaceboswatch_1_1decoder.html">decoder</a></li><li class="navelem"><a class="el" href="namespaceboswatch_1_1decoder_1_1fms_decoder.html">fmsDecoder</a></li><li class="navelem"><a class="el" href="classboswatch_1_1decoder_1_1fms_decoder_1_1_fms_decoder.html">FmsDecoder</a></li>
<li class="footer">Generated on Wed Jun 11 2025 08:24:06 for BOSWatch 3 by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
</ul>
</div>
</body>
</html>

View file

@ -0,0 +1,4 @@
var classboswatch_1_1decoder_1_1fms_decoder_1_1_fms_decoder =
[
[ "decode", "classboswatch_1_1decoder_1_1fms_decoder_1_1_fms_decoder.html#a2cf35244ea56127feeaf19e6edfac03f", null ]
];

View file

@ -0,0 +1,269 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.12.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>BOSWatch 3: boswatch.decoder.pocsagDecoder.PocsagDecoder Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">BOSWatch 3
</div>
<div id="projectbrief">Python Script to receive and decode German BOS Information with rtl_fm and multimon-NG</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.12.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('classboswatch_1_1decoder_1_1pocsag_decoder_1_1_pocsag_decoder.html',''); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="#pro-static-methods">Static Protected Member Functions</a> </div>
<div class="headertitle"><div class="title">boswatch.decoder.pocsagDecoder.PocsagDecoder Class Reference</div></div>
</div><!--header-->
<div class="contents">
<p>POCSAG decoder class.
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-static-methods" name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:a868542c74621fe5e6238ff92d998a8ce" id="r_a868542c74621fe5e6238ff92d998a8ce"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a868542c74621fe5e6238ff92d998a8ce">decode</a> (data)</td></tr>
<tr class="memdesc:a868542c74621fe5e6238ff92d998a8ce"><td class="mdescLeft">&#160;</td><td class="mdescRight">Decodes POCSAG. <br /></td></tr>
<tr class="separator:a868542c74621fe5e6238ff92d998a8ce"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pro-static-methods" name="pro-static-methods"></a>
Static Protected Member Functions</h2></td></tr>
<tr class="memitem:a9c7e70e58eacd1cf556ca02ca5a2d639" id="r_a9c7e70e58eacd1cf556ca02ca5a2d639"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a9c7e70e58eacd1cf556ca02ca5a2d639">_getBitrateRicSubric</a> (data)</td></tr>
<tr class="memdesc:a9c7e70e58eacd1cf556ca02ca5a2d639"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the Bitrate, Ric and Subric from data. <br /></td></tr>
<tr class="separator:a9c7e70e58eacd1cf556ca02ca5a2d639"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>POCSAG decoder class. </p>
<p>This class decodes POCSAG data. First step is to validate the data and _check if the format is correct. In the last step a valid BOSWatch packet is created and returned </p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="a868542c74621fe5e6238ff92d998a8ce" name="a868542c74621fe5e6238ff92d998a8ce"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a868542c74621fe5e6238ff92d998a8ce">&#9670;&#160;</a></span>decode()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">boswatch.decoder.pocsagDecoder.PocsagDecoder.decode </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>data</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Decodes POCSAG. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">data</td><td>POCSAG for decoding </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>BOSWatch POCSAG packet or None </dd></dl>
<div class="fragment"><div class="line"><span class="lineno"> 34</span> <span class="keyword">def </span>decode(data):</div>
<div class="line"><span class="lineno"> 35</span> <span class="stringliteral">r&quot;&quot;&quot;!Decodes POCSAG</span></div>
<div class="line"><span class="lineno"> 36</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 37</span><span class="stringliteral"> @param data: POCSAG for decoding</span></div>
<div class="line"><span class="lineno"> 38</span><span class="stringliteral"> @return BOSWatch POCSAG packet or None&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 39</span> bitrate, ric, subric = PocsagDecoder._getBitrateRicSubric(data)</div>
<div class="line"><span class="lineno"> 40</span> </div>
<div class="line"><span class="lineno"> 41</span> <span class="keywordflow">if</span> re.search(<span class="stringliteral">&quot;[0-9]{7}&quot;</span>, ric) <span class="keywordflow">and</span> re.search(<span class="stringliteral">&quot;[1-4]&quot;</span>, subric):</div>
<div class="line"><span class="lineno"> 42</span> <span class="keywordflow">if</span> <span class="stringliteral">&quot;Alpha:&quot;</span> <span class="keywordflow">in</span> data:</div>
<div class="line"><span class="lineno"> 43</span> message = data.split(<span class="stringliteral">&#39;Alpha: &#39;</span>)[1].strip()</div>
<div class="line"><span class="lineno"> 44</span> message = message.replace(<span class="stringliteral">&#39;&lt;NUL&gt;&#39;</span>, <span class="stringliteral">&#39;&#39;</span>).replace(<span class="stringliteral">&#39;&lt;NUL&#39;</span>, <span class="stringliteral">&#39;&#39;</span>).replace(<span class="stringliteral">&#39;&lt; NUL&gt;&#39;</span>, <span class="stringliteral">&#39;&#39;</span>).replace(<span class="stringliteral">&#39;&lt;EOT&gt;&#39;</span>, <span class="stringliteral">&#39;&#39;</span>).strip()</div>
<div class="line"><span class="lineno"> 45</span> <span class="keywordflow">else</span>:</div>
<div class="line"><span class="lineno"> 46</span> message = <span class="stringliteral">&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 47</span> subricText = subric.replace(<span class="stringliteral">&quot;1&quot;</span>, <span class="stringliteral">&quot;a&quot;</span>).replace(<span class="stringliteral">&quot;2&quot;</span>, <span class="stringliteral">&quot;b&quot;</span>).replace(<span class="stringliteral">&quot;3&quot;</span>, <span class="stringliteral">&quot;c&quot;</span>).replace(<span class="stringliteral">&quot;4&quot;</span>, <span class="stringliteral">&quot;d&quot;</span>)</div>
<div class="line"><span class="lineno"> 48</span> </div>
<div class="line"><span class="lineno"> 49</span> logging.debug(<span class="stringliteral">&quot;found valid POCSAG&quot;</span>)</div>
<div class="line"><span class="lineno"> 50</span> </div>
<div class="line"><span class="lineno"> 51</span> bwPacket = Packet()</div>
<div class="line"><span class="lineno"> 52</span> bwPacket.set(<span class="stringliteral">&quot;mode&quot;</span>, <span class="stringliteral">&quot;pocsag&quot;</span>)</div>
<div class="line"><span class="lineno"> 53</span> bwPacket.set(<span class="stringliteral">&quot;bitrate&quot;</span>, bitrate)</div>
<div class="line"><span class="lineno"> 54</span> bwPacket.set(<span class="stringliteral">&quot;ric&quot;</span>, ric)</div>
<div class="line"><span class="lineno"> 55</span> bwPacket.set(<span class="stringliteral">&quot;subric&quot;</span>, subric)</div>
<div class="line"><span class="lineno"> 56</span> bwPacket.set(<span class="stringliteral">&quot;subricText&quot;</span>, subricText)</div>
<div class="line"><span class="lineno"> 57</span> bwPacket.set(<span class="stringliteral">&quot;message&quot;</span>, message)</div>
<div class="line"><span class="lineno"> 58</span> </div>
<div class="line"><span class="lineno"> 59</span> <span class="keywordflow">return</span> bwPacket</div>
<div class="line"><span class="lineno"> 60</span> </div>
<div class="line"><span class="lineno"> 61</span> logging.warning(<span class="stringliteral">&quot;no valid POCSAG&quot;</span>)</div>
<div class="line"><span class="lineno"> 62</span> <span class="keywordflow">return</span> <span class="keywordtype">None</span></div>
<div class="line"><span class="lineno"> 63</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="a9c7e70e58eacd1cf556ca02ca5a2d639" name="a9c7e70e58eacd1cf556ca02ca5a2d639"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9c7e70e58eacd1cf556ca02ca5a2d639">&#9670;&#160;</a></span>_getBitrateRicSubric()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">boswatch.decoder.pocsagDecoder.PocsagDecoder._getBitrateRicSubric </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>data</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Gets the Bitrate, Ric and Subric from data. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">data</td><td>POCSAG data string </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>bitrate </dd>
<dd>
ric </dd>
<dd>
subric </dd></dl>
<div class="fragment"><div class="line"><span class="lineno"> 65</span> <span class="keyword">def </span>_getBitrateRicSubric(data):</div>
<div class="line"><span class="lineno"> 66</span> <span class="stringliteral">r&quot;&quot;&quot;!Gets the Bitrate, Ric and Subric from data</span></div>
<div class="line"><span class="lineno"> 67</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 68</span><span class="stringliteral"> @param data: POCSAG data string</span></div>
<div class="line"><span class="lineno"> 69</span><span class="stringliteral"> @return bitrate</span></div>
<div class="line"><span class="lineno"> 70</span><span class="stringliteral"> @return ric</span></div>
<div class="line"><span class="lineno"> 71</span><span class="stringliteral"> @return subric&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 72</span> bitrate, ric, subric = <span class="stringliteral">&quot;0&quot;</span>, <span class="stringliteral">&quot;0&quot;</span>, <span class="stringliteral">&quot;0&quot;</span></div>
<div class="line"><span class="lineno"> 73</span> </div>
<div class="line"><span class="lineno"> 74</span> <span class="keywordflow">if</span> <span class="stringliteral">&quot;POCSAG512:&quot;</span> <span class="keywordflow">in</span> data:</div>
<div class="line"><span class="lineno"> 75</span> bitrate = <span class="stringliteral">&quot;512&quot;</span></div>
<div class="line"><span class="lineno"> 76</span> ric = data[20:27].replace(<span class="stringliteral">&quot; &quot;</span>, <span class="stringliteral">&quot;&quot;</span>).zfill(7)</div>
<div class="line"><span class="lineno"> 77</span> subric = str(int(data[39]) + 1)</div>
<div class="line"><span class="lineno"> 78</span> </div>
<div class="line"><span class="lineno"> 79</span> <span class="keywordflow">elif</span> <span class="stringliteral">&quot;POCSAG1200:&quot;</span> <span class="keywordflow">in</span> data:</div>
<div class="line"><span class="lineno"> 80</span> bitrate = <span class="stringliteral">&quot;1200&quot;</span></div>
<div class="line"><span class="lineno"> 81</span> ric = data[21:28].replace(<span class="stringliteral">&quot; &quot;</span>, <span class="stringliteral">&quot;&quot;</span>).zfill(7)</div>
<div class="line"><span class="lineno"> 82</span> subric = str(int(data[40]) + 1)</div>
<div class="line"><span class="lineno"> 83</span> </div>
<div class="line"><span class="lineno"> 84</span> <span class="keywordflow">elif</span> <span class="stringliteral">&quot;POCSAG2400:&quot;</span> <span class="keywordflow">in</span> data:</div>
<div class="line"><span class="lineno"> 85</span> bitrate = <span class="stringliteral">&quot;2400&quot;</span></div>
<div class="line"><span class="lineno"> 86</span> ric = data[21:28].replace(<span class="stringliteral">&quot; &quot;</span>, <span class="stringliteral">&quot;&quot;</span>).zfill(7)</div>
<div class="line"><span class="lineno"> 87</span> subric = str(int(data[40]) + 1)</div>
<div class="line"><span class="lineno"> 88</span> </div>
<div class="line"><span class="lineno"> 89</span> <span class="keywordflow">return</span> bitrate, ric, subric</div>
</div><!-- fragment -->
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespaceboswatch.html">boswatch</a></li><li class="navelem"><a class="el" href="namespaceboswatch_1_1decoder.html">decoder</a></li><li class="navelem"><a class="el" href="namespaceboswatch_1_1decoder_1_1pocsag_decoder.html">pocsagDecoder</a></li><li class="navelem"><a class="el" href="classboswatch_1_1decoder_1_1pocsag_decoder_1_1_pocsag_decoder.html">PocsagDecoder</a></li>
<li class="footer">Generated on Wed Jun 11 2025 08:24:06 for BOSWatch 3 by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
</ul>
</div>
</body>
</html>

View file

@ -0,0 +1,5 @@
var classboswatch_1_1decoder_1_1pocsag_decoder_1_1_pocsag_decoder =
[
[ "decode", "classboswatch_1_1decoder_1_1pocsag_decoder_1_1_pocsag_decoder.html#a868542c74621fe5e6238ff92d998a8ce", null ],
[ "_getBitrateRicSubric", "classboswatch_1_1decoder_1_1pocsag_decoder_1_1_pocsag_decoder.html#a9c7e70e58eacd1cf556ca02ca5a2d639", null ]
];

View file

@ -0,0 +1,239 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.12.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>BOSWatch 3: boswatch.decoder.zveiDecoder.ZveiDecoder Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">BOSWatch 3
</div>
<div id="projectbrief">Python Script to receive and decode German BOS Information with rtl_fm and multimon-NG</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.12.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('classboswatch_1_1decoder_1_1zvei_decoder_1_1_zvei_decoder.html',''); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="#pro-static-methods">Static Protected Member Functions</a> </div>
<div class="headertitle"><div class="title">boswatch.decoder.zveiDecoder.ZveiDecoder Class Reference</div></div>
</div><!--header-->
<div class="contents">
<p>ZVEI decoder class.
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-static-methods" name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:a69957ae8721e3fd8b8d66bac1ba8896e" id="r_a69957ae8721e3fd8b8d66bac1ba8896e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a69957ae8721e3fd8b8d66bac1ba8896e">decode</a> (data)</td></tr>
<tr class="memdesc:a69957ae8721e3fd8b8d66bac1ba8896e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Decodes ZVEI. <br /></td></tr>
<tr class="separator:a69957ae8721e3fd8b8d66bac1ba8896e"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pro-static-methods" name="pro-static-methods"></a>
Static Protected Member Functions</h2></td></tr>
<tr class="memitem:af7f14c40e52ebac1349cc31b73928bc9" id="r_af7f14c40e52ebac1349cc31b73928bc9"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#af7f14c40e52ebac1349cc31b73928bc9">_solveDoubleTone</a> (data)</td></tr>
<tr class="memdesc:af7f14c40e52ebac1349cc31b73928bc9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Remove the doubleTone sign (here its the 'E') <br /></td></tr>
<tr class="separator:af7f14c40e52ebac1349cc31b73928bc9"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>ZVEI decoder class. </p>
<p>This class decodes ZVEI data. First step is to validate the data and _check if the format is correct. After that the double-tone-sign 'E' is replaced. In the last step a valid BOSWatch packet is created and returned </p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="a69957ae8721e3fd8b8d66bac1ba8896e" name="a69957ae8721e3fd8b8d66bac1ba8896e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a69957ae8721e3fd8b8d66bac1ba8896e">&#9670;&#160;</a></span>decode()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">boswatch.decoder.zveiDecoder.ZveiDecoder.decode </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>data</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Decodes ZVEI. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">data</td><td>ZVEI for decoding </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>BOSWatch ZVEI packet or None </dd></dl>
<div class="fragment"><div class="line"><span class="lineno"> 35</span> <span class="keyword">def </span>decode(data):</div>
<div class="line"><span class="lineno"> 36</span> <span class="stringliteral">r&quot;&quot;&quot;!Decodes ZVEI</span></div>
<div class="line"><span class="lineno"> 37</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 38</span><span class="stringliteral"> @param data: ZVEI for decoding</span></div>
<div class="line"><span class="lineno"> 39</span><span class="stringliteral"> @return BOSWatch ZVEI packet or None&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 40</span> <span class="keywordflow">if</span> re.search(<span class="stringliteral">&quot;[0-9E]{5}&quot;</span>, data[7:12]):</div>
<div class="line"><span class="lineno"> 41</span> logging.debug(<span class="stringliteral">&quot;found valid ZVEI&quot;</span>)</div>
<div class="line"><span class="lineno"> 42</span> </div>
<div class="line"><span class="lineno"> 43</span> bwPacket = Packet()</div>
<div class="line"><span class="lineno"> 44</span> bwPacket.set(<span class="stringliteral">&quot;mode&quot;</span>, <span class="stringliteral">&quot;zvei&quot;</span>)</div>
<div class="line"><span class="lineno"> 45</span> bwPacket.set(<span class="stringliteral">&quot;tone&quot;</span>, ZveiDecoder._solveDoubleTone(data[7:12]))</div>
<div class="line"><span class="lineno"> 46</span> </div>
<div class="line"><span class="lineno"> 47</span> <span class="keywordflow">return</span> bwPacket</div>
<div class="line"><span class="lineno"> 48</span> </div>
<div class="line"><span class="lineno"> 49</span> logging.warning(<span class="stringliteral">&quot;no valid ZVEI&quot;</span>)</div>
<div class="line"><span class="lineno"> 50</span> <span class="keywordflow">return</span> <span class="keywordtype">None</span></div>
<div class="line"><span class="lineno"> 51</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="af7f14c40e52ebac1349cc31b73928bc9" name="af7f14c40e52ebac1349cc31b73928bc9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af7f14c40e52ebac1349cc31b73928bc9">&#9670;&#160;</a></span>_solveDoubleTone()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">boswatch.decoder.zveiDecoder.ZveiDecoder._solveDoubleTone </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>data</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Remove the doubleTone sign (here its the 'E') </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">data</td><td>ZVEI for double tone sign replacement </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Double Tone replaced ZVEI </dd></dl>
<div class="fragment"><div class="line"><span class="lineno"> 53</span> <span class="keyword">def </span>_solveDoubleTone(data):</div>
<div class="line"><span class="lineno"> 54</span> <span class="stringliteral">r&quot;&quot;&quot;!Remove the doubleTone sign (here its the &#39;E&#39;)</span></div>
<div class="line"><span class="lineno"> 55</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 56</span><span class="stringliteral"> @param data: ZVEI for double tone sign replacement</span></div>
<div class="line"><span class="lineno"> 57</span><span class="stringliteral"> @return Double Tone replaced ZVEI&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 58</span> <span class="keywordflow">if</span> <span class="stringliteral">&quot;E&quot;</span> <span class="keywordflow">in</span> data:</div>
<div class="line"><span class="lineno"> 59</span> data_old = data</div>
<div class="line"><span class="lineno"> 60</span> <span class="keywordflow">for</span> i <span class="keywordflow">in</span> range(1, len(data)):</div>
<div class="line"><span class="lineno"> 61</span> <span class="keywordflow">if</span> data[i] == <span class="stringliteral">&quot;E&quot;</span>:</div>
<div class="line"><span class="lineno"> 62</span> data = data.replace(<span class="stringliteral">&quot;E&quot;</span>, data[i - 1], 1)</div>
<div class="line"><span class="lineno"> 63</span> logging.debug(<span class="stringliteral">&quot;solve doubleTone: %s -&gt; %s&quot;</span>, data_old, data)</div>
<div class="line"><span class="lineno"> 64</span> <span class="keywordflow">return</span> data</div>
</div><!-- fragment -->
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespaceboswatch.html">boswatch</a></li><li class="navelem"><a class="el" href="namespaceboswatch_1_1decoder.html">decoder</a></li><li class="navelem"><a class="el" href="namespaceboswatch_1_1decoder_1_1zvei_decoder.html">zveiDecoder</a></li><li class="navelem"><a class="el" href="classboswatch_1_1decoder_1_1zvei_decoder_1_1_zvei_decoder.html">ZveiDecoder</a></li>
<li class="footer">Generated on Wed Jun 11 2025 08:24:06 for BOSWatch 3 by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
</ul>
</div>
</body>
</html>

View file

@ -0,0 +1,5 @@
var classboswatch_1_1decoder_1_1zvei_decoder_1_1_zvei_decoder =
[
[ "decode", "classboswatch_1_1decoder_1_1zvei_decoder_1_1_zvei_decoder.html#a69957ae8721e3fd8b8d66bac1ba8896e", null ],
[ "_solveDoubleTone", "classboswatch_1_1decoder_1_1zvei_decoder_1_1_zvei_decoder.html#af7f14c40e52ebac1349cc31b73928bc9", null ]
];

View file

@ -0,0 +1,527 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.12.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>BOSWatch 3: boswatch.inputSource.inputBase.InputBase Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">BOSWatch 3
</div>
<div id="projectbrief">Python Script to receive and decode German BOS Information with rtl_fm and multimon-NG</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.12.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('classboswatch_1_1input_source_1_1input_base_1_1_input_base.html',''); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-attribs">Data Fields</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> &#124;
<a href="#pro-attribs">Protected Attributes</a> </div>
<div class="headertitle"><div class="title">boswatch.inputSource.inputBase.InputBase Class Reference</div></div>
</div><!--header-->
<div class="contents">
<p>Base class for handling inout sources.
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:af27cd87704982341ab475309db6036aa" id="r_af27cd87704982341ab475309db6036aa"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#af27cd87704982341ab475309db6036aa">__init__</a> (self, inputQueue, inputConfig, decoderConfig)</td></tr>
<tr class="memdesc:af27cd87704982341ab475309db6036aa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Build a new InputSource class. <br /></td></tr>
<tr class="separator:af27cd87704982341ab475309db6036aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac01b4ac15a033f2df6d3ce95875f15e0" id="r_ac01b4ac15a033f2df6d3ce95875f15e0"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ac01b4ac15a033f2df6d3ce95875f15e0">start</a> (self)</td></tr>
<tr class="memdesc:ac01b4ac15a033f2df6d3ce95875f15e0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Start the input source thread. <br /></td></tr>
<tr class="separator:ac01b4ac15a033f2df6d3ce95875f15e0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0ab8a4109b818531fc9f79192b045465" id="r_a0ab8a4109b818531fc9f79192b045465"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a0ab8a4109b818531fc9f79192b045465">shutdown</a> (self)</td></tr>
<tr class="memdesc:a0ab8a4109b818531fc9f79192b045465"><td class="mdescLeft">&#160;</td><td class="mdescRight">Stop the input source thread. <br /></td></tr>
<tr class="separator:a0ab8a4109b818531fc9f79192b045465"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a83c2b67af75a860fc71b0424866f8bae" id="r_a83c2b67af75a860fc71b0424866f8bae"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a83c2b67af75a860fc71b0424866f8bae">addToQueue</a> (self, data)</td></tr>
<tr class="memdesc:a83c2b67af75a860fc71b0424866f8bae"><td class="mdescLeft">&#160;</td><td class="mdescRight">Decode and add alarm data to the queue for further processing during boswatch client. <br /></td></tr>
<tr class="separator:a83c2b67af75a860fc71b0424866f8bae"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9874c16b7000f464b820d1ba831fdb1b" id="r_a9874c16b7000f464b820d1ba831fdb1b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a9874c16b7000f464b820d1ba831fdb1b">getDecoderInstance</a> (self, decoderConfig, StdIn)</td></tr>
<tr class="separator:a9874c16b7000f464b820d1ba831fdb1b"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
Data Fields</h2></td></tr>
<tr class="memitem:aac7a9d6165202e4f97ba8b8241e74012" id="r_aac7a9d6165202e4f97ba8b8241e74012"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aac7a9d6165202e4f97ba8b8241e74012">_inputThread</a> = True</td></tr>
<tr class="separator:aac7a9d6165202e4f97ba8b8241e74012"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pro-methods" name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr class="memitem:a846609a2f9dd8b30009aa1bfd8131437" id="r_a846609a2f9dd8b30009aa1bfd8131437"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a846609a2f9dd8b30009aa1bfd8131437">_runThread</a> (self, dataQueue, sdrConfig, decoderConfig)</td></tr>
<tr class="memdesc:a846609a2f9dd8b30009aa1bfd8131437"><td class="mdescLeft">&#160;</td><td class="mdescRight">Thread routine of the input source has to be inherit. <br /></td></tr>
<tr class="separator:a846609a2f9dd8b30009aa1bfd8131437"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pro-attribs" name="pro-attribs"></a>
Protected Attributes</h2></td></tr>
<tr class="memitem:a6af1af984a2046a70a73e4ce2d6f1bfe" id="r_a6af1af984a2046a70a73e4ce2d6f1bfe"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a6af1af984a2046a70a73e4ce2d6f1bfe">_inputThread</a> = None</td></tr>
<tr class="separator:a6af1af984a2046a70a73e4ce2d6f1bfe"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab32d042b09f11fe44d9d2a213241aa0e" id="r_ab32d042b09f11fe44d9d2a213241aa0e"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ab32d042b09f11fe44d9d2a213241aa0e">_isRunning</a> = False</td></tr>
<tr class="separator:ab32d042b09f11fe44d9d2a213241aa0e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a16a630736e398371fbb7d9b8a39880cc" id="r_a16a630736e398371fbb7d9b8a39880cc"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a16a630736e398371fbb7d9b8a39880cc">_inputQueue</a> = inputQueue</td></tr>
<tr class="separator:a16a630736e398371fbb7d9b8a39880cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6ef8c7d1da7aa6c0aa391f6391dbc908" id="r_a6ef8c7d1da7aa6c0aa391f6391dbc908"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a6ef8c7d1da7aa6c0aa391f6391dbc908">_inputConfig</a> = inputConfig</td></tr>
<tr class="separator:a6ef8c7d1da7aa6c0aa391f6391dbc908"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a39c4c74464f0d25c2545270f420c24cd" id="r_a39c4c74464f0d25c2545270f420c24cd"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a39c4c74464f0d25c2545270f420c24cd">_decoderConfig</a> = decoderConfig</td></tr>
<tr class="separator:a39c4c74464f0d25c2545270f420c24cd"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Base class for handling inout sources. </p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="af27cd87704982341ab475309db6036aa" name="af27cd87704982341ab475309db6036aa"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af27cd87704982341ab475309db6036aa">&#9670;&#160;</a></span>__init__()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">boswatch.inputSource.inputBase.InputBase.__init__ </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>inputQueue</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>inputConfig</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>decoderConfig</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Build a new InputSource class. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">inputQueue</td><td>Python queue object to store input data </td></tr>
<tr><td class="paramname">inputConfig</td><td>ConfigYaml object with the inoutSource config </td></tr>
<tr><td class="paramname">decoderConfig</td><td>ConfigYaml object with the decoder config </td></tr>
</table>
</dd>
</dl>
<div class="fragment"><div class="line"><span class="lineno"> 31</span> <span class="keyword">def </span>__init__(self, inputQueue, inputConfig, decoderConfig):</div>
<div class="line"><span class="lineno"> 32</span> <span class="stringliteral">r&quot;&quot;&quot;!Build a new InputSource class</span></div>
<div class="line"><span class="lineno"> 33</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 34</span><span class="stringliteral"> @param inputQueue: Python queue object to store input data</span></div>
<div class="line"><span class="lineno"> 35</span><span class="stringliteral"> @param inputConfig: ConfigYaml object with the inoutSource config</span></div>
<div class="line"><span class="lineno"> 36</span><span class="stringliteral"> @param decoderConfig: ConfigYaml object with the decoder config&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 37</span> self._inputThread = <span class="keywordtype">None</span></div>
<div class="line"><span class="lineno"> 38</span> self._isRunning = <span class="keyword">False</span></div>
<div class="line"><span class="lineno"> 39</span> self._inputQueue = inputQueue</div>
<div class="line"><span class="lineno"> 40</span> self._inputConfig = inputConfig</div>
<div class="line"><span class="lineno"> 41</span> self._decoderConfig = decoderConfig</div>
<div class="line"><span class="lineno"> 42</span> </div>
</div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="ac01b4ac15a033f2df6d3ce95875f15e0" name="ac01b4ac15a033f2df6d3ce95875f15e0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac01b4ac15a033f2df6d3ce95875f15e0">&#9670;&#160;</a></span>start()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">boswatch.inputSource.inputBase.InputBase.start </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Start the input source thread. </p>
<div class="fragment"><div class="line"><span class="lineno"> 43</span> <span class="keyword">def </span>start(self):</div>
<div class="line"><span class="lineno"> 44</span> <span class="stringliteral">r&quot;&quot;&quot;!Start the input source thread&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 45</span> logging.debug(<span class="stringliteral">&quot;starting input thread&quot;</span>)</div>
<div class="line"><span class="lineno"> 46</span> self._isRunning = <span class="keyword">True</span></div>
<div class="line"><span class="lineno"> 47</span> self._inputThread = threading.Thread(target=self._runThread, name=<span class="stringliteral">&quot;inputThread&quot;</span>,</div>
<div class="line"><span class="lineno"> 48</span> args=(self._inputQueue, self._inputConfig, self._decoderConfig))</div>
<div class="line"><span class="lineno"> 49</span> self._inputThread.daemon = <span class="keyword">True</span></div>
<div class="line"><span class="lineno"> 50</span> self._inputThread.start()</div>
<div class="line"><span class="lineno"> 51</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="a846609a2f9dd8b30009aa1bfd8131437" name="a846609a2f9dd8b30009aa1bfd8131437"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a846609a2f9dd8b30009aa1bfd8131437">&#9670;&#160;</a></span>_runThread()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">boswatch.inputSource.inputBase.InputBase._runThread </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>dataQueue</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>sdrConfig</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>decoderConfig</em></span>&#160;)</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Thread routine of the input source has to be inherit. </p>
<p>Reimplemented in <a class="el" href="classboswatch_1_1input_source_1_1line_in_input_1_1_line_in_input.html#a57e48d2c1329f7c8dc2604a0c88dc8c0">boswatch.inputSource.lineInInput.LineInInput</a>, <a class="el" href="classboswatch_1_1input_source_1_1pulseaudio_input_1_1_pulse_audio_input.html#a343b1c81e6088a31501568c006542ff0">boswatch.inputSource.pulseaudioInput.PulseAudioInput</a>, and <a class="el" href="classboswatch_1_1input_source_1_1sdr_input_1_1_sdr_input.html#aaccbce0d6b8c281e71a0c3703e43a704">boswatch.inputSource.sdrInput.SdrInput</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 53</span> <span class="keyword">def </span>_runThread(self, dataQueue, sdrConfig, decoderConfig):</div>
<div class="line"><span class="lineno"> 54</span> <span class="stringliteral">r&quot;&quot;&quot;!Thread routine of the input source has to be inherit&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 55</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="a0ab8a4109b818531fc9f79192b045465" name="a0ab8a4109b818531fc9f79192b045465"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0ab8a4109b818531fc9f79192b045465">&#9670;&#160;</a></span>shutdown()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">boswatch.inputSource.inputBase.InputBase.shutdown </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Stop the input source thread. </p>
<div class="fragment"><div class="line"><span class="lineno"> 56</span> <span class="keyword">def </span>shutdown(self):</div>
<div class="line"><span class="lineno"> 57</span> <span class="stringliteral">r&quot;&quot;&quot;!Stop the input source thread&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 58</span> <span class="keywordflow">if</span> self._isRunning:</div>
<div class="line"><span class="lineno"> 59</span> logging.debug(<span class="stringliteral">&quot;wait for stopping the input thread&quot;</span>)</div>
<div class="line"><span class="lineno"> 60</span> self._isRunning = <span class="keyword">False</span></div>
<div class="line"><span class="lineno"> 61</span> self._inputThread.join()</div>
<div class="line"><span class="lineno"> 62</span> logging.debug(<span class="stringliteral">&quot;input thread stopped&quot;</span>)</div>
<div class="line"><span class="lineno"> 63</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="a83c2b67af75a860fc71b0424866f8bae" name="a83c2b67af75a860fc71b0424866f8bae"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a83c2b67af75a860fc71b0424866f8bae">&#9670;&#160;</a></span>addToQueue()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">boswatch.inputSource.inputBase.InputBase.addToQueue </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>data</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Decode and add alarm data to the queue for further processing during boswatch client. </p>
<div class="fragment"><div class="line"><span class="lineno"> 64</span> <span class="keyword">def </span>addToQueue(self, data):</div>
<div class="line"><span class="lineno"> 65</span> <span class="stringliteral">r&quot;&quot;&quot;!Decode and add alarm data to the queue for further processing during boswatch client&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 66</span> bwPacket = Decoder.decode(data)</div>
<div class="line"><span class="lineno"> 67</span> <span class="keywordflow">if</span> bwPacket <span class="keywordflow">is</span> <span class="keywordflow">not</span> <span class="keywordtype">None</span>:</div>
<div class="line"><span class="lineno"> 68</span> self._inputQueue.put_nowait((bwPacket, time.time()))</div>
<div class="line"><span class="lineno"> 69</span> logging.debug(<span class="stringliteral">&quot;Added received data to queue&quot;</span>)</div>
<div class="line"><span class="lineno"> 70</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="a9874c16b7000f464b820d1ba831fdb1b" name="a9874c16b7000f464b820d1ba831fdb1b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9874c16b7000f464b820d1ba831fdb1b">&#9670;&#160;</a></span>getDecoderInstance()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">boswatch.inputSource.inputBase.InputBase.getDecoderInstance </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>decoderConfig</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>StdIn</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<div class="fragment"><div class="line"><span class="lineno"> 71</span> <span class="keyword">def </span>getDecoderInstance(self, decoderConfig, StdIn):</div>
<div class="line"><span class="lineno"> 72</span> mmProc = ProcessManager(str(decoderConfig.get(<span class="stringliteral">&quot;path&quot;</span>, default=<span class="stringliteral">&quot;multimon-ng&quot;</span>)), textMode=<span class="keyword">True</span>)</div>
<div class="line"><span class="lineno"> 73</span> <span class="keywordflow">if</span> decoderConfig.get(<span class="stringliteral">&quot;fms&quot;</span>, default=0):</div>
<div class="line"><span class="lineno"> 74</span> mmProc.addArgument(<span class="stringliteral">&quot;-a FMSFSK&quot;</span>)</div>
<div class="line"><span class="lineno"> 75</span> <span class="keywordflow">if</span> decoderConfig.get(<span class="stringliteral">&quot;zvei&quot;</span>, default=0):</div>
<div class="line"><span class="lineno"> 76</span> mmProc.addArgument(<span class="stringliteral">&quot;-a ZVEI1&quot;</span>)</div>
<div class="line"><span class="lineno"> 77</span> <span class="keywordflow">if</span> decoderConfig.get(<span class="stringliteral">&quot;poc512&quot;</span>, default=0):</div>
<div class="line"><span class="lineno"> 78</span> mmProc.addArgument(<span class="stringliteral">&quot;-a POCSAG512&quot;</span>)</div>
<div class="line"><span class="lineno"> 79</span> <span class="keywordflow">if</span> decoderConfig.get(<span class="stringliteral">&quot;poc1200&quot;</span>, default=0):</div>
<div class="line"><span class="lineno"> 80</span> mmProc.addArgument(<span class="stringliteral">&quot;-a POCSAG1200&quot;</span>)</div>
<div class="line"><span class="lineno"> 81</span> <span class="keywordflow">if</span> decoderConfig.get(<span class="stringliteral">&quot;poc2400&quot;</span>, default=0):</div>
<div class="line"><span class="lineno"> 82</span> mmProc.addArgument(<span class="stringliteral">&quot;-a POCSAG2400&quot;</span>)</div>
<div class="line"><span class="lineno"> 83</span> <span class="keywordflow">if</span> decoderConfig.get(<span class="stringliteral">&quot;char&quot;</span>, default=0):</div>
<div class="line"><span class="lineno"> 84</span> mmProc.addArgument(<span class="stringliteral">&quot;-C &quot;</span> + str(decoderConfig.get(<span class="stringliteral">&quot;char&quot;</span>)))</div>
<div class="line"><span class="lineno"> 85</span> mmProc.addArgument(<span class="stringliteral">&quot;-f alpha&quot;</span>)</div>
<div class="line"><span class="lineno"> 86</span> mmProc.addArgument(<span class="stringliteral">&quot;-t raw -&quot;</span>)</div>
<div class="line"><span class="lineno"> 87</span> mmProc.setStdin(StdIn)</div>
<div class="line"><span class="lineno"> 88</span> mmProc.setStderr(open(paths.LOG_PATH + <span class="stringliteral">&quot;multimon-ng.log&quot;</span>, <span class="stringliteral">&quot;a&quot;</span>))</div>
<div class="line"><span class="lineno"> 89</span> <span class="keywordflow">return</span> mmProc</div>
</div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">Field Documentation</h2>
<a id="a6af1af984a2046a70a73e4ce2d6f1bfe" name="a6af1af984a2046a70a73e4ce2d6f1bfe"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6af1af984a2046a70a73e4ce2d6f1bfe">&#9670;&#160;</a></span>_inputThread <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">boswatch.inputSource.inputBase.InputBase._inputThread = None</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ab32d042b09f11fe44d9d2a213241aa0e" name="ab32d042b09f11fe44d9d2a213241aa0e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab32d042b09f11fe44d9d2a213241aa0e">&#9670;&#160;</a></span>_isRunning</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool boswatch.inputSource.inputBase.InputBase._isRunning = False</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a16a630736e398371fbb7d9b8a39880cc" name="a16a630736e398371fbb7d9b8a39880cc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a16a630736e398371fbb7d9b8a39880cc">&#9670;&#160;</a></span>_inputQueue</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">boswatch.inputSource.inputBase.InputBase._inputQueue = inputQueue</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a6ef8c7d1da7aa6c0aa391f6391dbc908" name="a6ef8c7d1da7aa6c0aa391f6391dbc908"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6ef8c7d1da7aa6c0aa391f6391dbc908">&#9670;&#160;</a></span>_inputConfig</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">boswatch.inputSource.inputBase.InputBase._inputConfig = inputConfig</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a39c4c74464f0d25c2545270f420c24cd" name="a39c4c74464f0d25c2545270f420c24cd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a39c4c74464f0d25c2545270f420c24cd">&#9670;&#160;</a></span>_decoderConfig</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">boswatch.inputSource.inputBase.InputBase._decoderConfig = decoderConfig</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="aac7a9d6165202e4f97ba8b8241e74012" name="aac7a9d6165202e4f97ba8b8241e74012"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aac7a9d6165202e4f97ba8b8241e74012">&#9670;&#160;</a></span>_inputThread <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool boswatch.inputSource.inputBase.InputBase._inputThread = True</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespaceboswatch.html">boswatch</a></li><li class="navelem"><a class="el" href="namespaceboswatch_1_1input_source.html">inputSource</a></li><li class="navelem"><a class="el" href="namespaceboswatch_1_1input_source_1_1input_base.html">inputBase</a></li><li class="navelem"><a class="el" href="classboswatch_1_1input_source_1_1input_base_1_1_input_base.html">InputBase</a></li>
<li class="footer">Generated on Wed Jun 11 2025 08:24:06 for BOSWatch 3 by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
</ul>
</div>
</body>
</html>

View file

@ -0,0 +1,15 @@
var classboswatch_1_1input_source_1_1input_base_1_1_input_base =
[
[ "__init__", "classboswatch_1_1input_source_1_1input_base_1_1_input_base.html#af27cd87704982341ab475309db6036aa", null ],
[ "start", "classboswatch_1_1input_source_1_1input_base_1_1_input_base.html#ac01b4ac15a033f2df6d3ce95875f15e0", null ],
[ "_runThread", "classboswatch_1_1input_source_1_1input_base_1_1_input_base.html#a846609a2f9dd8b30009aa1bfd8131437", null ],
[ "shutdown", "classboswatch_1_1input_source_1_1input_base_1_1_input_base.html#a0ab8a4109b818531fc9f79192b045465", null ],
[ "addToQueue", "classboswatch_1_1input_source_1_1input_base_1_1_input_base.html#a83c2b67af75a860fc71b0424866f8bae", null ],
[ "getDecoderInstance", "classboswatch_1_1input_source_1_1input_base_1_1_input_base.html#a9874c16b7000f464b820d1ba831fdb1b", null ],
[ "_inputThread", "classboswatch_1_1input_source_1_1input_base_1_1_input_base.html#a6af1af984a2046a70a73e4ce2d6f1bfe", null ],
[ "_isRunning", "classboswatch_1_1input_source_1_1input_base_1_1_input_base.html#ab32d042b09f11fe44d9d2a213241aa0e", null ],
[ "_inputQueue", "classboswatch_1_1input_source_1_1input_base_1_1_input_base.html#a16a630736e398371fbb7d9b8a39880cc", null ],
[ "_inputConfig", "classboswatch_1_1input_source_1_1input_base_1_1_input_base.html#a6ef8c7d1da7aa6c0aa391f6391dbc908", null ],
[ "_decoderConfig", "classboswatch_1_1input_source_1_1input_base_1_1_input_base.html#a39c4c74464f0d25c2545270f420c24cd", null ],
[ "_inputThread", "classboswatch_1_1input_source_1_1input_base_1_1_input_base.html#aac7a9d6165202e4f97ba8b8241e74012", null ]
];

View file

@ -0,0 +1,279 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.12.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>BOSWatch 3: boswatch.inputSource.lineInInput.LineInInput Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">BOSWatch 3
</div>
<div id="projectbrief">Python Script to receive and decode German BOS Information with rtl_fm and multimon-NG</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.12.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('classboswatch_1_1input_source_1_1line_in_input_1_1_line_in_input.html',''); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#pro-methods">Protected Member Functions</a> &#124;
<a href="#pro-attribs">Protected Attributes</a> </div>
<div class="headertitle"><div class="title">boswatch.inputSource.lineInInput.LineInInput Class Reference</div></div>
</div><!--header-->
<div class="contents">
<p>Class for the line-in input source.
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pro-methods" name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr class="memitem:a57e48d2c1329f7c8dc2604a0c88dc8c0" id="r_a57e48d2c1329f7c8dc2604a0c88dc8c0"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a57e48d2c1329f7c8dc2604a0c88dc8c0">_runThread</a> (self, dataQueue, lineInConfig, decoderConfig)</td></tr>
<tr class="memdesc:a57e48d2c1329f7c8dc2604a0c88dc8c0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Thread routine of the input source has to be inherit. <br /></td></tr>
<tr class="separator:a57e48d2c1329f7c8dc2604a0c88dc8c0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_methods_classboswatch_1_1input_source_1_1input_base_1_1_input_base"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pro_methods_classboswatch_1_1input_source_1_1input_base_1_1_input_base')"><img src="closed.png" alt="-"/>&#160;Protected Member Functions inherited from <a class="el" href="classboswatch_1_1input_source_1_1input_base_1_1_input_base.html">boswatch.inputSource.inputBase.InputBase</a></td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pro-attribs" name="pro-attribs"></a>
Protected Attributes</h2></td></tr>
<tr class="memitem:a80507ea35abcb897f2b27265ca43f98f" id="r_a80507ea35abcb897f2b27265ca43f98f"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a80507ea35abcb897f2b27265ca43f98f">_isRunning</a></td></tr>
<tr class="separator:a80507ea35abcb897f2b27265ca43f98f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_attribs_classboswatch_1_1input_source_1_1input_base_1_1_input_base"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pro_attribs_classboswatch_1_1input_source_1_1input_base_1_1_input_base')"><img src="closed.png" alt="-"/>&#160;Protected Attributes inherited from <a class="el" href="classboswatch_1_1input_source_1_1input_base_1_1_input_base.html">boswatch.inputSource.inputBase.InputBase</a></td></tr>
<tr class="memitem:a6af1af984a2046a70a73e4ce2d6f1bfe inherit pro_attribs_classboswatch_1_1input_source_1_1input_base_1_1_input_base" id="r_a6af1af984a2046a70a73e4ce2d6f1bfe"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboswatch_1_1input_source_1_1input_base_1_1_input_base.html#a6af1af984a2046a70a73e4ce2d6f1bfe">_inputThread</a> = None</td></tr>
<tr class="separator:a6af1af984a2046a70a73e4ce2d6f1bfe inherit pro_attribs_classboswatch_1_1input_source_1_1input_base_1_1_input_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab32d042b09f11fe44d9d2a213241aa0e inherit pro_attribs_classboswatch_1_1input_source_1_1input_base_1_1_input_base" id="r_ab32d042b09f11fe44d9d2a213241aa0e"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboswatch_1_1input_source_1_1input_base_1_1_input_base.html#ab32d042b09f11fe44d9d2a213241aa0e">_isRunning</a> = False</td></tr>
<tr class="separator:ab32d042b09f11fe44d9d2a213241aa0e inherit pro_attribs_classboswatch_1_1input_source_1_1input_base_1_1_input_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a16a630736e398371fbb7d9b8a39880cc inherit pro_attribs_classboswatch_1_1input_source_1_1input_base_1_1_input_base" id="r_a16a630736e398371fbb7d9b8a39880cc"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboswatch_1_1input_source_1_1input_base_1_1_input_base.html#a16a630736e398371fbb7d9b8a39880cc">_inputQueue</a> = inputQueue</td></tr>
<tr class="separator:a16a630736e398371fbb7d9b8a39880cc inherit pro_attribs_classboswatch_1_1input_source_1_1input_base_1_1_input_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6ef8c7d1da7aa6c0aa391f6391dbc908 inherit pro_attribs_classboswatch_1_1input_source_1_1input_base_1_1_input_base" id="r_a6ef8c7d1da7aa6c0aa391f6391dbc908"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboswatch_1_1input_source_1_1input_base_1_1_input_base.html#a6ef8c7d1da7aa6c0aa391f6391dbc908">_inputConfig</a> = inputConfig</td></tr>
<tr class="separator:a6ef8c7d1da7aa6c0aa391f6391dbc908 inherit pro_attribs_classboswatch_1_1input_source_1_1input_base_1_1_input_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a39c4c74464f0d25c2545270f420c24cd inherit pro_attribs_classboswatch_1_1input_source_1_1input_base_1_1_input_base" id="r_a39c4c74464f0d25c2545270f420c24cd"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboswatch_1_1input_source_1_1input_base_1_1_input_base.html#a39c4c74464f0d25c2545270f420c24cd">_decoderConfig</a> = decoderConfig</td></tr>
<tr class="separator:a39c4c74464f0d25c2545270f420c24cd inherit pro_attribs_classboswatch_1_1input_source_1_1input_base_1_1_input_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="inherited" name="inherited"></a>
Additional Inherited Members</h2></td></tr>
<tr class="inherit_header pub_methods_classboswatch_1_1input_source_1_1input_base_1_1_input_base"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pub_methods_classboswatch_1_1input_source_1_1input_base_1_1_input_base')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classboswatch_1_1input_source_1_1input_base_1_1_input_base.html">boswatch.inputSource.inputBase.InputBase</a></td></tr>
<tr class="memitem:af27cd87704982341ab475309db6036aa inherit pub_methods_classboswatch_1_1input_source_1_1input_base_1_1_input_base" id="r_af27cd87704982341ab475309db6036aa"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboswatch_1_1input_source_1_1input_base_1_1_input_base.html#af27cd87704982341ab475309db6036aa">__init__</a> (self, inputQueue, inputConfig, decoderConfig)</td></tr>
<tr class="memdesc:af27cd87704982341ab475309db6036aa inherit pub_methods_classboswatch_1_1input_source_1_1input_base_1_1_input_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Build a new InputSource class. <br /></td></tr>
<tr class="separator:af27cd87704982341ab475309db6036aa inherit pub_methods_classboswatch_1_1input_source_1_1input_base_1_1_input_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac01b4ac15a033f2df6d3ce95875f15e0 inherit pub_methods_classboswatch_1_1input_source_1_1input_base_1_1_input_base" id="r_ac01b4ac15a033f2df6d3ce95875f15e0"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboswatch_1_1input_source_1_1input_base_1_1_input_base.html#ac01b4ac15a033f2df6d3ce95875f15e0">start</a> (self)</td></tr>
<tr class="memdesc:ac01b4ac15a033f2df6d3ce95875f15e0 inherit pub_methods_classboswatch_1_1input_source_1_1input_base_1_1_input_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Start the input source thread. <br /></td></tr>
<tr class="separator:ac01b4ac15a033f2df6d3ce95875f15e0 inherit pub_methods_classboswatch_1_1input_source_1_1input_base_1_1_input_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0ab8a4109b818531fc9f79192b045465 inherit pub_methods_classboswatch_1_1input_source_1_1input_base_1_1_input_base" id="r_a0ab8a4109b818531fc9f79192b045465"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboswatch_1_1input_source_1_1input_base_1_1_input_base.html#a0ab8a4109b818531fc9f79192b045465">shutdown</a> (self)</td></tr>
<tr class="memdesc:a0ab8a4109b818531fc9f79192b045465 inherit pub_methods_classboswatch_1_1input_source_1_1input_base_1_1_input_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Stop the input source thread. <br /></td></tr>
<tr class="separator:a0ab8a4109b818531fc9f79192b045465 inherit pub_methods_classboswatch_1_1input_source_1_1input_base_1_1_input_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a83c2b67af75a860fc71b0424866f8bae inherit pub_methods_classboswatch_1_1input_source_1_1input_base_1_1_input_base" id="r_a83c2b67af75a860fc71b0424866f8bae"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboswatch_1_1input_source_1_1input_base_1_1_input_base.html#a83c2b67af75a860fc71b0424866f8bae">addToQueue</a> (self, data)</td></tr>
<tr class="memdesc:a83c2b67af75a860fc71b0424866f8bae inherit pub_methods_classboswatch_1_1input_source_1_1input_base_1_1_input_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Decode and add alarm data to the queue for further processing during boswatch client. <br /></td></tr>
<tr class="separator:a83c2b67af75a860fc71b0424866f8bae inherit pub_methods_classboswatch_1_1input_source_1_1input_base_1_1_input_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9874c16b7000f464b820d1ba831fdb1b inherit pub_methods_classboswatch_1_1input_source_1_1input_base_1_1_input_base" id="r_a9874c16b7000f464b820d1ba831fdb1b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboswatch_1_1input_source_1_1input_base_1_1_input_base.html#a9874c16b7000f464b820d1ba831fdb1b">getDecoderInstance</a> (self, decoderConfig, StdIn)</td></tr>
<tr class="separator:a9874c16b7000f464b820d1ba831fdb1b inherit pub_methods_classboswatch_1_1input_source_1_1input_base_1_1_input_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_attribs_classboswatch_1_1input_source_1_1input_base_1_1_input_base"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pub_attribs_classboswatch_1_1input_source_1_1input_base_1_1_input_base')"><img src="closed.png" alt="-"/>&#160;Data Fields inherited from <a class="el" href="classboswatch_1_1input_source_1_1input_base_1_1_input_base.html">boswatch.inputSource.inputBase.InputBase</a></td></tr>
<tr class="memitem:aac7a9d6165202e4f97ba8b8241e74012 inherit pub_attribs_classboswatch_1_1input_source_1_1input_base_1_1_input_base" id="r_aac7a9d6165202e4f97ba8b8241e74012"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboswatch_1_1input_source_1_1input_base_1_1_input_base.html#aac7a9d6165202e4f97ba8b8241e74012">_inputThread</a> = True</td></tr>
<tr class="separator:aac7a9d6165202e4f97ba8b8241e74012 inherit pub_attribs_classboswatch_1_1input_source_1_1input_base_1_1_input_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Class for the line-in input source. </p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="a57e48d2c1329f7c8dc2604a0c88dc8c0" name="a57e48d2c1329f7c8dc2604a0c88dc8c0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a57e48d2c1329f7c8dc2604a0c88dc8c0">&#9670;&#160;</a></span>_runThread()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">boswatch.inputSource.lineInInput.LineInInput._runThread </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>dataQueue</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>sdrConfig</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>decoderConfig</em></span>&#160;)</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Thread routine of the input source has to be inherit. </p>
<p>Reimplemented from <a class="el" href="classboswatch_1_1input_source_1_1input_base_1_1_input_base.html#a846609a2f9dd8b30009aa1bfd8131437">boswatch.inputSource.inputBase.InputBase</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 28</span> <span class="keyword">def </span>_runThread(self, dataQueue, lineInConfig, decoderConfig):</div>
<div class="line"><span class="lineno"> 29</span> lineInProc = <span class="keywordtype">None</span></div>
<div class="line"><span class="lineno"> 30</span> mmProc = <span class="keywordtype">None</span></div>
<div class="line"><span class="lineno"> 31</span> <span class="keywordflow">try</span>:</div>
<div class="line"><span class="lineno"> 32</span> lineInProc = ProcessManager(<span class="stringliteral">&quot;arecord&quot;</span>)</div>
<div class="line"><span class="lineno"> 33</span> lineInProc.addArgument(<span class="stringliteral">&quot;-q &quot;</span>) <span class="comment"># supress any other outputs</span></div>
<div class="line"><span class="lineno"> 34</span> lineInProc.addArgument(<span class="stringliteral">&quot;-f S16_LE&quot;</span>) <span class="comment"># set output format (16bit)</span></div>
<div class="line"><span class="lineno"> 35</span> lineInProc.addArgument(<span class="stringliteral">&quot;-r 22050&quot;</span>) <span class="comment"># set output sampling rate (22050Hz)</span></div>
<div class="line"><span class="lineno"> 36</span> lineInProc.addArgument(<span class="stringliteral">&quot;-D plughw:&quot;</span> +</div>
<div class="line"><span class="lineno"> 37</span> str(lineInConfig.get(<span class="stringliteral">&quot;card&quot;</span>, default=<span class="stringliteral">&quot;1&quot;</span>)) +</div>
<div class="line"><span class="lineno"> 38</span> <span class="stringliteral">&quot;,&quot;</span> +</div>
<div class="line"><span class="lineno"> 39</span> str(lineInConfig.get(<span class="stringliteral">&quot;device&quot;</span>, default=<span class="stringliteral">&quot;0&quot;</span>))) <span class="comment"># device id</span></div>
<div class="line"><span class="lineno"> 40</span> lineInProc.setStderr(open(paths.LOG_PATH + <span class="stringliteral">&quot;asla.log&quot;</span>, <span class="stringliteral">&quot;a&quot;</span>))</div>
<div class="line"><span class="lineno"> 41</span> lineInProc.start()</div>
<div class="line"><span class="lineno"> 42</span> </div>
<div class="line"><span class="lineno"> 43</span> mmProc = self.getDecoderInstance(decoderConfig, lineInProc.stdout)</div>
<div class="line"><span class="lineno"> 44</span> mmProc.start()</div>
<div class="line"><span class="lineno"> 45</span> </div>
<div class="line"><span class="lineno"> 46</span> logging.info(<span class="stringliteral">&quot;start decoding&quot;</span>)</div>
<div class="line"><span class="lineno"> 47</span> <span class="keywordflow">while</span> self._isRunning:</div>
<div class="line"><span class="lineno"> 48</span> <span class="keywordflow">if</span> <span class="keywordflow">not</span> lineInProc.isRunning:</div>
<div class="line"><span class="lineno"> 49</span> logging.warning(<span class="stringliteral">&quot;asla was down - try to restart&quot;</span>)</div>
<div class="line"><span class="lineno"> 50</span> lineInProc.start()</div>
<div class="line"><span class="lineno"> 51</span> </div>
<div class="line"><span class="lineno"> 52</span> <span class="keywordflow">if</span> lineInProc.isRunning:</div>
<div class="line"><span class="lineno"> 53</span> logging.info(<span class="stringliteral">&quot;rtl_fm is back up - restarting multimon...&quot;</span>)</div>
<div class="line"><span class="lineno"> 54</span> mmProc.setStdin(lineInProc.stdout)</div>
<div class="line"><span class="lineno"> 55</span> mmProc.start()</div>
<div class="line"><span class="lineno"> 56</span> <span class="keywordflow">elif</span> <span class="keywordflow">not</span> mmProc.isRunning:</div>
<div class="line"><span class="lineno"> 57</span> logging.warning(<span class="stringliteral">&quot;multimon was down - try to restart&quot;</span>)</div>
<div class="line"><span class="lineno"> 58</span> mmProc.start()</div>
<div class="line"><span class="lineno"> 59</span> <span class="keywordflow">elif</span> lineInProc.isRunning <span class="keywordflow">and</span> mmProc.isRunning:</div>
<div class="line"><span class="lineno"> 60</span> line = mmProc.readline()</div>
<div class="line"><span class="lineno"> 61</span> <span class="keywordflow">if</span> line:</div>
<div class="line"><span class="lineno"> 62</span> self.addToQueue(line)</div>
<div class="line"><span class="lineno"> 63</span> <span class="keywordflow">except</span>:</div>
<div class="line"><span class="lineno"> 64</span> logging.exception(<span class="stringliteral">&quot;error in lineIn input routine&quot;</span>)</div>
<div class="line"><span class="lineno"> 65</span> <span class="keywordflow">finally</span>:</div>
<div class="line"><span class="lineno"> 66</span> mmProc.stop()</div>
<div class="line"><span class="lineno"> 67</span> lineInProc.stop()</div>
</div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">Field Documentation</h2>
<a id="a80507ea35abcb897f2b27265ca43f98f" name="a80507ea35abcb897f2b27265ca43f98f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a80507ea35abcb897f2b27265ca43f98f">&#9670;&#160;</a></span>_isRunning</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">boswatch.inputSource.lineInInput.LineInInput._isRunning</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespaceboswatch.html">boswatch</a></li><li class="navelem"><a class="el" href="namespaceboswatch_1_1input_source.html">inputSource</a></li><li class="navelem"><a class="el" href="namespaceboswatch_1_1input_source_1_1line_in_input.html">lineInInput</a></li><li class="navelem"><a class="el" href="classboswatch_1_1input_source_1_1line_in_input_1_1_line_in_input.html">LineInInput</a></li>
<li class="footer">Generated on Wed Jun 11 2025 08:24:06 for BOSWatch 3 by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
</ul>
</div>
</body>
</html>

View file

@ -0,0 +1,5 @@
var classboswatch_1_1input_source_1_1line_in_input_1_1_line_in_input =
[
[ "_runThread", "classboswatch_1_1input_source_1_1line_in_input_1_1_line_in_input.html#a57e48d2c1329f7c8dc2604a0c88dc8c0", null ],
[ "_isRunning", "classboswatch_1_1input_source_1_1line_in_input_1_1_line_in_input.html#a80507ea35abcb897f2b27265ca43f98f", null ]
];

View file

@ -0,0 +1,278 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.12.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>BOSWatch 3: boswatch.inputSource.pulseaudioInput.PulseAudioInput Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">BOSWatch 3
</div>
<div id="projectbrief">Python Script to receive and decode German BOS Information with rtl_fm and multimon-NG</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.12.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('classboswatch_1_1input_source_1_1pulseaudio_input_1_1_pulse_audio_input.html',''); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#pro-methods">Protected Member Functions</a> &#124;
<a href="#pro-attribs">Protected Attributes</a> </div>
<div class="headertitle"><div class="title">boswatch.inputSource.pulseaudioInput.PulseAudioInput Class Reference</div></div>
</div><!--header-->
<div class="contents">
<p>Class for the PulseAudio input source.
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pro-methods" name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr class="memitem:a343b1c81e6088a31501568c006542ff0" id="r_a343b1c81e6088a31501568c006542ff0"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a343b1c81e6088a31501568c006542ff0">_runThread</a> (self, dataQueue, PulseAudioConfig, decoderConfig)</td></tr>
<tr class="memdesc:a343b1c81e6088a31501568c006542ff0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Thread routine of the input source has to be inherit. <br /></td></tr>
<tr class="separator:a343b1c81e6088a31501568c006542ff0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_methods_classboswatch_1_1input_source_1_1input_base_1_1_input_base"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pro_methods_classboswatch_1_1input_source_1_1input_base_1_1_input_base')"><img src="closed.png" alt="-"/>&#160;Protected Member Functions inherited from <a class="el" href="classboswatch_1_1input_source_1_1input_base_1_1_input_base.html">boswatch.inputSource.inputBase.InputBase</a></td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pro-attribs" name="pro-attribs"></a>
Protected Attributes</h2></td></tr>
<tr class="memitem:acf7d29232bad1b330d309f37cb064f65" id="r_acf7d29232bad1b330d309f37cb064f65"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#acf7d29232bad1b330d309f37cb064f65">_isRunning</a></td></tr>
<tr class="separator:acf7d29232bad1b330d309f37cb064f65"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_attribs_classboswatch_1_1input_source_1_1input_base_1_1_input_base"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pro_attribs_classboswatch_1_1input_source_1_1input_base_1_1_input_base')"><img src="closed.png" alt="-"/>&#160;Protected Attributes inherited from <a class="el" href="classboswatch_1_1input_source_1_1input_base_1_1_input_base.html">boswatch.inputSource.inputBase.InputBase</a></td></tr>
<tr class="memitem:a6af1af984a2046a70a73e4ce2d6f1bfe inherit pro_attribs_classboswatch_1_1input_source_1_1input_base_1_1_input_base" id="r_a6af1af984a2046a70a73e4ce2d6f1bfe"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboswatch_1_1input_source_1_1input_base_1_1_input_base.html#a6af1af984a2046a70a73e4ce2d6f1bfe">_inputThread</a> = None</td></tr>
<tr class="separator:a6af1af984a2046a70a73e4ce2d6f1bfe inherit pro_attribs_classboswatch_1_1input_source_1_1input_base_1_1_input_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab32d042b09f11fe44d9d2a213241aa0e inherit pro_attribs_classboswatch_1_1input_source_1_1input_base_1_1_input_base" id="r_ab32d042b09f11fe44d9d2a213241aa0e"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboswatch_1_1input_source_1_1input_base_1_1_input_base.html#ab32d042b09f11fe44d9d2a213241aa0e">_isRunning</a> = False</td></tr>
<tr class="separator:ab32d042b09f11fe44d9d2a213241aa0e inherit pro_attribs_classboswatch_1_1input_source_1_1input_base_1_1_input_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a16a630736e398371fbb7d9b8a39880cc inherit pro_attribs_classboswatch_1_1input_source_1_1input_base_1_1_input_base" id="r_a16a630736e398371fbb7d9b8a39880cc"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboswatch_1_1input_source_1_1input_base_1_1_input_base.html#a16a630736e398371fbb7d9b8a39880cc">_inputQueue</a> = inputQueue</td></tr>
<tr class="separator:a16a630736e398371fbb7d9b8a39880cc inherit pro_attribs_classboswatch_1_1input_source_1_1input_base_1_1_input_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6ef8c7d1da7aa6c0aa391f6391dbc908 inherit pro_attribs_classboswatch_1_1input_source_1_1input_base_1_1_input_base" id="r_a6ef8c7d1da7aa6c0aa391f6391dbc908"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboswatch_1_1input_source_1_1input_base_1_1_input_base.html#a6ef8c7d1da7aa6c0aa391f6391dbc908">_inputConfig</a> = inputConfig</td></tr>
<tr class="separator:a6ef8c7d1da7aa6c0aa391f6391dbc908 inherit pro_attribs_classboswatch_1_1input_source_1_1input_base_1_1_input_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a39c4c74464f0d25c2545270f420c24cd inherit pro_attribs_classboswatch_1_1input_source_1_1input_base_1_1_input_base" id="r_a39c4c74464f0d25c2545270f420c24cd"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboswatch_1_1input_source_1_1input_base_1_1_input_base.html#a39c4c74464f0d25c2545270f420c24cd">_decoderConfig</a> = decoderConfig</td></tr>
<tr class="separator:a39c4c74464f0d25c2545270f420c24cd inherit pro_attribs_classboswatch_1_1input_source_1_1input_base_1_1_input_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="inherited" name="inherited"></a>
Additional Inherited Members</h2></td></tr>
<tr class="inherit_header pub_methods_classboswatch_1_1input_source_1_1input_base_1_1_input_base"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pub_methods_classboswatch_1_1input_source_1_1input_base_1_1_input_base')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classboswatch_1_1input_source_1_1input_base_1_1_input_base.html">boswatch.inputSource.inputBase.InputBase</a></td></tr>
<tr class="memitem:af27cd87704982341ab475309db6036aa inherit pub_methods_classboswatch_1_1input_source_1_1input_base_1_1_input_base" id="r_af27cd87704982341ab475309db6036aa"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboswatch_1_1input_source_1_1input_base_1_1_input_base.html#af27cd87704982341ab475309db6036aa">__init__</a> (self, inputQueue, inputConfig, decoderConfig)</td></tr>
<tr class="memdesc:af27cd87704982341ab475309db6036aa inherit pub_methods_classboswatch_1_1input_source_1_1input_base_1_1_input_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Build a new InputSource class. <br /></td></tr>
<tr class="separator:af27cd87704982341ab475309db6036aa inherit pub_methods_classboswatch_1_1input_source_1_1input_base_1_1_input_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac01b4ac15a033f2df6d3ce95875f15e0 inherit pub_methods_classboswatch_1_1input_source_1_1input_base_1_1_input_base" id="r_ac01b4ac15a033f2df6d3ce95875f15e0"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboswatch_1_1input_source_1_1input_base_1_1_input_base.html#ac01b4ac15a033f2df6d3ce95875f15e0">start</a> (self)</td></tr>
<tr class="memdesc:ac01b4ac15a033f2df6d3ce95875f15e0 inherit pub_methods_classboswatch_1_1input_source_1_1input_base_1_1_input_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Start the input source thread. <br /></td></tr>
<tr class="separator:ac01b4ac15a033f2df6d3ce95875f15e0 inherit pub_methods_classboswatch_1_1input_source_1_1input_base_1_1_input_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0ab8a4109b818531fc9f79192b045465 inherit pub_methods_classboswatch_1_1input_source_1_1input_base_1_1_input_base" id="r_a0ab8a4109b818531fc9f79192b045465"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboswatch_1_1input_source_1_1input_base_1_1_input_base.html#a0ab8a4109b818531fc9f79192b045465">shutdown</a> (self)</td></tr>
<tr class="memdesc:a0ab8a4109b818531fc9f79192b045465 inherit pub_methods_classboswatch_1_1input_source_1_1input_base_1_1_input_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Stop the input source thread. <br /></td></tr>
<tr class="separator:a0ab8a4109b818531fc9f79192b045465 inherit pub_methods_classboswatch_1_1input_source_1_1input_base_1_1_input_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a83c2b67af75a860fc71b0424866f8bae inherit pub_methods_classboswatch_1_1input_source_1_1input_base_1_1_input_base" id="r_a83c2b67af75a860fc71b0424866f8bae"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboswatch_1_1input_source_1_1input_base_1_1_input_base.html#a83c2b67af75a860fc71b0424866f8bae">addToQueue</a> (self, data)</td></tr>
<tr class="memdesc:a83c2b67af75a860fc71b0424866f8bae inherit pub_methods_classboswatch_1_1input_source_1_1input_base_1_1_input_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Decode and add alarm data to the queue for further processing during boswatch client. <br /></td></tr>
<tr class="separator:a83c2b67af75a860fc71b0424866f8bae inherit pub_methods_classboswatch_1_1input_source_1_1input_base_1_1_input_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9874c16b7000f464b820d1ba831fdb1b inherit pub_methods_classboswatch_1_1input_source_1_1input_base_1_1_input_base" id="r_a9874c16b7000f464b820d1ba831fdb1b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboswatch_1_1input_source_1_1input_base_1_1_input_base.html#a9874c16b7000f464b820d1ba831fdb1b">getDecoderInstance</a> (self, decoderConfig, StdIn)</td></tr>
<tr class="separator:a9874c16b7000f464b820d1ba831fdb1b inherit pub_methods_classboswatch_1_1input_source_1_1input_base_1_1_input_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_attribs_classboswatch_1_1input_source_1_1input_base_1_1_input_base"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pub_attribs_classboswatch_1_1input_source_1_1input_base_1_1_input_base')"><img src="closed.png" alt="-"/>&#160;Data Fields inherited from <a class="el" href="classboswatch_1_1input_source_1_1input_base_1_1_input_base.html">boswatch.inputSource.inputBase.InputBase</a></td></tr>
<tr class="memitem:aac7a9d6165202e4f97ba8b8241e74012 inherit pub_attribs_classboswatch_1_1input_source_1_1input_base_1_1_input_base" id="r_aac7a9d6165202e4f97ba8b8241e74012"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboswatch_1_1input_source_1_1input_base_1_1_input_base.html#aac7a9d6165202e4f97ba8b8241e74012">_inputThread</a> = True</td></tr>
<tr class="separator:aac7a9d6165202e4f97ba8b8241e74012 inherit pub_attribs_classboswatch_1_1input_source_1_1input_base_1_1_input_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Class for the PulseAudio input source. </p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="a343b1c81e6088a31501568c006542ff0" name="a343b1c81e6088a31501568c006542ff0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a343b1c81e6088a31501568c006542ff0">&#9670;&#160;</a></span>_runThread()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">boswatch.inputSource.pulseaudioInput.PulseAudioInput._runThread </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>dataQueue</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>sdrConfig</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>decoderConfig</em></span>&#160;)</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Thread routine of the input source has to be inherit. </p>
<p>Reimplemented from <a class="el" href="classboswatch_1_1input_source_1_1input_base_1_1_input_base.html#a846609a2f9dd8b30009aa1bfd8131437">boswatch.inputSource.inputBase.InputBase</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 28</span> <span class="keyword">def </span>_runThread(self, dataQueue, PulseAudioConfig, decoderConfig):</div>
<div class="line"><span class="lineno"> 29</span> PulseAudioProc = <span class="keywordtype">None</span></div>
<div class="line"><span class="lineno"> 30</span> mmProc = <span class="keywordtype">None</span></div>
<div class="line"><span class="lineno"> 31</span> <span class="keywordflow">try</span>:</div>
<div class="line"><span class="lineno"> 32</span> PulseAudioProc = ProcessManager(<span class="stringliteral">&quot;parec&quot;</span>)</div>
<div class="line"><span class="lineno"> 33</span> PulseAudioProc.addArgument(<span class="stringliteral">&quot;--channels=1&quot;</span>) <span class="comment"># supress any other outputs</span></div>
<div class="line"><span class="lineno"> 34</span> PulseAudioProc.addArgument(<span class="stringliteral">&quot;--format=s16le&quot;</span>) <span class="comment"># set output format (16bit)</span></div>
<div class="line"><span class="lineno"> 35</span> PulseAudioProc.addArgument(<span class="stringliteral">&quot;--rate=22050&quot;</span>) <span class="comment"># set output sampling rate (22050Hz)</span></div>
<div class="line"><span class="lineno"> 36</span> PulseAudioProc.addArgument(<span class="stringliteral">&quot;--device=&quot;</span> +</div>
<div class="line"><span class="lineno"> 37</span> str(PulseAudioConfig.get(<span class="stringliteral">&quot;device&quot;</span>, default=<span class="stringliteral">&quot;boswatch&quot;</span>)) +</div>
<div class="line"><span class="lineno"> 38</span> <span class="stringliteral">&quot;.monitor&quot;</span>) <span class="comment"># sink name</span></div>
<div class="line"><span class="lineno"> 39</span> PulseAudioProc.setStderr(open(paths.LOG_PATH + <span class="stringliteral">&quot;pulseaudio.log&quot;</span>, <span class="stringliteral">&quot;a&quot;</span>))</div>
<div class="line"><span class="lineno"> 40</span> PulseAudioProc.start()</div>
<div class="line"><span class="lineno"> 41</span> </div>
<div class="line"><span class="lineno"> 42</span> mmProc = self.getDecoderInstance(decoderConfig, PulseAudioProc.stdout)</div>
<div class="line"><span class="lineno"> 43</span> mmProc.start()</div>
<div class="line"><span class="lineno"> 44</span> </div>
<div class="line"><span class="lineno"> 45</span> logging.info(<span class="stringliteral">&quot;start decoding&quot;</span>)</div>
<div class="line"><span class="lineno"> 46</span> <span class="keywordflow">while</span> self._isRunning:</div>
<div class="line"><span class="lineno"> 47</span> <span class="keywordflow">if</span> <span class="keywordflow">not</span> PulseAudioProc.isRunning:</div>
<div class="line"><span class="lineno"> 48</span> logging.warning(<span class="stringliteral">&quot;PulseAudio was down - try to restart&quot;</span>)</div>
<div class="line"><span class="lineno"> 49</span> PulseAudioProc.start()</div>
<div class="line"><span class="lineno"> 50</span> </div>
<div class="line"><span class="lineno"> 51</span> <span class="keywordflow">if</span> PulseAudioProc.isRunning:</div>
<div class="line"><span class="lineno"> 52</span> logging.info(<span class="stringliteral">&quot;rtl_fm is back up - restarting multimon...&quot;</span>)</div>
<div class="line"><span class="lineno"> 53</span> mmProc.setStdin(PulseAudioProc.stdout)</div>
<div class="line"><span class="lineno"> 54</span> mmProc.start()</div>
<div class="line"><span class="lineno"> 55</span> <span class="keywordflow">elif</span> <span class="keywordflow">not</span> mmProc.isRunning:</div>
<div class="line"><span class="lineno"> 56</span> logging.warning(<span class="stringliteral">&quot;multimon was down - try to restart&quot;</span>)</div>
<div class="line"><span class="lineno"> 57</span> mmProc.start()</div>
<div class="line"><span class="lineno"> 58</span> <span class="keywordflow">elif</span> PulseAudioProc.isRunning <span class="keywordflow">and</span> mmProc.isRunning:</div>
<div class="line"><span class="lineno"> 59</span> line = mmProc.readline()</div>
<div class="line"><span class="lineno"> 60</span> <span class="keywordflow">if</span> line:</div>
<div class="line"><span class="lineno"> 61</span> self.addToQueue(line)</div>
<div class="line"><span class="lineno"> 62</span> <span class="keywordflow">except</span>:</div>
<div class="line"><span class="lineno"> 63</span> logging.exception(<span class="stringliteral">&quot;error in PulseAudio input routine&quot;</span>)</div>
<div class="line"><span class="lineno"> 64</span> <span class="keywordflow">finally</span>:</div>
<div class="line"><span class="lineno"> 65</span> mmProc.stop()</div>
<div class="line"><span class="lineno"> 66</span> PulseAudioProc.stop()</div>
</div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">Field Documentation</h2>
<a id="acf7d29232bad1b330d309f37cb064f65" name="acf7d29232bad1b330d309f37cb064f65"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acf7d29232bad1b330d309f37cb064f65">&#9670;&#160;</a></span>_isRunning</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">boswatch.inputSource.pulseaudioInput.PulseAudioInput._isRunning</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespaceboswatch.html">boswatch</a></li><li class="navelem"><a class="el" href="namespaceboswatch_1_1input_source.html">inputSource</a></li><li class="navelem"><a class="el" href="namespaceboswatch_1_1input_source_1_1pulseaudio_input.html">pulseaudioInput</a></li><li class="navelem"><a class="el" href="classboswatch_1_1input_source_1_1pulseaudio_input_1_1_pulse_audio_input.html">PulseAudioInput</a></li>
<li class="footer">Generated on Wed Jun 11 2025 08:24:06 for BOSWatch 3 by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
</ul>
</div>
</body>
</html>

View file

@ -0,0 +1,5 @@
var classboswatch_1_1input_source_1_1pulseaudio_input_1_1_pulse_audio_input =
[
[ "_runThread", "classboswatch_1_1input_source_1_1pulseaudio_input_1_1_pulse_audio_input.html#a343b1c81e6088a31501568c006542ff0", null ],
[ "_isRunning", "classboswatch_1_1input_source_1_1pulseaudio_input_1_1_pulse_audio_input.html#acf7d29232bad1b330d309f37cb064f65", null ]
];

View file

@ -0,0 +1,283 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.12.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>BOSWatch 3: boswatch.inputSource.sdrInput.SdrInput Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">BOSWatch 3
</div>
<div id="projectbrief">Python Script to receive and decode German BOS Information with rtl_fm and multimon-NG</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.12.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('classboswatch_1_1input_source_1_1sdr_input_1_1_sdr_input.html',''); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#pro-methods">Protected Member Functions</a> &#124;
<a href="#pro-attribs">Protected Attributes</a> </div>
<div class="headertitle"><div class="title">boswatch.inputSource.sdrInput.SdrInput Class Reference</div></div>
</div><!--header-->
<div class="contents">
<p>Class for the sdr input source.
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pro-methods" name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr class="memitem:aaccbce0d6b8c281e71a0c3703e43a704" id="r_aaccbce0d6b8c281e71a0c3703e43a704"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aaccbce0d6b8c281e71a0c3703e43a704">_runThread</a> (self, dataQueue, sdrConfig, decoderConfig)</td></tr>
<tr class="memdesc:aaccbce0d6b8c281e71a0c3703e43a704"><td class="mdescLeft">&#160;</td><td class="mdescRight">Thread routine of the input source has to be inherit. <br /></td></tr>
<tr class="separator:aaccbce0d6b8c281e71a0c3703e43a704"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_methods_classboswatch_1_1input_source_1_1input_base_1_1_input_base"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pro_methods_classboswatch_1_1input_source_1_1input_base_1_1_input_base')"><img src="closed.png" alt="-"/>&#160;Protected Member Functions inherited from <a class="el" href="classboswatch_1_1input_source_1_1input_base_1_1_input_base.html">boswatch.inputSource.inputBase.InputBase</a></td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pro-attribs" name="pro-attribs"></a>
Protected Attributes</h2></td></tr>
<tr class="memitem:a66fdca8f67bc143ad3d087496cb0cb92" id="r_a66fdca8f67bc143ad3d087496cb0cb92"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a66fdca8f67bc143ad3d087496cb0cb92">_isRunning</a></td></tr>
<tr class="separator:a66fdca8f67bc143ad3d087496cb0cb92"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_attribs_classboswatch_1_1input_source_1_1input_base_1_1_input_base"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pro_attribs_classboswatch_1_1input_source_1_1input_base_1_1_input_base')"><img src="closed.png" alt="-"/>&#160;Protected Attributes inherited from <a class="el" href="classboswatch_1_1input_source_1_1input_base_1_1_input_base.html">boswatch.inputSource.inputBase.InputBase</a></td></tr>
<tr class="memitem:a6af1af984a2046a70a73e4ce2d6f1bfe inherit pro_attribs_classboswatch_1_1input_source_1_1input_base_1_1_input_base" id="r_a6af1af984a2046a70a73e4ce2d6f1bfe"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboswatch_1_1input_source_1_1input_base_1_1_input_base.html#a6af1af984a2046a70a73e4ce2d6f1bfe">_inputThread</a> = None</td></tr>
<tr class="separator:a6af1af984a2046a70a73e4ce2d6f1bfe inherit pro_attribs_classboswatch_1_1input_source_1_1input_base_1_1_input_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab32d042b09f11fe44d9d2a213241aa0e inherit pro_attribs_classboswatch_1_1input_source_1_1input_base_1_1_input_base" id="r_ab32d042b09f11fe44d9d2a213241aa0e"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboswatch_1_1input_source_1_1input_base_1_1_input_base.html#ab32d042b09f11fe44d9d2a213241aa0e">_isRunning</a> = False</td></tr>
<tr class="separator:ab32d042b09f11fe44d9d2a213241aa0e inherit pro_attribs_classboswatch_1_1input_source_1_1input_base_1_1_input_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a16a630736e398371fbb7d9b8a39880cc inherit pro_attribs_classboswatch_1_1input_source_1_1input_base_1_1_input_base" id="r_a16a630736e398371fbb7d9b8a39880cc"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboswatch_1_1input_source_1_1input_base_1_1_input_base.html#a16a630736e398371fbb7d9b8a39880cc">_inputQueue</a> = inputQueue</td></tr>
<tr class="separator:a16a630736e398371fbb7d9b8a39880cc inherit pro_attribs_classboswatch_1_1input_source_1_1input_base_1_1_input_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6ef8c7d1da7aa6c0aa391f6391dbc908 inherit pro_attribs_classboswatch_1_1input_source_1_1input_base_1_1_input_base" id="r_a6ef8c7d1da7aa6c0aa391f6391dbc908"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboswatch_1_1input_source_1_1input_base_1_1_input_base.html#a6ef8c7d1da7aa6c0aa391f6391dbc908">_inputConfig</a> = inputConfig</td></tr>
<tr class="separator:a6ef8c7d1da7aa6c0aa391f6391dbc908 inherit pro_attribs_classboswatch_1_1input_source_1_1input_base_1_1_input_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a39c4c74464f0d25c2545270f420c24cd inherit pro_attribs_classboswatch_1_1input_source_1_1input_base_1_1_input_base" id="r_a39c4c74464f0d25c2545270f420c24cd"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboswatch_1_1input_source_1_1input_base_1_1_input_base.html#a39c4c74464f0d25c2545270f420c24cd">_decoderConfig</a> = decoderConfig</td></tr>
<tr class="separator:a39c4c74464f0d25c2545270f420c24cd inherit pro_attribs_classboswatch_1_1input_source_1_1input_base_1_1_input_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="inherited" name="inherited"></a>
Additional Inherited Members</h2></td></tr>
<tr class="inherit_header pub_methods_classboswatch_1_1input_source_1_1input_base_1_1_input_base"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pub_methods_classboswatch_1_1input_source_1_1input_base_1_1_input_base')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classboswatch_1_1input_source_1_1input_base_1_1_input_base.html">boswatch.inputSource.inputBase.InputBase</a></td></tr>
<tr class="memitem:af27cd87704982341ab475309db6036aa inherit pub_methods_classboswatch_1_1input_source_1_1input_base_1_1_input_base" id="r_af27cd87704982341ab475309db6036aa"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboswatch_1_1input_source_1_1input_base_1_1_input_base.html#af27cd87704982341ab475309db6036aa">__init__</a> (self, inputQueue, inputConfig, decoderConfig)</td></tr>
<tr class="memdesc:af27cd87704982341ab475309db6036aa inherit pub_methods_classboswatch_1_1input_source_1_1input_base_1_1_input_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Build a new InputSource class. <br /></td></tr>
<tr class="separator:af27cd87704982341ab475309db6036aa inherit pub_methods_classboswatch_1_1input_source_1_1input_base_1_1_input_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac01b4ac15a033f2df6d3ce95875f15e0 inherit pub_methods_classboswatch_1_1input_source_1_1input_base_1_1_input_base" id="r_ac01b4ac15a033f2df6d3ce95875f15e0"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboswatch_1_1input_source_1_1input_base_1_1_input_base.html#ac01b4ac15a033f2df6d3ce95875f15e0">start</a> (self)</td></tr>
<tr class="memdesc:ac01b4ac15a033f2df6d3ce95875f15e0 inherit pub_methods_classboswatch_1_1input_source_1_1input_base_1_1_input_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Start the input source thread. <br /></td></tr>
<tr class="separator:ac01b4ac15a033f2df6d3ce95875f15e0 inherit pub_methods_classboswatch_1_1input_source_1_1input_base_1_1_input_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0ab8a4109b818531fc9f79192b045465 inherit pub_methods_classboswatch_1_1input_source_1_1input_base_1_1_input_base" id="r_a0ab8a4109b818531fc9f79192b045465"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboswatch_1_1input_source_1_1input_base_1_1_input_base.html#a0ab8a4109b818531fc9f79192b045465">shutdown</a> (self)</td></tr>
<tr class="memdesc:a0ab8a4109b818531fc9f79192b045465 inherit pub_methods_classboswatch_1_1input_source_1_1input_base_1_1_input_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Stop the input source thread. <br /></td></tr>
<tr class="separator:a0ab8a4109b818531fc9f79192b045465 inherit pub_methods_classboswatch_1_1input_source_1_1input_base_1_1_input_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a83c2b67af75a860fc71b0424866f8bae inherit pub_methods_classboswatch_1_1input_source_1_1input_base_1_1_input_base" id="r_a83c2b67af75a860fc71b0424866f8bae"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboswatch_1_1input_source_1_1input_base_1_1_input_base.html#a83c2b67af75a860fc71b0424866f8bae">addToQueue</a> (self, data)</td></tr>
<tr class="memdesc:a83c2b67af75a860fc71b0424866f8bae inherit pub_methods_classboswatch_1_1input_source_1_1input_base_1_1_input_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Decode and add alarm data to the queue for further processing during boswatch client. <br /></td></tr>
<tr class="separator:a83c2b67af75a860fc71b0424866f8bae inherit pub_methods_classboswatch_1_1input_source_1_1input_base_1_1_input_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9874c16b7000f464b820d1ba831fdb1b inherit pub_methods_classboswatch_1_1input_source_1_1input_base_1_1_input_base" id="r_a9874c16b7000f464b820d1ba831fdb1b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboswatch_1_1input_source_1_1input_base_1_1_input_base.html#a9874c16b7000f464b820d1ba831fdb1b">getDecoderInstance</a> (self, decoderConfig, StdIn)</td></tr>
<tr class="separator:a9874c16b7000f464b820d1ba831fdb1b inherit pub_methods_classboswatch_1_1input_source_1_1input_base_1_1_input_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_attribs_classboswatch_1_1input_source_1_1input_base_1_1_input_base"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pub_attribs_classboswatch_1_1input_source_1_1input_base_1_1_input_base')"><img src="closed.png" alt="-"/>&#160;Data Fields inherited from <a class="el" href="classboswatch_1_1input_source_1_1input_base_1_1_input_base.html">boswatch.inputSource.inputBase.InputBase</a></td></tr>
<tr class="memitem:aac7a9d6165202e4f97ba8b8241e74012 inherit pub_attribs_classboswatch_1_1input_source_1_1input_base_1_1_input_base" id="r_aac7a9d6165202e4f97ba8b8241e74012"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboswatch_1_1input_source_1_1input_base_1_1_input_base.html#aac7a9d6165202e4f97ba8b8241e74012">_inputThread</a> = True</td></tr>
<tr class="separator:aac7a9d6165202e4f97ba8b8241e74012 inherit pub_attribs_classboswatch_1_1input_source_1_1input_base_1_1_input_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Class for the sdr input source. </p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="aaccbce0d6b8c281e71a0c3703e43a704" name="aaccbce0d6b8c281e71a0c3703e43a704"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aaccbce0d6b8c281e71a0c3703e43a704">&#9670;&#160;</a></span>_runThread()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">boswatch.inputSource.sdrInput.SdrInput._runThread </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>dataQueue</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>sdrConfig</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>decoderConfig</em></span>&#160;)</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Thread routine of the input source has to be inherit. </p>
<p>Reimplemented from <a class="el" href="classboswatch_1_1input_source_1_1input_base_1_1_input_base.html#a846609a2f9dd8b30009aa1bfd8131437">boswatch.inputSource.inputBase.InputBase</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 29</span> <span class="keyword">def </span>_runThread(self, dataQueue, sdrConfig, decoderConfig):</div>
<div class="line"><span class="lineno"> 30</span> sdrProc = <span class="keywordtype">None</span></div>
<div class="line"><span class="lineno"> 31</span> mmProc = <span class="keywordtype">None</span></div>
<div class="line"><span class="lineno"> 32</span> <span class="keywordflow">try</span>:</div>
<div class="line"><span class="lineno"> 33</span> sdrProc = ProcessManager(str(sdrConfig.get(<span class="stringliteral">&quot;rtlPath&quot;</span>, default=<span class="stringliteral">&quot;rtl_fm&quot;</span>)))</div>
<div class="line"><span class="lineno"> 34</span> sdrProc.addArgument(<span class="stringliteral">&quot;-d &quot;</span> + str(sdrConfig.get(<span class="stringliteral">&quot;device&quot;</span>, default=<span class="stringliteral">&quot;0&quot;</span>))) <span class="comment"># device id</span></div>
<div class="line"><span class="lineno"> 35</span> sdrProc.addArgument(<span class="stringliteral">&quot;-f &quot;</span> + str(sdrConfig.get(<span class="stringliteral">&quot;frequency&quot;</span>))) <span class="comment"># frequencies</span></div>
<div class="line"><span class="lineno"> 36</span> sdrProc.addArgument(<span class="stringliteral">&quot;-p &quot;</span> + str(sdrConfig.get(<span class="stringliteral">&quot;error&quot;</span>, default=<span class="stringliteral">&quot;0&quot;</span>))) <span class="comment"># frequency error in ppm</span></div>
<div class="line"><span class="lineno"> 37</span> sdrProc.addArgument(<span class="stringliteral">&quot;-l &quot;</span> + str(sdrConfig.get(<span class="stringliteral">&quot;squelch&quot;</span>, default=<span class="stringliteral">&quot;1&quot;</span>))) <span class="comment"># squelch</span></div>
<div class="line"><span class="lineno"> 38</span> sdrProc.addArgument(<span class="stringliteral">&quot;-g &quot;</span> + str(sdrConfig.get(<span class="stringliteral">&quot;gain&quot;</span>, default=<span class="stringliteral">&quot;100&quot;</span>))) <span class="comment"># gain</span></div>
<div class="line"><span class="lineno"> 39</span> <span class="keywordflow">if</span> (sdrConfig.get(<span class="stringliteral">&quot;fir_size&quot;</span>, default=<span class="keywordtype">None</span>) <span class="keywordflow">is</span> <span class="keywordflow">not</span> <span class="keywordtype">None</span>):</div>
<div class="line"><span class="lineno"> 40</span> sdrProc.addArgument(<span class="stringliteral">&quot;-F &quot;</span> + str(sdrConfig.get(<span class="stringliteral">&quot;fir_size&quot;</span>))) <span class="comment"># fir_size</span></div>
<div class="line"><span class="lineno"> 41</span> sdrProc.addArgument(<span class="stringliteral">&quot;-M fm&quot;</span>) <span class="comment"># set mode to fm</span></div>
<div class="line"><span class="lineno"> 42</span> sdrProc.addArgument(<span class="stringliteral">&quot;-E DC&quot;</span>) <span class="comment"># set DC filter</span></div>
<div class="line"><span class="lineno"> 43</span> sdrProc.addArgument(<span class="stringliteral">&quot;-s 22050&quot;</span>) <span class="comment"># bit rate of audio stream</span></div>
<div class="line"><span class="lineno"> 44</span> sdrProc.setStderr(open(paths.LOG_PATH + <span class="stringliteral">&quot;rtl_fm.log&quot;</span>, <span class="stringliteral">&quot;a&quot;</span>))</div>
<div class="line"><span class="lineno"> 45</span> sdrProc.start()</div>
<div class="line"><span class="lineno"> 46</span> </div>
<div class="line"><span class="lineno"> 47</span> mmProc = self.getDecoderInstance(decoderConfig, sdrProc.stdout)</div>
<div class="line"><span class="lineno"> 48</span> mmProc.start()</div>
<div class="line"><span class="lineno"> 49</span> </div>
<div class="line"><span class="lineno"> 50</span> logging.info(<span class="stringliteral">&quot;start decoding&quot;</span>)</div>
<div class="line"><span class="lineno"> 51</span> <span class="keywordflow">while</span> self._isRunning:</div>
<div class="line"><span class="lineno"> 52</span> <span class="keywordflow">if</span> <span class="keywordflow">not</span> sdrProc.isRunning:</div>
<div class="line"><span class="lineno"> 53</span> logging.warning(<span class="stringliteral">&quot;rtl_fm was down - trying to restart in 10 seconds&quot;</span>)</div>
<div class="line"><span class="lineno"> 54</span> time.sleep(10)</div>
<div class="line"><span class="lineno"> 55</span> </div>
<div class="line"><span class="lineno"> 56</span> sdrProc.start()</div>
<div class="line"><span class="lineno"> 57</span> <span class="keywordflow">if</span> sdrProc.isRunning:</div>
<div class="line"><span class="lineno"> 58</span> logging.info(<span class="stringliteral">&quot;rtl_fm is back up - restarting multimon...&quot;</span>)</div>
<div class="line"><span class="lineno"> 59</span> mmProc.setStdin(sdrProc.stdout)</div>
<div class="line"><span class="lineno"> 60</span> mmProc.start()</div>
<div class="line"><span class="lineno"> 61</span> <span class="keywordflow">elif</span> <span class="keywordflow">not</span> mmProc.isRunning:</div>
<div class="line"><span class="lineno"> 62</span> logging.warning(<span class="stringliteral">&quot;multimon was down - try to restart&quot;</span>)</div>
<div class="line"><span class="lineno"> 63</span> mmProc.start()</div>
<div class="line"><span class="lineno"> 64</span> <span class="keywordflow">elif</span> sdrProc.isRunning <span class="keywordflow">and</span> mmProc.isRunning:</div>
<div class="line"><span class="lineno"> 65</span> line = mmProc.readline()</div>
<div class="line"><span class="lineno"> 66</span> <span class="keywordflow">if</span> line:</div>
<div class="line"><span class="lineno"> 67</span> self.addToQueue(line)</div>
<div class="line"><span class="lineno"> 68</span> <span class="keywordflow">except</span>:</div>
<div class="line"><span class="lineno"> 69</span> logging.exception(<span class="stringliteral">&quot;error in sdr input routine&quot;</span>)</div>
<div class="line"><span class="lineno"> 70</span> <span class="keywordflow">finally</span>:</div>
<div class="line"><span class="lineno"> 71</span> mmProc.stop()</div>
<div class="line"><span class="lineno"> 72</span> sdrProc.stop()</div>
</div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">Field Documentation</h2>
<a id="a66fdca8f67bc143ad3d087496cb0cb92" name="a66fdca8f67bc143ad3d087496cb0cb92"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a66fdca8f67bc143ad3d087496cb0cb92">&#9670;&#160;</a></span>_isRunning</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">boswatch.inputSource.sdrInput.SdrInput._isRunning</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespaceboswatch.html">boswatch</a></li><li class="navelem"><a class="el" href="namespaceboswatch_1_1input_source.html">inputSource</a></li><li class="navelem"><a class="el" href="namespaceboswatch_1_1input_source_1_1sdr_input.html">sdrInput</a></li><li class="navelem"><a class="el" href="classboswatch_1_1input_source_1_1sdr_input_1_1_sdr_input.html">SdrInput</a></li>
<li class="footer">Generated on Wed Jun 11 2025 08:24:06 for BOSWatch 3 by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
</ul>
</div>
</body>
</html>

View file

@ -0,0 +1,5 @@
var classboswatch_1_1input_source_1_1sdr_input_1_1_sdr_input =
[
[ "_runThread", "classboswatch_1_1input_source_1_1sdr_input_1_1_sdr_input.html#aaccbce0d6b8c281e71a0c3703e43a704", null ],
[ "_isRunning", "classboswatch_1_1input_source_1_1sdr_input_1_1_sdr_input.html#a66fdca8f67bc143ad3d087496cb0cb92", null ]
];

View file

@ -0,0 +1,404 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.12.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>BOSWatch 3: boswatch.network.broadcast.BroadcastClient Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">BOSWatch 3
</div>
<div id="projectbrief">Python Script to receive and decode German BOS Information with rtl_fm and multimon-NG</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.12.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('classboswatch_1_1network_1_1broadcast_1_1_broadcast_client.html',''); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pro-attribs">Protected Attributes</a> </div>
<div class="headertitle"><div class="title">boswatch.network.broadcast.BroadcastClient Class Reference</div></div>
</div><!--header-->
<div class="contents">
<p><a class="el" href="classboswatch_1_1network_1_1broadcast_1_1_broadcast_client.html" title="BroadcastClient class.">BroadcastClient</a> class.
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:ab4294fb84142b6c5c7897adbac664bb1" id="r_ab4294fb84142b6c5c7897adbac664bb1"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ab4294fb84142b6c5c7897adbac664bb1">__init__</a> (self, port=5000)</td></tr>
<tr class="memdesc:ab4294fb84142b6c5c7897adbac664bb1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create an <a class="el" href="classboswatch_1_1network_1_1broadcast_1_1_broadcast_client.html" title="BroadcastClient class.">BroadcastClient</a> instance. <br /></td></tr>
<tr class="separator:ab4294fb84142b6c5c7897adbac664bb1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a020c629a993829463a215a58ddcfac21" id="r_a020c629a993829463a215a58ddcfac21"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a020c629a993829463a215a58ddcfac21">getConnInfo</a> (self, retry=0)</td></tr>
<tr class="memdesc:a020c629a993829463a215a58ddcfac21"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the connection info from server over udp broadcast. <br /></td></tr>
<tr class="separator:a020c629a993829463a215a58ddcfac21"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af35a11a41a256de82a65128fb6be70a3" id="r_af35a11a41a256de82a65128fb6be70a3"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#af35a11a41a256de82a65128fb6be70a3">serverIP</a> (self)</td></tr>
<tr class="memdesc:af35a11a41a256de82a65128fb6be70a3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Property to get the server IP after successful broadcast. <br /></td></tr>
<tr class="separator:af35a11a41a256de82a65128fb6be70a3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a84e39ca725becf9615d186be8430eb92" id="r_a84e39ca725becf9615d186be8430eb92"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a84e39ca725becf9615d186be8430eb92">serverPort</a> (self)</td></tr>
<tr class="memdesc:a84e39ca725becf9615d186be8430eb92"><td class="mdescLeft">&#160;</td><td class="mdescRight">Property to get the server Port after successful broadcast. <br /></td></tr>
<tr class="separator:a84e39ca725becf9615d186be8430eb92"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pro-attribs" name="pro-attribs"></a>
Protected Attributes</h2></td></tr>
<tr class="memitem:acdd370e919a9df510c393bf3cd220760" id="r_acdd370e919a9df510c393bf3cd220760"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#acdd370e919a9df510c393bf3cd220760">_broadcastPort</a> = port</td></tr>
<tr class="separator:acdd370e919a9df510c393bf3cd220760"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3cdfb326c00a65543c5277f8c0a013af" id="r_a3cdfb326c00a65543c5277f8c0a013af"><td class="memItemLeft" align="right" valign="top">str&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a3cdfb326c00a65543c5277f8c0a013af">_serverIP</a> = &quot;&quot;</td></tr>
<tr class="separator:a3cdfb326c00a65543c5277f8c0a013af"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a52906f01625de0d1a89331265a4ea2c4" id="r_a52906f01625de0d1a89331265a4ea2c4"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a52906f01625de0d1a89331265a4ea2c4">_serverPort</a> = 0</td></tr>
<tr class="separator:a52906f01625de0d1a89331265a4ea2c4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae5551bfa3d1cc9957c97869ded23fe14" id="r_ae5551bfa3d1cc9957c97869ded23fe14"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ae5551bfa3d1cc9957c97869ded23fe14">_socket</a> = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)</td></tr>
<tr class="separator:ae5551bfa3d1cc9957c97869ded23fe14"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p><a class="el" href="classboswatch_1_1network_1_1broadcast_1_1_broadcast_client.html" title="BroadcastClient class.">BroadcastClient</a> class. </p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="ab4294fb84142b6c5c7897adbac664bb1" name="ab4294fb84142b6c5c7897adbac664bb1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab4294fb84142b6c5c7897adbac664bb1">&#9670;&#160;</a></span>__init__()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">boswatch.network.broadcast.BroadcastClient.__init__ </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>port</em></span><span class="paramdefsep"> = </span><span class="paramdefval">5000</span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Create an <a class="el" href="classboswatch_1_1network_1_1broadcast_1_1_broadcast_client.html" title="BroadcastClient class.">BroadcastClient</a> instance. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">port</td><td>port to send broadcast packets (5000) </td></tr>
</table>
</dd>
</dl>
<div class="fragment"><div class="line"><span class="lineno"> 27</span> <span class="keyword">def </span>__init__(self, port=5000):</div>
<div class="line"><span class="lineno"> 28</span> <span class="stringliteral">r&quot;&quot;&quot;!Create an BroadcastClient instance</span></div>
<div class="line"><span class="lineno"> 29</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 30</span><span class="stringliteral"> @param port: port to send broadcast packets (5000)&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 31</span> self._broadcastPort = port</div>
<div class="line"><span class="lineno"> 32</span> </div>
<div class="line"><span class="lineno"> 33</span> self._serverIP = <span class="stringliteral">&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 34</span> self._serverPort = 0</div>
<div class="line"><span class="lineno"> 35</span> </div>
<div class="line"><span class="lineno"> 36</span> self._socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)</div>
<div class="line"><span class="lineno"> 37</span> self._socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)</div>
<div class="line"><span class="lineno"> 38</span> self._socket.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)</div>
<div class="line"><span class="lineno"> 39</span> self._socket.settimeout(3)</div>
<div class="line"><span class="lineno"> 40</span> </div>
</div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a020c629a993829463a215a58ddcfac21" name="a020c629a993829463a215a58ddcfac21"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a020c629a993829463a215a58ddcfac21">&#9670;&#160;</a></span>getConnInfo()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">boswatch.network.broadcast.BroadcastClient.getConnInfo </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>retry</em></span><span class="paramdefsep"> = </span><span class="paramdefval">0</span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Get the connection info from server over udp broadcast. </p>
<p>This function will send broadcast package(s) to get connection info from the server.</p>
<ul>
<li>send the magic packet &lt;BW-Request&gt; on broadcast address.</li>
<li>wait for a &lt;BW-Result&gt; magic packet.</li>
<li>extract the connection data from the magic packet and return</li>
</ul>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">retry</td><td>Count of retry - 0 is infinite (0)</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>True or False </dd></dl>
<div class="fragment"><div class="line"><span class="lineno"> 41</span> <span class="keyword">def </span>getConnInfo(self, retry=0):</div>
<div class="line"><span class="lineno"> 42</span> <span class="stringliteral">r&quot;&quot;&quot;!Get the connection info from server over udp broadcast</span></div>
<div class="line"><span class="lineno"> 43</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 44</span><span class="stringliteral"> This function will send broadcast package(s)</span></div>
<div class="line"><span class="lineno"> 45</span><span class="stringliteral"> to get connection info from the server.</span></div>
<div class="line"><span class="lineno"> 46</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 47</span><span class="stringliteral"> - send the magic packet &lt;BW-Request&gt; on broadcast address.</span></div>
<div class="line"><span class="lineno"> 48</span><span class="stringliteral"> - wait for a &lt;BW-Result&gt; magic packet.</span></div>
<div class="line"><span class="lineno"> 49</span><span class="stringliteral"> - extract the connection data from the magic packet and return</span></div>
<div class="line"><span class="lineno"> 50</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 51</span><span class="stringliteral"> @param retry: Count of retry - 0 is infinite (0)</span></div>
<div class="line"><span class="lineno"> 52</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 53</span><span class="stringliteral"> @return True or False&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 54</span> sendPackages = 0</div>
<div class="line"><span class="lineno"> 55</span> <span class="keywordflow">while</span> sendPackages &lt; retry <span class="keywordflow">or</span> retry == 0:</div>
<div class="line"><span class="lineno"> 56</span> <span class="keywordflow">try</span>:</div>
<div class="line"><span class="lineno"> 57</span> logging.debug(<span class="stringliteral">&quot;send magic &lt;BW3-Request&gt; as broadcast - Try: %d&quot;</span>, sendPackages)</div>
<div class="line"><span class="lineno"> 58</span> self._socket.sendto(<span class="stringliteral">&quot;&lt;BW3-Request&gt;&quot;</span>.encode(), (<span class="stringliteral">&#39;255.255.255.255&#39;</span>, self._broadcastPort))</div>
<div class="line"><span class="lineno"> 59</span> sendPackages += 1</div>
<div class="line"><span class="lineno"> 60</span> payload, address = self._socket.recvfrom(1024)</div>
<div class="line"><span class="lineno"> 61</span> payload = str(payload, <span class="stringliteral">&quot;UTF-8&quot;</span>)</div>
<div class="line"><span class="lineno"> 62</span> </div>
<div class="line"><span class="lineno"> 63</span> <span class="keywordflow">if</span> payload.startswith(<span class="stringliteral">&quot;&lt;BW3-Result&gt;&quot;</span>):</div>
<div class="line"><span class="lineno"> 64</span> logging.debug(<span class="stringliteral">&quot;received magic &lt;BW3-Result&gt; from: %s&quot;</span>, address[0])</div>
<div class="line"><span class="lineno"> 65</span> self._serverIP = address[0]</div>
<div class="line"><span class="lineno"> 66</span> self._serverPort = int(payload.split(<span class="stringliteral">&quot;;&quot;</span>)[1])</div>
<div class="line"><span class="lineno"> 67</span> logging.info(<span class="stringliteral">&quot;got connection info from server: %s:%d&quot;</span>, self._serverIP, self._serverPort)</div>
<div class="line"><span class="lineno"> 68</span> <span class="keywordflow">return</span> <span class="keyword">True</span></div>
<div class="line"><span class="lineno"> 69</span> <span class="keywordflow">except</span> socket.timeout: <span class="comment"># nothing received - retry</span></div>
<div class="line"><span class="lineno"> 70</span> logging.debug(<span class="stringliteral">&quot;no magic packet received&quot;</span>)</div>
<div class="line"><span class="lineno"> 71</span> logging.warning(<span class="stringliteral">&quot;cannot fetch connection info after %d tries&quot;</span>, sendPackages)</div>
<div class="line"><span class="lineno"> 72</span> <span class="keywordflow">return</span> <span class="keyword">False</span></div>
<div class="line"><span class="lineno"> 73</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="af35a11a41a256de82a65128fb6be70a3" name="af35a11a41a256de82a65128fb6be70a3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af35a11a41a256de82a65128fb6be70a3">&#9670;&#160;</a></span>serverIP()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">boswatch.network.broadcast.BroadcastClient.serverIP </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Property to get the server IP after successful broadcast. </p>
<div class="fragment"><div class="line"><span class="lineno"> 75</span> <span class="keyword">def </span>serverIP(self):</div>
<div class="line"><span class="lineno"> 76</span> <span class="stringliteral">r&quot;&quot;&quot;!Property to get the server IP after successful broadcast&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 77</span> <span class="keywordflow">return</span> self._serverIP</div>
<div class="line"><span class="lineno"> 78</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="a84e39ca725becf9615d186be8430eb92" name="a84e39ca725becf9615d186be8430eb92"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a84e39ca725becf9615d186be8430eb92">&#9670;&#160;</a></span>serverPort()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">boswatch.network.broadcast.BroadcastClient.serverPort </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Property to get the server Port after successful broadcast. </p>
<div class="fragment"><div class="line"><span class="lineno"> 80</span> <span class="keyword">def </span>serverPort(self):</div>
<div class="line"><span class="lineno"> 81</span> <span class="stringliteral">r&quot;&quot;&quot;!Property to get the server Port after successful broadcast&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 82</span> <span class="keywordflow">return</span> self._serverPort</div>
<div class="line"><span class="lineno"> 83</span> </div>
<div class="line"><span class="lineno"> 84</span> </div>
</div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">Field Documentation</h2>
<a id="acdd370e919a9df510c393bf3cd220760" name="acdd370e919a9df510c393bf3cd220760"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acdd370e919a9df510c393bf3cd220760">&#9670;&#160;</a></span>_broadcastPort</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">boswatch.network.broadcast.BroadcastClient._broadcastPort = port</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a3cdfb326c00a65543c5277f8c0a013af" name="a3cdfb326c00a65543c5277f8c0a013af"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3cdfb326c00a65543c5277f8c0a013af">&#9670;&#160;</a></span>_serverIP</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">boswatch.network.broadcast.BroadcastClient._serverIP = &quot;&quot;</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a52906f01625de0d1a89331265a4ea2c4" name="a52906f01625de0d1a89331265a4ea2c4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a52906f01625de0d1a89331265a4ea2c4">&#9670;&#160;</a></span>_serverPort</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">boswatch.network.broadcast.BroadcastClient._serverPort = 0</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ae5551bfa3d1cc9957c97869ded23fe14" name="ae5551bfa3d1cc9957c97869ded23fe14"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae5551bfa3d1cc9957c97869ded23fe14">&#9670;&#160;</a></span>_socket</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">boswatch.network.broadcast.BroadcastClient._socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespaceboswatch.html">boswatch</a></li><li class="navelem"><a class="el" href="namespaceboswatch_1_1network.html">network</a></li><li class="navelem"><a class="el" href="namespaceboswatch_1_1network_1_1broadcast.html">broadcast</a></li><li class="navelem"><a class="el" href="classboswatch_1_1network_1_1broadcast_1_1_broadcast_client.html">BroadcastClient</a></li>
<li class="footer">Generated on Wed Jun 11 2025 08:24:06 for BOSWatch 3 by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
</ul>
</div>
</body>
</html>

View file

@ -0,0 +1,11 @@
var classboswatch_1_1network_1_1broadcast_1_1_broadcast_client =
[
[ "__init__", "classboswatch_1_1network_1_1broadcast_1_1_broadcast_client.html#ab4294fb84142b6c5c7897adbac664bb1", null ],
[ "getConnInfo", "classboswatch_1_1network_1_1broadcast_1_1_broadcast_client.html#a020c629a993829463a215a58ddcfac21", null ],
[ "serverIP", "classboswatch_1_1network_1_1broadcast_1_1_broadcast_client.html#af35a11a41a256de82a65128fb6be70a3", null ],
[ "serverPort", "classboswatch_1_1network_1_1broadcast_1_1_broadcast_client.html#a84e39ca725becf9615d186be8430eb92", null ],
[ "_broadcastPort", "classboswatch_1_1network_1_1broadcast_1_1_broadcast_client.html#acdd370e919a9df510c393bf3cd220760", null ],
[ "_serverIP", "classboswatch_1_1network_1_1broadcast_1_1_broadcast_client.html#a3cdfb326c00a65543c5277f8c0a013af", null ],
[ "_serverPort", "classboswatch_1_1network_1_1broadcast_1_1_broadcast_client.html#a52906f01625de0d1a89331265a4ea2c4", null ],
[ "_socket", "classboswatch_1_1network_1_1broadcast_1_1_broadcast_client.html#ae5551bfa3d1cc9957c97869ded23fe14", null ]
];

View file

@ -0,0 +1,513 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.12.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>BOSWatch 3: boswatch.network.broadcast.BroadcastServer Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">BOSWatch 3
</div>
<div id="projectbrief">Python Script to receive and decode German BOS Information with rtl_fm and multimon-NG</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.12.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('classboswatch_1_1network_1_1broadcast_1_1_broadcast_server.html',''); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-attribs">Data Fields</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> &#124;
<a href="#pro-attribs">Protected Attributes</a> </div>
<div class="headertitle"><div class="title">boswatch.network.broadcast.BroadcastServer Class Reference</div></div>
</div><!--header-->
<div class="contents">
<p><a class="el" href="classboswatch_1_1network_1_1broadcast_1_1_broadcast_server.html" title="BroadcastServer class.">BroadcastServer</a> class.
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:ae93a0a17a87977e5e675361f513c18d6" id="r_ae93a0a17a87977e5e675361f513c18d6"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ae93a0a17a87977e5e675361f513c18d6">__init__</a> (self, servePort=8080, listenPort=5000)</td></tr>
<tr class="memdesc:ae93a0a17a87977e5e675361f513c18d6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create an <a class="el" href="classboswatch_1_1network_1_1broadcast_1_1_broadcast_server.html" title="BroadcastServer class.">BroadcastServer</a> instance. <br /></td></tr>
<tr class="separator:ae93a0a17a87977e5e675361f513c18d6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa4fcca86240231413885fcd050744152" id="r_aa4fcca86240231413885fcd050744152"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aa4fcca86240231413885fcd050744152">__del__</a> (self)</td></tr>
<tr class="separator:aa4fcca86240231413885fcd050744152"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9578bab3fdb883c6de357bf513884b2c" id="r_a9578bab3fdb883c6de357bf513884b2c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a9578bab3fdb883c6de357bf513884b2c">start</a> (self)</td></tr>
<tr class="memdesc:a9578bab3fdb883c6de357bf513884b2c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Start the broadcast server in a new thread. <br /></td></tr>
<tr class="separator:a9578bab3fdb883c6de357bf513884b2c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad4c950fc28b36e52da565856ab61866c" id="r_ad4c950fc28b36e52da565856ab61866c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ad4c950fc28b36e52da565856ab61866c">stop</a> (self)</td></tr>
<tr class="memdesc:ad4c950fc28b36e52da565856ab61866c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Stop the broadcast server. <br /></td></tr>
<tr class="separator:ad4c950fc28b36e52da565856ab61866c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9fe9bb49f6d72bacdddee6436de7ec91" id="r_a9fe9bb49f6d72bacdddee6436de7ec91"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a9fe9bb49f6d72bacdddee6436de7ec91">isRunning</a> (self)</td></tr>
<tr class="memdesc:a9fe9bb49f6d72bacdddee6436de7ec91"><td class="mdescLeft">&#160;</td><td class="mdescRight">Property of broadcast server running state. <br /></td></tr>
<tr class="separator:a9fe9bb49f6d72bacdddee6436de7ec91"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
Data Fields</h2></td></tr>
<tr class="memitem:abd218c599104e5483936cc64ed2c1eb0" id="r_abd218c599104e5483936cc64ed2c1eb0"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#abd218c599104e5483936cc64ed2c1eb0">isRunning</a></td></tr>
<tr class="separator:abd218c599104e5483936cc64ed2c1eb0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a74f239839968faaed59206bc4f02cdff" id="r_a74f239839968faaed59206bc4f02cdff"><td class="memItemLeft" align="right" valign="top">str&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a74f239839968faaed59206bc4f02cdff">_serverThread</a> = &quot;BroadServ&quot;</td></tr>
<tr class="separator:a74f239839968faaed59206bc4f02cdff"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pro-methods" name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr class="memitem:a5155943e9eb814fa38e30838998b0c97" id="r_a5155943e9eb814fa38e30838998b0c97"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a5155943e9eb814fa38e30838998b0c97">_listen</a> (self)</td></tr>
<tr class="memdesc:a5155943e9eb814fa38e30838998b0c97"><td class="mdescLeft">&#160;</td><td class="mdescRight">Broadcast server worker thread. <br /></td></tr>
<tr class="separator:a5155943e9eb814fa38e30838998b0c97"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pro-attribs" name="pro-attribs"></a>
Protected Attributes</h2></td></tr>
<tr class="memitem:a896370fa8a3adca5e0435d3433a5bfcf" id="r_a896370fa8a3adca5e0435d3433a5bfcf"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a896370fa8a3adca5e0435d3433a5bfcf">_socket</a> = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)</td></tr>
<tr class="separator:a896370fa8a3adca5e0435d3433a5bfcf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5181654894e310d20de83207e4fc6d07" id="r_a5181654894e310d20de83207e4fc6d07"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a5181654894e310d20de83207e4fc6d07">_serverThread</a> = None</td></tr>
<tr class="separator:a5181654894e310d20de83207e4fc6d07"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adeecb8b6c9efbd9752657bc23c0abadb" id="r_adeecb8b6c9efbd9752657bc23c0abadb"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#adeecb8b6c9efbd9752657bc23c0abadb">_serverShutdown</a> = False</td></tr>
<tr class="separator:adeecb8b6c9efbd9752657bc23c0abadb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6d220c67297313c9c3523a8aac9669e9" id="r_a6d220c67297313c9c3523a8aac9669e9"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a6d220c67297313c9c3523a8aac9669e9">_servePort</a> = servePort</td></tr>
<tr class="separator:a6d220c67297313c9c3523a8aac9669e9"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p><a class="el" href="classboswatch_1_1network_1_1broadcast_1_1_broadcast_server.html" title="BroadcastServer class.">BroadcastServer</a> class. </p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="ae93a0a17a87977e5e675361f513c18d6" name="ae93a0a17a87977e5e675361f513c18d6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae93a0a17a87977e5e675361f513c18d6">&#9670;&#160;</a></span>__init__()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">boswatch.network.broadcast.BroadcastServer.__init__ </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>servePort</em></span><span class="paramdefsep"> = </span><span class="paramdefval">8080</span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>listenPort</em></span><span class="paramdefsep"> = </span><span class="paramdefval">5000</span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Create an <a class="el" href="classboswatch_1_1network_1_1broadcast_1_1_broadcast_server.html" title="BroadcastServer class.">BroadcastServer</a> instance. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">servePort</td><td>port to serve as connection info (8080) </td></tr>
<tr><td class="paramname">listenPort</td><td>port to listen for broadcast packets (5000) </td></tr>
</table>
</dd>
</dl>
<div class="fragment"><div class="line"><span class="lineno"> 88</span> <span class="keyword">def </span>__init__(self, servePort=8080, listenPort=5000):</div>
<div class="line"><span class="lineno"> 89</span> <span class="stringliteral">r&quot;&quot;&quot;!Create an BroadcastServer instance</span></div>
<div class="line"><span class="lineno"> 90</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 91</span><span class="stringliteral"> @param servePort: port to serve as connection info (8080)</span></div>
<div class="line"><span class="lineno"> 92</span><span class="stringliteral"> @param listenPort: port to listen for broadcast packets (5000)&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 93</span> self._socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)</div>
<div class="line"><span class="lineno"> 94</span> self._socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)</div>
<div class="line"><span class="lineno"> 95</span> self._socket.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)</div>
<div class="line"><span class="lineno"> 96</span> self._socket.settimeout(2)</div>
<div class="line"><span class="lineno"> 97</span> self._socket.bind((<span class="stringliteral">&#39;&#39;</span>, listenPort))</div>
<div class="line"><span class="lineno"> 98</span> self._serverThread = <span class="keywordtype">None</span></div>
<div class="line"><span class="lineno"> 99</span> self._serverShutdown = <span class="keyword">False</span></div>
<div class="line"><span class="lineno"> 100</span> self._servePort = servePort</div>
<div class="line"><span class="lineno"> 101</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="aa4fcca86240231413885fcd050744152" name="aa4fcca86240231413885fcd050744152"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa4fcca86240231413885fcd050744152">&#9670;&#160;</a></span>__del__()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">boswatch.network.broadcast.BroadcastServer.__del__ </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<div class="fragment"><div class="line"><span class="lineno"> 102</span> <span class="keyword">def </span>__del__(self): <span class="comment"># pragma: no cover</span></div>
<div class="line"><span class="lineno"> 103</span> <span class="keywordflow">if</span> self.isRunning:</div>
<div class="line"><span class="lineno"> 104</span> self.stop()</div>
<div class="line"><span class="lineno"> 105</span> <span class="keywordflow">while</span> self.isRunning:</div>
<div class="line"><span class="lineno"> 106</span> <span class="keywordflow">pass</span></div>
<div class="line"><span class="lineno"> 107</span> </div>
</div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a9578bab3fdb883c6de357bf513884b2c" name="a9578bab3fdb883c6de357bf513884b2c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9578bab3fdb883c6de357bf513884b2c">&#9670;&#160;</a></span>start()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">boswatch.network.broadcast.BroadcastServer.start </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Start the broadcast server in a new thread. </p>
<dl class="section return"><dt>Returns</dt><dd>True or False </dd></dl>
<div class="fragment"><div class="line"><span class="lineno"> 108</span> <span class="keyword">def </span>start(self):</div>
<div class="line"><span class="lineno"> 109</span> <span class="stringliteral">r&quot;&quot;&quot;!Start the broadcast server in a new thread</span></div>
<div class="line"><span class="lineno"> 110</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 111</span><span class="stringliteral"> @return True or False&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 112</span> <span class="keywordflow">if</span> <span class="keywordflow">not</span> self.isRunning:</div>
<div class="line"><span class="lineno"> 113</span> logging.debug(<span class="stringliteral">&quot;start udp broadcast server&quot;</span>)</div>
<div class="line"><span class="lineno"> 114</span> self._serverThread = threading.Thread(target=self._listen)</div>
<div class="line"><span class="lineno"> 115</span> self._serverThread.name = <span class="stringliteral">&quot;BroadServ&quot;</span></div>
<div class="line"><span class="lineno"> 116</span> self._serverThread.daemon = <span class="keyword">True</span></div>
<div class="line"><span class="lineno"> 117</span> self._serverShutdown = <span class="keyword">False</span></div>
<div class="line"><span class="lineno"> 118</span> self._serverThread.start()</div>
<div class="line"><span class="lineno"> 119</span> <span class="keywordflow">return</span> <span class="keyword">True</span></div>
<div class="line"><span class="lineno"> 120</span> logging.warning(<span class="stringliteral">&quot;udp broadcast server always started&quot;</span>)</div>
<div class="line"><span class="lineno"> 121</span> <span class="keywordflow">return</span> <span class="keyword">True</span></div>
<div class="line"><span class="lineno"> 122</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="ad4c950fc28b36e52da565856ab61866c" name="ad4c950fc28b36e52da565856ab61866c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad4c950fc28b36e52da565856ab61866c">&#9670;&#160;</a></span>stop()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">boswatch.network.broadcast.BroadcastServer.stop </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Stop the broadcast server. </p>
<p>Due to the timeout of the socket, stopping the thread can be delayed by two seconds. But function returns immediately.</p>
<dl class="section return"><dt>Returns</dt><dd>True or False </dd></dl>
<div class="fragment"><div class="line"><span class="lineno"> 123</span> <span class="keyword">def </span>stop(self):</div>
<div class="line"><span class="lineno"> 124</span> <span class="stringliteral">r&quot;&quot;&quot;!Stop the broadcast server</span></div>
<div class="line"><span class="lineno"> 125</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 126</span><span class="stringliteral"> Due to the timeout of the socket,</span></div>
<div class="line"><span class="lineno"> 127</span><span class="stringliteral"> stopping the thread can be delayed by two seconds.</span></div>
<div class="line"><span class="lineno"> 128</span><span class="stringliteral"> But function returns immediately.</span></div>
<div class="line"><span class="lineno"> 129</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 130</span><span class="stringliteral"> @return True or False&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 131</span> </div>
<div class="line"><span class="lineno"> 132</span> <span class="keywordflow">if</span> self.isRunning:</div>
<div class="line"><span class="lineno"> 133</span> logging.debug(<span class="stringliteral">&quot;stop udp broadcast server&quot;</span>)</div>
<div class="line"><span class="lineno"> 134</span> self._serverShutdown = <span class="keyword">True</span></div>
<div class="line"><span class="lineno"> 135</span> <span class="keywordflow">return</span> <span class="keyword">True</span></div>
<div class="line"><span class="lineno"> 136</span> <span class="keywordflow">else</span>:</div>
<div class="line"><span class="lineno"> 137</span> logging.warning(<span class="stringliteral">&quot;udp broadcast server always stopped&quot;</span>)</div>
<div class="line"><span class="lineno"> 138</span> <span class="keywordflow">return</span> <span class="keyword">True</span></div>
<div class="line"><span class="lineno"> 139</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="a5155943e9eb814fa38e30838998b0c97" name="a5155943e9eb814fa38e30838998b0c97"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5155943e9eb814fa38e30838998b0c97">&#9670;&#160;</a></span>_listen()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">boswatch.network.broadcast.BroadcastServer._listen </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Broadcast server worker thread. </p>
<p>This function listen for magic packets on broadcast address and send the connection info to the clients.</p>
<ul>
<li>listen for the magic packet &lt;BW-Request&gt;</li>
<li>send connection info in an &lt;BW-Result&gt; macig packet </li>
</ul>
<div class="fragment"><div class="line"><span class="lineno"> 140</span> <span class="keyword">def </span>_listen(self):</div>
<div class="line"><span class="lineno"> 141</span> <span class="stringliteral">r&quot;&quot;&quot;!Broadcast server worker thread</span></div>
<div class="line"><span class="lineno"> 142</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 143</span><span class="stringliteral"> This function listen for magic packets on broadcast</span></div>
<div class="line"><span class="lineno"> 144</span><span class="stringliteral"> address and send the connection info to the clients.</span></div>
<div class="line"><span class="lineno"> 145</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 146</span><span class="stringliteral"> - listen for the magic packet &lt;BW-Request&gt;</span></div>
<div class="line"><span class="lineno"> 147</span><span class="stringliteral"> - send connection info in an &lt;BW-Result&gt; macig packet&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 148</span> logging.debug(<span class="stringliteral">&quot;start listening for magic&quot;</span>)</div>
<div class="line"><span class="lineno"> 149</span> <span class="keywordflow">while</span> <span class="keywordflow">not</span> self._serverShutdown:</div>
<div class="line"><span class="lineno"> 150</span> <span class="keywordflow">try</span>:</div>
<div class="line"><span class="lineno"> 151</span> payload, address = self._socket.recvfrom(1024)</div>
<div class="line"><span class="lineno"> 152</span> payload = str(payload, <span class="stringliteral">&quot;UTF-8&quot;</span>)</div>
<div class="line"><span class="lineno"> 153</span> <span class="keywordflow">if</span> payload == <span class="stringliteral">&quot;&lt;BW3-Request&gt;&quot;</span>:</div>
<div class="line"><span class="lineno"> 154</span> logging.debug(<span class="stringliteral">&quot;received magic &lt;BW3-Request&gt; from: %s&quot;</span>, address[0])</div>
<div class="line"><span class="lineno"> 155</span> logging.info(<span class="stringliteral">&quot;send connection info in magic &lt;BW3-Result&gt; to: %s&quot;</span>, address[0])</div>
<div class="line"><span class="lineno"> 156</span> self._socket.sendto(<span class="stringliteral">&quot;&lt;BW3-Result&gt;;&quot;</span>.encode() + str(self._servePort).encode(), address)</div>
<div class="line"><span class="lineno"> 157</span> <span class="keywordflow">except</span> socket.timeout:</div>
<div class="line"><span class="lineno"> 158</span> <span class="keywordflow">continue</span> <span class="comment"># timeout is accepted (not block at recvfrom())</span></div>
<div class="line"><span class="lineno"> 159</span> self._serverThread = <span class="keywordtype">None</span></div>
<div class="line"><span class="lineno"> 160</span> logging.debug(<span class="stringliteral">&quot;udp broadcast server stopped&quot;</span>)</div>
<div class="line"><span class="lineno"> 161</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="a9fe9bb49f6d72bacdddee6436de7ec91" name="a9fe9bb49f6d72bacdddee6436de7ec91"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9fe9bb49f6d72bacdddee6436de7ec91">&#9670;&#160;</a></span>isRunning()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">boswatch.network.broadcast.BroadcastServer.isRunning </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Property of broadcast server running state. </p>
<div class="fragment"><div class="line"><span class="lineno"> 163</span> <span class="keyword">def </span>isRunning(self):</div>
<div class="line"><span class="lineno"> 164</span> <span class="stringliteral">r&quot;&quot;&quot;!Property of broadcast server running state&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 165</span> <span class="keywordflow">if</span> self._serverThread:</div>
<div class="line"><span class="lineno"> 166</span> <span class="keywordflow">return</span> <span class="keyword">True</span></div>
<div class="line"><span class="lineno"> 167</span> <span class="keywordflow">return</span> <span class="keyword">False</span></div>
</div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">Field Documentation</h2>
<a id="a896370fa8a3adca5e0435d3433a5bfcf" name="a896370fa8a3adca5e0435d3433a5bfcf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a896370fa8a3adca5e0435d3433a5bfcf">&#9670;&#160;</a></span>_socket</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">boswatch.network.broadcast.BroadcastServer._socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a5181654894e310d20de83207e4fc6d07" name="a5181654894e310d20de83207e4fc6d07"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5181654894e310d20de83207e4fc6d07">&#9670;&#160;</a></span>_serverThread <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">boswatch.network.broadcast.BroadcastServer._serverThread = None</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="adeecb8b6c9efbd9752657bc23c0abadb" name="adeecb8b6c9efbd9752657bc23c0abadb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adeecb8b6c9efbd9752657bc23c0abadb">&#9670;&#160;</a></span>_serverShutdown</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">boswatch.network.broadcast.BroadcastServer._serverShutdown = False</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a6d220c67297313c9c3523a8aac9669e9" name="a6d220c67297313c9c3523a8aac9669e9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6d220c67297313c9c3523a8aac9669e9">&#9670;&#160;</a></span>_servePort</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">boswatch.network.broadcast.BroadcastServer._servePort = servePort</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="abd218c599104e5483936cc64ed2c1eb0" name="abd218c599104e5483936cc64ed2c1eb0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abd218c599104e5483936cc64ed2c1eb0">&#9670;&#160;</a></span>isRunning</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">boswatch.network.broadcast.BroadcastServer.isRunning</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a74f239839968faaed59206bc4f02cdff" name="a74f239839968faaed59206bc4f02cdff"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a74f239839968faaed59206bc4f02cdff">&#9670;&#160;</a></span>_serverThread <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">str boswatch.network.broadcast.BroadcastServer._serverThread = &quot;BroadServ&quot;</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespaceboswatch.html">boswatch</a></li><li class="navelem"><a class="el" href="namespaceboswatch_1_1network.html">network</a></li><li class="navelem"><a class="el" href="namespaceboswatch_1_1network_1_1broadcast.html">broadcast</a></li><li class="navelem"><a class="el" href="classboswatch_1_1network_1_1broadcast_1_1_broadcast_server.html">BroadcastServer</a></li>
<li class="footer">Generated on Wed Jun 11 2025 08:24:06 for BOSWatch 3 by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
</ul>
</div>
</body>
</html>

View file

@ -0,0 +1,15 @@
var classboswatch_1_1network_1_1broadcast_1_1_broadcast_server =
[
[ "__init__", "classboswatch_1_1network_1_1broadcast_1_1_broadcast_server.html#ae93a0a17a87977e5e675361f513c18d6", null ],
[ "__del__", "classboswatch_1_1network_1_1broadcast_1_1_broadcast_server.html#aa4fcca86240231413885fcd050744152", null ],
[ "start", "classboswatch_1_1network_1_1broadcast_1_1_broadcast_server.html#a9578bab3fdb883c6de357bf513884b2c", null ],
[ "stop", "classboswatch_1_1network_1_1broadcast_1_1_broadcast_server.html#ad4c950fc28b36e52da565856ab61866c", null ],
[ "_listen", "classboswatch_1_1network_1_1broadcast_1_1_broadcast_server.html#a5155943e9eb814fa38e30838998b0c97", null ],
[ "isRunning", "classboswatch_1_1network_1_1broadcast_1_1_broadcast_server.html#a9fe9bb49f6d72bacdddee6436de7ec91", null ],
[ "_socket", "classboswatch_1_1network_1_1broadcast_1_1_broadcast_server.html#a896370fa8a3adca5e0435d3433a5bfcf", null ],
[ "_serverThread", "classboswatch_1_1network_1_1broadcast_1_1_broadcast_server.html#a5181654894e310d20de83207e4fc6d07", null ],
[ "_serverShutdown", "classboswatch_1_1network_1_1broadcast_1_1_broadcast_server.html#adeecb8b6c9efbd9752657bc23c0abadb", null ],
[ "_servePort", "classboswatch_1_1network_1_1broadcast_1_1_broadcast_server.html#a6d220c67297313c9c3523a8aac9669e9", null ],
[ "isRunning", "classboswatch_1_1network_1_1broadcast_1_1_broadcast_server.html#abd218c599104e5483936cc64ed2c1eb0", null ],
[ "_serverThread", "classboswatch_1_1network_1_1broadcast_1_1_broadcast_server.html#a74f239839968faaed59206bc4f02cdff", null ]
];

View file

@ -0,0 +1,461 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.12.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>BOSWatch 3: boswatch.network.client.TCPClient Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">BOSWatch 3
</div>
<div id="projectbrief">Python Script to receive and decode German BOS Information with rtl_fm and multimon-NG</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.12.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('classboswatch_1_1network_1_1client_1_1_t_c_p_client.html',''); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-attribs">Data Fields</a> &#124;
<a href="#pro-attribs">Protected Attributes</a> </div>
<div class="headertitle"><div class="title">boswatch.network.client.TCPClient Class Reference</div></div>
</div><!--header-->
<div class="contents">
<p>TCP client class.
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a52dad8d55fb35e07756a5a779deff7fe" id="r_a52dad8d55fb35e07756a5a779deff7fe"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a52dad8d55fb35e07756a5a779deff7fe">__init__</a> (self, timeout=3)</td></tr>
<tr class="memdesc:a52dad8d55fb35e07756a5a779deff7fe"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a new instance. <br /></td></tr>
<tr class="separator:a52dad8d55fb35e07756a5a779deff7fe"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9cb1cfa9fa1f3e5aeb25329a2406ea50" id="r_a9cb1cfa9fa1f3e5aeb25329a2406ea50"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a9cb1cfa9fa1f3e5aeb25329a2406ea50">connect</a> (self, host=&quot;localhost&quot;, port=8080)</td></tr>
<tr class="memdesc:a9cb1cfa9fa1f3e5aeb25329a2406ea50"><td class="mdescLeft">&#160;</td><td class="mdescRight">Connect to the server. <br /></td></tr>
<tr class="separator:a9cb1cfa9fa1f3e5aeb25329a2406ea50"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac8a3ce9fefc7b8e0b2fbf653f484aac4" id="r_ac8a3ce9fefc7b8e0b2fbf653f484aac4"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ac8a3ce9fefc7b8e0b2fbf653f484aac4">disconnect</a> (self)</td></tr>
<tr class="memdesc:ac8a3ce9fefc7b8e0b2fbf653f484aac4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Disconnect from the server. <br /></td></tr>
<tr class="separator:ac8a3ce9fefc7b8e0b2fbf653f484aac4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0b220cacacdf690617645c7fefdc4f98" id="r_a0b220cacacdf690617645c7fefdc4f98"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a0b220cacacdf690617645c7fefdc4f98">transmit</a> (self, data)</td></tr>
<tr class="memdesc:a0b220cacacdf690617645c7fefdc4f98"><td class="mdescLeft">&#160;</td><td class="mdescRight">Send a data packet to the server. <br /></td></tr>
<tr class="separator:a0b220cacacdf690617645c7fefdc4f98"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab38ae11d876aed47d12c7f753601b67f" id="r_ab38ae11d876aed47d12c7f753601b67f"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ab38ae11d876aed47d12c7f753601b67f">receive</a> (self, timeout=1)</td></tr>
<tr class="memdesc:ab38ae11d876aed47d12c7f753601b67f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Receive data from the server. <br /></td></tr>
<tr class="separator:ab38ae11d876aed47d12c7f753601b67f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae913438a3d6370473b87e323fa1afa9b" id="r_ae913438a3d6370473b87e323fa1afa9b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ae913438a3d6370473b87e323fa1afa9b">isConnected</a> (self)</td></tr>
<tr class="memdesc:ae913438a3d6370473b87e323fa1afa9b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Property of client connected state. <br /></td></tr>
<tr class="separator:ae913438a3d6370473b87e323fa1afa9b"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
Data Fields</h2></td></tr>
<tr class="memitem:a22e2077708bcd0526c1628b24569a6f9" id="r_a22e2077708bcd0526c1628b24569a6f9"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a22e2077708bcd0526c1628b24569a6f9">isConnected</a></td></tr>
<tr class="separator:a22e2077708bcd0526c1628b24569a6f9"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pro-attribs" name="pro-attribs"></a>
Protected Attributes</h2></td></tr>
<tr class="memitem:a085df370df1ad97a2ea2b9a510590721" id="r_a085df370df1ad97a2ea2b9a510590721"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a085df370df1ad97a2ea2b9a510590721">_sock</a> = socket.socket(socket.AF_INET, socket.SOCK_STREAM)</td></tr>
<tr class="separator:a085df370df1ad97a2ea2b9a510590721"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>TCP client class. </p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a52dad8d55fb35e07756a5a779deff7fe" name="a52dad8d55fb35e07756a5a779deff7fe"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a52dad8d55fb35e07756a5a779deff7fe">&#9670;&#160;</a></span>__init__()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">boswatch.network.client.TCPClient.__init__ </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>timeout</em></span><span class="paramdefsep"> = </span><span class="paramdefval">3</span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Create a new instance. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">timeout</td><td>timeout for the client in sec. (3) </td></tr>
</table>
</dd>
</dl>
<div class="fragment"><div class="line"><span class="lineno"> 29</span> <span class="keyword">def </span>__init__(self, timeout=3):</div>
<div class="line"><span class="lineno"> 30</span> <span class="stringliteral">r&quot;&quot;&quot;!Create a new instance</span></div>
<div class="line"><span class="lineno"> 31</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 32</span><span class="stringliteral"> @param timeout: timeout for the client in sec. (3)&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 33</span> socket.setdefaulttimeout(timeout)</div>
<div class="line"><span class="lineno"> 34</span> self._sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)</div>
<div class="line"><span class="lineno"> 35</span> </div>
</div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a9cb1cfa9fa1f3e5aeb25329a2406ea50" name="a9cb1cfa9fa1f3e5aeb25329a2406ea50"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9cb1cfa9fa1f3e5aeb25329a2406ea50">&#9670;&#160;</a></span>connect()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">boswatch.network.client.TCPClient.connect </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>host</em></span><span class="paramdefsep"> = </span><span class="paramdefval">&quot;localhost&quot;</span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>port</em></span><span class="paramdefsep"> = </span><span class="paramdefval">8080</span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Connect to the server. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">host</td><td>Server IP address ("localhost") </td></tr>
<tr><td class="paramname">port</td><td>Server Port (8080) </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>True or False </dd></dl>
<div class="fragment"><div class="line"><span class="lineno"> 36</span> <span class="keyword">def </span>connect(self, host=&quot;localhost&quot;, port=8080):</div>
<div class="line"><span class="lineno"> 37</span> <span class="stringliteral">r&quot;&quot;&quot;!Connect to the server</span></div>
<div class="line"><span class="lineno"> 38</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 39</span><span class="stringliteral"> @param host: Server IP address (&quot;localhost&quot;)</span></div>
<div class="line"><span class="lineno"> 40</span><span class="stringliteral"> @param port: Server Port (8080)</span></div>
<div class="line"><span class="lineno"> 41</span><span class="stringliteral"> @return True or False&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 42</span> <span class="keywordflow">try</span>:</div>
<div class="line"><span class="lineno"> 43</span> <span class="keywordflow">if</span> <span class="keywordflow">not</span> self.isConnected:</div>
<div class="line"><span class="lineno"> 44</span> self._sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)</div>
<div class="line"><span class="lineno"> 45</span> self._sock.connect((host, port))</div>
<div class="line"><span class="lineno"> 46</span> logging.debug(<span class="stringliteral">&quot;connected to %s:%s&quot;</span>, host, port)</div>
<div class="line"><span class="lineno"> 47</span> <span class="keywordflow">return</span> <span class="keyword">True</span></div>
<div class="line"><span class="lineno"> 48</span> logging.warning(<span class="stringliteral">&quot;client always connected&quot;</span>)</div>
<div class="line"><span class="lineno"> 49</span> <span class="keywordflow">return</span> <span class="keyword">True</span></div>
<div class="line"><span class="lineno"> 50</span> <span class="keywordflow">except</span> socket.error <span class="keyword">as</span> e:</div>
<div class="line"><span class="lineno"> 51</span> logging.error(e)</div>
<div class="line"><span class="lineno"> 52</span> <span class="keywordflow">return</span> <span class="keyword">False</span></div>
<div class="line"><span class="lineno"> 53</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="ac8a3ce9fefc7b8e0b2fbf653f484aac4" name="ac8a3ce9fefc7b8e0b2fbf653f484aac4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac8a3ce9fefc7b8e0b2fbf653f484aac4">&#9670;&#160;</a></span>disconnect()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">boswatch.network.client.TCPClient.disconnect </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Disconnect from the server. </p>
<dl class="section return"><dt>Returns</dt><dd>True or False </dd></dl>
<div class="fragment"><div class="line"><span class="lineno"> 54</span> <span class="keyword">def </span>disconnect(self):</div>
<div class="line"><span class="lineno"> 55</span> <span class="stringliteral">r&quot;&quot;&quot;!Disconnect from the server</span></div>
<div class="line"><span class="lineno"> 56</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 57</span><span class="stringliteral"> @return True or False&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 58</span> <span class="keywordflow">try</span>:</div>
<div class="line"><span class="lineno"> 59</span> <span class="keywordflow">if</span> self.isConnected:</div>
<div class="line"><span class="lineno"> 60</span> self._sock.shutdown(socket.SHUT_RDWR)</div>
<div class="line"><span class="lineno"> 61</span> self._sock.close()</div>
<div class="line"><span class="lineno"> 62</span> logging.debug(<span class="stringliteral">&quot;disconnected&quot;</span>)</div>
<div class="line"><span class="lineno"> 63</span> <span class="keywordflow">return</span> <span class="keyword">True</span></div>
<div class="line"><span class="lineno"> 64</span> logging.warning(<span class="stringliteral">&quot;client always disconnected&quot;</span>)</div>
<div class="line"><span class="lineno"> 65</span> <span class="keywordflow">return</span> <span class="keyword">True</span></div>
<div class="line"><span class="lineno"> 66</span> <span class="keywordflow">except</span> socket.error <span class="keyword">as</span> e:</div>
<div class="line"><span class="lineno"> 67</span> logging.error(e)</div>
<div class="line"><span class="lineno"> 68</span> <span class="keywordflow">return</span> <span class="keyword">False</span></div>
<div class="line"><span class="lineno"> 69</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="a0b220cacacdf690617645c7fefdc4f98" name="a0b220cacacdf690617645c7fefdc4f98"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0b220cacacdf690617645c7fefdc4f98">&#9670;&#160;</a></span>transmit()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">boswatch.network.client.TCPClient.transmit </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>data</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Send a data packet to the server. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">data</td><td>data to send to the server </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>True or False </dd></dl>
<div class="fragment"><div class="line"><span class="lineno"> 70</span> <span class="keyword">def </span>transmit(self, data):</div>
<div class="line"><span class="lineno"> 71</span> <span class="stringliteral">r&quot;&quot;&quot;!Send a data packet to the server</span></div>
<div class="line"><span class="lineno"> 72</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 73</span><span class="stringliteral"> @param data: data to send to the server</span></div>
<div class="line"><span class="lineno"> 74</span><span class="stringliteral"> @return True or False&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 75</span> <span class="keywordflow">try</span>:</div>
<div class="line"><span class="lineno"> 76</span> logging.debug(<span class="stringliteral">&quot;transmitting:\n%s&quot;</span>, data)</div>
<div class="line"><span class="lineno"> 77</span> data = data.encode(<span class="stringliteral">&quot;utf-8&quot;</span>)</div>
<div class="line"><span class="lineno"> 78</span> header = str(len(data)).ljust(HEADERSIZE).encode(<span class="stringliteral">&quot;utf-8&quot;</span>)</div>
<div class="line"><span class="lineno"> 79</span> self._sock.sendall(header + data)</div>
<div class="line"><span class="lineno"> 80</span> logging.debug(<span class="stringliteral">&quot;transmitted...&quot;</span>)</div>
<div class="line"><span class="lineno"> 81</span> <span class="keywordflow">return</span> <span class="keyword">True</span></div>
<div class="line"><span class="lineno"> 82</span> <span class="keywordflow">except</span> socket.error <span class="keyword">as</span> e:</div>
<div class="line"><span class="lineno"> 83</span> logging.error(e)</div>
<div class="line"><span class="lineno"> 84</span> <span class="keywordflow">return</span> <span class="keyword">False</span></div>
<div class="line"><span class="lineno"> 85</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="ab38ae11d876aed47d12c7f753601b67f" name="ab38ae11d876aed47d12c7f753601b67f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab38ae11d876aed47d12c7f753601b67f">&#9670;&#160;</a></span>receive()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">boswatch.network.client.TCPClient.receive </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>timeout</em></span><span class="paramdefsep"> = </span><span class="paramdefval">1</span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Receive data from the server. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">timeout</td><td>to wait for incoming data in seconds </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>received data </dd></dl>
<div class="fragment"><div class="line"><span class="lineno"> 86</span> <span class="keyword">def </span>receive(self, timeout=1):</div>
<div class="line"><span class="lineno"> 87</span> <span class="stringliteral">r&quot;&quot;&quot;!Receive data from the server</span></div>
<div class="line"><span class="lineno"> 88</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 89</span><span class="stringliteral"> @param timeout: to wait for incoming data in seconds</span></div>
<div class="line"><span class="lineno"> 90</span><span class="stringliteral"> @return received data&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 91</span> <span class="keywordflow">try</span>:</div>
<div class="line"><span class="lineno"> 92</span> read, _, _ = select.select([self._sock], [], [], timeout)</div>
<div class="line"><span class="lineno"> 93</span> <span class="keywordflow">if</span> <span class="keywordflow">not</span> read: <span class="comment"># check if there is something to read</span></div>
<div class="line"><span class="lineno"> 94</span> <span class="keywordflow">return</span> <span class="keyword">False</span></div>
<div class="line"><span class="lineno"> 95</span> </div>
<div class="line"><span class="lineno"> 96</span> header = self._sock.recv(HEADERSIZE).decode(<span class="stringliteral">&quot;utf-8&quot;</span>)</div>
<div class="line"><span class="lineno"> 97</span> <span class="keywordflow">if</span> <span class="keywordflow">not</span> len(header): <span class="comment"># check if there data</span></div>
<div class="line"><span class="lineno"> 98</span> <span class="keywordflow">return</span> <span class="keyword">False</span></div>
<div class="line"><span class="lineno"> 99</span> </div>
<div class="line"><span class="lineno"> 100</span> length = int(header.strip())</div>
<div class="line"><span class="lineno"> 101</span> received = self._sock.recv(length).decode(<span class="stringliteral">&quot;utf-8&quot;</span>)</div>
<div class="line"><span class="lineno"> 102</span> </div>
<div class="line"><span class="lineno"> 103</span> logging.debug(<span class="stringliteral">&quot;recv header: &#39;%s&#39;&quot;</span>, header)</div>
<div class="line"><span class="lineno"> 104</span> logging.debug(<span class="stringliteral">&quot;received %d bytes: %s&quot;</span>, len(received), received)</div>
<div class="line"><span class="lineno"> 105</span> <span class="keywordflow">return</span> received</div>
<div class="line"><span class="lineno"> 106</span> <span class="keywordflow">except</span> socket.error <span class="keyword">as</span> e:</div>
<div class="line"><span class="lineno"> 107</span> logging.error(e)</div>
<div class="line"><span class="lineno"> 108</span> <span class="keywordflow">return</span> <span class="keyword">False</span></div>
<div class="line"><span class="lineno"> 109</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="ae913438a3d6370473b87e323fa1afa9b" name="ae913438a3d6370473b87e323fa1afa9b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae913438a3d6370473b87e323fa1afa9b">&#9670;&#160;</a></span>isConnected()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">boswatch.network.client.TCPClient.isConnected </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Property of client connected state. </p>
<div class="fragment"><div class="line"><span class="lineno"> 111</span> <span class="keyword">def </span>isConnected(self):</div>
<div class="line"><span class="lineno"> 112</span> <span class="stringliteral">r&quot;&quot;&quot;!Property of client connected state&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 113</span> <span class="keywordflow">try</span>:</div>
<div class="line"><span class="lineno"> 114</span> <span class="keywordflow">if</span> self._sock:</div>
<div class="line"><span class="lineno"> 115</span> _, write, _ = select.select([], [self._sock], [], 0.1)</div>
<div class="line"><span class="lineno"> 116</span> <span class="keywordflow">if</span> write:</div>
<div class="line"><span class="lineno"> 117</span> data = <span class="stringliteral">&quot;&lt;keep-alive&gt;&quot;</span>.encode(<span class="stringliteral">&quot;utf-8&quot;</span>)</div>
<div class="line"><span class="lineno"> 118</span> header = str(len(data)).ljust(HEADERSIZE).encode(<span class="stringliteral">&quot;utf-8&quot;</span>)</div>
<div class="line"><span class="lineno"> 119</span> self._sock.sendall(header + data)</div>
<div class="line"><span class="lineno"> 120</span> <span class="keywordflow">return</span> <span class="keyword">True</span></div>
<div class="line"><span class="lineno"> 121</span> <span class="keywordflow">return</span> <span class="keyword">False</span></div>
<div class="line"><span class="lineno"> 122</span> <span class="keywordflow">except</span> socket.error <span class="keyword">as</span> e:</div>
<div class="line"><span class="lineno"> 123</span> <span class="keywordflow">if</span> e.errno != 32:</div>
<div class="line"><span class="lineno"> 124</span> logging.exception(e)</div>
<div class="line"><span class="lineno"> 125</span> <span class="keywordflow">return</span> <span class="keyword">False</span></div>
<div class="line"><span class="lineno"> 126</span> <span class="keywordflow">except</span> ValueError:</div>
<div class="line"><span class="lineno"> 127</span> <span class="keywordflow">return</span> <span class="keyword">False</span></div>
</div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">Field Documentation</h2>
<a id="a085df370df1ad97a2ea2b9a510590721" name="a085df370df1ad97a2ea2b9a510590721"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a085df370df1ad97a2ea2b9a510590721">&#9670;&#160;</a></span>_sock</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">boswatch.network.client.TCPClient._sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a22e2077708bcd0526c1628b24569a6f9" name="a22e2077708bcd0526c1628b24569a6f9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a22e2077708bcd0526c1628b24569a6f9">&#9670;&#160;</a></span>isConnected</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">boswatch.network.client.TCPClient.isConnected</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespaceboswatch.html">boswatch</a></li><li class="navelem"><a class="el" href="namespaceboswatch_1_1network.html">network</a></li><li class="navelem"><a class="el" href="namespaceboswatch_1_1network_1_1client.html">client</a></li><li class="navelem"><a class="el" href="classboswatch_1_1network_1_1client_1_1_t_c_p_client.html">TCPClient</a></li>
<li class="footer">Generated on Wed Jun 11 2025 08:24:06 for BOSWatch 3 by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
</ul>
</div>
</body>
</html>

View file

@ -0,0 +1,11 @@
var classboswatch_1_1network_1_1client_1_1_t_c_p_client =
[
[ "__init__", "classboswatch_1_1network_1_1client_1_1_t_c_p_client.html#a52dad8d55fb35e07756a5a779deff7fe", null ],
[ "connect", "classboswatch_1_1network_1_1client_1_1_t_c_p_client.html#a9cb1cfa9fa1f3e5aeb25329a2406ea50", null ],
[ "disconnect", "classboswatch_1_1network_1_1client_1_1_t_c_p_client.html#ac8a3ce9fefc7b8e0b2fbf653f484aac4", null ],
[ "transmit", "classboswatch_1_1network_1_1client_1_1_t_c_p_client.html#a0b220cacacdf690617645c7fefdc4f98", null ],
[ "receive", "classboswatch_1_1network_1_1client_1_1_t_c_p_client.html#ab38ae11d876aed47d12c7f753601b67f", null ],
[ "isConnected", "classboswatch_1_1network_1_1client_1_1_t_c_p_client.html#ae913438a3d6370473b87e323fa1afa9b", null ],
[ "_sock", "classboswatch_1_1network_1_1client_1_1_t_c_p_client.html#a085df370df1ad97a2ea2b9a510590721", null ],
[ "isConnected", "classboswatch_1_1network_1_1client_1_1_t_c_p_client.html#a22e2077708bcd0526c1628b24569a6f9", null ]
];

View file

@ -0,0 +1,289 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.12.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>BOSWatch 3: boswatch.network.netCheck.NetCheck Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">BOSWatch 3
</div>
<div id="projectbrief">Python Script to receive and decode German BOS Information with rtl_fm and multimon-NG</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.12.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('classboswatch_1_1network_1_1net_check_1_1_net_check.html',''); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-attribs">Data Fields</a> &#124;
<a href="#pro-attribs">Protected Attributes</a> </div>
<div class="headertitle"><div class="title">boswatch.network.netCheck.NetCheck Class Reference</div></div>
</div><!--header-->
<div class="contents">
<p>Worker class to check internet connection.
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a93d5881314909255eb8b687a94942526" id="r_a93d5881314909255eb8b687a94942526"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a93d5881314909255eb8b687a94942526">__init__</a> (self, hostname=&quot;https://www.google.com/&quot;, timeout=1)</td></tr>
<tr class="memdesc:a93d5881314909255eb8b687a94942526"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a new <a class="el" href="classboswatch_1_1network_1_1net_check_1_1_net_check.html" title="Worker class to check internet connection.">NetCheck</a> instance. <br /></td></tr>
<tr class="separator:a93d5881314909255eb8b687a94942526"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7e4b0f0b6a16bb9991e8f98f5a0e01d7" id="r_a7e4b0f0b6a16bb9991e8f98f5a0e01d7"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a7e4b0f0b6a16bb9991e8f98f5a0e01d7">checkConn</a> (self)</td></tr>
<tr class="memdesc:a7e4b0f0b6a16bb9991e8f98f5a0e01d7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check the connection. <br /></td></tr>
<tr class="separator:a7e4b0f0b6a16bb9991e8f98f5a0e01d7"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
Data Fields</h2></td></tr>
<tr class="memitem:a85861ea00ae1921f47c4addd2b40ce5b" id="r_a85861ea00ae1921f47c4addd2b40ce5b"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a85861ea00ae1921f47c4addd2b40ce5b">connectionState</a> = False</td></tr>
<tr class="separator:a85861ea00ae1921f47c4addd2b40ce5b"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pro-attribs" name="pro-attribs"></a>
Protected Attributes</h2></td></tr>
<tr class="memitem:abd1284df56696f11553229f48e33379d" id="r_abd1284df56696f11553229f48e33379d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#abd1284df56696f11553229f48e33379d">_hostname</a> = hostname</td></tr>
<tr class="separator:abd1284df56696f11553229f48e33379d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3f96032d88c885267d1337c72d14da85" id="r_a3f96032d88c885267d1337c72d14da85"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a3f96032d88c885267d1337c72d14da85">_timeout</a> = timeout</td></tr>
<tr class="separator:a3f96032d88c885267d1337c72d14da85"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Worker class to check internet connection. </p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a93d5881314909255eb8b687a94942526" name="a93d5881314909255eb8b687a94942526"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a93d5881314909255eb8b687a94942526">&#9670;&#160;</a></span>__init__()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">boswatch.network.netCheck.NetCheck.__init__ </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>hostname</em></span><span class="paramdefsep"> = </span><span class="paramdefval">&quot;https://www.google.com/&quot;</span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>timeout</em></span><span class="paramdefsep"> = </span><span class="paramdefval">1</span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Create a new <a class="el" href="classboswatch_1_1network_1_1net_check_1_1_net_check.html" title="Worker class to check internet connection.">NetCheck</a> instance. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">hostname</td><td>host against connection check is running ("https://www.google.com/") </td></tr>
<tr><td class="paramname">timeout</td><td>timeout for connection check in sec. (1) </td></tr>
</table>
</dd>
</dl>
<div class="fragment"><div class="line"><span class="lineno"> 26</span> <span class="keyword">def </span>__init__(self, hostname=&quot;https://www.google.com/<span class="stringliteral">&quot;, timeout=1):</span></div>
<div class="line"><span class="lineno"> 27</span><span class="stringliteral"> r&quot;&quot;&quot;!Create a new NetCheck instance</span></div>
<div class="line"><span class="lineno"> 28</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 29</span><span class="stringliteral"> @param hostname: host against connection check is running (&quot;https://www.google.com/&quot;)</span></div>
<div class="line"><span class="lineno"> 30</span><span class="stringliteral"> @param timeout: timeout for connection check in sec. (1)&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 31</span> self._hostname = hostname</div>
<div class="line"><span class="lineno"> 32</span> self._timeout = timeout</div>
<div class="line"><span class="lineno"> 33</span> self.connectionState = <span class="keyword">False</span></div>
<div class="line"><span class="lineno"> 34</span> self.checkConn() <span class="comment"># initiate a first check</span></div>
<div class="line"><span class="lineno"> 35</span> </div>
</div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a7e4b0f0b6a16bb9991e8f98f5a0e01d7" name="a7e4b0f0b6a16bb9991e8f98f5a0e01d7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7e4b0f0b6a16bb9991e8f98f5a0e01d7">&#9670;&#160;</a></span>checkConn()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">boswatch.network.netCheck.NetCheck.checkConn </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Check the connection. </p>
<dl class="section return"><dt>Returns</dt><dd>True or False </dd></dl>
<div class="fragment"><div class="line"><span class="lineno"> 36</span> <span class="keyword">def </span>checkConn(self):</div>
<div class="line"><span class="lineno"> 37</span> <span class="stringliteral">r&quot;&quot;&quot;!Check the connection</span></div>
<div class="line"><span class="lineno"> 38</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 39</span><span class="stringliteral"> @return True or False&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 40</span> <span class="keywordflow">try</span>:</div>
<div class="line"><span class="lineno"> 41</span> urlopen(self._hostname, timeout=self._timeout)</div>
<div class="line"><span class="lineno"> 42</span> logging.debug(<span class="stringliteral">&quot;%s is reachable&quot;</span>, self._hostname)</div>
<div class="line"><span class="lineno"> 43</span> self.connectionState = <span class="keyword">True</span></div>
<div class="line"><span class="lineno"> 44</span> <span class="keywordflow">return</span> <span class="keyword">True</span></div>
<div class="line"><span class="lineno"> 45</span> <span class="keywordflow">except</span>: <span class="comment"># todo find right exception type</span></div>
<div class="line"><span class="lineno"> 46</span> logging.warning(<span class="stringliteral">&quot;%s is not reachable&quot;</span>, self._hostname)</div>
<div class="line"><span class="lineno"> 47</span> self.connectionState = <span class="keyword">False</span></div>
<div class="line"><span class="lineno"> 48</span> <span class="keywordflow">return</span> <span class="keyword">False</span></div>
</div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">Field Documentation</h2>
<a id="abd1284df56696f11553229f48e33379d" name="abd1284df56696f11553229f48e33379d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abd1284df56696f11553229f48e33379d">&#9670;&#160;</a></span>_hostname</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">boswatch.network.netCheck.NetCheck._hostname = hostname</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a3f96032d88c885267d1337c72d14da85" name="a3f96032d88c885267d1337c72d14da85"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3f96032d88c885267d1337c72d14da85">&#9670;&#160;</a></span>_timeout</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">boswatch.network.netCheck.NetCheck._timeout = timeout</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a85861ea00ae1921f47c4addd2b40ce5b" name="a85861ea00ae1921f47c4addd2b40ce5b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a85861ea00ae1921f47c4addd2b40ce5b">&#9670;&#160;</a></span>connectionState</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool boswatch.network.netCheck.NetCheck.connectionState = False</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespaceboswatch.html">boswatch</a></li><li class="navelem"><a class="el" href="namespaceboswatch_1_1network.html">network</a></li><li class="navelem"><a class="el" href="namespaceboswatch_1_1network_1_1net_check.html">netCheck</a></li><li class="navelem"><a class="el" href="classboswatch_1_1network_1_1net_check_1_1_net_check.html">NetCheck</a></li>
<li class="footer">Generated on Wed Jun 11 2025 08:24:06 for BOSWatch 3 by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
</ul>
</div>
</body>
</html>

View file

@ -0,0 +1,8 @@
var classboswatch_1_1network_1_1net_check_1_1_net_check =
[
[ "__init__", "classboswatch_1_1network_1_1net_check_1_1_net_check.html#a93d5881314909255eb8b687a94942526", null ],
[ "checkConn", "classboswatch_1_1network_1_1net_check_1_1_net_check.html#a7e4b0f0b6a16bb9991e8f98f5a0e01d7", null ],
[ "_hostname", "classboswatch_1_1network_1_1net_check_1_1_net_check.html#abd1284df56696f11553229f48e33379d", null ],
[ "_timeout", "classboswatch_1_1network_1_1net_check_1_1_net_check.html#a3f96032d88c885267d1337c72d14da85", null ],
[ "connectionState", "classboswatch_1_1network_1_1net_check_1_1_net_check.html#a85861ea00ae1921f47c4addd2b40ce5b", null ]
];

View file

@ -0,0 +1,203 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.12.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>BOSWatch 3: boswatch.network.server._ThreadedTCPRequestHandler Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">BOSWatch 3
</div>
<div id="projectbrief">Python Script to receive and decode German BOS Information with rtl_fm and multimon-NG</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.12.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('classboswatch_1_1network_1_1server_1_1___threaded_t_c_p_request_handler.html',''); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> </div>
<div class="headertitle"><div class="title">boswatch.network.server._ThreadedTCPRequestHandler Class Reference</div></div>
</div><!--header-->
<div class="contents">
<p>ThreadedTCPRequestHandler class for our <a class="el" href="classboswatch_1_1network_1_1server_1_1_t_c_p_server.html" title="TCP server class.">TCPServer</a> class.
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:acb4cb23886abc3c2b3be70ed3127c3b0" id="r_acb4cb23886abc3c2b3be70ed3127c3b0"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#acb4cb23886abc3c2b3be70ed3127c3b0">handle</a> (self)</td></tr>
<tr class="memdesc:acb4cb23886abc3c2b3be70ed3127c3b0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Handles the request from an single client in a own thread. <br /></td></tr>
<tr class="separator:acb4cb23886abc3c2b3be70ed3127c3b0"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>ThreadedTCPRequestHandler class for our <a class="el" href="classboswatch_1_1network_1_1server_1_1_t_c_p_server.html" title="TCP server class.">TCPServer</a> class. </p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="acb4cb23886abc3c2b3be70ed3127c3b0" name="acb4cb23886abc3c2b3be70ed3127c3b0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acb4cb23886abc3c2b3be70ed3127c3b0">&#9670;&#160;</a></span>handle()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">boswatch.network.server._ThreadedTCPRequestHandler.handle </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Handles the request from an single client in a own thread. </p>
<p>Insert a request in the clients[] list and send a [ack] </p>
<div class="fragment"><div class="line"><span class="lineno"> 32</span> <span class="keyword">def </span>handle(self):</div>
<div class="line"><span class="lineno"> 33</span> <span class="stringliteral">r&quot;&quot;&quot;!Handles the request from an single client in a own thread</span></div>
<div class="line"><span class="lineno"> 34</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 35</span><span class="stringliteral"> Insert a request in the clients[] list and send a [ack]&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 36</span> <span class="keyword">with</span> self.server.clientsConnectedLock: <span class="comment"># because our list is not threadsafe</span></div>
<div class="line"><span class="lineno"> 37</span> self.server.clientsConnected[threading.current_thread().name] = {<span class="stringliteral">&quot;address&quot;</span>: self.client_address[0], <span class="stringliteral">&quot;timestamp&quot;</span>: time.time()}</div>
<div class="line"><span class="lineno"> 38</span> </div>
<div class="line"><span class="lineno"> 39</span> logging.info(<span class="stringliteral">&quot;Client connected: %s&quot;</span>, self.client_address[0])</div>
<div class="line"><span class="lineno"> 40</span> cur_thread = threading.current_thread().name</div>
<div class="line"><span class="lineno"> 41</span> req_name = str(cur_thread) + <span class="stringliteral">&quot; &quot;</span> + self.client_address[0]</div>
<div class="line"><span class="lineno"> 42</span> </div>
<div class="line"><span class="lineno"> 43</span> <span class="keywordflow">try</span>:</div>
<div class="line"><span class="lineno"> 44</span> <span class="keywordflow">while</span> self.server.isActive:</div>
<div class="line"><span class="lineno"> 45</span> read, _, _ = select.select([self.request], [], [], 0.5)</div>
<div class="line"><span class="lineno"> 46</span> <span class="keywordflow">if</span> <span class="keywordflow">not</span> read:</div>
<div class="line"><span class="lineno"> 47</span> <span class="keywordflow">continue</span> <span class="comment"># nothing to read on the socket</span></div>
<div class="line"><span class="lineno"> 48</span> </div>
<div class="line"><span class="lineno"> 49</span> header = self.request.recv(HEADERSIZE).decode(<span class="stringliteral">&quot;utf-8&quot;</span>)</div>
<div class="line"><span class="lineno"> 50</span> <span class="keywordflow">if</span> <span class="keywordflow">not</span> len(header):</div>
<div class="line"><span class="lineno"> 51</span> <span class="keywordflow">break</span> <span class="comment"># empty data -&gt; socked closed</span></div>
<div class="line"><span class="lineno"> 52</span> </div>
<div class="line"><span class="lineno"> 53</span> length = int(header.strip())</div>
<div class="line"><span class="lineno"> 54</span> data = self.request.recv(length).decode(<span class="stringliteral">&quot;utf-8&quot;</span>)</div>
<div class="line"><span class="lineno"> 55</span> </div>
<div class="line"><span class="lineno"> 56</span> <span class="keywordflow">if</span> data == <span class="stringliteral">&quot;&lt;keep-alive&gt;&quot;</span>:</div>
<div class="line"><span class="lineno"> 57</span> <span class="keywordflow">continue</span></div>
<div class="line"><span class="lineno"> 58</span> </div>
<div class="line"><span class="lineno"> 59</span> logging.debug(<span class="stringliteral">&quot;%s recv header: &#39;%s&#39;&quot;</span>, req_name, header)</div>
<div class="line"><span class="lineno"> 60</span> logging.debug(<span class="stringliteral">&quot;%s recv %d bytes:\n%s&quot;</span>, req_name, len(data), data)</div>
<div class="line"><span class="lineno"> 61</span> </div>
<div class="line"><span class="lineno"> 62</span> <span class="comment"># add a new entry and the decoded data dict as an string in utf-8 and an timestamp</span></div>
<div class="line"><span class="lineno"> 63</span> self.server.alarmQueue.put_nowait((self.client_address[0], data, time.time())) <span class="comment"># queue is threadsafe</span></div>
<div class="line"><span class="lineno"> 64</span> logging.debug(<span class="stringliteral">&quot;Add data to queue&quot;</span>)</div>
<div class="line"><span class="lineno"> 65</span> </div>
<div class="line"><span class="lineno"> 66</span> logging.debug(<span class="stringliteral">&quot;%s send: [ack]&quot;</span>, req_name)</div>
<div class="line"><span class="lineno"> 67</span> </div>
<div class="line"><span class="lineno"> 68</span> data = <span class="stringliteral">&quot;[ack]&quot;</span>.encode(<span class="stringliteral">&quot;utf-8&quot;</span>)</div>
<div class="line"><span class="lineno"> 69</span> header = str(len(data)).ljust(HEADERSIZE).encode(<span class="stringliteral">&quot;utf-8&quot;</span>)</div>
<div class="line"><span class="lineno"> 70</span> self.request.sendall(header + data)</div>
<div class="line"><span class="lineno"> 71</span> </div>
<div class="line"><span class="lineno"> 72</span> <span class="keywordflow">except</span> socket.error <span class="keyword">as</span> e:</div>
<div class="line"><span class="lineno"> 73</span> logging.error(e)</div>
<div class="line"><span class="lineno"> 74</span> <span class="keywordflow">return</span> <span class="keyword">False</span></div>
<div class="line"><span class="lineno"> 75</span> <span class="keywordflow">finally</span>:</div>
<div class="line"><span class="lineno"> 76</span> self.request.close()</div>
<div class="line"><span class="lineno"> 77</span> del self.server.clientsConnected[threading.current_thread().name]</div>
<div class="line"><span class="lineno"> 78</span> logging.info(<span class="stringliteral">&quot;Client disconnected: %s&quot;</span>, self.client_address[0])</div>
<div class="line"><span class="lineno"> 79</span> </div>
<div class="line"><span class="lineno"> 80</span> </div>
</div><!-- fragment -->
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespaceboswatch.html">boswatch</a></li><li class="navelem"><a class="el" href="namespaceboswatch_1_1network.html">network</a></li><li class="navelem"><a class="el" href="namespaceboswatch_1_1network_1_1server.html">server</a></li><li class="navelem"><a class="el" href="classboswatch_1_1network_1_1server_1_1___threaded_t_c_p_request_handler.html">_ThreadedTCPRequestHandler</a></li>
<li class="footer">Generated on Wed Jun 11 2025 08:24:06 for BOSWatch 3 by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
</ul>
</div>
</body>
</html>

View file

@ -0,0 +1,4 @@
var classboswatch_1_1network_1_1server_1_1___threaded_t_c_p_request_handler =
[
[ "handle", "classboswatch_1_1network_1_1server_1_1___threaded_t_c_p_request_handler.html#acb4cb23886abc3c2b3be70ed3127c3b0", null ]
];

View file

@ -0,0 +1,124 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.12.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>BOSWatch 3: boswatch.network.server._ThreadedTCPServer Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">BOSWatch 3
</div>
<div id="projectbrief">Python Script to receive and decode German BOS Information with rtl_fm and multimon-NG</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.12.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('classboswatch_1_1network_1_1server_1_1___threaded_t_c_p_server.html',''); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="headertitle"><div class="title">boswatch.network.server._ThreadedTCPServer Class Reference</div></div>
</div><!--header-->
<div class="contents">
<p>ThreadedTCPServer class for our <a class="el" href="classboswatch_1_1network_1_1server_1_1_t_c_p_server.html" title="TCP server class.">TCPServer</a> class.
<a href="#details">More...</a></p>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>ThreadedTCPServer class for our <a class="el" href="classboswatch_1_1network_1_1server_1_1_t_c_p_server.html" title="TCP server class.">TCPServer</a> class. </p>
</div></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespaceboswatch.html">boswatch</a></li><li class="navelem"><a class="el" href="namespaceboswatch_1_1network.html">network</a></li><li class="navelem"><a class="el" href="namespaceboswatch_1_1network_1_1server.html">server</a></li><li class="navelem"><a class="el" href="classboswatch_1_1network_1_1server_1_1___threaded_t_c_p_server.html">_ThreadedTCPServer</a></li>
<li class="footer">Generated on Wed Jun 11 2025 08:24:06 for BOSWatch 3 by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
</ul>
</div>
</body>
</html>

View file

@ -0,0 +1,605 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.12.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>BOSWatch 3: boswatch.network.server.TCPServer Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">BOSWatch 3
</div>
<div id="projectbrief">Python Script to receive and decode German BOS Information with rtl_fm and multimon-NG</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.12.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('classboswatch_1_1network_1_1server_1_1_t_c_p_server.html',''); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-attribs">Data Fields</a> &#124;
<a href="#pro-attribs">Protected Attributes</a> </div>
<div class="headertitle"><div class="title">boswatch.network.server.TCPServer Class Reference</div></div>
</div><!--header-->
<div class="contents">
<p>TCP server class.
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:aa7bde82a0490275757eb62cf2245ece8" id="r_aa7bde82a0490275757eb62cf2245ece8"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aa7bde82a0490275757eb62cf2245ece8">__init__</a> (self, alarmQueue, timeout=3)</td></tr>
<tr class="memdesc:aa7bde82a0490275757eb62cf2245ece8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a new instance. <br /></td></tr>
<tr class="separator:aa7bde82a0490275757eb62cf2245ece8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7bd8bbf36dc9e947fd6889b64e66bf79" id="r_a7bd8bbf36dc9e947fd6889b64e66bf79"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a7bd8bbf36dc9e947fd6889b64e66bf79">__del__</a> (self)</td></tr>
<tr class="separator:a7bd8bbf36dc9e947fd6889b64e66bf79"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aef3b308e2d4d28406bdb31be97460e60" id="r_aef3b308e2d4d28406bdb31be97460e60"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aef3b308e2d4d28406bdb31be97460e60">start</a> (self, port=8080)</td></tr>
<tr class="memdesc:aef3b308e2d4d28406bdb31be97460e60"><td class="mdescLeft">&#160;</td><td class="mdescRight">Start a threaded TCP socket server. <br /></td></tr>
<tr class="separator:aef3b308e2d4d28406bdb31be97460e60"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adcb3af039525e3fd4465f661e985eba1" id="r_adcb3af039525e3fd4465f661e985eba1"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#adcb3af039525e3fd4465f661e985eba1">stop</a> (self)</td></tr>
<tr class="memdesc:adcb3af039525e3fd4465f661e985eba1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Stops the TCP socket server. <br /></td></tr>
<tr class="separator:adcb3af039525e3fd4465f661e985eba1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a96ddddf0a3fbac223d04ef68de9b35cd" id="r_a96ddddf0a3fbac223d04ef68de9b35cd"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a96ddddf0a3fbac223d04ef68de9b35cd">countClientsConnected</a> (self)</td></tr>
<tr class="memdesc:a96ddddf0a3fbac223d04ef68de9b35cd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Number of currently connected Clients. <br /></td></tr>
<tr class="separator:a96ddddf0a3fbac223d04ef68de9b35cd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ace26dcf01e7072e302d25751cfd35999" id="r_ace26dcf01e7072e302d25751cfd35999"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ace26dcf01e7072e302d25751cfd35999">getClientsConnected</a> (self)</td></tr>
<tr class="memdesc:ace26dcf01e7072e302d25751cfd35999"><td class="mdescLeft">&#160;</td><td class="mdescRight">A list of all connected clients with their IP address and last seen timestamp _clients[ThreadName] = {"address", "timestamp"}. <br /></td></tr>
<tr class="separator:ace26dcf01e7072e302d25751cfd35999"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeba7db2323e57b57d17c05ab9f448370" id="r_aeba7db2323e57b57d17c05ab9f448370"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aeba7db2323e57b57d17c05ab9f448370">isRunning</a> (self)</td></tr>
<tr class="memdesc:aeba7db2323e57b57d17c05ab9f448370"><td class="mdescLeft">&#160;</td><td class="mdescRight">Property of server running state. <br /></td></tr>
<tr class="separator:aeba7db2323e57b57d17c05ab9f448370"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
Data Fields</h2></td></tr>
<tr class="memitem:ab0b936931fdf4ccc43aa17b78732b207" id="r_ab0b936931fdf4ccc43aa17b78732b207"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ab0b936931fdf4ccc43aa17b78732b207">isRunning</a> = False</td></tr>
<tr class="separator:ab0b936931fdf4ccc43aa17b78732b207"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab0b936931fdf4ccc43aa17b78732b207" id="r_ab0b936931fdf4ccc43aa17b78732b207"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ab0b936931fdf4ccc43aa17b78732b207">isRunning</a> = True</td></tr>
<tr class="separator:ab0b936931fdf4ccc43aa17b78732b207"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a502b42c4e702a1ef1440d7d156ea4493" id="r_a502b42c4e702a1ef1440d7d156ea4493"><td class="memItemLeft" align="right" valign="top">str&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a502b42c4e702a1ef1440d7d156ea4493">_server_thread</a> = &quot;Thread-BWServer&quot;</td></tr>
<tr class="separator:a502b42c4e702a1ef1440d7d156ea4493"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pro-attribs" name="pro-attribs"></a>
Protected Attributes</h2></td></tr>
<tr class="memitem:a196dd011e76b9ffa269b1d7ae945317f" id="r_a196dd011e76b9ffa269b1d7ae945317f"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a196dd011e76b9ffa269b1d7ae945317f">_server</a> = None</td></tr>
<tr class="separator:a196dd011e76b9ffa269b1d7ae945317f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a069063419170444e452c49d4d3226d42" id="r_a069063419170444e452c49d4d3226d42"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a069063419170444e452c49d4d3226d42">_server_thread</a> = None</td></tr>
<tr class="separator:a069063419170444e452c49d4d3226d42"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a34210569d9aeb0f83e23fda9ac6501c1" id="r_a34210569d9aeb0f83e23fda9ac6501c1"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a34210569d9aeb0f83e23fda9ac6501c1">_timeout</a> = timeout</td></tr>
<tr class="separator:a34210569d9aeb0f83e23fda9ac6501c1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3126636b3ebc15906a02433a9f921cdd" id="r_a3126636b3ebc15906a02433a9f921cdd"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a3126636b3ebc15906a02433a9f921cdd">_alarmQueue</a> = alarmQueue</td></tr>
<tr class="separator:a3126636b3ebc15906a02433a9f921cdd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad7d5a3318dd17eb81d4145b364354b9b" id="r_ad7d5a3318dd17eb81d4145b364354b9b"><td class="memItemLeft" align="right" valign="top"># because our list is not threadsafe&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ad7d5a3318dd17eb81d4145b364354b9b">_clientsConnectedLock</a> = threading.Lock()</td></tr>
<tr class="separator:ad7d5a3318dd17eb81d4145b364354b9b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad384e027f90c85bd533081c5df69c143" id="r_ad384e027f90c85bd533081c5df69c143"><td class="memItemLeft" align="right" valign="top">dict&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ad384e027f90c85bd533081c5df69c143">_clientsConnected</a> = {}</td></tr>
<tr class="separator:ad384e027f90c85bd533081c5df69c143"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>TCP server class. </p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="aa7bde82a0490275757eb62cf2245ece8" name="aa7bde82a0490275757eb62cf2245ece8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa7bde82a0490275757eb62cf2245ece8">&#9670;&#160;</a></span>__init__()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">boswatch.network.server.TCPServer.__init__ </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>alarmQueue</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>timeout</em></span><span class="paramdefsep"> = </span><span class="paramdefval">3</span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Create a new instance. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">alarmQueue</td><td>python queue instance </td></tr>
<tr><td class="paramname">timeout</td><td>server timeout in sec (3) </td></tr>
</table>
</dd>
</dl>
<div class="fragment"><div class="line"><span class="lineno"> 89</span> <span class="keyword">def </span>__init__(self, alarmQueue, timeout=3):</div>
<div class="line"><span class="lineno"> 90</span> <span class="stringliteral">r&quot;&quot;&quot;!Create a new instance</span></div>
<div class="line"><span class="lineno"> 91</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 92</span><span class="stringliteral"> @param alarmQueue: python queue instance</span></div>
<div class="line"><span class="lineno"> 93</span><span class="stringliteral"> @param timeout: server timeout in sec (3)</span></div>
<div class="line"><span class="lineno"> 94</span><span class="stringliteral"> &quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 95</span> self._server = <span class="keywordtype">None</span></div>
<div class="line"><span class="lineno"> 96</span> self._server_thread = <span class="keywordtype">None</span></div>
<div class="line"><span class="lineno"> 97</span> self._timeout = timeout</div>
<div class="line"><span class="lineno"> 98</span> self._alarmQueue = alarmQueue</div>
<div class="line"><span class="lineno"> 99</span> </div>
<div class="line"><span class="lineno"> 100</span> self._clientsConnectedLock = threading.Lock()</div>
<div class="line"><span class="lineno"> 101</span> self._clientsConnected = {}</div>
<div class="line"><span class="lineno"> 102</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="a7bd8bbf36dc9e947fd6889b64e66bf79" name="a7bd8bbf36dc9e947fd6889b64e66bf79"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7bd8bbf36dc9e947fd6889b64e66bf79">&#9670;&#160;</a></span>__del__()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">boswatch.network.server.TCPServer.__del__ </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<div class="fragment"><div class="line"><span class="lineno"> 103</span> <span class="keyword">def </span>__del__(self):</div>
<div class="line"><span class="lineno"> 104</span> <span class="keywordflow">if</span> self.isRunning:</div>
<div class="line"><span class="lineno"> 105</span> self.stop()</div>
<div class="line"><span class="lineno"> 106</span> </div>
</div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="aef3b308e2d4d28406bdb31be97460e60" name="aef3b308e2d4d28406bdb31be97460e60"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aef3b308e2d4d28406bdb31be97460e60">&#9670;&#160;</a></span>start()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">boswatch.network.server.TCPServer.start </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>port</em></span><span class="paramdefsep"> = </span><span class="paramdefval">8080</span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Start a threaded TCP socket server. </p>
<p>Start a TCP Socket Server in a new thread that will then start one more thread for each client request. The ip address for binding the server socket is always 'localhost'</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">port</td><td>Server Port (8080)</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>True or False </dd></dl>
<div class="fragment"><div class="line"><span class="lineno"> 107</span> <span class="keyword">def </span>start(self, port=8080):</div>
<div class="line"><span class="lineno"> 108</span> <span class="stringliteral">r&quot;&quot;&quot;!Start a threaded TCP socket server</span></div>
<div class="line"><span class="lineno"> 109</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 110</span><span class="stringliteral"> Start a TCP Socket Server in a new thread that will</span></div>
<div class="line"><span class="lineno"> 111</span><span class="stringliteral"> then start one more thread for each client request.</span></div>
<div class="line"><span class="lineno"> 112</span><span class="stringliteral"> The ip address for binding the server socket is always &#39;localhost&#39;</span></div>
<div class="line"><span class="lineno"> 113</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 114</span><span class="stringliteral"> @param port: Server Port (8080)</span></div>
<div class="line"><span class="lineno"> 115</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 116</span><span class="stringliteral"> @return True or False&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 117</span> <span class="keywordflow">if</span> <span class="keywordflow">not</span> self.isRunning:</div>
<div class="line"><span class="lineno"> 118</span> <span class="keywordflow">try</span>:</div>
<div class="line"><span class="lineno"> 119</span> socketserver.TCPServer.allow_reuse_address = <span class="keyword">True</span> <span class="comment"># because we can start two instances on same port elsewhere</span></div>
<div class="line"><span class="lineno"> 120</span> self._server = _ThreadedTCPServer((<span class="stringliteral">&quot;&quot;</span>, port), _ThreadedTCPRequestHandler)</div>
<div class="line"><span class="lineno"> 121</span> self._server.timeout = self._timeout</div>
<div class="line"><span class="lineno"> 122</span> self._server.alarmQueue = self._alarmQueue</div>
<div class="line"><span class="lineno"> 123</span> self._server.isActive = <span class="keyword">True</span></div>
<div class="line"><span class="lineno"> 124</span> </div>
<div class="line"><span class="lineno"> 125</span> self._server.clientsConnectedLock = self._clientsConnectedLock</div>
<div class="line"><span class="lineno"> 126</span> self._server.clientsConnected = self._clientsConnected</div>
<div class="line"><span class="lineno"> 127</span> </div>
<div class="line"><span class="lineno"> 128</span> self._server_thread = threading.Thread(target=self._server.serve_forever)</div>
<div class="line"><span class="lineno"> 129</span> self._server_thread.name = <span class="stringliteral">&quot;Thread-BWServer&quot;</span></div>
<div class="line"><span class="lineno"> 130</span> self._server_thread.daemon = <span class="keyword">True</span></div>
<div class="line"><span class="lineno"> 131</span> self._server_thread.start()</div>
<div class="line"><span class="lineno"> 132</span> logging.debug(<span class="stringliteral">&quot;TCPServer started in Thread: %s&quot;</span>, self._server_thread.name)</div>
<div class="line"><span class="lineno"> 133</span> <span class="keywordflow">return</span> <span class="keyword">True</span></div>
<div class="line"><span class="lineno"> 134</span> <span class="keywordflow">except</span> socket.error <span class="keyword">as</span> e:</div>
<div class="line"><span class="lineno"> 135</span> logging.error(e)</div>
<div class="line"><span class="lineno"> 136</span> <span class="keywordflow">return</span> <span class="keyword">False</span></div>
<div class="line"><span class="lineno"> 137</span> <span class="keywordflow">else</span>:</div>
<div class="line"><span class="lineno"> 138</span> logging.warning(<span class="stringliteral">&quot;server always started&quot;</span>)</div>
<div class="line"><span class="lineno"> 139</span> <span class="keywordflow">return</span> <span class="keyword">True</span></div>
<div class="line"><span class="lineno"> 140</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="adcb3af039525e3fd4465f661e985eba1" name="adcb3af039525e3fd4465f661e985eba1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adcb3af039525e3fd4465f661e985eba1">&#9670;&#160;</a></span>stop()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">boswatch.network.server.TCPServer.stop </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Stops the TCP socket server. </p>
<dl class="section return"><dt>Returns</dt><dd>True or False </dd></dl>
<div class="fragment"><div class="line"><span class="lineno"> 141</span> <span class="keyword">def </span>stop(self):</div>
<div class="line"><span class="lineno"> 142</span> <span class="stringliteral">r&quot;&quot;&quot;!Stops the TCP socket server</span></div>
<div class="line"><span class="lineno"> 143</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 144</span><span class="stringliteral"> @return True or False&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 145</span> <span class="keywordflow">if</span> self.isRunning:</div>
<div class="line"><span class="lineno"> 146</span> self._server.shutdown()</div>
<div class="line"><span class="lineno"> 147</span> self._server.isActive = <span class="keyword">False</span></div>
<div class="line"><span class="lineno"> 148</span> self._server.server_close()</div>
<div class="line"><span class="lineno"> 149</span> self._server_thread.join()</div>
<div class="line"><span class="lineno"> 150</span> self._server_thread = <span class="keywordtype">None</span></div>
<div class="line"><span class="lineno"> 151</span> self._server = <span class="keywordtype">None</span></div>
<div class="line"><span class="lineno"> 152</span> logging.debug(<span class="stringliteral">&quot;TCPServer stopped&quot;</span>)</div>
<div class="line"><span class="lineno"> 153</span> <span class="keywordflow">return</span> <span class="keyword">True</span></div>
<div class="line"><span class="lineno"> 154</span> logging.warning(<span class="stringliteral">&quot;server always stopped&quot;</span>)</div>
<div class="line"><span class="lineno"> 155</span> <span class="keywordflow">return</span> <span class="keyword">True</span></div>
<div class="line"><span class="lineno"> 156</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="a96ddddf0a3fbac223d04ef68de9b35cd" name="a96ddddf0a3fbac223d04ef68de9b35cd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a96ddddf0a3fbac223d04ef68de9b35cd">&#9670;&#160;</a></span>countClientsConnected()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">boswatch.network.server.TCPServer.countClientsConnected </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Number of currently connected Clients. </p>
<dl class="section return"><dt>Returns</dt><dd>Connected clients </dd></dl>
<div class="fragment"><div class="line"><span class="lineno"> 157</span> <span class="keyword">def </span>countClientsConnected(self):</div>
<div class="line"><span class="lineno"> 158</span> <span class="stringliteral">r&quot;&quot;&quot;!Number of currently connected Clients</span></div>
<div class="line"><span class="lineno"> 159</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 160</span><span class="stringliteral"> @return Connected clients&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 161</span> <span class="keyword">with</span> self._clientsConnectedLock: <span class="comment"># because our list is not threadsafe</span></div>
<div class="line"><span class="lineno"> 162</span> <span class="keywordflow">return</span> len(self._clientsConnected)</div>
<div class="line"><span class="lineno"> 163</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="ace26dcf01e7072e302d25751cfd35999" name="ace26dcf01e7072e302d25751cfd35999"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ace26dcf01e7072e302d25751cfd35999">&#9670;&#160;</a></span>getClientsConnected()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">boswatch.network.server.TCPServer.getClientsConnected </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>A list of all connected clients with their IP address and last seen timestamp _clients[ThreadName] = {"address", "timestamp"}. </p>
<dl class="section return"><dt>Returns</dt><dd>List of onnected clients </dd></dl>
<div class="fragment"><div class="line"><span class="lineno"> 164</span> <span class="keyword">def </span>getClientsConnected(self):</div>
<div class="line"><span class="lineno"> 165</span> <span class="stringliteral">r&quot;&quot;&quot;!A list of all connected clients</span></div>
<div class="line"><span class="lineno"> 166</span><span class="stringliteral"> with their IP address and last seen timestamp</span></div>
<div class="line"><span class="lineno"> 167</span><span class="stringliteral"> _clients[ThreadName] = {&quot;address&quot;, &quot;timestamp&quot;}</span></div>
<div class="line"><span class="lineno"> 168</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 169</span><span class="stringliteral"> @return List of onnected clients&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 170</span> <span class="comment"># todo return full list or write a print/debug method?</span></div>
<div class="line"><span class="lineno"> 171</span> <span class="keyword">with</span> self._clientsConnectedLock: <span class="comment"># because our list is not threadsafe</span></div>
<div class="line"><span class="lineno"> 172</span> <span class="keywordflow">return</span> self._clientsConnected</div>
<div class="line"><span class="lineno"> 173</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="aeba7db2323e57b57d17c05ab9f448370" name="aeba7db2323e57b57d17c05ab9f448370"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aeba7db2323e57b57d17c05ab9f448370">&#9670;&#160;</a></span>isRunning()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">boswatch.network.server.TCPServer.isRunning </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Property of server running state. </p>
<div class="fragment"><div class="line"><span class="lineno"> 175</span> <span class="keyword">def </span>isRunning(self):</div>
<div class="line"><span class="lineno"> 176</span> <span class="stringliteral">r&quot;&quot;&quot;!Property of server running state&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 177</span> <span class="keywordflow">if</span> self._server:</div>
<div class="line"><span class="lineno"> 178</span> <span class="keywordflow">return</span> <span class="keyword">True</span></div>
<div class="line"><span class="lineno"> 179</span> <span class="keywordflow">return</span> <span class="keyword">False</span></div>
</div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">Field Documentation</h2>
<a id="a196dd011e76b9ffa269b1d7ae945317f" name="a196dd011e76b9ffa269b1d7ae945317f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a196dd011e76b9ffa269b1d7ae945317f">&#9670;&#160;</a></span>_server</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">boswatch.network.server.TCPServer._server = None</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a069063419170444e452c49d4d3226d42" name="a069063419170444e452c49d4d3226d42"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a069063419170444e452c49d4d3226d42">&#9670;&#160;</a></span>_server_thread <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">boswatch.network.server.TCPServer._server_thread = None</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a34210569d9aeb0f83e23fda9ac6501c1" name="a34210569d9aeb0f83e23fda9ac6501c1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a34210569d9aeb0f83e23fda9ac6501c1">&#9670;&#160;</a></span>_timeout</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">boswatch.network.server.TCPServer._timeout = timeout</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a3126636b3ebc15906a02433a9f921cdd" name="a3126636b3ebc15906a02433a9f921cdd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3126636b3ebc15906a02433a9f921cdd">&#9670;&#160;</a></span>_alarmQueue</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">boswatch.network.server.TCPServer._alarmQueue = alarmQueue</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ad7d5a3318dd17eb81d4145b364354b9b" name="ad7d5a3318dd17eb81d4145b364354b9b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad7d5a3318dd17eb81d4145b364354b9b">&#9670;&#160;</a></span>_clientsConnectedLock</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"># because our list is not threadsafe boswatch.network.server.TCPServer._clientsConnectedLock = threading.Lock()</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ad384e027f90c85bd533081c5df69c143" name="ad384e027f90c85bd533081c5df69c143"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad384e027f90c85bd533081c5df69c143">&#9670;&#160;</a></span>_clientsConnected</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">boswatch.network.server.TCPServer._clientsConnected = {}</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ab0b936931fdf4ccc43aa17b78732b207" name="ab0b936931fdf4ccc43aa17b78732b207"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab0b936931fdf4ccc43aa17b78732b207">&#9670;&#160;</a></span>isRunning <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool boswatch.network.server.TCPServer.isRunning = False</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ab0b936931fdf4ccc43aa17b78732b207" name="ab0b936931fdf4ccc43aa17b78732b207"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab0b936931fdf4ccc43aa17b78732b207">&#9670;&#160;</a></span>isRunning <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool boswatch.network.server.TCPServer.isRunning = True</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a502b42c4e702a1ef1440d7d156ea4493" name="a502b42c4e702a1ef1440d7d156ea4493"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a502b42c4e702a1ef1440d7d156ea4493">&#9670;&#160;</a></span>_server_thread <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">str boswatch.network.server.TCPServer._server_thread = &quot;Thread-BWServer&quot;</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespaceboswatch.html">boswatch</a></li><li class="navelem"><a class="el" href="namespaceboswatch_1_1network.html">network</a></li><li class="navelem"><a class="el" href="namespaceboswatch_1_1network_1_1server.html">server</a></li><li class="navelem"><a class="el" href="classboswatch_1_1network_1_1server_1_1_t_c_p_server.html">TCPServer</a></li>
<li class="footer">Generated on Wed Jun 11 2025 08:24:06 for BOSWatch 3 by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
</ul>
</div>
</body>
</html>

View file

@ -0,0 +1,19 @@
var classboswatch_1_1network_1_1server_1_1_t_c_p_server =
[
[ "__init__", "classboswatch_1_1network_1_1server_1_1_t_c_p_server.html#aa7bde82a0490275757eb62cf2245ece8", null ],
[ "__del__", "classboswatch_1_1network_1_1server_1_1_t_c_p_server.html#a7bd8bbf36dc9e947fd6889b64e66bf79", null ],
[ "start", "classboswatch_1_1network_1_1server_1_1_t_c_p_server.html#aef3b308e2d4d28406bdb31be97460e60", null ],
[ "stop", "classboswatch_1_1network_1_1server_1_1_t_c_p_server.html#adcb3af039525e3fd4465f661e985eba1", null ],
[ "countClientsConnected", "classboswatch_1_1network_1_1server_1_1_t_c_p_server.html#a96ddddf0a3fbac223d04ef68de9b35cd", null ],
[ "getClientsConnected", "classboswatch_1_1network_1_1server_1_1_t_c_p_server.html#ace26dcf01e7072e302d25751cfd35999", null ],
[ "isRunning", "classboswatch_1_1network_1_1server_1_1_t_c_p_server.html#aeba7db2323e57b57d17c05ab9f448370", null ],
[ "_server", "classboswatch_1_1network_1_1server_1_1_t_c_p_server.html#a196dd011e76b9ffa269b1d7ae945317f", null ],
[ "_server_thread", "classboswatch_1_1network_1_1server_1_1_t_c_p_server.html#a069063419170444e452c49d4d3226d42", null ],
[ "_timeout", "classboswatch_1_1network_1_1server_1_1_t_c_p_server.html#a34210569d9aeb0f83e23fda9ac6501c1", null ],
[ "_alarmQueue", "classboswatch_1_1network_1_1server_1_1_t_c_p_server.html#a3126636b3ebc15906a02433a9f921cdd", null ],
[ "_clientsConnectedLock", "classboswatch_1_1network_1_1server_1_1_t_c_p_server.html#ad7d5a3318dd17eb81d4145b364354b9b", null ],
[ "_clientsConnected", "classboswatch_1_1network_1_1server_1_1_t_c_p_server.html#ad384e027f90c85bd533081c5df69c143", null ],
[ "isRunning", "classboswatch_1_1network_1_1server_1_1_t_c_p_server.html#ab0b936931fdf4ccc43aa17b78732b207", null ],
[ "isRunning", "classboswatch_1_1network_1_1server_1_1_t_c_p_server.html#ab0b936931fdf4ccc43aa17b78732b207", null ],
[ "_server_thread", "classboswatch_1_1network_1_1server_1_1_t_c_p_server.html#a502b42c4e702a1ef1440d7d156ea4493", null ]
];

View file

@ -0,0 +1,350 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.12.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>BOSWatch 3: boswatch.packet.Packet Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">BOSWatch 3
</div>
<div id="projectbrief">Python Script to receive and decode German BOS Information with rtl_fm and multimon-NG</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.12.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('classboswatch_1_1packet_1_1_packet.html',''); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pro-attribs">Protected Attributes</a> </div>
<div class="headertitle"><div class="title">boswatch.packet.Packet Class Reference</div></div>
</div><!--header-->
<div class="contents">
<p>Class implementation of an BOSWatch packet.
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a33f9ad91a87a012e192cd2ef629b536e" id="r_a33f9ad91a87a012e192cd2ef629b536e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a33f9ad91a87a012e192cd2ef629b536e">__init__</a> (self, bwPacket=None)</td></tr>
<tr class="memdesc:a33f9ad91a87a012e192cd2ef629b536e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Build a new BOSWatch packet or copy existing data in it. <br /></td></tr>
<tr class="separator:a33f9ad91a87a012e192cd2ef629b536e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaa72c4726ad47f994e915ad397b89186" id="r_aaa72c4726ad47f994e915ad397b89186"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aaa72c4726ad47f994e915ad397b89186">__str__</a> (self)</td></tr>
<tr class="memdesc:aaa72c4726ad47f994e915ad397b89186"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the intern _packet dict as string. <br /></td></tr>
<tr class="separator:aaa72c4726ad47f994e915ad397b89186"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae2562639ea14f5e92fbe5048af72a2f9" id="r_ae2562639ea14f5e92fbe5048af72a2f9"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ae2562639ea14f5e92fbe5048af72a2f9">set</a> (self, fieldName, value)</td></tr>
<tr class="memdesc:ae2562639ea14f5e92fbe5048af72a2f9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set a field in the intern _packet dict. <br /></td></tr>
<tr class="separator:ae2562639ea14f5e92fbe5048af72a2f9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a58fbb3a8a2080ea38a49bb5bead48a44" id="r_a58fbb3a8a2080ea38a49bb5bead48a44"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a58fbb3a8a2080ea38a49bb5bead48a44">get</a> (self, fieldName)</td></tr>
<tr class="memdesc:a58fbb3a8a2080ea38a49bb5bead48a44"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the value from a single field. <br /></td></tr>
<tr class="separator:a58fbb3a8a2080ea38a49bb5bead48a44"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a01a4bf1fb3af1e72d5a2da96d296e832" id="r_a01a4bf1fb3af1e72d5a2da96d296e832"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a01a4bf1fb3af1e72d5a2da96d296e832">printInfo</a> (self)</td></tr>
<tr class="memdesc:a01a4bf1fb3af1e72d5a2da96d296e832"><td class="mdescLeft">&#160;</td><td class="mdescRight">Print a info message to the log on INFO level. <br /></td></tr>
<tr class="separator:a01a4bf1fb3af1e72d5a2da96d296e832"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pro-attribs" name="pro-attribs"></a>
Protected Attributes</h2></td></tr>
<tr class="memitem:a3fb27af3d9f25714b715ac313798cbb2" id="r_a3fb27af3d9f25714b715ac313798cbb2"><td class="memItemLeft" align="right" valign="top">dict&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a3fb27af3d9f25714b715ac313798cbb2">_packet</a> = {&quot;timestamp&quot;: time.time()}</td></tr>
<tr class="separator:a3fb27af3d9f25714b715ac313798cbb2"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Class implementation of an BOSWatch packet. </p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a33f9ad91a87a012e192cd2ef629b536e" name="a33f9ad91a87a012e192cd2ef629b536e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a33f9ad91a87a012e192cd2ef629b536e">&#9670;&#160;</a></span>__init__()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">boswatch.packet.Packet.__init__ </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>bwPacket</em></span><span class="paramdefsep"> = </span><span class="paramdefval">None</span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Build a new BOSWatch packet or copy existing data in it. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">bwPacket</td><td>Existing data to copy </td></tr>
</table>
</dd>
</dl>
<div class="fragment"><div class="line"><span class="lineno"> 26</span> <span class="keyword">def </span>__init__(self, bwPacket=None):</div>
<div class="line"><span class="lineno"> 27</span> <span class="stringliteral">r&quot;&quot;&quot;!Build a new BOSWatch packet or copy existing data in it</span></div>
<div class="line"><span class="lineno"> 28</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 29</span><span class="stringliteral"> @param bwPacket: Existing data to copy&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 30</span> <span class="keywordflow">if</span> bwPacket <span class="keywordflow">is</span> <span class="keywordtype">None</span>:</div>
<div class="line"><span class="lineno"> 31</span> logging.debug(<span class="stringliteral">&quot;create new bwPacket&quot;</span>)</div>
<div class="line"><span class="lineno"> 32</span> self._packet = {<span class="stringliteral">&quot;timestamp&quot;</span>: time.time()}</div>
<div class="line"><span class="lineno"> 33</span> <span class="keywordflow">else</span>:</div>
<div class="line"><span class="lineno"> 34</span> logging.debug(<span class="stringliteral">&quot;create bwPacket from string&quot;</span>)</div>
<div class="line"><span class="lineno"> 35</span> self._packet = eval(str(bwPacket.strip()))</div>
<div class="line"><span class="lineno"> 36</span> </div>
</div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="aaa72c4726ad47f994e915ad397b89186" name="aaa72c4726ad47f994e915ad397b89186"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aaa72c4726ad47f994e915ad397b89186">&#9670;&#160;</a></span>__str__()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">boswatch.packet.Packet.__str__ </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Return the intern _packet dict as string. </p>
<div class="fragment"><div class="line"><span class="lineno"> 37</span> <span class="keyword">def </span>__str__(self):</div>
<div class="line"><span class="lineno"> 38</span> <span class="stringliteral">r&quot;&quot;&quot;!Return the intern _packet dict as string&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 39</span> <span class="keywordflow">return</span> str(self._packet)</div>
<div class="line"><span class="lineno"> 40</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="ae2562639ea14f5e92fbe5048af72a2f9" name="ae2562639ea14f5e92fbe5048af72a2f9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae2562639ea14f5e92fbe5048af72a2f9">&#9670;&#160;</a></span>set()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">boswatch.packet.Packet.set </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>fieldName</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>value</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Set a field in the intern _packet dict. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">fieldName</td><td>Name of the data to set </td></tr>
<tr><td class="paramname">value</td><td>Value to set </td></tr>
</table>
</dd>
</dl>
<div class="fragment"><div class="line"><span class="lineno"> 41</span> <span class="keyword">def </span>set(self, fieldName, value):</div>
<div class="line"><span class="lineno"> 42</span> <span class="stringliteral">r&quot;&quot;&quot;!Set a field in the intern _packet dict</span></div>
<div class="line"><span class="lineno"> 43</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 44</span><span class="stringliteral"> @param fieldName: Name of the data to set</span></div>
<div class="line"><span class="lineno"> 45</span><span class="stringliteral"> @param value: Value to set&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 46</span> self._packet[fieldName] = str(value)</div>
<div class="line"><span class="lineno"> 47</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="a58fbb3a8a2080ea38a49bb5bead48a44" name="a58fbb3a8a2080ea38a49bb5bead48a44"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a58fbb3a8a2080ea38a49bb5bead48a44">&#9670;&#160;</a></span>get()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">boswatch.packet.Packet.get </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>fieldName</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the value from a single field. </p>
<p>If field not existing <code>None</code> is returned</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">fieldName</td><td>Name of the field </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Value or None </dd></dl>
<div class="fragment"><div class="line"><span class="lineno"> 48</span> <span class="keyword">def </span>get(self, fieldName):</div>
<div class="line"><span class="lineno"> 49</span> <span class="stringliteral">r&quot;&quot;&quot;!Returns the value from a single field.</span></div>
<div class="line"><span class="lineno"> 50</span><span class="stringliteral"> If field not existing `None` is returned</span></div>
<div class="line"><span class="lineno"> 51</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 52</span><span class="stringliteral"> @param fieldName: Name of the field</span></div>
<div class="line"><span class="lineno"> 53</span><span class="stringliteral"> @return Value or None&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 54</span> <span class="keywordflow">try</span>:</div>
<div class="line"><span class="lineno"> 55</span> <span class="keywordflow">return</span> str(self._packet[fieldName])</div>
<div class="line"><span class="lineno"> 56</span> <span class="keywordflow">except</span>:</div>
<div class="line"><span class="lineno"> 57</span> logging.warning(<span class="stringliteral">&quot;field not found: %s&quot;</span>, fieldName)</div>
<div class="line"><span class="lineno"> 58</span> <span class="keywordflow">return</span> <span class="keywordtype">None</span></div>
<div class="line"><span class="lineno"> 59</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="a01a4bf1fb3af1e72d5a2da96d296e832" name="a01a4bf1fb3af1e72d5a2da96d296e832"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a01a4bf1fb3af1e72d5a2da96d296e832">&#9670;&#160;</a></span>printInfo()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">boswatch.packet.Packet.printInfo </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Print a info message to the log on INFO level. </p>
<p>Contains the most useful info about this packet. </p><dl class="todo"><dt><b><a class="el" href="todo.html#_todo000001">Todo</a></b></dt><dd>not complete yet - must be edit to print nice formatted messages on console </dd></dl>
<div class="fragment"><div class="line"><span class="lineno"> 60</span> <span class="keyword">def </span>printInfo(self):</div>
<div class="line"><span class="lineno"> 61</span> <span class="stringliteral">r&quot;&quot;&quot;!Print a info message to the log on INFO level.</span></div>
<div class="line"><span class="lineno"> 62</span><span class="stringliteral"> Contains the most useful info about this packet.</span></div>
<div class="line"><span class="lineno"> 63</span><span class="stringliteral"> @todo not complete yet - must be edit to print nice formatted messages on console</span></div>
<div class="line"><span class="lineno"> 64</span><span class="stringliteral"> &quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 65</span> logging.info(<span class="stringliteral">&quot;[%s]&quot;</span>, self.get(<span class="stringliteral">&quot;mode&quot;</span>))</div>
</div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">Field Documentation</h2>
<a id="a3fb27af3d9f25714b715ac313798cbb2" name="a3fb27af3d9f25714b715ac313798cbb2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3fb27af3d9f25714b715ac313798cbb2">&#9670;&#160;</a></span>_packet</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">boswatch.packet.Packet._packet = {&quot;timestamp&quot;: time.time()}</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespaceboswatch.html">boswatch</a></li><li class="navelem"><a class="el" href="namespaceboswatch_1_1packet.html">packet</a></li><li class="navelem"><a class="el" href="classboswatch_1_1packet_1_1_packet.html">Packet</a></li>
<li class="footer">Generated on Wed Jun 11 2025 08:24:06 for BOSWatch 3 by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
</ul>
</div>
</body>
</html>

View file

@ -0,0 +1,9 @@
var classboswatch_1_1packet_1_1_packet =
[
[ "__init__", "classboswatch_1_1packet_1_1_packet.html#a33f9ad91a87a012e192cd2ef629b536e", null ],
[ "__str__", "classboswatch_1_1packet_1_1_packet.html#aaa72c4726ad47f994e915ad397b89186", null ],
[ "set", "classboswatch_1_1packet_1_1_packet.html#ae2562639ea14f5e92fbe5048af72a2f9", null ],
[ "get", "classboswatch_1_1packet_1_1_packet.html#a58fbb3a8a2080ea38a49bb5bead48a44", null ],
[ "printInfo", "classboswatch_1_1packet_1_1_packet.html#a01a4bf1fb3af1e72d5a2da96d296e832", null ],
[ "_packet", "classboswatch_1_1packet_1_1_packet.html#a3fb27af3d9f25714b715ac313798cbb2", null ]
];

View file

@ -0,0 +1,780 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.12.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>BOSWatch 3: boswatch.processManager.ProcessManager Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">BOSWatch 3
</div>
<div id="projectbrief">Python Script to receive and decode German BOS Information with rtl_fm and multimon-NG</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.12.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('classboswatch_1_1process_manager_1_1_process_manager.html',''); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-attribs">Data Fields</a> &#124;
<a href="#pro-attribs">Protected Attributes</a> </div>
<div class="headertitle"><div class="title">boswatch.processManager.ProcessManager Class Reference</div></div>
</div><!--header-->
<div class="contents">
<p>class to manage a extern sub process
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a932e0d5d67cca47b4e5fc73a25082408" id="r_a932e0d5d67cca47b4e5fc73a25082408"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a932e0d5d67cca47b4e5fc73a25082408">__init__</a> (self, process, textMode=False)</td></tr>
<tr class="separator:a932e0d5d67cca47b4e5fc73a25082408"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a83b9d7d3aa926c0cdbe86d4a36873c50" id="r_a83b9d7d3aa926c0cdbe86d4a36873c50"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a83b9d7d3aa926c0cdbe86d4a36873c50">addArgument</a> (self, arg)</td></tr>
<tr class="memdesc:a83b9d7d3aa926c0cdbe86d4a36873c50"><td class="mdescLeft">&#160;</td><td class="mdescRight">add a new argument <br /></td></tr>
<tr class="separator:a83b9d7d3aa926c0cdbe86d4a36873c50"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aafaebfc0b133edfad339910f92d941de" id="r_aafaebfc0b133edfad339910f92d941de"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aafaebfc0b133edfad339910f92d941de">clearArguments</a> (self)</td></tr>
<tr class="memdesc:aafaebfc0b133edfad339910f92d941de"><td class="mdescLeft">&#160;</td><td class="mdescRight">clear all arguments <br /></td></tr>
<tr class="separator:aafaebfc0b133edfad339910f92d941de"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9dddc0c204be55e4391557f2cb1616bf" id="r_a9dddc0c204be55e4391557f2cb1616bf"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a9dddc0c204be55e4391557f2cb1616bf">start</a> (self)</td></tr>
<tr class="memdesc:a9dddc0c204be55e4391557f2cb1616bf"><td class="mdescLeft">&#160;</td><td class="mdescRight">start the new process <br /></td></tr>
<tr class="separator:a9dddc0c204be55e4391557f2cb1616bf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9f0eb14407cf78ab7010bf247c8d6115" id="r_a9f0eb14407cf78ab7010bf247c8d6115"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a9f0eb14407cf78ab7010bf247c8d6115">stop</a> (self)</td></tr>
<tr class="memdesc:a9f0eb14407cf78ab7010bf247c8d6115"><td class="mdescLeft">&#160;</td><td class="mdescRight">Stop the process by sending SIGTERM and wait for ending. <br /></td></tr>
<tr class="separator:a9f0eb14407cf78ab7010bf247c8d6115"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a80143d4751ce9b1cc8a164cd56c8dbca" id="r_a80143d4751ce9b1cc8a164cd56c8dbca"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a80143d4751ce9b1cc8a164cd56c8dbca">readline</a> (self)</td></tr>
<tr class="memdesc:a80143d4751ce9b1cc8a164cd56c8dbca"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read one line from stdout stream. <br /></td></tr>
<tr class="separator:a80143d4751ce9b1cc8a164cd56c8dbca"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac86f2638f1239a188692006699471f1f" id="r_ac86f2638f1239a188692006699471f1f"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ac86f2638f1239a188692006699471f1f">skipLines</a> (self, lineCount=1)</td></tr>
<tr class="memdesc:ac86f2638f1239a188692006699471f1f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Skip given number of lines from the output. <br /></td></tr>
<tr class="separator:ac86f2638f1239a188692006699471f1f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af2886ee808fe04cebd36bc72ad8616c3" id="r_af2886ee808fe04cebd36bc72ad8616c3"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#af2886ee808fe04cebd36bc72ad8616c3">skipLinesUntil</a> (self, matchText)</td></tr>
<tr class="memdesc:af2886ee808fe04cebd36bc72ad8616c3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Skip lines from the output until the given string is in it. <br /></td></tr>
<tr class="separator:af2886ee808fe04cebd36bc72ad8616c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3872072d62e14aec84d190d5a31626e9" id="r_a3872072d62e14aec84d190d5a31626e9"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a3872072d62e14aec84d190d5a31626e9">setStdin</a> (self, stdin)</td></tr>
<tr class="memdesc:a3872072d62e14aec84d190d5a31626e9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the stdin stream instance. <br /></td></tr>
<tr class="separator:a3872072d62e14aec84d190d5a31626e9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8b34c7836cc8947e174d0e0cc84b4cd3" id="r_a8b34c7836cc8947e174d0e0cc84b4cd3"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a8b34c7836cc8947e174d0e0cc84b4cd3">setStdout</a> (self, <a class="el" href="#a68468dd0235a3b0725d70852670e9ac4">stdout</a>)</td></tr>
<tr class="memdesc:a8b34c7836cc8947e174d0e0cc84b4cd3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the stdout stream instance. <br /></td></tr>
<tr class="separator:a8b34c7836cc8947e174d0e0cc84b4cd3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3abb0b2b54f126e46774a0f33fc2980c" id="r_a3abb0b2b54f126e46774a0f33fc2980c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a3abb0b2b54f126e46774a0f33fc2980c">setStderr</a> (self, <a class="el" href="#a401b316004c76dea8175e7a879f649d4">stderr</a>)</td></tr>
<tr class="memdesc:a3abb0b2b54f126e46774a0f33fc2980c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the stderr stream instance. <br /></td></tr>
<tr class="separator:a3abb0b2b54f126e46774a0f33fc2980c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a68468dd0235a3b0725d70852670e9ac4" id="r_a68468dd0235a3b0725d70852670e9ac4"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a68468dd0235a3b0725d70852670e9ac4">stdout</a> (self)</td></tr>
<tr class="memdesc:a68468dd0235a3b0725d70852670e9ac4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Property to get the stdout stream. <br /></td></tr>
<tr class="separator:a68468dd0235a3b0725d70852670e9ac4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a401b316004c76dea8175e7a879f649d4" id="r_a401b316004c76dea8175e7a879f649d4"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a401b316004c76dea8175e7a879f649d4">stderr</a> (self)</td></tr>
<tr class="memdesc:a401b316004c76dea8175e7a879f649d4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Property to get the stderr stream. <br /></td></tr>
<tr class="separator:a401b316004c76dea8175e7a879f649d4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a31152ee52782cf204c84cb557591f4b8" id="r_a31152ee52782cf204c84cb557591f4b8"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a31152ee52782cf204c84cb557591f4b8">isRunning</a> (self)</td></tr>
<tr class="memdesc:a31152ee52782cf204c84cb557591f4b8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Property to get process running state. <br /></td></tr>
<tr class="separator:a31152ee52782cf204c84cb557591f4b8"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
Data Fields</h2></td></tr>
<tr class="memitem:a67863ea2b20617af7d4b54691e75cded" id="r_a67863ea2b20617af7d4b54691e75cded"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a67863ea2b20617af7d4b54691e75cded">isRunning</a></td></tr>
<tr class="separator:a67863ea2b20617af7d4b54691e75cded"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pro-attribs" name="pro-attribs"></a>
Protected Attributes</h2></td></tr>
<tr class="memitem:a115b1f84ab38b22275d409a63257c2e9" id="r_a115b1f84ab38b22275d409a63257c2e9"><td class="memItemLeft" align="right" valign="top">list&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a115b1f84ab38b22275d409a63257c2e9">_args</a> = []</td></tr>
<tr class="separator:a115b1f84ab38b22275d409a63257c2e9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6d4df5612ac7d822144b8198299588f8" id="r_a6d4df5612ac7d822144b8198299588f8"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a6d4df5612ac7d822144b8198299588f8">_stdin</a> = None</td></tr>
<tr class="separator:a6d4df5612ac7d822144b8198299588f8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a593dfb43e5f701227e166ceb0dc1d930" id="r_a593dfb43e5f701227e166ceb0dc1d930"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a593dfb43e5f701227e166ceb0dc1d930">_stdout</a> = subprocess.PIPE</td></tr>
<tr class="separator:a593dfb43e5f701227e166ceb0dc1d930"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abb6bac128e56b2167fdf56f5bd3cea2e" id="r_abb6bac128e56b2167fdf56f5bd3cea2e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#abb6bac128e56b2167fdf56f5bd3cea2e">_stderr</a> = subprocess.STDOUT</td></tr>
<tr class="separator:abb6bac128e56b2167fdf56f5bd3cea2e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aee5993f601ba3472c92bb06a0b278663" id="r_aee5993f601ba3472c92bb06a0b278663"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aee5993f601ba3472c92bb06a0b278663">_processHandle</a> = None</td></tr>
<tr class="separator:aee5993f601ba3472c92bb06a0b278663"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2c5d6361b9973cc43ed452056bda080b" id="r_a2c5d6361b9973cc43ed452056bda080b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a2c5d6361b9973cc43ed452056bda080b">_textMode</a> = textMode</td></tr>
<tr class="separator:a2c5d6361b9973cc43ed452056bda080b"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>class to manage a extern sub process </p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a932e0d5d67cca47b4e5fc73a25082408" name="a932e0d5d67cca47b4e5fc73a25082408"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a932e0d5d67cca47b4e5fc73a25082408">&#9670;&#160;</a></span>__init__()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">boswatch.processManager.ProcessManager.__init__ </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>process</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>textMode</em></span><span class="paramdefsep"> = </span><span class="paramdefval">False</span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<div class="fragment"><div class="line"><span class="lineno"> 25</span> <span class="keyword">def </span>__init__(self, process, textMode=False):</div>
<div class="line"><span class="lineno"> 26</span> logging.debug(<span class="stringliteral">&quot;create process instance %s - textMode: %s&quot;</span>, process, textMode)</div>
<div class="line"><span class="lineno"> 27</span> self._args = []</div>
<div class="line"><span class="lineno"> 28</span> self._args.append(process)</div>
<div class="line"><span class="lineno"> 29</span> self._stdin = <span class="keywordtype">None</span></div>
<div class="line"><span class="lineno"> 30</span> self._stdout = subprocess.PIPE</div>
<div class="line"><span class="lineno"> 31</span> self._stderr = subprocess.STDOUT</div>
<div class="line"><span class="lineno"> 32</span> self._processHandle = <span class="keywordtype">None</span></div>
<div class="line"><span class="lineno"> 33</span> self._textMode = textMode</div>
<div class="line"><span class="lineno"> 34</span> </div>
</div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a83b9d7d3aa926c0cdbe86d4a36873c50" name="a83b9d7d3aa926c0cdbe86d4a36873c50"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a83b9d7d3aa926c0cdbe86d4a36873c50">&#9670;&#160;</a></span>addArgument()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">boswatch.processManager.ProcessManager.addArgument </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>arg</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>add a new argument </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">arg</td><td>argument to add as string </td></tr>
</table>
</dd>
</dl>
<div class="fragment"><div class="line"><span class="lineno"> 35</span> <span class="keyword">def </span>addArgument(self, arg):</div>
<div class="line"><span class="lineno"> 36</span> <span class="stringliteral">r&quot;&quot;&quot;!add a new argument</span></div>
<div class="line"><span class="lineno"> 37</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 38</span><span class="stringliteral"> @param arg: argument to add as string&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 39</span> logging.debug(<span class="stringliteral">&quot;add argument to process: %s -&gt; %s&quot;</span>, self._args[0], arg)</div>
<div class="line"><span class="lineno"> 40</span> <span class="keywordflow">for</span> splitArg <span class="keywordflow">in</span> arg.split():</div>
<div class="line"><span class="lineno"> 41</span> self._args.append(splitArg)</div>
<div class="line"><span class="lineno"> 42</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="aafaebfc0b133edfad339910f92d941de" name="aafaebfc0b133edfad339910f92d941de"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aafaebfc0b133edfad339910f92d941de">&#9670;&#160;</a></span>clearArguments()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">boswatch.processManager.ProcessManager.clearArguments </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>clear all arguments </p>
<div class="fragment"><div class="line"><span class="lineno"> 43</span> <span class="keyword">def </span>clearArguments(self):</div>
<div class="line"><span class="lineno"> 44</span> <span class="stringliteral">r&quot;&quot;&quot;!clear all arguments&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 45</span> self._args = self._args[0:1] <span class="comment"># kept first element (process name)</span></div>
<div class="line"><span class="lineno"> 46</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="a9dddc0c204be55e4391557f2cb1616bf" name="a9dddc0c204be55e4391557f2cb1616bf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9dddc0c204be55e4391557f2cb1616bf">&#9670;&#160;</a></span>start()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">boswatch.processManager.ProcessManager.start </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>start the new process </p>
<dl class="section return"><dt>Returns</dt><dd>: True or False </dd></dl>
<div class="fragment"><div class="line"><span class="lineno"> 47</span> <span class="keyword">def </span>start(self):</div>
<div class="line"><span class="lineno"> 48</span> <span class="stringliteral">r&quot;&quot;&quot;!start the new process</span></div>
<div class="line"><span class="lineno"> 49</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 50</span><span class="stringliteral"> @return: True or False&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 51</span> logging.debug(<span class="stringliteral">&quot;start new process: %s %s&quot;</span>, self._args[0], self._args[1:])</div>
<div class="line"><span class="lineno"> 52</span> <span class="keywordflow">try</span>:</div>
<div class="line"><span class="lineno"> 53</span> self._processHandle = subprocess.Popen(self._args,</div>
<div class="line"><span class="lineno"> 54</span> stdin=self._stdin,</div>
<div class="line"><span class="lineno"> 55</span> stdout=self._stdout,</div>
<div class="line"><span class="lineno"> 56</span> stderr=self._stderr,</div>
<div class="line"><span class="lineno"> 57</span> universal_newlines=self._textMode,</div>
<div class="line"><span class="lineno"> 58</span> shell=<span class="keyword">False</span>)</div>
<div class="line"><span class="lineno"> 59</span> <span class="keywordflow">if</span> <span class="keywordflow">not</span> self.isRunning:</div>
<div class="line"><span class="lineno"> 60</span> logging.error(<span class="stringliteral">&quot;cannot start process&quot;</span>)</div>
<div class="line"><span class="lineno"> 61</span> <span class="keywordflow">return</span> <span class="keyword">False</span></div>
<div class="line"><span class="lineno"> 62</span> logging.debug(<span class="stringliteral">&quot;process started with PID %d&quot;</span>, self._processHandle.pid)</div>
<div class="line"><span class="lineno"> 63</span> <span class="keywordflow">return</span> <span class="keyword">True</span></div>
<div class="line"><span class="lineno"> 64</span> </div>
<div class="line"><span class="lineno"> 65</span> <span class="keywordflow">except</span> FileNotFoundError:</div>
<div class="line"><span class="lineno"> 66</span> logging.error(<span class="stringliteral">&quot;File not found: %s&quot;</span>, self._args[0])</div>
<div class="line"><span class="lineno"> 67</span> <span class="keywordflow">return</span> <span class="keyword">False</span></div>
<div class="line"><span class="lineno"> 68</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="a9f0eb14407cf78ab7010bf247c8d6115" name="a9f0eb14407cf78ab7010bf247c8d6115"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9f0eb14407cf78ab7010bf247c8d6115">&#9670;&#160;</a></span>stop()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">boswatch.processManager.ProcessManager.stop </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Stop the process by sending SIGTERM and wait for ending. </p>
<div class="fragment"><div class="line"><span class="lineno"> 69</span> <span class="keyword">def </span>stop(self):</div>
<div class="line"><span class="lineno"> 70</span> <span class="stringliteral">r&quot;&quot;&quot;!Stop the process by sending SIGTERM and wait for ending&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 71</span> logging.debug(<span class="stringliteral">&quot;stopping process: %s&quot;</span>, self._args[0])</div>
<div class="line"><span class="lineno"> 72</span> <span class="keywordflow">if</span> self.isRunning:</div>
<div class="line"><span class="lineno"> 73</span> self._processHandle.terminate()</div>
<div class="line"><span class="lineno"> 74</span> <span class="keywordflow">while</span> self.isRunning:</div>
<div class="line"><span class="lineno"> 75</span> <span class="keywordflow">pass</span></div>
<div class="line"><span class="lineno"> 76</span> logging.debug(<span class="stringliteral">&quot;process %s returned %d&quot;</span>, self._args[0], self._processHandle.returncode)</div>
<div class="line"><span class="lineno"> 77</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="a80143d4751ce9b1cc8a164cd56c8dbca" name="a80143d4751ce9b1cc8a164cd56c8dbca"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a80143d4751ce9b1cc8a164cd56c8dbca">&#9670;&#160;</a></span>readline()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">boswatch.processManager.ProcessManager.readline </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Read one line from stdout stream. </p>
<dl class="section return"><dt>Returns</dt><dd>singe line or None </dd></dl>
<div class="fragment"><div class="line"><span class="lineno"> 78</span> <span class="keyword">def </span>readline(self):</div>
<div class="line"><span class="lineno"> 79</span> <span class="stringliteral">r&quot;&quot;&quot;!Read one line from stdout stream</span></div>
<div class="line"><span class="lineno"> 80</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 81</span><span class="stringliteral"> @return singe line or None&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 82</span> <span class="keywordflow">if</span> self.isRunning <span class="keywordflow">and</span> self._stdout <span class="keywordflow">is</span> <span class="keywordflow">not</span> <span class="keywordtype">None</span>:</div>
<div class="line"><span class="lineno"> 83</span> <span class="keywordflow">try</span>:</div>
<div class="line"><span class="lineno"> 84</span> line = self._processHandle.stdout.readline().strip()</div>
<div class="line"><span class="lineno"> 85</span> <span class="keywordflow">except</span> UnicodeDecodeError:</div>
<div class="line"><span class="lineno"> 86</span> <span class="keywordflow">return</span> <span class="keywordtype">None</span></div>
<div class="line"><span class="lineno"> 87</span> <span class="keywordflow">return</span> line</div>
<div class="line"><span class="lineno"> 88</span> <span class="keywordflow">return</span> <span class="keywordtype">None</span></div>
<div class="line"><span class="lineno"> 89</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="ac86f2638f1239a188692006699471f1f" name="ac86f2638f1239a188692006699471f1f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac86f2638f1239a188692006699471f1f">&#9670;&#160;</a></span>skipLines()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">boswatch.processManager.ProcessManager.skipLines </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>lineCount</em></span><span class="paramdefsep"> = </span><span class="paramdefval">1</span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Skip given number of lines from the output. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">lineCount</td><td>number of lines to skip </td></tr>
</table>
</dd>
</dl>
<div class="fragment"><div class="line"><span class="lineno"> 90</span> <span class="keyword">def </span>skipLines(self, lineCount=1):</div>
<div class="line"><span class="lineno"> 91</span> <span class="stringliteral">r&quot;&quot;&quot;!Skip given number of lines from the output</span></div>
<div class="line"><span class="lineno"> 92</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 93</span><span class="stringliteral"> @param lineCount: number of lines to skip</span></div>
<div class="line"><span class="lineno"> 94</span><span class="stringliteral"> &quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 95</span> logging.debug(<span class="stringliteral">&quot;skip %d lines from output&quot;</span>, lineCount)</div>
<div class="line"><span class="lineno"> 96</span> <span class="keywordflow">while</span> self.isRunning <span class="keywordflow">and</span> lineCount:</div>
<div class="line"><span class="lineno"> 97</span> self.readline()</div>
<div class="line"><span class="lineno"> 98</span> lineCount -= 1</div>
<div class="line"><span class="lineno"> 99</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="af2886ee808fe04cebd36bc72ad8616c3" name="af2886ee808fe04cebd36bc72ad8616c3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af2886ee808fe04cebd36bc72ad8616c3">&#9670;&#160;</a></span>skipLinesUntil()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">boswatch.processManager.ProcessManager.skipLinesUntil </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>matchText</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Skip lines from the output until the given string is in it. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">matchText</td><td>string to search for in output </td></tr>
</table>
</dd>
</dl>
<div class="fragment"><div class="line"><span class="lineno"> 100</span> <span class="keyword">def </span>skipLinesUntil(self, matchText):</div>
<div class="line"><span class="lineno"> 101</span> <span class="stringliteral">r&quot;&quot;&quot;!Skip lines from the output until the given string is in it</span></div>
<div class="line"><span class="lineno"> 102</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 103</span><span class="stringliteral"> @param matchText: string to search for in output</span></div>
<div class="line"><span class="lineno"> 104</span><span class="stringliteral"> &quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 105</span> logging.debug(<span class="stringliteral">&quot;skip lines till &#39;%s&#39; from output&quot;</span>, matchText)</div>
<div class="line"><span class="lineno"> 106</span> <span class="keywordflow">if</span> <span class="keywordflow">not</span> self._textMode:</div>
<div class="line"><span class="lineno"> 107</span> matchText = bytes(matchText, <span class="stringliteral">&quot;utf-8&quot;</span>)</div>
<div class="line"><span class="lineno"> 108</span> <span class="keywordflow">while</span> self.isRunning <span class="keywordflow">and</span> matchText <span class="keywordflow">not</span> <span class="keywordflow">in</span> self.readline():</div>
<div class="line"><span class="lineno"> 109</span> <span class="keywordflow">pass</span></div>
<div class="line"><span class="lineno"> 110</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="a3872072d62e14aec84d190d5a31626e9" name="a3872072d62e14aec84d190d5a31626e9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3872072d62e14aec84d190d5a31626e9">&#9670;&#160;</a></span>setStdin()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">boswatch.processManager.ProcessManager.setStdin </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>stdin</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Set the stdin stream instance. </p>
<div class="fragment"><div class="line"><span class="lineno"> 111</span> <span class="keyword">def </span>setStdin(self, stdin):</div>
<div class="line"><span class="lineno"> 112</span> <span class="stringliteral">r&quot;&quot;&quot;!Set the stdin stream instance&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 113</span> self._stdin = stdin</div>
<div class="line"><span class="lineno"> 114</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="a8b34c7836cc8947e174d0e0cc84b4cd3" name="a8b34c7836cc8947e174d0e0cc84b4cd3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8b34c7836cc8947e174d0e0cc84b4cd3">&#9670;&#160;</a></span>setStdout()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">boswatch.processManager.ProcessManager.setStdout </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>stdout</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Set the stdout stream instance. </p>
<div class="fragment"><div class="line"><span class="lineno"> 115</span> <span class="keyword">def </span>setStdout(self, stdout):</div>
<div class="line"><span class="lineno"> 116</span> <span class="stringliteral">r&quot;&quot;&quot;!Set the stdout stream instance&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 117</span> self._stdout = stdout</div>
<div class="line"><span class="lineno"> 118</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="a3abb0b2b54f126e46774a0f33fc2980c" name="a3abb0b2b54f126e46774a0f33fc2980c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3abb0b2b54f126e46774a0f33fc2980c">&#9670;&#160;</a></span>setStderr()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">boswatch.processManager.ProcessManager.setStderr </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>stderr</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Set the stderr stream instance. </p>
<div class="fragment"><div class="line"><span class="lineno"> 119</span> <span class="keyword">def </span>setStderr(self, stderr):</div>
<div class="line"><span class="lineno"> 120</span> <span class="stringliteral">r&quot;&quot;&quot;!Set the stderr stream instance&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 121</span> self._stderr = stderr</div>
<div class="line"><span class="lineno"> 122</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="a68468dd0235a3b0725d70852670e9ac4" name="a68468dd0235a3b0725d70852670e9ac4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a68468dd0235a3b0725d70852670e9ac4">&#9670;&#160;</a></span>stdout()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">boswatch.processManager.ProcessManager.stdout </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Property to get the stdout stream. </p>
<div class="fragment"><div class="line"><span class="lineno"> 124</span> <span class="keyword">def </span>stdout(self):</div>
<div class="line"><span class="lineno"> 125</span> <span class="stringliteral">r&quot;&quot;&quot;!Property to get the stdout stream&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 126</span> <span class="keywordflow">return</span> self._processHandle.stdout</div>
<div class="line"><span class="lineno"> 127</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="a401b316004c76dea8175e7a879f649d4" name="a401b316004c76dea8175e7a879f649d4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a401b316004c76dea8175e7a879f649d4">&#9670;&#160;</a></span>stderr()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">boswatch.processManager.ProcessManager.stderr </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Property to get the stderr stream. </p>
<div class="fragment"><div class="line"><span class="lineno"> 129</span> <span class="keyword">def </span>stderr(self):</div>
<div class="line"><span class="lineno"> 130</span> <span class="stringliteral">r&quot;&quot;&quot;!Property to get the stderr stream&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 131</span> <span class="keywordflow">return</span> self._processHandle.stderr</div>
<div class="line"><span class="lineno"> 132</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="a31152ee52782cf204c84cb557591f4b8" name="a31152ee52782cf204c84cb557591f4b8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a31152ee52782cf204c84cb557591f4b8">&#9670;&#160;</a></span>isRunning()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">boswatch.processManager.ProcessManager.isRunning </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Property to get process running state. </p>
<dl class="section return"><dt>Returns</dt><dd>True or False </dd></dl>
<div class="fragment"><div class="line"><span class="lineno"> 134</span> <span class="keyword">def </span>isRunning(self):</div>
<div class="line"><span class="lineno"> 135</span> <span class="stringliteral">r&quot;&quot;&quot;!Property to get process running state</span></div>
<div class="line"><span class="lineno"> 136</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 137</span><span class="stringliteral"> @return True or False&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 138</span> <span class="keywordflow">if</span> self._processHandle:</div>
<div class="line"><span class="lineno"> 139</span> <span class="keywordflow">if</span> self._processHandle.poll() <span class="keywordflow">is</span> <span class="keywordtype">None</span>:</div>
<div class="line"><span class="lineno"> 140</span> <span class="keywordflow">return</span> <span class="keyword">True</span></div>
<div class="line"><span class="lineno"> 141</span> <span class="keywordflow">return</span> <span class="keyword">False</span></div>
</div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">Field Documentation</h2>
<a id="a115b1f84ab38b22275d409a63257c2e9" name="a115b1f84ab38b22275d409a63257c2e9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a115b1f84ab38b22275d409a63257c2e9">&#9670;&#160;</a></span>_args</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">list boswatch.processManager.ProcessManager._args = []</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a6d4df5612ac7d822144b8198299588f8" name="a6d4df5612ac7d822144b8198299588f8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6d4df5612ac7d822144b8198299588f8">&#9670;&#160;</a></span>_stdin</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">boswatch.processManager.ProcessManager._stdin = None</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a593dfb43e5f701227e166ceb0dc1d930" name="a593dfb43e5f701227e166ceb0dc1d930"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a593dfb43e5f701227e166ceb0dc1d930">&#9670;&#160;</a></span>_stdout</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">boswatch.processManager.ProcessManager._stdout = subprocess.PIPE</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="abb6bac128e56b2167fdf56f5bd3cea2e" name="abb6bac128e56b2167fdf56f5bd3cea2e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abb6bac128e56b2167fdf56f5bd3cea2e">&#9670;&#160;</a></span>_stderr</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">boswatch.processManager.ProcessManager._stderr = subprocess.STDOUT</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="aee5993f601ba3472c92bb06a0b278663" name="aee5993f601ba3472c92bb06a0b278663"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aee5993f601ba3472c92bb06a0b278663">&#9670;&#160;</a></span>_processHandle</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">boswatch.processManager.ProcessManager._processHandle = None</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a2c5d6361b9973cc43ed452056bda080b" name="a2c5d6361b9973cc43ed452056bda080b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2c5d6361b9973cc43ed452056bda080b">&#9670;&#160;</a></span>_textMode</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">boswatch.processManager.ProcessManager._textMode = textMode</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a67863ea2b20617af7d4b54691e75cded" name="a67863ea2b20617af7d4b54691e75cded"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a67863ea2b20617af7d4b54691e75cded">&#9670;&#160;</a></span>isRunning</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">boswatch.processManager.ProcessManager.isRunning</td>
</tr>
</table>
</div><div class="memdoc">
<b>Initial value:</b><div class="fragment"><div class="line">= subprocess.Popen(self._args,</div>
<div class="line"> stdin=self._stdin,</div>
<div class="line"> stdout=self._stdout,</div>
<div class="line"> stderr=self._stderr,</div>
<div class="line"> universal_newlines=self._textMode,</div>
<div class="line"> shell=<span class="keyword">False</span>)</div>
</div><!-- fragment -->
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespaceboswatch.html">boswatch</a></li><li class="navelem"><a class="el" href="namespaceboswatch_1_1process_manager.html">processManager</a></li><li class="navelem"><a class="el" href="classboswatch_1_1process_manager_1_1_process_manager.html">ProcessManager</a></li>
<li class="footer">Generated on Wed Jun 11 2025 08:24:06 for BOSWatch 3 by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
</ul>
</div>
</body>
</html>

View file

@ -0,0 +1,24 @@
var classboswatch_1_1process_manager_1_1_process_manager =
[
[ "__init__", "classboswatch_1_1process_manager_1_1_process_manager.html#a932e0d5d67cca47b4e5fc73a25082408", null ],
[ "addArgument", "classboswatch_1_1process_manager_1_1_process_manager.html#a83b9d7d3aa926c0cdbe86d4a36873c50", null ],
[ "clearArguments", "classboswatch_1_1process_manager_1_1_process_manager.html#aafaebfc0b133edfad339910f92d941de", null ],
[ "start", "classboswatch_1_1process_manager_1_1_process_manager.html#a9dddc0c204be55e4391557f2cb1616bf", null ],
[ "stop", "classboswatch_1_1process_manager_1_1_process_manager.html#a9f0eb14407cf78ab7010bf247c8d6115", null ],
[ "readline", "classboswatch_1_1process_manager_1_1_process_manager.html#a80143d4751ce9b1cc8a164cd56c8dbca", null ],
[ "skipLines", "classboswatch_1_1process_manager_1_1_process_manager.html#ac86f2638f1239a188692006699471f1f", null ],
[ "skipLinesUntil", "classboswatch_1_1process_manager_1_1_process_manager.html#af2886ee808fe04cebd36bc72ad8616c3", null ],
[ "setStdin", "classboswatch_1_1process_manager_1_1_process_manager.html#a3872072d62e14aec84d190d5a31626e9", null ],
[ "setStdout", "classboswatch_1_1process_manager_1_1_process_manager.html#a8b34c7836cc8947e174d0e0cc84b4cd3", null ],
[ "setStderr", "classboswatch_1_1process_manager_1_1_process_manager.html#a3abb0b2b54f126e46774a0f33fc2980c", null ],
[ "stdout", "classboswatch_1_1process_manager_1_1_process_manager.html#a68468dd0235a3b0725d70852670e9ac4", null ],
[ "stderr", "classboswatch_1_1process_manager_1_1_process_manager.html#a401b316004c76dea8175e7a879f649d4", null ],
[ "isRunning", "classboswatch_1_1process_manager_1_1_process_manager.html#a31152ee52782cf204c84cb557591f4b8", null ],
[ "_args", "classboswatch_1_1process_manager_1_1_process_manager.html#a115b1f84ab38b22275d409a63257c2e9", null ],
[ "_stdin", "classboswatch_1_1process_manager_1_1_process_manager.html#a6d4df5612ac7d822144b8198299588f8", null ],
[ "_stdout", "classboswatch_1_1process_manager_1_1_process_manager.html#a593dfb43e5f701227e166ceb0dc1d930", null ],
[ "_stderr", "classboswatch_1_1process_manager_1_1_process_manager.html#abb6bac128e56b2167fdf56f5bd3cea2e", null ],
[ "_processHandle", "classboswatch_1_1process_manager_1_1_process_manager.html#aee5993f601ba3472c92bb06a0b278663", null ],
[ "_textMode", "classboswatch_1_1process_manager_1_1_process_manager.html#a2c5d6361b9973cc43ed452056bda080b", null ],
[ "isRunning", "classboswatch_1_1process_manager_1_1_process_manager.html#a67863ea2b20617af7d4b54691e75cded", null ]
];

View file

@ -0,0 +1,262 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.12.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>BOSWatch 3: boswatch.router.route.Route Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">BOSWatch 3
</div>
<div id="projectbrief">Python Script to receive and decode German BOS Information with rtl_fm and multimon-NG</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.12.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('classboswatch_1_1router_1_1route_1_1_route.html',''); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-attribs">Data Fields</a> </div>
<div class="headertitle"><div class="title">boswatch.router.route.Route Class Reference</div></div>
</div><!--header-->
<div class="contents">
<p>Class for single routing points.
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a15d3829220d3bd9ba38fc95d562227e0" id="r_a15d3829220d3bd9ba38fc95d562227e0"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a15d3829220d3bd9ba38fc95d562227e0">__init__</a> (self, <a class="el" href="#a63208097fc8bfd4ae4395f238b24f6ec">name</a>, <a class="el" href="#a5854d6578e8f94a4e47d9b63e54bfda9">callback</a>, statsCallback=None, cleanupCallback=None)</td></tr>
<tr class="memdesc:a15d3829220d3bd9ba38fc95d562227e0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a instance of an route point. <br /></td></tr>
<tr class="separator:a15d3829220d3bd9ba38fc95d562227e0"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
Data Fields</h2></td></tr>
<tr class="memitem:a63208097fc8bfd4ae4395f238b24f6ec" id="r_a63208097fc8bfd4ae4395f238b24f6ec"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a63208097fc8bfd4ae4395f238b24f6ec">name</a> = name</td></tr>
<tr class="separator:a63208097fc8bfd4ae4395f238b24f6ec"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5854d6578e8f94a4e47d9b63e54bfda9" id="r_a5854d6578e8f94a4e47d9b63e54bfda9"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a5854d6578e8f94a4e47d9b63e54bfda9">callback</a> = callback</td></tr>
<tr class="separator:a5854d6578e8f94a4e47d9b63e54bfda9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0576a975ab706dd9bb5cfca8c2ce6e05" id="r_a0576a975ab706dd9bb5cfca8c2ce6e05"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a0576a975ab706dd9bb5cfca8c2ce6e05">statistics</a> = statsCallback</td></tr>
<tr class="separator:a0576a975ab706dd9bb5cfca8c2ce6e05"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acf9db2e5e2d24b93eb6bcf0a403c3914" id="r_acf9db2e5e2d24b93eb6bcf0a403c3914"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#acf9db2e5e2d24b93eb6bcf0a403c3914">cleanup</a> = cleanupCallback</td></tr>
<tr class="separator:acf9db2e5e2d24b93eb6bcf0a403c3914"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Class for single routing points. </p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a15d3829220d3bd9ba38fc95d562227e0" name="a15d3829220d3bd9ba38fc95d562227e0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a15d3829220d3bd9ba38fc95d562227e0">&#9670;&#160;</a></span>__init__()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">boswatch.router.route.Route.__init__ </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>name</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>callback</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>statsCallback</em></span><span class="paramdefsep"> = </span><span class="paramdefval">None</span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>cleanupCallback</em></span><span class="paramdefsep"> = </span><span class="paramdefval">None</span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Create a instance of an route point. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">name</td><td>name of the route point </td></tr>
<tr><td class="paramname">callback</td><td>instance of the callback function </td></tr>
<tr><td class="paramname">statsCallback</td><td>instance of the callback to get statistics (None) </td></tr>
<tr><td class="paramname">cleanupCallback</td><td>instance of the callback to run a cleanup method (None) </td></tr>
</table>
</dd>
</dl>
<div class="fragment"><div class="line"><span class="lineno"> 25</span> <span class="keyword">def </span>__init__(self, name, callback, statsCallback=None, cleanupCallback=None):</div>
<div class="line"><span class="lineno"> 26</span> <span class="stringliteral">r&quot;&quot;&quot;!Create a instance of an route point</span></div>
<div class="line"><span class="lineno"> 27</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 28</span><span class="stringliteral"> @param name: name of the route point</span></div>
<div class="line"><span class="lineno"> 29</span><span class="stringliteral"> @param callback: instance of the callback function</span></div>
<div class="line"><span class="lineno"> 30</span><span class="stringliteral"> @param statsCallback: instance of the callback to get statistics (None)</span></div>
<div class="line"><span class="lineno"> 31</span><span class="stringliteral"> @param cleanupCallback: instance of the callback to run a cleanup method (None)</span></div>
<div class="line"><span class="lineno"> 32</span><span class="stringliteral"> &quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 33</span> self.name = name</div>
<div class="line"><span class="lineno"> 34</span> self.callback = callback</div>
<div class="line"><span class="lineno"> 35</span> self.statistics = statsCallback</div>
<div class="line"><span class="lineno"> 36</span> self.cleanup = cleanupCallback</div>
</div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">Field Documentation</h2>
<a id="a63208097fc8bfd4ae4395f238b24f6ec" name="a63208097fc8bfd4ae4395f238b24f6ec"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a63208097fc8bfd4ae4395f238b24f6ec">&#9670;&#160;</a></span>name</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">boswatch.router.route.Route.name = name</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a5854d6578e8f94a4e47d9b63e54bfda9" name="a5854d6578e8f94a4e47d9b63e54bfda9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5854d6578e8f94a4e47d9b63e54bfda9">&#9670;&#160;</a></span>callback</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">boswatch.router.route.Route.callback = callback</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a0576a975ab706dd9bb5cfca8c2ce6e05" name="a0576a975ab706dd9bb5cfca8c2ce6e05"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0576a975ab706dd9bb5cfca8c2ce6e05">&#9670;&#160;</a></span>statistics</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">boswatch.router.route.Route.statistics = statsCallback</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="acf9db2e5e2d24b93eb6bcf0a403c3914" name="acf9db2e5e2d24b93eb6bcf0a403c3914"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acf9db2e5e2d24b93eb6bcf0a403c3914">&#9670;&#160;</a></span>cleanup</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">boswatch.router.route.Route.cleanup = cleanupCallback</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespaceboswatch.html">boswatch</a></li><li class="navelem"><a class="el" href="namespaceboswatch_1_1router.html">router</a></li><li class="navelem"><a class="el" href="namespaceboswatch_1_1router_1_1route.html">route</a></li><li class="navelem"><a class="el" href="classboswatch_1_1router_1_1route_1_1_route.html">Route</a></li>
<li class="footer">Generated on Wed Jun 11 2025 08:24:06 for BOSWatch 3 by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
</ul>
</div>
</body>
</html>

View file

@ -0,0 +1,8 @@
var classboswatch_1_1router_1_1route_1_1_route =
[
[ "__init__", "classboswatch_1_1router_1_1route_1_1_route.html#a15d3829220d3bd9ba38fc95d562227e0", null ],
[ "name", "classboswatch_1_1router_1_1route_1_1_route.html#a63208097fc8bfd4ae4395f238b24f6ec", null ],
[ "callback", "classboswatch_1_1router_1_1route_1_1_route.html#a5854d6578e8f94a4e47d9b63e54bfda9", null ],
[ "statistics", "classboswatch_1_1router_1_1route_1_1_route.html#a0576a975ab706dd9bb5cfca8c2ce6e05", null ],
[ "cleanup", "classboswatch_1_1router_1_1route_1_1_route.html#acf9db2e5e2d24b93eb6bcf0a403c3914", null ]
];

View file

@ -0,0 +1,441 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.12.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>BOSWatch 3: boswatch.router.router.Router Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">BOSWatch 3
</div>
<div id="projectbrief">Python Script to receive and decode German BOS Information with rtl_fm and multimon-NG</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.12.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('classboswatch_1_1router_1_1router_1_1_router.html',''); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-attribs">Data Fields</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> &#124;
<a href="#pro-attribs">Protected Attributes</a> </div>
<div class="headertitle"><div class="title">boswatch.router.router.Router Class Reference</div></div>
</div><!--header-->
<div class="contents">
<p>Class for the <a class="el" href="classboswatch_1_1router_1_1router_1_1_router.html" title="Class for the Router.">Router</a>.
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:aa7c921ad0880824595d7fa05bcac6b08" id="r_aa7c921ad0880824595d7fa05bcac6b08"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aa7c921ad0880824595d7fa05bcac6b08">__init__</a> (self, <a class="el" href="#a90d717b6aece9f0a505a0b85eb4dacfa">name</a>)</td></tr>
<tr class="memdesc:aa7c921ad0880824595d7fa05bcac6b08"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a new router. <br /></td></tr>
<tr class="separator:aa7c921ad0880824595d7fa05bcac6b08"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a561f89ef4e05555ea81cfa5da4551e0d" id="r_a561f89ef4e05555ea81cfa5da4551e0d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a561f89ef4e05555ea81cfa5da4551e0d">addRoute</a> (self, route)</td></tr>
<tr class="memdesc:a561f89ef4e05555ea81cfa5da4551e0d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Adds a route point to the router. <br /></td></tr>
<tr class="separator:a561f89ef4e05555ea81cfa5da4551e0d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a11fab65f0b4e7f2daff58fbd675d8347" id="r_a11fab65f0b4e7f2daff58fbd675d8347"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a11fab65f0b4e7f2daff58fbd675d8347">runRouter</a> (self, bwPacket)</td></tr>
<tr class="memdesc:a11fab65f0b4e7f2daff58fbd675d8347"><td class="mdescLeft">&#160;</td><td class="mdescRight">Run the router. <br /></td></tr>
<tr class="separator:a11fab65f0b4e7f2daff58fbd675d8347"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
Data Fields</h2></td></tr>
<tr class="memitem:a90d717b6aece9f0a505a0b85eb4dacfa" id="r_a90d717b6aece9f0a505a0b85eb4dacfa"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a90d717b6aece9f0a505a0b85eb4dacfa">name</a> = name</td></tr>
<tr class="separator:a90d717b6aece9f0a505a0b85eb4dacfa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3ed6cf62a9a5f85205318ff39cb6db8a" id="r_a3ed6cf62a9a5f85205318ff39cb6db8a"><td class="memItemLeft" align="right" valign="top">list&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a3ed6cf62a9a5f85205318ff39cb6db8a">routeList</a> = []</td></tr>
<tr class="separator:a3ed6cf62a9a5f85205318ff39cb6db8a"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pro-methods" name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr class="memitem:a4f0f891fcae507b7f47ec389194d912c" id="r_a4f0f891fcae507b7f47ec389194d912c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a4f0f891fcae507b7f47ec389194d912c">_getStatistics</a> (self)</td></tr>
<tr class="memdesc:a4f0f891fcae507b7f47ec389194d912c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns statistical information's from last router run. <br /></td></tr>
<tr class="separator:a4f0f891fcae507b7f47ec389194d912c"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pro-attribs" name="pro-attribs"></a>
Protected Attributes</h2></td></tr>
<tr class="memitem:a12a8f1e03f1ca7d9a10d5b59faf03e02" id="r_a12a8f1e03f1ca7d9a10d5b59faf03e02"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a12a8f1e03f1ca7d9a10d5b59faf03e02">_cumTime</a> = 0</td></tr>
<tr class="separator:a12a8f1e03f1ca7d9a10d5b59faf03e02"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a06691105ddcd06e4f0fcd323a1b8a261" id="r_a06691105ddcd06e4f0fcd323a1b8a261"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a06691105ddcd06e4f0fcd323a1b8a261">_routerTime</a> = 0</td></tr>
<tr class="separator:a06691105ddcd06e4f0fcd323a1b8a261"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abc663ec17904868934fa8682aa7859a9" id="r_abc663ec17904868934fa8682aa7859a9"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#abc663ec17904868934fa8682aa7859a9">_runCount</a> = 0</td></tr>
<tr class="separator:abc663ec17904868934fa8682aa7859a9"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Class for the <a class="el" href="classboswatch_1_1router_1_1router_1_1_router.html" title="Class for the Router.">Router</a>. </p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="aa7c921ad0880824595d7fa05bcac6b08" name="aa7c921ad0880824595d7fa05bcac6b08"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa7c921ad0880824595d7fa05bcac6b08">&#9670;&#160;</a></span>__init__()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">boswatch.router.router.Router.__init__ </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>name</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Create a new router. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">name</td><td>name of the router </td></tr>
</table>
</dd>
</dl>
<div class="fragment"><div class="line"><span class="lineno"> 26</span> <span class="keyword">def </span>__init__(self, name):</div>
<div class="line"><span class="lineno"> 27</span> <span class="stringliteral">r&quot;&quot;&quot;!Create a new router</span></div>
<div class="line"><span class="lineno"> 28</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 29</span><span class="stringliteral"> @param name: name of the router&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 30</span><span class="stringliteral"> self.name = name</span></div>
<div class="line"><span class="lineno"> 31</span><span class="stringliteral"> self.routeList = []</span></div>
<div class="line"><span class="lineno"> 32</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 33</span><span class="stringliteral"> # for time counting</span></div>
<div class="line"><span class="lineno"> 34</span><span class="stringliteral"> self._cumTime = 0</span></div>
<div class="line"><span class="lineno"> 35</span><span class="stringliteral"> self._routerTime = 0</span></div>
<div class="line"><span class="lineno"> 36</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 37</span><span class="stringliteral"> # for statistics</span></div>
<div class="line"><span class="lineno"> 38</span><span class="stringliteral"> self._runCount = 0</span></div>
<div class="line"><span class="lineno"> 39</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 40</span><span class="stringliteral"> logging.debug(&quot;[%s] add new router&quot;, self.name)</span></div>
<div class="line"><span class="lineno"> 41</span><span class="stringliteral"></span> </div>
</div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a561f89ef4e05555ea81cfa5da4551e0d" name="a561f89ef4e05555ea81cfa5da4551e0d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a561f89ef4e05555ea81cfa5da4551e0d">&#9670;&#160;</a></span>addRoute()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">boswatch.router.router.Router.addRoute </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>route</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Adds a route point to the router. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">route</td><td>instance of the Route class </td></tr>
</table>
</dd>
</dl>
<div class="fragment"><div class="line"><span class="lineno"> 42</span> <span class="keyword">def </span>addRoute(self, route):</div>
<div class="line"><span class="lineno"> 43</span> <span class="stringliteral">r&quot;&quot;&quot;!Adds a route point to the router</span></div>
<div class="line"><span class="lineno"> 44</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 45</span><span class="stringliteral"> @param route: instance of the Route class</span></div>
<div class="line"><span class="lineno"> 46</span><span class="stringliteral"> &quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 47</span> logging.debug(<span class="stringliteral">&quot;[%s] add route: %s&quot;</span>, self.name, route.name)</div>
<div class="line"><span class="lineno"> 48</span> self.routeList.append(route)</div>
<div class="line"><span class="lineno"> 49</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="a11fab65f0b4e7f2daff58fbd675d8347" name="a11fab65f0b4e7f2daff58fbd675d8347"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a11fab65f0b4e7f2daff58fbd675d8347">&#9670;&#160;</a></span>runRouter()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">boswatch.router.router.Router.runRouter </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>bwPacket</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Run the router. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">bwPacket</td><td>instance of Packet class </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>a instance of Packet class </dd></dl>
<div class="fragment"><div class="line"><span class="lineno"> 50</span> <span class="keyword">def </span>runRouter(self, bwPacket):</div>
<div class="line"><span class="lineno"> 51</span> <span class="stringliteral">r&quot;&quot;&quot;!Run the router</span></div>
<div class="line"><span class="lineno"> 52</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 53</span><span class="stringliteral"> @param bwPacket: instance of Packet class</span></div>
<div class="line"><span class="lineno"> 54</span><span class="stringliteral"> @return a instance of Packet class</span></div>
<div class="line"><span class="lineno"> 55</span><span class="stringliteral"> &quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 56</span> self._runCount += 1</div>
<div class="line"><span class="lineno"> 57</span> tmpTime = time.time()</div>
<div class="line"><span class="lineno"> 58</span> </div>
<div class="line"><span class="lineno"> 59</span> logging.debug(<span class="stringliteral">&quot;[%s] started&quot;</span>, self.name)</div>
<div class="line"><span class="lineno"> 60</span> </div>
<div class="line"><span class="lineno"> 61</span> <span class="keywordflow">for</span> routeObject <span class="keywordflow">in</span> self.routeList:</div>
<div class="line"><span class="lineno"> 62</span> logging.debug(<span class="stringliteral">&quot;[%s] -&gt; run route: %s&quot;</span>, self.name, routeObject.name)</div>
<div class="line"><span class="lineno"> 63</span> bwPacket_tmp = routeObject.callback(copy.deepcopy(bwPacket)) <span class="comment"># copy bwPacket to prevent edit the original</span></div>
<div class="line"><span class="lineno"> 64</span> </div>
<div class="line"><span class="lineno"> 65</span> <span class="keywordflow">if</span> bwPacket_tmp <span class="keywordflow">is</span> <span class="keywordtype">None</span>: <span class="comment"># returning None doesnt change the bwPacket</span></div>
<div class="line"><span class="lineno"> 66</span> <span class="keywordflow">continue</span></div>
<div class="line"><span class="lineno"> 67</span> </div>
<div class="line"><span class="lineno"> 68</span> <span class="keywordflow">if</span> bwPacket_tmp <span class="keywordflow">is</span> <span class="keyword">False</span>: <span class="comment"># returning False stops the router immediately</span></div>
<div class="line"><span class="lineno"> 69</span> logging.debug(<span class="stringliteral">&quot;[%s] stopped&quot;</span>, self.name)</div>
<div class="line"><span class="lineno"> 70</span> <span class="keywordflow">break</span></div>
<div class="line"><span class="lineno"> 71</span> </div>
<div class="line"><span class="lineno"> 72</span> bwPacket = bwPacket_tmp</div>
<div class="line"><span class="lineno"> 73</span> logging.debug(<span class="stringliteral">&quot;[%s] bwPacket returned&quot;</span>, self.name)</div>
<div class="line"><span class="lineno"> 74</span> logging.debug(<span class="stringliteral">&quot;[%s] finished&quot;</span>, self.name)</div>
<div class="line"><span class="lineno"> 75</span> </div>
<div class="line"><span class="lineno"> 76</span> self._routerTime = time.time() - tmpTime</div>
<div class="line"><span class="lineno"> 77</span> self._cumTime += self._routerTime</div>
<div class="line"><span class="lineno"> 78</span> </div>
<div class="line"><span class="lineno"> 79</span> <span class="keywordflow">return</span> bwPacket</div>
<div class="line"><span class="lineno"> 80</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="a4f0f891fcae507b7f47ec389194d912c" name="a4f0f891fcae507b7f47ec389194d912c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4f0f891fcae507b7f47ec389194d912c">&#9670;&#160;</a></span>_getStatistics()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">boswatch.router.router.Router._getStatistics </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns statistical information's from last router run. </p>
<dl class="section return"><dt>Returns</dt><dd>Statistics as pyton dict </dd></dl>
<div class="fragment"><div class="line"><span class="lineno"> 81</span> <span class="keyword">def </span>_getStatistics(self):</div>
<div class="line"><span class="lineno"> 82</span> <span class="stringliteral">r&quot;&quot;&quot;!Returns statistical information&#39;s from last router run</span></div>
<div class="line"><span class="lineno"> 83</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 84</span><span class="stringliteral"> @return Statistics as pyton dict&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 85</span> stats = {<span class="stringliteral">&quot;type&quot;</span>: <span class="stringliteral">&quot;router&quot;</span>,</div>
<div class="line"><span class="lineno"> 86</span> <span class="stringliteral">&quot;runCount&quot;</span>: self._runCount,</div>
<div class="line"><span class="lineno"> 87</span> <span class="stringliteral">&quot;cumTime&quot;</span>: self._cumTime,</div>
<div class="line"><span class="lineno"> 88</span> <span class="stringliteral">&quot;moduleTime&quot;</span>: self._routerTime}</div>
<div class="line"><span class="lineno"> 89</span> <span class="keywordflow">return</span> stats</div>
</div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">Field Documentation</h2>
<a id="a90d717b6aece9f0a505a0b85eb4dacfa" name="a90d717b6aece9f0a505a0b85eb4dacfa"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a90d717b6aece9f0a505a0b85eb4dacfa">&#9670;&#160;</a></span>name</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">boswatch.router.router.Router.name = name</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a3ed6cf62a9a5f85205318ff39cb6db8a" name="a3ed6cf62a9a5f85205318ff39cb6db8a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3ed6cf62a9a5f85205318ff39cb6db8a">&#9670;&#160;</a></span>routeList</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">list boswatch.router.router.Router.routeList = []</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a12a8f1e03f1ca7d9a10d5b59faf03e02" name="a12a8f1e03f1ca7d9a10d5b59faf03e02"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a12a8f1e03f1ca7d9a10d5b59faf03e02">&#9670;&#160;</a></span>_cumTime</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int boswatch.router.router.Router._cumTime = 0</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a06691105ddcd06e4f0fcd323a1b8a261" name="a06691105ddcd06e4f0fcd323a1b8a261"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a06691105ddcd06e4f0fcd323a1b8a261">&#9670;&#160;</a></span>_routerTime</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int boswatch.router.router.Router._routerTime = 0</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="abc663ec17904868934fa8682aa7859a9" name="abc663ec17904868934fa8682aa7859a9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abc663ec17904868934fa8682aa7859a9">&#9670;&#160;</a></span>_runCount</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int boswatch.router.router.Router._runCount = 0</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespaceboswatch.html">boswatch</a></li><li class="navelem"><a class="el" href="namespaceboswatch_1_1router.html">router</a></li><li class="navelem"><a class="el" href="namespaceboswatch_1_1router_1_1router.html">router</a></li><li class="navelem"><a class="el" href="classboswatch_1_1router_1_1router_1_1_router.html">Router</a></li>
<li class="footer">Generated on Wed Jun 11 2025 08:24:06 for BOSWatch 3 by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
</ul>
</div>
</body>
</html>

View file

@ -0,0 +1,12 @@
var classboswatch_1_1router_1_1router_1_1_router =
[
[ "__init__", "classboswatch_1_1router_1_1router_1_1_router.html#aa7c921ad0880824595d7fa05bcac6b08", null ],
[ "addRoute", "classboswatch_1_1router_1_1router_1_1_router.html#a561f89ef4e05555ea81cfa5da4551e0d", null ],
[ "runRouter", "classboswatch_1_1router_1_1router_1_1_router.html#a11fab65f0b4e7f2daff58fbd675d8347", null ],
[ "_getStatistics", "classboswatch_1_1router_1_1router_1_1_router.html#a4f0f891fcae507b7f47ec389194d912c", null ],
[ "name", "classboswatch_1_1router_1_1router_1_1_router.html#a90d717b6aece9f0a505a0b85eb4dacfa", null ],
[ "routeList", "classboswatch_1_1router_1_1router_1_1_router.html#a3ed6cf62a9a5f85205318ff39cb6db8a", null ],
[ "_cumTime", "classboswatch_1_1router_1_1router_1_1_router.html#a12a8f1e03f1ca7d9a10d5b59faf03e02", null ],
[ "_routerTime", "classboswatch_1_1router_1_1router_1_1_router.html#a06691105ddcd06e4f0fcd323a1b8a261", null ],
[ "_runCount", "classboswatch_1_1router_1_1router_1_1_router.html#abc663ec17904868934fa8682aa7859a9", null ]
];

View file

@ -0,0 +1,531 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.12.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>BOSWatch 3: boswatch.router.routerManager.RouterManager Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">BOSWatch 3
</div>
<div id="projectbrief">Python Script to receive and decode German BOS Information with rtl_fm and multimon-NG</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.12.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('classboswatch_1_1router_1_1router_manager_1_1_router_manager.html',''); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-attribs">Data Fields</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> &#124;
<a href="#pro-attribs">Protected Attributes</a> </div>
<div class="headertitle"><div class="title">boswatch.router.routerManager.RouterManager Class Reference</div></div>
</div><!--header-->
<div class="contents">
<p>Class to manage all routers.
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a0a84f95c300da38392422533d5782aaf" id="r_a0a84f95c300da38392422533d5782aaf"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a0a84f95c300da38392422533d5782aaf">__init__</a> (self)</td></tr>
<tr class="memdesc:a0a84f95c300da38392422533d5782aaf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create new router. <br /></td></tr>
<tr class="separator:a0a84f95c300da38392422533d5782aaf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaff6ed2da859797e18f6c072d7904f87" id="r_aaff6ed2da859797e18f6c072d7904f87"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aaff6ed2da859797e18f6c072d7904f87">buildRouters</a> (self, <a class="el" href="#a4e59d8e534b9be386eec05de3d2fe746">config</a>)</td></tr>
<tr class="memdesc:aaff6ed2da859797e18f6c072d7904f87"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize Routers from given config file. <br /></td></tr>
<tr class="separator:aaff6ed2da859797e18f6c072d7904f87"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa54e031529782bd0a7e907c8d7e8f0a9" id="r_aa54e031529782bd0a7e907c8d7e8f0a9"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aa54e031529782bd0a7e907c8d7e8f0a9">runRouters</a> (self, routerRunList, bwPacket)</td></tr>
<tr class="memdesc:aa54e031529782bd0a7e907c8d7e8f0a9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Run given Routers. <br /></td></tr>
<tr class="separator:aa54e031529782bd0a7e907c8d7e8f0a9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaf81a014d86abc76cdc0722d6f71b15e" id="r_aaf81a014d86abc76cdc0722d6f71b15e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aaf81a014d86abc76cdc0722d6f71b15e">cleanup</a> (self)</td></tr>
<tr class="memdesc:aaf81a014d86abc76cdc0722d6f71b15e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Run cleanup routines for all loaded route points. <br /></td></tr>
<tr class="separator:aaf81a014d86abc76cdc0722d6f71b15e"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
Data Fields</h2></td></tr>
<tr class="memitem:a4e59d8e534b9be386eec05de3d2fe746" id="r_a4e59d8e534b9be386eec05de3d2fe746"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a4e59d8e534b9be386eec05de3d2fe746">config</a> = None</td></tr>
<tr class="separator:a4e59d8e534b9be386eec05de3d2fe746"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8a1753d5725c13435417935a7f44a668" id="r_a8a1753d5725c13435417935a7f44a668"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a8a1753d5725c13435417935a7f44a668">_routerDict</a> = False):</td></tr>
<tr class="separator:a8a1753d5725c13435417935a7f44a668"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pro-methods" name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr class="memitem:ab546d0c2d93ff67032c7ce10be3604cd" id="r_ab546d0c2d93ff67032c7ce10be3604cd"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ab546d0c2d93ff67032c7ce10be3604cd">_showRouterRoute</a> (self)</td></tr>
<tr class="memdesc:ab546d0c2d93ff67032c7ce10be3604cd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Show the routes of all routers. <br /></td></tr>
<tr class="separator:ab546d0c2d93ff67032c7ce10be3604cd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a97f0f4b83877b3c0765e9387048c3429" id="r_a97f0f4b83877b3c0765e9387048c3429"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a97f0f4b83877b3c0765e9387048c3429">_saveStats</a> (self)</td></tr>
<tr class="memdesc:a97f0f4b83877b3c0765e9387048c3429"><td class="mdescLeft">&#160;</td><td class="mdescRight">Save current statistics to file. <br /></td></tr>
<tr class="separator:a97f0f4b83877b3c0765e9387048c3429"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pro-attribs" name="pro-attribs"></a>
Protected Attributes</h2></td></tr>
<tr class="memitem:a847bf4d91a11bc22b44977c04f616e73" id="r_a847bf4d91a11bc22b44977c04f616e73"><td class="memItemLeft" align="right" valign="top">dict&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a847bf4d91a11bc22b44977c04f616e73">_routerDict</a> = {}</td></tr>
<tr class="separator:a847bf4d91a11bc22b44977c04f616e73"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3da3dc3de144cf743f76862eca77e998" id="r_a3da3dc3de144cf743f76862eca77e998"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a3da3dc3de144cf743f76862eca77e998">_startTime</a> = int(time.time())</td></tr>
<tr class="separator:a3da3dc3de144cf743f76862eca77e998"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Class to manage all routers. </p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a0a84f95c300da38392422533d5782aaf" name="a0a84f95c300da38392422533d5782aaf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0a84f95c300da38392422533d5782aaf">&#9670;&#160;</a></span>__init__()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">boswatch.router.routerManager.RouterManager.__init__ </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Create new router. </p>
<div class="fragment"><div class="line"><span class="lineno"> 32</span> <span class="keyword">def </span>__init__(self):</div>
<div class="line"><span class="lineno"> 33</span> <span class="stringliteral">&quot;&quot;&quot;!Create new router&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 34</span><span class="stringliteral"> self.config = None</span></div>
<div class="line"><span class="lineno"> 35</span><span class="stringliteral"> self._routerDict = {}</span></div>
<div class="line"><span class="lineno"> 36</span><span class="stringliteral"> self._startTime = int(time.time())</span></div>
<div class="line"><span class="lineno"> 37</span><span class="stringliteral"></span> </div>
</div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="aaff6ed2da859797e18f6c072d7904f87" name="aaff6ed2da859797e18f6c072d7904f87"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aaff6ed2da859797e18f6c072d7904f87">&#9670;&#160;</a></span>buildRouters()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">boswatch.router.routerManager.RouterManager.buildRouters </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>config</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Initialize Routers from given config file. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">config</td><td>instance of ConfigYaml class </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>True or False </dd></dl>
<div class="fragment"><div class="line"><span class="lineno"> 39</span> <span class="keyword">def </span>buildRouters(self, config):</div>
<div class="line"><span class="lineno"> 40</span> <span class="stringliteral">r&quot;&quot;&quot;!Initialize Routers from given config file</span></div>
<div class="line"><span class="lineno"> 41</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 42</span><span class="stringliteral"> @param config: instance of ConfigYaml class</span></div>
<div class="line"><span class="lineno"> 43</span><span class="stringliteral"> @return True or False&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 44</span> self.config = config</div>
<div class="line"><span class="lineno"> 45</span> self._routerDict = {} <span class="comment"># all routers and instances of modules/plugins would be destroyed</span></div>
<div class="line"><span class="lineno"> 46</span> routerDict_tmp = {}</div>
<div class="line"><span class="lineno"> 47</span> logging.debug(<span class="stringliteral">&quot;build routers&quot;</span>)</div>
<div class="line"><span class="lineno"> 48</span> </div>
<div class="line"><span class="lineno"> 49</span> <span class="comment"># first we have to init all routers</span></div>
<div class="line"><span class="lineno"> 50</span> <span class="comment"># because a router can be a valid target and we need his reference</span></div>
<div class="line"><span class="lineno"> 51</span> <span class="keywordflow">for</span> router <span class="keywordflow">in</span> config.get(<span class="stringliteral">&quot;router&quot;</span>):</div>
<div class="line"><span class="lineno"> 52</span> <span class="keywordflow">if</span> router.get(<span class="stringliteral">&quot;name&quot;</span>) <span class="keywordflow">is</span> <span class="keywordtype">None</span> <span class="keywordflow">or</span> router.get(<span class="stringliteral">&quot;route&quot;</span>) <span class="keywordflow">is</span> <span class="keywordtype">None</span>:</div>
<div class="line"><span class="lineno"> 53</span> logging.error(<span class="stringliteral">&quot;name or route not found in router: %s&quot;</span>, router)</div>
<div class="line"><span class="lineno"> 54</span> <span class="keywordflow">return</span> <span class="keyword">False</span></div>
<div class="line"><span class="lineno"> 55</span> <span class="keywordflow">if</span> router.get(<span class="stringliteral">&quot;name&quot;</span>) <span class="keywordflow">in</span> self._routerDict:</div>
<div class="line"><span class="lineno"> 56</span> logging.error(<span class="stringliteral">&quot;duplicated router name: %s&quot;</span>, router.get(<span class="stringliteral">&quot;name&quot;</span>))</div>
<div class="line"><span class="lineno"> 57</span> <span class="keywordflow">return</span> <span class="keyword">False</span></div>
<div class="line"><span class="lineno"> 58</span> routerDict_tmp[router.get(<span class="stringliteral">&quot;name&quot;</span>)] = Router(router.get(<span class="stringliteral">&quot;name&quot;</span>))</div>
<div class="line"><span class="lineno"> 59</span> </div>
<div class="line"><span class="lineno"> 60</span> <span class="keywordflow">for</span> router <span class="keywordflow">in</span> config.get(<span class="stringliteral">&quot;router&quot;</span>):</div>
<div class="line"><span class="lineno"> 61</span> routerName = router.get(<span class="stringliteral">&quot;name&quot;</span>)</div>
<div class="line"><span class="lineno"> 62</span> </div>
<div class="line"><span class="lineno"> 63</span> <span class="keywordflow">for</span> route <span class="keywordflow">in</span> router.get(<span class="stringliteral">&quot;route&quot;</span>):</div>
<div class="line"><span class="lineno"> 64</span> routeType = route.get(<span class="stringliteral">&quot;type&quot;</span>)</div>
<div class="line"><span class="lineno"> 65</span> routeRes = route.get(<span class="stringliteral">&quot;res&quot;</span>)</div>
<div class="line"><span class="lineno"> 66</span> routeName = route.get(<span class="stringliteral">&quot;name&quot;</span>, default=routeRes)</div>
<div class="line"><span class="lineno"> 67</span> </div>
<div class="line"><span class="lineno"> 68</span> routeConfig = route.get(<span class="stringliteral">&quot;config&quot;</span>, default=ConfigYAML()) <span class="comment"># if no config - build a empty</span></div>
<div class="line"><span class="lineno"> 69</span> </div>
<div class="line"><span class="lineno"> 70</span> <span class="keywordflow">if</span> routeType <span class="keywordflow">is</span> <span class="keywordtype">None</span> <span class="keywordflow">or</span> routeRes <span class="keywordflow">is</span> <span class="keywordtype">None</span>:</div>
<div class="line"><span class="lineno"> 71</span> logging.error(<span class="stringliteral">&quot;type or name not found in route: %s&quot;</span>, route)</div>
<div class="line"><span class="lineno"> 72</span> <span class="keywordflow">return</span> <span class="keyword">False</span></div>
<div class="line"><span class="lineno"> 73</span> </div>
<div class="line"><span class="lineno"> 74</span> <span class="keywordflow">try</span>:</div>
<div class="line"><span class="lineno"> 75</span> <span class="keywordflow">if</span> routeType == <span class="stringliteral">&quot;plugin&quot;</span>:</div>
<div class="line"><span class="lineno"> 76</span> importedFile = importlib.import_module(routeType + <span class="stringliteral">&quot;.&quot;</span> + routeRes)</div>
<div class="line"><span class="lineno"> 77</span> loadedClass = importedFile.BoswatchPlugin(routeConfig)</div>
<div class="line"><span class="lineno"> 78</span> routerDict_tmp[routerName].addRoute(Route(routeName,</div>
<div class="line"><span class="lineno"> 79</span> loadedClass._run,</div>
<div class="line"><span class="lineno"> 80</span> loadedClass._getStatistics,</div>
<div class="line"><span class="lineno"> 81</span> loadedClass._cleanup))</div>
<div class="line"><span class="lineno"> 82</span> </div>
<div class="line"><span class="lineno"> 83</span> <span class="keywordflow">elif</span> routeType == <span class="stringliteral">&quot;module&quot;</span>:</div>
<div class="line"><span class="lineno"> 84</span> importedFile = importlib.import_module(routeType + <span class="stringliteral">&quot;.&quot;</span> + routeRes)</div>
<div class="line"><span class="lineno"> 85</span> loadedClass = importedFile.BoswatchModule(routeConfig)</div>
<div class="line"><span class="lineno"> 86</span> routerDict_tmp[routerName].addRoute(Route(routeName,</div>
<div class="line"><span class="lineno"> 87</span> loadedClass._run,</div>
<div class="line"><span class="lineno"> 88</span> loadedClass._getStatistics,</div>
<div class="line"><span class="lineno"> 89</span> loadedClass._cleanup))</div>
<div class="line"><span class="lineno"> 90</span> </div>
<div class="line"><span class="lineno"> 91</span> <span class="keywordflow">elif</span> routeType == <span class="stringliteral">&quot;router&quot;</span>:</div>
<div class="line"><span class="lineno"> 92</span> routerDict_tmp[routerName].addRoute(Route(routeName, routerDict_tmp[routeRes].runRouter))</div>
<div class="line"><span class="lineno"> 93</span> </div>
<div class="line"><span class="lineno"> 94</span> <span class="keywordflow">else</span>:</div>
<div class="line"><span class="lineno"> 95</span> logging.error(<span class="stringliteral">&quot;unknown type &#39;%s&#39; in %s&quot;</span>, routeType, route)</div>
<div class="line"><span class="lineno"> 96</span> <span class="keywordflow">return</span> <span class="keyword">False</span></div>
<div class="line"><span class="lineno"> 97</span> </div>
<div class="line"><span class="lineno"> 98</span> <span class="keywordflow">except</span> ModuleNotFoundError:</div>
<div class="line"><span class="lineno"> 99</span> logging.exception(<span class="stringliteral">&quot;%s not found: %s&quot;</span>, route.get(<span class="stringliteral">&quot;type&quot;</span>), route.get(<span class="stringliteral">&quot;res&quot;</span>))</div>
<div class="line"><span class="lineno"> 100</span> <span class="keywordflow">return</span> <span class="keyword">False</span></div>
<div class="line"><span class="lineno"> 101</span> </div>
<div class="line"><span class="lineno"> 102</span> logging.debug(<span class="stringliteral">&quot;finished building routers&quot;</span>)</div>
<div class="line"><span class="lineno"> 103</span> self._routerDict = routerDict_tmp</div>
<div class="line"><span class="lineno"> 104</span> self._showRouterRoute()</div>
<div class="line"><span class="lineno"> 105</span> <span class="keywordflow">return</span> <span class="keyword">True</span></div>
<div class="line"><span class="lineno"> 106</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="aa54e031529782bd0a7e907c8d7e8f0a9" name="aa54e031529782bd0a7e907c8d7e8f0a9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa54e031529782bd0a7e907c8d7e8f0a9">&#9670;&#160;</a></span>runRouters()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">boswatch.router.routerManager.RouterManager.runRouters </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>routerRunList</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>bwPacket</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Run given Routers. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">routerRunList</td><td>string or list of router names in string form </td></tr>
<tr><td class="paramname">bwPacket</td><td>instance of Packet class </td></tr>
</table>
</dd>
</dl>
<div class="fragment"><div class="line"><span class="lineno"> 107</span> <span class="keyword">def </span>runRouters(self, routerRunList, bwPacket):</div>
<div class="line"><span class="lineno"> 108</span> <span class="stringliteral">r&quot;&quot;&quot;!Run given Routers</span></div>
<div class="line"><span class="lineno"> 109</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 110</span><span class="stringliteral"> @param routerRunList: string or list of router names in string form</span></div>
<div class="line"><span class="lineno"> 111</span><span class="stringliteral"> @param bwPacket: instance of Packet class&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 112</span> <span class="keywordflow">if</span> type(routerRunList) <span class="keywordflow">is</span> str: <span class="comment"># convert single string name to list</span></div>
<div class="line"><span class="lineno"> 113</span> routerRunList = [routerRunList]</div>
<div class="line"><span class="lineno"> 114</span> </div>
<div class="line"><span class="lineno"> 115</span> <span class="keywordflow">for</span> routerName <span class="keywordflow">in</span> routerRunList:</div>
<div class="line"><span class="lineno"> 116</span> <span class="keywordflow">if</span> routerName <span class="keywordflow">in</span> self._routerDict:</div>
<div class="line"><span class="lineno"> 117</span> self._routerDict[routerName].runRouter(bwPacket)</div>
<div class="line"><span class="lineno"> 118</span> <span class="keywordflow">else</span>:</div>
<div class="line"><span class="lineno"> 119</span> logging.warning(<span class="stringliteral">&quot;unknown router: %s&quot;</span>, routerName)</div>
<div class="line"><span class="lineno"> 120</span> </div>
<div class="line"><span class="lineno"> 121</span> <span class="keywordflow">if</span> self.config.get(<span class="stringliteral">&quot;server&quot;</span>, <span class="stringliteral">&quot;logging&quot;</span>, default=<span class="keyword">False</span>):</div>
<div class="line"><span class="lineno"> 122</span> self._saveStats() <span class="comment"># write stats to stats file</span></div>
<div class="line"><span class="lineno"> 123</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="aaf81a014d86abc76cdc0722d6f71b15e" name="aaf81a014d86abc76cdc0722d6f71b15e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aaf81a014d86abc76cdc0722d6f71b15e">&#9670;&#160;</a></span>cleanup()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">boswatch.router.routerManager.RouterManager.cleanup </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Run cleanup routines for all loaded route points. </p>
<div class="fragment"><div class="line"><span class="lineno"> 124</span> <span class="keyword">def </span>cleanup(self):</div>
<div class="line"><span class="lineno"> 125</span> <span class="stringliteral">r&quot;&quot;&quot;!Run cleanup routines for all loaded route points&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 126</span> <span class="keywordflow">for</span> name, routerObject <span class="keywordflow">in</span> self._routerDict.items():</div>
<div class="line"><span class="lineno"> 127</span> logging.debug(<span class="stringliteral">&quot;Start cleanup for %s&quot;</span>, name)</div>
<div class="line"><span class="lineno"> 128</span> <span class="keywordflow">for</span> routePoint <span class="keywordflow">in</span> routerObject.routeList:</div>
<div class="line"><span class="lineno"> 129</span> <span class="keywordflow">if</span> routePoint.cleanup:</div>
<div class="line"><span class="lineno"> 130</span> routePoint.cleanup()</div>
<div class="line"><span class="lineno"> 131</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="ab546d0c2d93ff67032c7ce10be3604cd" name="ab546d0c2d93ff67032c7ce10be3604cd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab546d0c2d93ff67032c7ce10be3604cd">&#9670;&#160;</a></span>_showRouterRoute()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">boswatch.router.routerManager.RouterManager._showRouterRoute </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Show the routes of all routers. </p>
<div class="fragment"><div class="line"><span class="lineno"> 132</span> <span class="keyword">def </span>_showRouterRoute(self):</div>
<div class="line"><span class="lineno"> 133</span> <span class="stringliteral">r&quot;&quot;&quot;!Show the routes of all routers&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 134</span> <span class="keywordflow">for</span> name, routerObject <span class="keywordflow">in</span> self._routerDict.items():</div>
<div class="line"><span class="lineno"> 135</span> logging.debug(<span class="stringliteral">&quot;Route for %s&quot;</span>, name)</div>
<div class="line"><span class="lineno"> 136</span> counter = 0</div>
<div class="line"><span class="lineno"> 137</span> <span class="keywordflow">for</span> routePoint <span class="keywordflow">in</span> routerObject.routeList:</div>
<div class="line"><span class="lineno"> 138</span> counter += 1</div>
<div class="line"><span class="lineno"> 139</span> logging.debug(<span class="stringliteral">&quot; %d. %s&quot;</span>, counter, routePoint.name)</div>
<div class="line"><span class="lineno"> 140</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="a97f0f4b83877b3c0765e9387048c3429" name="a97f0f4b83877b3c0765e9387048c3429"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a97f0f4b83877b3c0765e9387048c3429">&#9670;&#160;</a></span>_saveStats()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">boswatch.router.routerManager.RouterManager._saveStats </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Save current statistics to file. </p>
<div class="fragment"><div class="line"><span class="lineno"> 141</span> <span class="keyword">def </span>_saveStats(self):</div>
<div class="line"><span class="lineno"> 142</span> <span class="stringliteral">r&quot;&quot;&quot;!Save current statistics to file&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 143</span> lines = []</div>
<div class="line"><span class="lineno"> 144</span> <span class="keywordflow">for</span> name, routerObject <span class="keywordflow">in</span> self._routerDict.items():</div>
<div class="line"><span class="lineno"> 145</span> lines.append(<span class="stringliteral">&quot;[&quot;</span> + name + <span class="stringliteral">&quot;]&quot;</span>)</div>
<div class="line"><span class="lineno"> 146</span> lines.append(<span class="stringliteral">&quot; - Route points: &quot;</span> + str(len(routerObject.routeList)))</div>
<div class="line"><span class="lineno"> 147</span> lines.append(<span class="stringliteral">&quot; - Runs: &quot;</span> + str(routerObject._getStatistics()[<span class="stringliteral">&#39;runCount&#39;</span>]))</div>
<div class="line"><span class="lineno"> 148</span> <span class="keywordflow">for</span> routePoint <span class="keywordflow">in</span> routerObject.routeList:</div>
<div class="line"><span class="lineno"> 149</span> lines.append(<span class="stringliteral">&quot;[+] &quot;</span> + routePoint.name)</div>
<div class="line"><span class="lineno"> 150</span> <span class="keywordflow">if</span> routePoint.statistics:</div>
<div class="line"><span class="lineno"> 151</span> <span class="keywordflow">if</span> routePoint.statistics()[<span class="stringliteral">&#39;type&#39;</span>] == <span class="stringliteral">&quot;module&quot;</span>:</div>
<div class="line"><span class="lineno"> 152</span> lines.append(<span class="stringliteral">&quot; - Runs: &quot;</span> + str(routePoint.statistics()[<span class="stringliteral">&#39;runCount&#39;</span>]))</div>
<div class="line"><span class="lineno"> 153</span> lines.append(<span class="stringliteral">&quot; - Run errors: &quot;</span> + str(routePoint.statistics()[<span class="stringliteral">&#39;moduleErrorCount&#39;</span>]))</div>
<div class="line"><span class="lineno"> 154</span> <span class="keywordflow">elif</span> routePoint.statistics()[<span class="stringliteral">&#39;type&#39;</span>] == <span class="stringliteral">&quot;plugin&quot;</span>:</div>
<div class="line"><span class="lineno"> 155</span> lines.append(<span class="stringliteral">&quot; - Runs: &quot;</span> + str(routePoint.statistics()[<span class="stringliteral">&#39;runCount&#39;</span>]))</div>
<div class="line"><span class="lineno"> 156</span> lines.append(<span class="stringliteral">&quot; - Setup errors: &quot;</span> + str(routePoint.statistics()[<span class="stringliteral">&#39;setupErrorCount&#39;</span>]))</div>
<div class="line"><span class="lineno"> 157</span> lines.append(<span class="stringliteral">&quot; - Alarm errors: &quot;</span> + str(routePoint.statistics()[<span class="stringliteral">&#39;alarmErrorCount&#39;</span>]))</div>
<div class="line"><span class="lineno"> 158</span> lines.append(<span class="stringliteral">&quot; - Teardown errors: &quot;</span> + str(routePoint.statistics()[<span class="stringliteral">&#39;teardownErrorCount&#39;</span>]))</div>
<div class="line"><span class="lineno"> 159</span> lines.append(<span class="stringliteral">&quot;&quot;</span>)</div>
<div class="line"><span class="lineno"> 160</span> </div>
<div class="line"><span class="lineno"> 161</span> <span class="keyword">with</span> open(<span class="stringliteral">&quot;stats_&quot;</span> + str(self._startTime) + <span class="stringliteral">&quot;.txt&quot;</span>, <span class="stringliteral">&quot;w&quot;</span>) <span class="keyword">as</span> stats:</div>
<div class="line"><span class="lineno"> 162</span> <span class="keywordflow">for</span> line <span class="keywordflow">in</span> lines:</div>
<div class="line"><span class="lineno"> 163</span> stats.write(line + <span class="stringliteral">&quot;\n&quot;</span>)</div>
</div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">Field Documentation</h2>
<a id="a4e59d8e534b9be386eec05de3d2fe746" name="a4e59d8e534b9be386eec05de3d2fe746"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4e59d8e534b9be386eec05de3d2fe746">&#9670;&#160;</a></span>config</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">boswatch.router.routerManager.RouterManager.config = None</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a847bf4d91a11bc22b44977c04f616e73" name="a847bf4d91a11bc22b44977c04f616e73"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a847bf4d91a11bc22b44977c04f616e73">&#9670;&#160;</a></span>_routerDict <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">dict boswatch.router.routerManager.RouterManager._routerDict = {}</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a3da3dc3de144cf743f76862eca77e998" name="a3da3dc3de144cf743f76862eca77e998"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3da3dc3de144cf743f76862eca77e998">&#9670;&#160;</a></span>_startTime</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">boswatch.router.routerManager.RouterManager._startTime = int(time.time())</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a8a1753d5725c13435417935a7f44a668" name="a8a1753d5725c13435417935a7f44a668"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8a1753d5725c13435417935a7f44a668">&#9670;&#160;</a></span>_routerDict <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool boswatch.router.routerManager.RouterManager._routerDict = False):</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespaceboswatch.html">boswatch</a></li><li class="navelem"><a class="el" href="namespaceboswatch_1_1router.html">router</a></li><li class="navelem"><a class="el" href="namespaceboswatch_1_1router_1_1router_manager.html">routerManager</a></li><li class="navelem"><a class="el" href="classboswatch_1_1router_1_1router_manager_1_1_router_manager.html">RouterManager</a></li>
<li class="footer">Generated on Wed Jun 11 2025 08:24:06 for BOSWatch 3 by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
</ul>
</div>
</body>
</html>

View file

@ -0,0 +1,13 @@
var classboswatch_1_1router_1_1router_manager_1_1_router_manager =
[
[ "__init__", "classboswatch_1_1router_1_1router_manager_1_1_router_manager.html#a0a84f95c300da38392422533d5782aaf", null ],
[ "buildRouters", "classboswatch_1_1router_1_1router_manager_1_1_router_manager.html#aaff6ed2da859797e18f6c072d7904f87", null ],
[ "runRouters", "classboswatch_1_1router_1_1router_manager_1_1_router_manager.html#aa54e031529782bd0a7e907c8d7e8f0a9", null ],
[ "cleanup", "classboswatch_1_1router_1_1router_manager_1_1_router_manager.html#aaf81a014d86abc76cdc0722d6f71b15e", null ],
[ "_showRouterRoute", "classboswatch_1_1router_1_1router_manager_1_1_router_manager.html#ab546d0c2d93ff67032c7ce10be3604cd", null ],
[ "_saveStats", "classboswatch_1_1router_1_1router_manager_1_1_router_manager.html#a97f0f4b83877b3c0765e9387048c3429", null ],
[ "config", "classboswatch_1_1router_1_1router_manager_1_1_router_manager.html#a4e59d8e534b9be386eec05de3d2fe746", null ],
[ "_routerDict", "classboswatch_1_1router_1_1router_manager_1_1_router_manager.html#a847bf4d91a11bc22b44977c04f616e73", null ],
[ "_startTime", "classboswatch_1_1router_1_1router_manager_1_1_router_manager.html#a3da3dc3de144cf743f76862eca77e998", null ],
[ "_routerDict", "classboswatch_1_1router_1_1router_manager_1_1_router_manager.html#a8a1753d5725c13435417935a7f44a668", null ]
];

View file

@ -0,0 +1,646 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.12.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>BOSWatch 3: boswatch.timer.RepeatedTimer Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">BOSWatch 3
</div>
<div id="projectbrief">Python Script to receive and decode German BOS Information with rtl_fm and multimon-NG</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.12.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('classboswatch_1_1timer_1_1_repeated_timer.html',''); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-attribs">Data Fields</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> &#124;
<a href="#pro-attribs">Protected Attributes</a> </div>
<div class="headertitle"><div class="title">boswatch.timer.RepeatedTimer Class Reference</div></div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a6456136d21c1cfa45cea27f8e52a6d90" id="r_a6456136d21c1cfa45cea27f8e52a6d90"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a6456136d21c1cfa45cea27f8e52a6d90">__init__</a> (self, interval, targetFunction, *args, **kwargs)</td></tr>
<tr class="memdesc:a6456136d21c1cfa45cea27f8e52a6d90"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a new instance of the <a class="el" href="classboswatch_1_1timer_1_1_repeated_timer.html">RepeatedTimer</a>. <br /></td></tr>
<tr class="separator:a6456136d21c1cfa45cea27f8e52a6d90"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7ac6df54ac53ce43b550ea2fb7f593ba" id="r_a7ac6df54ac53ce43b550ea2fb7f593ba"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a7ac6df54ac53ce43b550ea2fb7f593ba">start</a> (self)</td></tr>
<tr class="memdesc:a7ac6df54ac53ce43b550ea2fb7f593ba"><td class="mdescLeft">&#160;</td><td class="mdescRight">Start a new timer worker thread. <br /></td></tr>
<tr class="separator:a7ac6df54ac53ce43b550ea2fb7f593ba"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5f7c9e59eb302893ede382b3cf36fc6d" id="r_a5f7c9e59eb302893ede382b3cf36fc6d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a5f7c9e59eb302893ede382b3cf36fc6d">stop</a> (self)</td></tr>
<tr class="memdesc:a5f7c9e59eb302893ede382b3cf36fc6d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Stop the timer worker thread. <br /></td></tr>
<tr class="separator:a5f7c9e59eb302893ede382b3cf36fc6d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2f693bfc34ab3bff466d1af495ac6524" id="r_a2f693bfc34ab3bff466d1af495ac6524"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a2f693bfc34ab3bff466d1af495ac6524">isRunning</a> (self)</td></tr>
<tr class="memdesc:a2f693bfc34ab3bff466d1af495ac6524"><td class="mdescLeft">&#160;</td><td class="mdescRight">Property for repeatedTimer running state. <br /></td></tr>
<tr class="separator:a2f693bfc34ab3bff466d1af495ac6524"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afbe5f47ada6c6220e43b6bbec6318a51" id="r_afbe5f47ada6c6220e43b6bbec6318a51"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#afbe5f47ada6c6220e43b6bbec6318a51">restTime</a> (self)</td></tr>
<tr class="memdesc:afbe5f47ada6c6220e43b6bbec6318a51"><td class="mdescLeft">&#160;</td><td class="mdescRight">Property to get remaining time till next call. <br /></td></tr>
<tr class="separator:afbe5f47ada6c6220e43b6bbec6318a51"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
Data Fields</h2></td></tr>
<tr class="memitem:a840c33f251da10948ba1940f7edae806" id="r_a840c33f251da10948ba1940f7edae806"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a840c33f251da10948ba1940f7edae806">overdueCount</a> = 0</td></tr>
<tr class="separator:a840c33f251da10948ba1940f7edae806"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab5cd56124ddbb4e05348624139ed2e75" id="r_ab5cd56124ddbb4e05348624139ed2e75"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ab5cd56124ddbb4e05348624139ed2e75">lostEvents</a> = 0</td></tr>
<tr class="separator:ab5cd56124ddbb4e05348624139ed2e75"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0ba9bc6b5aea4aa3ecb3670a2ca64b2f" id="r_a0ba9bc6b5aea4aa3ecb3670a2ca64b2f"><td class="memItemLeft" align="right" valign="top">str&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a0ba9bc6b5aea4aa3ecb3670a2ca64b2f">_thread</a> = &quot;RepTim(&quot; + str(self._interval) + &quot;)&quot;</td></tr>
<tr class="separator:a0ba9bc6b5aea4aa3ecb3670a2ca64b2f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5b693144e9b2060eff4a30e526f618f8" id="r_a5b693144e9b2060eff4a30e526f618f8"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a5b693144e9b2060eff4a30e526f618f8">restTime</a> = time.time()</td></tr>
<tr class="separator:a5b693144e9b2060eff4a30e526f618f8"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pro-methods" name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr class="memitem:a0a8c3bc1726ae2a8f43a36a4f2f74165" id="r_a0a8c3bc1726ae2a8f43a36a4f2f74165"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a0a8c3bc1726ae2a8f43a36a4f2f74165">_target</a> (self)</td></tr>
<tr class="memdesc:a0a8c3bc1726ae2a8f43a36a4f2f74165"><td class="mdescLeft">&#160;</td><td class="mdescRight">Runs the target function with his arguments in own thread. <br /></td></tr>
<tr class="separator:a0a8c3bc1726ae2a8f43a36a4f2f74165"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pro-attribs" name="pro-attribs"></a>
Protected Attributes</h2></td></tr>
<tr class="memitem:ad1430785a88382edf7f5577060e0d01a" id="r_ad1430785a88382edf7f5577060e0d01a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ad1430785a88382edf7f5577060e0d01a">_interval</a> = interval</td></tr>
<tr class="separator:ad1430785a88382edf7f5577060e0d01a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a925a7f0f26df28aa88fb69ef192b1deb" id="r_a925a7f0f26df28aa88fb69ef192b1deb"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a925a7f0f26df28aa88fb69ef192b1deb">_function</a> = targetFunction</td></tr>
<tr class="separator:a925a7f0f26df28aa88fb69ef192b1deb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a33f78dd48f368e8b2e423b94d8d4f7f0" id="r_a33f78dd48f368e8b2e423b94d8d4f7f0"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a33f78dd48f368e8b2e423b94d8d4f7f0">_args</a> = args</td></tr>
<tr class="separator:a33f78dd48f368e8b2e423b94d8d4f7f0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae92aee50e2a2341581abec6a14c788da" id="r_ae92aee50e2a2341581abec6a14c788da"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ae92aee50e2a2341581abec6a14c788da">_kwargs</a> = kwargs</td></tr>
<tr class="separator:ae92aee50e2a2341581abec6a14c788da"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a41ace1d4fc64ef5196eea937d5247c1b" id="r_a41ace1d4fc64ef5196eea937d5247c1b"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a41ace1d4fc64ef5196eea937d5247c1b">_start</a> = 0</td></tr>
<tr class="separator:a41ace1d4fc64ef5196eea937d5247c1b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7ae2d4c2a6d8f17307df85227f3b1085" id="r_a7ae2d4c2a6d8f17307df85227f3b1085"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a7ae2d4c2a6d8f17307df85227f3b1085">_isRunning</a> = False</td></tr>
<tr class="separator:a7ae2d4c2a6d8f17307df85227f3b1085"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad0dde3339f157e43f191aafab23f03e5" id="r_ad0dde3339f157e43f191aafab23f03e5"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ad0dde3339f157e43f191aafab23f03e5">_event</a> = Event()</td></tr>
<tr class="separator:ad0dde3339f157e43f191aafab23f03e5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3b492713fbe661683f886f23c0925212" id="r_a3b492713fbe661683f886f23c0925212"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a3b492713fbe661683f886f23c0925212">_thread</a> = None</td></tr>
<tr class="separator:a3b492713fbe661683f886f23c0925212"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a6456136d21c1cfa45cea27f8e52a6d90" name="a6456136d21c1cfa45cea27f8e52a6d90"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6456136d21c1cfa45cea27f8e52a6d90">&#9670;&#160;</a></span>__init__()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">boswatch.timer.RepeatedTimer.__init__ </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>interval</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>targetFunction</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">*</td> <td class="paramname"><span class="paramname"><em>args</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">**</td> <td class="paramname"><span class="paramname"><em>kwargs</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Create a new instance of the <a class="el" href="classboswatch_1_1timer_1_1_repeated_timer.html">RepeatedTimer</a>. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">interval</td><td>interval in sec. to recall target function </td></tr>
<tr><td class="paramname">targetFunction</td><td>function to call on timer event </td></tr>
<tr><td class="paramname">*args</td><td>arguments for the called function </td></tr>
<tr><td class="paramname">*kwargs</td><td>keyword arguments for the called function </td></tr>
</table>
</dd>
</dl>
<div class="fragment"><div class="line"><span class="lineno"> 26</span> <span class="keyword">def </span>__init__(self, interval, targetFunction, *args, **kwargs):</div>
<div class="line"><span class="lineno"> 27</span> <span class="stringliteral">r&quot;&quot;&quot;!Create a new instance of the RepeatedTimer</span></div>
<div class="line"><span class="lineno"> 28</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 29</span><span class="stringliteral"> @param interval: interval in sec. to recall target function</span></div>
<div class="line"><span class="lineno"> 30</span><span class="stringliteral"> @param targetFunction: function to call on timer event</span></div>
<div class="line"><span class="lineno"> 31</span><span class="stringliteral"> @param *args: arguments for the called function</span></div>
<div class="line"><span class="lineno"> 32</span><span class="stringliteral"> @param *kwargs: keyword arguments for the called function</span></div>
<div class="line"><span class="lineno"> 33</span><span class="stringliteral"> &quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 34</span> self._interval = interval</div>
<div class="line"><span class="lineno"> 35</span> self._function = targetFunction</div>
<div class="line"><span class="lineno"> 36</span> self._args = args</div>
<div class="line"><span class="lineno"> 37</span> self._kwargs = kwargs</div>
<div class="line"><span class="lineno"> 38</span> self._start = 0</div>
<div class="line"><span class="lineno"> 39</span> self.overdueCount = 0</div>
<div class="line"><span class="lineno"> 40</span> self.lostEvents = 0</div>
<div class="line"><span class="lineno"> 41</span> self._isRunning = <span class="keyword">False</span></div>
<div class="line"><span class="lineno"> 42</span> self._event = Event()</div>
<div class="line"><span class="lineno"> 43</span> self._thread = <span class="keywordtype">None</span></div>
<div class="line"><span class="lineno"> 44</span> </div>
</div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a7ac6df54ac53ce43b550ea2fb7f593ba" name="a7ac6df54ac53ce43b550ea2fb7f593ba"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7ac6df54ac53ce43b550ea2fb7f593ba">&#9670;&#160;</a></span>start()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">boswatch.timer.RepeatedTimer.start </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Start a new timer worker thread. </p>
<dl class="section return"><dt>Returns</dt><dd>True or False </dd></dl>
<div class="fragment"><div class="line"><span class="lineno"> 45</span> <span class="keyword">def </span>start(self):</div>
<div class="line"><span class="lineno"> 46</span> <span class="stringliteral">r&quot;&quot;&quot;!Start a new timer worker thread</span></div>
<div class="line"><span class="lineno"> 47</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 48</span><span class="stringliteral"> @return True or False&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 49</span> <span class="keywordflow">if</span> self._thread <span class="keywordflow">is</span> <span class="keywordtype">None</span>:</div>
<div class="line"><span class="lineno"> 50</span> self._event.clear()</div>
<div class="line"><span class="lineno"> 51</span> self._thread = Thread(target=self._target)</div>
<div class="line"><span class="lineno"> 52</span> self._thread.name = <span class="stringliteral">&quot;RepTim(&quot;</span> + str(self._interval) + <span class="stringliteral">&quot;)&quot;</span></div>
<div class="line"><span class="lineno"> 53</span> self._thread.daemon = <span class="keyword">True</span> <span class="comment"># start as daemon (thread dies if main program ends)</span></div>
<div class="line"><span class="lineno"> 54</span> self._thread.start()</div>
<div class="line"><span class="lineno"> 55</span> logging.debug(<span class="stringliteral">&quot;start repeatedTimer: %s&quot;</span>, self._thread.name)</div>
<div class="line"><span class="lineno"> 56</span> <span class="keywordflow">return</span> <span class="keyword">True</span></div>
<div class="line"><span class="lineno"> 57</span> logging.debug(<span class="stringliteral">&quot;repeatedTimer always started&quot;</span>)</div>
<div class="line"><span class="lineno"> 58</span> <span class="keywordflow">return</span> <span class="keyword">True</span></div>
<div class="line"><span class="lineno"> 59</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="a5f7c9e59eb302893ede382b3cf36fc6d" name="a5f7c9e59eb302893ede382b3cf36fc6d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5f7c9e59eb302893ede382b3cf36fc6d">&#9670;&#160;</a></span>stop()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">boswatch.timer.RepeatedTimer.stop </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Stop the timer worker thread. </p>
<dl class="section return"><dt>Returns</dt><dd>True or False </dd></dl>
<div class="fragment"><div class="line"><span class="lineno"> 60</span> <span class="keyword">def </span>stop(self):</div>
<div class="line"><span class="lineno"> 61</span> <span class="stringliteral">r&quot;&quot;&quot;!Stop the timer worker thread</span></div>
<div class="line"><span class="lineno"> 62</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 63</span><span class="stringliteral"> @return True or False&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 64</span> <span class="keywordflow">if</span> self._thread <span class="keywordflow">is</span> <span class="keywordflow">not</span> <span class="keywordtype">None</span>:</div>
<div class="line"><span class="lineno"> 65</span> logging.debug(<span class="stringliteral">&quot;stop repeatedTimer: %s&quot;</span>, self._thread.name)</div>
<div class="line"><span class="lineno"> 66</span> self._event.set()</div>
<div class="line"><span class="lineno"> 67</span> <span class="keywordflow">if</span> self._thread <span class="keywordflow">is</span> <span class="keywordflow">not</span> <span class="keywordtype">None</span>:</div>
<div class="line"><span class="lineno"> 68</span> self._thread.join()</div>
<div class="line"><span class="lineno"> 69</span> <span class="keywordflow">return</span> <span class="keyword">True</span></div>
<div class="line"><span class="lineno"> 70</span> logging.warning(<span class="stringliteral">&quot;repeatedTimer always stopped&quot;</span>)</div>
<div class="line"><span class="lineno"> 71</span> <span class="keywordflow">return</span> <span class="keyword">True</span></div>
<div class="line"><span class="lineno"> 72</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="a0a8c3bc1726ae2a8f43a36a4f2f74165" name="a0a8c3bc1726ae2a8f43a36a4f2f74165"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0a8c3bc1726ae2a8f43a36a4f2f74165">&#9670;&#160;</a></span>_target()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">boswatch.timer.RepeatedTimer._target </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Runs the target function with his arguments in own thread. </p>
<div class="fragment"><div class="line"><span class="lineno"> 73</span> <span class="keyword">def </span>_target(self):</div>
<div class="line"><span class="lineno"> 74</span> <span class="stringliteral">r&quot;&quot;&quot;!Runs the target function with his arguments in own thread&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 75</span> self._start = time.time()</div>
<div class="line"><span class="lineno"> 76</span> <span class="keywordflow">while</span> <span class="keywordflow">not</span> self._event.wait(self.restTime):</div>
<div class="line"><span class="lineno"> 77</span> logging.debug(<span class="stringliteral">&quot;work&quot;</span>)</div>
<div class="line"><span class="lineno"> 78</span> startTime = time.time()</div>
<div class="line"><span class="lineno"> 79</span> </div>
<div class="line"><span class="lineno"> 80</span> <span class="keywordflow">try</span>:</div>
<div class="line"><span class="lineno"> 81</span> self._function(*self._args, **self._kwargs)</div>
<div class="line"><span class="lineno"> 82</span> <span class="keywordflow">except</span>: <span class="comment"># pragma: no cover</span></div>
<div class="line"><span class="lineno"> 83</span> logging.exception(<span class="stringliteral">&quot;target throws an exception&quot;</span>)</div>
<div class="line"><span class="lineno"> 84</span> </div>
<div class="line"><span class="lineno"> 85</span> runTime = time.time() - startTime</div>
<div class="line"><span class="lineno"> 86</span> <span class="keywordflow">if</span> runTime &lt; self._interval:</div>
<div class="line"><span class="lineno"> 87</span> logging.debug(<span class="stringliteral">&quot;ready after: %0.3f sec. - next call in: %0.3f sec.&quot;</span>, runTime, self.restTime)</div>
<div class="line"><span class="lineno"> 88</span> <span class="keywordflow">else</span>:</div>
<div class="line"><span class="lineno"> 89</span> lostEvents = int(runTime / self._interval)</div>
<div class="line"><span class="lineno"> 90</span> logging.warning(<span class="stringliteral">&quot;timer overdue! interval: %0.3f sec. - runtime: %0.3f sec. - &quot;</span></div>
<div class="line"><span class="lineno"> 91</span> <span class="stringliteral">&quot;%d events lost - next call in: %0.3f sec.&quot;</span>, self._interval, runTime, lostEvents, self.restTime)</div>
<div class="line"><span class="lineno"> 92</span> self.lostEvents += lostEvents</div>
<div class="line"><span class="lineno"> 93</span> self.overdueCount += 1</div>
<div class="line"><span class="lineno"> 94</span> logging.debug(<span class="stringliteral">&quot;repeatedTimer thread stopped: %s&quot;</span>, self._thread.name)</div>
<div class="line"><span class="lineno"> 95</span> self._thread = <span class="keywordtype">None</span> <span class="comment"># set to none after leave teh thread (running recognize)</span></div>
<div class="line"><span class="lineno"> 96</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="a2f693bfc34ab3bff466d1af495ac6524" name="a2f693bfc34ab3bff466d1af495ac6524"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2f693bfc34ab3bff466d1af495ac6524">&#9670;&#160;</a></span>isRunning()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">boswatch.timer.RepeatedTimer.isRunning </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Property for repeatedTimer running state. </p>
<div class="fragment"><div class="line"><span class="lineno"> 98</span> <span class="keyword">def </span>isRunning(self):</div>
<div class="line"><span class="lineno"> 99</span> <span class="stringliteral">r&quot;&quot;&quot;!Property for repeatedTimer running state&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 100</span> <span class="keywordflow">if</span> self._thread:</div>
<div class="line"><span class="lineno"> 101</span> <span class="keywordflow">return</span> <span class="keyword">True</span></div>
<div class="line"><span class="lineno"> 102</span> <span class="keywordflow">return</span> <span class="keyword">False</span></div>
<div class="line"><span class="lineno"> 103</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="afbe5f47ada6c6220e43b6bbec6318a51" name="afbe5f47ada6c6220e43b6bbec6318a51"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afbe5f47ada6c6220e43b6bbec6318a51">&#9670;&#160;</a></span>restTime()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">boswatch.timer.RepeatedTimer.restTime </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Property to get remaining time till next call. </p>
<div class="fragment"><div class="line"><span class="lineno"> 105</span> <span class="keyword">def </span>restTime(self):</div>
<div class="line"><span class="lineno"> 106</span> <span class="stringliteral">r&quot;&quot;&quot;!Property to get remaining time till next call&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 107</span> <span class="keywordflow">return</span> self._interval - ((time.time() - self._start) % self._interval)</div>
</div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">Field Documentation</h2>
<a id="ad1430785a88382edf7f5577060e0d01a" name="ad1430785a88382edf7f5577060e0d01a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad1430785a88382edf7f5577060e0d01a">&#9670;&#160;</a></span>_interval</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">boswatch.timer.RepeatedTimer._interval = interval</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a925a7f0f26df28aa88fb69ef192b1deb" name="a925a7f0f26df28aa88fb69ef192b1deb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a925a7f0f26df28aa88fb69ef192b1deb">&#9670;&#160;</a></span>_function</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">boswatch.timer.RepeatedTimer._function = targetFunction</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a33f78dd48f368e8b2e423b94d8d4f7f0" name="a33f78dd48f368e8b2e423b94d8d4f7f0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a33f78dd48f368e8b2e423b94d8d4f7f0">&#9670;&#160;</a></span>_args</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">boswatch.timer.RepeatedTimer._args = args</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ae92aee50e2a2341581abec6a14c788da" name="ae92aee50e2a2341581abec6a14c788da"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae92aee50e2a2341581abec6a14c788da">&#9670;&#160;</a></span>_kwargs</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">boswatch.timer.RepeatedTimer._kwargs = kwargs</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a41ace1d4fc64ef5196eea937d5247c1b" name="a41ace1d4fc64ef5196eea937d5247c1b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a41ace1d4fc64ef5196eea937d5247c1b">&#9670;&#160;</a></span>_start</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">boswatch.timer.RepeatedTimer._start = 0</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a840c33f251da10948ba1940f7edae806" name="a840c33f251da10948ba1940f7edae806"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a840c33f251da10948ba1940f7edae806">&#9670;&#160;</a></span>overdueCount</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int boswatch.timer.RepeatedTimer.overdueCount = 0</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ab5cd56124ddbb4e05348624139ed2e75" name="ab5cd56124ddbb4e05348624139ed2e75"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab5cd56124ddbb4e05348624139ed2e75">&#9670;&#160;</a></span>lostEvents</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int boswatch.timer.RepeatedTimer.lostEvents = 0</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a7ae2d4c2a6d8f17307df85227f3b1085" name="a7ae2d4c2a6d8f17307df85227f3b1085"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7ae2d4c2a6d8f17307df85227f3b1085">&#9670;&#160;</a></span>_isRunning</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool boswatch.timer.RepeatedTimer._isRunning = False</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ad0dde3339f157e43f191aafab23f03e5" name="ad0dde3339f157e43f191aafab23f03e5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad0dde3339f157e43f191aafab23f03e5">&#9670;&#160;</a></span>_event</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">boswatch.timer.RepeatedTimer._event = Event()</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a3b492713fbe661683f886f23c0925212" name="a3b492713fbe661683f886f23c0925212"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3b492713fbe661683f886f23c0925212">&#9670;&#160;</a></span>_thread <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">boswatch.timer.RepeatedTimer._thread = None</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a0ba9bc6b5aea4aa3ecb3670a2ca64b2f" name="a0ba9bc6b5aea4aa3ecb3670a2ca64b2f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0ba9bc6b5aea4aa3ecb3670a2ca64b2f">&#9670;&#160;</a></span>_thread <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">str boswatch.timer.RepeatedTimer._thread = &quot;RepTim(&quot; + str(self._interval) + &quot;)&quot;</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a5b693144e9b2060eff4a30e526f618f8" name="a5b693144e9b2060eff4a30e526f618f8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5b693144e9b2060eff4a30e526f618f8">&#9670;&#160;</a></span>restTime</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">boswatch.timer.RepeatedTimer.restTime = time.time()</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespaceboswatch.html">boswatch</a></li><li class="navelem"><a class="el" href="namespaceboswatch_1_1timer.html">timer</a></li><li class="navelem"><a class="el" href="classboswatch_1_1timer_1_1_repeated_timer.html">RepeatedTimer</a></li>
<li class="footer">Generated on Wed Jun 11 2025 08:24:06 for BOSWatch 3 by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
</ul>
</div>
</body>
</html>

View file

@ -0,0 +1,21 @@
var classboswatch_1_1timer_1_1_repeated_timer =
[
[ "__init__", "classboswatch_1_1timer_1_1_repeated_timer.html#a6456136d21c1cfa45cea27f8e52a6d90", null ],
[ "start", "classboswatch_1_1timer_1_1_repeated_timer.html#a7ac6df54ac53ce43b550ea2fb7f593ba", null ],
[ "stop", "classboswatch_1_1timer_1_1_repeated_timer.html#a5f7c9e59eb302893ede382b3cf36fc6d", null ],
[ "_target", "classboswatch_1_1timer_1_1_repeated_timer.html#a0a8c3bc1726ae2a8f43a36a4f2f74165", null ],
[ "isRunning", "classboswatch_1_1timer_1_1_repeated_timer.html#a2f693bfc34ab3bff466d1af495ac6524", null ],
[ "restTime", "classboswatch_1_1timer_1_1_repeated_timer.html#afbe5f47ada6c6220e43b6bbec6318a51", null ],
[ "_interval", "classboswatch_1_1timer_1_1_repeated_timer.html#ad1430785a88382edf7f5577060e0d01a", null ],
[ "_function", "classboswatch_1_1timer_1_1_repeated_timer.html#a925a7f0f26df28aa88fb69ef192b1deb", null ],
[ "_args", "classboswatch_1_1timer_1_1_repeated_timer.html#a33f78dd48f368e8b2e423b94d8d4f7f0", null ],
[ "_kwargs", "classboswatch_1_1timer_1_1_repeated_timer.html#ae92aee50e2a2341581abec6a14c788da", null ],
[ "_start", "classboswatch_1_1timer_1_1_repeated_timer.html#a41ace1d4fc64ef5196eea937d5247c1b", null ],
[ "overdueCount", "classboswatch_1_1timer_1_1_repeated_timer.html#a840c33f251da10948ba1940f7edae806", null ],
[ "lostEvents", "classboswatch_1_1timer_1_1_repeated_timer.html#ab5cd56124ddbb4e05348624139ed2e75", null ],
[ "_isRunning", "classboswatch_1_1timer_1_1_repeated_timer.html#a7ae2d4c2a6d8f17307df85227f3b1085", null ],
[ "_event", "classboswatch_1_1timer_1_1_repeated_timer.html#ad0dde3339f157e43f191aafab23f03e5", null ],
[ "_thread", "classboswatch_1_1timer_1_1_repeated_timer.html#a3b492713fbe661683f886f23c0925212", null ],
[ "_thread", "classboswatch_1_1timer_1_1_repeated_timer.html#a0ba9bc6b5aea4aa3ecb3670a2ca64b2f", null ],
[ "restTime", "classboswatch_1_1timer_1_1_repeated_timer.html#a5b693144e9b2060eff4a30e526f618f8", null ]
];

163
api/html/classes.html Normal file
View file

@ -0,0 +1,163 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.12.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>BOSWatch 3: Data Structure Index</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">BOSWatch 3
</div>
<div id="projectbrief">Python Script to receive and decode German BOS Information with rtl_fm and multimon-NG</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.12.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('classes.html',''); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="headertitle"><div class="title">Data Structure Index</div></div>
</div><!--header-->
<div class="contents">
<div class="qindex"><a class="qindex" href="#letter_B">B</a>&#160;|&#160;<a class="qindex" href="#letter_C">C</a>&#160;|&#160;<a class="qindex" href="#letter_D">D</a>&#160;|&#160;<a class="qindex" href="#letter_F">F</a>&#160;|&#160;<a class="qindex" href="#letter_I">I</a>&#160;|&#160;<a class="qindex" href="#letter_L">L</a>&#160;|&#160;<a class="qindex" href="#letter_M">M</a>&#160;|&#160;<a class="qindex" href="#letter_N">N</a>&#160;|&#160;<a class="qindex" href="#letter_P">P</a>&#160;|&#160;<a class="qindex" href="#letter_R">R</a>&#160;|&#160;<a class="qindex" href="#letter_S">S</a>&#160;|&#160;<a class="qindex" href="#letter_T">T</a>&#160;|&#160;<a class="qindex" href="#letter_Z">Z</a>&#160;|&#160;<a class="qindex" href="#letter__">_</a></div>
<div class="classindex">
<dl class="classindex even">
<dt class="alphachar"><a id="letter_B" name="letter_B">B</a></dt>
<dd><a class="el" href="classmodule_1_1descriptor_1_1_boswatch_module.html">BoswatchModule</a> (<a class="el" href="namespacemodule_1_1descriptor.html">module.descriptor</a>)</dd><dd><a class="el" href="classmodule_1_1filter_1_1double_filter_1_1_boswatch_module.html">BoswatchModule</a> (<a class="el" href="namespacemodule_1_1filter_1_1double_filter.html">module.filter.doubleFilter</a>)</dd><dd><a class="el" href="classmodule_1_1filter_1_1mode_filter_1_1_boswatch_module.html">BoswatchModule</a> (<a class="el" href="namespacemodule_1_1filter_1_1mode_filter.html">module.filter.modeFilter</a>)</dd><dd><a class="el" href="classmodule_1_1filter_1_1regex_filter_1_1_boswatch_module.html">BoswatchModule</a> (<a class="el" href="namespacemodule_1_1filter_1_1regex_filter.html">module.filter.regexFilter</a>)</dd><dd><a class="el" href="classmodule_1_1geocoding_1_1_boswatch_module.html">BoswatchModule</a> (<a class="el" href="namespacemodule_1_1geocoding.html">module.geocoding</a>)</dd><dd><a class="el" href="classmodule_1_1template__module_1_1_boswatch_module.html">BoswatchModule</a> (<a class="el" href="namespacemodule_1_1template__module.html">module.template_module</a>)</dd><dd><a class="el" href="classplugin_1_1divera_1_1_boswatch_plugin.html">BoswatchPlugin</a> (<a class="el" href="namespaceplugin_1_1divera.html">plugin.divera</a>)</dd><dd><a class="el" href="classplugin_1_1http_1_1_boswatch_plugin.html">BoswatchPlugin</a> (<a class="el" href="namespaceplugin_1_1http.html">plugin.http</a>)</dd><dd><a class="el" href="classplugin_1_1mysql_1_1_boswatch_plugin.html">BoswatchPlugin</a> (<a class="el" href="namespaceplugin_1_1mysql.html">plugin.mysql</a>)</dd><dd><a class="el" href="classplugin_1_1telegram_1_1_boswatch_plugin.html">BoswatchPlugin</a> (<a class="el" href="namespaceplugin_1_1telegram.html">plugin.telegram</a>)</dd><dd><a class="el" href="classplugin_1_1template__plugin_1_1_boswatch_plugin.html">BoswatchPlugin</a> (<a class="el" href="namespaceplugin_1_1template__plugin.html">plugin.template_plugin</a>)</dd><dd><a class="el" href="classboswatch_1_1network_1_1broadcast_1_1_broadcast_client.html">BroadcastClient</a> (<a class="el" href="namespaceboswatch_1_1network_1_1broadcast.html">boswatch.network.broadcast</a>)</dd><dd><a class="el" href="classboswatch_1_1network_1_1broadcast_1_1_broadcast_server.html">BroadcastServer</a> (<a class="el" href="namespaceboswatch_1_1network_1_1broadcast.html">boswatch.network.broadcast</a>)</dd></dl>
<dl class="classindex odd">
<dt class="alphachar"><a id="letter_C" name="letter_C">C</a></dt>
<dd><a class="el" href="classboswatch_1_1config_yaml_1_1_config_y_a_m_l.html">ConfigYAML</a> (<a class="el" href="namespaceboswatch_1_1config_yaml.html">boswatch.configYaml</a>)</dd></dl>
<dl class="classindex even">
<dt class="alphachar"><a id="letter_D" name="letter_D">D</a></dt>
<dd><a class="el" href="classboswatch_1_1decoder_1_1decoder_1_1_decoder.html">Decoder</a> (<a class="el" href="namespaceboswatch_1_1decoder_1_1decoder.html">boswatch.decoder.decoder</a>)</dd></dl>
<dl class="classindex odd">
<dt class="alphachar"><a id="letter_F" name="letter_F">F</a></dt>
<dd><a class="el" href="classboswatch_1_1decoder_1_1fms_decoder_1_1_fms_decoder.html">FmsDecoder</a> (<a class="el" href="namespaceboswatch_1_1decoder_1_1fms_decoder.html">boswatch.decoder.fmsDecoder</a>)</dd></dl>
<dl class="classindex even">
<dt class="alphachar"><a id="letter_I" name="letter_I">I</a></dt>
<dd><a class="el" href="classboswatch_1_1input_source_1_1input_base_1_1_input_base.html">InputBase</a> (<a class="el" href="namespaceboswatch_1_1input_source_1_1input_base.html">boswatch.inputSource.inputBase</a>)</dd></dl>
<dl class="classindex odd">
<dt class="alphachar"><a id="letter_L" name="letter_L">L</a></dt>
<dd><a class="el" href="classboswatch_1_1input_source_1_1line_in_input_1_1_line_in_input.html">LineInInput</a> (<a class="el" href="namespaceboswatch_1_1input_source_1_1line_in_input.html">boswatch.inputSource.lineInInput</a>)</dd></dl>
<dl class="classindex even">
<dt class="alphachar"><a id="letter_M" name="letter_M">M</a></dt>
<dd><a class="el" href="classmodule_1_1module_base_1_1_module_base.html">ModuleBase</a> (<a class="el" href="namespacemodule_1_1module_base.html">module.moduleBase</a>)</dd><dd><a class="el" href="classplugin_1_1telegram_1_1_m_q_bot.html">MQBot</a> (<a class="el" href="namespaceplugin_1_1telegram.html">plugin.telegram</a>)</dd></dl>
<dl class="classindex odd">
<dt class="alphachar"><a id="letter_N" name="letter_N">N</a></dt>
<dd><a class="el" href="classboswatch_1_1network_1_1net_check_1_1_net_check.html">NetCheck</a> (<a class="el" href="namespaceboswatch_1_1network_1_1net_check.html">boswatch.network.netCheck</a>)</dd></dl>
<dl class="classindex even">
<dt class="alphachar"><a id="letter_P" name="letter_P">P</a></dt>
<dd><a class="el" href="classboswatch_1_1packet_1_1_packet.html">Packet</a> (<a class="el" href="namespaceboswatch_1_1packet.html">boswatch.packet</a>)</dd><dd><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html">PluginBase</a> (<a class="el" href="namespaceplugin_1_1plugin_base.html">plugin.pluginBase</a>)</dd><dd><a class="el" href="classboswatch_1_1decoder_1_1pocsag_decoder_1_1_pocsag_decoder.html">PocsagDecoder</a> (<a class="el" href="namespaceboswatch_1_1decoder_1_1pocsag_decoder.html">boswatch.decoder.pocsagDecoder</a>)</dd><dd><a class="el" href="classboswatch_1_1process_manager_1_1_process_manager.html">ProcessManager</a> (<a class="el" href="namespaceboswatch_1_1process_manager.html">boswatch.processManager</a>)</dd><dd><a class="el" href="classboswatch_1_1input_source_1_1pulseaudio_input_1_1_pulse_audio_input.html">PulseAudioInput</a> (<a class="el" href="namespaceboswatch_1_1input_source_1_1pulseaudio_input.html">boswatch.inputSource.pulseaudioInput</a>)</dd></dl>
<dl class="classindex odd">
<dt class="alphachar"><a id="letter_R" name="letter_R">R</a></dt>
<dd><a class="el" href="classboswatch_1_1timer_1_1_repeated_timer.html">RepeatedTimer</a> (<a class="el" href="namespaceboswatch_1_1timer.html">boswatch.timer</a>)</dd><dd><a class="el" href="classboswatch_1_1router_1_1route_1_1_route.html">Route</a> (<a class="el" href="namespaceboswatch_1_1router_1_1route.html">boswatch.router.route</a>)</dd><dd><a class="el" href="classboswatch_1_1router_1_1router_1_1_router.html">Router</a> (<a class="el" href="namespaceboswatch_1_1router_1_1router.html">boswatch.router.router</a>)</dd><dd><a class="el" href="classboswatch_1_1router_1_1router_manager_1_1_router_manager.html">RouterManager</a> (<a class="el" href="namespaceboswatch_1_1router_1_1router_manager.html">boswatch.router.routerManager</a>)</dd></dl>
<dl class="classindex even">
<dt class="alphachar"><a id="letter_S" name="letter_S">S</a></dt>
<dd><a class="el" href="classboswatch_1_1input_source_1_1sdr_input_1_1_sdr_input.html">SdrInput</a> (<a class="el" href="namespaceboswatch_1_1input_source_1_1sdr_input.html">boswatch.inputSource.sdrInput</a>)</dd></dl>
<dl class="classindex odd">
<dt class="alphachar"><a id="letter_T" name="letter_T">T</a></dt>
<dd><a class="el" href="classboswatch_1_1network_1_1client_1_1_t_c_p_client.html">TCPClient</a> (<a class="el" href="namespaceboswatch_1_1network_1_1client.html">boswatch.network.client</a>)</dd><dd><a class="el" href="classboswatch_1_1network_1_1server_1_1_t_c_p_server.html">TCPServer</a> (<a class="el" href="namespaceboswatch_1_1network_1_1server.html">boswatch.network.server</a>)</dd></dl>
<dl class="classindex even">
<dt class="alphachar"><a id="letter_Z" name="letter_Z">Z</a></dt>
<dd><a class="el" href="classboswatch_1_1decoder_1_1zvei_decoder_1_1_zvei_decoder.html">ZveiDecoder</a> (<a class="el" href="namespaceboswatch_1_1decoder_1_1zvei_decoder.html">boswatch.decoder.zveiDecoder</a>)</dd></dl>
<dl class="classindex odd">
<dt class="alphachar"><a id="letter__" name="letter__">_</a></dt>
<dd><a class="el" href="classboswatch_1_1network_1_1server_1_1___threaded_t_c_p_request_handler.html">_ThreadedTCPRequestHandler</a> (<a class="el" href="namespaceboswatch_1_1network_1_1server.html">boswatch.network.server</a>)</dd><dd><a class="el" href="classboswatch_1_1network_1_1server_1_1___threaded_t_c_p_server.html">_ThreadedTCPServer</a> (<a class="el" href="namespaceboswatch_1_1network_1_1server.html">boswatch.network.server</a>)</dd></dl>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated on Wed Jun 11 2025 08:24:06 for BOSWatch 3 by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
</ul>
</div>
</body>
</html>

View file

@ -0,0 +1,327 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.12.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>BOSWatch 3: module.descriptor.BoswatchModule Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">BOSWatch 3
</div>
<div id="projectbrief">Python Script to receive and decode German BOS Information with rtl_fm and multimon-NG</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.12.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('classmodule_1_1descriptor_1_1_boswatch_module.html',''); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-attribs">Data Fields</a> </div>
<div class="headertitle"><div class="title">module.descriptor.BoswatchModule Class Reference</div></div>
</div><!--header-->
<div class="contents">
<p>Adds descriptions to bwPackets.
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:aa1bc2516e337c8fa96ef7e3656435f85" id="r_aa1bc2516e337c8fa96ef7e3656435f85"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aa1bc2516e337c8fa96ef7e3656435f85">__init__</a> (self, <a class="el" href="#aaa022ad0b56c3cbd15d2dab38fb99fb7">config</a>)</td></tr>
<tr class="memdesc:aa1bc2516e337c8fa96ef7e3656435f85"><td class="mdescLeft">&#160;</td><td class="mdescRight">Do not change anything here! <br /></td></tr>
<tr class="separator:aa1bc2516e337c8fa96ef7e3656435f85"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a39d8aef7f47e43c8108813f072785a56" id="r_a39d8aef7f47e43c8108813f072785a56"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a39d8aef7f47e43c8108813f072785a56">onLoad</a> (self)</td></tr>
<tr class="memdesc:a39d8aef7f47e43c8108813f072785a56"><td class="mdescLeft">&#160;</td><td class="mdescRight">Called by import of the plugin. <br /></td></tr>
<tr class="separator:a39d8aef7f47e43c8108813f072785a56"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2192a35cc94bccc69d1b6a268acc9b94" id="r_a2192a35cc94bccc69d1b6a268acc9b94"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a2192a35cc94bccc69d1b6a268acc9b94">doWork</a> (self, bwPacket)</td></tr>
<tr class="memdesc:a2192a35cc94bccc69d1b6a268acc9b94"><td class="mdescLeft">&#160;</td><td class="mdescRight">start an run of the module. <br /></td></tr>
<tr class="separator:a2192a35cc94bccc69d1b6a268acc9b94"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adf37fd4608e42b4a9335c0d2954d7113" id="r_adf37fd4608e42b4a9335c0d2954d7113"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#adf37fd4608e42b4a9335c0d2954d7113">onUnload</a> (self)</td></tr>
<tr class="memdesc:adf37fd4608e42b4a9335c0d2954d7113"><td class="mdescLeft">&#160;</td><td class="mdescRight">Called by destruction of the plugin. <br /></td></tr>
<tr class="separator:adf37fd4608e42b4a9335c0d2954d7113"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classmodule_1_1module_base_1_1_module_base"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pub_methods_classmodule_1_1module_base_1_1_module_base')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classmodule_1_1module_base_1_1_module_base.html">module.moduleBase.ModuleBase</a></td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
Data Fields</h2></td></tr>
<tr class="memitem:aaa022ad0b56c3cbd15d2dab38fb99fb7" id="r_aaa022ad0b56c3cbd15d2dab38fb99fb7"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aaa022ad0b56c3cbd15d2dab38fb99fb7">config</a> = bwPacket.get(descriptor.get(&quot;scanField&quot;)):</td></tr>
<tr class="separator:aaa022ad0b56c3cbd15d2dab38fb99fb7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_attribs_classmodule_1_1module_base_1_1_module_base"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pub_attribs_classmodule_1_1module_base_1_1_module_base')"><img src="closed.png" alt="-"/>&#160;Data Fields inherited from <a class="el" href="classmodule_1_1module_base_1_1_module_base.html">module.moduleBase.ModuleBase</a></td></tr>
<tr class="memitem:a7cbca9fa85b9b9bb487ac882d51385c4 inherit pub_attribs_classmodule_1_1module_base_1_1_module_base" id="r_a7cbca9fa85b9b9bb487ac882d51385c4"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmodule_1_1module_base_1_1_module_base.html#a7cbca9fa85b9b9bb487ac882d51385c4">config</a> = config</td></tr>
<tr class="separator:a7cbca9fa85b9b9bb487ac882d51385c4 inherit pub_attribs_classmodule_1_1module_base_1_1_module_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="inherited" name="inherited"></a>
Additional Inherited Members</h2></td></tr>
<tr class="inherit_header pub_static_methods_classmodule_1_1module_base_1_1_module_base"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pub_static_methods_classmodule_1_1module_base_1_1_module_base')"><img src="closed.png" alt="-"/>&#160;Static Public Member Functions inherited from <a class="el" href="classmodule_1_1module_base_1_1_module_base.html">module.moduleBase.ModuleBase</a></td></tr>
<tr class="memitem:a75f00bbad4a6905c467e71df1df22f9c inherit pub_static_methods_classmodule_1_1module_base_1_1_module_base" id="r_a75f00bbad4a6905c467e71df1df22f9c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmodule_1_1module_base_1_1_module_base.html#a75f00bbad4a6905c467e71df1df22f9c">registerWildcard</a> (newWildcard, bwPacketField)</td></tr>
<tr class="memdesc:a75f00bbad4a6905c467e71df1df22f9c inherit pub_static_methods_classmodule_1_1module_base_1_1_module_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Register a new wildcard. <br /></td></tr>
<tr class="separator:a75f00bbad4a6905c467e71df1df22f9c inherit pub_static_methods_classmodule_1_1module_base_1_1_module_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_methods_classmodule_1_1module_base_1_1_module_base"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pro_methods_classmodule_1_1module_base_1_1_module_base')"><img src="closed.png" alt="-"/>&#160;Protected Member Functions inherited from <a class="el" href="classmodule_1_1module_base_1_1_module_base.html">module.moduleBase.ModuleBase</a></td></tr>
<tr class="memitem:ae43a99376d14379225916bbce74793bd inherit pro_methods_classmodule_1_1module_base_1_1_module_base" id="r_ae43a99376d14379225916bbce74793bd"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmodule_1_1module_base_1_1_module_base.html#ae43a99376d14379225916bbce74793bd">_cleanup</a> (self)</td></tr>
<tr class="memdesc:ae43a99376d14379225916bbce74793bd inherit pro_methods_classmodule_1_1module_base_1_1_module_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Cleanup routine calls <a class="el" href="classmodule_1_1module_base_1_1_module_base.html#a4c69727e801ba326aed6963cd9fd6dae" title="Called on shutdown of boswatch can be inherited.">onUnload()</a> directly. <br /></td></tr>
<tr class="separator:ae43a99376d14379225916bbce74793bd inherit pro_methods_classmodule_1_1module_base_1_1_module_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1bc0d95375400ac328aaa9c10fd1996a inherit pro_methods_classmodule_1_1module_base_1_1_module_base" id="r_a1bc0d95375400ac328aaa9c10fd1996a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmodule_1_1module_base_1_1_module_base.html#a1bc0d95375400ac328aaa9c10fd1996a">_run</a> (self, bwPacket)</td></tr>
<tr class="memdesc:a1bc0d95375400ac328aaa9c10fd1996a inherit pro_methods_classmodule_1_1module_base_1_1_module_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">start an run of the module. <br /></td></tr>
<tr class="separator:a1bc0d95375400ac328aaa9c10fd1996a inherit pro_methods_classmodule_1_1module_base_1_1_module_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a872db7602a8139866730ba79a220314b inherit pro_methods_classmodule_1_1module_base_1_1_module_base" id="r_a872db7602a8139866730ba79a220314b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmodule_1_1module_base_1_1_module_base.html#a872db7602a8139866730ba79a220314b">_getStatistics</a> (self)</td></tr>
<tr class="memdesc:a872db7602a8139866730ba79a220314b inherit pro_methods_classmodule_1_1module_base_1_1_module_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns statistical information's from last module run. <br /></td></tr>
<tr class="separator:a872db7602a8139866730ba79a220314b inherit pro_methods_classmodule_1_1module_base_1_1_module_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_attribs_classmodule_1_1module_base_1_1_module_base"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pro_attribs_classmodule_1_1module_base_1_1_module_base')"><img src="closed.png" alt="-"/>&#160;Protected Attributes inherited from <a class="el" href="classmodule_1_1module_base_1_1_module_base.html">module.moduleBase.ModuleBase</a></td></tr>
<tr class="memitem:a667c99040b316d66a00de34ff5cebf3e inherit pro_attribs_classmodule_1_1module_base_1_1_module_base" id="r_a667c99040b316d66a00de34ff5cebf3e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmodule_1_1module_base_1_1_module_base.html#a667c99040b316d66a00de34ff5cebf3e">_moduleName</a> = moduleName</td></tr>
<tr class="separator:a667c99040b316d66a00de34ff5cebf3e inherit pro_attribs_classmodule_1_1module_base_1_1_module_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a96ad0ccc9a2dadf099285b5e938a098a inherit pro_attribs_classmodule_1_1module_base_1_1_module_base" id="r_a96ad0ccc9a2dadf099285b5e938a098a"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmodule_1_1module_base_1_1_module_base.html#a96ad0ccc9a2dadf099285b5e938a098a">_cumTime</a> = 0</td></tr>
<tr class="separator:a96ad0ccc9a2dadf099285b5e938a098a inherit pro_attribs_classmodule_1_1module_base_1_1_module_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9b6aa123432ef49e373f643f5b10a82c inherit pro_attribs_classmodule_1_1module_base_1_1_module_base" id="r_a9b6aa123432ef49e373f643f5b10a82c"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmodule_1_1module_base_1_1_module_base.html#a9b6aa123432ef49e373f643f5b10a82c">_moduleTime</a> = 0</td></tr>
<tr class="separator:a9b6aa123432ef49e373f643f5b10a82c inherit pro_attribs_classmodule_1_1module_base_1_1_module_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9f55a9dd81ff02426ae9d73ff62f4134 inherit pro_attribs_classmodule_1_1module_base_1_1_module_base" id="r_a9f55a9dd81ff02426ae9d73ff62f4134"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmodule_1_1module_base_1_1_module_base.html#a9f55a9dd81ff02426ae9d73ff62f4134">_runCount</a> = 0</td></tr>
<tr class="separator:a9f55a9dd81ff02426ae9d73ff62f4134 inherit pro_attribs_classmodule_1_1module_base_1_1_module_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac95033dbbecea6287331a58f4b2fd046 inherit pro_attribs_classmodule_1_1module_base_1_1_module_base" id="r_ac95033dbbecea6287331a58f4b2fd046"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmodule_1_1module_base_1_1_module_base.html#ac95033dbbecea6287331a58f4b2fd046">_moduleErrorCount</a> = 0</td></tr>
<tr class="separator:ac95033dbbecea6287331a58f4b2fd046 inherit pro_attribs_classmodule_1_1module_base_1_1_module_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_static_attribs_classmodule_1_1module_base_1_1_module_base"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pro_static_attribs_classmodule_1_1module_base_1_1_module_base')"><img src="closed.png" alt="-"/>&#160;Static Protected Attributes inherited from <a class="el" href="classmodule_1_1module_base_1_1_module_base.html">module.moduleBase.ModuleBase</a></td></tr>
<tr class="memitem:addb1f046325535d8f3036c605429cf14 inherit pro_static_attribs_classmodule_1_1module_base_1_1_module_base" id="r_addb1f046325535d8f3036c605429cf14"><td class="memItemLeft" align="right" valign="top">list&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmodule_1_1module_base_1_1_module_base.html#addb1f046325535d8f3036c605429cf14">_modulesActive</a> = []</td></tr>
<tr class="separator:addb1f046325535d8f3036c605429cf14 inherit pro_static_attribs_classmodule_1_1module_base_1_1_module_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Adds descriptions to bwPackets. </p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="aa1bc2516e337c8fa96ef7e3656435f85" name="aa1bc2516e337c8fa96ef7e3656435f85"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa1bc2516e337c8fa96ef7e3656435f85">&#9670;&#160;</a></span>__init__()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">module.descriptor.BoswatchModule.__init__ </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>config</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Do not change anything here! </p>
<p>Reimplemented from <a class="el" href="classmodule_1_1module_base_1_1_module_base.html#afee02f2e4ef75f43eb819facba9e9bd7">module.moduleBase.ModuleBase</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 30</span> <span class="keyword">def </span>__init__(self, config):</div>
<div class="line"><span class="lineno"> 31</span> <span class="stringliteral">r&quot;&quot;&quot;!Do not change anything here!&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 32</span> super().__init__(__name__, config) <span class="comment"># you can access the config class on &#39;self.config&#39;</span></div>
<div class="line"><span class="lineno"> 33</span> </div>
</div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a39d8aef7f47e43c8108813f072785a56" name="a39d8aef7f47e43c8108813f072785a56"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a39d8aef7f47e43c8108813f072785a56">&#9670;&#160;</a></span>onLoad()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">module.descriptor.BoswatchModule.onLoad </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Called by import of the plugin. </p>
<p>Reimplemented from <a class="el" href="classmodule_1_1module_base_1_1_module_base.html#aedd2d0694073eff10a3c0440f487a373">module.moduleBase.ModuleBase</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 34</span> <span class="keyword">def </span>onLoad(self):</div>
<div class="line"><span class="lineno"> 35</span> <span class="stringliteral">r&quot;&quot;&quot;!Called by import of the plugin&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 36</span> <span class="keywordflow">for</span> descriptor <span class="keywordflow">in</span> self.config:</div>
<div class="line"><span class="lineno"> 37</span> <span class="keywordflow">if</span> descriptor.get(<span class="stringliteral">&quot;wildcard&quot;</span>, default=<span class="keywordtype">None</span>):</div>
<div class="line"><span class="lineno"> 38</span> self.registerWildcard(descriptor.get(<span class="stringliteral">&quot;wildcard&quot;</span>), descriptor.get(<span class="stringliteral">&quot;descrField&quot;</span>))</div>
<div class="line"><span class="lineno"> 39</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="a2192a35cc94bccc69d1b6a268acc9b94" name="a2192a35cc94bccc69d1b6a268acc9b94"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2192a35cc94bccc69d1b6a268acc9b94">&#9670;&#160;</a></span>doWork()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">module.descriptor.BoswatchModule.doWork </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>bwPacket</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>start an run of the module. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">bwPacket</td><td>A BOSWatch packet instance </td></tr>
</table>
</dd>
</dl>
<p>Reimplemented from <a class="el" href="classmodule_1_1module_base_1_1_module_base.html#a2146259480980a909ee97410cfdc7933">module.moduleBase.ModuleBase</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 40</span> <span class="keyword">def </span>doWork(self, bwPacket):</div>
<div class="line"><span class="lineno"> 41</span> <span class="stringliteral">r&quot;&quot;&quot;!start an run of the module.</span></div>
<div class="line"><span class="lineno"> 42</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 43</span><span class="stringliteral"> @param bwPacket: A BOSWatch packet instance&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 44</span> <span class="keywordflow">for</span> descriptor <span class="keywordflow">in</span> self.config:</div>
<div class="line"><span class="lineno"> 45</span> <span class="keywordflow">if</span> <span class="keywordflow">not</span> bwPacket.get(descriptor.get(<span class="stringliteral">&quot;scanField&quot;</span>)):</div>
<div class="line"><span class="lineno"> 46</span> <span class="keywordflow">break</span> <span class="comment"># scanField is not available in this packet</span></div>
<div class="line"><span class="lineno"> 47</span> bwPacket.set(descriptor.get(<span class="stringliteral">&quot;descrField&quot;</span>), bwPacket.get(descriptor.get(<span class="stringliteral">&quot;scanField&quot;</span>)))</div>
<div class="line"><span class="lineno"> 48</span> <span class="keywordflow">for</span> description <span class="keywordflow">in</span> descriptor.get(<span class="stringliteral">&quot;descriptions&quot;</span>):</div>
<div class="line"><span class="lineno"> 49</span> <span class="keywordflow">if</span> str(description.get(<span class="stringliteral">&quot;for&quot;</span>)) == bwPacket.get(descriptor.get(<span class="stringliteral">&quot;scanField&quot;</span>)):</div>
<div class="line"><span class="lineno"> 50</span> logging.debug(<span class="stringliteral">&quot;Description &#39;%s&#39; added in packet field &#39;%s&#39;&quot;</span>,</div>
<div class="line"><span class="lineno"> 51</span> description.get(<span class="stringliteral">&quot;add&quot;</span>), descriptor.get(<span class="stringliteral">&quot;descrField&quot;</span>))</div>
<div class="line"><span class="lineno"> 52</span> bwPacket.set(descriptor.get(<span class="stringliteral">&quot;descrField&quot;</span>), description.get(<span class="stringliteral">&quot;add&quot;</span>))</div>
<div class="line"><span class="lineno"> 53</span> <span class="keywordflow">break</span> <span class="comment"># this descriptor has found a description - run next descriptor</span></div>
<div class="line"><span class="lineno"> 54</span> <span class="keywordflow">return</span> bwPacket</div>
<div class="line"><span class="lineno"> 55</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="adf37fd4608e42b4a9335c0d2954d7113" name="adf37fd4608e42b4a9335c0d2954d7113"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adf37fd4608e42b4a9335c0d2954d7113">&#9670;&#160;</a></span>onUnload()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">module.descriptor.BoswatchModule.onUnload </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Called by destruction of the plugin. </p>
<p>Reimplemented from <a class="el" href="classmodule_1_1module_base_1_1_module_base.html#a4c69727e801ba326aed6963cd9fd6dae">module.moduleBase.ModuleBase</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 56</span> <span class="keyword">def </span>onUnload(self):</div>
<div class="line"><span class="lineno"> 57</span> <span class="stringliteral">r&quot;&quot;&quot;!Called by destruction of the plugin&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 58</span> <span class="keywordflow">pass</span></div>
</div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">Field Documentation</h2>
<a id="aaa022ad0b56c3cbd15d2dab38fb99fb7" name="aaa022ad0b56c3cbd15d2dab38fb99fb7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aaa022ad0b56c3cbd15d2dab38fb99fb7">&#9670;&#160;</a></span>config</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">module.descriptor.BoswatchModule.config = bwPacket.get(descriptor.get(&quot;scanField&quot;)):</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespacemodule.html">module</a></li><li class="navelem"><a class="el" href="namespacemodule_1_1descriptor.html">descriptor</a></li><li class="navelem"><a class="el" href="classmodule_1_1descriptor_1_1_boswatch_module.html">BoswatchModule</a></li>
<li class="footer">Generated on Wed Jun 11 2025 08:24:06 for BOSWatch 3 by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
</ul>
</div>
</body>
</html>

View file

@ -0,0 +1,8 @@
var classmodule_1_1descriptor_1_1_boswatch_module =
[
[ "__init__", "classmodule_1_1descriptor_1_1_boswatch_module.html#aa1bc2516e337c8fa96ef7e3656435f85", null ],
[ "onLoad", "classmodule_1_1descriptor_1_1_boswatch_module.html#a39d8aef7f47e43c8108813f072785a56", null ],
[ "doWork", "classmodule_1_1descriptor_1_1_boswatch_module.html#a2192a35cc94bccc69d1b6a268acc9b94", null ],
[ "onUnload", "classmodule_1_1descriptor_1_1_boswatch_module.html#adf37fd4608e42b4a9335c0d2954d7113", null ],
[ "config", "classmodule_1_1descriptor_1_1_boswatch_module.html#aaa022ad0b56c3cbd15d2dab38fb99fb7", null ]
];

View file

@ -0,0 +1,428 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.12.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>BOSWatch 3: module.filter.doubleFilter.BoswatchModule Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">BOSWatch 3
</div>
<div id="projectbrief">Python Script to receive and decode German BOS Information with rtl_fm and multimon-NG</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.12.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('classmodule_1_1filter_1_1double_filter_1_1_boswatch_module.html',''); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-attribs">Data Fields</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> &#124;
<a href="#pro-attribs">Protected Attributes</a> </div>
<div class="headertitle"><div class="title">module.filter.doubleFilter.BoswatchModule Class Reference</div></div>
</div><!--header-->
<div class="contents">
<p>Description of the Module.
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a10e2b681c89887ee422f01a1f9ae9dcd" id="r_a10e2b681c89887ee422f01a1f9ae9dcd"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a10e2b681c89887ee422f01a1f9ae9dcd">__init__</a> (self, <a class="el" href="classmodule_1_1module_base_1_1_module_base.html#a7cbca9fa85b9b9bb487ac882d51385c4">config</a>)</td></tr>
<tr class="memdesc:a10e2b681c89887ee422f01a1f9ae9dcd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Do not change anything here! <br /></td></tr>
<tr class="separator:a10e2b681c89887ee422f01a1f9ae9dcd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa5f9d403d03ad71ebacc98d0e05ef0ab" id="r_aa5f9d403d03ad71ebacc98d0e05ef0ab"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aa5f9d403d03ad71ebacc98d0e05ef0ab">onLoad</a> (self)</td></tr>
<tr class="memdesc:aa5f9d403d03ad71ebacc98d0e05ef0ab"><td class="mdescLeft">&#160;</td><td class="mdescRight">Called by import of the plugin Remove if not implemented. <br /></td></tr>
<tr class="separator:aa5f9d403d03ad71ebacc98d0e05ef0ab"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a88c57fc92229358481fa36e98c677c7d" id="r_a88c57fc92229358481fa36e98c677c7d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a88c57fc92229358481fa36e98c677c7d">doWork</a> (self, bwPacket)</td></tr>
<tr class="memdesc:a88c57fc92229358481fa36e98c677c7d"><td class="mdescLeft">&#160;</td><td class="mdescRight">start an run of the module. <br /></td></tr>
<tr class="separator:a88c57fc92229358481fa36e98c677c7d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a81185d2d81a4959d8a29e5054adf975d" id="r_a81185d2d81a4959d8a29e5054adf975d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a81185d2d81a4959d8a29e5054adf975d">onUnload</a> (self)</td></tr>
<tr class="memdesc:a81185d2d81a4959d8a29e5054adf975d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Called by destruction of the plugin Remove if not implemented. <br /></td></tr>
<tr class="separator:a81185d2d81a4959d8a29e5054adf975d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classmodule_1_1module_base_1_1_module_base"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pub_methods_classmodule_1_1module_base_1_1_module_base')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classmodule_1_1module_base_1_1_module_base.html">module.moduleBase.ModuleBase</a></td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
Data Fields</h2></td></tr>
<tr class="memitem:a8636be116a0033d585673a8c0e3527d0" id="r_a8636be116a0033d585673a8c0e3527d0"><td class="memItemLeft" align="right" valign="top">list&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a8636be116a0033d585673a8c0e3527d0">_filterLists</a> = []</td></tr>
<tr class="separator:a8636be116a0033d585673a8c0e3527d0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_attribs_classmodule_1_1module_base_1_1_module_base"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pub_attribs_classmodule_1_1module_base_1_1_module_base')"><img src="closed.png" alt="-"/>&#160;Data Fields inherited from <a class="el" href="classmodule_1_1module_base_1_1_module_base.html">module.moduleBase.ModuleBase</a></td></tr>
<tr class="memitem:a7cbca9fa85b9b9bb487ac882d51385c4 inherit pub_attribs_classmodule_1_1module_base_1_1_module_base" id="r_a7cbca9fa85b9b9bb487ac882d51385c4"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmodule_1_1module_base_1_1_module_base.html#a7cbca9fa85b9b9bb487ac882d51385c4">config</a> = config</td></tr>
<tr class="separator:a7cbca9fa85b9b9bb487ac882d51385c4 inherit pub_attribs_classmodule_1_1module_base_1_1_module_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pro-methods" name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr class="memitem:a43d03ed47b4c9bdaf34daec40cf094d4" id="r_a43d03ed47b4c9bdaf34daec40cf094d4"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a43d03ed47b4c9bdaf34daec40cf094d4">_check</a> (self, bwPacket, filterFields)</td></tr>
<tr class="separator:a43d03ed47b4c9bdaf34daec40cf094d4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_methods_classmodule_1_1module_base_1_1_module_base"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pro_methods_classmodule_1_1module_base_1_1_module_base')"><img src="closed.png" alt="-"/>&#160;Protected Member Functions inherited from <a class="el" href="classmodule_1_1module_base_1_1_module_base.html">module.moduleBase.ModuleBase</a></td></tr>
<tr class="memitem:ae43a99376d14379225916bbce74793bd inherit pro_methods_classmodule_1_1module_base_1_1_module_base" id="r_ae43a99376d14379225916bbce74793bd"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmodule_1_1module_base_1_1_module_base.html#ae43a99376d14379225916bbce74793bd">_cleanup</a> (self)</td></tr>
<tr class="memdesc:ae43a99376d14379225916bbce74793bd inherit pro_methods_classmodule_1_1module_base_1_1_module_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Cleanup routine calls <a class="el" href="classmodule_1_1module_base_1_1_module_base.html#a4c69727e801ba326aed6963cd9fd6dae" title="Called on shutdown of boswatch can be inherited.">onUnload()</a> directly. <br /></td></tr>
<tr class="separator:ae43a99376d14379225916bbce74793bd inherit pro_methods_classmodule_1_1module_base_1_1_module_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1bc0d95375400ac328aaa9c10fd1996a inherit pro_methods_classmodule_1_1module_base_1_1_module_base" id="r_a1bc0d95375400ac328aaa9c10fd1996a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmodule_1_1module_base_1_1_module_base.html#a1bc0d95375400ac328aaa9c10fd1996a">_run</a> (self, bwPacket)</td></tr>
<tr class="memdesc:a1bc0d95375400ac328aaa9c10fd1996a inherit pro_methods_classmodule_1_1module_base_1_1_module_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">start an run of the module. <br /></td></tr>
<tr class="separator:a1bc0d95375400ac328aaa9c10fd1996a inherit pro_methods_classmodule_1_1module_base_1_1_module_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a872db7602a8139866730ba79a220314b inherit pro_methods_classmodule_1_1module_base_1_1_module_base" id="r_a872db7602a8139866730ba79a220314b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmodule_1_1module_base_1_1_module_base.html#a872db7602a8139866730ba79a220314b">_getStatistics</a> (self)</td></tr>
<tr class="memdesc:a872db7602a8139866730ba79a220314b inherit pro_methods_classmodule_1_1module_base_1_1_module_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns statistical information's from last module run. <br /></td></tr>
<tr class="separator:a872db7602a8139866730ba79a220314b inherit pro_methods_classmodule_1_1module_base_1_1_module_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pro-attribs" name="pro-attribs"></a>
Protected Attributes</h2></td></tr>
<tr class="memitem:acea4923f42d2b6688455567e1c3f6f2e" id="r_acea4923f42d2b6688455567e1c3f6f2e"><td class="memItemLeft" align="right" valign="top">dict&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#acea4923f42d2b6688455567e1c3f6f2e">_filterLists</a> = {}</td></tr>
<tr class="separator:acea4923f42d2b6688455567e1c3f6f2e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_attribs_classmodule_1_1module_base_1_1_module_base"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pro_attribs_classmodule_1_1module_base_1_1_module_base')"><img src="closed.png" alt="-"/>&#160;Protected Attributes inherited from <a class="el" href="classmodule_1_1module_base_1_1_module_base.html">module.moduleBase.ModuleBase</a></td></tr>
<tr class="memitem:a667c99040b316d66a00de34ff5cebf3e inherit pro_attribs_classmodule_1_1module_base_1_1_module_base" id="r_a667c99040b316d66a00de34ff5cebf3e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmodule_1_1module_base_1_1_module_base.html#a667c99040b316d66a00de34ff5cebf3e">_moduleName</a> = moduleName</td></tr>
<tr class="separator:a667c99040b316d66a00de34ff5cebf3e inherit pro_attribs_classmodule_1_1module_base_1_1_module_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a96ad0ccc9a2dadf099285b5e938a098a inherit pro_attribs_classmodule_1_1module_base_1_1_module_base" id="r_a96ad0ccc9a2dadf099285b5e938a098a"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmodule_1_1module_base_1_1_module_base.html#a96ad0ccc9a2dadf099285b5e938a098a">_cumTime</a> = 0</td></tr>
<tr class="separator:a96ad0ccc9a2dadf099285b5e938a098a inherit pro_attribs_classmodule_1_1module_base_1_1_module_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9b6aa123432ef49e373f643f5b10a82c inherit pro_attribs_classmodule_1_1module_base_1_1_module_base" id="r_a9b6aa123432ef49e373f643f5b10a82c"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmodule_1_1module_base_1_1_module_base.html#a9b6aa123432ef49e373f643f5b10a82c">_moduleTime</a> = 0</td></tr>
<tr class="separator:a9b6aa123432ef49e373f643f5b10a82c inherit pro_attribs_classmodule_1_1module_base_1_1_module_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9f55a9dd81ff02426ae9d73ff62f4134 inherit pro_attribs_classmodule_1_1module_base_1_1_module_base" id="r_a9f55a9dd81ff02426ae9d73ff62f4134"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmodule_1_1module_base_1_1_module_base.html#a9f55a9dd81ff02426ae9d73ff62f4134">_runCount</a> = 0</td></tr>
<tr class="separator:a9f55a9dd81ff02426ae9d73ff62f4134 inherit pro_attribs_classmodule_1_1module_base_1_1_module_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac95033dbbecea6287331a58f4b2fd046 inherit pro_attribs_classmodule_1_1module_base_1_1_module_base" id="r_ac95033dbbecea6287331a58f4b2fd046"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmodule_1_1module_base_1_1_module_base.html#ac95033dbbecea6287331a58f4b2fd046">_moduleErrorCount</a> = 0</td></tr>
<tr class="separator:ac95033dbbecea6287331a58f4b2fd046 inherit pro_attribs_classmodule_1_1module_base_1_1_module_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="inherited" name="inherited"></a>
Additional Inherited Members</h2></td></tr>
<tr class="inherit_header pub_static_methods_classmodule_1_1module_base_1_1_module_base"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pub_static_methods_classmodule_1_1module_base_1_1_module_base')"><img src="closed.png" alt="-"/>&#160;Static Public Member Functions inherited from <a class="el" href="classmodule_1_1module_base_1_1_module_base.html">module.moduleBase.ModuleBase</a></td></tr>
<tr class="memitem:a75f00bbad4a6905c467e71df1df22f9c inherit pub_static_methods_classmodule_1_1module_base_1_1_module_base" id="r_a75f00bbad4a6905c467e71df1df22f9c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmodule_1_1module_base_1_1_module_base.html#a75f00bbad4a6905c467e71df1df22f9c">registerWildcard</a> (newWildcard, bwPacketField)</td></tr>
<tr class="memdesc:a75f00bbad4a6905c467e71df1df22f9c inherit pub_static_methods_classmodule_1_1module_base_1_1_module_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Register a new wildcard. <br /></td></tr>
<tr class="separator:a75f00bbad4a6905c467e71df1df22f9c inherit pub_static_methods_classmodule_1_1module_base_1_1_module_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_static_attribs_classmodule_1_1module_base_1_1_module_base"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pro_static_attribs_classmodule_1_1module_base_1_1_module_base')"><img src="closed.png" alt="-"/>&#160;Static Protected Attributes inherited from <a class="el" href="classmodule_1_1module_base_1_1_module_base.html">module.moduleBase.ModuleBase</a></td></tr>
<tr class="memitem:addb1f046325535d8f3036c605429cf14 inherit pro_static_attribs_classmodule_1_1module_base_1_1_module_base" id="r_addb1f046325535d8f3036c605429cf14"><td class="memItemLeft" align="right" valign="top">list&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmodule_1_1module_base_1_1_module_base.html#addb1f046325535d8f3036c605429cf14">_modulesActive</a> = []</td></tr>
<tr class="separator:addb1f046325535d8f3036c605429cf14 inherit pro_static_attribs_classmodule_1_1module_base_1_1_module_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Description of the Module. </p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a10e2b681c89887ee422f01a1f9ae9dcd" name="a10e2b681c89887ee422f01a1f9ae9dcd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a10e2b681c89887ee422f01a1f9ae9dcd">&#9670;&#160;</a></span>__init__()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">module.filter.doubleFilter.BoswatchModule.__init__ </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>config</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Do not change anything here! </p>
<p>Reimplemented from <a class="el" href="classmodule_1_1module_base_1_1_module_base.html#afee02f2e4ef75f43eb819facba9e9bd7">module.moduleBase.ModuleBase</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 30</span> <span class="keyword">def </span>__init__(self, config):</div>
<div class="line"><span class="lineno"> 31</span> <span class="stringliteral">r&quot;&quot;&quot;!Do not change anything here!&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 32</span> super().__init__(__name__, config) <span class="comment"># you can access the config class on &#39;self.config&#39;</span></div>
<div class="line"><span class="lineno"> 33</span> self._filterLists = {}</div>
<div class="line"><span class="lineno"> 34</span> logging.debug(<span class="stringliteral">&quot;Configured ignoreTime: %d&quot;</span>, self.config.get(<span class="stringliteral">&quot;ignoreTime&quot;</span>, default=10))</div>
<div class="line"><span class="lineno"> 35</span> logging.debug(<span class="stringliteral">&quot;Configured maxEntry: %d&quot;</span>, self.config.get(<span class="stringliteral">&quot;maxEntry&quot;</span>, default=10))</div>
<div class="line"><span class="lineno"> 36</span> </div>
</div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="aa5f9d403d03ad71ebacc98d0e05ef0ab" name="aa5f9d403d03ad71ebacc98d0e05ef0ab"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa5f9d403d03ad71ebacc98d0e05ef0ab">&#9670;&#160;</a></span>onLoad()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">module.filter.doubleFilter.BoswatchModule.onLoad </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Called by import of the plugin Remove if not implemented. </p>
<p>Reimplemented from <a class="el" href="classmodule_1_1module_base_1_1_module_base.html#aedd2d0694073eff10a3c0440f487a373">module.moduleBase.ModuleBase</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 37</span> <span class="keyword">def </span>onLoad(self):</div>
<div class="line"><span class="lineno"> 38</span> <span class="stringliteral">r&quot;&quot;&quot;!Called by import of the plugin</span></div>
<div class="line"><span class="lineno"> 39</span><span class="stringliteral"> Remove if not implemented&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 40</span> <span class="keywordflow">pass</span></div>
<div class="line"><span class="lineno"> 41</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="a88c57fc92229358481fa36e98c677c7d" name="a88c57fc92229358481fa36e98c677c7d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a88c57fc92229358481fa36e98c677c7d">&#9670;&#160;</a></span>doWork()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">module.filter.doubleFilter.BoswatchModule.doWork </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>bwPacket</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>start an run of the module. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">bwPacket</td><td>A BOSWatch packet instance </td></tr>
</table>
</dd>
</dl>
<p>Reimplemented from <a class="el" href="classmodule_1_1module_base_1_1_module_base.html#a2146259480980a909ee97410cfdc7933">module.moduleBase.ModuleBase</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 42</span> <span class="keyword">def </span>doWork(self, bwPacket):</div>
<div class="line"><span class="lineno"> 43</span> <span class="stringliteral">r&quot;&quot;&quot;!start an run of the module.</span></div>
<div class="line"><span class="lineno"> 44</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 45</span><span class="stringliteral"> @param bwPacket: A BOSWatch packet instance&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 46</span> <span class="keywordflow">if</span> bwPacket.get(<span class="stringliteral">&quot;mode&quot;</span>) == <span class="stringliteral">&quot;fms&quot;</span>:</div>
<div class="line"><span class="lineno"> 47</span> filterFields = [<span class="stringliteral">&quot;fms&quot;</span>]</div>
<div class="line"><span class="lineno"> 48</span> <span class="keywordflow">elif</span> bwPacket.get(<span class="stringliteral">&quot;mode&quot;</span>) == <span class="stringliteral">&quot;pocsag&quot;</span>:</div>
<div class="line"><span class="lineno"> 49</span> filterFields = self.config.get(<span class="stringliteral">&quot;pocsagFields&quot;</span>, default=[<span class="stringliteral">&quot;ric&quot;</span>, <span class="stringliteral">&quot;subric&quot;</span>])</div>
<div class="line"><span class="lineno"> 50</span> <span class="keywordflow">elif</span> bwPacket.get(<span class="stringliteral">&quot;mode&quot;</span>) == <span class="stringliteral">&quot;zvei&quot;</span>:</div>
<div class="line"><span class="lineno"> 51</span> filterFields = [<span class="stringliteral">&quot;tone&quot;</span>]</div>
<div class="line"><span class="lineno"> 52</span> <span class="keywordflow">else</span>:</div>
<div class="line"><span class="lineno"> 53</span> logging.error(<span class="stringliteral">&quot;No Filter for &#39;%s&#39;&quot;</span>, bwPacket)</div>
<div class="line"><span class="lineno"> 54</span> <span class="keywordflow">return</span> <span class="keyword">False</span></div>
<div class="line"><span class="lineno"> 55</span> </div>
<div class="line"><span class="lineno"> 56</span> <span class="keywordflow">if</span> <span class="keywordflow">not</span> bwPacket.get(<span class="stringliteral">&quot;mode&quot;</span>) <span class="keywordflow">in</span> self._filterLists:</div>
<div class="line"><span class="lineno"> 57</span> logging.debug(<span class="stringliteral">&quot;create new doubleFilter list for &#39;%s&#39;&quot;</span>, bwPacket.get(<span class="stringliteral">&quot;mode&quot;</span>))</div>
<div class="line"><span class="lineno"> 58</span> self._filterLists[bwPacket.get(<span class="stringliteral">&quot;mode&quot;</span>)] = []</div>
<div class="line"><span class="lineno"> 59</span> </div>
<div class="line"><span class="lineno"> 60</span> logging.debug(<span class="stringliteral">&quot;filterFields for &#39;%s&#39; is &#39;%s&#39;&quot;</span>, bwPacket.get(<span class="stringliteral">&quot;mode&quot;</span>), <span class="stringliteral">&quot;, &quot;</span>.join(filterFields))</div>
<div class="line"><span class="lineno"> 61</span> </div>
<div class="line"><span class="lineno"> 62</span> <span class="keywordflow">return</span> self._check(bwPacket, filterFields)</div>
<div class="line"><span class="lineno"> 63</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="a81185d2d81a4959d8a29e5054adf975d" name="a81185d2d81a4959d8a29e5054adf975d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a81185d2d81a4959d8a29e5054adf975d">&#9670;&#160;</a></span>onUnload()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">module.filter.doubleFilter.BoswatchModule.onUnload </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Called by destruction of the plugin Remove if not implemented. </p>
<p>Reimplemented from <a class="el" href="classmodule_1_1module_base_1_1_module_base.html#a4c69727e801ba326aed6963cd9fd6dae">module.moduleBase.ModuleBase</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 64</span> <span class="keyword">def </span>onUnload(self):</div>
<div class="line"><span class="lineno"> 65</span> <span class="stringliteral">r&quot;&quot;&quot;!Called by destruction of the plugin</span></div>
<div class="line"><span class="lineno"> 66</span><span class="stringliteral"> Remove if not implemented&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 67</span> <span class="keywordflow">pass</span></div>
<div class="line"><span class="lineno"> 68</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="a43d03ed47b4c9bdaf34daec40cf094d4" name="a43d03ed47b4c9bdaf34daec40cf094d4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a43d03ed47b4c9bdaf34daec40cf094d4">&#9670;&#160;</a></span>_check()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">module.filter.doubleFilter.BoswatchModule._check </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>bwPacket</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>filterFields</em></span>&#160;)</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<div class="fragment"><div class="line"><span class="lineno"> 69</span> <span class="keyword">def </span>_check(self, bwPacket, filterFields):</div>
<div class="line"><span class="lineno"> 70</span> self._filterLists[bwPacket.get(<span class="stringliteral">&quot;mode&quot;</span>)].insert(0, bwPacket)</div>
<div class="line"><span class="lineno"> 71</span> </div>
<div class="line"><span class="lineno"> 72</span> <span class="keywordflow">for</span> listPacket <span class="keywordflow">in</span> self._filterLists[bwPacket.get(<span class="stringliteral">&quot;mode&quot;</span>)][1:]: <span class="comment"># [1:] skip first entry, thats the new one</span></div>
<div class="line"><span class="lineno"> 73</span> <span class="keywordflow">if</span> all(listPacket.get(x) == bwPacket.get(x) <span class="keywordflow">for</span> x <span class="keywordflow">in</span> filterFields):</div>
<div class="line"><span class="lineno"> 74</span> logging.debug(<span class="stringliteral">&quot;found duplicate: %s&quot;</span>, bwPacket.get(<span class="stringliteral">&quot;mode&quot;</span>))</div>
<div class="line"><span class="lineno"> 75</span> <span class="keywordflow">return</span> <span class="keyword">False</span></div>
<div class="line"><span class="lineno"> 76</span> <span class="comment"># delete entries that are to old</span></div>
<div class="line"><span class="lineno"> 77</span> counter = 0</div>
<div class="line"><span class="lineno"> 78</span> <span class="keywordflow">for</span> listPacket <span class="keywordflow">in</span> self._filterLists[bwPacket.get(<span class="stringliteral">&quot;mode&quot;</span>)][1:]: <span class="comment"># [1:] skip first entry, thats the new one</span></div>
<div class="line"><span class="lineno"> 79</span> <span class="keywordflow">if</span> float(listPacket.get(<span class="stringliteral">&quot;timestamp&quot;</span>)) &lt; (time.time() - self.config.get(<span class="stringliteral">&quot;ignoreTime&quot;</span>, default=10)):</div>
<div class="line"><span class="lineno"> 80</span> self._filterLists[bwPacket.get(<span class="stringliteral">&quot;mode&quot;</span>)].remove(listPacket)</div>
<div class="line"><span class="lineno"> 81</span> counter += 1</div>
<div class="line"><span class="lineno"> 82</span> <span class="keywordflow">if</span> counter:</div>
<div class="line"><span class="lineno"> 83</span> logging.debug(<span class="stringliteral">&quot;%d old entry(s) removed&quot;</span>, counter)</div>
<div class="line"><span class="lineno"> 84</span> </div>
<div class="line"><span class="lineno"> 85</span> <span class="comment"># delete last entry if list is to big</span></div>
<div class="line"><span class="lineno"> 86</span> <span class="keywordflow">if</span> len(self._filterLists[bwPacket.get(<span class="stringliteral">&quot;mode&quot;</span>)]) &gt; self.config.get(<span class="stringliteral">&quot;maxEntry&quot;</span>, default=20):</div>
<div class="line"><span class="lineno"> 87</span> logging.debug(<span class="stringliteral">&quot;MaxEntry reached - delete oldest&quot;</span>)</div>
<div class="line"><span class="lineno"> 88</span> self._filterLists[bwPacket.get(<span class="stringliteral">&quot;mode&quot;</span>)].pop()</div>
<div class="line"><span class="lineno"> 89</span> </div>
<div class="line"><span class="lineno"> 90</span> logging.debug(<span class="stringliteral">&quot;doubleFilter ok&quot;</span>)</div>
<div class="line"><span class="lineno"> 91</span> <span class="keywordflow">return</span> <span class="keywordtype">None</span></div>
</div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">Field Documentation</h2>
<a id="acea4923f42d2b6688455567e1c3f6f2e" name="acea4923f42d2b6688455567e1c3f6f2e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acea4923f42d2b6688455567e1c3f6f2e">&#9670;&#160;</a></span>_filterLists <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">dict module.filter.doubleFilter.BoswatchModule._filterLists = {}</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a8636be116a0033d585673a8c0e3527d0" name="a8636be116a0033d585673a8c0e3527d0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8636be116a0033d585673a8c0e3527d0">&#9670;&#160;</a></span>_filterLists <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">list module.filter.doubleFilter.BoswatchModule._filterLists = []</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespacemodule.html">module</a></li><li class="navelem"><a class="el" href="namespacemodule_1_1filter.html">filter</a></li><li class="navelem"><a class="el" href="namespacemodule_1_1filter_1_1double_filter.html">doubleFilter</a></li><li class="navelem"><a class="el" href="classmodule_1_1filter_1_1double_filter_1_1_boswatch_module.html">BoswatchModule</a></li>
<li class="footer">Generated on Wed Jun 11 2025 08:24:06 for BOSWatch 3 by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
</ul>
</div>
</body>
</html>

View file

@ -0,0 +1,10 @@
var classmodule_1_1filter_1_1double_filter_1_1_boswatch_module =
[
[ "__init__", "classmodule_1_1filter_1_1double_filter_1_1_boswatch_module.html#a10e2b681c89887ee422f01a1f9ae9dcd", null ],
[ "onLoad", "classmodule_1_1filter_1_1double_filter_1_1_boswatch_module.html#aa5f9d403d03ad71ebacc98d0e05ef0ab", null ],
[ "doWork", "classmodule_1_1filter_1_1double_filter_1_1_boswatch_module.html#a88c57fc92229358481fa36e98c677c7d", null ],
[ "onUnload", "classmodule_1_1filter_1_1double_filter_1_1_boswatch_module.html#a81185d2d81a4959d8a29e5054adf975d", null ],
[ "_check", "classmodule_1_1filter_1_1double_filter_1_1_boswatch_module.html#a43d03ed47b4c9bdaf34daec40cf094d4", null ],
[ "_filterLists", "classmodule_1_1filter_1_1double_filter_1_1_boswatch_module.html#acea4923f42d2b6688455567e1c3f6f2e", null ],
[ "_filterLists", "classmodule_1_1filter_1_1double_filter_1_1_boswatch_module.html#a8636be116a0033d585673a8c0e3527d0", null ]
];

View file

@ -0,0 +1,300 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.12.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>BOSWatch 3: module.filter.modeFilter.BoswatchModule Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">BOSWatch 3
</div>
<div id="projectbrief">Python Script to receive and decode German BOS Information with rtl_fm and multimon-NG</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.12.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('classmodule_1_1filter_1_1mode_filter_1_1_boswatch_module.html',''); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> </div>
<div class="headertitle"><div class="title">module.filter.modeFilter.BoswatchModule Class Reference</div></div>
</div><!--header-->
<div class="contents">
<p>Filter of specific bwPacket mode.
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a40d029c8dc22e315b84237d31055137b" id="r_a40d029c8dc22e315b84237d31055137b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a40d029c8dc22e315b84237d31055137b">__init__</a> (self, <a class="el" href="classmodule_1_1module_base_1_1_module_base.html#a7cbca9fa85b9b9bb487ac882d51385c4">config</a>)</td></tr>
<tr class="memdesc:a40d029c8dc22e315b84237d31055137b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Do not change anything here! <br /></td></tr>
<tr class="separator:a40d029c8dc22e315b84237d31055137b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a316db93e433ec18280dba7c603b6db7f" id="r_a316db93e433ec18280dba7c603b6db7f"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a316db93e433ec18280dba7c603b6db7f">onLoad</a> (self)</td></tr>
<tr class="memdesc:a316db93e433ec18280dba7c603b6db7f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Called by import of the plugin. <br /></td></tr>
<tr class="separator:a316db93e433ec18280dba7c603b6db7f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a720563d78144989697ed24804d554f8d" id="r_a720563d78144989697ed24804d554f8d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a720563d78144989697ed24804d554f8d">doWork</a> (self, bwPacket)</td></tr>
<tr class="memdesc:a720563d78144989697ed24804d554f8d"><td class="mdescLeft">&#160;</td><td class="mdescRight">start an run of the module. <br /></td></tr>
<tr class="separator:a720563d78144989697ed24804d554f8d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af5c6b174721359c9c93ddc29faa9be9b" id="r_af5c6b174721359c9c93ddc29faa9be9b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#af5c6b174721359c9c93ddc29faa9be9b">onUnload</a> (self)</td></tr>
<tr class="memdesc:af5c6b174721359c9c93ddc29faa9be9b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Called by destruction of the plugin. <br /></td></tr>
<tr class="separator:af5c6b174721359c9c93ddc29faa9be9b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classmodule_1_1module_base_1_1_module_base"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pub_methods_classmodule_1_1module_base_1_1_module_base')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classmodule_1_1module_base_1_1_module_base.html">module.moduleBase.ModuleBase</a></td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="inherited" name="inherited"></a>
Additional Inherited Members</h2></td></tr>
<tr class="inherit_header pub_static_methods_classmodule_1_1module_base_1_1_module_base"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pub_static_methods_classmodule_1_1module_base_1_1_module_base')"><img src="closed.png" alt="-"/>&#160;Static Public Member Functions inherited from <a class="el" href="classmodule_1_1module_base_1_1_module_base.html">module.moduleBase.ModuleBase</a></td></tr>
<tr class="memitem:a75f00bbad4a6905c467e71df1df22f9c inherit pub_static_methods_classmodule_1_1module_base_1_1_module_base" id="r_a75f00bbad4a6905c467e71df1df22f9c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmodule_1_1module_base_1_1_module_base.html#a75f00bbad4a6905c467e71df1df22f9c">registerWildcard</a> (newWildcard, bwPacketField)</td></tr>
<tr class="memdesc:a75f00bbad4a6905c467e71df1df22f9c inherit pub_static_methods_classmodule_1_1module_base_1_1_module_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Register a new wildcard. <br /></td></tr>
<tr class="separator:a75f00bbad4a6905c467e71df1df22f9c inherit pub_static_methods_classmodule_1_1module_base_1_1_module_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_attribs_classmodule_1_1module_base_1_1_module_base"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pub_attribs_classmodule_1_1module_base_1_1_module_base')"><img src="closed.png" alt="-"/>&#160;Data Fields inherited from <a class="el" href="classmodule_1_1module_base_1_1_module_base.html">module.moduleBase.ModuleBase</a></td></tr>
<tr class="memitem:a7cbca9fa85b9b9bb487ac882d51385c4 inherit pub_attribs_classmodule_1_1module_base_1_1_module_base" id="r_a7cbca9fa85b9b9bb487ac882d51385c4"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmodule_1_1module_base_1_1_module_base.html#a7cbca9fa85b9b9bb487ac882d51385c4">config</a> = config</td></tr>
<tr class="separator:a7cbca9fa85b9b9bb487ac882d51385c4 inherit pub_attribs_classmodule_1_1module_base_1_1_module_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_methods_classmodule_1_1module_base_1_1_module_base"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pro_methods_classmodule_1_1module_base_1_1_module_base')"><img src="closed.png" alt="-"/>&#160;Protected Member Functions inherited from <a class="el" href="classmodule_1_1module_base_1_1_module_base.html">module.moduleBase.ModuleBase</a></td></tr>
<tr class="memitem:ae43a99376d14379225916bbce74793bd inherit pro_methods_classmodule_1_1module_base_1_1_module_base" id="r_ae43a99376d14379225916bbce74793bd"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmodule_1_1module_base_1_1_module_base.html#ae43a99376d14379225916bbce74793bd">_cleanup</a> (self)</td></tr>
<tr class="memdesc:ae43a99376d14379225916bbce74793bd inherit pro_methods_classmodule_1_1module_base_1_1_module_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Cleanup routine calls <a class="el" href="classmodule_1_1module_base_1_1_module_base.html#a4c69727e801ba326aed6963cd9fd6dae" title="Called on shutdown of boswatch can be inherited.">onUnload()</a> directly. <br /></td></tr>
<tr class="separator:ae43a99376d14379225916bbce74793bd inherit pro_methods_classmodule_1_1module_base_1_1_module_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1bc0d95375400ac328aaa9c10fd1996a inherit pro_methods_classmodule_1_1module_base_1_1_module_base" id="r_a1bc0d95375400ac328aaa9c10fd1996a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmodule_1_1module_base_1_1_module_base.html#a1bc0d95375400ac328aaa9c10fd1996a">_run</a> (self, bwPacket)</td></tr>
<tr class="memdesc:a1bc0d95375400ac328aaa9c10fd1996a inherit pro_methods_classmodule_1_1module_base_1_1_module_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">start an run of the module. <br /></td></tr>
<tr class="separator:a1bc0d95375400ac328aaa9c10fd1996a inherit pro_methods_classmodule_1_1module_base_1_1_module_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a872db7602a8139866730ba79a220314b inherit pro_methods_classmodule_1_1module_base_1_1_module_base" id="r_a872db7602a8139866730ba79a220314b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmodule_1_1module_base_1_1_module_base.html#a872db7602a8139866730ba79a220314b">_getStatistics</a> (self)</td></tr>
<tr class="memdesc:a872db7602a8139866730ba79a220314b inherit pro_methods_classmodule_1_1module_base_1_1_module_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns statistical information's from last module run. <br /></td></tr>
<tr class="separator:a872db7602a8139866730ba79a220314b inherit pro_methods_classmodule_1_1module_base_1_1_module_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_attribs_classmodule_1_1module_base_1_1_module_base"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pro_attribs_classmodule_1_1module_base_1_1_module_base')"><img src="closed.png" alt="-"/>&#160;Protected Attributes inherited from <a class="el" href="classmodule_1_1module_base_1_1_module_base.html">module.moduleBase.ModuleBase</a></td></tr>
<tr class="memitem:a667c99040b316d66a00de34ff5cebf3e inherit pro_attribs_classmodule_1_1module_base_1_1_module_base" id="r_a667c99040b316d66a00de34ff5cebf3e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmodule_1_1module_base_1_1_module_base.html#a667c99040b316d66a00de34ff5cebf3e">_moduleName</a> = moduleName</td></tr>
<tr class="separator:a667c99040b316d66a00de34ff5cebf3e inherit pro_attribs_classmodule_1_1module_base_1_1_module_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a96ad0ccc9a2dadf099285b5e938a098a inherit pro_attribs_classmodule_1_1module_base_1_1_module_base" id="r_a96ad0ccc9a2dadf099285b5e938a098a"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmodule_1_1module_base_1_1_module_base.html#a96ad0ccc9a2dadf099285b5e938a098a">_cumTime</a> = 0</td></tr>
<tr class="separator:a96ad0ccc9a2dadf099285b5e938a098a inherit pro_attribs_classmodule_1_1module_base_1_1_module_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9b6aa123432ef49e373f643f5b10a82c inherit pro_attribs_classmodule_1_1module_base_1_1_module_base" id="r_a9b6aa123432ef49e373f643f5b10a82c"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmodule_1_1module_base_1_1_module_base.html#a9b6aa123432ef49e373f643f5b10a82c">_moduleTime</a> = 0</td></tr>
<tr class="separator:a9b6aa123432ef49e373f643f5b10a82c inherit pro_attribs_classmodule_1_1module_base_1_1_module_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9f55a9dd81ff02426ae9d73ff62f4134 inherit pro_attribs_classmodule_1_1module_base_1_1_module_base" id="r_a9f55a9dd81ff02426ae9d73ff62f4134"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmodule_1_1module_base_1_1_module_base.html#a9f55a9dd81ff02426ae9d73ff62f4134">_runCount</a> = 0</td></tr>
<tr class="separator:a9f55a9dd81ff02426ae9d73ff62f4134 inherit pro_attribs_classmodule_1_1module_base_1_1_module_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac95033dbbecea6287331a58f4b2fd046 inherit pro_attribs_classmodule_1_1module_base_1_1_module_base" id="r_ac95033dbbecea6287331a58f4b2fd046"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmodule_1_1module_base_1_1_module_base.html#ac95033dbbecea6287331a58f4b2fd046">_moduleErrorCount</a> = 0</td></tr>
<tr class="separator:ac95033dbbecea6287331a58f4b2fd046 inherit pro_attribs_classmodule_1_1module_base_1_1_module_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_static_attribs_classmodule_1_1module_base_1_1_module_base"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pro_static_attribs_classmodule_1_1module_base_1_1_module_base')"><img src="closed.png" alt="-"/>&#160;Static Protected Attributes inherited from <a class="el" href="classmodule_1_1module_base_1_1_module_base.html">module.moduleBase.ModuleBase</a></td></tr>
<tr class="memitem:addb1f046325535d8f3036c605429cf14 inherit pro_static_attribs_classmodule_1_1module_base_1_1_module_base" id="r_addb1f046325535d8f3036c605429cf14"><td class="memItemLeft" align="right" valign="top">list&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmodule_1_1module_base_1_1_module_base.html#addb1f046325535d8f3036c605429cf14">_modulesActive</a> = []</td></tr>
<tr class="separator:addb1f046325535d8f3036c605429cf14 inherit pro_static_attribs_classmodule_1_1module_base_1_1_module_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Filter of specific bwPacket mode. </p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a40d029c8dc22e315b84237d31055137b" name="a40d029c8dc22e315b84237d31055137b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a40d029c8dc22e315b84237d31055137b">&#9670;&#160;</a></span>__init__()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">module.filter.modeFilter.BoswatchModule.__init__ </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>config</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Do not change anything here! </p>
<p>Reimplemented from <a class="el" href="classmodule_1_1module_base_1_1_module_base.html#afee02f2e4ef75f43eb819facba9e9bd7">module.moduleBase.ModuleBase</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 30</span> <span class="keyword">def </span>__init__(self, config):</div>
<div class="line"><span class="lineno"> 31</span> <span class="stringliteral">r&quot;&quot;&quot;!Do not change anything here!&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 32</span> super().__init__(__name__, config) <span class="comment"># you can access the config class on &#39;self.config&#39;</span></div>
<div class="line"><span class="lineno"> 33</span> </div>
</div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a316db93e433ec18280dba7c603b6db7f" name="a316db93e433ec18280dba7c603b6db7f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a316db93e433ec18280dba7c603b6db7f">&#9670;&#160;</a></span>onLoad()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">module.filter.modeFilter.BoswatchModule.onLoad </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Called by import of the plugin. </p>
<p>Reimplemented from <a class="el" href="classmodule_1_1module_base_1_1_module_base.html#aedd2d0694073eff10a3c0440f487a373">module.moduleBase.ModuleBase</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 34</span> <span class="keyword">def </span>onLoad(self):</div>
<div class="line"><span class="lineno"> 35</span> <span class="stringliteral">r&quot;&quot;&quot;!Called by import of the plugin&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 36</span> <span class="keywordflow">pass</span></div>
<div class="line"><span class="lineno"> 37</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="a720563d78144989697ed24804d554f8d" name="a720563d78144989697ed24804d554f8d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a720563d78144989697ed24804d554f8d">&#9670;&#160;</a></span>doWork()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">module.filter.modeFilter.BoswatchModule.doWork </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>bwPacket</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>start an run of the module. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">bwPacket</td><td>A BOSWatch packet instance </td></tr>
</table>
</dd>
</dl>
<p>Reimplemented from <a class="el" href="classmodule_1_1module_base_1_1_module_base.html#a2146259480980a909ee97410cfdc7933">module.moduleBase.ModuleBase</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 38</span> <span class="keyword">def </span>doWork(self, bwPacket):</div>
<div class="line"><span class="lineno"> 39</span> <span class="stringliteral">r&quot;&quot;&quot;!start an run of the module.</span></div>
<div class="line"><span class="lineno"> 40</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 41</span><span class="stringliteral"> @param bwPacket: A BOSWatch packet instance&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 42</span> </div>
<div class="line"><span class="lineno"> 43</span> <span class="keywordflow">for</span> mode <span class="keywordflow">in</span> self.config.get(<span class="stringliteral">&quot;allowed&quot;</span>, default=[]):</div>
<div class="line"><span class="lineno"> 44</span> <span class="keywordflow">if</span> bwPacket.get(<span class="stringliteral">&quot;mode&quot;</span>) == mode:</div>
<div class="line"><span class="lineno"> 45</span> logging.debug(<span class="stringliteral">&quot;mode is allowed: %s&quot;</span>, bwPacket.get(<span class="stringliteral">&quot;mode&quot;</span>))</div>
<div class="line"><span class="lineno"> 46</span> <span class="keywordflow">return</span> <span class="keywordtype">None</span></div>
<div class="line"><span class="lineno"> 47</span> logging.debug(<span class="stringliteral">&quot;mode is denied: %s&quot;</span>, bwPacket.get(<span class="stringliteral">&quot;mode&quot;</span>))</div>
<div class="line"><span class="lineno"> 48</span> <span class="keywordflow">return</span> <span class="keyword">False</span></div>
<div class="line"><span class="lineno"> 49</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="af5c6b174721359c9c93ddc29faa9be9b" name="af5c6b174721359c9c93ddc29faa9be9b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af5c6b174721359c9c93ddc29faa9be9b">&#9670;&#160;</a></span>onUnload()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">module.filter.modeFilter.BoswatchModule.onUnload </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Called by destruction of the plugin. </p>
<p>Reimplemented from <a class="el" href="classmodule_1_1module_base_1_1_module_base.html#a4c69727e801ba326aed6963cd9fd6dae">module.moduleBase.ModuleBase</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 50</span> <span class="keyword">def </span>onUnload(self):</div>
<div class="line"><span class="lineno"> 51</span> <span class="stringliteral">r&quot;&quot;&quot;!Called by destruction of the plugin&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 52</span> <span class="keywordflow">pass</span></div>
</div><!-- fragment -->
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespacemodule.html">module</a></li><li class="navelem"><a class="el" href="namespacemodule_1_1filter.html">filter</a></li><li class="navelem"><a class="el" href="namespacemodule_1_1filter_1_1mode_filter.html">modeFilter</a></li><li class="navelem"><a class="el" href="classmodule_1_1filter_1_1mode_filter_1_1_boswatch_module.html">BoswatchModule</a></li>
<li class="footer">Generated on Wed Jun 11 2025 08:24:06 for BOSWatch 3 by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
</ul>
</div>
</body>
</html>

View file

@ -0,0 +1,7 @@
var classmodule_1_1filter_1_1mode_filter_1_1_boswatch_module =
[
[ "__init__", "classmodule_1_1filter_1_1mode_filter_1_1_boswatch_module.html#a40d029c8dc22e315b84237d31055137b", null ],
[ "onLoad", "classmodule_1_1filter_1_1mode_filter_1_1_boswatch_module.html#a316db93e433ec18280dba7c603b6db7f", null ],
[ "doWork", "classmodule_1_1filter_1_1mode_filter_1_1_boswatch_module.html#a720563d78144989697ed24804d554f8d", null ],
[ "onUnload", "classmodule_1_1filter_1_1mode_filter_1_1_boswatch_module.html#af5c6b174721359c9c93ddc29faa9be9b", null ]
];

View file

@ -0,0 +1,334 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.12.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>BOSWatch 3: module.filter.regexFilter.BoswatchModule Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">BOSWatch 3
</div>
<div id="projectbrief">Python Script to receive and decode German BOS Information with rtl_fm and multimon-NG</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.12.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('classmodule_1_1filter_1_1regex_filter_1_1_boswatch_module.html',''); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-attribs">Data Fields</a> </div>
<div class="headertitle"><div class="title">module.filter.regexFilter.BoswatchModule Class Reference</div></div>
</div><!--header-->
<div class="contents">
<p>Regex based filter mechanism.
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a7d0ba6d5f55296e81be161ffc0cf5f86" id="r_a7d0ba6d5f55296e81be161ffc0cf5f86"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a7d0ba6d5f55296e81be161ffc0cf5f86">__init__</a> (self, <a class="el" href="#ab826f80406d3117525de1e2d4e0615f0">config</a>)</td></tr>
<tr class="memdesc:a7d0ba6d5f55296e81be161ffc0cf5f86"><td class="mdescLeft">&#160;</td><td class="mdescRight">Do not change anything here! <br /></td></tr>
<tr class="separator:a7d0ba6d5f55296e81be161ffc0cf5f86"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a636f42c800fd91192e2f683313fc75bf" id="r_a636f42c800fd91192e2f683313fc75bf"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a636f42c800fd91192e2f683313fc75bf">onLoad</a> (self)</td></tr>
<tr class="memdesc:a636f42c800fd91192e2f683313fc75bf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Called by import of the plugin. <br /></td></tr>
<tr class="separator:a636f42c800fd91192e2f683313fc75bf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a887577d5947b9277541d8013e6685103" id="r_a887577d5947b9277541d8013e6685103"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a887577d5947b9277541d8013e6685103">doWork</a> (self, bwPacket)</td></tr>
<tr class="memdesc:a887577d5947b9277541d8013e6685103"><td class="mdescLeft">&#160;</td><td class="mdescRight">start an run of the module. <br /></td></tr>
<tr class="separator:a887577d5947b9277541d8013e6685103"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afa1a66cb2277360e21841526e41cec5c" id="r_afa1a66cb2277360e21841526e41cec5c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#afa1a66cb2277360e21841526e41cec5c">onUnload</a> (self)</td></tr>
<tr class="memdesc:afa1a66cb2277360e21841526e41cec5c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Called by destruction of the plugin. <br /></td></tr>
<tr class="separator:afa1a66cb2277360e21841526e41cec5c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classmodule_1_1module_base_1_1_module_base"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pub_methods_classmodule_1_1module_base_1_1_module_base')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classmodule_1_1module_base_1_1_module_base.html">module.moduleBase.ModuleBase</a></td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
Data Fields</h2></td></tr>
<tr class="memitem:ab826f80406d3117525de1e2d4e0615f0" id="r_ab826f80406d3117525de1e2d4e0615f0"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ab826f80406d3117525de1e2d4e0615f0">config</a></td></tr>
<tr class="separator:ab826f80406d3117525de1e2d4e0615f0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_attribs_classmodule_1_1module_base_1_1_module_base"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pub_attribs_classmodule_1_1module_base_1_1_module_base')"><img src="closed.png" alt="-"/>&#160;Data Fields inherited from <a class="el" href="classmodule_1_1module_base_1_1_module_base.html">module.moduleBase.ModuleBase</a></td></tr>
<tr class="memitem:a7cbca9fa85b9b9bb487ac882d51385c4 inherit pub_attribs_classmodule_1_1module_base_1_1_module_base" id="r_a7cbca9fa85b9b9bb487ac882d51385c4"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmodule_1_1module_base_1_1_module_base.html#a7cbca9fa85b9b9bb487ac882d51385c4">config</a> = config</td></tr>
<tr class="separator:a7cbca9fa85b9b9bb487ac882d51385c4 inherit pub_attribs_classmodule_1_1module_base_1_1_module_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="inherited" name="inherited"></a>
Additional Inherited Members</h2></td></tr>
<tr class="inherit_header pub_static_methods_classmodule_1_1module_base_1_1_module_base"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pub_static_methods_classmodule_1_1module_base_1_1_module_base')"><img src="closed.png" alt="-"/>&#160;Static Public Member Functions inherited from <a class="el" href="classmodule_1_1module_base_1_1_module_base.html">module.moduleBase.ModuleBase</a></td></tr>
<tr class="memitem:a75f00bbad4a6905c467e71df1df22f9c inherit pub_static_methods_classmodule_1_1module_base_1_1_module_base" id="r_a75f00bbad4a6905c467e71df1df22f9c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmodule_1_1module_base_1_1_module_base.html#a75f00bbad4a6905c467e71df1df22f9c">registerWildcard</a> (newWildcard, bwPacketField)</td></tr>
<tr class="memdesc:a75f00bbad4a6905c467e71df1df22f9c inherit pub_static_methods_classmodule_1_1module_base_1_1_module_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Register a new wildcard. <br /></td></tr>
<tr class="separator:a75f00bbad4a6905c467e71df1df22f9c inherit pub_static_methods_classmodule_1_1module_base_1_1_module_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_methods_classmodule_1_1module_base_1_1_module_base"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pro_methods_classmodule_1_1module_base_1_1_module_base')"><img src="closed.png" alt="-"/>&#160;Protected Member Functions inherited from <a class="el" href="classmodule_1_1module_base_1_1_module_base.html">module.moduleBase.ModuleBase</a></td></tr>
<tr class="memitem:ae43a99376d14379225916bbce74793bd inherit pro_methods_classmodule_1_1module_base_1_1_module_base" id="r_ae43a99376d14379225916bbce74793bd"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmodule_1_1module_base_1_1_module_base.html#ae43a99376d14379225916bbce74793bd">_cleanup</a> (self)</td></tr>
<tr class="memdesc:ae43a99376d14379225916bbce74793bd inherit pro_methods_classmodule_1_1module_base_1_1_module_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Cleanup routine calls <a class="el" href="classmodule_1_1module_base_1_1_module_base.html#a4c69727e801ba326aed6963cd9fd6dae" title="Called on shutdown of boswatch can be inherited.">onUnload()</a> directly. <br /></td></tr>
<tr class="separator:ae43a99376d14379225916bbce74793bd inherit pro_methods_classmodule_1_1module_base_1_1_module_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1bc0d95375400ac328aaa9c10fd1996a inherit pro_methods_classmodule_1_1module_base_1_1_module_base" id="r_a1bc0d95375400ac328aaa9c10fd1996a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmodule_1_1module_base_1_1_module_base.html#a1bc0d95375400ac328aaa9c10fd1996a">_run</a> (self, bwPacket)</td></tr>
<tr class="memdesc:a1bc0d95375400ac328aaa9c10fd1996a inherit pro_methods_classmodule_1_1module_base_1_1_module_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">start an run of the module. <br /></td></tr>
<tr class="separator:a1bc0d95375400ac328aaa9c10fd1996a inherit pro_methods_classmodule_1_1module_base_1_1_module_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a872db7602a8139866730ba79a220314b inherit pro_methods_classmodule_1_1module_base_1_1_module_base" id="r_a872db7602a8139866730ba79a220314b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmodule_1_1module_base_1_1_module_base.html#a872db7602a8139866730ba79a220314b">_getStatistics</a> (self)</td></tr>
<tr class="memdesc:a872db7602a8139866730ba79a220314b inherit pro_methods_classmodule_1_1module_base_1_1_module_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns statistical information's from last module run. <br /></td></tr>
<tr class="separator:a872db7602a8139866730ba79a220314b inherit pro_methods_classmodule_1_1module_base_1_1_module_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_attribs_classmodule_1_1module_base_1_1_module_base"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pro_attribs_classmodule_1_1module_base_1_1_module_base')"><img src="closed.png" alt="-"/>&#160;Protected Attributes inherited from <a class="el" href="classmodule_1_1module_base_1_1_module_base.html">module.moduleBase.ModuleBase</a></td></tr>
<tr class="memitem:a667c99040b316d66a00de34ff5cebf3e inherit pro_attribs_classmodule_1_1module_base_1_1_module_base" id="r_a667c99040b316d66a00de34ff5cebf3e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmodule_1_1module_base_1_1_module_base.html#a667c99040b316d66a00de34ff5cebf3e">_moduleName</a> = moduleName</td></tr>
<tr class="separator:a667c99040b316d66a00de34ff5cebf3e inherit pro_attribs_classmodule_1_1module_base_1_1_module_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a96ad0ccc9a2dadf099285b5e938a098a inherit pro_attribs_classmodule_1_1module_base_1_1_module_base" id="r_a96ad0ccc9a2dadf099285b5e938a098a"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmodule_1_1module_base_1_1_module_base.html#a96ad0ccc9a2dadf099285b5e938a098a">_cumTime</a> = 0</td></tr>
<tr class="separator:a96ad0ccc9a2dadf099285b5e938a098a inherit pro_attribs_classmodule_1_1module_base_1_1_module_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9b6aa123432ef49e373f643f5b10a82c inherit pro_attribs_classmodule_1_1module_base_1_1_module_base" id="r_a9b6aa123432ef49e373f643f5b10a82c"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmodule_1_1module_base_1_1_module_base.html#a9b6aa123432ef49e373f643f5b10a82c">_moduleTime</a> = 0</td></tr>
<tr class="separator:a9b6aa123432ef49e373f643f5b10a82c inherit pro_attribs_classmodule_1_1module_base_1_1_module_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9f55a9dd81ff02426ae9d73ff62f4134 inherit pro_attribs_classmodule_1_1module_base_1_1_module_base" id="r_a9f55a9dd81ff02426ae9d73ff62f4134"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmodule_1_1module_base_1_1_module_base.html#a9f55a9dd81ff02426ae9d73ff62f4134">_runCount</a> = 0</td></tr>
<tr class="separator:a9f55a9dd81ff02426ae9d73ff62f4134 inherit pro_attribs_classmodule_1_1module_base_1_1_module_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac95033dbbecea6287331a58f4b2fd046 inherit pro_attribs_classmodule_1_1module_base_1_1_module_base" id="r_ac95033dbbecea6287331a58f4b2fd046"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmodule_1_1module_base_1_1_module_base.html#ac95033dbbecea6287331a58f4b2fd046">_moduleErrorCount</a> = 0</td></tr>
<tr class="separator:ac95033dbbecea6287331a58f4b2fd046 inherit pro_attribs_classmodule_1_1module_base_1_1_module_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_static_attribs_classmodule_1_1module_base_1_1_module_base"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pro_static_attribs_classmodule_1_1module_base_1_1_module_base')"><img src="closed.png" alt="-"/>&#160;Static Protected Attributes inherited from <a class="el" href="classmodule_1_1module_base_1_1_module_base.html">module.moduleBase.ModuleBase</a></td></tr>
<tr class="memitem:addb1f046325535d8f3036c605429cf14 inherit pro_static_attribs_classmodule_1_1module_base_1_1_module_base" id="r_addb1f046325535d8f3036c605429cf14"><td class="memItemLeft" align="right" valign="top">list&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmodule_1_1module_base_1_1_module_base.html#addb1f046325535d8f3036c605429cf14">_modulesActive</a> = []</td></tr>
<tr class="separator:addb1f046325535d8f3036c605429cf14 inherit pro_static_attribs_classmodule_1_1module_base_1_1_module_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Regex based filter mechanism. </p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a7d0ba6d5f55296e81be161ffc0cf5f86" name="a7d0ba6d5f55296e81be161ffc0cf5f86"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7d0ba6d5f55296e81be161ffc0cf5f86">&#9670;&#160;</a></span>__init__()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">module.filter.regexFilter.BoswatchModule.__init__ </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>config</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Do not change anything here! </p>
<p>Reimplemented from <a class="el" href="classmodule_1_1module_base_1_1_module_base.html#afee02f2e4ef75f43eb819facba9e9bd7">module.moduleBase.ModuleBase</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 30</span> <span class="keyword">def </span>__init__(self, config):</div>
<div class="line"><span class="lineno"> 31</span> <span class="stringliteral">r&quot;&quot;&quot;!Do not change anything here!&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 32</span> super().__init__(__name__, config) <span class="comment"># you can access the config class on &#39;self.config&#39;</span></div>
<div class="line"><span class="lineno"> 33</span> </div>
</div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a636f42c800fd91192e2f683313fc75bf" name="a636f42c800fd91192e2f683313fc75bf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a636f42c800fd91192e2f683313fc75bf">&#9670;&#160;</a></span>onLoad()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">module.filter.regexFilter.BoswatchModule.onLoad </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Called by import of the plugin. </p>
<p>Reimplemented from <a class="el" href="classmodule_1_1module_base_1_1_module_base.html#aedd2d0694073eff10a3c0440f487a373">module.moduleBase.ModuleBase</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 34</span> <span class="keyword">def </span>onLoad(self):</div>
<div class="line"><span class="lineno"> 35</span> <span class="stringliteral">r&quot;&quot;&quot;!Called by import of the plugin&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 36</span> <span class="keywordflow">pass</span></div>
<div class="line"><span class="lineno"> 37</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="a887577d5947b9277541d8013e6685103" name="a887577d5947b9277541d8013e6685103"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a887577d5947b9277541d8013e6685103">&#9670;&#160;</a></span>doWork()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">module.filter.regexFilter.BoswatchModule.doWork </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>bwPacket</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>start an run of the module. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">bwPacket</td><td>A BOSWatch packet instance </td></tr>
</table>
</dd>
</dl>
<p>Reimplemented from <a class="el" href="classmodule_1_1module_base_1_1_module_base.html#a2146259480980a909ee97410cfdc7933">module.moduleBase.ModuleBase</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 38</span> <span class="keyword">def </span>doWork(self, bwPacket):</div>
<div class="line"><span class="lineno"> 39</span> <span class="stringliteral">r&quot;&quot;&quot;!start an run of the module.</span></div>
<div class="line"><span class="lineno"> 40</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 41</span><span class="stringliteral"> @param bwPacket: A BOSWatch packet instance&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 42</span> <span class="keywordflow">for</span> regexFilter <span class="keywordflow">in</span> self.config:</div>
<div class="line"><span class="lineno"> 43</span> checkFailed = <span class="keyword">False</span></div>
<div class="line"><span class="lineno"> 44</span> logging.debug(<span class="stringliteral">&quot;try filter &#39;%s&#39; with %d check(s)&quot;</span>, regexFilter.get(<span class="stringliteral">&quot;name&quot;</span>), len(regexFilter.get(<span class="stringliteral">&quot;checks&quot;</span>)))</div>
<div class="line"><span class="lineno"> 45</span> </div>
<div class="line"><span class="lineno"> 46</span> <span class="keywordflow">for</span> check <span class="keywordflow">in</span> regexFilter.get(<span class="stringliteral">&quot;checks&quot;</span>):</div>
<div class="line"><span class="lineno"> 47</span> fieldData = bwPacket.get(check.get(<span class="stringliteral">&quot;field&quot;</span>))</div>
<div class="line"><span class="lineno"> 48</span> </div>
<div class="line"><span class="lineno"> 49</span> <span class="keywordflow">if</span> <span class="keywordflow">not</span> fieldData <span class="keywordflow">or</span> <span class="keywordflow">not</span> re.search(check.get(<span class="stringliteral">&quot;regex&quot;</span>), fieldData):</div>
<div class="line"><span class="lineno"> 50</span> logging.debug(<span class="stringliteral">&quot;[-] field &#39;%s&#39; with regex &#39;%s&#39;&quot;</span>, check.get(<span class="stringliteral">&quot;field&quot;</span>), check.get(<span class="stringliteral">&quot;regex&quot;</span>))</div>
<div class="line"><span class="lineno"> 51</span> checkFailed = <span class="keyword">True</span></div>
<div class="line"><span class="lineno"> 52</span> <span class="keywordflow">break</span> <span class="comment"># if one check failed we break this filter</span></div>
<div class="line"><span class="lineno"> 53</span> <span class="keywordflow">else</span>:</div>
<div class="line"><span class="lineno"> 54</span> logging.debug(<span class="stringliteral">&quot;[+] field &#39;%s&#39; with regex &#39;%s&#39;&quot;</span>, check.get(<span class="stringliteral">&quot;field&quot;</span>), check.get(<span class="stringliteral">&quot;regex&quot;</span>))</div>
<div class="line"><span class="lineno"> 55</span> </div>
<div class="line"><span class="lineno"> 56</span> <span class="keywordflow">if</span> <span class="keywordflow">not</span> checkFailed:</div>
<div class="line"><span class="lineno"> 57</span> logging.debug(<span class="stringliteral">&quot;[PASSED] filter &#39;%s&#39;&quot;</span>, regexFilter.get(<span class="stringliteral">&quot;name&quot;</span>))</div>
<div class="line"><span class="lineno"> 58</span> <span class="keywordflow">return</span> <span class="keywordtype">None</span> <span class="comment"># None -&gt; Router will go on with this packet</span></div>
<div class="line"><span class="lineno"> 59</span> logging.debug(<span class="stringliteral">&quot;[FAILED] filter &#39;%s&#39;&quot;</span>, regexFilter.get(<span class="stringliteral">&quot;name&quot;</span>))</div>
<div class="line"><span class="lineno"> 60</span> </div>
<div class="line"><span class="lineno"> 61</span> <span class="keywordflow">return</span> <span class="keyword">False</span> <span class="comment"># False -&gt; Router will stop further processing</span></div>
<div class="line"><span class="lineno"> 62</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="afa1a66cb2277360e21841526e41cec5c" name="afa1a66cb2277360e21841526e41cec5c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afa1a66cb2277360e21841526e41cec5c">&#9670;&#160;</a></span>onUnload()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">module.filter.regexFilter.BoswatchModule.onUnload </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Called by destruction of the plugin. </p>
<p>Reimplemented from <a class="el" href="classmodule_1_1module_base_1_1_module_base.html#a4c69727e801ba326aed6963cd9fd6dae">module.moduleBase.ModuleBase</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 63</span> <span class="keyword">def </span>onUnload(self):</div>
<div class="line"><span class="lineno"> 64</span> <span class="stringliteral">r&quot;&quot;&quot;!Called by destruction of the plugin&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 65</span> <span class="keywordflow">pass</span></div>
</div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">Field Documentation</h2>
<a id="ab826f80406d3117525de1e2d4e0615f0" name="ab826f80406d3117525de1e2d4e0615f0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab826f80406d3117525de1e2d4e0615f0">&#9670;&#160;</a></span>config</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">module.filter.regexFilter.BoswatchModule.config</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespacemodule.html">module</a></li><li class="navelem"><a class="el" href="namespacemodule_1_1filter.html">filter</a></li><li class="navelem"><a class="el" href="namespacemodule_1_1filter_1_1regex_filter.html">regexFilter</a></li><li class="navelem"><a class="el" href="classmodule_1_1filter_1_1regex_filter_1_1_boswatch_module.html">BoswatchModule</a></li>
<li class="footer">Generated on Wed Jun 11 2025 08:24:06 for BOSWatch 3 by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
</ul>
</div>
</body>
</html>

View file

@ -0,0 +1,8 @@
var classmodule_1_1filter_1_1regex_filter_1_1_boswatch_module =
[
[ "__init__", "classmodule_1_1filter_1_1regex_filter_1_1_boswatch_module.html#a7d0ba6d5f55296e81be161ffc0cf5f86", null ],
[ "onLoad", "classmodule_1_1filter_1_1regex_filter_1_1_boswatch_module.html#a636f42c800fd91192e2f683313fc75bf", null ],
[ "doWork", "classmodule_1_1filter_1_1regex_filter_1_1_boswatch_module.html#a887577d5947b9277541d8013e6685103", null ],
[ "onUnload", "classmodule_1_1filter_1_1regex_filter_1_1_boswatch_module.html#afa1a66cb2277360e21841526e41cec5c", null ],
[ "config", "classmodule_1_1filter_1_1regex_filter_1_1_boswatch_module.html#ab826f80406d3117525de1e2d4e0615f0", null ]
];

View file

@ -0,0 +1,317 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.12.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>BOSWatch 3: module.geocoding.BoswatchModule Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">BOSWatch 3
</div>
<div id="projectbrief">Python Script to receive and decode German BOS Information with rtl_fm and multimon-NG</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.12.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('classmodule_1_1geocoding_1_1_boswatch_module.html',''); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> </div>
<div class="headertitle"><div class="title">module.geocoding.BoswatchModule Class Reference</div></div>
</div><!--header-->
<div class="contents">
<p>Description of the Module.
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a0c730c8d45b001e1ddb2ab73400df373" id="r_a0c730c8d45b001e1ddb2ab73400df373"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a0c730c8d45b001e1ddb2ab73400df373">__init__</a> (self, <a class="el" href="classmodule_1_1module_base_1_1_module_base.html#a7cbca9fa85b9b9bb487ac882d51385c4">config</a>)</td></tr>
<tr class="memdesc:a0c730c8d45b001e1ddb2ab73400df373"><td class="mdescLeft">&#160;</td><td class="mdescRight">Do not change anything here! <br /></td></tr>
<tr class="separator:a0c730c8d45b001e1ddb2ab73400df373"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af7f1f53f8f23f091bb12fbb3c5b040eb" id="r_af7f1f53f8f23f091bb12fbb3c5b040eb"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#af7f1f53f8f23f091bb12fbb3c5b040eb">doWork</a> (self, bwPacket)</td></tr>
<tr class="memdesc:af7f1f53f8f23f091bb12fbb3c5b040eb"><td class="mdescLeft">&#160;</td><td class="mdescRight">start an run of the module. <br /></td></tr>
<tr class="separator:af7f1f53f8f23f091bb12fbb3c5b040eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a59b6abc9064a3674525563647ed6d8cd" id="r_a59b6abc9064a3674525563647ed6d8cd"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a59b6abc9064a3674525563647ed6d8cd">geocode</a> (self, bwPacket)</td></tr>
<tr class="memdesc:a59b6abc9064a3674525563647ed6d8cd"><td class="mdescLeft">&#160;</td><td class="mdescRight">find address in message and get latitude and longitude <br /></td></tr>
<tr class="separator:a59b6abc9064a3674525563647ed6d8cd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classmodule_1_1module_base_1_1_module_base"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pub_methods_classmodule_1_1module_base_1_1_module_base')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classmodule_1_1module_base_1_1_module_base.html">module.moduleBase.ModuleBase</a></td></tr>
<tr class="memitem:aedd2d0694073eff10a3c0440f487a373 inherit pub_methods_classmodule_1_1module_base_1_1_module_base" id="r_aedd2d0694073eff10a3c0440f487a373"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmodule_1_1module_base_1_1_module_base.html#aedd2d0694073eff10a3c0440f487a373">onLoad</a> (self)</td></tr>
<tr class="memdesc:aedd2d0694073eff10a3c0440f487a373 inherit pub_methods_classmodule_1_1module_base_1_1_module_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Called by import of the module can be inherited. <br /></td></tr>
<tr class="separator:aedd2d0694073eff10a3c0440f487a373 inherit pub_methods_classmodule_1_1module_base_1_1_module_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4c69727e801ba326aed6963cd9fd6dae inherit pub_methods_classmodule_1_1module_base_1_1_module_base" id="r_a4c69727e801ba326aed6963cd9fd6dae"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmodule_1_1module_base_1_1_module_base.html#a4c69727e801ba326aed6963cd9fd6dae">onUnload</a> (self)</td></tr>
<tr class="memdesc:a4c69727e801ba326aed6963cd9fd6dae inherit pub_methods_classmodule_1_1module_base_1_1_module_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Called on shutdown of boswatch can be inherited. <br /></td></tr>
<tr class="separator:a4c69727e801ba326aed6963cd9fd6dae inherit pub_methods_classmodule_1_1module_base_1_1_module_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="inherited" name="inherited"></a>
Additional Inherited Members</h2></td></tr>
<tr class="inherit_header pub_static_methods_classmodule_1_1module_base_1_1_module_base"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pub_static_methods_classmodule_1_1module_base_1_1_module_base')"><img src="closed.png" alt="-"/>&#160;Static Public Member Functions inherited from <a class="el" href="classmodule_1_1module_base_1_1_module_base.html">module.moduleBase.ModuleBase</a></td></tr>
<tr class="memitem:a75f00bbad4a6905c467e71df1df22f9c inherit pub_static_methods_classmodule_1_1module_base_1_1_module_base" id="r_a75f00bbad4a6905c467e71df1df22f9c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmodule_1_1module_base_1_1_module_base.html#a75f00bbad4a6905c467e71df1df22f9c">registerWildcard</a> (newWildcard, bwPacketField)</td></tr>
<tr class="memdesc:a75f00bbad4a6905c467e71df1df22f9c inherit pub_static_methods_classmodule_1_1module_base_1_1_module_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Register a new wildcard. <br /></td></tr>
<tr class="separator:a75f00bbad4a6905c467e71df1df22f9c inherit pub_static_methods_classmodule_1_1module_base_1_1_module_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_attribs_classmodule_1_1module_base_1_1_module_base"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pub_attribs_classmodule_1_1module_base_1_1_module_base')"><img src="closed.png" alt="-"/>&#160;Data Fields inherited from <a class="el" href="classmodule_1_1module_base_1_1_module_base.html">module.moduleBase.ModuleBase</a></td></tr>
<tr class="memitem:a7cbca9fa85b9b9bb487ac882d51385c4 inherit pub_attribs_classmodule_1_1module_base_1_1_module_base" id="r_a7cbca9fa85b9b9bb487ac882d51385c4"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmodule_1_1module_base_1_1_module_base.html#a7cbca9fa85b9b9bb487ac882d51385c4">config</a> = config</td></tr>
<tr class="separator:a7cbca9fa85b9b9bb487ac882d51385c4 inherit pub_attribs_classmodule_1_1module_base_1_1_module_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_methods_classmodule_1_1module_base_1_1_module_base"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pro_methods_classmodule_1_1module_base_1_1_module_base')"><img src="closed.png" alt="-"/>&#160;Protected Member Functions inherited from <a class="el" href="classmodule_1_1module_base_1_1_module_base.html">module.moduleBase.ModuleBase</a></td></tr>
<tr class="memitem:ae43a99376d14379225916bbce74793bd inherit pro_methods_classmodule_1_1module_base_1_1_module_base" id="r_ae43a99376d14379225916bbce74793bd"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmodule_1_1module_base_1_1_module_base.html#ae43a99376d14379225916bbce74793bd">_cleanup</a> (self)</td></tr>
<tr class="memdesc:ae43a99376d14379225916bbce74793bd inherit pro_methods_classmodule_1_1module_base_1_1_module_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Cleanup routine calls <a class="el" href="classmodule_1_1module_base_1_1_module_base.html#a4c69727e801ba326aed6963cd9fd6dae" title="Called on shutdown of boswatch can be inherited.">onUnload()</a> directly. <br /></td></tr>
<tr class="separator:ae43a99376d14379225916bbce74793bd inherit pro_methods_classmodule_1_1module_base_1_1_module_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1bc0d95375400ac328aaa9c10fd1996a inherit pro_methods_classmodule_1_1module_base_1_1_module_base" id="r_a1bc0d95375400ac328aaa9c10fd1996a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmodule_1_1module_base_1_1_module_base.html#a1bc0d95375400ac328aaa9c10fd1996a">_run</a> (self, bwPacket)</td></tr>
<tr class="memdesc:a1bc0d95375400ac328aaa9c10fd1996a inherit pro_methods_classmodule_1_1module_base_1_1_module_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">start an run of the module. <br /></td></tr>
<tr class="separator:a1bc0d95375400ac328aaa9c10fd1996a inherit pro_methods_classmodule_1_1module_base_1_1_module_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a872db7602a8139866730ba79a220314b inherit pro_methods_classmodule_1_1module_base_1_1_module_base" id="r_a872db7602a8139866730ba79a220314b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmodule_1_1module_base_1_1_module_base.html#a872db7602a8139866730ba79a220314b">_getStatistics</a> (self)</td></tr>
<tr class="memdesc:a872db7602a8139866730ba79a220314b inherit pro_methods_classmodule_1_1module_base_1_1_module_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns statistical information's from last module run. <br /></td></tr>
<tr class="separator:a872db7602a8139866730ba79a220314b inherit pro_methods_classmodule_1_1module_base_1_1_module_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_attribs_classmodule_1_1module_base_1_1_module_base"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pro_attribs_classmodule_1_1module_base_1_1_module_base')"><img src="closed.png" alt="-"/>&#160;Protected Attributes inherited from <a class="el" href="classmodule_1_1module_base_1_1_module_base.html">module.moduleBase.ModuleBase</a></td></tr>
<tr class="memitem:a667c99040b316d66a00de34ff5cebf3e inherit pro_attribs_classmodule_1_1module_base_1_1_module_base" id="r_a667c99040b316d66a00de34ff5cebf3e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmodule_1_1module_base_1_1_module_base.html#a667c99040b316d66a00de34ff5cebf3e">_moduleName</a> = moduleName</td></tr>
<tr class="separator:a667c99040b316d66a00de34ff5cebf3e inherit pro_attribs_classmodule_1_1module_base_1_1_module_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a96ad0ccc9a2dadf099285b5e938a098a inherit pro_attribs_classmodule_1_1module_base_1_1_module_base" id="r_a96ad0ccc9a2dadf099285b5e938a098a"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmodule_1_1module_base_1_1_module_base.html#a96ad0ccc9a2dadf099285b5e938a098a">_cumTime</a> = 0</td></tr>
<tr class="separator:a96ad0ccc9a2dadf099285b5e938a098a inherit pro_attribs_classmodule_1_1module_base_1_1_module_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9b6aa123432ef49e373f643f5b10a82c inherit pro_attribs_classmodule_1_1module_base_1_1_module_base" id="r_a9b6aa123432ef49e373f643f5b10a82c"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmodule_1_1module_base_1_1_module_base.html#a9b6aa123432ef49e373f643f5b10a82c">_moduleTime</a> = 0</td></tr>
<tr class="separator:a9b6aa123432ef49e373f643f5b10a82c inherit pro_attribs_classmodule_1_1module_base_1_1_module_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9f55a9dd81ff02426ae9d73ff62f4134 inherit pro_attribs_classmodule_1_1module_base_1_1_module_base" id="r_a9f55a9dd81ff02426ae9d73ff62f4134"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmodule_1_1module_base_1_1_module_base.html#a9f55a9dd81ff02426ae9d73ff62f4134">_runCount</a> = 0</td></tr>
<tr class="separator:a9f55a9dd81ff02426ae9d73ff62f4134 inherit pro_attribs_classmodule_1_1module_base_1_1_module_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac95033dbbecea6287331a58f4b2fd046 inherit pro_attribs_classmodule_1_1module_base_1_1_module_base" id="r_ac95033dbbecea6287331a58f4b2fd046"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmodule_1_1module_base_1_1_module_base.html#ac95033dbbecea6287331a58f4b2fd046">_moduleErrorCount</a> = 0</td></tr>
<tr class="separator:ac95033dbbecea6287331a58f4b2fd046 inherit pro_attribs_classmodule_1_1module_base_1_1_module_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_static_attribs_classmodule_1_1module_base_1_1_module_base"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pro_static_attribs_classmodule_1_1module_base_1_1_module_base')"><img src="closed.png" alt="-"/>&#160;Static Protected Attributes inherited from <a class="el" href="classmodule_1_1module_base_1_1_module_base.html">module.moduleBase.ModuleBase</a></td></tr>
<tr class="memitem:addb1f046325535d8f3036c605429cf14 inherit pro_static_attribs_classmodule_1_1module_base_1_1_module_base" id="r_addb1f046325535d8f3036c605429cf14"><td class="memItemLeft" align="right" valign="top">list&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmodule_1_1module_base_1_1_module_base.html#addb1f046325535d8f3036c605429cf14">_modulesActive</a> = []</td></tr>
<tr class="separator:addb1f046325535d8f3036c605429cf14 inherit pro_static_attribs_classmodule_1_1module_base_1_1_module_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Description of the Module. </p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a0c730c8d45b001e1ddb2ab73400df373" name="a0c730c8d45b001e1ddb2ab73400df373"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0c730c8d45b001e1ddb2ab73400df373">&#9670;&#160;</a></span>__init__()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">module.geocoding.BoswatchModule.__init__ </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>config</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Do not change anything here! </p>
<p>Reimplemented from <a class="el" href="classmodule_1_1module_base_1_1_module_base.html#afee02f2e4ef75f43eb819facba9e9bd7">module.moduleBase.ModuleBase</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 31</span> <span class="keyword">def </span>__init__(self, config):</div>
<div class="line"><span class="lineno"> 32</span> <span class="stringliteral">r&quot;&quot;&quot;!Do not change anything here!&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 33</span> super().__init__(__name__, config) <span class="comment"># you can access the config class on &#39;self.config&#39;</span></div>
<div class="line"><span class="lineno"> 34</span> </div>
</div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="af7f1f53f8f23f091bb12fbb3c5b040eb" name="af7f1f53f8f23f091bb12fbb3c5b040eb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af7f1f53f8f23f091bb12fbb3c5b040eb">&#9670;&#160;</a></span>doWork()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">module.geocoding.BoswatchModule.doWork </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>bwPacket</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>start an run of the module. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">bwPacket</td><td>A BOSWatch packet instance </td></tr>
</table>
</dd>
</dl>
<p>Reimplemented from <a class="el" href="classmodule_1_1module_base_1_1_module_base.html#a2146259480980a909ee97410cfdc7933">module.moduleBase.ModuleBase</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 35</span> <span class="keyword">def </span>doWork(self, bwPacket):</div>
<div class="line"><span class="lineno"> 36</span> <span class="stringliteral">r&quot;&quot;&quot;!start an run of the module.</span></div>
<div class="line"><span class="lineno"> 37</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 38</span><span class="stringliteral"> @param bwPacket: A BOSWatch packet instance&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 39</span> <span class="keywordflow">if</span> bwPacket.get(<span class="stringliteral">&quot;mode&quot;</span>) == <span class="stringliteral">&quot;pocsag&quot;</span>:</div>
<div class="line"><span class="lineno"> 40</span> self.geocode(bwPacket)</div>
<div class="line"><span class="lineno"> 41</span> </div>
<div class="line"><span class="lineno"> 42</span> <span class="keywordflow">return</span> bwPacket</div>
<div class="line"><span class="lineno"> 43</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="a59b6abc9064a3674525563647ed6d8cd" name="a59b6abc9064a3674525563647ed6d8cd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a59b6abc9064a3674525563647ed6d8cd">&#9670;&#160;</a></span>geocode()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">module.geocoding.BoswatchModule.geocode </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>bwPacket</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>find address in message and get latitude and longitude </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">bwPacket</td><td>A BOSWatch packet instance </td></tr>
</table>
</dd>
</dl>
<div class="fragment"><div class="line"><span class="lineno"> 44</span> <span class="keyword">def </span>geocode(self, bwPacket):</div>
<div class="line"><span class="lineno"> 45</span> <span class="stringliteral">r&quot;&quot;&quot;!find address in message and get latitude and longitude</span></div>
<div class="line"><span class="lineno"> 46</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 47</span><span class="stringliteral"> @param bwPacket: A BOSWatch packet instance&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 48</span> <span class="keywordflow">try</span>:</div>
<div class="line"><span class="lineno"> 49</span> addressArray = re.search(self.config.get(<span class="stringliteral">&quot;regex&quot;</span>), bwPacket.get(<span class="stringliteral">&quot;message&quot;</span>))</div>
<div class="line"><span class="lineno"> 50</span> provider = self.config.get(<span class="stringliteral">&quot;apiProvider&quot;</span>)</div>
<div class="line"><span class="lineno"> 51</span> </div>
<div class="line"><span class="lineno"> 52</span> <span class="keywordflow">if</span> addressArray[1] <span class="keywordflow">is</span> <span class="keywordtype">None</span>:</div>
<div class="line"><span class="lineno"> 53</span> logging.info(<span class="stringliteral">&quot;No address found, skipping geocoding&quot;</span>)</div>
<div class="line"><span class="lineno"> 54</span> <span class="keywordflow">return</span> bwPacket</div>
<div class="line"><span class="lineno"> 55</span> </div>
<div class="line"><span class="lineno"> 56</span> address = addressArray[1]</div>
<div class="line"><span class="lineno"> 57</span> bwPacket.set(<span class="stringliteral">&quot;address&quot;</span>, address)</div>
<div class="line"><span class="lineno"> 58</span> self.registerWildcard(<span class="stringliteral">&quot;{ADDRESS}&quot;</span>, <span class="stringliteral">&quot;address&quot;</span>)</div>
<div class="line"><span class="lineno"> 59</span> logging.info(<span class="stringliteral">&quot;Found address: &#39;&quot;</span> + address + <span class="stringliteral">&quot;&#39; in packet&quot;</span>)</div>
<div class="line"><span class="lineno"> 60</span> </div>
<div class="line"><span class="lineno"> 61</span> <span class="keywordflow">if</span> <span class="stringliteral">&quot;mapbox&quot;</span> == provider:</div>
<div class="line"><span class="lineno"> 62</span> logging.info(<span class="stringliteral">&quot;Using Mapbox as provider&quot;</span>)</div>
<div class="line"><span class="lineno"> 63</span> g = geocoder.mapbox(address, key=self.config.get(<span class="stringliteral">&quot;apiToken&quot;</span>))</div>
<div class="line"><span class="lineno"> 64</span> <span class="keywordflow">elif</span> <span class="stringliteral">&quot;google&quot;</span> == provider:</div>
<div class="line"><span class="lineno"> 65</span> logging.info(<span class="stringliteral">&quot;Using Google as provider&quot;</span>)</div>
<div class="line"><span class="lineno"> 66</span> g = geocoder.google(address, key=self.config.get(<span class="stringliteral">&quot;apiToken&quot;</span>))</div>
<div class="line"><span class="lineno"> 67</span> <span class="keywordflow">else</span>:</div>
<div class="line"><span class="lineno"> 68</span> <span class="keywordflow">return</span> bwPacket</div>
<div class="line"><span class="lineno"> 69</span> </div>
<div class="line"><span class="lineno"> 70</span> (lat, lon) = g.latlng</div>
<div class="line"><span class="lineno"> 71</span> logging.info(<span class="stringliteral">&quot;Found following coordinates for address: [lat=&quot;</span> + str(lat) + <span class="stringliteral">&quot;, lon=&quot;</span> + str(lon) + <span class="stringliteral">&quot;]&quot;</span>)</div>
<div class="line"><span class="lineno"> 72</span> bwPacket.set(<span class="stringliteral">&quot;lat&quot;</span>, lat)</div>
<div class="line"><span class="lineno"> 73</span> bwPacket.set(<span class="stringliteral">&quot;lon&quot;</span>, lon)</div>
<div class="line"><span class="lineno"> 74</span> self.registerWildcard(<span class="stringliteral">&quot;{LAT}&quot;</span>, <span class="stringliteral">&quot;lat&quot;</span>)</div>
<div class="line"><span class="lineno"> 75</span> self.registerWildcard(<span class="stringliteral">&quot;{LON}&quot;</span>, <span class="stringliteral">&quot;lon&quot;</span>)</div>
<div class="line"><span class="lineno"> 76</span> </div>
<div class="line"><span class="lineno"> 77</span> <span class="keywordflow">return</span> bwPacket</div>
<div class="line"><span class="lineno"> 78</span> <span class="keywordflow">except</span> Exception <span class="keyword">as</span> e:</div>
<div class="line"><span class="lineno"> 79</span> logging.exception(<span class="stringliteral">&quot;Unknown Error while executing geocoding module: &quot;</span> + str(type(e).__name__) + <span class="stringliteral">&quot;: &quot;</span> + str(e))</div>
<div class="line"><span class="lineno"> 80</span> <span class="keywordflow">return</span> bwPacket</div>
</div><!-- fragment -->
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespacemodule.html">module</a></li><li class="navelem"><a class="el" href="namespacemodule_1_1geocoding.html">geocoding</a></li><li class="navelem"><a class="el" href="classmodule_1_1geocoding_1_1_boswatch_module.html">BoswatchModule</a></li>
<li class="footer">Generated on Wed Jun 11 2025 08:24:06 for BOSWatch 3 by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
</ul>
</div>
</body>
</html>

View file

@ -0,0 +1,6 @@
var classmodule_1_1geocoding_1_1_boswatch_module =
[
[ "__init__", "classmodule_1_1geocoding_1_1_boswatch_module.html#a0c730c8d45b001e1ddb2ab73400df373", null ],
[ "doWork", "classmodule_1_1geocoding_1_1_boswatch_module.html#af7f1f53f8f23f091bb12fbb3c5b040eb", null ],
[ "geocode", "classmodule_1_1geocoding_1_1_boswatch_module.html#a59b6abc9064a3674525563647ed6d8cd", null ]
];

View file

@ -0,0 +1,657 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.12.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>BOSWatch 3: module.moduleBase.ModuleBase Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">BOSWatch 3
</div>
<div id="projectbrief">Python Script to receive and decode German BOS Information with rtl_fm and multimon-NG</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.12.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('classmodule_1_1module_base_1_1_module_base.html',''); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="#pub-attribs">Data Fields</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> &#124;
<a href="#pro-attribs">Protected Attributes</a> &#124;
<a href="#pro-static-attribs">Static Protected Attributes</a> </div>
<div class="headertitle"><div class="title">module.moduleBase.ModuleBase Class Reference</div></div>
</div><!--header-->
<div class="contents">
<p>Main module class.
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:afee02f2e4ef75f43eb819facba9e9bd7" id="r_afee02f2e4ef75f43eb819facba9e9bd7"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#afee02f2e4ef75f43eb819facba9e9bd7">__init__</a> (self, moduleName, <a class="el" href="#a7cbca9fa85b9b9bb487ac882d51385c4">config</a>)</td></tr>
<tr class="memdesc:afee02f2e4ef75f43eb819facba9e9bd7"><td class="mdescLeft">&#160;</td><td class="mdescRight">init preload some needed locals and then call <a class="el" href="#aedd2d0694073eff10a3c0440f487a373" title="Called by import of the module can be inherited.">onLoad()</a> directly <br /></td></tr>
<tr class="separator:afee02f2e4ef75f43eb819facba9e9bd7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aedd2d0694073eff10a3c0440f487a373" id="r_aedd2d0694073eff10a3c0440f487a373"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aedd2d0694073eff10a3c0440f487a373">onLoad</a> (self)</td></tr>
<tr class="memdesc:aedd2d0694073eff10a3c0440f487a373"><td class="mdescLeft">&#160;</td><td class="mdescRight">Called by import of the module can be inherited. <br /></td></tr>
<tr class="separator:aedd2d0694073eff10a3c0440f487a373"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2146259480980a909ee97410cfdc7933" id="r_a2146259480980a909ee97410cfdc7933"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a2146259480980a909ee97410cfdc7933">doWork</a> (self, bwPacket)</td></tr>
<tr class="memdesc:a2146259480980a909ee97410cfdc7933"><td class="mdescLeft">&#160;</td><td class="mdescRight">Called module run can be inherited. <br /></td></tr>
<tr class="separator:a2146259480980a909ee97410cfdc7933"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4c69727e801ba326aed6963cd9fd6dae" id="r_a4c69727e801ba326aed6963cd9fd6dae"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a4c69727e801ba326aed6963cd9fd6dae">onUnload</a> (self)</td></tr>
<tr class="memdesc:a4c69727e801ba326aed6963cd9fd6dae"><td class="mdescLeft">&#160;</td><td class="mdescRight">Called on shutdown of boswatch can be inherited. <br /></td></tr>
<tr class="separator:a4c69727e801ba326aed6963cd9fd6dae"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-static-methods" name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:a75f00bbad4a6905c467e71df1df22f9c" id="r_a75f00bbad4a6905c467e71df1df22f9c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a75f00bbad4a6905c467e71df1df22f9c">registerWildcard</a> (newWildcard, bwPacketField)</td></tr>
<tr class="memdesc:a75f00bbad4a6905c467e71df1df22f9c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Register a new wildcard. <br /></td></tr>
<tr class="separator:a75f00bbad4a6905c467e71df1df22f9c"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
Data Fields</h2></td></tr>
<tr class="memitem:a7cbca9fa85b9b9bb487ac882d51385c4" id="r_a7cbca9fa85b9b9bb487ac882d51385c4"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a7cbca9fa85b9b9bb487ac882d51385c4">config</a> = config</td></tr>
<tr class="separator:a7cbca9fa85b9b9bb487ac882d51385c4"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pro-methods" name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr class="memitem:ae43a99376d14379225916bbce74793bd" id="r_ae43a99376d14379225916bbce74793bd"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ae43a99376d14379225916bbce74793bd">_cleanup</a> (self)</td></tr>
<tr class="memdesc:ae43a99376d14379225916bbce74793bd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Cleanup routine calls <a class="el" href="#a4c69727e801ba326aed6963cd9fd6dae" title="Called on shutdown of boswatch can be inherited.">onUnload()</a> directly. <br /></td></tr>
<tr class="separator:ae43a99376d14379225916bbce74793bd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1bc0d95375400ac328aaa9c10fd1996a" id="r_a1bc0d95375400ac328aaa9c10fd1996a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a1bc0d95375400ac328aaa9c10fd1996a">_run</a> (self, bwPacket)</td></tr>
<tr class="memdesc:a1bc0d95375400ac328aaa9c10fd1996a"><td class="mdescLeft">&#160;</td><td class="mdescRight">start an run of the module. <br /></td></tr>
<tr class="separator:a1bc0d95375400ac328aaa9c10fd1996a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a872db7602a8139866730ba79a220314b" id="r_a872db7602a8139866730ba79a220314b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a872db7602a8139866730ba79a220314b">_getStatistics</a> (self)</td></tr>
<tr class="memdesc:a872db7602a8139866730ba79a220314b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns statistical information's from last module run. <br /></td></tr>
<tr class="separator:a872db7602a8139866730ba79a220314b"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pro-attribs" name="pro-attribs"></a>
Protected Attributes</h2></td></tr>
<tr class="memitem:a667c99040b316d66a00de34ff5cebf3e" id="r_a667c99040b316d66a00de34ff5cebf3e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a667c99040b316d66a00de34ff5cebf3e">_moduleName</a> = moduleName</td></tr>
<tr class="separator:a667c99040b316d66a00de34ff5cebf3e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a96ad0ccc9a2dadf099285b5e938a098a" id="r_a96ad0ccc9a2dadf099285b5e938a098a"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a96ad0ccc9a2dadf099285b5e938a098a">_cumTime</a> = 0</td></tr>
<tr class="separator:a96ad0ccc9a2dadf099285b5e938a098a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9b6aa123432ef49e373f643f5b10a82c" id="r_a9b6aa123432ef49e373f643f5b10a82c"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a9b6aa123432ef49e373f643f5b10a82c">_moduleTime</a> = 0</td></tr>
<tr class="separator:a9b6aa123432ef49e373f643f5b10a82c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9f55a9dd81ff02426ae9d73ff62f4134" id="r_a9f55a9dd81ff02426ae9d73ff62f4134"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a9f55a9dd81ff02426ae9d73ff62f4134">_runCount</a> = 0</td></tr>
<tr class="separator:a9f55a9dd81ff02426ae9d73ff62f4134"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac95033dbbecea6287331a58f4b2fd046" id="r_ac95033dbbecea6287331a58f4b2fd046"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ac95033dbbecea6287331a58f4b2fd046">_moduleErrorCount</a> = 0</td></tr>
<tr class="separator:ac95033dbbecea6287331a58f4b2fd046"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pro-static-attribs" name="pro-static-attribs"></a>
Static Protected Attributes</h2></td></tr>
<tr class="memitem:addb1f046325535d8f3036c605429cf14" id="r_addb1f046325535d8f3036c605429cf14"><td class="memItemLeft" align="right" valign="top">list&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#addb1f046325535d8f3036c605429cf14">_modulesActive</a> = []</td></tr>
<tr class="separator:addb1f046325535d8f3036c605429cf14"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Main module class. </p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="afee02f2e4ef75f43eb819facba9e9bd7" name="afee02f2e4ef75f43eb819facba9e9bd7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afee02f2e4ef75f43eb819facba9e9bd7">&#9670;&#160;</a></span>__init__()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">module.moduleBase.ModuleBase.__init__ </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>moduleName</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>config</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>init preload some needed locals and then call <a class="el" href="#aedd2d0694073eff10a3c0440f487a373" title="Called by import of the module can be inherited.">onLoad()</a> directly </p>
<p>Reimplemented in <a class="el" href="classmodule_1_1descriptor_1_1_boswatch_module.html#aa1bc2516e337c8fa96ef7e3656435f85">module.descriptor.BoswatchModule</a>, <a class="el" href="classmodule_1_1filter_1_1double_filter_1_1_boswatch_module.html#a10e2b681c89887ee422f01a1f9ae9dcd">module.filter.doubleFilter.BoswatchModule</a>, <a class="el" href="classmodule_1_1filter_1_1mode_filter_1_1_boswatch_module.html#a40d029c8dc22e315b84237d31055137b">module.filter.modeFilter.BoswatchModule</a>, <a class="el" href="classmodule_1_1filter_1_1regex_filter_1_1_boswatch_module.html#a7d0ba6d5f55296e81be161ffc0cf5f86">module.filter.regexFilter.BoswatchModule</a>, <a class="el" href="classmodule_1_1geocoding_1_1_boswatch_module.html#a0c730c8d45b001e1ddb2ab73400df373">module.geocoding.BoswatchModule</a>, and <a class="el" href="classmodule_1_1template__module_1_1_boswatch_module.html#a3f001ec829334fde0039cdbfec542588">module.template_module.BoswatchModule</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 31</span> <span class="keyword">def </span>__init__(self, moduleName, config):</div>
<div class="line"><span class="lineno"> 32</span> <span class="stringliteral">r&quot;&quot;&quot;!init preload some needed locals and then call onLoad() directly&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 33</span> self._moduleName = moduleName</div>
<div class="line"><span class="lineno"> 34</span> self.config = config</div>
<div class="line"><span class="lineno"> 35</span> self._modulesActive.append(self)</div>
<div class="line"><span class="lineno"> 36</span> </div>
<div class="line"><span class="lineno"> 37</span> <span class="comment"># for time counting</span></div>
<div class="line"><span class="lineno"> 38</span> self._cumTime = 0</div>
<div class="line"><span class="lineno"> 39</span> self._moduleTime = 0</div>
<div class="line"><span class="lineno"> 40</span> </div>
<div class="line"><span class="lineno"> 41</span> <span class="comment"># for statistics</span></div>
<div class="line"><span class="lineno"> 42</span> self._runCount = 0</div>
<div class="line"><span class="lineno"> 43</span> self._moduleErrorCount = 0</div>
<div class="line"><span class="lineno"> 44</span> </div>
<div class="line"><span class="lineno"> 45</span> logging.debug(<span class="stringliteral">&quot;[%s] onLoad()&quot;</span>, moduleName)</div>
<div class="line"><span class="lineno"> 46</span> self.onLoad()</div>
<div class="line"><span class="lineno"> 47</span> </div>
</div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="ae43a99376d14379225916bbce74793bd" name="ae43a99376d14379225916bbce74793bd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae43a99376d14379225916bbce74793bd">&#9670;&#160;</a></span>_cleanup()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">module.moduleBase.ModuleBase._cleanup </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Cleanup routine calls <a class="el" href="#a4c69727e801ba326aed6963cd9fd6dae" title="Called on shutdown of boswatch can be inherited.">onUnload()</a> directly. </p>
<div class="fragment"><div class="line"><span class="lineno"> 48</span> <span class="keyword">def </span>_cleanup(self):</div>
<div class="line"><span class="lineno"> 49</span> <span class="stringliteral">r&quot;&quot;&quot;!Cleanup routine calls onUnload() directly&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 50</span> logging.debug(<span class="stringliteral">&quot;[%s] onUnload()&quot;</span>, self._moduleName)</div>
<div class="line"><span class="lineno"> 51</span> self._modulesActive.remove(self)</div>
<div class="line"><span class="lineno"> 52</span> self.onUnload()</div>
<div class="line"><span class="lineno"> 53</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="a1bc0d95375400ac328aaa9c10fd1996a" name="a1bc0d95375400ac328aaa9c10fd1996a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1bc0d95375400ac328aaa9c10fd1996a">&#9670;&#160;</a></span>_run()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">module.moduleBase.ModuleBase._run </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>bwPacket</em></span>&#160;)</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>start an run of the module. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">bwPacket</td><td>A BOSWatch packet instance </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>bwPacket or False </dd></dl>
<div class="fragment"><div class="line"><span class="lineno"> 54</span> <span class="keyword">def </span>_run(self, bwPacket):</div>
<div class="line"><span class="lineno"> 55</span> <span class="stringliteral">r&quot;&quot;&quot;!start an run of the module.</span></div>
<div class="line"><span class="lineno"> 56</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 57</span><span class="stringliteral"> @param bwPacket: A BOSWatch packet instance</span></div>
<div class="line"><span class="lineno"> 58</span><span class="stringliteral"> @return bwPacket or False&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 59</span> self._runCount += 1</div>
<div class="line"><span class="lineno"> 60</span> logging.debug(<span class="stringliteral">&quot;[%s] run #%d&quot;</span>, self._moduleName, self._runCount)</div>
<div class="line"><span class="lineno"> 61</span> </div>
<div class="line"><span class="lineno"> 62</span> tmpTime = time.time()</div>
<div class="line"><span class="lineno"> 63</span> <span class="keywordflow">try</span>:</div>
<div class="line"><span class="lineno"> 64</span> logging.debug(<span class="stringliteral">&quot;[%s] doWork()&quot;</span>, self._moduleName)</div>
<div class="line"><span class="lineno"> 65</span> bwPacket = self.doWork(bwPacket)</div>
<div class="line"><span class="lineno"> 66</span> <span class="keywordflow">except</span>:</div>
<div class="line"><span class="lineno"> 67</span> self._moduleErrorCount += 1</div>
<div class="line"><span class="lineno"> 68</span> logging.exception(<span class="stringliteral">&quot;[%s] alarm error&quot;</span>, self._moduleName)</div>
<div class="line"><span class="lineno"> 69</span> self._moduleTime = time.time() - tmpTime</div>
<div class="line"><span class="lineno"> 70</span> </div>
<div class="line"><span class="lineno"> 71</span> self._cumTime += self._moduleTime</div>
<div class="line"><span class="lineno"> 72</span> </div>
<div class="line"><span class="lineno"> 73</span> logging.debug(<span class="stringliteral">&quot;[%s] took %0.3f seconds&quot;</span>, self._moduleName, self._moduleTime)</div>
<div class="line"><span class="lineno"> 74</span> </div>
<div class="line"><span class="lineno"> 75</span> <span class="keywordflow">return</span> bwPacket</div>
<div class="line"><span class="lineno"> 76</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="a872db7602a8139866730ba79a220314b" name="a872db7602a8139866730ba79a220314b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a872db7602a8139866730ba79a220314b">&#9670;&#160;</a></span>_getStatistics()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">module.moduleBase.ModuleBase._getStatistics </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns statistical information's from last module run. </p>
<dl class="section return"><dt>Returns</dt><dd>Statistics as pyton dict </dd></dl>
<div class="fragment"><div class="line"><span class="lineno"> 77</span> <span class="keyword">def </span>_getStatistics(self):</div>
<div class="line"><span class="lineno"> 78</span> <span class="stringliteral">r&quot;&quot;&quot;!Returns statistical information&#39;s from last module run</span></div>
<div class="line"><span class="lineno"> 79</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 80</span><span class="stringliteral"> @return Statistics as pyton dict&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 81</span> stats = {<span class="stringliteral">&quot;type&quot;</span>: <span class="stringliteral">&quot;module&quot;</span>,</div>
<div class="line"><span class="lineno"> 82</span> <span class="stringliteral">&quot;runCount&quot;</span>: self._runCount,</div>
<div class="line"><span class="lineno"> 83</span> <span class="stringliteral">&quot;cumTime&quot;</span>: self._cumTime,</div>
<div class="line"><span class="lineno"> 84</span> <span class="stringliteral">&quot;moduleTime&quot;</span>: self._moduleTime,</div>
<div class="line"><span class="lineno"> 85</span> <span class="stringliteral">&quot;moduleErrorCount&quot;</span>: self._moduleErrorCount}</div>
<div class="line"><span class="lineno"> 86</span> <span class="keywordflow">return</span> stats</div>
<div class="line"><span class="lineno"> 87</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="aedd2d0694073eff10a3c0440f487a373" name="aedd2d0694073eff10a3c0440f487a373"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aedd2d0694073eff10a3c0440f487a373">&#9670;&#160;</a></span>onLoad()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">module.moduleBase.ModuleBase.onLoad </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Called by import of the module can be inherited. </p>
<p>Reimplemented in <a class="el" href="classmodule_1_1descriptor_1_1_boswatch_module.html#a39d8aef7f47e43c8108813f072785a56">module.descriptor.BoswatchModule</a>, <a class="el" href="classmodule_1_1filter_1_1double_filter_1_1_boswatch_module.html#aa5f9d403d03ad71ebacc98d0e05ef0ab">module.filter.doubleFilter.BoswatchModule</a>, <a class="el" href="classmodule_1_1filter_1_1mode_filter_1_1_boswatch_module.html#a316db93e433ec18280dba7c603b6db7f">module.filter.modeFilter.BoswatchModule</a>, <a class="el" href="classmodule_1_1filter_1_1regex_filter_1_1_boswatch_module.html#a636f42c800fd91192e2f683313fc75bf">module.filter.regexFilter.BoswatchModule</a>, and <a class="el" href="classmodule_1_1template__module_1_1_boswatch_module.html#a5fbab9ed6a058b089d39d3f53c7f1527">module.template_module.BoswatchModule</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 88</span> <span class="keyword">def </span>onLoad(self):</div>
<div class="line"><span class="lineno"> 89</span> <span class="stringliteral">r&quot;&quot;&quot;!Called by import of the module</span></div>
<div class="line"><span class="lineno"> 90</span><span class="stringliteral"> can be inherited&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 91</span> <span class="keywordflow">pass</span></div>
<div class="line"><span class="lineno"> 92</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="a2146259480980a909ee97410cfdc7933" name="a2146259480980a909ee97410cfdc7933"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2146259480980a909ee97410cfdc7933">&#9670;&#160;</a></span>doWork()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">module.moduleBase.ModuleBase.doWork </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>bwPacket</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Called module run can be inherited. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">bwPacket</td><td>bwPacket instance </td></tr>
</table>
</dd>
</dl>
<p>Reimplemented in <a class="el" href="classmodule_1_1descriptor_1_1_boswatch_module.html#a2192a35cc94bccc69d1b6a268acc9b94">module.descriptor.BoswatchModule</a>, <a class="el" href="classmodule_1_1filter_1_1double_filter_1_1_boswatch_module.html#a88c57fc92229358481fa36e98c677c7d">module.filter.doubleFilter.BoswatchModule</a>, <a class="el" href="classmodule_1_1filter_1_1mode_filter_1_1_boswatch_module.html#a720563d78144989697ed24804d554f8d">module.filter.modeFilter.BoswatchModule</a>, <a class="el" href="classmodule_1_1filter_1_1regex_filter_1_1_boswatch_module.html#a887577d5947b9277541d8013e6685103">module.filter.regexFilter.BoswatchModule</a>, <a class="el" href="classmodule_1_1geocoding_1_1_boswatch_module.html#af7f1f53f8f23f091bb12fbb3c5b040eb">module.geocoding.BoswatchModule</a>, and <a class="el" href="classmodule_1_1template__module_1_1_boswatch_module.html#a266810ac3b486b4340fe823390a4b866">module.template_module.BoswatchModule</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 93</span> <span class="keyword">def </span>doWork(self, bwPacket):</div>
<div class="line"><span class="lineno"> 94</span> <span class="stringliteral">r&quot;&quot;&quot;!Called module run</span></div>
<div class="line"><span class="lineno"> 95</span><span class="stringliteral"> can be inherited</span></div>
<div class="line"><span class="lineno"> 96</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 97</span><span class="stringliteral"> @param bwPacket: bwPacket instance&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 98</span> logging.warning(<span class="stringliteral">&quot;no functionality in module %s&quot;</span>, self._moduleName)</div>
<div class="line"><span class="lineno"> 99</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="a4c69727e801ba326aed6963cd9fd6dae" name="a4c69727e801ba326aed6963cd9fd6dae"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4c69727e801ba326aed6963cd9fd6dae">&#9670;&#160;</a></span>onUnload()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">module.moduleBase.ModuleBase.onUnload </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Called on shutdown of boswatch can be inherited. </p>
<p>Reimplemented in <a class="el" href="classmodule_1_1descriptor_1_1_boswatch_module.html#adf37fd4608e42b4a9335c0d2954d7113">module.descriptor.BoswatchModule</a>, <a class="el" href="classmodule_1_1filter_1_1double_filter_1_1_boswatch_module.html#a81185d2d81a4959d8a29e5054adf975d">module.filter.doubleFilter.BoswatchModule</a>, <a class="el" href="classmodule_1_1filter_1_1mode_filter_1_1_boswatch_module.html#af5c6b174721359c9c93ddc29faa9be9b">module.filter.modeFilter.BoswatchModule</a>, <a class="el" href="classmodule_1_1filter_1_1regex_filter_1_1_boswatch_module.html#afa1a66cb2277360e21841526e41cec5c">module.filter.regexFilter.BoswatchModule</a>, and <a class="el" href="classmodule_1_1template__module_1_1_boswatch_module.html#a00f969c06c87ae304c65aee372d95d0a">module.template_module.BoswatchModule</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 100</span> <span class="keyword">def </span>onUnload(self):</div>
<div class="line"><span class="lineno"> 101</span> <span class="stringliteral">r&quot;&quot;&quot;!Called on shutdown of boswatch</span></div>
<div class="line"><span class="lineno"> 102</span><span class="stringliteral"> can be inherited&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 103</span> <span class="keywordflow">pass</span></div>
<div class="line"><span class="lineno"> 104</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="a75f00bbad4a6905c467e71df1df22f9c" name="a75f00bbad4a6905c467e71df1df22f9c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a75f00bbad4a6905c467e71df1df22f9c">&#9670;&#160;</a></span>registerWildcard()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">module.moduleBase.ModuleBase.registerWildcard </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>newWildcard</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>bwPacketField</em></span>&#160;)</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Register a new wildcard. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">newWildcard</td><td>wildcard where parser searching for </td></tr>
<tr><td class="paramname">bwPacketField</td><td>field from bwPacket where holds replacement data </td></tr>
</table>
</dd>
</dl>
<div class="fragment"><div class="line"><span class="lineno"> 106</span> <span class="keyword">def </span>registerWildcard(newWildcard, bwPacketField):</div>
<div class="line"><span class="lineno"> 107</span> <span class="stringliteral">r&quot;&quot;&quot;!Register a new wildcard</span></div>
<div class="line"><span class="lineno"> 108</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 109</span><span class="stringliteral"> @param newWildcard: wildcard where parser searching for</span></div>
<div class="line"><span class="lineno"> 110</span><span class="stringliteral"> @param bwPacketField: field from bwPacket where holds replacement data&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 111</span> <span class="keywordflow">if</span> <span class="keywordflow">not</span> newWildcard.startswith(<span class="stringliteral">&quot;{&quot;</span>) <span class="keywordflow">or</span> <span class="keywordflow">not</span> newWildcard.endswith(<span class="stringliteral">&quot;}&quot;</span>):</div>
<div class="line"><span class="lineno"> 112</span> logging.error(<span class="stringliteral">&quot;wildcard not registered - false format: %s&quot;</span>, newWildcard)</div>
<div class="line"><span class="lineno"> 113</span> <span class="keywordflow">return</span></div>
<div class="line"><span class="lineno"> 114</span> <span class="keywordflow">if</span> bwPacketField == <span class="stringliteral">&quot;&quot;</span>:</div>
<div class="line"><span class="lineno"> 115</span> logging.error(<span class="stringliteral">&quot;wildcard not registered - bwPacket field is empty&quot;</span>)</div>
<div class="line"><span class="lineno"> 116</span> <span class="keywordflow">return</span></div>
<div class="line"><span class="lineno"> 117</span> wildcard.registerWildcard(newWildcard, bwPacketField)</div>
</div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">Field Documentation</h2>
<a id="addb1f046325535d8f3036c605429cf14" name="addb1f046325535d8f3036c605429cf14"></a>
<h2 class="memtitle"><span class="permalink"><a href="#addb1f046325535d8f3036c605429cf14">&#9670;&#160;</a></span>_modulesActive</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">list module.moduleBase.ModuleBase._modulesActive = []</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a667c99040b316d66a00de34ff5cebf3e" name="a667c99040b316d66a00de34ff5cebf3e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a667c99040b316d66a00de34ff5cebf3e">&#9670;&#160;</a></span>_moduleName</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">module.moduleBase.ModuleBase._moduleName = moduleName</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a7cbca9fa85b9b9bb487ac882d51385c4" name="a7cbca9fa85b9b9bb487ac882d51385c4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7cbca9fa85b9b9bb487ac882d51385c4">&#9670;&#160;</a></span>config</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">module.moduleBase.ModuleBase.config = config</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a96ad0ccc9a2dadf099285b5e938a098a" name="a96ad0ccc9a2dadf099285b5e938a098a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a96ad0ccc9a2dadf099285b5e938a098a">&#9670;&#160;</a></span>_cumTime</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int module.moduleBase.ModuleBase._cumTime = 0</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a9b6aa123432ef49e373f643f5b10a82c" name="a9b6aa123432ef49e373f643f5b10a82c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9b6aa123432ef49e373f643f5b10a82c">&#9670;&#160;</a></span>_moduleTime</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int module.moduleBase.ModuleBase._moduleTime = 0</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a9f55a9dd81ff02426ae9d73ff62f4134" name="a9f55a9dd81ff02426ae9d73ff62f4134"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9f55a9dd81ff02426ae9d73ff62f4134">&#9670;&#160;</a></span>_runCount</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">module.moduleBase.ModuleBase._runCount = 0</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ac95033dbbecea6287331a58f4b2fd046" name="ac95033dbbecea6287331a58f4b2fd046"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac95033dbbecea6287331a58f4b2fd046">&#9670;&#160;</a></span>_moduleErrorCount</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int module.moduleBase.ModuleBase._moduleErrorCount = 0</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespacemodule.html">module</a></li><li class="navelem"><a class="el" href="namespacemodule_1_1module_base.html">moduleBase</a></li><li class="navelem"><a class="el" href="classmodule_1_1module_base_1_1_module_base.html">ModuleBase</a></li>
<li class="footer">Generated on Wed Jun 11 2025 08:24:06 for BOSWatch 3 by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
</ul>
</div>
</body>
</html>

View file

@ -0,0 +1,18 @@
var classmodule_1_1module_base_1_1_module_base =
[
[ "__init__", "classmodule_1_1module_base_1_1_module_base.html#afee02f2e4ef75f43eb819facba9e9bd7", null ],
[ "_cleanup", "classmodule_1_1module_base_1_1_module_base.html#ae43a99376d14379225916bbce74793bd", null ],
[ "_run", "classmodule_1_1module_base_1_1_module_base.html#a1bc0d95375400ac328aaa9c10fd1996a", null ],
[ "_getStatistics", "classmodule_1_1module_base_1_1_module_base.html#a872db7602a8139866730ba79a220314b", null ],
[ "onLoad", "classmodule_1_1module_base_1_1_module_base.html#aedd2d0694073eff10a3c0440f487a373", null ],
[ "doWork", "classmodule_1_1module_base_1_1_module_base.html#a2146259480980a909ee97410cfdc7933", null ],
[ "onUnload", "classmodule_1_1module_base_1_1_module_base.html#a4c69727e801ba326aed6963cd9fd6dae", null ],
[ "registerWildcard", "classmodule_1_1module_base_1_1_module_base.html#a75f00bbad4a6905c467e71df1df22f9c", null ],
[ "_modulesActive", "classmodule_1_1module_base_1_1_module_base.html#addb1f046325535d8f3036c605429cf14", null ],
[ "_moduleName", "classmodule_1_1module_base_1_1_module_base.html#a667c99040b316d66a00de34ff5cebf3e", null ],
[ "config", "classmodule_1_1module_base_1_1_module_base.html#a7cbca9fa85b9b9bb487ac882d51385c4", null ],
[ "_cumTime", "classmodule_1_1module_base_1_1_module_base.html#a96ad0ccc9a2dadf099285b5e938a098a", null ],
[ "_moduleTime", "classmodule_1_1module_base_1_1_module_base.html#a9b6aa123432ef49e373f643f5b10a82c", null ],
[ "_runCount", "classmodule_1_1module_base_1_1_module_base.html#a9f55a9dd81ff02426ae9d73ff62f4134", null ],
[ "_moduleErrorCount", "classmodule_1_1module_base_1_1_module_base.html#ac95033dbbecea6287331a58f4b2fd046", null ]
];

View file

@ -0,0 +1,305 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.12.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>BOSWatch 3: module.template_module.BoswatchModule Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">BOSWatch 3
</div>
<div id="projectbrief">Python Script to receive and decode German BOS Information with rtl_fm and multimon-NG</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.12.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('classmodule_1_1template__module_1_1_boswatch_module.html',''); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> </div>
<div class="headertitle"><div class="title">module.template_module.BoswatchModule Class Reference</div></div>
</div><!--header-->
<div class="contents">
<p>Description of the Module.
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a3f001ec829334fde0039cdbfec542588" id="r_a3f001ec829334fde0039cdbfec542588"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a3f001ec829334fde0039cdbfec542588">__init__</a> (self, <a class="el" href="classmodule_1_1module_base_1_1_module_base.html#a7cbca9fa85b9b9bb487ac882d51385c4">config</a>)</td></tr>
<tr class="memdesc:a3f001ec829334fde0039cdbfec542588"><td class="mdescLeft">&#160;</td><td class="mdescRight">Do not change anything here! <br /></td></tr>
<tr class="separator:a3f001ec829334fde0039cdbfec542588"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5fbab9ed6a058b089d39d3f53c7f1527" id="r_a5fbab9ed6a058b089d39d3f53c7f1527"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a5fbab9ed6a058b089d39d3f53c7f1527">onLoad</a> (self)</td></tr>
<tr class="memdesc:a5fbab9ed6a058b089d39d3f53c7f1527"><td class="mdescLeft">&#160;</td><td class="mdescRight">Called by import of the plugin Remove if not implemented. <br /></td></tr>
<tr class="separator:a5fbab9ed6a058b089d39d3f53c7f1527"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a266810ac3b486b4340fe823390a4b866" id="r_a266810ac3b486b4340fe823390a4b866"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a266810ac3b486b4340fe823390a4b866">doWork</a> (self, bwPacket)</td></tr>
<tr class="memdesc:a266810ac3b486b4340fe823390a4b866"><td class="mdescLeft">&#160;</td><td class="mdescRight">start an run of the module. <br /></td></tr>
<tr class="separator:a266810ac3b486b4340fe823390a4b866"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a00f969c06c87ae304c65aee372d95d0a" id="r_a00f969c06c87ae304c65aee372d95d0a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a00f969c06c87ae304c65aee372d95d0a">onUnload</a> (self)</td></tr>
<tr class="memdesc:a00f969c06c87ae304c65aee372d95d0a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Called by destruction of the plugin Remove if not implemented. <br /></td></tr>
<tr class="separator:a00f969c06c87ae304c65aee372d95d0a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classmodule_1_1module_base_1_1_module_base"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pub_methods_classmodule_1_1module_base_1_1_module_base')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classmodule_1_1module_base_1_1_module_base.html">module.moduleBase.ModuleBase</a></td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="inherited" name="inherited"></a>
Additional Inherited Members</h2></td></tr>
<tr class="inherit_header pub_static_methods_classmodule_1_1module_base_1_1_module_base"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pub_static_methods_classmodule_1_1module_base_1_1_module_base')"><img src="closed.png" alt="-"/>&#160;Static Public Member Functions inherited from <a class="el" href="classmodule_1_1module_base_1_1_module_base.html">module.moduleBase.ModuleBase</a></td></tr>
<tr class="memitem:a75f00bbad4a6905c467e71df1df22f9c inherit pub_static_methods_classmodule_1_1module_base_1_1_module_base" id="r_a75f00bbad4a6905c467e71df1df22f9c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmodule_1_1module_base_1_1_module_base.html#a75f00bbad4a6905c467e71df1df22f9c">registerWildcard</a> (newWildcard, bwPacketField)</td></tr>
<tr class="memdesc:a75f00bbad4a6905c467e71df1df22f9c inherit pub_static_methods_classmodule_1_1module_base_1_1_module_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Register a new wildcard. <br /></td></tr>
<tr class="separator:a75f00bbad4a6905c467e71df1df22f9c inherit pub_static_methods_classmodule_1_1module_base_1_1_module_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_attribs_classmodule_1_1module_base_1_1_module_base"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pub_attribs_classmodule_1_1module_base_1_1_module_base')"><img src="closed.png" alt="-"/>&#160;Data Fields inherited from <a class="el" href="classmodule_1_1module_base_1_1_module_base.html">module.moduleBase.ModuleBase</a></td></tr>
<tr class="memitem:a7cbca9fa85b9b9bb487ac882d51385c4 inherit pub_attribs_classmodule_1_1module_base_1_1_module_base" id="r_a7cbca9fa85b9b9bb487ac882d51385c4"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmodule_1_1module_base_1_1_module_base.html#a7cbca9fa85b9b9bb487ac882d51385c4">config</a> = config</td></tr>
<tr class="separator:a7cbca9fa85b9b9bb487ac882d51385c4 inherit pub_attribs_classmodule_1_1module_base_1_1_module_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_methods_classmodule_1_1module_base_1_1_module_base"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pro_methods_classmodule_1_1module_base_1_1_module_base')"><img src="closed.png" alt="-"/>&#160;Protected Member Functions inherited from <a class="el" href="classmodule_1_1module_base_1_1_module_base.html">module.moduleBase.ModuleBase</a></td></tr>
<tr class="memitem:ae43a99376d14379225916bbce74793bd inherit pro_methods_classmodule_1_1module_base_1_1_module_base" id="r_ae43a99376d14379225916bbce74793bd"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmodule_1_1module_base_1_1_module_base.html#ae43a99376d14379225916bbce74793bd">_cleanup</a> (self)</td></tr>
<tr class="memdesc:ae43a99376d14379225916bbce74793bd inherit pro_methods_classmodule_1_1module_base_1_1_module_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Cleanup routine calls <a class="el" href="classmodule_1_1module_base_1_1_module_base.html#a4c69727e801ba326aed6963cd9fd6dae" title="Called on shutdown of boswatch can be inherited.">onUnload()</a> directly. <br /></td></tr>
<tr class="separator:ae43a99376d14379225916bbce74793bd inherit pro_methods_classmodule_1_1module_base_1_1_module_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1bc0d95375400ac328aaa9c10fd1996a inherit pro_methods_classmodule_1_1module_base_1_1_module_base" id="r_a1bc0d95375400ac328aaa9c10fd1996a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmodule_1_1module_base_1_1_module_base.html#a1bc0d95375400ac328aaa9c10fd1996a">_run</a> (self, bwPacket)</td></tr>
<tr class="memdesc:a1bc0d95375400ac328aaa9c10fd1996a inherit pro_methods_classmodule_1_1module_base_1_1_module_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">start an run of the module. <br /></td></tr>
<tr class="separator:a1bc0d95375400ac328aaa9c10fd1996a inherit pro_methods_classmodule_1_1module_base_1_1_module_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a872db7602a8139866730ba79a220314b inherit pro_methods_classmodule_1_1module_base_1_1_module_base" id="r_a872db7602a8139866730ba79a220314b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmodule_1_1module_base_1_1_module_base.html#a872db7602a8139866730ba79a220314b">_getStatistics</a> (self)</td></tr>
<tr class="memdesc:a872db7602a8139866730ba79a220314b inherit pro_methods_classmodule_1_1module_base_1_1_module_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns statistical information's from last module run. <br /></td></tr>
<tr class="separator:a872db7602a8139866730ba79a220314b inherit pro_methods_classmodule_1_1module_base_1_1_module_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_attribs_classmodule_1_1module_base_1_1_module_base"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pro_attribs_classmodule_1_1module_base_1_1_module_base')"><img src="closed.png" alt="-"/>&#160;Protected Attributes inherited from <a class="el" href="classmodule_1_1module_base_1_1_module_base.html">module.moduleBase.ModuleBase</a></td></tr>
<tr class="memitem:a667c99040b316d66a00de34ff5cebf3e inherit pro_attribs_classmodule_1_1module_base_1_1_module_base" id="r_a667c99040b316d66a00de34ff5cebf3e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmodule_1_1module_base_1_1_module_base.html#a667c99040b316d66a00de34ff5cebf3e">_moduleName</a> = moduleName</td></tr>
<tr class="separator:a667c99040b316d66a00de34ff5cebf3e inherit pro_attribs_classmodule_1_1module_base_1_1_module_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a96ad0ccc9a2dadf099285b5e938a098a inherit pro_attribs_classmodule_1_1module_base_1_1_module_base" id="r_a96ad0ccc9a2dadf099285b5e938a098a"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmodule_1_1module_base_1_1_module_base.html#a96ad0ccc9a2dadf099285b5e938a098a">_cumTime</a> = 0</td></tr>
<tr class="separator:a96ad0ccc9a2dadf099285b5e938a098a inherit pro_attribs_classmodule_1_1module_base_1_1_module_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9b6aa123432ef49e373f643f5b10a82c inherit pro_attribs_classmodule_1_1module_base_1_1_module_base" id="r_a9b6aa123432ef49e373f643f5b10a82c"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmodule_1_1module_base_1_1_module_base.html#a9b6aa123432ef49e373f643f5b10a82c">_moduleTime</a> = 0</td></tr>
<tr class="separator:a9b6aa123432ef49e373f643f5b10a82c inherit pro_attribs_classmodule_1_1module_base_1_1_module_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9f55a9dd81ff02426ae9d73ff62f4134 inherit pro_attribs_classmodule_1_1module_base_1_1_module_base" id="r_a9f55a9dd81ff02426ae9d73ff62f4134"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmodule_1_1module_base_1_1_module_base.html#a9f55a9dd81ff02426ae9d73ff62f4134">_runCount</a> = 0</td></tr>
<tr class="separator:a9f55a9dd81ff02426ae9d73ff62f4134 inherit pro_attribs_classmodule_1_1module_base_1_1_module_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac95033dbbecea6287331a58f4b2fd046 inherit pro_attribs_classmodule_1_1module_base_1_1_module_base" id="r_ac95033dbbecea6287331a58f4b2fd046"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmodule_1_1module_base_1_1_module_base.html#ac95033dbbecea6287331a58f4b2fd046">_moduleErrorCount</a> = 0</td></tr>
<tr class="separator:ac95033dbbecea6287331a58f4b2fd046 inherit pro_attribs_classmodule_1_1module_base_1_1_module_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_static_attribs_classmodule_1_1module_base_1_1_module_base"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pro_static_attribs_classmodule_1_1module_base_1_1_module_base')"><img src="closed.png" alt="-"/>&#160;Static Protected Attributes inherited from <a class="el" href="classmodule_1_1module_base_1_1_module_base.html">module.moduleBase.ModuleBase</a></td></tr>
<tr class="memitem:addb1f046325535d8f3036c605429cf14 inherit pro_static_attribs_classmodule_1_1module_base_1_1_module_base" id="r_addb1f046325535d8f3036c605429cf14"><td class="memItemLeft" align="right" valign="top">list&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmodule_1_1module_base_1_1_module_base.html#addb1f046325535d8f3036c605429cf14">_modulesActive</a> = []</td></tr>
<tr class="separator:addb1f046325535d8f3036c605429cf14 inherit pro_static_attribs_classmodule_1_1module_base_1_1_module_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Description of the Module. </p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a3f001ec829334fde0039cdbfec542588" name="a3f001ec829334fde0039cdbfec542588"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3f001ec829334fde0039cdbfec542588">&#9670;&#160;</a></span>__init__()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">module.template_module.BoswatchModule.__init__ </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>config</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Do not change anything here! </p>
<p>Reimplemented from <a class="el" href="classmodule_1_1module_base_1_1_module_base.html#afee02f2e4ef75f43eb819facba9e9bd7">module.moduleBase.ModuleBase</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 30</span> <span class="keyword">def </span>__init__(self, config):</div>
<div class="line"><span class="lineno"> 31</span> <span class="stringliteral">r&quot;&quot;&quot;!Do not change anything here!&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 32</span> super().__init__(__name__, config) <span class="comment"># you can access the config class on &#39;self.config&#39;</span></div>
<div class="line"><span class="lineno"> 33</span> </div>
</div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a5fbab9ed6a058b089d39d3f53c7f1527" name="a5fbab9ed6a058b089d39d3f53c7f1527"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5fbab9ed6a058b089d39d3f53c7f1527">&#9670;&#160;</a></span>onLoad()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">module.template_module.BoswatchModule.onLoad </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Called by import of the plugin Remove if not implemented. </p>
<p>Reimplemented from <a class="el" href="classmodule_1_1module_base_1_1_module_base.html#aedd2d0694073eff10a3c0440f487a373">module.moduleBase.ModuleBase</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 34</span> <span class="keyword">def </span>onLoad(self):</div>
<div class="line"><span class="lineno"> 35</span> <span class="stringliteral">r&quot;&quot;&quot;!Called by import of the plugin</span></div>
<div class="line"><span class="lineno"> 36</span><span class="stringliteral"> Remove if not implemented&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 37</span> <span class="keywordflow">pass</span></div>
<div class="line"><span class="lineno"> 38</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="a266810ac3b486b4340fe823390a4b866" name="a266810ac3b486b4340fe823390a4b866"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a266810ac3b486b4340fe823390a4b866">&#9670;&#160;</a></span>doWork()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">module.template_module.BoswatchModule.doWork </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>bwPacket</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>start an run of the module. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">bwPacket</td><td>A BOSWatch packet instance </td></tr>
</table>
</dd>
</dl>
<p>Reimplemented from <a class="el" href="classmodule_1_1module_base_1_1_module_base.html#a2146259480980a909ee97410cfdc7933">module.moduleBase.ModuleBase</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 39</span> <span class="keyword">def </span>doWork(self, bwPacket):</div>
<div class="line"><span class="lineno"> 40</span> <span class="stringliteral">r&quot;&quot;&quot;!start an run of the module.</span></div>
<div class="line"><span class="lineno"> 41</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 42</span><span class="stringliteral"> @param bwPacket: A BOSWatch packet instance&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 43</span> <span class="keywordflow">if</span> bwPacket.get(<span class="stringliteral">&quot;mode&quot;</span>) == <span class="stringliteral">&quot;fms&quot;</span>:</div>
<div class="line"><span class="lineno"> 44</span> <span class="keywordflow">pass</span></div>
<div class="line"><span class="lineno"> 45</span> <span class="keywordflow">elif</span> bwPacket.get(<span class="stringliteral">&quot;mode&quot;</span>) == <span class="stringliteral">&quot;zvei&quot;</span>:</div>
<div class="line"><span class="lineno"> 46</span> <span class="keywordflow">pass</span></div>
<div class="line"><span class="lineno"> 47</span> <span class="keywordflow">elif</span> bwPacket.get(<span class="stringliteral">&quot;mode&quot;</span>) == <span class="stringliteral">&quot;pocsag&quot;</span>:</div>
<div class="line"><span class="lineno"> 48</span> <span class="keywordflow">pass</span></div>
<div class="line"><span class="lineno"> 49</span> <span class="keywordflow">elif</span> bwPacket.get(<span class="stringliteral">&quot;mode&quot;</span>) == <span class="stringliteral">&quot;msg&quot;</span>:</div>
<div class="line"><span class="lineno"> 50</span> <span class="keywordflow">pass</span></div>
<div class="line"><span class="lineno"> 51</span> </div>
<div class="line"><span class="lineno"> 52</span> <span class="keywordflow">return</span> bwPacket</div>
<div class="line"><span class="lineno"> 53</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="a00f969c06c87ae304c65aee372d95d0a" name="a00f969c06c87ae304c65aee372d95d0a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a00f969c06c87ae304c65aee372d95d0a">&#9670;&#160;</a></span>onUnload()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">module.template_module.BoswatchModule.onUnload </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Called by destruction of the plugin Remove if not implemented. </p>
<p>Reimplemented from <a class="el" href="classmodule_1_1module_base_1_1_module_base.html#a4c69727e801ba326aed6963cd9fd6dae">module.moduleBase.ModuleBase</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 54</span> <span class="keyword">def </span>onUnload(self):</div>
<div class="line"><span class="lineno"> 55</span> <span class="stringliteral">r&quot;&quot;&quot;!Called by destruction of the plugin</span></div>
<div class="line"><span class="lineno"> 56</span><span class="stringliteral"> Remove if not implemented&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 57</span> <span class="keywordflow">pass</span></div>
</div><!-- fragment -->
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespacemodule.html">module</a></li><li class="navelem"><a class="el" href="namespacemodule_1_1template__module.html">template_module</a></li><li class="navelem"><a class="el" href="classmodule_1_1template__module_1_1_boswatch_module.html">BoswatchModule</a></li>
<li class="footer">Generated on Wed Jun 11 2025 08:24:06 for BOSWatch 3 by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
</ul>
</div>
</body>
</html>

View file

@ -0,0 +1,7 @@
var classmodule_1_1template__module_1_1_boswatch_module =
[
[ "__init__", "classmodule_1_1template__module_1_1_boswatch_module.html#a3f001ec829334fde0039cdbfec542588", null ],
[ "onLoad", "classmodule_1_1template__module_1_1_boswatch_module.html#a5fbab9ed6a058b089d39d3f53c7f1527", null ],
[ "doWork", "classmodule_1_1template__module_1_1_boswatch_module.html#a266810ac3b486b4340fe823390a4b866", null ],
[ "onUnload", "classmodule_1_1template__module_1_1_boswatch_module.html#a00f969c06c87ae304c65aee372d95d0a", null ]
];

View file

@ -0,0 +1,575 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.12.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>BOSWatch 3: plugin.divera.BoswatchPlugin Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">BOSWatch 3
</div>
<div id="projectbrief">Python Script to receive and decode German BOS Information with rtl_fm and multimon-NG</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.12.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('classplugin_1_1divera_1_1_boswatch_plugin.html',''); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> </div>
<div class="headertitle"><div class="title">plugin.divera.BoswatchPlugin Class Reference</div></div>
</div><!--header-->
<div class="contents">
<p>Description of the Plugin.
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a15699267f01c1dcf595832ceaf3a717c" id="r_a15699267f01c1dcf595832ceaf3a717c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a15699267f01c1dcf595832ceaf3a717c">__init__</a> (self, <a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a5c82d6def9c98bd482fa88248c4f355c">config</a>)</td></tr>
<tr class="memdesc:a15699267f01c1dcf595832ceaf3a717c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Do not change anything here! <br /></td></tr>
<tr class="separator:a15699267f01c1dcf595832ceaf3a717c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa1c4e66999052f91bb36fb0ab049a591" id="r_aa1c4e66999052f91bb36fb0ab049a591"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aa1c4e66999052f91bb36fb0ab049a591">fms</a> (self, bwPacket)</td></tr>
<tr class="memdesc:aa1c4e66999052f91bb36fb0ab049a591"><td class="mdescLeft">&#160;</td><td class="mdescRight">Called on FMS alarm. <br /></td></tr>
<tr class="separator:aa1c4e66999052f91bb36fb0ab049a591"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aad60e175ed9d2a6832655d90e38ba179" id="r_aad60e175ed9d2a6832655d90e38ba179"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aad60e175ed9d2a6832655d90e38ba179">pocsag</a> (self, bwPacket)</td></tr>
<tr class="memdesc:aad60e175ed9d2a6832655d90e38ba179"><td class="mdescLeft">&#160;</td><td class="mdescRight">Called on POCSAG alarm. <br /></td></tr>
<tr class="separator:aad60e175ed9d2a6832655d90e38ba179"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae681c4a8b35f18cce21bab24a9b74f7c" id="r_ae681c4a8b35f18cce21bab24a9b74f7c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ae681c4a8b35f18cce21bab24a9b74f7c">zvei</a> (self, bwPacket)</td></tr>
<tr class="memdesc:ae681c4a8b35f18cce21bab24a9b74f7c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Called on ZVEI alarm. <br /></td></tr>
<tr class="separator:ae681c4a8b35f18cce21bab24a9b74f7c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a95a7f19773431bec715f2f293caf8d85" id="r_a95a7f19773431bec715f2f293caf8d85"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a95a7f19773431bec715f2f293caf8d85">msg</a> (self, bwPacket)</td></tr>
<tr class="memdesc:a95a7f19773431bec715f2f293caf8d85"><td class="mdescLeft">&#160;</td><td class="mdescRight">Called on MSG packet. <br /></td></tr>
<tr class="separator:a95a7f19773431bec715f2f293caf8d85"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classplugin_1_1plugin_base_1_1_plugin_base"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pub_methods_classplugin_1_1plugin_base_1_1_plugin_base')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html">plugin.pluginBase.PluginBase</a></td></tr>
<tr class="memitem:a2fc30d6a8691b7b1c2b7c1431a6dfa67 inherit pub_methods_classplugin_1_1plugin_base_1_1_plugin_base" id="r_a2fc30d6a8691b7b1c2b7c1431a6dfa67"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a2fc30d6a8691b7b1c2b7c1431a6dfa67">onLoad</a> (self)</td></tr>
<tr class="memdesc:a2fc30d6a8691b7b1c2b7c1431a6dfa67 inherit pub_methods_classplugin_1_1plugin_base_1_1_plugin_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Called by import of the plugin can be inherited. <br /></td></tr>
<tr class="separator:a2fc30d6a8691b7b1c2b7c1431a6dfa67 inherit pub_methods_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afe097ea5f51321784754e168ac1ca6d6 inherit pub_methods_classplugin_1_1plugin_base_1_1_plugin_base" id="r_afe097ea5f51321784754e168ac1ca6d6"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#afe097ea5f51321784754e168ac1ca6d6">setup</a> (self)</td></tr>
<tr class="memdesc:afe097ea5f51321784754e168ac1ca6d6 inherit pub_methods_classplugin_1_1plugin_base_1_1_plugin_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Called before alarm can be inherited. <br /></td></tr>
<tr class="separator:afe097ea5f51321784754e168ac1ca6d6 inherit pub_methods_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afbb808defd32c1cfc2714eba2f79654c inherit pub_methods_classplugin_1_1plugin_base_1_1_plugin_base" id="r_afbb808defd32c1cfc2714eba2f79654c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#afbb808defd32c1cfc2714eba2f79654c">teardown</a> (self)</td></tr>
<tr class="memdesc:afbb808defd32c1cfc2714eba2f79654c inherit pub_methods_classplugin_1_1plugin_base_1_1_plugin_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Called after alarm can be inherited. <br /></td></tr>
<tr class="separator:afbb808defd32c1cfc2714eba2f79654c inherit pub_methods_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3b3164e45d334ca2dab14f28d352334b inherit pub_methods_classplugin_1_1plugin_base_1_1_plugin_base" id="r_a3b3164e45d334ca2dab14f28d352334b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a3b3164e45d334ca2dab14f28d352334b">onUnload</a> (self)</td></tr>
<tr class="memdesc:a3b3164e45d334ca2dab14f28d352334b inherit pub_methods_classplugin_1_1plugin_base_1_1_plugin_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Called on shutdown of boswatch can be inherited. <br /></td></tr>
<tr class="separator:a3b3164e45d334ca2dab14f28d352334b inherit pub_methods_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a75eb26af5668918fba36fd5fc795a66b inherit pub_methods_classplugin_1_1plugin_base_1_1_plugin_base" id="r_a75eb26af5668918fba36fd5fc795a66b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a75eb26af5668918fba36fd5fc795a66b">parseWildcards</a> (self, <a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a9b7266a1e9e343c185181ad273a2fde2">msg</a>)</td></tr>
<tr class="memdesc:a75eb26af5668918fba36fd5fc795a66b inherit pub_methods_classplugin_1_1plugin_base_1_1_plugin_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the message with parsed wildcards. <br /></td></tr>
<tr class="separator:a75eb26af5668918fba36fd5fc795a66b inherit pub_methods_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pro-methods" name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr class="memitem:a2bf369f81f8e4aa4497b058ce57fa9b7" id="r_a2bf369f81f8e4aa4497b058ce57fa9b7"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a2bf369f81f8e4aa4497b058ce57fa9b7">_makeRequests</a> (self, apipath, apicall)</td></tr>
<tr class="separator:a2bf369f81f8e4aa4497b058ce57fa9b7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad710304e33432b74c0e1716283bea397" id="r_ad710304e33432b74c0e1716283bea397"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ad710304e33432b74c0e1716283bea397">_asyncRequests</a> (self, url)</td></tr>
<tr class="separator:ad710304e33432b74c0e1716283bea397"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a995706093c53e10bd494c98f06c8b8cb" id="r_a995706093c53e10bd494c98f06c8b8cb"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a995706093c53e10bd494c98f06c8b8cb">_fetch</a> (self, url, session)</td></tr>
<tr class="separator:a995706093c53e10bd494c98f06c8b8cb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_methods_classplugin_1_1plugin_base_1_1_plugin_base"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pro_methods_classplugin_1_1plugin_base_1_1_plugin_base')"><img src="closed.png" alt="-"/>&#160;Protected Member Functions inherited from <a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html">plugin.pluginBase.PluginBase</a></td></tr>
<tr class="memitem:a176d74cf5854616fc0e716226d29716f inherit pro_methods_classplugin_1_1plugin_base_1_1_plugin_base" id="r_a176d74cf5854616fc0e716226d29716f"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a176d74cf5854616fc0e716226d29716f">_cleanup</a> (self)</td></tr>
<tr class="memdesc:a176d74cf5854616fc0e716226d29716f inherit pro_methods_classplugin_1_1plugin_base_1_1_plugin_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Cleanup routine calls <a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a3b3164e45d334ca2dab14f28d352334b" title="Called on shutdown of boswatch can be inherited.">onUnload()</a> directly. <br /></td></tr>
<tr class="separator:a176d74cf5854616fc0e716226d29716f inherit pro_methods_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a845b34feb0883393a1a521407ab37072 inherit pro_methods_classplugin_1_1plugin_base_1_1_plugin_base" id="r_a845b34feb0883393a1a521407ab37072"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a845b34feb0883393a1a521407ab37072">_run</a> (self, bwPacket)</td></tr>
<tr class="memdesc:a845b34feb0883393a1a521407ab37072 inherit pro_methods_classplugin_1_1plugin_base_1_1_plugin_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">start an complete running turn of an plugin. <br /></td></tr>
<tr class="separator:a845b34feb0883393a1a521407ab37072 inherit pro_methods_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3689bf4fef985b41df640c79b2eb71b2 inherit pro_methods_classplugin_1_1plugin_base_1_1_plugin_base" id="r_a3689bf4fef985b41df640c79b2eb71b2"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a3689bf4fef985b41df640c79b2eb71b2">_getStatistics</a> (self)</td></tr>
<tr class="memdesc:a3689bf4fef985b41df640c79b2eb71b2 inherit pro_methods_classplugin_1_1plugin_base_1_1_plugin_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns statistical information's from last plugin run. <br /></td></tr>
<tr class="separator:a3689bf4fef985b41df640c79b2eb71b2 inherit pro_methods_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="inherited" name="inherited"></a>
Additional Inherited Members</h2></td></tr>
<tr class="inherit_header pub_attribs_classplugin_1_1plugin_base_1_1_plugin_base"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pub_attribs_classplugin_1_1plugin_base_1_1_plugin_base')"><img src="closed.png" alt="-"/>&#160;Data Fields inherited from <a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html">plugin.pluginBase.PluginBase</a></td></tr>
<tr class="memitem:a5c82d6def9c98bd482fa88248c4f355c inherit pub_attribs_classplugin_1_1plugin_base_1_1_plugin_base" id="r_a5c82d6def9c98bd482fa88248c4f355c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a5c82d6def9c98bd482fa88248c4f355c">config</a> = config</td></tr>
<tr class="separator:a5c82d6def9c98bd482fa88248c4f355c inherit pub_attribs_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base')"><img src="closed.png" alt="-"/>&#160;Protected Attributes inherited from <a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html">plugin.pluginBase.PluginBase</a></td></tr>
<tr class="memitem:a30f6b8fcaef2e480f3c4e270ed400a05 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base" id="r_a30f6b8fcaef2e480f3c4e270ed400a05"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a30f6b8fcaef2e480f3c4e270ed400a05">_pluginName</a> = pluginName</td></tr>
<tr class="separator:a30f6b8fcaef2e480f3c4e270ed400a05 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a049f3c84ba64856a66532d60a7b3c823 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base" id="r_a049f3c84ba64856a66532d60a7b3c823"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a049f3c84ba64856a66532d60a7b3c823">_bwPacket</a> = None</td></tr>
<tr class="separator:a049f3c84ba64856a66532d60a7b3c823 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae5d1664183b8986df4c61ebc96fb8483 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base" id="r_ae5d1664183b8986df4c61ebc96fb8483"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#ae5d1664183b8986df4c61ebc96fb8483">_sumTime</a> = 0</td></tr>
<tr class="separator:ae5d1664183b8986df4c61ebc96fb8483 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a69bcc46e64dbaddf524f49adb246a491 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base" id="r_a69bcc46e64dbaddf524f49adb246a491"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a69bcc46e64dbaddf524f49adb246a491">_cumTime</a> = 0</td></tr>
<tr class="separator:a69bcc46e64dbaddf524f49adb246a491 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a55a4a34b3f98ae8162633a0caf77eea6 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base" id="r_a55a4a34b3f98ae8162633a0caf77eea6"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a55a4a34b3f98ae8162633a0caf77eea6">_setupTime</a> = 0</td></tr>
<tr class="separator:a55a4a34b3f98ae8162633a0caf77eea6 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab8555502760f06321573b32b20a07093 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base" id="r_ab8555502760f06321573b32b20a07093"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#ab8555502760f06321573b32b20a07093">_alarmTime</a> = 0</td></tr>
<tr class="separator:ab8555502760f06321573b32b20a07093 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeb241bbb7f19b71ec1d0e64be490f445 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base" id="r_aeb241bbb7f19b71ec1d0e64be490f445"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#aeb241bbb7f19b71ec1d0e64be490f445">_teardownTime</a> = 0</td></tr>
<tr class="separator:aeb241bbb7f19b71ec1d0e64be490f445 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abdb7ee79ffd6c4145fa5240b542c8187 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base" id="r_abdb7ee79ffd6c4145fa5240b542c8187"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#abdb7ee79ffd6c4145fa5240b542c8187">_runCount</a> = 0</td></tr>
<tr class="separator:abdb7ee79ffd6c4145fa5240b542c8187 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9968925b171eea70507286142e8a442d inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base" id="r_a9968925b171eea70507286142e8a442d"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a9968925b171eea70507286142e8a442d">_setupErrorCount</a> = 0</td></tr>
<tr class="separator:a9968925b171eea70507286142e8a442d inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab9145f156441739cf1cd9d1b4a5e67c9 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base" id="r_ab9145f156441739cf1cd9d1b4a5e67c9"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#ab9145f156441739cf1cd9d1b4a5e67c9">_alarmErrorCount</a> = 0</td></tr>
<tr class="separator:ab9145f156441739cf1cd9d1b4a5e67c9 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abb9f93add76f10d02c72f75f1034e2ad inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base" id="r_abb9f93add76f10d02c72f75f1034e2ad"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#abb9f93add76f10d02c72f75f1034e2ad">_teardownErrorCount</a> = 0</td></tr>
<tr class="separator:abb9f93add76f10d02c72f75f1034e2ad inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_static_attribs_classplugin_1_1plugin_base_1_1_plugin_base"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pro_static_attribs_classplugin_1_1plugin_base_1_1_plugin_base')"><img src="closed.png" alt="-"/>&#160;Static Protected Attributes inherited from <a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html">plugin.pluginBase.PluginBase</a></td></tr>
<tr class="memitem:a115d9600af538a3b7b2cf63225361cfc inherit pro_static_attribs_classplugin_1_1plugin_base_1_1_plugin_base" id="r_a115d9600af538a3b7b2cf63225361cfc"><td class="memItemLeft" align="right" valign="top">list&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a115d9600af538a3b7b2cf63225361cfc">_pluginsActive</a> = []</td></tr>
<tr class="separator:a115d9600af538a3b7b2cf63225361cfc inherit pro_static_attribs_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Description of the Plugin. </p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a15699267f01c1dcf595832ceaf3a717c" name="a15699267f01c1dcf595832ceaf3a717c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a15699267f01c1dcf595832ceaf3a717c">&#9670;&#160;</a></span>__init__()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">plugin.divera.BoswatchPlugin.__init__ </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>config</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Do not change anything here! </p>
<p>Reimplemented from <a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#ade82c0cd7c4c180dc62e5e6ca425d063">plugin.pluginBase.PluginBase</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 32</span> <span class="keyword">def </span>__init__(self, config):</div>
<div class="line"><span class="lineno"> 33</span> <span class="stringliteral">r&quot;&quot;&quot;!Do not change anything here!&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 34</span> super().__init__(__name__, config) <span class="comment"># you can access the config class on &#39;self.config&#39;</span></div>
<div class="line"><span class="lineno"> 35</span> </div>
</div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="aa1c4e66999052f91bb36fb0ab049a591" name="aa1c4e66999052f91bb36fb0ab049a591"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa1c4e66999052f91bb36fb0ab049a591">&#9670;&#160;</a></span>fms()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">plugin.divera.BoswatchPlugin.fms </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>bwPacket</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Called on FMS alarm. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">bwPacket</td><td>bwPacket instance Remove if not implemented </td></tr>
</table>
</dd>
</dl>
<p>Reimplemented from <a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#afbeb6510e88e221358df19636cffe0be">plugin.pluginBase.PluginBase</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 36</span> <span class="keyword">def </span>fms(self, bwPacket):</div>
<div class="line"><span class="lineno"> 37</span> <span class="stringliteral">r&quot;&quot;&quot;!Called on FMS alarm</span></div>
<div class="line"><span class="lineno"> 38</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 39</span><span class="stringliteral"> @param bwPacket: bwPacket instance</span></div>
<div class="line"><span class="lineno"> 40</span><span class="stringliteral"> Remove if not implemented&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 41</span> fms_data = self.config.get(<span class="stringliteral">&quot;fms&quot;</span>)</div>
<div class="line"><span class="lineno"> 42</span> apicall = urllib.parse.urlencode({</div>
<div class="line"><span class="lineno"> 43</span> <span class="stringliteral">&quot;accesskey&quot;</span>: self.config.get(<span class="stringliteral">&quot;accesskey&quot;</span>, default=<span class="stringliteral">&quot;&quot;</span>),</div>
<div class="line"><span class="lineno"> 44</span> <span class="stringliteral">&quot;vehicle_ric&quot;</span>: self.parseWildcards(fms_data.get(<span class="stringliteral">&quot;vehicle&quot;</span>, default=<span class="stringliteral">&quot;&quot;</span>)),</div>
<div class="line"><span class="lineno"> 45</span> <span class="stringliteral">&quot;status_id&quot;</span>: bwPacket.get(<span class="stringliteral">&quot;status&quot;</span>),</div>
<div class="line"><span class="lineno"> 46</span> <span class="stringliteral">&quot;status_note&quot;</span>: bwPacket.get(<span class="stringliteral">&quot;directionText&quot;</span>),</div>
<div class="line"><span class="lineno"> 47</span> <span class="stringliteral">&quot;title&quot;</span>: self.parseWildcards(fms_data.get(<span class="stringliteral">&quot;title&quot;</span>, default=<span class="stringliteral">&quot;{FMS}&quot;</span>)),</div>
<div class="line"><span class="lineno"> 48</span> <span class="stringliteral">&quot;text&quot;</span>: self.parseWildcards(fms_data.get(<span class="stringliteral">&quot;message&quot;</span>, default=<span class="stringliteral">&quot;{FMS}&quot;</span>)),</div>
<div class="line"><span class="lineno"> 49</span> <span class="stringliteral">&quot;priority&quot;</span>: fms_data.get(<span class="stringliteral">&quot;priority&quot;</span>, default=<span class="stringliteral">&quot;false&quot;</span>),</div>
<div class="line"><span class="lineno"> 50</span> })</div>
<div class="line"><span class="lineno"> 51</span> apipath = <span class="stringliteral">&quot;/api/fms&quot;</span></div>
<div class="line"><span class="lineno"> 52</span> self._makeRequests(apipath, apicall)</div>
<div class="line"><span class="lineno"> 53</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="aad60e175ed9d2a6832655d90e38ba179" name="aad60e175ed9d2a6832655d90e38ba179"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aad60e175ed9d2a6832655d90e38ba179">&#9670;&#160;</a></span>pocsag()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">plugin.divera.BoswatchPlugin.pocsag </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>bwPacket</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Called on POCSAG alarm. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">bwPacket</td><td>bwPacket instance Remove if not implemented </td></tr>
</table>
</dd>
</dl>
<p>Reimplemented from <a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a1a9a3bc59e6e2737839138f098ba4fe5">plugin.pluginBase.PluginBase</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 54</span> <span class="keyword">def </span>pocsag(self, bwPacket):</div>
<div class="line"><span class="lineno"> 55</span> <span class="stringliteral">r&quot;&quot;&quot;!Called on POCSAG alarm</span></div>
<div class="line"><span class="lineno"> 56</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 57</span><span class="stringliteral"> @param bwPacket: bwPacket instance</span></div>
<div class="line"><span class="lineno"> 58</span><span class="stringliteral"> Remove if not implemented&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 59</span> poc_data = self.config.get(<span class="stringliteral">&quot;pocsag&quot;</span>)</div>
<div class="line"><span class="lineno"> 60</span> apicall = urllib.parse.urlencode({</div>
<div class="line"><span class="lineno"> 61</span> <span class="stringliteral">&quot;accesskey&quot;</span>: self.config.get(<span class="stringliteral">&quot;accesskey&quot;</span>, default=<span class="stringliteral">&quot;&quot;</span>),</div>
<div class="line"><span class="lineno"> 62</span> <span class="stringliteral">&quot;title&quot;</span>: self.parseWildcards(poc_data.get(<span class="stringliteral">&quot;title&quot;</span>, default=<span class="stringliteral">&quot;{RIC}({SRIC})\n{MSG}&quot;</span>)),</div>
<div class="line"><span class="lineno"> 63</span> <span class="stringliteral">&quot;ric&quot;</span>: self.parseWildcards(poc_data.get(<span class="stringliteral">&quot;ric&quot;</span>, default=<span class="stringliteral">&quot;&quot;</span>)),</div>
<div class="line"><span class="lineno"> 64</span> <span class="stringliteral">&quot;text&quot;</span>: self.parseWildcards(poc_data.get(<span class="stringliteral">&quot;message&quot;</span>, default=<span class="stringliteral">&quot;{MSG}&quot;</span>)),</div>
<div class="line"><span class="lineno"> 65</span> <span class="stringliteral">&quot;priority&quot;</span>: poc_data.get(<span class="stringliteral">&quot;priority&quot;</span>, default=<span class="stringliteral">&quot;false&quot;</span>),</div>
<div class="line"><span class="lineno"> 66</span> })</div>
<div class="line"><span class="lineno"> 67</span> apipath = <span class="stringliteral">&quot;/api/alarm&quot;</span></div>
<div class="line"><span class="lineno"> 68</span> self._makeRequests(apipath, apicall)</div>
<div class="line"><span class="lineno"> 69</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="ae681c4a8b35f18cce21bab24a9b74f7c" name="ae681c4a8b35f18cce21bab24a9b74f7c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae681c4a8b35f18cce21bab24a9b74f7c">&#9670;&#160;</a></span>zvei()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">plugin.divera.BoswatchPlugin.zvei </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>bwPacket</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Called on ZVEI alarm. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">bwPacket</td><td>bwPacket instance Remove if not implemented </td></tr>
</table>
</dd>
</dl>
<p>Reimplemented from <a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#af2d08ecea66961db0fd70e79927e7b80">plugin.pluginBase.PluginBase</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 70</span> <span class="keyword">def </span>zvei(self, bwPacket):</div>
<div class="line"><span class="lineno"> 71</span> <span class="stringliteral">r&quot;&quot;&quot;!Called on ZVEI alarm</span></div>
<div class="line"><span class="lineno"> 72</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 73</span><span class="stringliteral"> @param bwPacket: bwPacket instance</span></div>
<div class="line"><span class="lineno"> 74</span><span class="stringliteral"> Remove if not implemented&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 75</span> zvei_data = self.config.get(<span class="stringliteral">&quot;zvei&quot;</span>)</div>
<div class="line"><span class="lineno"> 76</span> apicall = urllib.parse.urlencode({</div>
<div class="line"><span class="lineno"> 77</span> <span class="stringliteral">&quot;accesskey&quot;</span>: self.config.get(<span class="stringliteral">&quot;accesskey&quot;</span>, default=<span class="stringliteral">&quot;&quot;</span>),</div>
<div class="line"><span class="lineno"> 78</span> <span class="stringliteral">&quot;title&quot;</span>: self.parseWildcards(zvei_data.get(<span class="stringliteral">&quot;title&quot;</span>, default=<span class="stringliteral">&quot;{TONE}&quot;</span>)),</div>
<div class="line"><span class="lineno"> 79</span> <span class="stringliteral">&quot;ric&quot;</span>: self.parseWildcards(zvei_data.get(<span class="stringliteral">&quot;ric&quot;</span>, default=<span class="stringliteral">&quot;{TONE}&quot;</span>)),</div>
<div class="line"><span class="lineno"> 80</span> <span class="stringliteral">&quot;text&quot;</span>: self.parseWildcards(zvei_data.get(<span class="stringliteral">&quot;message&quot;</span>, default=<span class="stringliteral">&quot;{TONE}&quot;</span>)),</div>
<div class="line"><span class="lineno"> 81</span> <span class="stringliteral">&quot;priority&quot;</span>: zvei_data.get(<span class="stringliteral">&quot;priority&quot;</span>, default=<span class="stringliteral">&quot;false&quot;</span>),</div>
<div class="line"><span class="lineno"> 82</span> })</div>
<div class="line"><span class="lineno"> 83</span> apipath = <span class="stringliteral">&quot;/api/alarm&quot;</span></div>
<div class="line"><span class="lineno"> 84</span> self._makeRequests(apipath, apicall)</div>
<div class="line"><span class="lineno"> 85</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="a95a7f19773431bec715f2f293caf8d85" name="a95a7f19773431bec715f2f293caf8d85"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a95a7f19773431bec715f2f293caf8d85">&#9670;&#160;</a></span>msg()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">plugin.divera.BoswatchPlugin.msg </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>bwPacket</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Called on MSG packet. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">bwPacket</td><td>bwPacket instance Remove if not implemented </td></tr>
</table>
</dd>
</dl>
<p>Reimplemented from <a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a9b7266a1e9e343c185181ad273a2fde2">plugin.pluginBase.PluginBase</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 86</span> <span class="keyword">def </span>msg(self, bwPacket):</div>
<div class="line"><span class="lineno"> 87</span> <span class="stringliteral">r&quot;&quot;&quot;!Called on MSG packet</span></div>
<div class="line"><span class="lineno"> 88</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 89</span><span class="stringliteral"> @param bwPacket: bwPacket instance</span></div>
<div class="line"><span class="lineno"> 90</span><span class="stringliteral"> Remove if not implemented&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 91</span> msg_data = self.config.get(<span class="stringliteral">&quot;msg&quot;</span>)</div>
<div class="line"><span class="lineno"> 92</span> apicall = urllib.parse.urlencode({</div>
<div class="line"><span class="lineno"> 93</span> <span class="stringliteral">&quot;accesskey&quot;</span>: self.config.get(<span class="stringliteral">&quot;accesskey&quot;</span>, default=<span class="stringliteral">&quot;&quot;</span>),</div>
<div class="line"><span class="lineno"> 94</span> <span class="stringliteral">&quot;title&quot;</span>: self.parseWildcards(msg_data.get(<span class="stringliteral">&quot;title&quot;</span>, default=<span class="stringliteral">&quot;{MSG}&quot;</span>)),</div>
<div class="line"><span class="lineno"> 95</span> <span class="stringliteral">&quot;ric&quot;</span>: self.parseWildcards(msg_data.get(<span class="stringliteral">&quot;ric&quot;</span>, default=<span class="stringliteral">&quot;&quot;</span>)),</div>
<div class="line"><span class="lineno"> 96</span> <span class="stringliteral">&quot;text&quot;</span>: self.parseWildcards(msg_data.get(<span class="stringliteral">&quot;message&quot;</span>, default=<span class="stringliteral">&quot;{MSG}&quot;</span>)),</div>
<div class="line"><span class="lineno"> 97</span> <span class="stringliteral">&quot;priority&quot;</span>: msg_data.get(<span class="stringliteral">&quot;priority&quot;</span>, default=<span class="stringliteral">&quot;false&quot;</span>),</div>
<div class="line"><span class="lineno"> 98</span> })</div>
<div class="line"><span class="lineno"> 99</span> apipath = <span class="stringliteral">&quot;/api/alarm&quot;</span></div>
<div class="line"><span class="lineno"> 100</span> self._makeRequests(apipath, apicall)</div>
<div class="line"><span class="lineno"> 101</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="a2bf369f81f8e4aa4497b058ce57fa9b7" name="a2bf369f81f8e4aa4497b058ce57fa9b7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2bf369f81f8e4aa4497b058ce57fa9b7">&#9670;&#160;</a></span>_makeRequests()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">plugin.divera.BoswatchPlugin._makeRequests </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>apipath</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>apicall</em></span>&#160;)</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Parses wildcard urls and handles asynchronus requests
@param urls: array of urls</pre> <div class="fragment"><div class="line"><span class="lineno"> 102</span> <span class="keyword">def </span>_makeRequests(self, apipath, apicall):</div>
<div class="line"><span class="lineno"> 103</span> <span class="stringliteral">&quot;&quot;&quot;Parses wildcard urls and handles asynchronus requests</span></div>
<div class="line"><span class="lineno"> 104</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 105</span><span class="stringliteral"> @param urls: array of urls&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 106</span> url = <span class="stringliteral">&quot;https://www.divera247.com&quot;</span></div>
<div class="line"><span class="lineno"> 107</span> request = url + apipath + <span class="stringliteral">&quot;?&quot;</span> + apicall</div>
<div class="line"><span class="lineno"> 108</span> </div>
<div class="line"><span class="lineno"> 109</span> loop = asyncio.get_event_loop()</div>
<div class="line"><span class="lineno"> 110</span> </div>
<div class="line"><span class="lineno"> 111</span> future = asyncio.ensure_future(self._asyncRequests(request))</div>
<div class="line"><span class="lineno"> 112</span> loop.run_until_complete(future)</div>
<div class="line"><span class="lineno"> 113</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="ad710304e33432b74c0e1716283bea397" name="ad710304e33432b74c0e1716283bea397"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad710304e33432b74c0e1716283bea397">&#9670;&#160;</a></span>_asyncRequests()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">plugin.divera.BoswatchPlugin._asyncRequests </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>url</em></span>&#160;)</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Handles asynchronus requests
@param urls: array of urls to send requests to</pre> <div class="fragment"><div class="line"><span class="lineno"> 114</span> <span class="keyword">async def </span>_asyncRequests(self, url):</div>
<div class="line"><span class="lineno"> 115</span> <span class="stringliteral">&quot;&quot;&quot;Handles asynchronus requests</span></div>
<div class="line"><span class="lineno"> 116</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 117</span><span class="stringliteral"> @param urls: array of urls to send requests to&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 118</span> tasks = []</div>
<div class="line"><span class="lineno"> 119</span> </div>
<div class="line"><span class="lineno"> 120</span> <span class="keyword">async</span> <span class="keyword">with</span> ClientSession() <span class="keyword">as</span> session:</div>
<div class="line"><span class="lineno"> 121</span> logging.debug(<span class="stringliteral">&quot;Generated URL: [{}]&quot;</span>.format(url))</div>
<div class="line"><span class="lineno"> 122</span> task = asyncio.ensure_future(self._fetch(url, session))</div>
<div class="line"><span class="lineno"> 123</span> tasks.append(task)</div>
<div class="line"><span class="lineno"> 124</span> </div>
<div class="line"><span class="lineno"> 125</span> responses = asyncio.gather(*tasks)</div>
<div class="line"><span class="lineno"> 126</span> await responses</div>
<div class="line"><span class="lineno"> 127</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="a995706093c53e10bd494c98f06c8b8cb" name="a995706093c53e10bd494c98f06c8b8cb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a995706093c53e10bd494c98f06c8b8cb">&#9670;&#160;</a></span>_fetch()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">plugin.divera.BoswatchPlugin._fetch </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>url</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>session</em></span>&#160;)</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Fetches requests
@param url: url
@param session: Clientsession instance</pre> <div class="fragment"><div class="line"><span class="lineno"> 128</span> <span class="keyword">async def </span>_fetch(self, url, session):</div>
<div class="line"><span class="lineno"> 129</span> <span class="stringliteral">&quot;&quot;&quot;Fetches requests</span></div>
<div class="line"><span class="lineno"> 130</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 131</span><span class="stringliteral"> @param url: url</span></div>
<div class="line"><span class="lineno"> 132</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 133</span><span class="stringliteral"> @param session: Clientsession instance&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 134</span> logging.debug(<span class="stringliteral">&quot;Post URL: [{}]&quot;</span>.format(url))</div>
<div class="line"><span class="lineno"> 135</span> <span class="keyword">async</span> <span class="keyword">with</span> session.post(url) <span class="keyword">as</span> response:</div>
<div class="line"><span class="lineno"> 136</span> logging.info(<span class="stringliteral">&quot;{} returned [{}]&quot;</span>.format(response.url, response.status))</div>
<div class="line"><span class="lineno"> 137</span> <span class="keywordflow">return</span> await response.read()</div>
</div><!-- fragment -->
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespaceplugin.html">plugin</a></li><li class="navelem"><a class="el" href="namespaceplugin_1_1divera.html">divera</a></li><li class="navelem"><a class="el" href="classplugin_1_1divera_1_1_boswatch_plugin.html">BoswatchPlugin</a></li>
<li class="footer">Generated on Wed Jun 11 2025 08:24:06 for BOSWatch 3 by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
</ul>
</div>
</body>
</html>

View file

@ -0,0 +1,11 @@
var classplugin_1_1divera_1_1_boswatch_plugin =
[
[ "__init__", "classplugin_1_1divera_1_1_boswatch_plugin.html#a15699267f01c1dcf595832ceaf3a717c", null ],
[ "fms", "classplugin_1_1divera_1_1_boswatch_plugin.html#aa1c4e66999052f91bb36fb0ab049a591", null ],
[ "pocsag", "classplugin_1_1divera_1_1_boswatch_plugin.html#aad60e175ed9d2a6832655d90e38ba179", null ],
[ "zvei", "classplugin_1_1divera_1_1_boswatch_plugin.html#ae681c4a8b35f18cce21bab24a9b74f7c", null ],
[ "msg", "classplugin_1_1divera_1_1_boswatch_plugin.html#a95a7f19773431bec715f2f293caf8d85", null ],
[ "_makeRequests", "classplugin_1_1divera_1_1_boswatch_plugin.html#a2bf369f81f8e4aa4497b058ce57fa9b7", null ],
[ "_asyncRequests", "classplugin_1_1divera_1_1_boswatch_plugin.html#ad710304e33432b74c0e1716283bea397", null ],
[ "_fetch", "classplugin_1_1divera_1_1_boswatch_plugin.html#a995706093c53e10bd494c98f06c8b8cb", null ]
];

View file

@ -0,0 +1,534 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.12.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>BOSWatch 3: plugin.http.BoswatchPlugin Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">BOSWatch 3
</div>
<div id="projectbrief">Python Script to receive and decode German BOS Information with rtl_fm and multimon-NG</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.12.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('classplugin_1_1http_1_1_boswatch_plugin.html',''); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> </div>
<div class="headertitle"><div class="title">plugin.http.BoswatchPlugin Class Reference</div></div>
</div><!--header-->
<div class="contents">
<p>Description of the Plugin.
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a5a9cebdc7d9bfbb1c4655ce8df99885b" id="r_a5a9cebdc7d9bfbb1c4655ce8df99885b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a5a9cebdc7d9bfbb1c4655ce8df99885b">__init__</a> (self, <a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a5c82d6def9c98bd482fa88248c4f355c">config</a>)</td></tr>
<tr class="memdesc:a5a9cebdc7d9bfbb1c4655ce8df99885b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Do not change anything here! <br /></td></tr>
<tr class="separator:a5a9cebdc7d9bfbb1c4655ce8df99885b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9f553a502830180aeb3683c92e5ee695" id="r_a9f553a502830180aeb3683c92e5ee695"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a9f553a502830180aeb3683c92e5ee695">fms</a> (self, bwPacket)</td></tr>
<tr class="memdesc:a9f553a502830180aeb3683c92e5ee695"><td class="mdescLeft">&#160;</td><td class="mdescRight">Called on FMS alarm. <br /></td></tr>
<tr class="separator:a9f553a502830180aeb3683c92e5ee695"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aebea23ae39e04a4c9becab1405d17f57" id="r_aebea23ae39e04a4c9becab1405d17f57"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aebea23ae39e04a4c9becab1405d17f57">pocsag</a> (self, bwPacket)</td></tr>
<tr class="memdesc:aebea23ae39e04a4c9becab1405d17f57"><td class="mdescLeft">&#160;</td><td class="mdescRight">Called on POCSAG alarm. <br /></td></tr>
<tr class="separator:aebea23ae39e04a4c9becab1405d17f57"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a35d80b12f07174df5a46c52776df6946" id="r_a35d80b12f07174df5a46c52776df6946"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a35d80b12f07174df5a46c52776df6946">zvei</a> (self, bwPacket)</td></tr>
<tr class="memdesc:a35d80b12f07174df5a46c52776df6946"><td class="mdescLeft">&#160;</td><td class="mdescRight">Called on ZVEI alarm. <br /></td></tr>
<tr class="separator:a35d80b12f07174df5a46c52776df6946"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a53ff7d38082e062630f6485476c33ece" id="r_a53ff7d38082e062630f6485476c33ece"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a53ff7d38082e062630f6485476c33ece">msg</a> (self, bwPacket)</td></tr>
<tr class="memdesc:a53ff7d38082e062630f6485476c33ece"><td class="mdescLeft">&#160;</td><td class="mdescRight">Called on MSG packet. <br /></td></tr>
<tr class="separator:a53ff7d38082e062630f6485476c33ece"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classplugin_1_1plugin_base_1_1_plugin_base"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pub_methods_classplugin_1_1plugin_base_1_1_plugin_base')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html">plugin.pluginBase.PluginBase</a></td></tr>
<tr class="memitem:a2fc30d6a8691b7b1c2b7c1431a6dfa67 inherit pub_methods_classplugin_1_1plugin_base_1_1_plugin_base" id="r_a2fc30d6a8691b7b1c2b7c1431a6dfa67"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a2fc30d6a8691b7b1c2b7c1431a6dfa67">onLoad</a> (self)</td></tr>
<tr class="memdesc:a2fc30d6a8691b7b1c2b7c1431a6dfa67 inherit pub_methods_classplugin_1_1plugin_base_1_1_plugin_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Called by import of the plugin can be inherited. <br /></td></tr>
<tr class="separator:a2fc30d6a8691b7b1c2b7c1431a6dfa67 inherit pub_methods_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afe097ea5f51321784754e168ac1ca6d6 inherit pub_methods_classplugin_1_1plugin_base_1_1_plugin_base" id="r_afe097ea5f51321784754e168ac1ca6d6"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#afe097ea5f51321784754e168ac1ca6d6">setup</a> (self)</td></tr>
<tr class="memdesc:afe097ea5f51321784754e168ac1ca6d6 inherit pub_methods_classplugin_1_1plugin_base_1_1_plugin_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Called before alarm can be inherited. <br /></td></tr>
<tr class="separator:afe097ea5f51321784754e168ac1ca6d6 inherit pub_methods_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afbb808defd32c1cfc2714eba2f79654c inherit pub_methods_classplugin_1_1plugin_base_1_1_plugin_base" id="r_afbb808defd32c1cfc2714eba2f79654c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#afbb808defd32c1cfc2714eba2f79654c">teardown</a> (self)</td></tr>
<tr class="memdesc:afbb808defd32c1cfc2714eba2f79654c inherit pub_methods_classplugin_1_1plugin_base_1_1_plugin_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Called after alarm can be inherited. <br /></td></tr>
<tr class="separator:afbb808defd32c1cfc2714eba2f79654c inherit pub_methods_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3b3164e45d334ca2dab14f28d352334b inherit pub_methods_classplugin_1_1plugin_base_1_1_plugin_base" id="r_a3b3164e45d334ca2dab14f28d352334b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a3b3164e45d334ca2dab14f28d352334b">onUnload</a> (self)</td></tr>
<tr class="memdesc:a3b3164e45d334ca2dab14f28d352334b inherit pub_methods_classplugin_1_1plugin_base_1_1_plugin_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Called on shutdown of boswatch can be inherited. <br /></td></tr>
<tr class="separator:a3b3164e45d334ca2dab14f28d352334b inherit pub_methods_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a75eb26af5668918fba36fd5fc795a66b inherit pub_methods_classplugin_1_1plugin_base_1_1_plugin_base" id="r_a75eb26af5668918fba36fd5fc795a66b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a75eb26af5668918fba36fd5fc795a66b">parseWildcards</a> (self, <a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a9b7266a1e9e343c185181ad273a2fde2">msg</a>)</td></tr>
<tr class="memdesc:a75eb26af5668918fba36fd5fc795a66b inherit pub_methods_classplugin_1_1plugin_base_1_1_plugin_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the message with parsed wildcards. <br /></td></tr>
<tr class="separator:a75eb26af5668918fba36fd5fc795a66b inherit pub_methods_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pro-methods" name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr class="memitem:ab0d2721349d465674f27e7fb0ec07f52" id="r_ab0d2721349d465674f27e7fb0ec07f52"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ab0d2721349d465674f27e7fb0ec07f52">_makeRequests</a> (self, urls)</td></tr>
<tr class="separator:ab0d2721349d465674f27e7fb0ec07f52"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5e3200e56a8022a46bc3aaeab915ed74" id="r_a5e3200e56a8022a46bc3aaeab915ed74"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a5e3200e56a8022a46bc3aaeab915ed74">_asyncRequests</a> (self, urls)</td></tr>
<tr class="separator:a5e3200e56a8022a46bc3aaeab915ed74"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a201e0da093af49f002c1e6b8b6757480" id="r_a201e0da093af49f002c1e6b8b6757480"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a201e0da093af49f002c1e6b8b6757480">_fetch</a> (self, url, session)</td></tr>
<tr class="separator:a201e0da093af49f002c1e6b8b6757480"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_methods_classplugin_1_1plugin_base_1_1_plugin_base"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pro_methods_classplugin_1_1plugin_base_1_1_plugin_base')"><img src="closed.png" alt="-"/>&#160;Protected Member Functions inherited from <a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html">plugin.pluginBase.PluginBase</a></td></tr>
<tr class="memitem:a176d74cf5854616fc0e716226d29716f inherit pro_methods_classplugin_1_1plugin_base_1_1_plugin_base" id="r_a176d74cf5854616fc0e716226d29716f"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a176d74cf5854616fc0e716226d29716f">_cleanup</a> (self)</td></tr>
<tr class="memdesc:a176d74cf5854616fc0e716226d29716f inherit pro_methods_classplugin_1_1plugin_base_1_1_plugin_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Cleanup routine calls <a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a3b3164e45d334ca2dab14f28d352334b" title="Called on shutdown of boswatch can be inherited.">onUnload()</a> directly. <br /></td></tr>
<tr class="separator:a176d74cf5854616fc0e716226d29716f inherit pro_methods_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a845b34feb0883393a1a521407ab37072 inherit pro_methods_classplugin_1_1plugin_base_1_1_plugin_base" id="r_a845b34feb0883393a1a521407ab37072"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a845b34feb0883393a1a521407ab37072">_run</a> (self, bwPacket)</td></tr>
<tr class="memdesc:a845b34feb0883393a1a521407ab37072 inherit pro_methods_classplugin_1_1plugin_base_1_1_plugin_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">start an complete running turn of an plugin. <br /></td></tr>
<tr class="separator:a845b34feb0883393a1a521407ab37072 inherit pro_methods_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3689bf4fef985b41df640c79b2eb71b2 inherit pro_methods_classplugin_1_1plugin_base_1_1_plugin_base" id="r_a3689bf4fef985b41df640c79b2eb71b2"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a3689bf4fef985b41df640c79b2eb71b2">_getStatistics</a> (self)</td></tr>
<tr class="memdesc:a3689bf4fef985b41df640c79b2eb71b2 inherit pro_methods_classplugin_1_1plugin_base_1_1_plugin_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns statistical information's from last plugin run. <br /></td></tr>
<tr class="separator:a3689bf4fef985b41df640c79b2eb71b2 inherit pro_methods_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="inherited" name="inherited"></a>
Additional Inherited Members</h2></td></tr>
<tr class="inherit_header pub_attribs_classplugin_1_1plugin_base_1_1_plugin_base"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pub_attribs_classplugin_1_1plugin_base_1_1_plugin_base')"><img src="closed.png" alt="-"/>&#160;Data Fields inherited from <a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html">plugin.pluginBase.PluginBase</a></td></tr>
<tr class="memitem:a5c82d6def9c98bd482fa88248c4f355c inherit pub_attribs_classplugin_1_1plugin_base_1_1_plugin_base" id="r_a5c82d6def9c98bd482fa88248c4f355c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a5c82d6def9c98bd482fa88248c4f355c">config</a> = config</td></tr>
<tr class="separator:a5c82d6def9c98bd482fa88248c4f355c inherit pub_attribs_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base')"><img src="closed.png" alt="-"/>&#160;Protected Attributes inherited from <a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html">plugin.pluginBase.PluginBase</a></td></tr>
<tr class="memitem:a30f6b8fcaef2e480f3c4e270ed400a05 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base" id="r_a30f6b8fcaef2e480f3c4e270ed400a05"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a30f6b8fcaef2e480f3c4e270ed400a05">_pluginName</a> = pluginName</td></tr>
<tr class="separator:a30f6b8fcaef2e480f3c4e270ed400a05 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a049f3c84ba64856a66532d60a7b3c823 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base" id="r_a049f3c84ba64856a66532d60a7b3c823"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a049f3c84ba64856a66532d60a7b3c823">_bwPacket</a> = None</td></tr>
<tr class="separator:a049f3c84ba64856a66532d60a7b3c823 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae5d1664183b8986df4c61ebc96fb8483 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base" id="r_ae5d1664183b8986df4c61ebc96fb8483"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#ae5d1664183b8986df4c61ebc96fb8483">_sumTime</a> = 0</td></tr>
<tr class="separator:ae5d1664183b8986df4c61ebc96fb8483 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a69bcc46e64dbaddf524f49adb246a491 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base" id="r_a69bcc46e64dbaddf524f49adb246a491"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a69bcc46e64dbaddf524f49adb246a491">_cumTime</a> = 0</td></tr>
<tr class="separator:a69bcc46e64dbaddf524f49adb246a491 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a55a4a34b3f98ae8162633a0caf77eea6 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base" id="r_a55a4a34b3f98ae8162633a0caf77eea6"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a55a4a34b3f98ae8162633a0caf77eea6">_setupTime</a> = 0</td></tr>
<tr class="separator:a55a4a34b3f98ae8162633a0caf77eea6 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab8555502760f06321573b32b20a07093 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base" id="r_ab8555502760f06321573b32b20a07093"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#ab8555502760f06321573b32b20a07093">_alarmTime</a> = 0</td></tr>
<tr class="separator:ab8555502760f06321573b32b20a07093 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeb241bbb7f19b71ec1d0e64be490f445 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base" id="r_aeb241bbb7f19b71ec1d0e64be490f445"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#aeb241bbb7f19b71ec1d0e64be490f445">_teardownTime</a> = 0</td></tr>
<tr class="separator:aeb241bbb7f19b71ec1d0e64be490f445 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abdb7ee79ffd6c4145fa5240b542c8187 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base" id="r_abdb7ee79ffd6c4145fa5240b542c8187"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#abdb7ee79ffd6c4145fa5240b542c8187">_runCount</a> = 0</td></tr>
<tr class="separator:abdb7ee79ffd6c4145fa5240b542c8187 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9968925b171eea70507286142e8a442d inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base" id="r_a9968925b171eea70507286142e8a442d"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a9968925b171eea70507286142e8a442d">_setupErrorCount</a> = 0</td></tr>
<tr class="separator:a9968925b171eea70507286142e8a442d inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab9145f156441739cf1cd9d1b4a5e67c9 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base" id="r_ab9145f156441739cf1cd9d1b4a5e67c9"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#ab9145f156441739cf1cd9d1b4a5e67c9">_alarmErrorCount</a> = 0</td></tr>
<tr class="separator:ab9145f156441739cf1cd9d1b4a5e67c9 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abb9f93add76f10d02c72f75f1034e2ad inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base" id="r_abb9f93add76f10d02c72f75f1034e2ad"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#abb9f93add76f10d02c72f75f1034e2ad">_teardownErrorCount</a> = 0</td></tr>
<tr class="separator:abb9f93add76f10d02c72f75f1034e2ad inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_static_attribs_classplugin_1_1plugin_base_1_1_plugin_base"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pro_static_attribs_classplugin_1_1plugin_base_1_1_plugin_base')"><img src="closed.png" alt="-"/>&#160;Static Protected Attributes inherited from <a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html">plugin.pluginBase.PluginBase</a></td></tr>
<tr class="memitem:a115d9600af538a3b7b2cf63225361cfc inherit pro_static_attribs_classplugin_1_1plugin_base_1_1_plugin_base" id="r_a115d9600af538a3b7b2cf63225361cfc"><td class="memItemLeft" align="right" valign="top">list&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a115d9600af538a3b7b2cf63225361cfc">_pluginsActive</a> = []</td></tr>
<tr class="separator:a115d9600af538a3b7b2cf63225361cfc inherit pro_static_attribs_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Description of the Plugin. </p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a5a9cebdc7d9bfbb1c4655ce8df99885b" name="a5a9cebdc7d9bfbb1c4655ce8df99885b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5a9cebdc7d9bfbb1c4655ce8df99885b">&#9670;&#160;</a></span>__init__()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">plugin.http.BoswatchPlugin.__init__ </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>config</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Do not change anything here! </p>
<p>Reimplemented from <a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#ade82c0cd7c4c180dc62e5e6ca425d063">plugin.pluginBase.PluginBase</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 31</span> <span class="keyword">def </span>__init__(self, config):</div>
<div class="line"><span class="lineno"> 32</span> <span class="stringliteral">r&quot;&quot;&quot;!Do not change anything here!&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 33</span> super().__init__(__name__, config) <span class="comment"># you can access the config class on &#39;self.config&#39;</span></div>
<div class="line"><span class="lineno"> 34</span> </div>
</div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a9f553a502830180aeb3683c92e5ee695" name="a9f553a502830180aeb3683c92e5ee695"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9f553a502830180aeb3683c92e5ee695">&#9670;&#160;</a></span>fms()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">plugin.http.BoswatchPlugin.fms </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>bwPacket</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Called on FMS alarm. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">bwPacket</td><td>bwPacket instance Remove if not implemented </td></tr>
</table>
</dd>
</dl>
<p>Reimplemented from <a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#afbeb6510e88e221358df19636cffe0be">plugin.pluginBase.PluginBase</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 35</span> <span class="keyword">def </span>fms(self, bwPacket):</div>
<div class="line"><span class="lineno"> 36</span> <span class="stringliteral">r&quot;&quot;&quot;!Called on FMS alarm</span></div>
<div class="line"><span class="lineno"> 37</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 38</span><span class="stringliteral"> @param bwPacket: bwPacket instance</span></div>
<div class="line"><span class="lineno"> 39</span><span class="stringliteral"> Remove if not implemented&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 40</span> urls = self.config.get(<span class="stringliteral">&quot;fms&quot;</span>)</div>
<div class="line"><span class="lineno"> 41</span> self._makeRequests(urls)</div>
<div class="line"><span class="lineno"> 42</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="aebea23ae39e04a4c9becab1405d17f57" name="aebea23ae39e04a4c9becab1405d17f57"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aebea23ae39e04a4c9becab1405d17f57">&#9670;&#160;</a></span>pocsag()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">plugin.http.BoswatchPlugin.pocsag </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>bwPacket</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Called on POCSAG alarm. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">bwPacket</td><td>bwPacket instance Remove if not implemented </td></tr>
</table>
</dd>
</dl>
<p>Reimplemented from <a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a1a9a3bc59e6e2737839138f098ba4fe5">plugin.pluginBase.PluginBase</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 43</span> <span class="keyword">def </span>pocsag(self, bwPacket):</div>
<div class="line"><span class="lineno"> 44</span> <span class="stringliteral">r&quot;&quot;&quot;!Called on POCSAG alarm</span></div>
<div class="line"><span class="lineno"> 45</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 46</span><span class="stringliteral"> @param bwPacket: bwPacket instance</span></div>
<div class="line"><span class="lineno"> 47</span><span class="stringliteral"> Remove if not implemented&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 48</span> urls = self.config.get(<span class="stringliteral">&quot;pocsag&quot;</span>)</div>
<div class="line"><span class="lineno"> 49</span> self._makeRequests(urls)</div>
<div class="line"><span class="lineno"> 50</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="a35d80b12f07174df5a46c52776df6946" name="a35d80b12f07174df5a46c52776df6946"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a35d80b12f07174df5a46c52776df6946">&#9670;&#160;</a></span>zvei()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">plugin.http.BoswatchPlugin.zvei </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>bwPacket</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Called on ZVEI alarm. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">bwPacket</td><td>bwPacket instance Remove if not implemented </td></tr>
</table>
</dd>
</dl>
<p>Reimplemented from <a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#af2d08ecea66961db0fd70e79927e7b80">plugin.pluginBase.PluginBase</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 51</span> <span class="keyword">def </span>zvei(self, bwPacket):</div>
<div class="line"><span class="lineno"> 52</span> <span class="stringliteral">r&quot;&quot;&quot;!Called on ZVEI alarm</span></div>
<div class="line"><span class="lineno"> 53</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 54</span><span class="stringliteral"> @param bwPacket: bwPacket instance</span></div>
<div class="line"><span class="lineno"> 55</span><span class="stringliteral"> Remove if not implemented&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 56</span> urls = self.config.get(<span class="stringliteral">&quot;zvei&quot;</span>)</div>
<div class="line"><span class="lineno"> 57</span> self._makeRequests(urls)</div>
<div class="line"><span class="lineno"> 58</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="a53ff7d38082e062630f6485476c33ece" name="a53ff7d38082e062630f6485476c33ece"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a53ff7d38082e062630f6485476c33ece">&#9670;&#160;</a></span>msg()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">plugin.http.BoswatchPlugin.msg </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>bwPacket</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Called on MSG packet. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">bwPacket</td><td>bwPacket instance Remove if not implemented </td></tr>
</table>
</dd>
</dl>
<p>Reimplemented from <a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a9b7266a1e9e343c185181ad273a2fde2">plugin.pluginBase.PluginBase</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 59</span> <span class="keyword">def </span>msg(self, bwPacket):</div>
<div class="line"><span class="lineno"> 60</span> <span class="stringliteral">r&quot;&quot;&quot;!Called on MSG packet</span></div>
<div class="line"><span class="lineno"> 61</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 62</span><span class="stringliteral"> @param bwPacket: bwPacket instance</span></div>
<div class="line"><span class="lineno"> 63</span><span class="stringliteral"> Remove if not implemented&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 64</span> urls = self.config.get(<span class="stringliteral">&quot;msg&quot;</span>)</div>
<div class="line"><span class="lineno"> 65</span> self._makeRequests(urls)</div>
<div class="line"><span class="lineno"> 66</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="ab0d2721349d465674f27e7fb0ec07f52" name="ab0d2721349d465674f27e7fb0ec07f52"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab0d2721349d465674f27e7fb0ec07f52">&#9670;&#160;</a></span>_makeRequests()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">plugin.http.BoswatchPlugin._makeRequests </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>urls</em></span>&#160;)</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Parses wildcard urls and handles asynchronus requests
@param urls: array of urls</pre> <div class="fragment"><div class="line"><span class="lineno"> 67</span> <span class="keyword">def </span>_makeRequests(self, urls):</div>
<div class="line"><span class="lineno"> 68</span> <span class="stringliteral">&quot;&quot;&quot;Parses wildcard urls and handles asynchronus requests</span></div>
<div class="line"><span class="lineno"> 69</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 70</span><span class="stringliteral"> @param urls: array of urls&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 71</span> urls = [self.parseWildcards(url) <span class="keywordflow">for</span> url <span class="keywordflow">in</span> urls]</div>
<div class="line"><span class="lineno"> 72</span> </div>
<div class="line"><span class="lineno"> 73</span> loop = asyncio.get_event_loop()</div>
<div class="line"><span class="lineno"> 74</span> </div>
<div class="line"><span class="lineno"> 75</span> future = asyncio.ensure_future(self._asyncRequests(urls))</div>
<div class="line"><span class="lineno"> 76</span> loop.run_until_complete(future)</div>
<div class="line"><span class="lineno"> 77</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="a5e3200e56a8022a46bc3aaeab915ed74" name="a5e3200e56a8022a46bc3aaeab915ed74"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5e3200e56a8022a46bc3aaeab915ed74">&#9670;&#160;</a></span>_asyncRequests()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">plugin.http.BoswatchPlugin._asyncRequests </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>urls</em></span>&#160;)</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Handles asynchronus requests
@param urls: array of urls to send requests to</pre> <div class="fragment"><div class="line"><span class="lineno"> 78</span> <span class="keyword">async def </span>_asyncRequests(self, urls):</div>
<div class="line"><span class="lineno"> 79</span> <span class="stringliteral">&quot;&quot;&quot;Handles asynchronus requests</span></div>
<div class="line"><span class="lineno"> 80</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 81</span><span class="stringliteral"> @param urls: array of urls to send requests to&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 82</span> tasks = []</div>
<div class="line"><span class="lineno"> 83</span> </div>
<div class="line"><span class="lineno"> 84</span> <span class="keyword">async</span> <span class="keyword">with</span> ClientSession() <span class="keyword">as</span> session:</div>
<div class="line"><span class="lineno"> 85</span> <span class="keywordflow">for</span> url <span class="keywordflow">in</span> urls:</div>
<div class="line"><span class="lineno"> 86</span> task = asyncio.ensure_future(self._fetch(url, session))</div>
<div class="line"><span class="lineno"> 87</span> tasks.append(task)</div>
<div class="line"><span class="lineno"> 88</span> </div>
<div class="line"><span class="lineno"> 89</span> responses = asyncio.gather(*tasks)</div>
<div class="line"><span class="lineno"> 90</span> await responses</div>
<div class="line"><span class="lineno"> 91</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="a201e0da093af49f002c1e6b8b6757480" name="a201e0da093af49f002c1e6b8b6757480"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a201e0da093af49f002c1e6b8b6757480">&#9670;&#160;</a></span>_fetch()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">plugin.http.BoswatchPlugin._fetch </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>url</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>session</em></span>&#160;)</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Fetches requests
@param url: url
@param session: Clientsession instance</pre> <div class="fragment"><div class="line"><span class="lineno"> 92</span> <span class="keyword">async def </span>_fetch(self, url, session):</div>
<div class="line"><span class="lineno"> 93</span> <span class="stringliteral">&quot;&quot;&quot;Fetches requests</span></div>
<div class="line"><span class="lineno"> 94</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 95</span><span class="stringliteral"> @param url: url</span></div>
<div class="line"><span class="lineno"> 96</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 97</span><span class="stringliteral"> @param session: Clientsession instance&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 98</span> <span class="keyword">async</span> <span class="keyword">with</span> session.get(url) <span class="keyword">as</span> response:</div>
<div class="line"><span class="lineno"> 99</span> logging.info(<span class="stringliteral">&quot;{} returned [{}]&quot;</span>.format(response.url, response.status))</div>
<div class="line"><span class="lineno"> 100</span> <span class="keywordflow">return</span> await response.read()</div>
</div><!-- fragment -->
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespaceplugin.html">plugin</a></li><li class="navelem"><a class="el" href="namespaceplugin_1_1http.html">http</a></li><li class="navelem"><a class="el" href="classplugin_1_1http_1_1_boswatch_plugin.html">BoswatchPlugin</a></li>
<li class="footer">Generated on Wed Jun 11 2025 08:24:06 for BOSWatch 3 by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
</ul>
</div>
</body>
</html>

View file

@ -0,0 +1,11 @@
var classplugin_1_1http_1_1_boswatch_plugin =
[
[ "__init__", "classplugin_1_1http_1_1_boswatch_plugin.html#a5a9cebdc7d9bfbb1c4655ce8df99885b", null ],
[ "fms", "classplugin_1_1http_1_1_boswatch_plugin.html#a9f553a502830180aeb3683c92e5ee695", null ],
[ "pocsag", "classplugin_1_1http_1_1_boswatch_plugin.html#aebea23ae39e04a4c9becab1405d17f57", null ],
[ "zvei", "classplugin_1_1http_1_1_boswatch_plugin.html#a35d80b12f07174df5a46c52776df6946", null ],
[ "msg", "classplugin_1_1http_1_1_boswatch_plugin.html#a53ff7d38082e062630f6485476c33ece", null ],
[ "_makeRequests", "classplugin_1_1http_1_1_boswatch_plugin.html#ab0d2721349d465674f27e7fb0ec07f52", null ],
[ "_asyncRequests", "classplugin_1_1http_1_1_boswatch_plugin.html#a5e3200e56a8022a46bc3aaeab915ed74", null ],
[ "_fetch", "classplugin_1_1http_1_1_boswatch_plugin.html#a201e0da093af49f002c1e6b8b6757480", null ]
];

View file

@ -0,0 +1,659 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.12.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>BOSWatch 3: plugin.mysql.BoswatchPlugin Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">BOSWatch 3
</div>
<div id="projectbrief">Python Script to receive and decode German BOS Information with rtl_fm and multimon-NG</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.12.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('classplugin_1_1mysql_1_1_boswatch_plugin.html',''); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-attribs">Data Fields</a> </div>
<div class="headertitle"><div class="title">plugin.mysql.BoswatchPlugin Class Reference</div></div>
</div><!--header-->
<div class="contents">
<p>Description of the Plugin.
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:ab7dc98122deb62b02cab749b3f4fee32" id="r_ab7dc98122deb62b02cab749b3f4fee32"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ab7dc98122deb62b02cab749b3f4fee32">__init__</a> (self, <a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a5c82d6def9c98bd482fa88248c4f355c">config</a>)</td></tr>
<tr class="memdesc:ab7dc98122deb62b02cab749b3f4fee32"><td class="mdescLeft">&#160;</td><td class="mdescRight">Do not change anything here! <br /></td></tr>
<tr class="separator:ab7dc98122deb62b02cab749b3f4fee32"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af4be87c8480d01c0d7f285c5de1ad045" id="r_af4be87c8480d01c0d7f285c5de1ad045"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#af4be87c8480d01c0d7f285c5de1ad045">onLoad</a> (self)</td></tr>
<tr class="memdesc:af4be87c8480d01c0d7f285c5de1ad045"><td class="mdescLeft">&#160;</td><td class="mdescRight">Called by import of the plugin Remove if not implemented. <br /></td></tr>
<tr class="separator:af4be87c8480d01c0d7f285c5de1ad045"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aec48341c7ba834871813bfdb0c285d86" id="r_aec48341c7ba834871813bfdb0c285d86"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aec48341c7ba834871813bfdb0c285d86">setup</a> (self)</td></tr>
<tr class="memdesc:aec48341c7ba834871813bfdb0c285d86"><td class="mdescLeft">&#160;</td><td class="mdescRight">Called before alarm Remove if not implemented. <br /></td></tr>
<tr class="separator:aec48341c7ba834871813bfdb0c285d86"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adef1d378759ea53b9aebb4af72237260" id="r_adef1d378759ea53b9aebb4af72237260"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#adef1d378759ea53b9aebb4af72237260">fms</a> (self, bwPacket)</td></tr>
<tr class="memdesc:adef1d378759ea53b9aebb4af72237260"><td class="mdescLeft">&#160;</td><td class="mdescRight">Called on FMS alarm. <br /></td></tr>
<tr class="separator:adef1d378759ea53b9aebb4af72237260"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeaffdab7a2025c51d0af3151c475d1ec" id="r_aeaffdab7a2025c51d0af3151c475d1ec"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aeaffdab7a2025c51d0af3151c475d1ec">pocsag</a> (self, bwPacket)</td></tr>
<tr class="memdesc:aeaffdab7a2025c51d0af3151c475d1ec"><td class="mdescLeft">&#160;</td><td class="mdescRight">Called on POCSAG alarm. <br /></td></tr>
<tr class="separator:aeaffdab7a2025c51d0af3151c475d1ec"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a54fbd13ab387336c4261349bb252ccc3" id="r_a54fbd13ab387336c4261349bb252ccc3"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a54fbd13ab387336c4261349bb252ccc3">zvei</a> (self, bwPacket)</td></tr>
<tr class="memdesc:a54fbd13ab387336c4261349bb252ccc3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Called on ZVEI alarm. <br /></td></tr>
<tr class="separator:a54fbd13ab387336c4261349bb252ccc3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2fb3e4559927837551f192cf13754583" id="r_a2fb3e4559927837551f192cf13754583"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a2fb3e4559927837551f192cf13754583">msg</a> (self, bwPacket)</td></tr>
<tr class="memdesc:a2fb3e4559927837551f192cf13754583"><td class="mdescLeft">&#160;</td><td class="mdescRight">Called on MSG packet. <br /></td></tr>
<tr class="separator:a2fb3e4559927837551f192cf13754583"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abfa5c5279cfe58cae60af8272fb50f92" id="r_abfa5c5279cfe58cae60af8272fb50f92"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#abfa5c5279cfe58cae60af8272fb50f92">teardown</a> (self)</td></tr>
<tr class="memdesc:abfa5c5279cfe58cae60af8272fb50f92"><td class="mdescLeft">&#160;</td><td class="mdescRight">Called after alarm Remove if not implemented. <br /></td></tr>
<tr class="separator:abfa5c5279cfe58cae60af8272fb50f92"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa421e2a472ac9ac3b9a13ec6bd5a5fca" id="r_aa421e2a472ac9ac3b9a13ec6bd5a5fca"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aa421e2a472ac9ac3b9a13ec6bd5a5fca">onUnload</a> (self)</td></tr>
<tr class="memdesc:aa421e2a472ac9ac3b9a13ec6bd5a5fca"><td class="mdescLeft">&#160;</td><td class="mdescRight">Called by destruction of the plugin Remove if not implemented. <br /></td></tr>
<tr class="separator:aa421e2a472ac9ac3b9a13ec6bd5a5fca"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classplugin_1_1plugin_base_1_1_plugin_base"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pub_methods_classplugin_1_1plugin_base_1_1_plugin_base')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html">plugin.pluginBase.PluginBase</a></td></tr>
<tr class="memitem:a75eb26af5668918fba36fd5fc795a66b inherit pub_methods_classplugin_1_1plugin_base_1_1_plugin_base" id="r_a75eb26af5668918fba36fd5fc795a66b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a75eb26af5668918fba36fd5fc795a66b">parseWildcards</a> (self, <a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a9b7266a1e9e343c185181ad273a2fde2">msg</a>)</td></tr>
<tr class="memdesc:a75eb26af5668918fba36fd5fc795a66b inherit pub_methods_classplugin_1_1plugin_base_1_1_plugin_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the message with parsed wildcards. <br /></td></tr>
<tr class="separator:a75eb26af5668918fba36fd5fc795a66b inherit pub_methods_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
Data Fields</h2></td></tr>
<tr class="memitem:a15ccdf15153caab4ea4d96e599a0954c" id="r_a15ccdf15153caab4ea4d96e599a0954c"><td class="memItemLeft" align="right" valign="top">dict&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a15ccdf15153caab4ea4d96e599a0954c">sqlInserts</a></td></tr>
<tr class="separator:a15ccdf15153caab4ea4d96e599a0954c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9176bb4f142a1ca499851051b2da8684" id="r_a9176bb4f142a1ca499851051b2da8684"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a9176bb4f142a1ca499851051b2da8684">connection</a></td></tr>
<tr class="separator:a9176bb4f142a1ca499851051b2da8684"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa19e53f1b893899662c2510db9cfc4e1" id="r_aa19e53f1b893899662c2510db9cfc4e1"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aa19e53f1b893899662c2510db9cfc4e1">cursor</a> = self.connection.cursor()</td></tr>
<tr class="separator:aa19e53f1b893899662c2510db9cfc4e1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_attribs_classplugin_1_1plugin_base_1_1_plugin_base"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pub_attribs_classplugin_1_1plugin_base_1_1_plugin_base')"><img src="closed.png" alt="-"/>&#160;Data Fields inherited from <a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html">plugin.pluginBase.PluginBase</a></td></tr>
<tr class="memitem:a5c82d6def9c98bd482fa88248c4f355c inherit pub_attribs_classplugin_1_1plugin_base_1_1_plugin_base" id="r_a5c82d6def9c98bd482fa88248c4f355c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a5c82d6def9c98bd482fa88248c4f355c">config</a> = config</td></tr>
<tr class="separator:a5c82d6def9c98bd482fa88248c4f355c inherit pub_attribs_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="inherited" name="inherited"></a>
Additional Inherited Members</h2></td></tr>
<tr class="inherit_header pro_methods_classplugin_1_1plugin_base_1_1_plugin_base"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pro_methods_classplugin_1_1plugin_base_1_1_plugin_base')"><img src="closed.png" alt="-"/>&#160;Protected Member Functions inherited from <a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html">plugin.pluginBase.PluginBase</a></td></tr>
<tr class="memitem:a176d74cf5854616fc0e716226d29716f inherit pro_methods_classplugin_1_1plugin_base_1_1_plugin_base" id="r_a176d74cf5854616fc0e716226d29716f"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a176d74cf5854616fc0e716226d29716f">_cleanup</a> (self)</td></tr>
<tr class="memdesc:a176d74cf5854616fc0e716226d29716f inherit pro_methods_classplugin_1_1plugin_base_1_1_plugin_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Cleanup routine calls <a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a3b3164e45d334ca2dab14f28d352334b" title="Called on shutdown of boswatch can be inherited.">onUnload()</a> directly. <br /></td></tr>
<tr class="separator:a176d74cf5854616fc0e716226d29716f inherit pro_methods_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a845b34feb0883393a1a521407ab37072 inherit pro_methods_classplugin_1_1plugin_base_1_1_plugin_base" id="r_a845b34feb0883393a1a521407ab37072"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a845b34feb0883393a1a521407ab37072">_run</a> (self, bwPacket)</td></tr>
<tr class="memdesc:a845b34feb0883393a1a521407ab37072 inherit pro_methods_classplugin_1_1plugin_base_1_1_plugin_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">start an complete running turn of an plugin. <br /></td></tr>
<tr class="separator:a845b34feb0883393a1a521407ab37072 inherit pro_methods_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3689bf4fef985b41df640c79b2eb71b2 inherit pro_methods_classplugin_1_1plugin_base_1_1_plugin_base" id="r_a3689bf4fef985b41df640c79b2eb71b2"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a3689bf4fef985b41df640c79b2eb71b2">_getStatistics</a> (self)</td></tr>
<tr class="memdesc:a3689bf4fef985b41df640c79b2eb71b2 inherit pro_methods_classplugin_1_1plugin_base_1_1_plugin_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns statistical information's from last plugin run. <br /></td></tr>
<tr class="separator:a3689bf4fef985b41df640c79b2eb71b2 inherit pro_methods_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base')"><img src="closed.png" alt="-"/>&#160;Protected Attributes inherited from <a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html">plugin.pluginBase.PluginBase</a></td></tr>
<tr class="memitem:a30f6b8fcaef2e480f3c4e270ed400a05 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base" id="r_a30f6b8fcaef2e480f3c4e270ed400a05"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a30f6b8fcaef2e480f3c4e270ed400a05">_pluginName</a> = pluginName</td></tr>
<tr class="separator:a30f6b8fcaef2e480f3c4e270ed400a05 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a049f3c84ba64856a66532d60a7b3c823 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base" id="r_a049f3c84ba64856a66532d60a7b3c823"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a049f3c84ba64856a66532d60a7b3c823">_bwPacket</a> = None</td></tr>
<tr class="separator:a049f3c84ba64856a66532d60a7b3c823 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae5d1664183b8986df4c61ebc96fb8483 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base" id="r_ae5d1664183b8986df4c61ebc96fb8483"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#ae5d1664183b8986df4c61ebc96fb8483">_sumTime</a> = 0</td></tr>
<tr class="separator:ae5d1664183b8986df4c61ebc96fb8483 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a69bcc46e64dbaddf524f49adb246a491 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base" id="r_a69bcc46e64dbaddf524f49adb246a491"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a69bcc46e64dbaddf524f49adb246a491">_cumTime</a> = 0</td></tr>
<tr class="separator:a69bcc46e64dbaddf524f49adb246a491 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a55a4a34b3f98ae8162633a0caf77eea6 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base" id="r_a55a4a34b3f98ae8162633a0caf77eea6"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a55a4a34b3f98ae8162633a0caf77eea6">_setupTime</a> = 0</td></tr>
<tr class="separator:a55a4a34b3f98ae8162633a0caf77eea6 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab8555502760f06321573b32b20a07093 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base" id="r_ab8555502760f06321573b32b20a07093"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#ab8555502760f06321573b32b20a07093">_alarmTime</a> = 0</td></tr>
<tr class="separator:ab8555502760f06321573b32b20a07093 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeb241bbb7f19b71ec1d0e64be490f445 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base" id="r_aeb241bbb7f19b71ec1d0e64be490f445"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#aeb241bbb7f19b71ec1d0e64be490f445">_teardownTime</a> = 0</td></tr>
<tr class="separator:aeb241bbb7f19b71ec1d0e64be490f445 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abdb7ee79ffd6c4145fa5240b542c8187 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base" id="r_abdb7ee79ffd6c4145fa5240b542c8187"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#abdb7ee79ffd6c4145fa5240b542c8187">_runCount</a> = 0</td></tr>
<tr class="separator:abdb7ee79ffd6c4145fa5240b542c8187 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9968925b171eea70507286142e8a442d inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base" id="r_a9968925b171eea70507286142e8a442d"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a9968925b171eea70507286142e8a442d">_setupErrorCount</a> = 0</td></tr>
<tr class="separator:a9968925b171eea70507286142e8a442d inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab9145f156441739cf1cd9d1b4a5e67c9 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base" id="r_ab9145f156441739cf1cd9d1b4a5e67c9"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#ab9145f156441739cf1cd9d1b4a5e67c9">_alarmErrorCount</a> = 0</td></tr>
<tr class="separator:ab9145f156441739cf1cd9d1b4a5e67c9 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abb9f93add76f10d02c72f75f1034e2ad inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base" id="r_abb9f93add76f10d02c72f75f1034e2ad"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#abb9f93add76f10d02c72f75f1034e2ad">_teardownErrorCount</a> = 0</td></tr>
<tr class="separator:abb9f93add76f10d02c72f75f1034e2ad inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_static_attribs_classplugin_1_1plugin_base_1_1_plugin_base"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pro_static_attribs_classplugin_1_1plugin_base_1_1_plugin_base')"><img src="closed.png" alt="-"/>&#160;Static Protected Attributes inherited from <a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html">plugin.pluginBase.PluginBase</a></td></tr>
<tr class="memitem:a115d9600af538a3b7b2cf63225361cfc inherit pro_static_attribs_classplugin_1_1plugin_base_1_1_plugin_base" id="r_a115d9600af538a3b7b2cf63225361cfc"><td class="memItemLeft" align="right" valign="top">list&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a115d9600af538a3b7b2cf63225361cfc">_pluginsActive</a> = []</td></tr>
<tr class="separator:a115d9600af538a3b7b2cf63225361cfc inherit pro_static_attribs_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Description of the Plugin. </p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="ab7dc98122deb62b02cab749b3f4fee32" name="ab7dc98122deb62b02cab749b3f4fee32"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab7dc98122deb62b02cab749b3f4fee32">&#9670;&#160;</a></span>__init__()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">plugin.mysql.BoswatchPlugin.__init__ </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>config</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Do not change anything here! </p>
<p>Reimplemented from <a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#ade82c0cd7c4c180dc62e5e6ca425d063">plugin.pluginBase.PluginBase</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 33</span> <span class="keyword">def </span>__init__(self, config):</div>
<div class="line"><span class="lineno"> 34</span> <span class="stringliteral">r&quot;&quot;&quot;!Do not change anything here!&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 35</span> super().__init__(__name__, config) <span class="comment"># you can access the config class on &#39;self.config&#39;</span></div>
<div class="line"><span class="lineno"> 36</span> </div>
</div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="af4be87c8480d01c0d7f285c5de1ad045" name="af4be87c8480d01c0d7f285c5de1ad045"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af4be87c8480d01c0d7f285c5de1ad045">&#9670;&#160;</a></span>onLoad()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">plugin.mysql.BoswatchPlugin.onLoad </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Called by import of the plugin Remove if not implemented. </p>
<p>Reimplemented from <a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a2fc30d6a8691b7b1c2b7c1431a6dfa67">plugin.pluginBase.PluginBase</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 37</span> <span class="keyword">def </span>onLoad(self):</div>
<div class="line"><span class="lineno"> 38</span> <span class="stringliteral">r&quot;&quot;&quot;!Called by import of the plugin</span></div>
<div class="line"><span class="lineno"> 39</span><span class="stringliteral"> Remove if not implemented&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 40</span> self.sqlInserts = {</div>
<div class="line"><span class="lineno"> 41</span> <span class="stringliteral">&quot;pocsag&quot;</span>: <span class="stringliteral">&quot;INSERT INTO boswatch (packetTimestamp, packetMode, pocsag_ric, pocsag_subric, pocsag_subricText, pocsag_message, pocsag_bitrate, serverName, serverVersion, serverBuildDate, serverBranch, clientName, clientIP, clientVersion, clientBuildDate, clientBranch, inputSource, frequency) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)&quot;</span>,</div>
<div class="line"><span class="lineno"> 42</span> <span class="stringliteral">&quot;zvei&quot;</span>: <span class="stringliteral">&quot;INSERT INTO boswatch (packetTimestamp, packetMode, zvei_tone, serverName, serverVersion, serverBuildDate, serverBranch, clientName, clientIP, clientVersion, clientBuildDate, clientBranch, inputSource, frequency) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)&quot;</span>,</div>
<div class="line"><span class="lineno"> 43</span> <span class="stringliteral">&quot;fms&quot;</span>: <span class="stringliteral">&quot;INSERT INTO boswatch (packetTimestamp, packetMode, fms_fms, fms_service, fms_country, fms_location, fms_vehicle, fms_status, fms_direction, fms_directionText, fms_tacticalInfo, serverName, serverVersion, serverBuildDate, serverBranch, clientName, clientIP, clientVersion, clientBuildDate, clientBranch, inputSource, frequency) VALUE (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)&quot;</span>,</div>
<div class="line"><span class="lineno"> 44</span> <span class="stringliteral">&quot;msg&quot;</span>: <span class="stringliteral">&quot;INSERT INTO boswatch (packetTimestamp, packetMode, serverName, serverVersion, serverBuildDate, serverBranch, clientName, clientIP, clientVersion, clientBuildDate, clientBranch, inputSource, frequency) VALUE (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)&quot;</span></div>
<div class="line"><span class="lineno"> 45</span> }</div>
<div class="line"><span class="lineno"> 46</span> </div>
<div class="line"><span class="lineno"> 47</span> self.connection = mysql.connector.connect(</div>
<div class="line"><span class="lineno"> 48</span> host=self.config.get(<span class="stringliteral">&quot;host&quot;</span>),</div>
<div class="line"><span class="lineno"> 49</span> user=self.config.get(<span class="stringliteral">&quot;user&quot;</span>),</div>
<div class="line"><span class="lineno"> 50</span> password=self.config.get(<span class="stringliteral">&quot;password&quot;</span>),</div>
<div class="line"><span class="lineno"> 51</span> database=self.config.get(<span class="stringliteral">&quot;database&quot;</span>),</div>
<div class="line"><span class="lineno"> 52</span> )</div>
<div class="line"><span class="lineno"> 53</span> </div>
<div class="line"><span class="lineno"> 54</span> self.cursor = self.connection.cursor()</div>
<div class="line"><span class="lineno"> 55</span> self.cursor.execute(<span class="stringliteral">&quot;SHOW TABLES LIKE &#39;boswatch&#39;&quot;</span>)</div>
<div class="line"><span class="lineno"> 56</span> </div>
<div class="line"><span class="lineno"> 57</span> <span class="keywordflow">if</span> self.cursor.fetchone() <span class="keywordflow">is</span> <span class="keywordtype">None</span>:</div>
<div class="line"><span class="lineno"> 58</span> <span class="keyword">with</span> open(<span class="stringliteral">&#39;init_db.sql&#39;</span>) <span class="keyword">as</span> f:</div>
<div class="line"><span class="lineno"> 59</span> <span class="keywordflow">for</span> stmnt <span class="keywordflow">in</span> f.read().split(<span class="stringliteral">&#39;;&#39;</span>):</div>
<div class="line"><span class="lineno"> 60</span> self.cursor.execute(stmnt)</div>
<div class="line"><span class="lineno"> 61</span> self.connection.commit()</div>
<div class="line"><span class="lineno"> 62</span> </div>
<div class="line"><span class="lineno"> 63</span> self.cursor.close()</div>
<div class="line"><span class="lineno"> 64</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="aec48341c7ba834871813bfdb0c285d86" name="aec48341c7ba834871813bfdb0c285d86"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aec48341c7ba834871813bfdb0c285d86">&#9670;&#160;</a></span>setup()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">plugin.mysql.BoswatchPlugin.setup </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Called before alarm Remove if not implemented. </p>
<p>Reimplemented from <a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#afe097ea5f51321784754e168ac1ca6d6">plugin.pluginBase.PluginBase</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 65</span> <span class="keyword">def </span>setup(self):</div>
<div class="line"><span class="lineno"> 66</span> <span class="stringliteral">r&quot;&quot;&quot;!Called before alarm</span></div>
<div class="line"><span class="lineno"> 67</span><span class="stringliteral"> Remove if not implemented&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 68</span> <span class="keywordflow">try</span>:</div>
<div class="line"><span class="lineno"> 69</span> self.connection.ping(reconnect=<span class="keyword">True</span>, attempts=3, delay=2)</div>
<div class="line"><span class="lineno"> 70</span> <span class="keywordflow">except</span> mysql.connector.Error:</div>
<div class="line"><span class="lineno"> 71</span> logging.warning(<span class="stringliteral">&quot;Connection was down, trying to reconnect...&quot;</span>)</div>
<div class="line"><span class="lineno"> 72</span> self.onLoad()</div>
<div class="line"><span class="lineno"> 73</span> </div>
<div class="line"><span class="lineno"> 74</span> self.cursor = self.connection.cursor()</div>
<div class="line"><span class="lineno"> 75</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="adef1d378759ea53b9aebb4af72237260" name="adef1d378759ea53b9aebb4af72237260"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adef1d378759ea53b9aebb4af72237260">&#9670;&#160;</a></span>fms()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">plugin.mysql.BoswatchPlugin.fms </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>bwPacket</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Called on FMS alarm. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">bwPacket</td><td>bwPacket instance Remove if not implemented </td></tr>
</table>
</dd>
</dl>
<p>Reimplemented from <a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#afbeb6510e88e221358df19636cffe0be">plugin.pluginBase.PluginBase</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 76</span> <span class="keyword">def </span>fms(self, bwPacket):</div>
<div class="line"><span class="lineno"> 77</span> <span class="stringliteral">r&quot;&quot;&quot;!Called on FMS alarm</span></div>
<div class="line"><span class="lineno"> 78</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 79</span><span class="stringliteral"> @param bwPacket: bwPacket instance</span></div>
<div class="line"><span class="lineno"> 80</span><span class="stringliteral"> Remove if not implemented&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 81</span> val = (</div>
<div class="line"><span class="lineno"> 82</span> datetime.fromtimestamp(float(bwPacket.get(<span class="stringliteral">&quot;timestamp&quot;</span>))),</div>
<div class="line"><span class="lineno"> 83</span> bwPacket.get(<span class="stringliteral">&quot;mode&quot;</span>),</div>
<div class="line"><span class="lineno"> 84</span> bwPacket.get(<span class="stringliteral">&quot;fms&quot;</span>),</div>
<div class="line"><span class="lineno"> 85</span> bwPacket.get(<span class="stringliteral">&quot;service&quot;</span>),</div>
<div class="line"><span class="lineno"> 86</span> bwPacket.get(<span class="stringliteral">&quot;country&quot;</span>),</div>
<div class="line"><span class="lineno"> 87</span> bwPacket.get(<span class="stringliteral">&quot;location&quot;</span>),</div>
<div class="line"><span class="lineno"> 88</span> bwPacket.get(<span class="stringliteral">&quot;vehicle&quot;</span>),</div>
<div class="line"><span class="lineno"> 89</span> bwPacket.get(<span class="stringliteral">&quot;status&quot;</span>),</div>
<div class="line"><span class="lineno"> 90</span> bwPacket.get(<span class="stringliteral">&quot;direction&quot;</span>),</div>
<div class="line"><span class="lineno"> 91</span> bwPacket.get(<span class="stringliteral">&quot;directionText&quot;</span>),</div>
<div class="line"><span class="lineno"> 92</span> bwPacket.get(<span class="stringliteral">&quot;tacticalInfo&quot;</span>),</div>
<div class="line"><span class="lineno"> 93</span> bwPacket.get(<span class="stringliteral">&quot;serverName&quot;</span>),</div>
<div class="line"><span class="lineno"> 94</span> bwPacket.get(<span class="stringliteral">&quot;serverVersion&quot;</span>),</div>
<div class="line"><span class="lineno"> 95</span> bwPacket.get(<span class="stringliteral">&quot;serverBuildDate&quot;</span>),</div>
<div class="line"><span class="lineno"> 96</span> bwPacket.get(<span class="stringliteral">&quot;serverBranch&quot;</span>),</div>
<div class="line"><span class="lineno"> 97</span> bwPacket.get(<span class="stringliteral">&quot;clientName&quot;</span>),</div>
<div class="line"><span class="lineno"> 98</span> bwPacket.get(<span class="stringliteral">&quot;clientIP&quot;</span>),</div>
<div class="line"><span class="lineno"> 99</span> bwPacket.get(<span class="stringliteral">&quot;clientVersion&quot;</span>),</div>
<div class="line"><span class="lineno"> 100</span> bwPacket.get(<span class="stringliteral">&quot;clientBuildDate&quot;</span>),</div>
<div class="line"><span class="lineno"> 101</span> bwPacket.get(<span class="stringliteral">&quot;clientBranch&quot;</span>),</div>
<div class="line"><span class="lineno"> 102</span> bwPacket.get(<span class="stringliteral">&quot;inputSource&quot;</span>),</div>
<div class="line"><span class="lineno"> 103</span> bwPacket.get(<span class="stringliteral">&quot;frequency&quot;</span>)</div>
<div class="line"><span class="lineno"> 104</span> )</div>
<div class="line"><span class="lineno"> 105</span> self.cursor.execute(self.sqlInserts.get(<span class="stringliteral">&quot;fms&quot;</span>), val)</div>
<div class="line"><span class="lineno"> 106</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="aeaffdab7a2025c51d0af3151c475d1ec" name="aeaffdab7a2025c51d0af3151c475d1ec"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aeaffdab7a2025c51d0af3151c475d1ec">&#9670;&#160;</a></span>pocsag()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">plugin.mysql.BoswatchPlugin.pocsag </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>bwPacket</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Called on POCSAG alarm. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">bwPacket</td><td>bwPacket instance Remove if not implemented </td></tr>
</table>
</dd>
</dl>
<p>Reimplemented from <a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a1a9a3bc59e6e2737839138f098ba4fe5">plugin.pluginBase.PluginBase</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 107</span> <span class="keyword">def </span>pocsag(self, bwPacket):</div>
<div class="line"><span class="lineno"> 108</span> <span class="stringliteral">r&quot;&quot;&quot;!Called on POCSAG alarm</span></div>
<div class="line"><span class="lineno"> 109</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 110</span><span class="stringliteral"> @param bwPacket: bwPacket instance</span></div>
<div class="line"><span class="lineno"> 111</span><span class="stringliteral"> Remove if not implemented&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 112</span> val = (</div>
<div class="line"><span class="lineno"> 113</span> datetime.fromtimestamp(float(bwPacket.get(<span class="stringliteral">&quot;timestamp&quot;</span>))),</div>
<div class="line"><span class="lineno"> 114</span> bwPacket.get(<span class="stringliteral">&quot;mode&quot;</span>),</div>
<div class="line"><span class="lineno"> 115</span> bwPacket.get(<span class="stringliteral">&quot;ric&quot;</span>),</div>
<div class="line"><span class="lineno"> 116</span> bwPacket.get(<span class="stringliteral">&quot;subric&quot;</span>),</div>
<div class="line"><span class="lineno"> 117</span> bwPacket.get(<span class="stringliteral">&quot;subricText&quot;</span>),</div>
<div class="line"><span class="lineno"> 118</span> bwPacket.get(<span class="stringliteral">&quot;message&quot;</span>),</div>
<div class="line"><span class="lineno"> 119</span> bwPacket.get(<span class="stringliteral">&quot;bitrate&quot;</span>),</div>
<div class="line"><span class="lineno"> 120</span> bwPacket.get(<span class="stringliteral">&quot;serverName&quot;</span>),</div>
<div class="line"><span class="lineno"> 121</span> bwPacket.get(<span class="stringliteral">&quot;serverVersion&quot;</span>),</div>
<div class="line"><span class="lineno"> 122</span> bwPacket.get(<span class="stringliteral">&quot;serverBuildDate&quot;</span>),</div>
<div class="line"><span class="lineno"> 123</span> bwPacket.get(<span class="stringliteral">&quot;serverBranch&quot;</span>),</div>
<div class="line"><span class="lineno"> 124</span> bwPacket.get(<span class="stringliteral">&quot;clientName&quot;</span>),</div>
<div class="line"><span class="lineno"> 125</span> bwPacket.get(<span class="stringliteral">&quot;clientIP&quot;</span>),</div>
<div class="line"><span class="lineno"> 126</span> bwPacket.get(<span class="stringliteral">&quot;clientVersion&quot;</span>),</div>
<div class="line"><span class="lineno"> 127</span> bwPacket.get(<span class="stringliteral">&quot;clientBuildDate&quot;</span>),</div>
<div class="line"><span class="lineno"> 128</span> bwPacket.get(<span class="stringliteral">&quot;clientBranch&quot;</span>),</div>
<div class="line"><span class="lineno"> 129</span> bwPacket.get(<span class="stringliteral">&quot;inputSource&quot;</span>),</div>
<div class="line"><span class="lineno"> 130</span> bwPacket.get(<span class="stringliteral">&quot;frequency&quot;</span>)</div>
<div class="line"><span class="lineno"> 131</span> )</div>
<div class="line"><span class="lineno"> 132</span> self.cursor.execute(self.sqlInserts.get(<span class="stringliteral">&quot;pocsag&quot;</span>), val)</div>
<div class="line"><span class="lineno"> 133</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="a54fbd13ab387336c4261349bb252ccc3" name="a54fbd13ab387336c4261349bb252ccc3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a54fbd13ab387336c4261349bb252ccc3">&#9670;&#160;</a></span>zvei()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">plugin.mysql.BoswatchPlugin.zvei </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>bwPacket</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Called on ZVEI alarm. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">bwPacket</td><td>bwPacket instance Remove if not implemented </td></tr>
</table>
</dd>
</dl>
<p>Reimplemented from <a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#af2d08ecea66961db0fd70e79927e7b80">plugin.pluginBase.PluginBase</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 134</span> <span class="keyword">def </span>zvei(self, bwPacket):</div>
<div class="line"><span class="lineno"> 135</span> <span class="stringliteral">r&quot;&quot;&quot;!Called on ZVEI alarm</span></div>
<div class="line"><span class="lineno"> 136</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 137</span><span class="stringliteral"> @param bwPacket: bwPacket instance</span></div>
<div class="line"><span class="lineno"> 138</span><span class="stringliteral"> Remove if not implemented&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 139</span> val = (</div>
<div class="line"><span class="lineno"> 140</span> datetime.fromtimestamp(float(bwPacket.get(<span class="stringliteral">&quot;timestamp&quot;</span>))),</div>
<div class="line"><span class="lineno"> 141</span> bwPacket.get(<span class="stringliteral">&quot;mode&quot;</span>),</div>
<div class="line"><span class="lineno"> 142</span> bwPacket.get(<span class="stringliteral">&quot;tone&quot;</span>),</div>
<div class="line"><span class="lineno"> 143</span> bwPacket.get(<span class="stringliteral">&quot;serverName&quot;</span>),</div>
<div class="line"><span class="lineno"> 144</span> bwPacket.get(<span class="stringliteral">&quot;serverVersion&quot;</span>),</div>
<div class="line"><span class="lineno"> 145</span> bwPacket.get(<span class="stringliteral">&quot;serverBuildDate&quot;</span>),</div>
<div class="line"><span class="lineno"> 146</span> bwPacket.get(<span class="stringliteral">&quot;serverBranch&quot;</span>),</div>
<div class="line"><span class="lineno"> 147</span> bwPacket.get(<span class="stringliteral">&quot;clientName&quot;</span>),</div>
<div class="line"><span class="lineno"> 148</span> bwPacket.get(<span class="stringliteral">&quot;clientIP&quot;</span>),</div>
<div class="line"><span class="lineno"> 149</span> bwPacket.get(<span class="stringliteral">&quot;clientVersion&quot;</span>),</div>
<div class="line"><span class="lineno"> 150</span> bwPacket.get(<span class="stringliteral">&quot;clientBuildDate&quot;</span>),</div>
<div class="line"><span class="lineno"> 151</span> bwPacket.get(<span class="stringliteral">&quot;clientBranch&quot;</span>),</div>
<div class="line"><span class="lineno"> 152</span> bwPacket.get(<span class="stringliteral">&quot;inputSource&quot;</span>),</div>
<div class="line"><span class="lineno"> 153</span> bwPacket.get(<span class="stringliteral">&quot;frequency&quot;</span>)</div>
<div class="line"><span class="lineno"> 154</span> )</div>
<div class="line"><span class="lineno"> 155</span> self.cursor.execute(self.sqlInserts.get(<span class="stringliteral">&quot;pocsag&quot;</span>), val)</div>
<div class="line"><span class="lineno"> 156</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="a2fb3e4559927837551f192cf13754583" name="a2fb3e4559927837551f192cf13754583"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2fb3e4559927837551f192cf13754583">&#9670;&#160;</a></span>msg()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">plugin.mysql.BoswatchPlugin.msg </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>bwPacket</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Called on MSG packet. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">bwPacket</td><td>bwPacket instance Remove if not implemented </td></tr>
</table>
</dd>
</dl>
<p>Reimplemented from <a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a9b7266a1e9e343c185181ad273a2fde2">plugin.pluginBase.PluginBase</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 157</span> <span class="keyword">def </span>msg(self, bwPacket):</div>
<div class="line"><span class="lineno"> 158</span> <span class="stringliteral">r&quot;&quot;&quot;!Called on MSG packet</span></div>
<div class="line"><span class="lineno"> 159</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 160</span><span class="stringliteral"> @param bwPacket: bwPacket instance</span></div>
<div class="line"><span class="lineno"> 161</span><span class="stringliteral"> Remove if not implemented&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 162</span> val = (</div>
<div class="line"><span class="lineno"> 163</span> datetime.fromtimestamp(float(bwPacket.get(<span class="stringliteral">&quot;timestamp&quot;</span>))),</div>
<div class="line"><span class="lineno"> 164</span> bwPacket.get(<span class="stringliteral">&quot;mode&quot;</span>),</div>
<div class="line"><span class="lineno"> 165</span> bwPacket.get(<span class="stringliteral">&quot;serverName&quot;</span>),</div>
<div class="line"><span class="lineno"> 166</span> bwPacket.get(<span class="stringliteral">&quot;serverVersion&quot;</span>),</div>
<div class="line"><span class="lineno"> 167</span> bwPacket.get(<span class="stringliteral">&quot;serverBuildDate&quot;</span>),</div>
<div class="line"><span class="lineno"> 168</span> bwPacket.get(<span class="stringliteral">&quot;serverBranch&quot;</span>),</div>
<div class="line"><span class="lineno"> 169</span> bwPacket.get(<span class="stringliteral">&quot;clientName&quot;</span>),</div>
<div class="line"><span class="lineno"> 170</span> bwPacket.get(<span class="stringliteral">&quot;clientIP&quot;</span>),</div>
<div class="line"><span class="lineno"> 171</span> bwPacket.get(<span class="stringliteral">&quot;clientVersion&quot;</span>),</div>
<div class="line"><span class="lineno"> 172</span> bwPacket.get(<span class="stringliteral">&quot;clientBuildDate&quot;</span>),</div>
<div class="line"><span class="lineno"> 173</span> bwPacket.get(<span class="stringliteral">&quot;clientBranch&quot;</span>),</div>
<div class="line"><span class="lineno"> 174</span> bwPacket.get(<span class="stringliteral">&quot;inputSource&quot;</span>),</div>
<div class="line"><span class="lineno"> 175</span> bwPacket.get(<span class="stringliteral">&quot;frequency&quot;</span>)</div>
<div class="line"><span class="lineno"> 176</span> )</div>
<div class="line"><span class="lineno"> 177</span> self.cursor.execute(self.sqlInserts.get(<span class="stringliteral">&quot;msg&quot;</span>), val)</div>
<div class="line"><span class="lineno"> 178</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="abfa5c5279cfe58cae60af8272fb50f92" name="abfa5c5279cfe58cae60af8272fb50f92"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abfa5c5279cfe58cae60af8272fb50f92">&#9670;&#160;</a></span>teardown()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">plugin.mysql.BoswatchPlugin.teardown </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Called after alarm Remove if not implemented. </p>
<p>Reimplemented from <a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#afbb808defd32c1cfc2714eba2f79654c">plugin.pluginBase.PluginBase</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 179</span> <span class="keyword">def </span>teardown(self):</div>
<div class="line"><span class="lineno"> 180</span> <span class="stringliteral">r&quot;&quot;&quot;!Called after alarm</span></div>
<div class="line"><span class="lineno"> 181</span><span class="stringliteral"> Remove if not implemented&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 182</span> self.connection.commit()</div>
<div class="line"><span class="lineno"> 183</span> self.cursor.close()</div>
<div class="line"><span class="lineno"> 184</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="aa421e2a472ac9ac3b9a13ec6bd5a5fca" name="aa421e2a472ac9ac3b9a13ec6bd5a5fca"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa421e2a472ac9ac3b9a13ec6bd5a5fca">&#9670;&#160;</a></span>onUnload()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">plugin.mysql.BoswatchPlugin.onUnload </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Called by destruction of the plugin Remove if not implemented. </p>
<p>Reimplemented from <a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a3b3164e45d334ca2dab14f28d352334b">plugin.pluginBase.PluginBase</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 185</span> <span class="keyword">def </span>onUnload(self):</div>
<div class="line"><span class="lineno"> 186</span> <span class="stringliteral">r&quot;&quot;&quot;!Called by destruction of the plugin</span></div>
<div class="line"><span class="lineno"> 187</span><span class="stringliteral"> Remove if not implemented&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 188</span> self.connection.close()</div>
</div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">Field Documentation</h2>
<a id="a15ccdf15153caab4ea4d96e599a0954c" name="a15ccdf15153caab4ea4d96e599a0954c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a15ccdf15153caab4ea4d96e599a0954c">&#9670;&#160;</a></span>sqlInserts</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">dict plugin.mysql.BoswatchPlugin.sqlInserts</td>
</tr>
</table>
</div><div class="memdoc">
<b>Initial value:</b><div class="fragment"><div class="line">= {</div>
<div class="line"> <span class="stringliteral">&quot;pocsag&quot;</span>: <span class="stringliteral">&quot;INSERT INTO boswatch (packetTimestamp, packetMode, pocsag_ric, pocsag_subric, pocsag_subricText, pocsag_message, pocsag_bitrate, serverName, serverVersion, serverBuildDate, serverBranch, clientName, clientIP, clientVersion, clientBuildDate, clientBranch, inputSource, frequency) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)&quot;</span>,</div>
<div class="line"> <span class="stringliteral">&quot;zvei&quot;</span>: <span class="stringliteral">&quot;INSERT INTO boswatch (packetTimestamp, packetMode, zvei_tone, serverName, serverVersion, serverBuildDate, serverBranch, clientName, clientIP, clientVersion, clientBuildDate, clientBranch, inputSource, frequency) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)&quot;</span>,</div>
<div class="line"> <span class="stringliteral">&quot;fms&quot;</span>: <span class="stringliteral">&quot;INSERT INTO boswatch (packetTimestamp, packetMode, fms_fms, fms_service, fms_country, fms_location, fms_vehicle, fms_status, fms_direction, fms_directionText, fms_tacticalInfo, serverName, serverVersion, serverBuildDate, serverBranch, clientName, clientIP, clientVersion, clientBuildDate, clientBranch, inputSource, frequency) VALUE (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)&quot;</span>,</div>
<div class="line"> <span class="stringliteral">&quot;msg&quot;</span>: <span class="stringliteral">&quot;INSERT INTO boswatch (packetTimestamp, packetMode, serverName, serverVersion, serverBuildDate, serverBranch, clientName, clientIP, clientVersion, clientBuildDate, clientBranch, inputSource, frequency) VALUE (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)&quot;</span></div>
<div class="line"> }</div>
</div><!-- fragment -->
</div>
</div>
<a id="a9176bb4f142a1ca499851051b2da8684" name="a9176bb4f142a1ca499851051b2da8684"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9176bb4f142a1ca499851051b2da8684">&#9670;&#160;</a></span>connection</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">plugin.mysql.BoswatchPlugin.connection</td>
</tr>
</table>
</div><div class="memdoc">
<b>Initial value:</b><div class="fragment"><div class="line">= mysql.connector.connect(</div>
<div class="line"> host=self.config.get(<span class="stringliteral">&quot;host&quot;</span>),</div>
<div class="line"> user=self.config.get(<span class="stringliteral">&quot;user&quot;</span>),</div>
<div class="line"> password=self.config.get(<span class="stringliteral">&quot;password&quot;</span>),</div>
<div class="line"> database=self.config.get(<span class="stringliteral">&quot;database&quot;</span>),</div>
<div class="line"> )</div>
</div><!-- fragment -->
</div>
</div>
<a id="aa19e53f1b893899662c2510db9cfc4e1" name="aa19e53f1b893899662c2510db9cfc4e1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa19e53f1b893899662c2510db9cfc4e1">&#9670;&#160;</a></span>cursor</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">plugin.mysql.BoswatchPlugin.cursor = self.connection.cursor()</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespaceplugin.html">plugin</a></li><li class="navelem"><a class="el" href="namespaceplugin_1_1mysql.html">mysql</a></li><li class="navelem"><a class="el" href="classplugin_1_1mysql_1_1_boswatch_plugin.html">BoswatchPlugin</a></li>
<li class="footer">Generated on Wed Jun 11 2025 08:24:06 for BOSWatch 3 by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
</ul>
</div>
</body>
</html>

View file

@ -0,0 +1,15 @@
var classplugin_1_1mysql_1_1_boswatch_plugin =
[
[ "__init__", "classplugin_1_1mysql_1_1_boswatch_plugin.html#ab7dc98122deb62b02cab749b3f4fee32", null ],
[ "onLoad", "classplugin_1_1mysql_1_1_boswatch_plugin.html#af4be87c8480d01c0d7f285c5de1ad045", null ],
[ "setup", "classplugin_1_1mysql_1_1_boswatch_plugin.html#aec48341c7ba834871813bfdb0c285d86", null ],
[ "fms", "classplugin_1_1mysql_1_1_boswatch_plugin.html#adef1d378759ea53b9aebb4af72237260", null ],
[ "pocsag", "classplugin_1_1mysql_1_1_boswatch_plugin.html#aeaffdab7a2025c51d0af3151c475d1ec", null ],
[ "zvei", "classplugin_1_1mysql_1_1_boswatch_plugin.html#a54fbd13ab387336c4261349bb252ccc3", null ],
[ "msg", "classplugin_1_1mysql_1_1_boswatch_plugin.html#a2fb3e4559927837551f192cf13754583", null ],
[ "teardown", "classplugin_1_1mysql_1_1_boswatch_plugin.html#abfa5c5279cfe58cae60af8272fb50f92", null ],
[ "onUnload", "classplugin_1_1mysql_1_1_boswatch_plugin.html#aa421e2a472ac9ac3b9a13ec6bd5a5fca", null ],
[ "sqlInserts", "classplugin_1_1mysql_1_1_boswatch_plugin.html#a15ccdf15153caab4ea4d96e599a0954c", null ],
[ "connection", "classplugin_1_1mysql_1_1_boswatch_plugin.html#a9176bb4f142a1ca499851051b2da8684", null ],
[ "cursor", "classplugin_1_1mysql_1_1_boswatch_plugin.html#aa19e53f1b893899662c2510db9cfc4e1", null ]
];

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,29 @@
var classplugin_1_1plugin_base_1_1_plugin_base =
[
[ "__init__", "classplugin_1_1plugin_base_1_1_plugin_base.html#ade82c0cd7c4c180dc62e5e6ca425d063", null ],
[ "_cleanup", "classplugin_1_1plugin_base_1_1_plugin_base.html#a176d74cf5854616fc0e716226d29716f", null ],
[ "_run", "classplugin_1_1plugin_base_1_1_plugin_base.html#a845b34feb0883393a1a521407ab37072", null ],
[ "_getStatistics", "classplugin_1_1plugin_base_1_1_plugin_base.html#a3689bf4fef985b41df640c79b2eb71b2", null ],
[ "onLoad", "classplugin_1_1plugin_base_1_1_plugin_base.html#a2fc30d6a8691b7b1c2b7c1431a6dfa67", null ],
[ "setup", "classplugin_1_1plugin_base_1_1_plugin_base.html#afe097ea5f51321784754e168ac1ca6d6", null ],
[ "fms", "classplugin_1_1plugin_base_1_1_plugin_base.html#afbeb6510e88e221358df19636cffe0be", null ],
[ "pocsag", "classplugin_1_1plugin_base_1_1_plugin_base.html#a1a9a3bc59e6e2737839138f098ba4fe5", null ],
[ "zvei", "classplugin_1_1plugin_base_1_1_plugin_base.html#af2d08ecea66961db0fd70e79927e7b80", null ],
[ "msg", "classplugin_1_1plugin_base_1_1_plugin_base.html#a9b7266a1e9e343c185181ad273a2fde2", null ],
[ "teardown", "classplugin_1_1plugin_base_1_1_plugin_base.html#afbb808defd32c1cfc2714eba2f79654c", null ],
[ "onUnload", "classplugin_1_1plugin_base_1_1_plugin_base.html#a3b3164e45d334ca2dab14f28d352334b", null ],
[ "parseWildcards", "classplugin_1_1plugin_base_1_1_plugin_base.html#a75eb26af5668918fba36fd5fc795a66b", null ],
[ "_pluginsActive", "classplugin_1_1plugin_base_1_1_plugin_base.html#a115d9600af538a3b7b2cf63225361cfc", null ],
[ "_pluginName", "classplugin_1_1plugin_base_1_1_plugin_base.html#a30f6b8fcaef2e480f3c4e270ed400a05", null ],
[ "config", "classplugin_1_1plugin_base_1_1_plugin_base.html#a5c82d6def9c98bd482fa88248c4f355c", null ],
[ "_bwPacket", "classplugin_1_1plugin_base_1_1_plugin_base.html#a049f3c84ba64856a66532d60a7b3c823", null ],
[ "_sumTime", "classplugin_1_1plugin_base_1_1_plugin_base.html#ae5d1664183b8986df4c61ebc96fb8483", null ],
[ "_cumTime", "classplugin_1_1plugin_base_1_1_plugin_base.html#a69bcc46e64dbaddf524f49adb246a491", null ],
[ "_setupTime", "classplugin_1_1plugin_base_1_1_plugin_base.html#a55a4a34b3f98ae8162633a0caf77eea6", null ],
[ "_alarmTime", "classplugin_1_1plugin_base_1_1_plugin_base.html#ab8555502760f06321573b32b20a07093", null ],
[ "_teardownTime", "classplugin_1_1plugin_base_1_1_plugin_base.html#aeb241bbb7f19b71ec1d0e64be490f445", null ],
[ "_runCount", "classplugin_1_1plugin_base_1_1_plugin_base.html#abdb7ee79ffd6c4145fa5240b542c8187", null ],
[ "_setupErrorCount", "classplugin_1_1plugin_base_1_1_plugin_base.html#a9968925b171eea70507286142e8a442d", null ],
[ "_alarmErrorCount", "classplugin_1_1plugin_base_1_1_plugin_base.html#ab9145f156441739cf1cd9d1b4a5e67c9", null ],
[ "_teardownErrorCount", "classplugin_1_1plugin_base_1_1_plugin_base.html#abb9f93add76f10d02c72f75f1034e2ad", null ]
];

View file

@ -0,0 +1,547 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.12.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>BOSWatch 3: plugin.telegram.BoswatchPlugin Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">BOSWatch 3
</div>
<div id="projectbrief">Python Script to receive and decode German BOS Information with rtl_fm and multimon-NG</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.12.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('classplugin_1_1telegram_1_1_boswatch_plugin.html',''); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-attribs">Data Fields</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> </div>
<div class="headertitle"><div class="title">plugin.telegram.BoswatchPlugin Class Reference</div></div>
</div><!--header-->
<div class="contents">
<p>Description of the Plugin.
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a07bd64a5b06e7a16d4438dd4fd231edb" id="r_a07bd64a5b06e7a16d4438dd4fd231edb"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a07bd64a5b06e7a16d4438dd4fd231edb">__init__</a> (self, <a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a5c82d6def9c98bd482fa88248c4f355c">config</a>)</td></tr>
<tr class="memdesc:a07bd64a5b06e7a16d4438dd4fd231edb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Do not change anything here! <br /></td></tr>
<tr class="separator:a07bd64a5b06e7a16d4438dd4fd231edb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a31348dca1c54dfd0dd268ee0c80089a3" id="r_a31348dca1c54dfd0dd268ee0c80089a3"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a31348dca1c54dfd0dd268ee0c80089a3">onLoad</a> (self)</td></tr>
<tr class="memdesc:a31348dca1c54dfd0dd268ee0c80089a3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Called by import of the plugin. <br /></td></tr>
<tr class="separator:a31348dca1c54dfd0dd268ee0c80089a3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa118f52c5984d55acddb6823678bd30c" id="r_aa118f52c5984d55acddb6823678bd30c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aa118f52c5984d55acddb6823678bd30c">fms</a> (self, bwPacket)</td></tr>
<tr class="memdesc:aa118f52c5984d55acddb6823678bd30c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Called on FMS alarm. <br /></td></tr>
<tr class="separator:aa118f52c5984d55acddb6823678bd30c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adfc28616ddda41af1b7980fbb1a5b617" id="r_adfc28616ddda41af1b7980fbb1a5b617"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#adfc28616ddda41af1b7980fbb1a5b617">pocsag</a> (self, bwPacket)</td></tr>
<tr class="memdesc:adfc28616ddda41af1b7980fbb1a5b617"><td class="mdescLeft">&#160;</td><td class="mdescRight">Called on POCSAG alarm. <br /></td></tr>
<tr class="separator:adfc28616ddda41af1b7980fbb1a5b617"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afa8a57888af2b30126ae6826b1873135" id="r_afa8a57888af2b30126ae6826b1873135"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#afa8a57888af2b30126ae6826b1873135">zvei</a> (self, bwPacket)</td></tr>
<tr class="memdesc:afa8a57888af2b30126ae6826b1873135"><td class="mdescLeft">&#160;</td><td class="mdescRight">Called on ZVEI alarm. <br /></td></tr>
<tr class="separator:afa8a57888af2b30126ae6826b1873135"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa2cdc668f9e09149417a3481252f50d9" id="r_aa2cdc668f9e09149417a3481252f50d9"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aa2cdc668f9e09149417a3481252f50d9">msg</a> (self, bwPacket)</td></tr>
<tr class="memdesc:aa2cdc668f9e09149417a3481252f50d9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Called on MSG packet. <br /></td></tr>
<tr class="separator:aa2cdc668f9e09149417a3481252f50d9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classplugin_1_1plugin_base_1_1_plugin_base"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pub_methods_classplugin_1_1plugin_base_1_1_plugin_base')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html">plugin.pluginBase.PluginBase</a></td></tr>
<tr class="memitem:afe097ea5f51321784754e168ac1ca6d6 inherit pub_methods_classplugin_1_1plugin_base_1_1_plugin_base" id="r_afe097ea5f51321784754e168ac1ca6d6"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#afe097ea5f51321784754e168ac1ca6d6">setup</a> (self)</td></tr>
<tr class="memdesc:afe097ea5f51321784754e168ac1ca6d6 inherit pub_methods_classplugin_1_1plugin_base_1_1_plugin_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Called before alarm can be inherited. <br /></td></tr>
<tr class="separator:afe097ea5f51321784754e168ac1ca6d6 inherit pub_methods_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afbb808defd32c1cfc2714eba2f79654c inherit pub_methods_classplugin_1_1plugin_base_1_1_plugin_base" id="r_afbb808defd32c1cfc2714eba2f79654c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#afbb808defd32c1cfc2714eba2f79654c">teardown</a> (self)</td></tr>
<tr class="memdesc:afbb808defd32c1cfc2714eba2f79654c inherit pub_methods_classplugin_1_1plugin_base_1_1_plugin_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Called after alarm can be inherited. <br /></td></tr>
<tr class="separator:afbb808defd32c1cfc2714eba2f79654c inherit pub_methods_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3b3164e45d334ca2dab14f28d352334b inherit pub_methods_classplugin_1_1plugin_base_1_1_plugin_base" id="r_a3b3164e45d334ca2dab14f28d352334b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a3b3164e45d334ca2dab14f28d352334b">onUnload</a> (self)</td></tr>
<tr class="memdesc:a3b3164e45d334ca2dab14f28d352334b inherit pub_methods_classplugin_1_1plugin_base_1_1_plugin_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Called on shutdown of boswatch can be inherited. <br /></td></tr>
<tr class="separator:a3b3164e45d334ca2dab14f28d352334b inherit pub_methods_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a75eb26af5668918fba36fd5fc795a66b inherit pub_methods_classplugin_1_1plugin_base_1_1_plugin_base" id="r_a75eb26af5668918fba36fd5fc795a66b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a75eb26af5668918fba36fd5fc795a66b">parseWildcards</a> (self, <a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a9b7266a1e9e343c185181ad273a2fde2">msg</a>)</td></tr>
<tr class="memdesc:a75eb26af5668918fba36fd5fc795a66b inherit pub_methods_classplugin_1_1plugin_base_1_1_plugin_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the message with parsed wildcards. <br /></td></tr>
<tr class="separator:a75eb26af5668918fba36fd5fc795a66b inherit pub_methods_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
Data Fields</h2></td></tr>
<tr class="memitem:ab5d363141b79cd5a3d6c701d091c77b8" id="r_ab5d363141b79cd5a3d6c701d091c77b8"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ab5d363141b79cd5a3d6c701d091c77b8">bot</a> = <a class="el" href="classplugin_1_1telegram_1_1_m_q_bot.html">MQBot</a>(token=self.config.get(&quot;botToken&quot;, default=&quot;&quot;), request=request, mqueue=q)</td></tr>
<tr class="separator:ab5d363141b79cd5a3d6c701d091c77b8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_attribs_classplugin_1_1plugin_base_1_1_plugin_base"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pub_attribs_classplugin_1_1plugin_base_1_1_plugin_base')"><img src="closed.png" alt="-"/>&#160;Data Fields inherited from <a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html">plugin.pluginBase.PluginBase</a></td></tr>
<tr class="memitem:a5c82d6def9c98bd482fa88248c4f355c inherit pub_attribs_classplugin_1_1plugin_base_1_1_plugin_base" id="r_a5c82d6def9c98bd482fa88248c4f355c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a5c82d6def9c98bd482fa88248c4f355c">config</a> = config</td></tr>
<tr class="separator:a5c82d6def9c98bd482fa88248c4f355c inherit pub_attribs_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pro-methods" name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr class="memitem:a776065ec08ddb1412c9212a97b054596" id="r_a776065ec08ddb1412c9212a97b054596"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a776065ec08ddb1412c9212a97b054596">_sendMessage</a> (self, message)</td></tr>
<tr class="separator:a776065ec08ddb1412c9212a97b054596"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:accea7cd16ddb267acd6f393628ec23d6" id="r_accea7cd16ddb267acd6f393628ec23d6"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#accea7cd16ddb267acd6f393628ec23d6">_sendLocation</a> (self, lat, lon)</td></tr>
<tr class="separator:accea7cd16ddb267acd6f393628ec23d6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_methods_classplugin_1_1plugin_base_1_1_plugin_base"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pro_methods_classplugin_1_1plugin_base_1_1_plugin_base')"><img src="closed.png" alt="-"/>&#160;Protected Member Functions inherited from <a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html">plugin.pluginBase.PluginBase</a></td></tr>
<tr class="memitem:a176d74cf5854616fc0e716226d29716f inherit pro_methods_classplugin_1_1plugin_base_1_1_plugin_base" id="r_a176d74cf5854616fc0e716226d29716f"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a176d74cf5854616fc0e716226d29716f">_cleanup</a> (self)</td></tr>
<tr class="memdesc:a176d74cf5854616fc0e716226d29716f inherit pro_methods_classplugin_1_1plugin_base_1_1_plugin_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Cleanup routine calls <a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a3b3164e45d334ca2dab14f28d352334b" title="Called on shutdown of boswatch can be inherited.">onUnload()</a> directly. <br /></td></tr>
<tr class="separator:a176d74cf5854616fc0e716226d29716f inherit pro_methods_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a845b34feb0883393a1a521407ab37072 inherit pro_methods_classplugin_1_1plugin_base_1_1_plugin_base" id="r_a845b34feb0883393a1a521407ab37072"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a845b34feb0883393a1a521407ab37072">_run</a> (self, bwPacket)</td></tr>
<tr class="memdesc:a845b34feb0883393a1a521407ab37072 inherit pro_methods_classplugin_1_1plugin_base_1_1_plugin_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">start an complete running turn of an plugin. <br /></td></tr>
<tr class="separator:a845b34feb0883393a1a521407ab37072 inherit pro_methods_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3689bf4fef985b41df640c79b2eb71b2 inherit pro_methods_classplugin_1_1plugin_base_1_1_plugin_base" id="r_a3689bf4fef985b41df640c79b2eb71b2"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a3689bf4fef985b41df640c79b2eb71b2">_getStatistics</a> (self)</td></tr>
<tr class="memdesc:a3689bf4fef985b41df640c79b2eb71b2 inherit pro_methods_classplugin_1_1plugin_base_1_1_plugin_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns statistical information's from last plugin run. <br /></td></tr>
<tr class="separator:a3689bf4fef985b41df640c79b2eb71b2 inherit pro_methods_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="inherited" name="inherited"></a>
Additional Inherited Members</h2></td></tr>
<tr class="inherit_header pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base')"><img src="closed.png" alt="-"/>&#160;Protected Attributes inherited from <a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html">plugin.pluginBase.PluginBase</a></td></tr>
<tr class="memitem:a30f6b8fcaef2e480f3c4e270ed400a05 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base" id="r_a30f6b8fcaef2e480f3c4e270ed400a05"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a30f6b8fcaef2e480f3c4e270ed400a05">_pluginName</a> = pluginName</td></tr>
<tr class="separator:a30f6b8fcaef2e480f3c4e270ed400a05 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a049f3c84ba64856a66532d60a7b3c823 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base" id="r_a049f3c84ba64856a66532d60a7b3c823"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a049f3c84ba64856a66532d60a7b3c823">_bwPacket</a> = None</td></tr>
<tr class="separator:a049f3c84ba64856a66532d60a7b3c823 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae5d1664183b8986df4c61ebc96fb8483 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base" id="r_ae5d1664183b8986df4c61ebc96fb8483"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#ae5d1664183b8986df4c61ebc96fb8483">_sumTime</a> = 0</td></tr>
<tr class="separator:ae5d1664183b8986df4c61ebc96fb8483 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a69bcc46e64dbaddf524f49adb246a491 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base" id="r_a69bcc46e64dbaddf524f49adb246a491"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a69bcc46e64dbaddf524f49adb246a491">_cumTime</a> = 0</td></tr>
<tr class="separator:a69bcc46e64dbaddf524f49adb246a491 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a55a4a34b3f98ae8162633a0caf77eea6 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base" id="r_a55a4a34b3f98ae8162633a0caf77eea6"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a55a4a34b3f98ae8162633a0caf77eea6">_setupTime</a> = 0</td></tr>
<tr class="separator:a55a4a34b3f98ae8162633a0caf77eea6 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab8555502760f06321573b32b20a07093 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base" id="r_ab8555502760f06321573b32b20a07093"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#ab8555502760f06321573b32b20a07093">_alarmTime</a> = 0</td></tr>
<tr class="separator:ab8555502760f06321573b32b20a07093 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeb241bbb7f19b71ec1d0e64be490f445 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base" id="r_aeb241bbb7f19b71ec1d0e64be490f445"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#aeb241bbb7f19b71ec1d0e64be490f445">_teardownTime</a> = 0</td></tr>
<tr class="separator:aeb241bbb7f19b71ec1d0e64be490f445 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abdb7ee79ffd6c4145fa5240b542c8187 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base" id="r_abdb7ee79ffd6c4145fa5240b542c8187"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#abdb7ee79ffd6c4145fa5240b542c8187">_runCount</a> = 0</td></tr>
<tr class="separator:abdb7ee79ffd6c4145fa5240b542c8187 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9968925b171eea70507286142e8a442d inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base" id="r_a9968925b171eea70507286142e8a442d"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a9968925b171eea70507286142e8a442d">_setupErrorCount</a> = 0</td></tr>
<tr class="separator:a9968925b171eea70507286142e8a442d inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab9145f156441739cf1cd9d1b4a5e67c9 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base" id="r_ab9145f156441739cf1cd9d1b4a5e67c9"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#ab9145f156441739cf1cd9d1b4a5e67c9">_alarmErrorCount</a> = 0</td></tr>
<tr class="separator:ab9145f156441739cf1cd9d1b4a5e67c9 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abb9f93add76f10d02c72f75f1034e2ad inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base" id="r_abb9f93add76f10d02c72f75f1034e2ad"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#abb9f93add76f10d02c72f75f1034e2ad">_teardownErrorCount</a> = 0</td></tr>
<tr class="separator:abb9f93add76f10d02c72f75f1034e2ad inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_static_attribs_classplugin_1_1plugin_base_1_1_plugin_base"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pro_static_attribs_classplugin_1_1plugin_base_1_1_plugin_base')"><img src="closed.png" alt="-"/>&#160;Static Protected Attributes inherited from <a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html">plugin.pluginBase.PluginBase</a></td></tr>
<tr class="memitem:a115d9600af538a3b7b2cf63225361cfc inherit pro_static_attribs_classplugin_1_1plugin_base_1_1_plugin_base" id="r_a115d9600af538a3b7b2cf63225361cfc"><td class="memItemLeft" align="right" valign="top">list&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a115d9600af538a3b7b2cf63225361cfc">_pluginsActive</a> = []</td></tr>
<tr class="separator:a115d9600af538a3b7b2cf63225361cfc inherit pro_static_attribs_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Description of the Plugin. </p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a07bd64a5b06e7a16d4438dd4fd231edb" name="a07bd64a5b06e7a16d4438dd4fd231edb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a07bd64a5b06e7a16d4438dd4fd231edb">&#9670;&#160;</a></span>__init__()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">plugin.telegram.BoswatchPlugin.__init__ </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>config</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Do not change anything here! </p>
<p>Reimplemented from <a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#ade82c0cd7c4c180dc62e5e6ca425d063">plugin.pluginBase.PluginBase</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 56</span> <span class="keyword">def </span>__init__(self, config):</div>
<div class="line"><span class="lineno"> 57</span> <span class="stringliteral">r&quot;&quot;&quot;!Do not change anything here!&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 58</span> super().__init__(__name__, config) <span class="comment"># you can access the config class on &#39;self.config&#39;</span></div>
<div class="line"><span class="lineno"> 59</span> </div>
</div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a31348dca1c54dfd0dd268ee0c80089a3" name="a31348dca1c54dfd0dd268ee0c80089a3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a31348dca1c54dfd0dd268ee0c80089a3">&#9670;&#160;</a></span>onLoad()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">plugin.telegram.BoswatchPlugin.onLoad </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Called by import of the plugin. </p>
<p>Reimplemented from <a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a2fc30d6a8691b7b1c2b7c1431a6dfa67">plugin.pluginBase.PluginBase</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 60</span> <span class="keyword">def </span>onLoad(self):</div>
<div class="line"><span class="lineno"> 61</span> <span class="stringliteral">r&quot;&quot;&quot;!Called by import of the plugin&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 62</span> <span class="keywordflow">if</span> self.config.get(<span class="stringliteral">&quot;queue&quot;</span>, default=<span class="keyword">True</span>):</div>
<div class="line"><span class="lineno"> 63</span> q = mq.MessageQueue()</div>
<div class="line"><span class="lineno"> 64</span> request = Request(con_pool_size=8)</div>
<div class="line"><span class="lineno"> 65</span> self.bot = MQBot(token=self.config.get(<span class="stringliteral">&quot;botToken&quot;</span>, default=<span class="stringliteral">&quot;&quot;</span>), request=request, mqueue=q)</div>
<div class="line"><span class="lineno"> 66</span> print(<span class="stringliteral">&#39;queue&#39;</span>)</div>
<div class="line"><span class="lineno"> 67</span> <span class="keywordflow">else</span>:</div>
<div class="line"><span class="lineno"> 68</span> self.bot = telegram.Bot(token=self.config.get(<span class="stringliteral">&quot;botToken&quot;</span>))</div>
<div class="line"><span class="lineno"> 69</span> print(<span class="stringliteral">&#39;normal&#39;</span>)</div>
<div class="line"><span class="lineno"> 70</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="aa118f52c5984d55acddb6823678bd30c" name="aa118f52c5984d55acddb6823678bd30c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa118f52c5984d55acddb6823678bd30c">&#9670;&#160;</a></span>fms()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">plugin.telegram.BoswatchPlugin.fms </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>bwPacket</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Called on FMS alarm. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">bwPacket</td><td>bwPacket instance </td></tr>
</table>
</dd>
</dl>
<p>Reimplemented from <a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#afbeb6510e88e221358df19636cffe0be">plugin.pluginBase.PluginBase</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 71</span> <span class="keyword">def </span>fms(self, bwPacket):</div>
<div class="line"><span class="lineno"> 72</span> <span class="stringliteral">r&quot;&quot;&quot;!Called on FMS alarm</span></div>
<div class="line"><span class="lineno"> 73</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 74</span><span class="stringliteral"> @param bwPacket: bwPacket instance&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 75</span> msg = self.parseWildcards(self.config.get(<span class="stringliteral">&quot;message_fms&quot;</span>, default=<span class="stringliteral">&quot;{FMS}&quot;</span>))</div>
<div class="line"><span class="lineno"> 76</span> self._sendMessage(msg)</div>
<div class="line"><span class="lineno"> 77</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="adfc28616ddda41af1b7980fbb1a5b617" name="adfc28616ddda41af1b7980fbb1a5b617"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adfc28616ddda41af1b7980fbb1a5b617">&#9670;&#160;</a></span>pocsag()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">plugin.telegram.BoswatchPlugin.pocsag </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>bwPacket</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Called on POCSAG alarm. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">bwPacket</td><td>bwPacket instance </td></tr>
</table>
</dd>
</dl>
<p>Reimplemented from <a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a1a9a3bc59e6e2737839138f098ba4fe5">plugin.pluginBase.PluginBase</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 78</span> <span class="keyword">def </span>pocsag(self, bwPacket):</div>
<div class="line"><span class="lineno"> 79</span> <span class="stringliteral">r&quot;&quot;&quot;!Called on POCSAG alarm</span></div>
<div class="line"><span class="lineno"> 80</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 81</span><span class="stringliteral"> @param bwPacket: bwPacket instance&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 82</span> msg = self.parseWildcards(self.config.get(<span class="stringliteral">&quot;message_pocsag&quot;</span>, default=<span class="stringliteral">&quot;{RIC}({SRIC})\n{MSG}&quot;</span>))</div>
<div class="line"><span class="lineno"> 83</span> self._sendMessage(msg)</div>
<div class="line"><span class="lineno"> 84</span> </div>
<div class="line"><span class="lineno"> 85</span> <span class="keywordflow">if</span> bwPacket.get(<span class="stringliteral">&quot;lat&quot;</span>) <span class="keywordflow">is</span> <span class="keywordflow">not</span> <span class="keywordtype">None</span> <span class="keywordflow">and</span> bwPacket.get(<span class="stringliteral">&quot;lon&quot;</span>) <span class="keywordflow">is</span> <span class="keywordflow">not</span> <span class="keywordtype">None</span>:</div>
<div class="line"><span class="lineno"> 86</span> logging.debug(<span class="stringliteral">&quot;Found coordinates in packet&quot;</span>)</div>
<div class="line"><span class="lineno"> 87</span> (lat, lon) = (bwPacket.get(<span class="stringliteral">&quot;lat&quot;</span>), bwPacket.get(<span class="stringliteral">&quot;lon&quot;</span>))</div>
<div class="line"><span class="lineno"> 88</span> self._sendLocation(lat, lon)</div>
<div class="line"><span class="lineno"> 89</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="afa8a57888af2b30126ae6826b1873135" name="afa8a57888af2b30126ae6826b1873135"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afa8a57888af2b30126ae6826b1873135">&#9670;&#160;</a></span>zvei()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">plugin.telegram.BoswatchPlugin.zvei </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>bwPacket</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Called on ZVEI alarm. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">bwPacket</td><td>bwPacket instance </td></tr>
</table>
</dd>
</dl>
<p>Reimplemented from <a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#af2d08ecea66961db0fd70e79927e7b80">plugin.pluginBase.PluginBase</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 90</span> <span class="keyword">def </span>zvei(self, bwPacket):</div>
<div class="line"><span class="lineno"> 91</span> <span class="stringliteral">r&quot;&quot;&quot;!Called on ZVEI alarm</span></div>
<div class="line"><span class="lineno"> 92</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 93</span><span class="stringliteral"> @param bwPacket: bwPacket instance&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 94</span> msg = self.parseWildcards(self.config.get(<span class="stringliteral">&quot;message_zvei&quot;</span>, default=<span class="stringliteral">&quot;{TONE}&quot;</span>))</div>
<div class="line"><span class="lineno"> 95</span> self._sendMessage(msg)</div>
<div class="line"><span class="lineno"> 96</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="aa2cdc668f9e09149417a3481252f50d9" name="aa2cdc668f9e09149417a3481252f50d9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa2cdc668f9e09149417a3481252f50d9">&#9670;&#160;</a></span>msg()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">plugin.telegram.BoswatchPlugin.msg </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>bwPacket</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Called on MSG packet. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">bwPacket</td><td>bwPacket instance </td></tr>
</table>
</dd>
</dl>
<p>Reimplemented from <a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a9b7266a1e9e343c185181ad273a2fde2">plugin.pluginBase.PluginBase</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 97</span> <span class="keyword">def </span>msg(self, bwPacket):</div>
<div class="line"><span class="lineno"> 98</span> <span class="stringliteral">r&quot;&quot;&quot;!Called on MSG packet</span></div>
<div class="line"><span class="lineno"> 99</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 100</span><span class="stringliteral"> @param bwPacket: bwPacket instance&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 101</span> msg = self.parseWildcards(self.config.get(<span class="stringliteral">&quot;message_msg&quot;</span>))</div>
<div class="line"><span class="lineno"> 102</span> self._sendMessage(msg)</div>
<div class="line"><span class="lineno"> 103</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="a776065ec08ddb1412c9212a97b054596" name="a776065ec08ddb1412c9212a97b054596"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a776065ec08ddb1412c9212a97b054596">&#9670;&#160;</a></span>_sendMessage()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">plugin.telegram.BoswatchPlugin._sendMessage </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>message</em></span>&#160;)</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<div class="fragment"><div class="line"><span class="lineno"> 104</span> <span class="keyword">def </span>_sendMessage(self, message):</div>
<div class="line"><span class="lineno"> 105</span> <span class="keywordflow">for</span> chatId <span class="keywordflow">in</span> self.config.get(<span class="stringliteral">&quot;chatIds&quot;</span>, default=[]):</div>
<div class="line"><span class="lineno"> 106</span> <span class="keywordflow">try</span>:</div>
<div class="line"><span class="lineno"> 107</span> <span class="comment"># Send Message via Telegram</span></div>
<div class="line"><span class="lineno"> 108</span> logging.info(<span class="stringliteral">&quot;Sending message to &quot;</span> + chatId)</div>
<div class="line"><span class="lineno"> 109</span> self.bot.send_message(chat_id=chatId, text=message)</div>
<div class="line"><span class="lineno"> 110</span> </div>
<div class="line"><span class="lineno"> 111</span> <span class="keywordflow">except</span> Unauthorized:</div>
<div class="line"><span class="lineno"> 112</span> logging.exception(<span class="stringliteral">&quot;Error while sending Telegram Message, please Check your api-key&quot;</span>)</div>
<div class="line"><span class="lineno"> 113</span> <span class="keywordflow">except</span> (TimedOut, NetworkError):</div>
<div class="line"><span class="lineno"> 114</span> logging.exception(<span class="stringliteral">&quot;Error while sending Telegram Message, please Check your connectivity&quot;</span>)</div>
<div class="line"><span class="lineno"> 115</span> <span class="keywordflow">except</span> (BadRequest, TelegramError):</div>
<div class="line"><span class="lineno"> 116</span> logging.exception(<span class="stringliteral">&quot;Error while sending Telegram Message&quot;</span>)</div>
<div class="line"><span class="lineno"> 117</span> <span class="keywordflow">except</span> Exception <span class="keyword">as</span> e:</div>
<div class="line"><span class="lineno"> 118</span> logging.exception(<span class="stringliteral">&quot;Unknown Error while sending Telegram Message: &quot;</span> + str(type(e).__name__) + <span class="stringliteral">&quot;: &quot;</span> + str(e))</div>
<div class="line"><span class="lineno"> 119</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="accea7cd16ddb267acd6f393628ec23d6" name="accea7cd16ddb267acd6f393628ec23d6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#accea7cd16ddb267acd6f393628ec23d6">&#9670;&#160;</a></span>_sendLocation()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">plugin.telegram.BoswatchPlugin._sendLocation </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>lat</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>lon</em></span>&#160;)</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<div class="fragment"><div class="line"><span class="lineno"> 120</span> <span class="keyword">def </span>_sendLocation(self, lat, lon):</div>
<div class="line"><span class="lineno"> 121</span> <span class="keywordflow">for</span> chatId <span class="keywordflow">in</span> self.config.get(<span class="stringliteral">&quot;chatIds&quot;</span>, default=[]):</div>
<div class="line"><span class="lineno"> 122</span> <span class="keywordflow">try</span>:</div>
<div class="line"><span class="lineno"> 123</span> <span class="comment"># Send Location via Telegram</span></div>
<div class="line"><span class="lineno"> 124</span> <span class="keywordflow">if</span> lat <span class="keywordflow">is</span> <span class="keywordflow">not</span> <span class="keywordtype">None</span> <span class="keywordflow">and</span> lon <span class="keywordflow">is</span> <span class="keywordflow">not</span> <span class="keywordtype">None</span>:</div>
<div class="line"><span class="lineno"> 125</span> logging.info(<span class="stringliteral">&quot;Sending location to &quot;</span> + chatId)</div>
<div class="line"><span class="lineno"> 126</span> self.bot.sendLocation(chat_id=chatId, latitude=lat, longitude=lon)</div>
<div class="line"><span class="lineno"> 127</span> </div>
<div class="line"><span class="lineno"> 128</span> <span class="keywordflow">except</span> Unauthorized:</div>
<div class="line"><span class="lineno"> 129</span> logging.exception(<span class="stringliteral">&quot;Error while sending Telegram Message, please Check your api-key&quot;</span>)</div>
<div class="line"><span class="lineno"> 130</span> <span class="keywordflow">except</span> (TimedOut, NetworkError):</div>
<div class="line"><span class="lineno"> 131</span> logging.exception(<span class="stringliteral">&quot;Error while sending Telegram Message, please Check your connectivity&quot;</span>)</div>
<div class="line"><span class="lineno"> 132</span> <span class="keywordflow">except</span> (BadRequest, TelegramError):</div>
<div class="line"><span class="lineno"> 133</span> logging.exception(<span class="stringliteral">&quot;Error while sending Telegram Message&quot;</span>)</div>
<div class="line"><span class="lineno"> 134</span> <span class="keywordflow">except</span> Exception <span class="keyword">as</span> e:</div>
<div class="line"><span class="lineno"> 135</span> logging.exception(<span class="stringliteral">&quot;Unknown Error while sending Telegram Message: &quot;</span> + str(type(e).__name__) + <span class="stringliteral">&quot;: &quot;</span> + str(e))</div>
</div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">Field Documentation</h2>
<a id="ab5d363141b79cd5a3d6c701d091c77b8" name="ab5d363141b79cd5a3d6c701d091c77b8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab5d363141b79cd5a3d6c701d091c77b8">&#9670;&#160;</a></span>bot</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">plugin.telegram.BoswatchPlugin.bot = <a class="el" href="classplugin_1_1telegram_1_1_m_q_bot.html">MQBot</a>(token=self.config.get(&quot;botToken&quot;, default=&quot;&quot;), request=request, mqueue=q)</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespaceplugin.html">plugin</a></li><li class="navelem"><a class="el" href="namespaceplugin_1_1telegram.html">telegram</a></li><li class="navelem"><a class="el" href="classplugin_1_1telegram_1_1_boswatch_plugin.html">BoswatchPlugin</a></li>
<li class="footer">Generated on Wed Jun 11 2025 08:24:06 for BOSWatch 3 by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
</ul>
</div>
</body>
</html>

View file

@ -0,0 +1,12 @@
var classplugin_1_1telegram_1_1_boswatch_plugin =
[
[ "__init__", "classplugin_1_1telegram_1_1_boswatch_plugin.html#a07bd64a5b06e7a16d4438dd4fd231edb", null ],
[ "onLoad", "classplugin_1_1telegram_1_1_boswatch_plugin.html#a31348dca1c54dfd0dd268ee0c80089a3", null ],
[ "fms", "classplugin_1_1telegram_1_1_boswatch_plugin.html#aa118f52c5984d55acddb6823678bd30c", null ],
[ "pocsag", "classplugin_1_1telegram_1_1_boswatch_plugin.html#adfc28616ddda41af1b7980fbb1a5b617", null ],
[ "zvei", "classplugin_1_1telegram_1_1_boswatch_plugin.html#afa8a57888af2b30126ae6826b1873135", null ],
[ "msg", "classplugin_1_1telegram_1_1_boswatch_plugin.html#aa2cdc668f9e09149417a3481252f50d9", null ],
[ "_sendMessage", "classplugin_1_1telegram_1_1_boswatch_plugin.html#a776065ec08ddb1412c9212a97b054596", null ],
[ "_sendLocation", "classplugin_1_1telegram_1_1_boswatch_plugin.html#accea7cd16ddb267acd6f393628ec23d6", null ],
[ "bot", "classplugin_1_1telegram_1_1_boswatch_plugin.html#ab5d363141b79cd5a3d6c701d091c77b8", null ]
];

View file

@ -0,0 +1,285 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.12.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>BOSWatch 3: plugin.telegram.MQBot Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">BOSWatch 3
</div>
<div id="projectbrief">Python Script to receive and decode German BOS Information with rtl_fm and multimon-NG</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.12.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('classplugin_1_1telegram_1_1_m_q_bot.html',''); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pro-attribs">Protected Attributes</a> </div>
<div class="headertitle"><div class="title">plugin.telegram.MQBot Class Reference</div></div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a67cb2a543fc2dcf6c8e25493ee3dcd16" id="r_a67cb2a543fc2dcf6c8e25493ee3dcd16"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a67cb2a543fc2dcf6c8e25493ee3dcd16">__init__</a> (self, *args, is_queued_def=True, mqueue=None, **kwargs)</td></tr>
<tr class="separator:a67cb2a543fc2dcf6c8e25493ee3dcd16"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a83cf2befc52ad0318c6f274a4f4e7106" id="r_a83cf2befc52ad0318c6f274a4f4e7106"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a83cf2befc52ad0318c6f274a4f4e7106">__del__</a> (self)</td></tr>
<tr class="separator:a83cf2befc52ad0318c6f274a4f4e7106"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a792ef18fa266853822ec53862a32264a" id="r_a792ef18fa266853822ec53862a32264a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a792ef18fa266853822ec53862a32264a">send_message</a> (self, *args, **kwargs)</td></tr>
<tr class="separator:a792ef18fa266853822ec53862a32264a"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pro-attribs" name="pro-attribs"></a>
Protected Attributes</h2></td></tr>
<tr class="memitem:a507bb5109a57f3ae4f424deedb44c9c9" id="r_a507bb5109a57f3ae4f424deedb44c9c9"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a507bb5109a57f3ae4f424deedb44c9c9">_is_messages_queued_default</a> = is_queued_def</td></tr>
<tr class="separator:a507bb5109a57f3ae4f424deedb44c9c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9f38fd67d29650b5976e4794b324c6b1" id="r_a9f38fd67d29650b5976e4794b324c6b1"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a9f38fd67d29650b5976e4794b324c6b1">_msg_queue</a> = mqueue or mq.MessageQueue()</td></tr>
<tr class="separator:a9f38fd67d29650b5976e4794b324c6b1"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><pre class="fragment">A subclass of Bot which delegates send method handling to MQ</pre> </div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a67cb2a543fc2dcf6c8e25493ee3dcd16" name="a67cb2a543fc2dcf6c8e25493ee3dcd16"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a67cb2a543fc2dcf6c8e25493ee3dcd16">&#9670;&#160;</a></span>__init__()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">plugin.telegram.MQBot.__init__ </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">*</td> <td class="paramname"><span class="paramname"><em>args</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>is_queued_def</em></span><span class="paramdefsep"> = </span><span class="paramdefval">True</span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>mqueue</em></span><span class="paramdefsep"> = </span><span class="paramdefval">None</span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">**</td> <td class="paramname"><span class="paramname"><em>kwargs</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<div class="fragment"><div class="line"><span class="lineno"> 34</span> <span class="keyword">def </span>__init__(self, *args, is_queued_def=True, mqueue=None, **kwargs):</div>
<div class="line"><span class="lineno"> 35</span> super(MQBot, self).__init__(*args, **kwargs)</div>
<div class="line"><span class="lineno"> 36</span> <span class="comment"># below 2 attributes should be provided for decorator usage</span></div>
<div class="line"><span class="lineno"> 37</span> self._is_messages_queued_default = is_queued_def</div>
<div class="line"><span class="lineno"> 38</span> self._msg_queue = mqueue <span class="keywordflow">or</span> mq.MessageQueue()</div>
<div class="line"><span class="lineno"> 39</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="a83cf2befc52ad0318c6f274a4f4e7106" name="a83cf2befc52ad0318c6f274a4f4e7106"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a83cf2befc52ad0318c6f274a4f4e7106">&#9670;&#160;</a></span>__del__()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">plugin.telegram.MQBot.__del__ </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<div class="fragment"><div class="line"><span class="lineno"> 40</span> <span class="keyword">def </span>__del__(self):</div>
<div class="line"><span class="lineno"> 41</span> <span class="keywordflow">try</span>:</div>
<div class="line"><span class="lineno"> 42</span> self._msg_queue.stop()</div>
<div class="line"><span class="lineno"> 43</span> <span class="keywordflow">except</span>:</div>
<div class="line"><span class="lineno"> 44</span> <span class="keywordflow">pass</span></div>
<div class="line"><span class="lineno"> 45</span> </div>
</div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a792ef18fa266853822ec53862a32264a" name="a792ef18fa266853822ec53862a32264a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a792ef18fa266853822ec53862a32264a">&#9670;&#160;</a></span>send_message()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">plugin.telegram.MQBot.send_message </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">*</td> <td class="paramname"><span class="paramname"><em>args</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">**</td> <td class="paramname"><span class="paramname"><em>kwargs</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<pre class="fragment">Wrapped method would accept new `queued` and `isgroup`
OPTIONAL arguments</pre> <div class="fragment"><div class="line"><span class="lineno"> 47</span> <span class="keyword">def </span>send_message(self, *args, **kwargs):</div>
<div class="line"><span class="lineno"> 48</span> <span class="stringliteral">&#39;&#39;&#39;Wrapped method would accept new `queued` and `isgroup`</span></div>
<div class="line"><span class="lineno"> 49</span><span class="stringliteral"> OPTIONAL arguments&#39;&#39;&#39;</span></div>
<div class="line"><span class="lineno"> 50</span> <span class="keywordflow">return</span> super(MQBot, self).send_message(*args, **kwargs)</div>
<div class="line"><span class="lineno"> 51</span> </div>
<div class="line"><span class="lineno"> 52</span> </div>
</div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">Field Documentation</h2>
<a id="a507bb5109a57f3ae4f424deedb44c9c9" name="a507bb5109a57f3ae4f424deedb44c9c9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a507bb5109a57f3ae4f424deedb44c9c9">&#9670;&#160;</a></span>_is_messages_queued_default</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">plugin.telegram.MQBot._is_messages_queued_default = is_queued_def</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a9f38fd67d29650b5976e4794b324c6b1" name="a9f38fd67d29650b5976e4794b324c6b1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9f38fd67d29650b5976e4794b324c6b1">&#9670;&#160;</a></span>_msg_queue</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">plugin.telegram.MQBot._msg_queue = mqueue or mq.MessageQueue()</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespaceplugin.html">plugin</a></li><li class="navelem"><a class="el" href="namespaceplugin_1_1telegram.html">telegram</a></li><li class="navelem"><a class="el" href="classplugin_1_1telegram_1_1_m_q_bot.html">MQBot</a></li>
<li class="footer">Generated on Wed Jun 11 2025 08:24:06 for BOSWatch 3 by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
</ul>
</div>
</body>
</html>

View file

@ -0,0 +1,8 @@
var classplugin_1_1telegram_1_1_m_q_bot =
[
[ "__init__", "classplugin_1_1telegram_1_1_m_q_bot.html#a67cb2a543fc2dcf6c8e25493ee3dcd16", null ],
[ "__del__", "classplugin_1_1telegram_1_1_m_q_bot.html#a83cf2befc52ad0318c6f274a4f4e7106", null ],
[ "send_message", "classplugin_1_1telegram_1_1_m_q_bot.html#a792ef18fa266853822ec53862a32264a", null ],
[ "_is_messages_queued_default", "classplugin_1_1telegram_1_1_m_q_bot.html#a507bb5109a57f3ae4f424deedb44c9c9", null ],
[ "_msg_queue", "classplugin_1_1telegram_1_1_m_q_bot.html#a9f38fd67d29650b5976e4794b324c6b1", null ]
];

View file

@ -0,0 +1,489 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.12.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>BOSWatch 3: plugin.template_plugin.BoswatchPlugin Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">BOSWatch 3
</div>
<div id="projectbrief">Python Script to receive and decode German BOS Information with rtl_fm and multimon-NG</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.12.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('classplugin_1_1template__plugin_1_1_boswatch_plugin.html',''); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> </div>
<div class="headertitle"><div class="title">plugin.template_plugin.BoswatchPlugin Class Reference</div></div>
</div><!--header-->
<div class="contents">
<p>Description of the Plugin.
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:adc94a0cafa6b6ff4d3b837fd6ac874a4" id="r_adc94a0cafa6b6ff4d3b837fd6ac874a4"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#adc94a0cafa6b6ff4d3b837fd6ac874a4">__init__</a> (self, <a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a5c82d6def9c98bd482fa88248c4f355c">config</a>)</td></tr>
<tr class="memdesc:adc94a0cafa6b6ff4d3b837fd6ac874a4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Do not change anything here! <br /></td></tr>
<tr class="separator:adc94a0cafa6b6ff4d3b837fd6ac874a4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac2e80b20bc4e7bbdccf6c821207a70ac" id="r_ac2e80b20bc4e7bbdccf6c821207a70ac"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ac2e80b20bc4e7bbdccf6c821207a70ac">onLoad</a> (self)</td></tr>
<tr class="memdesc:ac2e80b20bc4e7bbdccf6c821207a70ac"><td class="mdescLeft">&#160;</td><td class="mdescRight">Called by import of the plugin Remove if not implemented. <br /></td></tr>
<tr class="separator:ac2e80b20bc4e7bbdccf6c821207a70ac"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7aa0048b112116e841e7aeac7c6d92a7" id="r_a7aa0048b112116e841e7aeac7c6d92a7"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a7aa0048b112116e841e7aeac7c6d92a7">setup</a> (self)</td></tr>
<tr class="memdesc:a7aa0048b112116e841e7aeac7c6d92a7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Called before alarm Remove if not implemented. <br /></td></tr>
<tr class="separator:a7aa0048b112116e841e7aeac7c6d92a7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a101a2602e3dcd19bd70bed75721219e7" id="r_a101a2602e3dcd19bd70bed75721219e7"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a101a2602e3dcd19bd70bed75721219e7">fms</a> (self, bwPacket)</td></tr>
<tr class="memdesc:a101a2602e3dcd19bd70bed75721219e7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Called on FMS alarm. <br /></td></tr>
<tr class="separator:a101a2602e3dcd19bd70bed75721219e7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a15a07ec58d94ad4e52339d6f5b0bc38b" id="r_a15a07ec58d94ad4e52339d6f5b0bc38b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a15a07ec58d94ad4e52339d6f5b0bc38b">pocsag</a> (self, bwPacket)</td></tr>
<tr class="memdesc:a15a07ec58d94ad4e52339d6f5b0bc38b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Called on POCSAG alarm. <br /></td></tr>
<tr class="separator:a15a07ec58d94ad4e52339d6f5b0bc38b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af5c36cb43b625a31e660b874b4ed03f5" id="r_af5c36cb43b625a31e660b874b4ed03f5"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#af5c36cb43b625a31e660b874b4ed03f5">zvei</a> (self, bwPacket)</td></tr>
<tr class="memdesc:af5c36cb43b625a31e660b874b4ed03f5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Called on ZVEI alarm. <br /></td></tr>
<tr class="separator:af5c36cb43b625a31e660b874b4ed03f5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a58590a4f45b3a56ae86e08988176c884" id="r_a58590a4f45b3a56ae86e08988176c884"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a58590a4f45b3a56ae86e08988176c884">msg</a> (self, bwPacket)</td></tr>
<tr class="memdesc:a58590a4f45b3a56ae86e08988176c884"><td class="mdescLeft">&#160;</td><td class="mdescRight">Called on MSG packet. <br /></td></tr>
<tr class="separator:a58590a4f45b3a56ae86e08988176c884"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af332cd897823565ab3fbebf16e72c657" id="r_af332cd897823565ab3fbebf16e72c657"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#af332cd897823565ab3fbebf16e72c657">teardown</a> (self)</td></tr>
<tr class="memdesc:af332cd897823565ab3fbebf16e72c657"><td class="mdescLeft">&#160;</td><td class="mdescRight">Called after alarm Remove if not implemented. <br /></td></tr>
<tr class="separator:af332cd897823565ab3fbebf16e72c657"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af72d5ae2c1ae6a85c1582addc03aef7e" id="r_af72d5ae2c1ae6a85c1582addc03aef7e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#af72d5ae2c1ae6a85c1582addc03aef7e">onUnload</a> (self)</td></tr>
<tr class="memdesc:af72d5ae2c1ae6a85c1582addc03aef7e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Called by destruction of the plugin Remove if not implemented. <br /></td></tr>
<tr class="separator:af72d5ae2c1ae6a85c1582addc03aef7e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classplugin_1_1plugin_base_1_1_plugin_base"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pub_methods_classplugin_1_1plugin_base_1_1_plugin_base')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html">plugin.pluginBase.PluginBase</a></td></tr>
<tr class="memitem:a75eb26af5668918fba36fd5fc795a66b inherit pub_methods_classplugin_1_1plugin_base_1_1_plugin_base" id="r_a75eb26af5668918fba36fd5fc795a66b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a75eb26af5668918fba36fd5fc795a66b">parseWildcards</a> (self, <a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a9b7266a1e9e343c185181ad273a2fde2">msg</a>)</td></tr>
<tr class="memdesc:a75eb26af5668918fba36fd5fc795a66b inherit pub_methods_classplugin_1_1plugin_base_1_1_plugin_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the message with parsed wildcards. <br /></td></tr>
<tr class="separator:a75eb26af5668918fba36fd5fc795a66b inherit pub_methods_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="inherited" name="inherited"></a>
Additional Inherited Members</h2></td></tr>
<tr class="inherit_header pub_attribs_classplugin_1_1plugin_base_1_1_plugin_base"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pub_attribs_classplugin_1_1plugin_base_1_1_plugin_base')"><img src="closed.png" alt="-"/>&#160;Data Fields inherited from <a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html">plugin.pluginBase.PluginBase</a></td></tr>
<tr class="memitem:a5c82d6def9c98bd482fa88248c4f355c inherit pub_attribs_classplugin_1_1plugin_base_1_1_plugin_base" id="r_a5c82d6def9c98bd482fa88248c4f355c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a5c82d6def9c98bd482fa88248c4f355c">config</a> = config</td></tr>
<tr class="separator:a5c82d6def9c98bd482fa88248c4f355c inherit pub_attribs_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_methods_classplugin_1_1plugin_base_1_1_plugin_base"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pro_methods_classplugin_1_1plugin_base_1_1_plugin_base')"><img src="closed.png" alt="-"/>&#160;Protected Member Functions inherited from <a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html">plugin.pluginBase.PluginBase</a></td></tr>
<tr class="memitem:a176d74cf5854616fc0e716226d29716f inherit pro_methods_classplugin_1_1plugin_base_1_1_plugin_base" id="r_a176d74cf5854616fc0e716226d29716f"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a176d74cf5854616fc0e716226d29716f">_cleanup</a> (self)</td></tr>
<tr class="memdesc:a176d74cf5854616fc0e716226d29716f inherit pro_methods_classplugin_1_1plugin_base_1_1_plugin_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Cleanup routine calls <a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a3b3164e45d334ca2dab14f28d352334b" title="Called on shutdown of boswatch can be inherited.">onUnload()</a> directly. <br /></td></tr>
<tr class="separator:a176d74cf5854616fc0e716226d29716f inherit pro_methods_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a845b34feb0883393a1a521407ab37072 inherit pro_methods_classplugin_1_1plugin_base_1_1_plugin_base" id="r_a845b34feb0883393a1a521407ab37072"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a845b34feb0883393a1a521407ab37072">_run</a> (self, bwPacket)</td></tr>
<tr class="memdesc:a845b34feb0883393a1a521407ab37072 inherit pro_methods_classplugin_1_1plugin_base_1_1_plugin_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">start an complete running turn of an plugin. <br /></td></tr>
<tr class="separator:a845b34feb0883393a1a521407ab37072 inherit pro_methods_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3689bf4fef985b41df640c79b2eb71b2 inherit pro_methods_classplugin_1_1plugin_base_1_1_plugin_base" id="r_a3689bf4fef985b41df640c79b2eb71b2"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a3689bf4fef985b41df640c79b2eb71b2">_getStatistics</a> (self)</td></tr>
<tr class="memdesc:a3689bf4fef985b41df640c79b2eb71b2 inherit pro_methods_classplugin_1_1plugin_base_1_1_plugin_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns statistical information's from last plugin run. <br /></td></tr>
<tr class="separator:a3689bf4fef985b41df640c79b2eb71b2 inherit pro_methods_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base')"><img src="closed.png" alt="-"/>&#160;Protected Attributes inherited from <a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html">plugin.pluginBase.PluginBase</a></td></tr>
<tr class="memitem:a30f6b8fcaef2e480f3c4e270ed400a05 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base" id="r_a30f6b8fcaef2e480f3c4e270ed400a05"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a30f6b8fcaef2e480f3c4e270ed400a05">_pluginName</a> = pluginName</td></tr>
<tr class="separator:a30f6b8fcaef2e480f3c4e270ed400a05 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a049f3c84ba64856a66532d60a7b3c823 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base" id="r_a049f3c84ba64856a66532d60a7b3c823"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a049f3c84ba64856a66532d60a7b3c823">_bwPacket</a> = None</td></tr>
<tr class="separator:a049f3c84ba64856a66532d60a7b3c823 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae5d1664183b8986df4c61ebc96fb8483 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base" id="r_ae5d1664183b8986df4c61ebc96fb8483"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#ae5d1664183b8986df4c61ebc96fb8483">_sumTime</a> = 0</td></tr>
<tr class="separator:ae5d1664183b8986df4c61ebc96fb8483 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a69bcc46e64dbaddf524f49adb246a491 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base" id="r_a69bcc46e64dbaddf524f49adb246a491"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a69bcc46e64dbaddf524f49adb246a491">_cumTime</a> = 0</td></tr>
<tr class="separator:a69bcc46e64dbaddf524f49adb246a491 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a55a4a34b3f98ae8162633a0caf77eea6 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base" id="r_a55a4a34b3f98ae8162633a0caf77eea6"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a55a4a34b3f98ae8162633a0caf77eea6">_setupTime</a> = 0</td></tr>
<tr class="separator:a55a4a34b3f98ae8162633a0caf77eea6 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab8555502760f06321573b32b20a07093 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base" id="r_ab8555502760f06321573b32b20a07093"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#ab8555502760f06321573b32b20a07093">_alarmTime</a> = 0</td></tr>
<tr class="separator:ab8555502760f06321573b32b20a07093 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeb241bbb7f19b71ec1d0e64be490f445 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base" id="r_aeb241bbb7f19b71ec1d0e64be490f445"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#aeb241bbb7f19b71ec1d0e64be490f445">_teardownTime</a> = 0</td></tr>
<tr class="separator:aeb241bbb7f19b71ec1d0e64be490f445 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abdb7ee79ffd6c4145fa5240b542c8187 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base" id="r_abdb7ee79ffd6c4145fa5240b542c8187"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#abdb7ee79ffd6c4145fa5240b542c8187">_runCount</a> = 0</td></tr>
<tr class="separator:abdb7ee79ffd6c4145fa5240b542c8187 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9968925b171eea70507286142e8a442d inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base" id="r_a9968925b171eea70507286142e8a442d"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a9968925b171eea70507286142e8a442d">_setupErrorCount</a> = 0</td></tr>
<tr class="separator:a9968925b171eea70507286142e8a442d inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab9145f156441739cf1cd9d1b4a5e67c9 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base" id="r_ab9145f156441739cf1cd9d1b4a5e67c9"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#ab9145f156441739cf1cd9d1b4a5e67c9">_alarmErrorCount</a> = 0</td></tr>
<tr class="separator:ab9145f156441739cf1cd9d1b4a5e67c9 inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abb9f93add76f10d02c72f75f1034e2ad inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base" id="r_abb9f93add76f10d02c72f75f1034e2ad"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#abb9f93add76f10d02c72f75f1034e2ad">_teardownErrorCount</a> = 0</td></tr>
<tr class="separator:abb9f93add76f10d02c72f75f1034e2ad inherit pro_attribs_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_static_attribs_classplugin_1_1plugin_base_1_1_plugin_base"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pro_static_attribs_classplugin_1_1plugin_base_1_1_plugin_base')"><img src="closed.png" alt="-"/>&#160;Static Protected Attributes inherited from <a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html">plugin.pluginBase.PluginBase</a></td></tr>
<tr class="memitem:a115d9600af538a3b7b2cf63225361cfc inherit pro_static_attribs_classplugin_1_1plugin_base_1_1_plugin_base" id="r_a115d9600af538a3b7b2cf63225361cfc"><td class="memItemLeft" align="right" valign="top">list&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a115d9600af538a3b7b2cf63225361cfc">_pluginsActive</a> = []</td></tr>
<tr class="separator:a115d9600af538a3b7b2cf63225361cfc inherit pro_static_attribs_classplugin_1_1plugin_base_1_1_plugin_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Description of the Plugin. </p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="adc94a0cafa6b6ff4d3b837fd6ac874a4" name="adc94a0cafa6b6ff4d3b837fd6ac874a4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adc94a0cafa6b6ff4d3b837fd6ac874a4">&#9670;&#160;</a></span>__init__()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">plugin.template_plugin.BoswatchPlugin.__init__ </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>config</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Do not change anything here! </p>
<p>Reimplemented from <a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#ade82c0cd7c4c180dc62e5e6ca425d063">plugin.pluginBase.PluginBase</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 30</span> <span class="keyword">def </span>__init__(self, config):</div>
<div class="line"><span class="lineno"> 31</span> <span class="stringliteral">r&quot;&quot;&quot;!Do not change anything here!&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 32</span> super().__init__(__name__, config) <span class="comment"># you can access the config class on &#39;self.config&#39;</span></div>
<div class="line"><span class="lineno"> 33</span> </div>
</div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="ac2e80b20bc4e7bbdccf6c821207a70ac" name="ac2e80b20bc4e7bbdccf6c821207a70ac"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac2e80b20bc4e7bbdccf6c821207a70ac">&#9670;&#160;</a></span>onLoad()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">plugin.template_plugin.BoswatchPlugin.onLoad </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Called by import of the plugin Remove if not implemented. </p>
<p>Reimplemented from <a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a2fc30d6a8691b7b1c2b7c1431a6dfa67">plugin.pluginBase.PluginBase</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 34</span> <span class="keyword">def </span>onLoad(self):</div>
<div class="line"><span class="lineno"> 35</span> <span class="stringliteral">r&quot;&quot;&quot;!Called by import of the plugin</span></div>
<div class="line"><span class="lineno"> 36</span><span class="stringliteral"> Remove if not implemented&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 37</span> <span class="keywordflow">pass</span></div>
<div class="line"><span class="lineno"> 38</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="a7aa0048b112116e841e7aeac7c6d92a7" name="a7aa0048b112116e841e7aeac7c6d92a7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7aa0048b112116e841e7aeac7c6d92a7">&#9670;&#160;</a></span>setup()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">plugin.template_plugin.BoswatchPlugin.setup </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Called before alarm Remove if not implemented. </p>
<p>Reimplemented from <a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#afe097ea5f51321784754e168ac1ca6d6">plugin.pluginBase.PluginBase</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 39</span> <span class="keyword">def </span>setup(self):</div>
<div class="line"><span class="lineno"> 40</span> <span class="stringliteral">r&quot;&quot;&quot;!Called before alarm</span></div>
<div class="line"><span class="lineno"> 41</span><span class="stringliteral"> Remove if not implemented&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 42</span> <span class="keywordflow">pass</span></div>
<div class="line"><span class="lineno"> 43</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="a101a2602e3dcd19bd70bed75721219e7" name="a101a2602e3dcd19bd70bed75721219e7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a101a2602e3dcd19bd70bed75721219e7">&#9670;&#160;</a></span>fms()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">plugin.template_plugin.BoswatchPlugin.fms </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>bwPacket</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Called on FMS alarm. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">bwPacket</td><td>bwPacket instance Remove if not implemented </td></tr>
</table>
</dd>
</dl>
<p>Reimplemented from <a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#afbeb6510e88e221358df19636cffe0be">plugin.pluginBase.PluginBase</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 44</span> <span class="keyword">def </span>fms(self, bwPacket):</div>
<div class="line"><span class="lineno"> 45</span> <span class="stringliteral">r&quot;&quot;&quot;!Called on FMS alarm</span></div>
<div class="line"><span class="lineno"> 46</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 47</span><span class="stringliteral"> @param bwPacket: bwPacket instance</span></div>
<div class="line"><span class="lineno"> 48</span><span class="stringliteral"> Remove if not implemented&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 49</span> <span class="keywordflow">pass</span></div>
<div class="line"><span class="lineno"> 50</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="a15a07ec58d94ad4e52339d6f5b0bc38b" name="a15a07ec58d94ad4e52339d6f5b0bc38b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a15a07ec58d94ad4e52339d6f5b0bc38b">&#9670;&#160;</a></span>pocsag()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">plugin.template_plugin.BoswatchPlugin.pocsag </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>bwPacket</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Called on POCSAG alarm. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">bwPacket</td><td>bwPacket instance Remove if not implemented </td></tr>
</table>
</dd>
</dl>
<p>Reimplemented from <a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a1a9a3bc59e6e2737839138f098ba4fe5">plugin.pluginBase.PluginBase</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 51</span> <span class="keyword">def </span>pocsag(self, bwPacket):</div>
<div class="line"><span class="lineno"> 52</span> <span class="stringliteral">r&quot;&quot;&quot;!Called on POCSAG alarm</span></div>
<div class="line"><span class="lineno"> 53</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 54</span><span class="stringliteral"> @param bwPacket: bwPacket instance</span></div>
<div class="line"><span class="lineno"> 55</span><span class="stringliteral"> Remove if not implemented&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 56</span> <span class="keywordflow">pass</span></div>
<div class="line"><span class="lineno"> 57</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="af5c36cb43b625a31e660b874b4ed03f5" name="af5c36cb43b625a31e660b874b4ed03f5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af5c36cb43b625a31e660b874b4ed03f5">&#9670;&#160;</a></span>zvei()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">plugin.template_plugin.BoswatchPlugin.zvei </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>bwPacket</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Called on ZVEI alarm. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">bwPacket</td><td>bwPacket instance Remove if not implemented </td></tr>
</table>
</dd>
</dl>
<p>Reimplemented from <a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#af2d08ecea66961db0fd70e79927e7b80">plugin.pluginBase.PluginBase</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 58</span> <span class="keyword">def </span>zvei(self, bwPacket):</div>
<div class="line"><span class="lineno"> 59</span> <span class="stringliteral">r&quot;&quot;&quot;!Called on ZVEI alarm</span></div>
<div class="line"><span class="lineno"> 60</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 61</span><span class="stringliteral"> @param bwPacket: bwPacket instance</span></div>
<div class="line"><span class="lineno"> 62</span><span class="stringliteral"> Remove if not implemented&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 63</span> <span class="keywordflow">pass</span></div>
<div class="line"><span class="lineno"> 64</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="a58590a4f45b3a56ae86e08988176c884" name="a58590a4f45b3a56ae86e08988176c884"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a58590a4f45b3a56ae86e08988176c884">&#9670;&#160;</a></span>msg()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">plugin.template_plugin.BoswatchPlugin.msg </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>bwPacket</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Called on MSG packet. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">bwPacket</td><td>bwPacket instance Remove if not implemented </td></tr>
</table>
</dd>
</dl>
<p>Reimplemented from <a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a9b7266a1e9e343c185181ad273a2fde2">plugin.pluginBase.PluginBase</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 65</span> <span class="keyword">def </span>msg(self, bwPacket):</div>
<div class="line"><span class="lineno"> 66</span> <span class="stringliteral">r&quot;&quot;&quot;!Called on MSG packet</span></div>
<div class="line"><span class="lineno"> 67</span><span class="stringliteral"></span> </div>
<div class="line"><span class="lineno"> 68</span><span class="stringliteral"> @param bwPacket: bwPacket instance</span></div>
<div class="line"><span class="lineno"> 69</span><span class="stringliteral"> Remove if not implemented&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 70</span> <span class="keywordflow">pass</span></div>
<div class="line"><span class="lineno"> 71</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="af332cd897823565ab3fbebf16e72c657" name="af332cd897823565ab3fbebf16e72c657"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af332cd897823565ab3fbebf16e72c657">&#9670;&#160;</a></span>teardown()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">plugin.template_plugin.BoswatchPlugin.teardown </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Called after alarm Remove if not implemented. </p>
<p>Reimplemented from <a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#afbb808defd32c1cfc2714eba2f79654c">plugin.pluginBase.PluginBase</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 72</span> <span class="keyword">def </span>teardown(self):</div>
<div class="line"><span class="lineno"> 73</span> <span class="stringliteral">r&quot;&quot;&quot;!Called after alarm</span></div>
<div class="line"><span class="lineno"> 74</span><span class="stringliteral"> Remove if not implemented&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 75</span> <span class="keywordflow">pass</span></div>
<div class="line"><span class="lineno"> 76</span> </div>
</div><!-- fragment -->
</div>
</div>
<a id="af72d5ae2c1ae6a85c1582addc03aef7e" name="af72d5ae2c1ae6a85c1582addc03aef7e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af72d5ae2c1ae6a85c1582addc03aef7e">&#9670;&#160;</a></span>onUnload()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">plugin.template_plugin.BoswatchPlugin.onUnload </td>
<td>(</td>
<td class="paramtype"></td> <td class="paramname"><span class="paramname"><em>self</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Called by destruction of the plugin Remove if not implemented. </p>
<p>Reimplemented from <a class="el" href="classplugin_1_1plugin_base_1_1_plugin_base.html#a3b3164e45d334ca2dab14f28d352334b">plugin.pluginBase.PluginBase</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 77</span> <span class="keyword">def </span>onUnload(self):</div>
<div class="line"><span class="lineno"> 78</span> <span class="stringliteral">r&quot;&quot;&quot;!Called by destruction of the plugin</span></div>
<div class="line"><span class="lineno"> 79</span><span class="stringliteral"> Remove if not implemented&quot;&quot;&quot;</span></div>
<div class="line"><span class="lineno"> 80</span> <span class="keywordflow">pass</span></div>
</div><!-- fragment -->
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespaceplugin.html">plugin</a></li><li class="navelem"><a class="el" href="namespaceplugin_1_1template__plugin.html">template_plugin</a></li><li class="navelem"><a class="el" href="classplugin_1_1template__plugin_1_1_boswatch_plugin.html">BoswatchPlugin</a></li>
<li class="footer">Generated on Wed Jun 11 2025 08:24:06 for BOSWatch 3 by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
</ul>
</div>
</body>
</html>

View file

@ -0,0 +1,12 @@
var classplugin_1_1template__plugin_1_1_boswatch_plugin =
[
[ "__init__", "classplugin_1_1template__plugin_1_1_boswatch_plugin.html#adc94a0cafa6b6ff4d3b837fd6ac874a4", null ],
[ "onLoad", "classplugin_1_1template__plugin_1_1_boswatch_plugin.html#ac2e80b20bc4e7bbdccf6c821207a70ac", null ],
[ "setup", "classplugin_1_1template__plugin_1_1_boswatch_plugin.html#a7aa0048b112116e841e7aeac7c6d92a7", null ],
[ "fms", "classplugin_1_1template__plugin_1_1_boswatch_plugin.html#a101a2602e3dcd19bd70bed75721219e7", null ],
[ "pocsag", "classplugin_1_1template__plugin_1_1_boswatch_plugin.html#a15a07ec58d94ad4e52339d6f5b0bc38b", null ],
[ "zvei", "classplugin_1_1template__plugin_1_1_boswatch_plugin.html#af5c36cb43b625a31e660b874b4ed03f5", null ],
[ "msg", "classplugin_1_1template__plugin_1_1_boswatch_plugin.html#a58590a4f45b3a56ae86e08988176c884", null ],
[ "teardown", "classplugin_1_1template__plugin_1_1_boswatch_plugin.html#af332cd897823565ab3fbebf16e72c657", null ],
[ "onUnload", "classplugin_1_1template__plugin_1_1_boswatch_plugin.html#af72d5ae2c1ae6a85c1582addc03aef7e", null ]
];

61
api/html/clipboard.js Normal file
View file

@ -0,0 +1,61 @@
/**
The code below is based on the Doxygen Awesome project, see
https://github.com/jothepro/doxygen-awesome-css
MIT License
Copyright (c) 2021 - 2022 jothepro
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
*/
let clipboard_title = "Copy to clipboard"
let clipboard_icon = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"><path d="M0 0h24v24H0V0z" fill="none"/><path d="M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z"/></svg>`
let clipboard_successIcon = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"><path d="M0 0h24v24H0V0z" fill="none"/><path d="M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41L9 16.17z"/></svg>`
let clipboard_successDuration = 1000
$(function() {
if(navigator.clipboard) {
const fragments = document.getElementsByClassName("fragment")
for(const fragment of fragments) {
const clipboard_div = document.createElement("div")
clipboard_div.classList.add("clipboard")
clipboard_div.innerHTML = clipboard_icon
clipboard_div.title = clipboard_title
$(clipboard_div).click(function() {
const content = this.parentNode.cloneNode(true)
// filter out line number and folded fragments from file listings
content.querySelectorAll(".lineno, .ttc, .foldclosed").forEach((node) => { node.remove() })
let text = content.textContent
// remove trailing newlines and trailing spaces from empty lines
text = text.replace(/^\s*\n/gm,'\n').replace(/\n*$/,'')
navigator.clipboard.writeText(text);
this.classList.add("success")
this.innerHTML = clipboard_successIcon
window.setTimeout(() => { // switch back to normal icon after timeout
this.classList.remove("success")
this.innerHTML = clipboard_icon
}, clipboard_successDuration);
})
fragment.insertBefore(clipboard_div, fragment.firstChild)
}
}
})

BIN
api/html/closed.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 132 B

58
api/html/cookie.js Normal file
View file

@ -0,0 +1,58 @@
/*!
Cookie helper functions
Copyright (c) 2023 Dimitri van Heesch
Released under MIT license.
*/
let Cookie = {
cookie_namespace: 'doxygen_',
readSetting(cookie,defVal) {
if (window.chrome) {
const val = localStorage.getItem(this.cookie_namespace+cookie) ||
sessionStorage.getItem(this.cookie_namespace+cookie);
if (val) return val;
} else {
let myCookie = this.cookie_namespace+cookie+"=";
if (document.cookie) {
const index = document.cookie.indexOf(myCookie);
if (index != -1) {
const valStart = index + myCookie.length;
let valEnd = document.cookie.indexOf(";", valStart);
if (valEnd == -1) {
valEnd = document.cookie.length;
}
return document.cookie.substring(valStart, valEnd);
}
}
}
return defVal;
},
writeSetting(cookie,val,days=10*365) { // default days='forever', 0=session cookie, -1=delete
if (window.chrome) {
if (days==0) {
sessionStorage.setItem(this.cookie_namespace+cookie,val);
} else {
localStorage.setItem(this.cookie_namespace+cookie,val);
}
} else {
let date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
const expiration = days!=0 ? "expires="+date.toGMTString()+";" : "";
document.cookie = this.cookie_namespace + cookie + "=" +
val + "; SameSite=Lax;" + expiration + "path=/";
}
},
eraseSetting(cookie) {
if (window.chrome) {
if (localStorage.getItem(this.cookie_namespace+cookie)) {
localStorage.removeItem(this.cookie_namespace+cookie);
} else if (sessionStorage.getItem(this.cookie_namespace+cookie)) {
sessionStorage.removeItem(this.cookie_namespace+cookie);
}
} else {
this.writeSetting(cookie,'',-1);
}
},
}

View file

@ -0,0 +1,119 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.12.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>BOSWatch 3: filter Directory Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">BOSWatch 3
</div>
<div id="projectbrief">Python Script to receive and decode German BOS Information with rtl_fm and multimon-NG</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.12.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('dir_065827023a8094952705c99b7a70d726.html',''); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="headertitle"><div class="title">filter Directory Reference</div></div>
</div><!--header-->
<div class="contents">
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_a7b0466279106ea0b8f86f609f621680.html">module</a></li><li class="navelem"><a class="el" href="dir_065827023a8094952705c99b7a70d726.html">filter</a></li>
<li class="footer">Generated on Wed Jun 11 2025 08:24:06 for BOSWatch 3 by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
</ul>
</div>
</body>
</html>

View file

@ -0,0 +1,129 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.12.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>BOSWatch 3: test Directory Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">BOSWatch 3
</div>
<div id="projectbrief">Python Script to receive and decode German BOS Information with rtl_fm and multimon-NG</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.12.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('dir_13e138d54eb8818da29c3992edef070a.html',''); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="headertitle"><div class="title">test Directory Reference</div></div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="subdirs" name="subdirs"></a>
Directories</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><span class="iconfclosed"></span>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_c3c55799aed6b6d9e14d19d26506d0dd.html">boswatch</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><span class="iconfclosed"></span>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_a401edae9efb638176fb2226123ed9a0.html">module</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><span class="iconfclosed"></span>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_8f20f41be9704e4cc35f0dc735991ad7.html">plugin</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_13e138d54eb8818da29c3992edef070a.html">test</a></li>
<li class="footer">Generated on Wed Jun 11 2025 08:24:06 for BOSWatch 3 by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
</ul>
</div>
</body>
</html>

View file

@ -0,0 +1,119 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.12.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>BOSWatch 3: router Directory Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">BOSWatch 3
</div>
<div id="projectbrief">Python Script to receive and decode German BOS Information with rtl_fm and multimon-NG</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.12.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('dir_18ba14bdafca2d5fe76631d8c96c7756.html',''); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="headertitle"><div class="title">router Directory Reference</div></div>
</div><!--header-->
<div class="contents">
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_f49b800a024456700a737074495380af.html">boswatch</a></li><li class="navelem"><a class="el" href="dir_18ba14bdafca2d5fe76631d8c96c7756.html">router</a></li>
<li class="footer">Generated on Wed Jun 11 2025 08:24:06 for BOSWatch 3 by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
</ul>
</div>
</body>
</html>

View file

@ -0,0 +1,119 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.12.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>BOSWatch 3: network Directory Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">BOSWatch 3
</div>
<div id="projectbrief">Python Script to receive and decode German BOS Information with rtl_fm and multimon-NG</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.12.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('dir_2006f8608b07fda10f64d4c6574ce610.html',''); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="headertitle"><div class="title">network Directory Reference</div></div>
</div><!--header-->
<div class="contents">
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_f49b800a024456700a737074495380af.html">boswatch</a></li><li class="navelem"><a class="el" href="dir_2006f8608b07fda10f64d4c6574ce610.html">network</a></li>
<li class="footer">Generated on Wed Jun 11 2025 08:24:06 for BOSWatch 3 by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
</ul>
</div>
</body>
</html>

View file

@ -0,0 +1,119 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.12.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>BOSWatch 3: decoder Directory Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">BOSWatch 3
</div>
<div id="projectbrief">Python Script to receive and decode German BOS Information with rtl_fm and multimon-NG</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.12.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('dir_43da38551d4977a390038d31b18749ea.html',''); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="headertitle"><div class="title">decoder Directory Reference</div></div>
</div><!--header-->
<div class="contents">
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_f49b800a024456700a737074495380af.html">boswatch</a></li><li class="navelem"><a class="el" href="dir_43da38551d4977a390038d31b18749ea.html">decoder</a></li>
<li class="footer">Generated on Wed Jun 11 2025 08:24:06 for BOSWatch 3 by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
</ul>
</div>
</body>
</html>

View file

@ -0,0 +1,119 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.12.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>BOSWatch 3: utils Directory Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">BOSWatch 3
</div>
<div id="projectbrief">Python Script to receive and decode German BOS Information with rtl_fm and multimon-NG</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.12.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('dir_4cd0c9eca83862460f0369248cfc2f5b.html',''); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="headertitle"><div class="title">utils Directory Reference</div></div>
</div><!--header-->
<div class="contents">
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_f49b800a024456700a737074495380af.html">boswatch</a></li><li class="navelem"><a class="el" href="dir_4cd0c9eca83862460f0369248cfc2f5b.html">utils</a></li>
<li class="footer">Generated on Wed Jun 11 2025 08:24:06 for BOSWatch 3 by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
</ul>
</div>
</body>
</html>

View file

@ -0,0 +1,119 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.12.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>BOSWatch 3: inputSource Directory Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">BOSWatch 3
</div>
<div id="projectbrief">Python Script to receive and decode German BOS Information with rtl_fm and multimon-NG</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.12.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('dir_814a05153877d296d2f0b8283bfee1e3.html',''); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="headertitle"><div class="title">inputSource Directory Reference</div></div>
</div><!--header-->
<div class="contents">
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_f49b800a024456700a737074495380af.html">boswatch</a></li><li class="navelem"><a class="el" href="dir_814a05153877d296d2f0b8283bfee1e3.html">inputSource</a></li>
<li class="footer">Generated on Wed Jun 11 2025 08:24:06 for BOSWatch 3 by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
</ul>
</div>
</body>
</html>

View file

@ -0,0 +1,119 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.12.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>BOSWatch 3: plugin Directory Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">BOSWatch 3
</div>
<div id="projectbrief">Python Script to receive and decode German BOS Information with rtl_fm and multimon-NG</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.12.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('dir_8f20f41be9704e4cc35f0dc735991ad7.html',''); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="headertitle"><div class="title">plugin Directory Reference</div></div>
</div><!--header-->
<div class="contents">
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_13e138d54eb8818da29c3992edef070a.html">test</a></li><li class="navelem"><a class="el" href="dir_8f20f41be9704e4cc35f0dc735991ad7.html">plugin</a></li>
<li class="footer">Generated on Wed Jun 11 2025 08:24:06 for BOSWatch 3 by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
</ul>
</div>
</body>
</html>

View file

@ -0,0 +1,119 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.12.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>BOSWatch 3: module Directory Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">BOSWatch 3
</div>
<div id="projectbrief">Python Script to receive and decode German BOS Information with rtl_fm and multimon-NG</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.12.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('dir_a401edae9efb638176fb2226123ed9a0.html',''); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="headertitle"><div class="title">module Directory Reference</div></div>
</div><!--header-->
<div class="contents">
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_13e138d54eb8818da29c3992edef070a.html">test</a></li><li class="navelem"><a class="el" href="dir_a401edae9efb638176fb2226123ed9a0.html">module</a></li>
<li class="footer">Generated on Wed Jun 11 2025 08:24:06 for BOSWatch 3 by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
</ul>
</div>
</body>
</html>

View file

@ -0,0 +1,125 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.12.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>BOSWatch 3: module Directory Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">BOSWatch 3
</div>
<div id="projectbrief">Python Script to receive and decode German BOS Information with rtl_fm and multimon-NG</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.12.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('dir_a7b0466279106ea0b8f86f609f621680.html',''); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="headertitle"><div class="title">module Directory Reference</div></div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="subdirs" name="subdirs"></a>
Directories</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><span class="iconfclosed"></span>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_065827023a8094952705c99b7a70d726.html">filter</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_a7b0466279106ea0b8f86f609f621680.html">module</a></li>
<li class="footer">Generated on Wed Jun 11 2025 08:24:06 for BOSWatch 3 by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
</ul>
</div>
</body>
</html>

View file

@ -0,0 +1,119 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.12.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>BOSWatch 3: plugin Directory Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">BOSWatch 3
</div>
<div id="projectbrief">Python Script to receive and decode German BOS Information with rtl_fm and multimon-NG</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.12.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('dir_b4c3aec6cd8f28418150dce663061cfa.html',''); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="headertitle"><div class="title">plugin Directory Reference</div></div>
</div><!--header-->
<div class="contents">
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_b4c3aec6cd8f28418150dce663061cfa.html">plugin</a></li>
<li class="footer">Generated on Wed Jun 11 2025 08:24:06 for BOSWatch 3 by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
</ul>
</div>
</body>
</html>

View file

@ -0,0 +1,119 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.12.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>BOSWatch 3: boswatch Directory Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">BOSWatch 3
</div>
<div id="projectbrief">Python Script to receive and decode German BOS Information with rtl_fm and multimon-NG</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.12.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('dir_c3c55799aed6b6d9e14d19d26506d0dd.html',''); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="headertitle"><div class="title">boswatch Directory Reference</div></div>
</div><!--header-->
<div class="contents">
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_13e138d54eb8818da29c3992edef070a.html">test</a></li><li class="navelem"><a class="el" href="dir_c3c55799aed6b6d9e14d19d26506d0dd.html">boswatch</a></li>
<li class="footer">Generated on Wed Jun 11 2025 08:24:06 for BOSWatch 3 by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
</ul>
</div>
</body>
</html>

View file

@ -0,0 +1,133 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.12.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>BOSWatch 3: boswatch Directory Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">BOSWatch 3
</div>
<div id="projectbrief">Python Script to receive and decode German BOS Information with rtl_fm and multimon-NG</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.12.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('dir_f49b800a024456700a737074495380af.html',''); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="headertitle"><div class="title">boswatch Directory Reference</div></div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="subdirs" name="subdirs"></a>
Directories</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><span class="iconfclosed"></span>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_43da38551d4977a390038d31b18749ea.html">decoder</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><span class="iconfclosed"></span>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_814a05153877d296d2f0b8283bfee1e3.html">inputSource</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><span class="iconfclosed"></span>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_2006f8608b07fda10f64d4c6574ce610.html">network</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><span class="iconfclosed"></span>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_18ba14bdafca2d5fe76631d8c96c7756.html">router</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><span class="iconfclosed"></span>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_4cd0c9eca83862460f0369248cfc2f5b.html">utils</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_f49b800a024456700a737074495380af.html">boswatch</a></li>
<li class="footer">Generated on Wed Jun 11 2025 08:24:06 for BOSWatch 3 by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0 </li>
</ul>
</div>
</body>
</html>

12
api/html/doc.svg Normal file
View file

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"https://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" width="16" height="24" viewBox="0 0 80 60" id="doc" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve">
<g style="fill:#2F59AE">
<path d="m 14,-1.1445312 c -2.824372,0 -5.1445313,2.320159 -5.1445312,5.1445312 v 72 c 0,2.824372 2.3201592,5.144531 5.1445312,5.144531 h 52 c 2.824372,0 5.144531,-2.320159 5.144531,-5.144531 V 23.699219 a 1.1447968,1.1447968 0 0 0 -0.01563,-0.1875 C 70.977847,22.605363 70.406495,21.99048 70.007812,21.591797 L 48.208984,-0.20898438 C 47.606104,-0.81186474 46.804652,-1.1445313 46,-1.1445312 Z m 1.144531,6.2890624 H 42.855469 V 24 c 0,1.724372 1.420159,3.144531 3.144531,3.144531 H 64.855469 V 74.855469 H 15.144531 Z m 34,4.4179688 L 60.4375,20.855469 H 49.144531 Z"/>
</g>
<g style="fill:#D1DCF2;stroke-width:0">
<path d="M 3.0307167,13.993174 V 7.0307167 h 2.7576792 2.7576792 v 1.8826151 c 0,1.2578262 0.0099,1.9287572 0.029818,2.0216512 0.03884,0.181105 0.168631,0.348218 0.33827,0.43554 l 0.1355017,0.06975 1.9598092,0.0079 1.959809,0.0078 v 4.749829 4.749829 H 8 3.0307167 Z" transform="matrix(5,0,0,5,0,-30)" />
<path d="M 9.8293515,9.0581469 V 7.9456453 l 1.1058025,1.1055492 c 0.608191,0.6080521 1.105802,1.1086775 1.105802,1.1125015 0,0.0038 -0.497611,0.007 -1.105802,0.007 H 9.8293515 Z" transform="matrix(5,0,0,5,0,-30)" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

12
api/html/docd.svg Normal file
View file

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"https://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" width="16" height="24" viewBox="0 0 80 60" id="doc" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve">
<g style="fill:#B9CAEC">
<path d="m 14,-1.1445312 c -2.824372,0 -5.1445313,2.320159 -5.1445312,5.1445312 v 72 c 0,2.824372 2.3201592,5.144531 5.1445312,5.144531 h 52 c 2.824372,0 5.144531,-2.320159 5.144531,-5.144531 V 23.699219 a 1.1447968,1.1447968 0 0 0 -0.01563,-0.1875 C 70.977847,22.605363 70.406495,21.99048 70.007812,21.591797 L 48.208984,-0.20898438 C 47.606104,-0.81186474 46.804652,-1.1445313 46,-1.1445312 Z m 1.144531,6.2890624 H 42.855469 V 24 c 0,1.724372 1.420159,3.144531 3.144531,3.144531 H 64.855469 V 74.855469 H 15.144531 Z m 34,4.4179688 L 60.4375,20.855469 H 49.144531 Z"/>
</g>
<g style="fill:#2F59AE;stroke-width:0">
<path d="M 3.0307167,13.993174 V 7.0307167 h 2.7576792 2.7576792 v 1.8826151 c 0,1.2578262 0.0099,1.9287572 0.029818,2.0216512 0.03884,0.181105 0.168631,0.348218 0.33827,0.43554 l 0.1355017,0.06975 1.9598092,0.0079 1.959809,0.0078 v 4.749829 4.749829 H 8 3.0307167 Z" transform="matrix(5,0,0,5,0,-30)" />
<path d="M 9.8293515,9.0581469 V 7.9456453 l 1.1058025,1.1055492 c 0.608191,0.6080521 1.105802,1.1086775 1.105802,1.1125015 0,0.0038 -0.497611,0.007 -1.105802,0.007 H 9.8293515 Z" transform="matrix(5,0,0,5,0,-30)" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

2247
api/html/doxygen.css Normal file

File diff suppressed because it is too large Load diff

28
api/html/doxygen.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 15 KiB

712
api/html/doxygen_crawl.html Normal file
View file

@ -0,0 +1,712 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<title>Validator / crawler helper</title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.12.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
</head>
<body>
<a href="md__r_e_a_d_m_e.html"/>
<a href="todo.html"/>
<a href="namespaceboswatch.html"/>
<a href="namespaceboswatch_1_1config_yaml.html"/>
<a href="classboswatch_1_1config_yaml_1_1_config_y_a_m_l.html"/>
<a href="namespaceboswatch_1_1decoder.html"/>
<a href="namespaceboswatch_1_1decoder_1_1decoder.html"/>
<a href="classboswatch_1_1decoder_1_1decoder_1_1_decoder.html"/>
<a href="namespaceboswatch_1_1decoder_1_1fms_decoder.html"/>
<a href="classboswatch_1_1decoder_1_1fms_decoder_1_1_fms_decoder.html"/>
<a href="namespaceboswatch_1_1decoder_1_1pocsag_decoder.html"/>
<a href="classboswatch_1_1decoder_1_1pocsag_decoder_1_1_pocsag_decoder.html"/>
<a href="namespaceboswatch_1_1decoder_1_1zvei_decoder.html"/>
<a href="classboswatch_1_1decoder_1_1zvei_decoder_1_1_zvei_decoder.html"/>
<a href="namespaceboswatch_1_1input_source.html"/>
<a href="namespaceboswatch_1_1input_source_1_1input_base.html"/>
<a href="classboswatch_1_1input_source_1_1input_base_1_1_input_base.html"/>
<a href="namespaceboswatch_1_1input_source_1_1line_in_input.html"/>
<a href="classboswatch_1_1input_source_1_1line_in_input_1_1_line_in_input.html"/>
<a href="namespaceboswatch_1_1input_source_1_1pulseaudio_input.html"/>
<a href="classboswatch_1_1input_source_1_1pulseaudio_input_1_1_pulse_audio_input.html"/>
<a href="namespaceboswatch_1_1input_source_1_1sdr_input.html"/>
<a href="classboswatch_1_1input_source_1_1sdr_input_1_1_sdr_input.html"/>
<a href="namespaceboswatch_1_1network.html"/>
<a href="namespaceboswatch_1_1network_1_1broadcast.html"/>
<a href="classboswatch_1_1network_1_1broadcast_1_1_broadcast_client.html"/>
<a href="classboswatch_1_1network_1_1broadcast_1_1_broadcast_server.html"/>
<a href="namespaceboswatch_1_1network_1_1client.html"/>
<a href="classboswatch_1_1network_1_1client_1_1_t_c_p_client.html"/>
<a href="namespaceboswatch_1_1network_1_1net_check.html"/>
<a href="classboswatch_1_1network_1_1net_check_1_1_net_check.html"/>
<a href="namespaceboswatch_1_1network_1_1server.html"/>
<a href="classboswatch_1_1network_1_1server_1_1___threaded_t_c_p_request_handler.html"/>
<a href="classboswatch_1_1network_1_1server_1_1___threaded_t_c_p_server.html"/>
<a href="classboswatch_1_1network_1_1server_1_1_t_c_p_server.html"/>
<a href="namespaceboswatch_1_1packet.html"/>
<a href="classboswatch_1_1packet_1_1_packet.html"/>
<a href="namespaceboswatch_1_1process_manager.html"/>
<a href="classboswatch_1_1process_manager_1_1_process_manager.html"/>
<a href="namespaceboswatch_1_1router.html"/>
<a href="namespaceboswatch_1_1router_1_1route.html"/>
<a href="classboswatch_1_1router_1_1route_1_1_route.html"/>
<a href="namespaceboswatch_1_1router_1_1router.html"/>
<a href="classboswatch_1_1router_1_1router_1_1_router.html"/>
<a href="namespaceboswatch_1_1router_1_1router_manager.html"/>
<a href="classboswatch_1_1router_1_1router_manager_1_1_router_manager.html"/>
<a href="namespaceboswatch_1_1timer.html"/>
<a href="classboswatch_1_1timer_1_1_repeated_timer.html"/>
<a href="namespaceboswatch_1_1utils.html"/>
<a href="namespaceboswatch_1_1utils_1_1header.html"/>
<a href="namespaceboswatch_1_1utils_1_1misc.html"/>
<a href="namespaceboswatch_1_1utils_1_1paths.html"/>
<a href="namespaceboswatch_1_1utils_1_1version.html"/>
<a href="namespaceboswatch_1_1wildcard.html"/>
<a href="namespacemodule.html"/>
<a href="namespacemodule_1_1descriptor.html"/>
<a href="classmodule_1_1descriptor_1_1_boswatch_module.html"/>
<a href="namespacemodule_1_1filter.html"/>
<a href="namespacemodule_1_1filter_1_1double_filter.html"/>
<a href="classmodule_1_1filter_1_1double_filter_1_1_boswatch_module.html"/>
<a href="namespacemodule_1_1filter_1_1mode_filter.html"/>
<a href="classmodule_1_1filter_1_1mode_filter_1_1_boswatch_module.html"/>
<a href="namespacemodule_1_1filter_1_1regex_filter.html"/>
<a href="classmodule_1_1filter_1_1regex_filter_1_1_boswatch_module.html"/>
<a href="namespacemodule_1_1geocoding.html"/>
<a href="classmodule_1_1geocoding_1_1_boswatch_module.html"/>
<a href="namespacemodule_1_1module_base.html"/>
<a href="classmodule_1_1module_base_1_1_module_base.html"/>
<a href="namespacemodule_1_1template__module.html"/>
<a href="classmodule_1_1template__module_1_1_boswatch_module.html"/>
<a href="namespaceplugin.html"/>
<a href="namespaceplugin_1_1divera.html"/>
<a href="classplugin_1_1divera_1_1_boswatch_plugin.html"/>
<a href="namespaceplugin_1_1http.html"/>
<a href="classplugin_1_1http_1_1_boswatch_plugin.html"/>
<a href="namespaceplugin_1_1mysql.html"/>
<a href="classplugin_1_1mysql_1_1_boswatch_plugin.html"/>
<a href="namespaceplugin_1_1plugin_base.html"/>
<a href="classplugin_1_1plugin_base_1_1_plugin_base.html"/>
<a href="namespaceplugin_1_1telegram.html"/>
<a href="classplugin_1_1telegram_1_1_boswatch_plugin.html"/>
<a href="classplugin_1_1telegram_1_1_m_q_bot.html"/>
<a href="namespaceplugin_1_1template__plugin.html"/>
<a href="classplugin_1_1template__plugin_1_1_boswatch_plugin.html"/>
<a href="namespacetest.html"/>
<a href="namespacetest_1_1boswatch.html"/>
<a href="namespacetest_1_1boswatch_1_1test__broadcast.html"/>
<a href="namespacetest_1_1boswatch_1_1test__config.html"/>
<a href="namespacetest_1_1boswatch_1_1test__decoder.html"/>
<a href="namespacetest_1_1boswatch_1_1test__header.html"/>
<a href="namespacetest_1_1boswatch_1_1test__packet.html"/>
<a href="namespacetest_1_1boswatch_1_1test__paths.html"/>
<a href="namespacetest_1_1boswatch_1_1test___server_client.html"/>
<a href="namespacetest_1_1boswatch_1_1test__timer.html"/>
<a href="namespacetest_1_1module.html"/>
<a href="namespacetest_1_1module_1_1test__descriptor.html"/>
<a href="namespacetest_1_1plugin.html"/>
<a href="namespacetest_1_1test__template.html"/>
<a href="dir_f49b800a024456700a737074495380af.html"/>
<a href="dir_c3c55799aed6b6d9e14d19d26506d0dd.html"/>
<a href="dir_43da38551d4977a390038d31b18749ea.html"/>
<a href="dir_065827023a8094952705c99b7a70d726.html"/>
<a href="dir_814a05153877d296d2f0b8283bfee1e3.html"/>
<a href="dir_a7b0466279106ea0b8f86f609f621680.html"/>
<a href="dir_a401edae9efb638176fb2226123ed9a0.html"/>
<a href="dir_2006f8608b07fda10f64d4c6574ce610.html"/>
<a href="dir_b4c3aec6cd8f28418150dce663061cfa.html"/>
<a href="dir_8f20f41be9704e4cc35f0dc735991ad7.html"/>
<a href="dir_18ba14bdafca2d5fe76631d8c96c7756.html"/>
<a href="dir_13e138d54eb8818da29c3992edef070a.html"/>
<a href="dir_4cd0c9eca83862460f0369248cfc2f5b.html"/>
<a href="index.html"/>
<a href="doxygen_crawl.html"/>
<a href="pages.html"/>
<a href="namespacemembers.html"/>
<a href="namespacemembers.html"/>
<a href="namespacemembers.html"/>
<a href="namespacemembers.html"/>
<a href="namespacemembers.html"/>
<a href="namespacemembers.html"/>
<a href="namespacemembers.html"/>
<a href="namespacemembers.html"/>
<a href="namespacemembers.html"/>
<a href="namespacemembers.html"/>
<a href="namespacemembers.html"/>
<a href="namespacemembers.html"/>
<a href="namespacemembers.html"/>
<a href="namespacemembers.html"/>
<a href="namespacemembers.html"/>
<a href="namespacemembers_func.html"/>
<a href="namespacemembers_func.html"/>
<a href="namespacemembers_func.html"/>
<a href="namespacemembers_func.html"/>
<a href="namespacemembers_func.html"/>
<a href="namespacemembers_func.html"/>
<a href="namespacemembers_func.html"/>
<a href="namespacemembers_func.html"/>
<a href="namespacemembers_func.html"/>
<a href="namespacemembers_func.html"/>
<a href="namespacemembers_func.html"/>
<a href="namespacemembers_vars.html"/>
<a href="namespacemembers_vars.html"/>
<a href="namespacemembers_vars.html"/>
<a href="namespacemembers_vars.html"/>
<a href="namespacemembers_vars.html"/>
<a href="namespacemembers_vars.html"/>
<a href="namespacemembers_vars.html"/>
<a href="namespacemembers_vars.html"/>
<a href="namespacemembers_vars.html"/>
<a href="annotated.html"/>
<a href="classes.html"/>
<a href="hierarchy.html"/>
<a href="functions.html"/>
<a href="functions_a.html"/>
<a href="functions_b.html"/>
<a href="functions_c.html"/>
<a href="functions_d.html"/>
<a href="functions_f.html"/>
<a href="functions_g.html"/>
<a href="functions_h.html"/>
<a href="functions_i.html"/>
<a href="functions_l.html"/>
<a href="functions_m.html"/>
<a href="functions_n.html"/>
<a href="functions_o.html"/>
<a href="functions_p.html"/>
<a href="functions_r.html"/>
<a href="functions_s.html"/>
<a href="functions_t.html"/>
<a href="functions_z.html"/>
<a href="functions_func.html"/>
<a href="functions_func.html"/>
<a href="functions_func.html"/>
<a href="functions_func.html"/>
<a href="functions_func.html"/>
<a href="functions_func.html"/>
<a href="functions_func.html"/>
<a href="functions_func.html"/>
<a href="functions_func.html"/>
<a href="functions_func.html"/>
<a href="functions_func.html"/>
<a href="functions_func.html"/>
<a href="functions_func.html"/>
<a href="functions_func.html"/>
<a href="functions_func.html"/>
<a href="functions_func.html"/>
<a href="functions_func.html"/>
<a href="functions_vars.html"/>
<a href="functions_vars.html"/>
<a href="functions_vars.html"/>
<a href="functions_vars.html"/>
<a href="functions_vars.html"/>
<a href="functions_vars.html"/>
<a href="functions_vars.html"/>
<a href="functions_vars.html"/>
<a href="functions_vars.html"/>
<a href="annotated.html"/>
<a href="classboswatch_1_1config_yaml_1_1_config_y_a_m_l.html"/>
<a href="classboswatch_1_1config_yaml_1_1_config_y_a_m_l.html#a099b2cad054f88c4819f4cc0c369b6d6"/>
<a href="classboswatch_1_1config_yaml_1_1_config_y_a_m_l.html#a3e9d8bb1064df8d4971cb9c53c4df727"/>
<a href="classboswatch_1_1config_yaml_1_1_config_y_a_m_l.html#a77fa4b800bf837e717b351de2a184cbd"/>
<a href="classboswatch_1_1config_yaml_1_1_config_y_a_m_l.html#a7c5fe27e45b2124cb4147727713bfb94"/>
<a href="classboswatch_1_1config_yaml_1_1_config_y_a_m_l.html#a973b5c19761074acf7e59407ecb36e5b"/>
<a href="classboswatch_1_1config_yaml_1_1_config_y_a_m_l.html#ab71fa021f469d6d45d597c0594403c85"/>
<a href="classboswatch_1_1config_yaml_1_1_config_y_a_m_l.html#ab774c33b0a9d2cf9f9a1ecbe28509ed5"/>
<a href="classboswatch_1_1decoder_1_1decoder_1_1_decoder.html"/>
<a href="classboswatch_1_1decoder_1_1decoder_1_1_decoder.html#addeb065568a99b4bcadb1fb3c6f11bd1"/>
<a href="classboswatch_1_1decoder_1_1fms_decoder_1_1_fms_decoder.html"/>
<a href="classboswatch_1_1decoder_1_1fms_decoder_1_1_fms_decoder.html#a2cf35244ea56127feeaf19e6edfac03f"/>
<a href="classboswatch_1_1decoder_1_1pocsag_decoder_1_1_pocsag_decoder.html"/>
<a href="classboswatch_1_1decoder_1_1pocsag_decoder_1_1_pocsag_decoder.html#a868542c74621fe5e6238ff92d998a8ce"/>
<a href="classboswatch_1_1decoder_1_1pocsag_decoder_1_1_pocsag_decoder.html#a9c7e70e58eacd1cf556ca02ca5a2d639"/>
<a href="classboswatch_1_1decoder_1_1zvei_decoder_1_1_zvei_decoder.html"/>
<a href="classboswatch_1_1decoder_1_1zvei_decoder_1_1_zvei_decoder.html#a69957ae8721e3fd8b8d66bac1ba8896e"/>
<a href="classboswatch_1_1decoder_1_1zvei_decoder_1_1_zvei_decoder.html#af7f14c40e52ebac1349cc31b73928bc9"/>
<a href="classboswatch_1_1input_source_1_1input_base_1_1_input_base.html"/>
<a href="classboswatch_1_1input_source_1_1input_base_1_1_input_base.html#a0ab8a4109b818531fc9f79192b045465"/>
<a href="classboswatch_1_1input_source_1_1input_base_1_1_input_base.html#a16a630736e398371fbb7d9b8a39880cc"/>
<a href="classboswatch_1_1input_source_1_1input_base_1_1_input_base.html#a39c4c74464f0d25c2545270f420c24cd"/>
<a href="classboswatch_1_1input_source_1_1input_base_1_1_input_base.html#a6af1af984a2046a70a73e4ce2d6f1bfe"/>
<a href="classboswatch_1_1input_source_1_1input_base_1_1_input_base.html#a6ef8c7d1da7aa6c0aa391f6391dbc908"/>
<a href="classboswatch_1_1input_source_1_1input_base_1_1_input_base.html#a83c2b67af75a860fc71b0424866f8bae"/>
<a href="classboswatch_1_1input_source_1_1input_base_1_1_input_base.html#a846609a2f9dd8b30009aa1bfd8131437"/>
<a href="classboswatch_1_1input_source_1_1input_base_1_1_input_base.html#a9874c16b7000f464b820d1ba831fdb1b"/>
<a href="classboswatch_1_1input_source_1_1input_base_1_1_input_base.html#aac7a9d6165202e4f97ba8b8241e74012"/>
<a href="classboswatch_1_1input_source_1_1input_base_1_1_input_base.html#ab32d042b09f11fe44d9d2a213241aa0e"/>
<a href="classboswatch_1_1input_source_1_1input_base_1_1_input_base.html#ac01b4ac15a033f2df6d3ce95875f15e0"/>
<a href="classboswatch_1_1input_source_1_1input_base_1_1_input_base.html#af27cd87704982341ab475309db6036aa"/>
<a href="classboswatch_1_1input_source_1_1line_in_input_1_1_line_in_input.html"/>
<a href="classboswatch_1_1input_source_1_1line_in_input_1_1_line_in_input.html#a57e48d2c1329f7c8dc2604a0c88dc8c0"/>
<a href="classboswatch_1_1input_source_1_1line_in_input_1_1_line_in_input.html#a80507ea35abcb897f2b27265ca43f98f"/>
<a href="classboswatch_1_1input_source_1_1pulseaudio_input_1_1_pulse_audio_input.html"/>
<a href="classboswatch_1_1input_source_1_1pulseaudio_input_1_1_pulse_audio_input.html#a343b1c81e6088a31501568c006542ff0"/>
<a href="classboswatch_1_1input_source_1_1pulseaudio_input_1_1_pulse_audio_input.html#acf7d29232bad1b330d309f37cb064f65"/>
<a href="classboswatch_1_1input_source_1_1sdr_input_1_1_sdr_input.html"/>
<a href="classboswatch_1_1input_source_1_1sdr_input_1_1_sdr_input.html#a66fdca8f67bc143ad3d087496cb0cb92"/>
<a href="classboswatch_1_1input_source_1_1sdr_input_1_1_sdr_input.html#aaccbce0d6b8c281e71a0c3703e43a704"/>
<a href="classboswatch_1_1network_1_1broadcast_1_1_broadcast_client.html"/>
<a href="classboswatch_1_1network_1_1broadcast_1_1_broadcast_client.html#a020c629a993829463a215a58ddcfac21"/>
<a href="classboswatch_1_1network_1_1broadcast_1_1_broadcast_client.html#a3cdfb326c00a65543c5277f8c0a013af"/>
<a href="classboswatch_1_1network_1_1broadcast_1_1_broadcast_client.html#a52906f01625de0d1a89331265a4ea2c4"/>
<a href="classboswatch_1_1network_1_1broadcast_1_1_broadcast_client.html#a84e39ca725becf9615d186be8430eb92"/>
<a href="classboswatch_1_1network_1_1broadcast_1_1_broadcast_client.html#ab4294fb84142b6c5c7897adbac664bb1"/>
<a href="classboswatch_1_1network_1_1broadcast_1_1_broadcast_client.html#acdd370e919a9df510c393bf3cd220760"/>
<a href="classboswatch_1_1network_1_1broadcast_1_1_broadcast_client.html#ae5551bfa3d1cc9957c97869ded23fe14"/>
<a href="classboswatch_1_1network_1_1broadcast_1_1_broadcast_client.html#af35a11a41a256de82a65128fb6be70a3"/>
<a href="classboswatch_1_1network_1_1broadcast_1_1_broadcast_server.html"/>
<a href="classboswatch_1_1network_1_1broadcast_1_1_broadcast_server.html#a5155943e9eb814fa38e30838998b0c97"/>
<a href="classboswatch_1_1network_1_1broadcast_1_1_broadcast_server.html#a5181654894e310d20de83207e4fc6d07"/>
<a href="classboswatch_1_1network_1_1broadcast_1_1_broadcast_server.html#a6d220c67297313c9c3523a8aac9669e9"/>
<a href="classboswatch_1_1network_1_1broadcast_1_1_broadcast_server.html#a74f239839968faaed59206bc4f02cdff"/>
<a href="classboswatch_1_1network_1_1broadcast_1_1_broadcast_server.html#a896370fa8a3adca5e0435d3433a5bfcf"/>
<a href="classboswatch_1_1network_1_1broadcast_1_1_broadcast_server.html#a9578bab3fdb883c6de357bf513884b2c"/>
<a href="classboswatch_1_1network_1_1broadcast_1_1_broadcast_server.html#a9fe9bb49f6d72bacdddee6436de7ec91"/>
<a href="classboswatch_1_1network_1_1broadcast_1_1_broadcast_server.html#aa4fcca86240231413885fcd050744152"/>
<a href="classboswatch_1_1network_1_1broadcast_1_1_broadcast_server.html#abd218c599104e5483936cc64ed2c1eb0"/>
<a href="classboswatch_1_1network_1_1broadcast_1_1_broadcast_server.html#ad4c950fc28b36e52da565856ab61866c"/>
<a href="classboswatch_1_1network_1_1broadcast_1_1_broadcast_server.html#adeecb8b6c9efbd9752657bc23c0abadb"/>
<a href="classboswatch_1_1network_1_1broadcast_1_1_broadcast_server.html#ae93a0a17a87977e5e675361f513c18d6"/>
<a href="classboswatch_1_1network_1_1client_1_1_t_c_p_client.html"/>
<a href="classboswatch_1_1network_1_1client_1_1_t_c_p_client.html#a085df370df1ad97a2ea2b9a510590721"/>
<a href="classboswatch_1_1network_1_1client_1_1_t_c_p_client.html#a0b220cacacdf690617645c7fefdc4f98"/>
<a href="classboswatch_1_1network_1_1client_1_1_t_c_p_client.html#a22e2077708bcd0526c1628b24569a6f9"/>
<a href="classboswatch_1_1network_1_1client_1_1_t_c_p_client.html#a52dad8d55fb35e07756a5a779deff7fe"/>
<a href="classboswatch_1_1network_1_1client_1_1_t_c_p_client.html#a9cb1cfa9fa1f3e5aeb25329a2406ea50"/>
<a href="classboswatch_1_1network_1_1client_1_1_t_c_p_client.html#ab38ae11d876aed47d12c7f753601b67f"/>
<a href="classboswatch_1_1network_1_1client_1_1_t_c_p_client.html#ac8a3ce9fefc7b8e0b2fbf653f484aac4"/>
<a href="classboswatch_1_1network_1_1client_1_1_t_c_p_client.html#ae913438a3d6370473b87e323fa1afa9b"/>
<a href="classboswatch_1_1network_1_1net_check_1_1_net_check.html"/>
<a href="classboswatch_1_1network_1_1net_check_1_1_net_check.html#a3f96032d88c885267d1337c72d14da85"/>
<a href="classboswatch_1_1network_1_1net_check_1_1_net_check.html#a7e4b0f0b6a16bb9991e8f98f5a0e01d7"/>
<a href="classboswatch_1_1network_1_1net_check_1_1_net_check.html#a85861ea00ae1921f47c4addd2b40ce5b"/>
<a href="classboswatch_1_1network_1_1net_check_1_1_net_check.html#a93d5881314909255eb8b687a94942526"/>
<a href="classboswatch_1_1network_1_1net_check_1_1_net_check.html#abd1284df56696f11553229f48e33379d"/>
<a href="classboswatch_1_1network_1_1server_1_1___threaded_t_c_p_request_handler.html"/>
<a href="classboswatch_1_1network_1_1server_1_1___threaded_t_c_p_request_handler.html#acb4cb23886abc3c2b3be70ed3127c3b0"/>
<a href="classboswatch_1_1network_1_1server_1_1___threaded_t_c_p_server.html"/>
<a href="classboswatch_1_1network_1_1server_1_1_t_c_p_server.html"/>
<a href="classboswatch_1_1network_1_1server_1_1_t_c_p_server.html#a069063419170444e452c49d4d3226d42"/>
<a href="classboswatch_1_1network_1_1server_1_1_t_c_p_server.html#a196dd011e76b9ffa269b1d7ae945317f"/>
<a href="classboswatch_1_1network_1_1server_1_1_t_c_p_server.html#a3126636b3ebc15906a02433a9f921cdd"/>
<a href="classboswatch_1_1network_1_1server_1_1_t_c_p_server.html#a34210569d9aeb0f83e23fda9ac6501c1"/>
<a href="classboswatch_1_1network_1_1server_1_1_t_c_p_server.html#a502b42c4e702a1ef1440d7d156ea4493"/>
<a href="classboswatch_1_1network_1_1server_1_1_t_c_p_server.html#a7bd8bbf36dc9e947fd6889b64e66bf79"/>
<a href="classboswatch_1_1network_1_1server_1_1_t_c_p_server.html#a96ddddf0a3fbac223d04ef68de9b35cd"/>
<a href="classboswatch_1_1network_1_1server_1_1_t_c_p_server.html#aa7bde82a0490275757eb62cf2245ece8"/>
<a href="classboswatch_1_1network_1_1server_1_1_t_c_p_server.html#ab0b936931fdf4ccc43aa17b78732b207"/>
<a href="classboswatch_1_1network_1_1server_1_1_t_c_p_server.html#ace26dcf01e7072e302d25751cfd35999"/>
<a href="classboswatch_1_1network_1_1server_1_1_t_c_p_server.html#ad384e027f90c85bd533081c5df69c143"/>
<a href="classboswatch_1_1network_1_1server_1_1_t_c_p_server.html#ad7d5a3318dd17eb81d4145b364354b9b"/>
<a href="classboswatch_1_1network_1_1server_1_1_t_c_p_server.html#adcb3af039525e3fd4465f661e985eba1"/>
<a href="classboswatch_1_1network_1_1server_1_1_t_c_p_server.html#aeba7db2323e57b57d17c05ab9f448370"/>
<a href="classboswatch_1_1network_1_1server_1_1_t_c_p_server.html#aef3b308e2d4d28406bdb31be97460e60"/>
<a href="classboswatch_1_1packet_1_1_packet.html"/>
<a href="classboswatch_1_1packet_1_1_packet.html#a01a4bf1fb3af1e72d5a2da96d296e832"/>
<a href="classboswatch_1_1packet_1_1_packet.html#a33f9ad91a87a012e192cd2ef629b536e"/>
<a href="classboswatch_1_1packet_1_1_packet.html#a3fb27af3d9f25714b715ac313798cbb2"/>
<a href="classboswatch_1_1packet_1_1_packet.html#a58fbb3a8a2080ea38a49bb5bead48a44"/>
<a href="classboswatch_1_1packet_1_1_packet.html#aaa72c4726ad47f994e915ad397b89186"/>
<a href="classboswatch_1_1packet_1_1_packet.html#ae2562639ea14f5e92fbe5048af72a2f9"/>
<a href="classboswatch_1_1process_manager_1_1_process_manager.html"/>
<a href="classboswatch_1_1process_manager_1_1_process_manager.html#a115b1f84ab38b22275d409a63257c2e9"/>
<a href="classboswatch_1_1process_manager_1_1_process_manager.html#a2c5d6361b9973cc43ed452056bda080b"/>
<a href="classboswatch_1_1process_manager_1_1_process_manager.html#a31152ee52782cf204c84cb557591f4b8"/>
<a href="classboswatch_1_1process_manager_1_1_process_manager.html#a3872072d62e14aec84d190d5a31626e9"/>
<a href="classboswatch_1_1process_manager_1_1_process_manager.html#a3abb0b2b54f126e46774a0f33fc2980c"/>
<a href="classboswatch_1_1process_manager_1_1_process_manager.html#a401b316004c76dea8175e7a879f649d4"/>
<a href="classboswatch_1_1process_manager_1_1_process_manager.html#a593dfb43e5f701227e166ceb0dc1d930"/>
<a href="classboswatch_1_1process_manager_1_1_process_manager.html#a67863ea2b20617af7d4b54691e75cded"/>
<a href="classboswatch_1_1process_manager_1_1_process_manager.html#a68468dd0235a3b0725d70852670e9ac4"/>
<a href="classboswatch_1_1process_manager_1_1_process_manager.html#a6d4df5612ac7d822144b8198299588f8"/>
<a href="classboswatch_1_1process_manager_1_1_process_manager.html#a80143d4751ce9b1cc8a164cd56c8dbca"/>
<a href="classboswatch_1_1process_manager_1_1_process_manager.html#a83b9d7d3aa926c0cdbe86d4a36873c50"/>
<a href="classboswatch_1_1process_manager_1_1_process_manager.html#a8b34c7836cc8947e174d0e0cc84b4cd3"/>
<a href="classboswatch_1_1process_manager_1_1_process_manager.html#a932e0d5d67cca47b4e5fc73a25082408"/>
<a href="classboswatch_1_1process_manager_1_1_process_manager.html#a9dddc0c204be55e4391557f2cb1616bf"/>
<a href="classboswatch_1_1process_manager_1_1_process_manager.html#a9f0eb14407cf78ab7010bf247c8d6115"/>
<a href="classboswatch_1_1process_manager_1_1_process_manager.html#aafaebfc0b133edfad339910f92d941de"/>
<a href="classboswatch_1_1process_manager_1_1_process_manager.html#abb6bac128e56b2167fdf56f5bd3cea2e"/>
<a href="classboswatch_1_1process_manager_1_1_process_manager.html#ac86f2638f1239a188692006699471f1f"/>
<a href="classboswatch_1_1process_manager_1_1_process_manager.html#aee5993f601ba3472c92bb06a0b278663"/>
<a href="classboswatch_1_1process_manager_1_1_process_manager.html#af2886ee808fe04cebd36bc72ad8616c3"/>
<a href="classboswatch_1_1router_1_1route_1_1_route.html"/>
<a href="classboswatch_1_1router_1_1route_1_1_route.html#a0576a975ab706dd9bb5cfca8c2ce6e05"/>
<a href="classboswatch_1_1router_1_1route_1_1_route.html#a15d3829220d3bd9ba38fc95d562227e0"/>
<a href="classboswatch_1_1router_1_1route_1_1_route.html#a5854d6578e8f94a4e47d9b63e54bfda9"/>
<a href="classboswatch_1_1router_1_1route_1_1_route.html#a63208097fc8bfd4ae4395f238b24f6ec"/>
<a href="classboswatch_1_1router_1_1route_1_1_route.html#acf9db2e5e2d24b93eb6bcf0a403c3914"/>
<a href="classboswatch_1_1router_1_1router_1_1_router.html"/>
<a href="classboswatch_1_1router_1_1router_1_1_router.html#a06691105ddcd06e4f0fcd323a1b8a261"/>
<a href="classboswatch_1_1router_1_1router_1_1_router.html#a11fab65f0b4e7f2daff58fbd675d8347"/>
<a href="classboswatch_1_1router_1_1router_1_1_router.html#a12a8f1e03f1ca7d9a10d5b59faf03e02"/>
<a href="classboswatch_1_1router_1_1router_1_1_router.html#a3ed6cf62a9a5f85205318ff39cb6db8a"/>
<a href="classboswatch_1_1router_1_1router_1_1_router.html#a4f0f891fcae507b7f47ec389194d912c"/>
<a href="classboswatch_1_1router_1_1router_1_1_router.html#a561f89ef4e05555ea81cfa5da4551e0d"/>
<a href="classboswatch_1_1router_1_1router_1_1_router.html#a90d717b6aece9f0a505a0b85eb4dacfa"/>
<a href="classboswatch_1_1router_1_1router_1_1_router.html#aa7c921ad0880824595d7fa05bcac6b08"/>
<a href="classboswatch_1_1router_1_1router_1_1_router.html#abc663ec17904868934fa8682aa7859a9"/>
<a href="classboswatch_1_1router_1_1router_manager_1_1_router_manager.html"/>
<a href="classboswatch_1_1router_1_1router_manager_1_1_router_manager.html#a0a84f95c300da38392422533d5782aaf"/>
<a href="classboswatch_1_1router_1_1router_manager_1_1_router_manager.html#a3da3dc3de144cf743f76862eca77e998"/>
<a href="classboswatch_1_1router_1_1router_manager_1_1_router_manager.html#a4e59d8e534b9be386eec05de3d2fe746"/>
<a href="classboswatch_1_1router_1_1router_manager_1_1_router_manager.html#a847bf4d91a11bc22b44977c04f616e73"/>
<a href="classboswatch_1_1router_1_1router_manager_1_1_router_manager.html#a8a1753d5725c13435417935a7f44a668"/>
<a href="classboswatch_1_1router_1_1router_manager_1_1_router_manager.html#a97f0f4b83877b3c0765e9387048c3429"/>
<a href="classboswatch_1_1router_1_1router_manager_1_1_router_manager.html#aa54e031529782bd0a7e907c8d7e8f0a9"/>
<a href="classboswatch_1_1router_1_1router_manager_1_1_router_manager.html#aaf81a014d86abc76cdc0722d6f71b15e"/>
<a href="classboswatch_1_1router_1_1router_manager_1_1_router_manager.html#aaff6ed2da859797e18f6c072d7904f87"/>
<a href="classboswatch_1_1router_1_1router_manager_1_1_router_manager.html#ab546d0c2d93ff67032c7ce10be3604cd"/>
<a href="classboswatch_1_1timer_1_1_repeated_timer.html"/>
<a href="classboswatch_1_1timer_1_1_repeated_timer.html#a0a8c3bc1726ae2a8f43a36a4f2f74165"/>
<a href="classboswatch_1_1timer_1_1_repeated_timer.html#a0ba9bc6b5aea4aa3ecb3670a2ca64b2f"/>
<a href="classboswatch_1_1timer_1_1_repeated_timer.html#a2f693bfc34ab3bff466d1af495ac6524"/>
<a href="classboswatch_1_1timer_1_1_repeated_timer.html#a33f78dd48f368e8b2e423b94d8d4f7f0"/>
<a href="classboswatch_1_1timer_1_1_repeated_timer.html#a3b492713fbe661683f886f23c0925212"/>
<a href="classboswatch_1_1timer_1_1_repeated_timer.html#a41ace1d4fc64ef5196eea937d5247c1b"/>
<a href="classboswatch_1_1timer_1_1_repeated_timer.html#a5b693144e9b2060eff4a30e526f618f8"/>
<a href="classboswatch_1_1timer_1_1_repeated_timer.html#a5f7c9e59eb302893ede382b3cf36fc6d"/>
<a href="classboswatch_1_1timer_1_1_repeated_timer.html#a6456136d21c1cfa45cea27f8e52a6d90"/>
<a href="classboswatch_1_1timer_1_1_repeated_timer.html#a7ac6df54ac53ce43b550ea2fb7f593ba"/>
<a href="classboswatch_1_1timer_1_1_repeated_timer.html#a7ae2d4c2a6d8f17307df85227f3b1085"/>
<a href="classboswatch_1_1timer_1_1_repeated_timer.html#a840c33f251da10948ba1940f7edae806"/>
<a href="classboswatch_1_1timer_1_1_repeated_timer.html#a925a7f0f26df28aa88fb69ef192b1deb"/>
<a href="classboswatch_1_1timer_1_1_repeated_timer.html#ab5cd56124ddbb4e05348624139ed2e75"/>
<a href="classboswatch_1_1timer_1_1_repeated_timer.html#ad0dde3339f157e43f191aafab23f03e5"/>
<a href="classboswatch_1_1timer_1_1_repeated_timer.html#ad1430785a88382edf7f5577060e0d01a"/>
<a href="classboswatch_1_1timer_1_1_repeated_timer.html#ae92aee50e2a2341581abec6a14c788da"/>
<a href="classboswatch_1_1timer_1_1_repeated_timer.html#afbe5f47ada6c6220e43b6bbec6318a51"/>
<a href="classmodule_1_1descriptor_1_1_boswatch_module.html"/>
<a href="classmodule_1_1descriptor_1_1_boswatch_module.html#a2192a35cc94bccc69d1b6a268acc9b94"/>
<a href="classmodule_1_1descriptor_1_1_boswatch_module.html#a39d8aef7f47e43c8108813f072785a56"/>
<a href="classmodule_1_1descriptor_1_1_boswatch_module.html#aa1bc2516e337c8fa96ef7e3656435f85"/>
<a href="classmodule_1_1descriptor_1_1_boswatch_module.html#aaa022ad0b56c3cbd15d2dab38fb99fb7"/>
<a href="classmodule_1_1descriptor_1_1_boswatch_module.html#adf37fd4608e42b4a9335c0d2954d7113"/>
<a href="classmodule_1_1filter_1_1double_filter_1_1_boswatch_module.html"/>
<a href="classmodule_1_1filter_1_1double_filter_1_1_boswatch_module.html#a10e2b681c89887ee422f01a1f9ae9dcd"/>
<a href="classmodule_1_1filter_1_1double_filter_1_1_boswatch_module.html#a43d03ed47b4c9bdaf34daec40cf094d4"/>
<a href="classmodule_1_1filter_1_1double_filter_1_1_boswatch_module.html#a81185d2d81a4959d8a29e5054adf975d"/>
<a href="classmodule_1_1filter_1_1double_filter_1_1_boswatch_module.html#a8636be116a0033d585673a8c0e3527d0"/>
<a href="classmodule_1_1filter_1_1double_filter_1_1_boswatch_module.html#a88c57fc92229358481fa36e98c677c7d"/>
<a href="classmodule_1_1filter_1_1double_filter_1_1_boswatch_module.html#aa5f9d403d03ad71ebacc98d0e05ef0ab"/>
<a href="classmodule_1_1filter_1_1double_filter_1_1_boswatch_module.html#acea4923f42d2b6688455567e1c3f6f2e"/>
<a href="classmodule_1_1filter_1_1mode_filter_1_1_boswatch_module.html"/>
<a href="classmodule_1_1filter_1_1mode_filter_1_1_boswatch_module.html#a316db93e433ec18280dba7c603b6db7f"/>
<a href="classmodule_1_1filter_1_1mode_filter_1_1_boswatch_module.html#a40d029c8dc22e315b84237d31055137b"/>
<a href="classmodule_1_1filter_1_1mode_filter_1_1_boswatch_module.html#a720563d78144989697ed24804d554f8d"/>
<a href="classmodule_1_1filter_1_1mode_filter_1_1_boswatch_module.html#af5c6b174721359c9c93ddc29faa9be9b"/>
<a href="classmodule_1_1filter_1_1regex_filter_1_1_boswatch_module.html"/>
<a href="classmodule_1_1filter_1_1regex_filter_1_1_boswatch_module.html#a636f42c800fd91192e2f683313fc75bf"/>
<a href="classmodule_1_1filter_1_1regex_filter_1_1_boswatch_module.html#a7d0ba6d5f55296e81be161ffc0cf5f86"/>
<a href="classmodule_1_1filter_1_1regex_filter_1_1_boswatch_module.html#a887577d5947b9277541d8013e6685103"/>
<a href="classmodule_1_1filter_1_1regex_filter_1_1_boswatch_module.html#ab826f80406d3117525de1e2d4e0615f0"/>
<a href="classmodule_1_1filter_1_1regex_filter_1_1_boswatch_module.html#afa1a66cb2277360e21841526e41cec5c"/>
<a href="classmodule_1_1geocoding_1_1_boswatch_module.html"/>
<a href="classmodule_1_1geocoding_1_1_boswatch_module.html#a0c730c8d45b001e1ddb2ab73400df373"/>
<a href="classmodule_1_1geocoding_1_1_boswatch_module.html#a59b6abc9064a3674525563647ed6d8cd"/>
<a href="classmodule_1_1geocoding_1_1_boswatch_module.html#af7f1f53f8f23f091bb12fbb3c5b040eb"/>
<a href="classmodule_1_1module_base_1_1_module_base.html"/>
<a href="classmodule_1_1module_base_1_1_module_base.html#a1bc0d95375400ac328aaa9c10fd1996a"/>
<a href="classmodule_1_1module_base_1_1_module_base.html#a2146259480980a909ee97410cfdc7933"/>
<a href="classmodule_1_1module_base_1_1_module_base.html#a4c69727e801ba326aed6963cd9fd6dae"/>
<a href="classmodule_1_1module_base_1_1_module_base.html#a667c99040b316d66a00de34ff5cebf3e"/>
<a href="classmodule_1_1module_base_1_1_module_base.html#a75f00bbad4a6905c467e71df1df22f9c"/>
<a href="classmodule_1_1module_base_1_1_module_base.html#a7cbca9fa85b9b9bb487ac882d51385c4"/>
<a href="classmodule_1_1module_base_1_1_module_base.html#a872db7602a8139866730ba79a220314b"/>
<a href="classmodule_1_1module_base_1_1_module_base.html#a96ad0ccc9a2dadf099285b5e938a098a"/>
<a href="classmodule_1_1module_base_1_1_module_base.html#a9b6aa123432ef49e373f643f5b10a82c"/>
<a href="classmodule_1_1module_base_1_1_module_base.html#a9f55a9dd81ff02426ae9d73ff62f4134"/>
<a href="classmodule_1_1module_base_1_1_module_base.html#ac95033dbbecea6287331a58f4b2fd046"/>
<a href="classmodule_1_1module_base_1_1_module_base.html#addb1f046325535d8f3036c605429cf14"/>
<a href="classmodule_1_1module_base_1_1_module_base.html#ae43a99376d14379225916bbce74793bd"/>
<a href="classmodule_1_1module_base_1_1_module_base.html#aedd2d0694073eff10a3c0440f487a373"/>
<a href="classmodule_1_1module_base_1_1_module_base.html#afee02f2e4ef75f43eb819facba9e9bd7"/>
<a href="classmodule_1_1template__module_1_1_boswatch_module.html"/>
<a href="classmodule_1_1template__module_1_1_boswatch_module.html#a00f969c06c87ae304c65aee372d95d0a"/>
<a href="classmodule_1_1template__module_1_1_boswatch_module.html#a266810ac3b486b4340fe823390a4b866"/>
<a href="classmodule_1_1template__module_1_1_boswatch_module.html#a3f001ec829334fde0039cdbfec542588"/>
<a href="classmodule_1_1template__module_1_1_boswatch_module.html#a5fbab9ed6a058b089d39d3f53c7f1527"/>
<a href="classplugin_1_1divera_1_1_boswatch_plugin.html"/>
<a href="classplugin_1_1divera_1_1_boswatch_plugin.html#a15699267f01c1dcf595832ceaf3a717c"/>
<a href="classplugin_1_1divera_1_1_boswatch_plugin.html#a2bf369f81f8e4aa4497b058ce57fa9b7"/>
<a href="classplugin_1_1divera_1_1_boswatch_plugin.html#a95a7f19773431bec715f2f293caf8d85"/>
<a href="classplugin_1_1divera_1_1_boswatch_plugin.html#a995706093c53e10bd494c98f06c8b8cb"/>
<a href="classplugin_1_1divera_1_1_boswatch_plugin.html#aa1c4e66999052f91bb36fb0ab049a591"/>
<a href="classplugin_1_1divera_1_1_boswatch_plugin.html#aad60e175ed9d2a6832655d90e38ba179"/>
<a href="classplugin_1_1divera_1_1_boswatch_plugin.html#ad710304e33432b74c0e1716283bea397"/>
<a href="classplugin_1_1divera_1_1_boswatch_plugin.html#ae681c4a8b35f18cce21bab24a9b74f7c"/>
<a href="classplugin_1_1http_1_1_boswatch_plugin.html"/>
<a href="classplugin_1_1http_1_1_boswatch_plugin.html#a201e0da093af49f002c1e6b8b6757480"/>
<a href="classplugin_1_1http_1_1_boswatch_plugin.html#a35d80b12f07174df5a46c52776df6946"/>
<a href="classplugin_1_1http_1_1_boswatch_plugin.html#a53ff7d38082e062630f6485476c33ece"/>
<a href="classplugin_1_1http_1_1_boswatch_plugin.html#a5a9cebdc7d9bfbb1c4655ce8df99885b"/>
<a href="classplugin_1_1http_1_1_boswatch_plugin.html#a5e3200e56a8022a46bc3aaeab915ed74"/>
<a href="classplugin_1_1http_1_1_boswatch_plugin.html#a9f553a502830180aeb3683c92e5ee695"/>
<a href="classplugin_1_1http_1_1_boswatch_plugin.html#ab0d2721349d465674f27e7fb0ec07f52"/>
<a href="classplugin_1_1http_1_1_boswatch_plugin.html#aebea23ae39e04a4c9becab1405d17f57"/>
<a href="classplugin_1_1mysql_1_1_boswatch_plugin.html"/>
<a href="classplugin_1_1mysql_1_1_boswatch_plugin.html#a15ccdf15153caab4ea4d96e599a0954c"/>
<a href="classplugin_1_1mysql_1_1_boswatch_plugin.html#a2fb3e4559927837551f192cf13754583"/>
<a href="classplugin_1_1mysql_1_1_boswatch_plugin.html#a54fbd13ab387336c4261349bb252ccc3"/>
<a href="classplugin_1_1mysql_1_1_boswatch_plugin.html#a9176bb4f142a1ca499851051b2da8684"/>
<a href="classplugin_1_1mysql_1_1_boswatch_plugin.html#aa19e53f1b893899662c2510db9cfc4e1"/>
<a href="classplugin_1_1mysql_1_1_boswatch_plugin.html#aa421e2a472ac9ac3b9a13ec6bd5a5fca"/>
<a href="classplugin_1_1mysql_1_1_boswatch_plugin.html#ab7dc98122deb62b02cab749b3f4fee32"/>
<a href="classplugin_1_1mysql_1_1_boswatch_plugin.html#abfa5c5279cfe58cae60af8272fb50f92"/>
<a href="classplugin_1_1mysql_1_1_boswatch_plugin.html#adef1d378759ea53b9aebb4af72237260"/>
<a href="classplugin_1_1mysql_1_1_boswatch_plugin.html#aeaffdab7a2025c51d0af3151c475d1ec"/>
<a href="classplugin_1_1mysql_1_1_boswatch_plugin.html#aec48341c7ba834871813bfdb0c285d86"/>
<a href="classplugin_1_1mysql_1_1_boswatch_plugin.html#af4be87c8480d01c0d7f285c5de1ad045"/>
<a href="classplugin_1_1plugin_base_1_1_plugin_base.html"/>
<a href="classplugin_1_1plugin_base_1_1_plugin_base.html#a049f3c84ba64856a66532d60a7b3c823"/>
<a href="classplugin_1_1plugin_base_1_1_plugin_base.html#a115d9600af538a3b7b2cf63225361cfc"/>
<a href="classplugin_1_1plugin_base_1_1_plugin_base.html#a176d74cf5854616fc0e716226d29716f"/>
<a href="classplugin_1_1plugin_base_1_1_plugin_base.html#a1a9a3bc59e6e2737839138f098ba4fe5"/>
<a href="classplugin_1_1plugin_base_1_1_plugin_base.html#a2fc30d6a8691b7b1c2b7c1431a6dfa67"/>
<a href="classplugin_1_1plugin_base_1_1_plugin_base.html#a30f6b8fcaef2e480f3c4e270ed400a05"/>
<a href="classplugin_1_1plugin_base_1_1_plugin_base.html#a3689bf4fef985b41df640c79b2eb71b2"/>
<a href="classplugin_1_1plugin_base_1_1_plugin_base.html#a3b3164e45d334ca2dab14f28d352334b"/>
<a href="classplugin_1_1plugin_base_1_1_plugin_base.html#a55a4a34b3f98ae8162633a0caf77eea6"/>
<a href="classplugin_1_1plugin_base_1_1_plugin_base.html#a5c82d6def9c98bd482fa88248c4f355c"/>
<a href="classplugin_1_1plugin_base_1_1_plugin_base.html#a69bcc46e64dbaddf524f49adb246a491"/>
<a href="classplugin_1_1plugin_base_1_1_plugin_base.html#a75eb26af5668918fba36fd5fc795a66b"/>
<a href="classplugin_1_1plugin_base_1_1_plugin_base.html#a845b34feb0883393a1a521407ab37072"/>
<a href="classplugin_1_1plugin_base_1_1_plugin_base.html#a9968925b171eea70507286142e8a442d"/>
<a href="classplugin_1_1plugin_base_1_1_plugin_base.html#a9b7266a1e9e343c185181ad273a2fde2"/>
<a href="classplugin_1_1plugin_base_1_1_plugin_base.html#ab8555502760f06321573b32b20a07093"/>
<a href="classplugin_1_1plugin_base_1_1_plugin_base.html#ab9145f156441739cf1cd9d1b4a5e67c9"/>
<a href="classplugin_1_1plugin_base_1_1_plugin_base.html#abb9f93add76f10d02c72f75f1034e2ad"/>
<a href="classplugin_1_1plugin_base_1_1_plugin_base.html#abdb7ee79ffd6c4145fa5240b542c8187"/>
<a href="classplugin_1_1plugin_base_1_1_plugin_base.html#ade82c0cd7c4c180dc62e5e6ca425d063"/>
<a href="classplugin_1_1plugin_base_1_1_plugin_base.html#ae5d1664183b8986df4c61ebc96fb8483"/>
<a href="classplugin_1_1plugin_base_1_1_plugin_base.html#aeb241bbb7f19b71ec1d0e64be490f445"/>
<a href="classplugin_1_1plugin_base_1_1_plugin_base.html#af2d08ecea66961db0fd70e79927e7b80"/>
<a href="classplugin_1_1plugin_base_1_1_plugin_base.html#afbb808defd32c1cfc2714eba2f79654c"/>
<a href="classplugin_1_1plugin_base_1_1_plugin_base.html#afbeb6510e88e221358df19636cffe0be"/>
<a href="classplugin_1_1plugin_base_1_1_plugin_base.html#afe097ea5f51321784754e168ac1ca6d6"/>
<a href="classplugin_1_1telegram_1_1_boswatch_plugin.html"/>
<a href="classplugin_1_1telegram_1_1_boswatch_plugin.html#a07bd64a5b06e7a16d4438dd4fd231edb"/>
<a href="classplugin_1_1telegram_1_1_boswatch_plugin.html#a31348dca1c54dfd0dd268ee0c80089a3"/>
<a href="classplugin_1_1telegram_1_1_boswatch_plugin.html#a776065ec08ddb1412c9212a97b054596"/>
<a href="classplugin_1_1telegram_1_1_boswatch_plugin.html#aa118f52c5984d55acddb6823678bd30c"/>
<a href="classplugin_1_1telegram_1_1_boswatch_plugin.html#aa2cdc668f9e09149417a3481252f50d9"/>
<a href="classplugin_1_1telegram_1_1_boswatch_plugin.html#ab5d363141b79cd5a3d6c701d091c77b8"/>
<a href="classplugin_1_1telegram_1_1_boswatch_plugin.html#accea7cd16ddb267acd6f393628ec23d6"/>
<a href="classplugin_1_1telegram_1_1_boswatch_plugin.html#adfc28616ddda41af1b7980fbb1a5b617"/>
<a href="classplugin_1_1telegram_1_1_boswatch_plugin.html#afa8a57888af2b30126ae6826b1873135"/>
<a href="classplugin_1_1telegram_1_1_m_q_bot.html"/>
<a href="classplugin_1_1telegram_1_1_m_q_bot.html#a507bb5109a57f3ae4f424deedb44c9c9"/>
<a href="classplugin_1_1telegram_1_1_m_q_bot.html#a67cb2a543fc2dcf6c8e25493ee3dcd16"/>
<a href="classplugin_1_1telegram_1_1_m_q_bot.html#a792ef18fa266853822ec53862a32264a"/>
<a href="classplugin_1_1telegram_1_1_m_q_bot.html#a83cf2befc52ad0318c6f274a4f4e7106"/>
<a href="classplugin_1_1telegram_1_1_m_q_bot.html#a9f38fd67d29650b5976e4794b324c6b1"/>
<a href="classplugin_1_1template__plugin_1_1_boswatch_plugin.html"/>
<a href="classplugin_1_1template__plugin_1_1_boswatch_plugin.html#a101a2602e3dcd19bd70bed75721219e7"/>
<a href="classplugin_1_1template__plugin_1_1_boswatch_plugin.html#a15a07ec58d94ad4e52339d6f5b0bc38b"/>
<a href="classplugin_1_1template__plugin_1_1_boswatch_plugin.html#a58590a4f45b3a56ae86e08988176c884"/>
<a href="classplugin_1_1template__plugin_1_1_boswatch_plugin.html#a7aa0048b112116e841e7aeac7c6d92a7"/>
<a href="classplugin_1_1template__plugin_1_1_boswatch_plugin.html#ac2e80b20bc4e7bbdccf6c821207a70ac"/>
<a href="classplugin_1_1template__plugin_1_1_boswatch_plugin.html#adc94a0cafa6b6ff4d3b837fd6ac874a4"/>
<a href="classplugin_1_1template__plugin_1_1_boswatch_plugin.html#af332cd897823565ab3fbebf16e72c657"/>
<a href="classplugin_1_1template__plugin_1_1_boswatch_plugin.html#af5c36cb43b625a31e660b874b4ed03f5"/>
<a href="classplugin_1_1template__plugin_1_1_boswatch_plugin.html#af72d5ae2c1ae6a85c1582addc03aef7e"/>
<a href="functions.html"/>
<a href="functions_a.html"/>
<a href="functions_b.html"/>
<a href="functions_c.html"/>
<a href="functions_d.html"/>
<a href="functions_f.html"/>
<a href="functions_func.html"/>
<a href="functions_g.html"/>
<a href="functions_h.html"/>
<a href="functions_i.html"/>
<a href="functions_l.html"/>
<a href="functions_m.html"/>
<a href="functions_n.html"/>
<a href="functions_o.html"/>
<a href="functions_p.html"/>
<a href="functions_r.html"/>
<a href="functions_s.html"/>
<a href="functions_t.html"/>
<a href="functions_vars.html"/>
<a href="functions_z.html"/>
<a href="hierarchy.html"/>
<a href="md__r_e_a_d_m_e.html"/>
<a href="namespaceboswatch.html"/>
<a href="namespaceboswatch_1_1config_yaml.html"/>
<a href="namespaceboswatch_1_1decoder.html"/>
<a href="namespaceboswatch_1_1decoder_1_1decoder.html"/>
<a href="namespaceboswatch_1_1decoder_1_1fms_decoder.html"/>
<a href="namespaceboswatch_1_1decoder_1_1pocsag_decoder.html"/>
<a href="namespaceboswatch_1_1decoder_1_1zvei_decoder.html"/>
<a href="namespaceboswatch_1_1input_source.html"/>
<a href="namespaceboswatch_1_1input_source_1_1input_base.html"/>
<a href="namespaceboswatch_1_1input_source_1_1line_in_input.html"/>
<a href="namespaceboswatch_1_1input_source_1_1pulseaudio_input.html"/>
<a href="namespaceboswatch_1_1input_source_1_1sdr_input.html"/>
<a href="namespaceboswatch_1_1network.html"/>
<a href="namespaceboswatch_1_1network_1_1broadcast.html"/>
<a href="namespaceboswatch_1_1network_1_1client.html"/>
<a href="namespaceboswatch_1_1network_1_1client.html#a22b15c1baf1863884d6e0291c2513966"/>
<a href="namespaceboswatch_1_1network_1_1net_check.html"/>
<a href="namespaceboswatch_1_1network_1_1server.html"/>
<a href="namespaceboswatch_1_1network_1_1server.html#ab5d46499a149d27c2ffaf64e588dda82"/>
<a href="namespaceboswatch_1_1packet.html"/>
<a href="namespaceboswatch_1_1process_manager.html"/>
<a href="namespaceboswatch_1_1router.html"/>
<a href="namespaceboswatch_1_1router_1_1route.html"/>
<a href="namespaceboswatch_1_1router_1_1router.html"/>
<a href="namespaceboswatch_1_1router_1_1router_manager.html"/>
<a href="namespaceboswatch_1_1timer.html"/>
<a href="namespaceboswatch_1_1utils.html"/>
<a href="namespaceboswatch_1_1utils_1_1header.html"/>
<a href="namespaceboswatch_1_1utils_1_1header.html#a846f9efff4fb235364f841ec1d791b10"/>
<a href="namespaceboswatch_1_1utils_1_1header.html#abfcfacd6f6ddad16711aa24bbb878064"/>
<a href="namespaceboswatch_1_1utils_1_1misc.html"/>
<a href="namespaceboswatch_1_1utils_1_1misc.html#a705227a3e9fbe79ea7e7c2530dfe126a"/>
<a href="namespaceboswatch_1_1utils_1_1misc.html#afabe8cfe85ba7758d429e464a2135ec7"/>
<a href="namespaceboswatch_1_1utils_1_1paths.html"/>
<a href="namespaceboswatch_1_1utils_1_1paths.html#a0a22f5b2e8ba62f83d67af7c42ebaad9"/>
<a href="namespaceboswatch_1_1utils_1_1paths.html#a15d88d3367922c8b9a14558554861238"/>
<a href="namespaceboswatch_1_1utils_1_1paths.html#a34c64349179d47a5c4cda34fbd29bf7f"/>
<a href="namespaceboswatch_1_1utils_1_1paths.html#a5c1fbdc05d73387e0bdd376e8fc753b0"/>
<a href="namespaceboswatch_1_1utils_1_1paths.html#aaecc6714269132a12a9d5cf62cbac03e"/>
<a href="namespaceboswatch_1_1utils_1_1paths.html#ade4311d374a07bf378c543906c1c9a68"/>
<a href="namespaceboswatch_1_1utils_1_1paths.html#afbc68ddf51b2bf31d1d05568c23a829c"/>
<a href="namespaceboswatch_1_1utils_1_1version.html"/>
<a href="namespaceboswatch_1_1utils_1_1version.html#a375960f3bc974ca82fa3425cc8c9e222"/>
<a href="namespaceboswatch_1_1utils_1_1version.html#a7e37117140958fd08c7c23039e79c44f"/>
<a href="namespaceboswatch_1_1utils_1_1version.html#aa6bdd574d92e1ca63115a9ce49a70699"/>
<a href="namespaceboswatch_1_1utils_1_1version.html#ad97ebccff43c033d4b11a907797e95e7"/>
<a href="namespaceboswatch_1_1wildcard.html"/>
<a href="namespaceboswatch_1_1wildcard.html#a3bb21b17cf726f8a3ccf52db774a369e"/>
<a href="namespaceboswatch_1_1wildcard.html#aa05203c39c351fa3983c50fd84aea46b"/>
<a href="namespaceboswatch_1_1wildcard.html#ae98b70e53f0ce7080beda385f2f9e1f7"/>
<a href="namespacemembers.html"/>
<a href="namespacemembers_func.html"/>
<a href="namespacemembers_vars.html"/>
<a href="namespacemodule.html"/>
<a href="namespacemodule_1_1descriptor.html"/>
<a href="namespacemodule_1_1filter.html"/>
<a href="namespacemodule_1_1filter_1_1double_filter.html"/>
<a href="namespacemodule_1_1filter_1_1mode_filter.html"/>
<a href="namespacemodule_1_1filter_1_1regex_filter.html"/>
<a href="namespacemodule_1_1geocoding.html"/>
<a href="namespacemodule_1_1module_base.html"/>
<a href="namespacemodule_1_1template__module.html"/>
<a href="namespaceplugin.html"/>
<a href="namespaceplugin_1_1divera.html"/>
<a href="namespaceplugin_1_1http.html"/>
<a href="namespaceplugin_1_1mysql.html"/>
<a href="namespaceplugin_1_1plugin_base.html"/>
<a href="namespaceplugin_1_1telegram.html"/>
<a href="namespaceplugin_1_1template__plugin.html"/>
<a href="namespacetest.html"/>
<a href="namespacetest_1_1boswatch.html"/>
<a href="namespacetest_1_1boswatch_1_1test___server_client.html"/>
<a href="namespacetest_1_1boswatch_1_1test___server_client.html#a1271b9db62b50645fb46a4b51adb9923"/>
<a href="namespacetest_1_1boswatch_1_1test___server_client.html#a145d0499562f3fbffb487d83f62682a2"/>
<a href="namespacetest_1_1boswatch_1_1test___server_client.html#a3922a5d7b3d80c8132c2c57a6338c042"/>
<a href="namespacetest_1_1boswatch_1_1test___server_client.html#a3932473bb96c4478ff02d34da7c64dd7"/>
<a href="namespacetest_1_1boswatch_1_1test___server_client.html#a4000a5f32bab47ae79294c2bc60a2af1"/>
<a href="namespacetest_1_1boswatch_1_1test___server_client.html#a4f9d5c0058b014033e6a2f171c6b4e03"/>
<a href="namespacetest_1_1boswatch_1_1test___server_client.html#a53e16aba662adbe0ee440c745420e3c8"/>
<a href="namespacetest_1_1boswatch_1_1test___server_client.html#a575095769f32d0bdb47b2441bb1c9a98"/>
<a href="namespacetest_1_1boswatch_1_1test___server_client.html#a60e5ab09df9b95b31bed80deaa4bf608"/>
<a href="namespacetest_1_1boswatch_1_1test___server_client.html#a6eda50fc0446bd6144eb99bdb4236b12"/>
<a href="namespacetest_1_1boswatch_1_1test___server_client.html#a7dddf1aa22861c92b223230d271e10a3"/>
<a href="namespacetest_1_1boswatch_1_1test___server_client.html#a8dc17ebce3b733b3f8ba54b4ff915018"/>
<a href="namespacetest_1_1boswatch_1_1test___server_client.html#aab408817266e5b7e486b4c5b3b58f717"/>
<a href="namespacetest_1_1boswatch_1_1test___server_client.html#ab056b8e14f912c4fd86c547ac4b6aaf8"/>
<a href="namespacetest_1_1boswatch_1_1test___server_client.html#ab5b0baa157d1cc21bdceb44295afd471"/>
<a href="namespacetest_1_1boswatch_1_1test___server_client.html#ac68d64fea12533433a94626e3da6e45d"/>
<a href="namespacetest_1_1boswatch_1_1test___server_client.html#ad670dd2e727a291b576bb622cc0dcf94"/>
<a href="namespacetest_1_1boswatch_1_1test___server_client.html#ad69e19f0e9f05614a9033a8ef462d9df"/>
<a href="namespacetest_1_1boswatch_1_1test___server_client.html#adfb2ec707525faac8c67988da712604a"/>
<a href="namespacetest_1_1boswatch_1_1test___server_client.html#af1167739109b3916cb361ef1aaa38b39"/>
<a href="namespacetest_1_1boswatch_1_1test___server_client.html#af21668ce2e99a7922852f29b7fcc922c"/>
<a href="namespacetest_1_1boswatch_1_1test___server_client.html#af49d5647c2a61931bc75db21a3fc6713"/>
<a href="namespacetest_1_1boswatch_1_1test__broadcast.html"/>
<a href="namespacetest_1_1boswatch_1_1test__broadcast.html#a1beba8a355f948b974c6eca495688d53"/>
<a href="namespacetest_1_1boswatch_1_1test__broadcast.html#a3c900ba22a0b873a784370d3f02e6a8d"/>
<a href="namespacetest_1_1boswatch_1_1test__broadcast.html#a628a658523ce85347ebc47af29a1f089"/>
<a href="namespacetest_1_1boswatch_1_1test__broadcast.html#a6941762a8a30c6f68e7e9048a0eb1fde"/>
<a href="namespacetest_1_1boswatch_1_1test__broadcast.html#ab5b4c445d8d6e44dd01b04728c518264"/>
<a href="namespacetest_1_1boswatch_1_1test__broadcast.html#abe7c9d4433ecbdfd5ffd3978af0fad18"/>
<a href="namespacetest_1_1boswatch_1_1test__broadcast.html#ac9e7df9092c7fd58dc3457ba16832a68"/>
<a href="namespacetest_1_1boswatch_1_1test__broadcast.html#ade3b23fe1ea7dc4c21693d3a24320319"/>
<a href="namespacetest_1_1boswatch_1_1test__config.html"/>
<a href="namespacetest_1_1boswatch_1_1test__config.html#a06ecf35c7fbac4483e2c5f078fab754c"/>
<a href="namespacetest_1_1boswatch_1_1test__config.html#a2312ded385013e4667e9dc8835984a9c"/>
<a href="namespacetest_1_1boswatch_1_1test__config.html#a324ade0ada38618bb28d9437953a2a03"/>
<a href="namespacetest_1_1boswatch_1_1test__config.html#a3c7f597f593254e2e61212807bb99d30"/>
<a href="namespacetest_1_1boswatch_1_1test__config.html#a627a9a0f958deceb1691a905c001ebf0"/>
<a href="namespacetest_1_1boswatch_1_1test__config.html#ab1bb918fa2db4eef2e78d287523c737c"/>
<a href="namespacetest_1_1boswatch_1_1test__config.html#ab1ebd7a6a4468befcfab36b719d21add"/>
<a href="namespacetest_1_1boswatch_1_1test__config.html#abc3e5ba81f4ef81cee10f7970a84ebe3"/>
<a href="namespacetest_1_1boswatch_1_1test__config.html#acc781eabff5c119fd7b8ebfe475395c4"/>
<a href="namespacetest_1_1boswatch_1_1test__config.html#ad3102474ad53dd0219ae7ea27b84b5fa"/>
<a href="namespacetest_1_1boswatch_1_1test__config.html#aef9f2e1a513a2afc84e14f0a30d52bef"/>
<a href="namespacetest_1_1boswatch_1_1test__config.html#afa3ad3c13e787e232f1d9dc8152556f0"/>
<a href="namespacetest_1_1boswatch_1_1test__decoder.html"/>
<a href="namespacetest_1_1boswatch_1_1test__decoder.html#a04c58f267d23fc6f2de1a12a9e606aee"/>
<a href="namespacetest_1_1boswatch_1_1test__decoder.html#a0b6b9f0db1716a8925b66805d6e1149f"/>
<a href="namespacetest_1_1boswatch_1_1test__decoder.html#a1942d82ff3c0be5b386a04c4c93d2852"/>
<a href="namespacetest_1_1boswatch_1_1test__decoder.html#a302b9b5e85adac7b3b408c4c16c84f48"/>
<a href="namespacetest_1_1boswatch_1_1test__decoder.html#a3a25cf1893422d00341fb29cbef1cf9c"/>
<a href="namespacetest_1_1boswatch_1_1test__decoder.html#a72c83611f4f32d6485976eed69257e06"/>
<a href="namespacetest_1_1boswatch_1_1test__decoder.html#a78cf0cd07d79099866e88d0519fd66b2"/>
<a href="namespacetest_1_1boswatch_1_1test__decoder.html#a9107c0722a3150ac0143551453699548"/>
<a href="namespacetest_1_1boswatch_1_1test__decoder.html#a95e9d856e19b5b1e95b87ab8f9313c54"/>
<a href="namespacetest_1_1boswatch_1_1test__decoder.html#ab477b786838cd7ec4e3aa16c2329062f"/>
<a href="namespacetest_1_1boswatch_1_1test__decoder.html#aca264520be505b58de78ff6865dfda02"/>
<a href="namespacetest_1_1boswatch_1_1test__header.html"/>
<a href="namespacetest_1_1boswatch_1_1test__header.html#a3307a12dfa411c136bb5d46e1c257962"/>
<a href="namespacetest_1_1boswatch_1_1test__header.html#a86f28f9ff6e2cca5b8da255b5403fcbb"/>
<a href="namespacetest_1_1boswatch_1_1test__header.html#addb6d05be38f571d02a5df7f2645866f"/>
<a href="namespacetest_1_1boswatch_1_1test__packet.html"/>
<a href="namespacetest_1_1boswatch_1_1test__packet.html#a765c3df39bd5263bb4004eabada03fba"/>
<a href="namespacetest_1_1boswatch_1_1test__packet.html#a85110c044237b58d69bc8ba71ef614d9"/>
<a href="namespacetest_1_1boswatch_1_1test__packet.html#a98582b979644b53581019ba0b6025bc9"/>
<a href="namespacetest_1_1boswatch_1_1test__packet.html#a9f47203586ef1c0d6e1fbc8fe80d3fd7"/>
<a href="namespacetest_1_1boswatch_1_1test__packet.html#ada01cdaa37d9a20cc14a92ad07a1ee37"/>
<a href="namespacetest_1_1boswatch_1_1test__packet.html#ade58d1d4fadad6f32fd5be502da07040"/>
<a href="namespacetest_1_1boswatch_1_1test__packet.html#aea179f6a3180612d1b42b0cf284837f8"/>
<a href="namespacetest_1_1boswatch_1_1test__paths.html"/>
<a href="namespacetest_1_1boswatch_1_1test__paths.html#a1d6f2579cfa9da2b547fd9d26b1f98a6"/>
<a href="namespacetest_1_1boswatch_1_1test__paths.html#a7ec7af2a28a781231f40b923edea4a73"/>
<a href="namespacetest_1_1boswatch_1_1test__paths.html#acb35bf68938d6e9d9b964e7e90977500"/>
<a href="namespacetest_1_1boswatch_1_1test__paths.html#aee6cc09779b4f128855872445cfc01cf"/>
<a href="namespacetest_1_1boswatch_1_1test__paths.html#af930008a1e70eec4ba2209289a027e0f"/>
<a href="namespacetest_1_1boswatch_1_1test__timer.html"/>
<a href="namespacetest_1_1boswatch_1_1test__timer.html#a0138848991e328da81931a6eb145378b"/>
<a href="namespacetest_1_1boswatch_1_1test__timer.html#a14ab4cd8f7881453a4b8996544305e4c"/>
<a href="namespacetest_1_1boswatch_1_1test__timer.html#a42d0104d3b764c0e58b3c623bebbdcdf"/>
<a href="namespacetest_1_1boswatch_1_1test__timer.html#a709826d54a0d446157f94fc96c6f73bf"/>
<a href="namespacetest_1_1boswatch_1_1test__timer.html#a762602b6405cfc27f0c3dfd0569e96fe"/>
<a href="namespacetest_1_1boswatch_1_1test__timer.html#a797fb308507d78d2eaef60d07493130a"/>
<a href="namespacetest_1_1boswatch_1_1test__timer.html#a9113cf1f0dca71d596e8d939baf42ecd"/>
<a href="namespacetest_1_1boswatch_1_1test__timer.html#aa13f9738515b90525e66330cc4919de4"/>
<a href="namespacetest_1_1boswatch_1_1test__timer.html#ab7d880c3c176579d74c381f7d288e380"/>
<a href="namespacetest_1_1boswatch_1_1test__timer.html#ab976b93aca683f828ac3831ca5e487ab"/>
<a href="namespacetest_1_1boswatch_1_1test__timer.html#abf32038d45ddda5ba6c027ea0c7e4647"/>
<a href="namespacetest_1_1boswatch_1_1test__timer.html#ac923af185a61ed08924bf70dad51b4ed"/>
<a href="namespacetest_1_1module.html"/>
<a href="namespacetest_1_1module_1_1test__descriptor.html"/>
<a href="namespacetest_1_1module_1_1test__descriptor.html#a17733f97306086e5606a176ce9df7a86"/>
<a href="namespacetest_1_1module_1_1test__descriptor.html#a654c266edff45e6adf0d69d9cf1ce95f"/>
<a href="namespacetest_1_1module_1_1test__descriptor.html#a8983a726040e54f7e106efd8045c7279"/>
<a href="namespacetest_1_1module_1_1test__descriptor.html#a9a7997ce7320161ac68ccbdbe52cc7e3"/>
<a href="namespacetest_1_1module_1_1test__descriptor.html#ad6fee7ed16ec2287e7095fd16339f4db"/>
<a href="namespacetest_1_1module_1_1test__descriptor.html#ad7c1c4f59c5c1992392002b1cbfe1045"/>
<a href="namespacetest_1_1module_1_1test__descriptor.html#af2b796a93343766a8791b20dd773bab5"/>
<a href="namespacetest_1_1plugin.html"/>
<a href="namespacetest_1_1test__template.html"/>
<a href="namespacetest_1_1test__template.html#a024dd9d0209a37f1f73b353f44a4b23d"/>
<a href="namespacetest_1_1test__template.html#a13399c6230dfa53d54aa3b535f46b594"/>
<a href="namespacetest_1_1test__template.html#a3049692c8eb437536ea0c21f51677a1d"/>
<a href="namespacetest_1_1test__template.html#a38400063d625095e43c26e3249cca422"/>
<a href="namespacetest_1_1test__template.html#aed0a8a3bd07e9c6db89e9a4596e27316"/>
<a href="todo.html"/>
</body>
</html>

198
api/html/dynsections.js Normal file
View file

@ -0,0 +1,198 @@
/*
@licstart The following is the entire license notice for the JavaScript code in this file.
The MIT License (MIT)
Copyright (C) 1997-2020 by Dimitri van Heesch
Permission is hereby granted, free of charge, to any person obtaining a copy of this software
and associated documentation files (the "Software"), to deal in the Software without restriction,
including without limitation the rights to use, copy, modify, merge, publish, distribute,
sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or
substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@licend The above is the entire license notice for the JavaScript code in this file
*/
function toggleVisibility(linkObj) {
return dynsection.toggleVisibility(linkObj);
}
let dynsection = {
// helper function
updateStripes : function() {
$('table.directory tr').
removeClass('even').filter(':visible:even').addClass('even');
$('table.directory tr').
removeClass('odd').filter(':visible:odd').addClass('odd');
},
toggleVisibility : function(linkObj) {
const base = $(linkObj).attr('id');
const summary = $('#'+base+'-summary');
const content = $('#'+base+'-content');
const trigger = $('#'+base+'-trigger');
const src=$(trigger).attr('src');
if (content.is(':visible')===true) {
content.hide();
summary.show();
$(linkObj).addClass('closed').removeClass('opened');
$(trigger).attr('src',src.substring(0,src.length-8)+'closed.png');
} else {
content.show();
summary.hide();
$(linkObj).removeClass('closed').addClass('opened');
$(trigger).attr('src',src.substring(0,src.length-10)+'open.png');
}
return false;
},
toggleLevel : function(level) {
$('table.directory tr').each(function() {
const l = this.id.split('_').length-1;
const i = $('#img'+this.id.substring(3));
const a = $('#arr'+this.id.substring(3));
if (l<level+1) {
i.removeClass('iconfopen iconfclosed').addClass('iconfopen');
a.html('&#9660;');
$(this).show();
} else if (l==level+1) {
i.removeClass('iconfclosed iconfopen').addClass('iconfclosed');
a.html('&#9658;');
$(this).show();
} else {
$(this).hide();
}
});
this.updateStripes();
},
toggleFolder : function(id) {
// the clicked row
const currentRow = $('#row_'+id);
// all rows after the clicked row
const rows = currentRow.nextAll("tr");
const re = new RegExp('^row_'+id+'\\d+_$', "i"); //only one sub
// only match elements AFTER this one (can't hide elements before)
const childRows = rows.filter(function() { return this.id.match(re); });
// first row is visible we are HIDING
if (childRows.filter(':first').is(':visible')===true) {
// replace down arrow by right arrow for current row
const currentRowSpans = currentRow.find("span");
currentRowSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed");
currentRowSpans.filter(".arrow").html('&#9658;');
rows.filter("[id^=row_"+id+"]").hide(); // hide all children
} else { // we are SHOWING
// replace right arrow by down arrow for current row
const currentRowSpans = currentRow.find("span");
currentRowSpans.filter(".iconfclosed").removeClass("iconfclosed").addClass("iconfopen");
currentRowSpans.filter(".arrow").html('&#9660;');
// replace down arrows by right arrows for child rows
const childRowsSpans = childRows.find("span");
childRowsSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed");
childRowsSpans.filter(".arrow").html('&#9658;');
childRows.show(); //show all children
}
this.updateStripes();
},
toggleInherit : function(id) {
const rows = $('tr.inherit.'+id);
const img = $('tr.inherit_header.'+id+' img');
const src = $(img).attr('src');
if (rows.filter(':first').is(':visible')===true) {
rows.css('display','none');
$(img).attr('src',src.substring(0,src.length-8)+'closed.png');
} else {
rows.css('display','table-row'); // using show() causes jump in firefox
$(img).attr('src',src.substring(0,src.length-10)+'open.png');
}
},
};
let codefold = {
opened : true,
// in case HTML_COLORSTYLE is LIGHT or DARK the vars will be replaced, so we write them out explicitly and use double quotes
plusImg: [ "var(--fold-plus-image)", "var(--fold-plus-image-relpath)" ],
minusImg: [ "var(--fold-minus-image)", "var(--fold-minus-image-relpath)" ],
// toggle all folding blocks
toggle_all : function(relPath) {
if (this.opened) {
$('#fold_all').css('background-image',this.plusImg[relPath]);
$('div[id^=foldopen]').hide();
$('div[id^=foldclosed]').show();
} else {
$('#fold_all').css('background-image',this.minusImg[relPath]);
$('div[id^=foldopen]').show();
$('div[id^=foldclosed]').hide();
}
this.opened=!this.opened;
},
// toggle single folding block
toggle : function(id) {
$('#foldopen'+id).toggle();
$('#foldclosed'+id).toggle();
},
init : function(relPath) {
$('span[class=lineno]').css({
'padding-right':'4px',
'margin-right':'2px',
'display':'inline-block',
'width':'54px',
'background':'linear-gradient(var(--fold-line-color),var(--fold-line-color)) no-repeat 46px/2px 100%'
});
// add global toggle to first line
$('span[class=lineno]:first').append('<span class="fold" id="fold_all" '+
'onclick="javascript:codefold.toggle_all('+relPath+');" '+
'style="background-image:'+this.minusImg[relPath]+';"></span>');
// add vertical lines to other rows
$('span[class=lineno]').not(':eq(0)').append('<span class="fold"></span>');
// add toggle controls to lines with fold divs
$('div[class=foldopen]').each(function() {
// extract specific id to use
const id = $(this).attr('id').replace('foldopen','');
// extract start and end foldable fragment attributes
const start = $(this).attr('data-start');
const end = $(this).attr('data-end');
// replace normal fold span with controls for the first line of a foldable fragment
$(this).find('span[class=fold]:first').replaceWith('<span class="fold" '+
'onclick="javascript:codefold.toggle(\''+id+'\');" '+
'style="background-image:'+codefold.minusImg[relPath]+';"></span>');
// append div for folded (closed) representation
$(this).after('<div id="foldclosed'+id+'" class="foldclosed" style="display:none;"></div>');
// extract the first line from the "open" section to represent closed content
const line = $(this).children().first().clone();
// remove any glow that might still be active on the original line
$(line).removeClass('glow');
if (start) {
// if line already ends with a start marker (e.g. trailing {), remove it
$(line).html($(line).html().replace(new RegExp('\\s*'+start+'\\s*$','g'),''));
}
// replace minus with plus symbol
$(line).find('span[class=fold]').css('background-image',codefold.plusImg[relPath]);
// append ellipsis
$(line).append(' '+start+'<a href="javascript:codefold.toggle(\''+id+'\')">&#8230;</a>'+end);
// insert constructed line into closed div
$('#foldclosed'+id).html(line);
});
},
};
/* @license-end */

Some files were not shown because too many files have changed in this diff Show more