1*3e777be0SXin Li // 2*3e777be0SXin Li // Copyright © 2017 Arm Ltd. All rights reserved. 3*3e777be0SXin Li // SPDX-License-Identifier: MIT 4*3e777be0SXin Li // 5*3e777be0SXin Li 6*3e777be0SXin Li #define LOG_TAG "ArmnnDriver" 7*3e777be0SXin Li 8*3e777be0SXin Li #include "ArmnnDriver.hpp" 9*3e777be0SXin Li 10*3e777be0SXin Li #include <hidl/LegacySupport.h> 11*3e777be0SXin Li #include <log/log.h> 12*3e777be0SXin Li 13*3e777be0SXin Li #include <string> 14*3e777be0SXin Li 15*3e777be0SXin Li using namespace armnn_driver; 16*3e777be0SXin Li using namespace std; 17*3e777be0SXin Li main(int argc,char ** argv)18*3e777be0SXin Liint main(int argc, char** argv) 19*3e777be0SXin Li { 20*3e777be0SXin Li android::sp<ArmnnDriver> driver; 21*3e777be0SXin Li DriverOptions driverOptions(argc, argv); 22*3e777be0SXin Li 23*3e777be0SXin Li if (driverOptions.ShouldExit()) 24*3e777be0SXin Li { 25*3e777be0SXin Li return driverOptions.GetExitCode(); 26*3e777be0SXin Li } 27*3e777be0SXin Li try 28*3e777be0SXin Li { 29*3e777be0SXin Li driver = new ArmnnDriver(DriverOptions(argc, argv)); 30*3e777be0SXin Li } 31*3e777be0SXin Li catch (const std::exception& e) 32*3e777be0SXin Li { 33*3e777be0SXin Li ALOGE("Could not create driver: %s", e.what()); 34*3e777be0SXin Li std::cout << "Unable to start:" << std::endl 35*3e777be0SXin Li << "Could not create driver: " << e.what() << std::endl; 36*3e777be0SXin Li return EXIT_FAILURE; 37*3e777be0SXin Li } 38*3e777be0SXin Li 39*3e777be0SXin Li android::hardware::configureRpcThreadpool(1, true); 40*3e777be0SXin Li android::status_t status = android::UNKNOWN_ERROR; 41*3e777be0SXin Li try 42*3e777be0SXin Li { 43*3e777be0SXin Li status = driver->registerAsService(driverOptions.GetServiceName()); 44*3e777be0SXin Li } 45*3e777be0SXin Li catch (const std::exception& e) 46*3e777be0SXin Li { 47*3e777be0SXin Li ALOGE("Could not register service: %s", e.what()); 48*3e777be0SXin Li std::cout << "Unable to start:" << std::endl 49*3e777be0SXin Li << "Could not register service: " << e.what() << std::endl; 50*3e777be0SXin Li return EXIT_FAILURE; 51*3e777be0SXin Li } 52*3e777be0SXin Li 53*3e777be0SXin Li if (status != android::OK) 54*3e777be0SXin Li { 55*3e777be0SXin Li ALOGE("Could not register service"); 56*3e777be0SXin Li std::cout << "Unable to start:" << std::endl 57*3e777be0SXin Li << "Could not register service" << std::endl; 58*3e777be0SXin Li return EXIT_FAILURE; 59*3e777be0SXin Li } 60*3e777be0SXin Li android::hardware::joinRpcThreadpool(); 61*3e777be0SXin Li ALOGW("Service exited!"); 62*3e777be0SXin Li return EXIT_SUCCESS; 63*3e777be0SXin Li } 64