Adjusted beeping, logging is now async

This commit is contained in:
Mrkva 2014-06-27 12:30:21 +02:00
parent baf8ba2f0a
commit 88694f33f9

View file

@ -40,7 +40,7 @@ clean_gpio() {
beep_invalid() { beep_invalid() {
for i in `seq 1 5`; do for i in `seq 1 2`; do
echo 1 > /sys/class/gpio/gpio${GPIO_BEEP}/value echo 1 > /sys/class/gpio/gpio${GPIO_BEEP}/value
sleep 0.05s sleep 0.05s
echo 0 > /sys/class/gpio/gpio${GPIO_BEEP}/value echo 0 > /sys/class/gpio/gpio${GPIO_BEEP}/value
@ -48,8 +48,18 @@ beep_invalid() {
done done
} }
beep_unlocked() {
for i in `seq 1 3`; do
echo 1 > /sys/class/gpio/gpio${GPIO_BEEP}/value
sleep 0.05s
echo 0 > /sys/class/gpio/gpio${GPIO_BEEP}/value
sleep 0.05s
done
}
beep_alarm() { beep_alarm() {
for i in `seq 1 5`; do for i in `seq 1 10`; do
echo 1 > /sys/class/gpio/gpio${GPIO_BEEP}/value echo 1 > /sys/class/gpio/gpio${GPIO_BEEP}/value
sleep 0.5s sleep 0.5s
echo 0 > /sys/class/gpio/gpio${GPIO_BEEP}/value echo 0 > /sys/class/gpio/gpio${GPIO_BEEP}/value
@ -73,6 +83,7 @@ irc_status() {
return return
fi fi
echo "TINFO" > "$IRSSIFIFO" echo "TINFO" > "$IRSSIFIFO"
sleep 5s
for chan in ${IRCCHANS[*]}; do for chan in ${IRCCHANS[*]}; do
T=`cat "${IRSSITOPICS}/${chan}"` T=`cat "${IRSSITOPICS}/${chan}"`
NT=`echo "$T"|sed "s/BRMBIOLAB OPEN\|BRMBIOLAB CLOSED/BRMBIOLAB $1/"` NT=`echo "$T"|sed "s/BRMBIOLAB OPEN\|BRMBIOLAB CLOSED/BRMBIOLAB $1/"`
@ -113,7 +124,7 @@ while true; do
log_message "NFC_FAILURE" log_message "NFC_FAILURE"
logger -p user.error "[biodoor] NFC failure" logger -p user.error "[biodoor] NFC failure"
irc_message "[biodoor] NFC error! Might be out of order!" irc_message "[biodoor] NFC error! Might be out of order!"
sleep 15s sleep 1s
fi fi
if [ $IGNORE_ALARM -gt 0 ]; then if [ $IGNORE_ALARM -gt 0 ]; then
@ -123,20 +134,18 @@ while true; do
if [ -n "$CARD" ]; then # we have a card if [ -n "$CARD" ]; then # we have a card
NAME=`grep -i "^[0-9a-zA-Z_-]* ${CARD}$" "$ALLOWED_LIST"| cut -d ' ' -f 1` NAME=`grep -i "^[0-9a-zA-Z_-]* ${CARD}$" "$ALLOWED_LIST"| cut -d ' ' -f 1`
if [ -z "$NAME" ]; then if [ -z "$NAME" ]; then
log_message "UNKNOWN_CARD $CARD" log_message "UNKNOWN_CARD $CARD" &
logger "[biodoor] unauthorized access denied for card $CARD" logger "[biodoor] unauthorized access denied for card $CARD" &
irc_message "[biodoor] unauthorized access denied" irc_message "[biodoor] unauthorized access denied" &
beep_invalid beep_invalid
else else
log_message "DOOR_UNLOCKED $NAME $CARD" log_message "DOOR_UNLOCKED $NAME $CARD" &
logger "[biodoor] unlocked by $NAME $CARD" logger "[biodoor] unlocked by $NAME $CARD" &
irc_message "[biodoor] door unlocked" irc_message "[biodoor] door unlocked" &
echo 1 > /sys/class/gpio/gpio${GPIO_LOCK}/value echo 1 > /sys/class/gpio/gpio${GPIO_LOCK}/value
echo 1 > /sys/class/gpio/gpio${GPIO_BEEP}/value beep_unlocked &
sleep $LOCK_TIMEOUT sleep $LOCK_TIMEOUT
echo 0 > /sys/class/gpio/gpio${GPIO_LOCK}/value echo 0 > /sys/class/gpio/gpio${GPIO_LOCK}/value
echo 0 > /sys/class/gpio/gpio${GPIO_BEEP}/value
IGNORE_ALARM=$IGNORE_ALARM_SET IGNORE_ALARM=$IGNORE_ALARM_SET
fi fi
fi fi
@ -144,15 +153,15 @@ while true; do
# check open/closed status # check open/closed status
CURRENT_OPEN=`cat /sys/class/gpio/gpio${GPIO_SWITCH}/value` CURRENT_OPEN=`cat /sys/class/gpio/gpio${GPIO_SWITCH}/value`
if [ $CURRENT_OPEN -eq 1 -a $OPEN -eq 0 ]; then if [ $CURRENT_OPEN -eq 1 -a $OPEN -eq 0 ]; then
log_message "STATUS_CLOSED" log_message "STATUS_CLOSED" &
irc_message "[biostatus] update: CLOSED" irc_message "[biostatus] update: CLOSED" &
irc_status "CLOSED" irc_status "CLOSED" &
IGNORE_ALARM=$IGNORE_ALARM_SET IGNORE_ALARM=$IGNORE_ALARM_SET
fi fi
if [ $CURRENT_OPEN -eq 0 -a $OPEN -eq 1 ]; then if [ $CURRENT_OPEN -eq 0 -a $OPEN -eq 1 ]; then
log_message "STATUS_OPEN" log_message "STATUS_OPEN" &
irc_message "[biostatus] update: OPEN" irc_message "[biostatus] update: OPEN" &
irc_status "OPEN" irc_status "OPEN" &
fi fi
@ -160,11 +169,10 @@ while true; do
OPEN=$CURRENT_OPEN OPEN=$CURRENT_OPEN
if [ $CURRENT_DOOR -eq 1 ] && [ $DOOR -eq 0 ] && [ $OPEN -eq 1 ] && [ $IGNORE_ALARM -eq 0 ]; then # doplnit timeout if [ $CURRENT_DOOR -eq 1 ] && [ $DOOR -eq 0 ] && [ $OPEN -eq 1 ] && [ $IGNORE_ALARM -eq 0 ]; then
log_message "DOOR_ALARM" log_message "DOOR_ALARM" &
irc_message "[biodoor] alarm! (status closed, door opened, not unlocked)" irc_message "[biodoor] alarm! (status closed, door opened, not unlocked)" &
beep_alarm
beep_alarm &
fi fi
DOOR=$CURRENT_DOOR DOOR=$CURRENT_DOOR
@ -179,7 +187,7 @@ while true; do
fi fi
fi fi
if [ $LOOP -gt 5 ]; then if [ $LOOP -gt 10 ]; then
LOOP=0 LOOP=0
if [ $OPEN -eq 1 ]; then if [ $OPEN -eq 1 ]; then
echo 1 > /sys/class/gpio/gpio${GPIO_LED}/value echo 1 > /sys/class/gpio/gpio${GPIO_LED}/value