GPS HAL Binderization

A Debug interface as well as a configuration interface will be added in
another CL.

Bug: 31974439
Test: mma

Change-Id: I977d95fc815172bd2aae7c78f81e1fc7c9bce72a
diff --git a/gnss/1.0/IGnssNiCallback.hal b/gnss/1.0/IGnssNiCallback.hal
new file mode 100644
index 0000000..c696a92
--- /dev/null
+++ b/gnss/1.0/IGnssNiCallback.hal
@@ -0,0 +1,123 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.gnss@1.0;
+
+/* GNSS Network Initiated callback interface. */
+interface IGnssNiCallback {
+    /*
+     * GnssNiType constants
+     */
+    enum GnssNiType : uint32_t {
+        VOICE           = 1,
+        UMTS_SUPL       = 2,
+        UMTS_CTRL_PLANE = 3
+    };
+
+    /*
+     * GnssNiNotifyFlags constants
+     */
+    enum GnssNiNotifyFlags : uint32_t {
+        /** NI requires notification */
+        NEED_NOTIFY      = 0x0001,
+        /** NI requires verification */
+        NEED_VERIFY      = 0x0002,
+        /** NI requires privacy override, no notification/minimal trace */
+        PRIVACY_OVERRIDE = 0x0004,
+    };
+
+    /*
+     * GNSS NI responses, used to define the response in
+     * NI structures
+     */
+    enum GnssUserResponseType : int32_t {
+        RESPONSE_ACCEPT  = 1,
+        RESPONSE_DENY    = 2,
+        RESPONSE_NORESP  = 3,
+    };
+
+    /*
+     * NI data encoding scheme
+     */
+    enum GnssNiEncodingType : int32_t {
+        ENC_NONE              = 0,
+        ENC_SUPL_GSM_DEFAULT  = 1,
+        ENC_SUPL_UTF8         = 2,
+        ENC_SUPL_UCS2         = 3,
+        ENC_UNKNOWN           = -1,
+    };
+
+    /** Represents an NI request */
+    struct GnssNiNotification{
+        /*
+         * An ID generated by HAL to associate NI notifications and UI
+         * responses.
+         */
+        int32_t notificationId;
+
+        /*
+         * A type used to distinguish different categories of NI
+         * events, such as VOICE, UMTS_SUPL etc.
+         */
+        GnssNiType niType;
+
+        /*
+         * Notification/verification options, combinations of GnssNiNotifyFlags
+         * constants.
+         */
+        GnssNiNotifyFlags notifyFlags;
+
+        /*
+         * Timeout period to wait for user response.
+         * Set to 0 for no timeout limit. Specified in seconds.
+         */
+        uint32_t timeoutSec;
+
+        /*
+         * Default response when timeout.
+         */
+        GnssUserResponseType defaultResponse;
+
+        /*
+         * String representing the requester of the network inititated location
+         * request.
+         */
+        string requestorId;
+
+        /*
+         * Notification message. String representing the service(for eg. SUPL-service)
+         * who sent the network initiated location request.
+         */
+        string notificationMessage;
+
+        /*
+         * requestorId decoding scheme.
+         */
+        GnssNiEncodingType requestorIdEncoding;
+
+        /*
+         * notificationId decoding scheme
+         */
+        GnssNiEncodingType notificationIdEncoding;
+    };
+
+    /*
+     * Callback with a network initiated request.
+     *
+     * @param notification network initiated request.
+     */
+    niNotifyCb(GnssNiNotification notification);
+};