blob: 6ae7687bb84aa50d4d78a1542f7b8b8fd7571aae [file] [log] [blame]
/*
* Copyright (C) 2019 Google Inc. All Rights Reserved.
*/
#include "ExtraCanClient.h"
#include <android/binder_manager.h>
#include <android-base/logging.h>
#include <android/binder_process.h>
#include <hidl/HidlTransportSupport.h>
namespace android::hardware::automotive::vehicle::V2_0::impl {
using ::aidl::device::generic::car::emulator::IVehicleBus;
using ::aidl::android::hardware::automotive::vehicle::VehicleBus;
static void protocanbusService() {
base::SetDefaultTag("ProtoCanBusSrv");
base::SetMinimumLogSeverity(base::VERBOSE);
ABinderProcess_setThreadPoolMaxThreadCount(4);
LOG(DEBUG) << "ProtoCAN service starting...";
std::shared_ptr<VehicleBus> vehicleBus = ::ndk::SharedRefBase::make<ExtraCanClient>();
auto serviceName = std::string(IVehicleBus::descriptor) + "/protocanbus";
auto status = AServiceManager_addService(vehicleBus->asBinder().get(),
serviceName.c_str());
CHECK_EQ(status, OK) << "Failed to register ProtoCAN VehicleBus HAL implementation";
vehicleBus->start();
ABinderProcess_startThreadPool();
ABinderProcess_joinThreadPool();
};
} // namespace android::hardware::automotive::vehicle::V2_0::impl
int main() {
::android::hardware::automotive::vehicle::V2_0::impl::protocanbusService();
return 1; // protocanbusService (joinRpcThreadpool) shouldn't exit
}