more work
This commit is contained in:
parent
dbf28d2215
commit
3ab4903c91
2 changed files with 67 additions and 1 deletions
|
@ -31,6 +31,7 @@
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <sys/select.h>
|
#include <sys/select.h>
|
||||||
|
#include <getopt.h>
|
||||||
|
|
||||||
volatile bool g_stop = false;
|
volatile bool g_stop = false;
|
||||||
|
|
||||||
|
@ -47,6 +48,40 @@ CAmpSwitch::CAmpSwitch(int argc, char *argv[])
|
||||||
m_samplecounter = 0;
|
m_samplecounter = 0;
|
||||||
m_samplerate = 0;
|
m_samplerate = 0;
|
||||||
m_jackshutdown = false;
|
m_jackshutdown = false;
|
||||||
|
m_oncommand = NULL;
|
||||||
|
m_offcommand = NULL;
|
||||||
|
|
||||||
|
struct option longoptions[] =
|
||||||
|
{
|
||||||
|
{"on-command", required_argument, NULL, 'n'},
|
||||||
|
{"off-command", required_argument, NULL, 'f'},
|
||||||
|
{"help", no_argument, NULL, 'h'},
|
||||||
|
{0, 0, 0, 0}
|
||||||
|
};
|
||||||
|
|
||||||
|
const char* shortoptions = "n:f:h";
|
||||||
|
int c;
|
||||||
|
int optionindex = 0;
|
||||||
|
while ((c = getopt_long(argc, argv, shortoptions, longoptions, &optionindex)) != -1)
|
||||||
|
{
|
||||||
|
if (c == 'n')
|
||||||
|
{
|
||||||
|
m_oncommand = optarg;
|
||||||
|
}
|
||||||
|
else if (c == 'f')
|
||||||
|
{
|
||||||
|
m_offcommand = optarg;
|
||||||
|
}
|
||||||
|
else if (c == 'h')
|
||||||
|
{
|
||||||
|
PrintHelpMessage();
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
else if (c == '?')
|
||||||
|
{
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
CAmpSwitch::~CAmpSwitch()
|
CAmpSwitch::~CAmpSwitch()
|
||||||
|
@ -86,7 +121,18 @@ void CAmpSwitch::Process()
|
||||||
select(m_pipe[0] + 1, &pipeset, NULL, NULL, &tv);
|
select(m_pipe[0] + 1, &pipeset, NULL, NULL, &tv);
|
||||||
|
|
||||||
if (FD_ISSET(m_pipe[0], &pipeset))
|
if (FD_ISSET(m_pipe[0], &pipeset))
|
||||||
printf("Current state: %s\n", m_switchedon ? "on" : "off");
|
{
|
||||||
|
if (m_switchedon && m_oncommand)
|
||||||
|
{
|
||||||
|
printf("switching on, executing \"%s\"\n", m_oncommand);
|
||||||
|
system(m_oncommand);
|
||||||
|
}
|
||||||
|
else if (!m_switchedon && m_offcommand)
|
||||||
|
{
|
||||||
|
printf("switching off, executing \"%s\"\n", m_offcommand);
|
||||||
|
system(m_offcommand);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
uint8_t byte;
|
uint8_t byte;
|
||||||
while (read(m_pipe[0], &byte, 1) == 1);
|
while (read(m_pipe[0], &byte, 1) == 1);
|
||||||
|
@ -98,6 +144,21 @@ void CAmpSwitch::Cleanup()
|
||||||
JackDisconnect();
|
JackDisconnect();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CAmpSwitch::PrintHelpMessage()
|
||||||
|
{
|
||||||
|
printf(
|
||||||
|
"\n"
|
||||||
|
"usage: ampswitch [OPTION]\n"
|
||||||
|
"\n"
|
||||||
|
" options:\n"
|
||||||
|
"\n"
|
||||||
|
" -n, --on-command command to execute when switching on\n"
|
||||||
|
" -f, --off-command command to execute when switching off\n"
|
||||||
|
" -h, --help print this message\n"
|
||||||
|
"\n"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
void CAmpSwitch::Connect()
|
void CAmpSwitch::Connect()
|
||||||
{
|
{
|
||||||
m_connected = JackConnect();
|
m_connected = JackConnect();
|
||||||
|
|
|
@ -32,6 +32,8 @@ class CAmpSwitch
|
||||||
void Cleanup();
|
void Cleanup();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
void PrintHelpMessage();
|
||||||
|
|
||||||
void Connect();
|
void Connect();
|
||||||
bool JackConnect();
|
bool JackConnect();
|
||||||
void JackDisconnect();
|
void JackDisconnect();
|
||||||
|
@ -57,6 +59,9 @@ class CAmpSwitch
|
||||||
float m_switchtime;
|
float m_switchtime;
|
||||||
int m_samplecounter;
|
int m_samplecounter;
|
||||||
bool m_jackshutdown;
|
bool m_jackshutdown;
|
||||||
|
|
||||||
|
char* m_oncommand;
|
||||||
|
char* m_offcommand;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif //AMPSWITCH_H
|
#endif //AMPSWITCH_H
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue