/** * * Copyright (c) 2020 Project CHIP Authors * * 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. */ /** * @file * This file describes a Manual Entry Code Generator based on the * CHIP specification. * * The encoding of the binary data to a decimal string is split * into 5 chunks <1-digit/3-bits><5 digits/16-bits><4-digits/13-bits><5-digits/16-bits><5-digits/16-bits>: * - <1 digit> Represents: * - Discriminator * - VID/PID present flag * - <5 digits> Represents: * - PIN Code * - Discriminator * - <4 digits> Represents: * - PIN Code * - <5 digits> Vendor ID * - <5 digits> Product ID * */ #pragma once #include "SetupPayload.h" #include #include #include namespace chip { class ManualSetupPayloadGenerator { private: PayloadContents mPayloadContents; public: ManualSetupPayloadGenerator(const PayloadContents & payload) : mPayloadContents(payload) {} /** * This function is called to encode the binary data of a payload to a * decimal null-terminated string. * * The resulting size of the outBuffer will be the size of data written and not including the null terminator. * * @param[out] outBuffer * Output buffer to write the decimal string. * * @retval #CHIP_NO_ERROR if the method succeeded. * @retval #CHIP_ERROR_INVALID_ARGUMENT if the payload is invalid. * @retval #CHIP_ERROR_BUFFER_TOO_SMALL if outBuffer has insufficient size. */ CHIP_ERROR payloadDecimalStringRepresentation(MutableCharSpan & outBuffer); // Populates decimal string representation of the payload into outDecimalString. // Wrapper for using std::string. CHIP_ERROR payloadDecimalStringRepresentation(std::string & outDecimalString); /** * This function disables internal checks about the validity of the generated payload. * It allows using the generator to generate invalid payloads. * Default is false. */ void SetAllowInvalidPayload(bool allow) { mAllowInvalidPayload = allow; } /** * This function allow forcing the generation of a short code when the commissioning * flow is not standard by ignoring the vendor id and product id informations but with * the VID/PID present flag set. * Default is false. */ void SetForceShortCode(bool useShort) { mForceShortCode = useShort; } private: bool mAllowInvalidPayload = false; bool mForceShortCode = false; }; } // namespace chip