modify register/update shortcut
[src/libhomescreen.git] / include / libhomescreen.hpp
index 9034dc8..d0b270a 100644 (file)
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2017 TOYOTA MOTOR CORPORATION
+ * Copyright (c) 2018,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.
@@ -24,7 +25,6 @@
 #include <systemd/sd-event.h>
 extern "C"
 {
-#include <afb/afb-binding.h>
 #include <afb/afb-wsj1.h>
 #include <afb/afb-ws-client.h>
 }
@@ -32,63 +32,86 @@ extern "C"
 class LibHomeScreen
 {
 public:
-    LibHomeScreen();
-    ~LibHomeScreen();
-
-    LibHomeScreen(const LibHomeScreen &) = delete;
-    LibHomeScreen &operator=(const LibHomeScreen &) = delete;
-
-    using handler_func = std::function<void(json_object*)>;
-
-    enum EventType {
-        Event_TapShortcut = 1,
-        Event_OnScreenMessage
-    };
-
-    static const std::vector<std::string> api_list;
-    static const std::vector<std::string> event_list;
-
-    /* Method */
-    int init(const int port, const std::string& token);
-
-    int tapShortcut(const char* application_name);
-    int onScreenMessage(const char* display_message);
-
-    void set_event_handler(enum EventType et, handler_func f);
-
-    void registerCallback(
-        void (*event_cb)(const std::string& event, struct json_object* event_contents),
-        void (*reply_cb)(struct json_object* reply_contents),
-        void (*hangup_cb)(void) = nullptr);
-
-    int call(const std::string& verb, struct json_object* arg);
-    int call(const char* verb, struct json_object* arg);
-    int subscribe(const std::string& event_name);
-    int unsubscribe(const std::string& event_name);
+       LibHomeScreen();
+       ~LibHomeScreen();
+
+       LibHomeScreen(const LibHomeScreen &) = delete;
+       LibHomeScreen &operator=(const LibHomeScreen &) = delete;
+
+       using handler_func = std::function<void(json_object*)>;
+
+       enum EventType {
+               Event_Min,
+               Event_ShowWindow = 1,
+               Event_TapShortcut = 1,
+               Event_OnScreenMessage,
+               Event_OnScreenReply,
+               Event_HideWindow,
+               Event_ReplyShowWindow,
+               Event_ShowNotification,
+               Event_ShowInformation,
+               Event_AppListChanged,
+               Event_RegisterShortcut,
+               Event_UpdateShortcut,
+               Event_Max
+       };
+
+       static const std::vector<std::string> api_list;
+       static const std::vector<std::string> event_list;
+
+       /* Method */
+       int init(const int port, const std::string& token);
+
+       int tapShortcut(const char* application_id);
+       int onScreenMessage(const char* display_message);
+       int onScreenReply(const char* reply_message);
+
+       void set_event_handler(enum EventType et, handler_func f);
+       void publishSubscription(void);
+
+       void registerCallback(
+               void (*event_cb)(const std::string& event, struct json_object* event_contents),
+               void (*reply_cb)(struct json_object* reply_contents),
+               void (*hangup_cb)(void) = nullptr);
+
+       int call(const std::string& verb, struct json_object* arg);
+       int call(const char* verb, struct json_object* arg);
+       int subscribe(const std::string& event_name);
+       int unsubscribe(const std::string& event_name);
+
+       int showWindow(const char* application_id, json_object* json);
+       int hideWindow(const char* application_id);
+       int replyShowWindow(const char* application_id, json_object* json);
+       int showNotification(json_object* json);
+       int showInformation(json_object* json);
+       int getRunnables(void);
+       int registerShortcut(const char* application_id, json_object* json);
+       int updateShortcut(const char* application_id, json_object* json);
 
 private:
-    int initialize_websocket();
+       int initialize_websocket();
+       int getEventType(const char *event);
 
-    void (*onEvent)(const std::string& event, struct json_object* event_contents);
-    void (*onReply)(struct json_object* reply);
-    void (*onHangup)(void);
+       void (*onEvent)(const std::string& event, struct json_object* event_contents);
+       void (*onReply)(struct json_object* reply);
+       void (*onHangup)(void);
 
-    struct afb_wsj1* sp_websock;
-    struct afb_wsj1_itf minterface;
-    sd_event* mploop;
-    std::string muri;
+       struct afb_wsj1* sp_websock;
+       struct afb_wsj1_itf minterface;
+       sd_event* mploop;
+       std::string muri;
 
-    int mport = 2000;
-    std::string mtoken = "hs";
+       int mport = 2000;
+       std::string mtoken = "hs";
 
-    std::map<EventType, handler_func> handlers;
+       std::map<EventType, handler_func> handlers;
 
 public:
-    /* Don't use/ Internal only */
-    void on_hangup(void *closure, struct afb_wsj1 *wsj);
-    void on_call(void *closure, const char *api, const char *verb, struct afb_wsj1_msg *msg);
-    void on_event(void *closure, const char *event, struct afb_wsj1_msg *msg);
-    void on_reply(void *closure, struct afb_wsj1_msg *msg);
+       /* Don't use/ Internal only */
+       void on_hangup(void *closure, struct afb_wsj1 *wsj);
+       void on_call(void *closure, const char *api, const char *verb, struct afb_wsj1_msg *msg);
+       void on_event(void *closure, const char *event, struct afb_wsj1_msg *msg);
+       void on_reply(void *closure, struct afb_wsj1_msg *msg);
 };
 
 #endif /* LIBHOMESCREEN_H */