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(CscAlertType, Knife,
15  FireArm,
17  ImmobilePersonNearProperty,
18  ImmobileGroup,
19  Fire,
20  NobodyPresent,
21  MultiplePersons,
22  RedonContentTooHigh,
23  RedonFlowTooFast,
24  RedonCommunicationError,
25  CardiacFrequencyTooHigh,
26  DiastolicPressureTooHigh,
27  SPO2TooLow,
28  SystolicPressureTooHigh,
29  TemperatureTooHigh,
30  PulseCommunicationError,
31  PersonOutsideBed);
32 
34  public:
35  inline static const string NOBODY_PRESENT_DURATION_SECONDS = "nobody.durationS";
36  inline static const string MULTIPLE_PERSONS_COUNT = "persons.count";
37  };
38 
43  public:
44  int startHour;
46  int endHour;
47  int endMinute;
48 
49  CscAlertIdentificationTimeSlot(int startHour, int startMinute, int endHour, int endMinute);
50 
51  bool isTimestampInSlot(unsigned long long timestampMillis) const;
52 
53  operator string() const;
54  friend ostream& operator<<(ostream& out, const CscAlertIdentificationTimeSlot& v);
55 
56  static vector<CscAlertIdentificationTimeSlot> fromString(string slotsString, string separator = "&");
57  };
58 
60  public:
61  CscAlertType type;
62  map<string, string> parameters;
63  optional<vector<CscAlertIdentificationTimeSlot>> timeSlots;
64 
65  CscAlertIdentificationConfig(CscAlertType type, const map<string, string> &parameters = {}, optional<vector<CscAlertIdentificationTimeSlot>> timeSlots = {});
66 
67  operator string() const;
68  string getParameter(const string &key, const string &defaultValue = "") const;
69 
70  bool isTimestampInTimeSlots(unsigned long long timestampMillis) const;
71  };
72 
73  typedef string AlertId;
75  public:
76  const AlertId uid;
77  const CscAlertType type;
78  const float certitude;
79  const unsigned long long timestampMillis;
80  bool done = false;
81 
82  CscDetectedAlert(const AlertId &uid, CscAlertType type, float certitude);
83 
84  bool isOlderThan(long ageMillis) const;
85  };
86 };
87 #endif
conscience_core::ai::alerts::CscDetectedAlert::certitude
const float certitude
Definition: alerts.h:78
conscience_core::ai::alerts::CscAlertIdentificationConfig::timeSlots
optional< vector< CscAlertIdentificationTimeSlot > > timeSlots
Definition: alerts.h:63
conscience_core::ai::alerts::CscAlertIdentificationTimeSlot::endHour
int endHour
Definition: alerts.h:46
conscience_core::ai::alerts::CscAlertIdentificationConfig::type
CscAlertType type
Definition: alerts.h:61
CSC_DLL_IMPORTEXPORT
#define CSC_DLL_IMPORTEXPORT
Definition: os.h:31
conscience_core::ai::alerts
Definition: alerts.cpp:12
conscience_core::ai::alerts::CscAlertIdentificationParam
Definition: alerts.h:33
conscience_core::ai::alerts::CscDetectedAlert::timestampMillis
const unsigned long long timestampMillis
Definition: alerts.h:79
conscience_core::ai::alerts::operator<<
ostream & operator<<(ostream &out, const CscAlertIdentificationTimeSlot &v)
Definition: alerts.cpp:56
conscience_core::ai::alerts::CscAlertIdentificationTimeSlot
Definition: alerts.h:42
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:47
conscience_core::ai::alerts::CscDetectedAlert::uid
const AlertId uid
Definition: alerts.h:76
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:77
conscience_core::ai::alerts::ENUM
ENUM(CscAlertType, Knife, FireArm, UnconsciousPerson, ImmobilePersonNearProperty, ImmobileGroup, Fire, NobodyPresent, MultiplePersons, RedonContentTooHigh, RedonFlowTooFast, RedonCommunicationError, CardiacFrequencyTooHigh, DiastolicPressureTooHigh, SPO2TooLow, SystolicPressureTooHigh, TemperatureTooHigh, PulseCommunicationError, PersonOutsideBed)
conscience_core::ai::alerts::CscAlertIdentificationTimeSlot::startMinute
int startMinute
Definition: alerts.h:45
conscience_core::ai::alerts::CscDetectedAlert
Definition: alerts.h:74
s
double s
Definition: HybridAStar.cpp:85
conscience_core::ai::alerts::CscAlertIdentificationConfig::parameters
map< string, string > parameters
Definition: alerts.h:62
conscience_core::ai::alerts::CscAlertIdentificationTimeSlot::startHour
int startHour
Definition: alerts.h:44
conscience_core::ai::alerts::AlertId
string AlertId
Definition: alerts.h:73
conscience_core::ai::alerts::CscAlertIdentificationConfig
Definition: alerts.h:59