X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?p=staging%2Fsoundmanager.git;a=blobdiff_plain;f=libsoundmanager%2Ftest.cpp;fp=libsoundmanager%2Ftest.cpp;h=aa3f51ef3a9628bc8d3ff02e8e7f147335a54670;hp=0000000000000000000000000000000000000000;hb=2e602801b372b0b68111316b89f567213e3ea378;hpb=f743c3428f41b8d127e538ea8a6505a0c882cdb2 diff --git a/libsoundmanager/test.cpp b/libsoundmanager/test.cpp new file mode 100644 index 0000000..aa3f51e --- /dev/null +++ b/libsoundmanager/test.cpp @@ -0,0 +1,165 @@ +/* + * 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 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +using namespace std; + +static vector split(const string& str, char sep); +LibSoundmanager* sm; + +static void usage() +{ + cout << "verb "<< "key:arg" << endl; + cout << "example:" << endl; + cout << "connect sourceID 100 sinkID 100" << endl; + cout << "------- -------- --- " << endl; + cout << " verb key value" << endl; + cout << "verb list:" << endl; + for(auto itr = api_list.begin(); itr != api_list.end(); ++itr) + { + cout << " " << *itr << endl; + } + // Todo output api list + exit(0); +} + +static void call_test() +{ + string command; + + cout << "input verb and argments" << endl; + + /* read the buffer */ + for(;;){ + char line[1023]; + cin.getline(line, sizeof(line)); + command = line; + if(command.empty()){ + continue; + } + + vector v_command = split(command, ' '); + /*for(auto itr = v_command.begin(); itr != v_command.end(); ++itr) + { + cout << *itr < in argument part" << endl; + continue; + } + /* create json object */ + struct json_object* j_obj = json_object_new_object(); + for(int i = 1;i < (v_command.size()) ;++i){ + struct json_object* val = json_object_new_string(v_command[i+1].c_str()); + json_object_object_add(j_obj, v_command[i].c_str(), val); + ++i; + } + /* call verb via libsoundmanager */ + sm->call(v_command[0], j_obj); + /* free vector */ + vector().swap(v_command); + string().swap(command); + } +} + +static void onRep(struct json_object* reply_contents) +{ + const char* str = json_object_to_json_string(reply_contents); + cout << "[CB onRep]: " << str << endl; + json_object_put(reply_contents); +} + +static void onEv(const string& event, struct json_object* event_contents) +{ + const char* str = json_object_to_json_string(event_contents); + cout << "[CB onEvent]: event" << event.c_str() << " contents:" << str << endl; + json_object_put(event_contents); +} + +static vector split(const string& str, char sep) +{ + vector v; + stringstream ss(str); + string buffer; + while( getline(ss, buffer, sep) ) { + if(!buffer.empty()) + v.push_back(buffer); + } + return v; +} + +int main(int argc, char **argv) +{ + int ret; + if(argc == 1) + { + printf("Please input port num in first argument, and token in second argument"); + usage(); + return 0; + } + if(argc == 2) + { + string av(argv[1]); + if( (av == "-h") || (av == "--help")) + { + usage(); + return 0; + } + } + + string port_string(argv[1]); + string token(argv[2]); + char* endptr; + long port = strtol(port_string.c_str(),&endptr,10); + + /* error check of range */ + if( (port > 20000) || (port < 0) ) + { + printf("input under 20000(temporary number)"); + return 0; + } + if(*endptr != '\0') + { + printf("not number"); + return 0; + } + + cout << "Call test for libsoundmanager" << endl; + cout << "Call example: registerSource appname radio" << endl; + sm = new LibSoundmanager(port, token); + sm->register_callback(&onEv, &onRep); + + if (ret < 0) { + printf("failed to create event loop"); + return -1; + } + sm->run_eventloop(); + call_test(); + + return 0; +} \ No newline at end of file