Conscience Core
alerts.h
Go to the documentation of this file.
1 #ifndef CscDetectedAlert_h
2 #define CscDetectedAlert_h
3 
4 #include "CscCommon.h"
5 #include <ostream>
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,
18  Knife,
19  FireArm,
21  ImmobilePersonNearProperty,
22  ImmobileGroup,
23  Fire,
24  NobodyPresent,
25  MultiplePersons,
26  RedonContentTooHigh,
27  RedonFlowTooFast,
28  RedonCommunicationError,
29  CardiacFrequencyTooHigh,
30  DiastolicPressureTooHigh,
31  SPO2TooLow,
32  SystolicPressureTooHigh,
33  TemperatureTooHigh,
34  PulseCommunicationError,
35  PersonOutsideBed,
36  ChildAlone,
37  AnimalInPool, PersonNearPool);
38 
39 typedef string AlertId;
40 typedef uint64_t CscAlertType;
41 string toStringCscAlertType(const CscAlertType &type);
42 
44 public:
45  inline static const string NOBODY_PRESENT_DURATION_SECONDS = "nobody.durationS";
46  inline static const string MULTIPLE_PERSONS_COUNT = "persons.count";
47 };
48 
53 public:
54  int startHour;
56  int endHour;
57  int endMinute;
58 
59  CscAlertIdentificationTimeSlot(int startHour, int startMinute, int endHour, int endMinute);
60 
61  bool isTimestampInSlot(unsigned long long timestampMillis) const;
62 
63  operator string() const;
64  friend ostream &operator<<(ostream &out, const CscAlertIdentificationTimeSlot &v);
65 
66  static vector<CscAlertIdentificationTimeSlot> fromString(string slotsString, string separator = "&");
67 };
68 
70 public:
72  map<string, string> parameters;
73  optional<vector<CscAlertIdentificationTimeSlot>> timeSlots;
74 
75  CscAlertIdentificationConfig(CscAlertType type, const map<string, string> &parameters = {}, optional<vector<CscAlertIdentificationTimeSlot>> timeSlots = {});
76 
77  operator string() const;
78  string getParameter(const string &key, const string &defaultValue = "") const;
79 
80  bool isTimestampInTimeSlots(unsigned long long timestampMillis) const;
81 };
82 
84 public:
85  const AlertId uid;
90  const float certitude;
91  const unsigned long long timestampMillis;
92  bool done = false;
93  bool markDoneManually = false;
94 
98  CscDetectedAlert(const AlertId &uid, CscAlertType type, float certitude);
99 
100  bool isOlderThan(long ageMillis) const;
101 
102  operator string() const;
103 };
104 inline std::ostream &operator<<(std::ostream &os, const CscDetectedAlert &alert) {
105  return os << string(alert);
106 }
107 };
108 #endif
conscience_core::ai::alerts::CscDetectedAlert::certitude
const float certitude
Definition: alerts.h:90
conscience_core::ai::alerts::CscAlertIdentificationConfig::timeSlots
optional< vector< CscAlertIdentificationTimeSlot > > timeSlots
Definition: alerts.h:73
conscience_core::ai::alerts::CscAlertIdentificationTimeSlot::endHour
int endHour
Definition: alerts.h:56
conscience_core::ai::alerts::CscAlertIdentificationConfig::type
CscAlertType type
Definition: alerts.h:71
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:43
conscience_core::ai::alerts::CscDetectedAlert::timestampMillis
const unsigned long long timestampMillis
Definition: alerts.h:91
conscience_core::ai::alerts::operator<<
ostream & operator<<(ostream &out, const CscAlertIdentificationTimeSlot &v)
Definition: alerts.cpp:56
conscience_core::ai::alerts::CscAlertIdentificationTimeSlot
Definition: alerts.h:52
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, ChildAlone, AnimalInPool, PersonNearPool)
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:57
conscience_core::ai::alerts::CscDetectedAlert::uid
const AlertId uid
Definition: alerts.h:85
CscCommon.h
conscience_core::ai::alerts::CscDetectedAlert::type
const CscAlertType type
Definition: alerts.h:89
conscience_core::ai::alerts::CscAlertIdentificationTimeSlot::startMinute
int startMinute
Definition: alerts.h:55
conscience_core::ai::alerts::toStringCscAlertType
string toStringCscAlertType(const CscAlertType &type)
Definition: alerts.cpp:90
conscience_core::ai::alerts::CscDetectedAlert
Definition: alerts.h:83
s
double s
Definition: HybridAStar.cpp:85
conscience_core::ai::alerts::CscAlertIdentificationConfig::parameters
map< string, string > parameters
Definition: alerts.h:72
conscience_core::ai::alerts::CscAlertIdentificationTimeSlot::startHour
int startHour
Definition: alerts.h:54
conscience_core::ai::alerts::CscAlertType
uint64_t CscAlertType
Definition: alerts.h:40
conscience_core::ai::alerts::AlertId
string AlertId
Definition: alerts.h:39
conscience_core::ai::alerts::CscAlertIdentificationConfig
Definition: alerts.h:69