From 4475917d651b01c659d7db668f6b5f437662b0df Mon Sep 17 00:00:00 2001 From: Ruchi Kandoi Date: Mon, 4 Dec 2017 17:05:24 -0800 Subject: [PATCH] Add NFC HAL 1.1 Adds factoryReset(). This must be used by the HAL to clear the chip and use the do a full initialization at the next init. Adds closeForPowerOffCase(). There are vendor specific configurations that are need during NFC power off to enable low battery and power off use cases. This will distinguish cases where the user turns NFC off because they do not want to use NFC and NFC is turned off as a result of device switched off. HCI_NETWORK_RESET event has been added to indicate something went wrong on the firmware level and HCI network needs to be re-initialized. Bug: 70294869 Bug: 70294551 Test: Run VtsHalNfcV1_1TargetTest Change-Id: Ib981a56ac94e06b74bd901a159791f09ea16483a --- nfc/1.1/Android.bp | 23 +++++++++++++++ nfc/1.1/INfc.hal | 52 ++++++++++++++++++++++++++++++++++ nfc/1.1/INfcClientCallback.hal | 28 ++++++++++++++++++ nfc/1.1/types.hal | 23 +++++++++++++++ 4 files changed, 126 insertions(+) create mode 100644 nfc/1.1/Android.bp create mode 100644 nfc/1.1/INfc.hal create mode 100644 nfc/1.1/INfcClientCallback.hal create mode 100644 nfc/1.1/types.hal diff --git a/nfc/1.1/Android.bp b/nfc/1.1/Android.bp new file mode 100644 index 0000000000..73dc70ad76 --- /dev/null +++ b/nfc/1.1/Android.bp @@ -0,0 +1,23 @@ +// This file is autogenerated by hidl-gen -Landroidbp. + +hidl_interface { + name: "android.hardware.nfc@1.1", + root: "android.hardware", + vndk: { + enabled: true, + }, + srcs: [ + "types.hal", + "INfc.hal", + "INfcClientCallback.hal", + ], + interfaces: [ + "android.hardware.nfc@1.0", + "android.hidl.base@1.0", + ], + types: [ + "NfcEvent", + ], + gen_java: true, +} + diff --git a/nfc/1.1/INfc.hal b/nfc/1.1/INfc.hal new file mode 100644 index 0000000000..ea6a571c45 --- /dev/null +++ b/nfc/1.1/INfc.hal @@ -0,0 +1,52 @@ +/* + * Copyright (C) 2017 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.nfc@1.1; + +import @1.1::INfcClientCallback; +import @1.0::INfc; +import @1.0::NfcStatus; + +interface INfc extends @1.0::INfc { + /** + * Clears the NFC chip. + * + * Must be called during factory reset and/or before the first time the HAL is + * initialized after a factory reset + */ + factoryReset(); + + /** + * Enable Power off use cases and close the NFC controller. + * Should free all resources. + * + * This call must enable NFC functionality for off host usecases in power + * off use cases, if the device supports power off use cases. If the + * device doesn't support power off use cases, this call should be same as + * close() + * + * @return NfcStatus::OK on success and NfcStatus::FAILED on error. + */ + closeForPowerOffCase() generates (NfcStatus status); + + /** + * Open call to take the @1.1::INfcClientCallback + * + * @param clientCallback for sending events and data to client. + * @return status NfcStatus::FAILED in case of error, + * NfcStatus::SUCCESS otherwise. + */ + open_1_1(INfcClientCallback clientCallback) generates (NfcStatus status); +}; diff --git a/nfc/1.1/INfcClientCallback.hal b/nfc/1.1/INfcClientCallback.hal new file mode 100644 index 0000000000..8e1a7bc8be --- /dev/null +++ b/nfc/1.1/INfcClientCallback.hal @@ -0,0 +1,28 @@ +/* + * Copyright (C) 2018 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.nfc@1.1; + +import @1.0::INfcClientCallback; +import @1.0::NfcStatus; + +interface INfcClientCallback extends @1.0::INfcClientCallback { + /** + * The callback passed in from the NFC stack that the HAL + * can use to pass events back to the stack. + */ + sendEvent_1_1(NfcEvent event, NfcStatus status); +}; diff --git a/nfc/1.1/types.hal b/nfc/1.1/types.hal new file mode 100644 index 0000000000..2f5ec7f017 --- /dev/null +++ b/nfc/1.1/types.hal @@ -0,0 +1,23 @@ +/* + * Copyright (C) 2017 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.nfc@1.1; + +import @1.0::NfcEvent; + +enum NfcEvent : @1.0::NfcEvent { + /** In case of an error, HCI network needs to be re-initialized */ + HCI_NETWORK_RESET = 7 +};