SecurOS UinP Programming Guide 11.7
SecurOS UinP Programming Guide 11.7
Integration Guide
SecurOS UinP Integration Guide (UINPINTEG - EN, build 120 on 9/28/2023).
SecurOS® ("SecurOS") and all respective logos are trademarks of ISS Corp, in the U.S. and/or other countries.
Intelligent Security Systems reserves the right to make changes to both this Manual and to the products it describes. System
specifications are subject to change without notice. Nothing contained within this Manual is intended as any offer, warranty, promise
or contractual condition, and must not be taken as such.
No part of this publication may be reproduced, transmitted, transcribed, stored in a retrieval system or translated into any human or
computer language in any form by any means without the express written permission of the copyright holder. Unauthorized copying
of this publication may not only infringe copyright but also reduce the ability of Intelligent Security Systems to provide accurate and
up-to-date information to both users and operators.
SecurOS UinP 3 Integration Guide
Contents
Contents
1 Preface 4
1.1 Scope
........................................................................... 4
1.2 Target
. . . Audience
........................................................................ 4
1.3 Using
. . .This
. . . .Manual
.................................................................... 4
1.4 Getting
. . . .Technical
. . . . . . . . .Support
.............................................................. 4
1.5 SecurOS
. . . . . Editions
. . . . . . . .Naming
. . . . . . .Convention
....................................................... 5
1.6 Design
. . . .Convention
....................................................................... 6
1.7 Design
. . . .Elements
....................................................................... 6
2 General Description 7
www.issivs.com
SecurOS UinP 4 Integration Guide
Preface
1 Preface
This section contains general information about this document, the means of its design and use, as well
as how to get additional technical support for the product.
1.1 Scope
This guide describes SecurOS Universal Integration Point resources that are used to integrate external
systems with SecurOS.
To get online help (Microsoft HTML Help) just press the F1 key when running SecurOS. In
administration mode You can get context help for a given object/utility by pressing the F1 key when its
settings window/utility window is open. In operator mode, use the F1 key to open a description of the
active window of the current operator interface or utility.
If you have any questions after reading this manual, please address them to your system administrator
or supervisor.
For any further information you can contact the Intelligent Security Systems Technical Support Team:
Note. For all technical support requests, please open a ticket from the ISS Partner Portal:
https://support.issivs.com. You will need to create an account if you don’t already have one.
www.issivs.com
SecurOS UinP 5 Integration Guide
Preface
· in USA:
Phone: +1 732 855 1111
· in Canada:
Phone: +1 778 929 8565
· in Mexico:
Phone: +52 55 9001 5252
· in Colombia:
Phone: +57 320 303 2849
· in Brazil:
Phone: +55 85 9668 2530
· in Central America and Caribbean:
Phone: +502 5517 8395
· in Argentina/ Paraguay/ Uruguay:
Phone: +54 911 5039 6440
· in Peru/ Bolivia/ Chile:
Phone: +56 9 3261 9893
· in Ecuador:
Phone: +57 312 255 2932
· in Venezuela:
Phone: +57 321 722 0425
· in Europe:
Phone: +380 44 299 0810
· in Dubai:
Phone: +971 4 874 7100
· in Qatar:
Phone: +974 6 677 8309
· in Saudi Arabia:
Phone: +966 54 109 9699
To solve problems faster, we recommend preparing the service information described in the Technical
Support Information Section before addressing the Technical Support Team.
www.issivs.com
SecurOS UinP 6 Integration Guide
Preface
For product designation regardless of its edition the SecurOS general term is used in the framework of
the given document.
Sections that describe the functionality available for some editions are marked by a special footnote as
in the example below:
The functionality is available in the following editions: SecurOS Monitoring & Control Center,
SecurOS Datacenter, SecurOS Enterprise, SecurOS Premium, SecurOS Prof essional.
Font Description
bold italic type Used to mark out the elements of homogeneous lists.
Used to mark out macro text and programming code, file names and
monospace their paths. Also it is used to specify the necessary options, to mark
out values specified by the user from the keyboard (manually).
Additional Information
Used to display additional information. These type of elements contain, for example, the description of options for
executing a task or reference to additional literature.
www.issivs.com
SecurOS UinP 7 Integration Guide
General Description
2 General Description
This functionality is available in the following editions: SecurOS Monitoring & Control Center,
SecurOS Datacenter, SecurOS Enterprise, SecurOS Premium.
SecurOS Universal Integration Point (UinP) — is an integration interface that applies to use custom
objects into SecurOS. Integration of SecurOS events and commands into customer's software is also
possible. Integration of an external system means creation of an event converter which is responsible
for communication between SecurOS and the external system. The UinP provides the following
capabilities:
· Embedding of 3rd party system objects into SecurOS.
· Receiving certain events of SecurOS objects.
· Sending 3rd party events into SecurOS.
· Sending control commands to SecurOS objects.
www.issivs.com
SecurOS UinP 8 Integration Guide
Integration Process Overview
www.issivs.com
SecurOS UinP 9 Integration Guide
Registering an external system to SecurOS
www.issivs.com
SecurOS UinP 10 Integration Guide
Registering an external system to SecurOS
It is the responsibility of the integration to verify the consistency of the description (that no one has
modified it to e.g. disable the license restriction).
· port — SecurOS transport ID for the object type. Can be specified for an interface object type only.
MUST be unique among all transport IDs used by all types in the system, including internal
transport IDs, as well as transport IDs for another integrations.
· process_name — Name without extension of the executable to run. Can be specified for a top-level
object type only. Executable file and all it's dependencies MUST be placed in the SecurOS folder.
The core will run this executable after the object creation. Executable MUST be able to handle these
events that are used to stop process:
#ifdef _WIN32
# define WM_EXIT (WM_USER + 2000)
#else
# define SIGEXIT (SIGRTMAX - 7)
#endif
· receive — object, optional — Event subscription. All listed events of types specified in the
subscription will be redirected to the integration in the following form:
subscribed-type|subscribed-id|EVENT|event_type<object-type>,
event_id<object-id>,event_action<object-event>,original-parameters...
{
"version": 1,
"structure":
[{
"parent": "INTEGRATION",
"type": "TEST",
"children":
[{
"type": "TEST_CHILD",
"children":
[{
"type": "TEST_GRANDSON"
},{
"type": "TEST_GRANDDAUGHTER"
}]
}]
}]
}
The same integration description with an interface object and event subscription:
Listing 2. Example of structure description with interface objects and event subscriptions
{
"version": 1,
www.issivs.com
SecurOS UinP 11 Integration Guide
Registering an external system to SecurOS
"structure":
[{
"parent": "INTEGRATION",
"type": "TEST",
"children":
[{
"type": "TEST_CHILD",
"children":
[{
"type": "TEST_GRANDSON"
},{
"type": "TEST_GRANDDAUGHTER"
}]
}],
"receive":
{
"TYPE_1": ["EVENT_1"],
"TYPE_2": ["EVENT_2", "EVENT_3"]
}
},{
"parent": "DISPLAY",
"type": "TEST_GUI",
"port": 3010
}]
}
Example: ...\SecurOS\Integrations\test.integration.json.
[OBJ_YOUR_OBJECT_TYPE_NAME]
id, CHAR, 16
name, CHAR, 60
parent_id, CHAR, 16
flags, INTEGER
www.issivs.com
SecurOS UinP 12 Integration Guide
Registering an external system to SecurOS
[OBJ_TEST]
id, CHAR, 16
name, CHAR, 60
parent_id, CHAR, 16
flags, INTEGER
[OBJ_TEST_CHILD]
id, CHAR, 16
name, CHAR, 60
parent_id, CHAR, 16
flags, INTEGER
[OBJ_TEST_GRANDSON]
id, CHAR, 16
name, CHAR, 60
parent_id, CHAR, 16
flags, INTEGER
[OBJ_TEST_GRANDDAUGHTER]
id, CHAR, 16
name, CHAR, 60
parent_id, CHAR, 16
flags, INTEGER
DB registration activation
You MUST set Ready for archiving bit (attribute) on the SecurOS_intallation_dir/securos.dbi
file.
www.issivs.com
SecurOS UinP 13 Integration Guide
Registering an external system to SecurOS
[OBJTYPE]
<object_type>|<object_name>|<grouping_object_name>|, where:
[OBJTYPE]
TEST |Test integration root object | |
TEST_CHILD |Test integration child object | |
TEST_GRANDSON |Test integration grandson object |Grandsons |
TEST_GRANDDAUGHTER|Test integration granddaughter object|Granddaughters|
[EVENT]
<object_type>|<event_type>|<reserved>|<object_event_name>|<flags>|, where:
[EVENT]
TEST |TEST_EVENT||Test event of test integration root object|AS |
www.issivs.com
SecurOS UinP 14 Integration Guide
Registering an external system to SecurOS
www.issivs.com
SecurOS UinP 15 Integration Guide
Implementation of the external system SecurOS connection module
To receive and send messages/commands as well as represent your system in the SecurOS Object Tree
and on SecurOS Maps, you need to perform the following steps:
· Connect to SecurOS.
· Receive, dispatch and handle messages.
· Send your messages and commands.
· Control connection state.
· Disconnect when your system is through.
The only proper way to connect SecurOS is to use ConnectEx function of IIDK.
· ConnectEx function.
· Using ConnectEx function.
ConnectEx function
ConnectEx function has the following signature:
www.issivs.com
SecurOS UinP 16 Integration Guide
Implementation of the external system SecurOS connection module
Parameters description:
· address — IP address of the SecurOS server (can be provided by SecurOS installer).
· port — target port (set 3000 to connect universal integration point).
· id — connection identifier used to distinguish different connections. This parameter is intended to
be passed into Disconnect and SendMsg functions.
· lpfunc — pointer to a message receiving function.
· user_param — this value will be provided in your callback function to distinguish connected
source.
· connect_type — set this parameter to '-1' to make IIDK reconnect automatically if the connection
with SecurOS fails.
· connect_attempts — number of reconnection attempts before function fails. Choose and set
appropriate for your case value.
· return value — 0 if all connection attempts fail.
To receive messages and commands from SecurOS you MUST implement a callback function which will
process incoming messages and commands.
· Callback signature.
· Using callback to dispatch messages.
· Message structure.
Callback signature
Parameters description:
· msg — serialized message from SecurOS.
www.issivs.com
SecurOS UinP 17 Integration Guide
Implementation of the external system SecurOS connection module
Message structure
Message has the following structure:
SOURCE_TYPE|SOURCE_ID|EVENT_TYPE|param1_name<param1_value>,
param2_name<param2_value>...paramN_name<paramN_value>, where:
· SOURCE_TYPE — type of the object which emitted the message (ex. TEST).
· SOURCE_ID — id of the object which emitted the message (ex. 1).
· EVENT_TYPE — type of event emitted (ex. TEST_EVENT).
· param1_name<param1_value>,param2_name<param2_value>...paramN_name<paramN_value>
— parameters of the emitted message (ex.
test_param<test_value>,test_param2<test_value2>).
Example:
TEST|1|TEST_EVENT|test_param<test_value>,test_param2<test_value2>
Parameters description:
· id — connection id specified in ConnectEx function.
· serializedMessage — serialized into string format message.
· return value — 0 if any error occurred while sending message.
www.issivs.com
SecurOS UinP 18 Integration Guide
Implementation of the external system SecurOS connection module
Sending an event
Whenever your application needs to send a notification into SecurOS you MUST create a message,
serialize it into string and invoke SendMsg function.
Example:
CSOSMessage msg("TEST", "TEST_EVENT");
/* Above this is an idea of C++ message implementation */
msg.SetParam("test_param", "test_value");
SendMsg(conn_id, msg.ToString().c_str());
Sending a command
Command is a special type of event which is delivered to a concrete object of the SecurOS Object Tree.
So exactly this object processes this message. To send a command you need to use a special format of
the event:
CORE||DO_REACT|source_type<TARGET_OBJECT_TYPE>,source_id<TARGET_OBJECT_ID>,
action<COMMAND_TYPE>,params<N>,param0_name<test_param1>,
param0_value<test_param1>...paramN_name<test_paramN>,
paramN_value<test_paramN>, where:
· TARGET_OBJECT_TYPE — type of the object you send command to (ex. CAM).
· TARGET_OBJECT_ID — you need to provide an object id you send your command to (ex. 1).
· COMMAND_TYPE — type of the command (ex. REC).
· params — this a required parameter where you MUST specify the number of parameters you are
providing.
· param0_name<test_param1>,param0_value<test_param1>...paramN_name<test_paramN>,param
N_value<test_paramN> — parameters packed in a special formatted container. This structure lets
core unfold the command in a known way.
CORE||DO_REACT|source_type<CAM>,source_id<1>,action<REC>,params<0>
This example sends to camera (source_type CAM) with id 1 (source id 1) command to start
recording (action REC). As this command does not require any parameters we set field params to 0
and provide no paramX_name<>,paramX_value<> pairs.
When connection is lost for any reason in callback function you receive a special DISCONNECTED
message passed to your callback as a first parameter. When you receive this notification you can take
proper action: notify of error, reconnect, etc.
5.2.6 Disconnecting
Function has the only parameter id where you must pass a valid value which was previously specified
in your ConnectEx call.
www.issivs.com
SecurOS UinP 19 Integration Guide
Implementation of the external system SecurOS connection module
Configuration
To enable UInP User Interface Functionality you need to add following parameters to
*.integration.json:
· interface objects must be created within DESKTOP-directory;
· interface objects must have settings with default set of geometry parameters;
· interface objects must not have “children”.
Implementation details
· For all interface objects given type SecurOS creates only one process to controls them.
· In case of switching between displays UInP User Interface performs activation or deactivation GUI
module.
· Interface objects must get ACTIVATE and DEACTIVATE commands.
· A process receives the following commands:
- When object activated, created or settings were changed:
TYPE|id|SETUP|x<...>,y<...>,w<...>,h<...>,screen<...>,hash<...>, where: x,
y — window coordinates (in percents); w, h — window width and height (in percents);
screen — screen number; hash — a check sum of integration file.
- When object deleted:
TYPE|id|DELETE
- When object displayed:
TYPE|id|ACTIVATE
- When object hided:
TYPE|id|DEACTIVATE
· Object parameters in *.integration.json:
- type — object type;
- parent — parent directory has to be DISPLAY;
- port — transport ID;
- key (optional) — if specified, key position in key.iss;
- process_name (optional) — if specified, then SecurOS will start and finish an application by
itself.
www.issivs.com
SecurOS UinP 20 Integration Guide
Embedding of the external system srtucture into SecurOS
Tree serialization
Tree must be serialized into JSON.
· Main description container.
· Object description.
www.issivs.com
SecurOS UinP 21 Integration Guide
Embedding of the external system srtucture into SecurOS
Object description
· type — string — type of the object from declaration.
· id — integer — id of the object, generated by your system, must be unique.
· name — integer — user-friendly name of the object. Will be displayed in the SecurOS Object Tree.
· children — objects array — description of children objects.
Example:
{
"version": 1,
"objects":
[{
"type": "TEST_CHILD",
"id": "1",
"name": "Test child 1",
"children":
[{
"type": "TEST_GRANDSON",
"id": "1",
"name": "Test grandson 1"
},
{
"type": "TEST_GRANDDAUGHTER",
"id": "1",
"name": "Test granddaughter 1"
}]
},
{
"type": "TEST_CHILD",
"id": "2",
"name": "Test child 2"
}]
}
[YOUR_OBJECT_TYPE]|[YOUR_ID]|RESET|json<text>
Message structure is described in detail in Implementation of the external system SecurOS connection
module.
www.issivs.com
SecurOS UinP 22 Integration Guide
Embedding of the external system srtucture into SecurOS
SETUP
· Top level integration objects.
· Interface objects.
Interface objects
Parameters:
· hash —see above.
· screen —screen index, starting with 1.
· x —left position on the screen in percents (0 - 99).
· y —top position on the screen in percents (0 - 99).
· w —width on the screen in percents (1 - 100).
· h —height on the screen in percents (1 - 100).
Sent when the connection to the SecurOS is established and every time the parameters (except the
immutable hash) change.
Other messages
The integration may receive other messages not described above. The integration should ignore any
unrecognized messages.
www.issivs.com
SecurOS UinP 23 Integration Guide
Technical Support Information
Note. Collected data have to be send to the Intelligent Security Systems Technical Support Team (see Getting
Technical Support).
Note. Equipment Dallas code can be found by the Hardware Report Utility (see SecurOS Administration
Guide for detailed information about utility).
· (*) name and version of the installed Intelligent Security Systems company software.
· total number of video servers and monitoring (operator) workstations in the system;
· operating system (name and service pack version).
9. Another useful information, if possible. For example:
· computer equipment configuration.
· central processors load.
· main and virtual memory used volumes.
· network load.
www.issivs.com
SecurOS UinP 24 Integration Guide
Technical Support Information
www.issivs.com