add vui button
[apps/homescreen.git] / homescreen / src / homescreenvoice.h
1 /*
2  * Copyright (c) 2017 TOYOTA MOTOR CORPORATION
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 #ifndef HOMESCREENVOICE_H
18 #define HOMESCREENVOICE_H
19
20 #include <QObject>
21 #include <qlibwindowmanager.h>
22 #include <string>
23 #include <functional>
24 #include <json-c/json.h>
25 #include <systemd/sd-event.h>
26 extern "C"
27 {
28 #include <afb/afb-wsj1.h>
29 #include <afb/afb-ws-client.h>
30 }
31
32 using namespace std;
33
34 class HomescreenVoice : public QObject
35 {
36     Q_OBJECT
37 public:
38     explicit HomescreenVoice(QObject *parent = 0);
39     ~HomescreenVoice();
40     static const std::vector<std::string> state_lists;
41
42     int init(int port, const string& token);
43     void on_hangup(void *closure, struct afb_wsj1 *wsj);
44     void on_call(void *closure, const char *api, const char *verb, struct afb_wsj1_msg *msg);
45     void on_event(void *closure, const char *event, struct afb_wsj1_msg *msg);
46     void on_reply(void *closure, struct afb_wsj1_msg *msg);
47     Q_INVOKABLE int startListening(void);
48 signals:
49     void statusChanged(bool status);
50
51 private:
52     int initialize_websocket(void);
53     int subscribe(const string event_name);
54
55     struct afb_wsj1* sp_websock;
56     struct afb_wsj1_itf minterface;
57     sd_event* mploop;
58     std::string muri;
59     int mport = 2000;
60     std::string mtoken = "hs";
61
62 };
63
64 #endif // HOMESCREENVOICE_H