From a826f2d6272804e3f8a808663d4e4fbe92fd4262 Mon Sep 17 00:00:00 2001 From: Qin Wang Date: Tue, 25 Apr 2023 15:13:10 -0700 Subject: [PATCH] Add Pair failure info for fast pair pairing PiperOrigin-RevId: 527087848 --- fastpair/common/BUILD | 14 ++++++ fastpair/common/pair_failure.cc | 9 ++++ fastpair/common/pair_failure.h | 8 +++- fastpair/common/pair_failure_test.cc | 68 ++++++++++++++++++++++++++++ 4 files changed, 98 insertions(+), 1 deletion(-) create mode 100644 fastpair/common/pair_failure_test.cc diff --git a/fastpair/common/BUILD b/fastpair/common/BUILD index b7258241..96e95efc 100644 --- a/fastpair/common/BUILD +++ b/fastpair/common/BUILD @@ -39,3 +39,17 @@ cc_test( "@com_google_googletest//:gtest_main", ], ) + +cc_test( + name = "pair_failure_test", + size = "small", + srcs = [ + "pair_failure_test.cc", + ], + shard_count = 16, + deps = [ + ":common", + "@com_github_protobuf_matchers//protobuf-matchers", + "@com_google_googletest//:gtest_main", + ], +) diff --git a/fastpair/common/pair_failure.cc b/fastpair/common/pair_failure.cc index bd32d6a6..53373f21 100644 --- a/fastpair/common/pair_failure.cc +++ b/fastpair/common/pair_failure.cc @@ -90,6 +90,15 @@ std::ostream& operator<<(std::ostream& stream, PairFailure failure) { stream << "[Potential pairing device lost between GATT connection attempts]"; break; + case PairFailure::kDeviceLostMidPairing: + stream << "[Potential pairing device lost during pairing.]"; + break; + case PairFailure::kPairingAndConnect: + stream << "[Failed to pair with discovered device.]"; + break; + case PairFailure::kPairingTimeout: + stream << "[Potential pairing failed with timeout.]"; + break; } return stream; diff --git a/fastpair/common/pair_failure.h b/fastpair/common/pair_failure.h index c69b7bb6..c2b360fa 100644 --- a/fastpair/common/pair_failure.h +++ b/fastpair/common/pair_failure.h @@ -68,7 +68,13 @@ enum class PairFailure { kPasskeyMismatch = 19, // Potential pairing device lost between GATT connection attempts. kPairingDeviceLostBetweenGattConnectionAttempts = 20, - kMaxValue = kPairingDeviceLostBetweenGattConnectionAttempts, + // Potential pairing device lost during pairing. + kDeviceLostMidPairing = 21, + // Failed to pair and connect with discovered device. + kPairingAndConnect = 22, + // Potential pairing timeout. + kPairingTimeout = 23, + kMaxValue = kPairingTimeout, }; std::ostream& operator<<(std::ostream& stream, PairFailure failure); diff --git a/fastpair/common/pair_failure_test.cc b/fastpair/common/pair_failure_test.cc new file mode 100644 index 00000000..eea3da05 --- /dev/null +++ b/fastpair/common/pair_failure_test.cc @@ -0,0 +1,68 @@ +// Copyright 2023 Google LLC +// +// 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 +// +// https://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. + +#include "fastpair/common/pair_failure.h" + +#include "gtest/gtest.h" + +namespace nearby { +namespace fastpair { +namespace { + +TEST(PairFailureTest, PairFailureValue) { + EXPECT_EQ(static_cast(PairFailure::kCreateGattConnection), 0); + EXPECT_EQ(static_cast(PairFailure::kGattServiceDiscovery), 1); + EXPECT_EQ(static_cast(PairFailure::kGattServiceDiscoveryTimeout), 2); + EXPECT_EQ(static_cast(PairFailure::kDataEncryptorRetrieval), 3); + EXPECT_EQ( + static_cast(PairFailure::kKeyBasedPairingCharacteristicDiscovery), + 4); + EXPECT_EQ(static_cast(PairFailure::kPasskeyCharacteristicDiscovery), 5); + EXPECT_EQ(static_cast(PairFailure::kAccountKeyCharacteristicDiscovery), + 6); + EXPECT_EQ( + static_cast(PairFailure::kKeyBasedPairingCharacteristicSubscription), + 7); + EXPECT_EQ(static_cast(PairFailure::kPasskeyCharacteristicSubscription), + 8); + EXPECT_EQ(static_cast( + PairFailure::kKeyBasedPairingCharacteristicSubscriptionTimeout), + 9); + EXPECT_EQ( + static_cast(PairFailure::kPasskeyCharacteristicSubscriptionTimeout), + 10); + EXPECT_EQ(static_cast(PairFailure::kKeyBasedPairingCharacteristicWrite), + 11); + EXPECT_EQ(static_cast(PairFailure::kPasskeyPairingCharacteristicWrite), + 12); + EXPECT_EQ(static_cast(PairFailure::kKeyBasedPairingResponseTimeout), 13); + EXPECT_EQ(static_cast(PairFailure::kPasskeyResponseTimeout), 14); + EXPECT_EQ( + static_cast(PairFailure::kKeybasedPairingResponseDecryptFailure), + 15); + EXPECT_EQ( + static_cast(PairFailure::kIncorrectKeyBasedPairingResponseType), 16); + EXPECT_EQ(static_cast(PairFailure::kPasskeyDecryptFailure), 17); + EXPECT_EQ(static_cast(PairFailure::kIncorrectPasskeyResponseType), 18); + EXPECT_EQ(static_cast(PairFailure::kPasskeyMismatch), 19); + EXPECT_EQ(static_cast( + PairFailure::kPairingDeviceLostBetweenGattConnectionAttempts), + 20); + EXPECT_EQ(static_cast(PairFailure::kDeviceLostMidPairing), 21); + EXPECT_EQ(static_cast(PairFailure::kPairingAndConnect), 22); + EXPECT_EQ(static_cast(PairFailure::kPairingTimeout), 23); +} +} // namespace +} // namespace fastpair +} // namespace nearby