13c4e8a358c96cb4781fbfeaa2718695260bb39baRoshan Pius/*
23c4e8a358c96cb4781fbfeaa2718695260bb39baRoshan Pius * Copyright (C) 2016 The Android Open Source Project
33c4e8a358c96cb4781fbfeaa2718695260bb39baRoshan Pius *
43c4e8a358c96cb4781fbfeaa2718695260bb39baRoshan Pius * Licensed under the Apache License, Version 2.0 (the "License");
53c4e8a358c96cb4781fbfeaa2718695260bb39baRoshan Pius * you may not use this file except in compliance with the License.
63c4e8a358c96cb4781fbfeaa2718695260bb39baRoshan Pius * You may obtain a copy of the License at
73c4e8a358c96cb4781fbfeaa2718695260bb39baRoshan Pius *
83c4e8a358c96cb4781fbfeaa2718695260bb39baRoshan Pius *      http://www.apache.org/licenses/LICENSE-2.0
93c4e8a358c96cb4781fbfeaa2718695260bb39baRoshan Pius *
103c4e8a358c96cb4781fbfeaa2718695260bb39baRoshan Pius * Unless required by applicable law or agreed to in writing, software
113c4e8a358c96cb4781fbfeaa2718695260bb39baRoshan Pius * distributed under the License is distributed on an "AS IS" BASIS,
123c4e8a358c96cb4781fbfeaa2718695260bb39baRoshan Pius * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
133c4e8a358c96cb4781fbfeaa2718695260bb39baRoshan Pius * See the License for the specific language governing permissions and
143c4e8a358c96cb4781fbfeaa2718695260bb39baRoshan Pius * limitations under the License.
153c4e8a358c96cb4781fbfeaa2718695260bb39baRoshan Pius */
163c4e8a358c96cb4781fbfeaa2718695260bb39baRoshan Pius
173c4e8a358c96cb4781fbfeaa2718695260bb39baRoshan Pius#include <android-base/logging.h>
184faa7f5b271ff6f76cb7f73ee8699e159f17ba37Martijn Coenen#include <hidl/HidlTransportSupport.h>
193c4e8a358c96cb4781fbfeaa2718695260bb39baRoshan Pius#include <utils/Looper.h>
203c4e8a358c96cb4781fbfeaa2718695260bb39baRoshan Pius#include <utils/StrongPointer.h>
213c4e8a358c96cb4781fbfeaa2718695260bb39baRoshan Pius
223c4e8a358c96cb4781fbfeaa2718695260bb39baRoshan Pius#include "wifi.h"
233c4e8a358c96cb4781fbfeaa2718695260bb39baRoshan Pius
244faa7f5b271ff6f76cb7f73ee8699e159f17ba37Martijn Coenenusing android::hardware::configureRpcThreadpool;
254faa7f5b271ff6f76cb7f73ee8699e159f17ba37Martijn Coenenusing android::hardware::joinRpcThreadpool;
263c4e8a358c96cb4781fbfeaa2718695260bb39baRoshan Pius
273c4e8a358c96cb4781fbfeaa2718695260bb39baRoshan Piusint main(int /*argc*/, char** argv) {
2879a9975d07ec1fc583f4f281469bf3c05c909034Roshan Pius  android::base::InitLogging(argv,
2979a9975d07ec1fc583f4f281469bf3c05c909034Roshan Pius                             android::base::LogdLogger(android::base::SYSTEM));
30742bb977692b7223721daf593816cb6cf221f3f6Roshan Pius  LOG(INFO) << "Wifi Hal is starting up...";
313c4e8a358c96cb4781fbfeaa2718695260bb39baRoshan Pius
324faa7f5b271ff6f76cb7f73ee8699e159f17ba37Martijn Coenen  configureRpcThreadpool(1, true /* callerWillJoin */);
333c4e8a358c96cb4781fbfeaa2718695260bb39baRoshan Pius
343c4e8a358c96cb4781fbfeaa2718695260bb39baRoshan Pius  // Setup hwbinder service
3579a9975d07ec1fc583f4f281469bf3c05c909034Roshan Pius  android::sp<android::hardware::wifi::V1_0::IWifi> service =
36aabe5755365b07b92f75e2ece853f44d785517aaRoshan Pius      new android::hardware::wifi::V1_0::implementation::Wifi();
37ab8166fa4e08d8f86504bb7311b86e31cd839cb1Chris Phoenix  CHECK_EQ(service->registerAsService(), android::NO_ERROR)
3879a9975d07ec1fc583f4f281469bf3c05c909034Roshan Pius      << "Failed to register wifi HAL";
393c4e8a358c96cb4781fbfeaa2718695260bb39baRoshan Pius
404faa7f5b271ff6f76cb7f73ee8699e159f17ba37Martijn Coenen  joinRpcThreadpool();
413c4e8a358c96cb4781fbfeaa2718695260bb39baRoshan Pius
42742bb977692b7223721daf593816cb6cf221f3f6Roshan Pius  LOG(INFO) << "Wifi Hal is terminating...";
433c4e8a358c96cb4781fbfeaa2718695260bb39baRoshan Pius  return 0;
443c4e8a358c96cb4781fbfeaa2718695260bb39baRoshan Pius}
45