3 * Copyright (c) 2019 Google LLC.
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
10 * http://www.apache.org/licenses/LICENSE-2.0
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
19 #ifndef LOCK_MANAGER_H
20 #define LOCK_MANAGER_H
43 kState_LockingInitiated = 0,
44 kState_LockingCompleted,
45 kState_UnlockingInitiated,
46 kState_UnlockingCompleted,
51 void EnableAutoRelock(bool aOn);
52 void SetAutoLockDuration(uint32_t aDurationInSecs);
53 bool IsActionInProgress();
54 bool InitiateAction(int32_t aActor, Action_t aAction);
56 typedef void (*Callback_fn_initiated)(Action_t, int32_t aActor);
57 typedef void (*Callback_fn_completed)(Action_t);
58 void SetCallbacks(Callback_fn_initiated aActionInitiated_CB, Callback_fn_completed aActionCompleted_CB);
61 friend BoltLockManager & BoltLockMgr(void);
64 Callback_fn_initiated mActionInitiated_CB;
65 Callback_fn_completed mActionCompleted_CB;
68 uint32_t mAutoLockDuration;
69 bool mAutoLockTimerArmed;
70 TimerHandle_t mTimerHandle;
72 void CancelTimer(void);
73 void StartTimer(uint32_t aTimeoutMs);
75 static void TimerEventHandler(TimerHandle_t aTimer);
76 static void AutoReLockTimerEventHandler(AppEvent * aEvent);
77 static void ActuatorMovementTimerEventHandler(AppEvent * aEvent);
79 static BoltLockManager sLock;
82 inline BoltLockManager & BoltLockMgr(void)
84 return BoltLockManager::sLock;
87 #endif // LOCK_MANAGER_H