// Copyright (c) 2017-2024, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/blob/master/LICENSE.md #include "DTMFCode.hpp" #include #include DTMFCode::DTMFCode(const char digitChar) { if ((digitChar >= '0' && digitChar <= '9') || digitChar == '*' || digitChar == '#') { this->digitChar = digitChar; } else { this->digitChar = 0; throw std::out_of_range("DTMF: Invalid number!"); } } DTMFCode::DTMFCode(const char *digitStr) { auto digitTmpString = std::string{digitStr}; if (digitTmpString == "*" || digitTmpString == "#") { digitChar = digitTmpString[0]; } else { try { auto digit = std::stoi(digitTmpString); if (digit > 9) { throw std::out_of_range("DTMF: Invalid number!"); } digitChar = digit + '0'; } catch (std::invalid_argument &e) { LOG_ERROR("Can't parse digit string to DTMF ASCII code"); digitChar = 0; throw std::out_of_range("DTMF: Invalid number!"); } } } auto DTMFCode::getDigitASCIICode() const -> char { return digitChar; } DTMFCode::operator std::string() const { return "\"" + std::string(1, getDigitASCIICode()) + "\""; }