This MVP release provides a complete full-stack solution for managing action mappings in Geutebruck's GeViScope and GeViSoft video surveillance systems. ## Features ### Flutter Web Application (Port 8081) - Modern, responsive UI for managing action mappings - Action picker dialog with full parameter configuration - Support for both GSC (GeViScope) and G-Core server actions - Consistent UI for input and output actions with edit/delete capabilities - Real-time action mapping creation, editing, and deletion - Server categorization (GSC: prefix for GeViScope, G-Core: prefix for G-Core servers) ### FastAPI REST Backend (Port 8000) - RESTful API for action mapping CRUD operations - Action template service with comprehensive action catalog (247 actions) - Server management (G-Core and GeViScope servers) - Configuration tree reading and writing - JWT authentication with role-based access control - PostgreSQL database integration ### C# SDK Bridge (gRPC, Port 50051) - Native integration with GeViSoft SDK (GeViProcAPINET_4_0.dll) - Action mapping creation with correct binary format - Support for GSC and G-Core action types - Proper Camera parameter inclusion in action strings (fixes CrossSwitch bug) - Action ID lookup table with server-specific action IDs - Configuration reading/writing via SetupClient ## Bug Fixes - **CrossSwitch Bug**: GSC and G-Core actions now correctly display camera/PTZ head parameters in GeViSet - Action strings now include Camera parameter: `@ PanLeft (Comment: "", Camera: 101028)` - Proper filter flags and VideoInput=0 for action mappings - Correct action ID assignment (4198 for GSC, 9294 for G-Core PanLeft) ## Technical Stack - **Frontend**: Flutter Web, Dart, Dio HTTP client - **Backend**: Python FastAPI, PostgreSQL, Redis - **SDK Bridge**: C# .NET 8.0, gRPC, GeViSoft SDK - **Authentication**: JWT tokens - **Configuration**: GeViSoft .set files (binary format) ## Credentials - GeViSoft/GeViScope: username=sysadmin, password=masterkey - Default admin: username=admin, password=admin123 ## Deployment All services run on localhost: - Flutter Web: http://localhost:8081 - FastAPI: http://localhost:8000 - SDK Bridge gRPC: localhost:50051 - GeViServer: localhost (default port) Generated with Claude Code (https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
128 lines
4.9 KiB
HTML
128 lines
4.9 KiB
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
|
<title>Geutebrueck GeViSoftSDK .NET Wrapper: Graph Legend</title>
|
|
|
|
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
|
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
|
|
|
|
|
|
|
</head>
|
|
<body>
|
|
<div id="top"><!-- do not remove this div! -->
|
|
|
|
|
|
<div id="titlearea">
|
|
<table cellspacing="0" cellpadding="0">
|
|
<tbody>
|
|
<tr style="height: 56px;">
|
|
|
|
<td id="projectlogo"><img alt="Logo" src="label_geutebrueck_sdk_small.png"/></td>
|
|
|
|
|
|
<td style="padding-left: 0.5em;">
|
|
<div id="projectname">Geutebrueck GeViSoftSDK .NET Wrapper
|
|
|
|
</div>
|
|
|
|
</td>
|
|
|
|
|
|
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
|
|
<!-- Generated by Doxygen 1.7.5.1 -->
|
|
<div id="navrow1" class="tabs">
|
|
<ul class="tablist">
|
|
<li><a href="index.html"><span>Main Page</span></a></li>
|
|
<li><a href="modules.html"><span>Modules</span></a></li>
|
|
<li><a href="annotated.html"><span>Classes</span></a></li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
<div class="header">
|
|
<div class="headertitle">
|
|
<div class="title">Graph Legend</div> </div>
|
|
</div>
|
|
<div class="contents">
|
|
<p>This page explains how to interpret the graphs that are generated by doxygen.</p>
|
|
<p>Consider the following example: </p>
|
|
<div class="fragment"><pre class="fragment"><span class="comment">/*! Invisible class because of truncation */</span>
|
|
<span class="keyword">class </span>Invisible { };
|
|
<span class="comment"></span>
|
|
<span class="comment">/*! Truncated class, inheritance relation is hidden */</span>
|
|
<span class="keyword">class </span>Truncated : <span class="keyword">public</span> Invisible { };
|
|
|
|
<span class="comment">/* Class not documented with doxygen comments */</span>
|
|
<span class="keyword">class </span>Undocumented { };
|
|
<span class="comment"></span>
|
|
<span class="comment">/*! Class that is inherited using public inheritance */</span>
|
|
<span class="keyword">class </span>PublicBase : <span class="keyword">public</span> Truncated { };
|
|
<span class="comment"></span>
|
|
<span class="comment">/*! A template class */</span>
|
|
<span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keyword">class </span>Templ { };
|
|
<span class="comment"></span>
|
|
<span class="comment">/*! Class that is inherited using protected inheritance */</span>
|
|
<span class="keyword">class </span>ProtectedBase { };
|
|
<span class="comment"></span>
|
|
<span class="comment">/*! Class that is inherited using private inheritance */</span>
|
|
<span class="keyword">class </span>PrivateBase { };
|
|
<span class="comment"></span>
|
|
<span class="comment">/*! Class that is used by the Inherited class */</span>
|
|
<span class="keyword">class </span>Used { };
|
|
<span class="comment"></span>
|
|
<span class="comment">/*! Super class that inherits a number of other classes */</span>
|
|
<span class="keyword">class </span>Inherited : <span class="keyword">public</span> PublicBase,
|
|
<span class="keyword">protected</span> ProtectedBase,
|
|
<span class="keyword">private</span> PrivateBase,
|
|
<span class="keyword">public</span> Undocumented,
|
|
<span class="keyword">public</span> Templ<int>
|
|
{
|
|
<span class="keyword">private</span>:
|
|
Used *m_usedClass;
|
|
};
|
|
</pre></div><p> This will result in the following graph:</p>
|
|
<center><div class="image">
|
|
<img src="graph_legend.png" alt="graph_legend.png"/>
|
|
</div>
|
|
</center> <p>The boxes in the above graph have the following meaning: </p>
|
|
<ul>
|
|
<li>
|
|
A filled gray box represents the struct or class for which the graph is generated. </li>
|
|
<li>
|
|
A box with a black border denotes a documented struct or class. </li>
|
|
<li>
|
|
A box with a grey border denotes an undocumented struct or class. </li>
|
|
<li>
|
|
A box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries. </li>
|
|
</ul>
|
|
<p>The arrows have the following meaning: </p>
|
|
<ul>
|
|
<li>
|
|
A dark blue arrow is used to visualize a public inheritance relation between two classes. </li>
|
|
<li>
|
|
A dark green arrow is used for protected inheritance. </li>
|
|
<li>
|
|
A dark red arrow is used for private inheritance. </li>
|
|
<li>
|
|
A purple dashed arrow is used if a class is contained or used by another class. The arrow is labeled with the variable(s) through which the pointed class or struct is accessible. </li>
|
|
<li>
|
|
A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labeled with the template parameters of the instance. </li>
|
|
</ul>
|
|
</div>
|
|
|
|
|
|
<hr class="footer"/><address class="footer"><small>
|
|
Generated on Fri Dec 9 2011 11:16:05 for Geutebrueck GeViSoftSDK .NET Wrapper by  <a href="http://www.doxygen.org/index.html">
|
|
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
|
</a> 1.7.5.1
|
|
</small></address>
|
|
|
|
</body>
|
|
</html>
|