improve checking of "lpt_enable" variable

This commit is contained in:
Sergey Popov 2011-12-31 11:46:30 +04:00
parent 828d9323cc
commit 233f9ffab0

73
yasnd.c
View File

@ -53,15 +53,18 @@ void* allocate_memory(int bytes)
*/ */
void lpt_init() void lpt_init()
{ {
if (ioperm (lpt_port, 3, 1)) if (lpt_enable)
{ {
log_event("Error: Unlocking the circuit fails due to LPT port access error"); if (ioperm (lpt_port, 3, 1))
// disable LPT port usage {
lpt_enable=false; log_event("Error: Unlocking the circuit fails due to LPT port access error");
return; // disable LPT port usage
lpt_enable=false;
return;
}
// Unlock circuit
outb (0, lpt_port);
} }
// Unlock circuit
outb (0, lpt_port);
} }
/* /*
@ -71,15 +74,18 @@ void lpt_init()
*/ */
void lpt_lock() void lpt_lock()
{ {
if (ioperm (lpt_port, 3, 1)) if (lpt_enable)
{ {
log_event("Error: Locking the circuit fails due to LPT port access error"); if (ioperm (lpt_port, 3, 1))
// disable LPT port usage {
lpt_enable=false; log_event("Error: Locking the circuit fails due to LPT port access error");
return; // disable LPT port usage
lpt_enable=false;
return;
}
// Lock circuit
outb (1, lpt_port);
} }
// Lock circuit
outb (1, lpt_port);
} }
// Function, that checks that defined host entry is valid // Function, that checks that defined host entry is valid
@ -164,8 +170,7 @@ void init()
if (sms_enable) if (sms_enable)
gammu_init(); gammu_init();
// initialize LPT control circuit // initialize LPT control circuit
if (lpt_enable) lpt_init();
lpt_init();
} }
void check_host(int num,host_decl* host) void check_host(int num,host_decl* host)
@ -198,23 +203,26 @@ void check_host(int num,host_decl* host)
*/ */
void reset_pin(int pin_num) void reset_pin(int pin_num)
{ {
if (pin_num==0) if (lpt_enable)
return; // there is no LPT control for target host
if (pin_num<0 || pin_num>8)
{ {
log_event("Error: incorrent LPT pin number"); if (pin_num==0)
return; return; // there is no LPT control for target host
if (pin_num<0 || pin_num>8)
{
log_event("Error: incorrent LPT pin number");
return;
}
int pins = 1<<(pin_num);
if (ioperm (lpt_port, 3, 1))
{
log_event("Error: LPT port access error");
return;
}
// Reset host
outb (pins, lpt_port);
sleep(1);
outb (0, lpt_port);
} }
int pins = 1<<(pin_num);
if (ioperm (lpt_port, 3, 1))
{
log_event("Error: LPT port access error");
return;
}
// Reset host
outb (pins, lpt_port);
sleep(1);
outb (0, lpt_port);
} }
int loop_function() int loop_function()
@ -319,8 +327,7 @@ void signal_handler(int signum)
{ {
log_event("SIGTERM captured, daemon stopping"); log_event("SIGTERM captured, daemon stopping");
// block LPT control circuit // block LPT control circuit
if (lpt_enable) lpt_lock();
lpt_lock();
// close log decriptor // close log decriptor
closelog(); closelog();
// free resources // free resources