aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorzheng_wenlong <wenlong_zheng@nexty-ele.com>2019-06-27 14:53:49 +0900
committerzheng_wenlong <wenlong_zheng@nexty-ele.com>2019-06-27 14:53:49 +0900
commitde4ff7944811d8ad7ef0bd95c032df953034bab3 (patch)
tree64022755e789784b851d4231922988ad40a14adf
parent405a974acd1c2c19ae6e549e5c88aac2c1cb3ea5 (diff)
fix issues
-rw-r--r--src/hs-apprecover.cpp3
-rw-r--r--src/hs-client.cpp41
-rw-r--r--src/hs-clientmanager.cpp3
-rw-r--r--src/hs-vuiadapter.cpp16
4 files changed, 44 insertions, 19 deletions
diff --git a/src/hs-apprecover.cpp b/src/hs-apprecover.cpp
index e3a84c6..472a9fc 100644
--- a/src/hs-apprecover.cpp
+++ b/src/hs-apprecover.cpp
@@ -160,7 +160,8 @@ void HS_AppRecover::notify(afb_api_t api, std::string appid)
}
if(m_recovering_set.empty()) {
- HS_ClientManager::instance()->removeListener(this);
+ clearListenAppSet();
+ // HS_ClientManager::instance()->removeListener(this);
}
}
diff --git a/src/hs-client.cpp b/src/hs-client.cpp
index 5da52bb..efc36b8 100644
--- a/src/hs-client.cpp
+++ b/src/hs-client.cpp
@@ -171,20 +171,37 @@ int HS_Client::on_screen_reply(afb_req_t request)
int HS_Client::subscribe(afb_req_t request)
{
int ret = 0;
- const char *value = afb_req_value(request, _event);
- if(value) {
- AFB_INFO("subscribe event %s", value);
- if(!isSupportEvent(value)) {
- AFB_WARNING("subscibe event isn't existing.");
- ret = AFB_EVENT_BAD_REQUEST;
+ struct json_object *ev_obj, *req_obj = afb_req_json(request);
+ if(json_object_object_get_ex(req_obj, _event, &ev_obj)) {
+ std::unordered_set<std::string> ev_set;
+ if(json_object_get_type(ev_obj) == json_type_string) {
+ ev_set.insert(json_object_get_string(ev_obj));
+ }
+ else if(json_object_get_type(ev_obj) == json_type_array) {
+ int array_len = json_object_array_length(ev_obj);
+ for (int i = 0; i < array_len; ++i) {
+ struct json_object *obj = json_object_array_get_idx(ev_obj, i);
+ ev_set.insert(json_object_get_string(obj));
+ }
}
else {
- event_list.insert(std::string(value));
- if(!subscription) {
- ret = afb_req_subscribe(request, my_event);
- if(ret == 0) {
- subscription = true;
- }
+ AFB_WARNING("subscibe event type error.");
+ return AFB_EVENT_BAD_REQUEST;
+ }
+
+ if(!subscription) {
+ ret = afb_req_subscribe(request, my_event);
+ if(ret == 0) {
+ subscription = true;
+ }
+ }
+ for(auto &it : ev_set) {
+ AFB_INFO("subscribe event %s", it.c_str());
+ if(!isSupportEvent(it.c_str())) {
+ AFB_WARNING("subscibe event(%s) isn't existing.", it.c_str());
+ }
+ else {
+ event_list.insert(it.c_str());
}
}
}
diff --git a/src/hs-clientmanager.cpp b/src/hs-clientmanager.cpp
index 913e9b6..5d845bb 100644
--- a/src/hs-clientmanager.cpp
+++ b/src/hs-clientmanager.cpp
@@ -238,6 +238,9 @@ int HS_ClientManager::pushEvent(const char *event, struct json_object *param, st
if(ip != client_list.end()) {
ip->second->pushEvent(event, param);
}
+ else {
+ AFB_INFO("%s client isn't started.", appid.c_str());
+ }
}
return 0;
diff --git a/src/hs-vuiadapter.cpp b/src/hs-vuiadapter.cpp
index e6837ba..4bfc24d 100644
--- a/src/hs-vuiadapter.cpp
+++ b/src/hs-vuiadapter.cpp
@@ -172,7 +172,7 @@ void Vui_Navigation::set_destination(afb_api_t api, struct json_object *object)
*/
void Vui_Navigation::cancel_navigation(afb_api_t api, struct json_object *object)
{
- HS_ClientManager::instance()->pushEvent(_stopNavigation, nullptr);
+ HS_ClientManager::instance()->pushEvent(_stopNavigation, nullptr, _navigation);
}
/**
@@ -188,11 +188,11 @@ void Vui_Navigation::cancel_navigation(afb_api_t api, struct json_object *object
*/
void Vui_Navigation::notify(afb_api_t api, std::string appid)
{
- this->removeListenAppId(appid);
+ AFB_INFO("recover appid=[%s].", appid.c_str());
if(isListenAppId(appid)) {
if (appid == _poi) {
m_start_flg.first = true;
- sleep(1);
+ // sleep(1);
set_destination2poi(api);
}
else if(appid == _navigation) {
@@ -204,9 +204,10 @@ void Vui_Navigation::notify(afb_api_t api, std::string appid)
return;
}
}
+
if(m_start_flg.first && m_start_flg.second) {
clearListenAppSet();
- HS_ClientManager::instance()->removeListener(this);
+ // HS_ClientManager::instance()->removeListener(this);
}
}
@@ -225,7 +226,7 @@ void Vui_Navigation::set_destination2poi(afb_api_t api)
struct json_object *param = json_object_new_object();
json_object_object_add(param, _latitudeInDegrees, json_object_new_double(m_dest.first));
json_object_object_add(param, _longitudeInDegrees, json_object_new_double(m_dest.second));
- HS_ClientManager::instance()->pushEvent(_setDestination, param);
+ HS_ClientManager::instance()->pushEvent(_setDestination, param, _poi);
}
/**
@@ -240,7 +241,7 @@ void Vui_Navigation::set_destination2poi(afb_api_t api)
*/
void Vui_Navigation::start_navigation(afb_api_t api)
{
- HS_ClientManager::instance()->pushEvent(_startNavigation, nullptr);
+ HS_ClientManager::instance()->pushEvent(_startNavigation, nullptr, _navigation);
HS_ClientManager::instance()->pushEvent("showWindow", nullptr, _navigation);
}
@@ -282,6 +283,9 @@ void HS_VuiAdapter::init(afb_api_t api)
AFB_INFO("%s api isn't existing.", _vshl_capabilities);
return;
}
+ else {
+ AFB_INFO("%s api is existing.", _vshl_capabilities);
+ }
std::string uid = std::string(_vui_prefixe) + std::string("-") + _navigation;
module_list[uid] = new Vui_Navigation(uid);