Proactive Safety Framework  1.0
pss_protocol.h
Go to the documentation of this file.
1 /*
2  * SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
3  * SPDX-License-Identifier: LicenseRef-NvidiaProprietary
4  *
5  * NVIDIA CORPORATION, its affiliates and licensors retain all intellectual
6  * property and proprietary rights in and to this material, related
7  * documentation and any modifications thereto. Any use, reproduction,
8  * disclosure or distribution of this material and related documentation
9  * without an express license agreement from NVIDIA CORPORATION or
10  * its affiliates is strictly prohibited.
11 */
12 
13 #ifndef PSS_PROTOCOL_H
14 #define PSS_PROTOCOL_H
15 
16 #include <string>
17 #include <vector>
18 #include <ctime>
19 
20 
21 #define MAX_SENSORS_DATA_SUMMARY_SIZE 8
22 #define MAX_TRAJECTORY_COORDINATES 10
23 #define MAX_INDENTIFIER_LENGTH 64
24 
29 typedef enum {
30  //Generic events
31  EVENT_0 = 0,
39  // Add event types as needed
40  //Special events
45  SW_FAIL //This is the end event
47 
52 typedef enum {
58  // Add other event types as needed
60 
65 typedef enum {
66  TYPE_0 = 0,
73  // ....
76  OBJECT
77  // Add other event types as needed
79 
84 typedef enum {
85  LOW, /* Low severity event */
86  MEDIUM, /* Medium severity event */
87  HIGH, /* High severity event */
88  CRITICAL /* Critical severity event */
90 
95 typedef enum {
96  NORMAL, /* Normal operational mode */
97  DEGRADED, /* Degraded operational mode */
98  ERROR /* Error operational mode */
100 
105 typedef enum {
106  FUSED, /* Fused Safety Event */
107  PASSTHROUGH, /* Safety Event pass-through withut fusion */
108  STALE, /* Safety Event arrivd with high latency */
109  UNKNOWN /* Error operational mode or Fusion not enabled*/
111 
116 typedef struct {
117  float x;
118  float y;
120 
125 typedef struct {
126  TrajectoryCoordinates coordinates[MAX_TRAJECTORY_COORDINATES]; /* Trajectory coordinates of the event */
127  uint8_t pipelineID; /* Source pipeline identifier */
128  uint8_t clientID; /* Client identifier */
129  ObjectType objectType; /* Type of object, example Person, Vehicle, Face */
130  float speed; /* Speed of Object */
132 
137 typedef struct {
138  uint32_t id; /* Unique identifier for the safety event */
139  char sensorIdentifier[MAX_INDENTIFIER_LENGTH]; /* Name of sensor generating the Safety Event */
140  char ruleIdentifier[MAX_INDENTIFIER_LENGTH]; /* Name of rule generating the Safety Event */
141  EventType type; /* Type of the safety event */
142  SeverityLevel severity; /* Severity level of the event */
143  uint64_t timestamp; /* Timestamp of event detection */
144  float confidenceLevel; /* Confidence level of the event */
145  bool processed; /* Flag indicating if event has been processed for fusion */
146  EventFusionMetadata fusionMetadata; /* Fusion metadata */
147 #ifdef NVPSF_DBG
148  uint64_t msgReceiveTimestamp;
149 #endif
150 } SafetyEvent;
151 
156 typedef struct {
157  uint32_t id; /* Unique identifier for the fused event */
158  char sensorIdentifier[MAX_INDENTIFIER_LENGTH]; /* Name of primary sensor generating the Safety Event */
159  char ruleIdentifier[MAX_INDENTIFIER_LENGTH]; /* Name of rule generating the Safety Event */
160  EventType type; /* Type of the safety event */
161  SeverityLevel severity; /* Severity level of the event */
162  uint64_t timestamp; /* Timestamp of the earliest source event */
163  float confidenceLevel; /* Calculated fusion confidence */
164  SafetyEventStatus status; /* Flag indicating status of event after fusion */
165  uint8_t clientID; /* Client identifier */
166  SafetyEvent* sourceEvents[2]; /* Source events that were fused */
167 #ifdef NVPSF_DBG
168  uint64_t msgReceiveTimestamp;
169  uint32_t secondaryEventId;
170 #endif
172 
177 typedef struct {
178  uint32_t sensorId; /* Unique identifier for the sensor */
179  bool isHealthy; /* Health status of the sensor */
180  FusedSafetyEvent event; /* Safety Event Data */
181 }SensorData;
182 
187 typedef struct {
188  bool hardwareErrorFlag; /* HW error flags */
189  bool softwareErrorFlag; /* SW error flags */
190  OperationalMode mode; /* Current operational mode */
191 }SystemStatus;
192 
197 typedef struct {
198  uint32_t requestId; /* Unique identifier for the decision request*/
199  uint8_t sensorDataSummarySize; /* Number of sensor summary infomation*/
200  SensorData sensorDataSummary[MAX_SENSORS_DATA_SUMMARY_SIZE]; /* Summary ofSensor Data Info*/
201  SystemStatus pssStatus; /* System status information */
203 
208 typedef struct {
209  uint32_t decisionId; /* Unique identifier for the decision response*/
210  RecommendedAction action; /* Recommended action based on the decision */
211  float confidenceLevel; /* Confidence level of the decision */
213 
214 #endif
EventType
Enumeration for detected safety event type.
Definition: pss_protocol.h:29
@ EVENT_2
Definition: pss_protocol.h:33
@ EVENT_7
Definition: pss_protocol.h:38
@ ROI_EXIT
Definition: pss_protocol.h:42
@ EVENT_0
Definition: pss_protocol.h:31
@ TW_CROSSING_ENTRY
Definition: pss_protocol.h:43
@ EVENT_4
Definition: pss_protocol.h:35
@ EVENT_3
Definition: pss_protocol.h:34
@ ROI_ENTRY
Definition: pss_protocol.h:41
@ SW_FAIL
Definition: pss_protocol.h:45
@ TW_CROSSING_EXIT
Definition: pss_protocol.h:44
@ EVENT_5
Definition: pss_protocol.h:36
@ EVENT_1
Definition: pss_protocol.h:32
@ EVENT_6
Definition: pss_protocol.h:37
OperationalMode
Definition: pss_protocol.h:95
@ ERROR
Definition: pss_protocol.h:98
@ NORMAL
Definition: pss_protocol.h:96
@ DEGRADED
Definition: pss_protocol.h:97
SafetyEventStatus
Enumeration for SafetyEvent Fusion status.
Definition: pss_protocol.h:105
@ UNKNOWN
Definition: pss_protocol.h:109
@ STALE
Definition: pss_protocol.h:108
@ FUSED
Definition: pss_protocol.h:106
@ PASSTHROUGH
Definition: pss_protocol.h:107
ObjectType
Enumeration for detected object type.
Definition: pss_protocol.h:65
@ TYPE_1
Definition: pss_protocol.h:67
@ OBJECT
Definition: pss_protocol.h:76
@ TYPE_3
Definition: pss_protocol.h:69
@ TYPE_5
Definition: pss_protocol.h:71
@ TYPE_6
Definition: pss_protocol.h:72
@ PERSON
Definition: pss_protocol.h:74
@ VEHICLE
Definition: pss_protocol.h:75
@ TYPE_4
Definition: pss_protocol.h:70
@ TYPE_0
Definition: pss_protocol.h:66
@ TYPE_2
Definition: pss_protocol.h:68
RecommendedAction
Definition: pss_protocol.h:52
@ VISUAL_WARNING
Definition: pss_protocol.h:55
@ AUDIO_WARNING
Definition: pss_protocol.h:54
@ NO_ACTION_REQUIRED
Definition: pss_protocol.h:57
@ IMPLEMENT_SAFETY_CONTROL
Definition: pss_protocol.h:56
@ ESTOP
Definition: pss_protocol.h:53
#define MAX_TRAJECTORY_COORDINATES
Definition: pss_protocol.h:22
SeverityLevel
Definition: pss_protocol.h:84
@ HIGH
Definition: pss_protocol.h:87
@ MEDIUM
Definition: pss_protocol.h:86
@ LOW
Definition: pss_protocol.h:85
@ CRITICAL
Definition: pss_protocol.h:88
#define MAX_INDENTIFIER_LENGTH
Definition: pss_protocol.h:23
#define MAX_SENSORS_DATA_SUMMARY_SIZE
Definition: pss_protocol.h:21
Structure for decision request.
Definition: pss_protocol.h:197
SystemStatus pssStatus
Definition: pss_protocol.h:201
uint8_t sensorDataSummarySize
Definition: pss_protocol.h:199
uint32_t requestId
Definition: pss_protocol.h:198
Structure for decision response.
Definition: pss_protocol.h:208
uint32_t decisionId
Definition: pss_protocol.h:209
RecommendedAction action
Definition: pss_protocol.h:210
float confidenceLevel
Definition: pss_protocol.h:211
Structure containing metadata for event fusion.
Definition: pss_protocol.h:125
uint8_t pipelineID
Definition: pss_protocol.h:127
uint8_t clientID
Definition: pss_protocol.h:128
ObjectType objectType
Definition: pss_protocol.h:129
float speed
Definition: pss_protocol.h:130
Structure for fused safety events from dual pipelines.
Definition: pss_protocol.h:156
uint32_t id
Definition: pss_protocol.h:157
SafetyEventStatus status
Definition: pss_protocol.h:164
EventType type
Definition: pss_protocol.h:160
SeverityLevel severity
Definition: pss_protocol.h:161
uint64_t timestamp
Definition: pss_protocol.h:162
uint8_t clientID
Definition: pss_protocol.h:165
float confidenceLevel
Definition: pss_protocol.h:163
Structure for safety event data with fusion support.
Definition: pss_protocol.h:137
EventFusionMetadata fusionMetadata
Definition: pss_protocol.h:146
EventType type
Definition: pss_protocol.h:141
uint64_t timestamp
Definition: pss_protocol.h:143
float confidenceLevel
Definition: pss_protocol.h:144
uint32_t id
Definition: pss_protocol.h:138
SeverityLevel severity
Definition: pss_protocol.h:142
bool processed
Definition: pss_protocol.h:145
Structure for sensor data summary.
Definition: pss_protocol.h:177
FusedSafetyEvent event
Definition: pss_protocol.h:180
uint32_t sensorId
Definition: pss_protocol.h:178
bool isHealthy
Definition: pss_protocol.h:179
Structure for system status.
Definition: pss_protocol.h:187
OperationalMode mode
Definition: pss_protocol.h:190
bool hardwareErrorFlag
Definition: pss_protocol.h:188
bool softwareErrorFlag
Definition: pss_protocol.h:189
Definition: pss_protocol.h:116
float x
Definition: pss_protocol.h:117
float y
Definition: pss_protocol.h:118