blob: 8d19aebdf55c4fe0ff271036a95a8c03df6c1b1e [file] [log] [blame]
Ashutosh Joshi6104b272016-10-27 11:06:23 -07001/*
2 * Copyright (C) 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
17package android.hardware.contexthub@1.0;
18
19import IContexthubCallback;
20
21interface IContexthub {
22 /*
23 * Enumerate all available context hubs on the system.
24 *
25 * @return hubs list of hubs on this system.
26 */
27 getHubs() generates (vec<ContextHub> hubs);
28
29 /*
30 * Register a callback for the HAL implementation to send asynchronous
31 * messages to the service from a context hub. There can be a maximum of
32 * one callback registered with the HAL. A call to this function when a
33 * callback has already been registered must override the previous
34 * registration.
35 *
36 * @param hubId identifier for the hub
37 * callback an implementation of the IContextHubCallbacks
38 *
39 * @return result OK on success
40 * BAD_VALUE if parameters are not sane
41 *
42 */
43 registerCallback(uint32_t hubId, IContexthubCallback cb) generates (Result result);
44
45 /**
46 * Send a message to a hub
47 *
48 * @param hubId identifier for hub to send message to
49 * msg message to be sent
50 *
51 * @return result OK if successful, error code otherwise
52 * BAD_VALUE if parameters are not sane
53 * TRANSACTION_FAILED if message send failed
54 */
55 sendMessageToHub(uint32_t hubId, ContextHubMsg msg)
56 generates (Result result);
57
58 /**
59 * Loads a nanoApp. After loading, the nanoApp's init method must be called.
60 * After the init method for nanoApp returns success, this must be indicated
61 * to the service by an asynchronous call to handleTxnResult.
62 *
63 * @param hubId identifer of the contextHub
64 * appBinary binary for the nanoApp
65 * msg message to be sent
66 *
67 * @return result OK if transation started
68 * BAD_VALUE if parameters are not sane
69 * TRANSACTION_PENDING if hub is busy with another
70 * load/unload transaction
71 * TRANSACTION_FAILED if load failed synchronously
72 *
73 */
74 loadNanoApp(uint32_t hubId, NanoAppBinary appBinary, uint32_t transactionId)
75 generates (Result result);
76
77 /**
78 * Unloads a nanoApp. Before the unload, the apps deinit method is called.
79 * After this, success must be indicated to the service through an
80 * asynchronous call to handleTxnResult.
81 *
82 * @param hubId identifer of the contextHub
83 * appId appIdentifier returned by the HAL
84 * msg message to be sent
85 *
86 * @return result OK if transation started
87 * BAD_VALUE if parameters are not sane
88 * TRANSACTION_PENDING if hub is busy with another
89 * load/unload transaction
90 * TRANSACTION_FAILED if unload failed synchronously
91 *
92 */
93 unloadNanoApp(uint32_t hubId, uint64_t appId, uint32_t transactionId)
94 generates (Result result);
95
96 /**
97 * Enables a nanoApp. The app's init method is called.
98 * After this, success must be indicated to the service through an
99 * asynchronous message.
100 *
101 * @param hubId identifer of the contextHub
102 * appId appIdentifier returned by the HAL
103 * msg message to be sent
104 *
105 * @return result OK if transation started
106 * BAD_VALUE if parameters are not sane
107 * TRANSACTION_PENDING if hub is busy with another
108 * load/unload transaction
109 * FAILED_TRANSACTION if load fails immediately
110 *
111 */
112 enableNanoApp(uint32_t hubId, uint64_t appId, uint32_t transactionId)
113 generates (Result result);
114
115 /**
116 * Disables a nanoApp. The app's deinit method is called.
117 * After this, success must be indicated to the service through an
118 * asynchronous message.
119 *
120 * @param hubId identifer of the contextHub
121 * appId appIdentifier returned by the HAL
122 * msg message to be sent
123 *
124 * @return result OK if transation started
125 * BAD_VALUE if parameters are not sane
126 * TRANSACTION_PENDING if hub is busy with another
127 * load/unload transaction
128 * FAILED_TRANSACTION if load fails immediately
129 *
130 */
131 disableNanoApp(uint32_t hubId, uint64_t appId, uint32_t transactionId)
132 generates (Result result);
133
134 /**
135 * Queries for Loaded apps on the hub
136 *
137 * @param hubId identifer of the contextHub
138 *
139 * @return apps all nanoApps on the hub
140 *
141 */
142 queryApps(uint32_t hubId) generates (Result result);
143
144 /**
145 * Reboots context hub OS, restarts all the nanoApps.
146 * No reboot notification is sent to nanoApps; reboot happens immediately
147 * and unconditionally; all volatile contexthub state and any data is lost
148 * as a result.
149 *
150 * @param hubId identifer of the contextHub
151 *
152 * @return result OK on success
153 * BAD_VALUE if parameters are not sane
154 *
155 */
156 reboot(uint32_t hubId) generates (Result result);
157};