summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--polux/devkit/plcd/inc/plcd_autoswitch.h3
-rw-r--r--polux/devkit/plcd/src/plcd_autoswitch.c11
-rw-r--r--polux/devkit/plcd/src/plcd_main.c14
3 files changed, 22 insertions, 6 deletions
diff --git a/polux/devkit/plcd/inc/plcd_autoswitch.h b/polux/devkit/plcd/inc/plcd_autoswitch.h
index c0d1f6cc97..cd1109ab8a 100644
--- a/polux/devkit/plcd/inc/plcd_autoswitch.h
+++ b/polux/devkit/plcd/inc/plcd_autoswitch.h
@@ -18,6 +18,9 @@ plcd_autoswitch_timer_init (void);
void
plcd_autoswitch_timer_uninit (void);
+int
+plcd_autoswitch_timer_is_enable (void);
+
void
plcd_autoswitch_timer_start (void);
diff --git a/polux/devkit/plcd/src/plcd_autoswitch.c b/polux/devkit/plcd/src/plcd_autoswitch.c
index 383ea45e7a..a94ce20d82 100644
--- a/polux/devkit/plcd/src/plcd_autoswitch.c
+++ b/polux/devkit/plcd/src/plcd_autoswitch.c
@@ -112,7 +112,7 @@ plcd_autoswitch_timer_init (void)
fclose (fp);
}
- if (autoswitch_en == 1 && autoswitch_curr_image != -1)
+ if (plcd_autoswitch_timer_is_enable ())
{
signal (SIGALRM, plcd_autoswitch_handler);
signal (SIGUSR1, plcd_autoswitch_handler);
@@ -135,6 +135,15 @@ plcd_autoswitch_timer_uninit (void)
plcd_autoswitch_timer_stop ();
}
+int
+plcd_autoswitch_timer_is_enable (void)
+{
+ if (autoswitch_en == 1 && autoswitch_curr_image != -1)
+ return 1;
+ else
+ return 0;
+}
+
void
plcd_autoswitch_timer_start (void)
{
diff --git a/polux/devkit/plcd/src/plcd_main.c b/polux/devkit/plcd/src/plcd_main.c
index 861c45fb06..efdfe53594 100644
--- a/polux/devkit/plcd/src/plcd_main.c
+++ b/polux/devkit/plcd/src/plcd_main.c
@@ -116,12 +116,16 @@ main (int argc, char **argv)
/* show PLCD version */
syslog (LOG_NOTICE, "PLC Daemon (%s) Running\n", PLCD_VERSION);
- plcd_register_to_plcdrv ();
-
- while (!exit_requested)
- pause ();
+ /* Terminate the daemon when no feature is enable. */
+ if (plcd_autoswitch_timer_is_enable ())
+ {
+ plcd_register_to_plcdrv ();
+ while (!exit_requested)
+ pause ();
+ plcd_unregister_to_plcdrv ();
+ }
- plcd_unregister_to_plcdrv ();
+ syslog (LOG_NOTICE, "PLC Daemon exiting\n");
plcd_autoswitch_timer_uninit ();
plcd_uninit ();