From 002e65a093478ad6ca7b64e6136c860e852a221a Mon Sep 17 00:00:00 2001 From: Mr-Dave Date: Sun, 29 Jan 2023 19:51:43 -0700 Subject: [PATCH] Add pause option --- doc/motionplus_config.html | 7 +++++++ src/conf.cpp | 15 +++++++++++++++ src/conf.hpp | 1 + src/motion_loop.cpp | 9 +++++++-- 4 files changed, 30 insertions(+), 2 deletions(-) diff --git a/doc/motionplus_config.html b/doc/motionplus_config.html index 1746645d..2f64b618 100644 --- a/doc/motionplus_config.html +++ b/doc/motionplus_config.html @@ -778,6 +778,13 @@

+

pause

+ +

+

Devices

diff --git a/src/conf.cpp b/src/conf.cpp index 73d238ac..d6ec727f 100644 --- a/src/conf.cpp +++ b/src/conf.cpp @@ -49,6 +49,7 @@ ctx_parm config_parms[] = { {"device_name", PARM_TYP_STRING, PARM_CAT_01, WEBUI_LEVEL_LIMITED }, {"device_id", PARM_TYP_INT, PARM_CAT_01, WEBUI_LEVEL_LIMITED }, {"device_tmo", PARM_TYP_INT, PARM_CAT_01, WEBUI_LEVEL_LIMITED }, + {"pause", PARM_TYP_BOOL, PARM_CAT_01, WEBUI_LEVEL_LIMITED }, {"target_dir", PARM_TYP_STRING, PARM_CAT_01, WEBUI_LEVEL_ADVANCED }, {"watchdog_tmo", PARM_TYP_INT, PARM_CAT_01, WEBUI_LEVEL_LIMITED }, {"watchdog_kill", PARM_TYP_INT, PARM_CAT_01, WEBUI_LEVEL_LIMITED }, @@ -656,6 +657,19 @@ static void conf_edit_device_tmo(ctx_config *conf, std::string &parm, enum PARM_ MOTION_LOG(DBG, TYPE_ALL, NO_ERRNO,"%s:%s","device_tmo",_("device_tmo")); } +static void conf_edit_pause(ctx_config *conf, std::string &parm, int pact) +{ + if (pact == PARM_ACT_DFLT) { + conf->pause = false; + } else if (pact == PARM_ACT_SET) { + conf_edit_set_bool(conf->pause, parm); + } else if (pact == PARM_ACT_GET) { + conf_edit_get_bool(parm, conf->pause); + } + return; + MOTION_LOG(DBG, TYPE_ALL, NO_ERRNO,"%s:%s","pause",_("pause")); +} + static void conf_edit_config_dir(ctx_config *conf, std::string &parm, enum PARM_ACT pact) { if (pact == PARM_ACT_DFLT) { @@ -2981,6 +2995,7 @@ static void conf_edit_cat01(ctx_config *conf, std::string parm_nm } else if (parm_nm == "device_name") { conf_edit_device_name(conf, parm_val, pact); } else if (parm_nm == "device_id") { conf_edit_device_id(conf, parm_val, pact); } else if (parm_nm == "device_tmo") { conf_edit_device_tmo(conf, parm_val, pact); + } else if (parm_nm == "pause") { conf_edit_pause(conf, parm_val, pact); } else if (parm_nm == "target_dir") { conf_edit_target_dir(conf, parm_val, pact); } else if (parm_nm == "watchdog_tmo") { conf_edit_watchdog_tmo(conf, parm_val, pact); } else if (parm_nm == "watchdog_kill") { conf_edit_watchdog_kill(conf, parm_val, pact); diff --git a/src/conf.hpp b/src/conf.hpp index 0430f538..5770d9e5 100644 --- a/src/conf.hpp +++ b/src/conf.hpp @@ -44,6 +44,7 @@ int watchdog_tmo; int watchdog_kill; int device_tmo; + bool pause; /* Capture device configuration parameters */ std::string v4l2_device; diff --git a/src/motion_loop.cpp b/src/motion_loop.cpp index 4ba2fdb8..615ae0da 100644 --- a/src/motion_loop.cpp +++ b/src/motion_loop.cpp @@ -563,6 +563,11 @@ static void mlp_init_values(ctx_dev *cam) MOTION_LOG(WRN, TYPE_ALL, NO_ERRNO,_("Pass-through processing disabled.")); cam->movie_passthrough = false; } + if (cam->motapp->pause) { + cam->pause = true; + } else { + cam->pause = cam->conf->pause; + } } /* start the camera */ @@ -903,7 +908,7 @@ static void mlp_detection(ctx_dev *cam) return; } - if ( !cam->pause ) { + if (cam->pause == false) { alg_diff(cam); } else { cam->current_image->diffs = 0; @@ -975,7 +980,7 @@ static void mlp_overlay(ctx_dev *cam) } if (cam->conf->text_changes) { - if (!cam->pause) { + if (cam->pause == false) { sprintf(tmp, "%d", cam->current_image->diffs); } else { sprintf(tmp, "-");