/****************************************************************************** * * Copyright 2019 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. * ******************************************************************************/ #pragma once #include #include "security/smp_packets.h" namespace bluetooth { namespace security { /* This structure holds the information about the failure in case of airing failure */ struct PairingFailure { /* A place in code that triggered this failure. It can be modified by functions that pass the error to a location that * better reflect the current state of flow. i.e. instead of generic location responsible for waiting for packet, * replace it with location of receiving specific packet in a specific flow */ // base::Location location; /* This is the failure message, that will be passed, either into upper layers, * or to the metrics in future */ std::string message; /* If failure is due to mismatch of received code, this contains the received opcode */ Code received_code_{0}; /* if the failure is due to "SMP failure", this field contains the reson code */ PairingFailedReason reason{0}; PairingFailure(/*const base::Location& location, */ const std::string& message) : /*location(location), */ message(message) {} PairingFailure(/*const base::Location& location, */ const std::string& message, Code received_code) : /*location(location), */ message(message), received_code_(received_code) {} PairingFailure(/*const base::Location& location, */ const std::string& message, PairingFailedReason reason) : /*location(location),*/ message(message), reason(reason) {} }; } // namespace security } // namespace bluetooth