diff options
author | zheng_wenlong <wenlong_zheng@nexty-ele.com> | 2018-09-03 10:39:15 +0900 |
---|---|---|
committer | Zheng Wenlong <wenlong_zheng@nexty-ele.com> | 2018-09-03 07:38:43 +0000 |
commit | bb38a76d1b00e93187967aa2880e79e671f02eba (patch) | |
tree | dcd608d0634925837030409fb300e036c18ea34c /src/hs-helper.cpp | |
parent | 67962d9837ea37b10c2cf906cbde575cce18ab4b (diff) |
Update lastest code from agl-service-homescreen-2017flounder_5.99.6flounder/5.99.65.99.6
Update the lastest code from agl-service-homescreen-2017.
To impove homescreen-service's extensibility.
"Change homescreen-service from c project to c++ project"
Relative Commit: https://gerrit.automotivelinux.org/gerrit/#/c/16351/
Change-Id: Id7e50fa61fdfcff30f69588aa1da4d93695edfc1
Signed-off-by: zheng_wenlong <wenlong_zheng@nexty-ele.com>
Signed-off-by: wang_zhiqiang <wang_zhiqiang@dl.cn.nexty-ele.com>
Diffstat (limited to 'src/hs-helper.cpp')
-rw-r--r-- | src/hs-helper.cpp | 162 |
1 files changed, 162 insertions, 0 deletions
diff --git a/src/hs-helper.cpp b/src/hs-helper.cpp new file mode 100644 index 0000000..452ae24 --- /dev/null +++ b/src/hs-helper.cpp @@ -0,0 +1,162 @@ +/* + * Copyright (c) 2017 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. + */ + +#include <string.h> +#include <cstdarg> +#include "hs-helper.h" + + +const char* evlist[] = { + "tap_shortcut", + "on_screen_message", + "on_screen_reply", + "reserved" + }; + + +REQ_ERROR get_value_uint16(const struct afb_req request, const char *source, uint16_t *out_id) +{ + char* endptr; + const char* tmp = afb_req_value (request, source); + if(!tmp) + { + return REQ_FAIL; + } + long tmp_id = strtol(tmp,&endptr,10); + + /* error check of range */ + if( (tmp_id > UINT16_MAX) || (tmp_id < 0) ) + { + return OUT_RANGE; + } + if(*endptr != '\0') + { + return NOT_NUMBER; + } + + *out_id = (uint16_t)tmp_id; + return REQ_OK; +} + +REQ_ERROR get_value_int16(const struct afb_req request, const char *source, int16_t *out_id) +{ + char* endptr; + const char* tmp = afb_req_value (request, source); + if(!tmp) + { + return REQ_FAIL; + } + long tmp_id = strtol(tmp,&endptr,10); + + /* error check of range */ + if( (tmp_id > INT16_MAX) || (tmp_id < INT16_MIN) ) + { + return OUT_RANGE; + } + if(*endptr != '\0') + { + return NOT_NUMBER; + } + + *out_id = (int16_t)tmp_id; + return REQ_OK; +} + +REQ_ERROR get_value_int32(const struct afb_req request, const char *source, int32_t *out_id) +{ + char* endptr; + const char* tmp = afb_req_value (request, source); + if(!tmp) + { + return REQ_FAIL; + } + long tmp_id = strtol(tmp,&endptr,10); + + /* error check of range */ + if( (tmp_id > INT32_MAX) || (tmp_id < INT32_MIN) ) + { + return OUT_RANGE; + } + if(*endptr != '\0') + { + return NOT_NUMBER; + } + + *out_id = (int32_t)tmp_id; + return REQ_OK; +} + +void hs_add_object_to_json_object(struct json_object* j_obj, int count,...) +{ + va_list args; + va_start(args, count); + for(int i = 0; i < count; ++i ) + { + char *key = va_arg(args, char*); + int value = va_arg(args, int); + json_object_object_add(j_obj, key, json_object_new_int((int32_t)value)); + ++i; + } + va_end(args); +} + +void hs_add_object_to_json_object_str(struct json_object* j_obj, int count,...) +{ + va_list args; + va_start(args, count); + for(int i = 0; i < count; ++i ) + { + char *key = va_arg(args, char*); + char *value = va_arg(args, char*); + json_object_object_add(j_obj, key, json_object_new_string(value)); + ++i; + } + va_end(args); +} + + +void hs_add_object_to_json_object_func(struct json_object* j_obj, const char* verb_name, int count, ...) +{ + va_list args; + va_start(args, count); + + json_object_object_add(j_obj,"verb", json_object_new_string(verb_name)); + + for(int i = 0; i < count; ++i ) + { + char *key = va_arg(args, char*); + int value = va_arg(args, int); + json_object_object_add(j_obj, key, json_object_new_int((int32_t)value)); + ++i; + } + va_end(args); +} + +int hs_search_event_name_index(const char* value) +{ + size_t buf_size = 50; + size_t size = sizeof evlist / sizeof *evlist; + int ret = -1; + for(size_t i = 0 ; i < size ; ++i) + { + if(!strncmp(value, evlist[i], buf_size)) + { + ret = i; + break; + } + } + return ret; +} |