xref: /aosp_15_r20/external/android-nn-driver/service.cpp (revision 3e777be0405cee09af5d5785ff37f7cfb5bee59a)
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 Li int 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