SinricPro Library
LockController.h
1 #ifndef _LOCKCONTROLLER_H_
2 #define _LOCKCONTROLLER_H_
3 
4 #include "SinricProRequest.h"
5 
10 template <typename T>
12  public:
13  LockController() { static_cast<T &>(*this).requestHandlers.push_back(std::bind(&LockController<T>::handleLockController, this, std::placeholders::_1)); }
33  using LockStateCallback = std::function<bool(const String &, bool &)>; // void onLockState(const DeviceId &deviceId, bool& lockState);
34 
36  bool sendLockStateEvent(bool state, String cause = "PHYSICAL_INTERACTION");
37 
38  protected:
39  bool handleLockController(SinricProRequest &request);
40 
41  private:
42  LockStateCallback lockStateCallback;
43 };
44 
52 template <typename T>
54  lockStateCallback = cb;
55 }
56 
66 template <typename T>
67 bool LockController<T>::sendLockStateEvent(bool state, String cause) {
68  T& device = static_cast<T&>(*this);
69 
70  DynamicJsonDocument eventMessage = device.prepareEvent("setLockState", cause.c_str());
71  JsonObject event_value = eventMessage["payload"]["value"];
72  state ? event_value["state"] = "LOCKED" : event_value["state"] = "UNLOCKED";
73  return device.sendEvent(eventMessage);
74 }
75 
76 template <typename T>
77 bool LockController<T>::handleLockController(SinricProRequest &request) {
78  T &device = static_cast<T &>(*this);
79 
80  bool success = false;
81 
82  if (request.action == "setLockState" && lockStateCallback) {
83  bool lockState = request.request_value["state"] == "lock" ? true : false;
84  success = lockStateCallback(device.deviceId, lockState);
85  request.response_value["state"] = success ? lockState ? "LOCKED" : "UNLOCKED" : "JAMMED";
86  return success;
87  }
88  return success;
89 }
90 
91 #endif
LockController.
Definition: LockController.h:11
bool sendLockStateEvent(bool state, String cause="PHYSICAL_INTERACTION")
Send lockState event to SinricPro Server indicating actual lock state.
Definition: LockController.h:67
std::function< bool(const String &, bool &)> LockStateCallback
Callback definition for onLockState function.
Definition: LockController.h:33
void onLockState(LockStateCallback cb)
Set callback function for setLockState request.
Definition: LockController.h:53