/* * Copyright (c) 2019 TOYOTA MOTOR CORPORATION * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef HOMESCREEN_PERIPHERY_H #define HOMESCREEN_PERIPHERY_H #include #include #include "hs-helper.h" struct HS_Periphery { virtual int init(afb_api_t api) = 0; virtual void onEvent(afb_api_t api, const char *event, struct json_object *object) = 0; std::string getAppid() {return my_appid;} std::string my_appid; }; class HS_Restriction : public HS_Periphery { public: HS_Restriction() {my_appid = "restriction";} ~HS_Restriction() = default; HS_Restriction(HS_Restriction const &) = delete; HS_Restriction &operator=(HS_Restriction const &) = delete; int init(afb_api_t api); void onEvent(afb_api_t api, const char *event, struct json_object *object); private: typedef void (HS_Restriction::*func_handler)(afb_api_t, struct json_object*); const std::unordered_map concerned_event_list { {"windowmanager/RestrictionOn", &HS_Restriction::restrictionOn}, {"windowmanager/RestrictionOff", &HS_Restriction::restrictionOff} }; void restrictionOn(afb_api_t api, struct json_object *object); void restrictionOff(afb_api_t api, struct json_object *object); }; class HS_PeripheryManager { public: HS_PeripheryManager() = default; ~HS_PeripheryManager() = default; int init(afb_api_t api); static HS_PeripheryManager* instance(void); void onEvent(afb_api_t api, const char *event, struct json_object *object); inline bool isPeripheryApp(const char* name) const { return (periphery_list.find(name) != periphery_list.end()) ? true : false; } private: static HS_PeripheryManager* me; std::unordered_map periphery_list; }; #endif // HOMESCREEN_PERIPHERY_H