Conscience Core
alerts.h
Go to the documentation of this file.
1 #ifndef CscDetectedAlert_h
2 #define CscDetectedAlert_h
3 
4 #include <ostream>
5 #include "CscCommon.h"
6 
7 using std::string, std::vector, std::shared_ptr, std::map, std::ostream, std::optional;
8 
9 using std::chrono_literals::operator""s, std::chrono_literals::operator""ms, std::chrono_literals::operator""h;
10 using std::prev, std::recursive_mutex, std::chrono::system_clock, std::chrono::duration, std::remove_if, std::chrono::duration_cast, std::chrono::milliseconds, std::function;
11 
13 
14 ENUM(
17  CscAlertTypeBuiltin, Knife,
18  FireArm,
20  ImmobilePersonNearProperty,
21  ImmobileGroup,
22  Fire,
23  NobodyPresent,
24  MultiplePersons,
25  RedonContentTooHigh,
26  RedonFlowTooFast,
27  RedonCommunicationError,
28  CardiacFrequencyTooHigh,
29  DiastolicPressureTooHigh,
30  SPO2TooLow,
31  SystolicPressureTooHigh,
32  TemperatureTooHigh,
33  PulseCommunicationError,
34  PersonOutsideBed);
35 
36 typedef string AlertId;
37 typedef uint64_t CscAlertType;
39 
41 public:
42  inline static const string NOBODY_PRESENT_DURATION_SECONDS = "nobody.durationS";
43  inline static const string MULTIPLE_PERSONS_COUNT = "persons.count";
44 };
45 
50 public:
51  int startHour;
53  int endHour;
54  int endMinute;
55 
56  CscAlertIdentificationTimeSlot(int startHour, int startMinute, int endHour, int endMinute);
57 
58  bool isTimestampInSlot(unsigned long long timestampMillis) const;
59 
60  operator string() const;
61  friend ostream &operator<<(ostream &out, const CscAlertIdentificationTimeSlot &v);
62 
63  static vector<CscAlertIdentificationTimeSlot> fromString(string slotsString, string separator = "&");
64 };
65 
67 public:
69  map<string, string> parameters;
70  optional<vector<CscAlertIdentificationTimeSlot>> timeSlots;
71 
72  CscAlertIdentificationConfig(CscAlertType type, const map<string, string> &parameters = {}, optional<vector<CscAlertIdentificationTimeSlot>> timeSlots = {});
73 
74  operator string() const;
75  string getParameter(const string &key, const string &defaultValue = "") const;
76 
77  bool isTimestampInTimeSlots(unsigned long long timestampMillis) const;
78 };
79 
81 public:
82  const AlertId uid;
87  const float certitude;
88  const unsigned long long timestampMillis;
89  bool done = false;
90  bool markDoneManually = false;
91 
95  CscDetectedAlert(const AlertId &uid, CscAlertType type, float certitude);
96 
97  bool isOlderThan(long ageMillis) const;
98 
99  operator string() const;
100 };
101 inline std::ostream &operator<<(std::ostream &os, const CscDetectedAlert &alert) {
102  return os << string(alert);
103 }
104 };
105 #endif
conscience_core::ai::alerts::CscDetectedAlert::certitude
const float certitude
Definition: alerts.h:87
conscience_core::ai::alerts::CscAlertIdentificationConfig::timeSlots
optional< vector< CscAlertIdentificationTimeSlot > > timeSlots
Definition: alerts.h:70
conscience_core::ai::alerts::CscAlertIdentificationTimeSlot::endHour
int endHour
Definition: alerts.h:53
conscience_core::ai::alerts::ENUM
ENUM(CscAlertTypeBuiltin, Knife, FireArm, UnconsciousPerson, ImmobilePersonNearProperty, ImmobileGroup, Fire, NobodyPresent, MultiplePersons, RedonContentTooHigh, RedonFlowTooFast, RedonCommunicationError, CardiacFrequencyTooHigh, DiastolicPressureTooHigh, SPO2TooLow, SystolicPressureTooHigh, TemperatureTooHigh, PulseCommunicationError, PersonOutsideBed)
conscience_core::ai::alerts::CscAlertIdentificationConfig::type
CscAlertType type
Definition: alerts.h:68
CSC_DLL_IMPORTEXPORT
#define CSC_DLL_IMPORTEXPORT
Definition: os.h:34
conscience_core::ai::alerts
Definition: alerts.cpp:12
conscience_core::ai::alerts::CscAlertIdentificationParam
Definition: alerts.h:40
conscience_core::ai::alerts::CscDetectedAlert::timestampMillis
const unsigned long long timestampMillis
Definition: alerts.h:88
conscience_core::ai::alerts::operator<<
ostream & operator<<(ostream &out, const CscAlertIdentificationTimeSlot &v)
Definition: alerts.cpp:56
conscience_core::ai::alerts::CscAlertIdentificationTimeSlot
Definition: alerts.h:49
conscience_core::detector_engine::UnconsciousPerson
@ UnconsciousPerson
Definition: CscCommonDetectorTypes.h:31
conscience_core::detector_engine::Knife
@ Knife
Definition: CscCommonDetectorTypes.h:29
conscience_core::detector_engine::Fire
@ Fire
Definition: CscCommonDetectorTypes.h:25
conscience_core::ai::alerts::CscAlertIdentificationTimeSlot::endMinute
int endMinute
Definition: alerts.h:54
conscience_core::ai::alerts::CscDetectedAlert::uid
const AlertId uid
Definition: alerts.h:82
CscCommon.h
jwt::json::type
type
Generic JSON types used in JWTs.
Definition: jwt.h:1794
conscience_core::ai::alerts::CscDetectedAlert::type
const CscAlertType type
Definition: alerts.h:86
conscience_core::ai::alerts::CscAlertIdentificationTimeSlot::startMinute
int startMinute
Definition: alerts.h:52
conscience_core::ai::alerts::toStringCscAlertType
string toStringCscAlertType(const CscAlertType &type)
Definition: alerts.cpp:90
conscience_core::ai::alerts::CscDetectedAlert
Definition: alerts.h:80
s
double s
Definition: HybridAStar.cpp:85
conscience_core::ai::alerts::CscAlertIdentificationConfig::parameters
map< string, string > parameters
Definition: alerts.h:69
conscience_core::ai::alerts::CscAlertIdentificationTimeSlot::startHour
int startHour
Definition: alerts.h:51
conscience_core::ai::alerts::CscAlertType
uint64_t CscAlertType
Definition: alerts.h:37
conscience_core::ai::alerts::AlertId
string AlertId
Definition: alerts.h:36
conscience_core::ai::alerts::CscAlertIdentificationConfig
Definition: alerts.h:66