1 // 2 // Copyright (C) 2022 The Android Open Source Project 3 // 4 // Licensed under the Apache License, Version 2.0 (the "License"); 5 // you may not use this file except in compliance with the License. 6 // You may obtain a copy of the License at 7 // 8 // http://www.apache.org/licenses/LICENSE-2.0 9 // 10 // Unless required by applicable law or agreed to in writing, software 11 // distributed under the License is distributed on an "AS IS" BASIS, 12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 // See the License for the specific language governing permissions and 14 // limitations under the License. 15 16 #pragma once 17 18 #include <string> 19 20 namespace cuttlefish { 21 22 // Builds PDU format strings used to send SMS to Cuttlefish modem simulator. 23 // 24 // PDU format is specified by the Etsi organization in GSM 03.40 25 // https://www.etsi.org/deliver/etsi_gts/03/0340/05.03.00_60/gsmts_0340v050300p.pdf 26 // 27 // The resulting PDU format string encapsulates different parameters 28 // values like: 29 // * The phone number. 30 // * Data coding scheme. 7 bit Alphabet or 8 bit (used in e.g. smart 31 // messaging, OTA provisioning etc) 32 // * User data. 33 // 34 // NOTE: For sender phone number, only international numbers following the 35 // E.164 format (https://www.itu.int/rec/T-REC-E.164) are supported. 36 // 37 // NOTE: The coding scheme is not parameterized yet using always the 7bit 38 // Alphabet coding scheme. 39 class PDUFormatBuilder { 40 public: 41 void SetUserData(const std::string& user_data); 42 void SetSenderNumber(const std::string& number); 43 // Returns the corresponding PDU format string, returns an empty string if 44 // the User Data or the Sender Number set are invalid. 45 std::string Build(); 46 47 private: 48 std::string user_data_; 49 std::string sender_number_; 50 }; 51 52 } // namespace cuttlefish 53