}
EXPORT_CMD(fade);
-static void client_cmd(const char *cmd)
+static void run(const char *exe, const char *cmd)
{
int ret, status, fds[3] = {0, 0, 0};
pid_t pid;
- char *cmdline = make_message(BINDIR "/para_client %s", cmd);
+ char *cmdline = make_message("%s %s", exe, cmd);
PARA_NOTICE_LOG("%s\n", cmdline);
ret = para_exec_cmdline_pid(&pid, cmdline, fds);
exit(EXIT_FAILURE);
}
+static void client_cmd(const char *cmd)
+{
+ run(BINDIR "/para_client", cmd);
+}
+
+static void audioc_cmd(const char *cmd)
+{
+ run(BINDIR "/para_audioc", cmd);
+}
+
static void change_afs_mode(const char *afs_mode)
{
char *cmd;
return 1;
}
+static void stop(void)
+{
+ audioc_cmd("off");
+ client_cmd("stop");
+ audioc_cmd("on");
+}
+
static int com_sleep(const struct mixer *m)
{
time_t t1, wake_time_epoch;
}
wake_time_epoch = mktime(tm);
PARA_INFO_LOG("waketime: %d:%02d\n", tm->tm_hour, tm->tm_min);
- client_cmd("stop");
- sleep(1);
+ stop();
ret = set_initial_volume(m, h);
if (ret < 0)
goto close_mixer;
change_afs_mode(initial_mood);
client_cmd("play");
sleep(delay);
- client_cmd("stop");
+ stop();
}
if (fot && fo_mood && *fo_mood) {
change_afs_mode(fo_mood);
if (!fot || !fo_mood) /* currently stopped */
client_cmd("play");
} else if (fot && fo_mood && *fo_mood) /* currently playing */
- client_cmd("stop");
+ stop();
m->close(&h);
if (!fit || !fi_mood || !*fi_mood) /* nothing to do */
return 1;
sleep(delay);
}
change_afs_mode(fi_mood);
- if (sleep_mood && *sleep_mood) /* currently playing */
- client_cmd("next");
- else /* currently stopped */
- client_cmd("play");
ret = open_mixer_and_set_channel(m, &h);
if (ret < 0)
return ret;
+ if (sleep_mood && *sleep_mood) /* currently playing */
+ stop();
+ client_cmd("play");
ret = fade(m, h, fiv, fit);
close_mixer:
m->close(&h);