VoiceMac/Classes/VoiceBase/SIP/MGMSIP.h

201 lines
6.0 KiB
C
Raw Normal View History

2010-09-20 19:44:17 -05:00
//
// MGMSIP.h
// VoiceBase
//
// Created by Mr. Gecko on 9/10/10.
// Copyright (c) 2011 Mr. Gecko's Media (James Coleman). http://mrgeckosmedia.com/
//
// Permission to use, copy, modify, and/or distribute this software for any purpose
// with or without fee is hereby granted, provided that the above copyright notice
// and this permission notice appear in all copies.
//
// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
// REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
// FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT,
// OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
// DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
// ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
2010-09-20 19:44:17 -05:00
//
#if MGMSIPENABLED
Added support for iPhone to MGMFFmpeg. Updated settings in Theme Tester. Updated settings in VoiceMac for the Theme Manager. Added the ability to hide icons in themes. Added the ability to change the font in themes. Fixed issue in MGMAddressBook where getting group members is not accurate. Made it so SIP addresses and Email addresses would not be recognized as phone numbers. Added support for 2 step verification. Added the ability to reload the user phone numbers. Added the ability to place the next message at any point in the previous message. Added the ability to do css based on the class of the message view with %MESSAGECLASSES%. Added the ability to get the codecs available and change the top codec in MGMSIP. Made it stop ring back before hanging up. Added initWithRootElement: to MGMXMLDocument. Added initWithName: and initWithName:stringValue: to MGMXMLElement. Added initWithKind:, setStringValue:, and fixed issues with reading attributes value. Made MGMVoiceUser support 2 step verification API, reload the user phones when it becomes active, and display a message if there is no phone numbers in Google Voice. Fixed issue where Google Chat will not appear in the User Phones list. Added a 2 Step Verification Dialog. Added Codec selection in MGMSIPPane. Fixed issues with MGMMultiSMS where it wouldn't alert the user if the message was blank and it wouldn't make the text field non editable. Added support for new SMS protocol to MGMSMSMessageView. Added support in the FFmpeg install script to build for iOS. Added ability to compile for the Simulator only in the PJProject build script. Made iOS and Mac OS final path go to 2 different folders. Updated to Revision 3466 of PJProject.
2011-03-21 07:43:56 -05:00
#import <Foundation/Foundation.h>
#if !TARGET_OS_IPHONE
#import <SystemConfiguration/SystemConfiguration.h>
#endif
2010-09-20 19:44:17 -05:00
#import <pjsua-lib/pjsua.h>
@class MGMSIPAccount, MGMSIPCall;
extern NSString * const MGMSIPOutboundProxy;
extern NSString * const MGMSIPOutboundProxyPort;
extern NSString * const MGMSIPSTUN;
extern NSString * const MGMSIPSTUNPort;
extern NSString * const MGMSIPLogFile;
extern NSString * const MGMSIPLogLevel;
extern NSString * const MGMSIPConsoleLogLevel;
extern NSString * const MGMSIPVoiceActivityDetection;
extern NSString * const MGMSIPInteractiveConnectivityEstablishment;
extern NSString * const MGMSIPNameServersEnabled;
extern NSString * const MGMSIPEchoCacnellationEnabled;
extern NSString * const MGMSIPPort;
extern NSString * const MGMSIPPublicAddress;
extern NSString * const MGMSIPUserAgent;
Added support for iPhone to MGMFFmpeg. Updated settings in Theme Tester. Updated settings in VoiceMac for the Theme Manager. Added the ability to hide icons in themes. Added the ability to change the font in themes. Fixed issue in MGMAddressBook where getting group members is not accurate. Made it so SIP addresses and Email addresses would not be recognized as phone numbers. Added support for 2 step verification. Added the ability to reload the user phone numbers. Added the ability to place the next message at any point in the previous message. Added the ability to do css based on the class of the message view with %MESSAGECLASSES%. Added the ability to get the codecs available and change the top codec in MGMSIP. Made it stop ring back before hanging up. Added initWithRootElement: to MGMXMLDocument. Added initWithName: and initWithName:stringValue: to MGMXMLElement. Added initWithKind:, setStringValue:, and fixed issues with reading attributes value. Made MGMVoiceUser support 2 step verification API, reload the user phones when it becomes active, and display a message if there is no phone numbers in Google Voice. Fixed issue where Google Chat will not appear in the User Phones list. Added a 2 Step Verification Dialog. Added Codec selection in MGMSIPPane. Fixed issues with MGMMultiSMS where it wouldn't alert the user if the message was blank and it wouldn't make the text field non editable. Added support for new SMS protocol to MGMSMSMessageView. Added support in the FFmpeg install script to build for iOS. Added ability to compile for the Simulator only in the PJProject build script. Made iOS and Mac OS final path go to 2 different folders. Updated to Revision 3466 of PJProject.
2011-03-21 07:43:56 -05:00
extern NSString * const MGMSIPCodec;
2010-09-20 19:44:17 -05:00
extern NSString * const MGMNetworkConnectedNotification;
extern NSString * const MGMNetworkDisconnectedNotification;
extern NSString * const MGMSIPVolume;
extern NSString * const MGMSIPMicVolume;
extern NSString * const MGMSIPVolumeChangedNotification;
extern NSString * const MGMSIPMicVolumeChangedNotification;
extern NSString * const MGMSIPADeviceIdentifier;
extern NSString * const MGMSIPADeviceIndex;
extern NSString * const MGMSIPADeviceUID;
extern NSString * const MGMSIPADeviceName;
extern NSString * const MGMSIPADeviceInputCount;
extern NSString * const MGMSIPADeviceOutputCount;
extern NSString * const MGMSIPADeviceIsDefaultInput;
extern NSString * const MGMSIPADeviceIsDefaultOutput;
extern NSString * const MGMSIPACurrentInputDevice;
extern NSString * const MGMSIPACurrentOutputDevice;
extern NSString * const MGMSIPASystemDefault;
extern NSString * const MGMSIPAudioChangedNotification;
@protocol MGMSIPDelegate <NSObject>
- (void)SIPStarted;
- (void)SIPStopped;
- (void)accountLoggedIn:(MGMSIPAccount *)theAccount;
- (void)accountLoggedOut:(MGMSIPAccount *)theAccount;
- (void)receivedNewCall:(MGMSIPCall *)theCall;
- (void)startingNewCall:(MGMSIPCall *)theCall;
- (void)gotNewCall:(MGMSIPCall *)theCall;
@end
typedef enum {
MGMSIPNULLState = -1,
MGMSIPStoppedState = 0,
MGMSIPStartingState = 1,
MGMSIPStartedState = 2,
MGMSIPStoppingState = 3
} MGMSIPState;
typedef enum {
MGMSIPNATUnknownType = PJ_STUN_NAT_TYPE_UNKNOWN,
MGMSIPNATErrorUnknownType = PJ_STUN_NAT_TYPE_ERR_UNKNOWN,
MGMSIPNATOpen = PJ_STUN_NAT_TYPE_OPEN,
MGMSIPNATBlocked = PJ_STUN_NAT_TYPE_BLOCKED,
MGMSIPNATSymmetricUDP = PJ_STUN_NAT_TYPE_SYMMETRIC_UDP,
MGMSIPNATFullCone = PJ_STUN_NAT_TYPE_FULL_CONE,
MGMSIPNATSymmetric = PJ_STUN_NAT_TYPE_SYMMETRIC,
MGMSIPNATRestricted = PJ_STUN_NAT_TYPE_RESTRICTED,
MGMSIPNATPortRestricted = PJ_STUN_NAT_TYPE_PORT_RESTRICTED
} MGMSIPNATType;
@interface MGMSIP : NSObject {
id<MGMSIPDelegate> delegate;
NSLock *lock;
MGMSIPState state;
pj_pool_t *PJPool;
int port;
pjsua_media_config mediaConfig;
2010-09-20 19:44:17 -05:00
pjmedia_port *ringbackPort;
pjsua_conf_port_id ringbackSlot;
pjsua_transport_id UDPTransport;
pjsua_acc_id UDPAccount;
2010-09-20 19:44:17 -05:00
pjsua_transport_id TCPTransport;
pjsua_acc_id TCPAccount;
2010-09-20 19:44:17 -05:00
MGMSIPNATType NATType;
BOOL shouldRestart;
NSTimer *restartTimer;
Added support for iPhone to MGMFFmpeg. Updated settings in Theme Tester. Updated settings in VoiceMac for the Theme Manager. Added the ability to hide icons in themes. Added the ability to change the font in themes. Fixed issue in MGMAddressBook where getting group members is not accurate. Made it so SIP addresses and Email addresses would not be recognized as phone numbers. Added support for 2 step verification. Added the ability to reload the user phone numbers. Added the ability to place the next message at any point in the previous message. Added the ability to do css based on the class of the message view with %MESSAGECLASSES%. Added the ability to get the codecs available and change the top codec in MGMSIP. Made it stop ring back before hanging up. Added initWithRootElement: to MGMXMLDocument. Added initWithName: and initWithName:stringValue: to MGMXMLElement. Added initWithKind:, setStringValue:, and fixed issues with reading attributes value. Made MGMVoiceUser support 2 step verification API, reload the user phones when it becomes active, and display a message if there is no phone numbers in Google Voice. Fixed issue where Google Chat will not appear in the User Phones list. Added a 2 Step Verification Dialog. Added Codec selection in MGMSIPPane. Fixed issues with MGMMultiSMS where it wouldn't alert the user if the message was blank and it wouldn't make the text field non editable. Added support for new SMS protocol to MGMSMSMessageView. Added support in the FFmpeg install script to build for iOS. Added ability to compile for the Simulator only in the PJProject build script. Made iOS and Mac OS final path go to 2 different folders. Updated to Revision 3466 of PJProject.
2011-03-21 07:43:56 -05:00
unsigned int codecOriginalPriority;
NSMutableDictionary *codecsInfo;
2010-09-20 19:44:17 -05:00
NSMutableArray *accounts;
NSMutableArray *restartAccounts;
#if !TARGET_OS_IPHONE
2010-09-20 19:44:17 -05:00
NSArray *audioDevices;
int lastInputDevice;
int lastOutputDevice;
#endif
2010-09-20 19:44:17 -05:00
int ringbackCount;
#if !TARGET_OS_IPHONE
2010-09-20 19:44:17 -05:00
SCDynamicStoreRef store;
CFRunLoopSourceRef storeRunLoop;
#endif
2010-09-20 19:44:17 -05:00
}
+ (MGMSIP *)sharedSIP;
- (void)registerDefaults;
- (id<MGMSIPDelegate>)delegate;
- (void)setDelegate:(id)theDelegate;
- (MGMSIPState)state;
- (BOOL)isStarted;
- (pj_pool_t *)PJPool;
- (int)port;
- (void)setPort:(int)thePort;
- (pjsua_media_config)mediaConfig;
2010-09-20 19:44:17 -05:00
- (pjmedia_port *)ringbackPort;
- (pjsua_conf_port_id)ringbackSlot;
- (pjsua_transport_id)UDPTransport;
- (pjsua_acc_id)UDPAccount;
- (pjsua_transport_id)TCPTransport;
- (pjsua_acc_id)TCPAccount;
2010-09-20 19:44:17 -05:00
- (MGMSIPNATType)NATType;
- (void)setNATType:(MGMSIPNATType)theNATType;
- (void)start;
- (void)stop;
- (void)restart;
- (void)computerSleep;
- (void)computerWake;
2010-09-20 19:44:17 -05:00
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_4_0
- (void)keepAlive;
#endif
2010-09-21 20:47:54 -05:00
- (void)registerThread:(pj_thread_desc *)thePJThreadDesc;
2010-09-20 19:44:17 -05:00
Added support for iPhone to MGMFFmpeg. Updated settings in Theme Tester. Updated settings in VoiceMac for the Theme Manager. Added the ability to hide icons in themes. Added the ability to change the font in themes. Fixed issue in MGMAddressBook where getting group members is not accurate. Made it so SIP addresses and Email addresses would not be recognized as phone numbers. Added support for 2 step verification. Added the ability to reload the user phone numbers. Added the ability to place the next message at any point in the previous message. Added the ability to do css based on the class of the message view with %MESSAGECLASSES%. Added the ability to get the codecs available and change the top codec in MGMSIP. Made it stop ring back before hanging up. Added initWithRootElement: to MGMXMLDocument. Added initWithName: and initWithName:stringValue: to MGMXMLElement. Added initWithKind:, setStringValue:, and fixed issues with reading attributes value. Made MGMVoiceUser support 2 step verification API, reload the user phones when it becomes active, and display a message if there is no phone numbers in Google Voice. Fixed issue where Google Chat will not appear in the User Phones list. Added a 2 Step Verification Dialog. Added Codec selection in MGMSIPPane. Fixed issues with MGMMultiSMS where it wouldn't alert the user if the message was blank and it wouldn't make the text field non editable. Added support for new SMS protocol to MGMSMSMessageView. Added support in the FFmpeg install script to build for iOS. Added ability to compile for the Simulator only in the PJProject build script. Made iOS and Mac OS final path go to 2 different folders. Updated to Revision 3466 of PJProject.
2011-03-21 07:43:56 -05:00
- (void)setTopCodec:(NSString *)theCodec;
- (void)setPriority:(unsigned int)thePriority forCodec:(NSString *)theCodec;
- (NSDictionary *)codecs;
2010-09-20 19:44:17 -05:00
- (void)loginToAccount:(MGMSIPAccount *)theAccount;
- (void)logoutOfAccount:(MGMSIPAccount *)theAccount;
- (NSArray *)accounts;
- (pjsua_acc_id)accountIDForUserName:(NSString *)theUserName;
- (MGMSIPAccount *)accountWithIdentifier:(pjsua_acc_id)theIdentifier;
2010-09-20 19:44:17 -05:00
- (int)ringbackCount;
- (void)setRingbackCount:(int)theRingbackCount;
- (void)hangUpAllCalls;
- (float)volume;
- (void)setVolume:(float)theVolume;
- (float)micVolume;
- (void)setMicVolume:(float)theVolume;
#if !TARGET_OS_IPHONE
2010-09-20 19:44:17 -05:00
- (BOOL)setInputSoundDevice:(int)theInputDevice outputSoundDevice:(int)theOutputDevice;
- (BOOL)stopAudio;
2010-09-20 19:44:17 -05:00
- (void)updateAudioDevices;
- (NSArray *)audioDevices;
#endif
2010-09-20 19:44:17 -05:00
- (void)receivedNewCall:(MGMSIPCall *)theCall;
- (void)startingNewCall:(MGMSIPCall *)theCall;
- (NSArray *)calls;
- (MGMSIPCall *)callWithIdentifier:(pjsua_call_id)theIdentifier;
2010-09-20 19:44:17 -05:00
@end
#endif