Go to the documentation of this file.
22 #include <mysql/mysql.h>
27 using namespace std::chrono_literals;
28 using Clock = std::chrono::system_clock;
32 static constexpr
size_t MAX_IMAGE_SIZE {
static_cast<size_t>(2048) * 1536 * 3 };
33 using FrameData = std::array<uint8_t,MAX_IMAGE_SIZE>;
101 char control_state[256];
134 uint8_t control_state[256];
170 uint8_t control_state[256];
172 char alarm_cause[256];
216 uint8_t control_state[256];
218 char alarm_cause[256];
231 char trigger_cause[32];
232 char trigger_text[256];
233 char trigger_showtext[256];
243 char trigger_cause[32];
244 char trigger_text[256];
245 char trigger_showtext[256];
253 char event_file[4096];
265 void initMonitor(
bool debug,
const std::string &mmapPath,
int shmKey);
269 std::string getIdStr(
void);
270 int getLastWriteIndex(
void);
271 int getSubpixelOrder(
void);
273 int getFrameSize(
void);
275 std::string m_name {};
276 std::string m_type {};
277 std::string m_function {};
279 std::string m_device {};
280 std::string m_host {};
281 int m_imageBufferCount {0};
284 int m_bytesPerPixel {3};
286 unsigned char *m_sharedImages {
nullptr};
288 std::string m_status {};
290 int m_controllable {0};
291 int m_trackMotion {0};
293 void *m_shmPtr {
nullptr};
308 bool processRequest(
char* buf,
int nbytes);
311 std::string getZMSetting(
const std::string &setting)
const;
312 bool send(
const std::string &s)
const;
313 bool send(
const std::string &s,
const unsigned char *buffer,
int dataLen)
const;
314 void sendError(
const std::string &
error);
315 void getMonitorList(
void);
318 static void tokenize(
const std::string &command, std::vector<std::string> &tokens);
319 void handleHello(
void);
320 static std::string
runCommand(
const std::string& command);
321 static void getMonitorStatus(
const std::string &
id,
const std::string &
type,
322 const std::string &device,
const std::string &host,
323 const std::string &channel,
const std::string &
function,
324 std::string &zmcStatus, std::string &zmaStatus,
325 const std::string &enabled);
326 void handleGetServerStatus(
void);
327 void handleGetMonitorStatus(
void);
328 void handleGetAlarmStates(
void);
329 void handleGetMonitorList(
void);
330 void handleGetCameraList(
void);
331 void handleGetEventList(std::vector<std::string> tokens);
332 void handleGetEventFrame(std::vector<std::string> tokens);
333 void handleGetAnalysisFrame(std::vector<std::string> tokens);
334 void handleGetLiveFrame(std::vector<std::string> tokens);
335 void handleGetFrameList(std::vector<std::string> tokens);
336 void handleDeleteEvent(std::vector<std::string> tokens);
337 void handleDeleteEventList(std::vector<std::string> tokens);
338 void handleGetEventDates(std::vector<std::string> tokens);
339 void handleRunZMAudit(
void);
340 void handleSetMonitorFunction(std::vector<std::string> tokens);
341 void zmcControl(
MONITOR *monitor,
const std::string &mode);
342 void zmaControl(
MONITOR *monitor,
const std::string &mode);
344 bool m_debug {
false};
348 bool m_useDeepStorage {
false};
349 bool m_useAnalysisImages {
false};
void connectToDatabase(void)
static void error(const char *str,...)
static constexpr size_t MAX_IMAGE_SIZE
int64_t getDiskSpace(const QString &file_on_disk, int64_t &total, int64_t &used)
std::string m_analysisFileFormat
time_t zma_heartbeat_time
const std::string FUNCTION_NONE
const std::string FUNCTION_MODECT
std::chrono::system_clock Clock
uint32_t last_write_index
std::chrono::time_point< Clock > TimePoint
const std::string FUNCTION_MONITOR
static constexpr std::chrono::seconds DB_CHECK_TIME
const std::string RUNNING
void loadZMConfig(const std::string &configfile)
const std::string FUNCTION_RECORD
VERBOSE_PREAMBLE Most debug(nodatabase, notimestamp, noextra)") VERBOSE_MAP(VB_GENERAL
time_t zmc_heartbeat_time
std::string m_eventFileFormat
const std::string RESTART
const std::string FUNCTION_NODECT
bool checkVersion(int major, int minor, int revision)
const std::string FUNCTION_MOCORD
std::map< int, MONITOR * > m_monitorMap
TriggerState trigger_state
def runCommand(command)
Runs an external command checking to see if the user has cancelled the DVD creation process.
std::array< uint8_t, MAX_IMAGE_SIZE > FrameData
std::vector< MONITOR * > m_monitors
uint32_t last_write_index
uint32_t last_write_index
void kickDatabase(bool debug)