/* * Copyright 2017 The WebRTC project authors. All Rights Reserved. * * Use of this source code is governed by a BSD-style license * that can be found in the LICENSE file in the root of the source * tree. An additional intellectual property rights grant can be found * in the file PATENTS. All contributing project authors may * be found in the AUTHORS file in the root of the source tree. */ #import "RTCDtmfSender+Private.h" #import "base/RTCLogging.h" #import "helpers/NSString+StdString.h" #include "rtc_base/time_utils.h" @implementation RTC_OBJC_TYPE (RTCDtmfSender) { rtc::scoped_refptr _nativeDtmfSender; } - (BOOL)canInsertDtmf { return _nativeDtmfSender->CanInsertDtmf(); } - (BOOL)insertDtmf:(nonnull NSString *)tones duration:(NSTimeInterval)duration interToneGap:(NSTimeInterval)interToneGap { RTC_DCHECK(tones != nil); int durationMs = static_cast(duration * rtc::kNumMillisecsPerSec); int interToneGapMs = static_cast(interToneGap * rtc::kNumMillisecsPerSec); return _nativeDtmfSender->InsertDtmf( [NSString stdStringForString:tones], durationMs, interToneGapMs); } - (nonnull NSString *)remainingTones { return [NSString stringForStdString:_nativeDtmfSender->tones()]; } - (NSTimeInterval)duration { return static_cast(_nativeDtmfSender->duration()) / rtc::kNumMillisecsPerSec; } - (NSTimeInterval)interToneGap { return static_cast(_nativeDtmfSender->inter_tone_gap()) / rtc::kNumMillisecsPerSec; } - (NSString *)description { return [NSString stringWithFormat:@"RTC_OBJC_TYPE(RTCDtmfSender) {\n remainingTones: %@\n " @"duration: %f sec\n interToneGap: %f sec\n}", [self remainingTones], [self duration], [self interToneGap]]; } #pragma mark - Private - (rtc::scoped_refptr)nativeDtmfSender { return _nativeDtmfSender; } - (instancetype)initWithNativeDtmfSender: (rtc::scoped_refptr)nativeDtmfSender { NSParameterAssert(nativeDtmfSender); if (self = [super init]) { _nativeDtmfSender = nativeDtmfSender; RTCLogInfo( @"RTC_OBJC_TYPE(RTCDtmfSender)(%p): created DTMF sender: %@", self, self.description); } return self; } @end