/* * Copyright 2020 The Android Open Source Project * * 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. */ #pragma once #include #include #include #include "types/bluetooth/uuid.h" #include "types/raw_address.h" namespace bluetooth { namespace test { namespace headless { class GetOpt { public: GetOpt(int argc, char** arv); virtual ~GetOpt(); virtual void Usage() const; virtual bool IsValid() const { return valid_; }; std::string GetNextSubTest() const { std::string test = non_options_.front(); non_options_.pop_front(); return test; } const char** StackInitFlags() const; std::list device_; std::list init_flags_; std::list uuid_; unsigned long loop_{1}; unsigned long msec_{0}; bool close_stderr_{true}; bool clear_logcat_{false}; mutable std::list non_options_; static std::vector Split(std::string); private: void ParseValue(char* optarg, std::list& my_list); void ProcessOption(int option_index, char* optarg); void ParseStackInitFlags(); const char* name_{nullptr}; const char** stack_init_flags_{nullptr}; bool valid_{true}; }; } // namespace headless } // namespace test } // namespace bluetooth