From ef672e4eef3812b32be080f9256c719e88739303 Mon Sep 17 00:00:00 2001 From: xdrm-brackets Date: Tue, 11 Jul 2017 12:39:51 +0200 Subject: [PATCH] Update global state when starting daemon --- lib/global-state/source/update.php | 2 +- lib/mfrc522/source/loop.php | 27 +++++++++++++++++---------- 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/lib/global-state/source/update.php b/lib/global-state/source/update.php index effb34c..f7bc71d 100755 --- a/lib/global-state/source/update.php +++ b/lib/global-state/source/update.php @@ -36,7 +36,7 @@ /* (1) Fetch from file */ $f_cstates = new SplFileObject(STATES_CONF, 'r'); - /* (2) Section Title */ + /* (2) If fetch error */ if( $f_cstates === false ){ slog('Cannot access GLOBAL/CHIP STATES file', 'global-state:update', 'daemon'); return 127; diff --git a/lib/mfrc522/source/loop.php b/lib/mfrc522/source/loop.php index c85a30a..d6868f5 100755 --- a/lib/mfrc522/source/loop.php +++ b/lib/mfrc522/source/loop.php @@ -64,7 +64,7 @@ /* (2) Parse each line */ while( !$f_auth->eof() ){ - + /* (3) Try to parse line */ $parsed = json_decode($f_auth->fgets(), true); @@ -75,7 +75,7 @@ /* (4) If wrong code -> go to next */ if( $parsed[0] != $code ) continue; - + /* (5) return user info */ return [ 'id' => $parsed[1], @@ -124,7 +124,7 @@ /* (1) If no action for this @timeout -> reset to 0 */ if( !isset($actions[$timeout]) || !is_array($actions[$timeout]) ) $timeout = 0; - + /* (2) fetch actions for the current @timeout */ $actionlist = $actions[$timeout]; @@ -217,7 +217,7 @@ /* (3) Manage error */ if( $written === false ) slog('cannot update STATE file', 'mfrc522:loop'); - + /* [6] Log action @@ -273,7 +273,7 @@ =========================================================*/ /* (1) Parse each line */ while( !$f_actions->eof() ){ - + /* (2) Try to parse line */ $parsed = json_decode($f_actions->fgets(), true); @@ -308,6 +308,13 @@ return 127; + /* [4] Update global state + =========================================================*/ + /* (1) Do it once to unlock gpio boot lag */ + syscall(SOURCE_DIR.'/lib/global-state/update'); + + /* (2) Do it again to apply global state */ + syscall(SOURCE_DIR.'/lib/global-state/update'); return 0; } @@ -343,7 +350,7 @@ /* (2) Read card */ $code = syscall(SOURCE_DIR.'/lib/mfrc522/read'); - + /* (3) If no card read -> reset @last_user / @timeout + abort */ if( $code === false ){ @@ -370,7 +377,7 @@ slog("card '$code' read", 'mfrc522:read'); - + /* [2] Check for user in auth list =========================================================*/ /* (1) Check user for this code */ @@ -379,7 +386,7 @@ /* (2) If not found -> reset @last_user / @timeout + abort */ if( is_null($user) ){ - + slog("Unknown user (not authenticated)", "mfrc522:loop"); $last_user = null; $timeout = 0; @@ -423,7 +430,7 @@ /* (4) Store user for next loop */ $last_user = $user['id']; - + } @@ -460,7 +467,7 @@ mfrc522_loop(); - + } ?>