Home | History | Annotate | Download | only in hal
      1 /*
      2  * Copyright 2016 The Android Open Source Project
      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 __VTS_AGENT_REQUEST_HANDLER_H__
     18 #define __VTS_AGENT_REQUEST_HANDLER_H__
     19 
     20 #include <string>
     21 
     22 #include "SocketClientToDriver.h"
     23 #include "test/vts/proto/AndroidSystemControlMessage.pb.h"
     24 #include "test/vts/proto/VtsDriverControlMessage.pb.h"
     25 
     26 namespace android {
     27 namespace vts {
     28 
     29 // Class which contains actual methods to handle the runner requests.
     30 class AgentRequestHandler : public VtsDriverCommUtil {
     31  public:
     32   AgentRequestHandler(const char* spec_dir_path, const char* hal_path32,
     33                       const char* hal_path64, const char* shell_path32,
     34                       const char* shell_path64)
     35       : VtsDriverCommUtil(),
     36         service_name_(),
     37         driver_client_(NULL),
     38         driver_hal_spec_dir_path_(spec_dir_path),
     39         driver_hal_binary32_(hal_path32),
     40         driver_hal_binary64_(hal_path64),
     41         driver_shell_binary32_(shell_path32),
     42         driver_shell_binary64_(shell_path64) {}
     43 
     44 
     45   // handles a new session.
     46   bool ProcessOneCommand();
     47 
     48  protected:
     49   // for the LIST_HAL command
     50   bool ListHals(const ::google::protobuf::RepeatedPtrField<string>& base_paths);
     51 
     52   // for the SET_HOST_INFO command.
     53   bool SetHostInfo(const int callback_port);
     54 
     55   // for the CHECK_DRIVER_SERVICE command
     56   bool CheckDriverService(const string& service_name, bool* live);
     57 
     58   // for the LAUNCH_DRIVER_SERVICE command
     59   bool LaunchDriverService(
     60       const AndroidSystemControlCommandMessage& command_msg);
     61 
     62   // for the VTS_AGENT_COMMAND_READ_SPECIFICATION`
     63   bool ReadSpecification(
     64       const AndroidSystemControlCommandMessage& command_message);
     65 
     66   // for the LIST_APIS command
     67   bool ListApis();
     68 
     69   // for the CALL_API command
     70   bool CallApi(const string& call_payload, const string& uid);
     71 
     72   // for the VTS_AGENT_COMMAND_GET_ATTRIBUTE
     73   bool GetAttribute(const string& payload);
     74 
     75   // for the EXECUTE_SHELL command
     76   bool ExecuteShellCommand(
     77       const AndroidSystemControlCommandMessage& command_message);
     78 
     79   // Returns a default response message.
     80   bool DefaultResponse();
     81 
     82   // Send SUCCESS response with given result and/or spec if it is not empty,
     83   // otherwise send FAIL.
     84   bool SendApiResult(const string& func_name, const string& result,
     85                      const string& spec = "");
     86 
     87  protected:
     88   // the currently opened, connected service name.
     89   string service_name_;
     90   // the port number of a host-side callback server.
     91   int callback_port_;
     92   // the socket client of a launched or connected driver.
     93   VtsDriverSocketClient* driver_client_;
     94 
     95   void CreateSystemControlResponseFromDriverControlResponse(
     96       const VtsDriverControlResponseMessage& driver_control_response_message,
     97       AndroidSystemControlResponseMessage* system_control_response_message);
     98 
     99   const string driver_hal_spec_dir_path_;
    100   const string driver_hal_binary32_;
    101   const string driver_hal_binary64_;
    102   const string driver_shell_binary32_;
    103   const string driver_shell_binary64_;
    104 };
    105 
    106 }  // namespace vts
    107 }  // namespace android
    108 
    109 #endif
    110